@openchambery/web 2.0.0-beta.14 → 2.0.0-beta.16
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.
- package/dist/assets/{AgentAvatar-1O_PzNgl.js → AgentAvatar-Cxm7uMtK.js} +1 -1
- package/dist/assets/{AssistantView-B1NCj_Fb.js → AssistantView-DSiX31eO.js} +3 -3
- package/dist/assets/{DiagramView-zeCf7Ybv.js → DiagramView-Cn3O5_Y8.js} +1 -1
- package/dist/assets/{FadeInOnReveal-Blpsssr8.js → FadeInOnReveal-FAZTMV12.js} +1 -1
- package/dist/assets/{Icon-Btt6-uNx.js → Icon-DKd015RD.js} +1 -1
- package/dist/assets/{MarkdownRenderer-Ba3oviH_.js → MarkdownRenderer-BldzYti9.js} +2 -2
- package/dist/assets/{MarkdownRendererImpl-fjFOYtqs.js → MarkdownRendererImpl-fwcKAJYw.js} +1 -1
- package/dist/assets/{MarkstreamRendererImpl-D73Bp9NC.js → MarkstreamRendererImpl-7KUzIn3H.js} +1 -1
- package/dist/assets/{MobileDetailNavigation-THG3yUY_.js → MobileDetailNavigation-C-b5DSQl.js} +1 -1
- package/dist/assets/{MobileShareBridge-Cb69oG6O.js → MobileShareBridge-DMezirfj.js} +2 -2
- package/dist/assets/{MobileSurface-CBMNDHWH.js → MobileSurface-Bt79wJBe.js} +1 -1
- package/dist/assets/{MultiRunWindow-Ygoxcm5y.js → MultiRunWindow-CnhaA2qb.js} +1 -1
- package/dist/assets/{OnboardingScreen-Cb_6lzZd.js → OnboardingScreen-BGHwdpXe.js} +1 -1
- package/dist/assets/{OverlayScrollbar-BXfF2JdG.js → OverlayScrollbar-SUdC3Pqe.js} +1 -1
- package/dist/assets/{SettingsView-BUF-obwp.js → SettingsView-BOY_6tAP.js} +1 -1
- package/dist/assets/{SettingsWindow-B54EoP27.js → SettingsWindow-iCU14SSY.js} +1 -1
- package/dist/assets/{TerminalView-BnacgrUr.js → TerminalView-GA-BbM9g.js} +1 -1
- package/dist/assets/{ToolOutputDialog-D5EDu_pb.js → ToolOutputDialog-CUl0cRZG.js} +1 -1
- package/dist/assets/{appThemeRegistry-CkFI48mo.js → appThemeRegistry-Dvw18-KP.js} +1 -1
- package/dist/assets/{assistant-attachment-cache-DphJleHr.js → assistant-attachment-cache-sG8YQsVs.js} +1 -1
- package/dist/assets/{button-DrOV2On_.js → button-EzCcYrQl.js} +1 -1
- package/dist/assets/{collapsible-CD-rqvsr.js → collapsible-BwvSZkMC.js} +1 -1
- package/dist/assets/{context-menu-dcIf0VbK.js → context-menu-DSrUbCPh.js} +1 -1
- package/dist/assets/{desktopHosts-DLW0GEzn.js → desktopHosts-C8vf9vRY.js} +1 -1
- package/dist/assets/desktopRelayRestore-DDJtljeu.js +1 -0
- package/dist/assets/{diagram-CpfuMO5b.js → diagram-Brtt6ms7.js} +1 -1
- package/dist/assets/{dialog-DOMLas8m.js → dialog-Cpu-rKij.js} +1 -1
- package/dist/assets/{fileMentionTouchSelection-05j9xM7K.js → fileMentionTouchSelection-CX2GBeT2.js} +1 -1
- package/dist/assets/{fileQueries-BfUCMigB.js → fileQueries-CBu-ytXS.js} +1 -1
- package/dist/assets/{gitApi--jK71Mhy.js → gitApi-BuHteWeZ.js} +1 -1
- package/dist/assets/{imageSource-BMztRu0c.js → imageSource-BpUsiwFd.js} +1 -1
- package/dist/assets/{input-DLdTC9t_.js → input-DksVnckl.js} +1 -1
- package/dist/assets/{insertionBoundaries-BHEBgMEu.js → insertionBoundaries-B5Wzbzd3.js} +1 -1
- package/dist/assets/{main-B4md6XgF.js → main-CEhjJ7ze.js} +2 -2
- package/dist/assets/{main-BAiP4T25.js → main-DINcXEAA.js} +4 -4
- package/dist/assets/{markdownHeightCache-2UQSdxne.js → markdownHeightCache-emzgqB2K.js} +1 -1
- package/dist/assets/{mcpQueries-BdkZuMYg.js → mcpQueries-BhVPqtnN.js} +1 -1
- package/dist/assets/miniChat-Bo0rWV9V.js +2 -0
- package/dist/assets/{mobile-BVX_SYNM.js → mobile-sA03x4Fl.js} +2 -2
- package/dist/assets/{multirun-BCRP1vnk.js → multirun-CEuu10Xi.js} +1 -1
- package/dist/assets/{persistence-BjB2zg-A.js → persistence-CMWO3jFo.js} +1 -1
- package/dist/assets/{platform-BtWIOx71.js → platform-BxU3ZvQ0.js} +1 -1
- package/dist/assets/{projectMeta-B916-Nri.js → projectMeta-n0t4_672.js} +1 -1
- package/dist/assets/{relay-image-stream-DrdVj99c.js → relay-image-stream-D2XooXKZ.js} +1 -1
- package/dist/assets/{renderElectronMiniChatApp-Df7dq4oG.js → renderElectronMiniChatApp-DGE4xEtr.js} +2 -2
- package/dist/assets/{renderMobileApp-BqRL8mi8.js → renderMobileApp-CRI1W3-J.js} +4 -4
- package/dist/assets/{runtime-fetch-Fs9ZV2V8.js → runtime-fetch-CiqQd__Y.js} +1 -1
- package/dist/assets/runtime-switch-BJM2k_uH.js +1 -0
- package/dist/assets/{runtimeConfig-B2-RJhnH.js → runtimeConfig-B5vzmiw4.js} +1 -1
- package/dist/assets/{runtimeEndpointReset-DOiWLvtd.js → runtimeEndpointReset-BiynvIUH.js} +1 -1
- package/dist/assets/{sessionChangeSummary-fWdW0Xo3.js → sessionChangeSummary-BpEaUpIi.js} +1 -1
- package/dist/assets/{sessionLookup-D6efIvsE.js → sessionLookup-CVS-ZMib.js} +1 -1
- package/dist/assets/{sortable-tabs-strip-Dw4fkTT5.js → sortable-tabs-strip-Bc0lATi8.js} +1 -1
- package/dist/assets/{terminalApi-tdoZSHxO.js → terminalApi-C6zlKnK1.js} +1 -1
- package/dist/assets/{textarea-C1Ro6kDl.js → textarea-B9pCxe-7.js} +1 -1
- package/dist/assets/{tooltip-Dbt9HzPi.js → tooltip-DwUy2erJ.js} +1 -1
- package/dist/assets/{url-BFVmRFrh.js → url-DF1NFwt_.js} +1 -1
- package/dist/assets/{useAppFontEffects-DYxg0CaC.js → useAppFontEffects-D-4aDydP.js} +7 -7
- package/dist/assets/{useAssistantUIStore-Bz4tRflF.js → useAssistantUIStore-B75cQm_z.js} +1 -1
- package/dist/assets/{useDesktopWindowControlsLayout-D66170SP.js → useDesktopWindowControlsLayout-CuSkyPqt.js} +1 -1
- package/dist/assets/{useEffectiveDirectory-HRJsy3JA.js → useEffectiveDirectory-BFl2jc4W.js} +1 -1
- package/dist/assets/{useFontPreferences-Dpty4dZD.js → useFontPreferences-DFsjAsxC.js} +1 -1
- package/dist/assets/{useMobileNavigationStore-rymykUWX.js → useMobileNavigationStore-C3zrYwWb.js} +5 -5
- package/dist/assets/{useSessionAutoCleanup-DK_o3WSg.js → useSessionAutoCleanup-BZAMbGcw.js} +2 -2
- package/dist/assets/{useUIStore-syVmbuDA.js → useUIStore-Brsa2mKs.js} +1 -1
- package/dist/assets/{useWorkerHighlightedLines-D7ReoWK5.js → useWorkerHighlightedLines-3sqUvjEF.js} +1 -1
- package/dist/index.html +10 -10
- package/dist/mini-chat.html +10 -10
- package/dist/mobile.html +10 -10
- package/package.json +1 -1
- package/server/lib/relay/DOCUMENTATION.md +2 -1
- package/dist/assets/desktopRelayRestore-BqkwgbJI.js +0 -1
- package/dist/assets/miniChat-D_CfOJNS.js +0 -2
- package/dist/assets/runtime-switch-LvWDU-SL.js +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/vendor-heic2any-CUPf3g2A.js","assets/rolldown-runtime-C0FnF6B9.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{C as t,D as n,k as r}from"./runtime-auth-D66yq6ie.js";import{c as i,f as a,i as o,n as s,r as c,s as l}from"./runtime-switch-
|
|
2
|
+
import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{C as t,D as n,k as r}from"./runtime-auth-D66yq6ie.js";import{c as i,f as a,i as o,n as s,r as c,s as l}from"./runtime-switch-BJM2k_uH.js";import{n as u}from"./runtime-fetch-CiqQd__Y.js";import{En as d,Lt as f,St as p,Wt as m,at as h,gt as g,in as ee,lt as te,r as ne,tn as re,ut as ie,zt as ae}from"./persistence-CMWO3jFo.js";import{a as oe,r as se}from"./vendor-zustand-B4dlGEM2.js";import{rt as ce}from"./vendor-base-ui-CnHfUmDN.js";import{n as le,r as ue,t as de}from"./vendor-opencode-client-C12gfjag.js";import{x as fe}from"./useUIStore-Brsa2mKs.js";import{n as pe}from"./vendor-react-DLPElpoQ.js";import{i as me}from"./vendor-pathe-vBmvQE8f.js";import{o as he}from"./vendor-aparajita-capacitor-secure-storage-CjQdwfjS.js";var ge=(e,t)=>e!==t,_=e=>{if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0};function _e(e){let t=_(e.id),n=_(e.name),r=_(e.displayName),i=t??n;if(!i)return{...e,id:``,name:``,displayName:r??``};if(n===i&&r)return{...e,id:i,name:i,displayName:r};let a=r??n??i;return{...e,id:i,name:i,displayName:a}}function ve(e){return e?_(e.displayName)??_(e.name)??_(e.id)??``:``}function ye(e,t){let n=_(t);if(!n||!e?.length)return;let r=e.find(e=>_(e.name)===n);if(r)return r;let i=e.find(e=>_(e.id)===n);if(i)return i;let a=e.find(e=>_(e.displayName)===n);if(a)return a}function be(e,t){let n=_(t);if(!n)return;let r=ye(e,n);return r?_(r.name)??_(r.id)??n:n}function xe(e){return Array.from(new Set(Array.from(e.matchAll(p()),e=>e[1])),e=>({id:e,name:e}))}function v(e){return{...e,directory:e.location?.directory}}function Se(e){let t={};for(let n of e){let e=n;!e||e.type!==`document`||!e.info||typeof e.info!=`object`||Object.assign(t,e.info)}return t}var y=e(ce(),1),Ce=pe();function b(e,t){return e.findIndex(e=>e.id===t)}function we(e,t){if(!t)return e.slice();let n=b(e,t);return n<0?e.slice():e.slice(0,n)}function Te(e,t,n){let r=b(e,n);return r<0?!1:b(e,t)>=r}function Ee(e,t){if(!t){for(let t=e.length-1;t>=0;--t){let n=e[t];if(n?.role===`user`)return n}return}let n=b(e,t);if(!(n<0))for(let t=n-1;t>=0;--t){let n=e[t];if(n?.role===`user`)return n}}function De(e,t){let n=b(e,t);if(!(n<0))for(let t=n+1;t<e.length;t+=1){let n=e[t];if(n?.role===`user`)return n}}var Oe=`openchamber:sync:debug`,ke;function Ae(){if(ke!==void 0)return ke;try{ke=typeof localStorage<`u`&&localStorage.getItem(Oe)===`1`}catch{ke=!1}return ke}function x(e,...t){Ae()&&(`${e}`,[...t])}var je={pipeline:{coalesced:(e,t)=>x(`pipeline`,`coalesced`,e,t),flush:e=>x(`pipeline`,`flush`,`${e} events`)},reducer:{messageUpdatedUnchanged:(e,t,n,r,i)=>x(`reducer`,`message.updated UNCHANGED (skipped)`,{sessionID:e,messageID:t,role:n,finish:r,completed:i}),partUpdatedNoExistingParts:(e,t,n)=>x(`reducer`,`message.part.updated NO EXISTING PARTS`,{messageID:e,partID:t,partType:n}),partDeltaNoParts:(e,t)=>x(`reducer`,`message.part.delta DROPPED (no parts array)`,{messageID:e,partID:t}),partDeltaNotFound:(e,t)=>x(`reducer`,`message.part.delta DROPPED (partID not found)`,{messageID:e,partID:t}),partSkipped:(e,t,n)=>x(`reducer`,`message.part.updated SKIPPED (type filtered)`,{messageID:e,partID:t,partType:n})},dispatch:{eventNoChange:(e,t,n)=>x(`dispatch`,`event → no change`,{eventType:e,sessionID:t,messageID:n}),eventApplied:(e,t,n)=>x(`dispatch`,`event → applied`,{eventType:e,sessionID:t,messageID:n})},recovery:{materializing:e=>x(`recovery`,`materializing session`,e)}},Me=`desc`;function Ne(e){return!S(e)||e.type!==`compaction`?!1:e.status===`running`||e.status===`completed`||e.status===`failed`}function Pe(e){if(e)return e.find(Ne)}var Fe=e=>e?e.toLowerCase().includes(`application/json`):!1,Ie=e=>e?e.toLowerCase().includes(`text/html`):!1;function S(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}function C(e){return typeof e==`string`&&e.length>0?e:void 0}function Le(e){if(!S(e))return null;let t=C(e.id);return t?{...e,id:t}:null}function Re(e,t,n){return`${e}:${t}:${n}`}function ze(e,t,n,r,i=`text`,a){return i===`reasoning`?{id:Re(t,i,n),sessionID:e,messageID:t,type:`reasoning`,text:r}:{id:Re(t,i,n),sessionID:e,messageID:t,type:`text`,text:r,...a?.synthetic===!0?{synthetic:!0}:{}}}function Be(e){return e?e.nativeType===`synthetic`||e.type===`synthetic`:!1}function Ve(e,t){return!e?.id||Be(e)||(e.clientRole??e.role)!==`user`?!1:!Array.isArray(t)||t.length===0||!(t.some(e=>e.type===`subtask`||e.type===`compaction`)||t.every(e=>!!e.synthetic))}function He(e){if(typeof e==`string`&&e.length!==0)return e.replace(/^evt_/,`msg_`)}function Ue(e){let t=e.content;return Array.isArray(t)?t.flatMap(e=>S(e)&&e.type===`text`&&typeof e.text==`string`?[e.text]:[]).join(`
|
|
3
3
|
`):typeof e.output==`string`?e.output:void 0}function We(e){return e===`patch`?`apply_patch`:e}function Ge(e,t,n){let r=C(n.id)??`${t}:tool`,i=We(C(n.name))??`tool`,a=S(n.state)?n.state:{},o=C(a.status)??`completed`;return{id:r,sessionID:e,messageID:t,type:`tool`,tool:i,callID:r,state:{status:o===`streaming`?`pending`:o,input:a.input??{},output:Ue(a),error:S(a.error)?C(a.error.message):C(a.error),metadata:S(a.metadata)?a.metadata:{}}}}function Ke(e){return S(e)?{created:typeof e.created==`number`?e.created:0,...typeof e.streamed==`number`?{streamed:e.streamed}:{},...typeof e.completed==`number`?{completed:e.completed}:{},...typeof e.start==`number`?{start:e.start}:{},...typeof e.end==`number`?{end:e.end}:{}}:{created:0}}function qe(e){if(!S(e))return;let t=S(e.cache)?{...typeof e.cache.read==`number`?{read:e.cache.read}:{},...typeof e.cache.write==`number`?{write:e.cache.write}:{}}:void 0,n={...typeof e.input==`number`?{input:e.input}:{},...typeof e.output==`number`?{output:e.output}:{},...typeof e.reasoning==`number`?{reasoning:e.reasoning}:{},...t&&(t.read!==void 0||t.write!==void 0)?{cache:t}:{}};return Object.keys(n).length>0?n:void 0}function Je(e,t){let n=S(t.metadata)?t.metadata:void 0,r=n&&S(n.model)?n.model:void 0,i=S(t.model)?t.model:r,a=i?C(i.id)??C(i.modelID)??C(t.modelID):C(t.modelID),o=i?C(i.providerID)??C(t.providerID):C(t.providerID),s=(i?C(i.variant):void 0)??C(t.variant)??(n?C(n.variant):void 0);a&&(e.modelID=a),o&&(e.providerID=o),s&&(e.variant=s),(a||o||s)&&(e.model={...o?{providerID:o}:{},...a?{modelID:a}:{},...s?{variant:s}:{}});let c=C(t.agent)??C(t.mode)??(n?C(n.agent):void 0);c&&(e.agent=c)}function Ye(e,t,n){return{id:t.id,sessionID:e,role:n,time:Ke(t.time)}}function Xe(e,t){let n=Le(t);if(!n)return null;let r=n.id,i=C(n.type)??`unknown`,a=C(n.role)??C(n.clientRole);if(i===`idle`||i===`model-switched`||i===`agent-selected`||i===`agent-switched`||i===`location-switched`||a===`idle`)return null;if(i===`user`){let t=Ye(e,n,`user`);Je(t,n);let i=[],a=C(n.text);a&&i.push(ze(e,r,0,a));let o=n.files;return Array.isArray(o)&&o.forEach((t,n)=>{if(!S(t))return;let a=C(t.mime)??`application/octet-stream`,o=S(t.source)?t.source:{},s=o.type===`uri`?C(o.uri):void 0,c=C(t.data),l=s||(c?`data:${a};base64,${c}`:``),u={id:`${r}:file:${n}`,sessionID:e,messageID:r,type:`file`,mime:a,filename:C(t.name),url:l};i.push(u)}),{info:t,parts:i}}if(i===`assistant`){let t=Ye(e,n,`assistant`);if(S(n.model)){t.modelID=C(n.model.id)??C(n.model.modelID)??C(n.modelID),t.providerID=C(n.model.providerID)??C(n.providerID);let e=C(n.model.variant)??C(n.variant);(t.modelID||t.providerID||e)&&(t.model={...t.providerID?{providerID:t.providerID}:{},...t.modelID?{modelID:t.modelID}:{},...e?{variant:e}:{}})}else{let e=C(n.modelID),r=C(n.providerID),i=C(n.variant);e&&(t.modelID=e),r&&(t.providerID=r),(e||r||i)&&(t.model={...r?{providerID:r}:{},...e?{modelID:e}:{},...i?{variant:i}:{}})}let i=C(n.agent);i&&(t.agent=i);let a=C(n.finish)??C(n.rawFinish);a&&(t.finish=a),S(n.error)&&(t.error={type:C(n.error.type)??`error`,message:C(n.error.message)??``,...typeof n.error.status==`number`?{status:n.error.status}:{}}),typeof n.cost==`number`&&Number.isFinite(n.cost)&&(t.cost=n.cost);let o=qe(n.tokens);o&&(t.tokens=o);let s=[],c=Array.isArray(n.content)?n.content:[],l=0,u=0;for(let t of c){if(!S(t))continue;let n=C(t.type);if(n===`text`&&typeof t.text==`string`){s.push(ze(e,r,l++,t.text));continue}if(n===`reasoning`&&typeof t.text==`string`){s.push(ze(e,r,u++,t.text,`reasoning`));continue}n===`tool`&&s.push(Ge(e,r,t))}return{info:t,parts:s}}if(i===`shell`){let t=Ye(e,n,`user`),i=C(n.command)??``,a=S(n.output)&&typeof n.output.output==`string`?n.output.output:``,o=n.status===`running`?`running`:n.status===`exited`&&n.exit===0?`completed`:`error`;return{info:t,parts:[{id:Re(r,`text`,0),sessionID:e,messageID:r,type:`text`,text:i,shellAction:{command:i,output:a,status:o,shellID:C(n.shellID)}}]}}if(i===`synthetic`){let t={...Ye(e,n,`user`),nativeType:`synthetic`},i=C(n.description);i&&(t.description=i),S(n.metadata)&&(t.metadata=n.metadata);let a=C(n.shellID);a&&(t.shellID=a);let o=C(n.sessionID)&&n.sessionID!==e?C(n.sessionID):C(n.childSessionID)??C(n.taskSessionID);o&&(t.childSessionID=o);let s=C(n.text)??i??``;return{info:t,parts:s?[ze(e,r,0,s,`text`,{synthetic:!0})]:[{id:Re(r,`text`,0),sessionID:e,messageID:r,type:`text`,text:``,synthetic:!0}]}}if(i===`system`)return null;if(i===`compaction`){let t=n.status===`failed`?`failed`:n.status===`completed`?`completed`:`running`,i={...Ye(e,n,`assistant`),clientRole:`compaction`},a=S(n.error)?{type:C(n.error.type)??`error`,message:C(n.error.message)??``,...typeof n.error.status==`number`?{status:n.error.status}:{}}:void 0;return{info:i,parts:[{id:`${r}:compaction`,sessionID:e,messageID:r,type:`compaction`,status:t,reason:n.reason===`auto`?`auto`:`manual`,...typeof n.summary==`string`?{summary:n.summary}:{},...typeof n.recent==`string`?{recent:n.recent}:{},...a?{error:a}:{}}]}}return{info:Ye(e,n,`assistant`),parts:[ze(e,r,0,C(n.text)??`[${i}]`)]}}function Ze(e,t,n=Me,r=20){if(!S(e))throw Error(`session projection: expected JSON object`);if(!Array.isArray(e.data))throw Error(`session projection: data must be an array`);let i=[];for(let n of e.data){let e=Xe(t,n);e&&i.push(e)}n===`desc`&&i.reverse();let a=S(e.cursor)?e.cursor:void 0,o=C(a?n===`asc`?a.previous:a.next:e.cursor),s=!o||e.data.length<r,c=i.filter(e=>Ve(e.info,e.parts)).length;return{records:i,cursor:s?void 0:o,complete:s,turnCount:c}}async function Qe(e){let t=e.limit??20,n=e.order??`desc`,r=`/api/session/${encodeURIComponent(e.sessionID)}/message`,i={directory:e.directory,limit:String(t)};e.cursor?i.cursor=e.cursor:i.order=n;let a=await u(r,{method:`GET`,query:i,signal:e.signal});if(!a.ok)throw Error(`session projection failed (${a.status})`);let o=a.headers.get(`content-type`);if(Ie(o))throw Error(`session projection: unexpected HTML response`);Fe(o);let s;try{s=await a.json()}catch{throw Error(`session projection: malformed JSON`)}return Ze(s,e.sessionID,n,t)}function $e(e,t){if(!S(e))throw Error(`session context: expected JSON object`);if(!Array.isArray(e.data))throw Error(`session context: data must be an array`);let n=[];for(let r of e.data){let e=Xe(t,r);e&&n.push(e)}return{records:n,cursor:void 0,complete:!1,turnCount:n.filter(e=>Ve(e.info,e.parts)).length}}async function et(e){let t=`/api/session/${encodeURIComponent(e.sessionID)}/context`,n=await u(t,{method:`GET`,query:{directory:e.directory},signal:e.signal});if(!n.ok)throw Error(`session context failed (${n.status})`);if(Ie(n.headers.get(`content-type`)))throw Error(`session context: unexpected HTML response`);let r;try{r=await n.json()}catch{throw Error(`session context: malformed JSON`)}return $e(r,e.sessionID)}function tt(e){let t=e.fetched.filter(e=>!!e.info?.id),n=e.previous.filter(e=>!!e.info?.id),r=e.touched??new Set,i=new Map(t.map(e=>[e.info.id,e])),a=new Map(n.map(e=>[e.info.id,e])),o=new Set(e.coverageMessageIDs??t.map(e=>e.info.id)),s=n.findIndex(e=>o.has(e.info.id));if(!e.completeTail)for(let[e,t]of n.entries())i.has(t.info.id)||(s===-1||e<s)&&i.set(t.info.id,t);for(let e of r){let t=a.get(e);t?i.set(e,t):i.delete(e)}let c=[],l=new Set;for(let e of n)!i.has(e.info.id)||l.has(e.info.id)||(c.push(e.info.id),l.add(e.info.id));for(let e of t)!i.has(e.info.id)||l.has(e.info.id)||(c.push(e.info.id),l.add(e.info.id));for(let e of i.keys())l.has(e)||c.push(e);return c.map(e=>i.get(e))}var nt=e=>e?e.toLowerCase().includes(`application/json`):!1,rt=e=>e?e.toLowerCase().includes(`text/html`):!1;function it(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}function at(e){return typeof e==`string`&&e.length>0?e:void 0}function ot(e){return typeof e==`number`&&Number.isFinite(e)?e:void 0}function st(e,t,n){let r=n?`: ${n}`:``,i=Error(`${e} (${t})${r}`);throw i.status=t,i}async function ct(e){try{return(await e.text()).trim()}catch{return``}}async function lt(e,t){let n=e.headers.get(`content-type`);if(rt(n))throw Error(`${t}: unexpected HTML response`);let r;try{r=await e.json()}catch{throw Error(`${t}: malformed JSON`)}if(!nt(n)&&r==null)throw Error(`${t}: empty response`);return r}var ut=oe((e,t)=>({runningBySession:{},setRunning(t,n){e(e=>{let r={...e.runningBySession};return n?r[t]=!0:delete r[t],{runningBySession:r}})},isRunning(e){return t().runningBySession[e]===!0},reset(){e({runningBySession:{}})}}));function w(e,t){ut.getState().setRunning(e,t)}function dt(e){return ut.getState().isRunning(e)}function ft(e){return!dt(e.sessionID)}function pt(e){let t=it(e)?e:null,n=t&&it(t.data)?t.data:t;if(!n)throw Error(`session compact: expected inbox item`);let r=at(n.id),i=at(n.sessionID);if(!r||!i)throw Error(`session compact: inbox item missing id`);if(n.type&&n.type!==`compaction`)throw Error(`session compact: expected compaction inbox item`);return{id:r,sessionID:i,type:`compaction`,delivery:n.delivery===`queue`?`queue`:n.delivery===`steer`?`steer`:void 0,timeCreated:ot(n.timeCreated)}}function mt(e){let t=it(e)?e:null,n=t&&Array.isArray(t.data)?t.data:Array.isArray(e)?e:null;if(!n)throw Error(`session inbox: expected list`);let r=[];for(let e of n)!it(e)||e.type!==`compaction`||r.push(pt(e));return r}function ht(e,t){t.some(e=>e.type===`compaction`)&&w(e,!0)}function gt(e,t){t.some(e=>(e.parts??[]).find(Ne)?.status===`running`)&&w(e,!0)}async function _t(e){let t=`/api/session/${encodeURIComponent(e.sessionID)}/compact`,n={};e.messageID&&(n.id=e.messageID),e.delivery&&(n.delivery=e.delivery);let r=await u(t,{method:`POST`,headers:{"Content-Type":`application/json`},query:{directory:e.directory},body:JSON.stringify(n),signal:e.signal});r.ok||st(`session compact`,r.status,await ct(r));let i=pt(await lt(r,`session compact`));return w(i.sessionID,!0),i}var vt=`compaction:`;function yt(e,t){return t&&t.length>0?t:`${vt}${e}`}function bt(e,t){let n=e.message[t]??[];for(let t=n.length-1;t>=0;--t){let r=n[t];if((e.part[r.id]??[]).some(e=>Ne(e)&&e.status===`running`))return r.id}}function xt(e,t,n,r,i=Date.now()){let a=e.message[t]?[...e.message[t]]:[];a.some(e=>e.id===n)||(a.push({id:n,sessionID:t,role:`assistant`,clientRole:`compaction`,time:{created:i}}),e.message[t]=a);let o=e.part[n]?[...e.part[n]]:[],s=o.findIndex(Ne),c=r(s>=0?o[s]:{id:`${n}:compaction`,sessionID:t,messageID:n,type:`compaction`,status:`running`,reason:`manual`});s>=0?o[s]=c:o.push(c),e.part[n]=o}function St(e,t){let n=String(t.type??``);if(!n.startsWith(`session.compaction.`))return!1;let r=it(t.properties)?t.properties:null;if(!r)return!1;let i=at(r.sessionID);if(!i)return!1;let a=at(r.inputID),o=bt(e,i),s=n===`session.compaction.started`?a??He(t.id)??yt(i):a??o??He(t.id)??yt(i);if(n===`session.compaction.started`)return!e.part[s]?.some(Ne)&&(xt(e,i,s,e=>({...e,status:`running`,reason:r.reason===`auto`?`auto`:`manual`,...typeof r.recent==`string`?{recent:r.recent}:{}}),ot(r.eventCreated)),w(i,!0),!0);if(n===`session.compaction.delta`){if(!o)return!1;let t=typeof r.text==`string`?r.text:``;return t?(xt(e,i,s,e=>({...e,status:`running`,summary:(e.summary??``)+t})),w(i,!0),!0):!1}if(n===`session.compaction.ended`)return xt(e,i,s,e=>({...e,status:`completed`,reason:r.reason===`auto`?`auto`:`manual`,summary:typeof r.text==`string`?r.text:e.summary,...typeof r.recent==`string`?{recent:r.recent}:{}}),ot(r.eventCreated)),w(i,!1),!0;if(n===`session.compaction.failed`){let t=it(r.error)?r.error:{};return xt(e,i,s,e=>({...e,status:`failed`,reason:r.reason===`auto`?`auto`:`manual`,error:{type:at(t.type)??`error`,message:at(t.message)??``,...typeof t.status==`number`?{status:t.status}:{}}}),ot(r.eventCreated)),w(i,!1),!0}return!1}var Ct=new Set([`patch`,`step-start`,`step-finish`]),wt=[`text`,`output`],Tt=new Set([`completed`,`error`,`aborted`,`failed`,`timeout`,`cancelled`]);function Et(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 Dt(e,t){let n=[];for(let r of wt){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 Ot(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 kt(e){if(e.type!==`tool`)return;let t=e.state?.status;return typeof t==`string`?t:void 0}function At(e,t){if(e.type!==`tool`||t.type!==`tool`)return!1;let n=kt(e),r=kt(t);if(n&&Tt.has(n)&&(!r||!Tt.has(r)))return!0;let i=Ot(e),a=Ot(t);return typeof i==`number`&&typeof a!=`number`}function jt(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 Mt=[`agent`,`mode`,`providerID`,`modelID`,`variant`],Nt=e=>typeof e==`object`&&!!e&&!Array.isArray(e),Pt=[`input`,`output`,`reasoning`];function Ft(e){if(!e||typeof e!=`object`)return!1;let t=e;return Pt.some(e=>typeof t[e]==`number`&&Number.isFinite(t[e])&&t[e]>0)}function It(e){if(!e||typeof e!=`object`)return!1;let t=e;return Pt.every(e=>typeof t[e]!=`number`||!Number.isFinite(t[e])||t[e]<=0)}function Lt(e){if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0}function Rt(e,t){let n={...e,...t},r=e,i=t,a=n;for(let e of Mt){let t=Lt(i[e]),n=Lt(r[e]);t?a[e]=t:n?a[e]=n:delete a[e]}let o=i.model,s=r.model;return Nt(o)?a.model=o:Nt(s)?a.model=s:delete a.model,(e.time||t.time)&&(n.time={...e.time,...t.time}),Ft(r.tokens)&&It(i.tokens)&&(a.tokens=r.tokens),n}function zt(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(!jt(e[n],t[n]))return!1;return!0}function Bt(e,t,n){if(!t)return!1;let r=e.message[t];return r?b(r,n)>=0:!1}function Vt(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=Rt(t,n);if(zt(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(Ct.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=!Bt(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(At(e,r))return!1;let t=Dt(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?Et(o,n.delta):(o??``)+n.delta,__dedupeNextDeltaFields:s.filter(e=>e!==n.field)},e.part[n.messageID]=l,!0}default:return rn(e,t)}}function 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 Ht(e,t,n){return`${e}:${t}:${n}`}function Ut(e){return typeof e?.created==`number`&&Number.isFinite(e.created)&&e.created>0?e.created:Date.now()}function Wt(e){let t=e.eventCreated;return typeof t==`number`&&Number.isFinite(t)&&t>0?t:void 0}function Gt(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),!Lt(n.agent)&&r?.agent&&(c.agent=r.agent,s=!0),!Lt(n.modelID)&&r?.modelID&&(c.modelID=r.modelID,s=!0),!Lt(n.providerID)&&r?.providerID&&(c.providerID=r.providerID,s=!0),!Lt(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:Ut(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 Kt(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 qt(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 Jt(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=Rt(o,r);if(zt(o,s)&&o.time?.created===s.time?.created)return!1;let c=[...i];return c[a]=s,e.message[t]=c,!0}function Yt(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 Xt(e,t,n,r,i){let a=Wt(i);if(t===`session.step.started`)return Gt(e,n,r,{created:a,...Kt(i)});if(t===`session.step.streamed`)return a?(Gt(e,n,r,{created:a}),Jt(e,n,r,{id:r,sessionID:n,role:`assistant`,time:{created:Yt(e,n,r)??a,streamed:a}})):!1;if(t===`session.step.ended`){Gt(e,n,r,{created:a});let t=E(i.finish),o=qt(i.tokens),s=typeof i.cost==`number`&&Number.isFinite(i.cost)?i.cost:void 0;return Jt(e,n,r,{id:r,sessionID:n,role:`assistant`,time:{created:Yt(e,n,r)??Ut({created:a}),...a?{completed:a}:{}},...t?{finish:t}:{},...o?{tokens:o}:{},...s===void 0?{}:{cost:s}})}if(t===`session.step.failed`){Gt(e,n,r,{created:a});let t=T(i.error),o=qt(i.tokens),s=typeof i.cost==`number`&&Number.isFinite(i.cost)?i.cost:void 0;return Jt(e,n,r,{id:r,sessionID:n,role:`assistant`,time:{created:Yt(e,n,r)??Ut({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 Zt(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 Qt(e,t,n,r){let i=Ht(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 $t(e,t,n,r,i,a,o){Gt(e,t,n,o);let s=e.part[n]?[...e.part[n]]:[],c=Qt(s,r,n,i);if(c<0){let e={id:Ht(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 en(e,t){return e.findIndex(e=>e.id===t||e.callID===t||e.type===`tool`&&e.id===t)}function tn(e,t,n,r,i,a,o){Gt(e,t,n,o);let s=e.part[n]?[...e.part[n]]:[],c=en(s,r);return c<0&&(s.push({id:r,sessionID:t,messageID:n,type:`tool`,tool:We(i)??`tool`,callID:r,state:{status:`pending`,input:``,output:void 0,metadata:{}}}),c=s.length-1),s[c]=a(s[c]),e.part[n]=s,!0}function nn(e,t,n){return e.message[t]?.find(t=>e.part[t.id]?.some(e=>e.type===`text`&&e.shellAction?.shellID===n))?.id}function rn(e,t){let n=String(t.type);if(n.startsWith(`session.compaction.`))return St(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=nn(e,i,o),l=c?s.find(e=>e.id===c):void 0,u=l?.id??(n===`session.shell.started`?He(t.id):void 0);if(!u||n===`session.shell.started`&&l)return!1;let d=Xe(i,{id:u,type:`shell`,shellID:o,command:a.command,status:a.status,exit:a.exit,output:r.output,time:{created:l?.time.created??Wt(r),...n===`session.shell.ended`?{completed:Wt(r)}:{}}});return!d||l&&jt(l,d.info)&&jt(e.part[u],d.parts)?!1:(e.message[i]=l?s.map(e=>e.id===u?d.info:e):[...s,d.info],e.part[u]=d.parts,!0)}if(i&&n===`session.synthetic`){let n=He(t.id);if(!n)return!1;let a=Xe(i,{id:n,type:`synthetic`,text:r.text,description:r.description,metadata:r.metadata,time:{created:Wt(r)}});if(!a)return!1;let o=e.message[i]??[],s=o.find(e=>e.id===n);return s&&jt(s,a.info)&&jt(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:Wt(r)};if(n===`session.step.started`||n===`session.step.streamed`||n===`session.step.ended`||n===`session.step.failed`)return Xt(e,n,i,a,r);if(n===`session.text.started`)return $t(e,i,a,`text`,o,``,s);if(n===`session.text.delta`){let t=typeof r.delta==`string`?r.delta:``;return t?$t(e,i,a,`text`,o,e=>e+t,s):!1}if(n===`session.text.ended`)return $t(e,i,a,`text`,o,typeof r.text==`string`?r.text:``,s);if(n===`session.reasoning.started`)return $t(e,i,a,`reasoning`,o,``,s);if(n===`session.reasoning.delta`){let t=typeof r.delta==`string`?r.delta:``;return t?$t(e,i,a,`reasoning`,o,e=>e+t,s):!1}if(n===`session.reasoning.ended`)return $t(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 tn(e,i,a,c,l,e=>e,s);if(n===`session.tool.input.delta`){let t=typeof r.delta==`string`?r.delta:``;return t?tn(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 tn(e,i,a,c,l,e=>{let n=T(e.state)??{};return{...e,state:{...n,input:t}}},s)}return n===`session.tool.called`?tn(e,i,a,c,l,e=>{let t=T(e.state)??{};return{...e,state:{...t,status:`pending`,input:r.input??t.input??{},metadata:T(t.metadata)??{}}}},s):n===`session.tool.progress`?tn(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`?tn(e,i,a,c,l,e=>{let t=T(e.state)??{};return{...e,state:{...t,status:`completed`,input:t.input??r.input??{},output:Zt(r.content),metadata:T(r.metadata)??T(t.metadata)??{}}}},s):n===`session.tool.failed`&&tn(e,i,a,c,l,e=>{let t=T(e.state)??{},n=T(r.error);return{...e,state:{...t,status:`error`,input:t.input??{},output:Zt(r.content),error:n?E(n.message)??E(r.error):E(r.error),metadata:T(r.metadata)??T(t.metadata)??{}}}},s)}function an(e){if(typeof e.time?.completed==`number`)return!1;let t=e.finish;return!(typeof t==`string`&&t.length>0)}function on(e){let t=e.id;return typeof t==`string`&&t.length>0?t:void 0}function D(e){return e.slim===!0}function sn(e,t){if(!e||e.length===0||!t.some(e=>D(e)))return t;let n=new Map;for(let t of e){let e=on(t);e&&!D(t)&&n.set(e,t)}if(n.size===0)return t;let r=!1,i=t.map(e=>{if(!D(e))return e;let t=on(e);if(!t)return e;let i=n.get(t);return i?(r=!0,i):e});return r?i:t}function cn(e,t){return e===t||e.length===t.length&&e.every((e,n)=>e===t[n])?t:e}function ln(e){let t=e.clientRole??e.role;return typeof t==`string`?t:``}function un(e){return ln(e)!==`assistant`||!an(e)}function dn(e,t,n){if(!e||e.length===0)return t;let r=sn(e,t);if(un(n))return cn(r,e);let i=new Set;for(let e of r){let t=on(e);t&&i.add(t)}let a=new Map,o=[],s,c=0;for(let t of e){let e=on(t);if(e&&i.has(e)){s=e;continue}if(!e)continue;if(c+=1,!s){o.push(t);continue}let n=a.get(s);if(n){n.push(t);continue}a.set(s,[t])}if(c===0)return cn(r,e);let l=[...o];for(let e of r){l.push(e);let t=on(e);if(!t)continue;let n=a.get(t);n&&l.push(...n)}return cn(l,e)}var fn=e=>Object.freeze(e),pn=Object.freeze({initial:fn({id:`initial`,onStale:`backfill`,messages:`insert-only`,parts:`replace`,preserveStreaming:`assistant`,protectOptimistic:`none`}),prepend:fn({id:`history`,onStale:`drop`,messages:`insert-only`,parts:`skip-existing`,preserveStreaming:`assistant`,protectOptimistic:`none`}),recovery:fn({id:`recovery`,onStale:`backfill`,messages:`upsert`,parts:`replace`,preserveStreaming:`assistant`,protectOptimistic:`none`}),"reconcile-page":fn({id:`reconcile-page`,onStale:`backfill`,messages:`upsert`,parts:`replace`,preserveStreaming:`assistant`,protectOptimistic:`keep-unless-full`}),materialize:fn({id:`materialize`,onStale:`backfill`,messages:`insert-only`,parts:`replace`,preserveStreaming:`assistant`,protectOptimistic:`none`})}),mn=fn({id:`recovery-backfill`,onStale:`backfill`,messages:`insert-only`,parts:`skip-existing`,preserveStreaming:`assistant`,protectOptimistic:`none`}),hn=fn({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 un(e)}function Dn(e){return D(e)?`slim`:`full`}function On(e){return e.some(e=>D(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=>D(e)))return t;let n=new Map;for(let t of e)t.id&&!D(t)&&n.set(t.id,t);if(n.size===0)return t;let r=!1,i=t.map(e=>{if(!D(e)||!e.id)return e;let t=n.get(e.id);return t?(r=!0,t):e});return r?i:t}function 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=>D(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=>D(e)),f=e.filter(e=>!!e?.id&&!u.has(e.id)&&!n.has(e.type)&&(Zn(e,i)||d&&!D(e)));if(f.length===0)return c;let p=new Set(f.map(e=>e.id)),m=new Map,h=[];for(let t of e)p.has(t.id)?h.push(t):u.has(t.id)&&h.length>0&&(m.set(t.id,h),h=[]);let g=[];for(let e of c){for(let t of m.get(e.id)??[])g.push(t);g.push(e)}for(let e of h)g.push(e);return g}var 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.error,o=e.tokens,s=t.tokens,c=!cr(e)&&typeof r==`string`&&r.length>0,l=!lr(e)&&typeof i==`number`,u=!ur(e)&&!!a,d=!Ft(o)&&Ft(s);if(!c&&!l&&!u&&!d)return e;let f={...e};return c&&(f.finish=r),l&&(f.time={...sr(e).time,completed:i}),u&&(f.error=a),d&&(f.tokens=s),f}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)),c=t.filter(e=>!s.has(e.id));if(c.length===0)return a?o:e;if(!t.some(e=>s.has(e.id)))return r===`prepend`?[...c,...o]:r===`by-created`?pr(o,c):[...o,...c];let l=-1;for(let e of t){let t=o.findIndex(t=>t.id===e.id);if(t>=0){l=t;continue}l+=1,o.splice(l,0,e)}return o}function 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:Rt(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),an(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_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=>D(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,D(t)&&(r=!0));return n?r?!0:t?an(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 Ve(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)=>an(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`&&!Ft(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 O(e){return e.trim()}function Yr(e){return`${O(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=Vt(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=O(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=O(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=O(t.directory),r=e.getStore(n).getState();return Gr(t.sessionID,Xr(r,t.sessionID))},getRequestState(t){let n=O(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=O(t.directory);return e.getStore(r).getState().part?.[n]??[]},hasSession(t){let n=O(t.directory),r=e.getStore(n).getState().message;return r?Object.prototype.hasOwnProperty.call(r,t.sessionID):!1},apply(t,n){let r=O(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 k(){return Di?.repository??null}function Ii(){let e=k();if(!e)throw Error(`TranscriptRepository is not bound — SyncProvider must mount first`);return e}function Li(e,t){let n=k();if(n)return n;let r=ji(t);return di({getStore:e=>r})}function A(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=k(),n=o(),r=s();return t?.getCacheBudget?.().listCanonicalScopesForSession(e,{transport:n,generation:r})?.map(e=>A(e.directory,e.sessionID,{transport:e.transport,generation:e.generation}))??[]}catch{return[]}}function zi(e,t){let n=k();return n?n.apply(e,t):null}async function Bi(e,t){let n=Ii();if(typeof n.fetchPreviousPage!=`function`)throw Error(`TranscriptRepository does not support fetchPreviousPage`);await n.fetchPreviousPage(A(e,t))}async function Vi(e,t){let n=Ii();if(typeof n.ensureInitial!=`function`)throw Error(`TranscriptRepository does not support ensureInitial`);await n.ensureInitial(A(e,t))}async function Hi(e,t){let n=Ii(),r=A(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){let n=Ii();if(typeof n.refreshFromAuthority!=`function`)throw Error(`TranscriptRepository does not support refreshFromAuthority`);gi(e,t);try{await n.refreshFromAuthority(A(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=A(e,t);await Ei(`${e}\n${t}\n${n}`,()=>i.materializeMessage(a,n),{priority:r?.priority??`background`})}function Gi(e,t,n){let r=k();return!r||typeof r.getMessageMaterializationState!=`function`?{sessionID:t,messageID:n,status:`idle`}:r.getMessageMaterializationState(A(e,t),n)}function Ki(e,t){k()?.purgeSession?.(A(e,t))}var j=null;function qi(e){j&&j!==e&&j.cancelAll(`reregister`),j=e}function Ji(e){j?.captureCheckpoints(e)}function Yi(e){j?.onCompensation(e)}async function Xi(e){return j?j.ensureOnObserve(e):null}function Zi(e){j?.cancelAll(e)}var Qi=[],$i=[],ea={sessionID:``,messageOrder:[],messagesByID:{},partsByMessageID:{},boundary:Sr,liveRevision:0};Gr(``,Sr);var ta={sessionID:``,phase:`idle`,p0Satisfied:!1};function M(e,t){return Li(e,t)}var na=new Set;function ra(e,t){return`${e}\n${t}`}function ia(e,t){if(!t)return;let n=ra(e,t);na.has(n)||(na.add(n),Xi(A(e,t)).catch(()=>{}).finally(()=>{na.delete(n)}))}function aa(e,t){if(e&&t){na.delete(ra(e,t));return}na.clear()}function oa(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(ea);return(c.current===void 0||!s.current(c.current,e))&&(c.current=e),c.current}let r=M(t,n).getTranscript(A(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;ia(t,e);let i=M(t,n).subscribe(A(t,e),()=>{r()}),a=Mi(()=>{i(),c.current=void 0,aa(t,e),ia(t,e),i=M(t,n).subscribe(A(t,e),()=>{r()}),r()});return()=>{a(),i()}},[t,l,e,n]);return y.useSyncExternalStore(d,u,u)}function sa(e,t,n,r,i,a){return oa(e,t,n,r,i===void 0?Object.is:i,a)}function ca(e,t){if(e.messageOrder.length===0)return Qi;if(t&&t.length>0){let n=!0,r=0;for(let i of e.messageOrder){let a=e.messagesByID[i];if(a){if(r>=t.length||t[r]!==a){n=!1;break}r+=1}}if(n&&r===t.length)return t}let n=[];for(let t of e.messageOrder){let r=e.messagesByID[t];r&&n.push(r)}return n}function la(e,t){return e.messageOrder.length===0?t?.resolved===!0?vr({messages:Qi,parts:e.partsByMessageID}):{hasMessages:!1,renderable:!1,missingPartMessageIDs:[]}:vr({messages:ca(e),parts:e.partsByMessageID})}function ua(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=M(t,n).hasSession?.(A(t,e));return la(r,{resolved:i===!0||void 0})},i[0]=t,i[1]=e,i[2]=n,i[3]=a):a=i[3],oa(e,t,n,a,da,r)}function da(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 fa(e,t,n,r){return oa(e,t,n,ma,pa,r)}function pa(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 ma(e){return ca(e)}function ha(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 ga(e,t,n,r){return oa(e,t,n,_a,ha,r)}function _a(e){return e}function va(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=k();if(o){i.push(o.subscribe(A(a.directory,a.sessionID),t));continue}let s=n?.(a.directory);if(!s)continue;let c=Li(a.directory,s);i.push(c.subscribe(A(a.directory,a.sessionID),t))}},s=()=>{a(),o(),t()};o();let c=Mi(s),l=r?.subscribeRebuild?.(s);return()=>{l?.(),c(),a()}}function ya(e,t){return e.length===0?``:e.map(e=>{let n=ja(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 ba(e,t,n){return oa(e,t,n,xa)}function xa(e){return e.messageOrder.length}function Sa(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=M(t,n),a=r.hasSession?.(A(t,e))??r.getTranscript(A(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?M(t,n).subscribe(A(t,e),()=>{r()}):Ca,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 Ca(){}function wa(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=$i,$i;let i=M(t,n),o=r||e,s=i.getParts(A(t,o),e),c=s.length===0?$i: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 Ea;let a=M(t,n);return r?a.subscribe(A(t,r),()=>{i()}):Ta},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 Ta(){}function Ea(){}function Da(e,t,n){let r=(0,Ce.c)(8),i=(0,y.useRef)(ta),a;r[0]!==t||r[1]!==e||r[2]!==n?(a=()=>{if(!e)return i.current!==ta&&(i.current=ta),i.current;let r=M(t,n).getHydrationState?.(A(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 Oa;ia(t,e);let a=M(t,n).subscribe(A(t,e),()=>{r()}),o=Mi(()=>{a(),i.current=ta,aa(t,e),ia(t,e),a=M(t,n).subscribe(A(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 Oa(){}function ka(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),oa(e,t,n,i,Aa)}function Aa(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 ja(e,t,n){if(!t)return[];let r=k();if(r){let n=r.getTranscript(A(e,t));return n.messageOrder.map(e=>n.messagesByID[e]).filter(e=>!!e)}if(!n)return[];let i=Li(e,n).getTranscript(A(e,t));return i.messageOrder.map(e=>i.messagesByID[e]).filter(e=>!!e)}var N=null,Ma=``,Na=null,Pa=new Set,Fa=null,Ia=new Map,La=new Map;function Ra(e,t,n,r){N=t,Fa!==t&&(Fa=null,Ia=new Map,La=new Map),Ma=n,r&&(Na=r)}function za(e,t){Na?.(e,t)}function Ba(){if(!N)throw Error(`ChildStoreManager not initialized — is SyncProvider mounted?`);return N}function Va(e){let t=N;if(!t)return;let n=e||Ma;if(n)return t.getState(n)}function Ha(e){let t=Va(e)?.config;return t&&Object.keys(t).length>0?t:void 0}function Ua(e){return Pa.add(e),()=>{Pa.delete(e)}}function Wa(e,t){if(e)for(let n of Pa)n(e,t)}function Ga(e){return Va(e)?.session??[]}function Ka(){return Array.from(qa().values())}function qa(){let e=N;if(!e)return La;let t=Fa!==e||Ia.size!==e.children.size;for(let[n,r]of e.children)if(Ia.get(n)!==r.getState().session){t=!0;break}if(!t)return La;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 Fa=e,Ia=n,La=r,La}function Ja(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=k();if(N){for(let[i,a]of N.children)if(a.getState().session.some(t=>t.id===e)&&(n??Li(i,a)).hasSession?.(A(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 Ya(e,t){if(!e)return[];try{let n=k(),r=t??Ma;if(n){let t=n.getTranscript(A(r,e));return t.messageOrder.map(e=>t.messagesByID[e]).filter(e=>!!e)}if(N){let t=N.getChild(r);if(t){let n=Li(r,t).getTranscript(A(r,e));return n.messageOrder.map(e=>n.messagesByID[e]).filter(e=>!!e)}}}catch{}return[]}function Xa(e,t){if(!e)return[];try{let n=k(),r=t??Ma;if(n)return[...n.getParts(A(r,e),e)];if(N){let t=N.getChild(r);if(t)return[...Li(r,t).getParts(A(r,e),e)]}}catch{}return[]}function Za(e,t){return Va(t)?.session_status[e]}var P=e=>{if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0},Qa=`default`;function $a(e){let t=P(e);if(t&&t!==Qa)return t}function eo(e){let t=e?.model;return P(t?.id)??P(t?.modelID)}function to(e){let t=e?.model;return P(t?.providerID)}function no(e){let t=e?.model;return $a(t?.variant)}function ro(e){let t=$a(e.variant);return{id:e.modelID.trim(),providerID:e.providerID.trim(),...t?{variant:t}:{}}}function io(e,t,n){let r=P(n.providerID),i=P(n.modelID);if(!r||!i)return{agent:P(n.agent)};let a=(Va(t)?.session??Ka()).find(t=>t.id===e),o=ro({providerID:r,modelID:i,variant:n.variant}),s=eo(a),c=to(a),l=no(a),u=$a(o.variant),d=!a||!s||!c||c!==o.providerID||s!==o.id||l!==u,f=P(n.agent),p=P(a?.agent);return{model:d?o:void 0,agent:f&&p!==f?f:void 0}}function ao(e,t,n){if(e&&!(!n.model&&!n.agent))try{let r=Ba(),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 oo=new Set([`image/heic`,`image/heif`]),so=!1,co=()=>{let e=globalThis.window?.Capacitor;return e&&typeof e==`object`?e:null},lo=e=>oo.has((e.type||``).toLowerCase()),uo=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)},fo=(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})},po=async e=>{if(!lo(e)||so)return null;let t=co();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 uo(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 fo(t.data,r)}catch(e){return so=!0,console.warn(`Native HEIC transcode failed`,e),null}},mo=e=>e.trim().toLowerCase(),ho=e=>e.source===`local`||e.source===`server`||e.source===`vscode`,go=(e,t)=>{if(!e||!e.includes(`[`)||t.length===0)return[];let n=new Set(t.map(mo)),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(mo(i))&&r.push({start:t,end:a+1})}i=a+1}return r},_o=(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}},vo=(e,t,n,r)=>{let i=go(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}=_o(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}},yo=new Set([`image`,`screenshot`,`screen-shot`,`clipboard`,`pasted-image`,`pastedimage`,`untitled`,`unknown`,`file`,`blob`]),bo={"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`},xo=e=>e.trim().toLowerCase(),So=e=>e.charCodeAt(0)<32||`<>:"/\\|?*[]`.includes(e),Co=e=>{let t=e.replace(/\\/g,`/`).split(`/`).pop()??``;return Array.from(t).map(e=>So(e)?`-`:e).join(``).replace(/\s+/g,` `).replace(/-+/g,`-`).trim()},wo=e=>bo[e?.trim().toLowerCase()??``]??`png`,To=e=>{let t=Co(e.name),n=wo(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}},Eo=e=>{let{base:t}=To({name:e}),n=t.trim().toLowerCase().replace(/[\s_]+/g,`-`).replace(/-+/g,`-`).replace(/^-|-$/g,``);if(yo.has(n))return!0;let r=n.replace(/-\(\d+\)$/g,``);return r!==n&&yo.has(r)?!0:/^(image|file|unknown|untitled|blob)-\d+$/.test(n)},Do=(e,t)=>`${e}.${t}`,Oo=(e,t,n)=>{let r=Do(e,t);if(!n.has(xo(r)))return r;for(let r=2;r<2**53-1;r+=1){let i=Do(`${e}-${r}`,t);if(!n.has(xo(i)))return i}return Do(`${e}-${Date.now()}`,t)},ko=(e,t)=>{for(let n=1;n<2**53-1;n+=1){let r=Do(`image-${n}`,e);if(!Array.from(t).some(e=>e.startsWith(`image-${n}.`))&&!t.has(xo(r)))return r}return Do(`image-${Date.now()}`,e)},Ao=(e,t)=>{let n=new Set(t.map(xo));return e.map(e=>{let{base:t,ext:r}=To(e),i=Eo(Do(t,r))?ko(r,n):Oo(t,r,n);return n.add(xo(i)),i})},jo=e=>e.map(e=>ie(e)).join(` `),Mo=(e,t,n)=>{if(t===n)return[];let r=[];for(let i of e){let e=[ie(i),`[${i}]`],a=e.some(e=>t.includes(e)),o=e.some(e=>n.includes(e));a&&!o&&r.push(i)}return r},No=(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}},Po=(e,t,n)=>{if(e===t||n.length===0)return null;let r=[...n],i=No(e,t);if(i){let t=Go(e,r,{key:`Backspace`,selectionStart:i.start,selectionEnd:i.end});if(t)return t}let a=Mo(r,e,t);return a.length===0?null:{text:t,caret:t.length,removedFilenames:a}},Fo=e=>e.replaceAll(`[${te}`,`[`),Io=/\.(?:png|jpe?g|gif|webp|svg|avif|bmp|heic|heif|tiff?)$/i,Lo=e=>{let t=e.trim();return t.startsWith(`/`)||/^[A-Za-z]:[\\/]/.test(t)||t.startsWith(`\\\\`)},Ro=(e,t)=>{let n=e;for(let e of t){let t=e.filename.trim(),r=e.path.trim();if(!t||!r||t===r||Lo(t)||!Io.test(t)&&!Io.test(r))continue;let i=`[${r}]`;n=n.split(ie(t)).join(i).split(`[${t}]`).join(i)}return n},zo=(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(ie(e.filename)).join(r).split(`[${e.filename}]`).join(r)}return n},Bo=e=>e.mime===`text/plain`&&typeof e.filename==`string`&&/:\d+(?:-\d+)?$/.test(e.filename),Vo=`application/x-directory`,Ho=e=>typeof e==`string`&&e.trim().toLowerCase()===`application/x-directory`,Uo=e=>typeof e==`string`&&/[/\\]$/.test(e.trim()),Wo=(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}},Go=(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?Wo(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=go(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())}},F=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}},Ko=`file://`,qo=e=>{let t=e.trim();if(t.toLowerCase().startsWith(Ko))return t;let n=me(t).split(`/`).map(e=>/^[A-Za-z]:$/.test(e)?e:encodeURIComponent(e)).join(`/`);return/^[A-Za-z]:/.test(n)?`${Ko}/${n}`:`${Ko}${n}`},Jo=e=>{let t=e.trim();if(!t.toLowerCase().startsWith(Ko))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},Yo=async e=>[...new Uint8Array(await crypto.subtle.digest(`SHA-256`,await e.arrayBuffer()))].map(e=>e.toString(16).padStart(2,`0`)).join(``),Xo=e=>typeof e==`object`&&!!e&&!Array.isArray(e),Zo=async e=>{let t;try{t=await e.json()}catch{throw new F(e.status,`unavailable`)}if(!Xo(t)||typeof t.path!=`string`||!t.path)throw new F(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:qo(t.path),mime:n,size:r,sha256:i}},Qo=e=>{let t=typeof crypto.randomUUID==`function`?crypto.randomUUID():`${Date.now().toString(36)}-${Math.random().toString(36).slice(2,10)}`,n=e?.replace(/[^a-z0-9._-]+/gi,`-`).replace(/^-+|-+$/g,``).slice(0,32);return n?`att-${t}-${n}`:`att-${t}`},$o=(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}},es=e=>e.startsWith(`data:`)||e.startsWith(`blob:`),ts=async e=>{let t=e.mime||e.body.type||`application/octet-stream`,n=e.body.type===t?e.body:new Blob([e.body],{type:t});if(!Number.isSafeInteger(n.size)||n.size<0||n.size>26214400)throw new F(413,`too-large`);let r=await Yo(n),i=Qo(e.filename),a;try{a=await u(`/api/fs/prompt-attachments/${encodeURIComponent(i)}`,{method:`PUT`,headers:{"Content-Type":t,"Content-Length":String(n.size),"X-OpenChamber-Content-Length":String(n.size),"X-OpenChamber-Sha256":r,"X-OpenChamber-Mime":t,...e.filename?{"X-OpenChamber-Filename":encodeURIComponent(e.filename)}:{}},body:n,signal:e.signal})}catch{throw new F(0,`unavailable`)}if(a.status===413)throw new F(413,`too-large`);if(!a.ok)throw new F(a.status,a.status>=500||a.status===0?`unavailable`:`rejected`);let o=await Zo(a);if(o.size!==n.size)throw new F(a.status,`unavailable`);return{...o,mime:t}},ns=500,rs=()=>{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}},is=()=>rs(),I=(e,t)=>{if(!rs())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>ns&&window.__OPENCHAMBER_STARTUP_TRACE__.splice(0,window.__OPENCHAMBER_STARTUP_TRACE__.length-ns)};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 as=async(e,t,n)=>{let r=typeof performance<`u`?performance.now():Date.now();I(`${e}:start`,n);try{let n=await t(),i=typeof performance<`u`?performance.now():Date.now();return I(`${e}:end`,{durationMs:Math.round(i-r)}),n}catch(t){let n=typeof performance<`u`?performance.now():Date.now();throw I(`${e}:error`,{durationMs:Math.round(n-r),error:t instanceof Error?t.message:String(t)}),t}},os=e=>({kind:`session-inbox`,requestID:e.requestID,queueItemID:e.id,operationID:e.id,messageID:e.id,content:e.payload.text,createdAt:e.timeCreated,delivery:e.delivery,attachmentCount:Array.isArray(e.payload.files)?e.payload.files.length:0}),ss=[],cs=[],L=new Map,ls=512,us=new Set,ds=(e,t)=>`${e}\0${t}`;function fs(e,t){!e||!t||us.add(ds(e,t))}function ps(e,t){return us.has(ds(e,t))}function ms(e){let t=`${e}\0`,n=[];for(let e of us)e.startsWith(t)&&n.push(e.slice(t.length));return n}function hs(e,t){if(e){if(t){us.delete(ds(e,t));return}for(let t of ms(e))us.delete(ds(e,t))}}var gs=0;function _s(){return gs}function R(){return{transportIdentity:o(),generation:s()}}function vs(e){return o()===e.transportIdentity&&s()===e.generation}function ys(e,t,n){return`${n?.transportIdentity??o()}\0${n?.generation??s()}\0${e}\0${t}`}function bs(e=R()){if(L.size===0)return;let t=`${e.transportIdentity}\0${e.generation}\0`;for(let e of L.keys())e.startsWith(t)||L.delete(e);for(;L.size>ls;){let e=L.keys().next().value;if(e===void 0)break;L.delete(e)}}function xs(e,t,n,r){let i=r??R();bs(i),gs+=1,L.set(ys(e,t,i),{kind:n,mark:gs})}function Ss(e,t,n){let r=n?.scope;bs(r??R());let i=L.get(ys(e,t,r));if(!i)return!0;let a=n?.startedMark;return a!==void 0&&i.mark>a?!1:(L.delete(ys(e,t,r)),!0)}function Cs(e,t,n){return bs(n??R()),L.get(ys(e,t,n))?.kind??null}var ws=(e,t,n)=>{let r={...e};return n.length===0?delete r[t]:r[t]=n,r},z=oe((e,t)=>({bySession:{},remember(t){return!Cs(t.sessionID,t.id)&&(e(e=>{let n=e.bySession[t.sessionID]??[],r=n.findIndex(e=>e.id===t.id),i={...t,requestID:t.id,wasQueued:t.delivery===`queue`||n[r]?.wasQueued===!0};if(r>=0){let a=n.slice();return a[r]=i,{bySession:{...e.bySession,[t.sessionID]:a}}}return{bySession:{...e.bySession,[t.sessionID]:[...n,i]}}}),!0)},forget(t,n,r){r===`consumed`&&ps(t,n)||(r&&xs(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:ws(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)&&!e.wasQueued&&!ps(t,e.id)).map(e=>e.id));if(i.size===0)return e;for(let e of i)xs(t,e,`consumed`);return{bySession:ws(e.bySession,t,n.filter(e=>!i.has(e.id)))}})},replaceFromAuthority(t,n,r){let i=r?.startedMark,a=[];for(let e of n)Ss(t,e.id,{startedMark:i})&&a.push(e);e(e=>{let n=new Map((e.bySession[t]??[]).map(e=>[e.id,e])),r=a.map(e=>({...e,requestID:e.id,wasQueued:e.delivery===`queue`||n.get(e.id)?.wasQueued===!0}));return{bySession:ws(e.bySession,t,r)}})},updateDelivery(t,n,r){e(e=>{if(Cs(t,n))return e;let i=e.bySession[t];if(!i?.length)return e;let a=i.findIndex(e=>e.id===n);if(a<0||i[a].delivery===r)return e;let o=i.slice();return o[a]={...i[a],delivery:r,wasQueued:r===`queue`||i[a].wasQueued},{bySession:{...e.bySession,[t]:o}}})},list(e){return t().bySession[e]??ss}}));function Ts(e){return z.getState().remember(e)}function Es(e,t){return Ss(e.sessionID,e.id,t)?z.getState().remember(e):!1}function Ds(e,t,n){z.getState().forget(e,t,n)}function Os(e,t){z.getState().forgetPromoted(e,t)}function ks(e,t,n){z.getState().replaceFromAuthority(e,t,n)}function As(e,t,n){z.getState().updateDelivery(e,t,n)}function js(e){return!!e&&typeof e==`object`&&e.kind===`session-inbox`}var Ms=e=>e?e.toLowerCase().includes(`application/json`):!1,Ns=e=>e?e.toLowerCase().includes(`text/html`):!1;function B(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}function V(e){return typeof e==`string`&&e.length>0?e:void 0}function Ps(e){return typeof e==`number`&&Number.isFinite(e)?e:void 0}function Fs(e,t,n){let r=n?`: ${n}`:``,i=Error(`${e} (${t})${r}`);throw i.status=t,i}async function Is(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 Ls(e){return e?{directory:e}:{}}function Rs(e,t){let n=`/api/session/${encodeURIComponent(e)}/inbox`;return t?`${n}/${encodeURIComponent(t)}`:n}async function zs(e,t){let n=e.headers.get(`content-type`);if(Ns(n))throw Error(`${t}: unexpected HTML response`);let r;try{r=await e.json()}catch{throw Error(`${t}: malformed JSON`)}if(!Ms(n)&&r==null)throw Error(`${t}: empty response`);return r}function Bs(e){let t=B(e)?e:null,n=t&&B(t.data)?t.data:t;if(!n)throw Error(`session prompt: expected inbox item`);let r=V(n.type);if(r&&r!==`user`)throw Error(`session prompt: expected user inbox item, got ${r}`);let i=V(n.id),a=V(n.sessionID);if(!i||!a)throw Error(`session prompt: inbox item missing id`);let o=B(n.payload)?n.payload:{},s=n.delivery===`queue`?`queue`:`steer`,c=B(n.time)?n.time:null;return{id:i,sessionID:a,timeCreated:Ps(n.timeCreated)??Ps(c?.created)??Date.now(),type:`user`,delivery:s,payload:{text:V(o.text)??V(n.text)??``,...o.files===void 0?{}:{files:o.files},...o.agents===void 0?{}:{agents:o.agents},...o.skills===void 0?{}:{skills:o.skills},...B(o.metadata)?{metadata:o.metadata}:{}}}}function Vs(e){let t=B(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)B(e)&&(e.type&&e.type!==`user`||r.push(Bs(e)));return r}function Hs(e){return{runtimeKey:c(),generation:s(),directory:e,overlay:R()}}function H(e){return c()===e.runtimeKey&&s()===e.generation&&vs(e.overlay)}function Us(e){let t=Error(`${e}: runtime switched`);throw t.name=`RuntimeGenerationMismatchError`,t}async function Ws(e){let t=e.commit??Hs(e.directory);H(t)||Us(`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(H(t)||Us(`session prompt`),!i.ok){let e=await Is(i);Fs(`Failed to send message`,i.status,e)}let a=Bs(await zs(i,`session prompt`));return H(t)||Us(`session prompt`),e.delivery===`queue`&&a.delivery!==`queue`?(Ts({...a,delivery:`queue`}),As(a.sessionID,a.id,`steer`)):Ts(a),a}function Gs(e){let t=e?.status;return typeof t!=`number`||!Number.isFinite(t)||t===408||t===429?!1:t>=400&&t<500}async function Ks(e){let t=e.inputID.trim();if(!t)return{status:`unknown`};let n=e.commit??Hs(e.directory??``);if(!H(n))return{status:`unknown`};try{let r=await Js({sessionID:e.sessionID,directory:n.directory||e.directory,signal:e.signal});if(!H(n)||!r.current)return{status:`unknown`};let i=r.items.find(e=>e.id===t);if(i)return Es(i,{startedMark:r.startedMark})?{status:`pending`,item:i}:{status:`unknown`}}catch{}if(!H(n))return{status:`unknown`};try{let r=await Qe({sessionID:e.sessionID,directory:n.directory||e.directory||``,limit:40,...e.signal?{signal:e.signal}:{}});if(!H(n))return{status:`unknown`};if(r.records.some(e=>e?.info?.id===t))return Ds(e.sessionID,t,`consumed`),{status:`promoted`,id:t}}catch{}return{status:`unknown`}}function qs(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=V(n.sessionID),i=V(n.inboxID)??V(n.id);if(!r||!i)return!1;if(t===`session.inbox.enqueued`){let e=n.item,t=B(e)?V(e.type):void 0;if(t&&t!==`user`)return!1;try{return Es(Bs(B(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 Ds(r,i,`cancelled`),!0;if(t===`session.inbox.delivered`)return Ds(r,i,`consumed`),!0;if(t===`session.inbox.delivery.changed`){let e=n.delivery===`queue`?`queue`:n.delivery===`steer`?`steer`:null;return e?(As(r,i,e),!0):!1}return!1}async function Js(e){let t=R(),n=_s(),r=await u(Rs(e.sessionID),{method:`GET`,query:Ls(e.directory),signal:e.signal});r.ok||Fs(`session inbox`,r.status,await Is(r));let i=await zs(r,`session inbox`),a=Vs(i),o=vs(t);return o&&ht(e.sessionID,mt(i)),{items:a,startedMark:n,scope:t,current:o}}async function Ys(e){let t=R(),n=await u(Rs(e.sessionID,e.inboxID),{method:`PATCH`,headers:{"Content-Type":`application/json`},query:Ls(e.directory),body:JSON.stringify({delivery:e.delivery}),signal:e.signal});n.ok||Fs(e.delivery===`steer`?`session inbox steer`:`session inbox queue`,n.status,await Is(n)),vs(t)&&(Cs(e.sessionID,e.inboxID)||As(e.sessionID,e.inboxID,e.delivery))}async function Xs(e){await Ys({...e,delivery:`steer`})}async function Zs(e){await Ys({...e,delivery:`queue`})}async function Qs(e){let t=await u(Rs(e.sessionID,e.inboxID),{method:`DELETE`,query:Ls(e.directory),signal:e.signal});t.ok||Fs(`session inbox cancel`,t.status,await Is(t))}function $s(e,t,n){ks(e,t,n)}async function ec(e){let t=R();if(await Qs(e),!vs(t))return{overlay:z.getState().list(e.sessionID),transcriptRows:[]};Ds(e.sessionID,e.inboxID,`cancelled`);try{let n=await Js({sessionID:e.sessionID,directory:e.directory,signal:e.signal});if(!vs(t)||!n.current)return{overlay:z.getState().list(e.sessionID),transcriptRows:[]};$s(e.sessionID,n.items,{startedMark:n.startedMark})}catch{}return{overlay:z.getState().list(e.sessionID),transcriptRows:[]}}async function tc(e){let t=`/api/session/${encodeURIComponent(e.sessionID)}/interrupt`,n={};e.directory&&(n.directory=e.directory);let r=await u(t,{method:`POST`,query:n,signal:e.signal});if(!r.ok)throw Error(`Session interrupt failed (${r.status})`)}async function nc(e){return e.promotedIDs.includes(e.optimisticID)?`confirmed`:(e.removeOptimistic(e.optimisticID),await e.refreshFromAuthority(),`refreshed`)}var rc=`session-revert-busy`,ic=e=>e?e.toLowerCase().includes(`text/html`):!1;function ac(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}function U(e){return typeof e==`string`&&e.length>0?e:void 0}function oc(e,t,n){if(t===409)throw sc();let r=n?`: ${n}`:``,i=Error(`${e} (${t})${r}`);throw i.status=t,i}function sc(){let e=Error(rc);return e.name=`SessionRevertBusyError`,e}function cc(e){if(!e||typeof e!=`object`)return!1;let t=e;return t.name===`SessionRevertBusyError`||t.message===`session-revert-busy`}async function lc(e){try{return(await e.text()).trim()}catch{return``}}async function uc(e,t){if(ic(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 dc(e){return e?{directory:e}:{}}function fc(e,t){return`/api/session/${encodeURIComponent(e)}/revert/${t}`}function pc(e){let t=ac(e)?e:null,n=t&&ac(t.data)?t.data:t;if(!n)throw Error(`session revert: expected revert payload`);let r=U(n.messageID);if(!r)throw Error(`session revert: missing messageID`);let i=Array.isArray(n.files)?n.files.flatMap(e=>{if(!ac(e))throw Error(`session revert: invalid file diff`);let t=U(e.file)??U(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,...U(n.partID)?{partID:U(n.partID)}:{},...U(n.snapshot)?{snapshot:U(n.snapshot)}:{},...i?{files:i}:{}}}function mc(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 hc(e){let t=await u(fc(e.sessionID,`stage`),{method:`POST`,headers:{"Content-Type":`application/json`},query:dc(e.directory),body:JSON.stringify({messageID:e.messageID,files:e.files!==!1}),signal:e.signal});return t.ok||oc(`session revert stage`,t.status,await lc(t)),pc(await uc(t,`session revert stage`))}async function gc(e){let t=await u(`/api/session/${encodeURIComponent(e.sessionID)}/revert`,{method:`DELETE`,query:dc(e.directory),signal:e.signal});t.ok||oc(`session revert clear`,t.status,await lc(t))}async function _c(e){let t=await u(fc(e.sessionID,`commit`),{method:`POST`,query:dc(e.directory),signal:e.signal});t.ok||oc(`session revert commit`,t.status,await lc(t))}var vc=e=>e?e.toLowerCase().includes(`text/html`):!1;function yc(e,t,n){let r=n?`: ${n}`:``,i=Error(`${e} (${t})${r}`);throw i.status=t,i}async function bc(e){try{return(await e.text()).trim()}catch{return``}}function xc(e){return e?{directory:e}:{}}function Sc(e,t){return`/api/session/${encodeURIComponent(e)}/permission/${encodeURIComponent(t)}/reply`}async function Cc(e){let t=await u(Sc(e.sessionID,e.requestID),{method:`POST`,headers:{"Content-Type":`application/json`},query:xc(e.directory),body:JSON.stringify({decision:e.reply,...e.message?{message:e.message}:{}}),signal:e.signal});if(t.ok||yc(`session permission reply`,t.status,await bc(t)),t.status!==204&&vc(t.headers.get(`content-type`)))throw Error(`session permission reply: unexpected HTML response`)}function wc(e){let t=Error(`${e} is not available on OpenCode v2`);return t.name=`V2CapabilityUnavailableError`,t}function Tc(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 Ec(e){return{id:e.id,worktree:e.canonical,canonical:e.canonical,sandboxes:e.sandboxes,name:e.name}}function Dc(e){return e.worktree||e.canonical||``}function Oc(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 kc(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 Ac(e){return!!e&&typeof e==`object`&&!Array.isArray(e)&&e.kind===`question`}function jc(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 Mc(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 Nc(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}:{}})):Mc(e),n=jc(e);return{id:e.id,sessionID:e.sessionID,questions:t,...n?{tool:n}:{}}}function Pc(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 Fc=3,Ic=3e4,Lc=32e3,Rc=36e5,zc=6e5,Bc=new Set([429,502,503,504]),Vc=new Map;function Hc(){let e=Date.now();for(let[t,n]of Vc)n.consecutiveErrors===0&&e-n.lastErrorAt>Rc&&Vc.delete(t)}typeof setInterval<`u`&&setInterval(Hc,zc).unref?.();function Uc(e){let t=Vc.get(e);return t||(t={consecutiveErrors:0,lastErrorAt:0,circuitOpen:!1,circuitOpenAt:0,circuitCooldownMs:Ic},Vc.set(e,t)),t}function Wc(e){if(!e)return;let t=Vc.get(e);t&&(t.consecutiveErrors=0,t.lastErrorAt=0)}function Gc(e,t){if(!e)return;let n=Uc(e);n.consecutiveErrors+=1,n.lastErrorAt=Date.now(),Kc(t)&&n.consecutiveErrors>=Fc&&(n.circuitOpen=!0,n.circuitOpenAt=Date.now(),console.warn(`[provider-tracker] Circuit opened for ${e} after ${n.consecutiveErrors} consecutive errors`))}function Kc(e){return e!==void 0&&Bc.has(e)}function qc(e){let t=Vc.get(e);return t?.circuitOpen?Date.now()-t.circuitOpenAt>=t.circuitCooldownMs?(t.circuitOpen=!1,t.consecutiveErrors=0,t.circuitCooldownMs=Math.min(t.circuitCooldownMs*2,Lc*4),!1):!0:!1}function Jc(e){if(!(!e||!qc(e)))throw Error(`Provider ${e} is temporarily unavailable after repeated errors. Please retry shortly.`)}var Yc=`/api`,Xc=1e4,Zc=4e3,Qc=3e3,$c=1e3,el=12e3;function W(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 tl(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 nl(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 rl(e){let t=e.replace(/\/+$/,``);if(t.endsWith(`/api`)){let e=t.slice(0,-4);if(e.length>0)return e}return ol(cl()||`/`)}function il(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 al=/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//,ol=e=>{let t=typeof e==`string`&&e.trim().length>0?e.trim():`/api`;if(al.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}},sl=()=>{try{return a().api(`/api`)}catch{return null}},cl=()=>{try{return a().api(`/`)}catch{return null}},ll=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)}},ul=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)}}},dl=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}}},fl=e=>dl(de.make({baseUrl:e.baseUrl,...e.headers?{headers:e.headers}:{},fetch:u})),pl=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),ml=e=>{let t=[];for(let n of e){if(!pl(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=Jo(r).trim();i&&t.push({filename:e,path:i})}return t},hl=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=>Ro(e,ml([...r,...i.flatMap(e=>e.files)]));if(e.prefaceText&&e.prefaceText.trim()&&n.push({type:`text`,text:a(e.prefaceText),synthetic:e.prefaceTextSynthetic!==!1}),e.text&&e.text.trim()&&n.push({type:`text`,text:a(e.text)}),n.push(...r),i.length>0)for(let e of i){if(e.text&&e.text.trim()){let t={type:`text`,text:a(e.text)};e.synthetic&&(t.synthetic=!0),n.push(t)}n.push(...e.files)}if(e.agentMentions&&e.agentMentions.length>0)for(let t of e.agentMentions){if(!t?.name)continue;let e={type:`agent`,name:t.name};t.source&&(e.source=t.source),n.push(e)}if(n.length===0)throw Error(`Message must have at least one part (text or file)`);return n},gl=e=>e.replace(/\\/g,`/`),_l=400,vl=()=>{let e=d();return e&&e.runtime?.isDesktop&&e.files?e.files:null},q=new class{client;baseUrl;scopedClients=new Map;currentDirectory=void 0;directoryContextQueue=Promise.resolve();listDirectoryInFlight=new Map;configProvidersInFlight=new Map;listAgentsInFlight=new Map;configInFlight=new Map;configCache=new Map;configCacheGeneration=0;listDirectoryCache=new Map;healthInFlight=new Map;healthCache=new Map;healthCacheGeneration=0;sessionBoundaryQueues=new Map;constructor(e=Yc){let t=sl()||e;this.baseUrl=ol(t),this.client=fl({baseUrl:rl(this.baseUrl)})}getBaseUrl(){return this.baseUrl}reconnectToRuntimeBaseUrl(){let e=ol(sl()||Yc);e!==this.baseUrl&&(this.baseUrl=e,this.client=fl({baseUrl:rl(this.baseUrl)}),this.scopedClients.clear(),this.listDirectoryInFlight.clear(),this.configProvidersInFlight.clear(),this.listAgentsInFlight.clear(),this.clearConfigCache(),this.listDirectoryCache.clear(),this.clearHealthCache())}getSdkClient(){return this.client}getScopedSdkClient(e){return this.getScopedApiClient(e)}getScopedApiClient(e){let t=(this.normalizeCandidatePath(e)??e)||``,n=this.scopedClients.get(t);if(n)return n;let r=fl({baseUrl:rl(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&&I(`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`),ao(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`),ao(e,o||n,{agent:a})}async generateSessionAside(e){let t=typeof e.sessionId==`string`?e.sessionId.trim():``;if(!t)throw Error(`generateSessionAside requires sessionId`);let n=typeof e.prompt==`string`?e.prompt:``,r=this.normalizeCandidatePath(e.directory)??this.currentDirectory??``,i=await this.getScopedSdkClient(r).session.generate({sessionID:t,prompt:n},e.signal?{signal:e.signal}:void 0);if(!i||typeof i.text!=`string`)throw Error(`session.generate returned invalid payload`);return{text:i.text}}async applySendSelection(e,t,n){t.model&&await this.switchSessionModel(e,t.model,n),t.agent&&await this.switchSessionAgent(e,t.agent,n)}async withDirectory(e,t){let n=async()=>{if(e==null)return t();let n=this.currentDirectory,r=this.normalizeCandidatePath(e)??e;this.currentDirectory=r;try{return await t()}finally{this.currentDirectory===r&&(this.currentDirectory=n)}},r=this.directoryContextQueue.then(n,n);return this.directoryContextQueue=r.then(()=>void 0,()=>void 0),r}getApiClient(){return this.client}async getSystemInfo(){let e=new Set,t=t=>{let n=this.normalizeCandidatePath(t);n&&e.add(n)};try{let e=await this.client.location.get(K(this.currentDirectory));e&&(t(e.directory),t(e.project?.directory),t(e.project?.canonical))}catch{}if(!e.size)try{let e=await this.client.location.get(K(this.currentDirectory));t(e?.project?.directory),t(e?.project?.canonical)}catch{}if(!e.size)try{(await this.listSessions()).forEach(e=>t(e.directory))}catch{}if(t(this.currentDirectory),typeof window<`u`)try{t(f(`lastDirectory`)),t(f(`homeDirectory`))}catch{}if(!e.size&&typeof process<`u`&&typeof process.cwd==`function`&&t(process.cwd()),!e.size)return{homeDirectory:`/`,username:void 0};let[n]=Array.from(e);return this.deriveHomeDirectory(n)}async probeDirectory(e){let t=this.normalizeCandidatePath(e);if(!t)return!1;try{let e=await this.client.location.get({location:{directory:t}}),n=typeof e?.directory==`string`?e.directory:null;return!!(n&&n.trim().length>0)}catch{return!1}}async listSessions(){let e=await this.client.session.list(this.currentDirectory?{directory:this.currentDirectory}:void 0);return Array.isArray(e.data)?e.data.map(v):[]}async searchSessionsByTitle(e){let t=e.search.trim();if(!t)return[];let n=await this.client.session.list({search:t,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=W(e),n=Error(`session.update partial failure after ${p.join(`,`)}: ${t}`);throw n.name=`SessionUpdatePartialFailureError`,n.cause=e,n.completed=[...p],n};try{if(r&&(await this.client.session.update({sessionID:e,title:t.title}),f(),p.push(`title`),m=v(await this.client.session.get({sessionID:e})),f()),i){let n={patch:t.metadata};o&&(n.directory=o);let r=await u(`${this.baseUrl}/openchamber/sessions/${encodeURIComponent(e)}/metadata`,{method:`PUT`,headers:{Accept:`application/json`,"Content-Type":`application/json`},body:JSON.stringify(n)});if(f(),!r.ok){let e=Error(`session.metadata update failed (${r.status})`);throw e.status=r.status,e}let i=await r.json().catch(()=>null);f(),h=typeof i==`object`&&i&&!Array.isArray(i)&&`metadata`in i&&i.metadata!==null&&typeof i.metadata==`object`&&!Array.isArray(i.metadata)?i.metadata:null,p.push(`metadata`)}if(a){let n=t.time?.archived,r;if(n==null)r=0;else if(typeof n==`number`&&Number.isFinite(n))r=n>0?Math.trunc(n):0;else throw Error(`archivedAt must be a finite number or null`);let i={archivedAt:r};o&&(i.directory=o);let a=await u(`${this.baseUrl}/openchamber/sessions/${encodeURIComponent(e)}/archive`,{method:`PUT`,headers:{Accept:`application/json`,"Content-Type":`application/json`},body:JSON.stringify(i)});if(f(),!a.ok){let e=Error(`session.archive update failed (${a.status})`);throw e.status=a.status,e}let s=await a.json().catch(()=>null);f();let c=typeof s==`object`&&s&&!Array.isArray(s)&&`session`in s?s.session:null;if(!c||typeof c!=`object`||Array.isArray(c))throw Error(`session.archive update failed: empty response`);m=v(c),p.push(`archive`)}return m||(m=await this.getSession(e,n),f()),h&&!a?{...m,metadata:h}:m}catch(e){return g(e)}}async getSessionMessages(e,t){return(await Qe({sessionID:e,directory:this.currentDirectory??``,...typeof t==`number`?{limit:t}:{}})).records}async getSessionDiff(e,t){let n=this.normalizeCandidatePath(e.directory)??this.currentDirectory,r=typeof e.messageID==`string`&&e.messageID.trim().length>0?e.messageID.trim():void 0,i=new URLSearchParams;n&&i.set(`directory`,n),r&&i.set(`messageID`,r);let a=i.toString(),o=await u(`${this.baseUrl}/session/${encodeURIComponent(e.sessionID)}/diff${a?`?${a}`:``}`,{method:`GET`,headers:{Accept:`application/json`},signal:t?.signal});if(!o.ok){let e=Error(`session.diff failed (${o.status})`);throw e.status=o.status,e}let s=await o.json().catch(()=>null),c=typeof s==`object`&&s&&Array.isArray(s.data)?s.data:null;if(!c)throw Error(`session.diff failed: empty response`);return c}async getSessionTodos(e){throw G(`session.todo`)}shouldNormalizeToTextPlain(e){if(!e)return!1;let t=e.toLowerCase();return t.startsWith(`text/`)&&t!==`text/plain`?!0:[`application/json`,`application/xml`,`application/javascript`,`application/typescript`,`application/x-yaml`,`application/yaml`,`application/toml`,`application/x-sh`,`application/x-shellscript`,`application/octet-stream`,`image/svg+xml`].includes(t)}isHeicMime(e){if(!e)return!1;let t=e.toLowerCase();return t===`image/heic`||t===`image/heif`}async convertHeicToJpeg(t){try{let n=$o(t.url,t.mime);if(!n)return t;let r=await po(n)??await(await he(async()=>{let{default:t}=await import(`./vendor-heic2any-CUPf3g2A.js`).then(t=>e(t.t(),1));return{default:t}},__vite__mapDeps([0,1]))).default({blob:n,toType:`image/jpeg`,quality:.9}),i=await new Promise((e,t)=>{let n=new FileReader;n.onload=()=>e(n.result),n.onerror=t,n.readAsDataURL(r)}),a=t.filename;return a&&=a.replace(/\.heic$/i,`.jpg`).replace(/\.heif$/i,`.jpg`),{mime:`image/jpeg`,filename:a,url:i}}catch(e){return console.warn(`Failed to convert HEIC to JPEG:`,e),t}}async normalizeFilePart(e){if(this.isHeicMime(e.mime))return this.convertHeicToJpeg(e);if(!this.shouldNormalizeToTextPlain(e.mime))return e;let t=e.url;if(e.url.startsWith(`data:`)){let n=e.url.indexOf(`,`);if(n!==-1){let r=e.url.substring(5,n),i=e.url.substring(n);t=`data:${r.replace(/^[^;,]+/,`text/plain`)}${i}`}}return{mime:`text/plain`,filename:e.filename,url:t}}async toNormalizedFilePartInput(e,t){let n=t?.generation??s(),r=t?.runtimeKey??c(),i=await this.normalizeFilePart(e);this.assertCapturedRuntime(n,r,`prompt attachment normalize`);let a=i.url;if(es(a)){let e=$o(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 ts({body:e,mime:i.mime,filename:i.filename});this.assertCapturedRuntime(n,r,`prompt attachment upload`),a=t.url}return{...e.id?{id:e.id}:{},type:`file`,mime:i.mime,filename:i.filename,url:a}}async buildMessageParts(e,t){let n=t?.generation??s(),r=t?.runtimeKey??c();return hl(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??h(`msg`),a=this.normalizeCandidatePath(e.directory??null)??this.currentDirectory,o=Hs(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(),H(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),Jc(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(`
|