gestalt-mobile 0.3.1 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +23 -0
- package/dist/client/assets/index-B3MMCSoP.css +1 -0
- package/dist/client/assets/index-CR8XQoHz.js +11 -0
- package/dist/client/index.html +2 -2
- package/dist/server/server/app.js +8 -0
- package/dist/server/server/cli.js +47 -0
- package/dist/server/server/composition.js +26 -1
- package/dist/server/server/config.js +2 -1
- package/dist/server/server/features/skills/application/ports.js +6 -0
- package/dist/server/server/features/skills/list-available/endpoint.js +59 -0
- package/dist/server/server/features/skills/list-profiles/endpoint.js +28 -0
- package/dist/server/server/features/skills/model/errors.js +14 -0
- package/dist/server/server/features/skills/model/skill-profile.js +157 -0
- package/dist/server/server/features/skills/replace-profile/endpoint.js +29 -0
- package/dist/server/server/platform/catalog/profile-command.js +5 -2
- package/dist/server/server/platform/codex/codex-process-launcher.js +1 -1
- package/dist/server/server/platform/codex/session-runtime.js +5 -3
- package/dist/server/server/platform/skills/codex-skill-catalog.js +73 -0
- package/dist/server/server/platform/skills/filesystem-skill-profile-store.js +95 -0
- package/package.json +2 -1
- package/dist/client/assets/index-BvGdtY1N.js +0 -11
- package/dist/client/assets/index-CQd1grXV.css +0 -1
package/README.md
CHANGED
|
@@ -31,6 +31,27 @@ The command prints the loopback URL when it is ready. Open that URL in a
|
|
|
31
31
|
browser. Press Ctrl-C, or send SIGINT or SIGTERM, to stop the HTTP server,
|
|
32
32
|
active Codex subprocesses, and database cleanly.
|
|
33
33
|
|
|
34
|
+
## Skill profiles
|
|
35
|
+
|
|
36
|
+
Global profiles live in `~/.gestalt/skill-profiles/<name>.yml` and use version 1 YAML:
|
|
37
|
+
|
|
38
|
+
```yaml
|
|
39
|
+
version: 1
|
|
40
|
+
name: focused
|
|
41
|
+
skills:
|
|
42
|
+
- name: typescript-advanced-types
|
|
43
|
+
path: /absolute/path/to/SKILL.md
|
|
44
|
+
enabled: true
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
Use `gestalt-mobile --skills focused` to apply that profile to every Codex child,
|
|
48
|
+
or `gestalt-mobile --skills list` to inspect saved profiles and their enabled
|
|
49
|
+
skill paths without starting the server. Without `--skills`, a workspace
|
|
50
|
+
`gestalt-skills.yml` is used when present; otherwise Codex-native selection is
|
|
51
|
+
preserved. Explicit profiles take precedence over project defaults, which take
|
|
52
|
+
precedence over native configuration. Gestalt Mobile never rewrites Codex
|
|
53
|
+
configuration or skill files.
|
|
54
|
+
|
|
34
55
|
## Command-line options
|
|
35
56
|
|
|
36
57
|
| Option | Default | Purpose |
|
|
@@ -39,6 +60,8 @@ active Codex subprocesses, and database cleanly.
|
|
|
39
60
|
| `--host <address>` | `127.0.0.1` | HTTP listen address |
|
|
40
61
|
| `--port <number>` | `3000` | HTTP listen port, from 1 through 65535 |
|
|
41
62
|
| `--data-dir <path>` | XDG state directory | Directory containing `relay.sqlite` |
|
|
63
|
+
| `--skills <profile>` | | Apply a saved global profile to every session |
|
|
64
|
+
| `--skills list` | | List global profiles without starting the server |
|
|
42
65
|
| `--help` | | Print usage without starting the application |
|
|
43
66
|
| `--version` | | Print the installed package version |
|
|
44
67
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.session-path.svelte-t9laac{text-align:center;text-overflow:ellipsis;white-space:nowrap;min-inline-size:0;margin:0;overflow:hidden}form.svelte-1264sfg>[role=status]:where(.svelte-1264sfg){text-align:start;margin-block:1rem .35rem}.prompt-row.svelte-1264sfg{align-items:end;gap:.5rem;display:flex}textarea.svelte-1264sfg{resize:vertical;flex:auto;min-block-size:2.75rem}.prompt-row.svelte-1264sfg button:where(.svelte-1264sfg){flex:none;place-items:center;min-block-size:3rem;inline-size:3rem;padding:0;display:grid}.prompt-row.svelte-1264sfg svg:where(.svelte-1264sfg){fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;block-size:1.35rem;inline-size:1.35rem}.block-cursor.svelte-1264sfg{vertical-align:-.1em;background:currentColor;block-size:1em;inline-size:.55ch;animation:1s steps(2,start) infinite svelte-1264sfg-blink;display:inline-block}@media (prefers-reduced-motion:reduce){.block-cursor.svelte-1264sfg{animation:none}}@keyframes svelte-1264sfg-blink{50%{opacity:0}}ol.svelte-1im954t{inline-size:100%;margin:0;padding:0;list-style:none}li.svelte-1im954t{box-sizing:border-box;white-space:pre-wrap;overflow-wrap:anywhere;inline-size:100%;margin-block-end:0}li.svelte-1im954t+li:where(.svelte-1im954t){margin-block-start:1rem}.prompt-turn.svelte-1im954t{background:color-mix(in srgb, Canvas 94%, CanvasText);border-radius:.375rem;padding:.5rem .625rem}.entry-heading.svelte-1im954t{align-items:baseline;gap:.75rem;display:flex}time.svelte-1im954t{color:#666;white-space:nowrap;margin-inline-start:auto;font-size:.875em}.commentary-toggle.svelte-1im954t{color:#666;background:0 0;border:0;min-block-size:1.5rem;padding:0 .125rem;font-size:.875em}.commentary-content.svelte-1im954t{margin-block:.25rem .5rem}.entry-content.svelte-1im954t{margin-block:.125rem 0;margin-inline:0}pre.svelte-1im954t,code.svelte-1im954t{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace}pre.svelte-1im954t{white-space:pre;overflow-x:auto}.table-scroll.svelte-1im954t{margin-block:.75rem;overflow-x:auto}table.svelte-1im954t{border-collapse:collapse;white-space:normal;width:max-content;min-width:100%}th.svelte-1im954t,td.svelte-1im954t{text-align:left;vertical-align:top;padding:.25rem .5rem}th.svelte-1im954t{font-weight:600}.toast-viewport.svelte-1a0rutm{z-index:10;pointer-events:none;gap:.5rem;max-block-size:calc(100dvh - 7rem);inline-size:min(24rem,100vw - 1.5rem);display:grid;position:fixed;inset-block-start:calc(1rem + env(safe-area-inset-top));inset-inline-end:max(.75rem, env(safe-area-inset-right));overflow-y:auto}.toast.svelte-1a0rutm{box-sizing:border-box;color:canvastext;border:1px solid canvastext;min-inline-size:0;box-shadow:0 .4rem 1.2rem color-mix(in srgb, CanvasText 24%, transparent);pointer-events:auto;background:canvas;border-inline-start-width:.35rem;border-radius:.55rem;grid-template-columns:auto minmax(0,1fr) 44px;align-items:start;gap:.6rem;padding:.65rem;display:grid}.toast.error.svelte-1a0rutm{border-inline-start-style:double}.toast-symbol.svelte-1a0rutm{box-sizing:border-box;border:2px solid;border-radius:50%;place-items:center;block-size:1.6rem;inline-size:1.6rem;font-weight:800;line-height:1;display:grid}.toast-copy.svelte-1a0rutm{overflow-wrap:anywhere;gap:.15rem;min-inline-size:0;padding-block:.1rem;display:grid}.toast-copy.svelte-1a0rutm strong:where(.svelte-1a0rutm){text-transform:capitalize}.toast-copy.svelte-1a0rutm small:where(.svelte-1a0rutm){opacity:.72}button.svelte-1a0rutm{min-block-size:44px;inline-size:44px;color:inherit;font:inherit;background:0 0;border:0;border-radius:.35rem;place-items:center;padding:0;font-size:1.5rem;display:grid}button.svelte-1a0rutm:hover{background:color-mix(in srgb, CanvasText 10%, transparent)}@media (width<=24rem){.toast.svelte-1a0rutm{grid-template-columns:minmax(0,1fr) 44px;gap:.25rem;max-block-size:5rem;padding:.35rem;overflow-y:auto}.toast-symbol.svelte-1a0rutm{display:none}.toast-copy.svelte-1a0rutm strong:where(.svelte-1a0rutm){clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;block-size:1px;inline-size:1px;padding:0;position:absolute;overflow:hidden}}@media (forced-colors:active){.toast.svelte-1a0rutm,.toast-symbol.svelte-1a0rutm{border-color:canvastext}}.evidence-page.svelte-1j55xyh{box-sizing:border-box;min-block-size:100dvh;inline-size:100%;padding:1rem 1rem 7rem}h1.svelte-1j55xyh{margin-block:0 .5rem}.evidence-composer.svelte-1j55xyh{position:fixed;inset-block-end:2.75rem;inset-inline:1rem}.evidence-prompt.svelte-1j55xyh{box-sizing:border-box;inline-size:100%;margin-block-start:.35rem;display:block}.evidence-nav.svelte-1j55xyh{padding:.5rem 1rem calc(.5rem + env(safe-area-inset-bottom));background:canvas;border-block-start:1px solid canvastext;grid-template-columns:repeat(3,minmax(0,1fr));gap:.5rem;display:grid;position:fixed;inset-block-end:0;inset-inline:0}.evidence-nav.svelte-1j55xyh button:where(.svelte-1j55xyh){text-overflow:ellipsis;min-block-size:44px;min-inline-size:0;overflow:hidden}@media (width<=24rem){.evidence-page.svelte-1j55xyh{padding:.5rem .5rem 7rem}.evidence-composer.svelte-1j55xyh{inset-inline:.5rem}}.filesystem-tree.svelte-6z3q4v{inline-size:100%;max-inline-size:100%;display:grid;overflow-x:clip}.tree-row.svelte-6z3q4v{min-inline-size:0;align-items:stretch;padding-inline-start:min(calc(var(--tree-level) * .75rem), 4.5rem);display:flex}.disclosure.svelte-6z3q4v,.disclosure-spacer.svelte-6z3q4v{flex:0 0 44px;min-block-size:44px;inline-size:44px}.disclosure.svelte-6z3q4v{color:inherit;font:inherit;background:0 0;border:0;border-radius:.35rem;place-items:center;padding:0;font-size:1.25rem;font-weight:700;display:grid}.disclosure.svelte-6z3q4v:hover{background:color-mix(in srgb, CanvasText 10%, transparent)}.tree-item.svelte-6z3q4v{min-block-size:44px;min-inline-size:0;color:inherit;font:inherit;text-align:start;background:0 0;border:1px solid #0000;border-radius:.35rem;flex:auto;align-items:center;gap:.5rem;padding:.3rem .5rem;display:flex;overflow:hidden}.tree-item.svelte-6z3q4v:hover{background:color-mix(in srgb, CanvasText 8%, transparent)}.tree-item.selected.svelte-6z3q4v{background:color-mix(in srgb, Highlight 16%, Canvas);border-color:currentColor;font-weight:650}.tree-item[aria-disabled=true].svelte-6z3q4v{opacity:.58}.tree-item.repository.svelte-6z3q4v{border-inline-start-width:3px}.selection-mark.svelte-6z3q4v{text-align:center;flex:0 0 1rem;inline-size:1rem}.node-copy.svelte-6z3q4v{flex:auto;min-inline-size:0;display:grid}.node-name.svelte-6z3q4v,.node-path.svelte-6z3q4v{text-overflow:ellipsis;white-space:nowrap;min-inline-size:0;overflow:hidden}.node-path.svelte-6z3q4v{opacity:.72;font-size:.75em;font-weight:400}.repository-badge.svelte-6z3q4v{border:1px solid;border-radius:999px;flex:none;padding:.1rem .35rem;font-size:.72em;font-weight:700;line-height:1.2}@media (width<=24rem){.tree-row.svelte-6z3q4v{padding-inline-start:min(calc(var(--tree-level) * .25rem), 1.5rem)}.tree-item.svelte-6z3q4v{gap:.35rem;padding-inline:.35rem}.repository-badge.svelte-6z3q4v{display:none}}@media (forced-colors:active){.tree-item.selected.svelte-6z3q4v,.tree-item.repository.svelte-6z3q4v,.repository-badge.svelte-6z3q4v{border-color:canvastext}}.evidence-shell.svelte-1d6w4ti{box-sizing:border-box;inline-size:min(100%,48rem);min-inline-size:0;margin-inline:auto;padding:1rem}.eyebrow.svelte-1d6w4ti{letter-spacing:.08em;text-transform:uppercase;margin:0;font-size:.8rem;font-weight:750}h1.svelte-1d6w4ti{margin-block:.25rem .5rem;font-size:clamp(1.35rem,6vw,2rem);line-height:1.15}.instructions.svelte-1d6w4ti{max-inline-size:42rem;margin-block:0 1rem}.tree-panel.svelte-1d6w4ti{border:1px solid color-mix(in srgb, CanvasText 35%, transparent);border-radius:.6rem;min-inline-size:0;padding:.5rem}@media (width<=24rem){.evidence-shell.svelte-1d6w4ti{padding:.5rem}.tree-panel.svelte-1d6w4ti{padding:.25rem}}.git-view.svelte-pudr3t{gap:1.5rem;inline-size:100%;min-inline-size:0;display:grid}.git-tree.svelte-pudr3t,.repository-details.svelte-pudr3t{min-inline-size:0}.section-heading.svelte-pudr3t h3:where(.svelte-pudr3t),.repository-details.svelte-pudr3t h3:where(.svelte-pudr3t){margin-block:0 .35rem}.section-heading.svelte-pudr3t p:where(.svelte-pudr3t){color:color-mix(in srgb, CanvasText 70%, Canvas);margin-block:0 .75rem}.clone-form.svelte-pudr3t{gap:.35rem;min-inline-size:0;display:grid}.clone-controls.svelte-pudr3t{grid-template-columns:minmax(10rem,.45fr) minmax(0,1fr) auto;align-items:end;gap:.5rem;display:grid}.clone-field.svelte-pudr3t{gap:.35rem;min-inline-size:0;display:grid}.field-label.svelte-pudr3t{font-weight:600}.clone-destination.svelte-pudr3t output:where(.svelte-pudr3t){overflow-wrap:anywhere;border:1px solid color-mix(in srgb, CanvasText 35%, Canvas);border-radius:.35rem;min-block-size:2.75rem;padding:.65rem .75rem}.clone-controls.svelte-pudr3t button:where(.svelte-pudr3t){min-inline-size:5.75rem}.clone-form.svelte-pudr3t p:where(.svelte-pudr3t){color:color-mix(in srgb, CanvasText 70%, Canvas);margin:0;font-size:.875rem}.clone-status.svelte-pudr3t{font-weight:600;color:canvastext!important}.git-overview.svelte-pudr3t{grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:1rem;display:grid}.git-status.svelte-pudr3t p:where(.svelte-pudr3t){margin-block:.5rem}.git-actions.svelte-pudr3t{gap:.5rem;display:grid}.git-actions.svelte-pudr3t button:where(.svelte-pudr3t){min-inline-size:6rem}.commit-history.svelte-pudr3t{margin-block-start:2rem}.commit-history.svelte-pudr3t h3:where(.svelte-pudr3t){margin-block-end:.75rem}.commit-list.svelte-pudr3t{gap:.5rem;margin:0;padding:0;list-style:none;display:grid}.commit-entry.svelte-pudr3t{border-block-end:1px solid color-mix(in srgb, CanvasText 20%, Canvas);gap:.35rem;min-inline-size:0;padding:.8rem 0;display:grid}.commit-subject.svelte-pudr3t,.commit-meta.svelte-pudr3t{gap:.65rem;min-inline-size:0;display:flex}.commit-subject.svelte-pudr3t{overflow-wrap:anywhere;align-items:baseline;font-weight:600}.commit-subject.svelte-pudr3t code:where(.svelte-pudr3t){color:color-mix(in srgb, CanvasText 75%, Canvas);flex:none;font-size:.875em}.commit-meta.svelte-pudr3t{color:color-mix(in srgb, CanvasText 70%, Canvas);flex-wrap:wrap;justify-content:space-between;font-size:.875rem}.commit-meta.svelte-pudr3t time:where(.svelte-pudr3t){overflow-wrap:anywhere;min-inline-size:0;max-inline-size:100%}@media (width<=28rem){.clone-controls.svelte-pudr3t{grid-template-columns:1fr}.clone-controls.svelte-pudr3t button:where(.svelte-pudr3t){inline-size:100%}}.session-list.svelte-hxb22h{gap:1rem;inline-size:100%;margin-block:0 1.5rem;padding-inline:0;list-style:none;display:grid}.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%}}.skills-view.svelte-dg6sjj{min-inline-size:0;padding:1rem max(1rem, env(safe-area-inset-right)) calc(5rem + env(safe-area-inset-bottom)) max(1rem, env(safe-area-inset-left))}.intro.svelte-dg6sjj,.save-intent.svelte-dg6sjj,.summary.svelte-dg6sjj{max-inline-size:70ch}form.svelte-dg6sjj,.field-grid.svelte-dg6sjj{gap:.65rem;display:grid}.field-grid.svelte-dg6sjj{grid-template-columns:minmax(0,1fr)}label.svelte-dg6sjj{font-weight:650}select.svelte-dg6sjj,input.svelte-dg6sjj,button.svelte-dg6sjj{box-sizing:border-box;min-block-size:3rem;inline-size:100%;font:inherit}input.svelte-dg6sjj,select.svelte-dg6sjj{padding-inline:.7rem;font-size:1rem}button.svelte-dg6sjj{padding-inline:1rem}.notice.svelte-dg6sjj{border-inline-start:.3rem solid #976600;padding-inline-start:.7rem}.error.svelte-dg6sjj{color:#8a1c14;border-inline-start:.3rem solid #b42318;padding-inline-start:.7rem}.skill-list.svelte-dg6sjj{gap:.75rem;padding:0;list-style:none;display:grid}.skill-card.svelte-dg6sjj{border:1px solid color-mix(in srgb, var(--brand-color,currentColor) 35%, transparent);border-radius:.5rem;min-inline-size:0;padding:.75rem}.skill-toggle.svelte-dg6sjj{flex-wrap:wrap;align-items:center;gap:.65rem;min-block-size:3rem;display:flex}.skill-toggle.svelte-dg6sjj>span:where(.svelte-dg6sjj){overflow-wrap:anywhere;min-inline-size:0}.skill-toggle.svelte-dg6sjj input:where(.svelte-dg6sjj){flex:none;min-block-size:1.25rem;inline-size:1.25rem}.state.svelte-dg6sjj{margin-inline-start:auto;font-weight:500}details.svelte-dg6sjj{overflow-wrap:anywhere}summary.svelte-dg6sjj{cursor:pointer;align-content:center;min-block-size:3rem}dl.svelte-dg6sjj{grid-template-columns:minmax(7rem,auto) minmax(0,1fr);gap:.45rem .75rem;display:grid}dt.svelte-dg6sjj{font-weight:650}dd.svelte-dg6sjj{min-inline-size:0;margin:0}dd.svelte-dg6sjj ul:where(.svelte-dg6sjj){margin:0;padding-inline-start:1.25rem}.path.svelte-dg6sjj{overflow-wrap:anywhere}.svelte-dg6sjj:where(button:where(.svelte-dg6sjj),input:where(.svelte-dg6sjj),select:where(.svelte-dg6sjj),summary:where(.svelte-dg6sjj)):focus-visible{outline-offset:2px;outline:3px solid #1261a0}@media (prefers-color-scheme:dark){.error.svelte-dg6sjj{color:#ffb4ab}.notice.svelte-dg6sjj{color:#ffd8a8}}@media (width>=42rem){.field-grid.svelte-dg6sjj{grid-template-columns:minmax(10rem,1fr) minmax(0,2fr);align-items:center}}@media (width<=30rem){dl.svelte-dg6sjj{grid-template-columns:1fr;gap:.2rem}}.chat-view.svelte-y74n0s{margin-inline:calc(.25rem - var(--page-inline-padding))}.evidence-mode.svelte-y74n0s{box-sizing:border-box;inline-size:100%;min-inline-size:0;padding:0}:root{--bottom-navigation-clearance:calc(4rem + env(safe-area-inset-bottom));--sticky-header-clearance:calc(5rem + env(safe-area-inset-top));--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;font-family:system-ui,sans-serif}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}}:root[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}body{min-block-size:100dvh;margin:0}.visually-hidden{clip-path:inset(50%)!important;white-space:nowrap!important;border:0!important;block-size:1px!important;inline-size:1px!important;margin:-1px!important;padding:0!important;position:absolute!important;overflow:hidden!important}main{--page-inline-padding:1rem;box-sizing:border-box;min-block-size:100dvh;max-inline-size:42rem;padding:calc(1rem + env(safe-area-inset-top)) var(--page-inline-padding) calc(var(--bottom-navigation-clearance) + 1rem);margin-inline:auto}@media (width<=24rem){main{--page-inline-padding:.5rem}}.app-header{z-index:1;margin-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 calc(.25rem + env(safe-area-inset-right)) calc(.5rem + env(safe-area-inset-bottom)) calc(.25rem + env(safe-area-inset-left));background:canvas;border-block-start:1px solid canvastext;grid-template-columns:repeat(4,minmax(0,1fr));gap:.25rem;display:grid;position:fixed;inset-block-end:0;inset-inline:0}.bottom-navigation button{overflow-wrap:anywhere;word-break:break-word;min-inline-size:0;max-inline-size:100%;padding-inline:0;transition:color .12s,background-color .12s,box-shadow .12s}.bottom-navigation button[aria-pressed=true]{color:canvas;box-shadow:inset 0 .2rem 0 color-mix(in srgb, Canvas 70%, transparent);background:canvastext;font-weight:700}.bottom-navigation button:disabled{color:color-mix(in srgb, CanvasText 40%, transparent);cursor:not-allowed;opacity:.65}@media (width<=30rem){:root{--bottom-navigation-clearance:calc(10rem + env(safe-area-inset-bottom));--sticky-header-clearance:calc(14rem + env(safe-area-inset-top))}.bottom-navigation{grid-template-columns:repeat(2,minmax(0,1fr))}.bottom-navigation button{text-align:center;padding-inline:.25rem}}button{min-block-size:44px;font:inherit}.git-view button{scroll-margin-block:var(--sticky-header-clearance) var(--bottom-navigation-clearance)}input,select,textarea{box-sizing:border-box;min-block-size:44px;inline-size:100%;font:inherit;font-size:max(1rem,16px)}:focus-visible{outline-offset:3px;outline:3px solid canvastext}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important}}@media (forced-colors:active){button,input,select,textarea{border:1px solid canvastext}}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var e=Array.isArray,t=Array.prototype.indexOf,n=Array.prototype.includes,r=Array.from,i=Object.defineProperty,a=Object.getOwnPropertyDescriptor,o=Object.getOwnPropertyDescriptors,s=Object.prototype,c=Array.prototype,l=Object.getPrototypeOf,u=Object.isExtensible,d=()=>{};function f(e){for(var t=0;t<e.length;t++)e[t]()}function p(){var e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}}var m=1024,h=2048,g=4096,_=8192,v=16384,y=32768,b=1<<25,x=65536,S=1<<18,C=1<<19,w=1<<20,T=1<<25,E=65536,D=1<<21,ee=1<<22,te=1<<23,ne=Symbol(`$state`),re=Symbol(`legacy props`),ie=Symbol(``),O=Symbol(`attributes`),ae=Symbol(`class`),oe=Symbol(`style`),se=Symbol(`text`),ce=Symbol(`form reset`),le=new class extends Error{name=`StaleReactionError`;message="The reaction that called `getAbortSignal()` was re-run or destroyed"},ue=!!globalThis.document?.contentType&&globalThis.document.contentType.includes(`xml`);function de(e){throw Error(`https://svelte.dev/e/lifecycle_outside_component`)}function fe(){throw Error(`https://svelte.dev/e/async_derived_orphan`)}function pe(e,t,n){throw Error(`https://svelte.dev/e/each_key_duplicate`)}function me(e){throw Error(`https://svelte.dev/e/effect_in_teardown`)}function he(){throw Error(`https://svelte.dev/e/effect_in_unowned_derived`)}function ge(e){throw Error(`https://svelte.dev/e/effect_orphan`)}function k(){throw Error(`https://svelte.dev/e/effect_update_depth_exceeded`)}function _e(e){throw Error(`https://svelte.dev/e/props_invalid_value`)}function ve(){throw Error(`https://svelte.dev/e/state_descriptors_fixed`)}function ye(){throw Error(`https://svelte.dev/e/state_prototype_fixed`)}function be(){throw Error(`https://svelte.dev/e/state_unsafe_mutation`)}function xe(){throw Error(`https://svelte.dev/e/svelte_boundary_reset_onerror`)}var Se={},A=Symbol(`uninitialized`),Ce=`http://www.w3.org/1999/xhtml`;function we(){console.warn(`https://svelte.dev/e/derived_inert`)}function Te(e){console.warn(`https://svelte.dev/e/hydration_mismatch`)}function Ee(){console.warn(`https://svelte.dev/e/select_multiple_invalid_value`)}function De(){console.warn(`https://svelte.dev/e/svelte_boundary_reset_noop`)}var j=!1;function Oe(e){j=e}var M;function ke(e){if(e===null)throw Te(),Se;return M=e}function Ae(){return ke(nn(M))}function N(e){if(j){if(nn(M)!==null)throw Te(),Se;M=e}}function je(e=1){if(j){for(var t=e,n=M;t--;)n=nn(n);M=n}}function Me(e=!0){for(var t=0,n=M;;){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 Ne(e){if(!e||e.nodeType!==8)throw Te(),Se;return e.data}function Pe(e){return e===this.v}function Fe(e,t){return e==e?e!==t||typeof e==`object`&&!!e||typeof e==`function`:t==t}function Ie(e){return!Fe(e,this.v)}var P=null;function Le(e){P=e}function Re(e,t=!1,n){P={p:P,i:!1,c:null,e:null,s:e,x:null,r:G,l:null}}function ze(e){var t=P,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,P=t.p,e??{}}function Be(){return!0}var Ve=[];function He(){var e=Ve;Ve=[],f(e)}function Ue(e){if(Ve.length===0&&!bt){var t=Ve;queueMicrotask(()=>{t===Ve&&He()})}Ve.push(e)}function We(){for(;Ve.length>0;)He()}function Ge(e){var t=G;if(t===null)return W.f|=te,e;if(!(t.f&32768)&&!(t.f&4))throw e;Ke(e,t)}function Ke(e,t){if(!(t!==null&&t.f&16384)){for(;t!==null;){if(t.f&128){if(!(t.f&32768))throw e;try{t.b.error(e);return}catch(t){e=t}}t=t.parent}throw e}}var qe=~(h|g|m);function F(e,t){e.f=e.f&qe|t}function Je(e){e.f&512||e.deps===null?F(e,m):F(e,g)}function Ye(e){if(e!==null)for(let t of e)!(t.f&2)||!(t.f&65536)||(t.f^=E,Ye(t.deps))}function Xe(e,t,n){e.f&2048?t.add(e):e.f&4096&&n.add(e),Ye(e.deps),F(e,m)}var Ze=!1;function Qe(e){var t=Ze;try{return Ze=!1,[e(),Ze]}finally{Ze=t}}function $e(e){let t=0,n=zt(0),r;return()=>{gn()&&(K(n),Cn(()=>(t===0&&(r=ur(()=>e(()=>Ut(n)))),t+=1,()=>{Ue(()=>{--t,t===0&&(r?.(),r=void 0,Ut(n))})})))}}var et=x|C;function tt(e,t,n,r){new nt(e,t,n,r)}var nt=class{parent;is_pending=!1;transform_error;#e;#t=j?M: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(j){let e=this.#t;Ae();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),j&&(this.#e=M)}#g(){try{this.#a=Tn(()=>this.#r(this.#e))}catch(e){this.error(e)}}#_(e){let t=this.#n.failed;t&&(this.#s=Tn(()=>{t(this.#e,()=>e,()=>()=>{})}))}#v(){let e=this.#n.pending;e&&(this.is_pending=!0,this.#o=Tn(()=>e(this.#e)),Ue(()=>{var e=this.#c=document.createDocumentFragment(),t=en();e.append(t),this.#a=this.#x(()=>Tn(()=>this.#r(t))),this.#u===0&&(this.#e.before(e),this.#c=null,Mn(this.#o,()=>{this.#o=null}),this.#b(L))}))}#y(){try{if(this.is_pending=this.has_pending_snippet(),this.#u=0,this.#l=0,this.#a=Tn(()=>{this.#r(this.#e)}),this.#u>0){var e=this.#c=document.createDocumentFragment();In(this.#a,e);let t=this.#n.pending;this.#o=Tn(()=>t(this.#e))}else this.#b(L)}catch(e){this.error(e)}}#b(e){this.is_pending=!1,e.transfer_effects(this.#f,this.#p)}defer_effect(e){Xe(e,this.#f,this.#p)}is_rendered(){return!this.is_pending&&(!this.parent||this.parent.is_rendered())}has_pending_snippet(){return!!this.#n.pending}#x(e){var t=G,n=W,r=P;Un(this.#i),Hn(this.#i),Le(this.#i.ctx);try{return Et.ensure(),e()}catch(e){return Ge(e),null}finally{Un(t),Hn(n),Le(r)}}#S(e,t){if(!this.has_pending_snippet()){this.parent&&this.parent.#S(e,t);return}this.#u+=e,this.#u===0&&(this.#b(t),this.#o&&Mn(this.#o,()=>{this.#o=null}),this.#c&&=(this.#e.before(this.#c),null))}update_pending_count(e,t){this.#S(e,t),this.#l+=e,!(!this.#m||this.#d)&&(this.#d=!0,Ue(()=>{this.#d=!1,this.#m&&Vt(this.#m,this.#l)}))}get_effect_pending(){return this.#h(),K(this.#m)}error(e){if(!this.#n.onerror&&!this.#n.failed)throw e;L?.is_fork?(this.#a&&L.skip_effect(this.#a),this.#o&&L.skip_effect(this.#o),this.#s&&L.skip_effect(this.#s),L.oncommit(()=>{this.#C(e)})):this.#C(e)}#C(e){this.#a&&=(kn(this.#a),null),this.#o&&=(kn(this.#o),null),this.#s&&=(kn(this.#s),null),j&&(ke(this.#t),je(),ke(Me()));var t=this.#n.onerror;let n=this.#n.failed;var r=!1,i=!1;let a=()=>{if(r){De();return}r=!0,i&&xe(),this.#s!==null&&Mn(this.#s,()=>{this.#s=null}),this.#x(()=>{this.#y()})},o=e=>{try{i=!0,t?.(e,a),i=!1}catch(e){Ke(e,this.#i&&this.#i.parent)}n&&(this.#s=this.#x(()=>{try{return Tn(()=>{var t=G;t.b=this,t.f|=128,n(this.#e,()=>e,()=>a)})}catch(e){return Ke(e,this.#i.parent),null}}))};Ue(()=>{var t;try{t=this.transform_error(e)}catch(e){Ke(e,this.#i&&this.#i.parent);return}typeof t==`object`&&t&&typeof t.then==`function`?t.then(o,e=>Ke(e,this.#i&&this.#i.parent)):o(t)})}};function rt(e,t,n,r){let i=Be()?st:ut;var a=e.filter(e=>!e.settled),o=t.map(i);if(n.length===0&&a.length===0){r(o);return}var s=G,c=it(),l=a.length===1?a[0].promise:a.length>1?Promise.all(a.map(e=>e.promise)):null;function u(e){if(!(s.f&16384)){c();try{r([...o,...e])}catch(e){Ke(e,s)}at()}}var d=ot();if(n.length===0){l.then(()=>u([])).finally(d);return}function f(){Promise.all(n.map(e=>lt(e))).then(u).catch(e=>Ke(e,s)).finally(d)}l?l.then(()=>{c(),f(),at()}):f()}function it(){var e=G,t=W,n=P,r=L;return function(i=!0){Un(e),Hn(t),Le(n),i&&!(e.f&16384)&&(r?.activate(),r?.apply())}}function at(e=!0){Un(null),Hn(null),Le(null),e&&L?.deactivate()}function ot(){var e=G,t=e.b,n=L,r=!!t?.is_rendered();return t?.update_pending_count(1,n),n.increment(r,e),()=>{t?.update_pending_count(-1,n),n.decrement(r,e)}}function st(e){var t=2|h;return G!==null&&(G.f|=C),{ctx:P,deps:null,effects:null,equals:Pe,f:t,fn:e,reactions:null,rv:0,v:A,wv:0,parent:G,ac:null}}var ct=Symbol(`obsolete`);function lt(e,t,n){let r=G;r===null&&fe();var i=void 0,a=zt(A),o=!W,s=new Set;return Sn(()=>{var t=G,n=p();i=n.promise;try{Promise.resolve(e()).then(n.resolve,e=>{e!==le&&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|=te,Vt(a,t)):(a.f&8388608&&(a.f^=te),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=Ie,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!==A&&r.f&24576)return we(),e.v;Un(r);try{e.f&=~E,dt(e),t=rr(e)}finally{Un(n)}return t}function pt(e){var t=ft(e);if(!e.equals(t)&&(e.wv=er(),(!L?.is_fork||e.deps===null)&&(L===null?e.v=t:(L.capture(e,t,!0),_t?.capture(e,t,!0)),e.deps===null))){F(e,m);return}zn||(vt===null?Je(e):(gn()||L?.is_fork)&&vt.set(e,t))}function mt(e){if(e.effects!==null)for(let t of e.effects)(t.teardown||t.ac)&&(t.teardown?.(),t.ac?.abort(le),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!==A&&!this.previous.has(e)&&this.previous.set(e,e.v),e.f&8388608||(this.current.set(e,[t,n]),vt?.set(e,t)),this.is_fork||(e.v=t)}activate(){L=this}deactivate(){L=null,vt=null}flush(){try{xt=!0,L=this,this.#g()}finally{wt=0,yt=null,St=null,Ct=null,xt=!1,L=null,vt=null,Lt.clear()}}discard(){for(let e of this.#i)e(this);this.#i.clear();for(let e of this.async_deriveds.values())e.reject(ct);this.#x(),this.#s?.resolve()}register_created_effect(e){this.#l.push(e)}increment(e,t){if(this.#a+=1,e){let e=this.#o.get(t)??0;this.#o.set(t,e+1)}}decrement(e,t){if(--this.#a,e){let e=this.#o.get(t)??0;e===1?this.#o.delete(t):this.#o.set(t,e-1)}this.#m||(this.#m=!0,Ue(()=>{this.#m=!1,this.linked&&this.flush()}))}transfer_effects(e,t){for(let t of e)this.#u.add(t);for(let e of t)this.#d.add(e);e.clear(),t.clear()}oncommit(e){this.#r.add(e)}ondiscard(e){this.#i.add(e)}settled(){return(this.#s??=p()).promise}static ensure(){if(L===null){let t=L=new e;!xt&&!bt&&Ue(()=>{t.#e||t.flush()})}return L}apply(){vt=null}schedule(e){if(yt=e,e.b?.is_pending&&e.f&16777228&&!(e.f&32768)){e.b.defer_effect(e);return}for(var t=e;t.parent!==null;){t=t.parent;var n=t.f;if(St!==null&&t===G&&(W===null||!(W.f&2)))return;if(n&96){if(!(n&1024))return;t.f^=m}}this.#c.push(t)}#x(){if(this.linked){var e=this.#t,t=this.#n;e===null||(e.#n=t),t===null?gt=e:t.#t=e,this.linked=!1}}};function Dt(e){var t=bt;bt=!0;try{var n;for(e&&(L!==null&&!L.is_fork&&L.flush(),n=e());;){if(We(),L===null)return n;L.flush()}}finally{bt=t}}function Ot(){try{k()}catch(e){Ke(e,yt)}}var kt=null;function At(e){var t=e.length;if(t!==0){for(var n=0;n<t;){var r=e[n++];if(!(r.f&24576)&&tr(r)&&(kt=new Set,or(r),r.deps===null&&r.first===null&&r.nodes===null&&r.teardown===null&&r.ac===null&&jn(r),kt?.size>0)){Lt.clear();for(let e of kt){if(e.f&24576)continue;let t=[e],n=e.parent;for(;n!==null;)kt.has(n)&&(kt.delete(n),t.push(n)),n=n.parent;for(let e=t.length-1;e>=0;e--){let n=t[e];n.f&24576||or(n)}}kt.clear()}}kt=null}}function jt(e,t,n,r){if(!n.has(e)&&(n.add(e),e.reactions!==null))for(let i of e.reactions){let e=i.f;e&2?jt(i,t,n,r):e&4194320&&!(e&2048)&&Mt(i,t,r)&&(F(i,h),Nt(i))}}function Mt(e,t,r){let i=r.get(e);if(i!==void 0)return i;if(e.deps!==null)for(let i of e.deps){if(n.call(t,i))return!0;if(i.f&2&&Mt(i,t,r))return r.set(i,!0),!0}return r.set(e,!1),!1}function Nt(e){L.schedule(e)}function Pt(e,t){if(!(e.f&32&&e.f&1024)){e.f&2048?t.d.push(e):e.f&4096&&t.m.push(e),F(e,m);for(var n=e.first;n!==null;)Pt(n,t),n=n.next}}function Ft(e){F(e,m);for(var t=e.first;t!==null;)Ft(t),t=t.next}var It=new Set,Lt=new Map,Rt=!1;function zt(e,t){return{f:0,v:e,reactions:null,equals:Pe,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=Ie),r}function z(e,t,n=!1){return W!==null&&(!Vn||W.f&131072)&&Be()&&W.f&4325394&&(Wn===null||!Wn.has(e))&&be(),Vt(e,n?Gt(t):t,Ct)}function Vt(e,t,n=null){if(!e.equals(t)){Lt.set(e,zn?t:e.v);var r=Et.ensure();if(r.capture(e,t),e.f&2){let t=e;e.f&2048&&ft(t),vt===null&&Je(t)}e.wv=er(),Wt(e,h,n),Be()&&G!==null&&G.f&1024&&!(G.f&96)&&(Jn===null?Yn([e]):Jn.push(e)),!r.is_fork&&It.size>0&&!Rt&&Ht()}return t}function Ht(){Rt=!1;for(let e of It){e.f&1024&&F(e,g);let t;try{t=tr(e)}catch{t=!0}t&&or(e)}It.clear()}function Ut(e){z(e,e.v+1)}function Wt(e,t,n){var r=e.reactions;if(r!==null)for(var i=Be(),a=r.length,o=0;o<a;o++){var s=r[o],c=s.f;if(!(!i&&s===G)){var l=(c&h)===0;if(l&&F(s,t),c&131072)It.add(s);else if(c&2){var u=s;vt?.delete(u),c&65536||(c&512&&(G===null||!(G.f&2097152))&&(s.f|=E),Wt(u,g,n))}else if(l){var d=s;c&16&&kt!==null&&kt.add(d),n===null?Nt(d):n.push(d)}}}}function Gt(t){if(typeof t!=`object`||!t||ne 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)&&ve();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(A,u));r.set(t,e),Ut(o)}}else z(n,A),Ut(o);return!0},get(e,n,i){if(n===ne)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]:A),u)),r.set(n,o)),o!==void 0){var c=K(o);return c===A?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!==A)return{enumerable:!0,configurable:!0,value:o,writable:!0}}return n},has(e,t){if(t===ne)return!0;var n=r.get(t),i=n!==void 0&&n.v!==A||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]):A,u)),r.set(t,n)),K(n)===A)?!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(A,u)),r.set(d+``,p)):z(p,A)}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!==A;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!==A});for(var[n,i]of r)i.v!==A&&!(n in e)&&t.push(n);return t},setPrototypeOf(){ye()}})}function Kt(e){try{if(typeof e==`object`&&e&&ne in e)return e[ne]}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[ae]=void 0,e[O]=null,e[oe]=void 0,e.__e=void 0),u(n)&&(n[se]=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(!j)return tn(e);var n=tn(M);if(n===null)n=M.appendChild(en());else if(t&&n.nodeType!==3){var r=en();return n?.before(r),ke(r),r}return t&&sn(n),ke(n),n}function V(e,t=!1){if(!j){var n=tn(e);return n instanceof Comment&&n.data===``?nn(n):n}if(t){if(M?.nodeType!==3){var r=en();return M?.before(r),ke(r),r}sn(M)}return M}function H(e,t=1,n=!1){let r=j?M:e;for(var i;t--;)i=r,r=nn(r);if(!j)return r;if(n){if(r?.nodeType!==3){var a=en();return r===null?i?.after(a):r.before(a),ke(a),a}sn(r)}return ke(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){j&&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[ce]?.()})},{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[ce];i?e[ce]=()=>{i(),r(!0)}:e[ce]=()=>r(!0),un()}function pn(e){G===null&&(W===null&&ge(e),he()),zn&&me(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:P,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&&P!==null&&!P.i){var n=P;(n.e??=[]).push(e)}else return yn(e)}function yn(e){return hn(4|w,e)}function bn(e){Et.ensure();let t=hn(64|C,e);return(e={})=>new Promise(n=>{e.outro?Mn(t,()=>{kn(t),n(void 0)}):(kn(t),n(void 0))})}function xn(e){return hn(4,e)}function Sn(e){return hn(ee|C,e)}function Cn(e,t=0){return hn(8|t,e)}function U(e,t=[],n=[],r=[]){rt(r,t,n,t=>{hn(8,()=>{e(...t.map(K))})})}function wn(e,t=0){return hn(16|t,e)}function Tn(e){return hn(32|C,e)}function En(e){var t=e.teardown;if(t!==null){let e=zn,n=W;Bn(!0),Hn(null);try{t.call(null)}finally{Bn(e),Hn(n)}}}function Dn(e,t=!1){var n=e.first;for(e.first=e.last=null;n!==null;){let e=n.ac;e!==null&&dn(()=>{e.abort(le)});var r=n.next;n.f&64?n.parent=null:kn(n,t),n=r}}function On(e){for(var t=e.first;t!==null;){var n=t.next;t.f&32||kn(t),t=n}}function kn(e,t=!0){var n=!1;(t||e.f&262144)&&e.nodes!==null&&e.nodes.end!==null&&(An(e.nodes.start,e.nodes.end),n=!0),e.f|=b,Dn(e,t&&!n),ar(e,0);var r=e.nodes&&e.nodes.t;if(r!==null)for(let e of r)e.stop();En(e),e.f^=b,e.f|=v;var i=e.parent;i!==null&&i.first!==null&&jn(e),e.next=e.prev=e.teardown=e.ctx=e.deps=e.fn=e.nodes=e.ac=e.b=null}function An(e,t){for(;e!==null;){var n=e===t?null:nn(e);e.remove(),e=n}}function jn(e){var t=e.parent,n=e.prev,r=e.next;n!==null&&(n.next=r),r!==null&&(r.prev=n),t!==null&&(t.first===e&&(t.first=r),t.last===e&&(t.last=n))}function Mn(e,t,n=!0){var r=[];Nn(e,r,!0);var i=()=>{n&&kn(e),t&&t()},a=r.length;if(a>0){var o=()=>--a||i();for(var s of r)s.out(o)}else i()}function Nn(e,t,n){if(!(e.f&8192)){e.f^=_;var r=e.nodes&&e.nodes.t;if(r!==null)for(let e of r)(e.is_global||n)&&t.push(e);for(var i=e.first;i!==null;){var a=i.next;if(!(i.f&64)){var o=(i.f&65536)!=0||(i.f&32)!=0&&(e.f&16)!=0;Nn(i,t,o?n:!1)}i=a}}}function Pn(e){Fn(e,!0)}function Fn(e,t){if(e.f&8192){e.f^=_,e.f&1024||(F(e,h),Et.ensure().schedule(e));for(var n=e.first;n!==null;){var r=n.next,i=(n.f&65536)!=0||(n.f&32)!=0;Fn(n,i?t:!1),n=r}var a=e.nodes&&e.nodes.t;if(a!==null)for(let e of a)(e.is_global||t)&&e.in()}}function In(e,t){if(e.nodes)for(var n=e.nodes.start,r=e.nodes.end;n!==null;){var i=n===r?null:nn(n);t.append(n),n=i}}var Ln=null,Rn=!1,zn=!1;function Bn(e){zn=e}var W=null,Vn=!1;function Hn(e){W=e}var G=null;function Un(e){G=e}var Wn=null;function Gn(e){W!==null&&(Wn??=new Set).add(e)}var Kn=null,qn=0,Jn=null;function Yn(e){Jn=e}var Xn=1,Zn=0,Qn=Zn;function $n(e){Qn=e}function er(){return++Xn}function tr(e){var t=e.f;if(t&2048)return!0;if(t&2&&(e.f&=~E),t&4096){for(var n=e.deps,r=n.length,i=0;i<r;i++){var a=n[i];if(tr(a)&&pt(a),a.wv>e.wv)return!0}t&512&&vt===null&&F(e,m)}return!1}function nr(e,t,n=!0){var r=e.reactions;if(r!==null&&!(Wn!==null&&Wn.has(e)))for(var i=0;i<r.length;i++){var a=r[i];a.f&2?nr(a,t,!1):t===a&&(n?F(a,h):a.f&1024&&F(a,g),Nt(a))}}function rr(e){var t=Kn,n=qn,r=Jn,i=W,a=Wn,o=P,s=Vn,c=Qn,l=e.f;Kn=null,qn=0,Jn=null,W=l&96?null:e,Wn=null,Le(e.ctx),Vn=!1,Qn=++Zn,e.ac!==null&&(dn(()=>{e.ac.abort(le)}),e.ac=null);try{e.f|=D;var u=e.fn,d=u();e.f|=y;var f=e.deps,p=L?.is_fork;if(Kn!==null){var m;if(p||ar(e,qn),f!==null&&qn>0)for(f.length=qn+Kn.length,m=0;m<Kn.length;m++)f[qn+m]=Kn[m];else e.deps=f=Kn;if(gn()&&e.f&512)for(m=qn;m<f.length;m++)(f[m].reactions??=[]).push(e)}else!p&&f!==null&&qn<f.length&&(ar(e,qn),f.length=qn);if(Be()&&Jn!==null&&!Vn&&f!==null&&!(e.f&6146))for(m=0;m<Jn.length;m++)nr(Jn[m],e);if(i!==null&&i!==e){if(Zn++,i.deps!==null)for(let e=0;e<n;e+=1)i.deps[e].rv=Zn;if(t!==null)for(let e of t)e.rv=Zn;Jn!==null&&(r===null?r=Jn:r.push(...Jn))}return e.f&8388608&&(e.f^=te),d}catch(e){return Ge(e)}finally{e.f^=D,Kn=t,qn=n,Jn=r,W=i,Wn=a,Le(o),Vn=s,Qn=c}}function ir(e,r){let i=r.reactions;if(i!==null){var a=t.call(i,e);if(a!==-1){var o=i.length-1;o===0?i=r.reactions=null:(i[a]=i[o],i.pop())}}if(i===null&&r.f&2&&(Kn===null||!n.call(Kn,r))){var s=r;s.f&512&&(s.f^=512,s.f&=~E),s.v!==A&&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===A)return!0;if(e.deps===null)return!1;for(let t of e.deps)if(Lt.has(t)||t.f&2&&lr(t))return!0;return!1}function ur(e){var t=Vn;try{return Vn=!0,e()}finally{Vn=t}}[...`allowfullscreen.async.autofocus.autoplay.checked.controls.default.disabled.formnovalidate.indeterminate.inert.ismap.loop.multiple.muted.nomodule.novalidate.open.playsinline.readonly.required.reversed.seamless.selected.webkitdirectory.defer.disablepictureinpicture.disableremoteplayback`.split(`.`)];var dr=[`touchstart`,`touchmove`];function fr(e){return dr.includes(e)}var pr=Symbol(`events`),mr=new Set,hr=new Set;function gr(e,t,n,r={}){function i(e){if(r.capture||br.call(t,e),!e.cancelBubble)return dn(()=>n?.call(this,e))}return e.startsWith(`pointer`)||e.startsWith(`touch`)||e===`wheel`?Ue(()=>{t.addEventListener(e,i,r)}):t.addEventListener(e,i,r),i}function _r(e,t,n,r,i){var a={capture:r,passive:i},o=gr(e,t,n,a);(t===document.body||t===window||t===document||t instanceof HTMLMediaElement)&&_n(()=>{t.removeEventListener(e,o,a)})}function q(e,t,n){(t[pr]??={})[e]=n}function vr(e){for(var t=0;t<e.length;t++)mr.add(e[t]);for(var n of hr)n(e)}var yr=null;function br(e){var t=this,n=t.ownerDocument,r=e.type,a=e.composedPath?.()||[],o=a[0]||e.target;yr=e;var s=0,c=yr===e&&e[pr];if(c){var l=a.indexOf(c);if(l!==-1&&(t===document||t===window)){e[pr]=t;return}var u=a.indexOf(t);if(u===-1)return;l<=u&&(s=l)}if(o=a[s]||e.target,o!==t){i(e,`currentTarget`,{configurable:!0,get(){return o||n}});var d=W,f=G;Hn(null),Un(null);try{for(var p,m=[];o!==null&&o!==t;){try{var h=o[pr]?.[r];h!=null&&(!o.disabled||e.target===o)&&h.call(o,e)}catch(e){p?m.push(e):p=e}if(e.cancelBubble)break;s++,o=s<a.length?a[s]:null}if(p){for(let e of m)queueMicrotask(()=>{throw e});throw p}}finally{e[pr]=t,delete e.currentTarget,Hn(d),Un(f)}}}var xr=globalThis?.window?.trustedTypes&&globalThis.window.trustedTypes.createPolicy(`svelte-trusted-html`,{createHTML:e=>e});function Sr(e){return xr?.createHTML(e)??e}function Cr(e){var t=on(`template`);return t.innerHTML=Sr(e.replaceAll(`<!>`,`<!---->`)),t.content}function wr(e,t){var n=G;n.nodes===null&&(n.nodes={start:e,end:t,a:null,t:null})}function J(e,t){var n=(t&1)!=0,r=(t&2)!=0,i,a=!e.startsWith(`<!>`);return()=>{if(j)return wr(M,null),M;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(!j){var t=en(e+``);return wr(t,t),t}var n=M;return n.nodeType===3?sn(n):(n.before(n=en()),ke(n)),wr(n,n),n}function Er(){if(j)return wr(M,null),M;var e=document.createDocumentFragment(),t=document.createComment(``),n=en();return e.append(t,n),wr(t,n),e}function Y(e,t){if(j){var n=G;(!(n.f&32768)||n.nodes.end===null)&&(n.nodes.end=M),Ae();return}e!==null&&e.before(t)}function X(e,t){var n=t==null?``:typeof t==`object`?`${t}`:t;n!==(e[se]??=e.nodeValue)&&(e[se]=n,e.nodeValue=`${n}`)}function Dr(e,t){return kr(e,t)}var Or=new Map;function kr(e,{target:t,anchor:n,props:i={},events:a,context:o,intro:s=!0,transformError:c}){$t();var l=void 0,u=bn(()=>{var s=n??t.appendChild(en());tt(s,{pending:()=>{}},t=>{Re({});var n=P;if(o&&(n.c=o),a&&(i.$$events=a),j&&wr(t,null),l=e(t,i)||{},j&&(G.nodes.end=M,M===null||M.nodeType!==8||M.data!==`]`))throw Te(),Se;ze()},c);var u=new Set,d=e=>{for(var n=0;n<e.length;n++){var r=e[n];if(!u.has(r)){u.add(r);var i=fr(r);for(let e of[t,document]){var a=Or.get(e);a===void 0&&(a=new Map,Or.set(e,a));var o=a.get(r);o===void 0?(e.addEventListener(r,br,{passive:i}),a.set(r,1)):a.set(r,o+1)}}}};return d(r(mr)),hr.add(d),()=>{for(var e of u)for(let n of[t,document]){var r=Or.get(n),i=r.get(e);--i==0?(n.removeEventListener(e,br),r.delete(e),r.size===0&&Or.delete(n)):r.set(e,i)}hr.delete(d),s!==n&&s.parentNode?.removeChild(s)}});return Ar.set(l,u),l}var Ar=new WeakMap,jr=class{anchor;#e=new Map;#t=new Map;#n=new Map;#r=new Set;#i=!0;constructor(e,t=!0){this.anchor=e,this.#i=t}#a=e=>{if(this.#e.has(e)){var t=this.#e.get(e),n=this.#t.get(t);if(n)Pn(n),this.#r.delete(t);else{var r=this.#n.get(t);r&&(Pn(r.effect),this.#t.set(t,r.effect),this.#n.delete(t),r.fragment.lastChild.remove(),this.anchor.before(r.fragment),n=r.effect)}for(let[t,n]of this.#e){if(this.#e.delete(t),t===e)break;let r=this.#n.get(n);r&&(kn(r.effect),this.#n.delete(n))}for(let[e,r]of this.#t){if(e===t||this.#r.has(e))continue;let i=()=>{if(Array.from(this.#e.values()).includes(e)){var t=document.createDocumentFragment();In(r,t),t.append(en()),this.#n.set(e,{effect:r,fragment:t})}else kn(r);this.#r.delete(e),this.#t.delete(e)};this.#i||!n?(this.#r.add(e),Mn(r,i,!1)):i()}}};#o=e=>{this.#e.delete(e);let t=Array.from(this.#e.values());for(let[e,n]of this.#n)t.includes(e)||(kn(n.effect),this.#n.delete(e))};ensure(e,t){var n=L,r=an();if(t&&!this.#t.has(e)&&!this.#n.has(e))if(r){var i=document.createDocumentFragment(),a=en();i.append(a),this.#n.set(e,{effect:Tn(()=>t(a)),fragment:i})}else this.#t.set(e,Tn(()=>t(this.anchor)));if(this.#e.set(n,e),r){for(let[t,r]of this.#t)t===e?n.unskip_effect(r):n.skip_effect(r);for(let[t,r]of this.#n)t===e?n.unskip_effect(r.effect):n.skip_effect(r.effect);n.oncommit(this.#a),n.ondiscard(this.#o)}else j&&(this.anchor=M),this.#a(n)}};function Z(e,t,n=!1){var r;j&&(r=M,Ae());var i=new jr(e),a=n?x:0;function o(e,t){if(j){var n=Ne(r);if(e!==parseInt(n.substring(1))){var a=Me();ke(a),i.anchor=a,Oe(!1),i.ensure(e,t),Oe(!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=j?ke(tn(u)):u.appendChild(en())}j&&Ae();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;j&&Ne(c)===`[!`!=(e===0)&&(c=Me(),ke(c),Oe(!1),t=!0);for(var r=new Set,u=L,v=an(),y=0;y<e;y+=1){j&&M.nodeType===8&&M.data===`]`&&(c=M,t=!0,Oe(!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&&pe(``,``,``),j&&e>0&&ke(Me()),!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&&Oe(!0),K(f)}),flags:n,items:l,pending:m,outrogroups:null,fallback:d};h=!1,j&&(c=M)}function Ir(e){for(;e!==null&&!(e.f&32);)e=e.next;return e}function Lr(e,t,n,i,a){var o=(i&8)!=0,s=t.length,c=e.items,l=Ir(e.effect.first),u,d=null,f,p=[],m=[],h,g,_,v;if(o)for(v=0;v<s;v+=1)h=t[v],g=a(h,v),_=c.get(g).e,_.f&33554432||(_.nodes?.a?.measure(),(f??=new Set).add(_));for(v=0;v<s;v+=1){if(h=t[v],g=a(h,v),_=c.get(g).e,e.outrogroups!==null)for(let t of e.outrogroups)t.pending.delete(_),t.done.delete(_);if(_.f&8192&&(Pn(_),o&&(_.nodes?.a?.unfix(),(f??=new Set).delete(_))),_.f&33554432)if(_.f^=T,_===l)zr(_,null,n);else{var y=d?d.next:l;_===e.effect.last&&(e.effect.last=_.prev),_.prev&&(_.prev.next=_.next),_.next&&(_.next.prev=_.prev),Br(e,d,_),Br(e,_,y),zr(_,y,n),d=_,p=[],m=[],l=Ir(d.next);continue}if(_!==l){if(u!==void 0&&u.has(_)){if(p.length<m.length){var b=m[0],x;d=b.prev;var S=p[0],C=p[p.length-1];for(x=0;x<p.length;x+=1)zr(p[x],b,n);for(x=0;x<m.length;x+=1)u.delete(m[x]);Br(e,S.prev,C.next),Br(e,d,S),Br(e,C,b),l=b,d=C,--v,p=[],m=[]}else u.delete(_),zr(_,l,n),Br(e,_.prev,_.next),Br(e,_,d===null?e.effect.first:d.next),Br(e,d,_),d=_;continue}for(p=[],m=[];l!==null&&l!==_;)(u??=new Set).add(l),m.push(l),l=Ir(l.next);if(l===null)continue}_.f&33554432||p.push(_),d=_,l=Ir(_.next)}if(e.outrogroups!==null){for(let t of e.outrogroups)t.pending.size===0&&(Pr(e,r(t.done)),e.outrogroups?.delete(t));e.outrogroups.size===0&&(e.outrogroups=null)}if(l!==null||u!==void 0){var w=[];if(u!==void 0)for(_ of u)_.f&8192||w.push(_);for(;l!==null;)!(l.f&8192)&&l!==e.fallback&&w.push(l),l=Ir(l.next);var E=w.length;if(E>0){var D=i&4&&s===0?n:null;if(o){for(v=0;v<E;v+=1)w[v].nodes?.a?.measure();for(v=0;v<E;v+=1)w[v].nodes?.a?.fix()}Nr(e,w,D)}}o&&Ue(()=>{if(f!==void 0)for(_ of f)_.nodes?.a?.apply()})}function Rr(e,t,n,r,i,a,o,s){var c=o&1?o&16?zt(n):Bt(n,!1,!1):null,l=o&2?zt(i):null;return{v:c,i:l,e:Tn(()=>(a(t,c??n,l??i,s),()=>{e.delete(r)}))}}function zr(e,t,n){if(e.nodes)for(var r=e.nodes.start,i=e.nodes.end,a=t&&!(t.f&33554432)?t.nodes.start:n;r!==null;){var o=nn(r);if(a.before(r),r===i)return;r=o}}function Br(e,t,n){t===null?e.effect.first=n:t.next=n,n===null?e.effect.last=t:n.prev=t}function Vr(e,t){let n=null,r=j;var i;if(j){n=M;for(var a=tn(document.head);a!==null&&(a.nodeType!==8||a.data!==e);)a=nn(a);if(a===null)Oe(!1);else{var o=nn(a);a.remove(),ke(o)}}j||(i=document.head.appendChild(en()));try{wn(()=>{var e=Tn(()=>t(i));e.f|=S})}finally{r&&(Oe(!0),ke(n))}}function Hr(e){var t,n,r=``;if(typeof e==`string`||typeof e==`number`)r+=e;else if(typeof e==`object`)if(Array.isArray(e)){var i=e.length;for(t=0;t<i;t++)e[t]&&(n=Hr(e[t]))&&(r&&(r+=` `),r+=n)}else for(n in e)e[n]&&(r&&(r+=` `),r+=n);return r}function Ur(){for(var e,t,n=0,r=``,i=arguments.length;n<i;n++)(e=arguments[n])&&(t=Hr(e))&&(r&&(r+=` `),r+=t);return r}function Wr(e){return typeof e==`object`?Ur(e):e??``}var Gr=[...`
|
|
2
|
+
\r\f\xA0\v`];function Kr(e,t,n){var r=e==null?``:``+e;if(t&&(r=r?r+` `+t:t),n){for(var i of Object.keys(n))if(n[i])r=r?r+` `+i:i;else if(r.length)for(var a=i.length,o=0;(o=r.indexOf(i,o))>=0;){var s=o+a;(o===0||Gr.includes(r[o-1]))&&(s===r.length||Gr.includes(r[s]))?r=(o===0?``:r.substring(0,o))+r.substring(s+1):o=s}}return r===``?null:r}function qr(e,t=!1){var n=t?` !important;`:`;`,r=``;for(var i of Object.keys(e)){var a=e[i];a!=null&&a!==``&&(r+=` `+i+`: `+a+n)}return r}function Jr(e){return e[0]!==`-`||e[1]!==`-`?e.toLowerCase():e}function Yr(e,t){if(t){var n=``,r,i;if(Array.isArray(t)?(r=t[0],i=t[1]):r=t,e){e=String(e).replaceAll(/\s*\/\*.*?\*\/\s*/g,``).trim();var a=!1,o=0,s=!1,c=[];r&&c.push(...Object.keys(r).map(Jr)),i&&c.push(...Object.keys(i).map(Jr));var l=0,u=-1;let t=e.length;for(var d=0;d<t;d++){var f=e[d];if(s?f===`/`&&e[d-1]===`*`&&(s=!1):a?a===f&&(a=!1):f===`/`&&e[d+1]===`*`?s=!0:f===`"`||f===`'`?a=f:f===`(`?o++:f===`)`&&o--,!s&&a===!1&&o===0){if(f===`:`&&u===-1)u=d;else if(f===`;`||d===t-1){if(u!==-1){var p=Jr(e.substring(l,u).trim());if(!c.includes(p)){f!==`;`&&d++;var m=e.substring(l,d).trim();n+=` `+m+`;`}}l=d+1,u=-1}}}}return r&&(n+=qr(r)),i&&(n+=qr(i,!0)),n=n.trim(),n===``?null:n}return e==null?null:String(e)}function Xr(e,t,n,r,i,a){var o=e[ae];if(j||o!==n||o===void 0){var s=Kr(n,r,a);(!j||s!==e.getAttribute(`class`))&&(s==null?e.removeAttribute(`class`):t?e.className=s:e.setAttribute(`class`,s)),e[ae]=n}else if(a&&i!==a)for(var c in a){var l=!!a[c];(i==null||l!==!!i[c])&&e.classList.toggle(c,l)}return a}function Zr(e,t={},n,r){for(var i in n){var a=n[i];t[i]!==a&&(n[i]==null?e.style.removeProperty(i):e.style.setProperty(i,a,r))}}function Qr(e,t,n,r){var i=e[oe];if(j||i!==t){var a=Yr(t,r);(!j||a!==e.getAttribute(`style`))&&(a==null?e.removeAttribute(`style`):e.style.cssText=a),e[oe]=t}else r&&(Array.isArray(r)?(Zr(e,n?.[0],r[0]),Zr(e,n?.[1],r[1],`important`)):Zr(e,n,r));return r}function $r(t,n,r=!1){if(t.multiple){if(n==null)return;if(!e(n))return Ee();for(var i of t.options)i.selected=n.includes(ti(i));return}for(i of t.options)if(qt(ti(i),n)){i.selected=!0;return}(!r||n!==void 0)&&(t.selectedIndex=-1)}function ei(e){var t=new MutationObserver(()=>{$r(e,e.__value)});t.observe(e,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[`value`]}),_n(()=>{t.disconnect()})}function ti(e){return`__value`in e?e.__value:e.value}var ni=Symbol(`is custom element`),ri=Symbol(`is html`),ii=ue?`link`:`LINK`,ai=ue?`progress`:`PROGRESS`;function oi(e){if(j){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[ce]=n,Ue(n),un()}}function si(e,t){var n=li(e);n.value===(n.value=t??void 0)||e.value===t&&(t!==0||e.nodeName!==ai)||(e.value=t??``)}function ci(e,t){var n=li(e);n.checked!==(n.checked=t??void 0)&&(e.checked=t)}function $(e,t,n,r){var i=li(e);j&&(i[t]=e.getAttribute(t),t===`src`||t===`srcset`||t===`href`&&e.nodeName===ii)||i[t]!==(i[t]=n)&&(t===`loading`&&(e[ie]=n),n==null?e.removeAttribute(t):typeof n!=`string`&&di(e).includes(t)?e[t]=n:e.setAttribute(t,n))}function li(e){return e[O]??={[ni]:e.nodeName.includes(`-`),[ri]:e.namespaceURI===Ce}}var ui=new Map;function di(e){var t=e.getAttribute(`is`)||e.nodeName,n=ui.get(t);if(n)return n;ui.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 fi(e,t,n=t){var r=new WeakSet;fn(e,`input`,async i=>{var a=i?e.defaultValue:e.value;if(a=pi(e)?mi(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))}}}),(j&&e.defaultValue!==e.value||ur(t)==null&&e.value)&&(n(pi(e)?mi(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}pi(e)&&n===mi(e.value)||e.type===`date`&&!n&&!e.value||n!==e.value&&(e.value=n??``)})}function pi(e){var t=e.type;return t===`number`||t===`range`}function mi(e){return e===``?null:+e}function hi(e,t){return e===t||e?.[ne]===t}function gi(e={},t,n,r){var i=P.r,a=G;return xn(()=>{var o,s;return Cn(()=>{o=s,s=r?.()||[],ur(()=>{hi(n(...s),e)||(t(e,...s),o&&hi(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&&hi(n(...s),e)&&t(null,...s)},c=r.teardown;r.teardown=()=>{o(),c?.()}}}),e}function _i(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=ne in e||re 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&&_e(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 vi(e){P===null&&de(`onMount`),vn(()=>{let t=ur(e);if(typeof t==`function`)return t})}function yi(e){P===null&&de(`onDestroy`),vi(()=>()=>ur(e))}typeof window<`u`&&((window.__svelte??={}).v??=new Set).add(`5`);var bi=J(`<p class="session-path svelte-t9laac"> </p>`),xi=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 Si(e,t){Re(t,!0);let n=_i(t,`sessionPath`,3,null);var r=xi(),i=V(r),a=H(B(i),2),o=e=>{var t=bi(),r=B(t,!0);N(t),U(()=>{$(t,`title`,n()),X(r,n())}),Y(e,t)};Z(a,e=>{n()&&e(o)}),je(2),N(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`,N(l);var p;ei(l),N(c),N(s),U(()=>{p!==(p=t.theme)&&(l.value=(l.__value=t.theme)??``,$r(l,t.theme))}),q(`change`,l,e=>t.onthemechange(e.currentTarget.value)),Y(e,r),ze()}vr([`change`]);var Ci=J(`<details><summary> </summary><pre> </pre></details>`),wi=J(`<section aria-labelledby="activities-title"><h3 id="activities-title">Activity</h3> <!></section>`);function Ti(e,t){Re(t,!0);var n=Er(),r=V(n),i=e=>{var n=wi();Q(H(B(n),2),17,()=>t.activities,e=>e.id,(e,t)=>{var n=Ci(),r=B(n),i=B(r,!0);N(r);var a=H(r),o=B(a,!0);N(a),N(n),U(()=>{X(i,K(t).label),X(o,K(t).detail)}),Y(e,n)}),N(n),Y(e,n)};Z(r,e=>{t.activities.length&&e(i)}),Y(e,n),ze()}function Ei(e){return!Oi(e)||!Array.isArray(e.questions)?[]:e.questions.flatMap(e=>!Oi(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=>Oi(e)&&typeof e.label==`string`&&typeof e.description==`string`?[{label:e.label,description:e.description}]:[]):[]}])}function Di(e){return{answers:Object.fromEntries(e.filter(e=>e.answer.trim()).map(e=>[e.id,{answers:[e.answer]}]))}}function Oi(e){return typeof e==`object`&&!!e}var ki=J(`<button type="button"> </button>`),Ai=J(`<label> </label> <input/> <!>`,1),ji=J(`<form><!> <button type="submit">Send answers</button></form>`),Mi=J(`<p>Grant the requested permissions for this turn only.</p><button type="button">Approve</button>`,1),Ni=J(`<button type="button">Approve</button><button type="button">Deny</button>`,1),Pi=J(`<article><p> </p> <!></article>`),Fi=J(`<section aria-labelledby="interactions-title"><h3 id="interactions-title">Codex needs your decision</h3> <!></section>`);function Ii(e,t){Re(t,!0);var n=Er(),r=V(n),i=e=>{var n=Fi();Q(H(B(n),2),17,()=>t.interactions,e=>e.requestId,(e,n)=>{var r=Pi(),i=B(r),a=B(i,!0);N(i);var o=H(i,2),s=e=>{let r=I(()=>Ei(K(n).payload));var i=ji(),a=B(i);Q(a,17,()=>K(r),e=>e.id,(e,r)=>{var i=Ai(),a=V(i),o=B(a);N(a);var s=H(a,2);oi(s),Q(H(s,2),17,()=>K(r).options,e=>e.label,(e,n)=>{var i=ki(),a=B(i,!0);N(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`),si(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);N(i),U(()=>o.disabled=!K(r).length),_r(`submit`,i,e=>{e.preventDefault(),t.onuserinput(K(n))}),Y(e,i)},c=e=>{var r=Mi();q(`click`,H(V(r)),()=>t.onpermission(K(n))),Y(e,r)},l=e=>{var r=Ni(),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)}),N(r),U(()=>X(a,K(n).kind)),Y(e,r)}),N(n),Y(e,n)};Z(r,e=>{t.interactions.length&&e(i)}),Y(e,n),ze()}vr([`input`,`click`]);function Li(e){return e.key===`Enter`&&!e.shiftKey&&!e.ctrlKey&&!e.isComposing}var Ri=J(`Ready <span class="block-cursor svelte-1264sfg" aria-hidden="true"></span>`,1),zi=J(`<button type="button" class="svelte-1264sfg">Interrupt</button>`),Bi=J(`<form class="svelte-1264sfg"><p role="status" class="svelte-1264sfg"><!></p> <div class="prompt-row svelte-1264sfg"><textarea id="message" aria-label="Prompt" placeholder="Prompt" rows="1" required="" class="svelte-1264sfg"></textarea> <button type="submit" aria-label="Send prompt" class="svelte-1264sfg"><svg aria-hidden="true" viewBox="0 0 24 24" class="svelte-1264sfg"><path d="M9 10 5 14l4 4M5 14h8a6 6 0 0 0 6-6V6" class="svelte-1264sfg"></path></svg></button></div> <!></form>`);function Vi(e,t){Re(t,!0);function n(e){!Li(e)||t.activeTurnId||t.starting||!t.message.trim()||(e.preventDefault(),t.onsend())}var r=Bi(),i=B(r),a=B(i),o=e=>{var t=Ri();je(),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)}),N(i);var c=H(i,2),l=B(c);cn(l);var u=H(l,2);N(c);var d=H(c,2),f=e=>{var n=zi();q(`click`,n,function(...e){t.oninterrupt?.apply(this,e)}),Y(e,n)};Z(d,e=>{t.activeTurnId&&e(f)}),N(r),U(e=>{$(i,`aria-label`,t.status),si(l,t.message),u.disabled=e},[()=>!!t.activeTurnId||t.starting||!t.message.trim()]),_r(`submit`,r,e=>{e.preventDefault(),t.onsend()}),q(`input`,l,e=>t.onchange(e.currentTarget.value)),q(`keydown`,l,n),Y(e,r),ze()}vr([`input`,`keydown`,`click`]);function Hi(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 Ui(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 Wi(e){return new Intl.DateTimeFormat(void 0,{hour:`2-digit`,minute:`2-digit`}).format(e)}function Gi(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(...Ki(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(...Ki(i)),t}function Ki(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:Yi(i)})};for(let e=0;e<n.length-1;e+=1){let a=qi(n[e]??``),o=qi(n[e+1]??``);if(!a||!o||a.length!==o.length||!o.every(Ji))continue;i(e),e+=2;let s=[];for(;e<n.length;){let t=qi(n[e]??``);if(!t||t.length!==a.length)break;s.push(t),e+=1}t.push({kind:`table`,headers:a.map(Yi),rows:s.map(e=>e.map(Yi))}),r=e,--e}return i(n.length),t.length?t:[{kind:`text`,parts:Yi(e)}]}function qi(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 Ji(e){return/^:?-{3,}:?$/.test(e)}function Yi(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 Xi=(e,t=d)=>{var n=Er();Q(V(n),17,t,Mr,(e,t)=>{var n=Er(),r=V(n),i=e=>{var n=Qi(),r=B(n,!0);N(n),U(()=>{$(n,`href`,K(t).href),X(r,K(t).text)}),Y(e,n)},a=e=>{var n=$i(),r=B(n,!0);N(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)},Zi=(e,t=d)=>{var n=Er();Q(V(n),17,()=>Gi(t()),Mr,(e,t)=>{var n=Er(),r=V(n),i=e=>{var n=ea(),r=B(n),i=B(r,!0);N(r),N(n),U(()=>X(i,K(t).text)),Y(e,n)},a=e=>{var n=ia(),r=B(n),i=B(r),a=B(i);Q(a,21,()=>K(t).headers,Mr,(e,t)=>{var n=ta();Xi(B(n),()=>K(t)),N(n),Y(e,n)}),N(a),N(i);var o=H(i);Q(o,21,()=>K(t).rows,Mr,(e,t)=>{var n=ra();Q(n,21,()=>K(t),Mr,(e,t)=>{var n=na();Xi(B(n),()=>K(t)),N(n),Y(e,n)}),N(n),Y(e,n)}),N(o),N(r),N(n),Y(e,n)},o=e=>{var n=aa();Xi(B(n),()=>K(t).parts),N(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)},Qi=J(`<a target="_blank" rel="noreferrer"> </a>`),$i=J(`<code class="svelte-1im954t"> </code>`),ea=J(`<pre class="svelte-1im954t"><code class="svelte-1im954t"> </code></pre>`),ta=J(`<th scope="col" class="svelte-1im954t"><!></th>`),na=J(`<td class="svelte-1im954t"><!></td>`),ra=J(`<tr></tr>`),ia=J(`<div class="table-scroll svelte-1im954t"><table class="svelte-1im954t"><thead><tr></tr></thead><tbody></tbody></table></div>`),aa=J(`<div><!></div>`),oa=J(`<time class="svelte-1im954t"> <!></time>`),sa=J(`<div class="entry-heading svelte-1im954t"><strong>prompt</strong> <!></div> <div class="entry-content svelte-1im954t"><!></div>`,1),ca=J(`<button class="commentary-toggle svelte-1im954t" type="button"><span aria-hidden="true"> </span>commentary</button>`),la=J(`<div class="commentary-content svelte-1im954t"><!></div>`),ua=J(`<section class="answer-turn"><div class="entry-heading svelte-1im954t"><strong>answer</strong> <!> <!></div> <!> <div class="entry-content svelte-1im954t"><!></div></section>`),da=J(`<details><summary>commentary</summary> <!></details>`),fa=J(`<li><!></li>`),pa=J(`<ol aria-label="Chat messages" class="svelte-1im954t"></ol>`);function ma(e,t){Re(t,!0);let n=I(()=>Hi(t.messages)),r=Gt({});var i=pa();Q(i,23,()=>K(n),e=>e.id,(e,t,i)=>{var a=fa(),o=B(a),s=e=>{var r=sa(),a=V(r),o=H(B(a),2),s=e=>{var r=oa(),a=B(r),o=H(a),s=e=>{var r=Tr();U(e=>X(r,`· ${e??``}`),[()=>Ui(K(n)[K(i)-1]?.occurredAt,K(t).occurredAt)]),Y(e,r)},c=I(()=>Ui(K(n)[K(i)-1]?.occurredAt,K(t).occurredAt));Z(o,e=>{K(c)&&e(s)}),N(r),U((e,t)=>{$(r,`datetime`,e),X(a,`${t??``} `)},[()=>new Date(K(t).occurredAt).toISOString(),()=>Wi(K(t).occurredAt)]),Y(e,r)};Z(o,e=>{K(t).occurredAt&&e(s)}),N(a);var c=H(a,2);Zi(B(c),()=>K(t).text),N(c),Y(e,r)},c=e=>{var a=ua(),o=B(a),s=H(B(o),2),c=e=>{var n=ca(),i=B(n),a=B(i,!0);N(i),je(),N(n),U(e=>{$(n,`aria-expanded`,e),$(n,`aria-controls`,`commentary-${K(t).id}`),X(a,r[K(t).id]?`⌄`:`>`)},[()=>!!r[K(t).id]]),q(`click`,n,()=>r[K(t).id]=!r[K(t).id]),Y(e,n)};Z(s,e=>{K(t).commentary&&e(c)});var l=H(s,2),u=e=>{var r=oa(),a=B(r),o=H(a),s=e=>{var r=Tr();U(e=>X(r,`· ${e??``}`),[()=>Ui(K(n)[K(i)-1]?.occurredAt,K(t).occurredAt)]),Y(e,r)},c=I(()=>Ui(K(n)[K(i)-1]?.occurredAt,K(t).occurredAt));Z(o,e=>{K(c)&&e(s)}),N(r),U((e,t)=>{$(r,`datetime`,e),X(a,`${t??``} `)},[()=>new Date(K(t).occurredAt).toISOString(),()=>Wi(K(t).occurredAt)]),Y(e,r)};Z(l,e=>{K(t).occurredAt&&e(u)}),N(o);var d=H(o,2),f=e=>{var n=la();Zi(B(n),()=>K(t).commentary),N(n),U(()=>$(n,`id`,`commentary-${K(t).id}`)),Y(e,n)};Z(d,e=>{K(t).commentary&&r[K(t).id]&&e(f)});var p=H(d,2);Zi(B(p),()=>K(t).answer),N(p),N(a),Y(e,a)},l=e=>{var n=da();Zi(H(B(n),2),()=>K(t).commentary),N(n),Y(e,n)};Z(o,e=>{K(t).kind===`user`?e(s):K(t).answer?e(c,1):K(t).commentary&&e(l,2)}),N(a),U(()=>Xr(a,1,Wr(K(t).kind===`user`?`prompt-turn`:`answer-item`),`svelte-1im954t`)),Y(e,a)}),N(i),Y(e,i),ze()}vr([`click`]);var ha=[150,300,600];function ga(e){return new Promise(t=>setTimeout(t,e))}function _a(e){return e.status===502||e.status===503||e.status===504}async function va(e=fetch){for(let t=0;t<=ha.length;t+=1){let n;try{n=await e(`/api/bootstrap`)}catch(e){if(e instanceof Error&&e.name===`AbortError`)throw e;if(t===ha.length)throw Error(`BOOTSTRAP_FAILED`);await ga(ha[t]);continue}if(n.ok)return n.json();if(!_a(n)||t===ha.length)throw Error(`BOOTSTRAP_FAILED`);await ga(ha[t])}throw Error(`BOOTSTRAP_FAILED`)}function ya(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 ba=`gestalt-mobile`,xa=2,Sa=[`settings`,`drafts`,`cursors`,`messages`];function Ca(e){return new Promise((t,n)=>{let r=e.open(ba,xa);r.onupgradeneeded=()=>{for(let e of Sa)r.result.objectStoreNames.contains(e)||r.result.createObjectStore(e)},r.onsuccess=()=>t(r.result),r.onerror=()=>n(r.error)})}function wa(e,t,n){return Da(e.transaction(t,`readonly`).objectStore(t).get(n))}function Ta(e,t,n,r){return Da(e.transaction(t,`readwrite`).objectStore(t).put(r,n))}function Ea(e,t,n){return Da(e.transaction(t,`readwrite`).objectStore(t).delete(n))}function Da(e){return new Promise((t,n)=>{e.onsuccess=()=>t(e.result),e.onerror=()=>n(e.error)})}var Oa=`messages`;function ka(e){return e.slice(-200)}function Aa(e=globalThis.indexedDB){if(!e)return{read:async()=>[],write:async()=>{}};let t=Ca(e);return{async read(e){try{return await wa(await t,Oa,e)??[]}catch{return[]}},async write(e,n){try{await Ta(await t,Oa,e,ka(n))}catch{}}}}var ja={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 Ma(e,t){let n=e instanceof Error?e.message:``,r=Object.hasOwn(ja,n)?n:t;return{code:r,message:ja[r]}}var Na={error:null,success:5e3,info:7e3};function Pa(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=Na[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 Fa=J(`<small class="svelte-1a0rutm"> </small>`),Ia=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>`),La=J(`<div class="toast-viewport svelte-1a0rutm" aria-label="Notifications"></div>`);function Ra(e,t){Re(t,!0);let n=R([]),r=I(()=>K(n).slice(-3));vi(()=>t.queue.subscribe(e=>z(n,e)));var i=La();Q(i,21,()=>K(r),e=>e.id,(e,n)=>{var r=Ia();let i;var a=B(r),o=B(a,!0);N(a);var s=H(a,2),c=B(s),l=B(c,!0);N(c);var u=H(c,2),d=B(u,!0);N(u);var f=H(u,2),p=e=>{var t=Fa(),r=B(t);N(t),U(()=>X(r,`Repeated ${K(n).occurrences??``} times.`)),Y(e,t)};Z(f,e=>{K(n).occurrences>1&&e(p)}),N(s);var m=H(s,2);N(r),U(()=>{i=Xr(r,1,`toast svelte-1a0rutm`,null,i,{error:K(n).kind===`error`}),$(r,`role`,K(n).kind===`error`?`alert`:`status`),$(r,`aria-live`,K(n).kind===`error`?`assertive`:`polite`),X(o,K(n).kind===`error`?`!`:K(n).kind===`success`?`✓`:`i`),X(l,K(n).kind===`error`?`Error`:K(n).kind===`success`?`Success`:`Info`),X(d,K(n).message),$(m,`aria-label`,`Dismiss ${K(n).kind} notification`)}),_r(`pointerenter`,r,()=>t.queue.pause(K(n).id,`hover`)),_r(`pointerleave`,r,()=>t.queue.resume(K(n).id,`hover`)),q(`focusin`,r,()=>t.queue.pause(K(n).id,`focus`)),q(`focusout`,r,()=>t.queue.resume(K(n).id,`focus`)),q(`click`,m,()=>t.queue.dismiss(K(n).id)),Y(e,r)}),N(i),Y(e,i),ze()}vr([`focusin`,`focusout`,`click`]);var za=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 Ba(e,t){Re(t,!0);let n=Pa();vi(()=>{t.variant===`stacked`&&n.enqueue({kind:`success`,message:`Cloned.`}),n.enqueue({kind:`error`,code:`GIT_CLONE_FAILED`,message:`Clone failed.`})});var r=za();Ra(H(V(r),4),{get queue(){return n}}),Y(e,r),ze()}var Va={sessionBase:()=>!0,gitRepositoryTarget:e=>e.isGitRepository,cloneDestination:e=>!e.isGitRepository};function Ha(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 Ua(e,t){let n=new Set(e);return t.isGitRepository||(n.has(t.id)?n.delete(t.id):n.add(t.id)),n}function Wa(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 Ga(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 Ka(e,t){for(let n of e){if(n.id===t)return n;let e=Ka(n.children,t);if(e)return e}}function qa(e,t,n,r){if(e){let i=Ka(n,e);if(i&&r(i))return i.id;let a=Ga(t,e);for(let e of a.toReversed()){let t=Ka(n,e);if(t&&r(t))return t.id}}return Ja(n).find(r)?.id??null}function Ja(e){let t=[],n=e=>{t.push(e),e.children.forEach(n)};return e.forEach(n),t}var Ya=J(`<button class="disclosure svelte-6z3q4v" type="button" tabindex="-1"><span aria-hidden="true"> </span></button>`),Xa=J(`<span class="disclosure-spacer svelte-6z3q4v" aria-hidden="true"></span>`),Za=J(`<span class="repository-badge svelte-6z3q4v">Git</span>`),Qa=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>`),$a=J(`<div class="filesystem-tree svelte-6z3q4v" role="tree"></div>`);function eo(e,t){Re(t,!0);let n=_i(t,`isSelectable`,3,()=>!0),r=R(null),i=Gt({}),a=I(()=>Wa(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(Ua(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=$a();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=Qa();let g;var _=B(h),v=e=>{var n=Ya(),r=B(n),i=B(r,!0);N(r),N(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,Xa())};Z(_,e=>{K(m)?e(v):e(y,-1)});var b=H(_,2);let x;var S=B(b),C=B(S,!0);N(S);var w=H(S,2),T=B(w),E=B(T,!0);N(T);var D=H(T,2),ee=B(D,!0);N(D),N(w);var te=H(w,2),ne=e=>{Y(e,Za())};Z(te,e=>{K(u).isGitRepository&&e(ne)}),N(b),gi(b,(e,t)=>i[t.id]=e,e=>i?.[e.id],()=>[K(u)]),N(h),U((e,n,r,i,s)=>{g=Qr(h,``,g,e),x=Xr(b,1,`tree-item svelte-6z3q4v`,null,x,{selected:t.selectedId===K(u).id,repository:K(u).isGitRepository}),$(b,`aria-level`,K(a).level),$(b,`aria-expanded`,n),$(b,`aria-selected`,t.selectedId===K(u).id),$(b,`aria-disabled`,r),$(b,`tabindex`,K(o)===K(u).id?0:-1),$(b,`title`,i),X(C,t.selectedId===K(u).id?`✓`:``),X(E,K(u).name),X(ee,s)},[()=>({"--tree-level":Math.min(K(a).level-1,6)}),()=>K(m)?t.expandedIds.has(K(u).id):void 0,()=>!n()(K(u)),()=>c(K(u).relativePath),()=>c(K(u).relativePath)]),_r(`focus`,b,()=>z(r,K(u).id,!0)),q(`keydown`,b,e=>p(e,K(a),K(l))),q(`click`,b,()=>d(K(u))),Y(e,h)}),N(m),U(()=>$(m,`aria-label`,t.label)),Y(e,m),ze()}vr([`click`,`keydown`]);var to=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 no(e,t){Re(t,!0);let n=(e,t)=>({id:e,name:t,relativePath:e,isGitRepository:!0,children:[]}),r=[{id:`.`,name:`development-workspace-with-a-long-name`,relativePath:`.`,isGitRepository:!1,children:[{id:`dyne`,name:`dyne`,relativePath:`dyne`,isGitRepository:!1,children:[{id:`dyne/mobile-applications`,name:`mobile-applications-and-experiments`,relativePath:`dyne/mobile-applications`,isGitRepository:!1,children:[n(`dyne/mobile-applications/gestalt-mobile`,`gestalt-mobile-with-an-extraordinarily-long-repository-name`)]},n(`dyne/zenroom`,`zenroom`),n(`dyne/zenflows`,`zenflows`),n(`dyne/did`,`did-toolkit`),n(`dyne/api`,`api-gateway`),n(`dyne/docs`,`documentation-portal`)]},{id:`personal`,name:`personal-projects`,relativePath:`personal`,isGitRepository:!1,children:[]}]}],i=R(Gt(new Set([`.`,`dyne`,`dyne/mobile-applications`]))),a=R(null),o=I(()=>t.context===`sessions`?`dyne/mobile-applications`:`dyne/mobile-applications/gestalt-mobile`),s=I(()=>K(a)??K(o));var c=to(),l=B(c),u=B(l,!0);N(l);var d=H(l,2),f=B(d,!0);N(d);var p=H(d,2),m=B(p,!0);N(p);var h=H(p,2),g=B(h);{let e=I(()=>t.context===`sessions`?`Session base`:`Git repository`),n=I(()=>t.context===`sessions`?Va.sessionBase:Va.gitRepositoryTarget);eo(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)})}N(h),N(c),U(()=>{X(u,t.context===`sessions`?`Sessions`:`Git`),X(f,t.context===`sessions`?`Session base`:`Git repository`),X(m,t.context===`sessions`?`Select the folder Codex should use as its working directory.`:`Select a repository for Git actions.`)}),Y(e,c),ze()}function ro(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 io(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 ao=J(`<p class="clone-status svelte-pudr3t" role="status"> </p>`),oo=J(`<option> </option>`),so=J(`<section aria-label="Confirm push"><p> </p> <button type="button">Confirm push</button> <button type="button">Cancel</button></section>`),co=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>`),lo=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>`),uo=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),fo=J(`<p>This workspace is not a Git repository.</p>`),po=J(`<p role="status">Loading repository status…</p>`),mo=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),ho=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),go=J(`<p role="alert"> </p>`),_o=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 vo(e,t){Re(t,!0);let n=R(``),r=I(()=>t.selectedWorkspace&&!t.selectedWorkspace.isGitRepository?t.selectedWorkspace:null);function i(e){e.preventDefault(),!(!K(n).trim()||t.cloning)&&t.onclone(K(n).trim())}var a=_o(),o=H(B(a),2),s=H(B(o),2);{let e=I(()=>t.selectedWorkspace?.id??null);eo(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}})}N(o);var c=H(o,2),l=B(c),u=B(l),d=H(B(u),2),f=B(d,!0);N(d),N(u);var p=H(u,2),m=H(B(p),2);oi(m),N(p);var h=H(p,2),g=B(h,!0);N(h),N(l);var _=H(l,4),v=e=>{var n=ao(),r=B(n,!0);N(n),U(()=>X(r,t.cloneStatus)),Y(e,n)};Z(_,e=>{t.cloneStatus&&e(v)}),N(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=uo(),r=V(n),i=B(r),a=H(B(i),2);Q(a,20,()=>t.summary.branches??[],e=>e,(e,t)=>{var n=oo(),r=B(n,!0);N(n);var i={};U(()=>{X(r,t),i!==(i=t)&&(n.value=(n.__value=t)??``)}),Y(e,n)}),N(a);var o;ei(a);var s=H(a,2),c=B(s);N(s);var l=H(s,2),u=B(l);N(l);var d=H(l,2),f=B(d),p=B(f,!0);N(f),N(d);var m=H(d,2),h=B(m);N(m),N(i);var g=H(i,2),_=B(g),v=H(_,2),y=H(B(v));N(v),N(g),N(r);var b=H(r,2),x=e=>{var n=so(),r=B(n),i=B(r);N(r);var a=H(r,2),o=H(a,2);N(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=lo(),r=H(B(n),2);Q(r,21,()=>t.summary.commits,e=>e.hash,(e,t)=>{var n=co(),r=B(n),i=B(r),a=B(i,!0);N(i);var o=H(i),s=B(o,!0);N(o),N(r);var c=H(r,2),l=B(c),u=B(l,!0);N(l);var d=H(l),f=B(d,!0);N(d),N(c),N(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)},[()=>io(K(t).authoredAt)]),Y(e,n)}),N(r),N(n),Y(e,n)};Z(S,e=>{t.summary.commits.length&&e(C)}),U(e=>{a.disabled=t.refreshing||t.checkingOut||!t.summary.branches?.length,o!==(o=t.summary.branch??``)&&(a.value=(a.__value=t.summary.branch??``)??``,$r(a,t.summary.branch??``)),X(c,`Upstream: ${t.summary.upstream??`none`??``}`),X(u,`Ahead ${t.summary.ahead??``}; behind ${t.summary.behind??``}.`),$(f,`datetime`,t.summary.fetchedAt??void 0),X(p,e),X(h,`Changes: ${t.summary.dirty.staged??``} staged, ${t.summary.dirty.unstaged??``} unstaged, ${t.summary.dirty.untracked??``} untracked.`),_.disabled=t.refreshing||t.checkingOut||!t.summary.upstream||t.summary.ahead<1||t.summary.behind>0,v.disabled=t.refreshing||t.checkingOut,X(y,` ${t.refreshing?`Pulling…`:`Pull`}`)},[()=>ro(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,fo())};Z(r,e=>{t.summary.available?e(i):e(a,-1)}),Y(e,n)},a=e=>{Y(e,po())};Z(r,e=>{t.summary?e(i):t.error||e(a,1)}),Y(e,n)},S=e=>{var n=mo(),r=V(n),i=B(r),a=B(i,!0);N(i),je(),N(r),je(2),U(()=>X(a,t.selectedWorkspace.name)),Y(e,n)},C=e=>{var t=ho();je(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=go(),r=B(n,!0);N(n),U(()=>X(r,t.error)),Y(e,n)};Z(w,e=>{t.error&&e(T)}),N(y),N(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),fi(m,()=>K(n),e=>z(n,e)),Y(e,a),ze()}vr([`change`,`click`]);function yo(e,t,n,r,i){let a=new Set(bo(e).filter(e=>e.isGitRepository).map(e=>e.id)),o=Ka(t,n),s=o?bo(o.children).filter(e=>e.isGitRepository&&!a.has(e.id)):[],c=xo(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&&Ga(t,u).forEach(e=>d.add(e)),!l&&o&&d.add(o.id),{selectedId:u,expandedIds:d}}function bo(e){let t=[],n=e=>{t.push(e),e.children.forEach(n)};return e.forEach(n),t}function xo(e){return(e.trim().replace(/[?#].*$/,``).replace(/\/+$/,``).split(/[/:]/).at(-1)??``).replace(/\.git$/i,``)}function So(e,t,n,r){return[...e,{id:t,role:`user`,text:n,...r?{occurredAt:r}:{},complete:!0}]}function Co(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 wo(e,t){return e.map(e=>e.id===t?{...e,complete:!0}:e)}function To(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 Eo(e=fetch){async function t(e){let t=await e.json().catch(()=>null),n=typeof t?.detail==`string`?t.detail:typeof t?.title==`string`?t.title:`Relay request failed (${e.status}).`;return Error(n)}async function n(n,r,i={}){let a=await e(n,{method:`POST`,headers:{"content-type":`application/json`,...i},body:JSON.stringify(r)});if(!a.ok)throw await t(a);return a.json()}async function r(n,r){let i=await e(n,{method:`PUT`,headers:{"content-type":`application/json`},body:JSON.stringify(r)});if(!i.ok)throw await t(i);return i.json()}async function i(n){let r=await e(n);if(!r.ok)throw await t(r);return r.json()}return{listSessions:()=>i(`/api/sessions`),listRecentSessions:()=>i(`/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=>i(`/api/sessions/${encodeURIComponent(e)}/history`),getGitSummary:e=>i(`/api/git/repositories/${encodeURIComponent(e)}`),cloneGitRepository:(e,t)=>n(`/api/git/clone`,{workspaceId:e,address:t}),refreshGit:(e,t)=>n(`/api/git/repositories/${encodeURIComponent(e)}/refresh`,{},t?{"idempotency-key":t}:{}),pullGit:(e,t)=>n(`/api/git/repositories/${encodeURIComponent(e)}/pull`,{},t?{"idempotency-key":t}:{}),checkoutGitBranch:(e,t)=>n(`/api/git/repositories/${encodeURIComponent(e)}/checkout`,{branch:t}),pushGit:(e,t)=>n(`/api/git/repositories/${encodeURIComponent(e)}/push`,{},t?{"idempotency-key":t}:{}),listAvailableSkills:(e,t)=>i(`/api/skills?${new URLSearchParams({workspaceId:e,profile:t}).toString()}`),listSkillProfiles:()=>i(`/api/skill-profiles`),replaceSkillProfile:(e,t)=>r(`/api/skill-profiles/${encodeURIComponent(e)}`,t),respondInteraction:(e,t,r)=>n(`/api/sessions/${encodeURIComponent(e)}/interactions/${encodeURIComponent(t)}`,r)}}async function Do(e,t=globalThis.navigator?.clipboard,n=ko){if(!t)return Oo(e,n);try{return await t.writeText(e),!0}catch{return Oo(e,n)}}function Oo(e,t){try{return t(e)}catch{return!1}}function ko(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 Ao(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 jo(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 Mo(e){return e?`Codex is working…`:`Ready.`}function No(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 Po=`settings`,Fo=`drafts`,Io=`cursors`,Lo=`selected-session`;function Ro(e=globalThis.indexedDB){if(!e)return zo;let t=Ca(e);return{async readSelectedSession(){try{return await wa(await t,Po,Lo)??null}catch{return null}},async saveSelectedSession(e){try{let n=await t;e?await Ta(n,Po,Lo,e):await Ea(n,Po,Lo)}catch{}},async readDraft(e){try{return await wa(await t,Fo,e)??``}catch{return``}},async saveDraft(e,n){try{await Ta(await t,Fo,e,n)}catch{}},async readCursor(e){try{let n=await wa(await t,Io,e);return typeof n==`number`&&Number.isSafeInteger(n)&&n>=0?n:0}catch{return 0}},async saveCursor(e,n){try{await Ta(await t,Io,e,n)}catch{}}}}var zo={readSelectedSession:async()=>null,saveSelectedSession:async()=>{},readDraft:async()=>``,saveDraft:async()=>{},readCursor:async()=>0,saveCursor:async()=>{}};function Bo(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 Vo(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 Ho(e){let t=/^\/home\/[^/]+/.exec(e)?.[0];if(!t)return e;let n=e.slice(t.length);return n?`~${n}`:`~/`}var Uo=J(`<time> </time>`),Wo=J(`<div> </div>`),Go=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>`),Ko=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>`),qo=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>`),Jo=J(`<ul class="session-list svelte-hxb22h" aria-label="Saved sessions"></ul>`),Yo=J(`<p>No saved sessions yet.</p>`),Xo=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>`),Zo=J(`<ul class="session-list recent-session-list svelte-hxb22h" aria-label="Recent sessions"></ul>`),Qo=J(`<p>No other recent Codex sessions found.</p>`),$o=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 es(e,t){Re(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(()=>Ka(t.workspaceTree,t.workspaceId));var o=$o(),s=H(B(o),2),c=e=>{var r=Ko(),i=H(B(r),2);Q(i,21,()=>K(n),e=>e.id,(e,n)=>{let r=I(()=>Vo(K(n)));var i=Go(),a=B(i),o=B(a);N(a);var s=H(a,2),c=B(s),l=e=>{var t=Uo(),n=B(t,!0);N(t),U((e,r)=>{$(t,`datetime`,e),X(n,r)},[()=>new Date(K(r).updatedAt).toISOString(),()=>Bo(K(r).updatedAt)]),Y(e,t)},u=e=>{var t=Wo(),n=B(t,!0);N(t),U(e=>X(n,e),[()=>Bo(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);N(d),N(s),N(i),U(e=>X(f,e),[()=>Ho(K(r).workspacePath)]),q(`click`,o,()=>t.onclose(K(n).id)),Y(e,i)}),N(i),N(r),Y(e,r)};Z(s,e=>{K(n).length&&e(c)});var l=H(s,2),u=e=>{var n=Jo();Q(n,21,()=>K(r),e=>e.id,(e,n)=>{let r=I(()=>Vo(K(n)));var i=qo(),a=B(i),o=B(a),s=H(o,2);N(a);var c=H(a,2),l=B(c),u=e=>{var t=Uo(),n=B(t,!0);N(t),U((e,r)=>{$(t,`datetime`,e),X(n,r)},[()=>new Date(K(r).updatedAt).toISOString(),()=>Bo(K(r).updatedAt)]),Y(e,t)},d=e=>{var t=Wo(),n=B(t,!0);N(t),U(e=>X(n,e),[()=>Bo(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);N(f),N(c),N(i),U(e=>X(p,e),[()=>Ho(K(r).workspacePath)]),q(`click`,o,()=>t.onopen(K(n).id)),q(`click`,s,()=>t.onforget(K(n).id)),Y(e,i)}),N(n),Y(e,n)},d=e=>{Y(e,Yo())};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);eo(h,{get roots(){return t.workspaceTree},get expandedIds(){return t.expandedIds},get selectedId(){return K(e)},get isSelectable(){return Va.sessionBase},label:`Session base`,get onexpandedchange(){return t.onexpandedchange},onselect:e=>t.onworkspacechange(e.id)})}N(m),N(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`,N(v);var C;ei(v),N(_);var w=H(_,2),T=H(B(w),2),E=B(T);E.value=E.__value=`untrusted`;var D=H(E);D.value=D.__value=`on-request`;var ee=H(D);ee.value=ee.__value=`never`,N(T);var te;ei(T),N(w);var ne=H(w,2),re=B(ne,!0);N(ne),N(g),N(f);var ie=H(f,2),O=H(B(ie),2),ae=e=>{var n=Zo();Q(n,21,()=>K(i),e=>e.id,(e,n)=>{var r=Xo(),i=B(r),a=B(i),o=e=>{var t=Uo(),r=B(t,!0);N(t),U((e,n)=>{$(t,`datetime`,e),X(r,n)},[()=>new Date(K(n).recencyAt*1e3).toISOString(),()=>Bo(K(n).recencyAt*1e3)]),Y(e,t)},s=e=>{var t=Wo(),n=B(t,!0);N(t),U(e=>X(n,e),[()=>Bo(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);N(c),N(i);var u=H(i,2),d=B(u),f=H(d,2);N(u),N(r),U(e=>X(l,e),[()=>Ho(K(n).cwd)]),q(`click`,d,()=>t.onopenrecent(K(n))),q(`click`,f,()=>t.oncopyresume(K(n).resumeCommand)),Y(e,r)}),N(n),Y(e,n)},oe=e=>{Y(e,Qo())};Z(O,e=>{K(i).length?e(ae):e(oe,-1)}),N(ie),N(o),U(()=>{C!==(C=t.sandbox)&&(v.value=(v.__value=t.sandbox)??``,$r(v,t.sandbox)),te!==(te=t.approvalPolicy)&&(T.value=(T.__value=t.approvalPolicy)??``,$r(T,t.approvalPolicy)),ne.disabled=!K(a)||t.startingSession,X(re,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),ze()}vr([`click`,`change`]);function ts(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 ns(e,t,n=!0){let r=n?[`sessions`,`git`,`skills`,`chat`]:[`sessions`,`git`,`skills`];return r[(r.indexOf(e)+t+r.length)%r.length]}var rs=J(`<nav class="bottom-navigation" aria-label="Primary"><button>Sess<wbr/>ions</button> <button>Git</button> <button>Skills</button> <button>Chat</button></nav>`);function is(e,t){Re(t,!0);let n={};function r(e){let r=e.key===`ArrowRight`?1:e.key===`ArrowLeft`?-1:null;if(r===null)return;e.preventDefault();let i=ns(t.activeTab,r,t.chatEnabled);t.onselect(i),n[i]?.focus()}var i=rs(),a=B(i);gi(a,e=>n.sessions=e,()=>n?.sessions);var o=H(a,2);gi(o,e=>n.git=e,()=>n?.git);var s=H(o,2);gi(s,e=>n.skills=e,()=>n?.skills);var c=H(s,2);gi(c,e=>n.chat=e,()=>n?.chat),N(i),U(()=>{$(a,`aria-pressed`,t.activeTab===`sessions`),$(o,`aria-pressed`,t.activeTab===`git`),$(s,`aria-pressed`,t.activeTab===`skills`),$(c,`aria-pressed`,t.activeTab===`chat`),c.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(`skills`)),q(`keydown`,c,r),q(`click`,c,()=>t.onselect(`chat`)),Y(e,i),ze()}vr([`keydown`,`click`]);var as=J(`<option> </option>`),os=J(`<p id="skills-status" aria-live="polite">Loading skills…</p>`),ss=J(`<p id="skills-status">No skills were discovered for this workspace and Codex profile.</p>`),cs=J(`<p id="skills-status" class="notice svelte-dg6sjj" role="status"> </p>`),ls=J(`<p id="skills-status" class="error svelte-dg6sjj" role="alert"> </p>`),us=J(`<p id="skills-status" class="error svelte-dg6sjj" role="alert" tabindex="-1"> </p>`),ds=J(`<p id="skills-status" role="status">Profile saved.</p>`),fs=J(`<p> </p>`),ps=J(`<dt class="svelte-dg6sjj">Display metadata</dt><dd class="svelte-dg6sjj"> </dd>`,1),ms=J(`<li> </li>`),hs=J(`<dt class="svelte-dg6sjj">Tool dependencies</dt> <dd class="svelte-dg6sjj"><ul class="svelte-dg6sjj"></ul></dd>`,1),gs=J(`<li class="skill-card svelte-dg6sjj"><label class="skill-toggle svelte-dg6sjj"><input type="checkbox" class="svelte-dg6sjj"/> <span class="svelte-dg6sjj"> </span> <span class="state svelte-dg6sjj"> </span></label> <details class="svelte-dg6sjj"><summary class="svelte-dg6sjj">Skill details</summary> <!> <!> <dl class="svelte-dg6sjj"><dt class="svelte-dg6sjj">Path</dt><dd class="path svelte-dg6sjj"> </dd> <dt class="svelte-dg6sjj">Scope</dt><dd class="svelte-dg6sjj"> </dd> <dt class="svelte-dg6sjj">Native state</dt><dd class="svelte-dg6sjj"> </dd> <!> <!></dl></details></li>`),_s=J(`<p class="summary svelte-dg6sjj"> </p> <ul class="skill-list svelte-dg6sjj"></ul>`,1),vs=J(`<section class="skills-view svelte-dg6sjj" aria-labelledby="skills-title"><h2 id="skills-title">Skills</h2> <p class="intro svelte-dg6sjj">Choose a workspace and profile, then save a complete skills selection.</p> <form aria-describedby="skills-status" class="svelte-dg6sjj"><div class="field-grid svelte-dg6sjj"><label for="skills-workspace" class="svelte-dg6sjj">Workspace</label> <select id="skills-workspace" class="svelte-dg6sjj"><option disabled="">Select a workspace</option><!></select> <label for="skills-codex-profile" class="svelte-dg6sjj">Codex profile</label> <select id="skills-codex-profile" class="svelte-dg6sjj"><option disabled="">Select a Codex profile</option><!></select> <label for="skills-existing-profile" class="svelte-dg6sjj">Existing saved profile</label> <select id="skills-existing-profile" class="svelte-dg6sjj"><option>New profile</option><!></select> <label for="skills-save-as" class="svelte-dg6sjj">Save as</label> <input id="skills-save-as" name="save-as" autocomplete="off" class="svelte-dg6sjj"/></div> <p class="save-intent svelte-dg6sjj" aria-live="polite"> </p> <button type="submit" class="svelte-dg6sjj"> </button></form> <!> <!></section>`);function ys(e,t){Re(t,!0);let n=_i(t,`skillsState`,7),r=R(0),i=R(null),a=I(()=>(K(r),n())),o=I(()=>m(t.workspaceTree)),s=I(()=>K(a).profiles.filter(e=>!(`error`in e)));function c(){n(Object.assign(Object.create(Object.getPrototypeOf(n())),n())),z(r,K(r)+1)}function l(e){t.onworkspacechange(e.currentTarget.value)}function u(e){t.oncodexprofilechange(e.currentTarget.value)}function d(e){K(a).selectProfile(e.currentTarget.value),c()}async function f(e){e.preventDefault(),await K(a).save(),c(),K(a).status.kind===`save-failed`&&(await sr(),K(i)?.focus())}function p(e){return e&&/^#[0-9a-f]{3,8}$/i.test(e)?e:void 0}function m(e){let t=[],n=e=>{t.push(e),e.children.forEach(n)};return e.forEach(n),t}var h=vs(),g=H(B(h),4),_=B(g),v=H(B(_),2),y=B(v);y.value=y.__value=``,Q(H(y),17,()=>K(o),e=>e.id,(e,t)=>{var n=as(),r=B(n,!0);N(n);var i={};U(()=>{X(r,K(t).relativePath||K(t).name),i!==(i=K(t).id)&&(n.value=(n.__value=K(t).id)??``)}),Y(e,n)}),N(v);var b;ei(v);var x=H(v,4),S=B(x);S.value=S.__value=``,Q(H(S),17,()=>t.codexProfiles,e=>e.name,(e,t)=>{var n=as(),r=B(n);N(n);var i={};U(()=>{n.disabled=K(t).state!==`ok`,X(r,`${K(t).name??``}${K(t).state===`ok`?``:` (${K(t).status})`}`),i!==(i=K(t).name)&&(n.value=(n.__value=K(t).name)??``)}),Y(e,n)}),N(x);var C;ei(x);var w=H(x,4),T=B(w);T.value=T.__value=``,Q(H(T),17,()=>K(s),e=>e.name,(e,t)=>{var n=as(),r=B(n,!0);N(n);var i={};U(()=>{X(r,K(t).name),i!==(i=K(t).name)&&(n.value=(n.__value=K(t).name)??``)}),Y(e,n)}),N(w);var E;ei(w);var D=H(w,4);oi(D),N(_);var ee=H(_,2),te=B(ee,!0);N(ee);var ne=H(ee,2),re=B(ne,!0);N(ne),N(g);var ie=H(g,2),O=e=>{Y(e,os())},ae=e=>{Y(e,ss())},oe=e=>{var t=cs(),n=B(t);N(t),U(()=>X(n,`Discovery warning: ${K(a).status.message??``}`)),Y(e,t)},se=e=>{var t=ls(),n=B(t,!0);N(t),U(()=>X(n,K(a).status.message)),Y(e,t)},ce=e=>{var t=us(),n=B(t,!0);N(t),gi(t,e=>z(i,e),()=>K(i)),U(()=>X(n,K(a).status.message)),Y(e,t)},le=e=>{Y(e,ds())};Z(ie,e=>{K(a).status.kind===`loading`?e(O):K(a).status.kind===`empty`?e(ae,1):K(a).status.kind===`warning`?e(oe,2):K(a).status.kind===`invalid-profile`||K(a).status.kind===`error`?e(se,3):K(a).status.kind===`save-failed`?e(ce,4):K(a).status.kind===`saved`&&e(le,5)});var ue=H(ie,2),de=e=>{var t=_s(),n=V(t),r=B(n);N(n);var i=H(n,2);Q(i,21,()=>K(a).skills,e=>e.path,(e,t)=>{var n=gs();let r;var i=B(n),o=B(i);oi(o);var s=H(o,2),l=B(s,!0);N(s);var u=H(s,2),d=B(u,!0);N(u),N(i);var f=H(i,2),m=H(B(f),2),h=e=>{var n=fs(),r=B(n,!0);N(n),U(()=>X(r,K(t).description)),Y(e,n)};Z(m,e=>{K(t).description&&e(h)});var g=H(m,2),_=e=>{var n=fs(),r=B(n,!0);N(n),U(()=>X(r,K(t).shortDescription)),Y(e,n)};Z(g,e=>{K(t).shortDescription&&e(_)});var v=H(g,2),y=H(B(v)),b=B(y,!0);N(y);var x=H(y,3),S=B(x,!0);N(x);var C=H(x,3),w=B(C,!0);N(C);var T=H(C,2),E=e=>{var n=ps(),r=H(V(n)),i=B(r,!0);N(r),U(()=>X(i,K(t).interfaceShortDescription)),Y(e,n)};Z(T,e=>{K(t).interfaceShortDescription&&e(E)});var D=H(T,2),ee=e=>{var n=hs(),r=H(V(n),2),i=B(r);Q(i,21,()=>K(t).dependencies.tools,e=>`${e.type}:${e.value}`,(e,t)=>{var n=ms(),r=B(n);N(n),U(()=>X(r,`${K(t).type??``}: ${K(t).value??``}${K(t).description?` — ${K(t).description}`:``}`)),Y(e,n)}),N(i),N(r),Y(e,n)};Z(D,e=>{K(t).dependencies?.tools?.length&&e(ee)}),N(v),N(f),N(n),U(e=>{r=Qr(n,``,r,e),$(i,`for`,`skill-${K(t).path}`),$(o,`id`,`skill-${K(t).path}`),ci(o,K(t).enabled),X(l,K(t).displayName??K(t).name),X(d,K(t).enabled?`Enabled`:`Disabled`),X(b,K(t).path),X(S,K(t).scope??`Not provided`),X(w,K(t).nativeEnabled?`Enabled`:`Disabled`)},[()=>({"--brand-color":p(K(t).brandColor)})]),q(`change`,o,e=>{K(a).toggle(K(t).path,e.currentTarget.checked),c()}),Y(e,n)}),N(i),U(()=>X(r,`${K(a).enabledCount??``} of ${K(a).skills.length??``} skills enabled.`)),Y(e,t)};Z(ue,e=>{K(a).skills.length>0&&e(de)}),N(h),U(()=>{b!==(b=K(a).workspaceId)&&(v.value=(v.__value=K(a).workspaceId)??``,$r(v,K(a).workspaceId)),C!==(C=K(a).codexProfile)&&(x.value=(x.__value=K(a).codexProfile)??``,$r(x,K(a).codexProfile)),E!==(E=K(a).selectedProfileName)&&(w.value=(w.__value=K(a).selectedProfileName)??``,$r(w,K(a).selectedProfileName)),si(D,K(a).saveAsName),X(te,K(a).saveIntent===`replace`?`Replacing the selected saved profile.`:`Creating a new saved profile.`),ne.disabled=K(a).status.kind===`saving`,X(re,K(a).status.kind===`saving`?`Saving profile…`:`Save profile`)}),_r(`submit`,g,f),q(`change`,v,l),q(`change`,x,u),q(`change`,w,d),q(`input`,D,e=>{K(a).saveAsName=e.currentTarget.value,c()}),Y(e,h),ze()}vr([`change`,`input`]);var bs=class{client;workspaceId=``;codexProfile=``;selectedProfileName=``;saveAsName=``;source=`native`;skills=[];profiles=[];status={kind:`idle`};baseline=new Map;saving=!1;constructor(e){this.client=e}get enabledCount(){return this.skills.filter(e=>e.enabled).length}get dirty(){return this.skills.some(e=>this.baseline.get(e.path)!==e.enabled)}get saveIntent(){return this.profiles.some(e=>!(`error`in e)&&e.name===this.saveAsName.trim())?`replace`:`create`}async load(e,t){this.workspaceId=e,this.codexProfile=t,this.status={kind:`loading`};try{let[n,r]=await Promise.all([this.client.listAvailableSkills(e,t),this.client.listSkillProfiles()]);this.applyAvailable(n),this.profiles=r.profiles;let i=r.profiles.find(e=>`error`in e);i&&`error`in i?this.status={kind:`invalid-profile`,message:i.error.message}:n.errors.length?this.status={kind:`warning`,message:n.errors.map(e=>e.message).join(` `)}:this.status=this.skills.length?{kind:`ready`}:{kind:`empty`}}catch(e){this.status={kind:`error`,message:xs(e)}}}selectProfile(e){let t=this.profiles.find(t=>!(`error`in t)&&t.name===e);if(!t||`error`in t){this.status={kind:`invalid-profile`,message:`Select a valid saved profile.`};return}this.selectedProfileName=t.name,this.saveAsName=t.name;let n=new Map(t.skills.map(e=>[e.path,e.enabled]));this.skills=this.skills.map(e=>({...e,enabled:n.get(e.path)??!1})),this.captureBaseline(),this.status=this.skills.length?{kind:`ready`}:{kind:`empty`}}toggle(e,t){this.skills=this.skills.map(n=>n.path===e?{...n,enabled:t}:n)}reset(){this.skills=this.skills.map(e=>({...e,enabled:this.baseline.get(e.path)??!1}))}async save(){let e=this.saveAsName.trim();if(this.saving)return;if(!e){this.status={kind:`save-failed`,message:`Enter a profile name before saving.`};return}this.saving=!0,this.status={kind:`saving`};let t=this.savePayload(e);try{let n=await this.client.replaceSkillProfile(e,t);this.profiles=[...this.profiles.filter(e=>`error`in e||e.name!==n.name),n].sort((e,t)=>e.name.localeCompare(t.name)),this.selectedProfileName=n.name,this.saveAsName=n.name,this.captureBaseline(),this.status={kind:`saved`}}catch(e){this.status={kind:`save-failed`,message:xs(e)}}finally{this.saving=!1}}savePayload(e=this.saveAsName.trim()){return{version:1,name:e,skills:this.skills.map(({name:e,path:t,enabled:n})=>({name:e,path:t,enabled:n})).sort((e,t)=>e.path.localeCompare(t.path))}}applyAvailable(e){let t=new Map(this.skills.filter(e=>this.baseline.get(e.path)!==e.enabled).map(e=>[e.path,e.enabled]));this.source=e.source,this.skills=e.skills.map(e=>({...e,enabled:t.get(e.path)??e.effectiveEnabled})),this.baseline=new Map(e.skills.map(e=>[e.path,this.baseline.get(e.path)??e.effectiveEnabled]))}captureBaseline(){this.baseline=new Map(this.skills.map(e=>[e.path,e.enabled]))}};function xs(e){return e instanceof Error?e.message:`Unknown relay error.`}var Ss=J(`<main class="evidence-mode svelte-y74n0s"><!></main>`),Cs=J(`<!> <!> <!> <!>`,1),ws=J(`<p>Start a session from the Sessions tab to chat with Codex.</p>`),Ts=J(`<section class="chat-view svelte-y74n0s" aria-labelledby="chat-title"><h2 id="chat-title" class="visually-hidden">Chat</h2> <!></section>`),Es=J(`<p>Loading skills…</p>`),Ds=J(`<main><!> <!> <!></main>`),Os=J(`<!> <!>`,1);function ks(e,t){Re(t,!0);let n=R(`sessions`),r=R(`Loading relay…`),i=R(`system`),a=R(Gt([])),o=R([]),s=R(null),c=!1,l=R(``),u=R(Gt(new Set)),d=R(null),f=R(Gt([])),p=I(()=>K(f).some(e=>e.id===K(d)&&(e.state===`ready`||e.state===`turnActive`))),m=R(Gt([])),h=R(``),g=R(`on-request`),_=R(null),v=R(!1),y=R(``),b=R(null),x=R(!1),S=R(Gt([])),C=R(Gt([])),w=R(0),T=null,E=null,D=null,ee=null,te=!1,ne=0,re=0,ie=R(null),O=R(null),ae=R(Gt(new Set)),oe=R(!1),se=R(!1),ce=R(!1),le=R(!1),ue=R(null),de=R(null),fe=R(null),pe=R(null),me=0,he=R(Gt([])),ge=Gt({}),k=Eo(),_e=Aa(),ve=Ro(),ye=Pa(),be=new URLSearchParams(location.search).get(`tree-evidence`),xe=new URLSearchParams(location.search).get(`toast-evidence`);vi(async()=>{let e=localStorage.getItem(`gestalt-mobile.theme`);if((e===`light`||e===`dark`||e===`system`)&&Se(e),!(be===`sessions`||be===`git`||xe===`error`||xe===`stacked`)){ee=setInterval(Me,2e3),document.addEventListener(`visibilitychange`,Me),window.addEventListener(`focus`,Me);try{let e=await va();z(l,qa(K(l)||null,K(a),e.workspaces,Va.sessionBase)??``,!0),z(a,e.workspaces,!0),z(o,e.profiles),z(u,Ha(K(a)),!0),z(ae,Ha(K(a)),!0);let t=await ve.readSelectedSession();z(d,e.sessions.some(e=>e.id===t)?t:e.sessions[0]?.id??null,!0),K(d)&&z(w,await ve.readCursor(K(d)),!0),K(d)&&z(y,await ve.readDraft(K(d)),!0),K(d)&&z(S,await _e.read(K(d)),!0),z(f,e.sessions,!0),z(he,K(f).find(e=>e.id===K(d))?.pendingInteractions??[],!0),we(),z(b,K(f).find(e=>e.id===K(d))?.activeTurnId??null,!0),z(r,K(d)?Mo(K(b)):`Choose a workspace and start a session.`,!0),K(d)&&(await je(K(d)),Xe(K(d)))}catch(e){z(r,Ye(e,`RELAY_UNAVAILABLE`),!0)}}});function Se(e){z(i,e,!0),e===`system`?document.documentElement.removeAttribute(`data-theme`):document.documentElement.dataset.theme=e,localStorage.setItem(`gestalt-mobile.theme`,e)}yi(()=>{E&&clearTimeout(E),D&&clearTimeout(D),ee&&clearInterval(ee),document.removeEventListener(`visibilitychange`,Me),window.removeEventListener(`focus`,Me),T?.close()});async function A(){if(!K(l)||K(v))return;let e=ts({workspaceId:K(l),profile:`default`,profileState:`ok`});if(e.profile){z(r,e.profile,!0);return}z(_,K(_)??Ao(),!0),z(v,!0),z(r,`Starting session…`);try{let e=await k.startSession(K(l),{sandbox:K(h)||void 0,approvalPolicy:K(g)},K(_));z(_,null),z(d,e.id,!0),z(b,null),ve.saveSelectedSession(e.id),await Ce(),z(S,[],!0),F(e.id),z(C,[],!0),z(w,0),z(y,await ve.readDraft(e.id),!0),Xe(e.id),z(n,`chat`),Fe(),z(r,`Session started.`)}catch(e){z(r,Ye(e,`SESSION_START_FAILED`),!0)}finally{z(v,!1)}}async function Ce(){z(f,await k.listSessions(),!0)}async function we(){try{z(m,await k.listRecentSessions(),!0)}catch{z(m,[],!0)}}async function Te(){try{await Promise.all([Ce(),we()])}catch(e){z(r,Ye(e,`SESSION_REFRESH_FAILED`),!0)}}async function Ee(e){z(r,`Opening session…`);try{let t=K(f).find(t=>t.id===e);if(t&&t.state!==`ready`&&t.state!==`turnActive`){let t=await k.restoreSession(e);z(f,K(f).map(n=>n.id===e?t:n),!0)}z(d,e,!0),ve.saveSelectedSession(e),z(S,await _e.read(e),!0),z(C,[],!0),z(w,0),z(y,await ve.readDraft(e),!0),z(b,K(f).find(t=>t.id===e)?.activeTurnId??null,!0),z(he,K(f).find(t=>t.id===e)?.pendingInteractions??[],!0),z(n,`chat`),Fe(),await je(e),Xe(e)}catch(e){z(r,`Could not open session: ${Je(e)}`)}}async function De(e){z(r,`Opening recent session…`);try{let t=await k.openRecentSession(e.id,e.cwd);await Te(),await Ee(t.id)}catch(e){z(r,`Could not open recent session: ${Je(e)}`)}}async function j(e){z(r,`Closing session…`);try{await k.releaseSession(e),K(d)===e&&(z(d,null),z(n,`sessions`),z(b,null),z(he,[],!0),ve.saveSelectedSession(null),E&&clearTimeout(E),E=null,T?.close(),T=null),await Te(),z(r,`Session closed.`)}catch(e){z(r,`Could not close session: ${Je(e)}`)}}async function Oe(e){try{await k.forgetSession(e),K(d)===e&&(T?.close(),z(d,null),z(b,null),ve.saveSelectedSession(null)),await Te()}catch(e){z(r,`Could not forget session: ${Je(e)}`)}}async function M(e){z(r,await Do(e)?`Resume command copied.`:`Could not copy the resume command.`,!0)}async function ke(){if(!K(d)||!K(y).trim()||K(b)||K(x))return;let e=K(y).trim();z(x,!0);try{let t=await k.startTurn(K(d),e);z(b,t.activeTurnId??null,!0),z(S,So(K(S),`user-${t.activeTurnId??Date.now().toString()}`,e,Date.now()),!0),F(K(d)),z(y,``),ve.saveDraft(K(d),``),z(r,Mo(K(b)),!0)}catch(e){z(r,Ye(e,`MESSAGE_SEND_FAILED`),!0)}finally{z(x,!1)}}async function Ae(){if(!(!K(d)||!K(b)))try{await k.interruptTurn(K(d),K(b)),z(b,null),z(r,`Codex turn interrupted.`)}catch(e){z(r,`Could not interrupt Codex: ${Je(e)}`)}}async function je(e,t=0){let n=await k.getHistory(e);if(K(d)!==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(S).filter(e=>!e.complete);z(S,[...i,...a],!0),F(e);let o=n.items.flatMap(e=>{let t=ya(e);return t?[t]:[]});z(C,[...o,...K(C).filter(e=>!o.some(t=>t.id===e.id))],!0),`activeTurnId`in n&&(z(b,n.activeTurnId??null,!0),z(f,K(f).map(t=>t.id===e?{...t,activeTurnId:K(b)}:t),!0)),z(w,Math.max(K(w),n.currentSequence??t),!0),ve.saveCursor(e,K(w)),z(r,Mo(K(b)),!0)}function Me(){K(n)!==`chat`||!K(d)||document.visibilityState!==`visible`||te||(te=!0,je(K(d)).catch(()=>void 0).finally(()=>{te=!1}))}function Ne(e){if(!(e===`chat`&&!K(p))){if(z(n,e,!0),e===`skills`&&!c){let e=K(l)||K(a)[0]?.id||``,t=K(o).find(e=>e.state===`ok`)?.name??``;e&&t&&Pe(e,t)}e===`chat`&&(Me(),Fe()),e===`git`&&K(O)&&Ie(K(O)),e===`sessions`&&Te()}}async function Pe(e,t){let n=new bs(k);await n.load(e,t),z(s,n,!0),c=!0}function Fe(){requestAnimationFrame(()=>window.scrollTo({top:document.documentElement.scrollHeight}))}async function Ie(e=K(O)){let t=e?Ka(K(a),e):void 0;if(!e||!t?.isGitRepository){me+=1,z(ie,null);return}let n=++me;try{let t=await k.getGitSummary(e);n===me&&K(O)===e&&z(ie,t,!0)}catch(t){if(n!==me||K(O)!==e)return;z(ie,null),z(ue,Ye(t,`GIT_SUMMARY_FAILED`),!0)}}function P(e){z(O,e.id,!0),z(ue,null),z(ie,null),z(oe,!1),e.isGitRepository?Ie(e.id):(me+=1,z(ie,null))}async function Le(){let e=K(O);if(!(!e||!Ka(K(a),e)?.isGitRepository)){z(fe,K(fe)??Ao(),!0),z(se,!0),z(ue,null);try{await k.pullGit(e,K(fe)),await Ie(e),z(fe,null)}catch(e){z(ue,Ye(e,`GIT_PULL_FAILED`),!0)}finally{z(se,!1)}}}async function Be(e){if(K(le))return;let t=K(O)?Ka(K(a),K(O)):void 0;if(!t||t.isGitRepository){z(de,null),ye.enqueue({kind:`error`,code:`INVALID_CLONE_DESTINATION`,message:`Select a non-repository folder before cloning.`});return}let n=t.id;z(le,!0),z(ue,null),z(de,null);try{await k.cloneGitRepository(n,e);let t=await va(),r=yo(K(a),t.workspaces,n,e,K(ae));z(l,qa(K(l)||null,K(a),t.workspaces,Va.sessionBase)??``,!0),z(a,t.workspaces,!0),z(O,r.selectedId,!0),z(ae,r.expandedIds,!0),K(O)&&Ka(K(a),K(O))?.isGitRepository?await Ie(K(O)):z(ie,null),z(de,`Repository cloned into the selected workspace.`),ye.enqueue({kind:`success`,message:`Repository cloned.`})}catch(e){Ye(e,`GIT_CLONE_FAILED`)}finally{z(le,!1)}}async function Ve(e){let t=K(O);if(!(!t||e===K(ie)?.branch)){z(ce,!0),z(ue,null);try{await k.checkoutGitBranch(t,e),await Ie(t)}catch(e){z(ue,Ye(e,`GIT_CHECKOUT_FAILED`),!0)}finally{z(ce,!1)}}}async function He(){let e=K(O);if(e){z(pe,K(pe)??Ao(),!0),z(ue,null);try{await k.pushGit(e,K(pe)),z(oe,!1),await Ie(e),z(pe,null)}catch(e){z(ue,Ye(e,`GIT_PUSH_FAILED`),!0)}}}async function Ue(e,t){K(d)&&(await k.respondInteraction(K(d),e,{decision:t}),z(he,K(he).filter(t=>t.requestId!==e),!0))}async function We(e){if(!K(d))return;let t=Di(Ei(e.payload).map(e=>({id:e.id,answer:ge[e.id]??``})));await k.respondInteraction(K(d),e.requestId,t),z(he,K(he).filter(t=>t.requestId!==e.requestId),!0)}async function Ge(e){if(!K(d))return;let t=To(e.payload);if(!t){z(r,`Codex sent an invalid permission request.`);return}await k.respondInteraction(K(d),e.requestId,t),z(he,K(he).filter(t=>t.requestId!==e.requestId),!0)}function Ke(e,t){ge[e]=t}function qe(e){z(y,e,!0),K(d)&&ve.saveDraft(K(d),e)}function F(e){_e.write(e,K(S))}function Je(e){return e instanceof Error?e.message:`Unknown relay error.`}function Ye(e,t){let n=Ma(e,t);return ye.enqueue({kind:`error`,...n}),n.message}function Xe(e){E&&clearTimeout(E),D&&clearTimeout(D),T?.close();let t=++re,n=location.protocol===`https:`?`wss:`:`ws:`;T=new WebSocket(`${n}//${location.host}/api/sessions/${encodeURIComponent(e)}/events?after=${K(w)}`),T.onopen=()=>{t!==re||K(d)!==e||(z(r,Mo(K(b)),!0),Me(),D=setTimeout(()=>{ne=0},3e4))},T.onmessage=t=>{let n=JSON.parse(String(t.data));if(n.type===`relay.resyncRequired`){je(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(he).some(t=>t.requestId===e.requestId)||z(he,[...K(he),e],!0)}if(n.type===`relay.event`&&n.event?.type===`turnCompleted`&&(z(b,null),z(r,Mo(K(b)),!0),z(S,wo(K(S),`assistant-${e}`),!0),F(e),je(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(b);z(b,typeof n.activeTurnId==`string`?n.activeTurnId:null,!0),i&&!K(b)&&z(r,Mo(K(b)),!0),z(f,K(f).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(he,K(he).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(C,[...K(C).filter(t=>t.id!==e.id),e],!0)}z(w,jo(K(w),n,t=>{z(S,Co(K(S),`assistant-${e}`,t,Date.now()),!0),F(e)},()=>{je(e)}),!0),ve.saveCursor(e,K(w))},T.onclose=()=>{t!==re||K(d)!==e||(D&&clearTimeout(D),z(r,`Connection interrupted. Reconnecting…`),E=setTimeout(()=>Xe(e),No(ne++)))}}var Ze=Os();Vr(`y74n0s`,e=>{xn(()=>{Yt.title=`Gestalt Mobile`})});var Qe=V(Ze),$e=e=>{Ba(e,{get variant(){return xe}})},et=e=>{var t=Ss();no(B(t),{get context(){return be}}),N(t),Y(e,t)},tt=e=>{var t=Ds(),c=B(t);{let e=I(()=>K(n)===`chat`?Ho(K(f).find(e=>e.id===K(d))?.workspacePath??``):null);Si(c,{get theme(){return K(i)},get sessionPath(){return K(e)},onthemechange:Se})}var _=H(c,2),w=e=>{var t=Ts(),n=H(B(t),2),i=e=>{var t=Cs(),n=V(t);ma(n,{get messages(){return K(S)}});var i=H(n,2);Ti(i,{get activities(){return K(C)}});var a=H(i,2);Ii(a,{get interactions(){return K(he)},get answers(){return ge},onanswer:Ke,onuserinput:e=>void We(e),onpermission:e=>void Ge(e),ondecision:(e,t)=>void Ue(e,t)}),Vi(H(a,2),{get status(){return K(r)},get message(){return K(y)},get activeTurnId(){return K(b)},get starting(){return K(x)},onchange:qe,onsend:()=>void ke(),oninterrupt:()=>void Ae()}),Y(e,t)},a=e=>{Y(e,ws())};Z(n,e=>{K(d)?e(i):e(a,-1)}),N(t),Y(e,t)},T=e=>{{let t=I(()=>K(O)?Ka(K(a),K(O))??null:null);vo(e,{get workspaceTree(){return K(a)},get selectedWorkspace(){return K(t)},get expandedIds(){return K(ae)},get summary(){return K(ie)},get refreshing(){return K(se)},get checkingOut(){return K(ce)},get cloning(){return K(le)},get error(){return K(ue)},get cloneStatus(){return K(de)},get confirmingPush(){return K(oe)},onpull:()=>void Le(),oncheckout:e=>void Ve(e),onopenpushconfirmation:()=>z(oe,!0),onpush:()=>void He(),oncancelpush:()=>z(oe,!1),onselect:P,onexpandedchange:e=>z(ae,e,!0),onclone:e=>void Be(e)})}},E=e=>{var t=Er(),n=V(t),r=e=>{ys(e,{get workspaceTree(){return K(a)},get codexProfiles(){return K(o)},get skillsState(){return K(s)},onworkspacechange:e=>void Pe(e,K(s)?.codexProfile??``),oncodexprofilechange:e=>void Pe(K(s)?.workspaceId??``,e)})},i=e=>{Y(e,Es())};Z(n,e=>{K(s)?e(r):e(i,-1)}),Y(e,t)},D=e=>{es(e,{get sessions(){return K(f)},get recentSessions(){return K(m)},get workspaceTree(){return K(a)},get workspaceId(){return K(l)},get expandedIds(){return K(u)},get sandbox(){return K(h)},get approvalPolicy(){return K(g)},get startingSession(){return K(v)},onworkspacechange:e=>z(l,e,!0),onexpandedchange:e=>z(u,e,!0),onsandboxchange:e=>z(h,e,!0),onapprovalpolicychange:e=>z(g,e,!0),onopen:Ee,onclose:e=>void j(e),onopenrecent:e=>void De(e),onforget:e=>void Oe(e),oncopyresume:e=>void M(e),onstart:()=>void A()})};Z(_,e=>{K(n)===`chat`?e(w):K(n)===`git`?e(T,1):K(n)===`skills`?e(E,2):e(D,-1)}),is(H(_,2),{get activeTab(){return K(n)},get chatEnabled(){return K(p)},onselect:Ne}),N(t),Y(e,t)};Z(Qe,e=>{xe===`error`||xe===`stacked`?e($e):be===`sessions`||be===`git`?e(et,1):e(tt,-1)});var nt=H(Qe,2),rt=e=>{Ra(e,{get queue(){return ye}})};Z(nt,e=>{xe!==`error`&&xe!==`stacked`&&e(rt)}),Y(e,Ze),ze()}var As=document.getElementById(`app`);if(!As)throw Error(`Missing application mount target`);Dr(ks,{target:As});
|
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-CR8XQoHz.js"></script>
|
|
14
|
+
<link rel="stylesheet" crossorigin href="/assets/index-B3MMCSoP.css">
|
|
15
15
|
</head>
|
|
16
16
|
<body>
|
|
17
17
|
<div id="app"></div>
|
|
@@ -29,6 +29,9 @@ import { registerRespondInteraction } from './features/sessions/respond-interact
|
|
|
29
29
|
import { stopSession } from './features/sessions/lifecycle/use-case.js';
|
|
30
30
|
import { registerSessionEvents } from './features/sessions/session-events/endpoint.js';
|
|
31
31
|
import { registerProblemHandler } from './platform/http/problem-handler.js';
|
|
32
|
+
import { registerListAvailableSkills } from './features/skills/list-available/endpoint.js';
|
|
33
|
+
import { registerListSkillProfiles } from './features/skills/list-profiles/endpoint.js';
|
|
34
|
+
import { registerReplaceSkillProfile } from './features/skills/replace-profile/endpoint.js';
|
|
32
35
|
export async function buildApp(deps) {
|
|
33
36
|
const app = fastify({ logger: false });
|
|
34
37
|
if (deps.staticDir)
|
|
@@ -142,6 +145,11 @@ export async function buildApp(deps) {
|
|
|
142
145
|
workspaces: deps.gitSummary.workspaces,
|
|
143
146
|
clone: deps.gitSummary.clone,
|
|
144
147
|
});
|
|
148
|
+
if (deps.skills) {
|
|
149
|
+
registerListAvailableSkills(app, deps.skills);
|
|
150
|
+
registerListSkillProfiles(app, deps.skills);
|
|
151
|
+
registerReplaceSkillProfile(app, deps.skills);
|
|
152
|
+
}
|
|
145
153
|
registerProblemHandler(app, Boolean(deps.staticDir));
|
|
146
154
|
return app;
|
|
147
155
|
}
|
|
@@ -6,12 +6,14 @@
|
|
|
6
6
|
import { execFile } from 'node:child_process';
|
|
7
7
|
import { existsSync } from 'node:fs';
|
|
8
8
|
import { readFile } from 'node:fs/promises';
|
|
9
|
+
import { homedir } from 'node:os';
|
|
9
10
|
import { dirname, resolve } from 'node:path';
|
|
10
11
|
import { fileURLToPath } from 'node:url';
|
|
11
12
|
import { promisify } from 'node:util';
|
|
12
13
|
import { composeRelayApp } from './composition.js';
|
|
13
14
|
import { CliUsageError, parseConfig } from './config.js';
|
|
14
15
|
import { CodexProfileCatalog } from './platform/catalog/codex-profile-catalog.js';
|
|
16
|
+
import { FilesystemSkillProfileStore } from './platform/skills/filesystem-skill-profile-store.js';
|
|
15
17
|
const runFile = promisify(execFile);
|
|
16
18
|
export const usage = `Usage: gestalt-mobile [options]
|
|
17
19
|
|
|
@@ -20,6 +22,8 @@ Options:
|
|
|
20
22
|
--host <address> Listen address (default: 127.0.0.1)
|
|
21
23
|
--port <number> Listen port (default: 3000)
|
|
22
24
|
--data-dir <path> Directory for persistent application data
|
|
25
|
+
--skills <profile> Use a global skill profile for every session
|
|
26
|
+
--skills list List saved global skill profiles without starting the server
|
|
23
27
|
--help Show this help
|
|
24
28
|
--version Show the installed version`;
|
|
25
29
|
export function packageRoot(moduleUrl) {
|
|
@@ -77,8 +81,32 @@ function parseInvocation(args, cwd) {
|
|
|
77
81
|
throw new CliUsageError('--version cannot be combined with other arguments');
|
|
78
82
|
return { command: 'version' };
|
|
79
83
|
}
|
|
84
|
+
const skills = args.indexOf('--skills');
|
|
85
|
+
if (skills !== -1 && args[skills + 1] === 'list') {
|
|
86
|
+
if (args.length !== 2)
|
|
87
|
+
throw new CliUsageError('--skills list cannot be combined with other arguments');
|
|
88
|
+
return { command: 'list' };
|
|
89
|
+
}
|
|
80
90
|
return { command: 'run', config: parseConfig(args, cwd) };
|
|
81
91
|
}
|
|
92
|
+
async function listSkillProfiles(store, stdout, stderr) {
|
|
93
|
+
let failed = false;
|
|
94
|
+
for (const name of await store.listGlobalProfileNames()) {
|
|
95
|
+
try {
|
|
96
|
+
const profile = await store.readGlobalProfile(name);
|
|
97
|
+
if (!profile)
|
|
98
|
+
continue;
|
|
99
|
+
stdout.write(`${profile.name}\n ${store.globalProfilePath(name)}\n`);
|
|
100
|
+
for (const skill of [...profile.skills].filter((entry) => entry.enabled).sort((a, b) => a.name.localeCompare(b.name) || a.path.localeCompare(b.path)))
|
|
101
|
+
stdout.write(` ${skill.name}\t${skill.path}\n`);
|
|
102
|
+
}
|
|
103
|
+
catch (error) {
|
|
104
|
+
failed = true;
|
|
105
|
+
stderr.write(`${name}: ${error instanceof Error ? error.message : 'Invalid skill profile.'}\n`);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
return failed ? 1 : 0;
|
|
109
|
+
}
|
|
82
110
|
export async function runCli(dependencies = {}) {
|
|
83
111
|
const args = dependencies.args ?? process.argv.slice(2);
|
|
84
112
|
const cwd = dependencies.cwd ?? process.cwd();
|
|
@@ -103,7 +131,24 @@ export async function runCli(dependencies = {}) {
|
|
|
103
131
|
stdout.write(`${await packageVersion(moduleUrl)}\n`);
|
|
104
132
|
return 0;
|
|
105
133
|
}
|
|
134
|
+
const skillProfiles = new FilesystemSkillProfileStore(dependencies.homeDirectory ?? homedir());
|
|
135
|
+
if (invocation.command === 'list')
|
|
136
|
+
return listSkillProfiles(skillProfiles, stdout, stderr);
|
|
106
137
|
const config = invocation.config;
|
|
138
|
+
let explicitSkillProfile;
|
|
139
|
+
try {
|
|
140
|
+
explicitSkillProfile = config.skillsProfile
|
|
141
|
+
? await skillProfiles.readGlobalProfile(config.skillsProfile)
|
|
142
|
+
: undefined;
|
|
143
|
+
}
|
|
144
|
+
catch {
|
|
145
|
+
stderr.write(`Invalid skill profile: ${config.skillsProfile}\n\n${usage}\n`);
|
|
146
|
+
return 2;
|
|
147
|
+
}
|
|
148
|
+
if (config.skillsProfile && !explicitSkillProfile) {
|
|
149
|
+
stderr.write(`Unknown skill profile: ${config.skillsProfile}\n\n${usage}\n`);
|
|
150
|
+
return 2;
|
|
151
|
+
}
|
|
107
152
|
const app = await (dependencies.compose ?? composeRelayApp)({
|
|
108
153
|
root: config.root,
|
|
109
154
|
dataDir: config.dataDir,
|
|
@@ -111,6 +156,8 @@ export async function runCli(dependencies = {}) {
|
|
|
111
156
|
profiles: new CodexProfileCatalog(),
|
|
112
157
|
installedCodexVersion: await (dependencies.probeCodexVersion ?? probeCodexVersion)(),
|
|
113
158
|
startAppServers: true,
|
|
159
|
+
homeDirectory: dependencies.homeDirectory,
|
|
160
|
+
explicitSkillProfile,
|
|
114
161
|
});
|
|
115
162
|
installShutdownHandlers(app, dependencies.signalSource);
|
|
116
163
|
let address;
|
|
@@ -31,6 +31,9 @@ import { RelaySession } from './features/sessions/model/relay-session.js';
|
|
|
31
31
|
import { toPendingInteraction } from './platform/codex/server-request.js';
|
|
32
32
|
import { isValidInteractionResponse } from './features/sessions/interaction/response-validator.js';
|
|
33
33
|
import { promoteRecentThread } from './features/sessions/promote-recent-thread/use-case.js';
|
|
34
|
+
import { FilesystemSkillProfileStore } from './platform/skills/filesystem-skill-profile-store.js';
|
|
35
|
+
import { CodexSkillCatalog } from './platform/skills/codex-skill-catalog.js';
|
|
36
|
+
import { compileSkillOverride } from './features/skills/model/skill-profile.js';
|
|
34
37
|
const generatedProtocolVersion = 'codex-cli 0.144.3';
|
|
35
38
|
export async function composeRelayApp(options) {
|
|
36
39
|
const root = resolve(options.root);
|
|
@@ -46,6 +49,18 @@ export async function composeRelayApp(options) {
|
|
|
46
49
|
const withPendingInteractions = (session) => (session ? { ...session, pendingInteractions: interactions.list(session.id) } : null);
|
|
47
50
|
const events = new SessionEventBus();
|
|
48
51
|
const workspaces = new FilesystemWorkspaceCatalog(root);
|
|
52
|
+
const skillProfiles = new FilesystemSkillProfileStore(options.homeDirectory ?? homedir());
|
|
53
|
+
const resolveSkills = async (profile, cwd) => {
|
|
54
|
+
const project = await skillProfiles.readWorkspaceDefault(cwd);
|
|
55
|
+
if (!options.explicitSkillProfile && !project)
|
|
56
|
+
return undefined;
|
|
57
|
+
const catalog = await new CodexSkillCatalog(profile, options.launchAppServer ?? launchCodexAppServer).list(cwd);
|
|
58
|
+
return compileSkillOverride({
|
|
59
|
+
discovered: catalog.skills,
|
|
60
|
+
explicit: options.explicitSkillProfile?.skills,
|
|
61
|
+
project: project?.skills,
|
|
62
|
+
}).skillsConfig;
|
|
63
|
+
};
|
|
49
64
|
const recentThreads = createRecentThreadLister({
|
|
50
65
|
root,
|
|
51
66
|
profiles: options.profiles,
|
|
@@ -78,7 +93,7 @@ export async function composeRelayApp(options) {
|
|
|
78
93
|
sessions.save(updated);
|
|
79
94
|
events.publish(journal.append(sessionId, 'interaction.requested', interaction, updated.updatedAt));
|
|
80
95
|
return true;
|
|
81
|
-
}, (sessionId) => recoverExitedSession(sessionId))
|
|
96
|
+
}, (sessionId) => recoverExitedSession(sessionId), resolveSkills)
|
|
82
97
|
: null;
|
|
83
98
|
const saveSession = (session) => {
|
|
84
99
|
sessions.save(session);
|
|
@@ -113,6 +128,16 @@ export async function composeRelayApp(options) {
|
|
|
113
128
|
};
|
|
114
129
|
},
|
|
115
130
|
},
|
|
131
|
+
skills: {
|
|
132
|
+
workspaces,
|
|
133
|
+
profiles: options.profiles,
|
|
134
|
+
catalog: (profile) => new CodexSkillCatalog(profile, options.launchAppServer ?? launchCodexAppServer),
|
|
135
|
+
selections: skillProfiles,
|
|
136
|
+
listGlobalProfileNames: () => skillProfiles.listGlobalProfileNames(),
|
|
137
|
+
readGlobalProfile: (name) => skillProfiles.readGlobalProfile(name),
|
|
138
|
+
replaceGlobalProfile: (profile) => skillProfiles.replaceGlobalProfile(profile),
|
|
139
|
+
profilePath: (name) => skillProfiles.globalProfilePath(name),
|
|
140
|
+
},
|
|
116
141
|
logger: console,
|
|
117
142
|
staticDir: options.staticDir,
|
|
118
143
|
recentThreads,
|
|
@@ -7,7 +7,7 @@ import { resolve } from 'node:path';
|
|
|
7
7
|
export class CliUsageError extends Error {
|
|
8
8
|
exitCode = 2;
|
|
9
9
|
}
|
|
10
|
-
const optionNames = new Set(['--cwd', '--host', '--port', '--data-dir']);
|
|
10
|
+
const optionNames = new Set(['--cwd', '--host', '--port', '--data-dir', '--skills']);
|
|
11
11
|
export function parseConfig(args, cwd = process.cwd()) {
|
|
12
12
|
const values = new Map();
|
|
13
13
|
for (let index = 0; index < args.length; index += 1) {
|
|
@@ -33,5 +33,6 @@ export function parseConfig(args, cwd = process.cwd()) {
|
|
|
33
33
|
port,
|
|
34
34
|
root: resolve(cwd, values.get('--cwd') ?? '.'),
|
|
35
35
|
dataDir: values.get('--data-dir'),
|
|
36
|
+
skillsProfile: values.get('--skills'),
|
|
36
37
|
};
|
|
37
38
|
}
|