codebay 0.14.0 → 0.16.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 +778 -646
- 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-spk1b2r4.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-0mc09cyb.js → chunk-sxcr9gzp.js} +1 -1
- package/.mochi/svelte-client/{chunk-ccfh8hxz.js → chunk-tss2473w.js} +1 -1
- package/.mochi/svelte-compile/{App-94xsdn0w.server.js → App-8mpgrxza.server.js} +470 -271
- package/.mochi/svelte-compile/{Avatars-fnccw47h.server.js → Avatars-y5nf6q25.server.js} +111 -110
- package/.mochi/svelte-compile/{DefaultError-je52k17d.server.js → DefaultError-rrjye0s2.server.js} +1 -2
- package/.mochi/svelte-compile/Instance-3sbzyp0g.server.js +695 -0
- package/.mochi/svelte-compile/{Settings-a7b11v90.server.js → Settings-ysvh5vhh.server.js} +838 -607
- 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-w0hca7va.js → chunk-jq7jj8jd.js} +18 -2
- 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-pqb403fh.js → chunk-zk4a9zms.js} +28 -31
- package/.mochi/svelte-css/AgentLogBox-38adby5iygny7.css +1 -0
- package/.mochi/svelte-css/DropZone-1zeitd761uwyd.css +1 -0
- package/.mochi/svelte-css/IdeBar-d3un7kuigxc5.css +1 -0
- package/.mochi/svelte-css/{InstanceCard-25z7nas7y98zk.css → InstanceCard-3vxozrp9uoads.css} +1 -1
- package/.mochi/svelte-css/InstanceView-3ucotech5097w.css +1 -0
- package/.mochi/svelte-css/{SettingsView-bccw34agd2bj.css → SettingsView-2400myxb9ot56.css} +1 -1
- package/README.md +43 -3
- package/migrations/0009_agent_runs.sql +24 -0
- package/migrations/0010_agent_run_model.sql +2 -0
- package/migrations/0011_agent_run_rejected_structured_output.sql +2 -0
- package/package.json +13 -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/AgentLogBox.svelte +458 -0
- package/src/components/AppShell.svelte +112 -1
- package/src/components/DropZone.svelte +77 -0
- package/src/components/FolderBrowser.svelte +13 -5
- package/src/components/HealthBox.svelte +6 -5
- package/src/components/IdeBar.svelte +222 -76
- package/src/components/InstanceCard.svelte +38 -0
- package/src/components/InstanceView.svelte +83 -2
- package/src/components/SettingsView.svelte +273 -0
- package/src/components/TerminalPane.svelte +54 -0
- package/src/components/UiShowcase.svelte +23 -3
- package/src/container-injections/claude-code-install.ts +1 -1
- package/src/container-injections/claude-history.ts +52 -0
- package/src/container-injections/claude-statusline.ts +4 -1
- package/src/container-injections/github-credentials.ts +12 -1
- package/src/container-injections/tmux.ts +6 -2
- package/src/index.ts +35 -7
- package/src/lib/agent-run-stream.ts +286 -0
- package/src/lib/agent-runs.server.ts +735 -0
- package/src/lib/auth.server.ts +11 -2
- package/src/lib/build-freshness.server.ts +71 -0
- package/src/lib/config.server.ts +36 -7
- package/src/lib/container-files.server.ts +1 -1
- package/src/lib/data-dir-lock.server.ts +78 -0
- package/src/lib/db.server.ts +124 -1
- package/src/lib/devcontainer.server.ts +93 -16
- package/src/lib/docker-client.server.ts +11 -5
- package/src/lib/drives.ts +11 -0
- package/src/lib/exec.server.ts +66 -5
- package/src/lib/injections.server.ts +5 -1
- package/src/lib/instances.server.ts +66 -7
- package/src/lib/log-capture.server.ts +63 -23
- package/src/lib/mcp-auth.server.ts +52 -0
- package/src/lib/osc52.ts +18 -0
- package/src/lib/picker.server.ts +23 -2
- package/src/lib/sandbox-ops.server.ts +263 -0
- package/src/lib/upload.ts +32 -0
- package/src/lib/uploads.server.ts +164 -0
- package/src/mcp/routes.server.ts +25 -0
- package/src/mcp/server.server.ts +55 -0
- package/src/mcp/tools.server.ts +660 -0
- package/src/pages/Instance.svelte +6 -2
- package/src/pages/Settings.svelte +15 -0
- package/src/routes.ts +79 -3
- package/src/types.ts +17 -0
- package/.mochi/svelte-client/HydratableIsland-zrdsrsmg.js +0 -1
- package/.mochi/svelte-client/_hydrate-AppShell_2rtnxn6pgp2rh-v7y7dh53.js +0 -2
- package/.mochi/svelte-client/_hydrate-AvatarsView_257s9yq1wwr4f-tmwd6fpb.js +0 -14
- package/.mochi/svelte-client/_hydrate-InstanceView_2ma45l9bybfhl-m7t64dbh.js +0 -1
- package/.mochi/svelte-client/_hydrate-SettingsView_8hmarwmf8onq-4a7ann1f.js +0 -40
- package/.mochi/svelte-client/chunk-5jwfs4p9.js +0 -2
- package/.mochi/svelte-client/chunk-6qg4q98a.js +0 -2
- package/.mochi/svelte-client/chunk-phf7v5jj.js +0 -4
- package/.mochi/svelte-client/chunk-tmeh70wg.js +0 -2
- package/.mochi/svelte-client/chunk-vs1yjbqt.js +0 -2
- package/.mochi/svelte-client/chunk-x0m3k0rn.js +0 -1
- package/.mochi/svelte-client/chunk-y7f4jbdm.js +0 -2
- package/.mochi/svelte-compile/Instance-knnkcn2p.server.js +0 -377
- package/.mochi/svelte-compile/chunk-ed46m58e.js +0 -22
- 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,37 +1,41 @@
|
|
|
1
1
|
// @bun
|
|
2
2
|
import {
|
|
3
|
+
Chevron_right,
|
|
4
|
+
DropZone,
|
|
3
5
|
StatusBadge,
|
|
4
|
-
|
|
5
|
-
|
|
6
|
+
filesFrom,
|
|
7
|
+
forwardedPortUrl,
|
|
8
|
+
uploadFile
|
|
9
|
+
} from "./chunk-878xcmp4.js";
|
|
6
10
|
import {
|
|
7
11
|
Layout_template,
|
|
8
12
|
Plus,
|
|
9
|
-
Terminal,
|
|
10
13
|
tabShortcutsEnabled
|
|
11
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-zk4a9zms.js";
|
|
12
15
|
import {
|
|
16
|
+
Terminal,
|
|
13
17
|
apiDelete,
|
|
14
18
|
apiFetch,
|
|
15
19
|
apiPost,
|
|
16
20
|
ideUrl
|
|
17
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-jq7jj8jd.js";
|
|
18
22
|
import {
|
|
19
23
|
AppBar,
|
|
20
24
|
Avatar,
|
|
21
25
|
Button,
|
|
22
|
-
TOAST_OPTIONS,
|
|
23
|
-
Toaster,
|
|
24
|
-
dist_default,
|
|
25
26
|
findAvatar
|
|
26
|
-
} from "./chunk-
|
|
27
|
+
} from "./chunk-xmygdsj4.js";
|
|
27
28
|
import {
|
|
28
29
|
HydratableBoundary,
|
|
29
30
|
Icon,
|
|
31
|
+
TOAST_OPTIONS,
|
|
32
|
+
Toaster,
|
|
30
33
|
X,
|
|
34
|
+
dist_default,
|
|
31
35
|
emitIslandProps,
|
|
32
36
|
isDev,
|
|
33
37
|
withPopupMarker
|
|
34
|
-
} from "./chunk-
|
|
38
|
+
} from "./chunk-gnf5cnct.js";
|
|
35
39
|
import {
|
|
36
40
|
__require
|
|
37
41
|
} from "./chunk-xpt1a7jm.js";
|
|
@@ -124,77 +128,102 @@ function isRepoUrl(input) {
|
|
|
124
128
|
return parseRepoUrl(input) !== null;
|
|
125
129
|
}
|
|
126
130
|
|
|
131
|
+
// src/lib/drives.ts
|
|
132
|
+
var DRIVES_ROOT = "::drives";
|
|
133
|
+
var DRIVES_ROOT_LABEL = "This PC";
|
|
134
|
+
|
|
127
135
|
// node_modules/@lucide/svelte/dist/icons/folder-clock.svelte
|
|
128
136
|
import"svelte/internal/flags/async";
|
|
129
137
|
import * as $ from "svelte/internal/server";
|
|
130
138
|
function Folder_clock($$renderer, $$props) {
|
|
131
139
|
let { $$slots, $$events, ...props } = $$props;
|
|
132
|
-
const
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
{
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
140
|
+
const iconData = {
|
|
141
|
+
name: "folder-clock",
|
|
142
|
+
size: 24,
|
|
143
|
+
node: [
|
|
144
|
+
["path", { d: "M16 14v2.2l1.6 1" }],
|
|
145
|
+
[
|
|
146
|
+
"path",
|
|
147
|
+
{
|
|
148
|
+
d: "M7 20H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2"
|
|
149
|
+
}
|
|
150
|
+
],
|
|
151
|
+
["circle", { cx: "16", cy: "16", r: "6" }]
|
|
152
|
+
]
|
|
153
|
+
};
|
|
154
|
+
Icon($$renderer, $.spread_props([props, { icon: iconData }]));
|
|
143
155
|
}
|
|
144
156
|
// node_modules/@lucide/svelte/dist/icons/git-branch.svelte
|
|
145
157
|
import"svelte/internal/flags/async";
|
|
146
158
|
import * as $2 from "svelte/internal/server";
|
|
147
159
|
function Git_branch($$renderer, $$props) {
|
|
148
160
|
let { $$slots, $$events, ...props } = $$props;
|
|
149
|
-
const
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
161
|
+
const iconData = {
|
|
162
|
+
name: "git-branch",
|
|
163
|
+
size: 24,
|
|
164
|
+
node: [
|
|
165
|
+
["path", { d: "M15 6a9 9 0 0 0-9 9V3" }],
|
|
166
|
+
["circle", { cx: "18", cy: "6", r: "3" }],
|
|
167
|
+
["circle", { cx: "6", cy: "18", r: "3" }]
|
|
168
|
+
]
|
|
169
|
+
};
|
|
170
|
+
Icon($$renderer, $2.spread_props([props, { icon: iconData }]));
|
|
155
171
|
}
|
|
156
172
|
// node_modules/@lucide/svelte/dist/icons/arrow-up.svelte
|
|
157
173
|
import"svelte/internal/flags/async";
|
|
158
174
|
import * as $3 from "svelte/internal/server";
|
|
159
175
|
function Arrow_up($$renderer, $$props) {
|
|
160
176
|
let { $$slots, $$events, ...props } = $$props;
|
|
161
|
-
const
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
177
|
+
const iconData = {
|
|
178
|
+
name: "arrow-up",
|
|
179
|
+
size: 24,
|
|
180
|
+
node: [
|
|
181
|
+
["path", { d: "m5 12 7-7 7 7" }],
|
|
182
|
+
["path", { d: "M12 19V5" }]
|
|
183
|
+
]
|
|
184
|
+
};
|
|
185
|
+
Icon($$renderer, $3.spread_props([props, { icon: iconData }]));
|
|
166
186
|
}
|
|
167
187
|
// node_modules/@lucide/svelte/dist/icons/folder.svelte
|
|
168
188
|
import"svelte/internal/flags/async";
|
|
169
189
|
import * as $4 from "svelte/internal/server";
|
|
170
190
|
function Folder($$renderer, $$props) {
|
|
171
191
|
let { $$slots, $$events, ...props } = $$props;
|
|
172
|
-
const
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
192
|
+
const iconData = {
|
|
193
|
+
name: "folder",
|
|
194
|
+
size: 24,
|
|
195
|
+
node: [
|
|
196
|
+
[
|
|
197
|
+
"path",
|
|
198
|
+
{
|
|
199
|
+
d: "M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z"
|
|
200
|
+
}
|
|
201
|
+
]
|
|
178
202
|
]
|
|
179
|
-
|
|
180
|
-
Icon($$renderer, $4.spread_props([
|
|
203
|
+
};
|
|
204
|
+
Icon($$renderer, $4.spread_props([props, { icon: iconData }]));
|
|
181
205
|
}
|
|
182
206
|
// node_modules/@lucide/svelte/dist/icons/triangle-alert.svelte
|
|
183
207
|
import"svelte/internal/flags/async";
|
|
184
208
|
import * as $5 from "svelte/internal/server";
|
|
185
209
|
function Triangle_alert($$renderer, $$props) {
|
|
186
210
|
let { $$slots, $$events, ...props } = $$props;
|
|
187
|
-
const
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
211
|
+
const iconData = {
|
|
212
|
+
name: "triangle-alert",
|
|
213
|
+
size: 24,
|
|
214
|
+
node: [
|
|
215
|
+
[
|
|
216
|
+
"path",
|
|
217
|
+
{
|
|
218
|
+
d: "m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3"
|
|
219
|
+
}
|
|
220
|
+
],
|
|
221
|
+
["path", { d: "M12 9v4" }],
|
|
222
|
+
["path", { d: "M12 17h.01" }]
|
|
193
223
|
],
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
];
|
|
197
|
-
Icon($$renderer, $5.spread_props([{ name: "triangle-alert" }, props, { iconNode }]));
|
|
224
|
+
aliases: ["alert-triangle"]
|
|
225
|
+
};
|
|
226
|
+
Icon($$renderer, $5.spread_props([props, { icon: iconData }]));
|
|
198
227
|
}
|
|
199
228
|
// src/components/FolderBrowser.svelte
|
|
200
229
|
function FolderBrowser($$renderer, $$props) {
|
|
@@ -218,6 +247,7 @@ function FolderBrowser($$renderer, $$props) {
|
|
|
218
247
|
onpick(repoUrl.trim(), { branch: repoBranch.trim() || undefined, mode: mode() });
|
|
219
248
|
}
|
|
220
249
|
const filtered = $6.derived(() => result ? result.entries.filter((e) => e.name.toLowerCase().includes(query.trim().toLowerCase())) : []);
|
|
250
|
+
const atDrivesRoot = $6.derived(() => result?.path === DRIVES_ROOT);
|
|
221
251
|
const shownHistory = $6.derived(() => showAll ? history2 : history2.slice(0, 5));
|
|
222
252
|
async function loadHistory() {
|
|
223
253
|
try {
|
|
@@ -255,10 +285,9 @@ function FolderBrowser($$renderer, $$props) {
|
|
|
255
285
|
Layout_template($$renderer2, { size: 15 });
|
|
256
286
|
$$renderer2.push(`<!----> Full IDE</button> <button type="button"${$6.attr_class("mode-btn svelte-oq97c4", undefined, { active: mode() === "terminal" })}${$6.attr("aria-pressed", mode() === "terminal")}>`);
|
|
257
287
|
Terminal($$renderer2, { size: 15 });
|
|
258
|
-
$$renderer2.push(`<!----> Terminal</button></div></div> <div class="clone svelte-oq97c4"><div class="clone-label svelte-oq97c4">Clone a Git repository</div> <div class="clone-row svelte-oq97c4"><input class="clone-url svelte-oq97c4" type="text" placeholder="https://github.com/owner/repo"${$6.attr("value", repoUrl)} spellcheck="false" autocomplete="off"/> <input class="clone-branch svelte-oq97c4" type="text" placeholder="branch (optional)"${$6.attr("value", repoBranch)} spellcheck="false" autocomplete="off"/> <button class="clone-btn svelte-oq97c4"${$6.attr("disabled", !repoValid(), true)}>Clone</button></div></div> <div class="crumbs svelte-oq97c4"><code class="svelte-oq97c4">${$6.escape(result?.path ?? "\u2026")}</code></div> `);
|
|
288
|
+
$$renderer2.push(`<!----> Terminal</button></div></div> <div class="clone svelte-oq97c4"><div class="clone-label svelte-oq97c4">Clone a Git repository</div> <div class="clone-row svelte-oq97c4"><input class="clone-url svelte-oq97c4" type="text" placeholder="https://github.com/owner/repo"${$6.attr("value", repoUrl)} spellcheck="false" autocomplete="off"/> <input class="clone-branch svelte-oq97c4" type="text" placeholder="branch (optional)"${$6.attr("value", repoBranch)} spellcheck="false" autocomplete="off"/> <button class="clone-btn svelte-oq97c4"${$6.attr("disabled", !repoValid(), true)}>Clone</button></div></div> <div class="crumbs svelte-oq97c4"><code class="svelte-oq97c4">${$6.escape(atDrivesRoot() ? DRIVES_ROOT_LABEL : result?.path ?? "\u2026")}</code></div> `);
|
|
259
289
|
if (history2.length > 0) {
|
|
260
|
-
$$renderer2.push("<!--[
|
|
261
|
-
$$renderer2.push(`<div class="recent svelte-oq97c4"><div class="recent-label svelte-oq97c4">Recent</div> <!--[-->`);
|
|
290
|
+
$$renderer2.push(`<!--[0--><div class="recent svelte-oq97c4"><div class="recent-label svelte-oq97c4">Recent</div> <!--[-->`);
|
|
262
291
|
const each_array = $6.ensure_array_like(shownHistory());
|
|
263
292
|
for (let $$index = 0, $$length = each_array.length;$$index < $$length; $$index++) {
|
|
264
293
|
let entry = each_array[$$index];
|
|
@@ -276,8 +305,7 @@ function FolderBrowser($$renderer, $$props) {
|
|
|
276
305
|
}
|
|
277
306
|
$$renderer2.push(`<!--]--> `);
|
|
278
307
|
if (history2.length > 5) {
|
|
279
|
-
$$renderer2.push(
|
|
280
|
-
$$renderer2.push(`<button class="recent-toggle svelte-oq97c4">${$6.escape(showAll ? "Show fewer" : `Show all (${history2.length})`)}</button>`);
|
|
308
|
+
$$renderer2.push(`<!--[0--><button class="recent-toggle svelte-oq97c4">${$6.escape(showAll ? "Show fewer" : `Show all (${history2.length})`)}</button>`);
|
|
281
309
|
} else {
|
|
282
310
|
$$renderer2.push("<!--[-1-->");
|
|
283
311
|
}
|
|
@@ -287,16 +315,13 @@ function FolderBrowser($$renderer, $$props) {
|
|
|
287
315
|
}
|
|
288
316
|
$$renderer2.push(`<!--]--> <div class="search svelte-oq97c4"><input type="text" placeholder="Filter folders\u2026"${$6.attr("value", query)} spellcheck="false" autocomplete="off" class="svelte-oq97c4"/></div> <div class="list svelte-oq97c4">`);
|
|
289
317
|
if (loading) {
|
|
290
|
-
$$renderer2.push(
|
|
291
|
-
$$renderer2.push(`<div class="muted svelte-oq97c4">Loading\u2026</div>`);
|
|
318
|
+
$$renderer2.push(`<!--[0--><div class="muted svelte-oq97c4">Loading\u2026</div>`);
|
|
292
319
|
} else if (errorMsg) {
|
|
293
|
-
$$renderer2.push(
|
|
294
|
-
$$renderer2.push(`<div class="muted err svelte-oq97c4">${$6.escape(errorMsg)}</div>`);
|
|
320
|
+
$$renderer2.push(`<!--[1--><div class="muted err svelte-oq97c4">${$6.escape(errorMsg)}</div>`);
|
|
295
321
|
} else if (result) {
|
|
296
322
|
$$renderer2.push("<!--[2-->");
|
|
297
323
|
if (result.parent && !query) {
|
|
298
|
-
$$renderer2.push(
|
|
299
|
-
$$renderer2.push(`<div class="row svelte-oq97c4"><button class="nav svelte-oq97c4"><span class="icon svelte-oq97c4">`);
|
|
324
|
+
$$renderer2.push(`<!--[0--><div class="row svelte-oq97c4"><button class="nav svelte-oq97c4"><span class="icon svelte-oq97c4">`);
|
|
300
325
|
Arrow_up($$renderer2, { size: 16 });
|
|
301
326
|
$$renderer2.push(`<!----></span> <span class="ename svelte-oq97c4">..</span></button></div>`);
|
|
302
327
|
} else {
|
|
@@ -304,8 +329,7 @@ function FolderBrowser($$renderer, $$props) {
|
|
|
304
329
|
}
|
|
305
330
|
$$renderer2.push(`<!--]--> `);
|
|
306
331
|
if (filtered().length === 0) {
|
|
307
|
-
$$renderer2.push(
|
|
308
|
-
$$renderer2.push(`<div class="muted svelte-oq97c4">${$6.escape(query ? "No folders match." : "No subfolders here.")}</div>`);
|
|
332
|
+
$$renderer2.push(`<!--[0--><div class="muted svelte-oq97c4">${$6.escape(query ? "No folders match." : "No subfolders here.")}</div>`);
|
|
309
333
|
} else {
|
|
310
334
|
$$renderer2.push("<!--[-1-->");
|
|
311
335
|
}
|
|
@@ -317,8 +341,7 @@ function FolderBrowser($$renderer, $$props) {
|
|
|
317
341
|
Folder($$renderer2, { size: 16 });
|
|
318
342
|
$$renderer2.push(`<!----></span> <span class="ename svelte-oq97c4">${$6.escape(entry.name)}</span> `);
|
|
319
343
|
if (entry.hasDevcontainer) {
|
|
320
|
-
$$renderer2.push(
|
|
321
|
-
$$renderer2.push(`<span class="badge svelte-oq97c4">devcontainer</span>`);
|
|
344
|
+
$$renderer2.push(`<!--[0--><span class="badge svelte-oq97c4">devcontainer</span>`);
|
|
322
345
|
} else {
|
|
323
346
|
$$renderer2.push("<!--[-1-->");
|
|
324
347
|
}
|
|
@@ -329,16 +352,15 @@ function FolderBrowser($$renderer, $$props) {
|
|
|
329
352
|
$$renderer2.push("<!--[-1-->");
|
|
330
353
|
}
|
|
331
354
|
$$renderer2.push(`<!--]--></div> `);
|
|
332
|
-
if (result && !result.hasDevcontainer) {
|
|
333
|
-
$$renderer2.push(
|
|
334
|
-
$$renderer2.push(`<div class="warn svelte-oq97c4">`);
|
|
355
|
+
if (result && !result.hasDevcontainer && !atDrivesRoot()) {
|
|
356
|
+
$$renderer2.push(`<!--[0--><div class="warn svelte-oq97c4">`);
|
|
335
357
|
Triangle_alert($$renderer2, { size: 15 });
|
|
336
358
|
$$renderer2.push(`<!----> <span>No <code class="svelte-oq97c4">devcontainer.json</code> in this folder \u2014 a default image will be used if you select
|
|
337
359
|
it.</span></div>`);
|
|
338
360
|
} else {
|
|
339
361
|
$$renderer2.push("<!--[-1-->");
|
|
340
362
|
}
|
|
341
|
-
$$renderer2.push(`<!--]--> <div class="foot svelte-oq97c4"><span class="hint svelte-oq97c4"
|
|
363
|
+
$$renderer2.push(`<!--]--> <div class="foot svelte-oq97c4"><span class="hint svelte-oq97c4">${$6.escape(atDrivesRoot() ? "Pick a drive to browse." : "Browse to a folder, then select this folder or any subfolder.")}</span> <button class="primary svelte-oq97c4"${$6.attr("disabled", !result || atDrivesRoot(), true)}>Select this folder</button></div></div></div>`);
|
|
342
364
|
});
|
|
343
365
|
}
|
|
344
366
|
|
|
@@ -365,37 +387,40 @@ import"svelte/internal/flags/async";
|
|
|
365
387
|
import * as $8 from "svelte/internal/server";
|
|
366
388
|
function Cable($$renderer, $$props) {
|
|
367
389
|
let { $$slots, $$events, ...props } = $$props;
|
|
368
|
-
const
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
{ d: "
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
"path",
|
|
384
|
-
{
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
390
|
+
const iconData = {
|
|
391
|
+
name: "cable",
|
|
392
|
+
size: 24,
|
|
393
|
+
node: [
|
|
394
|
+
[
|
|
395
|
+
"path",
|
|
396
|
+
{
|
|
397
|
+
d: "M17 19a1 1 0 0 1-1-1v-2a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2v2a1 1 0 0 1-1 1z"
|
|
398
|
+
}
|
|
399
|
+
],
|
|
400
|
+
["path", { d: "M17 21v-2" }],
|
|
401
|
+
[
|
|
402
|
+
"path",
|
|
403
|
+
{ d: "M19 14V6.5a1 1 0 0 0-7 0v11a1 1 0 0 1-7 0V10" }
|
|
404
|
+
],
|
|
405
|
+
["path", { d: "M21 21v-2" }],
|
|
406
|
+
["path", { d: "M3 5V3" }],
|
|
407
|
+
[
|
|
408
|
+
"path",
|
|
409
|
+
{
|
|
410
|
+
d: "M4 10a2 2 0 0 1-2-2V6a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v2a2 2 0 0 1-2 2z"
|
|
411
|
+
}
|
|
412
|
+
],
|
|
413
|
+
["path", { d: "M7 5V3" }]
|
|
414
|
+
]
|
|
415
|
+
};
|
|
416
|
+
Icon($$renderer, $8.spread_props([props, { icon: iconData }]));
|
|
391
417
|
}
|
|
392
418
|
// src/components/PortsBox.svelte
|
|
393
419
|
function PortsBox($$renderer, $$props) {
|
|
394
420
|
$$renderer.component(($$renderer2) => {
|
|
395
421
|
let { ports } = $$props;
|
|
396
422
|
if (ports.length) {
|
|
397
|
-
$$renderer2.push(
|
|
398
|
-
$$renderer2.push(`<div class="fports svelte-1uaz383" title="Forwarded ports \u2014 click to open">`);
|
|
423
|
+
$$renderer2.push(`<!--[0--><div class="fports svelte-1uaz383" title="Forwarded ports \u2014 click to open">`);
|
|
399
424
|
Cable($$renderer2, { size: 12 });
|
|
400
425
|
$$renderer2.push(`<!----> <span class="list svelte-1uaz383"><!--[-->`);
|
|
401
426
|
const each_array = $9.ensure_array_like(ports);
|
|
@@ -433,8 +458,7 @@ function InstanceCard($$renderer, $$props) {
|
|
|
433
458
|
};
|
|
434
459
|
$$renderer2.push(`<li${$10.attr_class("card panel svelte-13338y7", undefined, { busy: !!pending })}${$10.attr("aria-busy", !!pending || undefined)}>`);
|
|
435
460
|
if (pending) {
|
|
436
|
-
$$renderer2.push(
|
|
437
|
-
$$renderer2.push(`<div class="busy-overlay svelte-13338y7" aria-live="polite"><span class="busy-label svelte-13338y7">${$10.escape(BUSY_LABEL[pending])}</span></div>`);
|
|
461
|
+
$$renderer2.push(`<!--[0--><div class="busy-overlay svelte-13338y7" aria-live="polite"><span class="busy-label svelte-13338y7">${$10.escape(BUSY_LABEL[pending])}</span></div>`);
|
|
438
462
|
} else {
|
|
439
463
|
$$renderer2.push("<!--[-1-->");
|
|
440
464
|
}
|
|
@@ -446,16 +470,13 @@ function InstanceCard($$renderer, $$props) {
|
|
|
446
470
|
});
|
|
447
471
|
$$renderer2.push(`<!----> `);
|
|
448
472
|
if (editing) {
|
|
449
|
-
$$renderer2.push(
|
|
450
|
-
$$renderer2.push(`<input class="name-edit svelte-13338y7"${$10.attr("value", editingName)} autofocus=""/>`);
|
|
473
|
+
$$renderer2.push(`<!--[0--><input class="name-edit svelte-13338y7"${$10.attr("value", editingName)} autofocus=""/>`);
|
|
451
474
|
} else {
|
|
452
|
-
$$renderer2.push(
|
|
453
|
-
$$renderer2.push(`<button class="name svelte-13338y7" title="Click to rename">${$10.escape(instance.name)}</button>`);
|
|
475
|
+
$$renderer2.push(`<!--[-1--><button class="name svelte-13338y7" title="Click to rename">${$10.escape(instance.name)}</button>`);
|
|
454
476
|
}
|
|
455
477
|
$$renderer2.push(`<!--]--> `);
|
|
456
478
|
if (instance.attention) {
|
|
457
|
-
$$renderer2.push(
|
|
458
|
-
$$renderer2.push(`<span${$10.attr_class("attn svelte-13338y7", undefined, {
|
|
479
|
+
$$renderer2.push(`<!--[0--><span${$10.attr_class("attn svelte-13338y7", undefined, {
|
|
459
480
|
"attn-done": instance.attention === "done",
|
|
460
481
|
"attn-waiting": instance.attention === "waiting"
|
|
461
482
|
})}${$10.attr("title", instance.attention === "waiting" ? "Claude is waiting for input" : "Claude finished")}${$10.attr("aria-label", instance.attention === "waiting" ? "Claude is waiting for input" : "Claude finished")}></span>`);
|
|
@@ -479,9 +500,14 @@ function InstanceCard($$renderer, $$props) {
|
|
|
479
500
|
$$renderer2.push("<!--[-1-->");
|
|
480
501
|
}
|
|
481
502
|
$$renderer2.push(`<!--]--> `);
|
|
503
|
+
if (instance.active_run) {
|
|
504
|
+
$$renderer2.push(`<!--[0--><div class="agent-run svelte-13338y7" title="An MCP client is driving Claude in this sandbox"><span class="agent-dot svelte-13338y7"></span> <span class="agent-text svelte-13338y7">${$10.escape(instance.active_run.status === "queued" ? "Agent run queued" : instance.active_run.last_activity ?? "Agent running")}</span></div>`);
|
|
505
|
+
} else {
|
|
506
|
+
$$renderer2.push("<!--[-1-->");
|
|
507
|
+
}
|
|
508
|
+
$$renderer2.push(`<!--]--> `);
|
|
482
509
|
if (instance.status === "error" && instance.error) {
|
|
483
|
-
$$renderer2.push(
|
|
484
|
-
$$renderer2.push(`<div class="card-error svelte-13338y7">${$10.escape(instance.error)}</div>`);
|
|
510
|
+
$$renderer2.push(`<!--[0--><div class="card-error svelte-13338y7">${$10.escape(instance.error)}</div>`);
|
|
485
511
|
} else {
|
|
486
512
|
$$renderer2.push("<!--[-1-->");
|
|
487
513
|
}
|
|
@@ -583,33 +609,37 @@ import"svelte/internal/flags/async";
|
|
|
583
609
|
import * as $11 from "svelte/internal/server";
|
|
584
610
|
function Component($$renderer, $$props) {
|
|
585
611
|
let { $$slots, $$events, ...props } = $$props;
|
|
586
|
-
const
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
612
|
+
const iconData = {
|
|
613
|
+
name: "component",
|
|
614
|
+
size: 24,
|
|
615
|
+
node: [
|
|
616
|
+
[
|
|
617
|
+
"path",
|
|
618
|
+
{
|
|
619
|
+
d: "M15.536 11.293a1 1 0 0 0 0 1.414l2.376 2.377a1 1 0 0 0 1.414 0l2.377-2.377a1 1 0 0 0 0-1.414l-2.377-2.377a1 1 0 0 0-1.414 0z"
|
|
620
|
+
}
|
|
621
|
+
],
|
|
622
|
+
[
|
|
623
|
+
"path",
|
|
624
|
+
{
|
|
625
|
+
d: "M2.297 11.293a1 1 0 0 0 0 1.414l2.377 2.377a1 1 0 0 0 1.414 0l2.377-2.377a1 1 0 0 0 0-1.414L6.088 8.916a1 1 0 0 0-1.414 0z"
|
|
626
|
+
}
|
|
627
|
+
],
|
|
628
|
+
[
|
|
629
|
+
"path",
|
|
630
|
+
{
|
|
631
|
+
d: "M8.916 17.912a1 1 0 0 0 0 1.415l2.377 2.376a1 1 0 0 0 1.414 0l2.377-2.376a1 1 0 0 0 0-1.415l-2.377-2.376a1 1 0 0 0-1.414 0z"
|
|
632
|
+
}
|
|
633
|
+
],
|
|
634
|
+
[
|
|
635
|
+
"path",
|
|
636
|
+
{
|
|
637
|
+
d: "M8.916 4.674a1 1 0 0 0 0 1.414l2.377 2.376a1 1 0 0 0 1.414 0l2.377-2.376a1 1 0 0 0 0-1.414l-2.377-2.377a1 1 0 0 0-1.414 0z"
|
|
638
|
+
}
|
|
639
|
+
]
|
|
610
640
|
]
|
|
611
|
-
|
|
612
|
-
Icon($$renderer, $11.spread_props([
|
|
641
|
+
};
|
|
642
|
+
Icon($$renderer, $11.spread_props([props, { icon: iconData }]));
|
|
613
643
|
}
|
|
614
644
|
// src/components/Brand.svelte
|
|
615
645
|
import"svelte/internal/flags/async";
|
|
@@ -620,18 +650,22 @@ import"svelte/internal/flags/async";
|
|
|
620
650
|
import * as $12 from "svelte/internal/server";
|
|
621
651
|
function Package($$renderer, $$props) {
|
|
622
652
|
let { $$slots, $$events, ...props } = $$props;
|
|
623
|
-
const
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
653
|
+
const iconData = {
|
|
654
|
+
name: "package",
|
|
655
|
+
size: 24,
|
|
656
|
+
node: [
|
|
657
|
+
[
|
|
658
|
+
"path",
|
|
659
|
+
{
|
|
660
|
+
d: "M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z"
|
|
661
|
+
}
|
|
662
|
+
],
|
|
663
|
+
["path", { d: "M12 22V12" }],
|
|
664
|
+
["polyline", { points: "3.29 7 12 12 20.71 7" }],
|
|
665
|
+
["path", { d: "m7.5 4.27 9 5.15" }]
|
|
666
|
+
]
|
|
667
|
+
};
|
|
668
|
+
Icon($$renderer, $12.spread_props([props, { icon: iconData }]));
|
|
635
669
|
}
|
|
636
670
|
// src/components/Brand.svelte
|
|
637
671
|
function Brand($$renderer, $$props) {
|
|
@@ -679,16 +713,20 @@ import"svelte/internal/flags/async";
|
|
|
679
713
|
import * as $15 from "svelte/internal/server";
|
|
680
714
|
function Settings($$renderer, $$props) {
|
|
681
715
|
let { $$slots, $$events, ...props } = $$props;
|
|
682
|
-
const
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
716
|
+
const iconData = {
|
|
717
|
+
name: "settings",
|
|
718
|
+
size: 24,
|
|
719
|
+
node: [
|
|
720
|
+
[
|
|
721
|
+
"path",
|
|
722
|
+
{
|
|
723
|
+
d: "M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915"
|
|
724
|
+
}
|
|
725
|
+
],
|
|
726
|
+
["circle", { cx: "12", cy: "12", r: "3" }]
|
|
727
|
+
]
|
|
728
|
+
};
|
|
729
|
+
Icon($$renderer, $15.spread_props([props, { icon: iconData }]));
|
|
692
730
|
}
|
|
693
731
|
// src/components/SettingsCog.svelte
|
|
694
732
|
function SettingsCog($$renderer, $$props) {
|
|
@@ -708,21 +746,25 @@ import"svelte/internal/flags/async";
|
|
|
708
746
|
import * as $17 from "svelte/internal/server";
|
|
709
747
|
function Link($$renderer, $$props) {
|
|
710
748
|
let { $$slots, $$events, ...props } = $$props;
|
|
711
|
-
const
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
749
|
+
const iconData = {
|
|
750
|
+
name: "link",
|
|
751
|
+
size: 24,
|
|
752
|
+
node: [
|
|
753
|
+
[
|
|
754
|
+
"path",
|
|
755
|
+
{
|
|
756
|
+
d: "M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"
|
|
757
|
+
}
|
|
758
|
+
],
|
|
759
|
+
[
|
|
760
|
+
"path",
|
|
761
|
+
{
|
|
762
|
+
d: "M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"
|
|
763
|
+
}
|
|
764
|
+
]
|
|
723
765
|
]
|
|
724
|
-
|
|
725
|
-
Icon($$renderer, $17.spread_props([
|
|
766
|
+
};
|
|
767
|
+
Icon($$renderer, $17.spread_props([props, { icon: iconData }]));
|
|
726
768
|
}
|
|
727
769
|
// src/components/CredMenu.svelte
|
|
728
770
|
function CredMenu($$renderer, $$props) {
|
|
@@ -752,8 +794,7 @@ function CredMenu($$renderer, $$props) {
|
|
|
752
794
|
}
|
|
753
795
|
$$renderer2.push(`</button> `);
|
|
754
796
|
if (credOpen) {
|
|
755
|
-
$$renderer2.push(
|
|
756
|
-
$$renderer2.push(`<div class="cred-dropdown panel svelte-vongf9" role="menu"><!--[-->`);
|
|
797
|
+
$$renderer2.push(`<!--[0--><div class="cred-dropdown panel svelte-vongf9" role="menu"><!--[-->`);
|
|
757
798
|
const each_array = $18.ensure_array_like(auth);
|
|
758
799
|
for (let $$index = 0, $$length = each_array.length;$$index < $$length; $$index++) {
|
|
759
800
|
let provider = each_array[$$index];
|
|
@@ -955,18 +996,15 @@ function DashboardView($$renderer, $$props) {
|
|
|
955
996
|
});
|
|
956
997
|
$$renderer3.push(`<!----> <main class="stage svelte-146pixd">`);
|
|
957
998
|
if (!ready()) {
|
|
958
|
-
$$renderer3.push(
|
|
959
|
-
$$renderer3.push(`<div class="banner error svelte-146pixd"><strong>Setup needed.</strong> `);
|
|
999
|
+
$$renderer3.push(`<!--[0--><div class="banner error svelte-146pixd"><strong>Setup needed.</strong> `);
|
|
960
1000
|
if (!preflight.docker) {
|
|
961
|
-
$$renderer3.push(
|
|
962
|
-
$$renderer3.push(`<span>Docker daemon is not reachable.</span>`);
|
|
1001
|
+
$$renderer3.push(`<!--[0--><span>Docker daemon is not reachable.</span>`);
|
|
963
1002
|
} else {
|
|
964
1003
|
$$renderer3.push("<!--[-1-->");
|
|
965
1004
|
}
|
|
966
1005
|
$$renderer3.push(`<!--]--> `);
|
|
967
1006
|
if (!preflight.cli) {
|
|
968
|
-
$$renderer3.push(
|
|
969
|
-
$$renderer3.push(`<span>The devcontainer CLI is not available.</span>`);
|
|
1007
|
+
$$renderer3.push(`<!--[0--><span>The devcontainer CLI is not available.</span>`);
|
|
970
1008
|
} else {
|
|
971
1009
|
$$renderer3.push("<!--[-1-->");
|
|
972
1010
|
}
|
|
@@ -976,18 +1014,15 @@ function DashboardView($$renderer, $$props) {
|
|
|
976
1014
|
}
|
|
977
1015
|
$$renderer3.push(`<!--]--> `);
|
|
978
1016
|
if (actionError) {
|
|
979
|
-
$$renderer3.push(
|
|
980
|
-
$$renderer3.push(`<div class="banner error svelte-146pixd"><strong>Error.</strong> <span>${$20.escape(actionError)}</span></div>`);
|
|
1017
|
+
$$renderer3.push(`<!--[0--><div class="banner error svelte-146pixd"><strong>Error.</strong> <span>${$20.escape(actionError)}</span></div>`);
|
|
981
1018
|
} else {
|
|
982
1019
|
$$renderer3.push("<!--[-1-->");
|
|
983
1020
|
}
|
|
984
1021
|
$$renderer3.push(`<!--]--> `);
|
|
985
1022
|
if (!loaded) {
|
|
986
|
-
$$renderer3.push(
|
|
987
|
-
$$renderer3.push(`<div class="empty svelte-146pixd"><p class="empty-sub svelte-146pixd">Loading\u2026</p></div>`);
|
|
1023
|
+
$$renderer3.push(`<!--[0--><div class="empty svelte-146pixd"><p class="empty-sub svelte-146pixd">Loading\u2026</p></div>`);
|
|
988
1024
|
} else if (instances.length === 0) {
|
|
989
|
-
$$renderer3.push(
|
|
990
|
-
$$renderer3.push(`<div class="empty svelte-146pixd"><p class="empty-title svelte-146pixd">No instances yet</p> <p class="empty-sub svelte-146pixd">Pick a project folder to spin up an isolated devcontainer.</p> `);
|
|
1025
|
+
$$renderer3.push(`<!--[1--><div class="empty svelte-146pixd"><p class="empty-title svelte-146pixd">No instances yet</p> <p class="empty-sub svelte-146pixd">Pick a project folder to spin up an isolated devcontainer.</p> `);
|
|
991
1026
|
Button($$renderer3, {
|
|
992
1027
|
variant: "primary",
|
|
993
1028
|
icon: Plus,
|
|
@@ -1000,11 +1035,9 @@ function DashboardView($$renderer, $$props) {
|
|
|
1000
1035
|
});
|
|
1001
1036
|
$$renderer3.push(`<!----></div>`);
|
|
1002
1037
|
} else if (visible().length === 0) {
|
|
1003
|
-
$$renderer3.push(
|
|
1004
|
-
$$renderer3.push(`<div class="empty svelte-146pixd"><p class="empty-sub svelte-146pixd">No ${$20.escape(filter)} instances.</p></div>`);
|
|
1038
|
+
$$renderer3.push(`<!--[2--><div class="empty svelte-146pixd"><p class="empty-sub svelte-146pixd">No ${$20.escape(filter)} instances.</p></div>`);
|
|
1005
1039
|
} else {
|
|
1006
|
-
$$renderer3.push(
|
|
1007
|
-
$$renderer3.push(`<ul class="grid svelte-146pixd"><!--[-->`);
|
|
1040
|
+
$$renderer3.push(`<!--[-1--><ul class="grid svelte-146pixd"><!--[-->`);
|
|
1008
1041
|
const each_array = $20.ensure_array_like(visible());
|
|
1009
1042
|
for (let $$index = 0, $$length = each_array.length;$$index < $$length; $$index++) {
|
|
1010
1043
|
let instance = each_array[$$index];
|
|
@@ -1059,30 +1092,46 @@ import"svelte/internal/flags/async";
|
|
|
1059
1092
|
import * as $21 from "svelte/internal/server";
|
|
1060
1093
|
function Rotate_cw($$renderer, $$props) {
|
|
1061
1094
|
let { $$slots, $$events, ...props } = $$props;
|
|
1062
|
-
const
|
|
1063
|
-
|
|
1064
|
-
|
|
1065
|
-
|
|
1066
|
-
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
|
|
1095
|
+
const iconData = {
|
|
1096
|
+
name: "rotate-cw",
|
|
1097
|
+
size: 24,
|
|
1098
|
+
node: [
|
|
1099
|
+
[
|
|
1100
|
+
"path",
|
|
1101
|
+
{ d: "M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8" }
|
|
1102
|
+
],
|
|
1103
|
+
["path", { d: "M21 3v5h-5" }]
|
|
1104
|
+
]
|
|
1105
|
+
};
|
|
1106
|
+
Icon($$renderer, $21.spread_props([props, { icon: iconData }]));
|
|
1070
1107
|
}
|
|
1071
1108
|
// node_modules/@lucide/svelte/dist/icons/chevron-left.svelte
|
|
1072
1109
|
import"svelte/internal/flags/async";
|
|
1073
1110
|
import * as $22 from "svelte/internal/server";
|
|
1074
1111
|
function Chevron_left($$renderer, $$props) {
|
|
1075
1112
|
let { $$slots, $$events, ...props } = $$props;
|
|
1076
|
-
const
|
|
1077
|
-
|
|
1113
|
+
const iconData = {
|
|
1114
|
+
name: "chevron-left",
|
|
1115
|
+
size: 24,
|
|
1116
|
+
node: [["path", { d: "m15 18-6-6 6-6" }]]
|
|
1117
|
+
};
|
|
1118
|
+
Icon($$renderer, $22.spread_props([props, { icon: iconData }]));
|
|
1078
1119
|
}
|
|
1079
|
-
// node_modules/@lucide/svelte/dist/icons/
|
|
1120
|
+
// node_modules/@lucide/svelte/dist/icons/circle-stop.svelte
|
|
1080
1121
|
import"svelte/internal/flags/async";
|
|
1081
1122
|
import * as $23 from "svelte/internal/server";
|
|
1082
|
-
function
|
|
1123
|
+
function Circle_stop($$renderer, $$props) {
|
|
1083
1124
|
let { $$slots, $$events, ...props } = $$props;
|
|
1084
|
-
const
|
|
1085
|
-
|
|
1125
|
+
const iconData = {
|
|
1126
|
+
name: "circle-stop",
|
|
1127
|
+
size: 24,
|
|
1128
|
+
node: [
|
|
1129
|
+
["circle", { cx: "12", cy: "12", r: "10" }],
|
|
1130
|
+
["rect", { x: "9", y: "9", width: "6", height: "6", rx: "1" }]
|
|
1131
|
+
],
|
|
1132
|
+
aliases: ["stop-circle"]
|
|
1133
|
+
};
|
|
1134
|
+
Icon($$renderer, $23.spread_props([props, { icon: iconData }]));
|
|
1086
1135
|
}
|
|
1087
1136
|
// src/components/IdeBar.svelte
|
|
1088
1137
|
function IdeBar($$renderer, $$props) {
|
|
@@ -1093,14 +1142,46 @@ function IdeBar($$renderer, $$props) {
|
|
|
1093
1142
|
attention,
|
|
1094
1143
|
editingId,
|
|
1095
1144
|
editingName = undefined,
|
|
1145
|
+
stopping = [],
|
|
1096
1146
|
onreload,
|
|
1097
1147
|
onselect,
|
|
1148
|
+
onstop,
|
|
1149
|
+
ondropfiles,
|
|
1098
1150
|
onstartrename,
|
|
1099
1151
|
oncommitrename,
|
|
1100
1152
|
oncancelrename
|
|
1101
1153
|
} = $$props;
|
|
1102
|
-
const
|
|
1103
|
-
|
|
1154
|
+
const isStopping = (id) => stopping.includes(id);
|
|
1155
|
+
let dropTarget = null;
|
|
1156
|
+
let tipWidth = 0;
|
|
1157
|
+
const tipLeft = $24.derived(() => dropTarget ? Math.max(8, Math.min(dropTarget.x - tipWidth / 2, dropTarget.maxX - tipWidth)) : 0);
|
|
1158
|
+
function onSlotDrag(e, id) {
|
|
1159
|
+
if (!ondropfiles || !e.dataTransfer?.types.includes("Files"))
|
|
1160
|
+
return;
|
|
1161
|
+
e.preventDefault();
|
|
1162
|
+
e.dataTransfer.dropEffect = "copy";
|
|
1163
|
+
if (dropTarget?.id === id)
|
|
1164
|
+
return;
|
|
1165
|
+
const r = e.currentTarget.getBoundingClientRect();
|
|
1166
|
+
dropTarget = {
|
|
1167
|
+
id,
|
|
1168
|
+
x: r.left + r.width / 2,
|
|
1169
|
+
y: r.bottom,
|
|
1170
|
+
maxX: document.documentElement.clientWidth - 8
|
|
1171
|
+
};
|
|
1172
|
+
}
|
|
1173
|
+
function onSlotLeave(e) {
|
|
1174
|
+
if (e.currentTarget.contains(e.relatedTarget))
|
|
1175
|
+
return;
|
|
1176
|
+
dropTarget = null;
|
|
1177
|
+
}
|
|
1178
|
+
function onSlotDrop(e, id) {
|
|
1179
|
+
if (!ondropfiles)
|
|
1180
|
+
return;
|
|
1181
|
+
e.preventDefault();
|
|
1182
|
+
dropTarget = null;
|
|
1183
|
+
ondropfiles(id, filesFrom(e.dataTransfer));
|
|
1184
|
+
}
|
|
1104
1185
|
let viewport = null;
|
|
1105
1186
|
let content = null;
|
|
1106
1187
|
let atStart = true;
|
|
@@ -1120,8 +1201,8 @@ function IdeBar($$renderer, $$props) {
|
|
|
1120
1201
|
onselect(inst.id);
|
|
1121
1202
|
tabEls[inst.id]?.focus();
|
|
1122
1203
|
}
|
|
1123
|
-
function onTabKeydown(e) {
|
|
1124
|
-
const next = nextTabIndex(
|
|
1204
|
+
function onTabKeydown(e, index) {
|
|
1205
|
+
const next = nextTabIndex(index, e.key, running.length);
|
|
1125
1206
|
if (next === null)
|
|
1126
1207
|
return;
|
|
1127
1208
|
e.preventDefault();
|
|
@@ -1135,23 +1216,24 @@ function IdeBar($$renderer, $$props) {
|
|
|
1135
1216
|
AppBar($$renderer2, {
|
|
1136
1217
|
children: ($$renderer3) => {
|
|
1137
1218
|
if (running.length > 0) {
|
|
1138
|
-
$$renderer3.push(
|
|
1139
|
-
$$renderer3.push(`<div class="strip svelte-r39acv">`);
|
|
1219
|
+
$$renderer3.push(`<!--[0--><div class="strip svelte-r39acv">`);
|
|
1140
1220
|
if (overflowing()) {
|
|
1141
|
-
$$renderer3.push(
|
|
1142
|
-
$$renderer3.push(`<button type="button" class="page svelte-r39acv"${$24.attr("disabled", atStart, true)} aria-label="Scroll tabs left">`);
|
|
1221
|
+
$$renderer3.push(`<!--[0--><button type="button" class="page svelte-r39acv"${$24.attr("disabled", atStart, true)} aria-label="Scroll tabs left">`);
|
|
1143
1222
|
Chevron_left($$renderer3, { size: 16 });
|
|
1144
1223
|
$$renderer3.push(`<!----></button>`);
|
|
1145
1224
|
} else {
|
|
1146
1225
|
$$renderer3.push("<!--[-1-->");
|
|
1147
1226
|
}
|
|
1148
|
-
$$renderer3.push(`<!--]--> <div class="viewport svelte-r39acv"><
|
|
1227
|
+
$$renderer3.push(`<!--]--> <div class="viewport svelte-r39acv"><nav class="tabs svelte-r39acv" aria-label="Instances"><!--[-->`);
|
|
1149
1228
|
const each_array = $24.ensure_array_like(running);
|
|
1150
1229
|
for (let i = 0, $$length = each_array.length;i < $$length; i++) {
|
|
1151
1230
|
let inst = each_array[i];
|
|
1231
|
+
$$renderer3.push(`<div${$24.attr_class("tab-slot svelte-r39acv", undefined, {
|
|
1232
|
+
active: inst.id === active,
|
|
1233
|
+
"drop-target": dropTarget?.id === inst.id
|
|
1234
|
+
})} role="presentation">`);
|
|
1152
1235
|
if (editingId === inst.id) {
|
|
1153
|
-
$$renderer3.push(
|
|
1154
|
-
$$renderer3.push(`<div class="tab editing svelte-r39acv">`);
|
|
1236
|
+
$$renderer3.push(`<!--[0--><div class="tab editing svelte-r39acv">`);
|
|
1155
1237
|
Avatar($$renderer3, {
|
|
1156
1238
|
name: inst.name,
|
|
1157
1239
|
art: findAvatar(inst.avatar ?? undefined) ?? null,
|
|
@@ -1159,8 +1241,7 @@ function IdeBar($$renderer, $$props) {
|
|
|
1159
1241
|
});
|
|
1160
1242
|
$$renderer3.push(`<!----> <input class="tab-name-edit svelte-r39acv"${$24.attr("value", editingName)} autofocus=""/></div>`);
|
|
1161
1243
|
} else {
|
|
1162
|
-
$$renderer3.push(
|
|
1163
|
-
$$renderer3.push(`<button type="button"${$24.attr_class("tab svelte-r39acv", undefined, { active: inst.id === active })}${$24.attr("id", `tab-${$24.stringify(inst.id)}`)} role="tab"${$24.attr("aria-selected", inst.id === active)}${$24.attr("tabindex", i === focusIndex() ? 0 : -1)}${$24.attr("title", inst.name)}>`);
|
|
1244
|
+
$$renderer3.push(`<!--[-1--><button type="button"${$24.attr_class("tab svelte-r39acv", undefined, { active: inst.id === active })}${$24.attr("id", `tab-${$24.stringify(inst.id)}`)}${$24.attr("aria-current", inst.id === active ? "page" : undefined)}${$24.attr("title", inst.name)}>`);
|
|
1164
1245
|
Avatar($$renderer3, {
|
|
1165
1246
|
name: inst.name,
|
|
1166
1247
|
art: findAvatar(inst.avatar ?? undefined) ?? null,
|
|
@@ -1176,19 +1257,25 @@ function IdeBar($$renderer, $$props) {
|
|
|
1176
1257
|
}
|
|
1177
1258
|
$$renderer3.push(`<!--]--></span> `);
|
|
1178
1259
|
if (inst.id !== active && attention[inst.id]) {
|
|
1179
|
-
$$renderer3.push(
|
|
1180
|
-
|
|
1260
|
+
$$renderer3.push(`<!--[0--><span${$24.attr_class(`attn ${$24.stringify(attention[inst.id])}`, "svelte-r39acv")}${$24.attr("aria-label", attention[inst.id] === "waiting" ? "Claude is waiting for input" : "Claude finished")}></span>`);
|
|
1261
|
+
} else {
|
|
1262
|
+
$$renderer3.push("<!--[-1-->");
|
|
1263
|
+
}
|
|
1264
|
+
$$renderer3.push(`<!--]--></button> `);
|
|
1265
|
+
if (onstop) {
|
|
1266
|
+
$$renderer3.push(`<!--[0--><button type="button" class="tab-stop svelte-r39acv"${$24.attr("disabled", isStopping(inst.id), true)}${$24.attr("title", isStopping(inst.id) ? "Stopping\u2026" : `Stop ${inst.name}`)}${$24.attr("aria-label", isStopping(inst.id) ? "Stopping\u2026" : `Stop ${inst.name}`)}>`);
|
|
1267
|
+
Circle_stop($$renderer3, { size: 20 });
|
|
1268
|
+
$$renderer3.push(`<!----></button>`);
|
|
1181
1269
|
} else {
|
|
1182
1270
|
$$renderer3.push("<!--[-1-->");
|
|
1183
1271
|
}
|
|
1184
|
-
$$renderer3.push(`<!--]
|
|
1272
|
+
$$renderer3.push(`<!--]-->`);
|
|
1185
1273
|
}
|
|
1186
|
-
$$renderer3.push(`<!--]
|
|
1274
|
+
$$renderer3.push(`<!--]--></div>`);
|
|
1187
1275
|
}
|
|
1188
|
-
$$renderer3.push(`<!--]--></
|
|
1276
|
+
$$renderer3.push(`<!--]--></nav></div> `);
|
|
1189
1277
|
if (overflowing()) {
|
|
1190
|
-
$$renderer3.push(
|
|
1191
|
-
$$renderer3.push(`<button type="button" class="page trailing svelte-r39acv"${$24.attr("disabled", atEnd, true)} aria-label="Scroll tabs right">`);
|
|
1278
|
+
$$renderer3.push(`<!--[0--><button type="button" class="page trailing svelte-r39acv"${$24.attr("disabled", atEnd, true)} aria-label="Scroll tabs right">`);
|
|
1192
1279
|
Chevron_right($$renderer3, { size: 16 });
|
|
1193
1280
|
$$renderer3.push(`<!----></button>`);
|
|
1194
1281
|
} else {
|
|
@@ -1200,8 +1287,7 @@ function IdeBar($$renderer, $$props) {
|
|
|
1200
1287
|
}
|
|
1201
1288
|
$$renderer3.push(`<!--]--> <div class="right svelte-r39acv">`);
|
|
1202
1289
|
if (onreload) {
|
|
1203
|
-
$$renderer3.push(
|
|
1204
|
-
$$renderer3.push(`<button type="button" class="reload svelte-r39acv" title="Reload editor" aria-label="Reload editor">`);
|
|
1290
|
+
$$renderer3.push(`<!--[0--><button type="button" class="reload svelte-r39acv" title="Reload editor" aria-label="Reload editor">`);
|
|
1205
1291
|
Rotate_cw($$renderer3, { size: 18 });
|
|
1206
1292
|
$$renderer3.push(`<!----></button>`);
|
|
1207
1293
|
} else {
|
|
@@ -1213,6 +1299,16 @@ function IdeBar($$renderer, $$props) {
|
|
|
1213
1299
|
},
|
|
1214
1300
|
$$slots: { default: true }
|
|
1215
1301
|
});
|
|
1302
|
+
$$renderer2.push(`<!----> `);
|
|
1303
|
+
if (dropTarget) {
|
|
1304
|
+
$$renderer2.push(`<!--[0--><div class="drop-tip panel svelte-r39acv"${$24.attr_style("", {
|
|
1305
|
+
left: `${$24.stringify(tipLeft())}px`,
|
|
1306
|
+
top: `${$24.stringify(dropTarget.y)}px`
|
|
1307
|
+
})}>Drop to save into codebay-inbox/</div>`);
|
|
1308
|
+
} else {
|
|
1309
|
+
$$renderer2.push("<!--[-1-->");
|
|
1310
|
+
}
|
|
1311
|
+
$$renderer2.push(`<!--]-->`);
|
|
1216
1312
|
$24.bind_props($$props, { editingName });
|
|
1217
1313
|
});
|
|
1218
1314
|
}
|
|
@@ -1240,8 +1336,7 @@ function IdeLoader($$renderer, $$props) {
|
|
|
1240
1336
|
}
|
|
1241
1337
|
$$renderer2.push(`<!--]--></div> <div class="label svelte-w5e143">Loading ${$25.escape(isTerminal() ? "terminal" : "editor")}<span class="dot svelte-w5e143">.</span><span class="dot svelte-w5e143">.</span><span class="dot svelte-w5e143">.</span></div> `);
|
|
1242
1338
|
if (stalled) {
|
|
1243
|
-
$$renderer2.push(
|
|
1244
|
-
$$renderer2.push(`<div class="stalled svelte-w5e143"><p class="svelte-w5e143">Waiting for ${$25.escape(isTerminal() ? "the terminal" : "code-server")} to answer inside the container.</p> `);
|
|
1339
|
+
$$renderer2.push(`<!--[0--><div class="stalled svelte-w5e143"><p class="svelte-w5e143">Waiting for ${$25.escape(isTerminal() ? "the terminal" : "code-server")} to answer inside the container.</p> `);
|
|
1245
1340
|
if (onoverride) {
|
|
1246
1341
|
$$renderer2.push("<!--[0-->");
|
|
1247
1342
|
Button($$renderer2, {
|
|
@@ -1272,35 +1367,60 @@ import"svelte/internal/flags/async";
|
|
|
1272
1367
|
import * as $26 from "svelte/internal/server";
|
|
1273
1368
|
function Panel_right_open($$renderer, $$props) {
|
|
1274
1369
|
let { $$slots, $$events, ...props } = $$props;
|
|
1275
|
-
const
|
|
1276
|
-
|
|
1277
|
-
|
|
1278
|
-
|
|
1279
|
-
|
|
1280
|
-
|
|
1281
|
-
|
|
1282
|
-
|
|
1283
|
-
|
|
1370
|
+
const iconData = {
|
|
1371
|
+
name: "panel-right-open",
|
|
1372
|
+
size: 24,
|
|
1373
|
+
node: [
|
|
1374
|
+
[
|
|
1375
|
+
"rect",
|
|
1376
|
+
{ width: "18", height: "18", x: "3", y: "3", rx: "2" }
|
|
1377
|
+
],
|
|
1378
|
+
["path", { d: "M15 3v18" }],
|
|
1379
|
+
["path", { d: "m10 15-3-3 3-3" }]
|
|
1380
|
+
]
|
|
1381
|
+
};
|
|
1382
|
+
Icon($$renderer, $26.spread_props([props, { icon: iconData }]));
|
|
1284
1383
|
}
|
|
1285
1384
|
// node_modules/@lucide/svelte/dist/icons/panel-right-close.svelte
|
|
1286
1385
|
import"svelte/internal/flags/async";
|
|
1287
1386
|
import * as $27 from "svelte/internal/server";
|
|
1288
1387
|
function Panel_right_close($$renderer, $$props) {
|
|
1289
1388
|
let { $$slots, $$events, ...props } = $$props;
|
|
1290
|
-
const
|
|
1291
|
-
|
|
1292
|
-
|
|
1293
|
-
|
|
1294
|
-
|
|
1295
|
-
|
|
1296
|
-
|
|
1297
|
-
|
|
1298
|
-
|
|
1389
|
+
const iconData = {
|
|
1390
|
+
name: "panel-right-close",
|
|
1391
|
+
size: 24,
|
|
1392
|
+
node: [
|
|
1393
|
+
[
|
|
1394
|
+
"rect",
|
|
1395
|
+
{ width: "18", height: "18", x: "3", y: "3", rx: "2" }
|
|
1396
|
+
],
|
|
1397
|
+
["path", { d: "M15 3v18" }],
|
|
1398
|
+
["path", { d: "m8 9 3 3-3 3" }]
|
|
1399
|
+
]
|
|
1400
|
+
};
|
|
1401
|
+
Icon($$renderer, $27.spread_props([props, { icon: iconData }]));
|
|
1299
1402
|
}
|
|
1300
1403
|
// src/components/TerminalPane.svelte
|
|
1301
1404
|
import"svelte/internal/flags/async";
|
|
1302
1405
|
import * as $28 from "svelte/internal/server";
|
|
1303
1406
|
import { onMount } from "svelte";
|
|
1407
|
+
// src/lib/osc52.ts
|
|
1408
|
+
function decodeOsc52(data) {
|
|
1409
|
+
const sep = data.indexOf(";");
|
|
1410
|
+
if (sep === -1)
|
|
1411
|
+
return null;
|
|
1412
|
+
const payload = data.slice(sep + 1).replace(/\s+/g, "");
|
|
1413
|
+
if (payload === "" || payload === "?")
|
|
1414
|
+
return null;
|
|
1415
|
+
try {
|
|
1416
|
+
const bytes = Uint8Array.from(atob(payload), (c) => c.charCodeAt(0));
|
|
1417
|
+
return new TextDecoder().decode(bytes);
|
|
1418
|
+
} catch {
|
|
1419
|
+
return null;
|
|
1420
|
+
}
|
|
1421
|
+
}
|
|
1422
|
+
|
|
1423
|
+
// src/components/TerminalPane.svelte
|
|
1304
1424
|
function TerminalPane($$renderer, $$props) {
|
|
1305
1425
|
$$renderer.component(($$renderer2) => {
|
|
1306
1426
|
let { id, active, arg, focus = true, actions } = $$props;
|
|
@@ -1388,6 +1508,32 @@ function TerminalPane($$renderer, $$props) {
|
|
|
1388
1508
|
start();
|
|
1389
1509
|
}
|
|
1390
1510
|
}
|
|
1511
|
+
async function toClipboard(text) {
|
|
1512
|
+
if (!text)
|
|
1513
|
+
return;
|
|
1514
|
+
try {
|
|
1515
|
+
await navigator.clipboard.writeText(text);
|
|
1516
|
+
return;
|
|
1517
|
+
} catch {}
|
|
1518
|
+
const ta = document.createElement("textarea");
|
|
1519
|
+
ta.value = text;
|
|
1520
|
+
ta.setAttribute("aria-hidden", "true");
|
|
1521
|
+
ta.style.position = "fixed";
|
|
1522
|
+
ta.style.opacity = "0";
|
|
1523
|
+
document.body.appendChild(ta);
|
|
1524
|
+
ta.select();
|
|
1525
|
+
try {
|
|
1526
|
+
document.execCommand("copy");
|
|
1527
|
+
} catch {}
|
|
1528
|
+
ta.remove();
|
|
1529
|
+
if (active && focus)
|
|
1530
|
+
term?.focus();
|
|
1531
|
+
}
|
|
1532
|
+
function copySelection() {
|
|
1533
|
+
const sel = term?.getSelection();
|
|
1534
|
+
if (sel)
|
|
1535
|
+
toClipboard(sel);
|
|
1536
|
+
}
|
|
1391
1537
|
function fitSafe() {
|
|
1392
1538
|
if (el?.clientWidth > 0 && el?.clientHeight > 0) {
|
|
1393
1539
|
try {
|
|
@@ -1424,6 +1570,21 @@ function TerminalPane($$renderer, $$props) {
|
|
|
1424
1570
|
term.open(el);
|
|
1425
1571
|
applyTheme();
|
|
1426
1572
|
fitSafe();
|
|
1573
|
+
term.parser.registerOscHandler(52, (data) => {
|
|
1574
|
+
const text = decodeOsc52(data);
|
|
1575
|
+
if (text !== null)
|
|
1576
|
+
toClipboard(text);
|
|
1577
|
+
return true;
|
|
1578
|
+
});
|
|
1579
|
+
term.attachCustomKeyEventHandler((e) => {
|
|
1580
|
+
if (e.type !== "keydown" || !term?.hasSelection())
|
|
1581
|
+
return true;
|
|
1582
|
+
const isCopy = e.ctrlKey && (e.key === "Insert" || e.altKey && e.key.toLowerCase() === "c");
|
|
1583
|
+
if (!isCopy)
|
|
1584
|
+
return true;
|
|
1585
|
+
copySelection();
|
|
1586
|
+
return false;
|
|
1587
|
+
});
|
|
1427
1588
|
term.onData((d) => send(CMD_INPUT + d));
|
|
1428
1589
|
term.onResize(({ cols, rows }) => send(CMD_RESIZE + JSON.stringify({ columns: cols, rows })));
|
|
1429
1590
|
themeObs = new MutationObserver(applyTheme);
|
|
@@ -1434,8 +1595,10 @@ function TerminalPane($$renderer, $$props) {
|
|
|
1434
1595
|
})();
|
|
1435
1596
|
const sizeObs = new ResizeObserver(() => fitSafe());
|
|
1436
1597
|
sizeObs.observe(el);
|
|
1598
|
+
el.addEventListener("mouseup", copySelection);
|
|
1437
1599
|
return () => {
|
|
1438
1600
|
disposed = true;
|
|
1601
|
+
el.removeEventListener("mouseup", copySelection);
|
|
1439
1602
|
sizeObs.disconnect();
|
|
1440
1603
|
themeObs?.disconnect();
|
|
1441
1604
|
scheme.removeEventListener("change", onScheme);
|
|
@@ -1449,8 +1612,7 @@ function TerminalPane($$renderer, $$props) {
|
|
|
1449
1612
|
});
|
|
1450
1613
|
$$renderer2.push(`<div class="term svelte-ui3nvu"></div> <div class="overlay svelte-ui3nvu">`);
|
|
1451
1614
|
if (!connected) {
|
|
1452
|
-
$$renderer2.push(
|
|
1453
|
-
$$renderer2.push(`<span class="status svelte-ui3nvu">connecting\u2026</span>`);
|
|
1615
|
+
$$renderer2.push(`<!--[0--><span class="status svelte-ui3nvu">connecting\u2026</span>`);
|
|
1454
1616
|
} else {
|
|
1455
1617
|
$$renderer2.push("<!--[-1-->");
|
|
1456
1618
|
}
|
|
@@ -1523,8 +1685,7 @@ function TerminalSplit($$renderer, $$props) {
|
|
|
1523
1685
|
});
|
|
1524
1686
|
$$renderer2.push(`<!----></div> `);
|
|
1525
1687
|
if (mounted) {
|
|
1526
|
-
$$renderer2.push(
|
|
1527
|
-
$$renderer2.push(`<div${$29.attr_class("divider svelte-1ysvu88", undefined, { hidden: !open })} role="separator" aria-orientation="vertical" aria-label="Resize terminal panes"${$29.attr("aria-valuenow", Math.round(ratio))}${$29.attr("aria-valuemin", 20)}${$29.attr("aria-valuemax", 80)} tabindex="0"></div> <div${$29.attr_class("side svelte-1ysvu88", undefined, { hidden: !open })}${$29.attr_style("", { "flex-basis": `${$29.stringify(100 - ratio)}%` })}>`);
|
|
1688
|
+
$$renderer2.push(`<!--[0--><div${$29.attr_class("divider svelte-1ysvu88", undefined, { hidden: !open })} role="separator" aria-orientation="vertical" aria-label="Resize terminal panes"${$29.attr("aria-valuenow", Math.round(ratio))}${$29.attr("aria-valuemin", 20)}${$29.attr("aria-valuemax", 80)} tabindex="0"></div> <div${$29.attr_class("side svelte-1ysvu88", undefined, { hidden: !open })}${$29.attr_style("", { "flex-basis": `${$29.stringify(100 - ratio)}%` })}>`);
|
|
1528
1689
|
TerminalPane($$renderer2, {
|
|
1529
1690
|
id,
|
|
1530
1691
|
arg: "shell",
|
|
@@ -1553,6 +1714,18 @@ function AppShell($$renderer, $$props) {
|
|
|
1553
1714
|
let attention = Object.fromEntries(snapshot.map((i) => [i.id, i.attention]));
|
|
1554
1715
|
let editingId = null;
|
|
1555
1716
|
let editingName = "";
|
|
1717
|
+
const stopping = new SvelteSet;
|
|
1718
|
+
async function stopTab(id) {
|
|
1719
|
+
if (stopping.has(id))
|
|
1720
|
+
return;
|
|
1721
|
+
stopping.add(id);
|
|
1722
|
+
try {
|
|
1723
|
+
await apiPost(`/api/instances/${id}/stop`, undefined, "Failed to stop instance");
|
|
1724
|
+
} catch (err) {
|
|
1725
|
+
dist_default.error(err.message);
|
|
1726
|
+
stopping.delete(id);
|
|
1727
|
+
}
|
|
1728
|
+
}
|
|
1556
1729
|
function startRename(instance) {
|
|
1557
1730
|
editingId = instance.id;
|
|
1558
1731
|
editingName = instance.name;
|
|
@@ -1621,6 +1794,23 @@ function AppShell($$renderer, $$props) {
|
|
|
1621
1794
|
tick2().then(() => frames[target.id]?.contentWindow?.focus());
|
|
1622
1795
|
}
|
|
1623
1796
|
const framedTabIds = $30.derived(() => running().filter((i) => i.mode !== "terminal" && loadedFrames.has(i.id)).map((i) => i.id).join(" "));
|
|
1797
|
+
async function handleUpload(id, files) {
|
|
1798
|
+
for (const file of files) {
|
|
1799
|
+
try {
|
|
1800
|
+
const saved = await uploadFile(id, file);
|
|
1801
|
+
dist_default.success(`Saved ${saved.containerPath}`);
|
|
1802
|
+
navigator.clipboard.writeText(saved.containerPath).catch(() => {});
|
|
1803
|
+
} catch (err) {
|
|
1804
|
+
dist_default.error(err.message);
|
|
1805
|
+
}
|
|
1806
|
+
}
|
|
1807
|
+
}
|
|
1808
|
+
let dropping = false;
|
|
1809
|
+
function onDrop(e) {
|
|
1810
|
+
e.preventDefault();
|
|
1811
|
+
dropping = false;
|
|
1812
|
+
handleUpload(active(), filesFrom(e.dataTransfer));
|
|
1813
|
+
}
|
|
1624
1814
|
let $$settled = true;
|
|
1625
1815
|
let $$inner_renderer;
|
|
1626
1816
|
function $$render_inner($$renderer3) {
|
|
@@ -1632,8 +1822,11 @@ function AppShell($$renderer, $$props) {
|
|
|
1632
1822
|
active: active(),
|
|
1633
1823
|
attention,
|
|
1634
1824
|
editingId,
|
|
1825
|
+
stopping: [...stopping],
|
|
1635
1826
|
onreload: activeInstance() && activeInstance().mode !== "terminal" && mountable(active()) ? reloadActive : undefined,
|
|
1636
1827
|
onselect: (id) => navigate(`/ide/${id}`),
|
|
1828
|
+
onstop: stopTab,
|
|
1829
|
+
ondropfiles: livePreflight.uploadEnabled ? (id, files) => void handleUpload(id, files) : undefined,
|
|
1637
1830
|
onstartrename: startRename,
|
|
1638
1831
|
oncommitrename: commitRename,
|
|
1639
1832
|
oncancelrename: cancelRename,
|
|
@@ -1661,8 +1854,7 @@ function AppShell($$renderer, $$props) {
|
|
|
1661
1854
|
for (let $$index = 0, $$length = each_array.length;$$index < $$length; $$index++) {
|
|
1662
1855
|
let inst = each_array[$$index];
|
|
1663
1856
|
if (visited.has(inst.id)) {
|
|
1664
|
-
$$renderer3.push(
|
|
1665
|
-
$$renderer3.push(`<div${$30.attr_class("pane svelte-1duc7gd", undefined, { active: inst.id === active() })} role="tabpanel"${$30.attr("aria-labelledby", `tab-${$30.stringify(inst.id)}`)}>`);
|
|
1857
|
+
$$renderer3.push(`<!--[0--><div${$30.attr_class("pane svelte-1duc7gd", undefined, { active: inst.id === active() })} role="region"${$30.attr("aria-labelledby", `tab-${$30.stringify(inst.id)}`)}>`);
|
|
1666
1858
|
if (mountable(inst.id)) {
|
|
1667
1859
|
$$renderer3.push("<!--[0-->");
|
|
1668
1860
|
if (inst.mode === "terminal") {
|
|
@@ -1673,8 +1865,7 @@ function AppShell($$renderer, $$props) {
|
|
|
1673
1865
|
initialOpen: inst.terminal_split === 1
|
|
1674
1866
|
});
|
|
1675
1867
|
} else {
|
|
1676
|
-
$$renderer3.push(
|
|
1677
|
-
$$renderer3.push(`<iframe${$30.attr("src", ideUrl(inst))}${$30.attr("title", inst.name)} class="svelte-1duc7gd" onload="this.__e=event"></iframe>`);
|
|
1868
|
+
$$renderer3.push(`<!--[-1--><iframe${$30.attr("src", ideUrl(inst))}${$30.attr("title", inst.name)} allow="clipboard-read; clipboard-write" class="svelte-1duc7gd" onload="this.__e=event"></iframe>`);
|
|
1678
1869
|
}
|
|
1679
1870
|
$$renderer3.push(`<!--]-->`);
|
|
1680
1871
|
} else {
|
|
@@ -1694,6 +1885,13 @@ function AppShell($$renderer, $$props) {
|
|
|
1694
1885
|
} else {
|
|
1695
1886
|
$$renderer3.push("<!--[-1-->");
|
|
1696
1887
|
}
|
|
1888
|
+
$$renderer3.push(`<!--]--> `);
|
|
1889
|
+
if (dropping && inst.id === active() && inst.mode === "terminal") {
|
|
1890
|
+
$$renderer3.push("<!--[0-->");
|
|
1891
|
+
DropZone($$renderer3, { ondrop: onDrop });
|
|
1892
|
+
} else {
|
|
1893
|
+
$$renderer3.push("<!--[-1-->");
|
|
1894
|
+
}
|
|
1697
1895
|
$$renderer3.push(`<!--]--></div>`);
|
|
1698
1896
|
} else {
|
|
1699
1897
|
$$renderer3.push("<!--[-1-->");
|
|
@@ -1702,8 +1900,7 @@ function AppShell($$renderer, $$props) {
|
|
|
1702
1900
|
}
|
|
1703
1901
|
$$renderer3.push(`<!--]--> `);
|
|
1704
1902
|
if (onIde() && running().length === 0) {
|
|
1705
|
-
$$renderer3.push(
|
|
1706
|
-
$$renderer3.push(`<div class="empty svelte-1duc7gd">No running instances.</div>`);
|
|
1903
|
+
$$renderer3.push(`<!--[0--><div class="empty svelte-1duc7gd">No running instances.</div>`);
|
|
1707
1904
|
} else {
|
|
1708
1905
|
$$renderer3.push("<!--[-1-->");
|
|
1709
1906
|
}
|
|
@@ -1725,28 +1922,30 @@ function App($$renderer, $$props) {
|
|
|
1725
1922
|
$$renderer.component(($$renderer2) => {
|
|
1726
1923
|
let { preflight, initialPath, snapshot, pet, filter } = $$props;
|
|
1727
1924
|
if (true) {
|
|
1728
|
-
let failed = function($$renderer3, error) {
|
|
1729
|
-
$$renderer3.push(`<mochi-island-failure data-component="AppShell"${$31.attr("data-message", error.message)}></mochi-island-failure>`);
|
|
1730
|
-
};
|
|
1731
1925
|
$$renderer2.push("<!--[0-->");
|
|
1732
|
-
|
|
1733
|
-
$$renderer3
|
|
1734
|
-
|
|
1735
|
-
|
|
1736
|
-
|
|
1737
|
-
|
|
1738
|
-
|
|
1739
|
-
|
|
1740
|
-
|
|
1741
|
-
|
|
1742
|
-
|
|
1743
|
-
|
|
1744
|
-
|
|
1745
|
-
|
|
1746
|
-
|
|
1747
|
-
|
|
1748
|
-
|
|
1749
|
-
|
|
1926
|
+
{
|
|
1927
|
+
let failed = function($$renderer3, error) {
|
|
1928
|
+
$$renderer3.push(`<mochi-island-failure data-component="AppShell"${$31.attr("data-message", error.message)}></mochi-island-failure>`);
|
|
1929
|
+
};
|
|
1930
|
+
$$renderer2.boundary({ failed }, ($$renderer3) => {
|
|
1931
|
+
$$renderer3.push(`<!--[-->`);
|
|
1932
|
+
{
|
|
1933
|
+
HydratableBoundary($$renderer3, {
|
|
1934
|
+
children: ($$renderer4) => {
|
|
1935
|
+
$$renderer4.push(`<mochi-hydratable-island component-name="AppShell_2rtnxn6pgp2rh" component-url="__MOCHI_COMPONENT_URL__AppShell_2rtnxn6pgp2rh__"${$31.attr("props-ref", emitIslandProps({ preflight, initialPath, snapshot, pet, filter }))}>`);
|
|
1936
|
+
$$renderer4.push(`<!--[-->`);
|
|
1937
|
+
{
|
|
1938
|
+
AppShell($$renderer4, { preflight, initialPath, snapshot, pet, filter });
|
|
1939
|
+
}
|
|
1940
|
+
$$renderer4.push(`<!--]-->`);
|
|
1941
|
+
$$renderer4.push(`</mochi-hydratable-island>`);
|
|
1942
|
+
},
|
|
1943
|
+
$$slots: { default: true }
|
|
1944
|
+
});
|
|
1945
|
+
}
|
|
1946
|
+
$$renderer3.push(`<!--]-->`);
|
|
1947
|
+
});
|
|
1948
|
+
}
|
|
1750
1949
|
}
|
|
1751
1950
|
$$renderer2.push(`<!--]-->`);
|
|
1752
1951
|
});
|