gestalt-mobile 0.4.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (24) hide show
  1. package/README.md +7 -0
  2. package/dist/client/assets/index--vTfuwTT.js +11 -0
  3. package/dist/client/assets/index-BqpvGqIw.css +1 -0
  4. package/dist/client/index.html +2 -2
  5. package/dist/server/server/app.js +2 -0
  6. package/dist/server/server/composition.js +25 -6
  7. package/dist/server/server/features/catalog/get-bootstrap/use-case.js +6 -1
  8. package/dist/server/server/features/sessions/application/start-settings.js +2 -1
  9. package/dist/server/server/features/sessions/model/relay-session.js +15 -0
  10. package/dist/server/server/features/sessions/start-session/endpoint.js +6 -0
  11. package/dist/server/server/features/sessions/start-session/request.js +1 -0
  12. package/dist/server/server/features/sessions/start-session/use-case.js +32 -1
  13. package/dist/server/server/features/skills/delete-profile/endpoint.js +24 -0
  14. package/dist/server/server/features/skills/list-available/endpoint.js +4 -2
  15. package/dist/server/server/platform/codex/codex-model-catalog.js +63 -0
  16. package/dist/server/server/platform/codex/session-runtime.js +2 -2
  17. package/dist/server/server/platform/persistence/migrate.js +8 -1
  18. package/dist/server/server/platform/persistence/sqlite-session-repository.js +11 -2
  19. package/dist/server/server/platform/skills/cached-skill-catalog.js +42 -0
  20. package/dist/server/server/platform/skills/codex-skill-catalog.js +18 -5
  21. package/dist/server/server/platform/skills/filesystem-skill-profile-store.js +28 -0
  22. package/package.json +1 -1
  23. package/dist/client/assets/index-B3MMCSoP.css +0 -1
  24. package/dist/client/assets/index-i0Y57I_X.js +0 -11
package/README.md CHANGED
@@ -95,6 +95,13 @@ use Left/Right while a tree item is focused. Up/Down, Home, and End move through
95
95
  visible items; Enter or Space selects the focused directory. The selected path
96
96
  remains highlighted when branches are folded or the catalog is refreshed.
97
97
 
98
+ At startup, Gestalt Mobile asks the installed Codex app-server for its available
99
+ models. New sessions use `gpt-5.6-terra` by default; choose another discovered
100
+ model from the Session tab before creating the session. The default is defined
101
+ centrally as `DEFAULT_SESSION_MODEL` in `src/server/features/sessions/application/start-settings.ts`
102
+ so it can be changed in a future configuration surface. The selected model is
103
+ stored with the relay session and shown in managed session entries.
104
+
98
105
  Use **Open** to relaunch a released, stopped, or attention-required
99
106
  relay session from the browser.
100
107
 
@@ -0,0 +1,11 @@
1
+ (function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var e=Array.isArray,t=Array.prototype.indexOf,n=Array.prototype.includes,r=Array.from,i=Object.defineProperty,a=Object.getOwnPropertyDescriptor,o=Object.getOwnPropertyDescriptors,s=Object.prototype,c=Array.prototype,l=Object.getPrototypeOf,u=Object.isExtensible,d=()=>{};function f(e){for(var t=0;t<e.length;t++)e[t]()}function p(){var e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}}var m=1024,h=2048,g=4096,_=8192,v=16384,y=32768,b=1<<25,x=65536,S=1<<18,C=1<<19,w=1<<20,T=1<<25,E=65536,D=1<<21,ee=1<<22,O=1<<23,k=Symbol(`$state`),te=Symbol(`legacy props`),ne=Symbol(``),re=Symbol(`attributes`),ie=Symbol(`class`),ae=Symbol(`style`),oe=Symbol(`text`),se=Symbol(`form reset`),ce=new class extends Error{name=`StaleReactionError`;message="The reaction that called `getAbortSignal()` was re-run or destroyed"},le=!!globalThis.document?.contentType&&globalThis.document.contentType.includes(`xml`);function A(e){throw Error(`https://svelte.dev/e/lifecycle_outside_component`)}function ue(){throw Error(`https://svelte.dev/e/async_derived_orphan`)}function de(e,t,n){throw Error(`https://svelte.dev/e/each_key_duplicate`)}function fe(e){throw Error(`https://svelte.dev/e/effect_in_teardown`)}function pe(){throw Error(`https://svelte.dev/e/effect_in_unowned_derived`)}function me(e){throw Error(`https://svelte.dev/e/effect_orphan`)}function he(){throw Error(`https://svelte.dev/e/effect_update_depth_exceeded`)}function ge(e){throw Error(`https://svelte.dev/e/props_invalid_value`)}function _e(){throw Error(`https://svelte.dev/e/state_descriptors_fixed`)}function ve(){throw Error(`https://svelte.dev/e/state_prototype_fixed`)}function ye(){throw Error(`https://svelte.dev/e/state_unsafe_mutation`)}function be(){throw Error(`https://svelte.dev/e/svelte_boundary_reset_onerror`)}var xe={},j=Symbol(`uninitialized`),Se=`http://www.w3.org/1999/xhtml`;function Ce(){console.warn(`https://svelte.dev/e/derived_inert`)}function we(e){console.warn(`https://svelte.dev/e/hydration_mismatch`)}function Te(){console.warn(`https://svelte.dev/e/select_multiple_invalid_value`)}function Ee(){console.warn(`https://svelte.dev/e/svelte_boundary_reset_noop`)}var M=!1;function De(e){M=e}var N;function Oe(e){if(e===null)throw we(),xe;return N=e}function ke(){return Oe(nn(N))}function P(e){if(M){if(nn(N)!==null)throw we(),xe;N=e}}function Ae(e=1){if(M){for(var t=e,n=N;t--;)n=nn(n);N=n}}function je(e=!0){for(var t=0,n=N;;){if(n.nodeType===8){var r=n.data;if(r===`]`){if(t===0)return n;--t}else(r===`[`||r===`[!`||r[0]===`[`&&!isNaN(Number(r.slice(1))))&&(t+=1)}var i=nn(n);e&&n.remove(),n=i}}function Me(e){if(!e||e.nodeType!==8)throw we(),xe;return e.data}function Ne(e){return e===this.v}function Pe(e,t){return e==e?e!==t||typeof e==`object`&&!!e||typeof e==`function`:t==t}function Fe(e){return!Pe(e,this.v)}var Ie=null;function Le(e){Ie=e}function Re(e,t=!1,n){Ie={p:Ie,i:!1,c:null,e:null,s:e,x:null,r:G,l:null}}function ze(e){var t=Ie,n=t.e;if(n!==null){t.e=null;for(var r of n)yn(r)}return e!==void 0&&(t.x=e),t.i=!0,Ie=t.p,e??{}}function Be(){return!0}var Ve=[];function He(){var e=Ve;Ve=[],f(e)}function Ue(e){if(Ve.length===0&&!bt){var t=Ve;queueMicrotask(()=>{t===Ve&&He()})}Ve.push(e)}function We(){for(;Ve.length>0;)He()}function Ge(e){var t=G;if(t===null)return W.f|=O,e;if(!(t.f&32768)&&!(t.f&4))throw e;Ke(e,t)}function Ke(e,t){if(!(t!==null&&t.f&16384)){for(;t!==null;){if(t.f&128){if(!(t.f&32768))throw e;try{t.b.error(e);return}catch(t){e=t}}t=t.parent}throw e}}var qe=~(h|g|m);function F(e,t){e.f=e.f&qe|t}function Je(e){e.f&512||e.deps===null?F(e,m):F(e,g)}function Ye(e){if(e!==null)for(let t of e)!(t.f&2)||!(t.f&65536)||(t.f^=E,Ye(t.deps))}function Xe(e,t,n){e.f&2048?t.add(e):e.f&4096&&n.add(e),Ye(e.deps),F(e,m)}var Ze=!1;function Qe(e){var t=Ze;try{return Ze=!1,[e(),Ze]}finally{Ze=t}}function $e(e){let t=0,n=zt(0),r;return()=>{gn()&&(K(n),Cn(()=>(t===0&&(r=ur(()=>e(()=>Ut(n)))),t+=1,()=>{Ue(()=>{--t,t===0&&(r?.(),r=void 0,Ut(n))})})))}}var et=x|C;function tt(e,t,n,r){new nt(e,t,n,r)}var nt=class{parent;is_pending=!1;transform_error;#e;#t=M?N:null;#n;#r;#i;#a=null;#o=null;#s=null;#c=null;#l=0;#u=0;#d=!1;#f=new Set;#p=new Set;#m=null;#h=$e(()=>(this.#m=zt(this.#l),()=>{this.#m=null}));constructor(e,t,n,r){this.#e=e,this.#n=t,this.#r=e=>{var t=G;t.b=this,t.f|=128,n(e)},this.parent=G.b,this.transform_error=r??this.parent?.transform_error??(e=>e),this.#i=wn(()=>{if(M){let e=this.#t;ke();let t=e.data===`[!`;if(e.data.startsWith(`[?`)){let t=JSON.parse(e.data.slice(2));this.#_(t)}else t?this.#v():this.#g()}else this.#y()},et),M&&(this.#e=N)}#g(){try{this.#a=Tn(()=>this.#r(this.#e))}catch(e){this.error(e)}}#_(e){let t=this.#n.failed;t&&(this.#s=Tn(()=>{t(this.#e,()=>e,()=>()=>{})}))}#v(){let e=this.#n.pending;e&&(this.is_pending=!0,this.#o=Tn(()=>e(this.#e)),Ue(()=>{var e=this.#c=document.createDocumentFragment(),t=en();e.append(t),this.#a=this.#x(()=>Tn(()=>this.#r(t))),this.#u===0&&(this.#e.before(e),this.#c=null,Mn(this.#o,()=>{this.#o=null}),this.#b(L))}))}#y(){try{if(this.is_pending=this.has_pending_snippet(),this.#u=0,this.#l=0,this.#a=Tn(()=>{this.#r(this.#e)}),this.#u>0){var e=this.#c=document.createDocumentFragment();In(this.#a,e);let t=this.#n.pending;this.#o=Tn(()=>t(this.#e))}else this.#b(L)}catch(e){this.error(e)}}#b(e){this.is_pending=!1,e.transfer_effects(this.#f,this.#p)}defer_effect(e){Xe(e,this.#f,this.#p)}is_rendered(){return!this.is_pending&&(!this.parent||this.parent.is_rendered())}has_pending_snippet(){return!!this.#n.pending}#x(e){var t=G,n=W,r=Ie;Un(this.#i),Hn(this.#i),Le(this.#i.ctx);try{return Et.ensure(),e()}catch(e){return Ge(e),null}finally{Un(t),Hn(n),Le(r)}}#S(e,t){if(!this.has_pending_snippet()){this.parent&&this.parent.#S(e,t);return}this.#u+=e,this.#u===0&&(this.#b(t),this.#o&&Mn(this.#o,()=>{this.#o=null}),this.#c&&=(this.#e.before(this.#c),null))}update_pending_count(e,t){this.#S(e,t),this.#l+=e,!(!this.#m||this.#d)&&(this.#d=!0,Ue(()=>{this.#d=!1,this.#m&&Vt(this.#m,this.#l)}))}get_effect_pending(){return this.#h(),K(this.#m)}error(e){if(!this.#n.onerror&&!this.#n.failed)throw e;L?.is_fork?(this.#a&&L.skip_effect(this.#a),this.#o&&L.skip_effect(this.#o),this.#s&&L.skip_effect(this.#s),L.oncommit(()=>{this.#C(e)})):this.#C(e)}#C(e){this.#a&&=(kn(this.#a),null),this.#o&&=(kn(this.#o),null),this.#s&&=(kn(this.#s),null),M&&(Oe(this.#t),Ae(),Oe(je()));var t=this.#n.onerror;let n=this.#n.failed;var r=!1,i=!1;let a=()=>{if(r){Ee();return}r=!0,i&&be(),this.#s!==null&&Mn(this.#s,()=>{this.#s=null}),this.#x(()=>{this.#y()})},o=e=>{try{i=!0,t?.(e,a),i=!1}catch(e){Ke(e,this.#i&&this.#i.parent)}n&&(this.#s=this.#x(()=>{try{return Tn(()=>{var t=G;t.b=this,t.f|=128,n(this.#e,()=>e,()=>a)})}catch(e){return Ke(e,this.#i.parent),null}}))};Ue(()=>{var t;try{t=this.transform_error(e)}catch(e){Ke(e,this.#i&&this.#i.parent);return}typeof t==`object`&&t&&typeof t.then==`function`?t.then(o,e=>Ke(e,this.#i&&this.#i.parent)):o(t)})}};function rt(e,t,n,r){let i=Be()?st:ut;var a=e.filter(e=>!e.settled),o=t.map(i);if(n.length===0&&a.length===0){r(o);return}var s=G,c=it(),l=a.length===1?a[0].promise:a.length>1?Promise.all(a.map(e=>e.promise)):null;function u(e){if(!(s.f&16384)){c();try{r([...o,...e])}catch(e){Ke(e,s)}at()}}var d=ot();if(n.length===0){l.then(()=>u([])).finally(d);return}function f(){Promise.all(n.map(e=>lt(e))).then(u).catch(e=>Ke(e,s)).finally(d)}l?l.then(()=>{c(),f(),at()}):f()}function it(){var e=G,t=W,n=Ie,r=L;return function(i=!0){Un(e),Hn(t),Le(n),i&&!(e.f&16384)&&(r?.activate(),r?.apply())}}function at(e=!0){Un(null),Hn(null),Le(null),e&&L?.deactivate()}function ot(){var e=G,t=e.b,n=L,r=!!t?.is_rendered();return t?.update_pending_count(1,n),n.increment(r,e),()=>{t?.update_pending_count(-1,n),n.decrement(r,e)}}function st(e){var t=2|h;return G!==null&&(G.f|=C),{ctx:Ie,deps:null,effects:null,equals:Ne,f:t,fn:e,reactions:null,rv:0,v:j,wv:0,parent:G,ac:null}}var ct=Symbol(`obsolete`);function lt(e,t,n){let r=G;r===null&&ue();var i=void 0,a=zt(j),o=!W,s=new Set;return Sn(()=>{var t=G,n=p();i=n.promise;try{Promise.resolve(e()).then(n.resolve,e=>{e!==ce&&n.reject(e)}).finally(at)}catch(e){n.reject(e),at()}var c=L;if(o){if(t.f&32768)var l=ot();if(r.b?.is_rendered())c.async_deriveds.get(t)?.reject(ct);else for(let e of s.values())e.reject(ct);s.add(n),c.async_deriveds.set(t,n)}let u=(e,t=void 0)=>{l?.(),s.delete(n),t!==ct&&(c.activate(),t?(a.f|=O,Vt(a,t)):(a.f&8388608&&(a.f^=O),Vt(a,e)),c.deactivate())};n.promise.then(u,e=>u(null,e||`unknown`))}),_n(()=>{for(let e of s)e.reject(ct)}),new Promise(e=>{function t(n){function r(){n===i?e(a):t(i)}n.then(r,r)}t(i)})}function I(e){let t=st(e);return Gn(t),t}function ut(e){let t=st(e);return t.equals=Fe,t}function dt(e){var t=e.effects;if(t!==null){e.effects=null;for(var n=0;n<t.length;n+=1)kn(t[n])}}function ft(e){var t,n=G,r=e.parent;if(!zn&&r!==null&&e.v!==j&&r.f&24576)return Ce(),e.v;Un(r);try{e.f&=~E,dt(e),t=rr(e)}finally{Un(n)}return t}function pt(e){var t=ft(e);if(!e.equals(t)&&(e.wv=er(),(!L?.is_fork||e.deps===null)&&(L===null?e.v=t:(L.capture(e,t,!0),_t?.capture(e,t,!0)),e.deps===null))){F(e,m);return}zn||(vt===null?Je(e):(gn()||L?.is_fork)&&vt.set(e,t))}function mt(e){if(e.effects!==null)for(let t of e.effects)(t.teardown||t.ac)&&(t.teardown?.(),t.ac?.abort(ce),t.fn!==null&&(t.teardown=d),t.ac=null,ar(t,0),Dn(t))}function ht(e){if(e.effects!==null)for(let t of e.effects)t.teardown&&t.fn!==null&&or(t)}var gt=null,L=null,_t=null,vt=null,yt=null,bt=!1,xt=!1,St=null,Ct=null,wt=0,Tt=1,Et=class e{id=Tt++;#e=!1;linked=!0;#t=null;#n=null;async_deriveds=new Map;current=new Map;previous=new Map;#r=new Set;#i=new Set;#a=0;#o=new Map;#s=null;#c=[];#l=[];#u=new Set;#d=new Set;#f=new Map;#p=new Set;is_fork=!1;#m=!1;constructor(){gt===null?gt=this:(gt.#n=this,this.#t=gt),gt=this}#h(){if(this.is_fork)return!0;for(let n of this.#o.keys()){for(var e=n,t=!1;e.parent!==null;){if(this.#f.has(e)){t=!0;break}e=e.parent}if(!t)return!0}return!1}skip_effect(e){this.#f.has(e)||this.#f.set(e,{d:[],m:[]}),this.#p.delete(e)}unskip_effect(e,t=e=>this.schedule(e)){var n=this.#f.get(e);if(n){this.#f.delete(e);for(var r of n.d)F(r,h),t(r);for(r of n.m)F(r,g),t(r)}this.#p.add(e)}#g(){this.#e=!0,wt++>1e3&&(this.#x(),Ot());for(let e of this.#u)this.#d.delete(e),F(e,h),this.schedule(e);for(let e of this.#d)F(e,g),this.schedule(e);let t=this.#c;this.#c=[],this.apply();var n=St=[],r=[],i=Ct=[];for(let e of t)try{this.#_(e,n,r)}catch(t){throw Ft(e),this.#h()||this.discard(),t}if(L=null,i.length>0){var a=e.ensure();for(let e of i)a.schedule(e)}if(St=null,Ct=null,this.#h()){this.#b(r),this.#b(n);for(let[e,t]of this.#f)Pt(e,t);i.length>0&&L.#g();return}let o=this.#v();if(o){this.#b(r),this.#b(n),o.#y(this);return}this.#u.clear(),this.#d.clear();for(let e of this.#r)e(this);this.#r.clear(),_t=this,At(r),At(n),_t=null,this.#s?.resolve();var s=L;if(this.#a===0&&(this.#c.length===0||s!==null)&&this.#x(),this.#c.length>0)if(s!==null){let e=s;e.#c.push(...this.#c.filter(t=>!e.#c.includes(t)))}else s=this;s!==null&&s.#g()}#_(e,t,n){e.f^=m;for(var r=e.first;r!==null;){var i=r.f,a=(i&96)!=0;if(!(a&&i&1024||i&8192||this.#f.has(r))&&r.fn!==null){a?r.f^=m:i&4?t.push(r):tr(r)&&(i&16&&this.#d.add(r),or(r));var o=r.first;if(o!==null){r=o;continue}}for(;r!==null;){var s=r.next;if(s!==null){r=s;break}r=r.parent}}}#v(){for(var e=this.#t;e!==null;){if(!e.is_fork){for(let[t,[,n]]of this.current)if(e.current.has(t)&&!n)return e}e=e.#t}return null}#y(e){for(let[t,n]of e.current)!this.previous.has(t)&&e.previous.has(t)&&this.previous.set(t,e.previous.get(t)),this.current.set(t,n);for(let[t,n]of e.async_deriveds){let e=this.async_deriveds.get(t);e&&n.promise.then(e.resolve).catch(e.reject)}e.async_deriveds.clear(),this.transfer_effects(e.#u,e.#d);let t=e=>{var n=e.reactions;if(n!==null)for(let e of n){var r=e.f;if(r&2)t(e);else{var i=e;r&4194320&&!this.async_deriveds.has(i)&&(this.#d.delete(i),F(i,h),this.schedule(i))}}};for(let e of this.current.keys())t(e);this.oncommit(()=>e.discard()),e.#x(),L=this,this.#g()}#b(e){for(var t=0;t<e.length;t+=1)Xe(e[t],this.#u,this.#d)}capture(e,t,n=!1){e.v!==j&&!this.previous.has(e)&&this.previous.set(e,e.v),e.f&8388608||(this.current.set(e,[t,n]),vt?.set(e,t)),this.is_fork||(e.v=t)}activate(){L=this}deactivate(){L=null,vt=null}flush(){try{xt=!0,L=this,this.#g()}finally{wt=0,yt=null,St=null,Ct=null,xt=!1,L=null,vt=null,Lt.clear()}}discard(){for(let e of this.#i)e(this);this.#i.clear();for(let e of this.async_deriveds.values())e.reject(ct);this.#x(),this.#s?.resolve()}register_created_effect(e){this.#l.push(e)}increment(e,t){if(this.#a+=1,e){let e=this.#o.get(t)??0;this.#o.set(t,e+1)}}decrement(e,t){if(--this.#a,e){let e=this.#o.get(t)??0;e===1?this.#o.delete(t):this.#o.set(t,e-1)}this.#m||(this.#m=!0,Ue(()=>{this.#m=!1,this.linked&&this.flush()}))}transfer_effects(e,t){for(let t of e)this.#u.add(t);for(let e of t)this.#d.add(e);e.clear(),t.clear()}oncommit(e){this.#r.add(e)}ondiscard(e){this.#i.add(e)}settled(){return(this.#s??=p()).promise}static ensure(){if(L===null){let t=L=new e;!xt&&!bt&&Ue(()=>{t.#e||t.flush()})}return L}apply(){vt=null}schedule(e){if(yt=e,e.b?.is_pending&&e.f&16777228&&!(e.f&32768)){e.b.defer_effect(e);return}for(var t=e;t.parent!==null;){t=t.parent;var n=t.f;if(St!==null&&t===G&&(W===null||!(W.f&2)))return;if(n&96){if(!(n&1024))return;t.f^=m}}this.#c.push(t)}#x(){if(this.linked){var e=this.#t,t=this.#n;e===null||(e.#n=t),t===null?gt=e:t.#t=e,this.linked=!1}}};function Dt(e){var t=bt;bt=!0;try{var n;for(e&&(L!==null&&!L.is_fork&&L.flush(),n=e());;){if(We(),L===null)return n;L.flush()}}finally{bt=t}}function Ot(){try{he()}catch(e){Ke(e,yt)}}var kt=null;function At(e){var t=e.length;if(t!==0){for(var n=0;n<t;){var r=e[n++];if(!(r.f&24576)&&tr(r)&&(kt=new Set,or(r),r.deps===null&&r.first===null&&r.nodes===null&&r.teardown===null&&r.ac===null&&jn(r),kt?.size>0)){Lt.clear();for(let e of kt){if(e.f&24576)continue;let t=[e],n=e.parent;for(;n!==null;)kt.has(n)&&(kt.delete(n),t.push(n)),n=n.parent;for(let e=t.length-1;e>=0;e--){let n=t[e];n.f&24576||or(n)}}kt.clear()}}kt=null}}function jt(e,t,n,r){if(!n.has(e)&&(n.add(e),e.reactions!==null))for(let i of e.reactions){let e=i.f;e&2?jt(i,t,n,r):e&4194320&&!(e&2048)&&Mt(i,t,r)&&(F(i,h),Nt(i))}}function Mt(e,t,r){let i=r.get(e);if(i!==void 0)return i;if(e.deps!==null)for(let i of e.deps){if(n.call(t,i))return!0;if(i.f&2&&Mt(i,t,r))return r.set(i,!0),!0}return r.set(e,!1),!1}function Nt(e){L.schedule(e)}function Pt(e,t){if(!(e.f&32&&e.f&1024)){e.f&2048?t.d.push(e):e.f&4096&&t.m.push(e),F(e,m);for(var n=e.first;n!==null;)Pt(n,t),n=n.next}}function Ft(e){F(e,m);for(var t=e.first;t!==null;)Ft(t),t=t.next}var It=new Set,Lt=new Map,Rt=!1;function zt(e,t){return{f:0,v:e,reactions:null,equals:Ne,rv:0,wv:0}}function R(e,t){let n=zt(e,t);return Gn(n),n}function Bt(e,t=!1,n=!0){let r=zt(e);return t||(r.equals=Fe),r}function z(e,t,n=!1){return W!==null&&(!Vn||W.f&131072)&&Be()&&W.f&4325394&&(Wn===null||!Wn.has(e))&&ye(),Vt(e,n?Gt(t):t,Ct)}function Vt(e,t,n=null){if(!e.equals(t)){Lt.set(e,zn?t:e.v);var r=Et.ensure();if(r.capture(e,t),e.f&2){let t=e;e.f&2048&&ft(t),vt===null&&Je(t)}e.wv=er(),Wt(e,h,n),Be()&&G!==null&&G.f&1024&&!(G.f&96)&&(Jn===null?Yn([e]):Jn.push(e)),!r.is_fork&&It.size>0&&!Rt&&Ht()}return t}function Ht(){Rt=!1;for(let e of It){e.f&1024&&F(e,g);let t;try{t=tr(e)}catch{t=!0}t&&or(e)}It.clear()}function Ut(e){z(e,e.v+1)}function Wt(e,t,n){var r=e.reactions;if(r!==null)for(var i=Be(),a=r.length,o=0;o<a;o++){var s=r[o],c=s.f;if(!(!i&&s===G)){var l=(c&h)===0;if(l&&F(s,t),c&131072)It.add(s);else if(c&2){var u=s;vt?.delete(u),c&65536||(c&512&&(G===null||!(G.f&2097152))&&(s.f|=E),Wt(u,g,n))}else if(l){var d=s;c&16&&kt!==null&&kt.add(d),n===null?Nt(d):n.push(d)}}}}function Gt(t){if(typeof t!=`object`||!t||k in t)return t;let n=l(t);if(n!==s&&n!==c)return t;var r=new Map,i=e(t),o=R(0),u=null,d=Qn,f=e=>{if(Qn===d)return e();var t=W,n=Qn;Hn(null),$n(d);var r=e();return Hn(t),$n(n),r};return i&&r.set(`length`,R(t.length,u)),new Proxy(t,{defineProperty(e,t,n){(!(`value`in n)||n.configurable===!1||n.enumerable===!1||n.writable===!1)&&_e();var i=r.get(t);return i===void 0?f(()=>{var e=R(n.value,u);return r.set(t,e),e}):z(i,n.value,!0),!0},deleteProperty(e,t){var n=r.get(t);if(n===void 0){if(t in e){let e=f(()=>R(j,u));r.set(t,e),Ut(o)}}else z(n,j),Ut(o);return!0},get(e,n,i){if(n===k)return t;var o=r.get(n),s=n in e;if(o===void 0&&(!s||a(e,n)?.writable)&&(o=f(()=>R(Gt(s?e[n]:j),u)),r.set(n,o)),o!==void 0){var c=K(o);return c===j?void 0:c}return Reflect.get(e,n,i)},getOwnPropertyDescriptor(e,t){var n=Reflect.getOwnPropertyDescriptor(e,t);if(n&&`value`in n){var i=r.get(t);i&&(n.value=K(i))}else if(n===void 0){var a=r.get(t),o=a?.v;if(a!==void 0&&o!==j)return{enumerable:!0,configurable:!0,value:o,writable:!0}}return n},has(e,t){if(t===k)return!0;var n=r.get(t),i=n!==void 0&&n.v!==j||Reflect.has(e,t);return(n!==void 0||G!==null&&(!i||a(e,t)?.writable))&&(n===void 0&&(n=f(()=>R(i?Gt(e[t]):j,u)),r.set(t,n)),K(n)===j)?!1:i},set(e,t,n,s){var c=r.get(t),l=t in e;if(i&&t===`length`)for(var d=n;d<c.v;d+=1){var p=r.get(d+``);p===void 0?d in e&&(p=f(()=>R(j,u)),r.set(d+``,p)):z(p,j)}if(c===void 0)(!l||a(e,t)?.writable)&&(c=f(()=>R(void 0,u)),z(c,Gt(n)),r.set(t,c));else{l=c.v!==j;var m=f(()=>Gt(n));z(c,m)}var h=Reflect.getOwnPropertyDescriptor(e,t);if(h?.set&&h.set.call(s,n),!l){if(i&&typeof t==`string`){var g=r.get(`length`),_=Number(t);Number.isInteger(_)&&_>=g.v&&z(g,_+1)}Ut(o)}return!0},ownKeys(e){K(o);var t=Reflect.ownKeys(e).filter(e=>{var t=r.get(e);return t===void 0||t.v!==j});for(var[n,i]of r)i.v!==j&&!(n in e)&&t.push(n);return t},setPrototypeOf(){ve()}})}function Kt(e){try{if(typeof e==`object`&&e&&k in e)return e[k]}catch{}return e}function qt(e,t){return Object.is(Kt(e),Kt(t))}var Jt,Yt,Xt,Zt,Qt;function $t(){if(Jt===void 0){Jt=window,Yt=document,Xt=/Firefox/.test(navigator.userAgent);var e=Element.prototype,t=Node.prototype,n=Text.prototype;Zt=a(t,`firstChild`).get,Qt=a(t,`nextSibling`).get,u(e)&&(e[ie]=void 0,e[re]=null,e[ae]=void 0,e.__e=void 0),u(n)&&(n[oe]=void 0)}}function en(e=``){return document.createTextNode(e)}function tn(e){return Zt.call(e)}function nn(e){return Qt.call(e)}function B(e,t){if(!M)return tn(e);var n=tn(N);if(n===null)n=N.appendChild(en());else if(t&&n.nodeType!==3){var r=en();return n?.before(r),Oe(r),r}return t&&sn(n),Oe(n),n}function V(e,t=!1){if(!M){var n=tn(e);return n instanceof Comment&&n.data===``?nn(n):n}if(t){if(N?.nodeType!==3){var r=en();return N?.before(r),Oe(r),r}sn(N)}return N}function H(e,t=1,n=!1){let r=M?N:e;for(var i;t--;)i=r,r=nn(r);if(!M)return r;if(n){if(r?.nodeType!==3){var a=en();return r===null?i?.after(a):r.before(a),Oe(a),a}sn(r)}return Oe(r),r}function rn(e){e.textContent=``}function an(){return!1}function on(e,t,n){return t==null||t===`http://www.w3.org/1999/xhtml`?n?document.createElement(e,{is:n}):document.createElement(e):n?document.createElementNS(t,e,{is:n}):document.createElementNS(t,e)}function sn(e){if(e.nodeValue.length<65536)return;let t=e.nextSibling;for(;t!==null&&t.nodeType===3;)t.remove(),e.nodeValue+=t.nodeValue,t=e.nextSibling}function cn(e){M&&tn(e)!==null&&rn(e)}var ln=!1;function un(){ln||(ln=!0,document.addEventListener(`reset`,e=>{Promise.resolve().then(()=>{if(!e.defaultPrevented)for(let t of e.target.elements)t[se]?.()})},{capture:!0}))}function dn(e){var t=W,n=G;Hn(null),Un(null);try{return e()}finally{Hn(t),Un(n)}}function fn(e,t,n,r=n){e.addEventListener(t,()=>dn(n));let i=e[se];i?e[se]=()=>{i(),r(!0)}:e[se]=()=>r(!0),un()}function pn(e){G===null&&(W===null&&me(e),pe()),zn&&fe(e)}function mn(e,t){var n=t.last;n===null?t.last=t.first=e:(n.next=e,e.prev=n,t.last=e)}function hn(e,t){var n=G;n!==null&&n.f&8192&&(e|=_);var r={ctx:Ie,deps:null,nodes:null,f:e|h|512,first:null,fn:t,last:null,next:null,parent:n,b:n&&n.b,prev:null,teardown:null,wv:0,ac:null};L?.register_created_effect(r);var i=r;if(e&4)St===null?Et.ensure().schedule(r):St.push(r);else if(t!==null){try{or(r)}catch(e){throw kn(r),e}i.deps===null&&i.teardown===null&&i.nodes===null&&i.first===i.last&&!(i.f&524288)&&(i=i.first,e&16&&e&65536&&i!==null&&(i.f|=x))}if(i!==null&&(i.parent=n,n!==null&&mn(i,n),W!==null&&W.f&2&&!(e&64))){var a=W;(a.effects??=[]).push(i)}return r}function gn(){return W!==null&&!Vn}function _n(e){let t=hn(8,null);return F(t,m),t.teardown=e,t}function vn(e){pn(`$effect`);var t=G.f;if(!W&&t&32&&Ie!==null&&!Ie.i){var n=Ie;(n.e??=[]).push(e)}else return yn(e)}function yn(e){return hn(4|w,e)}function bn(e){Et.ensure();let t=hn(64|C,e);return(e={})=>new Promise(n=>{e.outro?Mn(t,()=>{kn(t),n(void 0)}):(kn(t),n(void 0))})}function xn(e){return hn(4,e)}function Sn(e){return hn(ee|C,e)}function Cn(e,t=0){return hn(8|t,e)}function U(e,t=[],n=[],r=[]){rt(r,t,n,t=>{hn(8,()=>{e(...t.map(K))})})}function wn(e,t=0){return hn(16|t,e)}function Tn(e){return hn(32|C,e)}function En(e){var t=e.teardown;if(t!==null){let e=zn,n=W;Bn(!0),Hn(null);try{t.call(null)}finally{Bn(e),Hn(n)}}}function Dn(e,t=!1){var n=e.first;for(e.first=e.last=null;n!==null;){let e=n.ac;e!==null&&dn(()=>{e.abort(ce)});var r=n.next;n.f&64?n.parent=null:kn(n,t),n=r}}function On(e){for(var t=e.first;t!==null;){var n=t.next;t.f&32||kn(t),t=n}}function kn(e,t=!0){var n=!1;(t||e.f&262144)&&e.nodes!==null&&e.nodes.end!==null&&(An(e.nodes.start,e.nodes.end),n=!0),e.f|=b,Dn(e,t&&!n),ar(e,0);var r=e.nodes&&e.nodes.t;if(r!==null)for(let e of r)e.stop();En(e),e.f^=b,e.f|=v;var i=e.parent;i!==null&&i.first!==null&&jn(e),e.next=e.prev=e.teardown=e.ctx=e.deps=e.fn=e.nodes=e.ac=e.b=null}function An(e,t){for(;e!==null;){var n=e===t?null:nn(e);e.remove(),e=n}}function jn(e){var t=e.parent,n=e.prev,r=e.next;n!==null&&(n.next=r),r!==null&&(r.prev=n),t!==null&&(t.first===e&&(t.first=r),t.last===e&&(t.last=n))}function Mn(e,t,n=!0){var r=[];Nn(e,r,!0);var i=()=>{n&&kn(e),t&&t()},a=r.length;if(a>0){var o=()=>--a||i();for(var s of r)s.out(o)}else i()}function Nn(e,t,n){if(!(e.f&8192)){e.f^=_;var r=e.nodes&&e.nodes.t;if(r!==null)for(let e of r)(e.is_global||n)&&t.push(e);for(var i=e.first;i!==null;){var a=i.next;if(!(i.f&64)){var o=(i.f&65536)!=0||(i.f&32)!=0&&(e.f&16)!=0;Nn(i,t,o?n:!1)}i=a}}}function Pn(e){Fn(e,!0)}function Fn(e,t){if(e.f&8192){e.f^=_,e.f&1024||(F(e,h),Et.ensure().schedule(e));for(var n=e.first;n!==null;){var r=n.next,i=(n.f&65536)!=0||(n.f&32)!=0;Fn(n,i?t:!1),n=r}var a=e.nodes&&e.nodes.t;if(a!==null)for(let e of a)(e.is_global||t)&&e.in()}}function In(e,t){if(e.nodes)for(var n=e.nodes.start,r=e.nodes.end;n!==null;){var i=n===r?null:nn(n);t.append(n),n=i}}var Ln=null,Rn=!1,zn=!1;function Bn(e){zn=e}var W=null,Vn=!1;function Hn(e){W=e}var G=null;function Un(e){G=e}var Wn=null;function Gn(e){W!==null&&(Wn??=new Set).add(e)}var Kn=null,qn=0,Jn=null;function Yn(e){Jn=e}var Xn=1,Zn=0,Qn=Zn;function $n(e){Qn=e}function er(){return++Xn}function tr(e){var t=e.f;if(t&2048)return!0;if(t&2&&(e.f&=~E),t&4096){for(var n=e.deps,r=n.length,i=0;i<r;i++){var a=n[i];if(tr(a)&&pt(a),a.wv>e.wv)return!0}t&512&&vt===null&&F(e,m)}return!1}function nr(e,t,n=!0){var r=e.reactions;if(r!==null&&!(Wn!==null&&Wn.has(e)))for(var i=0;i<r.length;i++){var a=r[i];a.f&2?nr(a,t,!1):t===a&&(n?F(a,h):a.f&1024&&F(a,g),Nt(a))}}function rr(e){var t=Kn,n=qn,r=Jn,i=W,a=Wn,o=Ie,s=Vn,c=Qn,l=e.f;Kn=null,qn=0,Jn=null,W=l&96?null:e,Wn=null,Le(e.ctx),Vn=!1,Qn=++Zn,e.ac!==null&&(dn(()=>{e.ac.abort(ce)}),e.ac=null);try{e.f|=D;var u=e.fn,d=u();e.f|=y;var f=e.deps,p=L?.is_fork;if(Kn!==null){var m;if(p||ar(e,qn),f!==null&&qn>0)for(f.length=qn+Kn.length,m=0;m<Kn.length;m++)f[qn+m]=Kn[m];else e.deps=f=Kn;if(gn()&&e.f&512)for(m=qn;m<f.length;m++)(f[m].reactions??=[]).push(e)}else!p&&f!==null&&qn<f.length&&(ar(e,qn),f.length=qn);if(Be()&&Jn!==null&&!Vn&&f!==null&&!(e.f&6146))for(m=0;m<Jn.length;m++)nr(Jn[m],e);if(i!==null&&i!==e){if(Zn++,i.deps!==null)for(let e=0;e<n;e+=1)i.deps[e].rv=Zn;if(t!==null)for(let e of t)e.rv=Zn;Jn!==null&&(r===null?r=Jn:r.push(...Jn))}return e.f&8388608&&(e.f^=O),d}catch(e){return Ge(e)}finally{e.f^=D,Kn=t,qn=n,Jn=r,W=i,Wn=a,Le(o),Vn=s,Qn=c}}function ir(e,r){let i=r.reactions;if(i!==null){var a=t.call(i,e);if(a!==-1){var o=i.length-1;o===0?i=r.reactions=null:(i[a]=i[o],i.pop())}}if(i===null&&r.f&2&&(Kn===null||!n.call(Kn,r))){var s=r;s.f&512&&(s.f^=512,s.f&=~E),s.v!==j&&Je(s),mt(s),ar(s,0)}}function ar(e,t){var n=e.deps;if(n!==null)for(var r=t;r<n.length;r++)ir(e,n[r])}function or(e){var t=e.f;if(!(t&16384)){F(e,m);var n=G,r=Rn;G=e,Rn=!0;try{t&16777232?On(e):Dn(e),En(e);var i=rr(e);e.teardown=typeof i==`function`?i:null,e.wv=Xn}finally{Rn=r,G=n}}}async function sr(){await Promise.resolve(),Dt()}function K(e){var t=(e.f&2)!=0;if(Ln?.add(e),W!==null&&!Vn&&!(G!==null&&G.f&16384)&&(Wn===null||!Wn.has(e))){var r=W.deps;if(W.f&2097152)e.rv<Zn&&(e.rv=Zn,Kn===null&&r!==null&&r[qn]===e?qn++:Kn===null?Kn=[e]:Kn.push(e));else{W.deps??=[],n.call(W.deps,e)||W.deps.push(e);var i=e.reactions;i===null?e.reactions=[W]:n.call(i,W)||i.push(W)}}if(zn&&Lt.has(e))return Lt.get(e);if(t){var a=e;if(zn){var o=a.v;return(!(a.f&1024)&&a.reactions!==null||lr(a))&&(o=ft(a)),Lt.set(a,o),o}var s=(a.f&512)==0&&!Vn&&W!==null&&(Rn||(W.f&512)!=0),c=(a.f&y)===0;tr(a)&&(s&&(a.f|=512),pt(a)),s&&!c&&(ht(a),cr(a))}if(vt?.has(e))return vt.get(e);if(e.f&8388608)throw e.v;return e.v}function cr(e){if(e.f|=512,e.deps!==null)for(let t of e.deps)(t.reactions??=[]).push(e),t.f&2&&!(t.f&512)&&(ht(t),cr(t))}function lr(e){if(e.v===j)return!0;if(e.deps===null)return!1;for(let t of e.deps)if(Lt.has(t)||t.f&2&&lr(t))return!0;return!1}function ur(e){var t=Vn;try{return Vn=!0,e()}finally{Vn=t}}[...`allowfullscreen.async.autofocus.autoplay.checked.controls.default.disabled.formnovalidate.indeterminate.inert.ismap.loop.multiple.muted.nomodule.novalidate.open.playsinline.readonly.required.reversed.seamless.selected.webkitdirectory.defer.disablepictureinpicture.disableremoteplayback`.split(`.`)];var dr=[`touchstart`,`touchmove`];function fr(e){return dr.includes(e)}var pr=Symbol(`events`),mr=new Set,hr=new Set;function gr(e,t,n,r={}){function i(e){if(r.capture||br.call(t,e),!e.cancelBubble)return dn(()=>n?.call(this,e))}return e.startsWith(`pointer`)||e.startsWith(`touch`)||e===`wheel`?Ue(()=>{t.addEventListener(e,i,r)}):t.addEventListener(e,i,r),i}function _r(e,t,n,r,i){var a={capture:r,passive:i},o=gr(e,t,n,a);(t===document.body||t===window||t===document||t instanceof HTMLMediaElement)&&_n(()=>{t.removeEventListener(e,o,a)})}function q(e,t,n){(t[pr]??={})[e]=n}function vr(e){for(var t=0;t<e.length;t++)mr.add(e[t]);for(var n of hr)n(e)}var yr=null;function br(e){var t=this,n=t.ownerDocument,r=e.type,a=e.composedPath?.()||[],o=a[0]||e.target;yr=e;var s=0,c=yr===e&&e[pr];if(c){var l=a.indexOf(c);if(l!==-1&&(t===document||t===window)){e[pr]=t;return}var u=a.indexOf(t);if(u===-1)return;l<=u&&(s=l)}if(o=a[s]||e.target,o!==t){i(e,`currentTarget`,{configurable:!0,get(){return o||n}});var d=W,f=G;Hn(null),Un(null);try{for(var p,m=[];o!==null&&o!==t;){try{var h=o[pr]?.[r];h!=null&&(!o.disabled||e.target===o)&&h.call(o,e)}catch(e){p?m.push(e):p=e}if(e.cancelBubble)break;s++,o=s<a.length?a[s]:null}if(p){for(let e of m)queueMicrotask(()=>{throw e});throw p}}finally{e[pr]=t,delete e.currentTarget,Hn(d),Un(f)}}}var xr=globalThis?.window?.trustedTypes&&globalThis.window.trustedTypes.createPolicy(`svelte-trusted-html`,{createHTML:e=>e});function Sr(e){return xr?.createHTML(e)??e}function Cr(e){var t=on(`template`);return t.innerHTML=Sr(e.replaceAll(`<!>`,`<!---->`)),t.content}function wr(e,t){var n=G;n.nodes===null&&(n.nodes={start:e,end:t,a:null,t:null})}function J(e,t){var n=(t&1)!=0,r=(t&2)!=0,i,a=!e.startsWith(`<!>`);return()=>{if(M)return wr(N,null),N;i===void 0&&(i=Cr(a?e:`<!>`+e),n||(i=tn(i)));var t=r||Xt?document.importNode(i,!0):i.cloneNode(!0);if(n){var o=tn(t),s=t.lastChild;wr(o,s)}else wr(t,t);return t}}function Tr(e=``){if(!M){var t=en(e+``);return wr(t,t),t}var n=N;return n.nodeType===3?sn(n):(n.before(n=en()),Oe(n)),wr(n,n),n}function Er(){if(M)return wr(N,null),N;var e=document.createDocumentFragment(),t=document.createComment(``),n=en();return e.append(t,n),wr(t,n),e}function Y(e,t){if(M){var n=G;(!(n.f&32768)||n.nodes.end===null)&&(n.nodes.end=N),ke();return}e!==null&&e.before(t)}function X(e,t){var n=t==null?``:typeof t==`object`?`${t}`:t;n!==(e[oe]??=e.nodeValue)&&(e[oe]=n,e.nodeValue=`${n}`)}function Dr(e,t){return kr(e,t)}var Or=new Map;function kr(e,{target:t,anchor:n,props:i={},events:a,context:o,intro:s=!0,transformError:c}){$t();var l=void 0,u=bn(()=>{var s=n??t.appendChild(en());tt(s,{pending:()=>{}},t=>{Re({});var n=Ie;if(o&&(n.c=o),a&&(i.$$events=a),M&&wr(t,null),l=e(t,i)||{},M&&(G.nodes.end=N,N===null||N.nodeType!==8||N.data!==`]`))throw we(),xe;ze()},c);var u=new Set,d=e=>{for(var n=0;n<e.length;n++){var r=e[n];if(!u.has(r)){u.add(r);var i=fr(r);for(let e of[t,document]){var a=Or.get(e);a===void 0&&(a=new Map,Or.set(e,a));var o=a.get(r);o===void 0?(e.addEventListener(r,br,{passive:i}),a.set(r,1)):a.set(r,o+1)}}}};return d(r(mr)),hr.add(d),()=>{for(var e of u)for(let n of[t,document]){var r=Or.get(n),i=r.get(e);--i==0?(n.removeEventListener(e,br),r.delete(e),r.size===0&&Or.delete(n)):r.set(e,i)}hr.delete(d),s!==n&&s.parentNode?.removeChild(s)}});return Ar.set(l,u),l}var Ar=new WeakMap,jr=class{anchor;#e=new Map;#t=new Map;#n=new Map;#r=new Set;#i=!0;constructor(e,t=!0){this.anchor=e,this.#i=t}#a=e=>{if(this.#e.has(e)){var t=this.#e.get(e),n=this.#t.get(t);if(n)Pn(n),this.#r.delete(t);else{var r=this.#n.get(t);r&&(Pn(r.effect),this.#t.set(t,r.effect),this.#n.delete(t),r.fragment.lastChild.remove(),this.anchor.before(r.fragment),n=r.effect)}for(let[t,n]of this.#e){if(this.#e.delete(t),t===e)break;let r=this.#n.get(n);r&&(kn(r.effect),this.#n.delete(n))}for(let[e,r]of this.#t){if(e===t||this.#r.has(e))continue;let i=()=>{if(Array.from(this.#e.values()).includes(e)){var t=document.createDocumentFragment();In(r,t),t.append(en()),this.#n.set(e,{effect:r,fragment:t})}else kn(r);this.#r.delete(e),this.#t.delete(e)};this.#i||!n?(this.#r.add(e),Mn(r,i,!1)):i()}}};#o=e=>{this.#e.delete(e);let t=Array.from(this.#e.values());for(let[e,n]of this.#n)t.includes(e)||(kn(n.effect),this.#n.delete(e))};ensure(e,t){var n=L,r=an();if(t&&!this.#t.has(e)&&!this.#n.has(e))if(r){var i=document.createDocumentFragment(),a=en();i.append(a),this.#n.set(e,{effect:Tn(()=>t(a)),fragment:i})}else this.#t.set(e,Tn(()=>t(this.anchor)));if(this.#e.set(n,e),r){for(let[t,r]of this.#t)t===e?n.unskip_effect(r):n.skip_effect(r);for(let[t,r]of this.#n)t===e?n.unskip_effect(r.effect):n.skip_effect(r.effect);n.oncommit(this.#a),n.ondiscard(this.#o)}else M&&(this.anchor=N),this.#a(n)}};function Z(e,t,n=!1){var r;M&&(r=N,ke());var i=new jr(e),a=n?x:0;function o(e,t){if(M){var n=Me(r);if(e!==parseInt(n.substring(1))){var a=je();Oe(a),i.anchor=a,De(!1),i.ensure(e,t),De(!0);return}}i.ensure(e,t)}wn(()=>{var e=!1;t((t,n=0)=>{e=!0,o(n,t)}),e||o(-1,null)},a)}function Mr(e,t){return t}function Nr(e,t,n){for(var i=[],a=t.length,o,s=t.length,c=0;c<a;c++){let n=t[c];Mn(n,()=>{if(o){if(o.pending.delete(n),o.done.add(n),o.pending.size===0){var t=e.outrogroups;Pr(e,r(o.done)),t.delete(o),t.size===0&&(e.outrogroups=null)}}else--s},!1)}if(s===0){var l=i.length===0&&n!==null;if(l){var u=n,d=u.parentNode;rn(d),d.append(u),e.items.clear()}Pr(e,t,!l)}else o={pending:new Set(t),done:new Set},(e.outrogroups??=new Set).add(o)}function Pr(e,t,n=!0){var r;if(e.pending.size>0){r=new Set;for(let t of e.pending.values())for(let n of t)r.add(e.items.get(n).e)}for(var i=0;i<t.length;i++){var a=t[i];r?.has(a)?(a.f|=T,In(a,document.createDocumentFragment())):kn(t[i],n)}}var Fr;function Q(t,n,i,a,o,s=null){var c=t,l=new Map;if(n&4){var u=t;c=M?Oe(tn(u)):u.appendChild(en())}M&&ke();var d=null,f=ut(()=>{var t=i();return e(t)?t:t==null?[]:r(t)}),p,m=new Map,h=!0;function g(e){v.effect.f&16384||(v.pending.delete(e),v.fallback=d,Lr(v,p,c,n,a),d!==null&&(p.length===0?d.f&33554432?(d.f^=T,zr(d,null,c)):Pn(d):Mn(d,()=>{d=null})))}function _(e){v.pending.delete(e)}var v={effect:wn(()=>{p=K(f);var e=p.length;let t=!1;M&&Me(c)===`[!`!=(e===0)&&(c=je(),Oe(c),De(!1),t=!0);for(var r=new Set,u=L,v=an(),y=0;y<e;y+=1){M&&N.nodeType===8&&N.data===`]`&&(c=N,t=!0,De(!1));var b=p[y],x=a(b,y),S=h?null:l.get(x);S?(S.v&&Vt(S.v,b),S.i&&Vt(S.i,y),v&&u.unskip_effect(S.e)):(S=Rr(l,h?c:Fr??=en(),b,x,y,o,n,i),h||(S.e.f|=T),l.set(x,S)),r.add(x)}if(e===0&&s&&!d&&(h?d=Tn(()=>s(c)):(d=Tn(()=>s(Fr??=en())),d.f|=T)),e>r.size&&de(``,``,``),M&&e>0&&Oe(je()),!h)if(m.set(u,r),v){for(let[e,t]of l)r.has(e)||u.skip_effect(t.e);u.oncommit(g),u.ondiscard(_)}else g(u);t&&De(!0),K(f)}),flags:n,items:l,pending:m,outrogroups:null,fallback:d};h=!1,M&&(c=N)}function Ir(e){for(;e!==null&&!(e.f&32);)e=e.next;return e}function Lr(e,t,n,i,a){var o=(i&8)!=0,s=t.length,c=e.items,l=Ir(e.effect.first),u,d=null,f,p=[],m=[],h,g,_,v;if(o)for(v=0;v<s;v+=1)h=t[v],g=a(h,v),_=c.get(g).e,_.f&33554432||(_.nodes?.a?.measure(),(f??=new Set).add(_));for(v=0;v<s;v+=1){if(h=t[v],g=a(h,v),_=c.get(g).e,e.outrogroups!==null)for(let t of e.outrogroups)t.pending.delete(_),t.done.delete(_);if(_.f&8192&&(Pn(_),o&&(_.nodes?.a?.unfix(),(f??=new Set).delete(_))),_.f&33554432)if(_.f^=T,_===l)zr(_,null,n);else{var y=d?d.next:l;_===e.effect.last&&(e.effect.last=_.prev),_.prev&&(_.prev.next=_.next),_.next&&(_.next.prev=_.prev),Br(e,d,_),Br(e,_,y),zr(_,y,n),d=_,p=[],m=[],l=Ir(d.next);continue}if(_!==l){if(u!==void 0&&u.has(_)){if(p.length<m.length){var b=m[0],x;d=b.prev;var S=p[0],C=p[p.length-1];for(x=0;x<p.length;x+=1)zr(p[x],b,n);for(x=0;x<m.length;x+=1)u.delete(m[x]);Br(e,S.prev,C.next),Br(e,d,S),Br(e,C,b),l=b,d=C,--v,p=[],m=[]}else u.delete(_),zr(_,l,n),Br(e,_.prev,_.next),Br(e,_,d===null?e.effect.first:d.next),Br(e,d,_),d=_;continue}for(p=[],m=[];l!==null&&l!==_;)(u??=new Set).add(l),m.push(l),l=Ir(l.next);if(l===null)continue}_.f&33554432||p.push(_),d=_,l=Ir(_.next)}if(e.outrogroups!==null){for(let t of e.outrogroups)t.pending.size===0&&(Pr(e,r(t.done)),e.outrogroups?.delete(t));e.outrogroups.size===0&&(e.outrogroups=null)}if(l!==null||u!==void 0){var w=[];if(u!==void 0)for(_ of u)_.f&8192||w.push(_);for(;l!==null;)!(l.f&8192)&&l!==e.fallback&&w.push(l),l=Ir(l.next);var E=w.length;if(E>0){var D=i&4&&s===0?n:null;if(o){for(v=0;v<E;v+=1)w[v].nodes?.a?.measure();for(v=0;v<E;v+=1)w[v].nodes?.a?.fix()}Nr(e,w,D)}}o&&Ue(()=>{if(f!==void 0)for(_ of f)_.nodes?.a?.apply()})}function Rr(e,t,n,r,i,a,o,s){var c=o&1?o&16?zt(n):Bt(n,!1,!1):null,l=o&2?zt(i):null;return{v:c,i:l,e:Tn(()=>(a(t,c??n,l??i,s),()=>{e.delete(r)}))}}function zr(e,t,n){if(e.nodes)for(var r=e.nodes.start,i=e.nodes.end,a=t&&!(t.f&33554432)?t.nodes.start:n;r!==null;){var o=nn(r);if(a.before(r),r===i)return;r=o}}function Br(e,t,n){t===null?e.effect.first=n:t.next=n,n===null?e.effect.last=t:n.prev=t}function Vr(e,t){let n=null,r=M;var i;if(M){n=N;for(var a=tn(document.head);a!==null&&(a.nodeType!==8||a.data!==e);)a=nn(a);if(a===null)De(!1);else{var o=nn(a);a.remove(),Oe(o)}}M||(i=document.head.appendChild(en()));try{wn(()=>{var e=Tn(()=>t(i));e.f|=S})}finally{r&&(De(!0),Oe(n))}}function Hr(e){var t,n,r=``;if(typeof e==`string`||typeof e==`number`)r+=e;else if(typeof e==`object`)if(Array.isArray(e)){var i=e.length;for(t=0;t<i;t++)e[t]&&(n=Hr(e[t]))&&(r&&(r+=` `),r+=n)}else for(n in e)e[n]&&(r&&(r+=` `),r+=n);return r}function Ur(){for(var e,t,n=0,r=``,i=arguments.length;n<i;n++)(e=arguments[n])&&(t=Hr(e))&&(r&&(r+=` `),r+=t);return r}function Wr(e){return typeof e==`object`?Ur(e):e??``}var Gr=[...`
2
+ \r\f\xA0\v`];function Kr(e,t,n){var r=e==null?``:``+e;if(t&&(r=r?r+` `+t:t),n){for(var i of Object.keys(n))if(n[i])r=r?r+` `+i:i;else if(r.length)for(var a=i.length,o=0;(o=r.indexOf(i,o))>=0;){var s=o+a;(o===0||Gr.includes(r[o-1]))&&(s===r.length||Gr.includes(r[s]))?r=(o===0?``:r.substring(0,o))+r.substring(s+1):o=s}}return r===``?null:r}function qr(e,t=!1){var n=t?` !important;`:`;`,r=``;for(var i of Object.keys(e)){var a=e[i];a!=null&&a!==``&&(r+=` `+i+`: `+a+n)}return r}function Jr(e){return e[0]!==`-`||e[1]!==`-`?e.toLowerCase():e}function Yr(e,t){if(t){var n=``,r,i;if(Array.isArray(t)?(r=t[0],i=t[1]):r=t,e){e=String(e).replaceAll(/\s*\/\*.*?\*\/\s*/g,``).trim();var a=!1,o=0,s=!1,c=[];r&&c.push(...Object.keys(r).map(Jr)),i&&c.push(...Object.keys(i).map(Jr));var l=0,u=-1;let t=e.length;for(var d=0;d<t;d++){var f=e[d];if(s?f===`/`&&e[d-1]===`*`&&(s=!1):a?a===f&&(a=!1):f===`/`&&e[d+1]===`*`?s=!0:f===`"`||f===`'`?a=f:f===`(`?o++:f===`)`&&o--,!s&&a===!1&&o===0){if(f===`:`&&u===-1)u=d;else if(f===`;`||d===t-1){if(u!==-1){var p=Jr(e.substring(l,u).trim());if(!c.includes(p)){f!==`;`&&d++;var m=e.substring(l,d).trim();n+=` `+m+`;`}}l=d+1,u=-1}}}}return r&&(n+=qr(r)),i&&(n+=qr(i,!0)),n=n.trim(),n===``?null:n}return e==null?null:String(e)}function Xr(e,t,n,r,i,a){var o=e[ie];if(M||o!==n||o===void 0){var s=Kr(n,r,a);(!M||s!==e.getAttribute(`class`))&&(s==null?e.removeAttribute(`class`):t?e.className=s:e.setAttribute(`class`,s)),e[ie]=n}else if(a&&i!==a)for(var c in a){var l=!!a[c];(i==null||l!==!!i[c])&&e.classList.toggle(c,l)}return a}function Zr(e,t={},n,r){for(var i in n){var a=n[i];t[i]!==a&&(n[i]==null?e.style.removeProperty(i):e.style.setProperty(i,a,r))}}function Qr(e,t,n,r){var i=e[ae];if(M||i!==t){var a=Yr(t,r);(!M||a!==e.getAttribute(`style`))&&(a==null?e.removeAttribute(`style`):e.style.cssText=a),e[ae]=t}else r&&(Array.isArray(r)?(Zr(e,n?.[0],r[0]),Zr(e,n?.[1],r[1],`important`)):Zr(e,n,r));return r}function $r(t,n,r=!1){if(t.multiple){if(n==null)return;if(!e(n))return Te();for(var i of t.options)i.selected=n.includes(ni(i));return}for(i of t.options)if(qt(ni(i),n)){i.selected=!0;return}(!r||n!==void 0)&&(t.selectedIndex=-1)}function ei(e){var t=new MutationObserver(()=>{$r(e,e.__value)});t.observe(e,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[`value`]}),_n(()=>{t.disconnect()})}function ti(e,t,n=t){var r=new WeakSet,i=!0;fn(e,`change`,t=>{var i=t?`[selected]`:`:checked`,a;if(e.multiple)a=[].map.call(e.querySelectorAll(i),ni);else{var o=e.querySelector(i)??e.querySelector(`option:not([disabled])`);a=o&&ni(o)}n(a),e.__value=a,L!==null&&r.add(L)}),xn(()=>{var a=t();if(e===document.activeElement){var o=L;if(r.has(o))return}if($r(e,a,i),i&&a===void 0){var s=e.querySelector(`:checked`);s!==null&&(a=ni(s),n(a))}e.__value=a,i=!1}),ei(e)}function ni(e){return`__value`in e?e.__value:e.value}var ri=Symbol(`is custom element`),ii=Symbol(`is html`),ai=le?`link`:`LINK`,oi=le?`progress`:`PROGRESS`;function si(e){if(M){var t=!1,n=()=>{if(!t){if(t=!0,e.hasAttribute(`value`)){var n=e.value;$(e,`value`,null),e.value=n}if(e.hasAttribute(`checked`)){var r=e.checked;$(e,`checked`,null),e.checked=r}}};e[se]=n,Ue(n),un()}}function ci(e,t){var n=ui(e);n.value===(n.value=t??void 0)||e.value===t&&(t!==0||e.nodeName!==oi)||(e.value=t??``)}function li(e,t){var n=ui(e);n.checked!==(n.checked=t??void 0)&&(e.checked=t)}function $(e,t,n,r){var i=ui(e);M&&(i[t]=e.getAttribute(t),t===`src`||t===`srcset`||t===`href`&&e.nodeName===ai)||i[t]!==(i[t]=n)&&(t===`loading`&&(e[ne]=n),n==null?e.removeAttribute(t):typeof n!=`string`&&fi(e).includes(t)?e[t]=n:e.setAttribute(t,n))}function ui(e){return e[re]??={[ri]:e.nodeName.includes(`-`),[ii]:e.namespaceURI===Se}}var di=new Map;function fi(e){var t=e.getAttribute(`is`)||e.nodeName,n=di.get(t);if(n)return n;di.set(t,n=[]);for(var r,i=e,a=Element.prototype;a!==i;){for(var s in r=o(i),r)r[s].set&&s!==`innerHTML`&&s!==`textContent`&&s!==`innerText`&&n.push(s);i=l(i)}return n}function pi(e,t,n=t){var r=new WeakSet;fn(e,`input`,async i=>{var a=i?e.defaultValue:e.value;if(a=mi(e)?hi(a):a,n(a),L!==null&&r.add(L),await sr(),a!==(a=t())){var o=e.selectionStart,s=e.selectionEnd,c=e.value.length;if(e.value=a??``,s!==null){var l=e.value.length;o===s&&s===c&&l>c?(e.selectionStart=l,e.selectionEnd=l):(e.selectionStart=o,e.selectionEnd=Math.min(s,l))}}}),(M&&e.defaultValue!==e.value||ur(t)==null&&e.value)&&(n(mi(e)?hi(e.value):e.value),L!==null&&r.add(L)),Cn(()=>{var n=t();if(e===document.activeElement){var i=L;if(r.has(i))return}mi(e)&&n===hi(e.value)||e.type===`date`&&!n&&!e.value||n!==e.value&&(e.value=n??``)})}function mi(e){var t=e.type;return t===`number`||t===`range`}function hi(e){return e===``?null:+e}function gi(e,t){return e===t||e?.[k]===t}function _i(e={},t,n,r){var i=Ie.r,a=G;return xn(()=>{var o,s;return Cn(()=>{o=s,s=r?.()||[],ur(()=>{gi(n(...s),e)||(t(e,...s),o&&gi(n(...o),e)&&t(null,...o))})}),()=>{let r=a;for(;r!==i&&r.parent!==null&&r.parent.f&33554432;)r=r.parent;let o=()=>{s&&gi(n(...s),e)&&t(null,...s)},c=r.teardown;r.teardown=()=>{o(),c?.()}}}),e}function vi(e,t,n,r){var i=!0,o=(n&8)!=0,s=(n&16)!=0,c=r,l=!0,u=void 0,d=()=>s&&i?(u??=st(r),K(u)):(l&&(l=!1,c=s?ur(r):r),c);let f;if(o){var p=k in e||te in e;f=a(e,t)?.set??(p&&t in e?n=>e[t]=n:void 0)}var m,h=!1;o?[m,h]=Qe(()=>e[t]):m=e[t],m===void 0&&r!==void 0&&(m=d(),f&&(i&&ge(t),f(m)));var g=i?()=>{var n=e[t];return n===void 0?d():(l=!0,n)}:()=>{var n=e[t];return n!==void 0&&(c=void 0),n===void 0?c:n};if(i&&!(n&4))return g;if(f){var _=e.$$legacy;return(function(e,t){return arguments.length>0?((!i||!t||_||h)&&f(t?g():e),e):g()})}var v=!1,y=(n&1?st:ut)(()=>(v=!1,g()));o&&K(y);var b=G;return(function(e,t){if(arguments.length>0){let n=t?K(y):i&&o?Gt(e):e;return z(y,n),v=!0,c!==void 0&&(c=n),e}return zn&&v||b.f&16384?y.v:K(y)})}function yi(e){Ie===null&&A(`onMount`),vn(()=>{let t=ur(e);if(typeof t==`function`)return t})}function bi(e){Ie===null&&A(`onDestroy`),yi(()=>()=>ur(e))}typeof window<`u`&&((window.__svelte??={}).v??=new Set).add(`5`);var xi=J(`<p class="session-path svelte-t9laac"> </p>`),Si=J(`<header class="app-header"><a class="brand" href="/" aria-label="Gestalt Mobile"><img class="brand-icon light-asset" src="/branding/p_glogo_grey.svg" alt=""/> <img class="brand-icon dark-asset" src="/branding/p_glogo_white.svg" alt=""/> <img class="brand-logotype light-asset" src="/branding/t_glogo_grey.svg" alt=""/> <img class="brand-logotype dark-asset" src="/branding/t_glogo_white.svg" alt=""/></a> <!> <button class="menu-trigger" type="button" popovertarget="configuration-panel" aria-label="Open configuration"><span class="menu-lines" aria-hidden="true"><span></span><span></span><span></span></span></button></header> <div id="configuration-panel" class="configuration-panel" popover="auto"><div class="configuration-brand" aria-label="Dyne"><img class="configuration-logo light-asset" src="/branding/dyne-logotype-black.svg" alt=""/> <img class="configuration-logo dark-asset" src="/branding/dyne-logotype-white.svg" alt=""/></div> <label class="appearance-control" for="appearance"><span aria-hidden="true">aA</span> <select id="appearance" aria-label="Appearance"><option>System</option><option>Light</option><option>Dark</option></select></label></div>`,1);function Ci(e,t){Re(t,!0);let n=vi(t,`sessionPath`,3,null);var r=Si(),i=V(r),a=H(B(i),2),o=e=>{var t=xi(),r=B(t,!0);P(t),U(()=>{$(t,`title`,n()),X(r,n())}),Y(e,t)};Z(a,e=>{n()&&e(o)}),Ae(2),P(i);var s=H(i,2),c=H(B(s),2),l=H(B(c),2),u=B(l);u.value=u.__value=`system`;var d=H(u);d.value=d.__value=`light`;var f=H(d);f.value=f.__value=`dark`,P(l);var p;ei(l),P(c),P(s),U(()=>{p!==(p=t.theme)&&(l.value=(l.__value=t.theme)??``,$r(l,t.theme))}),q(`change`,l,e=>t.onthemechange(e.currentTarget.value)),Y(e,r),ze()}vr([`change`]);var wi=J(`<details><summary> </summary><pre> </pre></details>`),Ti=J(`<section aria-labelledby="activities-title"><h3 id="activities-title">Activity</h3> <!></section>`);function Ei(e,t){Re(t,!0);var n=Er(),r=V(n),i=e=>{var n=Ti();Q(H(B(n),2),17,()=>t.activities,e=>e.id,(e,t)=>{var n=wi(),r=B(n),i=B(r,!0);P(r);var a=H(r),o=B(a,!0);P(a),P(n),U(()=>{X(i,K(t).label),X(o,K(t).detail)}),Y(e,n)}),P(n),Y(e,n)};Z(r,e=>{t.activities.length&&e(i)}),Y(e,n),ze()}function Di(e){return!ki(e)||!Array.isArray(e.questions)?[]:e.questions.flatMap(e=>!ki(e)||typeof e.id!=`string`||typeof e.header!=`string`||typeof e.question!=`string`?[]:[{id:e.id,header:e.header,question:e.question,isSecret:e.isSecret===!0,options:Array.isArray(e.options)?e.options.flatMap(e=>ki(e)&&typeof e.label==`string`&&typeof e.description==`string`?[{label:e.label,description:e.description}]:[]):[]}])}function Oi(e){return{answers:Object.fromEntries(e.filter(e=>e.answer.trim()).map(e=>[e.id,{answers:[e.answer]}]))}}function ki(e){return typeof e==`object`&&!!e}var Ai=J(`<button type="button"> </button>`),ji=J(`<label> </label> <input/> <!>`,1),Mi=J(`<form><!> <button type="submit">Send answers</button></form>`),Ni=J(`<p>Grant the requested permissions for this turn only.</p><button type="button">Approve</button>`,1),Pi=J(`<button type="button">Approve</button><button type="button">Deny</button>`,1),Fi=J(`<article><p> </p> <!></article>`),Ii=J(`<section aria-labelledby="interactions-title"><h3 id="interactions-title">Codex needs your decision</h3> <!></section>`);function Li(e,t){Re(t,!0);var n=Er(),r=V(n),i=e=>{var n=Ii();Q(H(B(n),2),17,()=>t.interactions,e=>e.requestId,(e,n)=>{var r=Fi(),i=B(r),a=B(i,!0);P(i);var o=H(i,2),s=e=>{let r=I(()=>Di(K(n).payload));var i=Mi(),a=B(i);Q(a,17,()=>K(r),e=>e.id,(e,r)=>{var i=ji(),a=V(i),o=B(a);P(a);var s=H(a,2);si(s),Q(H(s,2),17,()=>K(r).options,e=>e.label,(e,n)=>{var i=Ai(),a=B(i,!0);P(i),U(()=>X(a,K(n).label)),q(`click`,i,()=>t.onanswer(K(r).id,K(n).label)),Y(e,i)}),U(()=>{$(a,`for`,`${K(n).requestId}-${K(r).id}`),X(o,`${K(r).header??``}: ${K(r).question??``}`),$(s,`id`,`${K(n).requestId}-${K(r).id}`),$(s,`type`,K(r).isSecret?`password`:`text`),ci(s,t.answers[K(r).id]??``)}),q(`input`,s,e=>t.onanswer(K(r).id,e.currentTarget.value)),Y(e,i)});var o=H(a,2);P(i),U(()=>o.disabled=!K(r).length),_r(`submit`,i,e=>{e.preventDefault(),t.onuserinput(K(n))}),Y(e,i)},c=e=>{var r=Ni();q(`click`,H(V(r)),()=>t.onpermission(K(n))),Y(e,r)},l=e=>{var r=Pi(),i=V(r),a=H(i);q(`click`,i,()=>t.ondecision(K(n).requestId,`accept`)),q(`click`,a,()=>t.ondecision(K(n).requestId,`decline`)),Y(e,r)};Z(o,e=>{K(n).kind===`userInput`?e(s):K(n).kind===`permissionsApproval`?e(c,1):e(l,-1)}),P(r),U(()=>X(a,K(n).kind)),Y(e,r)}),P(n),Y(e,n)};Z(r,e=>{t.interactions.length&&e(i)}),Y(e,n),ze()}vr([`input`,`click`]);function Ri(e){return e.key===`Enter`&&!e.shiftKey&&!e.ctrlKey&&!e.isComposing}var zi=J(`Ready <span class="block-cursor svelte-1264sfg" aria-hidden="true"></span>`,1),Bi=J(`<button type="button" class="svelte-1264sfg">Interrupt</button>`),Vi=J(`<form class="svelte-1264sfg"><p role="status" class="svelte-1264sfg"><!></p> <div class="prompt-row svelte-1264sfg"><textarea id="message" aria-label="Prompt" placeholder="Prompt" rows="1" required="" class="svelte-1264sfg"></textarea> <button type="submit" aria-label="Send prompt" class="svelte-1264sfg"><svg aria-hidden="true" viewBox="0 0 24 24" class="svelte-1264sfg"><path d="M9 10 5 14l4 4M5 14h8a6 6 0 0 0 6-6V6" class="svelte-1264sfg"></path></svg></button></div> <!></form>`);function Hi(e,t){Re(t,!0);function n(e){!Ri(e)||t.activeTurnId||t.starting||!t.message.trim()||(e.preventDefault(),t.onsend())}var r=Vi(),i=B(r),a=B(i),o=e=>{var t=zi();Ae(),Y(e,t)},s=e=>{var n=Tr();U(()=>X(n,t.status)),Y(e,n)};Z(a,e=>{t.status===`Ready.`?e(o):e(s,-1)}),P(i);var c=H(i,2),l=B(c);cn(l);var u=H(l,2);P(c);var d=H(c,2),f=e=>{var n=Bi();q(`click`,n,function(...e){t.oninterrupt?.apply(this,e)}),Y(e,n)};Z(d,e=>{t.activeTurnId&&e(f)}),P(r),U(e=>{$(i,`aria-label`,t.status),ci(l,t.message),u.disabled=e},[()=>!!t.activeTurnId||t.starting||!t.message.trim()]),_r(`submit`,r,e=>{e.preventDefault(),t.onsend()}),q(`input`,l,e=>t.onchange(e.currentTarget.value)),q(`keydown`,l,n),Y(e,r),ze()}vr([`input`,`keydown`,`click`]);function Ui(e){let t=[],n=[],r=()=>{n.length&&(t.push({id:n.at(-1).id,kind:`assistant`,commentary:n.map(e=>e.text).join(`
3
+
4
+ `),answer:null,...n.at(-1)?.occurredAt?{occurredAt:n.at(-1).occurredAt}:{}}),n=[])};for(let i of e){if(i.role===`user`){r(),t.push({id:i.id,kind:`user`,text:i.text,...i.occurredAt?{occurredAt:i.occurredAt}:{}});continue}if(i.phase===`commentary`){n.push(i);continue}t.push({id:i.id,kind:`assistant`,commentary:n.length?n.map(e=>e.text).join(`
5
+
6
+ `):null,answer:i.text,...i.occurredAt?{occurredAt:i.occurredAt}:{}}),n=[]}return r(),t}function Wi(e,t){if(e===void 0||t===void 0)return null;let n=Math.floor(Math.max(0,t-e)/6e4);if(n<1)return`moments later`;if(n<60)return`${n} minute${n===1?``:`s`} later`;let r=Math.floor(n/60);if(r<24)return`${r} hour${r===1?``:`s`} later`;let i=Math.floor(r/24);return`${i} day${i===1?``:`s`} later`}function Gi(e){return new Intl.DateTimeFormat(void 0,{hour:`2-digit`,minute:`2-digit`}).format(e)}function Ki(e){let t=[],n=/```[^\n]*\n([\s\S]*?)```/g,r=0;for(let i of e.matchAll(n)){let n=e.slice(r,i.index);n&&t.push(...qi(n)),t.push({kind:`code`,text:i[1]??``}),r=(i.index??0)+i[0].length}let i=e.slice(r);return(i||!t.length)&&t.push(...qi(i)),t}function qi(e){let t=[],n=e.split(`
7
+ `),r=0,i=e=>{let i=n.slice(r,e).join(`
8
+ `);i&&t.push({kind:`text`,parts:Xi(i)})};for(let e=0;e<n.length-1;e+=1){let a=Ji(n[e]??``),o=Ji(n[e+1]??``);if(!a||!o||a.length!==o.length||!o.every(Yi))continue;i(e),e+=2;let s=[];for(;e<n.length;){let t=Ji(n[e]??``);if(!t||t.length!==a.length)break;s.push(t),e+=1}t.push({kind:`table`,headers:a.map(Xi),rows:s.map(e=>e.map(Xi))}),r=e,--e}return i(n.length),t.length?t:[{kind:`text`,parts:Xi(e)}]}function Ji(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 Yi(e){return/^:?-{3,}:?$/.test(e)}function Xi(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 Zi=(e,t=d)=>{var n=Er();Q(V(n),17,t,Mr,(e,t)=>{var n=Er(),r=V(n),i=e=>{var n=$i(),r=B(n,!0);P(n),U(()=>{$(n,`href`,K(t).href),X(r,K(t).text)}),Y(e,n)},a=e=>{var n=ea(),r=B(n,!0);P(n),U(()=>X(r,K(t).text)),Y(e,n)},o=e=>{var n=Tr();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)},Qi=(e,t=d)=>{var n=Er();Q(V(n),17,()=>Ki(t()),Mr,(e,t)=>{var n=Er(),r=V(n),i=e=>{var n=ta(),r=B(n),i=B(r,!0);P(r),P(n),U(()=>X(i,K(t).text)),Y(e,n)},a=e=>{var n=aa(),r=B(n),i=B(r),a=B(i);Q(a,21,()=>K(t).headers,Mr,(e,t)=>{var n=na();Zi(B(n),()=>K(t)),P(n),Y(e,n)}),P(a),P(i);var o=H(i);Q(o,21,()=>K(t).rows,Mr,(e,t)=>{var n=ia();Q(n,21,()=>K(t),Mr,(e,t)=>{var n=ra();Zi(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=oa();Zi(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)},$i=J(`<a target="_blank" rel="noreferrer"> </a>`),ea=J(`<code class="svelte-1im954t"> </code>`),ta=J(`<pre class="svelte-1im954t"><code class="svelte-1im954t"> </code></pre>`),na=J(`<th scope="col" class="svelte-1im954t"><!></th>`),ra=J(`<td class="svelte-1im954t"><!></td>`),ia=J(`<tr></tr>`),aa=J(`<div class="table-scroll svelte-1im954t"><table class="svelte-1im954t"><thead><tr></tr></thead><tbody></tbody></table></div>`),oa=J(`<div><!></div>`),sa=J(`<time class="svelte-1im954t"> <!></time>`),ca=J(`<div class="entry-heading svelte-1im954t"><strong>prompt</strong> <!></div> <div class="entry-content svelte-1im954t"><!></div>`,1),la=J(`<button class="commentary-toggle svelte-1im954t" type="button"><span aria-hidden="true"> </span>commentary</button>`),ua=J(`<div class="commentary-content svelte-1im954t"><!></div>`),da=J(`<section class="answer-turn"><div class="entry-heading svelte-1im954t"><strong>answer</strong> <!> <!></div> <!> <div class="entry-content svelte-1im954t"><!></div></section>`),fa=J(`<details><summary>commentary</summary> <!></details>`),pa=J(`<li><!></li>`),ma=J(`<ol aria-label="Chat messages" class="svelte-1im954t"></ol>`);function ha(e,t){Re(t,!0);let n=I(()=>Ui(t.messages)),r=Gt({});var i=ma();Q(i,23,()=>K(n),e=>e.id,(e,t,i)=>{var a=pa(),o=B(a),s=e=>{var r=ca(),a=V(r),o=H(B(a),2),s=e=>{var r=sa(),a=B(r),o=H(a),s=e=>{var r=Tr();U(e=>X(r,`· ${e??``}`),[()=>Wi(K(n)[K(i)-1]?.occurredAt,K(t).occurredAt)]),Y(e,r)},c=I(()=>Wi(K(n)[K(i)-1]?.occurredAt,K(t).occurredAt));Z(o,e=>{K(c)&&e(s)}),P(r),U((e,t)=>{$(r,`datetime`,e),X(a,`${t??``} `)},[()=>new Date(K(t).occurredAt).toISOString(),()=>Gi(K(t).occurredAt)]),Y(e,r)};Z(o,e=>{K(t).occurredAt&&e(s)}),P(a);var c=H(a,2);Qi(B(c),()=>K(t).text),P(c),Y(e,r)},c=e=>{var a=da(),o=B(a),s=H(B(o),2),c=e=>{var n=la(),i=B(n),a=B(i,!0);P(i),Ae(),P(n),U(e=>{$(n,`aria-expanded`,e),$(n,`aria-controls`,`commentary-${K(t).id}`),X(a,r[K(t).id]?`⌄`:`>`)},[()=>!!r[K(t).id]]),q(`click`,n,()=>r[K(t).id]=!r[K(t).id]),Y(e,n)};Z(s,e=>{K(t).commentary&&e(c)});var l=H(s,2),u=e=>{var r=sa(),a=B(r),o=H(a),s=e=>{var r=Tr();U(e=>X(r,`· ${e??``}`),[()=>Wi(K(n)[K(i)-1]?.occurredAt,K(t).occurredAt)]),Y(e,r)},c=I(()=>Wi(K(n)[K(i)-1]?.occurredAt,K(t).occurredAt));Z(o,e=>{K(c)&&e(s)}),P(r),U((e,t)=>{$(r,`datetime`,e),X(a,`${t??``} `)},[()=>new Date(K(t).occurredAt).toISOString(),()=>Gi(K(t).occurredAt)]),Y(e,r)};Z(l,e=>{K(t).occurredAt&&e(u)}),P(o);var d=H(o,2),f=e=>{var n=ua();Qi(B(n),()=>K(t).commentary),P(n),U(()=>$(n,`id`,`commentary-${K(t).id}`)),Y(e,n)};Z(d,e=>{K(t).commentary&&r[K(t).id]&&e(f)});var p=H(d,2);Qi(B(p),()=>K(t).answer),P(p),P(a),Y(e,a)},l=e=>{var n=fa();Qi(H(B(n),2),()=>K(t).commentary),P(n),Y(e,n)};Z(o,e=>{K(t).kind===`user`?e(s):K(t).answer?e(c,1):K(t).commentary&&e(l,2)}),P(a),U(()=>Xr(a,1,Wr(K(t).kind===`user`?`prompt-turn`:`answer-item`),`svelte-1im954t`)),Y(e,a)}),P(i),Y(e,i),ze()}vr([`click`]);var ga=[150,300,600];function _a(e){return new Promise(t=>setTimeout(t,e))}function va(e){return e.status===502||e.status===503||e.status===504}async function ya(e=fetch){for(let t=0;t<=ga.length;t+=1){let n;try{n=await e(`/api/bootstrap`)}catch(e){if(e instanceof Error&&e.name===`AbortError`)throw e;if(t===ga.length)throw Error(`BOOTSTRAP_FAILED`);await _a(ga[t]);continue}if(n.ok)return n.json();if(!va(n)||t===ga.length)throw Error(`BOOTSTRAP_FAILED`);await _a(ga[t])}throw Error(`BOOTSTRAP_FAILED`)}function ba(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(`
9
+ `);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(`
10
+ `)}:e.kind===`tool`&&typeof e.name==`string`?{id:e.id,label:`Tool · ${String(e.status??`unknown`)}`,detail:e.name}:null}var xa=`gestalt-mobile`,Sa=2,Ca=[`settings`,`drafts`,`cursors`,`messages`];function wa(e){return new Promise((t,n)=>{let r=e.open(xa,Sa);r.onupgradeneeded=()=>{for(let e of Ca)r.result.objectStoreNames.contains(e)||r.result.createObjectStore(e)},r.onsuccess=()=>t(r.result),r.onerror=()=>n(r.error)})}function Ta(e,t,n){return Oa(e.transaction(t,`readonly`).objectStore(t).get(n))}function Ea(e,t,n,r){return Oa(e.transaction(t,`readwrite`).objectStore(t).put(r,n))}function Da(e,t,n){return Oa(e.transaction(t,`readwrite`).objectStore(t).delete(n))}function Oa(e){return new Promise((t,n)=>{e.onsuccess=()=>t(e.result),e.onerror=()=>n(e.error)})}var ka=`messages`;function Aa(e){return e.slice(-200)}function ja(e=globalThis.indexedDB){if(!e)return{read:async()=>[],write:async()=>{}};let t=wa(e);return{async read(e){try{return await Ta(await t,ka,e)??[]}catch{return[]}},async write(e,n){try{await Ea(await t,ka,e,Aa(n))}catch{}}}}var Ma={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 Na(e,t){let n=e instanceof Error?e.message:``,r=Object.hasOwn(Ma,n)?n:t;return{code:r,message:Ma[r]}}var Pa={error:null,success:5e3,info:7e3};function Fa(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=Pa[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 Ia=J(`<small class="svelte-1a0rutm"> </small>`),La=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>`),Ra=J(`<div class="toast-viewport svelte-1a0rutm" aria-label="Notifications"></div>`);function za(e,t){Re(t,!0);let n=R([]),r=I(()=>K(n).slice(-3));yi(()=>t.queue.subscribe(e=>z(n,e)));var i=Ra();Q(i,21,()=>K(r),e=>e.id,(e,n)=>{var r=La();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=Ia(),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=Xr(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`)}),_r(`pointerenter`,r,()=>t.queue.pause(K(n).id,`hover`)),_r(`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),ze()}vr([`focusin`,`focusout`,`click`]);var Ba=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 Va(e,t){Re(t,!0);let n=Fa();yi(()=>{t.variant===`stacked`&&n.enqueue({kind:`success`,message:`Cloned.`}),n.enqueue({kind:`error`,code:`GIT_CLONE_FAILED`,message:`Clone failed.`})});var r=Ba();za(H(V(r),4),{get queue(){return n}}),Y(e,r),ze()}var Ha={sessionBase:()=>!0,gitRepositoryTarget:e=>e.isGitRepository,cloneDestination:e=>!e.isGitRepository};function Ua(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 Wa(e,t){let n=new Set(e);return t.isGitRepository||(n.has(t.id)?n.delete(t.id):n.add(t.id)),n}function Ga(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 Ka(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 qa(e,t){for(let n of e){if(n.id===t)return n;let e=qa(n.children,t);if(e)return e}}function Ja(e,t,n,r){if(e){let i=qa(n,e);if(i&&r(i))return i.id;let a=Ka(t,e);for(let e of a.toReversed()){let t=qa(n,e);if(t&&r(t))return t.id}}return Ya(n).find(r)?.id??null}function Ya(e){let t=[],n=e=>{t.push(e),e.children.forEach(n)};return e.forEach(n),t}var Xa=J(`<button class="disclosure svelte-6z3q4v" type="button" tabindex="-1"><span aria-hidden="true"> </span></button>`),Za=J(`<span class="disclosure-spacer svelte-6z3q4v" aria-hidden="true"></span>`),Qa=J(`<span class="repository-badge svelte-6z3q4v">Git</span>`),$a=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>`),eo=J(`<div class="filesystem-tree svelte-6z3q4v" role="tree"></div>`);function to(e,t){Re(t,!0);let n=vi(t,`isSelectable`,3,()=>!0),r=R(null),i=Gt({}),a=I(()=>Ga(t.roots,t.expandedIds)),o=I(()=>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){z(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(Wa(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=eo();Q(m,23,()=>K(a),e=>e.node.id,(e,a,l)=>{let u=I(()=>K(a).node),m=I(()=>s(K(u)));var h=$a();let g;var _=B(h),v=e=>{var n=Xa(),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,Za())};Z(_,e=>{K(m)?e(v):e(y,-1)});var b=H(_,2);let x;var S=B(b),C=B(S,!0);P(S);var w=H(S,2),T=B(w),E=B(T,!0);P(T);var D=H(T,2),ee=B(D,!0);P(D),P(w);var O=H(w,2),k=e=>{Y(e,Qa())};Z(O,e=>{K(u).isGitRepository&&e(k)}),P(b),_i(b,(e,t)=>i[t.id]=e,e=>i?.[e.id],()=>[K(u)]),P(h),U((e,n,r,i,s)=>{g=Qr(h,``,g,e),x=Xr(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(C,t.selectedId===K(u).id?`✓`:``),X(E,K(u).name),X(ee,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)]),_r(`focus`,b,()=>z(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),ze()}vr([`click`,`keydown`]);var no=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 ro(e,t){Re(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=R(Gt(new Set([`.`,`dyne`,`dyne/mobile-applications`]))),a=R(null),o=I(()=>t.context===`sessions`?`dyne/mobile-applications`:`dyne/mobile-applications/gestalt-mobile`),s=I(()=>K(a)??K(o));var c=no(),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=I(()=>t.context===`sessions`?`Session base`:`Git repository`),n=I(()=>t.context===`sessions`?Ha.sessionBase:Ha.gitRepositoryTarget);to(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=>z(i,e,!0),onselect:e=>z(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),ze()}function io(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 ao(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>`),so=J(`<option> </option>`),co=J(`<section aria-label="Confirm push"><p> </p> <button type="button">Confirm push</button> <button type="button">Cancel</button></section>`),lo=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>`),uo=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>`),fo=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>`),mo=J(`<p role="status">Loading repository status…</p>`),ho=J(`<p><strong> </strong> is available as a Clone destination. Select a Git
11
+ 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),go=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),_o=J(`<p role="alert"> </p>`),vo=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 yo(e,t){Re(t,!0);let n=R(``),r=I(()=>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=vo(),o=H(B(a),2),s=H(B(o),2);{let e=I(()=>t.selectedWorkspace?.id??null);to(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);si(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=Er(),r=V(n),i=e=>{var n=Er(),r=V(n),i=e=>{var n=fo(),r=V(n),i=B(r),a=H(B(i),2);Q(a,20,()=>t.summary.branches??[],e=>e,(e,t)=>{var n=so(),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;ei(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=co(),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),C=e=>{var n=uo(),r=H(B(n),2);Q(r,21,()=>t.summary.commits,e=>e.hash,(e,t)=>{var n=lo(),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)},[()=>ao(K(t).authoredAt)]),Y(e,n)}),P(r),P(n),Y(e,n)};Z(S,e=>{t.summary.commits.length&&e(C)}),U(e=>{a.disabled=t.refreshing||t.checkingOut||!t.summary.branches?.length,o!==(o=t.summary.branch??``)&&(a.value=(a.__value=t.summary.branch??``)??``,$r(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`}`)},[()=>io(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,mo())};Z(r,e=>{t.summary?e(i):t.error||e(a,1)}),Y(e,n)},S=e=>{var n=ho(),r=V(n),i=B(r),a=B(i,!0);P(i),Ae(),P(r),Ae(2),U(()=>X(a,t.selectedWorkspace.name)),Y(e,n)},C=e=>{var t=go();Ae(2),Y(e,t)};Z(b,e=>{t.selectedWorkspace?.isGitRepository?e(x):t.selectedWorkspace?e(S,1):e(C,-1)});var w=H(b,2),T=e=>{var n=_o(),r=B(n,!0);P(n),U(()=>X(r,t.error)),Y(e,n)};Z(w,e=>{t.error&&e(T)}),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`)}),_r(`submit`,c,i),pi(m,()=>K(n),e=>z(n,e)),Y(e,a),ze()}vr([`change`,`click`]);function bo(e,t,n,r,i){let a=new Set(xo(e).filter(e=>e.isGitRepository).map(e=>e.id)),o=qa(t,n),s=o?xo(o.children).filter(e=>e.isGitRepository&&!a.has(e.id)):[],c=So(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&&Ka(t,u).forEach(e=>d.add(e)),!l&&o&&d.add(o.id),{selectedId:u,expandedIds:d}}function xo(e){let t=[],n=e=>{t.push(e),e.children.forEach(n)};return e.forEach(n),t}function So(e){return(e.trim().replace(/[?#].*$/,``).replace(/\/+$/,``).split(/[/:]/).at(-1)??``).replace(/\.git$/i,``)}function Co(e,t,n,r){return[...e,{id:t,role:`user`,text:n,...r?{occurredAt:r}:{},complete:!0}]}function wo(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 To(e,t){return e.map(e=>e.id===t?{...e,complete:!0}:e)}function Eo(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 Do(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){let r=await e(n);if(!r.ok)throw await t(r);return r.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}),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`),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 Oo(e,t=globalThis.navigator?.clipboard,n=Ao){if(!t)return ko(e,n);try{return await t.writeText(e),!0}catch{return ko(e,n)}}function ko(e,t){try{return t(e)}catch{return!1}}function Ao(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 jo(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 Mo(e,t,n,r=()=>{}){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(t.event.type===`agentMessageDelta`){let e=t.event.payload.text;e&&n(e)}return t.event.sequence}function No(e){return e?`Codex is working…`:`Ready.`}function Po(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 Fo=`settings`,Io=`drafts`,Lo=`cursors`,Ro=`selected-session`;function zo(e=globalThis.indexedDB){if(!e)return Bo;let t=wa(e);return{async readSelectedSession(){try{return await Ta(await t,Fo,Ro)??null}catch{return null}},async saveSelectedSession(e){try{let n=await t;e?await Ea(n,Fo,Ro,e):await Da(n,Fo,Ro)}catch{}},async readDraft(e){try{return await Ta(await t,Io,e)??``}catch{return``}},async saveDraft(e,n){try{await Ea(await t,Io,e,n)}catch{}},async readCursor(e){try{let n=await Ta(await t,Lo,e);return typeof n==`number`&&Number.isSafeInteger(n)&&n>=0?n:0}catch{return 0}},async saveCursor(e,n){try{await Ea(await t,Lo,e,n)}catch{}}}}var Bo={readSelectedSession:async()=>null,saveSelectedSession:async()=>{},readDraft:async()=>``,saveDraft:async()=>{},readCursor:async()=>0,saveCursor:async()=>{}};function Vo(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 Ho(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 Uo(e){let t=/^\/home\/[^/]+/.exec(e)?.[0];if(!t)return e;let n=e.slice(t.length);return n?`~${n}`:`~/`}var Wo=J(`<time> </time>`),Go=J(`<div> </div>`),Ko=J(`<span class="profile-badge svelte-hxb22h"> </span>`),qo=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>`),Jo=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>`),Yo=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>`),Xo=J(`<ul class="session-list svelte-hxb22h" aria-label="Saved sessions"></ul>`),Zo=J(`<p>No saved sessions yet.</p>`),Qo=J(`<option> </option>`),$o=J(`<p class="skills-profile-error svelte-hxb22h" role="alert"> </p>`),es=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>`),ts=J(`<ul class="session-list recent-session-list svelte-hxb22h" aria-label="Recent sessions"></ul>`),ns=J(`<p>No other recent Codex sessions found.</p>`),rs=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 is(e,t){Re(t,!0);let n=vi(t,`models`,19,()=>[]),r=vi(t,`selectedModel`,3,``),i=vi(t,`onmodelchange`,3,()=>{}),a=I(()=>t.sessions.filter(e=>e.state===`ready`||e.state===`turnActive`)),o=I(()=>t.sessions.filter(e=>e.state!==`ready`&&e.state!==`turnActive`)),s=I(()=>t.recentSessions.filter(e=>!K(a).some(t=>t.threadId===e.id))),c=I(()=>qa(t.workspaceTree,t.workspaceId));var l=rs(),u=H(B(l),2),d=e=>{var n=Jo(),r=H(B(n),2);Q(r,21,()=>K(a),e=>e.id,(e,n)=>{let r=I(()=>Ho(K(n)));var i=qo();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=Wo(),n=B(t,!0);P(t),U((e,r)=>{$(t,`datetime`,e),X(n,r)},[()=>new Date(K(r).updatedAt).toISOString(),()=>Vo(K(r).updatedAt)]),Y(e,t)},f=e=>{var t=Go(),n=B(t,!0);P(t),U(e=>X(n,e),[()=>Vo(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=Ko(),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=Ko(),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=Ko(),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=Xr(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)},[()=>Uo(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=Xo();Q(n,21,()=>K(o),e=>e.id,(e,n)=>{let r=I(()=>Ho(K(n)));var i=Yo(),a=B(i),o=B(a),s=H(o,2);P(a);var c=H(a,2),l=B(c),u=e=>{var t=Wo(),n=B(t,!0);P(t),U((e,r)=>{$(t,`datetime`,e),X(n,r)},[()=>new Date(K(r).updatedAt).toISOString(),()=>Vo(K(r).updatedAt)]),Y(e,t)},d=e=>{var t=Go(),n=B(t,!0);P(t),U(e=>X(n,e),[()=>Vo(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=Ko(),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=Ko(),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=Ko(),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),[()=>Uo(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,Zo())};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=I(()=>K(c)?.id??null);to(v,{get roots(){return t.workspaceTree},get expandedIds(){return t.expandedIds},get selectedId(){return K(e)},get isSelectable(){return Ha.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=Qo(),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 C;ei(x);var w=H(x,2),T=B(w);T.value=T.__value=`workspace-write`;var E=H(T);E.value=E.__value=`read-only`;var D=H(E);D.value=D.__value=`danger-full-access`,P(w);var ee;ei(w);var O=H(w,2),k=B(O);k.value=k.__value=`untrusted`;var te=H(k);te.value=te.__value=`on-request`;var ne=H(te);ne.value=ne.__value=`never`,P(O);var re;ei(O),P(b);var ie=H(b,2),ae=e=>{var n=$o(),r=B(n,!0);P(n),U(()=>X(r,t.skillProfileError)),Y(e,n)};Z(ie,e=>{t.skillProfileError&&e(ae)});var oe=H(ie,2),se=B(oe),ce=H(se,2),le=H(B(ce),2);Q(le,20,n,e=>e,(e,t)=>{var n=Qo(),r=B(n,!0);P(n);var i={};U(()=>{X(r,t),i!==(i=t)&&(n.value=(n.__value=t)??``)}),Y(e,n)}),P(le);var A;ei(le),P(ce);var ue=H(ce,2),de=B(ue,!0);P(ue),P(oe),P(y),P(h);var fe=H(h,2),pe=H(B(fe),2),me=e=>{var n=ts();Q(n,21,()=>K(s),e=>e.id,(e,n)=>{var r=es(),i=B(r),a=B(i),o=e=>{var t=Wo(),r=B(t,!0);P(t),U((e,n)=>{$(t,`datetime`,e),X(r,n)},[()=>new Date(K(n).recencyAt*1e3).toISOString(),()=>Vo(K(n).recencyAt*1e3)]),Y(e,t)},s=e=>{var t=Go(),n=B(t,!0);P(t),U(e=>X(n,e),[()=>Vo(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),[()=>Uo(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)},he=e=>{Y(e,ns())};Z(pe,e=>{K(s).length?e(me):e(he,-1)}),P(fe),P(l),U(()=>{C!==(C=t.selectedSkillProfile)&&(x.value=(x.__value=t.selectedSkillProfile)??``,$r(x,t.selectedSkillProfile)),ee!==(ee=t.sandbox)&&(w.value=(w.__value=t.sandbox)??``,$r(w,t.sandbox)),re!==(re=t.approvalPolicy)&&(O.value=(O.__value=t.approvalPolicy)??``,$r(O,t.approvalPolicy)),le.disabled=n().length===0,A!==(A=r())&&(le.value=(le.__value=r())??``,$r(le,r())),ue.disabled=!K(c)||t.startingSession,X(de,t.startingSession?`Creating…`:`Create session`)}),_r(`submit`,h,e=>{e.preventDefault(),t.onstart()}),q(`change`,x,e=>t.onskillprofilechange(e.currentTarget.value)),q(`change`,w,e=>t.onsandboxchange(e.currentTarget.value)),q(`change`,O,e=>t.onapprovalpolicychange(e.currentTarget.value)),q(`click`,se,e=>t.onmanageprofiles(e.currentTarget)),q(`change`,le,e=>i()(e.currentTarget.value)),Y(e,l),ze()}vr([`click`,`change`]);function as(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 os(e,t,n=!0){let r=n?[`sessions`,`git`,`chat`]:[`sessions`,`git`];return r[(r.indexOf(e)+t+r.length)%r.length]}var ss=J(`<nav class="bottom-navigation" aria-label="Primary"><button>Sess<wbr/>ions</button> <button>Git</button> <button>Chat</button></nav>`);function cs(e,t){Re(t,!0);let n={};function r(e){let r=e.key===`ArrowRight`?1:e.key===`ArrowLeft`?-1:null;if(r===null)return;e.preventDefault();let i=os(t.activeTab,r,t.chatEnabled);t.onselect(i),n[i]?.focus()}var i=ss(),a=B(i);_i(a,e=>n.sessions=e,()=>n?.sessions);var o=H(a,2);_i(o,e=>n.git=e,()=>n?.git);var s=H(o,2);_i(s,e=>n.chat=e,()=>n?.chat),P(i),U(()=>{$(a,`aria-pressed`,t.activeTab===`sessions`),$(o,`aria-pressed`,t.activeTab===`git`),$(s,`aria-pressed`,t.activeTab===`chat`),s.disabled=!t.chatEnabled}),q(`keydown`,a,r),q(`click`,a,()=>t.onselect(`sessions`)),q(`keydown`,o,r),q(`click`,o,()=>t.onselect(`git`)),q(`keydown`,s,r),q(`click`,s,()=>t.onselect(`chat`)),Y(e,i),ze()}vr([`keydown`,`click`]);var ls=J(`<option> </option>`),us=J(`<p id="skills-status" aria-live="polite">Loading skills…</p>`),ds=J(`<p id="skills-status">No skills were discovered for this workspace and Codex profile.</p>`),fs=J(`<p id="skills-status" class="notice svelte-dg6sjj" role="status"> </p>`),ps=J(`<p id="skills-status" class="error svelte-dg6sjj" role="alert"> </p>`),ms=J(`<p id="skills-status" class="error svelte-dg6sjj" role="alert" tabindex="-1"> </p>`),hs=J(`<p id="skills-status" role="status">Profile saved.</p>`),gs=J(`<p id="skills-status" role="status">Profile deleted.</p>`),_s=J(`<p class="svelte-dg6sjj"> </p>`),vs=J(`<li> </li>`),ys=J(`<dt class="svelte-dg6sjj">Tool dependencies</dt> <dd class="svelte-dg6sjj"><ul class="svelte-dg6sjj"></ul></dd>`,1),bs=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>`),xs=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),Ss=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 Cs(e,t){Re(t,!0);let n=vi(t,`skillsState`,7),r=vi(t,`heading`,3,`Manage skill profiles`),i=R(0),a=R(null),o=R(null),s=R(null),c=R(null),l=R(`__new__`),u=I(()=>(K(i),n())),d=I(()=>K(u).profiles.filter(e=>!(`error`in e)));function f(){n(Object.assign(Object.create(Object.getPrototypeOf(n())),n())),z(i,K(i)+1)}async function p(){await t.onrefresh(),f()}function m(e){z(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`&&(z(l,K(u).selectedProfileName,!0),t.onprofileschange()),K(u).status.kind===`save-failed`&&(await sr(),K(a)?.focus())}function g(){K(c)?.showModal()}async function _(){K(c)?.close(),await K(u).deleteSelectedProfile(),f(),K(u).status.kind===`deleted`&&(z(l,`__new__`),t.onprofileschange()),await sr(),K(o)?.focus()}async function v(){K(c)?.close(),await sr(),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=Ss(),C=B(S),w=B(C,!0);P(C);var T=H(C,4),E=B(T),D=H(B(E),2),ee=B(D);ee.value=ee.__value=`__new__`;var O=H(ee);O.value=O.__value=`__default__`,Q(H(O),17,()=>K(d),e=>e.name,(e,t)=>{var n=ls(),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(D),_i(D,e=>z(o,e),()=>K(o));var k=H(D,4);si(k),P(E);var te=H(E,2),ne=B(te,!0);P(te);var re=H(te,2),ie=B(re);_i(ie,e=>z(s,e),()=>K(s));var ae=H(ie,2),oe=B(ae,!0);P(ae),P(re),P(T);var se=H(T,2),ce=H(B(se),2),le=B(ce);P(ce);var A=H(ce,2),ue=B(A),de=H(ue,2);P(A),P(se),_i(se,e=>z(c,e),()=>K(c));var fe=H(se,2),pe=e=>{Y(e,us())},me=e=>{Y(e,ds())},he=e=>{var t=fs(),n=B(t);P(t),U(()=>X(n,`Discovery warning: ${K(u).status.message??``}`)),Y(e,t)},ge=e=>{var t=ps(),n=B(t,!0);P(t),U(()=>X(n,K(u).status.message)),Y(e,t)},_e=e=>{var t=ms(),n=B(t,!0);P(t),_i(t,e=>z(a,e),()=>K(a)),U(()=>X(n,K(u).status.message)),Y(e,t)},ve=e=>{Y(e,hs())},ye=e=>{Y(e,gs())},be=e=>{var t=ps(),n=B(t,!0);P(t),U(()=>X(n,K(u).status.message)),Y(e,t)};Z(fe,e=>{K(u).status.kind===`loading`?e(pe):K(u).status.kind===`empty`?e(me,1):K(u).status.kind===`warning`?e(he,2):K(u).status.kind===`invalid-profile`||K(u).status.kind===`error`?e(ge,3):K(u).status.kind===`save-failed`?e(_e,4):K(u).status.kind===`saved`?e(ve,5):K(u).status.kind===`deleted`?e(ye,6):K(u).status.kind===`delete-failed`&&e(be,7)});var xe=H(fe,2),j=e=>{var t=xs(),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=bs();let r;var i=B(n),a=B(i);si(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=_s(),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=_s(),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 C=H(v,2),w=e=>{var n=ys(),r=H(V(n),2),i=B(r);Q(i,21,()=>K(t).dependencies.tools,e=>`${e.type}:${e.value}`,(e,t)=>{var n=vs(),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(C,e=>{K(t).dependencies?.tools?.length&&e(w)}),P(_),P(d),P(n),U((e,o)=>{r=Qr(n,``,r,e),$(i,`for`,`skill-${K(t).path}`),$(a,`id`,`skill-${K(t).path}`),li(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)]),_r(`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(xe,e=>{K(u).skills.length>0&&e(j)}),P(S),U(()=>{X(w,r()),ci(k,K(u).saveAsName),X(ne,K(u).saveIntent===`replace`?`Saved the selected profile.`:`Creating a new saved profile.`),ie.disabled=!K(u).selectedProfileName||K(u).status.kind===`deleting`,ae.disabled=K(u).status.kind===`saving`,X(oe,K(u).status.kind===`saving`?`Saving profile…`:`Save profile`),X(le,`Delete ${K(u).selectedProfileName??``}? Existing sessions keep their saved skill set.`)}),_r(`submit`,T,h),q(`change`,D,m),ti(D,()=>K(l),e=>z(l,e)),q(`input`,k,e=>{K(u).saveAsName=e.currentTarget.value,f()}),q(`click`,ie,g),q(`click`,ue,()=>void v()),q(`click`,de,()=>void _()),Y(e,S),ze()}vr([`change`,`input`,`click`]);var ws=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:Ts(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:Ts(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:Ts(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:Ts(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 Ts(e){return e instanceof Error?e.message:`Unknown relay error.`}var Es=J(`<main class="evidence-mode svelte-y74n0s"><!></main>`),Ds=J(`<!> <!> <!> <!>`,1),Os=J(`<p>Start a session from the Sessions tab to chat with Codex.</p>`),ks=J(`<section class="chat-view svelte-y74n0s" aria-labelledby="chat-title"><h2 id="chat-title" class="visually-hidden">Chat</h2> <!></section>`),As=J(`<p>Loading skill profiles…</p>`),js=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>`),Ms=J(`<main><!> <!> <!></main>`),Ns=J(`<!> <!>`,1);function Ps(e,t){Re(t,!0);let n=R(`sessions`),r=R(`Loading relay…`),i=R(`system`),a=R(Gt([])),o=`gpt-5.6-terra`,s=R([o]),c=R(o),l=R([]),u=R(null),d=R(`list`),f=R([]),p=R(``),m=R(``),h=R(null),g=R(``),_=R(Gt(new Set)),v=R(null),y=R(Gt([])),b=I(()=>K(y).some(e=>e.id===K(v)&&(e.state===`ready`||e.state===`turnActive`))),x=R(Gt([])),S=R(`workspace-write`),C=R(`on-request`),w=R(null),T=R(!1),E=R(``),D=R(null),ee=R(!1),O=R(Gt([])),k=R(Gt([])),te=R(0),ne=null,re=null,ie=null,ae=null,oe=!1,se=0,ce=0,le=R(null),A=R(null),ue=R(Gt(new Set)),de=R(!1),fe=R(!1),pe=R(!1),me=R(!1),he=R(null),ge=R(null),_e=R(null),ve=R(null),ye=0,be=R(Gt([])),xe=Gt({}),j=Do(),Se=ja(),Ce=zo(),we=Fa(),Te=new URLSearchParams(location.search).get(`tree-evidence`),Ee=new URLSearchParams(location.search).get(`toast-evidence`);yi(async()=>{let e=localStorage.getItem(`gestalt-mobile.theme`);if((e===`light`||e===`dark`||e===`system`)&&M(e),!(Te===`sessions`||Te===`git`||Ee===`error`||Ee===`stacked`)){ae=setInterval(Be,2e3),document.addEventListener(`visibilitychange`,Be),window.addEventListener(`focus`,Be);try{let e=await ya();z(g,Ja(K(g)||null,K(a),e.workspaces,Ha.sessionBase)??``,!0),z(a,e.workspaces,!0),z(l,e.profiles),z(s,[...new Set([o,...e.models??[]])]),await Ue(),z(_,Ua(K(a)),!0),z(ue,Ua(K(a)),!0);let t=await Ce.readSelectedSession();z(v,e.sessions.some(e=>e.id===t)?t:e.sessions[0]?.id??null,!0),K(v)&&z(te,await Ce.readCursor(K(v)),!0),K(v)&&z(E,await Ce.readDraft(K(v)),!0),K(v)&&z(O,await Se.read(K(v)),!0),z(y,e.sessions,!0),z(be,K(y).find(e=>e.id===K(v))?.pendingInteractions??[],!0),Oe(),z(D,K(y).find(e=>e.id===K(v))?.activeTurnId??null,!0),z(r,K(v)?No(K(D)):`Choose a workspace and start a session.`,!0),K(v)&&(await Le(K(v)),ot(K(v)))}catch(e){z(r,at(e,`RELAY_UNAVAILABLE`),!0)}}});function M(e){z(i,e,!0),e===`system`?document.documentElement.removeAttribute(`data-theme`):document.documentElement.dataset.theme=e,localStorage.setItem(`gestalt-mobile.theme`,e)}bi(()=>{re&&clearTimeout(re),ie&&clearTimeout(ie),ae&&clearInterval(ae),document.removeEventListener(`visibilitychange`,Be),window.removeEventListener(`focus`,Be),ne?.close()});async function De(){if(!K(g)||K(T))return;let e=as({workspaceId:K(g),profile:`default`,profileState:`ok`});if(e.profile){z(r,e.profile,!0);return}z(w,K(w)??jo(),!0),z(T,!0),z(r,`Starting session…`);try{let e=await j.startSession(K(g),{sandbox:K(S),approvalPolicy:K(C),model:K(c),skillProfile:K(p)||void 0},K(w));z(w,null),z(v,e.id,!0),z(D,null),Ce.saveSelectedSession(e.id),await N(),z(O,[],!0),rt(e.id),z(k,[],!0),z(te,0),z(E,await Ce.readDraft(e.id),!0),ot(e.id),z(n,`chat`),Ke(),z(r,`Session started.`)}catch(e){z(r,at(e,`SESSION_START_FAILED`),!0)}finally{z(T,!1)}}async function N(){z(y,await j.listSessions(),!0)}async function Oe(){try{z(x,await j.listRecentSessions(),!0)}catch{z(x,[],!0)}}async function ke(){try{await Promise.all([N(),Oe()])}catch(e){z(r,at(e,`SESSION_REFRESH_FAILED`),!0)}}async function Ae(e){z(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);z(y,K(y).map(n=>n.id===e?t:n),!0)}z(v,e,!0),Ce.saveSelectedSession(e),z(O,await Se.read(e),!0),z(k,[],!0),z(te,0),z(E,await Ce.readDraft(e),!0),z(D,K(y).find(t=>t.id===e)?.activeTurnId??null,!0),z(be,K(y).find(t=>t.id===e)?.pendingInteractions??[],!0),z(n,`chat`),Ke(),await Le(e),ot(e)}catch(e){z(r,`Could not open session: ${it(e)}`)}}async function je(e){z(r,`Opening recent session…`);try{let t=await j.openRecentSession(e.id,e.cwd);await ke(),await Ae(t.id)}catch(e){z(r,`Could not open recent session: ${it(e)}`)}}async function Me(e){z(r,`Closing session…`);try{await j.releaseSession(e),K(v)===e&&(z(v,null),z(n,`sessions`),z(D,null),z(be,[],!0),Ce.saveSelectedSession(null),re&&clearTimeout(re),re=null,ne?.close(),ne=null),await ke(),z(r,`Session closed.`)}catch(e){z(r,`Could not close session: ${it(e)}`)}}async function Ne(e){try{await j.forgetSession(e),K(v)===e&&(ne?.close(),z(v,null),z(D,null),Ce.saveSelectedSession(null)),await ke()}catch(e){z(r,`Could not forget session: ${it(e)}`)}}async function Pe(e){z(r,await Oo(e)?`Resume command copied.`:`Could not copy the resume command.`,!0)}async function Fe(){if(!K(v)||!K(E).trim()||K(D)||K(ee))return;let e=K(E).trim();z(ee,!0);try{let t=await j.startTurn(K(v),e);z(D,t.activeTurnId??null,!0),z(O,Co(K(O),`user-${t.activeTurnId??Date.now().toString()}`,e,Date.now()),!0),rt(K(v)),z(E,``),Ce.saveDraft(K(v),``),z(r,No(K(D)),!0)}catch(e){z(r,at(e,`MESSAGE_SEND_FAILED`),!0)}finally{z(ee,!1)}}async function Ie(){if(!(!K(v)||!K(D)))try{await j.interruptTurn(K(v),K(D)),z(D,null),z(r,`Codex turn interrupted.`)}catch(e){z(r,`Could not interrupt Codex: ${it(e)}`)}}async function Le(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(O).filter(e=>!e.complete);z(O,[...i,...a],!0),rt(e);let o=n.items.flatMap(e=>{let t=ba(e);return t?[t]:[]});z(k,[...o,...K(k).filter(e=>!o.some(t=>t.id===e.id))],!0),`activeTurnId`in n&&(z(D,n.activeTurnId??null,!0),z(y,K(y).map(t=>t.id===e?{...t,activeTurnId:K(D)}:t),!0)),z(te,Math.max(K(te),n.currentSequence??t),!0),Ce.saveCursor(e,K(te)),z(r,No(K(D)),!0)}function Be(){K(n)!==`chat`||!K(v)||document.visibilityState!==`visible`||oe||(oe=!0,Le(K(v)).catch(()=>void 0).finally(()=>{oe=!1}))}function Ve(e){e===`chat`&&!K(b)||(z(n,e,!0),e===`chat`&&(Be(),Ke()),e===`git`&&K(A)&&qe(K(A)),e===`sessions`&&(K(d)===`profile-manager`&&Ge(!1),ke()))}async function He(e,t){let n=new ws(j);await n.load(e,t),z(u,n,!0)}async function Ue(){try{let e=await j.listSkillProfiles();z(f,e.profiles.filter(e=>!(`error`in e)));let t=e.profiles.find(e=>`error`in e);z(m,t&&`error`in t?t.error.message:``,!0),K(f).some(e=>e.name===K(p))||z(p,``)}catch(e){z(f,[]),z(m,e instanceof Error?e.message:`Unable to load saved skill profiles.`,!0)}}async function We(e){let t=K(g)||K(a)[0]?.id||``,n=K(l).find(e=>e.state===`ok`)?.name??``;if(!t||!n){z(r,`Choose a workspace and available Codex profile before managing skill profiles.`);return}await He(t,n),z(d,`profile-manager`),await sr(),K(h)?.focus()}async function Ge(e=!0){z(d,`list`),await sr(),e&&document.getElementById(`manage-skill-profiles`)?.focus()}function Ke(){requestAnimationFrame(()=>window.scrollTo({top:document.documentElement.scrollHeight}))}async function qe(e=K(A)){let t=e?qa(K(a),e):void 0;if(!e||!t?.isGitRepository){ye+=1,z(le,null);return}let n=++ye;try{let t=await j.getGitSummary(e);n===ye&&K(A)===e&&z(le,t,!0)}catch(t){if(n!==ye||K(A)!==e)return;z(le,null),z(he,at(t,`GIT_SUMMARY_FAILED`),!0)}}function F(e){z(A,e.id,!0),z(he,null),z(le,null),z(de,!1),e.isGitRepository?qe(e.id):(ye+=1,z(le,null))}async function Je(){let e=K(A);if(!(!e||!qa(K(a),e)?.isGitRepository)){z(_e,K(_e)??jo(),!0),z(fe,!0),z(he,null);try{await j.pullGit(e,K(_e)),await qe(e),z(_e,null)}catch(e){z(he,at(e,`GIT_PULL_FAILED`),!0)}finally{z(fe,!1)}}}async function Ye(e){if(K(me))return;let t=K(A)?qa(K(a),K(A)):void 0;if(!t||t.isGitRepository){z(ge,null),we.enqueue({kind:`error`,code:`INVALID_CLONE_DESTINATION`,message:`Select a non-repository folder before cloning.`});return}let n=t.id;z(me,!0),z(he,null),z(ge,null);try{await j.cloneGitRepository(n,e);let t=await ya(),r=bo(K(a),t.workspaces,n,e,K(ue));z(g,Ja(K(g)||null,K(a),t.workspaces,Ha.sessionBase)??``,!0),z(a,t.workspaces,!0),z(A,r.selectedId,!0),z(ue,r.expandedIds,!0),K(A)&&qa(K(a),K(A))?.isGitRepository?await qe(K(A)):z(le,null),z(ge,`Repository cloned into the selected workspace.`),we.enqueue({kind:`success`,message:`Repository cloned.`})}catch(e){at(e,`GIT_CLONE_FAILED`)}finally{z(me,!1)}}async function Xe(e){let t=K(A);if(!(!t||e===K(le)?.branch)){z(pe,!0),z(he,null);try{await j.checkoutGitBranch(t,e),await qe(t)}catch(e){z(he,at(e,`GIT_CHECKOUT_FAILED`),!0)}finally{z(pe,!1)}}}async function Ze(){let e=K(A);if(e){z(ve,K(ve)??jo(),!0),z(he,null);try{await j.pushGit(e,K(ve)),z(de,!1),await qe(e),z(ve,null)}catch(e){z(he,at(e,`GIT_PUSH_FAILED`),!0)}}}async function Qe(e,t){K(v)&&(await j.respondInteraction(K(v),e,{decision:t}),z(be,K(be).filter(t=>t.requestId!==e),!0))}async function $e(e){if(!K(v))return;let t=Oi(Di(e.payload).map(e=>({id:e.id,answer:xe[e.id]??``})));await j.respondInteraction(K(v),e.requestId,t),z(be,K(be).filter(t=>t.requestId!==e.requestId),!0)}async function et(e){if(!K(v))return;let t=Eo(e.payload);if(!t){z(r,`Codex sent an invalid permission request.`);return}await j.respondInteraction(K(v),e.requestId,t),z(be,K(be).filter(t=>t.requestId!==e.requestId),!0)}function tt(e,t){xe[e]=t}function nt(e){z(E,e,!0),K(v)&&Ce.saveDraft(K(v),e)}function rt(e){Se.write(e,K(O))}function it(e){return e instanceof Error?e.message:`Unknown relay error.`}function at(e,t){let n=Na(e,t);return we.enqueue({kind:`error`,...n}),n.message}function ot(e){re&&clearTimeout(re),ie&&clearTimeout(ie),ne?.close();let t=++ce,n=location.protocol===`https:`?`wss:`:`ws:`;ne=new WebSocket(`${n}//${location.host}/api/sessions/${encodeURIComponent(e)}/events?after=${K(te)}`),ne.onopen=()=>{t!==ce||K(v)!==e||(z(r,No(K(D)),!0),Be(),ie=setTimeout(()=>{se=0},3e4))},ne.onmessage=t=>{let n=JSON.parse(String(t.data));if(n.type===`relay.resyncRequired`){Le(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(be).some(t=>t.requestId===e.requestId)||z(be,[...K(be),e],!0)}if(n.type===`relay.event`&&n.event?.type===`turnCompleted`&&(z(D,null),z(r,No(K(D)),!0),z(O,To(K(O),`assistant-${e}`),!0),rt(e),Le(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(D);z(D,typeof n.activeTurnId==`string`?n.activeTurnId:null,!0),i&&!K(D)&&z(r,No(K(D)),!0),z(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;z(be,K(be).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`&&z(k,[...K(k).filter(t=>t.id!==e.id),e],!0)}z(te,Mo(K(te),n,t=>{z(O,wo(K(O),`assistant-${e}`,t,Date.now()),!0),rt(e)},()=>{Le(e)}),!0),Ce.saveCursor(e,K(te))},ne.onclose=()=>{t!==ce||K(v)!==e||(ie&&clearTimeout(ie),z(r,`Connection interrupted. Reconnecting…`),re=setTimeout(()=>ot(e),Po(se++)))}}var st=Ns();Vr(`y74n0s`,e=>{xn(()=>{Yt.title=`Gestalt Mobile`})});var ct=V(st),lt=e=>{Va(e,{get variant(){return Ee}})},ut=e=>{var t=Es();ro(B(t),{get context(){return Te}}),P(t),Y(e,t)},dt=e=>{var t=Ms(),o=B(t);{let e=I(()=>K(n)===`chat`?Uo(K(y).find(e=>e.id===K(v))?.workspacePath??``):null);Ci(o,{get theme(){return K(i)},get sessionPath(){return K(e)},onthemechange:M})}var l=H(o,2),w=e=>{var t=ks(),n=H(B(t),2),i=e=>{var t=Ds(),n=V(t);ha(n,{get messages(){return K(O)}});var i=H(n,2);Ei(i,{get activities(){return K(k)}});var a=H(i,2);Li(a,{get interactions(){return K(be)},get answers(){return xe},onanswer:tt,onuserinput:e=>void $e(e),onpermission:e=>void et(e),ondecision:(e,t)=>void Qe(e,t)}),Hi(H(a,2),{get status(){return K(r)},get message(){return K(E)},get activeTurnId(){return K(D)},get starting(){return K(ee)},onchange:nt,onsend:()=>void Fe(),oninterrupt:()=>void Ie()}),Y(e,t)},a=e=>{Y(e,Os())};Z(n,e=>{K(v)?e(i):e(a,-1)}),P(t),Y(e,t)},te=e=>{{let t=I(()=>K(A)?qa(K(a),K(A))??null:null);yo(e,{get workspaceTree(){return K(a)},get selectedWorkspace(){return K(t)},get expandedIds(){return K(ue)},get summary(){return K(le)},get refreshing(){return K(fe)},get checkingOut(){return K(pe)},get cloning(){return K(me)},get error(){return K(he)},get cloneStatus(){return K(ge)},get confirmingPush(){return K(de)},onpull:()=>void Je(),oncheckout:e=>void Xe(e),onopenpushconfirmation:()=>z(de,!0),onpush:()=>void Ze(),oncancelpush:()=>z(de,!1),onselect:F,onexpandedchange:e=>z(ue,e,!0),onclone:e=>void Ye(e)})}},ne=e=>{var t=Er(),n=V(t),r=e=>{var t=js(),n=B(t),r=B(n);_i(r,e=>z(h,e),()=>K(h));var i=H(r,2);P(n);var a=H(n,2),o=e=>{Cs(e,{get skillsState(){return K(u)},onrefresh:()=>K(u)?.refresh()??Promise.resolve(),onprofileschange:()=>void Ue(),heading:`Skill profile editor`})},s=e=>{Y(e,As())};Z(a,e=>{K(u)?e(o):e(s,-1)}),P(t),q(`click`,i,()=>void Ge()),Y(e,t)},i=e=>{is(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(C)},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(T)},onworkspacechange:e=>z(g,e,!0),onexpandedchange:e=>z(_,e,!0),onsandboxchange:e=>z(S,e,!0),onapprovalpolicychange:e=>z(C,e,!0),onmodelchange:e=>z(c,e,!0),onskillprofilechange:e=>z(p,e,!0),onmanageprofiles:e=>void We(e),onopen:Ae,onselectopen:Ae,onclose:e=>void Me(e),onopenrecent:e=>void je(e),onforget:e=>void Ne(e),oncopyresume:e=>void Pe(e),onstart:()=>void De()})};Z(n,e=>{K(d)===`profile-manager`?e(r):e(i,-1)}),Y(e,t)};Z(l,e=>{K(n)===`chat`?e(w):K(n)===`git`?e(te,1):e(ne,-1)}),cs(H(l,2),{get activeTab(){return K(n)},get chatEnabled(){return K(b)},onselect:Ve}),P(t),Y(e,t)};Z(ct,e=>{Ee===`error`||Ee===`stacked`?e(lt):Te===`sessions`||Te===`git`?e(ut,1):e(dt,-1)});var ft=H(ct,2),pt=e=>{za(e,{get queue(){return we}})};Z(ft,e=>{Ee!==`error`&&Ee!==`stacked`&&e(pt)}),Y(e,st),ze()}vr([`click`]);var Fs=document.getElementById(`app`);if(!Fs)throw Error(`Missing application mount target`);Dr(Ps,{target:Fs});
@@ -0,0 +1 @@
1
+ .session-path.svelte-t9laac{text-align:center;text-overflow:ellipsis;white-space:nowrap;min-inline-size:0;margin:0;overflow:hidden}form.svelte-1264sfg>[role=status]:where(.svelte-1264sfg){text-align:start;margin-block:1rem .35rem}.prompt-row.svelte-1264sfg{align-items:end;gap:.5rem;display:flex}textarea.svelte-1264sfg{resize:vertical;flex:auto;min-block-size:2.75rem}.prompt-row.svelte-1264sfg button:where(.svelte-1264sfg){flex:none;place-items:center;min-block-size:3rem;inline-size:3rem;padding:0;display:grid}.prompt-row.svelte-1264sfg svg:where(.svelte-1264sfg){fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;block-size:1.35rem;inline-size:1.35rem}.block-cursor.svelte-1264sfg{vertical-align:-.1em;background:currentColor;block-size:1em;inline-size:.55ch;animation:1s steps(2,start) infinite svelte-1264sfg-blink;display:inline-block}@media (prefers-reduced-motion:reduce){.block-cursor.svelte-1264sfg{animation:none}}@keyframes svelte-1264sfg-blink{50%{opacity:0}}ol.svelte-1im954t{inline-size:100%;margin:0;padding:0;list-style:none}li.svelte-1im954t{box-sizing:border-box;white-space:pre-wrap;overflow-wrap:anywhere;inline-size:100%;margin-block-end:0}li.svelte-1im954t+li:where(.svelte-1im954t){margin-block-start:1rem}.prompt-turn.svelte-1im954t{background:color-mix(in srgb, Canvas 94%, CanvasText);border-radius:.375rem;padding:.5rem .625rem}.entry-heading.svelte-1im954t{align-items:baseline;gap:.75rem;display:flex}time.svelte-1im954t{color:#666;white-space:nowrap;margin-inline-start:auto;font-size:.875em}.commentary-toggle.svelte-1im954t{color:#666;background:0 0;border:0;min-block-size:1.5rem;padding:0 .125rem;font-size:.875em}.commentary-content.svelte-1im954t{margin-block:.25rem .5rem}.entry-content.svelte-1im954t{margin-block:.125rem 0;margin-inline:0}pre.svelte-1im954t,code.svelte-1im954t{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace}pre.svelte-1im954t{white-space:pre;overflow-x:auto}.table-scroll.svelte-1im954t{margin-block:.75rem;overflow-x:auto}table.svelte-1im954t{border-collapse:collapse;white-space:normal;width:max-content;min-width:100%}th.svelte-1im954t,td.svelte-1im954t{text-align:left;vertical-align:top;padding:.25rem .5rem}th.svelte-1im954t{font-weight:600}.toast-viewport.svelte-1a0rutm{z-index:10;pointer-events:none;gap:.5rem;max-block-size:calc(100dvh - 7rem);inline-size:min(24rem,100vw - 1.5rem);display:grid;position:fixed;inset-block-start:calc(1rem + env(safe-area-inset-top));inset-inline-end:max(.75rem, env(safe-area-inset-right));overflow-y:auto}.toast.svelte-1a0rutm{box-sizing:border-box;color:canvastext;border:1px solid canvastext;min-inline-size:0;box-shadow:0 .4rem 1.2rem color-mix(in srgb, CanvasText 24%, transparent);pointer-events:auto;background:canvas;border-inline-start-width:.35rem;border-radius:.55rem;grid-template-columns:auto minmax(0,1fr) 44px;align-items:start;gap:.6rem;padding:.65rem;display:grid}.toast.error.svelte-1a0rutm{border-inline-start-style:double}.toast-symbol.svelte-1a0rutm{box-sizing:border-box;border:2px solid;border-radius:50%;place-items:center;block-size:1.6rem;inline-size:1.6rem;font-weight:800;line-height:1;display:grid}.toast-copy.svelte-1a0rutm{overflow-wrap:anywhere;gap:.15rem;min-inline-size:0;padding-block:.1rem;display:grid}.toast-copy.svelte-1a0rutm strong:where(.svelte-1a0rutm){text-transform:capitalize}.toast-copy.svelte-1a0rutm small:where(.svelte-1a0rutm){opacity:.72}button.svelte-1a0rutm{min-block-size:44px;inline-size:44px;color:inherit;font:inherit;background:0 0;border:0;border-radius:.35rem;place-items:center;padding:0;font-size:1.5rem;display:grid}button.svelte-1a0rutm:hover{background:color-mix(in srgb, CanvasText 10%, transparent)}@media (width<=24rem){.toast.svelte-1a0rutm{grid-template-columns:minmax(0,1fr) 44px;gap:.25rem;max-block-size:5rem;padding:.35rem;overflow-y:auto}.toast-symbol.svelte-1a0rutm{display:none}.toast-copy.svelte-1a0rutm strong:where(.svelte-1a0rutm){clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;block-size:1px;inline-size:1px;padding:0;position:absolute;overflow:hidden}}@media (forced-colors:active){.toast.svelte-1a0rutm,.toast-symbol.svelte-1a0rutm{border-color:canvastext}}.evidence-page.svelte-1j55xyh{box-sizing:border-box;min-block-size:100dvh;inline-size:100%;padding:1rem 1rem 7rem}h1.svelte-1j55xyh{margin-block:0 .5rem}.evidence-composer.svelte-1j55xyh{position:fixed;inset-block-end:2.75rem;inset-inline:1rem}.evidence-prompt.svelte-1j55xyh{box-sizing:border-box;inline-size:100%;margin-block-start:.35rem;display:block}.evidence-nav.svelte-1j55xyh{padding:.5rem 1rem calc(.5rem + env(safe-area-inset-bottom));background:canvas;border-block-start:1px solid canvastext;grid-template-columns:repeat(3,minmax(0,1fr));gap:.5rem;display:grid;position:fixed;inset-block-end:0;inset-inline:0}.evidence-nav.svelte-1j55xyh button:where(.svelte-1j55xyh){text-overflow:ellipsis;min-block-size:44px;min-inline-size:0;overflow:hidden}@media (width<=24rem){.evidence-page.svelte-1j55xyh{padding:.5rem .5rem 7rem}.evidence-composer.svelte-1j55xyh{inset-inline:.5rem}}.filesystem-tree.svelte-6z3q4v{inline-size:100%;max-inline-size:100%;display:grid;overflow-x:clip}.tree-row.svelte-6z3q4v{min-inline-size:0;align-items:stretch;padding-inline-start:min(calc(var(--tree-level) * .75rem), 4.5rem);display:flex}.disclosure.svelte-6z3q4v,.disclosure-spacer.svelte-6z3q4v{flex:0 0 44px;min-block-size:44px;inline-size:44px}.disclosure.svelte-6z3q4v{color:inherit;font:inherit;background:0 0;border:0;border-radius:.35rem;place-items:center;padding:0;font-size:1.25rem;font-weight:700;display:grid}.disclosure.svelte-6z3q4v:hover{background:color-mix(in srgb, CanvasText 10%, transparent)}.tree-item.svelte-6z3q4v{min-block-size:44px;min-inline-size:0;color:inherit;font:inherit;text-align:start;background:0 0;border:1px solid #0000;border-radius:.35rem;flex:auto;align-items:center;gap:.5rem;padding:.3rem .5rem;display:flex;overflow:hidden}.tree-item.svelte-6z3q4v:hover{background:color-mix(in srgb, CanvasText 8%, transparent)}.tree-item.selected.svelte-6z3q4v{background:color-mix(in srgb, Highlight 16%, Canvas);border-color:currentColor;font-weight:650}.tree-item[aria-disabled=true].svelte-6z3q4v{opacity:.58}.tree-item.repository.svelte-6z3q4v{border-inline-start-width:3px}.selection-mark.svelte-6z3q4v{text-align:center;flex:0 0 1rem;inline-size:1rem}.node-copy.svelte-6z3q4v{flex:auto;min-inline-size:0;display:grid}.node-name.svelte-6z3q4v,.node-path.svelte-6z3q4v{text-overflow:ellipsis;white-space:nowrap;min-inline-size:0;overflow:hidden}.node-path.svelte-6z3q4v{opacity:.72;font-size:.75em;font-weight:400}.repository-badge.svelte-6z3q4v{border:1px solid;border-radius:999px;flex:none;padding:.1rem .35rem;font-size:.72em;font-weight:700;line-height:1.2}@media (width<=24rem){.tree-row.svelte-6z3q4v{padding-inline-start:min(calc(var(--tree-level) * .25rem), 1.5rem)}.tree-item.svelte-6z3q4v{gap:.35rem;padding-inline:.35rem}.repository-badge.svelte-6z3q4v{display:none}}@media (forced-colors:active){.tree-item.selected.svelte-6z3q4v,.tree-item.repository.svelte-6z3q4v,.repository-badge.svelte-6z3q4v{border-color:canvastext}}.evidence-shell.svelte-1d6w4ti{box-sizing:border-box;inline-size:min(100%,48rem);min-inline-size:0;margin-inline:auto;padding:1rem}.eyebrow.svelte-1d6w4ti{letter-spacing:.08em;text-transform:uppercase;margin:0;font-size:.8rem;font-weight:750}h1.svelte-1d6w4ti{margin-block:.25rem .5rem;font-size:clamp(1.35rem,6vw,2rem);line-height:1.15}.instructions.svelte-1d6w4ti{max-inline-size:42rem;margin-block:0 1rem}.tree-panel.svelte-1d6w4ti{border:1px solid color-mix(in srgb, CanvasText 35%, transparent);border-radius:.6rem;min-inline-size:0;padding:.5rem}@media (width<=24rem){.evidence-shell.svelte-1d6w4ti{padding:.5rem}.tree-panel.svelte-1d6w4ti{padding:.25rem}}.git-view.svelte-pudr3t{gap:1.5rem;inline-size:100%;min-inline-size:0;display:grid}.git-tree.svelte-pudr3t,.repository-details.svelte-pudr3t{min-inline-size:0}.section-heading.svelte-pudr3t h3:where(.svelte-pudr3t),.repository-details.svelte-pudr3t h3:where(.svelte-pudr3t){margin-block:0 .35rem}.section-heading.svelte-pudr3t p:where(.svelte-pudr3t){color:color-mix(in srgb, CanvasText 70%, Canvas);margin-block:0 .75rem}.clone-form.svelte-pudr3t{gap:.35rem;min-inline-size:0;display:grid}.clone-controls.svelte-pudr3t{grid-template-columns:minmax(10rem,.45fr) minmax(0,1fr) auto;align-items:end;gap:.5rem;display:grid}.clone-field.svelte-pudr3t{gap:.35rem;min-inline-size:0;display:grid}.field-label.svelte-pudr3t{font-weight:600}.clone-destination.svelte-pudr3t output:where(.svelte-pudr3t){overflow-wrap:anywhere;border:1px solid color-mix(in srgb, CanvasText 35%, Canvas);border-radius:.35rem;min-block-size:2.75rem;padding:.65rem .75rem}.clone-controls.svelte-pudr3t button:where(.svelte-pudr3t){min-inline-size:5.75rem}.clone-form.svelte-pudr3t p:where(.svelte-pudr3t){color:color-mix(in srgb, CanvasText 70%, Canvas);margin:0;font-size:.875rem}.clone-status.svelte-pudr3t{font-weight:600;color:canvastext!important}.git-overview.svelte-pudr3t{grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:1rem;display:grid}.git-status.svelte-pudr3t p:where(.svelte-pudr3t){margin-block:.5rem}.git-actions.svelte-pudr3t{gap:.5rem;display:grid}.git-actions.svelte-pudr3t button:where(.svelte-pudr3t){min-inline-size:6rem}.commit-history.svelte-pudr3t{margin-block-start:2rem}.commit-history.svelte-pudr3t h3:where(.svelte-pudr3t){margin-block-end:.75rem}.commit-list.svelte-pudr3t{gap:.5rem;margin:0;padding:0;list-style:none;display:grid}.commit-entry.svelte-pudr3t{border-block-end:1px solid color-mix(in srgb, CanvasText 20%, Canvas);gap:.35rem;min-inline-size:0;padding:.8rem 0;display:grid}.commit-subject.svelte-pudr3t,.commit-meta.svelte-pudr3t{gap:.65rem;min-inline-size:0;display:flex}.commit-subject.svelte-pudr3t{overflow-wrap:anywhere;align-items:baseline;font-weight:600}.commit-subject.svelte-pudr3t code:where(.svelte-pudr3t){color:color-mix(in srgb, CanvasText 75%, Canvas);flex:none;font-size:.875em}.commit-meta.svelte-pudr3t{color:color-mix(in srgb, CanvasText 70%, Canvas);flex-wrap:wrap;justify-content:space-between;font-size:.875rem}.commit-meta.svelte-pudr3t time:where(.svelte-pudr3t){overflow-wrap:anywhere;min-inline-size:0;max-inline-size:100%}@media (width<=28rem){.clone-controls.svelte-pudr3t{grid-template-columns:1fr}.clone-controls.svelte-pudr3t button:where(.svelte-pudr3t){inline-size:100%}}.session-list.svelte-hxb22h{gap:1rem;inline-size:100%;margin-block:0 1.5rem;padding-inline:0;list-style:none;display:grid}.current-session.svelte-hxb22h{outline:2px solid var(--accent,#4f46e5);outline-offset:2px}.session-select.svelte-hxb22h{inline-size:100%;color:inherit;font:inherit;text-align:inherit;cursor:pointer;background:0 0;border:0;padding:0;display:block}.managed-session.svelte-hxb22h{box-sizing:border-box;border:1px solid canvastext;border-radius:.5rem;grid-template-columns:max-content minmax(0,1fr);align-items:start;gap:.75rem;inline-size:100%;padding:.75rem;display:grid}.open-session.svelte-hxb22h{background:color-mix(in srgb, Highlight 12%, Canvas);border-inline-start:.3rem solid highlight}.session-details.svelte-hxb22h{min-inline-size:0}.workspace-path.svelte-hxb22h{overflow-wrap:anywhere}.profile-badge.svelte-hxb22h{background:color-mix(in srgb, Highlight 14%, Canvas);color:canvastext;overflow-wrap:anywhere;border-radius:999px;margin-block-start:.35rem;padding:.15rem .4rem;font-size:.875rem;display:inline-block}.session-actions.svelte-hxb22h{flex-wrap:wrap;gap:.5rem;display:flex}.recent-session.svelte-hxb22h{grid-template-columns:minmax(0,1fr) max-content;align-items:start;gap:.75rem;display:grid}.session-base.svelte-hxb22h{gap:.65rem;min-inline-size:0;margin-block:1rem;display:grid}.session-base-heading.svelte-hxb22h h3:where(.svelte-hxb22h),.session-base-heading.svelte-hxb22h p:where(.svelte-hxb22h){margin:0}.session-base-heading.svelte-hxb22h p:where(.svelte-hxb22h){margin-block-start:.25rem}.tree-panel.svelte-hxb22h{box-sizing:border-box;overscroll-behavior:contain;scrollbar-gutter:stable;border:1px solid color-mix(in srgb, CanvasText 35%, transparent);border-radius:.6rem;max-block-size:min(22rem,48vh);min-inline-size:0;padding:.35rem;overflow-y:auto}.session-settings.svelte-hxb22h{gap:.5rem;min-inline-size:0;margin-block-end:.75rem;display:grid}.session-setting-labels.svelte-hxb22h,.session-setting-controls.svelte-hxb22h{grid-template-columns:repeat(3,minmax(0,1fr));gap:.5rem;min-inline-size:0;display:grid}.session-setting-labels.svelte-hxb22h label:where(.svelte-hxb22h){overflow-wrap:anywhere;min-inline-size:0}.session-setting-controls.svelte-hxb22h select:where(.svelte-hxb22h){min-inline-size:0}.session-secondary-actions.svelte-hxb22h,.model-control.svelte-hxb22h{align-items:center;gap:.5rem;min-inline-size:0;display:flex}.session-secondary-actions.svelte-hxb22h{flex-wrap:wrap}.model-control.svelte-hxb22h{margin-inline-start:auto}.skills-profile-error.svelte-hxb22h{color:#8a1c14;margin:0;font-size:.875rem}.new-session-button.svelte-hxb22h{color:canvas;inline-size:auto;box-shadow:inset 0 .15rem 0 color-mix(in srgb, Canvas 45%, transparent);background:canvastext;border-color:canvastext;font-weight:700}@media (width<=28rem){.tree-panel.svelte-hxb22h{padding:.2rem}.model-control.svelte-hxb22h{margin-inline-start:0}}.skills-view.svelte-dg6sjj{min-inline-size:0;padding:1rem max(1rem, env(safe-area-inset-right)) calc(5rem + env(safe-area-inset-bottom)) max(1rem, env(safe-area-inset-left))}.intro.svelte-dg6sjj,.save-intent.svelte-dg6sjj,.summary.svelte-dg6sjj{max-inline-size:70ch}form.svelte-dg6sjj,.field-grid.svelte-dg6sjj{gap:.65rem;display:grid}.field-grid.svelte-dg6sjj{grid-template-columns:minmax(0,1fr)}label.svelte-dg6sjj{font-weight:650}select.svelte-dg6sjj,input.svelte-dg6sjj,button.svelte-dg6sjj{box-sizing:border-box;min-block-size:3rem;inline-size:100%;font:inherit}dialog.svelte-dg6sjj{max-inline-size:min(100% - 2rem,32rem)}.dialog-actions.svelte-dg6sjj{gap:.65rem;display:grid}input.svelte-dg6sjj,select.svelte-dg6sjj{padding-inline:.7rem;font-size:1rem}button.svelte-dg6sjj{padding-inline:1rem}.profile-actions.svelte-dg6sjj{grid-template-columns:repeat(2,minmax(0,1fr));gap:.65rem;display:grid}.skills-toolbar.svelte-dg6sjj{flex-wrap:wrap;align-items:center;gap:.65rem;margin-block:1rem;display:flex}.refresh-skills.svelte-dg6sjj{flex:none;min-block-size:2.25rem;inline-size:auto;padding-inline:.65rem}.refresh-skills.svelte-dg6sjj span:where(.svelte-dg6sjj):first-child{font-size:1.2em;line-height:1}.summary.svelte-dg6sjj{overflow-wrap:anywhere;min-inline-size:0;margin:0}.notice.svelte-dg6sjj{border-inline-start:.3rem solid #976600;padding-inline-start:.7rem}.error.svelte-dg6sjj{color:#8a1c14;border-inline-start:.3rem solid #b42318;padding-inline-start:.7rem}.skill-list.svelte-dg6sjj{gap:.75rem;padding:0;list-style:none;display:grid}.skill-card.svelte-dg6sjj{border:1px solid color-mix(in srgb, var(--brand-color,currentColor) 35%, transparent);border-radius:.5rem;min-inline-size:0;padding:.75rem;scroll-margin-block:1rem}.skill-toggle.svelte-dg6sjj{flex-wrap:wrap;align-items:center;gap:.65rem;min-block-size:3rem;display:flex}.skill-toggle.svelte-dg6sjj>span:where(.svelte-dg6sjj){overflow-wrap:anywhere;min-inline-size:0}.skill-toggle.svelte-dg6sjj input:where(.svelte-dg6sjj){flex:none;min-block-size:1.25rem;inline-size:1.25rem}.state.svelte-dg6sjj{margin-inline-start:auto;font-weight:500}.skill-details.svelte-dg6sjj{overflow-wrap:anywhere;padding-inline-start:1.9rem}.skill-details.svelte-dg6sjj>:where(.svelte-dg6sjj):first-child{margin-block-start:.25rem}.skill-details.svelte-dg6sjj>:where(.svelte-dg6sjj):last-child{margin-block-end:0}dl.svelte-dg6sjj{grid-template-columns:minmax(7rem,auto) minmax(0,1fr);gap:.45rem .75rem;display:grid}dt.svelte-dg6sjj{font-weight:650}dd.svelte-dg6sjj{min-inline-size:0;margin:0}dd.svelte-dg6sjj ul:where(.svelte-dg6sjj){margin:0;padding-inline-start:1.25rem}.path.svelte-dg6sjj{overflow-wrap:anywhere}.svelte-dg6sjj:where(button:where(.svelte-dg6sjj),input:where(.svelte-dg6sjj),select:where(.svelte-dg6sjj)):focus-visible{outline-offset:2px;outline:3px solid #1261a0}@media (prefers-color-scheme:dark){.error.svelte-dg6sjj{color:#ffb4ab}.notice.svelte-dg6sjj{color:#ffd8a8}}@media (width>=42rem){.field-grid.svelte-dg6sjj{grid-template-columns:minmax(10rem,1fr) minmax(0,2fr);align-items:center}}@media (width<=30rem){dl.svelte-dg6sjj{grid-template-columns:1fr;gap:.2rem}}.chat-view.svelte-y74n0s{margin-inline:calc(.25rem - var(--page-inline-padding))}.evidence-mode.svelte-y74n0s{box-sizing:border-box;inline-size:100%;min-inline-size:0;padding:0}.session-profile-manager-header.svelte-y74n0s{box-sizing:border-box;inline-size:100%;min-inline-size:0;padding-inline:max(1rem, env(safe-area-inset-left)) max(1rem, env(safe-area-inset-right));justify-content:space-between;align-items:safe center;gap:1rem;display:flex}.session-profile-manager-header.svelte-y74n0s h2:where(.svelte-y74n0s){overflow-wrap:anywhere;min-inline-size:0;margin:0}.close-profile-manager.svelte-y74n0s{min-block-size:2.5rem;inline-size:2.5rem;color:inherit;background:0 0;border:0;flex:none;padding:0;font-size:2rem;line-height:1}:root{--bottom-navigation-clearance:calc(4rem + env(safe-area-inset-bottom));--sticky-header-clearance:calc(5rem + env(safe-area-inset-top));--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;font-family:system-ui,sans-serif}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}}:root[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}body{min-block-size:100dvh;margin:0}.visually-hidden{clip-path:inset(50%)!important;white-space:nowrap!important;border:0!important;block-size:1px!important;inline-size:1px!important;margin:-1px!important;padding:0!important;position:absolute!important;overflow:hidden!important}main{--page-inline-padding:1rem;box-sizing:border-box;min-block-size:100dvh;max-inline-size:42rem;padding:calc(1rem + env(safe-area-inset-top)) var(--page-inline-padding) calc(var(--bottom-navigation-clearance) + 1rem);margin-inline:auto}@media (width<=24rem){main{--page-inline-padding:.5rem}}.app-header{z-index:1;margin:calc(-1rem - env(safe-area-inset-top)) calc(.25rem - var(--page-inline-padding)) 1.5rem;padding:calc(1rem + env(safe-area-inset-top)) calc(var(--page-inline-padding) - .25rem) .75rem;background:color-mix(in srgb, Canvas 78%, transparent);-webkit-backdrop-filter:blur(.75rem);backdrop-filter:blur(.75rem);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;display:flex;position:sticky;inset-block-start:0}.app-header [role=status]{overflow-wrap:anywhere;text-align:end;min-inline-size:0;margin:0}.brand{align-items:center;gap:.4rem;display:flex}.menu-trigger{min-block-size:44px;inline-size:44px;color:inherit;background:0 0;border:0;flex:none;place-items:center;margin-inline-start:auto;padding:0;display:grid}.menu-lines{gap:.25rem;inline-size:1.25rem;display:grid}.menu-lines span{box-sizing:border-box;background:currentColor;block-size:1px;display:block}.menu-lines span:first-child,.menu-lines span:nth-child(2),.menu-lines span:last-child{block-size:2px}@media (width<=28rem){.app-header [role=status]{flex-basis:100%;margin-inline-start:0}}.brand-icon{block-size:2rem;inline-size:2rem}.brand-logotype{block-size:auto;inline-size:6.25rem}.dark-asset,:root[data-theme=dark] .light-asset{display:none}:root[data-theme=dark] .dark-asset{display:initial}@media (prefers-color-scheme:dark){:root:not([data-theme]) .light-asset{display:none}:root:not([data-theme]) .dark-asset{display:initial}}.configuration-panel{color:canvastext;min-inline-size:min(13rem,100vw - 2rem);box-shadow:0 .5rem 1.5rem color-mix(in srgb, CanvasText 25%, transparent);background:canvas;border:1px solid canvastext;border-radius:.5rem;padding:.75rem;position:fixed;inset:4.5rem 1rem auto auto}.configuration-logo{block-size:auto;inline-size:4.5rem;margin-block-end:.5rem;margin-inline-start:auto;display:block}.appearance-control{align-items:center;gap:.5rem;display:flex}.appearance-control span{letter-spacing:-.08em;font-weight:700}.appearance-control select{field-sizing:content;flex:none;min-block-size:2.25rem;inline-size:auto;padding-inline:.5rem}.bottom-navigation{padding:.5rem calc(.25rem + env(safe-area-inset-right)) calc(.5rem + env(safe-area-inset-bottom)) calc(.25rem + env(safe-area-inset-left));background:canvas;border-block-start:1px solid canvastext;grid-template-columns:repeat(4,minmax(0,1fr));gap:.25rem;display:grid;position:fixed;inset-block-end:0;inset-inline:0}.bottom-navigation button{overflow-wrap:anywhere;word-break:break-word;min-inline-size:0;max-inline-size:100%;padding-inline:0;transition:color .12s,background-color .12s,box-shadow .12s}.bottom-navigation button[aria-pressed=true]{color:canvas;box-shadow:inset 0 .2rem 0 color-mix(in srgb, Canvas 70%, transparent);background:canvastext;font-weight:700}.bottom-navigation button:disabled{color:color-mix(in srgb, CanvasText 40%, transparent);cursor:not-allowed;opacity:.65}@media (width<=30rem){:root{--bottom-navigation-clearance:calc(10rem + env(safe-area-inset-bottom));--sticky-header-clearance:calc(14rem + env(safe-area-inset-top))}.bottom-navigation{grid-template-columns:repeat(2,minmax(0,1fr))}.bottom-navigation button{text-align:center;padding-inline:.25rem}}button{min-block-size:44px;font:inherit}.git-view button{scroll-margin-block:var(--sticky-header-clearance) var(--bottom-navigation-clearance)}input,select,textarea{box-sizing:border-box;min-block-size:44px;inline-size:100%;font:inherit;font-size:max(1rem,16px)}:focus-visible{outline-offset:3px;outline:3px solid canvastext}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important}}@media (forced-colors:active){button,input,select,textarea{border:1px solid canvastext}}
@@ -10,8 +10,8 @@ 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-i0Y57I_X.js"></script>
14
- <link rel="stylesheet" crossorigin href="/assets/index-B3MMCSoP.css">
13
+ <script type="module" crossorigin src="/assets/index--vTfuwTT.js"></script>
14
+ <link rel="stylesheet" crossorigin href="/assets/index-BqpvGqIw.css">
15
15
  </head>
16
16
  <body>
17
17
  <div id="app"></div>
@@ -32,6 +32,7 @@ import { registerProblemHandler } from './platform/http/problem-handler.js';
32
32
  import { registerListAvailableSkills } from './features/skills/list-available/endpoint.js';
33
33
  import { registerListSkillProfiles } from './features/skills/list-profiles/endpoint.js';
34
34
  import { registerReplaceSkillProfile } from './features/skills/replace-profile/endpoint.js';
35
+ import { registerDeleteSkillProfile } from './features/skills/delete-profile/endpoint.js';
35
36
  export async function buildApp(deps) {
36
37
  const app = fastify({ logger: false });
37
38
  if (deps.staticDir)
@@ -149,6 +150,7 @@ export async function buildApp(deps) {
149
150
  registerListAvailableSkills(app, deps.skills);
150
151
  registerListSkillProfiles(app, deps.skills);
151
152
  registerReplaceSkillProfile(app, deps.skills);
153
+ registerDeleteSkillProfile(app, deps.skills);
152
154
  }
153
155
  registerProblemHandler(app, Boolean(deps.staticDir));
154
156
  return app;
@@ -11,6 +11,7 @@ import { buildApp } from './app.js';
11
11
  import { FilesystemWorkspaceCatalog } from './platform/catalog/filesystem-workspace-catalog.js';
12
12
  import { protocolCompatibility } from './platform/codex/protocol-compatibility.js';
13
13
  import { launchCodexAppServer } from './platform/codex/codex-process-launcher.js';
14
+ import { CodexModelCatalog } from './platform/codex/codex-model-catalog.js';
14
15
  import { createRecentThreadLister } from './platform/codex/recent-thread-lister.js';
15
16
  import { CodexSessionRuntime } from './platform/codex/session-runtime.js';
16
17
  import { normalizeCodexNotification } from './platform/codex/normalizer.js';
@@ -33,6 +34,7 @@ import { isValidInteractionResponse } from './features/sessions/interaction/resp
33
34
  import { promoteRecentThread } from './features/sessions/promote-recent-thread/use-case.js';
34
35
  import { FilesystemSkillProfileStore } from './platform/skills/filesystem-skill-profile-store.js';
35
36
  import { CodexSkillCatalog } from './platform/skills/codex-skill-catalog.js';
37
+ import { CachedSkillCatalog } from './platform/skills/cached-skill-catalog.js';
36
38
  import { compileSkillOverride } from './features/skills/model/skill-profile.js';
37
39
  const generatedProtocolVersion = 'codex-cli 0.144.3';
38
40
  export async function composeRelayApp(options) {
@@ -49,12 +51,20 @@ export async function composeRelayApp(options) {
49
51
  const withPendingInteractions = (session) => (session ? { ...session, pendingInteractions: interactions.list(session.id) } : null);
50
52
  const events = new SessionEventBus();
51
53
  const workspaces = new FilesystemWorkspaceCatalog(root);
54
+ const models = new CodexModelCatalog(root, options.launchAppServer ?? launchCodexAppServer);
52
55
  const skillProfiles = new FilesystemSkillProfileStore(options.homeDirectory ?? homedir());
53
- const resolveSkills = async (profile, cwd) => {
54
- const project = await skillProfiles.readWorkspaceDefault(cwd);
56
+ const skillCatalog = (profile) => new CodexSkillCatalog(profile, options.launchAppServer ?? launchCodexAppServer);
57
+ const editorSkillCatalog = new CachedSkillCatalog((profile, workspace) => skillCatalog(profile).list(workspace));
58
+ const resolveSkills = async (session) => {
59
+ const catalog = await skillCatalog(session.profile).list(session.workspacePath);
60
+ if (session.effectiveSkillSelection)
61
+ return compileSkillOverride({
62
+ discovered: catalog.skills,
63
+ explicit: session.effectiveSkillSelection.skills,
64
+ }).skillsConfig;
65
+ const project = await skillProfiles.readWorkspaceDefault(session.workspacePath);
55
66
  if (!options.explicitSkillProfile && !project)
56
67
  return undefined;
57
- const catalog = await new CodexSkillCatalog(profile, options.launchAppServer ?? launchCodexAppServer).list(cwd);
58
68
  return compileSkillOverride({
59
69
  discovered: catalog.skills,
60
70
  explicit: options.explicitSkillProfile?.skills,
@@ -131,11 +141,12 @@ export async function composeRelayApp(options) {
131
141
  skills: {
132
142
  workspaces,
133
143
  profiles: options.profiles,
134
- catalog: (profile) => new CodexSkillCatalog(profile, options.launchAppServer ?? launchCodexAppServer),
144
+ catalog: editorSkillCatalog,
135
145
  selections: skillProfiles,
136
146
  listGlobalProfileNames: () => skillProfiles.listGlobalProfileNames(),
137
147
  readGlobalProfile: (name) => skillProfiles.readGlobalProfile(name),
138
148
  replaceGlobalProfile: (profile) => skillProfiles.replaceGlobalProfile(profile),
149
+ deleteGlobalProfile: (name) => skillProfiles.deleteGlobalProfile(name),
139
150
  profilePath: (name) => skillProfiles.globalProfilePath(name),
140
151
  },
141
152
  logger: console,
@@ -144,6 +155,7 @@ export async function composeRelayApp(options) {
144
155
  bootstrap: {
145
156
  workspaces,
146
157
  profiles: options.profiles,
158
+ models,
147
159
  sessions: {
148
160
  list: () => sessions.list().map((session) => withPendingInteractions(session)),
149
161
  },
@@ -157,6 +169,9 @@ export async function composeRelayApp(options) {
157
169
  list: () => sessions.list().map((session) => withPendingInteractions(session)),
158
170
  workspaces,
159
171
  profiles: options.profiles,
172
+ skillProfiles,
173
+ skillCatalog,
174
+ defaultSkillProfile: options.explicitSkillProfile,
160
175
  activate: runtime
161
176
  ? async (session, settings) => runtime.start(session, new Date().toISOString(), settings)
162
177
  : undefined,
@@ -247,8 +262,12 @@ export async function composeRelayApp(options) {
247
262
  }
248
263
  });
249
264
  };
250
- if (runtime)
251
- app.addHook('onListen', () => void restoreActiveSessions());
265
+ app.addHook('onListen', async () => {
266
+ const profile = (await options.profiles.list()).find((item) => item.state === 'ok')?.name;
267
+ if (profile)
268
+ await editorSkillCatalog.refresh(profile, root);
269
+ await restoreActiveSessions();
270
+ });
252
271
  app.addHook('onClose', async () => {
253
272
  runtime?.stopAll();
254
273
  database.close();
@@ -4,10 +4,15 @@
4
4
  * SPDX-License-Identifier: AGPL-3.0-or-later
5
5
  */
6
6
  export async function getBootstrap(deps) {
7
- const [workspaces, profiles] = await Promise.all([deps.workspaces.list(), deps.profiles.list()]);
7
+ const [workspaces, profiles, models] = await Promise.all([
8
+ deps.workspaces.list(),
9
+ deps.profiles.list(),
10
+ deps.models?.list().catch(() => []) ?? [],
11
+ ]);
8
12
  return {
9
13
  workspaces,
10
14
  profiles,
15
+ models,
11
16
  sessions: deps.sessions.list(),
12
17
  capabilities: {
13
18
  approvals: true,
@@ -3,4 +3,5 @@
3
3
  * Designed by Denis Roio <jaromil@dyne.org>
4
4
  * SPDX-License-Identifier: AGPL-3.0-or-later
5
5
  */
6
- export {};
6
+ /** The relay's configured default, kept explicit so deployments can change it centrally later. */
7
+ export const DEFAULT_SESSION_MODEL = 'gpt-5.6-terra';
@@ -4,7 +4,16 @@
4
4
  * SPDX-License-Identifier: AGPL-3.0-or-later
5
5
  */
6
6
  import { DomainError } from './errors.js';
7
+ import { createSkillSelection, normalizeSkillProfileName, } from '../../skills/model/skill-profile.js';
7
8
  import { interactionId, profileName, sessionId, threadId, turnId, workspaceId, workspacePath, } from './value-objects.js';
9
+ export function createEffectiveSkillSelection(input) {
10
+ return {
11
+ ...(input.selectedProfileName === undefined
12
+ ? {}
13
+ : { selectedProfileName: normalizeSkillProfileName(input.selectedProfileName) }),
14
+ skills: createSkillSelection(input.skills),
15
+ };
16
+ }
8
17
  export class RelaySession {
9
18
  value;
10
19
  events;
@@ -18,6 +27,9 @@ export class RelaySession {
18
27
  workspaceId: workspaceId(input.workspaceId),
19
28
  workspacePath: workspacePath(input.workspacePath),
20
29
  profile: profileName(input.profile),
30
+ ...(input.model === undefined ? {} : { model: input.model }),
31
+ ...(input.branch === undefined ? {} : { branch: input.branch }),
32
+ effectiveSkillSelection: createEffectiveSkillSelection(input.effectiveSkillSelection),
21
33
  threadId: null,
22
34
  state: 'starting',
23
35
  desiredState: 'active',
@@ -117,6 +129,9 @@ export class RelaySession {
117
129
  function copy(snapshot) {
118
130
  return {
119
131
  ...snapshot,
132
+ ...(snapshot.effectiveSkillSelection === undefined
133
+ ? {}
134
+ : { effectiveSkillSelection: createEffectiveSkillSelection(snapshot.effectiveSkillSelection) }),
120
135
  pendingInteractions: snapshot.pendingInteractions.map((item) => ({ ...item })),
121
136
  };
122
137
  }
@@ -6,6 +6,8 @@
6
6
  import { idempotencyKey } from '../../../platform/http/idempotency.js';
7
7
  import { parseStartSessionRequest } from './request.js';
8
8
  import { startSession } from './use-case.js';
9
+ import { SkillProfileError } from '../../skills/model/errors.js';
10
+ import { problem } from '../../../platform/http/problem.js';
9
11
  export function registerStartSession(app, deps) {
10
12
  app.post('/api/sessions', async (request, reply) => {
11
13
  const key = idempotencyKey(request.headers);
@@ -28,6 +30,10 @@ export function registerStartSession(app, deps) {
28
30
  }
29
31
  catch (error) {
30
32
  deps.reportFailure?.('start-session', error);
33
+ if (error instanceof SkillProfileError)
34
+ return reply.code(400).type('application/problem+json').send(problem(error.code, 400, error.code === 'UNKNOWN_SKILL_PROFILE'
35
+ ? 'The selected skill profile does not exist.'
36
+ : 'The selected skill profile is invalid.'));
31
37
  throw error;
32
38
  }
33
39
  if (key)
@@ -7,6 +7,7 @@ import { z } from 'zod';
7
7
  const schema = z.object({
8
8
  workspaceId: z.string().min(1),
9
9
  profile: z.string().min(1),
10
+ skillProfile: z.string().trim().min(1).optional(),
10
11
  model: z
11
12
  .string()
12
13
  .trim()