@openchambery/web 1.19.2-beta.1 → 1.19.2-beta.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/{AgentAvatar-DgGHpQoD.js → AgentAvatar-HJ-RYWko.js} +1 -1
- package/dist/assets/AssistantView-DlCqeHRI.js +1 -0
- package/dist/assets/{ChatContainer-CM43Pxln.js → ChatContainer-BkLmQfq7.js} +39 -39
- package/dist/assets/ContextPanel-BQMC2oCJ.js +285 -0
- package/dist/assets/DiagramView-vGsDg-yO.js +1 -0
- package/dist/assets/{FadeInOnReveal-BpIMrqet.js → FadeInOnReveal-Cy3sf2M5.js} +1 -1
- package/dist/assets/{Icon-Bs6GJIoO.js → Icon-BLWVqBee.js} +1 -1
- package/dist/assets/{MarkdownRendererImpl-Cmm9i5Vj.js → MarkdownRendererImpl-Bzu4V7LA.js} +1 -1
- package/dist/assets/{MobileDetailNavigation-nITHp7W3.js → MobileDetailNavigation-D8fXCuG1.js} +1 -1
- package/dist/assets/{MobileShareBridge-C_QaKaB6.js → MobileShareBridge-Ds-e8QJQ.js} +2 -2
- package/dist/assets/MobileSurface-vlEqR4CT.js +2 -0
- package/dist/assets/{MultiRunWindow-B1ALyR36.js → MultiRunWindow-BFTiVVgw.js} +1 -1
- package/dist/assets/{OnboardingScreen-n85WAcBc.js → OnboardingScreen-yNfhXL7h.js} +1 -1
- package/dist/assets/{OverlayScrollbar-VZKKu-cu.js → OverlayScrollbar-GQgJusKL.js} +1 -1
- package/dist/assets/{SettingsView-BW8d_8pw.js → SettingsView-Dl0oHuoW.js} +6 -6
- package/dist/assets/{SettingsWindow-7SmQV5GW.js → SettingsWindow-C_TY0Td5.js} +1 -1
- package/dist/assets/{TerminalView-C7EFF7ZS.js → TerminalView-c6NtOWOG.js} +1 -1
- package/dist/assets/{ToolOutputDialog-Cba_60bU.js → ToolOutputDialog-CyVjUPDv.js} +2 -2
- package/dist/assets/{appThemeRegistry-Co5dwWx_.js → appThemeRegistry-BmNfsTDj.js} +2 -2
- package/dist/assets/{button-BkTMa7Qj.js → button-CeCkEpvn.js} +1 -1
- package/dist/assets/{clipboard-BL4PvBYZ.js → clipboard-2rQvL28z.js} +1 -1
- package/dist/assets/{collapsible-CVL-5iEB.js → collapsible-B-aagADh.js} +1 -1
- package/dist/assets/{desktopHosts-Dzx3McaD.js → desktopHosts-BrrYPqKq.js} +1 -1
- package/dist/assets/{desktopRelayRestore-B9S0Rp5s.js → desktopRelayRestore-DR60DATT.js} +1 -1
- package/dist/assets/diagram-Cxma_IKI.js +1 -0
- package/dist/assets/{dialog-CD0j-atu.js → dialog-DnzdtCcc.js} +1 -1
- package/dist/assets/es-BOiTSQ5G.js +15 -0
- package/dist/assets/fileQueries-BJKLdYos.js +1 -0
- package/dist/assets/fr-C5pZX4Yb.js +13 -0
- package/dist/assets/{gitApi-DaTTo7St.js → gitApi-Dz8NtzVn.js} +3 -3
- package/dist/assets/{input-Ca2tUhgN.js → input-CyG05w-V.js} +1 -1
- package/dist/assets/insertionBoundaries-1tfYYfQc.js +4 -0
- package/dist/assets/ja-80U-a23j.js +15 -0
- package/dist/assets/ko-tcJcPnGS.js +15 -0
- package/dist/assets/main-BBfAXAy9.js +29 -0
- package/dist/assets/{main-IyYkGXkX.js → main-i9SC8giI.js} +2 -2
- package/dist/assets/{markdown-worker-9Sn2jsDp.js → markdown-worker-DqO-GnVj.js} +1 -1
- package/dist/assets/{markdownTheme-DidS-jC5.js → markdownTheme-H7_7lbuh.js} +1 -1
- package/dist/assets/{miniChat-CAAQzm9R.js → miniChat-Cldq5qFL.js} +2 -2
- package/dist/assets/mobile-yEDsvHcp.js +2 -0
- package/dist/assets/multirun-fLDKu-UT.js +4 -0
- package/dist/assets/{persistence-aCOlo6ew.js → persistence-DE9RnVcA.js} +2 -2
- package/dist/assets/pl-CIRIRP8a.js +15 -0
- package/dist/assets/{platform-ulFAVx1H.js → platform-MjT8iqKB.js} +1 -1
- package/dist/assets/{projectMeta-B0YA9FxC.js → projectMeta-D7X-A53_.js} +2 -2
- package/dist/assets/pt-BR-yXSOtWjW.js +15 -0
- package/dist/assets/radio-Yq-d8wdL.js +1 -0
- package/dist/assets/renderElectronMiniChatApp-D2oO2jcX.js +2 -0
- package/dist/assets/renderMobileApp-CsWmUiF2.js +23 -0
- package/dist/assets/{runtimeConfig-BJ3S27Ah.js → runtimeConfig-DWavskLj.js} +1 -1
- package/dist/assets/runtimeEndpointReset-BpPowLWZ.js +4 -0
- package/dist/assets/{shikiHighlight-_cgskSv2.js → shikiHighlight-DtIFquMl.js} +1 -1
- package/dist/assets/{sortable-tabs-strip-Bl26ebY_.js → sortable-tabs-strip-CmUWXOHX.js} +1 -1
- package/dist/assets/src-BM9HiQZr.css +2 -0
- package/dist/assets/store-NWfuTiFD.js +15 -0
- package/dist/assets/{terminalApi-HsIEks5U.js → terminalApi-Bnx0KvaV.js} +1 -1
- package/dist/assets/{tooltip-GC3dg3gO.js → tooltip-B__x-HDJ.js} +1 -1
- package/dist/assets/uk-Do9LnhN3.js +15 -0
- package/dist/assets/{url-BQHM4bC4.js → url-CTuw7Rjf.js} +1 -1
- package/dist/assets/{useAppFontEffects-B_a7MLYy.js → useAppFontEffects-a1rqNBb6.js} +5 -5
- package/dist/assets/{useAssistantUIStore-DxZsjSPQ.js → useAssistantUIStore-D2K7ksGj.js} +1 -1
- package/dist/assets/{useDesktopWindowControlsLayout-D-74BaI3.js → useDesktopWindowControlsLayout-DuV7h2ks.js} +1 -1
- package/dist/assets/{useEffectiveDirectory-DWwrRiBF.js → useEffectiveDirectory-BD6DpFta.js} +1 -1
- package/dist/assets/{useFontPreferences-DaFspdDd.js → useFontPreferences-CWZnNRjz.js} +1 -1
- package/dist/assets/{useMobileNavigationStore-7LBI6idi.js → useMobileNavigationStore-COadjMlM.js} +12 -75
- package/dist/assets/{useSessionAutoCleanup-Buvg8rem.js → useSessionAutoCleanup-BXaR4Y1z.js} +1 -1
- package/dist/assets/{useUIStore-Wyu09VUF.js → useUIStore-DOxLVeGb.js} +1 -1
- package/dist/assets/{useWorkerHighlightedLines-BdlVg3Sj.js → useWorkerHighlightedLines-CDuEzJVC.js} +1 -1
- package/dist/assets/{utils-CJdWZupK.js → utils-C2R0YoC5.js} +1 -1
- package/dist/assets/zh-CN-BAZNUvn0.js +15 -0
- package/dist/assets/zh-TW-BQsPCZWH.js +15 -0
- package/dist/index.html +9 -9
- package/dist/mini-chat.html +9 -9
- package/dist/mobile.html +9 -9
- package/package.json +1 -1
- package/server/index.js +0 -5
- package/dist/assets/AssistantView-DGqRio2e.js +0 -1
- package/dist/assets/ContextPanel-Bp3ZKAJE.js +0 -288
- package/dist/assets/DiagramView-BH5YxFAL.js +0 -1
- package/dist/assets/MobileSurface-CjpCviv6.js +0 -2
- package/dist/assets/es-C-RVtNF4.js +0 -15
- package/dist/assets/fileQueries-_VUJM8AE.js +0 -1
- package/dist/assets/fr-C6VZ9yt-.js +0 -13
- package/dist/assets/insertionBoundaries-BoIHXczc.js +0 -4
- package/dist/assets/ja-BdksT20v.js +0 -15
- package/dist/assets/ko-CvsczTmf.js +0 -15
- package/dist/assets/main-WVLfE2Df.js +0 -29
- package/dist/assets/mobile-BiCmfs5Y.js +0 -2
- package/dist/assets/multirun-DPXG-TWE.js +0 -4
- package/dist/assets/pl-C84UGmMr.js +0 -15
- package/dist/assets/pt-BR-DISmT3zF.js +0 -15
- package/dist/assets/radio-CUea8K8R.js +0 -1
- package/dist/assets/renderElectronMiniChatApp-CGA16ZyN.js +0 -2
- package/dist/assets/renderMobileApp-D9fgFt6E.js +0 -23
- package/dist/assets/runtimeEndpointReset-C9pWVmjf.js +0 -4
- package/dist/assets/src-BwToVDxi.css +0 -2
- package/dist/assets/store-Dge7C5E4.js +0 -15
- package/dist/assets/uk-Ba5HBTQU.js +0 -15
- package/dist/assets/zh-CN-BZYwBvs-.js +0 -15
- package/dist/assets/zh-TW-BsJuPsIi.js +0 -15
package/dist/assets/{useMobileNavigationStore-7LBI6idi.js → useMobileNavigationStore-COadjMlM.js}
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
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,C as r,E as i,O as a,P as o,R as s,T as c,U as l,X as u,Z as d,b as f,k as p,t as m,w as h,y as g}from"./useUIStore-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/store-NWfuTiFD.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,C as r,E as i,O as a,P as o,R as s,T as c,U as l,X as u,Z as d,b as f,k as p,t as m,w as h,y as g}from"./useUIStore-DOxLVeGb.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-DE9RnVcA.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,Lt as Le,Nt as z,Ot as Re,Pt as B,R as ze,St as Be,Vt as Ve,Xt as He,Yt as Ue,n as We,qt as Ge,r as Ke,t as qe}from"./platform-MjT8iqKB.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-2rQvL28z.js";import{i as ft,t as pt}from"./store-NWfuTiFD.js";import{i as mt}from"./useAssistantUIStore-D2K7ksGj.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
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)===`
|
|
@@ -169,52 +169,7 @@ Important:
|
|
|
169
169
|
- Preserve the intent of the commit being applied
|
|
170
170
|
- Make sure the final code is syntactically correct
|
|
171
171
|
- Do not leave any files with unresolved conflict markers
|
|
172
|
-
- After completing all steps, confirm the cherry-pick was successful`},{id:`
|
|
173
|
-
Todo: {{todo_text}}
|
|
174
|
-
Your job right now is to produce a thorough implementation plan for this todo, not to implement it yet. Optimize for a well-considered plan, not a fast one.
|
|
175
|
-
|
|
176
|
-
Work back and forth with me. Do not dump a wall of questions. Do not jump to the full plan.
|
|
177
|
-
|
|
178
|
-
Discovery — questions in batches of 3:
|
|
179
|
-
1. First, inspect the repo — relevant files, module docs, existing patterns, nearby code, constraints, dependencies — enough to form informed questions, not enough to guess the plan.
|
|
180
|
-
2. Ask me at most 3 questions per turn. Each batch should be focused on one topic at a time (e.g., scope, architecture, data model, UX, edge cases). Pick the topic that most blocks the plan right now.
|
|
181
|
-
3. Wait for my answers. Use them to refine your understanding, re-read code if needed, and prepare the next batch.
|
|
182
|
-
4. Questions that became irrelevant after my earlier answers — drop them, don't ask.
|
|
183
|
-
5. Repeat until you have no more substantive questions.
|
|
184
|
-
|
|
185
|
-
Alignment:
|
|
186
|
-
6. Share a short outline: affected areas, proposed approach, main risks. Wait for my confirmation or corrections. Iterate on the outline until I confirm.
|
|
187
|
-
|
|
188
|
-
Final plan:
|
|
189
|
-
7. Once aligned, deliver the concrete implementation plan grounded in the repo context. Make remaining assumptions and missing context explicit.`},{id:`plan.improve.visible`,title:`Improve Plan Visible Prompt`,group:`Planning`,description:`Visible user message when sending a saved plan into an improve flow.`,placeholders:[{key:`plan_title`,description:`Current plan title.`}],template:`Improve this plan: {{plan_title}}`},{id:`plan.improve.instructions`,title:`Improve Plan Instructions`,group:`Planning`,description:`Hidden instructions for improving a saved plan from project context.`,placeholders:[{key:`plan_title`,description:`Current plan title.`},{key:`plan_path`,description:`Absolute path to the saved plan file.`}],template:`You are starting from an existing implementation plan.
|
|
190
|
-
Plan title: {{plan_title}}
|
|
191
|
-
This plan is stored in the file: {{plan_path}}
|
|
192
|
-
Read that file first and treat its current contents as the source of truth for the plan.
|
|
193
|
-
Your job right now is to improve this plan so it is better grounded in the actual repo state. Do not implement yet. Optimize for a well-considered improved plan, not a fast one.
|
|
194
|
-
|
|
195
|
-
Work back and forth with me. Do not dump a wall of questions. Do not jump to the full improved plan.
|
|
196
|
-
|
|
197
|
-
Discovery — questions in batches of 3:
|
|
198
|
-
1. First, inspect the repo and map it against the plan — relevant files, module docs, existing patterns, nearby code, constraints, dependencies. Identify gaps, plan assumptions that don't match the repo, missing context, and risks.
|
|
199
|
-
2. Ask me at most 3 questions per turn. Each batch should be focused on one topic at a time (e.g., scope deltas, architecture assumptions, data model, UX, edge cases, tradeoffs between approaches). Pick the topic that most blocks a confident improvement right now.
|
|
200
|
-
3. Wait for my answers. Use them to refine your understanding, re-read code if needed, and prepare the next batch.
|
|
201
|
-
4. Questions that became irrelevant after my earlier answers — drop them, don't ask.
|
|
202
|
-
5. Repeat until you have no more substantive questions.
|
|
203
|
-
|
|
204
|
-
Alignment:
|
|
205
|
-
6. Share a short summary of proposed changes — what sections of the plan change and why, open questions, recommendations. Do not rewrite the whole plan inline and do not return the full plan as a code block. Quote only small targeted snippets or describe the exact sections to change. Wait for my confirmation or corrections. Iterate until I confirm.
|
|
206
|
-
|
|
207
|
-
Final step:
|
|
208
|
-
7. Once aligned, explicitly offer to edit this same file ({{plan_path}}) with the agreed changes. Make remaining assumptions and missing context explicit.`},{id:`plan.implement.visible`,title:`Implement Plan Visible Prompt`,group:`Planning`,description:`Visible user message when sending a saved plan into an implement flow.`,placeholders:[{key:`plan_title`,description:`Current plan title.`}],template:`Implement this plan: {{plan_title}}`},{id:`plan.implement.instructions`,title:`Implement Plan Instructions`,group:`Planning`,description:`Hidden instructions for implementing a saved plan from project context.`,placeholders:[{key:`plan_title`,description:`Current plan title.`},{key:`plan_path`,description:`Absolute path to the saved plan file.`}],template:`You are starting from an existing implementation plan.
|
|
209
|
-
Plan title: {{plan_title}}
|
|
210
|
-
This plan is stored in the file: {{plan_path}}
|
|
211
|
-
Read that file first and treat its current contents as the source of truth for the plan. The plan is already agreed; implement it end-to-end without deviating from it.
|
|
212
|
-
|
|
213
|
-
Before and during implementation, build a deep understanding of the project — relevant files, module docs, existing patterns, nearby code, conventions — so your choices fit the repo's style.
|
|
214
|
-
|
|
215
|
-
Do the implementation work continuously. When a plan step is ambiguous, do not stop to ask — make the best judgment call consistent with the plan's intent and the repo's conventions, and briefly note the decision inline so it is visible on review. Prefer forward progress over interrupting me.
|
|
216
|
-
|
|
217
|
-
Do not expand scope beyond the plan. If during implementation you find the plan itself is wrong or genuinely blocks completion (not merely ambiguous), stop, state exactly what is broken and why, and propose a plan adjustment to save back into this same file ({{plan_path}}) before continuing.`},{id:`session.summary.visible`,title:`Session Summary Visible Prompt`,group:`Session`,description:`Visible user message sent by the /summary command.`,placeholders:[{key:`topic_line`,description:`Pre-formatted topic clause (e.g. " focused on: <topic>") or empty string.`}],template:`Summarize this session{{topic_line}}.`},{id:`session.summary.instructions`,title:`Session Summary Instructions`,group:`Session`,description:`Hidden instructions attached to the /summary command. Produces a non-destructive summary usable for handing off to a new session.`,placeholders:[{key:`topic_block`,description:`Pre-formatted topic focus paragraph, or empty string when no topic hint was given.`}],template:`Produce a non-destructive summary of this conversation. Do NOT compact or mutate session history — your output is an additional assistant message the user will read and may use to hand off to a new session.
|
|
172
|
+
- After completing all steps, confirm the cherry-pick was successful`},{id:`session.summary.visible`,title:`Session Summary Visible Prompt`,group:`Session`,description:`Visible user message sent by the /summary command.`,placeholders:[{key:`topic_line`,description:`Pre-formatted topic clause (e.g. " focused on: <topic>") or empty string.`}],template:`Summarize this session{{topic_line}}.`},{id:`session.summary.instructions`,title:`Session Summary Instructions`,group:`Session`,description:`Hidden instructions attached to the /summary command. Produces a non-destructive summary usable for handing off to a new session.`,placeholders:[{key:`topic_block`,description:`Pre-formatted topic focus paragraph, or empty string when no topic hint was given.`}],template:`Produce a non-destructive summary of this conversation. Do NOT compact or mutate session history — your output is an additional assistant message the user will read and may use to hand off to a new session.
|
|
218
173
|
|
|
219
174
|
Cover the information useful for continuing this work:
|
|
220
175
|
- What was done (completed work, in order)
|
|
@@ -318,23 +273,7 @@ Please review the feedback, resolve the relevant issues, and explain what you ch
|
|
|
318
273
|
|
|
319
274
|
Please review the latest state again and report any remaining issues.
|
|
320
275
|
|
|
321
|
-
{{implementation_response}}`},{id:`session.
|
|
322
|
-
|
|
323
|
-
Run this as a dialogue, not a one-shot answer.
|
|
324
|
-
|
|
325
|
-
1. Understand before asking. Once the user describes the idea, first investigate the codebase yourself — read the relevant files, existing patterns, data flow, and constraints. Ground every question in what the code actually shows, not in assumptions.
|
|
326
|
-
|
|
327
|
-
2. Ask in small batches. Ask at most 3 clarifying questions at a time — a number a person can comfortably answer in one reply. Prefer concrete, decision-oriented questions (option A/B/C, edge cases, scope boundaries) over vague open-ended ones. Number them.
|
|
328
|
-
|
|
329
|
-
3. Keep going until it is resolved. After each batch of answers, integrate them, do any further code investigation the answers require, then ask the next batch. Continue until there are no unresolved decisions or implementation details left. Do not stop early or start summarizing prematurely.
|
|
330
|
-
|
|
331
|
-
4. Surface what the user has not considered. Proactively raise edge cases, pitfalls, affected modules, migration/backward-compatibility concerns, and trade-offs the user likely did not think about. Fold these into your questions so the user decides — never silently decide for them.
|
|
332
|
-
|
|
333
|
-
5. Do not write code or begin implementing during this phase. Planning is for understanding and deciding only.
|
|
334
|
-
|
|
335
|
-
6. When everything is settled, produce the final implementation plan: a clear, ordered breakdown of the work, the files and areas affected, the decisions that were made (and why), known risks, and any remaining assumptions flagged explicitly. The plan must reflect the user's actual answers — never fill gaps with guesses.
|
|
336
|
-
|
|
337
|
-
Respond in the same language the user uses.`},{id:`session.craftGoal.visible`,title:`Goal Crafting Visible Prompt`,group:`Session`,description:`Visible user message sent by the /craft-goal command.`,placeholders:[{key:`idea_block`,description:`Optional initial task or idea supplied after the command.`}],template:`Help me turn an idea or task into a clear, verifiable Goal.{{idea_block}}`},{id:`session.craftGoal.instructions`,title:`Goal Crafting Instructions`,group:`Session`,description:`Hidden instructions attached to the /craft-goal command. Guides discovery and produces a ready-to-use Goal objective.`,template:`The user wants help turning a task, idea, or desired outcome into a strong Goal for an autonomous, multi-turn working session.
|
|
276
|
+
{{implementation_response}}`},{id:`session.craftGoal.visible`,title:`Goal Crafting Visible Prompt`,group:`Session`,description:`Visible user message sent by the /craft-goal command.`,placeholders:[{key:`idea_block`,description:`Optional initial task or idea supplied after the command.`}],template:`Help me turn an idea or task into a clear, verifiable Goal.{{idea_block}}`},{id:`session.craftGoal.instructions`,title:`Goal Crafting Instructions`,group:`Session`,description:`Hidden instructions attached to the /craft-goal command. Guides discovery and produces a ready-to-use Goal objective.`,template:`The user wants help turning a task, idea, or desired outcome into a strong Goal for an autonomous, multi-turn working session.
|
|
338
277
|
|
|
339
278
|
A Goal is a persistent completion contract, not an implementation plan and not a larger one-shot prompt. Help the user define what "done" means clearly enough that another agent can work toward it, verify it against evidence, continue through uncertain intermediate steps, and stop honestly when completion is blocked.
|
|
340
279
|
|
|
@@ -457,19 +396,17 @@ Use the results below as source material. Do not mention that the inputs were hi
|
|
|
457
396
|
`),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},Tp=async()=>xp||(Sp||=F(vp,{method:`GET`,headers:{Accept:`application/json`}}).then(async e=>{if(!e.ok)throw Error(`Failed to load magic prompts`);let t=wp(await e.json().catch(()=>({})));return xp=t,t}).finally(()=>{Sp=null}),Sp),Ep=e=>{let t=yp.get(e);if(!t)throw Error(`Unknown magic prompt id: ${e}`);return t},Dp=e=>Ep(e).template,Op=async e=>{let t=(await Tp().catch(()=>({})))[e];return typeof t==`string`?t:Dp(e)},kp=async(e,t={})=>Cp(await Op(e),t),Ap=async(e,t)=>{let n=await F(`${vp}/${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 xp=wp(r),{version:typeof r?.version==`number`?r.version:1,overrides:xp}},jp=async e=>{let t=await F(`${vp}/${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 xp=wp(n),{version:typeof n?.version==`number`?n.version:1,overrides:xp}},Mp=async()=>{let e=await F(vp,{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 xp=wp(t),{version:typeof t?.version==`number`?t.version:1,overrides:xp}},Np=e=>e.filter(e=>e?.type===`text`).map(e=>(e.text||e.content||``).trim()).filter(e=>e.length>0).join(`
|
|
458
397
|
`).replace(/\n\s*\n+/g,`
|
|
459
398
|
`),Pp=e=>!!(e&&typeof e==`object`&&!Array.isArray(e)),Fp=e=>{let t=e?.metadata;return Pp(t)?t:{}},Ip=e=>{let t=e.openchamber;return Pp(t)?t:{}},Lp=e=>{let t=Ip(Fp(e)).reviewSessionID;return typeof t==`string`&&t.trim().length>0?t:null},Rp=e=>{let t=Ip(Fp(e)).originalSessionID;return typeof t==`string`&&t.trim().length>0?t:null},zp=e=>Ip(Fp(e)).kind===`review`&&!!Rp(e),Bp=(e,t)=>{let n=Ip(e);return{...e,openchamber:{...n,reviewSessionID:t}}},Vp=(e,t)=>{let n=Ip(e);return{...e,openchamber:{...n,kind:`review`,originalSessionID:t}}},Hp=(e,t)=>{let n=Ip(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},Up=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:g(),partialize:e=>({runsByOriginalSessionID:e.runsByOriginalSessionID})})),Wp=e=>{if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0},Gp=e=>{if(!e||typeof e!=`object`||Array.isArray(e))return;let t=e,n=Wp(t.parentSessionId),r=Wp(t.sessionId);if(!(!n||!r||n===r))return{parentSessionId:n,sessionId:r}},Kp=e=>{let t=[];for(let n of e){if(n?.type!==`tool`||n.tool!==`task`)continue;let e=n.state;if(!e||typeof e!=`object`||Array.isArray(e))continue;let r=e;if(r.status!==`running`)continue;let i=r.metadata,a=Gp(i);a&&t.push(a)}return t},qp=[],Jp=(e,t,n)=>{let r=new Map;for(let t of e){if(!t.parentID)continue;let e=r.get(t.parentID)??[];e.push(t.id),r.set(t.parentID,e)}if(n)for(let e of n){let t=r.get(e.parentSessionId)??[];t.push(e.sessionId),r.set(e.parentSessionId,t)}let i=new Set([t]),a=[t];for(let e of a){let t=r.get(e);if(t)for(let e of t)i.has(e)||(i.add(e),a.push(e))}return i},Yp=(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},Xp=(e,t,n,r,i)=>{if(!n)return r;let a=Jp(e,n,i);if(a.size===0)return r;let o=new Set,s=[];for(let e of a){let n=t[e];if(n)for(let e of n)o.has(e.id)||(o.add(e.id),s.push(e))}return s.length===0?r:s},Zp=`GitHub issue context (JSON)`,Qp=`GitHub pull request context (JSON)`,$p=e=>!e||typeof e!=`object`?!1:!!e.synthetic,em=e=>!Array.isArray(e)||e.length===0?!1:e.every(e=>$p(e)),tm=e=>{if(!Array.isArray(e)||e.length===0)return[];let t=e.some(e=>!$p(e)),n=e=>{if(!$p(e)||e.type!==`text`)return!1;let t=e.text;if(typeof t!=`string`)return!1;let n=t.trimStart();return n.startsWith(Zp)||n.startsWith(Qp)};return t&&e.some(e=>$p(e))?e.filter(e=>!$p(e)||n(e)):e},nm=new Map,rm=new Map,im=new Map,am=e=>{nm.set(e,(nm.get(e)??0)+1)},om=e=>(nm.get(e)??0)>0,sm=e=>{let t=nm.get(e)??0;return t<=0?!1:(t===1?nm.delete(e):nm.set(e,t-1),!0)},cm=(e,t)=>{rm.set(e,t)},lm=e=>rm.get(e)??null,um=e=>{rm.delete(e)},dm=({sessionId:e,currentUserOrder:t,animatedIds:n})=>{let r=im.get(e),i=null;if(om(e)){let r=t[t.length-1];r!==void 0&&!n.has(r)&&sm(e)&&(cm(e,r),n.add(r),i=r)}if((!r||t.length>=r.length)&&im.set(e,t),i!==null)return i;let a=lm(e);return a===null?null:(t.includes(a)&&n.add(a),a)},fm=e=>{try{let t=new URL(e).protocol;return t===`http:`||t===`https:`||t===`file:`}catch{return!1}},pm=e=>typeof e.text==`string`?e.text:typeof e.content==`string`?e.content:``,mm=e=>{let t=e.trim().toLowerCase();return t===`application/x-directory`||t===`inode/directory`},hm=e=>e.replace(/\\/g,`/`),gm=e=>e.length<=1?e:e.replace(/\/+$/,``)||`/`,_m=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}`}`),hm(n)}catch{return null}},vm=(e,t)=>{let n=gm(hm(e)),r=gm(hm(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},ym=e=>e.filter((e,t,n)=>e.length>0&&n.indexOf(e)===t),bm=(e,t)=>{let n=hm(e),r=gm(n),i=r===`/`?`/`:`${r}/`,a=[n,r,i,n.replace(/^\/+/,``),r.replace(/^\/+/,``),i.replace(/^\/+/,``)];if(t){let r=vm(n,t);if(r!==null){let t=gm(r),i=t?`${t}/`:``;a.push(r,t,i),(n.endsWith(`/`)||e.endsWith(`/`))&&a.push(t?`${t}/`:``)}}return ym(a)},xm=async e=>{let t=await fetch(e);if(!t.ok)throw Error(`composer-restoration-data-url`);return t.blob()},Sm=(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},Cm=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},wm=async(e,t={})=>{let n=t.createID??fe,r=t.directory??t.root??null,i=e.filter(e=>!$p(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(pm).join(`
|
|
460
|
-
`),l=[];for(let e of o){let t=Cm(e);t&&l.push(t)}for(let e of[...l].reverse())Sm(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=Sm(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:`)?_m(t):null;if(o){let e=bm(o,r),t=null;for(let n of e){let e=Sm(c,`@${n}`,p);if(e){t={path:n,range:e};break}}if(t){p.add(`${t.range.start}:${t.range.end}`);let e=mm(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 xm(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(fm(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}},Tm=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 xm(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(fm(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}},Em=e=>e?JSON.parse(JSON.stringify(e)):null,Dm=e=>e?{...e}:{},Om=(e,t=Or.getState())=>{let n=t.getDraft?.(e)??null,r=Dm(t.draftAttachmentViews?.[R(e)]);return{record:Em(n??void 0),views:r,expectedRevision:n?.revision??`absent`}},km=async e=>{let t=e.input??Or.getState(),n=Om(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}},Am=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}}},jm=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?Am({key:e.key,restoredRevision:e.restoredRevision,previous:e.previous,runtime:o,store:t}):{status:`failed`,current:!1}},Mm=(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},Nm=e=>e?.status===`committed`&&e.current===!0,Pm=new Map,Fm=async(e,t)=>{let n=R(e),r=Pm.get(n)??Promise.resolve(),i,a=new Promise(e=>{i=e}),o=r.catch(()=>void 0).then(()=>a);Pm.set(n,o),await r.catch(()=>void 0);try{return await t()}finally{i(),Pm.get(n)===o&&Pm.delete(n)}},Im=(e,t)=>({key:e,addLocal:async n=>{await Fm(e,async()=>{await t().addDraftLocalAttachment(e,n)})},removeByAttachmentID:async n=>{try{return await Fm(e,async()=>{let r=t(),i=Mm(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 Fm(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 Fm(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:Nm(i)})}catch{return!1}},replaceRootAttachments:async n=>{try{return await Fm(e,async()=>t().replaceDraftRootAttachments(e,n))}catch{return}},addVSCodeFile:async(n,r,i)=>{await Fm(e,()=>{t().addDraftVSCodeFileAttachment(e,n,r,i)})},addVSCodeSelection:async(n,r)=>{await Fm(e,async()=>{await t().addDraftVSCodeSelectionAttachment(e,n,r)})}}),Lm=4e4,Rm=0,zm=null;function Bm(e=Date.now()){Rm=e}function Vm(e){return zm=e,()=>{zm===e&&(zm=null)}}function Hm(e){zm?.(e)}function Um(e=Date.now(),t=Lm){return Rm<=0?!1:e-Rm>=t}var Wm=3e4,Gm=200,Km=new Map;function qm(e,t,n){return`${n?.transport??i()}\n${n?.generation??h()}\n${e.trim()}\n${t}`}function Jm(e,t,n){if(!e||!t)return!1;let r=Km.get(qm(e,t,n));return r!==void 0&&(n?.now??Date.now())-r<Wm}function Ym(e,t,n){if(!e||!t)return;let r=qm(e,t,n);for(Km.has(r)&&Km.delete(r);Km.size>=Gm;){let e=Km.keys().next().value;if(typeof e!=`string`)break;Km.delete(e)}Km.set(r,n?.now??Date.now())}var Xm=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},Qm=()=>{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<=Xm&&Zm()?`mobile`:`desktop`},$m=()=>Qm()===`mobile`,eh=3,th=2,nh=4,rh=4,ih=100,ah=30;function oh(){return u()?`relay`:`local`}function sh(e=oh()){return e===`relay`?th:eh}function ch(e=oh()){return e===`relay`?rh:nh}function lh(e){return sh(fh(e))}function uh(){return ih}function dh(){return ah}function fh(e){return e===`relay`||e===`local`?e:oh()}var ph=Object.freeze({liveRevision:0,confirmedHeadMessageID:null});function mh(){return{pages:[],pageParams:[]}}function hh(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 gh(e){return{pages:Object.freeze(e.pages.map(hh)),pageParams:Object.freeze([...e.pageParams])}}function _h(e,t,n=ph){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 hh({kind:t,messageOrder:r,messagesByID:i,partsByMessageID:a,cursor:e.complete?null:e.cursor??null,complete:e.complete,turnCount:o,sync:n})}function vh(e){if(!e||e.pages.length===0)return il;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 yh(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=vh(e);return{message:n,part:r,session_history_boundary:o.kind===`unknown`&&o.loadedTurns===0?{}:{[t]:o}}}function bh(e){for(let t=e.length-1;t>=0;--t){let n=e[t];if(n?.id)return n.id}return null}function xh(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 hh({kind:e,messageOrder:s,messagesByID:c,partsByMessageID:l,cursor:r,complete:i,turnCount:a,sync:{liveRevision:o,confirmedHeadMessageID:bh(t)}})}function Sh(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 gh({pages:[xh(`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=xh(`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(wh(i,o,s,a)),_.push(e.pageParams[r]??null)}return gh({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?wh(t,r===`reconcile-page`?Ch(i,p):[...i,...p],s,a):wh(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]=hh({...e,cursor:t,complete:r,sync:{...e.sync,liveRevision:a}}))}return gh({pages:m,pageParams:[...e.pageParams]})}function Ch(e,t){let n=e.slice();for(let e of t){let t=oc(e),r=n.length;for(let e=0;e<n.length;e+=1)if(ac(t,oc(n[e]))<0){r=e;break}n.splice(r,0,e)}return n}function wh(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&&Th(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||Dh(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:hh({kind:e.kind,messageOrder:i,messagesByID:a,partsByMessageID:o,cursor:e.cursor,complete:e.complete,turnCount:e.turnCount,sync:{liveRevision:r,confirmedHeadMessageID:bh(t)}})}function Th(e,t){return e===t||e.id===t.id&&e===t}function Eh(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 Dh(e,t){if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(!Eh(e[n],t[n]))return!1;return!0}function Oh(e){return e.filter(e=>!!e?.id).slice().sort((e,t)=>e.id<t.id?-1:+(e.id>t.id))}function kh(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 Ah(e,t,n,r,i,a){let o=n.message[t]??[],s=n.part,c=Sh(e??mh(),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&&Dh(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 gh({pages:e.pages.map((t,n)=>wh(t,n===e.pages.length-1?[...l[n]??[],...u]:l[n]??[],c,i)),pageParams:[...e.pageParams]})}return c}function jh(e,t){let n=yh(e,t),r=vh(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 Mh(e,t,n,r){if(!Al(n.type))return{data:e,result:{applied:!1,changed:!1}};let{draft:i,previousBoundary:a}=jh(e,t),o=Rs(i,n);if(!(typeof o==`boolean`?o:o.changed))return{data:e,result:{applied:!0,changed:!1}};let s=kh(n),c=new Set;return s&&c.add(s),{data:Ah(e,t,i,a,r,c),result:{applied:!0,changed:!0}}}function Nh(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 Ph(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 Fh(e,t,n,r){if(n.length===0)return{data:e,result:{applied:!1,changed:!1}};let{draft:i,previousBoundary:a}=jh(e,t),o=!1,s=0,c,l=new Set,u=Nh(e),d=Ph(e),f=i.message[t]??[],p=new Map,m=new Map,h=[],g=e=>{if(p.clear(),m.clear(),h=[],e)for(let t=0;t<e.length;t+=1){let n=e[t];n?.id&&(p.set(n.id,n),m.set(n.id,t),h.push(n.id))}};g(f);let _=h.slice();for(let e of n){if(!Al(e.type))continue;o=!0;let n=Rs(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 v=i.message[t]??[];v!==f&&(f=v,g(v));let y=kh(e),b=h.length!==_.length||h.some((e,t)=>e!==_[t]),x=b;if(y){let e=i.part[y],t=u.get(y);e&&t&&Dh(t,e)?i.part[y]=[...t]:e?(x=!0,u.set(y,e)):t&&(x=!0,u.delete(y));let n=p.get(y),r=d.get(y);if(!(n&&r&&r===n))if(n&&r&&Th(r,n)){let e=m.get(y);e!==void 0&&f[e]&&(f[e]=r,p.set(y,r))}else n?(x=!0,d.set(y,n)):r&&(x=!0,d.delete(y))}else x=!0;if(b){_=h.slice();for(let e of f)e?.id&&!d.has(e.id)&&d.set(e.id,e)}x&&(s+=1,y&&l.add(y))}return o?s===0?{data:e,result:{applied:!0,changed:!1,...c?{materialization:c}:{}}}:{data:Ah(e,t,i,a,r+s,l),result:{applied:!0,changed:!0,...c?{materialization:c}:{}}}:{data:e,result:{applied:!1,changed:!1}}}function Ih(e,t,n,r,i){let a=e&&e.pages.length>0?e:gh({pages:[xh(`tail`,[],{},null,!1,0,i)],pageParams:[null]}),o=yh(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]:Oh(r)};return{data:gh({pages:a.pages.map((e,t)=>t===a.pages.length-1?wh(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]?wh(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 Lh(e,t,n){if(!e||e.pages.length===0)return{data:e,result:{applied:!0,changed:!1}};let r=!1;return{data:gh({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 wh(e,i,a,n)}),pageParams:[...e.pageParams]}),result:{applied:!0,changed:r}}}function Rh(e,t,n){if(n.records.length===0)return{data:e,result:{applied:!1,changed:!1}};let r=yh(e,t),i=Qc({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:vh(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=gh({pages:[xh(`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:vh(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=gh({pages:e.pages.map((t,n)=>{let r=c[n]??[];return n===e.pages.length-1&&l.length>0?wh(t,Ch(r,l),o,a):wh(t,r,o,a)}),pageParams:[...e.pageParams]});return{data:u,result:{applied:!0,changed:!0,boundary:vh(u)}}}function zh(e,t,n){switch(n.type){case`http-page`:{let r=n.liveRevision??0,i=pl(yh(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:Sh(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 Mh(e,t,n.event,r+1)}case`sse-event-batch`:{let r=e?.pages[e.pages.length-1]?.sync.liveRevision??0;return Fh(e,t,n.events,r)}case`optimistic-add`:{let r=e?.pages[e.pages.length-1]?.sync.liveRevision??0;return Ih(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 Lh(e,n.messageID,t)}case`durable-seed`:return Rh(e,t,n);case`reset`:return n.page?zh(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 Bh(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 Vh(e,t,n,r=`materialize`){return zh(e,n,{type:`http-page`,purpose:r,page:Bh(t),liveRevision:t.sync.liveRevision}).data}function Hh(e,t,n){if(!t)return e;if(!e||e.pages.length===0)return gh(t);if(t.pages.length===e.pages.length){let r=Kh(e,t);if(r===e)return e;if(Gh(e,t)||Wh(e,t))return r;let i=t.pages[t.pages.length-1];return Vh(e,i,n)??r}if(t.pages.length===e.pages.length+1){let r=t.pages[0];return zh(e,n,{type:`http-page`,purpose:`prepend`,page:Bh(r),liveRevision:r.sync.liveRevision}).data}if(t.pages.length===1&&e.pages.length>1){let r=t.pages[0];return Vh(e,r,n)??gh(t)}return gh(t)}function Uh(e){let t=new Set;for(let n of e.pages)for(let e of n.messageOrder)t.add(e);return t}function Wh(e,t){let n=Uh(e),r=Uh(t);if(r.size===0||r.size>=n.size)return!1;for(let e of r)if(!n.has(e))return!1;let i=qh(e,``),a=qh(t,``);for(let e of r)if(i.messagesByID[e]!==a.messagesByID[e]||i.partsByMessageID[e]!==a.partsByMessageID[e])return!1;return!0}function Gh(e,t){let n=Uh(e);if(n.size===0)return!1;let r=Uh(t);for(let e of n)if(!r.has(e))return!1;if(r.size<=n.size)return!1;let i=qh(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||ac(oc(t),oc(n))>0)return!1}return!0}function Kh(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,hh(t))});return!n&&e.pageParams.length===t.pageParams.length?e:gh({pages:r,pageParams:[...t.pageParams]})}function qh(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:vh(e),liveRevision:a}}var Jh=class extends Error{code=`runtime_stale`;constructor(e=`runtime_stale`){super(e),this.name=`SessionMessageRuntimeStaleError`}},Yh=class extends Error{code=`page_contract`;constructor(e){super(e),this.name=`SessionMessagePageContractError`}},Xh=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(),Qh=e=>e?.trim()||`tail`,$h=new Set([502,503,504]),eg=[`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 tg(e){if(!e||e instanceof Jh||e instanceof Yh)return!1;if(e instanceof Xh)return e.status>=400&&e.status<500?!1:$h.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($h.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($h.has(e)||e>=500&&e<600)return!0}return n.includes(`page contract`)||n.includes(`malformed json`)||n.includes(`contract`)?!1:eg.some(e=>n.includes(e))}function ng(e,t){return e>=2?!1:tg(t)}var rg=(e,t=i(),n=h())=>[t,n,`sessionMessages`,`page`,Zh(e.directory),e.sessionID,e.limit,Qh(e.before)],ig=(e,t=i(),n=h())=>[t,n,`session-transcript`,Zh(e.directory),e.sessionID];function ag(e){if(!e||typeof e!=`object`)throw new Yh(`session message page: expected object`);let t=e;if(!Array.isArray(t.records))throw new Yh(`session message page: records must be an array`);if(typeof t.complete!=`boolean`)throw new Yh(`session message page: complete must be boolean`);for(let e of t.records){if(!e||typeof e!=`object`)throw new Yh(`session message page: invalid record`);let t=e.info;if(!t||typeof t!=`object`||typeof t.id!=`string`)throw new Yh(`session message page: record.info.id required`)}if(t.cursor!==void 0&&t.cursor!==null&&typeof t.cursor!=`string`)throw new Yh(`session message page: cursor must be string when set`);return e}var og=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}:{}})},sg=(e,t,n)=>{let r=(n.getTransport??i)(),a=(n.getGeneration??h)();if(r!==e||a!==t)throw new Jh},cg=(e,t,n=i(),r={},a=(r.getGeneration??h)())=>{let o=Zh(e.directory),s=e.sessionID,c=e.limit,l=e.before?.trim()||void 0;return{queryKey:rg({directory:o,sessionID:s,limit:c,before:l},n,a),queryFn:async({signal:e})=>{sg(n,a,r);let i=await t({directory:o,sessionID:s,limit:c,before:l,signal:e});return sg(n,a,r),og(ag(i))},staleTime:1/0,gcTime:3e5,retry:ng,retryDelay:e=>Math.min(500*2**e,4e3)}},lg=(e,t,n=L,r=i(),a={},o=(a.getGeneration??h)())=>n.fetchQuery(cg(e,t,r,a,o));function ug(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 dg(e){return og({records:e.records.map(e=>({info:e.info,parts:e.parts})),cursor:e.cursor,complete:e.complete,turnCount:e.turnCount,requestedTurnLimit:e.requestedTurnLimit})}function fg(e){if(!e.complete&&typeof e.cursor==`string`&&e.cursor.length>0)return e.cursor}function pg(e){let t=Zh(e.directory),n=e.sessionID,r=e.transport??i(),a=e.probe??{},o=e.generation??(a.getGeneration??h)(),s=e.initialLimit??sh(),c=e.historyLimit??ch(),l=e.client??L,u=ig({directory:t,sessionID:n},r,o),d=async t=>dg(await e.fetcher({directory:t.directory,sessionID:t.sessionID,limit:t.limit,before:t.before,signal:t.signal}));return{queryKey:u,queryFn:async e=>{sg(r,o,a);let i=e.pageParam?.trim()||void 0,u=i?c:s,f=i?`prepend`:`initial`,p=await lg({directory:t,sessionID:n,limit:u,before:i},d,l,r,a,o);sg(r,o,a);let m=ug(p);return _h(m,f===`prepend`?`history`:`tail`,{liveRevision:0,confirmedHeadMessageID:m.records[m.records.length-1]?.info.id??null})},initialPageParam:null,getPreviousPageParam:fg,getNextPageParam:()=>void 0,staleTime:1/0,gcTime:3e5,retry:ng,retryDelay:e=>Math.min(500*2**e,4e3),maxPages:void 0,structuralSharing:(e,t)=>Hh(e,t,n)}}function mg(e){let t=e.client??L,n=pg({...e,client:t}),r=new nt(t,{...n,structuralSharing:(t,n)=>Hh(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 gh(e);await r.refetch();let t=r.getCurrentResult().data;if(!t)throw r.getCurrentResult().error??Error(`transcript initial fetch failed`);return gh(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:gh(i)}):e}if(!i)throw Error(`transcript previous page fetch failed`);return gh(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:gh(n)}):t}},getData:()=>r.getCurrentResult().data,subscribe:e=>r.subscribe(t=>{e(t.data)}),destroy:()=>{r.destroy()}}}function hg(e,t,n,r){let i=e.getQueryData(t),a=zh(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 gg(e,t=L,n=i(),r=h()){return t.getQueryData(ig(e,n,r))}function _g(){return v()||$m()}function vg(){return v()?4:$m()?12:40}var yg=1048576,bg=4*yg,xg=12*yg,Sg=40*yg;function Cg(){return v()?bg:$m()?xg:Sg}var wg=e=>e.trim();function Tg(e){return{transport:e.transport,generation:e.generation,directory:wg(e.directory),sessionID:e.sessionID}}function Eg(e){let t=Tg(e);return`${t.transport}\n${t.generation}\n${t.directory}\n${t.sessionID}`}function Dg(e){return`${e.transport}\n${e.generation}\n${wg(e.directory)}`}var Og={canonical:`session-transcript`,transportPageRoot:`sessionMessages`,transportPageKind:`page`,taskRoot:`session-transcript-task`,tailTaskKind:`tail`,reconcileTaskKind:`reconcile`,checkpoint:`session-transcript-checkpoint`};function kg(e,t,n){return[t,n,Og.taskRoot,Og.reconcileTaskKind,wg(e.directory),e.sessionID,e.checkpoint]}function Ag(e,t,n){return[t,n,Og.checkpoint,wg(e.directory),e.sessionID]}function jg(e){let t=Tg(e);return[{queryKey:ig({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation),exact:!0},{queryKey:[t.transport,t.generation,Og.transportPageRoot,Og.transportPageKind,t.directory,t.sessionID]},{queryKey:[t.transport,t.generation,Og.taskRoot,Og.tailTaskKind,t.directory,t.sessionID]},{queryKey:[t.transport,t.generation,Og.taskRoot,Og.reconcileTaskKind,t.directory,t.sessionID]},{queryKey:Ag({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation),exact:!0}]}function Mg(){let e=new Map;return{retain(t){let n=Tg(t),r=Eg(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(Eg(t))?.count??0)>0},listRetained(){return Array.from(e.values()).map(e=>e.scope)},retainCount(t){return e.get(Eg(t))?.count??0},clear(){e.clear()}}}function Ng(){return{cancel:0,remove:0,enforce:0,purgeSession:0,purgeGeneration:0,destructiveReset:0,evictedSessions:0}}var Pg=3e4;function Fg(e){return e&&typeof e==`object`&&`pages`in e&&Array.isArray(e.pages)?e.pages.length:0}function Ig(e){return!Array.isArray(e)||e.length<5||e[2]!==Og.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 Lg(e){let t=e.client,n=e.activeRegistry??Mg(),r=e.counters??Ng(),i=e.getLimit??vg,a=e.now??Date.now,o=e.minResidencyMs??Pg,s=new Map,c=new Map,l=e=>{let t=Tg(e),n=Eg(t),r=c.get(t.sessionID);r||(r=new Map,c.set(t.sessionID,r)),r.set(n,t)},u=e=>{let t=Tg(e),n=Eg(t),r=c.get(t.sessionID);r&&(r.delete(n),r.size===0&&c.delete(t.sessionID))},d=(e,t)=>{for(let[n,r]of c){for(let[n,i]of r)i.transport===e&&i.generation===t&&r.delete(n);r.size===0&&c.delete(n)}let n=`${e}\n${t}\n`;for(let e of s.keys())e.startsWith(n)&&s.delete(e)};for(let e of t.getQueryCache().getAll()){let t=Ig(e.queryKey);t&&l(t)}let f=t.getQueryCache().subscribe(e=>{if(e.type===`added`||e.type===`updated`){let t=Ig(e.query.queryKey);t&&l(t);return}if(e.type===`removed`){let t=Ig(e.query.queryKey);t&&u(t)}}),p=e=>{let t=Eg(Tg(e));s.set(t,a())},m=e=>{let t=Eg(Tg(e)),n=s.get(t);return n!==void 0&&a()-n<o},h=e=>{let r=Tg(e);if(n.isRetained(r))return!0;let i=ig({directory:r.directory,sessionID:r.sessionID},r.transport,r.generation);return(t.getQueryCache().find({queryKey:i,exact:!0})?.getObserversCount()??0)>0},g=e=>{let r=e?.directory===void 0?void 0:wg(e.directory),i=[];for(let a of t.getQueryCache().getAll()){let t=Ig(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:Fg(a.state.data)})}return i},_=(e,t)=>{let n=c.get(e);if(!n||n.size===0)return[];let r=t?.directory===void 0?void 0:wg(t.directory),i=[];for(let e of n.values())(t?.transport===void 0||e.transport===t.transport)&&(t?.generation===void 0||e.generation===t.generation)&&(r===void 0||e.directory===r)&&i.push(e);return i},v=e=>{t.cancelQueries(e),r.cancel+=1,t.removeQueries(e),r.remove+=1},y=e=>{r.purgeSession+=1;let t=Tg(e);s.delete(Eg(t)),u(t);for(let t of jg(e))v(t)},b=(e,t)=>{r.purgeGeneration+=1,d(e,t);let n=[[e,t,Og.canonical],[e,t,Og.transportPageRoot,Og.transportPageKind],[e,t,Og.taskRoot],[e,t,Og.checkpoint]];for(let e of n)v({queryKey:e})},x=e=>{r.enforce+=1;let t=e?.limit??i(),n=new Set(Array.from(e?.preserve??[]).map(e=>Eg(Tg(e)))),o=g({transport:e?.transport,generation:e?.generation,directory:e?.directory}),c=new Map;for(let e of o){let t=Dg(e.scope),n=c.get(t);n||(n=[],c.set(t,n)),n.push(e)}let l=[];for(let e of c.values()){for(let t of e){let e=Eg(t.scope);s.has(e)||s.set(e,t.dataUpdatedAt||a())}let i=e.filter(e=>!(e.active||n.has(Eg(e.scope))||m(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,u=0;for(;c>t&&u<i.length&&!(c-1<o);){let e=i[u];u+=1,y(e.scope),l.push(e.scope),r.evictedSessions+=1,--c}}return{evicted:l}};return{client:t,activeRegistry:n,counters:r,getLimit:i,isActive:h,listCanonical:g,listCanonicalScopesForSession:_,purgeSession:y,purgeGeneration:b,enforce:x,destructiveReset:async(e,t)=>{r.destructiveReset+=1,y(e);try{let n=await t();return x({transport:e.transport,generation:e.generation,directory:e.directory,preserve:[e]}),n}catch(t){throw y(e),t}},noteScopeObserved:p,dispose:()=>{f(),c.clear(),s.clear()}}}var Rg=new Map,zg=new Set;function Bg(e,t){return`${e}\n${t}`}function Vg(){for(let e of zg)e()}function Hg(e,t){if(!e||!t)return;let n=Bg(e,t),r=Rg.get(n)??0;Rg.set(n,r+1),r===0&&Vg()}function Ug(e,t){if(!e||!t)return;let n=Bg(e,t),r=Rg.get(n);if(r){if(r<=1){Rg.delete(n),Vg();return}Rg.set(n,r-1)}}function Wg(e,t){if(!e)return!1;if(t)return Rg.has(Bg(t,e));let n=`\n${e}`;for(let e of Rg.keys())if(e.endsWith(n))return!0;return!1}function Gg(e){return zg.add(e),()=>{zg.delete(e)}}var Kg=3e4,qg=(e,t)=>e?typeof AbortSignal.any==`function`?AbortSignal.any([e,AbortSignal.timeout(t)]):e:AbortSignal.timeout(t);async function Jg(e,t=Kg){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 Yg=e=>e?e.toLowerCase().includes(`application/json`):!1,Xg=e=>e?e.toLowerCase().includes(`text/html`):!1;function Zg(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 Qg(e){let t=e.turns??ch(),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:Kg;return Jg((async()=>{let a=await F(n,{method:`GET`,query:r,signal:qg(e.signal,i)});if(!a.ok)throw Error(`session turn page failed (${a.status})`);let o=a.headers.get(`content-type`);if(Xg(o))throw Error(`session turn page: unexpected HTML response`);Yg(o);let s;try{s=await a.json()}catch{throw Error(`session turn page: malformed JSON`)}return Zg(s,t)})(),i)}async function $g(e){let t=e.purpose===`prepend`&&e.before?ch():sh();return Qg({sessionID:e.sessionID,directory:e.directory,turns:t,...e.before?{before:e.before}:{},signal:e.signal})}var e_=3e4,t_=2,n_=(e,t)=>e?typeof AbortSignal.any==`function`?AbortSignal.any([e,AbortSignal.timeout(t)]):e:AbortSignal.timeout(t),r_=e=>e?e.toLowerCase().includes(`text/html`):!1,i_=e=>new Promise(t=>{setTimeout(t,e)});function a_(e,t){if(e==null)return null;if(typeof e!=`string`||e.length===0)throw new Yh(`session transcript reconcile: ${t} must be string or null`);return e}function o_(e){if(!e||typeof e!=`object`)throw new Yh(`session transcript reconcile: expected JSON object`);let t=e;if(!Array.isArray(t.records))throw new Yh(`session transcript reconcile: records must be an array`);if(typeof t.anchorFound!=`boolean`)throw new Yh(`session transcript reconcile: anchorFound must be a boolean`);if(typeof t.complete!=`boolean`)throw new Yh(`session transcript reconcile: complete must be a boolean`);if(typeof t.resetRequired!=`boolean`)throw new Yh(`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 Yh(`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 Yh(`session transcript reconcile: responseBytes must be a non-negative integer`);let n=a_(t.capturedHeadMessageID,`capturedHeadMessageID`),r=a_(t.latestHeadMessageID,`latestHeadMessageID`),i=a_(t.continuation,`continuation`);if(t.complete===!0&&i!=null)throw new Yh(`session transcript reconcile: complete=true requires continuation=null`);if(t.complete===!1&&t.resetRequired!==!0&&i==null)throw new Yh(`session transcript reconcile: complete=false requires non-empty continuation`);if(t.resetRequired===!0){if(t.complete!==!0)throw new Yh(`session transcript reconcile: resetRequired=true requires complete=true`);if(i!=null)throw new Yh(`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 Yh(`session transcript reconcile: records[${e}] must be an object`);let r=n,i=r.info;if(!i||typeof i!=`object`)throw new Yh(`session transcript reconcile: records[${e}].info must be an object`);let o=i.id;if(typeof o!=`string`||o.length===0)throw new Yh(`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 Yh(`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 s_(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 Yh(`session transcript reconcile: provide exactly one of anchor or continuation`);return{anchor:t,continuation:n}}async function c_(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),Jg((async()=>{let t;try{t=await F(r,{method:`GET`,query:i,signal:n_(e.signal,n)})}catch(e){throw e instanceof Jh||e instanceof Yh||e instanceof Xh||e instanceof Error?e:Error(String(e))}if(!t.ok)throw new Xh(t.status,`session transcript reconcile failed (${t.status})`);if(r_(t.headers.get(`content-type`)))throw new Yh(`session transcript reconcile: unexpected HTML response`);let a;try{a=await t.json()}catch{throw new Yh(`session transcript reconcile: malformed JSON`)}return o_(a)})(),n)}async function l_(e){let t=s_(e),n=typeof e.timeoutMs==`number`&&Number.isFinite(e.timeoutMs)&&e.timeoutMs>0?e.timeoutMs:e_,r=typeof e.maxRetries==`number`&&Number.isFinite(e.maxRetries)?Math.max(0,Math.floor(e.maxRetries)):t_,i=e.sleep??i_,a=0;for(;;){if(e.signal?.aborted)throw new DOMException(`The operation was aborted.`,`AbortError`);try{return await c_(e,t,n)}catch(t){if(t instanceof Jh||t instanceof Yh||t instanceof Xh&&t.status>=400&&t.status<500||(t instanceof Error?t.name:``)===`AbortError`&&e.signal?.aborted||a>=r||!tg(t))throw t;a+=1,await i(Math.min(500*2**(a-1),4e3))}}}var u_=e=>!!(e&&typeof e==`object`&&typeof e.type==`string`),d_=e=>e.filter(u_),f_=e=>{let t=e,n=t.text;return typeof n==`string`?n:t.content||t.value||``},p_=e=>{if(e.type!==`text`)return!1;let t=f_(e);return!t||t.trim().length===0},m_=(e,t={})=>{let{includeReasoning:n=!0}=t,r=d_(e),i=r.some(e=>!e.synthetic);return r.filter(e=>{let t=!!e.synthetic;return t&&e.type===`text`&&f_(e).includes(`<system-reminder>`)||t&&i||!n&&e.type===`reasoning`?!1:e.type!==`patch`})},h_=`GitHub issue context (JSON)`,g_=`GitHub pull request context (JSON)`,__=e=>typeof e==`number`&&Number.isFinite(e)&&e>0,v_=(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}},y_=e=>{let t=v_(e,h_);if(t){let e=t.issue,n=e?.number,r=e?.title,i=e?.url;return!__(n)||typeof r!=`string`||typeof i!=`string`?null:{type:`file`,mime:`application/vnd.github.issue-link`,filename:`Issue #${n}: ${r}`,url:i}}let n=v_(e,g_);if(n){let e=n.pr,t=e?.number,r=e?.title,i=e?.url;return!__(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},b_=(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`))},x_=e=>e.trimStart().startsWith(`Continue working toward the active session goal.`),S_=e=>e.trim()===`/compact`,C_=(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`&&(x_(t)||S_(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 b_(t,n)||r.startsWith(h_)||r.startsWith(g_)}).map(e=>{let t=e;if(t.type===`text`){let e=typeof t.text==`string`?t.text.trim():``;if(t.synthetic===!0){let t=y_(e);if(t)return t}if(e.startsWith(`The following tool was executed by the user`))return{type:`text`,text:`/shell`}}return e})},w_=e=>e.some(e=>{if(e.type===`text`)return!p_(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}),T_=e=>e?.length?w_(C_(e)):!1,E_=`oc_asst_session_divider:`,D_=[],O_=e=>typeof e?.info?.id==`string`&&e.info.id.startsWith(`oc_asst_session_divider:`),k_=(e,t=0)=>({info:{id:`${E_}${e}`,role:`system`,time:{created:t}},parts:[]}),A_=e=>e.slice().reverse().flatMap(e=>e.entries),j_=(e,t,n=D_)=>{if(!e.length)return D_;let r=[],i=!1,a=null;for(let n of e)n.sessionID!==t&&(i&&a!==n.sessionID&&r.push(k_(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?D_:I_(n,r)?n:r},M_=(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},N_=(e,t)=>{if(!t)return e;if(e.info.role===`assistant`&&t.parts.length>0){let n=M_(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 T_(e.parts)?e:T_(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}:{}}},P_=(e,t,n,r=D_)=>{if(!t)return n.length>0?Array.from(n):D_;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:N_(e,t?.message),order:t?.order??a++})}if(i.size===0)return D_;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 I_(r,o)?r:o},F_=(e,t)=>{if(!O_(e)||!O_(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},I_=(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||F_(r,i))&&(r?.info!==i?.info||r?.parts!==i?.parts||r.sourceSessionID!==i.sourceSessionID||r.sourceDirectory!==i.sourceDirectory))return!1}return!0},L_=(e,t)=>Array.isArray(e)&&e.some(e=>e&&typeof e==`object`&&e.type===t),R_=e=>e.startsWith(E_);function z_(e,t){if(!e?.id||R_(e.id))return!1;let n=e;return(typeof n.clientRole==`string`?n.clientRole:n.role)===`user`?!Array.isArray(t)||t.length===0||!(L_(t,`subtask`)||L_(t,`compaction`)||t.every(e=>$p(e))):!1}function B_(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(z_(r,i))return n}return null}function V_(e){return e.messageOrder.length===0?null:e.messageOrder[e.messageOrder.length-1]??null}function H_(e){return{transport:e.transport,generation:e.generation,directory:e.directory.trim(),sessionID:e.sessionID,anchorMessageID:B_(e.transcript),lastEventID:e.lastEventID,capturedAt:e.capturedAt??Date.now(),state:`pending`,capturedHeadMessageID:null,latestHeadMessageID:V_(e.transcript),continuation:null,liveRevision:e.transcript.liveRevision}}function U_(e,t){return{...e,...t}}function W_(e,t){let n=Ag({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 G_(e,t){let n=Ag({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation);return e.setQueryData(n,t),n}function K_(e,t){let n=Ag({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation);e.removeQueries({queryKey:n,exact:!0})}function q_(e){return e.slim===!0}var J_=/bearer|token|authorization|password|secret|cookie/i,Y_=new Set([`message.part.delta`]);function X_(e){return typeof e==`string`&&e.includes(`-`)}var Z_=`openchamber.client-diagnostics.enabled`;function Q_(e){return e===`true`||e!==`false`&&null}function $_(e){return e.preference===!0||e.preference!==!1&&X_(e.version)}function ev(e=Date.now()){return`openchamber-diagnostics-${new Date(e).toISOString().replace(/[:.]/g,`-`)}.json`}function tv(e){try{let t=JSON.parse(e);return typeof t.eventCount==`number`&&Number.isFinite(t.eventCount)?t.eventCount:0}catch{return 0}}function nv(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 rv(e){if(e==null)return;let t=(e instanceof Error?e.message:String(e)).trim().slice(0,240);if(t)return J_.test(t)?`redacted-error`:t}function iv(e){let t=0,n=0;for(let r of Object.values(e))if(r)for(let e of r)q_(e)?t+=1:n+=1;return{slimPartCount:t,fullPartCount:n}}function av(e,t=4){return e.length<=t?e.slice():e.slice(e.length-t)}function ov(e){let t=0;for(let n of e.messageOrder)bv(e.messagesByID[n])===!0&&(t+=1);return t}function sv(e){let t=e.transcript?iv(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:av(e.transcript.messageOrder),boundaryKind:e.transcript.boundary.kind,slimPartCount:t?.slimPartCount,fullPartCount:t?.fullPartCount,identityMissingCount:ov(e.transcript)}:{},...e.command?{command:e.command}:{},...e.purpose?{purpose:e.purpose}:{},...e.sseType?{sseType:e.sseType}:{},...rv(e.error??e.request?.error)?{error:rv(e.error??e.request?.error)}:{},...nv(e.error)===void 0?{}:{httpStatus:nv(e.error)}}}function cv(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 lv(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 uv(e){return typeof e==`string`&&Y_.has(e)}function dv(e){switch(e.type){case`http-page`:return`http-page`;case`sse-event`:return uv(e.event.type)?null:`sse-event`;case`sse-event-batch`:return e.events.every(e=>uv(e.type))?null:`sse-event`;case`reset`:return`reset`;case`materialize-snapshots`:return`durable-seed`;case`remove-message`:return`purge`;default:return null}}function fv(e){if(e.type===`http-page`)return e.purpose}function pv(e){if(e.type===`sse-event`)return e.event.type;if(e.type===`sse-event-batch`)return`sse-event-batch`}function mv(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 hv(e){return e.__openchamberOptimistic===!0}function gv(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 J_.test(n)?`redacted-text`:n.length<=400?n:`${n.slice(0,400)}…`}function _v(e){if(!e)return;let t=e.clientRole??e.role;if(t===`user`||t===`assistant`||t===`system`)return t}function vv(e){let t=e?.time?.completed;return typeof t==`number`&&t>0}var yv=e=>typeof e==`string`&&e.trim().length>0;function bv(e){if(!e||_v(e)!==`assistant`)return;let t=e,n=!yv(t.mode)&&!yv(t.agent),r=!yv(t.modelID)||!yv(t.providerID);return n||r}function xv(e){return{partCount:e.partCount,slimCount:e.slimCount,fullCount:e.fullCount,optimistic:e.optimistic}}function Sv(e){let t=e.messageOrder.map(t=>{let n=e.partsByMessageID[t]??[],r=0,i=0,a=!1;for(let e of n)q_(e)?r+=1:i+=1,hv(e)&&(a=!0);let o=e.messagesByID[t],s=_v(o),c=bv(o),l=s===`user`?gv(n):void 0;return{id:t,partCount:n.length,slimCount:r,fullCount:i,optimistic:a,completed:vv(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 Cv(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:xv(e),after:xv(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 wv(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:Cv(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 Tv(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 Dv(e){if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0}function Ov(e){let t=Dv(e.partID),n=Dv(e.messageID),r=Dv(e.directory),i=Dv(e.childSessionID),a=Dv(e.toolStatus),o=Dv(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 kv(e){return[e.sessionID,Dv(e.partID)??``,e.childSessionPresent?`1`:`0`,Dv(e.childSessionID)??``,Dv(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`,Dv(e.surfaceKind)??``,String(e.taskStartedAt??``),String(e.statusObservedAt??``),String(e.statusSnapshotAt??``)].join(`\0`)}function Av(e){return{at:(e.now??Date.now)(),feat:`task`,kind:`task-row`,sessionID:e.sessionID,...Ov(e)}}function jv(e){return{at:(e.now??Date.now)(),feat:`task`,kind:`task-click`,sessionID:e.sessionID,clickSource:e.clickSource,clickOutcome:Ev(e),...Ov(e)}}var Mv=`openchamber-transcript-diagnostics`,Nv=`events`,Pv=1,Fv=e=>new Promise((t,n)=>{e.onsuccess=()=>t(e.result),e.onerror=()=>n(e.error??Error(`IndexedDB request failed`))}),Iv=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){n(Error(`IndexedDB unavailable`));return}let r=indexedDB.open(e,Pv);r.onupgradeneeded=()=>{let e=r.result;e.objectStoreNames.contains(Nv)||e.createObjectStore(Nv,{autoIncrement:!0})},r.onsuccess=()=>t(r.result),r.onerror=()=>n(r.error??Error(`IndexedDB open failed`))}),Lv=(e=Mv)=>({async append(t,n){let r=await Iv(e);try{let e=r.transaction(Nv,`readwrite`).objectStore(Nv);await Fv(e.add(t));let i=await Fv(e.getAllKeys()),a=i.length-n;if(a>0)for(let t of i.slice(0,a))await Fv(e.delete(t))}finally{r.close()}},async read(){let t=await Iv(e);try{return await Fv(t.transaction(Nv,`readonly`).objectStore(Nv).getAll())}finally{t.close()}},async clear(){let t=await Iv(e);try{await Fv(t.transaction(Nv,`readwrite`).objectStore(Nv).clear())}finally{t.close()}}});function Rv(e={}){let t=e.driver??Lv(e.databaseName),n=e.limit??500;return{append:e=>t.append(e,n),read:()=>t.read(),clear:()=>t.clear()}}var zv=Qe(`OpenChamberMedia`);function Bv(e){let t=new TextEncoder().encode(e),n=``;for(let e of t)n+=String.fromCharCode(e);return btoa(n)}function Vv(){return We()&&$e!==void 0&&$e.isPluginAvailable(`OpenChamberMedia`)}function Hv(){return`1.19.2-beta.1`}function Uv(){if(typeof localStorage>`u`)return null;try{return Q_(localStorage.getItem(Z_))}catch{return null}}function Wv(e){if(!(typeof localStorage>`u`))try{localStorage.setItem(Z_,e?`true`:`false`)}catch{}}function Gv(e={}){return(e.hasIndexedDB??(()=>globalThis.indexedDB!==void 0))()?`indexeddb`:`memory`}var Kv;function qv(e=Hv()){return $_({version:e,preference:Uv()})}function Jv(e={}){return lv({sink:Gv()===`indexeddb`?(e.createIndexedDBSink??Rv)():(e.createMemorySink??cv)(),isEnabled:e.isEnabled??qv})}function Yv(){return Kv??=Jv(),Kv}function Xv(e){Yv().record(e)}function Zv(e){try{return qv()?Sv(e()):void 0}catch{return}}function Qv(e){try{Xv(wv(e))}catch{}}function $v(e){try{Xv(Av(e))}catch{}}function ey(e){try{Xv(jv(e))}catch{}}function ty(e){let t=dv(e.command);t&&(e.changed!==!1||e.command.type!==`sse-event`&&e.command.type!==`sse-event-batch`)&&Xv(sv({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:fv(e.command),sseType:pv(e.command),source:mv(e.command),error:e.error}))}async function ny(){let e=await Yv().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 ry(e,t=ev()){if(Vv())return(await zv.saveFile({dataBase64:Bv(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 iy(){let e=await ny(),t=ev();return{content:e,fileName:t,outcome:await ry(e,t),eventCount:tv(e)}}function ay(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 oy=2,sy=6e4,cy=6e4;function ly(e,t){return{transport:t?.transport??e.transport??(e.probe?.getTransport??i)(),generation:t?.generation??e.generation??(e.probe?.getGeneration??h)()}}function uy(e,t){let n=(t.probe?.getTransport??i)(),r=(t.probe?.getGeneration??h)();if(n!==e.transport||r!==e.generation)throw new Jh}function dy(e,t){return{directory:e.directory.trim(),sessionID:e.sessionID,transport:t.transport,generation:t.generation}}function fy(e,t){return Tg({transport:t.transport,generation:t.generation,directory:e.directory.trim(),sessionID:e.sessionID})}function py(e,t){return`${e.trim()}\n${t}`}function my(e){let t=e.client,n=e.repository,r=e.cacheBudget??n.getCacheBudget?.()??Lg({client:t,activeRegistry:Mg()}),a=Math.max(1,Math.floor(e.directoryConcurrency??oy)),o=e.fetchReconcile??l_,s=e.now??Date.now,c=Math.max(0,e.destructiveResetDedupeMs??sy),l=!1,u=0,d=new Map,f=new Map,p=new Map,m=new Map,g=new Set,_=new Map,v=new Set,y=new Map,b=(e,t)=>{g.add(py(e,t))},x=(e,t)=>{g.delete(py(e,t))},S=e=>{let t=f.get(e);t&&(t.abort(),f.delete(e)),d.delete(e)},C=e=>{u+=1;for(let e of[...f.keys()])S(e);p.clear(),m.clear(),y.clear()},w=(e,t)=>{let n=t===void 0?void 0:t.trim(),i=new Map;for(let t of r.listCanonical({transport:e.transport,generation:e.generation,directory:n}))t.active&&(n===void 0||t.scope.directory===n)&&i.set(py(t.scope.directory,t.scope.sessionID),{directory:t.scope.directory,sessionID:t.scope.sessionID});for(let t of r.activeRegistry.listRetained())t.transport===e.transport&&t.generation===e.generation&&(n===void 0||t.directory===n)&&i.set(py(t.directory,t.sessionID),{directory:t.directory,sessionID:t.sessionID});return Array.from(i.values())},T=(t,n)=>{let i=new Set(e.listDirectories().map(e=>e.trim()).filter(Boolean));for(let e of r.listCanonical({transport:t.transport,generation:t.generation}))i.add(e.scope.directory);for(let e of r.activeRegistry.listRetained())e.transport===t.transport&&e.generation===t.generation&&i.add(e.directory);for(let e of n)e.directory&&i.add(e.directory.trim());return i},E=()=>{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=py(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}]:[]},D=i=>{if(l)return;let a={transport:i.transport??ly(e).transport,generation:i.generation??ly(e).generation},o=s(),c=E(),u=T(a,c),d=r.listCanonical({transport:a.transport,generation:a.generation}),f=new Map;for(let e of d)f.set(py(e.scope.directory,e.scope.sessionID),{directory:e.scope.directory,sessionID:e.scope.sessionID});for(let e of r.activeRegistry.listRetained())e.transport===a.transport&&e.generation===a.generation&&f.set(py(e.directory,e.sessionID),{directory:e.directory,sessionID:e.sessionID});for(let e of c)f.set(py(e.directory,e.sessionID),{directory:e.directory,sessionID:e.sessionID});for(let t of u)for(let n of e.getBusyOrRetrySessionIDs(t))f.set(py(t,n),{directory:t,sessionID:n});for(let e of f.values()){let r=dy(e,a),s=n.getTranscript(r),c=H_({transport:a.transport,generation:a.generation,directory:e.directory,sessionID:e.sessionID,transcript:s,lastEventID:i.lastEventID,capturedAt:o});G_(t,c)}let p=new Set;for(let t of u){let n=ay({directory:t,activeScopes:w(a,t),viewedSessions:c,busyOrRetrySessionIDs:e.getBusyOrRetrySessionIDs(t)});for(let e of n)p.add(py(e.directory,e.sessionID))}for(let e of d){let t=py(e.scope.directory,e.scope.sessionID);!p.has(t)&&!e.active&&b(e.scope.directory,e.scope.sessionID)}},O=(e,t,r)=>{let i=Zv(()=>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=Zv(()=>n.getTranscript(e));i&&t&&Qv({trigger:`reconnect-compensation-reconcile`,sessionID:e.sessionID,directory:e.directory,transport:e.transport,generation:e.generation,before:i,after:t})}catch{}return o},k=e=>{let t=n.getTranscript(e),r=t.messageOrder[t.messageOrder.length-1];if(!r)return!1;let i=t.messagesByID[r];return!i||i.role!==`assistant`?!1:zs(i)},A=async(r,i,a)=>{if(uy({transport:i.transport,generation:i.generation},e),a!==u)throw new Jh;G_(t,U_(W_(t,i)??H_({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=Zv(()=>n.getTranscript(r));try{if(await n.destructiveReset(r),uy({transport:i.transport,generation:i.generation},e),a!==u)throw new Jh;K_(t,i),x(i.directory,i.sessionID),y.set(py(i.directory,i.sessionID),s());try{let e=Zv(()=>n.getTranscript(r));o&&e&&Qv({trigger:`reconnect-compensation-reset`,sessionID:r.sessionID,directory:r.directory,transport:i.transport,generation:i.generation,before:o,after:e})}catch{}}catch(e){throw G_(t,U_(W_(t,i)??H_({transport:i.transport,generation:i.generation,directory:i.directory,sessionID:i.sessionID,transcript:n.getTranscript(r),lastEventID:null}),{state:`reset-required`})),e}},j=async(r,i,a)=>{if(uy({transport:i.transport,generation:i.generation},e),a!==u)throw new Jh;G_(t,U_(W_(t,i)??H_({transport:i.transport,generation:i.generation,directory:i.directory,sessionID:i.sessionID,transcript:n.getTranscript(r),lastEventID:null}),{state:`reconciling`,continuation:null}));let o=Zv(()=>n.getTranscript(r));try{if(await n.ensureInitial(r),uy({transport:i.transport,generation:i.generation},e),a!==u)throw new Jh;K_(t,i),x(i.directory,i.sessionID);try{let e=Zv(()=>n.getTranscript(r));o&&e&&Qv({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 G_(t,U_(W_(t,i)??H_({transport:i.transport,generation:i.generation,directory:i.directory,sessionID:i.sessionID,transcript:n.getTranscript(r),lastEventID:null}),{state:`pending`})),e}},ee=async(r,i,a,l)=>{let d=dy(r,i),f=fy(r,i),p=kg({directory:f.directory,sessionID:f.sessionID,checkpoint:String(W_(t,f)?.capturedAt??s())},f.transport,f.generation);t.setQueryData(p,{status:`running`,startedAt:s()});try{if(uy(i,e),a!==u||l.aborted)throw new Jh;let m=W_(t,f);if(m||(m=H_({transport:i.transport,generation:i.generation,directory:r.directory,sessionID:r.sessionID,transcript:n.getTranscript(d),lastEventID:null,capturedAt:s()}),G_(t,m)),!m.anchorMessageID){if(await j(d,f,a),t.setQueryData(p,{status:`ensure`,finishedAt:s()}),e.confirmSessionStatus)try{await e.confirmSessionStatus(r,{tailOpen:k(d)})}catch{}return}m=U_(m,{state:`reconciling`}),G_(t,m);let h=m.anchorMessageID,g=0;for(;g<32;){if(g+=1,uy(i,e),a!==u||l.aborted)throw new Jh;let _=null,v=null,b=null,S=0;for(;;){if(S+=1,uy(i,e),a!==u||l.aborted)throw new Jh;let g=n.getTranscript(d).liveRevision;if(!_&&!h){await j(d,f,a),t.setQueryData(p,{status:`ensure`,finishedAt:s()});return}let x=await o({sessionID:r.sessionID,directory:r.directory.trim(),..._?{continuation:_}:{anchor:h},signal:l});if(uy(i,e),a!==u||l.aborted)throw new Jh;if(x.resetRequired){let n=y.get(py(r.directory,r.sessionID))??-1/0;if(s()-n<c?(await j(d,f,a),t.setQueryData(p,{status:`ensure`,finishedAt:s()})):(await A(d,f,a),t.setQueryData(p,{status:`reset`,finishedAt:s()})),e.confirmSessionStatus)try{await e.confirmSessionStatus(r,{tailOpen:k(d)})}catch{}return}if(S===1&&(v=x.capturedHeadMessageID),b=x.latestHeadMessageID??b,x.records.length>0&&O(d,x,g),m=U_(W_(t,f)??m,{state:`reconciling`,capturedHeadMessageID:v,latestHeadMessageID:b,continuation:x.continuation}),G_(t,m),x.complete||!x.continuation)break;_=x.continuation}let C=v,w=b;if(C&&w&&w!==C){h=C,m=U_(W_(t,f)??m,{state:`reconciling`,anchorMessageID:C,continuation:null,capturedHeadMessageID:null}),G_(t,m);continue}if(m=U_(W_(t,f)??m,{state:`complete`,continuation:null,capturedHeadMessageID:C,latestHeadMessageID:w}),G_(t,m),x(r.directory,r.sessionID),t.setQueryData(p,{status:`complete`,finishedAt:s()}),e.confirmSessionStatus)try{await e.confirmSessionStatus(r,{tailOpen:k(d)})}catch{}return}{let n=y.get(py(r.directory,r.sessionID))??-1/0;if(s()-n<c?(await j(d,f,a),t.setQueryData(p,{status:`ensure`,finishedAt:s()})):(await A(d,f,a),t.setQueryData(p,{status:`reset`,finishedAt:s()})),e.confirmSessionStatus)try{await e.confirmSessionStatus(r,{tailOpen:k(d)})}catch{}}}catch(n){if(n instanceof Jh||n instanceof Error&&n.name===`AbortError`){t.setQueryData(p,{status:`cancelled`,finishedAt:s()});return}throw e.onError?.(n,{directory:r.directory,sessionID:r.sessionID,phase:`reconcile`}),t.setQueryData(p,{status:`error`,finishedAt:s(),code:n instanceof Error?n.name:`error`}),n}},te=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=py(o.directory,o.sessionID);if(d.has(s)){m.set(n,(m.get(n)??1)-1),te(n);return}let c=ly(e),l=u,h=new AbortController;f.set(s,h);let g=(async()=>{Hg(n,o.sessionID);try{await ee(o,c,l,h.signal)}catch{}finally{Ug(n,o.sessionID),f.delete(s),d.delete(s),m.set(n,Math.max(0,(m.get(n)??1)-1)),te(n)}})();d.set(s,g)},M=e=>{let t=e.directory.trim(),n=py(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}),te(t))},ne=t=>{let n=E(),i=T(t,n);for(let a of i){let i=ay({directory:a,activeScopes:w(t,a),viewedSessions:n,busyOrRetrySessionIDs:e.getBusyOrRetrySessionIDs(a)});for(let e of i)M(e);for(let e of r.listCanonical({transport:t.transport,generation:t.generation,directory:a})){let t=py(e.scope.directory,e.scope.sessionID);i.some(e=>py(e.directory,e.sessionID)===t)||b(e.scope.directory,e.scope.sessionID)}}},re=t=>{if(l||!t.isReconnect)return;let n={transport:(e.probe?.getTransport??i)(),generation:t.runtimeGeneration},r=(e.probe?.getGeneration??h)(),a=(e.probe?.getTransport??i)();if(r!==n.generation||a!==n.transport){C(`generation_mismatch`);return}ne(n)},ie=t=>{if(l)return;let r=t.directory.trim(),i=ly(e,t),a=dy({directory:r,sessionID:t.sessionID},i),c=Eg(fy({directory:r,sessionID:t.sessionID},i)),u=_.get(c);if(u&&s()-u.checkedAt<cy||v.has(c)||d.has(py(r,t.sessionID))||!n.hasSession?.(a))return;let f=n.getTranscript(a),p=f.messageOrder[f.messageOrder.length-1];p&&(v.add(c),(async()=>{try{if(uy(i,e),l)return;let u=await o({sessionID:t.sessionID,directory:r,anchor:p});if(uy(i,e),l||(_.set(c,{checkedAt:s()}),u.resetRequired)||u.complete&&u.records.length===0||u.records.length===0)return;let d=n.getTranscript(a).liveRevision;O(a,u,d)}catch{}finally{v.delete(c)}})())};return{captureCheckpoints:D,onCompensation:re,ensureOnObserve:async r=>{if(l)return null;let i=r.directory.trim(),a=py(i,r.sessionID);if(!g.has(a))return ie(r),null;x(i,r.sessionID);let o=ly(e,r),s=dy({directory:i,sessionID:r.sessionID},o),c=fy({directory:i,sessionID:r.sessionID},o),u=W_(t,c);if(u&&u.state!==`complete`&&u.anchorMessageID){M({directory:i,sessionID:r.sessionID});let e=d.get(a);return e&&await e,n.getTranscript(s)}try{uy(o,e),Hg(i,r.sessionID);try{let e=await n.ensureInitial(s);return K_(t,c),e}finally{Ug(i,r.sessionID)}}catch(t){throw e.onError?.(t,{directory:i,sessionID:r.sessionID,phase:`ensure-on-observe`}),t}},cancelAll:C,getCheckpoint:n=>{let r=ly(e,n);return W_(t,fy({directory:n.directory,sessionID:n.sessionID},r))},isSessionInFlight:(e,t)=>d.has(py(e,t)),destroy:()=>{l=!0,C(`destroy`)}}}var hy=e=>e.trim(),gy=(e,t,n)=>{let r=(n.getTransport??i)(),a=(n.getGeneration??h)();if(r!==e||a!==t)throw Error(`session status runtime changed`)},_y=(e,t={})=>{let n=hy(e),r=t.transport??i(),a=t.loadSnapshot??((e,t)=>z.getSessionStatusForDirectory(e,t)),o=t.now??Date.now,s=t.runtimeProbe??{},c=(s.getGeneration??h)();return ot({queryKey:N.sessionStatus.snapshot(n,r),queryFn:async({signal:e})=>{gy(r,c,s);let t=o(),i=await a(n,e);if(gy(r,c,s),i===null)throw Error(`session status snapshot unavailable`);return{snapshot:i,requestedAt:t}},staleTime:0,gcTime:3e5,retry:!1})},vy=(e,t={})=>{let{client:n=L,...r}=t;return n.fetchQuery(_y(e,r))},yy=(e,t,n)=>{let r=(n.getTransport??i)(),a=(n.getGeneration??h)();if(r!==e||a!==t)throw Error(`session active runtime changed`)},by=(e={})=>{let t=e.transport??i(),n=e.loadActive??(e=>z.getSessionActive(e)),r=e.now??Date.now,a=e.runtimeProbe??{},o=(a.getGeneration??h)();return ot({queryKey:N.sessionActive.snapshot(t,o),queryFn:async({signal:e})=>{yy(t,o,a);let i=r(),s=await n(e);return yy(t,o,a),{result:s,requestedAt:i}},staleTime:0,gcTime:3e5,retry:!1})},xy=(e={})=>{let{client:t=L,...n}=e;return t.fetchQuery(by(n))},Sy;function Cy(e){Sy=e}function wy(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 Ty(e,t){return JSON.stringify(e)===JSON.stringify(t)}function Ey(e,t){return e.type===`retry`&&typeof e.next==`number`&&e.next>t}function Dy(e,t,n=Date.now()){return e.getState().session_status?.[t]?.type===`retry`&&(e.setState(e=>{let r={...e.session_error_at};return delete r[t],{session_status:{...e.session_status,[t]:{type:`busy`}},session_status_observed_at:{...e.session_status_observed_at,[t]:n},session_error_at:r}}),!0)}function Oy(e,t,n,r=Date.now(),i){if(!e||e.state===`unsupported`||e.state===`unknown`)return t?{snapshot:t,source:`legacy`}:{snapshot:null,source:`none`};let a=e.membership,o=t??{},s=new Set([...n,...Object.keys(o)]);if(s.size===0)return{snapshot:null,source:`none`};let c={};for(let e of s){let t=Object.prototype.hasOwnProperty.call(a,e),n=wy(o[e]);if(t){c[e]=n&&Ey(n,r)?n:{type:`busy`};continue}if(i?.tailOpenSessionIds?.has(e)){c[e]=n?.type===`retry`?n:{type:`busy`};continue}c[e]=(n?.type===`retry`||n?.type===`busy`||n?.type,{type:`idle`})}return{snapshot:c,source:`fused`}}function ky(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,l=()=>o??={...a},u=()=>s??={...e.session_status_observed_at},d=()=>c??={...e.session_error_at},f=t=>{r!==void 0&&e.session_status_observed_at[t]!==r&&(u()[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=wy(t[o]);if(n&&n.type!==`idle`){Ty(a[o],n)||(l()[o]=n,i=!0),(n.type===`busy`||n.type===`retry`)&&e.session_error_at?.[o]!==void 0&&(delete d()[o],i=!0),f(o);continue}let s=a[o];(!s||s.type!==`idle`)&&(l()[o]={type:`idle`},i=!0),f(o)}return!o&&!s&&!c?e:{...o?{session_status:o}:{},...s?{session_status_observed_at:s}:{},...c?{session_error_at:c}:{}}}),i}function Ay(e,t){return Array.from(new Set([...e,...Object.keys(t)]))}async function jy(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 vy(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 xy({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}=Oy(l,h,n,Date.now(),{tailOpenSessionIds:r.tailOpenSessionIds});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=Ay(n,_);if(x.length===0)return null;t.setState({session_status_snapshot_at:b}),ky(t,_,x,b);let S=r.onAuthoritativeGlobalStatusConverge??Sy;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 My({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:jy(e,n,[t],{isStale:s,loadSnapshot:c,loadActive:l,now:u,queryClient:d,runtimeProbe:f,transport:p,skipActive:m})}function Ny(e){return{transport:e.transport,generation:e.generation,directory:e.directory,sessionID:e.sessionID}}function Py(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 Fy(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 Iy(e,t={}){let n=new Map,r=new Map,i=e=>Promise.all([n.get(nc(e))??Promise.resolve(),r.get(ic(e))??Promise.resolve()]).then(()=>void 0),a=(e,t)=>{let r=nc(e),a=i(e).then(t,t);return n.set(r,a.then(()=>void 0,()=>void 0)),a},o=(e,t)=>{let n=ic(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??Cg)();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 Ly=new Map;function Ry(e,t){let n=Ly.get(e);if(n)return n;let r=t().finally(()=>{Ly.get(e)===r&&Ly.delete(e)});return Ly.set(e,r),r}var zy=e=>`message\n${e.runtimeKey}\n${e.directory}\n${e.sessionID}\n${e.messageID}`;function By(e){return Ry(zy(e),e.request)}function Vy(e,t){return`${e}\n${t}`}var Hy=new Map;function Uy(e){return Hy.get(e)}async function Wy(e){return By({runtimeKey:Vy(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 Hy.set(r.id,i),{info:sp(r),parts:i}}})}function Gy(e,t){let n=e.info;return n.role===t||n.clientRole===t}function Ky(e){let t=new Set(e.map(e=>e.info.id)),n=[],r=new Set;for(let i of e){if(!Gy(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 qy(e){if(e.complete){let t=e.records.some(e=>Gy(e,`user`));return{records:e.records,boundaryFound:t,partial:!1}}let t=Ky(e.records);if(t.length===0){let t=e.records.some(e=>Gy(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=>Gy(e,`user`));return{records:i,boundaryFound:a,partial:!a}}function Jy(e){return e.trim()}function Yy(e,t){let n=e.transport??t.transport??(t.probe?.getTransport??i)(),r=e.generation??t.generation??(t.probe?.getGeneration??h)();return{directory:Jy(e.directory),sessionID:e.sessionID,transport:n,generation:r}}function K(e){return`${e.transport}\n${e.generation}\n${e.directory}\n${e.sessionID}`}function Xy(e){return{sessionID:e,messageOrder:[],messagesByID:{},partsByMessageID:{},boundary:il,liveRevision:0}}function Zy(e,t){if(!e||e.pages.length===0)return Xy(t);let n=qh(e,t);return{sessionID:t,messageOrder:n.messageOrder,messagesByID:n.messagesByID,partsByMessageID:n.partsByMessageID,boundary:n.boundary,liveRevision:n.liveRevision}}function Qy(e){let t=e?.time?.created;return typeof t==`number`&&Number.isFinite(t)?t:void 0}function $y(e){return!!e?.some(e=>e.__openchamberOptimistic===!0)}function eb(e,t){if(t.records.length===0)return[];let n;for(let e of t.records){let t=Qy(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=Qy(e.messagesByID[t]);a===void 0||a<=n||$y(e.partsByMessageID[t])||i.push(t)}return i}function tb(e={}){let t=e.client??L,n=e.cacheBudget??Lg({client:t,activeRegistry:e.activeRegistry??Mg()}),r=n.activeRegistry,a=new Map,o=new Map,s=new Map,c=new Map,l=new Map,u=e.durableStore?Iy(e.durableStore,{getProtectScopes:()=>r.listRetained().map(Ny),getByteBudget:e.getDurableByteBudget}):void 0,d=new Map,f=new Map,p=new Map,m=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=Zy(w(e),t.sessionID);!Cl(r)&&!v.has(n)||(y.add(n),Xv(sv({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=l.get(e);return t||(t={messages:new Map,parts:new Map},l.set(e,t)),t},w=n=>{let r=Yy(n,e);return gg({directory:r.directory,sessionID:r.sessionID},t,r.transport,r.generation)},T=t=>{let n=Yy(t,e);return ig({directory:n.directory,sessionID:n.sessionID},n.transport,n.generation)},E=t=>{let n=Yy(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 r=e.probe??{getTransport:i,getGeneration:h},o=Yy(n,{...e,transport:void 0,generation:void 0,probe:r}),s=K(o),c=a.get(s);if(c)return c;if(!e.fetcher)throw Error(`Query transcript repository requires a fetcher for HTTP loads`);let l=mg({directory:o.directory,sessionID:o.sessionID,fetcher:e.fetcher,transport:o.transport,generation:o.generation,probe:r,client:t,initialLimit:e.initialLimit,historyLimit:e.historyLimit});return a.set(s,l),l},k=t=>{let n=K(Yy(t,e));l.delete(n);let r=o.get(n);if(!(!r||r.size===0))for(let e of r)e(t)},A=n=>{let r=K(Yy(n,e));if(s.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)});s.set(r,a)},j=e=>{let t=o.get(e);if(t&&t.size>0)return;let n=s.get(e);n&&(n(),s.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 p.keys())t.startsWith(e)&&p.delete(t);for(let t of m.keys())t.startsWith(e)&&m.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 p)if(e.startsWith(t)&&n.status===`loading`)return!0;for(let e of m.keys())if(e.startsWith(t))return!0;return!1},se=t=>{let n=Yy({directory:t.directory,sessionID:t.sessionID},e);return n.transport===t.transport&&n.generation===t.generation},ce=(e,t,n)=>{u&&u.persistSettled(Ny(e),t,n??[])},le=(e,t,n,r)=>{if(!u||S>0||!r.applied||!r.changed)return;let i=Ny(t);if(n.type===`remove-message`){u.removeMessage(i,n.messageID);return}if(n.type===`reset`){if(u.clearSession(i),n.page){let r=Zy(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=Zy(w(e),t.sessionID);for(let e of r){let n=Fy(e);if(n.action===`remove`){u.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=Zy(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,r)=>{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:i,getGeneration:h},s={directory:n.directory,sessionID:n.sessionID,limit:e.initialLimit??sh()};return Py(r?.fresh?await t.fetchQuery({...cg(s,a,n.transport,o,n.generation),staleTime:0}):await lg(s,a,t,n.transport,o,n.generation))},N=(e,t)=>{for(let n of t)lu(`${e.directory}\n${e.sessionID}\n${n}`,()=>P.materializeMessage(e,n),{priority:`background`}).catch(()=>void 0)},de=(e,t)=>{let r=K(t),i=f.get(r);if(i)return i;let a=(async()=>{let i=Date.now();d.set(r,{status:`loading`});try{let i=await ue(t);if(!se(t))return d.delete(r),P.getTranscript(e);P.apply(e,{type:`http-page`,purpose:`initial`,page:i}),Ym(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(!_l(P.getParts(e,i),P.getMessage(e,i)??o.info)){ne(t,i),p.set(M(t,i),{status:`ready`}),r+=1;continue}n.push(i)}}r>0&&k(e),N(e,n)}return d.delete(r),n.noteScopeObserved(E(e)),D(e),P.getTranscript(e)}catch(n){if(n instanceof Jh||!se(t))return d.delete(r),P.getTranscript(e);throw d.set(r,{status:`error`,error:n instanceof Error?n.message:String(n)}),Xv(sv({kind:`request-error`,sessionID:t.sessionID,directory:t.directory,transport:t.transport,generation:t.generation,source:`network`,purpose:`initial`,durationMs:Date.now()-i,transcript:Zy(w(e),t.sessionID),request:P.getRequestState?.(e),hydration:P.getHydrationState?.(e),error:n})),n}finally{f.delete(r)}})();return f.set(r,a),a},fe=(e,t)=>{let r=K(t),i=f.get(r);if(i)return i;let a=(async()=>{let i=Date.now(),a=P.getTranscript(e).liveRevision;d.set(r,{status:`loading`});try{let i=await ue(t,{fresh:!0});if(!se(t))return d.delete(r),P.getTranscript(e);let o=P.getTranscript(e).liveRevision;return o<a||tu(t.sessionID,t.directory)?(d.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}),Ym(t.directory,t.sessionID,{transport:t.transport,generation:t.generation}),d.delete(r),n.noteScopeObserved(E(e)),D(e),P.getTranscript(e))}catch(n){return d.delete(r),n instanceof Jh||!se(t)||Xv(sv({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:Zy(w(e),t.sessionID),request:P.getRequestState?.(e),hydration:P.getHydrationState?.(e),error:n})),P.getTranscript(e)}finally{f.delete(r)}})();return f.set(r,a),a},pe=t=>{let n=w(t);return!n||n.pages.length===0||_.has(K(Yy(t,e)))?!0:vh(n).kind===`unknown`},P={getTranscript(t){let n=Yy(t,e),r=K(n),i=Zy(w(t),n.sessionID);return ee(r,i)},getPagination(t){let n=Yy(t,e),r=K(n),i=P.getTranscript(t);return te(r,Dl(n.sessionID,i.boundary))},getRequestState(t){let n=Yy(t,e),r=d.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=Yy(t,e),r=K(n),i=P.getTranscript(t);Cl(i)&&v.set(r,!0);let a=v.has(r);return{sessionID:n.sessionID,p0Satisfied:a,phase:wl({p0Satisfied:a,prependActive:b.has(r),materializeActive:oe(n),earlierHistoryLoaded:bl(i)>1})}},hasSession(e){return w(e)!==void 0},getMessage(t,n){let r=K(Yy(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(Yy(t,e)),i=C(r),a=P.getTranscript(t).partsByMessageID[n]??nb,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=Yy(t,e),i=p.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)||gl(P.getParts(t,n))?{sessionID:r.sessionID,messageID:n,status:`idle`}:{sessionID:r.sessionID,messageID:n,status:`ready`}},async materializeMessage(t,n){let r=Yy(t,e),i=M(r,n),a=Zv(()=>P.getTranscript(t)),o=e=>{try{let t=Zv(e);if(!a||!t)return;Qv({trigger:`materialize`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,purpose:`exact`,before:a,after:t})}catch{}},s=m.get(i);if(s)return s.then(e=>o(()=>e)).catch(()=>void 0),s;let c=(async()=>{try{if(!P.getMessage(t,n))return p.set(i,{status:`idle`}),P.getTranscript(t);if(!gl(P.getParts(t,n))&&!g.get(K(r))?.has(n))return p.set(i,{status:`ready`}),P.getTranscript(t);p.set(i,{status:`loading`}),k(t);try{let a=await Wy({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??[]}]}),gl(P.getParts(t,n))?p.set(i,{status:`error`,error:`session.message failed: slim parts remain`}):p.set(i,{status:`ready`}),k(t),P.getTranscript(t)):(p.delete(i),P.getTranscript(t))}catch(e){if(!se(r))return p.delete(i),P.getTranscript(t);let n=e instanceof Error?e.message:`session.message failed`;return p.set(i,{status:`error`,error:n}),k(t),P.getTranscript(t)}}finally{ne(r,n)}})();return m.set(i,c),c.then(e=>o(()=>e)).catch(()=>void 0),c.finally(()=>{m.get(i)===c&&m.delete(i)}),c},apply(r,i){let a=Yy(r,e),o=T(r),s=(()=>{switch(i.type){case`http-page`:{let e=hg(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=hg(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=hg(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=hg(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}),hg(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=hg(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=hg(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 rb(t,o,a.sessionID,i,()=>k(r));case`remove-message`:{let e=hg(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&&(ty({directory:a.directory,sessionID:a.sessionID,transport:a.transport,generation:a.generation,command:i,transcript:Zy(w(r),a.sessionID),request:P.getRequestState?.(r),hydration:P.getHydrationState?.(r),error:s.error,changed:s.changed}),x(r,a)),s},subscribe(t,i){let a=K(Yy(t,e)),s=o.get(a);if(!s){s=new Set,o.set(a,s);let e=E(t);c.set(a,r.retain(e)),n.noteScopeObserved(e)}return s.add(i),A(t),()=>{let e=o.get(a);if(e){if(e.delete(i),e.size===0){let e=c.get(a);e&&(e(),c.delete(a))}j(a)}}},async ensureInitial(t){let i=Yy(t,e),a=K(i);if(u&&await u.wait(Ny(i)),w(t)===void 0&&e.durableStore)try{let n=await e.durableStore.readSession(Ny(i));if(se(i)&&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)_l(t.parts,t.info)&&e.add(t.info.id);e.size>0&&g.set(a,e),_.add(a)}finally{--S}}}catch(e){Xv(sv({kind:`request-error`,sessionID:i.sessionID,directory:i.directory,transport:i.transport,generation:i.generation,source:`durable-cache`,purpose:`durable-seed`,error:e}))}if(pe(t)&&w(t)!==void 0){let e=Date.now(),n=await de(t,i);return Xv(sv({kind:`ensure-initial`,sessionID:i.sessionID,directory:i.directory,transport:i.transport,generation:i.generation,source:`network`,durationMs:Date.now()-e,transcript:n,request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t)})),x(t,i),n}let o=w(t);if(o&&o.pages.length>0&&!pe(t)&&e.fetcher&&!r.isRetained(E(t))){let e=Date.now(),n=await fe(t,i);return Xv(sv({kind:`ensure-initial`,sessionID:i.sessionID,directory:i.directory,transport:i.transport,generation:i.generation,source:`network`,durationMs:Date.now()-e,transcript:n,request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t)})),x(t,i),n}let s=O(t),c=Date.now(),l=w(t)!==void 0;d.delete(a);try{await s.ensureInitial()}catch(e){throw Xv(sv({kind:`request-error`,sessionID:i.sessionID,directory:i.directory,transport:i.transport,generation:i.generation,source:l?`query-cache`:`network`,purpose:`initial`,durationMs:Date.now()-c,transcript:Zy(w(t),i.sessionID),request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t),error:e})),e}d.delete(a),l||Ym(i.directory,i.sessionID,{transport:i.transport,generation:i.generation}),n.noteScopeObserved(E(t)),D(t);let f=P.getTranscript(t);return Xv(sv({kind:`ensure-initial`,sessionID:i.sessionID,directory:i.directory,transport:i.transport,generation:i.generation,source:l?`query-cache`:`network`,durationMs:Date.now()-c,transcript:f,request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t)})),x(t,i),f},async fetchPreviousPage(t){if(pe(t)&&await P.ensureInitial(t),vh(w(t)).kind!==`has-more`)return P.getTranscript(t);let n=Yy(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 Xv(sv({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 Xv(sv({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=Yy(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=Yy(t,e),i=Zv(()=>P.getTranscript(t)),a=P.getTranscript(t).liveRevision,o=await e.fetcher({directory:r.directory,sessionID:r.sessionID,limit:e.initialLimit??sh(),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=eb(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=Zv(()=>c);i&&e&&Qv({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=Zv(()=>P.getTranscript(t)),i=E(t);return u&&await u.clearSession(Ny(Yy(t,e))),n.destructiveReset(i,async()=>{let n=Yy(t,e),i=K(n),o=a.get(i);if(o&&(o.destroy(),a.delete(i)),l.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=Zv(()=>s);r&&e&&Qv({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(Yy(t,e)),i=a.get(r);i&&(i.destroy(),a.delete(r)),l.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),l.delete(n);let e=c.get(n);e&&(e(),c.delete(n));let t=s.get(n);t&&(t(),s.delete(n)),o.delete(n)}ie(`${e}\n${t}\n`),re(`${e}\n${t}\n`),ae(`${e}\n${t}\n`),n.purgeGeneration(e,t),u&&u.clearGeneration({transport:e,generation:t})},destroy(){for(let e of a.values())e.destroy();a.clear();for(let e of s.values())e();s.clear();for(let e of c.values())e();c.clear(),o.clear(),l.clear(),d.clear(),f.clear(),p.clear(),m.clear(),g.clear(),v.clear(),y.clear(),b.clear(),n.dispose()}};return P}var nb=Object.freeze([]);function rb(e,t,n,r,i){if(r.records.length===0)return{applied:!1,changed:!1};let a=hg(e,t,n,{type:`durable-seed`,records:r.records,skipPartTypes:r.skipPartTypes,merge:r.merge});return a.result.changed&&i(),a.result}var ib=`/api/openchamber/transcript-cache`,ab=new Set([`unchanged`,`not-settled`,`slim-downgrade`]),ob=e=>typeof e==`object`&&!!e&&!Array.isArray(e),sb=(e,t)=>{if(typeof e!=`string`||e.length===0)throw Error(`Invalid transcript cache ${t}`);return e},cb=(e,t)=>{if(typeof e==`number`&&Number.isInteger(e))return e;throw Error(`Invalid transcript cache ${t}`)},lb=e=>{if(!ob(e))throw Error(`Invalid transcript cache scope`);return{transport:sb(e.transport,`scope`),generation:cb(e.generation,`scope`),directory:sb(e.directory,`scope`),sessionID:sb(e.sessionID,`scope`)}},ub=(e,t)=>{if(e===`slim`||e===`full`)return e;throw Error(`Invalid transcript cache ${t}`)},db=e=>{if(!ob(e)||!ob(e.info)||!Array.isArray(e.parts)||!Array.isArray(e.partCompleteness)||!ob(e.sortKey))throw Error(`Invalid transcript cache record`);return{scope:lb(e.scope),messageID:sb(e.messageID,`message ID`),info:e.info,parts:e.parts,partCompleteness:e.partCompleteness.map(e=>ub(e,`part completeness`)),completeness:ub(e.completeness,`completeness`),contentHash:sb(e.contentHash,`content hash`),byteSize:cb(e.byteSize,`byte size`),lastAccessedAt:cb(e.lastAccessedAt,`lastAccessedAt`),sortKey:{created:cb(e.sortKey.created,`sort key`),messageID:sb(e.sortKey.messageID,`sort key`)}}},fb=(e,t)=>{if(!ob(e)||!Array.isArray(e.records))throw Error(`Invalid transcript cache session`);let n=e.records.map(db);return{scope:e.scope===void 0?_c(t):lb(e.scope),records:n,byteSize:typeof e.byteSize==`number`&&Number.isFinite(e.byteSize)?e.byteSize:n.reduce((e,t)=>e+t.byteSize,0)}},pb=e=>{if(!ob(e))throw Error(`Invalid transcript cache upsert`);if(e.status===`written`)return{status:`written`,record:db(e.record)};if(e.status===`skipped`){if(typeof e.reason!=`string`||!ab.has(e.reason))throw Error(`Invalid transcript cache upsert`);return{status:`skipped`,reason:e.reason,...e.record===void 0?{}:{record:db(e.record)}}}throw Error(`Invalid transcript cache upsert`)},mb=e=>{if(!ob(e))throw Error(`Invalid transcript cache evict`);return{evicted:cb(e.evicted,`evict`),freedBytes:cb(e.freedBytes,`evict`),remainingBytes:cb(e.remainingBytes,`evict`)}},hb=e=>({scope:_c(e),records:[],byteSize:0}),gb=(e,t)=>ob(e)&&typeof e.error==`string`&&e.error.length>0?e.error:t,_b=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`)}},vb=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 _b(r)};let i=await _b(r).catch(()=>void 0);throw Error(gb(i,`Transcript cache request failed (${r.status})`))},yb=e=>({transport:e.transport,generation:String(e.generation),directory:e.directory,sessionID:e.sessionID}),bb=(e,t)=>({method:e,headers:{Accept:`application/json`,"Content-Type":`application/json`},body:JSON.stringify(t)});function xb(e={}){let t=e.fetch??F;return{async readSession(e){let n=await vb(t,`${ib}/session`,{method:`GET`,query:yb(e)});return n.kind===`disabled`||n.kind===`not-found`?hb(e):fb(n.payload,e)},async readMessage(e,n){let r=await vb(t,`${ib}/message`,{method:`GET`,query:{...yb(e),messageID:n}});if(r.kind!==`disabled`&&r.kind!==`not-found`){if(!ob(r.payload))throw Error(`Invalid transcript cache record`);return db(r.payload.record??r.payload)}},async upsertSettled(e,n,r){let i=await vb(t,`${ib}/message`,bb(`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 pb(i.payload)},async removeMessage(e,n){let r=await vb(t,`${ib}/message`,bb(`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 vb(t,`${ib}/session`,bb(`DELETE`,{scope:e}));if(n.kind!==`disabled`&&n.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async clearGeneration(e){let n=await vb(t,`${ib}/generation`,bb(`DELETE`,e));if(n.kind!==`disabled`&&n.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async evictToBytes(e,n){let r=await vb(t,`${ib}/evict`,bb(`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 mb(r.payload)},async clearAll(){let e=await vb(t,`${ib}/all`,{method:`DELETE`,headers:{Accept:`application/json`}});if(e.kind!==`disabled`&&e.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async destroy(){}}}var Sb=`openchamber-transcript-durable`,Cb=1,wb=`transcriptIndex`,Tb=`transcriptContent`,Eb=class extends Error{code;constructor(e){super(e),this.code=e}},Db=e=>({id:rc(e.scope,e.messageID),scope:_c(e.scope),scopeKey:nc(e.scope),generationKey:ic(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}),Ob=(e,t)=>({scope:_c(e.scope),messageID:e.messageID,info:gc(t.info),parts:gc(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}}),kb=async(e,t)=>{let n=await e.getIndex(t),r=await e.getContent(t);if(n&&r)return Ob(n,r);n&&await e.deleteIndex(t),r&&await e.deleteContent(t)},Ab=async(e,t)=>{await e.deleteIndex(t),await e.deleteContent(t)},jb=(e,t)=>new Promise((n,r)=>{e.onsuccess=()=>n(e.result),e.onerror=()=>r(e.error??t.error??Error(`IndexedDB request failed`))}),Mb=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){n(new Eb(`database-unavailable`));return}let r=indexedDB.open(e,Cb),i=!1,a=()=>{i||(i=!0,n(new Eb(`database-unavailable`)))};r.onupgradeneeded=()=>{let e=r.result;if(!e.objectStoreNames.contains(wb)){let t=e.createObjectStore(wb,{keyPath:`id`});t.createIndex(`scopeKey`,`scopeKey`,{unique:!1}),t.createIndex(`generationKey`,`generationKey`,{unique:!1}),t.createIndex(`lastAccessedAt`,`lastAccessedAt`,{unique:!1})}e.objectStoreNames.contains(Tb)||e.createObjectStore(Tb,{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}),Nb=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){t();return}let r=indexedDB.deleteDatabase(e);r.onsuccess=()=>t(),r.onerror=()=>n(r.error??new Eb(`database-unavailable`)),r.onblocked=()=>void 0}),Pb=(e=Sb)=>({transaction:async t=>{let n=await Mb(e),r=n.transaction([wb,Tb],`readwrite`),i=r.objectStore(wb),a=r.objectStore(Tb),o=e=>jb(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:()=>Nb(e)});function Fb(e,t={}){let n=vc(t.now??Date.now),r=async(e,t)=>(t.lastAccessedAt=n(),await e.putIndex(Db(t)),yc(t));return{async readSession(t){return e.transaction(async e=>{let r=await e.getIndexesByScope(nc(t)),i=[];for(let t of r){let r=await e.getContent(t.id);if(!r){await e.deleteIndex(t.id);continue}let a=Ob(t,r);a.lastAccessedAt=n(),await e.putIndex(Db(a)),i.push(a)}return bc(t,i)})},async readMessage(t,n){return e.transaction(async e=>{let i=await kb(e,rc(t,n));if(i)return r(e,i)})},async upsertSettled(t,i,a){let o=xc({info:i,incomingCompleteness:lc(a)});if(o.status===`skipped`&&o.reason===`not-settled`)return{status:`skipped`,reason:`not-settled`};let s=gc(a.slice()),c=lc(s),l=await fc(i,s),u=rc(t,i.id);return e.transaction(async e=>{let a=await kb(e,u),o=xc({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:yc(a)}:o.reason===`unchanged`&&a?{status:`skipped`,reason:`unchanged`,record:await r(e,a)}:{status:`skipped`,reason:o.reason};let d={scope:_c(t),messageID:i.id,info:gc(i),parts:s,partCompleteness:s.map(cc),completeness:c,contentHash:l.hash,byteSize:l.byteSize,lastAccessedAt:n(),sortKey:oc(i)};return await e.putIndex(Db(d)),await e.putContent({id:u,info:gc(i),parts:s}),{status:`written`,record:yc(d)}})},async removeMessage(t,n){await e.transaction(e=>Ab(e,rc(t,n)))},async clearSession(t){await e.transaction(async e=>{let n=await e.getIndexesByScope(nc(t));for(let t of n)await Ab(e,t.id)})},async clearGeneration(t){await e.transaction(async e=>{let n=await e.getIndexesByGeneration(ic(t));for(let t of n)await Ab(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(nc)),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?ac(e.sortKey,t.sortKey):e.lastAccessedAt-t.lastAccessedAt),c=0,l=0;for(let t of s){if(o<=r)break;await Ab(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 Ib(e={}){return Fb(e.driver??Pb(e.databaseName),e)}function Lb(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 Rb=async e=>{let t=(await Promise.allSettled(e)).find(e=>e.status===`rejected`);if(t)throw t.reason};function zb(e={}){let t,n,r=()=>(t??=(e.createHttpStore??xb)(),t),i=()=>(n??=(e.createIndexedDBStore??Ib)(),n),a=()=>Lb(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=>Rb([r().clearGeneration(e),i().clearGeneration(e)]),evictToBytes:(e,t)=>a().evictToBytes(e,t),clearAll:()=>a().clearAll(),destroy:async()=>{}}}async function Bb(e={}){await zb(e).clearAll()}var Vb=(e,t)=>e<t?-1:+(e>t);function Hb(e){return e.filter(e=>!!e?.id).sort((e,t)=>Vb(e.id,t.id))}async function Ub(e){let t=e.before?`prepend`:e.purpose??`initial`,n=t===`prepend`||t===`recovery`||t===`materialize`?t:`initial`,r=await $g({sessionID:e.sessionID,directory:e.directory,purpose:n,...e.before?{before:e.before}:{},signal:e.signal}),a=r.records.map(e=>({info:sp(e.info),parts:Hb(e.parts??[])}));if(!e.before&&!r.complete&&Ky(a).length>0){let t=z.getScopedSdkClient(e.directory);a=(await qy({records:a,complete:r.complete,requestMessage:async n=>{let r=await Wy({transport:i(),generation:h(),directory:e.directory,sessionID:e.sessionID,messageID:n,request:()=>t.session.message({sessionID:e.sessionID,messageID:n,directory:e.directory})});return{info:r.info,parts:Hb(r.parts??[])}}})).records.map(e=>({info:e.info,parts:Hb(e.parts??[])}))}return{records:a,cursor:r.cursor??void 0,complete:r.complete,turnCount:r.turnCount,requestedTurnLimit:e.limit}}function Wb(e){let t=e.client??L,n=Mg(),r=Lg({client:t,activeRegistry:n}),a=tb({client:t,cacheBudget:r,activeRegistry:n,probe:{getTransport:i,getGeneration:h},fetcher:e=>Ub({directory:e.directory,sessionID:e.sessionID,limit:e.limit,before:e.before,signal:e.signal}),initialLimit:sh(),historyLimit:ch(),durableStore:e.durableStore??zb()}),o=my({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:r,probe:{getTransport:i,getGeneration:h},confirmSessionStatus:async(t,n)=>{let r=e.childStores.getChild(t.directory);if(!r)return;let i=r.getState().session_status?.[t.sessionID];!n.tailOpen&&i?.type!==`busy`&&i?.type!==`retry`||await jy(t.directory,r,[t.sessionID],n.tailOpen?{tailOpenSessionIds:new Set([t.sessionID])}:{})}});return _u(a),Au(o),{repository:a,destroy:()=>{o.cancelAll(`dispose`),Au(null),a.destroy(),vu()}}}function Gb(e){return yu().apply(W(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 Kb=new Map;function qb(e,t,n,r){return`${n}\0${r}\0${t??``}\0${e}`}async function Jb(e,t,n,r={}){let a=r.getTransportIdentity??i,o=r.getGeneration??h,s=a(),c=o(),l=qb(e,t,s,c),u=()=>a()===s&&o()===c,d=Kb.get(l)??Promise.resolve(),f,p=new Promise(e=>{f=e}),m=d.catch(()=>void 0).then(()=>p);Kb.set(l,m);try{if(await d.catch(()=>void 0),!u())throw Error(`Session history mutation aborted because the runtime changed`);return await n({transportIdentity:s,generation:c,isCurrent:u})}finally{f(),Kb.get(l)===m&&Kb.delete(l)}}var Yb=new Set,Xb=new Set,Zb=new Set,Qb=new Set,$b={onDeleteRequest(e){return Yb.add(e),()=>{Yb.delete(e)}},requestDelete(e){!e.sessions.length&&e.mode!==`worktree`||Yb.forEach(t=>t(e))},onCreateRequest(e){return Xb.add(e),()=>{Xb.delete(e)}},requestCreate(e){let t=e??{};Xb.forEach(e=>e(t))},onDirectoryRequest(e){return Zb.add(e),()=>{Zb.delete(e)}},requestDirectoryDialog(){Zb.forEach(e=>e())},onGitRefreshHint(e){return Qb.add(e),()=>{Qb.delete(e)}},requestGitRefresh(e){e.directory.trim()&&Qb.forEach(t=>t(e))}},ex=50,tx=e=>{let t=Object.keys(e);if(t.length<=ex)return e;let n=t.map(t=>[t,e[t].touchedAt]).sort((e,t)=>e[1]-t[1]).slice(0,t.length-ex).map(([e])=>e),r={...e};for(let e of n)delete r[e];return r},nx=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:tx(r)})})},getSessionTodos:e=>{if(e)return t().sessions[e]?.todos}}),{name:`openchamber-session-todos`,version:1,storage:g(),partialize:e=>({sessions:e.sessions})}),{name:`TodosPersistStore`})),rx=new Set([`todowrite`,`todoread`]),ix=new Set([`error`,`aborted`,`failed`,`cancelled`,`canceled`,`timeout`]),ax=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),ox=(e,t)=>{nx.getState().setSessionTodos(e,t)},sx=e=>{if(e.type!==`tool`)return``;let t=e.tool;return typeof t==`string`?t.trim().toLowerCase():``},cx=e=>{let t=e.state;return typeof t?.status==`string`?t.status.trim().toLowerCase():void 0},lx=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},ux=e=>{if(!Array.isArray(e))return[];let t=[];for(let n of e){let e=lx(n);e&&t.push(e)}return t},dx=e=>{try{let t=JSON.parse(e);if(Array.isArray(t))return ux(t);if(t&&typeof t==`object`)return ux(t.todos)}catch{}return[]},fx=e=>{if(!rx.has(sx(e)))return[];let t=cx(e);if(t&&ix.has(t))return[];let n=e.state,r=ux(n?.input?.todos);if(r.length>0)return r;let i=n?.output;if(Array.isArray(i)){let e=ux(i);if(e.length>0)return e}if(i&&typeof i==`object`){let e=ux(i.todos);if(e.length>0)return e}return typeof i==`string`&&i.trim().length>0?dx(i):[]};function px(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=fx(r[e]);if(t.length>0)return t}}return[]}function mx(e){if(!e.sessionID||e.isStale?.()||ax(e.store.getState().todo,e.sessionID))return!1;let t=px(e.transcript);return t.length===0||e.isStale?.()||ax(e.store.getState().todo,e.sessionID)?!1:(e.store.setState(n=>({todo:{...n.todo,[e.sessionID]:t}})),e.persist?.(e.sessionID,t),!0)}function hx(e){if(!e.sessionID||!e.directory||e.isStale?.())return!1;let t=e.transcript??H()?.getTranscript(W(e.directory,e.sessionID));return t?mx({sessionID:e.sessionID,store:e.store,transcript:t,persist:ox,isStale:e.isStale}):!1}var gx=t({COMBINED_SEND_CONFIRMATION_RECOVERY:()=>vC,COMBINED_SEND_PRESENCE_GRACE_MS:()=>_C,SESSION_DELETE_UNDO_MS:()=>HS,abortBusySessionForMessageEdit:()=>MC,abortCurrentOperation:()=>CC,archiveSession:()=>QS,beginOptimisticSend:()=>cC,cancelScheduledSessionDeletes:()=>ZS,classifySendFailure:()=>fS,combinedSendConfirmationOptions:()=>yC,commitMessageEdit:()=>PC,createSession:()=>IS,deleteSession:()=>YS,dirStoreForDirectory:()=>Qx,dismissOpenQuestionsForSession:()=>DC,ensureSentUserMessagePresence:()=>SC,fetchMessagesForSession:()=>BC,fetchRecentSendConfirmationRecords:()=>hC,forkSession:()=>RC,getSendFailureKind:()=>uS,isQuestionRequestNotFoundError:()=>NS,materializeConfirmedSendRecords:()=>gC,mirrorSessionIntoLiveStores:()=>aS,optimisticInsertUserMessage:()=>pC,optimisticSend:()=>fC,patchSessionMetadata:()=>LS,refetchSessionMessages:()=>IC,rejectQuestion:()=>EC,releaseUnconfirmedQueueSend:()=>Yx,requestSessionSmartTitle:()=>tC,resolveForkMessageId:()=>Nx,respondToPermission:()=>wC,respondToQuestion:()=>TC,revertToMessage:()=>OC,rollbackOptimisticSend:()=>uC,scheduleSessionDeletes:()=>XS,setActionRefs:()=>qx,setOptimisticRefs:()=>Jx,settleOptimisticSend:()=>dC,shareSession:()=>nC,shouldSuppressForkCopyEvent:()=>Fx,stageMessageEdit:()=>AC,trackForkCopySessionCreated:()=>Tx,unarchiveSession:()=>$S,unrevertSession:()=>LC,unshareSession:()=>rC,updateSessionTitle:()=>eC,waitForConnectionOrThrow:()=>gS,waitForSessionIdleForMessageEdit:()=>NC}),_x=2,vx=150,yx=new Set([`patch`,`step-start`,`step-finish`]),bx=3,xx=150,Sx=null,Cx=new Map,wx=3e4;function Tx(e,t){let n=t?.id;!Sx||Sx.runtimeKey!==c()||Sx.directory!==e||!n||t?.title!==Sx.expectedTargetTitle||n===Sx.sourceSessionID||Sx.targetSessionID||(Sx.targetSessionID=n)}function Ex(e){let t=e.match(/^(.+) \(fork #(\d+)\)$/);return t?`${t[1]} (fork #${Number.parseInt(t[2],10)+1})`:`${e} (fork #1)`}async function Dx(e,t){$.setState(n=>n.forkTransition?.operationId===e?{forkTransition:{...n.forkTransition,stage:t}}:n),await new Promise(e=>setTimeout(e,0))}function Ox(e,t){$.setState(n=>n.forkTransition?.operationId===e?{forkTransition:{...n.forkTransition,targetSessionId:t}}:n)}function kx(e){return e?.type===`busy`||e?.type===`retry`}function Ax(e){for(let t=e.length-1;t>=0;--t)if(e[t]?.role===`user`)return t;return-1}function jx(e){let t=e.at(-1);return t?.role===`assistant`&&t.time.completed==null}function Mx(e,t){return kx(e)||e==null&&jx(t)}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(!Mx(n,t))return;let r=Ax(t);if(r!==-1)return t[r+1]?.id}async function Px(e,t){let n=Fp(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 Fx(e,t,n){if(Sx&&Sx.runtimeKey===c()&&Sx.directory===e&&t&&t===Sx.targetSessionID)return!0;if(!t||!n)return!1;let r=`${c()}:${e}:${t}`,i=Cx.get(r);return i?i.expiresAt<=Date.now()?(Cx.delete(r),!1):n<=i.messageID:!1}var Ix=null,Lx=null,Rx=()=>``,zx=new Map,Bx=null,Vx=null,Hx=null,Ux=e=>new Promise(t=>setTimeout(t,e));function Wx(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 Gx(e,t){if(!e.error)return e.data;let n=e.response?.status,r=Error(`${t} failed${n?` (${n})`:``}: ${Wx(e.error)}`);throw n!==void 0&&(r.status=n),r}function Kx(e,t){let n=Gx(e,t);if(n==null)throw Error(`${t} failed: empty response`);return n}function qx(e,t,n){if(Ix=e,Lx=t,Rx=n,zx.size>0){let e=[...zx.values()];zx.clear(),queueMicrotask(()=>{for(let t of e)BC(t.sessionID,t.directory)})}}function Jx(e,t,n){Bx=e,Vx=t,Hx=n??null}function Yx(e){let t=e.directory??null;Vx?.({sessionID:e.sessionID,directory:t,messageID:e.messageID})}function Xx(){if(!Ix)throw Error(`SDK not initialized — is SyncProvider mounted?`);return Ix}function Zx(){if(!Lx)throw Error(`Child stores not initialized`);let e=Rx();if(!e)throw Error(`No current directory`);return Lx.ensureChild(e)}function Qx(e,t){if(!Lx)throw Error(`Child stores not initialized`);if(!e)throw Error(`No directory`);return Lx.ensureChild(e,t)}function $x(e,t){let n=t??SS(e);return n?{store:Qx(n),directory:n}:{store:Zx(),directory:oS()}}function eS(e,t){let{store:n,directory:r}=$x(e,t??void 0),i=r??oS()??``;return{repository:H()??U(i,n),directory:i,store:n}}function tS(e,t){let{repository:n,directory:r,store:i}=eS(e,t);return{repository:n,directory:r,store:i,data:n.getTranscript(W(r,e))}}function nS(e,t){return Gu(tS(e,t).data)}function rS(e,t){return tS(e,t).data.messageOrder.length}function iS(e,t){let n=Lx;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]=nD(e,n[r]),t.setState({session:i}),!0}return!1}function aS(e,t){t&&iS(e,t)||iS(e)}function oS(){return Rx()||void 0}function sS(){let{hasEverConnected:e,lastDisconnectReason:t}=Hf.getState(),n=t?` (${t})`:e?``:` (never connected)`;return Error(`Connection lost${n}. Please wait for reconnection.`)}function cS(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 lS=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 uS(e){return e instanceof lS?e.kind:null}function dS(e){let t=cS(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 fS(e,t){return t?dS(e)||cS(e)===null?`ambiguous-dispatched`:`definitive-rejection`:`pre-dispatch`}var pS=2e3,mS=5e3,hS=3e4;async function gS(){let e=Um();e&&Hm(`send_stream_stale`);let t=Date.now()+(e?mS:pS);for(;Date.now()<t;){if(Hf.getState().isConnected&&!Um()||d()&&!Um())return;let e=t-Date.now();if(e<=0)break;if(await Hf.getState().probeConnection({timeoutMs:Math.min(500,e)})&&!Um())return;let n=Math.min(100,t-Date.now());n>0&&await new Promise(e=>setTimeout(e,n))}throw sS()}function _S(e){return new Promise((t,n)=>{let r=setTimeout(()=>{Hm(`send_timeout`),n(new DOMException(`Send timed out`,`TimeoutError`))},hS);e.then(e=>{clearTimeout(r),t(e)},e=>{clearTimeout(r),n(e)})})}function vS(e){let t=Y.getState();return[...t.activeSessions,...t.archivedSessions].find(t=>t.id===e)??null}function yS(e){e&&Y.getState().upsertSession(e)}function bS(e,t){let n=ap(t),r=[...e.getState().session],i=ls.search(r,n.id,e=>e.id);if(i.found){let t=nD(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 xS(e,t,n){let r=t.getState().session.find(t=>t.id===e);if(r)return r;let i=vS(e);if(i)return bS(t,i);try{return bS(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 SS(e){return CS(e)||$.getState().getDirectoryForSession(e)||oS()}function CS(e){let t=Lx;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 wS(e){let t=e?$.getState().getDirectoryForSession(e):null;return t?z.getScopedSdkClient(t):Xx()}function TS(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 ES=()=>new Map(Array.from(jd(),([e,t])=>[e,t.title||e]));function DS(e){return!(e.type!==`file`||$p(e))}function OS(e){return DS(e)?e.slim===!0||typeof e.url!=`string`||e.url.length===0:!1}function kS(e){return e.some(OS)}async function AS(e){let t=[...e.parts];if(!kS(t))return t;let n=h(),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()||h()!==n)throw Error(`Session history mutation aborted because the runtime changed`);let{repository:i,directory:a}=eS(e.sessionID,r);if(t=[...i.getParts(W(a,e.sessionID),e.messageID)],kS(t))throw Error(`composer-restoration-incomplete-attachment`);return t}async function jS(e){if(kS(e.parts))throw Error(`composer-restoration-incomplete-attachment`);let t=await wm(e.parts,{sessionTitles:ES(),directory:e.directory}),n=Or.getState(),r=n.getDraft(e.key);return{payload:t,commit:await km({key:e.key,expectedRevision:r?.revision??`absent`,payload:t,runtime:n.captureDraftRuntime()})}}function MS(e,t,n){let r=Lx;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 NS(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 PS(e,t){let n=Lx;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=MS(e,t,n);return r?z.getScopedSdkClient(r):wS(t)}async function IS(e,t,n,r){try{let i=await z.createSession({title:e,parentID:n??void 0,metadata:r},t??oS()),a=i.directory??null;return a&&Cd(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 LS(e,t,n){let r=t??SS(e),i=n(Fp(await z.getSession(e,r))),a=await z.updateSession(e,{metadata:i},r);Y.getState().upsertSession(a);let o=a.directory??r;return o&&Cd(a.id,o),a}async function RS(e,t){let n;try{n=await z.getSession(e,t??SS(e))}catch{return}if(!zp(n))return;let r=Rp(n);if(r)try{await LS(r,t??SS(r),t=>Hp(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 zS(e,t){if(!Lx)return[];let n=[],r=new Set,i=[];if(t){let e=Lx.children.get(t);e&&(i.push([t,e]),r.add(t))}for(let e of Lx.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 BS(e){if(Lx)for(let t of e){let e=Lx.children.get(t.directory);e&&e.setState({session:t.sessions})}}function VS(e){$.getState().setWorktreeMetadata(e,null)}var HS=1e4,US=new Map,WS=0;function GS(e){if(e.time?.archived===void 0)return e;let t={...e.time};return delete t.archived,{...e,time:t}}function KS(e){Y.getState().clearSessionsPendingDeletion([e.sessionId]),BS(e.listSnapshots),yS(e.globalSnapshot),e.wasCurrent&&$.getState().setCurrentSession(e.sessionId,e.directory??null)}function qS(e,t){let n=t??SS(e);Y.getState().markSessionsPendingDeletion([e]);let r=zS(e,n),i=vS(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 JS(e,t){try{if(await RS(e,t),await z.deleteSession(e,t)!==!0)throw Error(`session.delete failed: server did not confirm deletion`);return zS(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&&(zS(e,t),Y.getState().removeSessions([e]),VS(e),Y.getState().clearSessionsPendingDeletion([e]),!0)}}async function YS(e,t){let n=qS(e);return await JS(e,n.directory)?!0:(KS(n),!1)}function XS(e,t){let n=Array.from(new Set(e.filter(Boolean)));if(n.length===0)return{batchId:``,scheduledIds:[]};let r=n.map(e=>qS(e)),i=`session-delete-${Date.now()}-${WS+=1}`,a=t?.delayMs??1e4,o=setTimeout(()=>{(async()=>{let e=US.get(i);if(!e)return;US.delete(i);let t=[],n=[];for(let r of e.entries)await JS(r.sessionId,r.directory)?t.push(r.sessionId):(n.push(r.sessionId),KS(r));e.onSettled?.({deletedIds:t,failedIds:n})})()},a);return US.set(i,{entries:r,timer:o,onSettled:t?.onSettled}),{batchId:i,scheduledIds:n}}function ZS(e){if(!e)return!1;let t=US.get(e);if(!t)return!1;clearTimeout(t.timer),US.delete(e);for(let e of[...t.entries].reverse())KS(e);return!0}async function QS(e){let t=SS(e),n=zS(e,t),r=vS(e),i=Date.now();Y.getState().archiveSessions([e],i);let a=$.getState();a.currentSessionId===e&&a.setCurrentSession(null);try{await RS(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),BS(n),yS(r),!1}}async function $S(e){let t=SS(e),n=vS(e),r=n?GS(n):null;if(r&&(Y.getState().upsertSession(r),t&&Lx)){let e=Lx.children.get(t);e&&bS(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=GS(n);if(Y.getState().upsertSession(r),t&&Lx){let e=Lx.children.get(t);e?bS(e,r):aS(r,t)}else aS(r,t);return!0}catch(r){return console.error(`[session-actions] unarchiveSession failed`,r),n&&(Y.getState().upsertSession(n),n.time?.archived&&zS(e,t)),!1}}async function eC(e,t){let n=SS(e),r=vS(e),i=r?.metadata??{},a=i.openchamber&&typeof i.openchamber==`object`?i.openchamber:{},o=a.titleRefresh&&typeof a.titleRefresh==`object`?a.titleRefresh:{},s=r?Jf(r):0,c=await z.updateSession(e,{title:t,metadata:{...i,openchamber:{...a,titleRefresh:{...o,activityUpdatedAt:s}}}},n);Y.getState().upsertSession(c),aS(c,n)}async function tC(e){let t=SS(e),n=vS(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),aS(s,t)}async function nC(e){let t=SS(e),n=ap(Kx(await Xx().session.share({sessionID:e,directory:t}),`session.share`));return Y.getState().upsertSession(n),iS(n,t),n}async function rC(e){let t=SS(e),n=ap(Kx(await Xx().session.unshare({sessionID:e,directory:t}),`session.unshare`));return Y.getState().upsertSession(n),iS(n,t),n}function iC(e){let t=Lx,n=e??Rx();if(!t||!n)return{store:e?Qx(e):Zx(),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 aC(){return{identity:i(),generation:h()}}function oC(e,t){return e.isCurrent()&&i()===t.identity&&h()===t.generation}function sC(e,t){if(!oC(e,t))throw Error(`Send target changed before transport dispatch`)}function cC(e){if(!Bx||!Vx)throw new lS(`pre-dispatch`,Error(`Optimistic refs not set — is useSync() mounted?`));try{let t=e.directory??oS()??null,n=iC(t),r=aC();sC(n,r),e.beforeOptimisticInsert?.(),sC(n,r);let i=e.messageID??ge(`msg`);return e.onMessageID?.(i),$.getState().markMessageSending?.(e.sessionId,i),am(e.sessionId),pC({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 lS?e:new lS(uS(e)??fS(e,!1),e)}}function lC(e){if(!oC(e.capture,e.transport)||!Vx)return;Vx({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 uC(e){lC(e),$.getState().clearMessageSending?.(e.sessionId,e.messageID)}async function dC(e){if(!Bx||!Vx)throw new lS(`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 gS(),sC(n,r),s=!0,await _S(e.send(i)),!oC(n,r))throw new lS(`ambiguous-dispatched`,Error(`Send target changed after transport dispatch`),i);e.onSendConfirmed?.(i)}catch(c){let l=uS(c)??fS(c,s),u=c instanceof lS?c:new lS(l,c,i);if(!oC(n,r))throw u;let d=l===`ambiguous-dispatched`&&!e.preserveOptimisticOnAmbiguous?await hC(a,i,o):null;if(d&&oC(n,r)){gC(n.store,a,i,d,{directory:o??void 0}),Hx?.({sessionID:a,directory:o,messageID:i});return}throw e.preserveOptimisticOnAmbiguous&&l===`ambiguous-dispatched`||lC(t),u}finally{$.getState().clearMessageSending?.(a,i)}}async function fC(e){await dC({ticket:e.ticket??cC({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 pC(e){if(!Bx)return!1;let t=e.directory??oS(),n=t?Qx(t):Zx(),r=t??oS()??``;if(bC(n,e.sessionId,e.messageID,r)){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(),s={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}},c=Zv(()=>tS(e.sessionId,t).data);Bx({sessionID:e.sessionId,directory:t,message:s,parts:a});let l=Zv(()=>tS(e.sessionId,t).data);try{c&&l&&Qv({trigger:`user-send`,sessionID:e.sessionId,directory:r,transport:i(),generation:h(),before:c,after:l})}catch{}let u=n.getState();return n.setState({session_status:{...u.session_status,[e.sessionId]:{type:`busy`}},session_status_observed_at:{...u.session_status_observed_at,[e.sessionId]:o}}),!0}function mC(e){if(!e)return!0;try{return e()===!0}catch{return!1}}async function hC(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??_x,c=r?.retryDelayMs??vx;try{for(let a=0;a<s;a+=1){if(i?.signal.aborted||!mC(r?.isCurrent)||a>0&&(await Ux(c),i?.signal.aborted||!mC(r?.isCurrent)))return null;try{let a=await Xx().session.messages({sessionID:e,directory:n??void 0,limit:dh(),...i?{signal:i.signal}:{}});if(!mC(r?.isCurrent))return null;let o=(Gx(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 gC(e,t,n,r,i){if(!r.length)return;let a=i?.directory??SS(t)??Rx(),o=W(a,t),s={type:`materialize-snapshots`,records:r.map(e=>({info:sp(e.info),parts:e.parts??[]})),skipPartTypes:yx,merge:i?.gapFillOnly===!0?Xs:Qs({purpose:`recovery`})};xu(o,s)||U(a,e).apply(o,s)}var _C=2e3,vC={attempts:12,retryDelayMs:500},yC={presenceGraceMs:_C,recovery:{...vC}};function bC(e,t,n,r){let i=r??SS(t)??Rx()??``,a=H()??U(i,e),o=W(i,t);return a.getMessage(o,n)?a.getParts(o,n).length>0:!1}function xC(e,t,n,r){let i=r?.directory??SS(t)??Rx()??``;if(bC(e,t,n,i))return Promise.resolve(!0);if(!mC(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()??U(i,e),f=W(i,t);c.unsubscribe=d.subscribe(f,()=>{if(!mC(r?.isCurrent)){l(!1);return}bC(e,t,n,i)&&l(!0)}),bC(e,t,n,i)&&l(!0)})}async function SC(e){let{store:t,sessionId:n,messageID:r,directory:i,isCurrent:a}=e;if(await xC(t,n,r,{timeoutMs:e.graceMs??yC.presenceGraceMs,isCurrent:a,directory:i}))return`present`;if(!mC(a))return`cancelled`;let o=await hC(n,r,i,{...yC.recovery,isCurrent:a});return o?mC(a)?(gC(t,n,r,o,{gapFillOnly:!0,directory:i??void 0}),`recovered`):`cancelled`:mC(a)?`missing`:`cancelled`}async function CC(e){let{store:t,directory:n}=$x(e),r=n?{state:`bound`,transportIdentity:i(),directory:n,sessionID:e}:null,a=r?$.getState().beginQueueAbortBlock(r):null;try{if(Kx(await Xx().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){r&&a&&$.getState().clearQueueAbortBlock(r,a),et(async()=>{let{rollbackQueueAbortOptimistic:e}=await Promise.resolve().then(()=>pH);return{rollbackQueueAbortOptimistic:e}},void 0).then(({rollbackQueueAbortOptimistic:t})=>{t(e)}).catch(()=>{}),console.error(`[session-actions] abort failed`,t)}}async function wC(e,t,n){await gS();let r=MS(`permission`,e,t)||SS(e)||oS();if(Kx(await FS(`permission`,e,t).permission.reply({requestID:t,reply:n,...r?{directory:r}:{}}),`permission.reply`)!==!0)throw Error(`Permission reply failed`)}async function TC(e,t,n){await gS();let r=MS(`question`,e,t)||SS(e)||oS();try{let i=n.length===0?[]:Array.isArray(n[0])?n:[n];if(Kx(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 NS(n)&&PS(e,t),n}}async function EC(e,t){await gS();let n=MS(`question`,e,t)||SS(e)||oS();try{if(Kx(await FS(`question`,e,t).question.reject({requestID:t,...n?{directory:n}:{}}),`question.reject`)!==!0)throw Error(`Question rejection failed`)}catch(n){throw NS(n)&&PS(e,t),n}}async function DC(e){if(!e)return!1;let t=Lx;if(!t)return!1;let n=[];for(let[,r]of t.children){let t=r.getState(),i=Jp(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)PS(e,t);return await Promise.all(n.map(async({sessionId:e,requestId:t})=>{try{await EC(e,t)}catch(e){if(NS(e))return;console.error(`[session-actions] Failed to dismiss open question on send:`,e)}})),!0}async function OC(e,t,n){let r=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 Jb(e,r??(()=>{try{return $x(e,r).directory}catch{return r}})(),async({isCurrent:n})=>{let{store:o,directory:c}=$x(e,r);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 Xx().session.abort({sessionID:e,directory:c})}catch{}if(!n())throw Error(`Session history mutation aborted because the runtime changed`)}let u=nS(e,c).find(e=>e.id===t),d=nS(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}=eS(e,c),m=[...f.getParts(W(p,e),t)],h=a===void 0?s?C({transportIdentity:i()},e):null:a,g={snapshot:{text:``,attachments:[],syntheticParts:[],mentions:[]},values:new Map},_,v;if(h){try{m=await AS({directory:p,sessionID:e,messageID:t,parts:m,isCurrent:n}),g=await wm(m,{sessionTitles:ES(),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 km({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 jm({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 jm({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&&$b.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 jm({key:h,restoredRevision:_,previous:v})):t instanceof Error&&t.message.includes(`runtime changed`)||(o.setState({session:r}),h&&v&&_!==void 0&&await jm({key:h,restoredRevision:_,previous:v}).catch(()=>void 0)),t}})}function kC(e,t,n,r){let a=r??SS(t)??Rx(),o=W(a,t),s=Zv(()=>tS(t,a).data),c=[...bu(t)];c.some(e=>e.directory===a&&e.sessionID===t)||c.push(o);let l=!1;for(let e of c)xu(e,{type:`remove-message`,messageID:n})!=null&&(l=!0);l||U(a,e).apply(o,{type:`remove-message`,messageID:n});let u=Zv(()=>tS(t,a).data);try{s&&u&&Qv({trigger:`user-delete`,sessionID:t,directory:a,transport:i(),generation:h(),before:s,after:u})}catch{}}async function AC(e,t,n,r){let a=n?.info,o=n?.parts,s=r?.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=$x(e,s).directory}else{c=$x(e,s).directory;let{data:n}=tS(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=r?.draftKey??C({transportIdentity:i()},e),{commit:u}=await jS({key:l,parts:await AS({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 jm({key:l,restoredRevision:d,previous:f})).status})}}function jC(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 MC(e,t){let n=t?.directory,{store:r,directory:i}=$x(e,n),a=r.getState().session_status[e];if(!(!a||a.type===`idle`))try{await Xx().session.abort({sessionID:e,directory:i})}catch{}}async function NC(e,t){let n=t?.directory,r=t?.timeoutMs??15e3,i=t?.intervalMs??100,{store:a}=$x(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 PC(e,t,n){let r=n?.directory,a=n?.preserveMessageId??$.getState().pendingSendMessageIDs.get(e),{store:o,directory:s}=$x(e,r),c=Zv(()=>tS(e,r).data);try{await MC(e,{directory:r}),await NC(e,{directory:r});let n=new Set((await FC(e,r)).map(e=>e.id)),i=jC(t,nS(e,r),n,{preserveMessageId:a});for(let t of[...i].reverse())await z.deleteSessionMessage(e,t.id,s),kC(o,e,t.id,s)}finally{try{let t=Zv(()=>tS(e,r).data);c&&t&&Qv({trigger:`user-edit`,sessionID:e,directory:s,transport:i(),generation:h(),before:c,after:t})}catch{}}}async function FC(e,t){let{directory:n}=$x(e,t);return(Gx(await Xx().session.messages({sessionID:e,directory:n,limit:uh()}),`session.messages`)??[]).filter(e=>!!e?.info?.id).map(e=>sp(e.info))}async function IC(e,t){let{store:n,directory:r}=$x(e,t),a=Zv(()=>tS(e,t).data),o=(Gx(await Xx().session.messages({sessionID:e,directory:r,limit:uh()}),`session.messages`)??[]).filter(e=>!!e?.info?.id);if(o.length===0){try{let n=Zv(()=>tS(e,t).data);a&&n&&Qv({trigger:`materialize`,sessionID:e,directory:r,transport:i(),generation:h(),purpose:`refetch`,before:a,after:n})}catch{}return[]}let s=o.map(e=>({info:sp(e.info),parts:e.parts??[]})),c=W(r??Rx(),e);xu(c,{type:`materialize-snapshots`,records:s,skipPartTypes:yx})||U(r??Rx(),n).apply(c,{type:`materialize-snapshots`,records:s,skipPartTypes:yx});try{let n=Zv(()=>tS(e,t).data);a&&n&&Qv({trigger:`materialize`,sessionID:e,directory:r,transport:i(),generation:h(),purpose:`refetch`,before:a,after:n})}catch{}return s.map(e=>e.info)}async function LC(e,t){return Jb(e,t??(()=>{try{return $x(e,t).directory}catch{return t}})(),async({isCurrent:n})=>{let{store:r,directory:i}=$x(e,t);if(!n())throw Error(`Session history mutation aborted because the runtime changed`);let a=r.getState(),o=rS(e,i),s=a.session_status[e];if(s&&s.type!==`idle`){try{await Xx().session.abort({sessionID:e,directory:i})}catch{}if(!n())throw Error(`Session history mutation aborted because the runtime changed`)}let c=await Xx().session.unrevert({sessionID:e,directory:i});if(!n())throw Error(`Session history mutation aborted because the runtime changed`);let l=Kx(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<bx;r+=1){if(r>0&&(await Ux(xx),!n())||(await IC(e,t),!n()))throw Error(`Session history mutation aborted because the runtime changed`);if(rS(e,i)>o)return}if(rS(e,i)<=o){let n=i??Rx(),a=H()??U(n,r),o=W(n,e);typeof a.destructiveReset==`function`?await a.destructiveReset(o):await IC(e,t)}})}async function RC(e,t,n,r){let i=c(),{store:a,directory:o}=$x(e,r);if(!o)throw Error(`Fork session directory is unavailable`);let s=await xS(e,a,o);Cd(e,o);let l=a.getState(),u=l.session_status[e],d=nS(e,o);u?.type,d.length;let f=Nx(n,d,u);if(!n&&Mx(u,d)&&Ax(d)===-1&&(await IC(e),l=a.getState(),u=l.session_status[e],d=nS(e,o),f=Nx(void 0,d,u)),!n&&Mx(u,d)&&Ax(d)===-1)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:rS(e,o)}),Error(`Fork source user message is unavailable`);l.session_status[e]?.type;let{repository:p,data:m}=tS(e,o),h=(n?m.messagesByID[n]??d.find(e=>e.id===n):void 0)?.role===`user`,g=h&&n?[...p.getParts(W(o,e),n)]:[],_=``;_=g.filter(e=>e.type===`text`&&!$p(e)).map(e=>e.text||e.content||``).join(`
|
|
399
|
+
`),l=[];for(let e of o){let t=Cm(e);t&&l.push(t)}for(let e of[...l].reverse())Sm(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=Sm(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:`)?_m(t):null;if(o){let e=bm(o,r),t=null;for(let n of e){let e=Sm(c,`@${n}`,p);if(e){t={path:n,range:e};break}}if(t){p.add(`${t.range.start}:${t.range.end}`);let e=mm(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 xm(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(fm(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}},Tm=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 xm(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(fm(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}},Em=e=>e?JSON.parse(JSON.stringify(e)):null,Dm=e=>e?{...e}:{},Om=(e,t=Or.getState())=>{let n=t.getDraft?.(e)??null,r=Dm(t.draftAttachmentViews?.[R(e)]);return{record:Em(n??void 0),views:r,expectedRevision:n?.revision??`absent`}},km=async e=>{let t=e.input??Or.getState(),n=Om(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}},Am=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}}},jm=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?Am({key:e.key,restoredRevision:e.restoredRevision,previous:e.previous,runtime:o,store:t}):{status:`failed`,current:!1}},Mm=(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},Nm=e=>e?.status===`committed`&&e.current===!0,Pm=new Map,Fm=async(e,t)=>{let n=R(e),r=Pm.get(n)??Promise.resolve(),i,a=new Promise(e=>{i=e}),o=r.catch(()=>void 0).then(()=>a);Pm.set(n,o),await r.catch(()=>void 0);try{return await t()}finally{i(),Pm.get(n)===o&&Pm.delete(n)}},Im=(e,t)=>({key:e,addLocal:async n=>{await Fm(e,async()=>{await t().addDraftLocalAttachment(e,n)})},removeByAttachmentID:async n=>{try{return await Fm(e,async()=>{let r=t(),i=Mm(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 Fm(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 Fm(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:Nm(i)})}catch{return!1}},replaceRootAttachments:async n=>{try{return await Fm(e,async()=>t().replaceDraftRootAttachments(e,n))}catch{return}},addVSCodeFile:async(n,r,i)=>{await Fm(e,()=>{t().addDraftVSCodeFileAttachment(e,n,r,i)})},addVSCodeSelection:async(n,r)=>{await Fm(e,async()=>{await t().addDraftVSCodeSelectionAttachment(e,n,r)})}}),Lm=4e4,Rm=0,zm=null;function Bm(e=Date.now()){Rm=e}function Vm(e){return zm=e,()=>{zm===e&&(zm=null)}}function Hm(e){zm?.(e)}function Um(e=Date.now(),t=Lm){return Rm<=0?!1:e-Rm>=t}var Wm=3e4,Gm=200,Km=new Map;function qm(e,t,n){return`${n?.transport??i()}\n${n?.generation??h()}\n${e.trim()}\n${t}`}function Jm(e,t,n){if(!e||!t)return!1;let r=Km.get(qm(e,t,n));return r!==void 0&&(n?.now??Date.now())-r<Wm}function Ym(e,t,n){if(!e||!t)return;let r=qm(e,t,n);for(Km.has(r)&&Km.delete(r);Km.size>=Gm;){let e=Km.keys().next().value;if(typeof e!=`string`)break;Km.delete(e)}Km.set(r,n?.now??Date.now())}var Xm=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},Qm=()=>{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<=Xm&&Zm()?`mobile`:`desktop`},$m=()=>Qm()===`mobile`,eh=3,th=2,nh=4,rh=4,ih=100,ah=30;function oh(){return u()?`relay`:`local`}function sh(e=oh()){return e===`relay`?th:eh}function ch(e=oh()){return e===`relay`?rh:nh}function lh(e){return sh(fh(e))}function uh(){return ih}function dh(){return ah}function fh(e){return e===`relay`||e===`local`?e:oh()}var ph=Object.freeze({liveRevision:0,confirmedHeadMessageID:null});function mh(){return{pages:[],pageParams:[]}}function hh(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 gh(e){return{pages:Object.freeze(e.pages.map(hh)),pageParams:Object.freeze([...e.pageParams])}}function _h(e,t,n=ph){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 hh({kind:t,messageOrder:r,messagesByID:i,partsByMessageID:a,cursor:e.complete?null:e.cursor??null,complete:e.complete,turnCount:o,sync:n})}function vh(e){if(!e||e.pages.length===0)return il;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 yh(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=vh(e);return{message:n,part:r,session_history_boundary:o.kind===`unknown`&&o.loadedTurns===0?{}:{[t]:o}}}function bh(e){for(let t=e.length-1;t>=0;--t){let n=e[t];if(n?.id)return n.id}return null}function xh(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 hh({kind:e,messageOrder:s,messagesByID:c,partsByMessageID:l,cursor:r,complete:i,turnCount:a,sync:{liveRevision:o,confirmedHeadMessageID:bh(t)}})}function Sh(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 gh({pages:[xh(`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=xh(`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(wh(i,o,s,a)),_.push(e.pageParams[r]??null)}return gh({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?wh(t,r===`reconcile-page`?Ch(i,p):[...i,...p],s,a):wh(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]=hh({...e,cursor:t,complete:r,sync:{...e.sync,liveRevision:a}}))}return gh({pages:m,pageParams:[...e.pageParams]})}function Ch(e,t){let n=e.slice();for(let e of t){let t=oc(e),r=n.length;for(let e=0;e<n.length;e+=1)if(ac(t,oc(n[e]))<0){r=e;break}n.splice(r,0,e)}return n}function wh(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&&Th(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||Dh(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:hh({kind:e.kind,messageOrder:i,messagesByID:a,partsByMessageID:o,cursor:e.cursor,complete:e.complete,turnCount:e.turnCount,sync:{liveRevision:r,confirmedHeadMessageID:bh(t)}})}function Th(e,t){return e===t||e.id===t.id&&e===t}function Eh(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 Dh(e,t){if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(!Eh(e[n],t[n]))return!1;return!0}function Oh(e){return e.filter(e=>!!e?.id).slice().sort((e,t)=>e.id<t.id?-1:+(e.id>t.id))}function kh(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 Ah(e,t,n,r,i,a){let o=n.message[t]??[],s=n.part,c=Sh(e??mh(),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&&Dh(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 gh({pages:e.pages.map((t,n)=>wh(t,n===e.pages.length-1?[...l[n]??[],...u]:l[n]??[],c,i)),pageParams:[...e.pageParams]})}return c}function jh(e,t){let n=yh(e,t),r=vh(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 Mh(e,t,n,r){if(!Al(n.type))return{data:e,result:{applied:!1,changed:!1}};let{draft:i,previousBoundary:a}=jh(e,t),o=Rs(i,n);if(!(typeof o==`boolean`?o:o.changed))return{data:e,result:{applied:!0,changed:!1}};let s=kh(n),c=new Set;return s&&c.add(s),{data:Ah(e,t,i,a,r,c),result:{applied:!0,changed:!0}}}function Nh(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 Ph(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 Fh(e,t,n,r){if(n.length===0)return{data:e,result:{applied:!1,changed:!1}};let{draft:i,previousBoundary:a}=jh(e,t),o=!1,s=0,c,l=new Set,u=Nh(e),d=Ph(e),f=i.message[t]??[],p=new Map,m=new Map,h=[],g=e=>{if(p.clear(),m.clear(),h=[],e)for(let t=0;t<e.length;t+=1){let n=e[t];n?.id&&(p.set(n.id,n),m.set(n.id,t),h.push(n.id))}};g(f);let _=h.slice();for(let e of n){if(!Al(e.type))continue;o=!0;let n=Rs(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 v=i.message[t]??[];v!==f&&(f=v,g(v));let y=kh(e),b=h.length!==_.length||h.some((e,t)=>e!==_[t]),x=b;if(y){let e=i.part[y],t=u.get(y);e&&t&&Dh(t,e)?i.part[y]=[...t]:e?(x=!0,u.set(y,e)):t&&(x=!0,u.delete(y));let n=p.get(y),r=d.get(y);if(!(n&&r&&r===n))if(n&&r&&Th(r,n)){let e=m.get(y);e!==void 0&&f[e]&&(f[e]=r,p.set(y,r))}else n?(x=!0,d.set(y,n)):r&&(x=!0,d.delete(y))}else x=!0;if(b){_=h.slice();for(let e of f)e?.id&&!d.has(e.id)&&d.set(e.id,e)}x&&(s+=1,y&&l.add(y))}return o?s===0?{data:e,result:{applied:!0,changed:!1,...c?{materialization:c}:{}}}:{data:Ah(e,t,i,a,r+s,l),result:{applied:!0,changed:!0,...c?{materialization:c}:{}}}:{data:e,result:{applied:!1,changed:!1}}}function Ih(e,t,n,r,i){let a=e&&e.pages.length>0?e:gh({pages:[xh(`tail`,[],{},null,!1,0,i)],pageParams:[null]}),o=yh(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]:Oh(r)};return{data:gh({pages:a.pages.map((e,t)=>t===a.pages.length-1?wh(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]?wh(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 Lh(e,t,n){if(!e||e.pages.length===0)return{data:e,result:{applied:!0,changed:!1}};let r=!1;return{data:gh({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 wh(e,i,a,n)}),pageParams:[...e.pageParams]}),result:{applied:!0,changed:r}}}function Rh(e,t,n){if(n.records.length===0)return{data:e,result:{applied:!1,changed:!1}};let r=yh(e,t),i=Qc({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:vh(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=gh({pages:[xh(`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:vh(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=gh({pages:e.pages.map((t,n)=>{let r=c[n]??[];return n===e.pages.length-1&&l.length>0?wh(t,Ch(r,l),o,a):wh(t,r,o,a)}),pageParams:[...e.pageParams]});return{data:u,result:{applied:!0,changed:!0,boundary:vh(u)}}}function zh(e,t,n){switch(n.type){case`http-page`:{let r=n.liveRevision??0,i=pl(yh(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:Sh(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 Mh(e,t,n.event,r+1)}case`sse-event-batch`:{let r=e?.pages[e.pages.length-1]?.sync.liveRevision??0;return Fh(e,t,n.events,r)}case`optimistic-add`:{let r=e?.pages[e.pages.length-1]?.sync.liveRevision??0;return Ih(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 Lh(e,n.messageID,t)}case`durable-seed`:return Rh(e,t,n);case`reset`:return n.page?zh(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 Bh(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 Vh(e,t,n,r=`materialize`){return zh(e,n,{type:`http-page`,purpose:r,page:Bh(t),liveRevision:t.sync.liveRevision}).data}function Hh(e,t,n){if(!t)return e;if(!e||e.pages.length===0)return gh(t);if(t.pages.length===e.pages.length){let r=Kh(e,t);if(r===e)return e;if(Gh(e,t)||Wh(e,t))return r;let i=t.pages[t.pages.length-1];return Vh(e,i,n)??r}if(t.pages.length===e.pages.length+1){let r=t.pages[0];return zh(e,n,{type:`http-page`,purpose:`prepend`,page:Bh(r),liveRevision:r.sync.liveRevision}).data}if(t.pages.length===1&&e.pages.length>1){let r=t.pages[0];return Vh(e,r,n)??gh(t)}return gh(t)}function Uh(e){let t=new Set;for(let n of e.pages)for(let e of n.messageOrder)t.add(e);return t}function Wh(e,t){let n=Uh(e),r=Uh(t);if(r.size===0||r.size>=n.size)return!1;for(let e of r)if(!n.has(e))return!1;let i=qh(e,``),a=qh(t,``);for(let e of r)if(i.messagesByID[e]!==a.messagesByID[e]||i.partsByMessageID[e]!==a.partsByMessageID[e])return!1;return!0}function Gh(e,t){let n=Uh(e);if(n.size===0)return!1;let r=Uh(t);for(let e of n)if(!r.has(e))return!1;if(r.size<=n.size)return!1;let i=qh(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||ac(oc(t),oc(n))>0)return!1}return!0}function Kh(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,hh(t))});return!n&&e.pageParams.length===t.pageParams.length?e:gh({pages:r,pageParams:[...t.pageParams]})}function qh(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:vh(e),liveRevision:a}}var Jh=class extends Error{code=`runtime_stale`;constructor(e=`runtime_stale`){super(e),this.name=`SessionMessageRuntimeStaleError`}},Yh=class extends Error{code=`page_contract`;constructor(e){super(e),this.name=`SessionMessagePageContractError`}},Xh=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(),Qh=e=>e?.trim()||`tail`,$h=new Set([502,503,504]),eg=[`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 tg(e){if(!e||e instanceof Jh||e instanceof Yh)return!1;if(e instanceof Xh)return e.status>=400&&e.status<500?!1:$h.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($h.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($h.has(e)||e>=500&&e<600)return!0}return n.includes(`page contract`)||n.includes(`malformed json`)||n.includes(`contract`)?!1:eg.some(e=>n.includes(e))}function ng(e,t){return e>=2?!1:tg(t)}var rg=(e,t=i(),n=h())=>[t,n,`sessionMessages`,`page`,Zh(e.directory),e.sessionID,e.limit,Qh(e.before)],ig=(e,t=i(),n=h())=>[t,n,`session-transcript`,Zh(e.directory),e.sessionID];function ag(e){if(!e||typeof e!=`object`)throw new Yh(`session message page: expected object`);let t=e;if(!Array.isArray(t.records))throw new Yh(`session message page: records must be an array`);if(typeof t.complete!=`boolean`)throw new Yh(`session message page: complete must be boolean`);for(let e of t.records){if(!e||typeof e!=`object`)throw new Yh(`session message page: invalid record`);let t=e.info;if(!t||typeof t!=`object`||typeof t.id!=`string`)throw new Yh(`session message page: record.info.id required`)}if(t.cursor!==void 0&&t.cursor!==null&&typeof t.cursor!=`string`)throw new Yh(`session message page: cursor must be string when set`);return e}var og=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}:{}})},sg=(e,t,n)=>{let r=(n.getTransport??i)(),a=(n.getGeneration??h)();if(r!==e||a!==t)throw new Jh},cg=(e,t,n=i(),r={},a=(r.getGeneration??h)())=>{let o=Zh(e.directory),s=e.sessionID,c=e.limit,l=e.before?.trim()||void 0;return{queryKey:rg({directory:o,sessionID:s,limit:c,before:l},n,a),queryFn:async({signal:e})=>{sg(n,a,r);let i=await t({directory:o,sessionID:s,limit:c,before:l,signal:e});return sg(n,a,r),og(ag(i))},staleTime:1/0,gcTime:3e5,retry:ng,retryDelay:e=>Math.min(500*2**e,4e3)}},lg=(e,t,n=L,r=i(),a={},o=(a.getGeneration??h)())=>n.fetchQuery(cg(e,t,r,a,o));function ug(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 dg(e){return og({records:e.records.map(e=>({info:e.info,parts:e.parts})),cursor:e.cursor,complete:e.complete,turnCount:e.turnCount,requestedTurnLimit:e.requestedTurnLimit})}function fg(e){if(!e.complete&&typeof e.cursor==`string`&&e.cursor.length>0)return e.cursor}function pg(e){let t=Zh(e.directory),n=e.sessionID,r=e.transport??i(),a=e.probe??{},o=e.generation??(a.getGeneration??h)(),s=e.initialLimit??sh(),c=e.historyLimit??ch(),l=e.client??L,u=ig({directory:t,sessionID:n},r,o),d=async t=>dg(await e.fetcher({directory:t.directory,sessionID:t.sessionID,limit:t.limit,before:t.before,signal:t.signal}));return{queryKey:u,queryFn:async e=>{sg(r,o,a);let i=e.pageParam?.trim()||void 0,u=i?c:s,f=i?`prepend`:`initial`,p=await lg({directory:t,sessionID:n,limit:u,before:i},d,l,r,a,o);sg(r,o,a);let m=ug(p);return _h(m,f===`prepend`?`history`:`tail`,{liveRevision:0,confirmedHeadMessageID:m.records[m.records.length-1]?.info.id??null})},initialPageParam:null,getPreviousPageParam:fg,getNextPageParam:()=>void 0,staleTime:1/0,gcTime:3e5,retry:ng,retryDelay:e=>Math.min(500*2**e,4e3),maxPages:void 0,structuralSharing:(e,t)=>Hh(e,t,n)}}function mg(e){let t=e.client??L,n=pg({...e,client:t}),r=new nt(t,{...n,structuralSharing:(t,n)=>Hh(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 gh(e);await r.refetch();let t=r.getCurrentResult().data;if(!t)throw r.getCurrentResult().error??Error(`transcript initial fetch failed`);return gh(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:gh(i)}):e}if(!i)throw Error(`transcript previous page fetch failed`);return gh(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:gh(n)}):t}},getData:()=>r.getCurrentResult().data,subscribe:e=>r.subscribe(t=>{e(t.data)}),destroy:()=>{r.destroy()}}}function hg(e,t,n,r){let i=e.getQueryData(t),a=zh(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 gg(e,t=L,n=i(),r=h()){return t.getQueryData(ig(e,n,r))}function _g(){return v()||$m()}function vg(){return v()?4:$m()?12:40}var yg=1048576,bg=4*yg,xg=12*yg,Sg=40*yg;function Cg(){return v()?bg:$m()?xg:Sg}var wg=e=>e.trim();function Tg(e){return{transport:e.transport,generation:e.generation,directory:wg(e.directory),sessionID:e.sessionID}}function Eg(e){let t=Tg(e);return`${t.transport}\n${t.generation}\n${t.directory}\n${t.sessionID}`}function Dg(e){return`${e.transport}\n${e.generation}\n${wg(e.directory)}`}var Og={canonical:`session-transcript`,transportPageRoot:`sessionMessages`,transportPageKind:`page`,taskRoot:`session-transcript-task`,tailTaskKind:`tail`,reconcileTaskKind:`reconcile`,checkpoint:`session-transcript-checkpoint`};function kg(e,t,n){return[t,n,Og.taskRoot,Og.reconcileTaskKind,wg(e.directory),e.sessionID,e.checkpoint]}function Ag(e,t,n){return[t,n,Og.checkpoint,wg(e.directory),e.sessionID]}function jg(e){let t=Tg(e);return[{queryKey:ig({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation),exact:!0},{queryKey:[t.transport,t.generation,Og.transportPageRoot,Og.transportPageKind,t.directory,t.sessionID]},{queryKey:[t.transport,t.generation,Og.taskRoot,Og.tailTaskKind,t.directory,t.sessionID]},{queryKey:[t.transport,t.generation,Og.taskRoot,Og.reconcileTaskKind,t.directory,t.sessionID]},{queryKey:Ag({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation),exact:!0}]}function Mg(){let e=new Map;return{retain(t){let n=Tg(t),r=Eg(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(Eg(t))?.count??0)>0},listRetained(){return Array.from(e.values()).map(e=>e.scope)},retainCount(t){return e.get(Eg(t))?.count??0},clear(){e.clear()}}}function Ng(){return{cancel:0,remove:0,enforce:0,purgeSession:0,purgeGeneration:0,destructiveReset:0,evictedSessions:0}}var Pg=3e4;function Fg(e){return e&&typeof e==`object`&&`pages`in e&&Array.isArray(e.pages)?e.pages.length:0}function Ig(e){return!Array.isArray(e)||e.length<5||e[2]!==Og.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 Lg(e){let t=e.client,n=e.activeRegistry??Mg(),r=e.counters??Ng(),i=e.getLimit??vg,a=e.now??Date.now,o=e.minResidencyMs??Pg,s=new Map,c=new Map,l=e=>{let t=Tg(e),n=Eg(t),r=c.get(t.sessionID);r||(r=new Map,c.set(t.sessionID,r)),r.set(n,t)},u=e=>{let t=Tg(e),n=Eg(t),r=c.get(t.sessionID);r&&(r.delete(n),r.size===0&&c.delete(t.sessionID))},d=(e,t)=>{for(let[n,r]of c){for(let[n,i]of r)i.transport===e&&i.generation===t&&r.delete(n);r.size===0&&c.delete(n)}let n=`${e}\n${t}\n`;for(let e of s.keys())e.startsWith(n)&&s.delete(e)};for(let e of t.getQueryCache().getAll()){let t=Ig(e.queryKey);t&&l(t)}let f=t.getQueryCache().subscribe(e=>{if(e.type===`added`||e.type===`updated`){let t=Ig(e.query.queryKey);t&&l(t);return}if(e.type===`removed`){let t=Ig(e.query.queryKey);t&&u(t)}}),p=e=>{let t=Eg(Tg(e));s.set(t,a())},m=e=>{let t=Eg(Tg(e)),n=s.get(t);return n!==void 0&&a()-n<o},h=e=>{let r=Tg(e);if(n.isRetained(r))return!0;let i=ig({directory:r.directory,sessionID:r.sessionID},r.transport,r.generation);return(t.getQueryCache().find({queryKey:i,exact:!0})?.getObserversCount()??0)>0},g=e=>{let r=e?.directory===void 0?void 0:wg(e.directory),i=[];for(let a of t.getQueryCache().getAll()){let t=Ig(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:Fg(a.state.data)})}return i},_=(e,t)=>{let n=c.get(e);if(!n||n.size===0)return[];let r=t?.directory===void 0?void 0:wg(t.directory),i=[];for(let e of n.values())(t?.transport===void 0||e.transport===t.transport)&&(t?.generation===void 0||e.generation===t.generation)&&(r===void 0||e.directory===r)&&i.push(e);return i},v=e=>{t.cancelQueries(e),r.cancel+=1,t.removeQueries(e),r.remove+=1},y=e=>{r.purgeSession+=1;let t=Tg(e);s.delete(Eg(t)),u(t);for(let t of jg(e))v(t)},b=(e,t)=>{r.purgeGeneration+=1,d(e,t);let n=[[e,t,Og.canonical],[e,t,Og.transportPageRoot,Og.transportPageKind],[e,t,Og.taskRoot],[e,t,Og.checkpoint]];for(let e of n)v({queryKey:e})},x=e=>{r.enforce+=1;let t=e?.limit??i(),n=new Set(Array.from(e?.preserve??[]).map(e=>Eg(Tg(e)))),o=g({transport:e?.transport,generation:e?.generation,directory:e?.directory}),c=new Map;for(let e of o){let t=Dg(e.scope),n=c.get(t);n||(n=[],c.set(t,n)),n.push(e)}let l=[];for(let e of c.values()){for(let t of e){let e=Eg(t.scope);s.has(e)||s.set(e,t.dataUpdatedAt||a())}let i=e.filter(e=>!(e.active||n.has(Eg(e.scope))||m(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,u=0;for(;c>t&&u<i.length&&!(c-1<o);){let e=i[u];u+=1,y(e.scope),l.push(e.scope),r.evictedSessions+=1,--c}}return{evicted:l}};return{client:t,activeRegistry:n,counters:r,getLimit:i,isActive:h,listCanonical:g,listCanonicalScopesForSession:_,purgeSession:y,purgeGeneration:b,enforce:x,destructiveReset:async(e,t)=>{r.destructiveReset+=1,y(e);try{let n=await t();return x({transport:e.transport,generation:e.generation,directory:e.directory,preserve:[e]}),n}catch(t){throw y(e),t}},noteScopeObserved:p,dispose:()=>{f(),c.clear(),s.clear()}}}var Rg=new Map,zg=new Set;function Bg(e,t){return`${e}\n${t}`}function Vg(){for(let e of zg)e()}function Hg(e,t){if(!e||!t)return;let n=Bg(e,t),r=Rg.get(n)??0;Rg.set(n,r+1),r===0&&Vg()}function Ug(e,t){if(!e||!t)return;let n=Bg(e,t),r=Rg.get(n);if(r){if(r<=1){Rg.delete(n),Vg();return}Rg.set(n,r-1)}}function Wg(e,t){if(!e)return!1;if(t)return Rg.has(Bg(t,e));let n=`\n${e}`;for(let e of Rg.keys())if(e.endsWith(n))return!0;return!1}function Gg(e){return zg.add(e),()=>{zg.delete(e)}}var Kg=3e4,qg=(e,t)=>e?typeof AbortSignal.any==`function`?AbortSignal.any([e,AbortSignal.timeout(t)]):e:AbortSignal.timeout(t);async function Jg(e,t=Kg){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 Yg=e=>e?e.toLowerCase().includes(`application/json`):!1,Xg=e=>e?e.toLowerCase().includes(`text/html`):!1;function Zg(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 Qg(e){let t=e.turns??ch(),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:Kg;return Jg((async()=>{let a=await F(n,{method:`GET`,query:r,signal:qg(e.signal,i)});if(!a.ok)throw Error(`session turn page failed (${a.status})`);let o=a.headers.get(`content-type`);if(Xg(o))throw Error(`session turn page: unexpected HTML response`);Yg(o);let s;try{s=await a.json()}catch{throw Error(`session turn page: malformed JSON`)}return Zg(s,t)})(),i)}async function $g(e){let t=e.purpose===`prepend`&&e.before?ch():sh();return Qg({sessionID:e.sessionID,directory:e.directory,turns:t,...e.before?{before:e.before}:{},signal:e.signal})}var e_=3e4,t_=2,n_=(e,t)=>e?typeof AbortSignal.any==`function`?AbortSignal.any([e,AbortSignal.timeout(t)]):e:AbortSignal.timeout(t),r_=e=>e?e.toLowerCase().includes(`text/html`):!1,i_=e=>new Promise(t=>{setTimeout(t,e)});function a_(e,t){if(e==null)return null;if(typeof e!=`string`||e.length===0)throw new Yh(`session transcript reconcile: ${t} must be string or null`);return e}function o_(e){if(!e||typeof e!=`object`)throw new Yh(`session transcript reconcile: expected JSON object`);let t=e;if(!Array.isArray(t.records))throw new Yh(`session transcript reconcile: records must be an array`);if(typeof t.anchorFound!=`boolean`)throw new Yh(`session transcript reconcile: anchorFound must be a boolean`);if(typeof t.complete!=`boolean`)throw new Yh(`session transcript reconcile: complete must be a boolean`);if(typeof t.resetRequired!=`boolean`)throw new Yh(`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 Yh(`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 Yh(`session transcript reconcile: responseBytes must be a non-negative integer`);let n=a_(t.capturedHeadMessageID,`capturedHeadMessageID`),r=a_(t.latestHeadMessageID,`latestHeadMessageID`),i=a_(t.continuation,`continuation`);if(t.complete===!0&&i!=null)throw new Yh(`session transcript reconcile: complete=true requires continuation=null`);if(t.complete===!1&&t.resetRequired!==!0&&i==null)throw new Yh(`session transcript reconcile: complete=false requires non-empty continuation`);if(t.resetRequired===!0){if(t.complete!==!0)throw new Yh(`session transcript reconcile: resetRequired=true requires complete=true`);if(i!=null)throw new Yh(`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 Yh(`session transcript reconcile: records[${e}] must be an object`);let r=n,i=r.info;if(!i||typeof i!=`object`)throw new Yh(`session transcript reconcile: records[${e}].info must be an object`);let o=i.id;if(typeof o!=`string`||o.length===0)throw new Yh(`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 Yh(`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 s_(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 Yh(`session transcript reconcile: provide exactly one of anchor or continuation`);return{anchor:t,continuation:n}}async function c_(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),Jg((async()=>{let t;try{t=await F(r,{method:`GET`,query:i,signal:n_(e.signal,n)})}catch(e){throw e instanceof Jh||e instanceof Yh||e instanceof Xh||e instanceof Error?e:Error(String(e))}if(!t.ok)throw new Xh(t.status,`session transcript reconcile failed (${t.status})`);if(r_(t.headers.get(`content-type`)))throw new Yh(`session transcript reconcile: unexpected HTML response`);let a;try{a=await t.json()}catch{throw new Yh(`session transcript reconcile: malformed JSON`)}return o_(a)})(),n)}async function l_(e){let t=s_(e),n=typeof e.timeoutMs==`number`&&Number.isFinite(e.timeoutMs)&&e.timeoutMs>0?e.timeoutMs:e_,r=typeof e.maxRetries==`number`&&Number.isFinite(e.maxRetries)?Math.max(0,Math.floor(e.maxRetries)):t_,i=e.sleep??i_,a=0;for(;;){if(e.signal?.aborted)throw new DOMException(`The operation was aborted.`,`AbortError`);try{return await c_(e,t,n)}catch(t){if(t instanceof Jh||t instanceof Yh||t instanceof Xh&&t.status>=400&&t.status<500||(t instanceof Error?t.name:``)===`AbortError`&&e.signal?.aborted||a>=r||!tg(t))throw t;a+=1,await i(Math.min(500*2**(a-1),4e3))}}}var u_=e=>!!(e&&typeof e==`object`&&typeof e.type==`string`),d_=e=>e.filter(u_),f_=e=>{let t=e,n=t.text;return typeof n==`string`?n:t.content||t.value||``},p_=e=>{if(e.type!==`text`)return!1;let t=f_(e);return!t||t.trim().length===0},m_=(e,t={})=>{let{includeReasoning:n=!0}=t,r=d_(e),i=r.some(e=>!e.synthetic);return r.filter(e=>{let t=!!e.synthetic;return t&&e.type===`text`&&f_(e).includes(`<system-reminder>`)||t&&i||!n&&e.type===`reasoning`?!1:e.type!==`patch`})},h_=`GitHub issue context (JSON)`,g_=`GitHub pull request context (JSON)`,__=e=>typeof e==`number`&&Number.isFinite(e)&&e>0,v_=(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}},y_=e=>{let t=v_(e,h_);if(t){let e=t.issue,n=e?.number,r=e?.title,i=e?.url;return!__(n)||typeof r!=`string`||typeof i!=`string`?null:{type:`file`,mime:`application/vnd.github.issue-link`,filename:`Issue #${n}: ${r}`,url:i}}let n=v_(e,g_);if(n){let e=n.pr,t=e?.number,r=e?.title,i=e?.url;return!__(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},b_=e=>!!e.trim().startsWith(`The following tool was executed by the user`),x_=e=>e.trimStart().startsWith(`Continue working toward the active session goal.`),S_=e=>e.trim()===`/compact`,C_=e=>e.filter(e=>{if(e.type===`compaction`)return!1;if(e.type===`text`){let t=e.text;if(typeof t==`string`&&(x_(t)||S_(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 n=t.trimStart();return b_(t)||n.startsWith(h_)||n.startsWith(g_)}).map(e=>{let t=e;if(t.type===`text`){let e=typeof t.text==`string`?t.text.trim():``;if(t.synthetic===!0){let t=y_(e);if(t)return t}if(e.startsWith(`The following tool was executed by the user`))return{type:`text`,text:`/shell`}}return e}),w_=e=>e.some(e=>{if(e.type===`text`)return!p_(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}),T_=e=>e?.length?w_(C_(e)):!1,E_=`oc_asst_session_divider:`,D_=[],O_=e=>typeof e?.info?.id==`string`&&e.info.id.startsWith(`oc_asst_session_divider:`),k_=(e,t=0)=>({info:{id:`${E_}${e}`,role:`system`,time:{created:t}},parts:[]}),A_=e=>e.slice().reverse().flatMap(e=>e.entries),j_=(e,t,n=D_)=>{if(!e.length)return D_;let r=[],i=!1,a=null;for(let n of e)n.sessionID!==t&&(i&&a!==n.sessionID&&r.push(k_(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?D_:I_(n,r)?n:r},M_=(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},N_=(e,t)=>{if(!t)return e;if(e.info.role===`assistant`&&t.parts.length>0){let n=M_(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 T_(e.parts)?e:T_(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}:{}}},P_=(e,t,n,r=D_)=>{if(!t)return n.length>0?Array.from(n):D_;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:N_(e,t?.message),order:t?.order??a++})}if(i.size===0)return D_;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 I_(r,o)?r:o},F_=(e,t)=>{if(!O_(e)||!O_(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},I_=(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||F_(r,i))&&(r?.info!==i?.info||r?.parts!==i?.parts||r.sourceSessionID!==i.sourceSessionID||r.sourceDirectory!==i.sourceDirectory))return!1}return!0},L_=(e,t)=>Array.isArray(e)&&e.some(e=>e&&typeof e==`object`&&e.type===t),R_=e=>e.startsWith(E_);function z_(e,t){if(!e?.id||R_(e.id))return!1;let n=e;return(typeof n.clientRole==`string`?n.clientRole:n.role)===`user`?!Array.isArray(t)||t.length===0||!(L_(t,`subtask`)||L_(t,`compaction`)||t.every(e=>$p(e))):!1}function B_(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(z_(r,i))return n}return null}function V_(e){return e.messageOrder.length===0?null:e.messageOrder[e.messageOrder.length-1]??null}function H_(e){return{transport:e.transport,generation:e.generation,directory:e.directory.trim(),sessionID:e.sessionID,anchorMessageID:B_(e.transcript),lastEventID:e.lastEventID,capturedAt:e.capturedAt??Date.now(),state:`pending`,capturedHeadMessageID:null,latestHeadMessageID:V_(e.transcript),continuation:null,liveRevision:e.transcript.liveRevision}}function U_(e,t){return{...e,...t}}function W_(e,t){let n=Ag({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 G_(e,t){let n=Ag({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation);return e.setQueryData(n,t),n}function K_(e,t){let n=Ag({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation);e.removeQueries({queryKey:n,exact:!0})}function q_(e){return e.slim===!0}var J_=/bearer|token|authorization|password|secret|cookie/i,Y_=new Set([`message.part.delta`]);function X_(e){return typeof e==`string`&&e.includes(`-`)}var Z_=`openchamber.client-diagnostics.enabled`;function Q_(e){return e===`true`||e!==`false`&&null}function $_(e){return e.preference===!0||e.preference!==!1&&X_(e.version)}function ev(e=Date.now()){return`openchamber-diagnostics-${new Date(e).toISOString().replace(/[:.]/g,`-`)}.json`}function tv(e){try{let t=JSON.parse(e);return typeof t.eventCount==`number`&&Number.isFinite(t.eventCount)?t.eventCount:0}catch{return 0}}function nv(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 rv(e){if(e==null)return;let t=(e instanceof Error?e.message:String(e)).trim().slice(0,240);if(t)return J_.test(t)?`redacted-error`:t}function iv(e){let t=0,n=0;for(let r of Object.values(e))if(r)for(let e of r)q_(e)?t+=1:n+=1;return{slimPartCount:t,fullPartCount:n}}function av(e,t=4){return e.length<=t?e.slice():e.slice(e.length-t)}function ov(e){let t=0;for(let n of e.messageOrder)bv(e.messagesByID[n])===!0&&(t+=1);return t}function sv(e){let t=e.transcript?iv(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:av(e.transcript.messageOrder),boundaryKind:e.transcript.boundary.kind,slimPartCount:t?.slimPartCount,fullPartCount:t?.fullPartCount,identityMissingCount:ov(e.transcript)}:{},...e.command?{command:e.command}:{},...e.purpose?{purpose:e.purpose}:{},...e.sseType?{sseType:e.sseType}:{},...rv(e.error??e.request?.error)?{error:rv(e.error??e.request?.error)}:{},...nv(e.error)===void 0?{}:{httpStatus:nv(e.error)}}}function cv(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 lv(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 uv(e){return typeof e==`string`&&Y_.has(e)}function dv(e){switch(e.type){case`http-page`:return`http-page`;case`sse-event`:return uv(e.event.type)?null:`sse-event`;case`sse-event-batch`:return e.events.every(e=>uv(e.type))?null:`sse-event`;case`reset`:return`reset`;case`materialize-snapshots`:return`durable-seed`;case`remove-message`:return`purge`;default:return null}}function fv(e){if(e.type===`http-page`)return e.purpose}function pv(e){if(e.type===`sse-event`)return e.event.type;if(e.type===`sse-event-batch`)return`sse-event-batch`}function mv(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 hv(e){return e.__openchamberOptimistic===!0}function gv(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(`
|
|
400
|
+
`).trim();if(n)return J_.test(n)?`redacted-text`:n.length<=400?n:`${n.slice(0,400)}…`}function _v(e){if(!e)return;let t=e.clientRole??e.role;if(t===`user`||t===`assistant`||t===`system`)return t}function vv(e){let t=e?.time?.completed;return typeof t==`number`&&t>0}var yv=e=>typeof e==`string`&&e.trim().length>0;function bv(e){if(!e||_v(e)!==`assistant`)return;let t=e,n=!yv(t.mode)&&!yv(t.agent),r=!yv(t.modelID)||!yv(t.providerID);return n||r}function xv(e){return{partCount:e.partCount,slimCount:e.slimCount,fullCount:e.fullCount,optimistic:e.optimistic}}function Sv(e){let t=e.messageOrder.map(t=>{let n=e.partsByMessageID[t]??[],r=0,i=0,a=!1;for(let e of n)q_(e)?r+=1:i+=1,hv(e)&&(a=!0);let o=e.messagesByID[t],s=_v(o),c=bv(o),l=s===`user`?gv(n):void 0;return{id:t,partCount:n.length,slimCount:r,fullCount:i,optimistic:a,completed:vv(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 Cv(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:xv(e),after:xv(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 wv(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:Cv(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 Tv(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 Dv(e){if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0}function Ov(e){let t=Dv(e.partID),n=Dv(e.messageID),r=Dv(e.directory),i=Dv(e.childSessionID),a=Dv(e.toolStatus),o=Dv(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 kv(e){return[e.sessionID,Dv(e.partID)??``,e.childSessionPresent?`1`:`0`,Dv(e.childSessionID)??``,Dv(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`,Dv(e.surfaceKind)??``,String(e.taskStartedAt??``),String(e.statusObservedAt??``),String(e.statusSnapshotAt??``)].join(`\0`)}function Av(e){return{at:(e.now??Date.now)(),feat:`task`,kind:`task-row`,sessionID:e.sessionID,...Ov(e)}}function jv(e){return{at:(e.now??Date.now)(),feat:`task`,kind:`task-click`,sessionID:e.sessionID,clickSource:e.clickSource,clickOutcome:Ev(e),...Ov(e)}}var Mv=`openchamber-transcript-diagnostics`,Nv=`events`,Pv=1,Fv=e=>new Promise((t,n)=>{e.onsuccess=()=>t(e.result),e.onerror=()=>n(e.error??Error(`IndexedDB request failed`))}),Iv=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){n(Error(`IndexedDB unavailable`));return}let r=indexedDB.open(e,Pv);r.onupgradeneeded=()=>{let e=r.result;e.objectStoreNames.contains(Nv)||e.createObjectStore(Nv,{autoIncrement:!0})},r.onsuccess=()=>t(r.result),r.onerror=()=>n(r.error??Error(`IndexedDB open failed`))}),Lv=(e=Mv)=>({async append(t,n){let r=await Iv(e);try{let e=r.transaction(Nv,`readwrite`).objectStore(Nv);await Fv(e.add(t));let i=await Fv(e.getAllKeys()),a=i.length-n;if(a>0)for(let t of i.slice(0,a))await Fv(e.delete(t))}finally{r.close()}},async read(){let t=await Iv(e);try{return await Fv(t.transaction(Nv,`readonly`).objectStore(Nv).getAll())}finally{t.close()}},async clear(){let t=await Iv(e);try{await Fv(t.transaction(Nv,`readwrite`).objectStore(Nv).clear())}finally{t.close()}}});function Rv(e={}){let t=e.driver??Lv(e.databaseName),n=e.limit??500;return{append:e=>t.append(e,n),read:()=>t.read(),clear:()=>t.clear()}}var zv=Qe(`OpenChamberMedia`);function Bv(e){let t=new TextEncoder().encode(e),n=``;for(let e of t)n+=String.fromCharCode(e);return btoa(n)}function Vv(){return We()&&$e!==void 0&&$e.isPluginAvailable(`OpenChamberMedia`)}function Hv(){return`1.19.2-beta.3`}function Uv(){if(typeof localStorage>`u`)return null;try{return Q_(localStorage.getItem(Z_))}catch{return null}}function Wv(e){if(!(typeof localStorage>`u`))try{localStorage.setItem(Z_,e?`true`:`false`)}catch{}}function Gv(e={}){return(e.hasIndexedDB??(()=>globalThis.indexedDB!==void 0))()?`indexeddb`:`memory`}var Kv;function qv(e=Hv()){return $_({version:e,preference:Uv()})}function Jv(e={}){return lv({sink:Gv()===`indexeddb`?(e.createIndexedDBSink??Rv)():(e.createMemorySink??cv)(),isEnabled:e.isEnabled??qv})}function Yv(){return Kv??=Jv(),Kv}function Xv(e){Yv().record(e)}function Zv(e){try{return qv()?Sv(e()):void 0}catch{return}}function Qv(e){try{Xv(wv(e))}catch{}}function $v(e){try{Xv(Av(e))}catch{}}function ey(e){try{Xv(jv(e))}catch{}}function ty(e){let t=dv(e.command);t&&(e.changed!==!1||e.command.type!==`sse-event`&&e.command.type!==`sse-event-batch`)&&Xv(sv({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:fv(e.command),sseType:pv(e.command),source:mv(e.command),error:e.error}))}async function ny(){let e=await Yv().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 ry(e,t=ev()){if(Vv())return(await zv.saveFile({dataBase64:Bv(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 iy(){let e=await ny(),t=ev();return{content:e,fileName:t,outcome:await ry(e,t),eventCount:tv(e)}}function ay(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 oy=2,sy=6e4,cy=6e4;function ly(e,t){return{transport:t?.transport??e.transport??(e.probe?.getTransport??i)(),generation:t?.generation??e.generation??(e.probe?.getGeneration??h)()}}function uy(e,t){let n=(t.probe?.getTransport??i)(),r=(t.probe?.getGeneration??h)();if(n!==e.transport||r!==e.generation)throw new Jh}function dy(e,t){return{directory:e.directory.trim(),sessionID:e.sessionID,transport:t.transport,generation:t.generation}}function fy(e,t){return Tg({transport:t.transport,generation:t.generation,directory:e.directory.trim(),sessionID:e.sessionID})}function py(e,t){return`${e.trim()}\n${t}`}function my(e){let t=e.client,n=e.repository,r=e.cacheBudget??n.getCacheBudget?.()??Lg({client:t,activeRegistry:Mg()}),a=Math.max(1,Math.floor(e.directoryConcurrency??oy)),o=e.fetchReconcile??l_,s=e.now??Date.now,c=Math.max(0,e.destructiveResetDedupeMs??sy),l=!1,u=0,d=new Map,f=new Map,p=new Map,m=new Map,g=new Set,_=new Map,v=new Set,y=new Map,b=(e,t)=>{g.add(py(e,t))},x=(e,t)=>{g.delete(py(e,t))},S=e=>{let t=f.get(e);t&&(t.abort(),f.delete(e)),d.delete(e)},C=e=>{u+=1;for(let e of[...f.keys()])S(e);p.clear(),m.clear(),y.clear()},w=(e,t)=>{let n=t===void 0?void 0:t.trim(),i=new Map;for(let t of r.listCanonical({transport:e.transport,generation:e.generation,directory:n}))t.active&&(n===void 0||t.scope.directory===n)&&i.set(py(t.scope.directory,t.scope.sessionID),{directory:t.scope.directory,sessionID:t.scope.sessionID});for(let t of r.activeRegistry.listRetained())t.transport===e.transport&&t.generation===e.generation&&(n===void 0||t.directory===n)&&i.set(py(t.directory,t.sessionID),{directory:t.directory,sessionID:t.sessionID});return Array.from(i.values())},T=(t,n)=>{let i=new Set(e.listDirectories().map(e=>e.trim()).filter(Boolean));for(let e of r.listCanonical({transport:t.transport,generation:t.generation}))i.add(e.scope.directory);for(let e of r.activeRegistry.listRetained())e.transport===t.transport&&e.generation===t.generation&&i.add(e.directory);for(let e of n)e.directory&&i.add(e.directory.trim());return i},E=()=>{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=py(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}]:[]},D=i=>{if(l)return;let a={transport:i.transport??ly(e).transport,generation:i.generation??ly(e).generation},o=s(),c=E(),u=T(a,c),d=r.listCanonical({transport:a.transport,generation:a.generation}),f=new Map;for(let e of d)f.set(py(e.scope.directory,e.scope.sessionID),{directory:e.scope.directory,sessionID:e.scope.sessionID});for(let e of r.activeRegistry.listRetained())e.transport===a.transport&&e.generation===a.generation&&f.set(py(e.directory,e.sessionID),{directory:e.directory,sessionID:e.sessionID});for(let e of c)f.set(py(e.directory,e.sessionID),{directory:e.directory,sessionID:e.sessionID});for(let t of u)for(let n of e.getBusyOrRetrySessionIDs(t))f.set(py(t,n),{directory:t,sessionID:n});for(let e of f.values()){let r=dy(e,a),s=n.getTranscript(r),c=H_({transport:a.transport,generation:a.generation,directory:e.directory,sessionID:e.sessionID,transcript:s,lastEventID:i.lastEventID,capturedAt:o});G_(t,c)}let p=new Set;for(let t of u){let n=ay({directory:t,activeScopes:w(a,t),viewedSessions:c,busyOrRetrySessionIDs:e.getBusyOrRetrySessionIDs(t)});for(let e of n)p.add(py(e.directory,e.sessionID))}for(let e of d){let t=py(e.scope.directory,e.scope.sessionID);!p.has(t)&&!e.active&&b(e.scope.directory,e.scope.sessionID)}},O=(e,t,r)=>{let i=Zv(()=>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=Zv(()=>n.getTranscript(e));i&&t&&Qv({trigger:`reconnect-compensation-reconcile`,sessionID:e.sessionID,directory:e.directory,transport:e.transport,generation:e.generation,before:i,after:t})}catch{}return o},k=e=>{let t=n.getTranscript(e),r=t.messageOrder[t.messageOrder.length-1];if(!r)return!1;let i=t.messagesByID[r];return!i||i.role!==`assistant`?!1:zs(i)},A=async(r,i,a)=>{if(uy({transport:i.transport,generation:i.generation},e),a!==u)throw new Jh;G_(t,U_(W_(t,i)??H_({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=Zv(()=>n.getTranscript(r));try{if(await n.destructiveReset(r),uy({transport:i.transport,generation:i.generation},e),a!==u)throw new Jh;K_(t,i),x(i.directory,i.sessionID),y.set(py(i.directory,i.sessionID),s());try{let e=Zv(()=>n.getTranscript(r));o&&e&&Qv({trigger:`reconnect-compensation-reset`,sessionID:r.sessionID,directory:r.directory,transport:i.transport,generation:i.generation,before:o,after:e})}catch{}}catch(e){throw G_(t,U_(W_(t,i)??H_({transport:i.transport,generation:i.generation,directory:i.directory,sessionID:i.sessionID,transcript:n.getTranscript(r),lastEventID:null}),{state:`reset-required`})),e}},j=async(r,i,a)=>{if(uy({transport:i.transport,generation:i.generation},e),a!==u)throw new Jh;G_(t,U_(W_(t,i)??H_({transport:i.transport,generation:i.generation,directory:i.directory,sessionID:i.sessionID,transcript:n.getTranscript(r),lastEventID:null}),{state:`reconciling`,continuation:null}));let o=Zv(()=>n.getTranscript(r));try{if(await n.ensureInitial(r),uy({transport:i.transport,generation:i.generation},e),a!==u)throw new Jh;K_(t,i),x(i.directory,i.sessionID);try{let e=Zv(()=>n.getTranscript(r));o&&e&&Qv({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 G_(t,U_(W_(t,i)??H_({transport:i.transport,generation:i.generation,directory:i.directory,sessionID:i.sessionID,transcript:n.getTranscript(r),lastEventID:null}),{state:`pending`})),e}},ee=async(r,i,a,l)=>{let d=dy(r,i),f=fy(r,i),p=kg({directory:f.directory,sessionID:f.sessionID,checkpoint:String(W_(t,f)?.capturedAt??s())},f.transport,f.generation);t.setQueryData(p,{status:`running`,startedAt:s()});try{if(uy(i,e),a!==u||l.aborted)throw new Jh;let m=W_(t,f);if(m||(m=H_({transport:i.transport,generation:i.generation,directory:r.directory,sessionID:r.sessionID,transcript:n.getTranscript(d),lastEventID:null,capturedAt:s()}),G_(t,m)),!m.anchorMessageID){if(await j(d,f,a),t.setQueryData(p,{status:`ensure`,finishedAt:s()}),e.confirmSessionStatus)try{await e.confirmSessionStatus(r,{tailOpen:k(d)})}catch{}return}m=U_(m,{state:`reconciling`}),G_(t,m);let h=m.anchorMessageID,g=0;for(;g<32;){if(g+=1,uy(i,e),a!==u||l.aborted)throw new Jh;let _=null,v=null,b=null,S=0;for(;;){if(S+=1,uy(i,e),a!==u||l.aborted)throw new Jh;let g=n.getTranscript(d).liveRevision;if(!_&&!h){await j(d,f,a),t.setQueryData(p,{status:`ensure`,finishedAt:s()});return}let x=await o({sessionID:r.sessionID,directory:r.directory.trim(),..._?{continuation:_}:{anchor:h},signal:l});if(uy(i,e),a!==u||l.aborted)throw new Jh;if(x.resetRequired){let n=y.get(py(r.directory,r.sessionID))??-1/0;if(s()-n<c?(await j(d,f,a),t.setQueryData(p,{status:`ensure`,finishedAt:s()})):(await A(d,f,a),t.setQueryData(p,{status:`reset`,finishedAt:s()})),e.confirmSessionStatus)try{await e.confirmSessionStatus(r,{tailOpen:k(d)})}catch{}return}if(S===1&&(v=x.capturedHeadMessageID),b=x.latestHeadMessageID??b,x.records.length>0&&O(d,x,g),m=U_(W_(t,f)??m,{state:`reconciling`,capturedHeadMessageID:v,latestHeadMessageID:b,continuation:x.continuation}),G_(t,m),x.complete||!x.continuation)break;_=x.continuation}let C=v,w=b;if(C&&w&&w!==C){h=C,m=U_(W_(t,f)??m,{state:`reconciling`,anchorMessageID:C,continuation:null,capturedHeadMessageID:null}),G_(t,m);continue}if(m=U_(W_(t,f)??m,{state:`complete`,continuation:null,capturedHeadMessageID:C,latestHeadMessageID:w}),G_(t,m),x(r.directory,r.sessionID),t.setQueryData(p,{status:`complete`,finishedAt:s()}),e.confirmSessionStatus)try{await e.confirmSessionStatus(r,{tailOpen:k(d)})}catch{}return}{let n=y.get(py(r.directory,r.sessionID))??-1/0;if(s()-n<c?(await j(d,f,a),t.setQueryData(p,{status:`ensure`,finishedAt:s()})):(await A(d,f,a),t.setQueryData(p,{status:`reset`,finishedAt:s()})),e.confirmSessionStatus)try{await e.confirmSessionStatus(r,{tailOpen:k(d)})}catch{}}}catch(n){if(n instanceof Jh||n instanceof Error&&n.name===`AbortError`){t.setQueryData(p,{status:`cancelled`,finishedAt:s()});return}throw e.onError?.(n,{directory:r.directory,sessionID:r.sessionID,phase:`reconcile`}),t.setQueryData(p,{status:`error`,finishedAt:s(),code:n instanceof Error?n.name:`error`}),n}},te=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=py(o.directory,o.sessionID);if(d.has(s)){m.set(n,(m.get(n)??1)-1),te(n);return}let c=ly(e),l=u,h=new AbortController;f.set(s,h);let g=(async()=>{Hg(n,o.sessionID);try{await ee(o,c,l,h.signal)}catch{}finally{Ug(n,o.sessionID),f.delete(s),d.delete(s),m.set(n,Math.max(0,(m.get(n)??1)-1)),te(n)}})();d.set(s,g)},M=e=>{let t=e.directory.trim(),n=py(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}),te(t))},ne=t=>{let n=E(),i=T(t,n);for(let a of i){let i=ay({directory:a,activeScopes:w(t,a),viewedSessions:n,busyOrRetrySessionIDs:e.getBusyOrRetrySessionIDs(a)});for(let e of i)M(e);for(let e of r.listCanonical({transport:t.transport,generation:t.generation,directory:a})){let t=py(e.scope.directory,e.scope.sessionID);i.some(e=>py(e.directory,e.sessionID)===t)||b(e.scope.directory,e.scope.sessionID)}}},re=t=>{if(l||!t.isReconnect)return;let n={transport:(e.probe?.getTransport??i)(),generation:t.runtimeGeneration},r=(e.probe?.getGeneration??h)(),a=(e.probe?.getTransport??i)();if(r!==n.generation||a!==n.transport){C(`generation_mismatch`);return}ne(n)},ie=t=>{if(l)return;let r=t.directory.trim(),i=ly(e,t),a=dy({directory:r,sessionID:t.sessionID},i),c=Eg(fy({directory:r,sessionID:t.sessionID},i)),u=_.get(c);if(u&&s()-u.checkedAt<cy||v.has(c)||d.has(py(r,t.sessionID))||!n.hasSession?.(a))return;let f=n.getTranscript(a),p=f.messageOrder[f.messageOrder.length-1];p&&(v.add(c),(async()=>{try{if(uy(i,e),l)return;let u=await o({sessionID:t.sessionID,directory:r,anchor:p});if(uy(i,e),l||(_.set(c,{checkedAt:s()}),u.resetRequired)||u.complete&&u.records.length===0||u.records.length===0)return;let d=n.getTranscript(a).liveRevision;O(a,u,d)}catch{}finally{v.delete(c)}})())};return{captureCheckpoints:D,onCompensation:re,ensureOnObserve:async r=>{if(l)return null;let i=r.directory.trim(),a=py(i,r.sessionID);if(!g.has(a))return ie(r),null;x(i,r.sessionID);let o=ly(e,r),s=dy({directory:i,sessionID:r.sessionID},o),c=fy({directory:i,sessionID:r.sessionID},o),u=W_(t,c);if(u&&u.state!==`complete`&&u.anchorMessageID){M({directory:i,sessionID:r.sessionID});let e=d.get(a);return e&&await e,n.getTranscript(s)}try{uy(o,e),Hg(i,r.sessionID);try{let e=await n.ensureInitial(s);return K_(t,c),e}finally{Ug(i,r.sessionID)}}catch(t){throw e.onError?.(t,{directory:i,sessionID:r.sessionID,phase:`ensure-on-observe`}),t}},cancelAll:C,getCheckpoint:n=>{let r=ly(e,n);return W_(t,fy({directory:n.directory,sessionID:n.sessionID},r))},isSessionInFlight:(e,t)=>d.has(py(e,t)),destroy:()=>{l=!0,C(`destroy`)}}}var hy=e=>e.trim(),gy=(e,t,n)=>{let r=(n.getTransport??i)(),a=(n.getGeneration??h)();if(r!==e||a!==t)throw Error(`session status runtime changed`)},_y=(e,t={})=>{let n=hy(e),r=t.transport??i(),a=t.loadSnapshot??((e,t)=>z.getSessionStatusForDirectory(e,t)),o=t.now??Date.now,s=t.runtimeProbe??{},c=(s.getGeneration??h)();return ot({queryKey:N.sessionStatus.snapshot(n,r),queryFn:async({signal:e})=>{gy(r,c,s);let t=o(),i=await a(n,e);if(gy(r,c,s),i===null)throw Error(`session status snapshot unavailable`);return{snapshot:i,requestedAt:t}},staleTime:0,gcTime:3e5,retry:!1})},vy=(e,t={})=>{let{client:n=L,...r}=t;return n.fetchQuery(_y(e,r))},yy=(e,t,n)=>{let r=(n.getTransport??i)(),a=(n.getGeneration??h)();if(r!==e||a!==t)throw Error(`session active runtime changed`)},by=(e={})=>{let t=e.transport??i(),n=e.loadActive??(e=>z.getSessionActive(e)),r=e.now??Date.now,a=e.runtimeProbe??{},o=(a.getGeneration??h)();return ot({queryKey:N.sessionActive.snapshot(t,o),queryFn:async({signal:e})=>{yy(t,o,a);let i=r(),s=await n(e);return yy(t,o,a),{result:s,requestedAt:i}},staleTime:0,gcTime:3e5,retry:!1})},xy=(e={})=>{let{client:t=L,...n}=e;return t.fetchQuery(by(n))},Sy;function Cy(e){Sy=e}function wy(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 Ty(e,t){return JSON.stringify(e)===JSON.stringify(t)}function Ey(e,t){return e.type===`retry`&&typeof e.next==`number`&&e.next>t}function Dy(e,t,n=Date.now()){return e.getState().session_status?.[t]?.type===`retry`&&(e.setState(e=>{let r={...e.session_error_at};return delete r[t],{session_status:{...e.session_status,[t]:{type:`busy`}},session_status_observed_at:{...e.session_status_observed_at,[t]:n},session_error_at:r}}),!0)}function Oy(e,t,n,r=Date.now(),i){if(!e||e.state===`unsupported`||e.state===`unknown`)return t?{snapshot:t,source:`legacy`}:{snapshot:null,source:`none`};let a=e.membership,o=t??{},s=new Set([...n,...Object.keys(o)]);if(s.size===0)return{snapshot:null,source:`none`};let c={};for(let e of s){let t=Object.prototype.hasOwnProperty.call(a,e),n=wy(o[e]);if(t){c[e]=n&&Ey(n,r)?n:{type:`busy`};continue}if(i?.tailOpenSessionIds?.has(e)){c[e]=n?.type===`retry`?n:{type:`busy`};continue}c[e]=(n?.type===`retry`||n?.type===`busy`||n?.type,{type:`idle`})}return{snapshot:c,source:`fused`}}function ky(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,l=()=>o??={...a},u=()=>s??={...e.session_status_observed_at},d=()=>c??={...e.session_error_at},f=t=>{r!==void 0&&e.session_status_observed_at[t]!==r&&(u()[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=wy(t[o]);if(n&&n.type!==`idle`){Ty(a[o],n)||(l()[o]=n,i=!0),(n.type===`busy`||n.type===`retry`)&&e.session_error_at?.[o]!==void 0&&(delete d()[o],i=!0),f(o);continue}let s=a[o];(!s||s.type!==`idle`)&&(l()[o]={type:`idle`},i=!0),f(o)}return!o&&!s&&!c?e:{...o?{session_status:o}:{},...s?{session_status_observed_at:s}:{},...c?{session_error_at:c}:{}}}),i}function Ay(e,t){return Array.from(new Set([...e,...Object.keys(t)]))}async function jy(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 vy(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 xy({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}=Oy(l,h,n,Date.now(),{tailOpenSessionIds:r.tailOpenSessionIds});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=Ay(n,_);if(x.length===0)return null;t.setState({session_status_snapshot_at:b}),ky(t,_,x,b);let S=r.onAuthoritativeGlobalStatusConverge??Sy;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 My({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:jy(e,n,[t],{isStale:s,loadSnapshot:c,loadActive:l,now:u,queryClient:d,runtimeProbe:f,transport:p,skipActive:m})}function Ny(e){return{transport:e.transport,generation:e.generation,directory:e.directory,sessionID:e.sessionID}}function Py(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 Fy(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 Iy(e,t={}){let n=new Map,r=new Map,i=e=>Promise.all([n.get(nc(e))??Promise.resolve(),r.get(ic(e))??Promise.resolve()]).then(()=>void 0),a=(e,t)=>{let r=nc(e),a=i(e).then(t,t);return n.set(r,a.then(()=>void 0,()=>void 0)),a},o=(e,t)=>{let n=ic(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??Cg)();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 Ly=new Map;function Ry(e,t){let n=Ly.get(e);if(n)return n;let r=t().finally(()=>{Ly.get(e)===r&&Ly.delete(e)});return Ly.set(e,r),r}var zy=e=>`message\n${e.runtimeKey}\n${e.directory}\n${e.sessionID}\n${e.messageID}`;function By(e){return Ry(zy(e),e.request)}function Vy(e,t){return`${e}\n${t}`}var Hy=new Map;function Uy(e){return Hy.get(e)}async function Wy(e){return By({runtimeKey:Vy(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 Hy.set(r.id,i),{info:sp(r),parts:i}}})}function Gy(e,t){let n=e.info;return n.role===t||n.clientRole===t}function Ky(e){let t=new Set(e.map(e=>e.info.id)),n=[],r=new Set;for(let i of e){if(!Gy(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 qy(e){if(e.complete){let t=e.records.some(e=>Gy(e,`user`));return{records:e.records,boundaryFound:t,partial:!1}}let t=Ky(e.records);if(t.length===0){let t=e.records.some(e=>Gy(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=>Gy(e,`user`));return{records:i,boundaryFound:a,partial:!a}}function Jy(e){return e.trim()}function Yy(e,t){let n=e.transport??t.transport??(t.probe?.getTransport??i)(),r=e.generation??t.generation??(t.probe?.getGeneration??h)();return{directory:Jy(e.directory),sessionID:e.sessionID,transport:n,generation:r}}function K(e){return`${e.transport}\n${e.generation}\n${e.directory}\n${e.sessionID}`}function Xy(e){return{sessionID:e,messageOrder:[],messagesByID:{},partsByMessageID:{},boundary:il,liveRevision:0}}function Zy(e,t){if(!e||e.pages.length===0)return Xy(t);let n=qh(e,t);return{sessionID:t,messageOrder:n.messageOrder,messagesByID:n.messagesByID,partsByMessageID:n.partsByMessageID,boundary:n.boundary,liveRevision:n.liveRevision}}function Qy(e){let t=e?.time?.created;return typeof t==`number`&&Number.isFinite(t)?t:void 0}function $y(e){return!!e?.some(e=>e.__openchamberOptimistic===!0)}function eb(e,t){if(t.records.length===0)return[];let n;for(let e of t.records){let t=Qy(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=Qy(e.messagesByID[t]);a===void 0||a<=n||$y(e.partsByMessageID[t])||i.push(t)}return i}function tb(e={}){let t=e.client??L,n=e.cacheBudget??Lg({client:t,activeRegistry:e.activeRegistry??Mg()}),r=n.activeRegistry,a=new Map,o=new Map,s=new Map,c=new Map,l=new Map,u=e.durableStore?Iy(e.durableStore,{getProtectScopes:()=>r.listRetained().map(Ny),getByteBudget:e.getDurableByteBudget}):void 0,d=new Map,f=new Map,p=new Map,m=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=Zy(w(e),t.sessionID);!Cl(r)&&!v.has(n)||(y.add(n),Xv(sv({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=l.get(e);return t||(t={messages:new Map,parts:new Map},l.set(e,t)),t},w=n=>{let r=Yy(n,e);return gg({directory:r.directory,sessionID:r.sessionID},t,r.transport,r.generation)},T=t=>{let n=Yy(t,e);return ig({directory:n.directory,sessionID:n.sessionID},n.transport,n.generation)},E=t=>{let n=Yy(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 r=e.probe??{getTransport:i,getGeneration:h},o=Yy(n,{...e,transport:void 0,generation:void 0,probe:r}),s=K(o),c=a.get(s);if(c)return c;if(!e.fetcher)throw Error(`Query transcript repository requires a fetcher for HTTP loads`);let l=mg({directory:o.directory,sessionID:o.sessionID,fetcher:e.fetcher,transport:o.transport,generation:o.generation,probe:r,client:t,initialLimit:e.initialLimit,historyLimit:e.historyLimit});return a.set(s,l),l},k=t=>{let n=K(Yy(t,e));l.delete(n);let r=o.get(n);if(!(!r||r.size===0))for(let e of r)e(t)},A=n=>{let r=K(Yy(n,e));if(s.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)});s.set(r,a)},j=e=>{let t=o.get(e);if(t&&t.size>0)return;let n=s.get(e);n&&(n(),s.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 p.keys())t.startsWith(e)&&p.delete(t);for(let t of m.keys())t.startsWith(e)&&m.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 p)if(e.startsWith(t)&&n.status===`loading`)return!0;for(let e of m.keys())if(e.startsWith(t))return!0;return!1},se=t=>{let n=Yy({directory:t.directory,sessionID:t.sessionID},e);return n.transport===t.transport&&n.generation===t.generation},ce=(e,t,n)=>{u&&u.persistSettled(Ny(e),t,n??[])},le=(e,t,n,r)=>{if(!u||S>0||!r.applied||!r.changed)return;let i=Ny(t);if(n.type===`remove-message`){u.removeMessage(i,n.messageID);return}if(n.type===`reset`){if(u.clearSession(i),n.page){let r=Zy(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=Zy(w(e),t.sessionID);for(let e of r){let n=Fy(e);if(n.action===`remove`){u.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=Zy(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,r)=>{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:i,getGeneration:h},s={directory:n.directory,sessionID:n.sessionID,limit:e.initialLimit??sh()};return Py(r?.fresh?await t.fetchQuery({...cg(s,a,n.transport,o,n.generation),staleTime:0}):await lg(s,a,t,n.transport,o,n.generation))},N=(e,t)=>{for(let n of t)lu(`${e.directory}\n${e.sessionID}\n${n}`,()=>P.materializeMessage(e,n),{priority:`background`}).catch(()=>void 0)},de=(e,t)=>{let r=K(t),i=f.get(r);if(i)return i;let a=(async()=>{let i=Date.now();d.set(r,{status:`loading`});try{let i=await ue(t);if(!se(t))return d.delete(r),P.getTranscript(e);P.apply(e,{type:`http-page`,purpose:`initial`,page:i}),Ym(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(!_l(P.getParts(e,i),P.getMessage(e,i)??o.info)){ne(t,i),p.set(M(t,i),{status:`ready`}),r+=1;continue}n.push(i)}}r>0&&k(e),N(e,n)}return d.delete(r),n.noteScopeObserved(E(e)),D(e),P.getTranscript(e)}catch(n){if(n instanceof Jh||!se(t))return d.delete(r),P.getTranscript(e);throw d.set(r,{status:`error`,error:n instanceof Error?n.message:String(n)}),Xv(sv({kind:`request-error`,sessionID:t.sessionID,directory:t.directory,transport:t.transport,generation:t.generation,source:`network`,purpose:`initial`,durationMs:Date.now()-i,transcript:Zy(w(e),t.sessionID),request:P.getRequestState?.(e),hydration:P.getHydrationState?.(e),error:n})),n}finally{f.delete(r)}})();return f.set(r,a),a},fe=(e,t)=>{let r=K(t),i=f.get(r);if(i)return i;let a=(async()=>{let i=Date.now(),a=P.getTranscript(e).liveRevision;d.set(r,{status:`loading`});try{let i=await ue(t,{fresh:!0});if(!se(t))return d.delete(r),P.getTranscript(e);let o=P.getTranscript(e).liveRevision;return o<a||tu(t.sessionID,t.directory)?(d.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}),Ym(t.directory,t.sessionID,{transport:t.transport,generation:t.generation}),d.delete(r),n.noteScopeObserved(E(e)),D(e),P.getTranscript(e))}catch(n){return d.delete(r),n instanceof Jh||!se(t)||Xv(sv({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:Zy(w(e),t.sessionID),request:P.getRequestState?.(e),hydration:P.getHydrationState?.(e),error:n})),P.getTranscript(e)}finally{f.delete(r)}})();return f.set(r,a),a},pe=t=>{let n=w(t);return!n||n.pages.length===0||_.has(K(Yy(t,e)))?!0:vh(n).kind===`unknown`},P={getTranscript(t){let n=Yy(t,e),r=K(n),i=Zy(w(t),n.sessionID);return ee(r,i)},getPagination(t){let n=Yy(t,e),r=K(n),i=P.getTranscript(t);return te(r,Dl(n.sessionID,i.boundary))},getRequestState(t){let n=Yy(t,e),r=d.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=Yy(t,e),r=K(n),i=P.getTranscript(t);Cl(i)&&v.set(r,!0);let a=v.has(r);return{sessionID:n.sessionID,p0Satisfied:a,phase:wl({p0Satisfied:a,prependActive:b.has(r),materializeActive:oe(n),earlierHistoryLoaded:bl(i)>1})}},hasSession(e){return w(e)!==void 0},getMessage(t,n){let r=K(Yy(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(Yy(t,e)),i=C(r),a=P.getTranscript(t).partsByMessageID[n]??nb,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=Yy(t,e),i=p.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)||gl(P.getParts(t,n))?{sessionID:r.sessionID,messageID:n,status:`idle`}:{sessionID:r.sessionID,messageID:n,status:`ready`}},async materializeMessage(t,n){let r=Yy(t,e),i=M(r,n),a=Zv(()=>P.getTranscript(t)),o=e=>{try{let t=Zv(e);if(!a||!t)return;Qv({trigger:`materialize`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,purpose:`exact`,before:a,after:t})}catch{}},s=m.get(i);if(s)return s.then(e=>o(()=>e)).catch(()=>void 0),s;let c=(async()=>{try{if(!P.getMessage(t,n))return p.set(i,{status:`idle`}),P.getTranscript(t);if(!gl(P.getParts(t,n))&&!g.get(K(r))?.has(n))return p.set(i,{status:`ready`}),P.getTranscript(t);p.set(i,{status:`loading`}),k(t);try{let a=await Wy({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??[]}]}),gl(P.getParts(t,n))?p.set(i,{status:`error`,error:`session.message failed: slim parts remain`}):p.set(i,{status:`ready`}),k(t),P.getTranscript(t)):(p.delete(i),P.getTranscript(t))}catch(e){if(!se(r))return p.delete(i),P.getTranscript(t);let n=e instanceof Error?e.message:`session.message failed`;return p.set(i,{status:`error`,error:n}),k(t),P.getTranscript(t)}}finally{ne(r,n)}})();return m.set(i,c),c.then(e=>o(()=>e)).catch(()=>void 0),c.finally(()=>{m.get(i)===c&&m.delete(i)}),c},apply(r,i){let a=Yy(r,e),o=T(r),s=(()=>{switch(i.type){case`http-page`:{let e=hg(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=hg(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=hg(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=hg(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}),hg(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=hg(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=hg(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 rb(t,o,a.sessionID,i,()=>k(r));case`remove-message`:{let e=hg(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&&(ty({directory:a.directory,sessionID:a.sessionID,transport:a.transport,generation:a.generation,command:i,transcript:Zy(w(r),a.sessionID),request:P.getRequestState?.(r),hydration:P.getHydrationState?.(r),error:s.error,changed:s.changed}),x(r,a)),s},subscribe(t,i){let a=K(Yy(t,e)),s=o.get(a);if(!s){s=new Set,o.set(a,s);let e=E(t);c.set(a,r.retain(e)),n.noteScopeObserved(e)}return s.add(i),A(t),()=>{let e=o.get(a);if(e){if(e.delete(i),e.size===0){let e=c.get(a);e&&(e(),c.delete(a))}j(a)}}},async ensureInitial(t){let i=Yy(t,e),a=K(i);if(u&&await u.wait(Ny(i)),w(t)===void 0&&e.durableStore)try{let n=await e.durableStore.readSession(Ny(i));if(se(i)&&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)_l(t.parts,t.info)&&e.add(t.info.id);e.size>0&&g.set(a,e),_.add(a)}finally{--S}}}catch(e){Xv(sv({kind:`request-error`,sessionID:i.sessionID,directory:i.directory,transport:i.transport,generation:i.generation,source:`durable-cache`,purpose:`durable-seed`,error:e}))}if(pe(t)&&w(t)!==void 0){let e=Date.now(),n=await de(t,i);return Xv(sv({kind:`ensure-initial`,sessionID:i.sessionID,directory:i.directory,transport:i.transport,generation:i.generation,source:`network`,durationMs:Date.now()-e,transcript:n,request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t)})),x(t,i),n}let o=w(t);if(o&&o.pages.length>0&&!pe(t)&&e.fetcher&&!r.isRetained(E(t))){let e=Date.now(),n=await fe(t,i);return Xv(sv({kind:`ensure-initial`,sessionID:i.sessionID,directory:i.directory,transport:i.transport,generation:i.generation,source:`network`,durationMs:Date.now()-e,transcript:n,request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t)})),x(t,i),n}let s=O(t),c=Date.now(),l=w(t)!==void 0;d.delete(a);try{await s.ensureInitial()}catch(e){throw Xv(sv({kind:`request-error`,sessionID:i.sessionID,directory:i.directory,transport:i.transport,generation:i.generation,source:l?`query-cache`:`network`,purpose:`initial`,durationMs:Date.now()-c,transcript:Zy(w(t),i.sessionID),request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t),error:e})),e}d.delete(a),l||Ym(i.directory,i.sessionID,{transport:i.transport,generation:i.generation}),n.noteScopeObserved(E(t)),D(t);let f=P.getTranscript(t);return Xv(sv({kind:`ensure-initial`,sessionID:i.sessionID,directory:i.directory,transport:i.transport,generation:i.generation,source:l?`query-cache`:`network`,durationMs:Date.now()-c,transcript:f,request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t)})),x(t,i),f},async fetchPreviousPage(t){if(pe(t)&&await P.ensureInitial(t),vh(w(t)).kind!==`has-more`)return P.getTranscript(t);let n=Yy(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 Xv(sv({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 Xv(sv({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=Yy(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=Yy(t,e),i=Zv(()=>P.getTranscript(t)),a=P.getTranscript(t).liveRevision,o=await e.fetcher({directory:r.directory,sessionID:r.sessionID,limit:e.initialLimit??sh(),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=eb(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=Zv(()=>c);i&&e&&Qv({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=Zv(()=>P.getTranscript(t)),i=E(t);return u&&await u.clearSession(Ny(Yy(t,e))),n.destructiveReset(i,async()=>{let n=Yy(t,e),i=K(n),o=a.get(i);if(o&&(o.destroy(),a.delete(i)),l.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=Zv(()=>s);r&&e&&Qv({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(Yy(t,e)),i=a.get(r);i&&(i.destroy(),a.delete(r)),l.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),l.delete(n);let e=c.get(n);e&&(e(),c.delete(n));let t=s.get(n);t&&(t(),s.delete(n)),o.delete(n)}ie(`${e}\n${t}\n`),re(`${e}\n${t}\n`),ae(`${e}\n${t}\n`),n.purgeGeneration(e,t),u&&u.clearGeneration({transport:e,generation:t})},destroy(){for(let e of a.values())e.destroy();a.clear();for(let e of s.values())e();s.clear();for(let e of c.values())e();c.clear(),o.clear(),l.clear(),d.clear(),f.clear(),p.clear(),m.clear(),g.clear(),v.clear(),y.clear(),b.clear(),n.dispose()}};return P}var nb=Object.freeze([]);function rb(e,t,n,r,i){if(r.records.length===0)return{applied:!1,changed:!1};let a=hg(e,t,n,{type:`durable-seed`,records:r.records,skipPartTypes:r.skipPartTypes,merge:r.merge});return a.result.changed&&i(),a.result}var ib=`/api/openchamber/transcript-cache`,ab=new Set([`unchanged`,`not-settled`,`slim-downgrade`]),ob=e=>typeof e==`object`&&!!e&&!Array.isArray(e),sb=(e,t)=>{if(typeof e!=`string`||e.length===0)throw Error(`Invalid transcript cache ${t}`);return e},cb=(e,t)=>{if(typeof e==`number`&&Number.isInteger(e))return e;throw Error(`Invalid transcript cache ${t}`)},lb=e=>{if(!ob(e))throw Error(`Invalid transcript cache scope`);return{transport:sb(e.transport,`scope`),generation:cb(e.generation,`scope`),directory:sb(e.directory,`scope`),sessionID:sb(e.sessionID,`scope`)}},ub=(e,t)=>{if(e===`slim`||e===`full`)return e;throw Error(`Invalid transcript cache ${t}`)},db=e=>{if(!ob(e)||!ob(e.info)||!Array.isArray(e.parts)||!Array.isArray(e.partCompleteness)||!ob(e.sortKey))throw Error(`Invalid transcript cache record`);return{scope:lb(e.scope),messageID:sb(e.messageID,`message ID`),info:e.info,parts:e.parts,partCompleteness:e.partCompleteness.map(e=>ub(e,`part completeness`)),completeness:ub(e.completeness,`completeness`),contentHash:sb(e.contentHash,`content hash`),byteSize:cb(e.byteSize,`byte size`),lastAccessedAt:cb(e.lastAccessedAt,`lastAccessedAt`),sortKey:{created:cb(e.sortKey.created,`sort key`),messageID:sb(e.sortKey.messageID,`sort key`)}}},fb=(e,t)=>{if(!ob(e)||!Array.isArray(e.records))throw Error(`Invalid transcript cache session`);let n=e.records.map(db);return{scope:e.scope===void 0?_c(t):lb(e.scope),records:n,byteSize:typeof e.byteSize==`number`&&Number.isFinite(e.byteSize)?e.byteSize:n.reduce((e,t)=>e+t.byteSize,0)}},pb=e=>{if(!ob(e))throw Error(`Invalid transcript cache upsert`);if(e.status===`written`)return{status:`written`,record:db(e.record)};if(e.status===`skipped`){if(typeof e.reason!=`string`||!ab.has(e.reason))throw Error(`Invalid transcript cache upsert`);return{status:`skipped`,reason:e.reason,...e.record===void 0?{}:{record:db(e.record)}}}throw Error(`Invalid transcript cache upsert`)},mb=e=>{if(!ob(e))throw Error(`Invalid transcript cache evict`);return{evicted:cb(e.evicted,`evict`),freedBytes:cb(e.freedBytes,`evict`),remainingBytes:cb(e.remainingBytes,`evict`)}},hb=e=>({scope:_c(e),records:[],byteSize:0}),gb=(e,t)=>ob(e)&&typeof e.error==`string`&&e.error.length>0?e.error:t,_b=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`)}},vb=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 _b(r)};let i=await _b(r).catch(()=>void 0);throw Error(gb(i,`Transcript cache request failed (${r.status})`))},yb=e=>({transport:e.transport,generation:String(e.generation),directory:e.directory,sessionID:e.sessionID}),bb=(e,t)=>({method:e,headers:{Accept:`application/json`,"Content-Type":`application/json`},body:JSON.stringify(t)});function xb(e={}){let t=e.fetch??F;return{async readSession(e){let n=await vb(t,`${ib}/session`,{method:`GET`,query:yb(e)});return n.kind===`disabled`||n.kind===`not-found`?hb(e):fb(n.payload,e)},async readMessage(e,n){let r=await vb(t,`${ib}/message`,{method:`GET`,query:{...yb(e),messageID:n}});if(r.kind!==`disabled`&&r.kind!==`not-found`){if(!ob(r.payload))throw Error(`Invalid transcript cache record`);return db(r.payload.record??r.payload)}},async upsertSettled(e,n,r){let i=await vb(t,`${ib}/message`,bb(`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 pb(i.payload)},async removeMessage(e,n){let r=await vb(t,`${ib}/message`,bb(`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 vb(t,`${ib}/session`,bb(`DELETE`,{scope:e}));if(n.kind!==`disabled`&&n.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async clearGeneration(e){let n=await vb(t,`${ib}/generation`,bb(`DELETE`,e));if(n.kind!==`disabled`&&n.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async evictToBytes(e,n){let r=await vb(t,`${ib}/evict`,bb(`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 mb(r.payload)},async clearAll(){let e=await vb(t,`${ib}/all`,{method:`DELETE`,headers:{Accept:`application/json`}});if(e.kind!==`disabled`&&e.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async destroy(){}}}var Sb=`openchamber-transcript-durable`,Cb=1,wb=`transcriptIndex`,Tb=`transcriptContent`,Eb=class extends Error{code;constructor(e){super(e),this.code=e}},Db=e=>({id:rc(e.scope,e.messageID),scope:_c(e.scope),scopeKey:nc(e.scope),generationKey:ic(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}),Ob=(e,t)=>({scope:_c(e.scope),messageID:e.messageID,info:gc(t.info),parts:gc(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}}),kb=async(e,t)=>{let n=await e.getIndex(t),r=await e.getContent(t);if(n&&r)return Ob(n,r);n&&await e.deleteIndex(t),r&&await e.deleteContent(t)},Ab=async(e,t)=>{await e.deleteIndex(t),await e.deleteContent(t)},jb=(e,t)=>new Promise((n,r)=>{e.onsuccess=()=>n(e.result),e.onerror=()=>r(e.error??t.error??Error(`IndexedDB request failed`))}),Mb=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){n(new Eb(`database-unavailable`));return}let r=indexedDB.open(e,Cb),i=!1,a=()=>{i||(i=!0,n(new Eb(`database-unavailable`)))};r.onupgradeneeded=()=>{let e=r.result;if(!e.objectStoreNames.contains(wb)){let t=e.createObjectStore(wb,{keyPath:`id`});t.createIndex(`scopeKey`,`scopeKey`,{unique:!1}),t.createIndex(`generationKey`,`generationKey`,{unique:!1}),t.createIndex(`lastAccessedAt`,`lastAccessedAt`,{unique:!1})}e.objectStoreNames.contains(Tb)||e.createObjectStore(Tb,{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}),Nb=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){t();return}let r=indexedDB.deleteDatabase(e);r.onsuccess=()=>t(),r.onerror=()=>n(r.error??new Eb(`database-unavailable`)),r.onblocked=()=>void 0}),Pb=(e=Sb)=>({transaction:async t=>{let n=await Mb(e),r=n.transaction([wb,Tb],`readwrite`),i=r.objectStore(wb),a=r.objectStore(Tb),o=e=>jb(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:()=>Nb(e)});function Fb(e,t={}){let n=vc(t.now??Date.now),r=async(e,t)=>(t.lastAccessedAt=n(),await e.putIndex(Db(t)),yc(t));return{async readSession(t){return e.transaction(async e=>{let r=await e.getIndexesByScope(nc(t)),i=[];for(let t of r){let r=await e.getContent(t.id);if(!r){await e.deleteIndex(t.id);continue}let a=Ob(t,r);a.lastAccessedAt=n(),await e.putIndex(Db(a)),i.push(a)}return bc(t,i)})},async readMessage(t,n){return e.transaction(async e=>{let i=await kb(e,rc(t,n));if(i)return r(e,i)})},async upsertSettled(t,i,a){let o=xc({info:i,incomingCompleteness:lc(a)});if(o.status===`skipped`&&o.reason===`not-settled`)return{status:`skipped`,reason:`not-settled`};let s=gc(a.slice()),c=lc(s),l=await fc(i,s),u=rc(t,i.id);return e.transaction(async e=>{let a=await kb(e,u),o=xc({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:yc(a)}:o.reason===`unchanged`&&a?{status:`skipped`,reason:`unchanged`,record:await r(e,a)}:{status:`skipped`,reason:o.reason};let d={scope:_c(t),messageID:i.id,info:gc(i),parts:s,partCompleteness:s.map(cc),completeness:c,contentHash:l.hash,byteSize:l.byteSize,lastAccessedAt:n(),sortKey:oc(i)};return await e.putIndex(Db(d)),await e.putContent({id:u,info:gc(i),parts:s}),{status:`written`,record:yc(d)}})},async removeMessage(t,n){await e.transaction(e=>Ab(e,rc(t,n)))},async clearSession(t){await e.transaction(async e=>{let n=await e.getIndexesByScope(nc(t));for(let t of n)await Ab(e,t.id)})},async clearGeneration(t){await e.transaction(async e=>{let n=await e.getIndexesByGeneration(ic(t));for(let t of n)await Ab(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(nc)),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?ac(e.sortKey,t.sortKey):e.lastAccessedAt-t.lastAccessedAt),c=0,l=0;for(let t of s){if(o<=r)break;await Ab(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 Ib(e={}){return Fb(e.driver??Pb(e.databaseName),e)}function Lb(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 Rb=async e=>{let t=(await Promise.allSettled(e)).find(e=>e.status===`rejected`);if(t)throw t.reason};function zb(e={}){let t,n,r=()=>(t??=(e.createHttpStore??xb)(),t),i=()=>(n??=(e.createIndexedDBStore??Ib)(),n),a=()=>Lb(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=>Rb([r().clearGeneration(e),i().clearGeneration(e)]),evictToBytes:(e,t)=>a().evictToBytes(e,t),clearAll:()=>a().clearAll(),destroy:async()=>{}}}async function Bb(e={}){await zb(e).clearAll()}var Vb=(e,t)=>e<t?-1:+(e>t);function Hb(e){return e.filter(e=>!!e?.id).sort((e,t)=>Vb(e.id,t.id))}async function Ub(e){let t=e.before?`prepend`:e.purpose??`initial`,n=t===`prepend`||t===`recovery`||t===`materialize`?t:`initial`,r=await $g({sessionID:e.sessionID,directory:e.directory,purpose:n,...e.before?{before:e.before}:{},signal:e.signal}),a=r.records.map(e=>({info:sp(e.info),parts:Hb(e.parts??[])}));if(!e.before&&!r.complete&&Ky(a).length>0){let t=z.getScopedSdkClient(e.directory);a=(await qy({records:a,complete:r.complete,requestMessage:async n=>{let r=await Wy({transport:i(),generation:h(),directory:e.directory,sessionID:e.sessionID,messageID:n,request:()=>t.session.message({sessionID:e.sessionID,messageID:n,directory:e.directory})});return{info:r.info,parts:Hb(r.parts??[])}}})).records.map(e=>({info:e.info,parts:Hb(e.parts??[])}))}return{records:a,cursor:r.cursor??void 0,complete:r.complete,turnCount:r.turnCount,requestedTurnLimit:e.limit}}function Wb(e){let t=e.client??L,n=Mg(),r=Lg({client:t,activeRegistry:n}),a=tb({client:t,cacheBudget:r,activeRegistry:n,probe:{getTransport:i,getGeneration:h},fetcher:e=>Ub({directory:e.directory,sessionID:e.sessionID,limit:e.limit,before:e.before,signal:e.signal}),initialLimit:sh(),historyLimit:ch(),durableStore:e.durableStore??zb()}),o=my({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:r,probe:{getTransport:i,getGeneration:h},confirmSessionStatus:async(t,n)=>{let r=e.childStores.getChild(t.directory);if(!r)return;let i=r.getState().session_status?.[t.sessionID];!n.tailOpen&&i?.type!==`busy`&&i?.type!==`retry`||await jy(t.directory,r,[t.sessionID],n.tailOpen?{tailOpenSessionIds:new Set([t.sessionID])}:{})}});return _u(a),Au(o),{repository:a,destroy:()=>{o.cancelAll(`dispose`),Au(null),a.destroy(),vu()}}}function Gb(e){return yu().apply(W(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 Kb=new Map;function qb(e,t,n,r){return`${n}\0${r}\0${t??``}\0${e}`}async function Jb(e,t,n,r={}){let a=r.getTransportIdentity??i,o=r.getGeneration??h,s=a(),c=o(),l=qb(e,t,s,c),u=()=>a()===s&&o()===c,d=Kb.get(l)??Promise.resolve(),f,p=new Promise(e=>{f=e}),m=d.catch(()=>void 0).then(()=>p);Kb.set(l,m);try{if(await d.catch(()=>void 0),!u())throw Error(`Session history mutation aborted because the runtime changed`);return await n({transportIdentity:s,generation:c,isCurrent:u})}finally{f(),Kb.get(l)===m&&Kb.delete(l)}}var Yb=new Set,Xb=new Set,Zb=new Set,Qb=new Set,$b={onDeleteRequest(e){return Yb.add(e),()=>{Yb.delete(e)}},requestDelete(e){!e.sessions.length&&e.mode!==`worktree`||Yb.forEach(t=>t(e))},onCreateRequest(e){return Xb.add(e),()=>{Xb.delete(e)}},requestCreate(e){let t=e??{};Xb.forEach(e=>e(t))},onDirectoryRequest(e){return Zb.add(e),()=>{Zb.delete(e)}},requestDirectoryDialog(){Zb.forEach(e=>e())},onGitRefreshHint(e){return Qb.add(e),()=>{Qb.delete(e)}},requestGitRefresh(e){e.directory.trim()&&Qb.forEach(t=>t(e))}},ex=50,tx=e=>{let t=Object.keys(e);if(t.length<=ex)return e;let n=t.map(t=>[t,e[t].touchedAt]).sort((e,t)=>e[1]-t[1]).slice(0,t.length-ex).map(([e])=>e),r={...e};for(let e of n)delete r[e];return r},nx=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:tx(r)})})},getSessionTodos:e=>{if(e)return t().sessions[e]?.todos}}),{name:`openchamber-session-todos`,version:1,storage:g(),partialize:e=>({sessions:e.sessions})}),{name:`TodosPersistStore`})),rx=new Set([`todowrite`,`todoread`]),ix=new Set([`error`,`aborted`,`failed`,`cancelled`,`canceled`,`timeout`]),ax=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),ox=(e,t)=>{nx.getState().setSessionTodos(e,t)},sx=e=>{if(e.type!==`tool`)return``;let t=e.tool;return typeof t==`string`?t.trim().toLowerCase():``},cx=e=>{let t=e.state;return typeof t?.status==`string`?t.status.trim().toLowerCase():void 0},lx=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},ux=e=>{if(!Array.isArray(e))return[];let t=[];for(let n of e){let e=lx(n);e&&t.push(e)}return t},dx=e=>{try{let t=JSON.parse(e);if(Array.isArray(t))return ux(t);if(t&&typeof t==`object`)return ux(t.todos)}catch{}return[]},fx=e=>{if(!rx.has(sx(e)))return[];let t=cx(e);if(t&&ix.has(t))return[];let n=e.state,r=ux(n?.input?.todos);if(r.length>0)return r;let i=n?.output;if(Array.isArray(i)){let e=ux(i);if(e.length>0)return e}if(i&&typeof i==`object`){let e=ux(i.todos);if(e.length>0)return e}return typeof i==`string`&&i.trim().length>0?dx(i):[]};function px(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=fx(r[e]);if(t.length>0)return t}}return[]}function mx(e){if(!e.sessionID||e.isStale?.()||ax(e.store.getState().todo,e.sessionID))return!1;let t=px(e.transcript);return t.length===0||e.isStale?.()||ax(e.store.getState().todo,e.sessionID)?!1:(e.store.setState(n=>({todo:{...n.todo,[e.sessionID]:t}})),e.persist?.(e.sessionID,t),!0)}function hx(e){if(!e.sessionID||!e.directory||e.isStale?.())return!1;let t=e.transcript??H()?.getTranscript(W(e.directory,e.sessionID));return t?mx({sessionID:e.sessionID,store:e.store,transcript:t,persist:ox,isStale:e.isStale}):!1}var gx=t({COMBINED_SEND_CONFIRMATION_RECOVERY:()=>vC,COMBINED_SEND_PRESENCE_GRACE_MS:()=>_C,SESSION_DELETE_UNDO_MS:()=>HS,abortBusySessionForMessageEdit:()=>MC,abortCurrentOperation:()=>CC,archiveSession:()=>QS,beginOptimisticSend:()=>cC,cancelScheduledSessionDeletes:()=>ZS,classifySendFailure:()=>fS,combinedSendConfirmationOptions:()=>yC,commitMessageEdit:()=>PC,createSession:()=>IS,deleteSession:()=>YS,dirStoreForDirectory:()=>Qx,dismissOpenQuestionsForSession:()=>DC,ensureSentUserMessagePresence:()=>SC,fetchMessagesForSession:()=>BC,fetchRecentSendConfirmationRecords:()=>hC,forkSession:()=>RC,getSendFailureKind:()=>uS,isQuestionRequestNotFoundError:()=>NS,materializeConfirmedSendRecords:()=>gC,mirrorSessionIntoLiveStores:()=>aS,optimisticInsertUserMessage:()=>pC,optimisticSend:()=>fC,patchSessionMetadata:()=>LS,refetchSessionMessages:()=>IC,rejectQuestion:()=>EC,releaseUnconfirmedQueueSend:()=>Yx,requestSessionSmartTitle:()=>tC,resolveForkMessageId:()=>Nx,respondToPermission:()=>wC,respondToQuestion:()=>TC,revertToMessage:()=>OC,rollbackOptimisticSend:()=>uC,scheduleSessionDeletes:()=>XS,setActionRefs:()=>qx,setOptimisticRefs:()=>Jx,settleOptimisticSend:()=>dC,shareSession:()=>nC,shouldSuppressForkCopyEvent:()=>Fx,stageMessageEdit:()=>AC,trackForkCopySessionCreated:()=>Tx,unarchiveSession:()=>$S,unrevertSession:()=>LC,unshareSession:()=>rC,updateSessionTitle:()=>eC,waitForConnectionOrThrow:()=>gS,waitForSessionIdleForMessageEdit:()=>NC}),_x=2,vx=150,yx=new Set([`patch`,`step-start`,`step-finish`]),bx=3,xx=150,Sx=null,Cx=new Map,wx=3e4;function Tx(e,t){let n=t?.id;!Sx||Sx.runtimeKey!==c()||Sx.directory!==e||!n||t?.title!==Sx.expectedTargetTitle||n===Sx.sourceSessionID||Sx.targetSessionID||(Sx.targetSessionID=n)}function Ex(e){let t=e.match(/^(.+) \(fork #(\d+)\)$/);return t?`${t[1]} (fork #${Number.parseInt(t[2],10)+1})`:`${e} (fork #1)`}async function Dx(e,t){$.setState(n=>n.forkTransition?.operationId===e?{forkTransition:{...n.forkTransition,stage:t}}:n),await new Promise(e=>setTimeout(e,0))}function Ox(e,t){$.setState(n=>n.forkTransition?.operationId===e?{forkTransition:{...n.forkTransition,targetSessionId:t}}:n)}function kx(e){return e?.type===`busy`||e?.type===`retry`}function Ax(e){for(let t=e.length-1;t>=0;--t)if(e[t]?.role===`user`)return t;return-1}function jx(e){let t=e.at(-1);return t?.role===`assistant`&&t.time.completed==null}function Mx(e,t){return kx(e)||e==null&&jx(t)}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(!Mx(n,t))return;let r=Ax(t);if(r!==-1)return t[r+1]?.id}async function Px(e,t){let n=Fp(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 Fx(e,t,n){if(Sx&&Sx.runtimeKey===c()&&Sx.directory===e&&t&&t===Sx.targetSessionID)return!0;if(!t||!n)return!1;let r=`${c()}:${e}:${t}`,i=Cx.get(r);return i?i.expiresAt<=Date.now()?(Cx.delete(r),!1):n<=i.messageID:!1}var Ix=null,Lx=null,Rx=()=>``,zx=new Map,Bx=null,Vx=null,Hx=null,Ux=e=>new Promise(t=>setTimeout(t,e));function Wx(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 Gx(e,t){if(!e.error)return e.data;let n=e.response?.status,r=Error(`${t} failed${n?` (${n})`:``}: ${Wx(e.error)}`);throw n!==void 0&&(r.status=n),r}function Kx(e,t){let n=Gx(e,t);if(n==null)throw Error(`${t} failed: empty response`);return n}function qx(e,t,n){if(Ix=e,Lx=t,Rx=n,zx.size>0){let e=[...zx.values()];zx.clear(),queueMicrotask(()=>{for(let t of e)BC(t.sessionID,t.directory)})}}function Jx(e,t,n){Bx=e,Vx=t,Hx=n??null}function Yx(e){let t=e.directory??null;Vx?.({sessionID:e.sessionID,directory:t,messageID:e.messageID})}function Xx(){if(!Ix)throw Error(`SDK not initialized — is SyncProvider mounted?`);return Ix}function Zx(){if(!Lx)throw Error(`Child stores not initialized`);let e=Rx();if(!e)throw Error(`No current directory`);return Lx.ensureChild(e)}function Qx(e,t){if(!Lx)throw Error(`Child stores not initialized`);if(!e)throw Error(`No directory`);return Lx.ensureChild(e,t)}function $x(e,t){let n=t??SS(e);return n?{store:Qx(n),directory:n}:{store:Zx(),directory:oS()}}function eS(e,t){let{store:n,directory:r}=$x(e,t??void 0),i=r??oS()??``;return{repository:H()??U(i,n),directory:i,store:n}}function tS(e,t){let{repository:n,directory:r,store:i}=eS(e,t);return{repository:n,directory:r,store:i,data:n.getTranscript(W(r,e))}}function nS(e,t){return Gu(tS(e,t).data)}function rS(e,t){return tS(e,t).data.messageOrder.length}function iS(e,t){let n=Lx;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]=nD(e,n[r]),t.setState({session:i}),!0}return!1}function aS(e,t){t&&iS(e,t)||iS(e)}function oS(){return Rx()||void 0}function sS(){let{hasEverConnected:e,lastDisconnectReason:t}=Hf.getState(),n=t?` (${t})`:e?``:` (never connected)`;return Error(`Connection lost${n}. Please wait for reconnection.`)}function cS(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 lS=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 uS(e){return e instanceof lS?e.kind:null}function dS(e){let t=cS(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 fS(e,t){return t?dS(e)||cS(e)===null?`ambiguous-dispatched`:`definitive-rejection`:`pre-dispatch`}var pS=2e3,mS=5e3,hS=3e4;async function gS(){let e=Um();e&&Hm(`send_stream_stale`);let t=Date.now()+(e?mS:pS);for(;Date.now()<t;){if(Hf.getState().isConnected&&!Um()||d()&&!Um())return;let e=t-Date.now();if(e<=0)break;if(await Hf.getState().probeConnection({timeoutMs:Math.min(500,e)})&&!Um())return;let n=Math.min(100,t-Date.now());n>0&&await new Promise(e=>setTimeout(e,n))}throw sS()}function _S(e){return new Promise((t,n)=>{let r=setTimeout(()=>{Hm(`send_timeout`),n(new DOMException(`Send timed out`,`TimeoutError`))},hS);e.then(e=>{clearTimeout(r),t(e)},e=>{clearTimeout(r),n(e)})})}function vS(e){let t=Y.getState();return[...t.activeSessions,...t.archivedSessions].find(t=>t.id===e)??null}function yS(e){e&&Y.getState().upsertSession(e)}function bS(e,t){let n=ap(t),r=[...e.getState().session],i=ls.search(r,n.id,e=>e.id);if(i.found){let t=nD(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 xS(e,t,n){let r=t.getState().session.find(t=>t.id===e);if(r)return r;let i=vS(e);if(i)return bS(t,i);try{return bS(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 SS(e){return CS(e)||$.getState().getDirectoryForSession(e)||oS()}function CS(e){let t=Lx;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 wS(e){let t=e?$.getState().getDirectoryForSession(e):null;return t?z.getScopedSdkClient(t):Xx()}function TS(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 ES=()=>new Map(Array.from(jd(),([e,t])=>[e,t.title||e]));function DS(e){return!(e.type!==`file`||$p(e))}function OS(e){return DS(e)?e.slim===!0||typeof e.url!=`string`||e.url.length===0:!1}function kS(e){return e.some(OS)}async function AS(e){let t=[...e.parts];if(!kS(t))return t;let n=h(),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()||h()!==n)throw Error(`Session history mutation aborted because the runtime changed`);let{repository:i,directory:a}=eS(e.sessionID,r);if(t=[...i.getParts(W(a,e.sessionID),e.messageID)],kS(t))throw Error(`composer-restoration-incomplete-attachment`);return t}async function jS(e){if(kS(e.parts))throw Error(`composer-restoration-incomplete-attachment`);let t=await wm(e.parts,{sessionTitles:ES(),directory:e.directory}),n=Or.getState(),r=n.getDraft(e.key);return{payload:t,commit:await km({key:e.key,expectedRevision:r?.revision??`absent`,payload:t,runtime:n.captureDraftRuntime()})}}function MS(e,t,n){let r=Lx;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 NS(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 PS(e,t){let n=Lx;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=MS(e,t,n);return r?z.getScopedSdkClient(r):wS(t)}async function IS(e,t,n,r){try{let i=await z.createSession({title:e,parentID:n??void 0,metadata:r},t??oS()),a=i.directory??null;return a&&Cd(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 LS(e,t,n){let r=t??SS(e),i=n(Fp(await z.getSession(e,r))),a=await z.updateSession(e,{metadata:i},r);Y.getState().upsertSession(a);let o=a.directory??r;return o&&Cd(a.id,o),a}async function RS(e,t){let n;try{n=await z.getSession(e,t??SS(e))}catch{return}if(!zp(n))return;let r=Rp(n);if(r)try{await LS(r,t??SS(r),t=>Hp(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 zS(e,t){if(!Lx)return[];let n=[],r=new Set,i=[];if(t){let e=Lx.children.get(t);e&&(i.push([t,e]),r.add(t))}for(let e of Lx.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 BS(e){if(Lx)for(let t of e){let e=Lx.children.get(t.directory);e&&e.setState({session:t.sessions})}}function VS(e){$.getState().setWorktreeMetadata(e,null)}var HS=1e4,US=new Map,WS=0;function GS(e){if(e.time?.archived===void 0)return e;let t={...e.time};return delete t.archived,{...e,time:t}}function KS(e){Y.getState().clearSessionsPendingDeletion([e.sessionId]),BS(e.listSnapshots),yS(e.globalSnapshot),e.wasCurrent&&$.getState().setCurrentSession(e.sessionId,e.directory??null)}function qS(e,t){let n=t??SS(e);Y.getState().markSessionsPendingDeletion([e]);let r=zS(e,n),i=vS(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 JS(e,t){try{if(await RS(e,t),await z.deleteSession(e,t)!==!0)throw Error(`session.delete failed: server did not confirm deletion`);return zS(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&&(zS(e,t),Y.getState().removeSessions([e]),VS(e),Y.getState().clearSessionsPendingDeletion([e]),!0)}}async function YS(e,t){let n=qS(e);return await JS(e,n.directory)?!0:(KS(n),!1)}function XS(e,t){let n=Array.from(new Set(e.filter(Boolean)));if(n.length===0)return{batchId:``,scheduledIds:[]};let r=n.map(e=>qS(e)),i=`session-delete-${Date.now()}-${WS+=1}`,a=t?.delayMs??1e4,o=setTimeout(()=>{(async()=>{let e=US.get(i);if(!e)return;US.delete(i);let t=[],n=[];for(let r of e.entries)await JS(r.sessionId,r.directory)?t.push(r.sessionId):(n.push(r.sessionId),KS(r));e.onSettled?.({deletedIds:t,failedIds:n})})()},a);return US.set(i,{entries:r,timer:o,onSettled:t?.onSettled}),{batchId:i,scheduledIds:n}}function ZS(e){if(!e)return!1;let t=US.get(e);if(!t)return!1;clearTimeout(t.timer),US.delete(e);for(let e of[...t.entries].reverse())KS(e);return!0}async function QS(e){let t=SS(e),n=zS(e,t),r=vS(e),i=Date.now();Y.getState().archiveSessions([e],i);let a=$.getState();a.currentSessionId===e&&a.setCurrentSession(null);try{await RS(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),BS(n),yS(r),!1}}async function $S(e){let t=SS(e),n=vS(e),r=n?GS(n):null;if(r&&(Y.getState().upsertSession(r),t&&Lx)){let e=Lx.children.get(t);e&&bS(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=GS(n);if(Y.getState().upsertSession(r),t&&Lx){let e=Lx.children.get(t);e?bS(e,r):aS(r,t)}else aS(r,t);return!0}catch(r){return console.error(`[session-actions] unarchiveSession failed`,r),n&&(Y.getState().upsertSession(n),n.time?.archived&&zS(e,t)),!1}}async function eC(e,t){let n=SS(e),r=vS(e),i=r?.metadata??{},a=i.openchamber&&typeof i.openchamber==`object`?i.openchamber:{},o=a.titleRefresh&&typeof a.titleRefresh==`object`?a.titleRefresh:{},s=r?Jf(r):0,c=await z.updateSession(e,{title:t,metadata:{...i,openchamber:{...a,titleRefresh:{...o,activityUpdatedAt:s}}}},n);Y.getState().upsertSession(c),aS(c,n)}async function tC(e){let t=SS(e),n=vS(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),aS(s,t)}async function nC(e){let t=SS(e),n=ap(Kx(await Xx().session.share({sessionID:e,directory:t}),`session.share`));return Y.getState().upsertSession(n),iS(n,t),n}async function rC(e){let t=SS(e),n=ap(Kx(await Xx().session.unshare({sessionID:e,directory:t}),`session.unshare`));return Y.getState().upsertSession(n),iS(n,t),n}function iC(e){let t=Lx,n=e??Rx();if(!t||!n)return{store:e?Qx(e):Zx(),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 aC(){return{identity:i(),generation:h()}}function oC(e,t){return e.isCurrent()&&i()===t.identity&&h()===t.generation}function sC(e,t){if(!oC(e,t))throw Error(`Send target changed before transport dispatch`)}function cC(e){if(!Bx||!Vx)throw new lS(`pre-dispatch`,Error(`Optimistic refs not set — is useSync() mounted?`));try{let t=e.directory??oS()??null,n=iC(t),r=aC();sC(n,r),e.beforeOptimisticInsert?.(),sC(n,r);let i=e.messageID??ge(`msg`);return e.onMessageID?.(i),$.getState().markMessageSending?.(e.sessionId,i),am(e.sessionId),pC({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 lS?e:new lS(uS(e)??fS(e,!1),e)}}function lC(e){if(!oC(e.capture,e.transport)||!Vx)return;Vx({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 uC(e){lC(e),$.getState().clearMessageSending?.(e.sessionId,e.messageID)}async function dC(e){if(!Bx||!Vx)throw new lS(`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 gS(),sC(n,r),s=!0,await _S(e.send(i)),!oC(n,r))throw new lS(`ambiguous-dispatched`,Error(`Send target changed after transport dispatch`),i);e.onSendConfirmed?.(i)}catch(c){let l=uS(c)??fS(c,s),u=c instanceof lS?c:new lS(l,c,i);if(!oC(n,r))throw u;let d=l===`ambiguous-dispatched`&&!e.preserveOptimisticOnAmbiguous?await hC(a,i,o):null;if(d&&oC(n,r)){gC(n.store,a,i,d,{directory:o??void 0}),Hx?.({sessionID:a,directory:o,messageID:i});return}throw e.preserveOptimisticOnAmbiguous&&l===`ambiguous-dispatched`||lC(t),u}finally{$.getState().clearMessageSending?.(a,i)}}async function fC(e){await dC({ticket:e.ticket??cC({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 pC(e){if(!Bx)return!1;let t=e.directory??oS(),n=t?Qx(t):Zx(),r=t??oS()??``;if(bC(n,e.sessionId,e.messageID,r)){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(),s={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}},c=Zv(()=>tS(e.sessionId,t).data);Bx({sessionID:e.sessionId,directory:t,message:s,parts:a});let l=Zv(()=>tS(e.sessionId,t).data);try{c&&l&&Qv({trigger:`user-send`,sessionID:e.sessionId,directory:r,transport:i(),generation:h(),before:c,after:l})}catch{}let u=n.getState();return n.setState({session_status:{...u.session_status,[e.sessionId]:{type:`busy`}},session_status_observed_at:{...u.session_status_observed_at,[e.sessionId]:o}}),!0}function mC(e){if(!e)return!0;try{return e()===!0}catch{return!1}}async function hC(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??_x,c=r?.retryDelayMs??vx;try{for(let a=0;a<s;a+=1){if(i?.signal.aborted||!mC(r?.isCurrent)||a>0&&(await Ux(c),i?.signal.aborted||!mC(r?.isCurrent)))return null;try{let a=await Xx().session.messages({sessionID:e,directory:n??void 0,limit:dh(),...i?{signal:i.signal}:{}});if(!mC(r?.isCurrent))return null;let o=(Gx(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 gC(e,t,n,r,i){if(!r.length)return;let a=i?.directory??SS(t)??Rx(),o=W(a,t),s={type:`materialize-snapshots`,records:r.map(e=>({info:sp(e.info),parts:e.parts??[]})),skipPartTypes:yx,merge:i?.gapFillOnly===!0?Xs:Qs({purpose:`recovery`})};xu(o,s)||U(a,e).apply(o,s)}var _C=2e3,vC={attempts:12,retryDelayMs:500},yC={presenceGraceMs:_C,recovery:{...vC}};function bC(e,t,n,r){let i=r??SS(t)??Rx()??``,a=H()??U(i,e),o=W(i,t);return a.getMessage(o,n)?a.getParts(o,n).length>0:!1}function xC(e,t,n,r){let i=r?.directory??SS(t)??Rx()??``;if(bC(e,t,n,i))return Promise.resolve(!0);if(!mC(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()??U(i,e),f=W(i,t);c.unsubscribe=d.subscribe(f,()=>{if(!mC(r?.isCurrent)){l(!1);return}bC(e,t,n,i)&&l(!0)}),bC(e,t,n,i)&&l(!0)})}async function SC(e){let{store:t,sessionId:n,messageID:r,directory:i,isCurrent:a}=e;if(await xC(t,n,r,{timeoutMs:e.graceMs??yC.presenceGraceMs,isCurrent:a,directory:i}))return`present`;if(!mC(a))return`cancelled`;let o=await hC(n,r,i,{...yC.recovery,isCurrent:a});return o?mC(a)?(gC(t,n,r,o,{gapFillOnly:!0,directory:i??void 0}),`recovered`):`cancelled`:mC(a)?`missing`:`cancelled`}async function CC(e){let{store:t,directory:n}=$x(e),r=n?{state:`bound`,transportIdentity:i(),directory:n,sessionID:e}:null,a=r?$.getState().beginQueueAbortBlock(r):null;try{if(Kx(await Xx().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){r&&a&&$.getState().clearQueueAbortBlock(r,a),et(async()=>{let{rollbackQueueAbortOptimistic:e}=await Promise.resolve().then(()=>WV);return{rollbackQueueAbortOptimistic:e}},void 0).then(({rollbackQueueAbortOptimistic:t})=>{t(e)}).catch(()=>{}),console.error(`[session-actions] abort failed`,t)}}async function wC(e,t,n){await gS();let r=MS(`permission`,e,t)||SS(e)||oS();if(Kx(await FS(`permission`,e,t).permission.reply({requestID:t,reply:n,...r?{directory:r}:{}}),`permission.reply`)!==!0)throw Error(`Permission reply failed`)}async function TC(e,t,n){await gS();let r=MS(`question`,e,t)||SS(e)||oS();try{let i=n.length===0?[]:Array.isArray(n[0])?n:[n];if(Kx(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 NS(n)&&PS(e,t),n}}async function EC(e,t){await gS();let n=MS(`question`,e,t)||SS(e)||oS();try{if(Kx(await FS(`question`,e,t).question.reject({requestID:t,...n?{directory:n}:{}}),`question.reject`)!==!0)throw Error(`Question rejection failed`)}catch(n){throw NS(n)&&PS(e,t),n}}async function DC(e){if(!e)return!1;let t=Lx;if(!t)return!1;let n=[];for(let[,r]of t.children){let t=r.getState(),i=Jp(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)PS(e,t);return await Promise.all(n.map(async({sessionId:e,requestId:t})=>{try{await EC(e,t)}catch(e){if(NS(e))return;console.error(`[session-actions] Failed to dismiss open question on send:`,e)}})),!0}async function OC(e,t,n){let r=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 Jb(e,r??(()=>{try{return $x(e,r).directory}catch{return r}})(),async({isCurrent:n})=>{let{store:o,directory:c}=$x(e,r);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 Xx().session.abort({sessionID:e,directory:c})}catch{}if(!n())throw Error(`Session history mutation aborted because the runtime changed`)}let u=nS(e,c).find(e=>e.id===t),d=nS(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}=eS(e,c),m=[...f.getParts(W(p,e),t)],h=a===void 0?s?C({transportIdentity:i()},e):null:a,g={snapshot:{text:``,attachments:[],syntheticParts:[],mentions:[]},values:new Map},_,v;if(h){try{m=await AS({directory:p,sessionID:e,messageID:t,parts:m,isCurrent:n}),g=await wm(m,{sessionTitles:ES(),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 km({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 jm({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 jm({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&&$b.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 jm({key:h,restoredRevision:_,previous:v})):t instanceof Error&&t.message.includes(`runtime changed`)||(o.setState({session:r}),h&&v&&_!==void 0&&await jm({key:h,restoredRevision:_,previous:v}).catch(()=>void 0)),t}})}function kC(e,t,n,r){let a=r??SS(t)??Rx(),o=W(a,t),s=Zv(()=>tS(t,a).data),c=[...bu(t)];c.some(e=>e.directory===a&&e.sessionID===t)||c.push(o);let l=!1;for(let e of c)xu(e,{type:`remove-message`,messageID:n})!=null&&(l=!0);l||U(a,e).apply(o,{type:`remove-message`,messageID:n});let u=Zv(()=>tS(t,a).data);try{s&&u&&Qv({trigger:`user-delete`,sessionID:t,directory:a,transport:i(),generation:h(),before:s,after:u})}catch{}}async function AC(e,t,n,r){let a=n?.info,o=n?.parts,s=r?.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=$x(e,s).directory}else{c=$x(e,s).directory;let{data:n}=tS(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=r?.draftKey??C({transportIdentity:i()},e),{commit:u}=await jS({key:l,parts:await AS({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 jm({key:l,restoredRevision:d,previous:f})).status})}}function jC(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 MC(e,t){let n=t?.directory,{store:r,directory:i}=$x(e,n),a=r.getState().session_status[e];if(!(!a||a.type===`idle`))try{await Xx().session.abort({sessionID:e,directory:i})}catch{}}async function NC(e,t){let n=t?.directory,r=t?.timeoutMs??15e3,i=t?.intervalMs??100,{store:a}=$x(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 PC(e,t,n){let r=n?.directory,a=n?.preserveMessageId??$.getState().pendingSendMessageIDs.get(e),{store:o,directory:s}=$x(e,r),c=Zv(()=>tS(e,r).data);try{await MC(e,{directory:r}),await NC(e,{directory:r});let n=new Set((await FC(e,r)).map(e=>e.id)),i=jC(t,nS(e,r),n,{preserveMessageId:a});for(let t of[...i].reverse())await z.deleteSessionMessage(e,t.id,s),kC(o,e,t.id,s)}finally{try{let t=Zv(()=>tS(e,r).data);c&&t&&Qv({trigger:`user-edit`,sessionID:e,directory:s,transport:i(),generation:h(),before:c,after:t})}catch{}}}async function FC(e,t){let{directory:n}=$x(e,t);return(Gx(await Xx().session.messages({sessionID:e,directory:n,limit:uh()}),`session.messages`)??[]).filter(e=>!!e?.info?.id).map(e=>sp(e.info))}async function IC(e,t){let{store:n,directory:r}=$x(e,t),a=Zv(()=>tS(e,t).data),o=(Gx(await Xx().session.messages({sessionID:e,directory:r,limit:uh()}),`session.messages`)??[]).filter(e=>!!e?.info?.id);if(o.length===0){try{let n=Zv(()=>tS(e,t).data);a&&n&&Qv({trigger:`materialize`,sessionID:e,directory:r,transport:i(),generation:h(),purpose:`refetch`,before:a,after:n})}catch{}return[]}let s=o.map(e=>({info:sp(e.info),parts:e.parts??[]})),c=W(r??Rx(),e);xu(c,{type:`materialize-snapshots`,records:s,skipPartTypes:yx})||U(r??Rx(),n).apply(c,{type:`materialize-snapshots`,records:s,skipPartTypes:yx});try{let n=Zv(()=>tS(e,t).data);a&&n&&Qv({trigger:`materialize`,sessionID:e,directory:r,transport:i(),generation:h(),purpose:`refetch`,before:a,after:n})}catch{}return s.map(e=>e.info)}async function LC(e,t){return Jb(e,t??(()=>{try{return $x(e,t).directory}catch{return t}})(),async({isCurrent:n})=>{let{store:r,directory:i}=$x(e,t);if(!n())throw Error(`Session history mutation aborted because the runtime changed`);let a=r.getState(),o=rS(e,i),s=a.session_status[e];if(s&&s.type!==`idle`){try{await Xx().session.abort({sessionID:e,directory:i})}catch{}if(!n())throw Error(`Session history mutation aborted because the runtime changed`)}let c=await Xx().session.unrevert({sessionID:e,directory:i});if(!n())throw Error(`Session history mutation aborted because the runtime changed`);let l=Kx(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<bx;r+=1){if(r>0&&(await Ux(xx),!n())||(await IC(e,t),!n()))throw Error(`Session history mutation aborted because the runtime changed`);if(rS(e,i)>o)return}if(rS(e,i)<=o){let n=i??Rx(),a=H()??U(n,r),o=W(n,e);typeof a.destructiveReset==`function`?await a.destructiveReset(o):await IC(e,t)}})}async function RC(e,t,n,r){let i=c(),{store:a,directory:o}=$x(e,r);if(!o)throw Error(`Fork session directory is unavailable`);let s=await xS(e,a,o);Cd(e,o);let l=a.getState(),u=l.session_status[e],d=nS(e,o);u?.type,d.length;let f=Nx(n,d,u);if(!n&&Mx(u,d)&&Ax(d)===-1&&(await IC(e),l=a.getState(),u=l.session_status[e],d=nS(e,o),f=Nx(void 0,d,u)),!n&&Mx(u,d)&&Ax(d)===-1)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:rS(e,o)}),Error(`Fork source user message is unavailable`);l.session_status[e]?.type;let{repository:p,data:m}=tS(e,o),h=(n?m.messagesByID[n]??d.find(e=>e.id===n):void 0)?.role===`user`,g=h&&n?[...p.getParts(W(o,e),n)]:[],_=``;_=g.filter(e=>e.type===`text`&&!$p(e)).map(e=>e.text||e.content||``).join(`
|
|
462
401
|
`).trim();let v=g.filter(e=>e.type===`file`&&!$p(e));Sx={operationId:t,runtimeKey:i,directory:o,sourceSessionID:e,expectedTargetTitle:Ex(s.title)},await Dx(t,`copying`);let y;try{if(y=await z.forkSession(e,f,o),y.id,c()!==i)return console.warn(`[session-fork] runtime changed while fork was in progress`,{operationId:t,sessionId:e,forkedSessionId:y.id}),Sx?.operationId===t&&(Sx=null),!1;let n=[...a.getState().session],r=ls.search(n,y.id,e=>e.id);r.found||(n.splice(r.index,0,y),a.setState({session:n})),Ox(t,y.id);let s=$.getState().currentSessionId;(s===e||s===y.id)&&$.getState().setCurrentSession(y.id,o,{skipMessageFetch:!0}),await Dx(t,`opening`);try{y=await Px(y,o)}catch(e){console.warn(`[session-actions] failed to promote forked session`,e)}}catch(e){throw Sx?.operationId===t&&(Sx=null),e}try{let e=W(o,y.id),r=H();r&&typeof r.destructiveReset==`function`?await r.destructiveReset(e):xu(e,{type:`reset`}),await Dx(t,`loading`),y.id,$.getState().currentSessionId,y.id;let i=H()??U(o,a),s=W(o,y.id),l=i.getRequestState?.(s);(!(i.hasSession?.(s)??!1)||l?.status===`error`)&&await BC(y.id,o);let u=nS(y.id,o).at(-1)?.id;u&&Cx.set(`${c()}:${o}:${y.id}`,{messageID:u,expiresAt:Date.now()+wx});let d=$.getState().currentSessionId===y.id;d&&h&&_&&Or.setState({pendingInputText:_,pendingInputMode:`replace`}),d&&h&&n&&TS(v)}finally{Sx?.operationId===t&&(Sx=null)}return y.id,!0}var zC=new Map;async function BC(e,t){let n=t??oS();if(!n)return;let r=c(),i=lh(),a=`${r}:${n}:${e}:${i}`;if(!Ix||!Lx){zx.set(a,{sessionID:e,directory:n});return}let o=zC.get(a);if(o)return o;let s=VC(e,n,r,i).finally(()=>{zC.get(a)===s&&zC.delete(a)});return zC.set(a,s),s}async function VC(e,t,n,r){Xx();let i=Qx(t),a=i.getState(),o=a.session_status?.[e],s=a.session_status_observed_at?.[e],c=H()??U(t,i),l=W(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(Jm(t,e)){hx({directory:t,sessionID:e,store:i,transcript:u});return}if(H()){try{await Cu(t,e)}catch{return}if(y())return;hx({directory:t,sessionID:e,store:i,isStale:y}),await My({directory:t,sessionID:e,store:i,statusBeforePull:o,statusObservedAtBeforePull:s,hasMessages:c.getTranscript(l).messageOrder.length>0});return}hx({directory:t,sessionID:e,store:i,transcript:u});return}let b=0;try{let n=await Ub({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:yx}),b=n.records.length,Ym(t,e)}catch{return}y()||(hx({directory:t,sessionID:e,store:i,isStale:y}),await My({directory:t,sessionID:e,store:i,statusBeforePull:o,statusObservedAtBeforePull:s,hasMessages:b>0}))}var HC=18e4,UC=400,WC=300,GC=15,KC=`FINAL_REVIEW_STATUS: no_remaining_findings`,qC=KC.toLowerCase(),JC=new Set,YC=new Set,XC=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},ZC=e=>{let t=e.time?.created;return typeof t==`number`&&Number.isFinite(t)?t:0},QC=e=>{let t=e.role;return typeof t==`string`?t:``},$C=e=>{let t=e.parentID;return typeof t==`string`&&t.trim().length>0?t:null},ew=(e,t)=>Pd(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`}),tw=(e,t,n,r=0,i)=>{let a=Nd(e,t),o=new Set;for(let e of a)ew(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(QC(s)!==`assistant`||!XC(s)||ZC(s)<r-1e3)continue;let c=$C(s);if(!lw(s,i)||c&&o.has(c))continue;let l=Np(Pd(s.id,t)).trim();if(l)return{id:s.id,text:l}}return null},nw=(e,t)=>Fd(e,t)?.type===`idle`,rw=e=>e===c(),iw=e=>{Up.getState().updateRun(e.originalSessionID,e=>({...e,status:`stopped`,error:`Auto-review stopped because the runtime changed.`}))},aw=e=>{if(e&&!rw(e))throw Error(`Auto-review stopped because the runtime changed.`)},ow=e=>(e instanceof Error?e.message:String(e)).includes(`runtime changed`),sw=e=>e.trim().split(`
|
|
463
402
|
`).map(e=>e.trim()).filter(Boolean).at(-1)?.toLowerCase()===qC,cw=e=>{let t=e.trimEnd().split(`
|
|
464
403
|
`);for(;t.length>0&&t[t.length-1].trim()===``;)t.pop();return t.at(-1)?.trim().toLowerCase()===qC&&t.pop(),t.join(`
|
|
465
|
-
`).trim()},lw=(e,t)=>!t||$C(e)===t,uw=(e,t)=>[e.runtimeKey,e.originalSessionID,e.phase,e.expectedAssistantParentID??``,t].join(`:`),dw=(e,t)=>{let n=uw(e,t);return YC.has(n)?null:(YC.add(n),n)},fw=e=>{YC.delete(e)},pw=()=>[{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${KC}\nIf you found issues that require changes, do not include that final status line.`}],mw=async e=>{for(;;){let t=Up.getState().runsByOriginalSessionID[e];if(!t||t.status!==`running`)return;if(!rw(t.runtimeKey)){iw(t);return}let n=t.phase===`waiting_for_reviewer`?t.reviewSessionID:t.originalSessionID;if(!nw(n,t.directory)){await new Promise(e=>setTimeout(e,WC));continue}let r=tw(n,t.directory,t.lastForwardedMessageID,t.waitAfterCreatedAt,t.expectedAssistantParentID);if(!r){await new Promise(e=>setTimeout(e,WC));continue}if(t.phase===`waiting_for_reviewer`){let e=dw(t,r.id);if(!e){await new Promise(e=>setTimeout(e,WC));continue}if(!rw(t.runtimeKey)){fw(e),iw(t);return}try{let e=Date.now(),n=sw(r.text),i=n?cw(r.text):r.text,a=await Ew(t.reviewSessionID,t.directory,i,t.runtimeKey);if(n){Up.getState().completeRun(t.originalSessionID);return}Up.getState().updateRun(t.originalSessionID,t=>({...t,phase:`waiting_for_implementer`,lastForwardedMessageID:r.id,expectedAssistantParentID:a,waitAfterCreatedAt:e}))}finally{fw(e)}}else{if(t.iteration>=t.maxIterations){Up.getState().stopRun(t.originalSessionID);return}let e=dw(t,r.id);if(!e){await new Promise(e=>setTimeout(e,WC));continue}if(!rw(t.runtimeKey)){fw(e),iw(t);return}try{let e=Date.now(),n=await Dw(t.originalSessionID,t.directory,r.text,!0,t.runtimeKey);Up.getState().updateRun(t.originalSessionID,t=>({...t,phase:`waiting_for_reviewer`,iteration:t.iteration+1,lastForwardedMessageID:r.id,expectedAssistantParentID:n,waitAfterCreatedAt:e}))}finally{fw(e)}}}},hw=e=>{Up.getState().upsertRun(e),gw(e.originalSessionID)},gw=e=>{let t=Up.getState().runsByOriginalSessionID[e];!t||t.status!==`running`||!rw(t.runtimeKey)||JC.has(e)||(JC.add(e),mw(t.originalSessionID).catch(e=>{console.error(`[review-flow] auto-review loop failed`,e),Up.getState().updateRun(t.originalSessionID,t=>({...t,status:ow(e)?`stopped`:`error`,error:e instanceof Error?e.message:String(e)}))}).finally(()=>{JC.delete(e)}))},_w=async(e,t,n)=>{let r=Date.now()+HC;for(;Date.now()<r;){let r=Nd(e,t).filter(e=>QC(e)===`assistant`).filter(e=>ZC(e)>=n-1e3).filter(XC).sort((e,t)=>ZC(t)-ZC(e));for(let e of r){let n=Np(Pd(e.id,t)).trim();if(n)return n}await new Promise(e=>setTimeout(e,UC))}throw Error(`Timed out waiting for handoff response`)},vw=e=>{let t=Jo.getState(),n=Hf.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}},yw=async(e,t,n,r,i,a)=>{aw(a);let o=r??vw(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)),am(e);let c=null;if(await fC({sessionId:e,content:n,directory:t,providerID:o.providerID,modelID:o.modelID,agent:o.agent,onMessageID:e=>{c=e},beforeOptimisticInsert:()=>aw(a),onOptimisticInsert:()=>bw(e),send:r=>(aw(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},bw=e=>{typeof window>`u`||window.dispatchEvent(new CustomEvent(`openchamber:chat-force-scroll-bottom`,{detail:{sessionId:e}}))},xw=(e,t)=>{m.getState().openContextPanelTab(e,{mode:`chat`,dedupeKey:`session:${t.id}`,label:t.title??null,sessionTitleFallback:t.title??null})},Sw=async(e,t)=>{try{return await z.getSession(e,t)}catch{return null}},Cw=e=>`Review: ${e.title?.trim()||e.id}`,ww=async(e,t,n)=>{aw(n);let r=await z.getSession(e,t);aw(n);let i=Lp(r);if(i){let r=await Sw(i,t);if(aw(n),r&&zp(r))return r;await LS(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})}aw(n);let a=await z.createSession({title:Cw(r),metadata:Vp({},e)},t);aw(n),Cd(a.id,t);try{aw(n),await LS(e,t,e=>Bp(e,a.id))}catch(e){throw aw(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},Tw=async e=>{await gS();let t=e.autoReview?c():void 0,n;if(e.generateHandoff??!0){let n=await kp(`session.reviewHandoff.visible`),r=await kp(`session.reviewHandoff.instructions`),i=Date.now();await yw(e.originalSessionID,e.directory,n,null,[{text:r,synthetic:!0}],t);let a=async()=>{let n=await _w(e.originalSessionID,e.directory,i);aw(t);let r=await kp(`session.reviewSession.visible`,{handoff:n}),a=await ww(e.originalSessionID,e.directory,t),o=t??c(),s=Date.now(),l=await yw(a.id,e.directory,r,{providerID:e.providerID,modelID:e.modelID,agent:e.agent,variant:e.variant},e.autoReview?pw():void 0,e.autoReview?o:void 0);e.autoReview&&hw({originalSessionID:e.originalSessionID,reviewSessionID:a.id,directory:e.directory,runtimeKey:o,status:`running`,phase:`waiting_for_reviewer`,iteration:0,maxIterations:GC,expectedAssistantParentID:l,waitAfterCreatedAt:s}),e.autoReview||xw(e.directory,a)};if(e.returnAfterHandoffRequest){a().catch(e=>{console.error(`[review-flow] failed to finish background review flow`,e)});return}await a();return}n=await kp(`session.reviewSessionWithoutHandoff.visible`);let r=await ww(e.originalSessionID,e.directory,t),i=t??c(),a=Date.now(),o=await yw(r.id,e.directory,n,{providerID:e.providerID,modelID:e.modelID,agent:e.agent,variant:e.variant},e.autoReview?pw():void 0,e.autoReview?i:void 0);e.autoReview&&hw({originalSessionID:e.originalSessionID,reviewSessionID:r.id,directory:e.directory,runtimeKey:i,status:`running`,phase:`waiting_for_reviewer`,iteration:0,maxIterations:GC,expectedAssistantParentID:o,waitAfterCreatedAt:a}),e.autoReview||xw(e.directory,r)},Ew=async(e,t,n,r)=>{aw(r);let i=Rp(await z.getSession(e,t));if(!i)throw Error(`Original session is missing`);let a=await kp(`session.reviewFeedbackToImplementer.visible`,{review_feedback:n});return aw(r),yw(i,t,a,void 0,void 0,r)},Dw=async(e,t,n,r=!1,i)=>{aw(i);let a=Lp(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 aw(i),await LS(e,t,e=>Hp(e,a)),n}let s=await kp(`session.implementationResponseToReviewer.visible`,{implementation_response:n});aw(i);let c=await yw(a,t,s,void 0,r?pw():void 0,i);return r||xw(t,o),c},Ow=e=>zp(e)?`review-to-original`:Lp(e)?`original-to-review`:null,kw=[0,250,500,1e3,2e3,2e3,2e3,2e3],Aw=5e3,jw=(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??Aw,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??kw,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))}),Mw=()=>jw.waitUntilReady(c()),Nw=e=>{jw.reset(e)},Pw=100,Fw=1500,Iw=async e=>{if(!e.ok)throw Error(`session index request failed (${e.status})`)},Lw=e=>{if(e.available!==!0||!Array.isArray(e.directories))return null;let t=Array.isArray(e.pinnedSessionIds)?e.pinnedSessionIds.filter(e=>typeof e==`string`&&e.length>0):void 0;return{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,...t?{pinnedSessionIds:t}:{}}},Rw,zw=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 Iw(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}},Bw=async e=>{if(typeof window>`u`)return null;if(Rw)return Rw;let t=(async()=>{let t=await F(`/api/openchamber/session-index`,{signal:e?.signal});return t.status===501?null:(await Iw(t),Lw(await t.json()))})().finally(()=>{Rw===t&&(Rw=void 0)});return Rw=t,t},Vw=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 Iw(t),t.json())},Hw=(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:Fw,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)},Pw)},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})}),Uw=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 Iw(r)},Ww=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 Iw(r)},Gw=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 Iw(t)},Kw=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 Iw(t)},qw=1,Jw=`oc.sessionIndexStartupCache`,Yw=1e6,Xw=e=>!!e&&typeof e==`object`&&!Array.isArray(e),Zw=e=>Array.isArray(e)&&e.every(e=>typeof e==`string`),Qw=e=>!(!Xw(e)||typeof e.active!=`boolean`||typeof e.completed!=`number`||!Number.isFinite(e.completed)||typeof e.total!=`number`||!Number.isFinite(e.total)||!Zw(e.pendingDirectories)||!Zw(e.completedDirectories)||!Zw(e.failedDirectories)||e.enriching!==void 0&&typeof e.enriching!=`boolean`),$w=e=>Xw(e)&&typeof e.id==`string`&&e.id.length>0&&typeof e.title==`string`&&typeof e.directory==`string`&&e.directory.length>0&&Xw(e.time)&&typeof e.time.created==`number`&&Number.isFinite(e.time.created)&&typeof e.time.updated==`number`&&Number.isFinite(e.time.updated),eT=e=>!Xw(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($w),tT=e=>!Xw(e)||typeof e.revision!=`number`||!Number.isFinite(e.revision)||!Qw(e.sync)||!Array.isArray(e.directories)||e.pinnedSessionIds!==void 0&&!Zw(e.pinnedSessionIds)?!1:e.directories.every(eT),nT=e=>Xw(e)&&e.version===qw&&Xw(e.entries),rT=e=>{if(!e)return null;try{let t=JSON.parse(e);return nT(t)?{version:qw,entries:t.entries}:null}catch{return null}},iT=(e,t)=>{try{let n=JSON.stringify(t);if(n.length>Yw)return;e.setItem(Jw,n)}catch{}},aT=(e,t)=>{if(!e)return null;let n;try{n=t.getItem(Jw)}catch{return null}let r=rT(n);if(!r)return null;let i=r.entries[e];return tT(i)?i:null},oT=(e,t,n)=>{if(!e||!tT(t))return;let r=null;try{r=n.getItem(Jw)}catch{return}let i={...rT(r)?.entries??{},[e]:t},a=Object.keys(i).slice(-8);iT(n,{version:qw,entries:Object.fromEntries(a.map(e=>[e,i[e]]))})},sT=(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}}},cT=(e,t)=>!e||t,lT=(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}},uT=new Set,dT=()=>uT.size>0,fT=e=>{for(let t of uT)t(e)},pT=e=>(uT.add(e),()=>uT.delete(e)),mT=3e4,hT=3e3,gT=1e3,_T=0,vT=0,yT=0,bT=null;function xT(e){try{if(e===`medium`){vT+=1;return}if(e===`heavy`){yT+=1;return}_T+=1}catch{}}function ST(){return{light:_T,medium:vT,heavy:yT}}function CT(){_T=0,vT=0,yT=0}function wT(e){if(e.length===0)return{avg:null,min:null,p10:null};let t=e.map(e=>e>0?1e3/e:0),n=t.reduce((e,t)=>e+t,0)/t.length,r=Math.min(...t),i=[...t].sort((e,t)=>e-t);return{avg:n,min:r,p10:i[Math.max(0,Math.min(i.length-1,Math.floor(.1*(i.length-1))))]??r}}function TT(){let e=0,t=0,n=0,r=0,i=0,a=0,o=0,s=0,c=0,l=[];return{addLongTaskMs(r){!Number.isFinite(r)||r<0||(e+=1,t+=r,r>n&&(n=r))},addLagMs(e){!Number.isFinite(e)||e<0||(r+=1,i+=e,e>a&&(a=e))},addFpsDelta(e){!Number.isFinite(e)||e<0||l.push(e)},noteHaptic(e){if(e===`medium`){s+=1;return}if(e===`heavy`){c+=1;return}o+=1},snapshotWindow(){let u=wT(l),d={longTaskCount:e,longTaskTotalMs:t,longTaskMaxMs:n,eventLoopLagMaxMs:a,eventLoopLagAvgMs:r>0?i/r:0,hapticLightCount:o,hapticMediumCount:s,hapticHeavyCount:c};return u.avg==null?d:{...d,fpsAvg:u.avg,fpsMin:u.min??void 0,fpsP10:u.p10??void 0}},reset(){e=0,t=0,n=0,r=0,i=0,a=0,o=0,s=0,c=0,l.length=0}}}function ET(){try{let e=performance.memory;return e?{used:typeof e.usedJSHeapSize==`number`?Math.round(e.usedJSHeapSize/1048576):void 0,limit:typeof e.jsHeapSizeLimit==`number`?Math.round(e.jsHeapSizeLimit/1048576):void 0}:{}}catch{return{}}}function DT(){let e={};try{typeof document<`u`&&document.visibilityState&&(e.visible=document.visibilityState===`visible`)}catch{}try{typeof document<`u`&&document.documentElement&&(e.foreground=document.documentElement.classList.contains(`oc-native-app-active`))}catch{}return e}function OT(e){let t=ET(),n=DT();return{at:e.at,feat:`perf`,kind:`perf-window`,sessionID:`app`,longTaskCount:e.snapshot.longTaskCount,longTaskTotalMs:e.snapshot.longTaskTotalMs,longTaskMaxMs:e.snapshot.longTaskMaxMs,eventLoopLagMaxMs:e.snapshot.eventLoopLagMaxMs,eventLoopLagAvgMs:e.snapshot.eventLoopLagAvgMs,hapticLightCount:e.haptics.light,hapticMediumCount:e.haptics.medium,hapticHeavyCount:e.haptics.heavy,platform:e.platform,...e.snapshot.fpsAvg==null?{}:{fpsAvg:e.snapshot.fpsAvg,fpsMin:e.snapshot.fpsMin,fpsP10:e.snapshot.fpsP10},...t.used==null?{}:{jsHeapUsedMB:t.used},...t.limit==null?{}:{jsHeapLimitMB:t.limit},...n.visible==null?{}:{visible:n.visible},...n.foreground==null?{}:{foreground:n.foreground}}}function kT(e={}){if(bT)return bT;let t=e.isEnabled??qv,n=e.record??Xv,r=e.now??(()=>Date.now()),i=e.getPlatform??(()=>qe()),a=TT(),o=!1,s,c,l,u,d,f,p=e=>{try{e()}catch{}},m=()=>{if(l!=null&&(clearTimeout(l),l=void 0),u!=null&&typeof cancelAnimationFrame==`function`){try{cancelAnimationFrame(u)}catch{}u=void 0}d=void 0},h=()=>{if(m(),typeof requestAnimationFrame!=`function`)return;let e=r()+hT,t=n=>{o||p(()=>{d!=null&&a.addFpsDelta(n-d),d=n,r()<e?u=requestAnimationFrame(t):(u=void 0,d=void 0)})};u=requestAnimationFrame(t),l=setTimeout(()=>{p(()=>{u!=null&&typeof cancelAnimationFrame==`function`&&(cancelAnimationFrame(u),u=void 0),d=void 0})},hT)},g=()=>{p(()=>{let e=a.snapshotWindow(),o=ST();t()&&n(OT({at:r(),snapshot:e,haptics:o,platform:i()})),CT(),a.reset()})},_=()=>{s=setTimeout(()=>{o||(g(),h(),_())},mT)},v=()=>{let e=r()+gT;c=setTimeout(()=>{o||(p(()=>{let t=Math.max(0,r()-e);a.addLagMs(t)}),v())},gT)};p(()=>{if(!(typeof PerformanceObserver>`u`))try{f=new PerformanceObserver(e=>{p(()=>{for(let t of e.getEntries())a.addLongTaskMs(t.duration)})}),f.observe({entryTypes:[`longtask`]})}catch{f=void 0}}),h(),v(),_();let y=()=>{if(!o){if(o=!0,s!=null&&clearTimeout(s),c!=null&&clearTimeout(c),m(),f){try{f.disconnect()}catch{}f=void 0}bT===y&&(bT=null)}};return bT=y,y}var AT=typeof window<`u`?G.useLayoutEffect:G.useEffect,jT=Qe(`OpenChamberHaptics`),MT=null,NT=()=>(MT??=$e.isPluginAvailable(`OpenChamberHaptics`),MT);function PT(e){switch(e){case`medium`:return`impactMedium`;case`heavy`:return`impactHeavy`;default:return`impactLight`}}function FT(){return typeof window>`u`?!1:window.Capacitor?.isNativePlatform?.()===!0}function IT(){if(!FT())return!1;let e=window.Capacitor?.getPlatform?.();return e===`ios`||e===`android`}function LT(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,zT=750;function BT(e,t){return t-e>=RT}function VT(e,t){return t-e>=zT}function HT(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 UT=-1/0;function WT(e=`light`,t){if(!IT()||!NT()||document.visibilityState!==`visible`||!document.documentElement.classList.contains(`oc-native-app-active`))return!1;let n=Date.now();return!t?.bypassCadence&&!BT(UT,n)?!1:(UT=n,jT[PT(e)]().catch(()=>void 0),xT(e),!0)}var GT=`button, [role="button"], [role="menuitem"]`;function KT(){let e=(0,V.c)(1),t;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=[],e[0]=t):t=e[0],G.useEffect(qT,t)}function qT(){if(!IT())return;let e=JT;return document.addEventListener(`click`,e,!0),()=>document.removeEventListener(`click`,e,!0)}function JT(e){if(!e.isTrusted||!(e.target instanceof Element))return;let t=e.target.closest(GT);t&&(t.matches(`:disabled, [aria-disabled="true"], [data-mobile-press-feedback="none"]`)||WT(`light`))}function YT(){let e=(0,V.c)(1),t;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=[],e[0]=t):t=e[0],AT(XT,t)}function XT(){if(!IT())return;let e=lT(),t=qe()===`android`,n=-1/0;return pT(r=>{if(!e(r))return;let i=$.getState().currentSessionId,a=document.documentElement.classList.contains(`oc-native-app-active`);if(LT({eventSessionId:r.sessionID,currentSessionId:i,isForeground:a,isVisible:document.visibilityState===`visible`}).shouldTrigger){if(t&&r.kind===`text`){let e=Date.now();if(!VT(n,e))return;WT()&&(n=e);return}WT()}})}var ZT=async e=>{let t=await dt(e);t.ok||console.error(`Failed to copy to clipboard:`,t.error)},QT=e=>e==null||typeof e==`boolean`?``:typeof e==`string`||typeof e==`number`?String(e):Array.isArray(e)?e.map(QT).join(` `).trim():(0,G.isValidElement)(e)?QT(e.props?.children):``,$T=e=>typeof e==`function`?e():e,eE=(e,t)=>{let n=QT($T(t?.description));return n.length>0?n:QT(e)},tE=Object.assign((...e)=>(WT(),lt(...e)),{...lt,success:(...e)=>{let[t,n]=e;return WT(),lt.success(t,{...n,action:n?.action||{label:`OK`,onClick:()=>{}}})},info:(...e)=>{let[t,n]=e;return WT(),lt.info(t,{...n,action:n?.action||{label:`OK`,onClick:()=>{}}})},error:(...e)=>{let[t,n]=e;return WT(),lt.error(t,{...n,action:n?.action||{label:`Copy`,onClick:()=>ZT(eE(t,n))}})},warning:(...e)=>{let[t,n]=e;return WT(),lt.warning(t,{...n,action:n?.action||{label:`Copy`,onClick:()=>ZT(eE(t,n))}})},loading:(...e)=>(WT(),lt.loading(...e)),custom:(...e)=>(WT(),lt.custom(...e)),promise:(...e)=>(WT(),lt.promise(...e))}),nE=new Set,rE,iE=nE,aE=null,oE=(e,t)=>pt(ft.getState().dictionary,e,t),sE=e=>{let t=e?.time?.pinned;return t!=null&&t!==``},cE=e=>{if(!e)return nE;let t=new Set;if(Array.isArray(e.pinnedSessionIds))for(let n of e.pinnedSessionIds)typeof n==`string`&&n&&t.add(n);for(let n of e.directories)for(let e of n.sessions)sE(e)&&t.add(e.id);return t.size===0?nE:t},lE=(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},uE=(e=L,t=i())=>{let n=xE(e,t);if(n===rE&&t===aE)return iE;let r=cE(n);return rE=n,aE=t,iE=lE(iE,r)?iE:r,iE},dE=(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}),a=cE(e),o=new Set(a);return n==null||n===``?o.delete(t):o.add(t),lE(a,o)||(r=!0),r?{...e,directories:i,pinnedSessionIds:[...o]}:e},fE=(e,t,n,r)=>{let i=xE(e,t);if(!i)return null;let a=dE(i,n,r?new Date().toISOString():null);return a!==i&&CE(a,{client:e,transport:t,persist:!1}),i},pE=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()}),mE=()=>uE(),hE=()=>(0,G.useSyncExternalStore)(pE,mE,_E),gE=()=>{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 r;e[1]===t?r=e[2]:(r={mutationKey:n,mutationFn:vE,onMutate:e=>{let{sessionId:n,nextPinned:r,transport:i}=e;return{previous:fE(t,i,n,r),transport:i}},onError:(e,n,r)=>{r?.previous&&CE(r.previous,{client:t,transport:r.transport,persist:!1}),tE.error(e instanceof Error?e.message:oE(n.nextPinned?`sessions.sidebar.session.pin.error`:`sessions.sidebar.session.unpin.error`))}},e[1]=t,e[2]=r);let a=at(r),o;return e[3]!==t||e[4]!==a?(o=e=>{let n=e.trim();if(!n)return;let r=i(),o=xE(t,r);if(!o)return;let s=cE(o).has(n);a.mutate({sessionId:n,nextPinned:!s,transport:r})},e[3]=t,e[4]=a,e[5]=o):o=e[5],ut(o)};function _E(){return nE}async function vE(e){let{sessionId:t,nextPinned:n}=e;n?await Uw(t):await Ww(t)}var yE=(e=i())=>N.sessionIndex.snapshot(e),bE=(e=i(),t=c(),n=f(),r=Bw)=>{let a=t,o=n,s=r;return{queryKey:yE(e),queryFn:async({signal:e})=>{let t=await s({signal:e});return t&&oT(a,t,o),t},staleTime:0,gcTime:1/0,initialData:()=>aT(a,o)??void 0,initialDataUpdatedAt:0}},xE=(e=L,t=i())=>e.getQueryData(yE(t))??null,SE=(e=L,t=i(),n=c(),r=f())=>{let a=bE(t,n,r);return e.getQueryCache().build(e,a),e.getQueryData(a.queryKey)??null},CE=(e,t)=>{if(!tT(e))return;let n=t?.client??L,r=t?.transport??i(),a=t?.runtimeKey??c(),o=t?.storage??f();n.setQueryData(yE(r),e),t?.persist!==!1&&oT(a,e,o)},wE=(e=L,t=i(),n=c(),r=f(),a=Bw)=>{let o={...bE(t,n,r,a),staleTime:0};return e.getQueryCache().build(e,o),e.fetchQuery(o)},TE=500,EE=20,DE=6e3,OE=7,kE=3,AE=1,jE=2,ME=750,NE=500,PE=1e4,FE=2,IE=(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})}),LE=null,q=0,RE=new Map,zE=new Map,BE=new Map,VE=[],HE=new Set,UE=0,WE=kE,GE=0,KE=null,qE,JE=new Map,YE=()=>({loadGeneration:q,runtimeGeneration:h(),transportIdentity:i()}),J=e=>e.loadGeneration===q&&e.runtimeGeneration===h()&&e.transportIdentity===i(),XE=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`)},ZE=e=>{GE=0,XE(e)&&(WE=WE>kE?kE:AE)},QE=()=>{GE+=1,!(GE<jE||WE>=OE)&&(WE+=1,GE=0)},$E=()=>{for(;UE<WE&&VE.length>0;){let e=VE.shift();if(!e)return;UE+=1,e()}},eD=e=>new Promise((t,n)=>{VE.push(()=>{e().then(t,n).finally(()=>{--UE,$E()})}),$E()}),tD=e=>{let t=e;return _(t.directory??null)??_(t.project?.worktree??null)},nD=(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=Jf(t);if(f>Jf(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},rD=(e,t)=>{let n=nD(e,t);return n.share===t.share?n:{...n,share:t.share}},iD=e=>{let t=new Map;for(let n of e){let e=tD(n);if(!e)continue;let r=t.get(e);if(r){r.push(n);continue}t.set(e,[n])}return t},aD=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),tD(e)??``].join(`:`),oD=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),tD(e)??``].join(`:`)},sD=(e,t)=>e.time?.updated!==t.time?.updated&&oD(e)===oD(t),cD=(e,t)=>{if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(aD(e[n])!==aD(t[n]))return!1;return!0},lD=e=>!!e.time?.archived,uD=(e,t)=>{let n=new Set,r=!1;for(let t of e){if(!t?.id||n.has(t.id)||lD(t)){r=!0;break}n.add(t.id)}if(!r){let e=new Set;for(let i of t){if(!i?.id||e.has(i.id)||n.has(i.id)||!lD(i)){r=!0;break}e.add(i.id)}}if(!r)return{activeSessions:e,archivedSessions:t};let i=new Map;for(let t of e)t?.id&&i.set(t.id,t);for(let e of t){if(!e?.id)continue;let t=i.get(e.id);i.set(e.id,t?nD(e,t):e)}let a=[],o=[],s=new Set,c=e=>{if(!e?.id||s.has(e.id))return;s.add(e.id);let t=i.get(e.id)??e;lD(t)?o.push(t):a.push(t)};return e.forEach(c),t.forEach(c),{activeSessions:a,archivedSessions:o}},dD=(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))},fD=e=>[...e].sort((e,t)=>{let n=Jf(t)-Jf(e);return n===0?t.id.localeCompare(e.id):n}),pD=e=>{let t=new Set;for(let n of e){let e=_(n);e&&t.add(e)}return t},mD=e=>{let t=pD(e);for(let e of t)JE.set(e,(JE.get(e)??0)+1);return t},hD=e=>{let t=new Set;for(let n of e){let e=JE.get(n)??0;if(e<=1){JE.delete(n),t.add(n);continue}JE.set(n,e-1)}return t},gD=(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}},_D=e=>{let t=e[e.length-1]?.time?.updated;return typeof t==`number`&&Number.isFinite(t)?t:null},vD=(e,t)=>{let n=_D(e);return{cursor:n,hasMore:e.length===EE&&n!==null&&(t==null||n<t),loadingMore:!1}},yD=(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,nD(e,r.get(e.id)));let a=e.filter(e=>{if(i.has(e.id))return!1;let t=tD(e);return!t||!n.has(t)});return fD([...i.values(),...a])},bD=(e,t)=>e.cursor===null?!e.hasMore&&(t.hasMore||t.cursor!==null):t.cursor===null||e.cursor<t.cursor,xD=(e,t)=>{if(typeof t==`number`&&Number.isFinite(t))return t;if(e.length===0)return null;let n=fD(e),r=n[n.length-1];return r?Jf(r):null},SD=(e,t)=>Jf(e)<=t,CD=(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,nD(t,a.get(t.id)));let s=e.filter(e=>{if(o.has(e.id))return!1;let t=tD(e);if(!t||!n.has(t))return!0;if(!i.has(t))return!1;let a=r.get(t);return a!=null&&SD(e,a)});return fD([...o.values(),...s])},wD=(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,dD(n.sessions,e.pendingDeletionIds));let a=[...i.values()].flat(),o=new Map;if(n)for(let t of e.activeSessions){let e=tD(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)>EE;n.hasMore&&a&&r&&bD(r,t)&&c.add(n.directory),s.set(n.directory,xD(i.get(n.directory)??[],n.cursor))}let l=n?CD(e.activeSessions,i,r,s,c):fD(DD(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=>tD(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 JE.keys())h.has(e)||RE.has(e)||(p.delete(e),m.delete(e));return{activeSessions:l,sessionsByDirectory:iD(l),reviewTransferBySessionId:kD(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}},TD=(e,t)=>{let n=dD(t.activeSessions,e.pendingDeletionIds),r=dD(t.fallbackActive??[],e.pendingDeletionIds),i=t.mergeOnly?fD(DD(e.activeSessions,n)):yD(e.activeSessions,n,t.directories);i=DD(i,r);let a=t.archivedSessions===void 0?void 0:dD(t.archivedSessions,e.pendingDeletionIds),o=a===void 0?e.archivedSessions:yD(e.archivedSessions,a,t.directories),s=uD(i,o);i=s.activeSessions,o=s.archivedSessions,cD(e.activeSessions,i)&&(i=e.activeSessions),cD(e.archivedSessions,o)&&(o=e.archivedSessions);let c=i===e.activeSessions?e.sessionsByDirectory:iD(i),l=e.loadedDirectories,u=!1;for(let n of t.directories)l.has(n)||(u||=(l=new Set(e.loadedDirectories),!0),l.add(n));let d=e.loadingDirectories,f=!1;for(let n of t.directories)d.has(n)&&(f||=(d=new Set(e.loadingDirectories),!0),d.delete(n));let p=t.markReady?`ready`:e.status,m=t.markReady?!0:e.hasLoaded;return i===e.activeSessions&&o===e.archivedSessions&&c===e.sessionsByDirectory&&l===e.loadedDirectories&&d===e.loadingDirectories&&e.status===p&&e.hasLoaded===m?e:{activeSessions:i,archivedSessions:o,sessionsByDirectory:c,reviewTransferBySessionId:i===e.activeSessions?e.reviewTransferBySessionId:kD(i),loadedDirectories:l,loadingDirectories:d,hasLoaded:m,status:p}},ED=(e,t)=>{let n=e.findIndex(e=>e.id===t.id);if(n===-1)return[t,...e];let r=e[n],i=nD(t,r);if(sD(r,i)||aD(r)===aD(i))return e;let a=[...e];return a[n]=i,a},DD=(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,nD(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},OD=(e,t,n,r)=>{let i=uD(t,n),a=dD(i.activeSessions,e.pendingDeletionIds),o=dD(i.archivedSessions,e.pendingDeletionIds),s=cD(e.activeSessions,a)?e.activeSessions:a,c=cD(e.archivedSessions,o)?e.archivedSessions:o,l=s===e.activeSessions?e.sessionsByDirectory:iD(s),u=s===e.activeSessions?e.reviewTransferBySessionId:kD(s);return s===e.activeSessions&&c===e.archivedSessions&&l===e.sessionsByDirectory&&u===e.reviewTransferBySessionId&&e.hasLoaded&&e.status===r?e:{activeSessions:s,archivedSessions:c,sessionsByDirectory:l,reviewTransferBySessionId:u,hasLoaded:!0,status:r}},kD=e=>{let t=new Map,n=new Set(e.map(e=>e.id));for(let r of e){let e=Ow(r);if(!e)continue;let i=e===`review-to-original`?Rp(r):Lp(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=>OD(e,t,n,r))},resetForRuntimeSwitch:()=>{q+=1,Nw(),LE=null,RE.clear(),zE.clear(),BE.clear(),HE.forEach(e=>e.abort()),HE.clear(),WE=kE,GE=0,KE?.abort(),KE=null,qE=void 0,JE.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(qE)return qE;if(t().hasHydratedSessionIndex)return;let n=YE(),r=i(),a=c(),o=SE(void 0,r,a);o&&J(n)&&e(e=>({...wD(e,o,!1),hasCachedSessionIndex:!0}));let s=(async()=>{try{let t;try{t=await wE(void 0,r,a)}catch(e){if(!J(n))return;if(o){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=>({...wD(e,t,!1),hasCachedSessionIndex:t.directories.length>0,hasHydratedSessionIndex:!0}))}catch(e){console.warn(`[GlobalSessions] Failed to hydrate runtime session index:`,e)}})();return qE=s.finally(()=>{qE===s&&(qE=void 0)}),qE},startSessionIndexStartup:async(n,r)=>{let i=YE();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=pD([...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?pD(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=YE();try{if(f=await Vw([...l]),!J(i)||!J(p))return{activeSessions:[],archivedSessions:[]};f&&CE(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=FD(l,d.activeSessions,{retryFailed:!o});if(o)e.then(()=>{m()});else{if(await e,!J(i))return{activeSessions:[],archivedSessions:[]};m()}return d}KE?.abort();let h=new AbortController;KE=h;let g=mD(l),_=()=>{if(!J(i))return;let t=hD(g);t.size!==0&&e(e=>gD(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=NE;for(;!h.signal.aborted&&J(i);){e(e=>({...wD(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=YE(),a=await Hw(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=YE();try{o=await wE()}catch{if(h.signal.aborted||!J(i)){o=void 0;break}if(await IE(n,h.signal),h.signal.aborted||!J(i)){o=void 0;break}n=Math.min(n*FE,PE);continue}if(!J(e)){o=void 0;break}if(!o)break;n=NE;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(),KE===h&&(KE=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(LE)return LE;e(e=>e.status===`loading`?e:{status:`loading`});let r=q,i=Promise.resolve().then(async()=>{let a=t();try{if(await Mw(),r!==q)return{activeSessions:[],archivedSessions:[]};let i=z.getSdkClient(),[o,s]=await Promise.allSettled([_p(i,{archived:!1,pageSize:TE}),_p(i,{archived:!0,pageSize:TE})]),c=DD(a.activeSessions,n),l=o.status===`fulfilled`?o.value:c,u=s.status===`fulfilled`?s.value:a.archivedSessions;return o.status===`rejected`&&console.warn(`[GlobalSessions] Failed to load active sessions, preserving existing snapshot with fallback merge:`,o.reason),s.status===`rejected`&&console.warn(`[GlobalSessions] Failed to load archived sessions, preserving current snapshot:`,s.reason),r===q?(e(e=>{let t=o.status===`fulfilled`&&s.status===`fulfilled`?`ready`:`error`,n=OD(e,l,u,t);if(o.status!==`fulfilled`||s.status!==`fulfilled`)return n===e?e:n;let r=new Set([...o.value.map(e=>e.id),...s.value.map(e=>e.id)]);return{...n,hasLoadedFullCatalog:!0,fullCatalogSessionIds:r,fullCatalogGeneration:e.fullCatalogGeneration+1}}),{activeSessions:t().activeSessions,archivedSessions:t().archivedSessions}):{activeSessions:[],archivedSessions:[]}}catch(i){if(r!==q)return{activeSessions:[],archivedSessions:[]};let o=DD(a.activeSessions,n),s=a.archivedSessions;return console.warn(`[GlobalSessions] Failed to load sessions, using fallback snapshot:`,i),e(e=>OD(e,o,s,`error`)),{activeSessions:t().activeSessions,archivedSessions:t().archivedSessions}}finally{LE===i&&(LE=null)}});return LE=i,i},refreshSessionsForDirectories:async(n,r,i)=>{let a=pD(n);if(a.size===0){let e=t();return{activeSessions:e.activeSessions,archivedSessions:e.archivedSessions}}let o=q;e(e=>{let t=DD(e.activeSessions,dD(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=>tD(e)===t)||n.add(t);return{...t===e.activeSessions?{}:{activeSessions:t,sessionsByDirectory:iD(t),reviewTransferBySessionId:kD(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=eD(async()=>{let r=new AbortController;HE.add(r);try{if(o!==q||(await Mw(),o!==q))return!1;let a=await _p(z.getSdkClient(),{directory:n,archived:!1,roots:!0,...i?.incrementalStart===void 0?{}:{start:i.incrementalStart},pageSize:EE,maxItems:EE,timeoutMs:DE,retryAttempts:2,signal:r.signal});if(o!==q)return!1;if(e(e=>{let t=TD(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,vD(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)??vD(a);try{await Gw({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 QE(),!0}catch(t){return ZE(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{HE.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=YE(),a=pD(n);if(a.size===0){let e=t();return{activeSessions:e.activeSessions,archivedSessions:e.archivedSessions}}let o=null,s=YE();try{if(o=await Vw([...a]),!J(i)||!J(s))return{activeSessions:[],archivedSessions:[]};o&&CE(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;HE.add(c);let l=mD(a),u=()=>{if(!J(i))return;let t=hD(l);t.size!==0&&e(e=>gD(e,t))};try{let t=o;for(;!c.signal.aborted&&J(i)&&(e(e=>wD(e,t,!0)),t.sync.active);){let e=YE(),n=await Hw(t.revision,c.signal);if(!J(i)||!J(e)||n===`aborted`)break;let r=YE(),a;try{a=await wE()}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(),HE.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=BE.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=eD(async()=>{let t=new AbortController;HE.add(t);try{if(await Mw(),o!==q)return!1;let n=await _p(z.getSdkClient(),{directory:r,archived:!1,roots:!0,cursor:a.cursor??void 0,pageSize:EE,maxItems:EE,timeoutMs:DE,retryAttempts:2,signal:t.signal});return o===q&&(e(e=>{let t=e.activeSessions.filter(e=>tD(e)===r),i=new Map(t.map(e=>[e.id,e]));dD(n,e.pendingDeletionIds).forEach(e=>{i.set(e.id,nD(e,i.get(e.id)))});let o=fD([...i.values()]),s=yD(e.activeSessions,o,new Set([r])),c=new Map(e.activePaginationByDirectory);return c.set(r,vD(n,a.cursor)),{activeSessions:cD(e.activeSessions,s)?e.activeSessions:s,sessionsByDirectory:iD(s),reviewTransferBySessionId:kD(s),activePaginationByDirectory:c}}),QE(),!0)}catch(t){return ZE(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{HE.delete(t)}});BE.set(r,s);try{await s}finally{BE.get(r)===s&&BE.delete(r)}return{activeSessions:t().activeSessions,archivedSessions:t().archivedSessions}},refreshArchivedSessionsForDirectories:async n=>{let r=pD(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=zE.get(t);if(n)return n;let r=eD(async()=>{let n=new AbortController;HE.add(n);try{if(i!==q||(await Mw(),i!==q))return!1;let r=await _p(z.getSdkClient(),{directory:t,archived:!0,roots:!0,pageSize:EE,maxItems:EE,timeoutMs:DE,retryAttempts:2,signal:n.signal});return i===q&&(e(e=>{let n=yD(e.archivedSessions,dD(r,e.pendingDeletionIds),new Set([t])),i=uD(e.activeSessions,n),a=cD(e.activeSessions,i.activeSessions)?e.activeSessions:i.activeSessions,o=cD(e.archivedSessions,i.archivedSessions)?e.archivedSessions:i.archivedSessions,s=new Set(e.archivedLoadedDirectories),c=new Set(e.archivedLoadingDirectories);return s.add(t),c.delete(t),{activeSessions:a,archivedSessions:o,sessionsByDirectory:a===e.activeSessions?e.sessionsByDirectory:iD(a),reviewTransferBySessionId:a===e.activeSessions?e.reviewTransferBySessionId:kD(a),archivedLoadedDirectories:s,archivedLoadingDirectories:c}}),!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{HE.delete(n)}});return zE.set(t,r),r.finally(()=>{zE.get(t)===r&&zE.delete(t)}),r});return await Promise.all(a),i===q?{activeSessions:t().activeSessions,archivedSessions:t().archivedSessions}:{activeSessions:[],archivedSessions:[]}},upsertSession:n=>{if(!fp(n)){t().removeSessions([n.id]);return}e(e=>{if(e.pendingDeletionIds.has(n.id))return e;let t=nD(n,e.activeSessions.find(e=>e.id===n.id)??e.archivedSessions.find(e=>e.id===n.id)??null),r=lD(t),i=r?e.activeSessions.filter(e=>e.id!==n.id):ED(e.activeSessions,t),a=r?ED(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:iD(i),reviewTransferBySessionId:i===e.activeSessions?e.reviewTransferBySessionId:kD(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:iD(t),reviewTransferBySessionId:kD(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:iD(i),reviewTransferBySessionId:kD(i)}})}})),AD=async e=>{let t=Y.getState();return t.hasLoadedFullCatalog&&t.status!==`error`?{activeSessions:t.activeSessions,archivedSessions:t.archivedSessions}:t.loadSessions(e)},jD=async()=>{await Y.getState().hydrateSessionIndex()},MD=async(e,t)=>Y.getState().startSessionIndexStartup(e,t),ND=async(e,t)=>Y.getState().refreshSessionsForDirectories(e,t),PD=async(e,t)=>Y.getState().syncSessionsForDirectories(e,t),FD=async(e,t,n)=>{let r=pD(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,ME));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 Kw(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}},ID=async e=>Y.getState().refreshArchivedSessionsForDirectories(e),LD=async e=>Y.getState().loadMoreSessionsForDirectory(e),RD=(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])},zD=`oc.sessions.folders`,BD=`oc.sessions.folderCollapse`,VD=`oc.sessions.order`,HD=`oc.sessions.orderActivity`,UD=`/api/session-folders`,WD=250,GD=`__archived__:`,KD=x(f()),qD=null,JD=!1,YD=!1,XD=0,ZD,QD,$D=null,eO=null,tO=()=>typeof window>`u`?!1:v()?!0:window.__VSCODE_CONFIG__!==void 0,nO=(e,t)=>{if(typeof window>`u`||tO())return;qD&&clearTimeout(qD);let n=JSON.parse(JSON.stringify(e)),r=Array.from(t);qD=setTimeout(()=>{qD=null,F(UD,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({version:1,foldersMap:n,collapsedFolderIds:r,updatedAt:Date.now()})}).catch(()=>{})},WD)},rO=()=>{try{let e=KD.getItem(zD);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{}}},iO=()=>{try{let e=KD.getItem(BD);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}},aO=()=>{try{let e=KD.getItem(VD);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{}}},oO=()=>{try{let e=KD.getItem(HD);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{}}},sO=(e,t)=>{try{KD.setItem(VD,JSON.stringify(e)),KD.setItem(HD,JSON.stringify(t))}catch{}},cO=e=>{$D=e,clearTimeout(ZD),ZD=setTimeout(()=>{try{KD.setItem(zD,JSON.stringify(e)),$D=null}catch{}},300)},lO=e=>{eO=e,clearTimeout(QD),QD=setTimeout(()=>{try{KD.setItem(BD,JSON.stringify(Array.from(e))),eO=null}catch{}},300)};typeof window<`u`&&window.addEventListener(`beforeunload`,()=>{if($D!==null){clearTimeout(ZD);try{KD.setItem(zD,JSON.stringify($D))}catch{}$D=null}if(eO!==null){clearTimeout(QD);try{KD.setItem(BD,JSON.stringify(Array.from(eO)))}catch{}eO=null}});var uO=(e,t)=>{cO(e),lO(t),nO(e,t)},dO=()=>fe(),fO=(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},pO=(e,t)=>e.startsWith(GD)?t.filter(e=>e.sessionIds.length>0):t,mO=Oe()(je((e,t)=>({foldersMap:rO(),collapsedFolderIds:iO(),sessionOrderByScope:aO(),sessionOrderActivityByScope:oO(),getFoldersForScope:e=>e?t().foldersMap[e]??[]:[],createFolder:(n,r,i)=>{let a=r.trim()||`New folder`,o={id:dO(),name:a,sessionIds:[],createdAt:Date.now(),parentId:i??null},s=t().foldersMap,c=s[n]??[],l={...s,[n]:[...c,o]};return e({foldersMap:l}),uO(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}),uO(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}),uO(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}),uO(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=fO(o,l,t().collapsedFolderIds);e(d?{foldersMap:u,collapsedFolderIds:d}:{foldersMap:u}),uO(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=fO(o,u,t().collapsedFolderIds);e(f?{foldersMap:d,collapsedFolderIds:f}:{foldersMap:d}),uO(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=fO(a,c,t().collapsedFolderIds);e(u?{foldersMap:l,collapsedFolderIds:u}:{foldersMap:l}),uO(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=fO(a,s,t().collapsedFolderIds);e(l?{foldersMap:c,collapsedFolderIds:l}:{foldersMap:c}),uO(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}),uO(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=pO(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=fO(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:_}),uO(m,h??t().collapsedFolderIds),sO(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=RD(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}),sO(y,b)}}),{name:`session-folders-store`})),hO=async()=>{if(JD||YD||typeof window>`u`)return;if(tO()){JD=!0;return}YD=!0;let e=XD;try{let t=await F(UD).catch(()=>null);if(e!==XD||!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!==XD||!(Object.keys(r).length>0||i.size>0))return;mO.setState({foldersMap:r,collapsedFolderIds:i}),cO(r),lO(i)}catch{}finally{e===XD&&(YD=!1,JD=!0)}},gO=()=>{typeof window>`u`||hO()},_O=()=>{XD+=1,JD=!1,YD=!1,$D=null,eO=null,ZD&&=(clearTimeout(ZD),void 0),QD&&=(clearTimeout(QD),void 0),mO.setState({foldersMap:rO(),collapsedFolderIds:iO(),sessionOrderByScope:aO(),sessionOrderActivityByScope:oO()}),hO()};typeof window<`u`&&n(e=>{p(e)&&_O()}),gO();var vO=new Map,yO=()=>{let e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}},bO=()=>`worktree_${Date.now()}_${Math.random().toString(36).slice(2,8)}`,xO=()=>{let e=bO();return vO.set(e,yO()),e},SO=(e,t)=>{let n=vO.get(e);n&&(vO.delete(e),n.resolve(t))},CO=(e,t)=>{let n=vO.get(e);n&&(vO.delete(e),n.reject(t))},wO=e=>{let t=vO.get(e);return t?t.promise:Promise.reject(Error(`Pending worktree request not found`))},TO=3e5,EO=5e3,DO=e=>e.replace(/\\/g,`/`).replace(/\/+$/,``)||e,OO=new Map,kO=new Map,AO=new Map,jO=new Map,MO=new Set,NO=null,PO=!1,FO=e=>DO(e),IO=e=>jO.get(e)??0,LO=e=>{let t=IO(e)+1;return jO.set(e,t),t},RO=async e=>{let t=Te()?.git;return t?.worktree?.bootstrapStatus?t.worktree.bootstrapStatus(e):t?.getGitWorktreeBootstrapStatus?t.getGitWorktreeBootstrapStatus(e):ze(e)},zO=(e,t)=>{for(let n of MO)try{n(e,t)}catch{}},BO=e=>(MO.add(e),()=>{MO.delete(e)}),VO=(e,t)=>{let n=FO(e);if(!n)return!1;let r=OO.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:(OO.set(n,t),t.status!==`pending`&&kO.delete(n),zO(n,t),!0)},HO=(e,t)=>{let n=FO(e);if(!n)return!1;let r=t.status===`pending`||t.status===`ready`||t.status===`failed`?t.status:null;return r?VO(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},UO=()=>{NO||=Kt(e=>{e.type===`worktree-bootstrap-status`&&HO(e.directory,e)}),!(typeof window>`u`||PO)&&(PO=!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&&HO(r,{status:n.status,error:typeof n.error==`string`?n.error:null,updatedAt:typeof n.updatedAt==`number`?n.updatedAt:Date.now()})})))},WO=e=>{let t=FO(e);t&&(UO(),VO(t,{status:`pending`,error:null,updatedAt:Date.now()}))},GO=e=>{let t=FO(e);if(!t)return;LO(t);let n=AO.get(t);n&&(n.cancelled=!0,n.disposeSettlement?.(),n.disposeSettlement=null,AO.delete(t));let r=kO.get(t);r&&(r.dispose(),kO.delete(t)),OO.delete(t)},KO=e=>{let t=FO(e);return t?OO.get(t)??null:null},qO=(e,t)=>{let n=ft.getState().dictionary;return pt(n,e,t)},JO=e=>({status:`failed`,error:e,updatedAt:Date.now()}),YO=(e,t,n)=>{let r=JO(t);return VO(e,r),n?.(r),r},XO=async(e,t=()=>!0)=>{try{let n=await RO(e);return t()?VO(e,n)?n:KO(e):null}catch{return null}},ZO=(e,t,n=EO)=>{let r=FO(e),i=IO(r);UO();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,XO(e,()=>!a&&IO(r)===i).finally(()=>{c=!1}))},Number.isFinite(n)?Math.max(1,n):EO))},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=BO((e,t)=>{FO(e)===r&&d(t)}),o=setTimeout(()=>{s(()=>{let t=YO(e,qO(`worktree.bootstrap.toast.timeoutDescription`));i(Error(t.error||`Timed out waiting for worktree bootstrap`))})},Math.max(0,t)),d(OO.get(r))});return h.catch(()=>void 0),{promise:h,startCompensation:p,dispose:()=>m(Error(`Worktree bootstrap wait cancelled`))}},QO=async(e,t,n,r,i,a)=>{let o=FO(e),s=ZO(e,n,r);t.disposeSettlement=s.dispose;let c=await XO(e,()=>!t.cancelled&&AO.get(o)===t&&IO(o)===t.epoch);if(t.cancelled||AO.get(o)!==t){s.dispose();return}if(c?.status===`ready`){s.dispose(),a?.(c);return}if(c?.status===`failed`){s.dispose(),i?.(c),tE.error(qO(`worktree.bootstrap.toast.failed`),{description:c.error||qO(`worktree.bootstrap.toast.failedDescription`)});return}s.startCompensation();try{let e=await s.promise;if(t.cancelled||AO.get(o)!==t)return;a?.(e)}catch(n){if(t.cancelled||AO.get(o)!==t)return;let r=KO(e);if(r?.status===`failed`){i?.(r),tE.error(qO(`worktree.bootstrap.toast.failed`),{description:r.error||qO(`worktree.bootstrap.toast.failedDescription`)});return}let a=YO(e,n instanceof Error?n.message:String(n),i);tE.error(qO(`worktree.bootstrap.toast.failed`),{description:a.error||qO(`worktree.bootstrap.toast.failedDescription`)})}},$O=(e,t)=>{let n=FO(e);if(!n||OO.get(n)?.status!==`pending`||AO.has(n))return;let r={cancelled:!1,epoch:IO(n),promise:Promise.resolve(),disposeSettlement:null};r.promise=QO(e,r,t?.timeoutMs??TO,t?.pollIntervalMs??EO,t?.onFailed,t?.onReady).finally(()=>{AO.get(n)===r&&AO.delete(n)}),AO.set(n,r)},ek=async(e,t=TO)=>{let n=FO(e);if(!n)return;let r=OO.get(n);if(!r||r.status===`ready`)return;if(r.status===`failed`)throw Error(r.error||`Worktree bootstrap failed`);let i=kO.get(n);if(i)return i.promise;let a=()=>{},o=IO(n),s=(async()=>{let r=ZO(e,t,EO);a=r.dispose;let i=await XO(e,()=>IO(n)===o);if(IO(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(()=>{kO.get(n)?.promise===s&&kO.delete(n)});return kO.set(n,{promise:s,dispose:()=>a()}),s},tk=`openchamber.json`,nk=`.openchamber`,rk=[`.config`,`openchamber`,`projects`];function ik(){let e=Te();return e?.files?e.files:null}var ak=3e3,ok=80,sk=4e3,ck=2e3,lk=300,uk=160,dk=new Set([`macos`,`linux`,`windows`]),fk=e=>{if(!e)return``;let t=e.replace(/\\/g,`/`);return t===`/`?`/`:t.replace(/\/+$/,``)},pk=(e,t)=>{let n=fk(e),r=t.replace(/\\/g,`/`).replace(/^\/+/,``).replace(/\/+$/,``);return!n||n===`/`?`/${r}`:`${n}/${r}`},mk=e=>pk(pk(e,nk),tk),hk=()=>{let e=`/api`;return e.startsWith(`/`),e},gk=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}}},_k=async e=>{let t=ik();if(t?.createDirectory)try{if((await t.createDirectory(e))?.success)return!0}catch{}return!!(await gk(`${hk()}/fs/mkdir`,{path:e})).ok},vk=async e=>{let t=ik();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(`${hk()}/fs/read?path=${encodeURIComponent(e)}`,{cache:`no-store`});return t.ok?await t.text():null}catch{return null}},yk=async(e,t)=>{let n=ik();if(n?.writeFile)try{if((await n.writeFile(e,t))?.success)return!0}catch{}return!!(await gk(`${hk()}/fs/write`,{path:e,content:t})).ok},bk=async()=>{try{let e=await F(`${hk()}/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 fk(n)}catch{}if(!v()){let e=await De().catch(()=>null);if(e&&e.trim().length>0)return fk(e)}return null},xk=async()=>{let e=await bk();return e?rk.reduce((e,t)=>pk(e,t),e):null},Sk=e=>{let t=typeof e?.path==`string`?e.path.trim():``,n=t?fk(t):``;return n&&xe(n)||null},Ck=async e=>{let t=await xk();if(!t)return null;let n=Sk(e);return n?pk(t,`${n}.json`):null},wk=(e,t)=>e.length<=t?e:e.slice(0,t),Tk=e=>typeof e==`string`?wk(e,ak):``,Ek=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=wk((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},Dk=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)},Ok=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();!dk.has(e)||n.has(e)||(n.add(e),t.push(e))}return t},kk=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=wk(typeof e.name==`string`?e.name.trim():``,ok),o=wk(typeof e.command==`string`?e.command.trim():``,sk);if(!i||!a||!o||n.has(i))continue;n.add(i);let s=typeof e.icon==`string`?e.icon.trim():``,c=Ok(e.platforms),l=e.autoOpenUrl===!0,u=wk(typeof e.openUrl==`string`?e.openUrl.trim():``,ck),d=wk(typeof e.desktopOpenSshForward==`string`?e.desktopOpenSshForward.trim():``,lk);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},Ak=e=>{let t=kk(e?.actions),n=typeof e?.primaryActionId==`string`?e.primaryActionId.trim():``;return{actions:t,primaryActionId:n&&t.some(e=>e.id===n)?n:null}},jk=e=>({notes:Tk(e?.notes),todos:Ek(e?.todos)}),Mk=e=>({...jk(e),plans:Dk(e?.plans)}),Nk=e=>e.trim().toLowerCase().replace(/[`*_#>[\](){}.!?,:;"']/g,``).replace(/\s+/g,`-`).replace(/[^a-z0-9-]/g,`-`).replace(/-+/g,`-`).replace(/^-+|-+$/g,``)||`plan`,Pk=e=>wk(e.trim(),uk),Fk=()=>fe(),Ik=async e=>{let t=await xk(),n=Sk(e);return!t||!n?null:pk(t,n)},Lk=async e=>{let t=await Ik(e);return t?pk(t,`plans`):null},Rk=(e,t)=>{let n=Pk(e)||`Plan`,r=t.trim();return r?`# ${n}\n\n${r}`:`# ${n}\n`},zk=e=>{let t=(typeof e==`string`?e:``).replace(/\r\n?/g,`
|
|
466
|
-
`)
|
|
467
|
-
`).map(e=>e.trim()).find(Boolean)||`Plan`).replace(/^#+\s*/,``))||`Plan`,body:t.trim()}};async function Bk(e){let t=typeof e?.path==`string`?e.path.trim():``;if(!t)return null;let n=await Ck(e),r=async e=>{let t=await vk(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(mk(t)));if(!a)return null;try{await Vk(e,a)&&await sA(t)}catch{}return a}async function Vk(e,t){let n=typeof e?.path==`string`?e.path.trim():``;if(!n)return!1;let r=await xk(),i=await Ck(e);if(!r||!i)return!1;try{if(!await _k(r))return!1;let e=await vk(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 yk(i,JSON.stringify({...a,...t,...o,projectPath:fk(n)},null,2))}catch(e){return console.error(`Failed to write openchamber config:`,e),!1}}async function Hk(e,t){return Vk(e,{...await Bk(e)||{},...t})}async function Uk(e){return(await Bk(e))?.[`setup-worktree`]??[]}async function Wk(e,t){return Hk(e,{"setup-worktree":t.filter(e=>e.trim().length>0)})}async function Gk(e){return(await Bk(e))?.[`setup-worktree-wait`]===!0}async function Kk(e,t){return Hk(e,{"setup-worktree-wait":t})}async function qk(e){let t=await Bk(e);return Ce(t?.draftStarters)}async function Jk(e,t){return Hk(e,{draftStarters:Ce(t)})}async function Yk(e,t){let n=jk({notes:t.notes,todos:t.todos});return Hk(e,{projectNotes:n.notes,projectTodos:n.todos})}async function Xk(e){let t=await Bk(e);return Mk({notes:t?.projectNotes,todos:t?.projectTodos,plans:t?.projectPlanFiles})}async function Zk(e){return Dk((await Bk(e))?.projectPlanFiles)}async function Qk(e,t){return Hk(e,{projectPlanFiles:Dk(t)})}async function $k(e){let t=typeof e==`string`?e.trim():``;if(!t)return null;let n=await vk(t);if(n===null)return null;let r=zk(n);return{title:r.title,body:r.body,raw:n,path:t}}var eA=async e=>{let t=ik();if(t?.delete)try{if((await t.delete(e))?.success!==!1)return!0}catch{}return!!(await gk(`${hk()}/fs/delete`,{path:e})).ok};async function tA(e,t){let n=typeof t==`string`?t.trim():``;if(!n)return!1;let r=await Zk(e),i=r.find(e=>e.id===n);return!i||!await Qk(e,r.filter(e=>e.id!==n))?!1:(await eA(i.path).catch(()=>!1),!0)}async function nA(e,t,n){let r=typeof t==`string`?t:``;if(!r.trim())return null;let i=zk(r);return rA(e,{title:i.title||Pk(n??``)||`Plan`,body:i.body})}async function rA(e,t){let n=await Lk(e);if(!n)return null;let r=Pk(t.title)||`Plan`,i=Date.now(),a=Fk(),o=pk(n,`${i}-${Nk(r)}.md`),s=await Ik(e);if(!s)return null;let c=await _k(s),l=c?await _k(n):!1;if(!c||!l||!await yk(o,Rk(r,t.body)))return null;let u=await Zk(e),d={id:a,path:o,createdAt:i};return await Qk(e,[d,...u])?d:null}async function iA(e){let t=await Bk(e);return Ak({actions:t?.projectActions,primaryActionId:t?.projectActionsPrimaryId})}async function aA(e,t){let n=Ak({actions:t.actions,primaryActionId:t.primaryActionId});return Hk(e,{projectActions:n.actions,projectActionsPrimaryId:n.primaryActionId??void 0})}function oA(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 sA(e){let t=mk(e),n=ik();if(n?.delete)try{await n.delete(t);return}catch{}try{await gk(`${hk()}/fs/delete`,{path:t})}catch{}}var cA=e=>typeof e==`number`&&Number.isFinite(e)?e:0,lA=e=>cA(e.input)+cA(e.output)+cA(e.reasoning)+cA(e.cache?.read)+cA(e.cache?.write),uA=e=>e?.type===`compaction`,dA=e=>!!e&&e.some(uA),fA=(e,t)=>{for(let n=e.length-1;n>=0;--n){let r=e[n];if(r.role!==`assistant`){if(r.id&&dA(t(r.id)))return{compacted:!0};continue}let i=r.tokens;if(!i)continue;let a=lA(i);if(a>0)return{messageId:r.id??``,totalTokens:a,tokens:i}}return null},pA=500,mA=2592e6;function hA(e){let t=Date.now()-mA,n=e.filter(e=>e.time>=t);return n.length<=pA?n:n.slice(n.length-pA)}function gA(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 _A=Oe((e,t)=>({list:[],index:{session:{unseenCount:{},unseenHasError:{}},project:{unseenCount:{},unseenHasError:{}}},append:n=>{let r=t().list,i=hA([...r,n]);e({list:i,index:gA(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:gA(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:gA(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 vA(e){_A.getState().append(e)}function yA(e){_A.getState().markSessionViewed(e)}function bA(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),_A(n)}var xA=/^(.*)\.(\d+)$/,SA=[`session.next.step.`,`session.next.text.`,`session.next.reasoning.`,`session.next.tool.`,`session.next.shell.`,`session.next.compaction.`],CA=new Set([`session.next.step.ended`,`session.next.step.failed`]);function wA(e){return xA.exec(e)?.[1]??e}function TA(e){return!e||typeof e!=`object`||Array.isArray(e)?null:e}function EA(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 DA(e){let t=TA(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 OA(e){let t=TA(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 kA(e){let t=TA(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`&&!OA(e)?{directory:t.directory}:{}}}return e}function AA(e,t){if(e===`session.status`){let e=EA(t),n=t.status;if(e&&n&&typeof n==`object`)return{sessionID:e,status:n}}return t}function jA(e,t){let n=EA(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`}}:CA.has(e)?{domainActivityHint:{sessionID:n,kind:`terminal`}}:SA.some(t=>e.startsWith(t))||e.startsWith(`session.next.`)?{domainActivityHint:{sessionID:n,kind:`activity`}}:{}:{}}function MA(e){let t=TA(kA(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(DA(t))return{action:`drop`,reason:`sync-duplicate`};let r=wA(n),i=TA(t.data),a=TA(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:OA(t)}}:{action:`drop`,reason:`invalid`};let s=AA(r,o),c=OA(t)??OA(o)??(()=>{let e=TA(s.info);return typeof e?.directory==`string`?e.directory:void 0})(),l=jA(r,s);return{action:`emit`,event:{id:typeof t.id==`string`?t.id:void 0,type:r,properties:s,locationDirectory:c,...l}}}function NA(e){return{...e.id?{id:e.id}:{},type:e.type,properties:e.properties}}var PA=33,FA=200,IA=1e4,LA=8,RA=250,zA=3e4,BA=6e4,VA=2,HA=2e3,UA=8e3,WA=250,GA=5e3,KA=6e4,qA=8,JA=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},YA=e=>{if(!e||typeof e!=`object`)return{status:`unusable`};let t=JA(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=MA(e);return n.action===`drop`?n.reason===`sync-duplicate`?{status:`declined`}:{status:`unusable`}:{status:`event`,event:NA(n.event),normalized:n.event}};function XA(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 ZA(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 QA(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 o().websocket(`${n}global/event/ws`,e&&e.length>0?{lastEventId:e}:void 0)}function $A(e){let t=QA(e);return Be(t)}function ej(e){let{sdk:t,onEvent:n,onFlushStart:r,onFlushEnd:i,onNormalizedEvent:a,onReconnect:o,onCompensation:c,onRecoveryContextCaptured:d,onDisconnect:f,onTransportActivity:p,onTransportSwitch:m,routeDirectory:g,transport:_=`auto`,heartbeatTimeoutMs:v=zA,reconnectDelayMs:y=RA,wsReadyTimeoutMs:b}=e,x=b??(u()?UA:HA),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?FA:PA)-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 KA;let t=ae()?KA:GA,n=Math.min(e-1,qA);return Math.min(t,WA*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:h(),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;c?.({lastEventId:e?.lastEventId??(w&&w.length>0?w:null),disconnectedAt:e?.disconnectedAt??null,runtimeGeneration:e?.runtimeGeneration??h(),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=g?.(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=ZA(t);if(!n)return`unusable`;let r=YA(n);if(r.status!==`event`)return r.status===`declined`?`declined`:`unusable`;let i=XA(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<LA)&&(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 l()}catch(e){let t=e instanceof Error?e:Error(`Message stream WebSocket auth token unavailable`);throw _===`auto`&&(T=Date.now()+BA,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),c=(e,t=!1)=>{(t||!i)&&_===`auto`&&(T=Date.now()+BA,e.code=`WS_FALLBACK`)},l=setTimeout(()=>{l=void 0;let e=Error(`Message stream WebSocket ready timeout`);c(e),f(e);try{o.close()}catch{}},x),u=()=>{l&&=(clearTimeout(l),void 0),o.onopen=null,o.onmessage=null,o.onerror=null,o.onclose=null},d=()=>{r||(r=!0,e.removeEventListener(`abort`,p),u(),t())},f=t=>{r||(r=!0,e.removeEventListener(`abort`,p),u(),n(t))},p=()=>{try{o.close()}catch{}d()};e.addEventListener(`abort`,p,{once:!0}),o.onopen=()=>{};let m=e=>{_===`auto`&&(T=Date.now()+BA);let t=Error(`Message stream WebSocket invalid frame`);t.reason=e,f(t);try{o.close()}catch{}};o.onmessage=e=>{let t=null;try{t=JSON.parse(String(e.data))}catch{m(`ws_invalid_frame:json`);return}if(!t||typeof t.type!=`string`){m(`ws_invalid_frame:type`);return}if(t.type===`ready`){xe(),i=!0,a=Date.now(),l&&=(clearTimeout(l),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`}`,c(e),f(e);try{o.close()}catch{}return}if(t.type===`backpressure`){xe(),he=Date.now()+IA;return}if(t.type!==`event`){m(`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>=VA&&(w=n,E=void 0,D=0)),m(`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){d();return}let n=Error(`Global message stream WebSocket closed`);n.reason=i?`ws_closed:code=${t?.code??`?`}`:`ws_closed_before_ready`,i||s();let r=a>0?Date.now()-a:0;c(n,i&&r>0&&r<2e3),f(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)?KA: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 tj(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 nj(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],e.session_error_at&&delete e.session_error_at[t],delete e.permission[t],delete e.question[t]}function rj(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 ij=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},aj=(e,t)=>e?ij(t)<ij(e):!1;function oj(e,t,n){return e.session_error_at?.[t]!==n&&(e.session_error_at={...e.session_error_at,[t]:n},!0)}function sj(e,t){if(e.session_error_at?.[t]===void 0)return!1;let n={...e.session_error_at};return delete n[t],e.session_error_at=n,!0}function cj(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 lj(e){return e.type===`global.disposed`||e.type===`server.connected`?{type:`refresh`}:e.type===`project.updated`?{type:`project`,project:e.properties}:null}function uj(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 dj(e,t,n){t&&(n?.(t,void 0),nj(e,[t]))}var fj=e=>e.title===`smartfetch-secondary`;function pj(e,t,n,r){return n.found?(e.session.splice(n.index,1),fj(t)&&dj(e,t.id,r),t.parentID||(e.sessionTotal=Math.max(0,e.sessionTotal-1)),!0):!1}function mj(e,t,n){switch(t.type){case`server.instance.disposed`:return n?.onRefresh?.(``),!1;case`session.created`:{let r=ap(t.properties.info),i=e.session,a=ls.search(i,r.id,e=>e.id);return fp(r)?a.found&&aj(i[a.index],r)?!1:(a.found?i[a.index]=r:(i.splice(a.index,0,r),hj(e),r.parentID||(e.sessionTotal+=1)),!0):pj(e,r,a,n?.onSetSessionTodo)}case`session.updated`:{let r=ap(t.properties.info),i=e.session,a=ls.search(i,r.id,e=>e.id);return a.found&&aj(i[a.index],r)?!1:!fp(r)||r.time.archived?pj(e,r,a,n?.onSetSessionTodo):(a.found?i[a.index]=r:(i.splice(a.index,0,r),hj(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),dj(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]=rp(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;r.status.type===`idle`&&n?.onServerSessionIdle?.(r.sessionID);let i=!1;return(r.status.type===`busy`||r.status.type===`retry`)&&(i=sj(e,r.sessionID)),n?.now&&(e.session_status_observed_at[r.sessionID]=n.now()),cj(e.session_status[r.sessionID],r.status)?!!n?.now||i:(e.session_status[r.sessionID]=r.status,!0)}case`session.idle`:{let r=t.properties;n?.onServerSessionIdle?.(r.sessionID);let i={type:`idle`};return n?.now&&(e.session_status_observed_at[r.sessionID]=n.now()),cj(e.session_status[r.sessionID],i)?!!n?.now:(e.session_status[r.sessionID]=i,!0)}case`session.error`:{let r=t.properties;n?.onServerSessionIdle?.(r.sessionID);let i={type:`idle`},a=n?.now?.();a!==void 0&&(e.session_status_observed_at[r.sessionID]=a);let o=a!==void 0&&oj(e,r.sessionID,a);return cj(e.session_status[r.sessionID],i)?a!==void 0||o:(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 hj(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 gj=Oe()(e=>({...cl,actions:{set:t=>e(t),reset:()=>e(cl)}}));function _j(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 vj(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 yj(e){return!(!e.directory||!e.hasStore||e.pinned||e.booting||e.loadingSessions||e.hasPendingBlockingRequests)}function bj(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 xj(e){let t=e.slice(0,12).replace(/[^a-zA-Z0-9]/g,`_`);return`oc.dir.${bj(c().trim()||`default`)}.${t}.${bj(e)}`}function Sj(e,t){return`${xj(e)}.${t}`}function Cj(e,t){try{let n=localStorage.getItem(Sj(e,t));return n?JSON.parse(n):void 0}catch{return}}function wj(e,t,n){try{let r=Sj(e,t);n===void 0?localStorage.removeItem(r):localStorage.setItem(r,JSON.stringify(n))}catch{}}function Tj(e){return{vcs:Cj(e,`vcs`),projectMeta:Cj(e,`projectMeta`),icon:Cj(e,`icon`)}}function Ej(e){try{localStorage.removeItem(`${xj(e)}.sessions`)}catch{}}function Dj(e,t){wj(e,`vcs`,t)}function Oj(e,t){wj(e,`projectMeta`,t)}function kj(e,t){wj(e,`icon`,t)}function Aj(e){let t=Tj(e);Ej(e);let n=Oe()(e=>({...sl,vcs:t.vcs??sl.vcs,projectMeta:t.projectMeta??sl.projectMeta,icon:t.icon??sl.icon,patch:t=>e(t),replace:t=>e(t)}));return n.subscribe((t,n)=>{t.vcs!==n.vcs&&Dj(e,t.vcs),t.projectMeta!==n.projectMeta&&Oj(e,t.projectMeta),t.icon!==n.icon&&kj(e,t.icon)}),n}var jj=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=Aj(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(!yj({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=vj({stores:t,state:this.lifecycle,pins:new Set(t.filter(e=>this.pinned(e))),max:30,ttl:ol,graceMs:al,now:Date.now(),hasPendingBlockingRequests:e=>this.hasPendingBlockingRequestsForDirectory(e)}).filter(t=>t!==e);for(let e of n)this.disposeDirectory(e)}hasPendingBlockingRequestsForDirectory(e){return _j(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()}}},Mj=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},Nj=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(`|`)},Pj=e=>{switch(e?.type){case`retry`:return 4;case`busy`:return 3;case`idle`:return 1;default:return 0}},Fj=e=>{let t=e?.message;return typeof t==`string`?t:null},Ij=(e,t)=>{let n=e?.[t];return typeof n==`number`?n:null},Lj=(e,t)=>e?.type===t?.type&&Fj(e)===Fj(t)&&Ij(e,`attempt`)===Ij(t,`attempt`)&&Ij(e,`next`)===Ij(t,`next`),Rj=(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?Mj(r):-1}},zj=(e,t)=>e?t.sessionUpdatedAt===e.sessionUpdatedAt?Pj(t.status)>=Pj(e.status):t.sessionUpdatedAt>e.sessionUpdatedAt:!0,Bj=(e,t)=>{if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(Nj(e[n])!==Nj(t[n]))return!1;return!0},Vj=(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(!Lj(n,i))return!1}return!0};function Hj(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||!fp(e))continue;let r=n.get(e.id);(!r||Mj(e)>=Mj(r))&&n.set(e.id,e)}return Array.from(n.values()).sort((e,t)=>Mj(t)-Mj(e))}function Uj(e){let t=new Map;for(let n of e)for(let e of Object.keys(n.session_status??{})){let r=Rj(n,e);r&&zj(t.get(e),r)&&t.set(e,r)}let n={};for(let[e,r]of t)n[e]=r.status;return n}function Wj(e,t){if(!t)return;let n;for(let r of e){let e=r.session.find(e=>e.id===t);e&&(!n||Mj(e)>=Mj(n))&&(n=e)}return n}function Gj(e,t){if(!t)return;let n;for(let r of e){let e=Rj(r,t);e&&zj(n,e)&&(n=e)}return n?.status}var Kj=(e,t)=>e<t?-1:+(e>t);function qj(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 Jj=e=>!e||e.length===0?``:e.map(e=>e.id).sort(Kj).join(`|`);function Yj(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 Xj(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 Zj(e,t){return t.find(t=>t.worktree===e||t.sandboxes?.includes(e))?.id}async function Qj(e,t){let n=await Promise.allSettled([Zf(()=>e.path.get().then(e=>t({path:qj(e,`path.get`)}))),Zf(()=>e.global.config.get().then(e=>t({config:qj(e,`global.config.get`)}))),Zf(()=>e.project.list().then(e=>{t({projects:qj(e,`project.list`).filter(e=>!!e?.id).filter(e=>!!e.worktree&&!e.worktree.includes(`opencode-test`)).sort((e,t)=>Kj(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 $j(e){let{directory:t,sdk:n,getState:r,set:i,global:a}=e,o=r(),s=o.status!==`complete`,c=Zj(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}),Od(t,e)}s&&i({status:`partial`});let l=await Promise.allSettled([c?Promise.resolve():Zf(()=>n.project.current().then(e=>i({project:qj(e,`project.current`).id}))),Zf(()=>n.config.get().then(e=>{let n=qj(e,`config.get`);i({config:n}),Od(t,n)})),Zf(()=>n.path.get().then(e=>{let n=qj(e,`path.get`);i({path:n});let r=Zj(n?.directory??t,a.projects);r&&i({project:r})})),Zf(async()=>{let e=Date.now(),a=r().session_status,o=qj(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:Xj(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([Zf(()=>n.mcp.status().then(e=>i({mcp:qj(e,`mcp.status`)}))),Zf(()=>n.lsp.status().then(e=>i({lsp:qj(e,`lsp.status`)}))),Zf(()=>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})})),Zf(async()=>{let e=r(),a=new Map(Object.entries(e.question??{}).map(([e,t])=>[e,Jj(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=Yj((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)=>Kj(e.id,t.id));for(let e of a.keys()){if(s[e])continue;let t=a.get(e)??``;Jj(c.question[e])===t&&delete l[e]}i({question:l})}),Zf(async()=>{let e=r(),a=new Map(Object.entries(e.permission??{}).map(([e,t])=>[e,Jj(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=Yj((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)=>Kj(e.id,t.id));for(let e of a.keys()){if(s[e])continue;let t=a.get(e)??``;Jj(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 eM=Oe()(()=>({streamingMessageIds:new Map,messageStreamStates:new Map}));function tM(){eM.setState({streamingMessageIds:new Map,messageStreamStates:new Map})}var nM=1e3;function rM(e,t){let n=Date.now(),r=eM.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(W(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>=nM&&(s.set(r.id,{...a,lastUpdateAt:n}),c=!0)}for(let[e,t]of i)t&&(l.has(e)||u(e,t));c&&eM.setState({streamingMessageIds:o,messageStreamStates:s})}function iM(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 aM(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 oM=new Set,sM=(e,t)=>`${e}\n${t}`;function cM(e,t){!e||e===`global`||!t||oM.add(sM(e,t))}function lM(e,t){let n=sM(e,t);return oM.has(n)?(oM.delete(n),!0):!1}var uM=(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=ap(i),o=typeof t==`string`&&t!==`global`?t.trim():``,s=a.directory;return!o||typeof s==`string`&&s.trim()?a:{...a,directory:o}},dM=e=>{let t=Y.getState();return[...t.activeSessions,...t.archivedSessions].find(t=>t.id===e)??null},fM=e=>{let t=e;return JSON.stringify([e.title??``,e.time?.archived??0,e.share?.url??``,t.directory??``,t.parentID??``,t.hasChildren??!1])},pM=(e,t)=>{if(e.type===`session.created`||e.type===`session.updated`){let n=uM(e,t);if(n){let e=dM(n.id);(!e||fM(e)!==fM(n))&&!aj(e,n)&&Y.getState().upsertSession(n)}return}if(e.type===`session.deleted`){let t=e.properties?.sessionID??uM(e)?.id;t&&Y.getState().removeSessions([t])}};function mM(e){return Object.entries(e.session_status??{}).filter(([,e])=>e&&e.type!==`idle`).map(([e])=>e)}function hM(e,t){let n=t?.viewedSession;return!n?.sessionId||n.directory!==t?.directory?[]:[n.sessionId]}function gM(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 _M=e=>{let t=new Map;for(let n of e)t.set(n.id,n);return t},vM=(e,t,n)=>{let r=n??_M(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},yM=e=>{let{autoAccept:t,sessions:n,sessionById:r,sessionID:i}=e;if(Object.keys(t).length===0)return!1;let a=vM(i,n,r);for(let e of a)if(Object.prototype.hasOwnProperty.call(t,e))return t[e]===!0;return!1},bM=t({usePermissionStore:()=>wM}),xM=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}},SM=async(e,t)=>xM(await F(e,t)),CM=(e,t,n)=>yM({autoAccept:e,sessions:[],sessionById:t,sessionID:n}),wM=Oe()(ke((e,t)=>({autoAccept:{},loaded:!1,saving:!1,hydrate:async()=>{let n=await SM(`/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 SM(`/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&&CM(n,jd(),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 SM(`/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:g(),partialize:e=>({autoAccept:e.autoAccept})})),TM=Oe(()=>({statusById:new Map})),EM=e=>e===`busy`?`busy`:e===`retry`?`retry`:`idle`,DM=e=>Yo(e)??e,OM=(e,t,n)=>{TM.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}})},kM=(e,t)=>{switch(t.type){case`session.status`:{let n=t.properties;if(typeof n?.sessionID!=`string`||!n.sessionID)return;let r=EM(n.status?.type);OM(n.sessionID,DM(e),r);return}case`session.idle`:case`session.error`:{let n=t.properties;typeof n?.sessionID==`string`&&n.sessionID&&OM(n.sessionID,DM(e),`idle`);return}default:return}},AM=(e,t,n)=>{let r=DM(e),i=new Set(n??[]);TM.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=EM(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})},jM=e=>typeof e==`string`&&e.trim().length>0;function MM(e){let t=e.trim();return t.length<=18?t:`${t.slice(0,10)}…${t.slice(-4)}`}function NM(e,t){return pt(ft.getState().dictionary,e,t)}function PM(e,t=`missing-directory`){let n=jM(e)?MM(e):null;if(t===`missing-session-id`||!n){tE.error(NM(`sessions.toast.openFailedMissingSessionId`));return}if(t===`missing-directory`){tE.error(NM(`sessions.toast.openFailedMissingDirectory`,{sessionId:n}));return}tE.error(NM(`sessions.toast.openFailed`,{sessionId:n}))}function FM(e,t,n={}){let r=n.notify!==!1;if(!jM(e))return r&&PM(null,`missing-session-id`),{ok:!1,reason:`missing-session-id`,sessionId:null};if(!jM(t))return r&&PM(e,`missing-directory`),{ok:!1,reason:`missing-directory`,sessionId:e.trim()};let i=e.trim(),a=t.trim();return n.phoneShell&&!Ke()?(iG.getState().openSession({sessionId:i,directory:a}),{ok:!0,sessionId:i,directory:a}):n.switchToChat!==!1&&!m.getState().setActiveMainTab(`chat`)?(r&&PM(i,`tab-switch-blocked`),{ok:!1,reason:`tab-switch-blocked`,sessionId:i}):($.getState().setCurrentSession(i,a),{ok:!0,sessionId:i,directory:a})}var IM=null,LM=e=>{IM=e},RM=(e,t)=>typeof IM==`function`&&typeof e==`string`&&e.trim()&&typeof t==`string`&&t.trim()?(IM(e.trim(),t.trim()),{ok:!0,sessionId:e.trim(),directory:t.trim()}):FM(e,t,{switchToChat:!0}),zM=(e,t)=>!e||!t?null:`${e}:${t}`,BM=({permission:e,directory:t,isViewed:n,pendingIds:r,show:i,openSession:a})=>{let o=zM(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},VM=15e3,HM=new Map,UM=(e,t)=>`${e}\n${t}`;function WM(e){if(!e.runtimeKey||!e.directory||!e.sessionId||!e.status||e.status.type===`idle`)return;let t=Date.now();for(let[e,n]of HM)n.expiresAt<=t&&HM.delete(e);HM.set(UM(e.runtimeKey,e.directory),{runtimeKey:e.runtimeKey,directory:e.directory,sessionId:e.sessionId,status:e.status,expiresAt:Date.now()+VM})}function GM(e,t){let n=HM.get(UM(e,t));return n?n.expiresAt<=Date.now()?(HM.delete(UM(e,t)),null):n:null}var KM=[],qM=[],JM=[],YM={sessionID:``,revertMessageID:void 0,records:qM,history:JM},XM=e=>{if(e?.type!==`text`)return``;let t=e.text;return typeof t==`string`?t:``},ZM=e=>{for(let t of e){let e=XM(t);if(e.length>0)return e}return``},QM=(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},$M=(e,t=YM)=>{let n=e.sessionID;if(!n)return YM;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]??KM}))}if(a.length===0)return t.sessionID===n&&t.revertMessageID===i&&t.records.length===0?t:{sessionID:n,revertMessageID:i,records:qM,history:JM};if(t.sessionID===n&&t.revertMessageID===i&&QM(t.records,a))return t;let o=[];for(let e of a){let t=ZM(e.parts);t.length>0&&o.push(t)}return{sessionID:n,revertMessageID:i,records:a,history:o}};function eN(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 tN(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 nN(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 rN(e,t,n){if(!e)return null;let r=t?.id===e?t:null,i=n?.id===e?n:null;return r??i}function iN(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 aN=Me(),oN=`__openchamber_sync_context__`,sN=globalThis,cN=sN[oN]??(0,G.createContext)(null);sN[oN]=cN;function lN(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 uN(e,t){if(!e.error)return e.data;let n=e.response?.status;throw Error(`${t} failed${n?` (${n})`:``}: ${lN(e.error)}`)}function dN(){let e=(0,G.useContext)(cN);if(!e)throw Error(`useSyncSystem must be used within <SyncProvider>`);return e}function fN(e){return Array.from(e.children.values(),e=>e.getState())}function pN(e,t,n){let r=(0,V.c)(7),i=t===void 0?Object.is:t,{childStores:a}=dN(),o=(0,G.useRef)(void 0),s=(0,G.useRef)(!1),c;r[0]!==a||r[1]!==i||r[2]!==e?(c=()=>{let t=e(fN(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],G.useSyncExternalStore(u,l,l)}function mN(e){let t=(0,V.c)(4),n;t[0]===e?n=t[1]:(n=t=>Gj(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),pN(n,Object.is,r)}function hN(e){let t=(0,V.c)(5),n=mN(e),r;t[0]===e?r=t[1]:(r=t=>t.statusById.get(e)?.status,t[0]=e,t[1]=r);let i=TM(r),a;return t[2]!==i||t[3]!==n?(a=gN(n,i),t[2]=i,t[3]=n,t[4]=a):a=t[4],a}function gN(e,t){if(e)return e;if(t===`busy`)return{type:`busy`};if(t===`retry`)return{type:`retry`,attempt:0,message:``,next:0}}var _N=[],vN={};function yN(e){let t=(0,V.c)(4),n=e?.enabled??!0,r;t[0]===n?r=t[1]:(r=e=>n?Uj(e):vN,t[0]=n,t[1]=r);let i;return t[2]===n?i=t[3]:(i=(e,t)=>n?e.subscribeAllSelected(bN,t):xN,t[2]=n,t[3]=i),pN(r,Vj,i)}function bN(e){return e.session_status}function xN(){}function SN(e){let t=(0,V.c)(5),n=e?.enabled??!0,r=Y(TN),i;t[0]!==n||t[1]!==r?(i=e=>n?Hj(e,r):_N,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(CN,t):wN,t[3]=n,t[4]=a),pN(i,Bj,a)}function CN(e){return e.session}function wN(){}function TN(e){return e.pendingDeletionIds}var EN=!1,DN=0,ON=0,kN=1500,AN=new Set([`patch`,`step-start`,`step-finish`]),jN=5e3,MN=4e4,NN=15e3,PN=6e4,FN=6e4,IN=e=>!e||e.length===0?``:e.map(e=>e.id).sort(LN).join(`|`),LN=(e,t)=>e<t?-1:+(e>t),RN=e=>JSON.stringify(e);function zN(e,t){return RN(e)===RN(t)}var BN=5e3,VN=new Map,HN=(e,t)=>`${e}:${t}`;function UN(e,t){try{let n=H();return n?El(n.getTranscript(W(e,t))):!1}catch{return!1}}async function WN(e,t){try{if(!H())return;await Tu(e,t)}catch{}}function GN(e,t,n,r){if(!e||e===`global`||!t)return;let i=HN(e,t),a=VN.get(i);if(a&&Date.now()-a.enqueuedAt<BN){Promise.resolve().then(()=>{UN(e,t)&&WN(e,t)});return}VN.set(i,{sessionID:t,directory:e,enqueuedAt:Date.now(),request:r}),Promise.resolve().then(async()=>{let a=n.getChild(e);if(!a){VN.delete(i);return}try{await qN(e,t,a,r)}catch{}finally{VN.delete(i)}})}function KN(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&&Dy(t,r)}t.domainActivityHint?.kind===`terminal`&&r===YN&&e===JN&&GN(e,r,n,{reason:`session-idle`})}}async function qN(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(W(e,t)).liveRevision}catch{return}},o=a(),s=await Ub({directory:e,sessionID:t,limit:sh(),signal:AbortSignal.timeout(3e4),purpose:`materialize`});if(r?.isStale?.())return`skipped`;let c=Gb({directory:e,sessionID:t,purpose:`materialize`,page:s,capturedLiveRevision:o,liveRevision:a(),skipPartTypes:AN});return UN(e,t)&&await WN(e,t),c.applied?(hx({directory:e,sessionID:t,store:n,isStale:r?.isStale}),s.records.length===0||i&&i.type!==`idle`&&!r?.isStale?.()&&await jy(e,n,[t]),`ready`):`skipped`}catch{return`error`}}var JN=``,YN=``,XN=null,ZN=``,QN=``,$N=new Map,eP=15e3,tP=(e,t)=>`${e}\n${t}`;function nP(e=Date.now()){for(let[t,n]of $N.entries())n<=e&&$N.delete(t)}var rP=new Set,iP=new Set,aP=(e,t)=>!e||!t?null:`${e}:${t}`,oP=e=>{if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0},sP=(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)&&c()===`local`)return!0;let i=Te()?.notifications;return i?.notifyAgentCompletion&&i.notifyAgentCompletion({title:oP(r.title),body:oP(r.body),tag:oP(r.tag),kind:oP(r.kind),sessionId:oP(r.sessionId),directory:oP(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 cP(e,t){!e||!t||!XN||lM(e,t)&&GN(e,t,XN,{reason:`session-idle`})}function lP(e){XN=e,e&&cP(JN,YN)}function uP(e,t){JN=e,YN=t,cP(e,t)}function dP(e,t,n){if(!e||!t)return;let r=tP(e,t);if(!n){$N.delete(r);return}$N.set(r,Date.now()+eP)}function fP(e,t){if(!e||!t){ZN=``,QN=``;return}ZN=e,QN=t}function pP(){let e=[],t=new Set,n=(n,r)=>{if(!n||!r)return;let i=tP(n,r);t.has(i)||(t.add(i),e.push({directory:n,sessionID:r}))};return n(ZN,QN),n(JN,YN),e}function mP(){return typeof document<`u`&&document.hasFocus()}function hP(e,t){return t?JN&&YN&&e===JN&&t===YN&&mP()?!0:(nP(),$N.has(tP(e,t))):!1}function gP(){return EN||Date.now()-DN<kN}function _P(e){return!JN||!YN||e!==JN?null:{directory:JN,sessionId:YN}}function vP(e,t){return gM(t,{directory:e,viewedSession:_P(e)})}function yP(e,t,n,r=MN,i=NN){return!(e<=0||n-e<r||n-t<i)}function bP({isViewed:e,status:t,lastTransportActivityAt:n,lastDomainActivityAt:r,lastFullResyncAt:i,now:a,transportStaleThresholdMs:o=MN,domainStaleThresholdMs:s=PN,recoveryCooldownMs:c=FN}){return!(!e||t?.type!==`busy`&&t?.type!==`retry`||n<=0||a-n>=o||r<=0||a-r<s||a-i<c)}var xP=v(),SP=(e,t)=>{!xP||typeof window>`u`||window.dispatchEvent(new CustomEvent(`openchamber:vscode-notification-event`,{detail:{directory:e,payload:t}}))},CP=()=>({sessionDirectoryById:new Map,messageSessionById:new Map,sessionMessageIdsById:new Map}),wP=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},TP=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},EP=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},DP=(e,t,n)=>{!t||!n||n===`global`||e.sessionDirectoryById.set(t,n)},OP=(e,t,n,r)=>{if(!t)return;DP(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)},kP=(e,t,n,r)=>{if(!t||!n)return;DP(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]))},AP=(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))},jP=(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)},MP=(e,t,n)=>{let r=new Set;for(let i of n.session)i?.id&&(r.add(i.id),DP(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),DP(e,a.scope.sessionID,t);let i=n?.getTranscript?.(W(t,a.scope.sessionID));if(i){let n=Gu(i);OP(e,a.scope.sessionID,t,n)}}}catch{}for(let[n,i]of e.sessionDirectoryById)i===t&&(r.has(n)||jP(e,n))},NP=(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 DP(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 DP(n,e,t),t}}catch{}return null},PP=(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()??U(t,r)).hasSession?.(W(t,n))??!1}catch{return!1}},FP=(e,t,n)=>{try{let e=H();if(e&&e.getParts(W(t,n),n).length>0)return!0}catch{}return!1},IP=e=>!JN||!YN?null:e.getChild(JN)?JN:null,LP=(e,t,n,r)=>{let i=wP(t),a=TP(n);if(a){if(i&&i!==`global`&&PP(r,i,a))return DP(e,a,i),i;let t=e.sessionDirectoryById.get(a);if(t&&r.getChild(t))return t;let n=NP(a,r,e);if(n)return n}let o=EP(n);if(o){if(i&&i!==`global`&&FP(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(FP(r,i,o))return i;for(let[e]of r.children)if(FP(r,e,o))return e;let n=IP(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},RP=(e,t,n,r)=>{if(e)return e;if(t){let e=r.messageSessionById.get(t);if(e)return e}if(n&&n===JN&&YN)return YN};function zP(e,t){let n=TP(e)??(e.type===`session.deleted`?e.properties.info?.id:void 0);if(n)return n;let r=EP(e);return r?t.get(r):void 0}function BP(e,t){return e===t}var VP=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`,HP=(e,t,n)=>{if(!t||t===`global`)return;let r=TP(n);switch(r&&DP(e,r,t),n.type){case`session.created`:case`session.updated`:{let r=n.properties.info;r?.id&&DP(e,r.id,t);return}case`session.deleted`:{let t=n.properties.sessionID;t&&jP(e,t);return}case`message.updated`:{let r=n.properties.info;r?.id&&r.sessionID&&kP(e,r.sessionID,r.id,t);return}case`message.removed`:{let t=n.properties;t.messageID&&AP(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&&kP(e,a,o,t);return}default:return}};async function UP(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,IN(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(!hP(e,t))for(let r of n){if(i.has(r.id))continue;let n=aP(t,r.id);if(!n||rP.has(n))continue;rP.add(n);let a=r.questions?.[0],o=a?.header?.trim()||`Input needed`,s=a?.question?.trim()||`Agent is waiting for your response`;tE.info(o,{id:`question-${n}`,description:s,action:{label:`Open session`,onClick:()=>RM(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)??``;IN(e.question[r])===i&&delete t[r]}return{question:t}})}catch{}try{let n=new Map(a.map(e=>[e,IN(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=wM.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 wC(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=hP(e,t);if(!a)for(let t of n)i.has(t.id)||BM({permission:t,directory:e,isViewed:a,pendingIds:iP,show:(e,t)=>tE.info(e,t),openSession:RM})}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)??``;IN(e.permission[r])===i&&delete t[r]}return{permission:t}})}catch{}}}function WP(e,t,n){n?.statusOnly}function GP(e){return e.isFirstConnect&&!e.disconnectedBeforeFirstConnect}function KP(e){return{resyncBlockingRequests:!0,ingestRoutingIndex:!e?.statusOnly}}async function qP(e,t,n,r,i,a){let o=vP(e,t.getState());await jy(e,t,o);let s=hM(vP(e,t.getState()),{directory:e,viewedSession:_P(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 Zf(async()=>{let e=await a.session.get({sessionID:o});return uN(e,`session.get`),e}).catch(()=>null))?.data;if(c&&BP(s,i(o))){let r=ap(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?zN(n[t],r)||(n=[...e.session],n[t]=r,i=!0):(n=[...e.session],n.push(r),n.sort((e,t)=>LN(e.id,t.id)),r.parentID||(a+=1),i=!0),i?{session:n,sessionTotal:a}:e}),DP(n,r.id,e)}let l=i(o),u=t.getState(),d=u.session_status?.[o],f=u.session_status_observed_at?.[o],p=()=>!BP(l,i(o)),m=l;Hg(e,o);try{let r=await Ub({directory:e,sessionID:o,limit:sh(),signal:AbortSignal.timeout(3e4),purpose:`recovery`});if(p()||!Gb({directory:e,sessionID:o,purpose:`recovery`,page:r,capturedLiveRevision:m,liveRevision:i(o),skipPartTypes:AN}).applied)return;let a=yu().getTranscript(W(e,o));OP(n,o,e,a.messageOrder.map(e=>a.messagesByID[e]).filter(e=>!!e)),hx({directory:e,sessionID:o,store:t,transcript:a,isStale:p}),await My({directory:e,sessionID:o,store:t,statusBeforePull:d,statusObservedAtBeforePull:f,hasMessages:a.messageOrder.length>0,isStale:p})}catch{}finally{Ug(e,o)}}))}let c=KP(a);c.resyncBlockingRequests&&await UP(e,t,o),c.ingestRoutingIndex&&MP(n,e,t.getState())}function JP(e){try{let t=H(),n=i(),r=h();return t?.getCacheBudget?.().listCanonicalScopesForSession(e,{transport:n,generation:r})?.map(e=>W(e.directory,e.sessionID,{transport:e.transport,generation:e.generation}))??[]}catch{return[]}}function YP(e){let t=TP(e)??void 0;if(t)return t;if(e.type===`message.updated`)return e.properties.info?.sessionID??void 0}var XP=null,ZP=0;function QP(e){return`${e.directory}\0${e.sessionID}\0${e.transport??``}\0${e.generation??``}`}function $P(){ZP===0&&(XP={byScope:new Map,routing:[],debug:[]}),ZP+=1}function eF(){if(ZP===0||(--ZP,ZP>0))return;let e=XP;if(XP=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=RP(r.sessionID??t.transcriptSessionID,r.messageID??e,t.scope.directory,t.routingIndex);n&&GN(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)HP(t.routingIndex,t.resolvedDirectory,t.payload)}finally{XP=null,ZP=0}}function tF(e,t,n,r,a,o){let s=iM({sessionID:t,resolvedDirectory:n,transport:i(),generation:h(),listCanonicalScopes:JP});if(XP){for(let n of s){let i=QP(n),s=XP.byScope.get(i);s||(s={scope:n,events:[],transcriptSessionID:t,eventMessageIDs:[],childStores:a,routingIndex:o},XP.byScope.set(i,s)),s.events.push(e),s.eventMessageIDs.push(r)}XP.debug.push({payloadType:e.type,transcriptSessionID:t,eventMessageID:r,changed:!1}),XP.routing.push({routingIndex:o,resolvedDirectory:n,payload:e});return}let c=!1;for(let n of s){let i=xu(n,{type:`sse-event`,event:e})??{applied:!1,changed:!1};i.changed&&(c=!0);let s=i.materialization;if(s){let e=RP(s.sessionID??t,s.messageID??r,n.directory,o);e&&GN(n.directory,e,a,{reason:s.reason,messageID:s.messageID,partID:s.partID})}}c?ys.dispatch.eventApplied(e.type,t,r):ys.dispatch.eventNoChange(e.type,t,r),HP(o,n,e)}function nF(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&&HO(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`&&wM.getState().applySnapshot({sessions:t.sessions})}return}let i=LP(r,e,t,n);if(sP(t,i))return;if(pM(t,i),kM(i,t),i===`global`||!i){if(Al(t.type)){let e=YP(t);if(e){tF(t,e,i||`global`,EP(t)??void 0,n,r);return}}let e=gP(),a=lj(t);if(!a)return;if(a.type===`refresh`)e||gj.setState({reload:`pending`});else if(a.type===`project`){let e=gj.getState();gj.setState({projects:uj(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=TP(t);if(e){let t=NP(e,n,r);t&&(a=n.getChild(t),o=t)}}if(!a){if(Al(t.type)){let e=YP(t);if(e){tF(t,e,o,EP(t)??void 0,n,r);return}}let e=lj(t);if(e?.type===`refresh`)gj.setState({reload:`pending`});else if(e?.type===`project`){let t=gj.getState();gj.setState({projects:uj(t,e.project).projects})}return}if(n.mark(o),t.type===`permission.asked`){let e=t.properties;if(wM.getState().isSessionAutoAccepting(e.sessionID)){HP(r,o,t),v()&&wC(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=hP(o,e.sessionID);BM({permission:e,directory:o,isViewed:t,pendingIds:iP,show:(e,t)=>tE.info(e,t),openSession:RM})}}if(t.type===`permission.replied`){let e=t.properties,n=zM(e.sessionID,e.requestID);n&&(iP.delete(n),tE.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=aP(n,e.id);if(!hP(o,n)&&t&&!rP.has(t)){rP.add(t);let r=e.questions?.[0],i=r?.header?.trim()||`Input needed`,a=r?.question?.trim()||`Agent is waiting for your response`;tE.info(i,{id:`question-${t}`,description:a,action:{label:`Open session`,onClick:()=>RM(n,o)}})}}}if(t.type===`question.replied`||t.type===`question.rejected`){let e=t.properties,n=aP(e.sessionID,e.requestID);n&&(rP.delete(n),tE.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&&vA({directory:o,session:e,time:Date.now(),viewed:hP(o,e),type:`turn-complete`})}if(t.type===`session.idle`){let e=TP(t);if(e&&o&&o!==`global`){let t=a.getState().session.find(t=>t.id===e),r=t?t.parentID:null,i=aM({idleSessionID:e,directory:o,parentID:r,activeSessionID:YN,activeDirectory:JN});i.action===`materialize-parent`?GN(o,i.sessionID,n,{reason:`child-session-idle`}):i.action===`materialize-now`?GN(o,i.sessionID,n,{reason:`session-idle`}):i.action===`defer-until-viewed`&&cM(o,i.sessionID)}}let s=a.getState(),c=TP(t)??void 0,l=EP(t)??void 0;if(t.type===`session.created`){let e=t.properties.info;Tx(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`)&&Fx(o,c,l))return;if(Al(t.type)){let e=YP(t);if(!e){HP(r,o,t);return}tF(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},u.session_error_at={...s.session_error_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=mj(u,t,{onSetSessionTodo:(e,t)=>{nx.getState().setSessionTodos(e,t)},onServerSessionIdle:e=>{$.getState().releaseQueueAbortBlocksForServerIdle(o,e)},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=TP(t)??void 0,n=EP(t)??void 0;ys.dispatch.eventApplied(t.type,e,n)}else{let e=TP(t)??void 0,n=EP(t)??void 0;ys.dispatch.eventNoChange(t.type,e,n)}if(p){let e=RP(p.sessionID??TP(t)??void 0,p.messageID??EP(t)??void 0,o,r);e&&GN(o,e,n,{reason:p.reason,messageID:p.messageID,partID:p.partID})}HP(r,o,t)}var rF=e=>{typeof window>`u`||window.dispatchEvent(new CustomEvent(`openchamber:opencode-update-available`,{detail:e}))},iF=null,aF=async()=>{let e=c();return(!iF||iF.runtimeKey!==e)&&(iF={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)}),iF.promise},oF=e=>{typeof window>`u`||aF().then(t=>{t||rF(e)})};function sF(e,t,n){return e!==t||n!==!1}function cF(e){let t=Hf(e=>e.settingsMessageStreamTransport),r=(0,G.useRef)(null);r.current||=new jj;let a=r.current,o=(0,G.useRef)(null);o.current||=CP();let s=o.current,l=(0,G.useRef)(0),u=(0,G.useRef)(new Map),d=(0,G.useRef)(new Map),f=(0,G.useRef)(new Map),p=(0,G.useRef)(new Set),m=(0,G.useRef)(null),g=(0,G.useRef)(!1),_=(0,G.useRef)(!1),y=(0,G.useRef)({directory:e.directory,enabled:e.bootstrapDirectory});y.current={directory:e.directory,enabled:e.bootstrapDirectory};let b=e=>{let t=y.current;return sF(e,t.directory,t.enabled)},x=(0,G.useMemo)(()=>({childStores:a,sdk:e.sdk,directory:e.directory}),[a,e.sdk,e.directory]);(0,G.useEffect)(()=>(lP(a),()=>{lP(null)}),[a]);let S=(0,G.useCallback)((e,t,n)=>{if(WP(e,a.children.get(e),n),!b(e))return;let r=a.children.get(e);if(!r)return;let i=p.current;i.has(e)||(n?.statusOnly||f.current.set(e,Date.now()),i.add(e),qP(e,r,s,t,t=>d.current.get(tP(e,t))??0,n).catch(()=>{}).finally(()=>{i.delete(e)}))},[a,s]);(0,G.useEffect)(()=>{v()||wM.getState().hydrate().catch(()=>void 0)},[e.sdk]),(0,G.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=gj.getState();await $j({directory:n,sdk:e.sdk,getState:()=>r.getState(),set:e=>{r.setState(e),e.session&&MP(s,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,s]),(0,G.useEffect)(()=>{let t=++ON;EN=!0;let n=gj.getState().actions;return Zt().then(()=>{if(ON===t)return Qj(e.sdk,e=>{ON===t&&n.set(e)})}).then(()=>{ON===t&&(DN=Date.now())}).finally(()=>{ON===t&&(EN=!1)}),()=>{ON===t&&(EN=!1)}},[e.sdk]),(0,G.useEffect)(()=>{let n=ej({sdk:e.sdk,transport:t,routeDirectory:(e,t)=>LP(s,e,t,a),onFlushStart:()=>{$P()},onFlushEnd:()=>{eF()},onNormalizedEvent:(e,t)=>{KN(e,t,a);let n=t.domainActivityHint?.sessionID??t.admissionHint?.sessionID;n&&e===JN&&n===YN&&(t.domainActivityHint||t.admissionHint)&&u.current.set(tP(e,n),Date.now())},onEvent:(e,t)=>{let n=zP(t,s.messageSessionById)??null;if(n&&VP(t)){let t=tP(e,n);d.current.set(t,(d.current.get(t)??0)+1)}if(n&&e===JN&&n===YN&&(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(tP(e,n),Date.now()),n&&e===JN&&n===YN&&t.type===`session.status`){let r=t.properties.status;if(r?.type===`busy`||r?.type===`retry`){let t=tP(e,n);u.current.has(t)||u.current.set(t,Date.now())}r?.type===`idle`&&u.current.delete(tP(e,n))}if(n&&(t.type===`session.idle`||t.type===`session.deleted`)&&u.current.delete(tP(e,n)),SP(e,t),t.type===`installation.update-available`){let e=typeof t.properties?.version==`string`?t.properties.version:``;e&&oF({version:e})}nF(e,t,a,s)},onTransportActivity:()=>{let e=Date.now();l.current=e,Bm(e)},onReconnect:()=>{Hf.setState({isConnected:!0,hasEverConnected:!0,connectionPhase:`connected`});let e=!g.current;g.current=!0;let t=GP({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}=Hf.getState();Hf.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}=Hf.getState();Hf.setState({isConnected:!1,connectionPhase:e?`reconnecting`:`connecting`});for(let e of a.children.keys())S(e,`transport-switch`)}});m.current=n.reconnect;let r=Vm(n.reconnect);return()=>{r(),m.current===n.reconnect&&(m.current=null),n.cleanup()}},[e.sdk,a,s,t,S]),(0,G.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(mM(r).length===0){f.current.delete(e);continue}let i=f.current.get(e)??0;yP(l.current,i,t)&&(m.current?.(`active_stream_stale`),S(e,`stale-status-resync`));let a=_P(e);if(!a)continue;let o=r.session_status?.[a.sessionId],s=tP(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}bP({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,jN);return n(),()=>{e=!0,clearInterval(r)}},[a,S]),(0,G.useEffect)(()=>{let t;if(e.directory){let n=a.ensureChild(e.directory,{bootstrap:sF(e.directory,e.directory,e.bootstrapDirectory)}),r=GM(c(),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)},VM)),MP(s,e.directory,n.getState())}return()=>{t&&clearTimeout(t)}},[e.directory,e.bootstrapDirectory,a,s]);let C=(0,G.useRef)(null),w=(0,G.useRef)({transport:i(),generation:h()});return(0,G.useEffect)(()=>{if(C.current)return;let e=Wb({childStores:a,getViewedSession:()=>pP()[0]??null,getViewedSessions:()=>pP()});return C.current=e,w.current={transport:i(),generation:h()},()=>{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,G.useEffect)(()=>(Sd(e.sdk,a,e.directory,(e,t)=>{DP(s,e,t)}),qx(e.sdk,a,()=>z.getDirectory()||e.directory),Cy((e,t,n)=>{let r=new Set(n),i=Yo(e)??e,a={...t};for(let[e,t]of TM.getState().statusById)r.has(e)||t.directory===i&&(a[e]={type:t.status});AM(e,a,n)}),()=>{Cy(void 0)}),[e.sdk,e.directory,a,s]),(0,G.useEffect)(()=>n(e=>{if(!e.transportIdentityChanged){w.current={transport:i(),generation:h()};return}let t=w.current;Pu(`runtime-switch`);let n=C.current?.repository;n&&n.purgeGeneration(t.transport,t.generation),w.current={transport:i(),generation:h()}}),[]),(0,G.useEffect)(()=>{if(!e.directory)return;let t=a.getChild(e.directory);if(!t)return;let n=e.directory,r=()=>{rM(t.getState(),{directory:n,store:t})};r();let i=t.subscribe(()=>{r()}),o=[],s=()=>{for(let e of o)e();o=[];let e=H()??U(n,t),i=t.getState().session_status??{};for(let[t,a]of Object.entries(i))!a||a.type===`idle`||o.push(e.subscribe(W(n,t),r));r()};s();let c=hu(s);return()=>{c(),i();for(let e of o)e()}},[e.directory,a]),(0,aN.jsx)(cN.Provider,{value:x,children:e.children})}function lF(e,t){let n=(0,V.c)(4),r=dN(),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 uF(e,t){let n=lF(t);return Ae(n,e)}function dF(e){let{childStores:t}=dN(),n=e.map(e=>`${e.directory}\n${e.sessionID}`).join(`\0`),r=(0,G.useRef)(e);r.current=e;let i=(0,G.useCallback)(e=>n?nN(t,r.current,e):()=>void 0,[t,n]),a=(0,G.useCallback)(()=>n?tN(t,r.current):``,[t,n]);return G.useSyncExternalStore(i,a,a)}function fF(){let e=(0,V.c)(2),{childStores:t}=dN(),n;return e[0]===t?n=e[1]:(n=e=>eN(t,e),e[0]=t,e[1]=n),n}function pF(e,t){let n=dN(),r=t??n.directory;return Yu(e,r,lF(r))}function mF(e,t){let n=dN(),r=t??n.directory;return ad(e,r,lF(r))}function hF(e,t){let n=(0,V.c)(8),r=dN(),i=t??r.directory,a=lF(i),o=(0,G.useRef)(void 0),s;n[0]!==e||n[1]!==a||n[2]!==i?(s=()=>{if(!e){o.current=void 0;return}let t=(H()??U(i,a)).getRequestState?.(W(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 gF;let n=(H()??U(i,a)).subscribe(W(i,e),()=>{t()}),r=hu(()=>{n(),o.current=void 0,n=(H()??U(i,a)).subscribe(W(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 G.useSyncExternalStore(u,c,c)}function gF(){}function _F(e,t,n){let r=dN(),i=t??r.directory;return sd(e,i,lF(i),n)}function vF(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=lF(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):yF,n[4]=e,n[5]=i,n[6]=s):s=n[6];let c=s;return G.useSyncExternalStore(c,o,o)}function yF(){}function bF(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=lF(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):xF,n[4]=e,n[5]=i,n[6]=s):s=n[6];let c=s;return G.useSyncExternalStore(c,o,o)}function xF(){}function SF(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=lF(t,r),a;n[1]!==e||n[2]!==i?(a=()=>{if(e)return i.getState().session_error_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((n,r)=>{n.session_error_at?.[e]!==r.session_error_at?.[e]&&t()}):CF,n[4]=e,n[5]=i,n[6]=s):s=n[6];let c=s;return G.useSyncExternalStore(c,o,o)}function CF(){}function wF(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=lF(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):TF,n[4]=r,n[5]=a,n[6]=c):c=n[6];let l=c;return G.useSyncExternalStore(l,s,s)}function TF(){}function EF(e,t,n){let r=(0,V.c)(6),i=lF(t,n),a;r[0]!==e||r[1]!==i?(a=()=>e?i.getState().permission[e]??CI:CI,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):DF,r[3]=e,r[4]=i,r[5]=s):s=r[5];let c=s;return G.useSyncExternalStore(c,o,o)}function DF(){}function OF(e,t,n){let r=(0,V.c)(2),i=lF(t,n),a;return r[0]===e?a=r[1]:(a=t=>e?t.question[e]??wI:wI,r[0]=e,r[1]=a),Ae(i,a)}function kF(e){return uF(AF,e)}function AF(e){return e.session}var jF=e=>e.permission,MF=e=>e.question;function NF(e){if(!e)return qp;let t=[];for(let n of e.messageOrder){let r=e.partsByMessageID[n];if(r)for(let e of Kp(r))t.push(e)}return t.length===0?qp:t}function PF(){let e=null;return t=>{let n=NF(t);if(n.length===0)return qp;let r=n.map(e=>`${e.parentSessionId}\u0000${e.sessionId}`).join(``);return e&&e.signature===r?e.edges:(e={signature:r,edges:n},n)}}function FF(e,t){let n=dN(),r=t??n.directory,i=lF(r),a=(0,G.useRef)(PF()).current,o=(0,G.useCallback)(()=>{if(!e)return qp;try{let t=H()?.getTranscript(W(r,e));return a(t)}catch{return qp}},[a,e,r]),s=(0,G.useCallback)(t=>{if(!e)return()=>void 0;let n=(H()??U(r,i))?.subscribe(W(r,e),()=>{t()})??(()=>void 0),a=hu(()=>{n(),n=(H()??U(r,i))?.subscribe(W(r,e),()=>{t()})??(()=>void 0),t()});return()=>{a(),n()}},[e,i,r]);return G.useSyncExternalStore(s,o,o)}function IF(e,t,n,r){let i=(0,V.c)(7),a=FF(e,t),o;i[0]===r?o=i[1]:(o={sessionID:null,sessions:null,requestsBySession:null,dispatchEdges:null,result:r},i[0]=r,i[1]=o);let s=(0,G.useRef)(o),c;return i[2]!==a||i[3]!==r||i[4]!==n||i[5]!==e?(c=t=>{let i=n(t),o=s.current;if(o.sessionID===e&&o.sessions===t.session&&o.requestsBySession===i&&o.dispatchEdges===a)return o.result;let c=Xp(t.session,i,e,r,a),l=Yp(o.result,c)?o.result:c;return s.current={sessionID:e,sessions:t.session,requestsBySession:i,dispatchEdges:a,result:l},l},i[2]=a,i[3]=r,i[4]=n,i[5]=e,i[6]=c):c=i[6],uF(c,t)}function LF(e,t){return IF(e,t,jF,CI)}function RF(e,t){return IF(e,t,MF,wI)}function zF(e,t){let n=(0,V.c)(9),r=BF(e,t),i=BF(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=BF(c,t),u=BF(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=iN(e,s,p,t),n[4]=s,n[5]=t,n[6]=p,n[7]=e,n[8]=m):m=n[8],m}function BF(e,t){let n=(0,V.c)(7),{childStores:r}=dN(),i;n[0]!==r||n[1]!==t||n[2]!==e?(i=()=>t?r.getChild(t)?.getState().session.find(t=>t.id===e):Wj(fN(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(VF,e),n[4]=r,n[5]=t,n[6]=o):o=n[6];let s=o;return G.useSyncExternalStore(s,a,a)}function VF(e){return e.session}function HF(e){let t=rN(e,BF(e),Y((0,G.useCallback)(t=>e?t.activeSessions.find(t=>t.id===e)??null:null,[e]))),n=(0,G.useRef)(null),[,r]=G.useState(0);if((0,G.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 UF(e,t){return BF(e,t)?.directory??void 0}function WF(){return dN().directory}function GF(){return dN().childStores}var KF=[],qF=40,JF=4,YF=30,XF=4,ZF=30,QF=new WeakMap,$F=(e,t,n)=>`${e}\u0000${+!!t}\u0000${n??``}`,eI=e=>{let t=QF.get(e);return t||(t=new Map,QF.set(e,t)),t},tI=(e,t,n,r)=>{let i=QF.get(e);if(!i)return;let a=$F(t,n,r),o=i.get(a);if(o)return i.delete(a),i.set(a,o),o},nI=(e,t)=>{if(!t.sessionID)return;let n=eI(e),r=$F(t.sessionID,t.suspendPartUpdates,t.suspendedPartUpdatesMessageID),i=v()?YF:$m()?ZF:null;if(i!==null&&t.list.length>i){n.delete(r);return}n.delete(r),n.set(r,t);let a=v()?JF:$m()?XF:qF;for(;n.size>a;){let e=n.keys().next().value;if(typeof e!=`string`)break;n.delete(e)}};function rI(e,t){let n=QF.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 iI=`The following tool was executed by the user`,aI=(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(iI)}):!1};function oI(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 sI=(e,t)=>{for(let n of e.list){let r=t.parts[n.info.id]??SI;if(e.suspendPartUpdates){let i=e.suspendedPartUpdatesMessageID;if((!i||n.info.id===i)&&!aI(t.parts,n.info,r)&&!oI(n.parts,r))continue}if(Ks(n.parts,r,n.info)!==n.parts)return!1}return!0},cI=(e,t,n,r)=>{let i=tI(e,t.sessionID,n,r);if(i&&i.sourceMessages===t.messages&&i.revertMessageID===t.revertMessageID&&i.suspendPartUpdates===n&&i.suspendedPartUpdatesMessageID===r&&sI(i,t))return i};function lI(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?xI:i.slice(),revertMessageID:r}}function uI(e,t,n=!1,r){let i=e.sessionID,{sourceMessages:a,visibleMessages:o,revertMessageID:s}=lI(e,t),c=new Map,l=o.map(i=>{let a=t?.byId.get(i.id),o=e.parts[i.id]??SI,s=n&&a&&(!r||i.id===r)&&!aI(e.parts,i,o)&&!oI(a.parts,o)?a.parts:Ks(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 dI(e,t){let n=dN(),r=t??n.directory;return rd(e,r,lF(r))}function fI(e,t){let n=dN(),r=t??n.directory;return fd(e,r,lF(r))}function pI(e,t){let n=dN(),r=t??n.directory;return ud(e,r,lF(r))}function mI(e,t){let n=(0,V.c)(8),r=dN(),i=t??r.directory,a=lF(i),o=(0,G.useRef)(YM),s;n[0]!==e||n[1]!==a||n[2]!==i?(s=()=>{if(!e)return o.current=YM,YM.history;let t=(H()??U(i,a)).getTranscript(W(i,e)),n=a.getState().session.find(t=>t.id===e)?.revert?.messageID,r=$M({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 hI;let n=(H()??U(i,a)).subscribe(W(i,e),()=>{t()}),r=hu(()=>{n(),n=(H()??U(i,a)).subscribe(W(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 G.useSyncExternalStore(u,c,c)}function hI(){}function gI(e,t,n){let r=(0,V.c)(16),i=dN(),a=t??i.directory,o=lF(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:xI,visibleMessages:xI,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,G.useRef)(d),p;r[6]!==n?.suspendPartUpdates||r[7]!==n?.suspendPartUpdatesForMessageId||r[8]!==e||r[9]!==o||r[10]!==a?(p=()=>{if(!e)return KF;let t=(H()??U(a,o)).getTranscript(W(a,e)),r=!!n?.suspendPartUpdates,i=n?.suspendPartUpdatesForMessageId??void 0,s=Gu(t,f.current.sessionID===e?f.current.sourceMessages:tI(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=cI(o,l,r,i);if(u)return f.current=u,u.list;let d=uI(l,f.current.sessionID===e?f.current:tI(o,e,r,i),r,i);return f.current=d,nI(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 _I;Hu(a,e);let n=(H()??U(a,o)).subscribe(W(a,e),()=>{t()}),r=hu(()=>{n(),n=(H()??U(a,o)).subscribe(W(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 G.useSyncExternalStore(g,m,m)}function _I(){}var vI=new Set;function yI(e,t){let n=WF(),r=t??n,i=lF(r),a=G.useRef(0);G.useEffect(()=>{if(!e)return;let t=H()??U(r,i),n=W(r,e),o=t.getTranscript(n),s=t.hasSession?.(n);if(Ku(o,{resolved:s===!0||void 0}).renderable){hx({directory:r,sessionID:e,store:i});return}if(!i.getState().session.some(t=>t.id===e))return;let c=`${r}:${e}`;if(vI.has(c))return;let l=++a.current,u=()=>l!==a.current;vI.add(c),(async()=>{try{if(H())try{if(await Cu(r,e),u())return;hx({directory:r,sessionID:e,store:i,isStale:u})}catch{if(u())return;await qN(r,e,i,{reason:`ensure-session-messages`,isStale:u})}else await qN(r,e,i,{reason:`ensure-session-messages`,isStale:u})}catch{}finally{vI.delete(c)}})()},[e,i,r])}function bI(e,t){let n=dN(),r=t??n.directory;return qu(e,r,lF(r))}var xI=[],SI=[],CI=[],wI=[],TI=[],EI=()=>({requestID:fe(),queueItemID:fe(),operationID:fe(),messageID:ge(`msg`)}),DI=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}:{}}),OI,kI=(e,t)=>{let n=e.establishing;if(!n||t&&n.draftID!==t||n.pending.length===0)return TI;if(OI&&OI.pending===n.pending&&OI.draftID===t)return OI.items;let r=n.pending.map(DI);return OI={pending:n.pending,draftID:t,items:r},r},AI=e=>t=>t.flights[e]??null,jI=e=>t=>!!e&&t.establishing?.draftID===e,MI=e=>t=>kI(t,e),NI=(e,t)=>({flightKind:e,inFlight:e!==null,establishing:t}),PI=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??EI(),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})),FI=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}},II=`/api/openchamber/message-queue`,LI=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`]),RI=new Set([`revision`,`scopeID`,`queueItemID`,`rowVersion`,`removedQueueItemID`,`projectDirectory`,`token`,`state`,`scopeCount`,`statusCounts`]),zI=new Set([`scopeID`,`revision`,`directory`,`sessionID`,`worktreeState`,`itemCount`]),BI=e=>typeof e==`object`&&!!e&&!Array.isArray(e),Z=e=>typeof e==`number`&&Number.isSafeInteger(e)&&e>=0,VI=e=>Array.isArray(e)&&e.every(e=>typeof e==`string`),HI=async e=>{if(e.status===501)return`unavailable`;try{let t=await e.json();if(BI(t)&&typeof t.code==`string`&&LI.has(t.code))return t.code}catch{}return`unavailable`},UI=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 HI(n));try{return await n.json()}catch{throw new X(n.status,`unavailable`)}},WI=()=>{throw new X(200,`unavailable`)},GI=e=>BI(e)&&Object.getPrototypeOf(e)===Object.prototype,KI=e=>{if(!(!GI(e)||typeof e.text!=`string`||!Array.isArray(e.references)||e.references.some(e=>!GI(e))))return{text:e.text,references:e.references.map(e=>({...e}))}},qI=e=>Array.isArray(e)&&e.every(GI)?e.map(e=>({...e})):void 0,JI=e=>{if(!(!BI(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}}},YI=e=>BI(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,XI=e=>{if(!Array.isArray(e)||e.length===0||e.length>129)return null;let t=[],n=0;for(let r of e){if(!GI(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},ZI=e=>{if(!Array.isArray(e)||e.length>64)return null;let t=new Set,n=[];for(let r of e){if(!GI(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},QI=e=>{if(!GI(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))||!GI(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},$I=e=>Array.isArray(e)&&e.map(QI).every(e=>e!==null)?e.map(QI):null,eL=e=>{if(!BI(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:KI(e.composerDocument),n=e.composerMentions===void 0?void 0:qI(e.composerMentions),r=e.sendConfig===void 0?void 0:JI(e.sendConfig),i=e.deliveryTarget===void 0?{kind:`primary`}:YI(e.deliveryTarget),a=e.deliveryParts===void 0?void 0:XI(e.deliveryParts),o=e.syntheticParts===void 0?void 0:ZI(e.syntheticParts),s=e.attachmentIssues===void 0?void 0:qI(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:$I(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}:{}}},tL=e=>{if(!BI(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(eL);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},nL=e=>BI(e)&&Object.keys(e).every(e=>zI.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,rL=e=>BI(e)&&typeof e.projectDirectory==`string`&&VI(e.orderedPaths)&&Z(e.revision)?{projectDirectory:e.projectDirectory,orderedPaths:e.orderedPaths,revision:e.revision}:null,iL=e=>{if(!BI(e)||!Z(e.revision)||!Array.isArray(e.scopes)||!Array.isArray(e.worktreeOrders))return WI();let t=e.scopes.map(nL),n=e.worktreeOrders.map(rL);return!t.every(e=>e!==null)||!n.every(e=>e!==null)?WI():{revision:e.revision,scopes:t,worktreeOrders:n}},aL=e=>!BI(e)||!Z(e.revision)||Object.keys(e).some(e=>!RI.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&&(!BI(e.statusCounts)||Object.values(e.statusCounts).some(e=>!Z(e)))?WI():{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}:{},...BI(e.statusCounts)?{statusCounts:e.statusCounts}:{}},oL=(e,t,n)=>({method:e,headers:{"Content-Type":`application/json`},body:JSON.stringify(t),signal:n}),sL=(e,t)=>{let{signal:n,...r}=t;return oL(e,r,n)},cL=async e=>iL(await UI(II,{signal:e})),lL=new Map,uL=(e,t)=>`${o().api(II)}\u0000${e}\u0000${t.offset??``}\u0000${t.limit??``}\u0000${t.expectedRevision??``}`,dL=async(e,t={})=>{if(t.signal?.aborted)throw new X(0,`unavailable`);let n=uL(e,t),r=lL.get(n);if(r){let e=await r;if(t.signal?.aborted)throw new X(0,`unavailable`);return e}let i=(async()=>tL(await UI(`${II}/scopes/${encodeURIComponent(e)}`,{query:{offset:t.offset,limit:t.limit,expectedRevision:t.expectedRevision},signal:t.signal}))??WI())().finally(()=>{lL.get(n)===i&&lL.delete(n)});return lL.set(n,i),i},fL=15e3,pL=(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:fL,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})}),mL=async e=>{let t=await UI(`${II}/status`,{signal:e}),n=new Set([`capability`,`authority`,`generation`,`activationEpoch`,`activatedAt`,`manifestHash`,`protocol`,`worker`]);return!BI(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&&(!BI(t.worker)||Object.keys(t.worker).some(e=>e!==`paused`&&e!==`active`)||typeof t.worker.paused!=`boolean`||!Z(t.worker.active))?WI():{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}:{},...BI(t.worker)?{worker:{paused:t.worker.paused,active:t.worker.active}}:{}}},hL=(e,t)=>Object.keys(e).length===t.length&&Object.keys(e).every(e=>t.includes(e)),gL=e=>{let t=[`revision`,`importID`,`state`,`duplicate`,`manifestHash`,`commit`];if(!BI(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 WI();let n=e.commit===void 0?void 0:yL(e.commit);return e.commit!==void 0&&!n?WI():{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}:{}}},_L=e=>!BI(e)||!hL(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`?WI():{revision:e.revision,importID:e.importID,staged:!0,...typeof e.duplicate==`boolean`?{duplicate:e.duplicate}:{}},vL=e=>!BI(e)||!hL(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)?WI():{revision:e.revision,importID:e.importID,manifestHash:e.manifestHash,state:`sealed`,itemCount:e.itemCount},yL=e=>!BI(e)||!hL(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)?WI():{revision:e.revision,importID:e.importID,manifestHash:e.manifestHash,generation:e.generation,activationEpoch:e.activationEpoch,added:e.added},bL=e=>yL(e),xL=e=>yL(e),SL=(e,t)=>!BI(e)||!hL(e,[`authority`,`generation`,`revision`])||e.authority!==t||!Z(e.generation)||!Z(e.revision)?WI():{authority:t,generation:e.generation,revision:e.revision},CL=async e=>gL(await UI(`${II}/imports`,sL(`POST`,e))),wL=async(e,t)=>{let n=await UI(`${II}/imports/${encodeURIComponent(e)}`,{signal:t});if(!BI(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 WI();let r=n.staged.map(e=>BI(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:yL(n.commit);return!r.every(e=>e!==null)||n.commit!==void 0&&!i?WI():{state:n.state,...typeof n.manifestHash==`string`?{manifestHash:n.manifestHash}:{},itemCount:n.itemCount,staged:r,...i?{commit:i}:{}}},TL=async(e,t)=>_L(await UI(`${II}/imports/${encodeURIComponent(e)}/items`,sL(`POST`,t))),EL=async(e,t)=>vL(await UI(`${II}/imports/${encodeURIComponent(e)}/seal`,sL(`POST`,t))),DL=async(e,t)=>bL(await UI(`${II}/imports/${encodeURIComponent(e)}/activate`,sL(`POST`,t))),OL=async(e,t)=>xL(await UI(`${II}/imports/${encodeURIComponent(e)}/late-commit`,sL(`POST`,t))),kL=async e=>SL(await UI(`${II}/authority/pause`,sL(`POST`,e)),`paused`),AL=async e=>SL(await UI(`${II}/authority/resume`,sL(`POST`,e)),`active`),jL=async(e={})=>{let t=await UI(`${II}/attachments/uploads`,sL(`POST`,e));return!BI(t)||typeof t.uploadID!=`string`||typeof t.uploadToken!=`string`||!Z(t.expiresAt)?WI():{uploadID:t.uploadID,uploadToken:t.uploadToken,expiresAt:t.expiresAt}},ML=async(e,t,n,r)=>{let i;try{i=await F(`${II}/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 HI(i))},NL=e=>!BI(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)?WI():{revision:e.revision,scopeID:e.scopeID,queueItemID:e.queueItemID,rowVersion:e.rowVersion,token:e.token,expiresAt:e.expiresAt,generation:e.generation},PL=e=>!BI(e)||typeof e.queueItemID!=`string`||typeof e.token!=`string`||!Z(e.generation)||!Z(e.expiresAt)?WI():{queueItemID:e.queueItemID,token:e.token,generation:e.generation,expiresAt:e.expiresAt},FL=async(e,t)=>NL(await UI(`${II}/items/${encodeURIComponent(e)}/reserve`,sL(`POST`,t))),IL=async(e,t)=>{await UI(`${II}/items/${encodeURIComponent(e)}/release`,sL(`POST`,t))},LL=async(e,t)=>PL(await UI(`${II}/items/${encodeURIComponent(e)}/edit-reservations/${encodeURIComponent(t.token)}/renew`,sL(`POST`,t))),RL=async(e,t)=>aL(await UI(`${II}/items/${encodeURIComponent(e)}/reserved-remove`,sL(`DELETE`,t))),zL=async(e,t,n)=>{let r;try{r=await F(`${II}/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 HI(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})},BL=async e=>aL(await UI(`${II}/items`,sL(`POST`,e))),VL=async(e,t)=>aL(await UI(`${II}/items/${encodeURIComponent(e)}`,sL(`PATCH`,t))),HL=async(e,t)=>aL(await UI(`${II}/items/${encodeURIComponent(e)}/send`,sL(`POST`,t))),UL=async(e,t)=>aL(await UI(`${II}/items/${encodeURIComponent(e)}`,sL(`DELETE`,t))),WL=async(e,t)=>aL(await UI(`${II}/scopes/${encodeURIComponent(e)}/order`,sL(`PUT`,t))),GL=async(e,t)=>rL(await UI(`${II}/worktrees/order`,{query:{projectDirectory:e},signal:t}))??WI(),KL=async e=>aL(await UI(`${II}/worktrees/order`,sL(`PUT`,e))),qL=(e=i())=>N.messageQueue.snapshot(e),JL=(e=i())=>N.messageQueue.status(e),YL=(e,t,n=i())=>N.messageQueue.scope(e,t,n),XL=(e=i())=>({queryKey:JL(e),queryFn:({signal:e})=>mL(e),retry:!1,staleTime:3e4}),ZL=(e=i())=>({queryKey:qL(e),queryFn:({signal:e})=>cL(e),staleTime:5e3}),QL=(e=L,t=i())=>e.fetchQuery(XL(t)),$L=(e=L,t=i())=>e.fetchQuery(ZL(t)),eR=async(e=L,t=i())=>e.fetchQuery({...XL(t),staleTime:0}),tR=async(e=L,t=i())=>e.fetchQuery({...ZL(t),staleTime:0}),nR=(e,t,n=i())=>{e.setQueryData(YL(t.scopeID,t.revision,n),{pages:[t],pageParams:[0]})},rR=(e,t,n=i())=>{e.setQueryData(JL(n),t)},iR=(e,t,n=i())=>{e.setQueryData(qL(n),t)},aR=(e,t,n,r=i())=>{let a=e.getQueryData(YL(t,n,r));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},oR=(e,t=i())=>e.removeQueries({queryKey:[t,`messageQueue`,`scope`],exact:!1}),sR=(e,t,n=i())=>e.removeQueries({queryKey:[n,`messageQueue`,`scope`,t],exact:!1}),cR=(e,t,n=i())=>e.invalidateQueries({queryKey:[n,`messageQueue`,`scope`,t],exact:!1}),lR=`openchamber_message_queue_ledger_v4`,uR=`message-queue-store`,dR={scopes:128,totalItems:2048,attachmentsPerItem:64,issuesPerItem:64,string:8192,content:2e5,dataURL:26214400,bytes:26214400},fR=e=>typeof e==`object`&&!!e&&Object.getPrototypeOf(e)===Object.prototype,pR=(e,t)=>Object.keys(e).every(e=>t.includes(e)),mR=(e,t=dR.string)=>typeof e==`string`&&e.length>0&&e.length<=t,hR=e=>typeof e==`number`&&Number.isSafeInteger(e)&&e>=0,gR=e=>JSON.parse(JSON.stringify(e)),_R=(e,t,n,r)=>{let i=fR(t)?t:{};return{...e?{scopeKey:e}:{},...mR(i.queueItemID)?{queueItemID:i.queueItemID}:{},...mR(i.operationID)?{operationID:i.operationID}:{},path:n,reason:r}},vR=e=>e.state===`bound`?`bound:${JSON.stringify([e.transportIdentity,e.directory,e.sessionID])}`:`unbound-legacy:${JSON.stringify([e.sessionID])}`,yR=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=xR(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&&vR(n)===e?n:void 0},bR=()=>({version:4,queues:{},migration:{v3State:`pending`}}),xR=e=>!fR(e)||!mR(e.state)?void 0:e.state===`bound`&&pR(e,[`state`,`transportIdentity`,`directory`,`sessionID`])&&mR(e.transportIdentity)&&mR(e.directory)&&mR(e.sessionID)?{state:`bound`,transportIdentity:e.transportIdentity,directory:e.directory,sessionID:e.sessionID}:e.state===`unbound-legacy`&&pR(e,[`state`,`sessionID`])&&mR(e.sessionID)?{state:`unbound-legacy`,sessionID:e.sessionID}:void 0,SR=(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}},CR=[`attachmentID`,`occurrenceRefID`,`filename`,`mimeType`,`size`,`source`,`serverPath`,`vscodePath`,`vscodeSource`],wR=e=>{if(!mR(e.attachmentID)||!mR(e.occurrenceRefID)||!SR(e.occurrenceRefID,e.attachmentID)||!mR(e.filename)||typeof e.mimeType!=`string`||e.mimeType.length>dR.string||!hR(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`&&mR(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&&mR(e.vscodePath)&&(e.vscodeSource===`file`||e.vscodeSource===`selection`))return{...t,source:`vscode`,vscodePath:e.vscodePath,vscodeSource:e.vscodeSource}},TR=e=>{if(!fR(e)||!pR(e,[...CR,`version`,`locator`])||e.version!==1)return;let t=wR(e);if(!t||!fR(e.locator))return;let n=e.locator.kind===`blob`&&pR(e.locator,[`kind`,`blobID`])&&mR(e.locator.blobID)?{kind:`blob`,blobID:e.locator.blobID}:e.locator.kind===`url`&&pR(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},ER=e=>{if(!fR(e)||!pR(e,[...CR,`reason`]))return;let t=wR(e);return t&&[`legacy-blob-url`,`legacy-bytes-missing`,`legacy-unbound-data`,`missing-blob`].includes(e.reason)?{...t,reason:e.reason}:void 0},DR=(e,t)=>{if(!fR(e)||!pR(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},OR=(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},kR=(e,t)=>{if(!fR(e)||!pR(e,[`version`,`queueItemID`,`operationID`,`messageID`,`owner`,`content`,`composerDocument`,`composerMentions`,`attachments`,`attachmentIssues`,`createdAt`,`sendConfig`,`status`,`attemptCount`,`nextAttemptAt`,`reconciliationStartedAt`,`reconciliationDeadlineAt`,`reconciliationChecks`,`reconciliationNextCheckAt`,`failureKind`])||e.version!==1||!mR(e.queueItemID)||!mR(e.operationID)||!mR(e.messageID)||typeof e.content!=`string`||e.content.length>dR.content||!hR(e.createdAt)||!hR(e.attemptCount)||!Array.isArray(e.attachments)||e.attachments.length>dR.attachmentsPerItem||!Array.isArray(e.attachmentIssues)||e.attachmentIssues.length>dR.issuesPerItem||![`queued`,`sending`,`retrying`,`reconciling`,`unresolved`,`failed`].includes(e.status))return;let n=xR(e.owner),r=e.attachments.map(TR),i=e.attachmentIssues.map(ER),a=e.composerDocument===void 0?void 0:DR(e.composerDocument,e.content),o=OR(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&&(!fR(e.sendConfig)||!pR(e.sendConfig,[`providerID`,`modelID`,`agent`,`variant`])||!mR(e.sendConfig.providerID)||!mR(e.sendConfig.modelID)||[e.sendConfig.agent,e.sendConfig.variant].some(e=>e!==void 0&&!mR(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&&!hR(e))||!m)return;let h=e.status===`sending`&&t,g=h?e.createdAt+3e4:e.reconciliationDeadlineAt;if(h&&!hR(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:gR(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}:{}}},AR=(e,t={})=>{let n=e=>({status:`corrupt`,snapshot:bR(),issues:[_R(void 0,void 0,`$`,e)],degradedScopeKeys:[]});if(!fR(e)||!pR(e,[`version`,`queues`,`migration`])||e.version!==4||!fR(e.queues)||!fR(e.migration)||!pR(e.migration,[`v3State`])||![`pending`,`complete`,`degraded`].includes(e.migration.v3State)||Object.keys(e.queues).length>dR.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(_R(e,t,n,r)),o.add(e)};for(let[a,d]of Object.entries(e.queues)){if(!yR(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>dR.totalItems)return n(`item-limit`);let f=d[i],p=`$.queues.${JSON.stringify(a)}[${i}]`,m=kR(f,t.normalizeSending===!0);if(!m||vR(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:gR({version:4,queues:i,migration:{v3State:e.migration.v3State}}),issues:a,degradedScopeKeys:[...o]}},jR=e=>{let t=AR(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`}}}},MR=()=>({ok:!1,error:{code:`unavailable`}}),NR=e=>({ok:!1,error:{code:e instanceof DOMException&&e.name===`QuotaExceededError`?`quota`:`unavailable`}}),PR=e=>({read:async t=>{if(!e)return MR();try{return{ok:!0,value:e.getItem(t)}}catch(e){return NR(e)}},write:async(t,n)=>{if(!e)return MR();try{return e.setItem(t,n),{ok:!0,value:void 0}}catch(e){return NR(e)}},remove:async t=>{if(!e)return MR();try{return e.removeItem(t),{ok:!0,value:void 0}}catch(e){return NR(e)}}}),FR=()=>{try{return PR(typeof window>`u`?null:window.localStorage)}catch{return PR(null)}},IR=async e=>{let t=await e.read(lR);if(!t.ok)return t;if(t.value===null)return{ok:!0,value:{raw:null,snapshot:null,status:`empty`,issues:[],degradedScopeKeys:[]}};try{let e=AR(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:[_R(void 0,void 0,`$`,`json`)],degradedScopeKeys:[]}}}},LR=async e=>{let t=await IR(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},RR=async(e,t)=>{let n=jR(t);return n.ok?e.write(lR,n.value):n},zR=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,RR(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:()=>IR(e),read:()=>LR(e),persist:e=>{if(!t)return Promise.resolve({ok:!1,error:{code:`cancelled`}});let r=AR(e);if(r.status===`corrupt`||r.issues.length)return Promise.resolve({ok:!1,error:{code:`corrupt`}});let i=gR(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}},BR=dR.string,VR=dR.dataURL,HR=dR.bytes,UR=e=>typeof e==`object`&&!!e&&Object.getPrototypeOf(e)===Object.prototype,WR=(e,t,n=!1)=>typeof e==`string`&&e.length<=BR&&(n||e.length>0)?e:t,GR=(e,t=0)=>typeof e==`number`&&Number.isSafeInteger(e)&&e>=0?e:t,KR=(e,t)=>vR(e)===vR(t),qR=(e,t,n,r)=>({scopeKey:e,queueItemID:t,path:n,reason:r}),JR=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(``)}`},YR=e=>typeof e==`string`&&e.length>0&&e.length<=BR,XR=e=>yR(e)??(YR(e)?{state:`unbound-legacy`,sessionID:e}:void 0),ZR=e=>{if(UR(e)){if(e.state===`bound`&&YR(e.transportIdentity)&&YR(e.directory)&&YR(e.sessionID))return{state:`bound`,transportIdentity:e.transportIdentity,directory:e.directory,sessionID:e.sessionID};if(e.state===`unbound-legacy`&&YR(e.sessionID))return{state:`unbound-legacy`,sessionID:e.sessionID}}},QR=e=>{if(e.length>VR)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>HR)return;e=Uint8Array.from(t,e=>e.charCodeAt(0))}else if(e=new TextEncoder().encode(decodeURIComponent(a)),e.byteLength>HR)return;let t=new ArrayBuffer(e.byteLength);return new Uint8Array(t).set(e),new Blob([t],{type:i})}catch{return}},$R=e=>UR(e)&&YR(e.providerID)&&YR(e.modelID)&&(e.agent===void 0||YR(e.agent))&&(e.variant===void 0||YR(e.variant))?{providerID:e.providerID,modelID:e.modelID,...e.agent===void 0?{}:{agent:e.agent},...e.variant===void 0?{}:{variant:e.variant}}:void 0,ez=async(e,t)=>{let n=await IR(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:[qR(``,``,`$.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=>qR(e.scopeKey??``,e.queueItemID??``,e.path,e.reason)),cleanupErrors:[]};let r=await e.read(uR);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={...bR(),migration:{v3State:`complete`}},n=await RR(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:[qR(``,``,`$`,`legacy-json`)],cleanupErrors:a}}let l=UR(c)&&UR(c.state)?c.state.queuedMessages:UR(c)?c.queuedMessages:void 0;if(!UR(l))return{status:`failed`,error:{code:`corrupt`},issues:[qR(``,``,`$.state.queuedMessages`,`legacy-state`)],cleanupErrors:a};let u={...bR(),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>=dR.scopes){i.push(qR(n,``,`$.state.queuedMessages.${JSON.stringify(n)}`,`legacy-scope-limit`));break}let c=XR(n),l=c?vR(c):n;if(!c||!Array.isArray(r)){i.push(qR(l,``,`$.state.queuedMessages.${JSON.stringify(n)}`,`legacy-queue`));continue}for(let e=0;e<r.length;e++){if(m>=dR.totalItems){i.push(qR(l,``,`$.state.queuedMessages.${JSON.stringify(n)}[${e}]`,`legacy-item-limit`));break}m++;let h=`$.state.queuedMessages.${JSON.stringify(n)}[${e}]`,g=UR(r[e])?r[e]:void 0;if(!g||typeof g.content!=`string`||g.content.length>131072){i.push(qR(l,``,h,`legacy-item`));continue}let _=ZR(g.owner);if(g.owner!==void 0&&(!_||!KR(c,_))){i.push(qR(l,YR(g.queueItemID)?g.queueItemID:``,h,`owner-conflict`));continue}let v=JSON.stringify([n,e,g.content]),y=YR(g.queueItemID)?g.queueItemID:YR(g.id)?g.id:await JR(`queue`,v),b=YR(g.operationID)?g.operationID:await JR(`operation`,`${v}:operation`),x=YR(g.messageID)?g.messageID:await JR(`message`,`${v}:message`);if(d.has(y)||f.has(b)||p.has(x)){i.push(qR(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(qR(l,y,`${h}.attachments`,`legacy-attachments`));for(let e=0;e<T.length&&e<dR.attachmentsPerItem;e++){let n=UR(T[e])?T[e]:void 0,r=`${h}.attachments[${e}]`;if(!n){i.push(qR(l,y,r,`legacy-attachment`));continue}let u=YR(n.id)?n.id:await JR(`attachment`,`${v}:attachment:${e}`),d=ue(u),f=WR(n.filename,u),p=WR(n.mimeType,``,!0),m=GR(n.size);if(w.has(d)){i.push(qR(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`?YR(n.serverPath)&&n.vscodePath===void 0&&n.vscodeSource===void 0:n.source===`vscode`&&YR(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(qR(l,y,r,e))};if(c.state===`unbound-legacy`){O(`legacy-unbound-data`);continue}if(!g){i.push(qR(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=QR(k);if(!A){O(`legacy-bytes-missing`);continue}let j=await JR(`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:qR(l,y,r,`blob-retain`)}),S.push({version:1,...D,mimeType:A.type,size:A.size,locator:{kind:`blob`,blobID:j}})}T.length>dR.attachmentsPerItem&&i.push(qR(l,y,`${h}.attachments`,`legacy-attachment-limit`));let E=GR(g.createdAt),D=typeof g.status==`string`?g.status:`queued`,O=UR(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=GR(g.reconciliationStartedAt,E),ne=GR(g.reconciliationDeadlineAt,-1),re=M>2**53-1-3e4?M:M+3e4,oe=Math.max(M,ne>=0?ne:re),se=GR(g.reconciliationChecks),ce=GR(g.reconciliationNextCheckAt,M);j&&ne<0&&M>2**53-1-3e4&&i.push(qR(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=UR(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(qR(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(qR(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,...$R(g.sendConfig)?{sendConfig:$R(g.sendConfig)}:{},status:le,attemptCount:GR(g.attemptCount),...le===`retrying`?{nextAttemptAt:GR(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 RR(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})},tz=(e,t)=>JSON.stringify(e)===JSON.stringify(t),nz=(e,t=[])=>({status:e,errors:t,cleanupErrors:[]}),rz=e=>e.status===`sending`||e.status===`reconciling`,iz=(e,t,n={})=>{let r={hydration:`idle`,snapshot:bR(),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]=tz(r.snapshot.queues[n],i)?r.snapshot.queues[n]:i;let n=tz(r.snapshot.queues,t)&&tz(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&&vR(t.owner)===e.scopeKey?t:void 0},d=()=>r.hydration===`idle`||r.hydration===`hydrating`?nz(`unseeded`):r.hydration===`recovery-required`?nz(`recovery-required`,[...r.issues]):r.hydration===`failed`?nz(`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=()=>nz(`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)):nz(`stale`))),materializeForEdit:(t,n=p())=>l(async()=>{let r=d(),i=u(t);if(r)return r;if(!i||!m(i,n))return nz(`stale`);if(rz(i))return nz(`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`?nz(`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 nz(`stale`);try{let a=await e.releaseSend(t,n,r);return a.status!==`stale`&&h.delete(i),a}catch{return h.delete(i),nz(`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{...nz(`stale`),durableRemoval:!1};if(rz(f))return{...nz(`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{...nz(`stale`),durableRemoval:!1};if(_(t))return{...v(),durableRemoval:!1};if(rz(a))return{...nz(`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=>rz(e)||!m(e,i))?nz(`failed`,[{phase:`identity`,code:`locked`}]):f(()=>e.reorder(t,n,i)):nz(`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)?nz(`stale`):_(t)?v():rz(a)?nz(`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||rz(e)||!m(e,r))||n.transportIdentity!==r.transportIdentity?nz(`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)?nz(`stale`):_(t)?nz(`failed`,[{phase:`identity`,code:`reserved`}]):(Array.isArray(n)?n:[n]).includes(o.status)?f(()=>e.transition(t,r,i)):nz(`stale`))}),confirm:(t,n=p())=>l(async()=>{let r=d(),i=u(t);return r||(!i||!m(i,n)?nz(`stale`):_(t)?nz(`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)?nz(`stale`):_(t)?nz(`failed`,[{phase:`identity`,code:`reserved`}]):e.acquireSendPayload(t,n))}),releaseSend:(t,n,r=p())=>l(async()=>e.releaseSend(t,n,r))}},az=e=>JSON.parse(JSON.stringify(e)),Q=(e,t=[],n=[],r)=>({status:e,...r===void 0?{}:{current:r},errors:t,cleanupErrors:n}),oz=(e,t)=>e.queueItemID===t.queueItemID&&e.operationID===t.operationID&&e.messageID===t.messageID,sz=(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,cz=e=>JSON.stringify(e),lz=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}),uz=e=>`${e.queueItemID}\u0000${e.operationID}\u0000${e.messageID}`,dz=e=>typeof e==`number`&&Number.isSafeInteger(e),fz=(e,t)=>{if(cz(lz(e))!==cz(lz(t))||!dz(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&&!dz(e))||e.status===`reconciling`&&t.status===`reconciling`&&(t.reconciliationStartedAt!==e.reconciliationStartedAt||t.reconciliationDeadlineAt!==e.reconciliationDeadlineAt||(t.reconciliationChecks??0)<(e.reconciliationChecks??0)))},pz=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))},mz=(e,t,n={})=>{let r=bR(),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=>oz(t,e)),_=(e,t,n,r,i)=>({phase:e,code:t,...n?{scopeKey:vR(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=sz(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?AR(u,{normalizeSending:!0}):{status:`ok`,snapshot:bR(),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:()=>az(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=vR(t.owner),l=az(r);l.queues[s]=[...l.queues[s]??[],t];let d=AR(l);if(!pz(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(az(o)),u=az(r),d=vR(o.owner);u.queues[d]=u.queues[d].map(t=>oz(t,e)?l:t);let f=AR(u);if(!oz(l,e)||!fz(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=az(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=vR(o.owner),l=r.queues[s];if(!l||l.length!==1||!oz(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={...az(o),owner:t},f=AR({version:4,queues:{[vR(t)]:[d]},migration:r.migration});if(f.status===`corrupt`||f.issues.length)return Q(`failed`,[_(`identity`,`invalid-bind`,o)]);let p=az(r),m=s,h=vR(t);p.queues[m]=p.queues[m].filter(t=>!oz(t,e)),p.queues[m].length||delete p.queues[m],p.queues[h]=[d,...p.queues[h]??[]];let v=AR(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[vR(s)];if(!l||l.length!==e.length||o.some(e=>cz(e.owner)!==cz(s)||e.attachments.length)||l.some((t,n)=>!oz(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=>({...az(e),owner:t})),p=az(r),m=vR(s),h=vR(t);p.queues[m]=p.queues[m].filter(e=>!d.some(t=>oz(e,t))),p.queues[m].length||delete p.queues[m],p.queues[h]=[...f,...p.queues[h]??[]];let v=AR(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(uz(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(uz(t),{token:m,identity:t,held:u}),{...Q(`committed`,[],[],!0),token:m,values:l}}),releaseSend:(e,t)=>m(async()=>{let n=f.get(uz(e));if(typeof t!=`string`||!n||n.token!==t)return Q(`stale`);f.delete(uz(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=az(r);for(let[t,n]of Object.entries(s.queues)){let r=n.filter(t=>!oz(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(uz(e));f.delete(uz(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}}},hz=()=>{let e=FR(),t=zR(e),n=Wn();return{controller:iz(mz(n,t),()=>{let e=i(),t=h();return{transportIdentity:e,generation:t,isCurrent:()=>i()===e&&h()===t}}),migrate:async()=>ez(e,n)}},gz=(e=hz)=>{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)}},_z,vz=()=>_z??=gz(),yz=26214400,bz=52428800,xz=async e=>[...new Uint8Array(await crypto.subtle.digest(`SHA-256`,await e.arrayBuffer()))].map(e=>e.toString(16).padStart(2,`0`)).join(``),Sz=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>yz)throw RangeError(`message-queue-attachment-too-large`);n+=e}if(n>bz)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 jL({signal:t});await ML(e,n.value,await xz(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}},Cz,wz=()=>{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 Cz??=fe()}},Tz={queue:void 0,capture:()=>({transportIdentity:``,generation:0}),current:()=>!0,admit:BL,create:CL,details:wL,stage:TL,seal:EL,upload:Sz,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:()=>{}},Ez=e=>({scopeKey:vR(e.owner),queueItemID:e.queueItemID,operationID:e.operationID,messageID:e.messageID}),Dz=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(``)}`,Oz=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}}),kz=e=>Array.isArray(e)?`[${e.map(kz).join(`,`)}]`:e&&typeof e==`object`?`{${Object.keys(e).sort().map(t=>`${JSON.stringify(t)}:${kz(e[t])}`).join(`,`)}}`:JSON.stringify(e),Az=async e=>[...new Uint8Array(await crypto.subtle.digest(`SHA-256`,new TextEncoder().encode(kz(e))))].map(e=>e.toString(16).padStart(2,`0`)).join(``),jz=e=>{let t={...Tz,...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(Ez(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:Oz(s)}};n||(p=`admit`,await t.admit({requestID:await Dz(s.operationID),..._,signal:o})),e.push({item:s,scopeOrdinal:h,itemOrdinal:g,payload:_,payloadHash:await Az(_)}),f++}finally{await t.queue.releaseSend(Ez(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 Az(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=wz(),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})}}}},Mz=e=>typeof e==`object`&&!!e&&e.kind===`pending-admission`,Nz=(e,t)=>e.then(e=>{if(t?.aborted)throw new DOMException(`Aborted`,`AbortError`);return e}),Pz={snapshot:e=>Nz(tR(L),e),status:e=>Nz(QL(L),e),scope:dL,waitInvalidation:pL,admit:BL,edit:VL,remove:UL,reserve:FL,renew:LL,release:IL,removeReserved:RL,reorder:WL,manualSend:HL,upload:Sz,client:L,capture:()=>({transportIdentity:i(),generation:h()}),current:e=>e.transportIdentity===i()&&e.generation===h(),legacyManualSend:async()=>{},shadowQueue:vz,admissionUploadTimeoutMs:12e4,admissionRequestTimeoutMs:2e4,admissionReconcileTimeoutMs:2e4},Fz=e=>e instanceof X&&(e.code===`revision_conflict`||e.code===`row_version_conflict`),Iz=e=>e instanceof X&&e.code===`unavailable`,Lz=8,Rz=(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))]},zz=e=>`${e.transportIdentity}\u0000${ne(e.directory)}\u0000${e.sessionID}`,Bz=(e,t)=>new Promise(n=>{let r=setTimeout(n,e);t.addEventListener(`abort`,()=>{clearTimeout(r),n()},{once:!0})}),Vz=(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)})},Hz=(e={})=>{let t={...Pz,...e},n={...t,snapshot:e.snapshot??(e=>Nz(tR(t.client,t.capture().transportIdentity),e)),status:e.status??(e=>Nz(QL(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?zz({transportIdentity:n,directory:a.directory,sessionID:a.sessionID}):r?zz({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;nR(n.client,e,t.transportIdentity);let a=zz({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)nR(n.client,e,i.transportIdentity);if(iR(n.client,e,i.transportIdentity),e.scopes.length===0)oR(n.client,i.transportIdentity);else for(let e of o.keys())a.has(e)||sR(n.client,e,i.transportIdentity);y(e.scopes,i);for(let e of t){let t=zz({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)||(rR(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 Bz(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)??aR(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?aR(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<Lz;t++){let s=r.scopes.get(e),c=s?aR(n.client,e,s.revision,a.transportIdentity):void 0,l;try{try{l=(await i(o,c)).revision}catch(e){if(!Iz(e)||!h(a))throw e;l=(await i(o,c)).revision}}catch(n){if(Fz(n)&&t+1<Lz){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 cR(n.client,e,a.transportIdentity);let i=r.scopes.get(e);return u({status:`committed`,scope:i?aR(n.client,e,i.revision,a.transportIdentity):t})}catch(r){if(Fz(r)&&!t)continue;return h(a)?(m({error:r}),cR(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=zz(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=aR(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(zz(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 jz({queue:n.shadowQueue(),capture:()=>e,current:h,existing:()=>[...r.scopes.values()].flatMap(t=>aR(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 kL({expectedGeneration:e,signal:i?.signal}),await T()},resume:async e=>{await AL({expectedGeneration:e,signal:i?.signal}),await T()},stageAdmission:({requestID:e,scope:t,item:n})=>{let r=zz({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=zz({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=zz({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 Vz(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 Vz(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 Vz(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?Vz(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<Lz;a++){let d=r.scopes.get(t),f=(d?aR(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(!Fz(e)||a+1>=Lz)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<Lz;a++){let d=r.scopes.get(t),f=(d?aR(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(!Fz(e)||a+1>=Lz)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:Rz(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`)}}},Uz,Wz=()=>Uz??=Hz(),Gz=new WeakMap,Kz=e=>{let t=e,r=Gz.get(t);if(r)return r.refs++,()=>{r.refs--,r.refs||(r.unsubscribe(),Gz.delete(t))};let i={refs:1,unsubscribe:n(t=>{a(t)&&e.restart()})};return Gz.set(t,i),()=>{i.refs--,i.refs||(i.unsubscribe(),Gz.delete(t))}},qz=(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:Jz(r),semantics:i}},Jz=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)})},Yz=`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
|
-
`,Xz=e=>{if(!e.startsWith(Yz))return[];try{let t=JSON.parse(e.slice(Yz.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[]}},Zz=e=>e.length===0?null:e.map(e=>`[skill:${e}]`).join(` `),Qz=(e,t=36e3)=>{if(e.length===0)return null;let n=Yz,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(`,`)}]`},$z=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}},eB=(e,t)=>{let{sessionIds:n,skillNames:r}=$z(e),i=n.flatMap(e=>{let n=Md(e,t);if(!n)return[];let r=kd(n).find(t=>t.id===e);if(!r)return[];let i=Nd(e,n).flatMap(e=>{let t=Pd(e.id,n).filter(e=>e.type===`text`&&!$p(e)).map(e=>`text`in e&&typeof e.text==`string`?e.text:``).filter(Boolean).join(`
|
|
469
|
-
`);
|
|
470
|
-
`)?null:s},qB=/(^|\s)\/\u2003?([a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?)/g,JB=e=>Je(e.trim()),YB=e=>{let t=e.trim();if(t.toLowerCase().startsWith(`file://`))return t;let n=JB(t).split(`/`).map(e=>/^[A-Za-z]:$/.test(e)?e:encodeURIComponent(e)).join(`/`);return/^[A-Za-z]:/.test(n)?`file:///${n}`:`file://${n}`},XB=e=>({chunks:[{provenance:`authored`,text:e,start:0,end:e.length}],semantics:[]}),ZB=({text:e,root:t,confirmedFilePaths:n,confirmedDirectoryPaths:r=[],agentNames:i})=>{let a=[],o=new Set,s=t?JB(t).replace(/\/+$/,``):``,c=e=>JB(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)?Le:`text/plain`;a.push({id:fe(),file:new File([],m,{type:h}),filename:m,mimeType:h,size:0,dataUrl:YB(p),source:`server`,serverPath:p})}return a},QB=(e,t)=>{let n=[],r=new Set;qB.lastIndex=0;let i;for(;(i=qB.exec(e))!==null;){let e=i[2]||``;t.has(e)&&!r.has(e)&&(r.add(e),n.push({type:`skill`,skillName:e}))}return n},$B=(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},eV=({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(kd(r).map(e=>[e.id,e.title||e.id])),u=[];for(let e of jd().values()){let t=typeof e.title==`string`?e.title.trim():``;t&&u.push({id:e.id,title:t})}return qz(e,e=>{let r=oB(e,t),d=[...new Set([...UB(e),...$B(e,u)])],f=[...QB(e,n),...d.map(e=>({type:`session`,sessionId:e}))],p=ZB({text:r.sanitizedText,root:i,confirmedFilePaths:a,confirmedDirectoryPaths:o,agentNames:c});return{text:WB(Ge(Ve(r.sanitizedText,s)),l),agent:r.mention?.name,attachments:p,semantics:f}})},tV=e=>e.map(e=>({text:e.text,...e.attachments?.length?{attachments:Jz(e.attachments)}:{},synthetic:!0})),nV=({text:e,attachments:t,semanticParts:n,syntheticParts:r=[]})=>[{type:`text`,text:e},...Jz(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},...Jz(e.attachments??[]).map(e=>({type:`file`,mime:e.mimeType,attachmentID:e.id}))])],rV=(e,t)=>{let n=t.map(e=>({...e,attachments:Jz(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}})},iV=e=>e?.trim()||void 0,aV=(e,t)=>e!==`assistant`||t===`server`,oV=(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)})},sV=({currentConfig:e,sessionID:t,selection:n})=>{let r=iV(e.currentAgentName),i=t?iV(n.getSessionAgentSelection(t))??r:r,a=t&&i?n.getAgentModelForSession(t,i):null,o=t?n.getSessionModelSelection(t):null,s=iV(a?.providerId)??iV(o?.providerId)??iV(e.currentProviderId),c=iV(a?.modelId)??iV(o?.modelId)??iV(e.currentModelId);if(!s||!c)return;let l=t&&i?iV(n.getAgentModelVariantForSession(t,i,s,c))??iV(e.currentVariant):iV(e.currentVariant);return{providerID:s,modelID:c,...i?{agent:i}:{},...l?{variant:l}:{}}},cV=e=>!!(iV(e?.providerID)&&iV(e?.modelID)),lV=(e,t)=>e.transportIdentity===t.transportIdentity&&e.generation===t.generation,uV=(e,t)=>lV(e,t),dV=e=>JSON.stringify([e.text,e.references]),fV=e=>JSON.stringify(e),pV=(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,mV=({draftKey:e,runtime:t,document:n,attachments:r,inlineDrafts:i})=>({draftKey:{transportIdentity:e.transportIdentity,owner:{...e.owner}},draftKeyID:R(e),runtime:{...t},documentFingerprint:dV(n),attachments:new Map(r.map(e=>[e.id,e])),inlineDrafts:new Map(i.map(e=>[e.id,fV(e)]))}),hV=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`||!uV(e.runtime,n())||!d||R(d)!==e.draftKeyID)return{status:`stale`,bodyConsumed:!1,attachmentIDsConsumed:[],inlineDraftIDsConsumed:[]};let f=dV(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||!pV(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||fV(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}},gV=(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)}}),_V=(e=fe,t=()=>ge(`msg`),n=Date.now())=>({requestID:e(),queueItemID:`queued-${e()}`,operationID:`operation-${e()}`,messageID:t(),createdAt:n}),vV=({stage:e,clearComposer:t,postClear:n})=>{let r=e();return t(),n?.(),r},yV=`blocked`,bV=new Set,xV=()=>yV,SV=e=>{if(yV!==e){yV=e;for(let e of bV)e()}},CV=e=>(bV.add(e),()=>bV.delete(e)),wV=()=>yV===`legacy-enabled`,TV=2e3,EV=6e4,DV=5e3,OV=3,kV=e=>Math.min(TV*2**Math.max(e-1,0),EV),AV=new Map,jV=new Map,MV=new Set,NV=new Set,PV=0,FV=()=>{PV+=1;for(let e of NV)e()},IV=(e,t)=>JSON.stringify([D(e),t.queueItemID,t.operationID]),LV=e=>`scope:${D(e)}`,RV=()=>new Set([...AV.keys(),...jV.keys()]),zV=e=>(NV.add(e),()=>NV.delete(e)),BV=e=>{let t=(0,V.c)(2),n;return t[0]===e?n=t[1]:(n=()=>e?jV.has(LV(e)):!1,t[0]=e,t[1]=n),G.useSyncExternalStore(zV,n,sH)},VV=()=>structuredClone(re.getState().queuedMessages),HV=async()=>{for(SV(`blocked`);AV.size||jV.size||MV.size;)await Promise.allSettled([...new Set([...AV.values(),...jV.values(),...MV])]);return y(),VV()},UV=e=>e===`idle`,WV=e=>{if(e===void 0)return`unknown`;let t=e[e.length-1];return!t||t.role===`assistant`?`settled`:`unsettled`},GV=(e,t,n,r,i=!1,a=`settled`)=>e?e.status===`sending`?i?{}:{recover:!0}:e.status===`queued`?UV(t)&&a!==`unsettled`?{dispatch:!0}:{}:e.status===`retrying`?e.nextAttemptAt&&e.nextAttemptAt>r?{nextWakeAt:e.nextAttemptAt}:UV(t)&&a!==`unsettled`?{dispatch:!0}:{}:e.status===`reconciling`?(e.reconciliationChecks??0)>=OV||(e.reconciliationDeadlineAt??1/0)<=r?{resolve:!0}:(e.reconciliationNextCheckAt??0)>r?{nextWakeAt:e.reconciliationNextCheckAt}:i?{}:{query:!0}:{}:{},KV=(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},qV=(e,t)=>{let n;for(let r of Nd(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},JV=(e,t)=>{let n;for(let r of e.values())r.expiresAt>t&&(!n||r.expiresAt<n)&&(n=r.expiresAt);return n},YV=({queuedMessages:e,activeTransportIdentity:t,getStatus:n,getTurnState:r=()=>`settled`,previous:i,inFlight:a,dispatchInFlight:o=RV(),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=IV(m,e),_=LV(m);d.add(h);let v=n(m),y=GV(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},XV=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=eV({plan:n?.ok?{chunks:n.chunks??[],semantics:n.semantics??[]}:XB(t.content),agents:Hf.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=eB(i.semantics,r);return{queuedMessageId:t.id,messageID:t.messageID,operationID:t.operationID,primaryText:i.text,primaryAttachments:Jz([...t.attachments??[],...i.attachments]),agentMentionName:i.agent,additionalParts:a,sendConfig:t.sendConfig}},ZV=(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}),QV=(e,t)=>t?{...t}:sV({currentConfig:Hf.getState(),sessionID:e,selection:Jo.getState()})??{providerID:``,modelID:``},$V=e=>{let t=$.getState().getDirectoryForSession(e);return t?{state:`bound`,transportIdentity:i(),directory:t,sessionID:e}:null},eH=(e,t)=>!!(e===`queued`||e===`retrying`||t&&(e===`failed`||e===`unresolved`)),tH=e=>e.status===`sending`||e.status===`reconciling`,nH=(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 rH(e,t={}){if(!wV())return Promise.resolve();let n=re.getState(),r=t.scope??$V(e),a=t.manual===!0||t.delivery===`steer`;if(!r||r.transportIdentity!==i())return Promise.resolve();let o=nH(n,e,t.queueItemID,r??void 0);if((a||!t.scope)&&!jV.has(LV(r))){let i=n.getQueueForScope({state:`unbound-legacy`,sessionID:e}),a=n.getQueueForScope(r),s=t.queueItemID?i.find(e=>e.queueItemID===t.queueItemID||e.id===t.queueItemID):i[0];(o||s)&&!i.some(tH)&&!a.some(tH)&&(n.bindLegacyQueue({state:`unbound-legacy`,sessionID:e},r),o=nH(n,e,t.queueItemID,r))}if(!o||o.scope.transportIdentity!==i())return Promise.resolve();let s=o.scope;if(s.deliveryTarget?.kind===`assistant`)return Promise.resolve();let c=o.item,l={queueItemID:c.queueItemID,operationID:c.operationID,messageID:c.messageID},u=IV(s,l),d=AV.get(u);if(d)return d;if(jV.has(LV(s))||!eH(c.status,a)||c.status===`retrying`&&!a&&(c.nextAttemptAt??0)>Date.now())return Promise.resolve();let f,p=new Promise(e=>{f=e});return AV.set(u,p),jV.set(LV(s),p),FV(),(async()=>{try{let r=qV(e,s.directory),o=CH(e),u=o?.queueItemID===c.queueItemID?o.messageID:be(`msg`,r),d=n.beginQueueItemDispatch(s,l,u,a);if(!d)return;c=d;let f={queueItemID:d.queueItemID,operationID:d.operationID,messageID:d.messageID};if(!y()){n.markQueueItemPreDispatchRetry(s,f,Date.now()+kV(d.attemptCount+1));return}let p=h(),m=XV([d]);if(!m)return;let g=QV(e,d.sendConfig);if(!g.providerID||!g.modelID){n.markQueueItemPreDispatchRetry(s,f,Date.now()+kV(d.attemptCount+1));return}if(!wV()){n.markQueueItemPreDispatchRetry(s,f,Date.now()+kV(d.attemptCount+1));return}let _=()=>{let e=re.getState().getQueueForScope(s)[0];return i()===s.transportIdentity&&h()===p&&e?.queueItemID===f.queueItemID&&e.operationID===f.operationID&&e.messageID===f.messageID&&D(e.owner)===D(s)},v=()=>{let e=re.getState().getQueueForScope(s)[0];return e?.queueItemID===f.queueItemID&&e.operationID===f.operationID&&e.messageID===f.messageID&&D(e.owner)===D(s)},b=t=>{_()&&t===f.messageID&&(re.getState().confirmQueueItem(s,f),LH(e))};try{await ZV(e,m,g,{directory:s.directory,delivery:t.delivery,onSendConfirmed:b}),b(f.messageID)}catch(e){if(!v())return;let t=uS(e);t===`pre-dispatch`?n.markQueueItemPreDispatchRetry(s,f,Date.now()+kV(d.attemptCount+1)):t===`definitive-rejection`?n.markQueueItemDefinitiveFailure(s,f):n.markQueueItemReconciling(s,f)}}finally{let e=!1;AV.get(u)===p&&(AV.delete(u),e=!0),jV.get(LV(s))===p&&(jV.delete(LV(s)),e=!0),e&&FV(),f?.()}})(),p}async function iH(e,t=h()){if(!wV())return;let n=Math.min(e.item.reconciliationDeadlineAt??1/0,Date.now()+DV),r=new AbortController,a=setTimeout(()=>r.abort(),Math.max(0,n-Date.now())),o=null;try{o=await hC(e.scope.sessionID,e.item.messageID,e.scope.directory,{signal:r.signal,timeoutMs:Math.max(0,n-Date.now())})}catch{o=null}finally{clearTimeout(a)}let s=re.getState().getQueueForScope(e.scope)[0];s?.queueItemID===e.item.queueItemID&&s.operationID===e.item.operationID&&s.messageID===e.item.messageID&&D(s.owner)===D(e.scope)&&i()===e.scope.transportIdentity&&h()===t&&(o?.some(t=>t.info.id===e.item.messageID)?(tW(e.scope.sessionID,e.item.messageID),re.getState().confirmQueueItem(e.scope,{queueItemID:s.queueItemID,operationID:s.operationID,messageID:s.messageID})):re.getState().recordQueueItemReconciliationCheck(e.scope,{queueItemID:e.item.queueItemID,operationID:e.item.operationID,messageID:e.item.messageID}))}var aH=(e,t)=>{Yx({sessionID:e.sessionID,messageID:t.messageID,directory:e.directory}),re.getState().resolveQueueItemReconciliation(e,{queueItemID:t.queueItemID,operationID:t.operationID,messageID:t.messageID})};function oH(e){let t=typeof e==`boolean`?e:e?.enabled??!0,r=G.useSyncExternalStore(CV,xV,xV),a=re(e=>e.queuedMessages),o=Up(e=>e.runsByOriginalSessionID),s=$(e=>e.queueAbortBlocks),l=G.useSyncExternalStore(n,i,i),u=G.useSyncExternalStore(n,c,c),d=G.useSyncExternalStore(zV,()=>PV,()=>PV),f=G.useMemo(()=>Object.values(a).flatMap(e=>{let t=e[0]?.owner;return t?.state===`bound`&&t.transportIdentity===l?[t]:[]}),[l,a]),p=dF(f),m=fF(),g=GF(),_=G.useMemo(()=>f.map(e=>`${e.directory}\n${e.sessionID}`).join(`\0`),[f]),v=G.useRef(f);v.current=f;let y=G.useSyncExternalStore(G.useMemo(()=>e=>_?td(v.current.map(e=>({directory:e.directory,sessionID:e.sessionID})),e,e=>g.getChild(e),{subscribeRebuild:e=>g.subscribeRegistry(e)}):()=>void 0,[g,_]),G.useMemo(()=>()=>_?nd(v.current.map(e=>({directory:e.directory,sessionID:e.sessionID})),e=>g.getChild(e)):``,[g,_]),()=>``),b=G.useCallback(e=>m(e),[m]),x=G.useCallback(e=>WV(md(e.directory,e.sessionID,g.getChild(e.directory))),[g]),[S,C]=G.useState(0),w=G.useRef(new Map),T=G.useRef(new Set);G.useEffect(()=>{if(!t||r!==`legacy-enabled`)return;let e=Date.now();$.getState().pruneQueueAbortBlocks(e);let n=new Set,i=new Set;for(let[t,n]of s)n.expiresAt>e&&i.add(t);for(let e of KV(o,u))n.add(e);let c=YV({queuedMessages:a,activeTransportIdentity:l,getStatus:b,getTurnState:x,previous:w.current,inFlight:T.current,blockedSessions:n,blockedScopeKeys:i,now:e});for(let e of c.recoverOperations)re.getState().markQueueItemReconciling(e.scope,{queueItemID:e.item.queueItemID,operationID:e.item.operationID,messageID:e.item.messageID});for(let e of c.dispatchScopes)re.getState().getQueueForScope(e)[0]&&rH(e.sessionID,{scope:e}).finally(()=>{C(e=>e+1)});for(let e of c.resolveOperations)aH(e.scope,e.item);for(let e of c.queryOperations){T.current.add(e.key);let t=iH(e,h()).finally(()=>{T.current.delete(e.key),MV.delete(t),C(e=>e+1)});MV.add(t)}let d=JV(s,e),f=c.nextWakeAt?d?Math.min(c.nextWakeAt,d):c.nextWakeAt:d,p;return f&&(p=setTimeout(()=>{$.getState().pruneQueueAbortBlocks(),C(e=>e+1)},Math.max(0,f-Date.now()))),()=>{p&&clearTimeout(p)}},[u,l,g,d,t,r,a,s,o,p,y,b,x,S])}function sH(){return!1}var cH={server:Wz(),queue:vz(),status:e=>QL(L).then(t=>{if(e?.aborted)throw new DOMException(`Aborted`,`AbortError`);return t}),activate:DL,lateCommit:OL,capture:()=>({transportIdentity:i(),generation:h()}),current:e=>e.transportIdentity===i()&&e.generation===h(),quiesce:async()=>{await HV()},flush:async()=>{y()},prepare:T,resolveDirectory:e=>$.getState().getDirectoryForSession(e)},lH=()=>({ownership:`probing`,migration:`idle`,frozen:!0,admission:`frozen`,importState:{status:`idle`,imported:0,total:0,issues:[],canActivate:!1}}),uH=(e={})=>{let t={...cH,...e},r=lH(),i=0,o,s,c,l=500,u,d=!1,f=new Set,p=e=>{r={...r,...e};let n=r.ownership===`legacy-unsupported`;SV(n?`legacy-enabled`:`blocked`),O(n?`open`:r.migration===`freezing`||r.ownership===`probing`||r.ownership===`blocked`?`quiescing`:`recovery-read-only`),(r.ownership===`server-active`||r.ownership===`server-paused`)&&te(t.capture().transportIdentity),f.forEach(e=>e())},m=()=>{clearTimeout(c),c=setTimeout(()=>{y()},l),l=Math.min(3e4,l*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();o?.abort(),o=new AbortController;try{if(await t.server.refresh(),!t.current(e)||o.signal.aborted)return r;let n=await t.status(o.signal);return!t.current(e)||o.signal.aborted?r:n.capability?n.protocol!==void 0&&n.protocol!==4?(h(Error(`protocol-unsupported`)),r):(p({ownership:`probing`,migration:`freezing`,frozen:!0,admission:`frozen`,status:n,error:void 0}),await _(e)?n.authority===`active`||n.authority===`paused`?(p({ownership:n.authority===`active`?`server-active`:`server-paused`,migration:`late-importing`,frozen:!1,admission:`server`,status:n,error:void 0}),await b(e,n,`late`),r):(p({migration:`staging`}),await b(e,n,`activation`),r):r):(h(Error(`capability-unavailable`)),r)}catch(n){return!t.current(e)||o?.signal.aborted?r:n instanceof X&&n.status===501?(p({ownership:`legacy-unsupported`,migration:`idle`,frozen:!1,admission:`legacy`,error:void 0}),r):(h(n),r)}},y=()=>u?(d=!0,u):(u=v().finally(()=>{u=void 0,d&&(d=!1,y())}),u),b=async(e,n,r)=>{let i=await jz({queue:t.queue,capture:()=>e,current:t.current,kind:r,authorityGeneration:()=>n.generation??0,publish:e=>p({importState:e})}).run(o?.signal);if(t.current(e)){if(p({importState:i}),!i.canActivate||!i.importID||!i.manifestHash){g(e,n,r,i);return}p({migration:r===`activation`?`activating`:`late-importing`});try{let a=r===`activation`?await t.activate(i.importID,{requestID:`shadow-activate:${i.manifestHash}`,expectedGeneration:n.generation??0,manifestHash:i.manifestHash,protocol:4,signal:o?.signal}):await t.lateCommit(i.importID,{requestID:`shadow-late:${i.manifestHash}`,expectedGeneration:n.generation??0,manifestHash:i.manifestHash,protocol:4,signal:o?.signal});if(!t.current(e))return;l=500,p({ownership:r===`activation`?`server-active`:n.authority===`paused`?`server-paused`:`server-active`,migration:`complete`,frozen:!1,admission:`server`,importState:{...i,activationEpoch:a.activationEpoch}})}catch(a){if(!t.current(e))return;let o=await eR(L).catch(()=>void 0);if(o?.manifestHash===i.manifestHash&&o.activationEpoch!==void 0&&(o.authority===`active`||o.authority===`paused`)){l=500,p({ownership:o.authority===`paused`?`server-paused`:`server-active`,migration:`complete`,frozen:!1,admission:`server`,status:o,importState:{...i,activationEpoch:o.activationEpoch}});return}if(o?.authority===`active`||o?.authority===`paused`){g(e,o,`late`,i,a);return}g(e,n,r,i,a)}}},x,S=()=>{o?.abort(),o=void 0,clearTimeout(c),c=void 0,s?.(),s=void 0};return{subscribe:e=>(f.add(e),()=>f.delete(e)),getSnapshot:()=>r,start:()=>{i++,x!==void 0&&(clearTimeout(x),x=void 0),!(i>1)&&(s=n(e=>{a(e)&&(o?.abort(),p(lH()),setTimeout(()=>{y()},0))}),y())},stop:()=>{i=Math.max(0,i-1),!i&&(x!==void 0&&clearTimeout(x),x=setTimeout(()=>{x=void 0,i||S()},0))},refresh:y}},dH,fH=()=>dH??=uH(),pH=t({confirmQueueAbortOptimistic:()=>LH,getQueueAbortOptimisticPresentation:()=>CH,getQueueAbortOptimisticRevision:()=>SH,inspectQueueAbortOptimisticTranscript:()=>NH,isQueueItemSendPendingByAbortOptimistic:()=>wH,planQueueAbortOptimisticReconcile:()=>PH,promoteQueueHeadOnAbort:()=>UH,reconcileQueueAbortOptimistic:()=>HH,rollbackQueueAbortOptimistic:()=>IH,subscribeQueueAbortOptimistic:()=>xH,useQueueAbortOptimisticReconcile:()=>WH}),mH=new Set([`queued`,`retrying`]),hH=new Set([`sending`,`reconciling`]),gH=new Set([`failed`,`unresolved`]),_H=new Map,vH=new Set,yH=0,bH=()=>{yH+=1;for(let e of vH)e()},xH=e=>(vH.add(e),()=>{vH.delete(e)}),SH=()=>yH,CH=e=>_H.get(e),wH=(e,t)=>_H.get(e)?.queueItemID===t,TH=(e,t)=>{let n;for(let r of Nd(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},EH=e=>{let t=e?.[0];if(!(!t||!mH.has(t.status))&&t.deliveryTarget?.kind!==`assistant`)return t},DH=(e,t)=>{let n=re.getState(),r={state:`bound`,transportIdentity:i(),directory:t,sessionID:e};return EH(n.getQueueForScope(r))??EH(n.getQueueForScope(j(e)))},OH=(e,t)=>{let n=fH().getSnapshot().ownership;return n!==`server-active`&&n!==`server-paused`?void 0:EH(Wz().getScope({transportIdentity:i(),directory:t,sessionID:e})?.items)},kH=e=>{let t=e.sendConfig?.providerID,n=e.sendConfig?.modelID;return!t||!n?null:{providerID:t,modelID:n,agent:e.sendConfig?.agent}},AH=e=>!!e&&typeof e==`object`&&e.__openchamberOptimistic===!0,jH=(e,t,n)=>{try{let r=H();return r?r.getTranscript(W(t,e)).partsByMessageID[n]??[]:[]}catch{return[]}},MH=(e,t,n)=>{let r=typeof e.id==`string`?e.id:``;if(!r||e.role!==`user`)return!1;let i=jH(t,n,r);return i.length!==0&&i.some(e=>!AH(e))},NH=(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}},PH=(e,t,n)=>{let r=e?.messageID;return e&&(mH.has(e.status)||hH.has(e.status))?r&&n&&r!==n?`rebind`:hH.has(e.status)||t.hasPinnedMessage?`confirm`:`keep`:e&&gH.has(e.status)?`rollback`:t.hasPinnedMessage?`confirm`:t.hasLaterUserMessage?`rollback`:`keep`},FH=e=>{let t=_H.get(e);if(t)return _H.delete(e),bH(),t},IH=e=>{FH(e)},LH=e=>{FH(e)},RH=e=>{if(e.source===`server`){let t=Wz().getScope({transportIdentity:i(),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:i(),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},zH=e=>{let t=Nd(e.sessionID,e.directory).map(t=>({id:typeof t?.id==`string`?t.id:void 0,role:t?.role,optimistic:!MH(t,e.sessionID,e.directory)}));return NH(e.messageID,t)},BH=(e,t)=>{let n=_H.get(e);!n||!t||n.messageID===t||(_H.set(e,{...n,messageID:t}),bH())},VH=(e,t,n)=>{if(t===`confirm`)LH(e.sessionID);else if(t===`rollback`)IH(e.sessionID);else if(t===`rebind`&&n?.messageID){BH(e.sessionID,n.messageID);let t=_H.get(e.sessionID);if(!t)return;let r=PH(RH(t),zH(t),t.messageID);if(r===`rebind`)return;VH(t,r,RH(t))}},HH=e=>{let t=e?[_H.get(e)].filter(e=>!!e):[..._H.values()];for(let e of t){let t=RH(e);VH(e,PH(t,zH(e),e.messageID),t)}},UH=e=>{if(!e||_H.has(e))return _H.get(e)??null;let t=$.getState().getDirectoryForSession(e);if(!t)return null;let n=OH(e,t),r=n?void 0:DH(e,t),i=n??r;if(!i)return null;let a=kH(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`,TH(e,t)),c={sessionID:e,directory:t,queueItemID:i.queueItemID,operationID:`operationID`in i?i.operationID:void 0,messageID:s,content:o,providerID:a.providerID,modelID:a.modelID,agent:a.agent,source:n?`server`:`legacy`};return _H.set(e,c),bH(),c};function WH(){let e=(0,V.c)(6),t=G.useSyncExternalStore(xH,SH,SH),n=re(QH),r;e[0]!==t||e[1]!==n?(r=[t,n],e[0]=t,e[1]=n,e[2]=r):r=e[2],G.useEffect(ZH,r);let i;e[3]===Symbol.for(`react.memo_cache_sentinel`)?(i=[],e[3]=i):i=e[3],G.useEffect(JH,i);let a;e[4]===t?a=e[5]:(a=[t],e[4]=t,e[5]=a),G.useEffect(GH,a)}function GH(){return td([..._H.values()].map(qH),KH)}function KH(){HH()}function qH(e){return{directory:e.directory,sessionID:e.sessionID}}function JH(){let e=Wz().subscribe(XH),t=n(YH);return()=>{e(),t()}}function YH(){for(let e of[..._H.keys()])IH(e)}function XH(){HH()}function ZH(){HH()}function QH(e){return e.queuedMessages}var $H=[`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(`
|
|
471
|
-
`);async function eU(e){try{let{currentProviderId:t,currentModelId:n}=Hf.getState(),r=await F(`/api/small-model/generate`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({prompt:e,system:$H,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 tU=[`active`,`paused`,`blocked`,`budgetLimited`,`complete`],nU=5e3,rU=e=>!!e&&typeof e==`object`&&!Array.isArray(e),iU=e=>typeof e==`string`&&tU.includes(e);function aU(e){let t=e?.metadata;if(!rU(t))return null;let n=t.openchamber;if(!rU(n))return null;let r=n.goal;if(!rU(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||!iU(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,nU),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 oU(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 sU(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 cU=e=>!!e&&typeof e==`object`&&!Array.isArray(e),lU=()=>`${Date.now().toString(36)}${Math.random().toString(36).slice(2,8)}`,uU=(e,t,n)=>LS(e,t,e=>{let t=cU(e.openchamber)?e.openchamber:{},r=n(cU(t.goal)?t.goal:null),i={...t};return r?i.goal=r:delete i.goal,{...e,openchamber:i}}),dU=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}},fU=e=>{F(`/api/goals/objective/${encodeURIComponent(e)}`,{method:`DELETE`}).catch(()=>void 0)};async function pU(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 mU=`
|
|
404
|
+
`).trim()},lw=(e,t)=>!t||$C(e)===t,uw=(e,t)=>[e.runtimeKey,e.originalSessionID,e.phase,e.expectedAssistantParentID??``,t].join(`:`),dw=(e,t)=>{let n=uw(e,t);return YC.has(n)?null:(YC.add(n),n)},fw=e=>{YC.delete(e)},pw=()=>[{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${KC}\nIf you found issues that require changes, do not include that final status line.`}],mw=async e=>{for(;;){let t=Up.getState().runsByOriginalSessionID[e];if(!t||t.status!==`running`)return;if(!rw(t.runtimeKey)){iw(t);return}let n=t.phase===`waiting_for_reviewer`?t.reviewSessionID:t.originalSessionID;if(!nw(n,t.directory)){await new Promise(e=>setTimeout(e,WC));continue}let r=tw(n,t.directory,t.lastForwardedMessageID,t.waitAfterCreatedAt,t.expectedAssistantParentID);if(!r){await new Promise(e=>setTimeout(e,WC));continue}if(t.phase===`waiting_for_reviewer`){let e=dw(t,r.id);if(!e){await new Promise(e=>setTimeout(e,WC));continue}if(!rw(t.runtimeKey)){fw(e),iw(t);return}try{let e=Date.now(),n=sw(r.text),i=n?cw(r.text):r.text,a=await Ew(t.reviewSessionID,t.directory,i,t.runtimeKey);if(n){Up.getState().completeRun(t.originalSessionID);return}Up.getState().updateRun(t.originalSessionID,t=>({...t,phase:`waiting_for_implementer`,lastForwardedMessageID:r.id,expectedAssistantParentID:a,waitAfterCreatedAt:e}))}finally{fw(e)}}else{if(t.iteration>=t.maxIterations){Up.getState().stopRun(t.originalSessionID);return}let e=dw(t,r.id);if(!e){await new Promise(e=>setTimeout(e,WC));continue}if(!rw(t.runtimeKey)){fw(e),iw(t);return}try{let e=Date.now(),n=await Dw(t.originalSessionID,t.directory,r.text,!0,t.runtimeKey);Up.getState().updateRun(t.originalSessionID,t=>({...t,phase:`waiting_for_reviewer`,iteration:t.iteration+1,lastForwardedMessageID:r.id,expectedAssistantParentID:n,waitAfterCreatedAt:e}))}finally{fw(e)}}}},hw=e=>{Up.getState().upsertRun(e),gw(e.originalSessionID)},gw=e=>{let t=Up.getState().runsByOriginalSessionID[e];!t||t.status!==`running`||!rw(t.runtimeKey)||JC.has(e)||(JC.add(e),mw(t.originalSessionID).catch(e=>{console.error(`[review-flow] auto-review loop failed`,e),Up.getState().updateRun(t.originalSessionID,t=>({...t,status:ow(e)?`stopped`:`error`,error:e instanceof Error?e.message:String(e)}))}).finally(()=>{JC.delete(e)}))},_w=async(e,t,n)=>{let r=Date.now()+HC;for(;Date.now()<r;){let r=Nd(e,t).filter(e=>QC(e)===`assistant`).filter(e=>ZC(e)>=n-1e3).filter(XC).sort((e,t)=>ZC(t)-ZC(e));for(let e of r){let n=Np(Pd(e.id,t)).trim();if(n)return n}await new Promise(e=>setTimeout(e,UC))}throw Error(`Timed out waiting for handoff response`)},vw=e=>{let t=Jo.getState(),n=Hf.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}},yw=async(e,t,n,r,i,a)=>{aw(a);let o=r??vw(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)),am(e);let c=null;if(await fC({sessionId:e,content:n,directory:t,providerID:o.providerID,modelID:o.modelID,agent:o.agent,onMessageID:e=>{c=e},beforeOptimisticInsert:()=>aw(a),onOptimisticInsert:()=>bw(e),send:r=>(aw(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},bw=e=>{typeof window>`u`||window.dispatchEvent(new CustomEvent(`openchamber:chat-force-scroll-bottom`,{detail:{sessionId:e}}))},xw=(e,t)=>{m.getState().openContextPanelTab(e,{mode:`chat`,dedupeKey:`session:${t.id}`,label:t.title??null,sessionTitleFallback:t.title??null})},Sw=async(e,t)=>{try{return await z.getSession(e,t)}catch{return null}},Cw=e=>`Review: ${e.title?.trim()||e.id}`,ww=async(e,t,n)=>{aw(n);let r=await z.getSession(e,t);aw(n);let i=Lp(r);if(i){let r=await Sw(i,t);if(aw(n),r&&zp(r))return r;await LS(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})}aw(n);let a=await z.createSession({title:Cw(r),metadata:Vp({},e)},t);aw(n),Cd(a.id,t);try{aw(n),await LS(e,t,e=>Bp(e,a.id))}catch(e){throw aw(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},Tw=async e=>{await gS();let t=e.autoReview?c():void 0,n;if(e.generateHandoff??!0){let n=await kp(`session.reviewHandoff.visible`),r=await kp(`session.reviewHandoff.instructions`),i=Date.now();await yw(e.originalSessionID,e.directory,n,null,[{text:r,synthetic:!0}],t);let a=async()=>{let n=await _w(e.originalSessionID,e.directory,i);aw(t);let r=await kp(`session.reviewSession.visible`,{handoff:n}),a=await ww(e.originalSessionID,e.directory,t),o=t??c(),s=Date.now(),l=await yw(a.id,e.directory,r,{providerID:e.providerID,modelID:e.modelID,agent:e.agent,variant:e.variant},e.autoReview?pw():void 0,e.autoReview?o:void 0);e.autoReview&&hw({originalSessionID:e.originalSessionID,reviewSessionID:a.id,directory:e.directory,runtimeKey:o,status:`running`,phase:`waiting_for_reviewer`,iteration:0,maxIterations:GC,expectedAssistantParentID:l,waitAfterCreatedAt:s}),e.autoReview||xw(e.directory,a)};if(e.returnAfterHandoffRequest){a().catch(e=>{console.error(`[review-flow] failed to finish background review flow`,e)});return}await a();return}n=await kp(`session.reviewSessionWithoutHandoff.visible`);let r=await ww(e.originalSessionID,e.directory,t),i=t??c(),a=Date.now(),o=await yw(r.id,e.directory,n,{providerID:e.providerID,modelID:e.modelID,agent:e.agent,variant:e.variant},e.autoReview?pw():void 0,e.autoReview?i:void 0);e.autoReview&&hw({originalSessionID:e.originalSessionID,reviewSessionID:r.id,directory:e.directory,runtimeKey:i,status:`running`,phase:`waiting_for_reviewer`,iteration:0,maxIterations:GC,expectedAssistantParentID:o,waitAfterCreatedAt:a}),e.autoReview||xw(e.directory,r)},Ew=async(e,t,n,r)=>{aw(r);let i=Rp(await z.getSession(e,t));if(!i)throw Error(`Original session is missing`);let a=await kp(`session.reviewFeedbackToImplementer.visible`,{review_feedback:n});return aw(r),yw(i,t,a,void 0,void 0,r)},Dw=async(e,t,n,r=!1,i)=>{aw(i);let a=Lp(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 aw(i),await LS(e,t,e=>Hp(e,a)),n}let s=await kp(`session.implementationResponseToReviewer.visible`,{implementation_response:n});aw(i);let c=await yw(a,t,s,void 0,r?pw():void 0,i);return r||xw(t,o),c},Ow=e=>zp(e)?`review-to-original`:Lp(e)?`original-to-review`:null,kw=[0,250,500,1e3,2e3,2e3,2e3,2e3],Aw=5e3,jw=(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??Aw,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??kw,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))}),Mw=()=>jw.waitUntilReady(c()),Nw=e=>{jw.reset(e)},Pw=100,Fw=1500,Iw=async e=>{if(!e.ok)throw Error(`session index request failed (${e.status})`)},Lw=e=>{if(e.available!==!0||!Array.isArray(e.directories))return null;let t=Array.isArray(e.pinnedSessionIds)?e.pinnedSessionIds.filter(e=>typeof e==`string`&&e.length>0):void 0;return{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,...t?{pinnedSessionIds:t}:{}}},Rw,zw=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 Iw(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}},Bw=async e=>{if(typeof window>`u`)return null;if(Rw)return Rw;let t=(async()=>{let t=await F(`/api/openchamber/session-index`,{signal:e?.signal});return t.status===501?null:(await Iw(t),Lw(await t.json()))})().finally(()=>{Rw===t&&(Rw=void 0)});return Rw=t,t},Vw=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 Iw(t),t.json())},Hw=(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:Fw,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)},Pw)},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})}),Uw=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 Iw(r)},Ww=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 Iw(r)},Gw=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 Iw(t)},Kw=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 Iw(t)},qw=1,Jw=`oc.sessionIndexStartupCache`,Yw=1e6,Xw=e=>!!e&&typeof e==`object`&&!Array.isArray(e),Zw=e=>Array.isArray(e)&&e.every(e=>typeof e==`string`),Qw=e=>!(!Xw(e)||typeof e.active!=`boolean`||typeof e.completed!=`number`||!Number.isFinite(e.completed)||typeof e.total!=`number`||!Number.isFinite(e.total)||!Zw(e.pendingDirectories)||!Zw(e.completedDirectories)||!Zw(e.failedDirectories)||e.enriching!==void 0&&typeof e.enriching!=`boolean`),$w=e=>Xw(e)&&typeof e.id==`string`&&e.id.length>0&&typeof e.title==`string`&&typeof e.directory==`string`&&e.directory.length>0&&Xw(e.time)&&typeof e.time.created==`number`&&Number.isFinite(e.time.created)&&typeof e.time.updated==`number`&&Number.isFinite(e.time.updated),eT=e=>!Xw(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($w),tT=e=>!Xw(e)||typeof e.revision!=`number`||!Number.isFinite(e.revision)||!Qw(e.sync)||!Array.isArray(e.directories)||e.pinnedSessionIds!==void 0&&!Zw(e.pinnedSessionIds)?!1:e.directories.every(eT),nT=e=>Xw(e)&&e.version===qw&&Xw(e.entries),rT=e=>{if(!e)return null;try{let t=JSON.parse(e);return nT(t)?{version:qw,entries:t.entries}:null}catch{return null}},iT=(e,t)=>{try{let n=JSON.stringify(t);if(n.length>Yw)return;e.setItem(Jw,n)}catch{}},aT=(e,t)=>{if(!e)return null;let n;try{n=t.getItem(Jw)}catch{return null}let r=rT(n);if(!r)return null;let i=r.entries[e];return tT(i)?i:null},oT=(e,t,n)=>{if(!e||!tT(t))return;let r=null;try{r=n.getItem(Jw)}catch{return}let i={...rT(r)?.entries??{},[e]:t},a=Object.keys(i).slice(-8);iT(n,{version:qw,entries:Object.fromEntries(a.map(e=>[e,i[e]]))})},sT=(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}}},cT=(e,t)=>!e||t,lT=(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}},uT=new Set,dT=()=>uT.size>0,fT=e=>{for(let t of uT)t(e)},pT=e=>(uT.add(e),()=>uT.delete(e)),mT=3e4,hT=3e3,gT=1e3,_T=0,vT=0,yT=0,bT=null;function xT(e){try{if(e===`medium`){vT+=1;return}if(e===`heavy`){yT+=1;return}_T+=1}catch{}}function ST(){return{light:_T,medium:vT,heavy:yT}}function CT(){_T=0,vT=0,yT=0}function wT(e){if(e.length===0)return{avg:null,min:null,p10:null};let t=e.map(e=>e>0?1e3/e:0),n=t.reduce((e,t)=>e+t,0)/t.length,r=Math.min(...t),i=[...t].sort((e,t)=>e-t);return{avg:n,min:r,p10:i[Math.max(0,Math.min(i.length-1,Math.floor(.1*(i.length-1))))]??r}}function TT(){let e=0,t=0,n=0,r=0,i=0,a=0,o=0,s=0,c=0,l=[];return{addLongTaskMs(r){!Number.isFinite(r)||r<0||(e+=1,t+=r,r>n&&(n=r))},addLagMs(e){!Number.isFinite(e)||e<0||(r+=1,i+=e,e>a&&(a=e))},addFpsDelta(e){!Number.isFinite(e)||e<0||l.push(e)},noteHaptic(e){if(e===`medium`){s+=1;return}if(e===`heavy`){c+=1;return}o+=1},snapshotWindow(){let u=wT(l),d={longTaskCount:e,longTaskTotalMs:t,longTaskMaxMs:n,eventLoopLagMaxMs:a,eventLoopLagAvgMs:r>0?i/r:0,hapticLightCount:o,hapticMediumCount:s,hapticHeavyCount:c};return u.avg==null?d:{...d,fpsAvg:u.avg,fpsMin:u.min??void 0,fpsP10:u.p10??void 0}},reset(){e=0,t=0,n=0,r=0,i=0,a=0,o=0,s=0,c=0,l.length=0}}}function ET(){try{let e=performance.memory;return e?{used:typeof e.usedJSHeapSize==`number`?Math.round(e.usedJSHeapSize/1048576):void 0,limit:typeof e.jsHeapSizeLimit==`number`?Math.round(e.jsHeapSizeLimit/1048576):void 0}:{}}catch{return{}}}function DT(){let e={};try{typeof document<`u`&&document.visibilityState&&(e.visible=document.visibilityState===`visible`)}catch{}try{typeof document<`u`&&document.documentElement&&(e.foreground=document.documentElement.classList.contains(`oc-native-app-active`))}catch{}return e}function OT(e){let t=ET(),n=DT();return{at:e.at,feat:`perf`,kind:`perf-window`,sessionID:`app`,longTaskCount:e.snapshot.longTaskCount,longTaskTotalMs:e.snapshot.longTaskTotalMs,longTaskMaxMs:e.snapshot.longTaskMaxMs,eventLoopLagMaxMs:e.snapshot.eventLoopLagMaxMs,eventLoopLagAvgMs:e.snapshot.eventLoopLagAvgMs,hapticLightCount:e.haptics.light,hapticMediumCount:e.haptics.medium,hapticHeavyCount:e.haptics.heavy,platform:e.platform,...e.snapshot.fpsAvg==null?{}:{fpsAvg:e.snapshot.fpsAvg,fpsMin:e.snapshot.fpsMin,fpsP10:e.snapshot.fpsP10},...t.used==null?{}:{jsHeapUsedMB:t.used},...t.limit==null?{}:{jsHeapLimitMB:t.limit},...n.visible==null?{}:{visible:n.visible},...n.foreground==null?{}:{foreground:n.foreground}}}function kT(e={}){if(bT)return bT;let t=e.isEnabled??qv,n=e.record??Xv,r=e.now??(()=>Date.now()),i=e.getPlatform??(()=>qe()),a=TT(),o=!1,s,c,l,u,d,f,p=e=>{try{e()}catch{}},m=()=>{if(l!=null&&(clearTimeout(l),l=void 0),u!=null&&typeof cancelAnimationFrame==`function`){try{cancelAnimationFrame(u)}catch{}u=void 0}d=void 0},h=()=>{if(m(),typeof requestAnimationFrame!=`function`)return;let e=r()+hT,t=n=>{o||p(()=>{d!=null&&a.addFpsDelta(n-d),d=n,r()<e?u=requestAnimationFrame(t):(u=void 0,d=void 0)})};u=requestAnimationFrame(t),l=setTimeout(()=>{p(()=>{u!=null&&typeof cancelAnimationFrame==`function`&&(cancelAnimationFrame(u),u=void 0),d=void 0})},hT)},g=()=>{p(()=>{let e=a.snapshotWindow(),o=ST();t()&&n(OT({at:r(),snapshot:e,haptics:o,platform:i()})),CT(),a.reset()})},_=()=>{s=setTimeout(()=>{o||(g(),h(),_())},mT)},v=()=>{let e=r()+gT;c=setTimeout(()=>{o||(p(()=>{let t=Math.max(0,r()-e);a.addLagMs(t)}),v())},gT)};p(()=>{if(!(typeof PerformanceObserver>`u`))try{f=new PerformanceObserver(e=>{p(()=>{for(let t of e.getEntries())a.addLongTaskMs(t.duration)})}),f.observe({entryTypes:[`longtask`]})}catch{f=void 0}}),h(),v(),_();let y=()=>{if(!o){if(o=!0,s!=null&&clearTimeout(s),c!=null&&clearTimeout(c),m(),f){try{f.disconnect()}catch{}f=void 0}bT===y&&(bT=null)}};return bT=y,y}var AT=typeof window<`u`?G.useLayoutEffect:G.useEffect,jT=Qe(`OpenChamberHaptics`),MT=null,NT=()=>(MT??=$e.isPluginAvailable(`OpenChamberHaptics`),MT);function PT(e){switch(e){case`medium`:return`impactMedium`;case`heavy`:return`impactHeavy`;default:return`impactLight`}}function FT(){return typeof window>`u`?!1:window.Capacitor?.isNativePlatform?.()===!0}function IT(){if(!FT())return!1;let e=window.Capacitor?.getPlatform?.();return e===`ios`||e===`android`}function LT(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,zT=750;function BT(e,t){return t-e>=RT}function VT(e,t){return t-e>=zT}function HT(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 UT=-1/0;function WT(e=`light`,t){if(!IT()||!NT()||document.visibilityState!==`visible`||!document.documentElement.classList.contains(`oc-native-app-active`))return!1;let n=Date.now();return!t?.bypassCadence&&!BT(UT,n)?!1:(UT=n,jT[PT(e)]().catch(()=>void 0),xT(e),!0)}var GT=`button, [role="button"], [role="menuitem"]`;function KT(){let e=(0,V.c)(1),t;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=[],e[0]=t):t=e[0],G.useEffect(qT,t)}function qT(){if(!IT())return;let e=JT;return document.addEventListener(`click`,e,!0),()=>document.removeEventListener(`click`,e,!0)}function JT(e){if(!e.isTrusted||!(e.target instanceof Element))return;let t=e.target.closest(GT);t&&(t.matches(`:disabled, [aria-disabled="true"], [data-mobile-press-feedback="none"]`)||WT(`light`))}function YT(){let e=(0,V.c)(1),t;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=[],e[0]=t):t=e[0],AT(XT,t)}function XT(){if(!IT())return;let e=lT(),t=qe()===`android`,n=-1/0;return pT(r=>{if(!e(r))return;let i=$.getState().currentSessionId,a=document.documentElement.classList.contains(`oc-native-app-active`);if(LT({eventSessionId:r.sessionID,currentSessionId:i,isForeground:a,isVisible:document.visibilityState===`visible`}).shouldTrigger){if(t&&r.kind===`text`){let e=Date.now();if(!VT(n,e))return;WT()&&(n=e);return}WT()}})}var ZT=async e=>{let t=await dt(e);t.ok||console.error(`Failed to copy to clipboard:`,t.error)},QT=e=>e==null||typeof e==`boolean`?``:typeof e==`string`||typeof e==`number`?String(e):Array.isArray(e)?e.map(QT).join(` `).trim():(0,G.isValidElement)(e)?QT(e.props?.children):``,$T=e=>typeof e==`function`?e():e,eE=(e,t)=>{let n=QT($T(t?.description));return n.length>0?n:QT(e)},tE=Object.assign((...e)=>(WT(),lt(...e)),{...lt,success:(...e)=>{let[t,n]=e;return WT(),lt.success(t,{...n,action:n?.action||{label:`OK`,onClick:()=>{}}})},info:(...e)=>{let[t,n]=e;return WT(),lt.info(t,{...n,action:n?.action||{label:`OK`,onClick:()=>{}}})},error:(...e)=>{let[t,n]=e;return WT(),lt.error(t,{...n,action:n?.action||{label:`Copy`,onClick:()=>ZT(eE(t,n))}})},warning:(...e)=>{let[t,n]=e;return WT(),lt.warning(t,{...n,action:n?.action||{label:`Copy`,onClick:()=>ZT(eE(t,n))}})},loading:(...e)=>(WT(),lt.loading(...e)),custom:(...e)=>(WT(),lt.custom(...e)),promise:(...e)=>(WT(),lt.promise(...e))}),nE=new Set,rE,iE=nE,aE=null,oE=(e,t)=>pt(ft.getState().dictionary,e,t),sE=e=>{let t=e?.time?.pinned;return t!=null&&t!==``},cE=e=>{if(!e)return nE;let t=new Set;if(Array.isArray(e.pinnedSessionIds))for(let n of e.pinnedSessionIds)typeof n==`string`&&n&&t.add(n);for(let n of e.directories)for(let e of n.sessions)sE(e)&&t.add(e.id);return t.size===0?nE:t},lE=(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},uE=(e=L,t=i())=>{let n=xE(e,t);if(n===rE&&t===aE)return iE;let r=cE(n);return rE=n,aE=t,iE=lE(iE,r)?iE:r,iE},dE=(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}),a=cE(e),o=new Set(a);return n==null||n===``?o.delete(t):o.add(t),lE(a,o)||(r=!0),r?{...e,directories:i,pinnedSessionIds:[...o]}:e},fE=(e,t,n,r)=>{let i=xE(e,t);if(!i)return null;let a=dE(i,n,r?new Date().toISOString():null);return a!==i&&CE(a,{client:e,transport:t,persist:!1}),i},pE=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()}),mE=()=>uE(),hE=()=>(0,G.useSyncExternalStore)(pE,mE,_E),gE=()=>{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 r;e[1]===t?r=e[2]:(r={mutationKey:n,mutationFn:vE,onMutate:e=>{let{sessionId:n,nextPinned:r,transport:i}=e;return{previous:fE(t,i,n,r),transport:i}},onError:(e,n,r)=>{r?.previous&&CE(r.previous,{client:t,transport:r.transport,persist:!1}),tE.error(e instanceof Error?e.message:oE(n.nextPinned?`sessions.sidebar.session.pin.error`:`sessions.sidebar.session.unpin.error`))}},e[1]=t,e[2]=r);let a=at(r),o;return e[3]!==t||e[4]!==a?(o=e=>{let n=e.trim();if(!n)return;let r=i(),o=xE(t,r);if(!o)return;let s=cE(o).has(n);a.mutate({sessionId:n,nextPinned:!s,transport:r})},e[3]=t,e[4]=a,e[5]=o):o=e[5],ut(o)};function _E(){return nE}async function vE(e){let{sessionId:t,nextPinned:n}=e;n?await Uw(t):await Ww(t)}var yE=(e=i())=>N.sessionIndex.snapshot(e),bE=(e=i(),t=c(),n=f(),r=Bw)=>{let a=t,o=n,s=r;return{queryKey:yE(e),queryFn:async({signal:e})=>{let t=await s({signal:e});return t&&oT(a,t,o),t},staleTime:0,gcTime:1/0,initialData:()=>aT(a,o)??void 0,initialDataUpdatedAt:0}},xE=(e=L,t=i())=>e.getQueryData(yE(t))??null,SE=(e=L,t=i(),n=c(),r=f())=>{let a=bE(t,n,r);return e.getQueryCache().build(e,a),e.getQueryData(a.queryKey)??null},CE=(e,t)=>{if(!tT(e))return;let n=t?.client??L,r=t?.transport??i(),a=t?.runtimeKey??c(),o=t?.storage??f();n.setQueryData(yE(r),e),t?.persist!==!1&&oT(a,e,o)},wE=(e=L,t=i(),n=c(),r=f(),a=Bw)=>{let o={...bE(t,n,r,a),staleTime:0};return e.getQueryCache().build(e,o),e.fetchQuery(o)},TE=500,EE=20,DE=6e3,OE=7,kE=3,AE=1,jE=2,ME=750,NE=500,PE=1e4,FE=2,IE=(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})}),LE=null,q=0,RE=new Map,zE=new Map,BE=new Map,VE=[],HE=new Set,UE=0,WE=kE,GE=0,KE=null,qE,JE=new Map,YE=()=>({loadGeneration:q,runtimeGeneration:h(),transportIdentity:i()}),J=e=>e.loadGeneration===q&&e.runtimeGeneration===h()&&e.transportIdentity===i(),XE=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`)},ZE=e=>{GE=0,XE(e)&&(WE=WE>kE?kE:AE)},QE=()=>{GE+=1,!(GE<jE||WE>=OE)&&(WE+=1,GE=0)},$E=()=>{for(;UE<WE&&VE.length>0;){let e=VE.shift();if(!e)return;UE+=1,e()}},eD=e=>new Promise((t,n)=>{VE.push(()=>{e().then(t,n).finally(()=>{--UE,$E()})}),$E()}),tD=e=>{let t=e;return _(t.directory??null)??_(t.project?.worktree??null)},nD=(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=Jf(t);if(f>Jf(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},rD=(e,t)=>{let n=nD(e,t);return n.share===t.share?n:{...n,share:t.share}},iD=e=>{let t=new Map;for(let n of e){let e=tD(n);if(!e)continue;let r=t.get(e);if(r){r.push(n);continue}t.set(e,[n])}return t},aD=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),tD(e)??``].join(`:`),oD=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),tD(e)??``].join(`:`)},sD=(e,t)=>e.time?.updated!==t.time?.updated&&oD(e)===oD(t),cD=(e,t)=>{if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(aD(e[n])!==aD(t[n]))return!1;return!0},lD=e=>!!e.time?.archived,uD=(e,t)=>{let n=new Set,r=!1;for(let t of e){if(!t?.id||n.has(t.id)||lD(t)){r=!0;break}n.add(t.id)}if(!r){let e=new Set;for(let i of t){if(!i?.id||e.has(i.id)||n.has(i.id)||!lD(i)){r=!0;break}e.add(i.id)}}if(!r)return{activeSessions:e,archivedSessions:t};let i=new Map;for(let t of e)t?.id&&i.set(t.id,t);for(let e of t){if(!e?.id)continue;let t=i.get(e.id);i.set(e.id,t?nD(e,t):e)}let a=[],o=[],s=new Set,c=e=>{if(!e?.id||s.has(e.id))return;s.add(e.id);let t=i.get(e.id)??e;lD(t)?o.push(t):a.push(t)};return e.forEach(c),t.forEach(c),{activeSessions:a,archivedSessions:o}},dD=(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))},fD=e=>[...e].sort((e,t)=>{let n=Jf(t)-Jf(e);return n===0?t.id.localeCompare(e.id):n}),pD=e=>{let t=new Set;for(let n of e){let e=_(n);e&&t.add(e)}return t},mD=e=>{let t=pD(e);for(let e of t)JE.set(e,(JE.get(e)??0)+1);return t},hD=e=>{let t=new Set;for(let n of e){let e=JE.get(n)??0;if(e<=1){JE.delete(n),t.add(n);continue}JE.set(n,e-1)}return t},gD=(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}},_D=e=>{let t=e[e.length-1]?.time?.updated;return typeof t==`number`&&Number.isFinite(t)?t:null},vD=(e,t)=>{let n=_D(e);return{cursor:n,hasMore:e.length===EE&&n!==null&&(t==null||n<t),loadingMore:!1}},yD=(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,nD(e,r.get(e.id)));let a=e.filter(e=>{if(i.has(e.id))return!1;let t=tD(e);return!t||!n.has(t)});return fD([...i.values(),...a])},bD=(e,t)=>e.cursor===null?!e.hasMore&&(t.hasMore||t.cursor!==null):t.cursor===null||e.cursor<t.cursor,xD=(e,t)=>{if(typeof t==`number`&&Number.isFinite(t))return t;if(e.length===0)return null;let n=fD(e),r=n[n.length-1];return r?Jf(r):null},SD=(e,t)=>Jf(e)<=t,CD=(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,nD(t,a.get(t.id)));let s=e.filter(e=>{if(o.has(e.id))return!1;let t=tD(e);if(!t||!n.has(t))return!0;if(!i.has(t))return!1;let a=r.get(t);return a!=null&&SD(e,a)});return fD([...o.values(),...s])},wD=(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,dD(n.sessions,e.pendingDeletionIds));let a=[...i.values()].flat(),o=new Map;if(n)for(let t of e.activeSessions){let e=tD(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)>EE;n.hasMore&&a&&r&&bD(r,t)&&c.add(n.directory),s.set(n.directory,xD(i.get(n.directory)??[],n.cursor))}let l=n?CD(e.activeSessions,i,r,s,c):fD(DD(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=>tD(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 JE.keys())h.has(e)||RE.has(e)||(p.delete(e),m.delete(e));return{activeSessions:l,sessionsByDirectory:iD(l),reviewTransferBySessionId:kD(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}},TD=(e,t)=>{let n=dD(t.activeSessions,e.pendingDeletionIds),r=dD(t.fallbackActive??[],e.pendingDeletionIds),i=t.mergeOnly?fD(DD(e.activeSessions,n)):yD(e.activeSessions,n,t.directories);i=DD(i,r);let a=t.archivedSessions===void 0?void 0:dD(t.archivedSessions,e.pendingDeletionIds),o=a===void 0?e.archivedSessions:yD(e.archivedSessions,a,t.directories),s=uD(i,o);i=s.activeSessions,o=s.archivedSessions,cD(e.activeSessions,i)&&(i=e.activeSessions),cD(e.archivedSessions,o)&&(o=e.archivedSessions);let c=i===e.activeSessions?e.sessionsByDirectory:iD(i),l=e.loadedDirectories,u=!1;for(let n of t.directories)l.has(n)||(u||=(l=new Set(e.loadedDirectories),!0),l.add(n));let d=e.loadingDirectories,f=!1;for(let n of t.directories)d.has(n)&&(f||=(d=new Set(e.loadingDirectories),!0),d.delete(n));let p=t.markReady?`ready`:e.status,m=t.markReady?!0:e.hasLoaded;return i===e.activeSessions&&o===e.archivedSessions&&c===e.sessionsByDirectory&&l===e.loadedDirectories&&d===e.loadingDirectories&&e.status===p&&e.hasLoaded===m?e:{activeSessions:i,archivedSessions:o,sessionsByDirectory:c,reviewTransferBySessionId:i===e.activeSessions?e.reviewTransferBySessionId:kD(i),loadedDirectories:l,loadingDirectories:d,hasLoaded:m,status:p}},ED=(e,t)=>{let n=e.findIndex(e=>e.id===t.id);if(n===-1)return[t,...e];let r=e[n],i=nD(t,r);if(sD(r,i)||aD(r)===aD(i))return e;let a=[...e];return a[n]=i,a},DD=(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,nD(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},OD=(e,t,n,r)=>{let i=uD(t,n),a=dD(i.activeSessions,e.pendingDeletionIds),o=dD(i.archivedSessions,e.pendingDeletionIds),s=cD(e.activeSessions,a)?e.activeSessions:a,c=cD(e.archivedSessions,o)?e.archivedSessions:o,l=s===e.activeSessions?e.sessionsByDirectory:iD(s),u=s===e.activeSessions?e.reviewTransferBySessionId:kD(s);return s===e.activeSessions&&c===e.archivedSessions&&l===e.sessionsByDirectory&&u===e.reviewTransferBySessionId&&e.hasLoaded&&e.status===r?e:{activeSessions:s,archivedSessions:c,sessionsByDirectory:l,reviewTransferBySessionId:u,hasLoaded:!0,status:r}},kD=e=>{let t=new Map,n=new Set(e.map(e=>e.id));for(let r of e){let e=Ow(r);if(!e)continue;let i=e===`review-to-original`?Rp(r):Lp(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=>OD(e,t,n,r))},resetForRuntimeSwitch:()=>{q+=1,Nw(),LE=null,RE.clear(),zE.clear(),BE.clear(),HE.forEach(e=>e.abort()),HE.clear(),WE=kE,GE=0,KE?.abort(),KE=null,qE=void 0,JE.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(qE)return qE;if(t().hasHydratedSessionIndex)return;let n=YE(),r=i(),a=c(),o=SE(void 0,r,a);o&&J(n)&&e(e=>({...wD(e,o,!1),hasCachedSessionIndex:!0}));let s=(async()=>{try{let t;try{t=await wE(void 0,r,a)}catch(e){if(!J(n))return;if(o){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=>({...wD(e,t,!1),hasCachedSessionIndex:t.directories.length>0,hasHydratedSessionIndex:!0}))}catch(e){console.warn(`[GlobalSessions] Failed to hydrate runtime session index:`,e)}})();return qE=s.finally(()=>{qE===s&&(qE=void 0)}),qE},startSessionIndexStartup:async(n,r)=>{let i=YE();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=pD([...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?pD(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=YE();try{if(f=await Vw([...l]),!J(i)||!J(p))return{activeSessions:[],archivedSessions:[]};f&&CE(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=FD(l,d.activeSessions,{retryFailed:!o});if(o)e.then(()=>{m()});else{if(await e,!J(i))return{activeSessions:[],archivedSessions:[]};m()}return d}KE?.abort();let h=new AbortController;KE=h;let g=mD(l),_=()=>{if(!J(i))return;let t=hD(g);t.size!==0&&e(e=>gD(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=NE;for(;!h.signal.aborted&&J(i);){e(e=>({...wD(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=YE(),a=await Hw(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=YE();try{o=await wE()}catch{if(h.signal.aborted||!J(i)){o=void 0;break}if(await IE(n,h.signal),h.signal.aborted||!J(i)){o=void 0;break}n=Math.min(n*FE,PE);continue}if(!J(e)){o=void 0;break}if(!o)break;n=NE;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(),KE===h&&(KE=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(LE)return LE;e(e=>e.status===`loading`?e:{status:`loading`});let r=q,i=Promise.resolve().then(async()=>{let a=t();try{if(await Mw(),r!==q)return{activeSessions:[],archivedSessions:[]};let i=z.getSdkClient(),[o,s]=await Promise.allSettled([_p(i,{archived:!1,pageSize:TE}),_p(i,{archived:!0,pageSize:TE})]),c=DD(a.activeSessions,n),l=o.status===`fulfilled`?o.value:c,u=s.status===`fulfilled`?s.value:a.archivedSessions;return o.status===`rejected`&&console.warn(`[GlobalSessions] Failed to load active sessions, preserving existing snapshot with fallback merge:`,o.reason),s.status===`rejected`&&console.warn(`[GlobalSessions] Failed to load archived sessions, preserving current snapshot:`,s.reason),r===q?(e(e=>{let t=o.status===`fulfilled`&&s.status===`fulfilled`?`ready`:`error`,n=OD(e,l,u,t);if(o.status!==`fulfilled`||s.status!==`fulfilled`)return n===e?e:n;let r=new Set([...o.value.map(e=>e.id),...s.value.map(e=>e.id)]);return{...n,hasLoadedFullCatalog:!0,fullCatalogSessionIds:r,fullCatalogGeneration:e.fullCatalogGeneration+1}}),{activeSessions:t().activeSessions,archivedSessions:t().archivedSessions}):{activeSessions:[],archivedSessions:[]}}catch(i){if(r!==q)return{activeSessions:[],archivedSessions:[]};let o=DD(a.activeSessions,n),s=a.archivedSessions;return console.warn(`[GlobalSessions] Failed to load sessions, using fallback snapshot:`,i),e(e=>OD(e,o,s,`error`)),{activeSessions:t().activeSessions,archivedSessions:t().archivedSessions}}finally{LE===i&&(LE=null)}});return LE=i,i},refreshSessionsForDirectories:async(n,r,i)=>{let a=pD(n);if(a.size===0){let e=t();return{activeSessions:e.activeSessions,archivedSessions:e.archivedSessions}}let o=q;e(e=>{let t=DD(e.activeSessions,dD(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=>tD(e)===t)||n.add(t);return{...t===e.activeSessions?{}:{activeSessions:t,sessionsByDirectory:iD(t),reviewTransferBySessionId:kD(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=eD(async()=>{let r=new AbortController;HE.add(r);try{if(o!==q||(await Mw(),o!==q))return!1;let a=await _p(z.getSdkClient(),{directory:n,archived:!1,roots:!0,...i?.incrementalStart===void 0?{}:{start:i.incrementalStart},pageSize:EE,maxItems:EE,timeoutMs:DE,retryAttempts:2,signal:r.signal});if(o!==q)return!1;if(e(e=>{let t=TD(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,vD(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)??vD(a);try{await Gw({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 QE(),!0}catch(t){return ZE(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{HE.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=YE(),a=pD(n);if(a.size===0){let e=t();return{activeSessions:e.activeSessions,archivedSessions:e.archivedSessions}}let o=null,s=YE();try{if(o=await Vw([...a]),!J(i)||!J(s))return{activeSessions:[],archivedSessions:[]};o&&CE(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;HE.add(c);let l=mD(a),u=()=>{if(!J(i))return;let t=hD(l);t.size!==0&&e(e=>gD(e,t))};try{let t=o;for(;!c.signal.aborted&&J(i)&&(e(e=>wD(e,t,!0)),t.sync.active);){let e=YE(),n=await Hw(t.revision,c.signal);if(!J(i)||!J(e)||n===`aborted`)break;let r=YE(),a;try{a=await wE()}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(),HE.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=BE.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=eD(async()=>{let t=new AbortController;HE.add(t);try{if(await Mw(),o!==q)return!1;let n=await _p(z.getSdkClient(),{directory:r,archived:!1,roots:!0,cursor:a.cursor??void 0,pageSize:EE,maxItems:EE,timeoutMs:DE,retryAttempts:2,signal:t.signal});return o===q&&(e(e=>{let t=e.activeSessions.filter(e=>tD(e)===r),i=new Map(t.map(e=>[e.id,e]));dD(n,e.pendingDeletionIds).forEach(e=>{i.set(e.id,nD(e,i.get(e.id)))});let o=fD([...i.values()]),s=yD(e.activeSessions,o,new Set([r])),c=new Map(e.activePaginationByDirectory);return c.set(r,vD(n,a.cursor)),{activeSessions:cD(e.activeSessions,s)?e.activeSessions:s,sessionsByDirectory:iD(s),reviewTransferBySessionId:kD(s),activePaginationByDirectory:c}}),QE(),!0)}catch(t){return ZE(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{HE.delete(t)}});BE.set(r,s);try{await s}finally{BE.get(r)===s&&BE.delete(r)}return{activeSessions:t().activeSessions,archivedSessions:t().archivedSessions}},refreshArchivedSessionsForDirectories:async n=>{let r=pD(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=zE.get(t);if(n)return n;let r=eD(async()=>{let n=new AbortController;HE.add(n);try{if(i!==q||(await Mw(),i!==q))return!1;let r=await _p(z.getSdkClient(),{directory:t,archived:!0,roots:!0,pageSize:EE,maxItems:EE,timeoutMs:DE,retryAttempts:2,signal:n.signal});return i===q&&(e(e=>{let n=yD(e.archivedSessions,dD(r,e.pendingDeletionIds),new Set([t])),i=uD(e.activeSessions,n),a=cD(e.activeSessions,i.activeSessions)?e.activeSessions:i.activeSessions,o=cD(e.archivedSessions,i.archivedSessions)?e.archivedSessions:i.archivedSessions,s=new Set(e.archivedLoadedDirectories),c=new Set(e.archivedLoadingDirectories);return s.add(t),c.delete(t),{activeSessions:a,archivedSessions:o,sessionsByDirectory:a===e.activeSessions?e.sessionsByDirectory:iD(a),reviewTransferBySessionId:a===e.activeSessions?e.reviewTransferBySessionId:kD(a),archivedLoadedDirectories:s,archivedLoadingDirectories:c}}),!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{HE.delete(n)}});return zE.set(t,r),r.finally(()=>{zE.get(t)===r&&zE.delete(t)}),r});return await Promise.all(a),i===q?{activeSessions:t().activeSessions,archivedSessions:t().archivedSessions}:{activeSessions:[],archivedSessions:[]}},upsertSession:n=>{if(!fp(n)){t().removeSessions([n.id]);return}e(e=>{if(e.pendingDeletionIds.has(n.id))return e;let t=nD(n,e.activeSessions.find(e=>e.id===n.id)??e.archivedSessions.find(e=>e.id===n.id)??null),r=lD(t),i=r?e.activeSessions.filter(e=>e.id!==n.id):ED(e.activeSessions,t),a=r?ED(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:iD(i),reviewTransferBySessionId:i===e.activeSessions?e.reviewTransferBySessionId:kD(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:iD(t),reviewTransferBySessionId:kD(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:iD(i),reviewTransferBySessionId:kD(i)}})}})),AD=async e=>{let t=Y.getState();return t.hasLoadedFullCatalog&&t.status!==`error`?{activeSessions:t.activeSessions,archivedSessions:t.archivedSessions}:t.loadSessions(e)},jD=async()=>{await Y.getState().hydrateSessionIndex()},MD=async(e,t)=>Y.getState().startSessionIndexStartup(e,t),ND=async(e,t)=>Y.getState().refreshSessionsForDirectories(e,t),PD=async(e,t)=>Y.getState().syncSessionsForDirectories(e,t),FD=async(e,t,n)=>{let r=pD(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,ME));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 Kw(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}},ID=async e=>Y.getState().refreshArchivedSessionsForDirectories(e),LD=async e=>Y.getState().loadMoreSessionsForDirectory(e),RD=(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])},zD=`oc.sessions.folders`,BD=`oc.sessions.folderCollapse`,VD=`oc.sessions.order`,HD=`oc.sessions.orderActivity`,UD=`/api/session-folders`,WD=250,GD=`__archived__:`,KD=x(f()),qD=null,JD=!1,YD=!1,XD=0,ZD,QD,$D=null,eO=null,tO=()=>typeof window>`u`?!1:v()?!0:window.__VSCODE_CONFIG__!==void 0,nO=(e,t)=>{if(typeof window>`u`||tO())return;qD&&clearTimeout(qD);let n=JSON.parse(JSON.stringify(e)),r=Array.from(t);qD=setTimeout(()=>{qD=null,F(UD,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({version:1,foldersMap:n,collapsedFolderIds:r,updatedAt:Date.now()})}).catch(()=>{})},WD)},rO=()=>{try{let e=KD.getItem(zD);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{}}},iO=()=>{try{let e=KD.getItem(BD);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}},aO=()=>{try{let e=KD.getItem(VD);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{}}},oO=()=>{try{let e=KD.getItem(HD);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{}}},sO=(e,t)=>{try{KD.setItem(VD,JSON.stringify(e)),KD.setItem(HD,JSON.stringify(t))}catch{}},cO=e=>{$D=e,clearTimeout(ZD),ZD=setTimeout(()=>{try{KD.setItem(zD,JSON.stringify(e)),$D=null}catch{}},300)},lO=e=>{eO=e,clearTimeout(QD),QD=setTimeout(()=>{try{KD.setItem(BD,JSON.stringify(Array.from(e))),eO=null}catch{}},300)};typeof window<`u`&&window.addEventListener(`beforeunload`,()=>{if($D!==null){clearTimeout(ZD);try{KD.setItem(zD,JSON.stringify($D))}catch{}$D=null}if(eO!==null){clearTimeout(QD);try{KD.setItem(BD,JSON.stringify(Array.from(eO)))}catch{}eO=null}});var uO=(e,t)=>{cO(e),lO(t),nO(e,t)},dO=()=>fe(),fO=(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},pO=(e,t)=>e.startsWith(GD)?t.filter(e=>e.sessionIds.length>0):t,mO=Oe()(je((e,t)=>({foldersMap:rO(),collapsedFolderIds:iO(),sessionOrderByScope:aO(),sessionOrderActivityByScope:oO(),getFoldersForScope:e=>e?t().foldersMap[e]??[]:[],createFolder:(n,r,i)=>{let a=r.trim()||`New folder`,o={id:dO(),name:a,sessionIds:[],createdAt:Date.now(),parentId:i??null},s=t().foldersMap,c=s[n]??[],l={...s,[n]:[...c,o]};return e({foldersMap:l}),uO(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}),uO(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}),uO(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}),uO(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=fO(o,l,t().collapsedFolderIds);e(d?{foldersMap:u,collapsedFolderIds:d}:{foldersMap:u}),uO(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=fO(o,u,t().collapsedFolderIds);e(f?{foldersMap:d,collapsedFolderIds:f}:{foldersMap:d}),uO(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=fO(a,c,t().collapsedFolderIds);e(u?{foldersMap:l,collapsedFolderIds:u}:{foldersMap:l}),uO(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=fO(a,s,t().collapsedFolderIds);e(l?{foldersMap:c,collapsedFolderIds:l}:{foldersMap:c}),uO(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}),uO(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=pO(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=fO(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:_}),uO(m,h??t().collapsedFolderIds),sO(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=RD(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}),sO(y,b)}}),{name:`session-folders-store`})),hO=async()=>{if(JD||YD||typeof window>`u`)return;if(tO()){JD=!0;return}YD=!0;let e=XD;try{let t=await F(UD).catch(()=>null);if(e!==XD||!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!==XD||!(Object.keys(r).length>0||i.size>0))return;mO.setState({foldersMap:r,collapsedFolderIds:i}),cO(r),lO(i)}catch{}finally{e===XD&&(YD=!1,JD=!0)}},gO=()=>{typeof window>`u`||hO()},_O=()=>{XD+=1,JD=!1,YD=!1,$D=null,eO=null,ZD&&=(clearTimeout(ZD),void 0),QD&&=(clearTimeout(QD),void 0),mO.setState({foldersMap:rO(),collapsedFolderIds:iO(),sessionOrderByScope:aO(),sessionOrderActivityByScope:oO()}),hO()};typeof window<`u`&&n(e=>{p(e)&&_O()}),gO();var vO=new Map,yO=()=>{let e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}},bO=()=>`worktree_${Date.now()}_${Math.random().toString(36).slice(2,8)}`,xO=()=>{let e=bO();return vO.set(e,yO()),e},SO=(e,t)=>{let n=vO.get(e);n&&(vO.delete(e),n.resolve(t))},CO=(e,t)=>{let n=vO.get(e);n&&(vO.delete(e),n.reject(t))},wO=e=>{let t=vO.get(e);return t?t.promise:Promise.reject(Error(`Pending worktree request not found`))},TO=3e5,EO=5e3,DO=e=>e.replace(/\\/g,`/`).replace(/\/+$/,``)||e,OO=new Map,kO=new Map,AO=new Map,jO=new Map,MO=new Set,NO=null,PO=!1,FO=e=>DO(e),IO=e=>jO.get(e)??0,LO=e=>{let t=IO(e)+1;return jO.set(e,t),t},RO=async e=>{let t=Te()?.git;return t?.worktree?.bootstrapStatus?t.worktree.bootstrapStatus(e):t?.getGitWorktreeBootstrapStatus?t.getGitWorktreeBootstrapStatus(e):ze(e)},zO=(e,t)=>{for(let n of MO)try{n(e,t)}catch{}},BO=e=>(MO.add(e),()=>{MO.delete(e)}),VO=(e,t)=>{let n=FO(e);if(!n)return!1;let r=OO.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:(OO.set(n,t),t.status!==`pending`&&kO.delete(n),zO(n,t),!0)},HO=(e,t)=>{let n=FO(e);if(!n)return!1;let r=t.status===`pending`||t.status===`ready`||t.status===`failed`?t.status:null;return r?VO(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},UO=()=>{NO||=Kt(e=>{e.type===`worktree-bootstrap-status`&&HO(e.directory,e)}),!(typeof window>`u`||PO)&&(PO=!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&&HO(r,{status:n.status,error:typeof n.error==`string`?n.error:null,updatedAt:typeof n.updatedAt==`number`?n.updatedAt:Date.now()})})))},WO=e=>{let t=FO(e);t&&(UO(),VO(t,{status:`pending`,error:null,updatedAt:Date.now()}))},GO=e=>{let t=FO(e);if(!t)return;LO(t);let n=AO.get(t);n&&(n.cancelled=!0,n.disposeSettlement?.(),n.disposeSettlement=null,AO.delete(t));let r=kO.get(t);r&&(r.dispose(),kO.delete(t)),OO.delete(t)},KO=e=>{let t=FO(e);return t?OO.get(t)??null:null},qO=(e,t)=>{let n=ft.getState().dictionary;return pt(n,e,t)},JO=e=>({status:`failed`,error:e,updatedAt:Date.now()}),YO=(e,t,n)=>{let r=JO(t);return VO(e,r),n?.(r),r},XO=async(e,t=()=>!0)=>{try{let n=await RO(e);return t()?VO(e,n)?n:KO(e):null}catch{return null}},ZO=(e,t,n=EO)=>{let r=FO(e),i=IO(r);UO();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,XO(e,()=>!a&&IO(r)===i).finally(()=>{c=!1}))},Number.isFinite(n)?Math.max(1,n):EO))},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=BO((e,t)=>{FO(e)===r&&d(t)}),o=setTimeout(()=>{s(()=>{let t=YO(e,qO(`worktree.bootstrap.toast.timeoutDescription`));i(Error(t.error||`Timed out waiting for worktree bootstrap`))})},Math.max(0,t)),d(OO.get(r))});return h.catch(()=>void 0),{promise:h,startCompensation:p,dispose:()=>m(Error(`Worktree bootstrap wait cancelled`))}},QO=async(e,t,n,r,i,a)=>{let o=FO(e),s=ZO(e,n,r);t.disposeSettlement=s.dispose;let c=await XO(e,()=>!t.cancelled&&AO.get(o)===t&&IO(o)===t.epoch);if(t.cancelled||AO.get(o)!==t){s.dispose();return}if(c?.status===`ready`){s.dispose(),a?.(c);return}if(c?.status===`failed`){s.dispose(),i?.(c),tE.error(qO(`worktree.bootstrap.toast.failed`),{description:c.error||qO(`worktree.bootstrap.toast.failedDescription`)});return}s.startCompensation();try{let e=await s.promise;if(t.cancelled||AO.get(o)!==t)return;a?.(e)}catch(n){if(t.cancelled||AO.get(o)!==t)return;let r=KO(e);if(r?.status===`failed`){i?.(r),tE.error(qO(`worktree.bootstrap.toast.failed`),{description:r.error||qO(`worktree.bootstrap.toast.failedDescription`)});return}let a=YO(e,n instanceof Error?n.message:String(n),i);tE.error(qO(`worktree.bootstrap.toast.failed`),{description:a.error||qO(`worktree.bootstrap.toast.failedDescription`)})}},$O=(e,t)=>{let n=FO(e);if(!n||OO.get(n)?.status!==`pending`||AO.has(n))return;let r={cancelled:!1,epoch:IO(n),promise:Promise.resolve(),disposeSettlement:null};r.promise=QO(e,r,t?.timeoutMs??TO,t?.pollIntervalMs??EO,t?.onFailed,t?.onReady).finally(()=>{AO.get(n)===r&&AO.delete(n)}),AO.set(n,r)},ek=async(e,t=TO)=>{let n=FO(e);if(!n)return;let r=OO.get(n);if(!r||r.status===`ready`)return;if(r.status===`failed`)throw Error(r.error||`Worktree bootstrap failed`);let i=kO.get(n);if(i)return i.promise;let a=()=>{},o=IO(n),s=(async()=>{let r=ZO(e,t,EO);a=r.dispose;let i=await XO(e,()=>IO(n)===o);if(IO(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(()=>{kO.get(n)?.promise===s&&kO.delete(n)});return kO.set(n,{promise:s,dispose:()=>a()}),s},tk=`openchamber.json`,nk=`.openchamber`,rk=[`.config`,`openchamber`,`projects`];function ik(){let e=Te();return e?.files?e.files:null}var ak=80,ok=4e3,sk=2e3,ck=300,lk=new Set([`macos`,`linux`,`windows`]),uk=e=>{if(!e)return``;let t=e.replace(/\\/g,`/`);return t===`/`?`/`:t.replace(/\/+$/,``)},dk=(e,t)=>{let n=uk(e),r=t.replace(/\\/g,`/`).replace(/^\/+/,``).replace(/\/+$/,``);return!n||n===`/`?`/${r}`:`${n}/${r}`},fk=e=>dk(dk(e,nk),tk),pk=()=>{let e=`/api`;return e.startsWith(`/`),e},mk=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}}},hk=async e=>{let t=ik();if(t?.createDirectory)try{if((await t.createDirectory(e))?.success)return!0}catch{}return!!(await mk(`${pk()}/fs/mkdir`,{path:e})).ok},gk=async e=>{let t=ik();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(`${pk()}/fs/read?path=${encodeURIComponent(e)}`,{cache:`no-store`});return t.ok?await t.text():null}catch{return null}},_k=async(e,t)=>{let n=ik();if(n?.writeFile)try{if((await n.writeFile(e,t))?.success)return!0}catch{}return!!(await mk(`${pk()}/fs/write`,{path:e,content:t})).ok},vk=async()=>{try{let e=await F(`${pk()}/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 uk(n)}catch{}if(!v()){let e=await De().catch(()=>null);if(e&&e.trim().length>0)return uk(e)}return null},yk=async()=>{let e=await vk();return e?rk.reduce((e,t)=>dk(e,t),e):null},bk=e=>{let t=typeof e?.path==`string`?e.path.trim():``,n=t?uk(t):``;return n&&xe(n)||null},xk=async e=>{let t=await yk();if(!t)return null;let n=bk(e);return n?dk(t,`${n}.json`):null},Sk=(e,t)=>e.length<=t?e:e.slice(0,t),Ck=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();!lk.has(e)||n.has(e)||(n.add(e),t.push(e))}return t},wk=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=Sk(typeof e.name==`string`?e.name.trim():``,ak),o=Sk(typeof e.command==`string`?e.command.trim():``,ok);if(!i||!a||!o||n.has(i))continue;n.add(i);let s=typeof e.icon==`string`?e.icon.trim():``,c=Ck(e.platforms),l=e.autoOpenUrl===!0,u=Sk(typeof e.openUrl==`string`?e.openUrl.trim():``,sk),d=Sk(typeof e.desktopOpenSshForward==`string`?e.desktopOpenSshForward.trim():``,ck);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},Tk=e=>{let t=wk(e?.actions),n=typeof e?.primaryActionId==`string`?e.primaryActionId.trim():``;return{actions:t,primaryActionId:n&&t.some(e=>e.id===n)?n:null}};async function Ek(e){let t=typeof e?.path==`string`?e.path.trim():``;if(!t)return null;let n=await xk(e),r=async e=>{let t=await gk(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(fk(t)));if(!a)return null;try{await Dk(e,a)&&await Rk(t)}catch{}return a}async function Dk(e,t){let n=typeof e?.path==`string`?e.path.trim():``;if(!n)return!1;let r=await yk(),i=await xk(e);if(!r||!i)return!1;try{if(!await hk(r))return!1;let e=await gk(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 _k(i,JSON.stringify({...a,...t,...o,projectPath:uk(n)},null,2))}catch(e){return console.error(`Failed to write openchamber config:`,e),!1}}async function Ok(e,t){return Dk(e,{...await Ek(e)||{},...t})}async function kk(e){return(await Ek(e))?.[`setup-worktree`]??[]}async function Ak(e,t){return Ok(e,{"setup-worktree":t.filter(e=>e.trim().length>0)})}async function jk(e){return(await Ek(e))?.[`setup-worktree-wait`]===!0}async function Mk(e,t){return Ok(e,{"setup-worktree-wait":t})}async function Nk(e){let t=await Ek(e);return Ce(t?.draftStarters)}async function Pk(e,t){return Ok(e,{draftStarters:Ce(t)})}async function Fk(e){let t=await Ek(e);return Tk({actions:t?.projectActions,primaryActionId:t?.projectActionsPrimaryId})}async function Ik(e,t){let n=Tk({actions:t.actions,primaryActionId:t.primaryActionId});return Ok(e,{projectActions:n.actions,projectActionsPrimaryId:n.primaryActionId??void 0})}function Lk(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 Rk(e){let t=fk(e),n=ik();if(n?.delete)try{await n.delete(t);return}catch{}try{await mk(`${pk()}/fs/delete`,{path:t})}catch{}}var zk=e=>typeof e==`number`&&Number.isFinite(e)?e:0,Bk=e=>zk(e.input)+zk(e.output)+zk(e.reasoning)+zk(e.cache?.read)+zk(e.cache?.write),Vk=e=>e?.type===`compaction`,Hk=e=>!!e&&e.some(Vk),Uk=(e,t)=>{for(let n=e.length-1;n>=0;--n){let r=e[n];if(r.role!==`assistant`){if(r.id&&Hk(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,Gk=2592e6;function Kk(e){let t=Date.now()-Gk,n=e.filter(e=>e.time>=t);return n.length<=Wk?n:n.slice(n.length-Wk)}function qk(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 Jk=Oe((e,t)=>({list:[],index:{session:{unseenCount:{},unseenHasError:{}},project:{unseenCount:{},unseenHasError:{}}},append:n=>{let r=t().list,i=Kk([...r,n]);e({list:i,index:qk(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:qk(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:qk(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 Yk(e){Jk.getState().append(e)}function Xk(e){Jk.getState().markSessionViewed(e)}function Zk(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),Jk(n)}var Qk=/^(.*)\.(\d+)$/,$k=[`session.next.step.`,`session.next.text.`,`session.next.reasoning.`,`session.next.tool.`,`session.next.shell.`,`session.next.compaction.`],eA=new Set([`session.next.step.ended`,`session.next.step.failed`]);function tA(e){return Qk.exec(e)?.[1]??e}function nA(e){return!e||typeof e!=`object`||Array.isArray(e)?null:e}function rA(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 iA(e){let t=nA(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 aA(e){let t=nA(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 oA(e){let t=nA(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`&&!aA(e)?{directory:t.directory}:{}}}return e}function sA(e,t){if(e===`session.status`){let e=rA(t),n=t.status;if(e&&n&&typeof n==`object`)return{sessionID:e,status:n}}return t}function cA(e,t){let n=rA(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`}}:eA.has(e)?{domainActivityHint:{sessionID:n,kind:`terminal`}}:$k.some(t=>e.startsWith(t))||e.startsWith(`session.next.`)?{domainActivityHint:{sessionID:n,kind:`activity`}}:{}:{}}function lA(e){let t=nA(oA(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(iA(t))return{action:`drop`,reason:`sync-duplicate`};let r=tA(n),i=nA(t.data),a=nA(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:aA(t)}}:{action:`drop`,reason:`invalid`};let s=sA(r,o),c=aA(t)??aA(o)??(()=>{let e=nA(s.info);return typeof e?.directory==`string`?e.directory:void 0})(),l=cA(r,s);return{action:`emit`,event:{id:typeof t.id==`string`?t.id:void 0,type:r,properties:s,locationDirectory:c,...l}}}function uA(e){return{...e.id?{id:e.id}:{},type:e.type,properties:e.properties}}var dA=33,fA=200,pA=1e4,mA=8,hA=250,gA=3e4,_A=6e4,vA=2,yA=2e3,bA=8e3,xA=250,SA=5e3,CA=6e4,wA=8,TA=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},EA=e=>{if(!e||typeof e!=`object`)return{status:`unusable`};let t=TA(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=lA(e);return n.action===`drop`?n.reason===`sync-duplicate`?{status:`declined`}:{status:`unusable`}:{status:`event`,event:uA(n.event),normalized:n.event}};function DA(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 OA(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 kA(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 o().websocket(`${n}global/event/ws`,e&&e.length>0?{lastEventId:e}:void 0)}function AA(e){let t=kA(e);return Be(t)}function jA(e){let{sdk:t,onEvent:n,onFlushStart:r,onFlushEnd:i,onNormalizedEvent:a,onReconnect:o,onCompensation:c,onRecoveryContextCaptured:d,onDisconnect:f,onTransportActivity:p,onTransportSwitch:m,routeDirectory:g,transport:_=`auto`,heartbeatTimeoutMs:v=gA,reconnectDelayMs:y=hA,wsReadyTimeoutMs:b}=e,x=b??(u()?bA:yA),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?fA:dA)-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 CA;let t=ae()?CA:SA,n=Math.min(e-1,wA);return Math.min(t,xA*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:h(),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;c?.({lastEventId:e?.lastEventId??(w&&w.length>0?w:null),disconnectedAt:e?.disconnectedAt??null,runtimeGeneration:e?.runtimeGeneration??h(),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=g?.(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=OA(t);if(!n)return`unusable`;let r=EA(n);if(r.status!==`event`)return r.status===`declined`?`declined`:`unusable`;let i=DA(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<mA)&&(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 l()}catch(e){let t=e instanceof Error?e:Error(`Message stream WebSocket auth token unavailable`);throw _===`auto`&&(T=Date.now()+_A,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=AA(w),c=(e,t=!1)=>{(t||!i)&&_===`auto`&&(T=Date.now()+_A,e.code=`WS_FALLBACK`)},l=setTimeout(()=>{l=void 0;let e=Error(`Message stream WebSocket ready timeout`);c(e),f(e);try{o.close()}catch{}},x),u=()=>{l&&=(clearTimeout(l),void 0),o.onopen=null,o.onmessage=null,o.onerror=null,o.onclose=null},d=()=>{r||(r=!0,e.removeEventListener(`abort`,p),u(),t())},f=t=>{r||(r=!0,e.removeEventListener(`abort`,p),u(),n(t))},p=()=>{try{o.close()}catch{}d()};e.addEventListener(`abort`,p,{once:!0}),o.onopen=()=>{};let m=e=>{_===`auto`&&(T=Date.now()+_A);let t=Error(`Message stream WebSocket invalid frame`);t.reason=e,f(t);try{o.close()}catch{}};o.onmessage=e=>{let t=null;try{t=JSON.parse(String(e.data))}catch{m(`ws_invalid_frame:json`);return}if(!t||typeof t.type!=`string`){m(`ws_invalid_frame:type`);return}if(t.type===`ready`){xe(),i=!0,a=Date.now(),l&&=(clearTimeout(l),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`}`,c(e),f(e);try{o.close()}catch{}return}if(t.type===`backpressure`){xe(),he=Date.now()+pA;return}if(t.type!==`event`){m(`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>=vA&&(w=n,E=void 0,D=0)),m(`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){d();return}let n=Error(`Global message stream WebSocket closed`);n.reason=i?`ws_closed:code=${t?.code??`?`}`:`ws_closed_before_ready`,i||s();let r=a>0?Date.now()-a:0;c(n,i&&r>0&&r<2e3),f(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)?CA: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 MA(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 NA(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],e.session_error_at&&delete e.session_error_at[t],delete e.permission[t],delete e.question[t]}function PA(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 FA=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},IA=(e,t)=>e?FA(t)<FA(e):!1;function LA(e,t,n){return e.session_error_at?.[t]!==n&&(e.session_error_at={...e.session_error_at,[t]:n},!0)}function RA(e,t){if(e.session_error_at?.[t]===void 0)return!1;let n={...e.session_error_at};return delete n[t],e.session_error_at=n,!0}function zA(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 BA(e){return e.type===`global.disposed`||e.type===`server.connected`?{type:`refresh`}:e.type===`project.updated`?{type:`project`,project:e.properties}:null}function VA(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 HA(e,t,n){t&&(n?.(t,void 0),NA(e,[t]))}var UA=e=>e.title===`smartfetch-secondary`;function WA(e,t,n,r){return n.found?(e.session.splice(n.index,1),UA(t)&&HA(e,t.id,r),t.parentID||(e.sessionTotal=Math.max(0,e.sessionTotal-1)),!0):!1}function GA(e,t,n){switch(t.type){case`server.instance.disposed`:return n?.onRefresh?.(``),!1;case`session.created`:{let r=ap(t.properties.info),i=e.session,a=ls.search(i,r.id,e=>e.id);return fp(r)?a.found&&IA(i[a.index],r)?!1:(a.found?i[a.index]=r:(i.splice(a.index,0,r),KA(e),r.parentID||(e.sessionTotal+=1)),!0):WA(e,r,a,n?.onSetSessionTodo)}case`session.updated`:{let r=ap(t.properties.info),i=e.session,a=ls.search(i,r.id,e=>e.id);return a.found&&IA(i[a.index],r)?!1:!fp(r)||r.time.archived?WA(e,r,a,n?.onSetSessionTodo):(a.found?i[a.index]=r:(i.splice(a.index,0,r),KA(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),HA(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]=rp(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;r.status.type===`idle`&&n?.onServerSessionIdle?.(r.sessionID);let i=!1;return(r.status.type===`busy`||r.status.type===`retry`)&&(i=RA(e,r.sessionID)),n?.now&&(e.session_status_observed_at[r.sessionID]=n.now()),zA(e.session_status[r.sessionID],r.status)?!!n?.now||i:(e.session_status[r.sessionID]=r.status,!0)}case`session.idle`:{let r=t.properties;n?.onServerSessionIdle?.(r.sessionID);let i={type:`idle`};return n?.now&&(e.session_status_observed_at[r.sessionID]=n.now()),zA(e.session_status[r.sessionID],i)?!!n?.now:(e.session_status[r.sessionID]=i,!0)}case`session.error`:{let r=t.properties;n?.onServerSessionIdle?.(r.sessionID);let i={type:`idle`},a=n?.now?.();a!==void 0&&(e.session_status_observed_at[r.sessionID]=a);let o=a!==void 0&&LA(e,r.sessionID,a);return zA(e.session_status[r.sessionID],i)?a!==void 0||o:(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 KA(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 qA=Oe()(e=>({...cl,actions:{set:t=>e(t),reset:()=>e(cl)}}));function JA(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 YA(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 XA(e){return!(!e.directory||!e.hasStore||e.pinned||e.booting||e.loadingSessions||e.hasPendingBlockingRequests)}function ZA(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 QA(e){let t=e.slice(0,12).replace(/[^a-zA-Z0-9]/g,`_`);return`oc.dir.${ZA(c().trim()||`default`)}.${t}.${ZA(e)}`}function $A(e,t){return`${QA(e)}.${t}`}function ej(e,t){try{let n=localStorage.getItem($A(e,t));return n?JSON.parse(n):void 0}catch{return}}function tj(e,t,n){try{let r=$A(e,t);n===void 0?localStorage.removeItem(r):localStorage.setItem(r,JSON.stringify(n))}catch{}}function nj(e){return{vcs:ej(e,`vcs`),projectMeta:ej(e,`projectMeta`),icon:ej(e,`icon`)}}function rj(e){try{localStorage.removeItem(`${QA(e)}.sessions`)}catch{}}function ij(e,t){tj(e,`vcs`,t)}function aj(e,t){tj(e,`projectMeta`,t)}function oj(e,t){tj(e,`icon`,t)}function sj(e){let t=nj(e);rj(e);let n=Oe()(e=>({...sl,vcs:t.vcs??sl.vcs,projectMeta:t.projectMeta??sl.projectMeta,icon:t.icon??sl.icon,patch:t=>e(t),replace:t=>e(t)}));return n.subscribe((t,n)=>{t.vcs!==n.vcs&&ij(e,t.vcs),t.projectMeta!==n.projectMeta&&aj(e,t.projectMeta),t.icon!==n.icon&&oj(e,t.icon)}),n}var cj=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=sj(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(!XA({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=YA({stores:t,state:this.lifecycle,pins:new Set(t.filter(e=>this.pinned(e))),max:30,ttl:ol,graceMs:al,now:Date.now(),hasPendingBlockingRequests:e=>this.hasPendingBlockingRequestsForDirectory(e)}).filter(t=>t!==e);for(let e of n)this.disposeDirectory(e)}hasPendingBlockingRequestsForDirectory(e){return JA(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()}}},lj=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},uj=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(`|`)},dj=e=>{switch(e?.type){case`retry`:return 4;case`busy`:return 3;case`idle`:return 1;default:return 0}},fj=e=>{let t=e?.message;return typeof t==`string`?t:null},pj=(e,t)=>{let n=e?.[t];return typeof n==`number`?n:null},mj=(e,t)=>e?.type===t?.type&&fj(e)===fj(t)&&pj(e,`attempt`)===pj(t,`attempt`)&&pj(e,`next`)===pj(t,`next`),hj=(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?lj(r):-1}},gj=(e,t)=>e?t.sessionUpdatedAt===e.sessionUpdatedAt?dj(t.status)>=dj(e.status):t.sessionUpdatedAt>e.sessionUpdatedAt:!0,_j=(e,t)=>{if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(uj(e[n])!==uj(t[n]))return!1;return!0},vj=(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(!mj(n,i))return!1}return!0};function yj(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||!fp(e))continue;let r=n.get(e.id);(!r||lj(e)>=lj(r))&&n.set(e.id,e)}return Array.from(n.values()).sort((e,t)=>lj(t)-lj(e))}function bj(e){let t=new Map;for(let n of e)for(let e of Object.keys(n.session_status??{})){let r=hj(n,e);r&&gj(t.get(e),r)&&t.set(e,r)}let n={};for(let[e,r]of t)n[e]=r.status;return n}function xj(e,t){if(!t)return;let n;for(let r of e){let e=r.session.find(e=>e.id===t);e&&(!n||lj(e)>=lj(n))&&(n=e)}return n}function Sj(e,t){if(!t)return;let n;for(let r of e){let e=hj(r,t);e&&gj(n,e)&&(n=e)}return n?.status}var Cj=(e,t)=>e<t?-1:+(e>t);function wj(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 Tj=e=>!e||e.length===0?``:e.map(e=>e.id).sort(Cj).join(`|`);function Ej(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 Dj(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 kj(e,t){let n=await Promise.allSettled([Zf(()=>e.path.get().then(e=>t({path:wj(e,`path.get`)}))),Zf(()=>e.global.config.get().then(e=>t({config:wj(e,`global.config.get`)}))),Zf(()=>e.project.list().then(e=>{t({projects:wj(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 Aj(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}),Od(t,e)}s&&i({status:`partial`});let l=await Promise.allSettled([c?Promise.resolve():Zf(()=>n.project.current().then(e=>i({project:wj(e,`project.current`).id}))),Zf(()=>n.config.get().then(e=>{let n=wj(e,`config.get`);i({config:n}),Od(t,n)})),Zf(()=>n.path.get().then(e=>{let n=wj(e,`path.get`);i({path:n});let r=Oj(n?.directory??t,a.projects);r&&i({project:r})})),Zf(async()=>{let e=Date.now(),a=r().session_status,o=wj(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:Dj(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([Zf(()=>n.mcp.status().then(e=>i({mcp:wj(e,`mcp.status`)}))),Zf(()=>n.lsp.status().then(e=>i({lsp:wj(e,`lsp.status`)}))),Zf(()=>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})})),Zf(async()=>{let e=r(),a=new Map(Object.entries(e.question??{}).map(([e,t])=>[e,Tj(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=Ej((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)??``;Tj(c.question[e])===t&&delete l[e]}i({question:l})}),Zf(async()=>{let e=r(),a=new Map(Object.entries(e.permission??{}).map(([e,t])=>[e,Tj(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=Ej((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)??``;Tj(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 jj=Oe()(()=>({streamingMessageIds:new Map,messageStreamStates:new Map}));function Mj(){jj.setState({streamingMessageIds:new Map,messageStreamStates:new Map})}var Nj=1e3;function Pj(e,t){let n=Date.now(),r=jj.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(W(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>=Nj&&(s.set(r.id,{...a,lastUpdateAt:n}),c=!0)}for(let[e,t]of i)t&&(l.has(e)||u(e,t));c&&jj.setState({streamingMessageIds:o,messageStreamStates:s})}function Fj(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 Ij(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 Lj=new Set,Rj=(e,t)=>`${e}\n${t}`;function zj(e,t){!e||e===`global`||!t||Lj.add(Rj(e,t))}function Bj(e,t){let n=Rj(e,t);return Lj.has(n)?(Lj.delete(n),!0):!1}var Vj=(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=ap(i),o=typeof t==`string`&&t!==`global`?t.trim():``,s=a.directory;return!o||typeof s==`string`&&s.trim()?a:{...a,directory:o}},Hj=e=>{let t=Y.getState();return[...t.activeSessions,...t.archivedSessions].find(t=>t.id===e)??null},Uj=e=>{let t=e;return JSON.stringify([e.title??``,e.time?.archived??0,e.share?.url??``,t.directory??``,t.parentID??``,t.hasChildren??!1])},Wj=(e,t)=>{if(e.type===`session.created`||e.type===`session.updated`){let n=Vj(e,t);if(n){let e=Hj(n.id);(!e||Uj(e)!==Uj(n))&&!IA(e,n)&&Y.getState().upsertSession(n)}return}if(e.type===`session.deleted`){let t=e.properties?.sessionID??Vj(e)?.id;t&&Y.getState().removeSessions([t])}};function Gj(e){return Object.entries(e.session_status??{}).filter(([,e])=>e&&e.type!==`idle`).map(([e])=>e)}function Kj(e,t){let n=t?.viewedSession;return!n?.sessionId||n.directory!==t?.directory?[]:[n.sessionId]}function qj(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 Jj=e=>{let t=new Map;for(let n of e)t.set(n.id,n);return t},Yj=(e,t,n)=>{let r=n??Jj(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},Xj=e=>{let{autoAccept:t,sessions:n,sessionById:r,sessionID:i}=e;if(Object.keys(t).length===0)return!1;let a=Yj(i,n,r);for(let e of a)if(Object.prototype.hasOwnProperty.call(t,e))return t[e]===!0;return!1},Zj=t({usePermissionStore:()=>tM}),Qj=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}},$j=async(e,t)=>Qj(await F(e,t)),eM=(e,t,n)=>Xj({autoAccept:e,sessions:[],sessionById:t,sessionID:n}),tM=Oe()(ke((e,t)=>({autoAccept:{},loaded:!1,saving:!1,hydrate:async()=>{let n=await $j(`/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 $j(`/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&&eM(n,jd(),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 $j(`/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:g(),partialize:e=>({autoAccept:e.autoAccept})})),nM=Oe(()=>({statusById:new Map})),rM=e=>e===`busy`?`busy`:e===`retry`?`retry`:`idle`,iM=e=>Yo(e)??e,aM=(e,t,n)=>{nM.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}})},oM=(e,t)=>{switch(t.type){case`session.status`:{let n=t.properties;if(typeof n?.sessionID!=`string`||!n.sessionID)return;let r=rM(n.status?.type);aM(n.sessionID,iM(e),r);return}case`session.idle`:case`session.error`:{let n=t.properties;typeof n?.sessionID==`string`&&n.sessionID&&aM(n.sessionID,iM(e),`idle`);return}default:return}},sM=(e,t,n)=>{let r=iM(e),i=new Set(n??[]);nM.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=rM(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})},cM=e=>typeof e==`string`&&e.trim().length>0;function lM(e){let t=e.trim();return t.length<=18?t:`${t.slice(0,10)}…${t.slice(-4)}`}function uM(e,t){return pt(ft.getState().dictionary,e,t)}function dM(e,t=`missing-directory`){let n=cM(e)?lM(e):null;if(t===`missing-session-id`||!n){tE.error(uM(`sessions.toast.openFailedMissingSessionId`));return}if(t===`missing-directory`){tE.error(uM(`sessions.toast.openFailedMissingDirectory`,{sessionId:n}));return}tE.error(uM(`sessions.toast.openFailed`,{sessionId:n}))}function fM(e,t,n={}){let r=n.notify!==!1;if(!cM(e))return r&&dM(null,`missing-session-id`),{ok:!1,reason:`missing-session-id`,sessionId:null};if(!cM(t))return r&&dM(e,`missing-directory`),{ok:!1,reason:`missing-directory`,sessionId:e.trim()};let i=e.trim(),a=t.trim();return n.phoneShell&&!Ke()?(FW.getState().openSession({sessionId:i,directory:a}),{ok:!0,sessionId:i,directory:a}):n.switchToChat!==!1&&!m.getState().setActiveMainTab(`chat`)?(r&&dM(i,`tab-switch-blocked`),{ok:!1,reason:`tab-switch-blocked`,sessionId:i}):($.getState().setCurrentSession(i,a),{ok:!0,sessionId:i,directory:a})}var pM=null,mM=e=>{pM=e},hM=(e,t)=>typeof pM==`function`&&typeof e==`string`&&e.trim()&&typeof t==`string`&&t.trim()?(pM(e.trim(),t.trim()),{ok:!0,sessionId:e.trim(),directory:t.trim()}):fM(e,t,{switchToChat:!0}),gM=(e,t)=>!e||!t?null:`${e}:${t}`,_M=({permission:e,directory:t,isViewed:n,pendingIds:r,show:i,openSession:a})=>{let o=gM(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},vM=15e3,yM=new Map,bM=(e,t)=>`${e}\n${t}`;function xM(e){if(!e.runtimeKey||!e.directory||!e.sessionId||!e.status||e.status.type===`idle`)return;let t=Date.now();for(let[e,n]of yM)n.expiresAt<=t&&yM.delete(e);yM.set(bM(e.runtimeKey,e.directory),{runtimeKey:e.runtimeKey,directory:e.directory,sessionId:e.sessionId,status:e.status,expiresAt:Date.now()+vM})}function SM(e,t){let n=yM.get(bM(e,t));return n?n.expiresAt<=Date.now()?(yM.delete(bM(e,t)),null):n:null}var CM=[],wM=[],TM=[],EM={sessionID:``,revertMessageID:void 0,records:wM,history:TM},DM=e=>{if(e?.type!==`text`)return``;let t=e.text;return typeof t==`string`?t:``},OM=e=>{for(let t of e){let e=DM(t);if(e.length>0)return e}return``},kM=(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},AM=(e,t=EM)=>{let n=e.sessionID;if(!n)return EM;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:wM,history:TM};if(t.sessionID===n&&t.revertMessageID===i&&kM(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 jM(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 MM(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 NM(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 PM(e,t,n){if(!e)return null;let r=t?.id===e?t:null,i=n?.id===e?n:null;return r??i}function FM(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 IM=Me(),LM=`__openchamber_sync_context__`,RM=globalThis,zM=RM[LM]??(0,G.createContext)(null);RM[LM]=zM;function BM(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 VM(e,t){if(!e.error)return e.data;let n=e.response?.status;throw Error(`${t} failed${n?` (${n})`:``}: ${BM(e.error)}`)}function HM(){let e=(0,G.useContext)(zM);if(!e)throw Error(`useSyncSystem must be used within <SyncProvider>`);return e}function UM(e){return Array.from(e.children.values(),e=>e.getState())}function WM(e,t,n){let r=(0,V.c)(7),i=t===void 0?Object.is:t,{childStores:a}=HM(),o=(0,G.useRef)(void 0),s=(0,G.useRef)(!1),c;r[0]!==a||r[1]!==i||r[2]!==e?(c=()=>{let t=e(UM(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],G.useSyncExternalStore(u,l,l)}function GM(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),WM(n,Object.is,r)}function KM(e){let t=(0,V.c)(5),n=GM(e),r;t[0]===e?r=t[1]:(r=t=>t.statusById.get(e)?.status,t[0]=e,t[1]=r);let i=nM(r),a;return t[2]!==i||t[3]!==n?(a=qM(n,i),t[2]=i,t[3]=n,t[4]=a):a=t[4],a}function qM(e,t){if(e)return e;if(t===`busy`)return{type:`busy`};if(t===`retry`)return{type:`retry`,attempt:0,message:``,next:0}}var JM=[],YM={};function XM(e){let t=(0,V.c)(4),n=e?.enabled??!0,r;t[0]===n?r=t[1]:(r=e=>n?bj(e):YM,t[0]=n,t[1]=r);let i;return t[2]===n?i=t[3]:(i=(e,t)=>n?e.subscribeAllSelected(ZM,t):QM,t[2]=n,t[3]=i),WM(r,vj,i)}function ZM(e){return e.session_status}function QM(){}function $M(e){let t=(0,V.c)(5),n=e?.enabled??!0,r=Y(nN),i;t[0]!==n||t[1]!==r?(i=e=>n?yj(e,r):JM,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(eN,t):tN,t[3]=n,t[4]=a),WM(i,_j,a)}function eN(e){return e.session}function tN(){}function nN(e){return e.pendingDeletionIds}var rN=!1,iN=0,aN=0,oN=1500,sN=new Set([`patch`,`step-start`,`step-finish`]),cN=5e3,lN=4e4,uN=15e3,dN=6e4,fN=6e4,pN=e=>!e||e.length===0?``:e.map(e=>e.id).sort(mN).join(`|`),mN=(e,t)=>e<t?-1:+(e>t),hN=e=>JSON.stringify(e);function gN(e,t){return hN(e)===hN(t)}var _N=5e3,vN=new Map,yN=(e,t)=>`${e}:${t}`;function bN(e,t){try{let n=H();return n?El(n.getTranscript(W(e,t))):!1}catch{return!1}}async function xN(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=yN(e,t),a=vN.get(i);if(a&&Date.now()-a.enqueuedAt<_N){Promise.resolve().then(()=>{bN(e,t)&&xN(e,t)});return}vN.set(i,{sessionID:t,directory:e,enqueuedAt:Date.now(),request:r}),Promise.resolve().then(async()=>{let a=n.getChild(e);if(!a){vN.delete(i);return}try{await wN(e,t,a,r)}catch{}finally{vN.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&&Dy(t,r)}t.domainActivityHint?.kind===`terminal`&&r===EN&&e===TN&&SN(e,r,n,{reason:`session-idle`})}}async function wN(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(W(e,t)).liveRevision}catch{return}},o=a(),s=await Ub({directory:e,sessionID:t,limit:sh(),signal:AbortSignal.timeout(3e4),purpose:`materialize`});if(r?.isStale?.())return`skipped`;let c=Gb({directory:e,sessionID:t,purpose:`materialize`,page:s,capturedLiveRevision:o,liveRevision:a(),skipPartTypes:sN});return bN(e,t)&&await xN(e,t),c.applied?(hx({directory:e,sessionID:t,store:n,isStale:r?.isStale}),s.records.length===0||i&&i.type!==`idle`&&!r?.isStale?.()&&await jy(e,n,[t]),`ready`):`skipped`}catch{return`error`}}var TN=``,EN=``,DN=null,ON=``,kN=``,AN=new Map,jN=15e3,MN=(e,t)=>`${e}\n${t}`;function NN(e=Date.now()){for(let[t,n]of AN.entries())n<=e&&AN.delete(t)}var PN=new Set,FN=new Set,IN=(e,t)=>!e||!t?null:`${e}:${t}`,LN=e=>{if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0},RN=(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)&&c()===`local`)return!0;let i=Te()?.notifications;return i?.notifyAgentCompletion&&i.notifyAgentCompletion({title:LN(r.title),body:LN(r.body),tag:LN(r.tag),kind:LN(r.kind),sessionId:LN(r.sessionId),directory:LN(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 zN(e,t){!e||!t||!DN||Bj(e,t)&&SN(e,t,DN,{reason:`session-idle`})}function BN(e){DN=e,e&&zN(TN,EN)}function VN(e,t){TN=e,EN=t,zN(e,t)}function HN(e,t,n){if(!e||!t)return;let r=MN(e,t);if(!n){AN.delete(r);return}AN.set(r,Date.now()+jN)}function UN(e,t){if(!e||!t){ON=``,kN=``;return}ON=e,kN=t}function WN(){let e=[],t=new Set,n=(n,r)=>{if(!n||!r)return;let i=MN(n,r);t.has(i)||(t.add(i),e.push({directory:n,sessionID:r}))};return n(ON,kN),n(TN,EN),e}function GN(){return typeof document<`u`&&document.hasFocus()}function KN(e,t){return t?TN&&EN&&e===TN&&t===EN&&GN()?!0:(NN(),AN.has(MN(e,t))):!1}function qN(){return rN||Date.now()-iN<oN}function JN(e){return!TN||!EN||e!==TN?null:{directory:TN,sessionId:EN}}function YN(e,t){return qj(t,{directory:e,viewedSession:JN(e)})}function XN(e,t,n,r=lN,i=uN){return!(e<=0||n-e<r||n-t<i)}function ZN({isViewed:e,status:t,lastTransportActivityAt:n,lastDomainActivityAt:r,lastFullResyncAt:i,now:a,transportStaleThresholdMs:o=lN,domainStaleThresholdMs:s=dN,recoveryCooldownMs:c=fN}){return!(!e||t?.type!==`busy`&&t?.type!==`retry`||n<=0||a-n>=o||r<=0||a-r<s||a-i<c)}var QN=v(),$N=(e,t)=>{!QN||typeof window>`u`||window.dispatchEvent(new CustomEvent(`openchamber:vscode-notification-event`,{detail:{directory:e,payload:t}}))},eP=()=>({sessionDirectoryById:new Map,messageSessionById:new Map,sessionMessageIdsById:new Map}),tP=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},nP=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},rP=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},iP=(e,t,n)=>{!t||!n||n===`global`||e.sessionDirectoryById.set(t,n)},aP=(e,t,n,r)=>{if(!t)return;iP(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)},oP=(e,t,n,r)=>{if(!t||!n)return;iP(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]))},sP=(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))},cP=(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)},lP=(e,t,n)=>{let r=new Set;for(let i of n.session)i?.id&&(r.add(i.id),iP(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),iP(e,a.scope.sessionID,t);let i=n?.getTranscript?.(W(t,a.scope.sessionID));if(i){let n=Gu(i);aP(e,a.scope.sessionID,t,n)}}}catch{}for(let[n,i]of e.sessionDirectoryById)i===t&&(r.has(n)||cP(e,n))},uP=(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 iP(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 iP(n,e,t),t}}catch{}return null},dP=(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()??U(t,r)).hasSession?.(W(t,n))??!1}catch{return!1}},fP=(e,t,n)=>{try{let e=H();if(e&&e.getParts(W(t,n),n).length>0)return!0}catch{}return!1},pP=e=>!TN||!EN?null:e.getChild(TN)?TN:null,mP=(e,t,n,r)=>{let i=tP(t),a=nP(n);if(a){if(i&&i!==`global`&&dP(r,i,a))return iP(e,a,i),i;let t=e.sessionDirectoryById.get(a);if(t&&r.getChild(t))return t;let n=uP(a,r,e);if(n)return n}let o=rP(n);if(o){if(i&&i!==`global`&&fP(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(fP(r,i,o))return i;for(let[e]of r.children)if(fP(r,e,o))return e;let n=pP(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},hP=(e,t,n,r)=>{if(e)return e;if(t){let e=r.messageSessionById.get(t);if(e)return e}if(n&&n===TN&&EN)return EN};function gP(e,t){let n=nP(e)??(e.type===`session.deleted`?e.properties.info?.id:void 0);if(n)return n;let r=rP(e);return r?t.get(r):void 0}function _P(e,t){return e===t}var vP=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`,yP=(e,t,n)=>{if(!t||t===`global`)return;let r=nP(n);switch(r&&iP(e,r,t),n.type){case`session.created`:case`session.updated`:{let r=n.properties.info;r?.id&&iP(e,r.id,t);return}case`session.deleted`:{let t=n.properties.sessionID;t&&cP(e,t);return}case`message.updated`:{let r=n.properties.info;r?.id&&r.sessionID&&oP(e,r.sessionID,r.id,t);return}case`message.removed`:{let t=n.properties;t.messageID&&sP(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&&oP(e,a,o,t);return}default:return}};async function bP(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,pN(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(!KN(e,t))for(let r of n){if(i.has(r.id))continue;let n=IN(t,r.id);if(!n||PN.has(n))continue;PN.add(n);let a=r.questions?.[0],o=a?.header?.trim()||`Input needed`,s=a?.question?.trim()||`Agent is waiting for your response`;tE.info(o,{id:`question-${n}`,description:s,action:{label:`Open session`,onClick:()=>hM(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)??``;pN(e.question[r])===i&&delete t[r]}return{question:t}})}catch{}try{let n=new Map(a.map(e=>[e,pN(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=tM.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 wC(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=KN(e,t);if(!a)for(let t of n)i.has(t.id)||_M({permission:t,directory:e,isViewed:a,pendingIds:FN,show:(e,t)=>tE.info(e,t),openSession:hM})}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)??``;pN(e.permission[r])===i&&delete t[r]}return{permission:t}})}catch{}}}function xP(e,t,n){n?.statusOnly}function SP(e){return e.isFirstConnect&&!e.disconnectedBeforeFirstConnect}function CP(e){return{resyncBlockingRequests:!0,ingestRoutingIndex:!e?.statusOnly}}async function wP(e,t,n,r,i,a){let o=YN(e,t.getState());await jy(e,t,o);let s=Kj(YN(e,t.getState()),{directory:e,viewedSession:JN(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 Zf(async()=>{let e=await a.session.get({sessionID:o});return VM(e,`session.get`),e}).catch(()=>null))?.data;if(c&&_P(s,i(o))){let r=ap(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?gN(n[t],r)||(n=[...e.session],n[t]=r,i=!0):(n=[...e.session],n.push(r),n.sort((e,t)=>mN(e.id,t.id)),r.parentID||(a+=1),i=!0),i?{session:n,sessionTotal:a}:e}),iP(n,r.id,e)}let l=i(o),u=t.getState(),d=u.session_status?.[o],f=u.session_status_observed_at?.[o],p=()=>!_P(l,i(o)),m=l;Hg(e,o);try{let r=await Ub({directory:e,sessionID:o,limit:sh(),signal:AbortSignal.timeout(3e4),purpose:`recovery`});if(p()||!Gb({directory:e,sessionID:o,purpose:`recovery`,page:r,capturedLiveRevision:m,liveRevision:i(o),skipPartTypes:sN}).applied)return;let a=yu().getTranscript(W(e,o));aP(n,o,e,a.messageOrder.map(e=>a.messagesByID[e]).filter(e=>!!e)),hx({directory:e,sessionID:o,store:t,transcript:a,isStale:p}),await My({directory:e,sessionID:o,store:t,statusBeforePull:d,statusObservedAtBeforePull:f,hasMessages:a.messageOrder.length>0,isStale:p})}catch{}finally{Ug(e,o)}}))}let c=CP(a);c.resyncBlockingRequests&&await bP(e,t,o),c.ingestRoutingIndex&&lP(n,e,t.getState())}function TP(e){try{let t=H(),n=i(),r=h();return t?.getCacheBudget?.().listCanonicalScopesForSession(e,{transport:n,generation:r})?.map(e=>W(e.directory,e.sessionID,{transport:e.transport,generation:e.generation}))??[]}catch{return[]}}function EP(e){let t=nP(e)??void 0;if(t)return t;if(e.type===`message.updated`)return e.properties.info?.sessionID??void 0}var DP=null,OP=0;function kP(e){return`${e.directory}\0${e.sessionID}\0${e.transport??``}\0${e.generation??``}`}function AP(){OP===0&&(DP={byScope:new Map,routing:[],debug:[]}),OP+=1}function jP(){if(OP===0||(--OP,OP>0))return;let e=DP;if(DP=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=hP(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)yP(t.routingIndex,t.resolvedDirectory,t.payload)}finally{DP=null,OP=0}}function MP(e,t,n,r,a,o){let s=Fj({sessionID:t,resolvedDirectory:n,transport:i(),generation:h(),listCanonicalScopes:TP});if(DP){for(let n of s){let i=kP(n),s=DP.byScope.get(i);s||(s={scope:n,events:[],transcriptSessionID:t,eventMessageIDs:[],childStores:a,routingIndex:o},DP.byScope.set(i,s)),s.events.push(e),s.eventMessageIDs.push(r)}DP.debug.push({payloadType:e.type,transcriptSessionID:t,eventMessageID:r,changed:!1}),DP.routing.push({routingIndex:o,resolvedDirectory:n,payload:e});return}let c=!1;for(let n of s){let i=xu(n,{type:`sse-event`,event:e})??{applied:!1,changed:!1};i.changed&&(c=!0);let s=i.materialization;if(s){let e=hP(s.sessionID??t,s.messageID??r,n.directory,o);e&&SN(n.directory,e,a,{reason:s.reason,messageID:s.messageID,partID:s.partID})}}c?ys.dispatch.eventApplied(e.type,t,r):ys.dispatch.eventNoChange(e.type,t,r),yP(o,n,e)}function NP(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&&HO(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`&&tM.getState().applySnapshot({sessions:t.sessions})}return}let i=mP(r,e,t,n);if(RN(t,i))return;if(Wj(t,i),oM(i,t),i===`global`||!i){if(Al(t.type)){let e=EP(t);if(e){MP(t,e,i||`global`,rP(t)??void 0,n,r);return}}let e=qN(),a=BA(t);if(!a)return;if(a.type===`refresh`)e||qA.setState({reload:`pending`});else if(a.type===`project`){let e=qA.getState();qA.setState({projects:VA(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=nP(t);if(e){let t=uP(e,n,r);t&&(a=n.getChild(t),o=t)}}if(!a){if(Al(t.type)){let e=EP(t);if(e){MP(t,e,o,rP(t)??void 0,n,r);return}}let e=BA(t);if(e?.type===`refresh`)qA.setState({reload:`pending`});else if(e?.type===`project`){let t=qA.getState();qA.setState({projects:VA(t,e.project).projects})}return}if(n.mark(o),t.type===`permission.asked`){let e=t.properties;if(tM.getState().isSessionAutoAccepting(e.sessionID)){yP(r,o,t),v()&&wC(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=KN(o,e.sessionID);_M({permission:e,directory:o,isViewed:t,pendingIds:FN,show:(e,t)=>tE.info(e,t),openSession:hM})}}if(t.type===`permission.replied`){let e=t.properties,n=gM(e.sessionID,e.requestID);n&&(FN.delete(n),tE.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=IN(n,e.id);if(!KN(o,n)&&t&&!PN.has(t)){PN.add(t);let r=e.questions?.[0],i=r?.header?.trim()||`Input needed`,a=r?.question?.trim()||`Agent is waiting for your response`;tE.info(i,{id:`question-${t}`,description:a,action:{label:`Open session`,onClick:()=>hM(n,o)}})}}}if(t.type===`question.replied`||t.type===`question.rejected`){let e=t.properties,n=IN(e.sessionID,e.requestID);n&&(PN.delete(n),tE.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&&Yk({directory:o,session:e,time:Date.now(),viewed:KN(o,e),type:`turn-complete`})}if(t.type===`session.idle`){let e=nP(t);if(e&&o&&o!==`global`){let t=a.getState().session.find(t=>t.id===e),r=t?t.parentID:null,i=Ij({idleSessionID:e,directory:o,parentID:r,activeSessionID:EN,activeDirectory:TN});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`&&zj(o,i.sessionID)}}let s=a.getState(),c=nP(t)??void 0,l=rP(t)??void 0;if(t.type===`session.created`){let e=t.properties.info;Tx(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`)&&Fx(o,c,l))return;if(Al(t.type)){let e=EP(t);if(!e){yP(r,o,t);return}MP(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},u.session_error_at={...s.session_error_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=GA(u,t,{onSetSessionTodo:(e,t)=>{nx.getState().setSessionTodos(e,t)},onServerSessionIdle:e=>{$.getState().releaseQueueAbortBlocksForServerIdle(o,e)},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=nP(t)??void 0,n=rP(t)??void 0;ys.dispatch.eventApplied(t.type,e,n)}else{let e=nP(t)??void 0,n=rP(t)??void 0;ys.dispatch.eventNoChange(t.type,e,n)}if(p){let e=hP(p.sessionID??nP(t)??void 0,p.messageID??rP(t)??void 0,o,r);e&&SN(o,e,n,{reason:p.reason,messageID:p.messageID,partID:p.partID})}yP(r,o,t)}var PP=e=>{typeof window>`u`||window.dispatchEvent(new CustomEvent(`openchamber:opencode-update-available`,{detail:e}))},FP=null,IP=async()=>{let e=c();return(!FP||FP.runtimeKey!==e)&&(FP={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)}),FP.promise},LP=e=>{typeof window>`u`||IP().then(t=>{t||PP(e)})};function RP(e,t,n){return e!==t||n!==!1}function zP(e){let t=Hf(e=>e.settingsMessageStreamTransport),r=(0,G.useRef)(null);r.current||=new cj;let a=r.current,o=(0,G.useRef)(null);o.current||=eP();let s=o.current,l=(0,G.useRef)(0),u=(0,G.useRef)(new Map),d=(0,G.useRef)(new Map),f=(0,G.useRef)(new Map),p=(0,G.useRef)(new Set),m=(0,G.useRef)(null),g=(0,G.useRef)(!1),_=(0,G.useRef)(!1),y=(0,G.useRef)({directory:e.directory,enabled:e.bootstrapDirectory});y.current={directory:e.directory,enabled:e.bootstrapDirectory};let b=e=>{let t=y.current;return RP(e,t.directory,t.enabled)},x=(0,G.useMemo)(()=>({childStores:a,sdk:e.sdk,directory:e.directory}),[a,e.sdk,e.directory]);(0,G.useEffect)(()=>(BN(a),()=>{BN(null)}),[a]);let S=(0,G.useCallback)((e,t,n)=>{if(xP(e,a.children.get(e),n),!b(e))return;let r=a.children.get(e);if(!r)return;let i=p.current;i.has(e)||(n?.statusOnly||f.current.set(e,Date.now()),i.add(e),wP(e,r,s,t,t=>d.current.get(MN(e,t))??0,n).catch(()=>{}).finally(()=>{i.delete(e)}))},[a,s]);(0,G.useEffect)(()=>{v()||tM.getState().hydrate().catch(()=>void 0)},[e.sdk]),(0,G.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=qA.getState();await Aj({directory:n,sdk:e.sdk,getState:()=>r.getState(),set:e=>{r.setState(e),e.session&&lP(s,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,s]),(0,G.useEffect)(()=>{let t=++aN;rN=!0;let n=qA.getState().actions;return Zt().then(()=>{if(aN===t)return kj(e.sdk,e=>{aN===t&&n.set(e)})}).then(()=>{aN===t&&(iN=Date.now())}).finally(()=>{aN===t&&(rN=!1)}),()=>{aN===t&&(rN=!1)}},[e.sdk]),(0,G.useEffect)(()=>{let n=jA({sdk:e.sdk,transport:t,routeDirectory:(e,t)=>mP(s,e,t,a),onFlushStart:()=>{AP()},onFlushEnd:()=>{jP()},onNormalizedEvent:(e,t)=>{CN(e,t,a);let n=t.domainActivityHint?.sessionID??t.admissionHint?.sessionID;n&&e===TN&&n===EN&&(t.domainActivityHint||t.admissionHint)&&u.current.set(MN(e,n),Date.now())},onEvent:(e,t)=>{let n=gP(t,s.messageSessionById)??null;if(n&&vP(t)){let t=MN(e,n);d.current.set(t,(d.current.get(t)??0)+1)}if(n&&e===TN&&n===EN&&(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(MN(e,n),Date.now()),n&&e===TN&&n===EN&&t.type===`session.status`){let r=t.properties.status;if(r?.type===`busy`||r?.type===`retry`){let t=MN(e,n);u.current.has(t)||u.current.set(t,Date.now())}r?.type===`idle`&&u.current.delete(MN(e,n))}if(n&&(t.type===`session.idle`||t.type===`session.deleted`)&&u.current.delete(MN(e,n)),$N(e,t),t.type===`installation.update-available`){let e=typeof t.properties?.version==`string`?t.properties.version:``;e&&LP({version:e})}NP(e,t,a,s)},onTransportActivity:()=>{let e=Date.now();l.current=e,Bm(e)},onReconnect:()=>{Hf.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}=Hf.getState();Hf.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}=Hf.getState();Hf.setState({isConnected:!1,connectionPhase:e?`reconnecting`:`connecting`});for(let e of a.children.keys())S(e,`transport-switch`)}});m.current=n.reconnect;let r=Vm(n.reconnect);return()=>{r(),m.current===n.reconnect&&(m.current=null),n.cleanup()}},[e.sdk,a,s,t,S]),(0,G.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(Gj(r).length===0){f.current.delete(e);continue}let i=f.current.get(e)??0;XN(l.current,i,t)&&(m.current?.(`active_stream_stale`),S(e,`stale-status-resync`));let a=JN(e);if(!a)continue;let o=r.session_status?.[a.sessionId],s=MN(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}ZN({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,cN);return n(),()=>{e=!0,clearInterval(r)}},[a,S]),(0,G.useEffect)(()=>{let t;if(e.directory){let n=a.ensureChild(e.directory,{bootstrap:RP(e.directory,e.directory,e.bootstrapDirectory)}),r=SM(c(),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)},vM)),lP(s,e.directory,n.getState())}return()=>{t&&clearTimeout(t)}},[e.directory,e.bootstrapDirectory,a,s]);let C=(0,G.useRef)(null),w=(0,G.useRef)({transport:i(),generation:h()});return(0,G.useEffect)(()=>{if(C.current)return;let e=Wb({childStores:a,getViewedSession:()=>WN()[0]??null,getViewedSessions:()=>WN()});return C.current=e,w.current={transport:i(),generation:h()},()=>{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,G.useEffect)(()=>(Sd(e.sdk,a,e.directory,(e,t)=>{iP(s,e,t)}),qx(e.sdk,a,()=>z.getDirectory()||e.directory),Cy((e,t,n)=>{let r=new Set(n),i=Yo(e)??e,a={...t};for(let[e,t]of nM.getState().statusById)r.has(e)||t.directory===i&&(a[e]={type:t.status});sM(e,a,n)}),()=>{Cy(void 0)}),[e.sdk,e.directory,a,s]),(0,G.useEffect)(()=>n(e=>{if(!e.transportIdentityChanged){w.current={transport:i(),generation:h()};return}let t=w.current;Pu(`runtime-switch`);let n=C.current?.repository;n&&n.purgeGeneration(t.transport,t.generation),w.current={transport:i(),generation:h()}}),[]),(0,G.useEffect)(()=>{if(!e.directory)return;let t=a.getChild(e.directory);if(!t)return;let n=e.directory,r=()=>{Pj(t.getState(),{directory:n,store:t})};r();let i=t.subscribe(()=>{r()}),o=[],s=()=>{for(let e of o)e();o=[];let e=H()??U(n,t),i=t.getState().session_status??{};for(let[t,a]of Object.entries(i))!a||a.type===`idle`||o.push(e.subscribe(W(n,t),r));r()};s();let c=hu(s);return()=>{c(),i();for(let e of o)e()}},[e.directory,a]),(0,IM.jsx)(zM.Provider,{value:x,children:e.children})}function BP(e,t){let n=(0,V.c)(4),r=HM(),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 VP(e,t){let n=BP(t);return Ae(n,e)}function HP(e){let{childStores:t}=HM(),n=e.map(e=>`${e.directory}\n${e.sessionID}`).join(`\0`),r=(0,G.useRef)(e);r.current=e;let i=(0,G.useCallback)(e=>n?NM(t,r.current,e):()=>void 0,[t,n]),a=(0,G.useCallback)(()=>n?MM(t,r.current):``,[t,n]);return G.useSyncExternalStore(i,a,a)}function UP(){let e=(0,V.c)(2),{childStores:t}=HM(),n;return e[0]===t?n=e[1]:(n=e=>jM(t,e),e[0]=t,e[1]=n),n}function WP(e,t){let n=HM(),r=t??n.directory;return Yu(e,r,BP(r))}function GP(e,t){let n=HM(),r=t??n.directory;return ad(e,r,BP(r))}function KP(e,t){let n=(0,V.c)(8),r=HM(),i=t??r.directory,a=BP(i),o=(0,G.useRef)(void 0),s;n[0]!==e||n[1]!==a||n[2]!==i?(s=()=>{if(!e){o.current=void 0;return}let t=(H()??U(i,a)).getRequestState?.(W(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 qP;let n=(H()??U(i,a)).subscribe(W(i,e),()=>{t()}),r=hu(()=>{n(),o.current=void 0,n=(H()??U(i,a)).subscribe(W(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 G.useSyncExternalStore(u,c,c)}function qP(){}function JP(e,t,n){let r=HM(),i=t??r.directory;return sd(e,i,BP(i),n)}function YP(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=BP(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):XP,n[4]=e,n[5]=i,n[6]=s):s=n[6];let c=s;return G.useSyncExternalStore(c,o,o)}function XP(){}function ZP(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=BP(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):QP,n[4]=e,n[5]=i,n[6]=s):s=n[6];let c=s;return G.useSyncExternalStore(c,o,o)}function QP(){}function $P(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=BP(t,r),a;n[1]!==e||n[2]!==i?(a=()=>{if(e)return i.getState().session_error_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((n,r)=>{n.session_error_at?.[e]!==r.session_error_at?.[e]&&t()}):eF,n[4]=e,n[5]=i,n[6]=s):s=n[6];let c=s;return G.useSyncExternalStore(c,o,o)}function eF(){}function tF(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=BP(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):nF,n[4]=r,n[5]=a,n[6]=c):c=n[6];let l=c;return G.useSyncExternalStore(l,s,s)}function nF(){}function rF(e,t,n){let r=(0,V.c)(6),i=BP(t,n),a;r[0]!==e||r[1]!==i?(a=()=>e?i.getState().permission[e]??eI:eI,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):iF,r[3]=e,r[4]=i,r[5]=s):s=r[5];let c=s;return G.useSyncExternalStore(c,o,o)}function iF(){}function aF(e,t,n){let r=(0,V.c)(2),i=BP(t,n),a;return r[0]===e?a=r[1]:(a=t=>e?t.question[e]??tI:tI,r[0]=e,r[1]=a),Ae(i,a)}function oF(e){return VP(sF,e)}function sF(e){return e.session}var cF=e=>e.permission,lF=e=>e.question;function uF(e){if(!e)return qp;let t=[];for(let n of e.messageOrder){let r=e.partsByMessageID[n];if(r)for(let e of Kp(r))t.push(e)}return t.length===0?qp:t}function dF(){let e=null;return t=>{let n=uF(t);if(n.length===0)return qp;let r=n.map(e=>`${e.parentSessionId}\u0000${e.sessionId}`).join(``);return e&&e.signature===r?e.edges:(e={signature:r,edges:n},n)}}function fF(e,t){let n=HM(),r=t??n.directory,i=BP(r),a=(0,G.useRef)(dF()).current,o=(0,G.useCallback)(()=>{if(!e)return qp;try{let t=H()?.getTranscript(W(r,e));return a(t)}catch{return qp}},[a,e,r]),s=(0,G.useCallback)(t=>{if(!e)return()=>void 0;let n=(H()??U(r,i))?.subscribe(W(r,e),()=>{t()})??(()=>void 0),a=hu(()=>{n(),n=(H()??U(r,i))?.subscribe(W(r,e),()=>{t()})??(()=>void 0),t()});return()=>{a(),n()}},[e,i,r]);return G.useSyncExternalStore(s,o,o)}function pF(e,t,n,r){let i=(0,V.c)(7),a=fF(e,t),o;i[0]===r?o=i[1]:(o={sessionID:null,sessions:null,requestsBySession:null,dispatchEdges:null,result:r},i[0]=r,i[1]=o);let s=(0,G.useRef)(o),c;return i[2]!==a||i[3]!==r||i[4]!==n||i[5]!==e?(c=t=>{let i=n(t),o=s.current;if(o.sessionID===e&&o.sessions===t.session&&o.requestsBySession===i&&o.dispatchEdges===a)return o.result;let c=Xp(t.session,i,e,r,a),l=Yp(o.result,c)?o.result:c;return s.current={sessionID:e,sessions:t.session,requestsBySession:i,dispatchEdges:a,result:l},l},i[2]=a,i[3]=r,i[4]=n,i[5]=e,i[6]=c):c=i[6],VP(c,t)}function mF(e,t){return pF(e,t,cF,eI)}function hF(e,t){return pF(e,t,lF,tI)}function gF(e,t){let n=(0,V.c)(9),r=_F(e,t),i=_F(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=_F(c,t),u=_F(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=FM(e,s,p,t),n[4]=s,n[5]=t,n[6]=p,n[7]=e,n[8]=m):m=n[8],m}function _F(e,t){let n=(0,V.c)(7),{childStores:r}=HM(),i;n[0]!==r||n[1]!==t||n[2]!==e?(i=()=>t?r.getChild(t)?.getState().session.find(t=>t.id===e):xj(UM(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(vF,e),n[4]=r,n[5]=t,n[6]=o):o=n[6];let s=o;return G.useSyncExternalStore(s,a,a)}function vF(e){return e.session}function yF(e){let t=PM(e,_F(e),Y((0,G.useCallback)(t=>e?t.activeSessions.find(t=>t.id===e)??null:null,[e]))),n=(0,G.useRef)(null),[,r]=G.useState(0);if((0,G.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 bF(e,t){return _F(e,t)?.directory??void 0}function xF(){return HM().directory}function SF(){return HM().childStores}var CF=[],wF=40,TF=4,EF=30,DF=4,OF=30,kF=new WeakMap,AF=(e,t,n)=>`${e}\u0000${+!!t}\u0000${n??``}`,jF=e=>{let t=kF.get(e);return t||(t=new Map,kF.set(e,t)),t},MF=(e,t,n,r)=>{let i=kF.get(e);if(!i)return;let a=AF(t,n,r),o=i.get(a);if(o)return i.delete(a),i.set(a,o),o},NF=(e,t)=>{if(!t.sessionID)return;let n=jF(e),r=AF(t.sessionID,t.suspendPartUpdates,t.suspendedPartUpdatesMessageID),i=v()?EF:$m()?OF:null;if(i!==null&&t.list.length>i){n.delete(r);return}n.delete(r),n.set(r,t);let a=v()?TF:$m()?DF:wF;for(;n.size>a;){let e=n.keys().next().value;if(typeof e!=`string`)break;n.delete(e)}};function PF(e,t){let n=kF.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 FF=`The following tool was executed by the user`,IF=(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(FF)}):!1};function LF(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 RF=(e,t)=>{for(let n of e.list){let r=t.parts[n.info.id]??$F;if(e.suspendPartUpdates){let i=e.suspendedPartUpdatesMessageID;if((!i||n.info.id===i)&&!IF(t.parts,n.info,r)&&!LF(n.parts,r))continue}if(Ks(n.parts,r,n.info)!==n.parts)return!1}return!0},zF=(e,t,n,r)=>{let i=MF(e,t.sessionID,n,r);if(i&&i.sourceMessages===t.messages&&i.revertMessageID===t.revertMessageID&&i.suspendPartUpdates===n&&i.suspendedPartUpdatesMessageID===r&&RF(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?QF:i.slice(),revertMessageID:r}}function VF(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]??$F,s=n&&a&&(!r||i.id===r)&&!IF(e.parts,i,o)&&!LF(a.parts,o)?a.parts:Ks(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=HM(),r=t??n.directory;return rd(e,r,BP(r))}function UF(e,t){let n=HM(),r=t??n.directory;return fd(e,r,BP(r))}function WF(e,t){let n=HM(),r=t??n.directory;return ud(e,r,BP(r))}function GF(e,t){let n=(0,V.c)(8),r=HM(),i=t??r.directory,a=BP(i),o=(0,G.useRef)(EM),s;n[0]!==e||n[1]!==a||n[2]!==i?(s=()=>{if(!e)return o.current=EM,EM.history;let t=(H()??U(i,a)).getTranscript(W(i,e)),n=a.getState().session.find(t=>t.id===e)?.revert?.messageID,r=AM({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 KF;let n=(H()??U(i,a)).subscribe(W(i,e),()=>{t()}),r=hu(()=>{n(),n=(H()??U(i,a)).subscribe(W(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 G.useSyncExternalStore(u,c,c)}function KF(){}function qF(e,t,n){let r=(0,V.c)(16),i=HM(),a=t??i.directory,o=BP(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:QF,visibleMessages:QF,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,G.useRef)(d),p;r[6]!==n?.suspendPartUpdates||r[7]!==n?.suspendPartUpdatesForMessageId||r[8]!==e||r[9]!==o||r[10]!==a?(p=()=>{if(!e)return CF;let t=(H()??U(a,o)).getTranscript(W(a,e)),r=!!n?.suspendPartUpdates,i=n?.suspendPartUpdatesForMessageId??void 0,s=Gu(t,f.current.sessionID===e?f.current.sourceMessages:MF(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=zF(o,l,r,i);if(u)return f.current=u,u.list;let d=VF(l,f.current.sessionID===e?f.current:MF(o,e,r,i),r,i);return f.current=d,NF(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 JF;Hu(a,e);let n=(H()??U(a,o)).subscribe(W(a,e),()=>{t()}),r=hu(()=>{n(),n=(H()??U(a,o)).subscribe(W(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 G.useSyncExternalStore(g,m,m)}function JF(){}var YF=new Set;function XF(e,t){let n=xF(),r=t??n,i=BP(r),a=G.useRef(0);G.useEffect(()=>{if(!e)return;let t=H()??U(r,i),n=W(r,e),o=t.getTranscript(n),s=t.hasSession?.(n);if(Ku(o,{resolved:s===!0||void 0}).renderable){hx({directory:r,sessionID:e,store:i});return}if(!i.getState().session.some(t=>t.id===e))return;let c=`${r}:${e}`;if(YF.has(c))return;let l=++a.current,u=()=>l!==a.current;YF.add(c),(async()=>{try{if(H())try{if(await Cu(r,e),u())return;hx({directory:r,sessionID:e,store:i,isStale:u})}catch{if(u())return;await wN(r,e,i,{reason:`ensure-session-messages`,isStale:u})}else await wN(r,e,i,{reason:`ensure-session-messages`,isStale:u})}catch{}finally{YF.delete(c)}})()},[e,i,r])}function ZF(e,t){let n=HM(),r=t??n.directory;return qu(e,r,BP(r))}var QF=[],$F=[],eI=[],tI=[],nI=[],rI=()=>({requestID:fe(),queueItemID:fe(),operationID:fe(),messageID:ge(`msg`)}),iI=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}:{}}),aI,oI=(e,t)=>{let n=e.establishing;if(!n||t&&n.draftID!==t||n.pending.length===0)return nI;if(aI&&aI.pending===n.pending&&aI.draftID===t)return aI.items;let r=n.pending.map(iI);return aI={pending:n.pending,draftID:t,items:r},r},sI=e=>t=>t.flights[e]??null,cI=e=>t=>!!e&&t.establishing?.draftID===e,lI=e=>t=>oI(t,e),uI=(e,t)=>({flightKind:e,inFlight:e!==null,establishing:t}),dI=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??rI(),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})),fI=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}},pI=`/api/openchamber/message-queue`,mI=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`]),hI=new Set([`revision`,`scopeID`,`queueItemID`,`rowVersion`,`removedQueueItemID`,`projectDirectory`,`token`,`state`,`scopeCount`,`statusCounts`]),gI=new Set([`scopeID`,`revision`,`directory`,`sessionID`,`worktreeState`,`itemCount`]),_I=e=>typeof e==`object`&&!!e&&!Array.isArray(e),Z=e=>typeof e==`number`&&Number.isSafeInteger(e)&&e>=0,vI=e=>Array.isArray(e)&&e.every(e=>typeof e==`string`),yI=async e=>{if(e.status===501)return`unavailable`;try{let t=await e.json();if(_I(t)&&typeof t.code==`string`&&mI.has(t.code))return t.code}catch{}return`unavailable`},bI=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 yI(n));try{return await n.json()}catch{throw new X(n.status,`unavailable`)}},xI=()=>{throw new X(200,`unavailable`)},SI=e=>_I(e)&&Object.getPrototypeOf(e)===Object.prototype,CI=e=>{if(!(!SI(e)||typeof e.text!=`string`||!Array.isArray(e.references)||e.references.some(e=>!SI(e))))return{text:e.text,references:e.references.map(e=>({...e}))}},wI=e=>Array.isArray(e)&&e.every(SI)?e.map(e=>({...e})):void 0,TI=e=>{if(!(!_I(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}}},EI=e=>_I(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,DI=e=>{if(!Array.isArray(e)||e.length===0||e.length>129)return null;let t=[],n=0;for(let r of e){if(!SI(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},OI=e=>{if(!Array.isArray(e)||e.length>64)return null;let t=new Set,n=[];for(let r of e){if(!SI(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},kI=e=>{if(!SI(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))||!SI(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},AI=e=>Array.isArray(e)&&e.map(kI).every(e=>e!==null)?e.map(kI):null,jI=e=>{if(!_I(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:CI(e.composerDocument),n=e.composerMentions===void 0?void 0:wI(e.composerMentions),r=e.sendConfig===void 0?void 0:TI(e.sendConfig),i=e.deliveryTarget===void 0?{kind:`primary`}:EI(e.deliveryTarget),a=e.deliveryParts===void 0?void 0:DI(e.deliveryParts),o=e.syntheticParts===void 0?void 0:OI(e.syntheticParts),s=e.attachmentIssues===void 0?void 0:wI(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:AI(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}:{}}},MI=e=>{if(!_I(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(jI);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},NI=e=>_I(e)&&Object.keys(e).every(e=>gI.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,PI=e=>_I(e)&&typeof e.projectDirectory==`string`&&vI(e.orderedPaths)&&Z(e.revision)?{projectDirectory:e.projectDirectory,orderedPaths:e.orderedPaths,revision:e.revision}:null,FI=e=>{if(!_I(e)||!Z(e.revision)||!Array.isArray(e.scopes)||!Array.isArray(e.worktreeOrders))return xI();let t=e.scopes.map(NI),n=e.worktreeOrders.map(PI);return!t.every(e=>e!==null)||!n.every(e=>e!==null)?xI():{revision:e.revision,scopes:t,worktreeOrders:n}},II=e=>!_I(e)||!Z(e.revision)||Object.keys(e).some(e=>!hI.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&&(!_I(e.statusCounts)||Object.values(e.statusCounts).some(e=>!Z(e)))?xI():{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}:{},..._I(e.statusCounts)?{statusCounts:e.statusCounts}:{}},LI=(e,t,n)=>({method:e,headers:{"Content-Type":`application/json`},body:JSON.stringify(t),signal:n}),RI=(e,t)=>{let{signal:n,...r}=t;return LI(e,r,n)},zI=async e=>FI(await bI(pI,{signal:e})),BI=new Map,VI=(e,t)=>`${o().api(pI)}\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=VI(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()=>MI(await bI(`${pI}/scopes/${encodeURIComponent(e)}`,{query:{offset:t.offset,limit:t.limit,expectedRevision:t.expectedRevision},signal:t.signal}))??xI())().finally(()=>{BI.get(n)===i&&BI.delete(n)});return BI.set(n,i),i},UI=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:UI,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})}),GI=async e=>{let t=await bI(`${pI}/status`,{signal:e}),n=new Set([`capability`,`authority`,`generation`,`activationEpoch`,`activatedAt`,`manifestHash`,`protocol`,`worker`]);return!_I(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&&(!_I(t.worker)||Object.keys(t.worker).some(e=>e!==`paused`&&e!==`active`)||typeof t.worker.paused!=`boolean`||!Z(t.worker.active))?xI():{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}:{},..._I(t.worker)?{worker:{paused:t.worker.paused,active:t.worker.active}}:{}}},KI=(e,t)=>Object.keys(e).length===t.length&&Object.keys(e).every(e=>t.includes(e)),qI=e=>{let t=[`revision`,`importID`,`state`,`duplicate`,`manifestHash`,`commit`];if(!_I(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 xI();let n=e.commit===void 0?void 0:XI(e.commit);return e.commit!==void 0&&!n?xI():{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}:{}}},JI=e=>!_I(e)||!KI(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`?xI():{revision:e.revision,importID:e.importID,staged:!0,...typeof e.duplicate==`boolean`?{duplicate:e.duplicate}:{}},YI=e=>!_I(e)||!KI(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)?xI():{revision:e.revision,importID:e.importID,manifestHash:e.manifestHash,state:`sealed`,itemCount:e.itemCount},XI=e=>!_I(e)||!KI(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)?xI():{revision:e.revision,importID:e.importID,manifestHash:e.manifestHash,generation:e.generation,activationEpoch:e.activationEpoch,added:e.added},ZI=e=>XI(e),QI=e=>XI(e),$I=(e,t)=>!_I(e)||!KI(e,[`authority`,`generation`,`revision`])||e.authority!==t||!Z(e.generation)||!Z(e.revision)?xI():{authority:t,generation:e.generation,revision:e.revision},eL=async e=>qI(await bI(`${pI}/imports`,RI(`POST`,e))),tL=async(e,t)=>{let n=await bI(`${pI}/imports/${encodeURIComponent(e)}`,{signal:t});if(!_I(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 xI();let r=n.staged.map(e=>_I(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:XI(n.commit);return!r.every(e=>e!==null)||n.commit!==void 0&&!i?xI():{state:n.state,...typeof n.manifestHash==`string`?{manifestHash:n.manifestHash}:{},itemCount:n.itemCount,staged:r,...i?{commit:i}:{}}},nL=async(e,t)=>JI(await bI(`${pI}/imports/${encodeURIComponent(e)}/items`,RI(`POST`,t))),rL=async(e,t)=>YI(await bI(`${pI}/imports/${encodeURIComponent(e)}/seal`,RI(`POST`,t))),iL=async(e,t)=>ZI(await bI(`${pI}/imports/${encodeURIComponent(e)}/activate`,RI(`POST`,t))),aL=async(e,t)=>QI(await bI(`${pI}/imports/${encodeURIComponent(e)}/late-commit`,RI(`POST`,t))),oL=async e=>$I(await bI(`${pI}/authority/pause`,RI(`POST`,e)),`paused`),sL=async e=>$I(await bI(`${pI}/authority/resume`,RI(`POST`,e)),`active`),cL=async(e={})=>{let t=await bI(`${pI}/attachments/uploads`,RI(`POST`,e));return!_I(t)||typeof t.uploadID!=`string`||typeof t.uploadToken!=`string`||!Z(t.expiresAt)?xI():{uploadID:t.uploadID,uploadToken:t.uploadToken,expiresAt:t.expiresAt}},lL=async(e,t,n,r)=>{let i;try{i=await F(`${pI}/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 yI(i))},uL=e=>!_I(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)?xI():{revision:e.revision,scopeID:e.scopeID,queueItemID:e.queueItemID,rowVersion:e.rowVersion,token:e.token,expiresAt:e.expiresAt,generation:e.generation},dL=e=>!_I(e)||typeof e.queueItemID!=`string`||typeof e.token!=`string`||!Z(e.generation)||!Z(e.expiresAt)?xI():{queueItemID:e.queueItemID,token:e.token,generation:e.generation,expiresAt:e.expiresAt},fL=async(e,t)=>uL(await bI(`${pI}/items/${encodeURIComponent(e)}/reserve`,RI(`POST`,t))),pL=async(e,t)=>{await bI(`${pI}/items/${encodeURIComponent(e)}/release`,RI(`POST`,t))},mL=async(e,t)=>dL(await bI(`${pI}/items/${encodeURIComponent(e)}/edit-reservations/${encodeURIComponent(t.token)}/renew`,RI(`POST`,t))),hL=async(e,t)=>II(await bI(`${pI}/items/${encodeURIComponent(e)}/reserved-remove`,RI(`DELETE`,t))),gL=async(e,t,n)=>{let r;try{r=await F(`${pI}/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 yI(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})},_L=async e=>II(await bI(`${pI}/items`,RI(`POST`,e))),vL=async(e,t)=>II(await bI(`${pI}/items/${encodeURIComponent(e)}`,RI(`PATCH`,t))),yL=async(e,t)=>II(await bI(`${pI}/items/${encodeURIComponent(e)}/send`,RI(`POST`,t))),bL=async(e,t)=>II(await bI(`${pI}/items/${encodeURIComponent(e)}`,RI(`DELETE`,t))),xL=async(e,t)=>II(await bI(`${pI}/scopes/${encodeURIComponent(e)}/order`,RI(`PUT`,t))),SL=async(e,t)=>PI(await bI(`${pI}/worktrees/order`,{query:{projectDirectory:e},signal:t}))??xI(),CL=async e=>II(await bI(`${pI}/worktrees/order`,RI(`PUT`,e))),wL=(e=i())=>N.messageQueue.snapshot(e),TL=(e=i())=>N.messageQueue.status(e),EL=(e,t,n=i())=>N.messageQueue.scope(e,t,n),DL=(e=i())=>({queryKey:TL(e),queryFn:({signal:e})=>GI(e),retry:!1,staleTime:3e4}),OL=(e=i())=>({queryKey:wL(e),queryFn:({signal:e})=>zI(e),staleTime:5e3}),kL=(e=L,t=i())=>e.fetchQuery(DL(t)),AL=(e=L,t=i())=>e.fetchQuery(OL(t)),jL=async(e=L,t=i())=>e.fetchQuery({...DL(t),staleTime:0}),ML=async(e=L,t=i())=>e.fetchQuery({...OL(t),staleTime:0}),NL=(e,t,n=i())=>{e.setQueryData(EL(t.scopeID,t.revision,n),{pages:[t],pageParams:[0]})},PL=(e,t,n=i())=>{e.setQueryData(TL(n),t)},FL=(e,t,n=i())=>{e.setQueryData(wL(n),t)},IL=(e,t,n,r=i())=>{let a=e.getQueryData(EL(t,n,r));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},LL=(e,t=i())=>e.removeQueries({queryKey:[t,`messageQueue`,`scope`],exact:!1}),RL=(e,t,n=i())=>e.removeQueries({queryKey:[n,`messageQueue`,`scope`,t],exact:!1}),zL=(e,t,n=i())=>e.invalidateQueries({queryKey:[n,`messageQueue`,`scope`,t],exact:!1}),BL=`openchamber_message_queue_ledger_v4`,VL=`message-queue-store`,HL={scopes:128,totalItems:2048,attachmentsPerItem:64,issuesPerItem:64,string:8192,content:2e5,dataURL:26214400,bytes:26214400},UL=e=>typeof e==`object`&&!!e&&Object.getPrototypeOf(e)===Object.prototype,WL=(e,t)=>Object.keys(e).every(e=>t.includes(e)),GL=(e,t=HL.string)=>typeof e==`string`&&e.length>0&&e.length<=t,KL=e=>typeof e==`number`&&Number.isSafeInteger(e)&&e>=0,qL=e=>JSON.parse(JSON.stringify(e)),JL=(e,t,n,r)=>{let i=UL(t)?t:{};return{...e?{scopeKey:e}:{},...GL(i.queueItemID)?{queueItemID:i.queueItemID}:{},...GL(i.operationID)?{operationID:i.operationID}:{},path:n,reason:r}},YL=e=>e.state===`bound`?`bound:${JSON.stringify([e.transportIdentity,e.directory,e.sessionID])}`:`unbound-legacy:${JSON.stringify([e.sessionID])}`,XL=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=QL(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&&YL(n)===e?n:void 0},ZL=()=>({version:4,queues:{},migration:{v3State:`pending`}}),QL=e=>!UL(e)||!GL(e.state)?void 0:e.state===`bound`&&WL(e,[`state`,`transportIdentity`,`directory`,`sessionID`])&&GL(e.transportIdentity)&&GL(e.directory)&&GL(e.sessionID)?{state:`bound`,transportIdentity:e.transportIdentity,directory:e.directory,sessionID:e.sessionID}:e.state===`unbound-legacy`&&WL(e,[`state`,`sessionID`])&&GL(e.sessionID)?{state:`unbound-legacy`,sessionID:e.sessionID}:void 0,$L=(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}},eR=[`attachmentID`,`occurrenceRefID`,`filename`,`mimeType`,`size`,`source`,`serverPath`,`vscodePath`,`vscodeSource`],tR=e=>{if(!GL(e.attachmentID)||!GL(e.occurrenceRefID)||!$L(e.occurrenceRefID,e.attachmentID)||!GL(e.filename)||typeof e.mimeType!=`string`||e.mimeType.length>HL.string||!KL(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`&&GL(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&&GL(e.vscodePath)&&(e.vscodeSource===`file`||e.vscodeSource===`selection`))return{...t,source:`vscode`,vscodePath:e.vscodePath,vscodeSource:e.vscodeSource}},nR=e=>{if(!UL(e)||!WL(e,[...eR,`version`,`locator`])||e.version!==1)return;let t=tR(e);if(!t||!UL(e.locator))return;let n=e.locator.kind===`blob`&&WL(e.locator,[`kind`,`blobID`])&&GL(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},rR=e=>{if(!UL(e)||!WL(e,[...eR,`reason`]))return;let t=tR(e);return t&&[`legacy-blob-url`,`legacy-bytes-missing`,`legacy-unbound-data`,`missing-blob`].includes(e.reason)?{...t,reason:e.reason}:void 0},iR=(e,t)=>{if(!UL(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},aR=(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},oR=(e,t)=>{if(!UL(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||!GL(e.queueItemID)||!GL(e.operationID)||!GL(e.messageID)||typeof e.content!=`string`||e.content.length>HL.content||!KL(e.createdAt)||!KL(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=QL(e.owner),r=e.attachments.map(nR),i=e.attachmentIssues.map(rR),a=e.composerDocument===void 0?void 0:iR(e.composerDocument,e.content),o=aR(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&&(!UL(e.sendConfig)||!WL(e.sendConfig,[`providerID`,`modelID`,`agent`,`variant`])||!GL(e.sendConfig.providerID)||!GL(e.sendConfig.modelID)||[e.sendConfig.agent,e.sendConfig.variant].some(e=>e!==void 0&&!GL(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&&!KL(e))||!m)return;let h=e.status===`sending`&&t,g=h?e.createdAt+3e4:e.reconciliationDeadlineAt;if(h&&!KL(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:qL(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}:{}}},sR=(e,t={})=>{let n=e=>({status:`corrupt`,snapshot:ZL(),issues:[JL(void 0,void 0,`$`,e)],degradedScopeKeys:[]});if(!UL(e)||!WL(e,[`version`,`queues`,`migration`])||e.version!==4||!UL(e.queues)||!UL(e.migration)||!WL(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(JL(e,t,n,r)),o.add(e)};for(let[a,d]of Object.entries(e.queues)){if(!XL(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=oR(f,t.normalizeSending===!0);if(!m||YL(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:qL({version:4,queues:i,migration:{v3State:e.migration.v3State}}),issues:a,degradedScopeKeys:[...o]}},cR=e=>{let t=sR(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`}}}},lR=()=>({ok:!1,error:{code:`unavailable`}}),uR=e=>({ok:!1,error:{code:e instanceof DOMException&&e.name===`QuotaExceededError`?`quota`:`unavailable`}}),dR=e=>({read:async t=>{if(!e)return lR();try{return{ok:!0,value:e.getItem(t)}}catch(e){return uR(e)}},write:async(t,n)=>{if(!e)return lR();try{return e.setItem(t,n),{ok:!0,value:void 0}}catch(e){return uR(e)}},remove:async t=>{if(!e)return lR();try{return e.removeItem(t),{ok:!0,value:void 0}}catch(e){return uR(e)}}}),fR=()=>{try{return dR(typeof window>`u`?null:window.localStorage)}catch{return dR(null)}},pR=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=sR(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:[JL(void 0,void 0,`$`,`json`)],degradedScopeKeys:[]}}}},mR=async e=>{let t=await pR(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},hR=async(e,t)=>{let n=cR(t);return n.ok?e.write(BL,n.value):n},gR=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,hR(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:()=>pR(e),read:()=>mR(e),persist:e=>{if(!t)return Promise.resolve({ok:!1,error:{code:`cancelled`}});let r=sR(e);if(r.status===`corrupt`||r.issues.length)return Promise.resolve({ok:!1,error:{code:`corrupt`}});let i=qL(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}},_R=HL.string,vR=HL.dataURL,yR=HL.bytes,bR=e=>typeof e==`object`&&!!e&&Object.getPrototypeOf(e)===Object.prototype,xR=(e,t,n=!1)=>typeof e==`string`&&e.length<=_R&&(n||e.length>0)?e:t,SR=(e,t=0)=>typeof e==`number`&&Number.isSafeInteger(e)&&e>=0?e:t,CR=(e,t)=>YL(e)===YL(t),wR=(e,t,n,r)=>({scopeKey:e,queueItemID:t,path:n,reason:r}),TR=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(``)}`},ER=e=>typeof e==`string`&&e.length>0&&e.length<=_R,DR=e=>XL(e)??(ER(e)?{state:`unbound-legacy`,sessionID:e}:void 0),OR=e=>{if(bR(e)){if(e.state===`bound`&&ER(e.transportIdentity)&&ER(e.directory)&&ER(e.sessionID))return{state:`bound`,transportIdentity:e.transportIdentity,directory:e.directory,sessionID:e.sessionID};if(e.state===`unbound-legacy`&&ER(e.sessionID))return{state:`unbound-legacy`,sessionID:e.sessionID}}},kR=e=>{if(e.length>vR)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>yR)return;e=Uint8Array.from(t,e=>e.charCodeAt(0))}else if(e=new TextEncoder().encode(decodeURIComponent(a)),e.byteLength>yR)return;let t=new ArrayBuffer(e.byteLength);return new Uint8Array(t).set(e),new Blob([t],{type:i})}catch{return}},AR=e=>bR(e)&&ER(e.providerID)&&ER(e.modelID)&&(e.agent===void 0||ER(e.agent))&&(e.variant===void 0||ER(e.variant))?{providerID:e.providerID,modelID:e.modelID,...e.agent===void 0?{}:{agent:e.agent},...e.variant===void 0?{}:{variant:e.variant}}:void 0,jR=async(e,t)=>{let n=await pR(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:[wR(``,``,`$.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=>wR(e.scopeKey??``,e.queueItemID??``,e.path,e.reason)),cleanupErrors:[]};let r=await e.read(VL);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={...ZL(),migration:{v3State:`complete`}},n=await hR(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:[wR(``,``,`$`,`legacy-json`)],cleanupErrors:a}}let l=bR(c)&&bR(c.state)?c.state.queuedMessages:bR(c)?c.queuedMessages:void 0;if(!bR(l))return{status:`failed`,error:{code:`corrupt`},issues:[wR(``,``,`$.state.queuedMessages`,`legacy-state`)],cleanupErrors:a};let u={...ZL(),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(wR(n,``,`$.state.queuedMessages.${JSON.stringify(n)}`,`legacy-scope-limit`));break}let c=DR(n),l=c?YL(c):n;if(!c||!Array.isArray(r)){i.push(wR(l,``,`$.state.queuedMessages.${JSON.stringify(n)}`,`legacy-queue`));continue}for(let e=0;e<r.length;e++){if(m>=HL.totalItems){i.push(wR(l,``,`$.state.queuedMessages.${JSON.stringify(n)}[${e}]`,`legacy-item-limit`));break}m++;let h=`$.state.queuedMessages.${JSON.stringify(n)}[${e}]`,g=bR(r[e])?r[e]:void 0;if(!g||typeof g.content!=`string`||g.content.length>131072){i.push(wR(l,``,h,`legacy-item`));continue}let _=OR(g.owner);if(g.owner!==void 0&&(!_||!CR(c,_))){i.push(wR(l,ER(g.queueItemID)?g.queueItemID:``,h,`owner-conflict`));continue}let v=JSON.stringify([n,e,g.content]),y=ER(g.queueItemID)?g.queueItemID:ER(g.id)?g.id:await TR(`queue`,v),b=ER(g.operationID)?g.operationID:await TR(`operation`,`${v}:operation`),x=ER(g.messageID)?g.messageID:await TR(`message`,`${v}:message`);if(d.has(y)||f.has(b)||p.has(x)){i.push(wR(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(wR(l,y,`${h}.attachments`,`legacy-attachments`));for(let e=0;e<T.length&&e<HL.attachmentsPerItem;e++){let n=bR(T[e])?T[e]:void 0,r=`${h}.attachments[${e}]`;if(!n){i.push(wR(l,y,r,`legacy-attachment`));continue}let u=ER(n.id)?n.id:await TR(`attachment`,`${v}:attachment:${e}`),d=ue(u),f=xR(n.filename,u),p=xR(n.mimeType,``,!0),m=SR(n.size);if(w.has(d)){i.push(wR(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`?ER(n.serverPath)&&n.vscodePath===void 0&&n.vscodeSource===void 0:n.source===`vscode`&&ER(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(wR(l,y,r,e))};if(c.state===`unbound-legacy`){O(`legacy-unbound-data`);continue}if(!g){i.push(wR(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=kR(k);if(!A){O(`legacy-bytes-missing`);continue}let j=await TR(`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:wR(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(wR(l,y,`${h}.attachments`,`legacy-attachment-limit`));let E=SR(g.createdAt),D=typeof g.status==`string`?g.status:`queued`,O=bR(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=SR(g.reconciliationStartedAt,E),ne=SR(g.reconciliationDeadlineAt,-1),re=M>2**53-1-3e4?M:M+3e4,oe=Math.max(M,ne>=0?ne:re),se=SR(g.reconciliationChecks),ce=SR(g.reconciliationNextCheckAt,M);j&&ne<0&&M>2**53-1-3e4&&i.push(wR(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=bR(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(wR(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(wR(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,...AR(g.sendConfig)?{sendConfig:AR(g.sendConfig)}:{},status:le,attemptCount:SR(g.attemptCount),...le===`retrying`?{nextAttemptAt:SR(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 hR(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})},MR=(e,t)=>JSON.stringify(e)===JSON.stringify(t),NR=(e,t=[])=>({status:e,errors:t,cleanupErrors:[]}),PR=e=>e.status===`sending`||e.status===`reconciling`,FR=(e,t,n={})=>{let r={hydration:`idle`,snapshot:ZL(),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]=MR(r.snapshot.queues[n],i)?r.snapshot.queues[n]:i;let n=MR(r.snapshot.queues,t)&&MR(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&&YL(t.owner)===e.scopeKey?t:void 0},d=()=>r.hydration===`idle`||r.hydration===`hydrating`?NR(`unseeded`):r.hydration===`recovery-required`?NR(`recovery-required`,[...r.issues]):r.hydration===`failed`?NR(`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=()=>NR(`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)):NR(`stale`))),materializeForEdit:(t,n=p())=>l(async()=>{let r=d(),i=u(t);if(r)return r;if(!i||!m(i,n))return NR(`stale`);if(PR(i))return NR(`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`?NR(`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 NR(`stale`);try{let a=await e.releaseSend(t,n,r);return a.status!==`stale`&&h.delete(i),a}catch{return h.delete(i),NR(`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{...NR(`stale`),durableRemoval:!1};if(PR(f))return{...NR(`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{...NR(`stale`),durableRemoval:!1};if(_(t))return{...v(),durableRemoval:!1};if(PR(a))return{...NR(`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=>PR(e)||!m(e,i))?NR(`failed`,[{phase:`identity`,code:`locked`}]):f(()=>e.reorder(t,n,i)):NR(`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)?NR(`stale`):_(t)?v():PR(a)?NR(`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||PR(e)||!m(e,r))||n.transportIdentity!==r.transportIdentity?NR(`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)?NR(`stale`):_(t)?NR(`failed`,[{phase:`identity`,code:`reserved`}]):(Array.isArray(n)?n:[n]).includes(o.status)?f(()=>e.transition(t,r,i)):NR(`stale`))}),confirm:(t,n=p())=>l(async()=>{let r=d(),i=u(t);return r||(!i||!m(i,n)?NR(`stale`):_(t)?NR(`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)?NR(`stale`):_(t)?NR(`failed`,[{phase:`identity`,code:`reserved`}]):e.acquireSendPayload(t,n))}),releaseSend:(t,n,r=p())=>l(async()=>e.releaseSend(t,n,r))}},IR=e=>JSON.parse(JSON.stringify(e)),Q=(e,t=[],n=[],r)=>({status:e,...r===void 0?{}:{current:r},errors:t,cleanupErrors:n}),LR=(e,t)=>e.queueItemID===t.queueItemID&&e.operationID===t.operationID&&e.messageID===t.messageID,RR=(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,zR=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}),VR=e=>`${e.queueItemID}\u0000${e.operationID}\u0000${e.messageID}`,HR=e=>typeof e==`number`&&Number.isSafeInteger(e),UR=(e,t)=>{if(zR(BR(e))!==zR(BR(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)))},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))},GR=(e,t,n={})=>{let r=ZL(),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=>LR(t,e)),_=(e,t,n,r,i)=>({phase:e,code:t,...n?{scopeKey:YL(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=RR(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?sR(u,{normalizeSending:!0}):{status:`ok`,snapshot:ZL(),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:()=>IR(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=YL(t.owner),l=IR(r);l.queues[s]=[...l.queues[s]??[],t];let d=sR(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(IR(o)),u=IR(r),d=YL(o.owner);u.queues[d]=u.queues[d].map(t=>LR(t,e)?l:t);let f=sR(u);if(!LR(l,e)||!UR(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=IR(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=YL(o.owner),l=r.queues[s];if(!l||l.length!==1||!LR(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={...IR(o),owner:t},f=sR({version:4,queues:{[YL(t)]:[d]},migration:r.migration});if(f.status===`corrupt`||f.issues.length)return Q(`failed`,[_(`identity`,`invalid-bind`,o)]);let p=IR(r),m=s,h=YL(t);p.queues[m]=p.queues[m].filter(t=>!LR(t,e)),p.queues[m].length||delete p.queues[m],p.queues[h]=[d,...p.queues[h]??[]];let v=sR(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[YL(s)];if(!l||l.length!==e.length||o.some(e=>zR(e.owner)!==zR(s)||e.attachments.length)||l.some((t,n)=>!LR(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=>({...IR(e),owner:t})),p=IR(r),m=YL(s),h=YL(t);p.queues[m]=p.queues[m].filter(e=>!d.some(t=>LR(e,t))),p.queues[m].length||delete p.queues[m],p.queues[h]=[...f,...p.queues[h]??[]];let v=sR(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(VR(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(VR(t),{token:m,identity:t,held:u}),{...Q(`committed`,[],[],!0),token:m,values:l}}),releaseSend:(e,t)=>m(async()=>{let n=f.get(VR(e));if(typeof t!=`string`||!n||n.token!==t)return Q(`stale`);f.delete(VR(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=IR(r);for(let[t,n]of Object.entries(s.queues)){let r=n.filter(t=>!LR(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(VR(e));f.delete(VR(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}}},KR=()=>{let e=fR(),t=gR(e),n=Wn();return{controller:FR(GR(n,t),()=>{let e=i(),t=h();return{transportIdentity:e,generation:t,isCurrent:()=>i()===e&&h()===t}}),migrate:async()=>jR(e,n)}},qR=(e=KR)=>{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)}},JR,YR=()=>JR??=qR(),XR=26214400,ZR=52428800,QR=async e=>[...new Uint8Array(await crypto.subtle.digest(`SHA-256`,await e.arrayBuffer()))].map(e=>e.toString(16).padStart(2,`0`)).join(``),$R=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>XR)throw RangeError(`message-queue-attachment-too-large`);n+=e}if(n>ZR)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 cL({signal:t});await lL(e,n.value,await QR(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}},ez,tz=()=>{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 ez??=fe()}},nz={queue:void 0,capture:()=>({transportIdentity:``,generation:0}),current:()=>!0,admit:_L,create:eL,details:tL,stage:nL,seal:rL,upload:$R,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:()=>{}},rz=e=>({scopeKey:YL(e.owner),queueItemID:e.queueItemID,operationID:e.operationID,messageID:e.messageID}),iz=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(``)}`,az=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}}),oz=e=>Array.isArray(e)?`[${e.map(oz).join(`,`)}]`:e&&typeof e==`object`?`{${Object.keys(e).sort().map(t=>`${JSON.stringify(t)}:${oz(e[t])}`).join(`,`)}}`:JSON.stringify(e),sz=async e=>[...new Uint8Array(await crypto.subtle.digest(`SHA-256`,new TextEncoder().encode(oz(e))))].map(e=>e.toString(16).padStart(2,`0`)).join(``),cz=e=>{let t={...nz,...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(rz(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:az(s)}};n||(p=`admit`,await t.admit({requestID:await iz(s.operationID),..._,signal:o})),e.push({item:s,scopeOrdinal:h,itemOrdinal:g,payload:_,payloadHash:await sz(_)}),f++}finally{await t.queue.releaseSend(rz(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 sz(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=tz(),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})}}}},lz=e=>typeof e==`object`&&!!e&&e.kind===`pending-admission`,uz=(e,t)=>e.then(e=>{if(t?.aborted)throw new DOMException(`Aborted`,`AbortError`);return e}),dz={snapshot:e=>uz(ML(L),e),status:e=>uz(kL(L),e),scope:HI,waitInvalidation:WI,admit:_L,edit:vL,remove:bL,reserve:fL,renew:mL,release:pL,removeReserved:hL,reorder:xL,manualSend:yL,upload:$R,client:L,capture:()=>({transportIdentity:i(),generation:h()}),current:e=>e.transportIdentity===i()&&e.generation===h(),legacyManualSend:async()=>{},shadowQueue:YR,admissionUploadTimeoutMs:12e4,admissionRequestTimeoutMs:2e4,admissionReconcileTimeoutMs:2e4},fz=e=>e instanceof X&&(e.code===`revision_conflict`||e.code===`row_version_conflict`),pz=e=>e instanceof X&&e.code===`unavailable`,mz=8,hz=(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))]},gz=e=>`${e.transportIdentity}\u0000${ne(e.directory)}\u0000${e.sessionID}`,_z=(e,t)=>new Promise(n=>{let r=setTimeout(n,e);t.addEventListener(`abort`,()=>{clearTimeout(r),n()},{once:!0})}),vz=(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)})},yz=(e={})=>{let t={...dz,...e},n={...t,snapshot:e.snapshot??(e=>uz(ML(t.client,t.capture().transportIdentity),e)),status:e.status??(e=>uz(kL(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?gz({transportIdentity:n,directory:a.directory,sessionID:a.sessionID}):r?gz({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;NL(n.client,e,t.transportIdentity);let a=gz({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)NL(n.client,e,i.transportIdentity);if(FL(n.client,e,i.transportIdentity),e.scopes.length===0)LL(n.client,i.transportIdentity);else for(let e of o.keys())a.has(e)||RL(n.client,e,i.transportIdentity);y(e.scopes,i);for(let e of t){let t=gz({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)||(PL(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 _z(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)??IL(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?IL(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<mz;t++){let s=r.scopes.get(e),c=s?IL(n.client,e,s.revision,a.transportIdentity):void 0,l;try{try{l=(await i(o,c)).revision}catch(e){if(!pz(e)||!h(a))throw e;l=(await i(o,c)).revision}}catch(n){if(fz(n)&&t+1<mz){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 zL(n.client,e,a.transportIdentity);let i=r.scopes.get(e);return u({status:`committed`,scope:i?IL(n.client,e,i.revision,a.transportIdentity):t})}catch(r){if(fz(r)&&!t)continue;return h(a)?(m({error:r}),zL(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=gz(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=IL(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(gz(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 cz({queue:n.shadowQueue(),capture:()=>e,current:h,existing:()=>[...r.scopes.values()].flatMap(t=>IL(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 oL({expectedGeneration:e,signal:i?.signal}),await T()},resume:async e=>{await sL({expectedGeneration:e,signal:i?.signal}),await T()},stageAdmission:({requestID:e,scope:t,item:n})=>{let r=gz({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=gz({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=gz({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 vz(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 vz(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 vz(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?vz(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<mz;a++){let d=r.scopes.get(t),f=(d?IL(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(!fz(e)||a+1>=mz)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<mz;a++){let d=r.scopes.get(t),f=(d?IL(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(!fz(e)||a+1>=mz)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:hz(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`)}}},bz,xz=()=>bz??=yz(),Sz=new WeakMap,Cz=e=>{let t=e,r=Sz.get(t);if(r)return r.refs++,()=>{r.refs--,r.refs||(r.unsubscribe(),Sz.delete(t))};let i={refs:1,unsubscribe:n(t=>{a(t)&&e.restart()})};return Sz.set(t,i),()=>{i.refs--,i.refs||(i.unsubscribe(),Sz.delete(t))}},wz=(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:Tz(r),semantics:i}},Tz=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)})},Ez=`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.
|
|
405
|
+
`,Dz=e=>{if(!e.startsWith(Ez))return[];try{let t=JSON.parse(e.slice(Ez.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[]}},Oz=e=>e.length===0?null:e.map(e=>`[skill:${e}]`).join(` `),kz=(e,t=36e3)=>{if(e.length===0)return null;let n=Ez,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(`,`)}]`},Az=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}},jz=(e,t)=>{let{sessionIds:n,skillNames:r}=Az(e),i=n.flatMap(e=>{let n=Md(e,t);if(!n)return[];let r=kd(n).find(t=>t.id===e);if(!r)return[];let i=Nd(e,n).flatMap(e=>{let t=Pd(e.id,n).filter(e=>e.type===`text`&&!$p(e)).map(e=>`text`in e&&typeof e.text==`string`?e.text:``).filter(Boolean).join(`
|
|
406
|
+
`);return t?[{role:e.role,text:t}]:[]});return[{id:r.id,title:r.title||r.id,directory:n,messages:i}]}),a=[],o=Oz(r);o&&a.push({text:o,synthetic:!0});let s=kz(i);return s&&a.push({text:s,synthetic:!0}),a},Mz=50,Nz=15e4,Pz=e=>{let t=0;for(let n of Object.values(e.partsByMessageID))for(let e of n){let n=e;n.type===`text`&&!$p(n)&&typeof n.text==`string`&&(t+=n.text.length)}return t},Fz=async(e,t,n)=>{let{sessionIds:r}=Az(e);if(r.length===0)return;let i=H();if(!i)return;let a=n?.maxPages??Mz,o=n?.maxChars??Nz;await Promise.all(r.map(async e=>{let n=Md(e,t);if(!n)return;let r=W(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&&Pz(s)<o;)await Su(n,e),s=i.getTranscript(r),c+=1}))},Iz=e=>!e||/(\s|\(|\)|\[|\]|\{|\}|"|'|`|,|\.|;|:)/.test(e),Lz=(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(!Iz(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}},Rz=new Set([`/`,`-`,`_`,`.`,` `,`:`,`\\`]);function zz(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(Rz.has(o)?0:.5)+i/1e3+a}function Vz(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=zz(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 Hz=/\.[a-z0-9]{1,8}$/i,Uz=new Set([`test`,`tests`,`__tests__`,`spec`,`specs`,`e2e`,`__mocks__`]),Wz=/\.(?:test|spec|e2e)\./i,Gz=.85,Kz=3,qz=3,Jz=1.25,Yz=-.35,Xz=-.5,Zz=e=>{let t=e.trim().replace(/^\.\//,``).replace(/^[/\\]+/,``).toLowerCase(),n=/[/\\]$/.test(t),r=t.replace(/[/\\]+$/,``),i=Math.max(r.lastIndexOf(`/`),r.lastIndexOf(`\\`)),a=(i>=0?r.slice(i+1):r).match(Hz),o=!n&&a!==null,s=o&&a?a[0].slice(1):null;return{raw:t,search:r,stem:o&&a?r.slice(0,r.length-a[0].length):r,extension:s,fileIntent:o,directoryIntent:n}},Qz=e=>{let t=Zz(e);return(t.fileIntent||t.directoryIntent)&&t.stem?t.stem:t.search},$z=e=>{let t=e.replace(/\\/g,`/`).replace(/\/+$/,``).toLowerCase();if(!t)return!1;let n=t.split(`/`).filter(Boolean);if(n.some(e=>Uz.has(e)))return!0;let r=n.at(-1)??t;return Wz.test(r)},eB=e=>e.replace(/\\/g,`/`).replace(/\/+$/,``).toLowerCase(),tB=(e,t)=>(e.name||t.split(`/`).filter(Boolean).pop()||t).toLowerCase(),nB=(e,t)=>e===null&&t===null?null:Math.min(e??1/0,t??1/0),rB=(e,t)=>{let n=eB(e.relativePath),r=tB(e,n),i=e.isDirectory===!0,a=nB(Bz(n,t.search),Bz(r,t.search)),o;if(a!==null)o=a;else if(t.stem&&t.stem!==t.search){let e=nB(Bz(n,t.stem),Bz(r,t.stem));if(e===null)return null;o=e+Gz}else return null;return t.fileIntent&&i&&(o+=Kz),t.directoryIntent&&!i&&(o+=qz),t.fileIntent&&!i&&t.extension&&e.extension===t.extension&&(o+=Yz),t.directoryIntent&&i&&r===t.stem&&(o+=Xz),$z(n)&&!$z(t.search)&&(o+=Jz),o},iB=(e,t,n)=>{let r=n?.limit??20,i=Zz(t);if(!i.search&&!i.stem)return e.slice(0,r);let a=e.flatMap(e=>{let t=rB(e,i);return t===null?[]:[{item:e,score:t,sortKey:eB(e.relativePath)}]});return a.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),a.slice(0,r).map(({item:e})=>e)},aB=/\.[a-z0-9]{1,8}$/i,oB=/(\s|\(|\)|\[|\]|\{|\}|"|'|`|,|\.|;|:)/,sB=e=>e.includes(`/`)||e.includes(`\\`)||e.includes(`.`),cB=e=>{if(!sB(e))return!1;let t=e.replace(/\\/g,`/`);if(t.endsWith(`/`))return!0;let n=t.split(`/`).filter(Boolean).pop()??t;return aB.test(n)},lB=({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});return iB(Array.from(a.values()),n,{limit:i})},uB=6,dB=(e,t,n)=>iB(e,t,{limit:n?.limit??uB}),fB=(e,t)=>e===null&&t===null?null:Math.min(e??1/0,t??1/0),pB=(e,t)=>{let n=t.trim().toLowerCase();if(!n)return[...e].sort((e,t)=>e.name.localeCompare(t.name));let r=e.flatMap(e=>{let t=fB(Bz(e.name,n),Bz(e.description??``,n));return t===null?[]:[{agent:e,score:t}]});return r.sort((e,t)=>e.score===t.score?e.agent.name.localeCompare(t.agent.name):e.score-t.score),r.map(e=>e.agent)},mB=(e,t)=>{let n=e[t];return n!==void 0&&/\s/.test(n)},hB=({mention:e,confirmed:t,terminated:n})=>!e||e.startsWith(`session:`)?!1:t?!0:n&&sB(e),gB=(e,{confirmedValues:t,agentNames:n})=>{if(!e.includes(`@`))return[];let r=[],i=/@([^\s]+)/g,a;for(;(a=i.exec(e))!==null;){let i=a[0],o=String(a[1]||``).trim().replace(/[),.;:!?`"'>]+$/g,``),s=a.index,c=s+i.length,l=s>0?e[s-1]:null;if(!(!l||oB.test(l))||o.length===0||o.startsWith(`session:`))continue;if(n.has(o.toLowerCase())){r.push({start:s,end:c,kind:`agent`});continue}let u=mB(e,s+1+o.length);hB({mention:o,confirmed:t.has(o),terminated:u})&&r.push({start:s,end:c,kind:`file`})}return r},_B=(e,{agentNames:t,includeUnterminatedPastedReferences:n=!1}={})=>{if(!e.includes(`@`))return[];let r=[],i=/@([^\s]+)/g,a;for(;(a=i.exec(e))!==null;){let i=String(a[1]||``).trim().replace(/[),.;:!?`"'>]+$/g,``),o=a.index,s=o>0?e[o-1]:null;if(!(!s||oB.test(s))||!i||i.startsWith(`session:`)||t?.has(i.toLowerCase()))continue;let c=o+1+i.length,l=mB(e,c),u=n&&cB(i);!l&&!u||!sB(i)&&!u||r.push({kind:i.endsWith(`/`)||i.endsWith(`\\`)?`directory`:`file`,value:i,start:o,end:c})}return r},vB=/(^|[\s([{])(@session:([A-Za-z0-9_-]+))(?=$|[\s)\]},.!?;:])/g,yB=e=>{let t=[];vB.lastIndex=0;let n;for(;(n=vB.exec(e))!==null;){let e=n.index+n[1].length;t.push({start:e,end:e+n[2].length,id:n[3]})}return t},bB=e=>{let t=[],n=new Set;for(let{id:r}of yB(e))n.has(r)||(n.add(r),t.push(r));return t},xB=(e,t)=>{let n=e;for(let r of yB(e).reverse()){let e=t.get(r.id)??r.id;n=`${n.slice(0,r.start)}@${e}${n.slice(r.end)}`}return n},SB=({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)},CB=({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(`
|
|
407
|
+
`)?null:s},wB=/(^|\s)\/\u2003?([a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?)/g,TB=e=>Je(e.trim()),EB=e=>{let t=e.trim();if(t.toLowerCase().startsWith(`file://`))return t;let n=TB(t).split(`/`).map(e=>/^[A-Za-z]:$/.test(e)?e:encodeURIComponent(e)).join(`/`);return/^[A-Za-z]:/.test(n)?`file:///${n}`:`file://${n}`},DB=e=>({chunks:[{provenance:`authored`,text:e,start:0,end:e.length}],semantics:[]}),OB=({text:e,root:t,confirmedFilePaths:n,confirmedDirectoryPaths:r=[],agentNames:i})=>{let a=[],o=new Set,s=t?TB(t).replace(/\/+$/,``):``,c=e=>TB(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)?Le:`text/plain`;a.push({id:fe(),file:new File([],m,{type:h}),filename:m,mimeType:h,size:0,dataUrl:EB(p),source:`server`,serverPath:p})}return a},kB=(e,t)=>{let n=[],r=new Set;wB.lastIndex=0;let i;for(;(i=wB.exec(e))!==null;){let e=i[2]||``;t.has(e)&&!r.has(e)&&(r.add(e),n.push({type:`skill`,skillName:e}))}return n},AB=(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},jB=({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(kd(r).map(e=>[e.id,e.title||e.id])),u=[];for(let e of jd().values()){let t=typeof e.title==`string`?e.title.trim():``;t&&u.push({id:e.id,title:t})}return wz(e,e=>{let r=Lz(e,t),d=[...new Set([...bB(e),...AB(e,u)])],f=[...kB(e,n),...d.map(e=>({type:`session`,sessionId:e}))],p=OB({text:r.sanitizedText,root:i,confirmedFilePaths:a,confirmedDirectoryPaths:o,agentNames:c});return{text:xB(Ge(Ve(r.sanitizedText,s)),l),agent:r.mention?.name,attachments:p,semantics:f}})},MB=e=>e.map(e=>({text:e.text,...e.attachments?.length?{attachments:Tz(e.attachments)}:{},synthetic:!0})),NB=({text:e,attachments:t,semanticParts:n,syntheticParts:r=[]})=>[{type:`text`,text:e},...Tz(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},...Tz(e.attachments??[]).map(e=>({type:`file`,mime:e.mimeType,attachmentID:e.id}))])],PB=(e,t)=>{let n=t.map(e=>({...e,attachments:Tz(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}})},FB=e=>e?.trim()||void 0,IB=(e,t)=>e!==`assistant`||t===`server`,LB=(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)})},RB=({currentConfig:e,sessionID:t,selection:n})=>{let r=FB(e.currentAgentName),i=t?FB(n.getSessionAgentSelection(t))??r:r,a=t&&i?n.getAgentModelForSession(t,i):null,o=t?n.getSessionModelSelection(t):null,s=FB(a?.providerId)??FB(o?.providerId)??FB(e.currentProviderId),c=FB(a?.modelId)??FB(o?.modelId)??FB(e.currentModelId);if(!s||!c)return;let l=t&&i?FB(n.getAgentModelVariantForSession(t,i,s,c))??FB(e.currentVariant):FB(e.currentVariant);return{providerID:s,modelID:c,...i?{agent:i}:{},...l?{variant:l}:{}}},zB=e=>!!(FB(e?.providerID)&&FB(e?.modelID)),BB=(e,t)=>e.transportIdentity===t.transportIdentity&&e.generation===t.generation,VB=(e,t)=>BB(e,t),HB=e=>JSON.stringify([e.text,e.references]),UB=e=>JSON.stringify(e),WB=(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,GB=({draftKey:e,runtime:t,document:n,attachments:r,inlineDrafts:i})=>({draftKey:{transportIdentity:e.transportIdentity,owner:{...e.owner}},draftKeyID:R(e),runtime:{...t},documentFingerprint:HB(n),attachments:new Map(r.map(e=>[e.id,e])),inlineDrafts:new Map(i.map(e=>[e.id,UB(e)]))}),KB=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`||!VB(e.runtime,n())||!d||R(d)!==e.draftKeyID)return{status:`stale`,bodyConsumed:!1,attachmentIDsConsumed:[],inlineDraftIDsConsumed:[]};let f=HB(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||!WB(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||UB(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}},qB=(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)}}),JB=(e=fe,t=()=>ge(`msg`),n=Date.now())=>({requestID:e(),queueItemID:`queued-${e()}`,operationID:`operation-${e()}`,messageID:t(),createdAt:n}),YB=({stage:e,clearComposer:t,postClear:n})=>{let r=e();return t(),n?.(),r},XB=`blocked`,ZB=new Set,QB=()=>XB,$B=e=>{if(XB!==e){XB=e;for(let e of ZB)e()}},eV=e=>(ZB.add(e),()=>ZB.delete(e)),tV=()=>XB===`legacy-enabled`,nV=2e3,rV=6e4,iV=5e3,aV=3,oV=e=>Math.min(nV*2**Math.max(e-1,0),rV),sV=new Map,cV=new Map,lV=new Set,uV=new Set,dV=0,fV=()=>{dV+=1;for(let e of uV)e()},pV=(e,t)=>JSON.stringify([D(e),t.queueItemID,t.operationID]),mV=e=>`scope:${D(e)}`,hV=()=>new Set([...sV.keys(),...cV.keys()]),gV=e=>(uV.add(e),()=>uV.delete(e)),_V=e=>{let t=(0,V.c)(2),n;return t[0]===e?n=t[1]:(n=()=>e?cV.has(mV(e)):!1,t[0]=e,t[1]=n),G.useSyncExternalStore(gV,n,RV)},vV=()=>structuredClone(re.getState().queuedMessages),yV=async()=>{for($B(`blocked`);sV.size||cV.size||lV.size;)await Promise.allSettled([...new Set([...sV.values(),...cV.values(),...lV])]);return y(),vV()},bV=e=>e===`idle`,xV=e=>{if(e===void 0)return`unknown`;let t=e[e.length-1];return!t||t.role===`assistant`?`settled`:`unsettled`},SV=(e,t,n,r,i=!1,a=`settled`)=>e?e.status===`sending`?i?{}:{recover:!0}:e.status===`queued`?bV(t)&&a!==`unsettled`?{dispatch:!0}:{}:e.status===`retrying`?e.nextAttemptAt&&e.nextAttemptAt>r?{nextWakeAt:e.nextAttemptAt}:bV(t)&&a!==`unsettled`?{dispatch:!0}:{}:e.status===`reconciling`?(e.reconciliationChecks??0)>=aV||(e.reconciliationDeadlineAt??1/0)<=r?{resolve:!0}:(e.reconciliationNextCheckAt??0)>r?{nextWakeAt:e.reconciliationNextCheckAt}:i?{}:{query:!0}:{}:{},CV=(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},wV=(e,t)=>{let n;for(let r of Nd(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,t)=>{let n;for(let r of e.values())r.expiresAt>t&&(!n||r.expiresAt<n)&&(n=r.expiresAt);return n},EV=({queuedMessages:e,activeTransportIdentity:t,getStatus:n,getTurnState:r=()=>`settled`,previous:i,inFlight:a,dispatchInFlight:o=hV(),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=pV(m,e),_=mV(m);d.add(h);let v=n(m),y=SV(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},DV=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=jB({plan:n?.ok?{chunks:n.chunks??[],semantics:n.semantics??[]}:DB(t.content),agents:Hf.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=jz(i.semantics,r);return{queuedMessageId:t.id,messageID:t.messageID,operationID:t.operationID,primaryText:i.text,primaryAttachments:Tz([...t.attachments??[],...i.attachments]),agentMentionName:i.agent,additionalParts:a,sendConfig:t.sendConfig}},OV=(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}),kV=(e,t)=>t?{...t}:RB({currentConfig:Hf.getState(),sessionID:e,selection:Jo.getState()})??{providerID:``,modelID:``},AV=e=>{let t=$.getState().getDirectoryForSession(e);return t?{state:`bound`,transportIdentity:i(),directory:t,sessionID:e}:null},jV=(e,t)=>!!(e===`queued`||e===`retrying`||t&&(e===`failed`||e===`unresolved`)),MV=e=>e.status===`sending`||e.status===`reconciling`,NV=(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 PV(e,t={}){if(!tV())return Promise.resolve();let n=re.getState(),r=t.scope??AV(e),a=t.manual===!0||t.delivery===`steer`;if(!r||r.transportIdentity!==i())return Promise.resolve();let o=NV(n,e,t.queueItemID,r??void 0);if((a||!t.scope)&&!cV.has(mV(r))){let i=n.getQueueForScope({state:`unbound-legacy`,sessionID:e}),a=n.getQueueForScope(r),s=t.queueItemID?i.find(e=>e.queueItemID===t.queueItemID||e.id===t.queueItemID):i[0];(o||s)&&!i.some(MV)&&!a.some(MV)&&(n.bindLegacyQueue({state:`unbound-legacy`,sessionID:e},r),o=NV(n,e,t.queueItemID,r))}if(!o||o.scope.transportIdentity!==i())return Promise.resolve();let s=o.scope;if(s.deliveryTarget?.kind===`assistant`)return Promise.resolve();let c=o.item,l={queueItemID:c.queueItemID,operationID:c.operationID,messageID:c.messageID},u=pV(s,l),d=sV.get(u);if(d)return d;if(cV.has(mV(s))||!jV(c.status,a)||c.status===`retrying`&&!a&&(c.nextAttemptAt??0)>Date.now())return Promise.resolve();let f,p=new Promise(e=>{f=e});return sV.set(u,p),cV.set(mV(s),p),fV(),(async()=>{try{let r=wV(e,s.directory),o=eH(e),u=o?.queueItemID===c.queueItemID?o.messageID:be(`msg`,r),d=n.beginQueueItemDispatch(s,l,u,a);if(!d)return;c=d;let f={queueItemID:d.queueItemID,operationID:d.operationID,messageID:d.messageID};if(!y()){n.markQueueItemPreDispatchRetry(s,f,Date.now()+oV(d.attemptCount+1));return}let p=h(),m=DV([d]);if(!m)return;let g=kV(e,d.sendConfig);if(!g.providerID||!g.modelID){n.markQueueItemPreDispatchRetry(s,f,Date.now()+oV(d.attemptCount+1));return}if(!tV()){n.markQueueItemPreDispatchRetry(s,f,Date.now()+oV(d.attemptCount+1));return}let _=()=>{let e=re.getState().getQueueForScope(s)[0];return i()===s.transportIdentity&&h()===p&&e?.queueItemID===f.queueItemID&&e.operationID===f.operationID&&e.messageID===f.messageID&&D(e.owner)===D(s)},v=()=>{let e=re.getState().getQueueForScope(s)[0];return e?.queueItemID===f.queueItemID&&e.operationID===f.operationID&&e.messageID===f.messageID&&D(e.owner)===D(s)},b=t=>{_()&&t===f.messageID&&(re.getState().confirmQueueItem(s,f),mH(e))};try{await OV(e,m,g,{directory:s.directory,delivery:t.delivery,onSendConfirmed:b}),b(f.messageID)}catch(e){if(!v())return;let t=uS(e);t===`pre-dispatch`?n.markQueueItemPreDispatchRetry(s,f,Date.now()+oV(d.attemptCount+1)):t===`definitive-rejection`?n.markQueueItemDefinitiveFailure(s,f):n.markQueueItemReconciling(s,f)}}finally{let e=!1;sV.get(u)===p&&(sV.delete(u),e=!0),cV.get(mV(s))===p&&(cV.delete(mV(s)),e=!0),e&&fV(),f?.()}})(),p}async function FV(e,t=h()){if(!tV())return;let n=Math.min(e.item.reconciliationDeadlineAt??1/0,Date.now()+iV),r=new AbortController,a=setTimeout(()=>r.abort(),Math.max(0,n-Date.now())),o=null;try{o=await hC(e.scope.sessionID,e.item.messageID,e.scope.directory,{signal:r.signal,timeoutMs:Math.max(0,n-Date.now())})}catch{o=null}finally{clearTimeout(a)}let s=re.getState().getQueueForScope(e.scope)[0];s?.queueItemID===e.item.queueItemID&&s.operationID===e.item.operationID&&s.messageID===e.item.messageID&&D(s.owner)===D(e.scope)&&i()===e.scope.transportIdentity&&h()===t&&(o?.some(t=>t.info.id===e.item.messageID)?(MU(e.scope.sessionID,e.item.messageID),re.getState().confirmQueueItem(e.scope,{queueItemID:s.queueItemID,operationID:s.operationID,messageID:s.messageID})):re.getState().recordQueueItemReconciliationCheck(e.scope,{queueItemID:e.item.queueItemID,operationID:e.item.operationID,messageID:e.item.messageID}))}var IV=(e,t)=>{Yx({sessionID:e.sessionID,messageID:t.messageID,directory:e.directory}),re.getState().resolveQueueItemReconciliation(e,{queueItemID:t.queueItemID,operationID:t.operationID,messageID:t.messageID})};function LV(e){let t=typeof e==`boolean`?e:e?.enabled??!0,r=G.useSyncExternalStore(eV,QB,QB),a=re(e=>e.queuedMessages),o=Up(e=>e.runsByOriginalSessionID),s=$(e=>e.queueAbortBlocks),l=G.useSyncExternalStore(n,i,i),u=G.useSyncExternalStore(n,c,c),d=G.useSyncExternalStore(gV,()=>dV,()=>dV),f=G.useMemo(()=>Object.values(a).flatMap(e=>{let t=e[0]?.owner;return t?.state===`bound`&&t.transportIdentity===l?[t]:[]}),[l,a]),p=HP(f),m=UP(),g=SF(),_=G.useMemo(()=>f.map(e=>`${e.directory}\n${e.sessionID}`).join(`\0`),[f]),v=G.useRef(f);v.current=f;let y=G.useSyncExternalStore(G.useMemo(()=>e=>_?td(v.current.map(e=>({directory:e.directory,sessionID:e.sessionID})),e,e=>g.getChild(e),{subscribeRebuild:e=>g.subscribeRegistry(e)}):()=>void 0,[g,_]),G.useMemo(()=>()=>_?nd(v.current.map(e=>({directory:e.directory,sessionID:e.sessionID})),e=>g.getChild(e)):``,[g,_]),()=>``),b=G.useCallback(e=>m(e),[m]),x=G.useCallback(e=>xV(md(e.directory,e.sessionID,g.getChild(e.directory))),[g]),[S,C]=G.useState(0),w=G.useRef(new Map),T=G.useRef(new Set);G.useEffect(()=>{if(!t||r!==`legacy-enabled`)return;let e=Date.now();$.getState().pruneQueueAbortBlocks(e);let n=new Set,i=new Set;for(let[t,n]of s)n.expiresAt>e&&i.add(t);for(let e of CV(o,u))n.add(e);let c=EV({queuedMessages:a,activeTransportIdentity:l,getStatus:b,getTurnState:x,previous:w.current,inFlight:T.current,blockedSessions:n,blockedScopeKeys:i,now:e});for(let e of c.recoverOperations)re.getState().markQueueItemReconciling(e.scope,{queueItemID:e.item.queueItemID,operationID:e.item.operationID,messageID:e.item.messageID});for(let e of c.dispatchScopes)re.getState().getQueueForScope(e)[0]&&PV(e.sessionID,{scope:e}).finally(()=>{C(e=>e+1)});for(let e of c.resolveOperations)IV(e.scope,e.item);for(let e of c.queryOperations){T.current.add(e.key);let t=FV(e,h()).finally(()=>{T.current.delete(e.key),lV.delete(t),C(e=>e+1)});lV.add(t)}let d=TV(s,e),f=c.nextWakeAt?d?Math.min(c.nextWakeAt,d):c.nextWakeAt:d,p;return f&&(p=setTimeout(()=>{$.getState().pruneQueueAbortBlocks(),C(e=>e+1)},Math.max(0,f-Date.now()))),()=>{p&&clearTimeout(p)}},[u,l,g,d,t,r,a,s,o,p,y,b,x,S])}function RV(){return!1}var zV={server:xz(),queue:YR(),status:e=>kL(L).then(t=>{if(e?.aborted)throw new DOMException(`Aborted`,`AbortError`);return t}),activate:iL,lateCommit:aL,capture:()=>({transportIdentity:i(),generation:h()}),current:e=>e.transportIdentity===i()&&e.generation===h(),quiesce:async()=>{await yV()},flush:async()=>{y()},prepare:T,resolveDirectory:e=>$.getState().getDirectoryForSession(e)},BV=()=>({ownership:`probing`,migration:`idle`,frozen:!0,admission:`frozen`,importState:{status:`idle`,imported:0,total:0,issues:[],canActivate:!1}}),VV=(e={})=>{let t={...zV,...e},r=BV(),i=0,o,s,c,l=500,u,d=!1,f=new Set,p=e=>{r={...r,...e};let n=r.ownership===`legacy-unsupported`;$B(n?`legacy-enabled`:`blocked`),O(n?`open`:r.migration===`freezing`||r.ownership===`probing`||r.ownership===`blocked`?`quiescing`:`recovery-read-only`),(r.ownership===`server-active`||r.ownership===`server-paused`)&&te(t.capture().transportIdentity),f.forEach(e=>e())},m=()=>{clearTimeout(c),c=setTimeout(()=>{y()},l),l=Math.min(3e4,l*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();o?.abort(),o=new AbortController;try{if(await t.server.refresh(),!t.current(e)||o.signal.aborted)return r;let n=await t.status(o.signal);return!t.current(e)||o.signal.aborted?r:n.capability?n.protocol!==void 0&&n.protocol!==4?(h(Error(`protocol-unsupported`)),r):(p({ownership:`probing`,migration:`freezing`,frozen:!0,admission:`frozen`,status:n,error:void 0}),await _(e)?n.authority===`active`||n.authority===`paused`?(p({ownership:n.authority===`active`?`server-active`:`server-paused`,migration:`late-importing`,frozen:!1,admission:`server`,status:n,error:void 0}),await b(e,n,`late`),r):(p({migration:`staging`}),await b(e,n,`activation`),r):r):(h(Error(`capability-unavailable`)),r)}catch(n){return!t.current(e)||o?.signal.aborted?r:n instanceof X&&n.status===501?(p({ownership:`legacy-unsupported`,migration:`idle`,frozen:!1,admission:`legacy`,error:void 0}),r):(h(n),r)}},y=()=>u?(d=!0,u):(u=v().finally(()=>{u=void 0,d&&(d=!1,y())}),u),b=async(e,n,r)=>{let i=await cz({queue:t.queue,capture:()=>e,current:t.current,kind:r,authorityGeneration:()=>n.generation??0,publish:e=>p({importState:e})}).run(o?.signal);if(t.current(e)){if(p({importState:i}),!i.canActivate||!i.importID||!i.manifestHash){g(e,n,r,i);return}p({migration:r===`activation`?`activating`:`late-importing`});try{let a=r===`activation`?await t.activate(i.importID,{requestID:`shadow-activate:${i.manifestHash}`,expectedGeneration:n.generation??0,manifestHash:i.manifestHash,protocol:4,signal:o?.signal}):await t.lateCommit(i.importID,{requestID:`shadow-late:${i.manifestHash}`,expectedGeneration:n.generation??0,manifestHash:i.manifestHash,protocol:4,signal:o?.signal});if(!t.current(e))return;l=500,p({ownership:r===`activation`?`server-active`:n.authority===`paused`?`server-paused`:`server-active`,migration:`complete`,frozen:!1,admission:`server`,importState:{...i,activationEpoch:a.activationEpoch}})}catch(a){if(!t.current(e))return;let o=await jL(L).catch(()=>void 0);if(o?.manifestHash===i.manifestHash&&o.activationEpoch!==void 0&&(o.authority===`active`||o.authority===`paused`)){l=500,p({ownership:o.authority===`paused`?`server-paused`:`server-active`,migration:`complete`,frozen:!1,admission:`server`,status:o,importState:{...i,activationEpoch:o.activationEpoch}});return}if(o?.authority===`active`||o?.authority===`paused`){g(e,o,`late`,i,a);return}g(e,n,r,i,a)}}},x,S=()=>{o?.abort(),o=void 0,clearTimeout(c),c=void 0,s?.(),s=void 0};return{subscribe:e=>(f.add(e),()=>f.delete(e)),getSnapshot:()=>r,start:()=>{i++,x!==void 0&&(clearTimeout(x),x=void 0),!(i>1)&&(s=n(e=>{a(e)&&(o?.abort(),p(BV()),setTimeout(()=>{y()},0))}),y())},stop:()=>{i=Math.max(0,i-1),!i&&(x!==void 0&&clearTimeout(x),x=setTimeout(()=>{x=void 0,i||S()},0))},refresh:y}},HV,UV=()=>HV??=VV(),WV=t({confirmQueueAbortOptimistic:()=>mH,getQueueAbortOptimisticPresentation:()=>eH,getQueueAbortOptimisticRevision:()=>$V,inspectQueueAbortOptimisticTranscript:()=>uH,isQueueItemSendPendingByAbortOptimistic:()=>tH,planQueueAbortOptimisticReconcile:()=>dH,promoteQueueHeadOnAbort:()=>bH,reconcileQueueAbortOptimistic:()=>yH,rollbackQueueAbortOptimistic:()=>pH,subscribeQueueAbortOptimistic:()=>QV,useQueueAbortOptimisticReconcile:()=>xH}),GV=new Set([`queued`,`retrying`]),KV=new Set([`sending`,`reconciling`]),qV=new Set([`failed`,`unresolved`]),JV=new Map,YV=new Set,XV=0,ZV=()=>{XV+=1;for(let e of YV)e()},QV=e=>(YV.add(e),()=>{YV.delete(e)}),$V=()=>XV,eH=e=>JV.get(e),tH=(e,t)=>JV.get(e)?.queueItemID===t,nH=(e,t)=>{let n;for(let r of Nd(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},rH=e=>{let t=e?.[0];if(!(!t||!GV.has(t.status))&&t.deliveryTarget?.kind!==`assistant`)return t},iH=(e,t)=>{let n=re.getState(),r={state:`bound`,transportIdentity:i(),directory:t,sessionID:e};return rH(n.getQueueForScope(r))??rH(n.getQueueForScope(j(e)))},aH=(e,t)=>{let n=UV().getSnapshot().ownership;return n!==`server-active`&&n!==`server-paused`?void 0:rH(xz().getScope({transportIdentity:i(),directory:t,sessionID:e})?.items)},oH=e=>{let t=e.sendConfig?.providerID,n=e.sendConfig?.modelID;return!t||!n?null:{providerID:t,modelID:n,agent:e.sendConfig?.agent}},sH=e=>!!e&&typeof e==`object`&&e.__openchamberOptimistic===!0,cH=(e,t,n)=>{try{let r=H();return r?r.getTranscript(W(t,e)).partsByMessageID[n]??[]:[]}catch{return[]}},lH=(e,t,n)=>{let r=typeof e.id==`string`?e.id:``;if(!r||e.role!==`user`)return!1;let i=cH(t,n,r);return i.length!==0&&i.some(e=>!sH(e))},uH=(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}},dH=(e,t,n)=>{let r=e?.messageID;return e&&(GV.has(e.status)||KV.has(e.status))?r&&n&&r!==n?`rebind`:KV.has(e.status)||t.hasPinnedMessage?`confirm`:`keep`:e&&qV.has(e.status)?`rollback`:t.hasPinnedMessage?`confirm`:t.hasLaterUserMessage?`rollback`:`keep`},fH=e=>{let t=JV.get(e);if(t)return JV.delete(e),ZV(),t},pH=e=>{fH(e)},mH=e=>{fH(e)},hH=e=>{if(e.source===`server`){let t=xz().getScope({transportIdentity:i(),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:i(),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},gH=e=>{let t=Nd(e.sessionID,e.directory).map(t=>({id:typeof t?.id==`string`?t.id:void 0,role:t?.role,optimistic:!lH(t,e.sessionID,e.directory)}));return uH(e.messageID,t)},_H=(e,t)=>{let n=JV.get(e);!n||!t||n.messageID===t||(JV.set(e,{...n,messageID:t}),ZV())},vH=(e,t,n)=>{if(t===`confirm`)mH(e.sessionID);else if(t===`rollback`)pH(e.sessionID);else if(t===`rebind`&&n?.messageID){_H(e.sessionID,n.messageID);let t=JV.get(e.sessionID);if(!t)return;let r=dH(hH(t),gH(t),t.messageID);if(r===`rebind`)return;vH(t,r,hH(t))}},yH=e=>{let t=e?[JV.get(e)].filter(e=>!!e):[...JV.values()];for(let e of t){let t=hH(e);vH(e,dH(t,gH(e),e.messageID),t)}},bH=e=>{if(!e||JV.has(e))return JV.get(e)??null;let t=$.getState().getDirectoryForSession(e);if(!t)return null;let n=aH(e,t),r=n?void 0:iH(e,t),i=n??r;if(!i)return null;let a=oH(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`,nH(e,t)),c={sessionID:e,directory:t,queueItemID:i.queueItemID,operationID:`operationID`in i?i.operationID:void 0,messageID:s,content:o,providerID:a.providerID,modelID:a.modelID,agent:a.agent,source:n?`server`:`legacy`};return JV.set(e,c),ZV(),c};function xH(){let e=(0,V.c)(6),t=G.useSyncExternalStore(QV,$V,$V),n=re(kH),r;e[0]!==t||e[1]!==n?(r=[t,n],e[0]=t,e[1]=n,e[2]=r):r=e[2],G.useEffect(OH,r);let i;e[3]===Symbol.for(`react.memo_cache_sentinel`)?(i=[],e[3]=i):i=e[3],G.useEffect(TH,i);let a;e[4]===t?a=e[5]:(a=[t],e[4]=t,e[5]=a),G.useEffect(SH,a)}function SH(){return td([...JV.values()].map(wH),CH)}function CH(){yH()}function wH(e){return{directory:e.directory,sessionID:e.sessionID}}function TH(){let e=xz().subscribe(DH),t=n(EH);return()=>{e(),t()}}function EH(){for(let e of[...JV.keys()])pH(e)}function DH(){yH()}function OH(){yH()}function kH(e){return e.queuedMessages}var AH=[`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(`
|
|
408
|
+
`);async function jH(e){try{let{currentProviderId:t,currentModelId:n}=Hf.getState(),r=await F(`/api/small-model/generate`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({prompt:e,system:AH,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 MH=[`active`,`paused`,`blocked`,`budgetLimited`,`complete`],NH=5e3,PH=e=>!!e&&typeof e==`object`&&!Array.isArray(e),FH=e=>typeof e==`string`&&MH.includes(e);function IH(e){let t=e?.metadata;if(!PH(t))return null;let n=t.openchamber;if(!PH(n))return null;let r=n.goal;if(!PH(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||!FH(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,NH),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 LH(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 RH(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 zH=e=>!!e&&typeof e==`object`&&!Array.isArray(e),BH=()=>`${Date.now().toString(36)}${Math.random().toString(36).slice(2,8)}`,VH=(e,t,n)=>LS(e,t,e=>{let t=zH(e.openchamber)?e.openchamber:{},r=n(zH(t.goal)?t.goal:null),i={...t};return r?i.goal=r:delete i.goal,{...e,openchamber:i}}),HH=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}},UH=e=>{F(`/api/goals/objective/${encodeURIComponent(e)}`,{method:`DELETE`}).catch(()=>void 0)};async function WH(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 GH=`
|
|
472
409
|
|
|
473
410
|
[… objective trimmed for the auditor — the full text was delivered in the chat message …]
|
|
474
411
|
|
|
475
|
-
`,hU=async e=>{if(e.length<=5e3)return e;let t=await eU(e);if(t)return t.slice(0,nU);let n=Math.max(0,Math.floor((nU-93)/2)),r=ft.getState().dictionary;return tE.error(pt(r,`chat.goal.toast.distillFallback`)),`${e.slice(0,n)}${mU}${e.slice(-n)}`};async function gU(e,t,n,r){let i=n.objective.trim();if(!i)throw Error(`Goal objective must not be empty`);let a=await hU(i),o=typeof n.tokenBudget==`number`&&Number.isFinite(n.tokenBudget)&&n.tokenBudget>0?Math.floor(n.tokenBudget):null,s=await dU(e,a),c=Date.now();await uU(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:lU(),objective:s?``:a,objectiveFile:s,status:`active`,tokenBudget:o,tokensUsed:0,turnsUsed:0,blockedStreak:0,note:``,statusReason:``,lastAccountedMessageID:``,createdAt:c,updatedAt:c})}async function _U(e,t){await uU(e,t,e=>!e||e.status!==`active`?e:{...e,status:`paused`,statusReason:`paused for question`,updatedAt:Date.now()})}async function vU(e,t,n){n===`paused`&&(UH(e),CC(e)),await uU(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 yU(e,t){let n=!1;await uU(e,t,e=>(n=e?.status===`active`,null)),fU(e),n&&(UH(e),CC(e))}var bU=`<system-reminder>`,xU=`</system-reminder>`,SU=e=>{let t=e.trim();return t?t.startsWith(bU)&&t.endsWith(xU)?t:`${bU}\n${t}\n${xU}`:``},CU=(e,t=c())=>`${t}\n${e}`,wU=(e,t)=>{let n=TU.getState();return t?n.sessionMemoryState.get(t):n.sessionMemoryState.get(CU(e))??n.sessionMemoryState.get(e)},TU=Oe()(e=>({sessionMemoryState:new Map,isSyncing:!1,updateViewportAnchor:(t,n,r,i)=>e(e=>{let a=new Map(e.sessionMemoryState),o=i??CU(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}})})),EU=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}})})),DU=e=>{if(!e)return``;let t=e.replace(/\\/g,`/`);return t===`/`?`/`:t.replace(/\/+$/,``)||t};function OU(e,t){if(e){if(!e.degraded&&e.cwd)return DU(e.cwd);if(e.worktreeRoot)return DU(e.worktreeRoot);if(e.cwd)return DU(e.cwd)}return t?DU(t):null}function kU(e){return e.worktreeStatus===`missing`||e.worktreeStatus===`invalid`?[`open-without-worktree-features`]:[]}function AU(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 jU(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?DU(e.pendingBootstrapDirectory):null;for(let r of e.worktrees){let i=DU(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 MU=`openchamber.session-switch.start`,NU=`openchamber.session-switch.highlight-painted`,PU=`openchamber.session-switch.content-committed`,FU=`data-openchamber-session-switch-highlight-ms`,IU=`data-openchamber-session-switch-content-ms`,LU=`openchamber.session-switch.highlight-latency`,RU=`openchamber.session-switch.content-latency`,zU=()=>typeof performance<`u`&&typeof performance.mark==`function`&&typeof performance.measure==`function`,BU=()=>zU()&&performance.getEntriesByName(MU,`mark`).length>0,VU=(e,t)=>{typeof document>`u`||document.documentElement.setAttribute(e,t.toFixed(2))},HU=(e=!1)=>{zU()&&(!e&&performance.getEntriesByName(MU,`mark`).length>0&&performance.getEntriesByName(PU,`mark`).length===0||(performance.clearMarks(MU),performance.clearMarks(NU),performance.clearMarks(PU),performance.clearMeasures(LU),performance.clearMeasures(RU),typeof document<`u`&&(document.documentElement.removeAttribute(FU),document.documentElement.removeAttribute(IU)),performance.mark(MU)))},UU=()=>{if(!BU())return;performance.mark(NU),performance.measure(LU,MU,NU);let e=performance.getEntriesByName(LU,`measure`).at(-1);e&&VU(FU,e.duration)},WU=()=>{if(!BU())return;performance.mark(PU),performance.measure(RU,MU,PU);let e=performance.getEntriesByName(RU,`measure`).at(-1);e&&VU(IU,e.duration)},GU={revision:0,sessionId:null},KU=new Set,qU=e=>{GU={revision:GU.revision+1,sessionId:e};for(let e of KU)e(GU);return GU},JU=()=>GU,YU=e=>(KU.add(e),()=>KU.delete(e)),XU=6e3;function ZU(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 QU(e,t){return{info:{...e.info,sessionID:t},parts:e.parts.map(n=>({...n,sessionID:t,messageID:e.info.id}))}}function $U(e,t){if(!e)return;let n=QU(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 eW(e){let t=e.directory??void 0,n=nW(e.sessionId,e.onSendConfirmed),r=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=i(),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(i()!==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)r=`[command:${v.reference??v.name}]${s?` ${s}`:``}`;else if(v)return fC({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 fC({sessionId:e.sessionId,content:r,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:r,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 tW(e,t){F(`/api/sessions/${e}/message-sent`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({messageID:t})}).catch(()=>{})}function nW(e,t){let n=!1;return r=>{if(!n){n=!0;try{t?.(r)}finally{tW(e,r)}}}}var rW=e=>{let t=e;return _(t.directory??null)??_(t.project?.worktree??null)},iW=f(),aW=`oc.chatInput.lastDraftTarget`,oW=()=>{try{let e=iW.getItem(aW);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}},sW=e=>{try{iW.setItem(aW,JSON.stringify(e))}catch{}},cW=Qo,lW=e=>{if(e)return EU.getState().getAttachment(e)},uW=(e,t,n)=>{if(!e)return null;let r=OU(lW(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=gW.get(_W());if(t?.sessionId===e&&t.directory)return _(t.directory)}let a=Ad().find(t=>t.id===e);return a?rW(a):null},dW=e=>{let t=Ad().find(t=>t.id===e);if(t)return t;let n=Y.getState();return[...n.activeSessions,...n.archivedSessions].find(t=>t.id===e)??null},fW=async(e,t)=>{await Hf.getState().activateDirectory(_(e),t)},pW={open:!1,draftID:null,directoryOverride:null,parentID:null,draftSubmitting:!1,draftEstablishing:!1},mW=new Map,hW=0,gW=new Map,_W=e=>(e??c()).trim()||`default`,vW=e=>({...e}),yW=(e,t)=>{let n=gW.get(e);gW.set(e,{sessionId:n?.sessionId??null,directory:n?.directory??null,draft:n?.draft?vW(n.draft):{...pW},...t})},bW=(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},xW=async(e,t)=>{if(!e)return;let n=bW(e,t);n&&await Gk(n)&&await ek(e)},SW=(e,t)=>{let n=Ci.getState(),r=Qo(n.projects,t,e);r&&n.moveProjectToTop(r.id)},CW=(e,t)=>e.transportIdentity===t.transportIdentity&&e.generation===t.generation,wW=(e,t)=>e.open&&e.draftSubmitting===!0&&e.draftID===t.draftID&&e.submissionToken===t.token,TW=(e,t)=>wW(e,t)&&CW(Or.getState().captureDraftRuntime(),t.runtime);async function EW(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?ZU({...e,sessionID:`draft:pending`}):r.pendingUserMessage,a={...r,draftEstablishing:!0,...i?{pendingUserMessage:i}:{}};return yW(_W(),{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 DW(){$.setState(e=>{let t=e.newSessionDraft;if(!t?.draftEstablishing)return{};let n={...t,draftEstablishing:!1};return yW(_W(),{draft:n}),{newSessionDraft:n}})}async function OW(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=_W(),t=s.draftID,n=o,yW(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:vW(i),runtime:a,runtimeMemoryKey:r,source:s?{key:o,revision:s.revision}:null}}function kW(e){$.setState(t=>{let n=t.newSessionDraft;if(TW(n,e)){let t={...n,draftSubmitting:!1,draftEstablishing:!1,pendingUserMessage:void 0},r=gW.get(e.runtimeMemoryKey);return r&&wW(r.draft,e)&&yW(e.runtimeMemoryKey,{draft:t}),{newSessionDraft:t}}return{}});let t=gW.get(e.runtimeMemoryKey);t&&wW(t.draft,e)&&yW(e.runtimeMemoryKey,{draft:{...t.draft,draftSubmitting:!1,draftEstablishing:!1,pendingUserMessage:void 0}})}function AW(e){let t=gW.get(e.runtimeMemoryKey);t&&wW(t.draft,e)&&yW(e.runtimeMemoryKey,{draft:{...pW}})}async function jW(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 MW(e,t){let n=t??e.directory??null;n&&Cd(e.id,n),Y.getState().upsertSession(e),$.getState().markSessionAsOpenChamberCreated(e.id)}async function NW(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&&!TW(l,r);MW(e,c);let f=Hf.getState(),p=n.agent??f.currentAgentName;if(a){let t=n.directory||$.getState().lastLoadedDirectory||e.directory;t&&mO.getState().addSessionToFolder(t,a,e.id)}return d||(sW({projectId:o??null,directory:c}),fW(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),SW(c,$.getState().availableWorktreesByProject),u&&et(async()=>{let{usePermissionStore:e}=await Promise.resolve().then(()=>bM);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&&AW(r),{sessionId:e.id,directory:c,agent:p,syntheticParts:s,selected:!d}}async function PW(e){let t=e.bootstrapPendingDirectory??e.directoryOverride??null,n=e.selectedProjectId??null;e.pendingWorktreeRequestId&&(t=await wO(e.pendingWorktreeRequestId),$.getState().resolvePendingDraftWorktreeTarget(e.pendingWorktreeRequestId,t)),await xW(t,n);let r=t??z.getDirectory();return{directory:_(r),projectId:n}}async function FW(e,t){let n=await OW(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 PW(r),o=a??z.getDirectory(),s=await IS(r.title,o,r.parentID??null,void 0);if(!s?.id)throw Error(`Failed to create session`);return t&&pC({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 NW(s,e,{directory:a??s.directory??null,agent:i,draftProjectId:r.selectedProjectId,targetFolderId:r.targetFolderId,draftSyntheticParts:r.syntheticParts},n),claim:n}}catch{return kW(n),null}}async function IW(e){let t=await FW(e);return t?(await jW(t.claim,t.materialized.sessionId,`preserve`),t.materialized):null}var LW=2,RW=300;async function zW(e){let{useI18nStore:t,formatMessage:n}=await et(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-Dge7C5E4.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 BW(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=Hf.getState(),p=d??f.currentAgentName,m=e.messageID??u.pendingUserMessage?.info.id??ge(`msg`),h=ZU({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 OW(h);if(!g)throw await zW(`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 PW(_),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 zW(`chat.chatInput.toast.messageSendFailed`);let y=d??z.getDirectory()??``,b=Qx(y,{bootstrap:!1}),x=()=>CW(Or.getState().captureDraftRuntime(),g.runtime),S;for(let e=0;e<=LW;e++){e>0&&await new Promise(e=>setTimeout(e,RW));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===LW))break}catch{if(e===LW)break}}if(!S)throw kW(g),Or.getState().setPendingInputText(t,`replace`),await zW(`chat.chatInput.toast.messageSendFailed`);if(S.ok){let e=S.session,t=d??e.directory??null,i=t??y;MW(e,t);let a=i===y?b:Qx(i,{bootstrap:!1});$U(e.id,h);let s=await NW(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 jW(g,e.id,`consume`),tW(e.id,m),s.selected&&am(e.id),SC({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 kW(g),Or.getState().setPendingInputText(t,`replace`),await zW(`chat.chatInput.toast.messageSendFailed`);if(e===`prompt`){let e=S,i=e.session,a=d??i.directory??null,s=await NW(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 hC(i.id,m,a,{isCurrent:x});if(e&&x()){await jW(g,i.id,`consume`),tW(i.id,m),s.selected&&am(i.id),gC(Qx(a??y,{bootstrap:!1}),i.id,m,e,{gapFillOnly:!0,directory:a??y}),l?.(i.id,a);return}throw await jW(g,i.id,`preserve`),Or.getState().setPendingInputText(t,`replace`),await zW(`chat.chatInput.toast.sendStatusUnknown`)}throw await jW(g,i.id,`preserve`),Or.getState().setPendingInputText(t,`replace`),await zW(`chat.chatInput.toast.messageSendFailed`)}}}catch(e){throw kW(g),e}}var VW=`oc.worktreeMap`,HW=()=>{try{let e=f().getItem(VW);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}},UW=e=>{try{f().setItem(VW,e)}catch{}},WW=e=>{let t=[];for(let n of e.values())t.push(...n);return t},GW=HW(),$=Oe()((e,t)=>({currentSessionId:null,currentSessionDirectory:null,newSessionDraft:{...pW},retainedPendingUserMessages:new Map,forkTransition:null,abortPromptSessionId:null,abortPromptExpiresAt:null,error:null,worktreeMetadata:new Map,availableWorktrees:WW(GW),availableWorktreesByProject:GW,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,r,a)=>{qU(n),b(n);let o=t().currentSessionId,s=t().currentSessionDirectory;o!==n&&(HU(),e({stagedMessageEdit:null,messageEditCommitting:null})),n&&t().closeNewSessionDraft(),Or.getState().setActiveAttachmentDraft(n?C({transportIdentity:i()},n):null);let c=_W();mW.set(c,n);let l=Pe.getState(),u=uW(n,e=>t().worktreeMetadata.get(e)),d=z.getDirectory()??l.currentDirectory??null,f=(r?_(r):null)??u??d,p=Ci.getState(),h=f?Qo(p.projects,t().availableWorktreesByProject,f):null;e({currentSessionId:n,currentSessionDirectory:n?f??null:null}),yW(c,{sessionId:n,directory:f??null}),o!==n&&m.getState().syncWorkspacePanelsForSessionSwitch({previousSessionId:o,previousDirectory:s,nextSessionId:n,nextDirectory:n?f??null:null}),n&&a?.skipMessageFetch!==!0&&BC(n,f);try{f&&l.currentDirectory!==f&&l.setDirectory(f,{showOverlay:!1}),h&&a?.preserveActiveProject!==!0&&p.activeProjectId!==h.id&&p.setActiveProjectIdOnly(h.id),z.setDirectory(f??void 0)}catch(e){console.warn(`Failed to set OpenCode directory for session switch:`,e)}if(o&&o!==n){let e=o;setTimeout(()=>{if(!wU(e)?.isStreaming){let t=Nd(e);t.length>0&&TU.getState().updateViewportAnchor(e,t.length-1)}},0)}n&&(yA(n),uP(f??``,n))},prepareForRuntimeSwitch:n=>{let r=_W(n),i=Pe.getState().currentDirectory||null,a=t().currentSessionId,o=i?Td(i):null;WM({runtimeKey:r,directory:i,sessionId:a,status:a?o?.session_status?.[a]:null}),mW.set(r,t().currentSessionId),yW(r,{sessionId:a,directory:i,draft:vW(t().newSessionDraft)}),e({queueAbortBlocks:new Map})},restoreForRuntimeSwitch:t=>{let n=_W(t),r=gW.get(n),a=r?.sessionId??mW.get(n)??null;b(a);let o=r?.draft?vW(r.draft):{...pW},s=r?.directory??null;s&&Pe.getState().setDirectory(s,{showOverlay:!1}),e({currentSessionId:a,currentSessionDirectory:a?s:null,newSessionDraft:a?{...pW}: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:i()},a):o.open&&o.draftID?S({transportIdentity:i()},o.draftID):null),a?uP(s??z.getDirectory()??``,a):uP(``,``)},openNewSessionDraft:n=>{if(PI.getState().shouldBlockNewSessionDraftOpen())return;let r=t().newSessionDraft;if(r.draftSubmitting||r.draftEstablishing)return;t().clearStagedMessageEdit();let a=Ci.getState(),o=a.projects,s=t().availableWorktreesByProject,c=_(t().currentSessionDirectory??null),l=_(Pe.getState().currentDirectory??null),u=oW(),d=n?.directoryOverride===void 0?null:_(n.directoryOverride),f=cW(o,s,d),p=n?.ensureProjectForDirectory&&d&&!f?a.addProject(d):null;p&&(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=cW(h,s,u?.directory??null),w=cW(h,s,c),T=cW(h,s,l),E=v||(d===null?w||(l?T:C??x??y):p??f),D=d===null?v?_(v.path??null):c||l||(u?.directory?u.directory:_(E?.path??null)):d;sW({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:i()},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:r.open&&r.draftID===O?r.submissionToken:0,draftSubmitting:!1,draftEstablishing:!1},ee=t().currentSessionId,te=t().currentSessionDirectory;e({newSessionDraft:{...j},currentSessionId:null,currentSessionDirectory:null,error:null}),b(null),m.getState().setActiveMainTab(`chat`),ee&&m.getState().syncWorkspacePanelsForSessionSwitch({previousSessionId:ee,previousDirectory:te,nextSessionId:null,nextDirectory:null}),yW(_W(),{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=i();fW(M,{source:`newSessionDraft`}).then(()=>{let e=t().newSessionDraft,n=_(Hf.getState().activeDirectoryKey);!e.open||e.draftID!==re||i()!==ie||!ne||n!==ne||Hf.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}),yW(_W(),{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}:{}}}}),fW(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=XU)=>{let r=fe(),i=D(t);return e(e=>{let a=new Map(e.queueAbortBlocks);return a.set(i,{token:r,expiresAt:Date.now()+n,directory:t.directory,sessionID:t.sessionID}),{queueAbortBlocks:a}}),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}),releaseQueueAbortBlocksForServerIdle:(t,n)=>e(e=>{let r,i=Date.now();for(let[a,o]of e.queueAbortBlocks)o.directory===t&&o.sessionID===n&&(o.expiresAt<=i||(r||=new Map(e.queueAbortBlocks),r.delete(a)));return r?{queueAbortBlocks:r}: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=Nd(r);if(i.length===0)return null;let a=fA(i,e=>Pd(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(cA(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?EU.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}):EU.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}}),fW(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,p=d?.sessionId??t().currentSessionId,h=d?.commitStagedMessageEdit&&f&&f.sessionId===p?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?FI.getState().consume():{armed:!1,objectiveOverride:null},x=b.armed;if(x){let e=m.getState(),t=SU(`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=m.getState(),i=r.sessionGoalDefaultBudgetEnabled?r.sessionGoalDefaultBudget:null,a=b.objectiveOverride?.trim()||n;gU(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 BW({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=ZU({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 FW({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;am(p.sessionId);let g=o?.map(e=>({type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename}));try{await eW({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 jW(m,p.sessionId,`consume`)}catch(e){throw await jW(m,p.sessionId,`preserve`),e}SW(p.directory,t().availableWorktreesByProject),S(p.sessionId,p.directory);return}let C=d?.sessionId??t().currentSessionId,w=C?Jo.getState().getSessionAgentSelection(C):null,T=Hf.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=TU.getState(),t=wU(C);if(!t||!t.lastUserMessageAt){let n=new Map(e.sessionMemoryState);n.set(CU(C),{viewportAnchor:0,isStreaming:!1,lastAccessedAt:Date.now(),backgroundMessageCount:0,...t,lastUserMessageAt:Date.now()}),TU.setState({sessionMemoryState:n})}}let D=C?_(d?.directoryHint)??_(t().getDirectoryForSession(C)):null;C&&!d?.ticket&&am(C);let O=o?.map(e=>({type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename}));if(h)try{await PC(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 eW({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)}SW(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 IS(n,r??z.getDirectory(),i??null,a);if(!o)return c&&!t().newSessionDraft.open&&!t().currentSessionId&&(e({newSessionDraft:{...c,draftSubmitting:!1,draftEstablishing:!1}}),yW(_W(),{draft:{...c,draftSubmitting:!1,draftEstablishing:!1}})),null;if(s){let e=r||t().lastLoadedDirectory||o.directory;e&&mO.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}}),yW(_W(),{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=>QS(e),archiveSessions:async e=>{let t=[],n=[];for(let r of e)await QS(r)?t.push(r):n.push(r);return{archivedIds:t,failedIds:n}},updateSessionTitle:async(e,t)=>{await eC(e,t)},requestSessionSmartTitle:async e=>{await tC(e)},shareSession:async e=>nC(e),unshareSession:async e=>rC(e),revertToMessage:async(e,t,n)=>{await OC(e,t,n?.directory)},editMessagePreservingChanges:async(t,n,r)=>{await AC(t,n,r),e({stagedMessageEdit:{sessionId:t,messageId:n}})},handleSlashUndo:async e=>{let n=Nd(e),r=kd().find(t=>t.id===e)?.revert?.messageID,i=ps(n,r);if(!i)return;let a=Pd(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-Dge7C5E4.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(()=>gx);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-Dge7C5E4.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=kd().find(t=>t.id===e)?.revert?.messageID;if(!r)return;let i=ms(Nd(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-Dge7C5E4.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 LC(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-Dge7C5E4.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=dW(n),s=++hW;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 RC(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=dW(n),a=++hW;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 RC(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?Ad().filter(e=>rW(e)===t):[]},getAuthoritativeDirectoryForSession:e=>{let n=uW(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?tD(i):null},getDirectoryForSession:e=>e===t().currentSessionId&&t().currentSessionDirectory?t().currentSessionDirectory:uW(e,e=>t().worktreeMetadata.get(e))||t().getAuthoritativeDirectoryForSession(e),getLastUserChoice:e=>{let n=Nd(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=Nd(e);kd().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}),yW(_W(),{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}));LM((e,t)=>{$.getState().setCurrentSession(e,t)});var KW=``;$.subscribe((e,t)=>{if(e.availableWorktreesByProject!==t.availableWorktreesByProject){let t=JSON.stringify([...e.availableWorktreesByProject.entries()]);t!==KW&&(KW=t,UW(t))}});function qW(e,t){let n=e.findIndex(e=>e.sessionId===t.sessionId);return n>=0?e.slice(0,n+1):[...e,t]}function JW(e){return e.length>1?e.slice(0,-1):[]}function YW(e,t){let n=e.at(-1);return[{...t,key:n?.key??t.key}]}function XW(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 ZW={activeTab:`projects`,secondary:null},QW=0,$W=null,eG=e=>{let t=++QW;return $W={generation:t,sessionId:e.sessionId,directory:_(e.directory)??null},t},tG=e=>{let t=$W;return t&&t.generation===QW&&t.sessionId===e.sessionId&&t.directory===(_(e.directory)??null)?($W=null,`internal`):($W=null,`external`)},nG=()=>{QW+=1,$W=null},rG=e=>{let t=$.getState(),n=t.currentSessionId?t.getDirectoryForSession(t.currentSessionId):null;t.currentSessionId===e.sessionId&&_(n)===_(e.directory)?nG():eG(e),t.setCurrentSession(e.sessionId,e.directory??null,{preserveActiveProject:e.preserveActiveProject})},iG=Oe(e=>({...ZW,setActiveTab:t=>{nG(),e({activeTab:t,secondary:null})},openSession:t=>{e({secondary:{kind:`chat`,routes:[oG(t,`root`)]}}),rG(t)},pushSession:t=>{e(e=>{let n=oG(t,`push`);return{secondary:{kind:`chat`,routes:e.secondary?.kind===`chat`?qW(e.secondary.routes,n):[n]}}}),rG(t)},popChatSession:()=>{e(e=>{if(e.secondary?.kind!==`chat`)return e;let t=JW(e.secondary.routes);return t.length>0?{secondary:{kind:`chat`,routes:t}}:{secondary:null}});let t=iG.getState().secondary,n=t?.kind===`chat`?t.routes.at(-1)??null:null;n&&rG(n)},reconcileChatPredecessor:t=>e(e=>{if(e.secondary?.kind!==`chat`)return e;let n=XW(e.secondary.routes,oG(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:YW(e.secondary.routes,oG(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=>{nG(),$.getState().openNewSessionDraft(t),e({secondary:{kind:`draft`}})},openAssistant:t=>{nG(),mt.getState().selectAssistant(t),e({secondary:{kind:`assistant`}})},openInstances:()=>{nG(),e({secondary:{kind:`instances`}})},closeSecondary:()=>{nG(),e(e=>e.secondary?{...e,secondary:null}:e)},reset:()=>{nG(),e({...ZW})}})),aG=1,oG=(e,t)=>({key:t===`root`?`chat-primary`:`chat-${t}-${aG++}`,sessionId:e.sessionId,directory:e.directory??null}),sG=e=>!We()||Ke()?!1:(iG.getState().pushSession(e),!0);export{nV as $,Lo as $a,Dp as $i,GO as $n,XS as $r,BF as $t,sU as A,wu as Aa,f_ as Ai,rj as An,Hr as Ao,sT as Ar,AI as At,xV as B,ns as Ba,$m as Bi,qk as Bn,Zt as Bo,QS as Br,dP as Bt,CU as C,Du as Ca,A_ as Ci,wM as Cn,ga as Co,tE as Cr,X as Ct,_U as D,Ou as Da,T_ as Di,gj as Dn,Oi as Do,YT as Dr,pL as Dt,pU as E,Eu as Ea,j_ as Ei,eM as En,Ti as Eo,KT as Er,KL as Et,UH as F,Ks as Fa,Wg as Fi,fA as Fn,Mr as Fo,Dw as Fr,uI as Ft,aV as G,Xo as Ga,um as Gi,$k as Gn,DC as Gr,lF as Gt,BV as H,os as Ha,Im as Hi,Gk as Hn,ZS as Hr,yN as Ht,xH as I,fs as Ia,Gg as Ii,ak as In,Ar as Io,Ew as Ir,rI as It,mV as J,Wo as Ja,em as Ji,Yk as Jn,tC as Jr,hN as Jt,gV as K,Qo as Ka,dm as Ki,aA as Kn,NS as Kr,uF as Kt,WH as L,ls as La,vg as Li,tA as Ln,Or as Lo,Tw as Lr,UP as Lt,aU as M,W as Ma,p_ as Mi,_A as Mn,Vr as Mo,cT as Mr,jI as Mt,SH as N,tu as Na,d_ as Ni,bA as Nn,Br as No,zw as Nr,PI as Nt,vU as O,Tu as Oa,w_ as Oi,nj as On,Ci as Oo,kT as Or,FI as Ot,wH as P,nu as Pa,Kg as Pi,cA as Pn,jr as Po,gw as Pr,cF as Pt,lV as Q,Ro as Qa,Tp as Qi,HO as Qn,uC as Qr,RF as Qt,fH as R,es as Ra,_g as Ri,iA as Rn,Xt as Ro,HS as Rr,uP as Rt,TU as S,Su as Sa,k_ as Si,TM as Sn,ha as So,gE as Sr,tR as St,yU as T,gu as Ta,P_ as Ti,tM as Tn,Ai as To,WT as Tr,GL as Tt,oH as U,$o as Ua,km as Ui,nA as Un,PC as Ur,GF as Ut,CV as V,ts as Va,Jm as Vi,Uk as Vn,Kt as Vo,cC as Vr,SN as Vt,hV as W,Yo as Wa,Tm as Wi,zk as Wn,IS as Wr,HF as Wt,oV as X,Bo as Xa,Up as Xi,Kk as Xn,TC as Xr,zF as Xt,_V as Y,Ho as Ya,$p as Yi,Wk as Yn,wC as Yr,mN as Yt,cV as Z,Uo as Za,Np as Zi,oA as Zn,OC as Zr,LF as Zt,OU as _,Md as _a,Wv as _i,WF as _n,Sa as _o,tD as _r,Xz as _t,DW as a,ap as aa,hx as ai,gI as an,yo as ao,ek as ar,BB as at,EU as b,xu as ba,sv as bi,FM as bn,_a as bo,Y as br,Mz as bt,eW as c,vf as ca,Bb as ci,_F as cn,Ya as co,SO as cr,MB as ct,JU as d,Ad as da,iy as di,vF as dn,Ja as do,AD as dr,RB as dt,Ep as ea,Jx as ei,UF as en,Po as eo,KO as er,rV as et,YU as f,wd as fa,qv as fi,bF as fn,ba as fo,jD as fr,xB as ft,jU as g,Cd as ga,Qv as gi,kF as gn,Na as go,ND as gr,iB as gt,UU as h,kd as ha,Xv as hi,fI as hn,Pa as ho,ID as hr,Jz as ht,EW as i,Ap as ia,gS as ii,hF as in,to as io,BO as ir,zB as it,oU as j,hu as ja,m_ as ji,yA as jn,Rr as jo,dT as jr,MI as jt,nU as k,U as ka,C_ as ki,tj as kn,zr as ko,fT as kr,NI as kt,$ as l,Hf as la,Uy as li,EF as ln,Xa as lo,RD as lr,IB as lt,WU as m,Pd as ma,$v as mi,pI as mn,Fa as mo,rD as mr,eB as mt,sG as n,Mp as na,$S as ni,bI as nn,no,VO as nr,eV as nt,ZU as o,Zf as oa,nx as oi,pF as on,bo as oo,xO as or,KB as ot,HU as p,Nd as pa,ey as pi,wF as pn,Aa as po,LD as pr,uB as pt,vV as q,Jo as qa,tm as qi,Jk as qn,EC as qr,yI as qt,iG as r,jp as ra,eC as ri,dI as rn,eo as ro,$O as rr,XB as rt,IW as s,Jf as sa,$b as si,mF as sn,po as so,CO as sr,GB as st,tG as t,kp as ta,AC as ti,SF as tn,Io as to,WO as tr,tV as tt,qU as u,jd as ua,My as ui,OF as un,Wa as uo,mO as ur,PB as ut,AU as v,Gu as va,Zv as vi,mI as vn,ka as vo,MD as vr,Wz as vt,SU as w,H as wa,O_ as wi,yM as wn,ki as wo,HT as wr,zL as wt,wU as x,Cu as xa,kv as xi,AM as xn,ma as xo,hE as xr,$L as xt,kU as y,$u as ya,Tv as yi,PM as yn,Oa as yo,PD as yr,Kz as yt,rH as z,cs as za,uh as zi,Xk as zn,Qt as zo,CC as zr,fP as zt};
|
|
412
|
+
`,KH=async e=>{if(e.length<=5e3)return e;let t=await jH(e);if(t)return t.slice(0,NH);let n=Math.max(0,Math.floor((NH-93)/2)),r=ft.getState().dictionary;return tE.error(pt(r,`chat.goal.toast.distillFallback`)),`${e.slice(0,n)}${GH}${e.slice(-n)}`};async function qH(e,t,n,r){let i=n.objective.trim();if(!i)throw Error(`Goal objective must not be empty`);let a=await KH(i),o=typeof n.tokenBudget==`number`&&Number.isFinite(n.tokenBudget)&&n.tokenBudget>0?Math.floor(n.tokenBudget):null,s=await HH(e,a),c=Date.now();await VH(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:BH(),objective:s?``:a,objectiveFile:s,status:`active`,tokenBudget:o,tokensUsed:0,turnsUsed:0,blockedStreak:0,note:``,statusReason:``,lastAccountedMessageID:``,createdAt:c,updatedAt:c})}async function JH(e,t){await VH(e,t,e=>!e||e.status!==`active`?e:{...e,status:`paused`,statusReason:`paused for question`,updatedAt:Date.now()})}async function YH(e,t,n){n===`paused`&&(bH(e),CC(e)),await VH(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 XH(e,t){let n=!1;await VH(e,t,e=>(n=e?.status===`active`,null)),UH(e),n&&(bH(e),CC(e))}var ZH=`<system-reminder>`,QH=`</system-reminder>`,$H=e=>{let t=e.trim();return t?t.startsWith(ZH)&&t.endsWith(QH)?t:`${ZH}\n${t}\n${QH}`:``},eU=(e,t=c())=>`${t}\n${e}`,tU=(e,t)=>{let n=nU.getState();return t?n.sessionMemoryState.get(t):n.sessionMemoryState.get(eU(e))??n.sessionMemoryState.get(e)},nU=Oe()(e=>({sessionMemoryState:new Map,isSyncing:!1,updateViewportAnchor:(t,n,r,i)=>e(e=>{let a=new Map(e.sessionMemoryState),o=i??eU(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}})})),rU=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}})})),iU=e=>{if(!e)return``;let t=e.replace(/\\/g,`/`);return t===`/`?`/`:t.replace(/\/+$/,``)||t};function aU(e,t){if(e){if(!e.degraded&&e.cwd)return iU(e.cwd);if(e.worktreeRoot)return iU(e.worktreeRoot);if(e.cwd)return iU(e.cwd)}return t?iU(t):null}function oU(e){return e.worktreeStatus===`missing`||e.worktreeStatus===`invalid`?[`open-without-worktree-features`]:[]}function sU(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 cU(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?iU(e.pendingBootstrapDirectory):null;for(let r of e.worktrees){let i=iU(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 lU=`openchamber.session-switch.start`,uU=`openchamber.session-switch.highlight-painted`,dU=`openchamber.session-switch.content-committed`,fU=`data-openchamber-session-switch-highlight-ms`,pU=`data-openchamber-session-switch-content-ms`,mU=`openchamber.session-switch.highlight-latency`,hU=`openchamber.session-switch.content-latency`,gU=()=>typeof performance<`u`&&typeof performance.mark==`function`&&typeof performance.measure==`function`,_U=()=>gU()&&performance.getEntriesByName(lU,`mark`).length>0,vU=(e,t)=>{typeof document>`u`||document.documentElement.setAttribute(e,t.toFixed(2))},yU=(e=!1)=>{gU()&&(!e&&performance.getEntriesByName(lU,`mark`).length>0&&performance.getEntriesByName(dU,`mark`).length===0||(performance.clearMarks(lU),performance.clearMarks(uU),performance.clearMarks(dU),performance.clearMeasures(mU),performance.clearMeasures(hU),typeof document<`u`&&(document.documentElement.removeAttribute(fU),document.documentElement.removeAttribute(pU)),performance.mark(lU)))},bU=()=>{if(!_U())return;performance.mark(uU),performance.measure(mU,lU,uU);let e=performance.getEntriesByName(mU,`measure`).at(-1);e&&vU(fU,e.duration)},xU=()=>{if(!_U())return;performance.mark(dU),performance.measure(hU,lU,dU);let e=performance.getEntriesByName(hU,`measure`).at(-1);e&&vU(pU,e.duration)},SU={revision:0,sessionId:null},CU=new Set,wU=e=>{SU={revision:SU.revision+1,sessionId:e};for(let e of CU)e(SU);return SU},TU=()=>SU,EU=e=>(CU.add(e),()=>CU.delete(e)),DU=6e3;function OU(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 kU(e,t){return{info:{...e.info,sessionID:t},parts:e.parts.map(n=>({...n,sessionID:t,messageID:e.info.id}))}}function AU(e,t){if(!e)return;let n=kU(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 jU(e){let t=e.directory??void 0,n=NU(e.sessionId,e.onSendConfirmed),r=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=i(),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(i()!==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)r=`[command:${v.reference??v.name}]${s?` ${s}`:``}`;else if(v)return fC({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 fC({sessionId:e.sessionId,content:r,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:r,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 MU(e,t){F(`/api/sessions/${e}/message-sent`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({messageID:t})}).catch(()=>{})}function NU(e,t){let n=!1;return r=>{if(!n){n=!0;try{t?.(r)}finally{MU(e,r)}}}}var PU=e=>{let t=e;return _(t.directory??null)??_(t.project?.worktree??null)},FU=f(),IU=`oc.chatInput.lastDraftTarget`,LU=()=>{try{let e=FU.getItem(IU);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}},RU=e=>{try{FU.setItem(IU,JSON.stringify(e))}catch{}},zU=Qo,BU=e=>{if(e)return rU.getState().getAttachment(e)},VU=(e,t,n)=>{if(!e)return null;let r=aU(BU(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=qU.get(JU());if(t?.sessionId===e&&t.directory)return _(t.directory)}let a=Ad().find(t=>t.id===e);return a?PU(a):null},HU=e=>{let t=Ad().find(t=>t.id===e);if(t)return t;let n=Y.getState();return[...n.activeSessions,...n.archivedSessions].find(t=>t.id===e)??null},UU=async(e,t)=>{await Hf.getState().activateDirectory(_(e),t)},WU={open:!1,draftID:null,directoryOverride:null,parentID:null,draftSubmitting:!1,draftEstablishing:!1},GU=new Map,KU=0,qU=new Map,JU=e=>(e??c()).trim()||`default`,YU=e=>({...e}),XU=(e,t)=>{let n=qU.get(e);qU.set(e,{sessionId:n?.sessionId??null,directory:n?.directory??null,draft:n?.draft?YU(n.draft):{...WU},...t})},ZU=(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},QU=async(e,t)=>{if(!e)return;let n=ZU(e,t);n&&await jk(n)&&await ek(e)},$U=(e,t)=>{let n=Ci.getState(),r=Qo(n.projects,t,e);r&&n.moveProjectToTop(r.id)},eW=(e,t)=>e.transportIdentity===t.transportIdentity&&e.generation===t.generation,tW=(e,t)=>e.open&&e.draftSubmitting===!0&&e.draftID===t.draftID&&e.submissionToken===t.token,nW=(e,t)=>tW(e,t)&&eW(Or.getState().captureDraftRuntime(),t.runtime);async function rW(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?OU({...e,sessionID:`draft:pending`}):r.pendingUserMessage,a={...r,draftEstablishing:!0,...i?{pendingUserMessage:i}:{}};return XU(JU(),{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 iW(){$.setState(e=>{let t=e.newSessionDraft;if(!t?.draftEstablishing)return{};let n={...t,draftEstablishing:!1};return XU(JU(),{draft:n}),{newSessionDraft:n}})}async function aW(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=JU(),t=s.draftID,n=o,XU(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:YU(i),runtime:a,runtimeMemoryKey:r,source:s?{key:o,revision:s.revision}:null}}function oW(e){$.setState(t=>{let n=t.newSessionDraft;if(nW(n,e)){let t={...n,draftSubmitting:!1,draftEstablishing:!1,pendingUserMessage:void 0},r=qU.get(e.runtimeMemoryKey);return r&&tW(r.draft,e)&&XU(e.runtimeMemoryKey,{draft:t}),{newSessionDraft:t}}return{}});let t=qU.get(e.runtimeMemoryKey);t&&tW(t.draft,e)&&XU(e.runtimeMemoryKey,{draft:{...t.draft,draftSubmitting:!1,draftEstablishing:!1,pendingUserMessage:void 0}})}function sW(e){let t=qU.get(e.runtimeMemoryKey);t&&tW(t.draft,e)&&XU(e.runtimeMemoryKey,{draft:{...WU}})}async function cW(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 lW(e,t){let n=t??e.directory??null;n&&Cd(e.id,n),Y.getState().upsertSession(e),$.getState().markSessionAsOpenChamberCreated(e.id)}async function uW(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&&!nW(l,r);lW(e,c);let f=Hf.getState(),p=n.agent??f.currentAgentName;if(a){let t=n.directory||$.getState().lastLoadedDirectory||e.directory;t&&mO.getState().addSessionToFolder(t,a,e.id)}return d||(RU({projectId:o??null,directory:c}),UU(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),$U(c,$.getState().availableWorktreesByProject),u&&et(async()=>{let{usePermissionStore:e}=await Promise.resolve().then(()=>Zj);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&&sW(r),{sessionId:e.id,directory:c,agent:p,syntheticParts:s,selected:!d}}async function dW(e){let t=e.bootstrapPendingDirectory??e.directoryOverride??null,n=e.selectedProjectId??null;e.pendingWorktreeRequestId&&(t=await wO(e.pendingWorktreeRequestId),$.getState().resolvePendingDraftWorktreeTarget(e.pendingWorktreeRequestId,t)),await QU(t,n);let r=t??z.getDirectory();return{directory:_(r),projectId:n}}async function fW(e,t){let n=await aW(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 dW(r),o=a??z.getDirectory(),s=await IS(r.title,o,r.parentID??null,void 0);if(!s?.id)throw Error(`Failed to create session`);return t&&pC({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 uW(s,e,{directory:a??s.directory??null,agent:i,draftProjectId:r.selectedProjectId,targetFolderId:r.targetFolderId,draftSyntheticParts:r.syntheticParts},n),claim:n}}catch{return oW(n),null}}async function pW(e){let t=await fW(e);return t?(await cW(t.claim,t.materialized.sessionId,`preserve`),t.materialized):null}var mW=2,hW=300;async function gW(e){let{useI18nStore:t,formatMessage:n}=await et(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-NWfuTiFD.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 _W(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=Hf.getState(),p=d??f.currentAgentName,m=e.messageID??u.pendingUserMessage?.info.id??ge(`msg`),h=OU({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 aW(h);if(!g)throw await gW(`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 dW(_),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 gW(`chat.chatInput.toast.messageSendFailed`);let y=d??z.getDirectory()??``,b=Qx(y,{bootstrap:!1}),x=()=>eW(Or.getState().captureDraftRuntime(),g.runtime),S;for(let e=0;e<=mW;e++){e>0&&await new Promise(e=>setTimeout(e,hW));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===mW))break}catch{if(e===mW)break}}if(!S)throw oW(g),Or.getState().setPendingInputText(t,`replace`),await gW(`chat.chatInput.toast.messageSendFailed`);if(S.ok){let e=S.session,t=d??e.directory??null,i=t??y;lW(e,t);let a=i===y?b:Qx(i,{bootstrap:!1});AU(e.id,h);let s=await uW(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 cW(g,e.id,`consume`),MU(e.id,m),s.selected&&am(e.id),SC({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 oW(g),Or.getState().setPendingInputText(t,`replace`),await gW(`chat.chatInput.toast.messageSendFailed`);if(e===`prompt`){let e=S,i=e.session,a=d??i.directory??null,s=await uW(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 hC(i.id,m,a,{isCurrent:x});if(e&&x()){await cW(g,i.id,`consume`),MU(i.id,m),s.selected&&am(i.id),gC(Qx(a??y,{bootstrap:!1}),i.id,m,e,{gapFillOnly:!0,directory:a??y}),l?.(i.id,a);return}throw await cW(g,i.id,`preserve`),Or.getState().setPendingInputText(t,`replace`),await gW(`chat.chatInput.toast.sendStatusUnknown`)}throw await cW(g,i.id,`preserve`),Or.getState().setPendingInputText(t,`replace`),await gW(`chat.chatInput.toast.messageSendFailed`)}}}catch(e){throw oW(g),e}}var vW=`oc.worktreeMap`,yW=()=>{try{let e=f().getItem(vW);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}},bW=e=>{try{f().setItem(vW,e)}catch{}},xW=e=>{let t=[];for(let n of e.values())t.push(...n);return t},SW=yW(),$=Oe()((e,t)=>({currentSessionId:null,currentSessionDirectory:null,newSessionDraft:{...WU},retainedPendingUserMessages:new Map,forkTransition:null,abortPromptSessionId:null,abortPromptExpiresAt:null,error:null,worktreeMetadata:new Map,availableWorktrees:xW(SW),availableWorktreesByProject:SW,webUICreatedSessions:new Set,sessionAbortFlags:new Map,queueAbortBlocks:new Map,abortControllers:new Map,isLoading:!1,lastLoadedDirectory:null,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,r,a)=>{wU(n),b(n);let o=t().currentSessionId,s=t().currentSessionDirectory;o!==n&&(yU(),e({stagedMessageEdit:null,messageEditCommitting:null})),n&&t().closeNewSessionDraft(),Or.getState().setActiveAttachmentDraft(n?C({transportIdentity:i()},n):null);let c=JU();GU.set(c,n);let l=Pe.getState(),u=VU(n,e=>t().worktreeMetadata.get(e)),d=z.getDirectory()??l.currentDirectory??null,f=(r?_(r):null)??u??d,p=Ci.getState(),h=f?Qo(p.projects,t().availableWorktreesByProject,f):null;e({currentSessionId:n,currentSessionDirectory:n?f??null:null}),XU(c,{sessionId:n,directory:f??null}),o!==n&&m.getState().syncWorkspacePanelsForSessionSwitch({previousSessionId:o,previousDirectory:s,nextSessionId:n,nextDirectory:n?f??null:null}),n&&a?.skipMessageFetch!==!0&&BC(n,f);try{f&&l.currentDirectory!==f&&l.setDirectory(f,{showOverlay:!1}),h&&a?.preserveActiveProject!==!0&&p.activeProjectId!==h.id&&p.setActiveProjectIdOnly(h.id),z.setDirectory(f??void 0)}catch(e){console.warn(`Failed to set OpenCode directory for session switch:`,e)}if(o&&o!==n){let e=o;setTimeout(()=>{if(!tU(e)?.isStreaming){let t=Nd(e);t.length>0&&nU.getState().updateViewportAnchor(e,t.length-1)}},0)}n&&(Xk(n),VN(f??``,n))},prepareForRuntimeSwitch:n=>{let r=JU(n),i=Pe.getState().currentDirectory||null,a=t().currentSessionId,o=i?Td(i):null;xM({runtimeKey:r,directory:i,sessionId:a,status:a?o?.session_status?.[a]:null}),GU.set(r,t().currentSessionId),XU(r,{sessionId:a,directory:i,draft:YU(t().newSessionDraft)}),e({queueAbortBlocks:new Map})},restoreForRuntimeSwitch:t=>{let n=JU(t),r=qU.get(n),a=r?.sessionId??GU.get(n)??null;b(a);let o=r?.draft?YU(r.draft):{...WU},s=r?.directory??null;s&&Pe.getState().setDirectory(s,{showOverlay:!1}),e({currentSessionId:a,currentSessionDirectory:a?s:null,newSessionDraft:a?{...WU}: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:i()},a):o.open&&o.draftID?S({transportIdentity:i()},o.draftID):null),a?VN(s??z.getDirectory()??``,a):VN(``,``)},openNewSessionDraft:n=>{if(dI.getState().shouldBlockNewSessionDraftOpen())return;let r=t().newSessionDraft;if(r.draftSubmitting||r.draftEstablishing)return;t().clearStagedMessageEdit();let a=Ci.getState(),o=a.projects,s=t().availableWorktreesByProject,c=_(t().currentSessionDirectory??null),l=_(Pe.getState().currentDirectory??null),u=LU(),d=n?.directoryOverride===void 0?null:_(n.directoryOverride),f=zU(o,s,d),p=n?.ensureProjectForDirectory&&d&&!f?a.addProject(d):null;p&&(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=zU(h,s,u?.directory??null),w=zU(h,s,c),T=zU(h,s,l),E=v||(d===null?w||(l?T:C??x??y):p??f),D=d===null?v?_(v.path??null):c||l||(u?.directory?u.directory:_(E?.path??null)):d;RU({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:i()},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:r.open&&r.draftID===O?r.submissionToken:0,draftSubmitting:!1,draftEstablishing:!1},ee=t().currentSessionId,te=t().currentSessionDirectory;e({newSessionDraft:{...j},currentSessionId:null,currentSessionDirectory:null,error:null}),b(null),m.getState().setActiveMainTab(`chat`),ee&&m.getState().syncWorkspacePanelsForSessionSwitch({previousSessionId:ee,previousDirectory:te,nextSessionId:null,nextDirectory:null}),XU(JU(),{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=i();UU(M,{source:`newSessionDraft`}).then(()=>{let e=t().newSessionDraft,n=_(Hf.getState().activeDirectoryKey);!e.open||e.draftID!==re||i()!==ie||!ne||n!==ne||Hf.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}),XU(JU(),{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}:{}}}}),UU(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=DU)=>{let r=fe(),i=D(t);return e(e=>{let a=new Map(e.queueAbortBlocks);return a.set(i,{token:r,expiresAt:Date.now()+n,directory:t.directory,sessionID:t.sessionID}),{queueAbortBlocks:a}}),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}),releaseQueueAbortBlocksForServerIdle:(t,n)=>e(e=>{let r,i=Date.now();for(let[a,o]of e.queueAbortBlocks)o.directory===t&&o.sessionID===n&&(o.expiresAt<=i||(r||=new Map(e.queueAbortBlocks),r.delete(a)));return r?{queueAbortBlocks:r}: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=Nd(r);if(i.length===0)return null;let a=Uk(i,e=>Pd(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(zk(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?rU.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}):rU.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}}),UU(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,p=d?.sessionId??t().currentSessionId,h=d?.commitStagedMessageEdit&&f&&f.sessionId===p?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?fI.getState().consume():{armed:!1,objectiveOverride:null},x=b.armed;if(x){let e=m.getState(),t=$H(`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=m.getState(),i=r.sessionGoalDefaultBudgetEnabled?r.sessionGoalDefaultBudget:null,a=b.objectiveOverride?.trim()||n;qH(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 _W({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=OU({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 fW({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;am(p.sessionId);let g=o?.map(e=>({type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename}));try{await jU({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 cW(m,p.sessionId,`consume`)}catch(e){throw await cW(m,p.sessionId,`preserve`),e}$U(p.directory,t().availableWorktreesByProject),S(p.sessionId,p.directory);return}let C=d?.sessionId??t().currentSessionId,w=C?Jo.getState().getSessionAgentSelection(C):null,T=Hf.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=nU.getState(),t=tU(C);if(!t||!t.lastUserMessageAt){let n=new Map(e.sessionMemoryState);n.set(eU(C),{viewportAnchor:0,isStreaming:!1,lastAccessedAt:Date.now(),backgroundMessageCount:0,...t,lastUserMessageAt:Date.now()}),nU.setState({sessionMemoryState:n})}}let D=C?_(d?.directoryHint)??_(t().getDirectoryForSession(C)):null;C&&!d?.ticket&&am(C);let O=o?.map(e=>({type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename}));if(h)try{await PC(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 jU({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)}$U(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 IS(n,r??z.getDirectory(),i??null,a);if(!o)return c&&!t().newSessionDraft.open&&!t().currentSessionId&&(e({newSessionDraft:{...c,draftSubmitting:!1,draftEstablishing:!1}}),XU(JU(),{draft:{...c,draftSubmitting:!1,draftEstablishing:!1}})),null;if(s){let e=r||t().lastLoadedDirectory||o.directory;e&&mO.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}}),XU(JU(),{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=>QS(e),archiveSessions:async e=>{let t=[],n=[];for(let r of e)await QS(r)?t.push(r):n.push(r);return{archivedIds:t,failedIds:n}},updateSessionTitle:async(e,t)=>{await eC(e,t)},requestSessionSmartTitle:async e=>{await tC(e)},shareSession:async e=>nC(e),unshareSession:async e=>rC(e),revertToMessage:async(e,t,n)=>{await OC(e,t,n?.directory)},editMessagePreservingChanges:async(t,n,r)=>{await AC(t,n,r),e({stagedMessageEdit:{sessionId:t,messageId:n}})},handleSlashUndo:async e=>{let n=Nd(e),r=kd().find(t=>t.id===e)?.revert?.messageID,i=ps(n,r);if(!i)return;let a=Pd(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-NWfuTiFD.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(()=>gx);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-NWfuTiFD.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=kd().find(t=>t.id===e)?.revert?.messageID;if(!r)return;let i=ms(Nd(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-NWfuTiFD.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 LC(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-NWfuTiFD.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=HU(n),s=++KU;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 RC(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=HU(n),a=++KU;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 RC(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?Ad().filter(e=>PU(e)===t):[]},getAuthoritativeDirectoryForSession:e=>{let n=VU(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?tD(i):null},getDirectoryForSession:e=>e===t().currentSessionId&&t().currentSessionDirectory?t().currentSessionDirectory:VU(e,e=>t().worktreeMetadata.get(e))||t().getAuthoritativeDirectoryForSession(e),getLastUserChoice:e=>{let n=Nd(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=Nd(e);kd().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}),XU(JU(),{sessionId:n,directory:i}))}}));mM((e,t)=>{$.getState().setCurrentSession(e,t)});var CW=``;$.subscribe((e,t)=>{if(e.availableWorktreesByProject!==t.availableWorktreesByProject){let t=JSON.stringify([...e.availableWorktreesByProject.entries()]);t!==CW&&(CW=t,bW(t))}});function wW(e,t){let n=e.findIndex(e=>e.sessionId===t.sessionId);return n>=0?e.slice(0,n+1):[...e,t]}function TW(e){return e.length>1?e.slice(0,-1):[]}function EW(e,t){let n=e.at(-1);return[{...t,key:n?.key??t.key}]}function DW(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 OW={activeTab:`projects`,secondary:null},kW=0,AW=null,jW=e=>{let t=++kW;return AW={generation:t,sessionId:e.sessionId,directory:_(e.directory)??null},t},MW=e=>{let t=AW;return t&&t.generation===kW&&t.sessionId===e.sessionId&&t.directory===(_(e.directory)??null)?(AW=null,`internal`):(AW=null,`external`)},NW=()=>{kW+=1,AW=null},PW=e=>{let t=$.getState(),n=t.currentSessionId?t.getDirectoryForSession(t.currentSessionId):null;t.currentSessionId===e.sessionId&&_(n)===_(e.directory)?NW():jW(e),t.setCurrentSession(e.sessionId,e.directory??null,{preserveActiveProject:e.preserveActiveProject})},FW=Oe(e=>({...OW,setActiveTab:t=>{NW(),e({activeTab:t,secondary:null})},openSession:t=>{e({secondary:{kind:`chat`,routes:[LW(t,`root`)]}}),PW(t)},pushSession:t=>{e(e=>{let n=LW(t,`push`);return{secondary:{kind:`chat`,routes:e.secondary?.kind===`chat`?wW(e.secondary.routes,n):[n]}}}),PW(t)},popChatSession:()=>{e(e=>{if(e.secondary?.kind!==`chat`)return e;let t=TW(e.secondary.routes);return t.length>0?{secondary:{kind:`chat`,routes:t}}:{secondary:null}});let t=FW.getState().secondary,n=t?.kind===`chat`?t.routes.at(-1)??null:null;n&&PW(n)},reconcileChatPredecessor:t=>e(e=>{if(e.secondary?.kind!==`chat`)return e;let n=DW(e.secondary.routes,LW(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:EW(e.secondary.routes,LW(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=>{NW(),$.getState().openNewSessionDraft(t),e({secondary:{kind:`draft`}})},openAssistant:t=>{NW(),mt.getState().selectAssistant(t),e({secondary:{kind:`assistant`}})},openInstances:()=>{NW(),e({secondary:{kind:`instances`}})},closeSecondary:()=>{NW(),e(e=>e.secondary?{...e,secondary:null}:e)},reset:()=>{NW(),e({...OW})}})),IW=1,LW=(e,t)=>({key:t===`root`?`chat-primary`:`chat-${t}-${IW++}`,sessionId:e.sessionId,directory:e.directory??null}),RW=e=>!We()||Ke()?!1:(FW.getState().pushSession(e),!0);export{NB as $,bo as $a,Zf as $i,xO as $n,nx as $r,_F as $t,RH as A,ls as Aa,vg as Ai,PA as An,Or as Ao,Tw as Ar,sI as At,QB as B,Jo as Ba,tm as Bi,Ik as Bn,EC as Br,HN as Bt,eU as C,wu as Ca,f_ as Ci,tM as Cn,Hr as Co,sT as Cr,X as Ct,JH as D,nu as Da,Kg as Di,qA as Dn,jr as Do,gw as Dr,WI as Dt,WH as E,tu as Ea,d_ as Ei,jj as En,Br as Eo,zw as Er,CL as Et,bH as F,os as Fa,Im as Fi,Uk as Fn,ZS as Fr,VF as Ft,IB as G,Ro as Ga,Tp as Gi,HO as Gn,uC as Gr,BP as Gt,_V as H,Ho as Ha,$p as Hi,Ak as Hn,wC as Hr,XM as Ht,QV as I,$o as Ia,km as Ii,Fk as In,PC as Ir,PF as It,GB as J,Io as Ja,kp as Ji,WO as Jn,AC as Jr,KM as Jt,qB as K,Lo as Ka,Dp as Ki,GO as Kn,XS as Kr,VP as Kt,xH as L,Yo as La,Tm as Li,Nk as Ln,IS as Lr,bP as Lt,IH as M,cs as Ma,uh as Mi,Jk as Mn,Qt as Mo,CC as Mr,cI as Mt,$V as N,ns as Na,$m as Ni,Zk as Nn,Zt as No,QS as Nr,dI as Nt,YH as O,Ks as Oa,Wg as Oi,NA as On,Mr as Oo,Dw as Or,fI as Ot,tH as P,ts as Pa,Jm as Pi,zk as Pn,Kt as Po,cC as Pr,zP as Pt,BB as Q,yo as Qa,ap as Qi,ek as Qn,hx as Qr,hF as Qt,UV as R,Xo as Ra,um as Ri,kk as Rn,DC as Rr,VN as Rt,nU as S,U as Sa,C_ as Si,nM as Sn,zr as So,fT as Sr,ML as St,XH as T,W as Ta,p_ as Ti,Mj as Tn,Vr as To,cT as Tr,SL as Tt,LV as U,Bo as Ua,Up as Ui,Mk as Un,TC as Ur,SF as Ut,eV as V,Wo as Va,em as Vi,Pk as Vn,tC as Vr,$M as Vt,KB as W,Uo as Wa,Np as Wi,Lk as Wn,OC as Wr,yF as Wt,LB as X,eo as Xa,jp as Xi,$O as Xn,eC as Xr,gF as Xt,JB as Y,no as Ya,Mp as Yi,VO as Yn,$S as Yr,GM as Yt,zB as Z,to as Za,Ap as Zi,BO as Zn,gS as Zr,mF as Zt,aU as _,H as _a,O_ as _i,xF as _n,ki as _o,HT as _r,Dz as _t,iW as a,wd as aa,qv as ai,qF as an,ba as ao,jD as ar,_B as at,rU as b,Ou as ba,T_ as bi,fM as bn,Oi as bo,YT as br,lz as bt,jU as c,kd as ca,Xv as ci,JP as cn,Pa as co,ID as cr,lB as ct,TU as d,Gu as da,Zv as di,YP as dn,ka as do,MD as dr,hB as dt,Jf as ea,$b as ei,bF as en,po as eo,CO as er,PB as et,EU as f,$u as fa,Tv as fi,ZP as fn,Oa as fo,PD as fr,Qz as ft,cU as g,Du as ga,A_ as gi,oF as gn,ga as go,tE as gr,Fz as gt,bU as h,Su as ha,k_ as hi,UF as hn,ha as ho,gE as hr,Tz as ht,rW as i,Ad as ia,iy as ii,KP as in,Ja as io,AD as ir,gB as it,LH as j,es as ja,_g as ji,Xk as jn,Xt as jo,HS as jr,lI as jt,NH as k,fs as ka,Gg as ki,MA as kn,Ar as ko,Ew as kr,uI as kt,$ as l,Cd as la,Qv as li,rF as ln,Na as lo,ND as lr,pB as lt,xU as m,Cu as ma,kv as mi,WF as mn,ma as mo,hE as mr,jz as mt,RW as n,Hf as na,Uy as ni,ZF as nn,Xa as no,RD as nr,jB as nt,OU as o,Nd as oa,ey as oi,WP as on,Aa as oo,LD as or,CB as ot,yU as p,xu as pa,sv as pi,tF as pn,_a as po,Y as pr,Vz as pt,YB as q,Po as qa,Ep as qi,KO as qn,Jx as qr,XF as qt,FW as r,jd as ra,My as ri,HF as rn,Wa as ro,mO as rr,DB as rt,pW as s,Pd as sa,$v as si,GP as sn,Fa as so,rD as sr,SB as st,MW as t,vf as ta,Bb as ti,$P as tn,Ya as to,SO as tr,MB as tt,wU as u,Md as ua,Wv as ui,aF as un,Sa as uo,tD as ur,dB as ut,sU as v,gu as va,P_ as vi,GF as vn,Ai as vo,WT as vr,xz as vt,$H as w,hu as wa,m_ as wi,Xj as wn,Rr as wo,dT as wr,gL as wt,tU as x,Tu as xa,w_ as xi,sM as xn,Ci as xo,kT as xr,AL as xt,oU as y,Eu as ya,j_ as yi,dM as yn,Ti as yo,KT as yr,Cz as yt,PV as z,Qo as za,dm as zi,jk as zn,NS as zr,UN as zt};
|