@openchambery/web 1.18.2-beta.17 → 1.18.2-beta.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/dist/assets/{AssistantView-DFHmpZ7G.js → AssistantView-DEAvjnft.js} +1 -1
  2. package/dist/assets/{ChatContainer-D7SxgV8T.js → ChatContainer-BYIW9HIv.js} +5 -5
  3. package/dist/assets/{DiagramView-DmHeDjDE.js → DiagramView-CUN3aCw7.js} +1 -1
  4. package/dist/assets/{MarkdownRendererImpl-CR70vDmk.js → MarkdownRendererImpl-COkICFQ6.js} +1 -1
  5. package/dist/assets/{MobileDetailNavigation-CosmubCm.js → MobileDetailNavigation-Dotl0uFK.js} +1 -1
  6. package/dist/assets/{MobileShareBridge-DzP5vJAv.js → MobileShareBridge-Dzpj505z.js} +1 -1
  7. package/dist/assets/{MobileSurface-bpfoNOdp.js → MobileSurface-CYF6jUKD.js} +1 -1
  8. package/dist/assets/{MultiRunWindow-Bj35xImj.js → MultiRunWindow-CTbEOWL7.js} +1 -1
  9. package/dist/assets/{OverlayScrollbar-C0r95yEi.js → OverlayScrollbar-DUQXxlLe.js} +1 -1
  10. package/dist/assets/{SettingsView-DlUCG6xP.js → SettingsView-C-m1kZb6.js} +1 -1
  11. package/dist/assets/{SettingsWindow-Bx6yUy4t.js → SettingsWindow-o3oQwjry.js} +1 -1
  12. package/dist/assets/{TerminalView-A6lT_pyN.js → TerminalView-D3PPugiI.js} +1 -1
  13. package/dist/assets/{ToolOutputDialog-74Ec3sow.js → ToolOutputDialog-Dvc8UO6W.js} +1 -1
  14. package/dist/assets/{appThemeRegistry-C2czYOtx.js → appThemeRegistry-BO-X-_Y5.js} +2 -2
  15. package/dist/assets/{context-menu-B87qIDjC.js → context-menu-oaMnJuJM.js} +1 -1
  16. package/dist/assets/{gitApi-CAYz6qHu.js → gitApi-BPMTze1H.js} +1 -1
  17. package/dist/assets/{insertionBoundaries-iAOuvfny.js → insertionBoundaries-BGh97ePU.js} +1 -1
  18. package/dist/assets/{main-BQGhNyeU.js → main-BjToXPkD.js} +4 -4
  19. package/dist/assets/{main-Cu7sZyJS.js → main-Ct2EUXIP.js} +2 -2
  20. package/dist/assets/{miniChat-CwrVreq-.js → miniChat-C8ngP354.js} +2 -2
  21. package/dist/assets/{mobile-SQEAwCJ8.js → mobile-Cg4Atz6k.js} +2 -2
  22. package/dist/assets/{multirun-CJ3fED_0.js → multirun-huuovQct.js} +1 -1
  23. package/dist/assets/{projectMeta-BM3a0rwT.js → projectMeta-tNQ9Kguo.js} +1 -1
  24. package/dist/assets/{radio-DfR3It8I.js → radio-D9xOUMnG.js} +1 -1
  25. package/dist/assets/{renderElectronMiniChatApp-b3VyI_V2.js → renderElectronMiniChatApp-Bx3-FFHE.js} +2 -2
  26. package/dist/assets/renderMobileApp-CVMA5jZT.js +23 -0
  27. package/dist/assets/{runtimeEndpointReset-3gL_biDm.js → runtimeEndpointReset-C9s6_Cpl.js} +2 -2
  28. package/dist/assets/{sortable-tabs-strip-D0fuWvzp.js → sortable-tabs-strip-D2wN-rgC.js} +1 -1
  29. package/dist/assets/src-BcdldUpo.css +2 -0
  30. package/dist/assets/{useAppFontEffects-AWfqdYZm.js → useAppFontEffects-C3mR2bTn.js} +2 -2
  31. package/dist/assets/{useDesktopWindowControlsLayout-BgCS8KRJ.js → useDesktopWindowControlsLayout-C1HMRcis.js} +1 -1
  32. package/dist/assets/{useEffectiveDirectory-ktSK1ADz.js → useEffectiveDirectory-VHzoc25S.js} +1 -1
  33. package/dist/assets/{useMobileNavigationStore-Dy5a1iTA.js → useMobileNavigationStore-DXYzE0lX.js} +3 -3
  34. package/dist/assets/{useSessionAutoCleanup-BRYDBUlq.js → useSessionAutoCleanup-CH6xneXb.js} +1 -1
  35. package/dist/assets/{useWorkerHighlightedLines-RexsXGPu.js → useWorkerHighlightedLines-BZ1TxY5I.js} +1 -1
  36. package/dist/index.html +2 -2
  37. package/dist/mini-chat.html +2 -2
  38. package/dist/mobile.html +2 -2
  39. package/package.json +1 -1
  40. package/server/index.js +7 -0
  41. package/server/lib/notifications/DOCUMENTATION.md +2 -2
  42. package/server/lib/notifications/runtime.js +68 -27
  43. package/server/lib/notifications/runtime.test.js +176 -0
  44. package/server/lib/session-index/DOCUMENTATION.md +6 -5
  45. package/server/lib/session-index/service.js +1 -0
  46. package/server/lib/session-index/service.test.js +7 -2
  47. package/server/lib/session-title/DOCUMENTATION.md +3 -2
  48. package/server/lib/session-title/runtime.js +1 -0
  49. package/server/lib/session-title/runtime.test.js +6 -0
  50. package/server/lib/small-model/DOCUMENTATION.md +93 -38
  51. package/server/lib/small-model/catalog.js +10 -2
  52. package/server/lib/small-model/catalog.test.js +3 -1
  53. package/server/lib/small-model/index.js +52 -28
  54. package/server/lib/small-model/opencode-session.js +339 -0
  55. package/server/lib/small-model/opencode-session.test.js +177 -0
  56. package/server/lib/small-model/resolve.js +116 -5
  57. package/server/lib/small-model/resolve.test.js +76 -10
  58. package/server/lib/small-model/summary-settings.test.js +60 -3
  59. package/dist/assets/renderMobileApp-DrU0se98.js +0 -23
  60. package/dist/assets/src-DcPZ_rWS.css +0 -2
@@ -3,7 +3,7 @@ import{o as e,r as t}from"./rolldown-runtime-C0FnF6B9.js";import{A as n,D as r,E
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>ht)throw Error(`SSE response exceeds buffer limit`);u=i,l.push(a)}},h=e=>{if(e.length===0)return;o+=e,s+=gt.encode(e).byteLength;let t=o===`data`?4:o.startsWith(`data:`)?5+ +(o.charAt(5)===` `):0;if(u+s-t>ht)throw Error(`SSE response exceeds buffer limit`)},g=e=>{let t=0;c&&(c=!1,e.charAt(0)===`
4
4
  `&&(t=1));for(let n=t;n<e.length;n+=1){let r=e.charAt(n);(r===`\r`||r===`
5
5
  `)&&(h(e.slice(t,n)),m(),r===`\r`&&n+1<e.length&&e.charAt(n+1)===`
6
- `?n+=1:r===`\r`&&n+1===e.length&&(c=!0),t=n+1)}h(e.slice(t))};try{for(;;){let{done:e,value:t}=await i.read();if(e)break;g(a.decode(t,{stream:!0}))}g(a.decode()),d=!0}catch(e){throw t.signal?.aborted||_t(e)?vt(e):e instanceof Error&&e.message===`SSE response exceeds buffer limit`?e:Error(`SSE response read failed`)}finally{d||await bt(i),i.releaseLock()}},St=null,Ct=null,wt=null,Tt=0,Et=null,Dt=new Set,Ot=new Map,kt=e=>e===`session-index-changed`||e===`message-queue-changed`||e===`assistants-changed`,At=()=>{Ot.clear()},jt=e=>Ot.get(e),Mt=(e,t)=>{let n=Ot.get(e);(n===void 0||t>n)&&Ot.set(e,t)},Nt=3e4,Pt=45e3,Ft=()=>{wt&&=(clearTimeout(wt),null)},It=()=>{if(Ct||Dt.size===0)return;let e=Math.min(1e3*2**Math.min(Tt,5),Nt);Ct=setTimeout(()=>{Ct=null,Tt+=1,Ht()},e)},Lt=()=>{Ft();let e=St;St=null,e?.controller.abort()},Rt=e=>{if(Ft(),Dt.size===0||St!==e)return;let t=setTimeout(()=>{St===e&&wt===t&&(wt=null,Lt(),It())},Pt)},zt=e=>{if(!e||e.trim().length===0)return null;try{let t=JSON.parse(e),n=typeof t?.type==`string`?t.type:``,r=t?.properties;return n?{type:n,properties:r}:null}catch{return null}},Bt=e=>{if(e.type===`openchamber:event-stream-ready`)return e.properties===void 0||e.properties===null||typeof e.properties==`object`&&!Array.isArray(e.properties)?{type:`event-stream-ready`}:null;if(e.type===`openchamber:heartbeat`)return null;let t=e.properties&&typeof e.properties==`object`&&!Array.isArray(e.properties)?e.properties:null;if(e.type===`openchamber:worktree-topology-changed`){let e=typeof t?.projectDirectory==`string`?t.projectDirectory.trim():``,n=typeof t?.directory==`string`?t.directory.trim():``,r=t?.operation,i=t?.occurredAt;return!e||!n||r!==`added`&&r!==`removed`||typeof i!=`number`||!Number.isFinite(i)?null:{type:`worktree-topology-changed`,projectDirectory:e,directory:n,operation:r,occurredAt:i}}if(e.type===`openchamber:worktree-bootstrap-status`){let e=typeof t?.directory==`string`?t.directory.trim():``,n=t?.status,r=t?.updatedAt,i=typeof t?.error==`string`&&t.error.trim().length>0?t.error.trim():null;return!e||n!==`pending`&&n!==`ready`&&n!==`failed`||typeof r!=`number`||!Number.isFinite(r)?null:{type:`worktree-bootstrap-status`,directory:e,status:n,error:i,updatedAt:r}}if(e.type===`openchamber:session-index-changed`){let e=t?.revision,n=t?.occurredAt;if(typeof e!=`number`||!Number.isSafeInteger(e)||e<0||typeof n!=`number`||!Number.isFinite(n))return null;let r=t?.sync&&typeof t.sync==`object`&&!Array.isArray(t.sync)?t.sync:null;return{type:`session-index-changed`,revision:e,occurredAt:n,...r?{sync:{active:r.active===!0,enriching:r.enriching===!0}}:{}}}if(e.type===`openchamber:message-queue-changed`){let e=t?.revision,n=t?.occurredAt;return typeof e!=`number`||!Number.isSafeInteger(e)||e<0||typeof n!=`number`||!Number.isFinite(n)?null:{type:`message-queue-changed`,revision:e,occurredAt:n}}if(e.type===`openchamber:assistants-changed`){let e=t?.revision,n=t?.occurredAt;return typeof e!=`number`||!Number.isSafeInteger(e)||e<0||typeof n!=`number`||!Number.isFinite(n)?null:{type:`assistants-changed`,revision:e,occurredAt:n}}if(e.type!==`openchamber:scheduled-task-ran`)return null;let n=typeof t?.projectId==`string`?t.projectId:``,r=typeof t?.taskId==`string`?t.taskId:``,i=typeof t?.ranAt==`number`?t.ranAt:Date.now(),a=t?.status;return!n||!r?null:{type:`scheduled-task-ran`,projectId:n,taskId:r,ranAt:i,status:a===`running`||a===`error`?a:`success`,...typeof t?.sessionId==`string`&&t.sessionId.length>0?{sessionId:t.sessionId}:{}}},Vt=e=>{let t=Bt(e);if(t){t.type===`event-stream-ready`&&(Tt=0),kt(t.type)&&`revision`in t&&Mt(t.type,t.revision);for(let e of Dt)try{e(t)}catch{}}},Ht=()=>{if(typeof window>`u`||Dt.size===0||St)return;let e={controller:new AbortController};St=e,xt(`/api/openchamber/events`,{signal:e.controller.signal,onOpen:()=>{St===e&&Rt(e)},onActivity:()=>{St===e&&Rt(e)},onMessage:t=>{if(St!==e)return;let n=zt(t);n&&Vt(n)}}).then(()=>{St===e&&(St=null,Ft(),It())},()=>{St===e&&(St=null,Ft(),e.controller.signal.aborted||It())})},Ut=()=>{Et||typeof window>`u`||(Et=d(()=>{At(),Ct&&=(clearTimeout(Ct),null),Lt(),Tt=0,Ht()}))},Wt=()=>{Et?.(),Et=null},Gt=e=>(Dt.add(e),Ut(),Ht(),()=>{Dt.delete(e),Dt.size===0&&(At(),Ct&&=(clearTimeout(Ct),null),Tt=0,Lt(),Wt())}),Kt=!1,qt=Promise.resolve(),Jt=null,Yt=()=>{Kt||(Kt=!0,qt=new Promise(e=>{Jt=e}))},Xt=async()=>qt,Zt=()=>{if(!Kt)return;Kt=!1;let e=Jt;Jt=null,e?.()},Qt=`openchamber_input_draft_metadata_v1`,$t=`openchamber_input_draft_metadata_migration_v1`,en=`openchamber_chat_input_draft_`,tn=`openchamber_chat_confirmed_mentions_`,nn=()=>({ok:!1,error:{code:`unavailable`}}),rn=()=>({ok:!1,error:{code:`cancelled`}}),an=e=>({ok:!1,error:{code:e instanceof DOMException&&e.name===`QuotaExceededError`?`quota`:`unavailable`}}),on=e=>typeof e==`object`&&!!e&&(Object.getPrototypeOf(e)===Object.prototype||Object.getPrototypeOf(e)===null),sn=(e,t)=>Object.keys(e).every(e=>t.includes(e)),cn=e=>typeof e==`number`&&Number.isSafeInteger(e)&&e>0,ln=e=>typeof e==`string`&&e.length>0,un=e=>({read:async t=>{if(!e)return nn();try{return{ok:!0,value:e.getItem(t)}}catch(e){return an(e)}},write:async(t,n)=>{if(!e)return nn();try{return e.setItem(t,n),{ok:!0,value:void 0}}catch(e){return an(e)}},remove:async t=>{if(!e)return nn();try{return e.removeItem(t),{ok:!0,value:void 0}}catch(e){return an(e)}},keys:async()=>{if(!e)return nn();try{let t=[];for(let n=0;n<e.length;n+=1){let r=e.key(n);r!==null&&t.push(r)}return{ok:!0,value:t}}catch(e){return an(e)}}}),dn=()=>{try{return un(typeof window>`u`?null:window.localStorage)}catch{return un(null)}},fn=(e,t,n,r)=>{let i=[];try{let e=n===null?[]:JSON.parse(n);Array.isArray(e)&&(i=e.filter(e=>typeof e==`string`))}catch{}return{suffix:e,text:t??``,mentions:i,keys:r}},pn=async e=>{let t=await e.keys();if(!t.ok)return t;let n=new Set;for(let e of t.value)e.startsWith(en)&&n.add(e.slice(29)),e.startsWith(tn)&&n.add(e.slice(36));let r=[];for(let i of n){let n=`${en}${i}`,a=`${tn}${i}`,[o,s]=await Promise.all([e.read(n),e.read(a)]);if(!o.ok)return o;if(!s.ok)return s;r.push(fn(i,o.value,s.value,[n,a].filter(e=>t.value.includes(e))))}return{ok:!0,value:r}},mn=e=>{if(!(!on(e)||!sn(e,[`suffix`,`text`,`mentions`,`keys`])||typeof e.suffix!=`string`||typeof e.text!=`string`||!Array.isArray(e.mentions)||!e.mentions.every(e=>typeof e==`string`)||!Array.isArray(e.keys)||!e.keys.every(e=>typeof e==`string`)))return{suffix:e.suffix,text:e.text,mentions:[...e.mentions],keys:[...e.keys]}},hn=e=>{try{let t=JSON.parse(e);return Array.isArray(t)&&t.length===3&&ln(t[0])&&(t[1]===`session`||t[1]===`draft`)&&ln(t[2])&&e===JSON.stringify(t)}catch{return!1}},gn=e=>{if(!on(e)||!sn(e,[`complete`,`claimedTransportIdentity`,`captured`,`markerCommitted`,`cleanupComplete`])||typeof e.complete!=`boolean`||typeof e.claimedTransportIdentity!=`string`||e.captured!==void 0&&typeof e.captured!=`boolean`||e.markerCommitted!==void 0&&typeof e.markerCommitted!=`boolean`||e.cleanupComplete!==void 0&&typeof e.cleanupComplete!=`boolean`)return;let t=e.cleanupComplete??e.complete,n=e.captured??e.complete,r=e.markerCommitted??e.complete;if(!((n||r||t)&&!ln(e.claimedTransportIdentity))&&!(r&&!n)&&!(t&&(!n||!r)))return{complete:t,claimedTransportIdentity:e.claimedTransportIdentity,captured:n,markerCommitted:r,cleanupComplete:t}},_n=e=>{if(!on(e)||!sn(e,[`version`,`drafts`,`tombstones`,`migration`,`legacy`])||e.version!==1||!on(e.drafts)||!on(e.tombstones)||!on(e.legacy)||!sn(e.legacy,[`new`,`entries`])||!on(e.legacy.entries))return;let t=gn(e.migration);if(!t)return;let n={};for(let[t,r]of Object.entries(e.drafts)){let e=w(r);if(!e||t!==R(e.key))return;n[t]=e}let r={};for(let[t,n]of Object.entries(e.tombstones)){if(!hn(t)||!cn(n))return;r[t]=n}let i={};for(let[t,n]of Object.entries(e.legacy.entries)){let e=mn(n);if(!e||t!==e.suffix||t===`new`)return;i[t]=e}let a=e.legacy.new===void 0?void 0:mn(e.legacy.new);if(!(e.legacy.new!==void 0&&(!a||a.suffix!==`new`)))return{version:1,drafts:n,tombstones:r,migration:t,legacy:{...a?{new:a}:{},entries:i}}},vn=(e=``)=>({version:1,drafts:{},tombstones:{},migration:{complete:!1,claimedTransportIdentity:e,captured:!1,markerCommitted:!1,cleanupComplete:!1},legacy:{entries:{}}}),yn=e=>{try{return{ok:!0,value:JSON.stringify(e)}}catch{return{ok:!1,error:{code:`serialization`}}}},bn=async e=>{let t=await e.read(Qt);if(!t.ok)return t;if(t.value===null)return{ok:!0,value:null};try{let e=_n(JSON.parse(t.value));return e?{ok:!0,value:e}:{ok:!1,error:{code:`corrupt`}}}catch{return{ok:!1,error:{code:`corrupt`}}}},xn=async(e,t)=>{let n=_n(t);if(!n)return{ok:!1,error:{code:`corrupt`}};let r=yn(n);return r.ok?e.write(Qt,r.value):r},Sn=e=>on(e)&&sn(e,[`version`,`claimedTransportIdentity`])&&e.version===1&&ln(e.claimedTransportIdentity)?{version:1,claimedTransportIdentity:e.claimedTransportIdentity}:void 0,Cn=e=>yn({version:1,claimedTransportIdentity:e}),wn=(e,t,n)=>{let r={},i;for(let e of t)e.suffix===`new`?i=e:r[e.suffix]=e;return{...e,migration:{complete:!1,claimedTransportIdentity:n,captured:!0,markerCommitted:!1,cleanupComplete:!1},legacy:{...i?{new:i}:{},entries:r}}},Tn=e=>[...new Set([e.legacy.new,...Object.values(e.legacy.entries)].flatMap(e=>e?.keys??[]))],En=new WeakMap,Dn=e=>{let t=En.get(e);if(t)return t;let n=Promise.resolve(),r,i=!0,a=e=>{let t=n.then(e,e);return n=t.then(()=>void 0,()=>void 0),t},o={persist:t=>{let n=_n(t);return n?i?a(async()=>i?xn(e,n):nn()):Promise.resolve(nn()):Promise.resolve({ok:!1,error:{code:`corrupt`}})},migrate:(t,n={})=>{if(r)return r;let o=a(async()=>{let r=await bn(e);if(!r.ok)return r;let a=r.value??vn(),o=i&&(n.persistenceEnabled??!0);if(!a.migration.captured){let n=await pn(e);if(!n.ok)return n;if(!o)return{ok:!0,value:wn(a,n.value,``)};if(a=wn(a,n.value,t),!i)return{ok:!0,value:a};let r=await xn(e,a);if(!r.ok)return r}if(!i||!(n.persistenceEnabled??!0)){let t=await pn(e);return t.ok?{ok:!0,value:a}:t}let s=await e.read($t);if(!s.ok)return s;if(s.value!==null)try{let t=Sn(JSON.parse(s.value));if(!t)return{ok:!1,error:{code:`corrupt`}};if(t.claimedTransportIdentity!==a.migration.claimedTransportIdentity){let t=Cn(a.migration.claimedTransportIdentity);if(!t.ok)return t;if(!i)return{ok:!0,value:a};let n=await e.write($t,t.value);if(!n.ok)return n}}catch{return{ok:!1,error:{code:`corrupt`}}}else{let t=Cn(a.migration.claimedTransportIdentity);if(!t.ok)return t;if(!i)return{ok:!0,value:a};let n=await e.write($t,t.value);if(!n.ok)return n}if(a.migration.cleanupComplete)return{ok:!0,value:a};for(let t of Tn(a)){if(!i)return{ok:!0,value:a};let n=await e.remove(t);if(!n.ok)return n}if(a={...a,migration:{complete:!0,claimedTransportIdentity:a.migration.claimedTransportIdentity,captured:!0,markerCommitted:!0,cleanupComplete:!0}},!i)return{ok:!0,value:a};let c=await xn(e,a);return c.ok?{ok:!0,value:a}:c}).finally(()=>{r=void 0});return r=o,o},flush:()=>n,setEnabled:async e=>{i=e,i||await n}};return En.set(e,o),o},On=e=>{let t=Dn(e),n=!0,r=!1,i=[],a=[],o=()=>{if(r||i.length>0)return;let e=a;a=[],e.forEach(e=>e())},s=()=>{if(r)return;let e=i.shift();if(!e){o();return}r=!0,t.persist(e.snapshot).then(e.resolve).finally(()=>{r=!1,s()})};return{persist:e=>{let t=_n(e);return t?n?new Promise(e=>{i.push({snapshot:t,resolve:e}),s()}):Promise.resolve(nn()):Promise.resolve({ok:!1,error:{code:`corrupt`}})},cancelPending:()=>{let e=i;i=[],e.forEach(({resolve:e})=>e(rn())),o()},flush:()=>r||i.length>0?new Promise(e=>a.push(e)):Promise.resolve(),setEnabled:async e=>{if(n=e,!n){let e=i;i=[],e.forEach(({resolve:e})=>e(rn()))}await(r||i.length>0?new Promise(e=>a.push(e)):Promise.resolve()),await t.setEnabled(e),await t.flush()}}},kn=`openchamber-input-drafts`,An=1,jn=`blobs`,Mn=`blobRefs`,Nn=class extends Error{code;constructor(e){super(e),this.code=e}},Pn=e=>({ok:!1,error:{code:e instanceof Nn?e.code:e instanceof DOMException&&e.name===`QuotaExceededError`?`quota-exceeded`:e instanceof DOMException&&e.name===`AbortError`?`transaction-aborted`:`transaction-failed`}}),Fn=e=>{if(!(e instanceof Blob)&&!ie(e))throw new Nn(`invalid-value`)},In=e=>{if(!e)throw new Nn(`invalid-value`)},Ln=(e,t)=>({id:Se(e),blobID:t,transportIdentity:e.transportIdentity,ownerKind:e.owner.kind,ownerID:e.owner.ownerID}),Rn=async e=>{if(typeof e==`string`)return`url:${e}`;let t=await crypto.subtle.digest(`SHA-256`,await e.arrayBuffer()),n=[...new Uint8Array(t)].map(e=>e.toString(16).padStart(2,`0`)).join(``);return`blob:${e.type}:${e.size}:${n}`},zn=async(e,t)=>(e.fingerprint??await Rn(e.value))===t,Bn=async(e,t=!1)=>{let n=await e.getAllBlobRefs(),r=await e.getAllBlobs(),i=new Map;for(let t of n)await e.getBlob(t.blobID)?i.set(t.blobID,(i.get(t.blobID)??0)+1):await e.deleteBlobRef(t.id);for(let n of r){let r=i.get(n.id)??0;r||!t?await e.putBlob({...n,refCount:r}):await e.deleteBlob(n.id)}},Vn=e=>{try{let t=JSON.parse(e);return!Array.isArray(t)||t.length!==4||typeof t[0]!=`string`||typeof t[2]!=`string`||t[1]!==`session`&&t[1]!==`draft`&&t[1]!==`surface`&&t[1]!==`queue`&&t[1]!==`send`?void 0:{transportIdentity:t[0],ownerKind:t[1],ownerID:t[2]}}catch{return}},Hn=(e,t)=>{let n=Vn(e.id),r=e.ownerKind??n?.ownerKind,i=e.transportIdentity??n?.transportIdentity;return r!==void 0&&t.ownerKinds.includes(r)&&(t.transportIdentities===void 0||i!==void 0&&t.transportIdentities.includes(i))},Un=(e=Wn())=>{let t=async(t,n)=>{try{return{ok:!0,value:await e.transaction(async e=>{let r=await e.getBlobRef(Se(t));return!r||n!==void 0&&r.blobID!==n?!1:(await e.deleteBlobRef(r.id),await Bn(e),(await e.getAllBlobRefs()).some(e=>e.blobID===r.blobID)||await e.deleteBlob(r.blobID),!0)})}}catch(e){return Pn(e)}};return{put:async(t,n)=>{try{In(t),Fn(n);let r=await Rn(n);return await e.transaction(async e=>{let i=await e.getBlob(t);if(i&&!await zn(i,r))throw new Nn(`blob-id-conflict`);i||await e.putBlob({id:t,value:n,refCount:0,fingerprint:r})}),{ok:!0,value:void 0}}catch(e){return Pn(e)}},putAndRetain:async(t,n,r)=>{try{In(n),Fn(r);let i=await Rn(r);return await e.transaction(async e=>{let a=Se(t),o=await e.getBlobRef(a);if(o&&o.blobID!==n)throw new Nn(`blob-id-conflict`);let s=await e.getBlob(n);if(s&&!await zn(s,i))throw new Nn(`blob-id-conflict`);s||await e.putBlob({id:n,value:r,refCount:0,fingerprint:i}),o||await e.putBlobRef(Ln(t,n)),await Bn(e)}),{ok:!0,value:void 0}}catch(e){return Pn(e)}},read:async t=>{try{let n=await e.transaction(e=>e.getBlob(t));return n?{ok:!0,value:n.value}:{ok:!1,error:{code:`missing-blob`}}}catch(e){return Pn(e)}},readReference:async t=>{try{return{ok:!0,value:(await e.transaction(e=>e.getBlobRef(Se(t))))?.blobID}}catch(e){return Pn(e)}},retain:async(t,n)=>{try{return In(n),await e.transaction(async e=>{let r=await e.getBlobRef(Se(t));if(r&&r.blobID!==n)throw new Nn(`blob-id-conflict`);if(!await e.getBlob(n))throw new Nn(`missing-blob`);r||await e.putBlobRef(Ln(t,n)),await Bn(e)}),{ok:!0,value:void 0}}catch(e){return Pn(e)}},release:e=>t(e),releaseIfMatches:(e,n)=>t(e,n),reconcileReferences:async(t,n={ownerKinds:[`session`,`draft`]})=>{try{return{ok:!0,value:await e.transaction(async e=>{let r=[],i=[],a=[],o=new Map((await e.getAllBlobRefs()).map(e=>[e.id,e]));for(let[i,a]of o)Hn(a,n)&&t.get(i)!==a.blobID&&(await e.deleteBlobRef(i),r.push(i));for(let[r,s]of t){let t=Vn(r);if(!t||!n.ownerKinds.includes(t.ownerKind)||n.transportIdentities!==void 0&&!n.transportIdentities.includes(t.transportIdentity)){a.push(r);continue}let c=o.get(r);if(!await e.getBlob(s)){a.push(r);continue}(!c||c.blobID!==s)&&(await e.putBlobRef({id:r,blobID:s,...t}),i.push(r))}return await Bn(e,!0),{released:r,repaired:i,missing:a}})}}catch(e){return Pn(e)}},reconcileOwnerReferences:async(t,n)=>{let r=new Map;for(let[e,i]of n)r.set(Se({transportIdentity:t.transportIdentity,owner:t.owner,attachmentOccurrenceRefID:e}),i);try{return{ok:!0,value:await e.transaction(async e=>{let n=0,i=new Set;for(let a of await e.getAllBlobRefs())a.transportIdentity===t.transportIdentity&&a.ownerKind===t.owner.kind&&a.ownerID===t.owner.ownerID&&r.get(a.id)!==a.blobID&&(await e.deleteBlobRef(a.id),i.add(a.blobID),n++);await Bn(e);let a=await e.getAllBlobRefs();for(let t of i)a.some(e=>e.blobID===t)||await e.deleteBlob(t);return n})}}catch(e){return Pn(e)}},discardUnreferenced:async t=>{try{return{ok:!0,value:await e.transaction(async e=>!await e.getBlob(t)||(await e.getAllBlobRefs()).some(e=>e.blobID===t)?!1:(await e.deleteBlob(t),!0))}}catch(e){return Pn(e)}}}},Wn=()=>({transaction:async e=>{let t=await Gn(),n=t.transaction([jn,Mn],`readwrite`),r=n.objectStore(jn),i=n.objectStore(Mn),a=e=>new Promise((t,r)=>{e.onsuccess=()=>t(e.result),e.onerror=()=>r(e.error??n.error??Error(`IndexedDB request failed`))}),o=new Promise((e,t)=>{n.oncomplete=()=>e(),n.onabort=()=>t(n.error??new DOMException(`aborted`,`AbortError`)),n.onerror=()=>{console.error(`Input draft IndexedDB transaction error`,n.error)}}),s;try{let t=await e({getBlob:e=>a(r.get(e)),getAllBlobs:()=>a(r.getAll()),putBlob:async e=>{await a(r.put(e))},deleteBlob:async e=>{await a(r.delete(e))},getBlobRef:e=>a(i.get(e)),getAllBlobRefs:()=>a(i.getAll()),putBlobRef:async e=>{await a(i.put(e))},deleteBlobRef:async e=>{await a(i.delete(e))}});return await o,t}catch(e){s=e;try{n.abort()}catch{}try{await o}catch(e){s===void 0&&(s=e)}throw s}finally{t.close()}}}),Gn=()=>new Promise((e,t)=>{if(!globalThis.indexedDB){t(new Nn(`database-unavailable`));return}let n=indexedDB.open(kn,An),r=!1,i=()=>{r||(r=!0,t(new Nn(`database-unavailable`)))};n.onupgradeneeded=()=>{let e=n.result;e.objectStoreNames.contains(jn)||e.createObjectStore(jn,{keyPath:`id`}),e.objectStoreNames.contains(Mn)||e.createObjectStore(Mn,{keyPath:`id`})},n.onsuccess=()=>{let t=n.result;if(t.onversionchange=()=>t.close(),r){t.close();return}r=!0,e(t)},n.onerror=i,n.onblocked=i}),Kn=()=>({drafts:{},tombstones:{},migration:{complete:!1,claimedTransportIdentity:``,captured:!1,markerCommitted:!1,cleanupComplete:!1},legacy:{entries:{}}}),qn=e=>({version:1,drafts:e.drafts,tombstones:e.tombstones,migration:e.migration,legacy:e.legacy}),Jn=e=>{let t=qn(e),n=Yn(JSON.parse(JSON.stringify(t)));return{drafts:n.drafts,tombstones:n.tombstones,migration:n.migration,legacy:n.legacy}},Yn=e=>{let t=_n(e);if(!t)throw Error(`invalid draft snapshot`);return t},Xn=e=>e instanceof Map?[...e.entries()]:Object.entries(e??{}),Zn=e=>typeof e==`string`?e:R(e),Qn=[`session`,`draft`,`surface`],$n=e=>({transportIdentity:e.transportIdentity,owner:{kind:e.owner.kind,ownerID:e.owner.ownerID},attachmentOccurrenceRefID:e.attachmentOccurrenceRefID}),er=e=>JSON.parse(JSON.stringify(e)),tr=e=>e.phase===`metadata`?{phase:`metadata`,error:{code:e.error.code}}:{phase:`blob`,error:{...e.error},...e.reference?{reference:$n(e.reference)}:{}},nr=e=>({status:e.status,keys:[...e.keys],errors:e.errors.map(tr),cleanupErrors:e.cleanupErrors.map(tr)}),rr=e=>typeof e==`number`&&Number.isSafeInteger(e)&&e>0,ir=e=>{try{let t=JSON.parse(e);return Array.isArray(t)&&t.length===3&&typeof t[0]==`string`&&Qn.includes(t[1])&&typeof t[2]==`string`&&t[0].length>0&&t[2].length>0}catch{return!1}},ar=e=>[...e.attachments,...e.syntheticParts.flatMap(e=>e.attachments)].flatMap(t=>t.locator.kind===`blob`?[{reference:{transportIdentity:e.key.transportIdentity,owner:{kind:e.key.owner.kind,ownerID:e.key.owner.ownerID},attachmentOccurrenceRefID:t.attachmentRefID},attachment:er(t)}]:[]),or=e=>{let t=new Map;for(let n of Object.values(e))for(let e of ar(n))t.set(Se(e.reference),e);return t},sr=(e,t)=>({phase:`blob`,error:{...e},...t?{reference:$n(t)}:{}}),cr=(e,t=[])=>({status:e,keys:t,errors:[],cleanupErrors:[]}),lr=e=>e?.attachment.locator.kind===`blob`?e.attachment.locator.blobID:``,ur=(e,t,n={})=>{let r=Kn(),i=n.enabled??!0,a=0,o=!1,s=Promise.resolve(),c=new Map,l=e=>{let t=s.then(e,e);return s=t.then(()=>void 0,()=>void 0),t.then(e=>e&&typeof e==`object`&&`status`in e&&`keys`in e&&`errors`in e&&`cleanupErrors`in e?nr(e):e)},u=async(t=r.drafts)=>{let n=[],i=new Map([...or(t)].map(([e,t])=>[e,t.attachment.locator.kind===`blob`?t.attachment.locator.blobID:``]));for(let[t,r]of c){if(i.get(t)===r.expectedBlobID){c.delete(t);continue}let a=await e.releaseIfMatches($n(r.reference),r.expectedBlobID);a.ok?c.delete(t):n.push(sr(a.error,r.reference))}return n},d=async(t,n,r,i)=>{let o=$n(t),s=await e.releaseIfMatches(o,n);s.ok||(c.set(Se(o),{reference:$n(o),expectedBlobID:n,generation:a,reason:i}),r.push(sr(s.error,o)))},f=async(t,n)=>{let r=t.attachment.locator.kind===`blob`?t.attachment.locator.blobID:``,i=$n(t.reference),a=er(t.attachment),o=await e.readReference(i);if(!o.ok)return{acquired:!1,error:sr(o.error,i)};if(o.value&&o.value!==r)return{acquired:!1,error:sr({code:`reference-conflict`},i)};if(o.value===r){let t=await e.read(r);if(t.ok)return{acquired:!1};if(t.error.code!==`missing-blob`)return{acquired:!1,error:sr(t.error,i)};let o=await n?.($n(i),er(a));if(o===void 0)return{acquired:!1,error:sr({code:`runtime-value-missing`},i)};let s=await e.putAndRetain(i,r,o);return s.ok?{acquired:!0}:{acquired:!1,error:sr(s.error,i)}}let s=await e.read(r);if(s.ok){let t=await e.retain(i,r);return t.ok?{acquired:!0}:{acquired:!1,error:sr(t.error,i)}}if(s.error.code!==`missing-blob`)return{acquired:!1,error:sr(s.error,i)};let c=await n?.($n(i),er(a));if(c===void 0)return{acquired:!1,error:sr({code:`runtime-value-missing`},i)};let l=await e.putAndRetain(i,r,c);return l.ok?{acquired:!0}:{acquired:!1,error:sr(l.error,i)}};return{seed:t=>l(async()=>{if(!i)return cr(`disabled`);if(o)return{...cr(`failed`),errors:[sr({code:`invalid-record`})]};let n;try{if(!t)n=Kn();else{let e=Yn(JSON.parse(JSON.stringify(t)));n={drafts:e.drafts,tombstones:e.tombstones,migration:e.migration,legacy:e.legacy}}}catch{return{...cr(`failed`),errors:[sr({code:`invalid-record`})]}}let a=or(n.drafts),s=await e.reconcileReferences(new Map([...a].map(([e,t])=>[e,lr(t)])),{ownerKinds:Qn});return s.ok?(r=n,o=!0,{...cr(`committed`),errors:s.value.missing.map(e=>sr({code:`missing-blob`},a.get(e)?.reference))}):{...cr(`failed`),errors:[sr(s.error)]}}),commit:e=>{let n=[...Xn(e.drafts).map(([e])=>e),...(e.delete??[]).map(Zn)];return i?l(async()=>{if(!o)return cr(`unseeded`,n);if(!i)return cr(`disabled`,n);let s=a,c=[],l=Jn(r),p=Xn(e.drafts),m=Xn(e.tombstones),h=(e.delete??[]).map(Zn);if(p.some(([e,t])=>!ir(e)||!rr(t.revision))||m.some(([e,t])=>!ir(e)||!rr(t))||h.some(e=>!ir(e))||new Set(p.map(([e])=>e)).size!==p.length||m.some(([e])=>p.some(([t])=>t===e)))return{...cr(`failed`,n),errors:[sr({code:`invalid-record`})]};try{for(let[e,t]of p){let n=w(t);if(!n||e!==R(n.key))throw Error(`invalid draft record`);l.drafts[e]=n,delete l.tombstones[e]}for(let e of h)delete l.drafts[e];for(let[e,t]of m)l.tombstones[e]=t;e.migration&&(l.migration=e.migration),e.legacy&&(l.legacy=e.legacy);let t=Yn(qn(l));l.drafts=t.drafts,l.tombstones=t.tombstones,l.migration=t.migration,l.legacy=t.legacy}catch{return{...cr(`failed`,n),errors:[sr({code:`invalid-record`})],cleanupErrors:c}}if(!await e.isCurrent())return cr(`stale`,n);let g=or(r.drafts),_=or(l.drafts);c=await u(l.drafts);let v=[];for(let[t,r]of _){let i=g.get(t);if((i?.attachment.locator.kind===`blob`?i.attachment.locator.blobID:void 0)===(r.attachment.locator.kind===`blob`?r.attachment.locator.blobID:void 0))continue;let a=await f(r,e.resolveBlobValue);if(a.error){for(let e of v.reverse())await d(e,lr(_.get(Se(e))),c,`acquire-failed`);return{...cr(`failed`,n),errors:[a.error],cleanupErrors:c}}a.acquired&&v.push(r.reference)}if(!await e.isCurrent()){for(let e of v.reverse())await d(e,lr(_.get(Se(e))),c,`stale`);return{...cr(`stale`,n),cleanupErrors:c}}if(!i||s!==a){for(let e of v.reverse())await d(e,lr(_.get(Se(e))),c,`disabled`);return{...cr(`disabled`,n),cleanupErrors:c}}let y=await t.persist(qn(l));if(!y.ok){for(let e of v.reverse())await d(e,lr(_.get(Se(e))),c,`metadata-failed`);return{...cr(`failed`,n),errors:[{phase:`metadata`,error:y.error}],cleanupErrors:c}}r=l;for(let[e,t]of g)_.has(e)||await d(t.reference,t.attachment.locator.kind===`blob`?t.attachment.locator.blobID:``,c,`metadata-committed`);return{...cr(`committed`,n),cleanupErrors:c}}):Promise.resolve(nr(cr(`disabled`,n)))},reconcile:()=>l(async()=>{if(!o)return cr(`unseeded`);if(!i)return cr(`disabled`);let t=await u(),n=new Map([...or(r.drafts)].map(([e,t])=>[e,t.attachment.locator.kind===`blob`?t.attachment.locator.blobID:``])),a=await e.reconcileReferences(n,{ownerKinds:Qn}),s=a.ok?a.value.missing.map(e=>sr({code:`missing-blob`},or(r.drafts).get(e)?.reference)):[sr(a.error)];return{status:a.ok?`committed`:`failed`,keys:[],errors:s,cleanupErrors:t}}),retryCleanup:()=>l(async()=>({...cr(`committed`),cleanupErrors:await u()})),flush:()=>s,setEnabled:async e=>{if(!e){i=!1,a+=1,t.cancelPending?.(),await t.setEnabled?.(!1),await s,await t.flush?.();return}await t.setEnabled?.(!0),i=!0,a+=1}}},dr=`openchamber-composer-reference-draft`,fr=`openchamber-pasted-text-draft`,pr=e=>Array.from(e).length,mr=e=>typeof e==`object`&&!!e&&(Object.getPrototypeOf(e)===Object.prototype||Object.getPrototypeOf(e)===null),hr=(e,t)=>typeof e==`string`&&e.length>0&&e.length<=t,gr=(e,t)=>{let n=[],r=[],i=0;for(let a=0;a<Math.min(t.length,P.referenceCount);a+=1){let o=t[a];if(!(!mr(o)||!hr(o.id,P.idLength)||!hr(o.token,P.displayLength)||typeof o.text!=`string`||o.text.length>P.pastePayloadLength||typeof o.characterCount!=`number`||!Number.isSafeInteger(o.characterCount)||o.characterCount!==pr(o.text)||typeof o.index!=`number`||!Number.isSafeInteger(o.index)||o.index<1))for(let t=e.indexOf(o.token);t>=0&&n.length<P.referenceCount;t=e.indexOf(o.token,t+o.token.length)){let e=t+o.token.length;if(r.some(n=>n.start<e&&n.end>t)||i+o.text.length>P.totalPastePayloadLength)continue;let a=n.filter(e=>e.id.startsWith(`${o.id}:`)).length;n.push({id:`${o.id}:${a}`,kind:`paste`,start:t,end:e,display:o.token,text:o.text,characterCount:o.characterCount,index:o.index}),r.push({start:t,end:e}),i+=o.text.length}}return n.sort((e,t)=>e.start-t.start)},_r=e=>{try{let t=JSON.parse(e);if(!mr(t)||typeof t.text!=`string`)return{text:e,references:[]};if(t.type===dr)return(t.version===2?we(t.text,t.references):void 0)??{text:t.text,references:[]};if(t.type===fr){let e=t.version===1&&Array.isArray(t.references)?gr(t.text,t.references):[];return we(t.text,e)??{text:t.text,references:[]}}}catch{}return{text:e,references:[]}},vr=`file://`,yr=e=>{let t=e.replace(/\\/g,`/`);return/^[A-Za-z]:/.test(t)&&(t=`/${t}`),t.split(`/`).map((e,t)=>t===1&&/^[A-Za-z]:$/.test(e)?e:encodeURIComponent(e)).join(`/`)},br=e=>{let t=e.replace(/\\/g,`/`).trim();return t.toLowerCase().startsWith(vr)?t:`${vr}${yr(t)}`},xr=(e,t)=>`${e}\u0000${t}`,Sr=e=>new Promise((t,n)=>{let r=new FileReader;r.onload=()=>t(r.result),r.onerror=()=>n(r.error??Error(`Failed to read file`)),r.onabort=()=>n(Error(`File read aborted`)),r.readAsDataURL(e)}),Cr=e=>{if(!e.startsWith(`data:`))return 0;let t=e.indexOf(`,`);if(t<0)return 0;let n=e.slice(0,t).toLowerCase(),r=e.slice(t+1);if(!n.endsWith(`;base64`))return 0;let i=0;return r.endsWith(`==`)?i=2:r.endsWith(`=`)&&(i=1),Math.max(0,Math.floor(r.length*3/4)-i)},wr=(e,t)=>e===t?!0:!e||!t?!1:e.filePath===t.filePath&&e.fileName===t.fileName&&e.relativePath===t.relativePath&&e.fileSize===t.fileSize&&e.selection?.startLine===t.selection?.startLine&&e.selection?.endLine===t.selection?.endLine&&e.selection?.text===t.selection?.text,Tr=e=>({version:1,key:e,revision:1,text:``,attachments:[],syntheticParts:[],mentions:[]}),Er=(e,t)=>t.flatMap(t=>{let n=`@${t}`,r=[],i=e.indexOf(n);for(;i>=0;)r.push({kind:`file`,value:t,path:t,label:t,range:{start:i,end:i+n.length}}),i=e.indexOf(n,i+n.length);return r}),Dr=((e={})=>{let t=e.sink??dn(),n=e.repository??Dn(t),i=e.coordinator??On(t),a=e.blobStore??Un(),o=e.durability??ur(a,i,{enabled:e.persistenceEnabled??!0}),c=new Map,l=new Map,u=new Map,d=new Map,f=new Map,p=new Set,m=new Set,h,g,_=0,v=0,y=!1,b=!1,x,S=new Set,C=new Map,T=new Set;return Oe()((t,i)=>{let E=e=>c.set(e,(c.get(e)??0)+1),D=(...e)=>{for(let t of e)u.set(t,(u.get(t)??0)+1),d.delete(t)},O=e=>w(e),k=()=>e.runtimeCapture?.()??{transportIdentity:r(),generation:s()},A=e=>{let t=k();return t.transportIdentity===e.transportIdentity&&t.generation===e.generation},j=e=>[...e.attachments,...e.syntheticParts.flatMap(e=>e.attachments)],ee=e=>new Set(j(e).map(e=>e.attachmentRefID)),te=(e,t,n)=>{let r=ee(n);return{draftAttachmentViews:{...e.draftAttachmentViews,[t]:Object.fromEntries(Object.entries(e.draftAttachmentViews[t]??{}).filter(([e])=>r.has(e)))},draftMissingAttachmentRefIDs:{...e.draftMissingAttachmentRefIDs,[t]:(e.draftMissingAttachmentRefIDs[t]??[]).filter(e=>r.has(e))}}},M=()=>e.createID?.()??fe(),ne=async(e,t)=>{let n=t instanceof File?t:new File([t],e.filename,{type:e.mimeType});return{id:e.attachmentID,file:n,dataUrl:typeof t==`string`?t:await Sr(n),mimeType:e.mimeType,filename:e.filename,size:e.size,source:e.source,...e.serverPath?{serverPath:e.serverPath}:{},...e.vscodePath?{vscodePath:e.vscodePath}:{},...e.vscodeSource?{vscodeSource:e.vscodeSource}:{}}},re=e=>{let t=e.errors[0]??e.cleanupErrors[0];return t?.phase===`metadata`||t?.phase===`blob`&&[`blob-id-conflict`,`database-unavailable`,`invalid-value`,`missing-blob`,`quota-exceeded`,`transaction-aborted`,`transaction-failed`].includes(t.error.code)?t.error.code:`unavailable`},ae=(e,n)=>{let r=i(),a=_,s=n??k(),l=[...new Set(e)];if(l.forEach(e=>m.delete(e)),h&&m.size===0&&(clearTimeout(h),h=void 0,g=void 0),!r.persistenceEnabled)return l.forEach(e=>S.add(e)),Promise.resolve({status:`disabled`,keys:l,errors:[],cleanupErrors:[]});let u=new Map(l.map(e=>[e,c.get(e)??0])),d=new Map(l.map(e=>[e,r.drafts[e]?.revision??r.tombstones[e]??0])),f=l.filter(e=>r.drafts[e]),v=Object.fromEntries(f.map(e=>[e,r.draftPersistence[e]?.status===`error`?r.draftPersistence[e]:{status:`saving`,revision:d.get(e)}])),y=Object.fromEntries(f.map(e=>[e,r.draftAttachmentPersistence[e]?.status===`error`?r.draftAttachmentPersistence[e]:{status:`saving`,revision:d.get(e)}]));t(e=>({draftPersistence:{...e.draftPersistence,...v},draftAttachmentPersistence:{...e.draftAttachmentPersistence,...y}})),b||l.forEach(e=>S.add(e));let x=(async()=>{let e=i(),n=await o.commit({drafts:Object.fromEntries(l.flatMap(t=>e.drafts[t]?[[t,e.drafts[t]]]:[])),tombstones:Object.fromEntries(l.flatMap(t=>e.tombstones[t]?[[t,e.tombstones[t]]]:[])),delete:l.filter(t=>!e.drafts[t]),migration:e.migration,legacy:{...e.legacyNewDraft?{new:e.legacyNewDraft}:{},entries:e.legacyDraftEntries},resolveBlobValue:t=>{for(let[n,r]of Object.entries(e.drafts))if(r.key.transportIdentity===t.transportIdentity&&r.key.owner.kind===t.owner.kind&&r.key.owner.ownerID===t.owner.ownerID)return e.draftAttachmentViews[n]?.[t.attachmentOccurrenceRefID]?.file},isCurrent:()=>_===a&&i().persistenceEnabled&&A(s)&&l.every(e=>(c.get(e)??0)===u.get(e)&&(i().drafts[e]?.revision??i().tombstones[e]??0)===d.get(e))}),r=_===a&&i().persistenceEnabled&&A(s);return(!r||n.status===`unseeded`||n.status===`stale`||n.status===`disabled`)&&l.forEach(e=>S.add(e)),r&&t(e=>{let t={...e.draftPersistence};for(let e of f){if((c.get(e)??0)!==u.get(e))continue;let r=d.get(e);if(n.status===`committed`)t[e]={status:`saved`,revision:r};else if(n.status===`unseeded`||n.status===`stale`||n.status===`disabled`)continue;else t[e]={status:`error`,revision:r,errorCode:re(n)}}let r={...e.draftAttachmentPersistence};for(let e of f){if((c.get(e)??0)!==u.get(e))continue;let t=d.get(e);r[e]=n.status===`committed`&&n.cleanupErrors.length===0?{status:`saved`,revision:t}:n.status===`failed`||n.cleanupErrors.length>0?{status:`error`,revision:t,errorCode:re(n)}:r[e]??{status:`idle`,revision:t}}return{draftPersistence:t,draftAttachmentPersistence:r}}),n})();return p.add(x),x.then(()=>p.delete(x),()=>p.delete(x)),x},oe=e=>{let n=i(),r=Object.fromEntries(e.flatMap(e=>{let t=n.drafts[e];return t?[[e,{status:`saving`,revision:t.revision}]]:[]}));Object.keys(r).length&&t(e=>({draftPersistence:{...e.draftPersistence,...r}}))},se=()=>{h&&clearTimeout(h),h=void 0;let e=[...m];m.clear();let t=g;return g=void 0,e.length?ae(e,t).then(()=>void 0):Promise.resolve()},ce=e=>{if(!i().persistenceEnabled){S.add(e);return}m.add(e),oe([e]),!h&&(g=k(),h=setTimeout(()=>{se()},40))},le=e=>{let t=[...e];return t.forEach(e=>m.delete(e)),h&&m.size===0&&(clearTimeout(h),h=void 0,g=void 0),ae(t)},N=(e,n,r,a=`immediate`)=>{let o=R(e),s=i().drafts[o];if(!s||r!==void 0&&s.revision!==r)return;let c=O(n(s));if(!(!c||R(c.key)!==o))return E(o),t(e=>({drafts:{...e.drafts,[o]:c},...te(e,o,c)})),a===`deferred`?ce(o):le([o]),c},de=e=>e?pe(e):void 0,P=(e=[])=>JSON.parse(JSON.stringify(e)),me=(e,t,n,r=!1,i=!1)=>({status:e,...de(n)?{record:de(n)}:{},errors:P(t?.errors),cleanupErrors:P(t?.cleanupErrors),current:r,durable:i}),he=(e,t,n,r,i=!1,a=!1)=>({status:e,errors:P(t?.errors),cleanupErrors:P(t?.cleanupErrors),current:i,durable:a,source:de(n),destination:de(r)}),F=e=>e.status,ge=e=>typeof e==`number`&&Number.isSafeInteger(e)&&e>0,I=(e,...t)=>{let n={...e};for(let e of t)delete n[e];return n},_e=async(e,t)=>{let n={},r=i().draftAttachmentViews[R(e.key)]??{};for(let i of j(e)){let e;if(i.locator.kind===`url`){let n=t?.get(i.attachmentRefID);e=n===void 0?i.locator.url:n}else e=t?.get(i.attachmentRefID)??r[i.attachmentRefID]?.file??(typeof r[i.attachmentRefID]?.dataUrl==`string`&&ie(r[i.attachmentRefID].dataUrl)?r[i.attachmentRefID].dataUrl:void 0);if(i.locator.kind===`url`&&e!==void 0&&(e!==i.locator.url||!ie(e))||i.locator.kind===`blob`&&e!==void 0&&!(e instanceof Blob)&&!(typeof e==`string`&&ie(e)))return;e!==void 0&&(n[i.attachmentRefID]=await ne(i,e))}return n},ve=e=>e?R(e):`legacy-unowned`,ye=e=>C.get(e)??0,be=e=>{C.set(e,ye(e)+1)},xe=(e,n,r=!1)=>{r&&be(e),t(t=>{let r=n(t.attachmentBuckets[e]??[]);return{attachmentBuckets:{...t.attachmentBuckets,[e]:r},...ve(t.activeAttachmentDraft)===e?{attachedFiles:r}:{}}})};return{drafts:{},tombstones:{},draftHydration:{},draftPersistence:{},draftAttachmentViews:{},draftMissingAttachmentRefIDs:{},draftAttachmentPersistence:{},persistenceEnabled:e.persistenceEnabled??!0,legacyDraftEntries:{},migration:{complete:!1,claimedTransportIdentity:``},captureDraftRuntime:()=>k(),commitDraftSnapshot:async e=>{let n=R(e.key),r=e.runtime;if(r.transportIdentity!==e.key.transportIdentity||!A(r))return me(`stale`,void 0);let a=i(),s=a.drafts[n],l=a.tombstones[n]??0;if(e.expectedRevision!==`absent`&&!ge(e.expectedRevision)||!Number.isSafeInteger(l)||l<0)return me(`failed`,void 0);if(e.expectedRevision===`absent`?s:s?.revision!==e.expectedRevision)return me(`conflict`,void 0,s);let u=e.expectedRevision===`absent`?l+1:e.expectedRevision+1;if(!ge(u))return me(`failed`,void 0);let d=O({version:1,key:e.key,revision:u,...e.snapshot});if(!d)return me(`failed`,void 0);let f=await _e(d,e.values);if(!f)return me(`failed`,void 0);let p=c.get(n)??0,m=s?.revision??l,h=await o.commit({drafts:{[n]:d},isCurrent:()=>A(r)&&(c.get(n)??0)===p&&(i().drafts[n]?.revision??i().tombstones[n]??0)===m,resolveBlobValue:t=>e.values?.get(t.attachmentOccurrenceRefID)});if(h.status!==`committed`)return me(F(h),h,s);let g=(c.get(n)??0)===p&&(i().drafts[n]?.revision??i().tombstones[n]??0)===m,_=A(r);if(!g)return _||t(e=>({draftAttachmentViews:I(e.draftAttachmentViews,n),draftMissingAttachmentRefIDs:I(e.draftMissingAttachmentRefIDs,n),draftHydration:I(e.draftHydration,n),draftPersistence:I(e.draftPersistence,n),draftAttachmentPersistence:I(e.draftAttachmentPersistence,n)})),me(`stale`,h,d,!1,!0);let v=pe(d);return v?(E(n),D(n),t(e=>({drafts:{...e.drafts,[n]:v},tombstones:(()=>{let t={...e.tombstones};return delete t[n],t})(),draftAttachmentViews:_?{...e.draftAttachmentViews,[n]:f}:I(e.draftAttachmentViews,n),draftMissingAttachmentRefIDs:_?{...e.draftMissingAttachmentRefIDs,[n]:[]}:I(e.draftMissingAttachmentRefIDs,n),draftHydration:_?e.draftHydration:I(e.draftHydration,n),draftPersistence:_?{...e.draftPersistence,[n]:{status:`saved`,revision:v.revision}}:I(e.draftPersistence,n),draftAttachmentPersistence:_?{...e.draftAttachmentPersistence,[n]:h.cleanupErrors.length?{status:`error`,revision:v.revision,errorCode:re(h)}:{status:`saved`,revision:v.revision}}:I(e.draftAttachmentPersistence,n)})),me(_?`committed`:`stale`,h,v,_,!0)):me(`failed`,h)},deleteDraftSnapshot:async e=>{let n=R(e.key),r=e.runtime;if(r.transportIdentity!==e.key.transportIdentity||!A(r))return me(`stale`,void 0);let a=i(),s=a.drafts[n],l=a.tombstones[n]??0;if(!ge(e.expectedRevision)||!Number.isSafeInteger(l)||l<0)return me(`failed`,void 0);if(!s||s.revision!==e.expectedRevision)return me(`conflict`,void 0);let u=e.expectedRevision+1;if(!ge(u))return me(`failed`,void 0);let d=c.get(n)??0,f=s.revision,p=Math.max(l,u),m=await o.commit({tombstones:{[n]:p},delete:[n],isCurrent:()=>A(r)&&(c.get(n)??0)===d&&i().drafts[n]?.revision===f&&(i().tombstones[n]??0)===l});if(m.status!==`committed`)return me(F(m),m);let h=(c.get(n)??0)===d&&i().drafts[n]?.revision===f&&(i().tombstones[n]??0)===l,g=A(r);return h?(E(n),D(n),t(e=>{let t={...e.drafts};return delete t[n],{drafts:t,tombstones:{...e.tombstones,[n]:Math.max(e.tombstones[n]??0,p)},draftAttachmentViews:I(e.draftAttachmentViews,n),draftMissingAttachmentRefIDs:I(e.draftMissingAttachmentRefIDs,n),draftHydration:I(e.draftHydration,n),draftPersistence:I(e.draftPersistence,n),draftAttachmentPersistence:I(e.draftAttachmentPersistence,n)}}),me(g?`committed`:`stale`,m,void 0,g,!0)):(g||t(e=>({draftAttachmentViews:I(e.draftAttachmentViews,n),draftMissingAttachmentRefIDs:I(e.draftMissingAttachmentRefIDs,n),draftHydration:I(e.draftHydration,n),draftPersistence:I(e.draftPersistence,n),draftAttachmentPersistence:I(e.draftAttachmentPersistence,n)})),me(`stale`,m,void 0,!1,!0))},finalizeDraftOwnership:async e=>{let n=R(e.source),r=R(e.destination),a=e.runtime,s=i(),l=s.drafts[n],u=s.drafts[r];if(n===r||e.destination.owner.kind!==`session`||e.source.transportIdentity!==a.transportIdentity||e.destination.transportIdentity!==a.transportIdentity||!A(a))return he(`stale`,void 0,l,u);if(!ge(e.expectedSourceRevision))return he(`failed`,void 0,l,u);if(!l||l.revision!==e.expectedSourceRevision||u)return he(`conflict`,void 0,l,u);let d=c.get(n)??0,f=c.get(r)??0,p=s.tombstones[n]??0,m=s.tombstones[r]??0;if(!Number.isSafeInteger(p)||p<0||!Number.isSafeInteger(m)||m<0)return he(`failed`,void 0,l,u);let h=Math.max(l.revision+1,m+1);if(!ge(h))return he(`failed`,void 0,l,u);let g=O(e.disposition===`preserve`?{...l,key:e.destination,revision:h}:{...Tr(e.destination),revision:h});if(!g)return he(`failed`,void 0,l,u);let _=await o.commit({drafts:{[r]:g},tombstones:{[n]:Math.max(p,h)},delete:[n],isCurrent:()=>A(a)&&(c.get(n)??0)===d&&(c.get(r)??0)===f&&i().drafts[n]?.revision===l.revision&&!i().drafts[r]&&(i().tombstones[n]??0)===p&&(i().tombstones[r]??0)===m,resolveBlobValue:e=>s.draftAttachmentViews[n]?.[e.attachmentOccurrenceRefID]?.file});if(_.status!==`committed`)return he(F(_),_,l,u);let v=(c.get(n)??0)===d&&i().drafts[n]?.revision===l.revision&&(i().tombstones[n]??0)===p,y=(c.get(r)??0)===f&&!i().drafts[r]&&(i().tombstones[r]??0)===m,b=A(a),x=pe(g);if(!x)return he(`failed`,_,l,u);if(b&&!v&&!y)return he(`stale`,_,l,g,!1,!0);v&&(E(n),D(n)),y&&(E(r),D(r)),t(t=>{let i=t.drafts,a=t.tombstones;(v||y)&&(i={...i}),(v||y)&&(a={...a}),v&&(delete i[n],a[n]=Math.max(a[n]??0,h)),y&&(i[r]=x,delete a[r]);let o=t.draftHydration,s=t.draftPersistence,c=t.draftAttachmentViews,l=t.draftMissingAttachmentRefIDs,u=t.draftAttachmentPersistence;return b?(v&&(o=I(o,n),s=I(s,n),c=I(c,n),l=I(l,n),u=I(u,n)),y&&(o=I(o,r),s={...I(s,r),[r]:{status:`saved`,revision:x.revision}},c=I(c,r),l=I(l,r),u={...I(u,r),[r]:_.cleanupErrors.length?{status:`error`,revision:x.revision,errorCode:re(_)}:{status:`saved`,revision:x.revision}},b&&v&&e.disposition===`preserve`&&(c={...c,[r]:t.draftAttachmentViews[n]??{}},l={...l,[r]:t.draftMissingAttachmentRefIDs[n]??[]}))):(o=I(o,n,r),s=I(s,n,r),c=I(c,n,r),l=I(l,n,r),u=I(u,n,r)),{drafts:i,tombstones:a,draftHydration:o,draftPersistence:s,draftAttachmentViews:c,draftMissingAttachmentRefIDs:l,draftAttachmentPersistence:u}});let S=v&&y&&b;return he(S?`committed`:`stale`,_,l,g,S,!0)},flushDraftPersistence:async()=>{for(await se();p.size;)await Promise.all([...p]);await o.flush()},ensureDraft:e=>{let n=R(e),r=i().drafts[n];if(r)return r;let a=O({...Tr(e),revision:(i().tombstones[n]??0)+1});if(!a)throw Error(`Invalid empty draft`);return E(n),t(e=>({drafts:{...e.drafts,[n]:a}})),le([n]),a},getDraft:e=>i().drafts[R(e)],setDraftText:(e,t)=>{let n=i().getDraft(e)??i().ensureDraft(e);return N(e,e=>({...e,revision:e.revision+1,text:t,mentions:e.mentions.filter(e=>e.range.end<=t.length&&t.slice(e.range.start,e.range.end)===`@${e.value}`),composerReferences:[]}),n.revision,`deferred`)??n},setDraftComposerDocument:(e,t)=>{let n=i().getDraft(e)??i().ensureDraft(e);return i().setDraftComposerState(e,{document:t,mentions:n.mentions})},setDraftComposerState:(e,t)=>{let n=i().getDraft(e)??i().ensureDraft(e);return N(e,e=>({...e,revision:e.revision+1,text:t.document.text,composerReferences:t.document.references,mentions:t.mentions}),n.revision,`deferred`)},replaceDraft:(e,t,n)=>N(e,e=>({version:1,key:e.key,revision:e.revision+1,text:n.text,attachments:n.attachments,syntheticParts:n.syntheticParts,mentions:n.mentions,...n.composerReferences===void 0?{}:{composerReferences:n.composerReferences}}),t),setDraftMentions:(e,t)=>N(e,e=>({...e,revision:e.revision+1,mentions:t})),addDraftMention:(e,t)=>N(e,e=>({...e,revision:e.revision+1,mentions:[...e.mentions,t]})),removeDraftMention:(e,t)=>N(e,e=>({...e,revision:e.revision+1,mentions:e.mentions.filter(e=>e.value!==t)})),setDraftSyntheticParts:(e,t)=>N(e,e=>({...e,revision:e.revision+1,syntheticParts:t})),consumeDraftSyntheticParts:(e,t)=>{let n=i().getDraft(e);if(!n)return null;let r=n.syntheticParts.filter(e=>!t?.(e)),a=n.syntheticParts.filter(e=>t?.(e));return N(e,e=>({...e,revision:e.revision+1,syntheticParts:a}),n.revision)?r:null},setDraftAttachments:(e,t)=>N(e,e=>({...e,revision:e.revision+1,attachments:t})),addDraftLocalAttachment:async(e,n,r={})=>{let a=i().getDraft(e);if(r.partID&&!a?.syntheticParts.some(e=>e.partID===r.partID))return;let o=R(e),s=c.get(o)??0,l=i().tombstones[o]??0,u=k(),d=n instanceof File?n:new File([n],r.filename??`attachment`,{type:n.type}),f;try{f=await Sr(d)}catch{let e=i().drafts[o];if(A(u)&&(i().tombstones[o]??0)===l&&(e?R(e.key)===o:(c.get(o)??0)===s)&&(!r.partID||e?.syntheticParts.some(e=>e.partID===r.partID))){let n=e?.revision??i().tombstones[o]??0;t(e=>({draftAttachmentPersistence:{...e.draftAttachmentPersistence,[o]:{status:`error`,revision:n,errorCode:`transaction-failed`}}}))}return}if(!A(u)||(i().tombstones[o]??0)!==l)return;let p=i().drafts[o];if(!p&&(c.get(o)??0)!==s)return;let m=p??i().ensureDraft(e);if(R(m.key)!==o||r.partID&&!m.syntheticParts.some(e=>e.partID===r.partID))return;let h=r.attachmentID??M(),g=r.partID?Ee(r.partID,h):ue(h),_=M(),v={attachmentID:h,attachmentRefID:g,filename:r.filename??(n instanceof File?n.name:`attachment`),mimeType:n.type,size:n.size,locator:{kind:`blob`,blobID:_},source:r.source??`local`,...r.vscodePath?{vscodePath:r.vscodePath}:{},...r.vscodeSource?{vscodeSource:r.vscodeSource}:{}},y=r.partID?{...m,revision:m.revision+1,syntheticParts:m.syntheticParts.map(e=>e.partID===r.partID?{...e,attachments:[...e.attachments,v]}:e)}:{...m,revision:m.revision+1,attachments:[...m.attachments,v]},b=O(y);if(!b)return;E(o);let x={id:h,file:d,dataUrl:f,mimeType:v.mimeType,filename:v.filename,size:v.size,source:v.source,...r.vscodePath?{vscodePath:r.vscodePath}:{},...r.vscodeSource?{vscodeSource:r.vscodeSource}:{}};return t(e=>({drafts:{...e.drafts,[o]:b},draftAttachmentViews:{...e.draftAttachmentViews,[o]:{...e.draftAttachmentViews[o],[g]:x}}})),await ae([o]),v},addDraftDurableAttachment:(e,n)=>{let r=i().getDraft(e)??i().ensureDraft(e);if(n.partID&&!r.syntheticParts.some(e=>e.partID===n.partID))return;let a=n.attachmentID??M(),o=n.partID?Ee(n.partID,a):ue(a),s={attachmentID:a,attachmentRefID:o,filename:n.filename,mimeType:n.mimeType,size:n.size,source:n.source,locator:{kind:`url`,url:n.url},...n.serverPath?{serverPath:n.serverPath}:{},...n.vscodePath?{vscodePath:n.vscodePath}:{},...n.vscodeSource?{vscodeSource:n.vscodeSource}:{}},c=n.partID?{...r,revision:r.revision+1,syntheticParts:r.syntheticParts.map(e=>e.partID===n.partID?{...e,attachments:[...e.attachments,s]}:e)}:{...r,revision:r.revision+1,attachments:[...r.attachments,s]},l=O(c);if(!l)return;let u=R(e);E(u);let d={id:a,file:new File([],s.filename,{type:s.mimeType}),dataUrl:n.url,mimeType:s.mimeType,filename:s.filename,size:s.size,source:s.source,...s.serverPath?{serverPath:s.serverPath}:{},...s.vscodePath?{vscodePath:s.vscodePath}:{},...s.vscodeSource?{vscodeSource:s.vscodeSource}:{}};return t(e=>({drafts:{...e.drafts,[u]:l},draftAttachmentViews:{...e.draftAttachmentViews,[u]:{...e.draftAttachmentViews[u],[o]:d}}})),ae([u]),s},getDraftAttachmentViews:e=>{let t=R(e),n=i().drafts[t],r=i().draftAttachmentViews[t]??{};return n?j(n).flatMap(e=>r[e.attachmentRefID]?[r[e.attachmentRefID]]:[]):[]},retryDraftAttachmentPersistence:async e=>{let n=R(e);if(!i().persistenceEnabled||!i().drafts[n]&&!i().tombstones[n])return;let r=await o.retryCleanup();r.cleanupErrors.length&&t(e=>({draftAttachmentPersistence:{...e.draftAttachmentPersistence,[n]:{status:`error`,revision:e.drafts[n]?.revision??e.tombstones[n],errorCode:re(r)}}})),await ae([n])},hydrateDraftAttachments:async e=>{let n=R(e),r=d.get(n);if(r)return r;let o=i().drafts[n];if(!o)return;let s=(u.get(n)??0)+1;u.set(n,s);let c=k(),l=_,f=(async()=>{t(e=>({draftHydration:{...e.draftHydration,[n]:`loading`}}));let e=()=>{if(u.get(n)!==s)return;let e=i(),r=e.draftAttachmentViews[n],a=e.draftMissingAttachmentRefIDs[n]??[];t(e=>({draftHydration:{...e.draftHydration,[n]:a.length?`degraded`:Object.keys(r??{}).length?`ready`:`idle`}}))},r={},d=[];for(let f of j(o)){let p=f.locator.kind===`url`?{ok:!0,value:f.locator.url}:await a.read(f.locator.blobID);if(!p.ok){if(p.error.code===`missing-blob`)d.push(f.attachmentRefID);else{u.get(n)===s&&_===l&&A(c)&&i().drafts[n]===o?t(e=>({draftHydration:{...e.draftHydration,[n]:`error`}})):e();return}continue}try{r[f.attachmentRefID]=await ne(f,p.value)}catch{u.get(n)===s&&_===l&&A(c)&&i().drafts[n]===o?t(e=>({draftHydration:{...e.draftHydration,[n]:`error`}})):e();return}}let f=i(),p=f.drafts[n],m=u.get(n);if(m===s&&_===l&&A(c)&&p===o)t(e=>({draftAttachmentViews:{...e.draftAttachmentViews,[n]:r},draftMissingAttachmentRefIDs:{...e.draftMissingAttachmentRefIDs,[n]:d},draftHydration:{...e.draftHydration,[n]:d.length?`degraded`:`ready`}}));else if(m===s){let e=f.draftAttachmentViews[n],r=f.draftMissingAttachmentRefIDs[n]??[];t(t=>({draftHydration:{...t.draftHydration,[n]:r.length?`degraded`:Object.keys(e??{}).length?`ready`:`idle`}}))}})();d.set(n,f);try{await f}finally{d.get(n)===f&&d.delete(n)}},removeDraftAttachment:async(e,n)=>{let r=R(e),a=i().drafts[r],o=a&&j(a).find(e=>e.attachmentRefID===n);if(!a||!o)return!1;let s=ze(o)?Fe(a.text,[o.filename],a.mentions,a.composerReferences):void 0,c=O({...a,revision:a.revision+1,...s?.changed?{text:s.text,mentions:s.mentions,...s.composerReferences===void 0?{}:{composerReferences:s.composerReferences}}:{},attachments:a.attachments.filter(e=>e.attachmentRefID!==n),syntheticParts:a.syntheticParts.map(e=>({...e,attachments:e.attachments.filter(e=>e.attachmentRefID!==n)}))});return c?(E(r),t(e=>{let t={...e.draftAttachmentViews[r]};return delete t[n],{drafts:{...e.drafts,[r]:c},draftAttachmentViews:{...e.draftAttachmentViews,[r]:t},draftMissingAttachmentRefIDs:{...e.draftMissingAttachmentRefIDs,[r]:(e.draftMissingAttachmentRefIDs[r]??[]).filter(e=>e!==n)}}}),(await ae([r])).status===`committed`):!1},replaceDraftAttachment:async(e,n,r,a)=>{let o=R(e),s=i().drafts[o],c=s&&j(s).find(e=>e.attachmentRefID===n);if(!s||!c)return;let l=k(),u=i().tombstones[o]??0,d=r instanceof File?r:new File([r],a?.filename??`attachment`,{type:r.type}),f;try{f=await Sr(d)}catch{let e=i().drafts[o],r=e&&j(e).find(e=>e.attachmentRefID===n);A(l)&&(i().tombstones[o]??0)===u&&e&&r?.attachmentID===c.attachmentID&&r.attachmentRefID===c.attachmentRefID&&R(e.key)===o&&t(t=>({draftAttachmentPersistence:{...t.draftAttachmentPersistence,[o]:{status:`error`,revision:e.revision,errorCode:`transaction-failed`}}}));return}let p=i().drafts[o],m=p&&j(p).find(e=>e.attachmentRefID===n);if(!A(l)||(i().tombstones[o]??0)!==u||!p||m?.attachmentID!==c.attachmentID||m.attachmentRefID!==c.attachmentRefID||R(p.key)!==o)return;let h=p.syntheticParts.find(e=>e.attachments.some(e=>e.attachmentRefID===n)),g=M(),_={attachmentID:g,attachmentRefID:h?Ee(h.partID,g):ue(g),filename:a?.filename??d.name,mimeType:d.type,size:d.size,locator:{kind:`blob`,blobID:M()},source:a?.source??`local`,...a?.vscodePath?{vscodePath:a.vscodePath}:{},...a?.vscodeSource?{vscodeSource:a.vscodeSource}:{}},v=O({...p,revision:p.revision+1,attachments:h?p.attachments:p.attachments.map(e=>e.attachmentRefID===n?_:e),syntheticParts:p.syntheticParts.map(e=>e.partID===h?.partID?{...e,attachments:e.attachments.map(e=>e.attachmentRefID===n?_:e)}:e)});if(!v)return;E(o);let y={id:g,file:d,dataUrl:f,mimeType:_.mimeType,filename:_.filename,size:_.size,source:_.source,..._.vscodePath?{vscodePath:_.vscodePath}:{},..._.vscodeSource?{vscodeSource:_.vscodeSource}:{}};return t(e=>{let t={...e.draftAttachmentViews[o]};return delete t[n],{drafts:{...e.drafts,[o]:v},draftAttachmentViews:{...e.draftAttachmentViews,[o]:{...t,[_.attachmentRefID]:y}},draftMissingAttachmentRefIDs:{...e.draftMissingAttachmentRefIDs,[o]:(e.draftMissingAttachmentRefIDs[o]??[]).filter(e=>e!==n)}}}),(await ae([o])).status===`committed`?_:void 0},replaceDraftRootAttachments:async(e,t)=>{let n=R(e),r=k();if(r.transportIdentity!==e.transportIdentity||!A(r))return me(`stale`,void 0);let a=i().drafts[n],o=a?a.revision:`absent`,s=[],c=new Map;for(let e of t){let t=e.id,n=ue(t);if(e.source===`server`&&e.dataUrl&&ie(e.dataUrl))s.push({attachmentID:t,attachmentRefID:n,filename:e.filename,mimeType:e.mimeType,size:e.size,source:`server`,locator:{kind:`url`,url:e.dataUrl},...e.serverPath?{serverPath:e.serverPath}:{}}),c.set(n,e.dataUrl);else if(e.source===`vscode`&&e.vscodeSource===`file`&&e.dataUrl&&ie(e.dataUrl))s.push({attachmentID:t,attachmentRefID:n,filename:e.filename,mimeType:e.mimeType,size:e.size,source:`vscode`,locator:{kind:`url`,url:e.dataUrl},...e.vscodePath?{vscodePath:e.vscodePath}:{},vscodeSource:`file`}),c.set(n,e.dataUrl);else{let r=e.file instanceof File?e.file:new File([e.file],e.filename,{type:e.mimeType}),i=M();s.push({attachmentID:t,attachmentRefID:n,filename:e.filename,mimeType:e.mimeType,size:e.size,source:e.source===`vscode`?`vscode`:`local`,locator:{kind:`blob`,blobID:i},...e.vscodePath?{vscodePath:e.vscodePath}:{},...e.vscodeSource===`selection`?{vscodeSource:`selection`}:{}}),c.set(n,r)}}let l=a?.syntheticParts??[];for(let e of l)for(let t of e.attachments)t.locator.kind===`url`&&!c.has(t.attachmentRefID)&&c.set(t.attachmentRefID,t.locator.url);let u={text:a?.text??``,attachments:s,syntheticParts:l,mentions:a?.mentions??[],...a?.composerReferences===void 0?{}:{composerReferences:a.composerReferences}};return i().commitDraftSnapshot({key:e,expectedRevision:o,snapshot:u,values:c,runtime:r})},restoreDraftRootAttachments:async(e,t)=>{let n=R(e),r=k();if(r.transportIdentity!==e.transportIdentity||!A(r))return me(`stale`,void 0);let a=i().drafts[n],o=a?a.revision:`absent`,s=new Set(t.map(e=>e.id)),c=[],l=new Map;for(let e of t){let t=e.id,n=ue(t);if(e.source===`server`&&e.dataUrl&&ie(e.dataUrl))c.push({attachmentID:t,attachmentRefID:n,filename:e.filename,mimeType:e.mimeType,size:e.size,source:`server`,locator:{kind:`url`,url:e.dataUrl},...e.serverPath?{serverPath:e.serverPath}:{}}),l.set(n,e.dataUrl);else if(e.source===`vscode`&&e.vscodeSource===`file`&&e.dataUrl&&ie(e.dataUrl))c.push({attachmentID:t,attachmentRefID:n,filename:e.filename,mimeType:e.mimeType,size:e.size,source:`vscode`,locator:{kind:`url`,url:e.dataUrl},...e.vscodePath?{vscodePath:e.vscodePath}:{},vscodeSource:`file`}),l.set(n,e.dataUrl);else{let r=e.file instanceof File?e.file:new File([e.file],e.filename,{type:e.mimeType}),i=M();c.push({attachmentID:t,attachmentRefID:n,filename:e.filename,mimeType:e.mimeType,size:e.size,source:e.source===`vscode`?`vscode`:`local`,locator:{kind:`blob`,blobID:i},...e.vscodePath?{vscodePath:e.vscodePath}:{},...e.vscodeSource===`selection`?{vscodeSource:`selection`}:{}}),l.set(n,r)}}let u=i().draftAttachmentViews[n]??{};for(let e of a?.attachments??[])if(!s.has(e.attachmentID))if(c.push(JSON.parse(JSON.stringify(e))),e.locator.kind===`url`)l.set(e.attachmentRefID,e.locator.url);else{let t=u[e.attachmentRefID];t?.file instanceof Blob?l.set(e.attachmentRefID,t.file):typeof t?.dataUrl==`string`&&ie(t.dataUrl)&&l.set(e.attachmentRefID,t.dataUrl)}let d=a?.syntheticParts??[];for(let e of d)for(let t of e.attachments)t.locator.kind===`url`&&!l.has(t.attachmentRefID)&&l.set(t.attachmentRefID,t.locator.url);let f={text:a?.text??``,attachments:c,syntheticParts:d,mentions:a?.mentions??[],...a?.composerReferences===void 0?{}:{composerReferences:a.composerReferences}};return i().commitDraftSnapshot({key:e,expectedRevision:o,snapshot:f,values:l,runtime:r})},deleteDraft:(e,n)=>{let r=R(e),a=i().drafts[r];if(!a||n!==void 0&&a.revision!==n)return!1;let o=a.revision+1;return ge(o)?(E(r),D(r),t(e=>{let t={...e.drafts};delete t[r];let n={...e.draftHydration},i={...e.draftPersistence},a={...e.draftAttachmentViews},s={...e.draftMissingAttachmentRefIDs},c={...e.draftAttachmentPersistence};return delete n[r],delete i[r],delete a[r],delete s[r],delete c[r],{drafts:t,tombstones:{...e.tombstones,[r]:Math.max(e.tombstones[r]??0,o)},draftHydration:n,draftPersistence:i,draftAttachmentViews:a,draftMissingAttachmentRefIDs:s,draftAttachmentPersistence:c}}),ae([r]),!0):!1},moveDraft:(e,n,r)=>{let a=R(e),o=R(n),s=i().drafts[a];if(!s||a===o||r!==void 0&&s.revision!==r||i().drafts[o]||(i().tombstones[o]??0)>=s.revision+1||[...s.attachments,...s.syntheticParts.flatMap(e=>e.attachments)].some(e=>e.locator.kind===`blob`))return;let c=O({...s,key:n,revision:s.revision+1});if(c)return E(a),E(o),D(a,o),t(e=>{let t={...e.drafts};delete t[a];let n={...e.tombstones,[a]:Math.max(e.tombstones[a]??0,c.revision)};(n[o]??0)<c.revision&&delete n[o];let r=e=>{let t={...e},n=t[a];return delete t[a],delete t[o],n===void 0?t:{...t,[o]:n}};return{drafts:{...t,[o]:c},tombstones:n,draftHydration:r(e.draftHydration),draftPersistence:r(e.draftPersistence),draftAttachmentViews:r(e.draftAttachmentViews),draftMissingAttachmentRefIDs:r(e.draftMissingAttachmentRefIDs),draftAttachmentPersistence:r(e.draftAttachmentPersistence)}}),ae([a,o]),c},moveDraftWithAttachments:async(e,n,r)=>{let a=R(e),o=R(n),s=i().drafts[a];if(!s||a===o||r!==void 0&&s.revision!==r||i().drafts[o]||(i().tombstones[o]??0)>=s.revision+1)return;let c=O({...s,key:n,revision:s.revision+1});if(c)return E(a),E(o),D(a,o),t(e=>{let t={...e.drafts};delete t[a];let n={...e.tombstones,[a]:Math.max(e.tombstones[a]??0,c.revision)};(n[o]??0)<c.revision&&delete n[o];let r=e=>{let t={...e},n=t[a];return delete t[a],delete t[o],n===void 0?t:{...t,[o]:n}};return{drafts:{...t,[o]:c},tombstones:n,draftHydration:r(e.draftHydration),draftPersistence:r(e.draftPersistence),draftAttachmentViews:r(e.draftAttachmentViews),draftMissingAttachmentRefIDs:r(e.draftMissingAttachmentRefIDs),draftAttachmentPersistence:r(e.draftAttachmentPersistence)}}),(await ae([a,o])).status===`committed`?c:void 0},setDraftPersistenceEnabled:async e=>{if(_+=1,!e){h&&clearTimeout(h),h=void 0,m.clear(),g=void 0,t({persistenceEnabled:!1,draftPersistence:{}}),await o.setEnabled(!1),await o.flush();return}t({persistenceEnabled:!0}),await o.setEnabled(!0);let n=k();b||await i().hydrateDraftMetadata(n.transportIdentity);let r=new Set([...Object.keys(i().drafts),...Object.keys(i().tombstones),...S]);S.clear(),await ae(r),await o.flush()},hydrateDraftMetadata:e=>{let r=f.get(e);if(r)return r;let a=(async()=>{let r=(l.get(e)??0)+1;l.set(e,r);let a=k();if(a.transportIdentity!==e)return!1;let s=_,u=new Map(c),d=v,f=Object.entries(i().drafts).filter(([,t])=>t.key.transportIdentity===e).map(([e])=>e);t(e=>({draftHydration:{...e.draftHydration,...Object.fromEntries(f.map(e=>[e,`loading`]))}}));let p=i().persistenceEnabled,m;try{m=await n.migrate(e,{persistenceEnabled:p})}catch{return!1}if(l.get(e)!==r||_!==s||!A(a))return!1;if(!m.ok)return t(e=>({draftHydration:{...e.draftHydration,...Object.fromEntries(f.map(t=>[t,e.drafts[t]?`degraded`:`error`]))}})),!1;let h=m.value;if(!b){x??=o.seed(h).finally(()=>{x=void 0});let n;try{n=await x}catch{return!1}if(l.get(e)!==r||_!==s||!A(a))return!1;if(n.status!==`committed`&&n.status!==`disabled`)return t(e=>({draftHydration:{...e.draftHydration,...Object.fromEntries(f.map(e=>[e,`degraded`]))}})),!1;n.status===`committed`&&(b=!0)}let g=i(),C={...g.drafts},w={...g.tombstones},T=new Set;for(let[e,t]of Object.entries(h.tombstones))(c.get(e)??0)===(u.get(e)??0)&&(t>=(w[e]??0)&&(w[e]=t,(C[e]?.revision??0)<=t&&delete C[e]),T.add(e));for(let[t,n]of Object.entries(h.drafts)){if(n.key.transportIdentity!==e||(c.get(t)??0)!==(u.get(t)??0))continue;let r=C[t],i=O(n);i&&(!r||r.revision<i.revision)&&(w[t]??0)<i.revision&&(C[t]=i),T.add(t)}let E=v===d?{...h.legacy.entries}:{...g.legacyDraftEntries};if(h.migration.claimedTransportIdentity===e&&v===d)for(let[t,n]of Object.entries(E)){let r={transportIdentity:e,owner:{kind:`session`,ownerID:t}},i=R(r),a=_r(n.text),o=O({...Tr(r),text:a.text,composerReferences:a.references,mentions:Er(a.text,n.mentions)});o&&!C[i]&&!w[i]&&(c.get(i)??0)===(u.get(i)??0)&&(C[i]=o),delete E[t],T.add(i)}t(e=>({drafts:C,tombstones:w,legacyNewDraft:v===d&&!y?h.legacy.new:e.legacyNewDraft,legacyDraftEntries:E,migration:v===d?h.migration:e.migration,draftHydration:{...e.draftHydration,...Object.fromEntries([...T].map(e=>[e,`ready`]))}}));let D=[...S];for(let e of D)T.add(e);S.clear();try{await ae(T),await o.flush()}catch{return!1}return l.get(e)===r&&_===s&&A(a)})();return f.set(e,a),a.finally(()=>{f.get(e)===a&&f.delete(e)}).catch(()=>void 0),a},claimLegacyNewDraft:async e=>{let n=i().legacyNewDraft;if(!n)return i().getDraft(e);let r=R(e),a=i().drafts[r];if(v+=1,y=!0,a||i().tombstones[r])return t({legacyNewDraft:void 0}),ae([r]),a;let o=_r(n.text),s=O({...Tr(e),text:o.text,composerReferences:o.references,mentions:Er(o.text,n.mentions)});if(s)return E(r),t(e=>({drafts:{...e.drafts,[r]:s},legacyNewDraft:void 0})),ae([r]),s},pendingInputText:null,pendingInputMode:`replace`,pendingSyntheticParts:null,pendingPresetSubmit:null,attachedFiles:[],attachmentBuckets:{"legacy-unowned":[]},activeAttachmentDraft:null,activeEditorFile:null,setPendingInputText:(e,n=`replace`)=>t({pendingInputText:e,pendingInputMode:n}),consumePendingInputText:()=>{let{pendingInputText:e,pendingInputMode:n}=i();return e===null?null:(t({pendingInputText:null,pendingInputMode:`replace`}),{text:e,mode:n})},requestPresetSubmit:e=>t({pendingPresetSubmit:e}),consumePendingPresetSubmit:()=>{let{pendingPresetSubmit:e}=i();return e===null?null:(t({pendingPresetSubmit:null}),e)},setPendingSyntheticParts:e=>t({pendingSyntheticParts:e}),consumePendingSyntheticParts:()=>{let{pendingSyntheticParts:e}=i();return e!==null&&t({pendingSyntheticParts:null}),e},setActiveAttachmentDraft:e=>{let n=ve(e);t(t=>({activeAttachmentDraft:e,attachedFiles:t.attachmentBuckets[n]??[],attachmentBuckets:t.attachmentBuckets[n]?t.attachmentBuckets:{...t.attachmentBuckets,[n]:[]}}))},addAttachedFile:async e=>{let t=i().activeAttachmentDraft;if(t){let n=ve(t),r=ye(n),a=await i().addDraftLocalAttachment(t,e);r!==ye(n)&&a&&i().removeDraftAttachment(t,a.attachmentRefID);return}let n=`${Date.now()}-${Math.random().toString(36).slice(2)}`,r=ve(null),a=ye(r),o;try{o=await Sr(e)}catch{return}if(a!==ye(r))return;let s={id:n,file:e,dataUrl:o,mimeType:e.type,filename:e.name,size:e.size,source:`local`};xe(r,e=>[...e,s])},removeAttachedFile:e=>{let t=i().activeAttachmentDraft;if(t){let n=i().getDraft(t),r=n?[...n.attachments,...n.syntheticParts.flatMap(e=>e.attachments)].find(t=>t.attachmentID===e):void 0;r&&i().removeDraftAttachment(t,r.attachmentRefID);return}xe(ve(null),t=>t.filter(t=>t.id!==e))},setAttachedFiles:e=>{xe(ve(i().activeAttachmentDraft),()=>e,!0)},clearAttachedFiles:()=>{let e=i().activeAttachmentDraft;if(e){be(ve(e)),i().getDraft(e)||i().ensureDraft(e),i().setDraftAttachments(e,[]);return}xe(ve(null),()=>[],!0)},addDraftVSCodeFileAttachment:(e,t,n,r)=>{if(i().getDraftAttachmentViews(e).some(e=>e.source===`vscode`&&e.vscodeSource===`file`&&(e.vscodePath||``)===t)||(i().getDraft(e)?.attachments.some(e=>e.source===`vscode`&&e.vscodeSource===`file`&&(e.vscodePath||``)===t)??!1))return;let a=br(t);i().addDraftDurableAttachment(e,{filename:n,mimeType:`text/plain`,size:r||0,source:`vscode`,vscodePath:t,vscodeSource:`file`,url:a})},addDraftVSCodeSelectionAttachment:async(e,t,n)=>{let r=R(e),a=ye(r),o=`${r}\u0000${xr(t,n.name)}`;if(!(i().getDraftAttachmentViews(e).some(e=>e.source===`vscode`&&e.vscodeSource===`selection`&&e.filename===n.name&&e.vscodePath===t)||(i().getDraft(e)?.attachments.some(e=>e.source===`vscode`&&e.vscodeSource===`selection`&&e.filename===n.name&&e.vscodePath===t)??!1)||T.has(o))){T.add(o);try{let o=await i().addDraftLocalAttachment(e,n,{source:`vscode`,vscodePath:t,vscodeSource:`selection`});a!==ye(r)&&o&&i().removeDraftAttachment(e,o.attachmentRefID)}finally{T.delete(o)}}},addVSCodeFileAttachment:(e,t,n)=>{let r=i().activeAttachmentDraft;if(r){i().addDraftVSCodeFileAttachment(r,e,t,n);return}let a=`${Date.now()}-${Math.random().toString(36).slice(2)}`,o=ve(null);if((i().attachmentBuckets[o]??[]).some(t=>t.source===`vscode`&&t.vscodeSource===`file`&&(t.vscodePath||``)===e))return;let s=br(e),c={id:a,file:new File([],t,{type:`text/plain`}),dataUrl:s,mimeType:`text/plain`,filename:t,size:n||0,source:`vscode`,vscodePath:e,vscodeSource:`file`};xe(o,e=>[...e,c])},addVSCodeSelectionAttachment:async(e,t)=>{let n=i().activeAttachmentDraft;if(n){await i().addDraftVSCodeSelectionAttachment(n,e,t);return}let r=`${Date.now()}-${Math.random().toString(36).slice(2)}`,a=ve(null),o=ye(a),s=`${a}\u0000${xr(e,t.name)}`;if((i().attachmentBuckets[a]??[]).some(n=>n.source===`vscode`&&n.vscodeSource===`selection`&&n.filename===t.name&&n.vscodePath===e)||T.has(s))return;T.add(s);let c;try{c=await Sr(t)}catch{return}finally{T.delete(s)}if(o!==ye(a))return;let l={id:r,file:t,dataUrl:c,mimeType:t.type,filename:t.name,size:t.size,source:`vscode`,vscodePath:e,vscodeSource:`selection`};xe(a,e=>[...e,l])},addCodeSelectionAttachment:async(e,t,n)=>{let r=new File([n],t,{type:`text/plain`});await i().addVSCodeSelectionAttachment(e,r)},setActiveEditorFile:e=>{wr(i().activeEditorFile,e)||t({activeEditorFile:e})},addRestoredAttachment:({url:e,mimeType:t,filename:n})=>{let r=i().activeAttachmentDraft;if(r){if(e.startsWith(`data:`)){let a=R(r);(async()=>{try{let o=await(await fetch(e)).blob(),s=new File([o],n,{type:t||o.type||`application/octet-stream`}),c=i().activeAttachmentDraft;if(!c||R(c)!==a)return;await i().addDraftLocalAttachment(r,s)}catch{}})();return}if(!ie(e))return;i().addDraftDurableAttachment(r,{filename:n,mimeType:t,size:Cr(e),source:`local`,serverPath:e,url:e});return}let a={id:`restored-${Date.now()}-${Math.random().toString(36).slice(2)}`,file:new File([],n,{type:t}),dataUrl:e,mimeType:t,filename:n,size:Cr(e),source:`local`,serverPath:e};xe(ve(null),e=>[...e,a])}}})})(),Or=new Set;function kr(e){return Or.add(e),()=>{Or.delete(e)}}function Ar(e,t){let n=Array.isArray(e)?e:[e],r=Array.from(new Set(n));if(r.length===0)return;r.includes(`all`)&&r.splice(0,r.length,`all`);let i={scopes:r,source:t?.source,timestamp:Date.now()};for(let e of Or)try{let t=e(i);t instanceof Promise&&t.catch(e=>{console.error(`[ConfigSync] Async listener failed:`,e)})}catch(e){console.error(`[ConfigSync] Listener threw:`,e)}}function jr(e,t){return e.scopes.includes(`all`)||e.scopes.includes(t)}var Mr=`Updating OpenCode configuration...`,Nr=0,Pr=Mr,Fr=new Set;function Ir(){let e={isUpdating:Nr>0,message:Pr};Fr.forEach(t=>t(e))}function Lr(e){Nr+=1,Nr===1?(Pr=e||Mr,Ir()):e&&(Pr=e,Ir())}function Rr(){Nr!==0&&(--Nr,Nr===0&&(Pr=Mr,Ir()))}function zr(e){Pr===e&&Nr>0||(Pr=e,Nr>0&&Ir())}function Br(e){return Fr.add(e),e({isUpdating:Nr>0,message:Pr}),()=>{Fr.delete(e)}}function Vr(){return{isUpdating:Nr>0,message:Pr}}var Hr=u(),Ur=`projects`,Wr=`activeProjectId`,Gr=`projects:manualOrder`,Kr=(e,t)=>{let n=e.trim();return!n.startsWith(`~`)||!t?n:n===`~`?t:n.startsWith(`~/`)||n.startsWith(`~\\`)?`${t}${n.slice(1)}`:n},qr=/^#(?:[\da-fA-F]{3}|[\da-fA-F]{6})$/,Jr=e=>{if(typeof e!=`string`)return;let t=e.trim();if(!t)return;let n=t.indexOf(`/`);if(!(n<=0||n>=t.length-1))return t},Yr=e=>{if(typeof e!=`string`)return null;let t=e.trim();return t&&qr.test(t)?t.toLowerCase():null},Xr=e=>{let t=e.trim();if(!t)return``;let n=Kr(t,A(`homeDirectory`,{storage:Hr})||Ue.getState().homeDirectory||``).replace(/\\/g,`/`);return n===`/`?`/`:n.length>1?n.replace(/\/+$/,``):n},Zr=e=>{let t=Xr(e);if(!t||t===`/`)return`Root`;let n=t.split(`/`).filter(Boolean);return n[n.length-1]||t},Qr=e=>{if(!e||typeof e!=`object`)return;let t=e,n=typeof t.mime==`string`?t.mime.trim():``,r=typeof t.updatedAt==`number`&&Number.isFinite(t.updatedAt)?Math.max(0,Math.round(t.updatedAt)):0,i=t.source===`custom`||t.source===`auto`?t.source:null;if(!(!n||!r||!i))return{mime:n,updatedAt:r,source:i}},$r=e=>{let t=typeof e.type==`string`?e.type.trim().toLowerCase():``;if(t===`image/png`||t===`image/jpeg`||t===`image/svg+xml`)return t;let n=e.name.toLowerCase();return n.endsWith(`.png`)?`image/png`:n.endsWith(`.jpg`)||n.endsWith(`.jpeg`)?`image/jpeg`:n.endsWith(`.svg`)?`image/svg+xml`:null},ei=async e=>await new Promise((t,n)=>{let r=new FileReader;r.onerror=()=>{n(Error(`Failed to read icon file`))},r.onload=()=>{let e=typeof r.result==`string`?r.result:``;if(!e){n(Error(`Failed to read icon file`));return}t(e)},r.readAsDataURL(e)}),ti=e=>{if(!Array.isArray(e))return[];let t=[],n=new Set,r=new Set;for(let i of e){if(!i||typeof i!=`object`)continue;let e=i,a=typeof e.path==`string`?e.path.trim():``;if(!a)continue;let o=Xr(a);if(!o)continue;let s=xe(o);if(!s||n.has(s)||r.has(o))continue;n.add(s),r.add(o);let c={id:s,path:o};if(typeof e.label==`string`&&e.label.trim().length>0&&(c.label=e.label.trim()),typeof e.icon==`string`&&e.icon.trim().length>0&&(c.icon=e.icon.trim()),e.iconImage===null)c.iconImage=null;else{let t=Qr(e.iconImage);t&&(c.iconImage=t)}typeof e.color==`string`&&e.color.trim().length>0&&(c.color=e.color.trim());let l=Jr(e.defaultModel);if(l&&(c.defaultModel=l),e.iconBackground===null)c.iconBackground=null;else{let t=Yr(e.iconBackground);t&&(c.iconBackground=t)}typeof e.addedAt==`number`&&Number.isFinite(e.addedAt)&&e.addedAt>=0&&(c.addedAt=e.addedAt),typeof e.lastOpenedAt==`number`&&Number.isFinite(e.lastOpenedAt)&&e.lastOpenedAt>=0&&(c.lastOpenedAt=e.lastOpenedAt),typeof e.sidebarCollapsed==`boolean`&&(c.sidebarCollapsed=e.sidebarCollapsed),t.push(c)}return t},ni=()=>{try{let e=A(Ur,{storage:Hr});return e?ti(JSON.parse(e)):[]}catch{return[]}},ri=()=>{if(!he())return null;let e=m().trim().replace(/\/+$/,``);return e?Hr.getItem(`${Ur}:${encodeURIComponent(e)}:manualOrder`):null},ii=()=>{try{let e=A(Gr,{storage:Hr})||ri();if(!e)return[];let t=JSON.parse(e);return Array.isArray(t)?t.filter(e=>typeof e==`string`):[]}catch{return[]}},ai=()=>{try{let e=A(Wr,{storage:Hr});if(typeof e==`string`&&e.trim().length>0)return e.trim()}catch{return null}return null},oi=(e,t)=>{try{M(Ur,JSON.stringify(e),{storage:Hr})}catch{}try{t?M(Wr,t,{storage:Hr}):ee(Wr,{storage:Hr})}catch{}},si=(e,t,n)=>{oi(e,t),n&&ci(n),ye({projects:e,activeProjectId:t??void 0})},ci=e=>{try{M(Gr,JSON.stringify(e),{storage:Hr})}catch{}},li=ni(),ui=(e,t,n)=>{let r=e.findIndex(e=>e.id===t),i=e.findIndex(e=>e.id===n);if(r<0||i<0||r===i)return e;let a=[...e],[o]=a.splice(r,1);return a.splice(i,0,o),a},di=e=>{let t=[],n=new Set;for(let r of e){let e=Xr(r.path);!e||n.has(e)||(n.add(e),t.push({name:r.name?.trim(),path:e}))}return t},fi=(e,t,n,r)=>{let i=Xr(e.path);if(!i)return null;let a=xe(i),o=r===i;return{...t,id:a,path:i,label:Zr(i),addedAt:t?.addedAt??n,lastOpenedAt:o?n:t?.lastOpenedAt??n}},pi=()=>{if(typeof window>`u`||!Te()?.runtime?.isVSCode)return null;let e=window.__VSCODE_CONFIG__,t=Array.isArray(e?.workspaceFolders)?e.workspaceFolders.map(e=>{let t=e,n=typeof t.path==`string`?t.path.trim():``;return n?{name:typeof t.name==`string`?t.name.trim():``,path:n}:null}).filter(e=>e!==null):[];if(t.length>0)return di(t);let n=e?.workspaceFolder;return typeof n!=`string`||n.trim().length===0?null:di([{path:n}])},mi=(e,t,n)=>{let r=di(e),i=n?Xr(n):null,a=r.length===0&&i?[{path:i}]:i&&!r.some(e=>e.path===i)?[...r,{path:i}]:r;if(a.length===0)return null;let o=Date.now(),s=a.map(e=>fi(e,t.find(t=>t.path===e.path)??null,o,i)).filter(e=>e!==null);if(s.length===0)return null;let c=i?s.find(e=>e.path===i)??null:s[0]??null,l=c?.id??s[0]?.id??null;return He(),{projects:s,activeProjectId:l,activeProject:c??s[0]??null}},hi=(e,t)=>e===t?!0:!e||!t?e===t:e.mime===t.mime&&e.updatedAt===t.updatedAt&&e.source===t.source,gi=(e,t)=>e.length===t.length&&e.every((e,n)=>{let r=t[n];return r?e.id===r.id&&e.path===r.path&&e.label===r.label&&e.icon===r.icon&&e.color===r.color&&e.iconBackground===r.iconBackground&&e.defaultModel===r.defaultModel&&e.addedAt===r.addedAt&&e.lastOpenedAt===r.lastOpenedAt&&e.sidebarCollapsed===r.sidebarCollapsed&&hi(e.iconImage,r.iconImage):!1}),_i=(()=>{let e=pi();if(!e)return null;let t=mi(e,[]);return t?{projects:t.projects,activeProjectId:t.activeProjectId}:null})(),vi=typeof window>`u`?!1:!!Te()?.runtime?.isVSCode,yi=_i?.projects??(vi?[]:li),bi=_i?.activeProjectId??(vi?null:ai()),xi=yi.some(e=>e.id===bi)?bi:yi[0]?.id??null;_i&&oi(yi,xi);var Si=Oe()(je((e,t)=>({projects:yi,activeProjectId:xi,manualProjectOrder:ii(),validateProjectPath:e=>{if(typeof e!=`string`||e.trim().length===0)return{ok:!1,reason:`Provide a directory path.`};let t=Xr(e);return t?{ok:!0,normalizedPath:t}:{ok:!1,reason:`Directory path cannot be empty.`}},addProject:(n,r)=>{if(vi)return null;let{validateProjectPath:i}=t(),a=i(n);if(!a.ok||!a.normalizedPath)return null;let o=a.normalizedPath,s=t().projects.find(e=>e.path===o);if(s)return t().setActiveProject(s.id),s;let c=Date.now(),l=r?.label?.trim()||Zr(o),u={id:xe(o),path:o,label:l,addedAt:c,lastOpenedAt:c};return e({projects:[...t().projects,u]}),He(),t().setActiveProject(u.id),t().discoverProjectIcon(u.id),u},removeProject:n=>{if(vi)return;let r=t(),i=r.projects.find(e=>e.id===n),a=r.projects.filter(e=>e.id!==n),o=r.activeProjectId;r.activeProjectId===n&&(o=a[0]?.id??null);let s=t().manualProjectOrder.filter(e=>e!==n);if(e({projects:a,activeProjectId:o,manualProjectOrder:s}),si(a,o,s),i){let e=i.path.replace(/\\/g,`/`).replace(/\/+$/,``)||`/`;$.setState(t=>{let n=new Map(t.availableWorktreesByProject);return n.delete(e),{availableWorktreesByProject:n}})}if(o){let e=a.find(e=>e.id===o);e&&(B.setDirectory(e.path),Ue.getState().setDirectory(e.path,{showOverlay:!1}))}else Ue.getState().goHome()},setActiveProject:n=>{if(vi)return;let{projects:r,activeProjectId:i}=t();if(i===n)return;let a=r.find(e=>e.id===n);a&&(e({activeProjectId:n}),si(r,n,t().manualProjectOrder),B.setDirectory(a.path),Ue.getState().setDirectory(a.path,{showOverlay:!1}))},setActiveProjectIdOnly:n=>{if(vi)return;let{projects:r,activeProjectId:i}=t();i!==n&&r.find(e=>e.id===n)&&(e({activeProjectId:n}),si(r,n,t().manualProjectOrder))},renameProject:(n,r)=>{if(vi)return;let i=r.trim();if(!i)return;let{projects:a,activeProjectId:o}=t(),s=a.map(e=>e.id===n?{...e,label:i}:e);e({projects:s}),si(s,o,t().manualProjectOrder)},updateProjectMeta:(n,r)=>{if(vi)return;let{projects:i,activeProjectId:a}=t(),o=i.map(e=>{if(e.id!==n)return e;let t={...e};if(r.label!==void 0){let e=r.label.trim();e&&(t.label=e)}if(r.icon!==void 0&&(t.icon=r.icon),r.color!==void 0&&(t.color=r.color),r.iconBackground!==void 0&&(t.iconBackground=Yr(r.iconBackground)),r.defaultModel!==void 0){let e=Jr(r.defaultModel);e?t.defaultModel=e:delete t.defaultModel}return t});e({projects:o}),si(o,a,t().manualProjectOrder)},uploadProjectIcon:async(e,n)=>{if(vi)return{ok:!1,error:`Custom icons are not supported in this runtime`};let r=$r(n);if(!r)return{ok:!1,error:`Only PNG, JPEG, and SVG are supported`};if(!Number.isFinite(n.size)||n.size<=0)return{ok:!1,error:`Icon file is empty`};if(n.size>5242880)return{ok:!1,error:`Icon exceeds size limit (5 MB)`};try{let i=(await ei(n)).replace(/^data:[^;]+;/i,`data:${r};`),a=await F(`/api/projects/${encodeURIComponent(e)}/icon`,{method:`PUT`,headers:{"Content-Type":`application/json`,Accept:`application/json`},body:JSON.stringify({dataUrl:i})});if(!a.ok)return{ok:!1,error:(await a.json().catch(()=>null))?.error||`Failed to upload project icon`};let o=await a.json().catch(()=>null);return o?.settings&&t().synchronizeFromSettings(o.settings),{ok:!0}}catch(e){return{ok:!1,error:(e instanceof Error?e.message:String(e))||`Failed to upload project icon`}}},removeProjectIcon:async e=>{if(vi)return{ok:!1,error:`Custom icons are not supported in this runtime`};try{let n=await F(`/api/projects/${encodeURIComponent(e)}/icon`,{method:`DELETE`,headers:{Accept:`application/json`}});if(!n.ok)return{ok:!1,error:(await n.json().catch(()=>null))?.error||`Failed to remove project icon`};let r=await n.json().catch(()=>null);return r?.settings&&t().synchronizeFromSettings(r.settings),{ok:!0}}catch(e){return{ok:!1,error:(e instanceof Error?e.message:String(e))||`Failed to remove project icon`}}},discoverProjectIcon:async(e,n)=>{if(vi)return{ok:!1,error:`Custom icons are not supported in this runtime`};try{let r=await F(`/api/projects/${encodeURIComponent(e)}/icon/discover`,{method:`POST`,headers:{"Content-Type":`application/json`,Accept:`application/json`},body:JSON.stringify({force:n?.force===!0})}),i=await r.json().catch(()=>null);return r.ok?(i?.settings&&t().synchronizeFromSettings(i.settings),{ok:!0,skipped:i?.skipped===!0,reason:typeof i?.reason==`string`?i.reason:void 0}):{ok:!1,error:i?.error||`Failed to discover project icon`}}catch(e){return{ok:!1,error:(e instanceof Error?e.message:String(e))||`Failed to discover project icon`}}},reorderProjects:(n,r)=>{if(vi)return;let{projects:i,activeProjectId:a}=t();if(n<0||n>=i.length||r<0||r>=i.length||n===r)return;let o=[...i],[s]=o.splice(n,1);o.splice(r,0,s);let c=o.map(e=>e.id);e({projects:o,manualProjectOrder:c}),si(o,a,c)},reorderProjectsById:(n,r)=>{if(vi)return;let{projects:i,activeProjectId:a}=t(),o=ui(i,n,r);if(o===i)return;let s=o.map(e=>e.id);e({projects:o,manualProjectOrder:s}),si(o,a,s)},moveProjectToTop:n=>{if(vi)return;let{projects:r,activeProjectId:i,manualProjectOrder:a}=t(),o=r.findIndex(e=>e.id===n);if(o<0)return;let s=o>0,c=a.length>0&&a[0]!==n;if(!s&&!c)return;let l=r;if(s){l=[...r];let[e]=l.splice(o,1);l.unshift(e)}let u=c?[n,...a.filter(e=>e!==n)]:a;e({projects:l,manualProjectOrder:u}),si(l,i,u)},resetForRuntimeSwitch:()=>{if(vi)return;let t=ni(),n=ai(),r=t.some(e=>e.id===n)?n:t[0]?.id??null,i=new Set(t.map(e=>e.id));e({projects:t,activeProjectId:r,manualProjectOrder:ii().filter(e=>i.has(e))})},synchronizeFromSettings:n=>{if(vi)return;let r=ti(n.projects??[]),i=typeof n.activeProjectId==`string`&&n.activeProjectId.trim()?n.activeProjectId.trim():null,a=t();if(r.length===0&&a.projects.length>0){i!==a.activeProjectId&&(!i||a.projects.some(e=>e.id===i))&&(e({activeProjectId:i}),oi(a.projects,i),ci(t().manualProjectOrder));return}let o=JSON.stringify(a.projects)!==JSON.stringify(r),s=a.activeProjectId!==i;if(!o&&!s)return;let c=new Set(r.map(e=>e.id)),l=o?r.map(e=>e.id):t().manualProjectOrder.filter(e=>c.has(e));if(e({projects:r,activeProjectId:i,manualProjectOrder:l}),oi(r,i),ci(l),i){let e=r.find(e=>e.id===i);e&&(B.setDirectory(e.path),Ue.getState().setDirectory(e.path,{showOverlay:!1}))}},syncVSCodeWorkspaceFolders:(n,r)=>{if(!vi)return null;let i=t(),a=i.activeProjectId?i.projects.find(e=>e.id===i.activeProjectId)??null:null,o=r??a?.path??null,s=mi(n,i.projects,o);if(!s)return n.length===0&&!r&&i.projects.length>0&&(e({projects:[],activeProjectId:null}),oi([],null)),null;let c=!gi(i.projects,s.projects),l=i.activeProjectId!==s.activeProjectId;return(c||l)&&(e({projects:s.projects,activeProjectId:s.activeProjectId}),oi(s.projects,s.activeProjectId)),s.activeProject&&(B.setDirectory(s.activeProject.path),Ue.getState().setDirectory(s.activeProject.path,{showOverlay:!1})),s.activeProject},getActiveProject:()=>{let{projects:e,activeProjectId:n}=t();return n?e.find(e=>e.id===n)??null:null}}),{name:`projects-store`}));typeof window<`u`&&window.addEventListener(`openchamber:settings-synced`,e=>{let t=e.detail;t&&typeof t==`object`&&Si.getState().synchronizeFromSettings(t)});var V=Ze(),Ci=e=>e?.trim()||null,wi=()=>{let e=Si.getState().getActiveProject?.();return Ci(e?.path)??Ci(B.getDirectory())},Ti=(e,t=r())=>N.commands.list(e,t),Ei=(e=wi(),t=r())=>{let n=Ci(e);return{queryKey:Ti(n,t),queryFn:async({signal:e})=>{let t=await F(`/api/config/commands/metadata`,{method:`POST`,headers:{"Content-Type":`application/json`,"Cache-Control":`no-cache`,...n?{"x-opencode-directory":n}:{}},body:JSON.stringify({catalog:!0}),query:n?{directory:n}:void 0,signal:e});if(!t.ok)throw Error(`Failed to fetch command metadata`);let r=await t.json();return Array.isArray(r.commands)?r.commands:[]},retry:2}},Di=e=>{let t=(0,V.c)(3),n=e===void 0?{}:e,r=Si(Ai),i=Ei(Ci(n.directory)??Ci(r)??Ci(B.getDirectory())),a;return t[0]!==n.enabled||t[1]!==i?(a={...i,enabled:n.enabled},t[0]=n.enabled,t[1]=i,t[2]=a):a=t[2],rt(a)},Oi=(e=wi(),t=r())=>L.getQueryData(Ti(Ci(e),t))??[],ki=async(e,t,n)=>{let i=Ci(t);if(r()!==n)return e.getQueryData(Ti(i,n))??[];let a=Ei(i,n);return e.fetchQuery({...a,staleTime:0})};function Ai(e){return e.getActiveProject?.()?.path??null}var ji=200,Mi=500,Ni=512,Pi=1024,Fi=64,Ii=100,Li=100,Ri=new Set([`__proto__`,`prototype`,`constructor`]),zi=new Set([`text`,`audio`,`image`,`video`,`pdf`]),Bi=e=>{for(let t=0;t<e.length;t+=1){let n=e.charCodeAt(t);if(n<=31||n>=127&&n<=159)return!0}return!1},Vi=e=>typeof e==`object`&&e&&!Array.isArray(e)&&Object.getPrototypeOf(e)===Object.prototype?e:void 0,Hi=e=>{if(typeof e==`string`)return e.length>0&&e.length<=Ni&&e.trim()===e&&!Bi(e)&&!Ri.has(e)?e:void 0},Ui=e=>typeof e==`string`&&e.length>0&&e.length<=Pi&&e.trim()===e&&!Bi(e)?e:void 0,Wi=e=>typeof e==`string`&&e.length>0&&e.length<=Fi&&e.trim()===e&&!Bi(e)?e:void 0,Gi=e=>typeof e==`number`&&Number.isFinite(e)&&Math.abs(e)<=1e9?e:void 0,Ki=e=>{let t=Vi(e);if(!t)return;let n={};for(let[e,r]of Object.entries(t))!zi.has(e)||typeof r!=`boolean`||(n[e]=r);return Object.keys(n).length?n:void 0},qi=e=>{let t=Vi(e);if(!t)return;let n={};for(let e of[`temperature`,`reasoning`,`attachment`,`toolcall`])t[e]!==void 0&&typeof t[e]==`boolean`&&(n[e]=t[e]);let r=Ki(t.input),i=Ki(t.output);return r&&(n.input=r),i&&(n.output=i),Object.keys(n).length?n:void 0},Ji=e=>{let t=Vi(e),n=Hi(t?.id),r=Ui(t?.name);if(!t||!n||!r)return{partial:!0};let i={id:n,name:r},a=!1,o=qi(t.capabilities);o&&(i.capabilities=o);let s=Vi(t.cost);if(s){let e={},t=Gi(s.input);t!==void 0&&(e.input=t);let n=Gi(s.output);n!==void 0&&(e.output=n);let r=Vi(s.cache);if(r){let t={},n=Gi(r.read);n!==void 0&&(t.read=n);let i=Gi(r.write);i!==void 0&&(t.write=i),Object.keys(t).length&&(e.cache=t)}Object.keys(e).length&&(i.cost=e)}let c=Vi(t.limit);if(c){let e={},t=Gi(c.context);t!==void 0&&(e.context=t);let n=Gi(c.output);n!==void 0&&(e.output=n),Object.keys(e).length&&(i.limit=e)}let l=Wi(t.release_date);l&&(i.release_date=l);let u=Vi(t.variants);if(u){let e={};for(let[t,[n,r]]of Object.entries(u).entries()){if(t>=Li){a=!0;break}!Hi(n)||!Vi(r)||(e[n]={})}Object.keys(e).length&&(i.variants=e)}return{value:i,partial:a}},Yi=e=>{let t=Vi(e);if(!t||t.schemaVersion!==1||!Array.isArray(t.providers)||!Vi(t.default)||typeof t.partial!=`boolean`)throw Error(`Invalid provider catalog response`);let n=[],r=new Set,i=t.providers.length>ji;for(let[e,a]of t.providers.entries()){if(e>=ji)continue;let t=Vi(a),o=Hi(t?.id),s=Ui(t?.name),c=Vi(t?.models);if(!t||!o||!s||!c||r.has(o)){i=!0;continue}r.add(o);let l={},u=new Set;for(let[e,[t,n]]of Object.entries(c).entries()){if(e>=Mi||!Hi(t)||Object.prototype.hasOwnProperty.call(l,t)){i=!0;continue}let r=Ji(n);if(i||=r.partial,!r.value||u.has(r.value.id)){i=!0;continue}u.add(r.value.id),l[t]=r.value}n.push({id:o,name:s,models:l})}let a=Vi(t.default),o={};for(let[e,[t,n]]of Object.entries(a).entries()){let r=Hi(t),a=Hi(n);if(e>=Ii||!r||!a){i=!0;continue}o[r]=a}return{schemaVersion:1,providers:n,default:o,partial:t.partial||i}},Xi=e=>(t=>e(t.state.data)?1/0:0),Zi=e=>{if(typeof e!=`string`)return null;let t=e.trim().replace(/\\/g,`/`);return t?t.length>1?t.replace(/\/+$/,``):t:null},Qi=(e,t=r())=>{let n=Zi(e);return{queryKey:N.configCatalog.providers(n,t),queryFn:async({signal:e})=>{let r=await F(`/api/config/catalog/providers`,{method:`GET`,headers:{Accept:`application/json`,...n?{"x-opencode-directory":n}:{}},signal:e}),i;if(r.ok)i=Yi(await r.json());else{if(r.status!==404&&r.status!==501)throw Error(`Provider catalog request failed (${r.status})`);let t=await B.getSdkClient().config.providers(n?{directory:n}:void 0,{signal:e});if(t.error!==void 0||t.data===void 0||t.data===null)throw Error(`Legacy provider catalog request failed`);i=Yi({schemaVersion:1,providers:t.data.providers,default:t.data.default,partial:!1})}let a=L.getQueryData(N.configCatalog.providers(n,t));if(i.partial&&a&&!a.partial)throw Error(`Partial provider catalog refresh retained the complete snapshot`);return i},staleTime:Xi(e=>{let t=e;return!!(t&&t.providers.length>0)}),gcTime:1/0,retry:2,retryDelay:100}},$i=(e,t=r())=>{let n=Zi(e);return{queryKey:N.agents.raw(n,t),queryFn:({signal:e})=>B.listAgents(n,e),staleTime:Xi(e=>Array.isArray(e)&&e.length>0),gcTime:1/0,retry:2,retryDelay:100}},ea=(e,t,n=r())=>{if(t.providerCatalogPartial===!0)return;let i=Qi(e,n);if(L.getQueryData(i.queryKey)===void 0)try{let e=Yi({schemaVersion:1,providers:Array.isArray(t.providers)?t.providers.map(e=>{if(typeof e!=`object`||!e||Array.isArray(e))return e;let t=e;return{...t,models:Array.isArray(t.models)?Object.fromEntries(t.models.map((e,t)=>[String(t),e])):t.models}}):t.providers,default:t.defaultProviders,partial:!1});if(e.partial)return;L.setQueryData(i.queryKey,e)}catch{}},ta=(e,t=r())=>L.fetchQuery(Qi(e,t)),na=(e,t=r())=>L.fetchQuery($i(e,t)),ra=async(e,t=r())=>{let n=Qi(e,t);return await L.invalidateQueries({queryKey:n.queryKey,exact:!0}),L.fetchQuery(n)},ia=async(e,t=r())=>{let n=$i(e,t);return await L.invalidateQueries({queryKey:n.queryKey,exact:!0}),L.fetchQuery(n)},aa=(e,t=r())=>L.invalidateQueries({queryKey:Qi(e,t).queryKey,exact:!0}),oa=e=>e?.trim()||null,sa=(e,t=r())=>N.agents.list(e,t),ca=(e,t=r())=>N.providers.list(e,t);function la(e){if(!e)return;let t=e.replace(/\\/g,`/`),n=t.lastIndexOf(`/agents/`);if(n===-1)return;let r=t.substring(n+8).split(`/`);return r.length>1?r[0]:void 0}var ua=(e=wi(),t=r())=>{let n=oa(e);return{queryKey:sa(n,t),queryFn:async({signal:e})=>{let r=await L.fetchQuery($i(n,t)),i=await F(`/api/config/agents/metadata`,{method:`POST`,headers:{"Cache-Control":`no-cache`,"Content-Type":`application/json`,...n?{"x-opencode-directory":n}:{}},body:JSON.stringify({names:r.map(e=>e.name)}),signal:e});if(!i.ok)throw Error(`Failed to fetch agent metadata`);let a=await i.json();return r.map(e=>{let t=a.agents?.[e.name]??{},n=t.scope??(t.sources?.md?.exists?t.sources.md.scope:void 0)??(t.sources?.json?.exists?t.sources.json.scope:void 0)??t.sources?.md?.scope??t.sources?.json?.scope,r=la(t.sources?.md?.path);return n===`project`||n===`user`?{...e,scope:n,group:r}:{...e,group:r}})},retry:2,staleTime:(e=>{let t=e.state.data;return t&&t.length>0?1/0:0}),gcTime:1/0}},da=(e,t=r())=>{let n=oa(e);return{queryKey:ca(n,t),queryFn:async()=>{let e=await B.getProvidersForConfig(n);return(Array.isArray(e.providers)?e.providers:[]).map(e=>({...e,models:Object.values(e.models??{})}))},retry:2}},fa=e=>{let t=(0,V.c)(7),n;t[0]===e?n=t[1]:(n=e===void 0?{}:e,t[0]=e,t[1]=n);let r=n,i=Si(_a),a;t[2]===i?a=t[3]:(a=ua(oa(i)??oa(B.getDirectory())),t[2]=i,t[3]=a);let o;return t[4]!==r.enabled||t[5]!==a?(o={...a,enabled:r.enabled},t[4]=r.enabled,t[5]=a,t[6]=o):o=t[6],rt(o)},pa=(e,t)=>{let n=(0,V.c)(7),r;n[0]===t?r=n[1]:(r=t===void 0?{}:t,n[0]=t,n[1]=r);let i=r,a;n[2]===e?a=n[3]:(a=ua(e),n[2]=e,n[3]=a);let o;return n[4]!==i.enabled||n[5]!==a?(o={...a,enabled:i.enabled},n[4]=i.enabled,n[5]=a,n[6]=o):o=n[6],rt(o)},ma=(e,t)=>{let n=(0,V.c)(7),r;n[0]===t?r=n[1]:(r=t===void 0?{}:t,n[0]=t,n[1]=r);let i=r,a;n[2]===e?a=n[3]:(a=da(e),n[2]=e,n[3]=a);let o;return n[4]!==i.enabled||n[5]!==a?(o={...a,enabled:i.enabled},n[4]=i.enabled,n[5]=a,n[6]=o):o=n[6],rt(o)},ha=(e=wi(),t=r())=>L.getQueryData(sa(oa(e),t))??[],ga=async(e,t,n)=>{let i=oa(t);if(r()!==n)return e.getQueryData(sa(i,n))??[];let a=ua(i,n);return await e.invalidateQueries({queryKey:a.queryKey,exact:!0}),e.fetchQuery(a)};function _a(e){return e.getActiveProject?.()?.path??null}var va=[{id:`anthropic`,label:`Anthropic`,description:`Anthropic's public skills repository`,source:`anthropics/skills`,defaultSubpath:`skills`,sourceType:`github`},{id:`clawdhub`,label:`ClawdHub`,description:`Community skill registry with vector search`,source:`clawdhub:registry`,sourceType:`clawdhub`}],ya=e=>e?.trim()||null,ba=()=>{let e=Si.getState().getActiveProject?.();return ya(e?.path)??ya(B.getDirectory())},xa=(e,t=r())=>N.skillsCatalog.sources(e,t),Sa=(e,t,n=r())=>N.skillsCatalog.source(e,t,n),Ca=new Map,wa=(e=ba(),t=r(),n=!1)=>{let i=ya(e);return{queryKey:xa(i,t),queryFn:({signal:e})=>Pa(i,n,e),staleTime:5e3,retry:2}},Ta=(e,t,n=r(),i=!1)=>{let a=ya(e);return $e({queryKey:Sa(a,t,n),queryFn:({signal:e,pageParam:n})=>Fa(a,t,n,i,e),initialPageParam:null,getNextPageParam:(e,t)=>Ia(e,t),staleTime:5e3,retry:2})},Ea=e=>{let t=(0,V.c)(7),n;t[0]===e?n=t[1]:(n=e===void 0?{}:e,t[0]=e,t[1]=n);let r=n,i=Si(za),a;t[2]===i?a=t[3]:(a=wa(ya(i)??ya(B.getDirectory())),t[2]=i,t[3]=a);let o;return t[4]!==r.enabled||t[5]!==a?(o={...a,enabled:r.enabled},t[4]=r.enabled,t[5]=a,t[6]=o):o=t[6],rt(o)},Da=(e,t)=>{let n=(0,V.c)(8),r;n[0]===t?r=n[1]:(r=t===void 0?{}:t,n[0]=t,n[1]=r);let i=r,a=Si(Ba),o;n[2]!==a||n[3]!==e?(o=Ta(ya(a)??ya(B.getDirectory()),e),n[2]=a,n[3]=e,n[4]=o):o=n[4];let s=i.enabled&&!!e,c;return n[5]!==o||n[6]!==s?(c={...o,enabled:s},n[5]=o,n[6]=s,n[7]=c):c=n[7],it(c)},Oa=e=>{let t=new Map;for(let n of e)for(let e of n.items)t.set(`${e.sourceId}:${e.skillDir}`,e);return Array.from(t.values())},ka=(e=L,t=ba(),n=r())=>e.getQueryData(xa(ya(t),n))??va,Aa=(e=L,t,n,i=r())=>e.getQueryData(Sa(ya(t),n,i)),ja=async(e,t,n)=>{let i=ya(t);return r()===n?e.fetchQuery({...wa(i,n,!0),staleTime:0}):ka(e,i,n)},Ma=async(e,t,n,i)=>{let a=ya(t);if(r()!==i)return Aa(e,a,n,i);let o=Sa(a,n,i),s=JSON.stringify(o),c=(Ca.get(s)??0)+1;Ca.set(s,c),await e.cancelQueries({queryKey:o,exact:!0});let l=await Fa(a,n,null,!0,new AbortController().signal);if(r()!==i||Ca.get(s)!==c)return Aa(e,a,n,i);let u={pages:[l],pageParams:[null]};return e.setQueryData(o,u),u},Na=(e,t,n)=>Promise.all([e.invalidateQueries({queryKey:xa(ya(t),n)}),e.invalidateQueries({queryKey:[n,`skillsCatalog`,`source`,ya(t)],exact:!1})]);async function Pa(e,t,n){let r=await Ra(La(`/api/config/skills/catalog`,{directory:e,refresh:t}),n),i=await r.json().catch(()=>null);if(!r.ok||!i?.ok)throw Error(i?.error?.message??`Failed to load catalog (${r.status})`);return i.sources?.length?i.sources:va}async function Fa(e,t,n,r,i){let a={directory:e,sourceId:t,cursor:n,refresh:r},o=await Ra(La(`/api/config/skills/catalog/source`,a),i),s=await o.json().catch(()=>null);if(o.ok&&(s?.ok||Array.isArray(s?.items)))return{items:s.items??[],nextCursor:s.nextCursor??null};let c=await Ra(La(`/api/config/skills/catalog`,a),i),l=await c.json().catch(()=>null),u=l?.itemsBySource?.[t];if(c.ok&&l?.ok&&Array.isArray(u))return{items:u,nextCursor:null};throw Error(s?.error?.message??l?.error?.message??`Failed to load catalog source (${o.status})`)}function Ia(e,t){let n=e.nextCursor;if(!(!n||e.items.length===0)&&!t.slice(0,-1).some(e=>e.nextCursor===n))return n}function La(e,t){let n=new URLSearchParams;t.directory&&n.set(`directory`,t.directory),t.sourceId&&n.set(`sourceId`,t.sourceId),t.cursor&&n.set(`cursor`,t.cursor),t.refresh&&n.set(`refresh`,`true`);let r=n.toString();return r?`${e}?${r}`:e}async function Ra(e,t){let n=new AbortController,r=setTimeout(()=>n.abort(),3e3);try{return await F(e,{method:`GET`,headers:{Accept:`application/json`},signal:AbortSignal.any([t,n.signal])})}finally{clearTimeout(r)}}function za(e){return e.getActiveProject?.()?.path??null}function Ba(e){return e.getActiveProject?.()?.path??null}var Va=e=>e?.trim()||null,Ha=()=>{let e=Si.getState().getActiveProject?.();return Va(e?.path)??Va(B.getDirectory())},Ua=e=>{let t=e.replace(/\\/g,`/`),n=t.lastIndexOf(`/skills/`);if(n===-1)return;let r=t.slice(n+8).split(`/`);return r.length>=3?r[0]:void 0},Wa=(e,t=r())=>N.skills.list(e,t),Ga=(e=Ha(),t=r())=>{let n=Va(e);return{queryKey:Wa(n,t),queryFn:async({signal:e})=>{let t=await F(`/api/config/skills`,{query:{summary:`true`,...n?{directory:n}:{}},signal:e});if(!t.ok)throw Error(`Failed to list skills: ${t.status}`);return((await t.json()).skills??[]).map(e=>({name:e.name,path:e.path,scope:e.scope??`user`,source:e.source??`opencode`,description:e.description??``,group:Ua(e.path)}))},retry:2}},Ka=e=>{let t=(0,V.c)(3),n=e===void 0?{}:e,r=Si(Ya),i=Ga(Va(n.directory)??Va(r)??Va(B.getDirectory())),a;return t[0]!==n.enabled||t[1]!==i?(a={...i,enabled:n.enabled},t[0]=n.enabled,t[1]=i,t[2]=a):a=t[2],rt(a)},qa=(e=L,t=Ha(),n=r())=>e.getQueryData(Wa(Va(t),n))??[],Ja=async(e,t,n=r())=>{let i=Va(t);return r()===n?e.fetchQuery({...Ga(i,n),staleTime:0}):qa(e,i,n)};function Ya(e){return e.getActiveProject?.()?.path??null}var Xa=()=>{let e=B.getDirectory();if(typeof e==`string`&&e.trim().length>0)return e;try{let e=window.__zustand_directory_store__;if(e)return e.getState().currentDirectory}catch{}return null},Za=wi,Qa=e=>{let t=e;return t.native===!0||t.builtIn===!0},$a=e=>{let t=e;return t.hidden===!0||t.options?.hidden===!0},eo=e=>e.filter(e=>!$a(e)),to=`useAgentsStore`,no=e=>new Promise(t=>setTimeout(t,e)),ro=2e4,io=300,ao=4,oo=800,so=200,co=2e3,lo=e=>e!=null,uo=Oe()(je(ke(e=>({selectedAgentName:null,agentDraft:null,setSelectedAgent:t=>e({selectedAgentName:t}),setAgentDraft:t=>e({agentDraft:t}),loadAgents:async()=>{let e=Za(),t=r();try{return await ga(L,e,t),!0}catch{return!1}},createAgent:async t=>po(`POST`,t.name,t,e),updateAgent:async(t,n)=>po(`PATCH`,t,n,e),deleteAgent:async(t,n)=>po(`DELETE`,t,{scope:n},e),getAgentByName:e=>ha().find(t=>t.name===e),getVisibleAgents:()=>eo(ha())}),{name:`agents-store`,storage:h(),partialize:e=>({selectedAgentName:e.selectedAgentName})}),{name:`agents-store`}));typeof window<`u`&&(window.__zustand_agents_store__=uo);async function fo(e,t){await ga(L,e,t),r()===t&&Ar(`agents`,{source:to})}async function po(e,t,n,i){Lr(`${{POST:`Creating`,PATCH:`Updating`,DELETE:`Deleting`}[e]} agent configuration…`);let a=Za(),o=r();try{let s={};if(e===`POST`&&(s.mode=n?.mode||`subagent`,n?.description&&(s.description=n.description),n?.model&&(s.model=n.model),n?.variant&&(s.variant=n.variant),lo(n?.temperature)&&(s.temperature=n.temperature),lo(n?.top_p)&&(s.top_p=n.top_p),n?.prompt&&(s.prompt=n.prompt),n?.permission&&(s.permission=n.permission),n?.disable!==void 0&&(s.disable=n.disable),n?.scope&&(s.scope=n.scope)),e===`PATCH`){for(let e of[`mode`,`description`,`model`,`prompt`,`permission`,`disable`])n?.[e]!==void 0&&(s[e]=n[e]);for(let e of[`variant`,`temperature`,`top_p`])e in(n??{})&&(s[e]=n?.[e]??null)}let c=a?`?directory=${encodeURIComponent(a)}`:``,l=await F(`/api/config/agents/${encodeURIComponent(t)}${c}`,{method:e,headers:{"Content-Type":`application/json`,...a?{"x-opencode-directory":a}:{}},body:JSON.stringify(e===`DELETE`?{scope:n?.scope}:s)}),u=await l.json().catch(()=>null);if(!l.ok)throw Error(u?.error||`Failed to ${e.toLowerCase()} agent`);return r()===o?(e===`DELETE`&&uo.getState().selectedAgentName===t&&i({selectedAgentName:null}),u?.requiresManualRestart?{ok:!0,requiresManualRestart:!0}:(u?.requiresReload??!0?await _o({message:u?.message,delayMs:u?.reloadDelayMs,scopes:[`agents`],mode:`projects`,transportIdentity:o,queryDirectory:a}):await fo(a,o),{ok:!0})):{ok:!0,...u?.requiresManualRestart?{requiresManualRestart:!0}:{}}}catch(t){return console.error(`[AgentsStore] ${e} agent failed:`,t),{ok:!1}}finally{Rr()}}async function mo(e){let t=typeof e==`number`&&e>0?Math.min(e,io):0;t>0&&await no(t);let n=Date.now(),r=0,i=null;for(;Date.now()-n<ro;){r+=1,zr(`Waiting for OpenCode… (attempt ${r})`);try{if(await B.checkHealth())return;i=Error(`OpenCode health check reported not ready`)}catch(e){i=e}let e=Date.now()-n;await no(r<=ao&&e<1200?io:Math.min(oo+Math.max(0,r-ao)*so,co))}throw i||Error(`OpenCode did not become ready in time`)}var ho=e=>{if(!e||e.length===0)return[`all`];let t=Array.from(new Set(e));return t.includes(`all`)?[`all`]:t};async function go(e={}){let{message:t,delayMs:n}=e,i=e.transportIdentity??r(),a=e.queryDirectory??Za(),o=ho(e.scopes),s=e.mode??(o.includes(`all`)?`projects`:`active`);try{zr(t||`Refreshing configuration…`)}catch{}try{if(r()!==i||(await mo(n),r()!==i))return;let e=G.getState(),t=o.includes(`all`)||o.includes(`providers`),c=o.includes(`all`)||o.includes(`agents`),l=o.includes(`all`)||o.includes(`agents`),u=o.includes(`all`)||o.includes(`commands`),d=o.includes(`all`)||o.includes(`skills`),f=Xa(),p=s===`projects`?Si.getState().projects:[],m=Array.from(new Set([...f?[f]:[],...p.map(e=>e.path).filter(Boolean)]));o.includes(`all`)&&s===`projects`&&G.setState({directoryScoped:{}}),t&&G.getState().invalidateProviderCache(s===`active`?f:void 0);let h=[];for(let n of m)t&&h.push(e.loadProviders({directory:n,source:`agentsStore:refreshConfig`}).then(()=>void 0)),c&&h.push(e.loadAgents({directory:n,source:`agentsStore:refreshConfig`}).then(()=>void 0));let g=[];l&&g.push(ga(L,a,i).then(()=>void 0)),u&&g.push(ki(L,a,i).then(()=>void 0)),d&&(g.push(Ja(L,a,i).then(()=>void 0)),g.push(Na(L,a,i).then(()=>void 0))),zr(`Refreshing configuration…`),await Promise.all([...h,...g])}catch(e){throw zr(`OpenCode refresh failed. Please retry.`),await no(1500),e}finally{Rr()}}async function _o(e){await go(e)}async function vo(e){Lr(e?.message||`Reloading OpenCode configuration…`);let t=e?.transportIdentity??r(),n=e?.queryDirectory??Za();try{let i=await F(`/api/config/reload`,{method:`POST`,headers:{"Content-Type":`application/json`}}),a=await i.json().catch(()=>null);if(!i.ok){let e=a?.error||`Failed to reload configuration`;throw Error(e)}if(r()!==t){Rr();return}let o={...e,transportIdentity:t,queryDirectory:n,scopes:e?.scopes??[`all`],mode:e?.mode??`projects`};a?.requiresReload?await _o({...o,message:a.message,delayMs:a.reloadDelayMs}):await _o(o)}catch(e){throw console.error(`[reloadOpenCodeConfiguration] Failed:`,e),zr(`Failed to reload configuration. Please try again.`),await no(2e3),Rr(),e}}var yo=null;yo||=kr(e=>{if(e.source!==to&&jr(e,`agents`)){let{loadAgents:e}=uo.getState();e()}});var bo=e=>typeof e==`string`?e.trim():``,xo=(e,t)=>!t||t<=0||e.length<=t?e:t<=3?e.slice(0,t):`${e.slice(0,t-3)}...`,So={ai:`AI`,api:`API`,ernie:`ERNIE`,glm:`GLM`,gpt:`GPT`,it:`IT`,lfm:`LFM`,lm:`LM`,oss:`OSS`,pdf:`PDF`,rp:`RP`,slerp:`SLERP`,tars:`TARS`,ui:`UI`,vl:`VL`,vlm:`VLM`,aion:`Aion`,anthropic:`Anthropic`,chatgpt:`ChatGPT`,claude:`Claude`,codex:`Codex`,codestral:`Codestral`,command:`Command`,deepseek:`DeepSeek`,gemini:`Gemini`,gemma:`Gemma`,grok:`Grok`,hunyuan:`Hunyuan`,kimi:`Kimi`,llama:`Llama`,minimax:`MiniMax`,mistral:`Mistral`,mixtral:`Mixtral`,nemotron:`Nemotron`,openai:`OpenAI`,qwen:`Qwen`,rekaai:`RekaAI`},Co=e=>e?e[0].toUpperCase()+e.slice(1).toLowerCase():``,wo=e=>{let t=e.startsWith(`~`)?e.slice(1):e,n=t.lastIndexOf(`/`);return n>=0?t.slice(n+1):t},To=e=>{let t=e.lastIndexOf(`:`);return t<=0||t>=e.length-1?{base:e,suffix:``}:{base:e.slice(0,t),suffix:e.slice(t+1)}},Eo=e=>{let t=e.replace(/([a-z0-9])([A-Z])/g,`$1-$2`).split(/[-_\s]+/).map(e=>e.trim()).filter(Boolean),n=[];for(let e=0;e<t.length;e+=1){let r=t[e],i=t[e+1],a=t[e+2];if(/^(19|20)\d{2}$/.test(r)&&/^\d{2}$/.test(i??``)&&/^\d{2}$/.test(a??``)){n.push(`${r}-${i}-${a}`),e+=2;continue}if(/^\d$/.test(r)&&/^\d$/.test(i??``)){n.push(`${r}.${i}`),e+=1;continue}n.push(r)}return n},Do=e=>{let t=e.toLowerCase(),n=So[t];if(n)return n;let r=t.match(/^qwen(\d(?:\.\d+)?)$/);return r?`Qwen${r[1]}`:/^o\d/.test(t)?t:/^v\d/.test(t)?`V${e.slice(1).toUpperCase()}`:/^\d+[on]$/.test(t)?t:/^[a-z]\d+[a-z]?$/.test(t)?t.toUpperCase():/^\d+(?:x\d+)?[a-z]+$/.test(t)?t.replace(/[a-z]+$/i,e=>e.toUpperCase()):/^\d+(?:\.\d+)?[a-z]$/.test(t)?t.replace(/[a-z]$/i,e=>e.toUpperCase()):/^[a-z]+\d+(?:\.\d+)?[a-z]*$/.test(t)?Co(t).replace(/([a-z])(\d)/i,`$1$2`):Co(e)},Oo=e=>{let t=[...e];return t[0]===`GPT`&&t[1]&&/^(?:\d|\d+[a-z]|OSS$)/i.test(t[1])&&t.splice(0,2,`GPT-${t[1]}`),t[0]===`GLM`&&t[1]&&/^\d/.test(t[1])&&t.splice(0,2,`GLM-${t[1]}`),t[0]===`LFM`&&t[1]&&/^\d/.test(t[1])&&t.splice(0,2,`LFM${t[1]}`),t[0]===`Qwen`&&t[1]&&/^\d/.test(t[1])&&t.splice(0,2,`Qwen${t[1]}`),t},ko=e=>{let t=bo(e).toLowerCase();return t?t===`free`||t===`thinking`?t:Ao(t):``},Ao=e=>{let t=bo(e);if(!t)return``;let{base:n,suffix:r}=To(wo(t)),i=Oo(Eo(n).map(Do));if(i.length>=2){let e=i[i.length-1],t=i[i.length-2];e===`Reasoning`&&t===`Non`&&i.splice(i.length-2,2,`(Non-Reasoning)`)}let a=i[i.length-1];/^(19|20)\d{2}-\d{2}-\d{2}$/.test(a??``)&&(i[i.length-1]=`(${a})`);let o=i.join(` `).replace(/\s+\(/g,` (`).trim(),s=ko(r);return s?`${o} (${s})`:o},jo=e=>!/\s/.test(e)&&/[-_]/.test(e),Mo=(e,t,n={})=>{let r=bo(e?.name),i=bo(e?.id)||bo(t);return r&&!jo(r)?xo(r,n.maxLength):i?xo(Ao(i),n.maxLength):r?xo(Ao(r.toLowerCase()),n.maxLength):n.fallbackLabel??``},No=(e,t)=>{let n=e?.models;if(!(!n||!t))return Array.isArray(n)?n.find(e=>bo(e.id)===t):n[t]},Po=(e,t,n={})=>{let r=bo(t);return Mo(No(e,r),r,n)},Fo=(e,t,n,r)=>{let i=n.find(e=>e.name===t),a=i?.model?.providerID,o=i?.model?.modelID,s=!!(a&&o&&r.some(e=>e.id===a&&e.models?.some(e=>e.id===o)));return{providerID:s?a:e.providerID,modelID:s?o:e.modelID,agent:t}},Io=e=>e===`primary`||e===`all`||e==null,Lo=e=>e.filter(e=>Io(e.mode)),Ro=(e,t,n=1)=>{let r=Lo(e);if(r.length<=1)return null;let i=r.findIndex(e=>e.name===t);return r[((i>=0?i:0)+n+r.length)%r.length]?.name??null},zo=e=>e.charAt(0).toUpperCase()+e.slice(1),Bo=(e,t)=>{if(t){let n=e.find(e=>e.name===t);return zo(n?n.name:t)}let n=e.filter(e=>Io(e.mode)),r=n.find(e=>e.name===`build`)||n[0]||e[0];return r?zo(r.name):`Select agent`},Vo=(e,t,n=``)=>Po(e,t,{fallbackLabel:n}),Ho=e=>{if(!e||e.trim().length===0)return`Default`;let t=e.trim();return/^\d+(\.\d+)?$/.test(t)?t:zo(t)},Uo=e=>typeof e==`object`&&!!e,Wo=e=>typeof e==`string`&&e.length>0,Go=e=>{let t=new Map;if(!Array.isArray(e))return t;for(let n of e){if(!Array.isArray(n)||n.length<2)continue;let[e,r]=n;if(!Wo(e)||!Array.isArray(r))continue;let i=new Map;for(let e of r){if(!Array.isArray(e)||e.length<2)continue;let[t,n]=e;if(!Wo(t)||!Array.isArray(n))continue;let r=new Map;for(let e of n){if(!Array.isArray(e)||e.length<2)continue;let[t,n]=e;!Wo(t)||!Wo(n)||r.set(t,n)}r.size>0&&i.set(t,r)}i.size>0&&t.set(e,i)}return t},Ko=Oe()(ke((e,t)=>({sessionModelSelections:new Map,sessionAgentSelections:new Map,sessionAgentModelSelections:new Map,sessionAgentModelVariantSelections:new Map,lastUsedProvider:null,saveSessionModelSelection:(t,n,r)=>e(e=>{let i=new Map(e.sessionModelSelections);return i.delete(t),i.set(t,{providerId:n,modelId:r}),{sessionModelSelections:i,lastUsedProvider:{providerID:n,modelID:r}}}),getSessionModelSelection:e=>t().sessionModelSelections.get(e)??null,saveSessionAgentSelection:(t,n)=>e(e=>{if(e.sessionAgentSelections.get(t)===n)return e;let r=new Map(e.sessionAgentSelections);return r.delete(t),r.set(t,n),{sessionAgentSelections:r}}),getSessionAgentSelection:e=>t().sessionAgentSelections.get(e)??null,saveAgentModelForSession:(t,n,r,i)=>e(e=>{let a=e.sessionAgentModelSelections.get(t)?.get(n);if(a?.providerId===r&&a?.modelId===i)return e;let o=new Map(e.sessionAgentModelSelections),s=new Map(o.get(t)??new Map);return o.delete(t),s.set(n,{providerId:r,modelId:i}),o.set(t,s),{sessionAgentModelSelections:o}}),getAgentModelForSession:(e,n)=>t().sessionAgentModelSelections.get(e)?.get(n)??null,saveAgentModelVariantForSession:(t,n,r,i,a)=>e(e=>{let o=`${r}/${i}`,s=new Map(e.sessionAgentModelVariantSelections),c=s.get(t),l=new Map(c??new Map),u=l.get(n),d=new Map(u??new Map);return a?d.get(o)===a?e:(s.delete(t),d.set(o,a),l.set(n,d),s.set(t,l),{sessionAgentModelVariantSelections:s}):d.has(o)?(d.delete(o),d.size===0?l.delete(n):l.set(n,d),s.delete(t),l.size>0&&s.set(t,l),{sessionAgentModelVariantSelections:s}):e}),getAgentModelVariantForSession:(e,n,r,i)=>{let a=`${r}/${i}`;return t().sessionAgentModelVariantSelections.get(e)?.get(n)?.get(a)}}),{name:`selection-store`,version:2,storage:h(),partialize:e=>({sessionModelSelections:Array.from(e.sessionModelSelections.entries()).slice(-150),sessionAgentSelections:Array.from(e.sessionAgentSelections.entries()).slice(-150),sessionAgentModelSelections:Array.from(e.sessionAgentModelSelections.entries()).slice(-150).map(([e,t])=>[e,Array.from(t.entries())]),sessionAgentModelVariantSelections:Array.from(e.sessionAgentModelVariantSelections.entries()).slice(-150).map(([e,t])=>[e,Array.from(t.entries()).map(([e,t])=>[e,Array.from(t.entries())])]),lastUsedProvider:e.lastUsedProvider}),merge:(e,t)=>{let n=Uo(e)?e:void 0,r=new Map;if(Array.isArray(n?.sessionAgentModelSelections))for(let e of n.sessionAgentModelSelections){if(!Array.isArray(e)||e.length<2)continue;let[t,n]=e;if(!Wo(t)||!Array.isArray(n))continue;let i=new Map;for(let e of n){if(!Array.isArray(e)||e.length<2)continue;let[t,n]=e;!Wo(t)||typeof n!=`object`||!n||!Wo(n.providerId)||!Wo(n.modelId)||i.set(t,{providerId:n.providerId,modelId:n.modelId})}i.size>0&&r.set(t,i)}return{...t,lastUsedProvider:n?.lastUsedProvider??t.lastUsedProvider,sessionModelSelections:new Map(Array.isArray(n?.sessionModelSelections)?n.sessionModelSelections:[]),sessionAgentSelections:new Map(Array.isArray(n?.sessionAgentSelections)?n.sessionAgentSelections:[]),sessionAgentModelSelections:r,sessionAgentModelVariantSelections:Go(n?.sessionAgentModelVariantSelections)}},migrate:e=>e})),qo=_,Jo=(e,t)=>{let n=qo(t);if(!n)return null;let r=null;for(let t of e){let e=qo(t.path);e&&(n!==e&&!n.startsWith(`${e}/`)||(!r||e.length>(qo(r.path)?.length??0))&&(r=t))}return r},Yo=(e,t,n)=>{let r=qo(n);if(!r)return null;let i=null,a=null,o=-1;for(let[e,n]of t.entries())for(let t of n){let n=qo(t.path);n&&(r!==n&&!r.startsWith(`${n}/`)||n.length>o&&(o=n.length,i=t,a=qo(e)))}if(!i)return null;let s=[qo(i.projectDirectory),a].filter(e=>!!e);for(let t of s){let n=e.find(e=>qo(e.path)===t)??null;if(n)return n;let r=Jo(e,t);if(r)return r}return null},Xo=(e,t,n)=>Yo(e,t,n)??Jo(e,n),Zo=e=>{if(!e)return null;let t=e.indexOf(`/`);return t<=0||t>=e.length-1?null:{providerId:e.slice(0,t),modelId:e.slice(t+1)}},Qo=[`concise`,`detailed`,`mentor`,`pushback`,`noFiller`,`matchEnergy`,`warmPeer`],$o=e=>typeof e==`string`&&Qo.includes(e),es=e=>{switch(e){case`concise`:return`Keep replies short. Answer first, no preamble or recap of the question. Write like you're texting a colleague who already has the context — plain sentences, not headings or bullets. Reach for a list only when the content is genuinely a list; never use one to look organised.`;case`detailed`:return`Take the space you need to actually explain things. Walk through what's going on, why it matters, and where the real tradeoffs are. Prefer flowing prose over bullet points and headings — structure the answer with paragraphs and let the reasoning carry it. Lists are fine when something really is enumerable, but don't fragment a normal explanation into bullets.`;case`mentor`:return`Talk like a patient senior engineer pairing with someone less experienced. Explain the underlying idea before the answer, think out loud about how you'd approach it, and drop in a small concrete example when it actually helps. Keep it conversational — no lecture format, no checklists, no numbered steps unless the task literally is a sequence.`;case`pushback`:return`Don't agree automatically. If something I say sounds off — a wrong assumption, a flawed approach, a request that won't actually do what I think it will — push back first. Explain what you disagree with and why, and only proceed once I've responded. Disagreement is welcome; sycophancy is not. Don't soften it with 'you might want to consider' — just say it.`;case`noFiller`:return`Cut the filler. No 'Great question', no 'Certainly', no 'I'll help you with that', no restating what I just asked. No closing summary of what you did when the diff or output already shows it. No trailing 'let me know if you need anything else'. Open with the actual content and stop when you're done.`;case`matchEnergy`:return`Mirror the size and register of my message. A one-line question gets a one-line answer. A casual aside gets a casual reply, not a structured breakdown. If I write three words, don't respond with three paragraphs. Match the tone too — informal stays informal, technical stays technical. Don't inflate small asks into full essays.`;case`warmPeer`:return`Talk like a colleague, not an assistant. First person is fine and encouraged — 'I'd do this', 'I don't love that approach', 'that was sloppy of me'. Have actual opinions and share them. Push back when you disagree. Admit when you screwed up without grovelling. Skip the corporate helpfulness and performative politeness — just be a person.`}},ts=new Map,ns=new Map,rs=({enabled:e,preset:t,customInstructions:n})=>e?t===`custom`?(typeof n==`string`?n.trim():``)||null:$o(t)?es(t):null:null,is=(e,t=r())=>{ts.set(t,{enabled:e.enabled===!0,preset:e.preset,customInstructions:e.customInstructions})},as=(e=r())=>{let t=ts.get(e);if(t)return rs(t)},os=async()=>{let e=r(),t=as(e);if(t!==void 0)return t;let n=ns.get(e);if(n)return n;let i=(async()=>{let t=await me(e);return is({enabled:t.responseStyleEnabled,preset:t.responseStylePreset,customInstructions:t.responseStyleCustomInstructions},e),as(e)??null})();ns.set(e,i);try{return await i}finally{ns.get(e)===i&&ns.delete(e)}},ss;(function(e){function t(e,t,n){let r=0,i=e.length-1;for(;r<=i;){let a=Math.floor((r+i)/2),o=n(e[a]);if(o===t)return{found:!0,index:a};o<t?r=a+1:i=a-1}return{found:!1,index:r}}e.search=t})(ss||={});function cs(e,t){return e.findIndex(e=>e.id===t)}function ls(e,t){if(!t)return e.slice();let n=cs(e,t);return n<0?e.slice():e.slice(0,n)}function us(e,t,n){let r=cs(e,n);return r<0?!1:cs(e,t)>=r}function ds(e,t){if(!t){for(let t=e.length-1;t>=0;--t){let n=e[t];if(n?.role===`user`)return n}return}let n=cs(e,t);if(!(n<0))for(let t=n-1;t>=0;--t){let n=e[t];if(n?.role===`user`)return n}}function fs(e,t){let n=cs(e,t);if(!(n<0))for(let t=n+1;t<e.length;t+=1){let n=e[t];if(n?.role===`user`)return n}}var ps=`openchamber:sync:debug`,ms;function hs(){if(ms!==void 0)return ms;try{ms=typeof localStorage<`u`&&localStorage.getItem(ps)===`1`}catch{ms=!1}return ms}function gs(e,...t){hs()&&(`${e}`,[...t])}var _s={pipeline:{coalesced:(e,t)=>gs(`pipeline`,`coalesced`,e,t),flush:e=>gs(`pipeline`,`flush`,`${e} events`)},reducer:{messageUpdatedUnchanged:(e,t,n,r,i)=>gs(`reducer`,`message.updated UNCHANGED (skipped)`,{sessionID:e,messageID:t,role:n,finish:r,completed:i}),partUpdatedNoExistingParts:(e,t,n)=>gs(`reducer`,`message.part.updated NO EXISTING PARTS`,{messageID:e,partID:t,partType:n}),partDeltaNoParts:(e,t)=>gs(`reducer`,`message.part.delta DROPPED (no parts array)`,{messageID:e,partID:t}),partDeltaNotFound:(e,t)=>gs(`reducer`,`message.part.delta DROPPED (partID not found)`,{messageID:e,partID:t}),partSkipped:(e,t,n)=>gs(`reducer`,`message.part.updated SKIPPED (type filtered)`,{messageID:e,partID:t,partType:n})},dispatch:{eventNoChange:(e,t,n)=>gs(`dispatch`,`event → no change`,{eventType:e,sessionID:t,messageID:n}),eventApplied:(e,t,n)=>gs(`dispatch`,`event → applied`,{eventType:e,sessionID:t,messageID:n})},recovery:{materializing:e=>gs(`recovery`,`materializing session`,e)}},vs=new Set([`patch`,`step-start`,`step-finish`]),ys=[`text`,`output`],bs=new Set([`completed`,`error`,`aborted`,`failed`,`timeout`,`cancelled`]);function xs(e,t){if(!e||t.length===0)return(e??``)+t;if(e.endsWith(t))return e;let n=Math.min(e.length,t.length);for(let r=n;r>0;r--)if(e.endsWith(t.slice(0,r)))return e+t.slice(r);return e+t}function Ss(e,t){let n=[];for(let r of ys){let i=e[r],a=t[r];typeof i==`string`&&typeof a==`string`&&i.length!==0&&a.length!==0&&(a===i||a.startsWith(i)||i.startsWith(a))&&n.push(r)}return n}function Cs(e){let t=e.state?.time?.end;if(typeof t==`number`)return t;let n=e.time?.end;return typeof n==`number`?n:void 0}function ws(e){if(e.type!==`tool`)return;let t=e.state?.status;return typeof t==`string`?t:void 0}function Ts(e,t){if(e.type!==`tool`||t.type!==`tool`)return!1;let n=ws(e),r=ws(t);if(n&&bs.has(n)&&(!r||!bs.has(r)))return!0;let i=Cs(e),a=Cs(t);return typeof i==`number`&&typeof a!=`number`}function Es(e,t){if(e===t)return!0;if(e===void 0||t===void 0)return e===t;try{return JSON.stringify(e)===JSON.stringify(t)}catch{return!1}}var Ds=[`agent`,`mode`,`providerID`,`modelID`,`variant`,`model`],Os=[`input`,`output`,`reasoning`];function ks(e){if(!e||typeof e!=`object`)return!1;let t=e;return Os.some(e=>typeof t[e]==`number`&&Number.isFinite(t[e])&&t[e]>0)}function As(e){if(!e||typeof e!=`object`)return!1;let t=e;return Os.every(e=>typeof t[e]!=`number`||!Number.isFinite(t[e])||t[e]<=0)}function js(e){if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0}function Ms(e,t){let n={...e,...t},r=e,i=t,a=n;for(let e of Ds){let t=js(i[e]),n=js(r[e]);t?a[e]=t:n?a[e]=n:delete a[e]}return(e.time||t.time)&&(n.time={...e.time,...t.time}),ks(r.tokens)&&As(i.tokens)&&(a.tokens=r.tokens),n}function Ns(e,t){if(e.role!==t.role||e.finish!==t.finish||e.time?.completed!==t.time?.completed)return!1;for(let n of[`summary`,`error`,`cost`,`tokens`,`structured`,`model`,`tools`,`format`,`variant`,`agent`,`mode`,`providerID`,`modelID`,`system`])if(!Es(e[n],t[n]))return!1;return!0}function Ps(e,t,n){if(!t)return!1;let r=e.message[t];return r?cs(r,n)>=0:!1}function Fs(e,t){switch(t.type){case`message.updated`:{let n=t.properties.info,r=e.message[n.sessionID],i=!!r&&r.every(t=>t.role!==`assistant`||e.part[t.id]!==void 0);if(n.role===`assistant`&&i&&e.part[n.id]===void 0&&(e.part[n.id]=[]),!r)return e.message[n.sessionID]=[n],!0;let a=cs(r,n.id);if(a>=0){let t=r[a],i=Ms(t,n);if(Ns(t,i))return _s.reducer.messageUpdatedUnchanged(n.sessionID,n.id,n.role,n.finish,n.time?.completed),!1;let o=[...r];o[a]=i,e.message[n.sessionID]=o}else e.message[n.sessionID]=[...r,n];return!0}case`message.removed`:{let n=t.properties,r=e.message[n.sessionID];if(r){let t=cs(r,n.messageID);if(t>=0){let i=[...r];i.splice(t,1),e.message[n.sessionID]=i}}return delete e.part[n.messageID],!0}case`message.part.updated`:{let n=t.properties,r=n.part;if(vs.has(r.type))return _s.reducer.partSkipped(r.messageID,r.id,r.type),!1;let i=r.messageID,a=n.sessionID??r.sessionID;if(!i)return!1;let o=!Ps(e,a,i),s=e.part[i];if(!s)return _s.reducer.partUpdatedNoExistingParts(i,r.id,r.type),e.part[i]=[r],!o||{changed:!0,materialization:{type:`incomplete-session-snapshot`,reason:`missing-owning-message`,sessionID:a,messageID:i,partID:r.id}};let c=[...s],l=ss.search(c,r.id,e=>e.id);if(l.found){let e=c[l.index];if(Ts(e,r))return!1;let t=Ss(e,r);c[l.index]=t.length>0?{...r,__dedupeNextDeltaFields:t}:r}else{let e=r.type===`text`||r.type===`file`?c.findIndex(e=>e.type===r.type&&e.__openchamberOptimistic===!0):-1;e>=0&&c.splice(e,1);let t=ss.search(c,r.id,e=>e.id);c.splice(t.index,0,r)}return e.part[i]=c,!o||{changed:!0,materialization:{type:`incomplete-session-snapshot`,reason:`missing-owning-message`,sessionID:a,messageID:i,partID:r.id}}}case`message.part.removed`:{let n=t.properties,r=e.part[n.messageID];if(!r)return!1;let i=ss.search(r,n.partID,e=>e.id);if(i.found){let t=[...r];return t.splice(i.index,1),t.length===0?delete e.part[n.messageID]:e.part[n.messageID]=t,!0}return!1}case`message.part.delta`:{let n=t.properties,r=e.part[n.messageID];if(!r)return _s.reducer.partDeltaNoParts(n.messageID,n.partID),{changed:!1,materialization:{type:`incomplete-session-snapshot`,reason:`orphan-delta`,sessionID:n.sessionID,messageID:n.messageID,partID:n.partID}};let i=ss.search(r,n.partID,e=>e.id);if(!i.found)return _s.reducer.partDeltaNotFound(n.messageID,n.partID),{changed:!1,materialization:{type:`incomplete-session-snapshot`,reason:`missing-delta-part`,sessionID:n.sessionID,messageID:n.messageID,partID:n.partID}};let a=r[i.index],o=a[n.field],s=a.__dedupeNextDeltaFields??[],c=s.includes(n.field),l=[...r];return l[i.index]={...a,[n.field]:c?xs(o,n.delta):(o??``)+n.delta,__dedupeNextDeltaFields:s.filter(e=>e!==n.field)},e.part[n.messageID]=l,!0}default:return!1}}function Is(e){if(typeof e.time?.completed==`number`)return!1;let t=e.finish;return!(typeof t==`string`&&t.length>0)}function Ls(e){let t=e.id;return typeof t==`string`&&t.length>0?t:void 0}function Rs(e){return e.slim===!0}function zs(e,t){if(!e||e.length===0||!t.some(e=>Rs(e)))return t;let n=new Map;for(let t of e){let e=Ls(t);e&&!Rs(t)&&n.set(e,t)}if(n.size===0)return t;let r=!1,i=t.map(e=>{if(!Rs(e))return e;let t=Ls(e);if(!t)return e;let i=n.get(t);return i?(r=!0,i):e});return r?i:t}function Bs(e,t){return e===t||e.length===t.length&&e.every((e,n)=>e===t[n])?t:e}function Vs(e){let t=e.clientRole??e.role;return typeof t==`string`?t:``}function Hs(e){return Vs(e)!==`assistant`||!Is(e)}function Us(e,t,n){if(!e||e.length===0)return t;let r=zs(e,t);if(Hs(n))return Bs(r,e);let i=new Set;for(let e of r){let t=Ls(e);t&&i.add(t)}let a=new Map,o=[],s,c=0;for(let t of e){let e=Ls(t);if(e&&i.has(e)){s=e;continue}if(!e)continue;if(c+=1,!s){o.push(t);continue}let n=a.get(s);if(n){n.push(t);continue}a.set(s,[t])}if(c===0)return Bs(r,e);let l=[...o];for(let e of r){l.push(e);let t=Ls(e);if(!t)continue;let n=a.get(t);n&&l.push(...n)}return Bs(l,e)}var Ws=e=>Object.freeze(e),Gs=Object.freeze({initial:Ws({id:`initial`,onStale:`drop`,messages:`insert-only`,parts:`replace`,preserveStreaming:`assistant`,protectOptimistic:`none`}),prepend:Ws({id:`history`,onStale:`drop`,messages:`insert-only`,parts:`skip-existing`,preserveStreaming:`assistant`,protectOptimistic:`none`}),recovery:Ws({id:`recovery`,onStale:`backfill`,messages:`upsert`,parts:`replace`,preserveStreaming:`assistant`,protectOptimistic:`none`}),"reconcile-page":Ws({id:`reconcile-page`,onStale:`backfill`,messages:`upsert`,parts:`replace`,preserveStreaming:`assistant`,protectOptimistic:`keep-unless-full`}),materialize:Ws({id:`materialize`,onStale:`drop`,messages:`insert-only`,parts:`replace`,preserveStreaming:`assistant`,protectOptimistic:`none`})}),Ks=Ws({id:`recovery-backfill`,onStale:`backfill`,messages:`insert-only`,parts:`skip-existing`,preserveStreaming:`assistant`,protectOptimistic:`none`}),qs=Ws({id:`send-gap-fill`,onStale:`backfill`,messages:`insert-only`,parts:`skip-existing`,preserveStreaming:`assistant`,protectOptimistic:`none`}),Js=Gs.initial;function Ys(e){let t=Gs[e.purpose]??Js;return!e.stale||t.onStale===`drop`?t:Ks}function Xs(e,t){return e.preserveStreaming===`none`?!1:e.preserveStreaming===`all`||t===`assistant`}var Zs=e=>structuredClone(e),Qs=e=>({transport:e.transport,generation:e.generation,directory:e.directory,sessionID:e.sessionID});function $s(e){return JSON.stringify([e.transport,e.generation,e.directory,e.sessionID])}function ec(e,t){return JSON.stringify([e.transport,e.generation,e.directory,e.sessionID,t])}function tc(e){return JSON.stringify([e.transport,e.generation])}function nc(e,t){return e.created===t.created?e.messageID<t.messageID?-1:+(e.messageID>t.messageID):e.created-t.created}function rc(e){let t=e.time?.created;return{created:typeof t==`number`&&Number.isFinite(t)?t:0,messageID:e.id}}function ic(e){return Hs(e)}function ac(e){return Rs(e)?`slim`:`full`}function oc(e){return e.some(e=>Rs(e))?`slim`:`full`}var sc=e=>{if(typeof e!=`object`||!e)return e;if(Array.isArray(e))return e.map(sc);let t=e,n={};for(let e of Object.keys(t).sort()){let r=t[e];r!==void 0&&(n[e]=sc(r))}return n},cc=e=>{let t=new Uint8Array(e),n=``;for(let e of t)n+=e.toString(16).padStart(2,`0`);return n};async function lc(e,t){let n=JSON.stringify(sc({info:e,parts:t})),r=new TextEncoder().encode(n);return{hash:cc(await crypto.subtle.digest(`SHA-256`,r)),byteSize:r.byteLength}}var uc=e=>({scope:Qs(e.scope),messageID:e.messageID,info:Zs(e.info),parts:Zs(e.parts),partCompleteness:e.partCompleteness.slice(),completeness:e.completeness,contentHash:e.contentHash,byteSize:e.byteSize,lastAccessedAt:e.lastAccessedAt,sortKey:{created:e.sortKey.created,messageID:e.sortKey.messageID}}),dc=e=>{let t=0;return()=>{let n=e();return t=n>t?n:t+1,t}},fc=(e,t)=>{let n=t.slice().sort((e,t)=>nc(e.sortKey,t.sortKey)).map(uc);return{scope:Qs(e),records:n,byteSize:n.reduce((e,t)=>e+t.byteSize,0)}},pc=e=>Zs(e),mc=e=>Qs(e),hc=(e=Date.now)=>dc(e),gc=e=>uc(e),_c=(e,t)=>fc(e,t.slice());function vc(e){return ic(e.info)?e.existing?.completeness===`full`&&e.incomingCompleteness===`slim`?{status:`skipped`,reason:`slim-downgrade`}:e.incomingHash!==void 0&&e.existing?.contentHash===e.incomingHash?{status:`skipped`,reason:`unchanged`}:{status:`written`}:{status:`skipped`,reason:`not-settled`}}var yc=(e,t)=>e<t?-1:+(e>t),bc=[`text`,`output`],xc={pending:1,started:2,running:3,completed:4,error:4};function Sc(e,t){return e.filter(e=>!!e?.id&&!t.has(e.type)).sort((e,t)=>yc(e.id,t.id))}function Cc(e,t){if(!e||e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1){let r=e[n],i=t[n];if(!r||!i||r.id!==i.id||JSON.stringify(r)!==JSON.stringify(i))return!1}return!0}function wc(e){let t=e.state?.time?.end;if(typeof t==`number`)return t;let n=e.time?.end;return typeof n==`number`?n:void 0}function Tc(e,t){let n=e[t];return typeof n==`string`?n:void 0}function Ec(e){return wc(e)===void 0&&bc.some(t=>{let n=Tc(e,t);return typeof n==`string`&&n.length>0})}function Dc(e){let t=e.state;if(!(!t||typeof t!=`object`))return t}function Oc(e){let t=Dc(e)?.status;return typeof t==`string`?t:void 0}function kc(e){return e?xc[e]??0:0}function Ac(e,t){if(Ec(e))return!0;if(wc(e)===void 0){if(e.type===`tool`){let n=Oc(e);return n===`completed`||n===`error`?t:!0}return!0}return t}function jc(e){let t=e.state?.time;if(!t||typeof t!=`object`)return;let n=typeof t.start==`number`?t.start:void 0,r=typeof t.end==`number`?t.end:void 0;if(n!==void 0||r!==void 0)return{start:n,end:r}}function Mc(e){return!!e&&typeof e==`object`&&!Array.isArray(e)&&Object.keys(e).length>0}function Nc(e,t,n){if(e.type!==`tool`||t.type!==`tool`)return n;let r=Dc(e);if(!r)return n;let i=Dc(n)??{},a=Dc(t)??{},o={...i},s=!1,c=Oc(e),l=Oc(t);kc(c)>kc(l)&&c&&(o={...o,status:c},s=!0);let u=r.input,d=a.input;Mc(u)&&!Mc(d)&&(o={...o,input:u},s=!0);let f=r.output,p=a.output;typeof f==`string`&&f.length>0?(typeof p!=`string`||p.length<f.length)&&(typeof p!=`string`||p.length===0||f.startsWith(p))&&(o={...o,output:f},s=!0):f!==void 0&&p===void 0&&(o={...o,output:f},s=!0);let m=r.metadata;return Mc(m)&&!Mc(a.metadata)&&(o={...o,metadata:m},s=!0),s?n===t?{...t,state:o}:{...n,state:o}:n}function Pc(e,t){if(!e||wc(t)!==void 0)return t;let n=t;for(let r of bc){let i=Tc(e,r);if(!i)continue;let a=Tc(t,r);if(typeof a==`string`&&a.length>=i.length||typeof a==`string`&&a.length>0&&!i.startsWith(a))continue;n===t&&(n={...t});let o=n;o[r]=i}let r=jc(e);if(r){let e=jc(t),i=e?.start??r.start,a=e?.end??r.end;if(i!==e?.start||a!==e?.end){n===t&&(n={...t});let e=n;e.state={...n.state??{},time:{start:i,end:a}}}}return n=Nc(e,t,n),n}function Fc(e,t){if(!e||e.length===0||!t.some(e=>Rs(e)))return t;let n=new Map;for(let t of e)t.id&&!Rs(t)&&n.set(t.id,t);if(n.size===0)return t;let r=!1,i=t.map(e=>{if(!Rs(e)||!e.id)return e;let t=n.get(e.id);return t?(r=!0,t):e});return r?i:t}function Ic(e){return e.__openchamberOptimistic===!0}function Lc(e){return!!(e&&e.length>0&&e.some(Ic))}function Rc(e){return e.length===0||e.some(e=>Rs(e))}function zc(e,t,n,r,i,a){if(a===`keep-unless-full`&&e&&Lc(e)&&Rc(t))return e;let o=Fc(e,t);if(!e||e.length===0||!r)return o;let s=new Map(e.map(e=>[e.id,e])),c=o,l=!1;for(let e=0;e<o.length;e+=1){let t=o[e],n=Pc(s.get(t.id),t);n!==t&&(l||(c=[...o]),c[e]=n,l=!0)}let u=new Set(o.map(e=>e.id)),d=o.some(e=>Rs(e)),f=e.filter(e=>!!e?.id&&!u.has(e.id)&&!n.has(e.type)&&(Ac(e,i)||d&&!Rs(e)));return f.length===0?c:[...c,...f].sort((e,t)=>yc(e.id,t.id))}var Bc=e=>e,Vc=e=>{let t=Bc(e).finish;return typeof t==`string`&&t.length>0},Hc=e=>typeof Bc(e).time?.completed==`number`,Uc=e=>!!Bc(e).error;function Wc(e,t){let n=Bc(t),r=n.finish,i=n.time?.completed,a=n.error,o=!Vc(e)&&typeof r==`string`&&r.length>0,s=!Hc(e)&&typeof i==`number`,c=!Uc(e)&&!!a;if(!o&&!s&&!c)return e;let l={...e};return o&&(l.finish=r),s&&(l.time={...Bc(e).time,completed:i}),c&&(l.error=a),l}function Gc(e,t,n,r){if(t.length===0)return e;let i=new Map(t.map(e=>[e.id,e])),a=!1,o=[];for(let t of e){let e=n(t,i.get(t.id));e!==t&&(a=!0),o.push(e)}let s=new Set(e.map(e=>e.id)),c=t.filter(e=>!s.has(e.id));if(c.length===0)return a?o:e;if(!t.some(e=>s.has(e.id)))return r===`prepend`?[...c,...o]:r===`by-created`?Kc(o,c):[...o,...c];let l=-1;for(let e of t){let t=o.findIndex(t=>t.id===e.id);if(t>=0){l=t;continue}l+=1,o.splice(l,0,e)}return o}function Kc(e,t){let n=e.slice();for(let e of t){let t=rc(e),r=n.length;for(let e=0;e<n.length;e+=1)if(nc(t,rc(n[e]))<0){r=e;break}n.splice(r,0,e)}return n}function qc(e,t,n){return Gc(e,t,(e,t)=>t?Wc(e,t):e,n)}function Jc(e,t,n){return Gc(e,t,(e,t)=>!t||JSON.stringify(e)===JSON.stringify(t)?e:Ms(e,t),n)}function Yc(e,t,n,r={}){let i=r.skipPartTypes??new Set,a=r.merge??Js,o=r.placeUnanchoredNewMessages??`append`,s=n.filter(e=>!!e?.info?.id),c=s.map(e=>e.info),l=e.message[t],u=l??[],d=a.messages===`upsert`?Jc(u,c,o):qc(u,c,o),f=d!==u||l===void 0&&s.length===0,p=!1,m={...e.part},h=a.parts===`skip-existing`;for(let e of s){let t=e.info.id;if(h&&m[t])continue;let n=e.info.role===`assistant`,r=m[t],o=zc(r,Sc(e.parts??[],i),i,Xs(a,e.info.role),Is(e.info),a.protectOptimistic);(r?Cc(r,o):o.length===0&&!n)||o.length===0&&!n||(m[t]=o,p=!0)}return{message:f?{...e.message,[t]:d}:e.message,part:p?m:e.part,messages:d,messagesChanged:f,partsChanged:p}}function Xc(e){if(typeof e.time?.completed==`number`)return!1;let t=e.finish;return!(typeof t==`string`&&t.length>0)}function Zc(e){let t=e.messages;if(!t)return{hasMessages:!1,renderable:!1,missingPartMessageIDs:[]};let n=t.length>0?t[t.length-1]?.id:void 0,r=[];for(let i of t)i.role===`assistant`&&(e.parts[i.id]||i.id===n&&Xc(i)||r.push(i.id));return{hasMessages:!0,renderable:r.length===0,missingPartMessageIDs:r}}var Qc=(e,t)=>e<t?-1:+(e>t);function $c(e){return e.filter(e=>!!e?.id).sort((e,t)=>Qc(e.id,t.id))}function el(e,t){if(t.length===0)return{...e,confirmed:[]};let n=[...e.session],r=new Map(e.part.map(e=>[e.id,$c(e.part)])),i=[];for(let e of t){if(n.findIndex(t=>t.id===e.message.id)<0){n.push(e.message),r.set(e.message.id,$c(e.parts));continue}let t=r.get(e.message.id);if(t&&t.length>0){i.push(e.message.id);continue}r.set(e.message.id,$c(e.parts))}return{cursor:e.cursor,complete:e.complete,session:n,part:[...r.entries()].sort((e,t)=>Qc(e[0],t[0])).map(([e,t])=>({id:e,part:t})),confirmed:i}}var tl={kind:`unknown`,loadedTurns:0},nl=3e4,rl=12e5,il={project:``,projectMeta:void 0,icon:void 0,provider:{all:[],connected:[],default:{}},config:{},path:{state:``,config:``,worktree:``,directory:``,home:``},status:`loading`,agent:[],command:[],session:[],sessionTotal:0,session_status:{},session_status_observed_at:{},session_status_snapshot_at:void 0,session_diff:{},todo:{},permission:{},question:{},mcp:{},lsp:[],vcs:void 0,limit:20},al={ready:!1,path:{state:``,config:``,worktree:``,directory:``,home:``},projects:[],providers:{all:[],connected:[],default:{}},providerAuth:{},config:{},reload:void 0,sessionTodo:{}};function ol(e,t){return e===void 0||t===void 0?!1:t>e}var sl=class extends Error{};function cl(e,t,n){if(n===`reconcile-page`)return e??tl;let r=0;typeof t.turnCount==`number`&&Number.isFinite(t.turnCount)?r=Math.max(0,Math.floor(t.turnCount)):typeof t.requestedTurnLimit==`number`&&Number.isFinite(t.requestedTurnLimit)?r=Math.max(0,Math.floor(t.requestedTurnLimit)):t.records.length>0&&(r=1);let i=e?.loadedTurns??0,a=n===`prepend`?i+r:r;if(t.complete)return{kind:`exhausted`,loadedTurns:a};let o=typeof t.cursor==`string`&&t.cursor.length>0?t.cursor:void 0;if(!o)throw new sl(`session message page: complete=false requires non-empty cursor`);if(t.records.length===0)throw new sl(`session message page: complete=false with zero records makes no progress`);if(n===`prepend`&&e?.kind===`has-more`&&e.cursor===o)throw new sl(`session message page: prepend returned the same cursor without progress`);return{kind:`has-more`,cursor:o,loadedTurns:a}}function ll(e,t){return!e||!t?e===t:e.kind!==t.kind||e.loadedTurns!==t.loadedTurns?!1:e.kind===`has-more`&&t.kind===`has-more`?e.cursor===t.cursor:!0}function ul(e,t,n,r){let i=ol(r.capturedRevision,r.liveRevision),a=Ys({purpose:r.purpose,stale:i}),o=e.session_history_boundary?.[t];if(!n.ok)return{applied:!1,merge:a,changed:!1,messagesChanged:!1,partsChanged:!1,boundaryChanged:!1,message:e.message,part:e.part,messages:e.message[t]??[],boundary:void 0,meta:void 0,confirmedOptimisticIDs:[],commands:[],error:n.error};if(i&&a.onStale===`drop`){let n=e.message[t]??[];if(n.length>0)return{applied:!1,merge:a,changed:!1,messagesChanged:!1,partsChanged:!1,boundaryChanged:!1,message:e.message,part:e.part,messages:n,boundary:void 0,meta:void 0,confirmedOptimisticIDs:[],commands:[]}}let s=r.optimistic??[],c=el({session:n.records.map(e=>e.info),part:n.records.map(e=>({id:e.info.id,part:e.parts??[]})),cursor:n.cursor,complete:n.complete},s),l=Yc(e,t,c.session.map(e=>({info:e,parts:c.part.find(t=>t.id===e.id)?.part??[]})),{skipPartTypes:r.skipPartTypes,merge:a,placeUnanchoredNewMessages:r.purpose===`prepend`?`prepend`:r.purpose===`reconcile-page`?`by-created`:`append`}),u;try{u=cl(o,{ok:!0,records:n.records,cursor:c.cursor,complete:c.complete,turnCount:n.turnCount,requestedTurnLimit:n.requestedTurnLimit},r.purpose)}catch(n){if(!(n instanceof sl))throw n;return{applied:!1,merge:a,changed:!1,messagesChanged:!1,partsChanged:!1,boundaryChanged:!1,message:e.message,part:e.part,messages:e.message[t]??[],boundary:void 0,meta:void 0,confirmedOptimisticIDs:[],commands:[],error:n.message}}let d=!ll(o,u),f=l.messagesChanged,p=l.partsChanged,m=f||p||d,h=[];c.confirmed.length>0&&h.push({type:`clear-optimistic`,messageIDs:c.confirmed});let g=d||!o?u:o;return{applied:!0,merge:a,changed:m,messagesChanged:f,partsChanged:p,boundaryChanged:d,message:l.message,part:l.part,messages:l.messages,boundary:g,meta:{limit:g.loadedTurns,cursor:g.kind===`has-more`?g.cursor:void 0,complete:g.kind===`exhausted`},confirmedOptimisticIDs:c.confirmed,commands:h}}var dl=new Set([`tool`,`reasoning`,`file`,`text`]),fl=new Set([`tool`,`reasoning`,`file`]);function pl(e){return e.some(e=>Rs(e)&&dl.has(e.type))}function ml(e,t){let n=!1,r=!1;for(let t of e)fl.has(t.type)&&(n=!0,Rs(t)&&(r=!0));return n?r?!0:t?Is(t):!1:!1}var hl=e=>{if(!e)return``;let t=e.clientRole??e.role;return typeof t==`string`?t:``};function gl(e,t){return!e?.id||hl(e)!==`user`?!1:!t||t.length===0||!t.some(e=>e.type===`subtask`||e.type===`compaction`)}function _l(e){let t=0;for(let n of e.messageOrder)gl(e.messagesByID[n],e.partsByMessageID[n])&&(t+=1);return t}var vl=(e,t)=>{let n=e.messageOrder.lastIndexOf(t);if(n<0)return[];let r=[];for(let i=n+1;i<e.messageOrder.length;i+=1){let n=e.messageOrder[i],a=e.messagesByID[n];if(!a)continue;if(gl(a,e.partsByMessageID[n]))break;if(hl(a)!==`assistant`)continue;let o=a.parentID;typeof o==`string`&&o.length>0&&o!==t||r.push(a)}return r},yl=(e,t)=>Is(e)?!0:Array.isArray(t)&&t.length>0;function bl(e){let t;for(let n=e.messageOrder.length-1;n>=0;--n){let r=e.messageOrder[n];if(gl(e.messagesByID[r],e.partsByMessageID[r])){t=r;break}}return t?vl(e,t).some(t=>yl(t,e.partsByMessageID[t.id])):!1}function xl(e){return e.materializeActive?`p2`:e.prependActive||e.earlierHistoryLoaded?`p1`:e.p0Satisfied?`p0`:`idle`}var Sl=new Set([`stop`,`length`]);function Cl(e){let t=e.messageOrder[e.messageOrder.length-1];if(!t)return!1;let n=e.messagesByID[t];if(!n||hl(n)!==`assistant`||n.error)return!1;let r=n.finish;return typeof r!=`string`||!Sl.has(r)?!1:typeof n.time?.completed!=`number`}function wl(e,t){return t.kind===`has-more`?{sessionID:e,boundary:t,hasPreviousPage:!0,isComplete:!1,cursor:t.cursor,loadedTurns:t.loadedTurns}:t.kind===`exhausted`?{sessionID:e,boundary:t,hasPreviousPage:!1,isComplete:!0,cursor:null,loadedTurns:t.loadedTurns}:{sessionID:e,boundary:t,hasPreviousPage:!1,isComplete:!1,cursor:null,loadedTurns:t.loadedTurns}}function Tl(e){let t={},n={},r=[];for(let i of e.messages){if(!i?.id)continue;r.push(i.id),t[i.id]=i;let a=e.parts[i.id];a&&(n[i.id]=a)}return{sessionID:e.sessionID,messageOrder:r,messagesByID:t,partsByMessageID:n,boundary:e.boundary,liveRevision:e.liveRevision??0}}var El=[`message.updated`,`message.removed`,`message.part.updated`,`message.part.removed`,`message.part.delta`];function Dl(e){return El.includes(e)}function Ol(e){return e.trim()}function kl(e){return`${Ol(e.directory)}\n${e.sessionID}`}function Al(e,t){return e.session_history_boundary?.[t]??tl}function jl(e){return e.filter(e=>!!e?.id).slice().sort((e,t)=>e.id<t.id?-1:+(e.id>t.id))}function Ml(e,t){return e.kind!==t.kind||e.loadedTurns!==t.loadedTurns?!1:e.kind===`has-more`&&t.kind===`has-more`?e.cursor===t.cursor:!0}function Nl(e,t,n){n.applied&&e.setState(e=>{let r={};if(n.messagesChanged&&(r.message=n.message),n.partsChanged&&(r.part=n.part),n.boundary&&(n.boundaryChanged||!e.session_history_boundary?.[t]))r.session_history_boundary={...e.session_history_boundary??{},[t]:n.boundary};else if(n.boundary&&n.boundaryChanged===!1){let i=e.session_history_boundary?.[t];(!i||!Ml(i,n.boundary))&&(r.session_history_boundary={...e.session_history_boundary??{},[t]:n.boundary})}return!r.message&&!r.part&&!r.session_history_boundary&&n.boundary&&(r.session_history_boundary={...e.session_history_boundary??{},[t]:n.boundary}),!r.message&&!r.part&&!r.session_history_boundary?{}:r})}function Pl(e,t,n){let r=e.getState(),i=n.page,a=ul(r,t,{ok:!0,records:i.records.map(e=>({info:e.info,parts:e.parts?[...e.parts]:[]})),cursor:i.cursor,complete:i.complete,turnCount:i.turnCount,requestedTurnLimit:i.requestedTurnLimit},{purpose:n.purpose,skipPartTypes:n.skipPartTypes,optimistic:n.optimistic?n.optimistic.map(e=>({message:e.message,parts:[...e.parts]})):void 0,capturedRevision:n.capturedLiveRevision,liveRevision:n.liveRevision});return a.applied?(Nl(e,t,a),{applied:!0,changed:a.changed,boundary:a.boundary,meta:a.meta,confirmedOptimisticIDs:a.confirmedOptimisticIDs}):{applied:!1,changed:!1,error:a.error}}function Fl(e,t){if(t.length===0)return{applied:!1,changed:!1};let n=e.getState(),r={message:{...n.message??{}},part:{...n.part??{}}},i=!1,a=!1,o;for(let e of t){if(!Dl(e.type))continue;i=!0;let t=Fs(r,e),n=typeof t==`boolean`?t:t.changed,s=typeof t==`boolean`?void 0:t.materialization;s&&!o&&(o=s),n&&(a=!0)}return i?a?(e.setState({message:r.message,part:r.part}),{applied:!0,changed:!0,...o?{materialization:o}:{}}):{applied:!0,changed:!1,...o?{materialization:o}:{}}:{applied:!1,changed:!1}}function Il(e,t){return Fl(e,[t.event])}function Ll(e,t){return Fl(e,t.events)}function Rl(e,t,n){if(n.records.length===0)return{applied:!1,changed:!1};let r=e.getState(),i=Yc({message:r.message??{},part:r.part??{}},t,n.records.map(e=>({info:e.info,parts:e.parts?[...e.parts]:[]})),{skipPartTypes:n.skipPartTypes,merge:n.merge});return!i.messagesChanged&&!i.partsChanged?{applied:!0,changed:!1}:(e.setState({...i.messagesChanged?{message:i.message}:{},...i.partsChanged?{part:i.part}:{}}),{applied:!0,changed:!0})}function zl(e,t,n){let r=e.getState(),i=r.message?.[t],a=r.part?.[n]!==void 0;if(!i&&!a)return{applied:!0,changed:!1};let o={...r.message??{}},s=!1;if(i){let e=[...i],r=e.findIndex(e=>e.id===n);r>=0&&(e.splice(r,1),o[t]=e,s=!0)}let c={...r.part??{}},l=!1;return c[n]!==void 0&&(delete c[n],l=!0),!s&&!l?{applied:!0,changed:!1}:(e.setState({...s?{message:o}:{},...l?{part:c}:{}}),{applied:!0,changed:!0})}function Bl(e,t,n,r,i){r.setOptimisticShadow?.({directory:i,sessionID:t,message:n.message,parts:n.parts});let a=e.getState(),o={...a.message??{}},s={...a.part??{}},c=o[t]?[...o[t]]:[];return c.some(e=>e.id===n.message.id)||c.push(n.message),o[t]=c,s[n.message.id]=jl(n.parts),e.setState({message:o,part:s}),{applied:!0,changed:!0}}function Vl(e,t,n,r,i){r.clearOptimisticShadow?.({directory:i,sessionID:t,messageID:n});let a=e.getState(),o={...a.message??{}},s={...a.part??{}},c=!1,l=o[t];if(l){let e=[...l],r=e.findIndex(e=>e.id===n);r>=0&&(e.splice(r,1),o[t]=e,c=!0)}return s[n]!==void 0&&(delete s[n],c=!0),c&&e.setState({message:o,part:s}),{applied:!0,changed:c}}function Hl(e,t,n,r){return n.clearOptimisticShadow?.({directory:r,sessionID:e,messageID:t}),{applied:!0,changed:!1}}function Ul(e,t){let n=e.getState(),r=n.message?.[t],i=n.session_history_boundary?.[t],a=!!(r&&r.length>0),o=i!==void 0,s=new Set;if(r)for(let e of r)e?.id&&s.add(e.id);let c=!1,l={...n.part??{}};for(let e of s)l[e]!==void 0&&(delete l[e],c=!0);for(let[e,n]of Object.entries(l))s.has(e)||n?.some(e=>e.sessionID===t)&&(delete l[e],c=!0);if(!a&&!o&&!c)return!1;let u={...n.message??{}};delete u[t];let d={...n.session_history_boundary??{}};return delete d[t],e.setState({message:u,part:l,session_history_boundary:d}),!0}function Wl(e,t,n){let r=Ul(e,t);if(!n.page)return{applied:!0,changed:r};let i=Pl(e,t,{type:`http-page`,purpose:`initial`,page:n.page,capturedLiveRevision:n.capturedLiveRevision,liveRevision:n.liveRevision,skipPartTypes:n.skipPartTypes});return{...i,changed:r||i.changed,applied:i.applied||r}}function Gl(e){let t=new Map,n=new Map,r=r=>{let i=kl(r);if(n.has(i))return;let a=Ol(r.directory),o=e.getStore(a),s=r.sessionID,c=o.getState().message?.[s],l=Al(o.getState(),s),u=new Map;for(let e of c??[])u.set(e.id,o.getState().part?.[e.id]);let d=o.subscribe(e=>{let n=e.message?.[s],a=Al(e,s),o=!1,d=new Map;for(let t of n??[]){let n=e.part?.[t.id];d.set(t.id,n),u.get(t.id)!==n&&(o=!0)}u.size!==d.size&&(o=!0);let f=n!==c,p=Ml(a,l);if(c=n,l=a,u=d,!f&&!o&&p)return;let m=t.get(i);if(!(!m||m.size===0))for(let e of m)e(r)});n.set(i,d)},i=e=>{let r=t.get(e);if(r&&r.size>0)return;let i=n.get(e);i&&(i(),n.delete(e)),t.delete(e)},a={getTranscript(t){let n=Ol(t.directory),r=e.getStore(n).getState(),i=t.sessionID,a=r.message?.[i]??[],o=e.getLiveRevision?.(n,i)??0;return Tl({sessionID:i,messages:a,parts:r.part??{},boundary:Al(r,i),liveRevision:o})},getPagination(t){let n=Ol(t.directory),r=e.getStore(n).getState();return wl(t.sessionID,Al(r,t.sessionID))},getRequestState(t){let n=Ol(t.directory);return e.getRequestState?.(n,t.sessionID)??{sessionID:t.sessionID,status:`idle`}},getHydrationState(e){let t=a.getTranscript(e),n=bl(t);return{sessionID:e.sessionID,p0Satisfied:n,phase:xl({p0Satisfied:n,earlierHistoryLoaded:_l(t)>1})}},getMessage(e,t){return a.getTranscript(e).messagesByID[t]},getParts(t,n){let r=Ol(t.directory);return e.getStore(r).getState().part?.[n]??[]},hasSession(t){let n=Ol(t.directory),r=e.getStore(n).getState().message;return r?Object.prototype.hasOwnProperty.call(r,t.sessionID):!1},apply(t,n){let r=Ol(t.directory),i=e.getStore(r),a=t.sessionID;switch(n.type){case`http-page`:return Pl(i,a,n);case`sse-event`:return Il(i,n);case`sse-event-batch`:return Ll(i,n);case`optimistic-add`:return Bl(i,a,n,e,r);case`optimistic-confirm`:return Hl(a,n.messageID,e,r);case`optimistic-remove`:return Vl(i,a,n.messageID,e,r);case`reset`:return Wl(i,a,n);case`materialize-snapshots`:return Rl(i,a,n);case`remove-message`:return zl(i,a,n.messageID);default:return{applied:!1,changed:!1}}},subscribe(e,n){let a=kl(e),o=t.get(a);return o||(o=new Set,t.set(a,o)),o.add(n),r(e),()=>{let e=t.get(a);e&&(e.delete(n),i(a))}}};return a}var Kl=new Set,ql=new Set;function Jl(e,t){return`${e}\n${t}`}function Yl(){for(let e of ql)e()}function Xl(e,t){!e||!t||(Kl.add(Jl(e,t)),Yl())}function Zl(e,t){!e||!t||Kl.delete(Jl(e,t))&&Yl()}function Ql(e,t){if(!e)return!1;if(t)return Kl.has(Jl(t,e));let n=`\n${e}`;for(let e of Kl)if(e.endsWith(n))return!0;return!1}function $l(e){return ql.add(e),()=>{ql.delete(e)}}var eu=[],tu=new Map,nu=new Map,ru=0,iu=()=>{let e=eu.findIndex(e=>e.priority===`user`);if(e>=0){let[t]=eu.splice(e,1);return t}return eu.shift()},au=()=>{for(;ru<4;){let e=iu();if(!e)return;tu.delete(e.key),ru+=1,Promise.resolve().then(()=>e.run()).then(t=>{e.resolve(t)},t=>{e.reject(t)}).finally(()=>{--ru,nu.delete(e.key),au()})}};function ou(e,t,n){let r=n?.priority??`background`,i=nu.get(e);if(i){let t=tu.get(e);return t&&r===`user`&&t.priority!==`user`&&(t.priority=`user`),i}let a,o,s=new Promise((e,t)=>{a=e,o=t}),c={key:e,priority:r,run:()=>t(),resolve:e=>{a(e)},reject:o};return eu.push(c),tu.set(e,c),nu.set(e,s),au(),s}var su=null,cu=0,lu=new Set;function uu(){cu+=1;for(let e of lu)e()}function du(e){return e}function fu(e){return lu.add(e),()=>{lu.delete(e)}}function pu(){return cu}function mu(e){return su?.repository===e?e:(su={kind:`query`,repository:e},uu(),e)}function hu(){su&&(su=null,uu())}function H(){return su?.repository??null}function gu(){let e=H();if(!e)throw Error(`TranscriptRepository is not bound — SyncProvider must mount first`);return e}function _u(e,t){let n=H();if(n)return n;let r=du(t);return Gl({getStore:e=>r})}function U(e,t,n){return{directory:e.trim(),sessionID:t,...n?.transport===void 0?{}:{transport:n.transport},...n?.generation===void 0?{}:{generation:n.generation}}}function vu(e){try{let t=H(),n=r(),i=s();return t?.getCacheBudget?.().listCanonical({transport:n,generation:i})?.filter(t=>t.scope.sessionID===e).map(e=>U(e.scope.directory,e.scope.sessionID,{transport:e.scope.transport,generation:e.scope.generation}))??[]}catch{return[]}}function yu(e,t){let n=H();return n?n.apply(e,t):null}async function bu(e,t){let n=gu();if(typeof n.fetchPreviousPage!=`function`)throw Error(`TranscriptRepository does not support fetchPreviousPage`);await n.fetchPreviousPage(U(e,t))}async function xu(e,t){let n=gu();if(typeof n.ensureInitial!=`function`)throw Error(`TranscriptRepository does not support ensureInitial`);await n.ensureInitial(U(e,t))}async function Su(e,t){let n=gu(),r=U(e,t);if(typeof n.destructiveReset==`function`){await n.destructiveReset(r);return}if(typeof n.ensureInitial!=`function`)throw Error(`TranscriptRepository does not support retryInitial`);await n.ensureInitial(r)}async function Cu(e,t){let n=gu();if(typeof n.refreshFromAuthority!=`function`)throw Error(`TranscriptRepository does not support refreshFromAuthority`);Xl(e,t);try{await n.refreshFromAuthority(U(e,t))}finally{Zl(e,t)}}async function wu(e,t,n,r){let i=gu();if(typeof i.materializeMessage!=`function`)throw Error(`TranscriptRepository does not support materializeMessage`);let a=U(e,t);await ou(`${e}\n${t}\n${n}`,()=>i.materializeMessage(a,n),{priority:r?.priority??`background`})}function Tu(e,t,n){let r=H();return!r||typeof r.getMessageMaterializationState!=`function`?{sessionID:t,messageID:n,status:`idle`}:r.getMessageMaterializationState(U(e,t),n)}function Eu(e,t){H()?.purgeSession?.(U(e,t))}var Du=null;function Ou(e){Du&&Du!==e&&Du.cancelAll(`reregister`),Du=e}function ku(e){Du?.captureCheckpoints(e)}function Au(e){Du?.onCompensation(e)}async function ju(e){return Du?Du.ensureOnObserve(e):null}function Mu(e){Du?.cancelAll(e)}var W=e(Ne(),1),Nu=[],Pu=[],Fu={sessionID:``,messageOrder:[],messagesByID:{},partsByMessageID:{},boundary:tl,liveRevision:0};wl(``,tl);var Iu={sessionID:``,phase:`idle`,p0Satisfied:!1};function Lu(e,t){return _u(e,t)}var Ru=new Set;function zu(e,t){return`${e}\n${t}`}function Bu(e,t){if(!t)return;let n=zu(e,t);Ru.has(n)||(Ru.add(n),ju(U(e,t)).catch(()=>{}).finally(()=>{Ru.delete(n)}))}function Vu(e,t){if(e&&t){Ru.delete(zu(e,t));return}Ru.clear()}function Hu(e,t,n,r,i=Object.is,a){let o=(0,W.useRef)(r);o.current=r;let s=(0,W.useRef)(i);s.current=i;let c=(0,W.useRef)(void 0),l=a?.enabled!==!1,u=(0,W.useCallback)(()=>{if(!e||!l){let e=o.current(Fu);return(c.current===void 0||!s.current(c.current,e))&&(c.current=e),c.current}let r=Lu(t,n).getTranscript(U(t,e)),i=o.current(r);return(c.current===void 0||!s.current(c.current,i))&&(c.current=i),c.current},[t,l,e,n]),d=(0,W.useCallback)(r=>{if(!e||!l)return()=>void 0;Bu(t,e);let i=Lu(t,n).subscribe(U(t,e),()=>{r()}),a=fu(()=>{i(),c.current=void 0,Vu(t,e),Bu(t,e),i=Lu(t,n).subscribe(U(t,e),()=>{r()}),r()});return()=>{a(),i()}},[t,l,e,n]);return W.useSyncExternalStore(d,u,u)}function Uu(e,t){if(e.messageOrder.length===0)return Nu;if(t&&t.length>0){let n=!0,r=0;for(let i of e.messageOrder){let a=e.messagesByID[i];if(a){if(r>=t.length||t[r]!==a){n=!1;break}r+=1}}if(n&&r===t.length)return t}let n=[];for(let t of e.messageOrder){let r=e.messagesByID[t];r&&n.push(r)}return n}function Wu(e,t){return e.messageOrder.length===0?t?.resolved===!0?Zc({messages:Nu,parts:e.partsByMessageID}):{hasMessages:!1,renderable:!1,missingPartMessageIDs:[]}:Zc({messages:Uu(e),parts:e.partsByMessageID})}function Gu(e,t,n,r){let i=(0,V.c)(4),a;return i[0]!==t||i[1]!==e||i[2]!==n?(a=r=>{if(!e)return{hasMessages:!1,renderable:!1,missingPartMessageIDs:[]};let i=Lu(t,n).hasSession?.(U(t,e));return Wu(r,{resolved:i===!0||void 0})},i[0]=t,i[1]=e,i[2]=n,i[3]=a):a=i[3],Hu(e,t,n,a,Ku,r)}function Ku(e,t){return e.hasMessages===t.hasMessages&&e.renderable===t.renderable&&e.missingPartMessageIDs.length===t.missingPartMessageIDs.length&&e.missingPartMessageIDs.every((e,n)=>e===t.missingPartMessageIDs[n])}function qu(e,t,n,r){return Hu(e,t,n,Yu,Ju,r)}function Ju(e,t){if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(e[n]!==t[n])return!1;return!0}function Yu(e){return Uu(e)}function Xu(e,t,n){return Hu(e,t,n,Qu,Zu)}function Zu(e,t){return e===t?!0:!e||!t?!1:e.id===t.id&&e.role===t.role&&e.timestamp===t.timestamp}function Qu(e){if(e.messageOrder.length===0)return null;let t=e.messageOrder[e.messageOrder.length-1],n=t?e.messagesByID[t]:void 0;if(!n?.id)return null;let r=n.time;return{id:n.id,role:typeof n.role==`string`?n.role:``,timestamp:r?.completed??r?.created??0}}function $u(e,t){if(e===t)return!0;if(e.sessionID!==t.sessionID||e.liveRevision!==t.liveRevision||e.boundary.kind!==t.boundary.kind||e.boundary.loadedTurns!==t.boundary.loadedTurns||e.boundary.kind===`has-more`&&t.boundary.kind===`has-more`&&e.boundary.cursor!==t.boundary.cursor||e.messageOrder.length!==t.messageOrder.length)return!1;for(let n=0;n<e.messageOrder.length;n+=1){let r=e.messageOrder[n];if(r!==t.messageOrder[n]||e.messagesByID[r]!==t.messagesByID[r]||e.partsByMessageID[r]!==t.partsByMessageID[r])return!1}return!0}function ed(e,t,n,r){return Hu(e,t,n,td,$u,r)}function td(e){return e}function nd(e,t,n,r){if(e.length===0)return()=>void 0;let i=[],a=()=>{for(let e of i)e();i=[]},o=()=>{let r=new Set;for(let a of e){let e=`${a.directory}\n${a.sessionID}`;if(r.has(e))continue;r.add(e);let o=H();if(o){i.push(o.subscribe(U(a.directory,a.sessionID),t));continue}let s=n?.(a.directory);if(!s)continue;let c=_u(a.directory,s);i.push(c.subscribe(U(a.directory,a.sessionID),t))}},s=()=>{a(),o(),t()};o();let c=fu(s),l=r?.subscribeRebuild?.(s);return()=>{l?.(),c(),a()}}function rd(e,t){return e.length===0?``:e.map(e=>{let n=hd(e.directory,e.sessionID,t?.(e.directory)),r=n[n.length-1];return`${e.sessionID}:${r?.id??``}:${r?.role??``}:${r?.time?.completed??``}`}).join(`\0`)}function id(e,t,n){return Hu(e,t,n,ad)}function ad(e){return e.messageOrder.length}function od(e,t,n){let r=(0,V.c)(8),i=(0,W.useRef)(!1),a;r[0]!==t||r[1]!==e||r[2]!==n?(a=()=>{if(!e)return i.current=!1,!1;let r=Lu(t,n),a=r.hasSession?.(U(t,e))??r.getTranscript(U(t,e)).messageOrder.length>0;return i.current=a,i.current},r[0]=t,r[1]=e,r[2]=n,r[3]=a):a=r[3];let o=a,s;r[4]!==t||r[5]!==e||r[6]!==n?(s=r=>e?Lu(t,n).subscribe(U(t,e),()=>{r()}):sd,r[4]=t,r[5]=e,r[6]=n,r[7]=s):s=r[7];let c=s;return W.useSyncExternalStore(c,o,o)}function sd(){}function cd(e,t,n,r){let i=(0,V.c)(10),a=(0,W.useRef)(void 0),o;i[0]!==t||i[1]!==e||i[2]!==r||i[3]!==n?(o=()=>{if(!e)return a.current=Pu,Pu;let i=Lu(t,n),o=r||e,s=i.getParts(U(t,o),e),c=s.length===0?Pu:s;if(a.current===void 0||a.current!==c){if(a.current&&a.current.length===c.length&&a.current.every((e,t)=>e===c[t]))return a.current;a.current=c}return a.current},i[0]=t,i[1]=e,i[2]=r,i[3]=n,i[4]=o):o=i[4];let s=o,c;i[5]!==t||i[6]!==e||i[7]!==r||i[8]!==n?(c=i=>{if(!e)return ud;let a=Lu(t,n);return r?a.subscribe(U(t,r),()=>{i()}):ld},i[5]=t,i[6]=e,i[7]=r,i[8]=n,i[9]=c):c=i[9];let l=c;return W.useSyncExternalStore(l,s,s)}function ld(){}function ud(){}function dd(e,t,n){let r=(0,V.c)(8),i=(0,W.useRef)(Iu),a;r[0]!==t||r[1]!==e||r[2]!==n?(a=()=>{if(!e)return i.current!==Iu&&(i.current=Iu),i.current;let r=Lu(t,n).getHydrationState?.(U(t,e))??{sessionID:e,phase:`idle`,p0Satisfied:!1},a=i.current;return a.sessionID===r.sessionID&&a.phase===r.phase&&a.p0Satisfied===r.p0Satisfied?a:(i.current=r,r)},r[0]=t,r[1]=e,r[2]=n,r[3]=a):a=r[3];let o=a,s;r[4]!==t||r[5]!==e||r[6]!==n?(s=r=>{if(!e)return fd;Bu(t,e);let a=Lu(t,n).subscribe(U(t,e),()=>{r()}),o=fu(()=>{a(),i.current=Iu,Vu(t,e),Bu(t,e),a=Lu(t,n).subscribe(U(t,e),()=>{r()}),r()});return()=>{o(),a()}},r[4]=t,r[5]=e,r[6]=n,r[7]=s):s=r[7];let c=s;return W.useSyncExternalStore(c,o,o)}function fd(){}function pd(e,t,n){let r=(0,V.c)(2),i;return r[0]===e?i=r[1]:(i=t=>wl(e,t.boundary),r[0]=e,r[1]=i),Hu(e,t,n,i,md)}function md(e,t){return e.sessionID===t.sessionID&&e.hasPreviousPage===t.hasPreviousPage&&e.isComplete===t.isComplete&&e.cursor===t.cursor&&e.loadedTurns===t.loadedTurns&&e.boundary.kind===t.boundary.kind&&e.boundary.loadedTurns===t.boundary.loadedTurns&&(e.boundary.kind!==`has-more`||t.boundary.kind!==`has-more`||e.boundary.cursor===t.boundary.cursor)}function hd(e,t,n){if(!t)return[];let r=H();if(r){let n=r.getTranscript(U(e,t));return n.messageOrder.map(e=>n.messagesByID[e]).filter(e=>!!e)}if(!n)return[];let i=_u(e,n).getTranscript(U(e,t));return i.messageOrder.map(e=>i.messagesByID[e]).filter(e=>!!e)}var gd=null,_d=``,vd=null,yd=new Set,bd=null,xd=new Map,Sd=new Map;function Cd(e,t,n,r){gd=t,bd!==t&&(bd=null,xd=new Map,Sd=new Map),_d=n,r&&(vd=r)}function wd(e,t){vd?.(e,t)}function Td(){if(!gd)throw Error(`ChildStoreManager not initialized — is SyncProvider mounted?`);return gd}function Ed(e){let t=gd;if(!t)return;let n=e||_d;if(n)return t.getState(n)}function Dd(e){let t=Ed(e)?.config;return t&&Object.keys(t).length>0?t:void 0}function Od(e){return yd.add(e),()=>{yd.delete(e)}}function kd(e,t){if(e)for(let n of yd)n(e,t)}function Ad(e){return Ed(e)?.session??[]}function jd(){return Array.from(Md().values())}function Md(){let e=gd;if(!e)return Sd;let t=bd!==e||xd.size!==e.children.size;for(let[n,r]of e.children)if(xd.get(n)!==r.getState().session){t=!0;break}if(!t)return Sd;let n=new Map,r=new Map;for(let[t,i]of e.children){let e=i.getState().session;n.set(t,e);for(let t of e)t?.id&&r.set(t.id,t)}return bd=e,xd=n,Sd=r,Sd}function Nd(e,t,n){if(n){let r=[];for(let[i,a]of n)if(a.session.some(t=>t.id===e)&&a.hasTranscript===!0){if(i===t)return i;r.push(i)}return r.length===1?r[0]:void 0}let r=[];try{let n=H();if(gd){for(let[i,a]of gd.children)if(a.getState().session.some(t=>t.id===e)&&(n??_u(i,a)).hasSession?.(U(i,e))){if(i===t)return i;r.push(i)}}if(r.length===0&&n){let i=n.getCacheBudget?.().listCanonical();if(i){for(let n of i)if(n.scope.sessionID===e){if(n.scope.directory===t)return n.scope.directory;r.push(n.scope.directory)}}}}catch{}let i=[...new Set(r)];return i.length===1?i[0]:void 0}function Pd(e,t){if(!e)return[];try{let n=H(),r=t??_d;if(n){let t=n.getTranscript(U(r,e));return t.messageOrder.map(e=>t.messagesByID[e]).filter(e=>!!e)}if(gd){let t=gd.getChild(r);if(t){let n=_u(r,t).getTranscript(U(r,e));return n.messageOrder.map(e=>n.messagesByID[e]).filter(e=>!!e)}}}catch{}return[]}function Fd(e,t){if(!e)return[];try{let n=H(),r=t??_d;if(n)return[...n.getParts(U(r,e),e)];if(gd){let t=gd.getChild(r);if(t)return[..._u(r,t).getParts(U(r,e),e)]}}catch{}return[]}function Id(e,t){return Ed(t)?.session_status[e]}var Ld=`opencode`,Rd=`big-pickle`,zd=`__add_provider__`,Bd=`zen`,Vd=`big-pickle`,Hd=async(e,t)=>{z(`config.defaults:start`);let n=typeof performance<`u`?performance.now():Date.now(),r=(e,t)=>{let r=typeof performance<`u`?performance.now():Date.now();return z(`config.defaults:end`,{source:e,durationMs:Math.round(r-n),hasDefaultModel:!!t.defaultModel,hasDefaultAgent:!!t.defaultAgent}),t};try{let t=await me(e);return is({enabled:t?.responseStyleEnabled,preset:t?.responseStylePreset,customInstructions:t?.responseStyleCustomInstructions},e),r(`settings-bootstrap-query`,t)}catch(n){z(`config.defaults:error`,{error:n instanceof Error?n.message:String(n)});let i=I(e);return i&&is({enabled:i.responseStyleEnabled,preset:i.responseStylePreset,customInstructions:i.responseStyleCustomInstructions},e),r(i?`retained-settings-bootstrap`:`retained-store-settings`,i??t)}},Ud=e=>Zo(e),Wd=e=>e===zd?``:e??``,Gd=(e,t)=>e===zd?zd:t,Kd=e=>{if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0},qd=e=>{if(!Array.isArray(e))return[];let t=e.map(e=>{if(!$d(e))return e;let t=Array.isArray(e.models)?Object.fromEntries(e.models.map((e,t)=>[String(t),e])):e.models;return{...e,models:t}});try{return Yi({schemaVersion:1,providers:t,default:{},partial:!1}).providers.map(e=>({id:e.id,name:e.name,models:Object.values(e.models)}))}catch{return[]}},Jd=e=>{try{return Yi({schemaVersion:1,providers:[],default:e,partial:!1}).default}catch{return{}}},Yd=(e,t,n)=>{let r=e.find(e=>e.id===t);return r?r.models.some(e=>e.id===n):!1},Xd=({providers:e,currentProviderId:t,currentModelId:n,currentVariant:r,settingsDefaultModel:i,settingsDefaultVariant:a})=>{let o=(t,n,r)=>{if(!r)return;let i=e.find(e=>e.id===t)?.models.find(e=>e.id===n);return i?.variants&&Object.prototype.hasOwnProperty.call(i.variants,r)?r:void 0};if(t&&n&&Yd(e,t,n))return{providerId:t,modelId:n,variant:o(t,n,r)};if(i){let t=Ud(i);if(t&&Yd(e,t.providerId,t.modelId))return{providerId:t.providerId,modelId:t.modelId,variant:o(t.providerId,t.modelId,a)}}if(Yd(e,Ld,Rd))return{providerId:Ld,modelId:Rd};let s=e[0],c=s?.models[0];return s&&c?{providerId:s.id,modelId:c.id}:null},Zd=({agents:e,providers:t,projectDefaultModel:n,settingsDefaultAgent:r,settingsDefaultModel:i,settingsDefaultVariant:a,opencodeDefaultAgent:o,opencodeDefaultModel:s,projectLastUserSelection:c,globalLastUserSelection:l})=>{if(e.length===0)return{agentName:void 0};let u=(e,n,r)=>{if(!r)return;let i=t.find(t=>t.id===e)?.models.find(e=>e.id===n);return i?.variants&&Object.prototype.hasOwnProperty.call(i.variants,r)?r:void 0},d=n=>{if(!n)return null;let r=e.find(e=>e.name===n.agentName);return!r||!Io(r.mode)||r.hidden===!0||!Yd(t,n.providerId,n.modelId)?null:{agentName:r.name,providerId:n.providerId,modelId:n.modelId,variant:u(n.providerId,n.modelId,n.variant)}},f=d(c);if(f)return f;let p=d(l);if(p)return p;let m=e.filter(e=>Io(e.mode)),h;if(r&&(h=e.find(e=>e.name===r)),!h&&o){let t=e.find(e=>e.name===o);t&&Io(t.mode)&&t.hidden!==!0&&(h=t)}if(h||=m.find(e=>e.name===`build`)||m[0]||e[0],!h)return{agentName:void 0};let g,_,v,y=n||i;if(y){let e=Ud(y);e&&Yd(t,e.providerId,e.modelId)&&(g=e.providerId,_=e.modelId,v=u(g,_,n?void 0:a))}if(!g&&h.model?.providerID&&h.model?.modelID&&Yd(t,h.model.providerID,h.model.modelID)&&(g=h.model.providerID,_=h.model.modelID,v=u(g,_,h.variant)),!g&&s){let e=Ud(s);e&&Yd(t,e.providerId,e.modelId)&&(g=e.providerId,_=e.modelId)}if(!g)if(Yd(t,Ld,Rd))g=Ld,_=Rd;else{let e=t[0],n=e?.models[0];e&&n&&(g=e.id,_=n.id)}return{agentName:h.name,providerId:g,modelId:_,variant:v}},Qd=({providers:e,settingsZenModel:t})=>{let n=Kd(t);if(!Array.isArray(e)||e.length===0)return n?{providerId:Bd,modelId:n}:null;if(n&&Yd(e,Bd,n))return{providerId:Bd,modelId:n};if(Yd(e,Bd,Vd))return{providerId:Bd,modelId:Vd};let r=e.find(e=>e.id===Bd);if(r?.models.length){let e=Math.floor(Math.random()*r.models.length),t=Kd(r.models[e]?.id);if(t)return{providerId:Bd,modelId:t}}return null},$d=e=>typeof e==`object`&&!!e,ef=e=>{if(!e)return[];let t=[];return e.text&&t.push(`text`),e.audio&&t.push(`audio`),e.image&&t.push(`image`),e.video&&t.push(`video`),e.pdf&&t.push(`pdf`),t},tf=(e,t)=>({id:t.id,providerId:e,name:t.name,tool_call:t.capabilities?.toolcall,reasoning:t.capabilities?.reasoning,temperature:t.capabilities?.temperature,attachment:t.capabilities?.attachment,modalities:t.capabilities?{input:ef(t.capabilities.input),output:ef(t.capabilities.output)}:void 0,cost:t.cost?{input:t.cost.input,output:t.cost.output,cache_read:t.cost.cache?.read,cache_write:t.cost.cache?.write}:void 0,limit:t.limit,release_date:t.release_date}),nf=e=>new Promise(t=>setTimeout(t,e)),rf=800,af=async(e=rf)=>Promise.race([B.checkHealth().catch(()=>!1),nf(Math.max(1,e)).then(()=>!1)]),of=`__global__`,sf=e=>{let t=typeof e==`string`?e.trim():``;return t.length>0?t:of},cf=e=>e===of?null:e,lf=()=>typeof window>`u`?of:vf(B.getDirectory()??Ue.getState().currentDirectory),uf=`oc.worktreeProjectMap`,df=null,ff=()=>{if(df===null)try{let e=typeof localStorage<`u`?localStorage.getItem(uf):null;df=e?JSON.parse(e):{}}catch{df={}}return df},pf=(e,t)=>{if(!e||!t||e===t)return;let n=ff();if(n[e]!==t){n[e]=t;try{localStorage.setItem(uf,JSON.stringify(n))}catch{}}},mf=e=>{let t=_(e);return t===null?null:t||`/`},hf=()=>{try{return Si.getState().projects.map(e=>mf(e.path)).filter(e=>!!e)}catch{return[]}},gf=()=>{try{let{projects:e,activeProjectId:t}=Si.getState();return mf((t?e.find(e=>e.id===t):null)?.path??e[0]?.path??null)}catch{return null}},_f=e=>{let t=mf(e),n=hf();if(!t)return null;if(n.includes(t))return t;let r=mf(ff()[t]);if(r)return r;try{let e=mf(Xo(Si.getState().projects,$.getState().availableWorktreesByProject,t)?.path??null);if(e&&e!==t)return pf(t,e),e}catch{return null}return null},vf=e=>sf(_f(e)),yf=e=>vf(e),bf=1e3,xf=125e4,Sf=100,Cf=256,wf=new Set([`__proto__`,`prototype`,`constructor`]),Tf=/[\u0000-\u001F\u007F]/u,Ef=new TextEncoder,Df=e=>{let t=e.directoryScoped,n=e.activeDirectoryKey;if(!t||!n)return e;let r=t[n];if(!r)return e;let i={...e},a=e.providers&&e.providers.length>0?e.providers:r.providers;return i.providers=a,i.agents=[],i.defaultProviders=e.defaultProviders&&Object.keys(e.defaultProviders).length>0?e.defaultProviders:r.defaultProviders,i.currentProviderId=r.currentProviderId,i.currentModelId=r.currentModelId,i.currentVariant=r.currentVariant,i.currentAgentName=r.currentAgentName,i.selectedProviderId=r.selectedProviderId,i.agentModelSelections=r.agentModelSelections,i.lastSelectedAgentName=r.lastSelectedAgentName,i.lastUserSelection=r.lastUserSelection,i.opencodeDefaultAgent=r.opencodeDefaultAgent,i.opencodeDefaultModel=r.opencodeDefaultModel,i.selectionSource=r.selectionSource??`auto`,a.length>0&&r.providerCatalogPartial!==!0&&ea(null,{providers:a,defaultProviders:i.defaultProviders??{},providerCatalogPartial:!1}),i},Of=(e,t=!1)=>{if(typeof e!=`string`)return;let n=e.trim();if(!(n.length===0||n.length>Cf||t&&n!==e||Tf.test(n)||wf.has(n)))return n},kf=e=>{if(!$d(e))return{};let t=[];for(let[n,r]of Object.entries(e)){if(t.length>=Sf||!$d(r))continue;let e=Of(n,!0),i=Of(r.providerId),a=Of(r.modelId),o=Of(r.variant);!e||!i||!a||r.variant!==void 0&&!o||t.push([e,{providerId:i,modelId:a,...o?{variant:o}:{}}])}return Object.fromEntries(t)},Af=e=>{if(!$d(e))return;let t=Of(e.agentName,!0),n=Of(e.providerId),r=Of(e.modelId),i=Of(e.variant);if(!(!t||!n||!r||e.variant!==void 0&&!i))return{agentName:t,providerId:n,modelId:r,...i?{variant:i}:{}}},jf=(e,t)=>{if(!e)return;let n=t[e];if(n)return{agentName:e,providerId:n.providerId,modelId:n.modelId,...n.variant?{variant:n.variant}:{}}},Mf=(e,t,n)=>Af(e)??jf(t,n),Nf=(e=[],t=[])=>({providers:e,agents:t,currentProviderId:``,currentModelId:``,currentVariant:void 0,currentAgentName:void 0,selectedProviderId:``,agentModelSelections:{},lastSelectedAgentName:void 0,lastUserSelection:void 0,defaultProviders:{},providerCatalogPartial:!1,opencodeDefaultAgent:void 0,opencodeDefaultModel:void 0,selectionSource:`auto`}),Pf=e=>{let t={};for(let[n,r]of Object.entries(e)){let e=r.lastUserSelection??jf(r.lastSelectedAgentName,r.agentModelSelections);!e&&!r.lastSelectedAgentName||(t[n]={...Nf(),agentModelSelections:{},lastSelectedAgentName:e?.agentName??r.lastSelectedAgentName,lastUserSelection:e,selectionSource:r.selectionSource===`manual`?`manual`:`auto`})}return t},Ff=e=>{if(!$d(e))return{};let t=Kd(e.catalogTransportIdentity),n={};for(let t of[`activeDirectoryKey`,`settingsDefaultModel`,`settingsDefaultVariant`,`settingsDefaultAgent`,`settingsZenModel`]){let r=Kd(e[t]);r!==void 0&&(n[t]=r)}for(let t of[`settingsAutoCreateWorktree`,`settingsGitmojiEnabled`,`settingsDefaultFileViewerPreview`])typeof e[t]==`boolean`&&(n[t]=e[t]);(e.settingsMessageStreamTransport===`auto`||e.settingsMessageStreamTransport===`ws`||e.settingsMessageStreamTransport===`sse`)&&(n.settingsMessageStreamTransport=e.settingsMessageStreamTransport);for(let t of[`speechRate`,`speechPitch`,`speechVolume`])typeof e[t]==`number`&&Number.isFinite(e[t])&&(n[t]=e[t]);let i={};if($d(e.directoryScoped))for(let[t,n]of Object.entries(e.directoryScoped)){if(!$d(n))continue;let e=n.providerCatalogPartial===!0,r=e?[]:qd(n.providers),a=e?{}:Jd(n.defaultProviders),o=kf(n.agentModelSelections),s=Of(n.lastSelectedAgentName,!0),c=Mf(n.lastUserSelection,s,o);i[t]={...Nf(),providers:r,agents:[],currentProviderId:Kd(n.currentProviderId)??``,currentModelId:Kd(n.currentModelId)??``,currentVariant:Kd(n.currentVariant),currentAgentName:Kd(n.currentAgentName),selectedProviderId:Wd(Kd(n.selectedProviderId)),agentModelSelections:o,lastSelectedAgentName:c?.agentName??s,lastUserSelection:c,defaultProviders:a,providerCatalogPartial:e,opencodeDefaultAgent:Kd(n.opencodeDefaultAgent),opencodeDefaultModel:Kd(n.opencodeDefaultModel),selectionSource:n.selectionSource===`manual`?`manual`:`auto`}}let a=kf(e.agentModelSelections),o=Of(e.lastSelectedAgentName,!0),s=Mf(e.globalLastUserSelection,o,a)??(()=>{let t=Kd(e.activeDirectoryKey);return t?i[t]?.lastUserSelection:void 0})(),c=r();if(t!==c){let t=Pf(i),r=Kd(e.activeDirectoryKey),a=r?t[r]?.lastUserSelection:void 0;return{...n,catalogTransportIdentity:c,directoryScoped:t,providers:[],agents:[],defaultProviders:{},currentProviderId:``,currentModelId:``,currentVariant:void 0,currentAgentName:void 0,selectedProviderId:``,agentModelSelections:{},lastSelectedAgentName:a?.agentName??s?.agentName,lastUserSelection:a,globalLastUserSelection:s,providerConfigLoadingByDirectory:{},agentConfigLoadingByDirectory:{}}}return{...n,catalogTransportIdentity:t,directoryScoped:i,providers:[],agents:[],defaultProviders:{},currentProviderId:Kd(e.currentProviderId)??``,currentModelId:Kd(e.currentModelId)??``,currentVariant:Kd(e.currentVariant),currentAgentName:Kd(e.currentAgentName),selectedProviderId:Wd(Kd(e.selectedProviderId)),agentModelSelections:a,lastSelectedAgentName:s?.agentName??o,lastUserSelection:(()=>{let t=Kd(e.activeDirectoryKey);return t?i[t]?.lastUserSelection:void 0})(),globalLastUserSelection:s}},If=(e,t,n,r)=>{if(!r)return!0;let i=e.find(e=>e.id===t)?.models.find(e=>e.id===n);return!!i?.variants&&Object.prototype.hasOwnProperty.call(i.variants,r)},Lf=({agents:e,providers:t,currentAgentName:n,currentProviderId:r,currentModelId:i,currentVariant:a,selectionSource:o,resolvedAgentName:s,resolvedProviderId:c,resolvedModelId:l,resolvedVariant:u})=>{let d=n&&e.some(e=>e.name===n)?n:void 0,f=!!r&&!!i&&Yd(t,r,i)&&If(t,r,i,a),p=o===`manual`&&(!!d||f);return{agentName:p?d??s:s,providerId:p&&f?r:c,modelId:p&&f?i:l,variant:p&&f?a:u,selectionSource:p?`manual`:`auto`}},Rf=null,zf=null,Bf=null,Vf={},Hf={},G=Oe()(je(ke((e,t)=>({activeDirectoryKey:lf(),catalogTransportIdentity:r(),directoryScoped:{},providerConfigLoadingByDirectory:{},agentConfigLoadingByDirectory:{},providers:[],agents:[],currentProviderId:``,currentModelId:``,currentVariant:void 0,currentAgentName:void 0,selectedProviderId:``,agentModelSelections:{},lastSelectedAgentName:void 0,lastUserSelection:void 0,globalLastUserSelection:void 0,defaultProviders:{},selectionSource:`auto`,isConnected:!1,hasEverConnected:!1,connectionPhase:`connecting`,lastDisconnectReason:null,isInitialized:!1,settingsDefaultModel:void 0,settingsDefaultVariant:void 0,settingsDefaultAgent:void 0,opencodeDefaultAgent:void 0,opencodeDefaultModel:void 0,settingsAutoCreateWorktree:!1,settingsGitmojiEnabled:!1,settingsDefaultFileViewerPreview:!1,settingsZenModel:void 0,settingsMessageStreamTransport:`auto`,voiceProvider:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`voiceProvider`);if(e===`openai`||e===`browser`||e===`local`||e===`say`||e===`openai-compatible`)return e}return`browser`})(),speechRate:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`speechRate`);if(e){let t=parseFloat(e);if(!isNaN(t)&&t>=.5&&t<=2)return t}}return 1})(),speechPitch:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`speechPitch`);if(e){let t=parseFloat(e);if(!isNaN(t)&&t>=.5&&t<=2)return t}}return 1})(),speechVolume:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`speechVolume`);if(e){let t=parseFloat(e);if(!isNaN(t)&&t>=0&&t<=1)return t}}return 1})(),sayVoice:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`sayVoice`);if(e)return e}return`Samantha`})(),localTtsVoiceId:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`localTtsVoiceId`);if(e!==null){let t=Number.parseInt(e,10);if(Number.isInteger(t)&&t>=0)return t}}return 0})(),browserVoice:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`browserVoice`);if(e)return e}return``})(),openaiVoice:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`openaiVoice`);if(e)return e}return`nova`})(),openaiApiKey:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`openaiApiKey`);if(e)return e}return``})(),openaiCompatibleUrl:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`openaiCompatibleUrl`);if(e)return e}return``})(),openaiCompatibleApiKey:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`openaiCompatibleApiKey`);if(e)return e}return``})(),openaiCompatibleVoice:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`openaiCompatibleVoice`);if(e)return e}return`af_sky`})(),openaiCompatibleTtsModel:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`openaiCompatibleTtsModel`);if(e&&e!==`speaches-ai/Kokoro-82M-v1.0-ONNX`)return e}return`kokoro`})(),dictationEnabled:!(typeof window<`u`&&localStorage.getItem(`dictationEnabled`)===`false`),sttProvider:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`sttProvider`);if(e===`local`||e===`openai-compatible`)return e;if(e===`server`)return`openai-compatible`}return`local`})(),sttServerUrl:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`sttServerUrl`);if(e)return e}return`http://localhost:8001/v1`})(),sttApiKey:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`sttApiKey`);if(e)return e}return``})(),sttModel:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`sttModel`);if(e)return e}return`deepdml/faster-whisper-large-v3-turbo-ct2`})(),sttLocalModel:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`sttLocalModel`);if(e)return e}return`parakeet-tdt-0.6b-v2-int8`})(),sttLanguage:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`sttLanguage`);if(e!==null)return e}return``})(),showMessageTTSButtons:typeof window<`u`&&localStorage.getItem(`showMessageTTSButtons`)===`true`,ttsInputMode:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`ttsInputMode`);if(e===`raw`)return`raw`;if(e===`summarized`)return`summarized`}return`sanitized`})(),summarizeMessageTTS:typeof window<`u`&&localStorage.getItem(`summarizeMessageTTS`)===`true`,summarizeVoiceConversation:typeof window<`u`&&localStorage.getItem(`summarizeVoiceConversation`)===`true`,summarizeCharacterThreshold:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`summarizeCharacterThreshold`);if(e){let t=parseInt(e,10);if(!isNaN(t)&&t>=50&&t<=2e3)return t}}return 200})(),summarizeMaxLength:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`summarizeMaxLength`);if(e){let t=parseInt(e,10);if(!isNaN(t)&&t>=50&&t<=2e3)return t}}return 500})(),activateDirectory:async(n,r)=>{let i=_f(n);if(!i){z(`activateDirectory:skippedUnknownDirectory`,{directory:n});return}let a=sf(i),o=!1,s=!1,c=!1;e(e=>{let t=e.directoryScoped[a],n=e.providers.length>0?e.providers:t?.providers??[],r=Object.keys(e.defaultProviders).length>0?e.defaultProviders:t?.defaultProviders??{},i=e.agents.length>0?e.agents:t?.agents??[];o=n.length>0,s=i.length>0,c=!!t?.agents.length;let l=e.isConnected&&!o,u=e.isConnected&&!s;return t?{activeDirectoryKey:a,providers:n,defaultProviders:r,agents:t.agents.length>0?t.agents:i,currentProviderId:t.currentProviderId,currentModelId:t.currentModelId,currentVariant:t.currentVariant,currentAgentName:t.currentAgentName,selectedProviderId:t.selectedProviderId,agentModelSelections:t.agentModelSelections,lastSelectedAgentName:t.lastSelectedAgentName,lastUserSelection:t.lastUserSelection,opencodeDefaultAgent:t.opencodeDefaultAgent,opencodeDefaultModel:t.opencodeDefaultModel,selectionSource:t.selectionSource??`auto`,providerConfigLoadingByDirectory:{...e.providerConfigLoadingByDirectory,[a]:l},agentConfigLoadingByDirectory:{...e.agentConfigLoadingByDirectory,[a]:u}}:{activeDirectoryKey:a,providers:n,defaultProviders:r,agents:i,currentProviderId:``,currentModelId:``,currentAgentName:void 0,selectedProviderId:``,agentModelSelections:{},lastSelectedAgentName:void 0,lastUserSelection:void 0,opencodeDefaultAgent:void 0,opencodeDefaultModel:void 0,selectionSource:`auto`,providerConfigLoadingByDirectory:{...e.providerConfigLoadingByDirectory,[a]:l},agentConfigLoadingByDirectory:{...e.agentConfigLoadingByDirectory,[a]:u}}}),s&&o&&!c&&t().applyDefaultModelAgentSelection(),t().isConnected&&((!o||r?.refreshProviders)&&await t().loadProviders({directory:cf(a),source:r?.source??`activateDirectory`,forceRefresh:r?.refreshProviders}),s||await t().loadAgents({directory:cf(a),source:`activateDirectory`}))},invalidateProviderCache:e=>{aa(null,r())},loadProviders:async n=>{let i=n?.directory??cf(t().activeDirectoryKey),a=_f(i);if(!a){z(`loadProviders:skippedUnknownDirectory`,{requestedDirectory:i,source:n?.source??`unknown`});return}let o=a??B.getDirectory()??null,c=sf(a),l=n?.source??`unknown`,u=r(),d=s(),f=()=>s()===d&&r()===u&&t().catalogTransportIdentity===u&&_f(i)===a,p=(Vf[c]??0)+1;Vf[c]=p,z(`loadProviders:called`,{directoryKey:c,source:l,requestedDirectory:i,effectiveDirectory:o});let m=t().directoryScoped[c];return t().providers.length>0||m?.providers.length||e(e=>({providerConfigLoadingByDirectory:{...e.providerConfigLoadingByDirectory,[c]:!0}})),(async()=>{let r=typeof performance<`u`?performance.now():Date.now();z(`loadProviders:start`,{directoryKey:c,source:l,requestedDirectory:i,effectiveDirectory:o});let a=t().directoryScoped[c],s=t().providers.length>0?t().providers:a?.providers??[],d=Object.keys(t().defaultProviders).length>0?t().defaultProviders:a?.defaultProviders??{};try{let t=await Be(`loadProviders:api`,()=>n?.forceRefresh?ra(cf(c),u):ta(cf(c),u),{directoryKey:c,source:l,requestedDirectory:i,effectiveDirectory:o}),a=qd(t.providers),d=Jd(t.default);if(!f()||t.partial&&s.length>0||(e(e=>{if(!f()||e.catalogTransportIdentity!==u)return e;let n=e.directoryScoped[c]??{providers:[],agents:[],currentProviderId:``,currentModelId:``,currentAgentName:void 0,selectedProviderId:``,agentModelSelections:{},defaultProviders:{}},r=e.activeDirectoryKey===c?e.currentProviderId:n.currentProviderId,i=e.activeDirectoryKey===c?e.currentModelId:n.currentModelId,o=e.activeDirectoryKey===c?e.currentVariant:n.currentVariant,s=Xd({providers:a,currentProviderId:r,currentModelId:i,currentVariant:o,settingsDefaultModel:e.settingsDefaultModel,settingsDefaultVariant:e.settingsDefaultVariant}),l=e.activeDirectoryKey===c?e.selectedProviderId:n.selectedProviderId,p=l===zd||a.some(e=>e.id===l)?l:s?.providerId??a[0]?.id??``,m={...n,providers:a,defaultProviders:d,providerCatalogPartial:t.partial,currentProviderId:s?.providerId??``,currentModelId:s?.modelId??``,currentVariant:s?.variant,selectedProviderId:p},h={providers:a,defaultProviders:d,directoryScoped:{...e.directoryScoped,[c]:m}};return e.activeDirectoryKey===c&&(h.currentProviderId=m.currentProviderId,h.currentModelId=m.currentModelId,h.currentVariant=m.currentVariant,h.selectedProviderId=p),h}),!f()))return;let p=typeof performance<`u`?performance.now():Date.now();z(`loadProviders:end`,{directoryKey:c,source:l,requestedDirectory:i,effectiveDirectory:o,durationMs:Math.round(p-r),providers:a.length,models:a.reduce((e,t)=>e+t.models.length,0)});return}catch(e){if(!f())return;console.error(`Failed to load providers:`,e),z(`loadProviders:error`,{directoryKey:c,source:l,requestedDirectory:i,effectiveDirectory:o,error:e instanceof Error?e.message:String(e)})}f()&&e(e=>{if(!f()||e.catalogTransportIdentity!==u)return e;let t={...e.directoryScoped[c]??{providers:[],agents:[],currentProviderId:``,currentModelId:``,currentAgentName:void 0,selectedProviderId:``,agentModelSelections:{},defaultProviders:{}},providers:s,defaultProviders:d},n={providers:s,defaultProviders:d,directoryScoped:{...e.directoryScoped,[c]:t}};if(e.activeDirectoryKey===c&&!e.currentProviderId&&!e.currentModelId&&e.settingsDefaultModel){let r=Ud(e.settingsDefaultModel);if(r){let i=s.find(e=>e.id===r.providerId);if(i?.models.some(e=>e.id===r.modelId)){let a=i.models.find(e=>e.id===r.modelId),o=e.settingsDefaultVariant&&a?.variants?.[e.settingsDefaultVariant]?e.settingsDefaultVariant:void 0;n.currentProviderId=r.providerId,n.currentModelId=r.modelId,n.currentVariant=o,n.selectedProviderId=r.providerId,t.currentProviderId=r.providerId,t.currentModelId=r.modelId,t.currentVariant=o,t.selectedProviderId=r.providerId}}}return n})})().finally(()=>{Vf[c]===p&&e(e=>({providerConfigLoadingByDirectory:{...e.providerConfigLoadingByDirectory,[c]:!1}}))})},refreshMissingCatalogs:e=>{if(zf)return zf;let n=e?.source??`refreshMissingCatalogs`,r=(async()=>{t().providers.length===0&&await t().loadProviders({source:n,forceRefresh:!0}),t().agents.length===0&&await t().loadAgents({source:n,forceRefresh:!0})})().finally(()=>{zf=null});return zf=r,r},refreshCatalogsOnPickerOpen:e=>{if(Bf)return Bf;let n=e?.source??`refreshCatalogsOnPickerOpen`,r=Promise.all([t().loadProviders({source:n,forceRefresh:!0}),t().loadAgents({source:n,forceRefresh:!0})]).then(()=>void 0).finally(()=>{Bf=null});return Bf=r,r},setProvider:n=>{let{providers:r}=t(),i=r.find(e=>e.id===n);if(!i)return;let a=i.models[0]?.id||``;e(e=>{let t=e.activeDirectoryKey,r={...e.directoryScoped[t]??{providers:e.providers,agents:e.agents,currentProviderId:e.currentProviderId,currentModelId:e.currentModelId,currentVariant:e.currentVariant,currentAgentName:e.currentAgentName,selectedProviderId:e.selectedProviderId,agentModelSelections:e.agentModelSelections,defaultProviders:e.defaultProviders},currentProviderId:n,currentModelId:a,selectedProviderId:n,selectionSource:`manual`};return{currentProviderId:n,currentModelId:a,selectedProviderId:n,selectionSource:`manual`,directoryScoped:{...e.directoryScoped,[t]:r}}})},setModel:t=>{e(e=>{let n=e.activeDirectoryKey,r={...e.directoryScoped[n]??{providers:e.providers,agents:e.agents,currentProviderId:e.currentProviderId,currentModelId:e.currentModelId,currentVariant:e.currentVariant,currentAgentName:e.currentAgentName,selectedProviderId:e.selectedProviderId,agentModelSelections:e.agentModelSelections,defaultProviders:e.defaultProviders},currentModelId:t,selectionSource:`manual`};return{currentModelId:t,selectionSource:`manual`,directoryScoped:{...e.directoryScoped,[n]:r}}})},setCurrentVariant:t=>{e(e=>{if(e.currentVariant===t)return e;let n=e.activeDirectoryKey,r={...e.directoryScoped[n]??{providers:e.providers,agents:e.agents,currentProviderId:e.currentProviderId,currentModelId:e.currentModelId,currentVariant:e.currentVariant,currentAgentName:e.currentAgentName,selectedProviderId:e.selectedProviderId,agentModelSelections:e.agentModelSelections,defaultProviders:e.defaultProviders},currentVariant:t,selectionSource:`manual`};return{currentVariant:t,selectionSource:`manual`,directoryScoped:{...e.directoryScoped,[n]:r}}})},getCurrentModelVariants:()=>{let e=t().getCurrentModel()?.variants;return e?Object.keys(e):[]},cycleCurrentVariant:()=>{let e=t().getCurrentModelVariants();if(e.length===0)return;let n=t().currentVariant;if(!n){t().setCurrentVariant(e[0]);return}let r=e.indexOf(n);if(r===-1||r===e.length-1){t().setCurrentVariant(void 0);return}t().setCurrentVariant(e[r+1])},setSelectedProvider:t=>{e(e=>{let n=e.activeDirectoryKey,r={...e.directoryScoped[n]??{providers:e.providers,agents:e.agents,currentProviderId:e.currentProviderId,currentModelId:e.currentModelId,currentAgentName:e.currentAgentName,selectedProviderId:e.selectedProviderId,agentModelSelections:e.agentModelSelections,defaultProviders:e.defaultProviders},selectedProviderId:t,selectionSource:`manual`};return{selectedProviderId:t,selectionSource:`manual`,directoryScoped:{...e.directoryScoped,[n]:r}}})},saveAgentModelSelection:(t,n,r,i)=>{!t||!n||!r||e(e=>{let a=e.activeDirectoryKey,o={agentName:t,providerId:n,modelId:r,...i?{variant:i}:{}},s=e.lastUserSelection,c=s?.agentName===o.agentName&&s?.providerId===o.providerId&&s?.modelId===o.modelId&&s?.variant===o.variant,l=e.globalLastUserSelection?.agentName===o.agentName&&e.globalLastUserSelection?.providerId===o.providerId&&e.globalLastUserSelection?.modelId===o.modelId&&e.globalLastUserSelection?.variant===o.variant;if(c&&l)return e;let u={...e.directoryScoped[a]??{providers:e.providers,agents:e.agents,currentProviderId:e.currentProviderId,currentModelId:e.currentModelId,currentAgentName:e.currentAgentName,selectedProviderId:e.selectedProviderId,agentModelSelections:e.agentModelSelections,lastSelectedAgentName:e.lastSelectedAgentName,lastUserSelection:e.lastUserSelection,defaultProviders:e.defaultProviders},agentModelSelections:{},lastSelectedAgentName:t,lastUserSelection:o,selectionSource:`manual`};return{agentModelSelections:{},lastSelectedAgentName:t,lastUserSelection:o,globalLastUserSelection:o,selectionSource:`manual`,directoryScoped:{...e.directoryScoped,[a]:u}}})},getAgentModelSelection:e=>{let{lastUserSelection:n}=t();return!n||n.agentName!==e?null:{providerId:n.providerId,modelId:n.modelId,...n.variant?{variant:n.variant}:{}}},loadAgents:async n=>{let i=n?.directory??cf(t().activeDirectoryKey),a=_f(i);if(!a)return z(`loadAgents:skippedUnknownDirectory`,{requestedDirectory:i,source:n?.source??`unknown`}),!1;let o=a??B.getDirectory()??null,c=sf(a),l=n?.source??`unknown`,u=r(),d=s(),f=()=>s()===d&&r()===u&&t().catalogTransportIdentity===u&&_f(i)===a,p=(Hf[c]??0)+1;Hf[c]=p,z(`loadAgents:called`,{directoryKey:c,source:l,requestedDirectory:i,effectiveDirectory:o});let m=t().directoryScoped[c];return t().agents.length>0||m?.agents.length||e(e=>({agentConfigLoadingByDirectory:{...e.agentConfigLoadingByDirectory,[c]:!0}})),(async()=>{let r=typeof performance<`u`?performance.now():Date.now();z(`loadAgents:start`,{directoryKey:c,source:l,requestedDirectory:i,effectiveDirectory:o});let a=t().directoryScoped[c],s=t().agents.length>0?t().agents:a?.agents??[];try{let a=cf(c);(Dd(i??void 0)??Dd(a??void 0))&&z(`loadAgents:syncConfigHit`,{directoryKey:c,source:l});let[d,p]=await Promise.all([Be(`loadAgents:api`,()=>n?.forceRefresh?ia(a,u):na(a,u),{directoryKey:c,source:l,requestedDirectory:i,effectiveDirectory:o}),Hd(u,{defaultModel:t().settingsDefaultModel,defaultVariant:t().settingsDefaultVariant,defaultAgent:t().settingsDefaultAgent,autoCreateWorktree:t().settingsAutoCreateWorktree,gitmojiEnabled:t().settingsGitmojiEnabled,defaultFileViewerPreview:t().settingsDefaultFileViewerPreview,zenModel:t().settingsZenModel,messageStreamTransport:t().settingsMessageStreamTransport,sttProvider:t().sttProvider,sttServerUrl:t().sttServerUrl,sttModel:t().sttModel,sttLocalModel:t().sttLocalModel,sttLanguage:t().sttLanguage})]),m=Array.isArray(d)?d:[];if(!f())return!1;let h=Dd(i??void 0)??Dd(a??void 0),g=h!==void 0,_=g?Kd(h.default_agent):void 0,v=g?Kd(h.model):void 0,y=t().activeDirectoryKey===c?t().providers:t().directoryScoped[c]?.providers??[],b=Kd(t().settingsZenModel),x=Kd(p.zenModel),S=Qd({providers:y,settingsZenModel:b}),C=Qd({providers:y,settingsZenModel:x}),w=(S||C)?.modelId||x||b;e(e=>{if(!f()||e.catalogTransportIdentity!==u)return e;let t=e.directoryScoped[c]??{providers:y,agents:s,currentProviderId:``,currentModelId:``,currentAgentName:void 0,selectedProviderId:``,agentModelSelections:{},defaultProviders:{}},n=g?_:t.opencodeDefaultAgent??(e.activeDirectoryKey===c?e.opencodeDefaultAgent:void 0),r=g?v:t.opencodeDefaultModel??(e.activeDirectoryKey===c?e.opencodeDefaultModel:void 0),i={...t,providers:y,agents:m,opencodeDefaultAgent:n,opencodeDefaultModel:r},a={settingsDefaultModel:p.defaultModel,settingsDefaultVariant:p.defaultVariant,settingsDefaultAgent:p.defaultAgent,settingsAutoCreateWorktree:p.autoCreateWorktree??!1,settingsGitmojiEnabled:p.gitmojiEnabled??!1,settingsDefaultFileViewerPreview:p.defaultFileViewerPreview??!1,settingsZenModel:w,settingsMessageStreamTransport:p.messageStreamTransport??e.settingsMessageStreamTransport??`auto`,sttProvider:p.sttProvider??e.sttProvider,sttServerUrl:p.sttServerUrl??e.sttServerUrl,sttModel:p.sttModel??e.sttModel,sttLocalModel:p.sttLocalModel??e.sttLocalModel,sttLanguage:p.sttLanguage??e.sttLanguage,directoryScoped:{...e.directoryScoped,[c]:i}};return e.activeDirectoryKey===c&&(a.agents=m,a.opencodeDefaultAgent=n,a.opencodeDefaultModel=r),a});let T=t(),E=T.directoryScoped[c],D=E?.opencodeDefaultAgent??(T.activeDirectoryKey===c?T.opencodeDefaultAgent:void 0),O=E?.opencodeDefaultModel??(T.activeDirectoryKey===c?T.opencodeDefaultModel:void 0),k=!!w&&w!==x;if(f()&&k&&w&&ye({zenModel:w,gitProviderId:``,gitModelId:``}).catch(()=>{}),m.length===0){if(s.length>0&&!n?.forceRefresh){if(!f())return!1;let e=typeof performance<`u`?performance.now():Date.now();return z(`loadAgents:end`,{directoryKey:c,source:l,requestedDirectory:i,effectiveDirectory:o,durationMs:Math.round(e-r),agents:s.length,retainedPrevious:!0}),!0}if(e(e=>{if(!f()||e.catalogTransportIdentity!==u)return e;let t={...e.directoryScoped[c]??{providers:y,agents:[],currentProviderId:``,currentModelId:``,currentVariant:void 0,currentAgentName:void 0,selectedProviderId:``,agentModelSelections:{},defaultProviders:{}},providers:y,agents:[],currentAgentName:void 0},n={directoryScoped:{...e.directoryScoped,[c]:t}};return e.activeDirectoryKey===c&&(n.currentAgentName=void 0),n}),!f())return!1;let t=typeof performance<`u`?performance.now():Date.now();return z(`loadAgents:end`,{directoryKey:c,source:l,requestedDirectory:i,effectiveDirectory:o,durationMs:Math.round(t-r),agents:m.length}),!0}let A=(e,t)=>{let n=y.find(t=>t.id===e);return n?n.models.some(e=>e.id===t):!1},j={};if(p.defaultAgent&&!m.some(e=>e.name===p.defaultAgent)&&(j.defaultAgent=``),p.defaultModel){let e=Ud(p.defaultModel);if(!e||!A(e.providerId,e.modelId))j.defaultModel=``;else if(p.defaultVariant){let t=y.find(t=>t.id===e.providerId)?.models.find(t=>t.id===e.modelId)?.variants;t&&Object.prototype.hasOwnProperty.call(t,p.defaultVariant)||(j.defaultVariant=``)}}let ee=t(),te=ee.directoryScoped[c]?.lastUserSelection??(ee.activeDirectoryKey===c?ee.lastUserSelection:void 0),M=Zd({agents:m,providers:y,settingsDefaultAgent:p.defaultAgent,settingsDefaultModel:p.defaultModel,settingsDefaultVariant:p.defaultVariant,opencodeDefaultAgent:D,opencodeDefaultModel:O,projectLastUserSelection:te,globalLastUserSelection:ee.globalLastUserSelection}),ne=M.agentName??m[0].name,re=M.providerId,ie=M.modelId,ae=M.variant;if(e(e=>{if(!f()||e.catalogTransportIdentity!==u)return e;let t=e.directoryScoped[c]??{providers:y,agents:m,currentProviderId:``,currentModelId:``,currentAgentName:void 0,selectedProviderId:``,agentModelSelections:{},defaultProviders:{}},n=e.activeDirectoryKey===c,r=n?e.currentAgentName:t.currentAgentName,i=n?e.currentProviderId:t.currentProviderId,a=n?e.currentModelId:t.currentModelId,o=n?e.currentVariant:t.currentVariant,s=n?e.selectionSource:t.selectionSource??`auto`,l=Lf({agents:m,providers:y,currentAgentName:r,currentProviderId:i,currentModelId:a,currentVariant:o,selectionSource:s,resolvedAgentName:ne,resolvedProviderId:re,resolvedModelId:ie,resolvedVariant:ae}),d={...t,providers:y,agents:m,currentAgentName:l.agentName,currentProviderId:l.providerId??t.currentProviderId,currentModelId:l.modelId??t.currentModelId,currentVariant:l.variant,opencodeDefaultAgent:D,opencodeDefaultModel:O,selectionSource:l.selectionSource},p={directoryScoped:{...e.directoryScoped,[c]:d}};return n&&(p.currentAgentName=l.agentName,p.opencodeDefaultAgent=D,p.opencodeDefaultModel=O,l.providerId&&l.modelId&&(p.currentProviderId=l.providerId,p.currentModelId=l.modelId,p.currentVariant=l.variant),p.selectionSource=l.selectionSource),p}),f()&&Object.keys(j).length>0&&(e({settingsDefaultModel:j.defaultModel===void 0?t().settingsDefaultModel:void 0,settingsDefaultVariant:j.defaultVariant===void 0?t().settingsDefaultVariant:void 0,settingsDefaultAgent:j.defaultAgent===void 0?t().settingsDefaultAgent:void 0}),ye(j).catch(()=>{})),!f())return!1;let oe=typeof performance<`u`?performance.now():Date.now();return z(`loadAgents:end`,{directoryKey:c,source:l,requestedDirectory:i,effectiveDirectory:o,durationMs:Math.round(oe-r),agents:m.length}),!0}catch(t){return!f()||(console.error(`Failed to load agents:`,t),z(`loadAgents:error`,{directoryKey:c,source:l,requestedDirectory:i,effectiveDirectory:o,error:t instanceof Error?t.message:String(t)}),!f())||e(e=>{if(!f()||e.catalogTransportIdentity!==u)return e;let t=e.activeDirectoryKey===c?e.providers:e.directoryScoped[c]?.providers??[],n={...e.directoryScoped[c]??{providers:t,agents:[],currentProviderId:``,currentModelId:``,currentAgentName:void 0,selectedProviderId:``,agentModelSelections:{},defaultProviders:{}},providers:t,agents:s},r={directoryScoped:{...e.directoryScoped,[c]:n}};return e.activeDirectoryKey===c&&(r.agents=s),r}),!1}})().finally(()=>{Hf[c]===p&&e(e=>({agentConfigLoadingByDirectory:{...e.agentConfigLoadingByDirectory,[c]:!1}}))})},setAgent:n=>{let{agents:r,providers:i,settingsDefaultModel:a,settingsDefaultVariant:o,currentProviderId:s,currentModelId:c}=t();if(e(e=>{let t=e.activeDirectoryKey,r={...e.directoryScoped[t]??{providers:e.providers,agents:e.agents,currentProviderId:e.currentProviderId,currentModelId:e.currentModelId,currentAgentName:e.currentAgentName,selectedProviderId:e.selectedProviderId,agentModelSelections:e.agentModelSelections,defaultProviders:e.defaultProviders},currentAgentName:n,selectionSource:`manual`};return{currentAgentName:n,selectionSource:`manual`,directoryScoped:{...e.directoryScoped,[t]:r}}}),n){let{currentSessionId:e}=$.getState(),t=Ko.getState();e&&t.saveSessionAgentSelection(e,n),e&&$.getState().isOpenChamberCreatedSession(e)&&(t.getAgentModelForSession(e,n)||$.getState().initializeNewOpenChamberSession(e,r))}if(n){let{currentSessionId:l}=$.getState(),u=(t,n,r)=>{e(e=>{let i=e.activeDirectoryKey,a={...e.directoryScoped[i]??{providers:e.providers,agents:e.agents,currentProviderId:e.currentProviderId,currentModelId:e.currentModelId,currentVariant:e.currentVariant,currentAgentName:e.currentAgentName,selectedProviderId:e.selectedProviderId,agentModelSelections:e.agentModelSelections,defaultProviders:e.defaultProviders},currentProviderId:t,currentModelId:n,currentVariant:r,selectedProviderId:Gd(e.selectedProviderId,t),selectionSource:`manual`};return{currentProviderId:t,currentModelId:n,currentVariant:r,selectedProviderId:Gd(e.selectedProviderId,t),selectionSource:`manual`,directoryScoped:{...e.directoryScoped,[i]:a}}})},d=r.find(e=>e.name===n),f=(e,t,r=[])=>{let a=i.find(t=>t.id===e)?.models.find(e=>e.id===t)?.variants;if(!a)return;let s=l?Ko.getState().getAgentModelVariantForSession(l,n,e,t):void 0;for(let e of[s,...r,o])if(e&&Object.prototype.hasOwnProperty.call(a,e))return e};if(l){let e=Ko.getState().getAgentModelForSession(l,n);if(e&&Yd(i,e.providerId,e.modelId)){let n=f(e.providerId,e.modelId,[d?.variant]);(s!==e.providerId||c!==e.modelId||t().currentVariant!==n)&&u(e.providerId,e.modelId,n);return}}if(a){let e=Ud(a);if(e&&i.find(t=>t.id===e.providerId)?.models.some(t=>t.id===e.modelId)){u(e.providerId,e.modelId,f(e.providerId,e.modelId,[d?.variant]));return}}let p=d?.model;if(p?.providerID&&p?.modelID){let{providerID:e,modelID:t}=p;if(i.find(t=>t.id===e)?.models.find(e=>e.id===t)){u(e,t,f(e,t,[d?.variant]));return}}}},applyDefaultModelAgentSelection:n=>{let{agents:r,providers:i,settingsDefaultModel:a,settingsDefaultVariant:o,settingsDefaultAgent:s,opencodeDefaultAgent:c,opencodeDefaultModel:l,lastUserSelection:u,globalLastUserSelection:d}=t();if(r.length===0||i.length===0)return;let{agentName:f,providerId:p,modelId:m,variant:h}=Zd({agents:r,providers:i,projectDefaultModel:n?.projectDefaultModel,settingsDefaultAgent:s,settingsDefaultModel:a,settingsDefaultVariant:o,opencodeDefaultAgent:c,opencodeDefaultModel:l,projectLastUserSelection:u,globalLastUserSelection:d});f&&e(e=>{let t=e.activeDirectoryKey,n={...e.directoryScoped[t]??{providers:e.providers,agents:e.agents,currentProviderId:e.currentProviderId,currentModelId:e.currentModelId,currentVariant:e.currentVariant,currentAgentName:e.currentAgentName,selectedProviderId:e.selectedProviderId,agentModelSelections:e.agentModelSelections,defaultProviders:e.defaultProviders},currentAgentName:f,...p&&m?{currentProviderId:p,currentModelId:m,currentVariant:h,selectedProviderId:Gd(e.selectedProviderId,p)}:{},selectionSource:`auto`},r={currentAgentName:f,selectionSource:`auto`,directoryScoped:{...e.directoryScoped,[t]:n}};return p&&m&&(r.currentProviderId=p,r.currentModelId=m,r.currentVariant=h,r.selectedProviderId=Gd(e.selectedProviderId,p)),r})},applyOpenCodeConfigDefaults:(n,r=`syncConfig`,i)=>{let a=n??cf(t().activeDirectoryKey),o=vf(a),s=cf(o),c=i??Dd(a??void 0)??Dd(s??void 0);if(!c)return;let l=Kd(c.default_agent),u=Kd(c.model);e(e=>{let t=e.directoryScoped[o],n=e.activeDirectoryKey===o,i=n?e.providers:t?.providers??[],s=n?e.agents:t?.agents??[],c=t??Nf(i,s),d=c.opencodeDefaultAgent!==l||c.opencodeDefaultModel!==u||n&&(e.opencodeDefaultAgent!==l||e.opencodeDefaultModel!==u),f={...c,providers:i,agents:s,opencodeDefaultAgent:l,opencodeDefaultModel:u},p={directoryScoped:{...e.directoryScoped,[o]:f}};n&&(p.opencodeDefaultAgent=l,p.opencodeDefaultModel=u);let m=n?e.selectionSource:t?.selectionSource??`auto`;if(i.length===0||s.length===0)return d?p:e;let h=n?e.lastUserSelection:t?.lastUserSelection,g=Zd({agents:s,providers:i,settingsDefaultAgent:e.settingsDefaultAgent,settingsDefaultModel:e.settingsDefaultModel,settingsDefaultVariant:e.settingsDefaultVariant,opencodeDefaultAgent:l,opencodeDefaultModel:u,projectLastUserSelection:h,globalLastUserSelection:e.globalLastUserSelection});if(!g.agentName)return d?p:e;let _=n?e.currentAgentName:c.currentAgentName,v=n?e.currentProviderId:c.currentProviderId,y=n?e.currentModelId:c.currentModelId,b=n?e.currentVariant:c.currentVariant,x=n?e.selectedProviderId:c.selectedProviderId,S=Lf({agents:s,providers:i,currentAgentName:_,currentProviderId:v,currentModelId:y,currentVariant:b,selectionSource:m,resolvedAgentName:g.agentName,resolvedProviderId:g.providerId,resolvedModelId:g.modelId,resolvedVariant:g.variant}),C={...f,providers:i,agents:s,currentAgentName:S.agentName,...S.providerId&&S.modelId?{currentProviderId:S.providerId,currentModelId:S.modelId,currentVariant:S.variant,selectedProviderId:Gd(x,S.providerId)}:{},selectionSource:S.selectionSource},w=c.currentAgentName!==C.currentAgentName||c.currentProviderId!==C.currentProviderId||c.currentModelId!==C.currentModelId||c.currentVariant!==C.currentVariant||c.selectedProviderId!==C.selectedProviderId||(c.selectionSource??`auto`)!==C.selectionSource||n&&(e.currentAgentName!==S.agentName||e.selectionSource!==S.selectionSource||S.providerId!==void 0&&S.modelId!==void 0&&(e.currentProviderId!==S.providerId||e.currentModelId!==S.modelId||e.currentVariant!==S.variant||e.selectedProviderId!==Gd(x,S.providerId)));return!d&&!w?e:(p.directoryScoped={...e.directoryScoped,[o]:C},n&&(p.currentAgentName=S.agentName,p.selectionSource=S.selectionSource,S.providerId&&S.modelId&&(p.currentProviderId=S.providerId,p.currentModelId=S.modelId,p.currentVariant=S.variant,p.selectedProviderId=Gd(x,S.providerId))),z(`loadAgents:opencodeConfigDefaultsApplied`,{directoryKey:o,eventDirectory:a,source:r}),p)})},setSettingsDefaultModel:t=>{e({settingsDefaultModel:t})},setSettingsDefaultVariant:t=>{e({settingsDefaultVariant:t})},setSettingsDefaultAgent:t=>{e({settingsDefaultAgent:t})},setSettingsAutoCreateWorktree:t=>{e({settingsAutoCreateWorktree:t})},setSettingsGitmojiEnabled:t=>{e({settingsGitmojiEnabled:t})},setSettingsDefaultFileViewerPreview:t=>{e({settingsDefaultFileViewerPreview:t})},setSettingsZenModel:t=>{e({settingsZenModel:t})},setSettingsMessageStreamTransport:t=>{e({settingsMessageStreamTransport:t})},getResolvedGitGenerationModel:()=>{let e=t();return Qd({providers:e.providers,settingsZenModel:e.settingsZenModel})},setVoiceProvider:t=>{e({voiceProvider:t}),typeof window<`u`&&localStorage.setItem(`voiceProvider`,t)},setSpeechRate:t=>{let n=Math.max(.5,Math.min(2,t));e({speechRate:n}),typeof window<`u`&&localStorage.setItem(`speechRate`,String(n))},setSpeechPitch:t=>{let n=Math.max(.5,Math.min(2,t));e({speechPitch:n}),typeof window<`u`&&localStorage.setItem(`speechPitch`,String(n))},setSpeechVolume:t=>{let n=Math.max(0,Math.min(1,t));e({speechVolume:n}),typeof window<`u`&&localStorage.setItem(`speechVolume`,String(n))},setSayVoice:t=>{e({sayVoice:t}),typeof window<`u`&&localStorage.setItem(`sayVoice`,t)},setLocalTtsVoiceId:t=>{e({localTtsVoiceId:t}),typeof window<`u`&&localStorage.setItem(`localTtsVoiceId`,String(t))},setBrowserVoice:t=>{e({browserVoice:t}),typeof window<`u`&&localStorage.setItem(`browserVoice`,t)},setOpenaiVoice:t=>{e({openaiVoice:t}),typeof window<`u`&&localStorage.setItem(`openaiVoice`,t)},setOpenaiApiKey:t=>{e({openaiApiKey:t}),typeof window<`u`&&localStorage.setItem(`openaiApiKey`,t)},setOpenaiCompatibleUrl:t=>{e({openaiCompatibleUrl:t}),typeof window<`u`&&localStorage.setItem(`openaiCompatibleUrl`,t)},setOpenaiCompatibleApiKey:t=>{e({openaiCompatibleApiKey:t}),typeof window<`u`&&localStorage.setItem(`openaiCompatibleApiKey`,t)},setOpenaiCompatibleVoice:t=>{e({openaiCompatibleVoice:t}),typeof window<`u`&&localStorage.setItem(`openaiCompatibleVoice`,t)},setOpenaiCompatibleTtsModel:t=>{e({openaiCompatibleTtsModel:t}),typeof window<`u`&&localStorage.setItem(`openaiCompatibleTtsModel`,t)},setDictationEnabled:t=>{e({dictationEnabled:t}),typeof window<`u`&&localStorage.setItem(`dictationEnabled`,String(t)),ye({dictationEnabled:t}).catch(()=>{})},setSttProvider:t=>{e({sttProvider:t}),typeof window<`u`&&localStorage.setItem(`sttProvider`,t),ye({sttProvider:t}).catch(()=>{})},setSttServerUrl:t=>{e({sttServerUrl:t}),typeof window<`u`&&localStorage.setItem(`sttServerUrl`,t),ye({sttServerUrl:t}).catch(()=>{})},setSttApiKey:t=>{e({sttApiKey:t}),typeof window<`u`&&localStorage.setItem(`sttApiKey`,t)},setSttModel:t=>{e({sttModel:t}),typeof window<`u`&&localStorage.setItem(`sttModel`,t),ye({sttModel:t}).catch(()=>{})},setSttLocalModel:t=>{e({sttLocalModel:t}),typeof window<`u`&&localStorage.setItem(`sttLocalModel`,t),ye({sttLocalModel:t}).catch(()=>{})},setSttLanguage:t=>{e({sttLanguage:t}),typeof window<`u`&&localStorage.setItem(`sttLanguage`,t),ye({sttLanguage:t}).catch(()=>{})},setShowMessageTTSButtons:t=>{e({showMessageTTSButtons:t}),typeof window<`u`&&localStorage.setItem(`showMessageTTSButtons`,String(t))},setTtsInputMode:t=>{e({ttsInputMode:t}),typeof window<`u`&&localStorage.setItem(`ttsInputMode`,t)},setSummarizeMessageTTS:t=>{e({summarizeMessageTTS:t}),typeof window<`u`&&localStorage.setItem(`summarizeMessageTTS`,String(t))},setSummarizeVoiceConversation:t=>{e({summarizeVoiceConversation:t}),typeof window<`u`&&localStorage.setItem(`summarizeVoiceConversation`,String(t))},setSummarizeCharacterThreshold:t=>{let n=Math.max(50,Math.min(2e3,t));e({summarizeCharacterThreshold:n}),typeof window<`u`&&localStorage.setItem(`summarizeCharacterThreshold`,String(n))},setSummarizeMaxLength:t=>{let n=Math.max(50,Math.min(2e3,t));e({summarizeMaxLength:n}),typeof window<`u`&&localStorage.setItem(`summarizeMaxLength`,String(n))},probeConnection:async n=>{if(await af(n?.timeoutMs))return e({isConnected:!0,hasEverConnected:!0,connectionPhase:`connected`}),!0;let r=t();return r.isConnected?!0:(e({isConnected:!1,connectionPhase:r.hasEverConnected?`reconnecting`:`connecting`,lastDisconnectReason:`health_probe_unhealthy`}),!1)},checkConnection:async()=>{z(`checkConnection:start`);let n=0,r=null;for(;n<5;)try{z(`checkConnection:attempt`,{attempt:n+1});let r=await Be(`checkConnection:health`,()=>B.checkHealth(),{attempt:n+1});if(!r&&n<4){let r=t().hasEverConnected;e({isConnected:!1,connectionPhase:r?`reconnecting`:`connecting`,lastDisconnectReason:`health_check_unhealthy`}),n+=1,await nf(400*n);continue}let i=t().hasEverConnected;return e(r?{isConnected:!0,hasEverConnected:!0,connectionPhase:`connected`}:{isConnected:!1,connectionPhase:i?`reconnecting`:`connecting`,lastDisconnectReason:`health_check_unhealthy`}),z(`checkConnection:end`,{healthy:r,attempts:n+1}),r}catch(e){r=e,n+=1,await nf(400*n)}return r&&console.warn(`[ConfigStore] Failed to reach OpenCode after retrying:`,r),e({isConnected:!1,connectionPhase:t().hasEverConnected?`reconnecting`:`connecting`,lastDisconnectReason:`health_check_failed`}),z(`checkConnection:end`,{healthy:!1,attempts:5}),!1},initializeApp:async()=>{if(Rf)return z(`initializeApp:deduped`),Rf;let n=(async()=>{let n=typeof performance<`u`?performance.now():Date.now();z(`initializeApp:start`);try{if(He(),!await t().checkConnection()){e({isConnected:!1,connectionPhase:t().hasEverConnected?`reconnecting`:`connecting`});return}z(`initApp:skipped`,{reason:`checkConnection already verified health`});let r=B.getDirectory()??Ue.getState().currentDirectory??cf(t().activeDirectoryKey),i=_f(Xo(Si.getState().projects,$.getState().availableWorktreesByProject,r??null)?.path??r??null),a=i??gf();if(!a){z(`initializeApp:noProjectConfigDirectory`),e({isInitialized:!0,isConnected:!0,hasEverConnected:!0,connectionPhase:`connected`});return}!i&&r!==a&&(z(`initializeApp:normalizedUnknownDirectoryToProject`,{initialDirectory:r,configDirectory:a}),B.setDirectory(a),Ue.getState().setDirectory(a,{showOverlay:!1}));let o=sf(a);t().activeDirectoryKey!==o&&e({activeDirectoryKey:o}),await Promise.all([t().loadProviders({directory:a,source:`initializeApp`,forceRefresh:!0}),t().loadAgents({directory:a,source:`initializeApp`,forceRefresh:!0})]),e({isInitialized:!0,isConnected:!0,hasEverConnected:!0,connectionPhase:`connected`});let s=typeof performance<`u`?performance.now():Date.now();z(`initializeApp:end`,{durationMs:Math.round(s-n),providers:t().providers.length,agents:t().agents.length})}catch(n){console.error(`Failed to initialize app:`,n),e({isInitialized:!1,isConnected:!1,connectionPhase:t().hasEverConnected?`reconnecting`:`connecting`,lastDisconnectReason:`init_error`}),z(`initializeApp:error`,{error:n instanceof Error?n.message:String(n)})}})().finally(()=>{Rf=null});return Rf=n,n},prewarmProjectConfigs:async e=>{if(!t().isConnected)return;let n=vf(e??cf(t().activeDirectoryKey)),r=Si.getState().projects.map(e=>e.path).filter(e=>typeof e==`string`&&e.trim().length>0),i=new Set([n]),a=[];for(let e of r){let n=vf(e);if(i.has(n))continue;i.add(n);let r=t().directoryScoped[n];if((r?.providers.length||t().providers.length>0)&&(r?.agents.length||t().agents.length>0))continue;let o=cf(n);o&&a.push(o)}for(let e of a){if(await nf(bf),!t().isConnected)return;let n=vf(e),r=t().directoryScoped[n],i=[];!r?.providers.length&&t().providers.length===0&&i.push(t().loadProviders({directory:e,source:`projectConfigPrewarm`})),!r?.agents.length&&t().agents.length===0&&i.push(t().loadAgents({directory:e,source:`projectConfigPrewarm`})),i.length>0&&await Promise.allSettled(i)}},getCurrentProvider:()=>{let{providers:e,currentProviderId:n}=t();return e.find(e=>e.id===n)},getCurrentModel:()=>{let e=t().getCurrentProvider(),{currentModelId:n}=t();if(e)return e.models.find(e=>e.id===n)},getCurrentAgent:()=>{let{agents:e,currentAgentName:n}=t();if(n)return e.find(e=>e.name===n)},getModelMetadata:(e,n)=>{if(!e||!n)return;let r=t().providers.find(t=>t.id===e);if(!r)return;let i=r.models.find(e=>e.id===n);if(i)return tf(e,i)},getVisibleAgents:()=>{let{agents:e}=t();return eo(e)}}),{name:`config-store`,version:4,storage:h(),migrate:e=>Ff(e),merge:(e,t)=>Df({...t,...Ff(e)}),partialize:e=>{let t=e.directoryScoped[e.activeDirectoryKey],n=e.providers.length>0?{providers:qd(e.providers),defaultProviders:Jd(e.defaultProviders),providerCatalogPartial:!1}:t&&t.providerCatalogPartial!==!0?{providers:qd(t.providers),defaultProviders:Jd(t.defaultProviders),providerCatalogPartial:!1}:{providers:[],defaultProviders:{},providerCatalogPartial:t?.providerCatalogPartial===!0},i=(t,r)=>{let i=Af(r?.lastUserSelection)??jf(Of(r?.lastSelectedAgentName,!0),kf(r?.agentModelSelections))??(t===e.activeDirectoryKey?Af(e.lastUserSelection):void 0);return{...t===e.activeDirectoryKey?n:{providers:[],defaultProviders:{},providerCatalogPartial:r?.providerCatalogPartial===!0},agents:[],currentProviderId:r?.currentProviderId??(t===e.activeDirectoryKey?e.currentProviderId:``),currentModelId:r?.currentModelId??(t===e.activeDirectoryKey?e.currentModelId:``),currentVariant:r?.currentVariant??(t===e.activeDirectoryKey?e.currentVariant:void 0),currentAgentName:r?.currentAgentName??(t===e.activeDirectoryKey?e.currentAgentName:void 0),selectedProviderId:Wd(r?.selectedProviderId??(t===e.activeDirectoryKey?e.selectedProviderId:``)),agentModelSelections:{},lastSelectedAgentName:i?.agentName??Of(r?.lastSelectedAgentName,!0),lastUserSelection:i,opencodeDefaultAgent:r?.opencodeDefaultAgent,opencodeDefaultModel:r?.opencodeDefaultModel,selectionSource:r?.selectionSource??(t===e.activeDirectoryKey?e.selectionSource:void 0)}},a=Object.fromEntries(Object.entries(e.directoryScoped).map(([e,t])=>[e,i(e,t)]));e.activeDirectoryKey&&!a[e.activeDirectoryKey]&&(a[e.activeDirectoryKey]=i(e.activeDirectoryKey,void 0));let o=JSON.stringify(n);if(Ef.encode(o).byteLength>xf){let t=a[e.activeDirectoryKey];t&&(t.providers=[],t.defaultProviders={},t.providerCatalogPartial=!0)}let s=Af(e.globalLastUserSelection)??Af(e.lastUserSelection);return{activeDirectoryKey:e.activeDirectoryKey,catalogTransportIdentity:r(),directoryScoped:a,currentProviderId:e.currentProviderId,currentModelId:e.currentModelId,currentVariant:e.currentVariant,currentAgentName:e.currentAgentName,selectedProviderId:Wd(e.selectedProviderId),agentModelSelections:{},lastSelectedAgentName:s?.agentName??Of(e.lastSelectedAgentName,!0),lastUserSelection:Af(e.lastUserSelection)??s,globalLastUserSelection:s,settingsDefaultModel:e.settingsDefaultModel,settingsDefaultVariant:e.settingsDefaultVariant,settingsDefaultAgent:e.settingsDefaultAgent,settingsAutoCreateWorktree:e.settingsAutoCreateWorktree,settingsGitmojiEnabled:e.settingsGitmojiEnabled,settingsDefaultFileViewerPreview:e.settingsDefaultFileViewerPreview,settingsZenModel:e.settingsZenModel,settingsMessageStreamTransport:e.settingsMessageStreamTransport,speechRate:e.speechRate,speechPitch:e.speechPitch,speechVolume:e.speechVolume}}})));typeof window<`u`&&(window.__zustand_config_store__=G);var Uf=async e=>{await G.getState().loadProviders({source:e,forceRefresh:!0})},Wf=null;Wf||=kr(async e=>{let t=[];if(B.clearConfigCache(),jr(e,`agents`)){let{loadAgents:e}=G.getState();t.push(e({source:`configChange:agents`,forceRefresh:!0}).then(()=>{}))}jr(e,`providers`)&&t.push(Uf(`configChange:providers`)),t.length>0&&await Promise.all(t)});var Gf=null,Kf=null;Kf||=Od((e,t)=>{G.getState().applyOpenCodeConfigDefaults(e,`syncConfig`,t)}),typeof window<`u`&&!Gf&&(Gf=Ue.subscribe((e,t)=>{let n=sf(e.currentDirectory),r=sf(t.currentDirectory);n!==r&&(z(`directoryStore:changed`,{previous:r,next:n}),G.getState().activateDirectory(e.currentDirectory))}));var qf=e=>typeof e==`number`&&Number.isFinite(e)?e:null,Jf=e=>{let t=e.metadata;return qf(t?.openchamber?.titleRefresh?.activityUpdatedAt)??qf(e.time?.updated)??qf(e.time?.created)??0},Yf=[`load failed`,`network connection was lost`,`network request failed`,`failed to fetch`,`econnreset`,`econnrefused`,`etimedout`,`socket hang up`,`signal timed out`,`opencode api unavailable`,`503`,`502`];function Xf(e){if(!e)return!1;let t=String(e instanceof Error?e.message:e).toLowerCase();if(Yf.some(e=>t.includes(e)))return!0;let n=e?.status;return typeof n==`number`&&n>=500&&n<600}async function Zf(e,t={}){let{attempts:n=3,delay:r=500,factor:i=2,maxDelay:a=1e4,retryIf:o=Xf}=t,s;for(let t=0;t<n;t++)try{return await e()}catch(e){if(s=e,t===n-1||!o(e))throw e;let c=Math.min(r*i**+t,a);await new Promise(e=>setTimeout(e,c))}throw s}var Qf=[`file`,`status`,`additions`,`deletions`],$f=e=>{if(!e||typeof e!=`object`||Array.isArray(e))return;let t={},n=e;return typeof n.messageID==`string`&&(t.messageID=n.messageID),typeof n.partID==`string`&&(t.partID=n.partID),Object.keys(t).length>0?t:void 0},ep=e=>e===void 0?!1:!e||typeof e!=`object`||Array.isArray(e)?!0:Object.keys(e).some(e=>e!==`messageID`&&e!==`partID`),tp=e=>typeof e.before==`string`||typeof e.after==`string`||typeof e.from==`string`||typeof e.to==`string`||typeof e.patch==`string`;function np(e){if(!e||typeof e!=`object`||Array.isArray(e))return e;let t=e;if(!tp(t))return e;let n={};for(let e of Qf)e in t&&t[e]!==void 0&&(n[e]=t[e]);return n}function rp(e){if(!Array.isArray(e))return e;let t=!1,n=e.map(e=>{let n=np(e);return n!==e&&(t=!0),n});return t?n:e}function ip(e){if(!e||typeof e!=`object`||Array.isArray(e))return e;let t=e,n=t.summary;if(!n||typeof n!=`object`||Array.isArray(n)||!Object.prototype.hasOwnProperty.call(n,`diffs`))return e;let r=n.diffs;if(!Array.isArray(r)){let e={...n,diffCount:0,hasDiffs:!1};return delete e.diffs,{...t,summary:e}}let i=rp(r),a=i.length,o=a>0,s=n.diffCount===a&&n.hasDiffs===o;return i===r&&s?e:{...t,summary:{...n,diffs:i,diffCount:a,hasDiffs:o}}}function ap(e){let t=e.revert,n=e,r=!1;if(t&&(typeof t.snapshot==`string`||typeof t.diff==`string`)){let e={...t};delete e.snapshot,delete e.diff,n={...n,revert:e},r=!0}let i=ip(r?n:e);return i===(r?n:e)?n:i}function op(e){let t=e;if(!(ep(t.revert)||Array.isArray(t.summary?.diffs)||typeof t.summary?.diffCount==`number`||typeof t.summary?.hasDiffs==`boolean`||`permission`in t))return e;let n=ap(e),r={...n};delete r.permission;let i=$f(n.revert);i?r.revert=i:delete r.revert;let a=n.summary;if(a&&typeof a==`object`&&!Array.isArray(a)){let e={...a};delete e.diffs,delete e.diffCount,delete e.hasDiffs,r.summary=e}return r}function sp(e){return ip(e)}var cp=new Set([`smartfetch-secondary`]),lp=e=>typeof e==`string`&&e.length>0,up=e=>{let t=e.metadata;if(!t||typeof t!=`object`)return!1;let n=t.openchamber;if(!n||typeof n!=`object`)return!1;let r=n;return!!(lp(r.assistant?.assistantID)||lp(r.scheduledTask?.taskID))},dp=e=>{let t=e.parentID;return typeof t==`string`&&t.trim()?t:null},fp=e=>!(cp.has(e.title)||dp(e)||up(e)),pp=e=>{if(!e)return null;let t=Number(e);return Number.isFinite(t)?t:null},mp=(e,t)=>{if(!e||typeof e!=`object`)return null;let n=e.headers;if(!n||typeof n!=`object`)return null;let r=n;if(typeof r.get==`function`)return r.get(t);let i=n,a=i[t]??i[t.toLowerCase()];return typeof a==`string`?a:null},hp=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)}},gp=(e,t)=>{if(e.error){let n=e.response?.status,r=Error(`${t} failed${n?` (${n})`:``}: ${hp(e.error)}`);throw n!==void 0&&(r.status=n),r}if(!Array.isArray(e.data)){let e=Error(`${t} returned no data`);throw e.status=503,e}return e.data};async function _p(e,t){let n=[],r=new Set,i=t.cursor;for(;;){let a=t.maxItems===void 0?t.pageSize:Math.max(0,t.maxItems-n.length);if(a===0)break;let o=Math.min(t.pageSize,a),{response:s,payload:c}=await Zf(async()=>{let n=t.timeoutMs===void 0?void 0:AbortSignal.timeout(t.timeoutMs),r=t.signal&&n?AbortSignal.any([t.signal,n]):t.signal??n,a=await e.experimental.session.list({...t.directory?{directory:t.directory}:{},archived:t.archived,...t.roots===void 0?{}:{roots:t.roots},...t.start===void 0?{}:{start:t.start},limit:o,...i===void 0?{}:{cursor:i}},r?{signal:r}:void 0);return{response:a.response,payload:gp(a,`experimental.session.list`).map(e=>op(e))}},{attempts:t.retryAttempts??3,delay:500});if(c.length===0)break;let l=c.filter(fp),u=0;for(let e of l)!e?.id||r.has(e.id)||(r.add(e.id),n.push(e),u+=1);if(u>0&&t.onPage?.(l),t.maxItems!==void 0&&n.length>=t.maxItems||c.length<o)break;let d=pp(mp(s,`x-next-cursor`)),f=c[c.length-1]?.time?.updated,p=d??(typeof f==`number`&&Number.isFinite(f)?f:void 0);if(p===void 0||i!==void 0&&p>=i)break;i=p}return n}var vp=`/api/magic-prompts`,yp=new Map([{id:`git.commit.generate.visible`,title:`Commit Generation Visible Prompt`,group:`Git`,description:`Visible user message for commit message generation.`,template:`You are generating a Conventional Commits subject line from the diffs of the selected files.`},{id:`git.commit.generate.instructions`,title:`Commit Generation Instructions`,group:`Git`,description:`Hidden instructions for commit message generation.`,placeholders:[{key:`selected_files`,description:`Bullet list of currently selected file paths.`}],template:`Return exactly one JSON object and nothing else. Do not include prose, markdown, explanations, or code fences.
6
+ `?n+=1:r===`\r`&&n+1===e.length&&(c=!0),t=n+1)}h(e.slice(t))};try{for(;;){let{done:e,value:t}=await i.read();if(e)break;g(a.decode(t,{stream:!0}))}g(a.decode()),d=!0}catch(e){throw t.signal?.aborted||_t(e)?vt(e):e instanceof Error&&e.message===`SSE response exceeds buffer limit`?e:Error(`SSE response read failed`)}finally{d||await bt(i),i.releaseLock()}},St=null,Ct=null,wt=null,Tt=0,Et=null,Dt=new Set,Ot=new Map,kt=e=>e===`session-index-changed`||e===`message-queue-changed`||e===`assistants-changed`,At=()=>{Ot.clear()},jt=e=>Ot.get(e),Mt=(e,t)=>{let n=Ot.get(e);(n===void 0||t>n)&&Ot.set(e,t)},Nt=3e4,Pt=45e3,Ft=()=>{wt&&=(clearTimeout(wt),null)},It=()=>{if(Ct||Dt.size===0)return;let e=Math.min(1e3*2**Math.min(Tt,5),Nt);Ct=setTimeout(()=>{Ct=null,Tt+=1,Ht()},e)},Lt=()=>{Ft();let e=St;St=null,e?.controller.abort()},Rt=e=>{if(Ft(),Dt.size===0||St!==e)return;let t=setTimeout(()=>{St===e&&wt===t&&(wt=null,Lt(),It())},Pt)},zt=e=>{if(!e||e.trim().length===0)return null;try{let t=JSON.parse(e),n=typeof t?.type==`string`?t.type:``,r=t?.properties;return n?{type:n,properties:r}:null}catch{return null}},Bt=e=>{if(e.type===`openchamber:event-stream-ready`)return e.properties===void 0||e.properties===null||typeof e.properties==`object`&&!Array.isArray(e.properties)?{type:`event-stream-ready`}:null;if(e.type===`openchamber:heartbeat`)return null;let t=e.properties&&typeof e.properties==`object`&&!Array.isArray(e.properties)?e.properties:null;if(e.type===`openchamber:worktree-topology-changed`){let e=typeof t?.projectDirectory==`string`?t.projectDirectory.trim():``,n=typeof t?.directory==`string`?t.directory.trim():``,r=t?.operation,i=t?.occurredAt;return!e||!n||r!==`added`&&r!==`removed`||typeof i!=`number`||!Number.isFinite(i)?null:{type:`worktree-topology-changed`,projectDirectory:e,directory:n,operation:r,occurredAt:i}}if(e.type===`openchamber:worktree-bootstrap-status`){let e=typeof t?.directory==`string`?t.directory.trim():``,n=t?.status,r=t?.updatedAt,i=typeof t?.error==`string`&&t.error.trim().length>0?t.error.trim():null;return!e||n!==`pending`&&n!==`ready`&&n!==`failed`||typeof r!=`number`||!Number.isFinite(r)?null:{type:`worktree-bootstrap-status`,directory:e,status:n,error:i,updatedAt:r}}if(e.type===`openchamber:session-index-changed`){let e=t?.revision,n=t?.occurredAt;if(typeof e!=`number`||!Number.isSafeInteger(e)||e<0||typeof n!=`number`||!Number.isFinite(n))return null;let r=t?.sync&&typeof t.sync==`object`&&!Array.isArray(t.sync)?t.sync:null;return{type:`session-index-changed`,revision:e,occurredAt:n,...r?{sync:{active:r.active===!0,enriching:r.enriching===!0}}:{}}}if(e.type===`openchamber:message-queue-changed`){let e=t?.revision,n=t?.occurredAt;return typeof e!=`number`||!Number.isSafeInteger(e)||e<0||typeof n!=`number`||!Number.isFinite(n)?null:{type:`message-queue-changed`,revision:e,occurredAt:n}}if(e.type===`openchamber:assistants-changed`){let e=t?.revision,n=t?.occurredAt;return typeof e!=`number`||!Number.isSafeInteger(e)||e<0||typeof n!=`number`||!Number.isFinite(n)?null:{type:`assistants-changed`,revision:e,occurredAt:n}}if(e.type!==`openchamber:scheduled-task-ran`)return null;let n=typeof t?.projectId==`string`?t.projectId:``,r=typeof t?.taskId==`string`?t.taskId:``,i=typeof t?.ranAt==`number`?t.ranAt:Date.now(),a=t?.status;return!n||!r?null:{type:`scheduled-task-ran`,projectId:n,taskId:r,ranAt:i,status:a===`running`||a===`error`?a:`success`,...typeof t?.sessionId==`string`&&t.sessionId.length>0?{sessionId:t.sessionId}:{}}},Vt=e=>{let t=Bt(e);if(t){t.type===`event-stream-ready`&&(Tt=0),kt(t.type)&&`revision`in t&&Mt(t.type,t.revision);for(let e of Dt)try{e(t)}catch{}}},Ht=()=>{if(typeof window>`u`||Dt.size===0||St)return;let e={controller:new AbortController};St=e,xt(`/api/openchamber/events`,{signal:e.controller.signal,onOpen:()=>{St===e&&Rt(e)},onActivity:()=>{St===e&&Rt(e)},onMessage:t=>{if(St!==e)return;let n=zt(t);n&&Vt(n)}}).then(()=>{St===e&&(St=null,Ft(),It())},()=>{St===e&&(St=null,Ft(),e.controller.signal.aborted||It())})},Ut=()=>{Et||typeof window>`u`||(Et=d(()=>{At(),Ct&&=(clearTimeout(Ct),null),Lt(),Tt=0,Ht()}))},Wt=()=>{Et?.(),Et=null},Gt=e=>(Dt.add(e),Ut(),Ht(),()=>{Dt.delete(e),Dt.size===0&&(At(),Ct&&=(clearTimeout(Ct),null),Tt=0,Lt(),Wt())}),Kt=!1,qt=Promise.resolve(),Jt=null,Yt=()=>{Kt||(Kt=!0,qt=new Promise(e=>{Jt=e}))},Xt=async()=>qt,Zt=()=>{if(!Kt)return;Kt=!1;let e=Jt;Jt=null,e?.()},Qt=`openchamber_input_draft_metadata_v1`,$t=`openchamber_input_draft_metadata_migration_v1`,en=`openchamber_chat_input_draft_`,tn=`openchamber_chat_confirmed_mentions_`,nn=()=>({ok:!1,error:{code:`unavailable`}}),rn=()=>({ok:!1,error:{code:`cancelled`}}),an=e=>({ok:!1,error:{code:e instanceof DOMException&&e.name===`QuotaExceededError`?`quota`:`unavailable`}}),on=e=>typeof e==`object`&&!!e&&(Object.getPrototypeOf(e)===Object.prototype||Object.getPrototypeOf(e)===null),sn=(e,t)=>Object.keys(e).every(e=>t.includes(e)),cn=e=>typeof e==`number`&&Number.isSafeInteger(e)&&e>0,ln=e=>typeof e==`string`&&e.length>0,un=e=>({read:async t=>{if(!e)return nn();try{return{ok:!0,value:e.getItem(t)}}catch(e){return an(e)}},write:async(t,n)=>{if(!e)return nn();try{return e.setItem(t,n),{ok:!0,value:void 0}}catch(e){return an(e)}},remove:async t=>{if(!e)return nn();try{return e.removeItem(t),{ok:!0,value:void 0}}catch(e){return an(e)}},keys:async()=>{if(!e)return nn();try{let t=[];for(let n=0;n<e.length;n+=1){let r=e.key(n);r!==null&&t.push(r)}return{ok:!0,value:t}}catch(e){return an(e)}}}),dn=()=>{try{return un(typeof window>`u`?null:window.localStorage)}catch{return un(null)}},fn=(e,t,n,r)=>{let i=[];try{let e=n===null?[]:JSON.parse(n);Array.isArray(e)&&(i=e.filter(e=>typeof e==`string`))}catch{}return{suffix:e,text:t??``,mentions:i,keys:r}},pn=async e=>{let t=await e.keys();if(!t.ok)return t;let n=new Set;for(let e of t.value)e.startsWith(en)&&n.add(e.slice(29)),e.startsWith(tn)&&n.add(e.slice(36));let r=[];for(let i of n){let n=`${en}${i}`,a=`${tn}${i}`,[o,s]=await Promise.all([e.read(n),e.read(a)]);if(!o.ok)return o;if(!s.ok)return s;r.push(fn(i,o.value,s.value,[n,a].filter(e=>t.value.includes(e))))}return{ok:!0,value:r}},mn=e=>{if(!(!on(e)||!sn(e,[`suffix`,`text`,`mentions`,`keys`])||typeof e.suffix!=`string`||typeof e.text!=`string`||!Array.isArray(e.mentions)||!e.mentions.every(e=>typeof e==`string`)||!Array.isArray(e.keys)||!e.keys.every(e=>typeof e==`string`)))return{suffix:e.suffix,text:e.text,mentions:[...e.mentions],keys:[...e.keys]}},hn=e=>{try{let t=JSON.parse(e);return Array.isArray(t)&&t.length===3&&ln(t[0])&&(t[1]===`session`||t[1]===`draft`)&&ln(t[2])&&e===JSON.stringify(t)}catch{return!1}},gn=e=>{if(!on(e)||!sn(e,[`complete`,`claimedTransportIdentity`,`captured`,`markerCommitted`,`cleanupComplete`])||typeof e.complete!=`boolean`||typeof e.claimedTransportIdentity!=`string`||e.captured!==void 0&&typeof e.captured!=`boolean`||e.markerCommitted!==void 0&&typeof e.markerCommitted!=`boolean`||e.cleanupComplete!==void 0&&typeof e.cleanupComplete!=`boolean`)return;let t=e.cleanupComplete??e.complete,n=e.captured??e.complete,r=e.markerCommitted??e.complete;if(!((n||r||t)&&!ln(e.claimedTransportIdentity))&&!(r&&!n)&&!(t&&(!n||!r)))return{complete:t,claimedTransportIdentity:e.claimedTransportIdentity,captured:n,markerCommitted:r,cleanupComplete:t}},_n=e=>{if(!on(e)||!sn(e,[`version`,`drafts`,`tombstones`,`migration`,`legacy`])||e.version!==1||!on(e.drafts)||!on(e.tombstones)||!on(e.legacy)||!sn(e.legacy,[`new`,`entries`])||!on(e.legacy.entries))return;let t=gn(e.migration);if(!t)return;let n={};for(let[t,r]of Object.entries(e.drafts)){let e=w(r);if(!e||t!==R(e.key))return;n[t]=e}let r={};for(let[t,n]of Object.entries(e.tombstones)){if(!hn(t)||!cn(n))return;r[t]=n}let i={};for(let[t,n]of Object.entries(e.legacy.entries)){let e=mn(n);if(!e||t!==e.suffix||t===`new`)return;i[t]=e}let a=e.legacy.new===void 0?void 0:mn(e.legacy.new);if(!(e.legacy.new!==void 0&&(!a||a.suffix!==`new`)))return{version:1,drafts:n,tombstones:r,migration:t,legacy:{...a?{new:a}:{},entries:i}}},vn=(e=``)=>({version:1,drafts:{},tombstones:{},migration:{complete:!1,claimedTransportIdentity:e,captured:!1,markerCommitted:!1,cleanupComplete:!1},legacy:{entries:{}}}),yn=e=>{try{return{ok:!0,value:JSON.stringify(e)}}catch{return{ok:!1,error:{code:`serialization`}}}},bn=async e=>{let t=await e.read(Qt);if(!t.ok)return t;if(t.value===null)return{ok:!0,value:null};try{let e=_n(JSON.parse(t.value));return e?{ok:!0,value:e}:{ok:!1,error:{code:`corrupt`}}}catch{return{ok:!1,error:{code:`corrupt`}}}},xn=async(e,t)=>{let n=_n(t);if(!n)return{ok:!1,error:{code:`corrupt`}};let r=yn(n);return r.ok?e.write(Qt,r.value):r},Sn=e=>on(e)&&sn(e,[`version`,`claimedTransportIdentity`])&&e.version===1&&ln(e.claimedTransportIdentity)?{version:1,claimedTransportIdentity:e.claimedTransportIdentity}:void 0,Cn=e=>yn({version:1,claimedTransportIdentity:e}),wn=(e,t,n)=>{let r={},i;for(let e of t)e.suffix===`new`?i=e:r[e.suffix]=e;return{...e,migration:{complete:!1,claimedTransportIdentity:n,captured:!0,markerCommitted:!1,cleanupComplete:!1},legacy:{...i?{new:i}:{},entries:r}}},Tn=e=>[...new Set([e.legacy.new,...Object.values(e.legacy.entries)].flatMap(e=>e?.keys??[]))],En=new WeakMap,Dn=e=>{let t=En.get(e);if(t)return t;let n=Promise.resolve(),r,i=!0,a=e=>{let t=n.then(e,e);return n=t.then(()=>void 0,()=>void 0),t},o={persist:t=>{let n=_n(t);return n?i?a(async()=>i?xn(e,n):nn()):Promise.resolve(nn()):Promise.resolve({ok:!1,error:{code:`corrupt`}})},migrate:(t,n={})=>{if(r)return r;let o=a(async()=>{let r=await bn(e);if(!r.ok)return r;let a=r.value??vn(),o=i&&(n.persistenceEnabled??!0);if(!a.migration.captured){let n=await pn(e);if(!n.ok)return n;if(!o)return{ok:!0,value:wn(a,n.value,``)};if(a=wn(a,n.value,t),!i)return{ok:!0,value:a};let r=await xn(e,a);if(!r.ok)return r}if(!i||!(n.persistenceEnabled??!0)){let t=await pn(e);return t.ok?{ok:!0,value:a}:t}let s=await e.read($t);if(!s.ok)return s;if(s.value!==null)try{let t=Sn(JSON.parse(s.value));if(!t)return{ok:!1,error:{code:`corrupt`}};if(t.claimedTransportIdentity!==a.migration.claimedTransportIdentity){let t=Cn(a.migration.claimedTransportIdentity);if(!t.ok)return t;if(!i)return{ok:!0,value:a};let n=await e.write($t,t.value);if(!n.ok)return n}}catch{return{ok:!1,error:{code:`corrupt`}}}else{let t=Cn(a.migration.claimedTransportIdentity);if(!t.ok)return t;if(!i)return{ok:!0,value:a};let n=await e.write($t,t.value);if(!n.ok)return n}if(a.migration.cleanupComplete)return{ok:!0,value:a};for(let t of Tn(a)){if(!i)return{ok:!0,value:a};let n=await e.remove(t);if(!n.ok)return n}if(a={...a,migration:{complete:!0,claimedTransportIdentity:a.migration.claimedTransportIdentity,captured:!0,markerCommitted:!0,cleanupComplete:!0}},!i)return{ok:!0,value:a};let c=await xn(e,a);return c.ok?{ok:!0,value:a}:c}).finally(()=>{r=void 0});return r=o,o},flush:()=>n,setEnabled:async e=>{i=e,i||await n}};return En.set(e,o),o},On=e=>{let t=Dn(e),n=!0,r=!1,i=[],a=[],o=()=>{if(r||i.length>0)return;let e=a;a=[],e.forEach(e=>e())},s=()=>{if(r)return;let e=i.shift();if(!e){o();return}r=!0,t.persist(e.snapshot).then(e.resolve).finally(()=>{r=!1,s()})};return{persist:e=>{let t=_n(e);return t?n?new Promise(e=>{i.push({snapshot:t,resolve:e}),s()}):Promise.resolve(nn()):Promise.resolve({ok:!1,error:{code:`corrupt`}})},cancelPending:()=>{let e=i;i=[],e.forEach(({resolve:e})=>e(rn())),o()},flush:()=>r||i.length>0?new Promise(e=>a.push(e)):Promise.resolve(),setEnabled:async e=>{if(n=e,!n){let e=i;i=[],e.forEach(({resolve:e})=>e(rn()))}await(r||i.length>0?new Promise(e=>a.push(e)):Promise.resolve()),await t.setEnabled(e),await t.flush()}}},kn=`openchamber-input-drafts`,An=1,jn=`blobs`,Mn=`blobRefs`,Nn=class extends Error{code;constructor(e){super(e),this.code=e}},Pn=e=>({ok:!1,error:{code:e instanceof Nn?e.code:e instanceof DOMException&&e.name===`QuotaExceededError`?`quota-exceeded`:e instanceof DOMException&&e.name===`AbortError`?`transaction-aborted`:`transaction-failed`}}),Fn=e=>{if(!(e instanceof Blob)&&!ie(e))throw new Nn(`invalid-value`)},In=e=>{if(!e)throw new Nn(`invalid-value`)},Ln=(e,t)=>({id:Se(e),blobID:t,transportIdentity:e.transportIdentity,ownerKind:e.owner.kind,ownerID:e.owner.ownerID}),Rn=async e=>{if(typeof e==`string`)return`url:${e}`;let t=await crypto.subtle.digest(`SHA-256`,await e.arrayBuffer()),n=[...new Uint8Array(t)].map(e=>e.toString(16).padStart(2,`0`)).join(``);return`blob:${e.type}:${e.size}:${n}`},zn=async(e,t)=>(e.fingerprint??await Rn(e.value))===t,Bn=async(e,t=!1)=>{let n=await e.getAllBlobRefs(),r=await e.getAllBlobs(),i=new Map;for(let t of n)await e.getBlob(t.blobID)?i.set(t.blobID,(i.get(t.blobID)??0)+1):await e.deleteBlobRef(t.id);for(let n of r){let r=i.get(n.id)??0;r||!t?await e.putBlob({...n,refCount:r}):await e.deleteBlob(n.id)}},Vn=e=>{try{let t=JSON.parse(e);return!Array.isArray(t)||t.length!==4||typeof t[0]!=`string`||typeof t[2]!=`string`||t[1]!==`session`&&t[1]!==`draft`&&t[1]!==`surface`&&t[1]!==`queue`&&t[1]!==`send`?void 0:{transportIdentity:t[0],ownerKind:t[1],ownerID:t[2]}}catch{return}},Hn=(e,t)=>{let n=Vn(e.id),r=e.ownerKind??n?.ownerKind,i=e.transportIdentity??n?.transportIdentity;return r!==void 0&&t.ownerKinds.includes(r)&&(t.transportIdentities===void 0||i!==void 0&&t.transportIdentities.includes(i))},Un=(e=Wn())=>{let t=async(t,n)=>{try{return{ok:!0,value:await e.transaction(async e=>{let r=await e.getBlobRef(Se(t));return!r||n!==void 0&&r.blobID!==n?!1:(await e.deleteBlobRef(r.id),await Bn(e),(await e.getAllBlobRefs()).some(e=>e.blobID===r.blobID)||await e.deleteBlob(r.blobID),!0)})}}catch(e){return Pn(e)}};return{put:async(t,n)=>{try{In(t),Fn(n);let r=await Rn(n);return await e.transaction(async e=>{let i=await e.getBlob(t);if(i&&!await zn(i,r))throw new Nn(`blob-id-conflict`);i||await e.putBlob({id:t,value:n,refCount:0,fingerprint:r})}),{ok:!0,value:void 0}}catch(e){return Pn(e)}},putAndRetain:async(t,n,r)=>{try{In(n),Fn(r);let i=await Rn(r);return await e.transaction(async e=>{let a=Se(t),o=await e.getBlobRef(a);if(o&&o.blobID!==n)throw new Nn(`blob-id-conflict`);let s=await e.getBlob(n);if(s&&!await zn(s,i))throw new Nn(`blob-id-conflict`);s||await e.putBlob({id:n,value:r,refCount:0,fingerprint:i}),o||await e.putBlobRef(Ln(t,n)),await Bn(e)}),{ok:!0,value:void 0}}catch(e){return Pn(e)}},read:async t=>{try{let n=await e.transaction(e=>e.getBlob(t));return n?{ok:!0,value:n.value}:{ok:!1,error:{code:`missing-blob`}}}catch(e){return Pn(e)}},readReference:async t=>{try{return{ok:!0,value:(await e.transaction(e=>e.getBlobRef(Se(t))))?.blobID}}catch(e){return Pn(e)}},retain:async(t,n)=>{try{return In(n),await e.transaction(async e=>{let r=await e.getBlobRef(Se(t));if(r&&r.blobID!==n)throw new Nn(`blob-id-conflict`);if(!await e.getBlob(n))throw new Nn(`missing-blob`);r||await e.putBlobRef(Ln(t,n)),await Bn(e)}),{ok:!0,value:void 0}}catch(e){return Pn(e)}},release:e=>t(e),releaseIfMatches:(e,n)=>t(e,n),reconcileReferences:async(t,n={ownerKinds:[`session`,`draft`]})=>{try{return{ok:!0,value:await e.transaction(async e=>{let r=[],i=[],a=[],o=new Map((await e.getAllBlobRefs()).map(e=>[e.id,e]));for(let[i,a]of o)Hn(a,n)&&t.get(i)!==a.blobID&&(await e.deleteBlobRef(i),r.push(i));for(let[r,s]of t){let t=Vn(r);if(!t||!n.ownerKinds.includes(t.ownerKind)||n.transportIdentities!==void 0&&!n.transportIdentities.includes(t.transportIdentity)){a.push(r);continue}let c=o.get(r);if(!await e.getBlob(s)){a.push(r);continue}(!c||c.blobID!==s)&&(await e.putBlobRef({id:r,blobID:s,...t}),i.push(r))}return await Bn(e,!0),{released:r,repaired:i,missing:a}})}}catch(e){return Pn(e)}},reconcileOwnerReferences:async(t,n)=>{let r=new Map;for(let[e,i]of n)r.set(Se({transportIdentity:t.transportIdentity,owner:t.owner,attachmentOccurrenceRefID:e}),i);try{return{ok:!0,value:await e.transaction(async e=>{let n=0,i=new Set;for(let a of await e.getAllBlobRefs())a.transportIdentity===t.transportIdentity&&a.ownerKind===t.owner.kind&&a.ownerID===t.owner.ownerID&&r.get(a.id)!==a.blobID&&(await e.deleteBlobRef(a.id),i.add(a.blobID),n++);await Bn(e);let a=await e.getAllBlobRefs();for(let t of i)a.some(e=>e.blobID===t)||await e.deleteBlob(t);return n})}}catch(e){return Pn(e)}},discardUnreferenced:async t=>{try{return{ok:!0,value:await e.transaction(async e=>!await e.getBlob(t)||(await e.getAllBlobRefs()).some(e=>e.blobID===t)?!1:(await e.deleteBlob(t),!0))}}catch(e){return Pn(e)}}}},Wn=()=>({transaction:async e=>{let t=await Gn(),n=t.transaction([jn,Mn],`readwrite`),r=n.objectStore(jn),i=n.objectStore(Mn),a=e=>new Promise((t,r)=>{e.onsuccess=()=>t(e.result),e.onerror=()=>r(e.error??n.error??Error(`IndexedDB request failed`))}),o=new Promise((e,t)=>{n.oncomplete=()=>e(),n.onabort=()=>t(n.error??new DOMException(`aborted`,`AbortError`)),n.onerror=()=>{console.error(`Input draft IndexedDB transaction error`,n.error)}}),s;try{let t=await e({getBlob:e=>a(r.get(e)),getAllBlobs:()=>a(r.getAll()),putBlob:async e=>{await a(r.put(e))},deleteBlob:async e=>{await a(r.delete(e))},getBlobRef:e=>a(i.get(e)),getAllBlobRefs:()=>a(i.getAll()),putBlobRef:async e=>{await a(i.put(e))},deleteBlobRef:async e=>{await a(i.delete(e))}});return await o,t}catch(e){s=e;try{n.abort()}catch{}try{await o}catch(e){s===void 0&&(s=e)}throw s}finally{t.close()}}}),Gn=()=>new Promise((e,t)=>{if(!globalThis.indexedDB){t(new Nn(`database-unavailable`));return}let n=indexedDB.open(kn,An),r=!1,i=()=>{r||(r=!0,t(new Nn(`database-unavailable`)))};n.onupgradeneeded=()=>{let e=n.result;e.objectStoreNames.contains(jn)||e.createObjectStore(jn,{keyPath:`id`}),e.objectStoreNames.contains(Mn)||e.createObjectStore(Mn,{keyPath:`id`})},n.onsuccess=()=>{let t=n.result;if(t.onversionchange=()=>t.close(),r){t.close();return}r=!0,e(t)},n.onerror=i,n.onblocked=i}),Kn=()=>({drafts:{},tombstones:{},migration:{complete:!1,claimedTransportIdentity:``,captured:!1,markerCommitted:!1,cleanupComplete:!1},legacy:{entries:{}}}),qn=e=>({version:1,drafts:e.drafts,tombstones:e.tombstones,migration:e.migration,legacy:e.legacy}),Jn=e=>{let t=qn(e),n=Yn(JSON.parse(JSON.stringify(t)));return{drafts:n.drafts,tombstones:n.tombstones,migration:n.migration,legacy:n.legacy}},Yn=e=>{let t=_n(e);if(!t)throw Error(`invalid draft snapshot`);return t},Xn=e=>e instanceof Map?[...e.entries()]:Object.entries(e??{}),Zn=e=>typeof e==`string`?e:R(e),Qn=[`session`,`draft`,`surface`],$n=e=>({transportIdentity:e.transportIdentity,owner:{kind:e.owner.kind,ownerID:e.owner.ownerID},attachmentOccurrenceRefID:e.attachmentOccurrenceRefID}),er=e=>JSON.parse(JSON.stringify(e)),tr=e=>e.phase===`metadata`?{phase:`metadata`,error:{code:e.error.code}}:{phase:`blob`,error:{...e.error},...e.reference?{reference:$n(e.reference)}:{}},nr=e=>({status:e.status,keys:[...e.keys],errors:e.errors.map(tr),cleanupErrors:e.cleanupErrors.map(tr)}),rr=e=>typeof e==`number`&&Number.isSafeInteger(e)&&e>0,ir=e=>{try{let t=JSON.parse(e);return Array.isArray(t)&&t.length===3&&typeof t[0]==`string`&&Qn.includes(t[1])&&typeof t[2]==`string`&&t[0].length>0&&t[2].length>0}catch{return!1}},ar=e=>[...e.attachments,...e.syntheticParts.flatMap(e=>e.attachments)].flatMap(t=>t.locator.kind===`blob`?[{reference:{transportIdentity:e.key.transportIdentity,owner:{kind:e.key.owner.kind,ownerID:e.key.owner.ownerID},attachmentOccurrenceRefID:t.attachmentRefID},attachment:er(t)}]:[]),or=e=>{let t=new Map;for(let n of Object.values(e))for(let e of ar(n))t.set(Se(e.reference),e);return t},sr=(e,t)=>({phase:`blob`,error:{...e},...t?{reference:$n(t)}:{}}),cr=(e,t=[])=>({status:e,keys:t,errors:[],cleanupErrors:[]}),lr=e=>e?.attachment.locator.kind===`blob`?e.attachment.locator.blobID:``,ur=(e,t,n={})=>{let r=Kn(),i=n.enabled??!0,a=0,o=!1,s=Promise.resolve(),c=new Map,l=e=>{let t=s.then(e,e);return s=t.then(()=>void 0,()=>void 0),t.then(e=>e&&typeof e==`object`&&`status`in e&&`keys`in e&&`errors`in e&&`cleanupErrors`in e?nr(e):e)},u=async(t=r.drafts)=>{let n=[],i=new Map([...or(t)].map(([e,t])=>[e,t.attachment.locator.kind===`blob`?t.attachment.locator.blobID:``]));for(let[t,r]of c){if(i.get(t)===r.expectedBlobID){c.delete(t);continue}let a=await e.releaseIfMatches($n(r.reference),r.expectedBlobID);a.ok?c.delete(t):n.push(sr(a.error,r.reference))}return n},d=async(t,n,r,i)=>{let o=$n(t),s=await e.releaseIfMatches(o,n);s.ok||(c.set(Se(o),{reference:$n(o),expectedBlobID:n,generation:a,reason:i}),r.push(sr(s.error,o)))},f=async(t,n)=>{let r=t.attachment.locator.kind===`blob`?t.attachment.locator.blobID:``,i=$n(t.reference),a=er(t.attachment),o=await e.readReference(i);if(!o.ok)return{acquired:!1,error:sr(o.error,i)};if(o.value&&o.value!==r)return{acquired:!1,error:sr({code:`reference-conflict`},i)};if(o.value===r){let t=await e.read(r);if(t.ok)return{acquired:!1};if(t.error.code!==`missing-blob`)return{acquired:!1,error:sr(t.error,i)};let o=await n?.($n(i),er(a));if(o===void 0)return{acquired:!1,error:sr({code:`runtime-value-missing`},i)};let s=await e.putAndRetain(i,r,o);return s.ok?{acquired:!0}:{acquired:!1,error:sr(s.error,i)}}let s=await e.read(r);if(s.ok){let t=await e.retain(i,r);return t.ok?{acquired:!0}:{acquired:!1,error:sr(t.error,i)}}if(s.error.code!==`missing-blob`)return{acquired:!1,error:sr(s.error,i)};let c=await n?.($n(i),er(a));if(c===void 0)return{acquired:!1,error:sr({code:`runtime-value-missing`},i)};let l=await e.putAndRetain(i,r,c);return l.ok?{acquired:!0}:{acquired:!1,error:sr(l.error,i)}};return{seed:t=>l(async()=>{if(!i)return cr(`disabled`);if(o)return{...cr(`failed`),errors:[sr({code:`invalid-record`})]};let n;try{if(!t)n=Kn();else{let e=Yn(JSON.parse(JSON.stringify(t)));n={drafts:e.drafts,tombstones:e.tombstones,migration:e.migration,legacy:e.legacy}}}catch{return{...cr(`failed`),errors:[sr({code:`invalid-record`})]}}let a=or(n.drafts),s=await e.reconcileReferences(new Map([...a].map(([e,t])=>[e,lr(t)])),{ownerKinds:Qn});return s.ok?(r=n,o=!0,{...cr(`committed`),errors:s.value.missing.map(e=>sr({code:`missing-blob`},a.get(e)?.reference))}):{...cr(`failed`),errors:[sr(s.error)]}}),commit:e=>{let n=[...Xn(e.drafts).map(([e])=>e),...(e.delete??[]).map(Zn)];return i?l(async()=>{if(!o)return cr(`unseeded`,n);if(!i)return cr(`disabled`,n);let s=a,c=[],l=Jn(r),p=Xn(e.drafts),m=Xn(e.tombstones),h=(e.delete??[]).map(Zn);if(p.some(([e,t])=>!ir(e)||!rr(t.revision))||m.some(([e,t])=>!ir(e)||!rr(t))||h.some(e=>!ir(e))||new Set(p.map(([e])=>e)).size!==p.length||m.some(([e])=>p.some(([t])=>t===e)))return{...cr(`failed`,n),errors:[sr({code:`invalid-record`})]};try{for(let[e,t]of p){let n=w(t);if(!n||e!==R(n.key))throw Error(`invalid draft record`);l.drafts[e]=n,delete l.tombstones[e]}for(let e of h)delete l.drafts[e];for(let[e,t]of m)l.tombstones[e]=t;e.migration&&(l.migration=e.migration),e.legacy&&(l.legacy=e.legacy);let t=Yn(qn(l));l.drafts=t.drafts,l.tombstones=t.tombstones,l.migration=t.migration,l.legacy=t.legacy}catch{return{...cr(`failed`,n),errors:[sr({code:`invalid-record`})],cleanupErrors:c}}if(!await e.isCurrent())return cr(`stale`,n);let g=or(r.drafts),_=or(l.drafts);c=await u(l.drafts);let v=[];for(let[t,r]of _){let i=g.get(t);if((i?.attachment.locator.kind===`blob`?i.attachment.locator.blobID:void 0)===(r.attachment.locator.kind===`blob`?r.attachment.locator.blobID:void 0))continue;let a=await f(r,e.resolveBlobValue);if(a.error){for(let e of v.reverse())await d(e,lr(_.get(Se(e))),c,`acquire-failed`);return{...cr(`failed`,n),errors:[a.error],cleanupErrors:c}}a.acquired&&v.push(r.reference)}if(!await e.isCurrent()){for(let e of v.reverse())await d(e,lr(_.get(Se(e))),c,`stale`);return{...cr(`stale`,n),cleanupErrors:c}}if(!i||s!==a){for(let e of v.reverse())await d(e,lr(_.get(Se(e))),c,`disabled`);return{...cr(`disabled`,n),cleanupErrors:c}}let y=await t.persist(qn(l));if(!y.ok){for(let e of v.reverse())await d(e,lr(_.get(Se(e))),c,`metadata-failed`);return{...cr(`failed`,n),errors:[{phase:`metadata`,error:y.error}],cleanupErrors:c}}r=l;for(let[e,t]of g)_.has(e)||await d(t.reference,t.attachment.locator.kind===`blob`?t.attachment.locator.blobID:``,c,`metadata-committed`);return{...cr(`committed`,n),cleanupErrors:c}}):Promise.resolve(nr(cr(`disabled`,n)))},reconcile:()=>l(async()=>{if(!o)return cr(`unseeded`);if(!i)return cr(`disabled`);let t=await u(),n=new Map([...or(r.drafts)].map(([e,t])=>[e,t.attachment.locator.kind===`blob`?t.attachment.locator.blobID:``])),a=await e.reconcileReferences(n,{ownerKinds:Qn}),s=a.ok?a.value.missing.map(e=>sr({code:`missing-blob`},or(r.drafts).get(e)?.reference)):[sr(a.error)];return{status:a.ok?`committed`:`failed`,keys:[],errors:s,cleanupErrors:t}}),retryCleanup:()=>l(async()=>({...cr(`committed`),cleanupErrors:await u()})),flush:()=>s,setEnabled:async e=>{if(!e){i=!1,a+=1,t.cancelPending?.(),await t.setEnabled?.(!1),await s,await t.flush?.();return}await t.setEnabled?.(!0),i=!0,a+=1}}},dr=`openchamber-composer-reference-draft`,fr=`openchamber-pasted-text-draft`,pr=e=>Array.from(e).length,mr=e=>typeof e==`object`&&!!e&&(Object.getPrototypeOf(e)===Object.prototype||Object.getPrototypeOf(e)===null),hr=(e,t)=>typeof e==`string`&&e.length>0&&e.length<=t,gr=(e,t)=>{let n=[],r=[],i=0;for(let a=0;a<Math.min(t.length,P.referenceCount);a+=1){let o=t[a];if(!(!mr(o)||!hr(o.id,P.idLength)||!hr(o.token,P.displayLength)||typeof o.text!=`string`||o.text.length>P.pastePayloadLength||typeof o.characterCount!=`number`||!Number.isSafeInteger(o.characterCount)||o.characterCount!==pr(o.text)||typeof o.index!=`number`||!Number.isSafeInteger(o.index)||o.index<1))for(let t=e.indexOf(o.token);t>=0&&n.length<P.referenceCount;t=e.indexOf(o.token,t+o.token.length)){let e=t+o.token.length;if(r.some(n=>n.start<e&&n.end>t)||i+o.text.length>P.totalPastePayloadLength)continue;let a=n.filter(e=>e.id.startsWith(`${o.id}:`)).length;n.push({id:`${o.id}:${a}`,kind:`paste`,start:t,end:e,display:o.token,text:o.text,characterCount:o.characterCount,index:o.index}),r.push({start:t,end:e}),i+=o.text.length}}return n.sort((e,t)=>e.start-t.start)},_r=e=>{try{let t=JSON.parse(e);if(!mr(t)||typeof t.text!=`string`)return{text:e,references:[]};if(t.type===dr)return(t.version===2?we(t.text,t.references):void 0)??{text:t.text,references:[]};if(t.type===fr){let e=t.version===1&&Array.isArray(t.references)?gr(t.text,t.references):[];return we(t.text,e)??{text:t.text,references:[]}}}catch{}return{text:e,references:[]}},vr=`file://`,yr=e=>{let t=e.replace(/\\/g,`/`);return/^[A-Za-z]:/.test(t)&&(t=`/${t}`),t.split(`/`).map((e,t)=>t===1&&/^[A-Za-z]:$/.test(e)?e:encodeURIComponent(e)).join(`/`)},br=e=>{let t=e.replace(/\\/g,`/`).trim();return t.toLowerCase().startsWith(vr)?t:`${vr}${yr(t)}`},xr=(e,t)=>`${e}\u0000${t}`,Sr=e=>new Promise((t,n)=>{let r=new FileReader;r.onload=()=>t(r.result),r.onerror=()=>n(r.error??Error(`Failed to read file`)),r.onabort=()=>n(Error(`File read aborted`)),r.readAsDataURL(e)}),Cr=e=>{if(!e.startsWith(`data:`))return 0;let t=e.indexOf(`,`);if(t<0)return 0;let n=e.slice(0,t).toLowerCase(),r=e.slice(t+1);if(!n.endsWith(`;base64`))return 0;let i=0;return r.endsWith(`==`)?i=2:r.endsWith(`=`)&&(i=1),Math.max(0,Math.floor(r.length*3/4)-i)},wr=(e,t)=>e===t?!0:!e||!t?!1:e.filePath===t.filePath&&e.fileName===t.fileName&&e.relativePath===t.relativePath&&e.fileSize===t.fileSize&&e.selection?.startLine===t.selection?.startLine&&e.selection?.endLine===t.selection?.endLine&&e.selection?.text===t.selection?.text,Tr=e=>({version:1,key:e,revision:1,text:``,attachments:[],syntheticParts:[],mentions:[]}),Er=(e,t)=>t.flatMap(t=>{let n=`@${t}`,r=[],i=e.indexOf(n);for(;i>=0;)r.push({kind:`file`,value:t,path:t,label:t,range:{start:i,end:i+n.length}}),i=e.indexOf(n,i+n.length);return r}),Dr=((e={})=>{let t=e.sink??dn(),n=e.repository??Dn(t),i=e.coordinator??On(t),a=e.blobStore??Un(),o=e.durability??ur(a,i,{enabled:e.persistenceEnabled??!0}),c=new Map,l=new Map,u=new Map,d=new Map,f=new Map,p=new Set,m=new Set,h,g,_=0,v=0,y=!1,b=!1,x,S=new Set,C=new Map,T=new Set;return Oe()((t,i)=>{let E=e=>c.set(e,(c.get(e)??0)+1),D=(...e)=>{for(let t of e)u.set(t,(u.get(t)??0)+1),d.delete(t)},O=e=>w(e),k=()=>e.runtimeCapture?.()??{transportIdentity:r(),generation:s()},A=e=>{let t=k();return t.transportIdentity===e.transportIdentity&&t.generation===e.generation},j=e=>[...e.attachments,...e.syntheticParts.flatMap(e=>e.attachments)],ee=e=>new Set(j(e).map(e=>e.attachmentRefID)),te=(e,t,n)=>{let r=ee(n);return{draftAttachmentViews:{...e.draftAttachmentViews,[t]:Object.fromEntries(Object.entries(e.draftAttachmentViews[t]??{}).filter(([e])=>r.has(e)))},draftMissingAttachmentRefIDs:{...e.draftMissingAttachmentRefIDs,[t]:(e.draftMissingAttachmentRefIDs[t]??[]).filter(e=>r.has(e))}}},M=()=>e.createID?.()??fe(),ne=async(e,t)=>{let n=t instanceof File?t:new File([t],e.filename,{type:e.mimeType});return{id:e.attachmentID,file:n,dataUrl:typeof t==`string`?t:await Sr(n),mimeType:e.mimeType,filename:e.filename,size:e.size,source:e.source,...e.serverPath?{serverPath:e.serverPath}:{},...e.vscodePath?{vscodePath:e.vscodePath}:{},...e.vscodeSource?{vscodeSource:e.vscodeSource}:{}}},re=e=>{let t=e.errors[0]??e.cleanupErrors[0];return t?.phase===`metadata`||t?.phase===`blob`&&[`blob-id-conflict`,`database-unavailable`,`invalid-value`,`missing-blob`,`quota-exceeded`,`transaction-aborted`,`transaction-failed`].includes(t.error.code)?t.error.code:`unavailable`},ae=(e,n)=>{let r=i(),a=_,s=n??k(),l=[...new Set(e)];if(l.forEach(e=>m.delete(e)),h&&m.size===0&&(clearTimeout(h),h=void 0,g=void 0),!r.persistenceEnabled)return l.forEach(e=>S.add(e)),Promise.resolve({status:`disabled`,keys:l,errors:[],cleanupErrors:[]});let u=new Map(l.map(e=>[e,c.get(e)??0])),d=new Map(l.map(e=>[e,r.drafts[e]?.revision??r.tombstones[e]??0])),f=l.filter(e=>r.drafts[e]),v=Object.fromEntries(f.map(e=>[e,r.draftPersistence[e]?.status===`error`?r.draftPersistence[e]:{status:`saving`,revision:d.get(e)}])),y=Object.fromEntries(f.map(e=>[e,r.draftAttachmentPersistence[e]?.status===`error`?r.draftAttachmentPersistence[e]:{status:`saving`,revision:d.get(e)}]));t(e=>({draftPersistence:{...e.draftPersistence,...v},draftAttachmentPersistence:{...e.draftAttachmentPersistence,...y}})),b||l.forEach(e=>S.add(e));let x=(async()=>{let e=i(),n=await o.commit({drafts:Object.fromEntries(l.flatMap(t=>e.drafts[t]?[[t,e.drafts[t]]]:[])),tombstones:Object.fromEntries(l.flatMap(t=>e.tombstones[t]?[[t,e.tombstones[t]]]:[])),delete:l.filter(t=>!e.drafts[t]),migration:e.migration,legacy:{...e.legacyNewDraft?{new:e.legacyNewDraft}:{},entries:e.legacyDraftEntries},resolveBlobValue:t=>{for(let[n,r]of Object.entries(e.drafts))if(r.key.transportIdentity===t.transportIdentity&&r.key.owner.kind===t.owner.kind&&r.key.owner.ownerID===t.owner.ownerID)return e.draftAttachmentViews[n]?.[t.attachmentOccurrenceRefID]?.file},isCurrent:()=>_===a&&i().persistenceEnabled&&A(s)&&l.every(e=>(c.get(e)??0)===u.get(e)&&(i().drafts[e]?.revision??i().tombstones[e]??0)===d.get(e))}),r=_===a&&i().persistenceEnabled&&A(s);return(!r||n.status===`unseeded`||n.status===`stale`||n.status===`disabled`)&&l.forEach(e=>S.add(e)),r&&t(e=>{let t={...e.draftPersistence};for(let e of f){if((c.get(e)??0)!==u.get(e))continue;let r=d.get(e);if(n.status===`committed`)t[e]={status:`saved`,revision:r};else if(n.status===`unseeded`||n.status===`stale`||n.status===`disabled`)continue;else t[e]={status:`error`,revision:r,errorCode:re(n)}}let r={...e.draftAttachmentPersistence};for(let e of f){if((c.get(e)??0)!==u.get(e))continue;let t=d.get(e);r[e]=n.status===`committed`&&n.cleanupErrors.length===0?{status:`saved`,revision:t}:n.status===`failed`||n.cleanupErrors.length>0?{status:`error`,revision:t,errorCode:re(n)}:r[e]??{status:`idle`,revision:t}}return{draftPersistence:t,draftAttachmentPersistence:r}}),n})();return p.add(x),x.then(()=>p.delete(x),()=>p.delete(x)),x},oe=e=>{let n=i(),r=Object.fromEntries(e.flatMap(e=>{let t=n.drafts[e];return t?[[e,{status:`saving`,revision:t.revision}]]:[]}));Object.keys(r).length&&t(e=>({draftPersistence:{...e.draftPersistence,...r}}))},se=()=>{h&&clearTimeout(h),h=void 0;let e=[...m];m.clear();let t=g;return g=void 0,e.length?ae(e,t).then(()=>void 0):Promise.resolve()},ce=e=>{if(!i().persistenceEnabled){S.add(e);return}m.add(e),oe([e]),!h&&(g=k(),h=setTimeout(()=>{se()},40))},le=e=>{let t=[...e];return t.forEach(e=>m.delete(e)),h&&m.size===0&&(clearTimeout(h),h=void 0,g=void 0),ae(t)},N=(e,n,r,a=`immediate`)=>{let o=R(e),s=i().drafts[o];if(!s||r!==void 0&&s.revision!==r)return;let c=O(n(s));if(!(!c||R(c.key)!==o))return E(o),t(e=>({drafts:{...e.drafts,[o]:c},...te(e,o,c)})),a===`deferred`?ce(o):le([o]),c},de=e=>e?pe(e):void 0,P=(e=[])=>JSON.parse(JSON.stringify(e)),me=(e,t,n,r=!1,i=!1)=>({status:e,...de(n)?{record:de(n)}:{},errors:P(t?.errors),cleanupErrors:P(t?.cleanupErrors),current:r,durable:i}),he=(e,t,n,r,i=!1,a=!1)=>({status:e,errors:P(t?.errors),cleanupErrors:P(t?.cleanupErrors),current:i,durable:a,source:de(n),destination:de(r)}),F=e=>e.status,ge=e=>typeof e==`number`&&Number.isSafeInteger(e)&&e>0,I=(e,...t)=>{let n={...e};for(let e of t)delete n[e];return n},_e=async(e,t)=>{let n={},r=i().draftAttachmentViews[R(e.key)]??{};for(let i of j(e)){let e;if(i.locator.kind===`url`){let n=t?.get(i.attachmentRefID);e=n===void 0?i.locator.url:n}else e=t?.get(i.attachmentRefID)??r[i.attachmentRefID]?.file??(typeof r[i.attachmentRefID]?.dataUrl==`string`&&ie(r[i.attachmentRefID].dataUrl)?r[i.attachmentRefID].dataUrl:void 0);if(i.locator.kind===`url`&&e!==void 0&&(e!==i.locator.url||!ie(e))||i.locator.kind===`blob`&&e!==void 0&&!(e instanceof Blob)&&!(typeof e==`string`&&ie(e)))return;e!==void 0&&(n[i.attachmentRefID]=await ne(i,e))}return n},ve=e=>e?R(e):`legacy-unowned`,ye=e=>C.get(e)??0,be=e=>{C.set(e,ye(e)+1)},xe=(e,n,r=!1)=>{r&&be(e),t(t=>{let r=n(t.attachmentBuckets[e]??[]);return{attachmentBuckets:{...t.attachmentBuckets,[e]:r},...ve(t.activeAttachmentDraft)===e?{attachedFiles:r}:{}}})};return{drafts:{},tombstones:{},draftHydration:{},draftPersistence:{},draftAttachmentViews:{},draftMissingAttachmentRefIDs:{},draftAttachmentPersistence:{},persistenceEnabled:e.persistenceEnabled??!0,legacyDraftEntries:{},migration:{complete:!1,claimedTransportIdentity:``},captureDraftRuntime:()=>k(),commitDraftSnapshot:async e=>{let n=R(e.key),r=e.runtime;if(r.transportIdentity!==e.key.transportIdentity||!A(r))return me(`stale`,void 0);let a=i(),s=a.drafts[n],l=a.tombstones[n]??0;if(e.expectedRevision!==`absent`&&!ge(e.expectedRevision)||!Number.isSafeInteger(l)||l<0)return me(`failed`,void 0);if(e.expectedRevision===`absent`?s:s?.revision!==e.expectedRevision)return me(`conflict`,void 0,s);let u=e.expectedRevision===`absent`?l+1:e.expectedRevision+1;if(!ge(u))return me(`failed`,void 0);let d=O({version:1,key:e.key,revision:u,...e.snapshot});if(!d)return me(`failed`,void 0);let f=await _e(d,e.values);if(!f)return me(`failed`,void 0);let p=c.get(n)??0,m=s?.revision??l,h=await o.commit({drafts:{[n]:d},isCurrent:()=>A(r)&&(c.get(n)??0)===p&&(i().drafts[n]?.revision??i().tombstones[n]??0)===m,resolveBlobValue:t=>e.values?.get(t.attachmentOccurrenceRefID)});if(h.status!==`committed`)return me(F(h),h,s);let g=(c.get(n)??0)===p&&(i().drafts[n]?.revision??i().tombstones[n]??0)===m,_=A(r);if(!g)return _||t(e=>({draftAttachmentViews:I(e.draftAttachmentViews,n),draftMissingAttachmentRefIDs:I(e.draftMissingAttachmentRefIDs,n),draftHydration:I(e.draftHydration,n),draftPersistence:I(e.draftPersistence,n),draftAttachmentPersistence:I(e.draftAttachmentPersistence,n)})),me(`stale`,h,d,!1,!0);let v=pe(d);return v?(E(n),D(n),t(e=>({drafts:{...e.drafts,[n]:v},tombstones:(()=>{let t={...e.tombstones};return delete t[n],t})(),draftAttachmentViews:_?{...e.draftAttachmentViews,[n]:f}:I(e.draftAttachmentViews,n),draftMissingAttachmentRefIDs:_?{...e.draftMissingAttachmentRefIDs,[n]:[]}:I(e.draftMissingAttachmentRefIDs,n),draftHydration:_?e.draftHydration:I(e.draftHydration,n),draftPersistence:_?{...e.draftPersistence,[n]:{status:`saved`,revision:v.revision}}:I(e.draftPersistence,n),draftAttachmentPersistence:_?{...e.draftAttachmentPersistence,[n]:h.cleanupErrors.length?{status:`error`,revision:v.revision,errorCode:re(h)}:{status:`saved`,revision:v.revision}}:I(e.draftAttachmentPersistence,n)})),me(_?`committed`:`stale`,h,v,_,!0)):me(`failed`,h)},deleteDraftSnapshot:async e=>{let n=R(e.key),r=e.runtime;if(r.transportIdentity!==e.key.transportIdentity||!A(r))return me(`stale`,void 0);let a=i(),s=a.drafts[n],l=a.tombstones[n]??0;if(!ge(e.expectedRevision)||!Number.isSafeInteger(l)||l<0)return me(`failed`,void 0);if(!s||s.revision!==e.expectedRevision)return me(`conflict`,void 0);let u=e.expectedRevision+1;if(!ge(u))return me(`failed`,void 0);let d=c.get(n)??0,f=s.revision,p=Math.max(l,u),m=await o.commit({tombstones:{[n]:p},delete:[n],isCurrent:()=>A(r)&&(c.get(n)??0)===d&&i().drafts[n]?.revision===f&&(i().tombstones[n]??0)===l});if(m.status!==`committed`)return me(F(m),m);let h=(c.get(n)??0)===d&&i().drafts[n]?.revision===f&&(i().tombstones[n]??0)===l,g=A(r);return h?(E(n),D(n),t(e=>{let t={...e.drafts};return delete t[n],{drafts:t,tombstones:{...e.tombstones,[n]:Math.max(e.tombstones[n]??0,p)},draftAttachmentViews:I(e.draftAttachmentViews,n),draftMissingAttachmentRefIDs:I(e.draftMissingAttachmentRefIDs,n),draftHydration:I(e.draftHydration,n),draftPersistence:I(e.draftPersistence,n),draftAttachmentPersistence:I(e.draftAttachmentPersistence,n)}}),me(g?`committed`:`stale`,m,void 0,g,!0)):(g||t(e=>({draftAttachmentViews:I(e.draftAttachmentViews,n),draftMissingAttachmentRefIDs:I(e.draftMissingAttachmentRefIDs,n),draftHydration:I(e.draftHydration,n),draftPersistence:I(e.draftPersistence,n),draftAttachmentPersistence:I(e.draftAttachmentPersistence,n)})),me(`stale`,m,void 0,!1,!0))},finalizeDraftOwnership:async e=>{let n=R(e.source),r=R(e.destination),a=e.runtime,s=i(),l=s.drafts[n],u=s.drafts[r];if(n===r||e.destination.owner.kind!==`session`||e.source.transportIdentity!==a.transportIdentity||e.destination.transportIdentity!==a.transportIdentity||!A(a))return he(`stale`,void 0,l,u);if(!ge(e.expectedSourceRevision))return he(`failed`,void 0,l,u);if(!l||l.revision!==e.expectedSourceRevision||u)return he(`conflict`,void 0,l,u);let d=c.get(n)??0,f=c.get(r)??0,p=s.tombstones[n]??0,m=s.tombstones[r]??0;if(!Number.isSafeInteger(p)||p<0||!Number.isSafeInteger(m)||m<0)return he(`failed`,void 0,l,u);let h=Math.max(l.revision+1,m+1);if(!ge(h))return he(`failed`,void 0,l,u);let g=O(e.disposition===`preserve`?{...l,key:e.destination,revision:h}:{...Tr(e.destination),revision:h});if(!g)return he(`failed`,void 0,l,u);let _=await o.commit({drafts:{[r]:g},tombstones:{[n]:Math.max(p,h)},delete:[n],isCurrent:()=>A(a)&&(c.get(n)??0)===d&&(c.get(r)??0)===f&&i().drafts[n]?.revision===l.revision&&!i().drafts[r]&&(i().tombstones[n]??0)===p&&(i().tombstones[r]??0)===m,resolveBlobValue:e=>s.draftAttachmentViews[n]?.[e.attachmentOccurrenceRefID]?.file});if(_.status!==`committed`)return he(F(_),_,l,u);let v=(c.get(n)??0)===d&&i().drafts[n]?.revision===l.revision&&(i().tombstones[n]??0)===p,y=(c.get(r)??0)===f&&!i().drafts[r]&&(i().tombstones[r]??0)===m,b=A(a),x=pe(g);if(!x)return he(`failed`,_,l,u);if(b&&!v&&!y)return he(`stale`,_,l,g,!1,!0);v&&(E(n),D(n)),y&&(E(r),D(r)),t(t=>{let i=t.drafts,a=t.tombstones;(v||y)&&(i={...i}),(v||y)&&(a={...a}),v&&(delete i[n],a[n]=Math.max(a[n]??0,h)),y&&(i[r]=x,delete a[r]);let o=t.draftHydration,s=t.draftPersistence,c=t.draftAttachmentViews,l=t.draftMissingAttachmentRefIDs,u=t.draftAttachmentPersistence;return b?(v&&(o=I(o,n),s=I(s,n),c=I(c,n),l=I(l,n),u=I(u,n)),y&&(o=I(o,r),s={...I(s,r),[r]:{status:`saved`,revision:x.revision}},c=I(c,r),l=I(l,r),u={...I(u,r),[r]:_.cleanupErrors.length?{status:`error`,revision:x.revision,errorCode:re(_)}:{status:`saved`,revision:x.revision}},b&&v&&e.disposition===`preserve`&&(c={...c,[r]:t.draftAttachmentViews[n]??{}},l={...l,[r]:t.draftMissingAttachmentRefIDs[n]??[]}))):(o=I(o,n,r),s=I(s,n,r),c=I(c,n,r),l=I(l,n,r),u=I(u,n,r)),{drafts:i,tombstones:a,draftHydration:o,draftPersistence:s,draftAttachmentViews:c,draftMissingAttachmentRefIDs:l,draftAttachmentPersistence:u}});let S=v&&y&&b;return he(S?`committed`:`stale`,_,l,g,S,!0)},flushDraftPersistence:async()=>{for(await se();p.size;)await Promise.all([...p]);await o.flush()},ensureDraft:e=>{let n=R(e),r=i().drafts[n];if(r)return r;let a=O({...Tr(e),revision:(i().tombstones[n]??0)+1});if(!a)throw Error(`Invalid empty draft`);return E(n),t(e=>({drafts:{...e.drafts,[n]:a}})),le([n]),a},getDraft:e=>i().drafts[R(e)],setDraftText:(e,t)=>{let n=i().getDraft(e)??i().ensureDraft(e);return N(e,e=>({...e,revision:e.revision+1,text:t,mentions:e.mentions.filter(e=>e.range.end<=t.length&&t.slice(e.range.start,e.range.end)===`@${e.value}`),composerReferences:[]}),n.revision,`deferred`)??n},setDraftComposerDocument:(e,t)=>{let n=i().getDraft(e)??i().ensureDraft(e);return i().setDraftComposerState(e,{document:t,mentions:n.mentions})},setDraftComposerState:(e,t)=>{let n=i().getDraft(e)??i().ensureDraft(e);return N(e,e=>({...e,revision:e.revision+1,text:t.document.text,composerReferences:t.document.references,mentions:t.mentions}),n.revision,`deferred`)},replaceDraft:(e,t,n)=>N(e,e=>({version:1,key:e.key,revision:e.revision+1,text:n.text,attachments:n.attachments,syntheticParts:n.syntheticParts,mentions:n.mentions,...n.composerReferences===void 0?{}:{composerReferences:n.composerReferences}}),t),setDraftMentions:(e,t)=>N(e,e=>({...e,revision:e.revision+1,mentions:t})),addDraftMention:(e,t)=>N(e,e=>({...e,revision:e.revision+1,mentions:[...e.mentions,t]})),removeDraftMention:(e,t)=>N(e,e=>({...e,revision:e.revision+1,mentions:e.mentions.filter(e=>e.value!==t)})),setDraftSyntheticParts:(e,t)=>N(e,e=>({...e,revision:e.revision+1,syntheticParts:t})),consumeDraftSyntheticParts:(e,t)=>{let n=i().getDraft(e);if(!n)return null;let r=n.syntheticParts.filter(e=>!t?.(e)),a=n.syntheticParts.filter(e=>t?.(e));return N(e,e=>({...e,revision:e.revision+1,syntheticParts:a}),n.revision)?r:null},setDraftAttachments:(e,t)=>N(e,e=>({...e,revision:e.revision+1,attachments:t})),addDraftLocalAttachment:async(e,n,r={})=>{let a=i().getDraft(e);if(r.partID&&!a?.syntheticParts.some(e=>e.partID===r.partID))return;let o=R(e),s=c.get(o)??0,l=i().tombstones[o]??0,u=k(),d=n instanceof File?n:new File([n],r.filename??`attachment`,{type:n.type}),f;try{f=await Sr(d)}catch{let e=i().drafts[o];if(A(u)&&(i().tombstones[o]??0)===l&&(e?R(e.key)===o:(c.get(o)??0)===s)&&(!r.partID||e?.syntheticParts.some(e=>e.partID===r.partID))){let n=e?.revision??i().tombstones[o]??0;t(e=>({draftAttachmentPersistence:{...e.draftAttachmentPersistence,[o]:{status:`error`,revision:n,errorCode:`transaction-failed`}}}))}return}if(!A(u)||(i().tombstones[o]??0)!==l)return;let p=i().drafts[o];if(!p&&(c.get(o)??0)!==s)return;let m=p??i().ensureDraft(e);if(R(m.key)!==o||r.partID&&!m.syntheticParts.some(e=>e.partID===r.partID))return;let h=r.attachmentID??M(),g=r.partID?Ee(r.partID,h):ue(h),_=M(),v={attachmentID:h,attachmentRefID:g,filename:r.filename??(n instanceof File?n.name:`attachment`),mimeType:n.type,size:n.size,locator:{kind:`blob`,blobID:_},source:r.source??`local`,...r.vscodePath?{vscodePath:r.vscodePath}:{},...r.vscodeSource?{vscodeSource:r.vscodeSource}:{}},y=r.partID?{...m,revision:m.revision+1,syntheticParts:m.syntheticParts.map(e=>e.partID===r.partID?{...e,attachments:[...e.attachments,v]}:e)}:{...m,revision:m.revision+1,attachments:[...m.attachments,v]},b=O(y);if(!b)return;E(o);let x={id:h,file:d,dataUrl:f,mimeType:v.mimeType,filename:v.filename,size:v.size,source:v.source,...r.vscodePath?{vscodePath:r.vscodePath}:{},...r.vscodeSource?{vscodeSource:r.vscodeSource}:{}};return t(e=>({drafts:{...e.drafts,[o]:b},draftAttachmentViews:{...e.draftAttachmentViews,[o]:{...e.draftAttachmentViews[o],[g]:x}}})),await ae([o]),v},addDraftDurableAttachment:(e,n)=>{let r=i().getDraft(e)??i().ensureDraft(e);if(n.partID&&!r.syntheticParts.some(e=>e.partID===n.partID))return;let a=n.attachmentID??M(),o=n.partID?Ee(n.partID,a):ue(a),s={attachmentID:a,attachmentRefID:o,filename:n.filename,mimeType:n.mimeType,size:n.size,source:n.source,locator:{kind:`url`,url:n.url},...n.serverPath?{serverPath:n.serverPath}:{},...n.vscodePath?{vscodePath:n.vscodePath}:{},...n.vscodeSource?{vscodeSource:n.vscodeSource}:{}},c=n.partID?{...r,revision:r.revision+1,syntheticParts:r.syntheticParts.map(e=>e.partID===n.partID?{...e,attachments:[...e.attachments,s]}:e)}:{...r,revision:r.revision+1,attachments:[...r.attachments,s]},l=O(c);if(!l)return;let u=R(e);E(u);let d={id:a,file:new File([],s.filename,{type:s.mimeType}),dataUrl:n.url,mimeType:s.mimeType,filename:s.filename,size:s.size,source:s.source,...s.serverPath?{serverPath:s.serverPath}:{},...s.vscodePath?{vscodePath:s.vscodePath}:{},...s.vscodeSource?{vscodeSource:s.vscodeSource}:{}};return t(e=>({drafts:{...e.drafts,[u]:l},draftAttachmentViews:{...e.draftAttachmentViews,[u]:{...e.draftAttachmentViews[u],[o]:d}}})),ae([u]),s},getDraftAttachmentViews:e=>{let t=R(e),n=i().drafts[t],r=i().draftAttachmentViews[t]??{};return n?j(n).flatMap(e=>r[e.attachmentRefID]?[r[e.attachmentRefID]]:[]):[]},retryDraftAttachmentPersistence:async e=>{let n=R(e);if(!i().persistenceEnabled||!i().drafts[n]&&!i().tombstones[n])return;let r=await o.retryCleanup();r.cleanupErrors.length&&t(e=>({draftAttachmentPersistence:{...e.draftAttachmentPersistence,[n]:{status:`error`,revision:e.drafts[n]?.revision??e.tombstones[n],errorCode:re(r)}}})),await ae([n])},hydrateDraftAttachments:async e=>{let n=R(e),r=d.get(n);if(r)return r;let o=i().drafts[n];if(!o)return;let s=(u.get(n)??0)+1;u.set(n,s);let c=k(),l=_,f=(async()=>{t(e=>({draftHydration:{...e.draftHydration,[n]:`loading`}}));let e=()=>{if(u.get(n)!==s)return;let e=i(),r=e.draftAttachmentViews[n],a=e.draftMissingAttachmentRefIDs[n]??[];t(e=>({draftHydration:{...e.draftHydration,[n]:a.length?`degraded`:Object.keys(r??{}).length?`ready`:`idle`}}))},r={},d=[];for(let f of j(o)){let p=f.locator.kind===`url`?{ok:!0,value:f.locator.url}:await a.read(f.locator.blobID);if(!p.ok){if(p.error.code===`missing-blob`)d.push(f.attachmentRefID);else{u.get(n)===s&&_===l&&A(c)&&i().drafts[n]===o?t(e=>({draftHydration:{...e.draftHydration,[n]:`error`}})):e();return}continue}try{r[f.attachmentRefID]=await ne(f,p.value)}catch{u.get(n)===s&&_===l&&A(c)&&i().drafts[n]===o?t(e=>({draftHydration:{...e.draftHydration,[n]:`error`}})):e();return}}let f=i(),p=f.drafts[n],m=u.get(n);if(m===s&&_===l&&A(c)&&p===o)t(e=>({draftAttachmentViews:{...e.draftAttachmentViews,[n]:r},draftMissingAttachmentRefIDs:{...e.draftMissingAttachmentRefIDs,[n]:d},draftHydration:{...e.draftHydration,[n]:d.length?`degraded`:`ready`}}));else if(m===s){let e=f.draftAttachmentViews[n],r=f.draftMissingAttachmentRefIDs[n]??[];t(t=>({draftHydration:{...t.draftHydration,[n]:r.length?`degraded`:Object.keys(e??{}).length?`ready`:`idle`}}))}})();d.set(n,f);try{await f}finally{d.get(n)===f&&d.delete(n)}},removeDraftAttachment:async(e,n)=>{let r=R(e),a=i().drafts[r],o=a&&j(a).find(e=>e.attachmentRefID===n);if(!a||!o)return!1;let s=ze(o)?Fe(a.text,[o.filename],a.mentions,a.composerReferences):void 0,c=O({...a,revision:a.revision+1,...s?.changed?{text:s.text,mentions:s.mentions,...s.composerReferences===void 0?{}:{composerReferences:s.composerReferences}}:{},attachments:a.attachments.filter(e=>e.attachmentRefID!==n),syntheticParts:a.syntheticParts.map(e=>({...e,attachments:e.attachments.filter(e=>e.attachmentRefID!==n)}))});return c?(E(r),t(e=>{let t={...e.draftAttachmentViews[r]};return delete t[n],{drafts:{...e.drafts,[r]:c},draftAttachmentViews:{...e.draftAttachmentViews,[r]:t},draftMissingAttachmentRefIDs:{...e.draftMissingAttachmentRefIDs,[r]:(e.draftMissingAttachmentRefIDs[r]??[]).filter(e=>e!==n)}}}),(await ae([r])).status===`committed`):!1},replaceDraftAttachment:async(e,n,r,a)=>{let o=R(e),s=i().drafts[o],c=s&&j(s).find(e=>e.attachmentRefID===n);if(!s||!c)return;let l=k(),u=i().tombstones[o]??0,d=r instanceof File?r:new File([r],a?.filename??`attachment`,{type:r.type}),f;try{f=await Sr(d)}catch{let e=i().drafts[o],r=e&&j(e).find(e=>e.attachmentRefID===n);A(l)&&(i().tombstones[o]??0)===u&&e&&r?.attachmentID===c.attachmentID&&r.attachmentRefID===c.attachmentRefID&&R(e.key)===o&&t(t=>({draftAttachmentPersistence:{...t.draftAttachmentPersistence,[o]:{status:`error`,revision:e.revision,errorCode:`transaction-failed`}}}));return}let p=i().drafts[o],m=p&&j(p).find(e=>e.attachmentRefID===n);if(!A(l)||(i().tombstones[o]??0)!==u||!p||m?.attachmentID!==c.attachmentID||m.attachmentRefID!==c.attachmentRefID||R(p.key)!==o)return;let h=p.syntheticParts.find(e=>e.attachments.some(e=>e.attachmentRefID===n)),g=M(),_={attachmentID:g,attachmentRefID:h?Ee(h.partID,g):ue(g),filename:a?.filename??d.name,mimeType:d.type,size:d.size,locator:{kind:`blob`,blobID:M()},source:a?.source??`local`,...a?.vscodePath?{vscodePath:a.vscodePath}:{},...a?.vscodeSource?{vscodeSource:a.vscodeSource}:{}},v=O({...p,revision:p.revision+1,attachments:h?p.attachments:p.attachments.map(e=>e.attachmentRefID===n?_:e),syntheticParts:p.syntheticParts.map(e=>e.partID===h?.partID?{...e,attachments:e.attachments.map(e=>e.attachmentRefID===n?_:e)}:e)});if(!v)return;E(o);let y={id:g,file:d,dataUrl:f,mimeType:_.mimeType,filename:_.filename,size:_.size,source:_.source,..._.vscodePath?{vscodePath:_.vscodePath}:{},..._.vscodeSource?{vscodeSource:_.vscodeSource}:{}};return t(e=>{let t={...e.draftAttachmentViews[o]};return delete t[n],{drafts:{...e.drafts,[o]:v},draftAttachmentViews:{...e.draftAttachmentViews,[o]:{...t,[_.attachmentRefID]:y}},draftMissingAttachmentRefIDs:{...e.draftMissingAttachmentRefIDs,[o]:(e.draftMissingAttachmentRefIDs[o]??[]).filter(e=>e!==n)}}}),(await ae([o])).status===`committed`?_:void 0},replaceDraftRootAttachments:async(e,t)=>{let n=R(e),r=k();if(r.transportIdentity!==e.transportIdentity||!A(r))return me(`stale`,void 0);let a=i().drafts[n],o=a?a.revision:`absent`,s=[],c=new Map;for(let e of t){let t=e.id,n=ue(t);if(e.source===`server`&&e.dataUrl&&ie(e.dataUrl))s.push({attachmentID:t,attachmentRefID:n,filename:e.filename,mimeType:e.mimeType,size:e.size,source:`server`,locator:{kind:`url`,url:e.dataUrl},...e.serverPath?{serverPath:e.serverPath}:{}}),c.set(n,e.dataUrl);else if(e.source===`vscode`&&e.vscodeSource===`file`&&e.dataUrl&&ie(e.dataUrl))s.push({attachmentID:t,attachmentRefID:n,filename:e.filename,mimeType:e.mimeType,size:e.size,source:`vscode`,locator:{kind:`url`,url:e.dataUrl},...e.vscodePath?{vscodePath:e.vscodePath}:{},vscodeSource:`file`}),c.set(n,e.dataUrl);else{let r=e.file instanceof File?e.file:new File([e.file],e.filename,{type:e.mimeType}),i=M();s.push({attachmentID:t,attachmentRefID:n,filename:e.filename,mimeType:e.mimeType,size:e.size,source:e.source===`vscode`?`vscode`:`local`,locator:{kind:`blob`,blobID:i},...e.vscodePath?{vscodePath:e.vscodePath}:{},...e.vscodeSource===`selection`?{vscodeSource:`selection`}:{}}),c.set(n,r)}}let l=a?.syntheticParts??[];for(let e of l)for(let t of e.attachments)t.locator.kind===`url`&&!c.has(t.attachmentRefID)&&c.set(t.attachmentRefID,t.locator.url);let u={text:a?.text??``,attachments:s,syntheticParts:l,mentions:a?.mentions??[],...a?.composerReferences===void 0?{}:{composerReferences:a.composerReferences}};return i().commitDraftSnapshot({key:e,expectedRevision:o,snapshot:u,values:c,runtime:r})},restoreDraftRootAttachments:async(e,t)=>{let n=R(e),r=k();if(r.transportIdentity!==e.transportIdentity||!A(r))return me(`stale`,void 0);let a=i().drafts[n],o=a?a.revision:`absent`,s=new Set(t.map(e=>e.id)),c=[],l=new Map;for(let e of t){let t=e.id,n=ue(t);if(e.source===`server`&&e.dataUrl&&ie(e.dataUrl))c.push({attachmentID:t,attachmentRefID:n,filename:e.filename,mimeType:e.mimeType,size:e.size,source:`server`,locator:{kind:`url`,url:e.dataUrl},...e.serverPath?{serverPath:e.serverPath}:{}}),l.set(n,e.dataUrl);else if(e.source===`vscode`&&e.vscodeSource===`file`&&e.dataUrl&&ie(e.dataUrl))c.push({attachmentID:t,attachmentRefID:n,filename:e.filename,mimeType:e.mimeType,size:e.size,source:`vscode`,locator:{kind:`url`,url:e.dataUrl},...e.vscodePath?{vscodePath:e.vscodePath}:{},vscodeSource:`file`}),l.set(n,e.dataUrl);else{let r=e.file instanceof File?e.file:new File([e.file],e.filename,{type:e.mimeType}),i=M();c.push({attachmentID:t,attachmentRefID:n,filename:e.filename,mimeType:e.mimeType,size:e.size,source:e.source===`vscode`?`vscode`:`local`,locator:{kind:`blob`,blobID:i},...e.vscodePath?{vscodePath:e.vscodePath}:{},...e.vscodeSource===`selection`?{vscodeSource:`selection`}:{}}),l.set(n,r)}}let u=i().draftAttachmentViews[n]??{};for(let e of a?.attachments??[])if(!s.has(e.attachmentID))if(c.push(JSON.parse(JSON.stringify(e))),e.locator.kind===`url`)l.set(e.attachmentRefID,e.locator.url);else{let t=u[e.attachmentRefID];t?.file instanceof Blob?l.set(e.attachmentRefID,t.file):typeof t?.dataUrl==`string`&&ie(t.dataUrl)&&l.set(e.attachmentRefID,t.dataUrl)}let d=a?.syntheticParts??[];for(let e of d)for(let t of e.attachments)t.locator.kind===`url`&&!l.has(t.attachmentRefID)&&l.set(t.attachmentRefID,t.locator.url);let f={text:a?.text??``,attachments:c,syntheticParts:d,mentions:a?.mentions??[],...a?.composerReferences===void 0?{}:{composerReferences:a.composerReferences}};return i().commitDraftSnapshot({key:e,expectedRevision:o,snapshot:f,values:l,runtime:r})},deleteDraft:(e,n)=>{let r=R(e),a=i().drafts[r];if(!a||n!==void 0&&a.revision!==n)return!1;let o=a.revision+1;return ge(o)?(E(r),D(r),t(e=>{let t={...e.drafts};delete t[r];let n={...e.draftHydration},i={...e.draftPersistence},a={...e.draftAttachmentViews},s={...e.draftMissingAttachmentRefIDs},c={...e.draftAttachmentPersistence};return delete n[r],delete i[r],delete a[r],delete s[r],delete c[r],{drafts:t,tombstones:{...e.tombstones,[r]:Math.max(e.tombstones[r]??0,o)},draftHydration:n,draftPersistence:i,draftAttachmentViews:a,draftMissingAttachmentRefIDs:s,draftAttachmentPersistence:c}}),ae([r]),!0):!1},moveDraft:(e,n,r)=>{let a=R(e),o=R(n),s=i().drafts[a];if(!s||a===o||r!==void 0&&s.revision!==r||i().drafts[o]||(i().tombstones[o]??0)>=s.revision+1||[...s.attachments,...s.syntheticParts.flatMap(e=>e.attachments)].some(e=>e.locator.kind===`blob`))return;let c=O({...s,key:n,revision:s.revision+1});if(c)return E(a),E(o),D(a,o),t(e=>{let t={...e.drafts};delete t[a];let n={...e.tombstones,[a]:Math.max(e.tombstones[a]??0,c.revision)};(n[o]??0)<c.revision&&delete n[o];let r=e=>{let t={...e},n=t[a];return delete t[a],delete t[o],n===void 0?t:{...t,[o]:n}};return{drafts:{...t,[o]:c},tombstones:n,draftHydration:r(e.draftHydration),draftPersistence:r(e.draftPersistence),draftAttachmentViews:r(e.draftAttachmentViews),draftMissingAttachmentRefIDs:r(e.draftMissingAttachmentRefIDs),draftAttachmentPersistence:r(e.draftAttachmentPersistence)}}),ae([a,o]),c},moveDraftWithAttachments:async(e,n,r)=>{let a=R(e),o=R(n),s=i().drafts[a];if(!s||a===o||r!==void 0&&s.revision!==r||i().drafts[o]||(i().tombstones[o]??0)>=s.revision+1)return;let c=O({...s,key:n,revision:s.revision+1});if(c)return E(a),E(o),D(a,o),t(e=>{let t={...e.drafts};delete t[a];let n={...e.tombstones,[a]:Math.max(e.tombstones[a]??0,c.revision)};(n[o]??0)<c.revision&&delete n[o];let r=e=>{let t={...e},n=t[a];return delete t[a],delete t[o],n===void 0?t:{...t,[o]:n}};return{drafts:{...t,[o]:c},tombstones:n,draftHydration:r(e.draftHydration),draftPersistence:r(e.draftPersistence),draftAttachmentViews:r(e.draftAttachmentViews),draftMissingAttachmentRefIDs:r(e.draftMissingAttachmentRefIDs),draftAttachmentPersistence:r(e.draftAttachmentPersistence)}}),(await ae([a,o])).status===`committed`?c:void 0},setDraftPersistenceEnabled:async e=>{if(_+=1,!e){h&&clearTimeout(h),h=void 0,m.clear(),g=void 0,t({persistenceEnabled:!1,draftPersistence:{}}),await o.setEnabled(!1),await o.flush();return}t({persistenceEnabled:!0}),await o.setEnabled(!0);let n=k();b||await i().hydrateDraftMetadata(n.transportIdentity);let r=new Set([...Object.keys(i().drafts),...Object.keys(i().tombstones),...S]);S.clear(),await ae(r),await o.flush()},hydrateDraftMetadata:e=>{let r=f.get(e);if(r)return r;let a=(async()=>{let r=(l.get(e)??0)+1;l.set(e,r);let a=k();if(a.transportIdentity!==e)return!1;let s=_,u=new Map(c),d=v,f=Object.entries(i().drafts).filter(([,t])=>t.key.transportIdentity===e).map(([e])=>e);t(e=>({draftHydration:{...e.draftHydration,...Object.fromEntries(f.map(e=>[e,`loading`]))}}));let p=i().persistenceEnabled,m;try{m=await n.migrate(e,{persistenceEnabled:p})}catch{return!1}if(l.get(e)!==r||_!==s||!A(a))return!1;if(!m.ok)return t(e=>({draftHydration:{...e.draftHydration,...Object.fromEntries(f.map(t=>[t,e.drafts[t]?`degraded`:`error`]))}})),!1;let h=m.value;if(!b){x??=o.seed(h).finally(()=>{x=void 0});let n;try{n=await x}catch{return!1}if(l.get(e)!==r||_!==s||!A(a))return!1;if(n.status!==`committed`&&n.status!==`disabled`)return t(e=>({draftHydration:{...e.draftHydration,...Object.fromEntries(f.map(e=>[e,`degraded`]))}})),!1;n.status===`committed`&&(b=!0)}let g=i(),C={...g.drafts},w={...g.tombstones},T=new Set;for(let[e,t]of Object.entries(h.tombstones))(c.get(e)??0)===(u.get(e)??0)&&(t>=(w[e]??0)&&(w[e]=t,(C[e]?.revision??0)<=t&&delete C[e]),T.add(e));for(let[t,n]of Object.entries(h.drafts)){if(n.key.transportIdentity!==e||(c.get(t)??0)!==(u.get(t)??0))continue;let r=C[t],i=O(n);i&&(!r||r.revision<i.revision)&&(w[t]??0)<i.revision&&(C[t]=i),T.add(t)}let E=v===d?{...h.legacy.entries}:{...g.legacyDraftEntries};if(h.migration.claimedTransportIdentity===e&&v===d)for(let[t,n]of Object.entries(E)){let r={transportIdentity:e,owner:{kind:`session`,ownerID:t}},i=R(r),a=_r(n.text),o=O({...Tr(r),text:a.text,composerReferences:a.references,mentions:Er(a.text,n.mentions)});o&&!C[i]&&!w[i]&&(c.get(i)??0)===(u.get(i)??0)&&(C[i]=o),delete E[t],T.add(i)}t(e=>({drafts:C,tombstones:w,legacyNewDraft:v===d&&!y?h.legacy.new:e.legacyNewDraft,legacyDraftEntries:E,migration:v===d?h.migration:e.migration,draftHydration:{...e.draftHydration,...Object.fromEntries([...T].map(e=>[e,`ready`]))}}));let D=[...S];for(let e of D)T.add(e);S.clear();try{await ae(T),await o.flush()}catch{return!1}return l.get(e)===r&&_===s&&A(a)})();return f.set(e,a),a.finally(()=>{f.get(e)===a&&f.delete(e)}).catch(()=>void 0),a},claimLegacyNewDraft:async e=>{let n=i().legacyNewDraft;if(!n)return i().getDraft(e);let r=R(e),a=i().drafts[r];if(v+=1,y=!0,a||i().tombstones[r])return t({legacyNewDraft:void 0}),ae([r]),a;let o=_r(n.text),s=O({...Tr(e),text:o.text,composerReferences:o.references,mentions:Er(o.text,n.mentions)});if(s)return E(r),t(e=>({drafts:{...e.drafts,[r]:s},legacyNewDraft:void 0})),ae([r]),s},pendingInputText:null,pendingInputMode:`replace`,pendingSyntheticParts:null,pendingPresetSubmit:null,attachedFiles:[],attachmentBuckets:{"legacy-unowned":[]},activeAttachmentDraft:null,activeEditorFile:null,setPendingInputText:(e,n=`replace`)=>t({pendingInputText:e,pendingInputMode:n}),consumePendingInputText:()=>{let{pendingInputText:e,pendingInputMode:n}=i();return e===null?null:(t({pendingInputText:null,pendingInputMode:`replace`}),{text:e,mode:n})},requestPresetSubmit:e=>t({pendingPresetSubmit:e}),consumePendingPresetSubmit:()=>{let{pendingPresetSubmit:e}=i();return e===null?null:(t({pendingPresetSubmit:null}),e)},setPendingSyntheticParts:e=>t({pendingSyntheticParts:e}),consumePendingSyntheticParts:()=>{let{pendingSyntheticParts:e}=i();return e!==null&&t({pendingSyntheticParts:null}),e},setActiveAttachmentDraft:e=>{let n=ve(e);t(t=>({activeAttachmentDraft:e,attachedFiles:t.attachmentBuckets[n]??[],attachmentBuckets:t.attachmentBuckets[n]?t.attachmentBuckets:{...t.attachmentBuckets,[n]:[]}}))},addAttachedFile:async e=>{let t=i().activeAttachmentDraft;if(t){let n=ve(t),r=ye(n),a=await i().addDraftLocalAttachment(t,e);r!==ye(n)&&a&&i().removeDraftAttachment(t,a.attachmentRefID);return}let n=`${Date.now()}-${Math.random().toString(36).slice(2)}`,r=ve(null),a=ye(r),o;try{o=await Sr(e)}catch{return}if(a!==ye(r))return;let s={id:n,file:e,dataUrl:o,mimeType:e.type,filename:e.name,size:e.size,source:`local`};xe(r,e=>[...e,s])},removeAttachedFile:e=>{let t=i().activeAttachmentDraft;if(t){let n=i().getDraft(t),r=n?[...n.attachments,...n.syntheticParts.flatMap(e=>e.attachments)].find(t=>t.attachmentID===e):void 0;r&&i().removeDraftAttachment(t,r.attachmentRefID);return}xe(ve(null),t=>t.filter(t=>t.id!==e))},setAttachedFiles:e=>{xe(ve(i().activeAttachmentDraft),()=>e,!0)},clearAttachedFiles:()=>{let e=i().activeAttachmentDraft;if(e){be(ve(e)),i().getDraft(e)||i().ensureDraft(e),i().setDraftAttachments(e,[]);return}xe(ve(null),()=>[],!0)},addDraftVSCodeFileAttachment:(e,t,n,r)=>{if(i().getDraftAttachmentViews(e).some(e=>e.source===`vscode`&&e.vscodeSource===`file`&&(e.vscodePath||``)===t)||(i().getDraft(e)?.attachments.some(e=>e.source===`vscode`&&e.vscodeSource===`file`&&(e.vscodePath||``)===t)??!1))return;let a=br(t);i().addDraftDurableAttachment(e,{filename:n,mimeType:`text/plain`,size:r||0,source:`vscode`,vscodePath:t,vscodeSource:`file`,url:a})},addDraftVSCodeSelectionAttachment:async(e,t,n)=>{let r=R(e),a=ye(r),o=`${r}\u0000${xr(t,n.name)}`;if(!(i().getDraftAttachmentViews(e).some(e=>e.source===`vscode`&&e.vscodeSource===`selection`&&e.filename===n.name&&e.vscodePath===t)||(i().getDraft(e)?.attachments.some(e=>e.source===`vscode`&&e.vscodeSource===`selection`&&e.filename===n.name&&e.vscodePath===t)??!1)||T.has(o))){T.add(o);try{let o=await i().addDraftLocalAttachment(e,n,{source:`vscode`,vscodePath:t,vscodeSource:`selection`});a!==ye(r)&&o&&i().removeDraftAttachment(e,o.attachmentRefID)}finally{T.delete(o)}}},addVSCodeFileAttachment:(e,t,n)=>{let r=i().activeAttachmentDraft;if(r){i().addDraftVSCodeFileAttachment(r,e,t,n);return}let a=`${Date.now()}-${Math.random().toString(36).slice(2)}`,o=ve(null);if((i().attachmentBuckets[o]??[]).some(t=>t.source===`vscode`&&t.vscodeSource===`file`&&(t.vscodePath||``)===e))return;let s=br(e),c={id:a,file:new File([],t,{type:`text/plain`}),dataUrl:s,mimeType:`text/plain`,filename:t,size:n||0,source:`vscode`,vscodePath:e,vscodeSource:`file`};xe(o,e=>[...e,c])},addVSCodeSelectionAttachment:async(e,t)=>{let n=i().activeAttachmentDraft;if(n){await i().addDraftVSCodeSelectionAttachment(n,e,t);return}let r=`${Date.now()}-${Math.random().toString(36).slice(2)}`,a=ve(null),o=ye(a),s=`${a}\u0000${xr(e,t.name)}`;if((i().attachmentBuckets[a]??[]).some(n=>n.source===`vscode`&&n.vscodeSource===`selection`&&n.filename===t.name&&n.vscodePath===e)||T.has(s))return;T.add(s);let c;try{c=await Sr(t)}catch{return}finally{T.delete(s)}if(o!==ye(a))return;let l={id:r,file:t,dataUrl:c,mimeType:t.type,filename:t.name,size:t.size,source:`vscode`,vscodePath:e,vscodeSource:`selection`};xe(a,e=>[...e,l])},addCodeSelectionAttachment:async(e,t,n)=>{let r=new File([n],t,{type:`text/plain`});await i().addVSCodeSelectionAttachment(e,r)},setActiveEditorFile:e=>{wr(i().activeEditorFile,e)||t({activeEditorFile:e})},addRestoredAttachment:({url:e,mimeType:t,filename:n})=>{let r=i().activeAttachmentDraft;if(r){if(e.startsWith(`data:`)){let a=R(r);(async()=>{try{let o=await(await fetch(e)).blob(),s=new File([o],n,{type:t||o.type||`application/octet-stream`}),c=i().activeAttachmentDraft;if(!c||R(c)!==a)return;await i().addDraftLocalAttachment(r,s)}catch{}})();return}if(!ie(e))return;i().addDraftDurableAttachment(r,{filename:n,mimeType:t,size:Cr(e),source:`local`,serverPath:e,url:e});return}let a={id:`restored-${Date.now()}-${Math.random().toString(36).slice(2)}`,file:new File([],n,{type:t}),dataUrl:e,mimeType:t,filename:n,size:Cr(e),source:`local`,serverPath:e};xe(ve(null),e=>[...e,a])}}})})(),Or=new Set;function kr(e){return Or.add(e),()=>{Or.delete(e)}}function Ar(e,t){let n=Array.isArray(e)?e:[e],r=Array.from(new Set(n));if(r.length===0)return;r.includes(`all`)&&r.splice(0,r.length,`all`);let i={scopes:r,source:t?.source,timestamp:Date.now()};for(let e of Or)try{let t=e(i);t instanceof Promise&&t.catch(e=>{console.error(`[ConfigSync] Async listener failed:`,e)})}catch(e){console.error(`[ConfigSync] Listener threw:`,e)}}function jr(e,t){return e.scopes.includes(`all`)||e.scopes.includes(t)}var Mr=`Updating OpenCode configuration...`,Nr=0,Pr=Mr,Fr=new Set;function Ir(){let e={isUpdating:Nr>0,message:Pr};Fr.forEach(t=>t(e))}function Lr(e){Nr+=1,Nr===1?(Pr=e||Mr,Ir()):e&&(Pr=e,Ir())}function Rr(){Nr!==0&&(--Nr,Nr===0&&(Pr=Mr,Ir()))}function zr(e){Pr===e&&Nr>0||(Pr=e,Nr>0&&Ir())}function Br(e){return Fr.add(e),e({isUpdating:Nr>0,message:Pr}),()=>{Fr.delete(e)}}function Vr(){return{isUpdating:Nr>0,message:Pr}}var Hr=u(),Ur=`projects`,Wr=`activeProjectId`,Gr=`projects:manualOrder`,Kr=(e,t)=>{let n=e.trim();return!n.startsWith(`~`)||!t?n:n===`~`?t:n.startsWith(`~/`)||n.startsWith(`~\\`)?`${t}${n.slice(1)}`:n},qr=/^#(?:[\da-fA-F]{3}|[\da-fA-F]{6})$/,Jr=e=>{if(typeof e!=`string`)return;let t=e.trim();if(!t)return;let n=t.indexOf(`/`);if(!(n<=0||n>=t.length-1))return t},Yr=e=>{if(typeof e!=`string`)return null;let t=e.trim();return t&&qr.test(t)?t.toLowerCase():null},Xr=e=>{let t=e.trim();if(!t)return``;let n=Kr(t,A(`homeDirectory`,{storage:Hr})||Ue.getState().homeDirectory||``).replace(/\\/g,`/`);return n===`/`?`/`:n.length>1?n.replace(/\/+$/,``):n},Zr=e=>{let t=Xr(e);if(!t||t===`/`)return`Root`;let n=t.split(`/`).filter(Boolean);return n[n.length-1]||t},Qr=e=>{if(!e||typeof e!=`object`)return;let t=e,n=typeof t.mime==`string`?t.mime.trim():``,r=typeof t.updatedAt==`number`&&Number.isFinite(t.updatedAt)?Math.max(0,Math.round(t.updatedAt)):0,i=t.source===`custom`||t.source===`auto`?t.source:null;if(!(!n||!r||!i))return{mime:n,updatedAt:r,source:i}},$r=e=>{let t=typeof e.type==`string`?e.type.trim().toLowerCase():``;if(t===`image/png`||t===`image/jpeg`||t===`image/svg+xml`)return t;let n=e.name.toLowerCase();return n.endsWith(`.png`)?`image/png`:n.endsWith(`.jpg`)||n.endsWith(`.jpeg`)?`image/jpeg`:n.endsWith(`.svg`)?`image/svg+xml`:null},ei=async e=>await new Promise((t,n)=>{let r=new FileReader;r.onerror=()=>{n(Error(`Failed to read icon file`))},r.onload=()=>{let e=typeof r.result==`string`?r.result:``;if(!e){n(Error(`Failed to read icon file`));return}t(e)},r.readAsDataURL(e)}),ti=e=>{if(!Array.isArray(e))return[];let t=[],n=new Set,r=new Set;for(let i of e){if(!i||typeof i!=`object`)continue;let e=i,a=typeof e.path==`string`?e.path.trim():``;if(!a)continue;let o=Xr(a);if(!o)continue;let s=xe(o);if(!s||n.has(s)||r.has(o))continue;n.add(s),r.add(o);let c={id:s,path:o};if(typeof e.label==`string`&&e.label.trim().length>0&&(c.label=e.label.trim()),typeof e.icon==`string`&&e.icon.trim().length>0&&(c.icon=e.icon.trim()),e.iconImage===null)c.iconImage=null;else{let t=Qr(e.iconImage);t&&(c.iconImage=t)}typeof e.color==`string`&&e.color.trim().length>0&&(c.color=e.color.trim());let l=Jr(e.defaultModel);if(l&&(c.defaultModel=l),e.iconBackground===null)c.iconBackground=null;else{let t=Yr(e.iconBackground);t&&(c.iconBackground=t)}typeof e.addedAt==`number`&&Number.isFinite(e.addedAt)&&e.addedAt>=0&&(c.addedAt=e.addedAt),typeof e.lastOpenedAt==`number`&&Number.isFinite(e.lastOpenedAt)&&e.lastOpenedAt>=0&&(c.lastOpenedAt=e.lastOpenedAt),typeof e.sidebarCollapsed==`boolean`&&(c.sidebarCollapsed=e.sidebarCollapsed),t.push(c)}return t},ni=()=>{try{let e=A(Ur,{storage:Hr});return e?ti(JSON.parse(e)):[]}catch{return[]}},ri=()=>{if(!he())return null;let e=m().trim().replace(/\/+$/,``);return e?Hr.getItem(`${Ur}:${encodeURIComponent(e)}:manualOrder`):null},ii=()=>{try{let e=A(Gr,{storage:Hr})||ri();if(!e)return[];let t=JSON.parse(e);return Array.isArray(t)?t.filter(e=>typeof e==`string`):[]}catch{return[]}},ai=()=>{try{let e=A(Wr,{storage:Hr});if(typeof e==`string`&&e.trim().length>0)return e.trim()}catch{return null}return null},oi=(e,t)=>{try{M(Ur,JSON.stringify(e),{storage:Hr})}catch{}try{t?M(Wr,t,{storage:Hr}):ee(Wr,{storage:Hr})}catch{}},si=(e,t,n)=>{oi(e,t),n&&ci(n),ye({projects:e,activeProjectId:t??void 0})},ci=e=>{try{M(Gr,JSON.stringify(e),{storage:Hr})}catch{}},li=ni(),ui=(e,t,n)=>{let r=e.findIndex(e=>e.id===t),i=e.findIndex(e=>e.id===n);if(r<0||i<0||r===i)return e;let a=[...e],[o]=a.splice(r,1);return a.splice(i,0,o),a},di=e=>{let t=[],n=new Set;for(let r of e){let e=Xr(r.path);!e||n.has(e)||(n.add(e),t.push({name:r.name?.trim(),path:e}))}return t},fi=(e,t,n,r)=>{let i=Xr(e.path);if(!i)return null;let a=xe(i),o=r===i;return{...t,id:a,path:i,label:Zr(i),addedAt:t?.addedAt??n,lastOpenedAt:o?n:t?.lastOpenedAt??n}},pi=()=>{if(typeof window>`u`||!Te()?.runtime?.isVSCode)return null;let e=window.__VSCODE_CONFIG__,t=Array.isArray(e?.workspaceFolders)?e.workspaceFolders.map(e=>{let t=e,n=typeof t.path==`string`?t.path.trim():``;return n?{name:typeof t.name==`string`?t.name.trim():``,path:n}:null}).filter(e=>e!==null):[];if(t.length>0)return di(t);let n=e?.workspaceFolder;return typeof n!=`string`||n.trim().length===0?null:di([{path:n}])},mi=(e,t,n)=>{let r=di(e),i=n?Xr(n):null,a=r.length===0&&i?[{path:i}]:i&&!r.some(e=>e.path===i)?[...r,{path:i}]:r;if(a.length===0)return null;let o=Date.now(),s=a.map(e=>fi(e,t.find(t=>t.path===e.path)??null,o,i)).filter(e=>e!==null);if(s.length===0)return null;let c=i?s.find(e=>e.path===i)??null:s[0]??null,l=c?.id??s[0]?.id??null;return He(),{projects:s,activeProjectId:l,activeProject:c??s[0]??null}},hi=(e,t)=>e===t?!0:!e||!t?e===t:e.mime===t.mime&&e.updatedAt===t.updatedAt&&e.source===t.source,gi=(e,t)=>e.length===t.length&&e.every((e,n)=>{let r=t[n];return r?e.id===r.id&&e.path===r.path&&e.label===r.label&&e.icon===r.icon&&e.color===r.color&&e.iconBackground===r.iconBackground&&e.defaultModel===r.defaultModel&&e.addedAt===r.addedAt&&e.lastOpenedAt===r.lastOpenedAt&&e.sidebarCollapsed===r.sidebarCollapsed&&hi(e.iconImage,r.iconImage):!1}),_i=(()=>{let e=pi();if(!e)return null;let t=mi(e,[]);return t?{projects:t.projects,activeProjectId:t.activeProjectId}:null})(),vi=typeof window>`u`?!1:!!Te()?.runtime?.isVSCode,yi=_i?.projects??(vi?[]:li),bi=_i?.activeProjectId??(vi?null:ai()),xi=yi.some(e=>e.id===bi)?bi:yi[0]?.id??null;_i&&oi(yi,xi);var Si=Oe()(je((e,t)=>({projects:yi,activeProjectId:xi,manualProjectOrder:ii(),validateProjectPath:e=>{if(typeof e!=`string`||e.trim().length===0)return{ok:!1,reason:`Provide a directory path.`};let t=Xr(e);return t?{ok:!0,normalizedPath:t}:{ok:!1,reason:`Directory path cannot be empty.`}},addProject:(n,r)=>{if(vi)return null;let{validateProjectPath:i}=t(),a=i(n);if(!a.ok||!a.normalizedPath)return null;let o=a.normalizedPath,s=t().projects.find(e=>e.path===o);if(s)return t().setActiveProject(s.id),s;let c=Date.now(),l=r?.label?.trim()||Zr(o),u={id:xe(o),path:o,label:l,addedAt:c,lastOpenedAt:c};return e({projects:[...t().projects,u]}),He(),t().setActiveProject(u.id),t().discoverProjectIcon(u.id),u},removeProject:n=>{if(vi)return;let r=t(),i=r.projects.find(e=>e.id===n),a=r.projects.filter(e=>e.id!==n),o=r.activeProjectId;r.activeProjectId===n&&(o=a[0]?.id??null);let s=t().manualProjectOrder.filter(e=>e!==n);if(e({projects:a,activeProjectId:o,manualProjectOrder:s}),si(a,o,s),i){let e=i.path.replace(/\\/g,`/`).replace(/\/+$/,``)||`/`;$.setState(t=>{let n=new Map(t.availableWorktreesByProject);return n.delete(e),{availableWorktreesByProject:n}})}if(o){let e=a.find(e=>e.id===o);e&&(B.setDirectory(e.path),Ue.getState().setDirectory(e.path,{showOverlay:!1}))}else Ue.getState().goHome()},setActiveProject:n=>{if(vi)return;let{projects:r,activeProjectId:i}=t();if(i===n)return;let a=r.find(e=>e.id===n);a&&(e({activeProjectId:n}),si(r,n,t().manualProjectOrder),B.setDirectory(a.path),Ue.getState().setDirectory(a.path,{showOverlay:!1}))},setActiveProjectIdOnly:n=>{if(vi)return;let{projects:r,activeProjectId:i}=t();i!==n&&r.find(e=>e.id===n)&&(e({activeProjectId:n}),si(r,n,t().manualProjectOrder))},renameProject:(n,r)=>{if(vi)return;let i=r.trim();if(!i)return;let{projects:a,activeProjectId:o}=t(),s=a.map(e=>e.id===n?{...e,label:i}:e);e({projects:s}),si(s,o,t().manualProjectOrder)},updateProjectMeta:(n,r)=>{if(vi)return;let{projects:i,activeProjectId:a}=t(),o=i.map(e=>{if(e.id!==n)return e;let t={...e};if(r.label!==void 0){let e=r.label.trim();e&&(t.label=e)}if(r.icon!==void 0&&(t.icon=r.icon),r.color!==void 0&&(t.color=r.color),r.iconBackground!==void 0&&(t.iconBackground=Yr(r.iconBackground)),r.defaultModel!==void 0){let e=Jr(r.defaultModel);e?t.defaultModel=e:delete t.defaultModel}return t});e({projects:o}),si(o,a,t().manualProjectOrder)},uploadProjectIcon:async(e,n)=>{if(vi)return{ok:!1,error:`Custom icons are not supported in this runtime`};let r=$r(n);if(!r)return{ok:!1,error:`Only PNG, JPEG, and SVG are supported`};if(!Number.isFinite(n.size)||n.size<=0)return{ok:!1,error:`Icon file is empty`};if(n.size>5242880)return{ok:!1,error:`Icon exceeds size limit (5 MB)`};try{let i=(await ei(n)).replace(/^data:[^;]+;/i,`data:${r};`),a=await F(`/api/projects/${encodeURIComponent(e)}/icon`,{method:`PUT`,headers:{"Content-Type":`application/json`,Accept:`application/json`},body:JSON.stringify({dataUrl:i})});if(!a.ok)return{ok:!1,error:(await a.json().catch(()=>null))?.error||`Failed to upload project icon`};let o=await a.json().catch(()=>null);return o?.settings&&t().synchronizeFromSettings(o.settings),{ok:!0}}catch(e){return{ok:!1,error:(e instanceof Error?e.message:String(e))||`Failed to upload project icon`}}},removeProjectIcon:async e=>{if(vi)return{ok:!1,error:`Custom icons are not supported in this runtime`};try{let n=await F(`/api/projects/${encodeURIComponent(e)}/icon`,{method:`DELETE`,headers:{Accept:`application/json`}});if(!n.ok)return{ok:!1,error:(await n.json().catch(()=>null))?.error||`Failed to remove project icon`};let r=await n.json().catch(()=>null);return r?.settings&&t().synchronizeFromSettings(r.settings),{ok:!0}}catch(e){return{ok:!1,error:(e instanceof Error?e.message:String(e))||`Failed to remove project icon`}}},discoverProjectIcon:async(e,n)=>{if(vi)return{ok:!1,error:`Custom icons are not supported in this runtime`};try{let r=await F(`/api/projects/${encodeURIComponent(e)}/icon/discover`,{method:`POST`,headers:{"Content-Type":`application/json`,Accept:`application/json`},body:JSON.stringify({force:n?.force===!0})}),i=await r.json().catch(()=>null);return r.ok?(i?.settings&&t().synchronizeFromSettings(i.settings),{ok:!0,skipped:i?.skipped===!0,reason:typeof i?.reason==`string`?i.reason:void 0}):{ok:!1,error:i?.error||`Failed to discover project icon`}}catch(e){return{ok:!1,error:(e instanceof Error?e.message:String(e))||`Failed to discover project icon`}}},reorderProjects:(n,r)=>{if(vi)return;let{projects:i,activeProjectId:a}=t();if(n<0||n>=i.length||r<0||r>=i.length||n===r)return;let o=[...i],[s]=o.splice(n,1);o.splice(r,0,s);let c=o.map(e=>e.id);e({projects:o,manualProjectOrder:c}),si(o,a,c)},reorderProjectsById:(n,r)=>{if(vi)return;let{projects:i,activeProjectId:a}=t(),o=ui(i,n,r);if(o===i)return;let s=o.map(e=>e.id);e({projects:o,manualProjectOrder:s}),si(o,a,s)},moveProjectToTop:n=>{if(vi)return;let{projects:r,activeProjectId:i,manualProjectOrder:a}=t(),o=r.findIndex(e=>e.id===n);if(o<0)return;let s=o>0,c=a.length>0&&a[0]!==n;if(!s&&!c)return;let l=r;if(s){l=[...r];let[e]=l.splice(o,1);l.unshift(e)}let u=c?[n,...a.filter(e=>e!==n)]:a;e({projects:l,manualProjectOrder:u}),si(l,i,u)},resetForRuntimeSwitch:()=>{if(vi)return;let t=ni(),n=ai(),r=t.some(e=>e.id===n)?n:t[0]?.id??null,i=new Set(t.map(e=>e.id));e({projects:t,activeProjectId:r,manualProjectOrder:ii().filter(e=>i.has(e))})},synchronizeFromSettings:n=>{if(vi)return;let r=ti(n.projects??[]),i=typeof n.activeProjectId==`string`&&n.activeProjectId.trim()?n.activeProjectId.trim():null,a=t();if(r.length===0&&a.projects.length>0){i!==a.activeProjectId&&(!i||a.projects.some(e=>e.id===i))&&(e({activeProjectId:i}),oi(a.projects,i),ci(t().manualProjectOrder));return}let o=JSON.stringify(a.projects)!==JSON.stringify(r),s=a.activeProjectId!==i;if(!o&&!s)return;let c=new Set(r.map(e=>e.id)),l=o?r.map(e=>e.id):t().manualProjectOrder.filter(e=>c.has(e));if(e({projects:r,activeProjectId:i,manualProjectOrder:l}),oi(r,i),ci(l),i){let e=r.find(e=>e.id===i);e&&(B.setDirectory(e.path),Ue.getState().setDirectory(e.path,{showOverlay:!1}))}},syncVSCodeWorkspaceFolders:(n,r)=>{if(!vi)return null;let i=t(),a=i.activeProjectId?i.projects.find(e=>e.id===i.activeProjectId)??null:null,o=r??a?.path??null,s=mi(n,i.projects,o);if(!s)return n.length===0&&!r&&i.projects.length>0&&(e({projects:[],activeProjectId:null}),oi([],null)),null;let c=!gi(i.projects,s.projects),l=i.activeProjectId!==s.activeProjectId;return(c||l)&&(e({projects:s.projects,activeProjectId:s.activeProjectId}),oi(s.projects,s.activeProjectId)),s.activeProject&&(B.setDirectory(s.activeProject.path),Ue.getState().setDirectory(s.activeProject.path,{showOverlay:!1})),s.activeProject},getActiveProject:()=>{let{projects:e,activeProjectId:n}=t();return n?e.find(e=>e.id===n)??null:null}}),{name:`projects-store`}));typeof window<`u`&&window.addEventListener(`openchamber:settings-synced`,e=>{let t=e.detail;t&&typeof t==`object`&&Si.getState().synchronizeFromSettings(t)});var V=Ze(),Ci=e=>e?.trim()||null,wi=()=>{let e=Si.getState().getActiveProject?.();return Ci(e?.path)??Ci(B.getDirectory())},Ti=(e,t=r())=>N.commands.list(e,t),Ei=(e=wi(),t=r())=>{let n=Ci(e);return{queryKey:Ti(n,t),queryFn:async({signal:e})=>{let t=await F(`/api/config/commands/metadata`,{method:`POST`,headers:{"Content-Type":`application/json`,"Cache-Control":`no-cache`,...n?{"x-opencode-directory":n}:{}},body:JSON.stringify({catalog:!0}),query:n?{directory:n}:void 0,signal:e});if(!t.ok)throw Error(`Failed to fetch command metadata`);let r=await t.json();return Array.isArray(r.commands)?r.commands:[]},retry:2}},Di=e=>{let t=(0,V.c)(3),n=e===void 0?{}:e,r=Si(Ai),i=Ei(Ci(n.directory)??Ci(r)??Ci(B.getDirectory())),a;return t[0]!==n.enabled||t[1]!==i?(a={...i,enabled:n.enabled},t[0]=n.enabled,t[1]=i,t[2]=a):a=t[2],rt(a)},Oi=(e=wi(),t=r())=>L.getQueryData(Ti(Ci(e),t))??[],ki=async(e,t,n)=>{let i=Ci(t);if(r()!==n)return e.getQueryData(Ti(i,n))??[];let a=Ei(i,n);return e.fetchQuery({...a,staleTime:0})};function Ai(e){return e.getActiveProject?.()?.path??null}var ji=200,Mi=500,Ni=512,Pi=1024,Fi=64,Ii=100,Li=100,Ri=new Set([`__proto__`,`prototype`,`constructor`]),zi=new Set([`text`,`audio`,`image`,`video`,`pdf`]),Bi=e=>{for(let t=0;t<e.length;t+=1){let n=e.charCodeAt(t);if(n<=31||n>=127&&n<=159)return!0}return!1},Vi=e=>typeof e==`object`&&e&&!Array.isArray(e)&&Object.getPrototypeOf(e)===Object.prototype?e:void 0,Hi=e=>{if(typeof e==`string`)return e.length>0&&e.length<=Ni&&e.trim()===e&&!Bi(e)&&!Ri.has(e)?e:void 0},Ui=e=>typeof e==`string`&&e.length>0&&e.length<=Pi&&e.trim()===e&&!Bi(e)?e:void 0,Wi=e=>typeof e==`string`&&e.length>0&&e.length<=Fi&&e.trim()===e&&!Bi(e)?e:void 0,Gi=e=>typeof e==`number`&&Number.isFinite(e)&&Math.abs(e)<=1e9?e:void 0,Ki=e=>{let t=Vi(e);if(!t)return;let n={};for(let[e,r]of Object.entries(t))!zi.has(e)||typeof r!=`boolean`||(n[e]=r);return Object.keys(n).length?n:void 0},qi=e=>{let t=Vi(e);if(!t)return;let n={};for(let e of[`temperature`,`reasoning`,`attachment`,`toolcall`])t[e]!==void 0&&typeof t[e]==`boolean`&&(n[e]=t[e]);let r=Ki(t.input),i=Ki(t.output);return r&&(n.input=r),i&&(n.output=i),Object.keys(n).length?n:void 0},Ji=e=>{let t=Vi(e),n=Hi(t?.id),r=Ui(t?.name);if(!t||!n||!r)return{partial:!0};let i={id:n,name:r},a=!1,o=qi(t.capabilities);o&&(i.capabilities=o);let s=Vi(t.cost);if(s){let e={},t=Gi(s.input);t!==void 0&&(e.input=t);let n=Gi(s.output);n!==void 0&&(e.output=n);let r=Vi(s.cache);if(r){let t={},n=Gi(r.read);n!==void 0&&(t.read=n);let i=Gi(r.write);i!==void 0&&(t.write=i),Object.keys(t).length&&(e.cache=t)}Object.keys(e).length&&(i.cost=e)}let c=Vi(t.limit);if(c){let e={},t=Gi(c.context);t!==void 0&&(e.context=t);let n=Gi(c.output);n!==void 0&&(e.output=n),Object.keys(e).length&&(i.limit=e)}let l=Wi(t.release_date);l&&(i.release_date=l);let u=Vi(t.variants);if(u){let e={};for(let[t,[n,r]]of Object.entries(u).entries()){if(t>=Li){a=!0;break}!Hi(n)||!Vi(r)||(e[n]={})}Object.keys(e).length&&(i.variants=e)}return{value:i,partial:a}},Yi=e=>{let t=Vi(e);if(!t||t.schemaVersion!==1||!Array.isArray(t.providers)||!Vi(t.default)||typeof t.partial!=`boolean`)throw Error(`Invalid provider catalog response`);let n=[],r=new Set,i=t.providers.length>ji;for(let[e,a]of t.providers.entries()){if(e>=ji)continue;let t=Vi(a),o=Hi(t?.id),s=Ui(t?.name),c=Vi(t?.models);if(!t||!o||!s||!c||r.has(o)){i=!0;continue}r.add(o);let l={},u=new Set;for(let[e,[t,n]]of Object.entries(c).entries()){if(e>=Mi||!Hi(t)||Object.prototype.hasOwnProperty.call(l,t)){i=!0;continue}let r=Ji(n);if(i||=r.partial,!r.value||u.has(r.value.id)){i=!0;continue}u.add(r.value.id),l[t]=r.value}n.push({id:o,name:s,models:l})}let a=Vi(t.default),o={};for(let[e,[t,n]]of Object.entries(a).entries()){let r=Hi(t),a=Hi(n);if(e>=Ii||!r||!a){i=!0;continue}o[r]=a}return{schemaVersion:1,providers:n,default:o,partial:t.partial||i}},Xi=e=>(t=>e(t.state.data)?1/0:0),Zi=e=>{if(typeof e!=`string`)return null;let t=e.trim().replace(/\\/g,`/`);return t?t.length>1?t.replace(/\/+$/,``):t:null},Qi=(e,t=r())=>{let n=Zi(e);return{queryKey:N.configCatalog.providers(n,t),queryFn:async({signal:e})=>{let r=await F(`/api/config/catalog/providers`,{method:`GET`,headers:{Accept:`application/json`,...n?{"x-opencode-directory":n}:{}},signal:e}),i;if(r.ok)i=Yi(await r.json());else{if(r.status!==404&&r.status!==501)throw Error(`Provider catalog request failed (${r.status})`);let t=await B.getSdkClient().config.providers(n?{directory:n}:void 0,{signal:e});if(t.error!==void 0||t.data===void 0||t.data===null)throw Error(`Legacy provider catalog request failed`);i=Yi({schemaVersion:1,providers:t.data.providers,default:t.data.default,partial:!1})}let a=L.getQueryData(N.configCatalog.providers(n,t));if(i.partial&&a&&!a.partial)throw Error(`Partial provider catalog refresh retained the complete snapshot`);return i},staleTime:Xi(e=>{let t=e;return!!(t&&t.providers.length>0)}),gcTime:1/0,retry:2,retryDelay:100}},$i=(e,t=r())=>{let n=Zi(e);return{queryKey:N.agents.raw(n,t),queryFn:({signal:e})=>B.listAgents(n,e),staleTime:Xi(e=>Array.isArray(e)&&e.length>0),gcTime:1/0,retry:2,retryDelay:100}},ea=(e,t,n=r())=>{if(t.providerCatalogPartial===!0)return;let i=Qi(e,n);if(L.getQueryData(i.queryKey)===void 0)try{let e=Yi({schemaVersion:1,providers:Array.isArray(t.providers)?t.providers.map(e=>{if(typeof e!=`object`||!e||Array.isArray(e))return e;let t=e;return{...t,models:Array.isArray(t.models)?Object.fromEntries(t.models.map((e,t)=>[String(t),e])):t.models}}):t.providers,default:t.defaultProviders,partial:!1});if(e.partial)return;L.setQueryData(i.queryKey,e)}catch{}},ta=(e,t=r())=>L.fetchQuery(Qi(e,t)),na=(e,t=r())=>L.fetchQuery($i(e,t)),ra=async(e,t=r())=>{let n=Qi(e,t);return await L.invalidateQueries({queryKey:n.queryKey,exact:!0}),L.fetchQuery(n)},ia=async(e,t=r())=>{let n=$i(e,t);return await L.invalidateQueries({queryKey:n.queryKey,exact:!0}),L.fetchQuery(n)},aa=(e,t=r())=>L.invalidateQueries({queryKey:Qi(e,t).queryKey,exact:!0}),oa=e=>e?.trim()||null,sa=(e,t=r())=>N.agents.list(e,t),ca=(e,t=r())=>N.providers.list(e,t);function la(e){if(!e)return;let t=e.replace(/\\/g,`/`),n=t.lastIndexOf(`/agents/`);if(n===-1)return;let r=t.substring(n+8).split(`/`);return r.length>1?r[0]:void 0}var ua=(e=wi(),t=r())=>{let n=oa(e);return{queryKey:sa(n,t),queryFn:async({signal:e})=>{let r=await L.fetchQuery($i(n,t)),i=await F(`/api/config/agents/metadata`,{method:`POST`,headers:{"Cache-Control":`no-cache`,"Content-Type":`application/json`,...n?{"x-opencode-directory":n}:{}},body:JSON.stringify({names:r.map(e=>e.name)}),signal:e});if(!i.ok)throw Error(`Failed to fetch agent metadata`);let a=await i.json();return r.map(e=>{let t=a.agents?.[e.name]??{},n=t.scope??(t.sources?.md?.exists?t.sources.md.scope:void 0)??(t.sources?.json?.exists?t.sources.json.scope:void 0)??t.sources?.md?.scope??t.sources?.json?.scope,r=la(t.sources?.md?.path);return n===`project`||n===`user`?{...e,scope:n,group:r}:{...e,group:r}})},retry:2,staleTime:(e=>{let t=e.state.data;return t&&t.length>0?1/0:0}),gcTime:1/0}},da=(e,t=r())=>{let n=oa(e);return{queryKey:ca(n,t),queryFn:async()=>{let e=await B.getProvidersForConfig(n);return(Array.isArray(e.providers)?e.providers:[]).map(e=>({...e,models:Object.values(e.models??{})}))},retry:2}},fa=e=>{let t=(0,V.c)(7),n;t[0]===e?n=t[1]:(n=e===void 0?{}:e,t[0]=e,t[1]=n);let r=n,i=Si(_a),a;t[2]===i?a=t[3]:(a=ua(oa(i)??oa(B.getDirectory())),t[2]=i,t[3]=a);let o;return t[4]!==r.enabled||t[5]!==a?(o={...a,enabled:r.enabled},t[4]=r.enabled,t[5]=a,t[6]=o):o=t[6],rt(o)},pa=(e,t)=>{let n=(0,V.c)(7),r;n[0]===t?r=n[1]:(r=t===void 0?{}:t,n[0]=t,n[1]=r);let i=r,a;n[2]===e?a=n[3]:(a=ua(e),n[2]=e,n[3]=a);let o;return n[4]!==i.enabled||n[5]!==a?(o={...a,enabled:i.enabled},n[4]=i.enabled,n[5]=a,n[6]=o):o=n[6],rt(o)},ma=(e,t)=>{let n=(0,V.c)(7),r;n[0]===t?r=n[1]:(r=t===void 0?{}:t,n[0]=t,n[1]=r);let i=r,a;n[2]===e?a=n[3]:(a=da(e),n[2]=e,n[3]=a);let o;return n[4]!==i.enabled||n[5]!==a?(o={...a,enabled:i.enabled},n[4]=i.enabled,n[5]=a,n[6]=o):o=n[6],rt(o)},ha=(e=wi(),t=r())=>L.getQueryData(sa(oa(e),t))??[],ga=async(e,t,n)=>{let i=oa(t);if(r()!==n)return e.getQueryData(sa(i,n))??[];let a=ua(i,n);return await e.invalidateQueries({queryKey:a.queryKey,exact:!0}),e.fetchQuery(a)};function _a(e){return e.getActiveProject?.()?.path??null}var va=[{id:`anthropic`,label:`Anthropic`,description:`Anthropic's public skills repository`,source:`anthropics/skills`,defaultSubpath:`skills`,sourceType:`github`},{id:`clawdhub`,label:`ClawdHub`,description:`Community skill registry with vector search`,source:`clawdhub:registry`,sourceType:`clawdhub`}],ya=e=>e?.trim()||null,ba=()=>{let e=Si.getState().getActiveProject?.();return ya(e?.path)??ya(B.getDirectory())},xa=(e,t=r())=>N.skillsCatalog.sources(e,t),Sa=(e,t,n=r())=>N.skillsCatalog.source(e,t,n),Ca=new Map,wa=(e=ba(),t=r(),n=!1)=>{let i=ya(e);return{queryKey:xa(i,t),queryFn:({signal:e})=>Pa(i,n,e),staleTime:5e3,retry:2}},Ta=(e,t,n=r(),i=!1)=>{let a=ya(e);return $e({queryKey:Sa(a,t,n),queryFn:({signal:e,pageParam:n})=>Fa(a,t,n,i,e),initialPageParam:null,getNextPageParam:(e,t)=>Ia(e,t),staleTime:5e3,retry:2})},Ea=e=>{let t=(0,V.c)(7),n;t[0]===e?n=t[1]:(n=e===void 0?{}:e,t[0]=e,t[1]=n);let r=n,i=Si(za),a;t[2]===i?a=t[3]:(a=wa(ya(i)??ya(B.getDirectory())),t[2]=i,t[3]=a);let o;return t[4]!==r.enabled||t[5]!==a?(o={...a,enabled:r.enabled},t[4]=r.enabled,t[5]=a,t[6]=o):o=t[6],rt(o)},Da=(e,t)=>{let n=(0,V.c)(8),r;n[0]===t?r=n[1]:(r=t===void 0?{}:t,n[0]=t,n[1]=r);let i=r,a=Si(Ba),o;n[2]!==a||n[3]!==e?(o=Ta(ya(a)??ya(B.getDirectory()),e),n[2]=a,n[3]=e,n[4]=o):o=n[4];let s=i.enabled&&!!e,c;return n[5]!==o||n[6]!==s?(c={...o,enabled:s},n[5]=o,n[6]=s,n[7]=c):c=n[7],it(c)},Oa=e=>{let t=new Map;for(let n of e)for(let e of n.items)t.set(`${e.sourceId}:${e.skillDir}`,e);return Array.from(t.values())},ka=(e=L,t=ba(),n=r())=>e.getQueryData(xa(ya(t),n))??va,Aa=(e=L,t,n,i=r())=>e.getQueryData(Sa(ya(t),n,i)),ja=async(e,t,n)=>{let i=ya(t);return r()===n?e.fetchQuery({...wa(i,n,!0),staleTime:0}):ka(e,i,n)},Ma=async(e,t,n,i)=>{let a=ya(t);if(r()!==i)return Aa(e,a,n,i);let o=Sa(a,n,i),s=JSON.stringify(o),c=(Ca.get(s)??0)+1;Ca.set(s,c),await e.cancelQueries({queryKey:o,exact:!0});let l=await Fa(a,n,null,!0,new AbortController().signal);if(r()!==i||Ca.get(s)!==c)return Aa(e,a,n,i);let u={pages:[l],pageParams:[null]};return e.setQueryData(o,u),u},Na=(e,t,n)=>Promise.all([e.invalidateQueries({queryKey:xa(ya(t),n)}),e.invalidateQueries({queryKey:[n,`skillsCatalog`,`source`,ya(t)],exact:!1})]);async function Pa(e,t,n){let r=await Ra(La(`/api/config/skills/catalog`,{directory:e,refresh:t}),n),i=await r.json().catch(()=>null);if(!r.ok||!i?.ok)throw Error(i?.error?.message??`Failed to load catalog (${r.status})`);return i.sources?.length?i.sources:va}async function Fa(e,t,n,r,i){let a={directory:e,sourceId:t,cursor:n,refresh:r},o=await Ra(La(`/api/config/skills/catalog/source`,a),i),s=await o.json().catch(()=>null);if(o.ok&&(s?.ok||Array.isArray(s?.items)))return{items:s.items??[],nextCursor:s.nextCursor??null};let c=await Ra(La(`/api/config/skills/catalog`,a),i),l=await c.json().catch(()=>null),u=l?.itemsBySource?.[t];if(c.ok&&l?.ok&&Array.isArray(u))return{items:u,nextCursor:null};throw Error(s?.error?.message??l?.error?.message??`Failed to load catalog source (${o.status})`)}function Ia(e,t){let n=e.nextCursor;if(!(!n||e.items.length===0)&&!t.slice(0,-1).some(e=>e.nextCursor===n))return n}function La(e,t){let n=new URLSearchParams;t.directory&&n.set(`directory`,t.directory),t.sourceId&&n.set(`sourceId`,t.sourceId),t.cursor&&n.set(`cursor`,t.cursor),t.refresh&&n.set(`refresh`,`true`);let r=n.toString();return r?`${e}?${r}`:e}async function Ra(e,t){let n=new AbortController,r=setTimeout(()=>n.abort(),3e3);try{return await F(e,{method:`GET`,headers:{Accept:`application/json`},signal:AbortSignal.any([t,n.signal])})}finally{clearTimeout(r)}}function za(e){return e.getActiveProject?.()?.path??null}function Ba(e){return e.getActiveProject?.()?.path??null}var Va=e=>e?.trim()||null,Ha=()=>{let e=Si.getState().getActiveProject?.();return Va(e?.path)??Va(B.getDirectory())},Ua=e=>{let t=e.replace(/\\/g,`/`),n=t.lastIndexOf(`/skills/`);if(n===-1)return;let r=t.slice(n+8).split(`/`);return r.length>=3?r[0]:void 0},Wa=(e,t=r())=>N.skills.list(e,t),Ga=(e=Ha(),t=r())=>{let n=Va(e);return{queryKey:Wa(n,t),queryFn:async({signal:e})=>{let t=await F(`/api/config/skills`,{query:{summary:`true`,...n?{directory:n}:{}},signal:e});if(!t.ok)throw Error(`Failed to list skills: ${t.status}`);return((await t.json()).skills??[]).map(e=>({name:e.name,path:e.path,scope:e.scope??`user`,source:e.source??`opencode`,description:e.description??``,group:Ua(e.path)}))},retry:2}},Ka=e=>{let t=(0,V.c)(3),n=e===void 0?{}:e,r=Si(Ya),i=Ga(Va(n.directory)??Va(r)??Va(B.getDirectory())),a;return t[0]!==n.enabled||t[1]!==i?(a={...i,enabled:n.enabled},t[0]=n.enabled,t[1]=i,t[2]=a):a=t[2],rt(a)},qa=(e=L,t=Ha(),n=r())=>e.getQueryData(Wa(Va(t),n))??[],Ja=async(e,t,n=r())=>{let i=Va(t);return r()===n?e.fetchQuery({...Ga(i,n),staleTime:0}):qa(e,i,n)};function Ya(e){return e.getActiveProject?.()?.path??null}var Xa=()=>{let e=B.getDirectory();if(typeof e==`string`&&e.trim().length>0)return e;try{let e=window.__zustand_directory_store__;if(e)return e.getState().currentDirectory}catch{}return null},Za=wi,Qa=e=>{let t=e;return t.native===!0||t.builtIn===!0},$a=e=>{let t=e;return t.hidden===!0||t.options?.hidden===!0},eo=e=>e.filter(e=>!$a(e)),to=`useAgentsStore`,no=e=>new Promise(t=>setTimeout(t,e)),ro=2e4,io=300,ao=4,oo=800,so=200,co=2e3,lo=e=>e!=null,uo=Oe()(je(ke(e=>({selectedAgentName:null,agentDraft:null,setSelectedAgent:t=>e({selectedAgentName:t}),setAgentDraft:t=>e({agentDraft:t}),loadAgents:async()=>{let e=Za(),t=r();try{return await ga(L,e,t),!0}catch{return!1}},createAgent:async t=>po(`POST`,t.name,t,e),updateAgent:async(t,n)=>po(`PATCH`,t,n,e),deleteAgent:async(t,n)=>po(`DELETE`,t,{scope:n},e),getAgentByName:e=>ha().find(t=>t.name===e),getVisibleAgents:()=>eo(ha())}),{name:`agents-store`,storage:h(),partialize:e=>({selectedAgentName:e.selectedAgentName})}),{name:`agents-store`}));typeof window<`u`&&(window.__zustand_agents_store__=uo);async function fo(e,t){await ga(L,e,t),r()===t&&Ar(`agents`,{source:to})}async function po(e,t,n,i){Lr(`${{POST:`Creating`,PATCH:`Updating`,DELETE:`Deleting`}[e]} agent configuration…`);let a=Za(),o=r();try{let s={};if(e===`POST`&&(s.mode=n?.mode||`subagent`,n?.description&&(s.description=n.description),n?.model&&(s.model=n.model),n?.variant&&(s.variant=n.variant),lo(n?.temperature)&&(s.temperature=n.temperature),lo(n?.top_p)&&(s.top_p=n.top_p),n?.prompt&&(s.prompt=n.prompt),n?.permission&&(s.permission=n.permission),n?.disable!==void 0&&(s.disable=n.disable),n?.scope&&(s.scope=n.scope)),e===`PATCH`){for(let e of[`mode`,`description`,`model`,`prompt`,`permission`,`disable`])n?.[e]!==void 0&&(s[e]=n[e]);for(let e of[`variant`,`temperature`,`top_p`])e in(n??{})&&(s[e]=n?.[e]??null)}let c=a?`?directory=${encodeURIComponent(a)}`:``,l=await F(`/api/config/agents/${encodeURIComponent(t)}${c}`,{method:e,headers:{"Content-Type":`application/json`,...a?{"x-opencode-directory":a}:{}},body:JSON.stringify(e===`DELETE`?{scope:n?.scope}:s)}),u=await l.json().catch(()=>null);if(!l.ok)throw Error(u?.error||`Failed to ${e.toLowerCase()} agent`);return r()===o?(e===`DELETE`&&uo.getState().selectedAgentName===t&&i({selectedAgentName:null}),u?.requiresManualRestart?{ok:!0,requiresManualRestart:!0}:(u?.requiresReload??!0?await _o({message:u?.message,delayMs:u?.reloadDelayMs,scopes:[`agents`],mode:`projects`,transportIdentity:o,queryDirectory:a}):await fo(a,o),{ok:!0})):{ok:!0,...u?.requiresManualRestart?{requiresManualRestart:!0}:{}}}catch(t){return console.error(`[AgentsStore] ${e} agent failed:`,t),{ok:!1}}finally{Rr()}}async function mo(e){let t=typeof e==`number`&&e>0?Math.min(e,io):0;t>0&&await no(t);let n=Date.now(),r=0,i=null;for(;Date.now()-n<ro;){r+=1,zr(`Waiting for OpenCode… (attempt ${r})`);try{if(await B.checkHealth())return;i=Error(`OpenCode health check reported not ready`)}catch(e){i=e}let e=Date.now()-n;await no(r<=ao&&e<1200?io:Math.min(oo+Math.max(0,r-ao)*so,co))}throw i||Error(`OpenCode did not become ready in time`)}var ho=e=>{if(!e||e.length===0)return[`all`];let t=Array.from(new Set(e));return t.includes(`all`)?[`all`]:t};async function go(e={}){let{message:t,delayMs:n}=e,i=e.transportIdentity??r(),a=e.queryDirectory??Za(),o=ho(e.scopes),s=e.mode??(o.includes(`all`)?`projects`:`active`);try{zr(t||`Refreshing configuration…`)}catch{}try{if(r()!==i||(await mo(n),r()!==i))return;let e=G.getState(),t=o.includes(`all`)||o.includes(`providers`),c=o.includes(`all`)||o.includes(`agents`),l=o.includes(`all`)||o.includes(`agents`),u=o.includes(`all`)||o.includes(`commands`),d=o.includes(`all`)||o.includes(`skills`),f=Xa(),p=s===`projects`?Si.getState().projects:[],m=Array.from(new Set([...f?[f]:[],...p.map(e=>e.path).filter(Boolean)]));o.includes(`all`)&&s===`projects`&&G.setState({directoryScoped:{}}),t&&G.getState().invalidateProviderCache(s===`active`?f:void 0);let h=[];for(let n of m)t&&h.push(e.loadProviders({directory:n,source:`agentsStore:refreshConfig`}).then(()=>void 0)),c&&h.push(e.loadAgents({directory:n,source:`agentsStore:refreshConfig`}).then(()=>void 0));let g=[];l&&g.push(ga(L,a,i).then(()=>void 0)),u&&g.push(ki(L,a,i).then(()=>void 0)),d&&(g.push(Ja(L,a,i).then(()=>void 0)),g.push(Na(L,a,i).then(()=>void 0))),zr(`Refreshing configuration…`),await Promise.all([...h,...g])}catch(e){throw zr(`OpenCode refresh failed. Please retry.`),await no(1500),e}finally{Rr()}}async function _o(e){await go(e)}async function vo(e){Lr(e?.message||`Reloading OpenCode configuration…`);let t=e?.transportIdentity??r(),n=e?.queryDirectory??Za();try{let i=await F(`/api/config/reload`,{method:`POST`,headers:{"Content-Type":`application/json`}}),a=await i.json().catch(()=>null);if(!i.ok){let e=a?.error||`Failed to reload configuration`;throw Error(e)}if(r()!==t){Rr();return}let o={...e,transportIdentity:t,queryDirectory:n,scopes:e?.scopes??[`all`],mode:e?.mode??`projects`};a?.requiresReload?await _o({...o,message:a.message,delayMs:a.reloadDelayMs}):await _o(o)}catch(e){throw console.error(`[reloadOpenCodeConfiguration] Failed:`,e),zr(`Failed to reload configuration. Please try again.`),await no(2e3),Rr(),e}}var yo=null;yo||=kr(e=>{if(e.source!==to&&jr(e,`agents`)){let{loadAgents:e}=uo.getState();e()}});var bo=e=>typeof e==`string`?e.trim():``,xo=(e,t)=>!t||t<=0||e.length<=t?e:t<=3?e.slice(0,t):`${e.slice(0,t-3)}...`,So={ai:`AI`,api:`API`,ernie:`ERNIE`,glm:`GLM`,gpt:`GPT`,it:`IT`,lfm:`LFM`,lm:`LM`,oss:`OSS`,pdf:`PDF`,rp:`RP`,slerp:`SLERP`,tars:`TARS`,ui:`UI`,vl:`VL`,vlm:`VLM`,aion:`Aion`,anthropic:`Anthropic`,chatgpt:`ChatGPT`,claude:`Claude`,codex:`Codex`,codestral:`Codestral`,command:`Command`,deepseek:`DeepSeek`,gemini:`Gemini`,gemma:`Gemma`,grok:`Grok`,hunyuan:`Hunyuan`,kimi:`Kimi`,llama:`Llama`,minimax:`MiniMax`,mistral:`Mistral`,mixtral:`Mixtral`,nemotron:`Nemotron`,openai:`OpenAI`,qwen:`Qwen`,rekaai:`RekaAI`},Co=e=>e?e[0].toUpperCase()+e.slice(1).toLowerCase():``,wo=e=>{let t=e.startsWith(`~`)?e.slice(1):e,n=t.lastIndexOf(`/`);return n>=0?t.slice(n+1):t},To=e=>{let t=e.lastIndexOf(`:`);return t<=0||t>=e.length-1?{base:e,suffix:``}:{base:e.slice(0,t),suffix:e.slice(t+1)}},Eo=e=>{let t=e.replace(/([a-z0-9])([A-Z])/g,`$1-$2`).split(/[-_\s]+/).map(e=>e.trim()).filter(Boolean),n=[];for(let e=0;e<t.length;e+=1){let r=t[e],i=t[e+1],a=t[e+2];if(/^(19|20)\d{2}$/.test(r)&&/^\d{2}$/.test(i??``)&&/^\d{2}$/.test(a??``)){n.push(`${r}-${i}-${a}`),e+=2;continue}if(/^\d$/.test(r)&&/^\d$/.test(i??``)){n.push(`${r}.${i}`),e+=1;continue}n.push(r)}return n},Do=e=>{let t=e.toLowerCase(),n=So[t];if(n)return n;let r=t.match(/^qwen(\d(?:\.\d+)?)$/);return r?`Qwen${r[1]}`:/^o\d/.test(t)?t:/^v\d/.test(t)?`V${e.slice(1).toUpperCase()}`:/^\d+[on]$/.test(t)?t:/^[a-z]\d+[a-z]?$/.test(t)?t.toUpperCase():/^\d+(?:x\d+)?[a-z]+$/.test(t)?t.replace(/[a-z]+$/i,e=>e.toUpperCase()):/^\d+(?:\.\d+)?[a-z]$/.test(t)?t.replace(/[a-z]$/i,e=>e.toUpperCase()):/^[a-z]+\d+(?:\.\d+)?[a-z]*$/.test(t)?Co(t).replace(/([a-z])(\d)/i,`$1$2`):Co(e)},Oo=e=>{let t=[...e];return t[0]===`GPT`&&t[1]&&/^(?:\d|\d+[a-z]|OSS$)/i.test(t[1])&&t.splice(0,2,`GPT-${t[1]}`),t[0]===`GLM`&&t[1]&&/^\d/.test(t[1])&&t.splice(0,2,`GLM-${t[1]}`),t[0]===`LFM`&&t[1]&&/^\d/.test(t[1])&&t.splice(0,2,`LFM${t[1]}`),t[0]===`Qwen`&&t[1]&&/^\d/.test(t[1])&&t.splice(0,2,`Qwen${t[1]}`),t},ko=e=>{let t=bo(e).toLowerCase();return t?t===`free`||t===`thinking`?t:Ao(t):``},Ao=e=>{let t=bo(e);if(!t)return``;let{base:n,suffix:r}=To(wo(t)),i=Oo(Eo(n).map(Do));if(i.length>=2){let e=i[i.length-1],t=i[i.length-2];e===`Reasoning`&&t===`Non`&&i.splice(i.length-2,2,`(Non-Reasoning)`)}let a=i[i.length-1];/^(19|20)\d{2}-\d{2}-\d{2}$/.test(a??``)&&(i[i.length-1]=`(${a})`);let o=i.join(` `).replace(/\s+\(/g,` (`).trim(),s=ko(r);return s?`${o} (${s})`:o},jo=e=>!/\s/.test(e)&&/[-_]/.test(e),Mo=(e,t,n={})=>{let r=bo(e?.name),i=bo(e?.id)||bo(t);return r&&!jo(r)?xo(r,n.maxLength):i?xo(Ao(i),n.maxLength):r?xo(Ao(r.toLowerCase()),n.maxLength):n.fallbackLabel??``},No=(e,t)=>{let n=e?.models;if(!(!n||!t))return Array.isArray(n)?n.find(e=>bo(e.id)===t):n[t]},Po=(e,t,n={})=>{let r=bo(t);return Mo(No(e,r),r,n)},Fo=(e,t,n,r)=>{let i=n.find(e=>e.name===t),a=i?.model?.providerID,o=i?.model?.modelID,s=!!(a&&o&&r.some(e=>e.id===a&&e.models?.some(e=>e.id===o)));return{providerID:s?a:e.providerID,modelID:s?o:e.modelID,agent:t}},Io=e=>e===`primary`||e===`all`||e==null,Lo=e=>e.filter(e=>Io(e.mode)),Ro=(e,t,n=1)=>{let r=Lo(e);if(r.length<=1)return null;let i=r.findIndex(e=>e.name===t);return r[((i>=0?i:0)+n+r.length)%r.length]?.name??null},zo=e=>e.charAt(0).toUpperCase()+e.slice(1),Bo=(e,t)=>{if(t){let n=e.find(e=>e.name===t);return zo(n?n.name:t)}let n=e.filter(e=>Io(e.mode)),r=n.find(e=>e.name===`build`)||n[0]||e[0];return r?zo(r.name):`Select agent`},Vo=(e,t,n=``)=>Po(e,t,{fallbackLabel:n}),Ho=e=>{if(!e||e.trim().length===0)return`Default`;let t=e.trim();return/^\d+(\.\d+)?$/.test(t)?t:zo(t)},Uo=e=>typeof e==`object`&&!!e,Wo=e=>typeof e==`string`&&e.length>0,Go=e=>{let t=new Map;if(!Array.isArray(e))return t;for(let n of e){if(!Array.isArray(n)||n.length<2)continue;let[e,r]=n;if(!Wo(e)||!Array.isArray(r))continue;let i=new Map;for(let e of r){if(!Array.isArray(e)||e.length<2)continue;let[t,n]=e;if(!Wo(t)||!Array.isArray(n))continue;let r=new Map;for(let e of n){if(!Array.isArray(e)||e.length<2)continue;let[t,n]=e;!Wo(t)||!Wo(n)||r.set(t,n)}r.size>0&&i.set(t,r)}i.size>0&&t.set(e,i)}return t},Ko=Oe()(ke((e,t)=>({sessionModelSelections:new Map,sessionAgentSelections:new Map,sessionAgentModelSelections:new Map,sessionAgentModelVariantSelections:new Map,lastUsedProvider:null,saveSessionModelSelection:(t,n,r)=>e(e=>{let i=new Map(e.sessionModelSelections);return i.delete(t),i.set(t,{providerId:n,modelId:r}),{sessionModelSelections:i,lastUsedProvider:{providerID:n,modelID:r}}}),getSessionModelSelection:e=>t().sessionModelSelections.get(e)??null,saveSessionAgentSelection:(t,n)=>e(e=>{if(e.sessionAgentSelections.get(t)===n)return e;let r=new Map(e.sessionAgentSelections);return r.delete(t),r.set(t,n),{sessionAgentSelections:r}}),getSessionAgentSelection:e=>t().sessionAgentSelections.get(e)??null,saveAgentModelForSession:(t,n,r,i)=>e(e=>{let a=e.sessionAgentModelSelections.get(t)?.get(n);if(a?.providerId===r&&a?.modelId===i)return e;let o=new Map(e.sessionAgentModelSelections),s=new Map(o.get(t)??new Map);return o.delete(t),s.set(n,{providerId:r,modelId:i}),o.set(t,s),{sessionAgentModelSelections:o}}),getAgentModelForSession:(e,n)=>t().sessionAgentModelSelections.get(e)?.get(n)??null,saveAgentModelVariantForSession:(t,n,r,i,a)=>e(e=>{let o=`${r}/${i}`,s=new Map(e.sessionAgentModelVariantSelections),c=s.get(t),l=new Map(c??new Map),u=l.get(n),d=new Map(u??new Map);return a?d.get(o)===a?e:(s.delete(t),d.set(o,a),l.set(n,d),s.set(t,l),{sessionAgentModelVariantSelections:s}):d.has(o)?(d.delete(o),d.size===0?l.delete(n):l.set(n,d),s.delete(t),l.size>0&&s.set(t,l),{sessionAgentModelVariantSelections:s}):e}),getAgentModelVariantForSession:(e,n,r,i)=>{let a=`${r}/${i}`;return t().sessionAgentModelVariantSelections.get(e)?.get(n)?.get(a)}}),{name:`selection-store`,version:2,storage:h(),partialize:e=>({sessionModelSelections:Array.from(e.sessionModelSelections.entries()).slice(-150),sessionAgentSelections:Array.from(e.sessionAgentSelections.entries()).slice(-150),sessionAgentModelSelections:Array.from(e.sessionAgentModelSelections.entries()).slice(-150).map(([e,t])=>[e,Array.from(t.entries())]),sessionAgentModelVariantSelections:Array.from(e.sessionAgentModelVariantSelections.entries()).slice(-150).map(([e,t])=>[e,Array.from(t.entries()).map(([e,t])=>[e,Array.from(t.entries())])]),lastUsedProvider:e.lastUsedProvider}),merge:(e,t)=>{let n=Uo(e)?e:void 0,r=new Map;if(Array.isArray(n?.sessionAgentModelSelections))for(let e of n.sessionAgentModelSelections){if(!Array.isArray(e)||e.length<2)continue;let[t,n]=e;if(!Wo(t)||!Array.isArray(n))continue;let i=new Map;for(let e of n){if(!Array.isArray(e)||e.length<2)continue;let[t,n]=e;!Wo(t)||typeof n!=`object`||!n||!Wo(n.providerId)||!Wo(n.modelId)||i.set(t,{providerId:n.providerId,modelId:n.modelId})}i.size>0&&r.set(t,i)}return{...t,lastUsedProvider:n?.lastUsedProvider??t.lastUsedProvider,sessionModelSelections:new Map(Array.isArray(n?.sessionModelSelections)?n.sessionModelSelections:[]),sessionAgentSelections:new Map(Array.isArray(n?.sessionAgentSelections)?n.sessionAgentSelections:[]),sessionAgentModelSelections:r,sessionAgentModelVariantSelections:Go(n?.sessionAgentModelVariantSelections)}},migrate:e=>e})),qo=_,Jo=(e,t)=>{let n=qo(t);if(!n)return null;let r=null;for(let t of e){let e=qo(t.path);e&&(n!==e&&!n.startsWith(`${e}/`)||(!r||e.length>(qo(r.path)?.length??0))&&(r=t))}return r},Yo=(e,t,n)=>{let r=qo(n);if(!r)return null;let i=null,a=null,o=-1;for(let[e,n]of t.entries())for(let t of n){let n=qo(t.path);n&&(r!==n&&!r.startsWith(`${n}/`)||n.length>o&&(o=n.length,i=t,a=qo(e)))}if(!i)return null;let s=[qo(i.projectDirectory),a].filter(e=>!!e);for(let t of s){let n=e.find(e=>qo(e.path)===t)??null;if(n)return n;let r=Jo(e,t);if(r)return r}return null},Xo=(e,t,n)=>Yo(e,t,n)??Jo(e,n),Zo=e=>{if(!e)return null;let t=e.indexOf(`/`);return t<=0||t>=e.length-1?null:{providerId:e.slice(0,t),modelId:e.slice(t+1)}},Qo=[`concise`,`detailed`,`mentor`,`pushback`,`noFiller`,`matchEnergy`,`warmPeer`],$o=e=>typeof e==`string`&&Qo.includes(e),es=e=>{switch(e){case`concise`:return`Keep replies short. Answer first, no preamble or recap of the question. Write like you're texting a colleague who already has the context — plain sentences, not headings or bullets. Reach for a list only when the content is genuinely a list; never use one to look organised.`;case`detailed`:return`Take the space you need to actually explain things. Walk through what's going on, why it matters, and where the real tradeoffs are. Prefer flowing prose over bullet points and headings — structure the answer with paragraphs and let the reasoning carry it. Lists are fine when something really is enumerable, but don't fragment a normal explanation into bullets.`;case`mentor`:return`Talk like a patient senior engineer pairing with someone less experienced. Explain the underlying idea before the answer, think out loud about how you'd approach it, and drop in a small concrete example when it actually helps. Keep it conversational — no lecture format, no checklists, no numbered steps unless the task literally is a sequence.`;case`pushback`:return`Don't agree automatically. If something I say sounds off — a wrong assumption, a flawed approach, a request that won't actually do what I think it will — push back first. Explain what you disagree with and why, and only proceed once I've responded. Disagreement is welcome; sycophancy is not. Don't soften it with 'you might want to consider' — just say it.`;case`noFiller`:return`Cut the filler. No 'Great question', no 'Certainly', no 'I'll help you with that', no restating what I just asked. No closing summary of what you did when the diff or output already shows it. No trailing 'let me know if you need anything else'. Open with the actual content and stop when you're done.`;case`matchEnergy`:return`Mirror the size and register of my message. A one-line question gets a one-line answer. A casual aside gets a casual reply, not a structured breakdown. If I write three words, don't respond with three paragraphs. Match the tone too — informal stays informal, technical stays technical. Don't inflate small asks into full essays.`;case`warmPeer`:return`Talk like a colleague, not an assistant. First person is fine and encouraged — 'I'd do this', 'I don't love that approach', 'that was sloppy of me'. Have actual opinions and share them. Push back when you disagree. Admit when you screwed up without grovelling. Skip the corporate helpfulness and performative politeness — just be a person.`}},ts=new Map,ns=new Map,rs=({enabled:e,preset:t,customInstructions:n})=>e?t===`custom`?(typeof n==`string`?n.trim():``)||null:$o(t)?es(t):null:null,is=(e,t=r())=>{ts.set(t,{enabled:e.enabled===!0,preset:e.preset,customInstructions:e.customInstructions})},as=(e=r())=>{let t=ts.get(e);if(t)return rs(t)},os=async()=>{let e=r(),t=as(e);if(t!==void 0)return t;let n=ns.get(e);if(n)return n;let i=(async()=>{let t=await me(e);return is({enabled:t.responseStyleEnabled,preset:t.responseStylePreset,customInstructions:t.responseStyleCustomInstructions},e),as(e)??null})();ns.set(e,i);try{return await i}finally{ns.get(e)===i&&ns.delete(e)}},ss;(function(e){function t(e,t,n){let r=0,i=e.length-1;for(;r<=i;){let a=Math.floor((r+i)/2),o=n(e[a]);if(o===t)return{found:!0,index:a};o<t?r=a+1:i=a-1}return{found:!1,index:r}}e.search=t})(ss||={});function cs(e,t){return e.findIndex(e=>e.id===t)}function ls(e,t){if(!t)return e.slice();let n=cs(e,t);return n<0?e.slice():e.slice(0,n)}function us(e,t,n){let r=cs(e,n);return r<0?!1:cs(e,t)>=r}function ds(e,t){if(!t){for(let t=e.length-1;t>=0;--t){let n=e[t];if(n?.role===`user`)return n}return}let n=cs(e,t);if(!(n<0))for(let t=n-1;t>=0;--t){let n=e[t];if(n?.role===`user`)return n}}function fs(e,t){let n=cs(e,t);if(!(n<0))for(let t=n+1;t<e.length;t+=1){let n=e[t];if(n?.role===`user`)return n}}var ps=`openchamber:sync:debug`,ms;function hs(){if(ms!==void 0)return ms;try{ms=typeof localStorage<`u`&&localStorage.getItem(ps)===`1`}catch{ms=!1}return ms}function gs(e,...t){hs()&&(`${e}`,[...t])}var _s={pipeline:{coalesced:(e,t)=>gs(`pipeline`,`coalesced`,e,t),flush:e=>gs(`pipeline`,`flush`,`${e} events`)},reducer:{messageUpdatedUnchanged:(e,t,n,r,i)=>gs(`reducer`,`message.updated UNCHANGED (skipped)`,{sessionID:e,messageID:t,role:n,finish:r,completed:i}),partUpdatedNoExistingParts:(e,t,n)=>gs(`reducer`,`message.part.updated NO EXISTING PARTS`,{messageID:e,partID:t,partType:n}),partDeltaNoParts:(e,t)=>gs(`reducer`,`message.part.delta DROPPED (no parts array)`,{messageID:e,partID:t}),partDeltaNotFound:(e,t)=>gs(`reducer`,`message.part.delta DROPPED (partID not found)`,{messageID:e,partID:t}),partSkipped:(e,t,n)=>gs(`reducer`,`message.part.updated SKIPPED (type filtered)`,{messageID:e,partID:t,partType:n})},dispatch:{eventNoChange:(e,t,n)=>gs(`dispatch`,`event → no change`,{eventType:e,sessionID:t,messageID:n}),eventApplied:(e,t,n)=>gs(`dispatch`,`event → applied`,{eventType:e,sessionID:t,messageID:n})},recovery:{materializing:e=>gs(`recovery`,`materializing session`,e)}},vs=new Set([`patch`,`step-start`,`step-finish`]),ys=[`text`,`output`],bs=new Set([`completed`,`error`,`aborted`,`failed`,`timeout`,`cancelled`]);function xs(e,t){if(!e||t.length===0)return(e??``)+t;if(e.endsWith(t))return e;let n=Math.min(e.length,t.length);for(let r=n;r>0;r--)if(e.endsWith(t.slice(0,r)))return e+t.slice(r);return e+t}function Ss(e,t){let n=[];for(let r of ys){let i=e[r],a=t[r];typeof i==`string`&&typeof a==`string`&&i.length!==0&&a.length!==0&&(a===i||a.startsWith(i)||i.startsWith(a))&&n.push(r)}return n}function Cs(e){let t=e.state?.time?.end;if(typeof t==`number`)return t;let n=e.time?.end;return typeof n==`number`?n:void 0}function ws(e){if(e.type!==`tool`)return;let t=e.state?.status;return typeof t==`string`?t:void 0}function Ts(e,t){if(e.type!==`tool`||t.type!==`tool`)return!1;let n=ws(e),r=ws(t);if(n&&bs.has(n)&&(!r||!bs.has(r)))return!0;let i=Cs(e),a=Cs(t);return typeof i==`number`&&typeof a!=`number`}function Es(e,t){if(e===t)return!0;if(e===void 0||t===void 0)return e===t;try{return JSON.stringify(e)===JSON.stringify(t)}catch{return!1}}var Ds=[`agent`,`mode`,`providerID`,`modelID`,`variant`,`model`],Os=[`input`,`output`,`reasoning`];function ks(e){if(!e||typeof e!=`object`)return!1;let t=e;return Os.some(e=>typeof t[e]==`number`&&Number.isFinite(t[e])&&t[e]>0)}function As(e){if(!e||typeof e!=`object`)return!1;let t=e;return Os.every(e=>typeof t[e]!=`number`||!Number.isFinite(t[e])||t[e]<=0)}function js(e){if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0}function Ms(e,t){let n={...e,...t},r=e,i=t,a=n;for(let e of Ds){let t=js(i[e]),n=js(r[e]);t?a[e]=t:n?a[e]=n:delete a[e]}return(e.time||t.time)&&(n.time={...e.time,...t.time}),ks(r.tokens)&&As(i.tokens)&&(a.tokens=r.tokens),n}function Ns(e,t){if(e.role!==t.role||e.finish!==t.finish||e.time?.completed!==t.time?.completed)return!1;for(let n of[`summary`,`error`,`cost`,`tokens`,`structured`,`model`,`tools`,`format`,`variant`,`agent`,`mode`,`providerID`,`modelID`,`system`])if(!Es(e[n],t[n]))return!1;return!0}function Ps(e,t,n){if(!t)return!1;let r=e.message[t];return r?cs(r,n)>=0:!1}function Fs(e,t){switch(t.type){case`message.updated`:{let n=t.properties.info,r=e.message[n.sessionID],i=!!r&&r.every(t=>t.role!==`assistant`||e.part[t.id]!==void 0);if(n.role===`assistant`&&i&&e.part[n.id]===void 0&&(e.part[n.id]=[]),!r)return e.message[n.sessionID]=[n],!0;let a=cs(r,n.id);if(a>=0){let t=r[a],i=Ms(t,n);if(Ns(t,i))return _s.reducer.messageUpdatedUnchanged(n.sessionID,n.id,n.role,n.finish,n.time?.completed),!1;let o=[...r];o[a]=i,e.message[n.sessionID]=o}else e.message[n.sessionID]=[...r,n];return!0}case`message.removed`:{let n=t.properties,r=e.message[n.sessionID];if(r){let t=cs(r,n.messageID);if(t>=0){let i=[...r];i.splice(t,1),e.message[n.sessionID]=i}}return delete e.part[n.messageID],!0}case`message.part.updated`:{let n=t.properties,r=n.part;if(vs.has(r.type))return _s.reducer.partSkipped(r.messageID,r.id,r.type),!1;let i=r.messageID,a=n.sessionID??r.sessionID;if(!i)return!1;let o=!Ps(e,a,i),s=e.part[i];if(!s)return _s.reducer.partUpdatedNoExistingParts(i,r.id,r.type),e.part[i]=[r],!o||{changed:!0,materialization:{type:`incomplete-session-snapshot`,reason:`missing-owning-message`,sessionID:a,messageID:i,partID:r.id}};let c=[...s],l=ss.search(c,r.id,e=>e.id);if(l.found){let e=c[l.index];if(Ts(e,r))return!1;let t=Ss(e,r);c[l.index]=t.length>0?{...r,__dedupeNextDeltaFields:t}:r}else{let e=r.type===`text`||r.type===`file`?c.findIndex(e=>e.type===r.type&&e.__openchamberOptimistic===!0):-1;e>=0&&c.splice(e,1);let t=ss.search(c,r.id,e=>e.id);c.splice(t.index,0,r)}return e.part[i]=c,!o||{changed:!0,materialization:{type:`incomplete-session-snapshot`,reason:`missing-owning-message`,sessionID:a,messageID:i,partID:r.id}}}case`message.part.removed`:{let n=t.properties,r=e.part[n.messageID];if(!r)return!1;let i=ss.search(r,n.partID,e=>e.id);if(i.found){let t=[...r];return t.splice(i.index,1),t.length===0?delete e.part[n.messageID]:e.part[n.messageID]=t,!0}return!1}case`message.part.delta`:{let n=t.properties,r=e.part[n.messageID];if(!r)return _s.reducer.partDeltaNoParts(n.messageID,n.partID),{changed:!1,materialization:{type:`incomplete-session-snapshot`,reason:`orphan-delta`,sessionID:n.sessionID,messageID:n.messageID,partID:n.partID}};let i=ss.search(r,n.partID,e=>e.id);if(!i.found)return _s.reducer.partDeltaNotFound(n.messageID,n.partID),{changed:!1,materialization:{type:`incomplete-session-snapshot`,reason:`missing-delta-part`,sessionID:n.sessionID,messageID:n.messageID,partID:n.partID}};let a=r[i.index],o=a[n.field],s=a.__dedupeNextDeltaFields??[],c=s.includes(n.field),l=[...r];return l[i.index]={...a,[n.field]:c?xs(o,n.delta):(o??``)+n.delta,__dedupeNextDeltaFields:s.filter(e=>e!==n.field)},e.part[n.messageID]=l,!0}default:return!1}}function Is(e){if(typeof e.time?.completed==`number`)return!1;let t=e.finish;return!(typeof t==`string`&&t.length>0)}function Ls(e){let t=e.id;return typeof t==`string`&&t.length>0?t:void 0}function Rs(e){return e.slim===!0}function zs(e,t){if(!e||e.length===0||!t.some(e=>Rs(e)))return t;let n=new Map;for(let t of e){let e=Ls(t);e&&!Rs(t)&&n.set(e,t)}if(n.size===0)return t;let r=!1,i=t.map(e=>{if(!Rs(e))return e;let t=Ls(e);if(!t)return e;let i=n.get(t);return i?(r=!0,i):e});return r?i:t}function Bs(e,t){return e===t||e.length===t.length&&e.every((e,n)=>e===t[n])?t:e}function Vs(e){let t=e.clientRole??e.role;return typeof t==`string`?t:``}function Hs(e){return Vs(e)!==`assistant`||!Is(e)}function Us(e,t,n){if(!e||e.length===0)return t;let r=zs(e,t);if(Hs(n))return Bs(r,e);let i=new Set;for(let e of r){let t=Ls(e);t&&i.add(t)}let a=new Map,o=[],s,c=0;for(let t of e){let e=Ls(t);if(e&&i.has(e)){s=e;continue}if(!e)continue;if(c+=1,!s){o.push(t);continue}let n=a.get(s);if(n){n.push(t);continue}a.set(s,[t])}if(c===0)return Bs(r,e);let l=[...o];for(let e of r){l.push(e);let t=Ls(e);if(!t)continue;let n=a.get(t);n&&l.push(...n)}return Bs(l,e)}var Ws=e=>Object.freeze(e),Gs=Object.freeze({initial:Ws({id:`initial`,onStale:`drop`,messages:`insert-only`,parts:`replace`,preserveStreaming:`assistant`,protectOptimistic:`none`}),prepend:Ws({id:`history`,onStale:`drop`,messages:`insert-only`,parts:`skip-existing`,preserveStreaming:`assistant`,protectOptimistic:`none`}),recovery:Ws({id:`recovery`,onStale:`backfill`,messages:`upsert`,parts:`replace`,preserveStreaming:`assistant`,protectOptimistic:`none`}),"reconcile-page":Ws({id:`reconcile-page`,onStale:`backfill`,messages:`upsert`,parts:`replace`,preserveStreaming:`assistant`,protectOptimistic:`keep-unless-full`}),materialize:Ws({id:`materialize`,onStale:`drop`,messages:`insert-only`,parts:`replace`,preserveStreaming:`assistant`,protectOptimistic:`none`})}),Ks=Ws({id:`recovery-backfill`,onStale:`backfill`,messages:`insert-only`,parts:`skip-existing`,preserveStreaming:`assistant`,protectOptimistic:`none`}),qs=Ws({id:`send-gap-fill`,onStale:`backfill`,messages:`insert-only`,parts:`skip-existing`,preserveStreaming:`assistant`,protectOptimistic:`none`}),Js=Gs.initial;function Ys(e){let t=Gs[e.purpose]??Js;return!e.stale||t.onStale===`drop`?t:Ks}function Xs(e,t){return e.preserveStreaming===`none`?!1:e.preserveStreaming===`all`||t===`assistant`}var Zs=e=>structuredClone(e),Qs=e=>({transport:e.transport,generation:e.generation,directory:e.directory,sessionID:e.sessionID});function $s(e){return JSON.stringify([e.transport,e.generation,e.directory,e.sessionID])}function ec(e,t){return JSON.stringify([e.transport,e.generation,e.directory,e.sessionID,t])}function tc(e){return JSON.stringify([e.transport,e.generation])}function nc(e,t){return e.created===t.created?e.messageID<t.messageID?-1:+(e.messageID>t.messageID):e.created-t.created}function rc(e){let t=e.time?.created;return{created:typeof t==`number`&&Number.isFinite(t)?t:0,messageID:e.id}}function ic(e){return Hs(e)}function ac(e){return Rs(e)?`slim`:`full`}function oc(e){return e.some(e=>Rs(e))?`slim`:`full`}var sc=e=>{if(typeof e!=`object`||!e)return e;if(Array.isArray(e))return e.map(sc);let t=e,n={};for(let e of Object.keys(t).sort()){let r=t[e];r!==void 0&&(n[e]=sc(r))}return n},cc=e=>{let t=new Uint8Array(e),n=``;for(let e of t)n+=e.toString(16).padStart(2,`0`);return n};async function lc(e,t){let n=JSON.stringify(sc({info:e,parts:t})),r=new TextEncoder().encode(n);return{hash:cc(await crypto.subtle.digest(`SHA-256`,r)),byteSize:r.byteLength}}var uc=e=>({scope:Qs(e.scope),messageID:e.messageID,info:Zs(e.info),parts:Zs(e.parts),partCompleteness:e.partCompleteness.slice(),completeness:e.completeness,contentHash:e.contentHash,byteSize:e.byteSize,lastAccessedAt:e.lastAccessedAt,sortKey:{created:e.sortKey.created,messageID:e.sortKey.messageID}}),dc=e=>{let t=0;return()=>{let n=e();return t=n>t?n:t+1,t}},fc=(e,t)=>{let n=t.slice().sort((e,t)=>nc(e.sortKey,t.sortKey)).map(uc);return{scope:Qs(e),records:n,byteSize:n.reduce((e,t)=>e+t.byteSize,0)}},pc=e=>Zs(e),mc=e=>Qs(e),hc=(e=Date.now)=>dc(e),gc=e=>uc(e),_c=(e,t)=>fc(e,t.slice());function vc(e){return ic(e.info)?e.existing?.completeness===`full`&&e.incomingCompleteness===`slim`?{status:`skipped`,reason:`slim-downgrade`}:e.incomingHash!==void 0&&e.existing?.contentHash===e.incomingHash?{status:`skipped`,reason:`unchanged`}:{status:`written`}:{status:`skipped`,reason:`not-settled`}}var yc=(e,t)=>e<t?-1:+(e>t),bc=[`text`,`output`],xc={pending:1,started:2,running:3,completed:4,error:4};function Sc(e,t){return e.filter(e=>!!e?.id&&!t.has(e.type)).sort((e,t)=>yc(e.id,t.id))}function Cc(e,t){if(!e||e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1){let r=e[n],i=t[n];if(!r||!i||r.id!==i.id||JSON.stringify(r)!==JSON.stringify(i))return!1}return!0}function wc(e){let t=e.state?.time?.end;if(typeof t==`number`)return t;let n=e.time?.end;return typeof n==`number`?n:void 0}function Tc(e,t){let n=e[t];return typeof n==`string`?n:void 0}function Ec(e){return wc(e)===void 0&&bc.some(t=>{let n=Tc(e,t);return typeof n==`string`&&n.length>0})}function Dc(e){let t=e.state;if(!(!t||typeof t!=`object`))return t}function Oc(e){let t=Dc(e)?.status;return typeof t==`string`?t:void 0}function kc(e){return e?xc[e]??0:0}function Ac(e,t){if(Ec(e))return!0;if(wc(e)===void 0){if(e.type===`tool`){let n=Oc(e);return n===`completed`||n===`error`?t:!0}return!0}return t}function jc(e){let t=e.state?.time;if(!t||typeof t!=`object`)return;let n=typeof t.start==`number`?t.start:void 0,r=typeof t.end==`number`?t.end:void 0;if(n!==void 0||r!==void 0)return{start:n,end:r}}function Mc(e){return!!e&&typeof e==`object`&&!Array.isArray(e)&&Object.keys(e).length>0}function Nc(e,t,n){if(e.type!==`tool`||t.type!==`tool`)return n;let r=Dc(e);if(!r)return n;let i=Dc(n)??{},a=Dc(t)??{},o={...i},s=!1,c=Oc(e),l=Oc(t);kc(c)>kc(l)&&c&&(o={...o,status:c},s=!0);let u=r.input,d=a.input;Mc(u)&&!Mc(d)&&(o={...o,input:u},s=!0);let f=r.output,p=a.output;typeof f==`string`&&f.length>0?(typeof p!=`string`||p.length<f.length)&&(typeof p!=`string`||p.length===0||f.startsWith(p))&&(o={...o,output:f},s=!0):f!==void 0&&p===void 0&&(o={...o,output:f},s=!0);let m=r.metadata;return Mc(m)&&!Mc(a.metadata)&&(o={...o,metadata:m},s=!0),s?n===t?{...t,state:o}:{...n,state:o}:n}function Pc(e,t){if(!e||wc(t)!==void 0)return t;let n=t;for(let r of bc){let i=Tc(e,r);if(!i)continue;let a=Tc(t,r);if(typeof a==`string`&&a.length>=i.length||typeof a==`string`&&a.length>0&&!i.startsWith(a))continue;n===t&&(n={...t});let o=n;o[r]=i}let r=jc(e);if(r){let e=jc(t),i=e?.start??r.start,a=e?.end??r.end;if(i!==e?.start||a!==e?.end){n===t&&(n={...t});let e=n;e.state={...n.state??{},time:{start:i,end:a}}}}return n=Nc(e,t,n),n}function Fc(e,t){if(!e||e.length===0||!t.some(e=>Rs(e)))return t;let n=new Map;for(let t of e)t.id&&!Rs(t)&&n.set(t.id,t);if(n.size===0)return t;let r=!1,i=t.map(e=>{if(!Rs(e)||!e.id)return e;let t=n.get(e.id);return t?(r=!0,t):e});return r?i:t}function Ic(e){return e.__openchamberOptimistic===!0}function Lc(e){return!!(e&&e.length>0&&e.some(Ic))}function Rc(e){return e.length===0||e.some(e=>Rs(e))}function zc(e,t,n,r,i,a){if(a===`keep-unless-full`&&e&&Lc(e)&&Rc(t))return e;let o=Fc(e,t);if(!e||e.length===0||!r)return o;let s=new Map(e.map(e=>[e.id,e])),c=o,l=!1;for(let e=0;e<o.length;e+=1){let t=o[e],n=Pc(s.get(t.id),t);n!==t&&(l||(c=[...o]),c[e]=n,l=!0)}let u=new Set(o.map(e=>e.id)),d=o.some(e=>Rs(e)),f=e.filter(e=>!!e?.id&&!u.has(e.id)&&!n.has(e.type)&&(Ac(e,i)||d&&!Rs(e)));return f.length===0?c:[...c,...f].sort((e,t)=>yc(e.id,t.id))}var Bc=e=>e,Vc=e=>{let t=Bc(e).finish;return typeof t==`string`&&t.length>0},Hc=e=>typeof Bc(e).time?.completed==`number`,Uc=e=>!!Bc(e).error;function Wc(e,t){let n=Bc(t),r=n.finish,i=n.time?.completed,a=n.error,o=!Vc(e)&&typeof r==`string`&&r.length>0,s=!Hc(e)&&typeof i==`number`,c=!Uc(e)&&!!a;if(!o&&!s&&!c)return e;let l={...e};return o&&(l.finish=r),s&&(l.time={...Bc(e).time,completed:i}),c&&(l.error=a),l}function Gc(e,t,n,r){if(t.length===0)return e;let i=new Map(t.map(e=>[e.id,e])),a=!1,o=[];for(let t of e){let e=n(t,i.get(t.id));e!==t&&(a=!0),o.push(e)}let s=new Set(e.map(e=>e.id)),c=t.filter(e=>!s.has(e.id));if(c.length===0)return a?o:e;if(!t.some(e=>s.has(e.id)))return r===`prepend`?[...c,...o]:r===`by-created`?Kc(o,c):[...o,...c];let l=-1;for(let e of t){let t=o.findIndex(t=>t.id===e.id);if(t>=0){l=t;continue}l+=1,o.splice(l,0,e)}return o}function Kc(e,t){let n=e.slice();for(let e of t){let t=rc(e),r=n.length;for(let e=0;e<n.length;e+=1)if(nc(t,rc(n[e]))<0){r=e;break}n.splice(r,0,e)}return n}function qc(e,t,n){return Gc(e,t,(e,t)=>t?Wc(e,t):e,n)}function Jc(e,t,n){return Gc(e,t,(e,t)=>!t||JSON.stringify(e)===JSON.stringify(t)?e:Ms(e,t),n)}function Yc(e,t,n,r={}){let i=r.skipPartTypes??new Set,a=r.merge??Js,o=r.placeUnanchoredNewMessages??`append`,s=n.filter(e=>!!e?.info?.id),c=s.map(e=>e.info),l=e.message[t],u=l??[],d=a.messages===`upsert`?Jc(u,c,o):qc(u,c,o),f=d!==u||l===void 0&&s.length===0,p=!1,m={...e.part},h=a.parts===`skip-existing`;for(let e of s){let t=e.info.id;if(h&&m[t])continue;let n=e.info.role===`assistant`,r=m[t],o=zc(r,Sc(e.parts??[],i),i,Xs(a,e.info.role),Is(e.info),a.protectOptimistic);(r?Cc(r,o):o.length===0&&!n)||o.length===0&&!n||(m[t]=o,p=!0)}return{message:f?{...e.message,[t]:d}:e.message,part:p?m:e.part,messages:d,messagesChanged:f,partsChanged:p}}function Xc(e){if(typeof e.time?.completed==`number`)return!1;let t=e.finish;return!(typeof t==`string`&&t.length>0)}function Zc(e){let t=e.messages;if(!t)return{hasMessages:!1,renderable:!1,missingPartMessageIDs:[]};let n=t.length>0?t[t.length-1]?.id:void 0,r=[];for(let i of t)i.role===`assistant`&&(e.parts[i.id]||i.id===n&&Xc(i)||r.push(i.id));return{hasMessages:!0,renderable:r.length===0,missingPartMessageIDs:r}}var Qc=(e,t)=>e<t?-1:+(e>t);function $c(e){return e.filter(e=>!!e?.id).sort((e,t)=>Qc(e.id,t.id))}function el(e,t){if(t.length===0)return{...e,confirmed:[]};let n=[...e.session],r=new Map(e.part.map(e=>[e.id,$c(e.part)])),i=[];for(let e of t){if(n.findIndex(t=>t.id===e.message.id)<0){n.push(e.message),r.set(e.message.id,$c(e.parts));continue}let t=r.get(e.message.id);if(t&&t.length>0){i.push(e.message.id);continue}r.set(e.message.id,$c(e.parts))}return{cursor:e.cursor,complete:e.complete,session:n,part:[...r.entries()].sort((e,t)=>Qc(e[0],t[0])).map(([e,t])=>({id:e,part:t})),confirmed:i}}var tl={kind:`unknown`,loadedTurns:0},nl=3e4,rl=12e5,il={project:``,projectMeta:void 0,icon:void 0,provider:{all:[],connected:[],default:{}},config:{},path:{state:``,config:``,worktree:``,directory:``,home:``},status:`loading`,agent:[],command:[],session:[],sessionTotal:0,session_status:{},session_status_observed_at:{},session_status_snapshot_at:void 0,session_diff:{},todo:{},permission:{},question:{},mcp:{},lsp:[],vcs:void 0,limit:20},al={ready:!1,path:{state:``,config:``,worktree:``,directory:``,home:``},projects:[],providers:{all:[],connected:[],default:{}},providerAuth:{},config:{},reload:void 0,sessionTodo:{}};function ol(e,t){return e===void 0||t===void 0?!1:t>e}var sl=class extends Error{};function cl(e,t,n){if(n===`reconcile-page`)return e??tl;let r=0;typeof t.turnCount==`number`&&Number.isFinite(t.turnCount)?r=Math.max(0,Math.floor(t.turnCount)):typeof t.requestedTurnLimit==`number`&&Number.isFinite(t.requestedTurnLimit)?r=Math.max(0,Math.floor(t.requestedTurnLimit)):t.records.length>0&&(r=1);let i=e?.loadedTurns??0,a=n===`prepend`?i+r:r;if(t.complete)return{kind:`exhausted`,loadedTurns:a};let o=typeof t.cursor==`string`&&t.cursor.length>0?t.cursor:void 0;if(!o)throw new sl(`session message page: complete=false requires non-empty cursor`);if(t.records.length===0)throw new sl(`session message page: complete=false with zero records makes no progress`);if(n===`prepend`&&e?.kind===`has-more`&&e.cursor===o)throw new sl(`session message page: prepend returned the same cursor without progress`);return{kind:`has-more`,cursor:o,loadedTurns:a}}function ll(e,t){return!e||!t?e===t:e.kind!==t.kind||e.loadedTurns!==t.loadedTurns?!1:e.kind===`has-more`&&t.kind===`has-more`?e.cursor===t.cursor:!0}function ul(e,t,n,r){let i=ol(r.capturedRevision,r.liveRevision),a=Ys({purpose:r.purpose,stale:i}),o=e.session_history_boundary?.[t];if(!n.ok)return{applied:!1,merge:a,changed:!1,messagesChanged:!1,partsChanged:!1,boundaryChanged:!1,message:e.message,part:e.part,messages:e.message[t]??[],boundary:void 0,meta:void 0,confirmedOptimisticIDs:[],commands:[],error:n.error};if(i&&a.onStale===`drop`){let n=e.message[t]??[];if(n.length>0)return{applied:!1,merge:a,changed:!1,messagesChanged:!1,partsChanged:!1,boundaryChanged:!1,message:e.message,part:e.part,messages:n,boundary:void 0,meta:void 0,confirmedOptimisticIDs:[],commands:[]}}let s=r.optimistic??[],c=el({session:n.records.map(e=>e.info),part:n.records.map(e=>({id:e.info.id,part:e.parts??[]})),cursor:n.cursor,complete:n.complete},s),l=Yc(e,t,c.session.map(e=>({info:e,parts:c.part.find(t=>t.id===e.id)?.part??[]})),{skipPartTypes:r.skipPartTypes,merge:a,placeUnanchoredNewMessages:r.purpose===`prepend`?`prepend`:r.purpose===`reconcile-page`?`by-created`:`append`}),u;try{u=cl(o,{ok:!0,records:n.records,cursor:c.cursor,complete:c.complete,turnCount:n.turnCount,requestedTurnLimit:n.requestedTurnLimit},r.purpose)}catch(n){if(!(n instanceof sl))throw n;return{applied:!1,merge:a,changed:!1,messagesChanged:!1,partsChanged:!1,boundaryChanged:!1,message:e.message,part:e.part,messages:e.message[t]??[],boundary:void 0,meta:void 0,confirmedOptimisticIDs:[],commands:[],error:n.message}}let d=!ll(o,u),f=l.messagesChanged,p=l.partsChanged,m=f||p||d,h=[];c.confirmed.length>0&&h.push({type:`clear-optimistic`,messageIDs:c.confirmed});let g=d||!o?u:o;return{applied:!0,merge:a,changed:m,messagesChanged:f,partsChanged:p,boundaryChanged:d,message:l.message,part:l.part,messages:l.messages,boundary:g,meta:{limit:g.loadedTurns,cursor:g.kind===`has-more`?g.cursor:void 0,complete:g.kind===`exhausted`},confirmedOptimisticIDs:c.confirmed,commands:h}}var dl=new Set([`tool`,`reasoning`,`file`,`text`]),fl=new Set([`tool`,`reasoning`,`file`]);function pl(e){return e.some(e=>Rs(e)&&dl.has(e.type))}function ml(e,t){let n=!1,r=!1;for(let t of e)fl.has(t.type)&&(n=!0,Rs(t)&&(r=!0));return n?r?!0:t?Is(t):!1:!1}var hl=e=>{if(!e)return``;let t=e.clientRole??e.role;return typeof t==`string`?t:``};function gl(e,t){return!e?.id||hl(e)!==`user`?!1:!t||t.length===0||!t.some(e=>e.type===`subtask`||e.type===`compaction`)}function _l(e){let t=0;for(let n of e.messageOrder)gl(e.messagesByID[n],e.partsByMessageID[n])&&(t+=1);return t}var vl=(e,t)=>{let n=e.messageOrder.lastIndexOf(t);if(n<0)return[];let r=[];for(let i=n+1;i<e.messageOrder.length;i+=1){let n=e.messageOrder[i],a=e.messagesByID[n];if(!a)continue;if(gl(a,e.partsByMessageID[n]))break;if(hl(a)!==`assistant`)continue;let o=a.parentID;typeof o==`string`&&o.length>0&&o!==t||r.push(a)}return r},yl=(e,t)=>Is(e)?!0:Array.isArray(t)&&t.length>0;function bl(e){let t;for(let n=e.messageOrder.length-1;n>=0;--n){let r=e.messageOrder[n];if(gl(e.messagesByID[r],e.partsByMessageID[r])){t=r;break}}return t?vl(e,t).some(t=>yl(t,e.partsByMessageID[t.id])):!1}function xl(e){return e.materializeActive?`p2`:e.prependActive||e.earlierHistoryLoaded?`p1`:e.p0Satisfied?`p0`:`idle`}var Sl=new Set([`stop`,`length`]);function Cl(e){let t=e.messageOrder[e.messageOrder.length-1];if(!t)return!1;let n=e.messagesByID[t];if(!n||hl(n)!==`assistant`||n.error)return!1;let r=n.finish;return typeof r!=`string`||!Sl.has(r)?!1:typeof n.time?.completed!=`number`}function wl(e,t){return t.kind===`has-more`?{sessionID:e,boundary:t,hasPreviousPage:!0,isComplete:!1,cursor:t.cursor,loadedTurns:t.loadedTurns}:t.kind===`exhausted`?{sessionID:e,boundary:t,hasPreviousPage:!1,isComplete:!0,cursor:null,loadedTurns:t.loadedTurns}:{sessionID:e,boundary:t,hasPreviousPage:!1,isComplete:!1,cursor:null,loadedTurns:t.loadedTurns}}function Tl(e){let t={},n={},r=[];for(let i of e.messages){if(!i?.id)continue;r.push(i.id),t[i.id]=i;let a=e.parts[i.id];a&&(n[i.id]=a)}return{sessionID:e.sessionID,messageOrder:r,messagesByID:t,partsByMessageID:n,boundary:e.boundary,liveRevision:e.liveRevision??0}}var El=[`message.updated`,`message.removed`,`message.part.updated`,`message.part.removed`,`message.part.delta`];function Dl(e){return El.includes(e)}function Ol(e){return e.trim()}function kl(e){return`${Ol(e.directory)}\n${e.sessionID}`}function Al(e,t){return e.session_history_boundary?.[t]??tl}function jl(e){return e.filter(e=>!!e?.id).slice().sort((e,t)=>e.id<t.id?-1:+(e.id>t.id))}function Ml(e,t){return e.kind!==t.kind||e.loadedTurns!==t.loadedTurns?!1:e.kind===`has-more`&&t.kind===`has-more`?e.cursor===t.cursor:!0}function Nl(e,t,n){n.applied&&e.setState(e=>{let r={};if(n.messagesChanged&&(r.message=n.message),n.partsChanged&&(r.part=n.part),n.boundary&&(n.boundaryChanged||!e.session_history_boundary?.[t]))r.session_history_boundary={...e.session_history_boundary??{},[t]:n.boundary};else if(n.boundary&&n.boundaryChanged===!1){let i=e.session_history_boundary?.[t];(!i||!Ml(i,n.boundary))&&(r.session_history_boundary={...e.session_history_boundary??{},[t]:n.boundary})}return!r.message&&!r.part&&!r.session_history_boundary&&n.boundary&&(r.session_history_boundary={...e.session_history_boundary??{},[t]:n.boundary}),!r.message&&!r.part&&!r.session_history_boundary?{}:r})}function Pl(e,t,n){let r=e.getState(),i=n.page,a=ul(r,t,{ok:!0,records:i.records.map(e=>({info:e.info,parts:e.parts?[...e.parts]:[]})),cursor:i.cursor,complete:i.complete,turnCount:i.turnCount,requestedTurnLimit:i.requestedTurnLimit},{purpose:n.purpose,skipPartTypes:n.skipPartTypes,optimistic:n.optimistic?n.optimistic.map(e=>({message:e.message,parts:[...e.parts]})):void 0,capturedRevision:n.capturedLiveRevision,liveRevision:n.liveRevision});return a.applied?(Nl(e,t,a),{applied:!0,changed:a.changed,boundary:a.boundary,meta:a.meta,confirmedOptimisticIDs:a.confirmedOptimisticIDs}):{applied:!1,changed:!1,error:a.error}}function Fl(e,t){if(t.length===0)return{applied:!1,changed:!1};let n=e.getState(),r={message:{...n.message??{}},part:{...n.part??{}}},i=!1,a=!1,o;for(let e of t){if(!Dl(e.type))continue;i=!0;let t=Fs(r,e),n=typeof t==`boolean`?t:t.changed,s=typeof t==`boolean`?void 0:t.materialization;s&&!o&&(o=s),n&&(a=!0)}return i?a?(e.setState({message:r.message,part:r.part}),{applied:!0,changed:!0,...o?{materialization:o}:{}}):{applied:!0,changed:!1,...o?{materialization:o}:{}}:{applied:!1,changed:!1}}function Il(e,t){return Fl(e,[t.event])}function Ll(e,t){return Fl(e,t.events)}function Rl(e,t,n){if(n.records.length===0)return{applied:!1,changed:!1};let r=e.getState(),i=Yc({message:r.message??{},part:r.part??{}},t,n.records.map(e=>({info:e.info,parts:e.parts?[...e.parts]:[]})),{skipPartTypes:n.skipPartTypes,merge:n.merge});return!i.messagesChanged&&!i.partsChanged?{applied:!0,changed:!1}:(e.setState({...i.messagesChanged?{message:i.message}:{},...i.partsChanged?{part:i.part}:{}}),{applied:!0,changed:!0})}function zl(e,t,n){let r=e.getState(),i=r.message?.[t],a=r.part?.[n]!==void 0;if(!i&&!a)return{applied:!0,changed:!1};let o={...r.message??{}},s=!1;if(i){let e=[...i],r=e.findIndex(e=>e.id===n);r>=0&&(e.splice(r,1),o[t]=e,s=!0)}let c={...r.part??{}},l=!1;return c[n]!==void 0&&(delete c[n],l=!0),!s&&!l?{applied:!0,changed:!1}:(e.setState({...s?{message:o}:{},...l?{part:c}:{}}),{applied:!0,changed:!0})}function Bl(e,t,n,r,i){r.setOptimisticShadow?.({directory:i,sessionID:t,message:n.message,parts:n.parts});let a=e.getState(),o={...a.message??{}},s={...a.part??{}},c=o[t]?[...o[t]]:[];return c.some(e=>e.id===n.message.id)||c.push(n.message),o[t]=c,s[n.message.id]=jl(n.parts),e.setState({message:o,part:s}),{applied:!0,changed:!0}}function Vl(e,t,n,r,i){r.clearOptimisticShadow?.({directory:i,sessionID:t,messageID:n});let a=e.getState(),o={...a.message??{}},s={...a.part??{}},c=!1,l=o[t];if(l){let e=[...l],r=e.findIndex(e=>e.id===n);r>=0&&(e.splice(r,1),o[t]=e,c=!0)}return s[n]!==void 0&&(delete s[n],c=!0),c&&e.setState({message:o,part:s}),{applied:!0,changed:c}}function Hl(e,t,n,r){return n.clearOptimisticShadow?.({directory:r,sessionID:e,messageID:t}),{applied:!0,changed:!1}}function Ul(e,t){let n=e.getState(),r=n.message?.[t],i=n.session_history_boundary?.[t],a=!!(r&&r.length>0),o=i!==void 0,s=new Set;if(r)for(let e of r)e?.id&&s.add(e.id);let c=!1,l={...n.part??{}};for(let e of s)l[e]!==void 0&&(delete l[e],c=!0);for(let[e,n]of Object.entries(l))s.has(e)||n?.some(e=>e.sessionID===t)&&(delete l[e],c=!0);if(!a&&!o&&!c)return!1;let u={...n.message??{}};delete u[t];let d={...n.session_history_boundary??{}};return delete d[t],e.setState({message:u,part:l,session_history_boundary:d}),!0}function Wl(e,t,n){let r=Ul(e,t);if(!n.page)return{applied:!0,changed:r};let i=Pl(e,t,{type:`http-page`,purpose:`initial`,page:n.page,capturedLiveRevision:n.capturedLiveRevision,liveRevision:n.liveRevision,skipPartTypes:n.skipPartTypes});return{...i,changed:r||i.changed,applied:i.applied||r}}function Gl(e){let t=new Map,n=new Map,r=r=>{let i=kl(r);if(n.has(i))return;let a=Ol(r.directory),o=e.getStore(a),s=r.sessionID,c=o.getState().message?.[s],l=Al(o.getState(),s),u=new Map;for(let e of c??[])u.set(e.id,o.getState().part?.[e.id]);let d=o.subscribe(e=>{let n=e.message?.[s],a=Al(e,s),o=!1,d=new Map;for(let t of n??[]){let n=e.part?.[t.id];d.set(t.id,n),u.get(t.id)!==n&&(o=!0)}u.size!==d.size&&(o=!0);let f=n!==c,p=Ml(a,l);if(c=n,l=a,u=d,!f&&!o&&p)return;let m=t.get(i);if(!(!m||m.size===0))for(let e of m)e(r)});n.set(i,d)},i=e=>{let r=t.get(e);if(r&&r.size>0)return;let i=n.get(e);i&&(i(),n.delete(e)),t.delete(e)},a={getTranscript(t){let n=Ol(t.directory),r=e.getStore(n).getState(),i=t.sessionID,a=r.message?.[i]??[],o=e.getLiveRevision?.(n,i)??0;return Tl({sessionID:i,messages:a,parts:r.part??{},boundary:Al(r,i),liveRevision:o})},getPagination(t){let n=Ol(t.directory),r=e.getStore(n).getState();return wl(t.sessionID,Al(r,t.sessionID))},getRequestState(t){let n=Ol(t.directory);return e.getRequestState?.(n,t.sessionID)??{sessionID:t.sessionID,status:`idle`}},getHydrationState(e){let t=a.getTranscript(e),n=bl(t);return{sessionID:e.sessionID,p0Satisfied:n,phase:xl({p0Satisfied:n,earlierHistoryLoaded:_l(t)>1})}},getMessage(e,t){return a.getTranscript(e).messagesByID[t]},getParts(t,n){let r=Ol(t.directory);return e.getStore(r).getState().part?.[n]??[]},hasSession(t){let n=Ol(t.directory),r=e.getStore(n).getState().message;return r?Object.prototype.hasOwnProperty.call(r,t.sessionID):!1},apply(t,n){let r=Ol(t.directory),i=e.getStore(r),a=t.sessionID;switch(n.type){case`http-page`:return Pl(i,a,n);case`sse-event`:return Il(i,n);case`sse-event-batch`:return Ll(i,n);case`optimistic-add`:return Bl(i,a,n,e,r);case`optimistic-confirm`:return Hl(a,n.messageID,e,r);case`optimistic-remove`:return Vl(i,a,n.messageID,e,r);case`reset`:return Wl(i,a,n);case`materialize-snapshots`:return Rl(i,a,n);case`remove-message`:return zl(i,a,n.messageID);default:return{applied:!1,changed:!1}}},subscribe(e,n){let a=kl(e),o=t.get(a);return o||(o=new Set,t.set(a,o)),o.add(n),r(e),()=>{let e=t.get(a);e&&(e.delete(n),i(a))}}};return a}var Kl=new Set,ql=new Set;function Jl(e,t){return`${e}\n${t}`}function Yl(){for(let e of ql)e()}function Xl(e,t){!e||!t||(Kl.add(Jl(e,t)),Yl())}function Zl(e,t){!e||!t||Kl.delete(Jl(e,t))&&Yl()}function Ql(e,t){if(!e)return!1;if(t)return Kl.has(Jl(t,e));let n=`\n${e}`;for(let e of Kl)if(e.endsWith(n))return!0;return!1}function $l(e){return ql.add(e),()=>{ql.delete(e)}}var eu=[],tu=new Map,nu=new Map,ru=0,iu=()=>{let e=eu.findIndex(e=>e.priority===`user`);if(e>=0){let[t]=eu.splice(e,1);return t}return eu.shift()},au=()=>{for(;ru<4;){let e=iu();if(!e)return;tu.delete(e.key),ru+=1,Promise.resolve().then(()=>e.run()).then(t=>{e.resolve(t)},t=>{e.reject(t)}).finally(()=>{--ru,nu.delete(e.key),au()})}};function ou(e,t,n){let r=n?.priority??`background`,i=nu.get(e);if(i){let t=tu.get(e);return t&&r===`user`&&t.priority!==`user`&&(t.priority=`user`),i}let a,o,s=new Promise((e,t)=>{a=e,o=t}),c={key:e,priority:r,run:()=>t(),resolve:e=>{a(e)},reject:o};return eu.push(c),tu.set(e,c),nu.set(e,s),au(),s}var su=null,cu=0,lu=new Set;function uu(){cu+=1;for(let e of lu)e()}function du(e){return e}function fu(e){return lu.add(e),()=>{lu.delete(e)}}function pu(){return cu}function mu(e){return su?.repository===e?e:(su={kind:`query`,repository:e},uu(),e)}function hu(){su&&(su=null,uu())}function H(){return su?.repository??null}function gu(){let e=H();if(!e)throw Error(`TranscriptRepository is not bound — SyncProvider must mount first`);return e}function _u(e,t){let n=H();if(n)return n;let r=du(t);return Gl({getStore:e=>r})}function U(e,t,n){return{directory:e.trim(),sessionID:t,...n?.transport===void 0?{}:{transport:n.transport},...n?.generation===void 0?{}:{generation:n.generation}}}function vu(e){try{let t=H(),n=r(),i=s();return t?.getCacheBudget?.().listCanonical({transport:n,generation:i})?.filter(t=>t.scope.sessionID===e).map(e=>U(e.scope.directory,e.scope.sessionID,{transport:e.scope.transport,generation:e.scope.generation}))??[]}catch{return[]}}function yu(e,t){let n=H();return n?n.apply(e,t):null}async function bu(e,t){let n=gu();if(typeof n.fetchPreviousPage!=`function`)throw Error(`TranscriptRepository does not support fetchPreviousPage`);await n.fetchPreviousPage(U(e,t))}async function xu(e,t){let n=gu();if(typeof n.ensureInitial!=`function`)throw Error(`TranscriptRepository does not support ensureInitial`);await n.ensureInitial(U(e,t))}async function Su(e,t){let n=gu(),r=U(e,t);if(typeof n.destructiveReset==`function`){await n.destructiveReset(r);return}if(typeof n.ensureInitial!=`function`)throw Error(`TranscriptRepository does not support retryInitial`);await n.ensureInitial(r)}async function Cu(e,t){let n=gu();if(typeof n.refreshFromAuthority!=`function`)throw Error(`TranscriptRepository does not support refreshFromAuthority`);Xl(e,t);try{await n.refreshFromAuthority(U(e,t))}finally{Zl(e,t)}}async function wu(e,t,n,r){let i=gu();if(typeof i.materializeMessage!=`function`)throw Error(`TranscriptRepository does not support materializeMessage`);let a=U(e,t);await ou(`${e}\n${t}\n${n}`,()=>i.materializeMessage(a,n),{priority:r?.priority??`background`})}function Tu(e,t,n){let r=H();return!r||typeof r.getMessageMaterializationState!=`function`?{sessionID:t,messageID:n,status:`idle`}:r.getMessageMaterializationState(U(e,t),n)}function Eu(e,t){H()?.purgeSession?.(U(e,t))}var Du=null;function Ou(e){Du&&Du!==e&&Du.cancelAll(`reregister`),Du=e}function ku(e){Du?.captureCheckpoints(e)}function Au(e){Du?.onCompensation(e)}async function ju(e){return Du?Du.ensureOnObserve(e):null}function Mu(e){Du?.cancelAll(e)}var W=e(Ne(),1),Nu=[],Pu=[],Fu={sessionID:``,messageOrder:[],messagesByID:{},partsByMessageID:{},boundary:tl,liveRevision:0};wl(``,tl);var Iu={sessionID:``,phase:`idle`,p0Satisfied:!1};function Lu(e,t){return _u(e,t)}var Ru=new Set;function zu(e,t){return`${e}\n${t}`}function Bu(e,t){if(!t)return;let n=zu(e,t);Ru.has(n)||(Ru.add(n),ju(U(e,t)).catch(()=>{}).finally(()=>{Ru.delete(n)}))}function Vu(e,t){if(e&&t){Ru.delete(zu(e,t));return}Ru.clear()}function Hu(e,t,n,r,i=Object.is,a){let o=(0,W.useRef)(r);o.current=r;let s=(0,W.useRef)(i);s.current=i;let c=(0,W.useRef)(void 0),l=a?.enabled!==!1,u=(0,W.useCallback)(()=>{if(!e||!l){let e=o.current(Fu);return(c.current===void 0||!s.current(c.current,e))&&(c.current=e),c.current}let r=Lu(t,n).getTranscript(U(t,e)),i=o.current(r);return(c.current===void 0||!s.current(c.current,i))&&(c.current=i),c.current},[t,l,e,n]),d=(0,W.useCallback)(r=>{if(!e||!l)return()=>void 0;Bu(t,e);let i=Lu(t,n).subscribe(U(t,e),()=>{r()}),a=fu(()=>{i(),c.current=void 0,Vu(t,e),Bu(t,e),i=Lu(t,n).subscribe(U(t,e),()=>{r()}),r()});return()=>{a(),i()}},[t,l,e,n]);return W.useSyncExternalStore(d,u,u)}function Uu(e,t){if(e.messageOrder.length===0)return Nu;if(t&&t.length>0){let n=!0,r=0;for(let i of e.messageOrder){let a=e.messagesByID[i];if(a){if(r>=t.length||t[r]!==a){n=!1;break}r+=1}}if(n&&r===t.length)return t}let n=[];for(let t of e.messageOrder){let r=e.messagesByID[t];r&&n.push(r)}return n}function Wu(e,t){return e.messageOrder.length===0?t?.resolved===!0?Zc({messages:Nu,parts:e.partsByMessageID}):{hasMessages:!1,renderable:!1,missingPartMessageIDs:[]}:Zc({messages:Uu(e),parts:e.partsByMessageID})}function Gu(e,t,n,r){let i=(0,V.c)(4),a;return i[0]!==t||i[1]!==e||i[2]!==n?(a=r=>{if(!e)return{hasMessages:!1,renderable:!1,missingPartMessageIDs:[]};let i=Lu(t,n).hasSession?.(U(t,e));return Wu(r,{resolved:i===!0||void 0})},i[0]=t,i[1]=e,i[2]=n,i[3]=a):a=i[3],Hu(e,t,n,a,Ku,r)}function Ku(e,t){return e.hasMessages===t.hasMessages&&e.renderable===t.renderable&&e.missingPartMessageIDs.length===t.missingPartMessageIDs.length&&e.missingPartMessageIDs.every((e,n)=>e===t.missingPartMessageIDs[n])}function qu(e,t,n,r){return Hu(e,t,n,Yu,Ju,r)}function Ju(e,t){if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(e[n]!==t[n])return!1;return!0}function Yu(e){return Uu(e)}function Xu(e,t,n){return Hu(e,t,n,Qu,Zu)}function Zu(e,t){return e===t?!0:!e||!t?!1:e.id===t.id&&e.role===t.role&&e.timestamp===t.timestamp}function Qu(e){if(e.messageOrder.length===0)return null;let t=e.messageOrder[e.messageOrder.length-1],n=t?e.messagesByID[t]:void 0;if(!n?.id)return null;let r=n.time;return{id:n.id,role:typeof n.role==`string`?n.role:``,timestamp:r?.completed??r?.created??0}}function $u(e,t){if(e===t)return!0;if(e.sessionID!==t.sessionID||e.liveRevision!==t.liveRevision||e.boundary.kind!==t.boundary.kind||e.boundary.loadedTurns!==t.boundary.loadedTurns||e.boundary.kind===`has-more`&&t.boundary.kind===`has-more`&&e.boundary.cursor!==t.boundary.cursor||e.messageOrder.length!==t.messageOrder.length)return!1;for(let n=0;n<e.messageOrder.length;n+=1){let r=e.messageOrder[n];if(r!==t.messageOrder[n]||e.messagesByID[r]!==t.messagesByID[r]||e.partsByMessageID[r]!==t.partsByMessageID[r])return!1}return!0}function ed(e,t,n,r){return Hu(e,t,n,td,$u,r)}function td(e){return e}function nd(e,t,n,r){if(e.length===0)return()=>void 0;let i=[],a=()=>{for(let e of i)e();i=[]},o=()=>{let r=new Set;for(let a of e){let e=`${a.directory}\n${a.sessionID}`;if(r.has(e))continue;r.add(e);let o=H();if(o){i.push(o.subscribe(U(a.directory,a.sessionID),t));continue}let s=n?.(a.directory);if(!s)continue;let c=_u(a.directory,s);i.push(c.subscribe(U(a.directory,a.sessionID),t))}},s=()=>{a(),o(),t()};o();let c=fu(s),l=r?.subscribeRebuild?.(s);return()=>{l?.(),c(),a()}}function rd(e,t){return e.length===0?``:e.map(e=>{let n=hd(e.directory,e.sessionID,t?.(e.directory)),r=n[n.length-1];return`${e.sessionID}:${r?.id??``}:${r?.role??``}:${r?.time?.completed??``}`}).join(`\0`)}function id(e,t,n){return Hu(e,t,n,ad)}function ad(e){return e.messageOrder.length}function od(e,t,n){let r=(0,V.c)(8),i=(0,W.useRef)(!1),a;r[0]!==t||r[1]!==e||r[2]!==n?(a=()=>{if(!e)return i.current=!1,!1;let r=Lu(t,n),a=r.hasSession?.(U(t,e))??r.getTranscript(U(t,e)).messageOrder.length>0;return i.current=a,i.current},r[0]=t,r[1]=e,r[2]=n,r[3]=a):a=r[3];let o=a,s;r[4]!==t||r[5]!==e||r[6]!==n?(s=r=>e?Lu(t,n).subscribe(U(t,e),()=>{r()}):sd,r[4]=t,r[5]=e,r[6]=n,r[7]=s):s=r[7];let c=s;return W.useSyncExternalStore(c,o,o)}function sd(){}function cd(e,t,n,r){let i=(0,V.c)(10),a=(0,W.useRef)(void 0),o;i[0]!==t||i[1]!==e||i[2]!==r||i[3]!==n?(o=()=>{if(!e)return a.current=Pu,Pu;let i=Lu(t,n),o=r||e,s=i.getParts(U(t,o),e),c=s.length===0?Pu:s;if(a.current===void 0||a.current!==c){if(a.current&&a.current.length===c.length&&a.current.every((e,t)=>e===c[t]))return a.current;a.current=c}return a.current},i[0]=t,i[1]=e,i[2]=r,i[3]=n,i[4]=o):o=i[4];let s=o,c;i[5]!==t||i[6]!==e||i[7]!==r||i[8]!==n?(c=i=>{if(!e)return ud;let a=Lu(t,n);return r?a.subscribe(U(t,r),()=>{i()}):ld},i[5]=t,i[6]=e,i[7]=r,i[8]=n,i[9]=c):c=i[9];let l=c;return W.useSyncExternalStore(l,s,s)}function ld(){}function ud(){}function dd(e,t,n){let r=(0,V.c)(8),i=(0,W.useRef)(Iu),a;r[0]!==t||r[1]!==e||r[2]!==n?(a=()=>{if(!e)return i.current!==Iu&&(i.current=Iu),i.current;let r=Lu(t,n).getHydrationState?.(U(t,e))??{sessionID:e,phase:`idle`,p0Satisfied:!1},a=i.current;return a.sessionID===r.sessionID&&a.phase===r.phase&&a.p0Satisfied===r.p0Satisfied?a:(i.current=r,r)},r[0]=t,r[1]=e,r[2]=n,r[3]=a):a=r[3];let o=a,s;r[4]!==t||r[5]!==e||r[6]!==n?(s=r=>{if(!e)return fd;Bu(t,e);let a=Lu(t,n).subscribe(U(t,e),()=>{r()}),o=fu(()=>{a(),i.current=Iu,Vu(t,e),Bu(t,e),a=Lu(t,n).subscribe(U(t,e),()=>{r()}),r()});return()=>{o(),a()}},r[4]=t,r[5]=e,r[6]=n,r[7]=s):s=r[7];let c=s;return W.useSyncExternalStore(c,o,o)}function fd(){}function pd(e,t,n){let r=(0,V.c)(2),i;return r[0]===e?i=r[1]:(i=t=>wl(e,t.boundary),r[0]=e,r[1]=i),Hu(e,t,n,i,md)}function md(e,t){return e.sessionID===t.sessionID&&e.hasPreviousPage===t.hasPreviousPage&&e.isComplete===t.isComplete&&e.cursor===t.cursor&&e.loadedTurns===t.loadedTurns&&e.boundary.kind===t.boundary.kind&&e.boundary.loadedTurns===t.boundary.loadedTurns&&(e.boundary.kind!==`has-more`||t.boundary.kind!==`has-more`||e.boundary.cursor===t.boundary.cursor)}function hd(e,t,n){if(!t)return[];let r=H();if(r){let n=r.getTranscript(U(e,t));return n.messageOrder.map(e=>n.messagesByID[e]).filter(e=>!!e)}if(!n)return[];let i=_u(e,n).getTranscript(U(e,t));return i.messageOrder.map(e=>i.messagesByID[e]).filter(e=>!!e)}var gd=null,_d=``,vd=null,yd=new Set,bd=null,xd=new Map,Sd=new Map;function Cd(e,t,n,r){gd=t,bd!==t&&(bd=null,xd=new Map,Sd=new Map),_d=n,r&&(vd=r)}function wd(e,t){vd?.(e,t)}function Td(){if(!gd)throw Error(`ChildStoreManager not initialized — is SyncProvider mounted?`);return gd}function Ed(e){let t=gd;if(!t)return;let n=e||_d;if(n)return t.getState(n)}function Dd(e){let t=Ed(e)?.config;return t&&Object.keys(t).length>0?t:void 0}function Od(e){return yd.add(e),()=>{yd.delete(e)}}function kd(e,t){if(e)for(let n of yd)n(e,t)}function Ad(e){return Ed(e)?.session??[]}function jd(){return Array.from(Md().values())}function Md(){let e=gd;if(!e)return Sd;let t=bd!==e||xd.size!==e.children.size;for(let[n,r]of e.children)if(xd.get(n)!==r.getState().session){t=!0;break}if(!t)return Sd;let n=new Map,r=new Map;for(let[t,i]of e.children){let e=i.getState().session;n.set(t,e);for(let t of e)t?.id&&r.set(t.id,t)}return bd=e,xd=n,Sd=r,Sd}function Nd(e,t,n){if(n){let r=[];for(let[i,a]of n)if(a.session.some(t=>t.id===e)&&a.hasTranscript===!0){if(i===t)return i;r.push(i)}return r.length===1?r[0]:void 0}let r=[];try{let n=H();if(gd){for(let[i,a]of gd.children)if(a.getState().session.some(t=>t.id===e)&&(n??_u(i,a)).hasSession?.(U(i,e))){if(i===t)return i;r.push(i)}}if(r.length===0&&n){let i=n.getCacheBudget?.().listCanonical();if(i){for(let n of i)if(n.scope.sessionID===e){if(n.scope.directory===t)return n.scope.directory;r.push(n.scope.directory)}}}}catch{}let i=[...new Set(r)];return i.length===1?i[0]:void 0}function Pd(e,t){if(!e)return[];try{let n=H(),r=t??_d;if(n){let t=n.getTranscript(U(r,e));return t.messageOrder.map(e=>t.messagesByID[e]).filter(e=>!!e)}if(gd){let t=gd.getChild(r);if(t){let n=_u(r,t).getTranscript(U(r,e));return n.messageOrder.map(e=>n.messagesByID[e]).filter(e=>!!e)}}}catch{}return[]}function Fd(e,t){if(!e)return[];try{let n=H(),r=t??_d;if(n)return[...n.getParts(U(r,e),e)];if(gd){let t=gd.getChild(r);if(t)return[..._u(r,t).getParts(U(r,e),e)]}}catch{}return[]}function Id(e,t){return Ed(t)?.session_status[e]}var Ld=`opencode`,Rd=`big-pickle`,zd=`__add_provider__`,Bd=`zen`,Vd=`big-pickle`,Hd=async(e,t)=>{z(`config.defaults:start`);let n=typeof performance<`u`?performance.now():Date.now(),r=(e,t)=>{let r=typeof performance<`u`?performance.now():Date.now();return z(`config.defaults:end`,{source:e,durationMs:Math.round(r-n),hasDefaultModel:!!t.defaultModel,hasDefaultAgent:!!t.defaultAgent}),t};try{let t=await me(e);return is({enabled:t?.responseStyleEnabled,preset:t?.responseStylePreset,customInstructions:t?.responseStyleCustomInstructions},e),r(`settings-bootstrap-query`,t)}catch(n){z(`config.defaults:error`,{error:n instanceof Error?n.message:String(n)});let i=I(e);return i&&is({enabled:i.responseStyleEnabled,preset:i.responseStylePreset,customInstructions:i.responseStyleCustomInstructions},e),r(i?`retained-settings-bootstrap`:`retained-store-settings`,i??t)}},Ud=e=>Zo(e),Wd=e=>e===zd?``:e??``,Gd=(e,t)=>e===zd?zd:t,Kd=e=>{if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0},qd=e=>{if(!Array.isArray(e))return[];let t=e.map(e=>{if(!$d(e))return e;let t=Array.isArray(e.models)?Object.fromEntries(e.models.map((e,t)=>[String(t),e])):e.models;return{...e,models:t}});try{return Yi({schemaVersion:1,providers:t,default:{},partial:!1}).providers.map(e=>({id:e.id,name:e.name,models:Object.values(e.models)}))}catch{return[]}},Jd=e=>{try{return Yi({schemaVersion:1,providers:[],default:e,partial:!1}).default}catch{return{}}},Yd=(e,t,n)=>{let r=e.find(e=>e.id===t);return r?r.models.some(e=>e.id===n):!1},Xd=({providers:e,currentProviderId:t,currentModelId:n,currentVariant:r,settingsDefaultModel:i,settingsDefaultVariant:a})=>{let o=(t,n,r)=>{if(!r)return;let i=e.find(e=>e.id===t)?.models.find(e=>e.id===n);return i?.variants&&Object.prototype.hasOwnProperty.call(i.variants,r)?r:void 0};if(t&&n&&Yd(e,t,n))return{providerId:t,modelId:n,variant:o(t,n,r)};if(i){let t=Ud(i);if(t&&Yd(e,t.providerId,t.modelId))return{providerId:t.providerId,modelId:t.modelId,variant:o(t.providerId,t.modelId,a)}}if(Yd(e,Ld,Rd))return{providerId:Ld,modelId:Rd};let s=e[0],c=s?.models[0];return s&&c?{providerId:s.id,modelId:c.id}:null},Zd=({agents:e,providers:t,projectDefaultModel:n,settingsDefaultAgent:r,settingsDefaultModel:i,settingsDefaultVariant:a,opencodeDefaultAgent:o,opencodeDefaultModel:s,projectLastUserSelection:c,globalLastUserSelection:l})=>{if(e.length===0)return{agentName:void 0};let u=(e,n,r)=>{if(!r)return;let i=t.find(t=>t.id===e)?.models.find(e=>e.id===n);return i?.variants&&Object.prototype.hasOwnProperty.call(i.variants,r)?r:void 0},d=n=>{if(!n)return null;let r=e.find(e=>e.name===n.agentName);return!r||!Io(r.mode)||r.hidden===!0||!Yd(t,n.providerId,n.modelId)?null:{agentName:r.name,providerId:n.providerId,modelId:n.modelId,variant:u(n.providerId,n.modelId,n.variant)}},f=d(c);if(f)return f;let p=d(l);if(p)return p;let m=e.filter(e=>Io(e.mode)),h;if(r&&(h=e.find(e=>e.name===r)),!h&&o){let t=e.find(e=>e.name===o);t&&Io(t.mode)&&t.hidden!==!0&&(h=t)}if(h||=m.find(e=>e.name===`build`)||m[0]||e[0],!h)return{agentName:void 0};let g,_,v,y=n||i;if(y){let e=Ud(y);e&&Yd(t,e.providerId,e.modelId)&&(g=e.providerId,_=e.modelId,v=u(g,_,n?void 0:a))}if(!g&&h.model?.providerID&&h.model?.modelID&&Yd(t,h.model.providerID,h.model.modelID)&&(g=h.model.providerID,_=h.model.modelID,v=u(g,_,h.variant)),!g&&s){let e=Ud(s);e&&Yd(t,e.providerId,e.modelId)&&(g=e.providerId,_=e.modelId)}if(!g)if(Yd(t,Ld,Rd))g=Ld,_=Rd;else{let e=t[0],n=e?.models[0];e&&n&&(g=e.id,_=n.id)}return{agentName:h.name,providerId:g,modelId:_,variant:v}},Qd=({providers:e,settingsZenModel:t})=>{let n=Kd(t);if(!Array.isArray(e)||e.length===0)return n?{providerId:Bd,modelId:n}:null;if(n&&Yd(e,Bd,n))return{providerId:Bd,modelId:n};if(Yd(e,Bd,Vd))return{providerId:Bd,modelId:Vd};let r=e.find(e=>e.id===Bd);if(r?.models.length){let e=Math.floor(Math.random()*r.models.length),t=Kd(r.models[e]?.id);if(t)return{providerId:Bd,modelId:t}}return null},$d=e=>typeof e==`object`&&!!e,ef=e=>{if(!e)return[];let t=[];return e.text&&t.push(`text`),e.audio&&t.push(`audio`),e.image&&t.push(`image`),e.video&&t.push(`video`),e.pdf&&t.push(`pdf`),t},tf=(e,t)=>({id:t.id,providerId:e,name:t.name,tool_call:t.capabilities?.toolcall,reasoning:t.capabilities?.reasoning,temperature:t.capabilities?.temperature,attachment:t.capabilities?.attachment,modalities:t.capabilities?{input:ef(t.capabilities.input),output:ef(t.capabilities.output)}:void 0,cost:t.cost?{input:t.cost.input,output:t.cost.output,cache_read:t.cost.cache?.read,cache_write:t.cost.cache?.write}:void 0,limit:t.limit,release_date:t.release_date}),nf=e=>new Promise(t=>setTimeout(t,e)),rf=800,af=async(e=rf)=>Promise.race([B.checkHealth().catch(()=>!1),nf(Math.max(1,e)).then(()=>!1)]),of=`__global__`,sf=e=>{let t=typeof e==`string`?e.trim():``;return t.length>0?t:of},cf=e=>e===of?null:e,lf=()=>typeof window>`u`?of:vf(B.getDirectory()??Ue.getState().currentDirectory),uf=`oc.worktreeProjectMap`,df=null,ff=()=>{if(df===null)try{let e=typeof localStorage<`u`?localStorage.getItem(uf):null;df=e?JSON.parse(e):{}}catch{df={}}return df},pf=(e,t)=>{if(!e||!t||e===t)return;let n=ff();if(n[e]!==t){n[e]=t;try{localStorage.setItem(uf,JSON.stringify(n))}catch{}}},mf=e=>{let t=_(e);return t===null?null:t||`/`},hf=()=>{try{return Si.getState().projects.map(e=>mf(e.path)).filter(e=>!!e)}catch{return[]}},gf=()=>{try{let{projects:e,activeProjectId:t}=Si.getState();return mf((t?e.find(e=>e.id===t):null)?.path??e[0]?.path??null)}catch{return null}},_f=e=>{let t=mf(e),n=hf();if(!t)return null;if(n.includes(t))return t;let r=mf(ff()[t]);if(r)return r;try{let e=mf(Xo(Si.getState().projects,$.getState().availableWorktreesByProject,t)?.path??null);if(e&&e!==t)return pf(t,e),e}catch{return null}return null},vf=e=>sf(_f(e)),yf=e=>vf(e),bf=1e3,xf=125e4,Sf=100,Cf=256,wf=new Set([`__proto__`,`prototype`,`constructor`]),Tf=/[\u0000-\u001F\u007F]/u,Ef=new TextEncoder,Df=e=>{let t=e.directoryScoped,n=e.activeDirectoryKey;if(!t||!n)return e;let r=t[n];if(!r)return e;let i={...e},a=e.providers&&e.providers.length>0?e.providers:r.providers;return i.providers=a,i.agents=[],i.defaultProviders=e.defaultProviders&&Object.keys(e.defaultProviders).length>0?e.defaultProviders:r.defaultProviders,i.currentProviderId=r.currentProviderId,i.currentModelId=r.currentModelId,i.currentVariant=r.currentVariant,i.currentAgentName=r.currentAgentName,i.selectedProviderId=r.selectedProviderId,i.agentModelSelections=r.agentModelSelections,i.lastSelectedAgentName=r.lastSelectedAgentName,i.lastUserSelection=r.lastUserSelection,i.opencodeDefaultAgent=r.opencodeDefaultAgent,i.opencodeDefaultModel=r.opencodeDefaultModel,i.selectionSource=r.selectionSource??`auto`,a.length>0&&r.providerCatalogPartial!==!0&&ea(null,{providers:a,defaultProviders:i.defaultProviders??{},providerCatalogPartial:!1}),i},Of=(e,t=!1)=>{if(typeof e!=`string`)return;let n=e.trim();if(!(n.length===0||n.length>Cf||t&&n!==e||Tf.test(n)||wf.has(n)))return n},kf=e=>{if(!$d(e))return{};let t=[];for(let[n,r]of Object.entries(e)){if(t.length>=Sf||!$d(r))continue;let e=Of(n,!0),i=Of(r.providerId),a=Of(r.modelId),o=Of(r.variant);!e||!i||!a||r.variant!==void 0&&!o||t.push([e,{providerId:i,modelId:a,...o?{variant:o}:{}}])}return Object.fromEntries(t)},Af=e=>{if(!$d(e))return;let t=Of(e.agentName,!0),n=Of(e.providerId),r=Of(e.modelId),i=Of(e.variant);if(!(!t||!n||!r||e.variant!==void 0&&!i))return{agentName:t,providerId:n,modelId:r,...i?{variant:i}:{}}},jf=(e,t)=>{if(!e)return;let n=t[e];if(n)return{agentName:e,providerId:n.providerId,modelId:n.modelId,...n.variant?{variant:n.variant}:{}}},Mf=(e,t,n)=>Af(e)??jf(t,n),Nf=(e=[],t=[])=>({providers:e,agents:t,currentProviderId:``,currentModelId:``,currentVariant:void 0,currentAgentName:void 0,selectedProviderId:``,agentModelSelections:{},lastSelectedAgentName:void 0,lastUserSelection:void 0,defaultProviders:{},providerCatalogPartial:!1,opencodeDefaultAgent:void 0,opencodeDefaultModel:void 0,selectionSource:`auto`}),Pf=e=>{let t={};for(let[n,r]of Object.entries(e)){let e=r.lastUserSelection??jf(r.lastSelectedAgentName,r.agentModelSelections);!e&&!r.lastSelectedAgentName||(t[n]={...Nf(),agentModelSelections:{},lastSelectedAgentName:e?.agentName??r.lastSelectedAgentName,lastUserSelection:e,selectionSource:r.selectionSource===`manual`?`manual`:`auto`})}return t},Ff=e=>{if(!$d(e))return{};let t=Kd(e.catalogTransportIdentity),n={};for(let t of[`activeDirectoryKey`,`settingsDefaultModel`,`settingsDefaultVariant`,`settingsDefaultAgent`,`settingsZenModel`]){let r=Kd(e[t]);r!==void 0&&(n[t]=r)}for(let t of[`settingsAutoCreateWorktree`,`settingsGitmojiEnabled`,`settingsDefaultFileViewerPreview`])typeof e[t]==`boolean`&&(n[t]=e[t]);(e.settingsMessageStreamTransport===`auto`||e.settingsMessageStreamTransport===`ws`||e.settingsMessageStreamTransport===`sse`)&&(n.settingsMessageStreamTransport=e.settingsMessageStreamTransport);for(let t of[`speechRate`,`speechPitch`,`speechVolume`])typeof e[t]==`number`&&Number.isFinite(e[t])&&(n[t]=e[t]);let i={};if($d(e.directoryScoped))for(let[t,n]of Object.entries(e.directoryScoped)){if(!$d(n))continue;let e=n.providerCatalogPartial===!0,r=e?[]:qd(n.providers),a=e?{}:Jd(n.defaultProviders),o=kf(n.agentModelSelections),s=Of(n.lastSelectedAgentName,!0),c=Mf(n.lastUserSelection,s,o);i[t]={...Nf(),providers:r,agents:[],currentProviderId:Kd(n.currentProviderId)??``,currentModelId:Kd(n.currentModelId)??``,currentVariant:Kd(n.currentVariant),currentAgentName:Kd(n.currentAgentName),selectedProviderId:Wd(Kd(n.selectedProviderId)),agentModelSelections:o,lastSelectedAgentName:c?.agentName??s,lastUserSelection:c,defaultProviders:a,providerCatalogPartial:e,opencodeDefaultAgent:Kd(n.opencodeDefaultAgent),opencodeDefaultModel:Kd(n.opencodeDefaultModel),selectionSource:n.selectionSource===`manual`?`manual`:`auto`}}let a=kf(e.agentModelSelections),o=Of(e.lastSelectedAgentName,!0),s=Mf(e.globalLastUserSelection,o,a)??(()=>{let t=Kd(e.activeDirectoryKey);return t?i[t]?.lastUserSelection:void 0})(),c=r();if(t!==c){let t=Pf(i),r=Kd(e.activeDirectoryKey),a=r?t[r]?.lastUserSelection:void 0;return{...n,catalogTransportIdentity:c,directoryScoped:t,providers:[],agents:[],defaultProviders:{},currentProviderId:``,currentModelId:``,currentVariant:void 0,currentAgentName:void 0,selectedProviderId:``,agentModelSelections:{},lastSelectedAgentName:a?.agentName??s?.agentName,lastUserSelection:a,globalLastUserSelection:s,providerConfigLoadingByDirectory:{},agentConfigLoadingByDirectory:{}}}return{...n,catalogTransportIdentity:t,directoryScoped:i,providers:[],agents:[],defaultProviders:{},currentProviderId:Kd(e.currentProviderId)??``,currentModelId:Kd(e.currentModelId)??``,currentVariant:Kd(e.currentVariant),currentAgentName:Kd(e.currentAgentName),selectedProviderId:Wd(Kd(e.selectedProviderId)),agentModelSelections:a,lastSelectedAgentName:s?.agentName??o,lastUserSelection:(()=>{let t=Kd(e.activeDirectoryKey);return t?i[t]?.lastUserSelection:void 0})(),globalLastUserSelection:s}},If=(e,t,n,r)=>{if(!r)return!0;let i=e.find(e=>e.id===t)?.models.find(e=>e.id===n);return!!i?.variants&&Object.prototype.hasOwnProperty.call(i.variants,r)},Lf=({agents:e,providers:t,currentAgentName:n,currentProviderId:r,currentModelId:i,currentVariant:a,selectionSource:o,resolvedAgentName:s,resolvedProviderId:c,resolvedModelId:l,resolvedVariant:u})=>{let d=n&&e.some(e=>e.name===n)?n:void 0,f=!!r&&!!i&&Yd(t,r,i)&&If(t,r,i,a),p=o===`manual`&&(!!d||f);return{agentName:p?d??s:s,providerId:p&&f?r:c,modelId:p&&f?i:l,variant:p&&f?a:u,selectionSource:p?`manual`:`auto`}},Rf=null,zf=null,Bf=null,Vf={},Hf={},G=Oe()(je(ke((e,t)=>({activeDirectoryKey:lf(),catalogTransportIdentity:r(),directoryScoped:{},providerConfigLoadingByDirectory:{},agentConfigLoadingByDirectory:{},providers:[],agents:[],currentProviderId:``,currentModelId:``,currentVariant:void 0,currentAgentName:void 0,selectedProviderId:``,agentModelSelections:{},lastSelectedAgentName:void 0,lastUserSelection:void 0,globalLastUserSelection:void 0,defaultProviders:{},selectionSource:`auto`,isConnected:!1,hasEverConnected:!1,connectionPhase:`connecting`,lastDisconnectReason:null,isInitialized:!1,settingsDefaultModel:void 0,settingsDefaultVariant:void 0,settingsDefaultAgent:void 0,opencodeDefaultAgent:void 0,opencodeDefaultModel:void 0,settingsAutoCreateWorktree:!1,settingsGitmojiEnabled:!1,settingsDefaultFileViewerPreview:!1,settingsZenModel:void 0,settingsMessageStreamTransport:`auto`,voiceProvider:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`voiceProvider`);if(e===`openai`||e===`browser`||e===`local`||e===`say`||e===`openai-compatible`)return e}return`browser`})(),speechRate:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`speechRate`);if(e){let t=parseFloat(e);if(!isNaN(t)&&t>=.5&&t<=2)return t}}return 1})(),speechPitch:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`speechPitch`);if(e){let t=parseFloat(e);if(!isNaN(t)&&t>=.5&&t<=2)return t}}return 1})(),speechVolume:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`speechVolume`);if(e){let t=parseFloat(e);if(!isNaN(t)&&t>=0&&t<=1)return t}}return 1})(),sayVoice:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`sayVoice`);if(e)return e}return`Samantha`})(),localTtsVoiceId:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`localTtsVoiceId`);if(e!==null){let t=Number.parseInt(e,10);if(Number.isInteger(t)&&t>=0)return t}}return 0})(),browserVoice:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`browserVoice`);if(e)return e}return``})(),openaiVoice:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`openaiVoice`);if(e)return e}return`nova`})(),openaiApiKey:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`openaiApiKey`);if(e)return e}return``})(),openaiCompatibleUrl:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`openaiCompatibleUrl`);if(e)return e}return``})(),openaiCompatibleApiKey:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`openaiCompatibleApiKey`);if(e)return e}return``})(),openaiCompatibleVoice:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`openaiCompatibleVoice`);if(e)return e}return`af_sky`})(),openaiCompatibleTtsModel:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`openaiCompatibleTtsModel`);if(e&&e!==`speaches-ai/Kokoro-82M-v1.0-ONNX`)return e}return`kokoro`})(),dictationEnabled:!(typeof window<`u`&&localStorage.getItem(`dictationEnabled`)===`false`),sttProvider:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`sttProvider`);if(e===`local`||e===`openai-compatible`)return e;if(e===`server`)return`openai-compatible`}return`local`})(),sttServerUrl:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`sttServerUrl`);if(e)return e}return`http://localhost:8001/v1`})(),sttApiKey:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`sttApiKey`);if(e)return e}return``})(),sttModel:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`sttModel`);if(e)return e}return`deepdml/faster-whisper-large-v3-turbo-ct2`})(),sttLocalModel:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`sttLocalModel`);if(e)return e}return`parakeet-tdt-0.6b-v2-int8`})(),sttLanguage:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`sttLanguage`);if(e!==null)return e}return``})(),showMessageTTSButtons:typeof window<`u`&&localStorage.getItem(`showMessageTTSButtons`)===`true`,ttsInputMode:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`ttsInputMode`);if(e===`raw`)return`raw`;if(e===`summarized`)return`summarized`}return`sanitized`})(),summarizeMessageTTS:typeof window<`u`&&localStorage.getItem(`summarizeMessageTTS`)===`true`,summarizeVoiceConversation:typeof window<`u`&&localStorage.getItem(`summarizeVoiceConversation`)===`true`,summarizeCharacterThreshold:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`summarizeCharacterThreshold`);if(e){let t=parseInt(e,10);if(!isNaN(t)&&t>=50&&t<=2e3)return t}}return 200})(),summarizeMaxLength:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`summarizeMaxLength`);if(e){let t=parseInt(e,10);if(!isNaN(t)&&t>=50&&t<=2e3)return t}}return 500})(),activateDirectory:async(n,r)=>{let i=_f(n);if(!i){z(`activateDirectory:skippedUnknownDirectory`,{directory:n});return}let a=sf(i),o=!1,s=!1,c=!1;e(e=>{let t=e.directoryScoped[a],n=e.providers.length>0?e.providers:t?.providers??[],r=Object.keys(e.defaultProviders).length>0?e.defaultProviders:t?.defaultProviders??{},i=e.agents.length>0?e.agents:t?.agents??[];o=n.length>0,s=i.length>0,c=!!t?.agents.length;let l=e.isConnected&&!o,u=e.isConnected&&!s;return t?{activeDirectoryKey:a,providers:n,defaultProviders:r,agents:t.agents.length>0?t.agents:i,currentProviderId:t.currentProviderId,currentModelId:t.currentModelId,currentVariant:t.currentVariant,currentAgentName:t.currentAgentName,selectedProviderId:t.selectedProviderId,agentModelSelections:t.agentModelSelections,lastSelectedAgentName:t.lastSelectedAgentName,lastUserSelection:t.lastUserSelection,opencodeDefaultAgent:t.opencodeDefaultAgent,opencodeDefaultModel:t.opencodeDefaultModel,selectionSource:t.selectionSource??`auto`,providerConfigLoadingByDirectory:{...e.providerConfigLoadingByDirectory,[a]:l},agentConfigLoadingByDirectory:{...e.agentConfigLoadingByDirectory,[a]:u}}:{activeDirectoryKey:a,providers:n,defaultProviders:r,agents:i,currentProviderId:``,currentModelId:``,currentAgentName:void 0,selectedProviderId:``,agentModelSelections:{},lastSelectedAgentName:void 0,lastUserSelection:void 0,opencodeDefaultAgent:void 0,opencodeDefaultModel:void 0,selectionSource:`auto`,providerConfigLoadingByDirectory:{...e.providerConfigLoadingByDirectory,[a]:l},agentConfigLoadingByDirectory:{...e.agentConfigLoadingByDirectory,[a]:u}}}),s&&o&&!c&&t().applyDefaultModelAgentSelection(),t().isConnected&&((!o||r?.refreshProviders)&&await t().loadProviders({directory:cf(a),source:r?.source??`activateDirectory`,forceRefresh:r?.refreshProviders}),s||await t().loadAgents({directory:cf(a),source:`activateDirectory`}))},invalidateProviderCache:e=>{aa(null,r())},loadProviders:async n=>{let i=n?.directory??cf(t().activeDirectoryKey),a=_f(i);if(!a){z(`loadProviders:skippedUnknownDirectory`,{requestedDirectory:i,source:n?.source??`unknown`});return}let o=a??B.getDirectory()??null,c=sf(a),l=n?.source??`unknown`,u=r(),d=s(),f=()=>s()===d&&r()===u&&t().catalogTransportIdentity===u&&_f(i)===a,p=(Vf[c]??0)+1;Vf[c]=p,z(`loadProviders:called`,{directoryKey:c,source:l,requestedDirectory:i,effectiveDirectory:o});let m=t().directoryScoped[c];return t().providers.length>0||m?.providers.length||e(e=>({providerConfigLoadingByDirectory:{...e.providerConfigLoadingByDirectory,[c]:!0}})),(async()=>{let r=typeof performance<`u`?performance.now():Date.now();z(`loadProviders:start`,{directoryKey:c,source:l,requestedDirectory:i,effectiveDirectory:o});let a=t().directoryScoped[c],s=t().providers.length>0?t().providers:a?.providers??[],d=Object.keys(t().defaultProviders).length>0?t().defaultProviders:a?.defaultProviders??{};try{let t=await Be(`loadProviders:api`,()=>n?.forceRefresh?ra(cf(c),u):ta(cf(c),u),{directoryKey:c,source:l,requestedDirectory:i,effectiveDirectory:o}),a=qd(t.providers),d=Jd(t.default);if(!f()||t.partial&&s.length>0||(e(e=>{if(!f()||e.catalogTransportIdentity!==u)return e;let n=e.directoryScoped[c]??{providers:[],agents:[],currentProviderId:``,currentModelId:``,currentAgentName:void 0,selectedProviderId:``,agentModelSelections:{},defaultProviders:{}},r=e.activeDirectoryKey===c?e.currentProviderId:n.currentProviderId,i=e.activeDirectoryKey===c?e.currentModelId:n.currentModelId,o=e.activeDirectoryKey===c?e.currentVariant:n.currentVariant,s=Xd({providers:a,currentProviderId:r,currentModelId:i,currentVariant:o,settingsDefaultModel:e.settingsDefaultModel,settingsDefaultVariant:e.settingsDefaultVariant}),l=e.activeDirectoryKey===c?e.selectedProviderId:n.selectedProviderId,p=l===zd||a.some(e=>e.id===l)?l:s?.providerId??a[0]?.id??``,m={...n,providers:a,defaultProviders:d,providerCatalogPartial:t.partial,currentProviderId:s?.providerId??``,currentModelId:s?.modelId??``,currentVariant:s?.variant,selectedProviderId:p},h={providers:a,defaultProviders:d,directoryScoped:{...e.directoryScoped,[c]:m}};return e.activeDirectoryKey===c&&(h.currentProviderId=m.currentProviderId,h.currentModelId=m.currentModelId,h.currentVariant=m.currentVariant,h.selectedProviderId=p),h}),!f()))return;let p=typeof performance<`u`?performance.now():Date.now();z(`loadProviders:end`,{directoryKey:c,source:l,requestedDirectory:i,effectiveDirectory:o,durationMs:Math.round(p-r),providers:a.length,models:a.reduce((e,t)=>e+t.models.length,0)});return}catch(e){if(!f())return;console.error(`Failed to load providers:`,e),z(`loadProviders:error`,{directoryKey:c,source:l,requestedDirectory:i,effectiveDirectory:o,error:e instanceof Error?e.message:String(e)})}f()&&e(e=>{if(!f()||e.catalogTransportIdentity!==u)return e;let t={...e.directoryScoped[c]??{providers:[],agents:[],currentProviderId:``,currentModelId:``,currentAgentName:void 0,selectedProviderId:``,agentModelSelections:{},defaultProviders:{}},providers:s,defaultProviders:d},n={providers:s,defaultProviders:d,directoryScoped:{...e.directoryScoped,[c]:t}};if(e.activeDirectoryKey===c&&!e.currentProviderId&&!e.currentModelId&&e.settingsDefaultModel){let r=Ud(e.settingsDefaultModel);if(r){let i=s.find(e=>e.id===r.providerId);if(i?.models.some(e=>e.id===r.modelId)){let a=i.models.find(e=>e.id===r.modelId),o=e.settingsDefaultVariant&&a?.variants?.[e.settingsDefaultVariant]?e.settingsDefaultVariant:void 0;n.currentProviderId=r.providerId,n.currentModelId=r.modelId,n.currentVariant=o,n.selectedProviderId=r.providerId,t.currentProviderId=r.providerId,t.currentModelId=r.modelId,t.currentVariant=o,t.selectedProviderId=r.providerId}}}return n})})().finally(()=>{Vf[c]===p&&e(e=>({providerConfigLoadingByDirectory:{...e.providerConfigLoadingByDirectory,[c]:!1}}))})},refreshMissingCatalogs:e=>{if(zf)return zf;let n=e?.source??`refreshMissingCatalogs`,r=(async()=>{t().providers.length===0&&await t().loadProviders({source:n,forceRefresh:!0}),t().agents.length===0&&await t().loadAgents({source:n,forceRefresh:!0})})().finally(()=>{zf=null});return zf=r,r},refreshCatalogsOnPickerOpen:e=>{if(Bf)return Bf;let n=e?.source??`refreshCatalogsOnPickerOpen`,r=Promise.all([t().loadProviders({source:n,forceRefresh:!0}),t().loadAgents({source:n,forceRefresh:!0})]).then(()=>void 0).finally(()=>{Bf=null});return Bf=r,r},setProvider:n=>{let{providers:r}=t(),i=r.find(e=>e.id===n);if(!i)return;let a=i.models[0]?.id||``;e(e=>{let t=e.activeDirectoryKey,r={...e.directoryScoped[t]??{providers:e.providers,agents:e.agents,currentProviderId:e.currentProviderId,currentModelId:e.currentModelId,currentVariant:e.currentVariant,currentAgentName:e.currentAgentName,selectedProviderId:e.selectedProviderId,agentModelSelections:e.agentModelSelections,defaultProviders:e.defaultProviders},currentProviderId:n,currentModelId:a,selectedProviderId:n,selectionSource:`manual`};return{currentProviderId:n,currentModelId:a,selectedProviderId:n,selectionSource:`manual`,directoryScoped:{...e.directoryScoped,[t]:r}}})},setModel:t=>{e(e=>{let n=e.activeDirectoryKey,r={...e.directoryScoped[n]??{providers:e.providers,agents:e.agents,currentProviderId:e.currentProviderId,currentModelId:e.currentModelId,currentVariant:e.currentVariant,currentAgentName:e.currentAgentName,selectedProviderId:e.selectedProviderId,agentModelSelections:e.agentModelSelections,defaultProviders:e.defaultProviders},currentModelId:t,selectionSource:`manual`};return{currentModelId:t,selectionSource:`manual`,directoryScoped:{...e.directoryScoped,[n]:r}}})},setCurrentVariant:t=>{e(e=>{if(e.currentVariant===t)return e;let n=e.activeDirectoryKey,r={...e.directoryScoped[n]??{providers:e.providers,agents:e.agents,currentProviderId:e.currentProviderId,currentModelId:e.currentModelId,currentVariant:e.currentVariant,currentAgentName:e.currentAgentName,selectedProviderId:e.selectedProviderId,agentModelSelections:e.agentModelSelections,defaultProviders:e.defaultProviders},currentVariant:t,selectionSource:`manual`};return{currentVariant:t,selectionSource:`manual`,directoryScoped:{...e.directoryScoped,[n]:r}}})},getCurrentModelVariants:()=>{let e=t().getCurrentModel()?.variants;return e?Object.keys(e):[]},cycleCurrentVariant:()=>{let e=t().getCurrentModelVariants();if(e.length===0)return;let n=t().currentVariant;if(!n){t().setCurrentVariant(e[0]);return}let r=e.indexOf(n);if(r===-1||r===e.length-1){t().setCurrentVariant(void 0);return}t().setCurrentVariant(e[r+1])},setSelectedProvider:t=>{e(e=>{let n=e.activeDirectoryKey,r={...e.directoryScoped[n]??{providers:e.providers,agents:e.agents,currentProviderId:e.currentProviderId,currentModelId:e.currentModelId,currentAgentName:e.currentAgentName,selectedProviderId:e.selectedProviderId,agentModelSelections:e.agentModelSelections,defaultProviders:e.defaultProviders},selectedProviderId:t,selectionSource:`manual`};return{selectedProviderId:t,selectionSource:`manual`,directoryScoped:{...e.directoryScoped,[n]:r}}})},saveAgentModelSelection:(t,n,r,i)=>{!t||!n||!r||e(e=>{let a=e.activeDirectoryKey,o={agentName:t,providerId:n,modelId:r,...i?{variant:i}:{}},s=e.lastUserSelection,c=s?.agentName===o.agentName&&s?.providerId===o.providerId&&s?.modelId===o.modelId&&s?.variant===o.variant,l=e.globalLastUserSelection?.agentName===o.agentName&&e.globalLastUserSelection?.providerId===o.providerId&&e.globalLastUserSelection?.modelId===o.modelId&&e.globalLastUserSelection?.variant===o.variant;if(c&&l)return e;let u={...e.directoryScoped[a]??{providers:e.providers,agents:e.agents,currentProviderId:e.currentProviderId,currentModelId:e.currentModelId,currentAgentName:e.currentAgentName,selectedProviderId:e.selectedProviderId,agentModelSelections:e.agentModelSelections,lastSelectedAgentName:e.lastSelectedAgentName,lastUserSelection:e.lastUserSelection,defaultProviders:e.defaultProviders},agentModelSelections:{},lastSelectedAgentName:t,lastUserSelection:o,selectionSource:`manual`};return{agentModelSelections:{},lastSelectedAgentName:t,lastUserSelection:o,globalLastUserSelection:o,selectionSource:`manual`,directoryScoped:{...e.directoryScoped,[a]:u}}})},getAgentModelSelection:e=>{let{lastUserSelection:n}=t();return!n||n.agentName!==e?null:{providerId:n.providerId,modelId:n.modelId,...n.variant?{variant:n.variant}:{}}},loadAgents:async n=>{let i=n?.directory??cf(t().activeDirectoryKey),a=_f(i);if(!a)return z(`loadAgents:skippedUnknownDirectory`,{requestedDirectory:i,source:n?.source??`unknown`}),!1;let o=a??B.getDirectory()??null,c=sf(a),l=n?.source??`unknown`,u=r(),d=s(),f=()=>s()===d&&r()===u&&t().catalogTransportIdentity===u&&_f(i)===a,p=(Hf[c]??0)+1;Hf[c]=p,z(`loadAgents:called`,{directoryKey:c,source:l,requestedDirectory:i,effectiveDirectory:o});let m=t().directoryScoped[c];return t().agents.length>0||m?.agents.length||e(e=>({agentConfigLoadingByDirectory:{...e.agentConfigLoadingByDirectory,[c]:!0}})),(async()=>{let r=typeof performance<`u`?performance.now():Date.now();z(`loadAgents:start`,{directoryKey:c,source:l,requestedDirectory:i,effectiveDirectory:o});let a=t().directoryScoped[c],s=t().agents.length>0?t().agents:a?.agents??[];try{let a=cf(c);(Dd(i??void 0)??Dd(a??void 0))&&z(`loadAgents:syncConfigHit`,{directoryKey:c,source:l});let[d,p]=await Promise.all([Be(`loadAgents:api`,()=>n?.forceRefresh?ia(a,u):na(a,u),{directoryKey:c,source:l,requestedDirectory:i,effectiveDirectory:o}),Hd(u,{defaultModel:t().settingsDefaultModel,defaultVariant:t().settingsDefaultVariant,defaultAgent:t().settingsDefaultAgent,autoCreateWorktree:t().settingsAutoCreateWorktree,gitmojiEnabled:t().settingsGitmojiEnabled,defaultFileViewerPreview:t().settingsDefaultFileViewerPreview,zenModel:t().settingsZenModel,messageStreamTransport:t().settingsMessageStreamTransport,sttProvider:t().sttProvider,sttServerUrl:t().sttServerUrl,sttModel:t().sttModel,sttLocalModel:t().sttLocalModel,sttLanguage:t().sttLanguage})]),m=Array.isArray(d)?d:[];if(!f())return!1;let h=Dd(i??void 0)??Dd(a??void 0),g=h!==void 0,_=g?Kd(h.default_agent):void 0,v=g?Kd(h.model):void 0,y=t().activeDirectoryKey===c?t().providers:t().directoryScoped[c]?.providers??[],b=Kd(t().settingsZenModel),x=Kd(p.zenModel),S=Qd({providers:y,settingsZenModel:b}),C=Qd({providers:y,settingsZenModel:x}),w=(S||C)?.modelId||x||b;e(e=>{if(!f()||e.catalogTransportIdentity!==u)return e;let t=e.directoryScoped[c]??{providers:y,agents:s,currentProviderId:``,currentModelId:``,currentAgentName:void 0,selectedProviderId:``,agentModelSelections:{},defaultProviders:{}},n=g?_:t.opencodeDefaultAgent??(e.activeDirectoryKey===c?e.opencodeDefaultAgent:void 0),r=g?v:t.opencodeDefaultModel??(e.activeDirectoryKey===c?e.opencodeDefaultModel:void 0),i={...t,providers:y,agents:m,opencodeDefaultAgent:n,opencodeDefaultModel:r},a={settingsDefaultModel:p.defaultModel,settingsDefaultVariant:p.defaultVariant,settingsDefaultAgent:p.defaultAgent,settingsAutoCreateWorktree:p.autoCreateWorktree??!1,settingsGitmojiEnabled:p.gitmojiEnabled??!1,settingsDefaultFileViewerPreview:p.defaultFileViewerPreview??!1,settingsZenModel:w,settingsMessageStreamTransport:p.messageStreamTransport??e.settingsMessageStreamTransport??`auto`,sttProvider:p.sttProvider??e.sttProvider,sttServerUrl:p.sttServerUrl??e.sttServerUrl,sttModel:p.sttModel??e.sttModel,sttLocalModel:p.sttLocalModel??e.sttLocalModel,sttLanguage:p.sttLanguage??e.sttLanguage,directoryScoped:{...e.directoryScoped,[c]:i}};return e.activeDirectoryKey===c&&(a.agents=m,a.opencodeDefaultAgent=n,a.opencodeDefaultModel=r),a});let T=t(),E=T.directoryScoped[c],D=E?.opencodeDefaultAgent??(T.activeDirectoryKey===c?T.opencodeDefaultAgent:void 0),O=E?.opencodeDefaultModel??(T.activeDirectoryKey===c?T.opencodeDefaultModel:void 0),k=!!w&&w!==x;if(f()&&k&&w&&ye({zenModel:w,gitProviderId:``,gitModelId:``}).catch(()=>{}),m.length===0){if(s.length>0&&!n?.forceRefresh){if(!f())return!1;let e=typeof performance<`u`?performance.now():Date.now();return z(`loadAgents:end`,{directoryKey:c,source:l,requestedDirectory:i,effectiveDirectory:o,durationMs:Math.round(e-r),agents:s.length,retainedPrevious:!0}),!0}if(e(e=>{if(!f()||e.catalogTransportIdentity!==u)return e;let t={...e.directoryScoped[c]??{providers:y,agents:[],currentProviderId:``,currentModelId:``,currentVariant:void 0,currentAgentName:void 0,selectedProviderId:``,agentModelSelections:{},defaultProviders:{}},providers:y,agents:[],currentAgentName:void 0},n={directoryScoped:{...e.directoryScoped,[c]:t}};return e.activeDirectoryKey===c&&(n.currentAgentName=void 0),n}),!f())return!1;let t=typeof performance<`u`?performance.now():Date.now();return z(`loadAgents:end`,{directoryKey:c,source:l,requestedDirectory:i,effectiveDirectory:o,durationMs:Math.round(t-r),agents:m.length}),!0}let A=(e,t)=>{let n=y.find(t=>t.id===e);return n?n.models.some(e=>e.id===t):!1},j={};if(p.defaultAgent&&!m.some(e=>e.name===p.defaultAgent)&&(j.defaultAgent=``),p.defaultModel){let e=Ud(p.defaultModel);if(!e||!A(e.providerId,e.modelId))j.defaultModel=``;else if(p.defaultVariant){let t=y.find(t=>t.id===e.providerId)?.models.find(t=>t.id===e.modelId)?.variants;t&&Object.prototype.hasOwnProperty.call(t,p.defaultVariant)||(j.defaultVariant=``)}}let ee=t(),te=ee.directoryScoped[c]?.lastUserSelection??(ee.activeDirectoryKey===c?ee.lastUserSelection:void 0),M=Zd({agents:m,providers:y,settingsDefaultAgent:p.defaultAgent,settingsDefaultModel:p.defaultModel,settingsDefaultVariant:p.defaultVariant,opencodeDefaultAgent:D,opencodeDefaultModel:O,projectLastUserSelection:te,globalLastUserSelection:ee.globalLastUserSelection}),ne=M.agentName??m[0].name,re=M.providerId,ie=M.modelId,ae=M.variant;if(e(e=>{if(!f()||e.catalogTransportIdentity!==u)return e;let t=e.directoryScoped[c]??{providers:y,agents:m,currentProviderId:``,currentModelId:``,currentAgentName:void 0,selectedProviderId:``,agentModelSelections:{},defaultProviders:{}},n=e.activeDirectoryKey===c,r=n?e.currentAgentName:t.currentAgentName,i=n?e.currentProviderId:t.currentProviderId,a=n?e.currentModelId:t.currentModelId,o=n?e.currentVariant:t.currentVariant,s=n?e.selectionSource:t.selectionSource??`auto`,l=Lf({agents:m,providers:y,currentAgentName:r,currentProviderId:i,currentModelId:a,currentVariant:o,selectionSource:s,resolvedAgentName:ne,resolvedProviderId:re,resolvedModelId:ie,resolvedVariant:ae}),d={...t,providers:y,agents:m,currentAgentName:l.agentName,currentProviderId:l.providerId??t.currentProviderId,currentModelId:l.modelId??t.currentModelId,currentVariant:l.variant,opencodeDefaultAgent:D,opencodeDefaultModel:O,selectionSource:l.selectionSource},p={directoryScoped:{...e.directoryScoped,[c]:d}};return n&&(p.currentAgentName=l.agentName,p.opencodeDefaultAgent=D,p.opencodeDefaultModel=O,l.providerId&&l.modelId&&(p.currentProviderId=l.providerId,p.currentModelId=l.modelId,p.currentVariant=l.variant),p.selectionSource=l.selectionSource),p}),f()&&Object.keys(j).length>0&&(e({settingsDefaultModel:j.defaultModel===void 0?t().settingsDefaultModel:void 0,settingsDefaultVariant:j.defaultVariant===void 0?t().settingsDefaultVariant:void 0,settingsDefaultAgent:j.defaultAgent===void 0?t().settingsDefaultAgent:void 0}),ye(j).catch(()=>{})),!f())return!1;let oe=typeof performance<`u`?performance.now():Date.now();return z(`loadAgents:end`,{directoryKey:c,source:l,requestedDirectory:i,effectiveDirectory:o,durationMs:Math.round(oe-r),agents:m.length}),!0}catch(t){return!f()||(console.error(`Failed to load agents:`,t),z(`loadAgents:error`,{directoryKey:c,source:l,requestedDirectory:i,effectiveDirectory:o,error:t instanceof Error?t.message:String(t)}),!f())||e(e=>{if(!f()||e.catalogTransportIdentity!==u)return e;let t=e.activeDirectoryKey===c?e.providers:e.directoryScoped[c]?.providers??[],n={...e.directoryScoped[c]??{providers:t,agents:[],currentProviderId:``,currentModelId:``,currentAgentName:void 0,selectedProviderId:``,agentModelSelections:{},defaultProviders:{}},providers:t,agents:s},r={directoryScoped:{...e.directoryScoped,[c]:n}};return e.activeDirectoryKey===c&&(r.agents=s),r}),!1}})().finally(()=>{Hf[c]===p&&e(e=>({agentConfigLoadingByDirectory:{...e.agentConfigLoadingByDirectory,[c]:!1}}))})},setAgent:n=>{let{agents:r,providers:i,settingsDefaultModel:a,settingsDefaultVariant:o,currentProviderId:s,currentModelId:c}=t();if(e(e=>{let t=e.activeDirectoryKey,r={...e.directoryScoped[t]??{providers:e.providers,agents:e.agents,currentProviderId:e.currentProviderId,currentModelId:e.currentModelId,currentAgentName:e.currentAgentName,selectedProviderId:e.selectedProviderId,agentModelSelections:e.agentModelSelections,defaultProviders:e.defaultProviders},currentAgentName:n,selectionSource:`manual`};return{currentAgentName:n,selectionSource:`manual`,directoryScoped:{...e.directoryScoped,[t]:r}}}),n){let{currentSessionId:e}=$.getState(),t=Ko.getState();e&&t.saveSessionAgentSelection(e,n),e&&$.getState().isOpenChamberCreatedSession(e)&&(t.getAgentModelForSession(e,n)||$.getState().initializeNewOpenChamberSession(e,r))}if(n){let{currentSessionId:l}=$.getState(),u=(t,n,r)=>{e(e=>{let i=e.activeDirectoryKey,a={...e.directoryScoped[i]??{providers:e.providers,agents:e.agents,currentProviderId:e.currentProviderId,currentModelId:e.currentModelId,currentVariant:e.currentVariant,currentAgentName:e.currentAgentName,selectedProviderId:e.selectedProviderId,agentModelSelections:e.agentModelSelections,defaultProviders:e.defaultProviders},currentProviderId:t,currentModelId:n,currentVariant:r,selectedProviderId:Gd(e.selectedProviderId,t),selectionSource:`manual`};return{currentProviderId:t,currentModelId:n,currentVariant:r,selectedProviderId:Gd(e.selectedProviderId,t),selectionSource:`manual`,directoryScoped:{...e.directoryScoped,[i]:a}}})},d=r.find(e=>e.name===n),f=(e,t,r=[])=>{let a=i.find(t=>t.id===e)?.models.find(e=>e.id===t)?.variants;if(!a)return;let s=l?Ko.getState().getAgentModelVariantForSession(l,n,e,t):void 0;for(let e of[s,...r,o])if(e&&Object.prototype.hasOwnProperty.call(a,e))return e};if(l){let e=Ko.getState().getAgentModelForSession(l,n);if(e&&Yd(i,e.providerId,e.modelId)){let n=f(e.providerId,e.modelId,[d?.variant]);(s!==e.providerId||c!==e.modelId||t().currentVariant!==n)&&u(e.providerId,e.modelId,n);return}}if(a){let e=Ud(a);if(e&&i.find(t=>t.id===e.providerId)?.models.some(t=>t.id===e.modelId)){u(e.providerId,e.modelId,f(e.providerId,e.modelId,[d?.variant]));return}}let p=d?.model;if(p?.providerID&&p?.modelID){let{providerID:e,modelID:t}=p;if(i.find(t=>t.id===e)?.models.find(e=>e.id===t)){u(e,t,f(e,t,[d?.variant]));return}}}},applyDefaultModelAgentSelection:n=>{let{agents:r,providers:i,settingsDefaultModel:a,settingsDefaultVariant:o,settingsDefaultAgent:s,opencodeDefaultAgent:c,opencodeDefaultModel:l,lastUserSelection:u,globalLastUserSelection:d}=t();if(r.length===0||i.length===0)return;let{agentName:f,providerId:p,modelId:m,variant:h}=Zd({agents:r,providers:i,projectDefaultModel:n?.projectDefaultModel,settingsDefaultAgent:s,settingsDefaultModel:a,settingsDefaultVariant:o,opencodeDefaultAgent:c,opencodeDefaultModel:l,projectLastUserSelection:u,globalLastUserSelection:d});f&&e(e=>{let t=e.activeDirectoryKey,n={...e.directoryScoped[t]??{providers:e.providers,agents:e.agents,currentProviderId:e.currentProviderId,currentModelId:e.currentModelId,currentVariant:e.currentVariant,currentAgentName:e.currentAgentName,selectedProviderId:e.selectedProviderId,agentModelSelections:e.agentModelSelections,defaultProviders:e.defaultProviders},currentAgentName:f,...p&&m?{currentProviderId:p,currentModelId:m,currentVariant:h,selectedProviderId:Gd(e.selectedProviderId,p)}:{},selectionSource:`auto`},r={currentAgentName:f,selectionSource:`auto`,directoryScoped:{...e.directoryScoped,[t]:n}};return p&&m&&(r.currentProviderId=p,r.currentModelId=m,r.currentVariant=h,r.selectedProviderId=Gd(e.selectedProviderId,p)),r})},applyOpenCodeConfigDefaults:(n,r=`syncConfig`,i)=>{let a=n??cf(t().activeDirectoryKey),o=vf(a),s=cf(o),c=i??Dd(a??void 0)??Dd(s??void 0);if(!c)return;let l=Kd(c.default_agent),u=Kd(c.model);e(e=>{let t=e.directoryScoped[o],n=e.activeDirectoryKey===o,i=n?e.providers:t?.providers??[],s=n?e.agents:t?.agents??[],c=t??Nf(i,s),d=c.opencodeDefaultAgent!==l||c.opencodeDefaultModel!==u||n&&(e.opencodeDefaultAgent!==l||e.opencodeDefaultModel!==u),f={...c,providers:i,agents:s,opencodeDefaultAgent:l,opencodeDefaultModel:u},p={directoryScoped:{...e.directoryScoped,[o]:f}};n&&(p.opencodeDefaultAgent=l,p.opencodeDefaultModel=u);let m=n?e.selectionSource:t?.selectionSource??`auto`;if(i.length===0||s.length===0)return d?p:e;let h=n?e.lastUserSelection:t?.lastUserSelection,g=Zd({agents:s,providers:i,settingsDefaultAgent:e.settingsDefaultAgent,settingsDefaultModel:e.settingsDefaultModel,settingsDefaultVariant:e.settingsDefaultVariant,opencodeDefaultAgent:l,opencodeDefaultModel:u,projectLastUserSelection:h,globalLastUserSelection:e.globalLastUserSelection});if(!g.agentName)return d?p:e;let _=n?e.currentAgentName:c.currentAgentName,v=n?e.currentProviderId:c.currentProviderId,y=n?e.currentModelId:c.currentModelId,b=n?e.currentVariant:c.currentVariant,x=n?e.selectedProviderId:c.selectedProviderId,S=Lf({agents:s,providers:i,currentAgentName:_,currentProviderId:v,currentModelId:y,currentVariant:b,selectionSource:m,resolvedAgentName:g.agentName,resolvedProviderId:g.providerId,resolvedModelId:g.modelId,resolvedVariant:g.variant}),C={...f,providers:i,agents:s,currentAgentName:S.agentName,...S.providerId&&S.modelId?{currentProviderId:S.providerId,currentModelId:S.modelId,currentVariant:S.variant,selectedProviderId:Gd(x,S.providerId)}:{},selectionSource:S.selectionSource},w=c.currentAgentName!==C.currentAgentName||c.currentProviderId!==C.currentProviderId||c.currentModelId!==C.currentModelId||c.currentVariant!==C.currentVariant||c.selectedProviderId!==C.selectedProviderId||(c.selectionSource??`auto`)!==C.selectionSource||n&&(e.currentAgentName!==S.agentName||e.selectionSource!==S.selectionSource||S.providerId!==void 0&&S.modelId!==void 0&&(e.currentProviderId!==S.providerId||e.currentModelId!==S.modelId||e.currentVariant!==S.variant||e.selectedProviderId!==Gd(x,S.providerId)));return!d&&!w?e:(p.directoryScoped={...e.directoryScoped,[o]:C},n&&(p.currentAgentName=S.agentName,p.selectionSource=S.selectionSource,S.providerId&&S.modelId&&(p.currentProviderId=S.providerId,p.currentModelId=S.modelId,p.currentVariant=S.variant,p.selectedProviderId=Gd(x,S.providerId))),z(`loadAgents:opencodeConfigDefaultsApplied`,{directoryKey:o,eventDirectory:a,source:r}),p)})},setSettingsDefaultModel:t=>{e({settingsDefaultModel:t})},setSettingsDefaultVariant:t=>{e({settingsDefaultVariant:t})},setSettingsDefaultAgent:t=>{e({settingsDefaultAgent:t})},setSettingsAutoCreateWorktree:t=>{e({settingsAutoCreateWorktree:t})},setSettingsGitmojiEnabled:t=>{e({settingsGitmojiEnabled:t})},setSettingsDefaultFileViewerPreview:t=>{e({settingsDefaultFileViewerPreview:t})},setSettingsZenModel:t=>{e({settingsZenModel:t})},setSettingsMessageStreamTransport:t=>{e({settingsMessageStreamTransport:t})},getResolvedGitGenerationModel:()=>{let e=t();return Qd({providers:e.providers,settingsZenModel:e.settingsZenModel})},setVoiceProvider:t=>{e({voiceProvider:t}),typeof window<`u`&&localStorage.setItem(`voiceProvider`,t)},setSpeechRate:t=>{let n=Math.max(.5,Math.min(2,t));e({speechRate:n}),typeof window<`u`&&localStorage.setItem(`speechRate`,String(n))},setSpeechPitch:t=>{let n=Math.max(.5,Math.min(2,t));e({speechPitch:n}),typeof window<`u`&&localStorage.setItem(`speechPitch`,String(n))},setSpeechVolume:t=>{let n=Math.max(0,Math.min(1,t));e({speechVolume:n}),typeof window<`u`&&localStorage.setItem(`speechVolume`,String(n))},setSayVoice:t=>{e({sayVoice:t}),typeof window<`u`&&localStorage.setItem(`sayVoice`,t)},setLocalTtsVoiceId:t=>{e({localTtsVoiceId:t}),typeof window<`u`&&localStorage.setItem(`localTtsVoiceId`,String(t))},setBrowserVoice:t=>{e({browserVoice:t}),typeof window<`u`&&localStorage.setItem(`browserVoice`,t)},setOpenaiVoice:t=>{e({openaiVoice:t}),typeof window<`u`&&localStorage.setItem(`openaiVoice`,t)},setOpenaiApiKey:t=>{e({openaiApiKey:t}),typeof window<`u`&&localStorage.setItem(`openaiApiKey`,t)},setOpenaiCompatibleUrl:t=>{e({openaiCompatibleUrl:t}),typeof window<`u`&&localStorage.setItem(`openaiCompatibleUrl`,t)},setOpenaiCompatibleApiKey:t=>{e({openaiCompatibleApiKey:t}),typeof window<`u`&&localStorage.setItem(`openaiCompatibleApiKey`,t)},setOpenaiCompatibleVoice:t=>{e({openaiCompatibleVoice:t}),typeof window<`u`&&localStorage.setItem(`openaiCompatibleVoice`,t)},setOpenaiCompatibleTtsModel:t=>{e({openaiCompatibleTtsModel:t}),typeof window<`u`&&localStorage.setItem(`openaiCompatibleTtsModel`,t)},setDictationEnabled:t=>{e({dictationEnabled:t}),typeof window<`u`&&localStorage.setItem(`dictationEnabled`,String(t)),ye({dictationEnabled:t}).catch(()=>{})},setSttProvider:t=>{e({sttProvider:t}),typeof window<`u`&&localStorage.setItem(`sttProvider`,t),ye({sttProvider:t}).catch(()=>{})},setSttServerUrl:t=>{e({sttServerUrl:t}),typeof window<`u`&&localStorage.setItem(`sttServerUrl`,t),ye({sttServerUrl:t}).catch(()=>{})},setSttApiKey:t=>{e({sttApiKey:t}),typeof window<`u`&&localStorage.setItem(`sttApiKey`,t)},setSttModel:t=>{e({sttModel:t}),typeof window<`u`&&localStorage.setItem(`sttModel`,t),ye({sttModel:t}).catch(()=>{})},setSttLocalModel:t=>{e({sttLocalModel:t}),typeof window<`u`&&localStorage.setItem(`sttLocalModel`,t),ye({sttLocalModel:t}).catch(()=>{})},setSttLanguage:t=>{e({sttLanguage:t}),typeof window<`u`&&localStorage.setItem(`sttLanguage`,t),ye({sttLanguage:t}).catch(()=>{})},setShowMessageTTSButtons:t=>{e({showMessageTTSButtons:t}),typeof window<`u`&&localStorage.setItem(`showMessageTTSButtons`,String(t))},setTtsInputMode:t=>{e({ttsInputMode:t}),typeof window<`u`&&localStorage.setItem(`ttsInputMode`,t)},setSummarizeMessageTTS:t=>{e({summarizeMessageTTS:t}),typeof window<`u`&&localStorage.setItem(`summarizeMessageTTS`,String(t))},setSummarizeVoiceConversation:t=>{e({summarizeVoiceConversation:t}),typeof window<`u`&&localStorage.setItem(`summarizeVoiceConversation`,String(t))},setSummarizeCharacterThreshold:t=>{let n=Math.max(50,Math.min(2e3,t));e({summarizeCharacterThreshold:n}),typeof window<`u`&&localStorage.setItem(`summarizeCharacterThreshold`,String(n))},setSummarizeMaxLength:t=>{let n=Math.max(50,Math.min(2e3,t));e({summarizeMaxLength:n}),typeof window<`u`&&localStorage.setItem(`summarizeMaxLength`,String(n))},probeConnection:async n=>{if(await af(n?.timeoutMs))return e({isConnected:!0,hasEverConnected:!0,connectionPhase:`connected`}),!0;let r=t();return r.isConnected?!0:(e({isConnected:!1,connectionPhase:r.hasEverConnected?`reconnecting`:`connecting`,lastDisconnectReason:`health_probe_unhealthy`}),!1)},checkConnection:async()=>{z(`checkConnection:start`);let n=0,r=null;for(;n<5;)try{z(`checkConnection:attempt`,{attempt:n+1});let r=await Be(`checkConnection:health`,()=>B.checkHealth(),{attempt:n+1});if(!r&&n<4){let r=t().hasEverConnected;e({isConnected:!1,connectionPhase:r?`reconnecting`:`connecting`,lastDisconnectReason:`health_check_unhealthy`}),n+=1,await nf(400*n);continue}let i=t().hasEverConnected;return e(r?{isConnected:!0,hasEverConnected:!0,connectionPhase:`connected`}:{isConnected:!1,connectionPhase:i?`reconnecting`:`connecting`,lastDisconnectReason:`health_check_unhealthy`}),z(`checkConnection:end`,{healthy:r,attempts:n+1}),r}catch(e){r=e,n+=1,await nf(400*n)}return r&&console.warn(`[ConfigStore] Failed to reach OpenCode after retrying:`,r),e({isConnected:!1,connectionPhase:t().hasEverConnected?`reconnecting`:`connecting`,lastDisconnectReason:`health_check_failed`}),z(`checkConnection:end`,{healthy:!1,attempts:5}),!1},initializeApp:async()=>{if(Rf)return z(`initializeApp:deduped`),Rf;let n=(async()=>{let n=typeof performance<`u`?performance.now():Date.now();z(`initializeApp:start`);try{if(He(),!await t().checkConnection()){e({isConnected:!1,connectionPhase:t().hasEverConnected?`reconnecting`:`connecting`});return}z(`initApp:skipped`,{reason:`checkConnection already verified health`});let r=B.getDirectory()??Ue.getState().currentDirectory??cf(t().activeDirectoryKey),i=_f(Xo(Si.getState().projects,$.getState().availableWorktreesByProject,r??null)?.path??r??null),a=i??gf();if(!a){z(`initializeApp:noProjectConfigDirectory`),e({isInitialized:!0,isConnected:!0,hasEverConnected:!0,connectionPhase:`connected`});return}!i&&r!==a&&(z(`initializeApp:normalizedUnknownDirectoryToProject`,{initialDirectory:r,configDirectory:a}),B.setDirectory(a),Ue.getState().setDirectory(a,{showOverlay:!1}));let o=sf(a);t().activeDirectoryKey!==o&&e({activeDirectoryKey:o}),await Promise.all([t().loadProviders({directory:a,source:`initializeApp`,forceRefresh:!0}),t().loadAgents({directory:a,source:`initializeApp`,forceRefresh:!0})]),e({isInitialized:!0,isConnected:!0,hasEverConnected:!0,connectionPhase:`connected`});let s=typeof performance<`u`?performance.now():Date.now();z(`initializeApp:end`,{durationMs:Math.round(s-n),providers:t().providers.length,agents:t().agents.length})}catch(n){console.error(`Failed to initialize app:`,n),e({isInitialized:!1,isConnected:!1,connectionPhase:t().hasEverConnected?`reconnecting`:`connecting`,lastDisconnectReason:`init_error`}),z(`initializeApp:error`,{error:n instanceof Error?n.message:String(n)})}})().finally(()=>{Rf=null});return Rf=n,n},prewarmProjectConfigs:async e=>{if(!t().isConnected)return;let n=vf(e??cf(t().activeDirectoryKey)),r=Si.getState().projects.map(e=>e.path).filter(e=>typeof e==`string`&&e.trim().length>0),i=new Set([n]),a=[];for(let e of r){let n=vf(e);if(i.has(n))continue;i.add(n);let r=t().directoryScoped[n];if((r?.providers.length||t().providers.length>0)&&(r?.agents.length||t().agents.length>0))continue;let o=cf(n);o&&a.push(o)}for(let e of a){if(await nf(bf),!t().isConnected)return;let n=vf(e),r=t().directoryScoped[n],i=[];!r?.providers.length&&t().providers.length===0&&i.push(t().loadProviders({directory:e,source:`projectConfigPrewarm`})),!r?.agents.length&&t().agents.length===0&&i.push(t().loadAgents({directory:e,source:`projectConfigPrewarm`})),i.length>0&&await Promise.allSettled(i)}},getCurrentProvider:()=>{let{providers:e,currentProviderId:n}=t();return e.find(e=>e.id===n)},getCurrentModel:()=>{let e=t().getCurrentProvider(),{currentModelId:n}=t();if(e)return e.models.find(e=>e.id===n)},getCurrentAgent:()=>{let{agents:e,currentAgentName:n}=t();if(n)return e.find(e=>e.name===n)},getModelMetadata:(e,n)=>{if(!e||!n)return;let r=t().providers.find(t=>t.id===e);if(!r)return;let i=r.models.find(e=>e.id===n);if(i)return tf(e,i)},getVisibleAgents:()=>{let{agents:e}=t();return eo(e)}}),{name:`config-store`,version:4,storage:h(),migrate:e=>Ff(e),merge:(e,t)=>Df({...t,...Ff(e)}),partialize:e=>{let t=e.directoryScoped[e.activeDirectoryKey],n=e.providers.length>0?{providers:qd(e.providers),defaultProviders:Jd(e.defaultProviders),providerCatalogPartial:!1}:t&&t.providerCatalogPartial!==!0?{providers:qd(t.providers),defaultProviders:Jd(t.defaultProviders),providerCatalogPartial:!1}:{providers:[],defaultProviders:{},providerCatalogPartial:t?.providerCatalogPartial===!0},i=(t,r)=>{let i=Af(r?.lastUserSelection)??jf(Of(r?.lastSelectedAgentName,!0),kf(r?.agentModelSelections))??(t===e.activeDirectoryKey?Af(e.lastUserSelection):void 0);return{...t===e.activeDirectoryKey?n:{providers:[],defaultProviders:{},providerCatalogPartial:r?.providerCatalogPartial===!0},agents:[],currentProviderId:r?.currentProviderId??(t===e.activeDirectoryKey?e.currentProviderId:``),currentModelId:r?.currentModelId??(t===e.activeDirectoryKey?e.currentModelId:``),currentVariant:r?.currentVariant??(t===e.activeDirectoryKey?e.currentVariant:void 0),currentAgentName:r?.currentAgentName??(t===e.activeDirectoryKey?e.currentAgentName:void 0),selectedProviderId:Wd(r?.selectedProviderId??(t===e.activeDirectoryKey?e.selectedProviderId:``)),agentModelSelections:{},lastSelectedAgentName:i?.agentName??Of(r?.lastSelectedAgentName,!0),lastUserSelection:i,opencodeDefaultAgent:r?.opencodeDefaultAgent,opencodeDefaultModel:r?.opencodeDefaultModel,selectionSource:r?.selectionSource??(t===e.activeDirectoryKey?e.selectionSource:void 0)}},a=Object.fromEntries(Object.entries(e.directoryScoped).map(([e,t])=>[e,i(e,t)]));e.activeDirectoryKey&&!a[e.activeDirectoryKey]&&(a[e.activeDirectoryKey]=i(e.activeDirectoryKey,void 0));let o=JSON.stringify(n);if(Ef.encode(o).byteLength>xf){let t=a[e.activeDirectoryKey];t&&(t.providers=[],t.defaultProviders={},t.providerCatalogPartial=!0)}let s=Af(e.globalLastUserSelection)??Af(e.lastUserSelection);return{activeDirectoryKey:e.activeDirectoryKey,catalogTransportIdentity:r(),directoryScoped:a,currentProviderId:e.currentProviderId,currentModelId:e.currentModelId,currentVariant:e.currentVariant,currentAgentName:e.currentAgentName,selectedProviderId:Wd(e.selectedProviderId),agentModelSelections:{},lastSelectedAgentName:s?.agentName??Of(e.lastSelectedAgentName,!0),lastUserSelection:Af(e.lastUserSelection)??s,globalLastUserSelection:s,settingsDefaultModel:e.settingsDefaultModel,settingsDefaultVariant:e.settingsDefaultVariant,settingsDefaultAgent:e.settingsDefaultAgent,settingsAutoCreateWorktree:e.settingsAutoCreateWorktree,settingsGitmojiEnabled:e.settingsGitmojiEnabled,settingsDefaultFileViewerPreview:e.settingsDefaultFileViewerPreview,settingsZenModel:e.settingsZenModel,settingsMessageStreamTransport:e.settingsMessageStreamTransport,speechRate:e.speechRate,speechPitch:e.speechPitch,speechVolume:e.speechVolume}}})));typeof window<`u`&&(window.__zustand_config_store__=G);var Uf=async e=>{await G.getState().loadProviders({source:e,forceRefresh:!0})},Wf=null;Wf||=kr(async e=>{let t=[];if(B.clearConfigCache(),jr(e,`agents`)){let{loadAgents:e}=G.getState();t.push(e({source:`configChange:agents`,forceRefresh:!0}).then(()=>{}))}jr(e,`providers`)&&t.push(Uf(`configChange:providers`)),t.length>0&&await Promise.all(t)});var Gf=null,Kf=null;Kf||=Od((e,t)=>{G.getState().applyOpenCodeConfigDefaults(e,`syncConfig`,t)}),typeof window<`u`&&!Gf&&(Gf=Ue.subscribe((e,t)=>{let n=sf(e.currentDirectory),r=sf(t.currentDirectory);n!==r&&(z(`directoryStore:changed`,{previous:r,next:n}),G.getState().activateDirectory(e.currentDirectory))}));var qf=e=>typeof e==`number`&&Number.isFinite(e)?e:null,Jf=e=>{let t=e.metadata;return qf(t?.openchamber?.titleRefresh?.activityUpdatedAt)??qf(e.time?.updated)??qf(e.time?.created)??0},Yf=[`load failed`,`network connection was lost`,`network request failed`,`failed to fetch`,`econnreset`,`econnrefused`,`etimedout`,`socket hang up`,`signal timed out`,`opencode api unavailable`,`503`,`502`];function Xf(e){if(!e)return!1;let t=String(e instanceof Error?e.message:e).toLowerCase();if(Yf.some(e=>t.includes(e)))return!0;let n=e?.status;return typeof n==`number`&&n>=500&&n<600}async function Zf(e,t={}){let{attempts:n=3,delay:r=500,factor:i=2,maxDelay:a=1e4,retryIf:o=Xf}=t,s;for(let t=0;t<n;t++)try{return await e()}catch(e){if(s=e,t===n-1||!o(e))throw e;let c=Math.min(r*i**+t,a);await new Promise(e=>setTimeout(e,c))}throw s}var Qf=[`file`,`status`,`additions`,`deletions`],$f=e=>{if(!e||typeof e!=`object`||Array.isArray(e))return;let t={},n=e;return typeof n.messageID==`string`&&(t.messageID=n.messageID),typeof n.partID==`string`&&(t.partID=n.partID),Object.keys(t).length>0?t:void 0},ep=e=>e===void 0?!1:!e||typeof e!=`object`||Array.isArray(e)?!0:Object.keys(e).some(e=>e!==`messageID`&&e!==`partID`),tp=e=>typeof e.before==`string`||typeof e.after==`string`||typeof e.from==`string`||typeof e.to==`string`||typeof e.patch==`string`;function np(e){if(!e||typeof e!=`object`||Array.isArray(e))return e;let t=e;if(!tp(t))return e;let n={};for(let e of Qf)e in t&&t[e]!==void 0&&(n[e]=t[e]);return n}function rp(e){if(!Array.isArray(e))return e;let t=!1,n=e.map(e=>{let n=np(e);return n!==e&&(t=!0),n});return t?n:e}function ip(e){if(!e||typeof e!=`object`||Array.isArray(e))return e;let t=e,n=t.summary;if(!n||typeof n!=`object`||Array.isArray(n)||!Object.prototype.hasOwnProperty.call(n,`diffs`))return e;let r=n.diffs;if(!Array.isArray(r)){let e={...n,diffCount:0,hasDiffs:!1};return delete e.diffs,{...t,summary:e}}let i=rp(r),a=i.length,o=a>0,s=n.diffCount===a&&n.hasDiffs===o;return i===r&&s?e:{...t,summary:{...n,diffs:i,diffCount:a,hasDiffs:o}}}function ap(e){let t=e.revert,n=e,r=!1;if(t&&(typeof t.snapshot==`string`||typeof t.diff==`string`)){let e={...t};delete e.snapshot,delete e.diff,n={...n,revert:e},r=!0}let i=ip(r?n:e);return i===(r?n:e)?n:i}function op(e){let t=e;if(!(ep(t.revert)||Array.isArray(t.summary?.diffs)||typeof t.summary?.diffCount==`number`||typeof t.summary?.hasDiffs==`boolean`||`permission`in t))return e;let n=ap(e),r={...n};delete r.permission;let i=$f(n.revert);i?r.revert=i:delete r.revert;let a=n.summary;if(a&&typeof a==`object`&&!Array.isArray(a)){let e={...a};delete e.diffs,delete e.diffCount,delete e.hasDiffs,r.summary=e}return r}function sp(e){return ip(e)}var cp=new Set([`smartfetch-secondary`]),lp=e=>typeof e==`string`&&e.length>0,up=e=>{let t=e.metadata;if(!t||typeof t!=`object`)return!1;let n=t.openchamber;if(!n||typeof n!=`object`)return!1;let r=n;return!!(lp(r.assistant?.assistantID)||lp(r.scheduledTask?.taskID)||lp(r.smallModel?.purpose))},dp=e=>{let t=e.parentID;return typeof t==`string`&&t.trim()?t:null},fp=e=>!(cp.has(e.title)||dp(e)||up(e)),pp=e=>{if(!e)return null;let t=Number(e);return Number.isFinite(t)?t:null},mp=(e,t)=>{if(!e||typeof e!=`object`)return null;let n=e.headers;if(!n||typeof n!=`object`)return null;let r=n;if(typeof r.get==`function`)return r.get(t);let i=n,a=i[t]??i[t.toLowerCase()];return typeof a==`string`?a:null},hp=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)}},gp=(e,t)=>{if(e.error){let n=e.response?.status,r=Error(`${t} failed${n?` (${n})`:``}: ${hp(e.error)}`);throw n!==void 0&&(r.status=n),r}if(!Array.isArray(e.data)){let e=Error(`${t} returned no data`);throw e.status=503,e}return e.data};async function _p(e,t){let n=[],r=new Set,i=t.cursor;for(;;){let a=t.maxItems===void 0?t.pageSize:Math.max(0,t.maxItems-n.length);if(a===0)break;let o=Math.min(t.pageSize,a),{response:s,payload:c}=await Zf(async()=>{let n=t.timeoutMs===void 0?void 0:AbortSignal.timeout(t.timeoutMs),r=t.signal&&n?AbortSignal.any([t.signal,n]):t.signal??n,a=await e.experimental.session.list({...t.directory?{directory:t.directory}:{},archived:t.archived,...t.roots===void 0?{}:{roots:t.roots},...t.start===void 0?{}:{start:t.start},limit:o,...i===void 0?{}:{cursor:i}},r?{signal:r}:void 0);return{response:a.response,payload:gp(a,`experimental.session.list`).map(e=>op(e))}},{attempts:t.retryAttempts??3,delay:500});if(c.length===0)break;let l=c.filter(fp),u=0;for(let e of l)!e?.id||r.has(e.id)||(r.add(e.id),n.push(e),u+=1);if(u>0&&t.onPage?.(l),t.maxItems!==void 0&&n.length>=t.maxItems||c.length<o)break;let d=pp(mp(s,`x-next-cursor`)),f=c[c.length-1]?.time?.updated,p=d??(typeof f==`number`&&Number.isFinite(f)?f:void 0);if(p===void 0||i!==void 0&&p>=i)break;i=p}return n}var vp=`/api/magic-prompts`,yp=new Map([{id:`git.commit.generate.visible`,title:`Commit Generation Visible Prompt`,group:`Git`,description:`Visible user message for commit message generation.`,template:`You are generating a Conventional Commits subject line from the diffs of the selected files.`},{id:`git.commit.generate.instructions`,title:`Commit Generation Instructions`,group:`Git`,description:`Hidden instructions for commit message generation.`,placeholders:[{key:`selected_files`,description:`Bullet list of currently selected file paths.`}],template:`Return exactly one JSON object and nothing else. Do not include prose, markdown, explanations, or code fences.
7
7
 
8
8
  The JSON object must have exactly this shape:
9
9
  {"subject": string, "highlights": string[]}
@@ -458,7 +458,7 @@ Use the results below as source material. Do not mention that the inputs were hi
458
458
  `).replace(/\n\s*\n+/g,`
459
459
  `),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:h(),partialize:e=>({runsByOriginalSessionID:e.runsByOriginalSessionID})})),Wp=(e,t)=>{let n=new Map;for(let t of e){if(!t.parentID)continue;let e=n.get(t.parentID)??[];e.push(t.id),n.set(t.parentID,e)}let r=new Set([t]),i=[t];for(let e of i){let t=n.get(e);if(t)for(let e of t)r.has(e)||(r.add(e),i.push(e))}return r},Gp=(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},Kp=(e,t,n,r)=>{if(!n)return r;let i=Wp(e,n);if(i.size===0)return r;let a=new Set,o=[];for(let e of i){let n=t[e];if(n)for(let e of n)a.has(e.id)||(a.add(e.id),o.push(e))}return o.length===0?r:o},qp=`GitHub issue context (JSON)`,Jp=`GitHub pull request context (JSON)`,Yp=e=>!e||typeof e!=`object`?!1:!!e.synthetic,Xp=e=>!Array.isArray(e)||e.length===0?!1:e.every(e=>Yp(e)),Zp=e=>{if(!Array.isArray(e)||e.length===0)return[];let t=e.some(e=>!Yp(e)),n=e=>{if(!Yp(e)||e.type!==`text`)return!1;let t=e.text;if(typeof t!=`string`)return!1;let n=t.trimStart();return n.startsWith(qp)||n.startsWith(Jp)};return t&&e.some(e=>Yp(e))?e.filter(e=>!Yp(e)||n(e)):e},Qp=e=>{try{let t=new URL(e).protocol;return t===`http:`||t===`https:`||t===`file:`}catch{return!1}},$p=e=>typeof e.text==`string`?e.text:typeof e.content==`string`?e.content:``,em=e=>{let t=e.trim().toLowerCase();return t===`application/x-directory`||t===`inode/directory`},tm=e=>e.replace(/\\/g,`/`),nm=e=>e.length<=1?e:e.replace(/\/+$/,``)||`/`,rm=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}`}`),tm(n)}catch{return null}},im=(e,t)=>{let n=nm(tm(e)),r=nm(tm(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},am=e=>e.filter((e,t,n)=>e.length>0&&n.indexOf(e)===t),om=(e,t)=>{let n=tm(e),r=nm(n),i=r===`/`?`/`:`${r}/`,a=[n,r,i,n.replace(/^\/+/,``),r.replace(/^\/+/,``),i.replace(/^\/+/,``)];if(t){let r=im(n,t);if(r!==null){let t=nm(r),i=t?`${t}/`:``;a.push(r,t,i),(n.endsWith(`/`)||e.endsWith(`/`))&&a.push(t?`${t}/`:``)}}return am(a)},sm=async e=>{let t=await fetch(e);if(!t.ok)throw Error(`composer-restoration-data-url`);return t.blob()},cm=(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},lm=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},um=async(e,t={})=>{let n=t.createID??fe,r=t.directory??t.root??null,i=e.filter(e=>!Yp(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($p).join(`
460
460
  `),l=[];for(let e of o){let t=lm(e);t&&l.push(t)}for(let e of[...l].reverse())cm(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=cm(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:`)?rm(t):null;if(o){let e=om(o,r),t=null;for(let n of e){let e=cm(c,`@${n}`,p);if(e){t={path:n,range:e};break}}if(t){p.add(`${t.range.start}:${t.range.end}`);let e=em(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 sm(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(Qp(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}},dm=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 sm(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(Qp(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}},fm=e=>e?JSON.parse(JSON.stringify(e)):null,pm=e=>e?{...e}:{},mm=(e,t=Dr.getState())=>{let n=t.getDraft?.(e)??null,r=pm(t.draftAttachmentViews?.[R(e)]);return{record:fm(n??void 0),views:r,expectedRevision:n?.revision??`absent`}},hm=async e=>{let t=e.input??Dr.getState(),n=mm(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}},gm=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}}},_m=async e=>{let t=e.input??Dr.getState(),n=t.getDraft(e.key);if(!n||n.revision!==e.restoredRevision)return{status:`conflict`,current:!0};let r=e.key.transportIdentity,i=e.runtime?.transportIdentity===r?e.runtime:void 0,a;try{let e=t.captureDraftRuntime();e.transportIdentity===r&&(a=e)}catch{}let o=i??a;return o?gm({key:e.key,restoredRevision:e.restoredRevision,previous:e.previous,runtime:o,store:t}):{status:`failed`,current:!1}},vm=(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},ym=e=>e?.status===`committed`&&e.current===!0,bm=new Map,xm=async(e,t)=>{let n=R(e),r=bm.get(n)??Promise.resolve(),i,a=new Promise(e=>{i=e}),o=r.catch(()=>void 0).then(()=>a);bm.set(n,o),await r.catch(()=>void 0);try{return await t()}finally{i(),bm.get(n)===o&&bm.delete(n)}},Sm=(e,t)=>({key:e,addLocal:async n=>{await xm(e,async()=>{await t().addDraftLocalAttachment(e,n)})},removeByAttachmentID:async n=>{try{return await xm(e,async()=>{let r=t(),i=vm(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 xm(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 xm(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:ym(i)})}catch{return!1}},replaceRootAttachments:async n=>{try{return await xm(e,async()=>t().replaceDraftRootAttachments(e,n))}catch{return}},addVSCodeFile:async(n,r,i)=>{await xm(e,()=>{t().addDraftVSCodeFileAttachment(e,n,r,i)})},addVSCodeSelection:async(n,r)=>{await xm(e,async()=>{await t().addDraftVSCodeSelectionAttachment(e,n,r)})}}),Cm=4e4,wm=0,Tm=null;function Em(e=Date.now()){wm=e}function Dm(e){return Tm=e,()=>{Tm===e&&(Tm=null)}}function Om(e){Tm?.(e)}function km(e=Date.now(),t=Cm){return wm<=0?!1:e-wm>=t}var Am=3e4,jm=200,Mm=new Map;function Nm(e,t,n){return`${n?.transport??r()}\n${n?.generation??s()}\n${e.trim()}\n${t}`}function Pm(e,t,n){if(!e||!t)return!1;let r=Mm.get(Nm(e,t,n));return r!==void 0&&(n?.now??Date.now())-r<Am}function Fm(e,t,n){if(!e||!t)return;let r=Nm(e,t,n);for(Mm.has(r)&&Mm.delete(r);Mm.size>=jm;){let e=Mm.keys().next().value;if(typeof e!=`string`)break;Mm.delete(e)}Mm.set(r,n?.now??Date.now())}var Im=768,Lm=()=>{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},Rm=()=>{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<=Im&&Lm()?`mobile`:`desktop`},zm=()=>Rm()===`mobile`,Bm=3,Vm=2,Hm=4,Um=4,Wm=100,Gm=30;function Km(){return l()?`relay`:`local`}function qm(e=Km()){return e===`relay`?Vm:Bm}function Jm(e=Km()){return e===`relay`?Um:Hm}function Ym(e){return qm(Qm(e))}function Xm(){return Wm}function Zm(){return Gm}function Qm(e){return e===`relay`||e===`local`?e:Km()}var $m=Object.freeze({liveRevision:0,confirmedHeadMessageID:null});function eh(){return{pages:[],pageParams:[]}}function th(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 nh(e){return{pages:Object.freeze(e.pages.map(th)),pageParams:Object.freeze([...e.pageParams])}}function rh(e,t,n=$m){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 th({kind:t,messageOrder:r,messagesByID:i,partsByMessageID:a,cursor:e.complete?null:e.cursor??null,complete:e.complete,turnCount:o,sync:n})}function ih(e){if(!e||e.pages.length===0)return tl;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 ah(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=ih(e);return{message:n,part:r,session_history_boundary:o.kind===`unknown`&&o.loadedTurns===0?{}:{[t]:o}}}function oh(e){for(let t=e.length-1;t>=0;--t){let n=e[t];if(n?.id)return n.id}return null}function sh(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 th({kind:e,messageOrder:s,messagesByID:c,partsByMessageID:l,cursor:r,complete:i,turnCount:a,sync:{liveRevision:o,confirmedHeadMessageID:oh(t)}})}function ch(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 nh({pages:[sh(`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=sh(`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(uh(i,o,s,a)),_.push(e.pageParams[r]??null)}return nh({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?uh(t,r===`reconcile-page`?lh(i,p):[...i,...p],s,a):uh(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]=th({...e,cursor:t,complete:r,sync:{...e.sync,liveRevision:a}}))}return nh({pages:m,pageParams:[...e.pageParams]})}function lh(e,t){let n=e.slice();for(let e of t){let t=rc(e),r=n.length;for(let e=0;e<n.length;e+=1)if(nc(t,rc(n[e]))<0){r=e;break}n.splice(r,0,e)}return n}function uh(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&&dh(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||ph(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:th({kind:e.kind,messageOrder:i,messagesByID:a,partsByMessageID:o,cursor:e.cursor,complete:e.complete,turnCount:e.turnCount,sync:{liveRevision:r,confirmedHeadMessageID:oh(t)}})}function dh(e,t){return e===t||e.id===t.id&&e===t}function fh(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 ph(e,t){if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(!fh(e[n],t[n]))return!1;return!0}function mh(e){return e.filter(e=>!!e?.id).slice().sort((e,t)=>e.id<t.id?-1:+(e.id>t.id))}function hh(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 gh(e,t,n,r,i,a){let o=n.message[t]??[],s=n.part,c=ch(e??eh(),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&&ph(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 nh({pages:e.pages.map((t,n)=>uh(t,n===e.pages.length-1?[...l[n]??[],...u]:l[n]??[],c,i)),pageParams:[...e.pageParams]})}return c}function _h(e,t){let n=ah(e,t),r=ih(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 vh(e,t,n,r){if(!Dl(n.type))return{data:e,result:{applied:!1,changed:!1}};let{draft:i,previousBoundary:a}=_h(e,t),o=Fs(i,n);if(!(typeof o==`boolean`?o:o.changed))return{data:e,result:{applied:!0,changed:!1}};let s=hh(n),c=new Set;return s&&c.add(s),{data:gh(e,t,i,a,r,c),result:{applied:!0,changed:!0}}}function yh(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 bh(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 xh(e){return e?e.map(e=>e.id).filter(e=>typeof e==`string`):[]}function Sh(e,t,n,r){if(n.length===0)return{data:e,result:{applied:!1,changed:!1}};let{draft:i,previousBoundary:a}=_h(e,t),o=!1,s=0,c,l=new Set,u=yh(e),d=bh(e),f=xh(i.message[t]);for(let e of n){if(!Dl(e.type))continue;o=!0;let n=Fs(i,e),r=typeof n==`boolean`?n:n.changed,a=typeof n==`boolean`?void 0:n.materialization;if(a&&!c&&(c=a),!r)continue;let p=hh(e),m=xh(i.message[t]),h=m.length!==f.length||m.some((e,t)=>e!==f[t]),g=h;if(p){let e=i.part[p],n=u.get(p);e&&n&&ph(n,e)?i.part[p]=[...n]:e?(g=!0,u.set(p,e)):n&&(g=!0,u.delete(p));let r=i.message[t]?.find(e=>e.id===p),a=d.get(p);if(!(r&&a&&a===r))if(r&&a&&dh(a,r)){let e=i.message[t];if(e){let t=e.findIndex(e=>e.id===p);t>=0&&(e[t]=a)}}else r?(g=!0,d.set(p,r)):a&&(g=!0,d.delete(p))}else g=!0;if(h){f=m;for(let e of i.message[t]??[])e?.id&&!d.has(e.id)&&d.set(e.id,e)}g&&(s+=1,p&&l.add(p))}return o?s===0?{data:e,result:{applied:!0,changed:!1,...c?{materialization:c}:{}}}:{data:gh(e,t,i,a,r+s,l),result:{applied:!0,changed:!0,...c?{materialization:c}:{}}}:{data:e,result:{applied:!1,changed:!1}}}function Ch(e,t,n,r,i){let a=e&&e.pages.length>0?e:nh({pages:[sh(`tail`,[],{},null,!1,0,i)],pageParams:[null]}),o=ah(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]:mh(r)};return{data:nh({pages:a.pages.map((e,t)=>t===a.pages.length-1?uh(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]?uh(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 wh(e,t,n){if(!e||e.pages.length===0)return{data:e,result:{applied:!0,changed:!1}};let r=!1;return{data:nh({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 uh(e,i,a,n)}),pageParams:[...e.pageParams]}),result:{applied:!0,changed:r}}}function Th(e,t,n){if(n.records.length===0)return{data:e,result:{applied:!1,changed:!1}};let r=ah(e,t),i=Yc({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:ih(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=nh({pages:[sh(`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:ih(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=nh({pages:e.pages.map((t,n)=>{let r=c[n]??[];return n===e.pages.length-1&&l.length>0?uh(t,lh(r,l),o,a):uh(t,r,o,a)}),pageParams:[...e.pageParams]});return{data:u,result:{applied:!0,changed:!0,boundary:ih(u)}}}function Eh(e,t,n){switch(n.type){case`http-page`:{let r=n.liveRevision??0,i=ul(ah(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:ch(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 vh(e,t,n.event,r+1)}case`sse-event-batch`:{let r=e?.pages[e.pages.length-1]?.sync.liveRevision??0;return Sh(e,t,n.events,r)}case`optimistic-add`:{let r=e?.pages[e.pages.length-1]?.sync.liveRevision??0;return Ch(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 wh(e,n.messageID,t)}case`durable-seed`:return Th(e,t,n);case`reset`:return n.page?Eh(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 Dh(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 Oh(e,t,n,r=`materialize`){return Eh(e,n,{type:`http-page`,purpose:r,page:Dh(t),liveRevision:t.sync.liveRevision}).data}function kh(e,t,n){if(!t)return e;if(!e||e.pages.length===0)return nh(t);if(t.pages.length===e.pages.length){let r=Nh(e,t);if(r===e)return e;if(Mh(e,t)||jh(e,t))return r;let i=t.pages[t.pages.length-1];return Oh(e,i,n)??r}if(t.pages.length===e.pages.length+1){let r=t.pages[0];return Eh(e,n,{type:`http-page`,purpose:`prepend`,page:Dh(r),liveRevision:r.sync.liveRevision}).data}if(t.pages.length===1&&e.pages.length>1){let r=t.pages[0];return Oh(e,r,n)??nh(t)}return nh(t)}function Ah(e){let t=new Set;for(let n of e.pages)for(let e of n.messageOrder)t.add(e);return t}function jh(e,t){let n=Ah(e),r=Ah(t);if(r.size===0||r.size>=n.size)return!1;for(let e of r)if(!n.has(e))return!1;let i=Ph(e,``),a=Ph(t,``);for(let e of r)if(i.messagesByID[e]!==a.messagesByID[e]||i.partsByMessageID[e]!==a.partsByMessageID[e])return!1;return!0}function Mh(e,t){let n=Ah(e);if(n.size===0)return!1;let r=Ah(t);for(let e of n)if(!r.has(e))return!1;if(r.size<=n.size)return!1;let i=Ph(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||nc(rc(t),rc(n))>0)return!1}return!0}function Nh(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,th(t))});return!n&&e.pageParams.length===t.pageParams.length?e:nh({pages:r,pageParams:[...t.pageParams]})}function Ph(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:ih(e),liveRevision:a}}var Fh=class extends Error{code=`runtime_stale`;constructor(e=`runtime_stale`){super(e),this.name=`SessionMessageRuntimeStaleError`}},Ih=class extends Error{code=`page_contract`;constructor(e){super(e),this.name=`SessionMessagePageContractError`}},Lh=class extends Error{code=`http_error`;status;constructor(e,t){super(t??`session message page failed (${e})`),this.name=`SessionMessageHttpError`,this.status=e}},Rh=e=>e.trim(),zh=e=>e?.trim()||`tail`,Bh=new Set([502,503,504]),Vh=[`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 Hh(e){if(!e||e instanceof Fh||e instanceof Ih)return!1;if(e instanceof Lh)return e.status>=400&&e.status<500?!1:Bh.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(Bh.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(Bh.has(e)||e>=500&&e<600)return!0}return n.includes(`page contract`)||n.includes(`malformed json`)||n.includes(`contract`)?!1:Vh.some(e=>n.includes(e))}function Uh(e,t){return e>=2?!1:Hh(t)}var Wh=(e,t=r(),n=s())=>[t,n,`sessionMessages`,`page`,Rh(e.directory),e.sessionID,e.limit,zh(e.before)],Gh=(e,t=r(),n=s())=>[t,n,`session-transcript`,Rh(e.directory),e.sessionID];function Kh(e){if(!e||typeof e!=`object`)throw new Ih(`session message page: expected object`);let t=e;if(!Array.isArray(t.records))throw new Ih(`session message page: records must be an array`);if(typeof t.complete!=`boolean`)throw new Ih(`session message page: complete must be boolean`);for(let e of t.records){if(!e||typeof e!=`object`)throw new Ih(`session message page: invalid record`);let t=e.info;if(!t||typeof t!=`object`||typeof t.id!=`string`)throw new Ih(`session message page: record.info.id required`)}if(t.cursor!==void 0&&t.cursor!==null&&typeof t.cursor!=`string`)throw new Ih(`session message page: cursor must be string when set`);return e}var qh=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}:{}})},Jh=(e,t,n)=>{let i=(n.getTransport??r)(),a=(n.getGeneration??s)();if(i!==e||a!==t)throw new Fh},Yh=(e,t,n=r(),i={},a=(i.getGeneration??s)())=>{let o=Rh(e.directory),c=e.sessionID,l=e.limit,u=e.before?.trim()||void 0;return{queryKey:Wh({directory:o,sessionID:c,limit:l,before:u},n,a),queryFn:async({signal:e})=>{Jh(n,a,i);let r=await t({directory:o,sessionID:c,limit:l,before:u,signal:e});return Jh(n,a,i),qh(Kh(r))},staleTime:1/0,gcTime:3e5,retry:Uh,retryDelay:e=>Math.min(500*2**e,4e3)}},Xh=(e,t,n=L,i=r(),a={},o=(a.getGeneration??s)())=>n.fetchQuery(Yh(e,t,i,a,o));function Zh(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 Qh(e){return qh({records:e.records.map(e=>({info:e.info,parts:e.parts})),cursor:e.cursor,complete:e.complete,turnCount:e.turnCount,requestedTurnLimit:e.requestedTurnLimit})}function $h(e){if(!e.complete&&typeof e.cursor==`string`&&e.cursor.length>0)return e.cursor}function eg(e){let t=Rh(e.directory),n=e.sessionID,i=e.transport??r(),a=e.probe??{},o=e.generation??(a.getGeneration??s)(),c=e.initialLimit??qm(),l=e.historyLimit??Jm(),u=e.client??L,d=Gh({directory:t,sessionID:n},i,o),f=async t=>Qh(await e.fetcher({directory:t.directory,sessionID:t.sessionID,limit:t.limit,before:t.before,signal:t.signal}));return{queryKey:d,queryFn:async e=>{Jh(i,o,a);let r=e.pageParam?.trim()||void 0,s=r?l:c,d=r?`prepend`:`initial`,p=await Xh({directory:t,sessionID:n,limit:s,before:r},f,u,i,a,o);Jh(i,o,a);let m=Zh(p);return rh(m,d===`prepend`?`history`:`tail`,{liveRevision:0,confirmedHeadMessageID:m.records[m.records.length-1]?.info.id??null})},initialPageParam:null,getPreviousPageParam:$h,getNextPageParam:()=>void 0,staleTime:1/0,gcTime:3e5,retry:Uh,retryDelay:e=>Math.min(500*2**e,4e3),maxPages:void 0,structuralSharing:(e,t)=>kh(e,t,n)}}function tg(e){let t=e.client??L,n=eg({...e,client:t}),r=new Qe(t,{...n,structuralSharing:(t,n)=>kh(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 nh(e);await r.refetch();let t=r.getCurrentResult().data;if(!t)throw r.getCurrentResult().error??Error(`transcript initial fetch failed`);return nh(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:nh(i)}):e}if(!i)throw Error(`transcript previous page fetch failed`);return nh(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:nh(n)}):t}},getData:()=>r.getCurrentResult().data,subscribe:e=>r.subscribe(t=>{e(t.data)}),destroy:()=>{r.destroy()}}}function ng(e,t,n,r){let i=e.getQueryData(t),a=Eh(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 rg(e,t=L,n=r(),i=s()){return t.getQueryData(Gh(e,n,i))}function ig(){return v()||zm()}function ag(){return v()?4:zm()?12:40}var og=1048576,sg=4*og,cg=12*og,lg=40*og;function ug(){return v()?sg:zm()?cg:lg}var dg=e=>e.trim();function fg(e){return{transport:e.transport,generation:e.generation,directory:dg(e.directory),sessionID:e.sessionID}}function pg(e){let t=fg(e);return`${t.transport}\n${t.generation}\n${t.directory}\n${t.sessionID}`}function mg(e){return`${e.transport}\n${e.generation}\n${dg(e.directory)}`}var hg={canonical:`session-transcript`,transportPageRoot:`sessionMessages`,transportPageKind:`page`,taskRoot:`session-transcript-task`,tailTaskKind:`tail`,reconcileTaskKind:`reconcile`,checkpoint:`session-transcript-checkpoint`};function gg(e,t,n){return[t,n,hg.taskRoot,hg.reconcileTaskKind,dg(e.directory),e.sessionID,e.checkpoint]}function _g(e,t,n){return[t,n,hg.checkpoint,dg(e.directory),e.sessionID]}function vg(e){let t=fg(e);return[{queryKey:Gh({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation),exact:!0},{queryKey:[t.transport,t.generation,hg.transportPageRoot,hg.transportPageKind,t.directory,t.sessionID]},{queryKey:[t.transport,t.generation,hg.taskRoot,hg.tailTaskKind,t.directory,t.sessionID]},{queryKey:[t.transport,t.generation,hg.taskRoot,hg.reconcileTaskKind,t.directory,t.sessionID]},{queryKey:_g({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation),exact:!0}]}function yg(){let e=new Map;return{retain(t){let n=fg(t),r=pg(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(pg(t))?.count??0)>0},listRetained(){return Array.from(e.values()).map(e=>e.scope)},retainCount(t){return e.get(pg(t))?.count??0},clear(){e.clear()}}}function bg(){return{cancel:0,remove:0,enforce:0,purgeSession:0,purgeGeneration:0,destructiveReset:0,evictedSessions:0}}var xg=3e4;function Sg(e){return e&&typeof e==`object`&&`pages`in e&&Array.isArray(e.pages)?e.pages.length:0}function Cg(e){return!Array.isArray(e)||e.length<5||e[2]!==hg.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 wg(e){let t=e.client,n=e.activeRegistry??yg(),r=e.counters??bg(),i=e.getLimit??ag,a=e.now??Date.now,o=e.minResidencyMs??xg,s=new Map,c=e=>{let t=pg(fg(e));s.set(t,a())},l=e=>{let t=pg(fg(e)),n=s.get(t);return n!==void 0&&a()-n<o},u=e=>{let r=fg(e);if(n.isRetained(r))return!0;let i=Gh({directory:r.directory,sessionID:r.sessionID},r.transport,r.generation);return(t.getQueryCache().find({queryKey:i,exact:!0})?.getObserversCount()??0)>0},d=e=>{let r=e?.directory===void 0?void 0:dg(e.directory),i=[];for(let a of t.getQueryCache().getAll()){let t=Cg(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:Sg(a.state.data)})}return i},f=e=>{t.cancelQueries(e),r.cancel+=1,t.removeQueries(e),r.remove+=1},p=e=>{r.purgeSession+=1,s.delete(pg(fg(e)));for(let t of vg(e))f(t)},m=(e,t)=>{r.purgeGeneration+=1;let n=[[e,t,hg.canonical],[e,t,hg.transportPageRoot,hg.transportPageKind],[e,t,hg.taskRoot],[e,t,hg.checkpoint]];for(let e of n)f({queryKey:e})},h=e=>{r.enforce+=1;let t=e?.limit??i(),n=new Set(Array.from(e?.preserve??[]).map(e=>pg(fg(e)))),o=d({transport:e?.transport,generation:e?.generation,directory:e?.directory}),c=new Map;for(let e of o){let t=mg(e.scope),n=c.get(t);n||(n=[],c.set(t,n)),n.push(e)}let u=[];for(let e of c.values()){for(let t of e){let e=pg(t.scope);s.has(e)||s.set(e,t.dataUpdatedAt||a())}let i=e.filter(e=>!(e.active||n.has(pg(e.scope))||l(e.scope)));i.sort((e,t)=>e.dataUpdatedAt===t.dataUpdatedAt?e.scope.sessionID<t.scope.sessionID?-1:+(e.scope.sessionID>t.scope.sessionID):e.dataUpdatedAt-t.dataUpdatedAt);let o=e.length-i.length,c=e.length,d=0;for(;c>t&&d<i.length&&!(c-1<o);){let e=i[d];d+=1,p(e.scope),u.push(e.scope),r.evictedSessions+=1,--c}}return{evicted:u}};return{client:t,activeRegistry:n,counters:r,getLimit:i,isActive:u,listCanonical:d,purgeSession:p,purgeGeneration:m,enforce:h,destructiveReset:async(e,t)=>{r.destructiveReset+=1,p(e);try{let n=await t();return h({transport:e.transport,generation:e.generation,directory:e.directory,preserve:[e]}),n}catch(t){throw p(e),t}},noteScopeObserved:c}}var Tg=3e4,Eg=(e,t)=>e?typeof AbortSignal.any==`function`?AbortSignal.any([e,AbortSignal.timeout(t)]):e:AbortSignal.timeout(t);async function Dg(e,t=Tg){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 Og=e=>e?e.toLowerCase().includes(`application/json`):!1,kg=e=>e?e.toLowerCase().includes(`text/html`):!1;function Ag(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 jg(e){let t=e.turns??Jm(),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:Tg;return Dg((async()=>{let a=await F(n,{method:`GET`,query:r,signal:Eg(e.signal,i)});if(!a.ok)throw Error(`session turn page failed (${a.status})`);let o=a.headers.get(`content-type`);if(kg(o))throw Error(`session turn page: unexpected HTML response`);Og(o);let s;try{s=await a.json()}catch{throw Error(`session turn page: malformed JSON`)}return Ag(s,t)})(),i)}async function Mg(e){let t=e.purpose===`prepend`&&e.before?Jm():qm();return jg({sessionID:e.sessionID,directory:e.directory,turns:t,...e.before?{before:e.before}:{},signal:e.signal})}var Ng=3e4,Pg=2,Fg=(e,t)=>e?typeof AbortSignal.any==`function`?AbortSignal.any([e,AbortSignal.timeout(t)]):e:AbortSignal.timeout(t),Ig=e=>e?e.toLowerCase().includes(`text/html`):!1,Lg=e=>new Promise(t=>{setTimeout(t,e)});function Rg(e,t){if(e==null)return null;if(typeof e!=`string`||e.length===0)throw new Ih(`session transcript reconcile: ${t} must be string or null`);return e}function zg(e){if(!e||typeof e!=`object`)throw new Ih(`session transcript reconcile: expected JSON object`);let t=e;if(!Array.isArray(t.records))throw new Ih(`session transcript reconcile: records must be an array`);if(typeof t.anchorFound!=`boolean`)throw new Ih(`session transcript reconcile: anchorFound must be a boolean`);if(typeof t.complete!=`boolean`)throw new Ih(`session transcript reconcile: complete must be a boolean`);if(typeof t.resetRequired!=`boolean`)throw new Ih(`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 Ih(`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 Ih(`session transcript reconcile: responseBytes must be a non-negative integer`);let n=Rg(t.capturedHeadMessageID,`capturedHeadMessageID`),r=Rg(t.latestHeadMessageID,`latestHeadMessageID`),i=Rg(t.continuation,`continuation`);if(t.complete===!0&&i!=null)throw new Ih(`session transcript reconcile: complete=true requires continuation=null`);if(t.complete===!1&&t.resetRequired!==!0&&i==null)throw new Ih(`session transcript reconcile: complete=false requires non-empty continuation`);if(t.resetRequired===!0){if(t.complete!==!0)throw new Ih(`session transcript reconcile: resetRequired=true requires complete=true`);if(i!=null)throw new Ih(`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 Ih(`session transcript reconcile: records[${e}] must be an object`);let r=n,i=r.info;if(!i||typeof i!=`object`)throw new Ih(`session transcript reconcile: records[${e}].info must be an object`);let o=i.id;if(typeof o!=`string`||o.length===0)throw new Ih(`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 Ih(`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 Bg(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 Ih(`session transcript reconcile: provide exactly one of anchor or continuation`);return{anchor:t,continuation:n}}async function Vg(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),Dg((async()=>{let t;try{t=await F(r,{method:`GET`,query:i,signal:Fg(e.signal,n)})}catch(e){throw e instanceof Fh||e instanceof Ih||e instanceof Lh||e instanceof Error?e:Error(String(e))}if(!t.ok)throw new Lh(t.status,`session transcript reconcile failed (${t.status})`);if(Ig(t.headers.get(`content-type`)))throw new Ih(`session transcript reconcile: unexpected HTML response`);let a;try{a=await t.json()}catch{throw new Ih(`session transcript reconcile: malformed JSON`)}return zg(a)})(),n)}async function Hg(e){let t=Bg(e),n=typeof e.timeoutMs==`number`&&Number.isFinite(e.timeoutMs)&&e.timeoutMs>0?e.timeoutMs:Ng,r=typeof e.maxRetries==`number`&&Number.isFinite(e.maxRetries)?Math.max(0,Math.floor(e.maxRetries)):Pg,i=e.sleep??Lg,a=0;for(;;){if(e.signal?.aborted)throw new DOMException(`The operation was aborted.`,`AbortError`);try{return await Vg(e,t,n)}catch(t){if(t instanceof Fh||t instanceof Ih||t instanceof Lh&&t.status>=400&&t.status<500||(t instanceof Error?t.name:``)===`AbortError`&&e.signal?.aborted||a>=r||!Hh(t))throw t;a+=1,await i(Math.min(500*2**(a-1),4e3))}}}var Ug=`GitHub issue context (JSON)`,Wg=`GitHub pull request context (JSON)`,Gg=e=>typeof e==`number`&&Number.isFinite(e)&&e>0,Kg=(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}},qg=e=>{let t=Kg(e,Ug);if(t){let e=t.issue,n=e?.number,r=e?.title,i=e?.url;return!Gg(n)||typeof r!=`string`||typeof i!=`string`?null:{type:`file`,mime:`application/vnd.github.issue-link`,filename:`Issue #${n}: ${r}`,url:i}}let n=Kg(e,Wg);if(n){let e=n.pr,t=e?.number,r=e?.title,i=e?.url;return!Gg(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},Jg=(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`))},Yg=e=>e.trimStart().startsWith(`Continue working toward the active session goal.`),Xg=e=>e.trim()===`/compact`,Zg=(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`&&(Yg(t)||Xg(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 Jg(t,n)||r.startsWith(Ug)||r.startsWith(Wg)}).map(e=>{let t=e;if(t.type===`text`){let e=typeof t.text==`string`?t.text.trim():``;if(t.synthetic===!0){let t=qg(e);if(t)return t}if(e.startsWith(`The following tool was executed by the user`))return{type:`text`,text:`/shell`}}return e})},Qg=e=>e?.length?Zg(e).length>0:!1,$g=`oc_asst_session_divider:`,e_=[],t_=e=>typeof e?.info?.id==`string`&&e.info.id.startsWith(`oc_asst_session_divider:`),n_=(e,t=0)=>({info:{id:`${$g}${e}`,role:`system`,time:{created:t}},parts:[]}),r_=e=>e.slice().reverse().flatMap(e=>e.entries),i_=(e,t,n=e_)=>{if(!e.length)return e_;let r=[],i=!1,a=null;for(let n of e)n.sessionID!==t&&(i&&a!==n.sessionID&&r.push(n_(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?e_:l_(n,r)?n:r},a_=(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},o_=(e,t)=>{if(!t)return e;if(e.info.role===`assistant`&&t.parts.length>0){let n=a_(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 Qg(e.parts)?e:Qg(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}:{}}},s_=(e,t,n,r=e_)=>{if(!t)return n.length>0?Array.from(n):e_;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:o_(e,t?.message),order:t?.order??a++})}if(i.size===0)return e_;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 l_(r,o)?r:o},c_=(e,t)=>{if(!t_(e)||!t_(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},l_=(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||c_(r,i))&&(r?.info!==i?.info||r?.parts!==i?.parts||r.sourceSessionID!==i.sourceSessionID||r.sourceDirectory!==i.sourceDirectory))return!1}return!0},u_=(e,t)=>Array.isArray(e)&&e.some(e=>e&&typeof e==`object`&&e.type===t),d_=e=>e.startsWith($g);function f_(e,t){if(!e?.id||d_(e.id))return!1;let n=e;return(typeof n.clientRole==`string`?n.clientRole:n.role)===`user`?!Array.isArray(t)||t.length===0||!(u_(t,`subtask`)||u_(t,`compaction`)||t.every(e=>Yp(e))):!1}function p_(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(f_(r,i))return n}return null}function m_(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:p_(e.transcript),lastEventID:e.lastEventID,capturedAt:e.capturedAt??Date.now(),state:`pending`,capturedHeadMessageID:null,latestHeadMessageID:m_(e.transcript),continuation:null,liveRevision:e.transcript.liveRevision}}function g_(e,t){return{...e,...t}}function __(e,t){let n=_g({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 v_(e,t){let n=_g({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation);return e.setQueryData(n,t),n}function y_(e,t){let n=_g({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation);e.removeQueries({queryKey:n,exact:!0})}function b_(e){return e.slim===!0}var x_=/bearer|token|authorization|password|secret|cookie/i,S_=new Set([`message.part.delta`]);function C_(e){return typeof e==`string`&&e.includes(`-`)}var w_=`openchamber.client-diagnostics.enabled`;function T_(e){return e===`true`||e!==`false`&&null}function E_(e){return e.preference===!0||e.preference!==!1&&C_(e.version)}function D_(e=Date.now()){return`openchamber-diagnostics-${new Date(e).toISOString().replace(/[:.]/g,`-`)}.json`}function O_(e){try{let t=JSON.parse(e);return typeof t.eventCount==`number`&&Number.isFinite(t.eventCount)?t.eventCount:0}catch{return 0}}function k_(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 A_(e){if(e==null)return;let t=(e instanceof Error?e.message:String(e)).trim().slice(0,240);if(t)return x_.test(t)?`redacted-error`:t}function j_(e){let t=0,n=0;for(let r of Object.values(e))if(r)for(let e of r)b_(e)?t+=1:n+=1;return{slimPartCount:t,fullPartCount:n}}function M_(e,t=4){return e.length<=t?e.slice():e.slice(e.length-t)}function N_(e){let t=0;for(let n of e.messageOrder)q_(e.messagesByID[n])===!0&&(t+=1);return t}function P_(e){let t=e.transcript?j_(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:M_(e.transcript.messageOrder),boundaryKind:e.transcript.boundary.kind,slimPartCount:t?.slimPartCount,fullPartCount:t?.fullPartCount,identityMissingCount:N_(e.transcript)}:{},...e.command?{command:e.command}:{},...e.purpose?{purpose:e.purpose}:{},...e.sseType?{sseType:e.sseType}:{},...A_(e.error??e.request?.error)?{error:A_(e.error??e.request?.error)}:{},...k_(e.error)===void 0?{}:{httpStatus:k_(e.error)}}}function F_(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 I_(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 L_(e){return typeof e==`string`&&S_.has(e)}function R_(e){switch(e.type){case`http-page`:return`http-page`;case`sse-event`:return L_(e.event.type)?null:`sse-event`;case`sse-event-batch`:return e.events.every(e=>L_(e.type))?null:`sse-event`;case`reset`:return`reset`;case`materialize-snapshots`:return`durable-seed`;case`remove-message`:return`purge`;default:return null}}function z_(e){if(e.type===`http-page`)return e.purpose}function B_(e){if(e.type===`sse-event`)return e.event.type;if(e.type===`sse-event-batch`)return`sse-event-batch`}function V_(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 H_(e){return e.__openchamberOptimistic===!0}function U_(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 x_.test(n)?`redacted-text`:n.length<=400?n:`${n.slice(0,400)}…`}function W_(e){if(!e)return;let t=e.clientRole??e.role;if(t===`user`||t===`assistant`||t===`system`)return t}function G_(e){let t=e?.time?.completed;return typeof t==`number`&&t>0}var K_=e=>typeof e==`string`&&e.trim().length>0;function q_(e){if(!e||W_(e)!==`assistant`)return;let t=e,n=!K_(t.mode)&&!K_(t.agent),r=!K_(t.modelID)||!K_(t.providerID);return n||r}function J_(e){return{partCount:e.partCount,slimCount:e.slimCount,fullCount:e.fullCount,optimistic:e.optimistic}}function Y_(e){let t=e.messageOrder.map(t=>{let n=e.partsByMessageID[t]??[],r=0,i=0,a=!1;for(let e of n)b_(e)?r+=1:i+=1,H_(e)&&(a=!0);let o=e.messagesByID[t],s=W_(o),c=q_(o),l=s===`user`?U_(n):void 0;return{id:t,partCount:n.length,slimCount:r,fullCount:i,optimistic:a,completed:G_(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 X_(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:J_(e),after:J_(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 Z_(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:X_(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 Q_(e){if(!e||typeof e.type!=`string`)return`missing`;let t=e.type.trim();return t.length>0?t:`missing`}function $_(e){return e.opened?`opened`:e.navigateCapability?e.directoryPresent?e.childSessionPresent?`navigate-rejected`:`queued`:`missing-directory`:`capability-off`}function ev(e){if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0}function tv(e){let t=ev(e.partID),n=ev(e.messageID),r=ev(e.directory),i=ev(e.childSessionID),a=ev(e.toolStatus),o=ev(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 nv(e){return[e.sessionID,ev(e.partID)??``,e.childSessionPresent?`1`:`0`,ev(e.childSessionID)??``,ev(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`,ev(e.surfaceKind)??``,String(e.taskStartedAt??``),String(e.statusObservedAt??``),String(e.statusSnapshotAt??``)].join(`\0`)}function rv(e){return{at:(e.now??Date.now)(),feat:`task`,kind:`task-row`,sessionID:e.sessionID,...tv(e)}}function iv(e){return{at:(e.now??Date.now)(),feat:`task`,kind:`task-click`,sessionID:e.sessionID,clickSource:e.clickSource,clickOutcome:$_(e),...tv(e)}}var av=`openchamber-transcript-diagnostics`,ov=`events`,sv=1,cv=e=>new Promise((t,n)=>{e.onsuccess=()=>t(e.result),e.onerror=()=>n(e.error??Error(`IndexedDB request failed`))}),lv=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){n(Error(`IndexedDB unavailable`));return}let r=indexedDB.open(e,sv);r.onupgradeneeded=()=>{let e=r.result;e.objectStoreNames.contains(ov)||e.createObjectStore(ov,{autoIncrement:!0})},r.onsuccess=()=>t(r.result),r.onerror=()=>n(r.error??Error(`IndexedDB open failed`))}),uv=(e=av)=>({async append(t,n){let r=await lv(e);try{let e=r.transaction(ov,`readwrite`).objectStore(ov);await cv(e.add(t));let i=await cv(e.getAllKeys()),a=i.length-n;if(a>0)for(let t of i.slice(0,a))await cv(e.delete(t))}finally{r.close()}},async read(){let t=await lv(e);try{return await cv(t.transaction(ov,`readonly`).objectStore(ov).getAll())}finally{t.close()}},async clear(){let t=await lv(e);try{await cv(t.transaction(ov,`readwrite`).objectStore(ov).clear())}finally{t.close()}}});function dv(e={}){let t=e.driver??uv(e.databaseName),n=e.limit??500;return{append:e=>t.append(e,n),read:()=>t.read(),clear:()=>t.clear()}}var fv=Je(`OpenChamberMedia`);function pv(e){let t=new TextEncoder().encode(e),n=``;for(let e of t)n+=String.fromCharCode(e);return btoa(n)}function mv(){return ft()&&Ye!==void 0&&Ye.isPluginAvailable(`OpenChamberMedia`)}function hv(){return`1.18.2-beta.17`}function gv(){if(typeof localStorage>`u`)return null;try{return T_(localStorage.getItem(w_))}catch{return null}}function _v(e){if(!(typeof localStorage>`u`))try{localStorage.setItem(w_,e?`true`:`false`)}catch{}}function vv(e={}){return(e.hasIndexedDB??(()=>globalThis.indexedDB!==void 0))()?`indexeddb`:`memory`}var yv;function bv(e=hv()){return E_({version:e,preference:gv()})}function xv(e={}){return I_({sink:vv()===`indexeddb`?(e.createIndexedDBSink??dv)():(e.createMemorySink??F_)(),isEnabled:e.isEnabled??bv})}function Sv(){return yv??=xv(),yv}function Cv(e){Sv().record(e)}function wv(e){try{return bv()?Y_(e()):void 0}catch{return}}function Tv(e){try{Cv(Z_(e))}catch{}}function Ev(e){try{Cv(rv(e))}catch{}}function Dv(e){try{Cv(iv(e))}catch{}}function Ov(e){let t=R_(e.command);t&&(e.changed!==!1||e.command.type!==`sse-event`&&e.command.type!==`sse-event-batch`)&&Cv(P_({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:z_(e.command),sseType:B_(e.command),source:V_(e.command),error:e.error}))}async function kv(){let e=await Sv().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 Av(e,t=D_()){if(mv())return(await fv.saveFile({dataBase64:pv(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 jv(){let e=await kv(),t=D_();return{content:e,fileName:t,outcome:await Av(e,t),eventCount:O_(e)}}function Mv(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 Nv=2,Pv=6e4;function Fv(e,t){return{transport:t?.transport??e.transport??(e.probe?.getTransport??r)(),generation:t?.generation??e.generation??(e.probe?.getGeneration??s)()}}function Iv(e,t){let n=(t.probe?.getTransport??r)(),i=(t.probe?.getGeneration??s)();if(n!==e.transport||i!==e.generation)throw new Fh}function Lv(e,t){return{directory:e.directory.trim(),sessionID:e.sessionID,transport:t.transport,generation:t.generation}}function Rv(e,t){return fg({transport:t.transport,generation:t.generation,directory:e.directory.trim(),sessionID:e.sessionID})}function zv(e,t){return`${e.trim()}\n${t}`}function Bv(e){let t=e.client,n=e.repository,i=e.cacheBudget??n.getCacheBudget?.()??wg({client:t,activeRegistry:yg()}),a=Math.max(1,Math.floor(e.directoryConcurrency??Nv)),o=e.fetchReconcile??Hg,c=e.now??Date.now,l=!1,u=0,d=new Map,f=new Map,p=new Map,m=new Map,h=new Set,g=new Map,_=new Set,v=(e,t)=>{h.add(zv(e,t))},y=(e,t)=>{h.delete(zv(e,t))},b=e=>{let t=f.get(e);t&&(t.abort(),f.delete(e)),d.delete(e)},x=e=>{u+=1;for(let e of[...f.keys()])b(e);p.clear(),m.clear()},S=(e,t)=>{let n=t===void 0?void 0:t.trim(),r=new Map;for(let t of i.listCanonical({transport:e.transport,generation:e.generation,directory:n}))t.active&&(n===void 0||t.scope.directory===n)&&r.set(zv(t.scope.directory,t.scope.sessionID),{directory:t.scope.directory,sessionID:t.scope.sessionID});for(let t of i.activeRegistry.listRetained())t.transport===e.transport&&t.generation===e.generation&&(n===void 0||t.directory===n)&&r.set(zv(t.directory,t.sessionID),{directory:t.directory,sessionID:t.sessionID});return Array.from(r.values())},C=(t,n)=>{let r=new Set(e.listDirectories().map(e=>e.trim()).filter(Boolean));for(let e of i.listCanonical({transport:t.transport,generation:t.generation}))r.add(e.scope.directory);for(let e of i.activeRegistry.listRetained())e.transport===t.transport&&e.generation===t.generation&&r.add(e.directory);for(let e of n)e.directory&&r.add(e.directory.trim());return r},w=()=>{if(e.getViewedSessions){let t=new Set,n=[];for(let r of e.getViewedSessions()){let e=r.directory.trim(),i=r.sessionID;if(!e||!i)continue;let a=zv(e,i);t.has(a)||(t.add(a),n.push({directory:e,sessionID:i}))}return n}let t=e.getViewedSession();return t?.sessionID?[{directory:t.directory.trim(),sessionID:t.sessionID}]:[]},T=r=>{if(l)return;let a={transport:r.transport??Fv(e).transport,generation:r.generation??Fv(e).generation},o=c(),s=w(),u=C(a,s),d=i.listCanonical({transport:a.transport,generation:a.generation}),f=new Map;for(let e of d)f.set(zv(e.scope.directory,e.scope.sessionID),{directory:e.scope.directory,sessionID:e.scope.sessionID});for(let e of i.activeRegistry.listRetained())e.transport===a.transport&&e.generation===a.generation&&f.set(zv(e.directory,e.sessionID),{directory:e.directory,sessionID:e.sessionID});for(let e of s)f.set(zv(e.directory,e.sessionID),{directory:e.directory,sessionID:e.sessionID});for(let t of u)for(let n of e.getBusyOrRetrySessionIDs(t))f.set(zv(t,n),{directory:t,sessionID:n});for(let e of f.values()){let i=Lv(e,a),s=n.getTranscript(i),c=h_({transport:a.transport,generation:a.generation,directory:e.directory,sessionID:e.sessionID,transcript:s,lastEventID:r.lastEventID,capturedAt:o});v_(t,c)}let p=new Set;for(let t of u){let n=Mv({directory:t,activeScopes:S(a,t),viewedSessions:s,busyOrRetrySessionIDs:e.getBusyOrRetrySessionIDs(t)});for(let e of n)p.add(zv(e.directory,e.sessionID))}for(let e of d){let t=zv(e.scope.directory,e.scope.sessionID);!p.has(t)&&!e.active&&v(e.scope.directory,e.scope.sessionID)}},E=(e,t,r)=>{let i=wv(()=>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=wv(()=>n.getTranscript(e));i&&t&&Tv({trigger:`reconnect-compensation-reconcile`,sessionID:e.sessionID,directory:e.directory,transport:e.transport,generation:e.generation,before:i,after:t})}catch{}return o},D=async(r,i,a)=>{if(Iv({transport:i.transport,generation:i.generation},e),a!==u)throw new Fh;v_(t,g_(__(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=wv(()=>n.getTranscript(r));try{if(await n.destructiveReset(r),Iv({transport:i.transport,generation:i.generation},e),a!==u)throw new Fh;y_(t,i),y(i.directory,i.sessionID);try{let e=wv(()=>n.getTranscript(r));o&&e&&Tv({trigger:`reconnect-compensation-reset`,sessionID:r.sessionID,directory:r.directory,transport:i.transport,generation:i.generation,before:o,after:e})}catch{}}catch(e){throw v_(t,g_(__(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}},O=async(r,i,a)=>{if(Iv({transport:i.transport,generation:i.generation},e),a!==u)throw new Fh;v_(t,g_(__(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=wv(()=>n.getTranscript(r));try{if(await n.ensureInitial(r),Iv({transport:i.transport,generation:i.generation},e),a!==u)throw new Fh;y_(t,i),y(i.directory,i.sessionID);try{let e=wv(()=>n.getTranscript(r));o&&e&&Tv({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 v_(t,g_(__(t,i)??h_({transport:i.transport,generation:i.generation,directory:i.directory,sessionID:i.sessionID,transcript:n.getTranscript(r),lastEventID:null}),{state:`pending`})),e}},k=async(r,i,a,s)=>{let l=Lv(r,i),d=Rv(r,i),f=gg({directory:d.directory,sessionID:d.sessionID,checkpoint:String(__(t,d)?.capturedAt??c())},d.transport,d.generation);t.setQueryData(f,{status:`running`,startedAt:c()});try{if(Iv(i,e),a!==u||s.aborted)throw new Fh;let p=__(t,d);if(p||(p=h_({transport:i.transport,generation:i.generation,directory:r.directory,sessionID:r.sessionID,transcript:n.getTranscript(l),lastEventID:null,capturedAt:c()}),v_(t,p)),!p.anchorMessageID){await O(l,d,a),t.setQueryData(f,{status:`ensure`,finishedAt:c()});return}p=g_(p,{state:`reconciling`}),v_(t,p);let m=p.anchorMessageID,h=0;for(;h<32;){if(h+=1,Iv(i,e),a!==u||s.aborted)throw new Fh;let g=null,_=null,v=null,b=0;for(;;){if(b+=1,Iv(i,e),a!==u||s.aborted)throw new Fh;let h=n.getTranscript(l).liveRevision;if(!g&&!m){await O(l,d,a),t.setQueryData(f,{status:`ensure`,finishedAt:c()});return}let y=await o({sessionID:r.sessionID,directory:r.directory.trim(),...g?{continuation:g}:{anchor:m},signal:s});if(Iv(i,e),a!==u||s.aborted)throw new Fh;if(y.resetRequired){await D(l,d,a),t.setQueryData(f,{status:`reset`,finishedAt:c()});return}if(b===1&&(_=y.capturedHeadMessageID),v=y.latestHeadMessageID??v,y.records.length>0&&E(l,y,h),p=g_(__(t,d)??p,{state:`reconciling`,capturedHeadMessageID:_,latestHeadMessageID:v,continuation:y.continuation}),v_(t,p),y.complete||!y.continuation)break;g=y.continuation}let x=_,S=v;if(x&&S&&S!==x){m=x,p=g_(__(t,d)??p,{state:`reconciling`,anchorMessageID:x,continuation:null,capturedHeadMessageID:null}),v_(t,p);continue}p=g_(__(t,d)??p,{state:`complete`,continuation:null,capturedHeadMessageID:x,latestHeadMessageID:S}),v_(t,p),y(r.directory,r.sessionID),t.setQueryData(f,{status:`complete`,finishedAt:c()});return}await D(l,d,a),t.setQueryData(f,{status:`reset`,finishedAt:c()})}catch(n){if(n instanceof Fh||n instanceof Error&&n.name===`AbortError`){t.setQueryData(f,{status:`cancelled`,finishedAt:c()});return}throw e.onError?.(n,{directory:r.directory,sessionID:r.sessionID,phase:`reconcile`}),t.setQueryData(f,{status:`error`,finishedAt:c(),code:n instanceof Error?n.name:`error`}),n}},A=t=>{let n=t.trim(),r=m.get(n)??0;if(r>=a)return;let i=p.get(n);if(!i||i.length===0)return;let o=i.shift();m.set(n,r+1);let s=zv(o.directory,o.sessionID);if(d.has(s)){m.set(n,(m.get(n)??1)-1),A(n);return}let c=Fv(e),l=u,h=new AbortController;f.set(s,h);let g=(async()=>{try{await k(o,c,l,h.signal)}catch{}finally{f.delete(s),d.delete(s),m.set(n,Math.max(0,(m.get(n)??1)-1)),A(n)}})();d.set(s,g)},j=e=>{let t=e.directory.trim(),n=zv(t,e.sessionID);if(d.has(n))return;let r=p.get(t);r||(r=[],p.set(t,r)),!r.some(t=>t.sessionID===e.sessionID)&&(r.push({directory:t,sessionID:e.sessionID}),A(t))},ee=t=>{let n=w(),r=C(t,n);for(let a of r){let r=Mv({directory:a,activeScopes:S(t,a),viewedSessions:n,busyOrRetrySessionIDs:e.getBusyOrRetrySessionIDs(a)});for(let e of r)j(e);for(let e of i.listCanonical({transport:t.transport,generation:t.generation,directory:a})){let t=zv(e.scope.directory,e.scope.sessionID);r.some(e=>zv(e.directory,e.sessionID)===t)||v(e.scope.directory,e.scope.sessionID)}}},te=t=>{if(l||!t.isReconnect)return;let n={transport:(e.probe?.getTransport??r)(),generation:t.runtimeGeneration},i=(e.probe?.getGeneration??s)(),a=(e.probe?.getTransport??r)();if(i!==n.generation||a!==n.transport){x(`generation_mismatch`);return}ee(n)},M=t=>{if(l)return;let r=t.directory.trim(),i=Fv(e,t),a=Lv({directory:r,sessionID:t.sessionID},i),s=pg(Rv({directory:r,sessionID:t.sessionID},i)),u=g.get(s);if(u&&c()-u.checkedAt<Pv||_.has(s)||d.has(zv(r,t.sessionID))||!n.hasSession?.(a))return;let f=n.getTranscript(a),p=f.messageOrder[f.messageOrder.length-1];p&&(_.add(s),(async()=>{try{if(Iv(i,e),l)return;let u=await o({sessionID:t.sessionID,directory:r,anchor:p});if(Iv(i,e),l||(g.set(s,{checkedAt:c()}),u.resetRequired)||u.complete&&u.records.length===0||u.records.length===0)return;let d=n.getTranscript(a).liveRevision;E(a,u,d)}catch{}finally{_.delete(s)}})())};return{captureCheckpoints:T,onCompensation:te,ensureOnObserve:async r=>{if(l)return null;let i=r.directory.trim(),a=zv(i,r.sessionID);if(!h.has(a))return M(r),null;y(i,r.sessionID);let o=Fv(e,r),s=Lv({directory:i,sessionID:r.sessionID},o),c=Rv({directory:i,sessionID:r.sessionID},o),u=__(t,c);if(u&&u.state!==`complete`&&u.anchorMessageID){j({directory:i,sessionID:r.sessionID});let e=d.get(a);return e&&await e,n.getTranscript(s)}try{Iv(o,e);let r=await n.ensureInitial(s);return y_(t,c),r}catch(t){throw e.onError?.(t,{directory:i,sessionID:r.sessionID,phase:`ensure-on-observe`}),t}},cancelAll:x,getCheckpoint:n=>{let r=Fv(e,n);return __(t,Rv({directory:n.directory,sessionID:n.sessionID},r))},isSessionInFlight:(e,t)=>d.has(zv(e,t)),destroy:()=>{l=!0,x(`destroy`)}}}function Vv(e){return{transport:e.transport,generation:e.generation,directory:e.directory,sessionID:e.sessionID}}function Hv(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 Uv(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 Wv(e,t={}){let n=new Map,r=new Map,i=e=>Promise.all([n.get($s(e))??Promise.resolve(),r.get(tc(e))??Promise.resolve()]).then(()=>void 0),a=(e,t)=>{let r=$s(e),a=i(e).then(t,t);return n.set(r,a.then(()=>void 0,()=>void 0)),a},o=(e,t)=>{let n=tc(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??ug)();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 Gv=new Map;function Kv(e,t){let n=Gv.get(e);if(n)return n;let r=t().finally(()=>{Gv.get(e)===r&&Gv.delete(e)});return Gv.set(e,r),r}var qv=e=>`message\n${e.runtimeKey}\n${e.directory}\n${e.sessionID}\n${e.messageID}`;function Jv(e){return Kv(qv(e),e.request)}function Yv(e,t){return`${e}\n${t}`}var Xv=new Map;function Zv(e){return Xv.get(e)}async function Qv(e){return Jv({runtimeKey:Yv(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 Xv.set(r.id,i),{info:sp(r),parts:i}}})}function $v(e,t){let n=e.info;return n.role===t||n.clientRole===t}function ey(e){let t=new Set(e.map(e=>e.info.id)),n=[],r=new Set;for(let i of e){if(!$v(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 ty(e){if(e.complete){let t=e.records.some(e=>$v(e,`user`));return{records:e.records,boundaryFound:t,partial:!1}}let t=ey(e.records);if(t.length===0){let t=e.records.some(e=>$v(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=>$v(e,`user`));return{records:i,boundaryFound:a,partial:!a}}function ny(e){return e.trim()}function ry(e,t){let n=e.transport??t.transport??(t.probe?.getTransport??r)(),i=e.generation??t.generation??(t.probe?.getGeneration??s)();return{directory:ny(e.directory),sessionID:e.sessionID,transport:n,generation:i}}function K(e){return`${e.transport}\n${e.generation}\n${e.directory}\n${e.sessionID}`}function iy(e){return{sessionID:e,messageOrder:[],messagesByID:{},partsByMessageID:{},boundary:tl,liveRevision:0}}function ay(e,t){if(!e||e.pages.length===0)return iy(t);let n=Ph(e,t);return{sessionID:t,messageOrder:n.messageOrder,messagesByID:n.messagesByID,partsByMessageID:n.partsByMessageID,boundary:n.boundary,liveRevision:n.liveRevision}}function oy(e){let t=e?.time?.created;return typeof t==`number`&&Number.isFinite(t)?t:void 0}function sy(e){return!!e?.some(e=>e.__openchamberOptimistic===!0)}function cy(e,t){if(t.records.length===0)return[];let n;for(let e of t.records){let t=oy(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=oy(e.messagesByID[t]);a===void 0||a<=n||sy(e.partsByMessageID[t])||i.push(t)}return i}function ly(e={}){let t=e.client??L,n=e.cacheBudget??wg({client:t,activeRegistry:e.activeRegistry??yg()}),i=n.activeRegistry,a=new Map,o=new Map,c=new Map,l=new Map,u=new Map,d=e.durableStore?Wv(e.durableStore,{getProtectScopes:()=>i.listRetained().map(Vv),getByteBudget:e.getDurableByteBudget}):void 0,f=new Map,p=new Map,m=new Map,h=new Map,g=new Map,_=new Set,v=new Map,y=new Set,b=new Set,x=(e,t)=>{let n=K(t);if(y.has(n))return;let r=ay(w(e),t.sessionID);!bl(r)&&!v.has(n)||(y.add(n),Cv(P_({kind:`hydration`,sessionID:t.sessionID,directory:t.directory,transport:t.transport,generation:t.generation,transcript:r,hydration:{sessionID:t.sessionID,p0Satisfied:!0,phase:`p0`}})))},S=0,C=e=>{let t=u.get(e);return t||(t={messages:new Map,parts:new Map},u.set(e,t)),t},w=n=>{let r=ry(n,e);return rg({directory:r.directory,sessionID:r.sessionID},t,r.transport,r.generation)},T=t=>{let n=ry(t,e);return Gh({directory:n.directory,sessionID:n.sessionID},n.transport,n.generation)},E=t=>{let n=ry(t,e);return{transport:n.transport,generation:n.generation,directory:n.directory,sessionID:n.sessionID}},D=e=>{let t=E(e);n.enforce({transport:t.transport,generation:t.generation,directory:t.directory,preserve:[t]})},O=n=>{let i=e.probe??{getTransport:r,getGeneration:s},o=ry(n,{...e,transport:void 0,generation:void 0,probe:i}),c=K(o),l=a.get(c);if(l)return l;if(!e.fetcher)throw Error(`Query transcript repository requires a fetcher for HTTP loads`);let u=tg({directory:o.directory,sessionID:o.sessionID,fetcher:e.fetcher,transport:o.transport,generation:o.generation,probe:i,client:t,initialLimit:e.initialLimit,historyLimit:e.historyLimit});return a.set(c,u),u},k=t=>{let n=K(ry(t,e));u.delete(n);let r=o.get(n);if(!(!r||r.size===0))for(let e of r)e(t)},A=n=>{let r=K(ry(n,e));if(c.has(r))return;let i=T(n),a=t.getQueryCache().subscribe(e=>{if(e.type!==`updated`&&e.type!==`removed`)return;let t=e.query.queryKey;t[0]===i[0]&&t[1]===i[1]&&t[2]===i[2]&&t[3]===i[3]&&t[4]===i[4]&&k(n)});c.set(r,a)},j=e=>{let t=o.get(e);if(t&&t.size>0)return;let n=c.get(e);n&&(n(),c.delete(e)),o.delete(e)},ee=(e,t)=>{let n=C(e),r=n.transcript;if(r&&r.sessionID===t.sessionID&&r.liveRevision===t.liveRevision&&r.boundary===t.boundary&&r.messageOrder===t.messageOrder&&r.messagesByID===t.messagesByID&&r.partsByMessageID===t.partsByMessageID)return r;if(r&&r.messageOrder.length===t.messageOrder.length&&r.messageOrder.every((e,n)=>e===t.messageOrder[n])&&r.boundary.kind===t.boundary.kind&&r.boundary.loadedTurns===t.boundary.loadedTurns&&(r.boundary.kind!==`has-more`||t.boundary.kind!==`has-more`||r.boundary.cursor===t.boundary.cursor)&&r.liveRevision===t.liveRevision){let e=!0,i=!0,a={...r.messagesByID},o={...r.partsByMessageID};for(let n of t.messageOrder)r.messagesByID[n]!==t.messagesByID[n]&&(e=!1,a[n]=t.messagesByID[n]),r.partsByMessageID[n]!==t.partsByMessageID[n]&&(i=!1,t.partsByMessageID[n]?o[n]=t.partsByMessageID[n]:delete o[n]);if(e&&i)return n.transcript=r,r;let s={sessionID:t.sessionID,messageOrder:r.messageOrder,messagesByID:e?r.messagesByID:a,partsByMessageID:i?r.partsByMessageID:o,boundary:r.boundary.kind===t.boundary.kind&&r.boundary.loadedTurns===t.boundary.loadedTurns?r.boundary:t.boundary,liveRevision:t.liveRevision};return n.transcript=s,s}return n.transcript=t,t},te=(e,t)=>{let n=C(e),r=n.pagination;return r&&r.sessionID===t.sessionID&&r.hasPreviousPage===t.hasPreviousPage&&r.isComplete===t.isComplete&&r.cursor===t.cursor&&r.loadedTurns===t.loadedTurns&&r.boundary.kind===t.boundary.kind&&r.boundary.loadedTurns===t.boundary.loadedTurns?r:(n.pagination=t,t)},M=(e,t)=>`${K(e)}\n${t}`,ne=(e,t)=>{let n=K(e),r=g.get(n);r&&(r.delete(t),r.size===0&&g.delete(n))},re=e=>{for(let t of g.keys())(t===e||t.startsWith(e))&&g.delete(t)},ie=e=>{for(let t of m.keys())t.startsWith(e)&&m.delete(t);for(let t of h.keys())t.startsWith(e)&&h.delete(t)},ae=e=>{for(let t of v.keys())(t===e||t.startsWith(e))&&v.delete(t);for(let t of[...y])(t===e||t.startsWith(e))&&y.delete(t);for(let t of b)(t===e||t.startsWith(e))&&b.delete(t)},oe=e=>{let t=`${K(e)}\n`;for(let[e,n]of m)if(e.startsWith(t)&&n.status===`loading`)return!0;for(let e of h.keys())if(e.startsWith(t))return!0;return!1},se=t=>{let n=ry({directory:t.directory,sessionID:t.sessionID},e);return n.transport===t.transport&&n.generation===t.generation},ce=(e,t,n)=>{d&&d.persistSettled(Vv(e),t,n??[])},le=(e,t,n,r)=>{if(!d||S>0||!r.applied||!r.changed)return;let i=Vv(t);if(n.type===`remove-message`){d.removeMessage(i,n.messageID);return}if(n.type===`reset`){if(d.clearSession(i),n.page){let r=ay(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=ay(w(e),t.sessionID);for(let e of r){let n=Uv(e);if(n.action===`remove`){d.removeMessage(i,n.messageID);continue}if(n.action===`skip`)continue;let r=a.messagesByID[n.messageID];r&&ce(t,r,a.partsByMessageID[n.messageID])}return}if(n.type===`http-page`||n.type===`materialize-snapshots`){let r=ay(w(e),t.sessionID),i=n.type===`http-page`?n.page.records:n.records;for(let e of i){let n=r.messagesByID[e.info.id];n&&ce(t,n,r.partsByMessageID[e.info.id])}}}},ue=async(n,i)=>{if(!e.fetcher)throw Error(`Query transcript repository requires a fetcher for HTTP loads`);let a=async t=>{let n=await e.fetcher({directory:t.directory,sessionID:t.sessionID,limit:t.limit,before:t.before,signal:t.signal});return{records:n.records.map(e=>({info:e.info,parts:e.parts})),cursor:n.cursor,complete:n.complete,turnCount:n.turnCount,requestedTurnLimit:n.requestedTurnLimit}},o=e.probe??{getTransport:r,getGeneration:s},c={directory:n.directory,sessionID:n.sessionID,limit:e.initialLimit??qm()};return Hv(i?.fresh?await t.fetchQuery({...Yh(c,a,n.transport,o,n.generation),staleTime:0}):await Xh(c,a,t,n.transport,o,n.generation))},N=(e,t)=>{for(let n of t)ou(`${e.directory}\n${e.sessionID}\n${n}`,()=>P.materializeMessage(e,n),{priority:`background`}).catch(()=>void 0)},de=(e,t)=>{let r=K(t),i=p.get(r);if(i)return i;let a=(async()=>{let i=Date.now();f.set(r,{status:`loading`});try{let i=await ue(t);if(!se(t))return f.delete(r),P.getTranscript(e);P.apply(e,{type:`http-page`,purpose:`initial`,page:i}),Fm(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(!ml(P.getParts(e,i),P.getMessage(e,i)??o.info)){ne(t,i),m.set(M(t,i),{status:`ready`}),r+=1;continue}n.push(i)}}r>0&&k(e),N(e,n)}return f.delete(r),n.noteScopeObserved(E(e)),D(e),P.getTranscript(e)}catch(n){if(n instanceof Fh||!se(t))return f.delete(r),P.getTranscript(e);throw f.set(r,{status:`error`,error:n instanceof Error?n.message:String(n)}),Cv(P_({kind:`request-error`,sessionID:t.sessionID,directory:t.directory,transport:t.transport,generation:t.generation,source:`network`,purpose:`initial`,durationMs:Date.now()-i,transcript:ay(w(e),t.sessionID),request:P.getRequestState?.(e),hydration:P.getHydrationState?.(e),error:n})),n}finally{p.delete(r)}})();return p.set(r,a),a},fe=(e,t)=>{let r=K(t),i=p.get(r);if(i)return i;let a=(async()=>{let i=Date.now(),a=P.getTranscript(e).liveRevision;f.set(r,{status:`loading`});try{let i=await ue(t,{fresh:!0});if(!se(t))return f.delete(r),P.getTranscript(e);let o=P.getTranscript(e).liveRevision;return o<a||Ql(t.sessionID,t.directory)?(f.delete(r),P.getTranscript(e)):(P.apply(e,{type:`http-page`,purpose:`reconcile-page`,page:{records:i.records.map(e=>({info:e.info,parts:e.parts})),complete:!1,cursor:void 0,turnCount:0},capturedLiveRevision:a,liveRevision:o}),Fm(t.directory,t.sessionID,{transport:t.transport,generation:t.generation}),f.delete(r),n.noteScopeObserved(E(e)),D(e),P.getTranscript(e))}catch(n){return f.delete(r),n instanceof Fh||!se(t)||Cv(P_({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:ay(w(e),t.sessionID),request:P.getRequestState?.(e),hydration:P.getHydrationState?.(e),error:n})),P.getTranscript(e)}finally{p.delete(r)}})();return p.set(r,a),a},pe=t=>{let n=w(t);return!n||n.pages.length===0||_.has(K(ry(t,e)))?!0:ih(n).kind===`unknown`},P={getTranscript(t){let n=ry(t,e),r=K(n),i=ay(w(t),n.sessionID);return ee(r,i)},getPagination(t){let n=ry(t,e),r=K(n),i=P.getTranscript(t);return te(r,wl(n.sessionID,i.boundary))},getRequestState(t){let n=ry(t,e),r=f.get(K(n));if(r?.status===`loading`)return{sessionID:n.sessionID,status:`loading`};if(r?.status===`error`)return{sessionID:n.sessionID,status:`error`,error:r.error};let i=a.get(K(n));if(!i){let e=w(t);return e&&e.pages.length>0?{sessionID:n.sessionID,status:`ready`}:{sessionID:n.sessionID,status:`idle`}}let o=i.observer.getCurrentResult();return o.isLoading||o.isFetching?{sessionID:n.sessionID,status:`loading`}:o.isError&&o.error?{sessionID:n.sessionID,status:`error`,error:o.error instanceof Error?o.error.message:String(o.error)}:o.data&&o.data.pages.length>0?{sessionID:n.sessionID,status:`ready`}:{sessionID:n.sessionID,status:`idle`}},getHydrationState(t){let n=ry(t,e),r=K(n),i=P.getTranscript(t);bl(i)&&v.set(r,!0);let a=v.has(r);return{sessionID:n.sessionID,p0Satisfied:a,phase:xl({p0Satisfied:a,prependActive:b.has(r),materializeActive:oe(n),earlierHistoryLoaded:_l(i)>1})}},hasSession(e){return w(e)!==void 0},getMessage(t,n){let r=K(ry(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(ry(t,e)),i=C(r),a=P.getTranscript(t).partsByMessageID[n]??uy,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=ry(t,e),i=m.get(M(r,n));return i?{sessionID:r.sessionID,messageID:n,status:i.status,...i.error===void 0?{}:{error:i.error}}:!P.getMessage(t,n)||g.get(K(r))?.has(n)||pl(P.getParts(t,n))?{sessionID:r.sessionID,messageID:n,status:`idle`}:{sessionID:r.sessionID,messageID:n,status:`ready`}},async materializeMessage(t,n){let r=ry(t,e),i=M(r,n),a=wv(()=>P.getTranscript(t)),o=e=>{try{let t=wv(e);if(!a||!t)return;Tv({trigger:`materialize`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,purpose:`exact`,before:a,after:t})}catch{}},s=h.get(i);if(s)return s.then(e=>o(()=>e)).catch(()=>void 0),s;let c=(async()=>{try{if(!P.getMessage(t,n))return m.set(i,{status:`idle`}),P.getTranscript(t);if(!pl(P.getParts(t,n))&&!g.get(K(r))?.has(n))return m.set(i,{status:`ready`}),P.getTranscript(t);m.set(i,{status:`loading`}),k(t);try{let a=await Qv({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 B.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??[]}]}),pl(P.getParts(t,n))?m.set(i,{status:`error`,error:`session.message failed: slim parts remain`}):m.set(i,{status:`ready`}),k(t),P.getTranscript(t)):(m.delete(i),P.getTranscript(t))}catch(e){if(!se(r))return m.delete(i),P.getTranscript(t);let n=e instanceof Error?e.message:`session.message failed`;return m.set(i,{status:`error`,error:n}),k(t),P.getTranscript(t)}}finally{ne(r,n)}})();return h.set(i,c),c.then(e=>o(()=>e)).catch(()=>void 0),c.finally(()=>{h.get(i)===c&&h.delete(i)}),c},apply(r,i){let a=ry(r,e),o=T(r),s=(()=>{switch(i.type){case`http-page`:{let e=ng(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=ng(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=ng(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=ng(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}),ng(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=ng(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=ng(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 dy(t,o,a.sessionID,i,()=>k(r));case`remove-message`:{let e=ng(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&&(Ov({directory:a.directory,sessionID:a.sessionID,transport:a.transport,generation:a.generation,command:i,transcript:ay(w(r),a.sessionID),request:P.getRequestState?.(r),hydration:P.getHydrationState?.(r),error:s.error,changed:s.changed}),x(r,a)),s},subscribe(t,r){let a=K(ry(t,e)),s=o.get(a);if(!s){s=new Set,o.set(a,s);let e=E(t);l.set(a,i.retain(e)),n.noteScopeObserved(e)}return s.add(r),A(t),()=>{let e=o.get(a);if(e){if(e.delete(r),e.size===0){let e=l.get(a);e&&(e(),l.delete(a))}j(a)}}},async ensureInitial(t){let r=ry(t,e),a=K(r);if(d&&await d.wait(Vv(r)),w(t)===void 0&&e.durableStore)try{let n=await e.durableStore.readSession(Vv(r));if(se(r)&&w(t)===void 0&&n.records.length>0){S+=1;try{P.apply(t,{type:`materialize-snapshots`,records:n.records.map(e=>({info:e.info,parts:[...e.parts]}))});let e=new Set;for(let t of n.records)ml(t.parts,t.info)&&e.add(t.info.id);e.size>0&&g.set(a,e),_.add(a)}finally{--S}}}catch(e){Cv(P_({kind:`request-error`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,source:`durable-cache`,purpose:`durable-seed`,error:e}))}if(pe(t)&&w(t)!==void 0){let e=Date.now(),n=await de(t,r);return Cv(P_({kind:`ensure-initial`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,source:`network`,durationMs:Date.now()-e,transcript:n,request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t)})),x(t,r),n}let o=w(t);if(o&&o.pages.length>0&&!pe(t)&&e.fetcher&&!i.isRetained(E(t))){let e=Date.now(),n=await fe(t,r);return Cv(P_({kind:`ensure-initial`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,source:`network`,durationMs:Date.now()-e,transcript:n,request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t)})),x(t,r),n}let s=O(t),c=Date.now(),l=w(t)!==void 0;f.delete(a);try{await s.ensureInitial()}catch(e){throw Cv(P_({kind:`request-error`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,source:l?`query-cache`:`network`,purpose:`initial`,durationMs:Date.now()-c,transcript:ay(w(t),r.sessionID),request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t),error:e})),e}f.delete(a),l||Fm(r.directory,r.sessionID,{transport:r.transport,generation:r.generation}),n.noteScopeObserved(E(t)),D(t);let u=P.getTranscript(t);return Cv(P_({kind:`ensure-initial`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,source:l?`query-cache`:`network`,durationMs:Date.now()-c,transcript:u,request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t)})),x(t,r),u},async fetchPreviousPage(t){if(pe(t)&&await P.ensureInitial(t),ih(w(t)).kind!==`has-more`)return P.getTranscript(t);let n=ry(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 Cv(P_({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 Cv(P_({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=ry(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=ry(t,e),i=wv(()=>P.getTranscript(t)),a=P.getTranscript(t).liveRevision,o=await e.fetcher({directory:r.directory,sessionID:r.sessionID,limit:e.initialLimit??qm(),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=cy(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=wv(()=>c);i&&e&&Tv({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=wv(()=>P.getTranscript(t)),i=E(t);return d&&await d.clearSession(Vv(ry(t,e))),n.destructiveReset(i,async()=>{let n=ry(t,e),i=K(n),o=a.get(i);if(o&&(o.destroy(),a.delete(i)),u.delete(i),ae(i),!e.fetcher)throw Error(`Query transcript repository requires a fetcher for destructiveReset ensure`);let s=await P.ensureInitial(t);try{let e=wv(()=>s);r&&e&&Tv({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(ry(t,e)),i=a.get(r);i&&(i.destroy(),a.delete(r)),u.delete(r),ie(`${r}\n`),g.delete(r),ae(r),n.purgeSession(E(t)),k(t)},purgeGeneration(e,t){for(let[n,r]of a)if(n.startsWith(`${e}\n${t}\n`)){r.destroy(),a.delete(n),u.delete(n);let e=l.get(n);e&&(e(),l.delete(n));let t=c.get(n);t&&(t(),c.delete(n)),o.delete(n)}ie(`${e}\n${t}\n`),re(`${e}\n${t}\n`),ae(`${e}\n${t}\n`),n.purgeGeneration(e,t),d&&d.clearGeneration({transport:e,generation:t})},destroy(){for(let e of a.values())e.destroy();a.clear();for(let e of c.values())e();c.clear();for(let e of l.values())e();l.clear(),o.clear(),u.clear(),f.clear(),p.clear(),m.clear(),h.clear(),g.clear(),v.clear(),y.clear(),b.clear()}};return P}var uy=Object.freeze([]);function dy(e,t,n,r,i){if(r.records.length===0)return{applied:!1,changed:!1};let a=ng(e,t,n,{type:`durable-seed`,records:r.records,skipPartTypes:r.skipPartTypes,merge:r.merge});return a.result.changed&&i(),a.result}var fy=`/api/openchamber/transcript-cache`,py=new Set([`unchanged`,`not-settled`,`slim-downgrade`]),my=e=>typeof e==`object`&&!!e&&!Array.isArray(e),hy=(e,t)=>{if(typeof e!=`string`||e.length===0)throw Error(`Invalid transcript cache ${t}`);return e},gy=(e,t)=>{if(typeof e==`number`&&Number.isInteger(e))return e;throw Error(`Invalid transcript cache ${t}`)},_y=e=>{if(!my(e))throw Error(`Invalid transcript cache scope`);return{transport:hy(e.transport,`scope`),generation:gy(e.generation,`scope`),directory:hy(e.directory,`scope`),sessionID:hy(e.sessionID,`scope`)}},vy=(e,t)=>{if(e===`slim`||e===`full`)return e;throw Error(`Invalid transcript cache ${t}`)},yy=e=>{if(!my(e)||!my(e.info)||!Array.isArray(e.parts)||!Array.isArray(e.partCompleteness)||!my(e.sortKey))throw Error(`Invalid transcript cache record`);return{scope:_y(e.scope),messageID:hy(e.messageID,`message ID`),info:e.info,parts:e.parts,partCompleteness:e.partCompleteness.map(e=>vy(e,`part completeness`)),completeness:vy(e.completeness,`completeness`),contentHash:hy(e.contentHash,`content hash`),byteSize:gy(e.byteSize,`byte size`),lastAccessedAt:gy(e.lastAccessedAt,`lastAccessedAt`),sortKey:{created:gy(e.sortKey.created,`sort key`),messageID:hy(e.sortKey.messageID,`sort key`)}}},by=(e,t)=>{if(!my(e)||!Array.isArray(e.records))throw Error(`Invalid transcript cache session`);let n=e.records.map(yy);return{scope:e.scope===void 0?mc(t):_y(e.scope),records:n,byteSize:typeof e.byteSize==`number`&&Number.isFinite(e.byteSize)?e.byteSize:n.reduce((e,t)=>e+t.byteSize,0)}},xy=e=>{if(!my(e))throw Error(`Invalid transcript cache upsert`);if(e.status===`written`)return{status:`written`,record:yy(e.record)};if(e.status===`skipped`){if(typeof e.reason!=`string`||!py.has(e.reason))throw Error(`Invalid transcript cache upsert`);return{status:`skipped`,reason:e.reason,...e.record===void 0?{}:{record:yy(e.record)}}}throw Error(`Invalid transcript cache upsert`)},Sy=e=>{if(!my(e))throw Error(`Invalid transcript cache evict`);return{evicted:gy(e.evicted,`evict`),freedBytes:gy(e.freedBytes,`evict`),remainingBytes:gy(e.remainingBytes,`evict`)}},Cy=e=>({scope:mc(e),records:[],byteSize:0}),wy=(e,t)=>my(e)&&typeof e.error==`string`&&e.error.length>0?e.error:t,Ty=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`)}},Ey=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 Ty(r)};let i=await Ty(r).catch(()=>void 0);throw Error(wy(i,`Transcript cache request failed (${r.status})`))},Dy=e=>({transport:e.transport,generation:String(e.generation),directory:e.directory,sessionID:e.sessionID}),Oy=(e,t)=>({method:e,headers:{Accept:`application/json`,"Content-Type":`application/json`},body:JSON.stringify(t)});function ky(e={}){let t=e.fetch??F;return{async readSession(e){let n=await Ey(t,`${fy}/session`,{method:`GET`,query:Dy(e)});return n.kind===`disabled`||n.kind===`not-found`?Cy(e):by(n.payload,e)},async readMessage(e,n){let r=await Ey(t,`${fy}/message`,{method:`GET`,query:{...Dy(e),messageID:n}});if(r.kind!==`disabled`&&r.kind!==`not-found`){if(!my(r.payload))throw Error(`Invalid transcript cache record`);return yy(r.payload.record??r.payload)}},async upsertSettled(e,n,r){let i=await Ey(t,`${fy}/message`,Oy(`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 xy(i.payload)},async removeMessage(e,n){let r=await Ey(t,`${fy}/message`,Oy(`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 Ey(t,`${fy}/session`,Oy(`DELETE`,{scope:e}));if(n.kind!==`disabled`&&n.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async clearGeneration(e){let n=await Ey(t,`${fy}/generation`,Oy(`DELETE`,e));if(n.kind!==`disabled`&&n.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async evictToBytes(e,n){let r=await Ey(t,`${fy}/evict`,Oy(`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 Sy(r.payload)},async clearAll(){let e=await Ey(t,`${fy}/all`,{method:`DELETE`,headers:{Accept:`application/json`}});if(e.kind!==`disabled`&&e.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async destroy(){}}}var Ay=`openchamber-transcript-durable`,jy=1,My=`transcriptIndex`,Ny=`transcriptContent`,Py=class extends Error{code;constructor(e){super(e),this.code=e}},Fy=e=>({id:ec(e.scope,e.messageID),scope:mc(e.scope),scopeKey:$s(e.scope),generationKey:tc(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}),Iy=(e,t)=>({scope:mc(e.scope),messageID:e.messageID,info:pc(t.info),parts:pc(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}}),Ly=async(e,t)=>{let n=await e.getIndex(t),r=await e.getContent(t);if(n&&r)return Iy(n,r);n&&await e.deleteIndex(t),r&&await e.deleteContent(t)},Ry=async(e,t)=>{await e.deleteIndex(t),await e.deleteContent(t)},zy=(e,t)=>new Promise((n,r)=>{e.onsuccess=()=>n(e.result),e.onerror=()=>r(e.error??t.error??Error(`IndexedDB request failed`))}),By=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){n(new Py(`database-unavailable`));return}let r=indexedDB.open(e,jy),i=!1,a=()=>{i||(i=!0,n(new Py(`database-unavailable`)))};r.onupgradeneeded=()=>{let e=r.result;if(!e.objectStoreNames.contains(My)){let t=e.createObjectStore(My,{keyPath:`id`});t.createIndex(`scopeKey`,`scopeKey`,{unique:!1}),t.createIndex(`generationKey`,`generationKey`,{unique:!1}),t.createIndex(`lastAccessedAt`,`lastAccessedAt`,{unique:!1})}e.objectStoreNames.contains(Ny)||e.createObjectStore(Ny,{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}),Vy=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){t();return}let r=indexedDB.deleteDatabase(e);r.onsuccess=()=>t(),r.onerror=()=>n(r.error??new Py(`database-unavailable`)),r.onblocked=()=>void 0}),Hy=(e=Ay)=>({transaction:async t=>{let n=await By(e),r=n.transaction([My,Ny],`readwrite`),i=r.objectStore(My),a=r.objectStore(Ny),o=e=>zy(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:()=>Vy(e)});function Uy(e,t={}){let n=hc(t.now??Date.now),r=async(e,t)=>(t.lastAccessedAt=n(),await e.putIndex(Fy(t)),gc(t));return{async readSession(t){return e.transaction(async e=>{let r=await e.getIndexesByScope($s(t)),i=[];for(let t of r){let r=await e.getContent(t.id);if(!r){await e.deleteIndex(t.id);continue}let a=Iy(t,r);a.lastAccessedAt=n(),await e.putIndex(Fy(a)),i.push(a)}return _c(t,i)})},async readMessage(t,n){return e.transaction(async e=>{let i=await Ly(e,ec(t,n));if(i)return r(e,i)})},async upsertSettled(t,i,a){let o=vc({info:i,incomingCompleteness:oc(a)});if(o.status===`skipped`&&o.reason===`not-settled`)return{status:`skipped`,reason:`not-settled`};let s=pc(a.slice()),c=oc(s),l=await lc(i,s),u=ec(t,i.id);return e.transaction(async e=>{let a=await Ly(e,u),o=vc({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:gc(a)}:o.reason===`unchanged`&&a?{status:`skipped`,reason:`unchanged`,record:await r(e,a)}:{status:`skipped`,reason:o.reason};let d={scope:mc(t),messageID:i.id,info:pc(i),parts:s,partCompleteness:s.map(ac),completeness:c,contentHash:l.hash,byteSize:l.byteSize,lastAccessedAt:n(),sortKey:rc(i)};return await e.putIndex(Fy(d)),await e.putContent({id:u,info:pc(i),parts:s}),{status:`written`,record:gc(d)}})},async removeMessage(t,n){await e.transaction(e=>Ry(e,ec(t,n)))},async clearSession(t){await e.transaction(async e=>{let n=await e.getIndexesByScope($s(t));for(let t of n)await Ry(e,t.id)})},async clearGeneration(t){await e.transaction(async e=>{let n=await e.getIndexesByGeneration(tc(t));for(let t of n)await Ry(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($s)),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?nc(e.sortKey,t.sortKey):e.lastAccessedAt-t.lastAccessedAt),c=0,l=0;for(let t of s){if(o<=r)break;await Ry(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 Wy(e={}){return Uy(e.driver??Hy(e.databaseName),e)}function Gy(e={}){let t=e.isDesktopShell??se,n=e.isDesktopLocalOriginActive??ce,r=e.isVSCodeRuntime??v,i=e.isCapacitorApp??ft;return r()||i()?`indexeddb`:t()&&n()?`http`:`indexeddb`}var Ky=async e=>{let t=(await Promise.allSettled(e)).find(e=>e.status===`rejected`);if(t)throw t.reason};function qy(e={}){let t,n,r=()=>(t??=(e.createHttpStore??ky)(),t),i=()=>(n??=(e.createIndexedDBStore??Wy)(),n),a=()=>Gy(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=>Ky([r().clearGeneration(e),i().clearGeneration(e)]),evictToBytes:(e,t)=>a().evictToBytes(e,t),clearAll:()=>a().clearAll(),destroy:async()=>{}}}async function Jy(e={}){await qy(e).clearAll()}var Yy=(e,t)=>e<t?-1:+(e>t);function Xy(e){return e.filter(e=>!!e?.id).sort((e,t)=>Yy(e.id,t.id))}async function Zy(e){let t=e.before?`prepend`:e.purpose??`initial`,n=t===`prepend`||t===`recovery`||t===`materialize`?t:`initial`,i=await Mg({sessionID:e.sessionID,directory:e.directory,purpose:n,...e.before?{before:e.before}:{},signal:e.signal}),a=i.records.map(e=>({info:sp(e.info),parts:Xy(e.parts??[])}));if(!e.before&&!i.complete&&ey(a).length>0){let t=B.getScopedSdkClient(e.directory);a=(await ty({records:a,complete:i.complete,requestMessage:async n=>{let i=await Qv({transport:r(),generation:s(),directory:e.directory,sessionID:e.sessionID,messageID:n,request:()=>t.session.message({sessionID:e.sessionID,messageID:n,directory:e.directory})});return{info:i.info,parts:Xy(i.parts??[])}}})).records.map(e=>({info:e.info,parts:Xy(e.parts??[])}))}return{records:a,cursor:i.cursor??void 0,complete:i.complete,turnCount:i.turnCount,requestedTurnLimit:e.limit}}function Qy(e){let t=e.client??L,n=yg(),i=wg({client:t,activeRegistry:n}),a=ly({client:t,cacheBudget:i,activeRegistry:n,probe:{getTransport:r,getGeneration:s},fetcher:e=>Zy({directory:e.directory,sessionID:e.sessionID,limit:e.limit,before:e.before,signal:e.signal}),initialLimit:qm(),historyLimit:Jm(),durableStore:e.durableStore??qy()}),o=Bv({client:t,repository:a,listDirectories:()=>Array.from(e.childStores.children.keys()),getBusyOrRetrySessionIDs:t=>{let n=e.childStores.getChild(t);if(!n)return[];let r=n.getState().session_status??{},i=[];for(let[e,t]of Object.entries(r))t&&(t.type===`busy`||t.type===`retry`)&&i.push(e);return i},getViewedSession:()=>e.getViewedSession?.()??null,getViewedSessions:e.getViewedSessions?()=>e.getViewedSessions():void 0,cacheBudget:i,probe:{getTransport:r,getGeneration:s}});return mu(a),Ou(o),{repository:a,destroy:()=>{o.cancelAll(`dispose`),Ou(null),a.destroy(),hu()}}}function $y(e){return gu().apply(U(e.directory,e.sessionID),{type:`http-page`,purpose:e.purpose,page:e.page,capturedLiveRevision:e.capturedLiveRevision,liveRevision:e.liveRevision,skipPartTypes:e.skipPartTypes,optimistic:e.optimistic})}var eb=new Map;function tb(e,t,n,r){return`${n}\0${r}\0${t??``}\0${e}`}async function nb(e,t,n,i={}){let a=i.getTransportIdentity??r,o=i.getGeneration??s,c=a(),l=o(),u=tb(e,t,c,l),d=()=>a()===c&&o()===l,f=eb.get(u)??Promise.resolve(),p,m=new Promise(e=>{p=e}),h=f.catch(()=>void 0).then(()=>m);eb.set(u,h);try{if(await f.catch(()=>void 0),!d())throw Error(`Session history mutation aborted because the runtime changed`);return await n({transportIdentity:c,generation:l,isCurrent:d})}finally{p(),eb.get(u)===h&&eb.delete(u)}}var rb=new Set,ib=new Set,ab=new Set,ob=new Set,sb={onDeleteRequest(e){return rb.add(e),()=>{rb.delete(e)}},requestDelete(e){!e.sessions.length&&e.mode!==`worktree`||rb.forEach(t=>t(e))},onCreateRequest(e){return ib.add(e),()=>{ib.delete(e)}},requestCreate(e){let t=e??{};ib.forEach(e=>e(t))},onDirectoryRequest(e){return ab.add(e),()=>{ab.delete(e)}},requestDirectoryDialog(){ab.forEach(e=>e())},onGitRefreshHint(e){return ob.add(e),()=>{ob.delete(e)}},requestGitRefresh(e){e.directory.trim()&&ob.forEach(t=>t(e))}},cb=e=>e.trim(),lb=(e,t,n)=>{let i=(n.getTransport??r)(),a=(n.getGeneration??s)();if(i!==e||a!==t)throw Error(`session status runtime changed`)},ub=(e,t={})=>{let n=cb(e),i=t.transport??r(),a=t.loadSnapshot??((e,t)=>B.getSessionStatusForDirectory(e,t)),o=t.now??Date.now,c=t.runtimeProbe??{},l=(c.getGeneration??s)();return nt({queryKey:N.sessionStatus.snapshot(n,i),queryFn:async({signal:e})=>{lb(i,l,c);let t=o(),r=await a(n,e);if(lb(i,l,c),r===null)throw Error(`session status snapshot unavailable`);return{snapshot:r,requestedAt:t}},staleTime:0,gcTime:3e5,retry:!1})},db=(e,t={})=>{let{client:n=L,...r}=t;return n.fetchQuery(ub(e,r))},fb=(e,t,n)=>{let i=(n.getTransport??r)(),a=(n.getGeneration??s)();if(i!==e||a!==t)throw Error(`session active runtime changed`)},pb=(e={})=>{let t=e.transport??r(),n=e.loadActive??(e=>B.getSessionActive(e)),i=e.now??Date.now,a=e.runtimeProbe??{},o=(a.getGeneration??s)();return nt({queryKey:N.sessionActive.snapshot(t,o),queryFn:async({signal:e})=>{fb(t,o,a);let r=i(),s=await n(e);return fb(t,o,a),{result:s,requestedAt:r}},staleTime:0,gcTime:3e5,retry:!1})},mb=(e={})=>{let{client:t=L,...n}=e;return t.fetchQuery(pb(n))},hb;function gb(e){hb=e}function _b(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 vb(e,t){return JSON.stringify(e)===JSON.stringify(t)}function yb(e,t){return e.type===`retry`&&typeof e.next==`number`&&e.next>t}function bb(e,t,n=Date.now()){return e.getState().session_status?.[t]?.type===`retry`&&(e.setState(e=>({session_status:{...e.session_status,[t]:{type:`busy`}},session_status_observed_at:{...e.session_status_observed_at,[t]:n}})),!0)}function xb(e,t,n,r=Date.now()){if(!e||e.state===`unsupported`||e.state===`unknown`)return t?{snapshot:t,source:`legacy`}:{snapshot:null,source:`none`};let i=e.membership,a=t??{},o=new Set([...n,...Object.keys(a)]);if(o.size===0)return{snapshot:null,source:`none`};let s={};for(let e of o){let t=Object.prototype.hasOwnProperty.call(i,e),n=_b(a[e]);if(t){s[e]=n&&yb(n,r)?n:{type:`busy`};continue}s[e]=(n?.type===`retry`||n?.type===`busy`||n?.type,{type:`idle`})}return{snapshot:s,source:`fused`}}function Sb(e,t,n,r){if(n.length===0)return!1;let i=!1;return e.setState(e=>{let a=e.session_status??{},o,s,c=()=>o??={...a},l=()=>s??={...e.session_status_observed_at},u=t=>{r!==void 0&&e.session_status_observed_at[t]!==r&&(l()[t]=r,i=!0)};for(let o of n){if(r!==void 0&&(e.session_status_observed_at[o]??-1/0)>=r)continue;let n=_b(t[o]);if(n&&n.type!==`idle`){vb(a[o],n)||(c()[o]=n,i=!0),u(o);continue}let s=a[o];(!s||s.type!==`idle`)&&(c()[o]={type:`idle`},i=!0),u(o)}return!o&&!s?e:{...o?{session_status:o}:{},...s?{session_status_observed_at:s}:{}}}),i}function Cb(e,t){return Array.from(new Set([...e,...Object.keys(t)]))}async function wb(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 db(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 mb({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}=xb(l,h,n);if(!_||v===`none`)return null;let y=[c?.requestedAt,u].filter(e=>typeof e==`number`&&Number.isFinite(e));if(y.length===0)return null;let b=Math.min(...y),x=Cb(n,_);if(x.length===0)return null;t.setState({session_status_snapshot_at:b}),Sb(t,_,x,b);let S=r.onAuthoritativeGlobalStatusConverge??hb;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 Tb({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:wb(e,n,[t],{isStale:s,loadSnapshot:c,loadActive:l,now:u,queryClient:d,runtimeProbe:f,transport:p,skipActive:m})}var Eb=50,Db=e=>{let t=Object.keys(e);if(t.length<=Eb)return e;let n=t.map(t=>[t,e[t].touchedAt]).sort((e,t)=>e[1]-t[1]).slice(0,t.length-Eb).map(([e])=>e),r={...e};for(let e of n)delete r[e];return r},Ob=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:Db(r)})})},getSessionTodos:e=>{if(e)return t().sessions[e]?.todos}}),{name:`openchamber-session-todos`,version:1,storage:h(),partialize:e=>({sessions:e.sessions})}),{name:`TodosPersistStore`})),kb=new Set([`todowrite`,`todoread`]),Ab=new Set([`error`,`aborted`,`failed`,`cancelled`,`canceled`,`timeout`]),jb=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),Mb=(e,t)=>{Ob.getState().setSessionTodos(e,t)},Nb=e=>{if(e.type!==`tool`)return``;let t=e.tool;return typeof t==`string`?t.trim().toLowerCase():``},Pb=e=>{let t=e.state;return typeof t?.status==`string`?t.status.trim().toLowerCase():void 0},Fb=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},Ib=e=>{if(!Array.isArray(e))return[];let t=[];for(let n of e){let e=Fb(n);e&&t.push(e)}return t},Lb=e=>{try{let t=JSON.parse(e);if(Array.isArray(t))return Ib(t);if(t&&typeof t==`object`)return Ib(t.todos)}catch{}return[]},Rb=e=>{if(!kb.has(Nb(e)))return[];let t=Pb(e);if(t&&Ab.has(t))return[];let n=e.state,r=Ib(n?.input?.todos);if(r.length>0)return r;let i=n?.output;if(Array.isArray(i)){let e=Ib(i);if(e.length>0)return e}if(i&&typeof i==`object`){let e=Ib(i.todos);if(e.length>0)return e}return typeof i==`string`&&i.trim().length>0?Lb(i):[]};function zb(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=Rb(r[e]);if(t.length>0)return t}}return[]}function Bb(e){if(!e.sessionID||e.isStale?.()||jb(e.store.getState().todo,e.sessionID))return!1;let t=zb(e.transcript);return t.length===0||e.isStale?.()||jb(e.store.getState().todo,e.sessionID)?!1:(e.store.setState(n=>({todo:{...n.todo,[e.sessionID]:t}})),e.persist?.(e.sessionID,t),!0)}function Vb(e){if(!e.sessionID||!e.directory||e.isStale?.())return!1;let t=e.transcript??H()?.getTranscript(U(e.directory,e.sessionID));return t?Bb({sessionID:e.sessionID,store:e.store,transcript:t,persist:Mb,isStale:e.isStale}):!1}var Hb=t({COMBINED_SEND_CONFIRMATION_RECOVERY:()=>VS,COMBINED_SEND_PRESENCE_GRACE_MS:()=>BS,SESSION_DELETE_UNDO_MS:()=>dS,abortBusySessionForMessageEdit:()=>tC,abortCurrentOperation:()=>KS,archiveSession:()=>xS,beginOptimisticSend:()=>jS,cancelScheduledSessionDeletes:()=>bS,classifySendFailure:()=>Fx,combinedSendConfirmationOptions:()=>HS,commitMessageEdit:()=>rC,createSession:()=>aS,deleteSession:()=>vS,dirStoreForDirectory:()=>bx,dismissOpenQuestionsForSession:()=>XS,ensureSentUserMessagePresence:()=>GS,fetchMessagesForSession:()=>lC,fetchRecentSendConfirmationRecords:()=>RS,forkSession:()=>sC,getSendFailureKind:()=>Nx,getSessionLastAssistantModel:()=>Ex,isQuestionRequestNotFoundError:()=>nS,materializeConfirmedSendRecords:()=>zS,mirrorSessionIntoLiveStores:()=>Ox,optimisticInsertUserMessage:()=>IS,optimisticSend:()=>FS,patchSessionMetadata:()=>oS,refetchSessionMessages:()=>aC,rejectQuestion:()=>YS,releaseUnconfirmedQueueSend:()=>_x,requestSessionSmartTitle:()=>wS,resolveForkMessageId:()=>tx,respondToPermission:()=>qS,respondToQuestion:()=>JS,revertToMessage:()=>ZS,rollbackOptimisticSend:()=>NS,scheduleSessionDeletes:()=>yS,setActionRefs:()=>hx,setOptimisticRefs:()=>gx,settleOptimisticSend:()=>PS,shareSession:()=>TS,shouldSuppressForkCopyEvent:()=>rx,stageMessageEdit:()=>$S,trackForkCopySessionCreated:()=>Zb,unarchiveSession:()=>SS,unrevertSession:()=>oC,unshareSession:()=>ES,updateSessionTitle:()=>CS,waitForConnectionOrThrow:()=>zx,waitForSessionIdleForMessageEdit:()=>nC}),Ub=2,Wb=150,Gb=new Set([`patch`,`step-start`,`step-finish`]),Kb=3,qb=150,Jb=null,Yb=new Map,Xb=3e4;function Zb(e,t){let n=t?.id;!Jb||Jb.runtimeKey!==i()||Jb.directory!==e||!n||t?.title!==Jb.expectedTargetTitle||n===Jb.sourceSessionID||Jb.targetSessionID||(Jb.targetSessionID=n)}function Qb(e){let t=e.match(/^(.+) \(fork #(\d+)\)$/);return t?`${t[1]} (fork #${Number.parseInt(t[2],10)+1})`:`${e} (fork #1)`}async function $b(e,t){$.setState(n=>n.forkTransition?.operationId===e?{forkTransition:{...n.forkTransition,stage:t}}:n),await new Promise(e=>setTimeout(e,0))}function ex(e,t){$.setState(n=>n.forkTransition?.operationId===e?{forkTransition:{...n.forkTransition,targetSessionId:t}}:n)}function tx(e,t,n){if(e){let n=t.findIndex(t=>t.id===e);return n===-1||t[n]?.role!==`assistant`?e:t[n+1]?.id}if(!n||n.type===`idle`)return e;for(let e=t.length-1;e>=0;--e)if(t[e]?.role===`user`)return t[e].id}async function nx(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 B.updateSession(e.id,{metadata:{...n,openchamber:{...r,titleRefresh:{...i,activityUpdatedAt:Date.now()}}}},t)}function rx(e,t,n){if(Jb&&Jb.runtimeKey===i()&&Jb.directory===e&&t&&t===Jb.targetSessionID)return!0;if(!t||!n)return!1;let r=`${i()}:${e}:${t}`,a=Yb.get(r);return a?a.expiresAt<=Date.now()?(Yb.delete(r),!1):n<=a.messageID:!1}var ix=null,ax=null,ox=()=>``,sx=new Map,cx=null,lx=null,ux=null,dx=e=>new Promise(t=>setTimeout(t,e));function fx(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 px(e,t){if(!e.error)return e.data;let n=e.response?.status,r=Error(`${t} failed${n?` (${n})`:``}: ${fx(e.error)}`);throw n!==void 0&&(r.status=n),r}function mx(e,t){let n=px(e,t);if(n==null)throw Error(`${t} failed: empty response`);return n}function hx(e,t,n){if(ix=e,ax=t,ox=n,sx.size>0){let e=[...sx.values()];sx.clear(),queueMicrotask(()=>{for(let t of e)lC(t.sessionID,t.directory)})}}function gx(e,t,n){cx=e,lx=t,ux=n??null}function _x(e){let t=e.directory??null;lx?.({sessionID:e.sessionID,directory:t,messageID:e.messageID})}function vx(){if(!ix)throw Error(`SDK not initialized — is SyncProvider mounted?`);return ix}function yx(){if(!ax)throw Error(`Child stores not initialized`);let e=ox();if(!e)throw Error(`No current directory`);return ax.ensureChild(e)}function bx(e,t){if(!ax)throw Error(`Child stores not initialized`);if(!e)throw Error(`No directory`);return ax.ensureChild(e,t)}function xx(e,t){let n=t??Gx(e);return n?{store:bx(n),directory:n}:{store:yx(),directory:kx()}}function Sx(e,t){let{store:n,directory:r}=xx(e,t??void 0),i=r??kx()??``;return{repository:H()??_u(i,n),directory:i,store:n}}function Cx(e,t){let{repository:n,directory:r,store:i}=Sx(e,t);return{repository:n,directory:r,store:i,data:n.getTranscript(U(r,e))}}function wx(e,t){return Uu(Cx(e,t).data)}function Tx(e,t){return Cx(e,t).data.messageOrder.length}function Ex(e){try{let t=wx(e);for(let e=t.length-1;e>=0;--e){let n=t[e];if(n?.role===`assistant`&&typeof n.providerID==`string`&&n.providerID&&typeof n.modelID==`string`&&n.modelID)return{providerID:n.providerID,modelID:n.modelID}}return null}catch{return null}}function Dx(e,t){let n=ax;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]=pE(e,n[r]),t.setState({session:i}),!0}return!1}function Ox(e,t){t&&Dx(e,t)||Dx(e)}function kx(){return ox()||void 0}function Ax(){let{hasEverConnected:e,lastDisconnectReason:t}=G.getState(),n=t?` (${t})`:e?``:` (never connected)`;return Error(`Connection lost${n}. Please wait for reconnection.`)}function jx(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 Mx=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 Nx(e){return e instanceof Mx?e.kind:null}function Px(e){let t=jx(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 Fx(e,t){return t?Px(e)||jx(e)===null?`ambiguous-dispatched`:`definitive-rejection`:`pre-dispatch`}var Ix=2e3,Lx=5e3,Rx=3e4;async function zx(){let e=km();e&&Om(`send_stream_stale`);let t=Date.now()+(e?Lx:Ix);for(;Date.now()<t;){if(G.getState().isConnected&&!km()||o()&&!km())return;let e=t-Date.now();if(e<=0)break;if(await G.getState().probeConnection({timeoutMs:Math.min(500,e)})&&!km())return;let n=Math.min(100,t-Date.now());n>0&&await new Promise(e=>setTimeout(e,n))}throw Ax()}function Bx(e){return new Promise((t,n)=>{let r=setTimeout(()=>{Om(`send_timeout`),n(new DOMException(`Send timed out`,`TimeoutError`))},Rx);e.then(e=>{clearTimeout(r),t(e)},e=>{clearTimeout(r),n(e)})})}function Vx(e){let t=Y.getState();return[...t.activeSessions,...t.archivedSessions].find(t=>t.id===e)??null}function Hx(e){e&&Y.getState().upsertSession(e)}function Ux(e,t){let n=ap(t),r=[...e.getState().session],i=ss.search(r,n.id,e=>e.id);if(i.found){let t=pE(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 Wx(e,t,n){let r=t.getState().session.find(t=>t.id===e);if(r)return r;let i=Vx(e);if(i)return Ux(t,i);try{return Ux(t,await B.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 Gx(e){return Kx(e)||$.getState().getDirectoryForSession(e)||kx()}function Kx(e){let t=ax;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 qx(e){let t=e?$.getState().getDirectoryForSession(e):null;return t?B.getScopedSdkClient(t):vx()}function Jx(e){Dr.getState().clearAttachedFiles();for(let t of e){let e=typeof t.url==`string`?t.url:``,n=typeof t.mime==`string`?t.mime:`application/octet-stream`,r=typeof t.filename==`string`?t.filename:`attachment`;e&&Dr.getState().addRestoredAttachment({url:e,mimeType:n,filename:r})}}var Yx=()=>new Map(Array.from(Md(),([e,t])=>[e,t.title||e]));function Xx(e){return!(e.type!==`file`||Yp(e))}function Zx(e){return Xx(e)?e.slim===!0||typeof e.url!=`string`||e.url.length===0:!1}function Qx(e){return e.some(Zx)}async function $x(e){let t=[...e.parts];if(!Qx(t))return t;let n=s(),r=e.directory??``;try{await wu(r,e.sessionID,e.messageID,{priority:`user`})}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(`composer-restoration-materialize-failed: ${t}`)}if(e.isCurrent&&!e.isCurrent()||s()!==n)throw Error(`Session history mutation aborted because the runtime changed`);let{repository:i,directory:a}=Sx(e.sessionID,r);if(t=[...i.getParts(U(a,e.sessionID),e.messageID)],Qx(t))throw Error(`composer-restoration-incomplete-attachment`);return t}async function eS(e){if(Qx(e.parts))throw Error(`composer-restoration-incomplete-attachment`);let t=await um(e.parts,{sessionTitles:Yx(),directory:e.directory}),n=Dr.getState(),r=n.getDraft(e.key);return{payload:t,commit:await hm({key:e.key,expectedRevision:r?.revision??`absent`,payload:t,runtime:n.captureDraftRuntime()})}}function tS(e,t,n){let r=ax;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 rS(e,t){let n=ax;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 iS(e,t,n){let r=tS(e,t,n);return r?B.getScopedSdkClient(r):qx(t)}async function aS(e,t,n,r){try{let i=await B.createSession({title:e,parentID:n??void 0,metadata:r},t??kx()),a=i.directory??null;return a&&wd(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 oS(e,t,n){let r=t??Gx(e),i=n(Fp(await B.getSession(e,r))),a=await B.updateSession(e,{metadata:i},r);Y.getState().upsertSession(a);let o=a.directory??r;return o&&wd(a.id,o),a}async function sS(e,t){let n;try{n=await B.getSession(e,t??Gx(e))}catch{return}if(!zp(n))return;let r=Rp(n);if(r)try{await oS(r,t??Gx(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 cS(e,t){if(!ax)return[];let n=[],r=new Set,i=[];if(t){let e=ax.children.get(t);e&&(i.push([t,e]),r.add(t))}for(let e of ax.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 lS(e){if(ax)for(let t of e){let e=ax.children.get(t.directory);e&&e.setState({session:t.sessions})}}function uS(e){$.getState().setWorktreeMetadata(e,null)}var dS=1e4,fS=new Map,pS=0;function mS(e){if(e.time?.archived===void 0)return e;let t={...e.time};return delete t.archived,{...e,time:t}}function hS(e){Y.getState().clearSessionsPendingDeletion([e.sessionId]),lS(e.listSnapshots),Hx(e.globalSnapshot),e.wasCurrent&&$.getState().setCurrentSession(e.sessionId,e.directory??null)}function gS(e,t){let n=t??Gx(e);Y.getState().markSessionsPendingDeletion([e]);let r=cS(e,n),i=Vx(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 _S(e,t){try{if(await sS(e,t),await B.deleteSession(e,t)!==!0)throw Error(`session.delete failed: server did not confirm deletion`);return cS(e,t),Y.getState().removeSessions([e]),uS(e),Y.getState().clearSessionsPendingDeletion([e]),!0}catch(n){return console.error(`[session-actions] commitRemovedSessionDelete failed`,n),n?.status===404&&(cS(e,t),Y.getState().removeSessions([e]),uS(e),Y.getState().clearSessionsPendingDeletion([e]),!0)}}async function vS(e,t){let n=gS(e);return await _S(e,n.directory)?!0:(hS(n),!1)}function yS(e,t){let n=Array.from(new Set(e.filter(Boolean)));if(n.length===0)return{batchId:``,scheduledIds:[]};let r=n.map(e=>gS(e)),i=`session-delete-${Date.now()}-${pS+=1}`,a=t?.delayMs??1e4,o=setTimeout(()=>{(async()=>{let e=fS.get(i);if(!e)return;fS.delete(i);let t=[],n=[];for(let r of e.entries)await _S(r.sessionId,r.directory)?t.push(r.sessionId):(n.push(r.sessionId),hS(r));e.onSettled?.({deletedIds:t,failedIds:n})})()},a);return fS.set(i,{entries:r,timer:o,onSettled:t?.onSettled}),{batchId:i,scheduledIds:n}}function bS(e){if(!e)return!1;let t=fS.get(e);if(!t)return!1;clearTimeout(t.timer),fS.delete(e);for(let e of[...t.entries].reverse())hS(e);return!0}async function xS(e){let t=Gx(e),n=cS(e,t),r=Vx(e),i=Date.now();Y.getState().archiveSessions([e],i);let a=$.getState();a.currentSessionId===e&&a.setCurrentSession(null);try{await sS(e,t);let n=await B.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),lS(n),Hx(r),!1}}async function SS(e){let t=Gx(e),n=Vx(e),r=n?mS(n):null;if(r&&(Y.getState().upsertSession(r),t&&ax)){let e=ax.children.get(t);e&&Ux(e,r)}try{let n=await B.updateSession(e,{time:{archived:0}},t);if(!n)throw Error(`session.update failed: server did not return the unarchived session`);let r=mS(n);if(Y.getState().upsertSession(r),t&&ax){let e=ax.children.get(t);e?Ux(e,r):Ox(r,t)}else Ox(r,t);return!0}catch(r){return console.error(`[session-actions] unarchiveSession failed`,r),n&&(Y.getState().upsertSession(n),n.time?.archived&&cS(e,t)),!1}}async function CS(e,t){let n=Gx(e),r=Vx(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 B.updateSession(e,{title:t,metadata:{...i,openchamber:{...a,titleRefresh:{...o,activityUpdatedAt:s}}}},n);Y.getState().upsertSession(c),Ox(c,n)}async function wS(e){let t=Gx(e),n=Vx(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 B.updateSession(e,{metadata:{...r,openchamber:{...i,titleRefresh:{...a,...o?{lastAutoTitle:o}:{},requestedAt:Date.now()}}}},t);Y.getState().upsertSession(s),Ox(s,t)}async function TS(e){let t=Gx(e),n=ap(mx(await vx().session.share({sessionID:e,directory:t}),`session.share`));return Y.getState().upsertSession(n),Dx(n,t),n}async function ES(e){let t=Gx(e),n=ap(mx(await vx().session.unshare({sessionID:e,directory:t}),`session.unshare`));return Y.getState().upsertSession(n),Dx(n,t),n}function DS(e){let t=ax,n=e??ox();if(!t||!n)return{store:e?bx(e):yx(),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 OS(){return{identity:r(),generation:s()}}function kS(e,t){return e.isCurrent()&&r()===t.identity&&s()===t.generation}function AS(e,t){if(!kS(e,t))throw Error(`Send target changed before transport dispatch`)}function jS(e){if(!cx||!lx)throw new Mx(`pre-dispatch`,Error(`Optimistic refs not set — is useSync() mounted?`));try{let t=e.directory??kx()??null,n=DS(t),r=OS();AS(n,r),e.beforeOptimisticInsert?.(),AS(n,r);let i=e.messageID??ge(`msg`);return e.onMessageID?.(i),$.getState().markMessageSending?.(e.sessionId,i),IS({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 Mx?e:new Mx(Nx(e)??Fx(e,!1),e)}}function MS(e){if(!kS(e.capture,e.transport)||!lx)return;lx({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 NS(e){MS(e),$.getState().clearMessageSending?.(e.sessionId,e.messageID)}async function PS(e){if(!cx||!lx)throw new Mx(`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 zx(),AS(n,r),s=!0,await Bx(e.send(i)),!kS(n,r))throw new Mx(`ambiguous-dispatched`,Error(`Send target changed after transport dispatch`),i);e.onSendConfirmed?.(i)}catch(c){let l=Nx(c)??Fx(c,s),u=c instanceof Mx?c:new Mx(l,c,i);if(!kS(n,r))throw u;let d=l===`ambiguous-dispatched`&&!e.preserveOptimisticOnAmbiguous?await RS(a,i,o):null;if(d&&kS(n,r)){zS(n.store,a,i,d,{directory:o??void 0}),ux?.({sessionID:a,directory:o,messageID:i});return}throw e.preserveOptimisticOnAmbiguous&&l===`ambiguous-dispatched`||MS(t),u}finally{$.getState().clearMessageSending?.(a,i)}}async function FS(e){await PS({ticket:e.ticket??jS({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 IS(e){if(!cx)return!1;let t=e.directory??kx(),n=t?bx(t):yx(),i=t??kx()??``;if(US(n,e.sessionId,e.messageID,i)){let t=n.getState(),r=Date.now();return n.setState({session_status:{...t.session_status,[e.sessionId]:{type:`busy`}},session_status_observed_at:{...t.session_status_observed_at,[e.sessionId]:r}}),!1}let a=e.parts?e.parts.map(t=>({...t,id:typeof t.id==`string`&&t.id?t.id:ge(`prt`),messageID:e.messageID,sessionID:e.sessionId,__openchamberOptimistic:!0})):[{id:ge(`prt`),type:`text`,text:e.content,messageID:e.messageID,sessionID:e.sessionId,__openchamberOptimistic:!0}];if(!e.parts&&e.files)for(let t of e.files)a.push({id:ge(`prt`),messageID:e.messageID,sessionID:e.sessionId,type:`file`,mime:t.mime,url:t.url,filename:t.filename,__openchamberOptimistic:!0});let o=Date.now(),c={id:e.messageID,role:`user`,sessionID:e.sessionId,parentID:``,modelID:e.modelID,providerID:e.providerID,system:``,agent:e.agent??``,model:`${e.providerID}/${e.modelID}`,metadata:{},time:{created:o,completed:0}},l=wv(()=>Cx(e.sessionId,t).data);cx({sessionID:e.sessionId,directory:t,message:c,parts:a});let u=wv(()=>Cx(e.sessionId,t).data);try{l&&u&&Tv({trigger:`user-send`,sessionID:e.sessionId,directory:i,transport:r(),generation:s(),before:l,after:u})}catch{}let d=n.getState();return n.setState({session_status:{...d.session_status,[e.sessionId]:{type:`busy`}},session_status_observed_at:{...d.session_status_observed_at,[e.sessionId]:o}}),!0}function LS(e){if(!e)return!0;try{return e()===!0}catch{return!1}}async function RS(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??Ub,c=r?.retryDelayMs??Wb;try{for(let a=0;a<s;a+=1){if(i?.signal.aborted||!LS(r?.isCurrent)||a>0&&(await dx(c),i?.signal.aborted||!LS(r?.isCurrent)))return null;try{let a=await vx().session.messages({sessionID:e,directory:n??void 0,limit:Zm(),...i?{signal:i.signal}:{}});if(!LS(r?.isCurrent))return null;let o=(px(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 zS(e,t,n,r,i){if(!r.length)return;let a=i?.directory??Gx(t)??ox(),o=U(a,t),s={type:`materialize-snapshots`,records:r.map(e=>({info:sp(e.info),parts:e.parts??[]})),skipPartTypes:Gb,merge:i?.gapFillOnly===!0?qs:Ys({purpose:`recovery`})};yu(o,s)||_u(a,e).apply(o,s)}var BS=2e3,VS={attempts:12,retryDelayMs:500},HS={presenceGraceMs:BS,recovery:{...VS}};function US(e,t,n,r){let i=r??Gx(t)??ox()??``,a=H()??_u(i,e),o=U(i,t);return a.getMessage(o,n)?a.getParts(o,n).length>0:!1}function WS(e,t,n,r){let i=r?.directory??Gx(t)??ox()??``;if(US(e,t,n,i))return Promise.resolve(!0);if(!LS(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=U(i,t);c.unsubscribe=d.subscribe(f,()=>{if(!LS(r?.isCurrent)){l(!1);return}US(e,t,n,i)&&l(!0)}),US(e,t,n,i)&&l(!0)})}async function GS(e){let{store:t,sessionId:n,messageID:r,directory:i,isCurrent:a}=e;if(await WS(t,n,r,{timeoutMs:e.graceMs??HS.presenceGraceMs,isCurrent:a,directory:i}))return`present`;if(!LS(a))return`cancelled`;let o=await RS(n,r,i,{...HS.recovery,isCurrent:a});return o?LS(a)?(zS(t,n,r,o,{gapFillOnly:!0,directory:i??void 0}),`recovered`):`cancelled`:LS(a)?`missing`:`cancelled`}async function KS(e){let{store:t,directory:n}=xx(e),i=n?{state:`bound`,transportIdentity:r(),directory:n,sessionID:e}:null,a=i?$.getState().beginQueueAbortBlock(i):null;try{if(mx(await vx().session.abort({sessionID:e,directory:n}),`session.abort`)!==!0)throw Error(`Session abort failed`);let r=t.getState();t.setState({session_status:{...r.session_status,[e]:{type:`idle`}},session_status_observed_at:{...r.session_status_observed_at,[e]:Date.now()}})}catch(t){i&&a&&$.getState().clearQueueAbortBlock(i,a),Xe(async()=>{let{rollbackQueueAbortOptimistic:e}=await Promise.resolve().then(()=>VB);return{rollbackQueueAbortOptimistic:e}},void 0).then(({rollbackQueueAbortOptimistic:t})=>{t(e)}).catch(()=>{}),console.error(`[session-actions] abort failed`,t)}}async function qS(e,t,n){await zx();let r=tS(`permission`,e,t)||Gx(e)||kx();if(mx(await iS(`permission`,e,t).permission.reply({requestID:t,reply:n,...r?{directory:r}:{}}),`permission.reply`)!==!0)throw Error(`Permission reply failed`)}async function JS(e,t,n){await zx();let r=tS(`question`,e,t)||Gx(e)||kx();try{let i=n.length===0?[]:Array.isArray(n[0])?n:[n];if(mx(await iS(`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)&&rS(e,t),n}}async function YS(e,t){await zx();let n=tS(`question`,e,t)||Gx(e)||kx();try{if(mx(await iS(`question`,e,t).question.reject({requestID:t,...n?{directory:n}:{}}),`question.reject`)!==!0)throw Error(`Question rejection failed`)}catch(n){throw nS(n)&&rS(e,t),n}}async function XS(e){if(!e)return!1;let t=ax;if(!t)return!1;let n=[];for(let[,r]of t.children){let t=r.getState(),i=Wp(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)rS(e,t);return await Promise.all(n.map(async({sessionId:e,requestId:t})=>{try{await YS(e,t)}catch(e){if(nS(e))return;console.error(`[session-actions] Failed to dismiss open question on send:`,e)}})),!0}async function ZS(e,t,n){let i=typeof n==`string`?n:n?.directory,a=typeof n==`string`?void 0:n?.draftKey,o=typeof n==`string`||n?.restorePrimaryInput!==!1,s=a!==null&&(a!==void 0||o);return nb(e,i??(()=>{try{return xx(e,i).directory}catch{return i}})(),async({isCurrent:n})=>{let{store:o,directory:c}=xx(e,i);if(!n())throw Error(`Session history mutation aborted because the runtime changed`);let l=o.getState().session_status[e];if(l&&l.type!==`idle`){try{await vx().session.abort({sessionID:e,directory:c})}catch{}if(!n())throw Error(`Session history mutation aborted because the runtime changed`)}let u=wx(e,c).find(e=>e.id===t),d=wx(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}=Sx(e,c),m=[...f.getParts(U(p,e),t)],h=a===void 0?s?C({transportIdentity:r()},e):null:a,g={snapshot:{text:``,attachments:[],syntheticParts:[],mentions:[]},values:new Map},_,v;if(h){try{m=await $x({directory:p,sessionID:e,messageID:t,parts:m,isCurrent:n}),g=await um(m,{sessionTitles:Yx(),directory:c})}catch(e){throw e instanceof Error&&(e.message.startsWith(`composer-restoration-materialize-failed`)||e.message===`composer-restoration-incomplete-attachment`||e.message.includes(`runtime changed`))?e:Error(`composer-restoration-invalid-payload`)}if(!n())throw Error(`Session history mutation aborted because the runtime changed`)}let y=o.getState(),b=y.session.find(t=>t.id===e)?.revert,x=[...y.session],S=x.findIndex(t=>t.id===e),w={};if(S>=0&&(x[S]={...x[S],revert:{messageID:t}},w.session=x),!n())throw Error(`Session history mutation aborted because the runtime changed`);if(o.setState(w),h){let t=Dr.getState(),r=await hm({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 _m({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 B.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 _m({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&&sb.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 _m({key:h,restoredRevision:_,previous:v})):t instanceof Error&&t.message.includes(`runtime changed`)||(o.setState({session:r}),h&&v&&_!==void 0&&await _m({key:h,restoredRevision:_,previous:v}).catch(()=>void 0)),t}})}function QS(e,t,n,i){let a=i??Gx(t)??ox(),o=U(a,t),c=wv(()=>Cx(t,a).data),l=[...vu(t)];l.some(e=>e.directory===a&&e.sessionID===t)||l.push(o);let u=!1;for(let e of l)yu(e,{type:`remove-message`,messageID:n})!=null&&(u=!0);u||_u(a,e).apply(o,{type:`remove-message`,messageID:n});let d=wv(()=>Cx(t,a).data);try{c&&d&&Tv({trigger:`user-delete`,sessionID:t,directory:a,transport:r(),generation:s(),before:c,after:d})}catch{}}async function $S(e,t,n,i){let a=n?.info,o=n?.parts,s=i?.directory,c;if(n){let r=n.info;if(r.id!==t||r.sessionID!==e||r.role!==`user`)throw Error(`The selected user message is unavailable`);c=xx(e,s).directory}else{c=xx(e,s).directory;let{data:n}=Cx(e,c),r=Uu(n),i=r.findIndex(e=>e.id===t),l=i>=0?r[i]:void 0;if(!l||l.role!==`user`)throw Error(`The selected user message is unavailable`);a=l,o=Object.prototype.hasOwnProperty.call(n.partsByMessageID,t)?[...n.partsByMessageID[t]??[]]:void 0}if(!a||n&&o===void 0)throw Error(`The selected user message is unavailable`);let l=i?.draftKey??C({transportIdentity:r()},e),{commit:u}=await eS({key:l,parts:await $x({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 _m({key:l,restoredRevision:d,previous:f})).status})}}function eC(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 tC(e,t){let n=t?.directory,{store:r,directory:i}=xx(e,n),a=r.getState().session_status[e];if(!(!a||a.type===`idle`))try{await vx().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}=xx(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 rC(e,t,n){let i=n?.directory,a=n?.preserveMessageId??$.getState().pendingSendMessageIDs.get(e),{store:o,directory:c}=xx(e,i),l=wv(()=>Cx(e,i).data);try{await tC(e,{directory:i}),await nC(e,{directory:i});let n=new Set((await iC(e,i)).map(e=>e.id)),r=eC(t,wx(e,i),n,{preserveMessageId:a});for(let t of[...r].reverse())await B.deleteSessionMessage(e,t.id,c),QS(o,e,t.id,c)}finally{try{let t=wv(()=>Cx(e,i).data);l&&t&&Tv({trigger:`user-edit`,sessionID:e,directory:c,transport:r(),generation:s(),before:l,after:t})}catch{}}}async function iC(e,t){let{directory:n}=xx(e,t);return(px(await vx().session.messages({sessionID:e,directory:n,limit:Xm()}),`session.messages`)??[]).filter(e=>!!e?.info?.id).map(e=>sp(e.info))}async function aC(e,t){let{store:n,directory:i}=xx(e,t),a=wv(()=>Cx(e,t).data),o=(px(await vx().session.messages({sessionID:e,directory:i,limit:Xm()}),`session.messages`)??[]).filter(e=>!!e?.info?.id);if(o.length===0){try{let n=wv(()=>Cx(e,t).data);a&&n&&Tv({trigger:`materialize`,sessionID:e,directory:i,transport:r(),generation:s(),purpose:`refetch`,before:a,after:n})}catch{}return[]}let c=o.map(e=>({info:sp(e.info),parts:e.parts??[]})),l=U(i??ox(),e);yu(l,{type:`materialize-snapshots`,records:c,skipPartTypes:Gb})||_u(i??ox(),n).apply(l,{type:`materialize-snapshots`,records:c,skipPartTypes:Gb});try{let n=wv(()=>Cx(e,t).data);a&&n&&Tv({trigger:`materialize`,sessionID:e,directory:i,transport:r(),generation:s(),purpose:`refetch`,before:a,after:n})}catch{}return c.map(e=>e.info)}async function oC(e,t){return nb(e,t??(()=>{try{return xx(e,t).directory}catch{return t}})(),async({isCurrent:n})=>{let{store:r,directory:i}=xx(e,t);if(!n())throw Error(`Session history mutation aborted because the runtime changed`);let a=r.getState(),o=Tx(e,i),s=a.session_status[e];if(s&&s.type!==`idle`){try{await vx().session.abort({sessionID:e,directory:i})}catch{}if(!n())throw Error(`Session history mutation aborted because the runtime changed`)}let c=await vx().session.unrevert({sessionID:e,directory:i});if(!n())throw Error(`Session history mutation aborted because the runtime changed`);let l=mx(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<Kb;r+=1){if(r>0&&(await dx(qb),!n())||(await aC(e,t),!n()))throw Error(`Session history mutation aborted because the runtime changed`);if(Tx(e,i)>o)return}if(Tx(e,i)<=o){let n=i??ox(),a=H()??_u(n,r),o=U(n,e);typeof a.destructiveReset==`function`?await a.destructiveReset(o):await aC(e,t)}})}async function sC(e,t,n,r){let a=i(),{store:o,directory:s}=xx(e,r);if(!s)throw Error(`Fork session directory is unavailable`);let c=await Wx(e,o,s);wd(e,s);let l=o.getState(),u=l.session_status[e],d=wx(e,s);u?.type,d.length;let f=tx(n,d,u);if(!n&&l.session_status[e]?.type!==`idle`&&!f&&(await aC(e),l=o.getState(),u=l.session_status[e],d=wx(e,s),f=tx(void 0,d,u)),!n&&l.session_status[e]?.type!==`idle`&&!f)throw console.error(`[session-fork] active session has no user message fork point`,{operationId:t,sessionId:e,statusType:l.session_status[e]?.type??`unknown`,messageCount:Tx(e,s)}),Error(`Fork source user message is unavailable`);l.session_status[e]?.type;let{repository:p,data:m}=Cx(e,s),h=(n?m.messagesByID[n]??d.find(e=>e.id===n):void 0)?.role===`user`,g=h&&n?[...p.getParts(U(s,e),n)]:[],_=``;_=g.filter(e=>e.type===`text`&&!Yp(e)).map(e=>e.text||e.content||``).join(`
461
+ `).trim();if(n)return x_.test(n)?`redacted-text`:n.length<=400?n:`${n.slice(0,400)}…`}function W_(e){if(!e)return;let t=e.clientRole??e.role;if(t===`user`||t===`assistant`||t===`system`)return t}function G_(e){let t=e?.time?.completed;return typeof t==`number`&&t>0}var K_=e=>typeof e==`string`&&e.trim().length>0;function q_(e){if(!e||W_(e)!==`assistant`)return;let t=e,n=!K_(t.mode)&&!K_(t.agent),r=!K_(t.modelID)||!K_(t.providerID);return n||r}function J_(e){return{partCount:e.partCount,slimCount:e.slimCount,fullCount:e.fullCount,optimistic:e.optimistic}}function Y_(e){let t=e.messageOrder.map(t=>{let n=e.partsByMessageID[t]??[],r=0,i=0,a=!1;for(let e of n)b_(e)?r+=1:i+=1,H_(e)&&(a=!0);let o=e.messagesByID[t],s=W_(o),c=q_(o),l=s===`user`?U_(n):void 0;return{id:t,partCount:n.length,slimCount:r,fullCount:i,optimistic:a,completed:G_(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 X_(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:J_(e),after:J_(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 Z_(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:X_(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 Q_(e){if(!e||typeof e.type!=`string`)return`missing`;let t=e.type.trim();return t.length>0?t:`missing`}function $_(e){return e.opened?`opened`:e.navigateCapability?e.directoryPresent?e.childSessionPresent?`navigate-rejected`:`queued`:`missing-directory`:`capability-off`}function ev(e){if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0}function tv(e){let t=ev(e.partID),n=ev(e.messageID),r=ev(e.directory),i=ev(e.childSessionID),a=ev(e.toolStatus),o=ev(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 nv(e){return[e.sessionID,ev(e.partID)??``,e.childSessionPresent?`1`:`0`,ev(e.childSessionID)??``,ev(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`,ev(e.surfaceKind)??``,String(e.taskStartedAt??``),String(e.statusObservedAt??``),String(e.statusSnapshotAt??``)].join(`\0`)}function rv(e){return{at:(e.now??Date.now)(),feat:`task`,kind:`task-row`,sessionID:e.sessionID,...tv(e)}}function iv(e){return{at:(e.now??Date.now)(),feat:`task`,kind:`task-click`,sessionID:e.sessionID,clickSource:e.clickSource,clickOutcome:$_(e),...tv(e)}}var av=`openchamber-transcript-diagnostics`,ov=`events`,sv=1,cv=e=>new Promise((t,n)=>{e.onsuccess=()=>t(e.result),e.onerror=()=>n(e.error??Error(`IndexedDB request failed`))}),lv=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){n(Error(`IndexedDB unavailable`));return}let r=indexedDB.open(e,sv);r.onupgradeneeded=()=>{let e=r.result;e.objectStoreNames.contains(ov)||e.createObjectStore(ov,{autoIncrement:!0})},r.onsuccess=()=>t(r.result),r.onerror=()=>n(r.error??Error(`IndexedDB open failed`))}),uv=(e=av)=>({async append(t,n){let r=await lv(e);try{let e=r.transaction(ov,`readwrite`).objectStore(ov);await cv(e.add(t));let i=await cv(e.getAllKeys()),a=i.length-n;if(a>0)for(let t of i.slice(0,a))await cv(e.delete(t))}finally{r.close()}},async read(){let t=await lv(e);try{return await cv(t.transaction(ov,`readonly`).objectStore(ov).getAll())}finally{t.close()}},async clear(){let t=await lv(e);try{await cv(t.transaction(ov,`readwrite`).objectStore(ov).clear())}finally{t.close()}}});function dv(e={}){let t=e.driver??uv(e.databaseName),n=e.limit??500;return{append:e=>t.append(e,n),read:()=>t.read(),clear:()=>t.clear()}}var fv=Je(`OpenChamberMedia`);function pv(e){let t=new TextEncoder().encode(e),n=``;for(let e of t)n+=String.fromCharCode(e);return btoa(n)}function mv(){return ft()&&Ye!==void 0&&Ye.isPluginAvailable(`OpenChamberMedia`)}function hv(){return`1.18.2-beta.19`}function gv(){if(typeof localStorage>`u`)return null;try{return T_(localStorage.getItem(w_))}catch{return null}}function _v(e){if(!(typeof localStorage>`u`))try{localStorage.setItem(w_,e?`true`:`false`)}catch{}}function vv(e={}){return(e.hasIndexedDB??(()=>globalThis.indexedDB!==void 0))()?`indexeddb`:`memory`}var yv;function bv(e=hv()){return E_({version:e,preference:gv()})}function xv(e={}){return I_({sink:vv()===`indexeddb`?(e.createIndexedDBSink??dv)():(e.createMemorySink??F_)(),isEnabled:e.isEnabled??bv})}function Sv(){return yv??=xv(),yv}function Cv(e){Sv().record(e)}function wv(e){try{return bv()?Y_(e()):void 0}catch{return}}function Tv(e){try{Cv(Z_(e))}catch{}}function Ev(e){try{Cv(rv(e))}catch{}}function Dv(e){try{Cv(iv(e))}catch{}}function Ov(e){let t=R_(e.command);t&&(e.changed!==!1||e.command.type!==`sse-event`&&e.command.type!==`sse-event-batch`)&&Cv(P_({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:z_(e.command),sseType:B_(e.command),source:V_(e.command),error:e.error}))}async function kv(){let e=await Sv().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 Av(e,t=D_()){if(mv())return(await fv.saveFile({dataBase64:pv(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 jv(){let e=await kv(),t=D_();return{content:e,fileName:t,outcome:await Av(e,t),eventCount:O_(e)}}function Mv(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 Nv=2,Pv=6e4;function Fv(e,t){return{transport:t?.transport??e.transport??(e.probe?.getTransport??r)(),generation:t?.generation??e.generation??(e.probe?.getGeneration??s)()}}function Iv(e,t){let n=(t.probe?.getTransport??r)(),i=(t.probe?.getGeneration??s)();if(n!==e.transport||i!==e.generation)throw new Fh}function Lv(e,t){return{directory:e.directory.trim(),sessionID:e.sessionID,transport:t.transport,generation:t.generation}}function Rv(e,t){return fg({transport:t.transport,generation:t.generation,directory:e.directory.trim(),sessionID:e.sessionID})}function zv(e,t){return`${e.trim()}\n${t}`}function Bv(e){let t=e.client,n=e.repository,i=e.cacheBudget??n.getCacheBudget?.()??wg({client:t,activeRegistry:yg()}),a=Math.max(1,Math.floor(e.directoryConcurrency??Nv)),o=e.fetchReconcile??Hg,c=e.now??Date.now,l=!1,u=0,d=new Map,f=new Map,p=new Map,m=new Map,h=new Set,g=new Map,_=new Set,v=(e,t)=>{h.add(zv(e,t))},y=(e,t)=>{h.delete(zv(e,t))},b=e=>{let t=f.get(e);t&&(t.abort(),f.delete(e)),d.delete(e)},x=e=>{u+=1;for(let e of[...f.keys()])b(e);p.clear(),m.clear()},S=(e,t)=>{let n=t===void 0?void 0:t.trim(),r=new Map;for(let t of i.listCanonical({transport:e.transport,generation:e.generation,directory:n}))t.active&&(n===void 0||t.scope.directory===n)&&r.set(zv(t.scope.directory,t.scope.sessionID),{directory:t.scope.directory,sessionID:t.scope.sessionID});for(let t of i.activeRegistry.listRetained())t.transport===e.transport&&t.generation===e.generation&&(n===void 0||t.directory===n)&&r.set(zv(t.directory,t.sessionID),{directory:t.directory,sessionID:t.sessionID});return Array.from(r.values())},C=(t,n)=>{let r=new Set(e.listDirectories().map(e=>e.trim()).filter(Boolean));for(let e of i.listCanonical({transport:t.transport,generation:t.generation}))r.add(e.scope.directory);for(let e of i.activeRegistry.listRetained())e.transport===t.transport&&e.generation===t.generation&&r.add(e.directory);for(let e of n)e.directory&&r.add(e.directory.trim());return r},w=()=>{if(e.getViewedSessions){let t=new Set,n=[];for(let r of e.getViewedSessions()){let e=r.directory.trim(),i=r.sessionID;if(!e||!i)continue;let a=zv(e,i);t.has(a)||(t.add(a),n.push({directory:e,sessionID:i}))}return n}let t=e.getViewedSession();return t?.sessionID?[{directory:t.directory.trim(),sessionID:t.sessionID}]:[]},T=r=>{if(l)return;let a={transport:r.transport??Fv(e).transport,generation:r.generation??Fv(e).generation},o=c(),s=w(),u=C(a,s),d=i.listCanonical({transport:a.transport,generation:a.generation}),f=new Map;for(let e of d)f.set(zv(e.scope.directory,e.scope.sessionID),{directory:e.scope.directory,sessionID:e.scope.sessionID});for(let e of i.activeRegistry.listRetained())e.transport===a.transport&&e.generation===a.generation&&f.set(zv(e.directory,e.sessionID),{directory:e.directory,sessionID:e.sessionID});for(let e of s)f.set(zv(e.directory,e.sessionID),{directory:e.directory,sessionID:e.sessionID});for(let t of u)for(let n of e.getBusyOrRetrySessionIDs(t))f.set(zv(t,n),{directory:t,sessionID:n});for(let e of f.values()){let i=Lv(e,a),s=n.getTranscript(i),c=h_({transport:a.transport,generation:a.generation,directory:e.directory,sessionID:e.sessionID,transcript:s,lastEventID:r.lastEventID,capturedAt:o});v_(t,c)}let p=new Set;for(let t of u){let n=Mv({directory:t,activeScopes:S(a,t),viewedSessions:s,busyOrRetrySessionIDs:e.getBusyOrRetrySessionIDs(t)});for(let e of n)p.add(zv(e.directory,e.sessionID))}for(let e of d){let t=zv(e.scope.directory,e.scope.sessionID);!p.has(t)&&!e.active&&v(e.scope.directory,e.scope.sessionID)}},E=(e,t,r)=>{let i=wv(()=>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=wv(()=>n.getTranscript(e));i&&t&&Tv({trigger:`reconnect-compensation-reconcile`,sessionID:e.sessionID,directory:e.directory,transport:e.transport,generation:e.generation,before:i,after:t})}catch{}return o},D=async(r,i,a)=>{if(Iv({transport:i.transport,generation:i.generation},e),a!==u)throw new Fh;v_(t,g_(__(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=wv(()=>n.getTranscript(r));try{if(await n.destructiveReset(r),Iv({transport:i.transport,generation:i.generation},e),a!==u)throw new Fh;y_(t,i),y(i.directory,i.sessionID);try{let e=wv(()=>n.getTranscript(r));o&&e&&Tv({trigger:`reconnect-compensation-reset`,sessionID:r.sessionID,directory:r.directory,transport:i.transport,generation:i.generation,before:o,after:e})}catch{}}catch(e){throw v_(t,g_(__(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}},O=async(r,i,a)=>{if(Iv({transport:i.transport,generation:i.generation},e),a!==u)throw new Fh;v_(t,g_(__(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=wv(()=>n.getTranscript(r));try{if(await n.ensureInitial(r),Iv({transport:i.transport,generation:i.generation},e),a!==u)throw new Fh;y_(t,i),y(i.directory,i.sessionID);try{let e=wv(()=>n.getTranscript(r));o&&e&&Tv({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 v_(t,g_(__(t,i)??h_({transport:i.transport,generation:i.generation,directory:i.directory,sessionID:i.sessionID,transcript:n.getTranscript(r),lastEventID:null}),{state:`pending`})),e}},k=async(r,i,a,s)=>{let l=Lv(r,i),d=Rv(r,i),f=gg({directory:d.directory,sessionID:d.sessionID,checkpoint:String(__(t,d)?.capturedAt??c())},d.transport,d.generation);t.setQueryData(f,{status:`running`,startedAt:c()});try{if(Iv(i,e),a!==u||s.aborted)throw new Fh;let p=__(t,d);if(p||(p=h_({transport:i.transport,generation:i.generation,directory:r.directory,sessionID:r.sessionID,transcript:n.getTranscript(l),lastEventID:null,capturedAt:c()}),v_(t,p)),!p.anchorMessageID){await O(l,d,a),t.setQueryData(f,{status:`ensure`,finishedAt:c()});return}p=g_(p,{state:`reconciling`}),v_(t,p);let m=p.anchorMessageID,h=0;for(;h<32;){if(h+=1,Iv(i,e),a!==u||s.aborted)throw new Fh;let g=null,_=null,v=null,b=0;for(;;){if(b+=1,Iv(i,e),a!==u||s.aborted)throw new Fh;let h=n.getTranscript(l).liveRevision;if(!g&&!m){await O(l,d,a),t.setQueryData(f,{status:`ensure`,finishedAt:c()});return}let y=await o({sessionID:r.sessionID,directory:r.directory.trim(),...g?{continuation:g}:{anchor:m},signal:s});if(Iv(i,e),a!==u||s.aborted)throw new Fh;if(y.resetRequired){await D(l,d,a),t.setQueryData(f,{status:`reset`,finishedAt:c()});return}if(b===1&&(_=y.capturedHeadMessageID),v=y.latestHeadMessageID??v,y.records.length>0&&E(l,y,h),p=g_(__(t,d)??p,{state:`reconciling`,capturedHeadMessageID:_,latestHeadMessageID:v,continuation:y.continuation}),v_(t,p),y.complete||!y.continuation)break;g=y.continuation}let x=_,S=v;if(x&&S&&S!==x){m=x,p=g_(__(t,d)??p,{state:`reconciling`,anchorMessageID:x,continuation:null,capturedHeadMessageID:null}),v_(t,p);continue}p=g_(__(t,d)??p,{state:`complete`,continuation:null,capturedHeadMessageID:x,latestHeadMessageID:S}),v_(t,p),y(r.directory,r.sessionID),t.setQueryData(f,{status:`complete`,finishedAt:c()});return}await D(l,d,a),t.setQueryData(f,{status:`reset`,finishedAt:c()})}catch(n){if(n instanceof Fh||n instanceof Error&&n.name===`AbortError`){t.setQueryData(f,{status:`cancelled`,finishedAt:c()});return}throw e.onError?.(n,{directory:r.directory,sessionID:r.sessionID,phase:`reconcile`}),t.setQueryData(f,{status:`error`,finishedAt:c(),code:n instanceof Error?n.name:`error`}),n}},A=t=>{let n=t.trim(),r=m.get(n)??0;if(r>=a)return;let i=p.get(n);if(!i||i.length===0)return;let o=i.shift();m.set(n,r+1);let s=zv(o.directory,o.sessionID);if(d.has(s)){m.set(n,(m.get(n)??1)-1),A(n);return}let c=Fv(e),l=u,h=new AbortController;f.set(s,h);let g=(async()=>{try{await k(o,c,l,h.signal)}catch{}finally{f.delete(s),d.delete(s),m.set(n,Math.max(0,(m.get(n)??1)-1)),A(n)}})();d.set(s,g)},j=e=>{let t=e.directory.trim(),n=zv(t,e.sessionID);if(d.has(n))return;let r=p.get(t);r||(r=[],p.set(t,r)),!r.some(t=>t.sessionID===e.sessionID)&&(r.push({directory:t,sessionID:e.sessionID}),A(t))},ee=t=>{let n=w(),r=C(t,n);for(let a of r){let r=Mv({directory:a,activeScopes:S(t,a),viewedSessions:n,busyOrRetrySessionIDs:e.getBusyOrRetrySessionIDs(a)});for(let e of r)j(e);for(let e of i.listCanonical({transport:t.transport,generation:t.generation,directory:a})){let t=zv(e.scope.directory,e.scope.sessionID);r.some(e=>zv(e.directory,e.sessionID)===t)||v(e.scope.directory,e.scope.sessionID)}}},te=t=>{if(l||!t.isReconnect)return;let n={transport:(e.probe?.getTransport??r)(),generation:t.runtimeGeneration},i=(e.probe?.getGeneration??s)(),a=(e.probe?.getTransport??r)();if(i!==n.generation||a!==n.transport){x(`generation_mismatch`);return}ee(n)},M=t=>{if(l)return;let r=t.directory.trim(),i=Fv(e,t),a=Lv({directory:r,sessionID:t.sessionID},i),s=pg(Rv({directory:r,sessionID:t.sessionID},i)),u=g.get(s);if(u&&c()-u.checkedAt<Pv||_.has(s)||d.has(zv(r,t.sessionID))||!n.hasSession?.(a))return;let f=n.getTranscript(a),p=f.messageOrder[f.messageOrder.length-1];p&&(_.add(s),(async()=>{try{if(Iv(i,e),l)return;let u=await o({sessionID:t.sessionID,directory:r,anchor:p});if(Iv(i,e),l||(g.set(s,{checkedAt:c()}),u.resetRequired)||u.complete&&u.records.length===0||u.records.length===0)return;let d=n.getTranscript(a).liveRevision;E(a,u,d)}catch{}finally{_.delete(s)}})())};return{captureCheckpoints:T,onCompensation:te,ensureOnObserve:async r=>{if(l)return null;let i=r.directory.trim(),a=zv(i,r.sessionID);if(!h.has(a))return M(r),null;y(i,r.sessionID);let o=Fv(e,r),s=Lv({directory:i,sessionID:r.sessionID},o),c=Rv({directory:i,sessionID:r.sessionID},o),u=__(t,c);if(u&&u.state!==`complete`&&u.anchorMessageID){j({directory:i,sessionID:r.sessionID});let e=d.get(a);return e&&await e,n.getTranscript(s)}try{Iv(o,e);let r=await n.ensureInitial(s);return y_(t,c),r}catch(t){throw e.onError?.(t,{directory:i,sessionID:r.sessionID,phase:`ensure-on-observe`}),t}},cancelAll:x,getCheckpoint:n=>{let r=Fv(e,n);return __(t,Rv({directory:n.directory,sessionID:n.sessionID},r))},isSessionInFlight:(e,t)=>d.has(zv(e,t)),destroy:()=>{l=!0,x(`destroy`)}}}function Vv(e){return{transport:e.transport,generation:e.generation,directory:e.directory,sessionID:e.sessionID}}function Hv(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 Uv(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 Wv(e,t={}){let n=new Map,r=new Map,i=e=>Promise.all([n.get($s(e))??Promise.resolve(),r.get(tc(e))??Promise.resolve()]).then(()=>void 0),a=(e,t)=>{let r=$s(e),a=i(e).then(t,t);return n.set(r,a.then(()=>void 0,()=>void 0)),a},o=(e,t)=>{let n=tc(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??ug)();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 Gv=new Map;function Kv(e,t){let n=Gv.get(e);if(n)return n;let r=t().finally(()=>{Gv.get(e)===r&&Gv.delete(e)});return Gv.set(e,r),r}var qv=e=>`message\n${e.runtimeKey}\n${e.directory}\n${e.sessionID}\n${e.messageID}`;function Jv(e){return Kv(qv(e),e.request)}function Yv(e,t){return`${e}\n${t}`}var Xv=new Map;function Zv(e){return Xv.get(e)}async function Qv(e){return Jv({runtimeKey:Yv(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 Xv.set(r.id,i),{info:sp(r),parts:i}}})}function $v(e,t){let n=e.info;return n.role===t||n.clientRole===t}function ey(e){let t=new Set(e.map(e=>e.info.id)),n=[],r=new Set;for(let i of e){if(!$v(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 ty(e){if(e.complete){let t=e.records.some(e=>$v(e,`user`));return{records:e.records,boundaryFound:t,partial:!1}}let t=ey(e.records);if(t.length===0){let t=e.records.some(e=>$v(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=>$v(e,`user`));return{records:i,boundaryFound:a,partial:!a}}function ny(e){return e.trim()}function ry(e,t){let n=e.transport??t.transport??(t.probe?.getTransport??r)(),i=e.generation??t.generation??(t.probe?.getGeneration??s)();return{directory:ny(e.directory),sessionID:e.sessionID,transport:n,generation:i}}function K(e){return`${e.transport}\n${e.generation}\n${e.directory}\n${e.sessionID}`}function iy(e){return{sessionID:e,messageOrder:[],messagesByID:{},partsByMessageID:{},boundary:tl,liveRevision:0}}function ay(e,t){if(!e||e.pages.length===0)return iy(t);let n=Ph(e,t);return{sessionID:t,messageOrder:n.messageOrder,messagesByID:n.messagesByID,partsByMessageID:n.partsByMessageID,boundary:n.boundary,liveRevision:n.liveRevision}}function oy(e){let t=e?.time?.created;return typeof t==`number`&&Number.isFinite(t)?t:void 0}function sy(e){return!!e?.some(e=>e.__openchamberOptimistic===!0)}function cy(e,t){if(t.records.length===0)return[];let n;for(let e of t.records){let t=oy(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=oy(e.messagesByID[t]);a===void 0||a<=n||sy(e.partsByMessageID[t])||i.push(t)}return i}function ly(e={}){let t=e.client??L,n=e.cacheBudget??wg({client:t,activeRegistry:e.activeRegistry??yg()}),i=n.activeRegistry,a=new Map,o=new Map,c=new Map,l=new Map,u=new Map,d=e.durableStore?Wv(e.durableStore,{getProtectScopes:()=>i.listRetained().map(Vv),getByteBudget:e.getDurableByteBudget}):void 0,f=new Map,p=new Map,m=new Map,h=new Map,g=new Map,_=new Set,v=new Map,y=new Set,b=new Set,x=(e,t)=>{let n=K(t);if(y.has(n))return;let r=ay(w(e),t.sessionID);!bl(r)&&!v.has(n)||(y.add(n),Cv(P_({kind:`hydration`,sessionID:t.sessionID,directory:t.directory,transport:t.transport,generation:t.generation,transcript:r,hydration:{sessionID:t.sessionID,p0Satisfied:!0,phase:`p0`}})))},S=0,C=e=>{let t=u.get(e);return t||(t={messages:new Map,parts:new Map},u.set(e,t)),t},w=n=>{let r=ry(n,e);return rg({directory:r.directory,sessionID:r.sessionID},t,r.transport,r.generation)},T=t=>{let n=ry(t,e);return Gh({directory:n.directory,sessionID:n.sessionID},n.transport,n.generation)},E=t=>{let n=ry(t,e);return{transport:n.transport,generation:n.generation,directory:n.directory,sessionID:n.sessionID}},D=e=>{let t=E(e);n.enforce({transport:t.transport,generation:t.generation,directory:t.directory,preserve:[t]})},O=n=>{let i=e.probe??{getTransport:r,getGeneration:s},o=ry(n,{...e,transport:void 0,generation:void 0,probe:i}),c=K(o),l=a.get(c);if(l)return l;if(!e.fetcher)throw Error(`Query transcript repository requires a fetcher for HTTP loads`);let u=tg({directory:o.directory,sessionID:o.sessionID,fetcher:e.fetcher,transport:o.transport,generation:o.generation,probe:i,client:t,initialLimit:e.initialLimit,historyLimit:e.historyLimit});return a.set(c,u),u},k=t=>{let n=K(ry(t,e));u.delete(n);let r=o.get(n);if(!(!r||r.size===0))for(let e of r)e(t)},A=n=>{let r=K(ry(n,e));if(c.has(r))return;let i=T(n),a=t.getQueryCache().subscribe(e=>{if(e.type!==`updated`&&e.type!==`removed`)return;let t=e.query.queryKey;t[0]===i[0]&&t[1]===i[1]&&t[2]===i[2]&&t[3]===i[3]&&t[4]===i[4]&&k(n)});c.set(r,a)},j=e=>{let t=o.get(e);if(t&&t.size>0)return;let n=c.get(e);n&&(n(),c.delete(e)),o.delete(e)},ee=(e,t)=>{let n=C(e),r=n.transcript;if(r&&r.sessionID===t.sessionID&&r.liveRevision===t.liveRevision&&r.boundary===t.boundary&&r.messageOrder===t.messageOrder&&r.messagesByID===t.messagesByID&&r.partsByMessageID===t.partsByMessageID)return r;if(r&&r.messageOrder.length===t.messageOrder.length&&r.messageOrder.every((e,n)=>e===t.messageOrder[n])&&r.boundary.kind===t.boundary.kind&&r.boundary.loadedTurns===t.boundary.loadedTurns&&(r.boundary.kind!==`has-more`||t.boundary.kind!==`has-more`||r.boundary.cursor===t.boundary.cursor)&&r.liveRevision===t.liveRevision){let e=!0,i=!0,a={...r.messagesByID},o={...r.partsByMessageID};for(let n of t.messageOrder)r.messagesByID[n]!==t.messagesByID[n]&&(e=!1,a[n]=t.messagesByID[n]),r.partsByMessageID[n]!==t.partsByMessageID[n]&&(i=!1,t.partsByMessageID[n]?o[n]=t.partsByMessageID[n]:delete o[n]);if(e&&i)return n.transcript=r,r;let s={sessionID:t.sessionID,messageOrder:r.messageOrder,messagesByID:e?r.messagesByID:a,partsByMessageID:i?r.partsByMessageID:o,boundary:r.boundary.kind===t.boundary.kind&&r.boundary.loadedTurns===t.boundary.loadedTurns?r.boundary:t.boundary,liveRevision:t.liveRevision};return n.transcript=s,s}return n.transcript=t,t},te=(e,t)=>{let n=C(e),r=n.pagination;return r&&r.sessionID===t.sessionID&&r.hasPreviousPage===t.hasPreviousPage&&r.isComplete===t.isComplete&&r.cursor===t.cursor&&r.loadedTurns===t.loadedTurns&&r.boundary.kind===t.boundary.kind&&r.boundary.loadedTurns===t.boundary.loadedTurns?r:(n.pagination=t,t)},M=(e,t)=>`${K(e)}\n${t}`,ne=(e,t)=>{let n=K(e),r=g.get(n);r&&(r.delete(t),r.size===0&&g.delete(n))},re=e=>{for(let t of g.keys())(t===e||t.startsWith(e))&&g.delete(t)},ie=e=>{for(let t of m.keys())t.startsWith(e)&&m.delete(t);for(let t of h.keys())t.startsWith(e)&&h.delete(t)},ae=e=>{for(let t of v.keys())(t===e||t.startsWith(e))&&v.delete(t);for(let t of[...y])(t===e||t.startsWith(e))&&y.delete(t);for(let t of b)(t===e||t.startsWith(e))&&b.delete(t)},oe=e=>{let t=`${K(e)}\n`;for(let[e,n]of m)if(e.startsWith(t)&&n.status===`loading`)return!0;for(let e of h.keys())if(e.startsWith(t))return!0;return!1},se=t=>{let n=ry({directory:t.directory,sessionID:t.sessionID},e);return n.transport===t.transport&&n.generation===t.generation},ce=(e,t,n)=>{d&&d.persistSettled(Vv(e),t,n??[])},le=(e,t,n,r)=>{if(!d||S>0||!r.applied||!r.changed)return;let i=Vv(t);if(n.type===`remove-message`){d.removeMessage(i,n.messageID);return}if(n.type===`reset`){if(d.clearSession(i),n.page){let r=ay(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=ay(w(e),t.sessionID);for(let e of r){let n=Uv(e);if(n.action===`remove`){d.removeMessage(i,n.messageID);continue}if(n.action===`skip`)continue;let r=a.messagesByID[n.messageID];r&&ce(t,r,a.partsByMessageID[n.messageID])}return}if(n.type===`http-page`||n.type===`materialize-snapshots`){let r=ay(w(e),t.sessionID),i=n.type===`http-page`?n.page.records:n.records;for(let e of i){let n=r.messagesByID[e.info.id];n&&ce(t,n,r.partsByMessageID[e.info.id])}}}},ue=async(n,i)=>{if(!e.fetcher)throw Error(`Query transcript repository requires a fetcher for HTTP loads`);let a=async t=>{let n=await e.fetcher({directory:t.directory,sessionID:t.sessionID,limit:t.limit,before:t.before,signal:t.signal});return{records:n.records.map(e=>({info:e.info,parts:e.parts})),cursor:n.cursor,complete:n.complete,turnCount:n.turnCount,requestedTurnLimit:n.requestedTurnLimit}},o=e.probe??{getTransport:r,getGeneration:s},c={directory:n.directory,sessionID:n.sessionID,limit:e.initialLimit??qm()};return Hv(i?.fresh?await t.fetchQuery({...Yh(c,a,n.transport,o,n.generation),staleTime:0}):await Xh(c,a,t,n.transport,o,n.generation))},N=(e,t)=>{for(let n of t)ou(`${e.directory}\n${e.sessionID}\n${n}`,()=>P.materializeMessage(e,n),{priority:`background`}).catch(()=>void 0)},de=(e,t)=>{let r=K(t),i=p.get(r);if(i)return i;let a=(async()=>{let i=Date.now();f.set(r,{status:`loading`});try{let i=await ue(t);if(!se(t))return f.delete(r),P.getTranscript(e);P.apply(e,{type:`http-page`,purpose:`initial`,page:i}),Fm(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(!ml(P.getParts(e,i),P.getMessage(e,i)??o.info)){ne(t,i),m.set(M(t,i),{status:`ready`}),r+=1;continue}n.push(i)}}r>0&&k(e),N(e,n)}return f.delete(r),n.noteScopeObserved(E(e)),D(e),P.getTranscript(e)}catch(n){if(n instanceof Fh||!se(t))return f.delete(r),P.getTranscript(e);throw f.set(r,{status:`error`,error:n instanceof Error?n.message:String(n)}),Cv(P_({kind:`request-error`,sessionID:t.sessionID,directory:t.directory,transport:t.transport,generation:t.generation,source:`network`,purpose:`initial`,durationMs:Date.now()-i,transcript:ay(w(e),t.sessionID),request:P.getRequestState?.(e),hydration:P.getHydrationState?.(e),error:n})),n}finally{p.delete(r)}})();return p.set(r,a),a},fe=(e,t)=>{let r=K(t),i=p.get(r);if(i)return i;let a=(async()=>{let i=Date.now(),a=P.getTranscript(e).liveRevision;f.set(r,{status:`loading`});try{let i=await ue(t,{fresh:!0});if(!se(t))return f.delete(r),P.getTranscript(e);let o=P.getTranscript(e).liveRevision;return o<a||Ql(t.sessionID,t.directory)?(f.delete(r),P.getTranscript(e)):(P.apply(e,{type:`http-page`,purpose:`reconcile-page`,page:{records:i.records.map(e=>({info:e.info,parts:e.parts})),complete:!1,cursor:void 0,turnCount:0},capturedLiveRevision:a,liveRevision:o}),Fm(t.directory,t.sessionID,{transport:t.transport,generation:t.generation}),f.delete(r),n.noteScopeObserved(E(e)),D(e),P.getTranscript(e))}catch(n){return f.delete(r),n instanceof Fh||!se(t)||Cv(P_({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:ay(w(e),t.sessionID),request:P.getRequestState?.(e),hydration:P.getHydrationState?.(e),error:n})),P.getTranscript(e)}finally{p.delete(r)}})();return p.set(r,a),a},pe=t=>{let n=w(t);return!n||n.pages.length===0||_.has(K(ry(t,e)))?!0:ih(n).kind===`unknown`},P={getTranscript(t){let n=ry(t,e),r=K(n),i=ay(w(t),n.sessionID);return ee(r,i)},getPagination(t){let n=ry(t,e),r=K(n),i=P.getTranscript(t);return te(r,wl(n.sessionID,i.boundary))},getRequestState(t){let n=ry(t,e),r=f.get(K(n));if(r?.status===`loading`)return{sessionID:n.sessionID,status:`loading`};if(r?.status===`error`)return{sessionID:n.sessionID,status:`error`,error:r.error};let i=a.get(K(n));if(!i){let e=w(t);return e&&e.pages.length>0?{sessionID:n.sessionID,status:`ready`}:{sessionID:n.sessionID,status:`idle`}}let o=i.observer.getCurrentResult();return o.isLoading||o.isFetching?{sessionID:n.sessionID,status:`loading`}:o.isError&&o.error?{sessionID:n.sessionID,status:`error`,error:o.error instanceof Error?o.error.message:String(o.error)}:o.data&&o.data.pages.length>0?{sessionID:n.sessionID,status:`ready`}:{sessionID:n.sessionID,status:`idle`}},getHydrationState(t){let n=ry(t,e),r=K(n),i=P.getTranscript(t);bl(i)&&v.set(r,!0);let a=v.has(r);return{sessionID:n.sessionID,p0Satisfied:a,phase:xl({p0Satisfied:a,prependActive:b.has(r),materializeActive:oe(n),earlierHistoryLoaded:_l(i)>1})}},hasSession(e){return w(e)!==void 0},getMessage(t,n){let r=K(ry(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(ry(t,e)),i=C(r),a=P.getTranscript(t).partsByMessageID[n]??uy,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=ry(t,e),i=m.get(M(r,n));return i?{sessionID:r.sessionID,messageID:n,status:i.status,...i.error===void 0?{}:{error:i.error}}:!P.getMessage(t,n)||g.get(K(r))?.has(n)||pl(P.getParts(t,n))?{sessionID:r.sessionID,messageID:n,status:`idle`}:{sessionID:r.sessionID,messageID:n,status:`ready`}},async materializeMessage(t,n){let r=ry(t,e),i=M(r,n),a=wv(()=>P.getTranscript(t)),o=e=>{try{let t=wv(e);if(!a||!t)return;Tv({trigger:`materialize`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,purpose:`exact`,before:a,after:t})}catch{}},s=h.get(i);if(s)return s.then(e=>o(()=>e)).catch(()=>void 0),s;let c=(async()=>{try{if(!P.getMessage(t,n))return m.set(i,{status:`idle`}),P.getTranscript(t);if(!pl(P.getParts(t,n))&&!g.get(K(r))?.has(n))return m.set(i,{status:`ready`}),P.getTranscript(t);m.set(i,{status:`loading`}),k(t);try{let a=await Qv({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 B.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??[]}]}),pl(P.getParts(t,n))?m.set(i,{status:`error`,error:`session.message failed: slim parts remain`}):m.set(i,{status:`ready`}),k(t),P.getTranscript(t)):(m.delete(i),P.getTranscript(t))}catch(e){if(!se(r))return m.delete(i),P.getTranscript(t);let n=e instanceof Error?e.message:`session.message failed`;return m.set(i,{status:`error`,error:n}),k(t),P.getTranscript(t)}}finally{ne(r,n)}})();return h.set(i,c),c.then(e=>o(()=>e)).catch(()=>void 0),c.finally(()=>{h.get(i)===c&&h.delete(i)}),c},apply(r,i){let a=ry(r,e),o=T(r),s=(()=>{switch(i.type){case`http-page`:{let e=ng(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=ng(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=ng(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=ng(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}),ng(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=ng(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=ng(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 dy(t,o,a.sessionID,i,()=>k(r));case`remove-message`:{let e=ng(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&&(Ov({directory:a.directory,sessionID:a.sessionID,transport:a.transport,generation:a.generation,command:i,transcript:ay(w(r),a.sessionID),request:P.getRequestState?.(r),hydration:P.getHydrationState?.(r),error:s.error,changed:s.changed}),x(r,a)),s},subscribe(t,r){let a=K(ry(t,e)),s=o.get(a);if(!s){s=new Set,o.set(a,s);let e=E(t);l.set(a,i.retain(e)),n.noteScopeObserved(e)}return s.add(r),A(t),()=>{let e=o.get(a);if(e){if(e.delete(r),e.size===0){let e=l.get(a);e&&(e(),l.delete(a))}j(a)}}},async ensureInitial(t){let r=ry(t,e),a=K(r);if(d&&await d.wait(Vv(r)),w(t)===void 0&&e.durableStore)try{let n=await e.durableStore.readSession(Vv(r));if(se(r)&&w(t)===void 0&&n.records.length>0){S+=1;try{P.apply(t,{type:`materialize-snapshots`,records:n.records.map(e=>({info:e.info,parts:[...e.parts]}))});let e=new Set;for(let t of n.records)ml(t.parts,t.info)&&e.add(t.info.id);e.size>0&&g.set(a,e),_.add(a)}finally{--S}}}catch(e){Cv(P_({kind:`request-error`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,source:`durable-cache`,purpose:`durable-seed`,error:e}))}if(pe(t)&&w(t)!==void 0){let e=Date.now(),n=await de(t,r);return Cv(P_({kind:`ensure-initial`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,source:`network`,durationMs:Date.now()-e,transcript:n,request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t)})),x(t,r),n}let o=w(t);if(o&&o.pages.length>0&&!pe(t)&&e.fetcher&&!i.isRetained(E(t))){let e=Date.now(),n=await fe(t,r);return Cv(P_({kind:`ensure-initial`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,source:`network`,durationMs:Date.now()-e,transcript:n,request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t)})),x(t,r),n}let s=O(t),c=Date.now(),l=w(t)!==void 0;f.delete(a);try{await s.ensureInitial()}catch(e){throw Cv(P_({kind:`request-error`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,source:l?`query-cache`:`network`,purpose:`initial`,durationMs:Date.now()-c,transcript:ay(w(t),r.sessionID),request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t),error:e})),e}f.delete(a),l||Fm(r.directory,r.sessionID,{transport:r.transport,generation:r.generation}),n.noteScopeObserved(E(t)),D(t);let u=P.getTranscript(t);return Cv(P_({kind:`ensure-initial`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,source:l?`query-cache`:`network`,durationMs:Date.now()-c,transcript:u,request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t)})),x(t,r),u},async fetchPreviousPage(t){if(pe(t)&&await P.ensureInitial(t),ih(w(t)).kind!==`has-more`)return P.getTranscript(t);let n=ry(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 Cv(P_({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 Cv(P_({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=ry(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=ry(t,e),i=wv(()=>P.getTranscript(t)),a=P.getTranscript(t).liveRevision,o=await e.fetcher({directory:r.directory,sessionID:r.sessionID,limit:e.initialLimit??qm(),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=cy(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=wv(()=>c);i&&e&&Tv({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=wv(()=>P.getTranscript(t)),i=E(t);return d&&await d.clearSession(Vv(ry(t,e))),n.destructiveReset(i,async()=>{let n=ry(t,e),i=K(n),o=a.get(i);if(o&&(o.destroy(),a.delete(i)),u.delete(i),ae(i),!e.fetcher)throw Error(`Query transcript repository requires a fetcher for destructiveReset ensure`);let s=await P.ensureInitial(t);try{let e=wv(()=>s);r&&e&&Tv({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(ry(t,e)),i=a.get(r);i&&(i.destroy(),a.delete(r)),u.delete(r),ie(`${r}\n`),g.delete(r),ae(r),n.purgeSession(E(t)),k(t)},purgeGeneration(e,t){for(let[n,r]of a)if(n.startsWith(`${e}\n${t}\n`)){r.destroy(),a.delete(n),u.delete(n);let e=l.get(n);e&&(e(),l.delete(n));let t=c.get(n);t&&(t(),c.delete(n)),o.delete(n)}ie(`${e}\n${t}\n`),re(`${e}\n${t}\n`),ae(`${e}\n${t}\n`),n.purgeGeneration(e,t),d&&d.clearGeneration({transport:e,generation:t})},destroy(){for(let e of a.values())e.destroy();a.clear();for(let e of c.values())e();c.clear();for(let e of l.values())e();l.clear(),o.clear(),u.clear(),f.clear(),p.clear(),m.clear(),h.clear(),g.clear(),v.clear(),y.clear(),b.clear()}};return P}var uy=Object.freeze([]);function dy(e,t,n,r,i){if(r.records.length===0)return{applied:!1,changed:!1};let a=ng(e,t,n,{type:`durable-seed`,records:r.records,skipPartTypes:r.skipPartTypes,merge:r.merge});return a.result.changed&&i(),a.result}var fy=`/api/openchamber/transcript-cache`,py=new Set([`unchanged`,`not-settled`,`slim-downgrade`]),my=e=>typeof e==`object`&&!!e&&!Array.isArray(e),hy=(e,t)=>{if(typeof e!=`string`||e.length===0)throw Error(`Invalid transcript cache ${t}`);return e},gy=(e,t)=>{if(typeof e==`number`&&Number.isInteger(e))return e;throw Error(`Invalid transcript cache ${t}`)},_y=e=>{if(!my(e))throw Error(`Invalid transcript cache scope`);return{transport:hy(e.transport,`scope`),generation:gy(e.generation,`scope`),directory:hy(e.directory,`scope`),sessionID:hy(e.sessionID,`scope`)}},vy=(e,t)=>{if(e===`slim`||e===`full`)return e;throw Error(`Invalid transcript cache ${t}`)},yy=e=>{if(!my(e)||!my(e.info)||!Array.isArray(e.parts)||!Array.isArray(e.partCompleteness)||!my(e.sortKey))throw Error(`Invalid transcript cache record`);return{scope:_y(e.scope),messageID:hy(e.messageID,`message ID`),info:e.info,parts:e.parts,partCompleteness:e.partCompleteness.map(e=>vy(e,`part completeness`)),completeness:vy(e.completeness,`completeness`),contentHash:hy(e.contentHash,`content hash`),byteSize:gy(e.byteSize,`byte size`),lastAccessedAt:gy(e.lastAccessedAt,`lastAccessedAt`),sortKey:{created:gy(e.sortKey.created,`sort key`),messageID:hy(e.sortKey.messageID,`sort key`)}}},by=(e,t)=>{if(!my(e)||!Array.isArray(e.records))throw Error(`Invalid transcript cache session`);let n=e.records.map(yy);return{scope:e.scope===void 0?mc(t):_y(e.scope),records:n,byteSize:typeof e.byteSize==`number`&&Number.isFinite(e.byteSize)?e.byteSize:n.reduce((e,t)=>e+t.byteSize,0)}},xy=e=>{if(!my(e))throw Error(`Invalid transcript cache upsert`);if(e.status===`written`)return{status:`written`,record:yy(e.record)};if(e.status===`skipped`){if(typeof e.reason!=`string`||!py.has(e.reason))throw Error(`Invalid transcript cache upsert`);return{status:`skipped`,reason:e.reason,...e.record===void 0?{}:{record:yy(e.record)}}}throw Error(`Invalid transcript cache upsert`)},Sy=e=>{if(!my(e))throw Error(`Invalid transcript cache evict`);return{evicted:gy(e.evicted,`evict`),freedBytes:gy(e.freedBytes,`evict`),remainingBytes:gy(e.remainingBytes,`evict`)}},Cy=e=>({scope:mc(e),records:[],byteSize:0}),wy=(e,t)=>my(e)&&typeof e.error==`string`&&e.error.length>0?e.error:t,Ty=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`)}},Ey=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 Ty(r)};let i=await Ty(r).catch(()=>void 0);throw Error(wy(i,`Transcript cache request failed (${r.status})`))},Dy=e=>({transport:e.transport,generation:String(e.generation),directory:e.directory,sessionID:e.sessionID}),Oy=(e,t)=>({method:e,headers:{Accept:`application/json`,"Content-Type":`application/json`},body:JSON.stringify(t)});function ky(e={}){let t=e.fetch??F;return{async readSession(e){let n=await Ey(t,`${fy}/session`,{method:`GET`,query:Dy(e)});return n.kind===`disabled`||n.kind===`not-found`?Cy(e):by(n.payload,e)},async readMessage(e,n){let r=await Ey(t,`${fy}/message`,{method:`GET`,query:{...Dy(e),messageID:n}});if(r.kind!==`disabled`&&r.kind!==`not-found`){if(!my(r.payload))throw Error(`Invalid transcript cache record`);return yy(r.payload.record??r.payload)}},async upsertSettled(e,n,r){let i=await Ey(t,`${fy}/message`,Oy(`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 xy(i.payload)},async removeMessage(e,n){let r=await Ey(t,`${fy}/message`,Oy(`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 Ey(t,`${fy}/session`,Oy(`DELETE`,{scope:e}));if(n.kind!==`disabled`&&n.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async clearGeneration(e){let n=await Ey(t,`${fy}/generation`,Oy(`DELETE`,e));if(n.kind!==`disabled`&&n.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async evictToBytes(e,n){let r=await Ey(t,`${fy}/evict`,Oy(`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 Sy(r.payload)},async clearAll(){let e=await Ey(t,`${fy}/all`,{method:`DELETE`,headers:{Accept:`application/json`}});if(e.kind!==`disabled`&&e.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async destroy(){}}}var Ay=`openchamber-transcript-durable`,jy=1,My=`transcriptIndex`,Ny=`transcriptContent`,Py=class extends Error{code;constructor(e){super(e),this.code=e}},Fy=e=>({id:ec(e.scope,e.messageID),scope:mc(e.scope),scopeKey:$s(e.scope),generationKey:tc(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}),Iy=(e,t)=>({scope:mc(e.scope),messageID:e.messageID,info:pc(t.info),parts:pc(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}}),Ly=async(e,t)=>{let n=await e.getIndex(t),r=await e.getContent(t);if(n&&r)return Iy(n,r);n&&await e.deleteIndex(t),r&&await e.deleteContent(t)},Ry=async(e,t)=>{await e.deleteIndex(t),await e.deleteContent(t)},zy=(e,t)=>new Promise((n,r)=>{e.onsuccess=()=>n(e.result),e.onerror=()=>r(e.error??t.error??Error(`IndexedDB request failed`))}),By=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){n(new Py(`database-unavailable`));return}let r=indexedDB.open(e,jy),i=!1,a=()=>{i||(i=!0,n(new Py(`database-unavailable`)))};r.onupgradeneeded=()=>{let e=r.result;if(!e.objectStoreNames.contains(My)){let t=e.createObjectStore(My,{keyPath:`id`});t.createIndex(`scopeKey`,`scopeKey`,{unique:!1}),t.createIndex(`generationKey`,`generationKey`,{unique:!1}),t.createIndex(`lastAccessedAt`,`lastAccessedAt`,{unique:!1})}e.objectStoreNames.contains(Ny)||e.createObjectStore(Ny,{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}),Vy=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){t();return}let r=indexedDB.deleteDatabase(e);r.onsuccess=()=>t(),r.onerror=()=>n(r.error??new Py(`database-unavailable`)),r.onblocked=()=>void 0}),Hy=(e=Ay)=>({transaction:async t=>{let n=await By(e),r=n.transaction([My,Ny],`readwrite`),i=r.objectStore(My),a=r.objectStore(Ny),o=e=>zy(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:()=>Vy(e)});function Uy(e,t={}){let n=hc(t.now??Date.now),r=async(e,t)=>(t.lastAccessedAt=n(),await e.putIndex(Fy(t)),gc(t));return{async readSession(t){return e.transaction(async e=>{let r=await e.getIndexesByScope($s(t)),i=[];for(let t of r){let r=await e.getContent(t.id);if(!r){await e.deleteIndex(t.id);continue}let a=Iy(t,r);a.lastAccessedAt=n(),await e.putIndex(Fy(a)),i.push(a)}return _c(t,i)})},async readMessage(t,n){return e.transaction(async e=>{let i=await Ly(e,ec(t,n));if(i)return r(e,i)})},async upsertSettled(t,i,a){let o=vc({info:i,incomingCompleteness:oc(a)});if(o.status===`skipped`&&o.reason===`not-settled`)return{status:`skipped`,reason:`not-settled`};let s=pc(a.slice()),c=oc(s),l=await lc(i,s),u=ec(t,i.id);return e.transaction(async e=>{let a=await Ly(e,u),o=vc({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:gc(a)}:o.reason===`unchanged`&&a?{status:`skipped`,reason:`unchanged`,record:await r(e,a)}:{status:`skipped`,reason:o.reason};let d={scope:mc(t),messageID:i.id,info:pc(i),parts:s,partCompleteness:s.map(ac),completeness:c,contentHash:l.hash,byteSize:l.byteSize,lastAccessedAt:n(),sortKey:rc(i)};return await e.putIndex(Fy(d)),await e.putContent({id:u,info:pc(i),parts:s}),{status:`written`,record:gc(d)}})},async removeMessage(t,n){await e.transaction(e=>Ry(e,ec(t,n)))},async clearSession(t){await e.transaction(async e=>{let n=await e.getIndexesByScope($s(t));for(let t of n)await Ry(e,t.id)})},async clearGeneration(t){await e.transaction(async e=>{let n=await e.getIndexesByGeneration(tc(t));for(let t of n)await Ry(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($s)),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?nc(e.sortKey,t.sortKey):e.lastAccessedAt-t.lastAccessedAt),c=0,l=0;for(let t of s){if(o<=r)break;await Ry(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 Wy(e={}){return Uy(e.driver??Hy(e.databaseName),e)}function Gy(e={}){let t=e.isDesktopShell??se,n=e.isDesktopLocalOriginActive??ce,r=e.isVSCodeRuntime??v,i=e.isCapacitorApp??ft;return r()||i()?`indexeddb`:t()&&n()?`http`:`indexeddb`}var Ky=async e=>{let t=(await Promise.allSettled(e)).find(e=>e.status===`rejected`);if(t)throw t.reason};function qy(e={}){let t,n,r=()=>(t??=(e.createHttpStore??ky)(),t),i=()=>(n??=(e.createIndexedDBStore??Wy)(),n),a=()=>Gy(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=>Ky([r().clearGeneration(e),i().clearGeneration(e)]),evictToBytes:(e,t)=>a().evictToBytes(e,t),clearAll:()=>a().clearAll(),destroy:async()=>{}}}async function Jy(e={}){await qy(e).clearAll()}var Yy=(e,t)=>e<t?-1:+(e>t);function Xy(e){return e.filter(e=>!!e?.id).sort((e,t)=>Yy(e.id,t.id))}async function Zy(e){let t=e.before?`prepend`:e.purpose??`initial`,n=t===`prepend`||t===`recovery`||t===`materialize`?t:`initial`,i=await Mg({sessionID:e.sessionID,directory:e.directory,purpose:n,...e.before?{before:e.before}:{},signal:e.signal}),a=i.records.map(e=>({info:sp(e.info),parts:Xy(e.parts??[])}));if(!e.before&&!i.complete&&ey(a).length>0){let t=B.getScopedSdkClient(e.directory);a=(await ty({records:a,complete:i.complete,requestMessage:async n=>{let i=await Qv({transport:r(),generation:s(),directory:e.directory,sessionID:e.sessionID,messageID:n,request:()=>t.session.message({sessionID:e.sessionID,messageID:n,directory:e.directory})});return{info:i.info,parts:Xy(i.parts??[])}}})).records.map(e=>({info:e.info,parts:Xy(e.parts??[])}))}return{records:a,cursor:i.cursor??void 0,complete:i.complete,turnCount:i.turnCount,requestedTurnLimit:e.limit}}function Qy(e){let t=e.client??L,n=yg(),i=wg({client:t,activeRegistry:n}),a=ly({client:t,cacheBudget:i,activeRegistry:n,probe:{getTransport:r,getGeneration:s},fetcher:e=>Zy({directory:e.directory,sessionID:e.sessionID,limit:e.limit,before:e.before,signal:e.signal}),initialLimit:qm(),historyLimit:Jm(),durableStore:e.durableStore??qy()}),o=Bv({client:t,repository:a,listDirectories:()=>Array.from(e.childStores.children.keys()),getBusyOrRetrySessionIDs:t=>{let n=e.childStores.getChild(t);if(!n)return[];let r=n.getState().session_status??{},i=[];for(let[e,t]of Object.entries(r))t&&(t.type===`busy`||t.type===`retry`)&&i.push(e);return i},getViewedSession:()=>e.getViewedSession?.()??null,getViewedSessions:e.getViewedSessions?()=>e.getViewedSessions():void 0,cacheBudget:i,probe:{getTransport:r,getGeneration:s}});return mu(a),Ou(o),{repository:a,destroy:()=>{o.cancelAll(`dispose`),Ou(null),a.destroy(),hu()}}}function $y(e){return gu().apply(U(e.directory,e.sessionID),{type:`http-page`,purpose:e.purpose,page:e.page,capturedLiveRevision:e.capturedLiveRevision,liveRevision:e.liveRevision,skipPartTypes:e.skipPartTypes,optimistic:e.optimistic})}var eb=new Map;function tb(e,t,n,r){return`${n}\0${r}\0${t??``}\0${e}`}async function nb(e,t,n,i={}){let a=i.getTransportIdentity??r,o=i.getGeneration??s,c=a(),l=o(),u=tb(e,t,c,l),d=()=>a()===c&&o()===l,f=eb.get(u)??Promise.resolve(),p,m=new Promise(e=>{p=e}),h=f.catch(()=>void 0).then(()=>m);eb.set(u,h);try{if(await f.catch(()=>void 0),!d())throw Error(`Session history mutation aborted because the runtime changed`);return await n({transportIdentity:c,generation:l,isCurrent:d})}finally{p(),eb.get(u)===h&&eb.delete(u)}}var rb=new Set,ib=new Set,ab=new Set,ob=new Set,sb={onDeleteRequest(e){return rb.add(e),()=>{rb.delete(e)}},requestDelete(e){!e.sessions.length&&e.mode!==`worktree`||rb.forEach(t=>t(e))},onCreateRequest(e){return ib.add(e),()=>{ib.delete(e)}},requestCreate(e){let t=e??{};ib.forEach(e=>e(t))},onDirectoryRequest(e){return ab.add(e),()=>{ab.delete(e)}},requestDirectoryDialog(){ab.forEach(e=>e())},onGitRefreshHint(e){return ob.add(e),()=>{ob.delete(e)}},requestGitRefresh(e){e.directory.trim()&&ob.forEach(t=>t(e))}},cb=e=>e.trim(),lb=(e,t,n)=>{let i=(n.getTransport??r)(),a=(n.getGeneration??s)();if(i!==e||a!==t)throw Error(`session status runtime changed`)},ub=(e,t={})=>{let n=cb(e),i=t.transport??r(),a=t.loadSnapshot??((e,t)=>B.getSessionStatusForDirectory(e,t)),o=t.now??Date.now,c=t.runtimeProbe??{},l=(c.getGeneration??s)();return nt({queryKey:N.sessionStatus.snapshot(n,i),queryFn:async({signal:e})=>{lb(i,l,c);let t=o(),r=await a(n,e);if(lb(i,l,c),r===null)throw Error(`session status snapshot unavailable`);return{snapshot:r,requestedAt:t}},staleTime:0,gcTime:3e5,retry:!1})},db=(e,t={})=>{let{client:n=L,...r}=t;return n.fetchQuery(ub(e,r))},fb=(e,t,n)=>{let i=(n.getTransport??r)(),a=(n.getGeneration??s)();if(i!==e||a!==t)throw Error(`session active runtime changed`)},pb=(e={})=>{let t=e.transport??r(),n=e.loadActive??(e=>B.getSessionActive(e)),i=e.now??Date.now,a=e.runtimeProbe??{},o=(a.getGeneration??s)();return nt({queryKey:N.sessionActive.snapshot(t,o),queryFn:async({signal:e})=>{fb(t,o,a);let r=i(),s=await n(e);return fb(t,o,a),{result:s,requestedAt:r}},staleTime:0,gcTime:3e5,retry:!1})},mb=(e={})=>{let{client:t=L,...n}=e;return t.fetchQuery(pb(n))},hb;function gb(e){hb=e}function _b(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 vb(e,t){return JSON.stringify(e)===JSON.stringify(t)}function yb(e,t){return e.type===`retry`&&typeof e.next==`number`&&e.next>t}function bb(e,t,n=Date.now()){return e.getState().session_status?.[t]?.type===`retry`&&(e.setState(e=>({session_status:{...e.session_status,[t]:{type:`busy`}},session_status_observed_at:{...e.session_status_observed_at,[t]:n}})),!0)}function xb(e,t,n,r=Date.now()){if(!e||e.state===`unsupported`||e.state===`unknown`)return t?{snapshot:t,source:`legacy`}:{snapshot:null,source:`none`};let i=e.membership,a=t??{},o=new Set([...n,...Object.keys(a)]);if(o.size===0)return{snapshot:null,source:`none`};let s={};for(let e of o){let t=Object.prototype.hasOwnProperty.call(i,e),n=_b(a[e]);if(t){s[e]=n&&yb(n,r)?n:{type:`busy`};continue}s[e]=(n?.type===`retry`||n?.type===`busy`||n?.type,{type:`idle`})}return{snapshot:s,source:`fused`}}function Sb(e,t,n,r){if(n.length===0)return!1;let i=!1;return e.setState(e=>{let a=e.session_status??{},o,s,c=()=>o??={...a},l=()=>s??={...e.session_status_observed_at},u=t=>{r!==void 0&&e.session_status_observed_at[t]!==r&&(l()[t]=r,i=!0)};for(let o of n){if(r!==void 0&&(e.session_status_observed_at[o]??-1/0)>=r)continue;let n=_b(t[o]);if(n&&n.type!==`idle`){vb(a[o],n)||(c()[o]=n,i=!0),u(o);continue}let s=a[o];(!s||s.type!==`idle`)&&(c()[o]={type:`idle`},i=!0),u(o)}return!o&&!s?e:{...o?{session_status:o}:{},...s?{session_status_observed_at:s}:{}}}),i}function Cb(e,t){return Array.from(new Set([...e,...Object.keys(t)]))}async function wb(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 db(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 mb({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}=xb(l,h,n);if(!_||v===`none`)return null;let y=[c?.requestedAt,u].filter(e=>typeof e==`number`&&Number.isFinite(e));if(y.length===0)return null;let b=Math.min(...y),x=Cb(n,_);if(x.length===0)return null;t.setState({session_status_snapshot_at:b}),Sb(t,_,x,b);let S=r.onAuthoritativeGlobalStatusConverge??hb;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 Tb({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:wb(e,n,[t],{isStale:s,loadSnapshot:c,loadActive:l,now:u,queryClient:d,runtimeProbe:f,transport:p,skipActive:m})}var Eb=50,Db=e=>{let t=Object.keys(e);if(t.length<=Eb)return e;let n=t.map(t=>[t,e[t].touchedAt]).sort((e,t)=>e[1]-t[1]).slice(0,t.length-Eb).map(([e])=>e),r={...e};for(let e of n)delete r[e];return r},Ob=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:Db(r)})})},getSessionTodos:e=>{if(e)return t().sessions[e]?.todos}}),{name:`openchamber-session-todos`,version:1,storage:h(),partialize:e=>({sessions:e.sessions})}),{name:`TodosPersistStore`})),kb=new Set([`todowrite`,`todoread`]),Ab=new Set([`error`,`aborted`,`failed`,`cancelled`,`canceled`,`timeout`]),jb=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),Mb=(e,t)=>{Ob.getState().setSessionTodos(e,t)},Nb=e=>{if(e.type!==`tool`)return``;let t=e.tool;return typeof t==`string`?t.trim().toLowerCase():``},Pb=e=>{let t=e.state;return typeof t?.status==`string`?t.status.trim().toLowerCase():void 0},Fb=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},Ib=e=>{if(!Array.isArray(e))return[];let t=[];for(let n of e){let e=Fb(n);e&&t.push(e)}return t},Lb=e=>{try{let t=JSON.parse(e);if(Array.isArray(t))return Ib(t);if(t&&typeof t==`object`)return Ib(t.todos)}catch{}return[]},Rb=e=>{if(!kb.has(Nb(e)))return[];let t=Pb(e);if(t&&Ab.has(t))return[];let n=e.state,r=Ib(n?.input?.todos);if(r.length>0)return r;let i=n?.output;if(Array.isArray(i)){let e=Ib(i);if(e.length>0)return e}if(i&&typeof i==`object`){let e=Ib(i.todos);if(e.length>0)return e}return typeof i==`string`&&i.trim().length>0?Lb(i):[]};function zb(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=Rb(r[e]);if(t.length>0)return t}}return[]}function Bb(e){if(!e.sessionID||e.isStale?.()||jb(e.store.getState().todo,e.sessionID))return!1;let t=zb(e.transcript);return t.length===0||e.isStale?.()||jb(e.store.getState().todo,e.sessionID)?!1:(e.store.setState(n=>({todo:{...n.todo,[e.sessionID]:t}})),e.persist?.(e.sessionID,t),!0)}function Vb(e){if(!e.sessionID||!e.directory||e.isStale?.())return!1;let t=e.transcript??H()?.getTranscript(U(e.directory,e.sessionID));return t?Bb({sessionID:e.sessionID,store:e.store,transcript:t,persist:Mb,isStale:e.isStale}):!1}var Hb=t({COMBINED_SEND_CONFIRMATION_RECOVERY:()=>VS,COMBINED_SEND_PRESENCE_GRACE_MS:()=>BS,SESSION_DELETE_UNDO_MS:()=>dS,abortBusySessionForMessageEdit:()=>tC,abortCurrentOperation:()=>KS,archiveSession:()=>xS,beginOptimisticSend:()=>jS,cancelScheduledSessionDeletes:()=>bS,classifySendFailure:()=>Fx,combinedSendConfirmationOptions:()=>HS,commitMessageEdit:()=>rC,createSession:()=>aS,deleteSession:()=>vS,dirStoreForDirectory:()=>bx,dismissOpenQuestionsForSession:()=>XS,ensureSentUserMessagePresence:()=>GS,fetchMessagesForSession:()=>lC,fetchRecentSendConfirmationRecords:()=>RS,forkSession:()=>sC,getSendFailureKind:()=>Nx,getSessionLastAssistantModel:()=>Ex,isQuestionRequestNotFoundError:()=>nS,materializeConfirmedSendRecords:()=>zS,mirrorSessionIntoLiveStores:()=>Ox,optimisticInsertUserMessage:()=>IS,optimisticSend:()=>FS,patchSessionMetadata:()=>oS,refetchSessionMessages:()=>aC,rejectQuestion:()=>YS,releaseUnconfirmedQueueSend:()=>_x,requestSessionSmartTitle:()=>wS,resolveForkMessageId:()=>tx,respondToPermission:()=>qS,respondToQuestion:()=>JS,revertToMessage:()=>ZS,rollbackOptimisticSend:()=>NS,scheduleSessionDeletes:()=>yS,setActionRefs:()=>hx,setOptimisticRefs:()=>gx,settleOptimisticSend:()=>PS,shareSession:()=>TS,shouldSuppressForkCopyEvent:()=>rx,stageMessageEdit:()=>$S,trackForkCopySessionCreated:()=>Zb,unarchiveSession:()=>SS,unrevertSession:()=>oC,unshareSession:()=>ES,updateSessionTitle:()=>CS,waitForConnectionOrThrow:()=>zx,waitForSessionIdleForMessageEdit:()=>nC}),Ub=2,Wb=150,Gb=new Set([`patch`,`step-start`,`step-finish`]),Kb=3,qb=150,Jb=null,Yb=new Map,Xb=3e4;function Zb(e,t){let n=t?.id;!Jb||Jb.runtimeKey!==i()||Jb.directory!==e||!n||t?.title!==Jb.expectedTargetTitle||n===Jb.sourceSessionID||Jb.targetSessionID||(Jb.targetSessionID=n)}function Qb(e){let t=e.match(/^(.+) \(fork #(\d+)\)$/);return t?`${t[1]} (fork #${Number.parseInt(t[2],10)+1})`:`${e} (fork #1)`}async function $b(e,t){$.setState(n=>n.forkTransition?.operationId===e?{forkTransition:{...n.forkTransition,stage:t}}:n),await new Promise(e=>setTimeout(e,0))}function ex(e,t){$.setState(n=>n.forkTransition?.operationId===e?{forkTransition:{...n.forkTransition,targetSessionId:t}}:n)}function tx(e,t,n){if(e){let n=t.findIndex(t=>t.id===e);return n===-1||t[n]?.role!==`assistant`?e:t[n+1]?.id}if(!n||n.type===`idle`)return e;for(let e=t.length-1;e>=0;--e)if(t[e]?.role===`user`)return t[e].id}async function nx(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 B.updateSession(e.id,{metadata:{...n,openchamber:{...r,titleRefresh:{...i,activityUpdatedAt:Date.now()}}}},t)}function rx(e,t,n){if(Jb&&Jb.runtimeKey===i()&&Jb.directory===e&&t&&t===Jb.targetSessionID)return!0;if(!t||!n)return!1;let r=`${i()}:${e}:${t}`,a=Yb.get(r);return a?a.expiresAt<=Date.now()?(Yb.delete(r),!1):n<=a.messageID:!1}var ix=null,ax=null,ox=()=>``,sx=new Map,cx=null,lx=null,ux=null,dx=e=>new Promise(t=>setTimeout(t,e));function fx(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 px(e,t){if(!e.error)return e.data;let n=e.response?.status,r=Error(`${t} failed${n?` (${n})`:``}: ${fx(e.error)}`);throw n!==void 0&&(r.status=n),r}function mx(e,t){let n=px(e,t);if(n==null)throw Error(`${t} failed: empty response`);return n}function hx(e,t,n){if(ix=e,ax=t,ox=n,sx.size>0){let e=[...sx.values()];sx.clear(),queueMicrotask(()=>{for(let t of e)lC(t.sessionID,t.directory)})}}function gx(e,t,n){cx=e,lx=t,ux=n??null}function _x(e){let t=e.directory??null;lx?.({sessionID:e.sessionID,directory:t,messageID:e.messageID})}function vx(){if(!ix)throw Error(`SDK not initialized — is SyncProvider mounted?`);return ix}function yx(){if(!ax)throw Error(`Child stores not initialized`);let e=ox();if(!e)throw Error(`No current directory`);return ax.ensureChild(e)}function bx(e,t){if(!ax)throw Error(`Child stores not initialized`);if(!e)throw Error(`No directory`);return ax.ensureChild(e,t)}function xx(e,t){let n=t??Gx(e);return n?{store:bx(n),directory:n}:{store:yx(),directory:kx()}}function Sx(e,t){let{store:n,directory:r}=xx(e,t??void 0),i=r??kx()??``;return{repository:H()??_u(i,n),directory:i,store:n}}function Cx(e,t){let{repository:n,directory:r,store:i}=Sx(e,t);return{repository:n,directory:r,store:i,data:n.getTranscript(U(r,e))}}function wx(e,t){return Uu(Cx(e,t).data)}function Tx(e,t){return Cx(e,t).data.messageOrder.length}function Ex(e){try{let t=wx(e);for(let e=t.length-1;e>=0;--e){let n=t[e];if(n?.role===`assistant`&&typeof n.providerID==`string`&&n.providerID&&typeof n.modelID==`string`&&n.modelID)return{providerID:n.providerID,modelID:n.modelID}}return null}catch{return null}}function Dx(e,t){let n=ax;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]=pE(e,n[r]),t.setState({session:i}),!0}return!1}function Ox(e,t){t&&Dx(e,t)||Dx(e)}function kx(){return ox()||void 0}function Ax(){let{hasEverConnected:e,lastDisconnectReason:t}=G.getState(),n=t?` (${t})`:e?``:` (never connected)`;return Error(`Connection lost${n}. Please wait for reconnection.`)}function jx(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 Mx=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 Nx(e){return e instanceof Mx?e.kind:null}function Px(e){let t=jx(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 Fx(e,t){return t?Px(e)||jx(e)===null?`ambiguous-dispatched`:`definitive-rejection`:`pre-dispatch`}var Ix=2e3,Lx=5e3,Rx=3e4;async function zx(){let e=km();e&&Om(`send_stream_stale`);let t=Date.now()+(e?Lx:Ix);for(;Date.now()<t;){if(G.getState().isConnected&&!km()||o()&&!km())return;let e=t-Date.now();if(e<=0)break;if(await G.getState().probeConnection({timeoutMs:Math.min(500,e)})&&!km())return;let n=Math.min(100,t-Date.now());n>0&&await new Promise(e=>setTimeout(e,n))}throw Ax()}function Bx(e){return new Promise((t,n)=>{let r=setTimeout(()=>{Om(`send_timeout`),n(new DOMException(`Send timed out`,`TimeoutError`))},Rx);e.then(e=>{clearTimeout(r),t(e)},e=>{clearTimeout(r),n(e)})})}function Vx(e){let t=Y.getState();return[...t.activeSessions,...t.archivedSessions].find(t=>t.id===e)??null}function Hx(e){e&&Y.getState().upsertSession(e)}function Ux(e,t){let n=ap(t),r=[...e.getState().session],i=ss.search(r,n.id,e=>e.id);if(i.found){let t=pE(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 Wx(e,t,n){let r=t.getState().session.find(t=>t.id===e);if(r)return r;let i=Vx(e);if(i)return Ux(t,i);try{return Ux(t,await B.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 Gx(e){return Kx(e)||$.getState().getDirectoryForSession(e)||kx()}function Kx(e){let t=ax;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 qx(e){let t=e?$.getState().getDirectoryForSession(e):null;return t?B.getScopedSdkClient(t):vx()}function Jx(e){Dr.getState().clearAttachedFiles();for(let t of e){let e=typeof t.url==`string`?t.url:``,n=typeof t.mime==`string`?t.mime:`application/octet-stream`,r=typeof t.filename==`string`?t.filename:`attachment`;e&&Dr.getState().addRestoredAttachment({url:e,mimeType:n,filename:r})}}var Yx=()=>new Map(Array.from(Md(),([e,t])=>[e,t.title||e]));function Xx(e){return!(e.type!==`file`||Yp(e))}function Zx(e){return Xx(e)?e.slim===!0||typeof e.url!=`string`||e.url.length===0:!1}function Qx(e){return e.some(Zx)}async function $x(e){let t=[...e.parts];if(!Qx(t))return t;let n=s(),r=e.directory??``;try{await wu(r,e.sessionID,e.messageID,{priority:`user`})}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(`composer-restoration-materialize-failed: ${t}`)}if(e.isCurrent&&!e.isCurrent()||s()!==n)throw Error(`Session history mutation aborted because the runtime changed`);let{repository:i,directory:a}=Sx(e.sessionID,r);if(t=[...i.getParts(U(a,e.sessionID),e.messageID)],Qx(t))throw Error(`composer-restoration-incomplete-attachment`);return t}async function eS(e){if(Qx(e.parts))throw Error(`composer-restoration-incomplete-attachment`);let t=await um(e.parts,{sessionTitles:Yx(),directory:e.directory}),n=Dr.getState(),r=n.getDraft(e.key);return{payload:t,commit:await hm({key:e.key,expectedRevision:r?.revision??`absent`,payload:t,runtime:n.captureDraftRuntime()})}}function tS(e,t,n){let r=ax;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 rS(e,t){let n=ax;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 iS(e,t,n){let r=tS(e,t,n);return r?B.getScopedSdkClient(r):qx(t)}async function aS(e,t,n,r){try{let i=await B.createSession({title:e,parentID:n??void 0,metadata:r},t??kx()),a=i.directory??null;return a&&wd(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 oS(e,t,n){let r=t??Gx(e),i=n(Fp(await B.getSession(e,r))),a=await B.updateSession(e,{metadata:i},r);Y.getState().upsertSession(a);let o=a.directory??r;return o&&wd(a.id,o),a}async function sS(e,t){let n;try{n=await B.getSession(e,t??Gx(e))}catch{return}if(!zp(n))return;let r=Rp(n);if(r)try{await oS(r,t??Gx(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 cS(e,t){if(!ax)return[];let n=[],r=new Set,i=[];if(t){let e=ax.children.get(t);e&&(i.push([t,e]),r.add(t))}for(let e of ax.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 lS(e){if(ax)for(let t of e){let e=ax.children.get(t.directory);e&&e.setState({session:t.sessions})}}function uS(e){$.getState().setWorktreeMetadata(e,null)}var dS=1e4,fS=new Map,pS=0;function mS(e){if(e.time?.archived===void 0)return e;let t={...e.time};return delete t.archived,{...e,time:t}}function hS(e){Y.getState().clearSessionsPendingDeletion([e.sessionId]),lS(e.listSnapshots),Hx(e.globalSnapshot),e.wasCurrent&&$.getState().setCurrentSession(e.sessionId,e.directory??null)}function gS(e,t){let n=t??Gx(e);Y.getState().markSessionsPendingDeletion([e]);let r=cS(e,n),i=Vx(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 _S(e,t){try{if(await sS(e,t),await B.deleteSession(e,t)!==!0)throw Error(`session.delete failed: server did not confirm deletion`);return cS(e,t),Y.getState().removeSessions([e]),uS(e),Y.getState().clearSessionsPendingDeletion([e]),!0}catch(n){return console.error(`[session-actions] commitRemovedSessionDelete failed`,n),n?.status===404&&(cS(e,t),Y.getState().removeSessions([e]),uS(e),Y.getState().clearSessionsPendingDeletion([e]),!0)}}async function vS(e,t){let n=gS(e);return await _S(e,n.directory)?!0:(hS(n),!1)}function yS(e,t){let n=Array.from(new Set(e.filter(Boolean)));if(n.length===0)return{batchId:``,scheduledIds:[]};let r=n.map(e=>gS(e)),i=`session-delete-${Date.now()}-${pS+=1}`,a=t?.delayMs??1e4,o=setTimeout(()=>{(async()=>{let e=fS.get(i);if(!e)return;fS.delete(i);let t=[],n=[];for(let r of e.entries)await _S(r.sessionId,r.directory)?t.push(r.sessionId):(n.push(r.sessionId),hS(r));e.onSettled?.({deletedIds:t,failedIds:n})})()},a);return fS.set(i,{entries:r,timer:o,onSettled:t?.onSettled}),{batchId:i,scheduledIds:n}}function bS(e){if(!e)return!1;let t=fS.get(e);if(!t)return!1;clearTimeout(t.timer),fS.delete(e);for(let e of[...t.entries].reverse())hS(e);return!0}async function xS(e){let t=Gx(e),n=cS(e,t),r=Vx(e),i=Date.now();Y.getState().archiveSessions([e],i);let a=$.getState();a.currentSessionId===e&&a.setCurrentSession(null);try{await sS(e,t);let n=await B.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),lS(n),Hx(r),!1}}async function SS(e){let t=Gx(e),n=Vx(e),r=n?mS(n):null;if(r&&(Y.getState().upsertSession(r),t&&ax)){let e=ax.children.get(t);e&&Ux(e,r)}try{let n=await B.updateSession(e,{time:{archived:0}},t);if(!n)throw Error(`session.update failed: server did not return the unarchived session`);let r=mS(n);if(Y.getState().upsertSession(r),t&&ax){let e=ax.children.get(t);e?Ux(e,r):Ox(r,t)}else Ox(r,t);return!0}catch(r){return console.error(`[session-actions] unarchiveSession failed`,r),n&&(Y.getState().upsertSession(n),n.time?.archived&&cS(e,t)),!1}}async function CS(e,t){let n=Gx(e),r=Vx(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 B.updateSession(e,{title:t,metadata:{...i,openchamber:{...a,titleRefresh:{...o,activityUpdatedAt:s}}}},n);Y.getState().upsertSession(c),Ox(c,n)}async function wS(e){let t=Gx(e),n=Vx(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 B.updateSession(e,{metadata:{...r,openchamber:{...i,titleRefresh:{...a,...o?{lastAutoTitle:o}:{},requestedAt:Date.now()}}}},t);Y.getState().upsertSession(s),Ox(s,t)}async function TS(e){let t=Gx(e),n=ap(mx(await vx().session.share({sessionID:e,directory:t}),`session.share`));return Y.getState().upsertSession(n),Dx(n,t),n}async function ES(e){let t=Gx(e),n=ap(mx(await vx().session.unshare({sessionID:e,directory:t}),`session.unshare`));return Y.getState().upsertSession(n),Dx(n,t),n}function DS(e){let t=ax,n=e??ox();if(!t||!n)return{store:e?bx(e):yx(),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 OS(){return{identity:r(),generation:s()}}function kS(e,t){return e.isCurrent()&&r()===t.identity&&s()===t.generation}function AS(e,t){if(!kS(e,t))throw Error(`Send target changed before transport dispatch`)}function jS(e){if(!cx||!lx)throw new Mx(`pre-dispatch`,Error(`Optimistic refs not set — is useSync() mounted?`));try{let t=e.directory??kx()??null,n=DS(t),r=OS();AS(n,r),e.beforeOptimisticInsert?.(),AS(n,r);let i=e.messageID??ge(`msg`);return e.onMessageID?.(i),$.getState().markMessageSending?.(e.sessionId,i),IS({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 Mx?e:new Mx(Nx(e)??Fx(e,!1),e)}}function MS(e){if(!kS(e.capture,e.transport)||!lx)return;lx({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 NS(e){MS(e),$.getState().clearMessageSending?.(e.sessionId,e.messageID)}async function PS(e){if(!cx||!lx)throw new Mx(`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 zx(),AS(n,r),s=!0,await Bx(e.send(i)),!kS(n,r))throw new Mx(`ambiguous-dispatched`,Error(`Send target changed after transport dispatch`),i);e.onSendConfirmed?.(i)}catch(c){let l=Nx(c)??Fx(c,s),u=c instanceof Mx?c:new Mx(l,c,i);if(!kS(n,r))throw u;let d=l===`ambiguous-dispatched`&&!e.preserveOptimisticOnAmbiguous?await RS(a,i,o):null;if(d&&kS(n,r)){zS(n.store,a,i,d,{directory:o??void 0}),ux?.({sessionID:a,directory:o,messageID:i});return}throw e.preserveOptimisticOnAmbiguous&&l===`ambiguous-dispatched`||MS(t),u}finally{$.getState().clearMessageSending?.(a,i)}}async function FS(e){await PS({ticket:e.ticket??jS({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 IS(e){if(!cx)return!1;let t=e.directory??kx(),n=t?bx(t):yx(),i=t??kx()??``;if(US(n,e.sessionId,e.messageID,i)){let t=n.getState(),r=Date.now();return n.setState({session_status:{...t.session_status,[e.sessionId]:{type:`busy`}},session_status_observed_at:{...t.session_status_observed_at,[e.sessionId]:r}}),!1}let a=e.parts?e.parts.map(t=>({...t,id:typeof t.id==`string`&&t.id?t.id:ge(`prt`),messageID:e.messageID,sessionID:e.sessionId,__openchamberOptimistic:!0})):[{id:ge(`prt`),type:`text`,text:e.content,messageID:e.messageID,sessionID:e.sessionId,__openchamberOptimistic:!0}];if(!e.parts&&e.files)for(let t of e.files)a.push({id:ge(`prt`),messageID:e.messageID,sessionID:e.sessionId,type:`file`,mime:t.mime,url:t.url,filename:t.filename,__openchamberOptimistic:!0});let o=Date.now(),c={id:e.messageID,role:`user`,sessionID:e.sessionId,parentID:``,modelID:e.modelID,providerID:e.providerID,system:``,agent:e.agent??``,model:`${e.providerID}/${e.modelID}`,metadata:{},time:{created:o,completed:0}},l=wv(()=>Cx(e.sessionId,t).data);cx({sessionID:e.sessionId,directory:t,message:c,parts:a});let u=wv(()=>Cx(e.sessionId,t).data);try{l&&u&&Tv({trigger:`user-send`,sessionID:e.sessionId,directory:i,transport:r(),generation:s(),before:l,after:u})}catch{}let d=n.getState();return n.setState({session_status:{...d.session_status,[e.sessionId]:{type:`busy`}},session_status_observed_at:{...d.session_status_observed_at,[e.sessionId]:o}}),!0}function LS(e){if(!e)return!0;try{return e()===!0}catch{return!1}}async function RS(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??Ub,c=r?.retryDelayMs??Wb;try{for(let a=0;a<s;a+=1){if(i?.signal.aborted||!LS(r?.isCurrent)||a>0&&(await dx(c),i?.signal.aborted||!LS(r?.isCurrent)))return null;try{let a=await vx().session.messages({sessionID:e,directory:n??void 0,limit:Zm(),...i?{signal:i.signal}:{}});if(!LS(r?.isCurrent))return null;let o=(px(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 zS(e,t,n,r,i){if(!r.length)return;let a=i?.directory??Gx(t)??ox(),o=U(a,t),s={type:`materialize-snapshots`,records:r.map(e=>({info:sp(e.info),parts:e.parts??[]})),skipPartTypes:Gb,merge:i?.gapFillOnly===!0?qs:Ys({purpose:`recovery`})};yu(o,s)||_u(a,e).apply(o,s)}var BS=2e3,VS={attempts:12,retryDelayMs:500},HS={presenceGraceMs:BS,recovery:{...VS}};function US(e,t,n,r){let i=r??Gx(t)??ox()??``,a=H()??_u(i,e),o=U(i,t);return a.getMessage(o,n)?a.getParts(o,n).length>0:!1}function WS(e,t,n,r){let i=r?.directory??Gx(t)??ox()??``;if(US(e,t,n,i))return Promise.resolve(!0);if(!LS(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=U(i,t);c.unsubscribe=d.subscribe(f,()=>{if(!LS(r?.isCurrent)){l(!1);return}US(e,t,n,i)&&l(!0)}),US(e,t,n,i)&&l(!0)})}async function GS(e){let{store:t,sessionId:n,messageID:r,directory:i,isCurrent:a}=e;if(await WS(t,n,r,{timeoutMs:e.graceMs??HS.presenceGraceMs,isCurrent:a,directory:i}))return`present`;if(!LS(a))return`cancelled`;let o=await RS(n,r,i,{...HS.recovery,isCurrent:a});return o?LS(a)?(zS(t,n,r,o,{gapFillOnly:!0,directory:i??void 0}),`recovered`):`cancelled`:LS(a)?`missing`:`cancelled`}async function KS(e){let{store:t,directory:n}=xx(e),i=n?{state:`bound`,transportIdentity:r(),directory:n,sessionID:e}:null,a=i?$.getState().beginQueueAbortBlock(i):null;try{if(mx(await vx().session.abort({sessionID:e,directory:n}),`session.abort`)!==!0)throw Error(`Session abort failed`);let r=t.getState();t.setState({session_status:{...r.session_status,[e]:{type:`idle`}},session_status_observed_at:{...r.session_status_observed_at,[e]:Date.now()}})}catch(t){i&&a&&$.getState().clearQueueAbortBlock(i,a),Xe(async()=>{let{rollbackQueueAbortOptimistic:e}=await Promise.resolve().then(()=>VB);return{rollbackQueueAbortOptimistic:e}},void 0).then(({rollbackQueueAbortOptimistic:t})=>{t(e)}).catch(()=>{}),console.error(`[session-actions] abort failed`,t)}}async function qS(e,t,n){await zx();let r=tS(`permission`,e,t)||Gx(e)||kx();if(mx(await iS(`permission`,e,t).permission.reply({requestID:t,reply:n,...r?{directory:r}:{}}),`permission.reply`)!==!0)throw Error(`Permission reply failed`)}async function JS(e,t,n){await zx();let r=tS(`question`,e,t)||Gx(e)||kx();try{let i=n.length===0?[]:Array.isArray(n[0])?n:[n];if(mx(await iS(`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)&&rS(e,t),n}}async function YS(e,t){await zx();let n=tS(`question`,e,t)||Gx(e)||kx();try{if(mx(await iS(`question`,e,t).question.reject({requestID:t,...n?{directory:n}:{}}),`question.reject`)!==!0)throw Error(`Question rejection failed`)}catch(n){throw nS(n)&&rS(e,t),n}}async function XS(e){if(!e)return!1;let t=ax;if(!t)return!1;let n=[];for(let[,r]of t.children){let t=r.getState(),i=Wp(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)rS(e,t);return await Promise.all(n.map(async({sessionId:e,requestId:t})=>{try{await YS(e,t)}catch(e){if(nS(e))return;console.error(`[session-actions] Failed to dismiss open question on send:`,e)}})),!0}async function ZS(e,t,n){let i=typeof n==`string`?n:n?.directory,a=typeof n==`string`?void 0:n?.draftKey,o=typeof n==`string`||n?.restorePrimaryInput!==!1,s=a!==null&&(a!==void 0||o);return nb(e,i??(()=>{try{return xx(e,i).directory}catch{return i}})(),async({isCurrent:n})=>{let{store:o,directory:c}=xx(e,i);if(!n())throw Error(`Session history mutation aborted because the runtime changed`);let l=o.getState().session_status[e];if(l&&l.type!==`idle`){try{await vx().session.abort({sessionID:e,directory:c})}catch{}if(!n())throw Error(`Session history mutation aborted because the runtime changed`)}let u=wx(e,c).find(e=>e.id===t),d=wx(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}=Sx(e,c),m=[...f.getParts(U(p,e),t)],h=a===void 0?s?C({transportIdentity:r()},e):null:a,g={snapshot:{text:``,attachments:[],syntheticParts:[],mentions:[]},values:new Map},_,v;if(h){try{m=await $x({directory:p,sessionID:e,messageID:t,parts:m,isCurrent:n}),g=await um(m,{sessionTitles:Yx(),directory:c})}catch(e){throw e instanceof Error&&(e.message.startsWith(`composer-restoration-materialize-failed`)||e.message===`composer-restoration-incomplete-attachment`||e.message.includes(`runtime changed`))?e:Error(`composer-restoration-invalid-payload`)}if(!n())throw Error(`Session history mutation aborted because the runtime changed`)}let y=o.getState(),b=y.session.find(t=>t.id===e)?.revert,x=[...y.session],S=x.findIndex(t=>t.id===e),w={};if(S>=0&&(x[S]={...x[S],revert:{messageID:t}},w.session=x),!n())throw Error(`Session history mutation aborted because the runtime changed`);if(o.setState(w),h){let t=Dr.getState(),r=await hm({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 _m({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 B.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 _m({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&&sb.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 _m({key:h,restoredRevision:_,previous:v})):t instanceof Error&&t.message.includes(`runtime changed`)||(o.setState({session:r}),h&&v&&_!==void 0&&await _m({key:h,restoredRevision:_,previous:v}).catch(()=>void 0)),t}})}function QS(e,t,n,i){let a=i??Gx(t)??ox(),o=U(a,t),c=wv(()=>Cx(t,a).data),l=[...vu(t)];l.some(e=>e.directory===a&&e.sessionID===t)||l.push(o);let u=!1;for(let e of l)yu(e,{type:`remove-message`,messageID:n})!=null&&(u=!0);u||_u(a,e).apply(o,{type:`remove-message`,messageID:n});let d=wv(()=>Cx(t,a).data);try{c&&d&&Tv({trigger:`user-delete`,sessionID:t,directory:a,transport:r(),generation:s(),before:c,after:d})}catch{}}async function $S(e,t,n,i){let a=n?.info,o=n?.parts,s=i?.directory,c;if(n){let r=n.info;if(r.id!==t||r.sessionID!==e||r.role!==`user`)throw Error(`The selected user message is unavailable`);c=xx(e,s).directory}else{c=xx(e,s).directory;let{data:n}=Cx(e,c),r=Uu(n),i=r.findIndex(e=>e.id===t),l=i>=0?r[i]:void 0;if(!l||l.role!==`user`)throw Error(`The selected user message is unavailable`);a=l,o=Object.prototype.hasOwnProperty.call(n.partsByMessageID,t)?[...n.partsByMessageID[t]??[]]:void 0}if(!a||n&&o===void 0)throw Error(`The selected user message is unavailable`);let l=i?.draftKey??C({transportIdentity:r()},e),{commit:u}=await eS({key:l,parts:await $x({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 _m({key:l,restoredRevision:d,previous:f})).status})}}function eC(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 tC(e,t){let n=t?.directory,{store:r,directory:i}=xx(e,n),a=r.getState().session_status[e];if(!(!a||a.type===`idle`))try{await vx().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}=xx(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 rC(e,t,n){let i=n?.directory,a=n?.preserveMessageId??$.getState().pendingSendMessageIDs.get(e),{store:o,directory:c}=xx(e,i),l=wv(()=>Cx(e,i).data);try{await tC(e,{directory:i}),await nC(e,{directory:i});let n=new Set((await iC(e,i)).map(e=>e.id)),r=eC(t,wx(e,i),n,{preserveMessageId:a});for(let t of[...r].reverse())await B.deleteSessionMessage(e,t.id,c),QS(o,e,t.id,c)}finally{try{let t=wv(()=>Cx(e,i).data);l&&t&&Tv({trigger:`user-edit`,sessionID:e,directory:c,transport:r(),generation:s(),before:l,after:t})}catch{}}}async function iC(e,t){let{directory:n}=xx(e,t);return(px(await vx().session.messages({sessionID:e,directory:n,limit:Xm()}),`session.messages`)??[]).filter(e=>!!e?.info?.id).map(e=>sp(e.info))}async function aC(e,t){let{store:n,directory:i}=xx(e,t),a=wv(()=>Cx(e,t).data),o=(px(await vx().session.messages({sessionID:e,directory:i,limit:Xm()}),`session.messages`)??[]).filter(e=>!!e?.info?.id);if(o.length===0){try{let n=wv(()=>Cx(e,t).data);a&&n&&Tv({trigger:`materialize`,sessionID:e,directory:i,transport:r(),generation:s(),purpose:`refetch`,before:a,after:n})}catch{}return[]}let c=o.map(e=>({info:sp(e.info),parts:e.parts??[]})),l=U(i??ox(),e);yu(l,{type:`materialize-snapshots`,records:c,skipPartTypes:Gb})||_u(i??ox(),n).apply(l,{type:`materialize-snapshots`,records:c,skipPartTypes:Gb});try{let n=wv(()=>Cx(e,t).data);a&&n&&Tv({trigger:`materialize`,sessionID:e,directory:i,transport:r(),generation:s(),purpose:`refetch`,before:a,after:n})}catch{}return c.map(e=>e.info)}async function oC(e,t){return nb(e,t??(()=>{try{return xx(e,t).directory}catch{return t}})(),async({isCurrent:n})=>{let{store:r,directory:i}=xx(e,t);if(!n())throw Error(`Session history mutation aborted because the runtime changed`);let a=r.getState(),o=Tx(e,i),s=a.session_status[e];if(s&&s.type!==`idle`){try{await vx().session.abort({sessionID:e,directory:i})}catch{}if(!n())throw Error(`Session history mutation aborted because the runtime changed`)}let c=await vx().session.unrevert({sessionID:e,directory:i});if(!n())throw Error(`Session history mutation aborted because the runtime changed`);let l=mx(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<Kb;r+=1){if(r>0&&(await dx(qb),!n())||(await aC(e,t),!n()))throw Error(`Session history mutation aborted because the runtime changed`);if(Tx(e,i)>o)return}if(Tx(e,i)<=o){let n=i??ox(),a=H()??_u(n,r),o=U(n,e);typeof a.destructiveReset==`function`?await a.destructiveReset(o):await aC(e,t)}})}async function sC(e,t,n,r){let a=i(),{store:o,directory:s}=xx(e,r);if(!s)throw Error(`Fork session directory is unavailable`);let c=await Wx(e,o,s);wd(e,s);let l=o.getState(),u=l.session_status[e],d=wx(e,s);u?.type,d.length;let f=tx(n,d,u);if(!n&&l.session_status[e]?.type!==`idle`&&!f&&(await aC(e),l=o.getState(),u=l.session_status[e],d=wx(e,s),f=tx(void 0,d,u)),!n&&l.session_status[e]?.type!==`idle`&&!f)throw console.error(`[session-fork] active session has no user message fork point`,{operationId:t,sessionId:e,statusType:l.session_status[e]?.type??`unknown`,messageCount:Tx(e,s)}),Error(`Fork source user message is unavailable`);l.session_status[e]?.type;let{repository:p,data:m}=Cx(e,s),h=(n?m.messagesByID[n]??d.find(e=>e.id===n):void 0)?.role===`user`,g=h&&n?[...p.getParts(U(s,e),n)]:[],_=``;_=g.filter(e=>e.type===`text`&&!Yp(e)).map(e=>e.text||e.content||``).join(`
462
462
  `).trim();let v=g.filter(e=>e.type===`file`&&!Yp(e));Jb={operationId:t,runtimeKey:a,directory:s,sourceSessionID:e,expectedTargetTitle:Qb(c.title)},await $b(t,`copying`);let y;try{if(y=await B.forkSession(e,f,s),y.id,i()!==a)return console.warn(`[session-fork] runtime changed while fork was in progress`,{operationId:t,sessionId:e,forkedSessionId:y.id}),Jb?.operationId===t&&(Jb=null),!1;await $b(t,`opening`);try{y=await nx(y,s)}catch(e){console.warn(`[session-actions] failed to promote forked session`,e)}}catch(e){throw Jb?.operationId===t&&(Jb=null),e}try{let r=[...o.getState().session],a=ss.search(r,y.id,e=>e.id);a.found||(r.splice(a.index,0,y),o.setState({session:r}));let c=U(s,y.id),l=H();l&&typeof l.destructiveReset==`function`?await l.destructiveReset(c):yu(c,{type:`reset`}),ex(t,y.id);let u=$.getState().currentSessionId,d=u===e||u===y.id;d&&$.getState().setCurrentSession(y.id,s),await $b(t,`loading`),y.id;let f=H()??_u(s,o),p=U(s,y.id),m=f.getRequestState?.(p);(!(f.hasSession?.(p)??!1)||m?.status===`error`)&&await lC(y.id,s);let g=wx(y.id,s).at(-1)?.id;g&&Yb.set(`${i()}:${s}:${y.id}`,{messageID:g,expiresAt:Date.now()+Xb}),d&&h&&_&&Dr.setState({pendingInputText:_,pendingInputMode:`replace`}),d&&h&&n&&Jx(v)}finally{Jb?.operationId===t&&(Jb=null)}return y.id,!0}var cC=new Map;async function lC(e,t){let n=t??kx();if(!n)return;let r=i(),a=Ym(),o=`${r}:${n}:${e}:${a}`;if(!ix||!ax){sx.set(o,{sessionID:e,directory:n});return}let s=cC.get(o);if(s)return s;let c=uC(e,n,r,a).finally(()=>{cC.get(o)===c&&cC.delete(o)});return cC.set(o,c),c}async function uC(e,t,n,r){vx();let i=bx(t),a=i.getState(),o=a.session_status?.[e],s=a.session_status_observed_at?.[e],c=H()??_u(t,i),l=U(t,e),u=c.getTranscript(l),d=c.getPagination(l),f=c.getRequestState?.(l),p=e=>e.role===`user`||e.clientRole===`user`,m=u.messageOrder.map(e=>u.messagesByID[e]).filter(e=>!!e),h=m.some(p),g=d.boundary,_=g.kind===`has-more`||g.kind===`exhausted`,v=(c.hasSession?.(l)??m.length>0)&&(h||g.kind===`exhausted`)&&_&&f?.status!==`error`,y=()=>$.getState().currentSessionId!==e;if(v){if(Pm(t,e)){Vb({directory:t,sessionID:e,store:i,transcript:u});return}if(H()){try{await xu(t,e)}catch{return}if(y())return;Vb({directory:t,sessionID:e,store:i,isStale:y}),await Tb({directory:t,sessionID:e,store:i,statusBeforePull:o,statusObservedAtBeforePull:s,hasMessages:c.getTranscript(l).messageOrder.length>0});return}Vb({directory:t,sessionID:e,store:i,transcript:u});return}let b=0;try{let n=await Zy({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:Gb}),b=n.records.length,Fm(t,e)}catch{return}y()||(Vb({directory:t,sessionID:e,store:i,isStale:y}),await Tb({directory:t,sessionID:e,store:i,statusBeforePull:o,statusObservedAtBeforePull:s,hasMessages:b>0}))}var dC=new Map,fC=e=>{dC.set(e,(dC.get(e)??0)+1)},pC=e=>(dC.get(e)??0)>0,mC=e=>{let t=dC.get(e)??0;return t<=0?!1:(t===1?dC.delete(e):dC.set(e,t-1),!0)},hC=18e4,gC=400,_C=300,vC=15,yC=`FINAL_REVIEW_STATUS: no_remaining_findings`,bC=yC.toLowerCase(),xC=new Set,SC=new Set,CC=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},wC=e=>{let t=e.time?.created;return typeof t==`number`&&Number.isFinite(t)?t:0},TC=e=>{let t=e.role;return typeof t==`string`?t:``},EC=e=>{let t=e.parentID;return typeof t==`string`&&t.trim().length>0?t:null},DC=(e,t)=>Fd(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`}),OC=(e,t,n,r=0,i)=>{let a=Pd(e,t),o=new Set;for(let e of a)DC(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(TC(s)!==`assistant`||!CC(s)||wC(s)<r-1e3)continue;let c=EC(s);if(!IC(s,i)||c&&o.has(c))continue;let l=Np(Fd(s.id,t)).trim();if(l)return{id:s.id,text:l}}return null},kC=(e,t)=>Id(e,t)?.type===`idle`,AC=e=>e===i(),jC=e=>{Up.getState().updateRun(e.originalSessionID,e=>({...e,status:`stopped`,error:`Auto-review stopped because the runtime changed.`}))},MC=e=>{if(e&&!AC(e))throw Error(`Auto-review stopped because the runtime changed.`)},NC=e=>(e instanceof Error?e.message:String(e)).includes(`runtime changed`),PC=e=>e.trim().split(`
463
463
  `).map(e=>e.trim()).filter(Boolean).at(-1)?.toLowerCase()===bC,FC=e=>{let t=e.trimEnd().split(`
464
464
  `);for(;t.length>0&&t[t.length-1].trim()===``;)t.pop();return t.at(-1)?.trim().toLowerCase()===bC&&t.pop(),t.join(`
@@ -473,4 +473,4 @@ Use the results below as source material. Do not mention that the inputs were hi
473
473
 
474
474
  [… objective trimmed for the auditor — the full text was delivered in the chat message …]
475
475
 
476
- `,KV=async e=>{if(e.length<=5e3)return e;let t=await jV(e);if(t)return t.slice(0,NV);let n=Math.max(0,Math.floor((NV-93)/2)),r=ct.getState().dictionary;return fT.error(lt(r,`chat.goal.toast.distillFallback`)),`${e.slice(0,n)}${GV}${e.slice(-n)}`};async function qV(e,t,n,r){let i=n.objective.trim();if(!i)throw Error(`Goal objective must not be empty`);let a=await KV(i),o=typeof n.tokenBudget==`number`&&Number.isFinite(n.tokenBudget)&&n.tokenBudget>0?Math.floor(n.tokenBudget):null,s=await HV(e,a),c=Date.now();await VV(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:BV(),objective:s?``:a,objectiveFile:s,status:`active`,tokenBudget:o,tokensUsed:0,turnsUsed:0,blockedStreak:0,note:``,statusReason:``,lastAccountedMessageID:``,createdAt:c,updatedAt:c})}async function JV(e,t){await VV(e,t,e=>!e||e.status!==`active`?e:{...e,status:`paused`,statusReason:`paused for question`,updatedAt:Date.now()})}async function YV(e,t,n){n===`paused`&&(_V(e),KS(e)),await VV(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 XV(e,t){let n=!1;await VV(e,t,e=>(n=e?.status===`active`,null)),UV(e),n&&(_V(e),KS(e))}var ZV=`<system-reminder>`,QV=`</system-reminder>`,$V=e=>{let t=e.trim();return t?t.startsWith(ZV)&&t.endsWith(QV)?t:`${ZV}\n${t}\n${QV}`:``},eH=(e,t=i())=>`${t}\n${e}`,tH=(e,t)=>{let n=nH.getState();return t?n.sessionMemoryState.get(t):n.sessionMemoryState.get(eH(e))??n.sessionMemoryState.get(e)},nH=Oe()(e=>({sessionMemoryState:new Map,isSyncing:!1,updateViewportAnchor:(t,n,r,i)=>e(e=>{let a=new Map(e.sessionMemoryState),o=i??eH(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}})})),rH=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}})})),iH=e=>{if(!e)return``;let t=e.replace(/\\/g,`/`);return t===`/`?`/`:t.replace(/\/+$/,``)||t};function aH(e,t){if(e){if(!e.degraded&&e.cwd)return iH(e.cwd);if(e.worktreeRoot)return iH(e.worktreeRoot);if(e.cwd)return iH(e.cwd)}return t?iH(t):null}function oH(e){return e.worktreeStatus===`missing`||e.worktreeStatus===`invalid`?[`open-without-worktree-features`]:[]}function sH(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 cH(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?iH(e.pendingBootstrapDirectory):null;for(let r of e.worktrees){let i=iH(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 lH=`openchamber.session-switch.start`,uH=`openchamber.session-switch.highlight-painted`,dH=`openchamber.session-switch.content-committed`,fH=`data-openchamber-session-switch-highlight-ms`,pH=`data-openchamber-session-switch-content-ms`,mH=`openchamber.session-switch.highlight-latency`,hH=`openchamber.session-switch.content-latency`,gH=()=>typeof performance<`u`&&typeof performance.mark==`function`&&typeof performance.measure==`function`,_H=()=>gH()&&performance.getEntriesByName(lH,`mark`).length>0,vH=(e,t)=>{typeof document>`u`||document.documentElement.setAttribute(e,t.toFixed(2))},yH=(e=!1)=>{gH()&&(!e&&performance.getEntriesByName(lH,`mark`).length>0&&performance.getEntriesByName(dH,`mark`).length===0||(performance.clearMarks(lH),performance.clearMarks(uH),performance.clearMarks(dH),performance.clearMeasures(mH),performance.clearMeasures(hH),typeof document<`u`&&(document.documentElement.removeAttribute(fH),document.documentElement.removeAttribute(pH)),performance.mark(lH)))},bH=()=>{if(!_H())return;performance.mark(uH),performance.measure(mH,lH,uH);let e=performance.getEntriesByName(mH,`measure`).at(-1);e&&vH(fH,e.duration)},xH=()=>{if(!_H())return;performance.mark(dH),performance.measure(hH,lH,dH);let e=performance.getEntriesByName(hH,`measure`).at(-1);e&&vH(pH,e.duration)},SH={revision:0,sessionId:null},CH=new Set,wH=e=>{SH={revision:SH.revision+1,sessionId:e};for(let e of CH)e(SH);return SH},TH=()=>SH,EH=e=>(CH.add(e),()=>CH.delete(e));function DH(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 OH(e,t){return{info:{...e.info,sessionID:t},parts:e.parts.map(n=>({...n,sessionID:t,messageID:e.info.id}))}}function kH(e,t){if(!e)return;let n=OH(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 AH(e){let t=e.directory??void 0,n=MH(e.sessionId,e.onSendConfirmed),i=e.content;if(e.inputMode===`shell`){let r=e.messageID??ge(`msg`);return B.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??Ue.getState().currentDirectory??null,l=r(),u=Ei(c,l),d=Ga(c,l),f=L.getQueryState(u.queryKey),p=L.getQueryState(d.queryKey),m=f?.data!==void 0,h=p?.data!==void 0,[g,_]=await Promise.all([m?Promise.resolve(Oi(c,l)):L.fetchQuery({...u,staleTime:1/0}),h?Promise.resolve(qa(L,c,l)):L.fetchQuery({...d,staleTime:1/0})]);if(r()!==l)throw Error(`Runtime changed while resolving slash command`);let v=_.some(e=>e.name.toLowerCase()===o)?void 0:g.find(e=>e.name.toLowerCase()===o);if(v?.isBuiltIn===!1)i=`[command:${v.reference??v.name}]${s?` ${s}`:``}`;else if(v)return FS({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=>B.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 FS({sessionId:e.sessionId,content:i,providerID:e.providerID,modelID:e.modelID,agent:e.agent,directory:t,files:e.files,parts:e.optimisticParts,messageID:e.messageID,ticket:e.ticket,preserveOptimisticOnAmbiguous:e.preserveOptimisticOnAmbiguous,onSendConfirmed:n,send:n=>B.sendMessage({id:e.sessionId,providerID:e.providerID,modelID:e.modelID,text:i,agent:e.agent,agentMentions:e.agentMentionName?[{name:e.agentMentionName}]:void 0,variant:e.variant,files:e.files,additionalParts:e.additionalParts,delivery:e.delivery,messageId:n,directory:t}).then(()=>{})})}function jH(e,t){F(`/api/sessions/${e}/message-sent`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({messageID:t})}).catch(()=>{})}function MH(e,t){let n=!1;return r=>{if(!n){n=!0;try{t?.(r)}finally{jH(e,r)}}}}var NH=e=>{let t=e;return _(t.directory??null)??_(t.project?.worktree??null)},PH=u(),FH=`oc.chatInput.lastDraftTarget`,IH=()=>{try{let e=PH.getItem(FH);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}},LH=e=>{try{PH.setItem(FH,JSON.stringify(e))}catch{}},RH=Xo,zH=e=>{if(e)return rH.getState().getAttachment(e)},BH=(e,t,n)=>{if(!e)return null;let r=aH(zH(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=KH.get(qH());if(t?.sessionId===e&&t.directory)return _(t.directory)}let a=jd().find(t=>t.id===e);return a?NH(a):null},VH=e=>{let t=jd().find(t=>t.id===e);if(t)return t;let n=Y.getState();return[...n.activeSessions,...n.archivedSessions].find(t=>t.id===e)??null},HH=async(e,t)=>{await G.getState().activateDirectory(_(e),t)},UH={open:!1,draftID:null,directoryOverride:null,parentID:null,draftSubmitting:!1,draftEstablishing:!1},WH=new Map,GH=0,KH=new Map,qH=e=>(e??i()).trim()||`default`,JH=e=>({...e}),YH=(e,t)=>{let n=KH.get(e);KH.set(e,{sessionId:n?.sessionId??null,directory:n?.directory??null,draft:n?.draft?JH(n.draft):{...UH},...t})},XH=(e,t)=>{let n=Si.getState();if(t){let e=n.projects.find(e=>e.id===t);if(e?.path)return{id:e.id,path:e.path}}let r=Xo(n.projects,$.getState().availableWorktreesByProject,e);return r?.path?{id:r.id,path:r.path}:null},ZH=async(e,t)=>{if(!e)return;let n=XH(e,t);n&&await ek(n)&&await lO(e)},QH=(e,t)=>{let n=Si.getState(),r=Xo(n.projects,t,e);r&&n.moveProjectToTop(r.id)},$H=(e,t)=>e.transportIdentity===t.transportIdentity&&e.generation===t.generation,eU=(e,t)=>e.open&&e.draftSubmitting===!0&&e.draftID===t.draftID&&e.submissionToken===t.token,tU=(e,t)=>eU(e,t)&&$H(Dr.getState().captureDraftRuntime(),t.runtime);async function nU(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?DH({...e,sessionID:`draft:pending`}):r.pendingUserMessage,a={...r,draftEstablishing:!0,...i?{pendingUserMessage:i}:{}};return YH(qH(),{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 rU(){$.setState(e=>{let t=e.newSessionDraft;if(!t?.draftEstablishing)return{};let n={...t,draftEstablishing:!1};return YH(qH(),{draft:n}),{newSessionDraft:n}})}async function iU(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=qH(),t=s.draftID,n=o,YH(r,{draft:s}),{newSessionDraft:s}}),!t||n===null||!r)return null;await new Promise(e=>setTimeout(e,0));let i=$.getState().newSessionDraft;if(!i.open||i.draftSubmitting!==!0||i.draftID!==t||i.submissionToken!==n)return null;let a=Dr.getState().captureDraftRuntime(),o=S(a,t),s=Dr.getState().getDraft(o);return{token:n,draftID:t,draft:JH(i),runtime:a,runtimeMemoryKey:r,source:s?{key:o,revision:s.revision}:null}}function aU(e){$.setState(t=>{let n=t.newSessionDraft;if(tU(n,e)){let t={...n,draftSubmitting:!1,draftEstablishing:!1,pendingUserMessage:void 0},r=KH.get(e.runtimeMemoryKey);return r&&eU(r.draft,e)&&YH(e.runtimeMemoryKey,{draft:t}),{newSessionDraft:t}}return{}});let t=KH.get(e.runtimeMemoryKey);t&&eU(t.draft,e)&&YH(e.runtimeMemoryKey,{draft:{...t.draft,draftSubmitting:!1,draftEstablishing:!1,pendingUserMessage:void 0}})}function oU(e){let t=KH.get(e.runtimeMemoryKey);t&&eU(t.draft,e)&&YH(e.runtimeMemoryKey,{draft:{...UH}})}async function sU(e,t,n){if(!e.source)return null;let r;try{r=await Dr.getState().finalizeDraftOwnership({source:e.source.key,destination:C(e.runtime,t),expectedSourceRevision:e.source.revision,disposition:n,runtime:e.runtime})}catch{return console.warn(`[session-ui-store] draft ownership finalization rejected`,{disposition:n,sessionID:t,draftID:e.draftID}),null}return r.status!==`committed`&&console.warn(`[session-ui-store] draft ownership finalization did not commit`,{status:r.status,disposition:n,sessionID:t,draftID:e.draftID}),r}function cU(e,t){let n=t??e.directory??null;n&&wd(e.id,n),Y.getState().upsertSession(e),$.getState().markSessionAsOpenChamberCreated(e.id)}async function lU(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&&!tU(l,r);cU(e,c);let f=G.getState(),p=n.agent??f.currentAgentName;if(a){let t=n.directory||$.getState().lastLoadedDirectory||e.directory;t&&CD.getState().addSessionToFolder(t,a,e.id)}return d||(LH({projectId:o??null,directory:c}),HH(c).catch(e=>{console.warn(`Failed to activate directory after creating session:`,e)}),Ko.getState().saveSessionModelSelection(e.id,t.providerID,t.modelID),p&&(Ko.getState().saveSessionAgentSelection(e.id,p),Ko.getState().saveAgentModelForSession(e.id,p,t.providerID,t.modelID),Ko.getState().saveAgentModelVariantForSession(e.id,p,t.providerID,t.modelID,t.variant)),i.initializeNewOpenChamberSession(e.id,f.agents??[]),i.setCurrentSession(e.id,c),QH(c,$.getState().availableWorktreesByProject),u&&Xe(async()=>{let{usePermissionStore:e}=await Promise.resolve().then(()=>Oj);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&&oU(r),{sessionId:e.id,directory:c,agent:p,syntheticParts:s,selected:!d}}async function uU(e){let t=e.bootstrapPendingDirectory??e.directoryOverride??null,n=e.selectedProjectId??null;e.pendingWorktreeRequestId&&(t=await ND(e.pendingWorktreeRequestId),$.getState().resolvePendingDraftWorktreeTarget(e.pendingWorktreeRequestId,t)),await ZH(t,n);let r=t??B.getDirectory();return{directory:_(r),projectId:n}}async function dU(e,t){let n=await iU(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 uU(r),o=a??B.getDirectory(),s=await aS(r.title,o,r.parentID??null,void 0);if(!s?.id)throw Error(`Failed to create session`);return t&&IS({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 lU(s,e,{directory:a??s.directory??null,agent:i,draftProjectId:r.selectedProjectId,targetFolderId:r.targetFolderId,draftSyntheticParts:r.syntheticParts},n),claim:n}}catch{return aU(n),null}}async function fU(e){let t=await dU(e);return t?(await sU(t.claim,t.materialized.sessionId,`preserve`),t.materialized):null}var pU=2,mU=300;async function hU(e){let{useI18nStore:t,formatMessage:n}=await Xe(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-CUWqzRt7.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 gU(e){let{content:t,providerID:n,modelID:r,agent:i,agentMentionName:a,variant:o,attachments:s,additionalParts:c,onSessionReady:l}=e,u=$.getState().newSessionDraft,d=typeof i==`string`&&i.trim().length>0?i.trim():void 0,f=G.getState(),p=d??f.currentAgentName,m=e.messageID??u.pendingUserMessage?.info.id??ge(`msg`),h=DH({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 iU(h);if(!g)throw await hU(`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 uU(_),f=await B.buildMessageParts({text:t,files:e.length>0?e:void 0,additionalParts:i,agentMentions:u}),v=Te()?.conversations;if(!v?.createWithPrompt)throw await hU(`chat.chatInput.toast.messageSendFailed`);let y=d??B.getDirectory()??``,b=bx(y,{bootstrap:!1}),x=()=>$H(Dr.getState().captureDraftRuntime(),g.runtime),S;for(let e=0;e<=pU;e++){e>0&&await new Promise(e=>setTimeout(e,mU));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===pU))break}catch{if(e===pU)break}}if(!S)throw aU(g),Dr.getState().setPendingInputText(t,`replace`),await hU(`chat.chatInput.toast.messageSendFailed`);if(S.ok){let e=S.session,t=d??e.directory??null,i=t??y;cU(e,t);let a=i===y?b:bx(i,{bootstrap:!1});kH(e.id,h);let s=await lU(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 sU(g,e.id,`consume`),jH(e.id,m),s.selected&&fC(e.id),GS({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 aU(g),Dr.getState().setPendingInputText(t,`replace`),await hU(`chat.chatInput.toast.messageSendFailed`);if(e===`prompt`){let e=S,i=e.session,a=d??i.directory??null,s=await lU(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 RS(i.id,m,a,{isCurrent:x});if(e&&x()){await sU(g,i.id,`consume`),jH(i.id,m),s.selected&&fC(i.id),zS(bx(a??y,{bootstrap:!1}),i.id,m,e,{gapFillOnly:!0,directory:a??y}),l?.(i.id,a);return}throw await sU(g,i.id,`preserve`),Dr.getState().setPendingInputText(t,`replace`),await hU(`chat.chatInput.toast.sendStatusUnknown`)}throw await sU(g,i.id,`preserve`),Dr.getState().setPendingInputText(t,`replace`),await hU(`chat.chatInput.toast.messageSendFailed`)}}}catch(e){throw aU(g),e}}var _U=`oc.worktreeMap`,vU=()=>{try{let e=u().getItem(_U);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}},yU=e=>{try{u().setItem(_U,e)}catch{}},bU=e=>{let t=[];for(let n of e.values())t.push(...n);return t},xU=vU(),$=Oe()((e,t)=>({currentSessionId:null,currentSessionDirectory:null,newSessionDraft:{...UH},retainedPendingUserMessages:new Map,forkTransition:null,abortPromptSessionId:null,abortPromptExpiresAt:null,error:null,worktreeMetadata:new Map,availableWorktrees:bU(xU),availableWorktreesByProject:xU,webUICreatedSessions:new Set,sessionAbortFlags:new Map,queueAbortBlocks:new Map,abortControllers:new Map,isLoading:!1,lastLoadedDirectory:null,sessionPlanAvailable:new Map,pendingChangesBarDismissed:new Map,stagedMessageEdit:null,messageEditCommitting:null,pendingSendMessageIDs:new Map,clearRetainedPendingUserMessages:(t,n)=>{!t||n.length===0||e(e=>{let r=e.retainedPendingUserMessages.get(t);if(!r?.length)return e;let i=new Set(n),a=r.filter(e=>!i.has(e.info.id));if(a.length===r.length)return e;let o=new Map(e.retainedPendingUserMessages);return a.length===0?o.delete(t):o.set(t,a),{retainedPendingUserMessages:o}})},clearStagedMessageEdit:t=>{e(e=>!e.stagedMessageEdit||t&&e.stagedMessageEdit.sessionId!==t?e:{stagedMessageEdit:null})},beginMessageEditCommit:(t,n)=>{e({messageEditCommitting:{sessionId:t,messageId:n}})},endMessageEditCommit:(t,n)=>{e(e=>{let r=e.messageEditCommitting;return!r||r.sessionId!==t||r.messageId!==n?e:{messageEditCommitting:null}})},markMessageSending:(t,n)=>{e(e=>{if(e.pendingSendMessageIDs.get(t)===n)return e;let r=new Map(e.pendingSendMessageIDs);return r.set(t,n),{pendingSendMessageIDs:r}})},clearMessageSending:(t,n)=>{e(e=>{if(e.pendingSendMessageIDs.get(t)!==n)return e;let r=new Map(e.pendingSendMessageIDs);return r.delete(t),{pendingSendMessageIDs:r}})},setCurrentSession:(n,i)=>{wH(n),b(n);let a=t().currentSessionId,o=t().currentSessionDirectory;a!==n&&(yH(),e({stagedMessageEdit:null,messageEditCommitting:null})),n&&t().closeNewSessionDraft(),Dr.getState().setActiveAttachmentDraft(n?C({transportIdentity:r()},n):null);let s=qH();WH.set(s,n);let c=Ue.getState(),l=BH(n,e=>t().worktreeMetadata.get(e)),u=B.getDirectory()??c.currentDirectory??null,d=(i?_(i):null)??l??u,f=Si.getState(),m=d?Xo(f.projects,t().availableWorktreesByProject,d):null;e({currentSessionId:n,currentSessionDirectory:n?d??null:null}),YH(s,{sessionId:n,directory:d??null}),a!==n&&p.getState().syncWorkspacePanelsForSessionSwitch({previousSessionId:a,previousDirectory:o,nextSessionId:n,nextDirectory:n?d??null:null}),n&&lC(n,d);try{d&&c.currentDirectory!==d&&c.setDirectory(d,{showOverlay:!1}),m&&f.activeProjectId!==m.id&&f.setActiveProjectIdOnly(m.id),B.setDirectory(d??void 0)}catch(e){console.warn(`Failed to set OpenCode directory for session switch:`,e)}if(a&&a!==n){let e=a;setTimeout(()=>{if(!tH(e)?.isStreaming){let t=Pd(e);t.length>0&&nH.getState().updateViewportAnchor(e,t.length-1)}},0)}n&&(kk(n),vN(d??``,n))},prepareForRuntimeSwitch:n=>{let r=qH(n),i=Ue.getState().currentDirectory||null,a=t().currentSessionId,o=i?Ed(i):null;Qj({runtimeKey:r,directory:i,sessionId:a,status:a?o?.session_status?.[a]:null}),WH.set(r,t().currentSessionId),YH(r,{sessionId:a,directory:i,draft:JH(t().newSessionDraft)}),e({queueAbortBlocks:new Map})},restoreForRuntimeSwitch:t=>{let n=qH(t),i=KH.get(n),a=i?.sessionId??WH.get(n)??null;b(a);let o=i?.draft?JH(i.draft):{...UH},s=i?.directory??null;s&&Ue.getState().setDirectory(s,{showOverlay:!1}),e({currentSessionId:a,currentSessionDirectory:a?s:null,newSessionDraft:a?{...UH}:o,forkTransition:null,abortPromptSessionId:null,abortPromptExpiresAt:null,error:null,sessionAbortFlags:new Map,queueAbortBlocks:new Map,pendingChangesBarDismissed:new Map,retainedPendingUserMessages:new Map,stagedMessageEdit:null,messageEditCommitting:null,pendingSendMessageIDs:new Map}),Dr.getState().setActiveAttachmentDraft(a?C({transportIdentity:r()},a):o.open&&o.draftID?S({transportIdentity:r()},o.draftID):null),a?vN(s??B.getDirectory()??``,a):vN(``,``)},openNewSessionDraft:n=>{if(LF.getState().shouldBlockNewSessionDraftOpen())return;let i=t().newSessionDraft;if(i.draftSubmitting||i.draftEstablishing)return;t().clearStagedMessageEdit();let a=Si.getState(),o=a.projects,s=t().availableWorktreesByProject,c=_(t().currentSessionDirectory??null),l=_(Ue.getState().currentDirectory??null),u=IH(),d=n?.directoryOverride===void 0?null:_(n.directoryOverride),f=RH(o,s,d),m=n?.ensureProjectForDirectory&&d&&!f?a.addProject(d):null;m&&(a=Si.getState());let h=a.projects,g=a.getActiveProject(),v=n?.selectedProjectId?h.find(e=>e.id===n.selectedProjectId)??null:null,y=g||(a.activeProjectId?h.find(e=>e.id===a.activeProjectId)??null:h[0]??null),x=u?.projectId?h.find(e=>e.id===u.projectId)??null:null,C=RH(h,s,u?.directory??null),w=RH(h,s,c),T=RH(h,s,l),E=v||(d===null?w||(l?T:C??x??y):m??f),D=d===null?v?_(v.path??null):c||l||(u?.directory?u.directory:_(E?.path??null)):d;LH({projectId:E?.id??null,directory:D}),E&&a.activeProjectId!==E.id&&a.setActiveProjectIdOnly(E.id);let O=le({projectId:E?.id??null,directory:D}),k=S({transportIdentity:r()},O),A=Dr.getState().getDraft(k),j={open:!0,draftID:O,selectedProjectId:E?.id??null,directoryOverride:D,permissionAutoAcceptEnabled:n?.permissionAutoAcceptEnabled===!0,pendingWorktreeRequestId:n?.pendingWorktreeRequestId??null,bootstrapPendingDirectory:_(n?.bootstrapPendingDirectory??null),preserveDirectoryOverride:n?.preserveDirectoryOverride===!0,parentID:n?.parentID??null,title:n?.title,initialPrompt:n?.initialPrompt,syntheticParts:n?.syntheticParts,targetFolderId:n?.targetFolderId,submissionToken:i.open&&i.draftID===O?i.submissionToken:0,draftSubmitting:!1,draftEstablishing:!1},ee=t().currentSessionId,te=t().currentSessionDirectory;e({newSessionDraft:{...j},currentSessionId:null,currentSessionDirectory:null,error:null}),b(null),p.getState().setActiveMainTab(`chat`),ee&&p.getState().syncWorkspacePanelsForSessionSwitch({previousSessionId:ee,previousDirectory:te,nextSessionId:null,nextDirectory:null}),YH(qH(),{sessionId:null,directory:D,draft:j}),Dr.getState().setActiveAttachmentDraft(k),A||Dr.getState().clearAttachedFiles(),n?.initialPrompt&&Dr.getState().setPendingInputText(n.initialPrompt);let M=_(E?.path??null)??D,ne=E?_(M):null,re=j.draftID,ie=r();HH(M,{source:`newSessionDraft`}).then(()=>{let e=t().newSessionDraft,n=_(G.getState().activeDirectoryKey);!e.open||e.draftID!==re||r()!==ie||!ne||n!==ne||G.getState().applyDefaultModelAgentSelection({projectDefaultModel:E?.defaultModel})}),D&&D!==Ue.getState().currentDirectory&&Ue.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}),YH(qH(),{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}:{}}}}),HH(r,{source:`setNewSessionDraftTarget`}),r&&r!==Ue.getState().currentDirectory&&Ue.getState().setDirectory(r)},setDraftPreserveDirectoryOverride:t=>e(e=>e.newSessionDraft?.open?{newSessionDraft:{...e.newSessionDraft,preserveDirectoryOverride:t}}:e),setDraftPermissionAutoAcceptEnabled:t=>e(e=>e.newSessionDraft?.open?{newSessionDraft:{...e.newSessionDraft,permissionAutoAcceptEnabled:t}}:e),acknowledgeSessionAbort:t=>e(e=>{let n=new Map(e.sessionAbortFlags),r=n.get(t);return r&&n.set(t,{...r,acknowledged:!0}),{sessionAbortFlags:n}}),beginQueueAbortBlock:(t,n=2e3)=>{let r=fe(),i=D(t);return e(e=>{let t=new Map(e.queueAbortBlocks);return t.set(i,{token:r,expiresAt:Date.now()+n}),{queueAbortBlocks:t}}),r},clearQueueAbortBlock:(t,n)=>e(e=>{let r=D(t);if(e.queueAbortBlocks.get(r)?.token!==n)return e;let i=new Map(e.queueAbortBlocks);return i.delete(r),{queueAbortBlocks:i}}),pruneQueueAbortBlocks:(t=Date.now())=>e(e=>{let n;for(let[r,i]of e.queueAbortBlocks)i.expiresAt>t||(n||=new Map(e.queueAbortBlocks),n.delete(r));return n?{queueAbortBlocks:n}:e}),clearAbortPrompt:()=>e({abortPromptSessionId:null,abortPromptExpiresAt:null}),armAbortPrompt:(n=5e3)=>{let{currentSessionId:r}=t();if(!r)return null;let i=Date.now()+n;return e({abortPromptSessionId:r,abortPromptExpiresAt:i}),i},clearError:()=>e({error:null}),markSessionAsOpenChamberCreated:t=>e(e=>{let n=new Set(e.webUICreatedSessions);return n.add(t),{webUICreatedSessions:n}}),isOpenChamberCreatedSession:e=>t().webUICreatedSessions.has(e),getContextUsage:(e,n)=>{if(t().newSessionDraft?.open)return null;let r=t().currentSessionId;if(!r)return null;let i=Pd(r);if(i.length===0)return null;let a=Sk(i,e=>Fd(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(vk(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?rH.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}):rH.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}}),HH(n,{source:`overrideNewSessionDraftTarget`}),n&&n!==Ue.getState().currentDirectory&&Ue.getState().setDirectory(n)},resolvePendingDraftWorktreeTarget:(t,n,r)=>e(e=>!e.newSessionDraft?.open||e.newSessionDraft.pendingWorktreeRequestId!==t?e:{newSessionDraft:{...e.newSessionDraft,selectedProjectId:r?.projectId??e.newSessionDraft.selectedProjectId??null,directoryOverride:_(n),pendingWorktreeRequestId:null,bootstrapPendingDirectory:_(r?.bootstrapPendingDirectory??e.newSessionDraft.bootstrapPendingDirectory??null),preserveDirectoryOverride:r?.preserveDirectoryOverride??!0}}),setDraftBootstrapPendingDirectory:t=>e(e=>e.newSessionDraft?.open?{newSessionDraft:{...e.newSessionDraft,bootstrapPendingDirectory:_(t)}}:e),setPendingDraftWorktreeRequest:t=>e(e=>e.newSessionDraft?.open?{newSessionDraft:{...e.newSessionDraft,pendingWorktreeRequestId:t}}:e),getWorktreeMetadata:e=>t().worktreeMetadata.get(e),dismissPendingChangesBar:(n,r)=>{let i=new Map(t().pendingChangesBarDismissed);r===null?i.delete(n):i.set(n,r),e({pendingChangesBarDismissed:i})},sendMessage:async(n,r,i,a,o,s,c,l,u,d)=>{let f=t().stagedMessageEdit,m=d?.sessionId??t().currentSessionId,h=d?.commitStagedMessageEdit&&f&&f.sessionId===m?f:null,g=d?.sessionId??t().currentSessionId;if(g){let n=new Map(t().pendingChangesBarDismissed);n.delete(g),e({pendingChangesBarDismissed:n})}let v=t().newSessionDraft,y=typeof a==`string`&&a.trim().length>0?a.trim():void 0,b=u!==`shell`&&n.trim().length>0?RF.getState().consume():{armed:!1,objectiveOverride:null},x=b.armed;if(x){let e=p.getState(),t=$V(`Goal mode is active for this session. The user message above defines the goal objective. Work toward it across turns; whenever you stop before the objective is verifiably complete, the system will automatically prompt you to continue. Progress is evaluated independently after each turn, so end every turn with a clear, factual statement of what is done, what was verified, and what remains.`+(e.sessionGoalDefaultBudgetEnabled?` A token budget of ${e.sessionGoalDefaultBudget} tokens applies to this goal.`:``));c=[...c??[],{text:t,synthetic:!0}]}let S=(e,t)=>{if(!x)return;let r=p.getState(),i=r.sessionGoalDefaultBudgetEnabled?r.sessionGoalDefaultBudget:null,a=b.objectiveOverride?.trim()||n;qV(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 gU({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=DH({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 dU({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;fC(p.sessionId);let g=o?.map(e=>({type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename}));try{await AH({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 sU(m,p.sessionId,`consume`)}catch(e){throw await sU(m,p.sessionId,`preserve`),e}QH(p.directory,t().availableWorktreesByProject),S(p.sessionId,p.directory);return}let C=d?.sessionId??t().currentSessionId,w=C?Ko.getState().getSessionAgentSelection(C):null,T=G.getState().currentAgentName,E=y||w||T||void 0;if(C&&Ko.getState().saveSessionModelSelection(C,r,i),C&&E&&(Ko.getState().saveSessionAgentSelection(C,E),Ko.getState().saveAgentModelForSession(C,E,r,i),Ko.getState().saveAgentModelVariantForSession(C,E,r,i,l)),C){let e=nH.getState(),t=tH(C);if(!t||!t.lastUserMessageAt){let n=new Map(e.sessionMemoryState);n.set(eH(C),{viewportAnchor:0,isStreaming:!1,lastAccessedAt:Date.now(),backgroundMessageCount:0,...t,lastUserMessageAt:Date.now()}),nH.setState({sessionMemoryState:n})}}let D=C?_(d?.directoryHint)??_(t().getDirectoryForSession(C)):null;C&&fC(C);let O=o?.map(e=>({type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename}));if(h)try{await rC(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 AH({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)}QH(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 aS(n,r??B.getDirectory(),i??null,a);if(!o)return c&&!t().newSessionDraft.open&&!t().currentSessionId&&(e({newSessionDraft:{...c,draftSubmitting:!1,draftEstablishing:!1}}),YH(qH(),{draft:{...c,draftSubmitting:!1,draftEstablishing:!1}})),null;if(s){let e=r||t().lastLoadedDirectory||o.directory;e&&CD.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}}),YH(qH(),{draft:{...c,draftSubmitting:!1,draftEstablishing:!1}})),null}},deleteSession:e=>vS(e),deleteSessions:async e=>{let t=[],n=[];for(let r of e)await vS(r)?t.push(r):n.push(r);return{deletedIds:t,failedIds:n}},archiveSession:e=>xS(e),archiveSessions:async e=>{let t=[],n=[];for(let r of e)await xS(r)?t.push(r):n.push(r);return{archivedIds:t,failedIds:n}},updateSessionTitle:async(e,t)=>{await CS(e,t)},requestSessionSmartTitle:async e=>{await wS(e)},shareSession:async e=>TS(e),unshareSession:async e=>ES(e),revertToMessage:async(e,t,n)=>{await ZS(e,t,n?.directory)},editMessagePreservingChanges:async(t,n,r)=>{await $S(t,n,r),e({stagedMessageEdit:{sessionId:t,messageId:n}})},handleSlashUndo:async e=>{let n=Pd(e),r=Ad().find(t=>t.id===e)?.revert?.messageID,i=ds(n,r);if(!i)return;let a=Fd(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 Xe(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 Xe(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-CUWqzRt7.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 Xe(async()=>{let{unrevertSession:e}=await Promise.resolve().then(()=>Hb);return{unrevertSession:e}},void 0);await t(e);let{toast:n}=await Xe(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 Xe(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-CUWqzRt7.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=Ad().find(t=>t.id===e)?.revert?.messageID;if(!r)return;let i=fs(Pd(e),r);if(i){await t().revertToMessage(e,i.id,{skipRedoPush:!0});let{toast:n}=await Xe(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 Xe(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-CUWqzRt7.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 oC(e);let{toast:a}=await Xe(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 Xe(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-CUWqzRt7.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=VH(n),s=++GH;try{let a=i?.directory??t().getDirectoryForSession(n)??B.getDirectory()??``;if(!a){console.warn(`[session-fork] forkFromMessage missing directory`,{sessionId:n,messageId:r});let{toast:e}=await Xe(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 sC(n,s,r,a)){console.warn(`[session-fork] forkFromMessage ended before completion`,{operationId:s,sessionId:n,messageId:r});return}let{toast:c}=await Xe(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 Xe(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=VH(n),a=++GH;try{let r=t().getDirectoryForSession(n)??B.getDirectory()??``;if(!r){console.warn(`[session-fork] forkCurrentSession missing directory`,{sessionId:n});let{toast:e}=await Xe(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 sC(n,a)){console.warn(`[session-fork] forkCurrentSession ended before completion`,{operationId:a,sessionId:n});return}let{toast:o}=await Xe(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 Xe(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?jd().filter(e=>NH(e)===t):[]},getAuthoritativeDirectoryForSession:e=>{let n=BH(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?fE(i):null},getDirectoryForSession:e=>e===t().currentSessionId&&t().currentSessionDirectory?t().currentSessionDirectory:BH(e,e=>t().worktreeMetadata.get(e))||t().getAuthoritativeDirectoryForSession(e),getLastUserChoice:e=>{let n=Pd(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=>Ko.getState().sessionAgentSelections.get(e)??void 0,debugSessionMessages:async e=>{let t=Pd(e);Ad().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}),YH(qH(),{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}));Gj((e,t)=>{$.getState().setCurrentSession(e,t)});var SU=``;$.subscribe((e,t)=>{if(e.availableWorktreesByProject!==t.availableWorktreesByProject){let t=JSON.stringify([...e.availableWorktreesByProject.entries()]);t!==SU&&(SU=t,yU(t))}});function CU(e,t){let n=e.findIndex(e=>e.sessionId===t.sessionId);return n>=0?e.slice(0,n+1):[...e,t]}function wU(e){return e.length>1?e.slice(0,-1):[]}function TU(e,t){let n=e.at(-1);return[{...t,key:n?.key??t.key}]}function EU(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 DU={activeTab:`projects`,secondary:null},OU=0,kU=null,AU=e=>{let t=++OU;return kU={generation:t,sessionId:e.sessionId,directory:_(e.directory)??null},t},jU=e=>{let t=kU;return t&&t.generation===OU&&t.sessionId===e.sessionId&&t.directory===(_(e.directory)??null)?(kU=null,`internal`):(kU=null,`external`)},MU=()=>{OU+=1,kU=null},NU=e=>{let t=$.getState(),n=t.currentSessionId?t.getDirectoryForSession(t.currentSessionId):null;t.currentSessionId===e.sessionId&&_(n)===_(e.directory)?MU():AU(e),t.setCurrentSession(e.sessionId,e.directory??null)},PU=Oe(e=>({...DU,setActiveTab:t=>{MU(),e({activeTab:t,secondary:null})},openSession:t=>{e({secondary:{kind:`chat`,routes:[IU(t,`root`)]}}),NU(t)},pushSession:t=>{e(e=>{let n=IU(t,`push`);return{secondary:{kind:`chat`,routes:e.secondary?.kind===`chat`?CU(e.secondary.routes,n):[n]}}}),NU(t)},popChatSession:()=>{e(e=>{if(e.secondary?.kind!==`chat`)return e;let t=wU(e.secondary.routes);return t.length>0?{secondary:{kind:`chat`,routes:t}}:{secondary:null}});let t=PU.getState().secondary,n=t?.kind===`chat`?t.routes.at(-1)??null:null;n&&NU(n)},reconcileChatPredecessor:t=>e(e=>{if(e.secondary?.kind!==`chat`)return e;let n=EU(e.secondary.routes,IU(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:TU(e.secondary.routes,IU(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=>{MU(),$.getState().openNewSessionDraft(t),e({secondary:{kind:`draft`}})},openAssistant:t=>{MU(),ut.getState().selectAssistant(t),e({secondary:{kind:`assistant`}})},closeSecondary:()=>{MU(),e(e=>e.secondary?{...e,secondary:null}:e)},reset:()=>{MU(),e({...DU})}})),FU=1,IU=(e,t)=>({key:t===`root`?`chat-primary`:`chat-${t}-${FU++}`,sessionId:e.sessionId,directory:e.directory??null}),LU=e=>!ft()||pt()?!1:(PU.getState().pushSession(e),!0);export{Lz as $,Ka as $a,Td as $i,YD as $n,CS as $r,yF as $t,RV as A,is as Aa,Pm as Ai,mO as An,mt as Ao,$C as Ar,pF as At,jB as B,Io as Ba,Dp as Bi,lk as Bn,aS as Br,_P as Bt,eH as C,Us as Ca,Qg as Ci,dA as Cn,jr as Co,zw as Cr,RF as Ct,JV as D,os as Da,ig as Di,Ak as Dn,Zt as Do,fw as Dr,PF as Dt,WV as E,Qo as Ea,ag as Ei,Dk as En,Yt as Eo,Fw as Er,FF as Et,QB as F,Ko as Fa,Xp as Fi,ik as Fn,KS as Fr,yN as Ft,Uz as G,Qa as Ga,Ap as Gi,tk as Gn,qS as Gr,HP as Gt,Zz as H,Mo as Ha,kp as Hi,rk as Hn,nS as Hr,SF as Ht,_V as I,Ho as Ia,Yp as Ii,QO as In,xS as Ir,AM as It,Kz as J,vo as Ja,Jf as Ji,eO as Jn,NS as Jr,UP as Jt,Nz as K,$a as Ka,ap as Ki,gk as Kn,JS as Kr,BP as Kt,YB as L,Bo as La,Up as Li,ek as Ln,jS as Lr,DM as Lt,IV as M,qo as Ma,hm as Mi,mk as Mn,pt as Mo,mC as Mr,ZN as Mt,kV as N,Jo as Na,dm as Ni,ok as Nn,pC as Nr,vN as Nt,YV as O,es as Oa,Xm as Oi,vk as On,Xt as Oo,UC as Or,LF as Ot,XB as P,Xo as Pa,Zp as Pi,nk as Pn,dS as Pr,bN as Pt,Iz as Q,Ha as Qa,jd as Qi,cO as Qn,SS as Qr,CP as Qt,vV as R,Ro as Ra,Np as Ri,fk as Rn,bS as Rr,JP as Rt,nH as S,$l as Sa,i_ as Si,fA as Sn,Ar as So,oT as Sr,gI as St,XV as T,ss as Ta,Tg as Ti,kk as Tn,Dr as To,Rw as Tr,NF as Tt,mB as U,Po as Ua,Mp as Ui,ak as Un,YS as Ur,CM as Ut,Yz as V,Fo as Va,Ep as Vi,hk as Vn,XS as Vr,vP as Vt,PB as W,eo as Wa,jp as Wi,$O as Wn,wS as Wr,SM as Wt,Gz as X,qa as Xa,G as Xi,$D as Xn,gx as Xr,CF as Xt,Hz as Y,uo as Ya,yf as Yi,tO as Yn,yS as Yr,KP as Yt,Pz as Z,Ja as Za,Md as Zi,XD as Zn,$S as Zr,mF as Zt,aH as _,_u as _a,nv as _i,Mj as _n,Rr as _o,DT as _r,iL as _t,rU as a,Uu as aa,Jy as ai,EP as an,ba as ao,CD as ar,bz as at,rH as b,U as ba,t_ as bi,cj as bn,Br as bo,tT as br,JI as bt,AH as c,yu as ca,bv as ci,gF as cn,ha as co,KE as cr,pz as ct,TH as d,Tu as da,Cv as di,qP as dn,ma as do,HE as dr,sz as dt,Pd as ea,zx as ei,xP as en,va as eo,lO as er,Az as et,EH as f,H as fa,Tv as fi,_F as fn,Oi as fo,fE as fr,$R as ft,cH as g,Cu as ga,P_ as gi,Nj as gn,Si as go,ET as gr,nL as gt,bH as h,Eu as ha,Q_ as hi,Rj as hn,Di as ho,Y as hr,FR as ht,nU as i,Nd as ia,sb as ii,PP as in,ja as io,qE as ir,wz as it,LV as j,Zo as ja,Sm as ji,dk as jn,ft as jo,QC as jr,oF as jt,NV as k,$o as ka,zm as ki,Sk as kn,Gt as ko,ew as kr,gP as kt,$ as l,xu as la,Dv as li,hF as ln,fa as lo,mE as lr,rz as lt,xH as m,wu as ma,wv as mi,Uj as mn,wi as mo,UE as mr,YR as mt,LU as n,Ad as na,Ob as ni,TP as nn,Na as no,MD as nr,kz as nt,DH as o,ed as oa,Zv as oi,OP as on,Da as oo,zE as or,yz as ot,yH as p,pu as pa,_v as pi,Hj as pn,ki as po,VE as pr,qR as pt,Wz as q,_o as qa,Zf as qi,ZD as qn,ZS as qr,VP as qt,PU as r,wd as ra,Tb as ri,MP as rn,Ma as ro,jD as rr,Oz as rt,fU as s,Xu as sa,jv as si,AP as sn,Ea as so,BE as sr,mz as st,jU as t,Fd as ta,Vb as ti,SP as tn,Oa as to,AD as tr,jz as tt,wH as u,bu as ua,Ev as ui,FP as un,pa as uo,GE as ur,ZR as ut,sH as v,Su as va,n_ as vi,Dj as vn,Vr as vo,fT as vr,X as vt,$V as w,us as wa,Zg as wi,pA as wn,kr as wo,Pw as wr,IF as wt,tH as x,Ql as xa,s_ as xi,wA as xn,zr as xo,rT as xr,YI as xt,oH as y,fu as ya,r_ as yi,lj as yn,Lr as yo,$w as yr,HI as yt,BB as z,Vo as za,Tp as zi,JO as zn,rC as zr,GP as zt};
476
+ `,KV=async e=>{if(e.length<=5e3)return e;let t=await jV(e);if(t)return t.slice(0,NV);let n=Math.max(0,Math.floor((NV-93)/2)),r=ct.getState().dictionary;return fT.error(lt(r,`chat.goal.toast.distillFallback`)),`${e.slice(0,n)}${GV}${e.slice(-n)}`};async function qV(e,t,n,r){let i=n.objective.trim();if(!i)throw Error(`Goal objective must not be empty`);let a=await KV(i),o=typeof n.tokenBudget==`number`&&Number.isFinite(n.tokenBudget)&&n.tokenBudget>0?Math.floor(n.tokenBudget):null,s=await HV(e,a),c=Date.now();await VV(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:BV(),objective:s?``:a,objectiveFile:s,status:`active`,tokenBudget:o,tokensUsed:0,turnsUsed:0,blockedStreak:0,note:``,statusReason:``,lastAccountedMessageID:``,createdAt:c,updatedAt:c})}async function JV(e,t){await VV(e,t,e=>!e||e.status!==`active`?e:{...e,status:`paused`,statusReason:`paused for question`,updatedAt:Date.now()})}async function YV(e,t,n){n===`paused`&&(_V(e),KS(e)),await VV(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 XV(e,t){let n=!1;await VV(e,t,e=>(n=e?.status===`active`,null)),UV(e),n&&(_V(e),KS(e))}var ZV=`<system-reminder>`,QV=`</system-reminder>`,$V=e=>{let t=e.trim();return t?t.startsWith(ZV)&&t.endsWith(QV)?t:`${ZV}\n${t}\n${QV}`:``},eH=(e,t=i())=>`${t}\n${e}`,tH=(e,t)=>{let n=nH.getState();return t?n.sessionMemoryState.get(t):n.sessionMemoryState.get(eH(e))??n.sessionMemoryState.get(e)},nH=Oe()(e=>({sessionMemoryState:new Map,isSyncing:!1,updateViewportAnchor:(t,n,r,i)=>e(e=>{let a=new Map(e.sessionMemoryState),o=i??eH(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}})})),rH=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}})})),iH=e=>{if(!e)return``;let t=e.replace(/\\/g,`/`);return t===`/`?`/`:t.replace(/\/+$/,``)||t};function aH(e,t){if(e){if(!e.degraded&&e.cwd)return iH(e.cwd);if(e.worktreeRoot)return iH(e.worktreeRoot);if(e.cwd)return iH(e.cwd)}return t?iH(t):null}function oH(e){return e.worktreeStatus===`missing`||e.worktreeStatus===`invalid`?[`open-without-worktree-features`]:[]}function sH(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 cH(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?iH(e.pendingBootstrapDirectory):null;for(let r of e.worktrees){let i=iH(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 lH=`openchamber.session-switch.start`,uH=`openchamber.session-switch.highlight-painted`,dH=`openchamber.session-switch.content-committed`,fH=`data-openchamber-session-switch-highlight-ms`,pH=`data-openchamber-session-switch-content-ms`,mH=`openchamber.session-switch.highlight-latency`,hH=`openchamber.session-switch.content-latency`,gH=()=>typeof performance<`u`&&typeof performance.mark==`function`&&typeof performance.measure==`function`,_H=()=>gH()&&performance.getEntriesByName(lH,`mark`).length>0,vH=(e,t)=>{typeof document>`u`||document.documentElement.setAttribute(e,t.toFixed(2))},yH=(e=!1)=>{gH()&&(!e&&performance.getEntriesByName(lH,`mark`).length>0&&performance.getEntriesByName(dH,`mark`).length===0||(performance.clearMarks(lH),performance.clearMarks(uH),performance.clearMarks(dH),performance.clearMeasures(mH),performance.clearMeasures(hH),typeof document<`u`&&(document.documentElement.removeAttribute(fH),document.documentElement.removeAttribute(pH)),performance.mark(lH)))},bH=()=>{if(!_H())return;performance.mark(uH),performance.measure(mH,lH,uH);let e=performance.getEntriesByName(mH,`measure`).at(-1);e&&vH(fH,e.duration)},xH=()=>{if(!_H())return;performance.mark(dH),performance.measure(hH,lH,dH);let e=performance.getEntriesByName(hH,`measure`).at(-1);e&&vH(pH,e.duration)},SH={revision:0,sessionId:null},CH=new Set,wH=e=>{SH={revision:SH.revision+1,sessionId:e};for(let e of CH)e(SH);return SH},TH=()=>SH,EH=e=>(CH.add(e),()=>CH.delete(e));function DH(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 OH(e,t){return{info:{...e.info,sessionID:t},parts:e.parts.map(n=>({...n,sessionID:t,messageID:e.info.id}))}}function kH(e,t){if(!e)return;let n=OH(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 AH(e){let t=e.directory??void 0,n=MH(e.sessionId,e.onSendConfirmed),i=e.content;if(e.inputMode===`shell`){let r=e.messageID??ge(`msg`);return B.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??Ue.getState().currentDirectory??null,l=r(),u=Ei(c,l),d=Ga(c,l),f=L.getQueryState(u.queryKey),p=L.getQueryState(d.queryKey),m=f?.data!==void 0,h=p?.data!==void 0,[g,_]=await Promise.all([m?Promise.resolve(Oi(c,l)):L.fetchQuery({...u,staleTime:1/0}),h?Promise.resolve(qa(L,c,l)):L.fetchQuery({...d,staleTime:1/0})]);if(r()!==l)throw Error(`Runtime changed while resolving slash command`);let v=_.some(e=>e.name.toLowerCase()===o)?void 0:g.find(e=>e.name.toLowerCase()===o);if(v?.isBuiltIn===!1)i=`[command:${v.reference??v.name}]${s?` ${s}`:``}`;else if(v)return FS({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=>B.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 FS({sessionId:e.sessionId,content:i,providerID:e.providerID,modelID:e.modelID,agent:e.agent,directory:t,files:e.files,parts:e.optimisticParts,messageID:e.messageID,ticket:e.ticket,preserveOptimisticOnAmbiguous:e.preserveOptimisticOnAmbiguous,onSendConfirmed:n,send:n=>B.sendMessage({id:e.sessionId,providerID:e.providerID,modelID:e.modelID,text:i,agent:e.agent,agentMentions:e.agentMentionName?[{name:e.agentMentionName}]:void 0,variant:e.variant,files:e.files,additionalParts:e.additionalParts,delivery:e.delivery,messageId:n,directory:t}).then(()=>{})})}function jH(e,t){F(`/api/sessions/${e}/message-sent`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({messageID:t})}).catch(()=>{})}function MH(e,t){let n=!1;return r=>{if(!n){n=!0;try{t?.(r)}finally{jH(e,r)}}}}var NH=e=>{let t=e;return _(t.directory??null)??_(t.project?.worktree??null)},PH=u(),FH=`oc.chatInput.lastDraftTarget`,IH=()=>{try{let e=PH.getItem(FH);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}},LH=e=>{try{PH.setItem(FH,JSON.stringify(e))}catch{}},RH=Xo,zH=e=>{if(e)return rH.getState().getAttachment(e)},BH=(e,t,n)=>{if(!e)return null;let r=aH(zH(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=KH.get(qH());if(t?.sessionId===e&&t.directory)return _(t.directory)}let a=jd().find(t=>t.id===e);return a?NH(a):null},VH=e=>{let t=jd().find(t=>t.id===e);if(t)return t;let n=Y.getState();return[...n.activeSessions,...n.archivedSessions].find(t=>t.id===e)??null},HH=async(e,t)=>{await G.getState().activateDirectory(_(e),t)},UH={open:!1,draftID:null,directoryOverride:null,parentID:null,draftSubmitting:!1,draftEstablishing:!1},WH=new Map,GH=0,KH=new Map,qH=e=>(e??i()).trim()||`default`,JH=e=>({...e}),YH=(e,t)=>{let n=KH.get(e);KH.set(e,{sessionId:n?.sessionId??null,directory:n?.directory??null,draft:n?.draft?JH(n.draft):{...UH},...t})},XH=(e,t)=>{let n=Si.getState();if(t){let e=n.projects.find(e=>e.id===t);if(e?.path)return{id:e.id,path:e.path}}let r=Xo(n.projects,$.getState().availableWorktreesByProject,e);return r?.path?{id:r.id,path:r.path}:null},ZH=async(e,t)=>{if(!e)return;let n=XH(e,t);n&&await ek(n)&&await lO(e)},QH=(e,t)=>{let n=Si.getState(),r=Xo(n.projects,t,e);r&&n.moveProjectToTop(r.id)},$H=(e,t)=>e.transportIdentity===t.transportIdentity&&e.generation===t.generation,eU=(e,t)=>e.open&&e.draftSubmitting===!0&&e.draftID===t.draftID&&e.submissionToken===t.token,tU=(e,t)=>eU(e,t)&&$H(Dr.getState().captureDraftRuntime(),t.runtime);async function nU(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?DH({...e,sessionID:`draft:pending`}):r.pendingUserMessage,a={...r,draftEstablishing:!0,...i?{pendingUserMessage:i}:{}};return YH(qH(),{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 rU(){$.setState(e=>{let t=e.newSessionDraft;if(!t?.draftEstablishing)return{};let n={...t,draftEstablishing:!1};return YH(qH(),{draft:n}),{newSessionDraft:n}})}async function iU(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=qH(),t=s.draftID,n=o,YH(r,{draft:s}),{newSessionDraft:s}}),!t||n===null||!r)return null;await new Promise(e=>setTimeout(e,0));let i=$.getState().newSessionDraft;if(!i.open||i.draftSubmitting!==!0||i.draftID!==t||i.submissionToken!==n)return null;let a=Dr.getState().captureDraftRuntime(),o=S(a,t),s=Dr.getState().getDraft(o);return{token:n,draftID:t,draft:JH(i),runtime:a,runtimeMemoryKey:r,source:s?{key:o,revision:s.revision}:null}}function aU(e){$.setState(t=>{let n=t.newSessionDraft;if(tU(n,e)){let t={...n,draftSubmitting:!1,draftEstablishing:!1,pendingUserMessage:void 0},r=KH.get(e.runtimeMemoryKey);return r&&eU(r.draft,e)&&YH(e.runtimeMemoryKey,{draft:t}),{newSessionDraft:t}}return{}});let t=KH.get(e.runtimeMemoryKey);t&&eU(t.draft,e)&&YH(e.runtimeMemoryKey,{draft:{...t.draft,draftSubmitting:!1,draftEstablishing:!1,pendingUserMessage:void 0}})}function oU(e){let t=KH.get(e.runtimeMemoryKey);t&&eU(t.draft,e)&&YH(e.runtimeMemoryKey,{draft:{...UH}})}async function sU(e,t,n){if(!e.source)return null;let r;try{r=await Dr.getState().finalizeDraftOwnership({source:e.source.key,destination:C(e.runtime,t),expectedSourceRevision:e.source.revision,disposition:n,runtime:e.runtime})}catch{return console.warn(`[session-ui-store] draft ownership finalization rejected`,{disposition:n,sessionID:t,draftID:e.draftID}),null}return r.status!==`committed`&&console.warn(`[session-ui-store] draft ownership finalization did not commit`,{status:r.status,disposition:n,sessionID:t,draftID:e.draftID}),r}function cU(e,t){let n=t??e.directory??null;n&&wd(e.id,n),Y.getState().upsertSession(e),$.getState().markSessionAsOpenChamberCreated(e.id)}async function lU(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&&!tU(l,r);cU(e,c);let f=G.getState(),p=n.agent??f.currentAgentName;if(a){let t=n.directory||$.getState().lastLoadedDirectory||e.directory;t&&CD.getState().addSessionToFolder(t,a,e.id)}return d||(LH({projectId:o??null,directory:c}),HH(c).catch(e=>{console.warn(`Failed to activate directory after creating session:`,e)}),Ko.getState().saveSessionModelSelection(e.id,t.providerID,t.modelID),p&&(Ko.getState().saveSessionAgentSelection(e.id,p),Ko.getState().saveAgentModelForSession(e.id,p,t.providerID,t.modelID),Ko.getState().saveAgentModelVariantForSession(e.id,p,t.providerID,t.modelID,t.variant)),i.initializeNewOpenChamberSession(e.id,f.agents??[]),i.setCurrentSession(e.id,c),QH(c,$.getState().availableWorktreesByProject),u&&Xe(async()=>{let{usePermissionStore:e}=await Promise.resolve().then(()=>Oj);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&&oU(r),{sessionId:e.id,directory:c,agent:p,syntheticParts:s,selected:!d}}async function uU(e){let t=e.bootstrapPendingDirectory??e.directoryOverride??null,n=e.selectedProjectId??null;e.pendingWorktreeRequestId&&(t=await ND(e.pendingWorktreeRequestId),$.getState().resolvePendingDraftWorktreeTarget(e.pendingWorktreeRequestId,t)),await ZH(t,n);let r=t??B.getDirectory();return{directory:_(r),projectId:n}}async function dU(e,t){let n=await iU(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 uU(r),o=a??B.getDirectory(),s=await aS(r.title,o,r.parentID??null,void 0);if(!s?.id)throw Error(`Failed to create session`);return t&&IS({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 lU(s,e,{directory:a??s.directory??null,agent:i,draftProjectId:r.selectedProjectId,targetFolderId:r.targetFolderId,draftSyntheticParts:r.syntheticParts},n),claim:n}}catch{return aU(n),null}}async function fU(e){let t=await dU(e);return t?(await sU(t.claim,t.materialized.sessionId,`preserve`),t.materialized):null}var pU=2,mU=300;async function hU(e){let{useI18nStore:t,formatMessage:n}=await Xe(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-CUWqzRt7.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 gU(e){let{content:t,providerID:n,modelID:r,agent:i,agentMentionName:a,variant:o,attachments:s,additionalParts:c,onSessionReady:l}=e,u=$.getState().newSessionDraft,d=typeof i==`string`&&i.trim().length>0?i.trim():void 0,f=G.getState(),p=d??f.currentAgentName,m=e.messageID??u.pendingUserMessage?.info.id??ge(`msg`),h=DH({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 iU(h);if(!g)throw await hU(`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 uU(_),f=await B.buildMessageParts({text:t,files:e.length>0?e:void 0,additionalParts:i,agentMentions:u}),v=Te()?.conversations;if(!v?.createWithPrompt)throw await hU(`chat.chatInput.toast.messageSendFailed`);let y=d??B.getDirectory()??``,b=bx(y,{bootstrap:!1}),x=()=>$H(Dr.getState().captureDraftRuntime(),g.runtime),S;for(let e=0;e<=pU;e++){e>0&&await new Promise(e=>setTimeout(e,mU));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===pU))break}catch{if(e===pU)break}}if(!S)throw aU(g),Dr.getState().setPendingInputText(t,`replace`),await hU(`chat.chatInput.toast.messageSendFailed`);if(S.ok){let e=S.session,t=d??e.directory??null,i=t??y;cU(e,t);let a=i===y?b:bx(i,{bootstrap:!1});kH(e.id,h);let s=await lU(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 sU(g,e.id,`consume`),jH(e.id,m),s.selected&&fC(e.id),GS({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 aU(g),Dr.getState().setPendingInputText(t,`replace`),await hU(`chat.chatInput.toast.messageSendFailed`);if(e===`prompt`){let e=S,i=e.session,a=d??i.directory??null,s=await lU(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 RS(i.id,m,a,{isCurrent:x});if(e&&x()){await sU(g,i.id,`consume`),jH(i.id,m),s.selected&&fC(i.id),zS(bx(a??y,{bootstrap:!1}),i.id,m,e,{gapFillOnly:!0,directory:a??y}),l?.(i.id,a);return}throw await sU(g,i.id,`preserve`),Dr.getState().setPendingInputText(t,`replace`),await hU(`chat.chatInput.toast.sendStatusUnknown`)}throw await sU(g,i.id,`preserve`),Dr.getState().setPendingInputText(t,`replace`),await hU(`chat.chatInput.toast.messageSendFailed`)}}}catch(e){throw aU(g),e}}var _U=`oc.worktreeMap`,vU=()=>{try{let e=u().getItem(_U);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}},yU=e=>{try{u().setItem(_U,e)}catch{}},bU=e=>{let t=[];for(let n of e.values())t.push(...n);return t},xU=vU(),$=Oe()((e,t)=>({currentSessionId:null,currentSessionDirectory:null,newSessionDraft:{...UH},retainedPendingUserMessages:new Map,forkTransition:null,abortPromptSessionId:null,abortPromptExpiresAt:null,error:null,worktreeMetadata:new Map,availableWorktrees:bU(xU),availableWorktreesByProject:xU,webUICreatedSessions:new Set,sessionAbortFlags:new Map,queueAbortBlocks:new Map,abortControllers:new Map,isLoading:!1,lastLoadedDirectory:null,sessionPlanAvailable:new Map,pendingChangesBarDismissed:new Map,stagedMessageEdit:null,messageEditCommitting:null,pendingSendMessageIDs:new Map,clearRetainedPendingUserMessages:(t,n)=>{!t||n.length===0||e(e=>{let r=e.retainedPendingUserMessages.get(t);if(!r?.length)return e;let i=new Set(n),a=r.filter(e=>!i.has(e.info.id));if(a.length===r.length)return e;let o=new Map(e.retainedPendingUserMessages);return a.length===0?o.delete(t):o.set(t,a),{retainedPendingUserMessages:o}})},clearStagedMessageEdit:t=>{e(e=>!e.stagedMessageEdit||t&&e.stagedMessageEdit.sessionId!==t?e:{stagedMessageEdit:null})},beginMessageEditCommit:(t,n)=>{e({messageEditCommitting:{sessionId:t,messageId:n}})},endMessageEditCommit:(t,n)=>{e(e=>{let r=e.messageEditCommitting;return!r||r.sessionId!==t||r.messageId!==n?e:{messageEditCommitting:null}})},markMessageSending:(t,n)=>{e(e=>{if(e.pendingSendMessageIDs.get(t)===n)return e;let r=new Map(e.pendingSendMessageIDs);return r.set(t,n),{pendingSendMessageIDs:r}})},clearMessageSending:(t,n)=>{e(e=>{if(e.pendingSendMessageIDs.get(t)!==n)return e;let r=new Map(e.pendingSendMessageIDs);return r.delete(t),{pendingSendMessageIDs:r}})},setCurrentSession:(n,i)=>{wH(n),b(n);let a=t().currentSessionId,o=t().currentSessionDirectory;a!==n&&(yH(),e({stagedMessageEdit:null,messageEditCommitting:null})),n&&t().closeNewSessionDraft(),Dr.getState().setActiveAttachmentDraft(n?C({transportIdentity:r()},n):null);let s=qH();WH.set(s,n);let c=Ue.getState(),l=BH(n,e=>t().worktreeMetadata.get(e)),u=B.getDirectory()??c.currentDirectory??null,d=(i?_(i):null)??l??u,f=Si.getState(),m=d?Xo(f.projects,t().availableWorktreesByProject,d):null;e({currentSessionId:n,currentSessionDirectory:n?d??null:null}),YH(s,{sessionId:n,directory:d??null}),a!==n&&p.getState().syncWorkspacePanelsForSessionSwitch({previousSessionId:a,previousDirectory:o,nextSessionId:n,nextDirectory:n?d??null:null}),n&&lC(n,d);try{d&&c.currentDirectory!==d&&c.setDirectory(d,{showOverlay:!1}),m&&f.activeProjectId!==m.id&&f.setActiveProjectIdOnly(m.id),B.setDirectory(d??void 0)}catch(e){console.warn(`Failed to set OpenCode directory for session switch:`,e)}if(a&&a!==n){let e=a;setTimeout(()=>{if(!tH(e)?.isStreaming){let t=Pd(e);t.length>0&&nH.getState().updateViewportAnchor(e,t.length-1)}},0)}n&&(kk(n),vN(d??``,n))},prepareForRuntimeSwitch:n=>{let r=qH(n),i=Ue.getState().currentDirectory||null,a=t().currentSessionId,o=i?Ed(i):null;Qj({runtimeKey:r,directory:i,sessionId:a,status:a?o?.session_status?.[a]:null}),WH.set(r,t().currentSessionId),YH(r,{sessionId:a,directory:i,draft:JH(t().newSessionDraft)}),e({queueAbortBlocks:new Map})},restoreForRuntimeSwitch:t=>{let n=qH(t),i=KH.get(n),a=i?.sessionId??WH.get(n)??null;b(a);let o=i?.draft?JH(i.draft):{...UH},s=i?.directory??null;s&&Ue.getState().setDirectory(s,{showOverlay:!1}),e({currentSessionId:a,currentSessionDirectory:a?s:null,newSessionDraft:a?{...UH}:o,forkTransition:null,abortPromptSessionId:null,abortPromptExpiresAt:null,error:null,sessionAbortFlags:new Map,queueAbortBlocks:new Map,pendingChangesBarDismissed:new Map,retainedPendingUserMessages:new Map,stagedMessageEdit:null,messageEditCommitting:null,pendingSendMessageIDs:new Map}),Dr.getState().setActiveAttachmentDraft(a?C({transportIdentity:r()},a):o.open&&o.draftID?S({transportIdentity:r()},o.draftID):null),a?vN(s??B.getDirectory()??``,a):vN(``,``)},openNewSessionDraft:n=>{if(LF.getState().shouldBlockNewSessionDraftOpen())return;let i=t().newSessionDraft;if(i.draftSubmitting||i.draftEstablishing)return;t().clearStagedMessageEdit();let a=Si.getState(),o=a.projects,s=t().availableWorktreesByProject,c=_(t().currentSessionDirectory??null),l=_(Ue.getState().currentDirectory??null),u=IH(),d=n?.directoryOverride===void 0?null:_(n.directoryOverride),f=RH(o,s,d),m=n?.ensureProjectForDirectory&&d&&!f?a.addProject(d):null;m&&(a=Si.getState());let h=a.projects,g=a.getActiveProject(),v=n?.selectedProjectId?h.find(e=>e.id===n.selectedProjectId)??null:null,y=g||(a.activeProjectId?h.find(e=>e.id===a.activeProjectId)??null:h[0]??null),x=u?.projectId?h.find(e=>e.id===u.projectId)??null:null,C=RH(h,s,u?.directory??null),w=RH(h,s,c),T=RH(h,s,l),E=v||(d===null?w||(l?T:C??x??y):m??f),D=d===null?v?_(v.path??null):c||l||(u?.directory?u.directory:_(E?.path??null)):d;LH({projectId:E?.id??null,directory:D}),E&&a.activeProjectId!==E.id&&a.setActiveProjectIdOnly(E.id);let O=le({projectId:E?.id??null,directory:D}),k=S({transportIdentity:r()},O),A=Dr.getState().getDraft(k),j={open:!0,draftID:O,selectedProjectId:E?.id??null,directoryOverride:D,permissionAutoAcceptEnabled:n?.permissionAutoAcceptEnabled===!0,pendingWorktreeRequestId:n?.pendingWorktreeRequestId??null,bootstrapPendingDirectory:_(n?.bootstrapPendingDirectory??null),preserveDirectoryOverride:n?.preserveDirectoryOverride===!0,parentID:n?.parentID??null,title:n?.title,initialPrompt:n?.initialPrompt,syntheticParts:n?.syntheticParts,targetFolderId:n?.targetFolderId,submissionToken:i.open&&i.draftID===O?i.submissionToken:0,draftSubmitting:!1,draftEstablishing:!1},ee=t().currentSessionId,te=t().currentSessionDirectory;e({newSessionDraft:{...j},currentSessionId:null,currentSessionDirectory:null,error:null}),b(null),p.getState().setActiveMainTab(`chat`),ee&&p.getState().syncWorkspacePanelsForSessionSwitch({previousSessionId:ee,previousDirectory:te,nextSessionId:null,nextDirectory:null}),YH(qH(),{sessionId:null,directory:D,draft:j}),Dr.getState().setActiveAttachmentDraft(k),A||Dr.getState().clearAttachedFiles(),n?.initialPrompt&&Dr.getState().setPendingInputText(n.initialPrompt);let M=_(E?.path??null)??D,ne=E?_(M):null,re=j.draftID,ie=r();HH(M,{source:`newSessionDraft`}).then(()=>{let e=t().newSessionDraft,n=_(G.getState().activeDirectoryKey);!e.open||e.draftID!==re||r()!==ie||!ne||n!==ne||G.getState().applyDefaultModelAgentSelection({projectDefaultModel:E?.defaultModel})}),D&&D!==Ue.getState().currentDirectory&&Ue.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}),YH(qH(),{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}:{}}}}),HH(r,{source:`setNewSessionDraftTarget`}),r&&r!==Ue.getState().currentDirectory&&Ue.getState().setDirectory(r)},setDraftPreserveDirectoryOverride:t=>e(e=>e.newSessionDraft?.open?{newSessionDraft:{...e.newSessionDraft,preserveDirectoryOverride:t}}:e),setDraftPermissionAutoAcceptEnabled:t=>e(e=>e.newSessionDraft?.open?{newSessionDraft:{...e.newSessionDraft,permissionAutoAcceptEnabled:t}}:e),acknowledgeSessionAbort:t=>e(e=>{let n=new Map(e.sessionAbortFlags),r=n.get(t);return r&&n.set(t,{...r,acknowledged:!0}),{sessionAbortFlags:n}}),beginQueueAbortBlock:(t,n=2e3)=>{let r=fe(),i=D(t);return e(e=>{let t=new Map(e.queueAbortBlocks);return t.set(i,{token:r,expiresAt:Date.now()+n}),{queueAbortBlocks:t}}),r},clearQueueAbortBlock:(t,n)=>e(e=>{let r=D(t);if(e.queueAbortBlocks.get(r)?.token!==n)return e;let i=new Map(e.queueAbortBlocks);return i.delete(r),{queueAbortBlocks:i}}),pruneQueueAbortBlocks:(t=Date.now())=>e(e=>{let n;for(let[r,i]of e.queueAbortBlocks)i.expiresAt>t||(n||=new Map(e.queueAbortBlocks),n.delete(r));return n?{queueAbortBlocks:n}:e}),clearAbortPrompt:()=>e({abortPromptSessionId:null,abortPromptExpiresAt:null}),armAbortPrompt:(n=5e3)=>{let{currentSessionId:r}=t();if(!r)return null;let i=Date.now()+n;return e({abortPromptSessionId:r,abortPromptExpiresAt:i}),i},clearError:()=>e({error:null}),markSessionAsOpenChamberCreated:t=>e(e=>{let n=new Set(e.webUICreatedSessions);return n.add(t),{webUICreatedSessions:n}}),isOpenChamberCreatedSession:e=>t().webUICreatedSessions.has(e),getContextUsage:(e,n)=>{if(t().newSessionDraft?.open)return null;let r=t().currentSessionId;if(!r)return null;let i=Pd(r);if(i.length===0)return null;let a=Sk(i,e=>Fd(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(vk(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?rH.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}):rH.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}}),HH(n,{source:`overrideNewSessionDraftTarget`}),n&&n!==Ue.getState().currentDirectory&&Ue.getState().setDirectory(n)},resolvePendingDraftWorktreeTarget:(t,n,r)=>e(e=>!e.newSessionDraft?.open||e.newSessionDraft.pendingWorktreeRequestId!==t?e:{newSessionDraft:{...e.newSessionDraft,selectedProjectId:r?.projectId??e.newSessionDraft.selectedProjectId??null,directoryOverride:_(n),pendingWorktreeRequestId:null,bootstrapPendingDirectory:_(r?.bootstrapPendingDirectory??e.newSessionDraft.bootstrapPendingDirectory??null),preserveDirectoryOverride:r?.preserveDirectoryOverride??!0}}),setDraftBootstrapPendingDirectory:t=>e(e=>e.newSessionDraft?.open?{newSessionDraft:{...e.newSessionDraft,bootstrapPendingDirectory:_(t)}}:e),setPendingDraftWorktreeRequest:t=>e(e=>e.newSessionDraft?.open?{newSessionDraft:{...e.newSessionDraft,pendingWorktreeRequestId:t}}:e),getWorktreeMetadata:e=>t().worktreeMetadata.get(e),dismissPendingChangesBar:(n,r)=>{let i=new Map(t().pendingChangesBarDismissed);r===null?i.delete(n):i.set(n,r),e({pendingChangesBarDismissed:i})},sendMessage:async(n,r,i,a,o,s,c,l,u,d)=>{let f=t().stagedMessageEdit,m=d?.sessionId??t().currentSessionId,h=d?.commitStagedMessageEdit&&f&&f.sessionId===m?f:null,g=d?.sessionId??t().currentSessionId;if(g){let n=new Map(t().pendingChangesBarDismissed);n.delete(g),e({pendingChangesBarDismissed:n})}let v=t().newSessionDraft,y=typeof a==`string`&&a.trim().length>0?a.trim():void 0,b=u!==`shell`&&n.trim().length>0?RF.getState().consume():{armed:!1,objectiveOverride:null},x=b.armed;if(x){let e=p.getState(),t=$V(`Goal mode is active for this session. The user message above defines the goal objective. Work toward it across turns; whenever you stop before the objective is verifiably complete, the system will automatically prompt you to continue. Progress is evaluated independently after each turn, so end every turn with a clear, factual statement of what is done, what was verified, and what remains.`+(e.sessionGoalDefaultBudgetEnabled?` A token budget of ${e.sessionGoalDefaultBudget} tokens applies to this goal.`:``));c=[...c??[],{text:t,synthetic:!0}]}let S=(e,t)=>{if(!x)return;let r=p.getState(),i=r.sessionGoalDefaultBudgetEnabled?r.sessionGoalDefaultBudget:null,a=b.objectiveOverride?.trim()||n;qV(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 gU({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=DH({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 dU({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;fC(p.sessionId);let g=o?.map(e=>({type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename}));try{await AH({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 sU(m,p.sessionId,`consume`)}catch(e){throw await sU(m,p.sessionId,`preserve`),e}QH(p.directory,t().availableWorktreesByProject),S(p.sessionId,p.directory);return}let C=d?.sessionId??t().currentSessionId,w=C?Ko.getState().getSessionAgentSelection(C):null,T=G.getState().currentAgentName,E=y||w||T||void 0;if(C&&Ko.getState().saveSessionModelSelection(C,r,i),C&&E&&(Ko.getState().saveSessionAgentSelection(C,E),Ko.getState().saveAgentModelForSession(C,E,r,i),Ko.getState().saveAgentModelVariantForSession(C,E,r,i,l)),C){let e=nH.getState(),t=tH(C);if(!t||!t.lastUserMessageAt){let n=new Map(e.sessionMemoryState);n.set(eH(C),{viewportAnchor:0,isStreaming:!1,lastAccessedAt:Date.now(),backgroundMessageCount:0,...t,lastUserMessageAt:Date.now()}),nH.setState({sessionMemoryState:n})}}let D=C?_(d?.directoryHint)??_(t().getDirectoryForSession(C)):null;C&&fC(C);let O=o?.map(e=>({type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename}));if(h)try{await rC(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 AH({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)}QH(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 aS(n,r??B.getDirectory(),i??null,a);if(!o)return c&&!t().newSessionDraft.open&&!t().currentSessionId&&(e({newSessionDraft:{...c,draftSubmitting:!1,draftEstablishing:!1}}),YH(qH(),{draft:{...c,draftSubmitting:!1,draftEstablishing:!1}})),null;if(s){let e=r||t().lastLoadedDirectory||o.directory;e&&CD.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}}),YH(qH(),{draft:{...c,draftSubmitting:!1,draftEstablishing:!1}})),null}},deleteSession:e=>vS(e),deleteSessions:async e=>{let t=[],n=[];for(let r of e)await vS(r)?t.push(r):n.push(r);return{deletedIds:t,failedIds:n}},archiveSession:e=>xS(e),archiveSessions:async e=>{let t=[],n=[];for(let r of e)await xS(r)?t.push(r):n.push(r);return{archivedIds:t,failedIds:n}},updateSessionTitle:async(e,t)=>{await CS(e,t)},requestSessionSmartTitle:async e=>{await wS(e)},shareSession:async e=>TS(e),unshareSession:async e=>ES(e),revertToMessage:async(e,t,n)=>{await ZS(e,t,n?.directory)},editMessagePreservingChanges:async(t,n,r)=>{await $S(t,n,r),e({stagedMessageEdit:{sessionId:t,messageId:n}})},handleSlashUndo:async e=>{let n=Pd(e),r=Ad().find(t=>t.id===e)?.revert?.messageID,i=ds(n,r);if(!i)return;let a=Fd(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 Xe(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 Xe(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-CUWqzRt7.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 Xe(async()=>{let{unrevertSession:e}=await Promise.resolve().then(()=>Hb);return{unrevertSession:e}},void 0);await t(e);let{toast:n}=await Xe(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 Xe(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-CUWqzRt7.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=Ad().find(t=>t.id===e)?.revert?.messageID;if(!r)return;let i=fs(Pd(e),r);if(i){await t().revertToMessage(e,i.id,{skipRedoPush:!0});let{toast:n}=await Xe(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 Xe(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-CUWqzRt7.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 oC(e);let{toast:a}=await Xe(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 Xe(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-CUWqzRt7.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=VH(n),s=++GH;try{let a=i?.directory??t().getDirectoryForSession(n)??B.getDirectory()??``;if(!a){console.warn(`[session-fork] forkFromMessage missing directory`,{sessionId:n,messageId:r});let{toast:e}=await Xe(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 sC(n,s,r,a)){console.warn(`[session-fork] forkFromMessage ended before completion`,{operationId:s,sessionId:n,messageId:r});return}let{toast:c}=await Xe(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 Xe(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=VH(n),a=++GH;try{let r=t().getDirectoryForSession(n)??B.getDirectory()??``;if(!r){console.warn(`[session-fork] forkCurrentSession missing directory`,{sessionId:n});let{toast:e}=await Xe(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 sC(n,a)){console.warn(`[session-fork] forkCurrentSession ended before completion`,{operationId:a,sessionId:n});return}let{toast:o}=await Xe(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 Xe(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?jd().filter(e=>NH(e)===t):[]},getAuthoritativeDirectoryForSession:e=>{let n=BH(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?fE(i):null},getDirectoryForSession:e=>e===t().currentSessionId&&t().currentSessionDirectory?t().currentSessionDirectory:BH(e,e=>t().worktreeMetadata.get(e))||t().getAuthoritativeDirectoryForSession(e),getLastUserChoice:e=>{let n=Pd(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=>Ko.getState().sessionAgentSelections.get(e)??void 0,debugSessionMessages:async e=>{let t=Pd(e);Ad().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}),YH(qH(),{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}));Gj((e,t)=>{$.getState().setCurrentSession(e,t)});var SU=``;$.subscribe((e,t)=>{if(e.availableWorktreesByProject!==t.availableWorktreesByProject){let t=JSON.stringify([...e.availableWorktreesByProject.entries()]);t!==SU&&(SU=t,yU(t))}});function CU(e,t){let n=e.findIndex(e=>e.sessionId===t.sessionId);return n>=0?e.slice(0,n+1):[...e,t]}function wU(e){return e.length>1?e.slice(0,-1):[]}function TU(e,t){let n=e.at(-1);return[{...t,key:n?.key??t.key}]}function EU(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 DU={activeTab:`projects`,secondary:null},OU=0,kU=null,AU=e=>{let t=++OU;return kU={generation:t,sessionId:e.sessionId,directory:_(e.directory)??null},t},jU=e=>{let t=kU;return t&&t.generation===OU&&t.sessionId===e.sessionId&&t.directory===(_(e.directory)??null)?(kU=null,`internal`):(kU=null,`external`)},MU=()=>{OU+=1,kU=null},NU=e=>{let t=$.getState(),n=t.currentSessionId?t.getDirectoryForSession(t.currentSessionId):null;t.currentSessionId===e.sessionId&&_(n)===_(e.directory)?MU():AU(e),t.setCurrentSession(e.sessionId,e.directory??null)},PU=Oe(e=>({...DU,setActiveTab:t=>{MU(),e({activeTab:t,secondary:null})},openSession:t=>{e({secondary:{kind:`chat`,routes:[IU(t,`root`)]}}),NU(t)},pushSession:t=>{e(e=>{let n=IU(t,`push`);return{secondary:{kind:`chat`,routes:e.secondary?.kind===`chat`?CU(e.secondary.routes,n):[n]}}}),NU(t)},popChatSession:()=>{e(e=>{if(e.secondary?.kind!==`chat`)return e;let t=wU(e.secondary.routes);return t.length>0?{secondary:{kind:`chat`,routes:t}}:{secondary:null}});let t=PU.getState().secondary,n=t?.kind===`chat`?t.routes.at(-1)??null:null;n&&NU(n)},reconcileChatPredecessor:t=>e(e=>{if(e.secondary?.kind!==`chat`)return e;let n=EU(e.secondary.routes,IU(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:TU(e.secondary.routes,IU(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=>{MU(),$.getState().openNewSessionDraft(t),e({secondary:{kind:`draft`}})},openAssistant:t=>{MU(),ut.getState().selectAssistant(t),e({secondary:{kind:`assistant`}})},openInstances:()=>{MU(),e({secondary:{kind:`instances`}})},closeSecondary:()=>{MU(),e(e=>e.secondary?{...e,secondary:null}:e)},reset:()=>{MU(),e({...DU})}})),FU=1,IU=(e,t)=>({key:t===`root`?`chat-primary`:`chat-${t}-${FU++}`,sessionId:e.sessionId,directory:e.directory??null}),LU=e=>!ft()||pt()?!1:(PU.getState().pushSession(e),!0);export{Lz as $,Ka as $a,Td as $i,YD as $n,CS as $r,yF as $t,RV as A,is as Aa,Pm as Ai,mO as An,mt as Ao,$C as Ar,pF as At,jB as B,Io as Ba,Dp as Bi,lk as Bn,aS as Br,_P as Bt,eH as C,Us as Ca,Qg as Ci,dA as Cn,jr as Co,zw as Cr,RF as Ct,JV as D,os as Da,ig as Di,Ak as Dn,Zt as Do,fw as Dr,PF as Dt,WV as E,Qo as Ea,ag as Ei,Dk as En,Yt as Eo,Fw as Er,FF as Et,QB as F,Ko as Fa,Xp as Fi,ik as Fn,KS as Fr,yN as Ft,Uz as G,Qa as Ga,Ap as Gi,tk as Gn,qS as Gr,HP as Gt,Zz as H,Mo as Ha,kp as Hi,rk as Hn,nS as Hr,SF as Ht,_V as I,Ho as Ia,Yp as Ii,QO as In,xS as Ir,AM as It,Kz as J,vo as Ja,Jf as Ji,eO as Jn,NS as Jr,UP as Jt,Nz as K,$a as Ka,ap as Ki,gk as Kn,JS as Kr,BP as Kt,YB as L,Bo as La,Up as Li,ek as Ln,jS as Lr,DM as Lt,IV as M,qo as Ma,hm as Mi,mk as Mn,pt as Mo,mC as Mr,ZN as Mt,kV as N,Jo as Na,dm as Ni,ok as Nn,pC as Nr,vN as Nt,YV as O,es as Oa,Xm as Oi,vk as On,Xt as Oo,UC as Or,LF as Ot,XB as P,Xo as Pa,Zp as Pi,nk as Pn,dS as Pr,bN as Pt,Iz as Q,Ha as Qa,jd as Qi,cO as Qn,SS as Qr,CP as Qt,vV as R,Ro as Ra,Np as Ri,fk as Rn,bS as Rr,JP as Rt,nH as S,$l as Sa,i_ as Si,fA as Sn,Ar as So,oT as Sr,gI as St,XV as T,ss as Ta,Tg as Ti,kk as Tn,Dr as To,Rw as Tr,NF as Tt,mB as U,Po as Ua,Mp as Ui,ak as Un,YS as Ur,CM as Ut,Yz as V,Fo as Va,Ep as Vi,hk as Vn,XS as Vr,vP as Vt,PB as W,eo as Wa,jp as Wi,$O as Wn,wS as Wr,SM as Wt,Gz as X,qa as Xa,G as Xi,$D as Xn,gx as Xr,CF as Xt,Hz as Y,uo as Ya,yf as Yi,tO as Yn,yS as Yr,KP as Yt,Pz as Z,Ja as Za,Md as Zi,XD as Zn,$S as Zr,mF as Zt,aH as _,_u as _a,nv as _i,Mj as _n,Rr as _o,DT as _r,iL as _t,rU as a,Uu as aa,Jy as ai,EP as an,ba as ao,CD as ar,bz as at,rH as b,U as ba,t_ as bi,cj as bn,Br as bo,tT as br,JI as bt,AH as c,yu as ca,bv as ci,gF as cn,ha as co,KE as cr,pz as ct,TH as d,Tu as da,Cv as di,qP as dn,ma as do,HE as dr,sz as dt,Pd as ea,zx as ei,xP as en,va as eo,lO as er,Az as et,EH as f,H as fa,Tv as fi,_F as fn,Oi as fo,fE as fr,$R as ft,cH as g,Cu as ga,P_ as gi,Nj as gn,Si as go,ET as gr,nL as gt,bH as h,Eu as ha,Q_ as hi,Rj as hn,Di as ho,Y as hr,FR as ht,nU as i,Nd as ia,sb as ii,PP as in,ja as io,qE as ir,wz as it,LV as j,Zo as ja,Sm as ji,dk as jn,ft as jo,QC as jr,oF as jt,NV as k,$o as ka,zm as ki,Sk as kn,Gt as ko,ew as kr,gP as kt,$ as l,xu as la,Dv as li,hF as ln,fa as lo,mE as lr,rz as lt,xH as m,wu as ma,wv as mi,Uj as mn,wi as mo,UE as mr,YR as mt,LU as n,Ad as na,Ob as ni,TP as nn,Na as no,MD as nr,kz as nt,DH as o,ed as oa,Zv as oi,OP as on,Da as oo,zE as or,yz as ot,yH as p,pu as pa,_v as pi,Hj as pn,ki as po,VE as pr,qR as pt,Wz as q,_o as qa,Zf as qi,ZD as qn,ZS as qr,VP as qt,PU as r,wd as ra,Tb as ri,MP as rn,Ma as ro,jD as rr,Oz as rt,fU as s,Xu as sa,jv as si,AP as sn,Ea as so,BE as sr,mz as st,jU as t,Fd as ta,Vb as ti,SP as tn,Oa as to,AD as tr,jz as tt,wH as u,bu as ua,Ev as ui,FP as un,pa as uo,GE as ur,ZR as ut,sH as v,Su as va,n_ as vi,Dj as vn,Vr as vo,fT as vr,X as vt,$V as w,us as wa,Zg as wi,pA as wn,kr as wo,Pw as wr,IF as wt,tH as x,Ql as xa,s_ as xi,wA as xn,zr as xo,rT as xr,YI as xt,oH as y,fu as ya,r_ as yi,lj as yn,Lr as yo,$w as yr,HI as yt,BB as z,Vo as za,Tp as zi,JO as zn,rC as zr,GP as zt};