gestalt-mobile 0.1.1 → 0.2.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.
- package/README.md +26 -6
- package/dist/client/assets/index-Ce0oT8h3.css +1 -0
- package/dist/client/assets/index-G3T1Xsnq.js +11 -0
- package/dist/client/index.html +2 -2
- package/dist/server/server/app.js +21 -12
- package/dist/server/server/composition.js +4 -2
- package/dist/server/server/features/git/application/clone-destination.js +13 -0
- package/dist/server/server/features/git/application/ports.js +6 -0
- package/dist/server/server/features/git/application/repository-target.js +13 -0
- package/dist/server/server/features/git/checkout-branch/endpoint.js +6 -5
- package/dist/server/server/features/git/clone-repository/endpoint.js +5 -1
- package/dist/server/server/features/git/get-summary/endpoint.js +6 -5
- package/dist/server/server/features/git/pull-rebase/endpoint.js +6 -5
- package/dist/server/server/features/git/push-upstream/endpoint.js +8 -7
- package/dist/server/server/features/git/refresh/endpoint.js +7 -6
- package/dist/server/server/features/sessions/forget-session/endpoint.js +1 -1
- package/dist/server/server/features/sessions/list-recent-threads/endpoint.js +7 -1
- package/dist/server/server/features/sessions/promote-recent-thread/use-case.js +1 -1
- package/dist/server/server/features/sessions/release-session/endpoint.js +1 -1
- package/dist/server/server/features/sessions/stop-session/endpoint.js +1 -1
- package/dist/server/server/platform/catalog/filesystem-workspace-catalog.js +106 -32
- package/dist/server/server/platform/codex/recent-thread-lister.js +1 -1
- package/dist/server/server/platform/codex/session-runtime.js +18 -0
- package/package.json +1 -1
- package/dist/client/assets/index-0wjiXBGW.js +0 -10
- 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.
|
|
46
|
-
|
|
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
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
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 @@
|
|
|
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: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}.block-cursor.svelte-1264sfg{vertical-align:-.1em;background:currentColor;block-size:1em;inline-size:.55ch;margin-inline-start:.08ch;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}}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}.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%}}.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{min-block-size:100dvh;max-inline-size:42rem;padding:calc(1rem + env(safe-area-inset-top)) 1rem calc(var(--bottom-navigation-clearance) + 1rem);margin-inline:auto}@media (width<=24rem){main{padding-inline:.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}}
|
|
@@ -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(nn(A))}function M(e){if(k){if(nn(A)!==null)throw De(),we;A=e}}function Me(e=1){if(k){for(var t=e,n=A;t--;)n=nn(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=nn(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:G,l:null}}function Be(e){var t=N,n=t.e;if(n!==null){t.e=null;for(var r of n)yn(r)}return e!==void 0&&(t.x=e),t.i=!0,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=G;if(t===null)return W.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()=>{gn()&&(K(n),Cn(()=>(t===0&&(r=ur(()=>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=G;t.b=this,t.f|=128,n(e)},this.parent=G.b,this.transform_error=r??this.parent?.transform_error??(e=>e),this.#i=wn(()=>{if(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=Tn(()=>this.#r(this.#e))}catch(e){this.error(e)}}#_(e){let t=this.#n.failed;t&&(this.#s=Tn(()=>{t(this.#e,()=>e,()=>()=>{})}))}#v(){let e=this.#n.pending;e&&(this.is_pending=!0,this.#o=Tn(()=>e(this.#e)),We(()=>{var e=this.#c=document.createDocumentFragment(),t=en();e.append(t),this.#a=this.#x(()=>Tn(()=>this.#r(t))),this.#u===0&&(this.#e.before(e),this.#c=null,Mn(this.#o,()=>{this.#o=null}),this.#b(L))}))}#y(){try{if(this.is_pending=this.has_pending_snippet(),this.#u=0,this.#l=0,this.#a=Tn(()=>{this.#r(this.#e)}),this.#u>0){var e=this.#c=document.createDocumentFragment();In(this.#a,e);let t=this.#n.pending;this.#o=Tn(()=>t(this.#e))}else this.#b(L)}catch(e){this.error(e)}}#b(e){this.is_pending=!1,e.transfer_effects(this.#f,this.#p)}defer_effect(e){Xe(e,this.#f,this.#p)}is_rendered(){return!this.is_pending&&(!this.parent||this.parent.is_rendered())}has_pending_snippet(){return!!this.#n.pending}#x(e){var t=G,n=W,r=N;Un(this.#i),Hn(this.#i),Re(this.#i.ctx);try{return Et.ensure(),e()}catch(e){return Ke(e),null}finally{Un(t),Hn(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&&Mn(this.#o,()=>{this.#o=null}),this.#c&&=(this.#e.before(this.#c),null))}update_pending_count(e,t){this.#S(e,t),this.#l+=e,!(!this.#m||this.#d)&&(this.#d=!0,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;L?.is_fork?(this.#a&&L.skip_effect(this.#a),this.#o&&L.skip_effect(this.#o),this.#s&&L.skip_effect(this.#s),L.oncommit(()=>{this.#C(e)})):this.#C(e)}#C(e){this.#a&&=(kn(this.#a),null),this.#o&&=(kn(this.#o),null),this.#s&&=(kn(this.#s),null),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&&Mn(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 Tn(()=>{var t=G;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=G,c=it(),l=a.length===1?a[0].promise:a.length>1?Promise.all(a.map(e=>e.promise)):null;function u(e){if(!(s.f&16384)){c();try{r([...o,...e])}catch(e){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=G,t=W,n=N,r=L;return function(i=!0){Un(e),Hn(t),Re(n),i&&!(e.f&16384)&&(r?.activate(),r?.apply())}}function at(e=!0){Un(null),Hn(null),Re(null),e&&L?.deactivate()}function ot(){var e=G,t=e.b,n=L,r=!!t?.is_rendered();return t?.update_pending_count(1,n),n.increment(r,e),()=>{t?.update_pending_count(-1,n),n.decrement(r,e)}}function st(e){var t=2|h;return G!==null&&(G.f|=C),{ctx:N,deps:null,effects:null,equals:Fe,f:t,fn:e,reactions:null,rv:0,v:O,wv:0,parent:G,ac:null}}var ct=Symbol(`obsolete`);function lt(e,t,n){let r=G;r===null&&me();var i=void 0,a=zt(O),o=!W,s=new Set;return Sn(()=>{var t=G,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`))}),_n(()=>{for(let e of s)e.reject(ct)}),new Promise(e=>{function t(n){function r(){n===i?e(a):t(i)}n.then(r,r)}t(i)})}function I(e){let t=st(e);return Gn(t),t}function ut(e){let t=st(e);return t.equals=Le,t}function dt(e){var t=e.effects;if(t!==null){e.effects=null;for(var n=0;n<t.length;n+=1)kn(t[n])}}function ft(e){var t,n=G,r=e.parent;if(!zn&&r!==null&&e.v!==O&&r.f&24576)return Ee(),e.v;Un(r);try{e.f&=~ee,dt(e),t=rr(e)}finally{Un(n)}return t}function pt(e){var t=ft(e);if(!e.equals(t)&&(e.wv=er(),(!L?.is_fork||e.deps===null)&&(L===null?e.v=t:(L.capture(e,t,!0),_t?.capture(e,t,!0)),e.deps===null))){F(e,m);return}zn||(vt===null?Je(e):(gn()||L?.is_fork)&&vt.set(e,t))}function mt(e){if(e.effects!==null)for(let t of e.effects)(t.teardown||t.ac)&&(t.teardown?.(),t.ac?.abort(de),t.fn!==null&&(t.teardown=d),t.ac=null,ar(t,0),Dn(t))}function ht(e){if(e.effects!==null)for(let t of e.effects)t.teardown&&t.fn!==null&&or(t)}var gt=null,L=null,_t=null,vt=null,yt=null,bt=!1,xt=!1,St=null,Ct=null,wt=0,Tt=1,Et=class e{id=Tt++;#e=!1;linked=!0;#t=null;#n=null;async_deriveds=new Map;current=new Map;previous=new Map;#r=new Set;#i=new Set;#a=0;#o=new Map;#s=null;#c=[];#l=[];#u=new Set;#d=new Set;#f=new Map;#p=new Set;is_fork=!1;#m=!1;constructor(){gt===null?gt=this:(gt.#n=this,this.#t=gt),gt=this}#h(){if(this.is_fork)return!0;for(let n of this.#o.keys()){for(var e=n,t=!1;e.parent!==null;){if(this.#f.has(e)){t=!0;break}e=e.parent}if(!t)return!0}return!1}skip_effect(e){this.#f.has(e)||this.#f.set(e,{d:[],m:[]}),this.#p.delete(e)}unskip_effect(e,t=e=>this.schedule(e)){var n=this.#f.get(e);if(n){this.#f.delete(e);for(var r of n.d)F(r,h),t(r);for(r of n.m)F(r,g),t(r)}this.#p.add(e)}#g(){this.#e=!0,wt++>1e3&&(this.#x(),Ot());for(let e of this.#u)this.#d.delete(e),F(e,h),this.schedule(e);for(let e of this.#d)F(e,g),this.schedule(e);let t=this.#c;this.#c=[],this.apply();var n=St=[],r=[],i=Ct=[];for(let e of t)try{this.#_(e,n,r)}catch(t){throw Ft(e),this.#h()||this.discard(),t}if(L=null,i.length>0){var a=e.ensure();for(let e of i)a.schedule(e)}if(St=null,Ct=null,this.#h()){this.#b(r),this.#b(n);for(let[e,t]of this.#f)Pt(e,t);i.length>0&&L.#g();return}let o=this.#v();if(o){this.#b(r),this.#b(n),o.#y(this);return}this.#u.clear(),this.#d.clear();for(let e of this.#r)e(this);this.#r.clear(),_t=this,At(r),At(n),_t=null,this.#s?.resolve();var s=L;if(this.#a===0&&(this.#c.length===0||s!==null)&&this.#x(),this.#c.length>0)if(s!==null){let e=s;e.#c.push(...this.#c.filter(t=>!e.#c.includes(t)))}else s=this;s!==null&&s.#g()}#_(e,t,n){e.f^=m;for(var r=e.first;r!==null;){var i=r.f,a=(i&96)!=0;if(!(a&&i&1024||i&8192||this.#f.has(r))&&r.fn!==null){a?r.f^=m:i&4?t.push(r):tr(r)&&(i&16&&this.#d.add(r),or(r));var o=r.first;if(o!==null){r=o;continue}}for(;r!==null;){var s=r.next;if(s!==null){r=s;break}r=r.parent}}}#v(){for(var e=this.#t;e!==null;){if(!e.is_fork){for(let[t,[,n]]of this.current)if(e.current.has(t)&&!n)return e}e=e.#t}return null}#y(e){for(let[t,n]of e.current)!this.previous.has(t)&&e.previous.has(t)&&this.previous.set(t,e.previous.get(t)),this.current.set(t,n);for(let[t,n]of e.async_deriveds){let e=this.async_deriveds.get(t);e&&n.promise.then(e.resolve).catch(e.reject)}e.async_deriveds.clear(),this.transfer_effects(e.#u,e.#d);let t=e=>{var n=e.reactions;if(n!==null)for(let e of n){var r=e.f;if(r&2)t(e);else{var i=e;r&4194320&&!this.async_deriveds.has(i)&&(this.#d.delete(i),F(i,h),this.schedule(i))}}};for(let e of this.current.keys())t(e);this.oncommit(()=>e.discard()),e.#x(),L=this,this.#g()}#b(e){for(var t=0;t<e.length;t+=1)Xe(e[t],this.#u,this.#d)}capture(e,t,n=!1){e.v!==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===G&&(W===null||!(W.f&2)))return;if(n&96){if(!(n&1024))return;t.f^=m}}this.#c.push(t)}#x(){if(this.linked){var e=this.#t,t=this.#n;e===null||(e.#n=t),t===null?gt=e:t.#t=e,this.linked=!1}}};function Dt(e){var t=bt;bt=!0;try{var n;for(e&&(L!==null&&!L.is_fork&&L.flush(),n=e());;){if(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)&&tr(r)&&(kt=new Set,or(r),r.deps===null&&r.first===null&&r.nodes===null&&r.teardown===null&&r.ac===null&&jn(r),kt?.size>0)){Lt.clear();for(let e of kt){if(e.f&24576)continue;let t=[e],n=e.parent;for(;n!==null;)kt.has(n)&&(kt.delete(n),t.push(n)),n=n.parent;for(let e=t.length-1;e>=0;e--){let n=t[e];n.f&24576||or(n)}}kt.clear()}}kt=null}}function jt(e,t,n,r){if(!n.has(e)&&(n.add(e),e.reactions!==null))for(let i of e.reactions){let e=i.f;e&2?jt(i,t,n,r):e&4194320&&!(e&2048)&&Mt(i,t,r)&&(F(i,h),Nt(i))}}function Mt(e,t,r){let i=r.get(e);if(i!==void 0)return i;if(e.deps!==null)for(let i of e.deps){if(n.call(t,i))return!0;if(i.f&2&&Mt(i,t,r))return r.set(i,!0),!0}return r.set(e,!1),!1}function Nt(e){L.schedule(e)}function Pt(e,t){if(!(e.f&32&&e.f&1024)){e.f&2048?t.d.push(e):e.f&4096&&t.m.push(e),F(e,m);for(var n=e.first;n!==null;)Pt(n,t),n=n.next}}function Ft(e){F(e,m);for(var t=e.first;t!==null;)Ft(t),t=t.next}var It=new Set,Lt=new Map,Rt=!1;function zt(e,t){return{f:0,v:e,reactions:null,equals:Fe,rv:0,wv:0}}function R(e,t){let n=zt(e,t);return Gn(n),n}function Bt(e,t=!1,n=!0){let r=zt(e);return t||(r.equals=Le),r}function z(e,t,n=!1){return W!==null&&(!Vn||W.f&131072)&&Ve()&&W.f&4325394&&(Wn===null||!Wn.has(e))&&Se(),Vt(e,n?Gt(t):t,Ct)}function Vt(e,t,n=null){if(!e.equals(t)){Lt.set(e,zn?t:e.v);var r=Et.ensure();if(r.capture(e,t),e.f&2){let t=e;e.f&2048&&ft(t),vt===null&&Je(t)}e.wv=er(),Wt(e,h,n),Ve()&&G!==null&&G.f&1024&&!(G.f&96)&&(Jn===null?Yn([e]):Jn.push(e)),!r.is_fork&&It.size>0&&!Rt&&Ht()}return t}function Ht(){Rt=!1;for(let e of It){e.f&1024&&F(e,g);let t;try{t=tr(e)}catch{t=!0}t&&or(e)}It.clear()}function Ut(e){z(e,e.v+1)}function Wt(e,t,n){var r=e.reactions;if(r!==null)for(var i=Ve(),a=r.length,o=0;o<a;o++){var s=r[o],c=s.f;if(!(!i&&s===G)){var l=(c&h)===0;if(l&&F(s,t),c&131072)It.add(s);else if(c&2){var u=s;vt?.delete(u),c&65536||(c&512&&(G===null||!(G.f&2097152))&&(s.f|=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 Gt(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=Qn,f=e=>{if(Qn===d)return e();var t=W,n=Qn;Hn(null),$n(d);var r=e();return Hn(t),$n(n),r};return i&&r.set(`length`,R(t.length,u)),new Proxy(t,{defineProperty(e,t,n){(!(`value`in n)||n.configurable===!1||n.enumerable===!1||n.writable===!1)&&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(Gt(s?e[n]:O),u)),r.set(n,o)),o!==void 0){var c=K(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=K(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||G!==null&&(!i||a(e,t)?.writable))&&(n===void 0&&(n=f(()=>R(i?Gt(e[t]):O,u)),r.set(t,n)),K(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,Gt(n)),r.set(t,c));else{l=c.v!==O;var m=f(()=>Gt(n));z(c,m)}var h=Reflect.getOwnPropertyDescriptor(e,t);if(h?.set&&h.set.call(s,n),!l){if(i&&typeof t==`string`){var g=r.get(`length`),_=Number(t);Number.isInteger(_)&&_>=g.v&&z(g,_+1)}Ut(o)}return!0},ownKeys(e){K(o);var t=Reflect.ownKeys(e).filter(e=>{var t=r.get(e);return t===void 0||t.v!==O});for(var[n,i]of r)i.v!==O&&!(n in e)&&t.push(n);return t},setPrototypeOf(){xe()}})}function Kt(e){try{if(typeof e==`object`&&e&&E in e)return e[E]}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[se]=void 0,e[oe]=null,e[ce]=void 0,e.__e=void 0),u(n)&&(n[le]=void 0)}}function en(e=``){return document.createTextNode(e)}function tn(e){return Zt.call(e)}function nn(e){return Qt.call(e)}function B(e,t){if(!k)return tn(e);var n=tn(A);if(n===null)n=A.appendChild(en());else if(t&&n.nodeType!==3){var r=en();return n?.before(r),j(r),r}return t&&sn(n),j(n),n}function V(e,t=!1){if(!k){var n=tn(e);return n instanceof Comment&&n.data===``?nn(n):n}if(t){if(A?.nodeType!==3){var r=en();return A?.before(r),j(r),r}sn(A)}return A}function H(e,t=1,n=!1){let r=k?A:e;for(var i;t--;)i=r,r=nn(r);if(!k)return r;if(n){if(r?.nodeType!==3){var a=en();return r===null?i?.after(a):r.before(a),j(a),a}sn(r)}return j(r),r}function rn(e){e.textContent=``}function an(){return!1}function on(e,t,n){return t==null||t===`http://www.w3.org/1999/xhtml`?n?document.createElement(e,{is:n}):document.createElement(e):n?document.createElementNS(t,e,{is:n}):document.createElementNS(t,e)}function sn(e){if(e.nodeValue.length<65536)return;let t=e.nextSibling;for(;t!==null&&t.nodeType===3;)t.remove(),e.nodeValue+=t.nodeValue,t=e.nextSibling}function cn(e){k&&tn(e)!==null&&rn(e)}var ln=!1;function un(){ln||(ln=!0,document.addEventListener(`reset`,e=>{Promise.resolve().then(()=>{if(!e.defaultPrevented)for(let t of e.target.elements)t[ue]?.()})},{capture:!0}))}function dn(e){var t=W,n=G;Hn(null),Un(null);try{return e()}finally{Hn(t),Un(n)}}function fn(e,t,n,r=n){e.addEventListener(t,()=>dn(n));let i=e[ue];i?e[ue]=()=>{i(),r(!0)}:e[ue]=()=>r(!0),un()}function pn(e){G===null&&(W===null&&_e(e),ge()),zn&&D(e)}function mn(e,t){var n=t.last;n===null?t.last=t.first=e:(n.next=e,e.prev=n,t.last=e)}function hn(e,t){var n=G;n!==null&&n.f&8192&&(e|=_);var r={ctx: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{or(r)}catch(e){throw kn(r),e}i.deps===null&&i.teardown===null&&i.nodes===null&&i.first===i.last&&!(i.f&524288)&&(i=i.first,e&16&&e&65536&&i!==null&&(i.f|=x))}if(i!==null&&(i.parent=n,n!==null&&mn(i,n),W!==null&&W.f&2&&!(e&64))){var a=W;(a.effects??=[]).push(i)}return r}function gn(){return W!==null&&!Vn}function _n(e){let t=hn(8,null);return F(t,m),t.teardown=e,t}function vn(e){pn(`$effect`);var t=G.f;if(!W&&t&32&&N!==null&&!N.i){var n=N;(n.e??=[]).push(e)}else return yn(e)}function yn(e){return hn(4|w,e)}function bn(e){Et.ensure();let t=hn(64|C,e);return(e={})=>new Promise(n=>{e.outro?Mn(t,()=>{kn(t),n(void 0)}):(kn(t),n(void 0))})}function xn(e){return hn(4,e)}function Sn(e){return hn(ne|C,e)}function Cn(e,t=0){return hn(8|t,e)}function U(e,t=[],n=[],r=[]){rt(r,t,n,t=>{hn(8,()=>{e(...t.map(K))})})}function wn(e,t=0){return hn(16|t,e)}function Tn(e){return hn(32|C,e)}function En(e){var t=e.teardown;if(t!==null){let e=zn,n=W;Bn(!0),Hn(null);try{t.call(null)}finally{Bn(e),Hn(n)}}}function Dn(e,t=!1){var n=e.first;for(e.first=e.last=null;n!==null;){let e=n.ac;e!==null&&dn(()=>{e.abort(de)});var r=n.next;n.f&64?n.parent=null:kn(n,t),n=r}}function On(e){for(var t=e.first;t!==null;){var n=t.next;t.f&32||kn(t),t=n}}function kn(e,t=!0){var n=!1;(t||e.f&262144)&&e.nodes!==null&&e.nodes.end!==null&&(An(e.nodes.start,e.nodes.end),n=!0),e.f|=b,Dn(e,t&&!n),ar(e,0);var r=e.nodes&&e.nodes.t;if(r!==null)for(let e of r)e.stop();En(e),e.f^=b,e.f|=v;var i=e.parent;i!==null&&i.first!==null&&jn(e),e.next=e.prev=e.teardown=e.ctx=e.deps=e.fn=e.nodes=e.ac=e.b=null}function An(e,t){for(;e!==null;){var n=e===t?null:nn(e);e.remove(),e=n}}function jn(e){var t=e.parent,n=e.prev,r=e.next;n!==null&&(n.next=r),r!==null&&(r.prev=n),t!==null&&(t.first===e&&(t.first=r),t.last===e&&(t.last=n))}function Mn(e,t,n=!0){var r=[];Nn(e,r,!0);var i=()=>{n&&kn(e),t&&t()},a=r.length;if(a>0){var o=()=>--a||i();for(var s of r)s.out(o)}else i()}function Nn(e,t,n){if(!(e.f&8192)){e.f^=_;var r=e.nodes&&e.nodes.t;if(r!==null)for(let e of r)(e.is_global||n)&&t.push(e);for(var i=e.first;i!==null;){var a=i.next;if(!(i.f&64)){var o=(i.f&65536)!=0||(i.f&32)!=0&&(e.f&16)!=0;Nn(i,t,o?n:!1)}i=a}}}function Pn(e){Fn(e,!0)}function Fn(e,t){if(e.f&8192){e.f^=_,e.f&1024||(F(e,h),Et.ensure().schedule(e));for(var n=e.first;n!==null;){var r=n.next,i=(n.f&65536)!=0||(n.f&32)!=0;Fn(n,i?t:!1),n=r}var a=e.nodes&&e.nodes.t;if(a!==null)for(let e of a)(e.is_global||t)&&e.in()}}function In(e,t){if(e.nodes)for(var n=e.nodes.start,r=e.nodes.end;n!==null;){var i=n===r?null:nn(n);t.append(n),n=i}}var Ln=null,Rn=!1,zn=!1;function Bn(e){zn=e}var W=null,Vn=!1;function Hn(e){W=e}var G=null;function Un(e){G=e}var Wn=null;function Gn(e){W!==null&&(Wn??=new Set).add(e)}var Kn=null,qn=0,Jn=null;function Yn(e){Jn=e}var Xn=1,Zn=0,Qn=Zn;function $n(e){Qn=e}function er(){return++Xn}function tr(e){var t=e.f;if(t&2048)return!0;if(t&2&&(e.f&=~ee),t&4096){for(var n=e.deps,r=n.length,i=0;i<r;i++){var a=n[i];if(tr(a)&&pt(a),a.wv>e.wv)return!0}t&512&&vt===null&&F(e,m)}return!1}function nr(e,t,n=!0){var r=e.reactions;if(r!==null&&!(Wn!==null&&Wn.has(e)))for(var i=0;i<r.length;i++){var a=r[i];a.f&2?nr(a,t,!1):t===a&&(n?F(a,h):a.f&1024&&F(a,g),Nt(a))}}function rr(e){var t=Kn,n=qn,r=Jn,i=W,a=Wn,o=N,s=Vn,c=Qn,l=e.f;Kn=null,qn=0,Jn=null,W=l&96?null:e,Wn=null,Re(e.ctx),Vn=!1,Qn=++Zn,e.ac!==null&&(dn(()=>{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(Kn!==null){var m;if(p||ar(e,qn),f!==null&&qn>0)for(f.length=qn+Kn.length,m=0;m<Kn.length;m++)f[qn+m]=Kn[m];else e.deps=f=Kn;if(gn()&&e.f&512)for(m=qn;m<f.length;m++)(f[m].reactions??=[]).push(e)}else!p&&f!==null&&qn<f.length&&(ar(e,qn),f.length=qn);if(Ve()&&Jn!==null&&!Vn&&f!==null&&!(e.f&6146))for(m=0;m<Jn.length;m++)nr(Jn[m],e);if(i!==null&&i!==e){if(Zn++,i.deps!==null)for(let e=0;e<n;e+=1)i.deps[e].rv=Zn;if(t!==null)for(let e of t)e.rv=Zn;Jn!==null&&(r===null?r=Jn:r.push(...Jn))}return e.f&8388608&&(e.f^=re),d}catch(e){return Ke(e)}finally{e.f^=te,Kn=t,qn=n,Jn=r,W=i,Wn=a,Re(o),Vn=s,Qn=c}}function ir(e,r){let i=r.reactions;if(i!==null){var a=t.call(i,e);if(a!==-1){var o=i.length-1;o===0?i=r.reactions=null:(i[a]=i[o],i.pop())}}if(i===null&&r.f&2&&(Kn===null||!n.call(Kn,r))){var s=r;s.f&512&&(s.f^=512,s.f&=~ee),s.v!==O&&Je(s),mt(s),ar(s,0)}}function ar(e,t){var n=e.deps;if(n!==null)for(var r=t;r<n.length;r++)ir(e,n[r])}function or(e){var t=e.f;if(!(t&16384)){F(e,m);var n=G,r=Rn;G=e,Rn=!0;try{t&16777232?On(e):Dn(e),En(e);var i=rr(e);e.teardown=typeof i==`function`?i:null,e.wv=Xn}finally{Rn=r,G=n}}}async function sr(){await Promise.resolve(),Dt()}function K(e){var t=(e.f&2)!=0;if(Ln?.add(e),W!==null&&!Vn&&!(G!==null&&G.f&16384)&&(Wn===null||!Wn.has(e))){var r=W.deps;if(W.f&2097152)e.rv<Zn&&(e.rv=Zn,Kn===null&&r!==null&&r[qn]===e?qn++:Kn===null?Kn=[e]:Kn.push(e));else{W.deps??=[],n.call(W.deps,e)||W.deps.push(e);var i=e.reactions;i===null?e.reactions=[W]:n.call(i,W)||i.push(W)}}if(zn&&Lt.has(e))return Lt.get(e);if(t){var a=e;if(zn){var o=a.v;return(!(a.f&1024)&&a.reactions!==null||lr(a))&&(o=ft(a)),Lt.set(a,o),o}var s=(a.f&512)==0&&!Vn&&W!==null&&(Rn||(W.f&512)!=0),c=(a.f&y)===0;tr(a)&&(s&&(a.f|=512),pt(a)),s&&!c&&(ht(a),cr(a))}if(vt?.has(e))return vt.get(e);if(e.f&8388608)throw e.v;return e.v}function cr(e){if(e.f|=512,e.deps!==null)for(let t of e.deps)(t.reactions??=[]).push(e),t.f&2&&!(t.f&512)&&(ht(t),cr(t))}function lr(e){if(e.v===O)return!0;if(e.deps===null)return!1;for(let t of e.deps)if(Lt.has(t)||t.f&2&&lr(t))return!0;return!1}function ur(e){var t=Vn;try{return Vn=!0,e()}finally{Vn=t}}[...`allowfullscreen.async.autofocus.autoplay.checked.controls.default.disabled.formnovalidate.indeterminate.inert.ismap.loop.multiple.muted.nomodule.novalidate.open.playsinline.readonly.required.reversed.seamless.selected.webkitdirectory.defer.disablepictureinpicture.disableremoteplayback`.split(`.`)];var dr=[`touchstart`,`touchmove`];function fr(e){return dr.includes(e)}var pr=Symbol(`events`),mr=new Set,hr=new Set;function gr(e,t,n,r={}){function i(e){if(r.capture||br.call(t,e),!e.cancelBubble)return dn(()=>n?.call(this,e))}return e.startsWith(`pointer`)||e.startsWith(`touch`)||e===`wheel`?We(()=>{t.addEventListener(e,i,r)}):t.addEventListener(e,i,r),i}function _r(e,t,n,r,i){var a={capture:r,passive:i},o=gr(e,t,n,a);(t===document.body||t===window||t===document||t instanceof HTMLMediaElement)&&_n(()=>{t.removeEventListener(e,o,a)})}function q(e,t,n){(t[pr]??={})[e]=n}function vr(e){for(var t=0;t<e.length;t++)mr.add(e[t]);for(var n of hr)n(e)}var yr=null;function br(e){var t=this,n=t.ownerDocument,r=e.type,a=e.composedPath?.()||[],o=a[0]||e.target;yr=e;var s=0,c=yr===e&&e[pr];if(c){var l=a.indexOf(c);if(l!==-1&&(t===document||t===window)){e[pr]=t;return}var u=a.indexOf(t);if(u===-1)return;l<=u&&(s=l)}if(o=a[s]||e.target,o!==t){i(e,`currentTarget`,{configurable:!0,get(){return o||n}});var d=W,f=G;Hn(null),Un(null);try{for(var p,m=[];o!==null&&o!==t;){try{var h=o[pr]?.[r];h!=null&&(!o.disabled||e.target===o)&&h.call(o,e)}catch(e){p?m.push(e):p=e}if(e.cancelBubble)break;s++,o=s<a.length?a[s]:null}if(p){for(let e of m)queueMicrotask(()=>{throw e});throw p}}finally{e[pr]=t,delete e.currentTarget,Hn(d),Un(f)}}}var xr=globalThis?.window?.trustedTypes&&globalThis.window.trustedTypes.createPolicy(`svelte-trusted-html`,{createHTML:e=>e});function Sr(e){return xr?.createHTML(e)??e}function Cr(e){var t=on(`template`);return t.innerHTML=Sr(e.replaceAll(`<!>`,`<!---->`)),t.content}function wr(e,t){var n=G;n.nodes===null&&(n.nodes={start:e,end:t,a:null,t:null})}function J(e,t){var n=(t&1)!=0,r=(t&2)!=0,i,a=!e.startsWith(`<!>`);return()=>{if(k)return wr(A,null),A;i===void 0&&(i=Cr(a?e:`<!>`+e),n||(i=tn(i)));var t=r||Xt?document.importNode(i,!0):i.cloneNode(!0);if(n){var o=tn(t),s=t.lastChild;wr(o,s)}else wr(t,t);return t}}function Tr(e=``){if(!k){var t=en(e+``);return wr(t,t),t}var n=A;return n.nodeType===3?sn(n):(n.before(n=en()),j(n)),wr(n,n),n}function Er(){if(k)return wr(A,null),A;var e=document.createDocumentFragment(),t=document.createComment(``),n=en();return e.append(t,n),wr(t,n),e}function Y(e,t){if(k){var n=G;(!(n.f&32768)||n.nodes.end===null)&&(n.nodes.end=A),je();return}e!==null&&e.before(t)}function X(e,t){var n=t==null?``:typeof t==`object`?`${t}`:t;n!==(e[le]??=e.nodeValue)&&(e[le]=n,e.nodeValue=`${n}`)}function Dr(e,t){return kr(e,t)}var Or=new Map;function kr(e,{target:t,anchor:n,props:i={},events:a,context:o,intro:s=!0,transformError:c}){$t();var l=void 0,u=bn(()=>{var s=n??t.appendChild(en());tt(s,{pending:()=>{}},t=>{ze({});var n=N;if(o&&(n.c=o),a&&(i.$$events=a),k&&wr(t,null),l=e(t,i)||{},k&&(G.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=fr(r);for(let e of[t,document]){var a=Or.get(e);a===void 0&&(a=new Map,Or.set(e,a));var o=a.get(r);o===void 0?(e.addEventListener(r,br,{passive:i}),a.set(r,1)):a.set(r,o+1)}}}};return d(r(mr)),hr.add(d),()=>{for(var e of u)for(let n of[t,document]){var r=Or.get(n),i=r.get(e);--i==0?(n.removeEventListener(e,br),r.delete(e),r.size===0&&Or.delete(n)):r.set(e,i)}hr.delete(d),s!==n&&s.parentNode?.removeChild(s)}});return Ar.set(l,u),l}var Ar=new WeakMap,jr=class{anchor;#e=new Map;#t=new Map;#n=new Map;#r=new Set;#i=!0;constructor(e,t=!0){this.anchor=e,this.#i=t}#a=e=>{if(this.#e.has(e)){var t=this.#e.get(e),n=this.#t.get(t);if(n)Pn(n),this.#r.delete(t);else{var r=this.#n.get(t);r&&(Pn(r.effect),this.#t.set(t,r.effect),this.#n.delete(t),r.fragment.lastChild.remove(),this.anchor.before(r.fragment),n=r.effect)}for(let[t,n]of this.#e){if(this.#e.delete(t),t===e)break;let r=this.#n.get(n);r&&(kn(r.effect),this.#n.delete(n))}for(let[e,r]of this.#t){if(e===t||this.#r.has(e))continue;let i=()=>{if(Array.from(this.#e.values()).includes(e)){var t=document.createDocumentFragment();In(r,t),t.append(en()),this.#n.set(e,{effect:r,fragment:t})}else kn(r);this.#r.delete(e),this.#t.delete(e)};this.#i||!n?(this.#r.add(e),Mn(r,i,!1)):i()}}};#o=e=>{this.#e.delete(e);let t=Array.from(this.#e.values());for(let[e,n]of this.#n)t.includes(e)||(kn(n.effect),this.#n.delete(e))};ensure(e,t){var n=L,r=an();if(t&&!this.#t.has(e)&&!this.#n.has(e))if(r){var i=document.createDocumentFragment(),a=en();i.append(a),this.#n.set(e,{effect:Tn(()=>t(a)),fragment:i})}else this.#t.set(e,Tn(()=>t(this.anchor)));if(this.#e.set(n,e),r){for(let[t,r]of this.#t)t===e?n.unskip_effect(r):n.skip_effect(r);for(let[t,r]of this.#n)t===e?n.unskip_effect(r.effect):n.skip_effect(r.effect);n.oncommit(this.#a),n.ondiscard(this.#o)}else k&&(this.anchor=A),this.#a(n)}};function Z(e,t,n=!1){var r;k&&(r=A,je());var i=new jr(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)}wn(()=>{var e=!1;t((t,n=0)=>{e=!0,o(n,t)}),e||o(-1,null)},a)}function Mr(e,t){return t}function Nr(e,t,n){for(var i=[],a=t.length,o,s=t.length,c=0;c<a;c++){let n=t[c];Mn(n,()=>{if(o){if(o.pending.delete(n),o.done.add(n),o.pending.size===0){var t=e.outrogroups;Pr(e,r(o.done)),t.delete(o),t.size===0&&(e.outrogroups=null)}}else--s},!1)}if(s===0){var l=i.length===0&&n!==null;if(l){var u=n,d=u.parentNode;rn(d),d.append(u),e.items.clear()}Pr(e,t,!l)}else o={pending:new Set(t),done:new Set},(e.outrogroups??=new Set).add(o)}function Pr(e,t,n=!0){var r;if(e.pending.size>0){r=new Set;for(let t of e.pending.values())for(let n of t)r.add(e.items.get(n).e)}for(var i=0;i<t.length;i++){var a=t[i];r?.has(a)?(a.f|=T,In(a,document.createDocumentFragment())):kn(t[i],n)}}var Fr;function Q(t,n,i,a,o,s=null){var c=t,l=new Map;if(n&4){var u=t;c=k?j(tn(u)):u.appendChild(en())}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)):Pn(d):Mn(d,()=>{d=null})))}function _(e){v.pending.delete(e)}var v={effect:wn(()=>{p=K(f);var e=p.length;let t=!1;k&&Pe(c)===`[!`!=(e===0)&&(c=Ne(),j(c),Ae(!1),t=!0);for(var r=new Set,u=L,v=an(),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:Fr??=en(),b,x,y,o,n,i),h||(S.e.f|=T),l.set(x,S)),r.add(x)}if(e===0&&s&&!d&&(h?d=Tn(()=>s(c)):(d=Tn(()=>s(Fr??=en())),d.f|=T)),e>r.size&&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),K(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&&(Pn(_),o&&(_.nodes?.a?.unfix(),(f??=new Set).delete(_))),_.f&33554432)if(_.f^=T,_===l)zr(_,null,n);else{var y=d?d.next:l;_===e.effect.last&&(e.effect.last=_.prev),_.prev&&(_.prev.next=_.next),_.next&&(_.next.prev=_.prev),Br(e,d,_),Br(e,_,y),zr(_,y,n),d=_,p=[],m=[],l=Ir(d.next);continue}if(_!==l){if(u!==void 0&&u.has(_)){if(p.length<m.length){var b=m[0],x;d=b.prev;var S=p[0],C=p[p.length-1];for(x=0;x<p.length;x+=1)zr(p[x],b,n);for(x=0;x<m.length;x+=1)u.delete(m[x]);Br(e,S.prev,C.next),Br(e,d,S),Br(e,C,b),l=b,d=C,--v,p=[],m=[]}else u.delete(_),zr(_,l,n),Br(e,_.prev,_.next),Br(e,_,d===null?e.effect.first:d.next),Br(e,d,_),d=_;continue}for(p=[],m=[];l!==null&&l!==_;)(u??=new Set).add(l),m.push(l),l=Ir(l.next);if(l===null)continue}_.f&33554432||p.push(_),d=_,l=Ir(_.next)}if(e.outrogroups!==null){for(let t of e.outrogroups)t.pending.size===0&&(Pr(e,r(t.done)),e.outrogroups?.delete(t));e.outrogroups.size===0&&(e.outrogroups=null)}if(l!==null||u!==void 0){var w=[];if(u!==void 0)for(_ of u)_.f&8192||w.push(_);for(;l!==null;)!(l.f&8192)&&l!==e.fallback&&w.push(l),l=Ir(l.next);var 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()}Nr(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:Tn(()=>(a(t,c??n,l??i,s),()=>{e.delete(r)}))}}function zr(e,t,n){if(e.nodes)for(var r=e.nodes.start,i=e.nodes.end,a=t&&!(t.f&33554432)?t.nodes.start:n;r!==null;){var o=nn(r);if(a.before(r),r===i)return;r=o}}function Br(e,t,n){t===null?e.effect.first=n:t.next=n,n===null?e.effect.last=t:n.prev=t}function Vr(e,t){let n=null,r=k;var i;if(k){n=A;for(var a=tn(document.head);a!==null&&(a.nodeType!==8||a.data!==e);)a=nn(a);if(a===null)Ae(!1);else{var o=nn(a);a.remove(),j(o)}}k||(i=document.head.appendChild(en()));try{wn(()=>{var e=Tn(()=>t(i));e.f|=S})}finally{r&&(Ae(!0),j(n))}}var Hr=[...`
|
|
2
|
+
\r\f\xA0\v`];function Ur(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||Hr.includes(r[o-1]))&&(s===r.length||Hr.includes(r[s]))?r=(o===0?``:r.substring(0,o))+r.substring(s+1):o=s}}return r===``?null:r}function Wr(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 Gr(e){return e[0]!==`-`||e[1]!==`-`?e.toLowerCase():e}function Kr(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(Gr)),i&&c.push(...Object.keys(i).map(Gr));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=Gr(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+=Wr(r)),i&&(n+=Wr(i,!0)),n=n.trim(),n===``?null:n}return e==null?null:String(e)}function qr(e,t,n,r,i,a){var o=e[se];if(k||o!==n||o===void 0){var s=Ur(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 Jr(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 Yr(e,t,n,r){var i=e[ce];if(k||i!==t){var a=Kr(t,r);(!k||a!==e.getAttribute(`style`))&&(a==null?e.removeAttribute(`style`):e.style.cssText=a),e[ce]=t}else r&&(Array.isArray(r)?(Jr(e,n?.[0],r[0]),Jr(e,n?.[1],r[1],`important`)):Jr(e,n,r));return r}function Xr(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(Qr(i));return}for(i of t.options)if(qt(Qr(i),n)){i.selected=!0;return}(!r||n!==void 0)&&(t.selectedIndex=-1)}function Zr(e){var t=new MutationObserver(()=>{Xr(e,e.__value)});t.observe(e,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[`value`]}),_n(()=>{t.disconnect()})}function Qr(e){return`__value`in e?e.__value:e.value}var $r=Symbol(`is custom element`),ei=Symbol(`is html`),ti=fe?`link`:`LINK`,ni=fe?`progress`:`PROGRESS`;function ri(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),un()}}function ii(e,t){var n=ai(e);n.value===(n.value=t??void 0)||e.value===t&&(t!==0||e.nodeName!==ni)||(e.value=t??``)}function $(e,t,n,r){var i=ai(e);k&&(i[t]=e.getAttribute(t),t===`src`||t===`srcset`||t===`href`&&e.nodeName===ti)||i[t]!==(i[t]=n)&&(t===`loading`&&(e[ae]=n),n==null?e.removeAttribute(t):typeof n!=`string`&&si(e).includes(t)?e[t]=n:e.setAttribute(t,n))}function ai(e){return e[oe]??={[$r]:e.nodeName.includes(`-`),[ei]:e.namespaceURI===Te}}var oi=new Map;function si(e){var t=e.getAttribute(`is`)||e.nodeName,n=oi.get(t);if(n)return n;oi.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 ci(e,t,n=t){var r=new WeakSet;fn(e,`input`,async i=>{var a=i?e.defaultValue:e.value;if(a=li(e)?ui(a):a,n(a),L!==null&&r.add(L),await sr(),a!==(a=t())){var o=e.selectionStart,s=e.selectionEnd,c=e.value.length;if(e.value=a??``,s!==null){var l=e.value.length;o===s&&s===c&&l>c?(e.selectionStart=l,e.selectionEnd=l):(e.selectionStart=o,e.selectionEnd=Math.min(s,l))}}}),(k&&e.defaultValue!==e.value||ur(t)==null&&e.value)&&(n(li(e)?ui(e.value):e.value),L!==null&&r.add(L)),Cn(()=>{var n=t();if(e===document.activeElement){var i=L;if(r.has(i))return}li(e)&&n===ui(e.value)||e.type===`date`&&!n&&!e.value||n!==e.value&&(e.value=n??``)})}function li(e){var t=e.type;return t===`number`||t===`range`}function ui(e){return e===``?null:+e}function di(e,t){return e===t||e?.[E]===t}function fi(e={},t,n,r){var i=N.r,a=G;return xn(()=>{var o,s;return Cn(()=>{o=s,s=r?.()||[],ur(()=>{di(n(...s),e)||(t(e,...s),o&&di(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&&di(n(...s),e)&&t(null,...s)},c=r.teardown;r.teardown=()=>{o(),c?.()}}}),e}function pi(e,t,n,r){var i=!0,o=(n&8)!=0,s=(n&16)!=0,c=r,l=!0,u=void 0,d=()=>s&&i?(u??=st(r),K(u)):(l&&(l=!1,c=s?ur(r):r),c);let f;if(o){var p=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&&K(y);var b=G;return(function(e,t){if(arguments.length>0){let n=t?K(y):i&&o?Gt(e):e;return z(y,n),v=!0,c!==void 0&&(c=n),e}return zn&&v||b.f&16384?y.v:K(y)})}function mi(e){N===null&&pe(`onMount`),vn(()=>{let t=ur(e);if(typeof t==`function`)return t})}function hi(e){N===null&&pe(`onDestroy`),mi(()=>()=>ur(e))}typeof window<`u`&&((window.__svelte??={}).v??=new Set).add(`5`);var gi=J(`<p class="session-path svelte-t9laac"> </p>`),_i=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 vi(e,t){ze(t,!0);let n=pi(t,`sessionPath`,3,null);var r=_i(),i=V(r),a=H(B(i),2),o=e=>{var t=gi(),r=B(t,!0);M(t),U(()=>{$(t,`title`,n()),X(r,n())}),Y(e,t)};Z(a,e=>{n()&&e(o)}),Me(2),M(i);var s=H(i,2),c=H(B(s),2),l=H(B(c),2),u=B(l);u.value=u.__value=`system`;var d=H(u);d.value=d.__value=`light`;var f=H(d);f.value=f.__value=`dark`,M(l);var p;Zr(l),M(c),M(s),U(()=>{p!==(p=t.theme)&&(l.value=(l.__value=t.theme)??``,Xr(l,t.theme))}),q(`change`,l,e=>t.onthemechange(e.currentTarget.value)),Y(e,r),Be()}vr([`change`]);var yi=J(`<details><summary> </summary><pre> </pre></details>`),bi=J(`<section aria-labelledby="activities-title"><h3 id="activities-title">Activity</h3> <!></section>`);function xi(e,t){ze(t,!0);var n=Er(),r=V(n),i=e=>{var n=bi();Q(H(B(n),2),17,()=>t.activities,e=>e.id,(e,t)=>{var n=yi(),r=B(n),i=B(r,!0);M(r);var a=H(r),o=B(a,!0);M(a),M(n),U(()=>{X(i,K(t).label),X(o,K(t).detail)}),Y(e,n)}),M(n),Y(e,n)};Z(r,e=>{t.activities.length&&e(i)}),Y(e,n),Be()}function Si(e){return!wi(e)||!Array.isArray(e.questions)?[]:e.questions.flatMap(e=>!wi(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=>wi(e)&&typeof e.label==`string`&&typeof e.description==`string`?[{label:e.label,description:e.description}]:[]):[]}])}function Ci(e){return{answers:Object.fromEntries(e.filter(e=>e.answer.trim()).map(e=>[e.id,{answers:[e.answer]}]))}}function wi(e){return typeof e==`object`&&!!e}var Ti=J(`<button type="button"> </button>`),Ei=J(`<label> </label> <input/> <!>`,1),Di=J(`<form><!> <button type="submit">Send answers</button></form>`),Oi=J(`<p>Grant the requested permissions for this turn only.</p><button type="button">Approve</button>`,1),ki=J(`<button type="button">Approve</button><button type="button">Deny</button>`,1),Ai=J(`<article><p> </p> <!></article>`),ji=J(`<section aria-labelledby="interactions-title"><h3 id="interactions-title">Codex needs your decision</h3> <!></section>`);function Mi(e,t){ze(t,!0);var n=Er(),r=V(n),i=e=>{var n=ji();Q(H(B(n),2),17,()=>t.interactions,e=>e.requestId,(e,n)=>{var r=Ai(),i=B(r),a=B(i,!0);M(i);var o=H(i,2),s=e=>{let r=I(()=>Si(K(n).payload));var i=Di(),a=B(i);Q(a,17,()=>K(r),e=>e.id,(e,r)=>{var i=Ei(),a=V(i),o=B(a);M(a);var s=H(a,2);ri(s),Q(H(s,2),17,()=>K(r).options,e=>e.label,(e,n)=>{var i=Ti(),a=B(i,!0);M(i),U(()=>X(a,K(n).label)),q(`click`,i,()=>t.onanswer(K(r).id,K(n).label)),Y(e,i)}),U(()=>{$(a,`for`,`${K(n).requestId}-${K(r).id}`),X(o,`${K(r).header??``}: ${K(r).question??``}`),$(s,`id`,`${K(n).requestId}-${K(r).id}`),$(s,`type`,K(r).isSecret?`password`:`text`),ii(s,t.answers[K(r).id]??``)}),q(`input`,s,e=>t.onanswer(K(r).id,e.currentTarget.value)),Y(e,i)});var o=H(a,2);M(i),U(()=>o.disabled=!K(r).length),_r(`submit`,i,e=>{e.preventDefault(),t.onuserinput(K(n))}),Y(e,i)},c=e=>{var r=Oi();q(`click`,H(V(r)),()=>t.onpermission(K(n))),Y(e,r)},l=e=>{var r=ki(),i=V(r),a=H(i);q(`click`,i,()=>t.ondecision(K(n).requestId,`accept`)),q(`click`,a,()=>t.ondecision(K(n).requestId,`decline`)),Y(e,r)};Z(o,e=>{K(n).kind===`userInput`?e(s):K(n).kind===`permissionsApproval`?e(c,1):e(l,-1)}),M(r),U(()=>X(a,K(n).kind)),Y(e,r)}),M(n),Y(e,n)};Z(r,e=>{t.interactions.length&&e(i)}),Y(e,n),Be()}vr([`input`,`click`]);function Ni(e){return e.key===`Enter`&&!e.shiftKey&&!e.ctrlKey&&!e.isComposing}var Pi=J(`Ready<span class="block-cursor svelte-1264sfg" aria-hidden="true"></span>`,1),Fi=J(`<button type="button" class="svelte-1264sfg">Interrupt</button>`),Ii=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" class="svelte-1264sfg">↑</span></button></div> <!></form>`);function Li(e,t){ze(t,!0);function n(e){!Ni(e)||t.activeTurnId||t.starting||!t.message.trim()||(e.preventDefault(),t.onsend())}var r=Ii(),i=B(r),a=B(i),o=e=>{var t=Pi();Me(),Y(e,t)},s=e=>{var n=Tr();U(()=>X(n,t.status)),Y(e,n)};Z(a,e=>{t.status===`Ready.`?e(o):e(s,-1)}),M(i);var c=H(i,2),l=B(c);cn(l);var u=H(l,2);M(c);var d=H(c,2),f=e=>{var n=Fi();q(`click`,n,function(...e){t.oninterrupt?.apply(this,e)}),Y(e,n)};Z(d,e=>{t.activeTurnId&&e(f)}),M(r),U(e=>{$(i,`aria-label`,t.status),ii(l,t.message),u.disabled=e},[()=>!!t.activeTurnId||t.starting||!t.message.trim()]),_r(`submit`,r,e=>{e.preventDefault(),t.onsend()}),q(`input`,l,e=>t.onchange(e.currentTarget.value)),q(`keydown`,l,n),Y(e,r),Be()}vr([`input`,`keydown`,`click`]);function Ri(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 zi(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 Bi(e){return new Intl.DateTimeFormat(void 0,{hour:`2-digit`,minute:`2-digit`}).format(e)}function Vi(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(...Hi(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(...Hi(i)),t}function Hi(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:Gi(i)})};for(let e=0;e<n.length-1;e+=1){let a=Ui(n[e]??``),o=Ui(n[e+1]??``);if(!a||!o||a.length!==o.length||!o.every(Wi))continue;i(e),e+=2;let s=[];for(;e<n.length;){let t=Ui(n[e]??``);if(!t||t.length!==a.length)break;s.push(t),e+=1}t.push({kind:`table`,headers:a.map(Gi),rows:s.map(e=>e.map(Gi))}),r=e,--e}return i(n.length),t.length?t:[{kind:`text`,parts:Gi(e)}]}function Ui(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 Wi(e){return/^:?-{3,}:?$/.test(e)}function Gi(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 Ki=(e,t=d)=>{var n=Er();Q(V(n),17,t,Mr,(e,t)=>{var n=Er(),r=V(n),i=e=>{var n=Ji(),r=B(n,!0);M(n),U(()=>{$(n,`href`,K(t).href),X(r,K(t).text)}),Y(e,n)},a=e=>{var n=Yi(),r=B(n,!0);M(n),U(()=>X(r,K(t).text)),Y(e,n)},o=e=>{var n=Tr();U(()=>X(n,K(t).text)),Y(e,n)};Z(r,e=>{K(t).kind===`link`?e(i):K(t).kind===`code`?e(a,1):e(o,-1)}),Y(e,n)}),Y(e,n)},qi=(e,t=d)=>{var n=Er();Q(V(n),17,()=>Vi(t()),Mr,(e,t)=>{var n=Er(),r=V(n),i=e=>{var n=Xi(),r=B(n),i=B(r,!0);M(r),M(n),U(()=>X(i,K(t).text)),Y(e,n)},a=e=>{var n=ea(),r=B(n),i=B(r),a=B(i);Q(a,21,()=>K(t).headers,Mr,(e,t)=>{var n=Zi();Ki(B(n),()=>K(t)),M(n),Y(e,n)}),M(a),M(i);var o=H(i);Q(o,21,()=>K(t).rows,Mr,(e,t)=>{var n=$i();Q(n,21,()=>K(t),Mr,(e,t)=>{var n=Qi();Ki(B(n),()=>K(t)),M(n),Y(e,n)}),M(n),Y(e,n)}),M(o),M(r),M(n),Y(e,n)},o=e=>{var n=ta();Ki(B(n),()=>K(t).parts),M(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)},Ji=J(`<a target="_blank" rel="noreferrer"> </a>`),Yi=J(`<code class="svelte-1im954t"> </code>`),Xi=J(`<pre class="svelte-1im954t"><code class="svelte-1im954t"> </code></pre>`),Zi=J(`<th scope="col" class="svelte-1im954t"><!></th>`),Qi=J(`<td class="svelte-1im954t"><!></td>`),$i=J(`<tr></tr>`),ea=J(`<div class="table-scroll svelte-1im954t"><table class="svelte-1im954t"><thead><tr></tr></thead><tbody></tbody></table></div>`),ta=J(`<div><!></div>`),na=J(`<time class="svelte-1im954t"> <!></time>`),ra=J(`<div class="entry-heading svelte-1im954t"><strong>prompt</strong> <!></div> <div class="entry-content svelte-1im954t"><!></div>`,1),ia=J(`<details><summary>commentary</summary> <!></details>`),aa=J(`<section class="answer-turn"><div class="entry-heading svelte-1im954t"><strong>answer</strong> <!></div> <div class="entry-content svelte-1im954t"><!></div> <!></section>`),oa=J(`<li class="svelte-1im954t"><!></li>`),sa=J(`<ol aria-label="Chat messages"></ol>`);function ca(e,t){ze(t,!0);let n=I(()=>Ri(t.messages));var r=sa();Q(r,23,()=>K(n),e=>e.id,(e,t,r)=>{var i=oa(),a=B(i),o=e=>{var i=ra(),a=V(i),o=H(B(a),2),s=e=>{var i=na(),a=B(i),o=H(a),s=e=>{var i=Tr();U(e=>X(i,`· ${e??``}`),[()=>zi(K(n)[K(r)-1]?.occurredAt,K(t).occurredAt)]),Y(e,i)},c=I(()=>zi(K(n)[K(r)-1]?.occurredAt,K(t).occurredAt));Z(o,e=>{K(c)&&e(s)}),M(i),U((e,t)=>{$(i,`datetime`,e),X(a,`${t??``} `)},[()=>new Date(K(t).occurredAt).toISOString(),()=>Bi(K(t).occurredAt)]),Y(e,i)};Z(o,e=>{K(t).occurredAt&&e(s)}),M(a);var c=H(a,2);qi(B(c),()=>K(t).text),M(c),Y(e,i)},s=e=>{var i=aa(),a=B(i),o=H(B(a),2),s=e=>{var i=na(),a=B(i),o=H(a),s=e=>{var i=Tr();U(e=>X(i,`· ${e??``}`),[()=>zi(K(n)[K(r)-1]?.occurredAt,K(t).occurredAt)]),Y(e,i)},c=I(()=>zi(K(n)[K(r)-1]?.occurredAt,K(t).occurredAt));Z(o,e=>{K(c)&&e(s)}),M(i),U((e,t)=>{$(i,`datetime`,e),X(a,`${t??``} `)},[()=>new Date(K(t).occurredAt).toISOString(),()=>Bi(K(t).occurredAt)]),Y(e,i)};Z(o,e=>{K(t).occurredAt&&e(s)}),M(a);var c=H(a,2);qi(B(c),()=>K(t).answer),M(c);var l=H(c,2),u=e=>{var n=ia();qi(H(B(n),2),()=>K(t).commentary),M(n),Y(e,n)};Z(l,e=>{K(t).commentary&&e(u)}),M(i),Y(e,i)},c=e=>{var n=ia();qi(H(B(n),2),()=>K(t).commentary),M(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)}),M(i),Y(e,i)}),M(r),Y(e,r),Be()}async function la(e=fetch){let t=await e(`/api/bootstrap`);if(!t.ok)throw Error(`BOOTSTRAP_FAILED`);return t.json()}function ua(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 da=`gestalt-mobile`,fa=2,pa=[`settings`,`drafts`,`cursors`,`messages`];function ma(e){return new Promise((t,n)=>{let r=e.open(da,fa);r.onupgradeneeded=()=>{for(let e of pa)r.result.objectStoreNames.contains(e)||r.result.createObjectStore(e)},r.onsuccess=()=>t(r.result),r.onerror=()=>n(r.error)})}function ha(e,t,n){return va(e.transaction(t,`readonly`).objectStore(t).get(n))}function ga(e,t,n,r){return va(e.transaction(t,`readwrite`).objectStore(t).put(r,n))}function _a(e,t,n){return va(e.transaction(t,`readwrite`).objectStore(t).delete(n))}function va(e){return new Promise((t,n)=>{e.onsuccess=()=>t(e.result),e.onerror=()=>n(e.error)})}var ya=`messages`;function ba(e){return e.slice(-200)}function xa(e=globalThis.indexedDB){if(!e)return{read:async()=>[],write:async()=>{}};let t=ma(e);return{async read(e){try{return await ha(await t,ya,e)??[]}catch{return[]}},async write(e,n){try{await ga(await t,ya,e,ba(n))}catch{}}}}var Sa={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 Ca(e,t){let n=e instanceof Error?e.message:``,r=Object.hasOwn(Sa,n)?n:t;return{code:r,message:Sa[r]}}var wa={error:null,success:5e3,info:7e3};function Ta(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=wa[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 Ea=J(`<small class="svelte-1a0rutm"> </small>`),Da=J(`<section aria-atomic="true"><span class="toast-symbol svelte-1a0rutm" aria-hidden="true"> </span> <span class="toast-copy svelte-1a0rutm"><strong class="svelte-1a0rutm"> </strong> <span> </span> <!></span> <button type="button" class="svelte-1a0rutm"><span aria-hidden="true">×</span></button></section>`),Oa=J(`<div class="toast-viewport svelte-1a0rutm" aria-label="Notifications"></div>`);function ka(e,t){ze(t,!0);let n=R([]),r=I(()=>K(n).slice(-3));mi(()=>t.queue.subscribe(e=>z(n,e)));var i=Oa();Q(i,21,()=>K(r),e=>e.id,(e,n)=>{var r=Da();let i;var a=B(r),o=B(a,!0);M(a);var s=H(a,2),c=B(s),l=B(c,!0);M(c);var u=H(c,2),d=B(u,!0);M(u);var f=H(u,2),p=e=>{var t=Ea(),r=B(t);M(t),U(()=>X(r,`Repeated ${K(n).occurrences??``} times.`)),Y(e,t)};Z(f,e=>{K(n).occurrences>1&&e(p)}),M(s);var m=H(s,2);M(r),U(()=>{i=qr(r,1,`toast svelte-1a0rutm`,null,i,{error:K(n).kind===`error`}),$(r,`role`,K(n).kind===`error`?`alert`:`status`),$(r,`aria-live`,K(n).kind===`error`?`assertive`:`polite`),X(o,K(n).kind===`error`?`!`:K(n).kind===`success`?`✓`:`i`),X(l,K(n).kind===`error`?`Error`:K(n).kind===`success`?`Success`:`Info`),X(d,K(n).message),$(m,`aria-label`,`Dismiss ${K(n).kind} notification`)}),_r(`pointerenter`,r,()=>t.queue.pause(K(n).id,`hover`)),_r(`pointerleave`,r,()=>t.queue.resume(K(n).id,`hover`)),q(`focusin`,r,()=>t.queue.pause(K(n).id,`focus`)),q(`focusout`,r,()=>t.queue.resume(K(n).id,`focus`)),q(`click`,m,()=>t.queue.dismiss(K(n).id)),Y(e,r)}),M(i),Y(e,i),Be()}vr([`focusin`,`focusout`,`click`]);var Aa=J(`<main class="evidence-page svelte-1j55xyh"><h1 class="svelte-1j55xyh">Git repository</h1> <p>Choose a destination and clone a repository.</p> <div class="evidence-composer svelte-1j55xyh"><label for="evidence-prompt">Prompt</label> <textarea id="evidence-prompt" class="evidence-prompt svelte-1j55xyh" rows="1">Review repository status</textarea></div></main> <nav class="evidence-nav svelte-1j55xyh" aria-label="Primary evidence navigation"><button type="button" class="svelte-1j55xyh">Sessions</button> <button type="button" aria-pressed="true" class="svelte-1j55xyh">Git</button> <button type="button" class="svelte-1j55xyh">Chat</button></nav> <!>`,1);function ja(e,t){ze(t,!0);let n=Ta();mi(()=>{t.variant===`stacked`&&n.enqueue({kind:`success`,message:`Cloned.`}),n.enqueue({kind:`error`,code:`GIT_CLONE_FAILED`,message:`Clone failed.`})});var r=Aa();ka(H(V(r),4),{get queue(){return n}}),Y(e,r),Be()}var Ma={sessionBase:()=>!0,gitRepositoryTarget:e=>e.isGitRepository,cloneDestination:e=>!e.isGitRepository};function Na(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 Pa(e,t){let n=new Set(e);return t.isGitRepository||(n.has(t.id)?n.delete(t.id):n.add(t.id)),n}function Fa(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 Ia(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 La(e,t){for(let n of e){if(n.id===t)return n;let e=La(n.children,t);if(e)return e}}function Ra(e,t,n,r){if(e){let i=La(n,e);if(i&&r(i))return i.id;let a=Ia(t,e);for(let e of a.toReversed()){let t=La(n,e);if(t&&r(t))return t.id}}return za(n).find(r)?.id??null}function za(e){let t=[],n=e=>{t.push(e),e.children.forEach(n)};return e.forEach(n),t}var Ba=J(`<button class="disclosure svelte-6z3q4v" type="button" tabindex="-1"><span aria-hidden="true"> </span></button>`),Va=J(`<span class="disclosure-spacer svelte-6z3q4v" aria-hidden="true"></span>`),Ha=J(`<span class="repository-badge svelte-6z3q4v">Git</span>`),Ua=J(`<div class="tree-row svelte-6z3q4v"><!> <button type="button" role="treeitem"><span class="selection-mark svelte-6z3q4v" aria-hidden="true"> </span> <span class="node-copy svelte-6z3q4v"><span class="node-name svelte-6z3q4v"> </span> <span class="node-path svelte-6z3q4v"> </span></span> <!></button></div>`),Wa=J(`<div class="filesystem-tree svelte-6z3q4v" role="tree"></div>`);function Ga(e,t){ze(t,!0);let n=pi(t,`isSelectable`,3,()=>!0),r=R(null),i=Gt({}),a=I(()=>Fa(t.roots,t.expandedIds)),o=I(()=>K(r)&&K(a).some(({node:e})=>e.id===K(r))?K(r):t.selectedId&&K(a).some(({node:e})=>e.id===t.selectedId)?t.selectedId:K(a)[0]?.node.id??null);function s(e){return!e.isGitRepository&&e.children.length>0}function c(e){return e===`.`?`~/`:`~/${e}`}function l(e){z(r,e,!0),i[e]?.focus()}function u(e,t){let n=Math.max(0,Math.min(K(a).length-1,t)),r=K(a)[n];r&&n!==e&&l(r.node.id)}function d(e){n()(e)&&t.onselect(e)}function f(e){s(e)&&t.onexpandedchange(Pa(t.expandedIds,e))}function p(e,n,r){let{node:i,parentId:o}=n;switch(e.key){case`ArrowUp`:e.preventDefault(),u(r,r-1);break;case`ArrowDown`:e.preventDefault(),u(r,r+1);break;case`ArrowRight`:if(!s(i))return;e.preventDefault(),t.expandedIds.has(i.id)?K(a)[r+1]?.parentId===i.id&&u(r,r+1):f(i);break;case`ArrowLeft`:if(!t.expandedIds.has(i.id)&&!o)return;e.preventDefault(),s(i)&&t.expandedIds.has(i.id)?f(i):o&&l(o);break;case`Home`:e.preventDefault(),u(r,0);break;case`End`:e.preventDefault(),u(r,K(a).length-1);break;case`Enter`:case` `:e.preventDefault(),d(i);break}}var m=Wa();Q(m,23,()=>K(a),e=>e.node.id,(e,a,l)=>{let u=I(()=>K(a).node),m=I(()=>s(K(u)));var h=Ua();let g;var _=B(h),v=e=>{var n=Ba(),r=B(n),i=B(r,!0);M(r),M(n),U((e,t)=>{$(n,`aria-label`,e),X(i,t)},[()=>`${t.expandedIds.has(K(u).id)?`Collapse`:`Expand`} ${K(u).name}`,()=>t.expandedIds.has(K(u).id)?`−`:`+`]),q(`click`,n,()=>f(K(u))),Y(e,n)},y=e=>{Y(e,Va())};Z(_,e=>{K(m)?e(v):e(y,-1)});var b=H(_,2);let x;var S=B(b),C=B(S,!0);M(S);var w=H(S,2),T=B(w),ee=B(T,!0);M(T);var te=H(T,2),ne=B(te,!0);M(te),M(w);var re=H(w,2),E=e=>{Y(e,Ha())};Z(re,e=>{K(u).isGitRepository&&e(E)}),M(b),fi(b,(e,t)=>i[t.id]=e,e=>i?.[e.id],()=>[K(u)]),M(h),U((e,n,r,i,s)=>{g=Yr(h,``,g,e),x=qr(b,1,`tree-item svelte-6z3q4v`,null,x,{selected:t.selectedId===K(u).id,repository:K(u).isGitRepository}),$(b,`aria-level`,K(a).level),$(b,`aria-expanded`,n),$(b,`aria-selected`,t.selectedId===K(u).id),$(b,`aria-disabled`,r),$(b,`tabindex`,K(o)===K(u).id?0:-1),$(b,`title`,i),X(C,t.selectedId===K(u).id?`✓`:``),X(ee,K(u).name),X(ne,s)},[()=>({"--tree-level":Math.min(K(a).level-1,6)}),()=>K(m)?t.expandedIds.has(K(u).id):void 0,()=>!n()(K(u)),()=>c(K(u).relativePath),()=>c(K(u).relativePath)]),_r(`focus`,b,()=>z(r,K(u).id,!0)),q(`keydown`,b,e=>p(e,K(a),K(l))),q(`click`,b,()=>d(K(u))),Y(e,h)}),M(m),U(()=>$(m,`aria-label`,t.label)),Y(e,m),Be()}vr([`click`,`keydown`]);var Ka=J(`<section class="evidence-shell svelte-1d6w4ti" aria-labelledby="evidence-title"><p class="eyebrow svelte-1d6w4ti"> </p> <h1 id="evidence-title" class="svelte-1d6w4ti"> </h1> <p class="instructions svelte-1d6w4ti"> </p> <div class="tree-panel svelte-1d6w4ti"><!></div></section>`);function 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(Gt(new Set([`.`,`dyne`,`dyne/mobile-applications`]))),a=R(null),o=I(()=>t.context===`sessions`?`dyne/mobile-applications`:`dyne/mobile-applications/gestalt-mobile`),s=I(()=>K(a)??K(o));var c=Ka(),l=B(c),u=B(l,!0);M(l);var d=H(l,2),f=B(d,!0);M(d);var p=H(d,2),m=B(p,!0);M(p);var h=H(p,2),g=B(h);{let e=I(()=>t.context===`sessions`?`Session base`:`Git repository`),n=I(()=>t.context===`sessions`?Ma.sessionBase:Ma.gitRepositoryTarget);Ga(g,{get roots(){return r},get expandedIds(){return K(i)},get selectedId(){return K(s)},get label(){return K(e)},get isSelectable(){return K(n)},onexpandedchange:e=>z(i,e,!0),onselect:e=>z(a,e.id,!0)})}M(h),M(c),U(()=>{X(u,t.context===`sessions`?`Sessions`:`Git`),X(f,t.context===`sessions`?`Session base`:`Git repository`),X(m,t.context===`sessions`?`Select the folder Codex should use as its working directory.`:`Select a repository for Git actions.`)}),Y(e,c),Be()}function Ja(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 Ya(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 Xa=J(`<p class="clone-status svelte-pudr3t" role="status"> </p>`),Za=J(`<option> </option>`),Qa=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>`),eo=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>`),to=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),no=J(`<p>This workspace is not a Git repository.</p>`),ro=J(`<p role="status">Loading repository status…</p>`),io=J(`<p><strong> </strong> is available as a Clone destination. Select a Git
|
|
11
|
+
repository to inspect branches and enable repository actions.</p> <div class="git-actions svelte-pudr3t" aria-label="Repository actions unavailable"><button type="button" disabled="" class="svelte-pudr3t"><span aria-hidden="true">↑</span> Push</button> <button type="button" disabled="" class="svelte-pudr3t"><span aria-hidden="true">↓</span> Pull</button></div>`,1),ao=J(`<p>Select a folder above to choose a Clone destination or inspect a Git repository.</p> <div class="git-actions svelte-pudr3t" aria-label="Repository actions unavailable"><button type="button" disabled="" class="svelte-pudr3t"><span aria-hidden="true">↑</span> Push</button> <button type="button" disabled="" class="svelte-pudr3t"><span aria-hidden="true">↓</span> Pull</button></div>`,1),oo=J(`<p role="alert"> </p>`),so=J(`<section class="git-view svelte-pudr3t" aria-labelledby="git-title"><h2 id="git-title" class="visually-hidden">Git</h2> <section class="git-tree svelte-pudr3t" aria-labelledby="git-tree-title"><div class="section-heading svelte-pudr3t"><h3 id="git-tree-title" class="svelte-pudr3t">Repository and clone destination</h3> <p class="svelte-pudr3t">Select any folder. Git repositories enable repository actions; other folders are clone destinations.</p></div> <!></section> <form class="clone-form svelte-pudr3t"><div class="clone-controls svelte-pudr3t"><div class="clone-field clone-destination svelte-pudr3t"><span class="field-label svelte-pudr3t">Destination</span> <output aria-live="polite" class="svelte-pudr3t"> </output></div> <div class="clone-field svelte-pudr3t"><label for="git-clone-address">Git address</label> <input id="git-clone-address" name="address" required="" autocomplete="url" inputmode="url" enterkeyhint="done" placeholder="https://example.com/owner/repository.git" aria-describedby="clone-help"/></div> <button type="submit" class="svelte-pudr3t"> </button></div> <p id="clone-help" class="svelte-pudr3t">The repository is cloned inside the selected workspace.</p> <!></form> <section class="repository-details svelte-pudr3t" aria-labelledby="repository-details-title"><h3 id="repository-details-title" class="svelte-pudr3t">Repository details</h3> <!> <!></section></section>`);function co(e,t){ze(t,!0);let n=R(``),r=I(()=>t.selectedWorkspace&&!t.selectedWorkspace.isGitRepository?t.selectedWorkspace:null);function i(e){e.preventDefault(),!(!K(n).trim()||t.cloning)&&t.onclone(K(n).trim())}var a=so(),o=H(B(a),2),s=H(B(o),2);{let e=I(()=>t.selectedWorkspace?.id??null);Ga(s,{get roots(){return t.workspaceTree},get expandedIds(){return t.expandedIds},get selectedId(){return K(e)},label:`Git repository and clone destination`,get onexpandedchange(){return t.onexpandedchange},get onselect(){return t.onselect}})}M(o);var c=H(o,2),l=B(c),u=B(l),d=H(B(u),2),f=B(d,!0);M(d),M(u);var p=H(u,2),m=H(B(p),2);ri(m),M(p);var h=H(p,2),g=B(h,!0);M(h),M(l);var _=H(l,4),v=e=>{var n=Xa(),r=B(n,!0);M(n),U(()=>X(r,t.cloneStatus)),Y(e,n)};Z(_,e=>{t.cloneStatus&&e(v)}),M(c);var y=H(c,2),b=H(B(y),2),x=e=>{var n=Er(),r=V(n),i=e=>{var n=Er(),r=V(n),i=e=>{var n=to(),r=V(n),i=B(r),a=H(B(i),2);Q(a,20,()=>t.summary.branches??[],e=>e,(e,t)=>{var n=Za(),r=B(n,!0);M(n);var i={};U(()=>{X(r,t),i!==(i=t)&&(n.value=(n.__value=t)??``)}),Y(e,n)}),M(a);var o;Zr(a);var s=H(a,2),c=B(s);M(s);var l=H(s,2),u=B(l);M(l);var d=H(l,2),f=B(d),p=B(f,!0);M(f),M(d);var m=H(d,2),h=B(m);M(m),M(i);var g=H(i,2),_=B(g),v=H(_,2),y=H(B(v));M(v),M(g),M(r);var b=H(r,2),x=e=>{var n=Qa(),r=B(n),i=B(r);M(r);var a=H(r,2),o=H(a,2);M(n),U(()=>X(i,`Push HEAD to ${t.summary.upstream??``}?`)),q(`click`,a,function(...e){t.onpush?.apply(this,e)}),q(`click`,o,function(...e){t.oncancelpush?.apply(this,e)}),Y(e,n)};Z(b,e=>{t.confirmingPush&&e(x)});var S=H(b,2),C=e=>{var n=eo(),r=H(B(n),2);Q(r,21,()=>t.summary.commits,e=>e.hash,(e,t)=>{var n=$a(),r=B(n),i=B(r),a=B(i,!0);M(i);var o=H(i),s=B(o,!0);M(o),M(r);var c=H(r,2),l=B(c),u=B(l,!0);M(l);var d=H(l),f=B(d,!0);M(d),M(c),M(n),U(e=>{$(i,`title`,K(t).hash),X(a,K(t).shortHash),X(s,K(t).subject),X(u,K(t).author),$(d,`datetime`,K(t).authoredAt),$(d,`title`,K(t).authoredAt),X(f,e)},[()=>Ya(K(t).authoredAt)]),Y(e,n)}),M(r),M(n),Y(e,n)};Z(S,e=>{t.summary.commits.length&&e(C)}),U(e=>{a.disabled=t.refreshing||t.checkingOut||!t.summary.branches?.length,o!==(o=t.summary.branch??``)&&(a.value=(a.__value=t.summary.branch??``)??``,Xr(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`}`)},[()=>Ja(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,no())};Z(r,e=>{t.summary.available?e(i):e(a,-1)}),Y(e,n)},a=e=>{Y(e,ro())};Z(r,e=>{t.summary?e(i):t.error||e(a,1)}),Y(e,n)},S=e=>{var n=io(),r=V(n),i=B(r),a=B(i,!0);M(i),Me(),M(r),Me(2),U(()=>X(a,t.selectedWorkspace.name)),Y(e,n)},C=e=>{var t=ao();Me(2),Y(e,t)};Z(b,e=>{t.selectedWorkspace?.isGitRepository?e(x):t.selectedWorkspace?e(S,1):e(C,-1)});var w=H(b,2),T=e=>{var n=oo(),r=B(n,!0);M(n),U(()=>X(r,t.error)),Y(e,n)};Z(w,e=>{t.error&&e(T)}),M(y),M(a),U(()=>{X(f,K(r)?`~/${K(r).relativePath}`:`Select a non-repository folder`),h.disabled=t.cloning,X(g,t.cloning?`Cloning…`:`Clone`)}),_r(`submit`,c,i),ci(m,()=>K(n),e=>z(n,e)),Y(e,a),Be()}vr([`change`,`click`]);function lo(e,t,n,r,i){let a=new Set(uo(e).filter(e=>e.isGitRepository).map(e=>e.id)),o=La(t,n),s=o?uo(o.children).filter(e=>e.isGitRepository&&!a.has(e.id)):[],c=fo(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&&Ia(t,u).forEach(e=>d.add(e)),!l&&o&&d.add(o.id),{selectedId:u,expandedIds:d}}function uo(e){let t=[],n=e=>{t.push(e),e.children.forEach(n)};return e.forEach(n),t}function fo(e){return(e.trim().replace(/[?#].*$/,``).replace(/\/+$/,``).split(/[/:]/).at(-1)??``).replace(/\.git$/i,``)}function po(e,t,n,r){return[...e,{id:t,role:`user`,text:n,...r?{occurredAt:r}:{},complete:!0}]}function mo(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 ho(e,t){return e.map(e=>e.id===t?{...e,complete:!0}:e)}function go(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 _o(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 vo(e,t=globalThis.navigator?.clipboard,n=bo){if(!t)return yo(e,n);try{return await t.writeText(e),!0}catch{return yo(e,n)}}function yo(e,t){try{return t(e)}catch{return!1}}function bo(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 xo(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 So(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 Co(e){return e?`Codex is working…`:`Ready.`}function wo(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 To=`settings`,Eo=`drafts`,Do=`cursors`,Oo=`selected-session`;function ko(e=globalThis.indexedDB){if(!e)return Ao;let t=ma(e);return{async readSelectedSession(){try{return await ha(await t,To,Oo)??null}catch{return null}},async saveSelectedSession(e){try{let n=await t;e?await ga(n,To,Oo,e):await _a(n,To,Oo)}catch{}},async readDraft(e){try{return await ha(await t,Eo,e)??``}catch{return``}},async saveDraft(e,n){try{await ga(await t,Eo,e,n)}catch{}},async readCursor(e){try{let n=await ha(await t,Do,e);return typeof n==`number`&&Number.isSafeInteger(n)&&n>=0?n:0}catch{return 0}},async saveCursor(e,n){try{await ga(await t,Do,e,n)}catch{}}}}var Ao={readSelectedSession:async()=>null,saveSelectedSession:async()=>{},readDraft:async()=>``,saveDraft:async()=>{},readCursor:async()=>0,saveCursor:async()=>{}};function jo(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 Mo(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 No(e){let t=/^\/home\/[^/]+/.exec(e)?.[0];if(!t)return e;let n=e.slice(t.length);return n?`~${n}`:`~/`}var Po=J(`<time> </time>`),Fo=J(`<div> </div>`),Io=J(`<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>`),Lo=J(`<section aria-labelledby="open-sessions-title"><h3 id="open-sessions-title">Open sessions</h3> <ul class="session-list svelte-hxb22h" aria-label="Open sessions"></ul></section>`),Ro=J(`<li class="managed-session svelte-hxb22h"><div class="session-actions svelte-hxb22h"><button type="button">Open</button> <button type="button">Forget</button></div> <div class="session-details svelte-hxb22h"><!> <div class="workspace-path svelte-hxb22h"> </div></div></li>`),zo=J(`<ul class="session-list svelte-hxb22h" aria-label="Saved sessions"></ul>`),Bo=J(`<p>No saved sessions yet.</p>`),Vo=J(`<li class="recent-session svelte-hxb22h"><div class="session-details svelte-hxb22h"><!> <div class="workspace-path svelte-hxb22h"> </div></div> <div class="session-actions svelte-hxb22h"><button type="button">Open</button> <button type="button">Copy</button></div></li>`),Ho=J(`<ul class="session-list recent-session-list svelte-hxb22h" aria-label="Recent sessions"></ul>`),Uo=J(`<p>No other recent Codex sessions found.</p>`),Wo=J(`<section aria-labelledby="sessions-title"><h2 id="sessions-title" class="visually-hidden">Sessions</h2> <!> <!> <form><section class="session-base svelte-hxb22h" aria-labelledby="session-base-title"><div class="session-base-heading svelte-hxb22h"><h3 id="session-base-title" class="svelte-hxb22h">Session base</h3> <p class="svelte-hxb22h">Select the folder or repository Codex should use as its working directory.</p></div> <div class="tree-panel svelte-hxb22h"><!></div></section> <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 Go(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=>!K(n).some(t=>t.threadId===e.id))),a=I(()=>La(t.workspaceTree,t.workspaceId));var o=Wo(),s=H(B(o),2),c=e=>{var r=Lo(),i=H(B(r),2);Q(i,21,()=>K(n),e=>e.id,(e,n)=>{let r=I(()=>Mo(K(n)));var i=Io(),a=B(i),o=B(a);M(a);var s=H(a,2),c=B(s),l=e=>{var t=Po(),n=B(t,!0);M(t),U((e,r)=>{$(t,`datetime`,e),X(n,r)},[()=>new Date(K(r).updatedAt).toISOString(),()=>jo(K(r).updatedAt)]),Y(e,t)},u=e=>{var t=Fo(),n=B(t,!0);M(t),U(e=>X(n,e),[()=>jo(null)]),Y(e,t)};Z(c,e=>{K(r).updatedAt===null?e(u,-1):e(l)});var d=H(c,2),f=B(d,!0);M(d),M(s),M(i),U(e=>X(f,e),[()=>No(K(r).workspacePath)]),q(`click`,o,()=>t.onclose(K(n).id)),Y(e,i)}),M(i),M(r),Y(e,r)};Z(s,e=>{K(n).length&&e(c)});var l=H(s,2),u=e=>{var n=zo();Q(n,21,()=>K(r),e=>e.id,(e,n)=>{let r=I(()=>Mo(K(n)));var i=Ro(),a=B(i),o=B(a),s=H(o,2);M(a);var c=H(a,2),l=B(c),u=e=>{var t=Po(),n=B(t,!0);M(t),U((e,r)=>{$(t,`datetime`,e),X(n,r)},[()=>new Date(K(r).updatedAt).toISOString(),()=>jo(K(r).updatedAt)]),Y(e,t)},d=e=>{var t=Fo(),n=B(t,!0);M(t),U(e=>X(n,e),[()=>jo(null)]),Y(e,t)};Z(l,e=>{K(r).updatedAt===null?e(d,-1):e(u)});var f=H(l,2),p=B(f,!0);M(f),M(c),M(i),U(e=>X(p,e),[()=>No(K(r).workspacePath)]),q(`click`,o,()=>t.onopen(K(n).id)),q(`click`,s,()=>t.onforget(K(n).id)),Y(e,i)}),M(n),Y(e,n)},d=e=>{Y(e,Bo())};Z(l,e=>{K(r).length?e(u):K(n).length||e(d,1)});var f=H(l,2),p=B(f),m=H(B(p),2),h=B(m);{let e=I(()=>K(a)?.id??null);Ga(h,{get roots(){return t.workspaceTree},get expandedIds(){return t.expandedIds},get selectedId(){return K(e)},get isSelectable(){return Ma.sessionBase},label:`Session base`,get onexpandedchange(){return t.onexpandedchange},onselect:e=>t.onworkspacechange(e.id)})}M(m),M(p);var g=H(p,2),_=B(g),v=H(B(_),2),y=B(v);y.value=y.__value=``;var b=H(y);b.value=b.__value=`read-only`;var x=H(b);x.value=x.__value=`workspace-write`;var S=H(x);S.value=S.__value=`danger-full-access`,M(v);var C;Zr(v),M(_);var w=H(_,2),T=H(B(w),2),ee=B(T);ee.value=ee.__value=`untrusted`;var te=H(ee);te.value=te.__value=`on-request`;var ne=H(te);ne.value=ne.__value=`never`,M(T);var re;Zr(T),M(w);var E=H(w,2),ie=B(E,!0);M(E),M(g),M(f);var ae=H(f,2),oe=H(B(ae),2),se=e=>{var n=Ho();Q(n,21,()=>K(i),e=>e.id,(e,n)=>{var r=Vo(),i=B(r),a=B(i),o=e=>{var t=Po(),r=B(t,!0);M(t),U((e,n)=>{$(t,`datetime`,e),X(r,n)},[()=>new Date(K(n).recencyAt*1e3).toISOString(),()=>jo(K(n).recencyAt*1e3)]),Y(e,t)},s=e=>{var t=Fo(),n=B(t,!0);M(t),U(e=>X(n,e),[()=>jo(null)]),Y(e,t)};Z(a,e=>{K(n).recencyAt===null?e(s,-1):e(o)});var c=H(a,2),l=B(c,!0);M(c),M(i);var u=H(i,2),d=B(u),f=H(d,2);M(u),M(r),U(e=>X(l,e),[()=>No(K(n).cwd)]),q(`click`,d,()=>t.onopenrecent(K(n))),q(`click`,f,()=>t.oncopyresume(K(n).resumeCommand)),Y(e,r)}),M(n),Y(e,n)},ce=e=>{Y(e,Uo())};Z(oe,e=>{K(i).length?e(se):e(ce,-1)}),M(ae),M(o),U(()=>{C!==(C=t.sandbox)&&(v.value=(v.__value=t.sandbox)??``,Xr(v,t.sandbox)),re!==(re=t.approvalPolicy)&&(T.value=(T.__value=t.approvalPolicy)??``,Xr(T,t.approvalPolicy)),E.disabled=!K(a)||t.startingSession,X(ie,t.startingSession?`Starting…`:`New session`)}),_r(`submit`,f,e=>{e.preventDefault(),t.onstart()}),q(`change`,v,e=>t.onsandboxchange(e.currentTarget.value)),q(`change`,T,e=>t.onapprovalpolicychange(e.currentTarget.value)),Y(e,o),Be()}vr([`click`,`change`]);function Ko(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 Jo=J(`<nav class="bottom-navigation" aria-label="Primary"><button>Sess<wbr/>ions</button> <button>Git</button> <button>Chat</button></nav>`);function Yo(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=Jo(),a=B(i);fi(a,e=>n.sessions=e,()=>n?.sessions);var o=H(a,2);fi(o,e=>n.git=e,()=>n?.git);var s=H(o,2);fi(s,e=>n.chat=e,()=>n?.chat),M(i),U(()=>{$(a,`aria-pressed`,t.activeTab===`sessions`),$(o,`aria-pressed`,t.activeTab===`git`),$(s,`aria-pressed`,t.activeTab===`chat`),s.disabled=!t.chatEnabled}),q(`keydown`,a,r),q(`click`,a,()=>t.onselect(`sessions`)),q(`keydown`,o,r),q(`click`,o,()=>t.onselect(`git`)),q(`keydown`,s,r),q(`click`,s,()=>t.onselect(`chat`)),Y(e,i),Be()}vr([`keydown`,`click`]);var Xo=J(`<main class="evidence-mode svelte-y74n0s"><!></main>`),Zo=J(`<!> <!> <!> <!>`,1),Qo=J(`<p>Start a session from the Sessions tab to chat with Codex.</p>`),$o=J(`<section aria-labelledby="chat-title"><h2 id="chat-title" class="visually-hidden">Chat</h2> <!></section>`),es=J(`<main><!> <!> <!></main>`),ts=J(`<!> <!>`,1);function ns(e,t){ze(t,!0);let n=R(`sessions`),r=R(`Loading relay…`),i=R(`system`),a=R(Gt([])),o=R(``),s=R(Gt(new Set)),c=R(null),l=R(Gt([])),u=I(()=>K(l).some(e=>e.id===K(c)&&(e.state===`ready`||e.state===`turnActive`))),d=R(Gt([])),f=R(``),p=R(`on-request`),m=R(null),h=R(!1),g=R(``),_=R(null),v=R(!1),y=R(Gt([])),b=R(Gt([])),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(Gt(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(Gt([])),he=Gt({}),D=_o(),ge=xa(),_e=ko(),ve=Ta(),ye=new URLSearchParams(location.search).get(`tree-evidence`),be=new URLSearchParams(location.search).get(`toast-evidence`);mi(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 la();z(o,Ra(K(o)||null,K(a),e.workspaces,Ma.sessionBase)??``,!0),z(a,e.workspaces,!0),z(s,Na(K(a)),!0),z(ie,Na(K(a)),!0);let t=await _e.readSelectedSession();z(c,e.sessions.some(e=>e.id===t)?t:e.sessions[0]?.id??null,!0),K(c)&&z(x,await _e.readCursor(K(c)),!0),K(c)&&z(g,await _e.readDraft(K(c)),!0),K(c)&&z(y,await ge.read(K(c)),!0),z(l,e.sessions,!0),z(me,K(l).find(e=>e.id===K(c))?.pendingInteractions??[],!0),we(),z(_,K(l).find(e=>e.id===K(c))?.activeTurnId??null,!0),z(r,K(c)?Co(K(_)):`Choose a workspace and start a session.`,!0),K(c)&&(await A(K(c)),qe(K(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)}hi(()=>{C&&clearTimeout(C),w&&clearTimeout(w),T&&clearInterval(T),document.removeEventListener(`visibilitychange`,j),window.removeEventListener(`focus`,j),S?.close()});async function Se(){if(!K(o)||K(h))return;let e=Ko({workspaceId:K(o),profile:`default`,profileState:`ok`});if(e.profile){z(r,e.profile,!0);return}z(m,K(m)??xo(),!0),z(h,!0),z(r,`Starting session…`);try{let e=await D.startSession(K(o),{sandbox:K(f)||void 0,approvalPolicy:K(p)},K(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=K(l).find(t=>t.id===e);if(t&&t.state!==`ready`&&t.state!==`turnActive`){let t=await D.restoreSession(e);z(l,K(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(_,K(l).find(t=>t.id===e)?.activeTurnId??null,!0),z(me,K(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),K(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),K(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 vo(e)?`Resume command copied.`:`Could not copy the resume command.`,!0)}async function k(){if(!K(c)||!K(g).trim()||K(_)||K(v))return;let e=K(g).trim();z(v,!0);try{let t=await D.startTurn(K(c),e);z(_,t.activeTurnId??null,!0),z(y,po(K(y),`user-${t.activeTurnId??Date.now().toString()}`,e,Date.now()),!0),Ge(K(c)),z(g,``),_e.saveDraft(K(c),``),z(r,Co(K(_)),!0)}catch(e){z(r,P(e,`MESSAGE_SEND_FAILED`),!0)}finally{z(v,!1)}}async function Ae(){if(!(!K(c)||!K(_)))try{await D.interruptTurn(K(c),K(_)),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(K(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=K(y).filter(e=>!e.complete);z(y,[...i,...a],!0),Ge(e);let o=n.items.flatMap(e=>{let t=ua(e);return t?[t]:[]});z(b,[...o,...K(b).filter(e=>!o.some(t=>t.id===e.id))],!0),`activeTurnId`in n&&(z(_,n.activeTurnId??null,!0),z(l,K(l).map(t=>t.id===e?{...t,activeTurnId:K(_)}:t),!0)),z(x,Math.max(K(x),n.currentSequence??t),!0),_e.saveCursor(e,K(x)),z(r,Co(K(_)),!0)}function j(){K(n)!==`chat`||!K(c)||document.visibilityState!==`visible`||ee||(ee=!0,A(K(c)).catch(()=>void 0).finally(()=>{ee=!1}))}function je(e){e===`chat`&&!K(u)||(z(n,e,!0),e===`chat`&&(j(),Me()),e===`git`&&K(E)&&Ne(K(E)),e===`sessions`&&O())}function Me(){requestAnimationFrame(()=>window.scrollTo({top:document.documentElement.scrollHeight}))}async function Ne(e=K(E)){let t=e?La(K(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&&K(E)===e&&z(re,t,!0)}catch(t){if(n!==pe||K(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=K(E);if(!(!e||!La(K(a),e)?.isGitRepository)){z(de,K(de)??xo(),!0),z(oe,!0),z(le,null);try{await D.pullGit(e,K(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(K(ce))return;let t=K(E)?La(K(a),K(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 la(),r=lo(K(a),t.workspaces,n,e,K(ie));z(o,Ra(K(o)||null,K(a),t.workspaces,Ma.sessionBase)??``,!0),z(a,t.workspaces,!0),z(E,r.selectedId,!0),z(ie,r.expandedIds,!0),K(E)&&La(K(a),K(E))?.isGitRepository?await Ne(K(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=K(E);if(!(!t||e===K(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=K(E);if(e){z(fe,K(fe)??xo(),!0),z(le,null);try{await D.pushGit(e,K(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){K(c)&&(await D.respondInteraction(K(c),e,{decision:t}),z(me,K(me).filter(t=>t.requestId!==e),!0))}async function Ve(e){if(!K(c))return;let t=Ci(Si(e.payload).map(e=>({id:e.id,answer:he[e.id]??``})));await D.respondInteraction(K(c),e.requestId,t),z(me,K(me).filter(t=>t.requestId!==e.requestId),!0)}async function He(e){if(!K(c))return;let t=go(e.payload);if(!t){z(r,`Codex sent an invalid permission request.`);return}await D.respondInteraction(K(c),e.requestId,t),z(me,K(me).filter(t=>t.requestId!==e.requestId),!0)}function Ue(e,t){he[e]=t}function We(e){z(g,e,!0),K(c)&&_e.saveDraft(K(c),e)}function Ge(e){ge.write(e,K(y))}function Ke(e){return e instanceof Error?e.message:`Unknown relay error.`}function P(e,t){let n=Ca(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=${K(x)}`),S.onopen=()=>{t!==ne||K(c)!==e||(z(r,Co(K(_)),!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;K(me).some(t=>t.requestId===e.requestId)||z(me,[...K(me),e],!0)}if(n.type===`relay.event`&&n.event?.type===`turnCompleted`&&(z(_,null),z(r,Co(K(_)),!0),z(y,ho(K(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=K(_);z(_,typeof n.activeTurnId==`string`?n.activeTurnId:null,!0),i&&!K(_)&&z(r,Co(K(_)),!0),z(l,K(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,K(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,[...K(b).filter(t=>t.id!==e.id),e],!0)}z(x,So(K(x),n,t=>{z(y,mo(K(y),`assistant-${e}`,t,Date.now()),!0),Ge(e)},()=>{A(e)}),!0),_e.saveCursor(e,K(x))},S.onclose=()=>{t!==ne||K(c)!==e||(w&&clearTimeout(w),z(r,`Connection interrupted. Reconnecting…`),C=setTimeout(()=>qe(e),wo(te++)))}}var F=ts();Vr(`y74n0s`,e=>{xn(()=>{Yt.title=`Gestalt Mobile`})});var Je=V(F),Ye=e=>{ja(e,{get variant(){return be}})},Xe=e=>{var t=Xo();qa(B(t),{get context(){return ye}}),M(t),Y(e,t)},Ze=e=>{var t=es(),m=B(t);{let e=I(()=>K(n)===`chat`?No(K(l).find(e=>e.id===K(c))?.workspacePath??``):null);vi(m,{get theme(){return K(i)},get sessionPath(){return K(e)},onthemechange:xe})}var x=H(m,2),S=e=>{var t=$o(),n=H(B(t),2),i=e=>{var t=Zo(),n=V(t);ca(n,{get messages(){return K(y)}});var i=H(n,2);xi(i,{get activities(){return K(b)}});var a=H(i,2);Mi(a,{get interactions(){return K(me)},get answers(){return he},onanswer:Ue,onuserinput:e=>void Ve(e),onpermission:e=>void He(e),ondecision:(e,t)=>void Re(e,t)}),Li(H(a,2),{get status(){return K(r)},get message(){return K(g)},get activeTurnId(){return K(_)},get starting(){return K(v)},onchange:We,onsend:()=>void k(),oninterrupt:()=>void Ae()}),Y(e,t)},a=e=>{Y(e,Qo())};Z(n,e=>{K(c)?e(i):e(a,-1)}),M(t),Y(e,t)},C=e=>{{let t=I(()=>K(E)?La(K(a),K(E))??null:null);co(e,{get workspaceTree(){return K(a)},get selectedWorkspace(){return K(t)},get expandedIds(){return K(ie)},get summary(){return K(re)},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 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=>{Go(e,{get sessions(){return K(l)},get recentSessions(){return K(d)},get workspaceTree(){return K(a)},get workspaceId(){return K(o)},get expandedIds(){return K(s)},get sandbox(){return K(f)},get approvalPolicy(){return K(p)},get startingSession(){return K(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()})};Z(x,e=>{K(n)===`chat`?e(S):K(n)===`git`?e(C,1):e(w,-1)}),Yo(H(x,2),{get activeTab(){return K(n)},get chatEnabled(){return K(u)},onselect:je}),M(t),Y(e,t)};Z(Je,e=>{be===`error`||be===`stacked`?e(Ye):ye===`sessions`||ye===`git`?e(Xe,1):e(Ze,-1)});var Qe=H(Je,2),$e=e=>{ka(e,{get queue(){return ve}})};Z(Qe,e=>{be!==`error`&&be!==`stacked`&&e($e)}),Y(e,F),Be()}var rs=document.getElementById(`app`);if(!rs)throw Error(`Missing application mount target`);Dr(ns,{target:rs});
|
package/dist/client/index.html
CHANGED
|
@@ -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-
|
|
14
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
13
|
+
<script type="module" crossorigin src="/assets/index-G3T1Xsnq.js"></script>
|
|
14
|
+
<link rel="stylesheet" crossorigin href="/assets/index-Ce0oT8h3.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
|
|
113
|
-
registerGetGitSummary(app, {
|
|
114
|
-
|
|
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
|
-
|
|
119
|
+
workspaces: deps.gitSummary.workspaces,
|
|
117
120
|
inspect: deps.gitSummary.inspectForPush ?? deps.gitSummary.inspect,
|
|
118
121
|
push: deps.gitSummary.push,
|
|
119
|
-
idempotency: deps.
|
|
122
|
+
idempotency: deps.gitSummary.idempotency,
|
|
120
123
|
});
|
|
121
|
-
if (deps.gitSummary
|
|
124
|
+
if (deps.gitSummary)
|
|
122
125
|
registerRefreshGit(app, {
|
|
123
|
-
|
|
126
|
+
workspaces: deps.gitSummary.workspaces,
|
|
124
127
|
refresh: deps.gitSummary.refresh,
|
|
125
|
-
idempotency: deps.
|
|
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
|
-
|
|
136
|
+
workspaces: deps.gitSummary.workspaces,
|
|
131
137
|
checkout: deps.gitSummary.checkout,
|
|
132
138
|
});
|
|
133
139
|
}
|
|
134
140
|
if (deps.gitSummary?.clone)
|
|
135
|
-
registerCloneRepository(app, {
|
|
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.
|
|
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:
|
|
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,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/
|
|
10
|
-
const
|
|
11
|
-
if (!
|
|
12
|
-
return reply.code(
|
|
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(
|
|
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.
|
|
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/
|
|
8
|
-
const
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
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/
|
|
8
|
-
const
|
|
9
|
-
if (!
|
|
10
|
-
return reply.code(
|
|
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(
|
|
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/
|
|
10
|
-
const id = request.params.
|
|
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
|
|
17
|
-
if (!
|
|
18
|
-
return reply.code(
|
|
19
|
-
const summary = await deps.inspect(
|
|
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(
|
|
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/
|
|
9
|
-
const id = request.params.
|
|
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
|
|
16
|
-
if (!
|
|
17
|
-
return reply.code(
|
|
18
|
-
await deps.refresh(
|
|
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 }) => ({
|
|
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
|
}
|
|
@@ -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.
|
|
15
|
+
return [(await this.tree()).option];
|
|
16
16
|
}
|
|
17
17
|
async resolve(id) {
|
|
18
|
-
const found = (await this.
|
|
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.
|
|
21
|
+
return { id: found.option.id, name: found.option.name, realPath: found.realPath };
|
|
22
22
|
}
|
|
23
|
-
async
|
|
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
|
-
|
|
26
|
-
|
|
27
|
-
|
|
35
|
+
return ((await this.visit({
|
|
36
|
+
root,
|
|
37
|
+
realPath: root,
|
|
28
38
|
name: '/',
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
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
|
-
|
|
66
|
+
continue;
|
|
37
67
|
try {
|
|
38
|
-
const
|
|
39
|
-
const info = await stat(
|
|
40
|
-
if (!info.isDirectory() ||
|
|
41
|
-
|
|
42
|
-
const
|
|
43
|
-
|
|
44
|
-
.
|
|
45
|
-
|
|
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
|
-
|
|
49
|
-
|
|
50
|
-
};
|
|
77
|
+
relativePath: childRelativePath,
|
|
78
|
+
visited: input.visited,
|
|
79
|
+
});
|
|
80
|
+
if (visitedChild)
|
|
81
|
+
children.push(visitedChild);
|
|
51
82
|
}
|
|
52
83
|
catch {
|
|
53
|
-
|
|
84
|
+
// Entries may vanish or become unreadable while the tree is being discovered.
|
|
54
85
|
}
|
|
55
|
-
}
|
|
56
|
-
return
|
|
57
|
-
|
|
58
|
-
|
|
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,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}}
|