@openchambery/web 2.1.10-beta.12 → 2.1.10-beta.14

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 (82) hide show
  1. package/dist/assets/{AgentAvatar-D8ipj0Vr.js → AgentAvatar-VWQTTR4M.js} +1 -1
  2. package/dist/assets/{AssistantView-o_2FGmWi.js → AssistantView-uhR4tG6b.js} +3 -3
  3. package/dist/assets/{DiagramView-BkIY1i8Z.js → DiagramView-BfhJnCcf.js} +1 -1
  4. package/dist/assets/{FadeInOnReveal-CUnBy-rf.js → FadeInOnReveal-fsguD-xX.js} +1 -1
  5. package/dist/assets/{Icon-DJOJhmkK.js → Icon-CEQUcqTJ.js} +1 -1
  6. package/dist/assets/{ImageLoadingPlaceholder-BfOy_RFL.js → ImageLoadingPlaceholder-Bel8eqgg.js} +1 -1
  7. package/dist/assets/{LoadingImage-DAp7ygoZ.js → LoadingImage-DjkSZxMq.js} +1 -1
  8. package/dist/assets/{MarkdownRenderer-CVFTXv6T.js → MarkdownRenderer-Dhwafy6t.js} +2 -2
  9. package/dist/assets/{MarkdownRendererImpl-xDJ3_wfo.js → MarkdownRendererImpl-D39bq7ia.js} +1 -1
  10. package/dist/assets/{MarkstreamRendererImpl-CARsxzOk.js → MarkstreamRendererImpl-s1tH7v6E.js} +1 -1
  11. package/dist/assets/{MobileDetailNavigation-C7XoCy6_.js → MobileDetailNavigation-DoOzaME3.js} +1 -1
  12. package/dist/assets/MobileShareBridge-WSUxqxLs.js +4 -0
  13. package/dist/assets/{MobileTabPageHeader-BfA3Blg2.js → MobileTabPageHeader-PM2MKTCR.js} +1 -1
  14. package/dist/assets/{MultiRunWindow-DEzF6uXQ.js → MultiRunWindow-COhHKQIm.js} +1 -1
  15. package/dist/assets/{OnboardingScreen-C2l09plq.js → OnboardingScreen-CQuSd1SL.js} +1 -1
  16. package/dist/assets/{OverlayScrollbar-Dr5XwsW5.js → OverlayScrollbar-DI271QYq.js} +1 -1
  17. package/dist/assets/{SettingsView-D75F19Z9.js → SettingsView-BkJBlkrH.js} +11 -11
  18. package/dist/assets/{SettingsWindow-DyBoEjPj.js → SettingsWindow-DmGQR_de.js} +1 -1
  19. package/dist/assets/{TerminalView-DRgyfXdO.js → TerminalView-BLylm4N1.js} +1 -1
  20. package/dist/assets/{ToolOutputDialog-KoIg0zrK.js → ToolOutputDialog-BgKvvlMQ.js} +3 -3
  21. package/dist/assets/{ToolOutputDialog-C1c4G7q4.css → ToolOutputDialog-C7usOU7_.css} +1 -1
  22. package/dist/assets/{appThemeRegistry-D7s0BCM_.js → appThemeRegistry-C21TnFyE.js} +1 -1
  23. package/dist/assets/{assistant-attachment-cache-dU-EaPYt.js → assistant-attachment-cache-BWe8KqRS.js} +1 -1
  24. package/dist/assets/{button--NSU9MZj.js → button-9V3jJ3gG.js} +1 -1
  25. package/dist/assets/{collapsible-B9JDgD12.js → collapsible-Cx3lMy_W.js} +1 -1
  26. package/dist/assets/{diagram-Xy80Pnhl.js → diagram-Bpt5dSrL.js} +1 -1
  27. package/dist/assets/{dialog-DMF6va3u.js → dialog-Yxau54Tq.js} +1 -1
  28. package/dist/assets/{dropdown-menu.styles-DSndmPAq.js → dropdown-menu.styles-CtzReuqO.js} +1 -1
  29. package/dist/assets/{es-ChfgOskU.js → es-DsJ_HQyU.js} +1 -1
  30. package/dist/assets/{fileMentionTouchSelection-CagpeffM.js → fileMentionTouchSelection-CFpbCHok.js} +1 -1
  31. package/dist/assets/{fr-DnKqN4E3.js → fr-Dfkjku77.js} +1 -1
  32. package/dist/assets/{gitApi-BVwik90d.js → gitApi-BEDLfTkj.js} +1 -1
  33. package/dist/assets/{image-loading-BbXaWHv9.js → image-loading-ClZBSNMo.js} +1 -1
  34. package/dist/assets/{input-C0EI9bKy.js → input-BqE6rFfR.js} +1 -1
  35. package/dist/assets/{insertionBoundaries-B1UojqLv.js → insertionBoundaries-CvY1e0tv.js} +1 -1
  36. package/dist/assets/{ja-DH-a_ThB.js → ja-C71g0jYh.js} +1 -1
  37. package/dist/assets/{ko-BXABOKd9.js → ko-32s8rv0M.js} +1 -1
  38. package/dist/assets/{main-B-JMz9Zg.js → main--y4Qwozg.js} +4 -4
  39. package/dist/assets/{main-2yJj_50W.js → main-D7KanlAY.js} +2 -2
  40. package/dist/assets/{markdownHeightCache-_0n435fL.js → markdownHeightCache-lTJfaoDe.js} +1 -1
  41. package/dist/assets/{mcpQueries-CBvyBo4z.js → mcpQueries-D_Kk_S1v.js} +1 -1
  42. package/dist/assets/{miniChat-QLQvDR18.js → miniChat-D4bJD1va.js} +2 -2
  43. package/dist/assets/{mobile-D2W9Os9Y.js → mobile-DqLAqfH8.js} +2 -2
  44. package/dist/assets/{mobileBackNavigation-DUcdCT-q.js → mobileBackNavigation-DMOXePrM.js} +1 -1
  45. package/dist/assets/{multirun-BNXvhpnK.js → multirun-B5rB3ZpA.js} +1 -1
  46. package/dist/assets/{pl-D-KNROrB.js → pl-eAbyJFO9.js} +1 -1
  47. package/dist/assets/{platform-jaHE0AyQ.js → platform-C5jNCIbB.js} +1 -1
  48. package/dist/assets/{projectMeta-B7-8QrCr.js → projectMeta-BH3RDv7q.js} +1 -1
  49. package/dist/assets/{pt-BR-UDs5YUzv.js → pt-BR-nVxduPt0.js} +1 -1
  50. package/dist/assets/{renderElectronMiniChatApp-cXQ0iiAs.js → renderElectronMiniChatApp-BtEm3c28.js} +2 -2
  51. package/dist/assets/renderMobileApp-BGP-Q03v.css +1 -0
  52. package/dist/assets/renderMobileApp-YT9hecwY.js +28 -0
  53. package/dist/assets/{runtime-file-download-CzOWaZO_.js → runtime-file-download-CEzr1Pfg.js} +1 -1
  54. package/dist/assets/{runtime-file-resource-WtDqIbiH.js → runtime-file-resource-BUFMRmIF.js} +1 -1
  55. package/dist/assets/{runtimeConfig-WZniSuc4.js → runtimeConfig-CkCyYZXh.js} +1 -1
  56. package/dist/assets/{runtimeEndpointReset-BdC1LMDQ.js → runtimeEndpointReset-DCZ8Voev.js} +2 -2
  57. package/dist/assets/{scheduledTaskNavigation-CUbKrS_Q.js → scheduledTaskNavigation-j6F6n0ym.js} +1 -1
  58. package/dist/assets/{sessionChangeSummary-FnRoTUCa.js → sessionChangeSummary-C3_UQtMT.js} +1 -1
  59. package/dist/assets/{sessionLookup-Dyf9EV-B.js → sessionLookup-BwSgUERM.js} +1 -1
  60. package/dist/assets/{sortable-tabs-strip-ubL98Ysr.js → sortable-tabs-strip-DFi-Mck5.js} +1 -1
  61. package/dist/assets/{speechSettingsQueries-B5rRSSZa.js → speechSettingsQueries-mJxWFvgZ.js} +2 -2
  62. package/dist/assets/src-DzBIReeh.css +2 -0
  63. package/dist/assets/{store-D79UkOhB.js → store-D4rR0svj.js} +2 -2
  64. package/dist/assets/{terminalApi-CK8s1iYr.js → terminalApi-B8arordk.js} +1 -1
  65. package/dist/assets/{textarea-D2NwOmCU.js → textarea-DoWm-pRV.js} +1 -1
  66. package/dist/assets/{tooltip-CRvh1CJe.js → tooltip-DWlA7PRY.js} +1 -1
  67. package/dist/assets/{uk-CkliYeRs.js → uk-DOvCFanR.js} +1 -1
  68. package/dist/assets/{useAppFontEffects-CICX6ccA.js → useAppFontEffects-BADGZPdc.js} +51 -51
  69. package/dist/assets/{useDesktopWindowControlsLayout-DPp8-6hC.js → useDesktopWindowControlsLayout-Psu62aui.js} +1 -1
  70. package/dist/assets/{useEffectiveDirectory-CzkOEaY-.js → useEffectiveDirectory-CxHHduLw.js} +1 -1
  71. package/dist/assets/{useFontPreferences-BLwhdOar.js → useFontPreferences-Ctm4A_2D.js} +1 -1
  72. package/dist/assets/{useMobileNavigationStore-CeMnArss.js → useMobileNavigationStore-C4OpUIeW.js} +6 -6
  73. package/dist/assets/{useWorkerHighlightedLines-DxLthSDl.js → useWorkerHighlightedLines-BYB6GGCp.js} +1 -1
  74. package/dist/assets/{zh-CN-DdInLm-R.js → zh-CN-CuYFLeS4.js} +1 -1
  75. package/dist/assets/{zh-TW-QxWs2t3K.js → zh-TW-DKJIyd5A.js} +1 -1
  76. package/dist/index.html +7 -7
  77. package/dist/mini-chat.html +7 -7
  78. package/dist/mobile.html +7 -7
  79. package/package.json +1 -1
  80. package/dist/assets/MobileShareBridge-0q0bC1g-.js +0 -4
  81. package/dist/assets/renderMobileApp-BZ-dHkIL.js +0 -28
  82. package/dist/assets/src-DvTg6DjE.css +0 -2
@@ -1,5 +1,5 @@
1
1
  const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/vendor-heic2any-DgJnLT1Y.js","assets/rolldown-runtime-hePW80VL.js"])))=>i.map(i=>d[i]);
2
- import{r as e}from"./rolldown-runtime-hePW80VL.js";import{C as t,D as n,k as r}from"./runtime-auth-BpCQ-dPr.js";import{c as i,f as a,i as o,n as s,r as c,s as l}from"./runtime-switch-CMiMO5Yj.js";import{s as u,u as d}from"./queryRuntime-DRiRiAgZ.js";import{Ft as f,Lt as p,Ut as m,bt as h,ct as g,en as ee,i as te,mt as ne,rn as re,rt as ie,st as ae}from"./persistence-CAKBi4bp.js";import{a as oe,r as se}from"./vendor-zustand-o69pgTEK.js";import{it as ce}from"./vendor-base-ui-CdzJ6My_.js";import{n as le,r as ue,t as de}from"./vendor-opencode-client-MF2GBrFx.js";import{x as fe}from"./useUIStore-CEqU9Ujv.js";import{n as pe}from"./vendor-react-BP2cRVqX.js";import{i as me}from"./vendor-pathe-vBmvQE8f.js";import{n as he}from"./runtime-file-resource-WtDqIbiH.js";import{o as ge}from"./vendor-aparajita-capacitor-secure-storage-xol_6BsB.js";var _e=(e,t)=>e!==t,_=e=>{if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0};function ve(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 ye(e){return e?_(e.displayName)??_(e.name)??_(e.id)??``:``}function be(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 xe(e,t){let n=_(t);if(!n)return;let r=be(e,n);return r?_(r.name)??_(r.id)??n:n}function Se(e){return Array.from(new Set(Array.from(e.matchAll(h()),e=>e[1])),e=>({id:e,name:e}))}function v(e){return{...e,directory:e.location?.directory}}function Ce(e){let t={};for(let n of e){let e=n;!e||e.type!==`document`||!e.info||typeof e.info!=`object`||Object.assign(t,e.info)}return t}var y=e(ce(),1),we=pe();function b(e,t){return e.findIndex(e=>e.id===t)}function Te(e,t){if(!t)return e.slice();let n=b(e,t);return n<0?e.slice():e.slice(0,n)}function Ee(e,t,n){let r=b(e,n);return r<0?!1:b(e,t)>=r}function De(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 Oe(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 ke=`openchamber:sync:debug`,Ae;function je(){if(Ae!==void 0)return Ae;try{Ae=typeof localStorage<`u`&&localStorage.getItem(ke)===`1`}catch{Ae=!1}return Ae}function x(e,...t){je()&&(`${e}`,[...t])}var Me={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)}};function Ne(e,t){let n=new Set(t),r=new Map,i=[],a;for(let t of e){if(!n.has(t)){i.push(t);continue}i.length>0&&r.set(t,i),i=[],a=t}let o=[],s=new Set,c=e=>{s.has(e)||(s.add(e),o.push(e))};for(let e of t){for(let t of r.get(e)??[])c(t);if(c(e),e===a)for(let e of i)c(e)}if(!a)for(let e of i)c(e);return o}var Pe=`desc`;function Fe(e){return!S(e)||e.type!==`compaction`?!1:e.status===`running`||e.status===`completed`||e.status===`failed`}function Ie(e){if(e)return e.find(Fe)}var Le=e=>e?e.toLowerCase().includes(`application/json`):!1,Re=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 ze(e){if(!S(e))return null;let t=C(e.id);return t?{...e,id:t}:null}function Be(e,t,n){return`${e}:${t}:${n}`}function Ve(e,t,n,r,i=`text`,a){return i===`reasoning`?{id:Be(t,i,n),sessionID:e,messageID:t,type:`reasoning`,text:r}:{id:Be(t,i,n),sessionID:e,messageID:t,type:`text`,text:r,...a?.synthetic===!0?{synthetic:!0}:{}}}function He(e){return e?e.nativeType===`synthetic`||e.type===`synthetic`:!1}function Ue(e,t){return!e?.id||He(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 We(e){if(typeof e==`string`&&e.length!==0)return e.replace(/^evt_/,`msg_`)}function Ge(e){let t=e.content;return Array.isArray(t)?t.flatMap(e=>S(e)&&e.type===`text`&&typeof e.text==`string`?[e.text]:[]).join(`
2
+ import{r as e}from"./rolldown-runtime-hePW80VL.js";import{C as t,D as n,k as r}from"./runtime-auth-BpCQ-dPr.js";import{c as i,f as a,i as o,n as s,r as c,s as l}from"./runtime-switch-CMiMO5Yj.js";import{s as u,u as d}from"./queryRuntime-DRiRiAgZ.js";import{Ft as f,Lt as p,Ut as m,bt as h,ct as g,en as ee,i as te,mt as ne,rn as re,rt as ie,st as ae}from"./persistence-CAKBi4bp.js";import{a as oe,r as se}from"./vendor-zustand-o69pgTEK.js";import{it as ce}from"./vendor-base-ui-CdzJ6My_.js";import{n as le,r as ue,t as de}from"./vendor-opencode-client-MF2GBrFx.js";import{x as fe}from"./useUIStore-CEqU9Ujv.js";import{n as pe}from"./vendor-react-BP2cRVqX.js";import{i as me}from"./vendor-pathe-vBmvQE8f.js";import{n as he}from"./runtime-file-resource-BUFMRmIF.js";import{o as ge}from"./vendor-aparajita-capacitor-secure-storage-xol_6BsB.js";var _e=(e,t)=>e!==t,_=e=>{if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0};function ve(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 ye(e){return e?_(e.displayName)??_(e.name)??_(e.id)??``:``}function be(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 xe(e,t){let n=_(t);if(!n)return;let r=be(e,n);return r?_(r.name)??_(r.id)??n:n}function Se(e){return Array.from(new Set(Array.from(e.matchAll(h()),e=>e[1])),e=>({id:e,name:e}))}function v(e){return{...e,directory:e.location?.directory}}function Ce(e){let t={};for(let n of e){let e=n;!e||e.type!==`document`||!e.info||typeof e.info!=`object`||Object.assign(t,e.info)}return t}var y=e(ce(),1),we=pe();function b(e,t){return e.findIndex(e=>e.id===t)}function Te(e,t){if(!t)return e.slice();let n=b(e,t);return n<0?e.slice():e.slice(0,n)}function Ee(e,t,n){let r=b(e,n);return r<0?!1:b(e,t)>=r}function De(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 Oe(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 ke=`openchamber:sync:debug`,Ae;function je(){if(Ae!==void 0)return Ae;try{Ae=typeof localStorage<`u`&&localStorage.getItem(ke)===`1`}catch{Ae=!1}return Ae}function x(e,...t){je()&&(`${e}`,[...t])}var Me={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)}};function Ne(e,t){let n=new Set(t),r=new Map,i=[],a;for(let t of e){if(!n.has(t)){i.push(t);continue}i.length>0&&r.set(t,i),i=[],a=t}let o=[],s=new Set,c=e=>{s.has(e)||(s.add(e),o.push(e))};for(let e of t){for(let t of r.get(e)??[])c(t);if(c(e),e===a)for(let e of i)c(e)}if(!a)for(let e of i)c(e);return o}var Pe=`desc`;function Fe(e){return!S(e)||e.type!==`compaction`?!1:e.status===`running`||e.status===`completed`||e.status===`failed`}function Ie(e){if(e)return e.find(Fe)}var Le=e=>e?e.toLowerCase().includes(`application/json`):!1,Re=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 ze(e){if(!S(e))return null;let t=C(e.id);return t?{...e,id:t}:null}function Be(e,t,n){return`${e}:${t}:${n}`}function Ve(e,t,n,r,i=`text`,a){return i===`reasoning`?{id:Be(t,i,n),sessionID:e,messageID:t,type:`reasoning`,text:r}:{id:Be(t,i,n),sessionID:e,messageID:t,type:`text`,text:r,...a?.synthetic===!0?{synthetic:!0}:{}}}function He(e){return e?e.nativeType===`synthetic`||e.type===`synthetic`:!1}function Ue(e,t){return!e?.id||He(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 We(e){if(typeof e==`string`&&e.length!==0)return e.replace(/^evt_/,`msg_`)}function Ge(e){let t=e.content;return Array.isArray(t)?t.flatMap(e=>S(e)&&e.type===`text`&&typeof e.text==`string`?[e.text]:[]).join(`
3
3
  `):typeof e.output==`string`?e.output:void 0}function Ke(e){return e===`patch`?`apply_patch`:e}function qe(e,t,n){let r=C(n.id)??`${t}:tool`,i=Ke(C(n.name))??`tool`,a=S(n.state)?n.state:{},o=C(a.status)??`completed`,s=o===`streaming`?`pending`:o,c=S(n.time)?n.time:{};return{id:r,sessionID:e,messageID:t,type:`tool`,tool:i,callID:r,state:{status:s,input:a.input??{},output:Ge(a),error:S(a.error)?C(a.error.message):C(a.error),metadata:S(a.metadata)?a.metadata:{},time:{...typeof c.ran==`number`&&Number.isFinite(c.ran)?{start:c.ran}:{},...typeof c.completed==`number`&&Number.isFinite(c.completed)?{end:c.completed}:{}}}}}function Je(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 Ye(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 Xe(e,t){let n=S(t.metadata)?t.metadata:void 0,r=n&&S(n.model)?n.model:void 0,i=S(t.model)?t.model:r,a=i?C(i.id)??C(i.modelID)??C(t.modelID):C(t.modelID),o=i?C(i.providerID)??C(t.providerID):C(t.providerID),s=(i?C(i.variant):void 0)??C(t.variant)??(n?C(n.variant):void 0);a&&(e.modelID=a),o&&(e.providerID=o),s&&(e.variant=s),(a||o||s)&&(e.model={...o?{providerID:o}:{},...a?{modelID:a}:{},...s?{variant:s}:{}});let c=C(t.agent)??C(t.mode)??(n?C(n.agent):void 0);c&&(e.agent=c)}function Ze(e,t,n){return{id:t.id,sessionID:e,role:n,time:Je(t.time)}}function Qe(e,t){let n=ze(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=Ze(e,n,`user`);Xe(t,n);let i=[],a=C(n.text);a&&i.push(Ve(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=Ze(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=Ye(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(Ve(e,r,l++,t.text));continue}if(n===`reasoning`&&typeof t.text==`string`){s.push(Ve(e,r,u++,t.text,`reasoning`));continue}n===`tool`&&s.push(qe(e,r,t))}return{info:t,parts:s}}if(i===`shell`){let t=Ze(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:Be(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={...Ze(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?[Ve(e,r,0,s,`text`,{synthetic:!0})]:[{id:Be(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={...Ze(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:Ze(e,n,`assistant`),parts:[Ve(e,r,0,C(n.text)??`[${i}]`)]}}function $e(e,t,n=Pe,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=Qe(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=>Ue(e.info,e.parts)).length;return{records:i,cursor:s?void 0:o,complete:s,turnCount:c}}async function et(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=/^msg_[A-Za-z0-9_]+$/.test(e.cursor)?btoa(JSON.stringify({id:e.cursor,order:n,direction:n===`desc`?`next`:`previous`})).replace(/\+/g,`-`).replace(/\//g,`_`).replace(/=+$/,``):e.cursor:i.order=n;let a=await d(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(Re(o))throw Error(`session projection: unexpected HTML response`);Le(o);let s;try{s=await a.json()}catch{throw Error(`session projection: malformed JSON`)}return $e(s,e.sessionID,n,t)}function tt(e){let t=e.fetched.filter(e=>!!e.info?.id),n=e.previous.filter(e=>!!e.info?.id),r=e.touched??new Set,i=new Map(t.map(e=>[e.info.id,e])),a=new Map(n.map(e=>[e.info.id,e])),o=new Set(e.coverageMessageIDs??t.map(e=>e.info.id)),s=n.findIndex(e=>o.has(e.info.id));if(!e.completeTail)for(let[e,t]of n.entries())i.has(t.info.id)||(s===-1||e<s)&&i.set(t.info.id,t);for(let e of r){let t=a.get(e);t?i.set(e,t):i.delete(e)}let c=n.map(e=>e.info.id).filter(e=>i.has(e)),l=t.map(e=>e.info.id).filter(e=>i.has(e)),u=l.some(e=>a.has(e));return(!e.completeTail&&!u?[...new Set([...c,...l])]:Ne(c,l)).map(e=>i.get(e))}var nt=e=>e?e.toLowerCase().includes(`application/json`):!1,rt=e=>e?e.toLowerCase().includes(`text/html`):!1;function it(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}function at(e){return typeof e==`string`&&e.length>0?e:void 0}function ot(e){return typeof e==`number`&&Number.isFinite(e)?e:void 0}function st(e,t,n){let r=n?`: ${n}`:``,i=Error(`${e} (${t})${r}`);throw i.status=t,i}async function ct(e){try{return(await e.text()).trim()}catch{return``}}async function lt(e,t){let n=e.headers.get(`content-type`);if(rt(n))throw Error(`${t}: unexpected HTML response`);let r;try{r=await e.json()}catch{throw Error(`${t}: malformed JSON`)}if(!nt(n)&&r==null)throw Error(`${t}: empty response`);return r}var ut=new Map,dt=e=>ut.get(e)??0,ft=oe((e,t)=>({runningBySession:{},setRunning(t,n){ut.set(t,dt(t)+1),e(e=>{let r={...e.runningBySession};return n?r[t]=!0:delete r[t],{runningBySession:r}})},isRunning(e){return t().runningBySession[e]===!0},reset(){ut.clear(),e({runningBySession:{}})}}));function w(e,t){ft.getState().setRunning(e,t)}function pt(e){return ft.getState().isRunning(e)}function mt(e){return!pt(e.sessionID)}function ht(e){let t=it(e)?e:null,n=t&&it(t.data)?t.data:t;if(!n)throw Error(`session compact: expected inbox item`);let r=at(n.id),i=at(n.sessionID);if(!r||!i)throw Error(`session compact: inbox item missing id`);if(n.type&&n.type!==`compaction`)throw Error(`session compact: expected compaction inbox item`);return{id:r,sessionID:i,type:`compaction`,delivery:n.delivery===`queue`?`queue`:n.delivery===`steer`?`steer`:void 0,timeCreated:ot(n.timeCreated)}}function gt(e){let t=it(e)?e:null,n=t&&Array.isArray(t.data)?t.data:Array.isArray(e)?e:null;if(!n)throw Error(`session inbox: expected list`);let r=[];for(let e of n)!it(e)||e.type!==`compaction`||r.push(ht(e));return r}function _t(e,t){t.some(e=>e.type===`compaction`)&&w(e,!0)}function vt(e,t){for(let n=t.length-1;n>=0;--n){let r=(t[n]?.parts??[]).find(Fe);if(r){w(e,r.status===`running`);return}}}async function yt(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 d(t,{method:`POST`,headers:{"Content-Type":`application/json`},query:{directory:e.directory},body:JSON.stringify(n),signal:e.signal});r.ok||st(`session compact`,r.status,await ct(r));let i=ht(await lt(r,`session compact`));return w(i.sessionID,!0),i}var bt=`compaction:`;function xt(e,t){return t&&t.length>0?t:`${bt}${e}`}function St(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=>Fe(e)&&e.status===`running`))return r.id}}function Ct(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(Fe),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 wt(e,t){let n=String(t.type??``);if(!n.startsWith(`session.compaction.`))return!1;let r=it(t.properties)?t.properties:null;if(!r)return!1;let i=at(r.sessionID);if(!i)return!1;let a=at(r.inputID),o=St(e,i),s=n===`session.compaction.started`?a??We(t.id)??xt(i):a??o??We(t.id)??xt(i);if(n===`session.compaction.started`)return!e.part[s]?.some(Fe)&&(Ct(e,i,s,e=>({...e,status:`running`,reason:r.reason===`auto`?`auto`:`manual`,...typeof r.recent==`string`?{recent:r.recent}:{}}),ot(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?(Ct(e,i,s,e=>({...e,status:`running`,summary:(e.summary??``)+t})),w(i,!0),!0):!1}if(n===`session.compaction.ended`)return w(i,!1),o?(Ct(e,i,s,e=>({...e,status:`completed`,reason:r.reason===`auto`?`auto`:`manual`,summary:typeof r.text==`string`?r.text:e.summary,...typeof r.recent==`string`?{recent:r.recent}:{}}),ot(r.eventCreated)),!0):!1;if(n===`session.compaction.failed`){if(w(i,!1),!o&&!a)return!1;let t=it(r.error)?r.error:{};return Ct(e,i,s,e=>({...e,status:`failed`,reason:r.reason===`auto`?`auto`:`manual`,error:{type:at(t.type)??`error`,message:at(t.message)??``,...typeof t.status==`number`?{status:t.status}:{}}}),ot(r.eventCreated)),!0}return!1}var Tt=new Set([`patch`,`step-start`,`step-finish`]),Et=[`text`,`output`],Dt=new Set([`completed`,`error`,`aborted`,`failed`,`timeout`,`cancelled`]);function Ot(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 kt(e,t){let n=[];for(let r of Et){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 At(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 jt(e){if(e.type!==`tool`)return;let t=e.state?.status;return typeof t==`string`?t:void 0}function Mt(e,t){if(e.type!==`tool`||t.type!==`tool`)return!1;let n=jt(e),r=jt(t);if(n&&Dt.has(n)&&(!r||!Dt.has(r)))return!0;let i=At(e),a=At(t);return typeof i==`number`&&typeof a!=`number`}function Nt(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 Pt=[`agent`,`mode`,`providerID`,`modelID`,`variant`],Ft=e=>typeof e==`object`&&!!e&&!Array.isArray(e),It=[`input`,`output`,`reasoning`];function Lt(e){if(!e||typeof e!=`object`)return!1;let t=e;return It.some(e=>typeof t[e]==`number`&&Number.isFinite(t[e])&&t[e]>0)}function Rt(e){if(!e||typeof e!=`object`)return!1;let t=e;return It.every(e=>typeof t[e]!=`number`||!Number.isFinite(t[e])||t[e]<=0)}function zt(e){if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0}function Bt(e,t){let n={...e,...t},r=e,i=t,a=n;for(let e of Pt){let t=zt(i[e]),n=zt(r[e]);t?a[e]=t:n?a[e]=n:delete a[e]}let o=i.model,s=r.model;return Ft(o)?a.model=o:Ft(s)?a.model=s:delete a.model,(e.time||t.time)&&(n.time={...e.time,...t.time}),Lt(r.tokens)&&Rt(i.tokens)&&(a.tokens=r.tokens),n}function Vt(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(!Nt(e[n],t[n]))return!1;return!0}function Ht(e,t,n){if(!t)return!1;let r=e.message[t];return r?b(r,n)>=0:!1}function Ut(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=Bt(t,n);if(Vt(t,r))return Me.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(Tt.has(r.type))return Me.reducer.partSkipped(r.messageID,r.id,r.type),!1;let i=r.messageID,a=n.sessionID??r.sessionID;if(!i)return!1;let o=!Ht(e,a,i),s=e.part[i];if(!s)return Me.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(Mt(e,r))return!1;let t=kt(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 Me.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 Me.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?Ot(o,n.delta):(o??``)+n.delta,__dedupeNextDeltaFields:s.filter(e=>e!==n.field)},e.part[n.messageID]=l,!0}default:return an(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 Wt(e,t,n){return`${e}:${t}:${n}`}function Gt(e){return typeof e?.created==`number`&&Number.isFinite(e.created)&&e.created>0?e.created:Date.now()}function D(e){let t=e.eventCreated;return typeof t==`number`&&Number.isFinite(t)&&t>0?t:void 0}function Kt(e,t,n,r){let i=e.message[t],a=i?b(i,n):-1;if(a>=0&&i){let n=i[a],o=n.time?.created,s=!1,c={...n,time:{...n.time}};if((o===void 0||o<=0)&&typeof r?.created==`number`&&r.created>0&&(c.time={...c.time,created:r.created},s=!0),!zt(n.agent)&&r?.agent&&(c.agent=r.agent,s=!0),!zt(n.modelID)&&r?.modelID&&(c.modelID=r.modelID,s=!0),!zt(n.providerID)&&r?.providerID&&(c.providerID=r.providerID,s=!0),!zt(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:Gt(r)},...r?.agent?{agent:r.agent}:{},...r?.modelID?{modelID:r.modelID}:{},...r?.providerID?{providerID:r.providerID}:{},...r?.variant?{variant:r.variant}:{},...r?.model?{model:r.model}:{}};return e.message[t]=i?[...i,o]:[o],!0}function qt(e){let t=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 Jt(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 Yt(e,t,n,r){let i=e.message[t];if(!i)return e.message[t]=[r],!0;let a=b(i,n);if(a<0)return e.message[t]=[...i,r],!0;let o=i[a],s=Bt(o,r);if(Vt(o,s)&&o.time?.created===s.time?.created)return!1;let c=[...i];return c[a]=s,e.message[t]=c,!0}function Xt(e,t,n){let r=e.message[t];if(!r)return;let i=b(r,n);if(i<0)return;let a=r[i]?.time?.created;return typeof a==`number`&&Number.isFinite(a)&&a>0?a:void 0}function Zt(e,t,n,r,i){let a=D(i);if(t===`session.step.started`)return Kt(e,n,r,{created:a,...qt(i)});if(t===`session.step.streamed`)return a?(Kt(e,n,r,{created:a}),Yt(e,n,r,{id:r,sessionID:n,role:`assistant`,time:{created:Xt(e,n,r)??a,streamed:a}})):!1;if(t===`session.step.ended`){Kt(e,n,r,{created:a});let t=E(i.finish),o=Jt(i.tokens),s=typeof i.cost==`number`&&Number.isFinite(i.cost)?i.cost:void 0;return Yt(e,n,r,{id:r,sessionID:n,role:`assistant`,time:{created:Xt(e,n,r)??Gt({created:a}),...a?{completed:a}:{}},...t?{finish:t}:{},...o?{tokens:o}:{},...s===void 0?{}:{cost:s}})}if(t===`session.step.failed`){Kt(e,n,r,{created:a});let t=T(i.error),o=Jt(i.tokens),s=typeof i.cost==`number`&&Number.isFinite(i.cost)?i.cost:void 0;return Yt(e,n,r,{id:r,sessionID:n,role:`assistant`,time:{created:Xt(e,n,r)??Gt({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 Qt(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
4
  `)}function $t(e,t,n,r){let i=Wt(n,t,r),a=e.findIndex(e=>e.id===i);return a>=0?a:e.map((e,t)=>({part:e,index:t})).filter(e=>e.part.type===t)[r]?.index??-1}function en(e,t,n,r,i,a,o){Kt(e,t,n,o);let s=e.part[n]?[...e.part[n]]:[],c=$t(s,r,n,i);if(c<0){let e={id:Wt(n,r,i),sessionID:t,messageID:n,type:r,text:``};s.push(e),c=s.length-1}let l=s[c],u=typeof a==`function`?a(l.text??``):a;return s[c]={...l,text:u},e.part[n]=s,!0}function tn(e,t){return e.findIndex(e=>e.id===t||e.callID===t||e.type===`tool`&&e.id===t)}function nn(e,t,n,r,i,a,o){Kt(e,t,n,o);let s=e.part[n]?[...e.part[n]]:[],c=tn(s,r);return c<0&&(s.push({id:r,sessionID:t,messageID:n,type:`tool`,tool:Ke(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 rn(e,t,n){return e.message[t]?.find(t=>e.part[t.id]?.some(e=>e.type===`text`&&e.shellAction?.shellID===n))?.id}function an(e,t){let n=String(t.type);if(n.startsWith(`session.compaction.`))return wt(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=rn(e,i,o),l=c?s.find(e=>e.id===c):void 0,u=l?.id??(n===`session.shell.started`?We(t.id):void 0);if(!u||n===`session.shell.started`&&l)return!1;let d=Qe(i,{id:u,type:`shell`,shellID:o,command:a.command,status:a.status,exit:a.exit,output:r.output,time:{created:l?.time.created??D(r),...n===`session.shell.ended`?{completed:D(r)}:{}}});return!d||l&&Nt(l,d.info)&&Nt(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=We(t.id);if(!n)return!1;let a=Qe(i,{id:n,type:`synthetic`,text:r.text,description:r.description,metadata:r.metadata,time:{created:D(r)}});if(!a)return!1;let o=e.message[i]??[],s=o.find(e=>e.id===n);return s&&Nt(s,a.info)&&Nt(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:D(r)};if(n===`session.step.started`||n===`session.step.streamed`||n===`session.step.ended`||n===`session.step.failed`)return Zt(e,n,i,a,r);if(n===`session.text.started`)return en(e,i,a,`text`,o,``,s);if(n===`session.text.delta`){let t=typeof r.delta==`string`?r.delta:``;return t?en(e,i,a,`text`,o,e=>e+t,s):!1}if(n===`session.text.ended`)return en(e,i,a,`text`,o,typeof r.text==`string`?r.text:``,s);if(n===`session.reasoning.started`)return en(e,i,a,`reasoning`,o,``,s);if(n===`session.reasoning.delta`){let t=typeof r.delta==`string`?r.delta:``;return t?en(e,i,a,`reasoning`,o,e=>e+t,s):!1}if(n===`session.reasoning.ended`)return en(e,i,a,`reasoning`,o,typeof r.text==`string`?r.text:``,s);let c=E(r.id);if(!c)return!1;let l=E(r.name);if(n===`session.tool.input.started`)return nn(e,i,a,c,l,e=>e,s);if(n===`session.tool.input.delta`){let t=typeof r.delta==`string`?r.delta:``;return t?nn(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 nn(e,i,a,c,l,e=>{let n=T(e.state)??{};return{...e,state:{...n,input:t}}},s)}return n===`session.tool.called`?nn(e,i,a,c,l,e=>{let t=T(e.state)??{},n=D(r);return{...e,state:{...t,status:`pending`,input:r.input??t.input??{},metadata:T(t.metadata)??{},...n===void 0?{}:{time:{...T(t.time),start:n}}}}},s):n===`session.tool.progress`?nn(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`?nn(e,i,a,c,l,e=>{let t=T(e.state)??{},n=D(r);return{...e,state:{...t,status:`completed`,input:t.input??r.input??{},output:Qt(r.content),metadata:T(r.metadata)??T(t.metadata)??{},...n===void 0?{}:{time:{...T(t.time),end:n}}}}},s):n===`session.tool.failed`&&nn(e,i,a,c,l,e=>{let t=T(e.state)??{},n=D(r),i=T(r.error);return{...e,state:{...t,status:`error`,input:t.input??{},output:Qt(r.content),error:i?E(i.message)??E(r.error):E(r.error),metadata:T(r.metadata)??T(t.metadata)??{},...n===void 0?{}:{time:{...T(t.time),end:n}}}}},s)}function on(e){if(typeof e.time?.completed==`number`)return!1;let t=e.finish;return!(typeof t==`string`&&t.length>0)}function sn(e){let t=e.id;return typeof t==`string`&&t.length>0?t:void 0}function O(e){return e.slim===!0}function cn(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=sn(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=sn(e);if(!t)return e;let i=n.get(t);return i?(r=!0,i):e});return r?i:t}function ln(e,t){return e===t||e.length===t.length&&e.every((e,n)=>e===t[n])?t:e}function un(e){let t=e.clientRole??e.role;return typeof t==`string`?t:``}function dn(e){return un(e)!==`assistant`||!on(e)}function fn(e,t,n){if(!e||e.length===0)return t;let r=cn(e,t);if(dn(n))return ln(r,e);let i=new Set;for(let e of r){let t=sn(e);t&&i.add(t)}let a=new Map,o=[],s,c=0;for(let t of e){let e=sn(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 ln(r,e);let l=[...o];for(let e of r){l.push(e);let t=sn(e);if(!t)continue;let n=a.get(t);n&&l.push(...n)}return ln(l,e)}var pn=e=>Object.freeze(e),mn=Object.freeze({initial:pn({id:`initial`,onStale:`backfill`,messages:`insert-only`,parts:`replace`,preserveStreaming:`assistant`,protectOptimistic:`none`}),prepend:pn({id:`history`,onStale:`drop`,messages:`insert-only`,parts:`skip-existing`,preserveStreaming:`assistant`,protectOptimistic:`none`}),recovery:pn({id:`recovery`,onStale:`backfill`,messages:`upsert`,parts:`replace`,preserveStreaming:`assistant`,protectOptimistic:`none`}),"reconcile-page":pn({id:`reconcile-page`,onStale:`backfill`,messages:`upsert`,parts:`replace`,preserveStreaming:`assistant`,protectOptimistic:`keep-unless-full`}),materialize:pn({id:`materialize`,onStale:`backfill`,messages:`insert-only`,parts:`replace`,preserveStreaming:`assistant`,protectOptimistic:`none`})}),hn=pn({id:`recovery-backfill`,onStale:`backfill`,messages:`insert-only`,parts:`skip-existing`,preserveStreaming:`assistant`,protectOptimistic:`none`}),gn=pn({id:`send-gap-fill`,onStale:`backfill`,messages:`insert-only`,parts:`skip-existing`,preserveStreaming:`assistant`,protectOptimistic:`none`}),_n=mn.initial;function vn(e){let t=mn[e.purpose]??_n;return!e.stale||t.onStale===`drop`?t:hn}function yn(e,t){return e.preserveStreaming===`none`?!1:e.preserveStreaming===`all`||t===`assistant`}var bn=e=>structuredClone(e),xn=e=>({transport:e.transport,generation:e.generation,directory:e.directory,sessionID:e.sessionID});function Sn(e){return JSON.stringify([e.transport,e.generation,e.directory,e.sessionID])}function Cn(e,t){return JSON.stringify([e.transport,e.generation,e.directory,e.sessionID,t])}function wn(e){return JSON.stringify([e.transport,e.generation])}function Tn(e,t){return e.created===t.created?e.messageID<t.messageID?-1:+(e.messageID>t.messageID):e.created-t.created}function En(e){let t=e.time?.created;return{created:typeof t==`number`&&Number.isFinite(t)?t:0,messageID:e.id}}function Dn(e){return dn(e)}function On(e){return O(e)?`slim`:`full`}function kn(e){return e.some(e=>O(e))?`slim`:`full`}var An=e=>{if(typeof e!=`object`||!e)return e;if(Array.isArray(e))return e.map(An);let t=e,n={};for(let e of Object.keys(t).sort()){let r=t[e];r!==void 0&&(n[e]=An(r))}return n},jn=e=>{let t=new Uint8Array(e),n=``;for(let e of t)n+=e.toString(16).padStart(2,`0`);return n};async function Mn(e,t){let n=JSON.stringify(An({info:e,parts:t})),r=new TextEncoder().encode(n);return{hash:jn(await crypto.subtle.digest(`SHA-256`,r)),byteSize:r.byteLength}}var Nn=e=>({scope:xn(e.scope),messageID:e.messageID,info:bn(e.info),parts:bn(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}}),Pn=e=>{let t=0;return()=>{let n=e();return t=n>t?n:t+1,t}},Fn=(e,t)=>{let n=t.slice().sort((e,t)=>Tn(e.sortKey,t.sortKey)).map(Nn);return{scope:xn(e),records:n,byteSize:n.reduce((e,t)=>e+t.byteSize,0)}},In=e=>bn(e),Ln=e=>xn(e),Rn=(e=Date.now)=>Pn(e),zn=e=>Nn(e),Bn=(e,t)=>Fn(e,t.slice());function Vn(e){return Dn(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 Hn=[`text`,`output`],Un={pending:1,started:2,running:3,completed:4,error:4};function Wn(e,t){return e.filter(e=>!!e?.id&&!t.has(e.type))}function Gn(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 Kn(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 qn(e,t){let n=e[t];return typeof n==`string`?n:void 0}function Jn(e){return Kn(e)===void 0&&Hn.some(t=>{let n=qn(e,t);return typeof n==`string`&&n.length>0})}function Yn(e){let t=e.state;if(!(!t||typeof t!=`object`))return t}function Xn(e){let t=Yn(e)?.status;return typeof t==`string`?t:void 0}function Zn(e){return e?Un[e]??0:0}function Qn(e,t){if(Jn(e))return!0;if(Kn(e)===void 0){if(e.type===`tool`){let n=Xn(e);return n===`completed`||n===`error`?t:!0}return!0}return t}function $n(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 er(e){return!!e&&typeof e==`object`&&!Array.isArray(e)&&Object.keys(e).length>0}function tr(e,t,n){if(e.type!==`tool`||t.type!==`tool`)return n;let r=Yn(e);if(!r)return n;let i=Yn(n)??{},a=Yn(t)??{},o={...i},s=!1,c=Xn(e),l=Xn(t);Zn(c)>Zn(l)&&c&&(o={...o,status:c},s=!0);let u=r.input,d=a.input;er(u)&&!er(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 er(m)&&!er(a.metadata)&&(o={...o,metadata:m},s=!0),s?n===t?{...t,state:o}:{...n,state:o}:n}function nr(e,t){if(!e||Kn(t)!==void 0)return t;let n=t;for(let r of Hn){let i=qn(e,r);if(!i)continue;let a=qn(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=$n(e);if(r){let e=$n(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=tr(e,t,n),n}function rr(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 ir(e){return e.__openchamberOptimistic===!0}function ar(e){return!!(e&&e.length>0&&e.some(ir))}function or(e){return e.length===0||e.some(e=>O(e))}function sr(e,t,n,r,i,a){if(a===`keep-unless-full`&&e&&ar(e)&&or(t))return e;let o=rr(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=nr(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 cr=e=>e,lr=e=>{let t=cr(e).finish;return typeof t==`string`&&t.length>0},ur=e=>typeof cr(e).time?.completed==`number`,dr=e=>!!cr(e).error;function fr(e,t){let n=cr(t),r=n.finish,i=n.time?.completed,a=n.time?.streamed,o=n.error,s=e.tokens,c=t.tokens,l=!lr(e)&&typeof r==`string`&&r.length>0,u=!ur(e)&&typeof i==`number`,d=e.time.streamed===void 0&&typeof a==`number`&&Number.isFinite(a),f=!dr(e)&&!!o,p=!Lt(s)&&Lt(c);if(!l&&!u&&!d&&!f&&!p)return e;let m={...e};return l&&(m.finish=r),(u||d)&&(m.time={...cr(e).time,...u?{completed:i}:{},...d?{streamed:a}:{}}),f&&(m.error=o),p&&(m.tokens=c),m}function pr(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));if(!t.some(e=>s.has(e.id)))return r===`prepend`?[...t,...o]:r===`by-created`?mr(o,t):[...o,...t];let c=new Map(t.map(e=>[e.id,e]));for(let e of o)c.set(e.id,e);let l=Ne(e.map(e=>e.id),t.map(e=>e.id)).map(e=>c.get(e));return!a&&l.length===e.length&&l.every((t,n)=>t===e[n])?e:l}function mr(e,t){let n=e.slice();for(let e of t){let t=En(e),r=n.length;for(let e=0;e<n.length;e+=1)if(Tn(t,En(n[e]))<0){r=e;break}n.splice(r,0,e)}return n}function hr(e,t,n){return pr(e,t,(e,t)=>t?fr(e,t):e,n)}function gr(e,t,n){return pr(e,t,(e,t)=>!t||JSON.stringify(e)===JSON.stringify(t)?e:Bt(e,t),n)}function _r(e,t,n,r={}){let i=r.skipPartTypes??new Set,a=r.merge??_n,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`?gr(u,c,o):hr(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=sr(r,Wn(e.parts??[],i),i,yn(a,e.info.role),on(e.info),a.protectOptimistic);(r?Gn(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 vr(e){if(typeof e.time?.completed==`number`)return!1;let t=e.finish;return!(typeof t==`string`&&t.length>0)}function yr(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&&vr(i)||r.push(i.id));return{hasMessages:!0,renderable:r.length===0,missingPartMessageIDs:r}}var br=(e,t)=>e<t?-1:+(e>t);function xr(e){return e.filter(e=>!!e?.id)}function Sr(e,t){if(t.length===0)return{...e,confirmed:[]};let n=[...e.session],r=new Map(e.part.map(e=>[e.id,xr(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,xr(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,xr(e.parts))}return{cursor:e.cursor,complete:e.complete,session:n,part:[...r.entries()].sort((e,t)=>br(e[0],t[0])).map(([e,t])=>({id:e,part:t})),confirmed:i}}var Cr={kind:`unknown`,loadedTurns:0},wr=3e4,Tr=12e5,Er={project:``,projectMeta:void 0,icon:void 0,provider:{all:[],connected:[],default:{}},config:{},path:{state:``,config:``,worktree:``,directory:``,home:``},status:`loading`,agent:[],command:[],session:[],sessionTotal:0,session_status:{},session_status_observed_at:{},session_status_event_at:{},session_status_event_sequence:{},session_interrupt_acknowledged_at:{},session_execution_version:{},session_status_snapshot_at:void 0,session_error_at:{},session_execution_recovery:{},session_diff:{},todo:{},permission:{},question:{},lsp:[],vcs:void 0,limit:20},Dr={ready:!1,path:{state:``,config:``,worktree:``,directory:``,home:``},projects:[],providers:{all:[],connected:[],default:{}},providerAuth:{},config:{},reload:void 0,sessionTodo:{}};function Or(e,t){return e===void 0||t===void 0?!1:t>e}var kr=class extends Error{};function Ar(e,t,n){if(n===`reconcile-page`)return e??Cr;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 kr(`session message page: complete=false requires non-empty cursor`);if(n===`prepend`&&e?.kind===`has-more`&&e.cursor===o)throw new kr(`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 kr(`session message page: complete=false with zero records makes no progress`);return{kind:`has-more`,cursor:o,loadedTurns:a}}function jr(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 Mr(e,t,n,r){let i=Or(r.capturedRevision,r.liveRevision),a=vn({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=Sr({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=_r(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=Ar(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 kr))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=!jr(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 Nr=new Set([`tool`,`reasoning`,`file`,`text`]),Pr=new Set([`tool`,`reasoning`,`file`]);function Fr(e){return e.some(e=>O(e)&&Nr.has(e.type))}function Ir(e,t){let n=!1,r=!1;for(let t of e)Pr.has(t.type)&&(n=!0,O(t)&&(r=!0));return n?r?!0:t?on(t):!1:!1}var Lr=e=>{if(!e)return``;let t=e.clientRole??e.role;return typeof t==`string`?t:``};function Rr(e,t){return Ue(e,t)}function zr(e){let t=0;for(let n of e.messageOrder)Rr(e.messagesByID[n],e.partsByMessageID[n])&&(t+=1);return t}var Br=(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(Rr(a,e.partsByMessageID[n]))break;if(Lr(a)!==`assistant`)continue;let o=a.parentID;typeof o==`string`&&o.length>0&&o!==t||r.push(a)}return r},Vr=(e,t)=>on(e)?!0:Array.isArray(t)&&t.length>0;function Hr(e){let t;for(let n=e.messageOrder.length-1;n>=0;--n){let r=e.messageOrder[n];if(Rr(e.messagesByID[r],e.partsByMessageID[r])){t=r;break}}return t?Br(e,t).some(t=>Vr(t,e.partsByMessageID[t.id])):!1}function Ur(e){return e.materializeActive?`p2`:e.prependActive||e.earlierHistoryLoaded?`p1`:e.p0Satisfied?`p0`:`idle`}var Wr=new Set([`stop`,`length`]);function Gr(e){let t=e.messageOrder[e.messageOrder.length-1];if(!t)return!1;let n=e.messagesByID[t];if(!n||Lr(n)!==`assistant`||n.error)return!1;let r=n.finish;return typeof r!=`string`||!Wr.has(r)?!1:typeof n.time?.completed!=`number`||r===`stop`&&!Lt(n.tokens)}function Kr(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 qr(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 Jr=`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 Yr(e){return Jr.includes(e)}function k(e){return e.trim()}function Xr(e){return`${k(e.directory)}\n${e.sessionID}`}function Zr(e,t){return e.session_history_boundary?.[t]??Cr}function Qr(e){return e.filter(e=>!!e?.id)}function $r(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 ei(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||!$r(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 ti(e,t,n){let r=e.getState(),i=n.page,a=Mr(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?(ei(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 ni(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(!Yr(e.type))continue;i=!0;let t=Ut(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 ri(e,t){return ni(e,[t.event])}function ii(e,t){return ni(e,t.events)}function ai(e,t,n){if(n.records.length===0)return{applied:!1,changed:!1};let r=e.getState(),i=_r({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 oi(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 si(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 ci(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 li(e,t,n,r){return n.clearOptimisticShadow?.({directory:r,sessionID:e,messageID:t}),{applied:!0,changed:!1}}function ui(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 di(e,t,n){let r=ui(e,t);if(!n.page)return{applied:!0,changed:r};let i=ti(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 fi(e){let t=new Map,n=new Map,r=r=>{let i=Xr(r);if(n.has(i))return;let a=k(r.directory),o=e.getStore(a),s=r.sessionID,c=o.getState().message?.[s],l=Zr(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=Zr(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=$r(a,l);if(c=n,l=a,u=d,!f&&!o&&p)return;let m=t.get(i);if(!(!m||m.size===0))for(let e of m)e(r)});n.set(i,d)},i=e=>{let r=t.get(e);if(r&&r.size>0)return;let i=n.get(e);i&&(i(),n.delete(e)),t.delete(e)},a={getTranscript(t){let n=k(t.directory),r=e.getStore(n).getState(),i=t.sessionID,a=r.message?.[i]??[],o=e.getLiveRevision?.(n,i)??0;return qr({sessionID:i,messages:a,parts:r.part??{},boundary:Zr(r,i),liveRevision:o})},getPagination(t){let n=k(t.directory),r=e.getStore(n).getState();return Kr(t.sessionID,Zr(r,t.sessionID))},getRequestState(t){let n=k(t.directory);return e.getRequestState?.(n,t.sessionID)??{sessionID:t.sessionID,status:`idle`}},getHydrationState(e){let t=a.getTranscript(e),n=Hr(t);return{sessionID:e.sessionID,p0Satisfied:n,phase:Ur({p0Satisfied:n,earlierHistoryLoaded:zr(t)>1})}},getMessage(e,t){return a.getTranscript(e).messagesByID[t]},getParts(t,n){let r=k(t.directory);return e.getStore(r).getState().part?.[n]??[]},hasSession(t){let n=k(t.directory),r=e.getStore(n).getState().message;return r?Object.prototype.hasOwnProperty.call(r,t.sessionID):!1},apply(t,n){let r=k(t.directory),i=e.getStore(r),a=t.sessionID;switch(n.type){case`http-page`:return ti(i,a,n);case`sse-event`:return ri(i,n);case`sse-event-batch`:return ii(i,n);case`optimistic-add`:return si(i,a,n,e,r);case`optimistic-confirm`:return li(a,n.messageID,e,r);case`optimistic-remove`:return ci(i,a,n.messageID,e,r);case`reset`:return di(i,a,n);case`materialize-snapshots`:return ai(i,a,n);case`remove-message`:return oi(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=Xr(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 pi=new Set,mi=new Set;function hi(e,t){return`${e}\n${t}`}function gi(){for(let e of mi)e()}function _i(e,t){!e||!t||(pi.add(hi(e,t)),gi())}function vi(e,t){!e||!t||pi.delete(hi(e,t))&&gi()}function yi(e,t){if(!e)return!1;if(t)return pi.has(hi(t,e));let n=`\n${e}`;for(let e of pi)if(e.endsWith(n))return!0;return!1}function bi(e){return mi.add(e),()=>{mi.delete(e)}}var xi=[],Si=new Map,Ci=new Map,wi=0,Ti=()=>{let e=xi.findIndex(e=>e.priority===`user`);if(e>=0){let[t]=xi.splice(e,1);return t}return xi.shift()},Ei=()=>{for(;wi<4;){let e=Ti();if(!e)return;Si.delete(e.key),wi+=1,Promise.resolve().then(()=>e.run()).then(t=>{e.resolve(t)},t=>{e.reject(t)}).finally(()=>{--wi,Ci.delete(e.key),Ei()})}};function Di(e,t,n){let r=n?.priority??`background`,i=Ci.get(e);if(i){let t=Si.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 xi.push(c),Si.set(e,c),Ci.set(e,s),Ei(),s}var Oi=null,ki=0,Ai=new Set;function ji(){ki+=1;for(let e of Ai)e()}function Mi(e){return e}function Ni(e){return Ai.add(e),()=>{Ai.delete(e)}}function Pi(){return ki}function Fi(e){return Oi?.repository===e?e:(Oi={kind:`query`,repository:e},ji(),e)}function Ii(){Oi&&(Oi=null,ji())}function A(){return Oi?.repository??null}function Li(){let e=A();if(!e)throw Error(`TranscriptRepository is not bound — SyncProvider must mount first`);return e}function j(e,t){let n=A();if(n)return n;let r=Mi(t);return fi({getStore:e=>r})}function M(e,t,n){return{directory:e.trim(),sessionID:t,...n?.transport===void 0?{}:{transport:n.transport},...n?.generation===void 0?{}:{generation:n.generation}}}function Ri(e){try{let t=A(),n=o(),r=s();return t?.getCacheBudget?.().listCanonicalScopesForSession(e,{transport:n,generation:r})?.map(e=>M(e.directory,e.sessionID,{transport:e.transport,generation:e.generation}))??[]}catch{return[]}}function zi(e,t){let n=A();return n?n.apply(e,t):null}async function Bi(e,t,n){let r=Li();if(typeof r.fetchPreviousPage!=`function`)throw Error(`TranscriptRepository does not support fetchPreviousPage`);await r.fetchPreviousPage(M(e,t),n)}async function Vi(e,t){let n=Li();if(typeof n.ensureInitial!=`function`)throw Error(`TranscriptRepository does not support ensureInitial`);await n.ensureInitial(M(e,t))}async function Hi(e,t){let n=Li(),r=M(e,t);if(typeof n.destructiveReset==`function`){await n.destructiveReset(r);return}if(typeof n.ensureInitial!=`function`)throw Error(`TranscriptRepository does not support retryInitial`);await n.ensureInitial(r)}async function Ui(e,t,n){let r=Li();if(typeof r.refreshFromAuthority!=`function`)throw Error(`TranscriptRepository does not support refreshFromAuthority`);if(n?.background){await r.refreshFromAuthority(M(e,t));return}_i(e,t);try{await r.refreshFromAuthority(M(e,t))}finally{vi(e,t)}}async function Wi(e,t,n,r){let i=Li();if(typeof i.materializeMessage!=`function`)throw Error(`TranscriptRepository does not support materializeMessage`);let a=M(e,t);await Di(`${e}\n${t}\n${n}`,()=>i.materializeMessage(a,n),{priority:r?.priority??`background`})}function Gi(e,t,n){let r=A();return!r||typeof r.getMessageMaterializationState!=`function`?{sessionID:t,messageID:n,status:`idle`}:r.getMessageMaterializationState(M(e,t),n)}function Ki(e,t){A()?.purgeSession?.(M(e,t))}var N=null;function qi(e){N&&N!==e&&N.cancelAll(`reregister`),N=e}function Ji(e){N?.captureCheckpoints(e)}function Yi(e){N?.onCompensation(e)}async function Xi(e){return N?N.ensureOnObserve(e):null}function Zi(e){N?.cancelAll(e)}var Qi=e=>typeof e==`number`&&Number.isFinite(e)?e:0,$i=e=>Qi(e.input)+Qi(e.output)+Qi(e.reasoning)+Qi(e.cache?.read)+Qi(e.cache?.write),ea=e=>e?.type===`compaction`,ta=e=>!!e&&e.some(ea),na=(e,t)=>e.clientRole===`compaction`||e.type===`compaction`||ta(t),ra=(e,t)=>{for(let n=e.length-1;n>=0;--n){let r=e[n],i=r.id?t(r.id):void 0;if(na(r,i)){let e=i?.find(ea)?.status??r.status;if(e===`running`||e===`failed`)continue;return{compacted:!0}}if(r.role!==`assistant`)continue;let a=r.tokens;if(!a)continue;let o=$i(a);if(o>0)return{messageId:r.id??``,totalTokens:o,tokens:a}}return null},ia=(e,t,n)=>{if(!e)return null;let r=`compacted`in e,i=r?0:e.totalTokens;return{...r?{pending:!0}:{},totalTokens:i,percentage:t>0?Math.round(i/t*100):0,contextLimit:t||0,outputLimit:n||void 0,normalizedOutput:!r&&n>0?Math.round(Qi(e.tokens.output)/n*100):void 0,thresholdLimit:t>0?t:2e5,lastMessageId:r?void 0:e.messageId}},aa=[],oa=[],sa={sessionID:``,messageOrder:[],messagesByID:{},partsByMessageID:{},boundary:Cr,liveRevision:0};Kr(``,Cr);var ca={sessionID:``,phase:`idle`,p0Satisfied:!1};function P(e,t){return j(e,t)}var la=new Set;function ua(e,t){return`${e}\n${t}`}function da(e,t){if(!t)return;let n=ua(e,t);la.has(n)||(la.add(n),Xi(M(e,t)).catch(()=>{}).finally(()=>{la.delete(n)}))}function fa(e,t){if(e&&t){la.delete(ua(e,t));return}la.clear()}function pa(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(sa);return(c.current===void 0||!s.current(c.current,e))&&(c.current=e),c.current}let r=P(t,n).getTranscript(M(t,e)),i=o.current(r);return(c.current===void 0||!s.current(c.current,i))&&(c.current=i),c.current},[t,l,e,n]),d=(0,y.useCallback)(r=>{if(!e||!l)return()=>void 0;da(t,e);let i=P(t,n).subscribe(M(t,e),()=>{r()}),a=Ni(()=>{i(),c.current=void 0,fa(t,e),da(t,e),i=P(t,n).subscribe(M(t,e),()=>{r()}),r()});return()=>{a(),i()}},[t,l,e,n]);return y.useSyncExternalStore(d,u,u)}function ma(e,t,n,r,i,a){return pa(e,t,n,r,i===void 0?Object.is:i,a)}function ha(e,t){if(e.messageOrder.length===0)return aa;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 ga(e,t){return e.messageOrder.length===0?t?.resolved===!0?yr({messages:aa,parts:e.partsByMessageID}):{hasMessages:!1,renderable:!1,missingPartMessageIDs:[]}:yr({messages:ha(e),parts:e.partsByMessageID})}function _a(e,t,n,r){let i=(0,we.c)(4),a;return i[0]!==t||i[1]!==e||i[2]!==n?(a=r=>{if(!e)return{hasMessages:!1,renderable:!1,missingPartMessageIDs:[]};let i=P(t,n).hasSession?.(M(t,e));return ga(r,{resolved:i===!0||void 0})},i[0]=t,i[1]=e,i[2]=n,i[3]=a):a=i[3],pa(e,t,n,a,va,r)}function va(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 ya(e,t,n,r,i){let a=(0,we.c)(3),o;return a[0]!==r||a[1]!==i?(o=e=>ia(ra(ha(e),t=>e.partsByMessageID[t]),r,i),a[0]=r,a[1]=i,a[2]=o):o=a[2],pa(e,t,n,o,ba)}function ba(e,t){return e===t||!!(e&&t&&e.pending===t.pending&&e.totalTokens===t.totalTokens&&e.percentage===t.percentage&&e.contextLimit===t.contextLimit&&e.outputLimit===t.outputLimit&&e.normalizedOutput===t.normalizedOutput&&e.lastMessageId===t.lastMessageId)}function xa(e,t,n,r){return pa(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 ha(e)}function wa(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 Ta(e,t,n,r){return pa(e,t,n,Ea,wa,r)}function Ea(e){return e}function Da(e,t,n,r){if(e.length===0)return()=>void 0;let i=[],a=()=>{for(let e of i)e();i=[]},o=()=>{let r=new Set;for(let a of e){let e=`${a.directory}\n${a.sessionID}`;if(r.has(e))continue;r.add(e);let o=A();if(o){i.push(o.subscribe(M(a.directory,a.sessionID),t));continue}let s=n?.(a.directory);if(!s)continue;let c=j(a.directory,s);i.push(c.subscribe(M(a.directory,a.sessionID),t))}},s=()=>{a(),o(),t()};o();let c=Ni(s),l=r?.subscribeRebuild?.(s);return()=>{l?.(),c(),a()}}function Oa(e,t){return e.length===0?``:e.map(e=>{let n=Ba(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 ka(e,t,n){return pa(e,t,n,Aa)}function Aa(e){return e.messageOrder.length}function ja(e,t,n){let r=(0,we.c)(8),i=(0,y.useRef)(!1),a;r[0]!==t||r[1]!==e||r[2]!==n?(a=()=>{if(!e)return i.current=!1,!1;let r=P(t,n),a=r.hasSession?.(M(t,e))??r.getTranscript(M(t,e)).messageOrder.length>0;return i.current=a,i.current},r[0]=t,r[1]=e,r[2]=n,r[3]=a):a=r[3];let o=a,s;r[4]!==t||r[5]!==e||r[6]!==n?(s=r=>e?P(t,n).subscribe(M(t,e),()=>{r()}):Ma,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 Ma(){}function Na(e,t,n,r){let i=(0,we.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=oa,oa;let i=P(t,n),o=r||e,s=i.getParts(M(t,o),e),c=s.length===0?oa: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 Fa;let a=P(t,n);return r?a.subscribe(M(t,r),()=>{i()}):Pa},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 Pa(){}function Fa(){}function Ia(e,t,n){let r=(0,we.c)(8),i=(0,y.useRef)(ca),a;r[0]!==t||r[1]!==e||r[2]!==n?(a=()=>{if(!e)return i.current!==ca&&(i.current=ca),i.current;let r=P(t,n).getHydrationState?.(M(t,e))??{sessionID:e,phase:`idle`,p0Satisfied:!1},a=i.current;return a.sessionID===r.sessionID&&a.phase===r.phase&&a.p0Satisfied===r.p0Satisfied?a:(i.current=r,r)},r[0]=t,r[1]=e,r[2]=n,r[3]=a):a=r[3];let o=a,s;r[4]!==t||r[5]!==e||r[6]!==n?(s=r=>{if(!e)return La;da(t,e);let a=P(t,n).subscribe(M(t,e),()=>{r()}),o=Ni(()=>{a(),i.current=ca,fa(t,e),da(t,e),a=P(t,n).subscribe(M(t,e),()=>{r()}),r()});return()=>{o(),a()}},r[4]=t,r[5]=e,r[6]=n,r[7]=s):s=r[7];let c=s;return y.useSyncExternalStore(c,o,o)}function La(){}function Ra(e,t,n){let r=(0,we.c)(2),i;return r[0]===e?i=r[1]:(i=t=>Kr(e,t.boundary),r[0]=e,r[1]=i),pa(e,t,n,i,za)}function za(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 Ba(e,t,n){if(!t)return[];let r=A();if(r){let n=r.getTranscript(M(e,t));return n.messageOrder.map(e=>n.messagesByID[e]).filter(e=>!!e)}if(!n)return[];let i=j(e,n).getTranscript(M(e,t));return i.messageOrder.map(e=>i.messagesByID[e]).filter(e=>!!e)}var F=null,Va=``,Ha=null,Ua=new Set,Wa=null,Ga=new Map,Ka=new Map;function qa(e,t,n,r){F=t,Wa!==t&&(Wa=null,Ga=new Map,Ka=new Map),Va=n,r&&(Ha=r)}function Ja(e,t){Ha?.(e,t)}function Ya(){if(!F)throw Error(`ChildStoreManager not initialized — is SyncProvider mounted?`);return F}function Xa(e){let t=F;if(!t)return;let n=e||Va;if(n)return t.getState(n)}function Za(e){let t=Xa(e)?.config;return t&&Object.keys(t).length>0?t:void 0}function Qa(e){return Ua.add(e),()=>{Ua.delete(e)}}function $a(e,t){if(e)for(let n of Ua)n(e,t)}function eo(e){return Xa(e)?.session??[]}function to(){return Array.from(no().values())}function no(){let e=F;if(!e)return Ka;let t=Wa!==e||Ga.size!==e.children.size;for(let[n,r]of e.children)if(Ga.get(n)!==r.getState().session){t=!0;break}if(!t)return Ka;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 Wa=e,Ga=n,Ka=r,Ka}function ro(e,t,n){if(n){let r=[];for(let[i,a]of n)if(a.session.some(t=>t.id===e)&&a.hasTranscript===!0){if(i===t)return i;r.push(i)}return r.length===1?r[0]:void 0}let r=[];try{let n=A();if(F){for(let[i,a]of F.children)if(a.getState().session.some(t=>t.id===e)&&(n??j(i,a)).hasSession?.(M(i,e))){if(i===t)return i;r.push(i)}}if(r.length===0&&n){let i=n.getCacheBudget?.().listCanonical();if(i){for(let n of i)if(n.scope.sessionID===e){if(n.scope.directory===t)return n.scope.directory;r.push(n.scope.directory)}}}}catch{}let i=[...new Set(r)];return i.length===1?i[0]:void 0}function io(e,t){if(!e)return[];try{let n=A(),r=t??Va;if(n){let t=n.getTranscript(M(r,e));return t.messageOrder.map(e=>t.messagesByID[e]).filter(e=>!!e)}if(F){let t=F.getChild(r);if(t){let n=j(r,t).getTranscript(M(r,e));return n.messageOrder.map(e=>n.messagesByID[e]).filter(e=>!!e)}}}catch{}return[]}function ao(e,t){if(!e)return[];try{let n=A(),r=t??Va;if(n)return[...n.getParts(M(r,e),e)];if(F){let t=F.getChild(r);if(t)return[...j(r,t).getParts(M(r,e),e)]}}catch{}return[]}function oo(e,t){return Xa(t)?.session_status[e]}var I=e=>{if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0},so=`default`;function co(e){let t=I(e);if(t&&t!==so)return t}function lo(e){let t=e?.model;return I(t?.id)??I(t?.modelID)}function uo(e){let t=e?.model;return I(t?.providerID)}function fo(e){let t=e?.model;return co(t?.variant)}function po(e){let t=co(e.variant);return{id:e.modelID.trim(),providerID:e.providerID.trim(),...t?{variant:t}:{}}}function mo(e,t,n){let r=I(n.providerID),i=I(n.modelID);if(!r||!i)return{agent:I(n.agent)};let a=(Xa(t)?.session??to()).find(t=>t.id===e),o=po({providerID:r,modelID:i,variant:n.variant}),s=lo(a),c=uo(a),l=fo(a),u=co(o.variant),d=!a||!s||!c||c!==o.providerID||s!==o.id||l!==u,f=I(n.agent),p=I(a?.agent);return{model:d?o:void 0,agent:f&&p!==f?f:void 0}}function ho(e,t,n){if(e&&!(!n.model&&!n.agent))try{let r=Ya(),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 go=new Set([`image/heic`,`image/heif`]),_o=!1,vo=()=>{let e=globalThis.window?.Capacitor;return e&&typeof e==`object`?e:null},yo=e=>go.has((e.type||``).toLowerCase()),bo=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)},xo=(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})},So=async e=>{if(!yo(e)||_o)return null;let t=vo();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 bo(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 xo(t.data,r)}catch(e){return _o=!0,console.warn(`Native HEIC transcode failed`,e),null}},Co=e=>e.trim().toLowerCase(),wo=e=>e.source===`local`||e.source===`server`||e.source===`vscode`,To=(e,t)=>{if(!e||!e.includes(`[`)||t.length===0)return[];let n=new Set(t.map(Co)),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=ne(e.slice(t+1,a)).trim();n.has(Co(i))&&r.push({start:t,end:a+1})}i=a+1}return r},Eo=(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}},Do=(e,t,n,r)=>{let i=To(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}=Eo(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}},Oo=new Set([`image`,`screenshot`,`screen-shot`,`clipboard`,`pasted-image`,`pastedimage`,`untitled`,`unknown`,`file`,`blob`]),ko={"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`},Ao=e=>e.trim().toLowerCase(),jo=e=>e.charCodeAt(0)<32||`<>:"/\\|?*[]`.includes(e),Mo=e=>{let t=e.replace(/\\/g,`/`).split(`/`).pop()??``;return Array.from(t).map(e=>jo(e)?`-`:e).join(``).replace(/\s+/g,` `).replace(/-+/g,`-`).trim()},No=e=>ko[e?.trim().toLowerCase()??``]??`png`,Po=e=>{let t=Mo(e.name),n=No(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}},Fo=e=>{let{base:t}=Po({name:e}),n=t.trim().toLowerCase().replace(/[\s_]+/g,`-`).replace(/-+/g,`-`).replace(/^-|-$/g,``);if(Oo.has(n))return!0;let r=n.replace(/-\(\d+\)$/g,``);return r!==n&&Oo.has(r)?!0:/^(image|file|unknown|untitled|blob)-\d+$/.test(n)},Io=(e,t)=>`${e}.${t}`,Lo=(e,t,n)=>{let r=Io(e,t);if(!n.has(Ao(r)))return r;for(let r=2;r<2**53-1;r+=1){let i=Io(`${e}-${r}`,t);if(!n.has(Ao(i)))return i}return Io(`${e}-${Date.now()}`,t)},Ro=(e,t)=>{for(let n=1;n<2**53-1;n+=1){let r=Io(`image-${n}`,e);if(!Array.from(t).some(e=>e.startsWith(`image-${n}.`))&&!t.has(Ao(r)))return r}return Io(`image-${Date.now()}`,e)},zo=(e,t)=>{let n=new Set(t.map(Ao));return e.map(e=>{let{base:t,ext:r}=Po(e),i=Fo(Io(t,r))?Ro(r,n):Lo(t,r,n);return n.add(Ao(i)),i})},Bo=e=>e.map(e=>g(e)).join(` `),Vo=(e,t,n)=>{if(t===n)return[];let r=[];for(let i of e){let e=[g(i),`[${i}]`],a=e.some(e=>t.includes(e)),o=e.some(e=>n.includes(e));a&&!o&&r.push(i)}return r},Ho=(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}},Uo=(e,t,n)=>{if(e===t||n.length===0)return null;let r=[...n],i=Ho(e,t);if(i){let t=es(e,r,{key:`Backspace`,selectionStart:i.start,selectionEnd:i.end});if(t)return t}let a=Vo(r,e,t);return a.length===0?null:{text:t,caret:t.length,removedFilenames:a}},Wo=e=>e.replaceAll(`[${ae}`,`[`),Go=/\.(?:png|jpe?g|gif|webp|svg|avif|bmp|heic|heif|tiff?)$/i,Ko=e=>{let t=e.trim();return t.startsWith(`/`)||/^[A-Za-z]:[\\/]/.test(t)||t.startsWith(`\\\\`)},qo=(e,t)=>{let n=e;for(let e of t){let t=e.filename.trim(),r=e.path.trim();if(!t||!r||t===r||Ko(t)||!Go.test(t)&&!Go.test(r))continue;let i=`[${r}]`;n=n.split(g(t)).join(i).split(`[${t}]`).join(i)}return n},Jo=(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(g(e.filename)).join(r).split(`[${e.filename}]`).join(r)}return n},Yo=e=>e.mime===`text/plain`&&typeof e.filename==`string`&&/:\d+(?:-\d+)?$/.test(e.filename),Xo=`application/x-directory`,Zo=e=>typeof e==`string`&&e.trim().toLowerCase()===`application/x-directory`,Qo=e=>typeof e==`string`&&/[/\\]$/.test(e.trim()),$o=(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}},es=(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?$o(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=To(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=>ne(e.slice(t.start+1,t.end-1)).trim())}},ts=`<system-reminder>`,ns=`</system-reminder>`,rs=/[ \t]*<system-reminder>[\s\S]*?<\/system-reminder>[ \t]*/g,is=/[ \t]*<system-reminder>[\s\S]*$/,as=e=>{let t=e.trim();return t?t.startsWith(ts)&&t.endsWith(ns)?t:`${ts}\n${t}\n${ns}`:``},os=e=>e.includes(ts)?e.replace(rs,``).replace(is,``).trim():e,L=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}},ss=`file://`,cs=e=>{let t=e.trim();if(t.toLowerCase().startsWith(ss))return t;let n=me(t).split(`/`).map(e=>/^[A-Za-z]:$/.test(e)?e:encodeURIComponent(e)).join(`/`);return/^[A-Za-z]:/.test(n)?`${ss}/${n}`:`${ss}${n}`},ls=e=>{let t=e.trim();if(!t.toLowerCase().startsWith(ss))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},us=async e=>[...new Uint8Array(await crypto.subtle.digest(`SHA-256`,await e.arrayBuffer()))].map(e=>e.toString(16).padStart(2,`0`)).join(``),ds=e=>typeof e==`object`&&!!e&&!Array.isArray(e),fs=async e=>{let t;try{t=await e.json()}catch{throw new L(e.status,`unavailable`)}if(!ds(t)||typeof t.path!=`string`||!t.path)throw new L(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:cs(t.path),mime:n,size:r,sha256:i}},ps=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}`},ms=(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}},hs=e=>e.startsWith(`data:`)||e.startsWith(`blob:`),gs=async e=>{let t=he(),n=e.mime||e.body.type||`application/octet-stream`,r=e.body.type===n?e.body:new Blob([e.body],{type:n});if(!Number.isSafeInteger(r.size)||r.size<0)throw new L(413,`too-large`);let i=await us(r),a=ps(e.filename),o;try{o=await d(`/api/fs/prompt-attachments/${encodeURIComponent(a)}?storage=temporary`,{method:`PUT`,headers:{"Content-Type":n,"Content-Length":String(r.size),"X-OpenChamber-Content-Length":String(r.size),"X-OpenChamber-Sha256":i,"X-OpenChamber-Mime":n,...e.filename?{"X-OpenChamber-Filename":encodeURIComponent(e.filename)}:{}},body:r,signal:e.signal})}catch{throw new L(0,`unavailable`)}if(o.status===413)throw new L(413,`too-large`);if(!o.ok)throw new L(o.status,o.status>=500||o.status===0?`unavailable`:`rejected`);let s=await fs(o);if(s.size!==r.size)throw new L(o.status,`unavailable`);return await t(r,s.sha256),{...s,mime:n}},_s=500,vs=()=>{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}},ys=()=>vs(),R=(e,t)=>{if(!vs())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>_s&&window.__OPENCHAMBER_STARTUP_TRACE__.splice(0,window.__OPENCHAMBER_STARTUP_TRACE__.length-_s)};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 bs=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}},xs=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}),Ss=[],Cs=[],z=new Map,ws=512,Ts=0;function Es(){return Ts}function B(){return{transportIdentity:o(),generation:s()}}function Ds(e){return o()===e.transportIdentity&&s()===e.generation}function Os(e,t,n){return`${n?.transportIdentity??o()}\0${n?.generation??s()}\0${e}\0${t}`}function ks(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>ws;){let e=z.keys().next().value;if(e===void 0)break;z.delete(e)}}function As(e,t,n,r){let i=r??B();ks(i),Ts+=1,z.set(Os(e,t,i),{kind:n,mark:Ts})}function js(e,t,n){let r=n?.scope;ks(r??B());let i=z.get(Os(e,t,r));if(!i)return!0;let a=n?.startedMark;return a!==void 0&&i.mark>a?!1:(z.delete(Os(e,t,r)),!0)}function Ms(e,t,n){return ks(n??B()),z.get(Os(e,t,n))?.kind??null}var Ns=(e,t,n)=>{let r={...e};return n.length===0?delete r[t]:r[t]=n,r},V=oe((e,t)=>({bySession:{},remember(t){return!Ms(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};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&&As(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:Ns(e.bySession,t,i)}})},forgetSession(t){e(e=>{if(!e.bySession[t])return e;let n={...e.bySession};return delete n[t],{bySession:n}})},forgetPromoted(t,n){let r=new Set(n);e(e=>{let n=e.bySession[t];if(!n?.length)return e;let i=new Set(n.filter(e=>r.has(e.id)).map(e=>e.id));if(i.size===0)return e;for(let e of i)As(t,e,`consumed`);return{bySession:Ns(e.bySession,t,n.filter(e=>!i.has(e.id)))}})},replaceFromAuthority(t,n,r){let i=r?.startedMark,a=[];for(let e of n)js(t,e.id,{startedMark:i})&&a.push(e);e(e=>{let n=new Map((e.bySession[t]??[]).map(e=>[e.id,e])),i=r?.observedItems&&new Map(r.observedItems.map(e=>[e.id,e])),o=a.map(e=>({...e,requestID:e.id}));if(i){let e=new Map(o.map((e,t)=>[e.id,t]));for(let t of n.values()){if(i.get(t.id)===t)continue;let n=e.get(t.id);n===void 0?o.push(t):o[n]=t}}return{bySession:Ns(e.bySession,t,o)}})},updateDelivery(t,n,r){e(e=>{if(Ms(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},{bySession:{...e.bySession,[t]:o}}})},list(e){return t().bySession[e]??Ss}}));function Ps(e){return V.getState().remember(e)}function Fs(e,t){return js(e.sessionID,e.id,t)?V.getState().remember(e):!1}function Is(e,t,n){V.getState().forget(e,t,n)}function Ls(e,t){V.getState().forgetPromoted(e,t)}function Rs(e,t,n){V.getState().replaceFromAuthority(e,t,n)}function zs(e,t,n){V.getState().updateDelivery(e,t,n)}function Bs(e){return!!e&&typeof e==`object`&&e.kind===`session-inbox`}var Vs=e=>e?e.toLowerCase().includes(`application/json`):!1,Hs=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 Us(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 Gs(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 Ks(e){return e?{directory:e}:{}}function qs(e,t){let n=`/api/session/${encodeURIComponent(e)}/inbox`;return t?`${n}/${encodeURIComponent(t)}`:n}async function Js(e,t){let n=e.headers.get(`content-type`);if(Hs(n))throw Error(`${t}: unexpected HTML response`);let r;try{r=await e.json()}catch{throw Error(`${t}: malformed JSON`)}if(!Vs(n)&&r==null)throw Error(`${t}: empty response`);return r}function Ys(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:Us(n.timeCreated)??Us(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 Xs(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(Ys(e)));return r}function Zs(e){return{runtimeKey:c(),generation:s(),directory:e,overlay:B()}}function W(e){return c()===e.runtimeKey&&s()===e.generation&&Ds(e.overlay)}function Qs(e){let t=Error(`${e}: runtime switched`);throw t.name=`RuntimeGenerationMismatchError`,t}async function $s(e){let t=e.commit??Zs(e.directory);W(t)||Qs(`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 d(n,{method:`POST`,headers:{"Content-Type":`application/json`},query:{directory:t.directory},body:JSON.stringify(r),signal:e.signal});if(W(t)||Qs(`session prompt`),!i.ok){let e=await Gs(i);Ws(`Failed to send message`,i.status,e)}let a=Ys(await Js(i,`session prompt`));return W(t)||Qs(`session prompt`),Ps(a),a}function ec(e){let t=e?.status;return typeof t!=`number`||!Number.isFinite(t)||t===408||t===429?!1:t>=400&&t<500}async function tc(e){let t=e.inputID.trim();if(!t)return{status:`unknown`};let n=e.commit??Zs(e.directory??``);if(!W(n))return{status:`unknown`};try{let r=await rc({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 Fs(i,{startedMark:r.startedMark})?{status:`pending`,item:i}:{status:`unknown`}}catch{}if(!W(n))return{status:`unknown`};try{let r=await et({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 Is(e.sessionID,t,`consumed`),{status:`promoted`,id:t}}catch{}return{status:`unknown`}}function nc(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 Fs(Ys(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 Is(r,i,`cancelled`),!0;if(t===`session.inbox.delivered`)return Is(r,i,`consumed`),!0;if(t===`session.inbox.delivery.changed`){let e=n.delivery===`queue`?`queue`:n.delivery===`steer`?`steer`:null;return e?(zs(r,i,e),!0):!1}return!1}async function rc(e){let t=B(),n=Es(),r=dt(e.sessionID),i={method:`GET`,query:Ks(e.directory),signal:e.signal},a=await d(`/api/sessions/${encodeURIComponent(e.sessionID)}/delivery`,i);(a.status===404||a.status===501||Hs(a.headers.get(`content-type`)))&&(a=await d(qs(e.sessionID),i)),a.ok||Ws(`session inbox`,a.status,await Gs(a));let o=await Js(a,`session inbox`),s=Xs(o),c=Ds(t);return c&&dt(e.sessionID)===r&&(H(o)&&typeof o.compactionRunning==`boolean`?w(e.sessionID,o.compactionRunning):_t(e.sessionID,gt(o))),{items:s,startedMark:n,scope:t,current:c}}async function ic(e){let t=B(),n=await d(qs(e.sessionID,e.inboxID),{method:`PATCH`,headers:{"Content-Type":`application/json`},query:Ks(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 Gs(n)),Ds(t)&&(Ms(e.sessionID,e.inboxID)||zs(e.sessionID,e.inboxID,e.delivery))}async function ac(e){await ic({...e,delivery:`steer`})}async function oc(e){await ic({...e,delivery:`queue`})}async function sc(e){let t=await d(qs(e.sessionID,e.inboxID),{method:`DELETE`,query:Ks(e.directory),signal:e.signal});t.ok||Ws(`session inbox cancel`,t.status,await Gs(t))}function cc(e,t,n){Rs(e,t,n)}async function lc(e){let t=B();if(await sc(e),!Ds(t))return{overlay:V.getState().list(e.sessionID),transcriptRows:[]};Is(e.sessionID,e.inboxID,`cancelled`);try{let n=await rc({sessionID:e.sessionID,directory:e.directory,signal:e.signal});if(!Ds(t)||!n.current)return{overlay:V.getState().list(e.sessionID),transcriptRows:[]};cc(e.sessionID,n.items,{startedMark:n.startedMark})}catch{}return{overlay:V.getState().list(e.sessionID),transcriptRows:[]}}async function uc(e){let t=`/api/session/${encodeURIComponent(e.sessionID)}/interrupt`,n={};e.directory&&(n.directory=e.directory),e.resume!==void 0&&(n.resume=String(e.resume));let r=await d(t,{method:`POST`,query:n,signal:e.signal});if(!r.ok)throw Error(`Session interrupt failed (${r.status})`)}async function dc(e){return e.promotedIDs.includes(e.optimisticID)?`confirmed`:(e.removeOptimistic(e.optimisticID),await e.refreshFromAuthority(),`refreshed`)}var fc=`session-revert-busy`,pc=e=>e?e.toLowerCase().includes(`text/html`):!1;function mc(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}function hc(e){return typeof e==`string`&&e.length>0?e:void 0}function gc(e,t,n){if(t===409)throw _c();let r=n?`: ${n}`:``,i=Error(`${e} (${t})${r}`);if(i.status=t,t===404&&n)try{let e=JSON.parse(n);mc(e)&&e._tag===`MessageNotFoundError`&&(i.name=`MessageNotFoundError`)}catch{}throw i}function _c(){let e=Error(fc);return e.name=`SessionRevertBusyError`,e}function vc(e){if(!e||typeof e!=`object`)return!1;let t=e;return t.name===`SessionRevertBusyError`||t.message===`session-revert-busy`}async function yc(e){try{return(await e.text()).trim()}catch{return``}}async function bc(e,t){if(pc(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 xc(e){return e?{directory:e}:{}}function Sc(e,t){return`/api/session/${encodeURIComponent(e)}/revert/${t}`}function Cc(e){let t=mc(e)?e:null,n=t&&mc(t.data)?t.data:t;if(!n)throw Error(`session revert: expected revert payload`);let r=hc(n.messageID);if(!r)throw Error(`session revert: missing messageID`);let i=Array.isArray(n.files)?n.files.flatMap(e=>{if(!mc(e))throw Error(`session revert: invalid file diff`);let t=hc(e.file)??hc(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,...hc(n.partID)?{partID:hc(n.partID)}:{},...hc(n.snapshot)?{snapshot:hc(n.snapshot)}:{},...i?{files:i}:{}}}function wc(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 Tc(e){let t=await d(Sc(e.sessionID,`stage`),{method:`POST`,headers:{"Content-Type":`application/json`},query:xc(e.directory),body:JSON.stringify({messageID:e.messageID,files:e.files!==!1}),signal:e.signal});return t.ok||gc(`session revert stage`,t.status,await yc(t)),Cc(await bc(t,`session revert stage`))}async function Ec(e){let t=await d(`/api/session/${encodeURIComponent(e.sessionID)}/revert`,{method:`DELETE`,query:xc(e.directory),signal:e.signal});t.ok||gc(`session revert clear`,t.status,await yc(t))}async function Dc(e){let t=await d(Sc(e.sessionID,`commit`),{method:`POST`,query:xc(e.directory),signal:e.signal});t.ok||gc(`session revert commit`,t.status,await yc(t))}var Oc=e=>e?e.toLowerCase().includes(`text/html`):!1;function kc(e,t,n){let r=n?`: ${n}`:``,i=Error(`${e} (${t})${r}`);throw i.status=t,i}async function Ac(e){try{return(await e.text()).trim()}catch{return``}}function jc(e){return e?{directory:e}:{}}function Mc(e,t){return`/api/session/${encodeURIComponent(e)}/permission/${encodeURIComponent(t)}/reply`}async function Nc(e){let t=await d(Mc(e.sessionID,e.requestID),{method:`POST`,headers:{"Content-Type":`application/json`},query:jc(e.directory),body:JSON.stringify({decision:e.reply,...e.message?{message:e.message}:{}}),signal:e.signal});if(t.ok||kc(`session permission reply`,t.status,await Ac(t)),t.status!==204&&Oc(t.headers.get(`content-type`)))throw Error(`session permission reply: unexpected HTML response`)}function Pc(e){let t=Error(`${e} is not available on OpenCode v2`);return t.name=`V2CapabilityUnavailableError`,t}function Fc(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 Ic(e){return e.worktree||e.canonical||``}function Lc(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 Rc(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 zc(e){return!!e&&typeof e==`object`&&!Array.isArray(e)&&e.kind===`question`}function Bc(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 Vc(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 Hc(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}:{}})):Vc(e),n=Bc(e);return{id:e.id,sessionID:e.sessionID,questions:t,...n?{tool:n}:{}}}function Uc(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 Wc=3,Gc=3e4,Kc=32e3,qc=36e5,Jc=6e5,Yc=new Set([429,502,503,504]),Xc=new Map;function Zc(){let e=Date.now();for(let[t,n]of Xc)n.consecutiveErrors===0&&e-n.lastErrorAt>qc&&Xc.delete(t)}typeof setInterval<`u`&&setInterval(Zc,Jc).unref?.();function Qc(e){let t=Xc.get(e);return t||(t={consecutiveErrors:0,lastErrorAt:0,circuitOpen:!1,circuitOpenAt:0,circuitCooldownMs:Gc},Xc.set(e,t)),t}function $c(e){if(!e)return;let t=Xc.get(e);t&&(t.consecutiveErrors=0,t.lastErrorAt=0)}function el(e,t){if(!e)return;let n=Qc(e);n.consecutiveErrors+=1,n.lastErrorAt=Date.now(),tl(t)&&n.consecutiveErrors>=Wc&&(n.circuitOpen=!0,n.circuitOpenAt=Date.now(),console.warn(`[provider-tracker] Circuit opened for ${e} after ${n.consecutiveErrors} consecutive errors`))}function tl(e){return e!==void 0&&Yc.has(e)}function nl(e){let t=Xc.get(e);return t?.circuitOpen?Date.now()-t.circuitOpenAt>=t.circuitCooldownMs?(t.circuitOpen=!1,t.consecutiveErrors=0,t.circuitCooldownMs=Math.min(t.circuitCooldownMs*2,Kc*4),!1):!0:!1}function rl(e){if(!(!e||!nl(e)))throw Error(`Provider ${e} is temporarily unavailable after repeated errors. Please retry shortly.`)}var il=`/api`,al=1e4,ol=4e3,sl=3e3,cl=1e3,ll=12e3;function ul(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 dl(e){if(e instanceof ue&&e.reason===`UnexpectedStatus`){let t=e.cause;if(t&&typeof t==`object`&&`status`in t){let e=t.status;if(typeof e==`number`)return e}}if(e&&typeof e==`object`&&`status`in e){let t=e.status;if(typeof t==`number`)return t}}function fl(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 pl(e){let t=e.replace(/\/+$/,``);if(t.endsWith(`/api`)){let e=t.slice(0,-4);if(e.length>0)return e}return gl(vl()||`/`)}function ml(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 hl=/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//,gl=e=>{let t=typeof e==`string`&&e.trim().length>0?e.trim():`/api`;if(hl.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}},_l=()=>{try{return a().api(`/api`)}catch{return null}},vl=()=>{try{return a().api(`/`)}catch{return null}},yl=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)}},bl=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)}}},xl=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}}},Sl=e=>xl(de.make({baseUrl:e.baseUrl,...e.headers?{headers:e.headers}:{},fetch:(e,t)=>{let n=new URL(e instanceof Request?e.url:e.toString()),r=`${n.pathname}${n.search}`;if(e instanceof Request){let n=gl(a().api(r));return d(new Request(n,e),t)}return d(r,t)}})),Cl=20971520,wl=e=>{let{referenceOnly:t,...n}=e;return Tl(e)&&!t?n:{type:`text`,synthetic:!0,text:as(`Attachment ${JSON.stringify(e.filename||`file`)}: ${JSON.stringify(ls(e.url))}\nRead or process this file with tools as needed; its contents are not included in the message.`.replace(/</g,`\\u003c`))}},Tl=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),El=e=>{let t=[];for(let n of e){if(!Tl(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=ls(r).trim();i&&t.push({filename:e,path:i})}return t},Dl=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=>qo(e,El([...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.map(wl)),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.map(wl))}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},Ol=e=>e.replace(/\\/g,`/`),kl=400,Al=()=>{let e=u();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=il){let t=_l()||e;this.baseUrl=gl(t),this.client=Sl({baseUrl:pl(this.baseUrl)})}getBaseUrl(){return gl(_l()||this.baseUrl)}reconnectToRuntimeBaseUrl(){let e=gl(_l()||il);e!==this.baseUrl&&(this.baseUrl=e,this.client=Sl({baseUrl:pl(this.baseUrl)}),this.scopedClients.clear(),this.listDirectoryInFlight.clear(),this.configProvidersInFlight.clear(),this.listAgentsInFlight.clear(),this.clearConfigCache(),this.listDirectoryCache.clear(),this.clearHealthCache())}getSdkClient(){return this.client}getScopedSdkClient(e){return this.getScopedApiClient(e)}async checkLocationReleaseUse(e,t){let n=this.getScopedSdkClient(e),r={location:{directory:e}},[i,a]=await Promise.all([n.shell.list(r,{signal:t}),n.form.list(r,{signal:t})]);return i.data.some(e=>e.status===`running`)||a.data.length>0?`busy`:`free`}async releaseLocation(e,t){await this.getScopedSdkClient(e).debug.location.evict({location:{directory:e}},{signal:t})}getScopedApiClient(e){let t=(this.normalizeCandidatePath(e)??e)||``,n=this.scopedClients.get(t);if(n)return n;let r=Sl({baseUrl:pl(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`),ho(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`),ho(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(f(`lastDirectory`)),t(f(`homeDirectory`))}catch{}if(!e.size&&typeof process<`u`&&typeof process.cwd==`function`&&t(process.cwd()),!e.size)return{homeDirectory:`/`,username:void 0};let[n]=Array.from(e);return this.deriveHomeDirectory(n)}async probeDirectory(e){let t=this.normalizeCandidatePath(e);if(!t)return!1;try{let e=await this.client.location.get({location:{directory:t}}),n=typeof e?.directory==`string`?e.directory:null;return!!(n&&n.trim().length>0)}catch{return!1}}async listSessions(){let e=await this.client.session.list(this.currentDirectory?{directory:this.currentDirectory}:void 0);return Array.isArray(e.data)?e.data.map(v):[]}async searchSessionsByTitle(e){let t=e.search.trim(),n=await this.client.session.list({search:t||void 0,parentID:null,limit:e.limit??30,order:`desc`},e.signal?{signal:e.signal}:void 0);if(!Array.isArray(n?.data))throw Error(`session.list search returned no data`);return n.data.map(v)}async createSession(e,t){let n=this.normalizeCandidatePath(t)??this.currentDirectory;if(e?.metadata,e?.parentID){let t=await this.client.session.fork({sessionID:e.parentID});return e.title?(await this.client.session.update({sessionID:t.id,title:e.title}),v(await this.client.session.get({sessionID:t.id}))):v(t)}return v(await this.client.session.create({...n?{location:{directory:n}}:{},title:e?.title}))}async getSession(e,t){return v(await this.client.session.get({sessionID:e}))}async deleteSession(e,t){return await this.client.session.remove({sessionID:e}),!0}async deleteSessionMessage(e,t,n){throw G(`session.deleteMessage`)}async updateSession(e,t,n){let r=t.title!==void 0,i=t.metadata!==void 0,a=t.time!==void 0&&Object.prototype.hasOwnProperty.call(t.time,`archived`);if(!r&&!i&&!a)throw G(`session.update`);let o=this.normalizeCandidatePath(n)??this.currentDirectory,l=s(),u=c(),f=()=>{if(s()!==l||c()!==u){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=ul(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 d(`/api/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 d(`/api/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 et({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 d(`/api/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=ms(t.url,t.mime);if(!n)return t;let r=await So(n)??await(await ge(async()=>{let{default:t}=await import(`./vendor-heic2any-DgJnLT1Y.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=Tl(e)?await this.normalizeFilePart(e):e;this.assertCapturedRuntime(n,r,`prompt attachment normalize`);let a=i.url,o;if(hs(a)){let e=a.startsWith(`blob:`)?await fetch(a).then(e=>e.blob()):ms(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 gs({body:e,mime:i.mime,filename:i.filename});this.assertCapturedRuntime(n,r,`prompt attachment upload`),a=t.url,o=t.size}if(Tl(i)&&o===void 0&&a.toLowerCase().startsWith(`file://`)){let e=ls(a),t=u()?.files;if(t?.statFile)o=(await t.statFile(e)).size;else{let t=await d(`/api/fs/stat`,{query:{path:e}});if(!t.ok)throw Error(`Failed to inspect prompt attachment`);o=(await t.json()).size}this.assertCapturedRuntime(n,r,`prompt attachment stat`)}return{...e.id?{id:e.id}:{},type:`file`,mime:i.mime,filename:i.filename,url:a,...Tl(i)&&(o===void 0||!Number.isSafeInteger(o)||o<0||o>Cl)?{referenceOnly:!0}:{}}}async buildMessageParts(e,t){let n=t?.generation??s(),r=t?.runtimeKey??c();return Dl(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??ie(`msg`),a=this.normalizeCandidatePath(e.directory??null)??this.currentDirectory,o=Zs(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),rl(e.providerID);let u=l.flatMap(e=>e.type===`text`&&typeof e.text==`string`?[e.text]:[]).join(`
5
5
  `)||e.text,d=l.flatMap(e=>e.type!==`file`||typeof e.url!=`string`?[]:[{uri:e.url,...e.filename?{name:e.filename}:{}}]),f=l.flatMap(e=>e.type===`agent`&&typeof e.name==`string`?[{name:e.name}]:[]),p=Se(l.flatMap(e=>e.type===`text`&&!e.synthetic?[e.text]:[]).join(`