codebay 0.3.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.mochi/manifest.json +297 -269
- package/.mochi/svelte-client/HydratableIsland-79z9xq4b.js +1 -0
- package/.mochi/svelte-client/_hydrate-AppShell_2rtnxn6pgp2rh-f5rzyjm8.js +2 -0
- package/.mochi/svelte-client/{_hydrate-AvatarsView_257s9yq1wwr4f-3w16y9jh.js → _hydrate-AvatarsView_257s9yq1wwr4f-fxyd5qx4.js} +2 -2
- package/.mochi/svelte-client/_hydrate-InstanceView_2ma45l9bybfhl-nv31ptdp.js +1 -0
- package/.mochi/svelte-client/_hydrate-SettingsView_8hmarwmf8onq-r9vvc7rx.js +28 -0
- package/.mochi/svelte-client/chunk-6eexkr6p.js +2 -0
- package/.mochi/svelte-client/chunk-7znwaf7t.js +2 -0
- package/.mochi/svelte-client/chunk-dz1019cy.js +1 -0
- package/.mochi/svelte-client/{chunk-qxwt25hn.js → chunk-nmf4dq86.js} +1 -1
- package/.mochi/svelte-client/{chunk-0jtmkpx4.js → chunk-ssa0ad2f.js} +2 -2
- package/.mochi/svelte-client/chunk-zmmb1c4b.js +2 -0
- package/.mochi/svelte-compile/{App-f0q5n4rk.server.js → App-9qjy14bc.server.js} +38 -23
- package/.mochi/svelte-compile/{Avatars-p8gfef7x.server.js → Avatars-sq8mjn6k.server.js} +2 -2
- package/.mochi/svelte-compile/{Instance-atjwsczx.server.js → Instance-13j59daw.server.js} +2 -2
- package/.mochi/svelte-compile/{Settings-q88xw6h8.server.js → Settings-p0s2awg1.server.js} +404 -103
- package/.mochi/svelte-compile/{chunk-9bjk7yx6.js → chunk-6ghzacpg.js} +1 -1
- package/.mochi/svelte-compile/{chunk-4kwy539a.js → chunk-bacb4b0r.js} +1 -1
- package/.mochi/svelte-compile/{chunk-sxqys3nw.js → chunk-dfe2km6a.js} +5 -2
- package/.mochi/svelte-compile/{chunk-v6796ga4.js → chunk-fpe16ywq.js} +28 -6
- package/.mochi/svelte-css/Brand-1bh2b800g5vrn.css +1 -0
- package/.mochi/svelte-css/SettingsView-3uycxa8z548m4.css +1 -0
- package/README.md +4 -0
- package/package.json +8 -8
- package/src/avatars/index.ts +5 -0
- package/src/components/AppBar.svelte +8 -1
- package/src/components/AppShell.svelte +17 -3
- package/src/components/Brand.svelte +15 -4
- package/src/components/DashboardView.svelte +5 -2
- package/src/components/IdeBar.svelte +9 -1
- package/src/components/InstanceCard.svelte +7 -3
- package/src/components/InstanceView.svelte +4 -1
- package/src/components/SettingsCog.svelte +9 -1
- package/src/components/SettingsView.svelte +476 -18
- package/src/components/TopBar.svelte +4 -1
- package/src/container-injections/claude-code-models.ts +74 -0
- package/src/container-injections/git-identity.ts +30 -3
- package/src/lib/injections.server.ts +3 -0
- package/src/lib/instances.server.ts +10 -1
- package/src/lib/popup-nav.ts +37 -0
- package/src/pages/App.svelte +10 -3
- package/src/pages/Settings.svelte +31 -0
- package/src/routes.ts +88 -2
- package/.mochi/svelte-client/HydratableIsland-wrq79y0w.js +0 -1
- package/.mochi/svelte-client/_hydrate-AppShell_2rtnxn6pgp2rh-faqf4hmc.js +0 -2
- package/.mochi/svelte-client/_hydrate-InstanceView_2ma45l9bybfhl-5g8meb6a.js +0 -1
- package/.mochi/svelte-client/_hydrate-SettingsView_8hmarwmf8onq-jsw4edxb.js +0 -23
- package/.mochi/svelte-client/chunk-04qv4w6w.js +0 -2
- package/.mochi/svelte-client/chunk-597d17x0.js +0 -1
- package/.mochi/svelte-client/chunk-5p31aqh0.js +0 -2
- package/.mochi/svelte-client/chunk-gjjhya9m.js +0 -2
- package/.mochi/svelte-css/Brand-1la7zw5uhcbl4.css +0 -1
- package/.mochi/svelte-css/SettingsView-1nfdwnm16cpp2.css +0 -1
|
@@ -5,31 +5,33 @@ import {
|
|
|
5
5
|
setSoundEnabled,
|
|
6
6
|
soundEnabled,
|
|
7
7
|
unlockAudio
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-6ghzacpg.js";
|
|
9
9
|
import {
|
|
10
10
|
X
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-bacb4b0r.js";
|
|
12
12
|
import {
|
|
13
13
|
AppBar,
|
|
14
14
|
Avatar,
|
|
15
15
|
Button,
|
|
16
|
-
Toaster
|
|
17
|
-
|
|
16
|
+
Toaster,
|
|
17
|
+
avatars,
|
|
18
|
+
findAvatar
|
|
19
|
+
} from "./chunk-dfe2km6a.js";
|
|
18
20
|
import {
|
|
19
21
|
HydratableBoundary,
|
|
20
22
|
Icon,
|
|
21
23
|
cookies,
|
|
22
24
|
emitIslandProps
|
|
23
|
-
} from "./chunk-
|
|
25
|
+
} from "./chunk-fpe16ywq.js";
|
|
24
26
|
import"./chunk-we0ggtws.js";
|
|
25
27
|
|
|
26
28
|
// src/pages/Settings.svelte
|
|
27
29
|
import"svelte/internal/flags/async";
|
|
28
|
-
import * as $
|
|
30
|
+
import * as $21 from "svelte/internal/server";
|
|
29
31
|
|
|
30
32
|
// src/components/SettingsView.svelte
|
|
31
33
|
import"svelte/internal/flags/async";
|
|
32
|
-
import * as $
|
|
34
|
+
import * as $20 from "svelte/internal/server";
|
|
33
35
|
|
|
34
36
|
// node_modules/@lucide/svelte/dist/icons/container.svelte
|
|
35
37
|
import"svelte/internal/flags/async";
|
|
@@ -92,9 +94,27 @@ function Volume_2($$renderer, $$props) {
|
|
|
92
94
|
];
|
|
93
95
|
Icon($$renderer, $4.spread_props([{ name: "volume-2" }, props, { iconNode }]));
|
|
94
96
|
}
|
|
95
|
-
// node_modules/@lucide/svelte/dist/icons/
|
|
97
|
+
// node_modules/@lucide/svelte/dist/icons/paw-print.svelte
|
|
96
98
|
import"svelte/internal/flags/async";
|
|
97
99
|
import * as $5 from "svelte/internal/server";
|
|
100
|
+
function Paw_print($$renderer, $$props) {
|
|
101
|
+
let { $$slots, $$events, ...props } = $$props;
|
|
102
|
+
const iconNode = [
|
|
103
|
+
["circle", { cx: "11", cy: "4", r: "2" }],
|
|
104
|
+
["circle", { cx: "18", cy: "8", r: "2" }],
|
|
105
|
+
["circle", { cx: "20", cy: "16", r: "2" }],
|
|
106
|
+
[
|
|
107
|
+
"path",
|
|
108
|
+
{
|
|
109
|
+
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"
|
|
110
|
+
}
|
|
111
|
+
]
|
|
112
|
+
];
|
|
113
|
+
Icon($$renderer, $5.spread_props([{ name: "paw-print" }, props, { iconNode }]));
|
|
114
|
+
}
|
|
115
|
+
// node_modules/@lucide/svelte/dist/icons/sun-moon.svelte
|
|
116
|
+
import"svelte/internal/flags/async";
|
|
117
|
+
import * as $6 from "svelte/internal/server";
|
|
98
118
|
function Sun_moon($$renderer, $$props) {
|
|
99
119
|
let { $$slots, $$events, ...props } = $$props;
|
|
100
120
|
const iconNode = [
|
|
@@ -109,15 +129,15 @@ function Sun_moon($$renderer, $$props) {
|
|
|
109
129
|
["path", { d: "m19 5-1.256 1.256" }],
|
|
110
130
|
["path", { d: "M20 12h2" }]
|
|
111
131
|
];
|
|
112
|
-
Icon($$renderer, $
|
|
132
|
+
Icon($$renderer, $6.spread_props([{ name: "sun-moon" }, props, { iconNode }]));
|
|
113
133
|
}
|
|
114
134
|
// src/components/ThemePicker.svelte
|
|
115
135
|
import"svelte/internal/flags/async";
|
|
116
|
-
import * as $
|
|
136
|
+
import * as $10 from "svelte/internal/server";
|
|
117
137
|
|
|
118
138
|
// node_modules/@lucide/svelte/dist/icons/sun.svelte
|
|
119
139
|
import"svelte/internal/flags/async";
|
|
120
|
-
import * as $
|
|
140
|
+
import * as $7 from "svelte/internal/server";
|
|
121
141
|
function Sun($$renderer, $$props) {
|
|
122
142
|
let { $$slots, $$events, ...props } = $$props;
|
|
123
143
|
const iconNode = [
|
|
@@ -131,11 +151,11 @@ function Sun($$renderer, $$props) {
|
|
|
131
151
|
["path", { d: "m6.34 17.66-1.41 1.41" }],
|
|
132
152
|
["path", { d: "m19.07 4.93-1.41 1.41" }]
|
|
133
153
|
];
|
|
134
|
-
Icon($$renderer, $
|
|
154
|
+
Icon($$renderer, $7.spread_props([{ name: "sun" }, props, { iconNode }]));
|
|
135
155
|
}
|
|
136
156
|
// node_modules/@lucide/svelte/dist/icons/moon.svelte
|
|
137
157
|
import"svelte/internal/flags/async";
|
|
138
|
-
import * as $
|
|
158
|
+
import * as $8 from "svelte/internal/server";
|
|
139
159
|
function Moon($$renderer, $$props) {
|
|
140
160
|
let { $$slots, $$events, ...props } = $$props;
|
|
141
161
|
const iconNode = [
|
|
@@ -146,11 +166,11 @@ function Moon($$renderer, $$props) {
|
|
|
146
166
|
}
|
|
147
167
|
]
|
|
148
168
|
];
|
|
149
|
-
Icon($$renderer, $
|
|
169
|
+
Icon($$renderer, $8.spread_props([{ name: "moon" }, props, { iconNode }]));
|
|
150
170
|
}
|
|
151
171
|
// node_modules/@lucide/svelte/dist/icons/monitor.svelte
|
|
152
172
|
import"svelte/internal/flags/async";
|
|
153
|
-
import * as $
|
|
173
|
+
import * as $9 from "svelte/internal/server";
|
|
154
174
|
function Monitor($$renderer, $$props) {
|
|
155
175
|
let { $$slots, $$events, ...props } = $$props;
|
|
156
176
|
const iconNode = [
|
|
@@ -161,7 +181,7 @@ function Monitor($$renderer, $$props) {
|
|
|
161
181
|
["line", { x1: "8", x2: "16", y1: "21", y2: "21" }],
|
|
162
182
|
["line", { x1: "12", x2: "12", y1: "17", y2: "21" }]
|
|
163
183
|
];
|
|
164
|
-
Icon($$renderer, $
|
|
184
|
+
Icon($$renderer, $9.spread_props([{ name: "monitor" }, props, { iconNode }]));
|
|
165
185
|
}
|
|
166
186
|
// src/theme.ts
|
|
167
187
|
var THEME_KEY = "theme";
|
|
@@ -194,10 +214,10 @@ function ThemePicker($$renderer, $$props) {
|
|
|
194
214
|
applyTheme(value);
|
|
195
215
|
}
|
|
196
216
|
$$renderer2.push(`<div class="picker svelte-3gcwuj" role="radiogroup" aria-label="Theme"><!--[-->`);
|
|
197
|
-
const each_array = $
|
|
217
|
+
const each_array = $10.ensure_array_like(options);
|
|
198
218
|
for (let $$index = 0, $$length = each_array.length;$$index < $$length; $$index++) {
|
|
199
219
|
let { value, label, icon: Icon2 } = each_array[$$index];
|
|
200
|
-
$$renderer2.push(`<button type="button"${$
|
|
220
|
+
$$renderer2.push(`<button type="button"${$10.attr_class("segment svelte-3gcwuj", undefined, { active: theme === value })} role="radio"${$10.attr("aria-checked", theme === value)}>`);
|
|
201
221
|
if (Icon2) {
|
|
202
222
|
$$renderer2.push("<!--[-->");
|
|
203
223
|
Icon2($$renderer2, { size: 13 });
|
|
@@ -206,7 +226,7 @@ function ThemePicker($$renderer, $$props) {
|
|
|
206
226
|
$$renderer2.push("<!--[!-->");
|
|
207
227
|
$$renderer2.push("<!--]-->");
|
|
208
228
|
}
|
|
209
|
-
$$renderer2.push(` ${$
|
|
229
|
+
$$renderer2.push(` ${$10.escape(label)}</button>`);
|
|
210
230
|
}
|
|
211
231
|
$$renderer2.push(`<!--]--></div>`);
|
|
212
232
|
});
|
|
@@ -214,7 +234,7 @@ function ThemePicker($$renderer, $$props) {
|
|
|
214
234
|
|
|
215
235
|
// node_modules/@lucide/svelte/dist/icons/layers.svelte
|
|
216
236
|
import"svelte/internal/flags/async";
|
|
217
|
-
import * as $
|
|
237
|
+
import * as $11 from "svelte/internal/server";
|
|
218
238
|
function Layers($$renderer, $$props) {
|
|
219
239
|
let { $$slots, $$events, ...props } = $$props;
|
|
220
240
|
const iconNode = [
|
|
@@ -237,11 +257,11 @@ function Layers($$renderer, $$props) {
|
|
|
237
257
|
}
|
|
238
258
|
]
|
|
239
259
|
];
|
|
240
|
-
Icon($$renderer, $
|
|
260
|
+
Icon($$renderer, $11.spread_props([{ name: "layers" }, props, { iconNode }]));
|
|
241
261
|
}
|
|
242
262
|
// node_modules/@lucide/svelte/dist/icons/folder-minus.svelte
|
|
243
263
|
import"svelte/internal/flags/async";
|
|
244
|
-
import * as $
|
|
264
|
+
import * as $12 from "svelte/internal/server";
|
|
245
265
|
function Folder_minus($$renderer, $$props) {
|
|
246
266
|
let { $$slots, $$events, ...props } = $$props;
|
|
247
267
|
const iconNode = [
|
|
@@ -253,11 +273,11 @@ function Folder_minus($$renderer, $$props) {
|
|
|
253
273
|
}
|
|
254
274
|
]
|
|
255
275
|
];
|
|
256
|
-
Icon($$renderer, $
|
|
276
|
+
Icon($$renderer, $12.spread_props([{ name: "folder-minus" }, props, { iconNode }]));
|
|
257
277
|
}
|
|
258
278
|
// node_modules/@lucide/svelte/dist/icons/trash-2.svelte
|
|
259
279
|
import"svelte/internal/flags/async";
|
|
260
|
-
import * as $
|
|
280
|
+
import * as $13 from "svelte/internal/server";
|
|
261
281
|
function Trash_2($$renderer, $$props) {
|
|
262
282
|
let { $$slots, $$events, ...props } = $$props;
|
|
263
283
|
const iconNode = [
|
|
@@ -267,11 +287,11 @@ function Trash_2($$renderer, $$props) {
|
|
|
267
287
|
["path", { d: "M3 6h18" }],
|
|
268
288
|
["path", { d: "M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2" }]
|
|
269
289
|
];
|
|
270
|
-
Icon($$renderer, $
|
|
290
|
+
Icon($$renderer, $13.spread_props([{ name: "trash-2" }, props, { iconNode }]));
|
|
271
291
|
}
|
|
272
292
|
// node_modules/@lucide/svelte/dist/icons/hammer.svelte
|
|
273
293
|
import"svelte/internal/flags/async";
|
|
274
|
-
import * as $
|
|
294
|
+
import * as $14 from "svelte/internal/server";
|
|
275
295
|
function Hammer($$renderer, $$props) {
|
|
276
296
|
let { $$slots, $$events, ...props } = $$props;
|
|
277
297
|
const iconNode = [
|
|
@@ -284,11 +304,11 @@ function Hammer($$renderer, $$props) {
|
|
|
284
304
|
}
|
|
285
305
|
]
|
|
286
306
|
];
|
|
287
|
-
Icon($$renderer, $
|
|
307
|
+
Icon($$renderer, $14.spread_props([{ name: "hammer" }, props, { iconNode }]));
|
|
288
308
|
}
|
|
289
309
|
// node_modules/@lucide/svelte/dist/icons/key-round.svelte
|
|
290
310
|
import"svelte/internal/flags/async";
|
|
291
|
-
import * as $
|
|
311
|
+
import * as $15 from "svelte/internal/server";
|
|
292
312
|
function Key_round($$renderer, $$props) {
|
|
293
313
|
let { $$slots, $$events, ...props } = $$props;
|
|
294
314
|
const iconNode = [
|
|
@@ -303,11 +323,57 @@ function Key_round($$renderer, $$props) {
|
|
|
303
323
|
{ cx: "16.5", cy: "7.5", r: ".5", fill: "currentColor" }
|
|
304
324
|
]
|
|
305
325
|
];
|
|
306
|
-
Icon($$renderer, $
|
|
326
|
+
Icon($$renderer, $15.spread_props([{ name: "key-round" }, props, { iconNode }]));
|
|
327
|
+
}
|
|
328
|
+
// node_modules/@lucide/svelte/dist/icons/user-cog.svelte
|
|
329
|
+
import"svelte/internal/flags/async";
|
|
330
|
+
import * as $16 from "svelte/internal/server";
|
|
331
|
+
function User_cog($$renderer, $$props) {
|
|
332
|
+
let { $$slots, $$events, ...props } = $$props;
|
|
333
|
+
const iconNode = [
|
|
334
|
+
["path", { d: "M10 15H6a4 4 0 0 0-4 4v2" }],
|
|
335
|
+
["path", { d: "m14.305 16.53.923-.382" }],
|
|
336
|
+
["path", { d: "m15.228 13.852-.923-.383" }],
|
|
337
|
+
["path", { d: "m16.852 12.228-.383-.923" }],
|
|
338
|
+
["path", { d: "m16.852 17.772-.383.924" }],
|
|
339
|
+
["path", { d: "m19.148 12.228.383-.923" }],
|
|
340
|
+
["path", { d: "m19.53 18.696-.382-.924" }],
|
|
341
|
+
["path", { d: "m20.772 13.852.924-.383" }],
|
|
342
|
+
["path", { d: "m20.772 16.148.924.383" }],
|
|
343
|
+
["circle", { cx: "18", cy: "15", r: "3" }],
|
|
344
|
+
["circle", { cx: "9", cy: "7", r: "4" }]
|
|
345
|
+
];
|
|
346
|
+
Icon($$renderer, $16.spread_props([{ name: "user-cog" }, props, { iconNode }]));
|
|
347
|
+
}
|
|
348
|
+
// node_modules/@lucide/svelte/dist/icons/cpu.svelte
|
|
349
|
+
import"svelte/internal/flags/async";
|
|
350
|
+
import * as $17 from "svelte/internal/server";
|
|
351
|
+
function Cpu($$renderer, $$props) {
|
|
352
|
+
let { $$slots, $$events, ...props } = $$props;
|
|
353
|
+
const iconNode = [
|
|
354
|
+
["path", { d: "M12 20v2" }],
|
|
355
|
+
["path", { d: "M12 2v2" }],
|
|
356
|
+
["path", { d: "M17 20v2" }],
|
|
357
|
+
["path", { d: "M17 2v2" }],
|
|
358
|
+
["path", { d: "M2 12h2" }],
|
|
359
|
+
["path", { d: "M2 17h2" }],
|
|
360
|
+
["path", { d: "M2 7h2" }],
|
|
361
|
+
["path", { d: "M20 12h2" }],
|
|
362
|
+
["path", { d: "M20 17h2" }],
|
|
363
|
+
["path", { d: "M20 7h2" }],
|
|
364
|
+
["path", { d: "M7 20v2" }],
|
|
365
|
+
["path", { d: "M7 2v2" }],
|
|
366
|
+
[
|
|
367
|
+
"rect",
|
|
368
|
+
{ x: "4", y: "4", width: "16", height: "16", rx: "2" }
|
|
369
|
+
],
|
|
370
|
+
["rect", { x: "8", y: "8", width: "8", height: "8", rx: "1" }]
|
|
371
|
+
];
|
|
372
|
+
Icon($$renderer, $17.spread_props([{ name: "cpu" }, props, { iconNode }]));
|
|
307
373
|
}
|
|
308
374
|
// node_modules/@lucide/svelte/dist/icons/variable.svelte
|
|
309
375
|
import"svelte/internal/flags/async";
|
|
310
|
-
import * as $
|
|
376
|
+
import * as $18 from "svelte/internal/server";
|
|
311
377
|
function Variable($$renderer, $$props) {
|
|
312
378
|
let { $$slots, $$events, ...props } = $$props;
|
|
313
379
|
const iconNode = [
|
|
@@ -316,14 +382,14 @@ function Variable($$renderer, $$props) {
|
|
|
316
382
|
["line", { x1: "15", x2: "9", y1: "9", y2: "15" }],
|
|
317
383
|
["line", { x1: "9", x2: "15", y1: "9", y2: "15" }]
|
|
318
384
|
];
|
|
319
|
-
Icon($$renderer, $
|
|
385
|
+
Icon($$renderer, $18.spread_props([{ name: "variable" }, props, { iconNode }]));
|
|
320
386
|
}
|
|
321
387
|
// src/components/SettingsView.svelte
|
|
322
388
|
import { flushSync } from "svelte";
|
|
323
389
|
|
|
324
390
|
// src/components/CoinButton.svelte
|
|
325
391
|
import"svelte/internal/flags/async";
|
|
326
|
-
import * as $
|
|
392
|
+
import * as $19 from "svelte/internal/server";
|
|
327
393
|
function CoinButton($$renderer, $$props) {
|
|
328
394
|
let { href = "/avatars" } = $$props;
|
|
329
395
|
const coinArt = {
|
|
@@ -339,7 +405,7 @@ function CoinButton($$renderer, $$props) {
|
|
|
339
405
|
"..####.."
|
|
340
406
|
]
|
|
341
407
|
};
|
|
342
|
-
$$renderer.push(`<div class="coin-row svelte-1ioj7vz"><span class="pixel-line svelte-1ioj7vz" aria-hidden="true"></span> <a class="coin-btn svelte-1ioj7vz"${$
|
|
408
|
+
$$renderer.push(`<div class="coin-row svelte-1ioj7vz"><span class="pixel-line svelte-1ioj7vz" aria-hidden="true"></span> <a class="coin-btn svelte-1ioj7vz"${$19.attr("href", href)} 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">`);
|
|
343
409
|
Avatar($$renderer, { art: coinArt, name: "coin", scale: 3 });
|
|
344
410
|
$$renderer.push(`<!----></span></a> <span class="pixel-line svelte-1ioj7vz" aria-hidden="true"></span></div>`);
|
|
345
411
|
}
|
|
@@ -348,11 +414,15 @@ function CoinButton($$renderer, $$props) {
|
|
|
348
414
|
function SettingsView($$renderer, $$props) {
|
|
349
415
|
$$renderer.component(($$renderer2) => {
|
|
350
416
|
let {
|
|
417
|
+
pet,
|
|
351
418
|
defaultImage,
|
|
352
419
|
builtinImage,
|
|
353
420
|
disableBuildCache,
|
|
354
421
|
copyIgnorePatterns,
|
|
355
422
|
builtinCopyIgnore,
|
|
423
|
+
gitIdentityEnabled,
|
|
424
|
+
gitIdentityName,
|
|
425
|
+
gitIdentityEmail,
|
|
356
426
|
dockerArch,
|
|
357
427
|
manualTokensEnabled,
|
|
358
428
|
githubTokenSet,
|
|
@@ -365,12 +435,21 @@ function SettingsView($$renderer, $$props) {
|
|
|
365
435
|
customEndpointHaikuModel,
|
|
366
436
|
customEndpointSmallFastModel,
|
|
367
437
|
customEndpointModel,
|
|
438
|
+
manualModelOverrideEnabled,
|
|
439
|
+
manualOpusModel,
|
|
440
|
+
manualSonnetModel,
|
|
441
|
+
manualHaikuModel,
|
|
442
|
+
manualSmallFastModel,
|
|
443
|
+
manualModel,
|
|
368
444
|
hostEnvVarsEnabled,
|
|
369
445
|
hostEnvVarNames,
|
|
370
446
|
hostEnvVarPresence,
|
|
371
447
|
version
|
|
372
448
|
} = $$props;
|
|
373
449
|
let sound = soundEnabled();
|
|
450
|
+
let petArt = pet;
|
|
451
|
+
let savingPet = false;
|
|
452
|
+
let petError = null;
|
|
374
453
|
let shuttingDown = false;
|
|
375
454
|
function saveOpts(handlers) {
|
|
376
455
|
return {
|
|
@@ -447,6 +526,29 @@ function SettingsView($$renderer, $$props) {
|
|
|
447
526
|
flushSync(() => copyIgnore = builtinCopyIgnore);
|
|
448
527
|
copyIgnoreFormEl?.requestSubmit();
|
|
449
528
|
}
|
|
529
|
+
let gitIdentity = gitIdentityEnabled;
|
|
530
|
+
let savingGitToggle = false;
|
|
531
|
+
let gitToggleError = null;
|
|
532
|
+
const gitIdentityToggleOpts = toggleOpts({
|
|
533
|
+
set: (v) => gitIdentity = v,
|
|
534
|
+
setSaving: (v) => savingGitToggle = v,
|
|
535
|
+
setError: (v) => gitToggleError = v
|
|
536
|
+
});
|
|
537
|
+
let gitName = gitIdentityName;
|
|
538
|
+
let gitEmail = gitIdentityEmail;
|
|
539
|
+
let savingGitIdentity = false;
|
|
540
|
+
let gitIdentityError = null;
|
|
541
|
+
let gitIdentitySaved = false;
|
|
542
|
+
const gitIdentityOpts = saveOpts({
|
|
543
|
+
setSaving: (v) => savingGitIdentity = v,
|
|
544
|
+
setError: (v) => gitIdentityError = v,
|
|
545
|
+
setMsg: (v) => gitIdentitySaved = !!v,
|
|
546
|
+
onSuccess: (data) => {
|
|
547
|
+
gitName = data?.name ?? gitName;
|
|
548
|
+
gitEmail = data?.email ?? gitEmail;
|
|
549
|
+
gitIdentitySaved = true;
|
|
550
|
+
}
|
|
551
|
+
});
|
|
450
552
|
let noCache = disableBuildCache;
|
|
451
553
|
let savingCache = false;
|
|
452
554
|
let cacheError = null;
|
|
@@ -530,7 +632,11 @@ function SettingsView($$renderer, $$props) {
|
|
|
530
632
|
const customEndpointToggleOpts = toggleOpts({
|
|
531
633
|
set: (v) => customEndpoint = v,
|
|
532
634
|
setSaving: (v) => savingCustomToggle = v,
|
|
533
|
-
setError: (v) => customToggleError = v
|
|
635
|
+
setError: (v) => customToggleError = v,
|
|
636
|
+
onSuccess: (data) => {
|
|
637
|
+
if (data?.enabled)
|
|
638
|
+
manualModelOverride = false;
|
|
639
|
+
}
|
|
534
640
|
});
|
|
535
641
|
let customBaseUrl = customEndpointBaseUrl;
|
|
536
642
|
let savingCustomBaseUrl = false;
|
|
@@ -575,6 +681,35 @@ function SettingsView($$renderer, $$props) {
|
|
|
575
681
|
customModelsMsg = "Saved.";
|
|
576
682
|
}
|
|
577
683
|
});
|
|
684
|
+
let manualModelOverride = manualModelOverrideEnabled;
|
|
685
|
+
let savingManualModelToggle = false;
|
|
686
|
+
let manualModelToggleError = null;
|
|
687
|
+
const manualModelToggleOpts = toggleOpts({
|
|
688
|
+
set: (v) => manualModelOverride = v,
|
|
689
|
+
setSaving: (v) => savingManualModelToggle = v,
|
|
690
|
+
setError: (v) => manualModelToggleError = v,
|
|
691
|
+
onSuccess: (data) => {
|
|
692
|
+
if (data?.enabled)
|
|
693
|
+
customEndpoint = false;
|
|
694
|
+
}
|
|
695
|
+
});
|
|
696
|
+
let manualOpus = manualOpusModel;
|
|
697
|
+
let manualSonnet = manualSonnetModel;
|
|
698
|
+
let manualHaiku = manualHaikuModel;
|
|
699
|
+
let manualSmallFast = manualSmallFastModel;
|
|
700
|
+
let manualDefault = manualModel;
|
|
701
|
+
let savingManualModels = false;
|
|
702
|
+
let manualModelsMsg = null;
|
|
703
|
+
let manualModelsError = null;
|
|
704
|
+
const manualModelsOpts = saveOpts({
|
|
705
|
+
setSaving: (v) => savingManualModels = v,
|
|
706
|
+
setError: (v) => manualModelsError = v,
|
|
707
|
+
setMsg: (v) => manualModelsMsg = v,
|
|
708
|
+
onSuccess: () => {
|
|
709
|
+
manualModelsMsg = "Saved.";
|
|
710
|
+
}
|
|
711
|
+
});
|
|
712
|
+
let litellmBlocker = $20.derived(() => manualTokens ? "Set tokens manually" : manualModelOverride ? "Override models manually" : null);
|
|
578
713
|
let hostEnvVars = hostEnvVarsEnabled;
|
|
579
714
|
let savingHostEnvToggle = false;
|
|
580
715
|
let hostEnvToggleError = null;
|
|
@@ -649,6 +784,28 @@ function SettingsView($$renderer, $$props) {
|
|
|
649
784
|
if (on)
|
|
650
785
|
playChime("done");
|
|
651
786
|
}
|
|
787
|
+
const petToggleOpts = {
|
|
788
|
+
onPending: (v) => savingPet = v,
|
|
789
|
+
submit: () => {
|
|
790
|
+
petError = null;
|
|
791
|
+
return ({ result }) => {
|
|
792
|
+
if (result.type === "success") {
|
|
793
|
+
petArt = result.data?.name ? findAvatar(result.data.name) : undefined;
|
|
794
|
+
return;
|
|
795
|
+
}
|
|
796
|
+
petError = result.type === "failure" ? result.data?.error ?? "Request failed" : "Network error. Try again.";
|
|
797
|
+
};
|
|
798
|
+
}
|
|
799
|
+
};
|
|
800
|
+
function petChooseOpts(art) {
|
|
801
|
+
return saveOpts({
|
|
802
|
+
setSaving: (v) => savingPet = v,
|
|
803
|
+
setError: (v) => petError = v,
|
|
804
|
+
onSuccess: (data) => {
|
|
805
|
+
petArt = (data?.name ? findAvatar(data.name) : undefined) ?? art;
|
|
806
|
+
}
|
|
807
|
+
});
|
|
808
|
+
}
|
|
652
809
|
const shutdownOpts = {
|
|
653
810
|
submit: ({ cancel }) => {
|
|
654
811
|
if (!confirm("Delete the database, remove all instances and their containers, and shut down the server? This cannot be undone.")) {
|
|
@@ -666,16 +823,16 @@ function SettingsView($$renderer, $$props) {
|
|
|
666
823
|
$$slots: { default: true }
|
|
667
824
|
});
|
|
668
825
|
$$renderer2.push(`<!----> <main class="content svelte-1n6ht58"><section class="card svelte-1n6ht58"><form class="row image-row svelte-1n6ht58" method="POST" action="?/defaultImage"><div class="label svelte-1n6ht58">`);
|
|
669
|
-
Container($$renderer2, { size:
|
|
826
|
+
Container($$renderer2, { size: 20 });
|
|
670
827
|
$$renderer2.push(`<!----> <div class="text svelte-1n6ht58"><div class="name svelte-1n6ht58">Default container image `);
|
|
671
828
|
if (dockerArch) {
|
|
672
829
|
$$renderer2.push("<!--[0-->");
|
|
673
|
-
$$renderer2.push(`<span class="arch svelte-1n6ht58" title="Docker daemon architecture">${$
|
|
830
|
+
$$renderer2.push(`<span class="arch svelte-1n6ht58" title="Docker daemon architecture">${$20.escape(dockerArch)}</span>`);
|
|
674
831
|
} else {
|
|
675
832
|
$$renderer2.push("<!--[-1-->");
|
|
676
833
|
}
|
|
677
834
|
$$renderer2.push(`<!--]--></div> <div class="desc svelte-1n6ht58">Used only when a project folder ships no devcontainer.json. Takes effect for instances
|
|
678
|
-
created from now on.</div></div></div> <div class="image-controls svelte-1n6ht58"><input type="text" name="image" class="image-input svelte-1n6ht58"${$
|
|
835
|
+
created from now on.</div></div></div> <div class="image-controls svelte-1n6ht58"><input type="text" name="image" class="image-input svelte-1n6ht58"${$20.attr("value", image)} spellcheck="false" autocapitalize="off" autocorrect="off" placeholder="mcr.microsoft.com/devcontainers/base:ubuntu"/> `);
|
|
679
836
|
Button($$renderer2, {
|
|
680
837
|
type: "submit",
|
|
681
838
|
disabled: savingImage,
|
|
@@ -690,14 +847,14 @@ function SettingsView($$renderer, $$props) {
|
|
|
690
847
|
icon: Rotate_ccw,
|
|
691
848
|
disabled: savingImage,
|
|
692
849
|
onclick: resetImage,
|
|
693
|
-
title: `Reset to default (${$
|
|
850
|
+
title: `Reset to default (${$20.stringify(builtinImage)})`,
|
|
694
851
|
"aria-label": "Reset to default image"
|
|
695
852
|
});
|
|
696
853
|
$$renderer2.push(`<!----></div> <div class="desc tip svelte-1n6ht58">`);
|
|
697
854
|
if (dockerArch) {
|
|
698
855
|
$$renderer2.push("<!--[0-->");
|
|
699
|
-
$$renderer2.push(`Your Docker daemon runs on <strong>${$
|
|
700
|
-
an <strong>${$
|
|
856
|
+
$$renderer2.push(`Your Docker daemon runs on <strong>${$20.escape(dockerArch)}</strong> \u2014 pick an image that publishes
|
|
857
|
+
an <strong>${$20.escape(dockerArch)}</strong> manifest, or the pull will fail.`);
|
|
701
858
|
} else {
|
|
702
859
|
$$renderer2.push("<!--[-1-->");
|
|
703
860
|
$$renderer2.push(`Pick an image whose manifest covers your Docker daemon's architecture, or the pull will
|
|
@@ -706,7 +863,7 @@ function SettingsView($$renderer, $$props) {
|
|
|
706
863
|
$$renderer2.push(`<!--]--></div> `);
|
|
707
864
|
if (imageError) {
|
|
708
865
|
$$renderer2.push("<!--[0-->");
|
|
709
|
-
$$renderer2.push(`<div class="msg error svelte-1n6ht58">${$
|
|
866
|
+
$$renderer2.push(`<div class="msg error svelte-1n6ht58">${$20.escape(imageError)}</div>`);
|
|
710
867
|
} else if (imageSaved) {
|
|
711
868
|
$$renderer2.push("<!--[1-->");
|
|
712
869
|
$$renderer2.push(`<div class="msg ok svelte-1n6ht58">Saved.</div>`);
|
|
@@ -714,10 +871,10 @@ function SettingsView($$renderer, $$props) {
|
|
|
714
871
|
$$renderer2.push("<!--[-1-->");
|
|
715
872
|
}
|
|
716
873
|
$$renderer2.push(`<!--]--></form></section> <section class="card svelte-1n6ht58"><form class="row image-row svelte-1n6ht58" method="POST" action="?/copyIgnorePatterns"><div class="label svelte-1n6ht58">`);
|
|
717
|
-
Folder_minus($$renderer2, { size:
|
|
874
|
+
Folder_minus($$renderer2, { size: 20 });
|
|
718
875
|
$$renderer2.push(`<!----> <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
|
|
719
876
|
new instance's workspace. Leave blank to copy everything. Only applies to local
|
|
720
|
-
folders \u2014 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"${$
|
|
877
|
+
folders \u2014 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"${$20.attr("value", copyIgnore)} spellcheck="false" autocapitalize="off" autocorrect="off" placeholder="node_modules, .venv, dist"/> `);
|
|
721
878
|
Button($$renderer2, {
|
|
722
879
|
type: "submit",
|
|
723
880
|
disabled: savingCopyIgnore,
|
|
@@ -732,39 +889,77 @@ function SettingsView($$renderer, $$props) {
|
|
|
732
889
|
icon: Rotate_ccw,
|
|
733
890
|
disabled: savingCopyIgnore,
|
|
734
891
|
onclick: resetCopyIgnore,
|
|
735
|
-
title: `Reset to default (${$
|
|
892
|
+
title: `Reset to default (${$20.stringify(builtinCopyIgnore)})`,
|
|
736
893
|
"aria-label": "Reset to default copy-ignore patterns"
|
|
737
894
|
});
|
|
738
895
|
$$renderer2.push(`<!----></div> `);
|
|
739
896
|
if (copyIgnoreError) {
|
|
740
897
|
$$renderer2.push("<!--[0-->");
|
|
741
|
-
$$renderer2.push(`<div class="msg error svelte-1n6ht58">${$
|
|
898
|
+
$$renderer2.push(`<div class="msg error svelte-1n6ht58">${$20.escape(copyIgnoreError)}</div>`);
|
|
742
899
|
} else if (copyIgnoreSaved) {
|
|
743
900
|
$$renderer2.push("<!--[1-->");
|
|
744
901
|
$$renderer2.push(`<div class="msg ok svelte-1n6ht58">Saved.</div>`);
|
|
745
902
|
} else {
|
|
746
903
|
$$renderer2.push("<!--[-1-->");
|
|
747
904
|
}
|
|
748
|
-
$$renderer2.push(`<!--]--></form></section> <section class="card svelte-1n6ht58"><form class="row svelte-1n6ht58" method="POST" action="?/
|
|
749
|
-
|
|
905
|
+
$$renderer2.push(`<!--]--></form></section> <section class="card svelte-1n6ht58"><form class="row svelte-1n6ht58" method="POST" action="?/gitIdentityToggle"><div class="label svelte-1n6ht58">`);
|
|
906
|
+
User_cog($$renderer2, { size: 20 });
|
|
907
|
+
$$renderer2.push(`<!----> <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
|
|
908
|
+
new container, taking precedence over the host's own git config. When off, each container
|
|
909
|
+
falls back to the host's identity.</div></div></div> <label class="switch svelte-1n6ht58"><input type="checkbox" name="enabled"${$20.attr("checked", gitIdentity, true)}${$20.attr("disabled", savingGitToggle, true)} class="svelte-1n6ht58"/> <span class="track svelte-1n6ht58"><span class="thumb svelte-1n6ht58"></span></span></label></form> `);
|
|
910
|
+
if (gitToggleError) {
|
|
911
|
+
$$renderer2.push("<!--[0-->");
|
|
912
|
+
$$renderer2.push(`<div class="sub svelte-1n6ht58"><div class="msg error svelte-1n6ht58">${$20.escape(gitToggleError)}</div></div>`);
|
|
913
|
+
} else {
|
|
914
|
+
$$renderer2.push("<!--[-1-->");
|
|
915
|
+
}
|
|
916
|
+
$$renderer2.push(`<!--]--> `);
|
|
917
|
+
if (gitIdentity) {
|
|
918
|
+
$$renderer2.push("<!--[0-->");
|
|
919
|
+
$$renderer2.push(`<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 \u2014 leave either blank and the container falls back to the
|
|
920
|
+
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"${$20.attr("value", gitName)} 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"${$20.attr("value", gitEmail)} spellcheck="false" autocapitalize="off" autocorrect="off" placeholder="jane@example.com"/></label> <div class="model-save-row svelte-1n6ht58">`);
|
|
921
|
+
Button($$renderer2, {
|
|
922
|
+
type: "submit",
|
|
923
|
+
disabled: savingGitIdentity,
|
|
924
|
+
children: ($$renderer3) => {
|
|
925
|
+
$$renderer3.push(`<!---->Save`);
|
|
926
|
+
},
|
|
927
|
+
$$slots: { default: true }
|
|
928
|
+
});
|
|
929
|
+
$$renderer2.push(`<!----></div></div> `);
|
|
930
|
+
if (gitIdentityError) {
|
|
931
|
+
$$renderer2.push("<!--[0-->");
|
|
932
|
+
$$renderer2.push(`<div class="msg error svelte-1n6ht58">${$20.escape(gitIdentityError)}</div>`);
|
|
933
|
+
} else if (gitIdentitySaved) {
|
|
934
|
+
$$renderer2.push("<!--[1-->");
|
|
935
|
+
$$renderer2.push(`<div class="msg ok svelte-1n6ht58">Saved.</div>`);
|
|
936
|
+
} else {
|
|
937
|
+
$$renderer2.push("<!--[-1-->");
|
|
938
|
+
}
|
|
939
|
+
$$renderer2.push(`<!--]--></form>`);
|
|
940
|
+
} else {
|
|
941
|
+
$$renderer2.push("<!--[-1-->");
|
|
942
|
+
}
|
|
943
|
+
$$renderer2.push(`<!--]--></section> <section class="card svelte-1n6ht58"><form class="row svelte-1n6ht58" method="POST" action="?/disableBuildCache"><div class="label svelte-1n6ht58">`);
|
|
944
|
+
Layers($$renderer2, { size: 20 });
|
|
750
945
|
$$renderer2.push(`<!----> <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
|
|
751
|
-
and rebuilds \u2014 slower, but always picks up upstream image/layer changes.</div></div></div> <label class="switch svelte-1n6ht58"><input type="checkbox" name="enabled"${$
|
|
946
|
+
and rebuilds \u2014 slower, but always picks up upstream image/layer changes.</div></div></div> <label class="switch svelte-1n6ht58"><input type="checkbox" name="enabled"${$20.attr("checked", noCache, true)}${$20.attr("disabled", savingCache, true)} class="svelte-1n6ht58"/> <span class="track svelte-1n6ht58"><span class="thumb svelte-1n6ht58"></span></span></label></form> `);
|
|
752
947
|
if (cacheError) {
|
|
753
948
|
$$renderer2.push("<!--[0-->");
|
|
754
|
-
$$renderer2.push(`<div class="sub svelte-1n6ht58"><div class="msg error svelte-1n6ht58">${$
|
|
949
|
+
$$renderer2.push(`<div class="sub svelte-1n6ht58"><div class="msg error svelte-1n6ht58">${$20.escape(cacheError)}</div></div>`);
|
|
755
950
|
} else {
|
|
756
951
|
$$renderer2.push("<!--[-1-->");
|
|
757
952
|
}
|
|
758
953
|
$$renderer2.push(`<!--]--> <form class="row divided svelte-1n6ht58" method="POST" action="?/clearBuildCache"><div class="label svelte-1n6ht58">`);
|
|
759
|
-
Trash_2($$renderer2, { size:
|
|
954
|
+
Trash_2($$renderer2, { size: 20 });
|
|
760
955
|
$$renderer2.push(`<!----> <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
|
|
761
956
|
remove pulled images.</div> `);
|
|
762
957
|
if (clearError) {
|
|
763
958
|
$$renderer2.push("<!--[0-->");
|
|
764
|
-
$$renderer2.push(`<div class="msg error svelte-1n6ht58">${$
|
|
959
|
+
$$renderer2.push(`<div class="msg error svelte-1n6ht58">${$20.escape(clearError)}</div>`);
|
|
765
960
|
} else if (clearMsg) {
|
|
766
961
|
$$renderer2.push("<!--[1-->");
|
|
767
|
-
$$renderer2.push(`<div class="msg ok svelte-1n6ht58">${$
|
|
962
|
+
$$renderer2.push(`<div class="msg ok svelte-1n6ht58">${$20.escape(clearMsg)}</div>`);
|
|
768
963
|
} else {
|
|
769
964
|
$$renderer2.push("<!--[-1-->");
|
|
770
965
|
}
|
|
@@ -774,20 +969,20 @@ function SettingsView($$renderer, $$props) {
|
|
|
774
969
|
icon: Trash_2,
|
|
775
970
|
disabled: clearing,
|
|
776
971
|
children: ($$renderer3) => {
|
|
777
|
-
$$renderer3.push(`<!---->${$
|
|
972
|
+
$$renderer3.push(`<!---->${$20.escape(clearing ? "Clearing\u2026" : "Clear cache")}`);
|
|
778
973
|
},
|
|
779
974
|
$$slots: { default: true }
|
|
780
975
|
});
|
|
781
976
|
$$renderer2.push(`<!----></form> <form class="row divided svelte-1n6ht58" method="POST" action="?/rebuildAllNoCache"><div class="label svelte-1n6ht58">`);
|
|
782
|
-
Hammer($$renderer2, { size:
|
|
977
|
+
Hammer($$renderer2, { size: 20 });
|
|
783
978
|
$$renderer2.push(`<!----> <div class="text svelte-1n6ht58"><div class="name svelte-1n6ht58">Rebuild running containers (no cache)</div> <div class="desc svelte-1n6ht58">Re-run <code class="svelte-1n6ht58">devcontainer up --build-no-cache</code> for every currently-running instance.
|
|
784
979
|
In-container edits are kept; stopped instances are left alone.</div> `);
|
|
785
980
|
if (rebuildError) {
|
|
786
981
|
$$renderer2.push("<!--[0-->");
|
|
787
|
-
$$renderer2.push(`<div class="msg error svelte-1n6ht58">${$
|
|
982
|
+
$$renderer2.push(`<div class="msg error svelte-1n6ht58">${$20.escape(rebuildError)}</div>`);
|
|
788
983
|
} else if (rebuildMsg) {
|
|
789
984
|
$$renderer2.push("<!--[1-->");
|
|
790
|
-
$$renderer2.push(`<div class="msg ok svelte-1n6ht58">${$
|
|
985
|
+
$$renderer2.push(`<div class="msg ok svelte-1n6ht58">${$20.escape(rebuildMsg)}</div>`);
|
|
791
986
|
} else {
|
|
792
987
|
$$renderer2.push("<!--[-1-->");
|
|
793
988
|
}
|
|
@@ -797,12 +992,12 @@ function SettingsView($$renderer, $$props) {
|
|
|
797
992
|
icon: Hammer,
|
|
798
993
|
disabled: rebuilding,
|
|
799
994
|
children: ($$renderer3) => {
|
|
800
|
-
$$renderer3.push(`<!---->${$
|
|
995
|
+
$$renderer3.push(`<!---->${$20.escape(rebuilding ? "Starting\u2026" : "Rebuild all")}`);
|
|
801
996
|
},
|
|
802
997
|
$$slots: { default: true }
|
|
803
998
|
});
|
|
804
|
-
$$renderer2.push(`<!----></form></section> <section${$
|
|
805
|
-
Key_round($$renderer2, { size:
|
|
999
|
+
$$renderer2.push(`<!----></form></section> <section${$20.attr_class("card svelte-1n6ht58", undefined, { "disabled-card": customEndpoint })}><form class="row svelte-1n6ht58" method="POST" action="?/manualTokensToggle"><div class="label svelte-1n6ht58">`);
|
|
1000
|
+
Key_round($$renderer2, { size: 20 });
|
|
806
1001
|
$$renderer2.push(`<!----> <div class="text svelte-1n6ht58"><div class="name svelte-1n6ht58">Set tokens manually `);
|
|
807
1002
|
if (customEndpoint) {
|
|
808
1003
|
$$renderer2.push("<!--[0-->");
|
|
@@ -822,10 +1017,10 @@ function SettingsView($$renderer, $$props) {
|
|
|
822
1017
|
token set here is injected into every new container and overrides host credential
|
|
823
1018
|
discovery.`);
|
|
824
1019
|
}
|
|
825
|
-
$$renderer2.push(`<!--]--></div></div></div> <label class="switch svelte-1n6ht58"><input type="checkbox" name="enabled"${$
|
|
1020
|
+
$$renderer2.push(`<!--]--></div></div></div> <label class="switch svelte-1n6ht58"><input type="checkbox" name="enabled"${$20.attr("checked", manualTokens, true)}${$20.attr("disabled", savingManualToggle || customEndpoint, true)} class="svelte-1n6ht58"/> <span class="track svelte-1n6ht58"><span class="thumb svelte-1n6ht58"></span></span></label></form> `);
|
|
826
1021
|
if (manualToggleError) {
|
|
827
1022
|
$$renderer2.push("<!--[0-->");
|
|
828
|
-
$$renderer2.push(`<div class="sub svelte-1n6ht58"><div class="msg error svelte-1n6ht58">${$
|
|
1023
|
+
$$renderer2.push(`<div class="sub svelte-1n6ht58"><div class="msg error svelte-1n6ht58">${$20.escape(manualToggleError)}</div></div>`);
|
|
829
1024
|
} else {
|
|
830
1025
|
$$renderer2.push("<!--[-1-->");
|
|
831
1026
|
}
|
|
@@ -833,7 +1028,7 @@ function SettingsView($$renderer, $$props) {
|
|
|
833
1028
|
if (manualTokens && !customEndpoint) {
|
|
834
1029
|
$$renderer2.push("<!--[0-->");
|
|
835
1030
|
$$renderer2.push(`<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
|
|
836
|
-
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"${$
|
|
1031
|
+
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"${$20.attr("value", githubToken)} spellcheck="false" autocapitalize="off" autocorrect="off" autocomplete="off"${$20.attr("placeholder", ghSaved ? "\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022 (saved)" : "ghp_\u2026 / gho_\u2026")}/> `);
|
|
837
1032
|
Button($$renderer2, {
|
|
838
1033
|
type: "submit",
|
|
839
1034
|
disabled: savingGithub,
|
|
@@ -845,17 +1040,17 @@ function SettingsView($$renderer, $$props) {
|
|
|
845
1040
|
$$renderer2.push(`<!----></div> `);
|
|
846
1041
|
if (githubError) {
|
|
847
1042
|
$$renderer2.push("<!--[0-->");
|
|
848
|
-
$$renderer2.push(`<div class="msg error svelte-1n6ht58">${$
|
|
1043
|
+
$$renderer2.push(`<div class="msg error svelte-1n6ht58">${$20.escape(githubError)}</div>`);
|
|
849
1044
|
} else if (githubMsg) {
|
|
850
1045
|
$$renderer2.push("<!--[1-->");
|
|
851
|
-
$$renderer2.push(`<div class="msg ok svelte-1n6ht58">${$
|
|
1046
|
+
$$renderer2.push(`<div class="msg ok svelte-1n6ht58">${$20.escape(githubMsg)}</div>`);
|
|
852
1047
|
} else {
|
|
853
1048
|
$$renderer2.push("<!--[-1-->");
|
|
854
1049
|
}
|
|
855
1050
|
$$renderer2.push(`<!--]--></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
|
|
856
1051
|
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 \u2014
|
|
857
1052
|
the first <code class="svelte-1n6ht58">claude</code> to refresh it signs the other one out. Leave blank and Save
|
|
858
|
-
to clear.</div></div></div> <div class="image-controls svelte-1n6ht58"><input type="password" name="claudeToken" class="image-input svelte-1n6ht58"${$
|
|
1053
|
+
to clear.</div></div></div> <div class="image-controls svelte-1n6ht58"><input type="password" name="claudeToken" class="image-input svelte-1n6ht58"${$20.attr("value", claudeToken)} spellcheck="false" autocapitalize="off" autocorrect="off" autocomplete="off"${$20.attr("placeholder", claudeSaved ? "\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022 (saved)" : "sk-ant-oat\u2026")}/> `);
|
|
859
1054
|
Button($$renderer2, {
|
|
860
1055
|
type: "submit",
|
|
861
1056
|
disabled: savingClaude,
|
|
@@ -867,10 +1062,10 @@ function SettingsView($$renderer, $$props) {
|
|
|
867
1062
|
$$renderer2.push(`<!----></div> `);
|
|
868
1063
|
if (claudeError) {
|
|
869
1064
|
$$renderer2.push("<!--[0-->");
|
|
870
|
-
$$renderer2.push(`<div class="msg error svelte-1n6ht58">${$
|
|
1065
|
+
$$renderer2.push(`<div class="msg error svelte-1n6ht58">${$20.escape(claudeError)}</div>`);
|
|
871
1066
|
} else if (claudeMsg) {
|
|
872
1067
|
$$renderer2.push("<!--[1-->");
|
|
873
|
-
$$renderer2.push(`<div class="msg ok svelte-1n6ht58">${$
|
|
1068
|
+
$$renderer2.push(`<div class="msg ok svelte-1n6ht58">${$20.escape(claudeMsg)}</div>`);
|
|
874
1069
|
} else {
|
|
875
1070
|
$$renderer2.push("<!--[-1-->");
|
|
876
1071
|
}
|
|
@@ -878,19 +1073,19 @@ function SettingsView($$renderer, $$props) {
|
|
|
878
1073
|
} else {
|
|
879
1074
|
$$renderer2.push("<!--[-1-->");
|
|
880
1075
|
}
|
|
881
|
-
$$renderer2.push(`<!--]--></section> <section${$
|
|
882
|
-
Key_round($$renderer2, { size:
|
|
1076
|
+
$$renderer2.push(`<!--]--></section> <section${$20.attr_class("card svelte-1n6ht58", undefined, { "disabled-card": litellmBlocker() })}><form class="row svelte-1n6ht58" method="POST" action="?/customEndpointToggle"><div class="label svelte-1n6ht58">`);
|
|
1077
|
+
Key_round($$renderer2, { size: 20 });
|
|
883
1078
|
$$renderer2.push(`<!----> <div class="text svelte-1n6ht58"><div class="name svelte-1n6ht58">LiteLLM + Bedrock `);
|
|
884
|
-
if (
|
|
1079
|
+
if (litellmBlocker()) {
|
|
885
1080
|
$$renderer2.push("<!--[0-->");
|
|
886
|
-
$$renderer2.push(`<span class="arch svelte-1n6ht58"
|
|
1081
|
+
$$renderer2.push(`<span class="arch svelte-1n6ht58"${$20.attr("title", `Disabled while ${$20.stringify(litellmBlocker())} is on`)}>disabled</span>`);
|
|
887
1082
|
} else {
|
|
888
1083
|
$$renderer2.push("<!--[-1-->");
|
|
889
1084
|
}
|
|
890
1085
|
$$renderer2.push(`<!--]--></div> <div class="desc svelte-1n6ht58">`);
|
|
891
|
-
if (
|
|
1086
|
+
if (litellmBlocker()) {
|
|
892
1087
|
$$renderer2.push("<!--[0-->");
|
|
893
|
-
$$renderer2.push(`Not available while "
|
|
1088
|
+
$$renderer2.push(`Not available while "${$20.escape(litellmBlocker())}" is enabled \u2014 these modes are mutually
|
|
894
1089
|
incompatible.`);
|
|
895
1090
|
} else {
|
|
896
1091
|
$$renderer2.push("<!--[-1-->");
|
|
@@ -898,17 +1093,17 @@ function SettingsView($$renderer, $$props) {
|
|
|
898
1093
|
default API. When enabled, the Bedrock endpoint variables are injected into every new
|
|
899
1094
|
container, host OAuth credentials are not used, and "Set tokens manually" is disabled.`);
|
|
900
1095
|
}
|
|
901
|
-
$$renderer2.push(`<!--]--></div></div></div> <label class="switch svelte-1n6ht58"><input type="checkbox" name="enabled"${$
|
|
1096
|
+
$$renderer2.push(`<!--]--></div></div></div> <label class="switch svelte-1n6ht58"><input type="checkbox" name="enabled"${$20.attr("checked", customEndpoint, true)}${$20.attr("disabled", savingCustomToggle || !!litellmBlocker(), true)} class="svelte-1n6ht58"/> <span class="track svelte-1n6ht58"><span class="thumb svelte-1n6ht58"></span></span></label></form> `);
|
|
902
1097
|
if (customToggleError) {
|
|
903
1098
|
$$renderer2.push("<!--[0-->");
|
|
904
|
-
$$renderer2.push(`<div class="sub svelte-1n6ht58"><div class="msg error svelte-1n6ht58">${$
|
|
1099
|
+
$$renderer2.push(`<div class="sub svelte-1n6ht58"><div class="msg error svelte-1n6ht58">${$20.escape(customToggleError)}</div></div>`);
|
|
905
1100
|
} else {
|
|
906
1101
|
$$renderer2.push("<!--[-1-->");
|
|
907
1102
|
}
|
|
908
1103
|
$$renderer2.push(`<!--]--> `);
|
|
909
1104
|
if (customEndpoint) {
|
|
910
1105
|
$$renderer2.push("<!--[0-->");
|
|
911
|
-
$$renderer2.push(`<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"${$
|
|
1106
|
+
$$renderer2.push(`<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"${$20.attr("value", customBaseUrl)} spellcheck="false" autocapitalize="off" autocorrect="off" autocomplete="off" placeholder="https://litellm.example.com/bedrock"/> `);
|
|
912
1107
|
Button($$renderer2, {
|
|
913
1108
|
type: "submit",
|
|
914
1109
|
disabled: savingCustomBaseUrl,
|
|
@@ -920,15 +1115,15 @@ function SettingsView($$renderer, $$props) {
|
|
|
920
1115
|
$$renderer2.push(`<!----></div> `);
|
|
921
1116
|
if (customBaseUrlError) {
|
|
922
1117
|
$$renderer2.push("<!--[0-->");
|
|
923
|
-
$$renderer2.push(`<div class="msg error svelte-1n6ht58">${$
|
|
1118
|
+
$$renderer2.push(`<div class="msg error svelte-1n6ht58">${$20.escape(customBaseUrlError)}</div>`);
|
|
924
1119
|
} else if (customBaseUrlMsg) {
|
|
925
1120
|
$$renderer2.push("<!--[1-->");
|
|
926
|
-
$$renderer2.push(`<div class="msg ok svelte-1n6ht58">${$
|
|
1121
|
+
$$renderer2.push(`<div class="msg ok svelte-1n6ht58">${$20.escape(customBaseUrlMsg)}</div>`);
|
|
927
1122
|
} else {
|
|
928
1123
|
$$renderer2.push("<!--[-1-->");
|
|
929
1124
|
}
|
|
930
1125
|
$$renderer2.push(`<!--]--></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
|
|
931
|
-
Save to clear.</div></div></div> <div class="image-controls svelte-1n6ht58"><input type="password" name="token" class="image-input svelte-1n6ht58"${$
|
|
1126
|
+
Save to clear.</div></div></div> <div class="image-controls svelte-1n6ht58"><input type="password" name="token" class="image-input svelte-1n6ht58"${$20.attr("value", customToken)} spellcheck="false" autocapitalize="off" autocorrect="off" autocomplete="off"${$20.attr("placeholder", customTokenSaved ? "\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022 (saved)" : "sk-\u2026")}/> `);
|
|
932
1127
|
Button($$renderer2, {
|
|
933
1128
|
type: "submit",
|
|
934
1129
|
disabled: savingCustomToken,
|
|
@@ -940,15 +1135,15 @@ function SettingsView($$renderer, $$props) {
|
|
|
940
1135
|
$$renderer2.push(`<!----></div> `);
|
|
941
1136
|
if (customTokenError) {
|
|
942
1137
|
$$renderer2.push("<!--[0-->");
|
|
943
|
-
$$renderer2.push(`<div class="msg error svelte-1n6ht58">${$
|
|
1138
|
+
$$renderer2.push(`<div class="msg error svelte-1n6ht58">${$20.escape(customTokenError)}</div>`);
|
|
944
1139
|
} else if (customTokenMsg) {
|
|
945
1140
|
$$renderer2.push("<!--[1-->");
|
|
946
|
-
$$renderer2.push(`<div class="msg ok svelte-1n6ht58">${$
|
|
1141
|
+
$$renderer2.push(`<div class="msg ok svelte-1n6ht58">${$20.escape(customTokenMsg)}</div>`);
|
|
947
1142
|
} else {
|
|
948
1143
|
$$renderer2.push("<!--[-1-->");
|
|
949
1144
|
}
|
|
950
1145
|
$$renderer2.push(`<!--]--></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
|
|
951
|
-
launcher 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"${$
|
|
1146
|
+
launcher 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"${$20.attr("value", customOpusModel)} 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"${$20.attr("value", customSonnetModel)} 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"${$20.attr("value", customHaikuModel)} 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"${$20.attr("value", customSmallFastModel)} 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"${$20.attr("value", customDefaultModel)} spellcheck="false" autocapitalize="off" autocorrect="off" autocomplete="off"/></label> <div class="model-save-row svelte-1n6ht58">`);
|
|
952
1147
|
Button($$renderer2, {
|
|
953
1148
|
type: "submit",
|
|
954
1149
|
disabled: savingCustomModels,
|
|
@@ -960,10 +1155,62 @@ function SettingsView($$renderer, $$props) {
|
|
|
960
1155
|
$$renderer2.push(`<!----></div></div> `);
|
|
961
1156
|
if (customModelsError) {
|
|
962
1157
|
$$renderer2.push("<!--[0-->");
|
|
963
|
-
$$renderer2.push(`<div class="msg error svelte-1n6ht58">${$
|
|
1158
|
+
$$renderer2.push(`<div class="msg error svelte-1n6ht58">${$20.escape(customModelsError)}</div>`);
|
|
964
1159
|
} else if (customModelsMsg) {
|
|
965
1160
|
$$renderer2.push("<!--[1-->");
|
|
966
|
-
$$renderer2.push(`<div class="msg ok svelte-1n6ht58">${$
|
|
1161
|
+
$$renderer2.push(`<div class="msg ok svelte-1n6ht58">${$20.escape(customModelsMsg)}</div>`);
|
|
1162
|
+
} else {
|
|
1163
|
+
$$renderer2.push("<!--[-1-->");
|
|
1164
|
+
}
|
|
1165
|
+
$$renderer2.push(`<!--]--></form>`);
|
|
1166
|
+
} else {
|
|
1167
|
+
$$renderer2.push("<!--[-1-->");
|
|
1168
|
+
}
|
|
1169
|
+
$$renderer2.push(`<!--]--></section> <section${$20.attr_class("card svelte-1n6ht58", undefined, { "disabled-card": customEndpoint })}><form class="row svelte-1n6ht58" method="POST" action="?/manualModelToggle"><div class="label svelte-1n6ht58">`);
|
|
1170
|
+
Cpu($$renderer2, { size: 18 });
|
|
1171
|
+
$$renderer2.push(`<!----> <div class="text svelte-1n6ht58"><div class="name svelte-1n6ht58">Override models manually `);
|
|
1172
|
+
if (customEndpoint) {
|
|
1173
|
+
$$renderer2.push("<!--[0-->");
|
|
1174
|
+
$$renderer2.push(`<span class="arch svelte-1n6ht58" title="Disabled while LiteLLM + Bedrock is on">disabled</span>`);
|
|
1175
|
+
} else {
|
|
1176
|
+
$$renderer2.push("<!--[-1-->");
|
|
1177
|
+
}
|
|
1178
|
+
$$renderer2.push(`<!--]--></div> <div class="desc svelte-1n6ht58">`);
|
|
1179
|
+
if (customEndpoint) {
|
|
1180
|
+
$$renderer2.push("<!--[0-->");
|
|
1181
|
+
$$renderer2.push(`Not available while "LiteLLM + Bedrock" is enabled \u2014 these modes are mutually
|
|
1182
|
+
incompatible.`);
|
|
1183
|
+
} else {
|
|
1184
|
+
$$renderer2.push("<!--[-1-->");
|
|
1185
|
+
$$renderer2.push(`Pin which model <code class="svelte-1n6ht58">claude</code> uses on the standard (subscription) path. Only
|
|
1186
|
+
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.`);
|
|
1187
|
+
}
|
|
1188
|
+
$$renderer2.push(`<!--]--></div></div></div> <label class="switch svelte-1n6ht58"><input type="checkbox" name="enabled"${$20.attr("checked", manualModelOverride, true)}${$20.attr("disabled", savingManualModelToggle || customEndpoint, true)} class="svelte-1n6ht58"/> <span class="track svelte-1n6ht58"><span class="thumb svelte-1n6ht58"></span></span></label></form> `);
|
|
1189
|
+
if (manualModelToggleError) {
|
|
1190
|
+
$$renderer2.push("<!--[0-->");
|
|
1191
|
+
$$renderer2.push(`<div class="sub svelte-1n6ht58"><div class="msg error svelte-1n6ht58">${$20.escape(manualModelToggleError)}</div></div>`);
|
|
1192
|
+
} else {
|
|
1193
|
+
$$renderer2.push("<!--[-1-->");
|
|
1194
|
+
}
|
|
1195
|
+
$$renderer2.push(`<!--]--> `);
|
|
1196
|
+
if (manualModelOverride) {
|
|
1197
|
+
$$renderer2.push("<!--[0-->");
|
|
1198
|
+
$$renderer2.push(`<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-\u2026</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"${$20.attr("value", manualOpus)} 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"${$20.attr("value", manualSonnet)} 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"${$20.attr("value", manualHaiku)} 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"${$20.attr("value", manualSmallFast)} 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"${$20.attr("value", manualDefault)} spellcheck="false" autocapitalize="off" autocorrect="off" autocomplete="off"/></label> <div class="model-save-row svelte-1n6ht58">`);
|
|
1199
|
+
Button($$renderer2, {
|
|
1200
|
+
type: "submit",
|
|
1201
|
+
disabled: savingManualModels,
|
|
1202
|
+
children: ($$renderer3) => {
|
|
1203
|
+
$$renderer3.push(`<!---->Save models`);
|
|
1204
|
+
},
|
|
1205
|
+
$$slots: { default: true }
|
|
1206
|
+
});
|
|
1207
|
+
$$renderer2.push(`<!----></div></div> `);
|
|
1208
|
+
if (manualModelsError) {
|
|
1209
|
+
$$renderer2.push("<!--[0-->");
|
|
1210
|
+
$$renderer2.push(`<div class="msg error svelte-1n6ht58">${$20.escape(manualModelsError)}</div>`);
|
|
1211
|
+
} else if (manualModelsMsg) {
|
|
1212
|
+
$$renderer2.push("<!--[1-->");
|
|
1213
|
+
$$renderer2.push(`<div class="msg ok svelte-1n6ht58">${$20.escape(manualModelsMsg)}</div>`);
|
|
967
1214
|
} else {
|
|
968
1215
|
$$renderer2.push("<!--[-1-->");
|
|
969
1216
|
}
|
|
@@ -972,13 +1219,13 @@ function SettingsView($$renderer, $$props) {
|
|
|
972
1219
|
$$renderer2.push("<!--[-1-->");
|
|
973
1220
|
}
|
|
974
1221
|
$$renderer2.push(`<!--]--></section> <section class="card svelte-1n6ht58"><form class="row svelte-1n6ht58" method="POST" action="?/hostEnvVarsToggle"><div class="label svelte-1n6ht58">`);
|
|
975
|
-
Variable($$renderer2, { size:
|
|
1222
|
+
Variable($$renderer2, { size: 20 });
|
|
976
1223
|
$$renderer2.push(`<!----> <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
|
|
977
1224
|
interactive shells. Values are read from this process's own environment at container
|
|
978
|
-
start and are never shown here or stored \u2014 only the variable names are saved.</div></div></div> <label class="switch svelte-1n6ht58"><input type="checkbox" name="enabled"${$
|
|
1225
|
+
start and are never shown here or stored \u2014 only the variable names are saved.</div></div></div> <label class="switch svelte-1n6ht58"><input type="checkbox" name="enabled"${$20.attr("checked", hostEnvVars, true)}${$20.attr("disabled", savingHostEnvToggle, true)} class="svelte-1n6ht58"/> <span class="track svelte-1n6ht58"><span class="thumb svelte-1n6ht58"></span></span></label></form> `);
|
|
979
1226
|
if (hostEnvToggleError) {
|
|
980
1227
|
$$renderer2.push("<!--[0-->");
|
|
981
|
-
$$renderer2.push(`<div class="sub svelte-1n6ht58"><div class="msg error svelte-1n6ht58">${$
|
|
1228
|
+
$$renderer2.push(`<div class="sub svelte-1n6ht58"><div class="msg error svelte-1n6ht58">${$20.escape(hostEnvToggleError)}</div></div>`);
|
|
982
1229
|
} else {
|
|
983
1230
|
$$renderer2.push("<!--[-1-->");
|
|
984
1231
|
}
|
|
@@ -986,18 +1233,18 @@ function SettingsView($$renderer, $$props) {
|
|
|
986
1233
|
if (hostEnvVars) {
|
|
987
1234
|
$$renderer2.push("<!--[0-->");
|
|
988
1235
|
$$renderer2.push(`<div class="row divided var-row svelte-1n6ht58"><div class="var-list svelte-1n6ht58">`);
|
|
989
|
-
const each_array = $
|
|
1236
|
+
const each_array = $20.ensure_array_like(hostEnvNames);
|
|
990
1237
|
if (each_array.length !== 0) {
|
|
991
1238
|
$$renderer2.push("<!--[-->");
|
|
992
1239
|
for (let $$index_1 = 0, $$length = each_array.length;$$index_1 < $$length; $$index_1++) {
|
|
993
1240
|
let name = each_array[$$index_1];
|
|
994
1241
|
$$renderer2.push(`<form class="var-item svelte-1n6ht58" method="POST" action="?/hostEnvVarNames"><!--[-->`);
|
|
995
|
-
const each_array_1 = $
|
|
1242
|
+
const each_array_1 = $20.ensure_array_like(hostEnvNames.filter((n) => n !== name));
|
|
996
1243
|
for (let $$index = 0, $$length2 = each_array_1.length;$$index < $$length2; $$index++) {
|
|
997
1244
|
let other = each_array_1[$$index];
|
|
998
|
-
$$renderer2.push(`<input type="hidden" name="names"${$
|
|
1245
|
+
$$renderer2.push(`<input type="hidden" name="names"${$20.attr("value", other)}/>`);
|
|
999
1246
|
}
|
|
1000
|
-
$$renderer2.push(`<!--]--> <span class="var-name svelte-1n6ht58">${$
|
|
1247
|
+
$$renderer2.push(`<!--]--> <span class="var-name svelte-1n6ht58">${$20.escape(name)}</span> <span${$20.attr_class("var-status svelte-1n6ht58", undefined, { present: hostEnvPresence[name] })}${$20.attr("title", hostEnvPresence[name] ? "Set on this host \u2014 will be injected" : "Not set on this host \u2014 will be skipped")}>${$20.escape(hostEnvPresence[name] ? "set" : "missing")}</span> <button type="submit" class="var-remove svelte-1n6ht58"${$20.attr("disabled", savingHostEnvNames, true)}${$20.attr("aria-label", `Remove ${name}`)}>`);
|
|
1001
1248
|
X($$renderer2, { size: 13 });
|
|
1002
1249
|
$$renderer2.push(`<!----></button></form>`);
|
|
1003
1250
|
}
|
|
@@ -1006,12 +1253,12 @@ function SettingsView($$renderer, $$props) {
|
|
|
1006
1253
|
$$renderer2.push(`<div class="var-empty svelte-1n6ht58">No variables added yet.</div>`);
|
|
1007
1254
|
}
|
|
1008
1255
|
$$renderer2.push(`<!--]--></div> <form class="var-add svelte-1n6ht58" method="POST" action="?/hostEnvVarNames"><!--[-->`);
|
|
1009
|
-
const each_array_2 = $
|
|
1256
|
+
const each_array_2 = $20.ensure_array_like(hostEnvNames);
|
|
1010
1257
|
for (let $$index_2 = 0, $$length = each_array_2.length;$$index_2 < $$length; $$index_2++) {
|
|
1011
1258
|
let name = each_array_2[$$index_2];
|
|
1012
|
-
$$renderer2.push(`<input type="hidden" name="names"${$
|
|
1259
|
+
$$renderer2.push(`<input type="hidden" name="names"${$20.attr("value", name)}/>`);
|
|
1013
1260
|
}
|
|
1014
|
-
$$renderer2.push(`<!--]--> <input type="text" name="names" class="image-input svelte-1n6ht58"${$
|
|
1261
|
+
$$renderer2.push(`<!--]--> <input type="text" name="names" class="image-input svelte-1n6ht58"${$20.attr("value", newHostEnvName)} spellcheck="false" autocapitalize="off" autocorrect="off" autocomplete="off" placeholder="AWS_ACCESS_KEY_ID"/> `);
|
|
1015
1262
|
Button($$renderer2, {
|
|
1016
1263
|
type: "submit",
|
|
1017
1264
|
icon: Plus,
|
|
@@ -1024,10 +1271,10 @@ function SettingsView($$renderer, $$props) {
|
|
|
1024
1271
|
$$renderer2.push(`<!----></form> `);
|
|
1025
1272
|
if (hostEnvNamesError) {
|
|
1026
1273
|
$$renderer2.push("<!--[0-->");
|
|
1027
|
-
$$renderer2.push(`<div class="msg error svelte-1n6ht58">${$
|
|
1274
|
+
$$renderer2.push(`<div class="msg error svelte-1n6ht58">${$20.escape(hostEnvNamesError)}</div>`);
|
|
1028
1275
|
} else if (hostEnvNamesMsg) {
|
|
1029
1276
|
$$renderer2.push("<!--[1-->");
|
|
1030
|
-
$$renderer2.push(`<div class="msg ok svelte-1n6ht58">${$
|
|
1277
|
+
$$renderer2.push(`<div class="msg ok svelte-1n6ht58">${$20.escape(hostEnvNamesMsg)}</div>`);
|
|
1031
1278
|
} else {
|
|
1032
1279
|
$$renderer2.push("<!--[-1-->");
|
|
1033
1280
|
}
|
|
@@ -1036,13 +1283,37 @@ function SettingsView($$renderer, $$props) {
|
|
|
1036
1283
|
$$renderer2.push("<!--[-1-->");
|
|
1037
1284
|
}
|
|
1038
1285
|
$$renderer2.push(`<!--]--></section> <section class="card svelte-1n6ht58"><div class="row svelte-1n6ht58"><div class="label svelte-1n6ht58">`);
|
|
1039
|
-
Sun_moon($$renderer2, { size:
|
|
1286
|
+
Sun_moon($$renderer2, { size: 20 });
|
|
1040
1287
|
$$renderer2.push(`<!----> <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> `);
|
|
1041
1288
|
ThemePicker($$renderer2, {});
|
|
1042
1289
|
$$renderer2.push(`<!----></div></section> <section class="card svelte-1n6ht58"><div class="row svelte-1n6ht58"><div class="label svelte-1n6ht58">`);
|
|
1043
|
-
Volume_2($$renderer2, { size:
|
|
1044
|
-
$$renderer2.push(`<!----> <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"${$
|
|
1045
|
-
|
|
1290
|
+
Volume_2($$renderer2, { size: 20 });
|
|
1291
|
+
$$renderer2.push(`<!----> <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"${$20.attr("checked", sound, true)} 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">`);
|
|
1292
|
+
Paw_print($$renderer2, { size: 18 });
|
|
1293
|
+
$$renderer2.push(`<!----> <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"${$20.attr("checked", !!petArt, true)}${$20.attr("disabled", savingPet, true)} class="svelte-1n6ht58"/> <span class="track svelte-1n6ht58"><span class="thumb svelte-1n6ht58"></span></span></label></form> `);
|
|
1294
|
+
if (petError) {
|
|
1295
|
+
$$renderer2.push("<!--[0-->");
|
|
1296
|
+
$$renderer2.push(`<div class="sub svelte-1n6ht58"><div class="msg error svelte-1n6ht58">${$20.escape(petError)}</div></div>`);
|
|
1297
|
+
} else {
|
|
1298
|
+
$$renderer2.push("<!--[-1-->");
|
|
1299
|
+
}
|
|
1300
|
+
$$renderer2.push(`<!--]--> `);
|
|
1301
|
+
if (petArt) {
|
|
1302
|
+
$$renderer2.push("<!--[0-->");
|
|
1303
|
+
$$renderer2.push(`<div class="sub pets svelte-1n6ht58"><!--[-->`);
|
|
1304
|
+
const each_array_3 = $20.ensure_array_like(avatars);
|
|
1305
|
+
for (let $$index_3 = 0, $$length = each_array_3.length;$$index_3 < $$length; $$index_3++) {
|
|
1306
|
+
let art = each_array_3[$$index_3];
|
|
1307
|
+
$$renderer2.push(`<form method="POST" action="?/petChoose" class="svelte-1n6ht58"><input type="hidden" name="name"${$20.attr("value", art.name)}/> <button type="submit"${$20.attr_class("pet svelte-1n6ht58", undefined, { selected: art.name === petArt.name })}${$20.attr("disabled", savingPet, true)}${$20.attr("title", art.name)}${$20.attr("aria-label", art.name)}${$20.attr("aria-pressed", art.name === petArt.name)}>`);
|
|
1308
|
+
Avatar($$renderer2, { art, name: art.name, scale: 4 });
|
|
1309
|
+
$$renderer2.push(`<!----></button></form>`);
|
|
1310
|
+
}
|
|
1311
|
+
$$renderer2.push(`<!--]--></div>`);
|
|
1312
|
+
} else {
|
|
1313
|
+
$$renderer2.push("<!--[-1-->");
|
|
1314
|
+
}
|
|
1315
|
+
$$renderer2.push(`<!--]--></section> <section class="card danger-card svelte-1n6ht58"><form class="row svelte-1n6ht58" method="POST" action="?/shutdown"><div class="label svelte-1n6ht58">`);
|
|
1316
|
+
Power($$renderer2, { size: 20 });
|
|
1046
1317
|
$$renderer2.push(`<!----> <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
|
|
1047
1318
|
database, then shut down the server. This cannot be undone.</div></div></div> `);
|
|
1048
1319
|
if (shuttingDown) {
|
|
@@ -1061,7 +1332,7 @@ function SettingsView($$renderer, $$props) {
|
|
|
1061
1332
|
}
|
|
1062
1333
|
$$renderer2.push(`<!--]--></form></section> `);
|
|
1063
1334
|
CoinButton($$renderer2, {});
|
|
1064
|
-
$$renderer2.push(`<!----> <div class="version svelte-1n6ht58">Codebay v${$
|
|
1335
|
+
$$renderer2.push(`<!----> <div class="version svelte-1n6ht58">Codebay v${$20.escape(version)}</div></main></div> `);
|
|
1065
1336
|
Toaster($$renderer2, {
|
|
1066
1337
|
toastOptions: {
|
|
1067
1338
|
style: "border:1px solid var(--ink); background:var(--bg-card); color:var(--ink); box-shadow:4px 4px 0 var(--ink); font-family:var(--font-mono); font-size:13px;"
|
|
@@ -1075,11 +1346,15 @@ function SettingsView($$renderer, $$props) {
|
|
|
1075
1346
|
function Settings($$renderer, $$props) {
|
|
1076
1347
|
$$renderer.component(($$renderer2) => {
|
|
1077
1348
|
let {
|
|
1349
|
+
pet,
|
|
1078
1350
|
defaultImage,
|
|
1079
1351
|
builtinImage,
|
|
1080
1352
|
disableBuildCache,
|
|
1081
1353
|
copyIgnorePatterns,
|
|
1082
1354
|
builtinCopyIgnore,
|
|
1355
|
+
gitIdentityEnabled,
|
|
1356
|
+
gitIdentityName,
|
|
1357
|
+
gitIdentityEmail,
|
|
1083
1358
|
dockerArch,
|
|
1084
1359
|
manualTokensEnabled,
|
|
1085
1360
|
githubTokenSet,
|
|
@@ -1092,6 +1367,12 @@ function Settings($$renderer, $$props) {
|
|
|
1092
1367
|
customEndpointHaikuModel,
|
|
1093
1368
|
customEndpointSmallFastModel,
|
|
1094
1369
|
customEndpointModel,
|
|
1370
|
+
manualModelOverrideEnabled,
|
|
1371
|
+
manualOpusModel,
|
|
1372
|
+
manualSonnetModel,
|
|
1373
|
+
manualHaikuModel,
|
|
1374
|
+
manualSmallFastModel,
|
|
1375
|
+
manualModel,
|
|
1095
1376
|
hostEnvVarsEnabled,
|
|
1096
1377
|
hostEnvVarNames,
|
|
1097
1378
|
hostEnvVarPresence,
|
|
@@ -1099,7 +1380,7 @@ function Settings($$renderer, $$props) {
|
|
|
1099
1380
|
} = $$props;
|
|
1100
1381
|
if (true) {
|
|
1101
1382
|
let failed = function($$renderer3, error) {
|
|
1102
|
-
$$renderer3.push(`<mochi-island-failure data-component="SettingsView"${$
|
|
1383
|
+
$$renderer3.push(`<mochi-island-failure data-component="SettingsView"${$21.attr("data-message", error.message)}></mochi-island-failure>`);
|
|
1103
1384
|
};
|
|
1104
1385
|
$$renderer2.push("<!--[0-->");
|
|
1105
1386
|
$$renderer2.boundary({ failed }, ($$renderer3) => {
|
|
@@ -1107,12 +1388,16 @@ function Settings($$renderer, $$props) {
|
|
|
1107
1388
|
{
|
|
1108
1389
|
HydratableBoundary($$renderer3, {
|
|
1109
1390
|
children: ($$renderer4) => {
|
|
1110
|
-
$$renderer4.push(`<mochi-hydratable-island component-name="SettingsView_8hmarwmf8onq" component-url="__MOCHI_COMPONENT_URL__SettingsView_8hmarwmf8onq__"${$
|
|
1391
|
+
$$renderer4.push(`<mochi-hydratable-island component-name="SettingsView_8hmarwmf8onq" component-url="__MOCHI_COMPONENT_URL__SettingsView_8hmarwmf8onq__"${$21.attr("props-ref", emitIslandProps({
|
|
1392
|
+
pet,
|
|
1111
1393
|
defaultImage,
|
|
1112
1394
|
builtinImage,
|
|
1113
1395
|
disableBuildCache,
|
|
1114
1396
|
copyIgnorePatterns,
|
|
1115
1397
|
builtinCopyIgnore,
|
|
1398
|
+
gitIdentityEnabled,
|
|
1399
|
+
gitIdentityName,
|
|
1400
|
+
gitIdentityEmail,
|
|
1116
1401
|
dockerArch,
|
|
1117
1402
|
manualTokensEnabled,
|
|
1118
1403
|
githubTokenSet,
|
|
@@ -1125,6 +1410,12 @@ function Settings($$renderer, $$props) {
|
|
|
1125
1410
|
customEndpointHaikuModel,
|
|
1126
1411
|
customEndpointSmallFastModel,
|
|
1127
1412
|
customEndpointModel,
|
|
1413
|
+
manualModelOverrideEnabled,
|
|
1414
|
+
manualOpusModel,
|
|
1415
|
+
manualSonnetModel,
|
|
1416
|
+
manualHaikuModel,
|
|
1417
|
+
manualSmallFastModel,
|
|
1418
|
+
manualModel,
|
|
1128
1419
|
hostEnvVarsEnabled,
|
|
1129
1420
|
hostEnvVarNames,
|
|
1130
1421
|
hostEnvVarPresence,
|
|
@@ -1133,11 +1424,15 @@ function Settings($$renderer, $$props) {
|
|
|
1133
1424
|
$$renderer4.push(`<!--[-->`);
|
|
1134
1425
|
{
|
|
1135
1426
|
SettingsView($$renderer4, {
|
|
1427
|
+
pet,
|
|
1136
1428
|
defaultImage,
|
|
1137
1429
|
builtinImage,
|
|
1138
1430
|
disableBuildCache,
|
|
1139
1431
|
copyIgnorePatterns,
|
|
1140
1432
|
builtinCopyIgnore,
|
|
1433
|
+
gitIdentityEnabled,
|
|
1434
|
+
gitIdentityName,
|
|
1435
|
+
gitIdentityEmail,
|
|
1141
1436
|
dockerArch,
|
|
1142
1437
|
manualTokensEnabled,
|
|
1143
1438
|
githubTokenSet,
|
|
@@ -1150,6 +1445,12 @@ function Settings($$renderer, $$props) {
|
|
|
1150
1445
|
customEndpointHaikuModel,
|
|
1151
1446
|
customEndpointSmallFastModel,
|
|
1152
1447
|
customEndpointModel,
|
|
1448
|
+
manualModelOverrideEnabled,
|
|
1449
|
+
manualOpusModel,
|
|
1450
|
+
manualSonnetModel,
|
|
1451
|
+
manualHaikuModel,
|
|
1452
|
+
manualSmallFastModel,
|
|
1453
|
+
manualModel,
|
|
1153
1454
|
hostEnvVarsEnabled,
|
|
1154
1455
|
hostEnvVarNames,
|
|
1155
1456
|
hostEnvVarPresence,
|