@openchambery/web 2.1.8-beta.7 → 2.1.8-beta.9

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 (89) hide show
  1. package/dist/assets/{AgentAvatar-qSjSZvIG.js → AgentAvatar-mchFM3n-.js} +1 -1
  2. package/dist/assets/AssistantView-BKUwYL67.js +3 -0
  3. package/dist/assets/{DiagramView-BzgI7Ugy.js → DiagramView-D_Ib5vBc.js} +1 -1
  4. package/dist/assets/{FadeInOnReveal-CD5d1k_u.js → FadeInOnReveal-BXDM9joC.js} +1 -1
  5. package/dist/assets/{Icon-QASb6r3F.js → Icon-BGp_ize2.js} +1 -1
  6. package/dist/assets/{ImageLoadingPlaceholder-BuGiEI7w.js → ImageLoadingPlaceholder-DmUxjyxq.js} +1 -1
  7. package/dist/assets/{LoadingImage-FRySi1BM.js → LoadingImage-DGjlKW_O.js} +1 -1
  8. package/dist/assets/{MarkdownRenderer-C7Rxb6Z8.js → MarkdownRenderer-Cfof1peT.js} +2 -2
  9. package/dist/assets/{MarkdownRendererImpl-DtHTDXL6.js → MarkdownRendererImpl-ChI65FCt.js} +2 -2
  10. package/dist/assets/{MarkstreamRendererImpl-H0RBa8Lc.js → MarkstreamRendererImpl-DVH-ftYX.js} +1 -1
  11. package/dist/assets/{MobileDetailNavigation-D-1rcvj_.js → MobileDetailNavigation-DSO5eFBk.js} +1 -1
  12. package/dist/assets/{MobileShareBridge-CDiwapde.js → MobileShareBridge-BeEyMgN3.js} +1 -1
  13. package/dist/assets/{MobileTabPageHeader-CJoiSp8u.js → MobileTabPageHeader-BnSDaiNY.js} +1 -1
  14. package/dist/assets/{MultiRunWindow-BzJkoXja.js → MultiRunWindow-BUMMBZVZ.js} +1 -1
  15. package/dist/assets/{OnboardingScreen-CHa767GT.js → OnboardingScreen-DmJgU0Jc.js} +1 -1
  16. package/dist/assets/{OverlayScrollbar-C7Ls30Hy.js → OverlayScrollbar-BkJCkZp3.js} +1 -1
  17. package/dist/assets/{SettingsView-CQUOFiau.js → SettingsView-O01tqMQO.js} +6 -6
  18. package/dist/assets/{SettingsWindow-pAUyRdBf.js → SettingsWindow-B23iyDA3.js} +1 -1
  19. package/dist/assets/{TerminalView-Cc54ph8a.js → TerminalView-DtakSdhD.js} +1 -1
  20. package/dist/assets/{ToolOutputDialog-CfVHQDPS.js → ToolOutputDialog-ClmLLL4n.js} +1 -1
  21. package/dist/assets/{appThemeRegistry-Dijsc1TR.js → appThemeRegistry-Bo8eOMlc.js} +1 -1
  22. package/dist/assets/{button-DOrwfkre.js → button-BKjGCkH3.js} +1 -1
  23. package/dist/assets/{collapsible-BJwPZMpo.js → collapsible-03FGLsF4.js} +1 -1
  24. package/dist/assets/{desktopHosts-DSBZ-9-L.js → desktopHosts-BZ7iYE-l.js} +1 -1
  25. package/dist/assets/{desktopRelayRestore-DK8TzHRx.js → desktopRelayRestore-S9wEiY2U.js} +1 -1
  26. package/dist/assets/{diagram-BFevUcKu.js → diagram-D4QHcaSQ.js} +1 -1
  27. package/dist/assets/{dialog-FSXwOR2i.js → dialog-nm_cQEUZ.js} +1 -1
  28. package/dist/assets/{dropdown-menu.styles-CfTQwJHe.js → dropdown-menu.styles-WkR8IcF2.js} +1 -1
  29. package/dist/assets/{es-VbQQdCdi.js → es-C9PRwAQm.js} +2 -2
  30. package/dist/assets/{fileMentionTouchSelection-DNtAG7n8.js → fileMentionTouchSelection-9tUq311z.js} +1 -1
  31. package/dist/assets/{fileQueries-BGE5l3Jd.js → fileQueries-DZR-mK8h.js} +1 -1
  32. package/dist/assets/{fr-BotRbS9t.js → fr-2tfGTcme.js} +2 -2
  33. package/dist/assets/{gitApi-CizY9AdM.js → gitApi-C2zxDfMk.js} +1 -1
  34. package/dist/assets/{image-loading-qNtUCy69.js → image-loading-CsxDGgek.js} +1 -1
  35. package/dist/assets/{input-Ctgb06ot.js → input-Buww8enN.js} +1 -1
  36. package/dist/assets/insertionBoundaries-DB9s3jca.js +1 -0
  37. package/dist/assets/{ja-l_gq6Coh.js → ja-D7NHmhJr.js} +2 -2
  38. package/dist/assets/{ko-yhU5rfe5.js → ko-DeGmXmv6.js} +2 -2
  39. package/dist/assets/main-0PxRleO0.js +169 -0
  40. package/dist/assets/{main-CRTSUx9O.js → main-BjL5V6ie.js} +2 -2
  41. package/dist/assets/{markdownHeightCache-B6drDnVO.js → markdownHeightCache-B6wZ-UwD.js} +1 -1
  42. package/dist/assets/{mcpQueries-CWF6gsQp.js → mcpQueries-CWB2bCOV.js} +1 -1
  43. package/dist/assets/{miniChat-Co2aZmGn.js → miniChat-CHCwBkzu.js} +2 -2
  44. package/dist/assets/{mobile-C-jsM-at.js → mobile-CG3SgbAO.js} +2 -2
  45. package/dist/assets/{multirun-BrG61uYF.js → multirun-47QshrE2.js} +1 -1
  46. package/dist/assets/{persistence-B7ORJ371.js → persistence-B4Ni3Gmv.js} +1 -1
  47. package/dist/assets/{pl-BkynZgOJ.js → pl-CyWLY1AT.js} +2 -2
  48. package/dist/assets/{platform-CiBU2bCp.js → platform-BQPsr8Zl.js} +1 -1
  49. package/dist/assets/{projectMeta-DeZn_2IB.js → projectMeta-_nxyshbo.js} +1 -1
  50. package/dist/assets/{pt-BR-Dw_Dokez.js → pt-BR-D9VVxvts.js} +2 -2
  51. package/dist/assets/{renderElectronMiniChatApp-94_7gkv4.js → renderElectronMiniChatApp-DHs8HXNl.js} +2 -2
  52. package/dist/assets/renderMobileApp-DYne1Jhg.js +28 -0
  53. package/dist/assets/{runtimeConfig-GWscdI1w.js → runtimeConfig-CRWwlAOU.js} +1 -1
  54. package/dist/assets/{runtimeEndpointReset-CQOgpDQQ.js → runtimeEndpointReset-B082-H3n.js} +15 -15
  55. package/dist/assets/{scheduledTaskNavigation-DEMPeoot.js → scheduledTaskNavigation-C-HGgCQA.js} +1 -1
  56. package/dist/assets/{sessionChangeSummary-CLeHgwn-.js → sessionChangeSummary-D_C2s2Fi.js} +1 -1
  57. package/dist/assets/{sessionLookup-BNyl-F_j.js → sessionLookup-CLMT7sx_.js} +1 -1
  58. package/dist/assets/{sortable-tabs-strip-BVnwfMAa.js → sortable-tabs-strip-cHZM0f0Z.js} +1 -1
  59. package/dist/assets/speechSettingsQueries-BPjR3N-x.js +4 -0
  60. package/dist/assets/{src-C9BNQK0O.css → src-OjoeiMbd.css} +1 -1
  61. package/dist/assets/{store-COtDAfPx.js → store-Ds-7Em7C.js} +2 -2
  62. package/dist/assets/{terminalApi-bN5IYQau.js → terminalApi-kRMttlcP.js} +1 -1
  63. package/dist/assets/{textarea-DJ52TDJj.js → textarea-BZHD_GND.js} +1 -1
  64. package/dist/assets/{tooltip-JgW0lJaV.js → tooltip-DCeWvAqN.js} +1 -1
  65. package/dist/assets/{uk-DSl09YqU.js → uk-Df44svOl.js} +2 -2
  66. package/dist/assets/{url-nbXEti6c.js → url-Bd61gNgl.js} +1 -1
  67. package/dist/assets/{useAppFontEffects-DrhKfpyE.js → useAppFontEffects-AQXif_Vl.js} +26 -26
  68. package/dist/assets/{useDesktopWindowControlsLayout-CqByoGOq.js → useDesktopWindowControlsLayout-CDYvCUVb.js} +1 -1
  69. package/dist/assets/{useEffectiveDirectory-C562rMTt.js → useEffectiveDirectory-CJCTgfPc.js} +1 -1
  70. package/dist/assets/{useFontPreferences-6LD7d7hP.js → useFontPreferences-lAw0Cbza.js} +1 -1
  71. package/dist/assets/useMobileNavigationStore-Buez5E56.js +417 -0
  72. package/dist/assets/{useWorkerHighlightedLines-B1wPAG8-.js → useWorkerHighlightedLines-DFkH7EUL.js} +1 -1
  73. package/dist/assets/{zh-CN-NtO1bA00.js → zh-CN-wowfzo60.js} +2 -2
  74. package/dist/assets/{zh-TW-CF0z_L0k.js → zh-TW-DwojcgA_.js} +2 -2
  75. package/dist/index.html +8 -8
  76. package/dist/mini-chat.html +8 -8
  77. package/dist/mobile.html +8 -8
  78. package/package.json +1 -1
  79. package/server/lib/opencode/feature-routes-runtime.js +1 -0
  80. package/server/lib/session-folders/DOCUMENTATION.md +20 -0
  81. package/server/lib/session-folders/order-routes.js +69 -0
  82. package/server/lib/session-folders/routes.js +3 -0
  83. package/server/lib/session-folders/routes.test.js +49 -0
  84. package/dist/assets/AssistantView-BYVyU99L.js +0 -3
  85. package/dist/assets/insertionBoundaries-DiezF3t9.js +0 -1
  86. package/dist/assets/main-Bq9n4CsP.js +0 -169
  87. package/dist/assets/renderMobileApp-C7Ab_Jn1.js +0 -28
  88. package/dist/assets/speechSettingsQueries-BNqvjxZr.js +0 -4
  89. package/dist/assets/useMobileNavigationStore-CYheYCC_.js +0 -417
@@ -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-C8w0nlKy.js";import{c as i,f as a,i as o,n as s,r as c,s as l}from"./runtime-switch-3ad3yzM7.js";import{n as u}from"./runtime-fetch-QCWYlAx0.js";import{Et as d,Mn as f,Ut as p,Vt as m,Yt as h,bt as g,i as ee,ln as te,lt as ne,mt as re,on as ie,pt as ae}from"./persistence-B7ORJ371.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-CDMI_Yzu.js";import{n as pe}from"./vendor-react-BP2cRVqX.js";import{i as me}from"./vendor-pathe-vBmvQE8f.js";import{o as he}from"./vendor-aparajita-capacitor-secure-storage-xol_6BsB.js";var ge=(e,t)=>e!==t,_=e=>{if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0};function _e(e){let t=_(e.id),n=_(e.name),r=_(e.displayName),i=t??n;if(!i)return{...e,id:``,name:``,displayName:r??``};if(n===i&&r)return{...e,id:i,name:i,displayName:r};let a=r??n??i;return{...e,id:i,name:i,displayName:a}}function ve(e){return e?_(e.displayName)??_(e.name)??_(e.id)??``:``}function ye(e,t){let n=_(t);if(!n||!e?.length)return;let r=e.find(e=>_(e.name)===n);if(r)return r;let i=e.find(e=>_(e.id)===n);if(i)return i;let a=e.find(e=>_(e.displayName)===n);if(a)return a}function be(e,t){let n=_(t);if(!n)return;let r=ye(e,n);return r?_(r.name)??_(r.id)??n:n}function xe(e){return Array.from(new Set(Array.from(e.matchAll(d()),e=>e[1])),e=>({id:e,name:e}))}function v(e){return{...e,directory:e.location?.directory}}function Se(e){let t={};for(let n of e){let e=n;!e||e.type!==`document`||!e.info||typeof e.info!=`object`||Object.assign(t,e.info)}return t}var y=e(ce(),1),Ce=pe();function b(e,t){return e.findIndex(e=>e.id===t)}function we(e,t){if(!t)return e.slice();let n=b(e,t);return n<0?e.slice():e.slice(0,n)}function Te(e,t,n){let r=b(e,n);return r<0?!1:b(e,t)>=r}function Ee(e,t){if(!t){for(let t=e.length-1;t>=0;--t){let n=e[t];if(n?.role===`user`)return n}return}let n=b(e,t);if(!(n<0))for(let t=n-1;t>=0;--t){let n=e[t];if(n?.role===`user`)return n}}function De(e,t){let n=b(e,t);if(!(n<0))for(let t=n+1;t<e.length;t+=1){let n=e[t];if(n?.role===`user`)return n}}var Oe=`openchamber:sync:debug`,ke;function Ae(){if(ke!==void 0)return ke;try{ke=typeof localStorage<`u`&&localStorage.getItem(Oe)===`1`}catch{ke=!1}return ke}function x(e,...t){Ae()&&(`${e}`,[...t])}var je={pipeline:{coalesced:(e,t)=>x(`pipeline`,`coalesced`,e,t),flush:e=>x(`pipeline`,`flush`,`${e} events`)},reducer:{messageUpdatedUnchanged:(e,t,n,r,i)=>x(`reducer`,`message.updated UNCHANGED (skipped)`,{sessionID:e,messageID:t,role:n,finish:r,completed:i}),partUpdatedNoExistingParts:(e,t,n)=>x(`reducer`,`message.part.updated NO EXISTING PARTS`,{messageID:e,partID:t,partType:n}),partDeltaNoParts:(e,t)=>x(`reducer`,`message.part.delta DROPPED (no parts array)`,{messageID:e,partID:t}),partDeltaNotFound:(e,t)=>x(`reducer`,`message.part.delta DROPPED (partID not found)`,{messageID:e,partID:t}),partSkipped:(e,t,n)=>x(`reducer`,`message.part.updated SKIPPED (type filtered)`,{messageID:e,partID:t,partType:n})},dispatch:{eventNoChange:(e,t,n)=>x(`dispatch`,`event → no change`,{eventType:e,sessionID:t,messageID:n}),eventApplied:(e,t,n)=>x(`dispatch`,`event → applied`,{eventType:e,sessionID:t,messageID:n})},recovery:{materializing:e=>x(`recovery`,`materializing session`,e)}};function Me(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 Ne=`desc`;function Pe(e){return!S(e)||e.type!==`compaction`?!1:e.status===`running`||e.status===`completed`||e.status===`failed`}function Fe(e){if(e)return e.find(Pe)}var Ie=e=>e?e.toLowerCase().includes(`application/json`):!1,Le=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 Re(e){if(!S(e))return null;let t=C(e.id);return t?{...e,id:t}:null}function ze(e,t,n){return`${e}:${t}:${n}`}function Be(e,t,n,r,i=`text`,a){return i===`reasoning`?{id:ze(t,i,n),sessionID:e,messageID:t,type:`reasoning`,text:r}:{id:ze(t,i,n),sessionID:e,messageID:t,type:`text`,text:r,...a?.synthetic===!0?{synthetic:!0}:{}}}function Ve(e){return e?e.nativeType===`synthetic`||e.type===`synthetic`:!1}function He(e,t){return!e?.id||Ve(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 Ue(e){if(typeof e==`string`&&e.length!==0)return e.replace(/^evt_/,`msg_`)}function We(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-C8w0nlKy.js";import{c as i,f as a,i as o,n as s,r as c,s as l}from"./runtime-switch-3ad3yzM7.js";import{n as u}from"./runtime-fetch-QCWYlAx0.js";import{Et as d,Mn as f,Ut as p,Vt as m,Yt as h,bt as g,i as ee,ln as te,lt as ne,mt as re,on as ie,pt as ae}from"./persistence-B4Ni3Gmv.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-CDMI_Yzu.js";import{n as pe}from"./vendor-react-BP2cRVqX.js";import{i as me}from"./vendor-pathe-vBmvQE8f.js";import{o as he}from"./vendor-aparajita-capacitor-secure-storage-xol_6BsB.js";var ge=(e,t)=>e!==t,_=e=>{if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0};function _e(e){let t=_(e.id),n=_(e.name),r=_(e.displayName),i=t??n;if(!i)return{...e,id:``,name:``,displayName:r??``};if(n===i&&r)return{...e,id:i,name:i,displayName:r};let a=r??n??i;return{...e,id:i,name:i,displayName:a}}function ve(e){return e?_(e.displayName)??_(e.name)??_(e.id)??``:``}function ye(e,t){let n=_(t);if(!n||!e?.length)return;let r=e.find(e=>_(e.name)===n);if(r)return r;let i=e.find(e=>_(e.id)===n);if(i)return i;let a=e.find(e=>_(e.displayName)===n);if(a)return a}function be(e,t){let n=_(t);if(!n)return;let r=ye(e,n);return r?_(r.name)??_(r.id)??n:n}function xe(e){return Array.from(new Set(Array.from(e.matchAll(d()),e=>e[1])),e=>({id:e,name:e}))}function v(e){return{...e,directory:e.location?.directory}}function Se(e){let t={};for(let n of e){let e=n;!e||e.type!==`document`||!e.info||typeof e.info!=`object`||Object.assign(t,e.info)}return t}var y=e(ce(),1),Ce=pe();function b(e,t){return e.findIndex(e=>e.id===t)}function we(e,t){if(!t)return e.slice();let n=b(e,t);return n<0?e.slice():e.slice(0,n)}function Te(e,t,n){let r=b(e,n);return r<0?!1:b(e,t)>=r}function Ee(e,t){if(!t){for(let t=e.length-1;t>=0;--t){let n=e[t];if(n?.role===`user`)return n}return}let n=b(e,t);if(!(n<0))for(let t=n-1;t>=0;--t){let n=e[t];if(n?.role===`user`)return n}}function De(e,t){let n=b(e,t);if(!(n<0))for(let t=n+1;t<e.length;t+=1){let n=e[t];if(n?.role===`user`)return n}}var Oe=`openchamber:sync:debug`,ke;function Ae(){if(ke!==void 0)return ke;try{ke=typeof localStorage<`u`&&localStorage.getItem(Oe)===`1`}catch{ke=!1}return ke}function x(e,...t){Ae()&&(`${e}`,[...t])}var je={pipeline:{coalesced:(e,t)=>x(`pipeline`,`coalesced`,e,t),flush:e=>x(`pipeline`,`flush`,`${e} events`)},reducer:{messageUpdatedUnchanged:(e,t,n,r,i)=>x(`reducer`,`message.updated UNCHANGED (skipped)`,{sessionID:e,messageID:t,role:n,finish:r,completed:i}),partUpdatedNoExistingParts:(e,t,n)=>x(`reducer`,`message.part.updated NO EXISTING PARTS`,{messageID:e,partID:t,partType:n}),partDeltaNoParts:(e,t)=>x(`reducer`,`message.part.delta DROPPED (no parts array)`,{messageID:e,partID:t}),partDeltaNotFound:(e,t)=>x(`reducer`,`message.part.delta DROPPED (partID not found)`,{messageID:e,partID:t}),partSkipped:(e,t,n)=>x(`reducer`,`message.part.updated SKIPPED (type filtered)`,{messageID:e,partID:t,partType:n})},dispatch:{eventNoChange:(e,t,n)=>x(`dispatch`,`event → no change`,{eventType:e,sessionID:t,messageID:n}),eventApplied:(e,t,n)=>x(`dispatch`,`event → applied`,{eventType:e,sessionID:t,messageID:n})},recovery:{materializing:e=>x(`recovery`,`materializing session`,e)}};function Me(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 Ne=`desc`;function Pe(e){return!S(e)||e.type!==`compaction`?!1:e.status===`running`||e.status===`completed`||e.status===`failed`}function Fe(e){if(e)return e.find(Pe)}var Ie=e=>e?e.toLowerCase().includes(`application/json`):!1,Le=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 Re(e){if(!S(e))return null;let t=C(e.id);return t?{...e,id:t}:null}function ze(e,t,n){return`${e}:${t}:${n}`}function Be(e,t,n,r,i=`text`,a){return i===`reasoning`?{id:ze(t,i,n),sessionID:e,messageID:t,type:`reasoning`,text:r}:{id:ze(t,i,n),sessionID:e,messageID:t,type:`text`,text:r,...a?.synthetic===!0?{synthetic:!0}:{}}}function Ve(e){return e?e.nativeType===`synthetic`||e.type===`synthetic`:!1}function He(e,t){return!e?.id||Ve(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 Ue(e){if(typeof e==`string`&&e.length!==0)return e.replace(/^evt_/,`msg_`)}function We(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 Ge(e){return e===`patch`?`apply_patch`:e}function Ke(e,t,n){let r=C(n.id)??`${t}:tool`,i=Ge(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:We(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 qe(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 Je(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 Ye(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 Xe(e,t,n){return{id:t.id,sessionID:e,role:n,time:qe(t.time)}}function Ze(e,t){let n=Re(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=Xe(e,n,`user`);Ye(t,n);let i=[],a=C(n.text);a&&i.push(Be(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=Xe(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=Je(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(Be(e,r,l++,t.text));continue}if(n===`reasoning`&&typeof t.text==`string`){s.push(Be(e,r,u++,t.text,`reasoning`));continue}n===`tool`&&s.push(Ke(e,r,t))}return{info:t,parts:s}}if(i===`shell`){let t=Xe(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:ze(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={...Xe(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?[Be(e,r,0,s,`text`,{synthetic:!0})]:[{id:ze(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={...Xe(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:Xe(e,n,`assistant`),parts:[Be(e,r,0,C(n.text)??`[${i}]`)]}}function Qe(e,t,n=Ne,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=Ze(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=>He(e.info,e.parts)).length;return{records:i,cursor:s?void 0:o,complete:s,turnCount:c}}async function $e(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 u(r,{method:`GET`,query:i,signal:e.signal});if(!a.ok)throw Error(`session projection failed (${a.status})`);let o=a.headers.get(`content-type`);if(Le(o))throw Error(`session projection: unexpected HTML response`);Ie(o);let s;try{s=await a.json()}catch{throw Error(`session projection: malformed JSON`)}return Qe(s,e.sessionID,n,t)}function et(e,t){if(!S(e))throw Error(`session context: expected JSON object`);if(!Array.isArray(e.data))throw Error(`session context: data must be an array`);let n=[];for(let r of e.data){let e=Ze(t,r);e&&n.push(e)}return{records:n,cursor:void 0,complete:!1,turnCount:n.filter(e=>He(e.info,e.parts)).length}}async function tt(e){let t=`/api/session/${encodeURIComponent(e.sessionID)}/context`,n=await u(t,{method:`GET`,query:{directory:e.directory},signal:e.signal});if(!n.ok)throw Error(`session context failed (${n.status})`);if(Le(n.headers.get(`content-type`)))throw Error(`session context: unexpected HTML response`);let r;try{r=await n.json()}catch{throw Error(`session context: malformed JSON`)}return et(r,e.sessionID)}function nt(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])]:Me(c,l)).map(e=>i.get(e))}var rt=e=>e?e.toLowerCase().includes(`application/json`):!1,it=e=>e?e.toLowerCase().includes(`text/html`):!1;function at(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}function ot(e){return typeof e==`string`&&e.length>0?e:void 0}function st(e){return typeof e==`number`&&Number.isFinite(e)?e:void 0}function ct(e,t,n){let r=n?`: ${n}`:``,i=Error(`${e} (${t})${r}`);throw i.status=t,i}async function lt(e){try{return(await e.text()).trim()}catch{return``}}async function ut(e,t){let n=e.headers.get(`content-type`);if(it(n))throw Error(`${t}: unexpected HTML response`);let r;try{r=await e.json()}catch{throw Error(`${t}: malformed JSON`)}if(!rt(n)&&r==null)throw Error(`${t}: empty response`);return r}var dt=new Map,ft=e=>dt.get(e)??0,pt=oe((e,t)=>({runningBySession:{},setRunning(t,n){dt.set(t,ft(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(){dt.clear(),e({runningBySession:{}})}}));function w(e,t){pt.getState().setRunning(e,t)}function mt(e){return pt.getState().isRunning(e)}function ht(e){return!mt(e.sessionID)}function gt(e){let t=at(e)?e:null,n=t&&at(t.data)?t.data:t;if(!n)throw Error(`session compact: expected inbox item`);let r=ot(n.id),i=ot(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:st(n.timeCreated)}}function _t(e){let t=at(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)!at(e)||e.type!==`compaction`||r.push(gt(e));return r}function vt(e,t){t.some(e=>e.type===`compaction`)&&w(e,!0)}function yt(e,t){for(let n=t.length-1;n>=0;--n){let r=(t[n]?.parts??[]).find(Pe);if(r){w(e,r.status===`running`);return}}}async function bt(e){let t=`/api/session/${encodeURIComponent(e.sessionID)}/compact`,n={};e.messageID&&(n.id=e.messageID),e.delivery&&(n.delivery=e.delivery);let r=await u(t,{method:`POST`,headers:{"Content-Type":`application/json`},query:{directory:e.directory},body:JSON.stringify(n),signal:e.signal});r.ok||ct(`session compact`,r.status,await lt(r));let i=gt(await ut(r,`session compact`));return w(i.sessionID,!0),i}var xt=`compaction:`;function St(e,t){return t&&t.length>0?t:`${xt}${e}`}function Ct(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=>Pe(e)&&e.status===`running`))return r.id}}function wt(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(Pe),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 Tt(e,t){let n=String(t.type??``);if(!n.startsWith(`session.compaction.`))return!1;let r=at(t.properties)?t.properties:null;if(!r)return!1;let i=ot(r.sessionID);if(!i)return!1;let a=ot(r.inputID),o=Ct(e,i),s=n===`session.compaction.started`?a??Ue(t.id)??St(i):a??o??Ue(t.id)??St(i);if(n===`session.compaction.started`)return!e.part[s]?.some(Pe)&&(wt(e,i,s,e=>({...e,status:`running`,reason:r.reason===`auto`?`auto`:`manual`,...typeof r.recent==`string`?{recent:r.recent}:{}}),st(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?(wt(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?(wt(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}:{}}),st(r.eventCreated)),!0):!1;if(n===`session.compaction.failed`){if(w(i,!1),!o&&!a)return!1;let t=at(r.error)?r.error:{};return wt(e,i,s,e=>({...e,status:`failed`,reason:r.reason===`auto`?`auto`:`manual`,error:{type:ot(t.type)??`error`,message:ot(t.message)??``,...typeof t.status==`number`?{status:t.status}:{}}}),st(r.eventCreated)),!0}return!1}var Et=new Set([`patch`,`step-start`,`step-finish`]),Dt=[`text`,`output`],Ot=new Set([`completed`,`error`,`aborted`,`failed`,`timeout`,`cancelled`]);function kt(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 At(e,t){let n=[];for(let r of Dt){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 jt(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 Mt(e){if(e.type!==`tool`)return;let t=e.state?.status;return typeof t==`string`?t:void 0}function Nt(e,t){if(e.type!==`tool`||t.type!==`tool`)return!1;let n=Mt(e),r=Mt(t);if(n&&Ot.has(n)&&(!r||!Ot.has(r)))return!0;let i=jt(e),a=jt(t);return typeof i==`number`&&typeof a!=`number`}function Pt(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 Ft=[`agent`,`mode`,`providerID`,`modelID`,`variant`],It=e=>typeof e==`object`&&!!e&&!Array.isArray(e),Lt=[`input`,`output`,`reasoning`];function Rt(e){if(!e||typeof e!=`object`)return!1;let t=e;return Lt.some(e=>typeof t[e]==`number`&&Number.isFinite(t[e])&&t[e]>0)}function zt(e){if(!e||typeof e!=`object`)return!1;let t=e;return Lt.every(e=>typeof t[e]!=`number`||!Number.isFinite(t[e])||t[e]<=0)}function Bt(e){if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0}function Vt(e,t){let n={...e,...t},r=e,i=t,a=n;for(let e of Ft){let t=Bt(i[e]),n=Bt(r[e]);t?a[e]=t:n?a[e]=n:delete a[e]}let o=i.model,s=r.model;return It(o)?a.model=o:It(s)?a.model=s:delete a.model,(e.time||t.time)&&(n.time={...e.time,...t.time}),Rt(r.tokens)&&zt(i.tokens)&&(a.tokens=r.tokens),n}function Ht(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(!Pt(e[n],t[n]))return!1;return!0}function Ut(e,t,n){if(!t)return!1;let r=e.message[t];return r?b(r,n)>=0:!1}function Wt(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=Vt(t,n);if(Ht(t,r))return je.reducer.messageUpdatedUnchanged(n.sessionID,n.id,n.role,n.finish,n.time?.completed),!1;let i=[...o];i[c]=r,e.message[n.sessionID]=i}else e.message[n.sessionID]=[...o,n];return!0}case`message.removed`:{let n=t.properties,r=e.message[n.sessionID];if(r){let t=b(r,n.messageID);if(t>=0){let i=[...r];i.splice(t,1),e.message[n.sessionID]=i}}return delete e.part[n.messageID],!0}case`message.part.updated`:{let n=t.properties,r=n.part;if(Et.has(r.type))return je.reducer.partSkipped(r.messageID,r.id,r.type),!1;let i=r.messageID,a=n.sessionID??r.sessionID;if(!i)return!1;let o=!Ut(e,a,i),s=e.part[i];if(!s)return je.reducer.partUpdatedNoExistingParts(i,r.id,r.type),e.part[i]=[r],!o||{changed:!0,materialization:{type:`incomplete-session-snapshot`,reason:`missing-owning-message`,sessionID:a,messageID:i,partID:r.id}};let c=[...s],l=c.findIndex(e=>e.id===r.id);if(l>=0){let e=c[l];if(Nt(e,r))return!1;let t=At(e,r);c[l]=t.length>0?{...r,__dedupeNextDeltaFields:t}:r}else{let e=r.type===`text`||r.type===`file`?c.findIndex(e=>e.type===r.type&&e.__openchamberOptimistic===!0):-1;e>=0?c[e]=r:c.push(r)}return e.part[i]=c,!o||{changed:!0,materialization:{type:`incomplete-session-snapshot`,reason:`missing-owning-message`,sessionID:a,messageID:i,partID:r.id}}}case`message.part.removed`:{let n=t.properties,r=e.part[n.messageID];if(!r)return!1;let i=r.findIndex(e=>e.id===n.partID);if(i>=0){let t=[...r];return t.splice(i,1),t.length===0?delete e.part[n.messageID]:e.part[n.messageID]=t,!0}return!1}case`message.part.delta`:{let n=t.properties,r=e.part[n.messageID];if(!r)return je.reducer.partDeltaNoParts(n.messageID,n.partID),{changed:!1,materialization:{type:`incomplete-session-snapshot`,reason:`orphan-delta`,sessionID:n.sessionID,messageID:n.messageID,partID:n.partID}};let i=r.findIndex(e=>e.id===n.partID);if(i<0)return je.reducer.partDeltaNotFound(n.messageID,n.partID),{changed:!1,materialization:{type:`incomplete-session-snapshot`,reason:`missing-delta-part`,sessionID:n.sessionID,messageID:n.messageID,partID:n.partID}};let a=r[i],o=a[n.field],s=a.__dedupeNextDeltaFields??[],c=s.includes(n.field),l=[...r];return l[i]={...a,[n.field]:c?kt(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 Gt(e,t,n){return`${e}:${t}:${n}`}function Kt(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 qt(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),!Bt(n.agent)&&r?.agent&&(c.agent=r.agent,s=!0),!Bt(n.modelID)&&r?.modelID&&(c.modelID=r.modelID,s=!0),!Bt(n.providerID)&&r?.providerID&&(c.providerID=r.providerID,s=!0),!Bt(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:Kt(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 Jt(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 Yt(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 Xt(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=Vt(o,r);if(Ht(o,s)&&o.time?.created===s.time?.created)return!1;let c=[...i];return c[a]=s,e.message[t]=c,!0}function Zt(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 Qt(e,t,n,r,i){let a=D(i);if(t===`session.step.started`)return qt(e,n,r,{created:a,...Jt(i)});if(t===`session.step.streamed`)return a?(qt(e,n,r,{created:a}),Xt(e,n,r,{id:r,sessionID:n,role:`assistant`,time:{created:Zt(e,n,r)??a,streamed:a}})):!1;if(t===`session.step.ended`){qt(e,n,r,{created:a});let t=E(i.finish),o=Yt(i.tokens),s=typeof i.cost==`number`&&Number.isFinite(i.cost)?i.cost:void 0;return Xt(e,n,r,{id:r,sessionID:n,role:`assistant`,time:{created:Zt(e,n,r)??Kt({created:a}),...a?{completed:a}:{}},...t?{finish:t}:{},...o?{tokens:o}:{},...s===void 0?{}:{cost:s}})}if(t===`session.step.failed`){qt(e,n,r,{created:a});let t=T(i.error),o=Yt(i.tokens),s=typeof i.cost==`number`&&Number.isFinite(i.cost)?i.cost:void 0;return Xt(e,n,r,{id:r,sessionID:n,role:`assistant`,time:{created:Zt(e,n,r)??Kt({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 $t(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 en(e,t,n,r){let i=Gt(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 tn(e,t,n,r,i,a,o){qt(e,t,n,o);let s=e.part[n]?[...e.part[n]]:[],c=en(s,r,n,i);if(c<0){let e={id:Gt(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 nn(e,t){return e.findIndex(e=>e.id===t||e.callID===t||e.type===`tool`&&e.id===t)}function O(e,t,n,r,i,a,o){qt(e,t,n,o);let s=e.part[n]?[...e.part[n]]:[],c=nn(s,r);return c<0&&(s.push({id:r,sessionID:t,messageID:n,type:`tool`,tool:Ge(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 Tt(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`?Ue(t.id):void 0);if(!u||n===`session.shell.started`&&l)return!1;let d=Ze(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&&Pt(l,d.info)&&Pt(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=Ue(t.id);if(!n)return!1;let a=Ze(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&&Pt(s,a.info)&&Pt(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 Qt(e,n,i,a,r);if(n===`session.text.started`)return tn(e,i,a,`text`,o,``,s);if(n===`session.text.delta`){let t=typeof r.delta==`string`?r.delta:``;return t?tn(e,i,a,`text`,o,e=>e+t,s):!1}if(n===`session.text.ended`)return tn(e,i,a,`text`,o,typeof r.text==`string`?r.text:``,s);if(n===`session.reasoning.started`)return tn(e,i,a,`reasoning`,o,``,s);if(n===`session.reasoning.delta`){let t=typeof r.delta==`string`?r.delta:``;return t?tn(e,i,a,`reasoning`,o,e=>e+t,s):!1}if(n===`session.reasoning.ended`)return tn(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 O(e,i,a,c,l,e=>e,s);if(n===`session.tool.input.delta`){let t=typeof r.delta==`string`?r.delta:``;return t?O(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 O(e,i,a,c,l,e=>{let n=T(e.state)??{};return{...e,state:{...n,input:t}}},s)}return n===`session.tool.called`?O(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`?O(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`?O(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:$t(r.content),metadata:T(r.metadata)??T(t.metadata)??{},...n===void 0?{}:{time:{...T(t.time),end:n}}}}},s):n===`session.tool.failed`&&O(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:$t(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 k(e){return e.slim===!0}function cn(e,t){if(!e||e.length===0||!t.some(e=>k(e)))return t;let n=new Map;for(let t of e){let e=sn(t);e&&!k(t)&&n.set(e,t)}if(n.size===0)return t;let r=!1,i=t.map(e=>{if(!k(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 A=e=>Object.freeze(e),pn=Object.freeze({initial:A({id:`initial`,onStale:`backfill`,messages:`insert-only`,parts:`replace`,preserveStreaming:`assistant`,protectOptimistic:`none`}),prepend:A({id:`history`,onStale:`drop`,messages:`insert-only`,parts:`skip-existing`,preserveStreaming:`assistant`,protectOptimistic:`none`}),recovery:A({id:`recovery`,onStale:`backfill`,messages:`upsert`,parts:`replace`,preserveStreaming:`assistant`,protectOptimistic:`none`}),"reconcile-page":A({id:`reconcile-page`,onStale:`backfill`,messages:`upsert`,parts:`replace`,preserveStreaming:`assistant`,protectOptimistic:`keep-unless-full`}),materialize:A({id:`materialize`,onStale:`backfill`,messages:`insert-only`,parts:`replace`,preserveStreaming:`assistant`,protectOptimistic:`none`})}),mn=A({id:`recovery-backfill`,onStale:`backfill`,messages:`insert-only`,parts:`skip-existing`,preserveStreaming:`assistant`,protectOptimistic:`none`}),hn=A({id:`send-gap-fill`,onStale:`backfill`,messages:`insert-only`,parts:`skip-existing`,preserveStreaming:`assistant`,protectOptimistic:`none`}),gn=pn.initial;function _n(e){let t=pn[e.purpose]??gn;return!e.stale||t.onStale===`drop`?t:mn}function vn(e,t){return e.preserveStreaming===`none`?!1:e.preserveStreaming===`all`||t===`assistant`}var yn=e=>structuredClone(e),bn=e=>({transport:e.transport,generation:e.generation,directory:e.directory,sessionID:e.sessionID});function xn(e){return JSON.stringify([e.transport,e.generation,e.directory,e.sessionID])}function Sn(e,t){return JSON.stringify([e.transport,e.generation,e.directory,e.sessionID,t])}function Cn(e){return JSON.stringify([e.transport,e.generation])}function wn(e,t){return e.created===t.created?e.messageID<t.messageID?-1:+(e.messageID>t.messageID):e.created-t.created}function Tn(e){let t=e.time?.created;return{created:typeof t==`number`&&Number.isFinite(t)?t:0,messageID:e.id}}function En(e){return dn(e)}function Dn(e){return k(e)?`slim`:`full`}function On(e){return e.some(e=>k(e))?`slim`:`full`}var kn=e=>{if(typeof e!=`object`||!e)return e;if(Array.isArray(e))return e.map(kn);let t=e,n={};for(let e of Object.keys(t).sort()){let r=t[e];r!==void 0&&(n[e]=kn(r))}return n},An=e=>{let t=new Uint8Array(e),n=``;for(let e of t)n+=e.toString(16).padStart(2,`0`);return n};async function jn(e,t){let n=JSON.stringify(kn({info:e,parts:t})),r=new TextEncoder().encode(n);return{hash:An(await crypto.subtle.digest(`SHA-256`,r)),byteSize:r.byteLength}}var Mn=e=>({scope:bn(e.scope),messageID:e.messageID,info:yn(e.info),parts:yn(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}}),Nn=e=>{let t=0;return()=>{let n=e();return t=n>t?n:t+1,t}},Pn=(e,t)=>{let n=t.slice().sort((e,t)=>wn(e.sortKey,t.sortKey)).map(Mn);return{scope:bn(e),records:n,byteSize:n.reduce((e,t)=>e+t.byteSize,0)}},Fn=e=>yn(e),In=e=>bn(e),Ln=(e=Date.now)=>Nn(e),Rn=e=>Mn(e),zn=(e,t)=>Pn(e,t.slice());function Bn(e){return En(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 Vn=[`text`,`output`],Hn={pending:1,started:2,running:3,completed:4,error:4};function Un(e,t){return e.filter(e=>!!e?.id&&!t.has(e.type))}function Wn(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 Gn(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 Kn(e,t){let n=e[t];return typeof n==`string`?n:void 0}function qn(e){return Gn(e)===void 0&&Vn.some(t=>{let n=Kn(e,t);return typeof n==`string`&&n.length>0})}function Jn(e){let t=e.state;if(!(!t||typeof t!=`object`))return t}function Yn(e){let t=Jn(e)?.status;return typeof t==`string`?t:void 0}function Xn(e){return e?Hn[e]??0:0}function Zn(e,t){if(qn(e))return!0;if(Gn(e)===void 0){if(e.type===`tool`){let n=Yn(e);return n===`completed`||n===`error`?t:!0}return!0}return t}function Qn(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 $n(e){return!!e&&typeof e==`object`&&!Array.isArray(e)&&Object.keys(e).length>0}function er(e,t,n){if(e.type!==`tool`||t.type!==`tool`)return n;let r=Jn(e);if(!r)return n;let i=Jn(n)??{},a=Jn(t)??{},o={...i},s=!1,c=Yn(e),l=Yn(t);Xn(c)>Xn(l)&&c&&(o={...o,status:c},s=!0);let u=r.input,d=a.input;$n(u)&&!$n(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 $n(m)&&!$n(a.metadata)&&(o={...o,metadata:m},s=!0),s?n===t?{...t,state:o}:{...n,state:o}:n}function tr(e,t){if(!e||Gn(t)!==void 0)return t;let n=t;for(let r of Vn){let i=Kn(e,r);if(!i)continue;let a=Kn(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=Qn(e);if(r){let e=Qn(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=er(e,t,n),n}function nr(e,t){if(!e||e.length===0||!t.some(e=>k(e)))return t;let n=new Map;for(let t of e)t.id&&!k(t)&&n.set(t.id,t);if(n.size===0)return t;let r=!1,i=t.map(e=>{if(!k(e)||!e.id)return e;let t=n.get(e.id);return t?(r=!0,t):e});return r?i:t}function rr(e){return e.__openchamberOptimistic===!0}function ir(e){return!!(e&&e.length>0&&e.some(rr))}function ar(e){return e.length===0||e.some(e=>k(e))}function or(e,t,n,r,i,a){if(a===`keep-unless-full`&&e&&ir(e)&&ar(t))return e;let o=nr(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=tr(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=>k(e)),f=e.filter(e=>!!e?.id&&!u.has(e.id)&&!n.has(e.type)&&(Zn(e,i)||d&&!k(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 sr=e=>e,cr=e=>{let t=sr(e).finish;return typeof t==`string`&&t.length>0},lr=e=>typeof sr(e).time?.completed==`number`,ur=e=>!!sr(e).error;function dr(e,t){let n=sr(t),r=n.finish,i=n.time?.completed,a=n.time?.streamed,o=n.error,s=e.tokens,c=t.tokens,l=!cr(e)&&typeof r==`string`&&r.length>0,u=!lr(e)&&typeof i==`number`,d=e.time.streamed===void 0&&typeof a==`number`&&Number.isFinite(a),f=!ur(e)&&!!o,p=!Rt(s)&&Rt(c);if(!l&&!u&&!d&&!f&&!p)return e;let m={...e};return l&&(m.finish=r),(u||d)&&(m.time={...sr(e).time,...u?{completed:i}:{},...d?{streamed:a}:{}}),f&&(m.error=o),p&&(m.tokens=c),m}function fr(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`?pr(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=Me(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 pr(e,t){let n=e.slice();for(let e of t){let t=Tn(e),r=n.length;for(let e=0;e<n.length;e+=1)if(wn(t,Tn(n[e]))<0){r=e;break}n.splice(r,0,e)}return n}function mr(e,t,n){return fr(e,t,(e,t)=>t?dr(e,t):e,n)}function hr(e,t,n){return fr(e,t,(e,t)=>!t||JSON.stringify(e)===JSON.stringify(t)?e:Vt(e,t),n)}function gr(e,t,n,r={}){let i=r.skipPartTypes??new Set,a=r.merge??gn,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`?hr(u,c,o):mr(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=or(r,Un(e.parts??[],i),i,vn(a,e.info.role),on(e.info),a.protectOptimistic);(r?Wn(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 _r(e){if(typeof e.time?.completed==`number`)return!1;let t=e.finish;return!(typeof t==`string`&&t.length>0)}function vr(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&&_r(i)||r.push(i.id));return{hasMessages:!0,renderable:r.length===0,missingPartMessageIDs:r}}var yr=(e,t)=>e<t?-1:+(e>t);function br(e){return e.filter(e=>!!e?.id)}function xr(e,t){if(t.length===0)return{...e,confirmed:[]};let n=[...e.session],r=new Map(e.part.map(e=>[e.id,br(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,br(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,br(e.parts))}return{cursor:e.cursor,complete:e.complete,session:n,part:[...r.entries()].sort((e,t)=>yr(e[0],t[0])).map(([e,t])=>({id:e,part:t})),confirmed:i}}var Sr={kind:`unknown`,loadedTurns:0},Cr=3e4,wr=12e5,Tr={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},Er={ready:!1,path:{state:``,config:``,worktree:``,directory:``,home:``},projects:[],providers:{all:[],connected:[],default:{}},providerAuth:{},config:{},reload:void 0,sessionTodo:{}};function Dr(e,t){return e===void 0||t===void 0?!1:t>e}var Or=class extends Error{};function kr(e,t,n){if(n===`reconcile-page`)return e??Sr;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 Or(`session message page: complete=false requires non-empty cursor`);if(n===`prepend`&&e?.kind===`has-more`&&e.cursor===o)throw new Or(`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 Or(`session message page: complete=false with zero records makes no progress`);return{kind:`has-more`,cursor:o,loadedTurns:a}}function Ar(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 jr(e,t,n,r){let i=Dr(r.capturedRevision,r.liveRevision),a=_n({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=xr({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=gr(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=kr(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 Or))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=!Ar(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 Mr=new Set([`tool`,`reasoning`,`file`,`text`]),Nr=new Set([`tool`,`reasoning`,`file`]);function Pr(e){return e.some(e=>k(e)&&Mr.has(e.type))}function Fr(e,t){let n=!1,r=!1;for(let t of e)Nr.has(t.type)&&(n=!0,k(t)&&(r=!0));return n?r?!0:t?on(t):!1:!1}var Ir=e=>{if(!e)return``;let t=e.clientRole??e.role;return typeof t==`string`?t:``};function Lr(e,t){return He(e,t)}function Rr(e){let t=0;for(let n of e.messageOrder)Lr(e.messagesByID[n],e.partsByMessageID[n])&&(t+=1);return t}var zr=(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(Lr(a,e.partsByMessageID[n]))break;if(Ir(a)!==`assistant`)continue;let o=a.parentID;typeof o==`string`&&o.length>0&&o!==t||r.push(a)}return r},Br=(e,t)=>on(e)?!0:Array.isArray(t)&&t.length>0;function Vr(e){let t;for(let n=e.messageOrder.length-1;n>=0;--n){let r=e.messageOrder[n];if(Lr(e.messagesByID[r],e.partsByMessageID[r])){t=r;break}}return t?zr(e,t).some(t=>Br(t,e.partsByMessageID[t.id])):!1}function Hr(e){return e.materializeActive?`p2`:e.prependActive||e.earlierHistoryLoaded?`p1`:e.p0Satisfied?`p0`:`idle`}var Ur=new Set([`stop`,`length`]);function Wr(e){let t=e.messageOrder[e.messageOrder.length-1];if(!t)return!1;let n=e.messagesByID[t];if(!n||Ir(n)!==`assistant`||n.error)return!1;let r=n.finish;return typeof r!=`string`||!Ur.has(r)?!1:typeof n.time?.completed!=`number`||r===`stop`&&!Rt(n.tokens)}function Gr(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 Kr(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 qr=`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 Jr(e){return qr.includes(e)}function j(e){return e.trim()}function Yr(e){return`${j(e.directory)}\n${e.sessionID}`}function Xr(e,t){return e.session_history_boundary?.[t]??Sr}function Zr(e){return e.filter(e=>!!e?.id)}function Qr(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 $r(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||!Qr(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 ei(e,t,n){let r=e.getState(),i=n.page,a=jr(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?($r(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 ti(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(!Jr(e.type))continue;i=!0;let t=Wt(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 ni(e,t){return ti(e,[t.event])}function ri(e,t){return ti(e,t.events)}function ii(e,t,n){if(n.records.length===0)return{applied:!1,changed:!1};let r=e.getState(),i=gr({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 ai(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 oi(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]=Zr(n.parts),e.setState({message:o,part:s}),{applied:!0,changed:!0}}function si(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 ci(e,t,n,r){return n.clearOptimisticShadow?.({directory:r,sessionID:e,messageID:t}),{applied:!0,changed:!1}}function li(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 ui(e,t,n){let r=li(e,t);if(!n.page)return{applied:!0,changed:r};let i=ei(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 di(e){let t=new Map,n=new Map,r=r=>{let i=Yr(r);if(n.has(i))return;let a=j(r.directory),o=e.getStore(a),s=r.sessionID,c=o.getState().message?.[s],l=Xr(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=Xr(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=Qr(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=j(t.directory),r=e.getStore(n).getState(),i=t.sessionID,a=r.message?.[i]??[],o=e.getLiveRevision?.(n,i)??0;return Kr({sessionID:i,messages:a,parts:r.part??{},boundary:Xr(r,i),liveRevision:o})},getPagination(t){let n=j(t.directory),r=e.getStore(n).getState();return Gr(t.sessionID,Xr(r,t.sessionID))},getRequestState(t){let n=j(t.directory);return e.getRequestState?.(n,t.sessionID)??{sessionID:t.sessionID,status:`idle`}},getHydrationState(e){let t=a.getTranscript(e),n=Vr(t);return{sessionID:e.sessionID,p0Satisfied:n,phase:Hr({p0Satisfied:n,earlierHistoryLoaded:Rr(t)>1})}},getMessage(e,t){return a.getTranscript(e).messagesByID[t]},getParts(t,n){let r=j(t.directory);return e.getStore(r).getState().part?.[n]??[]},hasSession(t){let n=j(t.directory),r=e.getStore(n).getState().message;return r?Object.prototype.hasOwnProperty.call(r,t.sessionID):!1},apply(t,n){let r=j(t.directory),i=e.getStore(r),a=t.sessionID;switch(n.type){case`http-page`:return ei(i,a,n);case`sse-event`:return ni(i,n);case`sse-event-batch`:return ri(i,n);case`optimistic-add`:return oi(i,a,n,e,r);case`optimistic-confirm`:return ci(a,n.messageID,e,r);case`optimistic-remove`:return si(i,a,n.messageID,e,r);case`reset`:return ui(i,a,n);case`materialize-snapshots`:return ii(i,a,n);case`remove-message`:return ai(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=Yr(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 fi=new Set,pi=new Set;function mi(e,t){return`${e}\n${t}`}function hi(){for(let e of pi)e()}function gi(e,t){!e||!t||(fi.add(mi(e,t)),hi())}function _i(e,t){!e||!t||fi.delete(mi(e,t))&&hi()}function vi(e,t){if(!e)return!1;if(t)return fi.has(mi(t,e));let n=`\n${e}`;for(let e of fi)if(e.endsWith(n))return!0;return!1}function yi(e){return pi.add(e),()=>{pi.delete(e)}}var bi=[],xi=new Map,Si=new Map,Ci=0,wi=()=>{let e=bi.findIndex(e=>e.priority===`user`);if(e>=0){let[t]=bi.splice(e,1);return t}return bi.shift()},Ti=()=>{for(;Ci<4;){let e=wi();if(!e)return;xi.delete(e.key),Ci+=1,Promise.resolve().then(()=>e.run()).then(t=>{e.resolve(t)},t=>{e.reject(t)}).finally(()=>{--Ci,Si.delete(e.key),Ti()})}};function Ei(e,t,n){let r=n?.priority??`background`,i=Si.get(e);if(i){let t=xi.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 bi.push(c),xi.set(e,c),Si.set(e,s),Ti(),s}var Di=null,Oi=0,ki=new Set;function Ai(){Oi+=1;for(let e of ki)e()}function ji(e){return e}function Mi(e){return ki.add(e),()=>{ki.delete(e)}}function Ni(){return Oi}function Pi(e){return Di?.repository===e?e:(Di={kind:`query`,repository:e},Ai(),e)}function Fi(){Di&&(Di=null,Ai())}function M(){return Di?.repository??null}function Ii(){let e=M();if(!e)throw Error(`TranscriptRepository is not bound — SyncProvider must mount first`);return e}function Li(e,t){let n=M();if(n)return n;let r=ji(t);return di({getStore:e=>r})}function N(e,t,n){return{directory:e.trim(),sessionID:t,...n?.transport===void 0?{}:{transport:n.transport},...n?.generation===void 0?{}:{generation:n.generation}}}function Ri(e){try{let t=M(),n=o(),r=s();return t?.getCacheBudget?.().listCanonicalScopesForSession(e,{transport:n,generation:r})?.map(e=>N(e.directory,e.sessionID,{transport:e.transport,generation:e.generation}))??[]}catch{return[]}}function zi(e,t){let n=M();return n?n.apply(e,t):null}async function Bi(e,t,n){let r=Ii();if(typeof r.fetchPreviousPage!=`function`)throw Error(`TranscriptRepository does not support fetchPreviousPage`);await r.fetchPreviousPage(N(e,t),n)}async function Vi(e,t){let n=Ii();if(typeof n.ensureInitial!=`function`)throw Error(`TranscriptRepository does not support ensureInitial`);await n.ensureInitial(N(e,t))}async function Hi(e,t){let n=Ii(),r=N(e,t);if(typeof n.destructiveReset==`function`){await n.destructiveReset(r);return}if(typeof n.ensureInitial!=`function`)throw Error(`TranscriptRepository does not support retryInitial`);await n.ensureInitial(r)}async function Ui(e,t,n){let r=Ii();if(typeof r.refreshFromAuthority!=`function`)throw Error(`TranscriptRepository does not support refreshFromAuthority`);if(n?.background){await r.refreshFromAuthority(N(e,t));return}gi(e,t);try{await r.refreshFromAuthority(N(e,t))}finally{_i(e,t)}}async function Wi(e,t,n,r){let i=Ii();if(typeof i.materializeMessage!=`function`)throw Error(`TranscriptRepository does not support materializeMessage`);let a=N(e,t);await Ei(`${e}\n${t}\n${n}`,()=>i.materializeMessage(a,n),{priority:r?.priority??`background`})}function Gi(e,t,n){let r=M();return!r||typeof r.getMessageMaterializationState!=`function`?{sessionID:t,messageID:n,status:`idle`}:r.getMessageMaterializationState(N(e,t),n)}function Ki(e,t){M()?.purgeSession?.(N(e,t))}var P=null;function qi(e){P&&P!==e&&P.cancelAll(`reregister`),P=e}function Ji(e){P?.captureCheckpoints(e)}function Yi(e){P?.onCompensation(e)}async function Xi(e){return P?P.ensureOnObserve(e):null}function Zi(e){P?.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:Sr,liveRevision:0};Gr(``,Sr);var ca={sessionID:``,phase:`idle`,p0Satisfied:!1};function F(e,t){return Li(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(N(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=F(t,n).getTranscript(N(t,e)),i=o.current(r);return(c.current===void 0||!s.current(c.current,i))&&(c.current=i),c.current},[t,l,e,n]),d=(0,y.useCallback)(r=>{if(!e||!l)return()=>void 0;da(t,e);let i=F(t,n).subscribe(N(t,e),()=>{r()}),a=Mi(()=>{i(),c.current=void 0,fa(t,e),da(t,e),i=F(t,n).subscribe(N(t,e),()=>{r()}),r()});return()=>{a(),i()}},[t,l,e,n]);return y.useSyncExternalStore(d,u,u)}function 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?vr({messages:aa,parts:e.partsByMessageID}):{hasMessages:!1,renderable:!1,missingPartMessageIDs:[]}:vr({messages:ha(e),parts:e.partsByMessageID})}function _a(e,t,n,r){let i=(0,Ce.c)(4),a;return i[0]!==t||i[1]!==e||i[2]!==n?(a=r=>{if(!e)return{hasMessages:!1,renderable:!1,missingPartMessageIDs:[]};let i=F(t,n).hasSession?.(N(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,Ce.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=M();if(o){i.push(o.subscribe(N(a.directory,a.sessionID),t));continue}let s=n?.(a.directory);if(!s)continue;let c=Li(a.directory,s);i.push(c.subscribe(N(a.directory,a.sessionID),t))}},s=()=>{a(),o(),t()};o();let c=Mi(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,Ce.c)(8),i=(0,y.useRef)(!1),a;r[0]!==t||r[1]!==e||r[2]!==n?(a=()=>{if(!e)return i.current=!1,!1;let r=F(t,n),a=r.hasSession?.(N(t,e))??r.getTranscript(N(t,e)).messageOrder.length>0;return i.current=a,i.current},r[0]=t,r[1]=e,r[2]=n,r[3]=a):a=r[3];let o=a,s;r[4]!==t||r[5]!==e||r[6]!==n?(s=r=>e?F(t,n).subscribe(N(t,e),()=>{r()}):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,Ce.c)(10),a=(0,y.useRef)(void 0),o;i[0]!==t||i[1]!==e||i[2]!==r||i[3]!==n?(o=()=>{if(!e)return a.current=oa,oa;let i=F(t,n),o=r||e,s=i.getParts(N(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=F(t,n);return r?a.subscribe(N(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,Ce.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=F(t,n).getHydrationState?.(N(t,e))??{sessionID:e,phase:`idle`,p0Satisfied:!1},a=i.current;return a.sessionID===r.sessionID&&a.phase===r.phase&&a.p0Satisfied===r.p0Satisfied?a:(i.current=r,r)},r[0]=t,r[1]=e,r[2]=n,r[3]=a):a=r[3];let o=a,s;r[4]!==t||r[5]!==e||r[6]!==n?(s=r=>{if(!e)return La;da(t,e);let a=F(t,n).subscribe(N(t,e),()=>{r()}),o=Mi(()=>{a(),i.current=ca,fa(t,e),da(t,e),a=F(t,n).subscribe(N(t,e),()=>{r()}),r()});return()=>{o(),a()}},r[4]=t,r[5]=e,r[6]=n,r[7]=s):s=r[7];let c=s;return y.useSyncExternalStore(c,o,o)}function La(){}function Ra(e,t,n){let r=(0,Ce.c)(2),i;return r[0]===e?i=r[1]:(i=t=>Gr(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=M();if(r){let n=r.getTranscript(N(e,t));return n.messageOrder.map(e=>n.messagesByID[e]).filter(e=>!!e)}if(!n)return[];let i=Li(e,n).getTranscript(N(e,t));return i.messageOrder.map(e=>i.messagesByID[e]).filter(e=>!!e)}var I=null,Va=``,Ha=null,Ua=new Set,Wa=null,Ga=new Map,Ka=new Map;function qa(e,t,n,r){I=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(!I)throw Error(`ChildStoreManager not initialized — is SyncProvider mounted?`);return I}function Xa(e){let t=I;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=I;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=M();if(I){for(let[i,a]of I.children)if(a.getState().session.some(t=>t.id===e)&&(n??Li(i,a)).hasSession?.(N(i,e))){if(i===t)return i;r.push(i)}}if(r.length===0&&n){let i=n.getCacheBudget?.().listCanonical();if(i){for(let n of i)if(n.scope.sessionID===e){if(n.scope.directory===t)return n.scope.directory;r.push(n.scope.directory)}}}}catch{}let i=[...new Set(r)];return i.length===1?i[0]:void 0}function io(e,t){if(!e)return[];try{let n=M(),r=t??Va;if(n){let t=n.getTranscript(N(r,e));return t.messageOrder.map(e=>t.messagesByID[e]).filter(e=>!!e)}if(I){let t=I.getChild(r);if(t){let n=Li(r,t).getTranscript(N(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=M(),r=t??Va;if(n)return[...n.getParts(N(r,e),e)];if(I){let t=I.getChild(r);if(t)return[...Li(r,t).getParts(N(r,e),e)]}}catch{}return[]}function oo(e,t){return Xa(t)?.session_status[e]}var L=e=>{if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0},so=`default`;function co(e){let t=L(e);if(t&&t!==so)return t}function lo(e){let t=e?.model;return L(t?.id)??L(t?.modelID)}function uo(e){let t=e?.model;return L(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=L(n.providerID),i=L(n.modelID);if(!r||!i)return{agent:L(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=L(n.agent),p=L(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=g(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=>re(e)).join(` `),Vo=(e,t,n)=>{if(t===n)return[];let r=[];for(let i of e){let e=[re(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(re(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(re(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=>g(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,ss=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}},cs=`file://`,ls=e=>{let t=e.trim();if(t.toLowerCase().startsWith(cs))return t;let n=me(t).split(`/`).map(e=>/^[A-Za-z]:$/.test(e)?e:encodeURIComponent(e)).join(`/`);return/^[A-Za-z]:/.test(n)?`${cs}/${n}`:`${cs}${n}`},us=e=>{let t=e.trim();if(!t.toLowerCase().startsWith(cs))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},ds=async e=>[...new Uint8Array(await crypto.subtle.digest(`SHA-256`,await e.arrayBuffer()))].map(e=>e.toString(16).padStart(2,`0`)).join(``),fs=e=>typeof e==`object`&&!!e&&!Array.isArray(e),ps=async e=>{let t;try{t=await e.json()}catch{throw new ss(e.status,`unavailable`)}if(!fs(t)||typeof t.path!=`string`||!t.path)throw new ss(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:ls(t.path),mime:n,size:r,sha256:i}},ms=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}`},hs=(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}},gs=e=>e.startsWith(`data:`)||e.startsWith(`blob:`),_s=async e=>{let t=e.mime||e.body.type||`application/octet-stream`,n=e.body.type===t?e.body:new Blob([e.body],{type:t});if(!Number.isSafeInteger(n.size)||n.size<0)throw new ss(413,`too-large`);let r=await ds(n),i=ms(e.filename),a;try{a=await u(`/api/fs/prompt-attachments/${encodeURIComponent(i)}?storage=temporary`,{method:`PUT`,headers:{"Content-Type":t,"Content-Length":String(n.size),"X-OpenChamber-Content-Length":String(n.size),"X-OpenChamber-Sha256":r,"X-OpenChamber-Mime":t,...e.filename?{"X-OpenChamber-Filename":encodeURIComponent(e.filename)}:{}},body:n,signal:e.signal})}catch{throw new ss(0,`unavailable`)}if(a.status===413)throw new ss(413,`too-large`);if(!a.ok)throw new ss(a.status,a.status>=500||a.status===0?`unavailable`:`rejected`);let o=await ps(a);if(o.size!==n.size)throw new ss(a.status,`unavailable`);return{...o,mime:t}},vs=500,ys=()=>{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}},bs=()=>ys(),R=(e,t)=>{if(!ys())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>vs&&window.__OPENCHAMBER_STARTUP_TRACE__.splice(0,window.__OPENCHAMBER_STARTUP_TRACE__.length-vs)};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 xs=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}},Ss=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}),Cs=[],ws=[],z=new Map,Ts=512,Es=0;function Ds(){return Es}function B(){return{transportIdentity:o(),generation:s()}}function Os(e){return o()===e.transportIdentity&&s()===e.generation}function ks(e,t,n){return`${n?.transportIdentity??o()}\0${n?.generation??s()}\0${e}\0${t}`}function As(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>Ts;){let e=z.keys().next().value;if(e===void 0)break;z.delete(e)}}function js(e,t,n,r){let i=r??B();As(i),Es+=1,z.set(ks(e,t,i),{kind:n,mark:Es})}function Ms(e,t,n){let r=n?.scope;As(r??B());let i=z.get(ks(e,t,r));if(!i)return!0;let a=n?.startedMark;return a!==void 0&&i.mark>a?!1:(z.delete(ks(e,t,r)),!0)}function Ns(e,t,n){return As(n??B()),z.get(ks(e,t,n))?.kind??null}var Ps=(e,t,n)=>{let r={...e};return n.length===0?delete r[t]:r[t]=n,r},V=oe((e,t)=>({bySession:{},remember(t){return!Ns(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&&js(t,n,r),e(e=>{let r=e.bySession[t];if(!r?.length)return e;let i=r.filter(e=>e.id!==n);return i.length===r.length?e:{bySession:Ps(e.bySession,t,i)}})},forgetSession(t){e(e=>{if(!e.bySession[t])return e;let n={...e.bySession};return delete n[t],{bySession:n}})},forgetPromoted(t,n){let r=new Set(n);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)js(t,e,`consumed`);return{bySession:Ps(e.bySession,t,n.filter(e=>!i.has(e.id)))}})},replaceFromAuthority(t,n,r){let i=r?.startedMark,a=[];for(let e of n)Ms(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:Ps(e.bySession,t,o)}})},updateDelivery(t,n,r){e(e=>{if(Ns(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]??Cs}}));function Fs(e){return V.getState().remember(e)}function Is(e,t){return Ms(e.sessionID,e.id,t)?V.getState().remember(e):!1}function Ls(e,t,n){V.getState().forget(e,t,n)}function Rs(e,t){V.getState().forgetPromoted(e,t)}function zs(e,t,n){V.getState().replaceFromAuthority(e,t,n)}function Bs(e,t,n){V.getState().updateDelivery(e,t,n)}function Vs(e){return!!e&&typeof e==`object`&&e.kind===`session-inbox`}var Hs=e=>e?e.toLowerCase().includes(`application/json`):!1,Us=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 Ws(e){return typeof e==`number`&&Number.isFinite(e)?e:void 0}function Gs(e,t,n){let r=n?`: ${n}`:``,i=Error(`${e} (${t})${r}`);throw i.status=t,i}async function Ks(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 qs(e){return e?{directory:e}:{}}function Js(e,t){let n=`/api/session/${encodeURIComponent(e)}/inbox`;return t?`${n}/${encodeURIComponent(t)}`:n}async function Ys(e,t){let n=e.headers.get(`content-type`);if(Us(n))throw Error(`${t}: unexpected HTML response`);let r;try{r=await e.json()}catch{throw Error(`${t}: malformed JSON`)}if(!Hs(n)&&r==null)throw Error(`${t}: empty response`);return r}function Xs(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:Ws(n.timeCreated)??Ws(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 Zs(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(Xs(e)));return r}function Qs(e){return{runtimeKey:c(),generation:s(),directory:e,overlay:B()}}function W(e){return c()===e.runtimeKey&&s()===e.generation&&Os(e.overlay)}function $s(e){let t=Error(`${e}: runtime switched`);throw t.name=`RuntimeGenerationMismatchError`,t}async function ec(e){let t=e.commit??Qs(e.directory);W(t)||$s(`session prompt`);let n=`/api/session/${encodeURIComponent(e.sessionID)}/prompt`,r={id:e.messageID,text:e.text,delivery:e.delivery===`queue`?`queue`:`steer`};e.files?.length&&(r.files=e.files),e.agents?.length&&(r.agents=e.agents),e.skills?.length&&(r.skills=e.skills),e.metadata&&(r.metadata=e.metadata);let i=await u(n,{method:`POST`,headers:{"Content-Type":`application/json`},query:{directory:t.directory},body:JSON.stringify(r),signal:e.signal});if(W(t)||$s(`session prompt`),!i.ok){let e=await Ks(i);Gs(`Failed to send message`,i.status,e)}let a=Xs(await Ys(i,`session prompt`));return W(t)||$s(`session prompt`),Fs(a),a}function tc(e){let t=e?.status;return typeof t!=`number`||!Number.isFinite(t)||t===408||t===429?!1:t>=400&&t<500}async function nc(e){let t=e.inputID.trim();if(!t)return{status:`unknown`};let n=e.commit??Qs(e.directory??``);if(!W(n))return{status:`unknown`};try{let r=await ic({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 Is(i,{startedMark:r.startedMark})?{status:`pending`,item:i}:{status:`unknown`}}catch{}if(!W(n))return{status:`unknown`};try{let r=await $e({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 Ls(e.sessionID,t,`consumed`),{status:`promoted`,id:t}}catch{}return{status:`unknown`}}function rc(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 Is(Xs(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 Ls(r,i,`cancelled`),!0;if(t===`session.inbox.delivered`)return Ls(r,i,`consumed`),!0;if(t===`session.inbox.delivery.changed`){let e=n.delivery===`queue`?`queue`:n.delivery===`steer`?`steer`:null;return e?(Bs(r,i,e),!0):!1}return!1}async function ic(e){let t=B(),n=Ds(),r=ft(e.sessionID),i={method:`GET`,query:qs(e.directory),signal:e.signal},a=await u(`/api/sessions/${encodeURIComponent(e.sessionID)}/delivery`,i);(a.status===404||a.status===501||Us(a.headers.get(`content-type`)))&&(a=await u(Js(e.sessionID),i)),a.ok||Gs(`session inbox`,a.status,await Ks(a));let o=await Ys(a,`session inbox`),s=Zs(o),c=Os(t);return c&&ft(e.sessionID)===r&&(H(o)&&typeof o.compactionRunning==`boolean`?w(e.sessionID,o.compactionRunning):vt(e.sessionID,_t(o))),{items:s,startedMark:n,scope:t,current:c}}async function ac(e){let t=B(),n=await u(Js(e.sessionID,e.inboxID),{method:`PATCH`,headers:{"Content-Type":`application/json`},query:qs(e.directory),body:JSON.stringify({delivery:e.delivery}),signal:e.signal});n.ok||Gs(e.delivery===`steer`?`session inbox steer`:`session inbox queue`,n.status,await Ks(n)),Os(t)&&(Ns(e.sessionID,e.inboxID)||Bs(e.sessionID,e.inboxID,e.delivery))}async function oc(e){await ac({...e,delivery:`steer`})}async function sc(e){await ac({...e,delivery:`queue`})}async function cc(e){let t=await u(Js(e.sessionID,e.inboxID),{method:`DELETE`,query:qs(e.directory),signal:e.signal});t.ok||Gs(`session inbox cancel`,t.status,await Ks(t))}function lc(e,t,n){zs(e,t,n)}async function uc(e){let t=B();if(await cc(e),!Os(t))return{overlay:V.getState().list(e.sessionID),transcriptRows:[]};Ls(e.sessionID,e.inboxID,`cancelled`);try{let n=await ic({sessionID:e.sessionID,directory:e.directory,signal:e.signal});if(!Os(t)||!n.current)return{overlay:V.getState().list(e.sessionID),transcriptRows:[]};lc(e.sessionID,n.items,{startedMark:n.startedMark})}catch{}return{overlay:V.getState().list(e.sessionID),transcriptRows:[]}}async function dc(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 u(t,{method:`POST`,query:n,signal:e.signal});if(!r.ok)throw Error(`Session interrupt failed (${r.status})`)}async function fc(e){return e.promotedIDs.includes(e.optimisticID)?`confirmed`:(e.removeOptimistic(e.optimisticID),await e.refreshFromAuthority(),`refreshed`)}var pc=`session-revert-busy`,mc=e=>e?e.toLowerCase().includes(`text/html`):!1;function hc(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}function gc(e){return typeof e==`string`&&e.length>0?e:void 0}function _c(e,t,n){if(t===409)throw vc();let r=n?`: ${n}`:``,i=Error(`${e} (${t})${r}`);if(i.status=t,t===404&&n)try{let e=JSON.parse(n);hc(e)&&e._tag===`MessageNotFoundError`&&(i.name=`MessageNotFoundError`)}catch{}throw i}function vc(){let e=Error(pc);return e.name=`SessionRevertBusyError`,e}function yc(e){if(!e||typeof e!=`object`)return!1;let t=e;return t.name===`SessionRevertBusyError`||t.message===`session-revert-busy`}async function bc(e){try{return(await e.text()).trim()}catch{return``}}async function xc(e,t){if(mc(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 Sc(e){return e?{directory:e}:{}}function Cc(e,t){return`/api/session/${encodeURIComponent(e)}/revert/${t}`}function wc(e){let t=hc(e)?e:null,n=t&&hc(t.data)?t.data:t;if(!n)throw Error(`session revert: expected revert payload`);let r=gc(n.messageID);if(!r)throw Error(`session revert: missing messageID`);let i=Array.isArray(n.files)?n.files.flatMap(e=>{if(!hc(e))throw Error(`session revert: invalid file diff`);let t=gc(e.file)??gc(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,...gc(n.partID)?{partID:gc(n.partID)}:{},...gc(n.snapshot)?{snapshot:gc(n.snapshot)}:{},...i?{files:i}:{}}}function Tc(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 Ec(e){let t=await u(Cc(e.sessionID,`stage`),{method:`POST`,headers:{"Content-Type":`application/json`},query:Sc(e.directory),body:JSON.stringify({messageID:e.messageID,files:e.files!==!1}),signal:e.signal});return t.ok||_c(`session revert stage`,t.status,await bc(t)),wc(await xc(t,`session revert stage`))}async function Dc(e){let t=await u(`/api/session/${encodeURIComponent(e.sessionID)}/revert`,{method:`DELETE`,query:Sc(e.directory),signal:e.signal});t.ok||_c(`session revert clear`,t.status,await bc(t))}async function Oc(e){let t=await u(Cc(e.sessionID,`commit`),{method:`POST`,query:Sc(e.directory),signal:e.signal});t.ok||_c(`session revert commit`,t.status,await bc(t))}var kc=e=>e?e.toLowerCase().includes(`text/html`):!1;function Ac(e,t,n){let r=n?`: ${n}`:``,i=Error(`${e} (${t})${r}`);throw i.status=t,i}async function jc(e){try{return(await e.text()).trim()}catch{return``}}function Mc(e){return e?{directory:e}:{}}function Nc(e,t){return`/api/session/${encodeURIComponent(e)}/permission/${encodeURIComponent(t)}/reply`}async function Pc(e){let t=await u(Nc(e.sessionID,e.requestID),{method:`POST`,headers:{"Content-Type":`application/json`},query:Mc(e.directory),body:JSON.stringify({decision:e.reply,...e.message?{message:e.message}:{}}),signal:e.signal});if(t.ok||Ac(`session permission reply`,t.status,await jc(t)),t.status!==204&&kc(t.headers.get(`content-type`)))throw Error(`session permission reply: unexpected HTML response`)}function Fc(e){let t=Error(`${e} is not available on OpenCode v2`);return t.name=`V2CapabilityUnavailableError`,t}function Ic(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 Lc(e){return e.worktree||e.canonical||``}function Rc(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 zc(e){return{id:e.id,sessionID:e.sessionID,permission:e.action,patterns:Array.isArray(e.resources)?e.resources:[],metadata:e.metadata??{},always:Array.isArray(e.save)?e.save:[],...e.source?.messageID?{tool:{messageID:e.source.messageID,callID:e.source.id??``}}:{}}}function Bc(e){return!!e&&typeof e==`object`&&!Array.isArray(e)&&e.kind===`question`}function Vc(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 Hc(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 Uc(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}:{}})):Hc(e),n=Vc(e);return{id:e.id,sessionID:e.sessionID,questions:t,...n?{tool:n}:{}}}function Wc(e,t){let n={};for(let r=0;r<t.length;r+=1){let i=t[r],a=(e[r]??[]).map(e=>i.options?.find(t=>(t.label||t.value)===e)?.value??e),o=a[0]??``;if(i.type===`multiselect`)n[i.key]=a;else if(i.type===`number`||i.type===`integer`){let e=Number(o);if(!o.trim()||!Number.isFinite(e)||i.type===`integer`&&!Number.isInteger(e))throw Error(`Invalid numeric answer for ${i.key}`);n[i.key]=e}else if(i.type===`boolean`){if(o!==`true`&&o!==`false`)throw Error(`Invalid boolean answer for ${i.key}`);n[i.key]=o===`true`}else n[i.key]=o}return n}var Gc=3,Kc=3e4,qc=32e3,Jc=36e5,Yc=6e5,Xc=new Set([429,502,503,504]),Zc=new Map;function Qc(){let e=Date.now();for(let[t,n]of Zc)n.consecutiveErrors===0&&e-n.lastErrorAt>Jc&&Zc.delete(t)}typeof setInterval<`u`&&setInterval(Qc,Yc).unref?.();function $c(e){let t=Zc.get(e);return t||(t={consecutiveErrors:0,lastErrorAt:0,circuitOpen:!1,circuitOpenAt:0,circuitCooldownMs:Kc},Zc.set(e,t)),t}function el(e){if(!e)return;let t=Zc.get(e);t&&(t.consecutiveErrors=0,t.lastErrorAt=0)}function tl(e,t){if(!e)return;let n=$c(e);n.consecutiveErrors+=1,n.lastErrorAt=Date.now(),nl(t)&&n.consecutiveErrors>=Gc&&(n.circuitOpen=!0,n.circuitOpenAt=Date.now(),console.warn(`[provider-tracker] Circuit opened for ${e} after ${n.consecutiveErrors} consecutive errors`))}function nl(e){return e!==void 0&&Xc.has(e)}function rl(e){let t=Zc.get(e);return t?.circuitOpen?Date.now()-t.circuitOpenAt>=t.circuitCooldownMs?(t.circuitOpen=!1,t.consecutiveErrors=0,t.circuitCooldownMs=Math.min(t.circuitCooldownMs*2,qc*4),!1):!0:!1}function il(e){if(!(!e||!rl(e)))throw Error(`Provider ${e} is temporarily unavailable after repeated errors. Please retry shortly.`)}var al=`/api`,ol=1e4,sl=4e3,cl=3e3,ll=1e3,ul=12e3;function dl(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 fl(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 pl(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 ml(e){let t=e.replace(/\/+$/,``);if(t.endsWith(`/api`)){let e=t.slice(0,-4);if(e.length>0)return e}return _l(yl()||`/`)}function hl(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 gl=/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//,_l=e=>{let t=typeof e==`string`&&e.trim().length>0?e.trim():`/api`;if(gl.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}},vl=()=>{try{return a().api(`/api`)}catch{return null}},yl=()=>{try{return a().api(`/`)}catch{return null}},bl=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)}},xl=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)}}},Sl=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}}},Cl=e=>Sl(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=_l(a().api(r));return u(new Request(n,e),t)}return u(r,t)}})),wl=20971520,Tl=e=>{let{referenceOnly:t,...n}=e;return El(e)&&!t?n:{type:`text`,synthetic:!0,text:as(`Attachment ${JSON.stringify(e.filename||`file`)}: ${JSON.stringify(us(e.url))}\nRead or process this file with tools as needed; its contents are not included in the message.`.replace(/</g,`\\u003c`))}},El=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),Dl=e=>{let t=[];for(let n of e){if(!El(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=us(r).trim();i&&t.push({filename:e,path:i})}return t},Ol=async(e,t)=>{let n=[],r=e.files?.length?await Promise.all(e.files.map(e=>t(e))):[],i=e.additionalParts?.length?await Promise.all(e.additionalParts.map(async e=>({text:e.text,synthetic:e.synthetic,files:e.files?.length?await Promise.all(e.files.map(e=>t(e))):[]}))):[],a=e=>qo(e,Dl([...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(Tl)),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(Tl))}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},kl=e=>e.replace(/\\/g,`/`),Al=400,jl=()=>{let e=f();return e&&e.runtime?.isDesktop&&e.files?e.files:null},q=new class{client;baseUrl;scopedClients=new Map;currentDirectory=void 0;directoryContextQueue=Promise.resolve();listDirectoryInFlight=new Map;configProvidersInFlight=new Map;listAgentsInFlight=new Map;configInFlight=new Map;configCache=new Map;configCacheGeneration=0;listDirectoryCache=new Map;healthInFlight=new Map;healthCache=new Map;healthCacheGeneration=0;sessionBoundaryQueues=new Map;constructor(e=al){let t=vl()||e;this.baseUrl=_l(t),this.client=Cl({baseUrl:ml(this.baseUrl)})}getBaseUrl(){return _l(vl()||this.baseUrl)}reconnectToRuntimeBaseUrl(){let e=_l(vl()||al);e!==this.baseUrl&&(this.baseUrl=e,this.client=Cl({baseUrl:ml(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=Cl({baseUrl:ml(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(m(`lastDirectory`)),t(m(`homeDirectory`))}catch{}if(!e.size&&typeof process<`u`&&typeof process.cwd==`function`&&t(process.cwd()),!e.size)return{homeDirectory:`/`,username:void 0};let[n]=Array.from(e);return this.deriveHomeDirectory(n)}async probeDirectory(e){let t=this.normalizeCandidatePath(e);if(!t)return!1;try{let e=await this.client.location.get({location:{directory:t}}),n=typeof e?.directory==`string`?e.directory:null;return!!(n&&n.trim().length>0)}catch{return!1}}async listSessions(){let e=await this.client.session.list(this.currentDirectory?{directory:this.currentDirectory}:void 0);return Array.isArray(e.data)?e.data.map(v):[]}async searchSessionsByTitle(e){let t=e.search.trim(),n=await this.client.session.list({search:t||void 0,parentID:null,limit:e.limit??30,order:`desc`},e.signal?{signal:e.signal}:void 0);if(!Array.isArray(n?.data))throw Error(`session.list search returned no data`);return n.data.map(v)}async createSession(e,t){let n=this.normalizeCandidatePath(t)??this.currentDirectory;if(e?.metadata,e?.parentID){let t=await this.client.session.fork({sessionID:e.parentID});return e.title?(await this.client.session.update({sessionID:t.id,title:e.title}),v(await this.client.session.get({sessionID:t.id}))):v(t)}return v(await this.client.session.create({...n?{location:{directory:n}}:{},title:e?.title}))}async getSession(e,t){return v(await this.client.session.get({sessionID:e}))}async deleteSession(e,t){return await this.client.session.remove({sessionID:e}),!0}async deleteSessionMessage(e,t,n){throw G(`session.deleteMessage`)}async updateSession(e,t,n){let r=t.title!==void 0,i=t.metadata!==void 0,a=t.time!==void 0&&Object.prototype.hasOwnProperty.call(t.time,`archived`);if(!r&&!i&&!a)throw G(`session.update`);let o=this.normalizeCandidatePath(n)??this.currentDirectory,l=s(),d=c(),f=()=>{if(s()!==l||c()!==d){let e=Error(`session.update discarded: runtime switched`);throw e.name=`RuntimeGenerationMismatchError`,e}},p=[],m=null,h=null,g=e=>{if(p.length===0)throw e;let t=dl(e),n=Error(`session.update partial failure after ${p.join(`,`)}: ${t}`);throw n.name=`SessionUpdatePartialFailureError`,n.cause=e,n.completed=[...p],n};try{if(r&&(await this.client.session.update({sessionID:e,title:t.title}),f(),p.push(`title`),m=v(await this.client.session.get({sessionID:e})),f()),i){let n={patch:t.metadata};o&&(n.directory=o);let r=await u(`/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 u(`/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 $e({sessionID:e,directory:this.currentDirectory??``,...typeof t==`number`?{limit:t}:{}})).records}async getSessionDiff(e,t){let n=this.normalizeCandidatePath(e.directory)??this.currentDirectory,r=typeof e.messageID==`string`&&e.messageID.trim().length>0?e.messageID.trim():void 0,i=new URLSearchParams;n&&i.set(`directory`,n),r&&i.set(`messageID`,r);let a=i.toString(),o=await u(`/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=hs(t.url,t.mime);if(!n)return t;let r=await So(n)??await(await he(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=El(e)?await this.normalizeFilePart(e):e;this.assertCapturedRuntime(n,r,`prompt attachment normalize`);let a=i.url,o;if(gs(a)){let e=a.startsWith(`blob:`)?await fetch(a).then(e=>e.blob()):hs(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 _s({body:e,mime:i.mime,filename:i.filename});this.assertCapturedRuntime(n,r,`prompt attachment upload`),a=t.url,o=t.size}if(El(i)&&o===void 0&&a.toLowerCase().startsWith(`file://`)){let e=us(a),t=f()?.files;if(t?.statFile)o=(await t.statFile(e)).size;else{let t=await u(`/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,...El(i)&&(o===void 0||!Number.isSafeInteger(o)||o<0||o>wl)?{referenceOnly:!0}:{}}}async buildMessageParts(e,t){let n=t?.generation??s(),r=t?.runtimeKey??c();return Ol(e,e=>this.toNormalizedFilePartInput(e,{generation:n,runtimeKey:r}))}async sendMessage(e){let t=s(),n=c(),r=()=>{this.assertCapturedRuntime(t,n,`session prompt discarded`)};r();let i=e.messageId??ne(`msg`),a=this.normalizeCandidatePath(e.directory??null)??this.currentDirectory,o=Qs(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),il(e.providerID);let u=l.flatMap(e=>e.type===`text`&&typeof e.text==`string`?[e.text]:[]).join(`
5
5
  `)||e.text,d=l.flatMap(e=>e.type!==`file`||typeof e.url!=`string`?[]:[{uri:e.url,...e.filename?{name:e.filename}:{}}]),f=l.flatMap(e=>e.type===`agent`&&typeof e.name==`string`?[{name:e.name}]:[]),p=xe(l.flatMap(e=>e.type===`text`&&!e.synthetic?[e.text]:[]).join(`