codebay 0.12.1 → 0.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/.mochi/manifest.json +127 -111
  2. package/.mochi/svelte-client/HydratableIsland-zrdsrsmg.js +1 -0
  3. package/.mochi/svelte-client/{_hydrate-AppShell_2rtnxn6pgp2rh-5kb6kh2d.js → _hydrate-AppShell_2rtnxn6pgp2rh-v7y7dh53.js} +2 -2
  4. package/.mochi/svelte-client/{_hydrate-AvatarsView_257s9yq1wwr4f-c51gt15m.js → _hydrate-AvatarsView_257s9yq1wwr4f-tmwd6fpb.js} +1 -1
  5. package/.mochi/svelte-client/{_hydrate-InstanceView_2ma45l9bybfhl-d256bw54.js → _hydrate-InstanceView_2ma45l9bybfhl-m7t64dbh.js} +1 -1
  6. package/.mochi/svelte-client/_hydrate-SettingsView_8hmarwmf8onq-4a7ann1f.js +40 -0
  7. package/.mochi/svelte-client/{chunk-2eaagsfc.js → chunk-0mc09cyb.js} +1 -1
  8. package/.mochi/svelte-client/{chunk-a5e8vytv.js → chunk-5jwfs4p9.js} +2 -2
  9. package/.mochi/svelte-client/chunk-6qg4q98a.js +2 -0
  10. package/.mochi/svelte-client/{chunk-d8rdrqsh.js → chunk-ccfh8hxz.js} +1 -1
  11. package/.mochi/svelte-client/{chunk-d9bszcp8.js → chunk-phf7v5jj.js} +1 -1
  12. package/.mochi/svelte-client/{chunk-y1xjps59.js → chunk-spk1b2r4.js} +1 -1
  13. package/.mochi/svelte-client/chunk-tmeh70wg.js +2 -0
  14. package/.mochi/svelte-client/{chunk-6v5d7dex.js → chunk-vs1yjbqt.js} +1 -1
  15. package/.mochi/svelte-client/{chunk-1ttqgrz7.js → chunk-x0m3k0rn.js} +1 -1
  16. package/.mochi/svelte-client/{chunk-s70rry6z.js → chunk-y7f4jbdm.js} +1 -1
  17. package/.mochi/svelte-compile/{App-dn3kh0xn.server.js → App-94xsdn0w.server.js} +2 -2
  18. package/.mochi/svelte-compile/{Avatars-7k5055m8.server.js → Avatars-fnccw47h.server.js} +1 -1
  19. package/.mochi/svelte-compile/{Instance-hj76qnha.server.js → Instance-knnkcn2p.server.js} +1 -1
  20. package/.mochi/svelte-compile/{Settings-m2bfa4k4.server.js → Settings-a7b11v90.server.js} +274 -142
  21. package/.mochi/svelte-compile/{chunk-qc0f73f3.js → chunk-apdte4nh.js} +7 -8
  22. package/.mochi/svelte-compile/{chunk-zd49axkf.js → chunk-w0hca7va.js} +2 -1
  23. package/package.json +1 -1
  24. package/public/favicon.svg +9 -0
  25. package/src/avatars/bee.ts +7 -8
  26. package/src/components/SettingsView.svelte +148 -0
  27. package/src/container-injections/claude-code-credentials.ts +2 -3
  28. package/src/container-injections/claude-code-install.ts +12 -7
  29. package/src/container-injections/claude-code-skills.ts +125 -0
  30. package/src/container-injections/claude-code-update.ts +45 -10
  31. package/src/container-injections/claude-output-style.ts +83 -0
  32. package/src/container-injections/claude-statusline.ts +5 -16
  33. package/src/lib/container-files.server.ts +22 -0
  34. package/src/lib/host-claude.server.ts +31 -0
  35. package/src/lib/injections.server.ts +7 -1
  36. package/src/pages/Settings.svelte +12 -1
  37. package/src/routes.ts +19 -0
  38. package/src/shell.html +1 -0
  39. package/src/types.ts +16 -0
  40. package/.mochi/svelte-client/HydratableIsland-4j3bazeq.js +0 -1
  41. package/.mochi/svelte-client/_hydrate-SettingsView_8hmarwmf8onq-rw5z89pa.js +0 -39
  42. package/.mochi/svelte-client/chunk-pz6dq0v3.js +0 -2
  43. package/.mochi/svelte-client/chunk-wcfbjj3x.js +0 -2
@@ -1,15 +1,17 @@
1
- import { existsSync, statSync } from 'node:fs';
1
+ import { statSync } from 'node:fs';
2
2
  import { readFile } from 'node:fs/promises';
3
- import { homedir } from 'node:os';
4
- import { join } from 'node:path';
5
3
  import { writeContainerFile } from '../lib/container-files.server.ts';
6
4
  import {
7
5
  claudeConfigFile,
8
6
  mergeClaudeSettings,
9
7
  readClaudeSettings
10
8
  } from '../lib/claude-settings.server.ts';
9
+ import { expandTilde, readHostClaudeSettings } from '../lib/host-claude.server.ts';
11
10
  import type { ContainerTarget, Injection } from '../lib/injections.server.ts';
12
11
 
12
+ // Re-exported so the modules and tests that historically imported these from here keep working.
13
+ export { expandTilde, readHostClaudeSettings };
14
+
13
15
  /** Left unexpanded — Claude Code invokes this long after the injection has finished. */
14
16
  const CONTAINER_SCRIPT_PATH = '${CLAUDE_CONFIG_DIR:-$HOME/.claude}/statusline.sh';
15
17
 
@@ -19,19 +21,6 @@ interface StatusLineConfig {
19
21
  script?: string;
20
22
  }
21
23
 
22
- export async function readHostClaudeSettings(): Promise<Record<string, unknown> | null> {
23
- const file = join(homedir(), '.claude', 'settings.json');
24
- if (!existsSync(file)) return null;
25
- try {
26
- return JSON.parse(await readFile(file, 'utf8')) as Record<string, unknown>;
27
- } catch {
28
- return null;
29
- }
30
- }
31
-
32
- export const expandTilde = (p: string): string =>
33
- p.startsWith('~/') ? join(homedir(), p.slice(2)) : p;
34
-
35
24
  /** Only a real file counts — else jq's `//` operator and a bare `/` resolve to the root dir. */
36
25
  const isExistingFile = (p: string): boolean => {
37
26
  try {
@@ -54,6 +54,15 @@ export function writeFileScript(file: ContainerFile): string {
54
54
  );
55
55
  }
56
56
 
57
+ /** Like `writeFileScript`, but the stdin payload is base64 so binary bytes survive the env-var carrier. */
58
+ export function writeBase64FileScript(file: ContainerFile): string {
59
+ const mode = file.mode ?? '644';
60
+ return (
61
+ `set -e; ${HOME_PRELUDE}f="${filePath(file)}"; mkdir -p "$(dirname "$f")"; ` +
62
+ `printf '%s' "$CODEBAY_STDIN" | base64 -d > "$f"; chmod ${mode} "$f"`
63
+ );
64
+ }
65
+
57
66
  /** Single-quotes a value for a sourced shell file so whatever it contains stays literal. */
58
67
  export const shellSingleQuote = (value: string): string => `'${value.replaceAll("'", "'\\''")}'`;
59
68
 
@@ -98,6 +107,19 @@ export async function writeContainerFile(
98
107
  return res.ok ? { ok: true } : { ok: false, error: res.error };
99
108
  }
100
109
 
110
+ /** Writes raw `bytes` to a container file, ferrying them as base64 so binary content stays intact. */
111
+ export async function writeContainerFileBytes(
112
+ target: ExecTarget,
113
+ file: ContainerFile,
114
+ bytes: Buffer
115
+ ): Promise<{ ok: boolean; error?: string }> {
116
+ const res = await execInContainer(target, {
117
+ script: writeBase64FileScript(file),
118
+ stdin: bytes.toString('base64')
119
+ });
120
+ return res.ok ? { ok: true } : { ok: false, error: res.error };
121
+ }
122
+
101
123
  /** Appends each line to every file it's missing from — the shared idempotent rc/conf write. */
102
124
  export async function appendLinesIfAbsent(
103
125
  target: ExecTarget,
@@ -0,0 +1,31 @@
1
+ import { existsSync } from 'node:fs';
2
+ import { readFile } from 'node:fs/promises';
3
+ import { homedir } from 'node:os';
4
+ import { join } from 'node:path';
5
+ import { getOption } from './db.server.ts';
6
+
7
+ /** Expands a leading `~` to the host home; other paths pass through untouched. */
8
+ export const expandTilde = (p: string): string =>
9
+ p === '~' ? homedir() : p.startsWith('~/') ? join(homedir(), p.slice(2)) : p;
10
+
11
+ /**
12
+ * Host directory the Claude config injections read from: the `claude_config_dir` setting when set,
13
+ * else `~/.claude`. One resolver so credentials, statusline, output styles, and skills never diverge.
14
+ */
15
+ export function hostClaudeDir(): string {
16
+ const custom = getOption('claude_config_dir')?.trim();
17
+ return custom ? expandTilde(custom) : join(homedir(), '.claude');
18
+ }
19
+
20
+ /** A path under the configured host Claude dir, e.g. `hostClaudeFile('CLAUDE.md')`. */
21
+ export const hostClaudeFile = (...parts: string[]): string => join(hostClaudeDir(), ...parts);
22
+
23
+ export async function readHostClaudeSettings(): Promise<Record<string, unknown> | null> {
24
+ const file = hostClaudeFile('settings.json');
25
+ if (!existsSync(file)) return null;
26
+ try {
27
+ return JSON.parse(await readFile(file, 'utf8')) as Record<string, unknown>;
28
+ } catch {
29
+ return null;
30
+ }
31
+ }
@@ -7,6 +7,7 @@ import { ttyd } from '../container-injections/ttyd.ts';
7
7
  import { gitIdentity } from '../container-injections/git-identity.ts';
8
8
  import { claudeCodeCredentials } from '../container-injections/claude-code-credentials.ts';
9
9
  import { claudeCodeCustom } from '../container-injections/claude-code-custom.ts';
10
+ import { claudeCodeSkills } from '../container-injections/claude-code-skills.ts';
10
11
  import { claudeCodeIdeExtension } from '../container-injections/claude-code-ide-extension.ts';
11
12
  import { codeServerDark } from '../container-injections/code-server-dark.ts';
12
13
  import { claudeCodeInstall } from '../container-injections/claude-code-install.ts';
@@ -17,6 +18,7 @@ import { attentionHooks } from '../container-injections/attention-hooks.ts';
17
18
  import { claudeStatusline } from '../container-injections/claude-statusline.ts';
18
19
  import { claudeModel } from '../container-injections/claude-model.ts';
19
20
  import { claudeEffortLevel } from '../container-injections/claude-effort-level.ts';
21
+ import { claudeOutputStyle } from '../container-injections/claude-output-style.ts';
20
22
  import { claudePermissionMode } from '../container-injections/claude-permission-mode.ts';
21
23
  import { claudeTrust } from '../container-injections/claude-trust.ts';
22
24
  import { claudeAliases } from '../container-injections/claude-aliases.ts';
@@ -66,6 +68,7 @@ function buildStages(claudeInjection: Injection): Injection[][] {
66
68
  tmux,
67
69
  claudeCodeInstall,
68
70
  claudeInjection,
71
+ claudeCodeSkills,
69
72
  claudeCodeIdeExtension,
70
73
  claudeEffortLevel
71
74
  ],
@@ -78,7 +81,10 @@ function buildStages(claudeInjection: Injection): Injection[][] {
78
81
  // claude-trust edits ~/.claude.json, which the stage-1 Claude slot also writes.
79
82
  // custom-env-vars writes nothing (values ride containerEnv) — it only verifies + health-checks.
80
83
  [claudeTrust, hostEnvVars, customEnvVars],
81
- [claudeNoCoauthor]
84
+ [claudeNoCoauthor],
85
+ // A settings.json writer of its own: every other stage already has one, and same-stage
86
+ // settings.json writers race — so output style merges last, on its own.
87
+ [claudeOutputStyle]
82
88
  ];
83
89
  }
84
90
 
@@ -3,18 +3,25 @@
3
3
  import '@fontsource-variable/jetbrains-mono';
4
4
  import SettingsView from '../components/SettingsView.svelte';
5
5
  import type { AvatarArt } from '../avatars/index.ts';
6
- import type { ClaudeEffortLevel, ClaudePermissionMode, InstanceMode } from '../types.ts';
6
+ import type {
7
+ ClaudeEffortLevel,
8
+ ClaudeOutputStyle,
9
+ ClaudePermissionMode,
10
+ InstanceMode
11
+ } from '../types.ts';
7
12
 
8
13
  let {
9
14
  pet,
10
15
  defaultMode,
11
16
  claudePermissionMode,
12
17
  claudeEffortLevel,
18
+ claudeOutputStyle,
13
19
  defaultImage,
14
20
  builtinImage,
15
21
  disableBuildCache,
16
22
  copyIgnorePatterns,
17
23
  builtinCopyIgnore,
24
+ claudeConfigDir,
18
25
  gitIdentityEnabled,
19
26
  gitIdentityName,
20
27
  gitIdentityEmail,
@@ -50,11 +57,13 @@
50
57
  defaultMode: InstanceMode;
51
58
  claudePermissionMode: ClaudePermissionMode;
52
59
  claudeEffortLevel: ClaudeEffortLevel;
60
+ claudeOutputStyle: ClaudeOutputStyle;
53
61
  defaultImage: string;
54
62
  builtinImage: string;
55
63
  disableBuildCache: boolean;
56
64
  copyIgnorePatterns: string;
57
65
  builtinCopyIgnore: string;
66
+ claudeConfigDir: string;
58
67
  gitIdentityEnabled: boolean;
59
68
  gitIdentityName: string;
60
69
  gitIdentityEmail: string;
@@ -93,11 +102,13 @@
93
102
  {defaultMode}
94
103
  {claudePermissionMode}
95
104
  {claudeEffortLevel}
105
+ {claudeOutputStyle}
96
106
  {defaultImage}
97
107
  {builtinImage}
98
108
  {disableBuildCache}
99
109
  {copyIgnorePatterns}
100
110
  {builtinCopyIgnore}
111
+ {claudeConfigDir}
101
112
  {gitIdentityEnabled}
102
113
  {gitIdentityName}
103
114
  {gitIdentityEmail}
package/src/routes.ts CHANGED
@@ -27,6 +27,7 @@ import {
27
27
  } from './container-injections/claude-code-update.ts';
28
28
  import { getClaudePermissionMode } from './container-injections/claude-permission-mode.ts';
29
29
  import { getClaudeEffortLevel } from './container-injections/claude-effort-level.ts';
30
+ import { getClaudeOutputStyle } from './container-injections/claude-output-style.ts';
30
31
  import { browse } from './lib/picker.server.ts';
31
32
  import { pickNamePrompt } from './avatars/name-prompts.ts';
32
33
  import { avatars, findAvatar } from './avatars/index.ts';
@@ -73,6 +74,7 @@ import {
73
74
  normalizeMode,
74
75
  normalizePermissionMode,
75
76
  normalizeEffortLevel,
77
+ normalizeOutputStyle,
76
78
  type InstanceFilter
77
79
  } from './types.ts';
78
80
 
@@ -205,12 +207,15 @@ export const routes: Record<string, MochiRouteValue> = {
205
207
  defaultMode: getDefaultMode(),
206
208
  claudePermissionMode: getClaudePermissionMode(),
207
209
  claudeEffortLevel: getClaudeEffortLevel(),
210
+ claudeOutputStyle: getClaudeOutputStyle(),
208
211
  defaultImage: getOption('default_image') ?? DEFAULT_IMAGE,
209
212
  builtinImage: DEFAULT_IMAGE,
210
213
  disableBuildCache: getOption('disable_build_cache') === '1',
211
214
  // An explicit empty string (as opposed to unset) means "copy everything".
212
215
  copyIgnorePatterns: getOption('copy_ignore_patterns') ?? DEFAULT_COPY_IGNORE,
213
216
  builtinCopyIgnore: DEFAULT_COPY_IGNORE,
217
+ // Blank means "use ~/.claude"; the host dir credentials/skills/statusLine read from.
218
+ claudeConfigDir: getOption('claude_config_dir') ?? '',
214
219
  // Not secrets, so the actual values (not just a "set" flag) go to the client.
215
220
  // Blank means "no override" — fall back to the host's git config.
216
221
  gitIdentityEnabled: gitIdentityEnabled(),
@@ -277,6 +282,13 @@ export const routes: Record<string, MochiRouteValue> = {
277
282
  return success({ level });
278
283
  },
279
284
 
285
+ // Injected into ~/.claude/settings.json at provision time, so it lands on create/rebuild.
286
+ claudeOutputStyle: ({ formData }) => {
287
+ const style = normalizeOutputStyle(str(formData, 'style'));
288
+ setOption('claude_output_style', style);
289
+ return success({ style });
290
+ },
291
+
280
292
  // Persist the default container image used when a source folder ships no devcontainer.json.
281
293
  defaultImage: ({ formData }) => {
282
294
  const image = str(formData, 'image');
@@ -324,6 +336,13 @@ export const routes: Record<string, MochiRouteValue> = {
324
336
  return success({ patterns });
325
337
  },
326
338
 
339
+ // The host directory Claude config injections read from; blank falls back to ~/.claude.
340
+ claudeConfigDir: ({ formData }) => {
341
+ const dir = str(formData, 'dir').trim();
342
+ setOption('claude_config_dir', dir);
343
+ return success({ dir });
344
+ },
345
+
327
346
  gitIdentityToggle: ({ formData }) => {
328
347
  const enabled = onChecked(formData, 'enabled');
329
348
  setOption('git_identity_enabled', enabled ? '1' : '0');
package/src/shell.html CHANGED
@@ -3,6 +3,7 @@
3
3
  <head>
4
4
  <meta charset="utf-8" />
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1" />
6
+ <link rel="icon" type="image/svg+xml" href="/favicon.svg" />
6
7
  <title>Codebay</title>
7
8
  <style>
8
9
  /* Each themed variable is defined once as light-dark(light, dark). With no
package/src/types.ts CHANGED
@@ -73,6 +73,22 @@ export function normalizeEffortLevel(value: unknown): ClaudeEffortLevel {
73
73
  : 'high';
74
74
  }
75
75
 
76
+ /**
77
+ * Claude Code's output style for new sessions, written to `settings.json` as `outputStyle`.
78
+ * `'default'` inherits whatever the host has; `'none'` forces it off; anything else is a literal
79
+ * Claude output-style name — append future built-ins (`'Explanatory'`, `'Learning'`, …) here.
80
+ */
81
+ export type ClaudeOutputStyle = 'default' | 'none' | 'Concise';
82
+
83
+ export const CLAUDE_OUTPUT_STYLES: ClaudeOutputStyle[] = ['default', 'none', 'Concise'];
84
+
85
+ /** Anything unrecognised falls back to inheriting the host's output style. */
86
+ export function normalizeOutputStyle(value: unknown): ClaudeOutputStyle {
87
+ return CLAUDE_OUTPUT_STYLES.includes(value as ClaudeOutputStyle)
88
+ ? (value as ClaudeOutputStyle)
89
+ : 'default';
90
+ }
91
+
76
92
  /** Dashboard run-state view filter: All | Active (running/creating) | Stopped (stopped/error). */
77
93
  export type InstanceFilter = 'all' | 'active' | 'stopped';
78
94
 
@@ -1 +0,0 @@
1
- import{lb as a}from"/_mochi/client/chunk-d9bszcp8.js";import"/_mochi/client/chunk-2eaagsfc.js";export{a as registerComponent};
@@ -1,39 +0,0 @@
1
- import{e as KI,f as Gw,g as VI,h as Pw,i as Dw,j as Mw,k as Fw,l as pw,m as hw}from"/_mochi/client/chunk-6v5d7dex.js";import{n as Kw,o as Xw,r as xw,t as Cw,u as jw,v as QI}from"/_mochi/client/chunk-wcfbjj3x.js";import{x as GI}from"/_mochi/client/chunk-1ttqgrz7.js";import{E as Vw,F as YI,G as CS,H as a,I as Hw,K as Uw,L as Bw}from"/_mochi/client/chunk-pz6dq0v3.js";import{M as H,N as XI,Q as Rw}from"/_mochi/client/chunk-a5e8vytv.js";import{Da as u,Ea as n0,Fa as k,Ha as i,Ja as j,Ka as W,La as U,Oa as J1,Ra as zw,T as I,Ta as T,U as Y,Ua as w1,Xa as M,Y as $0,Ya as G1,Z as o0,Za as I1,_a as d,ab as m,bb as q1,db as G,eb as R,fa as Ww,fb as Zw,ga as O1,ia as x,ib as O,ka as y,lb as kw,ma as p,na as N,oa as P1,pa as L,qa as Yw,ta as Q,ya as f}from"/_mochi/client/chunk-d9bszcp8.js";import"/_mochi/client/chunk-2eaagsfc.js";var zz=new Set(["$$slots","$$events","$$legacy"]);function i0(K,C){let J=G(C,zz),A=[["path",{d:"M22 7.7c0-.6-.4-1.2-.8-1.5l-6.3-3.9a1.72 1.72 0 0 0-1.7 0l-10.3 6c-.5.2-.9.8-.9 1.4v6.6c0 .5.4 1.2.8 1.5l6.3 3.9a1.72 1.72 0 0 0 1.7 0l10.3-6c.5-.3.9-1 .9-1.5Z"}],["path",{d:"M10 21.9V14L2.1 9.1"}],["path",{d:"m10 14 11.9-6.9"}],["path",{d:"M14 19.8v-8.1"}],["path",{d:"M18 17.5V9.4"}]];H(K,R({name:"container"},()=>J,{get iconNode(){return A}}))}var xz=new Set(["$$slots","$$events","$$legacy"]);function s0(K,C){let J=G(C,xz),A=[["path",{d:"M12 2v10"}],["path",{d:"M18.4 6.6a9 9 0 1 1-12.77.04"}]];H(K,R({name:"power"},()=>J,{get iconNode(){return A}}))}var Cz=new Set(["$$slots","$$events","$$legacy"]);function t0(K,C){let J=G(C,Cz),A=[["path",{d:"M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z"}],["path",{d:"M16 9a5 5 0 0 1 0 6"}],["path",{d:"M19.364 18.364a9 9 0 0 0 0-12.728"}]];H(K,R({name:"volume-2"},()=>J,{get iconNode(){return A}}))}var jz=new Set(["$$slots","$$events","$$legacy"]);function u0(K,C){let J=G(C,jz),A=[["path",{d:"M10 8h.01"}],["path",{d:"M12 12h.01"}],["path",{d:"M14 8h.01"}],["path",{d:"M16 12h.01"}],["path",{d:"M18 8h.01"}],["path",{d:"M6 8h.01"}],["path",{d:"M7 16h10"}],["path",{d:"M8 12h.01"}],["rect",{width:"20",height:"16",x:"2",y:"4",rx:"2"}]];H(K,R({name:"keyboard"},()=>J,{get iconNode(){return A}}))}var Zz=new Set(["$$slots","$$events","$$legacy"]);function d0(K,C){let J=G(C,Zz),A=[["circle",{cx:"11",cy:"4",r:"2"}],["circle",{cx:"18",cy:"8",r:"2"}],["circle",{cx:"20",cy:"16",r:"2"}],["path",{d:"M9 10a5 5 0 0 1 5 5v3.5a3.5 3.5 0 0 1-6.84 1.045Q6.52 17.48 4.46 16.84A3.5 3.5 0 0 1 5.5 10Z"}]];H(K,R({name:"paw-print"},()=>J,{get iconNode(){return A}}))}var Qz=new Set(["$$slots","$$events","$$legacy"]);function e0(K,C){let J=G(C,Qz),A=[["path",{d:"M12 2v2"}],["path",{d:"M14.837 16.385a6 6 0 1 1-7.223-7.222c.624-.147.97.66.715 1.248a4 4 0 0 0 5.26 5.259c.589-.255 1.396.09 1.248.715"}],["path",{d:"M16 12a4 4 0 0 0-4-4"}],["path",{d:"m19 5-1.256 1.256"}],["path",{d:"M20 12h2"}]];H(K,R({name:"sun-moon"},()=>J,{get iconNode(){return A}}))}var Az=new Set(["$$slots","$$events","$$legacy"]);function a0(K,C){let J=G(C,Az),A=[["circle",{cx:"12",cy:"12",r:"4"}],["path",{d:"M12 2v2"}],["path",{d:"M12 20v2"}],["path",{d:"m4.93 4.93 1.41 1.41"}],["path",{d:"m17.66 17.66 1.41 1.41"}],["path",{d:"M2 12h2"}],["path",{d:"M20 12h2"}],["path",{d:"m6.34 17.66-1.41 1.41"}],["path",{d:"m19.07 4.93-1.41 1.41"}]];H(K,R({name:"sun"},()=>J,{get iconNode(){return A}}))}var Jz=new Set(["$$slots","$$events","$$legacy"]);function v0(K,C){let J=G(C,Jz),A=[["path",{d:"M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401"}]];H(K,R({name:"moon"},()=>J,{get iconNode(){return A}}))}var Wz=new Set(["$$slots","$$events","$$legacy"]);function r0(K,C){let J=G(C,Wz),A=[["rect",{width:"20",height:"14",x:"2",y:"3",rx:"2"}],["line",{x1:"8",x2:"16",y1:"21",y2:"21"}],["line",{x1:"12",x2:"12",y1:"17",y2:"21"}]];H(K,R({name:"monitor"},()=>J,{get iconNode(){return A}}))}var Yz=k('<button type="button" role="radio"><!> </button>'),Kz=k('<div><span class="bar top svelte-3gcwuj"></span> <span class="bar bottom svelte-3gcwuj"></span> <span class="line svelte-3gcwuj"></span></div>'),Xz=k('<div class="picker svelte-3gcwuj" role="radiogroup" aria-label="Theme"></div> <!>',1);function AI(K,C){$0(C,!0);let J=x(p(Cw())),A=x(null),y1=320,j1=380,Z1=[{value:"auto",label:"Auto",icon:r0},{value:"light",label:"Light",icon:a0},{value:"dark",label:"Dark",icon:v0}],R1=(g)=>new Promise((z1)=>setTimeout(z1,g));async function s(g){if(g===f(J)||f(A))return;if(jw(g),xw("/api/settings/theme",{value:g}).catch(()=>{}),window.matchMedia("(prefers-reduced-motion: reduce)").matches){y(J,g,!0),QI(g);return}y(A,"collapse"),await R1(y1),y(J,g,!0),QI(g),y(A,"restore"),await R1(j1),y(A,null)}var N1=Xz(),L1=P1(N1);J1(L1,21,()=>Z1,({value:g,label:z1,icon:Q1})=>g,(g,z1)=>{let Q1=()=>f(z1).value,Y1=()=>f(z1).label,r1=()=>f(z1).icon;var A1=Yz();let M1;var $1=N(A1);zw($1,r1,(AS,K1)=>{K1(AS,{size:13})});var QS=L($1);I(A1),Q(()=>{M1=w1(A1,1,"segment svelte-3gcwuj",null,M1,{active:f(J)===Q1()}),d(A1,"aria-checked",f(J)===Q1()),W(QS,` ${Y1()??""}`)}),u("click",A1,()=>s(Q1())),j(g,A1)}),I(L1);var b1=L(L1,2);{var l1=(g)=>{var z1=Kz();let Q1;Q(()=>Q1=w1(z1,1,"crt svelte-3gcwuj",null,Q1,{collapse:f(A)==="collapse",restore:f(A)==="restore"})),j(g,z1)};U(b1,(g)=>{if(f(A))g(l1)})}j(K,N1),o0()}n0(["click"]);var Vz=new Set(["$$slots","$$events","$$legacy"]);function _0(K,C){let J=G(C,Vz),A=[["path",{d:"M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z"}],["path",{d:"M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12"}],["path",{d:"M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17"}]];H(K,R({name:"layers"},()=>J,{get iconNode(){return A}}))}var Gz=new Set(["$$slots","$$events","$$legacy"]);function SS(K,C){let J=G(C,Gz),A=[["path",{d:"M9 13h6"}],["path",{d:"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z"}]];H(K,R({name:"folder-minus"},()=>J,{get iconNode(){return A}}))}var Rz=new Set(["$$slots","$$events","$$legacy"]);function D1(K,C){let J=G(C,Rz),A=[["path",{d:"M10 11v6"}],["path",{d:"M14 11v6"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6"}],["path",{d:"M3 6h18"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"}]];H(K,R({name:"trash-2"},()=>J,{get iconNode(){return A}}))}var Hz=new Set(["$$slots","$$events","$$legacy"]);function a1(K,C){let J=G(C,Hz),A=[["path",{d:"m15 12-9.373 9.373a1 1 0 0 1-3.001-3L12 9"}],["path",{d:"m18 15 4-4"}],["path",{d:"m21.5 11.5-1.914-1.914A2 2 0 0 1 19 8.172v-.344a2 2 0 0 0-.586-1.414l-1.657-1.657A6 6 0 0 0 12.516 3H9l1.243 1.243A6 6 0 0 1 12 8.485V10l2 2h1.172a2 2 0 0 1 1.414.586L18.5 14.5"}]];H(K,R({name:"hammer"},()=>J,{get iconNode(){return A}}))}var Uz=new Set(["$$slots","$$events","$$legacy"]);function v1(K,C){let J=G(C,Uz),A=[["path",{d:"M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z"}],["circle",{cx:"16.5",cy:"7.5",r:".5",fill:"currentColor"}]];H(K,R({name:"key-round"},()=>J,{get iconNode(){return A}}))}var Pz=new Set(["$$slots","$$events","$$legacy"]);function fS(K,C){let J=G(C,Pz),A=[["path",{d:"M10 15H6a4 4 0 0 0-4 4v2"}],["path",{d:"m14.305 16.53.923-.382"}],["path",{d:"m15.228 13.852-.923-.383"}],["path",{d:"m16.852 12.228-.383-.923"}],["path",{d:"m16.852 17.772-.383.924"}],["path",{d:"m19.148 12.228.383-.923"}],["path",{d:"m19.53 18.696-.382-.924"}],["path",{d:"m20.772 13.852.924-.383"}],["path",{d:"m20.772 16.148.924.383"}],["circle",{cx:"18",cy:"15",r:"3"}],["circle",{cx:"9",cy:"7",r:"4"}]];H(K,R({name:"user-cog"},()=>J,{get iconNode(){return A}}))}var Dz=new Set(["$$slots","$$events","$$legacy"]);function IS(K,C){let J=G(C,Dz),A=[["path",{d:"M12 20v2"}],["path",{d:"M12 2v2"}],["path",{d:"M17 20v2"}],["path",{d:"M17 2v2"}],["path",{d:"M2 12h2"}],["path",{d:"M2 17h2"}],["path",{d:"M2 7h2"}],["path",{d:"M20 12h2"}],["path",{d:"M20 17h2"}],["path",{d:"M20 7h2"}],["path",{d:"M7 20v2"}],["path",{d:"M7 2v2"}],["rect",{x:"4",y:"4",width:"16",height:"16",rx:"2"}],["rect",{x:"8",y:"8",width:"8",height:"8",rx:"1"}]];H(K,R({name:"cpu"},()=>J,{get iconNode(){return A}}))}var Mz=new Set(["$$slots","$$events","$$legacy"]);function NS(K,C){let J=G(C,Mz),A=[["path",{d:"M8 21s-4-3-4-9 4-9 4-9"}],["path",{d:"M16 3s4 3 4 9-4 9-4 9"}],["line",{x1:"15",x2:"9",y1:"9",y2:"15"}],["line",{x1:"9",x2:"15",y1:"9",y2:"15"}]];H(K,R({name:"variable"},()=>J,{get iconNode(){return A}}))}var Fz=new Set(["$$slots","$$events","$$legacy"]);function wS(K,C){let J=G(C,Fz),A=[["path",{d:"M12.4 2.7a2.5 2.5 0 0 1 3.4 0l5.5 5.5a2.5 2.5 0 0 1 0 3.4l-3.7 3.7a2.5 2.5 0 0 1-3.4 0L8.7 9.8a2.5 2.5 0 0 1 0-3.4z"}],["path",{d:"m14 7 3 3"}],["path",{d:"m9.4 10.6-6.814 6.814A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814"}]];H(K,R({name:"key-square"},()=>J,{get iconNode(){return A}}))}var pz=new Set(["$$slots","$$events","$$legacy"]);function yS(K,C){let J=G(C,pz),A=[["path",{d:"M10 5H3"}],["path",{d:"M12 19H3"}],["path",{d:"M14 3v4"}],["path",{d:"M16 17v4"}],["path",{d:"M21 12h-9"}],["path",{d:"M21 19h-5"}],["path",{d:"M21 5h-7"}],["path",{d:"M8 10v4"}],["path",{d:"M8 12H3"}]];H(K,R({name:"sliders-horizontal"},()=>J,{get iconNode(){return A}}))}var hz=new Set(["$$slots","$$events","$$legacy"]);function LS(K,C){let J=G(C,hz),A=[["path",{d:"M11 5h10"}],["path",{d:"M11 12h10"}],["path",{d:"M11 19h10"}],["path",{d:"M4 4h1v5"}],["path",{d:"M4 9h2"}],["path",{d:"M6.5 20H3.4c0-1 2.6-1.925 2.6-3.5a1.5 1.5 0 0 0-2.6-1.02"}]];H(K,R({name:"list-ordered"},()=>J,{get iconNode(){return A}}))}var Bz=new Set(["$$slots","$$events","$$legacy"]);function zS(K,C){let J=G(C,Bz),A=[["path",{d:"M2.97 12.92A2 2 0 0 0 2 14.63v3.24a2 2 0 0 0 .97 1.71l3 1.8a2 2 0 0 0 2.06 0L12 19v-5.5l-5-3-4.03 2.42Z"}],["path",{d:"m7 16.5-4.74-2.85"}],["path",{d:"m7 16.5 5-3"}],["path",{d:"M7 16.5v5.17"}],["path",{d:"M12 13.5V19l3.97 2.38a2 2 0 0 0 2.06 0l3-1.8a2 2 0 0 0 .97-1.71v-3.24a2 2 0 0 0-.97-1.71L17 10.5l-5 3Z"}],["path",{d:"m17 16.5-5-3"}],["path",{d:"m17 16.5 4.74-2.85"}],["path",{d:"M17 16.5v5.17"}],["path",{d:"M7.97 4.42A2 2 0 0 0 7 6.13v4.37l5 3 5-3V6.13a2 2 0 0 0-.97-1.71l-3-1.8a2 2 0 0 0-2.06 0l-3 1.8Z"}],["path",{d:"M12 8 7.26 5.15"}],["path",{d:"m12 8 4.74-2.85"}],["path",{d:"M12 13.5V8"}]];H(K,R({name:"boxes"},()=>J,{get iconNode(){return A}}))}var kz=new Set(["$$slots","$$events","$$legacy"]);function xS(K,C){let J=G(C,kz),A=[["path",{d:"M15.39 4.39a1 1 0 0 0 1.68-.474 2.5 2.5 0 1 1 3.014 3.015 1 1 0 0 0-.474 1.68l1.683 1.682a2.414 2.414 0 0 1 0 3.414L19.61 15.39a1 1 0 0 1-1.68-.474 2.5 2.5 0 1 0-3.014 3.015 1 1 0 0 1 .474 1.68l-1.683 1.682a2.414 2.414 0 0 1-3.414 0L8.61 19.61a1 1 0 0 0-1.68.474 2.5 2.5 0 1 1-3.014-3.015 1 1 0 0 0 .474-1.68l-1.683-1.682a2.414 2.414 0 0 1 0-3.414L4.39 8.61a1 1 0 0 1 1.68.474 2.5 2.5 0 1 0 3.014-3.015 1 1 0 0 1-.474-1.68l1.683-1.682a2.414 2.414 0 0 1 3.414 0z"}]];H(K,R({name:"puzzle"},()=>J,{get iconNode(){return A}}))}var Tz=k('<div class="coin-row svelte-1ioj7vz"><span class="pixel-line svelte-1ioj7vz" aria-hidden="true"></span> <a class="coin-btn svelte-1ioj7vz" aria-label="Draw your own avatar" title="Draw your own avatar"><span class="new svelte-1ioj7vz" aria-hidden="true">New</span> <span class="coin svelte-1ioj7vz" aria-hidden="true"><!></span></a> <span class="pixel-line svelte-1ioj7vz" aria-hidden="true"></span></div>');function JI(K,C){let J=Zw(C,"href",3,"/avatars"),A={name:"coin",pixels:["..####..",".#....#.","#..##..#","#.####.#","#.####.#","#..##..#",".#....#.","..####.."]};var y1=Tz(),j1=L(N(y1),2),Z1=L(N(j1),2),R1=N(Z1);CS(R1,{get art(){return A},name:"coin",scale:3}),I(Z1),I(j1),Y(2),I(y1),Q(()=>d(j1,"href",J())),j(K,y1)}var Oz=new Set(["$$slots","$$events","$$legacy"]);function jS(K,C){let J=G(C,Oz),A=[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z"}],["path",{d:"m9 12 2 2 4-4"}]];H(K,R({name:"shield-check"},()=>J,{get iconNode(){return A}}))}var qz=new Set(["$$slots","$$events","$$legacy"]);function ZS(K,C){let J=G(C,qz),A=[["path",{d:"m12 14 4-4"}],["path",{d:"M3.34 19a10 10 0 1 1 17.32 0"}]];H(K,R({name:"gauge"},()=>J,{get iconNode(){return A}}))}var bz=k('<span class="title svelte-1n6ht58">Settings</span>'),S1=k('<div class="sub svelte-1n6ht58"><div class="msg error svelte-1n6ht58"> </div></div>'),Qw=k('<button type="button"> </button>'),lz=k('<span class="arch svelte-1n6ht58" title="Docker daemon architecture"> </span>'),cz=k(`Your Docker daemon runs on <strong> </strong> — pick an image that publishes
2
- an <strong> </strong> manifest, or the pull will fail.`,1),f1=k('<div class="msg error svelte-1n6ht58"> </div>'),WI=k('<div class="msg ok svelte-1n6ht58">Saved.</div>'),Ez=k(`<form class="row divided token-row svelte-1n6ht58" method="POST" action="?/gitIdentityOverride"><div class="label svelte-1n6ht58"><div class="text svelte-1n6ht58"><div class="name svelte-1n6ht58">Identity</div> <div class="desc svelte-1n6ht58">Both fields are required — leave either blank and the container falls back to the
3
- host's identity.</div></div></div> <div class="model-fields svelte-1n6ht58"><label class="model-row svelte-1n6ht58"><span class="model-label svelte-1n6ht58">Name</span> <input type="text" name="name" class="image-input svelte-1n6ht58" spellcheck="false" autocapitalize="off" autocorrect="off" placeholder="Jane Doe"/></label> <label class="model-row svelte-1n6ht58"><span class="model-label svelte-1n6ht58">Email</span> <input type="text" name="email" class="image-input svelte-1n6ht58" spellcheck="false" autocapitalize="off" autocorrect="off" placeholder="jane@example.com"/></label> <div class="model-save-row svelte-1n6ht58"><!></div></div> <!></form>`),C1=k('<div class="msg ok svelte-1n6ht58"> </div>'),mz=k('<span class="arch svelte-1n6ht58" title="Disabled while LiteLLM + Bedrock mode is on">disabled</span>'),gz=k(`<form class="row divided token-row svelte-1n6ht58" method="POST" action="?/githubToken"><div class="label svelte-1n6ht58"><div class="text svelte-1n6ht58"><div class="name svelte-1n6ht58">GitHub token</div> <div class="desc svelte-1n6ht58">macOS / Linux: run <code class="svelte-1n6ht58">gh auth token</code> to print your GitHub CLI token, or
4
- create a Personal Access Token at <code class="svelte-1n6ht58">github.com/settings/tokens</code> (scopes: <code class="svelte-1n6ht58">repo</code>, <code class="svelte-1n6ht58">read:org</code>). Leave blank and Save to clear.</div></div></div> <div class="image-controls svelte-1n6ht58"><input type="password" name="githubToken" class="image-input svelte-1n6ht58" spellcheck="false" autocapitalize="off" autocorrect="off" autocomplete="off"/> <!></div> <!></form> <form class="row divided token-row svelte-1n6ht58" method="POST" action="?/claudeToken"><div class="label svelte-1n6ht58"><div class="text svelte-1n6ht58"><div class="name svelte-1n6ht58">Claude Code token</div> <div class="desc svelte-1n6ht58">macOS / Linux: run <code class="svelte-1n6ht58">claude setup-token</code> to mint a long-lived token and
5
- paste it here. Copying a live login out of the keychain or <code class="svelte-1n6ht58">~/.claude/.credentials.json</code> works too, but that credential rotates —
6
- the first <code class="svelte-1n6ht58">claude</code> to refresh it signs the other one out. Leave blank and Save
7
- to clear.</div></div></div> <div class="image-controls svelte-1n6ht58"><input type="password" name="claudeToken" class="image-input svelte-1n6ht58" spellcheck="false" autocapitalize="off" autocorrect="off" autocomplete="off"/> <!></div> <!></form>`,1),iz=k('<span class="arch svelte-1n6ht58">disabled</span>'),sz=k(`Route <code class="svelte-1n6ht58">claude</code> through a LiteLLM proxy fronting AWS Bedrock instead of Anthropic's
8
- default API. When enabled, the Bedrock endpoint variables are injected into every new
9
- container, host OAuth credentials are not used, and "Set tokens manually" is disabled.`,1),tz=k('<form class="row divided token-row svelte-1n6ht58" method="POST" action="?/customBaseUrl"><div class="label svelte-1n6ht58"><div class="text svelte-1n6ht58"><div class="name svelte-1n6ht58">Base URL</div> <div class="desc svelte-1n6ht58">The LiteLLM proxy endpoint, e.g. <code class="svelte-1n6ht58">https://litellm.example.com/bedrock</code>. Passed as <code class="svelte-1n6ht58">ANTHROPIC_BEDROCK_BASE_URL</code>.</div></div></div> <div class="image-controls svelte-1n6ht58"><input type="text" name="baseUrl" class="image-input svelte-1n6ht58" spellcheck="false" autocapitalize="off" autocorrect="off" autocomplete="off" placeholder="https://litellm.example.com/bedrock"/> <!></div> <!></form> <form class="row divided token-row svelte-1n6ht58" method="POST" action="?/customToken"><div class="label svelte-1n6ht58"><div class="text svelte-1n6ht58"><div class="name svelte-1n6ht58">Auth token</div> <div class="desc svelte-1n6ht58">Your LiteLLM API key. Passed as <code class="svelte-1n6ht58">ANTHROPIC_AUTH_TOKEN</code>. Leave blank and\n\t\t\t\t\t\t\t\tSave to clear.</div></div></div> <div class="image-controls svelte-1n6ht58"><input type="password" name="token" class="image-input svelte-1n6ht58" spellcheck="false" autocapitalize="off" autocorrect="off" autocomplete="off"/> <!></div> <!></form> <form class="row divided token-row svelte-1n6ht58" method="POST" action="?/customModels"><div class="label svelte-1n6ht58"><div class="text svelte-1n6ht58"><div class="name svelte-1n6ht58">Model IDs</div> <div class="desc svelte-1n6ht58">Model aliases to use for each tier. Prefilled with defaults from the reference\n\t\t\t\t\t\t\t\tlauncher script. Leave a field as-is to keep its current value.</div></div></div> <div class="model-fields svelte-1n6ht58"><label class="model-row svelte-1n6ht58"><span class="model-label svelte-1n6ht58">Opus</span> <input type="text" name="opusModel" class="image-input svelte-1n6ht58" spellcheck="false" autocapitalize="off" autocorrect="off" autocomplete="off"/></label> <label class="model-row svelte-1n6ht58"><span class="model-label svelte-1n6ht58">Sonnet</span> <input type="text" name="sonnetModel" class="image-input svelte-1n6ht58" spellcheck="false" autocapitalize="off" autocorrect="off" autocomplete="off"/></label> <label class="model-row svelte-1n6ht58"><span class="model-label svelte-1n6ht58">Haiku</span> <input type="text" name="haikuModel" class="image-input svelte-1n6ht58" spellcheck="false" autocapitalize="off" autocorrect="off" autocomplete="off"/></label> <label class="model-row svelte-1n6ht58"><span class="model-label svelte-1n6ht58">Small/fast</span> <input type="text" name="smallFastModel" class="image-input svelte-1n6ht58" spellcheck="false" autocapitalize="off" autocorrect="off" autocomplete="off"/></label> <label class="model-row svelte-1n6ht58"><span class="model-label svelte-1n6ht58">Default</span> <input type="text" name="defaultModel" class="image-input svelte-1n6ht58" spellcheck="false" autocapitalize="off" autocorrect="off" autocomplete="off"/></label> <div class="model-save-row svelte-1n6ht58"><!></div></div> <!></form>',1),uz=k('<span class="arch svelte-1n6ht58" title="Disabled while LiteLLM + Bedrock is on">disabled</span>'),dz=k(`Pin which model <code class="svelte-1n6ht58">claude</code> uses on the standard (subscription) path. Only
10
- the fields you fill are injected into new containers as <code class="svelte-1n6ht58">ANTHROPIC_*_MODEL</code> variables; blanks fall through to Claude Code's own defaults.`,1),ez=k('<form class="row divided token-row svelte-1n6ht58" method="POST" action="?/manualModels"><div class="label svelte-1n6ht58"><div class="text svelte-1n6ht58"><div class="name svelte-1n6ht58">Model IDs</div> <div class="desc svelte-1n6ht58">A model name or alias per tier, e.g. <code class="svelte-1n6ht58">opusplan</code>, <code class="svelte-1n6ht58">opus</code>, <code class="svelte-1n6ht58">sonnet</code>, or a full <code class="svelte-1n6ht58">claude-…</code> id. Leave a field blank to skip it.</div></div></div> <div class="model-fields svelte-1n6ht58"><label class="model-row svelte-1n6ht58"><span class="model-label svelte-1n6ht58">Opus</span> <input type="text" name="opusModel" class="image-input svelte-1n6ht58" spellcheck="false" autocapitalize="off" autocorrect="off" autocomplete="off"/></label> <label class="model-row svelte-1n6ht58"><span class="model-label svelte-1n6ht58">Sonnet</span> <input type="text" name="sonnetModel" class="image-input svelte-1n6ht58" spellcheck="false" autocapitalize="off" autocorrect="off" autocomplete="off"/></label> <label class="model-row svelte-1n6ht58"><span class="model-label svelte-1n6ht58">Haiku</span> <input type="text" name="haikuModel" class="image-input svelte-1n6ht58" spellcheck="false" autocapitalize="off" autocorrect="off" autocomplete="off"/></label> <label class="model-row svelte-1n6ht58"><span class="model-label svelte-1n6ht58">Small/fast</span> <input type="text" name="smallFastModel" class="image-input svelte-1n6ht58" spellcheck="false" autocapitalize="off" autocorrect="off" autocomplete="off"/></label> <label class="model-row svelte-1n6ht58"><span class="model-label svelte-1n6ht58">Default</span> <input type="text" name="defaultModel" class="image-input svelte-1n6ht58" spellcheck="false" autocapitalize="off" autocorrect="off" autocomplete="off"/></label> <div class="model-save-row svelte-1n6ht58"><!></div></div> <!></form>'),Aw=k('<input type="hidden" name="names"/>'),az=k('<form class="var-item svelte-1n6ht58" method="POST" action="?/hostEnvVarNames"><!> <span class="var-name svelte-1n6ht58"> </span> <span> </span> <button type="submit" class="var-remove svelte-1n6ht58"><!></button></form>'),Jw=k('<div class="var-empty svelte-1n6ht58">No variables added yet.</div>'),vz=k('<div class="row divided var-row svelte-1n6ht58"><div class="var-list svelte-1n6ht58"></div> <form class="var-add svelte-1n6ht58" method="POST" action="?/hostEnvVarNames"><!> <input type="text" name="names" class="image-input svelte-1n6ht58" spellcheck="false" autocapitalize="off" autocorrect="off" autocomplete="off" placeholder="AWS_ACCESS_KEY_ID"/> <!></form> <!></div>'),rz=k('<form class="var-item svelte-1n6ht58" method="POST" action="?/removeCustomEnvVar"><input type="hidden" name="name"/> <span class="var-name svelte-1n6ht58"> </span> <span class="var-status present svelte-1n6ht58" title="Set — injected into every new container">•••• saved</span> <button type="submit" class="var-remove svelte-1n6ht58"><!></button></form>'),$z=k('<div class="row divided var-row svelte-1n6ht58"><div class="var-list svelte-1n6ht58"></div> <form class="var-add svelte-1n6ht58" method="POST" action="?/setCustomEnvVar"><input type="text" name="name" class="image-input svelte-1n6ht58" spellcheck="false" autocapitalize="off" autocorrect="off" autocomplete="off" placeholder="MY_SECRET"/> <input type="password" name="value" class="image-input svelte-1n6ht58" spellcheck="false" autocapitalize="off" autocorrect="off" autocomplete="off" placeholder="value"/> <!></form> <!></div>'),oz=k('<form method="POST" action="?/petChoose" class="svelte-1n6ht58"><input type="hidden" name="name"/> <button type="submit"><!></button></form>'),nz=k('<div class="sub pets svelte-1n6ht58"></div>'),_z=k('<span class="shutting svelte-1n6ht58">Server is shutting down — you can close this tab.</span>'),Sx=k(`<div class="page svelte-1n6ht58"><!> <main class="content svelte-1n6ht58"><section class="card svelte-1n6ht58"><form class="row svelte-1n6ht58" method="POST" action="?/defaultMode"><div class="label svelte-1n6ht58"><!> <div class="text svelte-1n6ht58"><div class="name svelte-1n6ht58">Default editor</div> <div class="desc svelte-1n6ht58">What new instances start in. <strong>Full IDE</strong> serves browser VS Code; <strong>Terminal</strong> is lighter — just Claude Code in a terminal, no code-server. You
11
- can override this per instance when creating one.</div></div></div> <input type="hidden" name="mode"/> <div class="mode-toggle svelte-1n6ht58" role="group" aria-label="Default editor mode"><button type="button"><!> Full IDE</button> <button type="button"><!> Terminal</button></div></form> <!></section> <section class="card svelte-1n6ht58"><form class="row svelte-1n6ht58" method="POST" action="?/claudePermissionMode"><div class="label svelte-1n6ht58"><!> <div class="text svelte-1n6ht58"><div class="name svelte-1n6ht58">Claude permission mode</div> <div class="desc svelte-1n6ht58">The mode Claude Code starts in inside new instances. <strong>Default</strong> runs <code class="svelte-1n6ht58">--dangerously-skip-permissions</code>, which never prompts; the other three pass <code class="svelte-1n6ht58">--permission-mode</code> instead, because the skip flag overrides them. Applies on
12
- create and rebuild, not to already-running instances.</div></div></div> <input type="hidden" name="mode"/> <div class="mode-toggle svelte-1n6ht58" role="group" aria-label="Claude permission mode"></div></form> <!></section> <section class="card svelte-1n6ht58"><form class="row svelte-1n6ht58" method="POST" action="?/claudeEffortLevel"><div class="label svelte-1n6ht58"><!> <div class="text svelte-1n6ht58"><div class="name svelte-1n6ht58">Claude effort level</div> <div class="desc svelte-1n6ht58">The default reasoning effort Claude Code starts new sessions at inside instances,
13
- written to <code class="svelte-1n6ht58">~/.claude/settings.json</code>. Applies on create and rebuild, not to
14
- already-running instances.</div></div></div> <input type="hidden" name="level"/> <div class="mode-toggle svelte-1n6ht58" role="group" aria-label="Claude effort level"></div></form> <!></section> <section class="card svelte-1n6ht58"><form class="row image-row svelte-1n6ht58" method="POST" action="?/defaultImage"><div class="label svelte-1n6ht58"><!> <div class="text svelte-1n6ht58"><div class="name svelte-1n6ht58">Default container image <!></div> <div class="desc svelte-1n6ht58">Used only when a project folder ships no devcontainer.json. Takes effect for instances
15
- created from now on.</div></div></div> <div class="image-controls svelte-1n6ht58"><input type="text" name="image" class="image-input svelte-1n6ht58" spellcheck="false" autocapitalize="off" autocorrect="off" placeholder="mcr.microsoft.com/devcontainers/base:ubuntu"/> <!> <!></div> <div class="desc tip svelte-1n6ht58"><!></div> <!></form></section> <section class="card svelte-1n6ht58"><form class="row image-row svelte-1n6ht58" method="POST" action="?/copyIgnorePatterns"><div class="label svelte-1n6ht58"><!> <div class="text svelte-1n6ht58"><div class="name svelte-1n6ht58">Skip when copying a local folder</div> <div class="desc svelte-1n6ht58">Comma-separated folder/file names excluded when copying a local source folder into a
16
- new instance's workspace. Leave blank to copy everything. Only applies to local
17
- folders — cloning a Git repo URL is unaffected.</div></div></div> <div class="image-controls svelte-1n6ht58"><input type="text" name="patterns" class="image-input svelte-1n6ht58" spellcheck="false" autocapitalize="off" autocorrect="off" placeholder="node_modules, .venv, dist"/> <!> <!></div> <!></form></section> <section class="card svelte-1n6ht58"><form class="row svelte-1n6ht58" method="POST" action="?/gitIdentityToggle"><div class="label svelte-1n6ht58"><!> <div class="text svelte-1n6ht58"><div class="name svelte-1n6ht58">Override git identity</div> <div class="desc svelte-1n6ht58">Inject a name and email as <code class="svelte-1n6ht58">git config --global user.name/user.email</code> in every
18
- new container, taking precedence over the host's own git config. When off, each container
19
- falls back to the host's identity.</div></div></div> <label class="switch svelte-1n6ht58"><input type="checkbox" name="enabled" class="svelte-1n6ht58"/> <span class="track svelte-1n6ht58"><span class="thumb svelte-1n6ht58"></span></span></label></form> <!> <!></section> <section class="card svelte-1n6ht58"><form class="row svelte-1n6ht58" method="POST" action="?/disableBuildCache"><div class="label svelte-1n6ht58"><!> <div class="text svelte-1n6ht58"><div class="name svelte-1n6ht58">Disable build cache</div> <div class="desc svelte-1n6ht58">Build every new container with <code class="svelte-1n6ht58">--build-no-cache</code>. Applies to first boot
20
- and rebuilds — slower, but always picks up upstream image/layer changes.</div></div></div> <label class="switch svelte-1n6ht58"><input type="checkbox" name="enabled" class="svelte-1n6ht58"/> <span class="track svelte-1n6ht58"><span class="thumb svelte-1n6ht58"></span></span></label></form> <!> <form class="row divided svelte-1n6ht58" method="POST" action="?/clearBuildCache"><div class="label svelte-1n6ht58"><!> <div class="text svelte-1n6ht58"><div class="name svelte-1n6ht58">Clear build cache</div> <div class="desc svelte-1n6ht58">Purge Docker's BuildKit layer cache now, so the next build runs uncached. Doesn't
21
- remove pulled images.</div> <!></div></div> <!></form> <form class="row divided svelte-1n6ht58" method="POST" action="?/rebuildAllNoCache"><div class="label svelte-1n6ht58"><!> <div class="text svelte-1n6ht58"><div class="name svelte-1n6ht58">Rebuild running containers (no cache)</div> <div class="desc svelte-1n6ht58">Rebuild every currently-running instance from scratch, without using any cached image
22
- layers. In-container edits are kept; stopped instances are left alone.</div> <!></div></div> <!></form></section> <section><form class="row svelte-1n6ht58" method="POST" action="?/manualTokensToggle"><div class="label svelte-1n6ht58"><!> <div class="text svelte-1n6ht58"><div class="name svelte-1n6ht58">Set tokens manually <!></div> <div class="desc svelte-1n6ht58"><!></div></div></div> <label class="switch svelte-1n6ht58"><input type="checkbox" name="enabled" class="svelte-1n6ht58"/> <span class="track svelte-1n6ht58"><span class="thumb svelte-1n6ht58"></span></span></label></form> <!> <!></section> <section><form class="row svelte-1n6ht58" method="POST" action="?/customEndpointToggle"><div class="label svelte-1n6ht58"><!> <div class="text svelte-1n6ht58"><div class="name svelte-1n6ht58">LiteLLM + Bedrock <!></div> <div class="desc svelte-1n6ht58"><!></div></div></div> <label class="switch svelte-1n6ht58"><input type="checkbox" name="enabled" class="svelte-1n6ht58"/> <span class="track svelte-1n6ht58"><span class="thumb svelte-1n6ht58"></span></span></label></form> <!> <!></section> <section><form class="row svelte-1n6ht58" method="POST" action="?/manualModelToggle"><div class="label svelte-1n6ht58"><!> <div class="text svelte-1n6ht58"><div class="name svelte-1n6ht58">Override models manually <!></div> <div class="desc svelte-1n6ht58"><!></div></div></div> <label class="switch svelte-1n6ht58"><input type="checkbox" name="enabled" class="svelte-1n6ht58"/> <span class="track svelte-1n6ht58"><span class="thumb svelte-1n6ht58"></span></span></label></form> <!> <!></section> <section class="card svelte-1n6ht58"><form class="row svelte-1n6ht58" method="POST" action="?/hostEnvVarsToggle"><div class="label svelte-1n6ht58"><!> <div class="text svelte-1n6ht58"><div class="name svelte-1n6ht58">Host environment variables</div> <div class="desc svelte-1n6ht58">Forward selected environment variables from this machine into every new container's
23
- interactive shells. Values are read from this process's own environment at container
24
- start and are never shown here or stored — only the variable names are saved.</div></div></div> <label class="switch svelte-1n6ht58"><input type="checkbox" name="enabled" class="svelte-1n6ht58"/> <span class="track svelte-1n6ht58"><span class="thumb svelte-1n6ht58"></span></span></label></form> <!> <!></section> <section class="card svelte-1n6ht58"><form class="row svelte-1n6ht58" method="POST" action="?/customEnvVarsToggle"><div class="label svelte-1n6ht58"><!> <div class="text svelte-1n6ht58"><div class="name svelte-1n6ht58">Custom environment variables</div> <div class="desc svelte-1n6ht58">Inject your own <code class="svelte-1n6ht58">NAME=value</code> pairs into every new container as <code class="svelte-1n6ht58">containerEnv</code>, available to all processes. Values are secret — stored
25
- locally, masked in the build log, and never shown here after saving. Re-add a name to
26
- update its value.</div></div></div> <label class="switch svelte-1n6ht58"><input type="checkbox" name="enabled" class="svelte-1n6ht58"/> <span class="track svelte-1n6ht58"><span class="thumb svelte-1n6ht58"></span></span></label></form> <!> <!></section> <section class="card svelte-1n6ht58"><div class="row svelte-1n6ht58"><div class="label svelte-1n6ht58"><!> <div class="text svelte-1n6ht58"><div class="name svelte-1n6ht58">Theme</div> <div class="desc svelte-1n6ht58">Light, dark, or follow the browser preference automatically (auto).</div></div></div> <!></div></section> <section class="card svelte-1n6ht58"><div class="row svelte-1n6ht58"><div class="label svelte-1n6ht58"><!> <div class="text svelte-1n6ht58"><div class="name svelte-1n6ht58">Attention sound</div> <div class="desc svelte-1n6ht58">Play a chime when an instance finishes a task or needs your input.</div></div></div> <label class="switch svelte-1n6ht58"><input type="checkbox" class="svelte-1n6ht58"/> <span class="track svelte-1n6ht58"><span class="thumb svelte-1n6ht58"></span></span></label></div></section> <section class="card svelte-1n6ht58"><div class="row svelte-1n6ht58"><div class="label svelte-1n6ht58"><!> <div class="text svelte-1n6ht58"><div class="name svelte-1n6ht58">Tab keyboard shortcuts</div> <div class="desc svelte-1n6ht58">Jump between open instance tabs with <code class="svelte-1n6ht58">Alt</code>+<code class="svelte-1n6ht58">1</code>–<code class="svelte-1n6ht58">9</code> (9 is
27
- always the last tab). Turn off to leave those keystrokes to the editor.</div></div></div> <label class="switch svelte-1n6ht58"><input type="checkbox" class="svelte-1n6ht58"/> <span class="track svelte-1n6ht58"><span class="thumb svelte-1n6ht58"></span></span></label></div></section> <section class="card svelte-1n6ht58"><form class="row svelte-1n6ht58" method="POST" action="?/petToggle"><div class="label svelte-1n6ht58"><!> <div class="text svelte-1n6ht58"><div class="name svelte-1n6ht58">Pet logo</div> <div class="desc svelte-1n6ht58">Swap the box in the header for a pixel pet.</div></div></div> <label class="switch svelte-1n6ht58"><input type="checkbox" name="enabled" class="svelte-1n6ht58"/> <span class="track svelte-1n6ht58"><span class="thumb svelte-1n6ht58"></span></span></label></form> <!> <!></section> <section class="card svelte-1n6ht58"><details class="advanced svelte-1n6ht58"><summary class="svelte-1n6ht58"><!> <span class="name svelte-1n6ht58">Advanced</span> <span class="hint svelte-1n6ht58">escape hatches — defaults are right for almost everyone</span></summary> <form class="row divided svelte-1n6ht58" method="POST" action="?/serialInjectionsToggle"><div class="label svelte-1n6ht58"><!> <div class="text svelte-1n6ht58"><div class="name svelte-1n6ht58">Serial boot injections</div> <div class="desc svelte-1n6ht58">Run boot injections one at a time instead of in parallel stages. Slower boot; useful
28
- when diagnosing injection interference.</div></div></div> <label class="switch svelte-1n6ht58"><input type="checkbox" name="enabled" class="svelte-1n6ht58"/> <span class="track svelte-1n6ht58"><span class="thumb svelte-1n6ht58"></span></span></label></form> <!> <form class="row divided svelte-1n6ht58" method="POST" action="?/noBuildkitToggle"><div class="label svelte-1n6ht58"><!> <div class="text svelte-1n6ht58"><div class="name svelte-1n6ht58">Don't force BuildKit</div> <div class="desc svelte-1n6ht58">Skip setting <code class="svelte-1n6ht58">DOCKER_BUILDKIT=1</code> for container builds and let the daemon's
29
- default builder decide. For daemons where forcing BuildKit breaks builds.</div></div></div> <label class="switch svelte-1n6ht58"><input type="checkbox" name="enabled" class="svelte-1n6ht58"/> <span class="track svelte-1n6ht58"><span class="thumb svelte-1n6ht58"></span></span></label></form> <!> <form class="row divided svelte-1n6ht58" method="POST" action="?/blockingExtInstallToggle"><div class="label svelte-1n6ht58"><!> <div class="text svelte-1n6ht58"><div class="name svelte-1n6ht58">Blocking IDE extension install</div> <div class="desc svelte-1n6ht58">Install the Claude Code IDE extension before code-server starts, so the first window
30
- always has it active. Slower first boot.</div></div></div> <label class="switch svelte-1n6ht58"><input type="checkbox" name="enabled" class="svelte-1n6ht58"/> <span class="track svelte-1n6ht58"><span class="thumb svelte-1n6ht58"></span></span></label></form> <!> <form class="row divided svelte-1n6ht58" method="POST" action="?/clearVersionCache"><div class="label svelte-1n6ht58"><!> <div class="text svelte-1n6ht58"><div class="name svelte-1n6ht58">Clear claude-code version cache</div> <div class="desc svelte-1n6ht58">Forget the cached latest-version check; the next instance boot asks the npm registry
31
- again.</div> <!></div></div> <!></form></details></section> <section class="card danger-card svelte-1n6ht58"><form class="row svelte-1n6ht58" method="POST" action="?/shutdown"><div class="label svelte-1n6ht58"><!> <div class="text svelte-1n6ht58"><div class="name svelte-1n6ht58">Delete database, containers, and shut down</div> <div class="desc svelte-1n6ht58">Stop and remove every instance and its container, delete all copied workspaces and the
32
- database, then shut down the server. This cannot be undone.</div></div></div> <!></form></section> <!> <div class="version svelte-1n6ht58"> </div></main></div> <!>`,1);function RI(K,C){$0(C,!0);let J=x(p(Pw())),A=x(p(Mw())),y1=x(p(C.pet)),j1=x(!1),Z1=x(null),R1=x(!1);Yw(()=>Rw());function s(S){return{onPending:S.setSaving,submit:({cancel:w})=>{if(S.confirmMessage&&!confirm(S.confirmMessage)){w();return}return S.setError(null),S.setMsg?.(null),({result:z})=>{if(z.type==="success")S.onSuccess(z.data);else if(z.type==="failure")S.setError(z.data?.error??"Request failed");else if(z.type==="error")S.setError("Network error. Try again.")}}}}function N1(S){return{onPending:S.setSaving,submit:({formData:w})=>{let z=w.get("enabled")==="on";return S.setError(null),({result:Z})=>{if(Z.type==="success"){S.onSuccess?.(Z.data);return}S.set(!z),S.setError(Z.type==="failure"?Z.data?.error??"Request failed":"Network error. Try again.")}}}}let L1=x(p(C.defaultMode)),b1=x(!1),l1=x(null),g,z1=s({setSaving:(S)=>y(b1,S,!0),setError:(S)=>y(l1,S,!0),setMsg:()=>{},onSuccess:(S)=>{if(S?.mode)y(L1,S.mode,!0)}});function Q1(S){if(S===f(L1))return;O1(()=>y(L1,S,!0)),g?.requestSubmit()}let Y1=x(p(C.claudePermissionMode)),r1=x(!1),A1=x(null),M1,$1=s({setSaving:(S)=>y(r1,S,!0),setError:(S)=>y(A1,S,!0),setMsg:()=>{},onSuccess:(S)=>{if(S?.mode)y(Y1,S.mode,!0)}}),QS={default:"Default",manual:"Manual",auto:"Auto",plan:"Plan"};function AS(S){if(S===f(Y1))return;O1(()=>y(Y1,S,!0)),M1?.requestSubmit()}let K1=x(p(C.claudeEffortLevel)),HI=x(!1),JS=x(null),WS,Tw=s({setSaving:(S)=>y(HI,S,!0),setError:(S)=>y(JS,S,!0),setMsg:()=>{},onSuccess:(S)=>{if(S?.level)y(K1,S.level,!0)}}),Ow={low:"Low",medium:"Medium",high:"High",xhigh:"X-High",max:"Max"};function qw(S){if(S===f(K1))return;O1(()=>y(K1,S,!0)),WS?.requestSubmit()}let c1=x(p(C.defaultImage)),YS=x(!1),KS=x(null),XS=x(!1),VS,bw=s({setSaving:(S)=>y(YS,S,!0),setError:(S)=>y(KS,S,!0),setMsg:(S)=>y(XS,!!S),onSuccess:(S)=>{y(c1,S?.image??f(c1),!0),y(XS,!0)}});function lw(){O1(()=>y(c1,C.builtinImage,!0)),VS?.requestSubmit()}let E1=x(p(C.copyIgnorePatterns)),GS=x(!1),RS=x(null),HS=x(!1),US,cw=s({setSaving:(S)=>y(GS,S,!0),setError:(S)=>y(RS,S,!0),setMsg:(S)=>y(HS,!!S),onSuccess:(S)=>{y(E1,S?.patterns??f(E1),!0),y(HS,!0)}});function Ew(){O1(()=>y(E1,C.builtinCopyIgnore,!0)),US?.requestSubmit()}let o1=x(p(C.gitIdentityEnabled)),UI=x(!1),PS=x(null),mw=N1({set:(S)=>y(o1,S,!0),setSaving:(S)=>y(UI,S,!0),setError:(S)=>y(PS,S,!0)}),n1=x(p(C.gitIdentityName)),_1=x(p(C.gitIdentityEmail)),PI=x(!1),DS=x(null),MS=x(!1),gw=s({setSaving:(S)=>y(PI,S,!0),setError:(S)=>y(DS,S,!0),setMsg:(S)=>y(MS,!!S),onSuccess:(S)=>{y(n1,S?.name??f(n1),!0),y(_1,S?.email??f(_1),!0),y(MS,!0)}}),FS=x(p(C.disableBuildCache)),DI=x(!1),pS=x(null),iw=N1({set:(S)=>y(FS,S,!0),setSaving:(S)=>y(DI,S,!0),setError:(S)=>y(pS,S,!0)}),hS=x(!1),S0=x(null),BS=x(null);function sw(S){if(S<=0)return"0 B";let w=["B","KB","MB","GB","TB"],z=Math.min(Math.floor(Math.log(S)/Math.log(1024)),w.length-1);return`${(S/1024**z).toFixed(z===0?0:1)} ${w[z]}`}let tw=s({setSaving:(S)=>y(hS,S,!0),setError:(S)=>y(BS,S,!0),setMsg:(S)=>y(S0,S,!0),onSuccess:(S)=>{y(S0,`Cleared — freed ${sw(S?.spaceReclaimed??0)}.`)}}),kS=x(!1),f0=x(null),TS=x(null),uw=s({setSaving:(S)=>y(kS,S,!0),setError:(S)=>y(TS,S,!0),setMsg:(S)=>y(f0,S,!0),confirmMessage:"Rebuild every running container from scratch (no build cache)? Each will restart and may take a while.",onSuccess:(S)=>{let w=S?.count??0;y(f0,w===0?"No running containers to rebuild.":`Rebuilding ${w} container(s)…`,!0)}}),OS=x(p(C.advancedSerialInjections)),MI=x(!1),qS=x(null),dw=N1({set:(S)=>y(OS,S,!0),setSaving:(S)=>y(MI,S,!0),setError:(S)=>y(qS,S,!0)}),bS=x(p(C.advancedNoBuildkit)),FI=x(!1),lS=x(null),ew=N1({set:(S)=>y(bS,S,!0),setSaving:(S)=>y(FI,S,!0),setError:(S)=>y(lS,S,!0)}),cS=x(p(C.advancedBlockingExtInstall)),pI=x(!1),ES=x(null),aw=N1({set:(S)=>y(cS,S,!0),setSaving:(S)=>y(pI,S,!0),setError:(S)=>y(ES,S,!0)}),mS=x(!1),I0=x(null),gS=x(null),vw=s({setSaving:(S)=>y(mS,S,!0),setError:(S)=>y(gS,S,!0),setMsg:(S)=>y(I0,S,!0),onSuccess:()=>{y(I0,"Cleared — the next instance boot re-checks the registry.")}}),m1=x(p(C.manualTokensEnabled)),hI=x(!1),iS=x(null),rw=N1({set:(S)=>y(m1,S,!0),setSaving:(S)=>y(hI,S,!0),setError:(S)=>y(iS,S,!0)}),sS=x(p(C.githubTokenSet)),tS=x(""),BI=x(!1),N0=x(null),uS=x(null),$w=s({setSaving:(S)=>y(BI,S,!0),setError:(S)=>y(uS,S,!0),setMsg:(S)=>y(N0,S,!0),onSuccess:(S)=>{y(sS,S?.set??!1,!0),y(tS,""),y(N0,f(sS)?"Saved.":"Cleared.",!0)}}),dS=x(p(C.claudeTokenSet)),eS=x(""),kI=x(!1),w0=x(null),aS=x(null),ow=s({setSaving:(S)=>y(kI,S,!0),setError:(S)=>y(aS,S,!0),setMsg:(S)=>y(w0,S,!0),onSuccess:(S)=>{y(dS,S?.set??!1,!0),y(eS,""),y(w0,f(dS)?"Saved.":"Cleared.",!0)}}),n=x(p(C.customEndpointEnabled)),TI=x(!1),vS=x(null),nw=N1({set:(S)=>y(n,S,!0),setSaving:(S)=>y(TI,S,!0),setError:(S)=>y(vS,S,!0),onSuccess:(S)=>{if(S?.enabled)y(F1,!1)}}),OI=x(p(C.customEndpointBaseUrl)),qI=x(!1),y0=x(null),rS=x(null),_w=s({setSaving:(S)=>y(qI,S,!0),setError:(S)=>y(rS,S,!0),setMsg:(S)=>y(y0,S,!0),onSuccess:(S)=>{y(y0,S?.set?"Saved.":"Cleared.",!0)}}),$S=x(""),oS=x(p(C.customEndpointTokenSet)),bI=x(!1),L0=x(null),nS=x(null),Sy=s({setSaving:(S)=>y(bI,S,!0),setError:(S)=>y(nS,S,!0),setMsg:(S)=>y(L0,S,!0),onSuccess:(S)=>{y(oS,S?.set??!1,!0),y($S,""),y(L0,f(oS)?"Saved.":"Cleared.",!0)}}),lI=x(p(C.customEndpointOpusModel)),cI=x(p(C.customEndpointSonnetModel)),EI=x(p(C.customEndpointHaikuModel)),mI=x(p(C.customEndpointSmallFastModel)),gI=x(p(C.customEndpointModel)),iI=x(!1),z0=x(null),_S=x(null),fy=s({setSaving:(S)=>y(iI,S,!0),setError:(S)=>y(_S,S,!0),setMsg:(S)=>y(z0,S,!0),onSuccess:()=>{y(z0,"Saved.")}}),F1=x(p(C.manualModelOverrideEnabled)),sI=x(!1),Sf=x(null),Iy=N1({set:(S)=>y(F1,S,!0),setSaving:(S)=>y(sI,S,!0),setError:(S)=>y(Sf,S,!0),onSuccess:(S)=>{if(S?.enabled)y(n,!1)}}),tI=x(p(C.manualOpusModel)),uI=x(p(C.manualSonnetModel)),dI=x(p(C.manualHaikuModel)),eI=x(p(C.manualSmallFastModel)),aI=x(p(C.manualModel)),vI=x(!1),x0=x(null),ff=x(null),Ny=s({setSaving:(S)=>y(vI,S,!0),setError:(S)=>y(ff,S,!0),setMsg:(S)=>y(x0,S,!0),onSuccess:()=>{y(x0,"Saved.")}}),p1=Ww(()=>f(m1)?"Set tokens manually":f(F1)?"Override models manually":null),C0=x(p(C.hostEnvVarsEnabled)),rI=x(!1),If=x(null),wy=N1({set:(S)=>y(C0,S,!0),setSaving:(S)=>y(rI,S,!0),setError:(S)=>y(If,S,!0),onSuccess:(S)=>{y(B1,S?.presence??{},!0)}}),h1=x(p([...C.hostEnvVarNames])),B1=x(p({...C.hostEnvVarPresence})),Nf=x(""),j0=x(!1),g1=x(null),H1=x(null),yy={onPending:(S)=>y(j0,S,!0),submit:({formData:S,cancel:w})=>{y(H1,null),y(g1,null);let z=S.getAll("names").map(String),P=(z.pop()??"").trim().toUpperCase();if(!P){w();return}if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(P)){y(H1,`Invalid variable name: ${P}`),w();return}if(y(Nf,""),z.includes(P)){w();return}let b=[...z,P];S.delete("names");for(let q of b)S.append("names",q);return({result:q})=>{if(q.type==="success")y(h1,b,!0),y(B1,q.data?.presence??{},!0),y(g1,"Saved.");else if(q.type==="failure")y(H1,q.data?.error??"Request failed",!0);else if(q.type==="error")y(H1,"Network error. Try again.")}}};function Ly(S){return s({setSaving:(w)=>y(j0,w,!0),setError:(w)=>y(H1,w,!0),setMsg:(w)=>y(g1,w,!0),onSuccess:(w)=>{y(h1,f(h1).filter((z)=>z!==S),!0),y(B1,w?.presence??{},!0)}})}let Z0=x(p(C.customEnvVarsEnabled)),$I=x(!1),wf=x(null),zy=N1({set:(S)=>y(Z0,S,!0),setSaving:(S)=>y($I,S,!0),setError:(S)=>y(wf,S,!0)}),i1=x(p([...C.customEnvVarNames])),yf=x(""),Lf=x(""),Q0=x(!1),s1=x(null),X1=x(null),xy={onPending:(S)=>y(Q0,S,!0),submit:({formData:S,cancel:w})=>{y(X1,null),y(s1,null);let z=String(S.get("name")??"").trim(),Z=String(S.get("value")??"");if(!z||!Z){y(X1,!z?"Name is required.":"Value is required.",!0),w();return}if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(z)){y(X1,`Invalid variable name: ${z}`),w();return}return S.set("name",z),({result:P})=>{if(P.type==="success")y(i1,P.data?.names??f(i1),!0),y(yf,""),y(Lf,""),y(s1,"Saved.");else if(P.type==="failure")y(X1,P.data?.error??"Request failed",!0);else if(P.type==="error")y(X1,"Network error. Try again.")}}};function Cy(S){return s({setSaving:(w)=>y(Q0,w,!0),setError:(w)=>y(X1,w,!0),setMsg:(w)=>y(s1,w,!0),onSuccess:(w)=>{y(i1,w?.names??f(i1).filter((z)=>z!==S),!0)}})}function jy(S){if(y(J,S,!0),Dw(S),pw(),S)hw("done")}function Zy(S){y(A,S,!0),Fw(S)}let Qy={onPending:(S)=>y(j1,S,!0),submit:()=>{return y(Z1,null),({result:S})=>{if(S.type==="success"){y(y1,S.data?.name?YI(S.data.name):void 0,!0);return}y(Z1,S.type==="failure"?S.data?.error??"Request failed":"Network error. Try again.",!0)}}};function Ay(S){return s({setSaving:(w)=>y(j1,w,!0),setError:(w)=>y(Z1,w,!0),onSuccess:(w)=>{y(y1,(w?.name?YI(w.name):void 0)??S,!0)}})}let Jy={submit:({cancel:S})=>{if(!confirm("Delete the database, remove all instances and their containers, and shut down the server? This cannot be undone.")){S();return}y(R1,!0)}};var oI=Sx(),zf=P1(oI),nI=N(zf);Uw(nI,{children:(S,w)=>{var z=bz();j(S,z)},$$slots:{default:!0}});var _I=L(nI,2),xf=N(_I),t1=N(xf),Cf=N(t1),Wy=N(Cf);KI(Wy,{size:20}),Y(2),I(Cf);var jf=L(Cf,2);M(jf);var SN=L(jf,2),U1=N(SN);let fN;var Yy=N(U1);Gw(Yy,{size:15}),Y(),I(U1);var k1=L(U1,2);let IN;var Ky=N(k1);KI(Ky,{size:15}),Y(),I(k1),I(SN),I(t1),q1(t1,(S)=>g=S,()=>g),T(t1,()=>O(z1));var Xy=L(t1,2);{var Vy=(S)=>{var w=S1(),z=N(w),Z=N(z,!0);I(z),I(w),Q(()=>W(Z,f(l1))),j(S,w)};U(Xy,(S)=>{if(f(l1))S(Vy)})}I(xf);var Zf=L(xf,2),u1=N(Zf),Qf=N(u1),Gy=N(Qf);jS(Gy,{size:20}),Y(2),I(Qf);var Af=L(Qf,2);M(Af);var NN=L(Af,2);J1(NN,20,()=>Kw,(S)=>S,(S,w)=>{var z=Qw();let Z;var P=N(z,!0);I(z),Q(()=>{Z=w1(z,1,"mode-btn svelte-1n6ht58",null,Z,{active:f(Y1)===w}),d(z,"aria-pressed",f(Y1)===w),z.disabled=f(r1),W(P,QS[w])}),u("click",z,()=>AS(w)),j(S,z)}),I(NN),I(u1),q1(u1,(S)=>M1=S,()=>M1),T(u1,()=>O($1));var Ry=L(u1,2);{var Hy=(S)=>{var w=S1(),z=N(w),Z=N(z,!0);I(z),I(w),Q(()=>W(Z,f(A1))),j(S,w)};U(Ry,(S)=>{if(f(A1))S(Hy)})}I(Zf);var Jf=L(Zf,2),d1=N(Jf),Wf=N(d1),Uy=N(Wf);ZS(Uy,{size:20}),Y(2),I(Wf);var Yf=L(Wf,2);M(Yf);var wN=L(Yf,2);J1(wN,20,()=>Xw,(S)=>S,(S,w)=>{var z=Qw();let Z;var P=N(z,!0);I(z),Q(()=>{Z=w1(z,1,"mode-btn svelte-1n6ht58",null,Z,{active:f(K1)===w}),d(z,"aria-pressed",f(K1)===w),z.disabled=f(HI),W(P,Ow[w])}),u("click",z,()=>qw(w)),j(S,z)}),I(wN),I(d1),q1(d1,(S)=>WS=S,()=>WS),T(d1,()=>O(Tw));var Py=L(d1,2);{var Dy=(S)=>{var w=S1(),z=N(w),Z=N(z,!0);I(z),I(w),Q(()=>W(Z,f(JS))),j(S,w)};U(Py,(S)=>{if(f(JS))S(Dy)})}I(Jf);var Kf=L(Jf,2),A0=N(Kf),Xf=N(A0),yN=N(Xf);i0(yN,{size:20});var LN=L(yN,2),zN=N(LN),My=L(N(zN));{var Fy=(S)=>{var w=lz(),z=N(w,!0);I(w),Q(()=>W(z,C.dockerArch)),j(S,w)};U(My,(S)=>{if(C.dockerArch)S(Fy)})}I(zN),Y(2),I(LN),I(Xf);var Vf=L(Xf,2),Gf=N(Vf);M(Gf);var xN=L(Gf,2);a(xN,{type:"submit",get disabled(){return f(YS)},children:(S,w)=>{Y();var z=i("Save");j(S,z)},$$slots:{default:!0}});var py=L(xN,2);a(py,{type:"button",get icon(){return GI},get disabled(){return f(YS)},onclick:lw,get title(){return`Reset to default (${C.builtinImage??""})`},"aria-label":"Reset to default image"}),I(Vf);var Rf=L(Vf,2),hy=N(Rf);{var By=(S)=>{var w=cz(),z=L(P1(w)),Z=N(z,!0);I(z);var P=L(z,2),b=N(P,!0);I(P),Y(),Q(()=>{W(Z,C.dockerArch),W(b,C.dockerArch)}),j(S,w)},ky=(S)=>{var w=i(`Pick an image whose manifest covers your Docker daemon's architecture, or the pull will
33
- fail.`);j(S,w)};U(hy,(S)=>{if(C.dockerArch)S(By);else S(ky,-1)})}I(Rf);var Ty=L(Rf,2);{var Oy=(S)=>{var w=f1(),z=N(w,!0);I(w),Q(()=>W(z,f(KS))),j(S,w)},qy=(S)=>{var w=WI();j(S,w)};U(Ty,(S)=>{if(f(KS))S(Oy);else if(f(XS))S(qy,1)})}I(A0),q1(A0,(S)=>VS=S,()=>VS),T(A0,()=>O(bw)),I(Kf);var Hf=L(Kf,2),J0=N(Hf),Uf=N(J0),by=N(Uf);SS(by,{size:20}),Y(2),I(Uf);var Pf=L(Uf,2),Df=N(Pf);M(Df);var CN=L(Df,2);a(CN,{type:"submit",get disabled(){return f(GS)},children:(S,w)=>{Y();var z=i("Save");j(S,z)},$$slots:{default:!0}});var ly=L(CN,2);a(ly,{type:"button",get icon(){return GI},get disabled(){return f(GS)},onclick:Ew,get title(){return`Reset to default (${C.builtinCopyIgnore??""})`},"aria-label":"Reset to default copy-ignore patterns"}),I(Pf);var cy=L(Pf,2);{var Ey=(S)=>{var w=f1(),z=N(w,!0);I(w),Q(()=>W(z,f(RS))),j(S,w)},my=(S)=>{var w=WI();j(S,w)};U(cy,(S)=>{if(f(RS))S(Ey);else if(f(HS))S(my,1)})}I(J0),q1(J0,(S)=>US=S,()=>US),T(J0,()=>O(cw)),I(Hf);var Mf=L(Hf,2),W0=N(Mf),Ff=N(W0),gy=N(Ff);fS(gy,{size:20}),Y(2),I(Ff);var jN=L(Ff,2),Y0=N(jN);M(Y0),Y(2),I(jN),I(W0),T(W0,()=>O(mw));var ZN=L(W0,2);{var iy=(S)=>{var w=S1(),z=N(w),Z=N(z,!0);I(z),I(w),Q(()=>W(Z,f(PS))),j(S,w)};U(ZN,(S)=>{if(f(PS))S(iy)})}var sy=L(ZN,2);{var ty=(S)=>{var w=Ez(),z=L(N(w),2),Z=N(z),P=L(N(Z),2);M(P),I(Z);var b=L(Z,2),q=L(N(b),2);M(q),I(b);var v=L(b,2),_=N(v);a(_,{type:"submit",get disabled(){return f(PI)},children:(D,t)=>{Y();var r=i("Save");j(D,r)},$$slots:{default:!0}}),I(v),I(z);var e=L(z,2);{var X=(D)=>{var t=f1(),r=N(t,!0);I(t),Q(()=>W(r,f(DS))),j(D,t)},V=(D)=>{var t=WI();j(D,t)};U(e,(D)=>{if(f(DS))D(X);else if(f(MS))D(V,1)})}I(w),T(w,()=>O(gw)),m(P,()=>f(n1),(D)=>y(n1,D)),m(q,()=>f(_1),(D)=>y(_1,D)),j(S,w)};U(sy,(S)=>{if(f(o1))S(ty)})}I(Mf);var pf=L(Mf,2),K0=N(pf),hf=N(K0),uy=N(hf);_0(uy,{size:20}),Y(2),I(hf);var QN=L(hf,2),X0=N(QN);M(X0),Y(2),I(QN),I(K0),T(K0,()=>O(iw));var AN=L(K0,2);{var dy=(S)=>{var w=S1(),z=N(w),Z=N(z,!0);I(z),I(w),Q(()=>W(Z,f(pS))),j(S,w)};U(AN,(S)=>{if(f(pS))S(dy)})}var V0=L(AN,2),Bf=N(V0),JN=N(Bf);D1(JN,{size:20});var WN=L(JN,2),ey=L(N(WN),4);{var ay=(S)=>{var w=f1(),z=N(w,!0);I(w),Q(()=>W(z,f(BS))),j(S,w)},vy=(S)=>{var w=C1(),z=N(w,!0);I(w),Q(()=>W(z,f(S0))),j(S,w)};U(ey,(S)=>{if(f(BS))S(ay);else if(f(S0))S(vy,1)})}I(WN),I(Bf);var ry=L(Bf,2);a(ry,{type:"submit",get icon(){return D1},get disabled(){return f(hS)},children:(S,w)=>{Y();var z=i();Q(()=>W(z,f(hS)?"Clearing…":"Clear cache")),j(S,z)},$$slots:{default:!0}}),I(V0),T(V0,()=>O(tw));var kf=L(V0,2),Tf=N(kf),YN=N(Tf);a1(YN,{size:20});var KN=L(YN,2),$y=L(N(KN),4);{var oy=(S)=>{var w=f1(),z=N(w,!0);I(w),Q(()=>W(z,f(TS))),j(S,w)},ny=(S)=>{var w=C1(),z=N(w,!0);I(w),Q(()=>W(z,f(f0))),j(S,w)};U($y,(S)=>{if(f(TS))S(oy);else if(f(f0))S(ny,1)})}I(KN),I(Tf);var _y=L(Tf,2);a(_y,{type:"submit",get icon(){return a1},get disabled(){return f(kS)},children:(S,w)=>{Y();var z=i();Q(()=>W(z,f(kS)?"Starting…":"Rebuild all")),j(S,z)},$$slots:{default:!0}}),I(kf),T(kf,()=>O(uw)),I(pf);var G0=L(pf,2);let XN;var R0=N(G0),Of=N(R0),VN=N(Of);v1(VN,{size:20});var GN=L(VN,2),qf=N(GN),SL=L(N(qf));{var fL=(S)=>{var w=mz();j(S,w)};U(SL,(S)=>{if(f(n))S(fL)})}I(qf);var RN=L(qf,2),IL=N(RN);{var NL=(S)=>{var w=i(`Not available while LiteLLM + Bedrock mode is enabled — Claude credentials are
34
- provided by the LiteLLM endpoint instead.`);j(S,w)},wL=(S)=>{var w=i(`Provide GitHub and Claude Code tokens yourself instead of discovering them from this
35
- machine. Useful on a headless server or when signed in as a different identity. A
36
- token set here is injected into every new container and overrides host credential
37
- discovery.`);j(S,w)};U(IL,(S)=>{if(f(n))S(NL);else S(wL,-1)})}I(RN),I(GN),I(Of);var HN=L(Of,2),H0=N(HN);M(H0),Y(2),I(HN),I(R0),T(R0,()=>O(rw));var UN=L(R0,2);{var yL=(S)=>{var w=S1(),z=N(w),Z=N(z,!0);I(z),I(w),Q(()=>W(Z,f(iS))),j(S,w)};U(UN,(S)=>{if(f(iS))S(yL)})}var LL=L(UN,2);{var zL=(S)=>{var w=gz(),z=P1(w),Z=L(N(z),2),P=N(Z);M(P);var b=L(P,2);a(b,{type:"submit",get disabled(){return f(BI)},children:(h,l)=>{Y();var B=i("Save");j(h,B)},$$slots:{default:!0}}),I(Z);var q=L(Z,2);{var v=(h)=>{var l=f1(),B=N(l,!0);I(l),Q(()=>W(B,f(uS))),j(h,l)},_=(h)=>{var l=C1(),B=N(l,!0);I(l),Q(()=>W(B,f(N0))),j(h,l)};U(q,(h)=>{if(f(uS))h(v);else if(f(N0))h(_,1)})}I(z),T(z,()=>O($w));var e=L(z,2),X=L(N(e),2),V=N(X);M(V);var D=L(V,2);a(D,{type:"submit",get disabled(){return f(kI)},children:(h,l)=>{Y();var B=i("Save");j(h,B)},$$slots:{default:!0}}),I(X);var t=L(X,2);{var r=(h)=>{var l=f1(),B=N(l,!0);I(l),Q(()=>W(B,f(aS))),j(h,l)},W1=(h)=>{var l=C1(),B=N(l,!0);I(l),Q(()=>W(B,f(w0))),j(h,l)};U(t,(h)=>{if(f(aS))h(r);else if(f(w0))h(W1,1)})}I(e),T(e,()=>O(ow)),Q(()=>{d(P,"placeholder",f(sS)?"•••••••• (saved)":"ghp_… / gho_…"),d(V,"placeholder",f(dS)?"•••••••• (saved)":"sk-ant-oat…")}),m(P,()=>f(tS),(h)=>y(tS,h)),m(V,()=>f(eS),(h)=>y(eS,h)),j(S,w)};U(LL,(S)=>{if(f(m1)&&!f(n))S(zL)})}I(G0);var U0=L(G0,2);let PN;var P0=N(U0),bf=N(P0),DN=N(bf);v1(DN,{size:20});var MN=L(DN,2),lf=N(MN),xL=L(N(lf));{var CL=(S)=>{var w=iz();Q(()=>d(w,"title",`Disabled while ${f(p1)??""} is on`)),j(S,w)};U(xL,(S)=>{if(f(p1))S(CL)})}I(lf);var FN=L(lf,2),jL=N(FN);{var ZL=(S)=>{var w=i();Q(()=>W(w,`Not available while "${f(p1)??""}" is enabled — these modes are mutually
38
- incompatible.`)),j(S,w)},QL=(S)=>{var w=sz();Y(2),j(S,w)};U(jL,(S)=>{if(f(p1))S(ZL);else S(QL,-1)})}I(FN),I(MN),I(bf);var pN=L(bf,2),D0=N(pN);M(D0),Y(2),I(pN),I(P0),T(P0,()=>O(nw));var hN=L(P0,2);{var AL=(S)=>{var w=S1(),z=N(w),Z=N(z,!0);I(z),I(w),Q(()=>W(Z,f(vS))),j(S,w)};U(hN,(S)=>{if(f(vS))S(AL)})}var JL=L(hN,2);{var WL=(S)=>{var w=tz(),z=P1(w),Z=L(N(z),2),P=N(Z);M(P);var b=L(P,2);a(b,{type:"submit",get disabled(){return f(qI)},children:(F,c)=>{Y();var $=i("Save");j(F,$)},$$slots:{default:!0}}),I(Z);var q=L(Z,2);{var v=(F)=>{var c=f1(),$=N(c,!0);I(c),Q(()=>W($,f(rS))),j(F,c)},_=(F)=>{var c=C1(),$=N(c,!0);I(c),Q(()=>W($,f(y0))),j(F,c)};U(q,(F)=>{if(f(rS))F(v);else if(f(y0))F(_,1)})}I(z),T(z,()=>O(_w));var e=L(z,2),X=L(N(e),2),V=N(X);M(V);var D=L(V,2);a(D,{type:"submit",get disabled(){return f(bI)},children:(F,c)=>{Y();var $=i("Save");j(F,$)},$$slots:{default:!0}}),I(X);var t=L(X,2);{var r=(F)=>{var c=f1(),$=N(c,!0);I(c),Q(()=>W($,f(nS))),j(F,c)},W1=(F)=>{var c=C1(),$=N(c,!0);I(c),Q(()=>W($,f(L0))),j(F,c)};U(t,(F)=>{if(f(nS))F(r);else if(f(L0))F(W1,1)})}I(e),T(e,()=>O(Sy));var h=L(e,2),l=L(N(h),2),B=N(l),o=L(N(B),2);M(o),I(B);var x1=L(B,2),V1=L(N(x1),2);M(V1),I(x1);var e1=L(x1,2),T1=L(N(e1),2);M(T1),I(e1);var jI=L(e1,2),ww=L(N(jI),2);M(ww),I(jI);var ZI=L(jI,2),yw=L(N(ZI),2);M(yw),I(ZI);var Lw=L(ZI,2),Nz=N(Lw);a(Nz,{type:"submit",get disabled(){return f(iI)},children:(F,c)=>{Y();var $=i("Save models");j(F,$)},$$slots:{default:!0}}),I(Lw),I(l);var wz=L(l,2);{var yz=(F)=>{var c=f1(),$=N(c,!0);I(c),Q(()=>W($,f(_S))),j(F,c)},Lz=(F)=>{var c=C1(),$=N(c,!0);I(c),Q(()=>W($,f(z0))),j(F,c)};U(wz,(F)=>{if(f(_S))F(yz);else if(f(z0))F(Lz,1)})}I(h),T(h,()=>O(fy)),Q(()=>d(V,"placeholder",f(oS)?"•••••••• (saved)":"sk-…")),m(P,()=>f(OI),(F)=>y(OI,F)),m(V,()=>f($S),(F)=>y($S,F)),m(o,()=>f(lI),(F)=>y(lI,F)),m(V1,()=>f(cI),(F)=>y(cI,F)),m(T1,()=>f(EI),(F)=>y(EI,F)),m(ww,()=>f(mI),(F)=>y(mI,F)),m(yw,()=>f(gI),(F)=>y(gI,F)),j(S,w)};U(JL,(S)=>{if(f(n))S(WL)})}I(U0);var M0=L(U0,2);let BN;var F0=N(M0),cf=N(F0),kN=N(cf);IS(kN,{size:18});var TN=L(kN,2),Ef=N(TN),YL=L(N(Ef));{var KL=(S)=>{var w=uz();j(S,w)};U(YL,(S)=>{if(f(n))S(KL)})}I(Ef);var ON=L(Ef,2),XL=N(ON);{var VL=(S)=>{var w=i(`Not available while "LiteLLM + Bedrock" is enabled — these modes are mutually
39
- incompatible.`);j(S,w)},GL=(S)=>{var w=dz();Y(4),j(S,w)};U(XL,(S)=>{if(f(n))S(VL);else S(GL,-1)})}I(ON),I(TN),I(cf);var qN=L(cf,2),p0=N(qN);M(p0),Y(2),I(qN),I(F0),T(F0,()=>O(Iy));var bN=L(F0,2);{var RL=(S)=>{var w=S1(),z=N(w),Z=N(z,!0);I(z),I(w),Q(()=>W(Z,f(Sf))),j(S,w)};U(bN,(S)=>{if(f(Sf))S(RL)})}var HL=L(bN,2);{var UL=(S)=>{var w=ez(),z=L(N(w),2),Z=N(z),P=L(N(Z),2);M(P),I(Z);var b=L(Z,2),q=L(N(b),2);M(q),I(b);var v=L(b,2),_=L(N(v),2);M(_),I(v);var e=L(v,2),X=L(N(e),2);M(X),I(e);var V=L(e,2),D=L(N(V),2);M(D),I(V);var t=L(V,2),r=N(t);a(r,{type:"submit",get disabled(){return f(vI)},children:(B,o)=>{Y();var x1=i("Save models");j(B,x1)},$$slots:{default:!0}}),I(t),I(z);var W1=L(z,2);{var h=(B)=>{var o=f1(),x1=N(o,!0);I(o),Q(()=>W(x1,f(ff))),j(B,o)},l=(B)=>{var o=C1(),x1=N(o,!0);I(o),Q(()=>W(x1,f(x0))),j(B,o)};U(W1,(B)=>{if(f(ff))B(h);else if(f(x0))B(l,1)})}I(w),T(w,()=>O(Ny)),m(P,()=>f(tI),(B)=>y(tI,B)),m(q,()=>f(uI),(B)=>y(uI,B)),m(_,()=>f(dI),(B)=>y(dI,B)),m(X,()=>f(eI),(B)=>y(eI,B)),m(D,()=>f(aI),(B)=>y(aI,B)),j(S,w)};U(HL,(S)=>{if(f(F1))S(UL)})}I(M0);var mf=L(M0,2),h0=N(mf),gf=N(h0),PL=N(gf);NS(PL,{size:20}),Y(2),I(gf);var lN=L(gf,2),B0=N(lN);M(B0),Y(2),I(lN),I(h0),T(h0,()=>O(wy));var cN=L(h0,2);{var DL=(S)=>{var w=S1(),z=N(w),Z=N(z,!0);I(z),I(w),Q(()=>W(Z,f(If))),j(S,w)};U(cN,(S)=>{if(f(If))S(DL)})}var ML=L(cN,2);{var FL=(S)=>{var w=vz(),z=N(w);J1(z,20,()=>f(h1),(X)=>X,(X,V)=>{var D=az(),t=N(D);J1(t,16,()=>f(h1).filter((V1)=>V1!==V),(V1)=>V1,(V1,e1)=>{var T1=Aw();M(T1),Q(()=>G1(T1,e1)),j(V1,T1)});var r=L(t,2),W1=N(r,!0);I(r);var h=L(r,2);let l;var B=N(h,!0);I(h);var o=L(h,2),x1=N(o);XI(x1,{size:13}),I(o),I(D),T(D,()=>O(Ly(V))),Q(()=>{W(W1,V),l=w1(h,1,"var-status svelte-1n6ht58",null,l,{present:f(B1)[V]}),d(h,"title",f(B1)[V]?"Set on this host — will be injected":"Not set on this host — will be skipped"),W(B,f(B1)[V]?"set":"missing"),o.disabled=f(j0),d(o,"aria-label",`Remove ${V}`)}),j(X,D)},(X)=>{var V=Jw();j(X,V)}),I(z);var Z=L(z,2),P=N(Z);J1(P,16,()=>f(h1),(X)=>X,(X,V)=>{var D=Aw();M(D),Q(()=>G1(D,V)),j(X,D)});var b=L(P,2);M(b);var q=L(b,2);a(q,{type:"submit",get icon(){return VI},get disabled(){return f(j0)},children:(X,V)=>{Y();var D=i("Add");j(X,D)},$$slots:{default:!0}}),I(Z),T(Z,()=>O(yy));var v=L(Z,2);{var _=(X)=>{var V=f1(),D=N(V,!0);I(V),Q(()=>W(D,f(H1))),j(X,V)},e=(X)=>{var V=C1(),D=N(V,!0);I(V),Q(()=>W(D,f(g1))),j(X,V)};U(v,(X)=>{if(f(H1))X(_);else if(f(g1))X(e,1)})}I(w),m(b,()=>f(Nf),(X)=>y(Nf,X)),j(S,w)};U(ML,(S)=>{if(f(C0))S(FL)})}I(mf);var sf=L(mf,2),k0=N(sf),tf=N(k0),pL=N(tf);wS(pL,{size:20}),Y(2),I(tf);var EN=L(tf,2),T0=N(EN);M(T0),Y(2),I(EN),I(k0),T(k0,()=>O(zy));var mN=L(k0,2);{var hL=(S)=>{var w=S1(),z=N(w),Z=N(z,!0);I(z),I(w),Q(()=>W(Z,f(wf))),j(S,w)};U(mN,(S)=>{if(f(wf))S(hL)})}var BL=L(mN,2);{var kL=(S)=>{var w=$z(),z=N(w);J1(z,20,()=>f(i1),(X)=>X,(X,V)=>{var D=rz(),t=N(D);M(t);var r=L(t,2),W1=N(r,!0);I(r);var h=L(r,4),l=N(h);XI(l,{size:13}),I(h),I(D),T(D,()=>O(Cy(V))),Q(()=>{G1(t,V),W(W1,V),h.disabled=f(Q0),d(h,"aria-label",`Remove ${V}`)}),j(X,D)},(X)=>{var V=Jw();j(X,V)}),I(z);var Z=L(z,2),P=N(Z);M(P);var b=L(P,2);M(b);var q=L(b,2);a(q,{type:"submit",get icon(){return VI},get disabled(){return f(Q0)},children:(X,V)=>{Y();var D=i("Add");j(X,D)},$$slots:{default:!0}}),I(Z),T(Z,()=>O(xy));var v=L(Z,2);{var _=(X)=>{var V=f1(),D=N(V,!0);I(V),Q(()=>W(D,f(X1))),j(X,V)},e=(X)=>{var V=C1(),D=N(V,!0);I(V),Q(()=>W(D,f(s1))),j(X,V)};U(v,(X)=>{if(f(X1))X(_);else if(f(s1))X(e,1)})}I(w),m(P,()=>f(yf),(X)=>y(yf,X)),m(b,()=>f(Lf),(X)=>y(Lf,X)),j(S,w)};U(BL,(S)=>{if(f(Z0))S(kL)})}I(sf);var uf=L(sf,2),gN=N(uf),df=N(gN),TL=N(df);e0(TL,{size:20}),Y(2),I(df);var OL=L(df,2);AI(OL,{}),I(gN),I(uf);var ef=L(uf,2),iN=N(ef),af=N(iN),qL=N(af);t0(qL,{size:20}),Y(2),I(af);var sN=L(af,2),vf=N(sN);M(vf),Y(2),I(sN),I(iN),I(ef);var rf=L(ef,2),tN=N(rf),$f=N(tN),bL=N($f);u0(bL,{size:20}),Y(2),I($f);var uN=L($f,2),of=N(uN);M(of),Y(2),I(uN),I(tN),I(rf);var nf=L(rf,2),O0=N(nf),_f=N(O0),lL=N(_f);d0(lL,{size:18}),Y(2),I(_f);var dN=L(_f,2),q0=N(dN);M(q0),Y(2),I(dN),I(O0),T(O0,()=>O(Qy));var eN=L(O0,2);{var cL=(S)=>{var w=S1(),z=N(w),Z=N(z,!0);I(z),I(w),Q(()=>W(Z,f(Z1))),j(S,w)};U(eN,(S)=>{if(f(Z1))S(cL)})}var EL=L(eN,2);{var mL=(S)=>{var w=nz();J1(w,21,()=>Vw,(z)=>z.name,(z,Z)=>{var P=oz(),b=N(P);M(b);var q=L(b,2);let v;var _=N(q);CS(_,{get art(){return f(Z)},get name(){return f(Z).name},scale:4}),I(q),I(P),T(P,()=>O(Ay(f(Z)))),Q(()=>{G1(b,f(Z).name),v=w1(q,1,"pet svelte-1n6ht58",null,v,{selected:f(Z).name===f(y1).name}),q.disabled=f(j1),d(q,"title",f(Z).name),d(q,"aria-label",f(Z).name),d(q,"aria-pressed",f(Z).name===f(y1).name)}),j(z,P)}),I(w),j(S,w)};U(EL,(S)=>{if(f(y1))S(mL)})}I(nf);var SI=L(nf,2),aN=N(SI),fI=N(aN),gL=N(fI);yS(gL,{size:20}),Y(4),I(fI);var b0=L(fI,2),II=N(b0),iL=N(II);LS(iL,{size:20}),Y(2),I(II);var vN=L(II,2),l0=N(vN);M(l0),Y(2),I(vN),I(b0),T(b0,()=>O(dw));var rN=L(b0,2);{var sL=(S)=>{var w=S1(),z=N(w),Z=N(z,!0);I(z),I(w),Q(()=>W(Z,f(qS))),j(S,w)};U(rN,(S)=>{if(f(qS))S(sL)})}var c0=L(rN,2),NI=N(c0),tL=N(NI);zS(tL,{size:20}),Y(2),I(NI);var $N=L(NI,2),E0=N($N);M(E0),Y(2),I($N),I(c0),T(c0,()=>O(ew));var oN=L(c0,2);{var uL=(S)=>{var w=S1(),z=N(w),Z=N(z,!0);I(z),I(w),Q(()=>W(Z,f(lS))),j(S,w)};U(oN,(S)=>{if(f(lS))S(uL)})}var m0=L(oN,2),wI=N(m0),dL=N(wI);xS(dL,{size:20}),Y(2),I(wI);var nN=L(wI,2),g0=N(nN);M(g0),Y(2),I(nN),I(m0),T(m0,()=>O(aw));var _N=L(m0,2);{var eL=(S)=>{var w=S1(),z=N(w),Z=N(z,!0);I(z),I(w),Q(()=>W(Z,f(ES))),j(S,w)};U(_N,(S)=>{if(f(ES))S(eL)})}var yI=L(_N,2),LI=N(yI),Sw=N(LI);D1(Sw,{size:20});var fw=L(Sw,2),aL=L(N(fw),4);{var vL=(S)=>{var w=f1(),z=N(w,!0);I(w),Q(()=>W(z,f(gS))),j(S,w)},rL=(S)=>{var w=C1(),z=N(w,!0);I(w),Q(()=>W(z,f(I0))),j(S,w)};U(aL,(S)=>{if(f(gS))S(vL);else if(f(I0))S(rL,1)})}I(fw),I(LI);var $L=L(LI,2);a($L,{type:"submit",get icon(){return D1},get disabled(){return f(mS)},children:(S,w)=>{Y();var z=i();Q(()=>W(z,f(mS)?"Clearing…":"Clear cache")),j(S,z)},$$slots:{default:!0}}),I(yI),T(yI,()=>O(vw)),I(aN),I(SI);var zI=L(SI,2),xI=N(zI),CI=N(xI),oL=N(CI);s0(oL,{size:20}),Y(2),I(CI);var nL=L(CI,2);{var _L=(S)=>{var w=_z();j(S,w)},Sz=(S)=>{a(S,{type:"submit",variant:"danger",children:(w,z)=>{Y();var Z=i("Delete & shut down");j(w,Z)},$$slots:{default:!0}})};U(nL,(S)=>{if(f(R1))S(_L);else S(Sz,-1)})}I(xI),T(xI,()=>O(Jy)),I(zI);var Iw=L(zI,2);JI(Iw,{});var Nw=L(Iw,2),fz=N(Nw);I(Nw),I(_I),I(zf);var Iz=L(zf,2);Hw(Iz,{get toastOptions(){return Bw}}),Q(()=>{G1(jf,f(L1)),fN=w1(U1,1,"mode-btn svelte-1n6ht58",null,fN,{active:f(L1)==="ide"}),d(U1,"aria-pressed",f(L1)==="ide"),U1.disabled=f(b1),IN=w1(k1,1,"mode-btn svelte-1n6ht58",null,IN,{active:f(L1)==="terminal"}),d(k1,"aria-pressed",f(L1)==="terminal"),k1.disabled=f(b1),G1(Af,f(Y1)),G1(Yf,f(K1)),I1(Y0,f(o1)),Y0.disabled=f(UI),I1(X0,f(FS)),X0.disabled=f(DI),XN=w1(G0,1,"card svelte-1n6ht58",null,XN,{"disabled-card":f(n)}),I1(H0,f(m1)),H0.disabled=f(hI)||f(n),PN=w1(U0,1,"card svelte-1n6ht58",null,PN,{"disabled-card":f(p1)}),I1(D0,f(n)),D0.disabled=f(TI)||!!f(p1),BN=w1(M0,1,"card svelte-1n6ht58",null,BN,{"disabled-card":f(n)}),I1(p0,f(F1)),p0.disabled=f(sI)||f(n),I1(B0,f(C0)),B0.disabled=f(rI),I1(T0,f(Z0)),T0.disabled=f($I),I1(vf,f(J)),I1(of,f(A)),I1(q0,!!f(y1)),q0.disabled=f(j1),I1(l0,f(OS)),l0.disabled=f(MI),I1(E0,f(bS)),E0.disabled=f(FI),I1(g0,f(cS)),g0.disabled=f(pI),W(fz,`Codebay v${C.version??""}`)}),u("click",U1,()=>Q1("ide")),u("click",k1,()=>Q1("terminal")),m(Gf,()=>f(c1),(S)=>y(c1,S)),m(Df,()=>f(E1),(S)=>y(E1,S)),u("change",Y0,(S)=>{y(o1,S.currentTarget.checked,!0),S.currentTarget.form?.requestSubmit()}),u("change",X0,(S)=>{y(FS,S.currentTarget.checked,!0),S.currentTarget.form?.requestSubmit()}),u("change",H0,(S)=>{y(m1,S.currentTarget.checked,!0),S.currentTarget.form?.requestSubmit()}),u("change",D0,(S)=>{y(n,S.currentTarget.checked,!0),S.currentTarget.form?.requestSubmit()}),u("change",p0,(S)=>{y(F1,S.currentTarget.checked,!0),S.currentTarget.form?.requestSubmit()}),u("change",B0,(S)=>{y(C0,S.currentTarget.checked,!0),S.currentTarget.form?.requestSubmit()}),u("change",T0,(S)=>{y(Z0,S.currentTarget.checked,!0),S.currentTarget.form?.requestSubmit()}),u("change",vf,(S)=>jy(S.currentTarget.checked)),u("change",of,(S)=>Zy(S.currentTarget.checked)),u("change",q0,(S)=>S.currentTarget.form?.requestSubmit()),u("change",l0,(S)=>{y(OS,S.currentTarget.checked,!0),S.currentTarget.form?.requestSubmit()}),u("change",E0,(S)=>{y(bS,S.currentTarget.checked,!0),S.currentTarget.form?.requestSubmit()}),u("change",g0,(S)=>{y(cS,S.currentTarget.checked,!0),S.currentTarget.form?.requestSubmit()}),j(K,oI),o0()}n0(["click","change"]);kw("SettingsView_8hmarwmf8onq",RI);
@@ -1,2 +0,0 @@
1
- import{M as mr,P as lr}from"/_mochi/client/chunk-a5e8vytv.js";import{$ as Ht,$a as lt,Aa as b,Ca as ot,Da as at,Ea as vt,Fa as _,Ha as ar,Ia as R,Ja as f,Ka as bt,La as H,Na as Ue,Oa as At,Pa as qt,Qa as mt,R as it,Ra as w,T as z,U as Ze,Ua as U,Va as P,W as we,Wa as kt,Y,Z as B,_ as ft,_a as St,aa as D,ba as sr,bb as or,ca as nr,cb as V,db as ut,eb as pt,fa as F,fb as d,gb as pr,hb as rr,ia as j,ja as E,ka as h,na as C,oa as I,pa as G,qa as Fe,ra as O,sa as N,ta as M,ya as s,za as W}from"/_mochi/client/chunk-d9bszcp8.js";var dr={name:"anchor",pixels:["...##...","..#..#..",".######.","...##...","..####..","#..##..#","########",".######."]},Yt=dr;var $r={name:"ant-head",pixels:["#......#",".#....#.",".######.","#..##..#","#..##..#","#..##..#",".######.","...##..."]},Bt=$r;var cr={name:"apple",pixels:["...##...","...#....",".##..##.","#.######","#.######","#.######",".#.####.","..####.."]},Gt=cr;var vr={name:"bear",pixels:["###..###","###..###","########","########","##.##.##","########","###..###",".######."]},Jt=vr;var Ar={name:"bee",robot:!0,pixels:[".#....#.","##.##.##","#.####.#",".######.",".######.","........",".######.","..####.."]},Kt=Ar;var ur={name:"bob-marley",pixels:["..####..",".######.","##....##","#.#..#.#","#......#","##.##.##","#.####.#","#..##..#"]},Ot=ur;var yr={name:"bodybuilder",pixels:["...##...","...##...",".#....#.","#..##..#","##....##","##.##.##","........","...##..."]},Wt=yr;var xr={name:"car",pixels:["........","..####..","..#..#..","..#..#..","########","########","########",".##..##."]},Xt=xr;var _r={name:"carpathians",pixels:["........",".#......","......##",".....###","#...####","##.#####","###.####","####.###"]},Zt=_r;var gr={name:"cat",pixels:["#......#","##....##","########","##.##.##","########","#.#.#.##","##.#.###",".######."]},Ft=gr;var hr={name:"cat-body",pixels:["....##..","#.#..###","###....#","###..###","########","########","#.#..#.#","#.#..#.#"]},Ut=hr;var Tr={name:"cat-sits",pixels:["..#..#..","..####..","..####..",".####...","####..##","####.#.#","####...#",".######."]},wt=Tr;var br={name:"celtic-cross",pixels:["...##...",".#.##.#.","...##...","########","########","...##...",".#.##.#.","...##..."]},Nt=br;var qr={name:"cherry",pixels:[".....###","....#.#.","...#..#.","..#..#..",".##..##.","#.###.##","#.###.##",".##..##."]},Vt=qr;var zr={name:"cotton",pixels:["....##..","....##..",".##.....",".##..##.","...#.##.","....#...","...#....","...#...."]},jt=zr;var Mr={name:"crab",pixels:[".##..##.","##....##","#.####.#","########","########","..####..",".#.##.#.","#.#..#.#"]},Dt=Mr;var Cr={name:"crown",pixels:["#......#","#..#...#","##.#..##","##.##.##","########","#.#.#.#.","########","########"]},te=Cr;var Sr={name:"diamond",pixels:[".######.","##.#.#.#","#.#.#.#.","########","#.######",".#.####.","..#.##..","...##..."]},ee=Sr;var kr={name:"dog",pixels:["..######",".#######","####.###","##.###.#","#######.","##.##..#","##.##..#","##..###."]},re=kr;var Hr={name:"elephant",pixels:["...###..",".#####..","####.#..","######..","######.#","##.##.#.","##.##...","##.##..."]},ae=Hr;var Ir={name:"fish",pixels:["....##..","...##..#","..###.#.",".#.####.","########",".#######","..###..#","....##.."]},oe=Ir;var Er={name:"fleur-de-lis",pixels:["...##...","...#....",".###.##.","#.##...#","...##...",".#.##.#.",".######.","...##..."]},pe=Er;var Pr={name:"flower",pixels:["...##...","..#+##..",".#.##.#.","###++#+#","#+#++###",".#.##.#.","..##+#..","...##..."]},se=Pr;var Rr={name:"fox",pixels:["#...+...","##.++...","###++...","#####..#","##.#####","#######.","######..","#####..."]},ne=Rr;var Lr={name:"frog",pixels:["........","........",".##..##.","#..##..#","#..##..#","########","########",".######."]},ie=Lr;var Qr={name:"ghost",robot:!0,pixels:["..####..",".######.","##.##.##","##.##.##","########","########","########","#.##.##."]},me=Qr;var Yr={name:"giraffe",pixels:["....#.#.","....####","....#...","....#...","....#...","....#...","#####...","##.##..."]},le=Yr;var Br={name:"glasses",pixels:["##..##..","#.#.##.#",".#######","........",".##..##.",".##..##.","#..##..#","########"]},fe=Br;var Gr={name:"heart",pixels:["........","........",".##.##..","#..#..#.","#.....#.",".#...#..","..#.#...","...#...."]},de=Gr;var Jr={name:"horse",pixels:["....#.#.","....####","....####","....##..","######..","#.#.##..","#.#.##..","#.#.##.."]},$e=Jr;var Kr={name:"invader",robot:!0,pixels:["#......#",".#....#.","########","##.##.##","########","..####..",".##..##.","#.#..#.#"]},ce=Kr;var Or={name:"kangaroo",pixels:["..#.#...","..###...",".####...","...##...","..#####.","...####.","...##.#.","..###..#"]},ve=Or;var Wr={name:"key",pixels:[".####...","##..##..","##..##..",".####...","..##....","..####..","..##....","..####.."]},Ae=Wr;var Xr={name:"lightning",robot:!0,pixels:["...#####","..####..",".####...",".#######","..######","...#####","..####..",".###...."]},ue=Xr;var Zr={name:"mushroom",pixels:["..####..",".##.###.","#.###.##","########","..####..","..####..","..####..","...##..."]},ye=Zr;var Fr={name:"octopus",pixels:[".#..###.","#..####.","#..#.#..","#..###..",".######.","...#####","##.##.#.",".###..##"]},xe=Fr;var Ur={name:"owl",pixels:[".#....#.","#......#","########","#..##..#","#..##..#","########","###..###",".###.##."]},_e=Ur;var wr={name:"penguin",pixels:["..++++..",".++++++.",".+.++.+.",".++..++.","++##.#++","+######+","+######+",".######."]},ge=wr;var Nr={name:"planet",pixels:[".....+++","...###.+","..####+.",".####+#.",".###+##.","+##+###.","+.+###..","++......"]},he=Nr;var Vr={name:"praying-mantis",pixels:["#.....#.",".#...#..",".##.##..","#..#..#.","#..#..#.",".#####..","..#.#...","...#...."]},Te=Vr;var jr={name:"rabbit",pixels:[".#....#.",".##..##.",".##..##.","..####..",".#.##.#.","########","###..###",".#.##.#."]},be=jr;var Dr={name:"rat",pixels:["...#.#..","...#####","...#.#..","..###...",".####.#.","#####..#","####..#.",".#####.."]},qe=Dr;var ta={name:"robot",pixels:[".######.","...##...","########","########","#.####.#","#.####.#","###..###","########"]},ze=ta;var ea={name:"rocket",robot:!0,pixels:["...##...","..####..","..#..#..","..####..",".######.","##.##.##","..#..#..","...##..."]},Me=ea;var ra={name:"sea",pixels:["#.#.....",".#..#.#.",".....#..","...#....","........","########",".##..###","##.###.."]},Ce=ra;var aa={name:"skull",pixels:[".######.","#..#..##","#..#..##","########",".##.##..",".#####..",".#.#.#..","........"]},Se=aa;var oa={name:"snail",pixels:["........",".....#.#",".##..#.#","#.##.#.#","##.#.#.#","#..##.#.","########",".######."]},ke=oa;var pa={name:"snake",pixels:["...###..",".###..#.","#.#..#..","##..#..#","...#..#.","..#...##",".#.....#",".######."]},He=pa;var sa={name:"snakegame",pixels:["########","#......#","#.##...#","#.#..#.#","#.##...#","#..##..#","#......#","########"]},Ie=sa;var na={name:"snowflake",pixels:["#..##..#",".##..##.",".#.##.#.","#.####.#","#.####.#",".#.##.#.",".##..##.","#..##..#"]},Ee=na;var ia={name:"star",pixels:["...#....","...##...","...##...","..####..",".######.","..####..","...##...","....#..."]},Pe=ia;var ma={name:"strawberry",pixels:["...#....","..#...#.","..#..#.#",".###..#.","#####...","#####...",".###....","..#....."]},Re=ma;var la={name:"svelte",pixels:["..#####.",".###..#.","##...#..","########","########","..#...##",".#..###.",".####..."]},Le=la;var fa={name:"target",robot:!0,pixels:["..####..",".#....#.","#......#","#..##..#","#..##..#","#......#",".#....#.","..####.."]},Qe=fa;var da={name:"tree",robot:!0,pixels:["...##...","..####..",".######.","..####..",".######.","########","...##...","...##..."]},Ye=da;var $a={name:"ukraine",pixels:["...##...","#..##..#","##.##.##","#..##..#","##.##.##","#..##..#","########","...##..."]},Be=$a;var ca={name:"vangogh-almond-blossoms",pixels:["....#.#.",".....#..","####....","#...#..#",".#...##.","..#....#",".#.#....","..#....."]},Ge=ca;var va={name:"wasp",pixels:[".....##.",".##.###.",".###....","..#.#...",".#.#.#..","##..##..","##......","........"]},Je=va;var Aa={name:"whale",pixels:["#.#.#...",".#.#....","..#.....","..#.....",".####...","######.#","#.####.#","########"]},Ke=Aa;var ua={name:"wheat",pixels:["........","....#.#.","...#.#..","..#.#.#.","..##.#..","..###...",".#......","#......."]},Oe=ua;var ya={name:"windmill",pixels:["........",".#...#..","..#.#...","...#....","..#.#...",".#.#.#..","..###...","..###..."]},We=ya;var xa={name:"yinyan",pixels:[".......#",".##...##",".##..###","....####","...#####","..###..#",".####..#","########"]},Xe=xa;var np=0,ip=1,mp=2,lp=8,fp=8;function Ct(e){let t=[];for(let r of e.pixels)for(let a of r)t.push(a==="#"?1:a==="+"?2:0);return t}var _a=[Yt,Bt,Gt,Jt,Kt,Ot,Wt,Xt,Zt,Ft,Ut,wt,Nt,Vt,jt,Dt,te,ee,re,ae,oe,pe,se,ne,ie,me,le,fe,de,$e,ce,ve,Ae,ue,ye,xe,_e,ge,he,Te,be,qe,ze,Me,Ce,Se,ke,He,Ie,Ee,Pe,Re,Le,Qe,Ye,Be,Ge,Je,Ke,Oe,We,Xe];function gs(e){return e?_a.find((t)=>t.name===e):void 0}var ga=_("<span></span>"),ha=_('<span class="invert svelte-1pre9qb" aria-hidden="true"></span> <span class="bloom svelte-1pre9qb" aria-hidden="true"></span>',1),Ta=_('<span role="img"><!> <!></span>');function ba(e,t){Y(t,!0);let r=d(t,"scale",3,6),a=d(t,"interactive",3,!1),n=j(!1),l=j(!1),o=j("50%"),v=j("50%"),i=j(0),A=j(0),c;function $(k){let Q=k.currentTarget.getBoundingClientRect(),X=(k.clientX-Q.left)/Q.width,Z=(k.clientY-Q.top)/Q.height;h(o,X*100+"%"),h(v,Z*100+"%"),h(A,(X*360+Z*140)%360),h(i,(Z*300-X*120+360)%360)}function u(k){if(!a())return;k.currentTarget.setPointerCapture?.(k.pointerId),$(k),clearTimeout(c),h(l,!1),h(n,!0)}function g(k){if(s(n))$(k)}function m(){if(!s(n))return;h(n,!1),h(l,!0),clearTimeout(c),c=setTimeout(()=>h(l,!1),250)}Fe(()=>()=>clearTimeout(c));let p=F(()=>Math.max(1,Math.round(r()))),y=F(()=>s(p)>=2?0.5:0),x=F(()=>t.art??null),T=F(()=>s(x)?Ct(s(x)):[]),S=F(()=>Array.from({length:100},(k,Q)=>{let X=Math.floor(Q/10),Z=Q%10;return X>=1&&X<=8&&Z>=1&&Z<=8?s(T)[(X-1)*8+(Z-1)]??0:0}));var q=Ta();let L;var rt=C(q);At(rt,17,()=>s(S),Ue,(k,Q)=>{var X=ga();let Z;M(()=>Z=U(X,1,"px svelte-1pre9qb",null,Z,{on:s(Q)===1,gray:s(Q)===2})),f(k,X)});var nt=G(rt,2);{var fr=(k)=>{var Q=ha();Ze(2),f(k,Q)};H(nt,(k)=>{if(a())k(fr)})}z(q),M(()=>{L=U(q,1,"avatar svelte-1pre9qb",null,L,{interactive:a(),pressed:s(n),ghosting:s(l)}),St(q,"aria-label",t.name),St(q,"title",s(x)?.name),P(q,`width:${10*s(p)}px;height:${10*s(p)}px;--gap:${s(y)??""}px;--bx:${s(o)??""};--by:${s(v)??""};--spin:${s(i)??""}deg;--hue:${s(A)??""}deg`)}),at("pointerdown",q,u),at("pointermove",q,g),at("pointerup",q,m),ot("pointercancel",q,m),ot("lostpointercapture",q,m),f(e,q),B()}vt(["pointerdown","pointermove","pointerup"]);var qa=new Set(["$$slots","$$events","$$legacy","variant","size","ghost","square","icon","iconSize","href","disabled","onclick","children"]),za=_("<a><!> <!></a>"),Ma=_("<button><!> <!></button>");function Ca(e,t){let r=d(t,"variant",3,"default"),a=d(t,"size",3,"md"),n=d(t,"ghost",3,!1),l=d(t,"square",3,!1),o=d(t,"disabled",3,!1),v=ut(t,qa),i=F(()=>t.icon),A=F(()=>t.iconSize??(a()==="lg"?18:a()==="sm"?13:15));var c=R(),$=I(c);{var u=(m)=>{var p=za();lt(p,()=>({class:`btn ${r()??""} ${a()??""}`,href:o()?void 0:t.href,"aria-disabled":o()||void 0,tabindex:o()?-1:void 0,...v,[kt]:{ghost:n(),square:l()}}),void 0,void 0,void 0,"svelte-1klcfz0");var y=C(p);{var x=(S)=>{var q=R(),L=I(q);w(L,()=>s(i),(rt,nt)=>{nt(rt,{get size(){return s(A)}})}),f(S,q)};H(y,(S)=>{if(s(i))S(x)})}var T=G(y,2);mt(T,()=>t.children??it),z(p),f(m,p)},g=(m)=>{var p=Ma();lt(p,()=>({class:`btn ${r()??""} ${a()??""}`,onclick:t.onclick,disabled:o(),...v,[kt]:{ghost:n(),square:l()}}),void 0,void 0,void 0,"svelte-1klcfz0");var y=C(p);{var x=(S)=>{var q=R(),L=I(q);w(L,()=>s(i),(rt,nt)=>{nt(rt,{get size(){return s(A)}})}),f(S,q)};H(y,(S)=>{if(s(i))S(x)})}var T=G(y,2);mt(T,()=>t.children??it),z(p),f(m,p)};H($,(m)=>{if(t.href)m(u);else m(g,-1)})}f(e,c)}we();function It(e,t,r,a){var n,l,o=!1,v=r.length>=2,i=(m,p,y)=>{if(n=p,v)l=m;if(!o){let x=t(m,p,y);if(t.length<2)p(x);else return x}o=!1},A=Ht(e,i,a),c=!Array.isArray(e);function $(m){var p=r(m,l);if(c)o=!0,e.set(p);else p.forEach((y,x)=>{o=!0,e[x].set(y)});o=!1}var u=!1;function g(m){var p,y,x,T;if(u){T=m(D(A)),n(T);return}var S=A.subscribe((q)=>{if(!u)x=q;else if(!p)p=!0;else y=!0});if(T=m(x),u=!0,n(T),S(),u=!1,y)T=D(A);if(p)$(T)}return{subscribe:A.subscribe,set(m){g(()=>m)},update:g}}var Sa=20,tt=ft([]),Et=ft(null),yt=new Map,Ne=(e)=>{if(yt.has(e))return;let t=setTimeout(()=>{yt.delete(e),Rt(e)},1000);yt.set(e,t)},ka=(e)=>{let t=yt.get(e);if(t)clearTimeout(t)};function Pt(e){if(e.id)ka(e.id);tt.update((t)=>t.map((r)=>r.id===e.id?{...r,...e}:r))}function Ha(e){tt.update((t)=>[e,...t].slice(0,Sa))}function Ve(e){if(D(tt).find((t)=>t.id===e.id))Pt(e);else Ha(e)}function je(e){tt.update((t)=>{if(e)Ne(e);else t.forEach((r)=>{Ne(r.id)});return t.map((r)=>r.id===e||e===void 0?{...r,visible:!1}:r)})}function Rt(e){tt.update((t)=>{if(e===void 0)return[];return t.filter((r)=>r.id!==e)})}function De(e){Et.set(e)}function tr(e){let t;Et.update((r)=>{return t=e-(r||0),null}),tt.update((r)=>r.map((a)=>({...a,pauseDuration:a.pauseDuration+t})))}var Ia={blank:4000,error:4000,success:2000,loading:1/0,custom:4000};function Lt(e={}){return{toasts:It(tt,(r)=>r.map((a)=>({...e,...e[a.type],...a,duration:a.duration||e[a.type]?.duration||e?.duration||Ia[a.type],style:[e.style,e[a.type]?.style,a.style].join(";")})),(r)=>r),pausedAt:Et}}var Ea=(e)=>typeof e==="function",xt=(e,t)=>Ea(e)?e(t):e;var er=(()=>{let e=0;return()=>{return e+=1,e.toString()}})(),dt=(()=>{let e;return()=>{if(e===void 0&&typeof window<"u"){let t=matchMedia("(prefers-reduced-motion: reduce)");e=!t||t.matches}return e}})();var Pa=(e,t="blank",r)=>({createdAt:Date.now(),visible:!0,type:t,ariaProps:{role:"status","aria-live":"polite"},message:e,pauseDuration:0,...r,id:r?.id||er()}),$t=(e)=>(t,r)=>{let a=Pa(t,e,r);return Ve(a),a.id},K=(e,t)=>$t("blank")(e,t);K.error=$t("error");K.success=$t("success");K.loading=$t("loading");K.custom=$t("custom");K.dismiss=(e)=>{je(e)};K.remove=(e)=>Rt(e);K.promise=(e,t,r)=>{let a=K.loading(t.loading,{...r,...r?.loading});return e.then((n)=>{return K.success(xt(t.success,n),{id:a,...r,...r?.success}),n}).catch((n)=>{K.error(xt(t.error,n),{id:a,...r,...r?.error})}),e};var ct=K;function Ra(e,t,r){let{reverseOrder:a,gutter:n=8,defaultPosition:l}=r||{},o=t.filter((c)=>(c.position||l)===(e.position||l)&&c.height),v=o.findIndex((c)=>c.id===e.id),i=o.filter((c,$)=>$<v&&c.visible).length;return o.filter((c)=>c.visible).slice(...a?[i+1]:[0,i]).reduce((c,$)=>c+($.height||0)+n,0)}var La={startPause(){De(Date.now())},endPause(){tr(Date.now())},updateHeight:(e,t)=>{Pt({id:e,height:t})},calculateOffset:Ra};function _t(e){let{toasts:t,pausedAt:r}=Lt(e),a=new Map,n,l=[r.subscribe((o)=>{if(o){for(let[,v]of a)clearTimeout(v);a.clear()}n=o}),t.subscribe((o)=>{if(n)return;let v=Date.now();for(let i of o){if(a.has(i.id))continue;if(i.duration===1/0)continue;let A=(i.duration||0)+i.pauseDuration-(v-i.createdAt);if(A<0){if(i.visible)ct.dismiss(i.id);return null}a.set(i.id,setTimeout(()=>ct.dismiss(i.id),A))}})];return rr(()=>{for(let o of l)o()}),{toasts:t,handlers:La}}var Qa=_('<div class="svelte-1did3zw"></div>');function gt(e,t){let r=d(t,"primary",8,"#61d345"),a=d(t,"secondary",8,"#fff");var n=Qa();let l;M(()=>l=P(n,"",l,{"--primary":r(),"--secondary":a()})),f(e,n)}var Ya=_('<div class="svelte-1ro2ggf"></div>');function ht(e,t){let r=d(t,"primary",8,"#ff4b4b"),a=d(t,"secondary",8,"#fff");var n=Ya();let l;M(()=>l=P(n,"",l,{"--primary":r(),"--secondary":a()})),f(e,n)}var Ba=_('<div class="svelte-tyythq"></div>');function Tt(e,t){let r=d(t,"primary",8,"#616161"),a=d(t,"secondary",8,"#e0e0e0");var n=Ba();let l;M(()=>l=P(n,"",l,{"--primary":r(),"--secondary":a()})),f(e,n)}var Ga=_('<div class="animated svelte-t33qv2"> </div>'),Ja=_('<div class="status svelte-t33qv2"><!></div>'),Ka=_('<div class="indicator svelte-t33qv2"><!> <!></div>');function st(e,t){Y(t,!1);let r=E(),a=E(),n=E(),l=d(t,"toast",8);O(()=>(s(r),s(a),s(n),b(l())),()=>{(($)=>{h(r,$.type),h(a,$.icon),h(n,$.iconTheme)})(l())}),N();var o=R(),v=I(o);{var i=($)=>{var u=Ga(),g=C(u,!0);z(u),M(()=>bt(g,s(a))),f($,u)},A=($)=>{var u=R(),g=I(u);w(g,()=>s(a),(m,p)=>{p(m,{})}),f($,u)},c=($)=>{var u=Ka(),g=C(u);Tt(g,pt(()=>s(n)));var m=G(g,2);{var p=(y)=>{var x=Ja(),T=C(x);{var S=(L)=>{ht(L,pt(()=>s(n)))},q=(L)=>{gt(L,pt(()=>s(n)))};H(T,(L)=>{if(s(r)==="error")L(S);else L(q,-1)})}z(x),f(y,x)};H(m,(y)=>{if(s(r)!=="loading")y(p)})}z(u),f($,u)};H(v,($)=>{if(typeof s(a)==="string")$(i);else if(typeof s(a)<"u")$(A,1);else if(s(r)!=="blank")$(c,2)})}f(e,o),B()}var Oa=_("<div><!></div>");function et(e,t){Y(t,!1);let r=d(t,"toast",8);V();var a=Oa();lt(a,()=>({class:"message",...r().ariaProps}),void 0,void 0,void 0,"svelte-1gudbf6");var n=C(a);{var l=(v)=>{var i=ar();M(()=>bt(i,(b(r()),W(()=>r().message)))),f(v,i)},o=(v)=>{var i=R(),A=I(i);w(A,()=>r().message,(c,$)=>{$(c,{get toast(){return r()}})}),f(v,i)};H(n,(v)=>{if(b(r()),W(()=>typeof r().message==="string"))v(l);else v(o,-1)})}z(a),f(e,a),B()}var Wa=_("<!> <!>",1),Xa=_("<div><!></div>");function zt(e,t){Y(t,!1);let r=d(t,"toast",8),a=d(t,"position",24,()=>{return}),n=d(t,"style",8,""),l=d(t,"Component",24,()=>{return}),o=E(),v=E();O(()=>(b(r()),b(a()),dt),()=>{let g=(r().position||a()||"top-center").includes("top");h(o,g?1:-1);let[m,p]=dt()?["fadeIn","fadeOut"]:["enter","exit"];h(v,r().visible?m:p)}),N(),V();var i=Xa();let A;var c=C(i);{var $=(g)=>{var m=R(),p=I(m);w(p,l,(y,x)=>{x(y,{$$slots:{icon:(T,S)=>{st(T,{get toast(){return r()},slot:"icon"})},message:(T,S)=>{et(T,{get toast(){return r()},slot:"message"})}}})}),f(g,m)},u=(g)=>{var m=R(),p=I(m);qt(p,t,"default",{get ToastIcon(){return st},get ToastMessage(){return et},get toast(){return r()}},(y)=>{var x=Wa(),T=I(x);st(T,{get toast(){return r()}});var S=G(T,2);et(S,{get toast(){return r()}}),f(y,x)}),f(g,m)};H(c,(g)=>{if(l())g($);else g(u,-1)})}z(i),M(()=>{U(i,1,`base ${(b(r()),s(v),W(()=>r().height?s(v):"transparent"))??""} ${(b(r()),W(()=>r().className||""))??""}`,"svelte-yae3e8"),A=P(i,`${n()??""}; ${(b(r()),W(()=>r().style))??""}`,A,{"--factor":s(o)})}),f(e,i),B()}var Za=_("<div><!></div>");function Qt(e,t){Y(t,!1);let r=E(),a=E(),n=E(),l=E(),o=d(t,"toast",8),v=d(t,"setHeight",8),i=E();pr(()=>{v()(s(i).getBoundingClientRect().height)}),O(()=>b(o()),()=>{h(r,o().position?.includes("top")?0:null)}),O(()=>b(o()),()=>{h(a,o().position?.includes("bottom")?0:null)}),O(()=>b(o()),()=>{h(n,o().position?.includes("top")?1:-1)}),O(()=>b(o()),()=>{h(l,o().position?.includes("center")&&"center"||(o().position?.includes("right")||o().position?.includes("end"))&&"flex-end"||null)}),N(),V();var A=Za();let c,$;var u=C(A);{var g=(p)=>{et(p,{get toast(){return o()}})},m=(p)=>{var y=R(),x=I(y);qt(x,t,"default",{get toast(){return o()}},(T)=>{zt(T,{get toast(){return o()},get position(){return b(o()),W(()=>o().position)}})}),f(p,y)};H(u,(p)=>{if(b(o()),W(()=>o().type==="custom"))p(g);else p(m,-1)})}z(A),or(A,(p)=>h(i,p),()=>s(i)),M((p)=>{c=U(A,1,"wrapper svelte-1pz3gqy",null,c,p),$=P(A,"",$,{"--factor":s(n),"--offset":(b(o()),W(()=>o().offset)),top:s(r),bottom:s(a),"justify-content":s(l)})},[()=>({active:o().visible,transition:!dt()})]),f(e,A),B()}var Fa=_('<div role="alert"></div>');function ir(e,t){Y(t,!1);let r=()=>sr($,"$toasts",a),[a,n]=nr(),l=d(t,"reverseOrder",8,!1),o=d(t,"position",8,"top-center"),v=d(t,"toastOptions",24,()=>{return}),i=d(t,"gutter",8,8),A=d(t,"containerStyle",24,()=>{return}),c=d(t,"containerClassName",24,()=>{return}),{toasts:$,handlers:u}=_t(v()),g=E();O(()=>(r(),b(o()),b(l()),b(i())),()=>{h(g,r().map((p)=>({...p,position:p.position||o(),offset:u.calculateOffset(p,r(),{reverseOrder:l(),gutter:i(),defaultPosition:o()})})))}),N(),V();var m=Fa();At(m,5,()=>s(g),(p)=>p.id,(p,y)=>{Qt(p,{get toast(){return s(y)},setHeight:(x)=>u.updateHeight(s(y).id,x)})}),z(m),M(()=>{U(m,1,`toaster ${(c()||"")??""}`,"svelte-haq5xk"),P(m,A())}),ot("mouseenter",m,function(...p){u.startPause?.apply(this,p)}),ot("mouseleave",m,function(...p){u.endPause?.apply(this,p)}),f(e,m),B(),n()}var ei=ct;var Ua=new Set(["$$slots","$$events","$$legacy"]);function Mt(e,t){let r=ut(t,Ua),a=[["path",{d:"M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8"}],["path",{d:"M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"}]];mr(e,pt({name:"house"},()=>r,{get iconNode(){return a}}))}var wa=_('<header class="bar svelte-fcv4i8"><a class="home svelte-fcv4i8" href="/" title="All instances" aria-label="All instances"><!></a> <!></header>');function Na(e,t){var r=wa(),a=C(r),n=C(a);Mt(n,{size:18}),z(a);var l=G(a,2);mt(l,()=>t.children??it),z(r),at("click",a,function(...o){lr?.apply(this,o)}),f(e,r)}vt(["click"]);var fi={style:"border:1px solid var(--edge); background:var(--bg-card); color:var(--ink); box-shadow:4px 4px 0 var(--shadow); font-family:var(--font-mono); font-size:13px;"};
2
- export{np as y,ip as z,mp as A,lp as B,fp as C,Ct as D,_a as E,gs as F,ba as G,Ca as H,ir as I,ei as J,Na as K,fi as L};
@@ -1,2 +0,0 @@
1
- import{kb as Q}from"/_mochi/client/chunk-d9bszcp8.js";var N=["default","manual","auto","plan"];var P=["low","medium","high","xhigh","max"];function V(j){let q=`/p/${j.id}/`;return j.remote_workspace_folder?`${q}?folder=${encodeURIComponent(j.remote_workspace_folder)}`:q}async function $(j,q,z="Request failed"){let G=await fetch(j,{...q,headers:{...q?.headers,["X-Codebay-Request"]:"1"}});if(!G.ok){let Z=await G.json().catch(()=>null);throw Error(Z?.error?.message??z)}return await G.json().catch(()=>({}))}function C(j,q,z){return W("POST",j,q,z)}function H(j,q,z){return W("DELETE",j,q,z)}function W(j,q,z,G){return $(q,z===void 0?{method:j}:{method:j,headers:{"Content-Type":"application/json"},body:JSON.stringify(z)},G)}var X="theme";function K(){let j=Q.get(X);return j==="dark"||j==="light"?j:"auto"}function x(j){Q.set(X,j,{expires:400,path:"/"})}function B(j){if(j==="auto")delete document.documentElement.dataset.theme;else document.documentElement.dataset.theme=j}function U(j){x(j),B(j)}
2
- export{N as n,P as o,V as p,$ as q,C as r,H as s,K as t,x as u,B as v,U as w};