@neuralnomads/codenomad-dev 0.20.0-dev-20260922-e68ac524 → 0.20.0-dev-20260922-0a31a8b3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (112) hide show
  1. package/dist/opencode/compatibility/location.js +11 -0
  2. package/dist/opencode/compatibility/location.js.map +1 -1
  3. package/dist/opencode/compatibility/location.test.js +21 -0
  4. package/dist/opencode/compatibility/location.test.js.map +1 -1
  5. package/dist/server/__tests__/instance-proxy.test.js +27 -0
  6. package/dist/server/__tests__/instance-proxy.test.js.map +1 -1
  7. package/dist/server/http-server.js +1 -0
  8. package/dist/server/http-server.js.map +1 -1
  9. package/dist/workspaces/__tests__/git-common-directory.test.js +11 -0
  10. package/dist/workspaces/__tests__/git-common-directory.test.js.map +1 -1
  11. package/dist/workspaces/git-process.js +16 -6
  12. package/dist/workspaces/git-process.js.map +1 -1
  13. package/dist/workspaces/git-status.js +32 -38
  14. package/dist/workspaces/git-status.js.map +1 -1
  15. package/dist/workspaces/git-status.test.js +28 -1
  16. package/dist/workspaces/git-status.test.js.map +1 -1
  17. package/package.json +1 -1
  18. package/public/assets/App-CkXPZUpS.js +51 -0
  19. package/public/assets/App-CkXPZUpS.js.map +1 -0
  20. package/public/assets/{FilesTab-CznSFRW_.js → FilesTab-C4o3_OHJ.js} +3 -3
  21. package/public/assets/{FilesTab-CznSFRW_.js.map → FilesTab-C4o3_OHJ.js.map} +1 -1
  22. package/public/assets/{GitChangesTab-DLtyzpX0.js → GitChangesTab-ClsL5QrZ.js} +3 -3
  23. package/public/assets/{GitChangesTab-DLtyzpX0.js.map → GitChangesTab-ClsL5QrZ.js.map} +1 -1
  24. package/public/assets/{SplitFilePanel-BHkyIER4.js → SplitFilePanel-C_dI-kjb.js} +2 -2
  25. package/public/assets/{SplitFilePanel-BHkyIER4.js.map → SplitFilePanel-C_dI-kjb.js.map} +1 -1
  26. package/public/assets/{StatusTab-BB3L4UEF.js → StatusTab-_gvxV-qq.js} +2 -2
  27. package/public/assets/{StatusTab-BB3L4UEF.js.map → StatusTab-_gvxV-qq.js.map} +1 -1
  28. package/public/assets/{align-justify-BGcr8Y3G.js → align-justify-CboH-c3n.js} +2 -2
  29. package/public/assets/{align-justify-BGcr8Y3G.js.map → align-justify-CboH-c3n.js.map} +1 -1
  30. package/public/assets/{bundle-full-CwHbX2Tz.js → bundle-full-CL2fEEcE.js} +2 -2
  31. package/public/assets/{bundle-full-CwHbX2Tz.js.map → bundle-full-CL2fEEcE.js.map} +1 -1
  32. package/public/assets/{client-state-CjVIIkWh.js → client-state-BB0go4Xe.js} +2 -2
  33. package/public/assets/{client-state-CjVIIkWh.js.map → client-state-BB0go4Xe.js.map} +1 -1
  34. package/public/assets/{diff-viewer-FNBCogHl.js → diff-viewer-C-B3vwne.js} +2 -2
  35. package/public/assets/{diff-viewer-FNBCogHl.js.map → diff-viewer-C-B3vwne.js.map} +1 -1
  36. package/public/assets/index-4LEntpq0.js +2 -0
  37. package/public/assets/index-4LEntpq0.js.map +1 -0
  38. package/public/assets/index-4mzZPz2j.css +1 -0
  39. package/public/assets/index-B2wje_CF.js +2 -0
  40. package/public/assets/index-B2wje_CF.js.map +1 -0
  41. package/public/assets/index-BDbkD8FO.js +2 -0
  42. package/public/assets/index-BDbkD8FO.js.map +1 -0
  43. package/public/assets/index-BbUJLdzG.js +2 -0
  44. package/public/assets/index-BbUJLdzG.js.map +1 -0
  45. package/public/assets/index-Bdh_-CtJ.js +2 -0
  46. package/public/assets/index-Bdh_-CtJ.js.map +1 -0
  47. package/public/assets/index-C9Jqb-tF.js +2 -0
  48. package/public/assets/index-C9Jqb-tF.js.map +1 -0
  49. package/public/assets/index-CIT8ANJK.js +3 -0
  50. package/public/assets/index-CIT8ANJK.js.map +1 -0
  51. package/public/assets/index-CheaKG9m.js +2 -0
  52. package/public/assets/{index-C2jBtFkI.js.map → index-CheaKG9m.js.map} +1 -1
  53. package/public/assets/index-DbnGqvtc.js +2 -0
  54. package/public/assets/index-DbnGqvtc.js.map +1 -0
  55. package/public/assets/index-DhOvQD1j.js +2 -0
  56. package/public/assets/index-DhOvQD1j.js.map +1 -0
  57. package/public/assets/{index-CLgpBTF6.js → index-DrTKEExa.js} +2 -2
  58. package/public/assets/{index-CLgpBTF6.js.map → index-DrTKEExa.js.map} +1 -1
  59. package/public/assets/index-Gk3Kwcb2.js +2 -0
  60. package/public/assets/index-Gk3Kwcb2.js.map +1 -0
  61. package/public/assets/{loading-D8BcUQaM.js → loading-Cs2CSqHx.js} +2 -2
  62. package/public/assets/{loading-D8BcUQaM.js.map → loading-Cs2CSqHx.js.map} +1 -1
  63. package/public/assets/main-DAwgVcRN.js +42 -0
  64. package/public/assets/main-DAwgVcRN.js.map +1 -0
  65. package/public/assets/{markdown-CRPEbAqL.js → markdown-DheZTu4V.js} +4 -4
  66. package/public/assets/{markdown-CRPEbAqL.js.map → markdown-DheZTu4V.js.map} +1 -1
  67. package/public/assets/monaco-viewer-BtzCmjFO.js +27 -0
  68. package/public/assets/monaco-viewer-BtzCmjFO.js.map +1 -0
  69. package/public/assets/{startup-state-settings-card-CHqS2Pmg.js → startup-state-settings-card-CmMXcnR-.js} +2 -2
  70. package/public/assets/{startup-state-settings-card-CHqS2Pmg.js.map → startup-state-settings-card-CmMXcnR-.js.map} +1 -1
  71. package/public/assets/{terminal-square-DhmNJqNG.js → terminal-square-ypyAq6Ni.js} +2 -2
  72. package/public/assets/{terminal-square-DhmNJqNG.js.map → terminal-square-ypyAq6Ni.js.map} +1 -1
  73. package/public/assets/{todo-DXJ5kP_Z.js → todo-Cgy3-kyM.js} +2 -2
  74. package/public/assets/{todo-DXJ5kP_Z.js.map → todo-Cgy3-kyM.js.map} +1 -1
  75. package/public/assets/{tool-call-Bjo9DalZ.js → tool-call-0UMa6igS.js} +17 -17
  76. package/public/assets/{tool-call-Bjo9DalZ.js.map → tool-call-0UMa6igS.js.map} +1 -1
  77. package/public/assets/{unified-picker-CxrTM_tY.js → unified-picker-C-lhbMQ0.js} +2 -2
  78. package/public/assets/{unified-picker-CxrTM_tY.js.map → unified-picker-C-lhbMQ0.js.map} +1 -1
  79. package/public/assets/{wrap-text-BznZeD4J.js → wrap-text-BjODGwnM.js} +2 -2
  80. package/public/assets/{wrap-text-BznZeD4J.js.map → wrap-text-BjODGwnM.js.map} +1 -1
  81. package/public/index.html +4 -4
  82. package/public/loading.html +4 -4
  83. package/public/sw.js +1 -1
  84. package/public/sw.js.map +1 -1
  85. package/public/assets/App-BSkmbNUC.js +0 -51
  86. package/public/assets/App-BSkmbNUC.js.map +0 -1
  87. package/public/assets/index-AeE49W2c.js +0 -2
  88. package/public/assets/index-AeE49W2c.js.map +0 -1
  89. package/public/assets/index-B875QQLi.js +0 -2
  90. package/public/assets/index-B875QQLi.js.map +0 -1
  91. package/public/assets/index-BhInW6hR.js +0 -3
  92. package/public/assets/index-BhInW6hR.js.map +0 -1
  93. package/public/assets/index-C2jBtFkI.js +0 -2
  94. package/public/assets/index-C8zCyB6Z.js +0 -2
  95. package/public/assets/index-C8zCyB6Z.js.map +0 -1
  96. package/public/assets/index-C9vJvaFa.js +0 -2
  97. package/public/assets/index-C9vJvaFa.js.map +0 -1
  98. package/public/assets/index-CLdQSSfU.js +0 -2
  99. package/public/assets/index-CLdQSSfU.js.map +0 -1
  100. package/public/assets/index-CaYFZAN4.js +0 -2
  101. package/public/assets/index-CaYFZAN4.js.map +0 -1
  102. package/public/assets/index-ChudAs0f.js +0 -2
  103. package/public/assets/index-ChudAs0f.js.map +0 -1
  104. package/public/assets/index-D292-iMl.js +0 -2
  105. package/public/assets/index-D292-iMl.js.map +0 -1
  106. package/public/assets/index-DYBqUC9X.css +0 -1
  107. package/public/assets/index-Dk3HFhZs.js +0 -2
  108. package/public/assets/index-Dk3HFhZs.js.map +0 -1
  109. package/public/assets/main-DRbjgAo8.js +0 -42
  110. package/public/assets/main-DRbjgAo8.js.map +0 -1
  111. package/public/assets/monaco-viewer-CG0aPZ-r.js +0 -27
  112. package/public/assets/monaco-viewer-CG0aPZ-r.js.map +0 -1
@@ -1,2 +1,2 @@
1
- import{e as yt}from"./git-diff-vendor-CT8HfOQw.js";import{a as bt,b as pt,m as Te,i as ee}from"./index-BhInW6hR.js";import{g as Ne}from"./monaco-viewer-CG0aPZ-r.js";const xe=["codenomad-client-snapshot-v1","codenomad-client-restore-enabled-v1"],_t={isPrimary:!1,restoreEnabled:!1,snapshot:null},ve=Ne("actions"),K=(()=>{const t=new Uint8Array(32);return globalThis.crypto.getRandomValues(t),Array.from(t,e=>e.toString(16).padStart(2,"0")).join("")})();let F=!1;const ne=()=>window.electronAPI;function ht(t,e,n={}){if(bt())return t(ne());if(pt())return ee(e,{accessToken:K,...n})}async function Ce(){if(!Te())return!1;try{const t=await ht(e=>{var n;return(n=e==null?void 0:e.claimClientStateAccess)==null?void 0:n.call(e,K)},"client_state_claim_access");F=pt()||t===!0}catch(t){F=!1,ve.warn("Client state native access claim failed",t)}return F}async function Re(){if(bt()||pt()){if(!await Ce())return _t;const t=await ht(n=>{var r;return(r=n==null?void 0:n.loadClientState)==null?void 0:r.call(n,K)},"client_state_load")??_t;if(!bt())return t;const e=ne();return{...t,partitionProtocolVersion:t.partitionProtocolVersion===1&&typeof(e==null?void 0:e.commitClientStatePartitions)=="function"&&typeof e.loadClientStatePartition=="function"?1:void 0}}try{for(const t of xe)window.localStorage.removeItem(t)}catch{}return _t}async function mt(t,e,n={}){return F?await ht(r=>r&&t(r),e,n)??!1:!1}const ke=t=>mt(e=>{var n;return(n=e.saveClientState)==null?void 0:n.call(e,K,t)},"client_state_save",{snapshot:t}),Me=t=>mt(e=>{var n;return(n=e.commitClientStatePartitions)==null?void 0:n.call(e,K,t)},"client_state_commit_partitions",{payload:t}),Ke=async t=>F?await ht(e=>{var n;return(n=e==null?void 0:e.loadClientStatePartition)==null?void 0:n.call(e,K,t)},"client_state_load_partition",{key:t})??null:null,$t=t=>mt(e=>{var n;return(n=e.setClientStateRestoreEnabled)==null?void 0:n.call(e,K,t)},"client_state_set_restore_enabled",{enabled:t}),Le=()=>mt(t=>{var e;return(e=t.clearClientState)==null?void 0:e.call(t,K)},"client_state_clear");function re(t,e={}){return!pt()||!F?Promise.resolve():ee(t,{accessToken:K,...e})}const Hn=t=>re("client_state_navigation_flushed",{generation:t}),Gn=t=>re("client_state_renderer_flushed",{generation:t}),oe=512,Ot=1024,Pt=4096,ie=256,J=t=>typeof t=="object"&&t!==null&&!Array.isArray(t),ze=t=>t!=="__proto__"&&t!=="constructor"&&t!=="prototype";function M(t,e,n=!1){if(!(typeof t!="string"||t.length>e)&&!(!n&&t.trim().length===0))return t}function se(t){let e="";for(let n=0;n<t.length;n+=32768)e+=String.fromCharCode(...t.subarray(n,n+32768));return btoa(e)}const ce=t=>Uint8Array.from(atob(t),e=>e.charCodeAt(0));function De(t){if(typeof t!="string"||t.length%4!==0||!/^[A-Za-z0-9+/]*={0,2}$/.test(t))return!1;try{return ce(t),!0}catch{return!1}}const ae=t=>{var e;return typeof t=="string"?(e=t.match(/^data:[^;,]+;base64,([A-Za-z0-9+/]*={0,2})$/))==null?void 0:e[1]:void 0};function Be(t,e){const n=ae(e)??t,r=n instanceof Uint8Array?se(n):n;return De(r)?r:void 0}function Ht(t){if(!(!J(t)||!Number.isSafeInteger(t.line)||Number(t.line)<0)&&!(!Number.isSafeInteger(t.char)||Number(t.char)<0))return{line:Number(t.line),char:Number(t.char)}}function Xe(t,e){if(!J(t))return;if(t.type==="text")return typeof t.value=="string"?{type:"text",value:t.value}:void 0;if(t.type==="agent"){const o=M(t.name,Ot);return o===void 0?void 0:{type:"agent",name:o}}const n=M(t.path,Pt);if(t.type==="file"){const o=M(t.mime,ie);if(n===void 0||o===void 0)return;const c=ae(e)??t.data,a=Be(t.data,e);return c!==void 0&&a===void 0?void 0:a===void 0?{type:"file",path:n,mime:o}:{type:"file",path:n,mime:o,data:a}}if(t.type!=="symbol"||!J(t.range))return;const r=M(t.name,Ot),i=Ht(t.range.start),s=Ht(t.range.end);if(!(n===void 0||r===void 0||!Number.isSafeInteger(t.kind)||!i||!s))return{type:"symbol",path:n,name:r,kind:Number(t.kind),range:{start:i,end:s}}}function Ve(t){if(!J(t)||!["file","text","symbol","agent"].includes(String(t.type)))return;const e=M(t.id,oe),n=M(t.display,Ot),r=M(t.filename,Pt),i=M(t.mediaType,ie),s=Xe(t.source,t.url),o=typeof t.url=="string"&&!t.url.startsWith("data:")?t.url:"",c=M(o,Pt,!0);if(!(!e||!n||!r||!i||!s||s.type!==t.type||c===void 0))return{id:e,type:t.type,display:n,url:c,filename:r,mediaType:i,source:s}}function Dt(t,e,n=[]){if(!J(t))return null;const r=Object.create(null),i=[...new Set(n)],s=new Set(i),o=[...i.flatMap(c=>Object.prototype.hasOwnProperty.call(t,c)?[[c,t[c]]]:[]),...Object.entries(t).filter(([c])=>!s.has(c))];for(const[c,a]of o){if(!ze(c)||!c||c.length>oe||!Array.isArray(a))continue;const w=[];for(const S of a){const g=Ve(S);g&&w.push(g)}w.length&&(r[c]=w)}return{attachments:r,drafts:{...e}}}function Wn(t,e,n=[]){const r=Dt(e,t,n);if(!r||Object.entries(e).some(([i,s])=>{var o;return s.length!==(((o=r.attachments[i])==null?void 0:o.length)??0)}))throw new Error("Draft attachments could not be persisted safely");return r}function Jn(t){let e,n=t.url;if(t.source.type==="file")try{const r=t.source.data===void 0?void 0:ce(t.source.data);e={type:"file",path:t.source.path,mime:t.source.mime,data:r},!n&&t.source.data&&(n=`data:${t.source.mime};base64,${t.source.data}`)}catch{return null}else e=t.source,t.source.type==="text"&&!n&&(n=`data:text/plain;base64,${se(new TextEncoder().encode(t.source.value))}`);return{...t,url:n,source:e}}const Ye=()=>({bytes:16*1024*1024,entries:2e5,indexes:16}),Et=new WeakMap,Ue=new Set(["user","assistant","system","synthetic","skill","shell","compaction","idle","agent-switched","model-switched","location-switched"]),rt=t=>!!t&&typeof t=="object"&&!Array.isArray(t),W=(t,e)=>typeof t=="string"&&t.length>0&&t.length<=e,tt=(t,e=0)=>Number.isSafeInteger(t)&&Number(t)>=e;function qn(t){return t.entries.every(e=>!e.tools||e.toolName!==void 0)}function le(t){if(!rt(t))return;if(Et.has(t))return t;if(t.format!==1||!W(t.directory,4096)||!W(t.projectID,256)||t.revert!==void 0&&!W(t.revert,256)||!Array.isArray(t.entries)||t.entries.length>2e5||!Array.isArray(t.checkpoints)||t.checkpoints.length>512)return;const e=[],n=[],r=new Set;let i=-1,s=-1;for(const a of t.entries){if(!rt(a)||!W(a.id,256)||r.has(a.id)||!tt(a.seq)||a.seq<=i||typeof a.type!="string"||!Ue.has(a.type)||!tt(a.tools)||!tt(a.reasoning)||a.toolName!==void 0&&(typeof a.toolName!="string"||a.toolName.length>256))return;r.add(a.id),i=a.seq,e.push(Object.freeze({id:a.id,seq:i,type:a.type,tools:a.tools,reasoning:a.reasoning,...a.toolName===void 0?{}:{toolName:a.toolName}}))}for(const a of t.checkpoints){if(!rt(a)||a.after!==s||!tt(a.through)||a.through<=s||typeof a.digest!="string"||!/^[a-f0-9]{64}$/.test(a.digest))return;n.push(Object.freeze({after:s,through:a.through,digest:a.digest})),s=a.through}if(!n.length||i>s)return;const o={format:1,directory:t.directory,projectID:t.projectID,...t.revert===void 0?{}:{revert:t.revert},entries:e,checkpoints:n},c=new TextEncoder().encode(JSON.stringify(o)).byteLength;if(!(c>16*1024*1024))return Object.freeze(e),Object.freeze(n),Object.freeze(o),Et.set(o,c),o}function Fe(t,e,n){if(!rt(t))return;const r=Object.create(null),i=[n,...Object.keys(t).filter(s=>s!==n)].filter(s=>!!s);for(const s of i){if(!e.indexes||!e.entries||!e.bytes)break;if(!W(s,256)||["__proto__","constructor","prototype"].includes(s))continue;const o=le(t[s]);if(!o)continue;const c=Et.get(o);c>e.bytes||o.entries.length>e.entries||(r[s]=o,e.bytes-=c,e.entries-=o.entries.length,e.indexes--)}return Object.keys(r).length?r:void 0}const fe=32,$e=64,He=24,Ge=96,We=256,Je=256,qe=256,de=256,jt=4096,ot=512,Ze=4096,ue=32*1024,Qe=1024,tn=96*1024,en=256,Gt=1024,nn="__no_session_draft__";function ye(){return{remaining:tn,scrollSnapshotsRemaining:en,outlines:Ye()}}const L=t=>typeof t=="object"&&t!==null&&!Array.isArray(t),pe=t=>t!=="__proto__"&&t!=="constructor"&&t!=="prototype";function v(t,e,n,r=!1){if(!(typeof t!="string"||t.length>e||t.length>n.remaining)&&!(!r&&t.trim().length===0))return n.remaining-=t.length,t}const z=(t,e,n)=>typeof t=="number"&&Number.isFinite(t)&&t>=e&&t<=n?t:void 0;function it(t,e,n,r,i=()=>!0,s=()=>{},o=[]){if(!L(t))return null;const c=Object.create(null);let a=0;const w=[...new Set(o)],S=new Set(w),g=[...w.flatMap(p=>Object.prototype.hasOwnProperty.call(t,p)?[[p,t[p]]]:[]),...Object.entries(t).filter(([p])=>!S.has(p))];for(const[p,I]of g){if(a>=e)break;if(!pe(p)||!i(I))continue;const b=v(p,de,n),u=r(I);b===void 0||u===void 0||(c[b]=u,a+=1,s())}return c}function he(t,e,n,r,i=[]){return it(t,e,r,s=>v(s,n,r,!0),void 0,void 0,i)}function rn(t,e){if(!L(t))return;const n=z(t.scrollTop,0,1e9),r=z(t.updatedAt,0,Number.MAX_SAFE_INTEGER);if(n===void 0||r===void 0||typeof t.atBottom!="boolean")return;const i={scrollTop:n,atBottom:t.atBottom,updatedAt:r},s=z(t.scrollRatio,0,1),o=z(t.maxScrollTop,0,1e9),c=z(t.anchorOffset,-1e6,1e6),a=t.anchorKey===void 0?void 0:v(t.anchorKey,Qe,e);s!==void 0&&(i.scrollRatio=s),o!==void 0&&(i.maxScrollTop=o),a!==void 0&&(i.anchorKey=a),c!==void 0&&(i.anchorOffset=c),(t.followModeType==="following"||t.followModeType==="escaped")&&(i.followModeType=t.followModeType),typeof t.windowIsLatest=="boolean"&&(i.windowIsLatest=t.windowIsLatest);const w=t.windowCursor===void 0?void 0:v(t.windowCursor,Gt,e);if(w!==void 0&&(i.windowCursor=w),Array.isArray(t.newerCursors)){const S=[];for(const g of t.newerCursors.slice(-32)){if(g===null||g===""){S.push(null);continue}const p=v(g,Gt,e);p!==void 0&&S.push(p)}S.length>0&&(i.newerCursors=S)}return i}function on(t,e){if(!Array.isArray(t))return null;const n=[],r=new Set;for(const i of t.slice(0,qe)){if(typeof i!="string"||r.has(i))continue;const s=v(i,ot,e);s!==void 0&&(r.add(s),n.push(s))}return n}function sn(t,e,n,r){const i=e.priorityDrafts,s=Object.fromEntries(Object.entries(t.drafts??{}).filter(([d])=>!Object.prototype.hasOwnProperty.call(i,d))),o=he(s,Math.max(0,He-Object.keys(i).length),ue,n),c=o?{...i,...o}:null,a=Math.min(Ge,n.scrollSnapshotsRemaining),w=it(t.scrollSnapshots??{},a,n,d=>rn(d,n),void 0,()=>{n.scrollSnapshotsRemaining-=1}),S=it(t.unseenIdleSince??{},We,n,d=>z(d,0,Number.MAX_SAFE_INTEGER)),g=it(t.generationRecovery??{},Je,n,d=>d,d=>d==="working"||d==="interrupted"),p=t.expandedSessionIds===void 0?void 0:on(t.expandedSessionIds,n);if(!c||!w||!S||!g||p===null)return null;const I=Object.fromEntries(Object.entries(t.attachments??{}).filter(([d])=>!e.prioritySessionIds.includes(d))),b=Dt(I,c);if(!b)return null;const u={kind:"workspace",folder:e.folder,drafts:b.drafts,attachments:{...e.priorityAttachments,...b.attachments},scrollSnapshots:w,unseenIdleSince:S,generationRecovery:g};p!==void 0&&(u.expandedSessionIds=p);const h=Fe(t.outlineIndexes,n.outlines,e.activeSessionId);h&&(u.outlineIndexes=h),Number.isInteger(t.occurrence)&&Number(t.occurrence)>=0&&Number(t.occurrence)<fe&&(u.occurrence=Number(t.occurrence));const l=t.projectName===void 0?void 0:v(t.projectName,jt,n),f=t.binaryPath===void 0?void 0:v(t.binaryPath,jt,n);return l!==void 0&&(u.projectName=l),f!==void 0&&(u.binaryPath=f),e.activeParentSessionId!==void 0&&(u.activeParentSessionId=e.activeParentSessionId),e.activeSessionId!==void 0&&(u.activeSessionId=e.activeSessionId),u}function cn(t,e){if(!L(t))return null;const n=t.kind??t.type;if(n==="sidecar"){const c=v(t.sidecarId,ot,e);return c===void 0?null:{kind:n,sidecarId:c}}if(n!=="workspace"&&n!=="instance"||!["drafts","attachments","scrollSnapshots","unseenIdleSince","generationRecovery"].every(c=>L(t[c]??{})))return null;const r=v(t.folder,jt,e);if(r===void 0)return null;const i=t.activeParentSessionId===void 0?void 0:v(t.activeParentSessionId,ot,e),s=t.activeSessionId===void 0?void 0:v(t.activeSessionId,ot,e),o=[s,nn].filter(c=>!!c);return{kind:"workspace",value:t,folder:r,activeParentSessionId:i,activeSessionId:s,prioritySessionIds:o,priorityDrafts:Object.create(null),priorityAttachments:Object.create(null)}}function an(t,e){const n=t.value.drafts??{};if(!L(n))return;for(const o of t.prioritySessionIds){if(!pe(o)||!Object.prototype.hasOwnProperty.call(n,o))continue;const c=e.remaining,a=v(o,de,e),w=v(n[o],ue,e,!0);if(a===void 0||w===void 0){e.remaining=c;continue}t.priorityDrafts[a]=w}const r=t.value.attachments??{};if(!L(r))return;const i=Object.fromEntries(t.prioritySessionIds.filter(o=>Object.prototype.hasOwnProperty.call(r,o)).map(o=>[o,r[o]])),s=Dt(i,t.priorityDrafts,t.prioritySessionIds);s&&(t.priorityDrafts=s.drafts,t.priorityAttachments=s.attachments)}function Tt(t){return me(t,ye())}function me(t,e){if(!L(t)||!Array.isArray(t.tabs)||!Number.isInteger(t.activeTabIndex))return null;const n=Number(t.activeTabIndex),r=t.tabs.slice(0,fe),i=new Map,s=new Map,o=u=>{const h=cn(r[u],e);h&&i.set(u,h)},c=(u,h)=>{const l=i.get(u);if(!l)return;const f=l.kind==="sidecar"?l:sn(l.value,l,e);f&&s.set(u,f)};r.forEach((u,h)=>o(h));const a=[n,...r.map((u,h)=>h).filter(u=>u!==n)];for(const u of a){const h=i.get(u);(h==null?void 0:h.kind)==="workspace"&&an(h,e)}r[n]!==void 0&&c(n),r.forEach((u,h)=>{h!==n&&c(h)});const S=r.flatMap((u,h)=>{const l=i.get(h);return l?[{originalIndex:h,identity:l}]:[]}).flatMap(({originalIndex:u})=>{const h=s.get(u);return h?[{originalIndex:u,tab:h}]:[]});if(t.tabs.length&&!S.length)return null;const g=S.map(({tab:u})=>u),p=S.findIndex(({originalIndex:u})=>u===n),I=S.findIndex(({originalIndex:u})=>u>n),b=g.length?p>=0?p:I>=0?I:g.length-1:-1;return{tabs:g,activeTabIndex:b,...t.homeActive===!0?{homeActive:!0}:{}}}function Bt(t){if(!L(t)||t.version!==void 0&&t.version!==1||!Number.isSafeInteger(t.revision)||Number(t.revision)<0)return null;const e=z(t.savedAt,0,Number.MAX_SAFE_INTEGER);if(e===void 0)return null;const n=ye(),r=t.session===null?null:me(t.session,n);if(t.session!==null&&!r)return null;const i=he(t.layout,$e,Ze,n);return i?{version:1,revision:Number(t.revision),savedAt:e,layout:i,session:r}:null}const ln=new TextEncoder;function Nt(t){return Array.isArray(t)?t.map(Nt):typeof t!="object"||t===null?t:Object.fromEntries(Object.keys(t).sort().map(e=>[e,Nt(t[e])]))}function $(t){const e=JSON.stringify(Nt(t));if(e===void 0)throw new TypeError("Client state partition must be JSON-serializable");return e}async function St(t){const e=await crypto.subtle.digest("SHA-256",ln.encode(t));return Array.from(new Uint8Array(e),n=>n.toString(16).padStart(2,"0")).join("")}const Wt=new WeakMap;function fn(t){let e=Wt.get(t);return e||(e=(async()=>{const n=Object.create(null),r=[];for(let o=0;o<t.entries.length;o+=512){const c=$({format:1,index:o/512,entries:t.entries.slice(o,o+512)}),a=await St(c);n[a]=c,r.push(a)}const{entries:i,...s}=t;return{descriptor:{...s,entryPartitions:r},partitions:n}})(),Object.isFrozen(t)&&Wt.set(t,e)),e}async function dn(t,e,n,r){if(!t||typeof t!="object"||Array.isArray(t))return;const i=t,s=i.entryPartitions;if(!Array.isArray(s)||s.length>391||new Set(s).size!==s.length||!s.every(c=>typeof c=="string"&&/^[a-f0-9]{64}$/.test(c)&&e.has(c)))return;s.forEach(c=>n.add(c));const o=[];for(let c=0;c<s.length;c++){const a=await r(s[c]).catch(()=>null);if(!a||a.format!==1||a.index!==c||!Array.isArray(a.entries)||a.entries.length>512||c<s.length-1&&a.entries.length!==512)return;o.push(...a.entries)}return le({...i,entries:o})}const q=1024*1024,xt=1024*1024,un=4096,Jt=256*1024*1024,yn=512,vt=768*1024,Se=256,we=vt*Se,D=/^[0-9a-f]{64}$/,pn=["layout","partitionKeys","revision","savedAt","sessionPartition","version"],hn=new Set(["__proto__","constructor","prototype"]),X=new TextEncoder,R=t=>typeof t=="object"&&t!==null&&!Array.isArray(t),_=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),et=t=>typeof t=="string"&&t.length>0&&t.length<=yn&&t.trim().length>0&&!hn.has(t);function ge(t){return Array.isArray(t)&&t.every((e,n)=>typeof e=="string"&&D.test(e)&&(n===0||t[n-1]<e))}function C(t,e,n=[]){const r=new Set([...e,...n]);return e.every(i=>_(t,i))&&Object.keys(t).every(i=>r.has(i))}function lt(t,e){try{return $(t)===$(e)}catch{return!1}}function mn(t){let e="";for(let n=0;n<t.length;n+=32768)e+=String.fromCharCode(...t.subarray(n,n+32768));return btoa(e)}const Sn=t=>Uint8Array.from(atob(t),e=>e.charCodeAt(0)),Ct=t=>typeof t=="string"&&t.length%4===0&&/^[A-Za-z0-9+/]*={0,2}$/.test(t);async function qt(t,e){if(!Ct(t)||t.length>we)throw new Error("Client state attachment exceeds the 192 MiB encoded blob limit");const n=[];for(let r=0,i=0;r<t.length||r===0;r+=vt,i+=1)n.push(await e({format:2,index:i,data:t.slice(r,r+vt)}));return n}async function wn(t,e){return Promise.all(t.map(async n=>{let r;return n.source.type==="file"?(r={type:"file",path:n.source.path,mime:n.source.mime},n.source.data!==void 0&&(r.dataPartitions=await qt(n.source.data,e))):n.source.type==="text"?r={type:"text",valuePartitions:await qt(mn(X.encode(n.source.value)),e)}:r=n.source,{...n,source:r}}))}async function Rt(t){const e=Object.create(null),n=async o=>{const c=$(o);if(X.encode(c).byteLength>q)throw new Error("Client state partition exceeds the native size limit");const a=await St(c);return e[a]=c,a},r=t===null?null:{tabs:await Promise.all(t.tabs.map(async o=>{var g;if(o.kind==="sidecar")return{kind:o.kind,sidecarId:o.sidecarId};const c=new Set([...Object.keys(o.drafts),...Object.keys(o.attachments),...Object.keys(o.scrollSnapshots),...Object.keys(o.unseenIdleSince),...Object.keys(o.generationRecovery),...Object.keys(o.outlineIndexes??{})]),a=Object.create(null);for(const p of[...c].sort()){const I={format:2};_(o.drafts,p)&&(I.draft=o.drafts[p]),_(o.attachments,p)&&(I.attachments=await wn(o.attachments[p],n)),_(o.scrollSnapshots,p)&&(I.scrollSnapshot=o.scrollSnapshots[p]),_(o.unseenIdleSince,p)&&(I.unseenIdleSince=o.unseenIdleSince[p]),_(o.generationRecovery,p)&&(I.generationRecovery=o.generationRecovery[p]);const b=(g=o.outlineIndexes)==null?void 0:g[p],u=b?await fn(b):void 0;u&&(I.outline=u.descriptor,Object.assign(e,u.partitions));const h=await n(I),l=(I.attachments??[]).flatMap(f=>{if(!R(f)||!R(f.source))return[];const d=f.source.dataPartitions??f.source.valuePartitions;return Array.isArray(d)?d.filter(O=>typeof O=="string"):[]});a[p]={documentPartition:h,partitionKeys:[...new Set([h,...l,...Object.keys((u==null?void 0:u.partitions)??{})])].sort()}}const w={format:2,sessions:a};o.activeParentSessionId!==void 0&&(w.activeParentSessionId=o.activeParentSessionId),o.activeSessionId!==void 0&&(w.activeSessionId=o.activeSessionId),o.expandedSessionIds!==void 0&&(w.expandedSessionIds=o.expandedSessionIds);const S={kind:o.kind,folder:o.folder,workspacePartition:await n(w)};return o.occurrence!==void 0&&(S.occurrence=o.occurrence),o.projectName!==void 0&&(S.projectName=o.projectName),o.binaryPath!==void 0&&(S.binaryPath=o.binaryPath),S})),activeTabIndex:t.activeTabIndex,...t.homeActive!==void 0?{homeActive:t.homeActive}:{}},i=await n({format:2,session:r}),s=Object.keys(e).sort();return{sessionPartition:i,partitionKeys:s,partitions:Object.fromEntries(s.map(o=>[o,e[o]]))}}async function gn(t){var n;const e=await Rt(t.session);return{root:{version:2,revision:t.revision,savedAt:t.savedAt,layout:t.layout,sessionPartition:e.sessionPartition,partitionKeys:e.partitionKeys,...(n=t.session)!=null&&n.tabs.some(r=>r.kind==="workspace"&&Object.keys(r.outlineIndexes??{}).length)?{extensions:["outline-index-v1"]}:{}},partitions:e.partitions,partitionKeys:e.partitionKeys}}function An(t){if(t.partitionKeys.length>un)return!1;const e=JSON.stringify(t.root);if(e.length>xt)return!1;let n=X.encode(e).byteLength;if(n>xt)return!1;for(const r in t.partitions){if(!_(t.partitions,r))continue;const i=t.partitions[r];if(i.length>q||i.length>Jt-n)return!1;const s=X.encode(i).byteLength;if(s>q||s>Jt-n)return!1;n+=s}return!0}function In(t){if(!R(t)||t.version!==2||typeof t.sessionPartition!="string"||!D.test(t.sessionPartition)||!ge(t.partitionKeys)||!t.partitionKeys.includes(t.sessionPartition)||Object.keys(t).sort().join("\0")!==[...pn,...t.extensions===void 0?[]:["extensions"]].sort().join("\0")||t.extensions!==void 0&&!lt(t.extensions,["outline-index-v1"]))return null;let e;try{e=JSON.stringify(t)}catch{return null}if(X.encode(e).byteLength>xt)return null;const n=Bt({...t,version:1,session:null});return!n||!lt(t,{version:2,revision:n.revision,savedAt:n.savedAt,layout:n.layout,sessionPartition:t.sessionPartition,partitionKeys:t.partitionKeys,...t.extensions===void 0?{}:{extensions:t.extensions}})?null:{root:n,partitionKey:t.sessionPartition,partitionKeys:t.partitionKeys}}function Ae(t){try{return{value:JSON.parse(t)}}catch{return null}}async function _n(t,e,n,r,i){var h;if(!C(t,["format","session"])||$(t)!==r.get(e))return;if(t.session===null){const l=await Rt(null);return Zt(l,e,n,r)?null:void 0}if(!R(t.session)||!C(t.session,["tabs","activeTabIndex"],["homeActive"])||!Array.isArray(t.session.tabs))return;const s=async l=>{if(typeof l!="string"||!D.test(l))return null;let f=r.get(l);if(f===void 0){if(f=await i(l)??void 0,f===void 0||X.encode(f).byteLength>q||await St(f)!==l)return null;r.set(l,f)}const d=Ae(f);return d&&R(d.value)&&$(d.value)===f?d.value:null},o=(l,f)=>{const d=[...new Set(l)].sort();return d.length===f.length&&d.every((O,E)=>O===f[E])},c=async(l,f,d)=>{if(!Array.isArray(l)||!l.length||l.length>Se||!l.every(y=>typeof y=="string"&&D.test(y))||new Set(l).size!==l.length)return null;const O=[];let E=0;for(const[y,m]of l.entries()){if(!f.has(m))return null;d.add(m);const N=await s(m);if(!N||!Ct(N.data))return null;if(N.format===1){if(!C(N,["format","data"]))return null}else if(N.format===2){if(!C(N,["format","index","data"])||N.index!==y)return null}else return null;if(N.data.length>we-E)return null;E+=N.data.length,O.push(N.data)}const A=O.join("");return Ct(A)?A:null},a=async(l,f,d)=>{if(!Array.isArray(l))return null;const O=[];for(const E of l){if(!R(E)||!C(E,["id","type","display","url","filename","mediaType","source"])||!R(E.source))return null;const A=E.source;if(A.type==="file"){if(!C(A,["type","path","mime"],["dataPartitions"]))return null;if(_(A,"dataPartitions")){const y=await c(A.dataPartitions,f,d);if(y===null)return null;O.push({...E,source:{type:A.type,path:A.path,mime:A.mime,data:y}})}else O.push(E);continue}if(A.type==="text"){if(!C(A,["type","valuePartitions"]))return null;const y=await c(A.valuePartitions,f,d);if(y===null)return null;try{const m=new TextDecoder("utf-8",{fatal:!0}).decode(Sn(y));O.push({...E,source:{type:A.type,value:m}})}catch{return null}continue}O.push(E)}return O},w=[],S=new Set([e]);let g=!1,p=!1;for(const l of t.session.tabs){if(!R(l))return;if(l.kind==="sidecar"){if(!C(l,["kind","sidecarId"]))return;w.push({kind:l.kind,sidecarId:l.sidecarId});continue}if(l.kind!=="workspace"||!C(l,["kind","folder","workspacePartition"],["occurrence","projectName","binaryPath"])||typeof l.workspacePartition!="string"||!D.test(l.workspacePartition))return;S.add(l.workspacePartition);const f=await s(l.workspacePartition);if(!f||f.format!==1&&f.format!==2||!C(f,["format","sessions"],["activeParentSessionId","activeSessionId","expandedSessionIds"])||!R(f.sessions)||(p||(p=f.format===1),!Object.keys(f.sessions).every(et)||_(f,"activeParentSessionId")&&!et(f.activeParentSessionId)||_(f,"activeSessionId")&&!et(f.activeSessionId)||_(f,"expandedSessionIds")&&(!Array.isArray(f.expandedSessionIds)||!f.expandedSessionIds.every(et))))return;const d={kind:l.kind,folder:l.folder,drafts:Object.create(null),attachments:Object.create(null),scrollSnapshots:Object.create(null),unseenIdleSince:Object.create(null),generationRecovery:Object.create(null)};for(const y of["occurrence","projectName","binaryPath"])_(l,y)&&(d[y]=l[y]);for(const y of["activeParentSessionId","activeSessionId","expandedSessionIds"])_(f,y)&&(d[y]=f[y]);const O=[];for(const[y,m]of Object.entries(f.sessions)){if(f.format===1){if(typeof m!="string"||!D.test(m))return;O.push({sessionId:y,documentKey:m,partitionKeys:[m]}),S.add(m);continue}if(!R(m)||!C(m,["documentPartition","partitionKeys"])||typeof m.documentPartition!="string"||!D.test(m.documentPartition)||!ge(m.partitionKeys)||!m.partitionKeys.includes(m.documentPartition))return;O.push({sessionId:y,documentKey:m.documentPartition,partitionKeys:m.partitionKeys}),m.partitionKeys.forEach(N=>S.add(N))}const E=typeof f.activeSessionId=="string"?f.activeSessionId:void 0;O.sort((y,m)=>y.sessionId===E?-1:m.sessionId===E?1:y.sessionId.localeCompare(m.sessionId));const A=new Set;for(const{sessionId:y,documentKey:m,partitionKeys:N}of O){const x=await s(m),Yt=new Set(N),At=new Set([m]);if(!(x&&(x.format===1||x.format===2)&&C(x,["format"],["draft","attachments","scrollSnapshot","unseenIdleSince","generationRecovery","outline"])&&Object.keys(x).length>1)){g=!0,A.add(y);continue}const It=_(x,"attachments")?x.format===1?x.attachments:await a(x.attachments,Yt,At):void 0,G=x.outline===void 0?void 0:await dn(x.outline,Yt,At,s);if(x.outline!==void 0&&!G&&(g=!0),_(x,"attachments")&&It===null||!o(At,N)){g=!0,A.add(y);continue}const k={kind:"workspace",folder:"/",drafts:Object.create(null),attachments:Object.create(null),scrollSnapshots:Object.create(null),unseenIdleSince:Object.create(null),generationRecovery:Object.create(null)},Ut=[["draft","drafts"],["scrollSnapshot","scrollSnapshots"],["unseenIdleSince","unseenIdleSince"],["generationRecovery","generationRecovery"]];for(const[Y,je]of Ut)_(x,Y)&&(k[je][y]=x[Y]);It!==void 0&&(k.attachments[y]=It),G&&(k.outlineIndexes={[y]:G});const Ft=(h=Tt({tabs:[k],activeTabIndex:0}))==null?void 0:h.tabs[0];if(!Ft||!lt(k,Ft)){g=!0,A.add(y);continue}for(const[,Y]of Ut)_(k[Y],y)&&(d[Y][y]=k[Y][y]);_(k.attachments,y)&&(d.attachments[y]=k.attachments[y]),G&&(d.outlineIndexes??(d.outlineIndexes=Object.create(null)),d.outlineIndexes[y]=G)}A.has(String(d.activeSessionId))&&delete d.activeSessionId,A.has(String(d.activeParentSessionId))&&delete d.activeParentSessionId,Array.isArray(d.expandedSessionIds)&&(d.expandedSessionIds=d.expandedSessionIds.filter(y=>!A.has(String(y)))),w.push(d)}if(!o(S,n))return;const I={tabs:w,activeTabIndex:t.session.activeTabIndex,..._(t.session,"homeActive")?{homeActive:t.session.homeActive}:{}},b=Tt(I);if(!b||!lt(I,b))return;if(g||p)return b;const u=await Rt(b);return Zt(u,e,n,r)?b:void 0}function Zt(t,e,n,r){return t.sessionPartition!==e||t.partitionKeys.length!==n.length||!t.partitionKeys.every((i,s)=>i===n[s])||t.partitionKeys.length!==r.size?!1:t.partitionKeys.every(i=>r.get(i)===t.partitions[i])}async function bn(t,e,n){const r=In(t);if(!r||e!==1)return null;try{const i=await n(r.partitionKey);if(i===null||X.encode(i).byteLength>q||await St(i)!==r.partitionKey)return null;const s=Ae(i);if(!s)return null;if(R(s.value)&&s.value.format===2){const o=new Map([[r.partitionKey,i]]),c=await _n(s.value,r.partitionKey,r.partitionKeys,o,n);return c===void 0?null:{...r.root,session:c}}return null}catch{return null}}const On=t=>R(t)&&t.version===2,Pn=250,En=3,jn=1024*1024,Tn=64,Nn=256,Xt=4096,xn="opencode-session-",vn=new Set(["__proto__","constructor","prototype"]),[V,ft]=yt(!0),[H,st]=yt(!1),[Cn,Rn]=yt(!1),[kt,Mt]=yt(null);let Kt=!1,nt=null,T=Object.create(null),Ie=0,j=!1,P=!1,ct=null,B=Promise.resolve(),Qt=Promise.resolve(),Z,Lt;const U=new Set;function wt(t,e){try{return e(window.localStorage)}catch{return t}}function _e(t){return t.length>0&&t.length<=Nn&&!vn.has(t)}const te=t=>wt(null,e=>{const n=e.getItem(t);return n!==null&&n.length<=Xt?n:null}),zt=(t,e)=>wt(void 0,n=>n.setItem(t,e));function be(t){const e=new Set(Object.keys(T));for(let n=0;n<t.length;n+=1){const r=t.key(n);r!=null&&r.startsWith(xn)&&e.add(r)}return[...e]}const dt=t=>Object.prototype.hasOwnProperty.call(T,t),ut=()=>Object.keys(T).length>=Tn;function kn(){return wt(!1,t=>{const e=Object.keys(T).length;for(const n of be(t)){if(dt(n))continue;if(ut())break;const r=t.getItem(n);r===null||r.length>Xt||(T[n]=r)}return Object.keys(T).length!==e})}function Vt(){return Kt&&V()&&H()&&!P}const gt=()=>{ct!==null&&clearTimeout(ct),ct=null};function Oe(){if(gt(),!j||!Vt())return B;const t={version:1,revision:++Ie,savedAt:Date.now(),layout:{...T},session:Lt===1?kt():Mn(kt())},e=Bt(t);if(!e)return Promise.reject(new Error("Client snapshot normalization failed"));T={...e.layout},j=!1;const n=B.then(async()=>{try{const r=Lt===1?await gn(e):null;if(r&&!An(r))throw new Error("Client snapshot exceeds the native partition count or size limits");if(!r&&new TextEncoder().encode(JSON.stringify(e)).byteLength>jn)throw new Error("Client snapshot exceeds the V1 1 MiB limit and partition persistence is unavailable");if(!(r?await Me({protocolVersion:1,snapshot:r.root,partitions:r.partitions,partitionKeys:r.partitionKeys}):await ke(e)))throw ft(!1),new Error("Native client state save was rejected");Z=void 0}catch(r){throw j=!0,Z=r,r}});return B=n.catch(()=>{}),n}function Mn(t){return t&&{...t,tabs:t.tabs.map(e=>{if(e.kind!=="workspace")return e;const{outlineIndexes:n,...r}=e;return r})}}function Q(){j=!0,Vt()&&(gt(),ct=setTimeout(()=>void Oe().catch(t=>console.warn("[client-state] failed to save client snapshot",t)),Pn))}function at(t=null,e=!1){T=t?{...t.layout}:Object.create(null),e&&(Ie=(t==null?void 0:t.revision)??0),Rn(t!==null),Mt((t==null?void 0:t.session)??null)}async function Pe(t,e,n=!1){const r=P;let i=j;P="transaction",U.clear(),gt(),j=!1;try{if(await B,i||(i=j),j=!1,!await t())throw n&&ft(!1),new Error(e);wt(void 0,s=>{for(const o of be(s))s.removeItem(o)}),at(),U.clear(),P="snapshot"}catch(s){i||(i=j);for(const o of U)zt(o,T[o]);throw U.clear(),P=r,j=i,j&&Q(),s}}function Ee(t){const e=Qt.then(t);return Qt=e.catch(()=>{}),e}function Kn(t){const e=t===null?null:Tt(t);if(!(t!==null&&e===null)){if(P==="transaction"){Mt(e),j=!0;return}P||!V()||!H()||(Mt(e),Q())}}function Ln(t){if(!_e(t))return null;if(!V())return te(t);if(!H()||P)return null;if(dt(t))return T[t]??null;const e=te(t);return e===null||ut()||(T[t]=e,Q()),e}function zn(t,e){if(!(!_e(t)||e.length>Xt)){if(!V())return zt(t,e);if(P==="transaction"){if(!dt(t)&&ut())return;j||(j=T[t]!==e),T[t]=e,U.add(t);return}!H()||P||!dt(t)&&ut()||(zt(t,e),T[t]!==e&&(T[t]=e,Q()))}}async function Dn(){gt();let t=Z;for(let e=0;e<En;e+=1){for(;;){const n=B;if(await n,n===B)break}if(!j){if(t!==void 0)throw t;return}if(!Vt()){const n=Z??t;if(n!==void 0)throw n;return}try{await Oe(),t=void 0}catch(n){t=n}}if(await B,!!j)throw t??new Error("Client state remained dirty after the final flush attempt")}async function Bn(){await Ee(async()=>{if(!V())throw new Error("Client state is not owned by this window");await Pe(Le,"Native client state clear was rejected",!0)})}async function Xn(t){await Ee(async()=>{if(!(t===H()&&(!t||P===!1))){if(!V())throw new Error("Client state is not owned by this window");if(t){if(!await $t(!0))throw new Error("Native restore preference update was rejected");P=!1,st(!0);return}st(!1);try{await Pe(()=>$t(!1),"Native restore preference update was rejected")}catch(e){throw st(!0),e}}})}function Vn(){return nt||(nt=(async()=>{try{const t=await Re();if(Lt=t.partitionProtocolVersion,ft(t.isPrimary),st(t.restoreEnabled),at(null,!0),j=!1,Z=void 0,P=!1,U.clear(),Kt=!0,!t.isPrimary||!t.restoreEnabled)return;let e;if(On(t.snapshot)){P="snapshot";try{e=await bn(t.snapshot,t.partitionProtocolVersion,Ke)}catch(n){e=null,console.warn("[client-state] failed to load client snapshot partition",n)}e&&(P=!1)}else e=Bt(t.snapshot),P=t.snapshot!==null&&e===null?"snapshot":!1;at(e,!0),!P&&kn()&&Q()}catch(t){Kt=!0,ft(!1),at(),console.warn("[client-state] failed to initialize client state",t)}})(),nt)}const Zn=Object.freeze(Object.defineProperty({__proto__:null,clearRestoredClientState:Bn,clientStateIsPrimary:V,flushClientState:Dn,initializeClientState:Vn,loadedClientSnapshotExists:Cn,loadedRestorableSession:kt,readClientLayoutValue:Ln,restorePreviousStateEnabled:H,setRestorePreviousStateEnabled:Xn,updateRestorableSession:Kn,writeClientLayoutValue:zn},Symbol.toStringTag,{value:"Module"}));export{Jn as a,H as b,V as c,Gn as d,Hn as e,Dn as f,Xn as g,qn as h,Bn as i,Zn as j,kt as l,le as n,Ln as r,Wn as s,Kn as u,zn as w};
2
- //# sourceMappingURL=client-state-CjVIIkWh.js.map
1
+ import{e as yt}from"./git-diff-vendor-CT8HfOQw.js";import{a as bt,b as pt,m as Te,i as ee}from"./index-CIT8ANJK.js";import{h as Ne}from"./monaco-viewer-BtzCmjFO.js";const xe=["codenomad-client-snapshot-v1","codenomad-client-restore-enabled-v1"],_t={isPrimary:!1,restoreEnabled:!1,snapshot:null},ve=Ne("actions"),K=(()=>{const t=new Uint8Array(32);return globalThis.crypto.getRandomValues(t),Array.from(t,e=>e.toString(16).padStart(2,"0")).join("")})();let F=!1;const ne=()=>window.electronAPI;function ht(t,e,n={}){if(bt())return t(ne());if(pt())return ee(e,{accessToken:K,...n})}async function Ce(){if(!Te())return!1;try{const t=await ht(e=>{var n;return(n=e==null?void 0:e.claimClientStateAccess)==null?void 0:n.call(e,K)},"client_state_claim_access");F=pt()||t===!0}catch(t){F=!1,ve.warn("Client state native access claim failed",t)}return F}async function Re(){if(bt()||pt()){if(!await Ce())return _t;const t=await ht(n=>{var r;return(r=n==null?void 0:n.loadClientState)==null?void 0:r.call(n,K)},"client_state_load")??_t;if(!bt())return t;const e=ne();return{...t,partitionProtocolVersion:t.partitionProtocolVersion===1&&typeof(e==null?void 0:e.commitClientStatePartitions)=="function"&&typeof e.loadClientStatePartition=="function"?1:void 0}}try{for(const t of xe)window.localStorage.removeItem(t)}catch{}return _t}async function mt(t,e,n={}){return F?await ht(r=>r&&t(r),e,n)??!1:!1}const ke=t=>mt(e=>{var n;return(n=e.saveClientState)==null?void 0:n.call(e,K,t)},"client_state_save",{snapshot:t}),Me=t=>mt(e=>{var n;return(n=e.commitClientStatePartitions)==null?void 0:n.call(e,K,t)},"client_state_commit_partitions",{payload:t}),Ke=async t=>F?await ht(e=>{var n;return(n=e==null?void 0:e.loadClientStatePartition)==null?void 0:n.call(e,K,t)},"client_state_load_partition",{key:t})??null:null,$t=t=>mt(e=>{var n;return(n=e.setClientStateRestoreEnabled)==null?void 0:n.call(e,K,t)},"client_state_set_restore_enabled",{enabled:t}),Le=()=>mt(t=>{var e;return(e=t.clearClientState)==null?void 0:e.call(t,K)},"client_state_clear");function re(t,e={}){return!pt()||!F?Promise.resolve():ee(t,{accessToken:K,...e})}const Hn=t=>re("client_state_navigation_flushed",{generation:t}),Gn=t=>re("client_state_renderer_flushed",{generation:t}),oe=512,Ot=1024,Pt=4096,ie=256,J=t=>typeof t=="object"&&t!==null&&!Array.isArray(t),ze=t=>t!=="__proto__"&&t!=="constructor"&&t!=="prototype";function M(t,e,n=!1){if(!(typeof t!="string"||t.length>e)&&!(!n&&t.trim().length===0))return t}function se(t){let e="";for(let n=0;n<t.length;n+=32768)e+=String.fromCharCode(...t.subarray(n,n+32768));return btoa(e)}const ce=t=>Uint8Array.from(atob(t),e=>e.charCodeAt(0));function De(t){if(typeof t!="string"||t.length%4!==0||!/^[A-Za-z0-9+/]*={0,2}$/.test(t))return!1;try{return ce(t),!0}catch{return!1}}const ae=t=>{var e;return typeof t=="string"?(e=t.match(/^data:[^;,]+;base64,([A-Za-z0-9+/]*={0,2})$/))==null?void 0:e[1]:void 0};function Be(t,e){const n=ae(e)??t,r=n instanceof Uint8Array?se(n):n;return De(r)?r:void 0}function Ht(t){if(!(!J(t)||!Number.isSafeInteger(t.line)||Number(t.line)<0)&&!(!Number.isSafeInteger(t.char)||Number(t.char)<0))return{line:Number(t.line),char:Number(t.char)}}function Xe(t,e){if(!J(t))return;if(t.type==="text")return typeof t.value=="string"?{type:"text",value:t.value}:void 0;if(t.type==="agent"){const o=M(t.name,Ot);return o===void 0?void 0:{type:"agent",name:o}}const n=M(t.path,Pt);if(t.type==="file"){const o=M(t.mime,ie);if(n===void 0||o===void 0)return;const c=ae(e)??t.data,a=Be(t.data,e);return c!==void 0&&a===void 0?void 0:a===void 0?{type:"file",path:n,mime:o}:{type:"file",path:n,mime:o,data:a}}if(t.type!=="symbol"||!J(t.range))return;const r=M(t.name,Ot),i=Ht(t.range.start),s=Ht(t.range.end);if(!(n===void 0||r===void 0||!Number.isSafeInteger(t.kind)||!i||!s))return{type:"symbol",path:n,name:r,kind:Number(t.kind),range:{start:i,end:s}}}function Ve(t){if(!J(t)||!["file","text","symbol","agent"].includes(String(t.type)))return;const e=M(t.id,oe),n=M(t.display,Ot),r=M(t.filename,Pt),i=M(t.mediaType,ie),s=Xe(t.source,t.url),o=typeof t.url=="string"&&!t.url.startsWith("data:")?t.url:"",c=M(o,Pt,!0);if(!(!e||!n||!r||!i||!s||s.type!==t.type||c===void 0))return{id:e,type:t.type,display:n,url:c,filename:r,mediaType:i,source:s}}function Dt(t,e,n=[]){if(!J(t))return null;const r=Object.create(null),i=[...new Set(n)],s=new Set(i),o=[...i.flatMap(c=>Object.prototype.hasOwnProperty.call(t,c)?[[c,t[c]]]:[]),...Object.entries(t).filter(([c])=>!s.has(c))];for(const[c,a]of o){if(!ze(c)||!c||c.length>oe||!Array.isArray(a))continue;const w=[];for(const S of a){const g=Ve(S);g&&w.push(g)}w.length&&(r[c]=w)}return{attachments:r,drafts:{...e}}}function Wn(t,e,n=[]){const r=Dt(e,t,n);if(!r||Object.entries(e).some(([i,s])=>{var o;return s.length!==(((o=r.attachments[i])==null?void 0:o.length)??0)}))throw new Error("Draft attachments could not be persisted safely");return r}function Jn(t){let e,n=t.url;if(t.source.type==="file")try{const r=t.source.data===void 0?void 0:ce(t.source.data);e={type:"file",path:t.source.path,mime:t.source.mime,data:r},!n&&t.source.data&&(n=`data:${t.source.mime};base64,${t.source.data}`)}catch{return null}else e=t.source,t.source.type==="text"&&!n&&(n=`data:text/plain;base64,${se(new TextEncoder().encode(t.source.value))}`);return{...t,url:n,source:e}}const Ye=()=>({bytes:16*1024*1024,entries:2e5,indexes:16}),Et=new WeakMap,Ue=new Set(["user","assistant","system","synthetic","skill","shell","compaction","idle","agent-switched","model-switched","location-switched"]),rt=t=>!!t&&typeof t=="object"&&!Array.isArray(t),W=(t,e)=>typeof t=="string"&&t.length>0&&t.length<=e,tt=(t,e=0)=>Number.isSafeInteger(t)&&Number(t)>=e;function qn(t){return t.entries.every(e=>!e.tools||e.toolName!==void 0)}function le(t){if(!rt(t))return;if(Et.has(t))return t;if(t.format!==1||!W(t.directory,4096)||!W(t.projectID,256)||t.revert!==void 0&&!W(t.revert,256)||!Array.isArray(t.entries)||t.entries.length>2e5||!Array.isArray(t.checkpoints)||t.checkpoints.length>512)return;const e=[],n=[],r=new Set;let i=-1,s=-1;for(const a of t.entries){if(!rt(a)||!W(a.id,256)||r.has(a.id)||!tt(a.seq)||a.seq<=i||typeof a.type!="string"||!Ue.has(a.type)||!tt(a.tools)||!tt(a.reasoning)||a.toolName!==void 0&&(typeof a.toolName!="string"||a.toolName.length>256))return;r.add(a.id),i=a.seq,e.push(Object.freeze({id:a.id,seq:i,type:a.type,tools:a.tools,reasoning:a.reasoning,...a.toolName===void 0?{}:{toolName:a.toolName}}))}for(const a of t.checkpoints){if(!rt(a)||a.after!==s||!tt(a.through)||a.through<=s||typeof a.digest!="string"||!/^[a-f0-9]{64}$/.test(a.digest))return;n.push(Object.freeze({after:s,through:a.through,digest:a.digest})),s=a.through}if(!n.length||i>s)return;const o={format:1,directory:t.directory,projectID:t.projectID,...t.revert===void 0?{}:{revert:t.revert},entries:e,checkpoints:n},c=new TextEncoder().encode(JSON.stringify(o)).byteLength;if(!(c>16*1024*1024))return Object.freeze(e),Object.freeze(n),Object.freeze(o),Et.set(o,c),o}function Fe(t,e,n){if(!rt(t))return;const r=Object.create(null),i=[n,...Object.keys(t).filter(s=>s!==n)].filter(s=>!!s);for(const s of i){if(!e.indexes||!e.entries||!e.bytes)break;if(!W(s,256)||["__proto__","constructor","prototype"].includes(s))continue;const o=le(t[s]);if(!o)continue;const c=Et.get(o);c>e.bytes||o.entries.length>e.entries||(r[s]=o,e.bytes-=c,e.entries-=o.entries.length,e.indexes--)}return Object.keys(r).length?r:void 0}const fe=32,$e=64,He=24,Ge=96,We=256,Je=256,qe=256,de=256,jt=4096,ot=512,Ze=4096,ue=32*1024,Qe=1024,tn=96*1024,en=256,Gt=1024,nn="__no_session_draft__";function ye(){return{remaining:tn,scrollSnapshotsRemaining:en,outlines:Ye()}}const L=t=>typeof t=="object"&&t!==null&&!Array.isArray(t),pe=t=>t!=="__proto__"&&t!=="constructor"&&t!=="prototype";function v(t,e,n,r=!1){if(!(typeof t!="string"||t.length>e||t.length>n.remaining)&&!(!r&&t.trim().length===0))return n.remaining-=t.length,t}const z=(t,e,n)=>typeof t=="number"&&Number.isFinite(t)&&t>=e&&t<=n?t:void 0;function it(t,e,n,r,i=()=>!0,s=()=>{},o=[]){if(!L(t))return null;const c=Object.create(null);let a=0;const w=[...new Set(o)],S=new Set(w),g=[...w.flatMap(p=>Object.prototype.hasOwnProperty.call(t,p)?[[p,t[p]]]:[]),...Object.entries(t).filter(([p])=>!S.has(p))];for(const[p,I]of g){if(a>=e)break;if(!pe(p)||!i(I))continue;const b=v(p,de,n),u=r(I);b===void 0||u===void 0||(c[b]=u,a+=1,s())}return c}function he(t,e,n,r,i=[]){return it(t,e,r,s=>v(s,n,r,!0),void 0,void 0,i)}function rn(t,e){if(!L(t))return;const n=z(t.scrollTop,0,1e9),r=z(t.updatedAt,0,Number.MAX_SAFE_INTEGER);if(n===void 0||r===void 0||typeof t.atBottom!="boolean")return;const i={scrollTop:n,atBottom:t.atBottom,updatedAt:r},s=z(t.scrollRatio,0,1),o=z(t.maxScrollTop,0,1e9),c=z(t.anchorOffset,-1e6,1e6),a=t.anchorKey===void 0?void 0:v(t.anchorKey,Qe,e);s!==void 0&&(i.scrollRatio=s),o!==void 0&&(i.maxScrollTop=o),a!==void 0&&(i.anchorKey=a),c!==void 0&&(i.anchorOffset=c),(t.followModeType==="following"||t.followModeType==="escaped")&&(i.followModeType=t.followModeType),typeof t.windowIsLatest=="boolean"&&(i.windowIsLatest=t.windowIsLatest);const w=t.windowCursor===void 0?void 0:v(t.windowCursor,Gt,e);if(w!==void 0&&(i.windowCursor=w),Array.isArray(t.newerCursors)){const S=[];for(const g of t.newerCursors.slice(-32)){if(g===null||g===""){S.push(null);continue}const p=v(g,Gt,e);p!==void 0&&S.push(p)}S.length>0&&(i.newerCursors=S)}return i}function on(t,e){if(!Array.isArray(t))return null;const n=[],r=new Set;for(const i of t.slice(0,qe)){if(typeof i!="string"||r.has(i))continue;const s=v(i,ot,e);s!==void 0&&(r.add(s),n.push(s))}return n}function sn(t,e,n,r){const i=e.priorityDrafts,s=Object.fromEntries(Object.entries(t.drafts??{}).filter(([d])=>!Object.prototype.hasOwnProperty.call(i,d))),o=he(s,Math.max(0,He-Object.keys(i).length),ue,n),c=o?{...i,...o}:null,a=Math.min(Ge,n.scrollSnapshotsRemaining),w=it(t.scrollSnapshots??{},a,n,d=>rn(d,n),void 0,()=>{n.scrollSnapshotsRemaining-=1}),S=it(t.unseenIdleSince??{},We,n,d=>z(d,0,Number.MAX_SAFE_INTEGER)),g=it(t.generationRecovery??{},Je,n,d=>d,d=>d==="working"||d==="interrupted"),p=t.expandedSessionIds===void 0?void 0:on(t.expandedSessionIds,n);if(!c||!w||!S||!g||p===null)return null;const I=Object.fromEntries(Object.entries(t.attachments??{}).filter(([d])=>!e.prioritySessionIds.includes(d))),b=Dt(I,c);if(!b)return null;const u={kind:"workspace",folder:e.folder,drafts:b.drafts,attachments:{...e.priorityAttachments,...b.attachments},scrollSnapshots:w,unseenIdleSince:S,generationRecovery:g};p!==void 0&&(u.expandedSessionIds=p);const h=Fe(t.outlineIndexes,n.outlines,e.activeSessionId);h&&(u.outlineIndexes=h),Number.isInteger(t.occurrence)&&Number(t.occurrence)>=0&&Number(t.occurrence)<fe&&(u.occurrence=Number(t.occurrence));const l=t.projectName===void 0?void 0:v(t.projectName,jt,n),f=t.binaryPath===void 0?void 0:v(t.binaryPath,jt,n);return l!==void 0&&(u.projectName=l),f!==void 0&&(u.binaryPath=f),e.activeParentSessionId!==void 0&&(u.activeParentSessionId=e.activeParentSessionId),e.activeSessionId!==void 0&&(u.activeSessionId=e.activeSessionId),u}function cn(t,e){if(!L(t))return null;const n=t.kind??t.type;if(n==="sidecar"){const c=v(t.sidecarId,ot,e);return c===void 0?null:{kind:n,sidecarId:c}}if(n!=="workspace"&&n!=="instance"||!["drafts","attachments","scrollSnapshots","unseenIdleSince","generationRecovery"].every(c=>L(t[c]??{})))return null;const r=v(t.folder,jt,e);if(r===void 0)return null;const i=t.activeParentSessionId===void 0?void 0:v(t.activeParentSessionId,ot,e),s=t.activeSessionId===void 0?void 0:v(t.activeSessionId,ot,e),o=[s,nn].filter(c=>!!c);return{kind:"workspace",value:t,folder:r,activeParentSessionId:i,activeSessionId:s,prioritySessionIds:o,priorityDrafts:Object.create(null),priorityAttachments:Object.create(null)}}function an(t,e){const n=t.value.drafts??{};if(!L(n))return;for(const o of t.prioritySessionIds){if(!pe(o)||!Object.prototype.hasOwnProperty.call(n,o))continue;const c=e.remaining,a=v(o,de,e),w=v(n[o],ue,e,!0);if(a===void 0||w===void 0){e.remaining=c;continue}t.priorityDrafts[a]=w}const r=t.value.attachments??{};if(!L(r))return;const i=Object.fromEntries(t.prioritySessionIds.filter(o=>Object.prototype.hasOwnProperty.call(r,o)).map(o=>[o,r[o]])),s=Dt(i,t.priorityDrafts,t.prioritySessionIds);s&&(t.priorityDrafts=s.drafts,t.priorityAttachments=s.attachments)}function Tt(t){return me(t,ye())}function me(t,e){if(!L(t)||!Array.isArray(t.tabs)||!Number.isInteger(t.activeTabIndex))return null;const n=Number(t.activeTabIndex),r=t.tabs.slice(0,fe),i=new Map,s=new Map,o=u=>{const h=cn(r[u],e);h&&i.set(u,h)},c=(u,h)=>{const l=i.get(u);if(!l)return;const f=l.kind==="sidecar"?l:sn(l.value,l,e);f&&s.set(u,f)};r.forEach((u,h)=>o(h));const a=[n,...r.map((u,h)=>h).filter(u=>u!==n)];for(const u of a){const h=i.get(u);(h==null?void 0:h.kind)==="workspace"&&an(h,e)}r[n]!==void 0&&c(n),r.forEach((u,h)=>{h!==n&&c(h)});const S=r.flatMap((u,h)=>{const l=i.get(h);return l?[{originalIndex:h,identity:l}]:[]}).flatMap(({originalIndex:u})=>{const h=s.get(u);return h?[{originalIndex:u,tab:h}]:[]});if(t.tabs.length&&!S.length)return null;const g=S.map(({tab:u})=>u),p=S.findIndex(({originalIndex:u})=>u===n),I=S.findIndex(({originalIndex:u})=>u>n),b=g.length?p>=0?p:I>=0?I:g.length-1:-1;return{tabs:g,activeTabIndex:b,...t.homeActive===!0?{homeActive:!0}:{}}}function Bt(t){if(!L(t)||t.version!==void 0&&t.version!==1||!Number.isSafeInteger(t.revision)||Number(t.revision)<0)return null;const e=z(t.savedAt,0,Number.MAX_SAFE_INTEGER);if(e===void 0)return null;const n=ye(),r=t.session===null?null:me(t.session,n);if(t.session!==null&&!r)return null;const i=he(t.layout,$e,Ze,n);return i?{version:1,revision:Number(t.revision),savedAt:e,layout:i,session:r}:null}const ln=new TextEncoder;function Nt(t){return Array.isArray(t)?t.map(Nt):typeof t!="object"||t===null?t:Object.fromEntries(Object.keys(t).sort().map(e=>[e,Nt(t[e])]))}function $(t){const e=JSON.stringify(Nt(t));if(e===void 0)throw new TypeError("Client state partition must be JSON-serializable");return e}async function St(t){const e=await crypto.subtle.digest("SHA-256",ln.encode(t));return Array.from(new Uint8Array(e),n=>n.toString(16).padStart(2,"0")).join("")}const Wt=new WeakMap;function fn(t){let e=Wt.get(t);return e||(e=(async()=>{const n=Object.create(null),r=[];for(let o=0;o<t.entries.length;o+=512){const c=$({format:1,index:o/512,entries:t.entries.slice(o,o+512)}),a=await St(c);n[a]=c,r.push(a)}const{entries:i,...s}=t;return{descriptor:{...s,entryPartitions:r},partitions:n}})(),Object.isFrozen(t)&&Wt.set(t,e)),e}async function dn(t,e,n,r){if(!t||typeof t!="object"||Array.isArray(t))return;const i=t,s=i.entryPartitions;if(!Array.isArray(s)||s.length>391||new Set(s).size!==s.length||!s.every(c=>typeof c=="string"&&/^[a-f0-9]{64}$/.test(c)&&e.has(c)))return;s.forEach(c=>n.add(c));const o=[];for(let c=0;c<s.length;c++){const a=await r(s[c]).catch(()=>null);if(!a||a.format!==1||a.index!==c||!Array.isArray(a.entries)||a.entries.length>512||c<s.length-1&&a.entries.length!==512)return;o.push(...a.entries)}return le({...i,entries:o})}const q=1024*1024,xt=1024*1024,un=4096,Jt=256*1024*1024,yn=512,vt=768*1024,Se=256,we=vt*Se,D=/^[0-9a-f]{64}$/,pn=["layout","partitionKeys","revision","savedAt","sessionPartition","version"],hn=new Set(["__proto__","constructor","prototype"]),X=new TextEncoder,R=t=>typeof t=="object"&&t!==null&&!Array.isArray(t),_=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),et=t=>typeof t=="string"&&t.length>0&&t.length<=yn&&t.trim().length>0&&!hn.has(t);function ge(t){return Array.isArray(t)&&t.every((e,n)=>typeof e=="string"&&D.test(e)&&(n===0||t[n-1]<e))}function C(t,e,n=[]){const r=new Set([...e,...n]);return e.every(i=>_(t,i))&&Object.keys(t).every(i=>r.has(i))}function lt(t,e){try{return $(t)===$(e)}catch{return!1}}function mn(t){let e="";for(let n=0;n<t.length;n+=32768)e+=String.fromCharCode(...t.subarray(n,n+32768));return btoa(e)}const Sn=t=>Uint8Array.from(atob(t),e=>e.charCodeAt(0)),Ct=t=>typeof t=="string"&&t.length%4===0&&/^[A-Za-z0-9+/]*={0,2}$/.test(t);async function qt(t,e){if(!Ct(t)||t.length>we)throw new Error("Client state attachment exceeds the 192 MiB encoded blob limit");const n=[];for(let r=0,i=0;r<t.length||r===0;r+=vt,i+=1)n.push(await e({format:2,index:i,data:t.slice(r,r+vt)}));return n}async function wn(t,e){return Promise.all(t.map(async n=>{let r;return n.source.type==="file"?(r={type:"file",path:n.source.path,mime:n.source.mime},n.source.data!==void 0&&(r.dataPartitions=await qt(n.source.data,e))):n.source.type==="text"?r={type:"text",valuePartitions:await qt(mn(X.encode(n.source.value)),e)}:r=n.source,{...n,source:r}}))}async function Rt(t){const e=Object.create(null),n=async o=>{const c=$(o);if(X.encode(c).byteLength>q)throw new Error("Client state partition exceeds the native size limit");const a=await St(c);return e[a]=c,a},r=t===null?null:{tabs:await Promise.all(t.tabs.map(async o=>{var g;if(o.kind==="sidecar")return{kind:o.kind,sidecarId:o.sidecarId};const c=new Set([...Object.keys(o.drafts),...Object.keys(o.attachments),...Object.keys(o.scrollSnapshots),...Object.keys(o.unseenIdleSince),...Object.keys(o.generationRecovery),...Object.keys(o.outlineIndexes??{})]),a=Object.create(null);for(const p of[...c].sort()){const I={format:2};_(o.drafts,p)&&(I.draft=o.drafts[p]),_(o.attachments,p)&&(I.attachments=await wn(o.attachments[p],n)),_(o.scrollSnapshots,p)&&(I.scrollSnapshot=o.scrollSnapshots[p]),_(o.unseenIdleSince,p)&&(I.unseenIdleSince=o.unseenIdleSince[p]),_(o.generationRecovery,p)&&(I.generationRecovery=o.generationRecovery[p]);const b=(g=o.outlineIndexes)==null?void 0:g[p],u=b?await fn(b):void 0;u&&(I.outline=u.descriptor,Object.assign(e,u.partitions));const h=await n(I),l=(I.attachments??[]).flatMap(f=>{if(!R(f)||!R(f.source))return[];const d=f.source.dataPartitions??f.source.valuePartitions;return Array.isArray(d)?d.filter(O=>typeof O=="string"):[]});a[p]={documentPartition:h,partitionKeys:[...new Set([h,...l,...Object.keys((u==null?void 0:u.partitions)??{})])].sort()}}const w={format:2,sessions:a};o.activeParentSessionId!==void 0&&(w.activeParentSessionId=o.activeParentSessionId),o.activeSessionId!==void 0&&(w.activeSessionId=o.activeSessionId),o.expandedSessionIds!==void 0&&(w.expandedSessionIds=o.expandedSessionIds);const S={kind:o.kind,folder:o.folder,workspacePartition:await n(w)};return o.occurrence!==void 0&&(S.occurrence=o.occurrence),o.projectName!==void 0&&(S.projectName=o.projectName),o.binaryPath!==void 0&&(S.binaryPath=o.binaryPath),S})),activeTabIndex:t.activeTabIndex,...t.homeActive!==void 0?{homeActive:t.homeActive}:{}},i=await n({format:2,session:r}),s=Object.keys(e).sort();return{sessionPartition:i,partitionKeys:s,partitions:Object.fromEntries(s.map(o=>[o,e[o]]))}}async function gn(t){var n;const e=await Rt(t.session);return{root:{version:2,revision:t.revision,savedAt:t.savedAt,layout:t.layout,sessionPartition:e.sessionPartition,partitionKeys:e.partitionKeys,...(n=t.session)!=null&&n.tabs.some(r=>r.kind==="workspace"&&Object.keys(r.outlineIndexes??{}).length)?{extensions:["outline-index-v1"]}:{}},partitions:e.partitions,partitionKeys:e.partitionKeys}}function An(t){if(t.partitionKeys.length>un)return!1;const e=JSON.stringify(t.root);if(e.length>xt)return!1;let n=X.encode(e).byteLength;if(n>xt)return!1;for(const r in t.partitions){if(!_(t.partitions,r))continue;const i=t.partitions[r];if(i.length>q||i.length>Jt-n)return!1;const s=X.encode(i).byteLength;if(s>q||s>Jt-n)return!1;n+=s}return!0}function In(t){if(!R(t)||t.version!==2||typeof t.sessionPartition!="string"||!D.test(t.sessionPartition)||!ge(t.partitionKeys)||!t.partitionKeys.includes(t.sessionPartition)||Object.keys(t).sort().join("\0")!==[...pn,...t.extensions===void 0?[]:["extensions"]].sort().join("\0")||t.extensions!==void 0&&!lt(t.extensions,["outline-index-v1"]))return null;let e;try{e=JSON.stringify(t)}catch{return null}if(X.encode(e).byteLength>xt)return null;const n=Bt({...t,version:1,session:null});return!n||!lt(t,{version:2,revision:n.revision,savedAt:n.savedAt,layout:n.layout,sessionPartition:t.sessionPartition,partitionKeys:t.partitionKeys,...t.extensions===void 0?{}:{extensions:t.extensions}})?null:{root:n,partitionKey:t.sessionPartition,partitionKeys:t.partitionKeys}}function Ae(t){try{return{value:JSON.parse(t)}}catch{return null}}async function _n(t,e,n,r,i){var h;if(!C(t,["format","session"])||$(t)!==r.get(e))return;if(t.session===null){const l=await Rt(null);return Zt(l,e,n,r)?null:void 0}if(!R(t.session)||!C(t.session,["tabs","activeTabIndex"],["homeActive"])||!Array.isArray(t.session.tabs))return;const s=async l=>{if(typeof l!="string"||!D.test(l))return null;let f=r.get(l);if(f===void 0){if(f=await i(l)??void 0,f===void 0||X.encode(f).byteLength>q||await St(f)!==l)return null;r.set(l,f)}const d=Ae(f);return d&&R(d.value)&&$(d.value)===f?d.value:null},o=(l,f)=>{const d=[...new Set(l)].sort();return d.length===f.length&&d.every((O,E)=>O===f[E])},c=async(l,f,d)=>{if(!Array.isArray(l)||!l.length||l.length>Se||!l.every(y=>typeof y=="string"&&D.test(y))||new Set(l).size!==l.length)return null;const O=[];let E=0;for(const[y,m]of l.entries()){if(!f.has(m))return null;d.add(m);const N=await s(m);if(!N||!Ct(N.data))return null;if(N.format===1){if(!C(N,["format","data"]))return null}else if(N.format===2){if(!C(N,["format","index","data"])||N.index!==y)return null}else return null;if(N.data.length>we-E)return null;E+=N.data.length,O.push(N.data)}const A=O.join("");return Ct(A)?A:null},a=async(l,f,d)=>{if(!Array.isArray(l))return null;const O=[];for(const E of l){if(!R(E)||!C(E,["id","type","display","url","filename","mediaType","source"])||!R(E.source))return null;const A=E.source;if(A.type==="file"){if(!C(A,["type","path","mime"],["dataPartitions"]))return null;if(_(A,"dataPartitions")){const y=await c(A.dataPartitions,f,d);if(y===null)return null;O.push({...E,source:{type:A.type,path:A.path,mime:A.mime,data:y}})}else O.push(E);continue}if(A.type==="text"){if(!C(A,["type","valuePartitions"]))return null;const y=await c(A.valuePartitions,f,d);if(y===null)return null;try{const m=new TextDecoder("utf-8",{fatal:!0}).decode(Sn(y));O.push({...E,source:{type:A.type,value:m}})}catch{return null}continue}O.push(E)}return O},w=[],S=new Set([e]);let g=!1,p=!1;for(const l of t.session.tabs){if(!R(l))return;if(l.kind==="sidecar"){if(!C(l,["kind","sidecarId"]))return;w.push({kind:l.kind,sidecarId:l.sidecarId});continue}if(l.kind!=="workspace"||!C(l,["kind","folder","workspacePartition"],["occurrence","projectName","binaryPath"])||typeof l.workspacePartition!="string"||!D.test(l.workspacePartition))return;S.add(l.workspacePartition);const f=await s(l.workspacePartition);if(!f||f.format!==1&&f.format!==2||!C(f,["format","sessions"],["activeParentSessionId","activeSessionId","expandedSessionIds"])||!R(f.sessions)||(p||(p=f.format===1),!Object.keys(f.sessions).every(et)||_(f,"activeParentSessionId")&&!et(f.activeParentSessionId)||_(f,"activeSessionId")&&!et(f.activeSessionId)||_(f,"expandedSessionIds")&&(!Array.isArray(f.expandedSessionIds)||!f.expandedSessionIds.every(et))))return;const d={kind:l.kind,folder:l.folder,drafts:Object.create(null),attachments:Object.create(null),scrollSnapshots:Object.create(null),unseenIdleSince:Object.create(null),generationRecovery:Object.create(null)};for(const y of["occurrence","projectName","binaryPath"])_(l,y)&&(d[y]=l[y]);for(const y of["activeParentSessionId","activeSessionId","expandedSessionIds"])_(f,y)&&(d[y]=f[y]);const O=[];for(const[y,m]of Object.entries(f.sessions)){if(f.format===1){if(typeof m!="string"||!D.test(m))return;O.push({sessionId:y,documentKey:m,partitionKeys:[m]}),S.add(m);continue}if(!R(m)||!C(m,["documentPartition","partitionKeys"])||typeof m.documentPartition!="string"||!D.test(m.documentPartition)||!ge(m.partitionKeys)||!m.partitionKeys.includes(m.documentPartition))return;O.push({sessionId:y,documentKey:m.documentPartition,partitionKeys:m.partitionKeys}),m.partitionKeys.forEach(N=>S.add(N))}const E=typeof f.activeSessionId=="string"?f.activeSessionId:void 0;O.sort((y,m)=>y.sessionId===E?-1:m.sessionId===E?1:y.sessionId.localeCompare(m.sessionId));const A=new Set;for(const{sessionId:y,documentKey:m,partitionKeys:N}of O){const x=await s(m),Yt=new Set(N),At=new Set([m]);if(!(x&&(x.format===1||x.format===2)&&C(x,["format"],["draft","attachments","scrollSnapshot","unseenIdleSince","generationRecovery","outline"])&&Object.keys(x).length>1)){g=!0,A.add(y);continue}const It=_(x,"attachments")?x.format===1?x.attachments:await a(x.attachments,Yt,At):void 0,G=x.outline===void 0?void 0:await dn(x.outline,Yt,At,s);if(x.outline!==void 0&&!G&&(g=!0),_(x,"attachments")&&It===null||!o(At,N)){g=!0,A.add(y);continue}const k={kind:"workspace",folder:"/",drafts:Object.create(null),attachments:Object.create(null),scrollSnapshots:Object.create(null),unseenIdleSince:Object.create(null),generationRecovery:Object.create(null)},Ut=[["draft","drafts"],["scrollSnapshot","scrollSnapshots"],["unseenIdleSince","unseenIdleSince"],["generationRecovery","generationRecovery"]];for(const[Y,je]of Ut)_(x,Y)&&(k[je][y]=x[Y]);It!==void 0&&(k.attachments[y]=It),G&&(k.outlineIndexes={[y]:G});const Ft=(h=Tt({tabs:[k],activeTabIndex:0}))==null?void 0:h.tabs[0];if(!Ft||!lt(k,Ft)){g=!0,A.add(y);continue}for(const[,Y]of Ut)_(k[Y],y)&&(d[Y][y]=k[Y][y]);_(k.attachments,y)&&(d.attachments[y]=k.attachments[y]),G&&(d.outlineIndexes??(d.outlineIndexes=Object.create(null)),d.outlineIndexes[y]=G)}A.has(String(d.activeSessionId))&&delete d.activeSessionId,A.has(String(d.activeParentSessionId))&&delete d.activeParentSessionId,Array.isArray(d.expandedSessionIds)&&(d.expandedSessionIds=d.expandedSessionIds.filter(y=>!A.has(String(y)))),w.push(d)}if(!o(S,n))return;const I={tabs:w,activeTabIndex:t.session.activeTabIndex,..._(t.session,"homeActive")?{homeActive:t.session.homeActive}:{}},b=Tt(I);if(!b||!lt(I,b))return;if(g||p)return b;const u=await Rt(b);return Zt(u,e,n,r)?b:void 0}function Zt(t,e,n,r){return t.sessionPartition!==e||t.partitionKeys.length!==n.length||!t.partitionKeys.every((i,s)=>i===n[s])||t.partitionKeys.length!==r.size?!1:t.partitionKeys.every(i=>r.get(i)===t.partitions[i])}async function bn(t,e,n){const r=In(t);if(!r||e!==1)return null;try{const i=await n(r.partitionKey);if(i===null||X.encode(i).byteLength>q||await St(i)!==r.partitionKey)return null;const s=Ae(i);if(!s)return null;if(R(s.value)&&s.value.format===2){const o=new Map([[r.partitionKey,i]]),c=await _n(s.value,r.partitionKey,r.partitionKeys,o,n);return c===void 0?null:{...r.root,session:c}}return null}catch{return null}}const On=t=>R(t)&&t.version===2,Pn=250,En=3,jn=1024*1024,Tn=64,Nn=256,Xt=4096,xn="opencode-session-",vn=new Set(["__proto__","constructor","prototype"]),[V,ft]=yt(!0),[H,st]=yt(!1),[Cn,Rn]=yt(!1),[kt,Mt]=yt(null);let Kt=!1,nt=null,T=Object.create(null),Ie=0,j=!1,P=!1,ct=null,B=Promise.resolve(),Qt=Promise.resolve(),Z,Lt;const U=new Set;function wt(t,e){try{return e(window.localStorage)}catch{return t}}function _e(t){return t.length>0&&t.length<=Nn&&!vn.has(t)}const te=t=>wt(null,e=>{const n=e.getItem(t);return n!==null&&n.length<=Xt?n:null}),zt=(t,e)=>wt(void 0,n=>n.setItem(t,e));function be(t){const e=new Set(Object.keys(T));for(let n=0;n<t.length;n+=1){const r=t.key(n);r!=null&&r.startsWith(xn)&&e.add(r)}return[...e]}const dt=t=>Object.prototype.hasOwnProperty.call(T,t),ut=()=>Object.keys(T).length>=Tn;function kn(){return wt(!1,t=>{const e=Object.keys(T).length;for(const n of be(t)){if(dt(n))continue;if(ut())break;const r=t.getItem(n);r===null||r.length>Xt||(T[n]=r)}return Object.keys(T).length!==e})}function Vt(){return Kt&&V()&&H()&&!P}const gt=()=>{ct!==null&&clearTimeout(ct),ct=null};function Oe(){if(gt(),!j||!Vt())return B;const t={version:1,revision:++Ie,savedAt:Date.now(),layout:{...T},session:Lt===1?kt():Mn(kt())},e=Bt(t);if(!e)return Promise.reject(new Error("Client snapshot normalization failed"));T={...e.layout},j=!1;const n=B.then(async()=>{try{const r=Lt===1?await gn(e):null;if(r&&!An(r))throw new Error("Client snapshot exceeds the native partition count or size limits");if(!r&&new TextEncoder().encode(JSON.stringify(e)).byteLength>jn)throw new Error("Client snapshot exceeds the V1 1 MiB limit and partition persistence is unavailable");if(!(r?await Me({protocolVersion:1,snapshot:r.root,partitions:r.partitions,partitionKeys:r.partitionKeys}):await ke(e)))throw ft(!1),new Error("Native client state save was rejected");Z=void 0}catch(r){throw j=!0,Z=r,r}});return B=n.catch(()=>{}),n}function Mn(t){return t&&{...t,tabs:t.tabs.map(e=>{if(e.kind!=="workspace")return e;const{outlineIndexes:n,...r}=e;return r})}}function Q(){j=!0,Vt()&&(gt(),ct=setTimeout(()=>void Oe().catch(t=>console.warn("[client-state] failed to save client snapshot",t)),Pn))}function at(t=null,e=!1){T=t?{...t.layout}:Object.create(null),e&&(Ie=(t==null?void 0:t.revision)??0),Rn(t!==null),Mt((t==null?void 0:t.session)??null)}async function Pe(t,e,n=!1){const r=P;let i=j;P="transaction",U.clear(),gt(),j=!1;try{if(await B,i||(i=j),j=!1,!await t())throw n&&ft(!1),new Error(e);wt(void 0,s=>{for(const o of be(s))s.removeItem(o)}),at(),U.clear(),P="snapshot"}catch(s){i||(i=j);for(const o of U)zt(o,T[o]);throw U.clear(),P=r,j=i,j&&Q(),s}}function Ee(t){const e=Qt.then(t);return Qt=e.catch(()=>{}),e}function Kn(t){const e=t===null?null:Tt(t);if(!(t!==null&&e===null)){if(P==="transaction"){Mt(e),j=!0;return}P||!V()||!H()||(Mt(e),Q())}}function Ln(t){if(!_e(t))return null;if(!V())return te(t);if(!H()||P)return null;if(dt(t))return T[t]??null;const e=te(t);return e===null||ut()||(T[t]=e,Q()),e}function zn(t,e){if(!(!_e(t)||e.length>Xt)){if(!V())return zt(t,e);if(P==="transaction"){if(!dt(t)&&ut())return;j||(j=T[t]!==e),T[t]=e,U.add(t);return}!H()||P||!dt(t)&&ut()||(zt(t,e),T[t]!==e&&(T[t]=e,Q()))}}async function Dn(){gt();let t=Z;for(let e=0;e<En;e+=1){for(;;){const n=B;if(await n,n===B)break}if(!j){if(t!==void 0)throw t;return}if(!Vt()){const n=Z??t;if(n!==void 0)throw n;return}try{await Oe(),t=void 0}catch(n){t=n}}if(await B,!!j)throw t??new Error("Client state remained dirty after the final flush attempt")}async function Bn(){await Ee(async()=>{if(!V())throw new Error("Client state is not owned by this window");await Pe(Le,"Native client state clear was rejected",!0)})}async function Xn(t){await Ee(async()=>{if(!(t===H()&&(!t||P===!1))){if(!V())throw new Error("Client state is not owned by this window");if(t){if(!await $t(!0))throw new Error("Native restore preference update was rejected");P=!1,st(!0);return}st(!1);try{await Pe(()=>$t(!1),"Native restore preference update was rejected")}catch(e){throw st(!0),e}}})}function Vn(){return nt||(nt=(async()=>{try{const t=await Re();if(Lt=t.partitionProtocolVersion,ft(t.isPrimary),st(t.restoreEnabled),at(null,!0),j=!1,Z=void 0,P=!1,U.clear(),Kt=!0,!t.isPrimary||!t.restoreEnabled)return;let e;if(On(t.snapshot)){P="snapshot";try{e=await bn(t.snapshot,t.partitionProtocolVersion,Ke)}catch(n){e=null,console.warn("[client-state] failed to load client snapshot partition",n)}e&&(P=!1)}else e=Bt(t.snapshot),P=t.snapshot!==null&&e===null?"snapshot":!1;at(e,!0),!P&&kn()&&Q()}catch(t){Kt=!0,ft(!1),at(),console.warn("[client-state] failed to initialize client state",t)}})(),nt)}const Zn=Object.freeze(Object.defineProperty({__proto__:null,clearRestoredClientState:Bn,clientStateIsPrimary:V,flushClientState:Dn,initializeClientState:Vn,loadedClientSnapshotExists:Cn,loadedRestorableSession:kt,readClientLayoutValue:Ln,restorePreviousStateEnabled:H,setRestorePreviousStateEnabled:Xn,updateRestorableSession:Kn,writeClientLayoutValue:zn},Symbol.toStringTag,{value:"Module"}));export{Jn as a,H as b,V as c,Gn as d,Hn as e,Dn as f,Xn as g,qn as h,Bn as i,Zn as j,kt as l,le as n,Ln as r,Wn as s,Kn as u,zn as w};
2
+ //# sourceMappingURL=client-state-BB0go4Xe.js.map