gestalt-mobile 0.6.0 → 0.6.1
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.
|
@@ -9,4 +9,4 @@
|
|
|
9
9
|
`);i&&t.push({kind:`text`,parts:_a(i)})};for(let e=0;e<n.length-1;e+=1){let a=ha(n[e]??``),o=ha(n[e+1]??``);if(!a||!o||a.length!==o.length||!o.every(ga))continue;i(e),e+=2;let s=[];for(;e<n.length;){let t=ha(n[e]??``);if(!t||t.length!==a.length)break;s.push(t),e+=1}t.push({kind:`table`,headers:a.map(_a),rows:s.map(e=>e.map(_a))}),r=e,--e}return i(n.length),t.length?t:[{kind:`text`,parts:_a(e)}]}function ha(e){let t=e.trim();if(!t.includes(`|`))return null;let n=t.replace(/^\|/,``).replace(/\|$/,``).split(`|`).map(e=>e.trim());return n.length>1&&n.every(Boolean)?n:null}function ga(e){return/^:?-{3,}:?$/.test(e)}function _a(e){let t=[],n=/\[([^\]]+)\]\((https?:\/\/[^\s)]+|codex:\/\/[^\s)]+|\/[^\s)]+)\)|`([^`]+)`/g,r=0;for(let i of e.matchAll(n)){let n=e.slice(r,i.index);n&&t.push({kind:`text`,text:n}),t.push(i[3]?{kind:`code`,text:i[3]}:{kind:`link`,text:i[1]??``,href:i[2]??``}),r=(i.index??0)+i[0].length}let i=e.slice(r);return i&&t.push({kind:`text`,text:i}),t}var va=(e,t=d)=>{var n=Dr();Q(V(n),17,t,Nr,(e,t)=>{var n=Dr(),r=V(n),i=e=>{var n=ba(),r=B(n,!0);P(n),U(()=>{$(n,`href`,K(t).href),X(r,K(t).text)}),Y(e,n)},a=e=>{var n=xa(),r=B(n,!0);P(n),U(()=>X(r,K(t).text)),Y(e,n)},o=e=>{var n=Er();U(()=>X(n,K(t).text)),Y(e,n)};Z(r,e=>{K(t).kind===`link`?e(i):K(t).kind===`code`?e(a,1):e(o,-1)}),Y(e,n)}),Y(e,n)},ya=(e,t=d)=>{var n=Dr();Q(V(n),17,()=>pa(t()),Nr,(e,t)=>{var n=Dr(),r=V(n),i=e=>{var n=Sa(),r=B(n),i=B(r,!0);P(r),P(n),U(()=>X(i,K(t).text)),Y(e,n)},a=e=>{var n=Ea(),r=B(n),i=B(r),a=B(i);Q(a,21,()=>K(t).headers,Nr,(e,t)=>{var n=Ca();va(B(n),()=>K(t)),P(n),Y(e,n)}),P(a),P(i);var o=H(i);Q(o,21,()=>K(t).rows,Nr,(e,t)=>{var n=Ta();Q(n,21,()=>K(t),Nr,(e,t)=>{var n=wa();va(B(n),()=>K(t)),P(n),Y(e,n)}),P(n),Y(e,n)}),P(o),P(r),P(n),Y(e,n)},o=e=>{var n=Da();va(B(n),()=>K(t).parts),P(n),Y(e,n)};Z(r,e=>{K(t).kind===`code`?e(i):K(t).kind===`table`?e(a,1):e(o,-1)}),Y(e,n)}),Y(e,n)},ba=J(`<a target="_blank" rel="noreferrer"> </a>`),xa=J(`<code class="svelte-1im954t"> </code>`),Sa=J(`<pre class="svelte-1im954t"><code class="svelte-1im954t"> </code></pre>`),Ca=J(`<th scope="col" class="svelte-1im954t"><!></th>`),wa=J(`<td class="svelte-1im954t"><!></td>`),Ta=J(`<tr></tr>`),Ea=J(`<div class="table-scroll svelte-1im954t"><table class="svelte-1im954t"><thead><tr></tr></thead><tbody></tbody></table></div>`),Da=J(`<div><!></div>`),Oa=J(`<time class="svelte-1im954t"> <!></time>`),ka=J(`<div class="entry-heading svelte-1im954t"><strong>prompt</strong> <!></div> <div class="entry-content svelte-1im954t"><!></div>`,1),Aa=J(`<button class="commentary-toggle svelte-1im954t" type="button"><span aria-hidden="true"> </span>commentary</button>`),ja=J(`<div class="commentary-content svelte-1im954t"><!></div>`),Ma=J(`<section class="answer-turn"><div class="entry-heading svelte-1im954t"><strong>answer</strong> <!> <!> <!></div> <!> <div class="entry-content svelte-1im954t"><!></div></section>`),Na=J(`<section class="commentary-turn"><div class="entry-heading svelte-1im954t"><details><summary>commentary</summary> <!></details> <!></div></section>`),Pa=J(`<li><!></li>`),Fa=J(`<ol aria-label="Chat messages" class="svelte-1im954t"></ol>`);function Ia(e,t){ze(t,!0);let n=F(()=>ua(t.messages)),r=z({}),i=F(()=>K(n).findLast(e=>e.kind===`assistant`&&e.answer)?.id);var a=Fa();Q(a,23,()=>K(n),e=>e.id,(e,a,o)=>{var s=Pa(),c=B(s),l=e=>{var t=ka(),r=V(t),i=H(B(r),2),s=e=>{var t=Oa(),r=B(t),i=H(r),s=e=>{var t=Er();U(e=>X(t,`· ${e??``}`),[()=>da(K(n)[K(o)-1]?.occurredAt,K(a).occurredAt)]),Y(e,t)},c=F(()=>da(K(n)[K(o)-1]?.occurredAt,K(a).occurredAt));Z(i,e=>{K(c)&&e(s)}),P(t),U((e,n)=>{$(t,`datetime`,e),X(r,`${n??``} `)},[()=>new Date(K(a).occurredAt).toISOString(),()=>fa(K(a).occurredAt)]),Y(e,t)};Z(i,e=>{K(a).occurredAt&&e(s)}),P(r);var c=H(r,2);ya(B(c),()=>K(a).text),P(c),Y(e,t)},u=e=>{var s=Ma(),c=B(s),l=H(B(c),2),u=e=>{var t=Aa(),n=B(t),i=B(n,!0);P(n),je(),P(t),U(e=>{$(t,`aria-expanded`,e),$(t,`aria-controls`,`commentary-${K(a).id}`),X(i,r[K(a).id]?`⌄`:`>`)},[()=>!!r[K(a).id]]),q(`click`,t,()=>r[K(a).id]=!r[K(a).id]),Y(e,t)};Z(l,e=>{K(a).commentary&&e(u)});var d=H(l,2),f=e=>{Mi(e,{get activities(){return t.activities}})};Z(d,e=>{K(a).id===K(i)&&e(f)});var p=H(d,2),m=e=>{var t=Oa(),r=B(t),i=H(r),s=e=>{var t=Er();U(e=>X(t,`· ${e??``}`),[()=>da(K(n)[K(o)-1]?.occurredAt,K(a).occurredAt)]),Y(e,t)},c=F(()=>da(K(n)[K(o)-1]?.occurredAt,K(a).occurredAt));Z(i,e=>{K(c)&&e(s)}),P(t),U((e,n)=>{$(t,`datetime`,e),X(r,`${n??``} `)},[()=>new Date(K(a).occurredAt).toISOString(),()=>fa(K(a).occurredAt)]),Y(e,t)};Z(p,e=>{K(a).occurredAt&&e(m)}),P(c);var h=H(c,2),g=e=>{var t=ja();ya(B(t),()=>K(a).commentary),P(t),U(()=>$(t,`id`,`commentary-${K(a).id}`)),Y(e,t)};Z(h,e=>{K(a).commentary&&r[K(a).id]&&e(g)});var _=H(h,2);ya(B(_),()=>K(a).answer),P(_),P(s),Y(e,s)},d=e=>{var n=Na(),r=B(n),i=B(r);ya(H(B(i),2),()=>K(a).commentary),P(i),Mi(H(i,2),{get activities(){return t.activities}}),P(r),P(n),Y(e,n)};Z(c,e=>{K(a).kind===`user`?e(l):K(a).answer?e(u,1):K(a).commentary&&e(d,2)}),P(s),U(()=>Zr(s,1,Gr(K(a).kind===`user`?`prompt-turn`:`answer-item`),`svelte-1im954t`)),Y(e,s)}),P(a),Y(e,a),Be()}yr([`click`]);var La=[150,300,600];function Ra(e){return new Promise(t=>setTimeout(t,e))}function za(e){return e.status===502||e.status===503||e.status===504}async function Ba(e=fetch){for(let t=0;t<=La.length;t+=1){let n;try{n=await e(`/api/bootstrap`)}catch(e){if(e instanceof Error&&e.name===`AbortError`)throw e;if(t===La.length)throw Error(`BOOTSTRAP_FAILED`);await Ra(La[t]);continue}if(n.ok)return n.json();if(!za(n)||t===La.length)throw Error(`BOOTSTRAP_FAILED`);await Ra(La[t])}throw Error(`BOOTSTRAP_FAILED`)}function Va(e){if(typeof e.id!=`string`)return null;if(e.kind===`reasoning`&&Array.isArray(e.summary)){let t=e.summary.filter(e=>typeof e==`string`).join(`
|
|
10
10
|
`);return t?{id:e.id,label:`Reasoning summary`,detail:t}:null}return e.kind===`plan`&&typeof e.text==`string`?{id:e.id,label:`Plan`,detail:e.text}:e.kind===`command`&&typeof e.command==`string`?{id:e.id,label:`Command · ${String(e.status??`unknown`)}`,detail:e.command}:e.kind===`fileChange`&&Array.isArray(e.paths)?{id:e.id,label:`File change · ${String(e.status??`unknown`)}`,detail:e.paths.join(`
|
|
11
11
|
`)}:e.kind===`tool`&&typeof e.name==`string`?{id:e.id,label:`Tool · ${String(e.status??`unknown`)}`,detail:e.name}:null}var Ha=`gestalt-mobile`,Ua=2,Wa=[`settings`,`drafts`,`cursors`,`messages`];function Ga(e){return new Promise((t,n)=>{let r=e.open(Ha,Ua);r.onupgradeneeded=()=>{for(let e of Wa)r.result.objectStoreNames.contains(e)||r.result.createObjectStore(e)},r.onsuccess=()=>t(r.result),r.onerror=()=>n(r.error)})}function Ka(e,t,n){return Ya(e.transaction(t,`readonly`).objectStore(t).get(n))}function qa(e,t,n,r){return Ya(e.transaction(t,`readwrite`).objectStore(t).put(r,n))}function Ja(e,t,n){return Ya(e.transaction(t,`readwrite`).objectStore(t).delete(n))}function Ya(e){return new Promise((t,n)=>{e.onsuccess=()=>t(e.result),e.onerror=()=>n(e.error)})}var Xa=`messages`;function Za(e){return e.slice(-200)}function Qa(e=globalThis.indexedDB){if(!e)return{read:async()=>[],write:async()=>{}};let t=Ga(e);return{async read(e){try{return await Ka(await t,Xa,e)??[]}catch{return[]}},async write(e,n){try{await qa(await t,Xa,e,Za(n))}catch{}}}}var $a={RELAY_UNAVAILABLE:`The relay is unavailable. Check the connection and try again.`,SESSION_START_FAILED:`The session could not be started. Try again.`,SESSION_REFRESH_FAILED:`Sessions could not be refreshed. Try again.`,MESSAGE_SEND_FAILED:`The message was not sent. Your draft is preserved.`,GIT_SUMMARY_FAILED:`Repository status could not be loaded. Select it again to retry.`,GIT_PULL_FAILED:`The branch could not be refreshed. Resolve any Git conflicts and try again.`,GIT_CHECKOUT_FAILED:`The branch could not be selected. Refresh Git status and try again.`,GIT_PUSH_FAILED:`The push failed. Refresh Git status and resolve remote divergence first.`,GIT_CLONE_FAILED:`Clone failed.`};function eo(e,t){let n=e instanceof Error?e.message:``,r=Object.hasOwn($a,n)?n:t;return{code:r,message:$a[r]}}var to={error:null,success:5e3,info:7e3};function no(e={}){let t=e.now??Date.now,n=e.setTimer??setTimeout,r=e.clearTimer??clearTimeout,i=new Set,a=new Map,o=[],s=0,c=()=>o.map(e=>({...e})),l=()=>i.forEach(e=>e(c())),u=e=>{let t=a.get(e);t?.handle&&r(t.handle),t&&(t.handle=null)},d=e=>{o.some(t=>t.id===e)&&(u(e),a.delete(e),o=o.filter(t=>t.id!==e),l())},f=e=>{let r=a.get(e);!r||r.pauseReasons.size>0||(r.startedAt=t(),r.handle=n(()=>d(e),r.remaining))};return{enqueue(e){if(e.kind===`error`){let t=o.find(t=>t.kind===`error`&&(e.code?t.code===e.code:t.message===e.message));if(t)return o=o.map(e=>e.id===t.id?{...e,occurrences:e.occurrences+1}:e),l(),t.id}let n=`toast-${++s}`,r={...e,id:n,occurrences:1};o=[...o,r];let i=to[e.kind];return i!==null&&(a.set(n,{handle:null,remaining:i,startedAt:t(),pauseReasons:new Set}),f(n)),l(),n},dismiss:d,pause(e,n){let r=a.get(e);!r||r.pauseReasons.has(n)||(r.pauseReasons.add(n),r.handle&&(r.remaining=Math.max(0,r.remaining-(t()-r.startedAt)),u(e)))},resume(e,t){let n=a.get(e);!n||!n.pauseReasons.delete(t)||n.pauseReasons.size>0||f(e)},snapshot:c,subscribe(e){return i.add(e),e(c()),()=>i.delete(e)}}}var ro=J(`<small class="svelte-1a0rutm"> </small>`),io=J(`<section aria-atomic="true"><span class="toast-symbol svelte-1a0rutm" aria-hidden="true"> </span> <span class="toast-copy svelte-1a0rutm"><strong class="svelte-1a0rutm"> </strong> <span> </span> <!></span> <button type="button" class="svelte-1a0rutm"><span aria-hidden="true">×</span></button></section>`),ao=J(`<div class="toast-viewport svelte-1a0rutm" aria-label="Notifications"></div>`);function oo(e,t){ze(t,!0);let n=L([]),r=F(()=>K(n).slice(-3));bi(()=>t.queue.subscribe(e=>R(n,e)));var i=ao();Q(i,21,()=>K(r),e=>e.id,(e,n)=>{var r=io();let i;var a=B(r),o=B(a,!0);P(a);var s=H(a,2),c=B(s),l=B(c,!0);P(c);var u=H(c,2),d=B(u,!0);P(u);var f=H(u,2),p=e=>{var t=ro(),r=B(t);P(t),U(()=>X(r,`Repeated ${K(n).occurrences??``} times.`)),Y(e,t)};Z(f,e=>{K(n).occurrences>1&&e(p)}),P(s);var m=H(s,2);P(r),U(()=>{i=Zr(r,1,`toast svelte-1a0rutm`,null,i,{error:K(n).kind===`error`}),$(r,`role`,K(n).kind===`error`?`alert`:`status`),$(r,`aria-live`,K(n).kind===`error`?`assertive`:`polite`),X(o,K(n).kind===`error`?`!`:K(n).kind===`success`?`✓`:`i`),X(l,K(n).kind===`error`?`Error`:K(n).kind===`success`?`Success`:`Info`),X(d,K(n).message),$(m,`aria-label`,`Dismiss ${K(n).kind} notification`)}),vr(`pointerenter`,r,()=>t.queue.pause(K(n).id,`hover`)),vr(`pointerleave`,r,()=>t.queue.resume(K(n).id,`hover`)),q(`focusin`,r,()=>t.queue.pause(K(n).id,`focus`)),q(`focusout`,r,()=>t.queue.resume(K(n).id,`focus`)),q(`click`,m,()=>t.queue.dismiss(K(n).id)),Y(e,r)}),P(i),Y(e,i),Be()}yr([`focusin`,`focusout`,`click`]);var so=J(`<main class="evidence-page svelte-1j55xyh"><h1 class="svelte-1j55xyh">Git repository</h1> <p>Choose a destination and clone a repository.</p> <div class="evidence-composer svelte-1j55xyh"><label for="evidence-prompt">Prompt</label> <textarea id="evidence-prompt" class="evidence-prompt svelte-1j55xyh" rows="1">Review repository status</textarea></div></main> <nav class="evidence-nav svelte-1j55xyh" aria-label="Primary evidence navigation"><button type="button" class="svelte-1j55xyh">Sessions</button> <button type="button" aria-pressed="true" class="svelte-1j55xyh">Git</button> <button type="button" class="svelte-1j55xyh">Chat</button></nav> <!>`,1);function co(e,t){ze(t,!0);let n=no();bi(()=>{t.variant===`stacked`&&n.enqueue({kind:`success`,message:`Cloned.`}),n.enqueue({kind:`error`,code:`GIT_CLONE_FAILED`,message:`Clone failed.`})});var r=so();oo(H(V(r),4),{get queue(){return n}}),Y(e,r),Be()}var lo={sessionBase:()=>!0,gitRepositoryTarget:e=>e.isGitRepository,cloneDestination:e=>!e.isGitRepository};function uo(e){let t=new Set,n=(e,r)=>{!e.isGitRepository&&r<=2&&t.add(e.id),e.children.forEach(e=>n(e,r+1))};return e.forEach(e=>n(e,1)),t}function fo(e,t){let n=new Set(e);return t.isGitRepository||(n.has(t.id)?n.delete(t.id):n.add(t.id)),n}function po(e,t){let n=[],r=(e,i,a)=>{n.push({node:e,level:i,parentId:a}),!e.isGitRepository&&t.has(e.id)&&e.children.forEach(t=>r(t,i+1,e.id))};return e.forEach(e=>r(e,1,null)),n}function mo(e,t){let n=(e,r)=>{if(e.id===t)return r;for(let t of e.children){let i=n(t,[...r,e.id]);if(i)return i}return null};for(let t of e){let e=n(t,[]);if(e)return e}return[]}function ho(e,t){for(let n of e){if(n.id===t)return n;let e=ho(n.children,t);if(e)return e}}function go(e,t,n,r){if(e){let i=ho(n,e);if(i&&r(i))return i.id;let a=mo(t,e);for(let e of a.toReversed()){let t=ho(n,e);if(t&&r(t))return t.id}}return _o(n).find(r)?.id??null}function _o(e){let t=[],n=e=>{t.push(e),e.children.forEach(n)};return e.forEach(n),t}var vo=J(`<button class="disclosure svelte-6z3q4v" type="button" tabindex="-1"><span aria-hidden="true"> </span></button>`),yo=J(`<span class="disclosure-spacer svelte-6z3q4v" aria-hidden="true"></span>`),bo=J(`<span class="repository-badge svelte-6z3q4v">Git</span>`),xo=J(`<div class="tree-row svelte-6z3q4v"><!> <button type="button" role="treeitem"><span class="selection-mark svelte-6z3q4v" aria-hidden="true"> </span> <span class="node-copy svelte-6z3q4v"><span class="node-name svelte-6z3q4v"> </span> <span class="node-path svelte-6z3q4v"> </span></span> <!></button></div>`),So=J(`<div class="filesystem-tree svelte-6z3q4v" role="tree"></div>`);function Co(e,t){ze(t,!0);let n=yi(t,`isSelectable`,3,()=>!0),r=L(null),i=z({}),a=F(()=>po(t.roots,t.expandedIds)),o=F(()=>K(r)&&K(a).some(({node:e})=>e.id===K(r))?K(r):t.selectedId&&K(a).some(({node:e})=>e.id===t.selectedId)?t.selectedId:K(a)[0]?.node.id??null);function s(e){return!e.isGitRepository&&e.children.length>0}function c(e){return e===`.`?`~/`:`~/${e}`}function l(e){R(r,e,!0),i[e]?.focus()}function u(e,t){let n=Math.max(0,Math.min(K(a).length-1,t)),r=K(a)[n];r&&n!==e&&l(r.node.id)}function d(e){n()(e)&&t.onselect(e)}function f(e){s(e)&&t.onexpandedchange(fo(t.expandedIds,e))}function p(e,n,r){let{node:i,parentId:o}=n;switch(e.key){case`ArrowUp`:e.preventDefault(),u(r,r-1);break;case`ArrowDown`:e.preventDefault(),u(r,r+1);break;case`ArrowRight`:if(!s(i))return;e.preventDefault(),t.expandedIds.has(i.id)?K(a)[r+1]?.parentId===i.id&&u(r,r+1):f(i);break;case`ArrowLeft`:if(!t.expandedIds.has(i.id)&&!o)return;e.preventDefault(),s(i)&&t.expandedIds.has(i.id)?f(i):o&&l(o);break;case`Home`:e.preventDefault(),u(r,0);break;case`End`:e.preventDefault(),u(r,K(a).length-1);break;case`Enter`:case` `:e.preventDefault(),d(i);break}}var m=So();Q(m,23,()=>K(a),e=>e.node.id,(e,a,l)=>{let u=F(()=>K(a).node),m=F(()=>s(K(u)));var h=xo();let g;var _=B(h),v=e=>{var n=vo(),r=B(n),i=B(r,!0);P(r),P(n),U((e,t)=>{$(n,`aria-label`,e),X(i,t)},[()=>`${t.expandedIds.has(K(u).id)?`Collapse`:`Expand`} ${K(u).name}`,()=>t.expandedIds.has(K(u).id)?`−`:`+`]),q(`click`,n,()=>f(K(u))),Y(e,n)},y=e=>{Y(e,yo())};Z(_,e=>{K(m)?e(v):e(y,-1)});var b=H(_,2);let x;var S=B(b),ee=B(S,!0);P(S);var C=H(S,2),w=B(C),T=B(w,!0);P(w);var E=H(w,2),te=B(E,!0);P(E),P(C);var D=H(C,2),ne=e=>{Y(e,bo())};Z(D,e=>{K(u).isGitRepository&&e(ne)}),P(b),vi(b,(e,t)=>i[t.id]=e,e=>i?.[e.id],()=>[K(u)]),P(h),U((e,n,r,i,s)=>{g=$r(h,``,g,e),x=Zr(b,1,`tree-item svelte-6z3q4v`,null,x,{selected:t.selectedId===K(u).id,repository:K(u).isGitRepository}),$(b,`aria-level`,K(a).level),$(b,`aria-expanded`,n),$(b,`aria-selected`,t.selectedId===K(u).id),$(b,`aria-disabled`,r),$(b,`tabindex`,K(o)===K(u).id?0:-1),$(b,`title`,i),X(ee,t.selectedId===K(u).id?`✓`:``),X(T,K(u).name),X(te,s)},[()=>({"--tree-level":Math.min(K(a).level-1,6)}),()=>K(m)?t.expandedIds.has(K(u).id):void 0,()=>!n()(K(u)),()=>c(K(u).relativePath),()=>c(K(u).relativePath)]),vr(`focus`,b,()=>R(r,K(u).id,!0)),q(`keydown`,b,e=>p(e,K(a),K(l))),q(`click`,b,()=>d(K(u))),Y(e,h)}),P(m),U(()=>$(m,`aria-label`,t.label)),Y(e,m),Be()}yr([`click`,`keydown`]);var wo=J(`<section class="evidence-shell svelte-1d6w4ti" aria-labelledby="evidence-title"><p class="eyebrow svelte-1d6w4ti"> </p> <h1 id="evidence-title" class="svelte-1d6w4ti"> </h1> <p class="instructions svelte-1d6w4ti"> </p> <div class="tree-panel svelte-1d6w4ti"><!></div></section>`);function To(e,t){ze(t,!0);let n=(e,t)=>({id:e,name:t,relativePath:e,isGitRepository:!0,children:[]}),r=[{id:`.`,name:`development-workspace-with-a-long-name`,relativePath:`.`,isGitRepository:!1,children:[{id:`dyne`,name:`dyne`,relativePath:`dyne`,isGitRepository:!1,children:[{id:`dyne/mobile-applications`,name:`mobile-applications-and-experiments`,relativePath:`dyne/mobile-applications`,isGitRepository:!1,children:[n(`dyne/mobile-applications/gestalt-mobile`,`gestalt-mobile-with-an-extraordinarily-long-repository-name`)]},n(`dyne/zenroom`,`zenroom`),n(`dyne/zenflows`,`zenflows`),n(`dyne/did`,`did-toolkit`),n(`dyne/api`,`api-gateway`),n(`dyne/docs`,`documentation-portal`)]},{id:`personal`,name:`personal-projects`,relativePath:`personal`,isGitRepository:!1,children:[]}]}],i=L(z(new Set([`.`,`dyne`,`dyne/mobile-applications`]))),a=L(null),o=F(()=>t.context===`sessions`?`dyne/mobile-applications`:`dyne/mobile-applications/gestalt-mobile`),s=F(()=>K(a)??K(o));var c=wo(),l=B(c),u=B(l,!0);P(l);var d=H(l,2),f=B(d,!0);P(d);var p=H(d,2),m=B(p,!0);P(p);var h=H(p,2),g=B(h);{let e=F(()=>t.context===`sessions`?`Session base`:`Git repository`),n=F(()=>t.context===`sessions`?lo.sessionBase:lo.gitRepositoryTarget);Co(g,{get roots(){return r},get expandedIds(){return K(i)},get selectedId(){return K(s)},get label(){return K(e)},get isSelectable(){return K(n)},onexpandedchange:e=>R(i,e,!0),onselect:e=>R(a,e.id,!0)})}P(h),P(c),U(()=>{X(u,t.context===`sessions`?`Sessions`:`Git`),X(f,t.context===`sessions`?`Session base`:`Git repository`),X(m,t.context===`sessions`?`Select the folder Codex should use as its working directory.`:`Select a repository for Git actions.`)}),Y(e,c),Be()}function Eo(e,t=Date.now()){if(!e)return`Not fetched yet`;let n=Math.max(0,t-new Date(e).getTime()),r=Math.floor(n/6e4);if(r<1)return`Fetched just now`;if(r<60)return`Fetched ${r}m ago`;let i=Math.floor(r/60);return i<24?`Fetched ${i}h ago`:`Fetched ${Math.floor(i/24)}d ago`}function Do(e,t=Date.now()){let n=Date.parse(e);if(!Number.isFinite(n))return`unknown time`;let r=Math.round((n-t)/1e3),i=[[`year`,31536e3],[`month`,2592e3],[`week`,604800],[`day`,86400],[`hour`,3600],[`minute`,60],[`second`,1]],[a,o]=i.find(([,e])=>Math.abs(r)>=e)??i.at(-1);return new Intl.RelativeTimeFormat(void 0,{numeric:`auto`}).format(Math.round(r/o),a)}var Oo=J(`<p class="clone-status svelte-pudr3t" role="status"> </p>`),ko=J(`<option> </option>`),Ao=J(`<section aria-label="Confirm push"><p> </p> <button type="button">Confirm push</button> <button type="button">Cancel</button></section>`),jo=J(`<li class="commit-entry svelte-pudr3t"><div class="commit-subject svelte-pudr3t"><code class="svelte-pudr3t"> </code><span> </span></div> <div class="commit-meta svelte-pudr3t"><span> </span><time class="svelte-pudr3t"> </time></div></li>`),Mo=J(`<section class="commit-history svelte-pudr3t" aria-labelledby="recent-commits-title"><h3 id="recent-commits-title" class="svelte-pudr3t">Recent commits</h3> <ol class="commit-list svelte-pudr3t" aria-label="Recent commits"></ol></section>`),No=J(`<div class="git-overview svelte-pudr3t"><div class="git-status svelte-pudr3t"><label for="git-branch">Branch</label> <select id="git-branch"></select> <p class="svelte-pudr3t"> </p> <p class="svelte-pudr3t"> </p> <p class="svelte-pudr3t"><time> </time></p> <p class="svelte-pudr3t"> </p></div> <div class="git-actions svelte-pudr3t"><button type="button" class="svelte-pudr3t"><span aria-hidden="true">↑</span> Push</button> <button type="button" class="svelte-pudr3t"><span aria-hidden="true">↓</span> </button></div></div> <!> <!>`,1),Po=J(`<p>This workspace is not a Git repository.</p>`),Fo=J(`<p role="status">Loading repository status…</p>`),Io=J(`<p><strong> </strong> is available as a Clone destination. Select a Git
|
|
12
|
-
repository to inspect branches and enable repository actions.</p> <div class="git-actions svelte-pudr3t" aria-label="Repository actions unavailable"><button type="button" disabled="" class="svelte-pudr3t"><span aria-hidden="true">↑</span> Push</button> <button type="button" disabled="" class="svelte-pudr3t"><span aria-hidden="true">↓</span> Pull</button></div>`,1),Lo=J(`<p>Select a folder above to choose a Clone destination or inspect a Git repository.</p> <div class="git-actions svelte-pudr3t" aria-label="Repository actions unavailable"><button type="button" disabled="" class="svelte-pudr3t"><span aria-hidden="true">↑</span> Push</button> <button type="button" disabled="" class="svelte-pudr3t"><span aria-hidden="true">↓</span> Pull</button></div>`,1),Ro=J(`<p role="alert"> </p>`),zo=J(`<section class="git-view svelte-pudr3t" aria-labelledby="git-title"><h2 id="git-title" class="visually-hidden">Git</h2> <section class="git-tree svelte-pudr3t" aria-labelledby="git-tree-title"><div class="section-heading svelte-pudr3t"><h3 id="git-tree-title" class="svelte-pudr3t">Repository and clone destination</h3> <p class="svelte-pudr3t">Select any folder. Git repositories enable repository actions; other folders are clone destinations.</p></div> <!></section> <form class="clone-form svelte-pudr3t"><div class="clone-controls svelte-pudr3t"><div class="clone-field clone-destination svelte-pudr3t"><span class="field-label svelte-pudr3t">Destination</span> <output aria-live="polite" class="svelte-pudr3t"> </output></div> <div class="clone-field svelte-pudr3t"><label for="git-clone-address">Git address</label> <input id="git-clone-address" name="address" required="" autocomplete="url" inputmode="url" enterkeyhint="done" placeholder="https://example.com/owner/repository.git" aria-describedby="clone-help"/></div> <button type="submit" class="svelte-pudr3t"> </button></div> <p id="clone-help" class="svelte-pudr3t">The repository is cloned inside the selected workspace.</p> <!></form> <section class="repository-details svelte-pudr3t" aria-labelledby="repository-details-title"><h3 id="repository-details-title" class="svelte-pudr3t">Repository details</h3> <!> <!></section></section>`);function Bo(e,t){ze(t,!0);let n=L(``),r=F(()=>t.selectedWorkspace&&!t.selectedWorkspace.isGitRepository?t.selectedWorkspace:null);function i(e){e.preventDefault(),!(!K(n).trim()||t.cloning)&&t.onclone(K(n).trim())}var a=zo(),o=H(B(a),2),s=H(B(o),2);{let e=F(()=>t.selectedWorkspace?.id??null);Co(s,{get roots(){return t.workspaceTree},get expandedIds(){return t.expandedIds},get selectedId(){return K(e)},label:`Git repository and clone destination`,get onexpandedchange(){return t.onexpandedchange},get onselect(){return t.onselect}})}P(o);var c=H(o,2),l=B(c),u=B(l),d=H(B(u),2),f=B(d,!0);P(d),P(u);var p=H(u,2),m=H(B(p),2);ci(m),P(p);var h=H(p,2),g=B(h,!0);P(h),P(l);var _=H(l,4),v=e=>{var n=Oo(),r=B(n,!0);P(n),U(()=>X(r,t.cloneStatus)),Y(e,n)};Z(_,e=>{t.cloneStatus&&e(v)}),P(c);var y=H(c,2),b=H(B(y),2),x=e=>{var n=Dr(),r=V(n),i=e=>{var n=Dr(),r=V(n),i=e=>{var n=No(),r=V(n),i=B(r),a=H(B(i),2);Q(a,20,()=>t.summary.branches??[],e=>e,(e,t)=>{var n=ko(),r=B(n,!0);P(n);var i={};U(()=>{X(r,t),i!==(i=t)&&(n.value=(n.__value=t)??``)}),Y(e,n)}),P(a);var o;ti(a);var s=H(a,2),c=B(s);P(s);var l=H(s,2),u=B(l);P(l);var d=H(l,2),f=B(d),p=B(f,!0);P(f),P(d);var m=H(d,2),h=B(m);P(m),P(i);var g=H(i,2),_=B(g),v=H(_,2),y=H(B(v));P(v),P(g),P(r);var b=H(r,2),x=e=>{var n=Ao(),r=B(n),i=B(r);P(r);var a=H(r,2),o=H(a,2);P(n),U(()=>X(i,`Push HEAD to ${t.summary.upstream??``}?`)),q(`click`,a,function(...e){t.onpush?.apply(this,e)}),q(`click`,o,function(...e){t.oncancelpush?.apply(this,e)}),Y(e,n)};Z(b,e=>{t.confirmingPush&&e(x)});var S=H(b,2),ee=e=>{var n=Mo(),r=H(B(n),2);Q(r,21,()=>t.summary.commits,e=>e.hash,(e,t)=>{var n=jo(),r=B(n),i=B(r),a=B(i,!0);P(i);var o=H(i),s=B(o,!0);P(o),P(r);var c=H(r,2),l=B(c),u=B(l,!0);P(l);var d=H(l),f=B(d,!0);P(d),P(c),P(n),U(e=>{$(i,`title`,K(t).hash),X(a,K(t).shortHash),X(s,K(t).subject),X(u,K(t).author),$(d,`datetime`,K(t).authoredAt),$(d,`title`,K(t).authoredAt),X(f,e)},[()=>Do(K(t).authoredAt)]),Y(e,n)}),P(r),P(n),Y(e,n)};Z(S,e=>{t.summary.commits.length&&e(ee)}),U(e=>{a.disabled=t.refreshing||t.checkingOut||!t.summary.branches?.length,o!==(o=t.summary.branch??``)&&(a.value=(a.__value=t.summary.branch??``)??``,ei(a,t.summary.branch??``)),X(c,`Upstream: ${t.summary.upstream??`none`??``}`),X(u,`Ahead ${t.summary.ahead??``}; behind ${t.summary.behind??``}.`),$(f,`datetime`,t.summary.fetchedAt??void 0),X(p,e),X(h,`Changes: ${t.summary.dirty.staged??``} staged, ${t.summary.dirty.unstaged??``} unstaged, ${t.summary.dirty.untracked??``} untracked.`),_.disabled=t.refreshing||t.checkingOut||!t.summary.upstream||t.summary.ahead<1||t.summary.behind>0,v.disabled=t.refreshing||t.checkingOut,X(y,` ${t.refreshing?`Pulling…`:`Pull`}`)},[()=>Eo(t.summary.fetchedAt)]),q(`change`,a,e=>t.oncheckout(e.currentTarget.value)),q(`click`,_,function(...e){t.onopenpushconfirmation?.apply(this,e)}),q(`click`,v,function(...e){t.onpull?.apply(this,e)}),Y(e,n)},a=e=>{Y(e,Po())};Z(r,e=>{t.summary.available?e(i):e(a,-1)}),Y(e,n)},a=e=>{Y(e,Fo())};Z(r,e=>{t.summary?e(i):t.error||e(a,1)}),Y(e,n)},S=e=>{var n=Io(),r=V(n),i=B(r),a=B(i,!0);P(i),je(),P(r),je(2),U(()=>X(a,t.selectedWorkspace.name)),Y(e,n)},ee=e=>{var t=Lo();je(2),Y(e,t)};Z(b,e=>{t.selectedWorkspace?.isGitRepository?e(x):t.selectedWorkspace?e(S,1):e(ee,-1)});var C=H(b,2),w=e=>{var n=Ro(),r=B(n,!0);P(n),U(()=>X(r,t.error)),Y(e,n)};Z(C,e=>{t.error&&e(w)}),P(y),P(a),U(()=>{X(f,K(r)?`~/${K(r).relativePath}`:`Select a non-repository folder`),h.disabled=t.cloning,X(g,t.cloning?`Cloning…`:`Clone`)}),vr(`submit`,c,i),mi(m,()=>K(n),e=>R(n,e)),Y(e,a),Be()}yr([`change`,`click`]);function Vo(e,t,n,r,i){let a=new Set(Ho(e).filter(e=>e.isGitRepository).map(e=>e.id)),o=ho(t,n),s=o?Ho(o.children).filter(e=>e.isGitRepository&&!a.has(e.id)):[],c=Uo(r),l=s.find(e=>e.name===c)??(s.length===1?s[0]:void 0),u=l?.id??o?.id??null,d=new Set(i);return u&&mo(t,u).forEach(e=>d.add(e)),!l&&o&&d.add(o.id),{selectedId:u,expandedIds:d}}function Ho(e){let t=[],n=e=>{t.push(e),e.children.forEach(n)};return e.forEach(n),t}function Uo(e){return(e.trim().replace(/[?#].*$/,``).replace(/\/+$/,``).split(/[/:]/).at(-1)??``).replace(/\.git$/i,``)}function Wo(e,t,n,r){return[...e,{id:t,role:`user`,text:n,...r?{occurredAt:r}:{},complete:!0}]}function Go(e,t,n,r){return e.find(e=>e.id===t)?e.map(e=>e.id===t?{...e,text:e.text+n}:e):[...e,{id:t,role:`assistant`,phase:`commentary`,text:n,...r?{occurredAt:r}:{},complete:!1}]}function Ko(e,t){return e.map(e=>e.id===t?{...e,complete:!0}:e)}function qo(e){if(typeof e!=`object`||!e)return null;let t=e.permissions;if(typeof t!=`object`||!t)return null;let n=t;return{permissions:{...n.network===null||n.network===void 0?{}:{network:n.network},...n.fileSystem===null||n.fileSystem===void 0?{}:{fileSystem:n.fileSystem}},scope:`turn`}}function Jo(e=fetch){async function t(e){let t=await e.json().catch(()=>null),n=typeof t?.detail==`string`?t.detail:typeof t?.title==`string`?t.title:`Relay request failed (${e.status}).`;return Error(n)}async function n(n,r,i={}){let a=await e(n,{method:`POST`,headers:{"content-type":`application/json`,...i},body:JSON.stringify(r)});if(!a.ok)throw await t(a);return a.json()}async function r(n,r){let i=await e(n,{method:`PUT`,headers:{"content-type":`application/json`},body:JSON.stringify(r)});if(!i.ok)throw await t(i);return i.json()}async function i(n){let r=await e(n,{method:`DELETE`});if(!r.ok)throw await t(r)}async function a(n,r){let i=await e(n,r?{signal:r}:void 0);if(!i.ok)throw await t(i);return i.json()}async function o(n,r){let i=await e(n,{signal:r});if(i.status===204)return null;if(!i.ok)throw await t(i);return i.json()}return{listSessions:()=>a(`/api/sessions`),listRecentSessions:()=>a(`/api/sessions/recent-threads`),openRecentSession:(e,t)=>n(`/api/sessions/recent-threads/open`,{threadId:e,cwd:t}),startSession:(e,t={},r)=>n(`/api/sessions`,{workspaceId:e,profile:`default`,...t},r?{"idempotency-key":r}:{}),startTurn:(e,t)=>n(`/api/sessions/${encodeURIComponent(e)}/turns`,{text:t}),selectModel:(e,t)=>n(`/api/sessions/${encodeURIComponent(e)}/model`,{model:t}),interruptTurn:(e,t)=>n(`/api/sessions/${encodeURIComponent(e)}/turns/${encodeURIComponent(t)}/interrupt`,{}),restoreSession:e=>n(`/api/sessions/${encodeURIComponent(e)}/restore`,{}),releaseSession:e=>n(`/api/sessions/${encodeURIComponent(e)}/release`,{}),forgetSession:n=>e(`/api/sessions/${encodeURIComponent(n)}`,{method:`DELETE`}).then(async e=>{if(!e.ok)throw await t(e)}),getHistory:e=>a(`/api/sessions/${encodeURIComponent(e)}/history`),getPlan:(e,t)=>o(`/api/sessions/${encodeURIComponent(e)}/plan`,t),closePlan:e=>i(`/api/sessions/${encodeURIComponent(e)}/plan`),getGitSummary:e=>a(`/api/git/repositories/${encodeURIComponent(e)}`),cloneGitRepository:(e,t)=>n(`/api/git/clone`,{workspaceId:e,address:t}),refreshGit:(e,t)=>n(`/api/git/repositories/${encodeURIComponent(e)}/refresh`,{},t?{"idempotency-key":t}:{}),pullGit:(e,t)=>n(`/api/git/repositories/${encodeURIComponent(e)}/pull`,{},t?{"idempotency-key":t}:{}),checkoutGitBranch:(e,t)=>n(`/api/git/repositories/${encodeURIComponent(e)}/checkout`,{branch:t}),pushGit:(e,t)=>n(`/api/git/repositories/${encodeURIComponent(e)}/push`,{},t?{"idempotency-key":t}:{}),listAvailableSkills:(e,t,n=!1)=>a(`/api/skills?${new URLSearchParams({workspaceId:e,profile:t,...n?{refresh:`true`}:{}}).toString()}`),listSkillProfiles:()=>a(`/api/skill-profiles`),replaceSkillProfile:(e,t)=>r(`/api/skill-profiles/${encodeURIComponent(e)}`,t),deleteSkillProfile:e=>i(`/api/skill-profiles/${encodeURIComponent(e)}`),respondInteraction:(e,t,r)=>n(`/api/sessions/${encodeURIComponent(e)}/interactions/${encodeURIComponent(t)}`,r)}}async function Yo(e,t=globalThis.navigator?.clipboard,n=Zo){if(!t)return Xo(e,n);try{return await t.writeText(e),!0}catch{return Xo(e,n)}}function Xo(e,t){try{return t(e)}catch{return!1}}function Zo(e){if(typeof document>`u`||!document.body)return!1;let t=document.createElement(`textarea`);t.value=e,t.setAttribute(`readonly`,``),t.style.cssText=`position:fixed;opacity:0`,document.body.append(t),t.select();let n=document.execCommand(`copy`);return t.remove(),n}function Qo(e=globalThis.crypto,t=Date.now,n=Math.random){return typeof e?.randomUUID==`function`?e.randomUUID():`k-${t().toString(36)}-${Math.floor(n()*4294967296).toString(36)}`}function $o(e,t,n,r=()=>{},i=()=>{}){if(t.type!==`relay.event`||!t.event||t.event.sequence<=e)return e;if(t.event.sequence>e+1)return r(t.event.sequence),e;if(i(t.event),t.event.type===`agentMessageDelta`){let e=t.event.payload.text;e&&n(e)}return t.event.sequence}function es(e){if(!e||typeof e!=`object`)return!1;let t=e;return typeof t.title==`string`&&Array.isArray(t.steps)&&typeof t.totalSteps==`number`&&typeof t.doneSteps==`number`&&typeof t.allDone==`boolean`&&typeof t.currentStepId==`string`}function ts(e){return e instanceof Error?e.message:`Could not load the plan.`}function ns(e){return{...e,...e.skills?{skills:[...e.skills]}:{},description:{...e.description},children:e.children.map(ns)}}function rs(e){return{...e,steps:e.steps.map(ns)}}function is(e,t){return e.kind===`unavailable`&&e.sessionId===t}function as(e,t){let n=null,r={kind:`unavailable`,sessionId:null},i=0,a=0,o=null,s=0,c=e=>{++a,r=e,t(e)},l=(t,r)=>{o?.abort(),o=new AbortController;let a=++i,l=s;r||c({kind:`loading`,sessionId:t}),e.getPlan(t,o.signal).then(e=>{a!==i||n!==t||s===l&&c(e?{kind:`ready`,sessionId:t,plan:rs(e)}:{kind:`unavailable`,sessionId:t})}).catch(e=>{o?.signal.aborted||a!==i||n!==t||c({kind:`error`,sessionId:t,error:ts(e),...r?{plan:r}:{}})})};return{select(e){if(o?.abort(),n=e,s=0,!e){++i,c({kind:`unavailable`,sessionId:null});return}l(e,void 0)},refresh(e){if(n!==e)return;let t=r.kind===`ready`||r.kind===`closing`||r.kind===`error`?r.plan:void 0;l(e,t)},applyEvent(e,t){n!==e||t.sequence<=s||(t.type===`plan.updated`&&es(t.payload)&&(s=t.sequence,c({kind:`ready`,sessionId:e,plan:rs(t.payload)})),t.type===`plan.closed`&&(s=t.sequence,c({kind:`unavailable`,sessionId:e})))},async close(){if(r.kind!==`ready`&&r.kind!==`error`||!r.plan?.allDone)return null;let{sessionId:t,plan:i}=r;c({kind:`closing`,sessionId:t,plan:i});let o=a;try{return await e.closePlan(t),n===t?a===o?(c({kind:`unavailable`,sessionId:t}),`chat`):is(r,t)?`chat`:null:null}catch(e){return n===t?a===o?(c({kind:`error`,sessionId:t,plan:i,error:ts(e)}),null):is(r,t)?`chat`:null:null}},dispose(){o?.abort(),o=null,n=null,++i,c({kind:`unavailable`,sessionId:null})}}}var os=J(`<section aria-labelledby="plan-title" class="svelte-3rmyvg"><h2 id="plan-title" class="svelte-3rmyvg">Plan</h2><p class="svelte-3rmyvg">Loading plan…</p></section>`),ss=J(`<section aria-labelledby="plan-title" class="svelte-3rmyvg"><h2 id="plan-title" class="svelte-3rmyvg">Plan</h2><p class="svelte-3rmyvg">No retained plan for this session.</p></section>`),cs=J(`<section aria-labelledby="plan-title" class="svelte-3rmyvg"><h2 id="plan-title" class="svelte-3rmyvg">Plan</h2><p class="svelte-3rmyvg"> </p></section>`),ls=J(`<button class="close svelte-3rmyvg" aria-label="Close completed plan">×</button>`),us=J(`<p class="svelte-3rmyvg">Closing completed plan…</p>`),ds=J(`<p class="svelte-3rmyvg"> </p>`),fs=J(`<div class="svelte-3rmyvg"><dt class="svelte-3rmyvg">Subtitle</dt><dd class="svelte-3rmyvg"> </dd></div>`),ps=J(`<div class="svelte-3rmyvg"><dt class="svelte-3rmyvg">Date</dt><dd class="svelte-3rmyvg"> </dd></div>`),ms=J(`<div class="svelte-3rmyvg"><dt class="svelte-3rmyvg">Keywords</dt><dd class="svelte-3rmyvg"> </dd></div>`),hs=J(`<dl class="metadata svelte-3rmyvg"><!> <!> <!></dl>`),gs=J(`<p class="svelte-3rmyvg">No plan steps have been retained yet.</p>`),_s=J(`<p class="svelte-3rmyvg"><strong class="svelte-3rmyvg"> </strong> </p>`),vs=J(`<p class="svelte-3rmyvg"><strong class="svelte-3rmyvg">Skills:</strong> </p>`),ys=J(`<li class="svelte-3rmyvg"><details class="svelte-3rmyvg"><summary class="svelte-3rmyvg"><strong class="svelte-3rmyvg"> </strong> <span class="svelte-3rmyvg"> </span> <span class="svelte-3rmyvg"> </span></summary> <!> <!></details></li>`),bs=J(`<ol class="svelte-3rmyvg"></ol>`),xs=J(`<li class="svelte-3rmyvg"><details class="svelte-3rmyvg"><summary class="svelte-3rmyvg"><strong class="svelte-3rmyvg"> </strong> <span class="svelte-3rmyvg"> </span> <span class="svelte-3rmyvg"> </span></summary> <!> <!> <!></details></li>`),Ss=J(`<ol class="plan-steps svelte-3rmyvg"></ol>`),Cs=J(`<section class="plan svelte-3rmyvg" aria-labelledby="plan-title"><header class="svelte-3rmyvg"><div class="svelte-3rmyvg"><h2 id="plan-title" class="svelte-3rmyvg"> </h2> <p class="svelte-3rmyvg"> </p></div> <!></header> <progress aria-label="Plan progress" class="svelte-3rmyvg"> </progress> <p class="svelte-3rmyvg"> </p> <!> <!> <!></section>`),ws=J(`<p class="visually-hidden svelte-3rmyvg" aria-live="polite" aria-atomic="true"> </p> <!>`,1);function Ts(e,t){ze(t,!0);let n={effort:`Effort`,goal:`Goal`,notes:`Notes`,why:`Why`,change:`Change`,tests:`Tests`,doneWhen:`Done when`},r=L(z(new Set)),i=z({}),a=null,o=0,s=F(()=>t.state.kind===`ready`||t.state.kind===`closing`||t.state.kind===`error`?t.state.plan:void 0),c=F(()=>K(s)?d(K(s).steps,K(s).currentStepId):void 0),l=F(()=>K(s)?f(K(s).steps,K(s).currentStepId):new Set),u=F(()=>t.state.kind===`loading`?`Loading plan.`:t.state.kind===`unavailable`?`No retained plan for this session.`:t.state.kind===`error`&&!K(s)?t.state.error:t.state.kind===`closing`?`Closing completed plan.`:K(s)?K(c)?`Current step: ${K(c).title}, ${K(c).state}. ${K(s).doneSteps} of ${K(s).totalSteps} complete.${t.state.kind===`error`?` ${t.state.error}`:``}`:`${K(s).doneSteps} of ${K(s).totalSteps} plan steps complete.`:``);yn(()=>{let e=K(s)?.currentStepId||null;if(!e||a===e)return;a=e;let t=++o;cr().then(()=>{t!==o||K(s)?.currentStepId!==e||i[e]?.scrollIntoView({behavior:`auto`,block:`nearest`,inline:`nearest`})})});function d(e,t){for(let n of e){if(n.id===t)return n;let e=d(n.children,t);if(e)return e}}function f(e,t,n=[]){for(let r of e){if(r.id===t)return new Set([...n,r.id]);let e=f(r.children,t,[...n,r.id]);if(e.size)return e}return new Set}function p(e){return K(r).has(e)||K(l).has(e)}function h(e,t){R(r,t?new Set([...K(r),e]):new Set([...K(r)].filter(t=>t!==e)),!0)}function g(e){return e.description.goal??e.description.why??e.title}function _(e){return Object.keys(n).flatMap(t=>{let r=e.description[t];return r?[[n[t],r]]:[]})}function v(e){return Math.max(e.totalSteps,1)}var y=ws(),b=V(y),x=B(b,!0);P(b);var S=H(b,2),ee=e=>{Y(e,os())},C=e=>{Y(e,ss())},w=e=>{var n=cs(),r=H(B(n)),i=B(r,!0);P(r),P(n),U(()=>X(i,t.state.error)),Y(e,n)},T=e=>{var n=Cs(),r=B(n),a=B(r),o=B(a),l=B(o,!0);P(o);var u=H(o,2),d=B(u);P(u),P(a);var f=H(a,2),y=e=>{var n=ls();U(()=>n.disabled=t.state.kind===`closing`),q(`click`,n,function(...e){t.onclose?.apply(this,e)}),Y(e,n)};Z(f,e=>{K(s).allDone&&e(y)}),P(r);var b=H(r,2),x=B(b);P(b);var S=H(b,2),ee=B(S);P(S);var C=H(S,2),w=e=>{Y(e,us())},T=e=>{var n=ds(),r=B(n,!0);P(n),U(()=>X(r,t.state.error)),Y(e,n)};Z(C,e=>{t.state.kind===`closing`?e(w):t.state.kind===`error`&&e(T,1)});var E=H(C,2),te=e=>{var t=hs(),n=B(t),r=e=>{var t=fs(),n=H(B(t)),r=B(n,!0);P(n),P(t),U(()=>X(r,K(s).subtitle)),Y(e,t)};Z(n,e=>{K(s).subtitle&&e(r)});var i=H(n,2),a=e=>{var t=ps(),n=H(B(t)),r=B(n,!0);P(n),P(t),U(()=>X(r,K(s).date)),Y(e,t)};Z(i,e=>{K(s).date&&e(a)});var o=H(i,2),c=e=>{var t=ms(),n=H(B(t)),r=B(n,!0);P(n),P(t),U(()=>X(r,K(s).keywords)),Y(e,t)};Z(o,e=>{K(s).keywords&&e(c)}),P(t),Y(e,t)};Z(E,e=>{(K(s).subtitle||K(s).date||K(s).keywords)&&e(te)});var D=H(E,2),ne=e=>{Y(e,gs())},O=e=>{var t=Ss();Q(t,21,()=>K(s).steps,e=>e.id,(e,t)=>{var n=xs(),r=B(n),a=B(r),o=B(a),s=B(o,!0);P(o);var c=H(o,2),l=B(c);P(c);var u=H(c,2),d=B(u,!0);P(u),P(a);var f=H(a,2);Q(f,17,()=>_(K(t)),([e,t])=>e,(e,t)=>{var n=F(()=>m(K(t),2));let r=()=>K(n)[0],i=()=>K(n)[1];var a=_s(),o=B(a),s=B(o);P(o);var c=H(o);P(a),U(()=>{X(s,`${r()??``}:`),X(c,` ${i()??``}`)}),Y(e,a)});var v=H(f,2),y=e=>{var n=vs(),r=H(B(n));P(n),U(e=>X(r,` ${e??``}`),[()=>K(t).skills.join(`, `)]),Y(e,n)};Z(v,e=>{K(t).skills?.length&&e(y)});var b=H(v,2),x=e=>{var n=bs();Q(n,21,()=>K(t).children,e=>e.id,(e,t)=>{var n=ys(),r=B(n),a=B(r),o=B(a),s=B(o,!0);P(o);var c=H(o,2),l=B(c);P(c);var u=H(c,2),d=B(u,!0);P(u),P(a);var f=H(a,2);Q(f,17,()=>_(K(t)),([e,t])=>e,(e,t)=>{var n=F(()=>m(K(t),2));let r=()=>K(n)[0],i=()=>K(n)[1];var a=_s(),o=B(a),s=B(o);P(o);var c=H(o);P(a),U(()=>{X(s,`${r()??``}:`),X(c,` ${i()??``}`)}),Y(e,a)});var v=H(f,2),y=e=>{var n=vs(),r=H(B(n));P(n),U(e=>X(r,` ${e??``}`),[()=>K(t).skills.join(`, `)]),Y(e,n)};Z(v,e=>{K(t).skills?.length&&e(y)}),P(r),vi(r,(e,t)=>i[t.id]=e,e=>i?.[e.id],()=>[K(t)]),P(n),U((e,n)=>{$(r,`data-step-id`,K(t).id),r.open=e,X(s,K(t).title),X(l,`${K(t).state??``} · Priority ${K(t).priority??``}${K(t).reviewStatus?` · ${K(t).reviewStatus}`:``}`),X(d,n)},[()=>p(K(t).id),()=>g(K(t))]),vr(`toggle`,r,e=>h(K(t).id,e.currentTarget.open)),Y(e,n)}),P(n),Y(e,n)};Z(b,e=>{K(t).children.length&&e(x)}),P(r),vi(r,(e,t)=>i[t.id]=e,e=>i?.[e.id],()=>[K(t)]),P(n),U((e,n)=>{$(r,`data-step-id`,K(t).id),r.open=e,X(s,K(t).title),X(l,`${K(t).state??``} · Priority ${K(t).priority??``}${K(t).reviewStatus?` · ${K(t).reviewStatus}`:``}`),X(d,n)},[()=>p(K(t).id),()=>g(K(t))]),vr(`toggle`,r,e=>h(K(t).id,e.currentTarget.open)),Y(e,n)}),P(t),Y(e,t)};Z(D,e=>{K(s).steps.length===0?e(ne):e(O,-1)}),P(n),U(e=>{X(l,K(s).title),X(d,`${K(s).doneSteps??``} / ${K(s).totalSteps??``} complete`),li(b,K(s).doneSteps),$(b,`max`,e),X(x,`${K(s).doneSteps??``} of ${K(s).totalSteps??``} complete`),X(ee,`Current: ${K(c)?`${K(c).title} (${K(c).state})`:`No current step`}`)},[()=>v(K(s))]),Y(e,n)};Z(S,e=>{t.state.kind===`loading`?e(ee):t.state.kind===`unavailable`?e(C,1):t.state.kind===`error`&&!K(s)?e(w,2):K(s)&&e(T,3)}),U(()=>X(x,K(u))),Y(e,y),Be()}yr([`click`]);function Es(e){return e?`Codex is working…`:`Ready.`}function Ds(e,t=Math.random){let n=[500,1e3,2e3,5e3,1e4];return Math.round((n[Math.min(e,n.length-1)]??1e4)*(.8+t()*.4))}var Os=`settings`,ks=`drafts`,As=`cursors`,js=`selected-session`;function Ms(e=globalThis.indexedDB){if(!e)return Ns;let t=Ga(e);return{async readSelectedSession(){try{return await Ka(await t,Os,js)??null}catch{return null}},async saveSelectedSession(e){try{let n=await t;e?await qa(n,Os,js,e):await Ja(n,Os,js)}catch{}},async readDraft(e){try{return await Ka(await t,ks,e)??``}catch{return``}},async saveDraft(e,n){try{await qa(await t,ks,e,n)}catch{}},async readCursor(e){try{let n=await Ka(await t,As,e);return typeof n==`number`&&Number.isSafeInteger(n)&&n>=0?n:0}catch{return 0}},async saveCursor(e,n){try{await qa(await t,As,e,n)}catch{}}}}var Ns={readSelectedSession:async()=>null,saveSelectedSession:async()=>{},readDraft:async()=>``,saveDraft:async()=>{},readCursor:async()=>0,saveCursor:async()=>{}};function Ps(e,t=Date.now()){if(e===null)return`Unknown activity time`;let n=Math.max(0,t-e),r=Math.floor(n/(3600*1e3));if(r<1)return`Less than an hour ago`;if(r<24)return`${r} hour${r===1?``:`s`} ago`;let i=Math.floor(r/24);return`${i} day${i===1?``:`s`} ago`}function Fs(e){let t=e.updatedAt?Date.parse(e.updatedAt):NaN;return{threadId:e.threadId??null,workspacePath:e.workspacePath??`Workspace unavailable`,updatedAt:Number.isFinite(t)?t:null}}function Is(e){let t=/^\/home\/[^/]+/.exec(e)?.[0];if(!t)return e;let n=e.slice(t.length);return n?`~${n}`:`~/`}var Ls=J(`<time> </time>`),Rs=J(`<div> </div>`),zs=J(`<span class="profile-badge svelte-hxb22h"> </span>`),Bs=J(`<li><div class="session-actions svelte-hxb22h"><button type="button">Close</button></div> <div class="session-details svelte-hxb22h"><button class="session-select svelte-hxb22h" type="button"><!> <div class="workspace-path svelte-hxb22h"> </div> <!> <!> <!></button></div></li>`),Vs=J(`<section aria-labelledby="open-sessions-title"><h3 id="open-sessions-title">Open sessions</h3> <ul class="session-list svelte-hxb22h" aria-label="Open sessions"></ul></section>`),Hs=J(`<li class="managed-session svelte-hxb22h"><div class="session-actions svelte-hxb22h"><button type="button">Open</button> <button type="button">Forget</button></div> <div class="session-details svelte-hxb22h"><!> <div class="workspace-path svelte-hxb22h"> </div> <!> <!> <!></div></li>`),Us=J(`<ul class="session-list svelte-hxb22h" aria-label="Saved sessions"></ul>`),Ws=J(`<p>No saved sessions yet.</p>`),Gs=J(`<option> </option>`),Ks=J(`<p class="skills-profile-error svelte-hxb22h" role="alert"> </p>`),qs=J(`<li class="recent-session svelte-hxb22h"><div class="session-details svelte-hxb22h"><!> <div class="workspace-path svelte-hxb22h"> </div></div> <div class="session-actions svelte-hxb22h"><button type="button">Open</button> <button type="button">Copy</button></div></li>`),Js=J(`<ul class="session-list recent-session-list svelte-hxb22h" aria-label="Recent sessions"></ul>`),Ys=J(`<p>No other recent Codex sessions found.</p>`),Xs=J(`<section aria-labelledby="sessions-title"><h2 id="sessions-title" class="visually-hidden">Sessions</h2> <!> <!> <form><section class="session-base svelte-hxb22h" aria-labelledby="session-base-title"><div class="session-base-heading svelte-hxb22h"><h3 id="session-base-title" class="svelte-hxb22h">Session base</h3> <p class="svelte-hxb22h">Select the folder or repository Codex should use as its working directory.</p></div> <div class="tree-panel svelte-hxb22h"><!></div></section> <section class="session-settings svelte-hxb22h" aria-label="New session settings"><div class="session-setting-labels svelte-hxb22h"><label for="skills-profile" class="svelte-hxb22h">Skills profile</label> <label for="sandbox" class="svelte-hxb22h">Sandbox</label> <label for="approval-policy" class="svelte-hxb22h">Approval policy</label></div> <div class="session-setting-controls svelte-hxb22h"><select id="skills-profile" class="svelte-hxb22h"><option>Default</option><!></select> <select id="sandbox" class="svelte-hxb22h"><option>workspace-write</option><option>read-only</option><option>danger-full-access</option></select> <select id="approval-policy" class="svelte-hxb22h"><option>untrusted</option><option>on-request</option><option>never</option></select></div> <!> <div class="session-secondary-actions svelte-hxb22h"><button id="manage-skill-profiles" type="button">Manage skill profiles</button> <div class="model-control svelte-hxb22h"><label for="model">Model</label> <select id="model"></select></div> <button class="new-session-button svelte-hxb22h" type="submit"> </button></div></section></form> <section aria-labelledby="recent-sessions-title"><h3 id="recent-sessions-title">Recent sessions</h3> <!></section></section>`);function Zs(e,t){ze(t,!0);let n=yi(t,`models`,19,()=>[]),r=yi(t,`selectedModel`,3,``),i=yi(t,`onmodelchange`,3,()=>{}),a=F(()=>t.sessions.filter(e=>e.state===`ready`||e.state===`turnActive`)),o=F(()=>t.sessions.filter(e=>e.state!==`ready`&&e.state!==`turnActive`)),s=F(()=>t.recentSessions.filter(e=>!K(a).some(t=>t.threadId===e.id))),c=F(()=>ho(t.workspaceTree,t.workspaceId));var l=Xs(),u=H(B(l),2),d=e=>{var n=Vs(),r=H(B(n),2);Q(r,21,()=>K(a),e=>e.id,(e,n)=>{let r=F(()=>Fs(K(n)));var i=Bs();let a;var o=B(i),s=B(o);P(o);var c=H(o,2),l=B(c),u=B(l),d=e=>{var t=Ls(),n=B(t,!0);P(t),U((e,r)=>{$(t,`datetime`,e),X(n,r)},[()=>new Date(K(r).updatedAt).toISOString(),()=>Ps(K(r).updatedAt)]),Y(e,t)},f=e=>{var t=Rs(),n=B(t,!0);P(t),U(e=>X(n,e),[()=>Ps(null)]),Y(e,t)};Z(u,e=>{K(r).updatedAt===null?e(f,-1):e(d)});var p=H(u,2),m=B(p,!0);P(p);var h=H(p,2),g=e=>{var t=zs(),r=B(t);P(t),U(()=>X(r,`Model: ${K(n).model??``}`)),Y(e,t)};Z(h,e=>{K(n).model&&e(g)});var _=H(h,2),v=e=>{var t=zs(),r=B(t);P(t),U(()=>X(r,`Branch: ${K(n).branch??``}`)),Y(e,t)};Z(_,e=>{K(n).branch&&e(v)});var y=H(_,2),b=e=>{var t=zs(),r=B(t);P(t),U(()=>X(r,`Skills profile: ${K(n).effectiveSkillSelection.selectedProfileName??``}`)),Y(e,t)};Z(y,e=>{K(n).effectiveSkillSelection?.selectedProfileName&&e(b)}),P(l),P(c),P(i),U(e=>{a=Zr(i,1,`managed-session open-session svelte-hxb22h`,null,a,{"current-session":K(n).id===t.selectedSessionId}),$(l,`aria-current`,K(n).id===t.selectedSessionId?`page`:void 0),X(m,e)},[()=>Is(K(r).workspacePath)]),q(`click`,s,()=>t.onclose(K(n).id)),q(`click`,l,()=>t.onselectopen(K(n).id)),Y(e,i)}),P(r),P(n),Y(e,n)};Z(u,e=>{K(a).length&&e(d)});var f=H(u,2),p=e=>{var n=Us();Q(n,21,()=>K(o),e=>e.id,(e,n)=>{let r=F(()=>Fs(K(n)));var i=Hs(),a=B(i),o=B(a),s=H(o,2);P(a);var c=H(a,2),l=B(c),u=e=>{var t=Ls(),n=B(t,!0);P(t),U((e,r)=>{$(t,`datetime`,e),X(n,r)},[()=>new Date(K(r).updatedAt).toISOString(),()=>Ps(K(r).updatedAt)]),Y(e,t)},d=e=>{var t=Rs(),n=B(t,!0);P(t),U(e=>X(n,e),[()=>Ps(null)]),Y(e,t)};Z(l,e=>{K(r).updatedAt===null?e(d,-1):e(u)});var f=H(l,2),p=B(f,!0);P(f);var m=H(f,2),h=e=>{var t=zs(),r=B(t);P(t),U(()=>X(r,`Model: ${K(n).model??``}`)),Y(e,t)};Z(m,e=>{K(n).model&&e(h)});var g=H(m,2),_=e=>{var t=zs(),r=B(t);P(t),U(()=>X(r,`Branch: ${K(n).branch??``}`)),Y(e,t)};Z(g,e=>{K(n).branch&&e(_)});var v=H(g,2),y=e=>{var t=zs(),r=B(t);P(t),U(()=>X(r,`Skills profile: ${K(n).effectiveSkillSelection.selectedProfileName??``}`)),Y(e,t)};Z(v,e=>{K(n).effectiveSkillSelection?.selectedProfileName&&e(y)}),P(c),P(i),U(e=>X(p,e),[()=>Is(K(r).workspacePath)]),q(`click`,o,()=>t.onopen(K(n).id)),q(`click`,s,()=>t.onforget(K(n).id)),Y(e,i)}),P(n),Y(e,n)},m=e=>{Y(e,Ws())};Z(f,e=>{K(o).length?e(p):K(a).length||e(m,1)});var h=H(f,2),g=B(h),_=H(B(g),2),v=B(_);{let e=F(()=>K(c)?.id??null);Co(v,{get roots(){return t.workspaceTree},get expandedIds(){return t.expandedIds},get selectedId(){return K(e)},get isSelectable(){return lo.sessionBase},label:`Session base`,get onexpandedchange(){return t.onexpandedchange},onselect:e=>t.onworkspacechange(e.id)})}P(_),P(g);var y=H(g,2),b=H(B(y),2),x=B(b),S=B(x);S.value=S.__value=``,Q(H(S),17,()=>t.skillProfiles,e=>e.name,(e,t)=>{var n=Gs(),r=B(n,!0);P(n);var i={};U(()=>{X(r,K(t).name),i!==(i=K(t).name)&&(n.value=(n.__value=K(t).name)??``)}),Y(e,n)}),P(x);var ee;ti(x);var C=H(x,2),w=B(C);w.value=w.__value=`workspace-write`;var T=H(w);T.value=T.__value=`read-only`;var E=H(T);E.value=E.__value=`danger-full-access`,P(C);var te;ti(C);var D=H(C,2),ne=B(D);ne.value=ne.__value=`untrusted`;var O=H(ne);O.value=O.__value=`on-request`;var re=H(O);re.value=re.__value=`never`,P(D);var ie;ti(D),P(b);var ae=H(b,2),oe=e=>{var n=Ks(),r=B(n,!0);P(n),U(()=>X(r,t.skillProfileError)),Y(e,n)};Z(ae,e=>{t.skillProfileError&&e(oe)});var se=H(ae,2),ce=B(se),le=H(ce,2),ue=H(B(le),2);Q(ue,20,n,e=>e,(e,t)=>{var n=Gs(),r=B(n,!0);P(n);var i={};U(()=>{X(r,t),i!==(i=t)&&(n.value=(n.__value=t)??``)}),Y(e,n)}),P(ue);var de;ti(ue),P(le);var fe=H(le,2),pe=B(fe,!0);P(fe),P(se),P(y),P(h);var k=H(h,2),me=H(B(k),2),he=e=>{var n=Js();Q(n,21,()=>K(s),e=>e.id,(e,n)=>{var r=qs(),i=B(r),a=B(i),o=e=>{var t=Ls(),r=B(t,!0);P(t),U((e,n)=>{$(t,`datetime`,e),X(r,n)},[()=>new Date(K(n).recencyAt*1e3).toISOString(),()=>Ps(K(n).recencyAt*1e3)]),Y(e,t)},s=e=>{var t=Rs(),n=B(t,!0);P(t),U(e=>X(n,e),[()=>Ps(null)]),Y(e,t)};Z(a,e=>{K(n).recencyAt===null?e(s,-1):e(o)});var c=H(a,2),l=B(c,!0);P(c),P(i);var u=H(i,2),d=B(u),f=H(d,2);P(u),P(r),U(e=>X(l,e),[()=>Is(K(n).cwd)]),q(`click`,d,()=>t.onopenrecent(K(n))),q(`click`,f,()=>t.oncopyresume(K(n).resumeCommand)),Y(e,r)}),P(n),Y(e,n)},ge=e=>{Y(e,Ys())};Z(me,e=>{K(s).length?e(he):e(ge,-1)}),P(k),P(l),U(()=>{ee!==(ee=t.selectedSkillProfile)&&(x.value=(x.__value=t.selectedSkillProfile)??``,ei(x,t.selectedSkillProfile)),te!==(te=t.sandbox)&&(C.value=(C.__value=t.sandbox)??``,ei(C,t.sandbox)),ie!==(ie=t.approvalPolicy)&&(D.value=(D.__value=t.approvalPolicy)??``,ei(D,t.approvalPolicy)),ue.disabled=n().length===0,de!==(de=r())&&(ue.value=(ue.__value=r())??``,ei(ue,r())),fe.disabled=!K(c)||t.startingSession,X(pe,t.startingSession?`Creating…`:`Create session`)}),vr(`submit`,h,e=>{e.preventDefault(),t.onstart()}),q(`change`,x,e=>t.onskillprofilechange(e.currentTarget.value)),q(`change`,C,e=>t.onsandboxchange(e.currentTarget.value)),q(`change`,D,e=>t.onapprovalpolicychange(e.currentTarget.value)),q(`click`,ce,e=>t.onmanageprofiles(e.currentTarget)),q(`change`,ue,e=>i()(e.currentTarget.value)),Y(e,l),Be()}yr([`click`,`change`]);function Qs(e){let t={};return e.workspaceId||(t.workspaceId=`Choose a workspace.`),e.profile||(t.profile=`Choose a profile.`),e.profile&&e.profileState&&e.profileState!==`ok`&&(t.profile=`Sign in to this profile before starting Codex.`),t}function $s({chatEnabled:e,planEnabled:t}){return[`sessions`,`git`,...e?[`chat`]:[],...e&&t?[`plan`]:[]]}function ec(e,t,n={chatEnabled:!0,planEnabled:!1}){let r=$s(n);return r[(r.indexOf(e)+t+r.length)%r.length]}var tc=J(`<button>Plan</button>`),nc=J(`<nav class="bottom-navigation" aria-label="Primary"><button>Sess<wbr/>ions</button> <button>Git</button> <button>Chat</button> <!></nav>`);function rc(e,t){ze(t,!0);let n=yi(t,`planEnabled`,3,!1),r=yi(t,`focusTab`,3,null),i=z({});yn(()=>{r()&&i[r()]?.focus()}),yn(()=>{if(!n()&&t.activeTab===`plan`){let e=t.chatEnabled?`chat`:`sessions`;t.onselect(e),i[e]?.focus()}});function a(e){let r=e.key===`ArrowRight`?1:e.key===`ArrowLeft`?-1:null;if(r===null)return;e.preventDefault();let a=ec(t.activeTab,r,{chatEnabled:t.chatEnabled,planEnabled:n()});t.onselect(a),i[a]?.focus()}var o=nc(),s=B(o);vi(s,e=>i.sessions=e,()=>i?.sessions);var c=H(s,2);vi(c,e=>i.git=e,()=>i?.git);var l=H(c,2);vi(l,e=>i.chat=e,()=>i?.chat);var u=H(l,2),d=e=>{var n=tc();vi(n,e=>i.plan=e,()=>i?.plan),U(()=>$(n,`aria-pressed`,t.activeTab===`plan`)),q(`keydown`,n,a),q(`click`,n,()=>t.onselect(`plan`)),Y(e,n)};Z(u,e=>{n()&&e(d)}),P(o),U(()=>{$(s,`aria-pressed`,t.activeTab===`sessions`),$(c,`aria-pressed`,t.activeTab===`git`),$(l,`aria-pressed`,t.activeTab===`chat`),l.disabled=!t.chatEnabled}),q(`keydown`,s,a),q(`click`,s,()=>t.onselect(`sessions`)),q(`keydown`,c,a),q(`click`,c,()=>t.onselect(`git`)),q(`keydown`,l,a),q(`click`,l,()=>t.onselect(`chat`,!0)),Y(e,o),Be()}yr([`keydown`,`click`]);var ic=J(`<option> </option>`),ac=J(`<p id="skills-status" aria-live="polite">Loading skills…</p>`),oc=J(`<p id="skills-status">No skills were discovered for this workspace and Codex profile.</p>`),sc=J(`<p id="skills-status" class="notice svelte-dg6sjj" role="status"> </p>`),cc=J(`<p id="skills-status" class="error svelte-dg6sjj" role="alert"> </p>`),lc=J(`<p id="skills-status" class="error svelte-dg6sjj" role="alert" tabindex="-1"> </p>`),uc=J(`<p id="skills-status" role="status">Profile saved.</p>`),dc=J(`<p id="skills-status" role="status">Profile deleted.</p>`),fc=J(`<p class="svelte-dg6sjj"> </p>`),pc=J(`<li> </li>`),mc=J(`<dt class="svelte-dg6sjj">Tool dependencies</dt> <dd class="svelte-dg6sjj"><ul class="svelte-dg6sjj"></ul></dd>`,1),hc=J(`<li class="skill-card svelte-dg6sjj"><label class="skill-toggle svelte-dg6sjj"><input type="checkbox" class="svelte-dg6sjj"/> <span class="svelte-dg6sjj"> </span> <span class="state svelte-dg6sjj"> </span></label> <div class="skill-details svelte-dg6sjj"><!> <!> <dl class="svelte-dg6sjj"><dt class="svelte-dg6sjj">Path</dt><dd class="path svelte-dg6sjj"> </dd> <!></dl></div></li>`),gc=J(`<div class="skills-toolbar svelte-dg6sjj"><button type="button" class="refresh-skills svelte-dg6sjj" aria-label="Refresh skills"><span aria-hidden="true" class="svelte-dg6sjj">↻</span><span class="svelte-dg6sjj">Refresh</span></button> <p class="summary svelte-dg6sjj"> </p></div> <ul class="skill-list svelte-dg6sjj"></ul>`,1),_c=J(`<section class="skills-view svelte-dg6sjj" aria-labelledby="skills-title"><h2 id="skills-title"> </h2> <p class="intro svelte-dg6sjj">Create or edit a complete skills selection.</p> <form aria-describedby="skills-status" class="svelte-dg6sjj"><div class="field-grid svelte-dg6sjj"><label for="skills-existing-profile" class="svelte-dg6sjj">Skill profile</label> <select id="skills-existing-profile" class="svelte-dg6sjj"><option>New profile</option><option>Default</option><!></select> <label for="skills-save-as" class="svelte-dg6sjj">Save as</label> <input id="skills-save-as" name="save-as" autocomplete="off" class="svelte-dg6sjj"/></div> <p class="save-intent svelte-dg6sjj" aria-live="polite"> </p> <div class="profile-actions svelte-dg6sjj"><button type="button" class="svelte-dg6sjj">Delete profile</button> <button type="submit" class="svelte-dg6sjj"> </button></div></form> <dialog aria-labelledby="delete-profile-title" class="svelte-dg6sjj"><h3 id="delete-profile-title">Delete skill profile?</h3> <p> </p> <div class="dialog-actions svelte-dg6sjj"><button type="button" class="svelte-dg6sjj">Cancel</button> <button type="button" class="svelte-dg6sjj">Delete profile</button></div></dialog> <!> <!></section>`);function vc(e,t){ze(t,!0);let n=yi(t,`skillsState`,7),r=yi(t,`heading`,3,`Manage skill profiles`),i=L(0),a=L(null),o=L(null),s=L(null),c=L(null),l=L(`__new__`),u=F(()=>(K(i),n())),d=F(()=>K(u).profiles.filter(e=>!(`error`in e)));function f(){n(Object.assign(Object.create(Object.getPrototypeOf(n())),n())),R(i,K(i)+1)}async function p(){await t.onrefresh(),f()}function m(e){R(l,e.currentTarget.value,!0),K(l)===`__new__`||K(l)===`__default__`?K(u).selectDefaultProfile():K(u).selectProfile(K(l)),f()}async function h(e){e.preventDefault(),await K(u).save(),f(),K(u).status.kind===`saved`&&(R(l,K(u).selectedProfileName,!0),t.onprofileschange()),K(u).status.kind===`save-failed`&&(await cr(),K(a)?.focus())}function g(){K(c)?.showModal()}async function _(){K(c)?.close(),await K(u).deleteSelectedProfile(),f(),K(u).status.kind===`deleted`&&(R(l,`__new__`),t.onprofileschange()),await cr(),K(o)?.focus()}async function v(){K(c)?.close(),await cr(),K(s)?.focus()}function y(e){return e&&/^#[0-9a-f]{3,8}$/i.test(e)?e:void 0}function b(e){return e.replace(/^\/(?:home|Users)\/[^/]+(?=\/|$)/,`~`)}function x(e){let t=e.currentTarget.closest(`.skill-card`);requestAnimationFrame(()=>t?.scrollIntoView({block:`nearest`,inline:`nearest`}))}var S=_c(),ee=B(S),C=B(ee,!0);P(ee);var w=H(ee,4),T=B(w),E=H(B(T),2),te=B(E);te.value=te.__value=`__new__`;var D=H(te);D.value=D.__value=`__default__`,Q(H(D),17,()=>K(d),e=>e.name,(e,t)=>{var n=ic(),r=B(n,!0);P(n);var i={};U(()=>{X(r,K(t).name),i!==(i=K(t).name)&&(n.value=(n.__value=K(t).name)??``)}),Y(e,n)}),P(E),vi(E,e=>R(o,e),()=>K(o));var ne=H(E,4);ci(ne),P(T);var O=H(T,2),re=B(O,!0);P(O);var ie=H(O,2),ae=B(ie);vi(ae,e=>R(s,e),()=>K(s));var oe=H(ae,2),se=B(oe,!0);P(oe),P(ie),P(w);var ce=H(w,2),le=H(B(ce),2),ue=B(le);P(le);var de=H(le,2),fe=B(de),pe=H(fe,2);P(de),P(ce),vi(ce,e=>R(c,e),()=>K(c));var k=H(ce,2),me=e=>{Y(e,ac())},he=e=>{Y(e,oc())},ge=e=>{var t=sc(),n=B(t);P(t),U(()=>X(n,`Discovery warning: ${K(u).status.message??``}`)),Y(e,t)},_e=e=>{var t=cc(),n=B(t,!0);P(t),U(()=>X(n,K(u).status.message)),Y(e,t)},ve=e=>{var t=lc(),n=B(t,!0);P(t),vi(t,e=>R(a,e),()=>K(a)),U(()=>X(n,K(u).status.message)),Y(e,t)},ye=e=>{Y(e,uc())},be=e=>{Y(e,dc())},xe=e=>{var t=cc(),n=B(t,!0);P(t),U(()=>X(n,K(u).status.message)),Y(e,t)};Z(k,e=>{K(u).status.kind===`loading`?e(me):K(u).status.kind===`empty`?e(he,1):K(u).status.kind===`warning`?e(ge,2):K(u).status.kind===`invalid-profile`||K(u).status.kind===`error`?e(_e,3):K(u).status.kind===`save-failed`?e(ve,4):K(u).status.kind===`saved`?e(ye,5):K(u).status.kind===`deleted`?e(be,6):K(u).status.kind===`delete-failed`&&e(xe,7)});var Se=H(k,2),Ce=e=>{var t=gc(),n=V(t),r=B(n),i=H(r,2),a=B(i);P(i),P(n);var o=H(n,2);Q(o,21,()=>K(u).skills,e=>e.path,(e,t)=>{var n=hc();let r;var i=B(n),a=B(i);ci(a);var o=H(a,2),s=B(o,!0);P(o);var c=H(o,2),l=B(c,!0);P(c),P(i);var d=H(i,2),p=B(d),m=e=>{var n=fc(),r=B(n,!0);P(n),U(()=>X(r,K(t).description)),Y(e,n)};Z(p,e=>{K(t).description&&e(m)});var h=H(p,2),g=e=>{var n=fc(),r=B(n,!0);P(n),U(()=>X(r,K(t).shortDescription)),Y(e,n)};Z(h,e=>{K(t).shortDescription&&e(g)});var _=H(h,2),v=H(B(_)),S=B(v,!0);P(v);var ee=H(v,2),C=e=>{var n=mc(),r=H(V(n),2),i=B(r);Q(i,21,()=>K(t).dependencies.tools,e=>`${e.type}:${e.value}`,(e,t)=>{var n=pc(),r=B(n);P(n),U(()=>X(r,`${K(t).type??``}: ${K(t).value??``}${K(t).description?` — ${K(t).description}`:``}`)),Y(e,n)}),P(i),P(r),Y(e,n)};Z(ee,e=>{K(t).dependencies?.tools?.length&&e(C)}),P(_),P(d),P(n),U((e,o)=>{r=$r(n,``,r,e),$(i,`for`,`skill-${K(t).path}`),$(a,`id`,`skill-${K(t).path}`),ui(a,K(t).enabled),X(s,K(t).displayName??K(t).name),X(l,K(t).enabled?`Enabled`:`Disabled`),X(S,o)},[()=>({"--brand-color":y(K(t).brandColor)}),()=>b(K(t).path)]),vr(`focus`,a,x),q(`change`,a,e=>{K(u).toggle(K(t).path,e.currentTarget.checked),f()}),Y(e,n)}),P(o),U(()=>X(a,`${K(u).enabledCount??``} of ${K(u).skills.length??``} skills enabled.`)),q(`click`,r,()=>void p()),Y(e,t)};Z(Se,e=>{K(u).skills.length>0&&e(Ce)}),P(S),U(()=>{X(C,r()),li(ne,K(u).saveAsName),X(re,K(u).saveIntent===`replace`?`Saved the selected profile.`:`Creating a new saved profile.`),ae.disabled=!K(u).selectedProfileName||K(u).status.kind===`deleting`,oe.disabled=K(u).status.kind===`saving`,X(se,K(u).status.kind===`saving`?`Saving profile…`:`Save profile`),X(ue,`Delete ${K(u).selectedProfileName??``}? Existing sessions keep their saved skill set.`)}),vr(`submit`,w,h),q(`change`,E,m),ni(E,()=>K(l),e=>R(l,e)),q(`input`,ne,e=>{K(u).saveAsName=e.currentTarget.value,f()}),q(`click`,ae,g),q(`click`,fe,()=>void v()),q(`click`,pe,()=>void _()),Y(e,S),Be()}yr([`change`,`input`,`click`]);var yc=class{client;workspaceId=``;codexProfile=``;selectedProfileName=``;saveAsName=``;source=`native`;skills=[];profiles=[];status={kind:`idle`};baseline=new Map;saving=!1;deleting=!1;constructor(e){this.client=e}get enabledCount(){return this.skills.filter(e=>e.enabled).length}get dirty(){return this.skills.some(e=>this.baseline.get(e.path)!==e.enabled)}get saveIntent(){return this.profiles.some(e=>!(`error`in e)&&e.name===this.saveAsName.trim())?`replace`:`create`}async load(e,t){this.workspaceId=e,this.codexProfile=t,this.status={kind:`loading`};try{let[n,r]=await Promise.all([this.client.listAvailableSkills(e,t),this.client.listSkillProfiles()]);this.applyAvailable(n),this.profiles=r.profiles;let i=r.profiles.find(e=>`error`in e);i&&`error`in i?this.status={kind:`invalid-profile`,message:i.error.message}:n.errors.length?this.status={kind:`warning`,message:n.errors.map(e=>e.message).join(` `)}:this.status=this.skills.length?{kind:`ready`}:{kind:`empty`}}catch(e){this.status={kind:`error`,message:bc(e)}}}async refresh(){this.status={kind:`loading`};try{let e=await this.client.listAvailableSkills(this.workspaceId,this.codexProfile,!0);this.applyAvailable(e),this.status=e.errors.length?{kind:`warning`,message:e.errors.map(e=>e.message).join(` `)}:this.skills.length?{kind:`ready`}:{kind:`empty`}}catch(e){this.status={kind:`error`,message:bc(e)}}}selectProfile(e){let t=this.profiles.find(t=>!(`error`in t)&&t.name===e);if(!t||`error`in t){this.status={kind:`invalid-profile`,message:`Select a valid saved profile.`};return}this.selectedProfileName=t.name,this.saveAsName=t.name;let n=new Map(t.skills.map(e=>[e.path,e.enabled]));this.skills=this.skills.map(e=>({...e,enabled:n.get(e.path)??!1})),this.captureBaseline(),this.status=this.skills.length?{kind:`ready`}:{kind:`empty`}}selectDefaultProfile(){this.selectedProfileName=``,this.saveAsName=``,this.skills=this.skills.map(e=>({...e,enabled:e.effectiveEnabled})),this.captureBaseline(),this.status=this.skills.length?{kind:`ready`}:{kind:`empty`}}toggle(e,t){this.skills=this.skills.map(n=>n.path===e?{...n,enabled:t}:n)}reset(){this.skills=this.skills.map(e=>({...e,enabled:this.baseline.get(e.path)??!1}))}async save(){let e=this.saveAsName.trim();if(this.saving||this.deleting)return;if(!e){this.status={kind:`save-failed`,message:`Enter a profile name before saving.`};return}this.saving=!0,this.status={kind:`saving`};let t=this.savePayload(e);try{let n=await this.client.replaceSkillProfile(e,t);this.profiles=[...this.profiles.filter(e=>`error`in e||e.name!==n.name),n].sort((e,t)=>e.name.localeCompare(t.name)),this.selectedProfileName=n.name,this.saveAsName=n.name,this.captureBaseline(),this.status={kind:`saved`}}catch(e){this.status={kind:`save-failed`,message:bc(e)}}finally{this.saving=!1}}async deleteSelectedProfile(){let e=this.selectedProfileName;if(!(this.saving||this.deleting)){if(!e){this.status={kind:`delete-failed`,message:`Select a saved profile before deleting.`};return}this.deleting=!0,this.status={kind:`deleting`};try{await this.client.deleteSkillProfile(e),this.profiles=this.profiles.filter(t=>`error`in t||t.name!==e),this.selectedProfileName=``,this.saveAsName=``,this.captureBaseline(),this.status={kind:`deleted`}}catch(e){this.status={kind:`delete-failed`,message:bc(e)}}finally{this.deleting=!1}}}savePayload(e=this.saveAsName.trim()){return{version:1,name:e,skills:this.skills.map(({name:e,path:t,enabled:n})=>({name:e,path:t,enabled:n})).sort((e,t)=>e.path.localeCompare(t.path))}}applyAvailable(e){let t=new Map(this.skills.filter(e=>this.baseline.get(e.path)!==e.enabled).map(e=>[e.path,e.enabled]));this.source=e.source,this.skills=e.skills.map(e=>({...e,enabled:t.get(e.path)??e.effectiveEnabled})),this.baseline=new Map(e.skills.map(e=>[e.path,this.baseline.get(e.path)??e.effectiveEnabled]))}captureBaseline(){this.baseline=new Map(this.skills.map(e=>[e.path,e.enabled]))}};function bc(e){return e instanceof Error?e.message:`Unknown relay error.`}var xc=J(`<main class="evidence-mode svelte-y74n0s"><!></main>`),Sc=J(`<!> <!> <!>`,1),Cc=J(`<p>Start a session from the Sessions tab to chat with Codex.</p>`),wc=J(`<section class="chat-view svelte-y74n0s" aria-labelledby="chat-title"><h2 id="chat-title" class="visually-hidden">Chat</h2> <!></section>`),Tc=J(`<p>Loading skill profiles…</p>`),Ec=J(`<section class="session-profile-manager" aria-labelledby="session-profile-manager-title"><div class="session-profile-manager-header svelte-y74n0s"><h2 id="session-profile-manager-title" tabindex="-1" class="svelte-y74n0s">Manage skill profiles</h2> <button type="button" class="close-profile-manager svelte-y74n0s" aria-label="Close skill profile editor">×</button></div> <!></section>`),Dc=J(`<main class="swipe-surface svelte-y74n0s"><!> <!> <!></main>`),Oc=J(`<!> <!>`,1);function kc(e,t){ze(t,!0);let n=L(`sessions`),r=L(`Loading relay…`),i=L(`system`),a=L(z([])),o=`gpt-5.6-terra`,s=L([o]),c=L(o),l=L([]),u=L(null),d=L(`list`),f=L([]),p=L(``),m=L(``),h=L(null),g=L(``),_=L(z(new Set)),v=L(null),y=L(z([])),b=F(()=>K(y).some(e=>e.id===K(v)&&(e.state===`ready`||e.state===`turnActive`))),x=L(z([])),S=L(`workspace-write`),ee=L(`on-request`),C=L(null),w=L(!1),T=L(``),E=L(null),te=L(!1),D=L(z([])),ne=L(z([])),O=L(0),re=L(z({kind:`unavailable`,sessionId:null})),ie=L(null),ae=F(()=>(K(re).kind===`ready`||K(re).kind===`closing`||K(re).kind===`error`)&&!!K(re).plan),oe=null,se=null,ce=null,le=null,ue=!1,de=0,fe=0,pe=L(null),k=L(null),me=L(z(new Set)),he=L(!1),ge=L(!1),_e=L(!1),ve=L(!1),ye=L(null),be=L(null),xe=L(null),Se=L(null),Ce=0,A=L(z([])),we=z({}),j=Jo(),Te=as({getPlan:j.getPlan,closePlan:j.closePlan},e=>R(re,e,!0)),Ee=Qa(),De=Ms(),M=no(),Oe=new URLSearchParams(location.search).get(`tree-evidence`),N=new URLSearchParams(location.search).get(`toast-evidence`);bi(async()=>{let e=localStorage.getItem(`gestalt-mobile.theme`);if((e===`light`||e===`dark`||e===`system`)&&ke(e),!(Oe===`sessions`||Oe===`git`||N===`error`||N===`stacked`)){le=setInterval(Ge,2e3),document.addEventListener(`visibilitychange`,Ge),window.addEventListener(`focus`,Ge);try{let e=await Ba();R(g,go(K(g)||null,K(a),e.workspaces,lo.sessionBase)??``,!0),R(a,e.workspaces,!0),R(l,e.profiles),R(s,[...new Set([o,...e.models??[]])]),await tt(),R(_,uo(K(a)),!0),R(me,uo(K(a)),!0);let t=await De.readSelectedSession();R(v,e.sessions.some(e=>e.id===t)?t:e.sessions[0]?.id??null,!0),K(v)&&R(O,await De.readCursor(K(v)),!0),K(v)&&R(T,await De.readDraft(K(v)),!0),K(v)&&R(D,await Ee.read(K(v)),!0),R(y,e.sessions,!0),R(A,K(y).find(e=>e.id===K(v))?.pendingInteractions??[],!0),Me(),R(E,K(y).find(e=>e.id===K(v))?.activeTurnId??null,!0),R(r,K(v)?Es(K(E)):`Choose a workspace and start a session.`,!0),Te.select(K(v)),K(v)&&(await We(K(v)),xt(K(v)))}catch(e){R(r,bt(e,`RELAY_UNAVAILABLE`),!0)}}});function ke(e){R(i,e,!0),e===`system`?document.documentElement.removeAttribute(`data-theme`):document.documentElement.dataset.theme=e,localStorage.setItem(`gestalt-mobile.theme`,e)}xi(()=>{se&&clearTimeout(se),ce&&clearTimeout(ce),le&&clearInterval(le),document.removeEventListener(`visibilitychange`,Ge),window.removeEventListener(`focus`,Ge),oe?.close(),Te.dispose()});async function Ae(){if(!K(g)||K(w))return;let e=Qs({workspaceId:K(g),profile:`default`,profileState:`ok`});if(e.profile){R(r,e.profile,!0);return}R(C,K(C)??Qo(),!0),R(w,!0),R(r,`Starting session…`);try{let e=await j.startSession(K(g),{sandbox:K(S),approvalPolicy:K(ee),model:K(c),skillProfile:K(p)||void 0},K(C));R(C,null),R(v,e.id,!0),Te.select(e.id),R(E,null),De.saveSelectedSession(e.id),await je(),R(D,[],!0),I(e.id),R(ne,[],!0),R(O,0),R(T,await De.readDraft(e.id),!0),xt(e.id),R(n,`chat`),it(`chat`),R(r,`Session started.`)}catch(e){R(r,bt(e,`SESSION_START_FAILED`),!0)}finally{R(w,!1)}}async function je(){R(y,await j.listSessions(),!0)}async function Me(){try{R(x,await j.listRecentSessions(),!0)}catch{R(x,[],!0)}}async function Ne(){try{await Promise.all([je(),Me()])}catch(e){R(r,bt(e,`SESSION_REFRESH_FAILED`),!0)}}async function Pe(e){R(r,`Opening session…`);try{let t=K(y).find(t=>t.id===e);if(t&&t.state!==`ready`&&t.state!==`turnActive`){let t=await j.restoreSession(e);R(y,K(y).map(n=>n.id===e?t:n),!0)}R(v,e,!0),Te.select(e),De.saveSelectedSession(e),R(D,await Ee.read(e),!0),R(ne,[],!0),R(O,0),R(T,await De.readDraft(e),!0),R(E,K(y).find(t=>t.id===e)?.activeTurnId??null,!0),R(A,K(y).find(t=>t.id===e)?.pendingInteractions??[],!0),R(n,`chat`),it(`chat`),await We(e),xt(e)}catch(e){R(r,`Could not open session: ${yt(e)}`)}}async function Fe(e){R(r,`Opening recent session…`);try{let t=await j.openRecentSession(e.id,e.cwd);await Ne(),await Pe(t.id)}catch(e){R(r,`Could not open recent session: ${yt(e)}`)}}async function Ie(e){R(r,`Closing session…`);try{await j.releaseSession(e),K(v)===e&&(R(v,null),R(n,`sessions`),R(E,null),R(A,[],!0),De.saveSelectedSession(null),se&&clearTimeout(se),se=null,oe?.close(),oe=null),await Ne(),R(r,`Session closed.`)}catch(e){R(r,`Could not close session: ${yt(e)}`)}}async function Le(e){try{await j.forgetSession(e),K(v)===e&&(oe?.close(),R(v,null),R(E,null),De.saveSelectedSession(null)),await Ne()}catch(e){R(r,`Could not forget session: ${yt(e)}`)}}async function Re(e){R(r,await Yo(e)?`Resume command copied.`:`Could not copy the resume command.`,!0)}async function Ve(e){if(!(!K(v)||K(E)))try{let t=await j.selectModel(K(v),e);R(y,K(y).map(e=>e.id===t.id?{...e,...t}:e),!0),R(T,``),R(r,`Model changed to ${e}; it applies to the next turn.`)}catch(e){R(r,`Could not change model: ${yt(e)}`)}}async function He(){if(!K(v)||!K(T).trim()||K(E)||K(te))return;let e=K(T).trim();R(te,!0);try{let t=await j.startTurn(K(v),e);R(E,t.activeTurnId??null,!0),R(D,Wo(K(D),`user-${t.activeTurnId??Date.now().toString()}`,e,Date.now()),!0),I(K(v)),R(T,``),De.saveDraft(K(v),``),R(r,Es(K(E)),!0)}catch(e){R(r,bt(e,`MESSAGE_SEND_FAILED`),!0)}finally{R(te,!1)}}async function Ue(){if(!(!K(v)||!K(E)))try{await j.interruptTurn(K(v),K(E)),R(E,null),R(r,`Codex turn interrupted.`)}catch(e){R(r,`Could not interrupt Codex: ${yt(e)}`)}}async function We(e,t=0){let n=await j.getHistory(e);if(K(v)!==e)return;let i=n.items.filter(e=>(e.kind===`user`||e.kind===`agent`)&&e.text).map(e=>({id:e.id,role:e.kind===`user`?`user`:`assistant`,text:e.text,...typeof e.occurredAt==`number`?{occurredAt:e.occurredAt}:{},...e.phase===`commentary`||e.phase===`final_answer`?{phase:e.phase}:{},complete:!0})),a=K(D).filter(e=>!e.complete);R(D,[...i,...a],!0),I(e);let o=n.items.flatMap(e=>{let t=Va(e);return t?[t]:[]});R(ne,[...o,...K(ne).filter(e=>!o.some(t=>t.id===e.id))],!0),`activeTurnId`in n&&(R(E,n.activeTurnId??null,!0),R(y,K(y).map(t=>t.id===e?{...t,activeTurnId:K(E)}:t),!0)),R(O,Math.max(K(O),n.currentSequence??t),!0),De.saveCursor(e,K(O)),t&&Te.refresh(e),R(r,Es(K(E)),!0)}function Ge(){K(n)!==`chat`||!K(v)||document.visibilityState!==`visible`||ue||(ue=!0,We(K(v)).catch(()=>void 0).finally(()=>{ue=!1}))}function Ke(e,t=!1){if(e===`chat`&&!K(b)||e===`plan`&&!K(ae))return;let r=K(n)!==e;R(n,e,!0),it(e),e===`chat`&&(Ge(),r&&t&&st()),e===`git`&&K(k)&&ct(K(k)),e===`sessions`&&(K(d)===`profile-manager`&&rt(!1),Ne())}function qe(e){R(ie,e,!0),queueMicrotask(()=>R(ie,null))}let Je=null;function Ye(e){return e instanceof Element&&e.closest(`button, input, textarea, select, a, summary, [contenteditable]`)!==null}function Xe(e){e.pointerType!==`touch`||Ye(e.target)||(Je={pointerId:e.pointerId,x:e.clientX,y:e.clientY})}function Ze(e){if(!Je||e.pointerId!==Je.pointerId)return;let t=Je;Je=null;let r=e.clientX-t.x,i=e.clientY-t.y;Math.abs(r)<48||Math.abs(r)<=Math.abs(i)||Ke(ec(K(n),r<0?1:-1,{chatEnabled:K(b),planEnabled:K(ae)}))}function Qe(e){Je?.pointerId===e.pointerId&&(Je=null)}async function $e(){await Te.close()===`chat`&&(Ke(`chat`),qe(`chat`))}async function et(e,t){let n=new yc(j);await n.load(e,t),R(u,n,!0)}async function tt(){try{let e=await j.listSkillProfiles();R(f,e.profiles.filter(e=>!(`error`in e)));let t=e.profiles.find(e=>`error`in e);R(m,t&&`error`in t?t.error.message:``,!0),K(f).some(e=>e.name===K(p))||R(p,``)}catch(e){R(f,[]),R(m,e instanceof Error?e.message:`Unable to load saved skill profiles.`,!0)}}async function nt(e){let t=K(g)||K(a)[0]?.id||``,n=K(l).find(e=>e.state===`ok`)?.name??``;if(!t||!n){R(r,`Choose a workspace and available Codex profile before managing skill profiles.`);return}await et(t,n),R(d,`profile-manager`),await cr(),K(h)?.focus()}async function rt(e=!0){R(d,`list`),await cr(),e&&document.getElementById(`manage-skill-profiles`)?.focus()}function it(e){requestAnimationFrame(()=>{K(n)===e&&window.scrollTo({top:e===`chat`?document.documentElement.scrollHeight:0})})}let at=!1;function ot(){at||(at=!0,requestAnimationFrame(()=>{at=!1,K(n)===`chat`&&window.scrollTo({top:document.documentElement.scrollHeight})}))}function st(){window.matchMedia(`(min-width: 48rem)`).matches&&cr().then(()=>{K(n)===`chat`&&document.getElementById(`message`)?.focus()})}async function ct(e=K(k)){let t=e?ho(K(a),e):void 0;if(!e||!t?.isGitRepository){Ce+=1,R(pe,null);return}let n=++Ce;try{let t=await j.getGitSummary(e);n===Ce&&K(k)===e&&R(pe,t,!0)}catch(t){if(n!==Ce||K(k)!==e)return;R(pe,null),R(ye,bt(t,`GIT_SUMMARY_FAILED`),!0)}}function lt(e){R(k,e.id,!0),R(ye,null),R(pe,null),R(he,!1),e.isGitRepository?ct(e.id):(Ce+=1,R(pe,null))}async function ut(){let e=K(k);if(!(!e||!ho(K(a),e)?.isGitRepository)){R(xe,K(xe)??Qo(),!0),R(ge,!0),R(ye,null);try{await j.pullGit(e,K(xe)),await ct(e),R(xe,null)}catch(e){R(ye,bt(e,`GIT_PULL_FAILED`),!0)}finally{R(ge,!1)}}}async function dt(e){if(K(ve))return;let t=K(k)?ho(K(a),K(k)):void 0;if(!t||t.isGitRepository){R(be,null),M.enqueue({kind:`error`,code:`INVALID_CLONE_DESTINATION`,message:`Select a non-repository folder before cloning.`});return}let n=t.id;R(ve,!0),R(ye,null),R(be,null);try{await j.cloneGitRepository(n,e);let t=await Ba(),r=Vo(K(a),t.workspaces,n,e,K(me));R(g,go(K(g)||null,K(a),t.workspaces,lo.sessionBase)??``,!0),R(a,t.workspaces,!0),R(k,r.selectedId,!0),R(me,r.expandedIds,!0),K(k)&&ho(K(a),K(k))?.isGitRepository?await ct(K(k)):R(pe,null),R(be,`Repository cloned into the selected workspace.`),M.enqueue({kind:`success`,message:`Repository cloned.`})}catch(e){bt(e,`GIT_CLONE_FAILED`)}finally{R(ve,!1)}}async function ft(e){let t=K(k);if(!(!t||e===K(pe)?.branch)){R(_e,!0),R(ye,null);try{await j.checkoutGitBranch(t,e),await ct(t)}catch(e){R(ye,bt(e,`GIT_CHECKOUT_FAILED`),!0)}finally{R(_e,!1)}}}async function pt(){let e=K(k);if(e){R(Se,K(Se)??Qo(),!0),R(ye,null);try{await j.pushGit(e,K(Se)),R(he,!1),await ct(e),R(Se,null)}catch(e){R(ye,bt(e,`GIT_PUSH_FAILED`),!0)}}}async function mt(e,t){K(v)&&(await j.respondInteraction(K(v),e,{decision:t}),R(A,K(A).filter(t=>t.requestId!==e),!0))}async function ht(e){if(!K(v))return;let t=Fi(Pi(e.payload).map(e=>({id:e.id,answer:we[e.id]??``})));await j.respondInteraction(K(v),e.requestId,t),R(A,K(A).filter(t=>t.requestId!==e.requestId),!0)}async function gt(e){if(!K(v))return;let t=qo(e.payload);if(!t){R(r,`Codex sent an invalid permission request.`);return}await j.respondInteraction(K(v),e.requestId,t),R(A,K(A).filter(t=>t.requestId!==e.requestId),!0)}function _t(e,t){we[e]=t}function vt(e){R(T,e,!0),K(v)&&De.saveDraft(K(v),e)}function I(e){Ee.write(e,K(D))}function yt(e){return e instanceof Error?e.message:`Unknown relay error.`}function bt(e,t){let n=eo(e,t);return M.enqueue({kind:`error`,...n}),n.message}function xt(e){se&&clearTimeout(se),ce&&clearTimeout(ce),oe?.close();let t=++fe,n=location.protocol===`https:`?`wss:`:`ws:`;oe=new WebSocket(`${n}//${location.host}/api/sessions/${encodeURIComponent(e)}/events?after=${K(O)}`),oe.onopen=()=>{t!==fe||K(v)!==e||(R(r,Es(K(E)),!0),Ge(),ce=setTimeout(()=>{de=0},3e4))},oe.onmessage=t=>{let n=JSON.parse(String(t.data));if(n.type===`relay.resyncRequired`){We(e,typeof n.currentSequence==`number`?n.currentSequence:0);return}if(n.type===`relay.event`&&n.event?.type===`interaction.requested`){let e=n.event.payload;K(A).some(t=>t.requestId===e.requestId)||R(A,[...K(A),e],!0)}if(n.type===`relay.event`&&n.event?.type===`turnCompleted`&&(R(E,null),R(r,Es(K(E)),!0),R(D,Ko(K(D),`assistant-${e}`),!0),I(e),We(e).catch(()=>void 0)),n.type===`relay.event`&&n.event?.type===`session.updated`){let t=n.event.payload;if(typeof t==`object`&&t&&t.id===e){let n=t,i=K(E);R(E,typeof n.activeTurnId==`string`?n.activeTurnId:null,!0),i&&!K(E)&&R(r,Es(K(E)),!0),R(y,K(y).map(t=>t.id===e?{...t,...n}:t),!0)}}if(n.type===`relay.event`&&n.event?.type===`interaction.resolved`){let{requestId:e}=n.event.payload;R(A,K(A).filter(t=>t.requestId!==e),!0)}if(n.type===`relay.event`&&n.event?.type===`activity.updated`){let e=n.event.payload;typeof e.id==`string`&&typeof e.label==`string`&&typeof e.detail==`string`&&R(ne,[...K(ne).filter(t=>t.id!==e.id),e],!0)}R(O,$o(K(O),n,t=>{R(D,Go(K(D),`assistant-${e}`,t,Date.now()),!0),I(e)},()=>{We(e)},t=>Te.applyEvent(e,t)),!0),De.saveCursor(e,K(O))},oe.onclose=()=>{t!==fe||K(v)!==e||(ce&&clearTimeout(ce),R(r,`Connection interrupted. Reconnecting…`),se=setTimeout(()=>xt(e),Ds(de++)))}}var St=Oc();Hr(`y74n0s`,e=>{Sn(()=>{Xt.title=`Gestalt Mobile`})});var Ct=V(St),wt=e=>{co(e,{get variant(){return N}})},Tt=e=>{var t=xc();To(B(t),{get context(){return Oe}}),P(t),Y(e,t)},Et=e=>{var t=Dc(),l=B(t);{let e=F(()=>K(n)===`chat`?Is(K(y).find(e=>e.id===K(v))?.workspacePath??``):null),t=F(()=>K(n)===`chat`?K(y).find(e=>e.id===K(v))?.model??o:null);Ti(l,{get theme(){return K(i)},get sessionPath(){return K(e)},get sessionModel(){return K(t)},onthemechange:ke})}var C=H(l,2),O=e=>{var t=wc(),n=H(B(t),2),i=e=>{var t=Sc(),n=V(t);Ia(n,{get messages(){return K(D)},get activities(){return K(ne)}});var i=H(n,2);qi(i,{get interactions(){return K(A)},get answers(){return we},onanswer:_t,onuserinput:e=>void ht(e),onpermission:e=>void gt(e),ondecision:(e,t)=>void mt(e,t)}),la(H(i,2),{get status(){return K(r)},get message(){return K(T)},get activeTurnId(){return K(E)},get starting(){return K(te)},get models(){return K(s)},onchange:vt,onscrollbottom:ot,onmodelselect:e=>void Ve(e),onsend:()=>void He(),oninterrupt:()=>void Ue()}),Y(e,t)},a=e=>{Y(e,Cc())};Z(n,e=>{K(v)?e(i):e(a,-1)}),P(t),Y(e,t)},oe=e=>{Ts(e,{get state(){return K(re)},onclose:()=>void $e()})},se=e=>{{let t=F(()=>K(k)?ho(K(a),K(k))??null:null);Bo(e,{get workspaceTree(){return K(a)},get selectedWorkspace(){return K(t)},get expandedIds(){return K(me)},get summary(){return K(pe)},get refreshing(){return K(ge)},get checkingOut(){return K(_e)},get cloning(){return K(ve)},get error(){return K(ye)},get cloneStatus(){return K(be)},get confirmingPush(){return K(he)},onpull:()=>void ut(),oncheckout:e=>void ft(e),onopenpushconfirmation:()=>R(he,!0),onpush:()=>void pt(),oncancelpush:()=>R(he,!1),onselect:lt,onexpandedchange:e=>R(me,e,!0),onclone:e=>void dt(e)})}},ce=e=>{var t=Dr(),n=V(t),r=e=>{var t=Ec(),n=B(t),r=B(n);vi(r,e=>R(h,e),()=>K(h));var i=H(r,2);P(n);var a=H(n,2),o=e=>{vc(e,{get skillsState(){return K(u)},onrefresh:()=>K(u)?.refresh()??Promise.resolve(),onprofileschange:()=>void tt(),heading:`Skill profile editor`})},s=e=>{Y(e,Tc())};Z(a,e=>{K(u)?e(o):e(s,-1)}),P(t),q(`click`,i,()=>void rt()),Y(e,t)},i=e=>{Zs(e,{get sessions(){return K(y)},get recentSessions(){return K(x)},get selectedSessionId(){return K(v)},get workspaceTree(){return K(a)},get workspaceId(){return K(g)},get expandedIds(){return K(_)},get sandbox(){return K(S)},get approvalPolicy(){return K(ee)},get models(){return K(s)},get selectedModel(){return K(c)},get skillProfiles(){return K(f)},get selectedSkillProfile(){return K(p)},get skillProfileError(){return K(m)},get startingSession(){return K(w)},onworkspacechange:e=>R(g,e,!0),onexpandedchange:e=>R(_,e,!0),onsandboxchange:e=>R(S,e,!0),onapprovalpolicychange:e=>R(ee,e,!0),onmodelchange:e=>R(c,e,!0),onskillprofilechange:e=>R(p,e,!0),onmanageprofiles:e=>void nt(e),onopen:Pe,onselectopen:Pe,onclose:e=>void Ie(e),onopenrecent:e=>void Fe(e),onforget:e=>void Le(e),oncopyresume:e=>void Re(e),onstart:()=>void Ae()})};Z(n,e=>{K(d)===`profile-manager`?e(r):e(i,-1)}),Y(e,t)};Z(C,e=>{K(n)===`chat`?e(O):K(n)===`plan`?e(oe,1):K(n)===`git`?e(se,2):e(ce,-1)}),rc(H(C,2),{get activeTab(){return K(n)},get chatEnabled(){return K(b)},get planEnabled(){return K(ae)},get focusTab(){return K(ie)},onselect:Ke}),P(t),q(`pointerdown`,t,Xe),q(`pointerup`,t,Ze),vr(`pointercancel`,t,Qe),Y(e,t)};Z(Ct,e=>{N===`error`||N===`stacked`?e(wt):Oe===`sessions`||Oe===`git`?e(Tt,1):e(Et,-1)});var Dt=H(Ct,2),Ot=e=>{oo(e,{get queue(){return M}})};Z(Dt,e=>{N!==`error`&&N!==`stacked`&&e(Ot)}),Y(e,St),Be()}yr([`pointerdown`,`pointerup`,`click`]);var Ac=document.getElementById(`app`);if(!Ac)throw Error(`Missing application mount target`);Or(kc,{target:Ac});
|
|
12
|
+
repository to inspect branches and enable repository actions.</p> <div class="git-actions svelte-pudr3t" aria-label="Repository actions unavailable"><button type="button" disabled="" class="svelte-pudr3t"><span aria-hidden="true">↑</span> Push</button> <button type="button" disabled="" class="svelte-pudr3t"><span aria-hidden="true">↓</span> Pull</button></div>`,1),Lo=J(`<p>Select a folder above to choose a Clone destination or inspect a Git repository.</p> <div class="git-actions svelte-pudr3t" aria-label="Repository actions unavailable"><button type="button" disabled="" class="svelte-pudr3t"><span aria-hidden="true">↑</span> Push</button> <button type="button" disabled="" class="svelte-pudr3t"><span aria-hidden="true">↓</span> Pull</button></div>`,1),Ro=J(`<p role="alert"> </p>`),zo=J(`<section class="git-view svelte-pudr3t" aria-labelledby="git-title"><h2 id="git-title" class="visually-hidden">Git</h2> <section class="git-tree svelte-pudr3t" aria-labelledby="git-tree-title"><div class="section-heading svelte-pudr3t"><h3 id="git-tree-title" class="svelte-pudr3t">Repository and clone destination</h3> <p class="svelte-pudr3t">Select any folder. Git repositories enable repository actions; other folders are clone destinations.</p></div> <!></section> <form class="clone-form svelte-pudr3t"><div class="clone-controls svelte-pudr3t"><div class="clone-field clone-destination svelte-pudr3t"><span class="field-label svelte-pudr3t">Destination</span> <output aria-live="polite" class="svelte-pudr3t"> </output></div> <div class="clone-field svelte-pudr3t"><label for="git-clone-address">Git address</label> <input id="git-clone-address" name="address" required="" autocomplete="url" inputmode="url" enterkeyhint="done" placeholder="https://example.com/owner/repository.git" aria-describedby="clone-help"/></div> <button type="submit" class="svelte-pudr3t"> </button></div> <p id="clone-help" class="svelte-pudr3t">The repository is cloned inside the selected workspace.</p> <!></form> <section class="repository-details svelte-pudr3t" aria-labelledby="repository-details-title"><h3 id="repository-details-title" class="svelte-pudr3t">Repository details</h3> <!> <!></section></section>`);function Bo(e,t){ze(t,!0);let n=L(``),r=F(()=>t.selectedWorkspace&&!t.selectedWorkspace.isGitRepository?t.selectedWorkspace:null);function i(e){e.preventDefault(),!(!K(n).trim()||t.cloning)&&t.onclone(K(n).trim())}var a=zo(),o=H(B(a),2),s=H(B(o),2);{let e=F(()=>t.selectedWorkspace?.id??null);Co(s,{get roots(){return t.workspaceTree},get expandedIds(){return t.expandedIds},get selectedId(){return K(e)},label:`Git repository and clone destination`,get onexpandedchange(){return t.onexpandedchange},get onselect(){return t.onselect}})}P(o);var c=H(o,2),l=B(c),u=B(l),d=H(B(u),2),f=B(d,!0);P(d),P(u);var p=H(u,2),m=H(B(p),2);ci(m),P(p);var h=H(p,2),g=B(h,!0);P(h),P(l);var _=H(l,4),v=e=>{var n=Oo(),r=B(n,!0);P(n),U(()=>X(r,t.cloneStatus)),Y(e,n)};Z(_,e=>{t.cloneStatus&&e(v)}),P(c);var y=H(c,2),b=H(B(y),2),x=e=>{var n=Dr(),r=V(n),i=e=>{var n=Dr(),r=V(n),i=e=>{var n=No(),r=V(n),i=B(r),a=H(B(i),2);Q(a,20,()=>t.summary.branches??[],e=>e,(e,t)=>{var n=ko(),r=B(n,!0);P(n);var i={};U(()=>{X(r,t),i!==(i=t)&&(n.value=(n.__value=t)??``)}),Y(e,n)}),P(a);var o;ti(a);var s=H(a,2),c=B(s);P(s);var l=H(s,2),u=B(l);P(l);var d=H(l,2),f=B(d),p=B(f,!0);P(f),P(d);var m=H(d,2),h=B(m);P(m),P(i);var g=H(i,2),_=B(g),v=H(_,2),y=H(B(v));P(v),P(g),P(r);var b=H(r,2),x=e=>{var n=Ao(),r=B(n),i=B(r);P(r);var a=H(r,2),o=H(a,2);P(n),U(()=>X(i,`Push HEAD to ${t.summary.upstream??``}?`)),q(`click`,a,function(...e){t.onpush?.apply(this,e)}),q(`click`,o,function(...e){t.oncancelpush?.apply(this,e)}),Y(e,n)};Z(b,e=>{t.confirmingPush&&e(x)});var S=H(b,2),ee=e=>{var n=Mo(),r=H(B(n),2);Q(r,21,()=>t.summary.commits,e=>e.hash,(e,t)=>{var n=jo(),r=B(n),i=B(r),a=B(i,!0);P(i);var o=H(i),s=B(o,!0);P(o),P(r);var c=H(r,2),l=B(c),u=B(l,!0);P(l);var d=H(l),f=B(d,!0);P(d),P(c),P(n),U(e=>{$(i,`title`,K(t).hash),X(a,K(t).shortHash),X(s,K(t).subject),X(u,K(t).author),$(d,`datetime`,K(t).authoredAt),$(d,`title`,K(t).authoredAt),X(f,e)},[()=>Do(K(t).authoredAt)]),Y(e,n)}),P(r),P(n),Y(e,n)};Z(S,e=>{t.summary.commits.length&&e(ee)}),U(e=>{a.disabled=t.refreshing||t.checkingOut||!t.summary.branches?.length,o!==(o=t.summary.branch??``)&&(a.value=(a.__value=t.summary.branch??``)??``,ei(a,t.summary.branch??``)),X(c,`Upstream: ${t.summary.upstream??`none`??``}`),X(u,`Ahead ${t.summary.ahead??``}; behind ${t.summary.behind??``}.`),$(f,`datetime`,t.summary.fetchedAt??void 0),X(p,e),X(h,`Changes: ${t.summary.dirty.staged??``} staged, ${t.summary.dirty.unstaged??``} unstaged, ${t.summary.dirty.untracked??``} untracked.`),_.disabled=t.refreshing||t.checkingOut||!t.summary.upstream||t.summary.ahead<1||t.summary.behind>0,v.disabled=t.refreshing||t.checkingOut,X(y,` ${t.refreshing?`Pulling…`:`Pull`}`)},[()=>Eo(t.summary.fetchedAt)]),q(`change`,a,e=>t.oncheckout(e.currentTarget.value)),q(`click`,_,function(...e){t.onopenpushconfirmation?.apply(this,e)}),q(`click`,v,function(...e){t.onpull?.apply(this,e)}),Y(e,n)},a=e=>{Y(e,Po())};Z(r,e=>{t.summary.available?e(i):e(a,-1)}),Y(e,n)},a=e=>{Y(e,Fo())};Z(r,e=>{t.summary?e(i):t.error||e(a,1)}),Y(e,n)},S=e=>{var n=Io(),r=V(n),i=B(r),a=B(i,!0);P(i),je(),P(r),je(2),U(()=>X(a,t.selectedWorkspace.name)),Y(e,n)},ee=e=>{var t=Lo();je(2),Y(e,t)};Z(b,e=>{t.selectedWorkspace?.isGitRepository?e(x):t.selectedWorkspace?e(S,1):e(ee,-1)});var C=H(b,2),w=e=>{var n=Ro(),r=B(n,!0);P(n),U(()=>X(r,t.error)),Y(e,n)};Z(C,e=>{t.error&&e(w)}),P(y),P(a),U(()=>{X(f,K(r)?`~/${K(r).relativePath}`:`Select a non-repository folder`),h.disabled=t.cloning,X(g,t.cloning?`Cloning…`:`Clone`)}),vr(`submit`,c,i),mi(m,()=>K(n),e=>R(n,e)),Y(e,a),Be()}yr([`change`,`click`]);function Vo(e,t,n,r,i){let a=new Set(Ho(e).filter(e=>e.isGitRepository).map(e=>e.id)),o=ho(t,n),s=o?Ho(o.children).filter(e=>e.isGitRepository&&!a.has(e.id)):[],c=Uo(r),l=s.find(e=>e.name===c)??(s.length===1?s[0]:void 0),u=l?.id??o?.id??null,d=new Set(i);return u&&mo(t,u).forEach(e=>d.add(e)),!l&&o&&d.add(o.id),{selectedId:u,expandedIds:d}}function Ho(e){let t=[],n=e=>{t.push(e),e.children.forEach(n)};return e.forEach(n),t}function Uo(e){return(e.trim().replace(/[?#].*$/,``).replace(/\/+$/,``).split(/[/:]/).at(-1)??``).replace(/\.git$/i,``)}function Wo(e,t,n,r){return[...e,{id:t,role:`user`,text:n,...r?{occurredAt:r}:{},complete:!0}]}function Go(e,t,n,r){return e.find(e=>e.id===t)?e.map(e=>e.id===t?{...e,text:e.text+n}:e):[...e,{id:t,role:`assistant`,phase:`commentary`,text:n,...r?{occurredAt:r}:{},complete:!1}]}function Ko(e,t){return e.map(e=>e.id===t?{...e,complete:!0}:e)}function qo(e){if(typeof e!=`object`||!e)return null;let t=e.permissions;if(typeof t!=`object`||!t)return null;let n=t;return{permissions:{...n.network===null||n.network===void 0?{}:{network:n.network},...n.fileSystem===null||n.fileSystem===void 0?{}:{fileSystem:n.fileSystem}},scope:`turn`}}function Jo(e=fetch){async function t(e){let t=await e.json().catch(()=>null),n=typeof t?.detail==`string`?t.detail:typeof t?.title==`string`?t.title:`Relay request failed (${e.status}).`;return Error(n)}async function n(n,r,i={}){let a=await e(n,{method:`POST`,headers:{"content-type":`application/json`,...i},body:JSON.stringify(r)});if(!a.ok)throw await t(a);return a.json()}async function r(n,r){let i=await e(n,{method:`PUT`,headers:{"content-type":`application/json`},body:JSON.stringify(r)});if(!i.ok)throw await t(i);return i.json()}async function i(n){let r=await e(n,{method:`DELETE`});if(!r.ok)throw await t(r)}async function a(n,r){let i=await e(n,r?{signal:r}:void 0);if(!i.ok)throw await t(i);return i.json()}async function o(n,r){let i=await e(n,{signal:r});if(i.status===204)return null;if(!i.ok)throw await t(i);return i.json()}return{listSessions:()=>a(`/api/sessions`),listRecentSessions:()=>a(`/api/sessions/recent-threads`),openRecentSession:(e,t)=>n(`/api/sessions/recent-threads/open`,{threadId:e,cwd:t}),startSession:(e,t={},r)=>n(`/api/sessions`,{workspaceId:e,profile:`default`,...t},r?{"idempotency-key":r}:{}),startTurn:(e,t)=>n(`/api/sessions/${encodeURIComponent(e)}/turns`,{text:t}),selectModel:(e,t)=>n(`/api/sessions/${encodeURIComponent(e)}/model`,{model:t}),interruptTurn:(e,t)=>n(`/api/sessions/${encodeURIComponent(e)}/turns/${encodeURIComponent(t)}/interrupt`,{}),restoreSession:e=>n(`/api/sessions/${encodeURIComponent(e)}/restore`,{}),releaseSession:e=>n(`/api/sessions/${encodeURIComponent(e)}/release`,{}),forgetSession:n=>e(`/api/sessions/${encodeURIComponent(n)}`,{method:`DELETE`}).then(async e=>{if(!e.ok)throw await t(e)}),getHistory:e=>a(`/api/sessions/${encodeURIComponent(e)}/history`),getPlan:(e,t)=>o(`/api/sessions/${encodeURIComponent(e)}/plan`,t),closePlan:e=>i(`/api/sessions/${encodeURIComponent(e)}/plan`),getGitSummary:e=>a(`/api/git/repositories/${encodeURIComponent(e)}`),cloneGitRepository:(e,t)=>n(`/api/git/clone`,{workspaceId:e,address:t}),refreshGit:(e,t)=>n(`/api/git/repositories/${encodeURIComponent(e)}/refresh`,{},t?{"idempotency-key":t}:{}),pullGit:(e,t)=>n(`/api/git/repositories/${encodeURIComponent(e)}/pull`,{},t?{"idempotency-key":t}:{}),checkoutGitBranch:(e,t)=>n(`/api/git/repositories/${encodeURIComponent(e)}/checkout`,{branch:t}),pushGit:(e,t)=>n(`/api/git/repositories/${encodeURIComponent(e)}/push`,{},t?{"idempotency-key":t}:{}),listAvailableSkills:(e,t,n=!1)=>a(`/api/skills?${new URLSearchParams({workspaceId:e,profile:t,...n?{refresh:`true`}:{}}).toString()}`),listSkillProfiles:()=>a(`/api/skill-profiles`),replaceSkillProfile:(e,t)=>r(`/api/skill-profiles/${encodeURIComponent(e)}`,t),deleteSkillProfile:e=>i(`/api/skill-profiles/${encodeURIComponent(e)}`),respondInteraction:(e,t,r)=>n(`/api/sessions/${encodeURIComponent(e)}/interactions/${encodeURIComponent(t)}`,r)}}async function Yo(e,t=globalThis.navigator?.clipboard,n=Zo){if(!t)return Xo(e,n);try{return await t.writeText(e),!0}catch{return Xo(e,n)}}function Xo(e,t){try{return t(e)}catch{return!1}}function Zo(e){if(typeof document>`u`||!document.body)return!1;let t=document.createElement(`textarea`);t.value=e,t.setAttribute(`readonly`,``),t.style.cssText=`position:fixed;opacity:0`,document.body.append(t),t.select();let n=document.execCommand(`copy`);return t.remove(),n}function Qo(e=globalThis.crypto,t=Date.now,n=Math.random){return typeof e?.randomUUID==`function`?e.randomUUID():`k-${t().toString(36)}-${Math.floor(n()*4294967296).toString(36)}`}function $o(e,t,n,r=()=>{},i=()=>{}){if(t.type!==`relay.event`||!t.event||t.event.sequence<=e)return e;if(t.event.sequence>e+1)return r(t.event.sequence),e;if(i(t.event),t.event.type===`agentMessageDelta`){let e=t.event.payload.text;e&&n(e)}return t.event.sequence}function es(e){if(!e||typeof e!=`object`)return!1;let t=e;return typeof t.title==`string`&&Array.isArray(t.steps)&&typeof t.totalSteps==`number`&&typeof t.doneSteps==`number`&&typeof t.allDone==`boolean`&&typeof t.currentStepId==`string`}function ts(e){return e instanceof Error?e.message:`Could not load the plan.`}function ns(e){return{...e,...e.skills?{skills:[...e.skills]}:{},description:{...e.description},children:e.children.map(ns)}}function rs(e){return{...e,steps:e.steps.map(ns)}}function is(e,t){return e.kind===`unavailable`&&e.sessionId===t}function as(e,t){let n=null,r={kind:`unavailable`,sessionId:null},i=0,a=0,o=null,s=0,c=e=>{++a,r=e,t(e)},l=(t,r)=>{o?.abort(),o=new AbortController;let a=++i,l=s;r||c({kind:`loading`,sessionId:t}),e.getPlan(t,o.signal).then(e=>{a!==i||n!==t||s===l&&c(e?{kind:`ready`,sessionId:t,plan:rs(e)}:{kind:`unavailable`,sessionId:t})}).catch(e=>{o?.signal.aborted||a!==i||n!==t||c({kind:`error`,sessionId:t,error:ts(e),...r?{plan:r}:{}})})};return{select(e){if(o?.abort(),n=e,s=0,!e){++i,c({kind:`unavailable`,sessionId:null});return}l(e,void 0)},refresh(e){if(n!==e)return;let t=r.kind===`ready`||r.kind===`closing`||r.kind===`error`?r.plan:void 0;l(e,t)},applyEvent(e,t){n!==e||t.sequence<=s||(t.type===`plan.updated`&&es(t.payload)&&(s=t.sequence,c({kind:`ready`,sessionId:e,plan:rs(t.payload)})),t.type===`plan.closed`&&(s=t.sequence,c({kind:`unavailable`,sessionId:e})))},async close(){if(r.kind!==`ready`&&r.kind!==`error`||!r.plan?.allDone)return null;let{sessionId:t,plan:i}=r;c({kind:`closing`,sessionId:t,plan:i});let o=a;try{return await e.closePlan(t),n===t?a===o?(c({kind:`unavailable`,sessionId:t}),`chat`):is(r,t)?`chat`:null:null}catch(e){return n===t?a===o?(c({kind:`error`,sessionId:t,plan:i,error:ts(e)}),null):is(r,t)?`chat`:null:null}},dispose(){o?.abort(),o=null,n=null,++i,c({kind:`unavailable`,sessionId:null})}}}var os=J(`<section aria-labelledby="plan-title" class="svelte-3rmyvg"><h2 id="plan-title" class="svelte-3rmyvg">Plan</h2><p class="svelte-3rmyvg">Loading plan…</p></section>`),ss=J(`<section aria-labelledby="plan-title" class="svelte-3rmyvg"><h2 id="plan-title" class="svelte-3rmyvg">Plan</h2><p class="svelte-3rmyvg">No retained plan for this session.</p></section>`),cs=J(`<section aria-labelledby="plan-title" class="svelte-3rmyvg"><h2 id="plan-title" class="svelte-3rmyvg">Plan</h2><p class="svelte-3rmyvg"> </p></section>`),ls=J(`<button class="close svelte-3rmyvg" aria-label="Close completed plan">×</button>`),us=J(`<p class="svelte-3rmyvg">Closing completed plan…</p>`),ds=J(`<p class="svelte-3rmyvg"> </p>`),fs=J(`<div class="svelte-3rmyvg"><dt class="svelte-3rmyvg">Subtitle</dt><dd class="svelte-3rmyvg"> </dd></div>`),ps=J(`<div class="svelte-3rmyvg"><dt class="svelte-3rmyvg">Date</dt><dd class="svelte-3rmyvg"> </dd></div>`),ms=J(`<div class="svelte-3rmyvg"><dt class="svelte-3rmyvg">Keywords</dt><dd class="svelte-3rmyvg"> </dd></div>`),hs=J(`<dl class="metadata svelte-3rmyvg"><!> <!> <!></dl>`),gs=J(`<p class="svelte-3rmyvg">No plan steps have been retained yet.</p>`),_s=J(`<p class="svelte-3rmyvg"><strong class="svelte-3rmyvg"> </strong> </p>`),vs=J(`<p class="svelte-3rmyvg"><strong class="svelte-3rmyvg">Skills:</strong> </p>`),ys=J(`<li class="svelte-3rmyvg"><details class="svelte-3rmyvg"><summary class="svelte-3rmyvg"><strong class="svelte-3rmyvg"> </strong> <span class="svelte-3rmyvg"> </span> <span class="svelte-3rmyvg"> </span></summary> <!> <!></details></li>`),bs=J(`<ol class="svelte-3rmyvg"></ol>`),xs=J(`<li class="svelte-3rmyvg"><details class="svelte-3rmyvg"><summary class="svelte-3rmyvg"><strong class="svelte-3rmyvg"> </strong> <span class="svelte-3rmyvg"> </span> <span class="svelte-3rmyvg"> </span></summary> <!> <!> <!></details></li>`),Ss=J(`<ol class="plan-steps svelte-3rmyvg"></ol>`),Cs=J(`<section class="plan svelte-3rmyvg" aria-labelledby="plan-title"><header class="svelte-3rmyvg"><div class="svelte-3rmyvg"><h2 id="plan-title" class="svelte-3rmyvg"> </h2> <p class="svelte-3rmyvg"> </p></div> <!></header> <progress aria-label="Plan progress" class="svelte-3rmyvg"> </progress> <p class="svelte-3rmyvg"> </p> <!> <!> <!></section>`),ws=J(`<p class="visually-hidden svelte-3rmyvg" aria-live="polite" aria-atomic="true"> </p> <!>`,1);function Ts(e,t){ze(t,!0);let n={effort:`Effort`,goal:`Goal`,notes:`Notes`,why:`Why`,change:`Change`,tests:`Tests`,doneWhen:`Done when`},r=L(z(new Set)),i=z({}),a=null,o=0,s=F(()=>t.state.kind===`ready`||t.state.kind===`closing`||t.state.kind===`error`?t.state.plan:void 0),c=F(()=>K(s)?d(K(s).steps,K(s).currentStepId):void 0),l=F(()=>K(s)?f(K(s).steps,K(s).currentStepId):new Set),u=F(()=>t.state.kind===`loading`?`Loading plan.`:t.state.kind===`unavailable`?`No retained plan for this session.`:t.state.kind===`error`&&!K(s)?t.state.error:t.state.kind===`closing`?`Closing completed plan.`:K(s)?K(c)?`Current step: ${K(c).title}, ${K(c).state}. ${K(s).doneSteps} of ${K(s).totalSteps} complete.${t.state.kind===`error`?` ${t.state.error}`:``}`:`${K(s).doneSteps} of ${K(s).totalSteps} plan steps complete.`:``);yn(()=>{let e=K(s)?.currentStepId||null;if(!e||a===e)return;a=e;let t=++o;cr().then(()=>{t!==o||K(s)?.currentStepId!==e||i[e]?.scrollIntoView({behavior:`auto`,block:`nearest`,inline:`nearest`})})});function d(e,t){for(let n of e){if(n.id===t)return n;let e=d(n.children,t);if(e)return e}}function f(e,t,n=[]){for(let r of e){if(r.id===t)return new Set([...n,r.id]);let e=f(r.children,t,[...n,r.id]);if(e.size)return e}return new Set}function p(e){return K(r).has(e)||K(l).has(e)}function h(e,t){R(r,t?new Set([...K(r),e]):new Set([...K(r)].filter(t=>t!==e)),!0)}function g(e){return e.description.goal??e.description.why??e.title}function _(e){return Object.keys(n).flatMap(t=>{let r=e.description[t];return r?[[n[t],r]]:[]})}function v(e){return Math.max(e.totalSteps,1)}var y=ws(),b=V(y),x=B(b,!0);P(b);var S=H(b,2),ee=e=>{Y(e,os())},C=e=>{Y(e,ss())},w=e=>{var n=cs(),r=H(B(n)),i=B(r,!0);P(r),P(n),U(()=>X(i,t.state.error)),Y(e,n)},T=e=>{var n=Cs(),r=B(n),a=B(r),o=B(a),l=B(o,!0);P(o);var u=H(o,2),d=B(u);P(u),P(a);var f=H(a,2),y=e=>{var n=ls();U(()=>n.disabled=t.state.kind===`closing`),q(`click`,n,function(...e){t.onclose?.apply(this,e)}),Y(e,n)};Z(f,e=>{K(s).allDone&&e(y)}),P(r);var b=H(r,2),x=B(b);P(b);var S=H(b,2),ee=B(S);P(S);var C=H(S,2),w=e=>{Y(e,us())},T=e=>{var n=ds(),r=B(n,!0);P(n),U(()=>X(r,t.state.error)),Y(e,n)};Z(C,e=>{t.state.kind===`closing`?e(w):t.state.kind===`error`&&e(T,1)});var E=H(C,2),te=e=>{var t=hs(),n=B(t),r=e=>{var t=fs(),n=H(B(t)),r=B(n,!0);P(n),P(t),U(()=>X(r,K(s).subtitle)),Y(e,t)};Z(n,e=>{K(s).subtitle&&e(r)});var i=H(n,2),a=e=>{var t=ps(),n=H(B(t)),r=B(n,!0);P(n),P(t),U(()=>X(r,K(s).date)),Y(e,t)};Z(i,e=>{K(s).date&&e(a)});var o=H(i,2),c=e=>{var t=ms(),n=H(B(t)),r=B(n,!0);P(n),P(t),U(()=>X(r,K(s).keywords)),Y(e,t)};Z(o,e=>{K(s).keywords&&e(c)}),P(t),Y(e,t)};Z(E,e=>{(K(s).subtitle||K(s).date||K(s).keywords)&&e(te)});var D=H(E,2),ne=e=>{Y(e,gs())},O=e=>{var t=Ss();Q(t,21,()=>K(s).steps,e=>e.id,(e,t)=>{var n=xs(),r=B(n),a=B(r),o=B(a),s=B(o,!0);P(o);var c=H(o,2),l=B(c);P(c);var u=H(c,2),d=B(u,!0);P(u),P(a);var f=H(a,2);Q(f,17,()=>_(K(t)),([e,t])=>e,(e,t)=>{var n=F(()=>m(K(t),2));let r=()=>K(n)[0],i=()=>K(n)[1];var a=_s(),o=B(a),s=B(o);P(o);var c=H(o);P(a),U(()=>{X(s,`${r()??``}:`),X(c,` ${i()??``}`)}),Y(e,a)});var v=H(f,2),y=e=>{var n=vs(),r=H(B(n));P(n),U(e=>X(r,` ${e??``}`),[()=>K(t).skills.join(`, `)]),Y(e,n)};Z(v,e=>{K(t).skills?.length&&e(y)});var b=H(v,2),x=e=>{var n=bs();Q(n,21,()=>K(t).children,e=>e.id,(e,t)=>{var n=ys(),r=B(n),a=B(r),o=B(a),s=B(o,!0);P(o);var c=H(o,2),l=B(c);P(c);var u=H(c,2),d=B(u,!0);P(u),P(a);var f=H(a,2);Q(f,17,()=>_(K(t)),([e,t])=>e,(e,t)=>{var n=F(()=>m(K(t),2));let r=()=>K(n)[0],i=()=>K(n)[1];var a=_s(),o=B(a),s=B(o);P(o);var c=H(o);P(a),U(()=>{X(s,`${r()??``}:`),X(c,` ${i()??``}`)}),Y(e,a)});var v=H(f,2),y=e=>{var n=vs(),r=H(B(n));P(n),U(e=>X(r,` ${e??``}`),[()=>K(t).skills.join(`, `)]),Y(e,n)};Z(v,e=>{K(t).skills?.length&&e(y)}),P(r),vi(r,(e,t)=>i[t.id]=e,e=>i?.[e.id],()=>[K(t)]),P(n),U((e,n)=>{$(r,`data-step-id`,K(t).id),r.open=e,X(s,K(t).title),X(l,`${K(t).state??``} · Priority ${K(t).priority??``}${K(t).reviewStatus?` · ${K(t).reviewStatus}`:``}`),X(d,n)},[()=>p(K(t).id),()=>g(K(t))]),vr(`toggle`,r,e=>h(K(t).id,e.currentTarget.open)),Y(e,n)}),P(n),Y(e,n)};Z(b,e=>{K(t).children.length&&e(x)}),P(r),vi(r,(e,t)=>i[t.id]=e,e=>i?.[e.id],()=>[K(t)]),P(n),U((e,n)=>{$(r,`data-step-id`,K(t).id),r.open=e,X(s,K(t).title),X(l,`${K(t).state??``} · Priority ${K(t).priority??``}${K(t).reviewStatus?` · ${K(t).reviewStatus}`:``}`),X(d,n)},[()=>p(K(t).id),()=>g(K(t))]),vr(`toggle`,r,e=>h(K(t).id,e.currentTarget.open)),Y(e,n)}),P(t),Y(e,t)};Z(D,e=>{K(s).steps.length===0?e(ne):e(O,-1)}),P(n),U(e=>{X(l,K(s).title),X(d,`${K(s).doneSteps??``} / ${K(s).totalSteps??``} complete`),li(b,K(s).doneSteps),$(b,`max`,e),X(x,`${K(s).doneSteps??``} of ${K(s).totalSteps??``} complete`),X(ee,`Current: ${K(c)?`${K(c).title} (${K(c).state})`:`No current step`}`)},[()=>v(K(s))]),Y(e,n)};Z(S,e=>{t.state.kind===`loading`?e(ee):t.state.kind===`unavailable`?e(C,1):t.state.kind===`error`&&!K(s)?e(w,2):K(s)&&e(T,3)}),U(()=>X(x,K(u))),Y(e,y),Be()}yr([`click`]);function Es(e){return e?`Codex is working…`:`Ready.`}function Ds(e,t=Math.random){let n=[500,1e3,2e3,5e3,1e4];return Math.round((n[Math.min(e,n.length-1)]??1e4)*(.8+t()*.4))}var Os=`settings`,ks=`drafts`,As=`cursors`,js=`selected-session`;function Ms(e=globalThis.indexedDB){if(!e)return Ns;let t=Ga(e);return{async readSelectedSession(){try{return await Ka(await t,Os,js)??null}catch{return null}},async saveSelectedSession(e){try{let n=await t;e?await qa(n,Os,js,e):await Ja(n,Os,js)}catch{}},async readDraft(e){try{return await Ka(await t,ks,e)??``}catch{return``}},async saveDraft(e,n){try{await qa(await t,ks,e,n)}catch{}},async readCursor(e){try{let n=await Ka(await t,As,e);return typeof n==`number`&&Number.isSafeInteger(n)&&n>=0?n:0}catch{return 0}},async saveCursor(e,n){try{await qa(await t,As,e,n)}catch{}}}}var Ns={readSelectedSession:async()=>null,saveSelectedSession:async()=>{},readDraft:async()=>``,saveDraft:async()=>{},readCursor:async()=>0,saveCursor:async()=>{}};function Ps(e,t=Date.now()){if(e===null)return`Unknown activity time`;let n=Math.max(0,t-e),r=Math.floor(n/(3600*1e3));if(r<1)return`Less than an hour ago`;if(r<24)return`${r} hour${r===1?``:`s`} ago`;let i=Math.floor(r/24);return`${i} day${i===1?``:`s`} ago`}function Fs(e){let t=e.updatedAt?Date.parse(e.updatedAt):NaN;return{threadId:e.threadId??null,workspacePath:e.workspacePath??`Workspace unavailable`,updatedAt:Number.isFinite(t)?t:null}}function Is(e,t){if(!t?.threadId||!t.workspacePath||!t.resumeCommand||e.some(e=>e.id===t.threadId))return e;let n=t.updatedAt?Date.parse(t.updatedAt)/1e3:NaN,r={id:t.threadId,cwd:t.workspacePath,recencyAt:Number.isFinite(n)?n:null,resumeCommand:t.resumeCommand};return[...e,r].sort((e,t)=>(t.recencyAt??-1/0)-(e.recencyAt??-1/0))}function Ls(e){let t=/^\/home\/[^/]+/.exec(e)?.[0];if(!t)return e;let n=e.slice(t.length);return n?`~${n}`:`~/`}var Rs=J(`<time> </time>`),zs=J(`<div> </div>`),Bs=J(`<span class="profile-badge svelte-hxb22h"> </span>`),Vs=J(`<li><div class="session-actions svelte-hxb22h"><button type="button">Close</button></div> <div class="session-details svelte-hxb22h"><button class="session-select svelte-hxb22h" type="button"><!> <div class="workspace-path svelte-hxb22h"> </div> <!> <!> <!></button></div></li>`),Hs=J(`<section aria-labelledby="open-sessions-title"><h3 id="open-sessions-title">Open sessions</h3> <ul class="session-list svelte-hxb22h" aria-label="Open sessions"></ul></section>`),Us=J(`<li class="managed-session svelte-hxb22h"><div class="session-actions svelte-hxb22h"><button type="button">Open</button> <button type="button">Forget</button></div> <div class="session-details svelte-hxb22h"><!> <div class="workspace-path svelte-hxb22h"> </div> <!> <!> <!></div></li>`),Ws=J(`<ul class="session-list svelte-hxb22h" aria-label="Saved sessions"></ul>`),Gs=J(`<p>No saved sessions yet.</p>`),Ks=J(`<option> </option>`),qs=J(`<p class="skills-profile-error svelte-hxb22h" role="alert"> </p>`),Js=J(`<li class="recent-session svelte-hxb22h"><div class="session-details svelte-hxb22h"><!> <div class="workspace-path svelte-hxb22h"> </div></div> <div class="session-actions svelte-hxb22h"><button type="button">Open</button> <button type="button">Copy</button></div></li>`),Ys=J(`<ul class="session-list recent-session-list svelte-hxb22h" aria-label="Recent sessions"></ul>`),Xs=J(`<p>No other recent Codex sessions found.</p>`),Zs=J(`<section aria-labelledby="sessions-title"><h2 id="sessions-title" class="visually-hidden">Sessions</h2> <!> <!> <form><section class="session-base svelte-hxb22h" aria-labelledby="session-base-title"><div class="session-base-heading svelte-hxb22h"><h3 id="session-base-title" class="svelte-hxb22h">Session base</h3> <p class="svelte-hxb22h">Select the folder or repository Codex should use as its working directory.</p></div> <div class="tree-panel svelte-hxb22h"><!></div></section> <section class="session-settings svelte-hxb22h" aria-label="New session settings"><div class="session-setting-labels svelte-hxb22h"><label for="skills-profile" class="svelte-hxb22h">Skills profile</label> <label for="sandbox" class="svelte-hxb22h">Sandbox</label> <label for="approval-policy" class="svelte-hxb22h">Approval policy</label></div> <div class="session-setting-controls svelte-hxb22h"><select id="skills-profile" class="svelte-hxb22h"><option>Default</option><!></select> <select id="sandbox" class="svelte-hxb22h"><option>workspace-write</option><option>read-only</option><option>danger-full-access</option></select> <select id="approval-policy" class="svelte-hxb22h"><option>untrusted</option><option>on-request</option><option>never</option></select></div> <!> <div class="session-secondary-actions svelte-hxb22h"><button id="manage-skill-profiles" type="button">Manage skill profiles</button> <div class="model-control svelte-hxb22h"><label for="model">Model</label> <select id="model"></select></div> <button class="new-session-button svelte-hxb22h" type="submit"> </button></div></section></form> <section aria-labelledby="recent-sessions-title"><h3 id="recent-sessions-title">Recent sessions</h3> <!></section></section>`);function Qs(e,t){ze(t,!0);let n=yi(t,`models`,19,()=>[]),r=yi(t,`selectedModel`,3,``),i=yi(t,`onmodelchange`,3,()=>{}),a=F(()=>t.sessions.filter(e=>e.state===`ready`||e.state===`turnActive`)),o=F(()=>t.sessions.filter(e=>e.state!==`ready`&&e.state!==`turnActive`)),s=F(()=>t.recentSessions.filter(e=>!K(a).some(t=>t.threadId===e.id))),c=F(()=>ho(t.workspaceTree,t.workspaceId));var l=Zs(),u=H(B(l),2),d=e=>{var n=Hs(),r=H(B(n),2);Q(r,21,()=>K(a),e=>e.id,(e,n)=>{let r=F(()=>Fs(K(n)));var i=Vs();let a;var o=B(i),s=B(o);P(o);var c=H(o,2),l=B(c),u=B(l),d=e=>{var t=Rs(),n=B(t,!0);P(t),U((e,r)=>{$(t,`datetime`,e),X(n,r)},[()=>new Date(K(r).updatedAt).toISOString(),()=>Ps(K(r).updatedAt)]),Y(e,t)},f=e=>{var t=zs(),n=B(t,!0);P(t),U(e=>X(n,e),[()=>Ps(null)]),Y(e,t)};Z(u,e=>{K(r).updatedAt===null?e(f,-1):e(d)});var p=H(u,2),m=B(p,!0);P(p);var h=H(p,2),g=e=>{var t=Bs(),r=B(t);P(t),U(()=>X(r,`Model: ${K(n).model??``}`)),Y(e,t)};Z(h,e=>{K(n).model&&e(g)});var _=H(h,2),v=e=>{var t=Bs(),r=B(t);P(t),U(()=>X(r,`Branch: ${K(n).branch??``}`)),Y(e,t)};Z(_,e=>{K(n).branch&&e(v)});var y=H(_,2),b=e=>{var t=Bs(),r=B(t);P(t),U(()=>X(r,`Skills profile: ${K(n).effectiveSkillSelection.selectedProfileName??``}`)),Y(e,t)};Z(y,e=>{K(n).effectiveSkillSelection?.selectedProfileName&&e(b)}),P(l),P(c),P(i),U(e=>{a=Zr(i,1,`managed-session open-session svelte-hxb22h`,null,a,{"current-session":K(n).id===t.selectedSessionId}),$(l,`aria-current`,K(n).id===t.selectedSessionId?`page`:void 0),X(m,e)},[()=>Ls(K(r).workspacePath)]),q(`click`,s,()=>t.onclose(K(n).id)),q(`click`,l,()=>t.onselectopen(K(n).id)),Y(e,i)}),P(r),P(n),Y(e,n)};Z(u,e=>{K(a).length&&e(d)});var f=H(u,2),p=e=>{var n=Ws();Q(n,21,()=>K(o),e=>e.id,(e,n)=>{let r=F(()=>Fs(K(n)));var i=Us(),a=B(i),o=B(a),s=H(o,2);P(a);var c=H(a,2),l=B(c),u=e=>{var t=Rs(),n=B(t,!0);P(t),U((e,r)=>{$(t,`datetime`,e),X(n,r)},[()=>new Date(K(r).updatedAt).toISOString(),()=>Ps(K(r).updatedAt)]),Y(e,t)},d=e=>{var t=zs(),n=B(t,!0);P(t),U(e=>X(n,e),[()=>Ps(null)]),Y(e,t)};Z(l,e=>{K(r).updatedAt===null?e(d,-1):e(u)});var f=H(l,2),p=B(f,!0);P(f);var m=H(f,2),h=e=>{var t=Bs(),r=B(t);P(t),U(()=>X(r,`Model: ${K(n).model??``}`)),Y(e,t)};Z(m,e=>{K(n).model&&e(h)});var g=H(m,2),_=e=>{var t=Bs(),r=B(t);P(t),U(()=>X(r,`Branch: ${K(n).branch??``}`)),Y(e,t)};Z(g,e=>{K(n).branch&&e(_)});var v=H(g,2),y=e=>{var t=Bs(),r=B(t);P(t),U(()=>X(r,`Skills profile: ${K(n).effectiveSkillSelection.selectedProfileName??``}`)),Y(e,t)};Z(v,e=>{K(n).effectiveSkillSelection?.selectedProfileName&&e(y)}),P(c),P(i),U(e=>X(p,e),[()=>Ls(K(r).workspacePath)]),q(`click`,o,()=>t.onopen(K(n).id)),q(`click`,s,()=>t.onforget(K(n).id)),Y(e,i)}),P(n),Y(e,n)},m=e=>{Y(e,Gs())};Z(f,e=>{K(o).length?e(p):K(a).length||e(m,1)});var h=H(f,2),g=B(h),_=H(B(g),2),v=B(_);{let e=F(()=>K(c)?.id??null);Co(v,{get roots(){return t.workspaceTree},get expandedIds(){return t.expandedIds},get selectedId(){return K(e)},get isSelectable(){return lo.sessionBase},label:`Session base`,get onexpandedchange(){return t.onexpandedchange},onselect:e=>t.onworkspacechange(e.id)})}P(_),P(g);var y=H(g,2),b=H(B(y),2),x=B(b),S=B(x);S.value=S.__value=``,Q(H(S),17,()=>t.skillProfiles,e=>e.name,(e,t)=>{var n=Ks(),r=B(n,!0);P(n);var i={};U(()=>{X(r,K(t).name),i!==(i=K(t).name)&&(n.value=(n.__value=K(t).name)??``)}),Y(e,n)}),P(x);var ee;ti(x);var C=H(x,2),w=B(C);w.value=w.__value=`workspace-write`;var T=H(w);T.value=T.__value=`read-only`;var E=H(T);E.value=E.__value=`danger-full-access`,P(C);var te;ti(C);var D=H(C,2),ne=B(D);ne.value=ne.__value=`untrusted`;var O=H(ne);O.value=O.__value=`on-request`;var re=H(O);re.value=re.__value=`never`,P(D);var ie;ti(D),P(b);var ae=H(b,2),oe=e=>{var n=qs(),r=B(n,!0);P(n),U(()=>X(r,t.skillProfileError)),Y(e,n)};Z(ae,e=>{t.skillProfileError&&e(oe)});var se=H(ae,2),ce=B(se),le=H(ce,2),ue=H(B(le),2);Q(ue,20,n,e=>e,(e,t)=>{var n=Ks(),r=B(n,!0);P(n);var i={};U(()=>{X(r,t),i!==(i=t)&&(n.value=(n.__value=t)??``)}),Y(e,n)}),P(ue);var de;ti(ue),P(le);var fe=H(le,2),pe=B(fe,!0);P(fe),P(se),P(y),P(h);var k=H(h,2),me=H(B(k),2),he=e=>{var n=Ys();Q(n,21,()=>K(s),e=>e.id,(e,n)=>{var r=Js(),i=B(r),a=B(i),o=e=>{var t=Rs(),r=B(t,!0);P(t),U((e,n)=>{$(t,`datetime`,e),X(r,n)},[()=>new Date(K(n).recencyAt*1e3).toISOString(),()=>Ps(K(n).recencyAt*1e3)]),Y(e,t)},s=e=>{var t=zs(),n=B(t,!0);P(t),U(e=>X(n,e),[()=>Ps(null)]),Y(e,t)};Z(a,e=>{K(n).recencyAt===null?e(s,-1):e(o)});var c=H(a,2),l=B(c,!0);P(c),P(i);var u=H(i,2),d=B(u),f=H(d,2);P(u),P(r),U(e=>X(l,e),[()=>Ls(K(n).cwd)]),q(`click`,d,()=>t.onopenrecent(K(n))),q(`click`,f,()=>t.oncopyresume(K(n).resumeCommand)),Y(e,r)}),P(n),Y(e,n)},ge=e=>{Y(e,Xs())};Z(me,e=>{K(s).length?e(he):e(ge,-1)}),P(k),P(l),U(()=>{ee!==(ee=t.selectedSkillProfile)&&(x.value=(x.__value=t.selectedSkillProfile)??``,ei(x,t.selectedSkillProfile)),te!==(te=t.sandbox)&&(C.value=(C.__value=t.sandbox)??``,ei(C,t.sandbox)),ie!==(ie=t.approvalPolicy)&&(D.value=(D.__value=t.approvalPolicy)??``,ei(D,t.approvalPolicy)),ue.disabled=n().length===0,de!==(de=r())&&(ue.value=(ue.__value=r())??``,ei(ue,r())),fe.disabled=!K(c)||t.startingSession,X(pe,t.startingSession?`Creating…`:`Create session`)}),vr(`submit`,h,e=>{e.preventDefault(),t.onstart()}),q(`change`,x,e=>t.onskillprofilechange(e.currentTarget.value)),q(`change`,C,e=>t.onsandboxchange(e.currentTarget.value)),q(`change`,D,e=>t.onapprovalpolicychange(e.currentTarget.value)),q(`click`,ce,e=>t.onmanageprofiles(e.currentTarget)),q(`change`,ue,e=>i()(e.currentTarget.value)),Y(e,l),Be()}yr([`click`,`change`]);function $s(e){let t={};return e.workspaceId||(t.workspaceId=`Choose a workspace.`),e.profile||(t.profile=`Choose a profile.`),e.profile&&e.profileState&&e.profileState!==`ok`&&(t.profile=`Sign in to this profile before starting Codex.`),t}function ec({chatEnabled:e,planEnabled:t}){return[`sessions`,`git`,...e?[`chat`]:[],...e&&t?[`plan`]:[]]}function tc(e,t,n={chatEnabled:!0,planEnabled:!1}){let r=ec(n);return r[(r.indexOf(e)+t+r.length)%r.length]}var nc=J(`<button>Plan</button>`),rc=J(`<nav class="bottom-navigation" aria-label="Primary"><button>Sess<wbr/>ions</button> <button>Git</button> <button>Chat</button> <!></nav>`);function ic(e,t){ze(t,!0);let n=yi(t,`planEnabled`,3,!1),r=yi(t,`focusTab`,3,null),i=z({});yn(()=>{r()&&i[r()]?.focus()}),yn(()=>{if(!n()&&t.activeTab===`plan`){let e=t.chatEnabled?`chat`:`sessions`;t.onselect(e),i[e]?.focus()}});function a(e){let r=e.key===`ArrowRight`?1:e.key===`ArrowLeft`?-1:null;if(r===null)return;e.preventDefault();let a=tc(t.activeTab,r,{chatEnabled:t.chatEnabled,planEnabled:n()});t.onselect(a),i[a]?.focus()}var o=rc(),s=B(o);vi(s,e=>i.sessions=e,()=>i?.sessions);var c=H(s,2);vi(c,e=>i.git=e,()=>i?.git);var l=H(c,2);vi(l,e=>i.chat=e,()=>i?.chat);var u=H(l,2),d=e=>{var n=nc();vi(n,e=>i.plan=e,()=>i?.plan),U(()=>$(n,`aria-pressed`,t.activeTab===`plan`)),q(`keydown`,n,a),q(`click`,n,()=>t.onselect(`plan`)),Y(e,n)};Z(u,e=>{n()&&e(d)}),P(o),U(()=>{$(s,`aria-pressed`,t.activeTab===`sessions`),$(c,`aria-pressed`,t.activeTab===`git`),$(l,`aria-pressed`,t.activeTab===`chat`),l.disabled=!t.chatEnabled}),q(`keydown`,s,a),q(`click`,s,()=>t.onselect(`sessions`)),q(`keydown`,c,a),q(`click`,c,()=>t.onselect(`git`)),q(`keydown`,l,a),q(`click`,l,()=>t.onselect(`chat`,!0)),Y(e,o),Be()}yr([`keydown`,`click`]);var ac=J(`<option> </option>`),oc=J(`<p id="skills-status" aria-live="polite">Loading skills…</p>`),sc=J(`<p id="skills-status">No skills were discovered for this workspace and Codex profile.</p>`),cc=J(`<p id="skills-status" class="notice svelte-dg6sjj" role="status"> </p>`),lc=J(`<p id="skills-status" class="error svelte-dg6sjj" role="alert"> </p>`),uc=J(`<p id="skills-status" class="error svelte-dg6sjj" role="alert" tabindex="-1"> </p>`),dc=J(`<p id="skills-status" role="status">Profile saved.</p>`),fc=J(`<p id="skills-status" role="status">Profile deleted.</p>`),pc=J(`<p class="svelte-dg6sjj"> </p>`),mc=J(`<li> </li>`),hc=J(`<dt class="svelte-dg6sjj">Tool dependencies</dt> <dd class="svelte-dg6sjj"><ul class="svelte-dg6sjj"></ul></dd>`,1),gc=J(`<li class="skill-card svelte-dg6sjj"><label class="skill-toggle svelte-dg6sjj"><input type="checkbox" class="svelte-dg6sjj"/> <span class="svelte-dg6sjj"> </span> <span class="state svelte-dg6sjj"> </span></label> <div class="skill-details svelte-dg6sjj"><!> <!> <dl class="svelte-dg6sjj"><dt class="svelte-dg6sjj">Path</dt><dd class="path svelte-dg6sjj"> </dd> <!></dl></div></li>`),_c=J(`<div class="skills-toolbar svelte-dg6sjj"><button type="button" class="refresh-skills svelte-dg6sjj" aria-label="Refresh skills"><span aria-hidden="true" class="svelte-dg6sjj">↻</span><span class="svelte-dg6sjj">Refresh</span></button> <p class="summary svelte-dg6sjj"> </p></div> <ul class="skill-list svelte-dg6sjj"></ul>`,1),vc=J(`<section class="skills-view svelte-dg6sjj" aria-labelledby="skills-title"><h2 id="skills-title"> </h2> <p class="intro svelte-dg6sjj">Create or edit a complete skills selection.</p> <form aria-describedby="skills-status" class="svelte-dg6sjj"><div class="field-grid svelte-dg6sjj"><label for="skills-existing-profile" class="svelte-dg6sjj">Skill profile</label> <select id="skills-existing-profile" class="svelte-dg6sjj"><option>New profile</option><option>Default</option><!></select> <label for="skills-save-as" class="svelte-dg6sjj">Save as</label> <input id="skills-save-as" name="save-as" autocomplete="off" class="svelte-dg6sjj"/></div> <p class="save-intent svelte-dg6sjj" aria-live="polite"> </p> <div class="profile-actions svelte-dg6sjj"><button type="button" class="svelte-dg6sjj">Delete profile</button> <button type="submit" class="svelte-dg6sjj"> </button></div></form> <dialog aria-labelledby="delete-profile-title" class="svelte-dg6sjj"><h3 id="delete-profile-title">Delete skill profile?</h3> <p> </p> <div class="dialog-actions svelte-dg6sjj"><button type="button" class="svelte-dg6sjj">Cancel</button> <button type="button" class="svelte-dg6sjj">Delete profile</button></div></dialog> <!> <!></section>`);function yc(e,t){ze(t,!0);let n=yi(t,`skillsState`,7),r=yi(t,`heading`,3,`Manage skill profiles`),i=L(0),a=L(null),o=L(null),s=L(null),c=L(null),l=L(`__new__`),u=F(()=>(K(i),n())),d=F(()=>K(u).profiles.filter(e=>!(`error`in e)));function f(){n(Object.assign(Object.create(Object.getPrototypeOf(n())),n())),R(i,K(i)+1)}async function p(){await t.onrefresh(),f()}function m(e){R(l,e.currentTarget.value,!0),K(l)===`__new__`||K(l)===`__default__`?K(u).selectDefaultProfile():K(u).selectProfile(K(l)),f()}async function h(e){e.preventDefault(),await K(u).save(),f(),K(u).status.kind===`saved`&&(R(l,K(u).selectedProfileName,!0),t.onprofileschange()),K(u).status.kind===`save-failed`&&(await cr(),K(a)?.focus())}function g(){K(c)?.showModal()}async function _(){K(c)?.close(),await K(u).deleteSelectedProfile(),f(),K(u).status.kind===`deleted`&&(R(l,`__new__`),t.onprofileschange()),await cr(),K(o)?.focus()}async function v(){K(c)?.close(),await cr(),K(s)?.focus()}function y(e){return e&&/^#[0-9a-f]{3,8}$/i.test(e)?e:void 0}function b(e){return e.replace(/^\/(?:home|Users)\/[^/]+(?=\/|$)/,`~`)}function x(e){let t=e.currentTarget.closest(`.skill-card`);requestAnimationFrame(()=>t?.scrollIntoView({block:`nearest`,inline:`nearest`}))}var S=vc(),ee=B(S),C=B(ee,!0);P(ee);var w=H(ee,4),T=B(w),E=H(B(T),2),te=B(E);te.value=te.__value=`__new__`;var D=H(te);D.value=D.__value=`__default__`,Q(H(D),17,()=>K(d),e=>e.name,(e,t)=>{var n=ac(),r=B(n,!0);P(n);var i={};U(()=>{X(r,K(t).name),i!==(i=K(t).name)&&(n.value=(n.__value=K(t).name)??``)}),Y(e,n)}),P(E),vi(E,e=>R(o,e),()=>K(o));var ne=H(E,4);ci(ne),P(T);var O=H(T,2),re=B(O,!0);P(O);var ie=H(O,2),ae=B(ie);vi(ae,e=>R(s,e),()=>K(s));var oe=H(ae,2),se=B(oe,!0);P(oe),P(ie),P(w);var ce=H(w,2),le=H(B(ce),2),ue=B(le);P(le);var de=H(le,2),fe=B(de),pe=H(fe,2);P(de),P(ce),vi(ce,e=>R(c,e),()=>K(c));var k=H(ce,2),me=e=>{Y(e,oc())},he=e=>{Y(e,sc())},ge=e=>{var t=cc(),n=B(t);P(t),U(()=>X(n,`Discovery warning: ${K(u).status.message??``}`)),Y(e,t)},_e=e=>{var t=lc(),n=B(t,!0);P(t),U(()=>X(n,K(u).status.message)),Y(e,t)},ve=e=>{var t=uc(),n=B(t,!0);P(t),vi(t,e=>R(a,e),()=>K(a)),U(()=>X(n,K(u).status.message)),Y(e,t)},ye=e=>{Y(e,dc())},be=e=>{Y(e,fc())},xe=e=>{var t=lc(),n=B(t,!0);P(t),U(()=>X(n,K(u).status.message)),Y(e,t)};Z(k,e=>{K(u).status.kind===`loading`?e(me):K(u).status.kind===`empty`?e(he,1):K(u).status.kind===`warning`?e(ge,2):K(u).status.kind===`invalid-profile`||K(u).status.kind===`error`?e(_e,3):K(u).status.kind===`save-failed`?e(ve,4):K(u).status.kind===`saved`?e(ye,5):K(u).status.kind===`deleted`?e(be,6):K(u).status.kind===`delete-failed`&&e(xe,7)});var Se=H(k,2),Ce=e=>{var t=_c(),n=V(t),r=B(n),i=H(r,2),a=B(i);P(i),P(n);var o=H(n,2);Q(o,21,()=>K(u).skills,e=>e.path,(e,t)=>{var n=gc();let r;var i=B(n),a=B(i);ci(a);var o=H(a,2),s=B(o,!0);P(o);var c=H(o,2),l=B(c,!0);P(c),P(i);var d=H(i,2),p=B(d),m=e=>{var n=pc(),r=B(n,!0);P(n),U(()=>X(r,K(t).description)),Y(e,n)};Z(p,e=>{K(t).description&&e(m)});var h=H(p,2),g=e=>{var n=pc(),r=B(n,!0);P(n),U(()=>X(r,K(t).shortDescription)),Y(e,n)};Z(h,e=>{K(t).shortDescription&&e(g)});var _=H(h,2),v=H(B(_)),S=B(v,!0);P(v);var ee=H(v,2),C=e=>{var n=hc(),r=H(V(n),2),i=B(r);Q(i,21,()=>K(t).dependencies.tools,e=>`${e.type}:${e.value}`,(e,t)=>{var n=mc(),r=B(n);P(n),U(()=>X(r,`${K(t).type??``}: ${K(t).value??``}${K(t).description?` — ${K(t).description}`:``}`)),Y(e,n)}),P(i),P(r),Y(e,n)};Z(ee,e=>{K(t).dependencies?.tools?.length&&e(C)}),P(_),P(d),P(n),U((e,o)=>{r=$r(n,``,r,e),$(i,`for`,`skill-${K(t).path}`),$(a,`id`,`skill-${K(t).path}`),ui(a,K(t).enabled),X(s,K(t).displayName??K(t).name),X(l,K(t).enabled?`Enabled`:`Disabled`),X(S,o)},[()=>({"--brand-color":y(K(t).brandColor)}),()=>b(K(t).path)]),vr(`focus`,a,x),q(`change`,a,e=>{K(u).toggle(K(t).path,e.currentTarget.checked),f()}),Y(e,n)}),P(o),U(()=>X(a,`${K(u).enabledCount??``} of ${K(u).skills.length??``} skills enabled.`)),q(`click`,r,()=>void p()),Y(e,t)};Z(Se,e=>{K(u).skills.length>0&&e(Ce)}),P(S),U(()=>{X(C,r()),li(ne,K(u).saveAsName),X(re,K(u).saveIntent===`replace`?`Saved the selected profile.`:`Creating a new saved profile.`),ae.disabled=!K(u).selectedProfileName||K(u).status.kind===`deleting`,oe.disabled=K(u).status.kind===`saving`,X(se,K(u).status.kind===`saving`?`Saving profile…`:`Save profile`),X(ue,`Delete ${K(u).selectedProfileName??``}? Existing sessions keep their saved skill set.`)}),vr(`submit`,w,h),q(`change`,E,m),ni(E,()=>K(l),e=>R(l,e)),q(`input`,ne,e=>{K(u).saveAsName=e.currentTarget.value,f()}),q(`click`,ae,g),q(`click`,fe,()=>void v()),q(`click`,pe,()=>void _()),Y(e,S),Be()}yr([`change`,`input`,`click`]);var bc=class{client;workspaceId=``;codexProfile=``;selectedProfileName=``;saveAsName=``;source=`native`;skills=[];profiles=[];status={kind:`idle`};baseline=new Map;saving=!1;deleting=!1;constructor(e){this.client=e}get enabledCount(){return this.skills.filter(e=>e.enabled).length}get dirty(){return this.skills.some(e=>this.baseline.get(e.path)!==e.enabled)}get saveIntent(){return this.profiles.some(e=>!(`error`in e)&&e.name===this.saveAsName.trim())?`replace`:`create`}async load(e,t){this.workspaceId=e,this.codexProfile=t,this.status={kind:`loading`};try{let[n,r]=await Promise.all([this.client.listAvailableSkills(e,t),this.client.listSkillProfiles()]);this.applyAvailable(n),this.profiles=r.profiles;let i=r.profiles.find(e=>`error`in e);i&&`error`in i?this.status={kind:`invalid-profile`,message:i.error.message}:n.errors.length?this.status={kind:`warning`,message:n.errors.map(e=>e.message).join(` `)}:this.status=this.skills.length?{kind:`ready`}:{kind:`empty`}}catch(e){this.status={kind:`error`,message:xc(e)}}}async refresh(){this.status={kind:`loading`};try{let e=await this.client.listAvailableSkills(this.workspaceId,this.codexProfile,!0);this.applyAvailable(e),this.status=e.errors.length?{kind:`warning`,message:e.errors.map(e=>e.message).join(` `)}:this.skills.length?{kind:`ready`}:{kind:`empty`}}catch(e){this.status={kind:`error`,message:xc(e)}}}selectProfile(e){let t=this.profiles.find(t=>!(`error`in t)&&t.name===e);if(!t||`error`in t){this.status={kind:`invalid-profile`,message:`Select a valid saved profile.`};return}this.selectedProfileName=t.name,this.saveAsName=t.name;let n=new Map(t.skills.map(e=>[e.path,e.enabled]));this.skills=this.skills.map(e=>({...e,enabled:n.get(e.path)??!1})),this.captureBaseline(),this.status=this.skills.length?{kind:`ready`}:{kind:`empty`}}selectDefaultProfile(){this.selectedProfileName=``,this.saveAsName=``,this.skills=this.skills.map(e=>({...e,enabled:e.effectiveEnabled})),this.captureBaseline(),this.status=this.skills.length?{kind:`ready`}:{kind:`empty`}}toggle(e,t){this.skills=this.skills.map(n=>n.path===e?{...n,enabled:t}:n)}reset(){this.skills=this.skills.map(e=>({...e,enabled:this.baseline.get(e.path)??!1}))}async save(){let e=this.saveAsName.trim();if(this.saving||this.deleting)return;if(!e){this.status={kind:`save-failed`,message:`Enter a profile name before saving.`};return}this.saving=!0,this.status={kind:`saving`};let t=this.savePayload(e);try{let n=await this.client.replaceSkillProfile(e,t);this.profiles=[...this.profiles.filter(e=>`error`in e||e.name!==n.name),n].sort((e,t)=>e.name.localeCompare(t.name)),this.selectedProfileName=n.name,this.saveAsName=n.name,this.captureBaseline(),this.status={kind:`saved`}}catch(e){this.status={kind:`save-failed`,message:xc(e)}}finally{this.saving=!1}}async deleteSelectedProfile(){let e=this.selectedProfileName;if(!(this.saving||this.deleting)){if(!e){this.status={kind:`delete-failed`,message:`Select a saved profile before deleting.`};return}this.deleting=!0,this.status={kind:`deleting`};try{await this.client.deleteSkillProfile(e),this.profiles=this.profiles.filter(t=>`error`in t||t.name!==e),this.selectedProfileName=``,this.saveAsName=``,this.captureBaseline(),this.status={kind:`deleted`}}catch(e){this.status={kind:`delete-failed`,message:xc(e)}}finally{this.deleting=!1}}}savePayload(e=this.saveAsName.trim()){return{version:1,name:e,skills:this.skills.map(({name:e,path:t,enabled:n})=>({name:e,path:t,enabled:n})).sort((e,t)=>e.path.localeCompare(t.path))}}applyAvailable(e){let t=new Map(this.skills.filter(e=>this.baseline.get(e.path)!==e.enabled).map(e=>[e.path,e.enabled]));this.source=e.source,this.skills=e.skills.map(e=>({...e,enabled:t.get(e.path)??e.effectiveEnabled})),this.baseline=new Map(e.skills.map(e=>[e.path,this.baseline.get(e.path)??e.effectiveEnabled]))}captureBaseline(){this.baseline=new Map(this.skills.map(e=>[e.path,e.enabled]))}};function xc(e){return e instanceof Error?e.message:`Unknown relay error.`}var Sc=J(`<main class="evidence-mode svelte-y74n0s"><!></main>`),Cc=J(`<!> <!> <!>`,1),wc=J(`<p>Start a session from the Sessions tab to chat with Codex.</p>`),Tc=J(`<section class="chat-view svelte-y74n0s" aria-labelledby="chat-title"><h2 id="chat-title" class="visually-hidden">Chat</h2> <!></section>`),Ec=J(`<p>Loading skill profiles…</p>`),Dc=J(`<section class="session-profile-manager" aria-labelledby="session-profile-manager-title"><div class="session-profile-manager-header svelte-y74n0s"><h2 id="session-profile-manager-title" tabindex="-1" class="svelte-y74n0s">Manage skill profiles</h2> <button type="button" class="close-profile-manager svelte-y74n0s" aria-label="Close skill profile editor">×</button></div> <!></section>`),Oc=J(`<main class="swipe-surface svelte-y74n0s"><!> <!> <!></main>`),kc=J(`<!> <!>`,1);function Ac(e,t){ze(t,!0);let n=L(`sessions`),r=L(`Loading relay…`),i=L(`system`),a=L(z([])),o=`gpt-5.6-terra`,s=L([o]),c=L(o),l=L([]),u=L(null),d=L(`list`),f=L([]),p=L(``),m=L(``),h=L(null),g=L(``),_=L(z(new Set)),v=L(null),y=L(z([])),b=F(()=>K(y).some(e=>e.id===K(v)&&(e.state===`ready`||e.state===`turnActive`))),x=L(z([])),S=L(`workspace-write`),ee=L(`on-request`),C=L(null),w=L(!1),T=L(``),E=L(null),te=L(!1),D=L(z([])),ne=L(z([])),O=L(0),re=L(z({kind:`unavailable`,sessionId:null})),ie=L(null),ae=F(()=>(K(re).kind===`ready`||K(re).kind===`closing`||K(re).kind===`error`)&&!!K(re).plan),oe=null,se=null,ce=null,le=null,ue=!1,de=0,fe=0,pe=L(null),k=L(null),me=L(z(new Set)),he=L(!1),ge=L(!1),_e=L(!1),ve=L(!1),ye=L(null),be=L(null),xe=L(null),Se=L(null),Ce=0,A=L(z([])),we=z({}),j=Jo(),Te=as({getPlan:j.getPlan,closePlan:j.closePlan},e=>R(re,e,!0)),Ee=Qa(),De=Ms(),M=no(),Oe=new URLSearchParams(location.search).get(`tree-evidence`),N=new URLSearchParams(location.search).get(`toast-evidence`);bi(async()=>{let e=localStorage.getItem(`gestalt-mobile.theme`);if((e===`light`||e===`dark`||e===`system`)&&ke(e),!(Oe===`sessions`||Oe===`git`||N===`error`||N===`stacked`)){le=setInterval(Ge,2e3),document.addEventListener(`visibilitychange`,Ge),window.addEventListener(`focus`,Ge);try{let e=await Ba();R(g,go(K(g)||null,K(a),e.workspaces,lo.sessionBase)??``,!0),R(a,e.workspaces,!0),R(l,e.profiles),R(s,[...new Set([o,...e.models??[]])]),await tt(),R(_,uo(K(a)),!0),R(me,uo(K(a)),!0);let t=await De.readSelectedSession();R(v,e.sessions.some(e=>e.id===t)?t:e.sessions[0]?.id??null,!0),K(v)&&R(O,await De.readCursor(K(v)),!0),K(v)&&R(T,await De.readDraft(K(v)),!0),K(v)&&R(D,await Ee.read(K(v)),!0),R(y,e.sessions,!0),R(A,K(y).find(e=>e.id===K(v))?.pendingInteractions??[],!0),Me(),R(E,K(y).find(e=>e.id===K(v))?.activeTurnId??null,!0),R(r,K(v)?Es(K(E)):`Choose a workspace and start a session.`,!0),Te.select(K(v)),K(v)&&(await We(K(v)),xt(K(v)))}catch(e){R(r,bt(e,`RELAY_UNAVAILABLE`),!0)}}});function ke(e){R(i,e,!0),e===`system`?document.documentElement.removeAttribute(`data-theme`):document.documentElement.dataset.theme=e,localStorage.setItem(`gestalt-mobile.theme`,e)}xi(()=>{se&&clearTimeout(se),ce&&clearTimeout(ce),le&&clearInterval(le),document.removeEventListener(`visibilitychange`,Ge),window.removeEventListener(`focus`,Ge),oe?.close(),Te.dispose()});async function Ae(){if(!K(g)||K(w))return;let e=$s({workspaceId:K(g),profile:`default`,profileState:`ok`});if(e.profile){R(r,e.profile,!0);return}R(C,K(C)??Qo(),!0),R(w,!0),R(r,`Starting session…`);try{let e=await j.startSession(K(g),{sandbox:K(S),approvalPolicy:K(ee),model:K(c),skillProfile:K(p)||void 0},K(C));R(C,null),R(v,e.id,!0),Te.select(e.id),R(E,null),De.saveSelectedSession(e.id),await je(),R(D,[],!0),I(e.id),R(ne,[],!0),R(O,0),R(T,await De.readDraft(e.id),!0),xt(e.id),R(n,`chat`),it(`chat`),R(r,`Session started.`)}catch(e){R(r,bt(e,`SESSION_START_FAILED`),!0)}finally{R(w,!1)}}async function je(){R(y,await j.listSessions(),!0)}async function Me(){try{R(x,await j.listRecentSessions(),!0)}catch{R(x,[],!0)}}async function Ne(){try{await Promise.all([je(),Me()])}catch(e){R(r,bt(e,`SESSION_REFRESH_FAILED`),!0)}}async function Pe(e){R(r,`Opening session…`);try{let t=K(y).find(t=>t.id===e);if(t&&t.state!==`ready`&&t.state!==`turnActive`){let t=await j.restoreSession(e);R(y,K(y).map(n=>n.id===e?t:n),!0)}R(v,e,!0),Te.select(e),De.saveSelectedSession(e),R(D,await Ee.read(e),!0),R(ne,[],!0),R(O,0),R(T,await De.readDraft(e),!0),R(E,K(y).find(t=>t.id===e)?.activeTurnId??null,!0),R(A,K(y).find(t=>t.id===e)?.pendingInteractions??[],!0),R(n,`chat`),it(`chat`),await We(e),xt(e)}catch(e){R(r,`Could not open session: ${yt(e)}`)}}async function Fe(e){R(r,`Opening recent session…`);try{let t=await j.openRecentSession(e.id,e.cwd);await Ne(),await Pe(t.id)}catch(e){R(r,`Could not open recent session: ${yt(e)}`)}}async function Ie(e){R(r,`Closing session…`);try{await j.releaseSession(e),K(v)===e&&(R(v,null),R(n,`sessions`),R(E,null),R(A,[],!0),De.saveSelectedSession(null),se&&clearTimeout(se),se=null,oe?.close(),oe=null),await Ne(),R(r,`Session closed.`)}catch(e){R(r,`Could not close session: ${yt(e)}`)}}async function Le(e){let t=K(y).find(t=>t.id===e);try{await j.forgetSession(e),K(v)===e&&(oe?.close(),R(v,null),R(E,null),De.saveSelectedSession(null)),await Ne(),R(x,Is(K(x),t),!0)}catch(e){R(r,`Could not forget session: ${yt(e)}`)}}async function Re(e){R(r,await Yo(e)?`Resume command copied.`:`Could not copy the resume command.`,!0)}async function Ve(e){if(!(!K(v)||K(E)))try{let t=await j.selectModel(K(v),e);R(y,K(y).map(e=>e.id===t.id?{...e,...t}:e),!0),R(T,``),R(r,`Model changed to ${e}; it applies to the next turn.`)}catch(e){R(r,`Could not change model: ${yt(e)}`)}}async function He(){if(!K(v)||!K(T).trim()||K(E)||K(te))return;let e=K(T).trim();R(te,!0);try{let t=await j.startTurn(K(v),e);R(E,t.activeTurnId??null,!0),R(D,Wo(K(D),`user-${t.activeTurnId??Date.now().toString()}`,e,Date.now()),!0),I(K(v)),R(T,``),De.saveDraft(K(v),``),R(r,Es(K(E)),!0)}catch(e){R(r,bt(e,`MESSAGE_SEND_FAILED`),!0)}finally{R(te,!1)}}async function Ue(){if(!(!K(v)||!K(E)))try{await j.interruptTurn(K(v),K(E)),R(E,null),R(r,`Codex turn interrupted.`)}catch(e){R(r,`Could not interrupt Codex: ${yt(e)}`)}}async function We(e,t=0){let n=await j.getHistory(e);if(K(v)!==e)return;let i=n.items.filter(e=>(e.kind===`user`||e.kind===`agent`)&&e.text).map(e=>({id:e.id,role:e.kind===`user`?`user`:`assistant`,text:e.text,...typeof e.occurredAt==`number`?{occurredAt:e.occurredAt}:{},...e.phase===`commentary`||e.phase===`final_answer`?{phase:e.phase}:{},complete:!0})),a=K(D).filter(e=>!e.complete);R(D,[...i,...a],!0),I(e);let o=n.items.flatMap(e=>{let t=Va(e);return t?[t]:[]});R(ne,[...o,...K(ne).filter(e=>!o.some(t=>t.id===e.id))],!0),`activeTurnId`in n&&(R(E,n.activeTurnId??null,!0),R(y,K(y).map(t=>t.id===e?{...t,activeTurnId:K(E)}:t),!0)),R(O,Math.max(K(O),n.currentSequence??t),!0),De.saveCursor(e,K(O)),t&&Te.refresh(e),R(r,Es(K(E)),!0)}function Ge(){K(n)!==`chat`||!K(v)||document.visibilityState!==`visible`||ue||(ue=!0,We(K(v)).catch(()=>void 0).finally(()=>{ue=!1}))}function Ke(e,t=!1){if(e===`chat`&&!K(b)||e===`plan`&&!K(ae))return;let r=K(n)!==e;R(n,e,!0),it(e),e===`chat`&&(Ge(),r&&t&&st()),e===`git`&&K(k)&&ct(K(k)),e===`sessions`&&(K(d)===`profile-manager`&&rt(!1),Ne())}function qe(e){R(ie,e,!0),queueMicrotask(()=>R(ie,null))}let Je=null;function Ye(e){return e instanceof Element&&e.closest(`button, input, textarea, select, a, summary, [contenteditable]`)!==null}function Xe(e){e.pointerType!==`touch`||Ye(e.target)||(Je={pointerId:e.pointerId,x:e.clientX,y:e.clientY})}function Ze(e){if(!Je||e.pointerId!==Je.pointerId)return;let t=Je;Je=null;let r=e.clientX-t.x,i=e.clientY-t.y;Math.abs(r)<48||Math.abs(r)<=Math.abs(i)||Ke(tc(K(n),r<0?1:-1,{chatEnabled:K(b),planEnabled:K(ae)}))}function Qe(e){Je?.pointerId===e.pointerId&&(Je=null)}async function $e(){await Te.close()===`chat`&&(Ke(`chat`),qe(`chat`))}async function et(e,t){let n=new bc(j);await n.load(e,t),R(u,n,!0)}async function tt(){try{let e=await j.listSkillProfiles();R(f,e.profiles.filter(e=>!(`error`in e)));let t=e.profiles.find(e=>`error`in e);R(m,t&&`error`in t?t.error.message:``,!0),K(f).some(e=>e.name===K(p))||R(p,``)}catch(e){R(f,[]),R(m,e instanceof Error?e.message:`Unable to load saved skill profiles.`,!0)}}async function nt(e){let t=K(g)||K(a)[0]?.id||``,n=K(l).find(e=>e.state===`ok`)?.name??``;if(!t||!n){R(r,`Choose a workspace and available Codex profile before managing skill profiles.`);return}await et(t,n),R(d,`profile-manager`),await cr(),K(h)?.focus()}async function rt(e=!0){R(d,`list`),await cr(),e&&document.getElementById(`manage-skill-profiles`)?.focus()}function it(e){requestAnimationFrame(()=>{K(n)===e&&window.scrollTo({top:e===`chat`?document.documentElement.scrollHeight:0})})}let at=!1;function ot(){at||(at=!0,requestAnimationFrame(()=>{at=!1,K(n)===`chat`&&window.scrollTo({top:document.documentElement.scrollHeight})}))}function st(){window.matchMedia(`(min-width: 48rem)`).matches&&cr().then(()=>{K(n)===`chat`&&document.getElementById(`message`)?.focus()})}async function ct(e=K(k)){let t=e?ho(K(a),e):void 0;if(!e||!t?.isGitRepository){Ce+=1,R(pe,null);return}let n=++Ce;try{let t=await j.getGitSummary(e);n===Ce&&K(k)===e&&R(pe,t,!0)}catch(t){if(n!==Ce||K(k)!==e)return;R(pe,null),R(ye,bt(t,`GIT_SUMMARY_FAILED`),!0)}}function lt(e){R(k,e.id,!0),R(ye,null),R(pe,null),R(he,!1),e.isGitRepository?ct(e.id):(Ce+=1,R(pe,null))}async function ut(){let e=K(k);if(!(!e||!ho(K(a),e)?.isGitRepository)){R(xe,K(xe)??Qo(),!0),R(ge,!0),R(ye,null);try{await j.pullGit(e,K(xe)),await ct(e),R(xe,null)}catch(e){R(ye,bt(e,`GIT_PULL_FAILED`),!0)}finally{R(ge,!1)}}}async function dt(e){if(K(ve))return;let t=K(k)?ho(K(a),K(k)):void 0;if(!t||t.isGitRepository){R(be,null),M.enqueue({kind:`error`,code:`INVALID_CLONE_DESTINATION`,message:`Select a non-repository folder before cloning.`});return}let n=t.id;R(ve,!0),R(ye,null),R(be,null);try{await j.cloneGitRepository(n,e);let t=await Ba(),r=Vo(K(a),t.workspaces,n,e,K(me));R(g,go(K(g)||null,K(a),t.workspaces,lo.sessionBase)??``,!0),R(a,t.workspaces,!0),R(k,r.selectedId,!0),R(me,r.expandedIds,!0),K(k)&&ho(K(a),K(k))?.isGitRepository?await ct(K(k)):R(pe,null),R(be,`Repository cloned into the selected workspace.`),M.enqueue({kind:`success`,message:`Repository cloned.`})}catch(e){bt(e,`GIT_CLONE_FAILED`)}finally{R(ve,!1)}}async function ft(e){let t=K(k);if(!(!t||e===K(pe)?.branch)){R(_e,!0),R(ye,null);try{await j.checkoutGitBranch(t,e),await ct(t)}catch(e){R(ye,bt(e,`GIT_CHECKOUT_FAILED`),!0)}finally{R(_e,!1)}}}async function pt(){let e=K(k);if(e){R(Se,K(Se)??Qo(),!0),R(ye,null);try{await j.pushGit(e,K(Se)),R(he,!1),await ct(e),R(Se,null)}catch(e){R(ye,bt(e,`GIT_PUSH_FAILED`),!0)}}}async function mt(e,t){K(v)&&(await j.respondInteraction(K(v),e,{decision:t}),R(A,K(A).filter(t=>t.requestId!==e),!0))}async function ht(e){if(!K(v))return;let t=Fi(Pi(e.payload).map(e=>({id:e.id,answer:we[e.id]??``})));await j.respondInteraction(K(v),e.requestId,t),R(A,K(A).filter(t=>t.requestId!==e.requestId),!0)}async function gt(e){if(!K(v))return;let t=qo(e.payload);if(!t){R(r,`Codex sent an invalid permission request.`);return}await j.respondInteraction(K(v),e.requestId,t),R(A,K(A).filter(t=>t.requestId!==e.requestId),!0)}function _t(e,t){we[e]=t}function vt(e){R(T,e,!0),K(v)&&De.saveDraft(K(v),e)}function I(e){Ee.write(e,K(D))}function yt(e){return e instanceof Error?e.message:`Unknown relay error.`}function bt(e,t){let n=eo(e,t);return M.enqueue({kind:`error`,...n}),n.message}function xt(e){se&&clearTimeout(se),ce&&clearTimeout(ce),oe?.close();let t=++fe,n=location.protocol===`https:`?`wss:`:`ws:`;oe=new WebSocket(`${n}//${location.host}/api/sessions/${encodeURIComponent(e)}/events?after=${K(O)}`),oe.onopen=()=>{t!==fe||K(v)!==e||(R(r,Es(K(E)),!0),Ge(),ce=setTimeout(()=>{de=0},3e4))},oe.onmessage=t=>{let n=JSON.parse(String(t.data));if(n.type===`relay.resyncRequired`){We(e,typeof n.currentSequence==`number`?n.currentSequence:0);return}if(n.type===`relay.event`&&n.event?.type===`interaction.requested`){let e=n.event.payload;K(A).some(t=>t.requestId===e.requestId)||R(A,[...K(A),e],!0)}if(n.type===`relay.event`&&n.event?.type===`turnCompleted`&&(R(E,null),R(r,Es(K(E)),!0),R(D,Ko(K(D),`assistant-${e}`),!0),I(e),We(e).catch(()=>void 0)),n.type===`relay.event`&&n.event?.type===`session.updated`){let t=n.event.payload;if(typeof t==`object`&&t&&t.id===e){let n=t,i=K(E);R(E,typeof n.activeTurnId==`string`?n.activeTurnId:null,!0),i&&!K(E)&&R(r,Es(K(E)),!0),R(y,K(y).map(t=>t.id===e?{...t,...n}:t),!0)}}if(n.type===`relay.event`&&n.event?.type===`interaction.resolved`){let{requestId:e}=n.event.payload;R(A,K(A).filter(t=>t.requestId!==e),!0)}if(n.type===`relay.event`&&n.event?.type===`activity.updated`){let e=n.event.payload;typeof e.id==`string`&&typeof e.label==`string`&&typeof e.detail==`string`&&R(ne,[...K(ne).filter(t=>t.id!==e.id),e],!0)}R(O,$o(K(O),n,t=>{R(D,Go(K(D),`assistant-${e}`,t,Date.now()),!0),I(e)},()=>{We(e)},t=>Te.applyEvent(e,t)),!0),De.saveCursor(e,K(O))},oe.onclose=()=>{t!==fe||K(v)!==e||(ce&&clearTimeout(ce),R(r,`Connection interrupted. Reconnecting…`),se=setTimeout(()=>xt(e),Ds(de++)))}}var St=kc();Hr(`y74n0s`,e=>{Sn(()=>{Xt.title=`Gestalt Mobile`})});var Ct=V(St),wt=e=>{co(e,{get variant(){return N}})},Tt=e=>{var t=Sc();To(B(t),{get context(){return Oe}}),P(t),Y(e,t)},Et=e=>{var t=Oc(),l=B(t);{let e=F(()=>K(n)===`chat`?Ls(K(y).find(e=>e.id===K(v))?.workspacePath??``):null),t=F(()=>K(n)===`chat`?K(y).find(e=>e.id===K(v))?.model??o:null);Ti(l,{get theme(){return K(i)},get sessionPath(){return K(e)},get sessionModel(){return K(t)},onthemechange:ke})}var C=H(l,2),O=e=>{var t=Tc(),n=H(B(t),2),i=e=>{var t=Cc(),n=V(t);Ia(n,{get messages(){return K(D)},get activities(){return K(ne)}});var i=H(n,2);qi(i,{get interactions(){return K(A)},get answers(){return we},onanswer:_t,onuserinput:e=>void ht(e),onpermission:e=>void gt(e),ondecision:(e,t)=>void mt(e,t)}),la(H(i,2),{get status(){return K(r)},get message(){return K(T)},get activeTurnId(){return K(E)},get starting(){return K(te)},get models(){return K(s)},onchange:vt,onscrollbottom:ot,onmodelselect:e=>void Ve(e),onsend:()=>void He(),oninterrupt:()=>void Ue()}),Y(e,t)},a=e=>{Y(e,wc())};Z(n,e=>{K(v)?e(i):e(a,-1)}),P(t),Y(e,t)},oe=e=>{Ts(e,{get state(){return K(re)},onclose:()=>void $e()})},se=e=>{{let t=F(()=>K(k)?ho(K(a),K(k))??null:null);Bo(e,{get workspaceTree(){return K(a)},get selectedWorkspace(){return K(t)},get expandedIds(){return K(me)},get summary(){return K(pe)},get refreshing(){return K(ge)},get checkingOut(){return K(_e)},get cloning(){return K(ve)},get error(){return K(ye)},get cloneStatus(){return K(be)},get confirmingPush(){return K(he)},onpull:()=>void ut(),oncheckout:e=>void ft(e),onopenpushconfirmation:()=>R(he,!0),onpush:()=>void pt(),oncancelpush:()=>R(he,!1),onselect:lt,onexpandedchange:e=>R(me,e,!0),onclone:e=>void dt(e)})}},ce=e=>{var t=Dr(),n=V(t),r=e=>{var t=Dc(),n=B(t),r=B(n);vi(r,e=>R(h,e),()=>K(h));var i=H(r,2);P(n);var a=H(n,2),o=e=>{yc(e,{get skillsState(){return K(u)},onrefresh:()=>K(u)?.refresh()??Promise.resolve(),onprofileschange:()=>void tt(),heading:`Skill profile editor`})},s=e=>{Y(e,Ec())};Z(a,e=>{K(u)?e(o):e(s,-1)}),P(t),q(`click`,i,()=>void rt()),Y(e,t)},i=e=>{Qs(e,{get sessions(){return K(y)},get recentSessions(){return K(x)},get selectedSessionId(){return K(v)},get workspaceTree(){return K(a)},get workspaceId(){return K(g)},get expandedIds(){return K(_)},get sandbox(){return K(S)},get approvalPolicy(){return K(ee)},get models(){return K(s)},get selectedModel(){return K(c)},get skillProfiles(){return K(f)},get selectedSkillProfile(){return K(p)},get skillProfileError(){return K(m)},get startingSession(){return K(w)},onworkspacechange:e=>R(g,e,!0),onexpandedchange:e=>R(_,e,!0),onsandboxchange:e=>R(S,e,!0),onapprovalpolicychange:e=>R(ee,e,!0),onmodelchange:e=>R(c,e,!0),onskillprofilechange:e=>R(p,e,!0),onmanageprofiles:e=>void nt(e),onopen:Pe,onselectopen:Pe,onclose:e=>void Ie(e),onopenrecent:e=>void Fe(e),onforget:e=>void Le(e),oncopyresume:e=>void Re(e),onstart:()=>void Ae()})};Z(n,e=>{K(d)===`profile-manager`?e(r):e(i,-1)}),Y(e,t)};Z(C,e=>{K(n)===`chat`?e(O):K(n)===`plan`?e(oe,1):K(n)===`git`?e(se,2):e(ce,-1)}),ic(H(C,2),{get activeTab(){return K(n)},get chatEnabled(){return K(b)},get planEnabled(){return K(ae)},get focusTab(){return K(ie)},onselect:Ke}),P(t),q(`pointerdown`,t,Xe),q(`pointerup`,t,Ze),vr(`pointercancel`,t,Qe),Y(e,t)};Z(Ct,e=>{N===`error`||N===`stacked`?e(wt):Oe===`sessions`||Oe===`git`?e(Tt,1):e(Et,-1)});var Dt=H(Ct,2),Ot=e=>{oo(e,{get queue(){return M}})};Z(Dt,e=>{N!==`error`&&N!==`stacked`&&e(Ot)}),Y(e,St),Be()}yr([`pointerdown`,`pointerup`,`click`]);var jc=document.getElementById(`app`);if(!jc)throw Error(`Missing application mount target`);Or(Ac,{target:jc});
|
package/dist/client/index.html
CHANGED
|
@@ -10,7 +10,7 @@ SPDX-License-Identifier: AGPL-3.0-or-later
|
|
|
10
10
|
<meta charset="UTF-8" />
|
|
11
11
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
12
12
|
<title>Codex Relay</title>
|
|
13
|
-
<script type="module" crossorigin src="/assets/index-
|
|
13
|
+
<script type="module" crossorigin src="/assets/index-CQqFQn_3.js"></script>
|
|
14
14
|
<link rel="stylesheet" crossorigin href="/assets/index-DSU_Fcvo.css">
|
|
15
15
|
</head>
|
|
16
16
|
<body>
|