@openchambery/web 2.0.3 → 2.0.5-beta.1

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 (67) hide show
  1. package/dist/assets/{AgentAvatar-DGyF86jy.js → AgentAvatar-C1MGZ7qC.js} +1 -1
  2. package/dist/assets/{AssistantView-IobZeLMK.js → AssistantView-CqnNzTHt.js} +3 -3
  3. package/dist/assets/{DiagramView-CaX3wQmk.js → DiagramView-2tzS00bO.js} +1 -1
  4. package/dist/assets/{FadeInOnReveal-B_a083XJ.js → FadeInOnReveal-BMSk_tY-.js} +1 -1
  5. package/dist/assets/{Icon-BE2hkaYc.js → Icon-BdzPRCSy.js} +1 -1
  6. package/dist/assets/MarkdownRenderer-ByXIhjNC.js +2 -0
  7. package/dist/assets/{MarkdownRendererImpl-BBi4enXr.js → MarkdownRendererImpl-BiZ4JRig.js} +1 -1
  8. package/dist/assets/{MarkstreamRendererImpl-D29Hxacd.js → MarkstreamRendererImpl-DxFmgjlq.js} +1 -1
  9. package/dist/assets/{MobileDetailNavigation-DnMMLeWa.js → MobileDetailNavigation-jJhLjRLn.js} +1 -1
  10. package/dist/assets/{MobileShareBridge-C2wW1Jn5.js → MobileShareBridge-CTA7NoK2.js} +2 -2
  11. package/dist/assets/MobileTabPageHeader-T3yD44sd.js +2 -0
  12. package/dist/assets/{MultiRunWindow-DfIQdd6N.js → MultiRunWindow-B33IC-8x.js} +1 -1
  13. package/dist/assets/{OnboardingScreen-CTmsNR65.js → OnboardingScreen-yRdQTR1M.js} +1 -1
  14. package/dist/assets/{OverlayScrollbar-Brzy-kXO.js → OverlayScrollbar-C1C2aKOe.js} +1 -1
  15. package/dist/assets/{SettingsView-C5423SQ1.js → SettingsView-CNggmmFw.js} +1 -1
  16. package/dist/assets/{SettingsWindow-CyAp8i7h.js → SettingsWindow-MmNrsJf-.js} +1 -1
  17. package/dist/assets/{TerminalView-C5XWIu3F.js → TerminalView-Diz80kvf.js} +1 -1
  18. package/dist/assets/{ToolOutputDialog-D4DWCxvI.js → ToolOutputDialog-okB3gi10.js} +1 -1
  19. package/dist/assets/{appThemeRegistry-CqF7vjgv.js → appThemeRegistry-CqutS5NP.js} +1 -1
  20. package/dist/assets/{button-CcOoDLE1.js → button-CUwjpv-i.js} +1 -1
  21. package/dist/assets/{collapsible-CSa0Ndgm.js → collapsible-paItOH3A.js} +1 -1
  22. package/dist/assets/{context-menu-DoTwmMb5.js → context-menu-K6zNumqN.js} +1 -1
  23. package/dist/assets/{desktopHosts-BsbquPqS.js → desktopHosts-DuftEj8B.js} +1 -1
  24. package/dist/assets/{desktopRelayRestore-yyvjztgj.js → desktopRelayRestore-g378BdZf.js} +1 -1
  25. package/dist/assets/{diagram-CZKDkADZ.js → diagram-D6nY5hbD.js} +1 -1
  26. package/dist/assets/{dialog-Csvrld51.js → dialog-PjKWayIU.js} +1 -1
  27. package/dist/assets/{fileMentionTouchSelection-BiHRyKLM.js → fileMentionTouchSelection-D4xaaiFq.js} +1 -1
  28. package/dist/assets/{fileQueries-B0hhXD86.js → fileQueries-DuF89nFO.js} +1 -1
  29. package/dist/assets/{gitApi-BET0Byz4.js → gitApi-praFErFC.js} +1 -1
  30. package/dist/assets/{input-C6Y7mytw.js → input-BeVw4D0W.js} +1 -1
  31. package/dist/assets/{insertionBoundaries-BolaZO_L.js → insertionBoundaries-Bt1xcKNh.js} +1 -1
  32. package/dist/assets/{main-BYD7ZoLH.js → main-DBI2rZ1q.js} +4 -4
  33. package/dist/assets/{main-C7GCHEEF.js → main-Dve-Q3SA.js} +2 -2
  34. package/dist/assets/{markdownHeightCache-DhLhFBWX.js → markdownHeightCache-CGCWmHgq.js} +1 -1
  35. package/dist/assets/{mcpQueries-B4Az0xG3.js → mcpQueries-BKZNt7TO.js} +1 -1
  36. package/dist/assets/{miniChat-BCYRFDdi.js → miniChat-BJLX3Y4b.js} +2 -2
  37. package/dist/assets/{mobile-DQrWwemv.js → mobile-B4Ti0kDc.js} +2 -2
  38. package/dist/assets/{multirun-DSHVEjC1.js → multirun-CKt8xLsh.js} +1 -1
  39. package/dist/assets/{persistence-CwHY3fDg.js → persistence-Dnj1QOdX.js} +1 -1
  40. package/dist/assets/{platform-CAw45mRH.js → platform-wu6wSDfg.js} +1 -1
  41. package/dist/assets/{projectMeta-Dt7jGs7G.js → projectMeta-CrW4uRC8.js} +1 -1
  42. package/dist/assets/{renderElectronMiniChatApp-Dg0KAxOh.js → renderElectronMiniChatApp-DvxT8SxW.js} +2 -2
  43. package/dist/assets/{renderMobileApp-B7ujjkys.js → renderMobileApp-Df1jHBvK.js} +4 -4
  44. package/dist/assets/{runtimeConfig-Ck3U6U69.js → runtimeConfig-jDoPOX29.js} +1 -1
  45. package/dist/assets/{runtimeEndpointReset-BLhNx9Ha.js → runtimeEndpointReset-87byR7BL.js} +1 -1
  46. package/dist/assets/{sessionChangeSummary-CCwFZMko.js → sessionChangeSummary-DcroUuyO.js} +1 -1
  47. package/dist/assets/{sessionLookup-D1SMVVVx.js → sessionLookup-GLnw9Y1n.js} +1 -1
  48. package/dist/assets/{sortable-tabs-strip-Df46aoL0.js → sortable-tabs-strip-NN4v9dLg.js} +1 -1
  49. package/dist/assets/{terminalApi-D_9-ZZGH.js → terminalApi-DXyzaX3K.js} +1 -1
  50. package/dist/assets/{textarea-5RcNvWr-.js → textarea-Kl-rTWJe.js} +1 -1
  51. package/dist/assets/{tooltip-CBHR50fA.js → tooltip-DDNnmcXI.js} +1 -1
  52. package/dist/assets/{url-CEnO45_n.js → url-DNRMq_0R.js} +1 -1
  53. package/dist/assets/{useAppFontEffects-Boj2N0LY.js → useAppFontEffects-BFZ0lznC.js} +5 -5
  54. package/dist/assets/{useAssistantUIStore-CXj8c_tt.js → useAssistantUIStore-DBwfg9nX.js} +1 -1
  55. package/dist/assets/{useDesktopWindowControlsLayout-BHouamSC.js → useDesktopWindowControlsLayout-DI6XjptF.js} +1 -1
  56. package/dist/assets/{useEffectiveDirectory--BFcBzXy.js → useEffectiveDirectory-Hs1zkn-f.js} +1 -1
  57. package/dist/assets/{useFontPreferences-wessJ1bY.js → useFontPreferences-Cw2aKlz7.js} +1 -1
  58. package/dist/assets/{useMobileNavigationStore-CEhyCPzG.js → useMobileNavigationStore-DeReJWbg.js} +4 -4
  59. package/dist/assets/{useSessionAutoCleanup-DtJnFdK_.js → useSessionAutoCleanup-D_qNXufm.js} +1 -1
  60. package/dist/assets/{useUIStore-DNkuudYO.js → useUIStore-Dfx6TKvi.js} +1 -1
  61. package/dist/assets/{useWorkerHighlightedLines-xOfdvJAv.js → useWorkerHighlightedLines-DDSSeshJ.js} +1 -1
  62. package/dist/index.html +8 -8
  63. package/dist/mini-chat.html +8 -8
  64. package/dist/mobile.html +8 -8
  65. package/package.json +1 -1
  66. package/dist/assets/MarkdownRenderer-BR3GGkaV.js +0 -2
  67. package/dist/assets/MobileTabPageHeader-Dut8qwOp.js +0 -2
@@ -1,5 +1,5 @@
1
1
  const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/vendor-heic2any-CUPf3g2A.js","assets/rolldown-runtime-C0FnF6B9.js"])))=>i.map(i=>d[i]);
2
- import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{C as t,D as n,k as r}from"./runtime-auth-D66yq6ie.js";import{c as i,f as a,i as o,n as s,r as c,s as l}from"./runtime-switch-BJM2k_uH.js";import{n as u}from"./runtime-fetch-CiqQd__Y.js";import{Kt as d,On as f,Vt as p,dt as m,ft as h,on as g,r as ee,rn as te,st as ne,vt as re,wt as ie,zt as ae}from"./persistence-CwHY3fDg.js";import{a as oe,r as se}from"./vendor-zustand-DzRqcymP.js";import{rt as ce}from"./vendor-base-ui-CnHfUmDN.js";import{n as le,r as ue,t as de}from"./vendor-opencode-client-MF2GBrFx.js";import{x as fe}from"./useUIStore-DNkuudYO.js";import{n as pe}from"./vendor-react-DLPElpoQ.js";import{i as me}from"./vendor-pathe-vBmvQE8f.js";import{o as he}from"./vendor-aparajita-capacitor-secure-storage-CjQdwfjS.js";var ge=(e,t)=>e!==t,_=e=>{if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0};function _e(e){let t=_(e.id),n=_(e.name),r=_(e.displayName),i=t??n;if(!i)return{...e,id:``,name:``,displayName:r??``};if(n===i&&r)return{...e,id:i,name:i,displayName:r};let a=r??n??i;return{...e,id:i,name:i,displayName:a}}function ve(e){return e?_(e.displayName)??_(e.name)??_(e.id)??``:``}function ye(e,t){let n=_(t);if(!n||!e?.length)return;let r=e.find(e=>_(e.name)===n);if(r)return r;let i=e.find(e=>_(e.id)===n);if(i)return i;let a=e.find(e=>_(e.displayName)===n);if(a)return a}function be(e,t){let n=_(t);if(!n)return;let r=ye(e,n);return r?_(r.name)??_(r.id)??n:n}function xe(e){return Array.from(new Set(Array.from(e.matchAll(ie()),e=>e[1])),e=>({id:e,name:e}))}function v(e){return{...e,directory:e.location?.directory}}function Se(e){let t={};for(let n of e){let e=n;!e||e.type!==`document`||!e.info||typeof e.info!=`object`||Object.assign(t,e.info)}return t}var y=e(ce(),1),Ce=pe();function b(e,t){return e.findIndex(e=>e.id===t)}function we(e,t){if(!t)return e.slice();let n=b(e,t);return n<0?e.slice():e.slice(0,n)}function Te(e,t,n){let r=b(e,n);return r<0?!1:b(e,t)>=r}function Ee(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=b(e,t);if(!(n<0))for(let t=n-1;t>=0;--t){let n=e[t];if(n?.role===`user`)return n}}function De(e,t){let n=b(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 Oe=`openchamber:sync:debug`,ke;function Ae(){if(ke!==void 0)return ke;try{ke=typeof localStorage<`u`&&localStorage.getItem(Oe)===`1`}catch{ke=!1}return ke}function x(e,...t){Ae()&&(`${e}`,[...t])}var je={pipeline:{coalesced:(e,t)=>x(`pipeline`,`coalesced`,e,t),flush:e=>x(`pipeline`,`flush`,`${e} events`)},reducer:{messageUpdatedUnchanged:(e,t,n,r,i)=>x(`reducer`,`message.updated UNCHANGED (skipped)`,{sessionID:e,messageID:t,role:n,finish:r,completed:i}),partUpdatedNoExistingParts:(e,t,n)=>x(`reducer`,`message.part.updated NO EXISTING PARTS`,{messageID:e,partID:t,partType:n}),partDeltaNoParts:(e,t)=>x(`reducer`,`message.part.delta DROPPED (no parts array)`,{messageID:e,partID:t}),partDeltaNotFound:(e,t)=>x(`reducer`,`message.part.delta DROPPED (partID not found)`,{messageID:e,partID:t}),partSkipped:(e,t,n)=>x(`reducer`,`message.part.updated SKIPPED (type filtered)`,{messageID:e,partID:t,partType:n})},dispatch:{eventNoChange:(e,t,n)=>x(`dispatch`,`event → no change`,{eventType:e,sessionID:t,messageID:n}),eventApplied:(e,t,n)=>x(`dispatch`,`event → applied`,{eventType:e,sessionID:t,messageID:n})},recovery:{materializing:e=>x(`recovery`,`materializing session`,e)}},Me=`desc`;function Ne(e){return!S(e)||e.type!==`compaction`?!1:e.status===`running`||e.status===`completed`||e.status===`failed`}function Pe(e){if(e)return e.find(Ne)}var Fe=e=>e?e.toLowerCase().includes(`application/json`):!1,Ie=e=>e?e.toLowerCase().includes(`text/html`):!1;function S(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}function C(e){return typeof e==`string`&&e.length>0?e:void 0}function Le(e){if(!S(e))return null;let t=C(e.id);return t?{...e,id:t}:null}function Re(e,t,n){return`${e}:${t}:${n}`}function ze(e,t,n,r,i=`text`,a){return i===`reasoning`?{id:Re(t,i,n),sessionID:e,messageID:t,type:`reasoning`,text:r}:{id:Re(t,i,n),sessionID:e,messageID:t,type:`text`,text:r,...a?.synthetic===!0?{synthetic:!0}:{}}}function Be(e){return e?e.nativeType===`synthetic`||e.type===`synthetic`:!1}function Ve(e,t){return!e?.id||Be(e)||(e.clientRole??e.role)!==`user`?!1:!Array.isArray(t)||t.length===0||!(t.some(e=>e.type===`subtask`||e.type===`compaction`)||t.every(e=>!!e.synthetic))}function He(e){if(typeof e==`string`&&e.length!==0)return e.replace(/^evt_/,`msg_`)}function Ue(e){let t=e.content;return Array.isArray(t)?t.flatMap(e=>S(e)&&e.type===`text`&&typeof e.text==`string`?[e.text]:[]).join(`
2
+ import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{C as t,D as n,k as r}from"./runtime-auth-D66yq6ie.js";import{c as i,f as a,i as o,n as s,r as c,s as l}from"./runtime-switch-BJM2k_uH.js";import{n as u}from"./runtime-fetch-CiqQd__Y.js";import{Kt as d,On as f,Vt as p,dt as m,ft as h,on as g,r as ee,rn as te,st as ne,vt as re,wt as ie,zt as ae}from"./persistence-Dnj1QOdX.js";import{a as oe,r as se}from"./vendor-zustand-DzRqcymP.js";import{rt as ce}from"./vendor-base-ui-CnHfUmDN.js";import{n as le,r as ue,t as de}from"./vendor-opencode-client-MF2GBrFx.js";import{x as fe}from"./useUIStore-Dfx6TKvi.js";import{n as pe}from"./vendor-react-DLPElpoQ.js";import{i as me}from"./vendor-pathe-vBmvQE8f.js";import{o as he}from"./vendor-aparajita-capacitor-secure-storage-CjQdwfjS.js";var ge=(e,t)=>e!==t,_=e=>{if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0};function _e(e){let t=_(e.id),n=_(e.name),r=_(e.displayName),i=t??n;if(!i)return{...e,id:``,name:``,displayName:r??``};if(n===i&&r)return{...e,id:i,name:i,displayName:r};let a=r??n??i;return{...e,id:i,name:i,displayName:a}}function ve(e){return e?_(e.displayName)??_(e.name)??_(e.id)??``:``}function ye(e,t){let n=_(t);if(!n||!e?.length)return;let r=e.find(e=>_(e.name)===n);if(r)return r;let i=e.find(e=>_(e.id)===n);if(i)return i;let a=e.find(e=>_(e.displayName)===n);if(a)return a}function be(e,t){let n=_(t);if(!n)return;let r=ye(e,n);return r?_(r.name)??_(r.id)??n:n}function xe(e){return Array.from(new Set(Array.from(e.matchAll(ie()),e=>e[1])),e=>({id:e,name:e}))}function v(e){return{...e,directory:e.location?.directory}}function Se(e){let t={};for(let n of e){let e=n;!e||e.type!==`document`||!e.info||typeof e.info!=`object`||Object.assign(t,e.info)}return t}var y=e(ce(),1),Ce=pe();function b(e,t){return e.findIndex(e=>e.id===t)}function we(e,t){if(!t)return e.slice();let n=b(e,t);return n<0?e.slice():e.slice(0,n)}function Te(e,t,n){let r=b(e,n);return r<0?!1:b(e,t)>=r}function Ee(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=b(e,t);if(!(n<0))for(let t=n-1;t>=0;--t){let n=e[t];if(n?.role===`user`)return n}}function De(e,t){let n=b(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 Oe=`openchamber:sync:debug`,ke;function Ae(){if(ke!==void 0)return ke;try{ke=typeof localStorage<`u`&&localStorage.getItem(Oe)===`1`}catch{ke=!1}return ke}function x(e,...t){Ae()&&(`${e}`,[...t])}var je={pipeline:{coalesced:(e,t)=>x(`pipeline`,`coalesced`,e,t),flush:e=>x(`pipeline`,`flush`,`${e} events`)},reducer:{messageUpdatedUnchanged:(e,t,n,r,i)=>x(`reducer`,`message.updated UNCHANGED (skipped)`,{sessionID:e,messageID:t,role:n,finish:r,completed:i}),partUpdatedNoExistingParts:(e,t,n)=>x(`reducer`,`message.part.updated NO EXISTING PARTS`,{messageID:e,partID:t,partType:n}),partDeltaNoParts:(e,t)=>x(`reducer`,`message.part.delta DROPPED (no parts array)`,{messageID:e,partID:t}),partDeltaNotFound:(e,t)=>x(`reducer`,`message.part.delta DROPPED (partID not found)`,{messageID:e,partID:t}),partSkipped:(e,t,n)=>x(`reducer`,`message.part.updated SKIPPED (type filtered)`,{messageID:e,partID:t,partType:n})},dispatch:{eventNoChange:(e,t,n)=>x(`dispatch`,`event → no change`,{eventType:e,sessionID:t,messageID:n}),eventApplied:(e,t,n)=>x(`dispatch`,`event → applied`,{eventType:e,sessionID:t,messageID:n})},recovery:{materializing:e=>x(`recovery`,`materializing session`,e)}},Me=`desc`;function Ne(e){return!S(e)||e.type!==`compaction`?!1:e.status===`running`||e.status===`completed`||e.status===`failed`}function Pe(e){if(e)return e.find(Ne)}var Fe=e=>e?e.toLowerCase().includes(`application/json`):!1,Ie=e=>e?e.toLowerCase().includes(`text/html`):!1;function S(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}function C(e){return typeof e==`string`&&e.length>0?e:void 0}function Le(e){if(!S(e))return null;let t=C(e.id);return t?{...e,id:t}:null}function Re(e,t,n){return`${e}:${t}:${n}`}function ze(e,t,n,r,i=`text`,a){return i===`reasoning`?{id:Re(t,i,n),sessionID:e,messageID:t,type:`reasoning`,text:r}:{id:Re(t,i,n),sessionID:e,messageID:t,type:`text`,text:r,...a?.synthetic===!0?{synthetic:!0}:{}}}function Be(e){return e?e.nativeType===`synthetic`||e.type===`synthetic`:!1}function Ve(e,t){return!e?.id||Be(e)||(e.clientRole??e.role)!==`user`?!1:!Array.isArray(t)||t.length===0||!(t.some(e=>e.type===`subtask`||e.type===`compaction`)||t.every(e=>!!e.synthetic))}function He(e){if(typeof e==`string`&&e.length!==0)return e.replace(/^evt_/,`msg_`)}function Ue(e){let t=e.content;return Array.isArray(t)?t.flatMap(e=>S(e)&&e.type===`text`&&typeof e.text==`string`?[e.text]:[]).join(`
3
3
  `):typeof e.output==`string`?e.output:void 0}function We(e){return e===`patch`?`apply_patch`:e}function Ge(e,t,n){let r=C(n.id)??`${t}:tool`,i=We(C(n.name))??`tool`,a=S(n.state)?n.state:{},o=C(a.status)??`completed`;return{id:r,sessionID:e,messageID:t,type:`tool`,tool:i,callID:r,state:{status:o===`streaming`?`pending`:o,input:a.input??{},output:Ue(a),error:S(a.error)?C(a.error.message):C(a.error),metadata:S(a.metadata)?a.metadata:{}}}}function Ke(e){return S(e)?{created:typeof e.created==`number`?e.created:0,...typeof e.streamed==`number`?{streamed:e.streamed}:{},...typeof e.completed==`number`?{completed:e.completed}:{},...typeof e.start==`number`?{start:e.start}:{},...typeof e.end==`number`?{end:e.end}:{}}:{created:0}}function qe(e){if(!S(e))return;let t=S(e.cache)?{...typeof e.cache.read==`number`?{read:e.cache.read}:{},...typeof e.cache.write==`number`?{write:e.cache.write}:{}}:void 0,n={...typeof e.input==`number`?{input:e.input}:{},...typeof e.output==`number`?{output:e.output}:{},...typeof e.reasoning==`number`?{reasoning:e.reasoning}:{},...t&&(t.read!==void 0||t.write!==void 0)?{cache:t}:{}};return Object.keys(n).length>0?n:void 0}function Je(e,t){let n=S(t.metadata)?t.metadata:void 0,r=n&&S(n.model)?n.model:void 0,i=S(t.model)?t.model:r,a=i?C(i.id)??C(i.modelID)??C(t.modelID):C(t.modelID),o=i?C(i.providerID)??C(t.providerID):C(t.providerID),s=(i?C(i.variant):void 0)??C(t.variant)??(n?C(n.variant):void 0);a&&(e.modelID=a),o&&(e.providerID=o),s&&(e.variant=s),(a||o||s)&&(e.model={...o?{providerID:o}:{},...a?{modelID:a}:{},...s?{variant:s}:{}});let c=C(t.agent)??C(t.mode)??(n?C(n.agent):void 0);c&&(e.agent=c)}function Ye(e,t,n){return{id:t.id,sessionID:e,role:n,time:Ke(t.time)}}function Xe(e,t){let n=Le(t);if(!n)return null;let r=n.id,i=C(n.type)??`unknown`,a=C(n.role)??C(n.clientRole);if(i===`idle`||i===`model-switched`||i===`agent-selected`||i===`agent-switched`||i===`location-switched`||a===`idle`)return null;if(i===`user`){let t=Ye(e,n,`user`);Je(t,n);let i=[],a=C(n.text);a&&i.push(ze(e,r,0,a));let o=n.files;return Array.isArray(o)&&o.forEach((t,n)=>{if(!S(t))return;let a=C(t.mime)??`application/octet-stream`,o=S(t.source)?t.source:{},s=o.type===`uri`?C(o.uri):void 0,c=C(t.data),l=s||(c?`data:${a};base64,${c}`:``),u={id:`${r}:file:${n}`,sessionID:e,messageID:r,type:`file`,mime:a,filename:C(t.name),url:l};i.push(u)}),{info:t,parts:i}}if(i===`assistant`){let t=Ye(e,n,`assistant`);if(S(n.model)){t.modelID=C(n.model.id)??C(n.model.modelID)??C(n.modelID),t.providerID=C(n.model.providerID)??C(n.providerID);let e=C(n.model.variant)??C(n.variant);(t.modelID||t.providerID||e)&&(t.model={...t.providerID?{providerID:t.providerID}:{},...t.modelID?{modelID:t.modelID}:{},...e?{variant:e}:{}})}else{let e=C(n.modelID),r=C(n.providerID),i=C(n.variant);e&&(t.modelID=e),r&&(t.providerID=r),(e||r||i)&&(t.model={...r?{providerID:r}:{},...e?{modelID:e}:{},...i?{variant:i}:{}})}let i=C(n.agent);i&&(t.agent=i);let a=C(n.finish)??C(n.rawFinish);a&&(t.finish=a),S(n.error)&&(t.error={type:C(n.error.type)??`error`,message:C(n.error.message)??``,...typeof n.error.status==`number`?{status:n.error.status}:{}}),typeof n.cost==`number`&&Number.isFinite(n.cost)&&(t.cost=n.cost);let o=qe(n.tokens);o&&(t.tokens=o);let s=[],c=Array.isArray(n.content)?n.content:[],l=0,u=0;for(let t of c){if(!S(t))continue;let n=C(t.type);if(n===`text`&&typeof t.text==`string`){s.push(ze(e,r,l++,t.text));continue}if(n===`reasoning`&&typeof t.text==`string`){s.push(ze(e,r,u++,t.text,`reasoning`));continue}n===`tool`&&s.push(Ge(e,r,t))}return{info:t,parts:s}}if(i===`shell`){let t=Ye(e,n,`user`),i=C(n.command)??``,a=S(n.output)&&typeof n.output.output==`string`?n.output.output:``,o=n.status===`running`?`running`:n.status===`exited`&&n.exit===0?`completed`:`error`;return{info:t,parts:[{id:Re(r,`text`,0),sessionID:e,messageID:r,type:`text`,text:i,shellAction:{command:i,output:a,status:o,shellID:C(n.shellID)}}]}}if(i===`synthetic`){let t={...Ye(e,n,`user`),nativeType:`synthetic`},i=C(n.description);i&&(t.description=i),S(n.metadata)&&(t.metadata=n.metadata);let a=C(n.shellID);a&&(t.shellID=a);let o=C(n.sessionID)&&n.sessionID!==e?C(n.sessionID):C(n.childSessionID)??C(n.taskSessionID);o&&(t.childSessionID=o);let s=C(n.text)??i??``;return{info:t,parts:s?[ze(e,r,0,s,`text`,{synthetic:!0})]:[{id:Re(r,`text`,0),sessionID:e,messageID:r,type:`text`,text:``,synthetic:!0}]}}if(i===`system`)return null;if(i===`compaction`){let t=n.status===`failed`?`failed`:n.status===`completed`?`completed`:`running`,i={...Ye(e,n,`assistant`),clientRole:`compaction`},a=S(n.error)?{type:C(n.error.type)??`error`,message:C(n.error.message)??``,...typeof n.error.status==`number`?{status:n.error.status}:{}}:void 0;return{info:i,parts:[{id:`${r}:compaction`,sessionID:e,messageID:r,type:`compaction`,status:t,reason:n.reason===`auto`?`auto`:`manual`,...typeof n.summary==`string`?{summary:n.summary}:{},...typeof n.recent==`string`?{recent:n.recent}:{},...a?{error:a}:{}}]}}return{info:Ye(e,n,`assistant`),parts:[ze(e,r,0,C(n.text)??`[${i}]`)]}}function Ze(e,t,n=Me,r=20){if(!S(e))throw Error(`session projection: expected JSON object`);if(!Array.isArray(e.data))throw Error(`session projection: data must be an array`);let i=[];for(let n of e.data){let e=Xe(t,n);e&&i.push(e)}n===`desc`&&i.reverse();let a=S(e.cursor)?e.cursor:void 0,o=C(a?n===`asc`?a.previous:a.next:e.cursor),s=!o||e.data.length<r,c=i.filter(e=>Ve(e.info,e.parts)).length;return{records:i,cursor:s?void 0:o,complete:s,turnCount:c}}async function Qe(e){let t=e.limit??20,n=e.order??`desc`,r=`/api/session/${encodeURIComponent(e.sessionID)}/message`,i={directory:e.directory,limit:String(t)};e.cursor?i.cursor=e.cursor:i.order=n;let a=await u(r,{method:`GET`,query:i,signal:e.signal});if(!a.ok)throw Error(`session projection failed (${a.status})`);let o=a.headers.get(`content-type`);if(Ie(o))throw Error(`session projection: unexpected HTML response`);Fe(o);let s;try{s=await a.json()}catch{throw Error(`session projection: malformed JSON`)}return Ze(s,e.sessionID,n,t)}function $e(e,t){if(!S(e))throw Error(`session context: expected JSON object`);if(!Array.isArray(e.data))throw Error(`session context: data must be an array`);let n=[];for(let r of e.data){let e=Xe(t,r);e&&n.push(e)}return{records:n,cursor:void 0,complete:!1,turnCount:n.filter(e=>Ve(e.info,e.parts)).length}}async function et(e){let t=`/api/session/${encodeURIComponent(e.sessionID)}/context`,n=await u(t,{method:`GET`,query:{directory:e.directory},signal:e.signal});if(!n.ok)throw Error(`session context failed (${n.status})`);if(Ie(n.headers.get(`content-type`)))throw Error(`session context: unexpected HTML response`);let r;try{r=await n.json()}catch{throw Error(`session context: malformed JSON`)}return $e(r,e.sessionID)}function tt(e){let t=e.fetched.filter(e=>!!e.info?.id),n=e.previous.filter(e=>!!e.info?.id),r=e.touched??new Set,i=new Map(t.map(e=>[e.info.id,e])),a=new Map(n.map(e=>[e.info.id,e])),o=new Set(e.coverageMessageIDs??t.map(e=>e.info.id)),s=n.findIndex(e=>o.has(e.info.id));if(!e.completeTail)for(let[e,t]of n.entries())i.has(t.info.id)||(s===-1||e<s)&&i.set(t.info.id,t);for(let e of r){let t=a.get(e);t?i.set(e,t):i.delete(e)}let c=[],l=new Set;for(let e of n)!i.has(e.info.id)||l.has(e.info.id)||(c.push(e.info.id),l.add(e.info.id));for(let e of t)!i.has(e.info.id)||l.has(e.info.id)||(c.push(e.info.id),l.add(e.info.id));for(let e of i.keys())l.has(e)||c.push(e);return c.map(e=>i.get(e))}var nt=e=>e?e.toLowerCase().includes(`application/json`):!1,rt=e=>e?e.toLowerCase().includes(`text/html`):!1;function it(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}function at(e){return typeof e==`string`&&e.length>0?e:void 0}function ot(e){return typeof e==`number`&&Number.isFinite(e)?e:void 0}function st(e,t,n){let r=n?`: ${n}`:``,i=Error(`${e} (${t})${r}`);throw i.status=t,i}async function ct(e){try{return(await e.text()).trim()}catch{return``}}async function lt(e,t){let n=e.headers.get(`content-type`);if(rt(n))throw Error(`${t}: unexpected HTML response`);let r;try{r=await e.json()}catch{throw Error(`${t}: malformed JSON`)}if(!nt(n)&&r==null)throw Error(`${t}: empty response`);return r}var ut=oe((e,t)=>({runningBySession:{},setRunning(t,n){e(e=>{let r={...e.runningBySession};return n?r[t]=!0:delete r[t],{runningBySession:r}})},isRunning(e){return t().runningBySession[e]===!0},reset(){e({runningBySession:{}})}}));function dt(e,t){ut.getState().setRunning(e,t)}function ft(e){return ut.getState().isRunning(e)}function pt(e){return!ft(e.sessionID)}function mt(e){let t=it(e)?e:null,n=t&&it(t.data)?t.data:t;if(!n)throw Error(`session compact: expected inbox item`);let r=at(n.id),i=at(n.sessionID);if(!r||!i)throw Error(`session compact: inbox item missing id`);if(n.type&&n.type!==`compaction`)throw Error(`session compact: expected compaction inbox item`);return{id:r,sessionID:i,type:`compaction`,delivery:n.delivery===`queue`?`queue`:n.delivery===`steer`?`steer`:void 0,timeCreated:ot(n.timeCreated)}}function ht(e){let t=it(e)?e:null,n=t&&Array.isArray(t.data)?t.data:Array.isArray(e)?e:null;if(!n)throw Error(`session inbox: expected list`);let r=[];for(let e of n)!it(e)||e.type!==`compaction`||r.push(mt(e));return r}function gt(e,t){t.some(e=>e.type===`compaction`)&&dt(e,!0)}function _t(e,t){t.some(e=>(e.parts??[]).find(Ne)?.status===`running`)&&dt(e,!0)}async function vt(e){let t=`/api/session/${encodeURIComponent(e.sessionID)}/compact`,n={};e.messageID&&(n.id=e.messageID),e.delivery&&(n.delivery=e.delivery);let r=await u(t,{method:`POST`,headers:{"Content-Type":`application/json`},query:{directory:e.directory},body:JSON.stringify(n),signal:e.signal});r.ok||st(`session compact`,r.status,await ct(r));let i=mt(await lt(r,`session compact`));return dt(i.sessionID,!0),i}var yt=`compaction:`;function bt(e,t){return t&&t.length>0?t:`${yt}${e}`}function xt(e,t){let n=e.message[t]??[];for(let t=n.length-1;t>=0;--t){let r=n[t];if((e.part[r.id]??[]).some(e=>Ne(e)&&e.status===`running`))return r.id}}function St(e,t,n,r,i=Date.now()){let a=e.message[t]?[...e.message[t]]:[];a.some(e=>e.id===n)||(a.push({id:n,sessionID:t,role:`assistant`,clientRole:`compaction`,time:{created:i}}),e.message[t]=a);let o=e.part[n]?[...e.part[n]]:[],s=o.findIndex(Ne),c=r(s>=0?o[s]:{id:`${n}:compaction`,sessionID:t,messageID:n,type:`compaction`,status:`running`,reason:`manual`});s>=0?o[s]=c:o.push(c),e.part[n]=o}function Ct(e,t){let n=String(t.type??``);if(!n.startsWith(`session.compaction.`))return!1;let r=it(t.properties)?t.properties:null;if(!r)return!1;let i=at(r.sessionID);if(!i)return!1;let a=at(r.inputID),o=xt(e,i),s=n===`session.compaction.started`?a??He(t.id)??bt(i):a??o??He(t.id)??bt(i);if(n===`session.compaction.started`)return!e.part[s]?.some(Ne)&&(St(e,i,s,e=>({...e,status:`running`,reason:r.reason===`auto`?`auto`:`manual`,...typeof r.recent==`string`?{recent:r.recent}:{}}),ot(r.eventCreated)),dt(i,!0),!0);if(n===`session.compaction.delta`){if(!o)return!1;let t=typeof r.text==`string`?r.text:``;return t?(St(e,i,s,e=>({...e,status:`running`,summary:(e.summary??``)+t})),dt(i,!0),!0):!1}if(n===`session.compaction.ended`)return dt(i,!1),o?(St(e,i,s,e=>({...e,status:`completed`,reason:r.reason===`auto`?`auto`:`manual`,summary:typeof r.text==`string`?r.text:e.summary,...typeof r.recent==`string`?{recent:r.recent}:{}}),ot(r.eventCreated)),!0):!1;if(n===`session.compaction.failed`){if(dt(i,!1),!o&&!a)return!1;let t=it(r.error)?r.error:{};return St(e,i,s,e=>({...e,status:`failed`,reason:r.reason===`auto`?`auto`:`manual`,error:{type:at(t.type)??`error`,message:at(t.message)??``,...typeof t.status==`number`?{status:t.status}:{}}}),ot(r.eventCreated)),!0}return!1}var wt=new Set([`patch`,`step-start`,`step-finish`]),Tt=[`text`,`output`],Et=new Set([`completed`,`error`,`aborted`,`failed`,`timeout`,`cancelled`]);function Dt(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 Ot(e,t){let n=[];for(let r of Tt){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 kt(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 At(e){if(e.type!==`tool`)return;let t=e.state?.status;return typeof t==`string`?t:void 0}function jt(e,t){if(e.type!==`tool`||t.type!==`tool`)return!1;let n=At(e),r=At(t);if(n&&Et.has(n)&&(!r||!Et.has(r)))return!0;let i=kt(e),a=kt(t);return typeof i==`number`&&typeof a!=`number`}function Mt(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 Nt=[`agent`,`mode`,`providerID`,`modelID`,`variant`],Pt=e=>typeof e==`object`&&!!e&&!Array.isArray(e),Ft=[`input`,`output`,`reasoning`];function It(e){if(!e||typeof e!=`object`)return!1;let t=e;return Ft.some(e=>typeof t[e]==`number`&&Number.isFinite(t[e])&&t[e]>0)}function Lt(e){if(!e||typeof e!=`object`)return!1;let t=e;return Ft.every(e=>typeof t[e]!=`number`||!Number.isFinite(t[e])||t[e]<=0)}function Rt(e){if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0}function zt(e,t){let n={...e,...t},r=e,i=t,a=n;for(let e of Nt){let t=Rt(i[e]),n=Rt(r[e]);t?a[e]=t:n?a[e]=n:delete a[e]}let o=i.model,s=r.model;return Pt(o)?a.model=o:Pt(s)?a.model=s:delete a.model,(e.time||t.time)&&(n.time={...e.time,...t.time}),It(r.tokens)&&Lt(i.tokens)&&(a.tokens=r.tokens),n}function Bt(e,t){if(e.time.streamed!==t.time.streamed||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(!Mt(e[n],t[n]))return!1;return!0}function Vt(e,t,n){if(!t)return!1;let r=e.message[t];return r?b(r,n)>=0:!1}function Ht(e,t){switch(t.type){case`message.updated`:{let n=t.properties.info,r=n,i=typeof r.type==`string`?r.type:void 0,a=typeof r.role==`string`?r.role:void 0;if(i===`idle`||i===`model-switched`||i===`agent-selected`||i===`agent-switched`||i===`location-switched`||a===`idle`)return!1;let o=e.message[n.sessionID],s=!!o&&o.every(t=>t.role!==`assistant`||e.part[t.id]!==void 0);if(n.role===`assistant`&&s&&e.part[n.id]===void 0&&(e.part[n.id]=[]),!o)return e.message[n.sessionID]=[n],!0;let c=b(o,n.id);if(c>=0){let t=o[c],r=zt(t,n);if(Bt(t,r))return je.reducer.messageUpdatedUnchanged(n.sessionID,n.id,n.role,n.finish,n.time?.completed),!1;let i=[...o];i[c]=r,e.message[n.sessionID]=i}else e.message[n.sessionID]=[...o,n];return!0}case`message.removed`:{let n=t.properties,r=e.message[n.sessionID];if(r){let t=b(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(wt.has(r.type))return je.reducer.partSkipped(r.messageID,r.id,r.type),!1;let i=r.messageID,a=n.sessionID??r.sessionID;if(!i)return!1;let o=!Vt(e,a,i),s=e.part[i];if(!s)return je.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=c.findIndex(e=>e.id===r.id);if(l>=0){let e=c[l];if(jt(e,r))return!1;let t=Ot(e,r);c[l]=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[e]=r:c.push(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=r.findIndex(e=>e.id===n.partID);if(i>=0){let t=[...r];return t.splice(i,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 je.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=r.findIndex(e=>e.id===n.partID);if(i<0)return je.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],o=a[n.field],s=a.__dedupeNextDeltaFields??[],c=s.includes(n.field),l=[...r];return l[i]={...a,[n.field]:c?Dt(o,n.delta):(o??``)+n.delta,__dedupeNextDeltaFields:s.filter(e=>e!==n.field)},e.part[n.messageID]=l,!0}default:return rn(e,t)}}function w(e){return!e||typeof e!=`object`||Array.isArray(e)?null:e}function T(e){return typeof e==`string`&&e.length>0?e:void 0}function Ut(e,t,n){return`${e}:${t}:${n}`}function Wt(e){return typeof e?.created==`number`&&Number.isFinite(e.created)&&e.created>0?e.created:Date.now()}function Gt(e){let t=e.eventCreated;return typeof t==`number`&&Number.isFinite(t)&&t>0?t:void 0}function Kt(e,t,n,r){let i=e.message[t],a=i?b(i,n):-1;if(a>=0&&i){let n=i[a],o=n.time?.created,s=!1,c={...n,time:{...n.time}};if((o===void 0||o<=0)&&typeof r?.created==`number`&&r.created>0&&(c.time={...c.time,created:r.created},s=!0),!Rt(n.agent)&&r?.agent&&(c.agent=r.agent,s=!0),!Rt(n.modelID)&&r?.modelID&&(c.modelID=r.modelID,s=!0),!Rt(n.providerID)&&r?.providerID&&(c.providerID=r.providerID,s=!0),!Rt(n.variant)&&r?.variant&&(c.variant=r.variant,s=!0),!n.model&&r?.model&&(c.model=r.model,s=!0),!s)return!1;let l=[...i];return l[a]=c,e.message[t]=l,!0}let o={id:n,sessionID:t,role:`assistant`,time:{created:Wt(r)},...r?.agent?{agent:r.agent}:{},...r?.modelID?{modelID:r.modelID}:{},...r?.providerID?{providerID:r.providerID}:{},...r?.variant?{variant:r.variant}:{},...r?.model?{model:r.model}:{}};return e.message[t]=i?[...i,o]:[o],!0}function qt(e){let t=T(e.agent),n=w(e.model),r=n?T(n.id)??T(n.modelID):void 0,i=n?T(n.providerID):void 0,a=n?T(n.variant):void 0;return{...t?{agent:t}:{},...r?{modelID:r}:{},...i?{providerID:i}:{},...a?{variant:a}:{},...r||i||a?{model:{...i?{providerID:i}:{},...r?{modelID:r}:{},...a?{variant:a}:{}}}:{}}}function Jt(e){let t=w(e);if(!t)return;let n=w(t.cache),r={...typeof t.input==`number`?{input:t.input}:{},...typeof t.output==`number`?{output:t.output}:{},...typeof t.reasoning==`number`?{reasoning:t.reasoning}:{},...n?{cache:{...typeof n.read==`number`?{read:n.read}:{},...typeof n.write==`number`?{write:n.write}:{}}}:{}};return Object.keys(r).length>0?r:void 0}function Yt(e,t,n,r){let i=e.message[t];if(!i)return e.message[t]=[r],!0;let a=b(i,n);if(a<0)return e.message[t]=[...i,r],!0;let o=i[a],s=zt(o,r);if(Bt(o,s)&&o.time?.created===s.time?.created)return!1;let c=[...i];return c[a]=s,e.message[t]=c,!0}function Xt(e,t,n){let r=e.message[t];if(!r)return;let i=b(r,n);if(i<0)return;let a=r[i]?.time?.created;return typeof a==`number`&&Number.isFinite(a)&&a>0?a:void 0}function Zt(e,t,n,r,i){let a=Gt(i);if(t===`session.step.started`)return Kt(e,n,r,{created:a,...qt(i)});if(t===`session.step.streamed`)return a?(Kt(e,n,r,{created:a}),Yt(e,n,r,{id:r,sessionID:n,role:`assistant`,time:{created:Xt(e,n,r)??a,streamed:a}})):!1;if(t===`session.step.ended`){Kt(e,n,r,{created:a});let t=T(i.finish),o=Jt(i.tokens),s=typeof i.cost==`number`&&Number.isFinite(i.cost)?i.cost:void 0;return Yt(e,n,r,{id:r,sessionID:n,role:`assistant`,time:{created:Xt(e,n,r)??Wt({created:a}),...a?{completed:a}:{}},...t?{finish:t}:{},...o?{tokens:o}:{},...s===void 0?{}:{cost:s}})}if(t===`session.step.failed`){Kt(e,n,r,{created:a});let t=w(i.error),o=Jt(i.tokens),s=typeof i.cost==`number`&&Number.isFinite(i.cost)?i.cost:void 0;return Yt(e,n,r,{id:r,sessionID:n,role:`assistant`,time:{created:Xt(e,n,r)??Wt({created:a}),...a?{completed:a}:{}},finish:`error`,...t?{error:{type:T(t.type)??`error`,message:T(t.message)??``,...typeof t.status==`number`?{status:t.status}:{}}}:T(i.error)?{error:{type:`error`,message:T(i.error)}}:{},...o?{tokens:o}:{},...s===void 0?{}:{cost:s}})}return!1}function Qt(e){if(Array.isArray(e))return e.flatMap(e=>{let t=w(e);return t&&t.type===`text`&&typeof t.text==`string`?[t.text]:[]}).join(`
4
4
  `)}function $t(e,t,n,r){let i=Ut(n,t,r),a=e.findIndex(e=>e.id===i);return a>=0?a:e.map((e,t)=>({part:e,index:t})).filter(e=>e.part.type===t)[r]?.index??-1}function en(e,t,n,r,i,a,o){Kt(e,t,n,o);let s=e.part[n]?[...e.part[n]]:[],c=$t(s,r,n,i);if(c<0){let e={id:Ut(n,r,i),sessionID:t,messageID:n,type:r,text:``};s.push(e),c=s.length-1}let l=s[c],u=typeof a==`function`?a(l.text??``):a;return s[c]={...l,text:u},e.part[n]=s,!0}function tn(e,t){return e.findIndex(e=>e.id===t||e.callID===t||e.type===`tool`&&e.id===t)}function E(e,t,n,r,i,a,o){Kt(e,t,n,o);let s=e.part[n]?[...e.part[n]]:[],c=tn(s,r);return c<0&&(s.push({id:r,sessionID:t,messageID:n,type:`tool`,tool:We(i)??`tool`,callID:r,state:{status:`pending`,input:``,output:void 0,metadata:{}}}),c=s.length-1),s[c]=a(s[c]),e.part[n]=s,!0}function nn(e,t,n){return e.message[t]?.find(t=>e.part[t.id]?.some(e=>e.type===`text`&&e.shellAction?.shellID===n))?.id}function rn(e,t){let n=String(t.type);if(n.startsWith(`session.compaction.`))return Ct(e,t);let r=w(t.properties);if(!r)return!1;let i=T(r.sessionID);if(i&&(n===`session.shell.started`||n===`session.shell.ended`)){let a=w(r.shell),o=T(a?.id);if(!a||!o)return!1;let s=e.message[i]??[],c=nn(e,i,o),l=c?s.find(e=>e.id===c):void 0,u=l?.id??(n===`session.shell.started`?He(t.id):void 0);if(!u||n===`session.shell.started`&&l)return!1;let d=Xe(i,{id:u,type:`shell`,shellID:o,command:a.command,status:a.status,exit:a.exit,output:r.output,time:{created:l?.time.created??Gt(r),...n===`session.shell.ended`?{completed:Gt(r)}:{}}});return!d||l&&Mt(l,d.info)&&Mt(e.part[u],d.parts)?!1:(e.message[i]=l?s.map(e=>e.id===u?d.info:e):[...s,d.info],e.part[u]=d.parts,!0)}if(i&&n===`session.synthetic`){let n=He(t.id);if(!n)return!1;let a=Xe(i,{id:n,type:`synthetic`,text:r.text,description:r.description,metadata:r.metadata,time:{created:Gt(r)}});if(!a)return!1;let o=e.message[i]??[],s=o.find(e=>e.id===n);return s&&Mt(s,a.info)&&Mt(e.part[n],a.parts)?!1:(e.message[i]=s?o.map(e=>e.id===n?a.info:e):[...o,a.info],e.part[n]=a.parts,!0)}if(n===`session.revert.committed`)return!1;let a=T(r.assistantMessageID);if(!i||!a)return!1;let o=typeof r.ordinal==`number`?r.ordinal:0,s={created:Gt(r)};if(n===`session.step.started`||n===`session.step.streamed`||n===`session.step.ended`||n===`session.step.failed`)return Zt(e,n,i,a,r);if(n===`session.text.started`)return en(e,i,a,`text`,o,``,s);if(n===`session.text.delta`){let t=typeof r.delta==`string`?r.delta:``;return t?en(e,i,a,`text`,o,e=>e+t,s):!1}if(n===`session.text.ended`)return en(e,i,a,`text`,o,typeof r.text==`string`?r.text:``,s);if(n===`session.reasoning.started`)return en(e,i,a,`reasoning`,o,``,s);if(n===`session.reasoning.delta`){let t=typeof r.delta==`string`?r.delta:``;return t?en(e,i,a,`reasoning`,o,e=>e+t,s):!1}if(n===`session.reasoning.ended`)return en(e,i,a,`reasoning`,o,typeof r.text==`string`?r.text:``,s);let c=T(r.id);if(!c)return!1;let l=T(r.name);if(n===`session.tool.input.started`)return E(e,i,a,c,l,e=>e,s);if(n===`session.tool.input.delta`){let t=typeof r.delta==`string`?r.delta:``;return t?E(e,i,a,c,l,e=>{let n=w(e.state)??{};if(T(n.status)&&n.status!==`pending`&&n.status!==`streaming`)return e;let r=typeof n.input==`string`?n.input+t:t;return{...e,state:{...n,status:`pending`,input:r}}},s):!1}if(n===`session.tool.input.ended`){let t=typeof r.text==`string`?r.text:``;return E(e,i,a,c,l,e=>{let n=w(e.state)??{};return{...e,state:{...n,input:t}}},s)}return n===`session.tool.called`?E(e,i,a,c,l,e=>{let t=w(e.state)??{};return{...e,state:{...t,status:`pending`,input:r.input??t.input??{},metadata:w(t.metadata)??{}}}},s):n===`session.tool.progress`?E(e,i,a,c,l,e=>{let t=w(e.state)??{};return{...e,state:{...t,metadata:w(r.metadata)??w(t.metadata)??{}}}},s):n===`session.tool.success`?E(e,i,a,c,l,e=>{let t=w(e.state)??{};return{...e,state:{...t,status:`completed`,input:t.input??r.input??{},output:Qt(r.content),metadata:w(r.metadata)??w(t.metadata)??{}}}},s):n===`session.tool.failed`&&E(e,i,a,c,l,e=>{let t=w(e.state)??{},n=w(r.error);return{...e,state:{...t,status:`error`,input:t.input??{},output:Qt(r.content),error:n?T(n.message)??T(r.error):T(r.error),metadata:w(r.metadata)??w(t.metadata)??{}}}},s)}function an(e){if(typeof e.time?.completed==`number`)return!1;let t=e.finish;return!(typeof t==`string`&&t.length>0)}function on(e){let t=e.id;return typeof t==`string`&&t.length>0?t:void 0}function D(e){return e.slim===!0}function sn(e,t){if(!e||e.length===0||!t.some(e=>D(e)))return t;let n=new Map;for(let t of e){let e=on(t);e&&!D(t)&&n.set(e,t)}if(n.size===0)return t;let r=!1,i=t.map(e=>{if(!D(e))return e;let t=on(e);if(!t)return e;let i=n.get(t);return i?(r=!0,i):e});return r?i:t}function cn(e,t){return e===t||e.length===t.length&&e.every((e,n)=>e===t[n])?t:e}function ln(e){let t=e.clientRole??e.role;return typeof t==`string`?t:``}function un(e){return ln(e)!==`assistant`||!an(e)}function dn(e,t,n){if(!e||e.length===0)return t;let r=sn(e,t);if(un(n))return cn(r,e);let i=new Set;for(let e of r){let t=on(e);t&&i.add(t)}let a=new Map,o=[],s,c=0;for(let t of e){let e=on(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 cn(r,e);let l=[...o];for(let e of r){l.push(e);let t=on(e);if(!t)continue;let n=a.get(t);n&&l.push(...n)}return cn(l,e)}var O=e=>Object.freeze(e),fn=Object.freeze({initial:O({id:`initial`,onStale:`backfill`,messages:`insert-only`,parts:`replace`,preserveStreaming:`assistant`,protectOptimistic:`none`}),prepend:O({id:`history`,onStale:`drop`,messages:`insert-only`,parts:`skip-existing`,preserveStreaming:`assistant`,protectOptimistic:`none`}),recovery:O({id:`recovery`,onStale:`backfill`,messages:`upsert`,parts:`replace`,preserveStreaming:`assistant`,protectOptimistic:`none`}),"reconcile-page":O({id:`reconcile-page`,onStale:`backfill`,messages:`upsert`,parts:`replace`,preserveStreaming:`assistant`,protectOptimistic:`keep-unless-full`}),materialize:O({id:`materialize`,onStale:`backfill`,messages:`insert-only`,parts:`replace`,preserveStreaming:`assistant`,protectOptimistic:`none`})}),pn=O({id:`recovery-backfill`,onStale:`backfill`,messages:`insert-only`,parts:`skip-existing`,preserveStreaming:`assistant`,protectOptimistic:`none`}),mn=O({id:`send-gap-fill`,onStale:`backfill`,messages:`insert-only`,parts:`skip-existing`,preserveStreaming:`assistant`,protectOptimistic:`none`}),hn=fn.initial;function gn(e){let t=fn[e.purpose]??hn;return!e.stale||t.onStale===`drop`?t:pn}function _n(e,t){return e.preserveStreaming===`none`?!1:e.preserveStreaming===`all`||t===`assistant`}var vn=e=>structuredClone(e),yn=e=>({transport:e.transport,generation:e.generation,directory:e.directory,sessionID:e.sessionID});function bn(e){return JSON.stringify([e.transport,e.generation,e.directory,e.sessionID])}function xn(e,t){return JSON.stringify([e.transport,e.generation,e.directory,e.sessionID,t])}function Sn(e){return JSON.stringify([e.transport,e.generation])}function Cn(e,t){return e.created===t.created?e.messageID<t.messageID?-1:+(e.messageID>t.messageID):e.created-t.created}function wn(e){let t=e.time?.created;return{created:typeof t==`number`&&Number.isFinite(t)?t:0,messageID:e.id}}function Tn(e){return un(e)}function En(e){return D(e)?`slim`:`full`}function Dn(e){return e.some(e=>D(e))?`slim`:`full`}var On=e=>{if(typeof e!=`object`||!e)return e;if(Array.isArray(e))return e.map(On);let t=e,n={};for(let e of Object.keys(t).sort()){let r=t[e];r!==void 0&&(n[e]=On(r))}return n},kn=e=>{let t=new Uint8Array(e),n=``;for(let e of t)n+=e.toString(16).padStart(2,`0`);return n};async function An(e,t){let n=JSON.stringify(On({info:e,parts:t})),r=new TextEncoder().encode(n);return{hash:kn(await crypto.subtle.digest(`SHA-256`,r)),byteSize:r.byteLength}}var jn=e=>({scope:yn(e.scope),messageID:e.messageID,info:vn(e.info),parts:vn(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}}),Mn=e=>{let t=0;return()=>{let n=e();return t=n>t?n:t+1,t}},Nn=(e,t)=>{let n=t.slice().sort((e,t)=>Cn(e.sortKey,t.sortKey)).map(jn);return{scope:yn(e),records:n,byteSize:n.reduce((e,t)=>e+t.byteSize,0)}},Pn=e=>vn(e),Fn=e=>yn(e),In=(e=Date.now)=>Mn(e),Ln=e=>jn(e),Rn=(e,t)=>Nn(e,t.slice());function zn(e){return Tn(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 Bn=[`text`,`output`],Vn={pending:1,started:2,running:3,completed:4,error:4};function Hn(e,t){return e.filter(e=>!!e?.id&&!t.has(e.type))}function Un(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 Wn(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 Gn(e,t){let n=e[t];return typeof n==`string`?n:void 0}function Kn(e){return Wn(e)===void 0&&Bn.some(t=>{let n=Gn(e,t);return typeof n==`string`&&n.length>0})}function qn(e){let t=e.state;if(!(!t||typeof t!=`object`))return t}function Jn(e){let t=qn(e)?.status;return typeof t==`string`?t:void 0}function Yn(e){return e?Vn[e]??0:0}function Xn(e,t){if(Kn(e))return!0;if(Wn(e)===void 0){if(e.type===`tool`){let n=Jn(e);return n===`completed`||n===`error`?t:!0}return!0}return t}function Zn(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 Qn(e){return!!e&&typeof e==`object`&&!Array.isArray(e)&&Object.keys(e).length>0}function $n(e,t,n){if(e.type!==`tool`||t.type!==`tool`)return n;let r=qn(e);if(!r)return n;let i=qn(n)??{},a=qn(t)??{},o={...i},s=!1,c=Jn(e),l=Jn(t);Yn(c)>Yn(l)&&c&&(o={...o,status:c},s=!0);let u=r.input,d=a.input;Qn(u)&&!Qn(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 Qn(m)&&!Qn(a.metadata)&&(o={...o,metadata:m},s=!0),s?n===t?{...t,state:o}:{...n,state:o}:n}function er(e,t){if(!e||Wn(t)!==void 0)return t;let n=t;for(let r of Bn){let i=Gn(e,r);if(!i)continue;let a=Gn(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=Zn(e);if(r){let e=Zn(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=$n(e,t,n),n}function tr(e,t){if(!e||e.length===0||!t.some(e=>D(e)))return t;let n=new Map;for(let t of e)t.id&&!D(t)&&n.set(t.id,t);if(n.size===0)return t;let r=!1,i=t.map(e=>{if(!D(e)||!e.id)return e;let t=n.get(e.id);return t?(r=!0,t):e});return r?i:t}function nr(e){return e.__openchamberOptimistic===!0}function rr(e){return!!(e&&e.length>0&&e.some(nr))}function ir(e){return e.length===0||e.some(e=>D(e))}function ar(e,t,n,r,i,a){if(a===`keep-unless-full`&&e&&rr(e)&&ir(t))return e;let o=tr(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=er(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=>D(e)),f=e.filter(e=>!!e?.id&&!u.has(e.id)&&!n.has(e.type)&&(Xn(e,i)||d&&!D(e)));if(f.length===0)return c;let p=new Set(f.map(e=>e.id)),m=new Map,h=[];for(let t of e)p.has(t.id)?h.push(t):u.has(t.id)&&h.length>0&&(m.set(t.id,h),h=[]);let g=[];for(let e of c){for(let t of m.get(e.id)??[])g.push(t);g.push(e)}for(let e of h)g.push(e);return g}var or=e=>e,sr=e=>{let t=or(e).finish;return typeof t==`string`&&t.length>0},cr=e=>typeof or(e).time?.completed==`number`,lr=e=>!!or(e).error;function ur(e,t){let n=or(t),r=n.finish,i=n.time?.completed,a=n.time?.streamed,o=n.error,s=e.tokens,c=t.tokens,l=!sr(e)&&typeof r==`string`&&r.length>0,u=!cr(e)&&typeof i==`number`,d=e.time.streamed===void 0&&typeof a==`number`&&Number.isFinite(a),f=!lr(e)&&!!o,p=!It(s)&&It(c);if(!l&&!u&&!d&&!f&&!p)return e;let m={...e};return l&&(m.finish=r),(u||d)&&(m.time={...or(e).time,...u?{completed:i}:{},...d?{streamed:a}:{}}),f&&(m.error=o),p&&(m.tokens=c),m}function dr(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`?fr(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 fr(e,t){let n=e.slice();for(let e of t){let t=wn(e),r=n.length;for(let e=0;e<n.length;e+=1)if(Cn(t,wn(n[e]))<0){r=e;break}n.splice(r,0,e)}return n}function pr(e,t,n){return dr(e,t,(e,t)=>t?ur(e,t):e,n)}function mr(e,t,n){return dr(e,t,(e,t)=>!t||JSON.stringify(e)===JSON.stringify(t)?e:zt(e,t),n)}function hr(e,t,n,r={}){let i=r.skipPartTypes??new Set,a=r.merge??hn,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`?mr(u,c,o):pr(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=ar(r,Hn(e.parts??[],i),i,_n(a,e.info.role),an(e.info),a.protectOptimistic);(r?Un(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 gr(e){if(typeof e.time?.completed==`number`)return!1;let t=e.finish;return!(typeof t==`string`&&t.length>0)}function _r(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&&gr(i)||r.push(i.id));return{hasMessages:!0,renderable:r.length===0,missingPartMessageIDs:r}}var vr=(e,t)=>e<t?-1:+(e>t);function yr(e){return e.filter(e=>!!e?.id)}function br(e,t){if(t.length===0)return{...e,confirmed:[]};let n=[...e.session],r=new Map(e.part.map(e=>[e.id,yr(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,yr(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,yr(e.parts))}return{cursor:e.cursor,complete:e.complete,session:n,part:[...r.entries()].sort((e,t)=>vr(e[0],t[0])).map(([e,t])=>({id:e,part:t})),confirmed:i}}var xr={kind:`unknown`,loadedTurns:0},Sr=3e4,Cr=12e5,wr={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_event_at:{},session_status_event_sequence:{},session_interrupt_acknowledged_at:{},session_execution_version:{},session_status_snapshot_at:void 0,session_error_at:{},session_execution_recovery:{},session_diff:{},todo:{},permission:{},question:{},lsp:[],vcs:void 0,limit:20},Tr={ready:!1,path:{state:``,config:``,worktree:``,directory:``,home:``},projects:[],providers:{all:[],connected:[],default:{}},providerAuth:{},config:{},reload:void 0,sessionTodo:{}};function Er(e,t){return e===void 0||t===void 0?!1:t>e}var Dr=class extends Error{};function Or(e,t,n){if(n===`reconcile-page`)return e??xr;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 Dr(`session message page: complete=false requires non-empty cursor`);if(n===`prepend`&&e?.kind===`has-more`&&e.cursor===o)throw new Dr(`session message page: prepend returned the same cursor without progress`);if(t.records.length===0&&(n!==`prepend`||e?.kind!==`has-more`||e.cursor===o)&&n!==`initial`)throw new Dr(`session message page: complete=false with zero records makes no progress`);return{kind:`has-more`,cursor:o,loadedTurns:a}}function kr(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 Ar(e,t,n,r){let i=Er(r.capturedRevision,r.liveRevision),a=gn({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=br({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=hr(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=Or(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 Dr))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=!kr(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 jr=new Set([`tool`,`reasoning`,`file`,`text`]),Mr=new Set([`tool`,`reasoning`,`file`]);function Nr(e){return e.some(e=>D(e)&&jr.has(e.type))}function Pr(e,t){let n=!1,r=!1;for(let t of e)Mr.has(t.type)&&(n=!0,D(t)&&(r=!0));return n?r?!0:t?an(t):!1:!1}var Fr=e=>{if(!e)return``;let t=e.clientRole??e.role;return typeof t==`string`?t:``};function Ir(e,t){return Ve(e,t)}function Lr(e){let t=0;for(let n of e.messageOrder)Ir(e.messagesByID[n],e.partsByMessageID[n])&&(t+=1);return t}var Rr=(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(Ir(a,e.partsByMessageID[n]))break;if(Fr(a)!==`assistant`)continue;let o=a.parentID;typeof o==`string`&&o.length>0&&o!==t||r.push(a)}return r},zr=(e,t)=>an(e)?!0:Array.isArray(t)&&t.length>0;function Br(e){let t;for(let n=e.messageOrder.length-1;n>=0;--n){let r=e.messageOrder[n];if(Ir(e.messagesByID[r],e.partsByMessageID[r])){t=r;break}}return t?Rr(e,t).some(t=>zr(t,e.partsByMessageID[t.id])):!1}function Vr(e){return e.materializeActive?`p2`:e.prependActive||e.earlierHistoryLoaded?`p1`:e.p0Satisfied?`p0`:`idle`}var Hr=new Set([`stop`,`length`]);function Ur(e){let t=e.messageOrder[e.messageOrder.length-1];if(!t)return!1;let n=e.messagesByID[t];if(!n||Fr(n)!==`assistant`||n.error)return!1;let r=n.finish;return typeof r!=`string`||!Hr.has(r)?!1:typeof n.time?.completed!=`number`||r===`stop`&&!It(n.tokens)}function Wr(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 Gr(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 Kr=`message.updated,message.removed,message.part.updated,message.part.removed,message.part.delta,session.step.started,session.step.streamed,session.shell.started,session.shell.ended,session.step.ended,session.step.failed,session.text.started,session.text.delta,session.text.ended,session.reasoning.started,session.reasoning.delta,session.reasoning.ended,session.tool.input.started,session.tool.input.delta,session.tool.input.ended,session.tool.called,session.tool.progress,session.tool.success,session.tool.failed,session.compaction.started,session.compaction.delta,session.compaction.ended,session.compaction.failed,session.synthetic,session.revert.committed`.split(`,`);function qr(e){return Kr.includes(e)}function k(e){return e.trim()}function Jr(e){return`${k(e.directory)}\n${e.sessionID}`}function Yr(e,t){return e.session_history_boundary?.[t]??xr}function Xr(e){return e.filter(e=>!!e?.id)}function Zr(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 Qr(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||!Zr(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 $r(e,t,n){let r=e.getState(),i=n.page,a=Ar(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?(Qr(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 ei(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(!qr(e.type))continue;i=!0;let t=Ht(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 ti(e,t){return ei(e,[t.event])}function ni(e,t){return ei(e,t.events)}function ri(e,t,n){if(n.records.length===0)return{applied:!1,changed:!1};let r=e.getState(),i=hr({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 ii(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 ai(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]=Xr(n.parts),e.setState({message:o,part:s}),{applied:!0,changed:!0}}function oi(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 si(e,t,n,r){return n.clearOptimisticShadow?.({directory:r,sessionID:e,messageID:t}),{applied:!0,changed:!1}}function ci(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 li(e,t,n){let r=ci(e,t);if(!n.page)return{applied:!0,changed:r};let i=$r(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 ui(e){let t=new Map,n=new Map,r=r=>{let i=Jr(r);if(n.has(i))return;let a=k(r.directory),o=e.getStore(a),s=r.sessionID,c=o.getState().message?.[s],l=Yr(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=Yr(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=Zr(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=k(t.directory),r=e.getStore(n).getState(),i=t.sessionID,a=r.message?.[i]??[],o=e.getLiveRevision?.(n,i)??0;return Gr({sessionID:i,messages:a,parts:r.part??{},boundary:Yr(r,i),liveRevision:o})},getPagination(t){let n=k(t.directory),r=e.getStore(n).getState();return Wr(t.sessionID,Yr(r,t.sessionID))},getRequestState(t){let n=k(t.directory);return e.getRequestState?.(n,t.sessionID)??{sessionID:t.sessionID,status:`idle`}},getHydrationState(e){let t=a.getTranscript(e),n=Br(t);return{sessionID:e.sessionID,p0Satisfied:n,phase:Vr({p0Satisfied:n,earlierHistoryLoaded:Lr(t)>1})}},getMessage(e,t){return a.getTranscript(e).messagesByID[t]},getParts(t,n){let r=k(t.directory);return e.getStore(r).getState().part?.[n]??[]},hasSession(t){let n=k(t.directory),r=e.getStore(n).getState().message;return r?Object.prototype.hasOwnProperty.call(r,t.sessionID):!1},apply(t,n){let r=k(t.directory),i=e.getStore(r),a=t.sessionID;switch(n.type){case`http-page`:return $r(i,a,n);case`sse-event`:return ti(i,n);case`sse-event-batch`:return ni(i,n);case`optimistic-add`:return ai(i,a,n,e,r);case`optimistic-confirm`:return si(a,n.messageID,e,r);case`optimistic-remove`:return oi(i,a,n.messageID,e,r);case`reset`:return li(i,a,n);case`materialize-snapshots`:return ri(i,a,n);case`remove-message`:return ii(i,a,n.messageID);case`revert-committed`:{let e=i.getState(),t=e.message?.[a];if(!Array.isArray(t)||t.length===0)return{applied:!0,changed:!1};let r=t.findIndex(e=>e.id===n.to);if(r<0)return{applied:!0,changed:!1};let o=t.slice(r),s=t.slice(0,r),c={...e.message??{}};c[a]=s;let l={...e.part??{}};for(let e of o)delete l[e.id];return i.setState({message:c,part:l}),{applied:!0,changed:o.length>0}}default:return{applied:!1,changed:!1}}},subscribe(e,n){let a=Jr(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 di=new Set,fi=new Set;function pi(e,t){return`${e}\n${t}`}function mi(){for(let e of fi)e()}function hi(e,t){!e||!t||(di.add(pi(e,t)),mi())}function gi(e,t){!e||!t||di.delete(pi(e,t))&&mi()}function _i(e,t){if(!e)return!1;if(t)return di.has(pi(t,e));let n=`\n${e}`;for(let e of di)if(e.endsWith(n))return!0;return!1}function vi(e){return fi.add(e),()=>{fi.delete(e)}}var yi=[],bi=new Map,xi=new Map,Si=0,Ci=()=>{let e=yi.findIndex(e=>e.priority===`user`);if(e>=0){let[t]=yi.splice(e,1);return t}return yi.shift()},wi=()=>{for(;Si<4;){let e=Ci();if(!e)return;bi.delete(e.key),Si+=1,Promise.resolve().then(()=>e.run()).then(t=>{e.resolve(t)},t=>{e.reject(t)}).finally(()=>{--Si,xi.delete(e.key),wi()})}};function Ti(e,t,n){let r=n?.priority??`background`,i=xi.get(e);if(i){let t=bi.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 yi.push(c),bi.set(e,c),xi.set(e,s),wi(),s}var Ei=null,Di=0,Oi=new Set;function ki(){Di+=1;for(let e of Oi)e()}function Ai(e){return e}function ji(e){return Oi.add(e),()=>{Oi.delete(e)}}function Mi(){return Di}function Ni(e){return Ei?.repository===e?e:(Ei={kind:`query`,repository:e},ki(),e)}function Pi(){Ei&&(Ei=null,ki())}function A(){return Ei?.repository??null}function Fi(){let e=A();if(!e)throw Error(`TranscriptRepository is not bound — SyncProvider must mount first`);return e}function j(e,t){let n=A();if(n)return n;let r=Ai(t);return ui({getStore:e=>r})}function M(e,t,n){return{directory:e.trim(),sessionID:t,...n?.transport===void 0?{}:{transport:n.transport},...n?.generation===void 0?{}:{generation:n.generation}}}function Ii(e){try{let t=A(),n=o(),r=s();return t?.getCacheBudget?.().listCanonicalScopesForSession(e,{transport:n,generation:r})?.map(e=>M(e.directory,e.sessionID,{transport:e.transport,generation:e.generation}))??[]}catch{return[]}}function Li(e,t){let n=A();return n?n.apply(e,t):null}async function Ri(e,t){let n=Fi();if(typeof n.fetchPreviousPage!=`function`)throw Error(`TranscriptRepository does not support fetchPreviousPage`);await n.fetchPreviousPage(M(e,t))}async function zi(e,t){let n=Fi();if(typeof n.ensureInitial!=`function`)throw Error(`TranscriptRepository does not support ensureInitial`);await n.ensureInitial(M(e,t))}async function Bi(e,t){let n=Fi(),r=M(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 Vi(e,t){let n=Fi();if(typeof n.refreshFromAuthority!=`function`)throw Error(`TranscriptRepository does not support refreshFromAuthority`);hi(e,t);try{await n.refreshFromAuthority(M(e,t))}finally{gi(e,t)}}async function Hi(e,t,n,r){let i=Fi();if(typeof i.materializeMessage!=`function`)throw Error(`TranscriptRepository does not support materializeMessage`);let a=M(e,t);await Ti(`${e}\n${t}\n${n}`,()=>i.materializeMessage(a,n),{priority:r?.priority??`background`})}function Ui(e,t,n){let r=A();return!r||typeof r.getMessageMaterializationState!=`function`?{sessionID:t,messageID:n,status:`idle`}:r.getMessageMaterializationState(M(e,t),n)}function Wi(e,t){A()?.purgeSession?.(M(e,t))}var N=null;function Gi(e){N&&N!==e&&N.cancelAll(`reregister`),N=e}function Ki(e){N?.captureCheckpoints(e)}function qi(e){N?.onCompensation(e)}async function Ji(e){return N?N.ensureOnObserve(e):null}function Yi(e){N?.cancelAll(e)}var Xi=e=>typeof e==`number`&&Number.isFinite(e)?e:0,Zi=e=>Xi(e.input)+Xi(e.output)+Xi(e.reasoning)+Xi(e.cache?.read)+Xi(e.cache?.write),Qi=e=>e?.type===`compaction`,$i=e=>!!e&&e.some(Qi),ea=(e,t)=>e.clientRole===`compaction`||e.type===`compaction`||$i(t),ta=(e,t)=>{for(let n=e.length-1;n>=0;--n){let r=e[n],i=r.id?t(r.id):void 0;if(ea(r,i)){let e=i?.find(Qi)?.status??r.status;if(e===`running`||e===`failed`)continue;return{compacted:!0}}if(r.role!==`assistant`)continue;let a=r.tokens;if(!a)continue;let o=Zi(a);if(o>0)return{messageId:r.id??``,totalTokens:o,tokens:a}}return null},na=(e,t,n)=>{if(!e)return null;let r=`compacted`in e,i=r?0:e.totalTokens;return{...r?{pending:!0}:{},totalTokens:i,percentage:t>0?Math.round(i/t*100):0,contextLimit:t||0,outputLimit:n||void 0,normalizedOutput:!r&&n>0?Math.round(Xi(e.tokens.output)/n*100):void 0,thresholdLimit:t>0?t:2e5,lastMessageId:r?void 0:e.messageId}},ra=[],ia=[],aa={sessionID:``,messageOrder:[],messagesByID:{},partsByMessageID:{},boundary:xr,liveRevision:0};Wr(``,xr);var oa={sessionID:``,phase:`idle`,p0Satisfied:!1};function P(e,t){return j(e,t)}var sa=new Set;function ca(e,t){return`${e}\n${t}`}function la(e,t){if(!t)return;let n=ca(e,t);sa.has(n)||(sa.add(n),Ji(M(e,t)).catch(()=>{}).finally(()=>{sa.delete(n)}))}function ua(e,t){if(e&&t){sa.delete(ca(e,t));return}sa.clear()}function F(e,t,n,r,i=Object.is,a){let o=(0,y.useRef)(r);o.current=r;let s=(0,y.useRef)(i);s.current=i;let c=(0,y.useRef)(void 0),l=a?.enabled!==!1,u=(0,y.useCallback)(()=>{if(!e||!l){let e=o.current(aa);return(c.current===void 0||!s.current(c.current,e))&&(c.current=e),c.current}let r=P(t,n).getTranscript(M(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,y.useCallback)(r=>{if(!e||!l)return()=>void 0;la(t,e);let i=P(t,n).subscribe(M(t,e),()=>{r()}),a=ji(()=>{i(),c.current=void 0,ua(t,e),la(t,e),i=P(t,n).subscribe(M(t,e),()=>{r()}),r()});return()=>{a(),i()}},[t,l,e,n]);return y.useSyncExternalStore(d,u,u)}function da(e,t,n,r,i,a){return F(e,t,n,r,i===void 0?Object.is:i,a)}function fa(e,t){if(e.messageOrder.length===0)return ra;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 pa(e,t){return e.messageOrder.length===0?t?.resolved===!0?_r({messages:ra,parts:e.partsByMessageID}):{hasMessages:!1,renderable:!1,missingPartMessageIDs:[]}:_r({messages:fa(e),parts:e.partsByMessageID})}function ma(e,t,n,r){let i=(0,Ce.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=P(t,n).hasSession?.(M(t,e));return pa(r,{resolved:i===!0||void 0})},i[0]=t,i[1]=e,i[2]=n,i[3]=a):a=i[3],F(e,t,n,a,ha,r)}function ha(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 ga(e,t,n,r,i){let a=(0,Ce.c)(3),o;return a[0]!==r||a[1]!==i?(o=e=>na(ta(fa(e),t=>e.partsByMessageID[t]),r,i),a[0]=r,a[1]=i,a[2]=o):o=a[2],F(e,t,n,o,_a)}function _a(e,t){return e===t||!!(e&&t&&e.pending===t.pending&&e.totalTokens===t.totalTokens&&e.percentage===t.percentage&&e.contextLimit===t.contextLimit&&e.outputLimit===t.outputLimit&&e.normalizedOutput===t.normalizedOutput&&e.lastMessageId===t.lastMessageId)}function va(e,t,n,r){return F(e,t,n,ba,ya,r)}function ya(e,t){if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(e[n]!==t[n])return!1;return!0}function ba(e){return fa(e)}function xa(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 Sa(e,t,n,r){return F(e,t,n,Ca,xa,r)}function Ca(e){return e}function wa(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=A();if(o){i.push(o.subscribe(M(a.directory,a.sessionID),t));continue}let s=n?.(a.directory);if(!s)continue;let c=j(a.directory,s);i.push(c.subscribe(M(a.directory,a.sessionID),t))}},s=()=>{a(),o(),t()};o();let c=ji(s),l=r?.subscribeRebuild?.(s);return()=>{l?.(),c(),a()}}function Ta(e,t){return e.length===0?``:e.map(e=>{let n=La(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 Ea(e,t,n){return F(e,t,n,Da)}function Da(e){return e.messageOrder.length}function Oa(e,t,n){let r=(0,Ce.c)(8),i=(0,y.useRef)(!1),a;r[0]!==t||r[1]!==e||r[2]!==n?(a=()=>{if(!e)return i.current=!1,!1;let r=P(t,n),a=r.hasSession?.(M(t,e))??r.getTranscript(M(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?P(t,n).subscribe(M(t,e),()=>{r()}):ka,r[4]=t,r[5]=e,r[6]=n,r[7]=s):s=r[7];let c=s;return y.useSyncExternalStore(c,o,o)}function ka(){}function Aa(e,t,n,r){let i=(0,Ce.c)(10),a=(0,y.useRef)(void 0),o;i[0]!==t||i[1]!==e||i[2]!==r||i[3]!==n?(o=()=>{if(!e)return a.current=ia,ia;let i=P(t,n),o=r||e,s=i.getParts(M(t,o),e),c=s.length===0?ia: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 Ma;let a=P(t,n);return r?a.subscribe(M(t,r),()=>{i()}):ja},i[5]=t,i[6]=e,i[7]=r,i[8]=n,i[9]=c):c=i[9];let l=c;return y.useSyncExternalStore(l,s,s)}function ja(){}function Ma(){}function Na(e,t,n){let r=(0,Ce.c)(8),i=(0,y.useRef)(oa),a;r[0]!==t||r[1]!==e||r[2]!==n?(a=()=>{if(!e)return i.current!==oa&&(i.current=oa),i.current;let r=P(t,n).getHydrationState?.(M(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 Pa;la(t,e);let a=P(t,n).subscribe(M(t,e),()=>{r()}),o=ji(()=>{a(),i.current=oa,ua(t,e),la(t,e),a=P(t,n).subscribe(M(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 y.useSyncExternalStore(c,o,o)}function Pa(){}function Fa(e,t,n){let r=(0,Ce.c)(2),i;return r[0]===e?i=r[1]:(i=t=>Wr(e,t.boundary),r[0]=e,r[1]=i),F(e,t,n,i,Ia)}function Ia(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 La(e,t,n){if(!t)return[];let r=A();if(r){let n=r.getTranscript(M(e,t));return n.messageOrder.map(e=>n.messagesByID[e]).filter(e=>!!e)}if(!n)return[];let i=j(e,n).getTranscript(M(e,t));return i.messageOrder.map(e=>i.messagesByID[e]).filter(e=>!!e)}var I=null,Ra=``,za=null,Ba=new Set,Va=null,Ha=new Map,Ua=new Map;function Wa(e,t,n,r){I=t,Va!==t&&(Va=null,Ha=new Map,Ua=new Map),Ra=n,r&&(za=r)}function Ga(e,t){za?.(e,t)}function Ka(){if(!I)throw Error(`ChildStoreManager not initialized — is SyncProvider mounted?`);return I}function qa(e){let t=I;if(!t)return;let n=e||Ra;if(n)return t.getState(n)}function Ja(e){let t=qa(e)?.config;return t&&Object.keys(t).length>0?t:void 0}function Ya(e){return Ba.add(e),()=>{Ba.delete(e)}}function Xa(e,t){if(e)for(let n of Ba)n(e,t)}function Za(e){return qa(e)?.session??[]}function Qa(){return Array.from($a().values())}function $a(){let e=I;if(!e)return Ua;let t=Va!==e||Ha.size!==e.children.size;for(let[n,r]of e.children)if(Ha.get(n)!==r.getState().session){t=!0;break}if(!t)return Ua;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 Va=e,Ha=n,Ua=r,Ua}function eo(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=A();if(I){for(let[i,a]of I.children)if(a.getState().session.some(t=>t.id===e)&&(n??j(i,a)).hasSession?.(M(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 to(e,t){if(!e)return[];try{let n=A(),r=t??Ra;if(n){let t=n.getTranscript(M(r,e));return t.messageOrder.map(e=>t.messagesByID[e]).filter(e=>!!e)}if(I){let t=I.getChild(r);if(t){let n=j(r,t).getTranscript(M(r,e));return n.messageOrder.map(e=>n.messagesByID[e]).filter(e=>!!e)}}}catch{}return[]}function no(e,t){if(!e)return[];try{let n=A(),r=t??Ra;if(n)return[...n.getParts(M(r,e),e)];if(I){let t=I.getChild(r);if(t)return[...j(r,t).getParts(M(r,e),e)]}}catch{}return[]}function ro(e,t){return qa(t)?.session_status[e]}var L=e=>{if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0},io=`default`;function ao(e){let t=L(e);if(t&&t!==io)return t}function oo(e){let t=e?.model;return L(t?.id)??L(t?.modelID)}function so(e){let t=e?.model;return L(t?.providerID)}function co(e){let t=e?.model;return ao(t?.variant)}function lo(e){let t=ao(e.variant);return{id:e.modelID.trim(),providerID:e.providerID.trim(),...t?{variant:t}:{}}}function uo(e,t,n){let r=L(n.providerID),i=L(n.modelID);if(!r||!i)return{agent:L(n.agent)};let a=(qa(t)?.session??Qa()).find(t=>t.id===e),o=lo({providerID:r,modelID:i,variant:n.variant}),s=oo(a),c=so(a),l=co(a),u=ao(o.variant),d=!a||!s||!c||c!==o.providerID||s!==o.id||l!==u,f=L(n.agent),p=L(a?.agent);return{model:d?o:void 0,agent:f&&p!==f?f:void 0}}function fo(e,t,n){if(e&&!(!n.model&&!n.agent))try{let r=Ka(),i=typeof t==`string`&&t.length>0?t:void 0;if(!i)return;let a=r.getChild?.(i)??r.ensureChild?.(i,{bootstrap:!1});if(!a?.getState||!a?.setState)return;a.setState(t=>{let r=t.session;if(!Array.isArray(r))return t;let i=r.findIndex(t=>t.id===e);if(i<0)return t;let a=r[i];if(!a)return t;let o=n.model?{id:n.model.id??n.model.modelID??``,providerID:n.model.providerID,...n.model.variant?{variant:n.model.variant}:{}}:a.model,s={...a,...n.model&&o?.id&&o.providerID?{model:o}:{},...n.agent?{agent:n.agent}:{}};if(s===a)return t;let c=r.slice();return c[i]=s,{...t,session:c}})}catch{}}var po=new Set([`image/heic`,`image/heif`]),mo=!1,ho=()=>{let e=globalThis.window?.Capacitor;return e&&typeof e==`object`?e:null},go=e=>po.has((e.type||``).toLowerCase()),_o=async e=>{let t=new Uint8Array(await e.arrayBuffer()),n=``,r=32768;for(let e=0;e<t.byteLength;e+=r){let i=t.subarray(e,Math.min(e+r,t.byteLength));n+=String.fromCharCode(...i)}return btoa(n)},vo=(e,t)=>{let n=atob(e),r=new Uint8Array(n.length);for(let e=0;e<n.length;e++)r[e]=n.charCodeAt(e);return new Blob([r],{type:t})},yo=async e=>{if(!go(e)||mo)return null;let t=ho();if(!t||typeof t.isNativePlatform!=`function`||!t.isNativePlatform())return null;let n=t.Plugins?.OpenChamberMedia?.transcode;if(typeof n!=`function`)return null;try{let t=await n({data:await _o(e),mime:e.type.toLowerCase(),quality:.9});if(typeof t?.data!=`string`||!t.data)return null;let r=typeof t.mime==`string`&&t.mime?t.mime:`image/jpeg`;return vo(t.data,r)}catch(e){return mo=!0,console.warn(`Native HEIC transcode failed`,e),null}},bo=e=>e.trim().toLowerCase(),xo=e=>e.source===`local`||e.source===`server`||e.source===`vscode`,So=(e,t)=>{if(!e||!e.includes(`[`)||t.length===0)return[];let n=new Set(t.map(bo)),r=[],i=0;for(;i<e.length;){let t=e.indexOf(`[`,i);if(t===-1)break;let a=e.indexOf(`]`,t+1);if(a===-1)break;if(e[a+1]!==`(`){let i=re(e.slice(t+1,a)).trim();n.has(bo(i))&&r.push({start:t,end:a+1})}i=a+1}return r},Co=(e,t)=>{let n=t.start,r=t.end;return r<e.length&&/\s/.test(e[r])?r+=1:n>0&&/\s/.test(e[n-1])&&--n,{start:n,end:r}},wo=(e,t,n,r)=>{let i=So(e,t);if(i.length===0)return{text:e,mentions:[...n],composerReferences:r===void 0?void 0:[...r],changed:!1};let a=e,o=[...n],s=r===void 0?[]:[...r];for(let e=i.length-1;e>=0;--e){let{start:t,end:n}=Co(a,i[e]),r=n-t;a=`${a.slice(0,t)}${a.slice(n)}`,o=o.flatMap(e=>e.range.end<=t?[e]:e.range.start>=n?[{...e,range:{start:e.range.start-r,end:e.range.end-r}}]:[]),s=s.flatMap(e=>e.end<=t?[e]:e.start>=n?[{...e,start:e.start-r,end:e.end-r}]:[])}return{text:a,mentions:o,composerReferences:r===void 0?void 0:s,changed:!0}},To=new Set([`image`,`screenshot`,`screen-shot`,`clipboard`,`pasted-image`,`pastedimage`,`untitled`,`unknown`,`file`,`blob`]),Eo={"image/avif":`avif`,"image/bmp":`bmp`,"image/gif":`gif`,"image/heic":`heic`,"image/heif":`heif`,"image/jpeg":`jpg`,"image/jpg":`jpg`,"image/png":`png`,"image/svg+xml":`svg`,"image/tiff":`tiff`,"image/webp":`webp`},Do=e=>e.trim().toLowerCase(),Oo=e=>e.charCodeAt(0)<32||`<>:"/\\|?*[]`.includes(e),ko=e=>{let t=e.replace(/\\/g,`/`).split(`/`).pop()??``;return Array.from(t).map(e=>Oo(e)?`-`:e).join(``).replace(/\s+/g,` `).replace(/-+/g,`-`).trim()},Ao=e=>Eo[e?.trim().toLowerCase()??``]??`png`,jo=e=>{let t=ko(e.name),n=Ao(e.type),r=t.lastIndexOf(`.`);if(r>0&&r<t.length-1){let e=t.slice(r+1).toLowerCase();if(/^[a-z0-9]{1,10}$/.test(e))return{base:t.slice(0,r).trim()||`image`,ext:e}}return{base:t.trim()||`image`,ext:n}},Mo=e=>{let{base:t}=jo({name:e}),n=t.trim().toLowerCase().replace(/[\s_]+/g,`-`).replace(/-+/g,`-`).replace(/^-|-$/g,``);if(To.has(n))return!0;let r=n.replace(/-\(\d+\)$/g,``);return r!==n&&To.has(r)?!0:/^(image|file|unknown|untitled|blob)-\d+$/.test(n)},No=(e,t)=>`${e}.${t}`,Po=(e,t,n)=>{let r=No(e,t);if(!n.has(Do(r)))return r;for(let r=2;r<2**53-1;r+=1){let i=No(`${e}-${r}`,t);if(!n.has(Do(i)))return i}return No(`${e}-${Date.now()}`,t)},Fo=(e,t)=>{for(let n=1;n<2**53-1;n+=1){let r=No(`image-${n}`,e);if(!Array.from(t).some(e=>e.startsWith(`image-${n}.`))&&!t.has(Do(r)))return r}return No(`image-${Date.now()}`,e)},Io=(e,t)=>{let n=new Set(t.map(Do));return e.map(e=>{let{base:t,ext:r}=jo(e),i=Mo(No(t,r))?Fo(r,n):Po(t,r,n);return n.add(Do(i)),i})},Lo=e=>e.map(e=>h(e)).join(` `),Ro=(e,t,n)=>{if(t===n)return[];let r=[];for(let i of e){let e=[h(i),`[${i}]`],a=e.some(e=>t.includes(e)),o=e.some(e=>n.includes(e));a&&!o&&r.push(i)}return r},zo=(e,t)=>{if(t.length>=e.length)return null;let n=0,r=Math.min(e.length,t.length);for(;n<r&&e[n]===t[n];)n+=1;let i=0;for(;i<e.length-n&&i<t.length-n&&e[e.length-1-i]===t[t.length-1-i];)i+=1;let a=e.length-i;return t.length-i!==n||a<=n?null:{start:n,end:a}},Bo=(e,t,n)=>{if(e===t||n.length===0)return null;let r=[...n],i=zo(e,t);if(i){let t=Zo(e,r,{key:`Backspace`,selectionStart:i.start,selectionEnd:i.end});if(t)return t}let a=Ro(r,e,t);return a.length===0?null:{text:t,caret:t.length,removedFilenames:a}},Vo=e=>e.replaceAll(`[${m}`,`[`),Ho=/\.(?:png|jpe?g|gif|webp|svg|avif|bmp|heic|heif|tiff?)$/i,Uo=e=>{let t=e.trim();return t.startsWith(`/`)||/^[A-Za-z]:[\\/]/.test(t)||t.startsWith(`\\\\`)},Wo=(e,t)=>{let n=e;for(let e of t){let t=e.filename.trim(),r=e.path.trim();if(!t||!r||t===r||Uo(t)||!Ho.test(t)&&!Ho.test(r))continue;let i=`[${r}]`;n=n.split(h(t)).join(i).split(`[${t}]`).join(i)}return n},Go=(e,t)=>{let n=e;for(let e of t??[]){if(e.source!==`vscode`||e.vscodeSource!==`selection`||!e.vscodePath)continue;let t=e.filename.match(/:(\d+(?:-\d+)?)$/)?.[1];if(!t)continue;let r=`[${e.vscodePath}:${t}]`;n=n.split(h(e.filename)).join(r).split(`[${e.filename}]`).join(r)}return n},Ko=e=>e.mime===`text/plain`&&typeof e.filename==`string`&&/:\d+(?:-\d+)?$/.test(e.filename),qo=`application/x-directory`,Jo=e=>typeof e==`string`&&e.trim().toLowerCase()===`application/x-directory`,Yo=e=>typeof e==`string`&&/[/\\]$/.test(e.trim()),Xo=(e,t,n)=>{if(t===`Backspace`){let t=n;for(;t>0&&/\s/.test(e[t-1]);)--t;for(;t>0&&!/\s/.test(e[t-1]);)--t;return{start:t,end:n}}let r=n;for(;r<e.length&&/\s/.test(e[r]);)r+=1;for(;r<e.length&&!/\s/.test(e[r]);)r+=1;return{start:n,end:r}},Zo=(e,t,n)=>{let r=Math.max(0,Math.min(n.selectionStart,e.length)),i=Math.max(r,Math.min(n.selectionEnd,e.length)),a;if(a=r===i?n.altKey?Xo(e,n.key,r):n.key===`Backspace`?{start:Math.max(0,r-1),end:r}:{start:r,end:Math.min(e.length,r+1)}:{start:r,end:i},a.start===a.end)return null;let o=So(e,t).filter(e=>e.start<a.end&&e.end>a.start);if(o.length===0)return null;let s=Math.min(a.start,...o.map(e=>e.start)),c=Math.max(a.end,...o.map(e=>e.end));return c<e.length&&/\s/.test(e[c])&&(s===0||/\s/.test(e[s-1]))?c+=1:c===e.length&&s>0&&/\s/.test(e[s-1])&&--s,{text:`${e.slice(0,s)}${e.slice(c)}`,caret:s,removedFilenames:o.map(t=>re(e.slice(t.start+1,t.end-1)).trim())}},Qo=class extends Error{status;code;constructor(e,t,n=`Failed to upload prompt attachment`){super(n),this.name=`PromptAttachmentUploadError`,this.status=e,this.code=t}},$o=`file://`,es=e=>{let t=e.trim();if(t.toLowerCase().startsWith($o))return t;let n=me(t).split(`/`).map(e=>/^[A-Za-z]:$/.test(e)?e:encodeURIComponent(e)).join(`/`);return/^[A-Za-z]:/.test(n)?`${$o}/${n}`:`${$o}${n}`},ts=e=>{let t=e.trim();if(!t.toLowerCase().startsWith($o))return t;let n=t.slice(7);n.toLowerCase().startsWith(`localhost/`)&&(n=n.slice(9));let r=n.split(`/`).map(e=>{if(/^[A-Za-z]:$/.test(e))return e;try{return decodeURIComponent(e)}catch{return e}}).join(`/`);return/^\/[A-Za-z]:/.test(r)?r.slice(1):r},ns=async e=>[...new Uint8Array(await crypto.subtle.digest(`SHA-256`,await e.arrayBuffer()))].map(e=>e.toString(16).padStart(2,`0`)).join(``),rs=e=>typeof e==`object`&&!!e&&!Array.isArray(e),is=async e=>{let t;try{t=await e.json()}catch{throw new Qo(e.status,`unavailable`)}if(!rs(t)||typeof t.path!=`string`||!t.path)throw new Qo(e.status,`unavailable`);let n=typeof t.mime==`string`&&t.mime?t.mime:`application/octet-stream`,r=typeof t.size==`number`&&Number.isSafeInteger(t.size)?t.size:0,i=typeof t.sha256==`string`?t.sha256:``;return{path:t.path,url:es(t.path),mime:n,size:r,sha256:i}},as=e=>{let t=typeof crypto.randomUUID==`function`?crypto.randomUUID():`${Date.now().toString(36)}-${Math.random().toString(36).slice(2,10)}`,n=e?.replace(/[^a-z0-9._-]+/gi,`-`).replace(/^-+|-+$/g,``).slice(0,32);return n?`att-${t}-${n}`:`att-${t}`},os=(e,t)=>{if(!e.startsWith(`data:`))return null;let n=e.indexOf(`,`);if(n===-1)return null;let r=e.slice(5,n),i=e.slice(n+1),a=r.split(`;`,1)[0]?.trim()||t||`application/octet-stream`;try{if(r.toLowerCase().includes(`;base64`)){let e=atob(i),t=new Uint8Array(e.length);for(let n=0;n<e.length;n++)t[n]=e.charCodeAt(n);return new Blob([t],{type:a})}return new Blob([decodeURIComponent(i)],{type:a})}catch{return null}},ss=e=>e.startsWith(`data:`)||e.startsWith(`blob:`),cs=async e=>{let t=e.mime||e.body.type||`application/octet-stream`,n=e.body.type===t?e.body:new Blob([e.body],{type:t});if(!Number.isSafeInteger(n.size)||n.size<0||n.size>26214400)throw new Qo(413,`too-large`);let r=await ns(n),i=as(e.filename),a;try{a=await u(`/api/fs/prompt-attachments/${encodeURIComponent(i)}`,{method:`PUT`,headers:{"Content-Type":t,"Content-Length":String(n.size),"X-OpenChamber-Content-Length":String(n.size),"X-OpenChamber-Sha256":r,"X-OpenChamber-Mime":t,...e.filename?{"X-OpenChamber-Filename":encodeURIComponent(e.filename)}:{}},body:n,signal:e.signal})}catch{throw new Qo(0,`unavailable`)}if(a.status===413)throw new Qo(413,`too-large`);if(!a.ok)throw new Qo(a.status,a.status>=500||a.status===0?`unavailable`:`rejected`);let o=await is(a);if(o.size!==n.size)throw new Qo(a.status,`unavailable`);return{...o,mime:t}},ls=500,us=()=>{if(typeof window>`u`)return!1;try{return new URLSearchParams(window.location.search).get(`startupTrace`)===`1`||window.localStorage?.getItem(`OPENCHAMBER_STARTUP_TRACE`)===`1`}catch{return!1}},ds=()=>us(),R=(e,t)=>{if(!us())return;let n=typeof performance<`u`?performance.now():Date.now();window.__OPENCHAMBER_STARTUP_TRACE_START__??=n,window.__OPENCHAMBER_STARTUP_TRACE__??=[],window.__OPENCHAMBER_STARTUP_TRACE__.push({t:Math.round(n-window.__OPENCHAMBER_STARTUP_TRACE_START__),name:e,...t?{data:t}:{}}),window.__OPENCHAMBER_STARTUP_TRACE__.length>ls&&window.__OPENCHAMBER_STARTUP_TRACE__.splice(0,window.__OPENCHAMBER_STARTUP_TRACE__.length-ls)};typeof window<`u`&&(window.__OPENCHAMBER_STARTUP_TRACE_SUMMARY__=()=>{let e=typeof window<`u`?window.__OPENCHAMBER_STARTUP_TRACE__??[]:[],t=e.findIndex(e=>e.name===`ModelControls:ready`),n=t>=0?Math.min(e.length,t+8):e.length;return e.slice(0,n).filter(e=>e.name.includes(`checkConnection`)||e.name.includes(`checkHealth`)||e.name.includes(`initializeApp`)||e.name.includes(`initApp`)||e.name.includes(`loadProviders`)||e.name.includes(`loadAgents`)||e.name.includes(`config.defaults`)||e.name.includes(`ModelControls`)||e.name.includes(`activateDirectory`)||e.name.includes(`opencodeClient:setDirectory`))});var fs=async(e,t,n)=>{let r=typeof performance<`u`?performance.now():Date.now();R(`${e}:start`,n);try{let n=await t(),i=typeof performance<`u`?performance.now():Date.now();return R(`${e}:end`,{durationMs:Math.round(i-r)}),n}catch(t){let n=typeof performance<`u`?performance.now():Date.now();throw R(`${e}:error`,{durationMs:Math.round(n-r),error:t instanceof Error?t.message:String(t)}),t}},ps=e=>({kind:`session-inbox`,requestID:e.requestID,queueItemID:e.id,operationID:e.id,messageID:e.id,content:e.payload.text,createdAt:e.timeCreated,delivery:e.delivery,attachmentCount:Array.isArray(e.payload.files)?e.payload.files.length:0}),ms=[],hs=[],z=new Map,gs=512,_s=0;function vs(){return _s}function B(){return{transportIdentity:o(),generation:s()}}function ys(e){return o()===e.transportIdentity&&s()===e.generation}function bs(e,t,n){return`${n?.transportIdentity??o()}\0${n?.generation??s()}\0${e}\0${t}`}function xs(e=B()){if(z.size===0)return;let t=`${e.transportIdentity}\0${e.generation}\0`;for(let e of z.keys())e.startsWith(t)||z.delete(e);for(;z.size>gs;){let e=z.keys().next().value;if(e===void 0)break;z.delete(e)}}function Ss(e,t,n,r){let i=r??B();xs(i),_s+=1,z.set(bs(e,t,i),{kind:n,mark:_s})}function Cs(e,t,n){let r=n?.scope;xs(r??B());let i=z.get(bs(e,t,r));if(!i)return!0;let a=n?.startedMark;return a!==void 0&&i.mark>a?!1:(z.delete(bs(e,t,r)),!0)}function ws(e,t,n){return xs(n??B()),z.get(bs(e,t,n))?.kind??null}var Ts=(e,t,n)=>{let r={...e};return n.length===0?delete r[t]:r[t]=n,r},V=oe((e,t)=>({bySession:{},remember(t){return!ws(t.sessionID,t.id)&&(e(e=>{let n=e.bySession[t.sessionID]??[],r=n.findIndex(e=>e.id===t.id),i={...t,requestID:t.id,wasQueued:t.delivery===`queue`||n[r]?.wasQueued===!0};if(r>=0){let a=n.slice();return a[r]=i,{bySession:{...e.bySession,[t.sessionID]:a}}}return{bySession:{...e.bySession,[t.sessionID]:[...n,i]}}}),!0)},forget(t,n,r){r&&Ss(t,n,r),e(e=>{let r=e.bySession[t];if(!r?.length)return e;let i=r.filter(e=>e.id!==n);return i.length===r.length?e:{bySession:Ts(e.bySession,t,i)}})},forgetSession(t){e(e=>{if(!e.bySession[t])return e;let n={...e.bySession};return delete n[t],{bySession:n}})},forgetPromoted(t,n){let r=new Set(n);e(e=>{let n=e.bySession[t];if(!n?.length)return e;let i=new Set(n.filter(e=>r.has(e.id)).map(e=>e.id));if(i.size===0)return e;for(let e of i)Ss(t,e,`consumed`);return{bySession:Ts(e.bySession,t,n.filter(e=>!i.has(e.id)))}})},replaceFromAuthority(t,n,r){let i=r?.startedMark,a=[];for(let e of n)Cs(t,e.id,{startedMark:i})&&a.push(e);e(e=>{let n=new Map((e.bySession[t]??[]).map(e=>[e.id,e])),i=r?.observedItems&&new Map(r.observedItems.map(e=>[e.id,e])),o=a.map(e=>({...e,requestID:e.id,wasQueued:e.delivery===`queue`||n.get(e.id)?.wasQueued===!0}));if(i){let e=new Map(o.map((e,t)=>[e.id,t]));for(let t of n.values()){if(i.get(t.id)===t)continue;let n=e.get(t.id);n===void 0?o.push(t):o[n]=t}}return{bySession:Ts(e.bySession,t,o)}})},updateDelivery(t,n,r){e(e=>{if(ws(t,n))return e;let i=e.bySession[t];if(!i?.length)return e;let a=i.findIndex(e=>e.id===n);if(a<0||i[a].delivery===r)return e;let o=i.slice();return o[a]={...i[a],delivery:r,wasQueued:r===`queue`||i[a].wasQueued},{bySession:{...e.bySession,[t]:o}}})},list(e){return t().bySession[e]??ms}}));function Es(e){return V.getState().remember(e)}function Ds(e,t){return Cs(e.sessionID,e.id,t)?V.getState().remember(e):!1}function Os(e,t,n){V.getState().forget(e,t,n)}function ks(e,t){V.getState().forgetPromoted(e,t)}function As(e,t,n){V.getState().replaceFromAuthority(e,t,n)}function js(e,t,n){V.getState().updateDelivery(e,t,n)}function Ms(e){return!!e&&typeof e==`object`&&e.kind===`session-inbox`}var Ns=e=>e?e.toLowerCase().includes(`application/json`):!1,Ps=e=>e?e.toLowerCase().includes(`text/html`):!1;function H(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}function U(e){return typeof e==`string`&&e.length>0?e:void 0}function Fs(e){return typeof e==`number`&&Number.isFinite(e)?e:void 0}function Is(e,t,n){let r=n?`: ${n}`:``,i=Error(`${e} (${t})${r}`);throw i.status=t,i}async function Ls(e){try{let t=(await e.text()).trim();if(!t)return``;try{let e=JSON.parse(t);if(typeof e.error==`string`&&e.error.trim())return e.error.trim();if(typeof e.message==`string`&&e.message.trim())return e.message.trim()}catch{}return t}catch{return``}}function Rs(e){return e?{directory:e}:{}}function zs(e,t){let n=`/api/session/${encodeURIComponent(e)}/inbox`;return t?`${n}/${encodeURIComponent(t)}`:n}async function Bs(e,t){let n=e.headers.get(`content-type`);if(Ps(n))throw Error(`${t}: unexpected HTML response`);let r;try{r=await e.json()}catch{throw Error(`${t}: malformed JSON`)}if(!Ns(n)&&r==null)throw Error(`${t}: empty response`);return r}function Vs(e){let t=H(e)?e:null,n=t&&H(t.data)?t.data:t;if(!n)throw Error(`session prompt: expected inbox item`);let r=U(n.type);if(r&&r!==`user`)throw Error(`session prompt: expected user inbox item, got ${r}`);let i=U(n.id),a=U(n.sessionID);if(!i||!a)throw Error(`session prompt: inbox item missing id`);let o=H(n.payload)?n.payload:{},s=n.delivery===`queue`?`queue`:`steer`,c=H(n.time)?n.time:null;return{id:i,sessionID:a,timeCreated:Fs(n.timeCreated)??Fs(c?.created)??Date.now(),type:`user`,delivery:s,payload:{text:U(o.text)??U(n.text)??``,...o.files===void 0?{}:{files:o.files},...o.agents===void 0?{}:{agents:o.agents},...o.skills===void 0?{}:{skills:o.skills},...H(o.metadata)?{metadata:o.metadata}:{}}}}function Hs(e){let t=H(e)?e:null,n=t&&Array.isArray(t.data)?t.data:Array.isArray(e)?e:null;if(!n)throw Error(`session inbox: expected list`);let r=[];for(let e of n)H(e)&&(e.type&&e.type!==`user`||r.push(Vs(e)));return r}function Us(e){return{runtimeKey:c(),generation:s(),directory:e,overlay:B()}}function W(e){return c()===e.runtimeKey&&s()===e.generation&&ys(e.overlay)}function Ws(e){let t=Error(`${e}: runtime switched`);throw t.name=`RuntimeGenerationMismatchError`,t}async function Gs(e){let t=e.commit??Us(e.directory);W(t)||Ws(`session prompt`);let n=`/api/session/${encodeURIComponent(e.sessionID)}/prompt`,r={id:e.messageID,text:e.text,delivery:e.delivery===`queue`?`queue`:`steer`};e.files?.length&&(r.files=e.files),e.agents?.length&&(r.agents=e.agents),e.skills?.length&&(r.skills=e.skills),e.metadata&&(r.metadata=e.metadata);let i=await u(n,{method:`POST`,headers:{"Content-Type":`application/json`},query:{directory:t.directory},body:JSON.stringify(r),signal:e.signal});if(W(t)||Ws(`session prompt`),!i.ok){let e=await Ls(i);Is(`Failed to send message`,i.status,e)}let a=Vs(await Bs(i,`session prompt`));return W(t)||Ws(`session prompt`),e.delivery===`queue`&&a.delivery!==`queue`?(Es({...a,delivery:`queue`}),js(a.sessionID,a.id,`steer`)):Es(a),a}function Ks(e){let t=e?.status;return typeof t!=`number`||!Number.isFinite(t)||t===408||t===429?!1:t>=400&&t<500}async function qs(e){let t=e.inputID.trim();if(!t)return{status:`unknown`};let n=e.commit??Us(e.directory??``);if(!W(n))return{status:`unknown`};try{let r=await Ys({sessionID:e.sessionID,directory:n.directory||e.directory,signal:e.signal});if(!W(n)||!r.current)return{status:`unknown`};let i=r.items.find(e=>e.id===t);if(i)return Ds(i,{startedMark:r.startedMark})?{status:`pending`,item:i}:{status:`unknown`}}catch{}if(!W(n))return{status:`unknown`};try{let r=await Qe({sessionID:e.sessionID,directory:n.directory||e.directory||``,limit:40,...e.signal?{signal:e.signal}:{}});if(!W(n))return{status:`unknown`};if(r.records.some(e=>e?.info?.id===t))return Os(e.sessionID,t,`consumed`),{status:`promoted`,id:t}}catch{}return{status:`unknown`}}function Js(e){let t=typeof e.type==`string`?e.type:``,n=e.properties&&typeof e.properties==`object`?e.properties:null;if(!n)return!1;let r=U(n.sessionID),i=U(n.inboxID)??U(n.id);if(!r||!i)return!1;if(t===`session.inbox.enqueued`){let e=n.item,t=H(e)?U(e.type):void 0;if(t&&t!==`user`)return!1;try{return Ds(Vs(H(e)?{...e,id:i,sessionID:r,type:t??`user`}:{id:i,sessionID:r,type:`user`,delivery:`steer`,payload:{text:``}})),!0}catch{return!1}}if(t===`session.inbox.cancelled`)return Os(r,i,`cancelled`),!0;if(t===`session.inbox.delivered`)return Os(r,i,`consumed`),!0;if(t===`session.inbox.delivery.changed`){let e=n.delivery===`queue`?`queue`:n.delivery===`steer`?`steer`:null;return e?(js(r,i,e),!0):!1}return!1}async function Ys(e){let t=B(),n=vs(),r=await u(zs(e.sessionID),{method:`GET`,query:Rs(e.directory),signal:e.signal});r.ok||Is(`session inbox`,r.status,await Ls(r));let i=await Bs(r,`session inbox`),a=Hs(i),o=ys(t);return o&&gt(e.sessionID,ht(i)),{items:a,startedMark:n,scope:t,current:o}}async function Xs(e){let t=B(),n=await u(zs(e.sessionID,e.inboxID),{method:`PATCH`,headers:{"Content-Type":`application/json`},query:Rs(e.directory),body:JSON.stringify({delivery:e.delivery}),signal:e.signal});n.ok||Is(e.delivery===`steer`?`session inbox steer`:`session inbox queue`,n.status,await Ls(n)),ys(t)&&(ws(e.sessionID,e.inboxID)||js(e.sessionID,e.inboxID,e.delivery))}async function Zs(e){await Xs({...e,delivery:`steer`})}async function Qs(e){await Xs({...e,delivery:`queue`})}async function $s(e){let t=await u(zs(e.sessionID,e.inboxID),{method:`DELETE`,query:Rs(e.directory),signal:e.signal});t.ok||Is(`session inbox cancel`,t.status,await Ls(t))}function ec(e,t,n){As(e,t,n)}async function tc(e){let t=B();if(await $s(e),!ys(t))return{overlay:V.getState().list(e.sessionID),transcriptRows:[]};Os(e.sessionID,e.inboxID,`cancelled`);try{let n=await Ys({sessionID:e.sessionID,directory:e.directory,signal:e.signal});if(!ys(t)||!n.current)return{overlay:V.getState().list(e.sessionID),transcriptRows:[]};ec(e.sessionID,n.items,{startedMark:n.startedMark})}catch{}return{overlay:V.getState().list(e.sessionID),transcriptRows:[]}}async function nc(e){let t=`/api/session/${encodeURIComponent(e.sessionID)}/interrupt`,n={};e.directory&&(n.directory=e.directory);let r=await u(t,{method:`POST`,query:n,signal:e.signal});if(!r.ok)throw Error(`Session interrupt failed (${r.status})`)}async function rc(e){return e.promotedIDs.includes(e.optimisticID)?`confirmed`:(e.removeOptimistic(e.optimisticID),await e.refreshFromAuthority(),`refreshed`)}var ic=`session-revert-busy`,ac=e=>e?e.toLowerCase().includes(`text/html`):!1;function oc(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}function sc(e){return typeof e==`string`&&e.length>0?e:void 0}function cc(e,t,n){if(t===409)throw lc();let r=n?`: ${n}`:``,i=Error(`${e} (${t})${r}`);throw i.status=t,i}function lc(){let e=Error(ic);return e.name=`SessionRevertBusyError`,e}function uc(e){if(!e||typeof e!=`object`)return!1;let t=e;return t.name===`SessionRevertBusyError`||t.message===`session-revert-busy`}async function dc(e){try{return(await e.text()).trim()}catch{return``}}async function fc(e,t){if(ac(e.headers.get(`content-type`)))throw Error(`${t}: unexpected HTML response`);if(e.status===204)return null;let n=await e.text();if(!n.trim()){if(e.ok)return null;throw Error(`${t}: empty response`)}try{return JSON.parse(n)}catch{throw Error(`${t}: malformed JSON`)}}function pc(e){return e?{directory:e}:{}}function mc(e,t){return`/api/session/${encodeURIComponent(e)}/revert/${t}`}function hc(e){let t=oc(e)?e:null,n=t&&oc(t.data)?t.data:t;if(!n)throw Error(`session revert: expected revert payload`);let r=sc(n.messageID);if(!r)throw Error(`session revert: missing messageID`);let i=Array.isArray(n.files)?n.files.flatMap(e=>{if(!oc(e))throw Error(`session revert: invalid file diff`);let t=sc(e.file)??sc(e.path);if(!t||e.status!==`added`&&e.status!==`deleted`&&e.status!==`modified`||typeof e.additions!=`number`||typeof e.deletions!=`number`||typeof e.patch!=`string`)throw Error(`session revert: invalid file diff`);return[{file:t,status:e.status,additions:e.additions,deletions:e.deletions,patch:e.patch}]}):void 0;return{messageID:r,...sc(n.partID)?{partID:sc(n.partID)}:{},...sc(n.snapshot)?{snapshot:sc(n.snapshot)}:{},...i?{files:i}:{}}}function gc(e){return e?.files?e.files.flatMap(e=>{let t=typeof e.file==`string`&&e.file.length>0?e.file:typeof e.path==`string`&&e.path.length>0?e.path:``;return t?[t]:[]}):[]}async function _c(e){let t=await u(mc(e.sessionID,`stage`),{method:`POST`,headers:{"Content-Type":`application/json`},query:pc(e.directory),body:JSON.stringify({messageID:e.messageID,files:e.files!==!1}),signal:e.signal});return t.ok||cc(`session revert stage`,t.status,await dc(t)),hc(await fc(t,`session revert stage`))}async function vc(e){let t=await u(`/api/session/${encodeURIComponent(e.sessionID)}/revert`,{method:`DELETE`,query:pc(e.directory),signal:e.signal});t.ok||cc(`session revert clear`,t.status,await dc(t))}async function yc(e){let t=await u(mc(e.sessionID,`commit`),{method:`POST`,query:pc(e.directory),signal:e.signal});t.ok||cc(`session revert commit`,t.status,await dc(t))}var bc=e=>e?e.toLowerCase().includes(`text/html`):!1;function xc(e,t,n){let r=n?`: ${n}`:``,i=Error(`${e} (${t})${r}`);throw i.status=t,i}async function Sc(e){try{return(await e.text()).trim()}catch{return``}}function Cc(e){return e?{directory:e}:{}}function wc(e,t){return`/api/session/${encodeURIComponent(e)}/permission/${encodeURIComponent(t)}/reply`}async function Tc(e){let t=await u(wc(e.sessionID,e.requestID),{method:`POST`,headers:{"Content-Type":`application/json`},query:Cc(e.directory),body:JSON.stringify({decision:e.reply,...e.message?{message:e.message}:{}}),signal:e.signal});if(t.ok||xc(`session permission reply`,t.status,await Sc(t)),t.status!==204&&bc(t.headers.get(`content-type`)))throw Error(`session permission reply: unexpected HTML response`)}function Ec(e){let t=Error(`${e} is not available on OpenCode v2`);return t.name=`V2CapabilityUnavailableError`,t}function Dc(e){let t=typeof e.directory==`string`?e.directory:``;return{state:``,config:``,worktree:typeof e.project?.directory==`string`?e.project.directory:t,directory:t,home:``}}function Oc(e){return e.worktree||e.canonical||``}function kc(e,t){let n={};if(t.size===0)return n;for(let[r,i]of Object.entries(e))t.has(r)&&i?.type===`running`&&(n[r]={type:`busy`});return n}function Ac(e){return{id:e.id,sessionID:e.sessionID,permission:e.action,patterns:Array.isArray(e.resources)?e.resources:[],metadata:e.metadata??{},always:Array.isArray(e.save)?e.save:[],...e.source?.messageID?{tool:{messageID:e.source.messageID,callID:e.source.id??``}}:{}}}function jc(e){return!!e&&typeof e==`object`&&!Array.isArray(e)&&e.kind===`question`}function Mc(e){let t=e.metadata&&typeof e.metadata.tool==`object`&&e.metadata.tool&&!Array.isArray(e.metadata.tool)?e.metadata.tool:void 0,n=typeof e.tool?.messageID==`string`&&e.tool.messageID.length>0?e.tool.messageID:typeof t?.messageID==`string`&&t.messageID.length>0?t.messageID:void 0;if(n)return{messageID:n,callID:typeof e.tool?.id==`string`?e.tool.id:typeof t?.id==`string`?t.id:``}}function Nc(e){let t=e.fields;if(!t||t.length===0){let t=typeof e.title==`string`&&e.title.length>0?e.title:`Form`;return[{question:t,header:t,options:[]}]}return t.map(t=>{let n=typeof t.title==`string`&&t.title.length>0?t.title:t.key;return{question:typeof t.description==`string`&&t.description.length>0?t.description:typeof e.title==`string`&&e.title.length>0?e.title:n,header:n,options:(t.options??[]).map(e=>({label:e.label||e.value||``,description:typeof e.description==`string`?e.description:``})).filter(e=>e.label.length>0),...t.type===`multiselect`?{multiple:!0}:{}}})}function Pc(e){let t=e.questions&&e.questions.length>0?e.questions.map(e=>({question:e.question,header:e.header,options:e.options??[],...e.multiple?{multiple:!0}:{}})):Nc(e),n=Mc(e);return{id:e.id,sessionID:e.sessionID,questions:t,...n?{tool:n}:{}}}function Fc(e,t){let n={};for(let r=0;r<t.length;r+=1){let i=t[r],a=(e[r]??[]).map(e=>i.options?.find(t=>(t.label||t.value)===e)?.value??e),o=a[0]??``;if(i.type===`multiselect`)n[i.key]=a;else if(i.type===`number`||i.type===`integer`){let e=Number(o);if(!o.trim()||!Number.isFinite(e)||i.type===`integer`&&!Number.isInteger(e))throw Error(`Invalid numeric answer for ${i.key}`);n[i.key]=e}else if(i.type===`boolean`){if(o!==`true`&&o!==`false`)throw Error(`Invalid boolean answer for ${i.key}`);n[i.key]=o===`true`}else n[i.key]=o}return n}var Ic=3,Lc=3e4,Rc=32e3,zc=36e5,Bc=6e5,Vc=new Set([429,502,503,504]),Hc=new Map;function Uc(){let e=Date.now();for(let[t,n]of Hc)n.consecutiveErrors===0&&e-n.lastErrorAt>zc&&Hc.delete(t)}typeof setInterval<`u`&&setInterval(Uc,Bc).unref?.();function Wc(e){let t=Hc.get(e);return t||(t={consecutiveErrors:0,lastErrorAt:0,circuitOpen:!1,circuitOpenAt:0,circuitCooldownMs:Lc},Hc.set(e,t)),t}function Gc(e){if(!e)return;let t=Hc.get(e);t&&(t.consecutiveErrors=0,t.lastErrorAt=0)}function Kc(e,t){if(!e)return;let n=Wc(e);n.consecutiveErrors+=1,n.lastErrorAt=Date.now(),qc(t)&&n.consecutiveErrors>=Ic&&(n.circuitOpen=!0,n.circuitOpenAt=Date.now(),console.warn(`[provider-tracker] Circuit opened for ${e} after ${n.consecutiveErrors} consecutive errors`))}function qc(e){return e!==void 0&&Vc.has(e)}function Jc(e){let t=Hc.get(e);return t?.circuitOpen?Date.now()-t.circuitOpenAt>=t.circuitCooldownMs?(t.circuitOpen=!1,t.consecutiveErrors=0,t.circuitCooldownMs=Math.min(t.circuitCooldownMs*2,Rc*4),!1):!0:!1}function Yc(e){if(!(!e||!Jc(e)))throw Error(`Provider ${e} is temporarily unavailable after repeated errors. Please retry shortly.`)}var Xc=`/api`,Zc=1e4,Qc=4e3,$c=3e3,el=1e3,tl=12e3;function nl(e){if(e instanceof Error)return e.message;if(typeof e==`string`)return e;if(e&&typeof e==`object`&&`message`in e&&typeof e.message==`string`)return e.message;try{return JSON.stringify(e)}catch{return String(e)}}function G(e){let t=Error(`${e} is not available on OpenCode v2`);return t.name=`V2CapabilityUnavailableError`,t}function rl(e){if(e instanceof ue&&e.reason===`UnexpectedStatus`){let t=e.cause;if(t&&typeof t==`object`&&`status`in t){let e=t.status;if(typeof e==`number`)return e}}if(e&&typeof e==`object`&&`status`in e){let t=e.status;if(typeof t==`number`)return t}}function il(e){return e===404||e===405||e===501}function K(e){if(typeof e!=`string`)return;let t=e.trim();if(t)return{location:{directory:t}}}function al(e){let t=e.replace(/\/+$/,``);if(t.endsWith(`/api`)){let e=t.slice(0,-4);if(e.length>0)return e}return cl(ul()||`/`)}function ol(e){return!e||typeof e.id!=`string`||e.id.length===0||typeof e.sessionID!=`string`||e.sessionID.length===0?null:{id:e.id,sessionID:e.sessionID,permission:e.action,patterns:Array.isArray(e.resources)?e.resources:[],metadata:e.metadata??{},always:Array.isArray(e.save)?e.save:[],...e.source?{tool:{messageID:e.source.messageID,callID:e.source.id}}:{}}}var sl=/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//,cl=e=>{let t=typeof e==`string`&&e.trim().length>0?e.trim():`/api`;if(sl.test(t)||typeof window>`u`)return t;let n=window.location?.href||window.location?.origin;if(!n)return t;try{return new URL(t,n).toString()}catch(e){return console.warn(`Failed to normalize OpenCode base URL:`,e),t}},ll=()=>{try{return a().api(`/api`)}catch{return null}},ul=()=>{try{return a().api(`/`)}catch{return null}},dl=e=>{let t=typeof AbortSignal<`u`?AbortSignal:void 0;if(typeof t?.timeout==`function`)return{signal:t.timeout(e),cleanup:()=>void 0};let n=new AbortController,r=setTimeout(()=>n.abort(),e);return{signal:n.signal,cleanup:()=>clearTimeout(r)}},fl=e=>{let t=e.filter(e=>e!=null);if(t.length===0)return{signal:new AbortController().signal,cleanup:()=>void 0};if(t.length===1)return{signal:t[0],cleanup:()=>void 0};let n=typeof AbortSignal<`u`?AbortSignal:void 0;if(typeof n?.any==`function`)return{signal:n.any(t),cleanup:()=>void 0};let r=new AbortController,i=()=>r.abort();for(let e of t){if(e.aborted){r.abort();break}e.addEventListener(`abort`,i)}return{signal:r.signal,cleanup:()=>{for(let e of t)e.removeEventListener(`abort`,i)}}},pl=e=>{let t=e.session?.message,n=t&&typeof t==`object`&&typeof t.get==`function`?t.get.bind(t):null;if(!n)return e;let r=Object.assign((e,t)=>n(e,t),t);return{...e,session:{...e.session,message:r}}},ml=e=>pl(de.make({baseUrl:e.baseUrl,...e.headers?{headers:e.headers}:{},fetch:u})),hl=e=>typeof e.mime==`string`&&e.mime.startsWith(`image/`)?!0:typeof e.filename==`string`&&/\.(?:png|jpe?g|gif|webp|svg|avif|bmp|heic|heif|tiff?)$/i.test(e.filename),gl=e=>{let t=[];for(let n of e){if(!hl(n))continue;let e=typeof n.filename==`string`?n.filename.trim():``,r=typeof n.url==`string`?n.url:``;if(!e||!r.toLowerCase().startsWith(`file://`))continue;let i=ts(r).trim();i&&t.push({filename:e,path:i})}return t},_l=async(e,t)=>{let n=[],r=e.files?.length?await Promise.all(e.files.map(e=>t(e))):[],i=e.additionalParts?.length?await Promise.all(e.additionalParts.map(async e=>({text:e.text,synthetic:e.synthetic,files:e.files?.length?await Promise.all(e.files.map(e=>t(e))):[]}))):[],a=e=>Wo(e,gl([...r,...i.flatMap(e=>e.files)]));if(e.prefaceText&&e.prefaceText.trim()&&n.push({type:`text`,text:a(e.prefaceText),synthetic:e.prefaceTextSynthetic!==!1}),e.text&&e.text.trim()&&n.push({type:`text`,text:a(e.text)}),n.push(...r),i.length>0)for(let e of i){if(e.text&&e.text.trim()){let t={type:`text`,text:a(e.text)};e.synthetic&&(t.synthetic=!0),n.push(t)}n.push(...e.files)}if(e.agentMentions&&e.agentMentions.length>0)for(let t of e.agentMentions){if(!t?.name)continue;let e={type:`agent`,name:t.name};t.source&&(e.source=t.source),n.push(e)}if(n.length===0)throw Error(`Message must have at least one part (text or file)`);return n},vl=e=>e.replace(/\\/g,`/`),yl=400,bl=()=>{let e=f();return e&&e.runtime?.isDesktop&&e.files?e.files:null},q=new class{client;baseUrl;scopedClients=new Map;currentDirectory=void 0;directoryContextQueue=Promise.resolve();listDirectoryInFlight=new Map;configProvidersInFlight=new Map;listAgentsInFlight=new Map;configInFlight=new Map;configCache=new Map;configCacheGeneration=0;listDirectoryCache=new Map;healthInFlight=new Map;healthCache=new Map;healthCacheGeneration=0;sessionBoundaryQueues=new Map;constructor(e=Xc){let t=ll()||e;this.baseUrl=cl(t),this.client=ml({baseUrl:al(this.baseUrl)})}getBaseUrl(){return this.baseUrl}reconnectToRuntimeBaseUrl(){let e=cl(ll()||Xc);e!==this.baseUrl&&(this.baseUrl=e,this.client=ml({baseUrl:al(this.baseUrl)}),this.scopedClients.clear(),this.listDirectoryInFlight.clear(),this.configProvidersInFlight.clear(),this.listAgentsInFlight.clear(),this.clearConfigCache(),this.listDirectoryCache.clear(),this.clearHealthCache())}getSdkClient(){return this.client}getScopedSdkClient(e){return this.getScopedApiClient(e)}async checkLocationReleaseUse(e,t){let n=this.getScopedSdkClient(e),r={location:{directory:e}},[i,a]=await Promise.all([n.shell.list(r,{signal:t}),n.form.list(r,{signal:t})]);return i.data.some(e=>e.status===`running`)||a.data.length>0?`busy`:`free`}async releaseLocation(e,t){await this.getScopedSdkClient(e).debug.location.evict({location:{directory:e}},{signal:t})}getScopedApiClient(e){let t=(this.normalizeCandidatePath(e)??e)||``,n=this.scopedClients.get(t);if(n)return n;let r=ml({baseUrl:al(this.baseUrl)});return this.scopedClients.set(t,r),r}normalizeCandidatePath(e){if(typeof e!=`string`)return null;let t=e.trim();if(!t)return null;let n=t.replace(/\\/g,`/`).replace(/^([a-z]):/,(e,t)=>t.toUpperCase()+`:`);return(n.length>1?n.replace(/\/+$/,``):n)||null}deriveHomeDirectory(e){let t=e.match(/^([A-Za-z]:)(?:\/|$)/);if(t){let n=t[1],r=e.slice(n.length+ +(e.charAt(n.length)===`/`)).split(`/`).filter(Boolean);return r.length>=2?{homeDirectory:`${n}/${r[0]}/${r[1]}`,username:r[1]}:r.length===1?{homeDirectory:`${n}/${r[0]}`,username:r[0]}:{homeDirectory:n,username:void 0}}let n=e.startsWith(`/`),r=e.split(`/`).filter(Boolean);return r.length>=2&&(r[0]===`Users`||r[0]===`home`)?{homeDirectory:`${n?`/`:``}${r[0]}/${r[1]}`,username:r[1]}:n?r.length===0?{homeDirectory:`/`,username:void 0}:{homeDirectory:`/${r.join(`/`)}`,username:r[r.length-1]}:r.length>0?{homeDirectory:`/${r.join(`/`)}`,username:r[r.length-1]}:{homeDirectory:`/`,username:void 0}}setDirectory(e){let t=this.normalizeCandidatePath(e)??e;this.currentDirectory!==t&&R(`opencodeClient:setDirectory`,{previous:this.currentDirectory??null,next:t??null}),this.currentDirectory=t}getDirectory(){return this.currentDirectory}runSessionBoundary(e,t){let n=e.trim();if(!n)return t();let r=this.sessionBoundaryQueues.get(n)??Promise.resolve(),i,a,o=new Promise((e,t)=>{i=e,a=t}),s=()=>t().then(i,a),c=r.then(s,s);return this.sessionBoundaryQueues.set(n,c.then(()=>void 0,()=>void 0)),o}assertCapturedRuntime(e,t,n){if(s()!==e||c()!==t){let e=Error(`${n}: runtime switched`);throw e.name=`RuntimeGenerationMismatchError`,e}}async switchSessionModel(e,t,n){let r=s(),i=c(),a=`id`in t&&typeof t.id==`string`&&t.id?t.id:t.modelID,o=t.providerID;if(!e||!a||!o)throw Error(`switchSessionModel requires sessionID, model.id, and providerID`);let l=typeof t.variant==`string`&&t.variant.trim()?t.variant.trim():void 0,u={id:a,providerID:o,...l?{variant:l}:{}},d=this.normalizeCandidatePath(n)??this.currentDirectory??``,f=this.getScopedSdkClient(d);this.assertCapturedRuntime(r,i,`session model switch`),await f.session.switchModel({sessionID:e,model:u}),this.assertCapturedRuntime(r,i,`session model switch`),fo(e,d||n,{model:u})}async switchSessionAgent(e,t,n){let r=s(),i=c(),a=typeof t==`string`?t.trim():``;if(!e||!a)throw Error(`switchSessionAgent requires sessionID and agent`);let o=this.normalizeCandidatePath(n)??this.currentDirectory??``,l=this.getScopedSdkClient(o);this.assertCapturedRuntime(r,i,`session agent switch`),await l.session.switchAgent({sessionID:e,agent:a}),this.assertCapturedRuntime(r,i,`session agent switch`),fo(e,o||n,{agent:a})}async generateSessionAside(e){let t=typeof e.sessionId==`string`?e.sessionId.trim():``;if(!t)throw Error(`generateSessionAside requires sessionId`);let n=typeof e.prompt==`string`?e.prompt:``,r=this.normalizeCandidatePath(e.directory)??this.currentDirectory??``,i=await this.getScopedSdkClient(r).session.generate({sessionID:t,prompt:n},e.signal?{signal:e.signal}:void 0);if(!i||typeof i.text!=`string`)throw Error(`session.generate returned invalid payload`);return{text:i.text}}async applySendSelection(e,t,n){t.model&&await this.switchSessionModel(e,t.model,n),t.agent&&await this.switchSessionAgent(e,t.agent,n)}async withDirectory(e,t){let n=async()=>{if(e==null)return t();let n=this.currentDirectory,r=this.normalizeCandidatePath(e)??e;this.currentDirectory=r;try{return await t()}finally{this.currentDirectory===r&&(this.currentDirectory=n)}},r=this.directoryContextQueue.then(n,n);return this.directoryContextQueue=r.then(()=>void 0,()=>void 0),r}getApiClient(){return this.client}async getSystemInfo(){let e=new Set,t=t=>{let n=this.normalizeCandidatePath(t);n&&e.add(n)};try{let e=await this.client.location.get(K(this.currentDirectory));e&&(t(e.directory),t(e.project?.directory),t(e.project?.canonical))}catch{}if(!e.size)try{let e=await this.client.location.get(K(this.currentDirectory));t(e?.project?.directory),t(e?.project?.canonical)}catch{}if(!e.size)try{(await this.listSessions()).forEach(e=>t(e.directory))}catch{}if(t(this.currentDirectory),typeof window<`u`)try{t(ae(`lastDirectory`)),t(ae(`homeDirectory`))}catch{}if(!e.size&&typeof process<`u`&&typeof process.cwd==`function`&&t(process.cwd()),!e.size)return{homeDirectory:`/`,username:void 0};let[n]=Array.from(e);return this.deriveHomeDirectory(n)}async probeDirectory(e){let t=this.normalizeCandidatePath(e);if(!t)return!1;try{let e=await this.client.location.get({location:{directory:t}}),n=typeof e?.directory==`string`?e.directory:null;return!!(n&&n.trim().length>0)}catch{return!1}}async listSessions(){let e=await this.client.session.list(this.currentDirectory?{directory:this.currentDirectory}:void 0);return Array.isArray(e.data)?e.data.map(v):[]}async searchSessionsByTitle(e){let t=e.search.trim(),n=await this.client.session.list({search:t||void 0,parentID:null,limit:e.limit??30,order:`desc`},e.signal?{signal:e.signal}:void 0);if(!Array.isArray(n?.data))throw Error(`session.list search returned no data`);return n.data.map(v)}async createSession(e,t){let n=this.normalizeCandidatePath(t)??this.currentDirectory;if(e?.metadata,e?.parentID){let t=await this.client.session.fork({sessionID:e.parentID});return e.title?(await this.client.session.update({sessionID:t.id,title:e.title}),v(await this.client.session.get({sessionID:t.id}))):v(t)}return v(await this.client.session.create({...n?{location:{directory:n}}:{},title:e?.title}))}async getSession(e,t){return v(await this.client.session.get({sessionID:e}))}async deleteSession(e,t){return await this.client.session.remove({sessionID:e}),!0}async deleteSessionMessage(e,t,n){throw G(`session.deleteMessage`)}async updateSession(e,t,n){let r=t.title!==void 0,i=t.metadata!==void 0,a=t.time!==void 0&&Object.prototype.hasOwnProperty.call(t.time,`archived`);if(!r&&!i&&!a)throw G(`session.update`);let o=this.normalizeCandidatePath(n)??this.currentDirectory,l=s(),d=c(),f=()=>{if(s()!==l||c()!==d){let e=Error(`session.update discarded: runtime switched`);throw e.name=`RuntimeGenerationMismatchError`,e}},p=[],m=null,h=null,g=e=>{if(p.length===0)throw e;let t=nl(e),n=Error(`session.update partial failure after ${p.join(`,`)}: ${t}`);throw n.name=`SessionUpdatePartialFailureError`,n.cause=e,n.completed=[...p],n};try{if(r&&(await this.client.session.update({sessionID:e,title:t.title}),f(),p.push(`title`),m=v(await this.client.session.get({sessionID:e})),f()),i){let n={patch:t.metadata};o&&(n.directory=o);let r=await u(`${this.baseUrl}/openchamber/sessions/${encodeURIComponent(e)}/metadata`,{method:`PUT`,headers:{Accept:`application/json`,"Content-Type":`application/json`},body:JSON.stringify(n)});if(f(),!r.ok){let e=Error(`session.metadata update failed (${r.status})`);throw e.status=r.status,e}let i=await r.json().catch(()=>null);f(),h=typeof i==`object`&&i&&!Array.isArray(i)&&`metadata`in i&&i.metadata!==null&&typeof i.metadata==`object`&&!Array.isArray(i.metadata)?i.metadata:null,p.push(`metadata`)}if(a){let n=t.time?.archived,r;if(n==null)r=0;else if(typeof n==`number`&&Number.isFinite(n))r=n>0?Math.trunc(n):0;else throw Error(`archivedAt must be a finite number or null`);let i={archivedAt:r};o&&(i.directory=o);let a=await u(`${this.baseUrl}/openchamber/sessions/${encodeURIComponent(e)}/archive`,{method:`PUT`,headers:{Accept:`application/json`,"Content-Type":`application/json`},body:JSON.stringify(i)});if(f(),!a.ok){let e=Error(`session.archive update failed (${a.status})`);throw e.status=a.status,e}let s=await a.json().catch(()=>null);f();let c=typeof s==`object`&&s&&!Array.isArray(s)&&`session`in s?s.session:null;if(!c||typeof c!=`object`||Array.isArray(c))throw Error(`session.archive update failed: empty response`);m=v(c),p.push(`archive`)}return m||(m=await this.getSession(e,n),f()),h&&!a?{...m,metadata:h}:m}catch(e){return g(e)}}async getSessionMessages(e,t){return(await Qe({sessionID:e,directory:this.currentDirectory??``,...typeof t==`number`?{limit:t}:{}})).records}async getSessionDiff(e,t){let n=this.normalizeCandidatePath(e.directory)??this.currentDirectory,r=typeof e.messageID==`string`&&e.messageID.trim().length>0?e.messageID.trim():void 0,i=new URLSearchParams;n&&i.set(`directory`,n),r&&i.set(`messageID`,r);let a=i.toString(),o=await u(`${this.baseUrl}/session/${encodeURIComponent(e.sessionID)}/diff${a?`?${a}`:``}`,{method:`GET`,headers:{Accept:`application/json`},signal:t?.signal});if(!o.ok){let e=Error(`session.diff failed (${o.status})`);throw e.status=o.status,e}let s=await o.json().catch(()=>null),c=typeof s==`object`&&s&&Array.isArray(s.data)?s.data:null;if(!c)throw Error(`session.diff failed: empty response`);return c}async getSessionTodos(e){throw G(`session.todo`)}shouldNormalizeToTextPlain(e){if(!e)return!1;let t=e.toLowerCase();return t.startsWith(`text/`)&&t!==`text/plain`?!0:[`application/json`,`application/xml`,`application/javascript`,`application/typescript`,`application/x-yaml`,`application/yaml`,`application/toml`,`application/x-sh`,`application/x-shellscript`,`application/octet-stream`,`image/svg+xml`].includes(t)}isHeicMime(e){if(!e)return!1;let t=e.toLowerCase();return t===`image/heic`||t===`image/heif`}async convertHeicToJpeg(t){try{let n=os(t.url,t.mime);if(!n)return t;let r=await yo(n)??await(await he(async()=>{let{default:t}=await import(`./vendor-heic2any-CUPf3g2A.js`).then(t=>e(t.t(),1));return{default:t}},__vite__mapDeps([0,1]))).default({blob:n,toType:`image/jpeg`,quality:.9}),i=await new Promise((e,t)=>{let n=new FileReader;n.onload=()=>e(n.result),n.onerror=t,n.readAsDataURL(r)}),a=t.filename;return a&&=a.replace(/\.heic$/i,`.jpg`).replace(/\.heif$/i,`.jpg`),{mime:`image/jpeg`,filename:a,url:i}}catch(e){return console.warn(`Failed to convert HEIC to JPEG:`,e),t}}async normalizeFilePart(e){if(this.isHeicMime(e.mime))return this.convertHeicToJpeg(e);if(!this.shouldNormalizeToTextPlain(e.mime))return e;let t=e.url;if(e.url.startsWith(`data:`)){let n=e.url.indexOf(`,`);if(n!==-1){let r=e.url.substring(5,n),i=e.url.substring(n);t=`data:${r.replace(/^[^;,]+/,`text/plain`)}${i}`}}return{mime:`text/plain`,filename:e.filename,url:t}}async toNormalizedFilePartInput(e,t){let n=t?.generation??s(),r=t?.runtimeKey??c(),i=await this.normalizeFilePart(e);this.assertCapturedRuntime(n,r,`prompt attachment normalize`);let a=i.url;if(ss(a)){let e=os(a,i.mime);if(!e)throw Error(`Failed to materialize attachment bytes for ${i.filename??`file`}`);this.assertCapturedRuntime(n,r,`prompt attachment upload`);let t=await cs({body:e,mime:i.mime,filename:i.filename});this.assertCapturedRuntime(n,r,`prompt attachment upload`),a=t.url}return{...e.id?{id:e.id}:{},type:`file`,mime:i.mime,filename:i.filename,url:a}}async buildMessageParts(e,t){let n=t?.generation??s(),r=t?.runtimeKey??c();return _l(e,e=>this.toNormalizedFilePartInput(e,{generation:n,runtimeKey:r}))}async sendMessage(e){let t=s(),n=c(),r=()=>{this.assertCapturedRuntime(t,n,`session prompt discarded`)};r();let i=e.messageId??ne(`msg`),a=this.normalizeCandidatePath(e.directory??null)??this.currentDirectory,o=Us(a??``),l=await this.buildMessageParts({text:e.text,prefaceText:e.prefaceText,prefaceTextSynthetic:e.prefaceTextSynthetic,files:e.files,additionalParts:e.additionalParts,agentMentions:e.agentMentions},{generation:t,runtimeKey:n});r(),W(o)||this.assertCapturedRuntime(t,n,`session prompt discarded`),e.format&&(e.id,e.providerID,e.modelID,e.agent,e.variant,this.baseUrl,e.format.type),Yc(e.providerID);let u=l.flatMap(e=>e.type===`text`&&typeof e.text==`string`?[e.text]:[]).join(`
5
5
  `)||e.text,d=l.flatMap(e=>e.type!==`file`||typeof e.url!=`string`?[]:[{uri:e.url,...e.filename?{name:e.filename}:{}}]),f=l.flatMap(e=>e.type===`agent`&&typeof e.name==`string`?[{name:e.name}]:[]),p=xe(l.flatMap(e=>e.type===`text`&&!e.synthetic?[e.text]:[]).join(`