@openchambery/web 2.0.0-beta.4 → 2.0.0-beta.5

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 (166) hide show
  1. package/dist/assets/{AgentAvatar-Q1SmFRx2.js → AgentAvatar-BBmQXYDq.js} +1 -1
  2. package/dist/assets/{AssistantView-CwXkiCAd.js → AssistantView-BG8hK4y9.js} +3 -3
  3. package/dist/assets/{DiagramView-BW92schO.js → DiagramView-CN0qWNU5.js} +1 -1
  4. package/dist/assets/{FadeInOnReveal-BZmwl-zE.js → FadeInOnReveal-w_BQ7K7K.js} +1 -1
  5. package/dist/assets/Icon-B9kZgYZn.js +1 -0
  6. package/dist/assets/{MarkdownRenderer-Bv05iDZZ.js → MarkdownRenderer-Ds61--LT.js} +2 -2
  7. package/dist/assets/{MarkdownRendererImpl-C81xqYib.js → MarkdownRendererImpl-DOMmiOH0.js} +1 -1
  8. package/dist/assets/{MarkstreamRendererImpl-CXUCQuKJ.js → MarkstreamRendererImpl-F7MGg5ER.js} +1 -1
  9. package/dist/assets/{MobileDetailNavigation-BMgIu7zc.js → MobileDetailNavigation-DcmVOjkw.js} +1 -1
  10. package/dist/assets/{MobileShareBridge-BOXGNHmC.js → MobileShareBridge-C1Fc4ErB.js} +2 -2
  11. package/dist/assets/MobileSurface-BA7eS5Yd.js +2 -0
  12. package/dist/assets/{MultiRunWindow-B5At2Z95.js → MultiRunWindow-BoTnH6Yp.js} +1 -1
  13. package/dist/assets/{OnboardingScreen-bsPLgz4r.js → OnboardingScreen-BxItVnnO.js} +1 -1
  14. package/dist/assets/{OverlayScrollbar-4wp4migh.js → OverlayScrollbar-B4e0QD05.js} +1 -1
  15. package/dist/assets/SettingsView-CjesWNLw.js +25 -0
  16. package/dist/assets/{SettingsWindow-CMtX2bMl.js → SettingsWindow-CReMbg-w.js} +1 -1
  17. package/dist/assets/TerminalView-C64-QYOG.js +8 -0
  18. package/dist/assets/{ToolOutputDialog-uH1ZZDSS.js → ToolOutputDialog-CJu8DNrt.js} +1 -1
  19. package/dist/assets/{appThemeRegistry-DK7q2juD.js → appThemeRegistry-CF4lIxNt.js} +1 -1
  20. package/dist/assets/{button-CcNJUxUd.js → button-CwXyux0a.js} +1 -1
  21. package/dist/assets/collapsible-BZ6_cYJd.js +1 -0
  22. package/dist/assets/context-menu-DHrRifPE.js +1 -0
  23. package/dist/assets/{desktopHosts-C6HrP0jq.js → desktopHosts-JGFqhlaM.js} +1 -1
  24. package/dist/assets/{desktopRelayRestore-DdVBp45U.js → desktopRelayRestore-CHEwrI93.js} +1 -1
  25. package/dist/assets/{diagram-CxTs9hCQ.js → diagram-BwnPNKWt.js} +1 -1
  26. package/dist/assets/{dialog-KMVL9QKF.js → dialog-Dp0lQv5K.js} +1 -1
  27. package/dist/assets/es-DicJ8lKD.js +15 -0
  28. package/dist/assets/{fileMentionTouchSelection-7RIwlpkB.js → fileMentionTouchSelection-DPZRxNa2.js} +3 -4
  29. package/dist/assets/{fileQueries-CjdBRy8y.js → fileQueries-DN6gbLhM.js} +1 -1
  30. package/dist/assets/fr-lhgVcBW_.js +13 -0
  31. package/dist/assets/{gitApi-yuWg9BN4.js → gitApi-D8R7ic-T.js} +1 -1
  32. package/dist/assets/{imageSource-9vQBq3zp.js → imageSource-BMztRu0c.js} +1 -1
  33. package/dist/assets/{input-CrIvk3HZ.js → input-Biw8aNzR.js} +1 -1
  34. package/dist/assets/insertionBoundaries-DdwCD4S2.js +1 -0
  35. package/dist/assets/ja-B9EZwOcw.js +15 -0
  36. package/dist/assets/ko-Dxk-uJRb.js +15 -0
  37. package/dist/assets/main-BhlwwJ2c.js +169 -0
  38. package/dist/assets/main-D2BzpnUt.css +1 -0
  39. package/dist/assets/main-DSPCkT74.js +2 -0
  40. package/dist/assets/{markdownHeightCache-BmXVY_gc.js → markdownHeightCache-BOOrGCuG.js} +1 -1
  41. package/dist/assets/markdownTheme-DM5h1i18.js +1 -0
  42. package/dist/assets/{mcpQueries-C7jknHV8.js → mcpQueries-CE9tk-Jz.js} +1 -1
  43. package/dist/assets/miniChat-Ckk9ABql.js +2 -0
  44. package/dist/assets/mobile-cLMRZqI9.js +2 -0
  45. package/dist/assets/multirun-DVnFRb1V.js +4 -0
  46. package/dist/assets/persistence-D0y7226-.js +3 -0
  47. package/dist/assets/pl-CFhwWLJj.js +15 -0
  48. package/dist/assets/platform-D_c-T5nO.js +6 -0
  49. package/dist/assets/projectMeta-CSQgHequ.js +3 -0
  50. package/dist/assets/pt-BR-Ba6GfZ6J.js +15 -0
  51. package/dist/assets/renderElectronMiniChatApp-gGFkwoL_.js +2 -0
  52. package/dist/assets/{renderMobileApp-CGMMqbsO.js → renderMobileApp-B2w50kAc.js} +7 -7
  53. package/dist/assets/{runtimeConfig-BEANkvOd.js → runtimeConfig-BHH1hJDd.js} +1 -1
  54. package/dist/assets/runtimeEndpointReset-5uJ4sJk0.js +149 -0
  55. package/dist/assets/{sessionChangeSummary-qOLrP9fw.js → sessionChangeSummary-spf_atO8.js} +2 -2
  56. package/dist/assets/{sessionLookup-34XFmP9C.js → sessionLookup-BGjjwiCq.js} +1 -1
  57. package/dist/assets/{sortable-tabs-strip-DyEV0Heg.js → sortable-tabs-strip-CTY_wG46.js} +1 -1
  58. package/dist/assets/src-BjEyU6if.css +2 -0
  59. package/dist/assets/store-DmowK-GO.js +15 -0
  60. package/dist/assets/{terminalApi-CXaBEoa_.js → terminalApi-Dhqqp4xi.js} +1 -1
  61. package/dist/assets/{textarea-BBOlRI9O.js → textarea-QxsmcBGj.js} +1 -1
  62. package/dist/assets/{tooltip-CPI4fr1a.js → tooltip-CpMLl5_k.js} +1 -1
  63. package/dist/assets/uk-ChchBzy6.js +15 -0
  64. package/dist/assets/{url-DRDQXjyX.js → url-CGbJbiJq.js} +1 -1
  65. package/dist/assets/{useAppFontEffects-CiDe42I5.js → useAppFontEffects-B1h7ab_J.js} +56 -51
  66. package/dist/assets/{useAssistantUIStore-asNG6K7n.js → useAssistantUIStore-Bz4tRflF.js} +1 -1
  67. package/dist/assets/useDesktopWindowControlsLayout-Cxsx84NO.js +1 -0
  68. package/dist/assets/{useEffectiveDirectory-C_CouL5v.js → useEffectiveDirectory-DsqhqsJR.js} +1 -1
  69. package/dist/assets/{useFontPreferences-B0oUZAiB.js → useFontPreferences-Xw1vSkmC.js} +1 -1
  70. package/dist/assets/useMobileNavigationStore-B1axS4g-.js +414 -0
  71. package/dist/assets/{useRuntimeAPIs-DwLtO0c_.js → useRuntimeAPIs-DSLXJybW.js} +1 -1
  72. package/dist/assets/useSessionAutoCleanup-B5FTG_qf.js +2 -0
  73. package/dist/assets/{useThemeSystem-BlNUWH47.js → useThemeSystem-DMzWVJaW.js} +1 -1
  74. package/dist/assets/useUIStore-syVmbuDA.js +1 -0
  75. package/dist/assets/{useWorkerHighlightedLines-CPNYz6Wf.js → useWorkerHighlightedLines-DC_Bc-RV.js} +1 -1
  76. package/dist/assets/{vendor-base-ui-CDjyofeD.js → vendor-base-ui-CnHfUmDN.js} +1 -1
  77. package/dist/assets/{vendor-cmdk-BFH0UpXX.js → vendor-cmdk-CeAGfrLo.js} +1 -1
  78. package/dist/assets/{vendor-dnd-kit-accessibility-BrR3AKvM.js → vendor-dnd-kit-accessibility-BY5LhhUB.js} +1 -1
  79. package/dist/assets/{vendor-dnd-kit-core-CNfdvk6H.js → vendor-dnd-kit-core-CvWxUPdb.js} +1 -1
  80. package/dist/assets/{vendor-dnd-kit-sortable-DQUaTeGj.js → vendor-dnd-kit-sortable-hHdP9lLb.js} +1 -1
  81. package/dist/assets/{vendor-framer-motion-4dogsUk3.js → vendor-framer-motion-DFy_BSVd.js} +1 -1
  82. package/dist/assets/{vendor-legendapp-list-BU7MdPZR.js → vendor-legendapp-list-WE32lwNk.js} +1 -1
  83. package/dist/assets/{vendor-markstream-react-qHC2FykU.js → vendor-markstream-react-DX55XLGO.js} +3 -3
  84. package/dist/assets/vendor-opencode-client-C12gfjag.js +12 -0
  85. package/dist/assets/{vendor-pierre-diffs-CUfqC003.js → vendor-pierre-diffs-DX7XTPG3.js} +1 -1
  86. package/dist/assets/{vendor-react-C94A0AHl.js → vendor-react-DLPElpoQ.js} +1 -1
  87. package/dist/assets/{vendor-react-drawio-FVlWqKVE.js → vendor-react-drawio-ECtEwvbc.js} +1 -1
  88. package/dist/assets/{vendor-reactuses-core-C2A3EjUi.js → vendor-reactuses-core-B8parU1Y.js} +1 -1
  89. package/dist/assets/{vendor-sonner-DNqHmUQs.js → vendor-sonner-DVzioF3d.js} +1 -1
  90. package/dist/assets/{vendor-stream-diffs-CwbKsmlv.js → vendor-stream-diffs-DWy3xSmp.js} +2 -2
  91. package/dist/assets/{vendor-tanstack-react-query-D0iFK57C.js → vendor-tanstack-react-query-D7pys_c9.js} +1 -1
  92. package/dist/assets/{vendor-tanstack-react-virtual-B2kV6cnT.js → vendor-tanstack-react-virtual-tlDgH6PG.js} +1 -1
  93. package/dist/assets/{vendor-zustand-BqLKf6ZY.js → vendor-zustand-B4dlGEM2.js} +1 -1
  94. package/dist/assets/zh-CN-Z_bkUQk5.js +15 -0
  95. package/dist/assets/zh-TW-CZeTm7kd.js +15 -0
  96. package/dist/index.html +13 -13
  97. package/dist/mini-chat.html +13 -13
  98. package/dist/mobile.html +13 -13
  99. package/package.json +3 -2
  100. package/server/index.js +38 -7
  101. package/server/lib/browser-provider/DOCUMENTATION.md +141 -0
  102. package/server/lib/browser-provider/contract.js +312 -0
  103. package/server/lib/browser-provider/host.js +421 -0
  104. package/server/lib/browser-provider/host.test.js +304 -0
  105. package/server/lib/browser-provider/routes.js +122 -0
  106. package/server/lib/browser-provider/routes.test.js +120 -0
  107. package/server/lib/browser-provider/selection-store.js +43 -0
  108. package/server/lib/browser-provider/selection-store.test.js +35 -0
  109. package/server/lib/notifications/DOCUMENTATION.md +3 -1
  110. package/server/lib/notifications/runtime.js +110 -26
  111. package/server/lib/notifications/runtime.test.js +92 -0
  112. package/server/lib/notifications/template-runtime.js +130 -38
  113. package/server/lib/notifications/template-runtime.test.js +96 -0
  114. package/server/lib/opencode/DOCUMENTATION.md +4 -0
  115. package/server/lib/opencode/ensure-cli.d.ts +8 -0
  116. package/server/lib/opencode/feature-routes-runtime.js +10 -0
  117. package/server/lib/opencode/feature-routes-runtime.test.js +7 -0
  118. package/server/lib/opencode/proxy.js +3 -1
  119. package/server/lib/opencode/proxy.test.js +3 -3
  120. package/server/lib/opencode/routes.js +30 -0
  121. package/server/lib/opencode/upgrade-screen.d.ts +30 -0
  122. package/server/lib/opencode/upgrade-screen.js +299 -0
  123. package/server/lib/opencode/upgrade-screen.test.js +196 -0
  124. package/server/lib/session-metadata/DOCUMENTATION.md +27 -17
  125. package/server/lib/session-metadata/opencode-session-record.d.ts +57 -0
  126. package/server/lib/session-metadata/opencode-session-record.js +316 -0
  127. package/server/lib/session-metadata/opencode-session-record.test.js +242 -0
  128. package/server/lib/session-metadata/routes.js +5 -1
  129. package/server/lib/session-metadata/session-archive.js +1 -1
  130. package/server/lib/session-metadata/session-metadata-store.d.ts +2 -0
  131. package/server/lib/session-metadata/session-metadata-store.js +63 -16
  132. package/server/lib/session-metadata/session-projection.js +26 -2
  133. package/dist/assets/Icon-AQPvxMiU.js +0 -1
  134. package/dist/assets/MobileSurface-xuc_z0_G.js +0 -2
  135. package/dist/assets/SettingsView-CJ6tcH5_.js +0 -25
  136. package/dist/assets/TerminalView-Dvr-ysTS.js +0 -8
  137. package/dist/assets/collapsible-ZmZ6rLWs.js +0 -3
  138. package/dist/assets/context-menu-B2LXJgXL.js +0 -1
  139. package/dist/assets/es-CN3E_zXj.js +0 -15
  140. package/dist/assets/fr-9zZvQZD2.js +0 -13
  141. package/dist/assets/insertionBoundaries-BiUCSkx-.js +0 -1
  142. package/dist/assets/ja-Dnjk_82N.js +0 -15
  143. package/dist/assets/ko-BxCEE99C.js +0 -15
  144. package/dist/assets/main-C9mIBo77.js +0 -2
  145. package/dist/assets/main-DiL6w6KF.js +0 -169
  146. package/dist/assets/main-qSeeJRW1.css +0 -1
  147. package/dist/assets/markdownTheme-CKac3wKC.js +0 -1
  148. package/dist/assets/miniChat-CwtUaElU.js +0 -2
  149. package/dist/assets/mobile-DB-6--ws.js +0 -2
  150. package/dist/assets/multirun-TAsxFI8e.js +0 -4
  151. package/dist/assets/persistence-56kq8Z4V.js +0 -3
  152. package/dist/assets/pl-CNNsWnPM.js +0 -15
  153. package/dist/assets/platform-C13fMVEs.js +0 -6
  154. package/dist/assets/pt-BR-BZB2DJMp.js +0 -15
  155. package/dist/assets/renderElectronMiniChatApp-CGj0MNRU.js +0 -2
  156. package/dist/assets/runtimeEndpointReset-A_ZBUJFS.js +0 -147
  157. package/dist/assets/src-ubCWXZhR.css +0 -2
  158. package/dist/assets/store-DLCiZaA6.js +0 -15
  159. package/dist/assets/uk-rwQrxeYM.js +0 -15
  160. package/dist/assets/useDesktopWindowControlsLayout-BlizAlOt.js +0 -1
  161. package/dist/assets/useMobileNavigationStore-DfPClaW-.js +0 -414
  162. package/dist/assets/useSessionAutoCleanup-DtrfbxAp.js +0 -2
  163. package/dist/assets/useUIStore-CQYKJnrg.js +0 -1
  164. package/dist/assets/vendor-opencode-client-BOe2qpQb.js +0 -12
  165. package/dist/assets/zh-CN-BvmBDnkD.js +0 -15
  166. package/dist/assets/zh-TW-9wcHTX0y.js +0 -15
@@ -1,6 +0,0 @@
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-LvWDU-SL.js";import{n as u}from"./runtime-fetch-Fs9ZV2V8.js";import{Cn as d,It as f,Pt as p,Qt as m,Vt as h,ct as g,ht as ee,it as te,lt as ne,r as re,tn as ie}from"./persistence-56kq8Z4V.js";import{a as ae,r as oe}from"./vendor-zustand-BqLKf6ZY.js";import{rt as se}from"./vendor-base-ui-CDjyofeD.js";import{n as ce,r as le,t as ue}from"./vendor-opencode-client-BOe2qpQb.js";import{b as de}from"./useUIStore-CQYKJnrg.js";import{n as fe}from"./vendor-react-C94A0AHl.js";import{i as pe}from"./vendor-pathe-vBmvQE8f.js";import{o as me}from"./vendor-aparajita-capacitor-secure-storage-CjQdwfjS.js";var he=(e,t)=>e!==t,_=e=>{if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0};function ge(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 _e(e){return e?_(e.displayName)??_(e.name)??_(e.id)??``:``}function ve(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 ye(e,t){let n=_(t);if(!n)return;let r=ve(e,n);return r?_(r.name)??_(r.id)??n:n}function be(e){return Array.from(new Set(Array.from(e.matchAll(/\[skill:([A-Za-z0-9][A-Za-z0-9_-]*)\]/g),e=>e[1])),e=>({id:e,name:e}))}function v(e){return{...e,directory:e.location?.directory}}function xe(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(se(),1),Se=fe();function b(e,t){return e.findIndex(e=>e.id===t)}function Ce(e,t){if(!t)return e.slice();let n=b(e,t);return n<0?e.slice():e.slice(0,n)}function we(e,t,n){let r=b(e,n);return r<0?!1:b(e,t)>=r}function Te(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 Ee(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 De=`openchamber:sync:debug`,Oe;function ke(){if(Oe!==void 0)return Oe;try{Oe=typeof localStorage<`u`&&localStorage.getItem(De)===`1`}catch{Oe=!1}return Oe}function x(e,...t){ke()&&(`${e}`,[...t])}var Ae={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)}},je=`desc`;function Me(e){return!S(e)||e.type!==`compaction`?!1:e.status===`running`||e.status===`completed`||e.status===`failed`}function Ne(e){if(e)return e.find(Me)}var Pe=e=>e?e.toLowerCase().includes(`application/json`):!1,Fe=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 Ie(e){if(!S(e))return null;let t=C(e.id);return t?{...e,id:t}:null}function Le(e,t,n){return`${e}:${t}:${n}`}function Re(e,t,n,r,i=`text`,a){return i===`reasoning`?{id:Le(t,i,n),sessionID:e,messageID:t,type:`reasoning`,text:r}:{id:Le(t,i,n),sessionID:e,messageID:t,type:`text`,text:r,...a?.synthetic===!0?{synthetic:!0}:{}}}function ze(e){return e?e.nativeType===`synthetic`||e.type===`synthetic`:!1}function Be(e,t){return!e?.id||ze(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 Ve(e){if(typeof e==`string`&&e.length!==0)return e.replace(/^evt_/,`msg_`)}function He(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
- `):typeof e.output==`string`?e.output:void 0}function Ue(e){return e===`patch`?`apply_patch`:e}function We(e,t,n){let r=C(n.id)??`${t}:tool`,i=Ue(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:He(a),error:S(a.error)?C(a.error.message):C(a.error),metadata:S(a.metadata)?a.metadata:{}}}}function Ge(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 Ke(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 qe(e,t,n){return{id:t.id,sessionID:e,role:n,time:Ge(t.time)}}function Je(e,t){let n=Ie(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=qe(e,n,`user`),i=[],a=C(n.text);a&&i.push(Re(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=qe(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=Ke(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(Re(e,r,l++,t.text));continue}if(n===`reasoning`&&typeof t.text==`string`){s.push(Re(e,r,u++,t.text,`reasoning`));continue}n===`tool`&&s.push(We(e,r,t))}return{info:t,parts:s}}if(i===`shell`){let t=qe(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:Le(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={...qe(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?[Re(e,r,0,s,`text`,{synthetic:!0})]:[{id:Le(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={...qe(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:qe(e,n,`assistant`),parts:[Re(e,r,0,C(n.text)??`[${i}]`)]}}function Ye(e,t,n=je,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=Je(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=>Be(e.info,e.parts)).length;return{records:i,cursor:s?void 0:o,complete:s,turnCount:c}}async function Xe(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(Fe(o))throw Error(`session projection: unexpected HTML response`);Pe(o);let s;try{s=await a.json()}catch{throw Error(`session projection: malformed JSON`)}return Ye(s,e.sessionID,n,t)}function Ze(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=Je(t,r);e&&n.push(e)}return{records:n,cursor:void 0,complete:!1,turnCount:n.filter(e=>Be(e.info,e.parts)).length}}async function Qe(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(Fe(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 Ze(r,e.sessionID)}function $e(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 et=e=>e?e.toLowerCase().includes(`application/json`):!1,tt=e=>e?e.toLowerCase().includes(`text/html`):!1;function nt(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}function rt(e){return typeof e==`string`&&e.length>0?e:void 0}function it(e){return typeof e==`number`&&Number.isFinite(e)?e:void 0}function at(e,t,n){let r=n?`: ${n}`:``,i=Error(`${e} (${t})${r}`);throw i.status=t,i}async function ot(e){try{return(await e.text()).trim()}catch{return``}}async function st(e,t){let n=e.headers.get(`content-type`);if(tt(n))throw Error(`${t}: unexpected HTML response`);let r;try{r=await e.json()}catch{throw Error(`${t}: malformed JSON`)}if(!et(n)&&r==null)throw Error(`${t}: empty response`);return r}var ct=ae((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 w(e,t){ct.getState().setRunning(e,t)}function lt(e){return ct.getState().isRunning(e)}function ut(e){return!lt(e.sessionID)}function dt(e){let t=nt(e)?e:null,n=t&&nt(t.data)?t.data:t;if(!n)throw Error(`session compact: expected inbox item`);let r=rt(n.id),i=rt(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:it(n.timeCreated)}}function ft(e){let t=nt(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)!nt(e)||e.type!==`compaction`||r.push(dt(e));return r}function pt(e,t){t.some(e=>e.type===`compaction`)&&w(e,!0)}function mt(e,t){t.some(e=>(e.parts??[]).find(Me)?.status===`running`)&&w(e,!0)}async function ht(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||at(`session compact`,r.status,await ot(r));let i=dt(await st(r,`session compact`));return w(i.sessionID,!0),i}var gt=`compaction:`;function _t(e,t){return t&&t.length>0?t:`${gt}${e}`}function vt(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=>Me(e)&&e.status===`running`))return r.id}}function yt(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(Me),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 bt(e,t){let n=String(t.type??``);if(!n.startsWith(`session.compaction.`))return!1;let r=nt(t.properties)?t.properties:null;if(!r)return!1;let i=rt(r.sessionID);if(!i)return!1;let a=rt(r.inputID),o=vt(e,i),s=n===`session.compaction.started`?a??Ve(t.id)??_t(i):a??o??Ve(t.id)??_t(i);if(n===`session.compaction.started`)return!e.part[s]?.some(Me)&&(yt(e,i,s,e=>({...e,status:`running`,reason:r.reason===`auto`?`auto`:`manual`,...typeof r.recent==`string`?{recent:r.recent}:{}}),it(r.eventCreated)),w(i,!0),!0);if(n===`session.compaction.delta`){if(!o)return!1;let t=typeof r.text==`string`?r.text:``;return t?(yt(e,i,s,e=>({...e,status:`running`,summary:(e.summary??``)+t})),w(i,!0),!0):!1}if(n===`session.compaction.ended`)return yt(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}:{}}),it(r.eventCreated)),w(i,!1),!0;if(n===`session.compaction.failed`){let t=nt(r.error)?r.error:{};return yt(e,i,s,e=>({...e,status:`failed`,reason:r.reason===`auto`?`auto`:`manual`,error:{type:rt(t.type)??`error`,message:rt(t.message)??``,...typeof t.status==`number`?{status:t.status}:{}}}),it(r.eventCreated)),w(i,!1),!0}return!1}var xt=new Set([`patch`,`step-start`,`step-finish`]),St=[`text`,`output`],Ct=new Set([`completed`,`error`,`aborted`,`failed`,`timeout`,`cancelled`]);function wt(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 Tt(e,t){let n=[];for(let r of St){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 Et(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 Dt(e){if(e.type!==`tool`)return;let t=e.state?.status;return typeof t==`string`?t:void 0}function Ot(e,t){if(e.type!==`tool`||t.type!==`tool`)return!1;let n=Dt(e),r=Dt(t);if(n&&Ct.has(n)&&(!r||!Ct.has(r)))return!0;let i=Et(e),a=Et(t);return typeof i==`number`&&typeof a!=`number`}function kt(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 At=[`agent`,`mode`,`providerID`,`modelID`,`variant`],jt=e=>typeof e==`object`&&!!e&&!Array.isArray(e),Mt=[`input`,`output`,`reasoning`];function Nt(e){if(!e||typeof e!=`object`)return!1;let t=e;return Mt.some(e=>typeof t[e]==`number`&&Number.isFinite(t[e])&&t[e]>0)}function Pt(e){if(!e||typeof e!=`object`)return!1;let t=e;return Mt.every(e=>typeof t[e]!=`number`||!Number.isFinite(t[e])||t[e]<=0)}function Ft(e){if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0}function It(e,t){let n={...e,...t},r=e,i=t,a=n;for(let e of At){let t=Ft(i[e]),n=Ft(r[e]);t?a[e]=t:n?a[e]=n:delete a[e]}let o=i.model,s=r.model;return jt(o)?a.model=o:jt(s)?a.model=s:delete a.model,(e.time||t.time)&&(n.time={...e.time,...t.time}),Nt(r.tokens)&&Pt(i.tokens)&&(a.tokens=r.tokens),n}function Lt(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(!kt(e[n],t[n]))return!1;return!0}function Rt(e,t,n){if(!t)return!1;let r=e.message[t];return r?b(r,n)>=0:!1}function zt(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=It(t,n);if(Lt(t,r))return Ae.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(xt.has(r.type))return Ae.reducer.partSkipped(r.messageID,r.id,r.type),!1;let i=r.messageID,a=n.sessionID??r.sessionID;if(!i)return!1;let o=!Rt(e,a,i),s=e.part[i];if(!s)return Ae.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(Ot(e,r))return!1;let t=Tt(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 Ae.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 Ae.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?wt(o,n.delta):(o??``)+n.delta,__dedupeNextDeltaFields:s.filter(e=>e!==n.field)},e.part[n.messageID]=l,!0}default:return en(e,t)}}function T(e){return!e||typeof e!=`object`||Array.isArray(e)?null:e}function E(e){return typeof e==`string`&&e.length>0?e:void 0}function Bt(e,t,n){return`${e}:${t}:${n}`}function Vt(e){return typeof e?.created==`number`&&Number.isFinite(e.created)&&e.created>0?e.created:Date.now()}function Ht(e){let t=e.eventCreated;return typeof t==`number`&&Number.isFinite(t)&&t>0?t:void 0}function Ut(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),!Ft(n.agent)&&r?.agent&&(c.agent=r.agent,s=!0),!Ft(n.modelID)&&r?.modelID&&(c.modelID=r.modelID,s=!0),!Ft(n.providerID)&&r?.providerID&&(c.providerID=r.providerID,s=!0),!Ft(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:Vt(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 Wt(e){let t=E(e.agent),n=T(e.model),r=n?E(n.id)??E(n.modelID):void 0,i=n?E(n.providerID):void 0,a=n?E(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 Gt(e){let t=T(e);if(!t)return;let n=T(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 Kt(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=It(o,r);if(Lt(o,s)&&o.time?.created===s.time?.created)return!1;let c=[...i];return c[a]=s,e.message[t]=c,!0}function qt(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 Jt(e,t,n,r,i){let a=Ht(i);if(t===`session.step.started`)return Ut(e,n,r,{created:a,...Wt(i)});if(t===`session.step.streamed`)return a?(Ut(e,n,r,{created:a}),Kt(e,n,r,{id:r,sessionID:n,role:`assistant`,time:{created:qt(e,n,r)??a,streamed:a}})):!1;if(t===`session.step.ended`){Ut(e,n,r,{created:a});let t=E(i.finish),o=Gt(i.tokens),s=typeof i.cost==`number`&&Number.isFinite(i.cost)?i.cost:void 0;return Kt(e,n,r,{id:r,sessionID:n,role:`assistant`,time:{created:qt(e,n,r)??Vt({created:a}),...a?{completed:a}:{}},...t?{finish:t}:{},...o?{tokens:o}:{},...s===void 0?{}:{cost:s}})}if(t===`session.step.failed`){Ut(e,n,r,{created:a});let t=T(i.error),o=Gt(i.tokens),s=typeof i.cost==`number`&&Number.isFinite(i.cost)?i.cost:void 0;return Kt(e,n,r,{id:r,sessionID:n,role:`assistant`,time:{created:qt(e,n,r)??Vt({created:a}),...a?{completed:a}:{}},finish:`error`,...t?{error:{type:E(t.type)??`error`,message:E(t.message)??``,...typeof t.status==`number`?{status:t.status}:{}}}:E(i.error)?{error:{type:`error`,message:E(i.error)}}:{},...o?{tokens:o}:{},...s===void 0?{}:{cost:s}})}return!1}function Yt(e){if(Array.isArray(e))return e.flatMap(e=>{let t=T(e);return t&&t.type===`text`&&typeof t.text==`string`?[t.text]:[]}).join(`
4
- `)}function Xt(e,t,n,r){let i=Bt(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 Zt(e,t,n,r,i,a,o){Ut(e,t,n,o);let s=e.part[n]?[...e.part[n]]:[],c=Xt(s,r,n,i);if(c<0){let e={id:Bt(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 Qt(e,t){return e.findIndex(e=>e.id===t||e.callID===t||e.type===`tool`&&e.id===t)}function D(e,t,n,r,i,a,o){Ut(e,t,n,o);let s=e.part[n]?[...e.part[n]]:[],c=Qt(s,r);return c<0&&(s.push({id:r,sessionID:t,messageID:n,type:`tool`,tool:Ue(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 $t(e,t,n){return e.message[t]?.find(t=>e.part[t.id]?.some(e=>e.type===`text`&&e.shellAction?.shellID===n))?.id}function en(e,t){let n=String(t.type);if(n.startsWith(`session.compaction.`))return bt(e,t);let r=T(t.properties);if(!r)return!1;let i=E(r.sessionID);if(i&&(n===`session.shell.started`||n===`session.shell.ended`)){let a=T(r.shell),o=E(a?.id);if(!a||!o)return!1;let s=e.message[i]??[],c=$t(e,i,o),l=c?s.find(e=>e.id===c):void 0,u=l?.id??(n===`session.shell.started`?Ve(t.id):void 0);if(!u||n===`session.shell.started`&&l)return!1;let d=Je(i,{id:u,type:`shell`,shellID:o,command:a.command,status:a.status,exit:a.exit,output:r.output,time:{created:l?.time.created??Ht(r),...n===`session.shell.ended`?{completed:Ht(r)}:{}}});return!d||l&&kt(l,d.info)&&kt(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=Ve(t.id);if(!n)return!1;let a=Je(i,{id:n,type:`synthetic`,text:r.text,description:r.description,metadata:r.metadata,time:{created:Ht(r)}});if(!a)return!1;let o=e.message[i]??[],s=o.find(e=>e.id===n);return s&&kt(s,a.info)&&kt(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=E(r.assistantMessageID);if(!i||!a)return!1;let o=typeof r.ordinal==`number`?r.ordinal:0,s={created:Ht(r)};if(n===`session.step.started`||n===`session.step.streamed`||n===`session.step.ended`||n===`session.step.failed`)return Jt(e,n,i,a,r);if(n===`session.text.started`)return Zt(e,i,a,`text`,o,``,s);if(n===`session.text.delta`){let t=typeof r.delta==`string`?r.delta:``;return t?Zt(e,i,a,`text`,o,e=>e+t,s):!1}if(n===`session.text.ended`)return Zt(e,i,a,`text`,o,typeof r.text==`string`?r.text:``,s);if(n===`session.reasoning.started`)return Zt(e,i,a,`reasoning`,o,``,s);if(n===`session.reasoning.delta`){let t=typeof r.delta==`string`?r.delta:``;return t?Zt(e,i,a,`reasoning`,o,e=>e+t,s):!1}if(n===`session.reasoning.ended`)return Zt(e,i,a,`reasoning`,o,typeof r.text==`string`?r.text:``,s);let c=E(r.id);if(!c)return!1;let l=E(r.name);if(n===`session.tool.input.started`)return D(e,i,a,c,l,e=>e,s);if(n===`session.tool.input.delta`){let t=typeof r.delta==`string`?r.delta:``;return t?D(e,i,a,c,l,e=>{let n=T(e.state)??{};if(E(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 D(e,i,a,c,l,e=>{let n=T(e.state)??{};return{...e,state:{...n,input:t}}},s)}return n===`session.tool.called`?D(e,i,a,c,l,e=>{let t=T(e.state)??{};return{...e,state:{...t,status:`pending`,input:r.input??t.input??{},metadata:T(t.metadata)??{}}}},s):n===`session.tool.progress`?D(e,i,a,c,l,e=>{let t=T(e.state)??{};return{...e,state:{...t,metadata:T(r.metadata)??T(t.metadata)??{}}}},s):n===`session.tool.success`?D(e,i,a,c,l,e=>{let t=T(e.state)??{};return{...e,state:{...t,status:`completed`,input:t.input??r.input??{},output:Yt(r.content),metadata:T(r.metadata)??T(t.metadata)??{}}}},s):n===`session.tool.failed`&&D(e,i,a,c,l,e=>{let t=T(e.state)??{},n=T(r.error);return{...e,state:{...t,status:`error`,input:t.input??{},output:Yt(r.content),error:n?E(n.message)??E(r.error):E(r.error),metadata:T(r.metadata)??T(t.metadata)??{}}}},s)}function tn(e){if(typeof e.time?.completed==`number`)return!1;let t=e.finish;return!(typeof t==`string`&&t.length>0)}function nn(e){let t=e.id;return typeof t==`string`&&t.length>0?t:void 0}function O(e){return e.slim===!0}function rn(e,t){if(!e||e.length===0||!t.some(e=>O(e)))return t;let n=new Map;for(let t of e){let e=nn(t);e&&!O(t)&&n.set(e,t)}if(n.size===0)return t;let r=!1,i=t.map(e=>{if(!O(e))return e;let t=nn(e);if(!t)return e;let i=n.get(t);return i?(r=!0,i):e});return r?i:t}function an(e,t){return e===t||e.length===t.length&&e.every((e,n)=>e===t[n])?t:e}function on(e){let t=e.clientRole??e.role;return typeof t==`string`?t:``}function sn(e){return on(e)!==`assistant`||!tn(e)}function cn(e,t,n){if(!e||e.length===0)return t;let r=rn(e,t);if(sn(n))return an(r,e);let i=new Set;for(let e of r){let t=nn(e);t&&i.add(t)}let a=new Map,o=[],s,c=0;for(let t of e){let e=nn(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 an(r,e);let l=[...o];for(let e of r){l.push(e);let t=nn(e);if(!t)continue;let n=a.get(t);n&&l.push(...n)}return an(l,e)}var k=e=>Object.freeze(e),ln=Object.freeze({initial:k({id:`initial`,onStale:`backfill`,messages:`insert-only`,parts:`replace`,preserveStreaming:`assistant`,protectOptimistic:`none`}),prepend:k({id:`history`,onStale:`drop`,messages:`insert-only`,parts:`skip-existing`,preserveStreaming:`assistant`,protectOptimistic:`none`}),recovery:k({id:`recovery`,onStale:`backfill`,messages:`upsert`,parts:`replace`,preserveStreaming:`assistant`,protectOptimistic:`none`}),"reconcile-page":k({id:`reconcile-page`,onStale:`backfill`,messages:`upsert`,parts:`replace`,preserveStreaming:`assistant`,protectOptimistic:`keep-unless-full`}),materialize:k({id:`materialize`,onStale:`backfill`,messages:`insert-only`,parts:`replace`,preserveStreaming:`assistant`,protectOptimistic:`none`})}),un=k({id:`recovery-backfill`,onStale:`backfill`,messages:`insert-only`,parts:`skip-existing`,preserveStreaming:`assistant`,protectOptimistic:`none`}),dn=k({id:`send-gap-fill`,onStale:`backfill`,messages:`insert-only`,parts:`skip-existing`,preserveStreaming:`assistant`,protectOptimistic:`none`}),fn=ln.initial;function pn(e){let t=ln[e.purpose]??fn;return!e.stale||t.onStale===`drop`?t:un}function mn(e,t){return e.preserveStreaming===`none`?!1:e.preserveStreaming===`all`||t===`assistant`}var hn=e=>structuredClone(e),gn=e=>({transport:e.transport,generation:e.generation,directory:e.directory,sessionID:e.sessionID});function _n(e){return JSON.stringify([e.transport,e.generation,e.directory,e.sessionID])}function vn(e,t){return JSON.stringify([e.transport,e.generation,e.directory,e.sessionID,t])}function yn(e){return JSON.stringify([e.transport,e.generation])}function bn(e,t){return e.created===t.created?e.messageID<t.messageID?-1:+(e.messageID>t.messageID):e.created-t.created}function xn(e){let t=e.time?.created;return{created:typeof t==`number`&&Number.isFinite(t)?t:0,messageID:e.id}}function Sn(e){return sn(e)}function Cn(e){return O(e)?`slim`:`full`}function wn(e){return e.some(e=>O(e))?`slim`:`full`}var Tn=e=>{if(typeof e!=`object`||!e)return e;if(Array.isArray(e))return e.map(Tn);let t=e,n={};for(let e of Object.keys(t).sort()){let r=t[e];r!==void 0&&(n[e]=Tn(r))}return n},En=e=>{let t=new Uint8Array(e),n=``;for(let e of t)n+=e.toString(16).padStart(2,`0`);return n};async function Dn(e,t){let n=JSON.stringify(Tn({info:e,parts:t})),r=new TextEncoder().encode(n);return{hash:En(await crypto.subtle.digest(`SHA-256`,r)),byteSize:r.byteLength}}var On=e=>({scope:gn(e.scope),messageID:e.messageID,info:hn(e.info),parts:hn(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}}),kn=e=>{let t=0;return()=>{let n=e();return t=n>t?n:t+1,t}},An=(e,t)=>{let n=t.slice().sort((e,t)=>bn(e.sortKey,t.sortKey)).map(On);return{scope:gn(e),records:n,byteSize:n.reduce((e,t)=>e+t.byteSize,0)}},jn=e=>hn(e),Mn=e=>gn(e),Nn=(e=Date.now)=>kn(e),Pn=e=>On(e),Fn=(e,t)=>An(e,t.slice());function In(e){return Sn(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 Ln=[`text`,`output`],Rn={pending:1,started:2,running:3,completed:4,error:4};function zn(e,t){return e.filter(e=>!!e?.id&&!t.has(e.type))}function Bn(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 Vn(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 Hn(e,t){let n=e[t];return typeof n==`string`?n:void 0}function Un(e){return Vn(e)===void 0&&Ln.some(t=>{let n=Hn(e,t);return typeof n==`string`&&n.length>0})}function Wn(e){let t=e.state;if(!(!t||typeof t!=`object`))return t}function Gn(e){let t=Wn(e)?.status;return typeof t==`string`?t:void 0}function Kn(e){return e?Rn[e]??0:0}function qn(e,t){if(Un(e))return!0;if(Vn(e)===void 0){if(e.type===`tool`){let n=Gn(e);return n===`completed`||n===`error`?t:!0}return!0}return t}function Jn(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 Yn(e){return!!e&&typeof e==`object`&&!Array.isArray(e)&&Object.keys(e).length>0}function Xn(e,t,n){if(e.type!==`tool`||t.type!==`tool`)return n;let r=Wn(e);if(!r)return n;let i=Wn(n)??{},a=Wn(t)??{},o={...i},s=!1,c=Gn(e),l=Gn(t);Kn(c)>Kn(l)&&c&&(o={...o,status:c},s=!0);let u=r.input,d=a.input;Yn(u)&&!Yn(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 Yn(m)&&!Yn(a.metadata)&&(o={...o,metadata:m},s=!0),s?n===t?{...t,state:o}:{...n,state:o}:n}function Zn(e,t){if(!e||Vn(t)!==void 0)return t;let n=t;for(let r of Ln){let i=Hn(e,r);if(!i)continue;let a=Hn(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=Jn(e);if(r){let e=Jn(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=Xn(e,t,n),n}function Qn(e,t){if(!e||e.length===0||!t.some(e=>O(e)))return t;let n=new Map;for(let t of e)t.id&&!O(t)&&n.set(t.id,t);if(n.size===0)return t;let r=!1,i=t.map(e=>{if(!O(e)||!e.id)return e;let t=n.get(e.id);return t?(r=!0,t):e});return r?i:t}function $n(e){return e.__openchamberOptimistic===!0}function er(e){return!!(e&&e.length>0&&e.some($n))}function tr(e){return e.length===0||e.some(e=>O(e))}function nr(e,t,n,r,i,a){if(a===`keep-unless-full`&&e&&er(e)&&tr(t))return e;let o=Qn(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=Zn(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=>O(e)),f=e.filter(e=>!!e?.id&&!u.has(e.id)&&!n.has(e.type)&&(qn(e,i)||d&&!O(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 rr=e=>e,ir=e=>{let t=rr(e).finish;return typeof t==`string`&&t.length>0},ar=e=>typeof rr(e).time?.completed==`number`,or=e=>!!rr(e).error;function sr(e,t){let n=rr(t),r=n.finish,i=n.time?.completed,a=n.error,o=e.tokens,s=t.tokens,c=!ir(e)&&typeof r==`string`&&r.length>0,l=!ar(e)&&typeof i==`number`,u=!or(e)&&!!a,d=!Nt(o)&&Nt(s);if(!c&&!l&&!u&&!d)return e;let f={...e};return c&&(f.finish=r),l&&(f.time={...rr(e).time,completed:i}),u&&(f.error=a),d&&(f.tokens=s),f}function cr(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`?lr(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 lr(e,t){let n=e.slice();for(let e of t){let t=xn(e),r=n.length;for(let e=0;e<n.length;e+=1)if(bn(t,xn(n[e]))<0){r=e;break}n.splice(r,0,e)}return n}function ur(e,t,n){return cr(e,t,(e,t)=>t?sr(e,t):e,n)}function dr(e,t,n){return cr(e,t,(e,t)=>!t||JSON.stringify(e)===JSON.stringify(t)?e:It(e,t),n)}function fr(e,t,n,r={}){let i=r.skipPartTypes??new Set,a=r.merge??fn,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`?dr(u,c,o):ur(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=nr(r,zn(e.parts??[],i),i,mn(a,e.info.role),tn(e.info),a.protectOptimistic);(r?Bn(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 pr(e){if(typeof e.time?.completed==`number`)return!1;let t=e.finish;return!(typeof t==`string`&&t.length>0)}function mr(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&&pr(i)||r.push(i.id));return{hasMessages:!0,renderable:r.length===0,missingPartMessageIDs:r}}var hr=(e,t)=>e<t?-1:+(e>t);function gr(e){return e.filter(e=>!!e?.id)}function _r(e,t){if(t.length===0)return{...e,confirmed:[]};let n=[...e.session],r=new Map(e.part.map(e=>[e.id,gr(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,gr(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,gr(e.parts))}return{cursor:e.cursor,complete:e.complete,session:n,part:[...r.entries()].sort((e,t)=>hr(e[0],t[0])).map(([e,t])=>({id:e,part:t})),confirmed:i}}var vr={kind:`unknown`,loadedTurns:0},yr=3e4,br=12e5,xr={project:``,projectMeta:void 0,icon:void 0,provider:{all:[],connected:[],default:{}},config:{},path:{state:``,config:``,worktree:``,directory:``,home:``},status:`loading`,agent:[],command:[],session:[],sessionTotal:0,session_status:{},session_status_observed_at:{},session_status_snapshot_at:void 0,session_error_at:{},session_execution_recovery:{},session_diff:{},todo:{},permission:{},question:{},lsp:[],vcs:void 0,limit:20},Sr={ready:!1,path:{state:``,config:``,worktree:``,directory:``,home:``},projects:[],providers:{all:[],connected:[],default:{}},providerAuth:{},config:{},reload:void 0,sessionTodo:{}};function Cr(e,t){return e===void 0||t===void 0?!1:t>e}var wr=class extends Error{};function Tr(e,t,n){if(n===`reconcile-page`)return e??vr;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 wr(`session message page: complete=false requires non-empty cursor`);if(n===`prepend`&&e?.kind===`has-more`&&e.cursor===o)throw new wr(`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 wr(`session message page: complete=false with zero records makes no progress`);return{kind:`has-more`,cursor:o,loadedTurns:a}}function Er(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 Dr(e,t,n,r){let i=Cr(r.capturedRevision,r.liveRevision),a=pn({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=_r({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=fr(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=Tr(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 wr))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=!Er(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 Or=new Set([`tool`,`reasoning`,`file`,`text`]),kr=new Set([`tool`,`reasoning`,`file`]);function Ar(e){return e.some(e=>O(e)&&Or.has(e.type))}function jr(e,t){let n=!1,r=!1;for(let t of e)kr.has(t.type)&&(n=!0,O(t)&&(r=!0));return n?r?!0:t?tn(t):!1:!1}var Mr=e=>{if(!e)return``;let t=e.clientRole??e.role;return typeof t==`string`?t:``};function Nr(e,t){return Be(e,t)}function Pr(e){let t=0;for(let n of e.messageOrder)Nr(e.messagesByID[n],e.partsByMessageID[n])&&(t+=1);return t}var Fr=(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(Nr(a,e.partsByMessageID[n]))break;if(Mr(a)!==`assistant`)continue;let o=a.parentID;typeof o==`string`&&o.length>0&&o!==t||r.push(a)}return r},Ir=(e,t)=>tn(e)?!0:Array.isArray(t)&&t.length>0;function Lr(e){let t;for(let n=e.messageOrder.length-1;n>=0;--n){let r=e.messageOrder[n];if(Nr(e.messagesByID[r],e.partsByMessageID[r])){t=r;break}}return t?Fr(e,t).some(t=>Ir(t,e.partsByMessageID[t.id])):!1}function Rr(e){return e.materializeActive?`p2`:e.prependActive||e.earlierHistoryLoaded?`p1`:e.p0Satisfied?`p0`:`idle`}var zr=new Set([`stop`,`length`]);function Br(e){let t=e.messageOrder[e.messageOrder.length-1];if(!t)return!1;let n=e.messagesByID[t];if(!n||Mr(n)!==`assistant`||n.error)return!1;let r=n.finish;return typeof r!=`string`||!zr.has(r)?!1:typeof n.time?.completed!=`number`||r===`stop`&&!Nt(n.tokens)}function Vr(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 Hr(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 Ur=`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 Wr(e){return Ur.includes(e)}function A(e){return e.trim()}function Gr(e){return`${A(e.directory)}\n${e.sessionID}`}function Kr(e,t){return e.session_history_boundary?.[t]??vr}function qr(e){return e.filter(e=>!!e?.id)}function Jr(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 Yr(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||!Jr(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 Xr(e,t,n){let r=e.getState(),i=n.page,a=Dr(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?(Yr(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 Zr(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(!Wr(e.type))continue;i=!0;let t=zt(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 Qr(e,t){return Zr(e,[t.event])}function $r(e,t){return Zr(e,t.events)}function ei(e,t,n){if(n.records.length===0)return{applied:!1,changed:!1};let r=e.getState(),i=fr({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 ti(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 ni(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]=qr(n.parts),e.setState({message:o,part:s}),{applied:!0,changed:!0}}function ri(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 ii(e,t,n,r){return n.clearOptimisticShadow?.({directory:r,sessionID:e,messageID:t}),{applied:!0,changed:!1}}function ai(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 oi(e,t,n){let r=ai(e,t);if(!n.page)return{applied:!0,changed:r};let i=Xr(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 si(e){let t=new Map,n=new Map,r=r=>{let i=Gr(r);if(n.has(i))return;let a=A(r.directory),o=e.getStore(a),s=r.sessionID,c=o.getState().message?.[s],l=Kr(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=Kr(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=Jr(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=A(t.directory),r=e.getStore(n).getState(),i=t.sessionID,a=r.message?.[i]??[],o=e.getLiveRevision?.(n,i)??0;return Hr({sessionID:i,messages:a,parts:r.part??{},boundary:Kr(r,i),liveRevision:o})},getPagination(t){let n=A(t.directory),r=e.getStore(n).getState();return Vr(t.sessionID,Kr(r,t.sessionID))},getRequestState(t){let n=A(t.directory);return e.getRequestState?.(n,t.sessionID)??{sessionID:t.sessionID,status:`idle`}},getHydrationState(e){let t=a.getTranscript(e),n=Lr(t);return{sessionID:e.sessionID,p0Satisfied:n,phase:Rr({p0Satisfied:n,earlierHistoryLoaded:Pr(t)>1})}},getMessage(e,t){return a.getTranscript(e).messagesByID[t]},getParts(t,n){let r=A(t.directory);return e.getStore(r).getState().part?.[n]??[]},hasSession(t){let n=A(t.directory),r=e.getStore(n).getState().message;return r?Object.prototype.hasOwnProperty.call(r,t.sessionID):!1},apply(t,n){let r=A(t.directory),i=e.getStore(r),a=t.sessionID;switch(n.type){case`http-page`:return Xr(i,a,n);case`sse-event`:return Qr(i,n);case`sse-event-batch`:return $r(i,n);case`optimistic-add`:return ni(i,a,n,e,r);case`optimistic-confirm`:return ii(a,n.messageID,e,r);case`optimistic-remove`:return ri(i,a,n.messageID,e,r);case`reset`:return oi(i,a,n);case`materialize-snapshots`:return ei(i,a,n);case`remove-message`:return ti(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=Gr(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 ci=new Set,li=new Set;function ui(e,t){return`${e}\n${t}`}function di(){for(let e of li)e()}function fi(e,t){!e||!t||(ci.add(ui(e,t)),di())}function pi(e,t){!e||!t||ci.delete(ui(e,t))&&di()}function mi(e,t){if(!e)return!1;if(t)return ci.has(ui(t,e));let n=`\n${e}`;for(let e of ci)if(e.endsWith(n))return!0;return!1}function hi(e){return li.add(e),()=>{li.delete(e)}}var gi=[],_i=new Map,vi=new Map,yi=0,bi=()=>{let e=gi.findIndex(e=>e.priority===`user`);if(e>=0){let[t]=gi.splice(e,1);return t}return gi.shift()},xi=()=>{for(;yi<4;){let e=bi();if(!e)return;_i.delete(e.key),yi+=1,Promise.resolve().then(()=>e.run()).then(t=>{e.resolve(t)},t=>{e.reject(t)}).finally(()=>{--yi,vi.delete(e.key),xi()})}};function Si(e,t,n){let r=n?.priority??`background`,i=vi.get(e);if(i){let t=_i.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 gi.push(c),_i.set(e,c),vi.set(e,s),xi(),s}var Ci=null,wi=0,Ti=new Set;function Ei(){wi+=1;for(let e of Ti)e()}function Di(e){return e}function Oi(e){return Ti.add(e),()=>{Ti.delete(e)}}function ki(){return wi}function Ai(e){return Ci?.repository===e?e:(Ci={kind:`query`,repository:e},Ei(),e)}function ji(){Ci&&(Ci=null,Ei())}function j(){return Ci?.repository??null}function Mi(){let e=j();if(!e)throw Error(`TranscriptRepository is not bound — SyncProvider must mount first`);return e}function M(e,t){let n=j();if(n)return n;let r=Di(t);return si({getStore:e=>r})}function N(e,t,n){return{directory:e.trim(),sessionID:t,...n?.transport===void 0?{}:{transport:n.transport},...n?.generation===void 0?{}:{generation:n.generation}}}function Ni(e){try{let t=j(),n=o(),r=s();return t?.getCacheBudget?.().listCanonicalScopesForSession(e,{transport:n,generation:r})?.map(e=>N(e.directory,e.sessionID,{transport:e.transport,generation:e.generation}))??[]}catch{return[]}}function Pi(e,t){let n=j();return n?n.apply(e,t):null}async function Fi(e,t){let n=Mi();if(typeof n.fetchPreviousPage!=`function`)throw Error(`TranscriptRepository does not support fetchPreviousPage`);await n.fetchPreviousPage(N(e,t))}async function Ii(e,t){let n=Mi();if(typeof n.ensureInitial!=`function`)throw Error(`TranscriptRepository does not support ensureInitial`);await n.ensureInitial(N(e,t))}async function Li(e,t){let n=Mi(),r=N(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 Ri(e,t){let n=Mi();if(typeof n.refreshFromAuthority!=`function`)throw Error(`TranscriptRepository does not support refreshFromAuthority`);fi(e,t);try{await n.refreshFromAuthority(N(e,t))}finally{pi(e,t)}}async function zi(e,t,n,r){let i=Mi();if(typeof i.materializeMessage!=`function`)throw Error(`TranscriptRepository does not support materializeMessage`);let a=N(e,t);await Si(`${e}\n${t}\n${n}`,()=>i.materializeMessage(a,n),{priority:r?.priority??`background`})}function Bi(e,t,n){let r=j();return!r||typeof r.getMessageMaterializationState!=`function`?{sessionID:t,messageID:n,status:`idle`}:r.getMessageMaterializationState(N(e,t),n)}function Vi(e,t){j()?.purgeSession?.(N(e,t))}var P=null;function Hi(e){P&&P!==e&&P.cancelAll(`reregister`),P=e}function Ui(e){P?.captureCheckpoints(e)}function Wi(e){P?.onCompensation(e)}async function Gi(e){return P?P.ensureOnObserve(e):null}function Ki(e){P?.cancelAll(e)}var qi=[],Ji=[],Yi={sessionID:``,messageOrder:[],messagesByID:{},partsByMessageID:{},boundary:vr,liveRevision:0};Vr(``,vr);var Xi={sessionID:``,phase:`idle`,p0Satisfied:!1};function F(e,t){return M(e,t)}var Zi=new Set;function Qi(e,t){return`${e}\n${t}`}function $i(e,t){if(!t)return;let n=Qi(e,t);Zi.has(n)||(Zi.add(n),Gi(N(e,t)).catch(()=>{}).finally(()=>{Zi.delete(n)}))}function ea(e,t){if(e&&t){Zi.delete(Qi(e,t));return}Zi.clear()}function ta(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(Yi);return(c.current===void 0||!s.current(c.current,e))&&(c.current=e),c.current}let r=F(t,n).getTranscript(N(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;$i(t,e);let i=F(t,n).subscribe(N(t,e),()=>{r()}),a=Oi(()=>{i(),c.current=void 0,ea(t,e),$i(t,e),i=F(t,n).subscribe(N(t,e),()=>{r()}),r()});return()=>{a(),i()}},[t,l,e,n]);return y.useSyncExternalStore(d,u,u)}function na(e,t){if(e.messageOrder.length===0)return qi;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 ra(e,t){return e.messageOrder.length===0?t?.resolved===!0?mr({messages:qi,parts:e.partsByMessageID}):{hasMessages:!1,renderable:!1,missingPartMessageIDs:[]}:mr({messages:na(e),parts:e.partsByMessageID})}function ia(e,t,n,r){let i=(0,Se.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=F(t,n).hasSession?.(N(t,e));return ra(r,{resolved:i===!0||void 0})},i[0]=t,i[1]=e,i[2]=n,i[3]=a):a=i[3],ta(e,t,n,a,aa,r)}function aa(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 oa(e,t,n,r){return ta(e,t,n,ca,sa,r)}function sa(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 ca(e){return na(e)}function la(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 ua(e,t,n,r){return ta(e,t,n,da,la,r)}function da(e){return e}function fa(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=j();if(o){i.push(o.subscribe(N(a.directory,a.sessionID),t));continue}let s=n?.(a.directory);if(!s)continue;let c=M(a.directory,s);i.push(c.subscribe(N(a.directory,a.sessionID),t))}},s=()=>{a(),o(),t()};o();let c=Oi(s),l=r?.subscribeRebuild?.(s);return()=>{l?.(),c(),a()}}function pa(e,t){return e.length===0?``:e.map(e=>{let n=Ta(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 ma(e,t,n){return ta(e,t,n,ha)}function ha(e){return e.messageOrder.length}function ga(e,t,n){let r=(0,Se.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=F(t,n),a=r.hasSession?.(N(t,e))??r.getTranscript(N(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?F(t,n).subscribe(N(t,e),()=>{r()}):_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 _a(){}function va(e,t,n,r){let i=(0,Se.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=Ji,Ji;let i=F(t,n),o=r||e,s=i.getParts(N(t,o),e),c=s.length===0?Ji: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 ba;let a=F(t,n);return r?a.subscribe(N(t,r),()=>{i()}):ya},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 ya(){}function ba(){}function xa(e,t,n){let r=(0,Se.c)(8),i=(0,y.useRef)(Xi),a;r[0]!==t||r[1]!==e||r[2]!==n?(a=()=>{if(!e)return i.current!==Xi&&(i.current=Xi),i.current;let r=F(t,n).getHydrationState?.(N(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 Sa;$i(t,e);let a=F(t,n).subscribe(N(t,e),()=>{r()}),o=Oi(()=>{a(),i.current=Xi,ea(t,e),$i(t,e),a=F(t,n).subscribe(N(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 Sa(){}function Ca(e,t,n){let r=(0,Se.c)(2),i;return r[0]===e?i=r[1]:(i=t=>Vr(e,t.boundary),r[0]=e,r[1]=i),ta(e,t,n,i,wa)}function wa(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 Ta(e,t,n){if(!t)return[];let r=j();if(r){let n=r.getTranscript(N(e,t));return n.messageOrder.map(e=>n.messagesByID[e]).filter(e=>!!e)}if(!n)return[];let i=M(e,n).getTranscript(N(e,t));return i.messageOrder.map(e=>i.messagesByID[e]).filter(e=>!!e)}var I=null,Ea=``,Da=null,Oa=new Set,ka=null,Aa=new Map,ja=new Map;function Ma(e,t,n,r){I=t,ka!==t&&(ka=null,Aa=new Map,ja=new Map),Ea=n,r&&(Da=r)}function Na(e,t){Da?.(e,t)}function Pa(){if(!I)throw Error(`ChildStoreManager not initialized — is SyncProvider mounted?`);return I}function Fa(e){let t=I;if(!t)return;let n=e||Ea;if(n)return t.getState(n)}function Ia(e){let t=Fa(e)?.config;return t&&Object.keys(t).length>0?t:void 0}function La(e){return Oa.add(e),()=>{Oa.delete(e)}}function Ra(e,t){if(e)for(let n of Oa)n(e,t)}function za(e){return Fa(e)?.session??[]}function Ba(){return Array.from(Va().values())}function Va(){let e=I;if(!e)return ja;let t=ka!==e||Aa.size!==e.children.size;for(let[n,r]of e.children)if(Aa.get(n)!==r.getState().session){t=!0;break}if(!t)return ja;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 ka=e,Aa=n,ja=r,ja}function Ha(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=j();if(I){for(let[i,a]of I.children)if(a.getState().session.some(t=>t.id===e)&&(n??M(i,a)).hasSession?.(N(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 Ua(e,t){if(!e)return[];try{let n=j(),r=t??Ea;if(n){let t=n.getTranscript(N(r,e));return t.messageOrder.map(e=>t.messagesByID[e]).filter(e=>!!e)}if(I){let t=I.getChild(r);if(t){let n=M(r,t).getTranscript(N(r,e));return n.messageOrder.map(e=>n.messagesByID[e]).filter(e=>!!e)}}}catch{}return[]}function Wa(e,t){if(!e)return[];try{let n=j(),r=t??Ea;if(n)return[...n.getParts(N(r,e),e)];if(I){let t=I.getChild(r);if(t)return[...M(r,t).getParts(N(r,e),e)]}}catch{}return[]}function Ga(e,t){return Fa(t)?.session_status[e]}var L=e=>{if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0},Ka=`default`;function qa(e){let t=L(e);if(t&&t!==Ka)return t}function Ja(e){let t=e?.model;return L(t?.id)??L(t?.modelID)}function Ya(e){let t=e?.model;return L(t?.providerID)}function Xa(e){let t=e?.model;return qa(t?.variant)}function Za(e){let t=qa(e.variant);return{id:e.modelID.trim(),providerID:e.providerID.trim(),...t?{variant:t}:{}}}function Qa(e,t,n){let r=L(n.providerID),i=L(n.modelID);if(!r||!i)return{agent:L(n.agent)};let a=(Fa(t)?.session??Ba()).find(t=>t.id===e),o=Za({providerID:r,modelID:i,variant:n.variant}),s=Ja(a),c=Ya(a),l=Xa(a),u=qa(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 $a(e,t,n){if(e&&!(!n.model&&!n.agent))try{let r=Pa(),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 eo=new Set([`image/heic`,`image/heif`]),to=!1,no=()=>{let e=globalThis.window?.Capacitor;return e&&typeof e==`object`?e:null},ro=e=>eo.has((e.type||``).toLowerCase()),io=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)},ao=(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})},oo=async e=>{if(!ro(e)||to)return null;let t=no();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 io(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 ao(t.data,r)}catch(e){return to=!0,console.warn(`Native HEIC transcode failed`,e),null}},so=e=>e.trim().toLowerCase(),co=e=>e.source===`local`||e.source===`server`||e.source===`vscode`,lo=(e,t)=>{if(!e||!e.includes(`[`)||t.length===0)return[];let n=new Set(t.map(so)),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=ee(e.slice(t+1,a)).trim();n.has(so(i))&&r.push({start:t,end:a+1})}i=a+1}return r},uo=(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}},fo=(e,t,n,r)=>{let i=lo(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}=uo(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}},po=new Set([`image`,`screenshot`,`screen-shot`,`clipboard`,`pasted-image`,`pastedimage`,`untitled`,`unknown`,`file`,`blob`]),mo={"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`},ho=e=>e.trim().toLowerCase(),go=e=>e.charCodeAt(0)<32||`<>:"/\\|?*[]`.includes(e),_o=e=>{let t=e.replace(/\\/g,`/`).split(`/`).pop()??``;return Array.from(t).map(e=>go(e)?`-`:e).join(``).replace(/\s+/g,` `).replace(/-+/g,`-`).trim()},vo=e=>mo[e?.trim().toLowerCase()??``]??`png`,yo=e=>{let t=_o(e.name),n=vo(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}},bo=e=>{let{base:t}=yo({name:e}),n=t.trim().toLowerCase().replace(/[\s_]+/g,`-`).replace(/-+/g,`-`).replace(/^-|-$/g,``);if(po.has(n))return!0;let r=n.replace(/-\(\d+\)$/g,``);return r!==n&&po.has(r)?!0:/^(image|file|unknown|untitled|blob)-\d+$/.test(n)},xo=(e,t)=>`${e}.${t}`,So=(e,t,n)=>{let r=xo(e,t);if(!n.has(ho(r)))return r;for(let r=2;r<2**53-1;r+=1){let i=xo(`${e}-${r}`,t);if(!n.has(ho(i)))return i}return xo(`${e}-${Date.now()}`,t)},Co=(e,t)=>{for(let n=1;n<2**53-1;n+=1){let r=xo(`image-${n}`,e);if(!Array.from(t).some(e=>e.startsWith(`image-${n}.`))&&!t.has(ho(r)))return r}return xo(`image-${Date.now()}`,e)},wo=(e,t)=>{let n=new Set(t.map(ho));return e.map(e=>{let{base:t,ext:r}=yo(e),i=bo(xo(t,r))?Co(r,n):So(t,r,n);return n.add(ho(i)),i})},To=e=>e.map(e=>ne(e)).join(` `),Eo=(e,t,n)=>{if(t===n)return[];let r=[];for(let i of e){let e=[ne(i),`[${i}]`],a=e.some(e=>t.includes(e)),o=e.some(e=>n.includes(e));a&&!o&&r.push(i)}return r},Do=(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}},Oo=(e,t,n)=>{if(e===t||n.length===0)return null;let r=[...n],i=Do(e,t);if(i){let t=zo(e,r,{key:`Backspace`,selectionStart:i.start,selectionEnd:i.end});if(t)return t}let a=Eo(r,e,t);return a.length===0?null:{text:t,caret:t.length,removedFilenames:a}},ko=e=>e.replaceAll(`[${g}`,`[`),Ao=/\.(?:png|jpe?g|gif|webp|svg|avif|bmp|heic|heif|tiff?)$/i,jo=e=>{let t=e.trim();return t.startsWith(`/`)||/^[A-Za-z]:[\\/]/.test(t)||t.startsWith(`\\\\`)},Mo=(e,t)=>{let n=e;for(let e of t){let t=e.filename.trim(),r=e.path.trim();if(!t||!r||t===r||jo(t)||!Ao.test(t)&&!Ao.test(r))continue;let i=`[${r}]`;n=n.split(ne(t)).join(i).split(`[${t}]`).join(i)}return n},No=(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(ne(e.filename)).join(r).split(`[${e.filename}]`).join(r)}return n},Po=e=>e.mime===`text/plain`&&typeof e.filename==`string`&&/:\d+(?:-\d+)?$/.test(e.filename),Fo=`application/x-directory`,Io=e=>typeof e==`string`&&e.trim().toLowerCase()===`application/x-directory`,Lo=e=>typeof e==`string`&&/[/\\]$/.test(e.trim()),Ro=(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?Ro(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=lo(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=>ee(e.slice(t.start+1,t.end-1)).trim())}},Bo=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}},Vo=`file://`,Ho=e=>{let t=e.trim();if(t.toLowerCase().startsWith(Vo))return t;let n=pe(t).split(`/`).map(e=>/^[A-Za-z]:$/.test(e)?e:encodeURIComponent(e)).join(`/`);return/^[A-Za-z]:/.test(n)?`${Vo}/${n}`:`${Vo}${n}`},Uo=e=>{let t=e.trim();if(!t.toLowerCase().startsWith(Vo))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},Wo=async e=>[...new Uint8Array(await crypto.subtle.digest(`SHA-256`,await e.arrayBuffer()))].map(e=>e.toString(16).padStart(2,`0`)).join(``),Go=e=>typeof e==`object`&&!!e&&!Array.isArray(e),Ko=async e=>{let t;try{t=await e.json()}catch{throw new Bo(e.status,`unavailable`)}if(!Go(t)||typeof t.path!=`string`||!t.path)throw new Bo(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:Ho(t.path),mime:n,size:r,sha256:i}},qo=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}`},Jo=(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}},Yo=e=>e.startsWith(`data:`)||e.startsWith(`blob:`),Xo=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 Bo(413,`too-large`);let r=await Wo(n),i=qo(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 Bo(0,`unavailable`)}if(a.status===413)throw new Bo(413,`too-large`);if(!a.ok)throw new Bo(a.status,a.status>=500||a.status===0?`unavailable`:`rejected`);let o=await Ko(a);if(o.size!==n.size)throw new Bo(a.status,`unavailable`);return{...o,mime:t}},Zo=500,Qo=()=>{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}},$o=()=>Qo(),R=(e,t)=>{if(!Qo())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>Zo&&window.__OPENCHAMBER_STARTUP_TRACE__.splice(0,window.__OPENCHAMBER_STARTUP_TRACE__.length-Zo)};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 es=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}},ts=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}),ns=[],rs=[],z=new Map,is=512,as=0;function os(){return as}function B(){return{transportIdentity:o(),generation:s()}}function ss(e){return o()===e.transportIdentity&&s()===e.generation}function cs(e,t,n){return`${n?.transportIdentity??o()}\0${n?.generation??s()}\0${e}\0${t}`}function ls(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>is;){let e=z.keys().next().value;if(e===void 0)break;z.delete(e)}}function us(e,t,n,r){let i=r??B();ls(i),as+=1,z.set(cs(e,t,i),{kind:n,mark:as})}function ds(e,t,n){let r=n?.scope;ls(r??B());let i=z.get(cs(e,t,r));if(!i)return!0;let a=n?.startedMark;return a!==void 0&&i.mark>a?!1:(z.delete(cs(e,t,r)),!0)}function fs(e,t,n){return ls(n??B()),z.get(cs(e,t,n))?.kind??null}var ps=(e,t,n)=>{let r={...e};return n.length===0?delete r[t]:r[t]=n,r},V=ae((e,t)=>({bySession:{},remember(t){return!fs(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&&us(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:ps(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);for(let e of r)us(t,e,`consumed`);e(e=>{let n=e.bySession[t];if(!n?.length)return e;let i=n.filter(e=>!r.has(e.id));return i.length===n.length?e:{bySession:ps(e.bySession,t,i)}})},replaceFromAuthority(t,n,r){let i=r?.startedMark,a=[];for(let e of n)ds(t,e.id,{startedMark:i})&&a.push(e);e(e=>{let n=new Map((e.bySession[t]??[]).map(e=>[e.id,e])),r=a.map(e=>({...e,requestID:e.id,wasQueued:e.delivery===`queue`||n.get(e.id)?.wasQueued===!0}));return{bySession:ps(e.bySession,t,r)}})},updateDelivery(t,n,r){e(e=>{if(fs(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]??ns}}));function ms(e){return V.getState().remember(e)}function hs(e,t){return ds(e.sessionID,e.id,t)?V.getState().remember(e):!1}function gs(e,t,n){V.getState().forget(e,t,n)}function _s(e,t){V.getState().forgetPromoted(e,t)}function vs(e,t,n){V.getState().replaceFromAuthority(e,t,n)}function ys(e,t,n){V.getState().updateDelivery(e,t,n)}function bs(e){return!!e&&typeof e==`object`&&e.kind===`session-inbox`}var xs=e=>e?e.toLowerCase().includes(`application/json`):!1,Ss=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 Cs(e){return typeof e==`number`&&Number.isFinite(e)?e:void 0}function ws(e,t,n){let r=n?`: ${n}`:``,i=Error(`${e} (${t})${r}`);throw i.status=t,i}async function Ts(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 Es(e){return e?{directory:e}:{}}function Ds(e,t){let n=`/api/session/${encodeURIComponent(e)}/inbox`;return t?`${n}/${encodeURIComponent(t)}`:n}async function Os(e,t){let n=e.headers.get(`content-type`);if(Ss(n))throw Error(`${t}: unexpected HTML response`);let r;try{r=await e.json()}catch{throw Error(`${t}: malformed JSON`)}if(!xs(n)&&r==null)throw Error(`${t}: empty response`);return r}function ks(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:Cs(n.timeCreated)??Cs(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 As(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(ks(e)));return r}function js(e){return{runtimeKey:c(),generation:s(),directory:e,overlay:B()}}function W(e){return c()===e.runtimeKey&&s()===e.generation&&ss(e.overlay)}function Ms(e){let t=Error(`${e}: runtime switched`);throw t.name=`RuntimeGenerationMismatchError`,t}async function Ns(e){let t=e.commit??js(e.directory);W(t)||Ms(`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)||Ms(`session prompt`),!i.ok){let e=await Ts(i);ws(`Failed to send message`,i.status,e)}let a=ks(await Os(i,`session prompt`));return W(t)||Ms(`session prompt`),ms(a),a}function Ps(e){let t=e?.status;return typeof t!=`number`||!Number.isFinite(t)||t===408||t===429?!1:t>=400&&t<500}async function Fs(e){let t=e.inputID.trim();if(!t)return{status:`unknown`};let n=e.commit??js(e.directory??``);if(!W(n))return{status:`unknown`};try{let r=await Ls({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 hs(i,{startedMark:r.startedMark})?{status:`pending`,item:i}:{status:`unknown`}}catch{}if(!W(n))return{status:`unknown`};try{let r=await Xe({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 gs(e.sessionID,t,`consumed`),{status:`promoted`,id:t}}catch{}return{status:`unknown`}}function Is(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 hs(ks(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 gs(r,i,`cancelled`),!0;if(t===`session.inbox.delivered`)return gs(r,i,`consumed`),!0;if(t===`session.inbox.delivery.changed`){let e=n.delivery===`queue`?`queue`:n.delivery===`steer`?`steer`:null;return e?(ys(r,i,e),!0):!1}return!1}async function Ls(e){let t=B(),n=os(),r=await u(Ds(e.sessionID),{method:`GET`,query:Es(e.directory),signal:e.signal});r.ok||ws(`session inbox`,r.status,await Ts(r));let i=await Os(r,`session inbox`),a=As(i),o=ss(t);return o&&pt(e.sessionID,ft(i)),{items:a,startedMark:n,scope:t,current:o}}async function Rs(e){let t=B(),n=await u(Ds(e.sessionID,e.inboxID),{method:`PATCH`,headers:{"Content-Type":`application/json`},query:Es(e.directory),body:JSON.stringify({delivery:e.delivery}),signal:e.signal});n.ok||ws(e.delivery===`steer`?`session inbox steer`:`session inbox queue`,n.status,await Ts(n)),ss(t)&&(fs(e.sessionID,e.inboxID)||ys(e.sessionID,e.inboxID,e.delivery))}async function zs(e){await Rs({...e,delivery:`steer`})}async function Bs(e){await Rs({...e,delivery:`queue`})}async function Vs(e){let t=await u(Ds(e.sessionID,e.inboxID),{method:`DELETE`,query:Es(e.directory),signal:e.signal});t.ok||ws(`session inbox cancel`,t.status,await Ts(t))}function Hs(e,t,n){vs(e,t,n)}async function Us(e){let t=B();if(await Vs(e),!ss(t))return{overlay:V.getState().list(e.sessionID),transcriptRows:[]};gs(e.sessionID,e.inboxID,`cancelled`);try{let n=await Ls({sessionID:e.sessionID,directory:e.directory,signal:e.signal});if(!ss(t)||!n.current)return{overlay:V.getState().list(e.sessionID),transcriptRows:[]};Hs(e.sessionID,n.items,{startedMark:n.startedMark})}catch{}return{overlay:V.getState().list(e.sessionID),transcriptRows:[]}}async function Ws(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 Gs(e){return e.promotedIDs.includes(e.optimisticID)?`confirmed`:(e.removeOptimistic(e.optimisticID),await e.refreshFromAuthority(),`refreshed`)}var Ks=`session-revert-busy`,qs=e=>e?e.toLowerCase().includes(`text/html`):!1;function Js(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}function Ys(e){return typeof e==`string`&&e.length>0?e:void 0}function Xs(e,t,n){if(t===409)throw Zs();let r=n?`: ${n}`:``,i=Error(`${e} (${t})${r}`);throw i.status=t,i}function Zs(){let e=Error(Ks);return e.name=`SessionRevertBusyError`,e}function Qs(e){if(!e||typeof e!=`object`)return!1;let t=e;return t.name===`SessionRevertBusyError`||t.message===`session-revert-busy`}async function $s(e){try{return(await e.text()).trim()}catch{return``}}async function ec(e,t){if(qs(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 tc(e){return e?{directory:e}:{}}function nc(e,t){return`/api/session/${encodeURIComponent(e)}/revert/${t}`}function rc(e){let t=Js(e)?e:null,n=t&&Js(t.data)?t.data:t;if(!n)throw Error(`session revert: expected revert payload`);let r=Ys(n.messageID);if(!r)throw Error(`session revert: missing messageID`);let i=Array.isArray(n.files)?n.files.flatMap(e=>{if(!Js(e))throw Error(`session revert: invalid file diff`);let t=Ys(e.file)??Ys(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,...Ys(n.partID)?{partID:Ys(n.partID)}:{},...Ys(n.snapshot)?{snapshot:Ys(n.snapshot)}:{},...i?{files:i}:{}}}function ic(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 ac(e){let t=await u(nc(e.sessionID,`stage`),{method:`POST`,headers:{"Content-Type":`application/json`},query:tc(e.directory),body:JSON.stringify({messageID:e.messageID,files:e.files!==!1}),signal:e.signal});return t.ok||Xs(`session revert stage`,t.status,await $s(t)),rc(await ec(t,`session revert stage`))}async function oc(e){let t=await u(`/api/session/${encodeURIComponent(e.sessionID)}/revert`,{method:`DELETE`,query:tc(e.directory),signal:e.signal});t.ok||Xs(`session revert clear`,t.status,await $s(t))}async function sc(e){let t=await u(nc(e.sessionID,`commit`),{method:`POST`,query:tc(e.directory),signal:e.signal});t.ok||Xs(`session revert commit`,t.status,await $s(t))}var cc=e=>e?e.toLowerCase().includes(`text/html`):!1;function lc(e,t,n){let r=n?`: ${n}`:``,i=Error(`${e} (${t})${r}`);throw i.status=t,i}async function uc(e){try{return(await e.text()).trim()}catch{return``}}function dc(e){return e?{directory:e}:{}}function fc(e,t){return`/api/session/${encodeURIComponent(e)}/permission/${encodeURIComponent(t)}/reply`}async function pc(e){let t=await u(fc(e.sessionID,e.requestID),{method:`POST`,headers:{"Content-Type":`application/json`},query:dc(e.directory),body:JSON.stringify({decision:e.reply,...e.message?{message:e.message}:{}}),signal:e.signal});if(t.ok||lc(`session permission reply`,t.status,await uc(t)),t.status!==204&&cc(t.headers.get(`content-type`)))throw Error(`session permission reply: unexpected HTML response`)}function mc(e){let t=Error(`${e} is not available on OpenCode v2`);return t.name=`V2CapabilityUnavailableError`,t}function hc(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 gc(e){return{id:e.id,worktree:e.canonical,canonical:e.canonical,sandboxes:e.sandboxes,name:e.name}}function _c(e){return e.worktree||e.canonical||``}function vc(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 yc(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 bc(e){return!!e&&typeof e==`object`&&!Array.isArray(e)&&e.kind===`question`}function xc(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 Sc(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 Cc(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}:{}})):Sc(e),n=xc(e);return{id:e.id,sessionID:e.sessionID,questions:t,...n?{tool:n}:{}}}function wc(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 Tc=3,Ec=3e4,Dc=32e3,Oc=36e5,kc=6e5,Ac=new Set([429,502,503,504]),jc=new Map;function Mc(){let e=Date.now();for(let[t,n]of jc)n.consecutiveErrors===0&&e-n.lastErrorAt>Oc&&jc.delete(t)}typeof setInterval<`u`&&setInterval(Mc,kc).unref?.();function Nc(e){let t=jc.get(e);return t||(t={consecutiveErrors:0,lastErrorAt:0,circuitOpen:!1,circuitOpenAt:0,circuitCooldownMs:Ec},jc.set(e,t)),t}function Pc(e){if(!e)return;let t=jc.get(e);t&&(t.consecutiveErrors=0,t.lastErrorAt=0)}function Fc(e,t){if(!e)return;let n=Nc(e);n.consecutiveErrors+=1,n.lastErrorAt=Date.now(),Ic(t)&&n.consecutiveErrors>=Tc&&(n.circuitOpen=!0,n.circuitOpenAt=Date.now(),console.warn(`[provider-tracker] Circuit opened for ${e} after ${n.consecutiveErrors} consecutive errors`))}function Ic(e){return e!==void 0&&Ac.has(e)}function Lc(e){let t=jc.get(e);return t?.circuitOpen?Date.now()-t.circuitOpenAt>=t.circuitCooldownMs?(t.circuitOpen=!1,t.consecutiveErrors=0,t.circuitCooldownMs=Math.min(t.circuitCooldownMs*2,Dc*4),!1):!0:!1}function Rc(e){if(!(!e||!Lc(e)))throw Error(`Provider ${e} is temporarily unavailable after repeated errors. Please retry shortly.`)}var zc=`/api`,Bc=1e4,Vc=4e3,Hc=3e3,Uc=1e3,Wc=12e3;function Gc(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 Kc(e){if(e instanceof le&&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 qc(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 Jc(e){let t=e.replace(/\/+$/,``);if(t.endsWith(`/api`)){let e=t.slice(0,-4);if(e.length>0)return e}return Zc($c()||`/`)}function Yc(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 Xc=/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//,Zc=e=>{let t=typeof e==`string`&&e.trim().length>0?e.trim():`/api`;if(Xc.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}},Qc=()=>{try{return a().api(`/api`)}catch{return null}},$c=()=>{try{return a().api(`/`)}catch{return null}},el=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)}},tl=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)}}},nl=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}}},rl=e=>nl(ue.make({baseUrl:e.baseUrl,...e.headers?{headers:e.headers}:{},fetch:u})),il=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),al=e=>{let t=[];for(let n of e){if(!il(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=Uo(r).trim();i&&t.push({filename:e,path:i})}return t},ol=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=>Mo(e,al([...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},sl=e=>e.replace(/\\/g,`/`),cl=400,ll=()=>{let e=d();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=zc){let t=Qc()||e;this.baseUrl=Zc(t),this.client=rl({baseUrl:Jc(this.baseUrl)})}getBaseUrl(){return this.baseUrl}reconnectToRuntimeBaseUrl(){let e=Zc(Qc()||zc);e!==this.baseUrl&&(this.baseUrl=e,this.client=rl({baseUrl:Jc(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)}getScopedApiClient(e){let t=(this.normalizeCandidatePath(e)??e)||``,n=this.scopedClients.get(t);if(n)return n;let r=rl({baseUrl:Jc(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`),$a(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`),$a(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(p(`lastDirectory`)),t(p(`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 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=Gc(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 Xe({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=Jo(t.url,t.mime);if(!n)return t;let r=await oo(n)??await(await me(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(Yo(a)){let e=Jo(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 Xo({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 ol(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??te(`msg`),a=this.normalizeCandidatePath(e.directory??null)??this.currentDirectory,o=js(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),Rc(e.providerID);let u=l.flatMap(e=>e.type===`text`&&typeof e.text==`string`?[e.text]:[]).join(`
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=be(l.flatMap(e=>e.type===`text`&&!e.synthetic?[e.text]:[]).join(`
6
- `));try{return await this.runSessionBoundary(e.id,async()=>{r();let t=e.delivery===`queue`?`queue`:`steer`;t!==`queue`&&(await this.applySendSelection(e.id,{model:e.switchModel,agent:e.switchAgent},a),r());let n={sessionID:e.id,directory:o.directory,messageID:i,text:u,delivery:t,commit:o,...d.length>0?{files:d}:{},...f.length>0?{agents:f}:{},...p.length>0?{skills:p}:{},...e.agent||e.variant||e.format||e.providerID?{metadata:{...e.agent?{agent:e.agent}:{},...e.variant?{variant:e.variant}:{},model:{providerID:e.providerID,modelID:e.modelID},...e.format?{format:e.format}:{}}}:{}},s=async()=>{r();let e=await Ns(n);return r(),e.id};try{let t=await s();return Pc(e.providerID),t}catch(t){if(r(),Ps(t)||t?.name===`RuntimeGenerationMismatchError`)throw t;let n=await Fs({sessionID:e.id,directory:o.directory,inputID:i,commit:o});if(r(),n.status===`pending`||n.status===`promoted`)return Pc(e.providerID),i;try{let t=await s();return Pc(e.providerID),t}catch(t){if(r(),Ps(t)||t?.name===`RuntimeGenerationMismatchError`)throw t;let n=await Fs({sessionID:e.id,directory:o.directory,inputID:i,commit:o});if(r(),n.status===`pending`||n.status===`promoted`)return Pc(e.providerID),i;throw t}}})}catch(t){throw Fc(e.providerID,t.status),t}}async sendCommand(e){let t=e.messageId??te(`msg`),n=[];if(e.files&&e.files.length>0)for(let t of e.files){let e=await this.toNormalizedFilePartInput(t);n.push({uri:e.url,...e.filename?{name:e.filename}:{}})}return e.directory,e.providerID,e.modelID,e.agent,e.variant,await this.client.session.command({sessionID:e.id,name:e.command,text:e.arguments??``,...n.length>0?{files:n}:{}}),t}async abortSession(e){return await Ws({sessionID:e,directory:this.currentDirectory}),!0}async shellSession(e){return e.directory,await this.client.session.shell({sessionID:e.sessionId,command:e.command,...e.messageId?{id:e.messageId}:{}}),{info:{id:e.messageId??``,sessionID:e.sessionId,role:`assistant`,time:{created:Date.now()},clientRole:`shell`,agent:e.agent,modelID:e.model.modelID,providerID:e.model.providerID},parts:[]}}async revertSession(e,t,n,r){let i=await ac({sessionID:e,directory:this.normalizeCandidatePath(r)??this.currentDirectory,messageID:t,files:!0});return{id:e,time:{created:0,updated:Date.now()},revert:i}}async summarizeSession(e,t,n,r){return await ht({sessionID:e,directory:this.normalizeCandidatePath(r)??this.currentDirectory??``}),!0}async unrevertSession(e,t){return await oc({sessionID:e,directory:this.normalizeCandidatePath(t)??this.currentDirectory}),{id:e,time:{created:0,updated:Date.now()}}}async forkSession(e,t,n){this.normalizeCandidatePath(n)??this.currentDirectory;let r=await this.client.session.fork({sessionID:e,...t?{before:t}:{}});return r.id,v(r)}async getSessionStatus(){return await this.getSessionStatusForDirectory(this.currentDirectory??null)??{}}async getSessionStatusForDirectory(e,t){return null}async getSessionActive(e){try{let t=await this.client.session.active(e?{signal:e}:void 0),n=t&&typeof t==`object`&&`data`in t&&t.data!==void 0?t.data:t;if(!n||typeof n!=`object`||Array.isArray(n))return{state:`unknown`};let r={};for(let[e,t]of Object.entries(n)){if(typeof e!=`string`||e.length===0||!t||typeof t!=`object`||t.type!==`running`)return{state:`unknown`};r[e]={type:`running`}}return{state:`supported`,membership:r}}catch(e){return qc(Kc(e))?{state:`unsupported`}:{state:`unknown`}}}async getGlobalSessionStatus(){return await this.getSessionStatusForDirectory(null)??{}}async getWebServerSessionActivity(){try{let e=await u(`/api/session-activity`,{method:`GET`,headers:{Accept:`application/json`}});if(!e.ok)return null;let t=await e.json().catch(()=>null);return!t||typeof t!=`object`?null:t}catch{return null}}async listToolIds(e){throw G(`tool.ids`)}async replyToPermission(e,t,n){let r=this.normalizeCandidatePath(n?.directory??null)??this.currentDirectory;if(!n?.sessionID)throw G(`permission.reply (sessionID required)`);return await pc({sessionID:n.sessionID,requestID:e,reply:t,...n.message?{message:n.message}:{},directory:r}),!0}async createPermission(e,t,n,r){try{let i=await this.client.permission.create({sessionID:e,action:t,resources:n,...r?.id?{id:r.id}:{},...r?.save?{save:r.save}:{},...r?.metadata?{metadata:r.metadata}:{},...r?.source?{source:r.source}:{},...r?.agent?{agent:r.agent}:{}});return!i||typeof i.id!=`string`?null:{id:i.id,effect:i.effect}}catch{return null}}async fetchPermission(e,t){try{let n=await this.client.permission.get({sessionID:e,requestID:t});return n===void 0?{state:`unknown`}:{state:`ok`,permission:n}}catch(e){return ce(e)||Kc(e)===404?{state:`resolved`}:{state:`unknown`}}}async listPendingPermissions(e){let t=[],n=async e=>{let t=await this.client.permission.request.list(K(e));if(!t||!Array.isArray(t.data))throw Error(`permission.list failed: ${Gc(t)}`);return t.data.flatMap(e=>{let t=Yc(e);return t?[t]:[]})};t.push(n(null));let r=new Set;for(let t of e?.directories??[]){let e=this.normalizeCandidatePath(t??null);e&&r.add(e)}for(let e of r)t.push(n(e));let i=await Promise.all(t),a=[],o=new Set;for(let e of i)for(let t of e){if(!t||typeof t!=`object`)continue;let e=t.id;typeof e==`string`&&e.length!==0&&(o.has(e)||(o.add(e),a.push(t)))}return a}async replyToQuestion(e,t,n,r){let i=!Array.isArray(t)||t.length===0?[]:Array.isArray(t[0])?t:[t];if(!r)throw G(`session.form.reply (sessionID required)`);let a=this.client,o=await a.session.form.get({sessionID:r,formID:e});return await a.session.form.reply({sessionID:r,formID:e,answer:wc(i,o.fields)}),!0}async rejectQuestion(e,t){if(!t)throw G(`session.form.cancel (sessionID required)`);return await this.client.session.form.cancel({sessionID:t,formID:e}),!0}async listPendingQuestions(e){let t=[],n=async e=>{let t=await this.client.form.list(K(e));if(!t||!Array.isArray(t.data))throw Error(`form.list failed: ${Gc(t)}`);return t.data.flatMap(e=>bc(e.metadata)?[Cc({id:e.id,sessionID:e.sessionID,title:e.title,fields:e.fields,...e.metadata?{metadata:e.metadata}:{}})]:[])};t.push(n(null));let r=new Set;for(let t of e?.directories??[]){let e=this.normalizeCandidatePath(t??null);e&&r.add(e)}for(let e of r)t.push(n(e));let i=await Promise.all(t),a=[],o=new Set;for(let e of i)for(let t of e){if(!t||typeof t!=`object`)continue;let e=t.id;typeof e==`string`&&e.length!==0&&(o.has(e)||(o.add(e),a.push(t)))}return a}clearConfigCache(){this.configCacheGeneration+=1,this.configInFlight.clear(),this.configCache.clear()}clearHealthCache(){this.healthCacheGeneration+=1,this.healthInFlight.clear(),this.healthCache.clear()}async getConfig(e){let t=this.normalizeCandidatePath(e)??e??this.currentDirectory??void 0,n=t??``,r=this.configCache.get(n);if(r&&r.expiresAt>Date.now())return R(`opencodeClient.getConfig:cacheHit`,{directory:t??null}),r.config;let i=this.configInFlight.get(n);if(i)return R(`opencodeClient.getConfig:deduped`,{directory:t??null}),i;let a=this.configCacheGeneration,o=(async()=>{R(`opencodeClient.getConfig:start`,{directory:t??null});let e=typeof performance<`u`?performance.now():Date.now(),r=await this.client.config.get(K(t));if(!Array.isArray(r))throw Error(`Failed to get config`);let i=xe(r),o=typeof performance<`u`?performance.now():Date.now();return R(`opencodeClient.getConfig:end`,{directory:t??null,durationMs:Math.round(o-e)}),a===this.configCacheGeneration&&this.configCache.set(n,{config:i,expiresAt:Date.now()+Bc}),i})();this.configInFlight.set(n,o);try{return await o}finally{this.configInFlight.get(n)===o&&this.configInFlight.delete(n)}}async updateConfig(e){throw G(`config.update`)}async updateConfigPartial(e){let t=e(await this.getConfig());return await this.updateConfig(t)}async getProviders(){return this.getProvidersForConfig(this.currentDirectory)}async getProvidersForConfig(e){let t=e===void 0?this.currentDirectory??void 0:this.normalizeCandidatePath(e)??void 0,n=t??``,r=this.configProvidersInFlight.get(n);if(r)return r;let i=(async()=>{let e=await this.client.provider.list(K(t));if(!e||!Array.isArray(e.data))throw Error(`config.providers failed: ${Gc(e)}`);let n={};try{let e=await this.client.model.default(K(t));e?.data&&(n[e.data.providerID]=e.data.modelID)}catch{}return{providers:e.data,default:n}})();this.configProvidersInFlight.set(n,i);try{return await i}finally{this.configProvidersInFlight.delete(n)}}async getApp(){return{version:`0.0.3`,config:await this.getConfig()}}async initApp(){try{return await this.checkHealth()}catch{return!1}}async listAgents(e,t){let n=e===void 0?this.currentDirectory??void 0:this.normalizeCandidatePath(e)??void 0,r=n??``;if(!t){let e=this.listAgentsInFlight.get(r);if(e)return e}let i=(async()=>{let e=el(Wc),r=tl(t?[t,e.signal]:[e.signal]);try{let e=K(n),t=await this.client.agent.list(e,{signal:r.signal});if(!t||!Array.isArray(t.data))throw Error(`app.agents failed: ${Gc(t)}`);return t.data.map(e=>ge(e))}finally{e.cleanup(),r.cleanup()}})();if(t)return i;this.listAgentsInFlight.set(r,i);try{return await i}finally{this.listAgentsInFlight.delete(r)}}async readFile(e){try{let t=await this.client.file.read({path:e,...K(this.currentDirectory)});return new TextDecoder().decode(t)}catch{return`// Content of ${e}\n// This would be loaded from the server`}}async listFiles(e){try{let t=e||this.currentDirectory||`/`,n=(await this.client.file.list({path:t,...K(this.currentDirectory)})).data;return Array.isArray(n)?n:[]}catch{return[]}}async listCommands(){let e=await this.client.command.list(K(this.currentDirectory)),t=e.data;if(!Array.isArray(t))throw Error(`command.list failed: ${Gc(e)}`);return t.map(e=>({name:e.name,description:e.description,agent:void 0,model:void 0,source:void 0}))}async listCommandsWithDetails(){let e=await this.client.command.list(K(this.currentDirectory)),t=e.data;if(!Array.isArray(t))throw Error(`command.list failed: ${Gc(e)}`);return t.map(e=>({name:e.name,description:e.description,agent:void 0,model:void 0,source:void 0,template:``}))}async listSkillsWithDetails(){try{let e=(await this.client.skill.list(K(this.currentDirectory))).data;if(!Array.isArray(e))return[];let t=[];for(let n of e){let e=typeof n.id==`string`?n.id:``,r=typeof n.path==`string`?n.path:``;if(!e||!r)continue;let i={name:e,location:r};typeof n.description==`string`&&(i.description=n.description),typeof n.content==`string`&&(i.content=n.content),t.push(i)}return t}catch{return[]}}async getCommandDetails(e){try{let t=await this.client.command.list(K(this.currentDirectory));if(t.data){let n=t.data.find(t=>t.name===e);if(n)return{name:n.name,template:``,description:n.description,agent:void 0,model:void 0}}return null}catch{return null}}async checkHealth(){let e=c(),t=this.healthCache.get(e);if(t&&t.expiresAt>Date.now())return t.healthy;let n=this.healthInFlight.get(e);if(n)return n;let r=this.healthCacheGeneration,i=(async()=>{let t=!1;try{let e=this.baseUrl.endsWith(`/`)?this.baseUrl.replace(/\/+$/,``):this.baseUrl,n=e===`/api`||e.endsWith(`/api`)?`/api/opencode/health`:`${e}/opencode/health`;R(`opencodeClient.checkHealth:url`,{baseUrl:this.baseUrl,healthUrl:n});let r=el(Vc),i=await u(n,{signal:r.signal}).finally(r.cleanup);if(R(`opencodeClient.checkHealth:response`,{status:i.status}),i.ok){let e=await i.json();R(`opencodeClient.checkHealth:result`,{healthy:e?.healthy}),t=e?.healthy===!0}}catch{t=!1}return r!==this.healthCacheGeneration||e!==c()?!1:(this.healthCache.set(e,{healthy:t,expiresAt:Date.now()+(t?Hc:Uc)}),t)})();this.healthInFlight.set(e,i);try{return await i}finally{this.healthInFlight.get(e)===i&&this.healthInFlight.delete(e)}}async createDirectory(e,t){let n=ll();if(n?.createDirectory)try{return await n.createDirectory(e)}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(t||`Failed to create directory`)}let r={path:e,...t?.allowOutsideWorkspace?{allowOutsideWorkspace:!0}:{}},i=await u(`${this.baseUrl}/fs/mkdir`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(r)});if(!i.ok){let e=await i.json().catch(()=>({error:`Failed to create directory`}));throw Error(e.error||`Failed to create directory`)}return await i.json()}async cloneRepository(e){let t=await u(`${this.baseUrl}/fs/clone`,{method:`POST`,headers:{"Content-Type":`application/json`,Accept:`application/json`},body:JSON.stringify(e)});if(!t.ok){let e=await t.json().catch(()=>({error:`Failed to clone repository`}));throw Error(e.error||`Failed to clone repository`)}return await t.json()}async listLocalDirectory(e,t){let n=`${typeof e==`string`?sl(e.trim()):``}|${t?.respectGitignore?`1`:`0`}`,r=Date.now(),i=this.listDirectoryCache.get(n);if(i&&i.expiresAt>r)return i.entries;let a=this.listDirectoryInFlight.get(n);if(a)return a;let o=(async()=>{let r=ll();if(r)try{let i=await r.listDirectory(e||``,t);if(!i||!Array.isArray(i.entries))return[];let a=i.entries.map(e=>({name:e.name,path:sl(e.path),isDirectory:!!e.isDirectory,isFile:!e.isDirectory,isSymbolicLink:!1}));return this.listDirectoryCache.set(n,{entries:a,expiresAt:Date.now()+cl}),a}catch(e){throw console.error(`Failed to list directory contents:`,e),e}try{let r=new URLSearchParams;e&&e.trim().length>0&&r.set(`path`,e),t?.respectGitignore&&r.set(`respectGitignore`,`true`);let i=r.toString(),a=await u(`${this.baseUrl}/fs/list${i?`?${i}`:``}`);if(!a.ok){let e=await a.json().catch(()=>({})),t=typeof e.error==`string`?e.error:`Failed to list directory`;throw Error(t)}let o=await a.json();if(!o||!Array.isArray(o.entries))return[];let s=o.entries;return this.listDirectoryCache.set(n,{entries:s,expiresAt:Date.now()+cl}),s}catch(e){throw console.error(`Failed to list directory contents:`,e),e}})().finally(()=>{this.listDirectoryInFlight.get(n)===o&&this.listDirectoryInFlight.delete(n)});return this.listDirectoryInFlight.set(n,o),o}async searchFiles(e,t){let n=typeof t?.directory==`string`&&t.directory.trim().length>0?t.directory.trim():this.currentDirectory,r=n?sl(n):null;try{let i=await this.client.file.find({query:e,...K(n),limit:typeof t?.limit==`number`&&Number.isFinite(t.limit)?t.limit:void 0,type:t?.type});return(Array.isArray(i?.data)?i.data:[]).map(e=>{let t=sl(e.path),n=t.split(`/`).filter(Boolean).pop()||t;return{name:n,path:sl(r?`${r}/${t}`:t),relativePath:t,extension:n.includes(`.`)?n.split(`.`).pop()?.toLowerCase():void 0,isDirectory:e.type===`directory`}})}catch(e){throw console.error(`Failed to search files:`,e),e}}async getFilesystemHome(){let e=c();if(!e||e===`local`){let e=await h();if(e)return e}try{let e=await u(`${this.baseUrl}/fs/home`,{method:`GET`,headers:{Accept:`application/json`}});if(!e.ok){let t=await e.json().catch(()=>({})),n=typeof t.error==`string`&&t.error.length>0?t.error:`Failed to resolve home directory`;throw Error(n)}let t=await e.json();return t&&typeof t.home==`string`&&t.home.length>0?t.home:null}catch(e){return console.warn(`Failed to resolve filesystem home directory:`,e),null}}async setOpenCodeWorkingDirectory(e){if(!e||typeof e!=`string`||!e.trim())return console.warn(`[OpencodeClient] setOpenCodeWorkingDirectory: invalid path`,e),null;let t=`${this.baseUrl}/opencode/directory`;try{let n=await u(t,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({path:e})}),r=await n.json().catch(()=>null);if(!n.ok){let e=r??{},t=typeof e.error==`string`&&e.error.length>0?e.error:`Failed to update OpenCode working directory`;throw Error(t)}return r&&typeof r==`object`?r:{success:!0,restarted:!1,path:e}}catch(e){throw console.warn(`Failed to update OpenCode working directory:`,e),e}}},ul=3e4,dl=40,fl=60,pl=(e,t,n,r,i,a)=>{let o=e.trim(),s=t.trim().toLowerCase();return JSON.stringify([o,s,n,r,i,a])},ml=(e,t)=>{try{let n=JSON.parse(e);return Array.isArray(n)&&n[0]===t}catch{return!1}},hl=ae()(oe((e,t)=>({cache:{},cacheKeys:[],inFlight:{},async searchFiles(n,r,i=fl,a){if(!n||n.trim().length===0)return[];let o=n.trim(),s=typeof r==`string`?r.trim():``,c=!!a?.includeHidden,l=a?.respectGitignore??!0,u=a?.type===`directory`?`directory`:`file`,d=pl(o,s,i,c,l,u),f=Date.now(),p=t().cache[d];if(p&&f-p.timestamp<ul)return p.files;let m=t().inFlight[d];if(m)return m;let h=q.searchFiles(s,{directory:o,limit:i,includeHidden:c,respectGitignore:l,dirs:u!==`file`,type:u}).then(t=>(e(e=>{if(e.inFlight[d]!==h)return e;let n={...e.cache,[d]:{files:t,timestamp:Date.now()}},r=e.cacheKeys.filter(e=>e!==d);for(r.push(d);r.length>dl;){let e=r.shift();e&&delete n[e]}return{cache:n,cacheKeys:r}}),t)).finally(()=>{e(e=>{if(e.inFlight[d]!==h)return e;let t={...e.inFlight};return delete t[d],{inFlight:t}})});return e(e=>({inFlight:{...e.inFlight,[d]:h}})),h},invalidateDirectory(t){if(!t||t.trim().length===0){e({cache:{},cacheKeys:[],inFlight:{}});return}let n=t.trim();e(e=>{let t={...e.cache},r=e.cacheKeys.filter(e=>!ml(e,n)||(delete t[e],!1)),i=Object.entries(e.inFlight).filter(([e])=>!ml(e,n));return{cache:t,cacheKeys:r,inFlight:Object.fromEntries(i)}})}}),{name:`file-search-store`})),gl=()=>{if(typeof window>`u`)return!1;try{return window.localStorage.getItem(`openchamber_stream_debug`)===`1`}catch{return!1}},_l=`openchamber_stream_perf`,vl=()=>{if(typeof window>`u`)return!1;try{return window.localStorage.getItem(_l)===`1`}catch{return!1}},yl=()=>typeof performance<`u`&&typeof performance.now==`function`?performance.now():Date.now(),bl=()=>{if(!vl()||typeof window>`u`)return null;if(!window.__openchamberStreamPerfState){let e=Date.now();window.__openchamberStreamPerfState={counters:new Map,startedAt:e,lastUpdatedAt:e}}return window.__openchamberStreamPerfState},xl=e=>Array.from(e.entries()).map(([e,t])=>({metric:e,count:t.count,avg:t.count>0?Number((t.total/t.count).toFixed(3)):0,max:Number(t.max.toFixed(3)),total:Number(t.total.toFixed(3)),last:Number(t.last.toFixed(3))})).sort((e,t)=>t.total-e.total||t.count-e.count),Sl=(e,t)=>{let n=bl();if(!n)return;let r=n.counters.get(e)??{count:0,total:0,max:0,last:0};r.count+=1,r.total+=t,r.max=Math.max(r.max,t),r.last=t,n.counters.set(e,r),n.lastUpdatedAt=Date.now()},Cl=e=>{if(!(typeof window>`u`))try{if(e){window.localStorage.setItem(_l,`1`),window.__openchamberStreamPerfState={counters:new Map,startedAt:Date.now(),lastUpdatedAt:Date.now()};return}window.localStorage.removeItem(_l),delete window.__openchamberStreamPerfState,delete window.__openchamberVsCodeStreamPerfState}catch{}},wl=()=>{typeof window>`u`||(vl()&&(window.__openchamberStreamPerfState={counters:new Map,startedAt:Date.now(),lastUpdatedAt:Date.now()}),window.__openchamberVsCodeStreamPerfState&&(window.__openchamberVsCodeStreamPerfState={...window.__openchamberVsCodeStreamPerfState,counters:new Map,startedAt:Date.now(),lastUpdatedAt:Date.now()}))},Tl=()=>{if(typeof window>`u`)return{enabled:!1,startedAt:null,lastUpdatedAt:null,durationMs:0,entries:[]};let e=window.__openchamberStreamPerfState;return!vl()||!e?{enabled:!1,startedAt:null,lastUpdatedAt:null,durationMs:0,entries:[]}:{enabled:!0,startedAt:e.startedAt,lastUpdatedAt:e.lastUpdatedAt,durationMs:Math.max(0,Date.now()-e.startedAt),entries:xl(e.counters)}},El=()=>{if(typeof window>`u`)return{enabled:!1,startedAt:null,lastUpdatedAt:null,durationMs:0,entries:[]};let e=window.__openchamberVsCodeStreamPerfState;if(!vl()||!e)return{enabled:!1,startedAt:null,lastUpdatedAt:null,durationMs:0,entries:[]};let t=typeof e.startedAt==`number`?e.startedAt:null;return{enabled:!0,startedAt:t,lastUpdatedAt:typeof e.lastUpdatedAt==`number`?e.lastUpdatedAt:null,durationMs:t?Math.max(0,Date.now()-t):0,entries:xl(e.counters)}},Dl=(e,t=1)=>{Sl(e,t)},Ol=(e,t)=>{Sl(e,t)},kl=(e,t)=>{if(!vl())return t();let n=yl();try{return t()}finally{Sl(e,yl()-n)}},J=null,Al=0,Y=de(),jl=p(`lastDirectory`,{storage:Y}),Ml=typeof jl==`string`&&jl.length>0,Nl=e=>{try{hl.getState().invalidateDirectory(e)}catch(e){console.warn(`Failed to invalidate file search cache:`,e)}},Pl=e=>{let t=e.trim();if(!t)return t;let n=t.replace(/\\/g,`/`).replace(/^([a-z]):/,(e,t)=>t.toUpperCase()+`:`);return n.length>1?n.replace(/\/+$/,``):n},Fl=(e,t)=>{let n=e.trim();return n.startsWith(`~`)?n===`~`?t||n:(n.startsWith(`~/`)||n.startsWith(`~\\`))&&t?`${t}${n.slice(1)}`:n:n},Il=(e,t)=>Pl(Fl(e,t)),Ll=()=>{let e=p(`homeDirectory`,{storage:Y});if(typeof e!=`string`||e.trim().length===0)return null;let t=Pl(e);return t.length>0?t:null},Rl=()=>{let e=p(`lastDirectory`,{storage:Y});if(typeof e!=`string`||e.trim().length===0)return null;let t=Pl(e);return t.length>0?t:null},zl=()=>{if(typeof process>`u`)return null;let e={},t=e?.HOME||e?.USERPROFILE||(e?.HOMEDRIVE&&e?.HOMEPATH?`${e.HOMEDRIVE}${e.HOMEPATH}`:void 0);if(typeof t==`string`&&t.trim().length>0){let e=Pl(t);return e.length>0?e:null}let n=process?.cwd?.();if(typeof n==`string`&&n.trim().length>0){let e=Pl(n);return e.length>0?e:null}return null},Bl=()=>{if(typeof window<`u`){if(J)return J;let e=typeof window.__OPENCHAMBER_HOME__==`string`&&window.__OPENCHAMBER_HOME__.length>0?window.__OPENCHAMBER_HOME__:null;if(e&&e.length>0)return J=e,f(`homeDirectory`,e,{storage:Y}),e;let t=Ll();if(t&&!ie())return J=t,t}return zl()||`/`},Vl=e=>{if(typeof e!=`string`)return null;let t=e.trim();if(!t)return null;let n=t.replace(/\\/g,`/`);if(n.length>1){let e=n.replace(/\/+$/,``);if(e&&e.length>0)return e===`/`?null:e}return n===`/`||n.length===0?null:n},Hl=e=>(J=e,typeof window<`u`&&f(`homeDirectory`,e,{storage:Y}),re({homeDirectory:e}),e),Ul=async()=>{let e=e=>{let t=Vl(e);return t?Hl(t):null};try{let t=e(await q.getFilesystemHome());if(t)return t}catch(e){console.warn(`Failed to obtain filesystem home directory:`,e)}try{let t=e((await q.getSystemInfo())?.homeDirectory);if(t)return t}catch(e){console.warn(`Failed to get home directory from system info:`,e)}try{let t=e(await h());if(t)return t}catch(e){console.warn(`Failed to obtain desktop-integrated home directory:`,e)}let t=Bl();return e(t)||t},Wl=(()=>{if(!ie())return null;let e=window.__VSCODE_CONFIG__?.workspaceFolder;if(typeof e!=`string`||e.trim().length===0)return null;let t=Pl(e);return t.length>0?t:null})()||Bl(),Gl=(()=>{let e=Rl();return e&&!ie()?Il(e,Wl):Wl})();Gl&&q.setDirectory(Gl);var Kl=!!(Wl&&Wl!==`/`),ql=ae()(oe((e,t)=>({currentDirectory:Gl,directoryHistory:[Gl],historyIndex:0,homeDirectory:Wl,hasPersistedDirectory:Ml,isHomeReady:Kl,isSwitchingDirectory:!1,setDirectory:(n,r)=>{let i=Il(n,J||t().homeDirectory||p(`homeDirectory`,{storage:Y}));gl(),he(t().currentDirectory,i)&&(q.setDirectory(i),Nl(),e(e=>{let t=[...e.directoryHistory.slice(0,e.historyIndex+1),i];return f(`lastDirectory`,i,{storage:Y}),re({lastDirectory:i}),{currentDirectory:i,directoryHistory:t,historyIndex:t.length-1,hasPersistedDirectory:!0,isHomeReady:!0,isSwitchingDirectory:!1}}))},goBack:()=>{let n=t();if(n.historyIndex>0){let t=n.historyIndex-1,r=n.directoryHistory[t];q.setDirectory(r),Nl(),f(`lastDirectory`,r,{storage:Y}),re({lastDirectory:r}),e({currentDirectory:r,historyIndex:t,hasPersistedDirectory:!0,isHomeReady:!0,isSwitchingDirectory:!1})}},goForward:()=>{let n=t();if(n.historyIndex<n.directoryHistory.length-1){let t=n.historyIndex+1,r=n.directoryHistory[t];q.setDirectory(r),Nl(),f(`lastDirectory`,r,{storage:Y}),re({lastDirectory:r}),e({currentDirectory:r,historyIndex:t,hasPersistedDirectory:!0,isHomeReady:!0,isSwitchingDirectory:!1})}},goToParent:()=>{let{currentDirectory:e,setDirectory:n}=t();if(e===(J||t().homeDirectory||Bl())||e===`/`)return;let r=e.endsWith(`/`)?e.slice(0,-1):e,i=r.lastIndexOf(`/`);n(i===-1?J||Bl():i===0?`/`:r.substring(0,i))},goHome:async()=>{let e=J||t().homeDirectory||await Ul();t().setDirectory(e)},synchronizeHomeDirectory:n=>{let r=t(),i=n;J=i;let a=r.homeDirectory!==i,o=p(`lastDirectory`,{storage:Y}),s=typeof o==`string`&&o.length>0,c=!s&&(r.currentDirectory===`/`||r.currentDirectory===r.homeDirectory||!r.currentDirectory);if(!a&&!c){r.isHomeReady||e({isHomeReady:!0});return}let l=typeof i==`string`&&i!==``&&i!==`/`,u=r.currentDirectory?Il(r.currentDirectory,i):r.currentDirectory,d=r.directoryHistory.map(e=>Il(e,i)),m=d.some((e,t)=>e!==r.directoryHistory[t]),h=!!(u&&u!==r.currentDirectory),g={homeDirectory:i,hasPersistedDirectory:s,isHomeReady:l};if(c?(g.currentDirectory=i,g.directoryHistory=[i],g.historyIndex=0,g.isSwitchingDirectory=!1):(h||m)&&(g.currentDirectory=u,g.directoryHistory=d,g.historyIndex=Math.min(r.historyIndex,d.length-1),g.isSwitchingDirectory=!1),e(()=>g),(c||h)&&l){let e=c?i:u;q.setDirectory(e),Nl(),f(`lastDirectory`,e,{storage:Y}),re({lastDirectory:e})}re({homeDirectory:i})}}),{name:`directory-store`}));typeof window<`u`&&(Ul().then(e=>{ql.getState().synchronizeHomeDirectory(e)}),i(e=>{J=null;let t=++Al;if(l(e)){let e=Ll(),t=Rl(),n=e||`/`,r=t||n;J=e,ql.setState({currentDirectory:r,directoryHistory:[r],historyIndex:0,homeDirectory:n,hasPersistedDirectory:!!t,isHomeReady:!!(e&&e!==`/`),isSwitchingDirectory:!1}),r&&(q.setDirectory(r),Nl())}Ul().then(e=>{t===Al&&ql.getState().synchronizeHomeDirectory(e)})}));var Jl=(e,i)=>{let a=t();return a?a.openWebSocket(r(e),i):n(i?new WebSocket(e,i):new WebSocket(e))},X=`/api/git`,Yl=1200,Xl=5e3,Zl=2,Ql=5e3,$l=`${X}/worktrees/queue-activation`,eu=`message_queue_activation_pending`,tu=`worktree_lifecycle_busy`,nu=`worktree_activation_stale`,ru=5e3,iu=3e4,au=[0,500,1e3,2e3,4e3,8e3,14e3],ou=new Map,su=new Map,cu=new Map,lu=new Map,uu=new Map,du=new Map,fu=new Map,pu=new Map,mu=new Map,hu=new Map,gu=new Set,_u=0,vu=[],yu=()=>_u<Zl?(_u+=1,Promise.resolve()):new Promise(e=>{vu.push(e)}),bu=()=>{let e=vu.shift();if(e){e();return}_u=Math.max(0,_u-1)},xu=async e=>{await yu();try{return await e()}finally{bu()}},Su=Symbol.for(`openchamber.git.discoveryGated`),Cu=e=>(Object.defineProperty(e,Su,{value:!0,configurable:!0}),e),wu=e=>typeof e==`function`&&e[Su]===!0,Z=e=>e.trim(),Tu=(e,t)=>t===`light`?`${Z(e)}::light`:Z(e),Eu=e=>cu.get(Z(e))??0,Q=e=>{let t=Z(e);cu.set(t,Eu(e)+1);for(let e of Array.from(ou.keys()))(e===t||e.startsWith(`${t}::`))&&ou.delete(e);for(let e of Array.from(su.keys()))(e===t||e.startsWith(`${t}::`))&&su.delete(e)},Du=e=>hu.get(Z(e))??0,Ou=e=>{let t=Z(e);t&&(hu.set(t,Du(e)+1),pu.delete(t),mu.delete(t))};function $(e,t,n){let r={...n};return t&&(r.directory=t),a().api(e,r)}var ku=(e,t,n)=>{let r=Z(e);if(!r)return;let i=Date.now()+Ql;lu.set(r,{value:t,expiresAt:i});let a=typeof n==`string`&&n?n:e;du.set(r,{value:{root:a},expiresAt:i})};async function Au(e){let t=Array.from(new Set(e.map(e=>Z(e)).filter(Boolean))),n=new Map;if(t.length===0)return n;let r=Date.now(),i=[];for(let e of t){let t=lu.get(e),a=du.get(e);if(t&&t.expiresAt>r&&a&&a.expiresAt>r){n.set(e,{isGitRepository:t.value,primaryRoot:a.value.root});continue}i.push(e)}if(i.length===0)return n;let o=e=>{for(let t of e){let e=typeof t.directory==`string`?Z(t.directory):``;if(!e)continue;let r=!!t.isGitRepository,i=typeof t.primaryRoot==`string`&&t.primaryRoot?t.primaryRoot:null;ku(e,r,i),n.set(e,{isGitRepository:r,primaryRoot:i})}},s=async e=>{await Promise.all(e.map(async e=>{try{let[t,r]=await Promise.all([ju(e),Nu(e).then(e=>e.root).catch(()=>e)]);ku(e,t,t?r:null),n.set(e,{isGitRepository:t,primaryRoot:t?r:null})}catch{ku(e,!1,null),n.set(e,{isGitRepository:!1,primaryRoot:null})}}))};try{await xu(async()=>{let e=new URLSearchParams;for(let t of i)e.append(`directories`,t);let t=a().api(`${X}/discover`),n=e.toString(),r=n?t.includes(`?`)?`${t}&${n}`:`${t}?${n}`:t,s=await u(r);if(s.status===501||!s.ok)throw Error(`Batch git discover unavailable: ${s.status} ${s.statusText}`);let c=await s.json().catch(()=>null),l=Array.isArray(c)?c:[];if(l.length===0&&i.length>0)throw Error(`Batch git discover returned empty payload`);o(l)})}catch{}let c=i.filter(e=>!n.has(e));return c.length>0&&await s(c),n}async function ju(e){let t=Z(e),n=Date.now(),r=lu.get(t);if(r&&r.expiresAt>n)return r.value;let i=uu.get(t);if(i)return i;let a=(async()=>{let n=await u($(`${X}/check`,e));if(!n.ok)throw Error(`Failed to check git repository: ${n.statusText}`);let r=!!(await n.json()).isGitRepository;return lu.set(t,{value:r,expiresAt:Date.now()+Xl}),r})();uu.set(t,a);try{return await a}finally{uu.get(t)===a&&uu.delete(t)}}async function Mu(e,t){let n=t?.mode,r=Tu(e,n),i=Date.now(),a=ou.get(r);if(a&&a.expiresAt>i)return a.value;let o=su.get(r);if(o)return o;let s=(async()=>{let t=Eu(e),i=await u($(`${X}/status`,e,n?{mode:n}:void 0));if(!i.ok)throw Error(`Failed to get git status: ${i.statusText}`);let a=await i.json();return Eu(e)===t&&ou.set(r,{value:a,expiresAt:Date.now()+Yl}),a})();su.set(r,s);try{return await s}finally{su.get(r)===s&&su.delete(r)}}async function Nu(e){let t=Z(e),n=Date.now(),r=du.get(t);if(r&&r.expiresAt>n)return r.value;let i=fu.get(t);if(i)return i;let a=xu(async()=>{let n=await u($(`${X}/primary-root`,e));if(!n.ok)throw Error(`Failed to resolve git primary root: ${n.statusText}`);let r=await n.json().catch(()=>({})),i={root:typeof r.root==`string`&&r.root?r.root:e};return du.set(t,{value:i,expiresAt:Date.now()+Ql}),i});fu.set(t,a);try{return await a}finally{fu.get(t)===a&&fu.delete(t)}}async function Pu(e){let t=await u($(`${X}/toplevel`,e));if(!t.ok)throw Error(`Failed to resolve git toplevel: ${t.statusText}`);let n=await t.json().catch(()=>({}));return{root:typeof n.root==`string`&&n.root?n.root:e}}async function Fu(e,t){let{path:n,staged:r,contextLines:i}=t;if(!n)throw Error(`path is required to fetch git diff`);let a=await u($(`${X}/diff`,e,{path:n,staged:r?`true`:void 0,context:i}));if(!a.ok)throw Error(`Failed to get git diff: ${a.statusText}`);return a.json()}async function Iu(e,t){let{path:n,staged:r}=t;if(!n)throw Error(`path is required to fetch git file diff`);let i=await u($(`${X}/file-diff`,e,{path:n,staged:r?`true`:void 0}));if(!i.ok)throw Error(`Failed to get git file diff: ${i.statusText}`);return i.json()}async function Lu(e,t,n){if(!t)throw Error(`path is required to revert git changes`);let r=await u($(`${X}/revert`,e),{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({path:t,scope:n?.scope})});if(!r.ok){let e=await r.json().catch(()=>({error:r.statusText}));throw Error(e.error||`Failed to revert git changes`)}Q(e)}async function Ru(e,t){await zu(e,[t])}async function zu(e,t){let n=t.map(e=>e.trim()).filter(Boolean);if(n.length===0)throw Error(`path is required to stage git changes`);let r=await u($(`${X}/stage`,e),{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({paths:n})});if(!r.ok){let e=await r.json().catch(()=>({error:r.statusText}));throw Error(e.error||`Failed to stage git changes`)}Q(e)}async function Bu(e,t){await Vu(e,[t])}async function Vu(e,t){let n=t.map(e=>e.trim()).filter(Boolean);if(n.length===0)throw Error(`path is required to unstage git changes`);let r=await u($(`${X}/unstage`,e),{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({paths:n})});if(!r.ok){let e=await r.json().catch(()=>({error:r.statusText}));throw Error(e.error||`Failed to unstage git changes`)}Q(e)}async function Hu(e,t,n){await Gu(e,t,n,`stage`)}async function Uu(e,t,n){await Gu(e,t,n,`unstage`)}async function Wu(e,t,n){await Gu(e,t,n,`discard`)}async function Gu(e,t,n,r){if(!t)throw Error(`path is required to apply a git hunk`);if(typeof n!=`string`||!n.trim())throw Error(`patch is required to apply a git hunk`);let i=await u($(`${X}/apply-hunk`,e),{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({path:t,patch:n,action:r})});if(!i.ok){let e=await i.json().catch(()=>({error:i.statusText}));throw Error(e.error||`Failed to apply git hunk`)}Q(e)}async function Ku(e){if(!e)return!1;let t=await u($(`${X}/worktree-type`,e));if(!t.ok)throw Error(`Failed to detect worktree type: ${t.statusText}`);return!!(await t.json()).linked}async function qu(e,t){let n=await u($(`${X}/branches`,e),{signal:t?.signal});if(!n.ok)throw Error(`Failed to get branches: ${n.statusText}`);return n.json()}async function Ju(e,t){if(!t?.branch)throw Error(`branch is required to delete a branch`);let n=await u($(`${X}/branches`,e),{method:`DELETE`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)});if(!n.ok){let e=await n.json().catch(()=>({error:n.statusText}));throw Error(e.error||`Failed to delete branch`)}return n.json()}async function Yu(e,t){if(!t?.branch)throw Error(`branch is required to delete remote branch`);let n=await u($(`${X}/remote-branches`,e),{method:`DELETE`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)});if(!n.ok){let e=await n.json().catch(()=>({error:n.statusText}));throw Error(e.error||`Failed to delete remote branch`)}return n.json()}async function Xu(e,t){let n=t?.remote?.trim();if(!n)throw Error(`remote is required to remove a remote`);let r=await u($(`${X}/remotes`,e),{method:`DELETE`,headers:{"Content-Type":`application/json`},body:JSON.stringify({remote:n})});if(!r.ok){let e=await r.json().catch(()=>({error:r.statusText}));throw Error(e.error||`Failed to remove remote`)}return r.json()}async function Zu(e,t,n){if(!Array.isArray(t)||t.length===0)throw Error(`No files provided to generate commit message`);let r={files:t};n?.zenModel&&(r.zenModel=n.zenModel),n?.providerId&&(r.providerId=n.providerId),n?.modelId&&(r.modelId=n.modelId);let i=await u($(`${X}/commit-message`,e),{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(r)});if(!i.ok){let e=await i.json().catch(()=>({error:i.statusText}));console.error(`[git-generation][browser] http error`,{status:i.status,statusText:i.statusText,error:e});let t=typeof e?.traceId==`string`&&e.traceId?` (traceId: ${e.traceId})`:``;throw Error(`${e.error||`Failed to generate commit message`}${t}`)}let a=await i.json();if(!a?.message||typeof a.message!=`object`)throw Error(`Malformed commit generation response`);return{message:{subject:typeof a.message.subject==`string`&&a.message.subject.trim().length>0?a.message.subject.trim():``,highlights:Array.isArray(a.message.highlights)?a.message.highlights.filter(e=>typeof e==`string`&&e.trim().length>0).map(e=>e.trim()):[]}}}async function Qu(e,t){let{base:n,head:r,context:i,zenModel:a,providerId:o,modelId:s}=t;if(!n||!r)throw Error(`base and head are required`);let c={base:n,head:r};i?.trim()&&(c.context=i.trim()),a&&(c.zenModel=a),o&&(c.providerId=o),s&&(c.modelId=s);let l=await u($(`${X}/pr-description`,e),{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(c)});if(!l.ok){let e=await l.json().catch(()=>({error:l.statusText}));throw Error(e.error||`Failed to generate PR description`)}let d=await l.json().catch(()=>null),f=typeof d?.title==`string`?d.title:``,p=typeof d?.body==`string`?d.body:``;if(!f&&!p)throw Error(`Malformed PR description response`);return{title:f,body:p}}async function $u(e){let t=Z(e),n=Date.now(),r=pu.get(t);if(r&&r.expiresAt>n)return r.value;let i=mu.get(t);if(i)return i;let a=Du(e),o=xu(async()=>{let n=await u($(`${X}/worktrees`,e));if(!n.ok){let e=await n.json().catch(()=>({error:n.statusText}));throw Error(e.error||`Failed to list worktrees`)}let r=await n.json();return a===Du(e)&&pu.set(t,{value:r,expiresAt:Date.now()+Ql}),r});mu.set(t,o);try{return await o}finally{mu.get(t)===o&&mu.delete(t)}}Cu($u);async function ed(e,t){let n=await u($(`${X}/worktrees/validate`,e),{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t??{})});if(!n.ok){let e=await n.json().catch(()=>({error:n.statusText}));throw Error(e.error||`Failed to validate worktree`)}return n.json()}async function td(e){let t=await u($(`${X}/worktrees/bootstrap-status`,e));if(!t.ok){let e=await t.json().catch(()=>({error:t.statusText}));throw Error(e.error||`Failed to get worktree bootstrap status`)}return t.json()}async function nd(e,t){let n=await u($(`${X}/worktrees/preview`,e),{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t??{})});if(!n.ok){let e=await n.json().catch(()=>({error:n.statusText}));throw Error(e.error||`Failed to preview worktree`)}return n.json()}var rd=e=>typeof e==`string`&&e.length>0,id=e=>{if(!e||typeof e!=`object`)return null;let t=e;if(!rd(t.name)||!rd(t.path))return null;let n={head:typeof t.head==`string`?t.head:``,name:t.name,branch:typeof t.branch==`string`?t.branch:``,path:t.path};return t.directoryCreated===!0&&(n.directoryCreated=!0),t.bootstrapStatus&&typeof t.bootstrapStatus==`object`&&(n.bootstrapStatus=t.bootstrapStatus),n},ad=(e,t,n)=>{if(e!==503||!t||typeof t!=`object`)return null;let r=t;if(r.code!==eu)return null;let i=id(r.worktree);if(!i)return null;let a=r.repair;if(!a||typeof a!=`object`)return null;let o=a;if(o.method!==`POST`||o.path!==$l)return null;let s=o.body;if(!s||typeof s!=`object`)return null;let c=s;return c.projectDirectory!==n||c.directory!==i.path?null:i},od=(e,t,n,r)=>`${e}\u0000${t}\u0000${n}\u0000${r}`,sd=e=>new Promise(t=>{setTimeout(t,e)}),cd=async e=>{if(e.status===409){let t=await e.json().catch(()=>null);return t?.code===tu||t?.code===nu}return e.status===503&&(await e.json().catch(()=>null))?.code===eu},ld=e=>e===400||e===401||e===403||e===501,ud=(e,t)=>{let n=o(),r=s(),i=od(n,r,e,t);if(gu.has(i))return;gu.add(i);let a=()=>o()===n&&s()===r;(async()=>{let n=Date.now(),r=0;for(;Date.now()-n<iu;){if(!a())return;let i=au[Math.min(r,au.length-1)]??0;if(i>0){let e=iu-(Date.now()-n);if(e<=0||(await sd(Math.min(i,e)),!a()))return}let o=new AbortController,s=setTimeout(()=>o.abort(),ru);try{let n=await u($($l,void 0),{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({projectDirectory:e,directory:t}),signal:o.signal});if(n.ok||ld(n.status))return;if(await cd(n)){r+=1;continue}return}catch{r+=1}finally{clearTimeout(s)}}})().catch(()=>{}).finally(()=>{gu.delete(i)})};async function dd(e,t){let n=await u($(`${X}/worktrees`,e),{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t??{})}),r=await n.json().catch(()=>null);if(n.ok){let t=id(r);if(t)return Ou(e),t;if(r&&typeof r==`object`)return Ou(e),r;throw Error(`Failed to create worktree`)}let i=ad(n.status,r,e);if(i)return Ou(e),ud(e,i.path),i;let a=r&&typeof r==`object`?r:{error:n.statusText};throw Error(a.error||`Failed to create worktree`)}async function fd(e,t){let n=await u($(`${X}/worktrees`,e),{method:`DELETE`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t??{})});if(!n.ok){let e=await n.json().catch(()=>({error:n.statusText}));throw Error(e.error||`Failed to delete worktree`)}let r=await n.json();return Ou(e),r}async function pd(e,t,n={}){let r=await u($(`${X}/commit`,e),{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({message:t,addAll:n.addAll??!1,files:n.files,stageFiles:n.stageFiles})});if(!r.ok){let e=await r.json().catch(()=>({error:r.statusText}));throw Error(e.error||`Failed to create commit`)}let i=await r.json();return Q(e),i}async function md(e,t={}){let n=await u($(`${X}/push`,e),{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)});if(!n.ok){let e=await n.json().catch(()=>({error:n.statusText}));throw Error(e.error||`Failed to push`)}let r=await n.json();return Q(e),r}async function hd(e,t={}){let n=await u($(`${X}/pull`,e),{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)});if(!n.ok){let e=await n.json().catch(()=>({error:n.statusText}));throw Error(e.error||`Failed to pull`)}let r=await n.json();return Q(e),r}async function gd(e,t={}){let n=await u($(`${X}/fetch`,e),{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)});if(!n.ok){let e=await n.json().catch(()=>({error:n.statusText}));throw Error(e.error||`Failed to fetch`)}let r=await n.json();return Q(e),r}async function _d(e){let t=await u($(`${X}/stashes`,e));if(!t.ok){let e=await t.json().catch(()=>({error:t.statusText}));throw Error(e.error||`Failed to list stashes`)}return t.json()}async function vd(e,t){let n=await u($(`${X}/stashes/file-counts`,e),{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({refs:t})});if(!n.ok){let e=await n.json().catch(()=>({error:n.statusText}));throw Error(e.error||`Failed to count stash files`)}return n.json()}async function yd(e,t={}){let n=await u($(`${X}/stash`,e),{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)});if(!n.ok){let e=await n.json().catch(()=>({error:n.statusText}));throw Error(e.error||`Failed to stash changes`)}return n.json()}var bd=async(e,t,n)=>{let r=await u($(`${X}/${t}`,e),{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(n)});if(!r.ok){let e=await r.json().catch(()=>({error:r.statusText}));throw Error(e.error||`Failed to ${t}`)}return r.json()},xd=(e,t)=>bd(e,`stash/apply`,t),Sd=(e,t)=>bd(e,`stash/pop`,t),Cd=(e,t)=>bd(e,`stash/drop`,t);async function wd(e,t){let n=await u($(`${X}/checkout`,e),{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({branch:t})});if(!n.ok){let e=await n.json().catch(()=>({error:n.statusText}));throw Error(e.error||`Failed to checkout branch`)}return n.json()}async function Td(e,t,n){let r=await u($(`${X}/branches`,e),{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({name:t,startPoint:n})});if(!r.ok){let e=await r.json().catch(()=>({error:r.statusText}));throw Error(e.error||`Failed to create branch`)}return r.json()}async function Ed(e,t,n){let r=await u($(`${X}/branches/rename`,e),{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({oldName:t,newName:n})});if(!r.ok){let e=await r.json().catch(()=>({error:r.statusText}));throw Error(e.error||`Failed to rename branch`)}return r.json()}async function Dd(e,t={}){let n=await u($(`${X}/log`,e,{maxCount:t.maxCount,from:t.from,to:t.to,file:t.file,all:t.all?`true`:void 0}));if(!n.ok){let e=await n.json().catch(()=>({error:n.statusText}));throw Error(`Failed to get git log: ${e.error||n.statusText}`)}return n.json()}async function Od(e,t){let n=await u($(`${X}/commit-files`,e,{hash:t}));if(!n.ok)throw Error(`Failed to get commit files: ${n.statusText}`);return n.json()}async function kd(e,t,n,r){let i=await u($(`${X}/commit-file-diff`,e,{hash:t,path:n,binary:r?`true`:void 0}));if(!i.ok)throw Error(`Failed to get commit file diff: ${i.statusText}`);return i.json()}async function Ad(){let e=await u($(`${X}/identities`,void 0));if(!e.ok)throw Error(`Failed to get git identities: ${e.statusText}`);return e.json()}async function jd(e){let t=await u($(`${X}/identities`,void 0),{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)});if(!t.ok){let e=await t.json().catch(()=>({error:t.statusText}));throw Error(e.error||`Failed to create git identity`)}return t.json()}async function Md(e,t){let n=await u($(`${X}/identities/${e}`,void 0),{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)});if(!n.ok){let e=await n.json().catch(()=>({error:n.statusText}));throw Error(e.error||`Failed to update git identity`)}return n.json()}async function Nd(e){let t=await u($(`${X}/identities/${e}`,void 0),{method:`DELETE`});if(!t.ok){let e=await t.json().catch(()=>({error:t.statusText}));throw Error(e.error||`Failed to delete git identity`)}}async function Pd(e){if(!e)return null;let t=await u($(`${X}/current-identity`,e));if(!t.ok)throw Error(`Failed to get current git identity: ${t.statusText}`);let n=await t.json();return n?{userName:n.userName??null,userEmail:n.userEmail??null,sshCommand:n.sshCommand??null}:null}async function Fd(e){if(!e)return!1;let t=await u($(`${X}/has-local-identity`,e));if(!t.ok)throw Error(`Failed to check local identity: ${t.statusText}`);return(await t.json().catch(()=>null))?.hasLocalIdentity===!0}async function Id(){let e=await u($(`${X}/global-identity`,void 0));if(!e.ok)throw Error(`Failed to get global git identity: ${e.statusText}`);let t=await e.json();return!t||!t.userName&&!t.userEmail?null:{userName:t.userName??null,userEmail:t.userEmail??null,sshCommand:t.sshCommand??null}}async function Ld(e,t){let n=await u($(`${X}/set-identity`,e),{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({profileId:t})});if(!n.ok){let e=await n.json().catch(()=>({error:n.statusText}));throw Error(e.error||`Failed to set git identity`)}return n.json()}async function Rd(){let e=await u($(`${X}/discover-credentials`,void 0));if(!e.ok)throw Error(`Failed to discover git credentials: ${e.statusText}`);return e.json()}async function zd(e,t){let n=await u($(`${X}/remotes`,e),{signal:t?.signal});if(!n.ok)throw Error(`Failed to get remotes: ${n.statusText}`);return n.json()}async function Bd(e,t){let n=await u($(`${X}/rebase`,e),{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)});if(!n.ok){let e=await n.json().catch(()=>({error:n.statusText}));throw Error(e.error||`Failed to rebase`)}return n.json()}async function Vd(e){let t=await u($(`${X}/rebase/abort`,e),{method:`POST`});if(!t.ok){let e=await t.json().catch(()=>({error:t.statusText}));throw Error(e.error||`Failed to abort rebase`)}return t.json()}async function Hd(e,t){let n=await u($(`${X}/merge`,e),{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)});if(!n.ok){let e=await n.json().catch(()=>({error:n.statusText}));throw Error(e.error||`Failed to merge`)}return n.json()}async function Ud(e,t){let n=await u($(`${X}/checkout-commit`,e),{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({hash:t})});if(!n.ok){let e=await n.json().catch(()=>({error:n.statusText}));throw Error(e.error||`Failed to checkout commit`)}return n.json()}async function Wd(e,t){let n=await u($(`${X}/cherry-pick`,e),{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({hash:t})});if(!n.ok){let e=await n.json().catch(()=>({error:n.statusText}));throw Error(e.error||`Failed to cherry-pick`)}return n.json()}async function Gd(e,t){let n=await u($(`${X}/revert-commit`,e),{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({hash:t})});if(!n.ok){let e=await n.json().catch(()=>({error:n.statusText}));throw Error(e.error||`Failed to revert commit`)}return n.json()}async function Kd(e,t,n,r){let i=await u($(`${X}/reset-to-commit`,e),{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({hash:t,mode:n,force:r})});if(!i.ok){let e=await i.json().catch(()=>({error:i.statusText}));throw Error(e.error||`Failed to reset`)}return i.json()}async function qd(e){let t=await u($(`${X}/merge/abort`,e),{method:`POST`});if(!t.ok){let e=await t.json().catch(()=>({error:t.statusText}));throw Error(e.error||`Failed to abort merge`)}return t.json()}async function Jd(e){let t=await u($(`${X}/rebase/continue`,e),{method:`POST`});if(!t.ok){let e=await t.json().catch(()=>({error:t.statusText}));throw Error(e.error||`Failed to continue rebase`)}return t.json()}async function Yd(e){let t=await u($(`${X}/merge/continue`,e),{method:`POST`});if(!t.ok){let e=await t.json().catch(()=>({error:t.statusText}));throw Error(e.error||`Failed to continue merge`)}return t.json()}async function Xd(e,t){return await yd(e,{message:t?.message}),{success:!0}}async function Zd(e){return await Sd(e,{ref:`stash@{0}`}),{success:!0}}async function Qd(e){let t=await u($(`${X}/conflict-details`,e));if(!t.ok)throw Error(`Failed to get conflict details: ${t.statusText}`);return t.json()}async function $d(e,t){let n=await u(`${X}/validate-directory`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({directory:e,worktreeRoot:t})});if(!n.ok)throw Error(`Failed to validate worktree directory: ${n.statusText}`);return n.json()}async function ef(e){let t=await u(`${X}/canonicalize-worktree-state`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({directory:e})});if(!t.ok)throw Error(`Failed to canonicalize worktree state: ${t.statusText}`);return t.json()}var tf=()=>typeof window>`u`?!1:window.Capacitor?.isNativePlatform?.()===!0||window.location.protocol===`capacitor:`,nf=()=>{if(typeof window>`u`||!tf()||rf()!==`ios`)return!1;let e=navigator.userAgent||``,t=navigator.maxTouchPoints??0;return/iPad/i.test(e)||/Macintosh|MacIntel/i.test(e)&&t>1},rf=()=>{if(typeof window<`u`){let e=window.Capacitor?.getPlatform?.();if(e===`ios`||e===`android`)return e}return ie()?`vscode`:m()?`desktop`:`web`};export{Bd as $,fa as $n,Fn as $r,Ls as $t,Qd as A,be as Ai,co as An,mi as Ar,kl as At,zd as B,Wa as Bn,Dr as Br,Cc as Bt,Rd as C,Ae as Ci,Po as Cn,Mi as Cr,ql as Ct,Qu as D,Te as Di,zo as Dn,N as Dr,Cl as Dt,Zu as E,Ee as Ei,Oo as En,Oi as Er,wl as Et,Ad as F,Ba as Fn,Wr as Fr,wc as Ft,Ou as G,Ma as Gn,vr as Gr,oc as Gt,hd as H,za as Hn,yr as Hr,mc as Ht,Dd as I,Fa as In,Ar as Ir,bc as It,_d as J,na as Jn,jn as Jr,ic as Jt,wu as K,La as Kn,fr as Kr,sc as Kt,Mu as L,Pa as Ln,jr as Lr,hc as Lt,qu as M,ve as Mi,Qa as Mn,Pr as Mr,hl as Mt,Fu as N,ge as Ni,Ra as Nn,Lr as Nr,q as Nt,kd as O,xe as Oi,ko as On,ji as Or,gl as Ot,Iu as P,ye as Pi,Va as Pn,Br as Pr,vc as Pt,nd as Q,$i as Qn,Dn as Qr,Gs as Qt,td as R,Ia as Rn,Vr as Rr,yc as Rt,Yu as S,$e as Si,No as Sn,Ri as Sr,Jl as St,Cd as T,Ce as Ti,Lo as Tn,Li as Tr,El as Tt,md as U,Na as Un,Sr as Ur,pc as Ut,gd as V,Ga as Vn,br as Vr,_c as Vt,Fd as W,Ha as Wn,xr as Wr,Qs as Wt,Hd as X,Ta as Xn,Nn as Xr,Vs as Xt,$u as Y,pa as Yn,bn as Yr,Is as Yt,Sd as Z,ea as Zn,In as Zr,Us as Zt,jd as _,Xe as _i,$o as _n,j as _r,Uu as _t,Vd as a,wn as ai,_s as an,ga as ar,Gd as at,Nd as b,Me as bi,To as bn,zi as br,$d as bt,ju as c,pn as ci,ss as cn,Ki as cr,Ld as ct,Wd as d,zt as di,hs as dn,Hi as dr,Hu as dt,Pn as ei,Ws as en,ua as er,Xu as et,Yd as f,$t as fi,ts as fn,Pi as fr,Xd as ft,pd as g,Qe as gi,es as gn,Bi as gr,Vu as gt,Td as h,ct as hi,R as hn,Fi as hr,Bu as ht,qd as i,Cn as ii,B as in,oa as ir,Pu as it,Pd as j,_e as ji,fo as jn,hi as jr,Ol as jt,Od as k,v as ki,lo as kn,Si as kr,Dl as kt,wd as l,tn as li,bs as ln,Wi as lr,Ru as lt,vd as m,mt as mi,V as mn,Ii as mr,Zd as mt,tf as n,vn as ni,zs as nn,ia as nr,Kd as nt,xd as o,xn as oi,gs as on,Ca as or,Lu as ot,Jd as p,ut as pi,ys as pn,Ai as pr,yd as pt,Ku as q,ra as qn,Mn as qr,ac as qt,nf as r,_n as ri,rs as rn,ma as rr,Nu as rt,ef as s,dn as si,fs as sn,va as sr,Wu as st,rf as t,yn as ti,Bs as tn,xa as tr,Ed as tt,Ud as u,cn as ui,ms as un,Ui as ur,zu as ut,dd as v,Ne as vi,Fo as vn,ki as vr,Md as vt,Au as w,we as wi,Io as wn,M as wr,Tl as wt,fd as x,Je as xi,Eo as xn,Vi as xr,xu as xt,Ju as y,Be as yi,wo as yn,Ni as yr,ed as yt,Id as z,Ua as zn,Rr as zr,gc as zt};