codebay 0.15.0 → 0.16.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.mochi/manifest.json +490 -429
- package/.mochi/svelte-client/HydratableIsland-6y9p903x.js +1 -0
- package/.mochi/svelte-client/_hydrate-AppShell_2rtnxn6pgp2rh-nv6yzk0x.js +2 -0
- package/.mochi/svelte-client/_hydrate-AvatarsView_257s9yq1wwr4f-ry83ck8a.js +14 -0
- package/.mochi/svelte-client/_hydrate-InstanceView_2ma45l9bybfhl-vjt4jscf.js +3 -0
- package/.mochi/svelte-client/_hydrate-SettingsView_8hmarwmf8onq-1jdrk8x6.js +48 -0
- package/.mochi/svelte-client/{chunk-5pg0be5f.js → chunk-0vqvn81s.js} +1 -1
- package/.mochi/svelte-client/chunk-2dc6352a.js +1 -0
- package/.mochi/svelte-client/chunk-3cxaw5hr.js +2 -0
- package/.mochi/svelte-client/chunk-3jqc40sp.js +2 -0
- package/.mochi/svelte-client/chunk-3pgw6t5j.js +4 -0
- package/.mochi/svelte-client/chunk-7g3xt6ez.js +2 -0
- package/.mochi/svelte-client/chunk-b5s3mpg0.js +1 -0
- package/.mochi/svelte-client/chunk-bhseezf3.js +2 -0
- package/.mochi/svelte-client/chunk-bhwkq8er.js +1 -0
- package/.mochi/svelte-client/chunk-jm3ge348.js +1 -0
- package/.mochi/svelte-client/{chunk-ds9yn9cq.js → chunk-sxcr9gzp.js} +1 -1
- package/.mochi/svelte-client/{chunk-a2hty99b.js → chunk-tss2473w.js} +1 -1
- package/.mochi/svelte-compile/{App-68f9a9fq.server.js → App-8mpgrxza.server.js} +489 -295
- package/.mochi/svelte-compile/{Avatars-vyh3rwxx.server.js → Avatars-y5nf6q25.server.js} +102 -86
- package/.mochi/svelte-compile/{DefaultError-je52k17d.server.js → DefaultError-rrjye0s2.server.js} +1 -2
- package/.mochi/svelte-compile/{Instance-yfw7s5mp.server.js → Instance-3sbzyp0g.server.js} +186 -118
- package/.mochi/svelte-compile/{Settings-0b5t9kw9.server.js → Settings-ysvh5vhh.server.js} +739 -628
- package/.mochi/svelte-compile/chunk-7zaw9t5a.js +25 -0
- package/.mochi/svelte-compile/chunk-878xcmp4.js +65 -0
- package/.mochi/svelte-compile/chunk-d2z3qxxe.js +28 -0
- package/.mochi/svelte-compile/{chunk-60mpagr9.js → chunk-gnf5cnct.js} +661 -22
- package/.mochi/svelte-compile/{chunk-0y3wrae9.js → chunk-jq7jj8jd.js} +10 -6
- package/.mochi/svelte-compile/chunk-vr0e32mv.js +24 -0
- package/.mochi/svelte-compile/{chunk-apdte4nh.js → chunk-xmygdsj4.js} +35 -612
- package/.mochi/svelte-compile/{chunk-g0eravvj.js → chunk-zk4a9zms.js} +25 -17
- package/.mochi/svelte-css/DropZone-1zeitd761uwyd.css +1 -0
- package/.mochi/svelte-css/IdeBar-d3un7kuigxc5.css +1 -0
- package/.mochi/svelte-css/InstanceView-3ucotech5097w.css +1 -0
- package/README.md +13 -4
- package/migrations/0011_agent_run_rejected_structured_output.sql +2 -0
- package/package.json +9 -9
- package/src/__fixtures__/IdeBarStrip.svelte +41 -0
- package/src/avatars/dog.ts +1 -1
- package/src/avatars/lightning.ts +8 -9
- package/src/avatars/rocket.ts +4 -5
- package/src/components/AppShell.svelte +101 -1
- package/src/components/DropZone.svelte +77 -0
- package/src/components/HealthBox.svelte +6 -5
- package/src/components/IdeBar.svelte +222 -76
- package/src/components/InstanceView.svelte +75 -2
- package/src/components/SettingsView.svelte +87 -0
- package/src/components/TerminalPane.svelte +54 -0
- package/src/components/UiShowcase.svelte +19 -1
- package/src/container-injections/claude-code-install.ts +1 -1
- package/src/container-injections/claude-history.ts +52 -0
- package/src/container-injections/tmux.ts +6 -2
- package/src/index.ts +3 -0
- package/src/lib/agent-run-stream.ts +41 -1
- package/src/lib/agent-runs.server.ts +14 -3
- package/src/lib/config.server.ts +16 -1
- package/src/lib/db.server.ts +6 -2
- package/src/lib/devcontainer.server.ts +37 -4
- package/src/lib/injections.server.ts +5 -1
- package/src/lib/instances.server.ts +21 -4
- package/src/lib/log-capture.server.ts +46 -18
- package/src/lib/osc52.ts +18 -0
- package/src/lib/spawn.server.ts +7 -2
- package/src/lib/upload.ts +32 -0
- package/src/lib/uploads.server.ts +164 -0
- package/src/mcp/server.server.ts +4 -1
- package/src/mcp/tools.server.ts +178 -12
- package/src/pages/Instance.svelte +6 -2
- package/src/pages/Settings.svelte +3 -0
- package/src/routes.ts +16 -2
- package/src/types.ts +2 -0
- package/.mochi/svelte-client/HydratableIsland-smgsf0ma.js +0 -1
- package/.mochi/svelte-client/_hydrate-AppShell_2rtnxn6pgp2rh-9vc087ep.js +0 -2
- package/.mochi/svelte-client/_hydrate-AvatarsView_257s9yq1wwr4f-a48xq47a.js +0 -14
- package/.mochi/svelte-client/_hydrate-InstanceView_2ma45l9bybfhl-d4zehrqz.js +0 -3
- package/.mochi/svelte-client/_hydrate-SettingsView_8hmarwmf8onq-t5175pf5.js +0 -44
- package/.mochi/svelte-client/chunk-0mstgbtr.js +0 -2
- package/.mochi/svelte-client/chunk-0q9g0kpg.js +0 -1
- package/.mochi/svelte-client/chunk-3fwjzw1r.js +0 -1
- package/.mochi/svelte-client/chunk-fn03gxer.js +0 -4
- package/.mochi/svelte-client/chunk-jhgq7f65.js +0 -2
- package/.mochi/svelte-client/chunk-p5a07kx1.js +0 -1
- package/.mochi/svelte-client/chunk-p5wpyhsf.js +0 -2
- package/.mochi/svelte-client/chunk-t2kfvtb6.js +0 -2
- package/.mochi/svelte-client/chunk-v3wg9mdy.js +0 -1
- package/.mochi/svelte-compile/chunk-2qzc07gt.js +0 -34
- package/.mochi/svelte-compile/chunk-ef3hvegw.js +0 -21
- package/.mochi/svelte-compile/chunk-f9td8ej2.js +0 -24
- package/.mochi/svelte-compile/chunk-jx6h1xzp.js +0 -20
- package/.mochi/svelte-css/IdeBar-1mtgemqfuvqzi.css +0 -1
- package/.mochi/svelte-css/InstanceView-32j12hyg8v9u0.css +0 -1
|
@@ -1,28 +1,34 @@
|
|
|
1
1
|
// @bun
|
|
2
2
|
import {
|
|
3
3
|
Chevron_right,
|
|
4
|
+
DropZone,
|
|
4
5
|
StatusBadge,
|
|
5
|
-
|
|
6
|
-
|
|
6
|
+
filesFrom,
|
|
7
|
+
forwardedPortUrl,
|
|
8
|
+
uploadFile
|
|
9
|
+
} from "./chunk-878xcmp4.js";
|
|
7
10
|
import {
|
|
8
11
|
Bot
|
|
9
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-d2z3qxxe.js";
|
|
10
13
|
import {
|
|
11
14
|
Message_square
|
|
12
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-7zaw9t5a.js";
|
|
13
16
|
import {
|
|
14
17
|
Terminal,
|
|
15
18
|
apiDelete,
|
|
16
19
|
apiFetch,
|
|
17
20
|
apiPost,
|
|
18
21
|
ideUrl
|
|
19
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-jq7jj8jd.js";
|
|
20
23
|
import {
|
|
21
24
|
HydratableBoundary,
|
|
22
25
|
Icon,
|
|
26
|
+
TOAST_OPTIONS,
|
|
27
|
+
Toaster,
|
|
23
28
|
X,
|
|
29
|
+
dist_default,
|
|
24
30
|
emitIslandProps
|
|
25
|
-
} from "./chunk-
|
|
31
|
+
} from "./chunk-gnf5cnct.js";
|
|
26
32
|
import"./chunk-xpt1a7jm.js";
|
|
27
33
|
|
|
28
34
|
// src/pages/Instance.svelte
|
|
@@ -38,19 +44,27 @@ import"svelte/internal/flags/async";
|
|
|
38
44
|
import * as $ from "svelte/internal/server";
|
|
39
45
|
function Arrow_left($$renderer, $$props) {
|
|
40
46
|
let { $$slots, $$events, ...props } = $$props;
|
|
41
|
-
const
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
47
|
+
const iconData = {
|
|
48
|
+
name: "arrow-left",
|
|
49
|
+
size: 24,
|
|
50
|
+
node: [
|
|
51
|
+
["path", { d: "m12 19-7-7 7-7" }],
|
|
52
|
+
["path", { d: "M19 12H5" }]
|
|
53
|
+
]
|
|
54
|
+
};
|
|
55
|
+
Icon($$renderer, $.spread_props([props, { icon: iconData }]));
|
|
46
56
|
}
|
|
47
57
|
// node_modules/@lucide/svelte/dist/icons/arrow-up-right.svelte
|
|
48
58
|
import"svelte/internal/flags/async";
|
|
49
59
|
import * as $2 from "svelte/internal/server";
|
|
50
60
|
function Arrow_up_right($$renderer, $$props) {
|
|
51
61
|
let { $$slots, $$events, ...props } = $$props;
|
|
52
|
-
const
|
|
53
|
-
|
|
62
|
+
const iconData = {
|
|
63
|
+
name: "arrow-up-right",
|
|
64
|
+
size: 24,
|
|
65
|
+
node: [["path", { d: "M7 7h10v10" }], ["path", { d: "M7 17 17 7" }]]
|
|
66
|
+
};
|
|
67
|
+
Icon($$renderer, $2.spread_props([props, { icon: iconData }]));
|
|
54
68
|
}
|
|
55
69
|
// src/components/HealthBox.svelte
|
|
56
70
|
import"svelte/internal/flags/async";
|
|
@@ -61,8 +75,12 @@ import"svelte/internal/flags/async";
|
|
|
61
75
|
import * as $3 from "svelte/internal/server";
|
|
62
76
|
function Check($$renderer, $$props) {
|
|
63
77
|
let { $$slots, $$events, ...props } = $$props;
|
|
64
|
-
const
|
|
65
|
-
|
|
78
|
+
const iconData = {
|
|
79
|
+
name: "check",
|
|
80
|
+
size: 24,
|
|
81
|
+
node: [["path", { d: "M20 6 9 17l-5-5" }]]
|
|
82
|
+
};
|
|
83
|
+
Icon($$renderer, $3.spread_props([props, { icon: iconData }]));
|
|
66
84
|
}
|
|
67
85
|
// src/components/Skeleton.svelte
|
|
68
86
|
import"svelte/internal/flags/async";
|
|
@@ -91,9 +109,17 @@ function HealthBox($$renderer, $$props) {
|
|
|
91
109
|
return [];
|
|
92
110
|
const v = (ok) => ({ ok, value: ok ? "OK" : "\u2014" });
|
|
93
111
|
return [
|
|
94
|
-
{
|
|
95
|
-
|
|
96
|
-
|
|
112
|
+
{
|
|
113
|
+
key: "container",
|
|
114
|
+
label: FIXED_CHECKS()[0],
|
|
115
|
+
...v(health.containerRunning)
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
key: "surface",
|
|
119
|
+
label: FIXED_CHECKS()[1],
|
|
120
|
+
...v(health.codeServerAccessible)
|
|
121
|
+
},
|
|
122
|
+
...health.injections.map((i) => ({ key: i.id, label: i.label, ...v(i.ok) }))
|
|
97
123
|
];
|
|
98
124
|
});
|
|
99
125
|
function getNumberOfChecks() {
|
|
@@ -110,8 +136,7 @@ function HealthBox($$renderer, $$props) {
|
|
|
110
136
|
});
|
|
111
137
|
$$renderer2.push(`<div${$5.attr_class("healthwrap panel svelte-1hnopyv", undefined, { dim: !active && !health })}><div class="panel-bar">Health</div> <div class="health svelte-1hnopyv">`);
|
|
112
138
|
if (health) {
|
|
113
|
-
$$renderer2.push(
|
|
114
|
-
$$renderer2.push(`<!--[-->`);
|
|
139
|
+
$$renderer2.push(`<!--[0--><!--[-->`);
|
|
115
140
|
const each_array = $5.ensure_array_like(checks());
|
|
116
141
|
for (let $$index = 0, $$length = each_array.length;$$index < $$length; $$index++) {
|
|
117
142
|
let check = each_array[$$index];
|
|
@@ -127,8 +152,7 @@ function HealthBox($$renderer, $$props) {
|
|
|
127
152
|
}
|
|
128
153
|
$$renderer2.push(`<!--]-->`);
|
|
129
154
|
} else if (active) {
|
|
130
|
-
$$renderer2.push(
|
|
131
|
-
$$renderer2.push(`<!--[-->`);
|
|
155
|
+
$$renderer2.push(`<!--[1--><!--[-->`);
|
|
132
156
|
const each_array_1 = $5.ensure_array_like(Array(getNumberOfChecks()));
|
|
133
157
|
for (let i = 0, $$length = each_array_1.length;i < $$length; i++) {
|
|
134
158
|
let _ = each_array_1[i];
|
|
@@ -140,8 +164,7 @@ function HealthBox($$renderer, $$props) {
|
|
|
140
164
|
}
|
|
141
165
|
$$renderer2.push(`<!--]-->`);
|
|
142
166
|
} else {
|
|
143
|
-
$$renderer2.push(
|
|
144
|
-
$$renderer2.push(`<!--[-->`);
|
|
167
|
+
$$renderer2.push(`<!--[-1--><!--[-->`);
|
|
145
168
|
const each_array_2 = $5.ensure_array_like(FIXED_CHECKS());
|
|
146
169
|
for (let $$index_2 = 0, $$length = each_array_2.length;$$index_2 < $$length; $$index_2++) {
|
|
147
170
|
let label = each_array_2[$$index_2];
|
|
@@ -162,42 +185,56 @@ import"svelte/internal/flags/async";
|
|
|
162
185
|
import * as $6 from "svelte/internal/server";
|
|
163
186
|
function Refresh_cw($$renderer, $$props) {
|
|
164
187
|
let { $$slots, $$events, ...props } = $$props;
|
|
165
|
-
const
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
{ d: "M21
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
188
|
+
const iconData = {
|
|
189
|
+
name: "refresh-cw",
|
|
190
|
+
size: 24,
|
|
191
|
+
node: [
|
|
192
|
+
[
|
|
193
|
+
"path",
|
|
194
|
+
{ d: "M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8" }
|
|
195
|
+
],
|
|
196
|
+
["path", { d: "M21 3v5h-5" }],
|
|
197
|
+
[
|
|
198
|
+
"path",
|
|
199
|
+
{ d: "M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16" }
|
|
200
|
+
],
|
|
201
|
+
["path", { d: "M8 16H3v5" }]
|
|
202
|
+
]
|
|
203
|
+
};
|
|
204
|
+
Icon($$renderer, $6.spread_props([props, { icon: iconData }]));
|
|
178
205
|
}
|
|
179
206
|
// node_modules/@lucide/svelte/dist/icons/circle-check.svelte
|
|
180
207
|
import"svelte/internal/flags/async";
|
|
181
208
|
import * as $7 from "svelte/internal/server";
|
|
182
209
|
function Circle_check($$renderer, $$props) {
|
|
183
210
|
let { $$slots, $$events, ...props } = $$props;
|
|
184
|
-
const
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
211
|
+
const iconData = {
|
|
212
|
+
name: "circle-check",
|
|
213
|
+
size: 24,
|
|
214
|
+
node: [
|
|
215
|
+
["circle", { cx: "12", cy: "12", r: "10" }],
|
|
216
|
+
["path", { d: "m16 9-5.5 5.5L8 12" }]
|
|
217
|
+
],
|
|
218
|
+
aliases: ["check-circle-2"]
|
|
219
|
+
};
|
|
220
|
+
Icon($$renderer, $7.spread_props([props, { icon: iconData }]));
|
|
189
221
|
}
|
|
190
222
|
// node_modules/@lucide/svelte/dist/icons/circle-x.svelte
|
|
191
223
|
import"svelte/internal/flags/async";
|
|
192
224
|
import * as $8 from "svelte/internal/server";
|
|
193
225
|
function Circle_x($$renderer, $$props) {
|
|
194
226
|
let { $$slots, $$events, ...props } = $$props;
|
|
195
|
-
const
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
227
|
+
const iconData = {
|
|
228
|
+
name: "circle-x",
|
|
229
|
+
size: 24,
|
|
230
|
+
node: [
|
|
231
|
+
["circle", { cx: "12", cy: "12", r: "10" }],
|
|
232
|
+
["path", { d: "m15 9-6 6" }],
|
|
233
|
+
["path", { d: "m9 9 6 6" }]
|
|
234
|
+
],
|
|
235
|
+
aliases: ["x-circle"]
|
|
236
|
+
};
|
|
237
|
+
Icon($$renderer, $8.spread_props([props, { icon: iconData }]));
|
|
201
238
|
}
|
|
202
239
|
// src/components/AgentLogBox.svelte
|
|
203
240
|
import { untrack } from "svelte";
|
|
@@ -281,8 +318,7 @@ Session ${sid}${run.session_id ? "" : " (requested; not started yet)"}`;
|
|
|
281
318
|
return (run.error ?? run.result ?? run.prompt).replace(/\s+/g, " ").trim();
|
|
282
319
|
}
|
|
283
320
|
if (loaded && runs.length > 0) {
|
|
284
|
-
$$renderer2.push(
|
|
285
|
-
$$renderer2.push(`<section class="agentwrap panel svelte-rfwj7e"><div class="agent-bar panel-bar svelte-rfwj7e"><span class="svelte-rfwj7e">`);
|
|
321
|
+
$$renderer2.push(`<!--[0--><section class="agentwrap panel svelte-rfwj7e"><div class="agent-bar panel-bar svelte-rfwj7e"><span class="svelte-rfwj7e">`);
|
|
286
322
|
Bot($$renderer2, { size: 14 });
|
|
287
323
|
$$renderer2.push(`<!----> Agent log</span> <span class="count svelte-rfwj7e">${$9.escape(runs.length)} run${$9.escape(runs.length === 1 ? "" : "s")}</span></div> <!--[-->`);
|
|
288
324
|
const each_array = $9.ensure_array_like(runs);
|
|
@@ -293,15 +329,13 @@ Session ${sid}${run.session_id ? "" : " (requested; not started yet)"}`;
|
|
|
293
329
|
Chevron_right($$renderer2, { size: 14 });
|
|
294
330
|
$$renderer2.push(`<!----></span> <span class="when svelte-rfwj7e">${$9.escape(when(run))}</span> <span${$9.attr_class("status svelte-rfwj7e", undefined, { bad: run.is_error, live: isLive(run) })}>`);
|
|
295
331
|
if (isLive(run)) {
|
|
296
|
-
$$renderer2.push(
|
|
297
|
-
$$renderer2.push(`<span class="pulse svelte-rfwj7e"></span>`);
|
|
332
|
+
$$renderer2.push(`<!--[0--><span class="pulse svelte-rfwj7e"></span>`);
|
|
298
333
|
} else {
|
|
299
334
|
$$renderer2.push("<!--[-1-->");
|
|
300
335
|
}
|
|
301
336
|
$$renderer2.push(`<!--]--> ${$9.escape(run.status)}</span> `);
|
|
302
337
|
if (modelOf(run)) {
|
|
303
|
-
$$renderer2.push(
|
|
304
|
-
$$renderer2.push(`<span class="model svelte-rfwj7e"${$9.attr("title", modelTitle(run))}>${$9.escape(modelOf(run))}</span>`);
|
|
338
|
+
$$renderer2.push(`<!--[0--><span class="model svelte-rfwj7e"${$9.attr("title", modelTitle(run))}>${$9.escape(modelOf(run))}</span>`);
|
|
305
339
|
} else {
|
|
306
340
|
$$renderer2.push("<!--[-1-->");
|
|
307
341
|
}
|
|
@@ -316,21 +350,17 @@ Session ${sid}${run.session_id ? "" : " (requested; not started yet)"}`;
|
|
|
316
350
|
}
|
|
317
351
|
$$renderer2.push(`<!--]--> `);
|
|
318
352
|
if (!expanded) {
|
|
319
|
-
$$renderer2.push(
|
|
320
|
-
$$renderer2.push(`<span class="peek svelte-rfwj7e">${$9.escape(peek(run))}</span>`);
|
|
353
|
+
$$renderer2.push(`<!--[0--><span class="peek svelte-rfwj7e">${$9.escape(peek(run))}</span>`);
|
|
321
354
|
} else {
|
|
322
355
|
$$renderer2.push("<!--[-1-->");
|
|
323
356
|
}
|
|
324
357
|
$$renderer2.push(`<!--]--> <span class="run-meta svelte-rfwj7e">${$9.escape(meta(run))}</span></button> `);
|
|
325
358
|
if (expanded) {
|
|
326
|
-
$$renderer2.push(
|
|
327
|
-
$$renderer2.push(`<div class="prompt svelte-rfwj7e"><div class="ptitle svelte-rfwj7e">Initial prompt</div> <div class="ptext svelte-rfwj7e">${$9.escape(run.prompt)}</div></div> <ol class="steps svelte-rfwj7e">`);
|
|
359
|
+
$$renderer2.push(`<!--[0--><div class="prompt svelte-rfwj7e"><div class="ptitle svelte-rfwj7e">Initial prompt</div> <div class="ptext svelte-rfwj7e">${$9.escape(run.prompt)}</div></div> <ol class="steps svelte-rfwj7e">`);
|
|
328
360
|
if (isLive(run)) {
|
|
329
|
-
$$renderer2.push(
|
|
330
|
-
$$renderer2.push(`<li class="step svelte-rfwj7e"><span class="ico svelte-rfwj7e"><span class="pulse svelte-rfwj7e"></span></span> <span class="body svelte-rfwj7e"><span class="text svelte-rfwj7e">${$9.escape(run.status === "queued" ? "Queued \u2014 waiting for the sandbox" : "Working\u2026")}</span></span></li>`);
|
|
361
|
+
$$renderer2.push(`<!--[0--><li class="step svelte-rfwj7e"><span class="ico svelte-rfwj7e"><span class="pulse svelte-rfwj7e"></span></span> <span class="body svelte-rfwj7e"><span class="text svelte-rfwj7e">${$9.escape(run.status === "queued" ? "Queued \u2014 waiting for the sandbox" : "Working\u2026")}</span></span></li>`);
|
|
331
362
|
} else if ((timelines[run.id] ?? []).length === 0) {
|
|
332
|
-
$$renderer2.push(
|
|
333
|
-
$$renderer2.push(`<li class="step svelte-rfwj7e"><span class="body svelte-rfwj7e"><span class="text svelte-rfwj7e">No steps recorded.</span></span></li>`);
|
|
363
|
+
$$renderer2.push(`<!--[1--><li class="step svelte-rfwj7e"><span class="body svelte-rfwj7e"><span class="text svelte-rfwj7e">No steps recorded.</span></span></li>`);
|
|
334
364
|
} else {
|
|
335
365
|
$$renderer2.push("<!--[-1-->");
|
|
336
366
|
}
|
|
@@ -356,8 +386,7 @@ Session ${sid}${run.session_id ? "" : " (requested; not started yet)"}`;
|
|
|
356
386
|
}
|
|
357
387
|
$$renderer2.push(`<!--]--></span> <span class="body svelte-rfwj7e">`);
|
|
358
388
|
if (entry.name) {
|
|
359
|
-
$$renderer2.push(
|
|
360
|
-
$$renderer2.push(`<span class="tool svelte-rfwj7e">${$9.escape(entry.name)}</span>`);
|
|
389
|
+
$$renderer2.push(`<!--[0--><span class="tool svelte-rfwj7e">${$9.escape(entry.name)}</span>`);
|
|
361
390
|
} else {
|
|
362
391
|
$$renderer2.push("<!--[-1-->");
|
|
363
392
|
}
|
|
@@ -365,8 +394,7 @@ Session ${sid}${run.session_id ? "" : " (requested; not started yet)"}`;
|
|
|
365
394
|
}
|
|
366
395
|
$$renderer2.push(`<!--]--></ol> `);
|
|
367
396
|
if (run.error && !isLive(run)) {
|
|
368
|
-
$$renderer2.push(
|
|
369
|
-
$$renderer2.push(`<div class="err svelte-rfwj7e">${$9.escape(run.error)}</div>`);
|
|
397
|
+
$$renderer2.push(`<!--[0--><div class="err svelte-rfwj7e">${$9.escape(run.error)}</div>`);
|
|
370
398
|
} else {
|
|
371
399
|
$$renderer2.push("<!--[-1-->");
|
|
372
400
|
}
|
|
@@ -378,8 +406,7 @@ Session ${sid}${run.session_id ? "" : " (requested; not started yet)"}`;
|
|
|
378
406
|
}
|
|
379
407
|
$$renderer2.push(`<!--]--> `);
|
|
380
408
|
if (error) {
|
|
381
|
-
$$renderer2.push(
|
|
382
|
-
$$renderer2.push(`<div class="err svelte-rfwj7e">${$9.escape(error)}</div>`);
|
|
409
|
+
$$renderer2.push(`<!--[0--><div class="err svelte-rfwj7e">${$9.escape(error)}</div>`);
|
|
383
410
|
} else {
|
|
384
411
|
$$renderer2.push("<!--[-1-->");
|
|
385
412
|
}
|
|
@@ -395,7 +422,8 @@ Session ${sid}${run.session_id ? "" : " (requested; not started yet)"}`;
|
|
|
395
422
|
import { tick } from "svelte";
|
|
396
423
|
function InstanceView($$renderer, $$props) {
|
|
397
424
|
$$renderer.component(($$renderer2) => {
|
|
398
|
-
let { id, injectionChecks = 0 } = $$props;
|
|
425
|
+
let { id, injectionChecks = 0, uploadEnabled = false } = $$props;
|
|
426
|
+
let uploadArmed = uploadEnabled;
|
|
399
427
|
let instance = null;
|
|
400
428
|
let health = null;
|
|
401
429
|
let lastFetchedAt = null;
|
|
@@ -474,7 +502,51 @@ function InstanceView($$renderer, $$props) {
|
|
|
474
502
|
clearTimeout(copyTimer);
|
|
475
503
|
copyTimer = setTimeout(() => copied = false, 2000);
|
|
476
504
|
}
|
|
477
|
-
|
|
505
|
+
async function handleUpload(files) {
|
|
506
|
+
for (const file of files) {
|
|
507
|
+
try {
|
|
508
|
+
const saved = await uploadFile(id, file);
|
|
509
|
+
dist_default.success(`Saved ${saved.containerPath}`);
|
|
510
|
+
navigator.clipboard.writeText(saved.containerPath).catch(() => {});
|
|
511
|
+
} catch (err) {
|
|
512
|
+
dist_default.error(err.message);
|
|
513
|
+
}
|
|
514
|
+
}
|
|
515
|
+
}
|
|
516
|
+
let dropping = false;
|
|
517
|
+
function onDragEnter(e) {
|
|
518
|
+
if (!uploadArmed || !e.dataTransfer?.types.includes("Files"))
|
|
519
|
+
return;
|
|
520
|
+
e.preventDefault();
|
|
521
|
+
dropping = true;
|
|
522
|
+
}
|
|
523
|
+
function onDragOver(e) {
|
|
524
|
+
if (dropping)
|
|
525
|
+
e.preventDefault();
|
|
526
|
+
}
|
|
527
|
+
function onDragLeave(e) {
|
|
528
|
+
if (e.relatedTarget === null)
|
|
529
|
+
dropping = false;
|
|
530
|
+
}
|
|
531
|
+
function onDrop(e) {
|
|
532
|
+
if (!dropping)
|
|
533
|
+
return;
|
|
534
|
+
e.preventDefault();
|
|
535
|
+
dropping = false;
|
|
536
|
+
if (uploadArmed)
|
|
537
|
+
handleUpload(filesFrom(e.dataTransfer));
|
|
538
|
+
}
|
|
539
|
+
function onPaste(e) {
|
|
540
|
+
if (!uploadArmed)
|
|
541
|
+
return;
|
|
542
|
+
const files = filesFrom(e.clipboardData);
|
|
543
|
+
if (!files.length)
|
|
544
|
+
return;
|
|
545
|
+
e.preventDefault();
|
|
546
|
+
handleUpload(files);
|
|
547
|
+
}
|
|
548
|
+
Toaster($$renderer2, { toastOptions: TOAST_OPTIONS });
|
|
549
|
+
$$renderer2.push(`<!----> <header class="topbar svelte-15fxkvm"><a class="back svelte-15fxkvm" href="/">`);
|
|
478
550
|
Arrow_left($$renderer2, { size: 15 });
|
|
479
551
|
$$renderer2.push(`<!----> All instances</a> <div class="title svelte-15fxkvm"><span class="name svelte-15fxkvm">${$10.escape(instance?.name ?? "Instance")}</span> `);
|
|
480
552
|
if (instance) {
|
|
@@ -486,8 +558,7 @@ function InstanceView($$renderer, $$props) {
|
|
|
486
558
|
}
|
|
487
559
|
$$renderer2.push(`<!--]--></div> `);
|
|
488
560
|
if (instance?.status === "running") {
|
|
489
|
-
$$renderer2.push(
|
|
490
|
-
$$renderer2.push(`<form method="POST" action="?/restart" class="svelte-15fxkvm"><button class="restart svelte-15fxkvm" type="submit"${$10.attr("disabled", restarting || building(), true)}>${$10.escape(restarting || building() ? "Restarting\u2026" : "Restart container")}</button></form> <a class="open svelte-15fxkvm"${$10.attr("href", url())} target="_blank" rel="noopener">Open in new tab `);
|
|
561
|
+
$$renderer2.push(`<!--[0--><form method="POST" action="?/restart" class="svelte-15fxkvm"><button class="restart svelte-15fxkvm" type="submit"${$10.attr("disabled", restarting || building(), true)}>${$10.escape(restarting || building() ? "Restarting\u2026" : "Restart container")}</button></form> <a class="open svelte-15fxkvm"${$10.attr("href", url())} target="_blank" rel="noopener">Open in new tab `);
|
|
491
562
|
Arrow_up_right($$renderer2, { size: 15 });
|
|
492
563
|
$$renderer2.push(`<!----></a>`);
|
|
493
564
|
} else {
|
|
@@ -495,15 +566,20 @@ function InstanceView($$renderer, $$props) {
|
|
|
495
566
|
}
|
|
496
567
|
$$renderer2.push(`<!--]--></header> `);
|
|
497
568
|
if (restartError) {
|
|
569
|
+
$$renderer2.push(`<!--[0--><p class="restart-err svelte-15fxkvm">${$10.escape(restartError)}</p>`);
|
|
570
|
+
} else {
|
|
571
|
+
$$renderer2.push("<!--[-1-->");
|
|
572
|
+
}
|
|
573
|
+
$$renderer2.push(`<!--]--> <main class="stage svelte-15fxkvm">`);
|
|
574
|
+
if (dropping) {
|
|
498
575
|
$$renderer2.push("<!--[0-->");
|
|
499
|
-
$$renderer2
|
|
576
|
+
DropZone($$renderer2, {});
|
|
500
577
|
} else {
|
|
501
578
|
$$renderer2.push("<!--[-1-->");
|
|
502
579
|
}
|
|
503
|
-
$$renderer2.push(`<!--]--> <
|
|
580
|
+
$$renderer2.push(`<!--]--> <div class="meta svelte-15fxkvm"><span class="k svelte-15fxkvm">Source</span> `);
|
|
504
581
|
if (instance) {
|
|
505
|
-
$$renderer2.push(
|
|
506
|
-
$$renderer2.push(`<code class="svelte-15fxkvm">${$10.escape(instance.source_path)}</code>`);
|
|
582
|
+
$$renderer2.push(`<!--[0--><code class="svelte-15fxkvm">${$10.escape(instance.source_path)}</code>`);
|
|
507
583
|
} else {
|
|
508
584
|
$$renderer2.push("<!--[-1-->");
|
|
509
585
|
Skeleton($$renderer2, { variant: "wide" });
|
|
@@ -512,14 +588,11 @@ function InstanceView($$renderer, $$props) {
|
|
|
512
588
|
if (instance) {
|
|
513
589
|
$$renderer2.push("<!--[0-->");
|
|
514
590
|
if (instance.image_source === "local") {
|
|
515
|
-
$$renderer2.push(
|
|
516
|
-
$$renderer2.push(`<code class="svelte-15fxkvm">local (project devcontainer.json)</code>`);
|
|
591
|
+
$$renderer2.push(`<!--[0--><code class="svelte-15fxkvm">local (project devcontainer.json)</code>`);
|
|
517
592
|
} else if (instance.image_source) {
|
|
518
|
-
$$renderer2.push(
|
|
519
|
-
$$renderer2.push(`<code class="svelte-15fxkvm">${$10.escape(instance.image_source)}</code>`);
|
|
593
|
+
$$renderer2.push(`<!--[1--><code class="svelte-15fxkvm">${$10.escape(instance.image_source)}</code>`);
|
|
520
594
|
} else {
|
|
521
|
-
$$renderer2.push(
|
|
522
|
-
$$renderer2.push(`<code class="muted svelte-15fxkvm">\u2014</code>`);
|
|
595
|
+
$$renderer2.push(`<!--[-1--><code class="muted svelte-15fxkvm">\u2014</code>`);
|
|
523
596
|
}
|
|
524
597
|
$$renderer2.push(`<!--]-->`);
|
|
525
598
|
} else {
|
|
@@ -536,15 +609,13 @@ function InstanceView($$renderer, $$props) {
|
|
|
536
609
|
});
|
|
537
610
|
$$renderer2.push(`<!----></div> <section class="ports panel svelte-15fxkvm"><div class="ports-bar panel-bar svelte-15fxkvm"><span class="svelte-15fxkvm">Forwarded ports</span> `);
|
|
538
611
|
if (pendingRebuild) {
|
|
539
|
-
$$renderer2.push(
|
|
540
|
-
$$renderer2.push(`<button class="rebuild svelte-15fxkvm"${$10.attr("disabled", building(), true)}>${$10.escape(building() ? "Restarting\u2026" : "Restart to apply")}</button>`);
|
|
612
|
+
$$renderer2.push(`<!--[0--><button class="rebuild svelte-15fxkvm"${$10.attr("disabled", building(), true)}>${$10.escape(building() ? "Restarting\u2026" : "Restart to apply")}</button>`);
|
|
541
613
|
} else {
|
|
542
614
|
$$renderer2.push("<!--[-1-->");
|
|
543
615
|
}
|
|
544
616
|
$$renderer2.push(`<!--]--></div> <div class="ports-body svelte-15fxkvm">`);
|
|
545
617
|
if (forwards().length) {
|
|
546
|
-
$$renderer2.push(
|
|
547
|
-
$$renderer2.push(`<ul class="port-list svelte-15fxkvm"><!--[-->`);
|
|
618
|
+
$$renderer2.push(`<!--[0--><ul class="port-list svelte-15fxkvm"><!--[-->`);
|
|
548
619
|
const each_array = $10.ensure_array_like(forwards());
|
|
549
620
|
for (let $$index = 0, $$length = each_array.length;$$index < $$length; $$index++) {
|
|
550
621
|
let f = each_array[$$index];
|
|
@@ -554,20 +625,17 @@ function InstanceView($$renderer, $$props) {
|
|
|
554
625
|
}
|
|
555
626
|
$$renderer2.push(`<!--]--></ul>`);
|
|
556
627
|
} else {
|
|
557
|
-
$$renderer2.push(
|
|
558
|
-
$$renderer2.push(`<p class="empty svelte-15fxkvm">No ports forwarded yet.</p>`);
|
|
628
|
+
$$renderer2.push(`<!--[-1--><p class="empty svelte-15fxkvm">No ports forwarded yet.</p>`);
|
|
559
629
|
}
|
|
560
630
|
$$renderer2.push(`<!--]--> <form class="add svelte-15fxkvm"><input type="number" min="1" max="65535" placeholder="container port (e.g. 3000)"${$10.attr("value", newPort)} spellcheck="false" class="svelte-15fxkvm"/> <button type="submit" class="svelte-15fxkvm">Add</button></form> `);
|
|
561
631
|
if (portError) {
|
|
562
|
-
$$renderer2.push(
|
|
563
|
-
$$renderer2.push(`<p class="port-err svelte-15fxkvm">${$10.escape(portError)}</p>`);
|
|
632
|
+
$$renderer2.push(`<!--[0--><p class="port-err svelte-15fxkvm">${$10.escape(portError)}</p>`);
|
|
564
633
|
} else {
|
|
565
634
|
$$renderer2.push("<!--[-1-->");
|
|
566
635
|
}
|
|
567
636
|
$$renderer2.push(`<!--]--> `);
|
|
568
637
|
if (pendingRebuild) {
|
|
569
|
-
$$renderer2.push(
|
|
570
|
-
$$renderer2.push(`<p class="hint pending svelte-15fxkvm">Port changes apply when you <strong class="svelte-15fxkvm">Restart</strong> (recreates the container).</p>`);
|
|
638
|
+
$$renderer2.push(`<!--[0--><p class="hint pending svelte-15fxkvm">Port changes apply when you <strong class="svelte-15fxkvm">Restart</strong> (recreates the container).</p>`);
|
|
571
639
|
} else {
|
|
572
640
|
$$renderer2.push("<!--[-1-->");
|
|
573
641
|
}
|
|
@@ -575,15 +643,13 @@ function InstanceView($$renderer, $$props) {
|
|
|
575
643
|
AgentLogBox($$renderer2, { id, bump: runBump });
|
|
576
644
|
$$renderer2.push(`<!----> <div class="logwrap panel svelte-15fxkvm"><div class="log-bar panel-bar svelte-15fxkvm"><span class="svelte-15fxkvm">Boot log</span> <div class="log-actions svelte-15fxkvm"><button${$10.attr_class("copy svelte-15fxkvm", undefined, { active: following })}${$10.attr("aria-pressed", following)}${$10.attr("title", following ? "Following \u2014 click to pause" : "Paused \u2014 click to follow new output")}>`);
|
|
577
645
|
if (following) {
|
|
578
|
-
$$renderer2.push(
|
|
579
|
-
$$renderer2.push(`<span class="dot svelte-15fxkvm"></span>`);
|
|
646
|
+
$$renderer2.push(`<!--[0--><span class="dot svelte-15fxkvm"></span>`);
|
|
580
647
|
} else {
|
|
581
648
|
$$renderer2.push("<!--[-1-->");
|
|
582
649
|
}
|
|
583
650
|
$$renderer2.push(`<!--]--> ${$10.escape(following ? "Following" : "Follow log")}</button> <button class="copy svelte-15fxkvm"${$10.attr("disabled", !logs, true)}>${$10.escape(copied ? "Copied!" : "Copy logs")}</button></div></div> <div class="logs svelte-15fxkvm"><pre class="svelte-15fxkvm">${$10.escape(logs || "Waiting for output\u2026")}<span class="caret svelte-15fxkvm"></span></pre></div> `);
|
|
584
651
|
if (instance?.status === "error" && instance.error) {
|
|
585
|
-
$$renderer2.push(
|
|
586
|
-
$$renderer2.push(`<div class="err svelte-15fxkvm">${$10.escape(instance.error)}</div>`);
|
|
652
|
+
$$renderer2.push(`<!--[0--><div class="err svelte-15fxkvm">${$10.escape(instance.error)}</div>`);
|
|
587
653
|
} else {
|
|
588
654
|
$$renderer2.push("<!--[-1-->");
|
|
589
655
|
}
|
|
@@ -594,30 +660,32 @@ function InstanceView($$renderer, $$props) {
|
|
|
594
660
|
// src/pages/Instance.svelte
|
|
595
661
|
function Instance($$renderer, $$props) {
|
|
596
662
|
$$renderer.component(($$renderer2) => {
|
|
597
|
-
let { id, injectionChecks } = $$props;
|
|
663
|
+
let { id, injectionChecks, uploadEnabled } = $$props;
|
|
598
664
|
if (true) {
|
|
599
|
-
let failed = function($$renderer3, error) {
|
|
600
|
-
$$renderer3.push(`<mochi-island-failure data-component="InstanceView"${$11.attr("data-message", error.message)}></mochi-island-failure>`);
|
|
601
|
-
};
|
|
602
665
|
$$renderer2.push("<!--[0-->");
|
|
603
|
-
|
|
604
|
-
$$renderer3
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
666
|
+
{
|
|
667
|
+
let failed = function($$renderer3, error) {
|
|
668
|
+
$$renderer3.push(`<mochi-island-failure data-component="InstanceView"${$11.attr("data-message", error.message)}></mochi-island-failure>`);
|
|
669
|
+
};
|
|
670
|
+
$$renderer2.boundary({ failed }, ($$renderer3) => {
|
|
671
|
+
$$renderer3.push(`<!--[-->`);
|
|
672
|
+
{
|
|
673
|
+
HydratableBoundary($$renderer3, {
|
|
674
|
+
children: ($$renderer4) => {
|
|
675
|
+
$$renderer4.push(`<mochi-hydratable-island component-name="InstanceView_2ma45l9bybfhl" component-url="__MOCHI_COMPONENT_URL__InstanceView_2ma45l9bybfhl__"${$11.attr("props-ref", emitIslandProps({ id, injectionChecks, uploadEnabled }))}>`);
|
|
676
|
+
$$renderer4.push(`<!--[-->`);
|
|
677
|
+
{
|
|
678
|
+
InstanceView($$renderer4, { id, injectionChecks, uploadEnabled });
|
|
679
|
+
}
|
|
680
|
+
$$renderer4.push(`<!--]-->`);
|
|
681
|
+
$$renderer4.push(`</mochi-hydratable-island>`);
|
|
682
|
+
},
|
|
683
|
+
$$slots: { default: true }
|
|
684
|
+
});
|
|
685
|
+
}
|
|
686
|
+
$$renderer3.push(`<!--]-->`);
|
|
687
|
+
});
|
|
688
|
+
}
|
|
621
689
|
}
|
|
622
690
|
$$renderer2.push(`<!--]-->`);
|
|
623
691
|
});
|