gestalt-mobile 0.1.1 → 0.3.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 (26) hide show
  1. package/README.md +26 -6
  2. package/dist/client/assets/index-BvGdtY1N.js +11 -0
  3. package/dist/client/assets/index-CQd1grXV.css +1 -0
  4. package/dist/client/index.html +2 -2
  5. package/dist/server/server/app.js +21 -12
  6. package/dist/server/server/composition.js +4 -2
  7. package/dist/server/server/features/git/application/clone-destination.js +13 -0
  8. package/dist/server/server/features/git/application/ports.js +6 -0
  9. package/dist/server/server/features/git/application/repository-target.js +13 -0
  10. package/dist/server/server/features/git/checkout-branch/endpoint.js +6 -5
  11. package/dist/server/server/features/git/clone-repository/endpoint.js +5 -1
  12. package/dist/server/server/features/git/get-summary/endpoint.js +6 -5
  13. package/dist/server/server/features/git/pull-rebase/endpoint.js +6 -5
  14. package/dist/server/server/features/git/push-upstream/endpoint.js +8 -7
  15. package/dist/server/server/features/git/refresh/endpoint.js +7 -6
  16. package/dist/server/server/features/sessions/forget-session/endpoint.js +1 -1
  17. package/dist/server/server/features/sessions/list-recent-threads/endpoint.js +7 -1
  18. package/dist/server/server/features/sessions/promote-recent-thread/use-case.js +1 -1
  19. package/dist/server/server/features/sessions/release-session/endpoint.js +1 -1
  20. package/dist/server/server/features/sessions/stop-session/endpoint.js +1 -1
  21. package/dist/server/server/platform/catalog/filesystem-workspace-catalog.js +106 -32
  22. package/dist/server/server/platform/codex/recent-thread-lister.js +1 -1
  23. package/dist/server/server/platform/codex/session-runtime.js +18 -0
  24. package/package.json +1 -1
  25. package/dist/client/assets/index-0wjiXBGW.js +0 -10
  26. package/dist/client/assets/index-CfoipqOl.css +0 -1
package/README.md CHANGED
@@ -42,8 +42,13 @@ active Codex subprocesses, and database cleanly.
42
42
  | `--help` | | Print usage without starting the application |
43
43
  | `--version` | | Print the installed package version |
44
44
 
45
- `--cwd` may be relative to the directory where the command is invoked. Its
46
- immediate child directories are the workspaces offered by the application.
45
+ `--cwd` may be relative to the directory where the command is invoked. The
46
+ resolved directory is the selectable root of a recursive workspace tree. Dot
47
+ directories are omitted, and traversal stops at each directory containing a
48
+ `.git` marker, so repositories are terminal nodes. Directory symlinks are
49
+ included only when their real target stays under the resolved root; repeated
50
+ real targets and cycles are omitted. Browser requests select nodes by opaque ID,
51
+ while real filesystem paths remain server-side.
47
52
 
48
53
  Gestalt Mobile has no built-in authentication or TLS. The loopback default is
49
54
  safe for use on the same computer. `--host 0.0.0.0` exposes the relay and its
@@ -61,6 +66,12 @@ when present.
61
66
 
62
67
  ## Sessions
63
68
 
69
+ The Sessions tab uses the recursive filesystem tree to choose the base directory
70
+ for a new session. Expand or collapse folders with the disclosure buttons, or
71
+ use Left/Right while a tree item is focused. Up/Down, Home, and End move through
72
+ visible items; Enter or Space selects the focused directory. The selected path
73
+ remains highlighted when branches are folded or the catalog is refreshed.
74
+
64
75
  Use **Open** to relaunch a released, stopped, or attention-required
65
76
  relay session from the browser.
66
77
 
@@ -78,13 +89,22 @@ server has pruned the gap, it reloads canonical Codex thread history.
78
89
 
79
90
  ## Git
80
91
 
81
- The Git tab reports branch divergence, dirty counts, and recent commits. It can
82
- also clone a Git address into a selected workspace directory below `--cwd`.
83
- Pull
84
- uses `git pull --rebase`. Push is available only for a branch that has an
92
+ The Git tab has its own filesystem-tree selection, independent from the base
93
+ directory selected in Sessions. Selecting a repository shows its branch
94
+ divergence, dirty counts, recent commits, and repository actions even when no
95
+ relay session exists. Selecting an ordinary directory makes it the destination
96
+ for Clone; repositories cannot be clone destinations. After a successful clone,
97
+ the catalog refreshes and selects the new repository without changing the
98
+ Sessions selection.
99
+
100
+ Pull uses `git pull --rebase`. Push is available only for a branch that has an
85
101
  upstream, is ahead, and is not behind; it never creates an upstream or
86
102
  force-pushes.
87
103
 
104
+ Operation results appear as non-modal notifications. Errors are announced
105
+ assertively, successful operations politely, and each notification can be
106
+ dismissed with its keyboard-accessible close button.
107
+
88
108
  ## Versions and upgrades
89
109
 
90
110
  Inspect the executable and registry versions with:
@@ -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,ee=65536,te=1<<21,ne=1<<22,re=1<<23,E=Symbol(`$state`),ie=Symbol(`legacy props`),ae=Symbol(``),oe=Symbol(`attributes`),se=Symbol(`class`),ce=Symbol(`style`),le=Symbol(`text`),ue=Symbol(`form reset`),de=new class extends Error{name=`StaleReactionError`;message="The reaction that called `getAbortSignal()` was re-run or destroyed"},fe=!!globalThis.document?.contentType&&globalThis.document.contentType.includes(`xml`);function pe(e){throw Error(`https://svelte.dev/e/lifecycle_outside_component`)}function me(){throw Error(`https://svelte.dev/e/async_derived_orphan`)}function he(e,t,n){throw Error(`https://svelte.dev/e/each_key_duplicate`)}function D(e){throw Error(`https://svelte.dev/e/effect_in_teardown`)}function ge(){throw Error(`https://svelte.dev/e/effect_in_unowned_derived`)}function _e(e){throw Error(`https://svelte.dev/e/effect_orphan`)}function ve(){throw Error(`https://svelte.dev/e/effect_update_depth_exceeded`)}function ye(e){throw Error(`https://svelte.dev/e/props_invalid_value`)}function be(){throw Error(`https://svelte.dev/e/state_descriptors_fixed`)}function xe(){throw Error(`https://svelte.dev/e/state_prototype_fixed`)}function Se(){throw Error(`https://svelte.dev/e/state_unsafe_mutation`)}function Ce(){throw Error(`https://svelte.dev/e/svelte_boundary_reset_onerror`)}var we={},O=Symbol(`uninitialized`),Te=`http://www.w3.org/1999/xhtml`;function Ee(){console.warn(`https://svelte.dev/e/derived_inert`)}function De(e){console.warn(`https://svelte.dev/e/hydration_mismatch`)}function Oe(){console.warn(`https://svelte.dev/e/select_multiple_invalid_value`)}function ke(){console.warn(`https://svelte.dev/e/svelte_boundary_reset_noop`)}var k=!1;function Ae(e){k=e}var A;function j(e){if(e===null)throw De(),we;return A=e}function je(){return j(tn(A))}function M(e){if(k){if(tn(A)!==null)throw De(),we;A=e}}function Me(e=1){if(k){for(var t=e,n=A;t--;)n=tn(n);A=n}}function Ne(e=!0){for(var t=0,n=A;;){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=tn(n);e&&n.remove(),n=i}}function Pe(e){if(!e||e.nodeType!==8)throw De(),we;return e.data}function Fe(e){return e===this.v}function Ie(e,t){return e==e?e!==t||typeof e==`object`&&!!e||typeof e==`function`:t==t}function Le(e){return!Ie(e,this.v)}var N=null;function Re(e){N=e}function ze(e,t=!1,n){N={p:N,i:!1,c:null,e:null,s:e,x:null,r:K,l:null}}function Be(e){var t=N,n=t.e;if(n!==null){t.e=null;for(var r of n)vn(r)}return e!==void 0&&(t.x=e),t.i=!0,N=t.p,e??{}}function Ve(){return!0}var He=[];function Ue(){var e=He;He=[],f(e)}function We(e){if(He.length===0&&!bt){var t=He;queueMicrotask(()=>{t===He&&Ue()})}He.push(e)}function Ge(){for(;He.length>0;)Ue()}function Ke(e){var t=K;if(t===null)return G.f|=re,e;if(!(t.f&32768)&&!(t.f&4))throw e;P(e,t)}function P(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^=ee,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()=>{hn()&&(q(n),Sn(()=>(t===0&&(r=lr(()=>e(()=>Ut(n)))),t+=1,()=>{We(()=>{--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=k?A: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=K;t.b=this,t.f|=128,n(e)},this.parent=K.b,this.transform_error=r??this.parent?.transform_error??(e=>e),this.#i=Cn(()=>{if(k){let e=this.#t;je();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),k&&(this.#e=A)}#g(){try{this.#a=wn(()=>this.#r(this.#e))}catch(e){this.error(e)}}#_(e){let t=this.#n.failed;t&&(this.#s=wn(()=>{t(this.#e,()=>e,()=>()=>{})}))}#v(){let e=this.#n.pending;e&&(this.is_pending=!0,this.#o=wn(()=>e(this.#e)),We(()=>{var e=this.#c=document.createDocumentFragment(),t=$t();e.append(t),this.#a=this.#x(()=>wn(()=>this.#r(t))),this.#u===0&&(this.#e.before(e),this.#c=null,jn(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=wn(()=>{this.#r(this.#e)}),this.#u>0){var e=this.#c=document.createDocumentFragment();Fn(this.#a,e);let t=this.#n.pending;this.#o=wn(()=>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=K,n=G,r=N;Hn(this.#i),Vn(this.#i),Re(this.#i.ctx);try{return Et.ensure(),e()}catch(e){return Ke(e),null}finally{Hn(t),Vn(n),Re(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&&jn(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,We(()=>{this.#d=!1,this.#m&&Vt(this.#m,this.#l)}))}get_effect_pending(){return this.#h(),q(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&&=(On(this.#a),null),this.#o&&=(On(this.#o),null),this.#s&&=(On(this.#s),null),k&&(j(this.#t),Me(),j(Ne()));var t=this.#n.onerror;let n=this.#n.failed;var r=!1,i=!1;let a=()=>{if(r){ke();return}r=!0,i&&Ce(),this.#s!==null&&jn(this.#s,()=>{this.#s=null}),this.#x(()=>{this.#y()})},o=e=>{try{i=!0,t?.(e,a),i=!1}catch(e){P(e,this.#i&&this.#i.parent)}n&&(this.#s=this.#x(()=>{try{return wn(()=>{var t=K;t.b=this,t.f|=128,n(this.#e,()=>e,()=>a)})}catch(e){return P(e,this.#i.parent),null}}))};We(()=>{var t;try{t=this.transform_error(e)}catch(e){P(e,this.#i&&this.#i.parent);return}typeof t==`object`&&t&&typeof t.then==`function`?t.then(o,e=>P(e,this.#i&&this.#i.parent)):o(t)})}};function rt(e,t,n,r){let i=Ve()?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=K,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){P(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=>P(e,s)).finally(d)}l?l.then(()=>{c(),f(),at()}):f()}function it(){var e=K,t=G,n=N,r=L;return function(i=!0){Hn(e),Vn(t),Re(n),i&&!(e.f&16384)&&(r?.activate(),r?.apply())}}function at(e=!0){Hn(null),Vn(null),Re(null),e&&L?.deactivate()}function ot(){var e=K,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 K!==null&&(K.f|=C),{ctx:N,deps:null,effects:null,equals:Fe,f:t,fn:e,reactions:null,rv:0,v:O,wv:0,parent:K,ac:null}}var ct=Symbol(`obsolete`);function lt(e,t,n){let r=K;r===null&&me();var i=void 0,a=zt(O),o=!G,s=new Set;return xn(()=>{var t=K,n=p();i=n.promise;try{Promise.resolve(e()).then(n.resolve,e=>{e!==de&&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|=re,Vt(a,t)):(a.f&8388608&&(a.f^=re),Vt(a,e)),c.deactivate())};n.promise.then(u,e=>u(null,e||`unknown`))}),gn(()=>{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 Wn(t),t}function ut(e){let t=st(e);return t.equals=Le,t}function dt(e){var t=e.effects;if(t!==null){e.effects=null;for(var n=0;n<t.length;n+=1)On(t[n])}}function ft(e){var t,n=K,r=e.parent;if(!Rn&&r!==null&&e.v!==O&&r.f&24576)return Ee(),e.v;Hn(r);try{e.f&=~ee,dt(e),t=nr(e)}finally{Hn(n)}return t}function pt(e){var t=ft(e);if(!e.equals(t)&&(e.wv=$n(),(!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}Rn||(vt===null?Je(e):(hn()||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(de),t.fn!==null&&(t.teardown=d),t.ac=null,ir(t,0),En(t))}function ht(e){if(e.effects!==null)for(let t of e.effects)t.teardown&&t.fn!==null&&ar(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):er(r)&&(i&16&&this.#d.add(r),ar(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!==O&&!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,We(()=>{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&&We(()=>{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===K&&(G===null||!(G.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(Ge(),L===null)return n;L.flush()}}finally{bt=t}}function Ot(){try{ve()}catch(e){P(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)&&er(r)&&(kt=new Set,ar(r),r.deps===null&&r.first===null&&r.nodes===null&&r.teardown===null&&r.ac===null&&An(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||ar(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:Fe,rv:0,wv:0}}function R(e,t){let n=zt(e,t);return Wn(n),n}function Bt(e,t=!1,n=!0){let r=zt(e);return t||(r.equals=Le),r}function z(e,t,n=!1){return G!==null&&(!Bn||G.f&131072)&&Ve()&&G.f&4325394&&(Un===null||!Un.has(e))&&Se(),Vt(e,n?B(t):t,Ct)}function Vt(e,t,n=null){if(!e.equals(t)){Lt.set(e,Rn?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=$n(),Wt(e,h,n),Ve()&&K!==null&&K.f&1024&&!(K.f&96)&&(qn===null?Jn([e]):qn.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=er(e)}catch{t=!0}t&&ar(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=Ve(),a=r.length,o=0;o<a;o++){var s=r[o],c=s.f;if(!(!i&&s===K)){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&&(K===null||!(K.f&2097152))&&(s.f|=ee),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 B(t){if(typeof t!=`object`||!t||E 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=Zn,f=e=>{if(Zn===d)return e();var t=G,n=Zn;Vn(null),Qn(d);var r=e();return Vn(t),Qn(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)&&be();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(O,u));r.set(t,e),Ut(o)}}else z(n,O),Ut(o);return!0},get(e,n,i){if(n===E)return t;var o=r.get(n),s=n in e;if(o===void 0&&(!s||a(e,n)?.writable)&&(o=f(()=>R(B(s?e[n]:O),u)),r.set(n,o)),o!==void 0){var c=q(o);return c===O?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=q(i))}else if(n===void 0){var a=r.get(t),o=a?.v;if(a!==void 0&&o!==O)return{enumerable:!0,configurable:!0,value:o,writable:!0}}return n},has(e,t){if(t===E)return!0;var n=r.get(t),i=n!==void 0&&n.v!==O||Reflect.has(e,t);return(n!==void 0||K!==null&&(!i||a(e,t)?.writable))&&(n===void 0&&(n=f(()=>R(i?B(e[t]):O,u)),r.set(t,n)),q(n)===O)?!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(O,u)),r.set(d+``,p)):z(p,O)}if(c===void 0)(!l||a(e,t)?.writable)&&(c=f(()=>R(void 0,u)),z(c,B(n)),r.set(t,c));else{l=c.v!==O;var m=f(()=>B(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){q(o);var t=Reflect.ownKeys(e).filter(e=>{var t=r.get(e);return t===void 0||t.v!==O});for(var[n,i]of r)i.v!==O&&!(n in e)&&t.push(n);return t},setPrototypeOf(){xe()}})}function Gt(e){try{if(typeof e==`object`&&e&&E in e)return e[E]}catch{}return e}function Kt(e,t){return Object.is(Gt(e),Gt(t))}var qt,Jt,Yt,Xt,Zt;function Qt(){if(qt===void 0){qt=window,Jt=document,Yt=/Firefox/.test(navigator.userAgent);var e=Element.prototype,t=Node.prototype,n=Text.prototype;Xt=a(t,`firstChild`).get,Zt=a(t,`nextSibling`).get,u(e)&&(e[se]=void 0,e[oe]=null,e[ce]=void 0,e.__e=void 0),u(n)&&(n[le]=void 0)}}function $t(e=``){return document.createTextNode(e)}function en(e){return Xt.call(e)}function tn(e){return Zt.call(e)}function V(e,t){if(!k)return en(e);var n=en(A);if(n===null)n=A.appendChild($t());else if(t&&n.nodeType!==3){var r=$t();return n?.before(r),j(r),r}return t&&on(n),j(n),n}function H(e,t=!1){if(!k){var n=en(e);return n instanceof Comment&&n.data===``?tn(n):n}if(t){if(A?.nodeType!==3){var r=$t();return A?.before(r),j(r),r}on(A)}return A}function U(e,t=1,n=!1){let r=k?A:e;for(var i;t--;)i=r,r=tn(r);if(!k)return r;if(n){if(r?.nodeType!==3){var a=$t();return r===null?i?.after(a):r.before(a),j(a),a}on(r)}return j(r),r}function nn(e){e.textContent=``}function rn(){return!1}function an(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 on(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 sn(e){k&&en(e)!==null&&nn(e)}var cn=!1;function ln(){cn||(cn=!0,document.addEventListener(`reset`,e=>{Promise.resolve().then(()=>{if(!e.defaultPrevented)for(let t of e.target.elements)t[ue]?.()})},{capture:!0}))}function un(e){var t=G,n=K;Vn(null),Hn(null);try{return e()}finally{Vn(t),Hn(n)}}function dn(e,t,n,r=n){e.addEventListener(t,()=>un(n));let i=e[ue];i?e[ue]=()=>{i(),r(!0)}:e[ue]=()=>r(!0),ln()}function fn(e){K===null&&(G===null&&_e(e),ge()),Rn&&D(e)}function pn(e,t){var n=t.last;n===null?t.last=t.first=e:(n.next=e,e.prev=n,t.last=e)}function mn(e,t){var n=K;n!==null&&n.f&8192&&(e|=_);var r={ctx:N,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{ar(r)}catch(e){throw On(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&&pn(i,n),G!==null&&G.f&2&&!(e&64))){var a=G;(a.effects??=[]).push(i)}return r}function hn(){return G!==null&&!Bn}function gn(e){let t=mn(8,null);return F(t,m),t.teardown=e,t}function _n(e){fn(`$effect`);var t=K.f;if(!G&&t&32&&N!==null&&!N.i){var n=N;(n.e??=[]).push(e)}else return vn(e)}function vn(e){return mn(4|w,e)}function yn(e){Et.ensure();let t=mn(64|C,e);return(e={})=>new Promise(n=>{e.outro?jn(t,()=>{On(t),n(void 0)}):(On(t),n(void 0))})}function bn(e){return mn(4,e)}function xn(e){return mn(ne|C,e)}function Sn(e,t=0){return mn(8|t,e)}function W(e,t=[],n=[],r=[]){rt(r,t,n,t=>{mn(8,()=>{e(...t.map(q))})})}function Cn(e,t=0){return mn(16|t,e)}function wn(e){return mn(32|C,e)}function Tn(e){var t=e.teardown;if(t!==null){let e=Rn,n=G;zn(!0),Vn(null);try{t.call(null)}finally{zn(e),Vn(n)}}}function En(e,t=!1){var n=e.first;for(e.first=e.last=null;n!==null;){let e=n.ac;e!==null&&un(()=>{e.abort(de)});var r=n.next;n.f&64?n.parent=null:On(n,t),n=r}}function Dn(e){for(var t=e.first;t!==null;){var n=t.next;t.f&32||On(t),t=n}}function On(e,t=!0){var n=!1;(t||e.f&262144)&&e.nodes!==null&&e.nodes.end!==null&&(kn(e.nodes.start,e.nodes.end),n=!0),e.f|=b,En(e,t&&!n),ir(e,0);var r=e.nodes&&e.nodes.t;if(r!==null)for(let e of r)e.stop();Tn(e),e.f^=b,e.f|=v;var i=e.parent;i!==null&&i.first!==null&&An(e),e.next=e.prev=e.teardown=e.ctx=e.deps=e.fn=e.nodes=e.ac=e.b=null}function kn(e,t){for(;e!==null;){var n=e===t?null:tn(e);e.remove(),e=n}}function An(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 jn(e,t,n=!0){var r=[];Mn(e,r,!0);var i=()=>{n&&On(e),t&&t()},a=r.length;if(a>0){var o=()=>--a||i();for(var s of r)s.out(o)}else i()}function Mn(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;Mn(i,t,o?n:!1)}i=a}}}function Nn(e){Pn(e,!0)}function Pn(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;Pn(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 Fn(e,t){if(e.nodes)for(var n=e.nodes.start,r=e.nodes.end;n!==null;){var i=n===r?null:tn(n);t.append(n),n=i}}var In=null,Ln=!1,Rn=!1;function zn(e){Rn=e}var G=null,Bn=!1;function Vn(e){G=e}var K=null;function Hn(e){K=e}var Un=null;function Wn(e){G!==null&&(Un??=new Set).add(e)}var Gn=null,Kn=0,qn=null;function Jn(e){qn=e}var Yn=1,Xn=0,Zn=Xn;function Qn(e){Zn=e}function $n(){return++Yn}function er(e){var t=e.f;if(t&2048)return!0;if(t&2&&(e.f&=~ee),t&4096){for(var n=e.deps,r=n.length,i=0;i<r;i++){var a=n[i];if(er(a)&&pt(a),a.wv>e.wv)return!0}t&512&&vt===null&&F(e,m)}return!1}function tr(e,t,n=!0){var r=e.reactions;if(r!==null&&!(Un!==null&&Un.has(e)))for(var i=0;i<r.length;i++){var a=r[i];a.f&2?tr(a,t,!1):t===a&&(n?F(a,h):a.f&1024&&F(a,g),Nt(a))}}function nr(e){var t=Gn,n=Kn,r=qn,i=G,a=Un,o=N,s=Bn,c=Zn,l=e.f;Gn=null,Kn=0,qn=null,G=l&96?null:e,Un=null,Re(e.ctx),Bn=!1,Zn=++Xn,e.ac!==null&&(un(()=>{e.ac.abort(de)}),e.ac=null);try{e.f|=te;var u=e.fn,d=u();e.f|=y;var f=e.deps,p=L?.is_fork;if(Gn!==null){var m;if(p||ir(e,Kn),f!==null&&Kn>0)for(f.length=Kn+Gn.length,m=0;m<Gn.length;m++)f[Kn+m]=Gn[m];else e.deps=f=Gn;if(hn()&&e.f&512)for(m=Kn;m<f.length;m++)(f[m].reactions??=[]).push(e)}else!p&&f!==null&&Kn<f.length&&(ir(e,Kn),f.length=Kn);if(Ve()&&qn!==null&&!Bn&&f!==null&&!(e.f&6146))for(m=0;m<qn.length;m++)tr(qn[m],e);if(i!==null&&i!==e){if(Xn++,i.deps!==null)for(let e=0;e<n;e+=1)i.deps[e].rv=Xn;if(t!==null)for(let e of t)e.rv=Xn;qn!==null&&(r===null?r=qn:r.push(...qn))}return e.f&8388608&&(e.f^=re),d}catch(e){return Ke(e)}finally{e.f^=te,Gn=t,Kn=n,qn=r,G=i,Un=a,Re(o),Bn=s,Zn=c}}function rr(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&&(Gn===null||!n.call(Gn,r))){var s=r;s.f&512&&(s.f^=512,s.f&=~ee),s.v!==O&&Je(s),mt(s),ir(s,0)}}function ir(e,t){var n=e.deps;if(n!==null)for(var r=t;r<n.length;r++)rr(e,n[r])}function ar(e){var t=e.f;if(!(t&16384)){F(e,m);var n=K,r=Ln;K=e,Ln=!0;try{t&16777232?Dn(e):En(e),Tn(e);var i=nr(e);e.teardown=typeof i==`function`?i:null,e.wv=Yn}finally{Ln=r,K=n}}}async function or(){await Promise.resolve(),Dt()}function q(e){var t=(e.f&2)!=0;if(In?.add(e),G!==null&&!Bn&&!(K!==null&&K.f&16384)&&(Un===null||!Un.has(e))){var r=G.deps;if(G.f&2097152)e.rv<Xn&&(e.rv=Xn,Gn===null&&r!==null&&r[Kn]===e?Kn++:Gn===null?Gn=[e]:Gn.push(e));else{G.deps??=[],n.call(G.deps,e)||G.deps.push(e);var i=e.reactions;i===null?e.reactions=[G]:n.call(i,G)||i.push(G)}}if(Rn&&Lt.has(e))return Lt.get(e);if(t){var a=e;if(Rn){var o=a.v;return(!(a.f&1024)&&a.reactions!==null||cr(a))&&(o=ft(a)),Lt.set(a,o),o}var s=(a.f&512)==0&&!Bn&&G!==null&&(Ln||(G.f&512)!=0),c=(a.f&y)===0;er(a)&&(s&&(a.f|=512),pt(a)),s&&!c&&(ht(a),sr(a))}if(vt?.has(e))return vt.get(e);if(e.f&8388608)throw e.v;return e.v}function sr(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),sr(t))}function cr(e){if(e.v===O)return!0;if(e.deps===null)return!1;for(let t of e.deps)if(Lt.has(t)||t.f&2&&cr(t))return!0;return!1}function lr(e){var t=Bn;try{return Bn=!0,e()}finally{Bn=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 ur=[`touchstart`,`touchmove`];function dr(e){return ur.includes(e)}var fr=Symbol(`events`),pr=new Set,mr=new Set;function hr(e,t,n,r={}){function i(e){if(r.capture||yr.call(t,e),!e.cancelBubble)return un(()=>n?.call(this,e))}return e.startsWith(`pointer`)||e.startsWith(`touch`)||e===`wheel`?We(()=>{t.addEventListener(e,i,r)}):t.addEventListener(e,i,r),i}function gr(e,t,n,r,i){var a={capture:r,passive:i},o=hr(e,t,n,a);(t===document.body||t===window||t===document||t instanceof HTMLMediaElement)&&gn(()=>{t.removeEventListener(e,o,a)})}function J(e,t,n){(t[fr]??={})[e]=n}function _r(e){for(var t=0;t<e.length;t++)pr.add(e[t]);for(var n of mr)n(e)}var vr=null;function yr(e){var t=this,n=t.ownerDocument,r=e.type,a=e.composedPath?.()||[],o=a[0]||e.target;vr=e;var s=0,c=vr===e&&e[fr];if(c){var l=a.indexOf(c);if(l!==-1&&(t===document||t===window)){e[fr]=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=G,f=K;Vn(null),Hn(null);try{for(var p,m=[];o!==null&&o!==t;){try{var h=o[fr]?.[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[fr]=t,delete e.currentTarget,Vn(d),Hn(f)}}}var br=globalThis?.window?.trustedTypes&&globalThis.window.trustedTypes.createPolicy(`svelte-trusted-html`,{createHTML:e=>e});function xr(e){return br?.createHTML(e)??e}function Sr(e){var t=an(`template`);return t.innerHTML=xr(e.replaceAll(`<!>`,`<!---->`)),t.content}function Cr(e,t){var n=K;n.nodes===null&&(n.nodes={start:e,end:t,a:null,t:null})}function Y(e,t){var n=(t&1)!=0,r=(t&2)!=0,i,a=!e.startsWith(`<!>`);return()=>{if(k)return Cr(A,null),A;i===void 0&&(i=Sr(a?e:`<!>`+e),n||(i=en(i)));var t=r||Yt?document.importNode(i,!0):i.cloneNode(!0);if(n){var o=en(t),s=t.lastChild;Cr(o,s)}else Cr(t,t);return t}}function wr(e=``){if(!k){var t=$t(e+``);return Cr(t,t),t}var n=A;return n.nodeType===3?on(n):(n.before(n=$t()),j(n)),Cr(n,n),n}function Tr(){if(k)return Cr(A,null),A;var e=document.createDocumentFragment(),t=document.createComment(``),n=$t();return e.append(t,n),Cr(t,n),e}function X(e,t){if(k){var n=K;(!(n.f&32768)||n.nodes.end===null)&&(n.nodes.end=A),je();return}e!==null&&e.before(t)}function Z(e,t){var n=t==null?``:typeof t==`object`?`${t}`:t;n!==(e[le]??=e.nodeValue)&&(e[le]=n,e.nodeValue=`${n}`)}function Er(e,t){return Or(e,t)}var Dr=new Map;function Or(e,{target:t,anchor:n,props:i={},events:a,context:o,intro:s=!0,transformError:c}){Qt();var l=void 0,u=yn(()=>{var s=n??t.appendChild($t());tt(s,{pending:()=>{}},t=>{ze({});var n=N;if(o&&(n.c=o),a&&(i.$$events=a),k&&Cr(t,null),l=e(t,i)||{},k&&(K.nodes.end=A,A===null||A.nodeType!==8||A.data!==`]`))throw De(),we;Be()},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=dr(r);for(let e of[t,document]){var a=Dr.get(e);a===void 0&&(a=new Map,Dr.set(e,a));var o=a.get(r);o===void 0?(e.addEventListener(r,yr,{passive:i}),a.set(r,1)):a.set(r,o+1)}}}};return d(r(pr)),mr.add(d),()=>{for(var e of u)for(let n of[t,document]){var r=Dr.get(n),i=r.get(e);--i==0?(n.removeEventListener(e,yr),r.delete(e),r.size===0&&Dr.delete(n)):r.set(e,i)}mr.delete(d),s!==n&&s.parentNode?.removeChild(s)}});return kr.set(l,u),l}var kr=new WeakMap,Ar=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)Nn(n),this.#r.delete(t);else{var r=this.#n.get(t);r&&(Nn(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&&(On(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();Fn(r,t),t.append($t()),this.#n.set(e,{effect:r,fragment:t})}else On(r);this.#r.delete(e),this.#t.delete(e)};this.#i||!n?(this.#r.add(e),jn(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)||(On(n.effect),this.#n.delete(e))};ensure(e,t){var n=L,r=rn();if(t&&!this.#t.has(e)&&!this.#n.has(e))if(r){var i=document.createDocumentFragment(),a=$t();i.append(a),this.#n.set(e,{effect:wn(()=>t(a)),fragment:i})}else this.#t.set(e,wn(()=>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 k&&(this.anchor=A),this.#a(n)}};function Q(e,t,n=!1){var r;k&&(r=A,je());var i=new Ar(e),a=n?x:0;function o(e,t){if(k){var n=Pe(r);if(e!==parseInt(n.substring(1))){var a=Ne();j(a),i.anchor=a,Ae(!1),i.ensure(e,t),Ae(!0);return}}i.ensure(e,t)}Cn(()=>{var e=!1;t((t,n=0)=>{e=!0,o(n,t)}),e||o(-1,null)},a)}function jr(e,t){return t}function Mr(e,t,n){for(var i=[],a=t.length,o,s=t.length,c=0;c<a;c++){let n=t[c];jn(n,()=>{if(o){if(o.pending.delete(n),o.done.add(n),o.pending.size===0){var t=e.outrogroups;Nr(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;nn(d),d.append(u),e.items.clear()}Nr(e,t,!l)}else o={pending:new Set(t),done:new Set},(e.outrogroups??=new Set).add(o)}function Nr(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,Fn(a,document.createDocumentFragment())):On(t[i],n)}}var Pr;function Fr(t,n,i,a,o,s=null){var c=t,l=new Map;if(n&4){var u=t;c=k?j(en(u)):u.appendChild($t())}k&&je();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)):Nn(d):jn(d,()=>{d=null})))}function _(e){v.pending.delete(e)}var v={effect:Cn(()=>{p=q(f);var e=p.length;let t=!1;k&&Pe(c)===`[!`!=(e===0)&&(c=Ne(),j(c),Ae(!1),t=!0);for(var r=new Set,u=L,v=rn(),y=0;y<e;y+=1){k&&A.nodeType===8&&A.data===`]`&&(c=A,t=!0,Ae(!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:Pr??=$t(),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=wn(()=>s(c)):(d=wn(()=>s(Pr??=$t())),d.f|=T)),e>r.size&&he(``,``,``),k&&e>0&&j(Ne()),!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&&Ae(!0),q(f)}),flags:n,items:l,pending:m,outrogroups:null,fallback:d};h=!1,k&&(c=A)}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&&(Nn(_),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&&(Nr(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 ee=w.length;if(ee>0){var te=i&4&&s===0?n:null;if(o){for(v=0;v<ee;v+=1)w[v].nodes?.a?.measure();for(v=0;v<ee;v+=1)w[v].nodes?.a?.fix()}Mr(e,w,te)}}o&&We(()=>{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:wn(()=>(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=tn(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=k;var i;if(k){n=A;for(var a=en(document.head);a!==null&&(a.nodeType!==8||a.data!==e);)a=tn(a);if(a===null)Ae(!1);else{var o=tn(a);a.remove(),j(o)}}k||(i=document.head.appendChild($t()));try{Cn(()=>{var e=wn(()=>t(i));e.f|=S})}finally{r&&(Ae(!0),j(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[se];if(k||o!==n||o===void 0){var s=Kr(n,r,a);(!k||s!==e.getAttribute(`class`))&&(s==null?e.removeAttribute(`class`):t?e.className=s:e.setAttribute(`class`,s)),e[se]=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[ce];if(k||i!==t){var a=Yr(t,r);(!k||a!==e.getAttribute(`style`))&&(a==null?e.removeAttribute(`style`):e.style.cssText=a),e[ce]=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 Oe();for(var i of t.options)i.selected=n.includes(ti(i));return}for(i of t.options)if(Kt(ti(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`]}),gn(()=>{t.disconnect()})}function ti(e){return`__value`in e?e.__value:e.value}var ni=Symbol(`is custom element`),ri=Symbol(`is html`),ii=fe?`link`:`LINK`,ai=fe?`progress`:`PROGRESS`;function oi(e){if(k){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[ue]=n,We(n),ln()}}function si(e,t){var n=ci(e);n.value===(n.value=t??void 0)||e.value===t&&(t!==0||e.nodeName!==ai)||(e.value=t??``)}function $(e,t,n,r){var i=ci(e);k&&(i[t]=e.getAttribute(t),t===`src`||t===`srcset`||t===`href`&&e.nodeName===ii)||i[t]!==(i[t]=n)&&(t===`loading`&&(e[ae]=n),n==null?e.removeAttribute(t):typeof n!=`string`&&ui(e).includes(t)?e[t]=n:e.setAttribute(t,n))}function ci(e){return e[oe]??={[ni]:e.nodeName.includes(`-`),[ri]:e.namespaceURI===Te}}var li=new Map;function ui(e){var t=e.getAttribute(`is`)||e.nodeName,n=li.get(t);if(n)return n;li.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 di(e,t,n=t){var r=new WeakSet;dn(e,`input`,async i=>{var a=i?e.defaultValue:e.value;if(a=fi(e)?pi(a):a,n(a),L!==null&&r.add(L),await or(),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))}}}),(k&&e.defaultValue!==e.value||lr(t)==null&&e.value)&&(n(fi(e)?pi(e.value):e.value),L!==null&&r.add(L)),Sn(()=>{var n=t();if(e===document.activeElement){var i=L;if(r.has(i))return}fi(e)&&n===pi(e.value)||e.type===`date`&&!n&&!e.value||n!==e.value&&(e.value=n??``)})}function fi(e){var t=e.type;return t===`number`||t===`range`}function pi(e){return e===``?null:+e}function mi(e,t){return e===t||e?.[E]===t}function hi(e={},t,n,r){var i=N.r,a=K;return bn(()=>{var o,s;return Sn(()=>{o=s,s=r?.()||[],lr(()=>{mi(n(...s),e)||(t(e,...s),o&&mi(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&&mi(n(...s),e)&&t(null,...s)},c=r.teardown;r.teardown=()=>{o(),c?.()}}}),e}function gi(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),q(u)):(l&&(l=!1,c=s?lr(r):r),c);let f;if(o){var p=E in e||ie 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&&ye(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&&q(y);var b=K;return(function(e,t){if(arguments.length>0){let n=t?q(y):i&&o?B(e):e;return z(y,n),v=!0,c!==void 0&&(c=n),e}return Rn&&v||b.f&16384?y.v:q(y)})}function _i(e){N===null&&pe(`onMount`),_n(()=>{let t=lr(e);if(typeof t==`function`)return t})}function vi(e){N===null&&pe(`onDestroy`),_i(()=>()=>lr(e))}typeof window<`u`&&((window.__svelte??={}).v??=new Set).add(`5`);var yi=Y(`<p class="session-path svelte-t9laac"> </p>`),bi=Y(`<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 xi(e,t){ze(t,!0);let n=gi(t,`sessionPath`,3,null);var r=bi(),i=H(r),a=U(V(i),2),o=e=>{var t=yi(),r=V(t,!0);M(t),W(()=>{$(t,`title`,n()),Z(r,n())}),X(e,t)};Q(a,e=>{n()&&e(o)}),Me(2),M(i);var s=U(i,2),c=U(V(s),2),l=U(V(c),2),u=V(l);u.value=u.__value=`system`;var d=U(u);d.value=d.__value=`light`;var f=U(d);f.value=f.__value=`dark`,M(l);var p;ei(l),M(c),M(s),W(()=>{p!==(p=t.theme)&&(l.value=(l.__value=t.theme)??``,$r(l,t.theme))}),J(`change`,l,e=>t.onthemechange(e.currentTarget.value)),X(e,r),Be()}_r([`change`]);var Si=Y(`<details><summary> </summary><pre> </pre></details>`),Ci=Y(`<section aria-labelledby="activities-title"><h3 id="activities-title">Activity</h3> <!></section>`);function wi(e,t){ze(t,!0);var n=Tr(),r=H(n),i=e=>{var n=Ci();Fr(U(V(n),2),17,()=>t.activities,e=>e.id,(e,t)=>{var n=Si(),r=V(n),i=V(r,!0);M(r);var a=U(r),o=V(a,!0);M(a),M(n),W(()=>{Z(i,q(t).label),Z(o,q(t).detail)}),X(e,n)}),M(n),X(e,n)};Q(r,e=>{t.activities.length&&e(i)}),X(e,n),Be()}function Ti(e){return!Di(e)||!Array.isArray(e.questions)?[]:e.questions.flatMap(e=>!Di(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=>Di(e)&&typeof e.label==`string`&&typeof e.description==`string`?[{label:e.label,description:e.description}]:[]):[]}])}function Ei(e){return{answers:Object.fromEntries(e.filter(e=>e.answer.trim()).map(e=>[e.id,{answers:[e.answer]}]))}}function Di(e){return typeof e==`object`&&!!e}var Oi=Y(`<button type="button"> </button>`),ki=Y(`<label> </label> <input/> <!>`,1),Ai=Y(`<form><!> <button type="submit">Send answers</button></form>`),ji=Y(`<p>Grant the requested permissions for this turn only.</p><button type="button">Approve</button>`,1),Mi=Y(`<button type="button">Approve</button><button type="button">Deny</button>`,1),Ni=Y(`<article><p> </p> <!></article>`),Pi=Y(`<section aria-labelledby="interactions-title"><h3 id="interactions-title">Codex needs your decision</h3> <!></section>`);function Fi(e,t){ze(t,!0);var n=Tr(),r=H(n),i=e=>{var n=Pi();Fr(U(V(n),2),17,()=>t.interactions,e=>e.requestId,(e,n)=>{var r=Ni(),i=V(r),a=V(i,!0);M(i);var o=U(i,2),s=e=>{let r=I(()=>Ti(q(n).payload));var i=Ai(),a=V(i);Fr(a,17,()=>q(r),e=>e.id,(e,r)=>{var i=ki(),a=H(i),o=V(a);M(a);var s=U(a,2);oi(s),Fr(U(s,2),17,()=>q(r).options,e=>e.label,(e,n)=>{var i=Oi(),a=V(i,!0);M(i),W(()=>Z(a,q(n).label)),J(`click`,i,()=>t.onanswer(q(r).id,q(n).label)),X(e,i)}),W(()=>{$(a,`for`,`${q(n).requestId}-${q(r).id}`),Z(o,`${q(r).header??``}: ${q(r).question??``}`),$(s,`id`,`${q(n).requestId}-${q(r).id}`),$(s,`type`,q(r).isSecret?`password`:`text`),si(s,t.answers[q(r).id]??``)}),J(`input`,s,e=>t.onanswer(q(r).id,e.currentTarget.value)),X(e,i)});var o=U(a,2);M(i),W(()=>o.disabled=!q(r).length),gr(`submit`,i,e=>{e.preventDefault(),t.onuserinput(q(n))}),X(e,i)},c=e=>{var r=ji();J(`click`,U(H(r)),()=>t.onpermission(q(n))),X(e,r)},l=e=>{var r=Mi(),i=H(r),a=U(i);J(`click`,i,()=>t.ondecision(q(n).requestId,`accept`)),J(`click`,a,()=>t.ondecision(q(n).requestId,`decline`)),X(e,r)};Q(o,e=>{q(n).kind===`userInput`?e(s):q(n).kind===`permissionsApproval`?e(c,1):e(l,-1)}),M(r),W(()=>Z(a,q(n).kind)),X(e,r)}),M(n),X(e,n)};Q(r,e=>{t.interactions.length&&e(i)}),X(e,n),Be()}_r([`input`,`click`]);function Ii(e){return e.key===`Enter`&&!e.shiftKey&&!e.ctrlKey&&!e.isComposing}var Li=Y(`Ready <span class="block-cursor svelte-1264sfg" aria-hidden="true"></span>`,1),Ri=Y(`<button type="button" class="svelte-1264sfg">Interrupt</button>`),zi=Y(`<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 Bi(e,t){ze(t,!0);function n(e){!Ii(e)||t.activeTurnId||t.starting||!t.message.trim()||(e.preventDefault(),t.onsend())}var r=zi(),i=V(r),a=V(i),o=e=>{var t=Li();Me(),X(e,t)},s=e=>{var n=wr();W(()=>Z(n,t.status)),X(e,n)};Q(a,e=>{t.status===`Ready.`?e(o):e(s,-1)}),M(i);var c=U(i,2),l=V(c);sn(l);var u=U(l,2);M(c);var d=U(c,2),f=e=>{var n=Ri();J(`click`,n,function(...e){t.oninterrupt?.apply(this,e)}),X(e,n)};Q(d,e=>{t.activeTurnId&&e(f)}),M(r),W(e=>{$(i,`aria-label`,t.status),si(l,t.message),u.disabled=e},[()=>!!t.activeTurnId||t.starting||!t.message.trim()]),gr(`submit`,r,e=>{e.preventDefault(),t.onsend()}),J(`input`,l,e=>t.onchange(e.currentTarget.value)),J(`keydown`,l,n),X(e,r),Be()}_r([`input`,`keydown`,`click`]);function Vi(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 Hi(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 Ui(e){return new Intl.DateTimeFormat(void 0,{hour:`2-digit`,minute:`2-digit`}).format(e)}function Wi(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(...Gi(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(...Gi(i)),t}function Gi(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:Ji(i)})};for(let e=0;e<n.length-1;e+=1){let a=Ki(n[e]??``),o=Ki(n[e+1]??``);if(!a||!o||a.length!==o.length||!o.every(qi))continue;i(e),e+=2;let s=[];for(;e<n.length;){let t=Ki(n[e]??``);if(!t||t.length!==a.length)break;s.push(t),e+=1}t.push({kind:`table`,headers:a.map(Ji),rows:s.map(e=>e.map(Ji))}),r=e,--e}return i(n.length),t.length?t:[{kind:`text`,parts:Ji(e)}]}function Ki(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 qi(e){return/^:?-{3,}:?$/.test(e)}function Ji(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 Yi=(e,t=d)=>{var n=Tr();Fr(H(n),17,t,jr,(e,t)=>{var n=Tr(),r=H(n),i=e=>{var n=Zi(),r=V(n,!0);M(n),W(()=>{$(n,`href`,q(t).href),Z(r,q(t).text)}),X(e,n)},a=e=>{var n=Qi(),r=V(n,!0);M(n),W(()=>Z(r,q(t).text)),X(e,n)},o=e=>{var n=wr();W(()=>Z(n,q(t).text)),X(e,n)};Q(r,e=>{q(t).kind===`link`?e(i):q(t).kind===`code`?e(a,1):e(o,-1)}),X(e,n)}),X(e,n)},Xi=(e,t=d)=>{var n=Tr();Fr(H(n),17,()=>Wi(t()),jr,(e,t)=>{var n=Tr(),r=H(n),i=e=>{var n=$i(),r=V(n),i=V(r,!0);M(r),M(n),W(()=>Z(i,q(t).text)),X(e,n)},a=e=>{var n=ra(),r=V(n),i=V(r),a=V(i);Fr(a,21,()=>q(t).headers,jr,(e,t)=>{var n=ea();Yi(V(n),()=>q(t)),M(n),X(e,n)}),M(a),M(i);var o=U(i);Fr(o,21,()=>q(t).rows,jr,(e,t)=>{var n=na();Fr(n,21,()=>q(t),jr,(e,t)=>{var n=ta();Yi(V(n),()=>q(t)),M(n),X(e,n)}),M(n),X(e,n)}),M(o),M(r),M(n),X(e,n)},o=e=>{var n=ia();Yi(V(n),()=>q(t).parts),M(n),X(e,n)};Q(r,e=>{q(t).kind===`code`?e(i):q(t).kind===`table`?e(a,1):e(o,-1)}),X(e,n)}),X(e,n)},Zi=Y(`<a target="_blank" rel="noreferrer"> </a>`),Qi=Y(`<code class="svelte-1im954t"> </code>`),$i=Y(`<pre class="svelte-1im954t"><code class="svelte-1im954t"> </code></pre>`),ea=Y(`<th scope="col" class="svelte-1im954t"><!></th>`),ta=Y(`<td class="svelte-1im954t"><!></td>`),na=Y(`<tr></tr>`),ra=Y(`<div class="table-scroll svelte-1im954t"><table class="svelte-1im954t"><thead><tr></tr></thead><tbody></tbody></table></div>`),ia=Y(`<div><!></div>`),aa=Y(`<time class="svelte-1im954t"> <!></time>`),oa=Y(`<div class="entry-heading svelte-1im954t"><strong>prompt</strong> <!></div> <div class="entry-content svelte-1im954t"><!></div>`,1),sa=Y(`<button class="commentary-toggle svelte-1im954t" type="button"><span aria-hidden="true"> </span>commentary</button>`),ca=Y(`<div class="commentary-content svelte-1im954t"><!></div>`),la=Y(`<section class="answer-turn"><div class="entry-heading svelte-1im954t"><strong>answer</strong> <!> <!></div> <!> <div class="entry-content svelte-1im954t"><!></div></section>`),ua=Y(`<details><summary>commentary</summary> <!></details>`),da=Y(`<li><!></li>`),fa=Y(`<ol aria-label="Chat messages" class="svelte-1im954t"></ol>`);function pa(e,t){ze(t,!0);let n=I(()=>Vi(t.messages)),r=B({});var i=fa();Fr(i,23,()=>q(n),e=>e.id,(e,t,i)=>{var a=da(),o=V(a),s=e=>{var r=oa(),a=H(r),o=U(V(a),2),s=e=>{var r=aa(),a=V(r),o=U(a),s=e=>{var r=wr();W(e=>Z(r,`· ${e??``}`),[()=>Hi(q(n)[q(i)-1]?.occurredAt,q(t).occurredAt)]),X(e,r)},c=I(()=>Hi(q(n)[q(i)-1]?.occurredAt,q(t).occurredAt));Q(o,e=>{q(c)&&e(s)}),M(r),W((e,t)=>{$(r,`datetime`,e),Z(a,`${t??``} `)},[()=>new Date(q(t).occurredAt).toISOString(),()=>Ui(q(t).occurredAt)]),X(e,r)};Q(o,e=>{q(t).occurredAt&&e(s)}),M(a);var c=U(a,2);Xi(V(c),()=>q(t).text),M(c),X(e,r)},c=e=>{var a=la(),o=V(a),s=U(V(o),2),c=e=>{var n=sa(),i=V(n),a=V(i,!0);M(i),Me(),M(n),W(e=>{$(n,`aria-expanded`,e),$(n,`aria-controls`,`commentary-${q(t).id}`),Z(a,r[q(t).id]?`⌄`:`>`)},[()=>!!r[q(t).id]]),J(`click`,n,()=>r[q(t).id]=!r[q(t).id]),X(e,n)};Q(s,e=>{q(t).commentary&&e(c)});var l=U(s,2),u=e=>{var r=aa(),a=V(r),o=U(a),s=e=>{var r=wr();W(e=>Z(r,`· ${e??``}`),[()=>Hi(q(n)[q(i)-1]?.occurredAt,q(t).occurredAt)]),X(e,r)},c=I(()=>Hi(q(n)[q(i)-1]?.occurredAt,q(t).occurredAt));Q(o,e=>{q(c)&&e(s)}),M(r),W((e,t)=>{$(r,`datetime`,e),Z(a,`${t??``} `)},[()=>new Date(q(t).occurredAt).toISOString(),()=>Ui(q(t).occurredAt)]),X(e,r)};Q(l,e=>{q(t).occurredAt&&e(u)}),M(o);var d=U(o,2),f=e=>{var n=ca();Xi(V(n),()=>q(t).commentary),M(n),W(()=>$(n,`id`,`commentary-${q(t).id}`)),X(e,n)};Q(d,e=>{q(t).commentary&&r[q(t).id]&&e(f)});var p=U(d,2);Xi(V(p),()=>q(t).answer),M(p),M(a),X(e,a)},l=e=>{var n=ua();Xi(U(V(n),2),()=>q(t).commentary),M(n),X(e,n)};Q(o,e=>{q(t).kind===`user`?e(s):q(t).answer?e(c,1):q(t).commentary&&e(l,2)}),M(a),W(()=>Xr(a,1,Wr(q(t).kind===`user`?`prompt-turn`:`answer-item`),`svelte-1im954t`)),X(e,a)}),M(i),X(e,i),Be()}_r([`click`]);async function ma(e=fetch){let t=await e(`/api/bootstrap`);if(!t.ok)throw Error(`BOOTSTRAP_FAILED`);return t.json()}function ha(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 ga=`gestalt-mobile`,_a=2,va=[`settings`,`drafts`,`cursors`,`messages`];function ya(e){return new Promise((t,n)=>{let r=e.open(ga,_a);r.onupgradeneeded=()=>{for(let e of va)r.result.objectStoreNames.contains(e)||r.result.createObjectStore(e)},r.onsuccess=()=>t(r.result),r.onerror=()=>n(r.error)})}function ba(e,t,n){return Ca(e.transaction(t,`readonly`).objectStore(t).get(n))}function xa(e,t,n,r){return Ca(e.transaction(t,`readwrite`).objectStore(t).put(r,n))}function Sa(e,t,n){return Ca(e.transaction(t,`readwrite`).objectStore(t).delete(n))}function Ca(e){return new Promise((t,n)=>{e.onsuccess=()=>t(e.result),e.onerror=()=>n(e.error)})}var wa=`messages`;function Ta(e){return e.slice(-200)}function Ea(e=globalThis.indexedDB){if(!e)return{read:async()=>[],write:async()=>{}};let t=ya(e);return{async read(e){try{return await ba(await t,wa,e)??[]}catch{return[]}},async write(e,n){try{await xa(await t,wa,e,Ta(n))}catch{}}}}var Da={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 Oa(e,t){let n=e instanceof Error?e.message:``,r=Object.hasOwn(Da,n)?n:t;return{code:r,message:Da[r]}}var ka={error:null,success:5e3,info:7e3};function Aa(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=ka[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 ja=Y(`<small class="svelte-1a0rutm"> </small>`),Ma=Y(`<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>`),Na=Y(`<div class="toast-viewport svelte-1a0rutm" aria-label="Notifications"></div>`);function Pa(e,t){ze(t,!0);let n=R([]),r=I(()=>q(n).slice(-3));_i(()=>t.queue.subscribe(e=>z(n,e)));var i=Na();Fr(i,21,()=>q(r),e=>e.id,(e,n)=>{var r=Ma();let i;var a=V(r),o=V(a,!0);M(a);var s=U(a,2),c=V(s),l=V(c,!0);M(c);var u=U(c,2),d=V(u,!0);M(u);var f=U(u,2),p=e=>{var t=ja(),r=V(t);M(t),W(()=>Z(r,`Repeated ${q(n).occurrences??``} times.`)),X(e,t)};Q(f,e=>{q(n).occurrences>1&&e(p)}),M(s);var m=U(s,2);M(r),W(()=>{i=Xr(r,1,`toast svelte-1a0rutm`,null,i,{error:q(n).kind===`error`}),$(r,`role`,q(n).kind===`error`?`alert`:`status`),$(r,`aria-live`,q(n).kind===`error`?`assertive`:`polite`),Z(o,q(n).kind===`error`?`!`:q(n).kind===`success`?`✓`:`i`),Z(l,q(n).kind===`error`?`Error`:q(n).kind===`success`?`Success`:`Info`),Z(d,q(n).message),$(m,`aria-label`,`Dismiss ${q(n).kind} notification`)}),gr(`pointerenter`,r,()=>t.queue.pause(q(n).id,`hover`)),gr(`pointerleave`,r,()=>t.queue.resume(q(n).id,`hover`)),J(`focusin`,r,()=>t.queue.pause(q(n).id,`focus`)),J(`focusout`,r,()=>t.queue.resume(q(n).id,`focus`)),J(`click`,m,()=>t.queue.dismiss(q(n).id)),X(e,r)}),M(i),X(e,i),Be()}_r([`focusin`,`focusout`,`click`]);var Fa=Y(`<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 Ia(e,t){ze(t,!0);let n=Aa();_i(()=>{t.variant===`stacked`&&n.enqueue({kind:`success`,message:`Cloned.`}),n.enqueue({kind:`error`,code:`GIT_CLONE_FAILED`,message:`Clone failed.`})});var r=Fa();Pa(U(H(r),4),{get queue(){return n}}),X(e,r),Be()}var La={sessionBase:()=>!0,gitRepositoryTarget:e=>e.isGitRepository,cloneDestination:e=>!e.isGitRepository};function Ra(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 za(e,t){let n=new Set(e);return t.isGitRepository||(n.has(t.id)?n.delete(t.id):n.add(t.id)),n}function Ba(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 Va(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 Ha(e,t){for(let n of e){if(n.id===t)return n;let e=Ha(n.children,t);if(e)return e}}function Ua(e,t,n,r){if(e){let i=Ha(n,e);if(i&&r(i))return i.id;let a=Va(t,e);for(let e of a.toReversed()){let t=Ha(n,e);if(t&&r(t))return t.id}}return Wa(n).find(r)?.id??null}function Wa(e){let t=[],n=e=>{t.push(e),e.children.forEach(n)};return e.forEach(n),t}var Ga=Y(`<button class="disclosure svelte-6z3q4v" type="button" tabindex="-1"><span aria-hidden="true"> </span></button>`),Ka=Y(`<span class="disclosure-spacer svelte-6z3q4v" aria-hidden="true"></span>`),qa=Y(`<span class="repository-badge svelte-6z3q4v">Git</span>`),Ja=Y(`<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>`),Ya=Y(`<div class="filesystem-tree svelte-6z3q4v" role="tree"></div>`);function Xa(e,t){ze(t,!0);let n=gi(t,`isSelectable`,3,()=>!0),r=R(null),i=B({}),a=I(()=>Ba(t.roots,t.expandedIds)),o=I(()=>q(r)&&q(a).some(({node:e})=>e.id===q(r))?q(r):t.selectedId&&q(a).some(({node:e})=>e.id===t.selectedId)?t.selectedId:q(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(q(a).length-1,t)),r=q(a)[n];r&&n!==e&&l(r.node.id)}function d(e){n()(e)&&t.onselect(e)}function f(e){s(e)&&t.onexpandedchange(za(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)?q(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,q(a).length-1);break;case`Enter`:case` `:e.preventDefault(),d(i);break}}var m=Ya();Fr(m,23,()=>q(a),e=>e.node.id,(e,a,l)=>{let u=I(()=>q(a).node),m=I(()=>s(q(u)));var h=Ja();let g;var _=V(h),v=e=>{var n=Ga(),r=V(n),i=V(r,!0);M(r),M(n),W((e,t)=>{$(n,`aria-label`,e),Z(i,t)},[()=>`${t.expandedIds.has(q(u).id)?`Collapse`:`Expand`} ${q(u).name}`,()=>t.expandedIds.has(q(u).id)?`−`:`+`]),J(`click`,n,()=>f(q(u))),X(e,n)},y=e=>{X(e,Ka())};Q(_,e=>{q(m)?e(v):e(y,-1)});var b=U(_,2);let x;var S=V(b),C=V(S,!0);M(S);var w=U(S,2),T=V(w),ee=V(T,!0);M(T);var te=U(T,2),ne=V(te,!0);M(te),M(w);var re=U(w,2),E=e=>{X(e,qa())};Q(re,e=>{q(u).isGitRepository&&e(E)}),M(b),hi(b,(e,t)=>i[t.id]=e,e=>i?.[e.id],()=>[q(u)]),M(h),W((e,n,r,i,s)=>{g=Qr(h,``,g,e),x=Xr(b,1,`tree-item svelte-6z3q4v`,null,x,{selected:t.selectedId===q(u).id,repository:q(u).isGitRepository}),$(b,`aria-level`,q(a).level),$(b,`aria-expanded`,n),$(b,`aria-selected`,t.selectedId===q(u).id),$(b,`aria-disabled`,r),$(b,`tabindex`,q(o)===q(u).id?0:-1),$(b,`title`,i),Z(C,t.selectedId===q(u).id?`✓`:``),Z(ee,q(u).name),Z(ne,s)},[()=>({"--tree-level":Math.min(q(a).level-1,6)}),()=>q(m)?t.expandedIds.has(q(u).id):void 0,()=>!n()(q(u)),()=>c(q(u).relativePath),()=>c(q(u).relativePath)]),gr(`focus`,b,()=>z(r,q(u).id,!0)),J(`keydown`,b,e=>p(e,q(a),q(l))),J(`click`,b,()=>d(q(u))),X(e,h)}),M(m),W(()=>$(m,`aria-label`,t.label)),X(e,m),Be()}_r([`click`,`keydown`]);var Za=Y(`<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 Qa(e,t){ze(t,!0);let n=(e,t)=>({id:e,name:t,relativePath:e,isGitRepository:!0,children:[]}),r=[{id:`.`,name:`development-workspace-with-a-long-name`,relativePath:`.`,isGitRepository:!1,children:[{id:`dyne`,name:`dyne`,relativePath:`dyne`,isGitRepository:!1,children:[{id:`dyne/mobile-applications`,name:`mobile-applications-and-experiments`,relativePath:`dyne/mobile-applications`,isGitRepository:!1,children:[n(`dyne/mobile-applications/gestalt-mobile`,`gestalt-mobile-with-an-extraordinarily-long-repository-name`)]},n(`dyne/zenroom`,`zenroom`),n(`dyne/zenflows`,`zenflows`),n(`dyne/did`,`did-toolkit`),n(`dyne/api`,`api-gateway`),n(`dyne/docs`,`documentation-portal`)]},{id:`personal`,name:`personal-projects`,relativePath:`personal`,isGitRepository:!1,children:[]}]}],i=R(B(new Set([`.`,`dyne`,`dyne/mobile-applications`]))),a=R(null),o=I(()=>t.context===`sessions`?`dyne/mobile-applications`:`dyne/mobile-applications/gestalt-mobile`),s=I(()=>q(a)??q(o));var c=Za(),l=V(c),u=V(l,!0);M(l);var d=U(l,2),f=V(d,!0);M(d);var p=U(d,2),m=V(p,!0);M(p);var h=U(p,2),g=V(h);{let e=I(()=>t.context===`sessions`?`Session base`:`Git repository`),n=I(()=>t.context===`sessions`?La.sessionBase:La.gitRepositoryTarget);Xa(g,{get roots(){return r},get expandedIds(){return q(i)},get selectedId(){return q(s)},get label(){return q(e)},get isSelectable(){return q(n)},onexpandedchange:e=>z(i,e,!0),onselect:e=>z(a,e.id,!0)})}M(h),M(c),W(()=>{Z(u,t.context===`sessions`?`Sessions`:`Git`),Z(f,t.context===`sessions`?`Session base`:`Git repository`),Z(m,t.context===`sessions`?`Select the folder Codex should use as its working directory.`:`Select a repository for Git actions.`)}),X(e,c),Be()}function $a(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 eo(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 to=Y(`<p class="clone-status svelte-pudr3t" role="status"> </p>`),no=Y(`<option> </option>`),ro=Y(`<section aria-label="Confirm push"><p> </p> <button type="button">Confirm push</button> <button type="button">Cancel</button></section>`),io=Y(`<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>`),ao=Y(`<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>`),oo=Y(`<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),so=Y(`<p>This workspace is not a Git repository.</p>`),co=Y(`<p role="status">Loading repository status…</p>`),lo=Y(`<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),uo=Y(`<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),fo=Y(`<p role="alert"> </p>`),po=Y(`<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 mo(e,t){ze(t,!0);let n=R(``),r=I(()=>t.selectedWorkspace&&!t.selectedWorkspace.isGitRepository?t.selectedWorkspace:null);function i(e){e.preventDefault(),!(!q(n).trim()||t.cloning)&&t.onclone(q(n).trim())}var a=po(),o=U(V(a),2),s=U(V(o),2);{let e=I(()=>t.selectedWorkspace?.id??null);Xa(s,{get roots(){return t.workspaceTree},get expandedIds(){return t.expandedIds},get selectedId(){return q(e)},label:`Git repository and clone destination`,get onexpandedchange(){return t.onexpandedchange},get onselect(){return t.onselect}})}M(o);var c=U(o,2),l=V(c),u=V(l),d=U(V(u),2),f=V(d,!0);M(d),M(u);var p=U(u,2),m=U(V(p),2);oi(m),M(p);var h=U(p,2),g=V(h,!0);M(h),M(l);var _=U(l,4),v=e=>{var n=to(),r=V(n,!0);M(n),W(()=>Z(r,t.cloneStatus)),X(e,n)};Q(_,e=>{t.cloneStatus&&e(v)}),M(c);var y=U(c,2),b=U(V(y),2),x=e=>{var n=Tr(),r=H(n),i=e=>{var n=Tr(),r=H(n),i=e=>{var n=oo(),r=H(n),i=V(r),a=U(V(i),2);Fr(a,20,()=>t.summary.branches??[],e=>e,(e,t)=>{var n=no(),r=V(n,!0);M(n);var i={};W(()=>{Z(r,t),i!==(i=t)&&(n.value=(n.__value=t)??``)}),X(e,n)}),M(a);var o;ei(a);var s=U(a,2),c=V(s);M(s);var l=U(s,2),u=V(l);M(l);var d=U(l,2),f=V(d),p=V(f,!0);M(f),M(d);var m=U(d,2),h=V(m);M(m),M(i);var g=U(i,2),_=V(g),v=U(_,2),y=U(V(v));M(v),M(g),M(r);var b=U(r,2),x=e=>{var n=ro(),r=V(n),i=V(r);M(r);var a=U(r,2),o=U(a,2);M(n),W(()=>Z(i,`Push HEAD to ${t.summary.upstream??``}?`)),J(`click`,a,function(...e){t.onpush?.apply(this,e)}),J(`click`,o,function(...e){t.oncancelpush?.apply(this,e)}),X(e,n)};Q(b,e=>{t.confirmingPush&&e(x)});var S=U(b,2),C=e=>{var n=ao(),r=U(V(n),2);Fr(r,21,()=>t.summary.commits,e=>e.hash,(e,t)=>{var n=io(),r=V(n),i=V(r),a=V(i,!0);M(i);var o=U(i),s=V(o,!0);M(o),M(r);var c=U(r,2),l=V(c),u=V(l,!0);M(l);var d=U(l),f=V(d,!0);M(d),M(c),M(n),W(e=>{$(i,`title`,q(t).hash),Z(a,q(t).shortHash),Z(s,q(t).subject),Z(u,q(t).author),$(d,`datetime`,q(t).authoredAt),$(d,`title`,q(t).authoredAt),Z(f,e)},[()=>eo(q(t).authoredAt)]),X(e,n)}),M(r),M(n),X(e,n)};Q(S,e=>{t.summary.commits.length&&e(C)}),W(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??``)),Z(c,`Upstream: ${t.summary.upstream??`none`??``}`),Z(u,`Ahead ${t.summary.ahead??``}; behind ${t.summary.behind??``}.`),$(f,`datetime`,t.summary.fetchedAt??void 0),Z(p,e),Z(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,Z(y,` ${t.refreshing?`Pulling…`:`Pull`}`)},[()=>$a(t.summary.fetchedAt)]),J(`change`,a,e=>t.oncheckout(e.currentTarget.value)),J(`click`,_,function(...e){t.onopenpushconfirmation?.apply(this,e)}),J(`click`,v,function(...e){t.onpull?.apply(this,e)}),X(e,n)},a=e=>{X(e,so())};Q(r,e=>{t.summary.available?e(i):e(a,-1)}),X(e,n)},a=e=>{X(e,co())};Q(r,e=>{t.summary?e(i):t.error||e(a,1)}),X(e,n)},S=e=>{var n=lo(),r=H(n),i=V(r),a=V(i,!0);M(i),Me(),M(r),Me(2),W(()=>Z(a,t.selectedWorkspace.name)),X(e,n)},C=e=>{var t=uo();Me(2),X(e,t)};Q(b,e=>{t.selectedWorkspace?.isGitRepository?e(x):t.selectedWorkspace?e(S,1):e(C,-1)});var w=U(b,2),T=e=>{var n=fo(),r=V(n,!0);M(n),W(()=>Z(r,t.error)),X(e,n)};Q(w,e=>{t.error&&e(T)}),M(y),M(a),W(()=>{Z(f,q(r)?`~/${q(r).relativePath}`:`Select a non-repository folder`),h.disabled=t.cloning,Z(g,t.cloning?`Cloning…`:`Clone`)}),gr(`submit`,c,i),di(m,()=>q(n),e=>z(n,e)),X(e,a),Be()}_r([`change`,`click`]);function ho(e,t,n,r,i){let a=new Set(go(e).filter(e=>e.isGitRepository).map(e=>e.id)),o=Ha(t,n),s=o?go(o.children).filter(e=>e.isGitRepository&&!a.has(e.id)):[],c=_o(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&&Va(t,u).forEach(e=>d.add(e)),!l&&o&&d.add(o.id),{selectedId:u,expandedIds:d}}function go(e){let t=[],n=e=>{t.push(e),e.children.forEach(n)};return e.forEach(n),t}function _o(e){return(e.trim().replace(/[?#].*$/,``).replace(/\/+$/,``).split(/[/:]/).at(-1)??``).replace(/\.git$/i,``)}function vo(e,t,n,r){return[...e,{id:t,role:`user`,text:n,...r?{occurredAt:r}:{},complete:!0}]}function yo(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 bo(e,t){return e.map(e=>e.id===t?{...e,complete:!0}:e)}function xo(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 So(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){let r=await e(n);if(!r.ok)throw await t(r);return r.json()}return{listSessions:()=>r(`/api/sessions`),listRecentSessions:()=>r(`/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=>r(`/api/sessions/${encodeURIComponent(e)}/history`),getGitSummary:e=>r(`/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}:{}),respondInteraction:(e,t,r)=>n(`/api/sessions/${encodeURIComponent(e)}/interactions/${encodeURIComponent(t)}`,r)}}async function Co(e,t=globalThis.navigator?.clipboard,n=To){if(!t)return wo(e,n);try{return await t.writeText(e),!0}catch{return wo(e,n)}}function wo(e,t){try{return t(e)}catch{return!1}}function To(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 Eo(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 Do(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 Oo(e){return e?`Codex is working…`:`Ready.`}function ko(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 Ao=`settings`,jo=`drafts`,Mo=`cursors`,No=`selected-session`;function Po(e=globalThis.indexedDB){if(!e)return Fo;let t=ya(e);return{async readSelectedSession(){try{return await ba(await t,Ao,No)??null}catch{return null}},async saveSelectedSession(e){try{let n=await t;e?await xa(n,Ao,No,e):await Sa(n,Ao,No)}catch{}},async readDraft(e){try{return await ba(await t,jo,e)??``}catch{return``}},async saveDraft(e,n){try{await xa(await t,jo,e,n)}catch{}},async readCursor(e){try{let n=await ba(await t,Mo,e);return typeof n==`number`&&Number.isSafeInteger(n)&&n>=0?n:0}catch{return 0}},async saveCursor(e,n){try{await xa(await t,Mo,e,n)}catch{}}}}var Fo={readSelectedSession:async()=>null,saveSelectedSession:async()=>{},readDraft:async()=>``,saveDraft:async()=>{},readCursor:async()=>0,saveCursor:async()=>{}};function Io(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 Lo(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 Ro(e){let t=/^\/home\/[^/]+/.exec(e)?.[0];if(!t)return e;let n=e.slice(t.length);return n?`~${n}`:`~/`}var zo=Y(`<time> </time>`),Bo=Y(`<div> </div>`),Vo=Y(`<li class="managed-session open-session svelte-hxb22h"><div class="session-actions svelte-hxb22h"><button type="button">Close</button></div> <div class="session-details svelte-hxb22h"><!> <div class="workspace-path svelte-hxb22h"> </div></div></li>`),Ho=Y(`<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>`),Uo=Y(`<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>`),Wo=Y(`<ul class="session-list svelte-hxb22h" aria-label="Saved sessions"></ul>`),Go=Y(`<p>No saved sessions yet.</p>`),Ko=Y(`<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>`),qo=Y(`<ul class="session-list recent-session-list svelte-hxb22h" aria-label="Recent sessions"></ul>`),Jo=Y(`<p>No other recent Codex sessions found.</p>`),Yo=Y(`<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> <div class="form-row session-settings-row svelte-hxb22h"><div class="form-field svelte-hxb22h"><label for="sandbox">Sandbox</label> <select id="sandbox"><option>Codex default</option><option>read-only</option><option>workspace-write</option><option>danger-full-access</option></select></div> <div class="form-field svelte-hxb22h"><label for="approval-policy">Approval policy</label> <select id="approval-policy"><option>untrusted</option><option>on-request</option><option>never</option></select></div> <button class="new-session-button svelte-hxb22h" type="submit"> </button></div></form> <section aria-labelledby="recent-sessions-title"><h3 id="recent-sessions-title">Recent sessions</h3> <!></section></section>`);function Xo(e,t){ze(t,!0);let n=I(()=>t.sessions.filter(e=>e.state===`ready`||e.state===`turnActive`)),r=I(()=>t.sessions.filter(e=>e.state!==`ready`&&e.state!==`turnActive`)),i=I(()=>t.recentSessions.filter(e=>!q(n).some(t=>t.threadId===e.id))),a=I(()=>Ha(t.workspaceTree,t.workspaceId));var o=Yo(),s=U(V(o),2),c=e=>{var r=Ho(),i=U(V(r),2);Fr(i,21,()=>q(n),e=>e.id,(e,n)=>{let r=I(()=>Lo(q(n)));var i=Vo(),a=V(i),o=V(a);M(a);var s=U(a,2),c=V(s),l=e=>{var t=zo(),n=V(t,!0);M(t),W((e,r)=>{$(t,`datetime`,e),Z(n,r)},[()=>new Date(q(r).updatedAt).toISOString(),()=>Io(q(r).updatedAt)]),X(e,t)},u=e=>{var t=Bo(),n=V(t,!0);M(t),W(e=>Z(n,e),[()=>Io(null)]),X(e,t)};Q(c,e=>{q(r).updatedAt===null?e(u,-1):e(l)});var d=U(c,2),f=V(d,!0);M(d),M(s),M(i),W(e=>Z(f,e),[()=>Ro(q(r).workspacePath)]),J(`click`,o,()=>t.onclose(q(n).id)),X(e,i)}),M(i),M(r),X(e,r)};Q(s,e=>{q(n).length&&e(c)});var l=U(s,2),u=e=>{var n=Wo();Fr(n,21,()=>q(r),e=>e.id,(e,n)=>{let r=I(()=>Lo(q(n)));var i=Uo(),a=V(i),o=V(a),s=U(o,2);M(a);var c=U(a,2),l=V(c),u=e=>{var t=zo(),n=V(t,!0);M(t),W((e,r)=>{$(t,`datetime`,e),Z(n,r)},[()=>new Date(q(r).updatedAt).toISOString(),()=>Io(q(r).updatedAt)]),X(e,t)},d=e=>{var t=Bo(),n=V(t,!0);M(t),W(e=>Z(n,e),[()=>Io(null)]),X(e,t)};Q(l,e=>{q(r).updatedAt===null?e(d,-1):e(u)});var f=U(l,2),p=V(f,!0);M(f),M(c),M(i),W(e=>Z(p,e),[()=>Ro(q(r).workspacePath)]),J(`click`,o,()=>t.onopen(q(n).id)),J(`click`,s,()=>t.onforget(q(n).id)),X(e,i)}),M(n),X(e,n)},d=e=>{X(e,Go())};Q(l,e=>{q(r).length?e(u):q(n).length||e(d,1)});var f=U(l,2),p=V(f),m=U(V(p),2),h=V(m);{let e=I(()=>q(a)?.id??null);Xa(h,{get roots(){return t.workspaceTree},get expandedIds(){return t.expandedIds},get selectedId(){return q(e)},get isSelectable(){return La.sessionBase},label:`Session base`,get onexpandedchange(){return t.onexpandedchange},onselect:e=>t.onworkspacechange(e.id)})}M(m),M(p);var g=U(p,2),_=V(g),v=U(V(_),2),y=V(v);y.value=y.__value=``;var b=U(y);b.value=b.__value=`read-only`;var x=U(b);x.value=x.__value=`workspace-write`;var S=U(x);S.value=S.__value=`danger-full-access`,M(v);var C;ei(v),M(_);var w=U(_,2),T=U(V(w),2),ee=V(T);ee.value=ee.__value=`untrusted`;var te=U(ee);te.value=te.__value=`on-request`;var ne=U(te);ne.value=ne.__value=`never`,M(T);var re;ei(T),M(w);var E=U(w,2),ie=V(E,!0);M(E),M(g),M(f);var ae=U(f,2),oe=U(V(ae),2),se=e=>{var n=qo();Fr(n,21,()=>q(i),e=>e.id,(e,n)=>{var r=Ko(),i=V(r),a=V(i),o=e=>{var t=zo(),r=V(t,!0);M(t),W((e,n)=>{$(t,`datetime`,e),Z(r,n)},[()=>new Date(q(n).recencyAt*1e3).toISOString(),()=>Io(q(n).recencyAt*1e3)]),X(e,t)},s=e=>{var t=Bo(),n=V(t,!0);M(t),W(e=>Z(n,e),[()=>Io(null)]),X(e,t)};Q(a,e=>{q(n).recencyAt===null?e(s,-1):e(o)});var c=U(a,2),l=V(c,!0);M(c),M(i);var u=U(i,2),d=V(u),f=U(d,2);M(u),M(r),W(e=>Z(l,e),[()=>Ro(q(n).cwd)]),J(`click`,d,()=>t.onopenrecent(q(n))),J(`click`,f,()=>t.oncopyresume(q(n).resumeCommand)),X(e,r)}),M(n),X(e,n)},ce=e=>{X(e,Jo())};Q(oe,e=>{q(i).length?e(se):e(ce,-1)}),M(ae),M(o),W(()=>{C!==(C=t.sandbox)&&(v.value=(v.__value=t.sandbox)??``,$r(v,t.sandbox)),re!==(re=t.approvalPolicy)&&(T.value=(T.__value=t.approvalPolicy)??``,$r(T,t.approvalPolicy)),E.disabled=!q(a)||t.startingSession,Z(ie,t.startingSession?`Starting…`:`New session`)}),gr(`submit`,f,e=>{e.preventDefault(),t.onstart()}),J(`change`,v,e=>t.onsandboxchange(e.currentTarget.value)),J(`change`,T,e=>t.onapprovalpolicychange(e.currentTarget.value)),X(e,o),Be()}_r([`click`,`change`]);function Zo(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 Qo(e,t,n=!0){let r=n?[`sessions`,`git`,`chat`]:[`sessions`,`git`];return r[(r.indexOf(e)+t+r.length)%r.length]}var $o=Y(`<nav class="bottom-navigation" aria-label="Primary"><button>Sess<wbr/>ions</button> <button>Git</button> <button>Chat</button></nav>`);function es(e,t){ze(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=Qo(t.activeTab,r,t.chatEnabled);t.onselect(i),n[i]?.focus()}var i=$o(),a=V(i);hi(a,e=>n.sessions=e,()=>n?.sessions);var o=U(a,2);hi(o,e=>n.git=e,()=>n?.git);var s=U(o,2);hi(s,e=>n.chat=e,()=>n?.chat),M(i),W(()=>{$(a,`aria-pressed`,t.activeTab===`sessions`),$(o,`aria-pressed`,t.activeTab===`git`),$(s,`aria-pressed`,t.activeTab===`chat`),s.disabled=!t.chatEnabled}),J(`keydown`,a,r),J(`click`,a,()=>t.onselect(`sessions`)),J(`keydown`,o,r),J(`click`,o,()=>t.onselect(`git`)),J(`keydown`,s,r),J(`click`,s,()=>t.onselect(`chat`)),X(e,i),Be()}_r([`keydown`,`click`]);var ts=Y(`<main class="evidence-mode svelte-y74n0s"><!></main>`),ns=Y(`<!> <!> <!> <!>`,1),rs=Y(`<p>Start a session from the Sessions tab to chat with Codex.</p>`),is=Y(`<section class="chat-view svelte-y74n0s" aria-labelledby="chat-title"><h2 id="chat-title" class="visually-hidden">Chat</h2> <!></section>`),as=Y(`<main><!> <!> <!></main>`),os=Y(`<!> <!>`,1);function ss(e,t){ze(t,!0);let n=R(`sessions`),r=R(`Loading relay…`),i=R(`system`),a=R(B([])),o=R(``),s=R(B(new Set)),c=R(null),l=R(B([])),u=I(()=>q(l).some(e=>e.id===q(c)&&(e.state===`ready`||e.state===`turnActive`))),d=R(B([])),f=R(``),p=R(`on-request`),m=R(null),h=R(!1),g=R(``),_=R(null),v=R(!1),y=R(B([])),b=R(B([])),x=R(0),S=null,C=null,w=null,T=null,ee=!1,te=0,ne=0,re=R(null),E=R(null),ie=R(B(new Set)),ae=R(!1),oe=R(!1),se=R(!1),ce=R(!1),le=R(null),ue=R(null),de=R(null),fe=R(null),pe=0,me=R(B([])),he=B({}),D=So(),ge=Ea(),_e=Po(),ve=Aa(),ye=new URLSearchParams(location.search).get(`tree-evidence`),be=new URLSearchParams(location.search).get(`toast-evidence`);_i(async()=>{let e=localStorage.getItem(`gestalt-mobile.theme`);if((e===`light`||e===`dark`||e===`system`)&&xe(e),!(ye===`sessions`||ye===`git`||be===`error`||be===`stacked`)){T=setInterval(j,2e3),document.addEventListener(`visibilitychange`,j),window.addEventListener(`focus`,j);try{let e=await ma();z(o,Ua(q(o)||null,q(a),e.workspaces,La.sessionBase)??``,!0),z(a,e.workspaces,!0),z(s,Ra(q(a)),!0),z(ie,Ra(q(a)),!0);let t=await _e.readSelectedSession();z(c,e.sessions.some(e=>e.id===t)?t:e.sessions[0]?.id??null,!0),q(c)&&z(x,await _e.readCursor(q(c)),!0),q(c)&&z(g,await _e.readDraft(q(c)),!0),q(c)&&z(y,await ge.read(q(c)),!0),z(l,e.sessions,!0),z(me,q(l).find(e=>e.id===q(c))?.pendingInteractions??[],!0),we(),z(_,q(l).find(e=>e.id===q(c))?.activeTurnId??null,!0),z(r,q(c)?Oo(q(_)):`Choose a workspace and start a session.`,!0),q(c)&&(await A(q(c)),qe(q(c)))}catch(e){z(r,P(e,`RELAY_UNAVAILABLE`),!0)}}});function xe(e){z(i,e,!0),e===`system`?document.documentElement.removeAttribute(`data-theme`):document.documentElement.dataset.theme=e,localStorage.setItem(`gestalt-mobile.theme`,e)}vi(()=>{C&&clearTimeout(C),w&&clearTimeout(w),T&&clearInterval(T),document.removeEventListener(`visibilitychange`,j),window.removeEventListener(`focus`,j),S?.close()});async function Se(){if(!q(o)||q(h))return;let e=Zo({workspaceId:q(o),profile:`default`,profileState:`ok`});if(e.profile){z(r,e.profile,!0);return}z(m,q(m)??Eo(),!0),z(h,!0),z(r,`Starting session…`);try{let e=await D.startSession(q(o),{sandbox:q(f)||void 0,approvalPolicy:q(p)},q(m));z(m,null),z(c,e.id,!0),z(_,null),_e.saveSelectedSession(e.id),await Ce(),z(y,[],!0),Ge(e.id),z(b,[],!0),z(x,0),z(g,await _e.readDraft(e.id),!0),qe(e.id),z(n,`chat`),Me(),z(r,`Session started.`)}catch(e){z(r,P(e,`SESSION_START_FAILED`),!0)}finally{z(h,!1)}}async function Ce(){z(l,await D.listSessions(),!0)}async function we(){try{z(d,await D.listRecentSessions(),!0)}catch{z(d,[],!0)}}async function O(){try{await Promise.all([Ce(),we()])}catch(e){z(r,P(e,`SESSION_REFRESH_FAILED`),!0)}}async function Te(e){z(r,`Opening session…`);try{let t=q(l).find(t=>t.id===e);if(t&&t.state!==`ready`&&t.state!==`turnActive`){let t=await D.restoreSession(e);z(l,q(l).map(n=>n.id===e?t:n),!0)}z(c,e,!0),_e.saveSelectedSession(e),z(y,await ge.read(e),!0),z(b,[],!0),z(x,0),z(g,await _e.readDraft(e),!0),z(_,q(l).find(t=>t.id===e)?.activeTurnId??null,!0),z(me,q(l).find(t=>t.id===e)?.pendingInteractions??[],!0),z(n,`chat`),Me(),await A(e),qe(e)}catch(e){z(r,`Could not open session: ${Ke(e)}`)}}async function Ee(e){z(r,`Opening recent session…`);try{let t=await D.openRecentSession(e.id,e.cwd);await O(),await Te(t.id)}catch(e){z(r,`Could not open recent session: ${Ke(e)}`)}}async function De(e){z(r,`Closing session…`);try{await D.releaseSession(e),q(c)===e&&(z(c,null),z(n,`sessions`),z(_,null),z(me,[],!0),_e.saveSelectedSession(null),C&&clearTimeout(C),C=null,S?.close(),S=null),await O(),z(r,`Session closed.`)}catch(e){z(r,`Could not close session: ${Ke(e)}`)}}async function Oe(e){try{await D.forgetSession(e),q(c)===e&&(S?.close(),z(c,null),z(_,null),_e.saveSelectedSession(null)),await O()}catch(e){z(r,`Could not forget session: ${Ke(e)}`)}}async function ke(e){z(r,await Co(e)?`Resume command copied.`:`Could not copy the resume command.`,!0)}async function k(){if(!q(c)||!q(g).trim()||q(_)||q(v))return;let e=q(g).trim();z(v,!0);try{let t=await D.startTurn(q(c),e);z(_,t.activeTurnId??null,!0),z(y,vo(q(y),`user-${t.activeTurnId??Date.now().toString()}`,e,Date.now()),!0),Ge(q(c)),z(g,``),_e.saveDraft(q(c),``),z(r,Oo(q(_)),!0)}catch(e){z(r,P(e,`MESSAGE_SEND_FAILED`),!0)}finally{z(v,!1)}}async function Ae(){if(!(!q(c)||!q(_)))try{await D.interruptTurn(q(c),q(_)),z(_,null),z(r,`Codex turn interrupted.`)}catch(e){z(r,`Could not interrupt Codex: ${Ke(e)}`)}}async function A(e,t=0){let n=await D.getHistory(e);if(q(c)!==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=q(y).filter(e=>!e.complete);z(y,[...i,...a],!0),Ge(e);let o=n.items.flatMap(e=>{let t=ha(e);return t?[t]:[]});z(b,[...o,...q(b).filter(e=>!o.some(t=>t.id===e.id))],!0),`activeTurnId`in n&&(z(_,n.activeTurnId??null,!0),z(l,q(l).map(t=>t.id===e?{...t,activeTurnId:q(_)}:t),!0)),z(x,Math.max(q(x),n.currentSequence??t),!0),_e.saveCursor(e,q(x)),z(r,Oo(q(_)),!0)}function j(){q(n)!==`chat`||!q(c)||document.visibilityState!==`visible`||ee||(ee=!0,A(q(c)).catch(()=>void 0).finally(()=>{ee=!1}))}function je(e){e===`chat`&&!q(u)||(z(n,e,!0),e===`chat`&&(j(),Me()),e===`git`&&q(E)&&Ne(q(E)),e===`sessions`&&O())}function Me(){requestAnimationFrame(()=>window.scrollTo({top:document.documentElement.scrollHeight}))}async function Ne(e=q(E)){let t=e?Ha(q(a),e):void 0;if(!e||!t?.isGitRepository){pe+=1,z(re,null);return}let n=++pe;try{let t=await D.getGitSummary(e);n===pe&&q(E)===e&&z(re,t,!0)}catch(t){if(n!==pe||q(E)!==e)return;z(re,null),z(le,P(t,`GIT_SUMMARY_FAILED`),!0)}}function Pe(e){z(E,e.id,!0),z(le,null),z(re,null),z(ae,!1),e.isGitRepository?Ne(e.id):(pe+=1,z(re,null))}async function Fe(){let e=q(E);if(!(!e||!Ha(q(a),e)?.isGitRepository)){z(de,q(de)??Eo(),!0),z(oe,!0),z(le,null);try{await D.pullGit(e,q(de)),await Ne(e),z(de,null)}catch(e){z(le,P(e,`GIT_PULL_FAILED`),!0)}finally{z(oe,!1)}}}async function Ie(e){if(q(ce))return;let t=q(E)?Ha(q(a),q(E)):void 0;if(!t||t.isGitRepository){z(ue,null),ve.enqueue({kind:`error`,code:`INVALID_CLONE_DESTINATION`,message:`Select a non-repository folder before cloning.`});return}let n=t.id;z(ce,!0),z(le,null),z(ue,null);try{await D.cloneGitRepository(n,e);let t=await ma(),r=ho(q(a),t.workspaces,n,e,q(ie));z(o,Ua(q(o)||null,q(a),t.workspaces,La.sessionBase)??``,!0),z(a,t.workspaces,!0),z(E,r.selectedId,!0),z(ie,r.expandedIds,!0),q(E)&&Ha(q(a),q(E))?.isGitRepository?await Ne(q(E)):z(re,null),z(ue,`Repository cloned into the selected workspace.`),ve.enqueue({kind:`success`,message:`Repository cloned.`})}catch(e){P(e,`GIT_CLONE_FAILED`)}finally{z(ce,!1)}}async function Le(e){let t=q(E);if(!(!t||e===q(re)?.branch)){z(se,!0),z(le,null);try{await D.checkoutGitBranch(t,e),await Ne(t)}catch(e){z(le,P(e,`GIT_CHECKOUT_FAILED`),!0)}finally{z(se,!1)}}}async function N(){let e=q(E);if(e){z(fe,q(fe)??Eo(),!0),z(le,null);try{await D.pushGit(e,q(fe)),z(ae,!1),await Ne(e),z(fe,null)}catch(e){z(le,P(e,`GIT_PUSH_FAILED`),!0)}}}async function Re(e,t){q(c)&&(await D.respondInteraction(q(c),e,{decision:t}),z(me,q(me).filter(t=>t.requestId!==e),!0))}async function Ve(e){if(!q(c))return;let t=Ei(Ti(e.payload).map(e=>({id:e.id,answer:he[e.id]??``})));await D.respondInteraction(q(c),e.requestId,t),z(me,q(me).filter(t=>t.requestId!==e.requestId),!0)}async function He(e){if(!q(c))return;let t=xo(e.payload);if(!t){z(r,`Codex sent an invalid permission request.`);return}await D.respondInteraction(q(c),e.requestId,t),z(me,q(me).filter(t=>t.requestId!==e.requestId),!0)}function Ue(e,t){he[e]=t}function We(e){z(g,e,!0),q(c)&&_e.saveDraft(q(c),e)}function Ge(e){ge.write(e,q(y))}function Ke(e){return e instanceof Error?e.message:`Unknown relay error.`}function P(e,t){let n=Oa(e,t);return ve.enqueue({kind:`error`,...n}),n.message}function qe(e){C&&clearTimeout(C),w&&clearTimeout(w),S?.close();let t=++ne,n=location.protocol===`https:`?`wss:`:`ws:`;S=new WebSocket(`${n}//${location.host}/api/sessions/${encodeURIComponent(e)}/events?after=${q(x)}`),S.onopen=()=>{t!==ne||q(c)!==e||(z(r,Oo(q(_)),!0),j(),w=setTimeout(()=>{te=0},3e4))},S.onmessage=t=>{let n=JSON.parse(String(t.data));if(n.type===`relay.resyncRequired`){A(e,typeof n.currentSequence==`number`?n.currentSequence:0);return}if(n.type===`relay.event`&&n.event?.type===`interaction.requested`){let e=n.event.payload;q(me).some(t=>t.requestId===e.requestId)||z(me,[...q(me),e],!0)}if(n.type===`relay.event`&&n.event?.type===`turnCompleted`&&(z(_,null),z(r,Oo(q(_)),!0),z(y,bo(q(y),`assistant-${e}`),!0),Ge(e),A(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=q(_);z(_,typeof n.activeTurnId==`string`?n.activeTurnId:null,!0),i&&!q(_)&&z(r,Oo(q(_)),!0),z(l,q(l).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(me,q(me).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(b,[...q(b).filter(t=>t.id!==e.id),e],!0)}z(x,Do(q(x),n,t=>{z(y,yo(q(y),`assistant-${e}`,t,Date.now()),!0),Ge(e)},()=>{A(e)}),!0),_e.saveCursor(e,q(x))},S.onclose=()=>{t!==ne||q(c)!==e||(w&&clearTimeout(w),z(r,`Connection interrupted. Reconnecting…`),C=setTimeout(()=>qe(e),ko(te++)))}}var F=os();Vr(`y74n0s`,e=>{bn(()=>{Jt.title=`Gestalt Mobile`})});var Je=H(F),Ye=e=>{Ia(e,{get variant(){return be}})},Xe=e=>{var t=ts();Qa(V(t),{get context(){return ye}}),M(t),X(e,t)},Ze=e=>{var t=as(),m=V(t);{let e=I(()=>q(n)===`chat`?Ro(q(l).find(e=>e.id===q(c))?.workspacePath??``):null);xi(m,{get theme(){return q(i)},get sessionPath(){return q(e)},onthemechange:xe})}var x=U(m,2),S=e=>{var t=is(),n=U(V(t),2),i=e=>{var t=ns(),n=H(t);pa(n,{get messages(){return q(y)}});var i=U(n,2);wi(i,{get activities(){return q(b)}});var a=U(i,2);Fi(a,{get interactions(){return q(me)},get answers(){return he},onanswer:Ue,onuserinput:e=>void Ve(e),onpermission:e=>void He(e),ondecision:(e,t)=>void Re(e,t)}),Bi(U(a,2),{get status(){return q(r)},get message(){return q(g)},get activeTurnId(){return q(_)},get starting(){return q(v)},onchange:We,onsend:()=>void k(),oninterrupt:()=>void Ae()}),X(e,t)},a=e=>{X(e,rs())};Q(n,e=>{q(c)?e(i):e(a,-1)}),M(t),X(e,t)},C=e=>{{let t=I(()=>q(E)?Ha(q(a),q(E))??null:null);mo(e,{get workspaceTree(){return q(a)},get selectedWorkspace(){return q(t)},get expandedIds(){return q(ie)},get summary(){return q(re)},get refreshing(){return q(oe)},get checkingOut(){return q(se)},get cloning(){return q(ce)},get error(){return q(le)},get cloneStatus(){return q(ue)},get confirmingPush(){return q(ae)},onpull:()=>void Fe(),oncheckout:e=>void Le(e),onopenpushconfirmation:()=>z(ae,!0),onpush:()=>void N(),oncancelpush:()=>z(ae,!1),onselect:Pe,onexpandedchange:e=>z(ie,e,!0),onclone:e=>void Ie(e)})}},w=e=>{Xo(e,{get sessions(){return q(l)},get recentSessions(){return q(d)},get workspaceTree(){return q(a)},get workspaceId(){return q(o)},get expandedIds(){return q(s)},get sandbox(){return q(f)},get approvalPolicy(){return q(p)},get startingSession(){return q(h)},onworkspacechange:e=>z(o,e,!0),onexpandedchange:e=>z(s,e,!0),onsandboxchange:e=>z(f,e,!0),onapprovalpolicychange:e=>z(p,e,!0),onopen:Te,onclose:e=>void De(e),onopenrecent:e=>void Ee(e),onforget:e=>void Oe(e),oncopyresume:e=>void ke(e),onstart:()=>void Se()})};Q(x,e=>{q(n)===`chat`?e(S):q(n)===`git`?e(C,1):e(w,-1)}),es(U(x,2),{get activeTab(){return q(n)},get chatEnabled(){return q(u)},onselect:je}),M(t),X(e,t)};Q(Je,e=>{be===`error`||be===`stacked`?e(Ye):ye===`sessions`||ye===`git`?e(Xe,1):e(Ze,-1)});var Qe=U(Je,2),$e=e=>{Pa(e,{get queue(){return ve}})};Q(Qe,e=>{be!==`error`&&be!==`stacked`&&e($e)}),X(e,F),Be()}var cs=document.getElementById(`app`);if(!cs)throw Error(`Missing application mount target`);Er(ss,{target:cs});
@@ -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;padding:.35rem}.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}.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}.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}.form-row.svelte-hxb22h{gap:.5rem;margin-block-end:.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-row.svelte-hxb22h{grid-template-columns:repeat(auto-fit,minmax(min(100%,13rem),1fr));align-items:end}.form-field.svelte-hxb22h{gap:.25rem;min-inline-size:0;display:grid}.new-session-button.svelte-hxb22h{color:canvas;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}.new-session-button.svelte-hxb22h{grid-column:1/-1;inline-size:100%}}.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}:root{--bottom-navigation-clearance:calc(4rem + env(safe-area-inset-bottom));--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;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-block:calc(-1rem - env(safe-area-inset-top)) 1.5rem;padding:calc(1rem + env(safe-area-inset-top)) 0 .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 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}.bottom-navigation button{overflow-wrap:normal;word-break:normal;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}button{min-block-size:44px;font:inherit}.git-view button{scroll-margin-block-end: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-0wjiXBGW.js"></script>
14
- <link rel="stylesheet" crossorigin href="/assets/index-CfoipqOl.css">
13
+ <script type="module" crossorigin src="/assets/index-BvGdtY1N.js"></script>
14
+ <link rel="stylesheet" crossorigin href="/assets/index-CQd1grXV.css">
15
15
  </head>
16
16
  <body>
17
17
  <div id="app"></div>
@@ -109,30 +109,39 @@ export async function buildApp(deps) {
109
109
  }
110
110
  if (deps.sessionEvents)
111
111
  registerSessionEvents(app, deps.sessionEvents);
112
- if (deps.gitSummary && deps.sessionRoutes)
113
- registerGetGitSummary(app, { find: deps.sessionRoutes.find, inspect: deps.gitSummary.inspect });
114
- if (deps.gitSummary && deps.sessionRoutes)
112
+ if (deps.gitSummary)
113
+ registerGetGitSummary(app, {
114
+ workspaces: deps.gitSummary.workspaces,
115
+ inspect: deps.gitSummary.inspect,
116
+ });
117
+ if (deps.gitSummary)
115
118
  registerPushUpstream(app, {
116
- find: deps.sessionRoutes.find,
119
+ workspaces: deps.gitSummary.workspaces,
117
120
  inspect: deps.gitSummary.inspectForPush ?? deps.gitSummary.inspect,
118
121
  push: deps.gitSummary.push,
119
- idempotency: deps.sessionRoutes.idempotency,
122
+ idempotency: deps.gitSummary.idempotency,
120
123
  });
121
- if (deps.gitSummary && deps.sessionRoutes)
124
+ if (deps.gitSummary)
122
125
  registerRefreshGit(app, {
123
- find: deps.sessionRoutes.find,
126
+ workspaces: deps.gitSummary.workspaces,
124
127
  refresh: deps.gitSummary.refresh,
125
- idempotency: deps.sessionRoutes.idempotency,
128
+ idempotency: deps.gitSummary.idempotency,
129
+ });
130
+ if (deps.gitSummary?.pull && deps.gitSummary.checkout) {
131
+ registerPullRebase(app, {
132
+ workspaces: deps.gitSummary.workspaces,
133
+ pull: deps.gitSummary.pull,
126
134
  });
127
- if (deps.gitSummary?.pull && deps.gitSummary.checkout && deps.sessionRoutes) {
128
- registerPullRebase(app, { find: deps.sessionRoutes.find, pull: deps.gitSummary.pull });
129
135
  registerCheckoutBranch(app, {
130
- find: deps.sessionRoutes.find,
136
+ workspaces: deps.gitSummary.workspaces,
131
137
  checkout: deps.gitSummary.checkout,
132
138
  });
133
139
  }
134
140
  if (deps.gitSummary?.clone)
135
- registerCloneRepository(app, { clone: deps.gitSummary.clone });
141
+ registerCloneRepository(app, {
142
+ workspaces: deps.gitSummary.workspaces,
143
+ clone: deps.gitSummary.clone,
144
+ });
136
145
  registerProblemHandler(app, Boolean(deps.staticDir));
137
146
  return app;
138
147
  }
@@ -158,7 +158,7 @@ export async function composeRelayApp(options) {
158
158
  release: (session) => RelaySession.rehydrate(session).release(new Date().toISOString()).snapshot,
159
159
  remove: (id) => sessions.remove(id),
160
160
  idempotency,
161
- close: runtime ? (id) => runtime.stop(id) : undefined,
161
+ close: runtime ? (id) => runtime.release(id) : undefined,
162
162
  replyInteraction: runtime
163
163
  ? (sessionId, requestId, value) => runtime.resolveServerRequest(sessionId, requestId, value)
164
164
  : undefined,
@@ -181,6 +181,7 @@ export async function composeRelayApp(options) {
181
181
  },
182
182
  },
183
183
  gitSummary: {
184
+ workspaces,
184
185
  inspect: async (path) => {
185
186
  const summary = await gitSummaries.inspect(path);
186
187
  const fetchedAt = gitFetches.lastSuccessfulAt(path);
@@ -203,7 +204,8 @@ export async function composeRelayApp(options) {
203
204
  await checkoutBranch(path, branch);
204
205
  gitSummaries.invalidate(path);
205
206
  },
206
- clone: async (workspaceId, address) => cloneRepository((await workspaces.resolve(workspaceId)).realPath, address),
207
+ clone: cloneRepository,
208
+ idempotency,
207
209
  },
208
210
  });
209
211
  const restoreActiveSessions = async () => {
@@ -0,0 +1,13 @@
1
+ /*
2
+ * Copyright (C) 2026 Dyne.org foundation
3
+ * Designed by Denis Roio <jaromil@dyne.org>
4
+ * SPDX-License-Identifier: AGPL-3.0-or-later
5
+ */
6
+ export async function resolveCloneDestination(workspaces, workspaceId) {
7
+ const workspace = await workspaces.resolveGitWorkspace(workspaceId);
8
+ if (!workspace)
9
+ return { ok: false, statusCode: 404, code: 'WORKSPACE_NOT_FOUND' };
10
+ if (workspace.isGitRepository)
11
+ return { ok: false, statusCode: 409, code: 'WORKSPACE_IS_GIT_REPOSITORY' };
12
+ return { ok: true, path: workspace.path };
13
+ }
@@ -0,0 +1,6 @@
1
+ /*
2
+ * Copyright (C) 2026 Dyne.org foundation
3
+ * Designed by Denis Roio <jaromil@dyne.org>
4
+ * SPDX-License-Identifier: AGPL-3.0-or-later
5
+ */
6
+ export {};
@@ -0,0 +1,13 @@
1
+ /*
2
+ * Copyright (C) 2026 Dyne.org foundation
3
+ * Designed by Denis Roio <jaromil@dyne.org>
4
+ * SPDX-License-Identifier: AGPL-3.0-or-later
5
+ */
6
+ export async function resolveRepositoryTarget(workspaces, workspaceId) {
7
+ const workspace = await workspaces.resolveGitWorkspace(workspaceId);
8
+ if (!workspace)
9
+ return { ok: false, statusCode: 404, code: 'WORKSPACE_NOT_FOUND' };
10
+ if (!workspace.isGitRepository)
11
+ return { ok: false, statusCode: 409, code: 'WORKSPACE_NOT_GIT_REPOSITORY' };
12
+ return { ok: true, path: workspace.path };
13
+ }
@@ -4,17 +4,18 @@
4
4
  * SPDX-License-Identifier: AGPL-3.0-or-later
5
5
  */
6
6
  import { z } from 'zod';
7
+ import { resolveRepositoryTarget } from '../application/repository-target.js';
7
8
  const requestSchema = z.object({ branch: z.string().min(1) });
8
9
  export function registerCheckoutBranch(app, deps) {
9
- app.post('/api/sessions/:id/git/checkout', async (request, reply) => {
10
- const session = deps.find(request.params.id);
11
- if (!session)
12
- return reply.code(404).send({ code: 'SESSION_NOT_FOUND' });
10
+ app.post('/api/git/repositories/:workspaceId/checkout', async (request, reply) => {
11
+ const target = await resolveRepositoryTarget(deps.workspaces, request.params.workspaceId);
12
+ if (!target.ok)
13
+ return reply.code(target.statusCode).send({ code: target.code });
13
14
  const parsed = requestSchema.safeParse(request.body);
14
15
  if (!parsed.success)
15
16
  return reply.code(400).send({ code: 'INVALID_BRANCH' });
16
17
  try {
17
- await deps.checkout(session.workspacePath, parsed.data.branch);
18
+ await deps.checkout(target.path, parsed.data.branch);
18
19
  return reply.code(202).send({ accepted: true });
19
20
  }
20
21
  catch (error) {
@@ -4,6 +4,7 @@
4
4
  * SPDX-License-Identifier: AGPL-3.0-or-later
5
5
  */
6
6
  import { z } from 'zod';
7
+ import { resolveCloneDestination } from '../application/clone-destination.js';
7
8
  const requestSchema = z.object({
8
9
  address: z.string().trim().min(1).max(2_048),
9
10
  workspaceId: z.string().trim().min(1),
@@ -13,7 +14,10 @@ export function registerCloneRepository(app, deps) {
13
14
  const parsed = requestSchema.safeParse(request.body);
14
15
  if (!parsed.success)
15
16
  return reply.code(400).send({ code: 'INVALID_CLONE_ADDRESS' });
16
- await deps.clone(parsed.data.workspaceId, parsed.data.address);
17
+ const destination = await resolveCloneDestination(deps.workspaces, parsed.data.workspaceId);
18
+ if (!destination.ok)
19
+ return reply.code(destination.statusCode).send({ code: destination.code });
20
+ await deps.clone(destination.path, parsed.data.address);
17
21
  return reply.code(202).send({ accepted: true });
18
22
  });
19
23
  }
@@ -3,11 +3,12 @@
3
3
  * Designed by Denis Roio <jaromil@dyne.org>
4
4
  * SPDX-License-Identifier: AGPL-3.0-or-later
5
5
  */
6
+ import { resolveRepositoryTarget } from '../application/repository-target.js';
6
7
  export function registerGetGitSummary(app, deps) {
7
- app.get('/api/sessions/:id/git', async (request, reply) => {
8
- const session = deps.find(request.params.id);
9
- return session
10
- ? reply.send(await deps.inspect(session.workspacePath))
11
- : reply.code(404).send({ code: 'SESSION_NOT_FOUND' });
8
+ app.get('/api/git/repositories/:workspaceId', async (request, reply) => {
9
+ const target = await resolveRepositoryTarget(deps.workspaces, request.params.workspaceId);
10
+ if (!target.ok)
11
+ return reply.code(target.statusCode).send({ code: target.code });
12
+ return reply.send(await deps.inspect(target.path));
12
13
  });
13
14
  }
@@ -3,13 +3,14 @@
3
3
  * Designed by Denis Roio <jaromil@dyne.org>
4
4
  * SPDX-License-Identifier: AGPL-3.0-or-later
5
5
  */
6
+ import { resolveRepositoryTarget } from '../application/repository-target.js';
6
7
  export function registerPullRebase(app, deps) {
7
- app.post('/api/sessions/:id/git/pull', async (request, reply) => {
8
- const session = deps.find(request.params.id);
9
- if (!session)
10
- return reply.code(404).send({ code: 'SESSION_NOT_FOUND' });
8
+ app.post('/api/git/repositories/:workspaceId/pull', async (request, reply) => {
9
+ const target = await resolveRepositoryTarget(deps.workspaces, request.params.workspaceId);
10
+ if (!target.ok)
11
+ return reply.code(target.statusCode).send({ code: target.code });
11
12
  try {
12
- await deps.pull(session.workspacePath);
13
+ await deps.pull(target.path);
13
14
  return reply.code(202).send({ accepted: true });
14
15
  }
15
16
  catch (error) {
@@ -5,22 +5,23 @@
5
5
  */
6
6
  import { idempotencyKey } from '../../../platform/http/idempotency.js';
7
7
  import { mayPush } from '../push-policy.js';
8
+ import { resolveRepositoryTarget } from '../application/repository-target.js';
8
9
  export function registerPushUpstream(app, deps) {
9
- app.post('/api/sessions/:id/git/push', async (request, reply) => {
10
- const id = request.params.id;
10
+ app.post('/api/git/repositories/:workspaceId/push', async (request, reply) => {
11
+ const id = request.params.workspaceId;
11
12
  const key = idempotencyKey(request.headers);
12
13
  const scope = `push-git:${id}`;
13
14
  const prior = key ? deps.idempotency?.get(scope, key) : null;
14
15
  if (prior)
15
16
  return reply.code(prior.statusCode).send(JSON.parse(prior.body));
16
- const session = deps.find(id);
17
- if (!session)
18
- return reply.code(404).send({ code: 'SESSION_NOT_FOUND' });
19
- const summary = await deps.inspect(session.workspacePath);
17
+ const target = await resolveRepositoryTarget(deps.workspaces, id);
18
+ if (!target.ok)
19
+ return reply.code(target.statusCode).send({ code: target.code });
20
+ const summary = await deps.inspect(target.path);
20
21
  const allowed = mayPush(summary);
21
22
  if (!allowed.allowed || !summary.upstream)
22
23
  return reply.code(409).send({ code: allowed.reason ?? 'GIT_PUSH_UNAVAILABLE' });
23
- await deps.push(session.workspacePath, summary.upstream);
24
+ await deps.push(target.path, summary.upstream);
24
25
  const body = { accepted: true };
25
26
  if (key)
26
27
  deps.idempotency?.put(scope, key, 202, JSON.stringify(body));
@@ -4,18 +4,19 @@
4
4
  * SPDX-License-Identifier: AGPL-3.0-or-later
5
5
  */
6
6
  import { idempotencyKey } from '../../../platform/http/idempotency.js';
7
+ import { resolveRepositoryTarget } from '../application/repository-target.js';
7
8
  export function registerRefreshGit(app, deps) {
8
- app.post('/api/sessions/:id/git/refresh', async (request, reply) => {
9
- const id = request.params.id;
9
+ app.post('/api/git/repositories/:workspaceId/refresh', async (request, reply) => {
10
+ const id = request.params.workspaceId;
10
11
  const key = idempotencyKey(request.headers);
11
12
  const scope = `refresh-git:${id}`;
12
13
  const prior = key ? deps.idempotency?.get(scope, key) : null;
13
14
  if (prior)
14
15
  return reply.code(prior.statusCode).send(JSON.parse(prior.body));
15
- const session = deps.find(id);
16
- if (!session)
17
- return reply.code(404).send({ code: 'SESSION_NOT_FOUND' });
18
- await deps.refresh(session.workspacePath);
16
+ const target = await resolveRepositoryTarget(deps.workspaces, id);
17
+ if (!target.ok)
18
+ return reply.code(target.statusCode).send({ code: target.code });
19
+ await deps.refresh(target.path);
19
20
  const body = { accepted: true };
20
21
  if (key)
21
22
  deps.idempotency?.put(scope, key, 202, JSON.stringify(body));
@@ -8,7 +8,7 @@ export function registerForgetSession(app, deps) {
8
8
  const id = request.params.id;
9
9
  if (!deps.find(id))
10
10
  return reply.code(404).send({ code: 'SESSION_NOT_FOUND' });
11
- deps.close(id);
11
+ await deps.close(id);
12
12
  deps.remove(id);
13
13
  return reply.code(204).send();
14
14
  });
@@ -3,9 +3,15 @@
3
3
  * Designed by Denis Roio <jaromil@dyne.org>
4
4
  * SPDX-License-Identifier: AGPL-3.0-or-later
5
5
  */
6
+ import { buildResumeCommand } from '../application/resume-command.js';
6
7
  export function registerListRecentThreads(app, deps) {
7
8
  app.get('/api/sessions/recent-threads', async () => {
8
9
  const threads = await deps.list();
9
- return threads.map(({ id, cwd, recencyAt }) => ({ id, cwd, recencyAt }));
10
+ return threads.map(({ id, cwd, profile, recencyAt }) => ({
11
+ id,
12
+ cwd,
13
+ recencyAt,
14
+ resumeCommand: buildResumeCommand({ profile, threadId: id, workspacePath: cwd }),
15
+ }));
10
16
  });
11
17
  }
@@ -14,7 +14,7 @@ export async function promoteRecentThread(thread, deps) {
14
14
  id: deps.createId(),
15
15
  workspaceId: thread.cwd,
16
16
  workspacePath: thread.cwd,
17
- profile: 'default',
17
+ profile: thread.profile,
18
18
  threadId: thread.id,
19
19
  now,
20
20
  }).snapshot;
@@ -17,7 +17,7 @@ export function registerReleaseSession(app, deps) {
17
17
  return reply.code(404).send({ code: 'SESSION_NOT_FOUND' });
18
18
  const released = deps.release(session);
19
19
  deps.save(released);
20
- deps.close(id);
20
+ await deps.close(id);
21
21
  if (key)
22
22
  deps.idempotency?.put(scope, key, 202, JSON.stringify(released));
23
23
  return reply.code(202).send(released);
@@ -17,7 +17,7 @@ export function registerStopSession(app, deps) {
17
17
  return reply.code(404).send({ code: 'SESSION_NOT_FOUND' });
18
18
  const stopped = deps.stop(session);
19
19
  deps.save(stopped);
20
- deps.close(id);
20
+ await deps.close(id);
21
21
  if (key)
22
22
  deps.idempotency?.put(scope, key, 202, JSON.stringify(stopped));
23
23
  return reply.code(202).send(stopped);
@@ -5,56 +5,130 @@
5
5
  */
6
6
  import { createHash } from 'node:crypto';
7
7
  import { readdir, realpath, stat } from 'node:fs/promises';
8
- import { join, relative } from 'node:path';
8
+ import { isAbsolute, join, relative, sep } from 'node:path';
9
9
  export class FilesystemWorkspaceCatalog {
10
10
  root;
11
11
  constructor(root) {
12
12
  this.root = realpath(root);
13
13
  }
14
14
  async list() {
15
- return (await this.entries()).map(({ id, name, git }) => ({ id, name, isGitRepository: git }));
15
+ return [(await this.tree()).option];
16
16
  }
17
17
  async resolve(id) {
18
- const found = (await this.entries()).find((entry) => entry.id === id);
18
+ const found = this.find(await this.tree(), id);
19
19
  if (!found)
20
20
  throw new Error('WORKSPACE_NOT_FOUND');
21
- return { id: found.id, name: found.name, realPath: found.path };
21
+ return { id: found.option.id, name: found.option.name, realPath: found.realPath };
22
22
  }
23
- async entries() {
23
+ async resolveGitWorkspace(id) {
24
+ const found = this.find(await this.tree(), id);
25
+ return found
26
+ ? {
27
+ id: found.option.id,
28
+ path: found.realPath,
29
+ isGitRepository: found.option.isGitRepository,
30
+ }
31
+ : null;
32
+ }
33
+ async tree() {
24
34
  const root = await this.root;
25
- const children = await readdir(root, { withFileTypes: true });
26
- const rootEntry = {
27
- id: createHash('sha256').update(root).digest('base64url'),
35
+ return ((await this.visit({
36
+ root,
37
+ realPath: root,
28
38
  name: '/',
29
- path: root,
30
- git: await stat(join(root, '.git'))
31
- .then(() => true)
32
- .catch(() => false),
33
- };
34
- const output = await Promise.all(children.map(async (child) => {
39
+ relativePath: '.',
40
+ visited: new Set(),
41
+ isRoot: true,
42
+ })) ?? this.entry(root, '/', '.', false, []));
43
+ }
44
+ async visit(input) {
45
+ if (input.visited.has(input.realPath))
46
+ return null;
47
+ input.visited.add(input.realPath);
48
+ const isGitRepository = await this.isGitRepository(input.realPath);
49
+ if (isGitRepository) {
50
+ return this.entry(input.realPath, input.name, input.relativePath, true, []);
51
+ }
52
+ let directoryEntries;
53
+ try {
54
+ directoryEntries = await readdir(input.realPath, { withFileTypes: true });
55
+ }
56
+ catch {
57
+ return input.isRoot
58
+ ? this.entry(input.realPath, input.name, input.relativePath, false, [])
59
+ : null;
60
+ }
61
+ const children = [];
62
+ for (const child of directoryEntries
63
+ .filter((entry) => !entry.name.startsWith('.'))
64
+ .sort((left, right) => this.compareNames(left.name, right.name))) {
35
65
  if (!child.isDirectory() && !child.isSymbolicLink())
36
- return null;
66
+ continue;
37
67
  try {
38
- const path = await realpath(join(root, child.name));
39
- const info = await stat(path);
40
- if (!info.isDirectory() || relative(root, path).startsWith('..'))
41
- return null;
42
- const git = await stat(join(path, '.git'))
43
- .then(() => true)
44
- .catch(() => false);
45
- return {
46
- id: createHash('sha256').update(path).digest('base64url'),
68
+ const childRealPath = await realpath(join(input.realPath, child.name));
69
+ const info = await stat(childRealPath);
70
+ if (!info.isDirectory() || !this.isWithin(input.root, childRealPath))
71
+ continue;
72
+ const childRelativePath = input.relativePath === '.' ? child.name : `${input.relativePath}/${child.name}`;
73
+ const visitedChild = await this.visit({
74
+ root: input.root,
75
+ realPath: childRealPath,
47
76
  name: child.name,
48
- path,
49
- git,
50
- };
77
+ relativePath: childRelativePath,
78
+ visited: input.visited,
79
+ });
80
+ if (visitedChild)
81
+ children.push(visitedChild);
51
82
  }
52
83
  catch {
53
- return null;
84
+ // Entries may vanish or become unreadable while the tree is being discovered.
54
85
  }
55
- }));
56
- return [rootEntry, ...output]
57
- .filter((value) => value !== null)
58
- .sort((a, b) => a.name.localeCompare(b.name, undefined, { sensitivity: 'base' }));
86
+ }
87
+ return this.entry(input.realPath, input.name, input.relativePath, false, children);
88
+ }
89
+ entry(realPath, name, relativePath, isGitRepository, children) {
90
+ return {
91
+ option: {
92
+ id: this.id(realPath),
93
+ name,
94
+ relativePath,
95
+ isGitRepository,
96
+ children: children.map((child) => child.option),
97
+ },
98
+ realPath,
99
+ children,
100
+ };
101
+ }
102
+ find(entry, id) {
103
+ if (entry.option.id === id)
104
+ return entry;
105
+ for (const child of entry.children) {
106
+ const found = this.find(child, id);
107
+ if (found)
108
+ return found;
109
+ }
110
+ return undefined;
111
+ }
112
+ id(path) {
113
+ return createHash('sha256').update(path).digest('base64url');
114
+ }
115
+ compareNames(left, right) {
116
+ const foldedLeft = left.toLowerCase();
117
+ const foldedRight = right.toLowerCase();
118
+ if (foldedLeft < foldedRight)
119
+ return -1;
120
+ if (foldedLeft > foldedRight)
121
+ return 1;
122
+ return left < right ? -1 : left > right ? 1 : 0;
123
+ }
124
+ isWithin(root, path) {
125
+ const fromRoot = relative(root, path);
126
+ return (fromRoot === '' ||
127
+ (!isAbsolute(fromRoot) && fromRoot !== '..' && !fromRoot.startsWith(`..${sep}`)));
128
+ }
129
+ async isGitRepository(path) {
130
+ return stat(join(path, '.git'))
131
+ .then(() => true)
132
+ .catch(() => false);
59
133
  }
60
134
  }
@@ -34,7 +34,7 @@ async function listProfileThreads(launch, profile, cwd) {
34
34
  return (result.data ?? []).flatMap((thread) => {
35
35
  if (typeof thread.id !== 'string' || typeof thread.cwd !== 'string')
36
36
  return [];
37
- return [{ id: thread.id, cwd: thread.cwd, recencyAt: toRecency(thread.recencyAt) }];
37
+ return [{ id: thread.id, cwd: thread.cwd, profile, recencyAt: toRecency(thread.recencyAt) }];
38
38
  });
39
39
  }
40
40
  catch {
@@ -19,6 +19,7 @@ export class CodexSessionRuntime {
19
19
  }
20
20
  pendingRequests = new Map();
21
21
  exitUnsubscribers = new Map();
22
+ threadIds = new Map();
22
23
  async start(session, now, settings = {}) {
23
24
  const process = this.launch({ profile: session.profile, cwd: session.workspacePath });
24
25
  try {
@@ -38,6 +39,7 @@ export class CodexSessionRuntime {
38
39
  if (!result.thread?.id)
39
40
  throw new Error('CODEX_THREAD_ID_MISSING');
40
41
  this.processes.set(session.id, process);
42
+ this.threadIds.set(session.id, result.thread.id);
41
43
  return RelaySession.rehydrate(session).bindThread(result.thread.id, now).snapshot;
42
44
  }
43
45
  catch (error) {
@@ -50,6 +52,20 @@ export class CodexSessionRuntime {
50
52
  this.exitUnsubscribers.delete(sessionId);
51
53
  this.processes.get(sessionId)?.close();
52
54
  this.processes.delete(sessionId);
55
+ this.threadIds.delete(sessionId);
56
+ }
57
+ async release(sessionId) {
58
+ const process = this.processes.get(sessionId);
59
+ const threadId = this.threadIds.get(sessionId);
60
+ if (process && threadId) {
61
+ try {
62
+ await process.rpc.request('thread/unsubscribe', { threadId });
63
+ }
64
+ catch {
65
+ // Closing the child still releases relay ownership if Codex has already exited.
66
+ }
67
+ }
68
+ this.stop(sessionId);
53
69
  }
54
70
  /** Releases all relay-owned app-server children during graceful shutdown. */
55
71
  stopAll() {
@@ -119,6 +135,7 @@ export class CodexSessionRuntime {
119
135
  cwd: session.workspacePath,
120
136
  });
121
137
  this.processes.set(session.id, process);
138
+ this.threadIds.set(session.id, session.threadId);
122
139
  return RelaySession.rehydrate(session).restore(now).snapshot;
123
140
  }
124
141
  catch (error) {
@@ -135,6 +152,7 @@ export class CodexSessionRuntime {
135
152
  attachExitHandler(sessionId, process) {
136
153
  this.exitUnsubscribers.set(sessionId, process.onExit?.(() => {
137
154
  this.processes.delete(sessionId);
155
+ this.threadIds.delete(sessionId);
138
156
  this.exitUnsubscribers.delete(sessionId);
139
157
  this.onProcessExit?.(sessionId);
140
158
  }) ?? (() => { }));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gestalt-mobile",
3
- "version": "0.1.1",
3
+ "version": "0.3.0",
4
4
  "description": "Mobile-first web relay for durable Codex development sessions",
5
5
  "keywords": [
6
6
  "codex",
@@ -1,10 +0,0 @@
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,ee=1<<19,te=1<<20,ne=1<<25,re=65536,ie=1<<21,ae=1<<22,oe=1<<23,se=Symbol(`$state`),ce=Symbol(``),le=Symbol(`attributes`),ue=Symbol(`class`),de=Symbol(`style`),fe=Symbol(`text`),C=Symbol(`form reset`),pe=new class extends Error{name=`StaleReactionError`;message="The reaction that called `getAbortSignal()` was re-run or destroyed"},w=!!globalThis.document?.contentType&&globalThis.document.contentType.includes(`xml`);function me(e){throw Error(`https://svelte.dev/e/lifecycle_outside_component`)}function T(){throw Error(`https://svelte.dev/e/async_derived_orphan`)}function he(e,t,n){throw Error(`https://svelte.dev/e/each_key_duplicate`)}function ge(e){throw Error(`https://svelte.dev/e/effect_in_teardown`)}function _e(){throw Error(`https://svelte.dev/e/effect_in_unowned_derived`)}function ve(e){throw Error(`https://svelte.dev/e/effect_orphan`)}function ye(){throw Error(`https://svelte.dev/e/effect_update_depth_exceeded`)}function be(){throw Error(`https://svelte.dev/e/state_descriptors_fixed`)}function xe(){throw Error(`https://svelte.dev/e/state_prototype_fixed`)}function Se(){throw Error(`https://svelte.dev/e/state_unsafe_mutation`)}function Ce(){throw Error(`https://svelte.dev/e/svelte_boundary_reset_onerror`)}var we={},E=Symbol(`uninitialized`),Te=`http://www.w3.org/1999/xhtml`;function Ee(){console.warn(`https://svelte.dev/e/derived_inert`)}function De(e){console.warn(`https://svelte.dev/e/hydration_mismatch`)}function Oe(){console.warn(`https://svelte.dev/e/select_multiple_invalid_value`)}function ke(){console.warn(`https://svelte.dev/e/svelte_boundary_reset_noop`)}var D=!1;function Ae(e){D=e}var O;function k(e){if(e===null)throw De(),we;return O=e}function je(){return k(tn(O))}function A(e){if(D){if(tn(O)!==null)throw De(),we;O=e}}function Me(e=1){if(D){for(var t=e,n=O;t--;)n=tn(n);O=n}}function Ne(e=!0){for(var t=0,n=O;;){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=tn(n);e&&n.remove(),n=i}}function Pe(e){if(!e||e.nodeType!==8)throw De(),we;return e.data}function Fe(e){return e===this.v}function Ie(e,t){return e==e?e!==t||typeof e==`object`&&!!e||typeof e==`function`:t==t}function Le(e){return!Ie(e,this.v)}var j=null;function Re(e){j=e}function ze(e,t=!1,n){j={p:j,i:!1,c:null,e:null,s:e,x:null,r:W,l:null}}function Be(e){var t=j,n=t.e;if(n!==null){t.e=null;for(var r of n)vn(r)}return e!==void 0&&(t.x=e),t.i=!0,j=t.p,e??{}}function Ve(){return!0}var He=[];function Ue(){var e=He;He=[],f(e)}function We(e){if(He.length===0&&!bt){var t=He;queueMicrotask(()=>{t===He&&Ue()})}He.push(e)}function Ge(){for(;He.length>0;)Ue()}function Ke(e){var t=W;if(t===null)return U.f|=oe,e;if(!(t.f&32768)&&!(t.f&4))throw e;qe(e,t)}function qe(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 Je=~(h|g|m);function M(e,t){e.f=e.f&Je|t}function Ye(e){e.f&512||e.deps===null?M(e,m):M(e,g)}function Xe(e){if(e!==null)for(let t of e)!(t.f&2)||!(t.f&65536)||(t.f^=re,Xe(t.deps))}function Ze(e,t,n){e.f&2048?t.add(e):e.f&4096&&n.add(e),Xe(e.deps),M(e,m)}function Qe(e){let t=0,n=zt(0),r;return()=>{hn()&&(K(n),Sn(()=>(t===0&&(r=or(()=>e(()=>Ut(n)))),t+=1,()=>{We(()=>{--t,t===0&&(r?.(),r=void 0,Ut(n))})})))}}var $e=x|ee;function et(e,t,n,r){new tt(e,t,n,r)}var tt=class{parent;is_pending=!1;transform_error;#e;#t=D?O: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=Qe(()=>(this.#m=zt(this.#l),()=>{this.#m=null}));constructor(e,t,n,r){this.#e=e,this.#n=t,this.#r=e=>{var t=W;t.b=this,t.f|=128,n(e)},this.parent=W.b,this.transform_error=r??this.parent?.transform_error??(e=>e),this.#i=Cn(()=>{if(D){let e=this.#t;je();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()},$e),D&&(this.#e=O)}#g(){try{this.#a=V(()=>this.#r(this.#e))}catch(e){this.error(e)}}#_(e){let t=this.#n.failed;t&&(this.#s=V(()=>{t(this.#e,()=>e,()=>()=>{})}))}#v(){let e=this.#n.pending;e&&(this.is_pending=!0,this.#o=V(()=>e(this.#e)),We(()=>{var e=this.#c=document.createDocumentFragment(),t=I();e.append(t),this.#a=this.#x(()=>V(()=>this.#r(t))),this.#u===0&&(this.#e.before(e),this.#c=null,kn(this.#o,()=>{this.#o=null}),this.#b(N))}))}#y(){try{if(this.is_pending=this.has_pending_snippet(),this.#u=0,this.#l=0,this.#a=V(()=>{this.#r(this.#e)}),this.#u>0){var e=this.#c=document.createDocumentFragment();Nn(this.#a,e);let t=this.#n.pending;this.#o=V(()=>t(this.#e))}else this.#b(N)}catch(e){this.error(e)}}#b(e){this.is_pending=!1,e.transfer_effects(this.#f,this.#p)}defer_effect(e){Ze(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=W,n=U,r=j;Bn(this.#i),zn(this.#i),Re(this.#i.ctx);try{return Et.ensure(),e()}catch(e){return Ke(e),null}finally{Bn(t),zn(n),Re(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&&kn(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,We(()=>{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;N?.is_fork?(this.#a&&N.skip_effect(this.#a),this.#o&&N.skip_effect(this.#o),this.#s&&N.skip_effect(this.#s),N.oncommit(()=>{this.#C(e)})):this.#C(e)}#C(e){this.#a&&=(H(this.#a),null),this.#o&&=(H(this.#o),null),this.#s&&=(H(this.#s),null),D&&(k(this.#t),Me(),k(Ne()));var t=this.#n.onerror;let n=this.#n.failed;var r=!1,i=!1;let a=()=>{if(r){ke();return}r=!0,i&&Ce(),this.#s!==null&&kn(this.#s,()=>{this.#s=null}),this.#x(()=>{this.#y()})},o=e=>{try{i=!0,t?.(e,a),i=!1}catch(e){qe(e,this.#i&&this.#i.parent)}n&&(this.#s=this.#x(()=>{try{return V(()=>{var t=W;t.b=this,t.f|=128,n(this.#e,()=>e,()=>a)})}catch(e){return qe(e,this.#i.parent),null}}))};We(()=>{var t;try{t=this.transform_error(e)}catch(e){qe(e,this.#i&&this.#i.parent);return}typeof t==`object`&&t&&typeof t.then==`function`?t.then(o,e=>qe(e,this.#i&&this.#i.parent)):o(t)})}};function nt(e,t,n,r){let i=Ve()?ot:ut;var a=e.filter(e=>!e.settled),o=t.map(i);if(n.length===0&&a.length===0){r(o);return}var s=W,c=rt(),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){qe(e,s)}it()}}var d=at();if(n.length===0){l.then(()=>u([])).finally(d);return}function f(){Promise.all(n.map(e=>ct(e))).then(u).catch(e=>qe(e,s)).finally(d)}l?l.then(()=>{c(),f(),it()}):f()}function rt(){var e=W,t=U,n=j,r=N;return function(i=!0){Bn(e),zn(t),Re(n),i&&!(e.f&16384)&&(r?.activate(),r?.apply())}}function it(e=!0){Bn(null),zn(null),Re(null),e&&N?.deactivate()}function at(){var e=W,t=e.b,n=N,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 ot(e){var t=2|h;return W!==null&&(W.f|=ee),{ctx:j,deps:null,effects:null,equals:Fe,f:t,fn:e,reactions:null,rv:0,v:E,wv:0,parent:W,ac:null}}var st=Symbol(`obsolete`);function ct(e,t,n){let r=W;r===null&&T();var i=void 0,a=zt(E),o=!U,s=new Set;return xn(()=>{var t=W,n=p();i=n.promise;try{Promise.resolve(e()).then(n.resolve,e=>{e!==pe&&n.reject(e)}).finally(it)}catch(e){n.reject(e),it()}var c=N;if(o){if(t.f&32768)var l=at();if(r.b?.is_rendered())c.async_deriveds.get(t)?.reject(st);else for(let e of s.values())e.reject(st);s.add(n),c.async_deriveds.set(t,n)}let u=(e,t=void 0)=>{l?.(),s.delete(n),t!==st&&(c.activate(),t?(a.f|=oe,Vt(a,t)):(a.f&8388608&&(a.f^=oe),Vt(a,e)),c.deactivate())};n.promise.then(u,e=>u(null,e||`unknown`))}),gn(()=>{for(let e of s)e.reject(st)}),new Promise(e=>{function t(n){function r(){n===i?e(a):t(i)}n.then(r,r)}t(i)})}function lt(e){let t=ot(e);return Hn(t),t}function ut(e){let t=ot(e);return t.equals=Le,t}function dt(e){var t=e.effects;if(t!==null){e.effects=null;for(var n=0;n<t.length;n+=1)H(t[n])}}function ft(e){var t,n=W,r=e.parent;if(!In&&r!==null&&e.v!==E&&r.f&24576)return Ee(),e.v;Bn(r);try{e.f&=~re,dt(e),t=$n(e)}finally{Bn(n)}return t}function pt(e){var t=ft(e);if(!e.equals(t)&&(e.wv=Xn(),(!N?.is_fork||e.deps===null)&&(N===null?e.v=t:(N.capture(e,t,!0),_t?.capture(e,t,!0)),e.deps===null))){M(e,m);return}In||(vt===null?Ye(e):(hn()||N?.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(pe),t.fn!==null&&(t.teardown=d),t.ac=null,tr(t,0),Tn(t))}function ht(e){if(e.effects!==null)for(let t of e.effects)t.teardown&&t.fn!==null&&nr(t)}var gt=null,N=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)M(r,h),t(r);for(r of n.m)M(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),M(e,h),this.schedule(e);for(let e of this.#d)M(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(N=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&&N.#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=N;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):Zn(r)&&(i&16&&this.#d.add(r),nr(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),M(i,h),this.schedule(i))}}};for(let e of this.current.keys())t(e);this.oncommit(()=>e.discard()),e.#x(),N=this,this.#g()}#b(e){for(var t=0;t<e.length;t+=1)Ze(e[t],this.#u,this.#d)}capture(e,t,n=!1){e.v!==E&&!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(){N=this}deactivate(){N=null,vt=null}flush(){try{xt=!0,N=this,this.#g()}finally{wt=0,yt=null,St=null,Ct=null,xt=!1,N=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(st);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,We(()=>{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(N===null){let t=N=new e;!xt&&!bt&&We(()=>{t.#e||t.flush()})}return N}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===W&&(U===null||!(U.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&&(N!==null&&!N.is_fork&&N.flush(),n=e());;){if(Ge(),N===null)return n;N.flush()}}finally{bt=t}}function Ot(){try{ye()}catch(e){qe(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)&&Zn(r)&&(kt=new Set,nr(r),r.deps===null&&r.first===null&&r.nodes===null&&r.teardown===null&&r.ac===null&&On(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||nr(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)&&(M(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){N.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),M(e,m);for(var n=e.first;n!==null;)Pt(n,t),n=n.next}}function Ft(e){M(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:Fe,rv:0,wv:0}}function P(e,t){let n=zt(e,t);return Hn(n),n}function Bt(e,t=!1,n=!0){let r=zt(e);return t||(r.equals=Le),r}function F(e,t,n=!1){return U!==null&&(!Rn||U.f&131072)&&Ve()&&U.f&4325394&&(Vn===null||!Vn.has(e))&&Se(),Vt(e,n?Gt(t):t,Ct)}function Vt(e,t,n=null){if(!e.equals(t)){Lt.set(e,In?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&&Ye(t)}e.wv=Xn(),Wt(e,h,n),Ve()&&W!==null&&W.f&1024&&!(W.f&96)&&(Wn===null?Gn([e]):Wn.push(e)),!r.is_fork&&It.size>0&&!Rt&&Ht()}return t}function Ht(){Rt=!1;for(let e of It){e.f&1024&&M(e,g);let t;try{t=Zn(e)}catch{t=!0}t&&nr(e)}It.clear()}function Ut(e){F(e,e.v+1)}function Wt(e,t,n){var r=e.reactions;if(r!==null)for(var i=Ve(),a=r.length,o=0;o<a;o++){var s=r[o],c=s.f;if(!(!i&&s===W)){var l=(c&h)===0;if(l&&M(s,t),c&131072)It.add(s);else if(c&2){var u=s;vt?.delete(u),c&65536||(c&512&&(W===null||!(W.f&2097152))&&(s.f|=re),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||se in t)return t;let n=l(t);if(n!==s&&n!==c)return t;var r=new Map,i=e(t),o=P(0),u=null,d=Jn,f=e=>{if(Jn===d)return e();var t=U,n=Jn;zn(null),Yn(d);var r=e();return zn(t),Yn(n),r};return i&&r.set(`length`,P(t.length,u)),new Proxy(t,{defineProperty(e,t,n){(!(`value`in n)||n.configurable===!1||n.enumerable===!1||n.writable===!1)&&be();var i=r.get(t);return i===void 0?f(()=>{var e=P(n.value,u);return r.set(t,e),e}):F(i,n.value,!0),!0},deleteProperty(e,t){var n=r.get(t);if(n===void 0){if(t in e){let e=f(()=>P(E,u));r.set(t,e),Ut(o)}}else F(n,E),Ut(o);return!0},get(e,n,i){if(n===se)return t;var o=r.get(n),s=n in e;if(o===void 0&&(!s||a(e,n)?.writable)&&(o=f(()=>P(Gt(s?e[n]:E),u)),r.set(n,o)),o!==void 0){var c=K(o);return c===E?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!==E)return{enumerable:!0,configurable:!0,value:o,writable:!0}}return n},has(e,t){if(t===se)return!0;var n=r.get(t),i=n!==void 0&&n.v!==E||Reflect.has(e,t);return(n!==void 0||W!==null&&(!i||a(e,t)?.writable))&&(n===void 0&&(n=f(()=>P(i?Gt(e[t]):E,u)),r.set(t,n)),K(n)===E)?!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(()=>P(E,u)),r.set(d+``,p)):F(p,E)}if(c===void 0)(!l||a(e,t)?.writable)&&(c=f(()=>P(void 0,u)),F(c,Gt(n)),r.set(t,c));else{l=c.v!==E;var m=f(()=>Gt(n));F(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&&F(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!==E});for(var[n,i]of r)i.v!==E&&!(n in e)&&t.push(n);return t},setPrototypeOf(){xe()}})}function Kt(e){try{if(typeof e==`object`&&e&&se in e)return e[se]}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[ue]=void 0,e[le]=null,e[de]=void 0,e.__e=void 0),u(n)&&(n[fe]=void 0)}}function I(e=``){return document.createTextNode(e)}function en(e){return Zt.call(e)}function tn(e){return Qt.call(e)}function L(e,t){if(!D)return en(e);var n=en(O);if(n===null)n=O.appendChild(I());else if(t&&n.nodeType!==3){var r=I();return n?.before(r),k(r),r}return t&&on(n),k(n),n}function R(e,t=!1){if(!D){var n=en(e);return n instanceof Comment&&n.data===``?tn(n):n}if(t){if(O?.nodeType!==3){var r=I();return O?.before(r),k(r),r}on(O)}return O}function z(e,t=1,n=!1){let r=D?O:e;for(var i;t--;)i=r,r=tn(r);if(!D)return r;if(n){if(r?.nodeType!==3){var a=I();return r===null?i?.after(a):r.before(a),k(a),a}on(r)}return k(r),r}function nn(e){e.textContent=``}function rn(){return!1}function an(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 on(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 sn(e){D&&en(e)!==null&&nn(e)}var cn=!1;function ln(){cn||(cn=!0,document.addEventListener(`reset`,e=>{Promise.resolve().then(()=>{if(!e.defaultPrevented)for(let t of e.target.elements)t[C]?.()})},{capture:!0}))}function un(e){var t=U,n=W;zn(null),Bn(null);try{return e()}finally{zn(t),Bn(n)}}function dn(e,t,n,r=n){e.addEventListener(t,()=>un(n));let i=e[C];i?e[C]=()=>{i(),r(!0)}:e[C]=()=>r(!0),ln()}function fn(e){W===null&&(U===null&&ve(e),_e()),In&&ge(e)}function pn(e,t){var n=t.last;n===null?t.last=t.first=e:(n.next=e,e.prev=n,t.last=e)}function mn(e,t){var n=W;n!==null&&n.f&8192&&(e|=_);var r={ctx:j,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};N?.register_created_effect(r);var i=r;if(e&4)St===null?Et.ensure().schedule(r):St.push(r);else if(t!==null){try{nr(r)}catch(e){throw H(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&&pn(i,n),U!==null&&U.f&2&&!(e&64))){var a=U;(a.effects??=[]).push(i)}return r}function hn(){return U!==null&&!Rn}function gn(e){let t=mn(8,null);return M(t,m),t.teardown=e,t}function _n(e){fn(`$effect`);var t=W.f;if(!U&&t&32&&j!==null&&!j.i){var n=j;(n.e??=[]).push(e)}else return vn(e)}function vn(e){return mn(4|te,e)}function yn(e){Et.ensure();let t=mn(64|ee,e);return(e={})=>new Promise(n=>{e.outro?kn(t,()=>{H(t),n(void 0)}):(H(t),n(void 0))})}function bn(e){return mn(4,e)}function xn(e){return mn(ae|ee,e)}function Sn(e,t=0){return mn(8|t,e)}function B(e,t=[],n=[],r=[]){nt(r,t,n,t=>{mn(8,()=>{e(...t.map(K))})})}function Cn(e,t=0){return mn(16|t,e)}function V(e){return mn(32|ee,e)}function wn(e){var t=e.teardown;if(t!==null){let e=In,n=U;Ln(!0),zn(null);try{t.call(null)}finally{Ln(e),zn(n)}}}function Tn(e,t=!1){var n=e.first;for(e.first=e.last=null;n!==null;){let e=n.ac;e!==null&&un(()=>{e.abort(pe)});var r=n.next;n.f&64?n.parent=null:H(n,t),n=r}}function En(e){for(var t=e.first;t!==null;){var n=t.next;t.f&32||H(t),t=n}}function H(e,t=!0){var n=!1;(t||e.f&262144)&&e.nodes!==null&&e.nodes.end!==null&&(Dn(e.nodes.start,e.nodes.end),n=!0),e.f|=b,Tn(e,t&&!n),tr(e,0);var r=e.nodes&&e.nodes.t;if(r!==null)for(let e of r)e.stop();wn(e),e.f^=b,e.f|=v;var i=e.parent;i!==null&&i.first!==null&&On(e),e.next=e.prev=e.teardown=e.ctx=e.deps=e.fn=e.nodes=e.ac=e.b=null}function Dn(e,t){for(;e!==null;){var n=e===t?null:tn(e);e.remove(),e=n}}function On(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 kn(e,t,n=!0){var r=[];An(e,r,!0);var i=()=>{n&&H(e),t&&t()},a=r.length;if(a>0){var o=()=>--a||i();for(var s of r)s.out(o)}else i()}function An(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;An(i,t,o?n:!1)}i=a}}}function jn(e){Mn(e,!0)}function Mn(e,t){if(e.f&8192){e.f^=_,e.f&1024||(M(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;Mn(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 Nn(e,t){if(e.nodes)for(var n=e.nodes.start,r=e.nodes.end;n!==null;){var i=n===r?null:tn(n);t.append(n),n=i}}var Pn=null,Fn=!1,In=!1;function Ln(e){In=e}var U=null,Rn=!1;function zn(e){U=e}var W=null;function Bn(e){W=e}var Vn=null;function Hn(e){U!==null&&(Vn??=new Set).add(e)}var G=null,Un=0,Wn=null;function Gn(e){Wn=e}var Kn=1,qn=0,Jn=qn;function Yn(e){Jn=e}function Xn(){return++Kn}function Zn(e){var t=e.f;if(t&2048)return!0;if(t&2&&(e.f&=~re),t&4096){for(var n=e.deps,r=n.length,i=0;i<r;i++){var a=n[i];if(Zn(a)&&pt(a),a.wv>e.wv)return!0}t&512&&vt===null&&M(e,m)}return!1}function Qn(e,t,n=!0){var r=e.reactions;if(r!==null&&!(Vn!==null&&Vn.has(e)))for(var i=0;i<r.length;i++){var a=r[i];a.f&2?Qn(a,t,!1):t===a&&(n?M(a,h):a.f&1024&&M(a,g),Nt(a))}}function $n(e){var t=G,n=Un,r=Wn,i=U,a=Vn,o=j,s=Rn,c=Jn,l=e.f;G=null,Un=0,Wn=null,U=l&96?null:e,Vn=null,Re(e.ctx),Rn=!1,Jn=++qn,e.ac!==null&&(un(()=>{e.ac.abort(pe)}),e.ac=null);try{e.f|=ie;var u=e.fn,d=u();e.f|=y;var f=e.deps,p=N?.is_fork;if(G!==null){var m;if(p||tr(e,Un),f!==null&&Un>0)for(f.length=Un+G.length,m=0;m<G.length;m++)f[Un+m]=G[m];else e.deps=f=G;if(hn()&&e.f&512)for(m=Un;m<f.length;m++)(f[m].reactions??=[]).push(e)}else!p&&f!==null&&Un<f.length&&(tr(e,Un),f.length=Un);if(Ve()&&Wn!==null&&!Rn&&f!==null&&!(e.f&6146))for(m=0;m<Wn.length;m++)Qn(Wn[m],e);if(i!==null&&i!==e){if(qn++,i.deps!==null)for(let e=0;e<n;e+=1)i.deps[e].rv=qn;if(t!==null)for(let e of t)e.rv=qn;Wn!==null&&(r===null?r=Wn:r.push(...Wn))}return e.f&8388608&&(e.f^=oe),d}catch(e){return Ke(e)}finally{e.f^=ie,G=t,Un=n,Wn=r,U=i,Vn=a,Re(o),Rn=s,Jn=c}}function er(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&&(G===null||!n.call(G,r))){var s=r;s.f&512&&(s.f^=512,s.f&=~re),s.v!==E&&Ye(s),mt(s),tr(s,0)}}function tr(e,t){var n=e.deps;if(n!==null)for(var r=t;r<n.length;r++)er(e,n[r])}function nr(e){var t=e.f;if(!(t&16384)){M(e,m);var n=W,r=Fn;W=e,Fn=!0;try{t&16777232?En(e):Tn(e),wn(e);var i=$n(e);e.teardown=typeof i==`function`?i:null,e.wv=Kn}finally{Fn=r,W=n}}}async function rr(){await Promise.resolve(),Dt()}function K(e){var t=(e.f&2)!=0;if(Pn?.add(e),U!==null&&!Rn&&!(W!==null&&W.f&16384)&&(Vn===null||!Vn.has(e))){var r=U.deps;if(U.f&2097152)e.rv<qn&&(e.rv=qn,G===null&&r!==null&&r[Un]===e?Un++:G===null?G=[e]:G.push(e));else{U.deps??=[],n.call(U.deps,e)||U.deps.push(e);var i=e.reactions;i===null?e.reactions=[U]:n.call(i,U)||i.push(U)}}if(In&&Lt.has(e))return Lt.get(e);if(t){var a=e;if(In){var o=a.v;return(!(a.f&1024)&&a.reactions!==null||ar(a))&&(o=ft(a)),Lt.set(a,o),o}var s=(a.f&512)==0&&!Rn&&U!==null&&(Fn||(U.f&512)!=0),c=(a.f&y)===0;Zn(a)&&(s&&(a.f|=512),pt(a)),s&&!c&&(ht(a),ir(a))}if(vt?.has(e))return vt.get(e);if(e.f&8388608)throw e.v;return e.v}function ir(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),ir(t))}function ar(e){if(e.v===E)return!0;if(e.deps===null)return!1;for(let t of e.deps)if(Lt.has(t)||t.f&2&&ar(t))return!0;return!1}function or(e){var t=Rn;try{return Rn=!0,e()}finally{Rn=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 sr=[`touchstart`,`touchmove`];function cr(e){return sr.includes(e)}var lr=Symbol(`events`),ur=new Set,dr=new Set;function fr(e,t,n,r={}){function i(e){if(r.capture||gr.call(t,e),!e.cancelBubble)return un(()=>n?.call(this,e))}return e.startsWith(`pointer`)||e.startsWith(`touch`)||e===`wheel`?We(()=>{t.addEventListener(e,i,r)}):t.addEventListener(e,i,r),i}function pr(e,t,n,r,i){var a={capture:r,passive:i},o=fr(e,t,n,a);(t===document.body||t===window||t===document||t instanceof HTMLMediaElement)&&gn(()=>{t.removeEventListener(e,o,a)})}function q(e,t,n){(t[lr]??={})[e]=n}function mr(e){for(var t=0;t<e.length;t++)ur.add(e[t]);for(var n of dr)n(e)}var hr=null;function gr(e){var t=this,n=t.ownerDocument,r=e.type,a=e.composedPath?.()||[],o=a[0]||e.target;hr=e;var s=0,c=hr===e&&e[lr];if(c){var l=a.indexOf(c);if(l!==-1&&(t===document||t===window)){e[lr]=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=U,f=W;zn(null),Bn(null);try{for(var p,m=[];o!==null&&o!==t;){try{var h=o[lr]?.[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[lr]=t,delete e.currentTarget,zn(d),Bn(f)}}}var _r=globalThis?.window?.trustedTypes&&globalThis.window.trustedTypes.createPolicy(`svelte-trusted-html`,{createHTML:e=>e});function vr(e){return _r?.createHTML(e)??e}function yr(e){var t=an(`template`);return t.innerHTML=vr(e.replaceAll(`<!>`,`<!---->`)),t.content}function br(e,t){var n=W;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(D)return br(O,null),O;i===void 0&&(i=yr(a?e:`<!>`+e),n||(i=en(i)));var t=r||Xt?document.importNode(i,!0):i.cloneNode(!0);if(n){var o=en(t),s=t.lastChild;br(o,s)}else br(t,t);return t}}function xr(e=``){if(!D){var t=I(e+``);return br(t,t),t}var n=O;return n.nodeType===3?on(n):(n.before(n=I()),k(n)),br(n,n),n}function Sr(){if(D)return br(O,null),O;var e=document.createDocumentFragment(),t=document.createComment(``),n=I();return e.append(t,n),br(t,n),e}function Y(e,t){if(D){var n=W;(!(n.f&32768)||n.nodes.end===null)&&(n.nodes.end=O),je();return}e!==null&&e.before(t)}function X(e,t){var n=t==null?``:typeof t==`object`?`${t}`:t;n!==(e[fe]??=e.nodeValue)&&(e[fe]=n,e.nodeValue=`${n}`)}function Cr(e,t){return Tr(e,t)}var wr=new Map;function Tr(e,{target:t,anchor:n,props:i={},events:a,context:o,intro:s=!0,transformError:c}){$t();var l=void 0,u=yn(()=>{var s=n??t.appendChild(I());et(s,{pending:()=>{}},t=>{ze({});var n=j;if(o&&(n.c=o),a&&(i.$$events=a),D&&br(t,null),l=e(t,i)||{},D&&(W.nodes.end=O,O===null||O.nodeType!==8||O.data!==`]`))throw De(),we;Be()},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=cr(r);for(let e of[t,document]){var a=wr.get(e);a===void 0&&(a=new Map,wr.set(e,a));var o=a.get(r);o===void 0?(e.addEventListener(r,gr,{passive:i}),a.set(r,1)):a.set(r,o+1)}}}};return d(r(ur)),dr.add(d),()=>{for(var e of u)for(let n of[t,document]){var r=wr.get(n),i=r.get(e);--i==0?(n.removeEventListener(e,gr),r.delete(e),r.size===0&&wr.delete(n)):r.set(e,i)}dr.delete(d),s!==n&&s.parentNode?.removeChild(s)}});return Er.set(l,u),l}var Er=new WeakMap,Dr=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)jn(n),this.#r.delete(t);else{var r=this.#n.get(t);r&&(jn(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&&(H(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();Nn(r,t),t.append(I()),this.#n.set(e,{effect:r,fragment:t})}else H(r);this.#r.delete(e),this.#t.delete(e)};this.#i||!n?(this.#r.add(e),kn(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)||(H(n.effect),this.#n.delete(e))};ensure(e,t){var n=N,r=rn();if(t&&!this.#t.has(e)&&!this.#n.has(e))if(r){var i=document.createDocumentFragment(),a=I();i.append(a),this.#n.set(e,{effect:V(()=>t(a)),fragment:i})}else this.#t.set(e,V(()=>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 D&&(this.anchor=O),this.#a(n)}};function Z(e,t,n=!1){var r;D&&(r=O,je());var i=new Dr(e),a=n?x:0;function o(e,t){if(D){var n=Pe(r);if(e!==parseInt(n.substring(1))){var a=Ne();k(a),i.anchor=a,Ae(!1),i.ensure(e,t),Ae(!0);return}}i.ensure(e,t)}Cn(()=>{var e=!1;t((t,n=0)=>{e=!0,o(n,t)}),e||o(-1,null)},a)}function Or(e,t){return t}function kr(e,t,n){for(var i=[],a=t.length,o,s=t.length,c=0;c<a;c++){let n=t[c];kn(n,()=>{if(o){if(o.pending.delete(n),o.done.add(n),o.pending.size===0){var t=e.outrogroups;Ar(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;nn(d),d.append(u),e.items.clear()}Ar(e,t,!l)}else o={pending:new Set(t),done:new Set},(e.outrogroups??=new Set).add(o)}function Ar(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|=ne,Nn(a,document.createDocumentFragment())):H(t[i],n)}}var jr;function Q(t,n,i,a,o,s=null){var c=t,l=new Map;if(n&4){var u=t;c=D?k(en(u)):u.appendChild(I())}D&&je();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,Nr(v,p,c,n,a),d!==null&&(p.length===0?d.f&33554432?(d.f^=ne,Fr(d,null,c)):jn(d):kn(d,()=>{d=null})))}function _(e){v.pending.delete(e)}var v={effect:Cn(()=>{p=K(f);var e=p.length;let t=!1;D&&Pe(c)===`[!`!=(e===0)&&(c=Ne(),k(c),Ae(!1),t=!0);for(var r=new Set,u=N,v=rn(),y=0;y<e;y+=1){D&&O.nodeType===8&&O.data===`]`&&(c=O,t=!0,Ae(!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=Pr(l,h?c:jr??=I(),b,x,y,o,n,i),h||(S.e.f|=ne),l.set(x,S)),r.add(x)}if(e===0&&s&&!d&&(h?d=V(()=>s(c)):(d=V(()=>s(jr??=I())),d.f|=ne)),e>r.size&&he(``,``,``),D&&e>0&&k(Ne()),!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&&Ae(!0),K(f)}),flags:n,items:l,pending:m,outrogroups:null,fallback:d};h=!1,D&&(c=O)}function Mr(e){for(;e!==null&&!(e.f&32);)e=e.next;return e}function Nr(e,t,n,i,a){var o=(i&8)!=0,s=t.length,c=e.items,l=Mr(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&&(jn(_),o&&(_.nodes?.a?.unfix(),(f??=new Set).delete(_))),_.f&33554432)if(_.f^=ne,_===l)Fr(_,null,n);else{var y=d?d.next:l;_===e.effect.last&&(e.effect.last=_.prev),_.prev&&(_.prev.next=_.next),_.next&&(_.next.prev=_.prev),Ir(e,d,_),Ir(e,_,y),Fr(_,y,n),d=_,p=[],m=[],l=Mr(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],ee=p[p.length-1];for(x=0;x<p.length;x+=1)Fr(p[x],b,n);for(x=0;x<m.length;x+=1)u.delete(m[x]);Ir(e,S.prev,ee.next),Ir(e,d,S),Ir(e,ee,b),l=b,d=ee,--v,p=[],m=[]}else u.delete(_),Fr(_,l,n),Ir(e,_.prev,_.next),Ir(e,_,d===null?e.effect.first:d.next),Ir(e,d,_),d=_;continue}for(p=[],m=[];l!==null&&l!==_;)(u??=new Set).add(l),m.push(l),l=Mr(l.next);if(l===null)continue}_.f&33554432||p.push(_),d=_,l=Mr(_.next)}if(e.outrogroups!==null){for(let t of e.outrogroups)t.pending.size===0&&(Ar(e,r(t.done)),e.outrogroups?.delete(t));e.outrogroups.size===0&&(e.outrogroups=null)}if(l!==null||u!==void 0){var te=[];if(u!==void 0)for(_ of u)_.f&8192||te.push(_);for(;l!==null;)!(l.f&8192)&&l!==e.fallback&&te.push(l),l=Mr(l.next);var re=te.length;if(re>0){var ie=i&4&&s===0?n:null;if(o){for(v=0;v<re;v+=1)te[v].nodes?.a?.measure();for(v=0;v<re;v+=1)te[v].nodes?.a?.fix()}kr(e,te,ie)}}o&&We(()=>{if(f!==void 0)for(_ of f)_.nodes?.a?.apply()})}function Pr(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:V(()=>(a(t,c??n,l??i,s),()=>{e.delete(r)}))}}function Fr(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=tn(r);if(a.before(r),r===i)return;r=o}}function Ir(e,t,n){t===null?e.effect.first=n:t.next=n,n===null?e.effect.last=t:n.prev=t}function Lr(e,t){let n=null,r=D;var i;if(D){n=O;for(var a=en(document.head);a!==null&&(a.nodeType!==8||a.data!==e);)a=tn(a);if(a===null)Ae(!1);else{var o=tn(a);a.remove(),k(o)}}D||(i=document.head.appendChild(I()));try{Cn(()=>{var e=V(()=>t(i));e.f|=S})}finally{r&&(Ae(!0),k(n))}}var Rr=[...`
2
- \r\f\xA0\v`];function zr(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||Rr.includes(r[o-1]))&&(s===r.length||Rr.includes(r[s]))?r=(o===0?``:r.substring(0,o))+r.substring(s+1):o=s}}return r===``?null:r}function Br(e,t,n,r,i,a){var o=e[ue];if(D||o!==n||o===void 0){var s=zr(n,r,a);(!D||s!==e.getAttribute(`class`))&&(s==null?e.removeAttribute(`class`):t?e.className=s:e.setAttribute(`class`,s)),e[ue]=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 Vr(t,n,r=!1){if(t.multiple){if(n==null)return;if(!e(n))return Oe();for(var i of t.options)i.selected=n.includes(Wr(i));return}for(i of t.options)if(qt(Wr(i),n)){i.selected=!0;return}(!r||n!==void 0)&&(t.selectedIndex=-1)}function Hr(e){var t=new MutationObserver(()=>{Vr(e,e.__value)});t.observe(e,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[`value`]}),gn(()=>{t.disconnect()})}function Ur(e,t,n=t){var r=new WeakSet,i=!0;dn(e,`change`,t=>{var i=t?`[selected]`:`:checked`,a;if(e.multiple)a=[].map.call(e.querySelectorAll(i),Wr);else{var o=e.querySelector(i)??e.querySelector(`option:not([disabled])`);a=o&&Wr(o)}n(a),e.__value=a,N!==null&&r.add(N)}),bn(()=>{var a=t();if(e===document.activeElement){var o=N;if(r.has(o))return}if(Vr(e,a,i),i&&a===void 0){var s=e.querySelector(`:checked`);s!==null&&(a=Wr(s),n(a))}e.__value=a,i=!1}),Hr(e)}function Wr(e){return`__value`in e?e.__value:e.value}var Gr=Symbol(`is custom element`),Kr=Symbol(`is html`),qr=w?`link`:`LINK`,Jr=w?`progress`:`PROGRESS`;function Yr(e){if(D){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[C]=n,We(n),ln()}}function Xr(e,t){var n=Zr(e);n.value===(n.value=t??void 0)||e.value===t&&(t!==0||e.nodeName!==Jr)||(e.value=t??``)}function $(e,t,n,r){var i=Zr(e);D&&(i[t]=e.getAttribute(t),t===`src`||t===`srcset`||t===`href`&&e.nodeName===qr)||i[t]!==(i[t]=n)&&(t===`loading`&&(e[ce]=n),n==null?e.removeAttribute(t):typeof n!=`string`&&$r(e).includes(t)?e[t]=n:e.setAttribute(t,n))}function Zr(e){return e[le]??={[Gr]:e.nodeName.includes(`-`),[Kr]:e.namespaceURI===Te}}var Qr=new Map;function $r(e){var t=e.getAttribute(`is`)||e.nodeName,n=Qr.get(t);if(n)return n;Qr.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 ei(e,t,n=t){var r=new WeakSet;dn(e,`input`,async i=>{var a=i?e.defaultValue:e.value;if(a=ti(e)?ni(a):a,n(a),N!==null&&r.add(N),await rr(),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))}}}),(D&&e.defaultValue!==e.value||or(t)==null&&e.value)&&(n(ti(e)?ni(e.value):e.value),N!==null&&r.add(N)),Sn(()=>{var n=t();if(e===document.activeElement){var i=N;if(r.has(i))return}ti(e)&&n===ni(e.value)||e.type===`date`&&!n&&!e.value||n!==e.value&&(e.value=n??``)})}function ti(e){var t=e.type;return t===`number`||t===`range`}function ni(e){return e===``?null:+e}function ri(e,t){return e===t||e?.[se]===t}function ii(e={},t,n,r){var i=j.r,a=W;return bn(()=>{var o,s;return Sn(()=>{o=s,s=r?.()||[],or(()=>{ri(n(...s),e)||(t(e,...s),o&&ri(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&&ri(n(...s),e)&&t(null,...s)},c=r.teardown;r.teardown=()=>{o(),c?.()}}}),e}function ai(e){j===null&&me(`onMount`),_n(()=>{let t=or(e);if(typeof t==`function`)return t})}function oi(e){j===null&&me(`onDestroy`),ai(()=>()=>or(e))}typeof window<`u`&&((window.__svelte??={}).v??=new Set).add(`5`);var 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){ze(t,!0);var n=si(),r=z(R(n),2),i=z(L(r),2),a=z(L(i),2),o=L(a);o.value=o.__value=`system`;var s=z(o);s.value=s.__value=`light`;var c=z(s);c.value=c.__value=`dark`,A(a);var l;Hr(a),A(i),A(r),B(()=>{l!==(l=t.theme)&&(a.value=(a.__value=t.theme)??``,Vr(a,t.theme))}),q(`change`,a,e=>t.onthemechange(e.currentTarget.value)),Y(e,n),Be()}mr([`change`]);var li=J(`<details><summary> </summary><pre> </pre></details>`),ui=J(`<section aria-labelledby="activities-title"><h3 id="activities-title">Activity</h3> <!></section>`);function di(e,t){ze(t,!0);var n=Sr(),r=R(n),i=e=>{var n=ui();Q(z(L(n),2),17,()=>t.activities,e=>e.id,(e,t)=>{var n=li(),r=L(n),i=L(r,!0);A(r);var a=z(r),o=L(a,!0);A(a),A(n),B(()=>{X(i,K(t).label),X(o,K(t).detail)}),Y(e,n)}),A(n),Y(e,n)};Z(r,e=>{t.activities.length&&e(i)}),Y(e,n),Be()}function fi(e){return!mi(e)||!Array.isArray(e.questions)?[]:e.questions.flatMap(e=>!mi(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=>mi(e)&&typeof e.label==`string`&&typeof e.description==`string`?[{label:e.label,description:e.description}]:[]):[]}])}function pi(e){return{answers:Object.fromEntries(e.filter(e=>e.answer.trim()).map(e=>[e.id,{answers:[e.answer]}]))}}function mi(e){return typeof e==`object`&&!!e}var hi=J(`<button type="button"> </button>`),gi=J(`<label> </label> <input/> <!>`,1),_i=J(`<form><!> <button type="submit">Send answers</button></form>`),vi=J(`<p>Grant the requested permissions for this turn only.</p><button type="button">Approve</button>`,1),yi=J(`<button type="button">Approve</button><button type="button">Deny</button>`,1),bi=J(`<article><p> </p> <!></article>`),xi=J(`<section aria-labelledby="interactions-title"><h3 id="interactions-title">Codex needs your decision</h3> <!></section>`);function Si(e,t){ze(t,!0);var n=Sr(),r=R(n),i=e=>{var n=xi();Q(z(L(n),2),17,()=>t.interactions,e=>e.requestId,(e,n)=>{var r=bi(),i=L(r),a=L(i,!0);A(i);var o=z(i,2),s=e=>{let r=lt(()=>fi(K(n).payload));var i=_i(),a=L(i);Q(a,17,()=>K(r),e=>e.id,(e,r)=>{var i=gi(),a=R(i),o=L(a);A(a);var s=z(a,2);Yr(s),Q(z(s,2),17,()=>K(r).options,e=>e.label,(e,n)=>{var i=hi(),a=L(i,!0);A(i),B(()=>X(a,K(n).label)),q(`click`,i,()=>t.onanswer(K(r).id,K(n).label)),Y(e,i)}),B(()=>{$(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`),Xr(s,t.answers[K(r).id]??``)}),q(`input`,s,e=>t.onanswer(K(r).id,e.currentTarget.value)),Y(e,i)});var o=z(a,2);A(i),B(()=>o.disabled=!K(r).length),pr(`submit`,i,e=>{e.preventDefault(),t.onuserinput(K(n))}),Y(e,i)},c=e=>{var r=vi();q(`click`,z(R(r)),()=>t.onpermission(K(n))),Y(e,r)},l=e=>{var r=yi(),i=R(r),a=z(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)}),A(r),B(()=>X(a,K(n).kind)),Y(e,r)}),A(n),Y(e,n)};Z(r,e=>{t.interactions.length&&e(i)}),Y(e,n),Be()}mr([`input`,`click`]);function Ci(e){return e.key===`Enter`&&!e.shiftKey&&!e.ctrlKey&&!e.isComposing}var wi=J(`<button type="button">Interrupt</button>`),Ti=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"><span aria-hidden="true">↑</span></button></div> <!></form>`);function Ei(e,t){ze(t,!0);function n(e){!Ci(e)||t.activeTurnId||t.starting||!t.message.trim()||(e.preventDefault(),t.onsend())}var r=Ti(),i=L(r),a=L(i,!0);A(i);var o=z(i,2),s=L(o);sn(s);var c=z(s,2);A(o);var l=z(o,2),u=e=>{var n=wi();q(`click`,n,function(...e){t.oninterrupt?.apply(this,e)}),Y(e,n)};Z(l,e=>{t.activeTurnId&&e(u)}),A(r),B(e=>{X(a,t.status),Xr(s,t.message),c.disabled=e},[()=>!!t.activeTurnId||t.starting||!t.message.trim()]),pr(`submit`,r,e=>{e.preventDefault(),t.onsend()}),q(`input`,s,e=>t.onchange(e.currentTarget.value)),q(`keydown`,s,n),Y(e,r),Be()}mr([`input`,`keydown`,`click`]);function Di(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 Oi(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 ki(e){return new Intl.DateTimeFormat(void 0,{hour:`2-digit`,minute:`2-digit`}).format(e)}function Ai(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(...ji(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(...ji(i)),t}function ji(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:Pi(i)})};for(let e=0;e<n.length-1;e+=1){let a=Mi(n[e]??``),o=Mi(n[e+1]??``);if(!a||!o||a.length!==o.length||!o.every(Ni))continue;i(e),e+=2;let s=[];for(;e<n.length;){let t=Mi(n[e]??``);if(!t||t.length!==a.length)break;s.push(t),e+=1}t.push({kind:`table`,headers:a.map(Pi),rows:s.map(e=>e.map(Pi))}),r=e,--e}return i(n.length),t.length?t:[{kind:`text`,parts:Pi(e)}]}function Mi(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 Ni(e){return/^:?-{3,}:?$/.test(e)}function Pi(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 Fi=(e,t=d)=>{var n=Sr();Q(R(n),17,t,Or,(e,t)=>{var n=Sr(),r=R(n),i=e=>{var n=Li(),r=L(n,!0);A(n),B(()=>{$(n,`href`,K(t).href),X(r,K(t).text)}),Y(e,n)},a=e=>{var n=Ri(),r=L(n,!0);A(n),B(()=>X(r,K(t).text)),Y(e,n)},o=e=>{var n=xr();B(()=>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)},Ii=(e,t=d)=>{var n=Sr();Q(R(n),17,()=>Ai(t()),Or,(e,t)=>{var n=Sr(),r=R(n),i=e=>{var n=zi(),r=L(n),i=L(r,!0);A(r),A(n),B(()=>X(i,K(t).text)),Y(e,n)},a=e=>{var n=Ui(),r=L(n),i=L(r),a=L(i);Q(a,21,()=>K(t).headers,Or,(e,t)=>{var n=Bi();Fi(L(n),()=>K(t)),A(n),Y(e,n)}),A(a),A(i);var o=z(i);Q(o,21,()=>K(t).rows,Or,(e,t)=>{var n=Hi();Q(n,21,()=>K(t),Or,(e,t)=>{var n=Vi();Fi(L(n),()=>K(t)),A(n),Y(e,n)}),A(n),Y(e,n)}),A(o),A(r),A(n),Y(e,n)},o=e=>{var n=Wi();Fi(L(n),()=>K(t).parts),A(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)},Li=J(`<a target="_blank" rel="noreferrer"> </a>`),Ri=J(`<code class="svelte-1im954t"> </code>`),zi=J(`<pre class="svelte-1im954t"><code class="svelte-1im954t"> </code></pre>`),Bi=J(`<th scope="col" class="svelte-1im954t"><!></th>`),Vi=J(`<td class="svelte-1im954t"><!></td>`),Hi=J(`<tr></tr>`),Ui=J(`<div class="table-scroll svelte-1im954t"><table class="svelte-1im954t"><thead><tr></tr></thead><tbody></tbody></table></div>`),Wi=J(`<div><!></div>`),Gi=J(`<time class="svelte-1im954t"> <!></time>`),Ki=J(`<div class="entry-heading svelte-1im954t"><strong>prompt</strong> <!></div> <div class="entry-content svelte-1im954t"><!></div>`,1),qi=J(`<details><summary>commentary</summary> <!></details>`),Ji=J(`<section class="answer-turn"><div class="entry-heading svelte-1im954t"><strong>answer</strong> <!></div> <div class="entry-content svelte-1im954t"><!></div> <!></section>`),Yi=J(`<li class="svelte-1im954t"><!></li>`),Xi=J(`<ol aria-label="Chat messages"></ol>`);function Zi(e,t){ze(t,!0);let n=lt(()=>Di(t.messages));var r=Xi();Q(r,23,()=>K(n),e=>e.id,(e,t,r)=>{var i=Yi(),a=L(i),o=e=>{var i=Ki(),a=R(i),o=z(L(a),2),s=e=>{var i=Gi(),a=L(i),o=z(a),s=e=>{var i=xr();B(e=>X(i,`· ${e??``}`),[()=>Oi(K(n)[K(r)-1]?.occurredAt,K(t).occurredAt)]),Y(e,i)},c=lt(()=>Oi(K(n)[K(r)-1]?.occurredAt,K(t).occurredAt));Z(o,e=>{K(c)&&e(s)}),A(i),B((e,t)=>{$(i,`datetime`,e),X(a,`${t??``} `)},[()=>new Date(K(t).occurredAt).toISOString(),()=>ki(K(t).occurredAt)]),Y(e,i)};Z(o,e=>{K(t).occurredAt&&e(s)}),A(a);var c=z(a,2);Ii(L(c),()=>K(t).text),A(c),Y(e,i)},s=e=>{var i=Ji(),a=L(i),o=z(L(a),2),s=e=>{var i=Gi(),a=L(i),o=z(a),s=e=>{var i=xr();B(e=>X(i,`· ${e??``}`),[()=>Oi(K(n)[K(r)-1]?.occurredAt,K(t).occurredAt)]),Y(e,i)},c=lt(()=>Oi(K(n)[K(r)-1]?.occurredAt,K(t).occurredAt));Z(o,e=>{K(c)&&e(s)}),A(i),B((e,t)=>{$(i,`datetime`,e),X(a,`${t??``} `)},[()=>new Date(K(t).occurredAt).toISOString(),()=>ki(K(t).occurredAt)]),Y(e,i)};Z(o,e=>{K(t).occurredAt&&e(s)}),A(a);var c=z(a,2);Ii(L(c),()=>K(t).answer),A(c);var l=z(c,2),u=e=>{var n=qi();Ii(z(L(n),2),()=>K(t).commentary),A(n),Y(e,n)};Z(l,e=>{K(t).commentary&&e(u)}),A(i),Y(e,i)},c=e=>{var n=qi();Ii(z(L(n),2),()=>K(t).commentary),A(n),Y(e,n)};Z(a,e=>{K(t).kind===`user`?e(o):K(t).answer?e(s,1):K(t).commentary&&e(c,2)}),A(i),Y(e,i)}),A(r),Y(e,r),Be()}async function Qi(e=fetch){let t=await e(`/api/bootstrap`);if(!t.ok)throw Error(`BOOTSTRAP_FAILED`);return t.json()}function $i(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 ea=`gestalt-mobile`,ta=2,na=[`settings`,`drafts`,`cursors`,`messages`];function ra(e){return new Promise((t,n)=>{let r=e.open(ea,ta);r.onupgradeneeded=()=>{for(let e of na)r.result.objectStoreNames.contains(e)||r.result.createObjectStore(e)},r.onsuccess=()=>t(r.result),r.onerror=()=>n(r.error)})}function ia(e,t,n){return sa(e.transaction(t,`readonly`).objectStore(t).get(n))}function aa(e,t,n,r){return sa(e.transaction(t,`readwrite`).objectStore(t).put(r,n))}function oa(e,t,n){return sa(e.transaction(t,`readwrite`).objectStore(t).delete(n))}function sa(e){return new Promise((t,n)=>{e.onsuccess=()=>t(e.result),e.onerror=()=>n(e.error)})}var ca=`messages`;function la(e){return e.slice(-200)}function ua(e=globalThis.indexedDB){if(!e)return{read:async()=>[],write:async()=>{}};let t=ra(e);return{async read(e){try{return await ia(await t,ca,e)??[]}catch{return[]}},async write(e,n){try{await aa(await t,ca,e,la(n))}catch{}}}}function da(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 fa(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 pa=J(`<option> </option>`),ma=J(`<p class="clone-status svelte-pudr3t" role="status"> </p>`),ha=J(`<p role="alert"> </p>`),ga=J(`<section aria-label="Confirm push"><p> </p> <button type="button">Confirm push</button> <button type="button">Cancel</button></section>`),_a=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>`),va=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>`),ya=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),ba=J(`<p>This workspace is not a Git repository.</p>`),xa=J(`<p>Select a session to view its workspace status.</p>`),Sa=J(`<section class="git-view svelte-pudr3t" aria-labelledby="git-title"><h2 id="git-title" class="visually-hidden">Git</h2> <form class="clone-form svelte-pudr3t"><div class="clone-controls svelte-pudr3t"><div class="clone-field clone-workspace svelte-pudr3t"><label for="git-clone-workspace">Destination workspace</label> <select id="git-clone-workspace" name="workspaceId" required=""></select></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>`);function Ca(e,t){ze(t,!0);let n=P(``),r=P(``),i=lt(()=>t.workspaces.filter(e=>e.name!==`/`));_n(()=>{K(i).some(e=>e.id===K(r))||F(r,K(i).find(e=>e.id===t.cloneWorkspaceId)?.id??K(i)[0]?.id??``,!0)});function a(e){e.preventDefault(),!(!K(n).trim()||!K(r)||t.cloning)&&t.onclone(K(r),K(n).trim())}var o=Sa(),s=z(L(o),2),c=L(s),l=L(c),u=z(L(l),2);Q(u,21,()=>K(i),e=>e.id,(e,t)=>{var n=pa(),r=L(n,!0);A(n);var i={};B(()=>{X(r,K(t).name),i!==(i=K(t).id)&&(n.value=(n.__value=K(t).id)??``)}),Y(e,n)}),A(u),A(l);var d=z(l,2),f=z(L(d),2);Yr(f),A(d);var p=z(d,2),m=L(p,!0);A(p),A(c);var h=z(c,4),g=e=>{var n=ma(),r=L(n,!0);A(n),B(()=>X(r,t.cloneStatus)),Y(e,n)};Z(h,e=>{t.cloneStatus&&e(g)}),A(s);var _=z(s,2),v=e=>{var n=Sr(),r=R(n),i=e=>{var n=Sr(),r=R(n),i=e=>{var n=ya(),r=R(n),i=L(r),a=z(L(i),2);Q(a,20,()=>t.summary.branches??[],e=>e,(e,t)=>{var n=pa(),r=L(n,!0);A(n);var i={};B(()=>{X(r,t),i!==(i=t)&&(n.value=(n.__value=t)??``)}),Y(e,n)}),A(a);var o;Hr(a);var s=z(a,2),c=L(s);A(s);var l=z(s,2),u=L(l);A(l);var d=z(l,2),f=L(d),p=L(f,!0);A(f),A(d);var m=z(d,2),h=L(m);A(m),A(i);var g=z(i,2),_=L(g),v=z(_,2),y=z(L(v));A(v),A(g),A(r);var b=z(r,2),x=e=>{var n=ha(),r=L(n,!0);A(n),B(()=>X(r,t.error)),Y(e,n)};Z(b,e=>{t.error&&e(x)});var S=z(b,2),ee=e=>{var n=ga(),r=L(n),i=L(r);A(r);var a=z(r,2),o=z(a,2);A(n),B(()=>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(S,e=>{t.confirmingPush&&e(ee)});var te=z(S,2),ne=e=>{var n=va(),r=z(L(n),2);Q(r,21,()=>t.summary.commits,e=>e.hash,(e,t)=>{var n=_a(),r=L(n),i=L(r),a=L(i,!0);A(i);var o=z(i),s=L(o,!0);A(o),A(r);var c=z(r,2),l=L(c),u=L(l,!0);A(l);var d=z(l),f=L(d,!0);A(d),A(c),A(n),B(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)},[()=>fa(K(t).authoredAt)]),Y(e,n)}),A(r),A(n),Y(e,n)};Z(te,e=>{t.summary.commits.length&&e(ne)}),B(e=>{a.disabled=t.refreshing||t.checkingOut||!t.summary.branches?.length,o!==(o=t.summary.branch??``)&&(a.value=(a.__value=t.summary.branch??``)??``,Vr(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`}`)},[()=>da(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,ba())};Z(r,e=>{t.summary.available?e(i):e(a,-1)}),Y(e,n)};Z(r,e=>{t.summary&&e(i)}),Y(e,n)},y=e=>{Y(e,xa())};Z(_,e=>{t.sessionId?e(v):e(y,-1)}),A(o),B(()=>{u.disabled=t.cloning||!K(i).length,p.disabled=t.cloning,X(m,t.cloning?`Cloning…`:`Clone`)}),pr(`submit`,s,a),Ur(u,()=>K(r),e=>F(r,e)),ei(f,()=>K(n),e=>F(n,e)),Y(e,o),Be()}mr([`change`,`click`]);function wa(e,t,n,r){return[...e,{id:t,role:`user`,text:n,...r?{occurredAt:r}:{},complete:!0}]}function Ta(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 Ea(e,t){return e.map(e=>e.id===t?{...e,complete:!0}:e)}function Da(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 Oa(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){let r=await e(n);if(!r.ok)throw await t(r);return r.json()}return{listSessions:()=>r(`/api/sessions`),listRecentSessions:()=>r(`/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=>r(`/api/sessions/${encodeURIComponent(e)}/history`),getGitSummary:e=>r(`/api/sessions/${encodeURIComponent(e)}/git`),cloneGitRepository:(e,t)=>n(`/api/git/clone`,{workspaceId:e,address:t}),pullGit:(e,t)=>n(`/api/sessions/${encodeURIComponent(e)}/git/pull`,{},t?{"idempotency-key":t}:{}),checkoutGitBranch:(e,t)=>n(`/api/sessions/${encodeURIComponent(e)}/git/checkout`,{branch:t}),pushGit:(e,t)=>n(`/api/sessions/${encodeURIComponent(e)}/git/push`,{},t?{"idempotency-key":t}:{}),respondInteraction:(e,t,r)=>n(`/api/sessions/${encodeURIComponent(e)}/interactions/${encodeURIComponent(t)}`,r)}}async function ka(e,t=globalThis.navigator?.clipboard,n=ja){if(!t)return Aa(e,n);try{return await t.writeText(e),!0}catch{return Aa(e,n)}}function Aa(e,t){try{return t(e)}catch{return!1}}function ja(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 Ma(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 Na(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 Pa(e){return e?`Codex is working…`:`Ready for your next instruction.`}function Fa(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 Ia=`settings`,La=`drafts`,Ra=`cursors`,za=`selected-session`;function Ba(e=globalThis.indexedDB){if(!e)return Va;let t=ra(e);return{async readSelectedSession(){try{return await ia(await t,Ia,za)??null}catch{return null}},async saveSelectedSession(e){try{let n=await t;e?await aa(n,Ia,za,e):await oa(n,Ia,za)}catch{}},async readDraft(e){try{return await ia(await t,La,e)??``}catch{return``}},async saveDraft(e,n){try{await aa(await t,La,e,n)}catch{}},async readCursor(e){try{let n=await ia(await t,Ra,e);return typeof n==`number`&&Number.isSafeInteger(n)&&n>=0?n:0}catch{return 0}},async saveCursor(e,n){try{await aa(await t,Ra,e,n)}catch{}}}}var Va={readSelectedSession:async()=>null,saveSelectedSession:async()=>{},readDraft:async()=>``,saveDraft:async()=>{},readCursor:async()=>0,saveCursor:async()=>{}};function Ha(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 Ua(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}}var Wa=J(`<time> </time>`),Ga=J(`<div> </div>`),Ka=J(`<span>running</span>`),qa=J(`<button type="button">Copy</button>`),Ja=J(`<li class="managed-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">Forget</button></div></li>`),Ya=J(`<ul class="session-list svelte-hxb22h" aria-label="Saved sessions"></ul>`),Xa=J(`<p>No saved sessions yet.</p>`),Za=J(`<option> </option>`),Qa=J(`<li class="recent-session svelte-hxb22h"><div class="session-details svelte-hxb22h"><!> <div class="workspace-path svelte-hxb22h"> </div></div> <button type="button">Open</button></li>`),$a=J(`<ul class="session-list recent-session-list svelte-hxb22h" aria-label="Recent sessions"></ul>`),eo=J(`<p>No recent Codex sessions found.</p>`),to=J(`<section aria-labelledby="sessions-title"><h2 id="sessions-title" class="visually-hidden">Sessions</h2> <!> <form><div class="form-row svelte-hxb22h"><label for="workspace">Workspace</label> <select id="workspace" required=""></select></div> <div class="form-row svelte-hxb22h"><label for="sandbox">Sandbox</label> <label for="approval-policy">Approval policy</label> <select id="sandbox"><option>Codex default</option><option>read-only</option><option>workspace-write</option><option>danger-full-access</option></select> <select id="approval-policy"><option>untrusted</option><option>on-request</option><option>never</option></select></div> <button type="submit"> </button></form> <section aria-labelledby="recent-sessions-title"><h3 id="recent-sessions-title">Recent sessions</h3> <!></section></section>`);function no(e,t){ze(t,!0);var n=to(),r=z(L(n),2),i=e=>{var n=Ya();Q(n,21,()=>t.sessions,e=>e.id,(e,n)=>{let r=lt(()=>Ua(K(n)));var i=Ja(),a=L(i),o=L(a),s=e=>{var t=Wa(),n=L(t,!0);A(t),B((e,r)=>{$(t,`datetime`,e),X(n,r)},[()=>new Date(K(r).updatedAt).toISOString(),()=>Ha(K(r).updatedAt)]),Y(e,t)},c=e=>{var t=Ga(),n=L(t,!0);A(t),B(e=>X(n,e),[()=>Ha(null)]),Y(e,t)};Z(o,e=>{K(r).updatedAt===null?e(c,-1):e(s)});var l=z(o,2),u=L(l,!0);A(l);var d=z(l,2),f=e=>{Y(e,Ka())};Z(d,e=>{(K(n).state===`ready`||K(n).state===`turnActive`)&&e(f)}),A(a);var p=z(a,2),m=L(p),h=z(m,2),g=e=>{var r=qa();q(`click`,r,()=>t.oncopyresume(K(n).resumeCommand??``)),Y(e,r)};Z(h,e=>{K(n).resumeCommand&&e(g)});var _=z(h,2);A(p),A(i),B(()=>X(u,K(r).workspacePath)),q(`click`,m,()=>t.onopen(K(n).id)),q(`click`,_,()=>t.onforget(K(n).id)),Y(e,i)}),A(n),Y(e,n)},a=e=>{Y(e,Xa())};Z(r,e=>{t.sessions.length?e(i):e(a,-1)});var o=z(r,2),s=L(o),c=z(L(s),2);Q(c,21,()=>t.workspaces,e=>e.id,(e,t)=>{var n=Za(),r=L(n,!0);A(n);var i={};B(()=>{X(r,K(t).name),i!==(i=K(t).id)&&(n.value=(n.__value=K(t).id)??``)}),Y(e,n)}),A(c);var l;Hr(c),A(s);var u=z(s,2),d=z(L(u),4),f=L(d);f.value=f.__value=``;var p=z(f);p.value=p.__value=`read-only`;var m=z(p);m.value=m.__value=`workspace-write`;var h=z(m);h.value=h.__value=`danger-full-access`,A(d);var g;Hr(d);var _=z(d,2),v=L(_);v.value=v.__value=`untrusted`;var y=z(v);y.value=y.__value=`on-request`;var b=z(y);b.value=b.__value=`never`,A(_);var x;Hr(_),A(u);var S=z(u,2),ee=L(S,!0);A(S),A(o);var te=z(o,2),ne=z(L(te),2),re=e=>{var n=$a();Q(n,21,()=>t.recentSessions,e=>e.id,(e,n)=>{var r=Qa(),i=L(r),a=L(i),o=e=>{var t=Wa(),r=L(t,!0);A(t),B((e,n)=>{$(t,`datetime`,e),X(r,n)},[()=>new Date(K(n).recencyAt*1e3).toISOString(),()=>Ha(K(n).recencyAt*1e3)]),Y(e,t)},s=e=>{var t=Ga(),n=L(t,!0);A(t),B(e=>X(n,e),[()=>Ha(null)]),Y(e,t)};Z(a,e=>{K(n).recencyAt===null?e(s,-1):e(o)});var c=z(a,2),l=L(c,!0);A(c),A(i);var u=z(i,2);A(r),B(()=>X(l,K(n).cwd)),q(`click`,u,()=>t.onopenrecent(K(n))),Y(e,r)}),A(n),Y(e,n)},ie=e=>{Y(e,eo())};Z(ne,e=>{t.recentSessions.length?e(re):e(ie,-1)}),A(te),A(n),B(()=>{l!==(l=t.workspaceId)&&(c.value=(c.__value=t.workspaceId)??``,Vr(c,t.workspaceId)),g!==(g=t.sandbox)&&(d.value=(d.__value=t.sandbox)??``,Vr(d,t.sandbox)),x!==(x=t.approvalPolicy)&&(_.value=(_.__value=t.approvalPolicy)??``,Vr(_,t.approvalPolicy)),S.disabled=!t.workspaceId||t.startingSession,X(ee,t.startingSession?`Starting…`:`New session`)}),pr(`submit`,o,e=>{e.preventDefault(),t.onstart()}),q(`change`,c,e=>t.onworkspacechange(e.currentTarget.value)),q(`change`,d,e=>t.onsandboxchange(e.currentTarget.value)),q(`change`,_,e=>t.onapprovalpolicychange(e.currentTarget.value)),Y(e,n),Be()}mr([`click`,`change`]);function ro(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 io(e,t){let n=[`chat`,`git`,`sessions`];return n[(n.indexOf(e)+t+n.length)%n.length]}var ao=J(`<nav class="bottom-navigation" aria-label="Primary"><button>Chat</button> <button>Git</button> <button>Sessions</button></nav>`);function oo(e,t){ze(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=io(t.activeTab,r);t.onselect(i),n[i]?.focus()}var i=ao(),a=L(i);ii(a,e=>n.chat=e,()=>n?.chat);var o=z(a,2);ii(o,e=>n.git=e,()=>n?.git);var s=z(o,2);ii(s,e=>n.sessions=e,()=>n?.sessions),A(i),B(()=>{$(a,`aria-pressed`,t.activeTab===`chat`),$(o,`aria-pressed`,t.activeTab===`git`),$(s,`aria-pressed`,t.activeTab===`sessions`)}),q(`keydown`,a,r),q(`click`,a,()=>t.onselect(`chat`)),q(`keydown`,o,r),q(`click`,o,()=>t.onselect(`git`)),q(`keydown`,s,r),q(`click`,s,()=>t.onselect(`sessions`)),Y(e,i),Be()}mr([`keydown`,`click`]);var so=J(`<p> </p> <!> <!> <!> <!>`,1),co=J(`<p>Start a session from the Sessions tab to chat with Codex.</p>`),lo=J(`<section aria-labelledby="chat-title"><h2 id="chat-title" class="visually-hidden">Chat</h2> <!></section>`),uo=J(`<main><!> <!> <!></main>`);function fo(e,t){ze(t,!0);let n=P(`chat`),r=P(`Loading relay…`),i=P(`system`),a=P(Gt([])),o=P(null),s=P(Gt([])),c=P(Gt([])),l=P(``),u=P(``),d=P(`on-request`),f=P(null),p=P(!1),m=P(``),h=P(null),g=P(!1),_=P(Gt([])),v=P(Gt([])),y=P(0),b=null,x=null,S=null,ee=null,te=!1,ne=0,re=0,ie=P(null),ae=P(!1),oe=P(!1),se=P(!1),ce=P(!1),le=P(null),ue=P(null),de=P(null),fe=P(null),C=P(Gt([])),pe=Gt({}),w=Oa(),me=ua(),T=Ba();ai(async()=>{let e=localStorage.getItem(`gestalt-mobile.theme`);(e===`light`||e===`dark`||e===`system`)&&he(e),ee=setInterval(Ee,2e3),document.addEventListener(`visibilitychange`,Ee),window.addEventListener(`focus`,Ee);try{let e=await Qi();F(a,e.workspaces,!0),F(l,K(a)[0]?.id??``,!0);let t=await T.readSelectedSession();F(o,e.sessions.some(e=>e.id===t)?t:e.sessions[0]?.id??null,!0),K(o)&&F(y,await T.readCursor(K(o)),!0),K(o)&&F(m,await T.readDraft(K(o)),!0),K(o)&&F(_,await me.read(K(o)),!0),F(s,e.sessions,!0),F(C,K(s).find(e=>e.id===K(o))?.pendingInteractions??[],!0),ve(),F(h,K(s).find(e=>e.id===K(o))?.activeTurnId??null,!0),F(r,K(o)?Pa(K(h)):`Choose a workspace and start a session.`,!0),K(o)&&(await Te(K(o)),Le(K(o)))}catch{F(r,`Relay unavailable. Check the server connection.`)}});function he(e){F(i,e,!0),e===`system`?document.documentElement.removeAttribute(`data-theme`):document.documentElement.dataset.theme=e,localStorage.setItem(`gestalt-mobile.theme`,e)}oi(()=>{x&&clearTimeout(x),S&&clearTimeout(S),ee&&clearInterval(ee),document.removeEventListener(`visibilitychange`,Ee),window.removeEventListener(`focus`,Ee),b?.close()});async function ge(){if(!K(l)||K(p))return;let e=ro({workspaceId:K(l),profile:`default`,profileState:`ok`});if(e.profile){F(r,e.profile,!0);return}F(f,K(f)??Ma(),!0),F(p,!0),F(r,`Starting session…`);try{let e=await w.startSession(K(l),{sandbox:K(u)||void 0,approvalPolicy:K(d)},K(f));F(f,null),F(o,e.id,!0),F(h,null),T.saveSelectedSession(e.id),await _e(),F(_,[],!0),Fe(e.id),F(v,[],!0),F(y,0),F(m,await T.readDraft(e.id),!0),Le(e.id),F(n,`chat`),F(r,`Session started.`)}catch(e){F(r,`Could not start session: ${e instanceof Error?e.message:`Unknown relay error.`}`)}finally{F(p,!1)}}async function _e(){F(s,await w.listSessions(),!0)}async function ve(){try{F(c,await w.listRecentSessions(),!0)}catch{F(c,[],!0)}}async function ye(){try{await Promise.all([_e(),ve()])}catch(e){F(r,`Could not refresh sessions: ${Ie(e)}`)}}async function be(e){let t=K(s).find(t=>t.id===e);t&&t.state!==`ready`&&t.state!==`turnActive`&&(await w.restoreSession(e),await _e()),F(o,e,!0),T.saveSelectedSession(e),F(_,await me.read(e),!0),F(v,[],!0),F(y,0),F(m,await T.readDraft(e),!0),F(h,K(s).find(t=>t.id===e)?.activeTurnId??null,!0),F(C,K(s).find(t=>t.id===e)?.pendingInteractions??[],!0),F(n,`chat`);try{await Te(e),Le(e)}catch(e){F(r,`Could not open session: ${Ie(e)}`)}}async function xe(e){F(r,`Opening recent session…`);try{let t=await w.openRecentSession(e.id,e.cwd);await ye(),await be(t.id)}catch(e){F(r,`Could not open recent session: ${Ie(e)}`)}}async function Se(e){try{await w.forgetSession(e),K(o)===e&&(b?.close(),F(o,null),F(h,null),T.saveSelectedSession(null)),await ye()}catch(e){F(r,`Could not forget session: ${Ie(e)}`)}}async function Ce(e){F(r,await ka(e)?`SSH resume command copied.`:`Could not copy the SSH resume command.`,!0)}async function we(){if(!K(o)||!K(m).trim()||K(h)||K(g))return;let e=K(m).trim();F(g,!0);try{let t=await w.startTurn(K(o),e);F(h,t.activeTurnId??null,!0),F(_,wa(K(_),`user-${t.activeTurnId??Date.now().toString()}`,e,Date.now()),!0),Fe(K(o)),F(m,``),T.saveDraft(K(o),``),F(r,Pa(K(h)),!0)}catch{F(r,`Message was not sent. Your draft is preserved.`)}finally{F(g,!1)}}async function E(){if(!(!K(o)||!K(h)))try{await w.interruptTurn(K(o),K(h)),F(h,null),F(r,`Codex turn interrupted.`)}catch(e){F(r,`Could not interrupt Codex: ${Ie(e)}`)}}async function Te(e,t=0){let n=await w.getHistory(e);if(K(o)!==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(_).filter(e=>!e.complete);F(_,[...i,...a],!0),Fe(e);let c=n.items.flatMap(e=>{let t=$i(e);return t?[t]:[]});F(v,[...c,...K(v).filter(e=>!c.some(t=>t.id===e.id))],!0),`activeTurnId`in n&&(F(h,n.activeTurnId??null,!0),F(s,K(s).map(t=>t.id===e?{...t,activeTurnId:K(h)}:t),!0)),F(y,Math.max(K(y),n.currentSequence??t),!0),T.saveCursor(e,K(y)),F(r,Pa(K(h)),!0)}function Ee(){K(n)!==`chat`||!K(o)||document.visibilityState!==`visible`||te||(te=!0,Te(K(o)).catch(()=>void 0).finally(()=>{te=!1}))}function De(e){F(n,e,!0),e===`chat`&&Ee(),e===`git`&&Oe(),e===`sessions`&&ye()}async function Oe(){K(o)&&F(ie,await w.getGitSummary(K(o)),!0)}async function ke(){if(K(o)){F(de,K(de)??Ma(),!0),F(oe,!0),F(le,null);try{await w.pullGit(K(o),K(de)),await Oe(),F(de,null)}catch(e){F(le,e instanceof Error?e.message:`Git pull --rebase failed.`,!0)}finally{F(oe,!1)}}}async function D(e,t){if(!K(ce)){F(ce,!0),F(le,null),F(ue,null);try{await w.cloneGitRepository(e,t);let n=await Qi();F(a,n.workspaces,!0),F(ue,`Repository cloned into the selected workspace.`)}catch(e){F(le,`Could not clone repository: ${Ie(e)}`)}finally{F(ce,!1)}}}async function Ae(e){if(!(!K(o)||e===K(ie)?.branch)){F(se,!0),F(le,null);try{await w.checkoutGitBranch(K(o),e),await Oe()}catch(e){F(le,e instanceof Error?e.message:`Git checkout failed.`,!0)}finally{F(se,!1)}}}async function O(){if(K(o)){F(fe,K(fe)??Ma(),!0),F(le,null);try{await w.pushGit(K(o),K(fe)),F(ae,!1),await Oe(),F(fe,null)}catch{F(le,`Push failed. Refresh the branch status and resolve remote divergence first.`)}}}async function k(e,t){K(o)&&(await w.respondInteraction(K(o),e,{decision:t}),F(C,K(C).filter(t=>t.requestId!==e),!0))}async function je(e){if(!K(o))return;let t=pi(fi(e.payload).map(e=>({id:e.id,answer:pe[e.id]??``})));await w.respondInteraction(K(o),e.requestId,t),F(C,K(C).filter(t=>t.requestId!==e.requestId),!0)}async function Me(e){if(!K(o))return;let t=Da(e.payload);if(!t){F(r,`Codex sent an invalid permission request.`);return}await w.respondInteraction(K(o),e.requestId,t),F(C,K(C).filter(t=>t.requestId!==e.requestId),!0)}function Ne(e,t){pe[e]=t}function Pe(e){F(m,e,!0),K(o)&&T.saveDraft(K(o),e)}function Fe(e){me.write(e,K(_))}function Ie(e){return e instanceof Error?e.message:`Unknown relay error.`}function Le(e){x&&clearTimeout(x),S&&clearTimeout(S),b?.close();let t=++re,n=location.protocol===`https:`?`wss:`:`ws:`;b=new WebSocket(`${n}//${location.host}/api/sessions/${encodeURIComponent(e)}/events?after=${K(y)}`),b.onopen=()=>{t!==re||K(o)!==e||(F(r,Pa(K(h)),!0),Ee(),S=setTimeout(()=>{ne=0},3e4))},b.onmessage=t=>{let n=JSON.parse(String(t.data));if(n.type===`relay.resyncRequired`){Te(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(C).some(t=>t.requestId===e.requestId)||F(C,[...K(C),e],!0)}if(n.type===`relay.event`&&n.event?.type===`turnCompleted`&&(F(h,null),F(r,Pa(K(h)),!0),F(_,Ea(K(_),`assistant-${e}`),!0),Fe(e),Te(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(h);F(h,typeof n.activeTurnId==`string`?n.activeTurnId:null,!0),i&&!K(h)&&F(r,Pa(K(h)),!0),F(s,K(s).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;F(C,K(C).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`&&F(v,[...K(v).filter(t=>t.id!==e.id),e],!0)}F(y,Na(K(y),n,t=>{F(_,Ta(K(_),`assistant-${e}`,t,Date.now()),!0),Fe(e)},()=>{Te(e)}),!0),T.saveCursor(e,K(y))},b.onclose=()=>{t!==re||K(o)!==e||(S&&clearTimeout(S),F(r,`Connection interrupted. Reconnecting…`),x=setTimeout(()=>Le(e),Fa(ne++)))}}var j=uo();Lr(`y74n0s`,e=>{bn(()=>{Yt.title=`Gestalt Mobile`})});let Re;var Ve=L(j);ci(Ve,{get theme(){return K(i)},onthemechange:he});var He=z(Ve,2),Ue=e=>{var t=lo(),n=z(L(t),2),i=e=>{var t=so(),n=R(t),i=L(n);A(n);var a=z(n,2);Zi(a,{get messages(){return K(_)}});var c=z(a,2);di(c,{get activities(){return K(v)}});var l=z(c,2);Si(l,{get interactions(){return K(C)},get answers(){return pe},onanswer:Ne,onuserinput:e=>void je(e),onpermission:e=>void Me(e),ondecision:(e,t)=>void k(e,t)}),Ei(z(l,2),{get status(){return K(r)},get message(){return K(m)},get activeTurnId(){return K(h)},get starting(){return K(g)},onchange:Pe,onsend:()=>void we(),oninterrupt:()=>void E()}),B(e=>X(i,`Connected Codex session: ${e??``}`),[()=>K(s).find(e=>e.id===K(o))?.threadId??`starting…`]),Y(e,t)},a=e=>{Y(e,co())};Z(n,e=>{K(o)?e(i):e(a,-1)}),A(t),Y(e,t)},We=e=>{Ca(e,{get sessionId(){return K(o)},get workspaces(){return K(a)},get cloneWorkspaceId(){return K(l)},get summary(){return K(ie)},get refreshing(){return K(oe)},get checkingOut(){return K(se)},get cloning(){return K(ce)},get error(){return K(le)},get cloneStatus(){return K(ue)},get confirmingPush(){return K(ae)},onpull:()=>void ke(),oncheckout:e=>void Ae(e),onopenpushconfirmation:()=>F(ae,!0),onpush:()=>void O(),oncancelpush:()=>F(ae,!1),onclone:(e,t)=>void D(e,t)})},Ge=e=>{no(e,{get sessions(){return K(s)},get recentSessions(){return K(c)},get workspaces(){return K(a)},get workspaceId(){return K(l)},get sandbox(){return K(u)},get approvalPolicy(){return K(d)},get startingSession(){return K(p)},onworkspacechange:e=>F(l,e,!0),onsandboxchange:e=>F(u,e,!0),onapprovalpolicychange:e=>F(d,e,!0),onopen:be,onopenrecent:e=>void xe(e),onforget:e=>void Se(e),oncopyresume:e=>void Ce(e),onstart:()=>void ge()})};Z(He,e=>{K(n)===`chat`?e(Ue):K(n)===`git`?e(We,1):e(Ge,-1)}),oo(z(He,2),{get activeTab(){return K(n)},onselect:De}),A(j),B(()=>Re=Br(j,1,``,null,Re,{"git-mode":K(n)===`git`})),Y(e,j),Be()}var po=document.getElementById(`app`);if(!po)throw Error(`Missing application mount target`);Cr(fo,{target:po});
@@ -1 +0,0 @@
1
- form.svelte-1264sfg>[role=status]:where(.svelte-1264sfg){text-align:end;margin-block:0 .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;min-block-size:2.75rem;inline-size:2.75rem;padding:0;font-size:1.4rem}li.svelte-1im954t{white-space:pre-wrap;margin-block-end:0}li.svelte-1im954t+li:where(.svelte-1im954t){margin-block-start:1.5rem}.entry-heading.svelte-1im954t{justify-content:space-between;gap:.75rem;display:flex}time.svelte-1im954t{color:#666;white-space:nowrap;font-size:.875em}.entry-content.svelte-1im954t{margin-block:.125rem 0;margin-inline-start:1rem}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}.git-view.svelte-pudr3t{inline-size:100%}.clone-form.svelte-pudr3t{gap:.35rem;margin-block-end:1.5rem;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;display:grid}.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;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);justify-content:space-between;font-size:.875rem}.commit-meta.svelte-pudr3t time:where(.svelte-pudr3t){flex:none}@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;margin-block:0 1.5rem;padding-inline:0;list-style:none;display:grid}.managed-session.svelte-hxb22h{gap:.5rem;display:grid}.session-details.svelte-hxb22h{min-inline-size:0}.workspace-path.svelte-hxb22h{overflow-wrap:anywhere}.session-actions.svelte-hxb22h{flex-wrap:wrap;gap:.5rem;display:flex}.recent-session.svelte-hxb22h{grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:.75rem;display:grid}.form-row.svelte-hxb22h{grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem;margin-block-end:.75rem;display:grid}:root{--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{min-block-size:100dvh;max-inline-size:42rem;padding:calc(1rem + env(safe-area-inset-top)) 1rem calc(5rem + env(safe-area-inset-bottom));margin-inline:auto}main.git-mode{max-inline-size:none;margin-inline:0;padding-inline:0}main.git-mode .app-header{padding-inline:1rem}.app-header{z-index:1;margin-block:calc(-1rem - env(safe-area-inset-top)) 1.5rem;padding:calc(1rem + env(safe-area-inset-top)) 0 .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:2rem;inline-size:2.5rem;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 1rem calc(.5rem + env(safe-area-inset-bottom));background:canvas;border-block-start:1px solid canvastext;grid-template-columns:repeat(3,1fr);gap:.5rem;display:grid;position:fixed;inset-block-end:0;inset-inline:0}.bottom-navigation button{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}button{min-block-size:44px}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}}