codebay 0.16.0 → 0.16.2

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.
@@ -3,7 +3,7 @@
3
3
  "assetPrefix": "/_mochi",
4
4
  "bootstrapUrl": "/_mochi/client/HydratableIsland-6y9p903x.js",
5
5
  "componentEntryUrls": {
6
- "AppShell_2rtnxn6pgp2rh": "/_mochi/client/_hydrate-AppShell_2rtnxn6pgp2rh-nv6yzk0x.js",
6
+ "AppShell_2rtnxn6pgp2rh": "/_mochi/client/_hydrate-AppShell_2rtnxn6pgp2rh-hw072vmr.js",
7
7
  "InstanceView_2ma45l9bybfhl": "/_mochi/client/_hydrate-InstanceView_2ma45l9bybfhl-vjt4jscf.js",
8
8
  "AvatarsView_257s9yq1wwr4f": "/_mochi/client/_hydrate-AvatarsView_257s9yq1wwr4f-ry83ck8a.js",
9
9
  "SettingsView_8hmarwmf8onq": "/_mochi/client/_hydrate-SettingsView_8hmarwmf8onq-1jdrk8x6.js"
@@ -22,8 +22,8 @@
22
22
  "src/components/IdeLoader.svelte": "/_mochi/css/IdeLoader-26rlko8e00j3g.css",
23
23
  "src/components/DropZone.svelte": "/_mochi/css/DropZone-1zeitd761uwyd.css",
24
24
  "node_modules/svelte-french-toast/dist/components/CheckmarkIcon.svelte": "/_mochi/css/CheckmarkIcon-3qlazj2oc50jc.css",
25
- "node_modules/svelte-french-toast/dist/components/Toaster.svelte": "/_mochi/css/Toaster-kk60j193854n.css",
26
25
  "node_modules/svelte-french-toast/dist/components/ToastIcon.svelte": "/_mochi/css/ToastIcon-2z5wrkc95khg0.css",
26
+ "node_modules/svelte-french-toast/dist/components/Toaster.svelte": "/_mochi/css/Toaster-kk60j193854n.css",
27
27
  "node_modules/svelte-french-toast/dist/components/LoaderIcon.svelte": "/_mochi/css/LoaderIcon-soq5wt3p05ye.css",
28
28
  "node_modules/svelte-french-toast/dist/components/ErrorIcon.svelte": "/_mochi/css/ErrorIcon-2x0tzsqxskw28.css",
29
29
  "node_modules/svelte-french-toast/dist/components/ToastBar.svelte": "/_mochi/css/ToastBar-3havgkmtofntq.css",
@@ -31,22 +31,22 @@
31
31
  "src/components/AgentLogBox.svelte": "/_mochi/css/AgentLogBox-38adby5iygny7.css",
32
32
  "src/components/StatusBadge.svelte": "/_mochi/css/StatusBadge-2eisdtnrsnfdc.css",
33
33
  "src/components/HealthBox.svelte": "/_mochi/css/HealthBox-r0giuhjn2wj4.css",
34
- "src/components/AvatarEditor.svelte": "/_mochi/css/AvatarEditor-1mjvec6bwdkv8.css",
35
34
  "src/components/AppBar.svelte": "/_mochi/css/AppBar-1gtu2me3fni8e.css",
35
+ "src/components/AvatarEditor.svelte": "/_mochi/css/AvatarEditor-1mjvec6bwdkv8.css",
36
36
  "src/components/Avatar.svelte": "/_mochi/css/Avatar-3pi30db6ozvf0.css",
37
37
  "src/components/Button.svelte": "/_mochi/css/Button-208u50wkms8ya.css",
38
38
  "src/components/ThemePicker.svelte": "/_mochi/css/ThemePicker-3fw4synubier0.css",
39
39
  "src/components/CoinButton.svelte": "/_mochi/css/CoinButton-2727devjtsn10.css",
40
40
  "src/components/TerminalPane.svelte": "/_mochi/css/TerminalPane-2ywc86rhtmr9l.css",
41
- "src/components/TopBar.svelte": "/_mochi/css/TopBar-2y76zxwehrfos.css",
41
+ "src/components/FolderBrowser.svelte": "/_mochi/css/FolderBrowser-i0uj58dph27f.css",
42
42
  "src/components/InstanceCard.svelte": "/_mochi/css/InstanceCard-3vxozrp9uoads.css",
43
+ "src/components/TopBar.svelte": "/_mochi/css/TopBar-2y76zxwehrfos.css",
43
44
  "node_modules/svelte-french-toast/dist/components/ToastMessage.svelte": "/_mochi/css/ToastMessage-2jfwb2og2lfa8.css",
44
- "src/components/FolderBrowser.svelte": "/_mochi/css/FolderBrowser-i0uj58dph27f.css",
45
45
  "node_modules/svelte-french-toast/dist/components/ToastWrapper.svelte": "/_mochi/css/ToastWrapper-1fbnym10rm2nv.css",
46
- "src/components/Brand.svelte": "/_mochi/css/Brand-1bh2b800g5vrn.css",
47
- "src/components/InstanceFilter.svelte": "/_mochi/css/InstanceFilter-2vglmyy0yrbbc.css",
48
46
  "src/components/SettingsCog.svelte": "/_mochi/css/SettingsCog-1jdeprd3ilczz.css",
49
47
  "src/components/CredMenu.svelte": "/_mochi/css/CredMenu-7qowd1oxujet.css",
48
+ "src/components/InstanceFilter.svelte": "/_mochi/css/InstanceFilter-2vglmyy0yrbbc.css",
49
+ "src/components/Brand.svelte": "/_mochi/css/Brand-1bh2b800g5vrn.css",
50
50
  "src/components/PortsBox.svelte": "/_mochi/css/PortsBox-1t25b5yg7jva3.css",
51
51
  "src/components/BranchBox.svelte": "/_mochi/css/BranchBox-1yqu1q2mgnjwz.css"
52
52
  },
@@ -64,8 +64,8 @@
64
64
  "/_mochi/css/IdeLoader-26rlko8e00j3g.css": "svelte-css/IdeLoader-26rlko8e00j3g.css",
65
65
  "/_mochi/css/DropZone-1zeitd761uwyd.css": "svelte-css/DropZone-1zeitd761uwyd.css",
66
66
  "/_mochi/css/CheckmarkIcon-3qlazj2oc50jc.css": "svelte-css/CheckmarkIcon-3qlazj2oc50jc.css",
67
- "/_mochi/css/Toaster-kk60j193854n.css": "svelte-css/Toaster-kk60j193854n.css",
68
67
  "/_mochi/css/ToastIcon-2z5wrkc95khg0.css": "svelte-css/ToastIcon-2z5wrkc95khg0.css",
68
+ "/_mochi/css/Toaster-kk60j193854n.css": "svelte-css/Toaster-kk60j193854n.css",
69
69
  "/_mochi/css/LoaderIcon-soq5wt3p05ye.css": "svelte-css/LoaderIcon-soq5wt3p05ye.css",
70
70
  "/_mochi/css/ErrorIcon-2x0tzsqxskw28.css": "svelte-css/ErrorIcon-2x0tzsqxskw28.css",
71
71
  "/_mochi/css/ToastBar-3havgkmtofntq.css": "svelte-css/ToastBar-3havgkmtofntq.css",
@@ -73,22 +73,22 @@
73
73
  "/_mochi/css/AgentLogBox-38adby5iygny7.css": "svelte-css/AgentLogBox-38adby5iygny7.css",
74
74
  "/_mochi/css/StatusBadge-2eisdtnrsnfdc.css": "svelte-css/StatusBadge-2eisdtnrsnfdc.css",
75
75
  "/_mochi/css/HealthBox-r0giuhjn2wj4.css": "svelte-css/HealthBox-r0giuhjn2wj4.css",
76
- "/_mochi/css/AvatarEditor-1mjvec6bwdkv8.css": "svelte-css/AvatarEditor-1mjvec6bwdkv8.css",
77
76
  "/_mochi/css/AppBar-1gtu2me3fni8e.css": "svelte-css/AppBar-1gtu2me3fni8e.css",
77
+ "/_mochi/css/AvatarEditor-1mjvec6bwdkv8.css": "svelte-css/AvatarEditor-1mjvec6bwdkv8.css",
78
78
  "/_mochi/css/Avatar-3pi30db6ozvf0.css": "svelte-css/Avatar-3pi30db6ozvf0.css",
79
79
  "/_mochi/css/Button-208u50wkms8ya.css": "svelte-css/Button-208u50wkms8ya.css",
80
80
  "/_mochi/css/ThemePicker-3fw4synubier0.css": "svelte-css/ThemePicker-3fw4synubier0.css",
81
81
  "/_mochi/css/CoinButton-2727devjtsn10.css": "svelte-css/CoinButton-2727devjtsn10.css",
82
82
  "/_mochi/css/TerminalPane-2ywc86rhtmr9l.css": "svelte-css/TerminalPane-2ywc86rhtmr9l.css",
83
- "/_mochi/css/TopBar-2y76zxwehrfos.css": "svelte-css/TopBar-2y76zxwehrfos.css",
83
+ "/_mochi/css/FolderBrowser-i0uj58dph27f.css": "svelte-css/FolderBrowser-i0uj58dph27f.css",
84
84
  "/_mochi/css/InstanceCard-3vxozrp9uoads.css": "svelte-css/InstanceCard-3vxozrp9uoads.css",
85
+ "/_mochi/css/TopBar-2y76zxwehrfos.css": "svelte-css/TopBar-2y76zxwehrfos.css",
85
86
  "/_mochi/css/ToastMessage-2jfwb2og2lfa8.css": "svelte-css/ToastMessage-2jfwb2og2lfa8.css",
86
- "/_mochi/css/FolderBrowser-i0uj58dph27f.css": "svelte-css/FolderBrowser-i0uj58dph27f.css",
87
87
  "/_mochi/css/ToastWrapper-1fbnym10rm2nv.css": "svelte-css/ToastWrapper-1fbnym10rm2nv.css",
88
- "/_mochi/css/Brand-1bh2b800g5vrn.css": "svelte-css/Brand-1bh2b800g5vrn.css",
89
- "/_mochi/css/InstanceFilter-2vglmyy0yrbbc.css": "svelte-css/InstanceFilter-2vglmyy0yrbbc.css",
90
88
  "/_mochi/css/SettingsCog-1jdeprd3ilczz.css": "svelte-css/SettingsCog-1jdeprd3ilczz.css",
91
89
  "/_mochi/css/CredMenu-7qowd1oxujet.css": "svelte-css/CredMenu-7qowd1oxujet.css",
90
+ "/_mochi/css/InstanceFilter-2vglmyy0yrbbc.css": "svelte-css/InstanceFilter-2vglmyy0yrbbc.css",
91
+ "/_mochi/css/Brand-1bh2b800g5vrn.css": "svelte-css/Brand-1bh2b800g5vrn.css",
92
92
  "/_mochi/css/PortsBox-1t25b5yg7jva3.css": "svelte-css/PortsBox-1t25b5yg7jva3.css",
93
93
  "/_mochi/css/BranchBox-1yqu1q2mgnjwz.css": "svelte-css/BranchBox-1yqu1q2mgnjwz.css",
94
94
  "/_mochi/import-css/index-0nwv3654.css": "import-css/index-0nwv3654.css",
@@ -105,7 +105,7 @@
105
105
  "/_mochi/client/chunk-3jqc40sp.js": "svelte-client/chunk-3jqc40sp.js",
106
106
  "/_mochi/client/chunk-3pgw6t5j.js": "svelte-client/chunk-3pgw6t5j.js",
107
107
  "/_mochi/client/chunk-sxcr9gzp.js": "svelte-client/chunk-sxcr9gzp.js",
108
- "/_mochi/client/_hydrate-AppShell_2rtnxn6pgp2rh-nv6yzk0x.js": "svelte-client/_hydrate-AppShell_2rtnxn6pgp2rh-nv6yzk0x.js",
108
+ "/_mochi/client/_hydrate-AppShell_2rtnxn6pgp2rh-hw072vmr.js": "svelte-client/_hydrate-AppShell_2rtnxn6pgp2rh-hw072vmr.js",
109
109
  "/_mochi/client/_hydrate-InstanceView_2ma45l9bybfhl-vjt4jscf.js": "svelte-client/_hydrate-InstanceView_2ma45l9bybfhl-vjt4jscf.js",
110
110
  "/_mochi/client/_hydrate-AvatarsView_257s9yq1wwr4f-ry83ck8a.js": "svelte-client/_hydrate-AvatarsView_257s9yq1wwr4f-ry83ck8a.js",
111
111
  "/_mochi/client/_hydrate-SettingsView_8hmarwmf8onq-1jdrk8x6.js": "svelte-client/_hydrate-SettingsView_8hmarwmf8onq-1jdrk8x6.js",
@@ -129,7 +129,7 @@
129
129
  ]
130
130
  },
131
131
  "src/pages/App.svelte": {
132
- "ssrModule": "svelte-compile/App-8mpgrxza.server.js",
132
+ "ssrModule": "svelte-compile/App-c6ss9eb1.server.js",
133
133
  "hydratables": [
134
134
  {
135
135
  "name": "AppShell_2rtnxn6pgp2rh",
@@ -997,8 +997,8 @@
997
997
  "imports": []
998
998
  },
999
999
  {
1000
- "name": "_hydrate-AppShell_2rtnxn6pgp2rh-nv6yzk0x.js",
1001
- "size": 57321,
1000
+ "name": "_hydrate-AppShell_2rtnxn6pgp2rh-hw072vmr.js",
1001
+ "size": 57428,
1002
1002
  "inputs": [
1003
1003
  {
1004
1004
  "path": "src/components/AppShell.svelte",
@@ -1018,7 +1018,7 @@
1018
1018
  },
1019
1019
  {
1020
1020
  "path": "src/components/DashboardView.svelte",
1021
- "size": 4238
1021
+ "size": 4265
1022
1022
  },
1023
1023
  {
1024
1024
  "path": "src/components/TerminalPane.svelte",
@@ -1029,12 +1029,12 @@
1029
1029
  "size": 2425
1030
1030
  },
1031
1031
  {
1032
- "path": "src/components/CredMenu.svelte",
1033
- "size": 1782
1032
+ "path": "src/components/TopBar.svelte",
1033
+ "size": 1840
1034
1034
  },
1035
1035
  {
1036
- "path": "src/components/TopBar.svelte",
1037
- "size": 1760
1036
+ "path": "src/components/CredMenu.svelte",
1037
+ "size": 1782
1038
1038
  },
1039
1039
  {
1040
1040
  "path": "node_modules/svelte/src/reactivity/url.js",
@@ -0,0 +1,2 @@
1
+ import{a as ai,b as Mi,c as Ji,d as Ti,e as Ct,f as Zi,h as Ui}from"/_mochi/client/chunk-jm3ge348.js";import{j as ht,k as Ot,n as Ri,p as Lt,q as Qi}from"/_mochi/client/chunk-3cxaw5hr.js";import{D as Yi,v as ui,w as vt,x as ei,y as Ue,z as bi}from"/_mochi/client/chunk-bhseezf3.js";import{M as ct,N as dt,O as Ne,P as Di}from"/_mochi/client/chunk-7g3xt6ez.js";import{Q as se,R as It,S as nt,V as Hi,W as lt,X as Gi}from"/_mochi/client/chunk-3jqc40sp.js";import{$ as s,Aa as mt,Ba as At,Ca as e,Fa as Oi,Ga as Ve,Ha as Y,Ia as We,Ja as u,La as Ae,Ma as Et,Na as d,Oa as qt,Pa as q,Qa as b,Sa as Ai,Ta as ze,Va as Wi,Wa as zi,Y as Bi,Za as xe,_a as yt,aa as Se,ab as it,db as X,ea as ge,fa as ue,fb as at,ga as Vt,gb as Pi,ha as C,hb as Qe,ib as pi,ja as Mt,ka as E,ma as r,na as De,oa as pe,ob as ce,pb as de,qa as m,qb as Le,ra as be,rb as Ki,sa as re,ta as c,ua as we,ub as Ni,wb as ki,xa as P,ya as kt,za as Xt}from"/_mochi/client/chunk-3pgw6t5j.js";import{xb as Vi}from"/_mochi/client/chunk-sxcr9gzp.js";var hi=!1;class jt extends Date{#e=E(super.getTime());#t=new Map;#i=kt;constructor(...i){super(...i);if(!hi)this.#a()}#a(){hi=!0;var i=jt.prototype,t=Date.prototype,a=Object.getOwnPropertyNames(t);for(let l of a){if(l.startsWith("get")||l.startsWith("to")||l==="valueOf")i[l]=function(...f){if(f.length>0)return e(this.#e),t[l].apply(this,f);var x=this.#t.get(l);if(x===void 0){let v=kt;Xt(this.#i),x=C(()=>{return e(this.#e),t[l].apply(this,f)}),this.#t.set(l,x),Xt(v)}return e(x)};if(l.startsWith("set"))i[l]=function(...f){var x=t[l].apply(this,f);return r(this.#e,t.getTime.call(this)),x}}}}var ji=["forEach","isDisjointFrom","isSubsetOf","isSupersetOf"],$i=["difference","intersection","symmetricDifference","union"],xi=!1;class je extends Set{#e=new Map;#t=E(0);#i=E(0);#a=mt||-1;constructor(i){super();if(i){for(var t of i)super.add(t);this.#i.v=super.size}if(!xi)this.#r()}#l(i){return mt===this.#a?E(i):Mt(i)}#r(){xi=!0;var i=je.prototype,t=Set.prototype;for(let a of ji)i[a]=function(...l){return e(this.#t),t[a].apply(this,l)};for(let a of $i)i[a]=function(...l){e(this.#t);var f=t[a].apply(this,l);return new je(f)}}has(i){var t=super.has(i),a=this.#e,l=a.get(i);if(l===void 0){if(!t)return e(this.#t),!1;l=this.#l(!0),a.set(i,l)}return e(l),t}add(i){if(!super.has(i))super.add(i),r(this.#i,super.size),De(this.#t);return this}delete(i){var t=super.delete(i),a=this.#e,l=a.get(i);if(l!==void 0)a.delete(i),r(l,!1);if(t)r(this.#i,super.size),De(this.#t);return t}clear(){if(super.size===0)return;super.clear();var i=this.#e;for(var t of i.values())r(t,!1);i.clear(),r(this.#i,0),De(this.#t)}keys(){return this.values()}values(){return e(this.#t),super.values()}entries(){return e(this.#t),super.entries()}[Symbol.iterator](){return this.keys()}get size(){return e(this.#i)}}class wi extends Map{#e=new Map;#t=E(0);#i=E(0);#a=mt||-1;constructor(i){super();if(i){for(var[t,a]of i)super.set(t,a);this.#i.v=super.size}}#l(i){return mt===this.#a?E(i):Mt(i)}has(i){var t=this.#e,a=t.get(i);if(a===void 0)if(super.has(i))a=this.#l(0),t.set(i,a);else return e(this.#t),!1;return e(a),!0}forEach(i,t){this.#r(),super.forEach(i,t)}get(i){var t=this.#e,a=t.get(i);if(a===void 0)if(super.has(i))a=this.#l(0),t.set(i,a);else{e(this.#t);return}return e(a),super.get(i)}getOrInsert(i,t){if(!super.has(i))this.set(i,t);return this.get(i)}getOrInsertComputed(i,t){if(!super.has(i))this.set(i,t(i));return this.get(i)}set(i,t){var a=this.#e,l=a.get(i),f=super.get(i),x=super.set(i,t),v=this.#t;if(l===void 0)l=this.#l(0),a.set(i,l),r(this.#i,super.size),De(v);else if(f!==t){De(l);var y=v.reactions===null?null:new Set(v.reactions),M=y===null||!l.reactions?.every((O)=>y.has(O));if(M)De(v)}return x}delete(i){var t=this.#e,a=t.get(i),l=super.delete(i);if(a!==void 0)t.delete(i),r(a,-1);if(l)r(this.#i,super.size),De(this.#t);return l}clear(){if(super.size===0)return;super.clear();var i=this.#e;r(this.#i,0);for(var t of i.values())r(t,-1);De(this.#t),i.clear()}#r(){e(this.#t);var i=this.#e;if(this.#i.v!==i.size){for(var t of super.keys())if(!i.has(t)){var a=this.#l(0);i.set(t,a)}}for([,a]of this.#e)e(a)}keys(){return e(this.#t),super.keys()}values(){return this.#r(),super.values()}entries(){return this.#r(),super.entries()}[Symbol.iterator](){return this.entries()}get size(){return e(this.#i),super.size}}var pt=Symbol("replace");class zt extends URLSearchParams{#e=E(0);#t=Si();#i=!1;#a(){if(!this.#t||this.#i)return;this.#i=!0;let i=this.toString();this.#t.search=i&&`?${i}`,this.#i=!1}[pt](i){if(this.#i)return;if(i.toString()===super.toString())return;this.#i=!0;for(let t of[...super.keys()])super.delete(t);for(let[t,a]of i)super.append(t,a);De(this.#e),this.#i=!1}append(i,t){super.append(i,t),this.#a(),De(this.#e)}delete(i,t){var a=super.has(i,t);if(super.delete(i,t),a)this.#a(),De(this.#e)}get(i){return e(this.#e),super.get(i)}getAll(i){return e(this.#e),super.getAll(i)}has(i,t){return e(this.#e),super.has(i,t)}keys(){return e(this.#e),super.keys()}forEach(i,t){e(this.#e),super.forEach(i,t)}set(i,t){var a=super.getAll(i);super.set(i,t);var l=super.getAll(i);if(a.length!==l.length||a.some((f,x)=>f!==l[x]))this.#a(),De(this.#e)}sort(){super.sort(),this.#a(),De(this.#e)}toString(){return e(this.#e),super.toString()}values(){return e(this.#e),super.values()}entries(){return e(this.#e),super.entries()}[Symbol.iterator](){return this.entries()}get size(){return e(this.#e),super.size}}var $t=null;function Si(){return $t}class Ii extends URL{#e=E(super.protocol);#t=E(super.username);#i=E(super.password);#a=E(super.hostname);#l=E(super.port);#r=E(super.pathname);#f=E(super.hash);#n=E(super.search);#c;constructor(i,t){i=new URL(i,t);super(i);$t=this,this.#c=new zt(i.searchParams),$t=null}get hash(){return e(this.#f)}set hash(i){super.hash=i,r(this.#f,super.hash)}get host(){return e(this.#a),e(this.#l),super.host}set host(i){super.host=i,r(this.#a,super.hostname),r(this.#l,super.port)}get hostname(){return e(this.#a)}set hostname(i){super.hostname=i,r(this.#a,super.hostname)}get href(){return e(this.#e),e(this.#t),e(this.#i),e(this.#a),e(this.#l),e(this.#r),e(this.#f),e(this.#n),super.href}set href(i){super.href=i,r(this.#e,super.protocol),r(this.#t,super.username),r(this.#i,super.password),r(this.#a,super.hostname),r(this.#l,super.port),r(this.#r,super.pathname),r(this.#f,super.hash),r(this.#n,super.search),this.#c[pt](super.searchParams)}get password(){return e(this.#i)}set password(i){super.password=i,r(this.#i,super.password)}get pathname(){return e(this.#r)}set pathname(i){super.pathname=i,r(this.#r,super.pathname)}get port(){return e(this.#l)}set port(i){super.port=i,r(this.#l,super.port)}get protocol(){return e(this.#e)}set protocol(i){super.protocol=i,r(this.#e,super.protocol),r(this.#l,super.port)}get search(){return e(this.#n)}set search(i){super.search=i,r(this.#n,super.search),this.#c[pt](super.searchParams)}get username(){return e(this.#t)}set username(i){super.username=i,r(this.#t,super.username)}get origin(){return e(this.#e),e(this.#a),e(this.#l),super.origin}get searchParams(){return this.#c}toString(){return this.href}toJSON(){return this.href}}class Ei{#e;#t;constructor(i,t){this.#e=i,this.#t=qt(t)}get current(){return this.#t(),this.#e()}}function _i(i,t){return i===9?t-1:i-1}function Nt(i,t,a){if(a<=0)return null;let l=i<0||i>=a?0:i;switch(t){case"ArrowRight":return(l+1)%a;case"ArrowLeft":return(l-1+a)%a;case"Home":return 0;case"End":return a-1;default:{if(!/^[1-9]$/.test(t))return null;let f=_i(Number(t),a);return f<a?f:null}}}var yi=/^[A-Za-z0-9._-]+$/;function ea(i){let t=i.trim();if(!t)return null;let a,l,f=t.match(/^[A-Za-z0-9._-]+@([A-Za-z0-9.-]+):(.+)$/);if(f)a=f[1],l=f[2];else if(/^[a-z][a-z0-9+.-]*:\/\//i.test(t)){let M;try{M=new URL(t)}catch{return null}if(M.protocol!=="http:"&&M.protocol!=="https:"&&M.protocol!=="ssh:")return null;a=M.hostname,l=M.pathname}else{let M=t.match(/^([A-Za-z0-9-]+\.[A-Za-z0-9.-]+)\/(.+)$/);if(!M)return null;a=M[1],l=M[2]}if(!a||!l)return null;let x=l.replace(/\.git$/i,"").split("/").filter(Boolean),[v,y]=x;if(!v||!y||!yi.test(v)||!yi.test(y))return null;return{host:a,owner:v,repo:y,cloneUrl:`https://${a}/${v}/${y}.git`}}function _t(i){return ea(i)!==null}var Ci="::drives",Li="This PC";var ta=new Set(["$$slots","$$events","$$legacy"]);function Pt(i,t){let a=ce(t,ta),l={name:"folder-clock",size:24,node:[["path",{d:"M16 14v2.2l1.6 1"}],["path",{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"}],["circle",{cx:"16",cy:"16",r:"6"}]]};se(i,de(()=>a,{get icon(){return l}}))}var ia=new Set(["$$slots","$$events","$$legacy"]);function gt(i,t){let a=ce(t,ia),l={name:"git-branch",size:24,node:[["path",{d:"M15 6a9 9 0 0 0-9 9V3"}],["circle",{cx:"18",cy:"6",r:"3"}],["circle",{cx:"6",cy:"18",r:"3"}]]};se(i,de(()=>a,{get icon(){return l}}))}var aa=new Set(["$$slots","$$events","$$legacy"]);function Tt(i,t){let a=ce(t,aa),l={name:"arrow-up",size:24,node:[["path",{d:"m5 12 7-7 7 7"}],["path",{d:"M12 19V5"}]]};se(i,de(()=>a,{get icon(){return l}}))}var la=new Set(["$$slots","$$events","$$legacy"]);function Dt(i,t){let a=ce(t,la),l={name:"folder",size:24,node:[["path",{d:"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z"}]]};se(i,de(()=>a,{get icon(){return l}}))}var ra=new Set(["$$slots","$$events","$$legacy"]);function ut(i,t){let a=ce(t,ra),l={name:"triangle-alert",size:24,node:[["path",{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"}],["path",{d:"M12 9v4"}],["path",{d:"M12 17h.01"}]],aliases:["alert-triangle"]};se(i,de(()=>a,{get icon(){return l}}))}var fa=u('<div class="recent-row svelte-oq97c4"><button class="recent-pick svelte-oq97c4"><span class="icon svelte-oq97c4"><!></span> <span class="recent-text svelte-oq97c4"><span class="recent-name svelte-oq97c4"> </span> <span class="recent-path svelte-oq97c4"> </span></span></button> <button class="recent-x svelte-oq97c4" title="Remove from history"><!></button></div>'),na=u('<button class="recent-toggle svelte-oq97c4"> </button>'),ca=u('<div class="recent svelte-oq97c4"><div class="recent-label svelte-oq97c4">Recent</div> <!> <!></div>'),da=u('<div class="muted svelte-oq97c4">Loading…</div>'),sa=u('<div class="muted err svelte-oq97c4"> </div>'),oa=u('<div class="row svelte-oq97c4"><button class="nav svelte-oq97c4"><span class="icon svelte-oq97c4"><!></span> <span class="ename svelte-oq97c4">..</span></button></div>'),ma=u('<div class="muted svelte-oq97c4"> </div>'),ga=u('<span class="badge svelte-oq97c4">devcontainer</span>'),ua=u('<div><button class="nav svelte-oq97c4"><span class="icon svelte-oq97c4"><!></span> <span class="ename svelte-oq97c4"> </span> <!></button> <button class="pick-inline svelte-oq97c4">Select</button></div>'),va=u("<!> <!> <!>",1),ha=u(`<div class="warn svelte-oq97c4"><!> <span>No <code class="svelte-oq97c4">devcontainer.json</code> in this folder — a default image will be used if you select
2
+ it.</span></div>`),xa=u('<div class="overlay svelte-oq97c4" role="button" tabindex="0"><div class="modal panel svelte-oq97c4" role="dialog" aria-modal="true" aria-label="Pick a project folder" tabindex="-1"><div class="head svelte-oq97c4"><h2 class="svelte-oq97c4">Pick a project folder</h2> <button class="x svelte-oq97c4" aria-label="Close"><!></button></div> <div class="mode svelte-oq97c4"><div class="mode-label svelte-oq97c4">Editor</div> <div class="mode-toggle svelte-oq97c4" role="group" aria-label="Editor mode"><button type="button"><!> Full IDE</button> <button type="button"><!> 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" spellcheck="false" autocomplete="off"/> <input class="clone-branch svelte-oq97c4" type="text" placeholder="branch (optional)" spellcheck="false" autocomplete="off"/> <button class="clone-btn svelte-oq97c4">Clone</button></div></div> <div class="crumbs svelte-oq97c4"><code class="svelte-oq97c4"> </code></div> <!> <div class="search svelte-oq97c4"><input type="text" placeholder="Filter folders…" spellcheck="false" autocomplete="off" class="svelte-oq97c4"/></div> <div class="list svelte-oq97c4"><!></div> <!> <div class="foot svelte-oq97c4"><span class="hint svelte-oq97c4"> </span> <button class="primary svelte-oq97c4">Select this folder</button></div></div></div>');function ti(i,t){ge(t,!0);let a=Le(t,"defaultMode",3,"ide"),l=Le(t,"initialMode",3,null),f=E(pe(l())),x=C(()=>e(f)??a()),v=E(null),y=E(!0),M=E(null),O=E(""),Q=E(null),D=E(pe([])),fe=E(!1),H=E(""),j=E(""),G=C(()=>_t(e(H)));function te(){if(!e(G))return;t.onpick(e(H).trim(),{branch:e(j).trim()||void 0,mode:e(x)})}let $=C(()=>e(v)?e(v).entries.filter((z)=>z.name.toLowerCase().includes(e(O).trim().toLowerCase())):[]),ee=C(()=>e(v)?.path===Ci),le=C(()=>e(fe)?e(D):e(D).slice(0,5));async function F(){try{let z=await ei("/api/history");r(D,z.history??[],!0)}catch{}}async function S(z){let oe=e(D);r(D,e(D).filter((Fe)=>Fe.source_path!==z),!0);try{await bi("/api/history",{sourcePath:z})}catch{r(D,oe,!0)}}async function N(z=null){r(y,!0),r(M,null),r(O,"");try{let oe=z?`/api/browse?path=${encodeURIComponent(z)}`:"/api/browse";r(v,await ei(oe,void 0,"Could not list folder"),!0)}catch(oe){r(M,oe.message,!0)}finally{r(y,!1)}await At(),e(Q)?.focus()}we(()=>{N(),F()});var V=xa(),ie=m(V),L=m(ie),B=c(m(L),2),ne=m(B);It(ne,{size:16}),s(B),s(L);var ve=c(L,2),Ie=c(m(ve),2),Me=m(Ie);let W;var o=m(Me);ht(o,{size:15}),Se(),s(Me);var w=c(Me,2);let A;var J=m(w);vt(J,{size:15}),Se(),s(w),s(Ie),s(ve);var he=c(ve,2),g=c(m(he),2),I=m(g);it(I);var Z=c(I,2);it(Z);var Ee=c(Z,2);s(g),s(he);var Ke=c(he,2),Ye=m(Ke),ye=re(Ye,!0);s(Ke);var T=c(Ke,2);{var $e=(z)=>{var oe=ca(),Fe=c(m(oe),2);ze(Fe,17,()=>e(le),(Oe)=>Oe.source_path,(Oe,Pe)=>{var k=fa(),R=m(k),Te=m(R),He=m(Te);{var Ge=(Xe)=>{gt(Xe,{size:16})},ke=C(()=>_t(e(Pe).source_path)),Re=(Xe)=>{Pt(Xe,{size:16})};b(He,(Xe)=>{if(e(ke))Xe(Ge);else Xe(Re,-1)})}s(Te);var Je=c(Te,2),Ze=m(Je),St=re(Ze,!0),Yt=c(Ze,2),Gt=re(Yt,!0);s(Je),s(R);var ot=c(R,2),ft=m(ot);It(ft,{size:14}),s(ot),s(k),P(()=>{q(St,e(Pe).name),q(Gt,e(Pe).source_path),X(ot,"aria-label",`Remove ${e(Pe).name??""} from history`)}),Y("click",R,()=>t.onpick(e(Pe).source_path,{mode:e(x)})),Y("click",ot,(Xe)=>{Xe.stopPropagation(),S(e(Pe).source_path)}),d(Oe,k)});var rt=c(Fe,2);{var tt=(Oe)=>{var Pe=na(),k=re(Pe,!0);P(()=>q(k,e(fe)?"Show fewer":`Show all (${e(D).length})`)),Y("click",Pe,()=>r(fe,!e(fe))),d(Oe,Pe)};b(rt,(Oe)=>{if(e(D).length>5)Oe(tt)})}s(oe),d(z,oe)};b(T,(z)=>{if(e(D).length>0)z($e)})}var Be=c(T,2),qe=m(Be);it(qe),Qe(qe,(z)=>r(Q,z),()=>e(Q)),s(Be);var n=c(Be,2),h=m(n);{var ae=(z)=>{var oe=da();d(z,oe)},K=(z)=>{var oe=sa(),Fe=re(oe,!0);P(()=>q(Fe,e(M))),d(z,oe)},_=(z)=>{var oe=va(),Fe=be(oe);{var rt=(k)=>{var R=oa(),Te=m(R),He=m(Te),Ge=m(He);Tt(Ge,{size:16}),s(He),Se(2),s(Te),s(R),Y("click",Te,()=>N(e(v)?.parent??null)),d(k,R)};b(Fe,(k)=>{if(e(v).parent&&!e(O))k(rt)})}var tt=c(Fe,2);{var Oe=(k)=>{var R=ma(),Te=re(R,!0);P(()=>q(Te,e(O)?"No folders match.":"No subfolders here.")),d(k,R)};b(tt,(k)=>{if(e($).length===0)k(Oe)})}var Pe=c(tt,2);ze(Pe,19,()=>e($),(k)=>k.path,(k,R,Te)=>{var He=ua();let Ge;var ke=m(He),Re=m(ke),Je=m(Re);Dt(Je,{size:16}),s(Re);var Ze=c(Re,2),St=re(Ze,!0),Yt=c(Ze,2);{var Gt=(ft)=>{var Xe=ga();d(ft,Xe)};b(Yt,(ft)=>{if(e(R).hasDevcontainer)ft(Gt)})}s(ke);var ot=c(ke,2);s(He),P((ft)=>{Ge=xe(He,1,"row svelte-oq97c4",null,Ge,{"first-match":ft}),q(St,e(R).name)},[()=>e(O).trim()&&e(Te)===0]),Y("click",ke,()=>N(e(R).path)),Y("click",ot,()=>t.onpick(e(R).path,{mode:e(x)})),d(k,He)}),d(z,oe)};b(h,(z)=>{if(e(y))z(ae);else if(e(M))z(K,1);else if(e(v))z(_,2)})}s(n);var p=c(n,2);{var U=(z)=>{var oe=ha(),Fe=m(oe);ut(Fe,{size:15}),Se(2),s(oe),d(z,oe)};b(p,(z)=>{if(e(v)&&!e(v).hasDevcontainer&&!e(ee))z(U)})}var Ce=c(p,2),et=m(Ce),st=re(et,!0),_e=c(et,2);s(Ce),s(ie),s(V),P(()=>{W=xe(Me,1,"mode-btn svelte-oq97c4",null,W,{active:e(x)==="ide"}),X(Me,"aria-pressed",e(x)==="ide"),A=xe(w,1,"mode-btn svelte-oq97c4",null,A,{active:e(x)==="terminal"}),X(w,"aria-pressed",e(x)==="terminal"),Ee.disabled=!e(G),q(ye,e(ee)?Li:e(v)?.path??"…"),q(st,e(ee)?"Pick a drive to browse.":"Browse to a folder, then select this folder or any subfolder."),_e.disabled=!e(v)||e(ee)}),Y("click",V,function(...z){t.onclose?.apply(this,z)}),Y("keydown",V,(z)=>z.key==="Escape"&&t.onclose()),Y("click",ie,(z)=>z.stopPropagation()),Y("keydown",ie,()=>{}),Y("click",B,function(...z){t.onclose?.apply(this,z)}),Y("click",Me,()=>r(f,"ide")),Y("click",w,()=>r(f,"terminal")),Y("keydown",I,(z)=>{if(z.key==="Enter")z.preventDefault(),te()}),at(I,()=>e(H),(z)=>r(H,z)),Y("keydown",Z,(z)=>{if(z.key==="Enter")z.preventDefault(),te()}),at(Z,()=>e(j),(z)=>r(j,z)),Y("click",Ee,te),Y("keydown",qe,(z)=>{let oe=e($)[0];if(z.key==="Enter"&&oe)z.preventDefault(),N(oe.path)}),at(qe,()=>e(O),(z)=>r(O,z)),Y("click",_e,()=>e(v)&&!e(ee)&&t.onpick(e(v).path,{mode:e(x)})),d(i,V),ue()}We(["click","keydown"]);var wa=u('<div class="branch svelte-jv8lut" title="Branch checked out in the container"><!><span class="svelte-jv8lut"> </span></div>');function ii(i,t){var a=wa(),l=m(a);gt(l,{size:12});var f=c(l),x=re(f,!0);s(a),P(()=>q(x,t.branch)),d(i,a)}var Sa=new Set(["$$slots","$$events","$$legacy"]);function Ft(i,t){let a=ce(t,Sa),l={name:"cable",size:24,node:[["path",{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"}],["path",{d:"M17 21v-2"}],["path",{d:"M19 14V6.5a1 1 0 0 0-7 0v11a1 1 0 0 1-7 0V10"}],["path",{d:"M21 21v-2"}],["path",{d:"M3 5V3"}],["path",{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"}],["path",{d:"M7 5V3"}]]};se(i,de(()=>a,{get icon(){return l}}))}var Ia=u('<a target="_blank" rel="noopener"> </a>'),Ea=u('<div class="fports svelte-1uaz383" title="Forwarded ports — click to open"><!> <span class="list svelte-1uaz383"></span></div>');function li(i,t){ge(t,!0);var a=Et(),l=be(a);{var f=(x)=>{var v=Ea(),y=m(v);Ft(y,{size:12});var M=c(y,2);ze(M,21,()=>t.ports,(O)=>O.container_port,(O,Q)=>{var D=Ia();let fe;var H=re(D,!0);P((j,G)=>{fe=xe(D,1,"fport svelte-1uaz383",null,fe,{open:e(Q).open}),X(D,"href",j),X(D,"title",G),q(H,e(Q).container_port)},[()=>ai(e(Q).host_port),()=>`container :${e(Q).container_port} → ${ai(e(Q).host_port)} ${e(Q).open?"(open)":"(not published yet)"}`]),d(O,D)}),s(M),s(v),d(x,v)};b(l,(x)=>{if(t.ports.length)x(f)})}d(i,a),ue()}var ya=u('<div class="busy-overlay svelte-13338y7" aria-live="polite"><span class="busy-label svelte-13338y7"> </span></div>'),Ca=u('<input class="name-edit svelte-13338y7"/>'),La=u('<button class="name svelte-13338y7" title="Click to rename"> </button>'),ba=u("<span></span>"),Ma=u('<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"> </span></div>'),pa=u('<div class="card-error svelte-13338y7"> </div>'),za=u("<!> <!>",1),Na=u('<li><!> <div class="card-head svelte-13338y7"><!> <!> <!> <!></div> <div class="path svelte-13338y7"> </div> <!> <!> <!> <!> <div class="actions svelte-13338y7"><!> <!> <!> <!></div></li>');function ri(i,t){ge(t,!0);let a=Le(t,"editingName",15),l=Le(t,"pending",3,null),f=C(()=>t.instance.status==="running"||t.instance.status==="stopped"||t.instance.status==="error"&&!!t.instance.container_id),x={start:"Starting…",stop:"Stopping…",delete:"Deleting…",rebuild:"Rebuilding…"};var v=Na();let y;var M=m(v);{var O=(g)=>{var I=ya(),Z=m(I),Ee=re(Z,!0);s(I),P(()=>q(Ee,x[l()])),d(g,I)};b(M,(g)=>{if(l())g(O)})}var Q=c(M,2),D=m(Q);{let g=C(()=>ct(t.instance.avatar??void 0)??null);dt(D,{get name(){return t.instance.name},get art(){return e(g)},interactive:!0})}var fe=c(D,2);{var H=(g)=>{var I=Ca();it(I),Vt(I,!0),Ve("focus",I,(Z)=>Z.currentTarget.select()),Ve("blur",I,function(...Z){t.oncommitrename?.apply(this,Z)}),Y("keydown",I,(Z)=>{if(Z.key==="Enter")Z.currentTarget.blur();else if(Z.key==="Escape")t.oncancelrename()}),at(I,a),d(g,I)},j=(g)=>{var I=La(),Z=re(I,!0);P(()=>q(Z,t.instance.name)),Y("click",I,function(...Ee){t.onstartrename?.apply(this,Ee)}),d(g,I)};b(fe,(g)=>{if(t.editing)g(H);else g(j,-1)})}var G=c(fe,2);{var te=(g)=>{var I=ba();let Z;P(()=>{Z=xe(I,1,"attn svelte-13338y7",null,Z,{"attn-done":t.instance.attention==="done","attn-waiting":t.instance.attention==="waiting"}),X(I,"title",t.instance.attention==="waiting"?"Claude is waiting for input":"Claude finished"),X(I,"aria-label",t.instance.attention==="waiting"?"Claude is waiting for input":"Claude finished")}),d(g,I)};b(G,(g)=>{if(t.instance.attention)g(te)})}var $=c(G,2);Mi($,{get status(){return t.instance.status}}),s(Q);var ee=c(Q,2),le=re(ee,!0),F=c(ee,2);{var S=(g)=>{li(g,{get ports(){return t.instance.forwarded_ports}})};b(F,(g)=>{if(t.instance.status==="running")g(S)})}var N=c(F,2);{var V=(g)=>{ii(g,{get branch(){return t.instance.git_branch}})};b(N,(g)=>{if(t.instance.git_branch)g(V)})}var ie=c(N,2);{var L=(g)=>{var I=Ma(),Z=c(m(I),2),Ee=re(Z,!0);s(I),P(()=>q(Ee,t.instance.active_run.status==="queued"?"Agent run queued":t.instance.active_run.last_activity??"Agent running")),d(g,I)};b(ie,(g)=>{if(t.instance.active_run)g(L)})}var B=c(ie,2);{var ne=(g)=>{var I=pa(),Z=re(I,!0);P(()=>q(Z,t.instance.error)),d(g,I)};b(B,(g)=>{if(t.instance.status==="error"&&t.instance.error)g(ne)})}var ve=c(B,2),Ie=m(ve);{var Me=(g)=>{var I=za(),Z=be(I);{let Ke=C(()=>`/ide/${t.instance.id}`);Ne(Z,{variant:"primary",size:"sm",get href(){return e(Ke)},children:(Ye,ye)=>{Se();var T=Ae();P(()=>q(T,t.instance.mode==="terminal"?"Open terminal":"Open IDE")),d(Ye,T)},$$slots:{default:!0}})}var Ee=c(Z,2);Ne(Ee,{size:"sm",onclick:()=>t.onact("stop"),children:(Ke,Ye)=>{Se();var ye=Ae("Stop");d(Ke,ye)},$$slots:{default:!0}}),d(g,I)},W=(g)=>{Ne(g,{size:"sm",onclick:()=>t.onact("start"),children:(I,Z)=>{Se();var Ee=Ae("Start");d(I,Ee)},$$slots:{default:!0}})},o=(g)=>{{let I=C(()=>nt(`/instances/${t.instance.id}`));Ne(g,{size:"sm",get href(){return e(I)},target:"_blank",rel:"noopener noreferrer",children:(Z,Ee)=>{Se();var Ke=Ae("View logs");d(Z,Ke)},$$slots:{default:!0}})}};b(Ie,(g)=>{if(t.instance.status==="running")g(Me);else if(t.instance.status==="stopped"||t.instance.status==="error"&&t.instance.container_id)g(W,1);else if(t.instance.status==="creating")g(o,2)})}var w=c(Ie,2);{var A=(g)=>{Ne(g,{size:"sm",title:"Recreate the container and re-run setup (credentials, hooks, port forwards)",onclick:()=>t.onact("rebuild"),children:(I,Z)=>{Se();var Ee=Ae("Rebuild");d(I,Ee)},$$slots:{default:!0}})};b(w,(g)=>{if(e(f))g(A)})}var J=c(w,2);{let g=C(()=>nt(`/instances/${t.instance.id}`));Ne(J,{size:"sm",ghost:!0,get href(){return e(g)},target:"_blank",rel:"noopener noreferrer",children:(I,Z)=>{Se();var Ee=Ae("Details");d(I,Ee)},$$slots:{default:!0}})}var he=c(J,2);Ne(he,{variant:"danger",size:"sm",onclick:()=>t.onact("delete"),children:(g,I)=>{Se();var Z=Ae("Delete");d(g,Z)},$$slots:{default:!0}}),s(ve),s(v),P(()=>{y=xe(v,1,"card panel svelte-13338y7",null,y,{busy:!!l()}),X(v,"aria-busy",!!l()||void 0),X(ee,"title",t.instance.source_path),q(le,t.instance.source_path)}),d(i,v),ue()}We(["keydown","click"]);var Pa=new Set(["$$slots","$$events","$$legacy"]);function Bt(i,t){let a=ce(t,Pa),l={name:"component",size:24,node:[["path",{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"}],["path",{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"}],["path",{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"}],["path",{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"}]]};se(i,de(()=>a,{get icon(){return l}}))}var Ta=new Set(["$$slots","$$events","$$legacy"]);function Wt(i,t){let a=ce(t,Ta),l={name:"package",size:24,node:[["path",{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"}],["path",{d:"M12 22V12"}],["polyline",{points:"3.29 7 12 12 20.71 7"}],["path",{d:"m7.5 4.27 9 5.15"}]]};se(i,de(()=>a,{get icon(){return l}}))}var Da=u('<a class="brand svelte-94cd8h" href="/"><span class="logo svelte-94cd8h"><!></span><span class="words svelte-94cd8h"><span>Codebay</span><span class="tagline svelte-94cd8h">devcontainer manager</span></span></a>');function fi(i,t){ge(t,!0);var a=Da(),l=m(a),f=m(l);{var x=(y)=>{dt(y,{get art(){return t.pet},get name(){return t.pet.name},scale:4})},v=(y)=>{Wt(y,{size:22})};b(f,(y)=>{if(t.pet)y(x);else y(v,-1)})}s(l),Se(),s(a),d(i,a),ue()}var Aa=u('<button type="button" role="radio"> </button>'),Fa=u('<div class="picker svelte-12yor8r" role="radiogroup" aria-label="Filter instances"></div>');function ni(i,t){ge(t,!0);let a=[{value:"all",label:"All"},{value:"active",label:"Active"},{value:"stopped",label:"Stopped"}];var l=Fa();ze(l,21,()=>a,(f)=>f.value,(f,x)=>{var v=Aa();let y;var M=re(v,!0);P(()=>{y=xe(v,1,"segment svelte-12yor8r",null,y,{active:t.value===e(x).value}),X(v,"aria-checked",t.value===e(x).value),q(M,e(x).label)}),Y("click",v,()=>t.onchange(e(x).value)),d(f,v)}),s(l),d(i,l),ue()}We(["click"]);var Va=new Set(["$$slots","$$events","$$legacy"]);function xt(i,t){let a=ce(t,Va),l={name:"settings",size:24,node:[["path",{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"}],["circle",{cx:"12",cy:"12",r:"3"}]]};se(i,de(()=>a,{get icon(){return l}}))}var Ba=u('<a class="cog svelte-1e745g8" target="_blank" rel="noopener noreferrer" aria-label="Settings" title="Settings"><!></a>');function ci(i,t){ge(t,!1),pi();var a=Ba(),l=m(a);xt(l,{size:16}),s(a),P((f)=>X(a,"href",f),[()=>nt("/settings")]),d(i,a),ue()}var Wa=new Set(["$$slots","$$events","$$legacy"]);function Kt(i,t){let a=ce(t,Wa),l={name:"link",size:24,node:[["path",{d:"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["path",{d:"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}]]};se(i,de(()=>a,{get icon(){return l}}))}var Ka=u('<button type="button" class="cred-row svelte-vongf9" role="menuitem"><span></span> <span class="cred-label"> </span> <span class="cred-state svelte-vongf9"> </span></button>'),Oa=u('<div class="cred-dropdown panel svelte-vongf9" role="menu"></div>'),Ha=u('<div class="cred-menu svelte-vongf9"><button aria-haspopup="menu" aria-label="Credentials" title="Credentials"><!></button> <!></div>');function di(i,t){ge(t,!0);let a=E(!1),l=C(()=>t.auth.filter((H)=>H.available).length),f=C(()=>e(l)===t.auth.length?"ok":e(l)===0?"error":"warn"),x={ok:Kt,warn:ut,error:It},v=C(()=>x[e(f)]);function y(H){if(H.available)lt.success(`${H.label} credentials come from ${H.source}.`);else{let j=H.hint?` — ${H.hint}`:"";lt.error(`No ${H.label} credentials found${j}.`)}}we(()=>{if(!e(a))return;let H=(G)=>{if(!G.target?.closest(".cred-menu"))r(a,!1)},j=(G)=>{if(G.key==="Escape")r(a,!1)};return window.addEventListener("click",H),window.addEventListener("keydown",j),()=>{window.removeEventListener("click",H),window.removeEventListener("keydown",j)}});var M=Ha(),O=m(M),Q=m(O);zi(Q,()=>e(v),(H,j)=>{j(H,{size:16})}),s(O);var D=c(O,2);{var fe=(H)=>{var j=Oa();ze(j,21,()=>t.auth,(G)=>G.id,(G,te)=>{var $=Ka(),ee=m($),le=c(ee,2),F=re(le,!0),S=c(le,2),N=re(S,!0);s($),P(()=>{X($,"title",e(te).available?`Credentials from ${e(te).source}, copied into each new instance.`:`No credentials found on this computer${e(te).hint?` — ${e(te).hint}`:""}.`),xe(ee,1,`dot ${e(te).available?"on":"off"}`,"svelte-vongf9"),q(F,e(te).label),q(N,e(te).available?"Authorized":"Not found")}),Y("click",$,()=>y(e(te))),d(G,$)}),s(j),d(H,j)};b(D,(H)=>{if(e(a))H(fe)})}s(M),P(()=>{xe(O,1,`cred ${e(f)??""}`,"svelte-vongf9"),X(O,"aria-expanded",e(a))}),Y("click",O,()=>r(a,!e(a))),d(i,M),ue()}We(["click"]);var Ja=u('<header class="topbar svelte-1h259us"><!> <div class="topbar-actions svelte-1h259us"><!> <!> <!> <!> <!> <div class="new-group svelte-1h259us"><!> <!></div></div></header>');function si(i,t){ge(t,!0);let a=Le(t,"canDelete",3,!1),l=Le(t,"ready",3,!0),f=Le(t,"creating",3,!1),x=Le(t,"defaultMode",3,"ide"),v=C(()=>t.filter&&t.filter!=="all"?`Delete ${t.filter}`:"Delete all"),y=C(()=>x()==="terminal"?"ide":"terminal");var M=Ja(),O=m(M);fi(O,{get pet(){return t.pet}});var Q=c(O,2),D=m(Q);{var fe=(S)=>{Ne(S,{variant:"default",size:"sm",get icon(){return Bt},href:"/debug",children:(N,V)=>{Se();var ie=Ae("Debug");d(N,ie)},$$slots:{default:!0}})};b(D,(S)=>{if(Ni)S(fe)})}var H=c(D,2);{var j=(S)=>{ni(S,{get value(){return t.filter},get onchange(){return t.onFilter}})};b(H,(S)=>{if(t.filter&&t.onFilter)S(j)})}var G=c(H,2);ci(G,{});var te=c(G,2);di(te,{get auth(){return t.auth}});var $=c(te,2);{let S=C(()=>!a());Ne($,{variant:"danger",size:"sm",get onclick(){return t.onDeleteAll},get disabled(){return e(S)},children:(N,V)=>{Se();var ie=Ae();P(()=>q(ie,e(v))),d(N,ie)},$$slots:{default:!0}})}var ee=c($,2),le=m(ee);{let S=C(()=>f()?void 0:Ot),N=C(()=>!l()||f());Ne(le,{variant:"primary",size:"sm",get icon(){return e(S)},onclick:()=>t.onNew?.(),get disabled(){return e(N)},children:(V,ie)=>{Se();var L=Ae();P(()=>q(L,f()?"Creating…":"New instance")),d(V,L)},$$slots:{default:!0}})}var F=c(le,2);{let S=C(()=>e(y)==="terminal"?vt:ht),N=C(()=>!l()||f()),V=C(()=>e(y)==="terminal"?"New terminal instance":"New full IDE instance"),ie=C(()=>e(y)==="terminal"?"New terminal instance":"New full IDE instance");Ne(F,{variant:"default",size:"sm",square:!0,get icon(){return e(S)},iconSize:15,onclick:()=>t.onNew?.(e(y)),get disabled(){return e(N)},get title(){return e(V)},get "aria-label"(){return e(ie)}})}s(ee),s(Q),s(M),d(i,M),ue()}var Za=u("<span>Docker daemon is not reachable.</span>"),Ra=u("<span>The devcontainer CLI is not available.</span>"),Qa=u('<div class="banner error svelte-146pixd"><strong>Setup needed.</strong> <!> <!></div>'),Ua=u('<div class="banner error svelte-146pixd"><strong>Error.</strong> <span> </span></div>'),Ya=u('<div class="empty svelte-146pixd"><p class="empty-sub svelte-146pixd">Loading…</p></div>'),Ga=u('<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> <!></div>'),ka=u('<div class="empty svelte-146pixd"><p class="empty-sub svelte-146pixd"> </p></div>'),Xa=u('<ul class="grid svelte-146pixd"></ul>'),ja=u('<!> <main class="stage svelte-146pixd"><!> <!> <!></main> <!>',1);function oi(i,t){ge(t,!0);let a=E(!1),l=E(null),f=E(!1),x=E(null),v=E(null),y=E(""),M=E(pe({})),O=C(()=>t.preflight.docker&&t.preflight.cli),Q=C(()=>t.instances.filter((o)=>{if(t.filter==="active")return o.status==="running"||o.status==="creating";if(t.filter==="stopped")return o.status==="stopped"||o.status==="error";return!0}));we(()=>{for(let[o,{since:w}]of Object.entries(e(M))){let A=t.instances.find((J)=>J.id===o);if(!A||A.status!==w)D(o)}});function D(o){let{[o]:w,...A}=e(M);r(M,A,!0)}async function fe(o,w){r(a,!1),r(f,!0),r(x,null);try{await Ue("/api/instances",{sourcePath:o,branch:w?.branch,mode:w?.mode},"Failed to create instance")}catch(A){r(x,A.message,!0)}finally{r(f,!1)}}async function H(o,w){if(r(x,null),w==="delete"&&!confirm("Delete this instance and its copied files?"))return;if(w==="rebuild"&&!confirm("Recreate this container and re-run setup? The workspace is kept."))return;let A=t.instances.find((J)=>J.id===o)?.status;if(A)r(M,{...e(M),[o]:{action:w,since:A}},!0);try{await Ue(`/api/instances/${o}/${w}`,void 0,`Failed to ${w}`)}catch(J){r(x,J.message,!0),D(o)}}function j(o){r(v,o.id,!0),r(y,o.name,!0)}function G(){r(v,null),r(y,"")}async function te(o){let w=e(y).trim(),A=t.instances.find((J)=>J.id===o)?.name;if(!w||w===A){G();return}G(),r(x,null);try{await Ue(`/api/instances/${o}/rename`,{name:w},"Failed to rename")}catch(J){r(x,J.message,!0)}}async function $(){r(x,null);let o=e(Q).map((w)=>w.id);if(!confirm(`Delete ${o.length} instance${o.length===1?"":"s"} and their copied files?`))return;try{await Ue("/api/instances/delete-all",{ids:o},"Failed to delete all")}catch(w){r(x,w.message,!0)}}var ee=ja(),le=be(ee);{let o=C(()=>e(Q).length>0);si(le,{get auth(){return t.preflight.auth},get pet(){return t.pet},get canDelete(){return e(o)},get ready(){return e(O)},get creating(){return e(f)},get filter(){return t.filter},get onFilter(){return t.onFilter},get defaultMode(){return t.preflight.defaultMode},onNew:(w)=>{r(l,w??null,!0),r(a,!0)},onDeleteAll:$})}var F=c(le,2),S=m(F);{var N=(o)=>{var w=Qa(),A=c(m(w),2);{var J=(I)=>{var Z=Za();d(I,Z)};b(A,(I)=>{if(!t.preflight.docker)I(J)})}var he=c(A,2);{var g=(I)=>{var Z=Ra();d(I,Z)};b(he,(I)=>{if(!t.preflight.cli)I(g)})}s(w),d(o,w)};b(S,(o)=>{if(!e(O))o(N)})}var V=c(S,2);{var ie=(o)=>{var w=Ua(),A=c(m(w),2),J=re(A,!0);s(w),P(()=>q(J,e(x))),d(o,w)};b(V,(o)=>{if(e(x))o(ie)})}var L=c(V,2);{var B=(o)=>{var w=Ya();d(o,w)},ne=(o)=>{var w=Ga(),A=c(m(w),4);{let J=C(()=>!e(O));Ne(A,{variant:"primary",get icon(){return Ot},onclick:()=>r(a,!0),get disabled(){return e(J)},children:(he,g)=>{Se();var I=Ae("New instance");d(he,I)},$$slots:{default:!0}})}s(w),d(o,w)},ve=(o)=>{var w=ka(),A=m(w),J=re(A);s(w),P(()=>q(J,`No ${t.filter??""} instances.`)),d(o,w)},Ie=(o)=>{var w=Xa();ze(w,21,()=>e(Q),(A)=>A.id,(A,J)=>{{let he=C(()=>e(v)===e(J).id),g=C(()=>e(M)[e(J).id]?.action??null);ri(A,{get instance(){return e(J)},get editing(){return e(he)},get pending(){return e(g)},onact:(I)=>H(e(J).id,I),onstartrename:()=>j(e(J)),oncommitrename:()=>te(e(J).id),oncancelrename:G,get editingName(){return e(y)},set editingName(I){r(y,I,!0)}})}}),s(w),d(o,w)};b(L,(o)=>{if(!t.loaded)o(B);else if(t.instances.length===0)o(ne,1);else if(e(Q).length===0)o(ve,2);else o(Ie,-1)})}s(F);var Me=c(F,2);{var W=(o)=>{ti(o,{onpick:fe,get defaultMode(){return t.preflight.defaultMode},get initialMode(){return e(l)},onclose:()=>r(a,!1)})};b(Me,(o)=>{if(e(a))o(W)})}d(i,ee),ue()}var $a=new Set(["$$slots","$$events","$$legacy"]);function wt(i,t){let a=ce(t,$a),l={name:"rotate-cw",size:24,node:[["path",{d:"M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8"}],["path",{d:"M21 3v5h-5"}]]};se(i,de(()=>a,{get icon(){return l}}))}var qa=new Set(["$$slots","$$events","$$legacy"]);function Ht(i,t){let a=ce(t,qa),l={name:"chevron-left",size:24,node:[["path",{d:"m15 18-6-6 6-6"}]]};se(i,de(()=>a,{get icon(){return l}}))}var _a=new Set(["$$slots","$$events","$$legacy"]);function Jt(i,t){let a=ce(t,_a),l={name:"circle-stop",size:24,node:[["circle",{cx:"12",cy:"12",r:"10"}],["rect",{x:"9",y:"9",width:"6",height:"6",rx:"1"}]],aliases:["stop-circle"]};se(i,de(()=>a,{get icon(){return l}}))}var el=u('<button type="button" class="page svelte-r39acv" aria-label="Scroll tabs left"><!></button>'),tl=u('<div class="tab editing svelte-r39acv"><!> <input class="tab-name-edit svelte-r39acv"/></div>'),il=u("<span></span>"),al=u('<button type="button" class="tab-stop svelte-r39acv"><!></button>'),ll=u('<button type="button"><!> <span class="tab-name svelte-r39acv"> </span> <span class="tab-mode svelte-r39acv"><!></span> <!></button> <!>',1),rl=u('<div role="presentation"><!></div>'),fl=u('<button type="button" class="page trailing svelte-r39acv" aria-label="Scroll tabs right"><!></button>'),nl=u('<div class="strip svelte-r39acv"><!> <div class="viewport svelte-r39acv"><nav class="tabs svelte-r39acv" aria-label="Instances"></nav></div> <!></div>'),cl=u('<button type="button" class="reload svelte-r39acv" title="Reload editor" aria-label="Reload editor"><!></button>'),dl=u('<!> <div class="right svelte-r39acv"><!> <a class="cog svelte-r39acv" target="_blank" rel="noopener noreferrer" title="Settings" aria-label="Settings"><!></a></div>',1),sl=u('<div class="drop-tip panel svelte-r39acv">Drop to save into codebay-inbox/</div>'),ol=u("<!> <!>",1);function mi(i,t){ge(t,!0);let a=Le(t,"editingName",15),l=Le(t,"stopping",19,()=>[]),f=(L)=>l().includes(L),x=E(null),v=E(0),y=C(()=>e(x)?Math.max(8,Math.min(e(x).x-e(v)/2,e(x).maxX-e(v))):0);function M(L,B){if(!t.ondropfiles||!L.dataTransfer?.types.includes("Files"))return;if(L.preventDefault(),L.dataTransfer.dropEffect="copy",e(x)?.id===B)return;let ne=L.currentTarget.getBoundingClientRect();r(x,{id:B,x:ne.left+ne.width/2,y:ne.bottom,maxX:document.documentElement.clientWidth-8},!0)}function O(L){if(L.currentTarget.contains(L.relatedTarget))return;r(x,null)}function Q(L,B){if(!t.ondropfiles)return;L.preventDefault(),r(x,null),t.ondropfiles(B,Ct(L.dataTransfer))}let D=E(null),fe=E(null),H=E(!0),j=E(!0),G=pe({}),te=C(()=>!e(H)||!e(j));function $(){if(!e(D))return;r(H,e(D).scrollLeft<=1),r(j,e(D).scrollLeft+e(D).clientWidth>=e(D).scrollWidth-1)}function ee(L){let B=t.running[L];if(!B)return;t.onselect(B.id),G[B.id]?.focus()}function le(L,B){let ne=Nt(B,L.key,t.running.length);if(ne===null)return;L.preventDefault(),ee(ne)}function F(L){if(!e(D))return;e(D).scrollBy({left:L*Math.max(160,e(D).clientWidth*0.7)})}we(()=>{let L=e(D),B=e(fe);if(!L||!B)return;$();let ne=new ResizeObserver($);return ne.observe(L),ne.observe(B),L.addEventListener("scroll",$,{passive:!0}),()=>{ne.disconnect(),L.removeEventListener("scroll",$)}}),we(()=>{G[t.active]?.scrollIntoView({block:"nearest",inline:"nearest"})});var S=ol(),N=be(S);Di(N,{children:(L,B)=>{var ne=dl(),ve=be(ne);{var Ie=(J)=>{var he=nl(),g=m(he);{var I=(ye)=>{var T=el(),$e=m(T);Ht($e,{size:16}),s(T),P(()=>T.disabled=e(H)),Y("click",T,()=>F(-1)),d(ye,T)};b(g,(ye)=>{if(e(te))ye(I)})}var Z=c(g,2),Ee=m(Z);ze(Ee,23,()=>t.running,(ye)=>ye.id,(ye,T,$e)=>{var Be=rl();let qe;var n=m(Be);{var h=(K)=>{var _=tl(),p=m(_);{let Ce=C(()=>ct(e(T).avatar??void 0)??null);dt(p,{get name(){return e(T).name},get art(){return e(Ce)},scale:3})}var U=c(p,2);it(U),Vt(U,!0),s(_),Ve("focus",U,(Ce)=>Ce.currentTarget.select()),Ve("blur",U,()=>t.oncommitrename(e(T).id)),Y("keydown",U,(Ce)=>{if(Ce.key==="Enter")Ce.currentTarget.blur();else if(Ce.key==="Escape")t.oncancelrename()}),at(U,a),d(K,_)},ae=(K)=>{var _=ll(),p=be(_);let U;var Ce=m(p);{let k=C(()=>ct(e(T).avatar??void 0)??null);dt(Ce,{get name(){return e(T).name},get art(){return e(k)},scale:3})}var et=c(Ce,2),st=re(et,!0),_e=c(et,2),z=m(_e);{var oe=(k)=>{vt(k,{size:11})},Fe=(k)=>{ht(k,{size:11})};b(z,(k)=>{if(e(T).mode==="terminal")k(oe);else k(Fe,-1)})}s(_e);var rt=c(_e,2);{var tt=(k)=>{var R=il();P(()=>{xe(R,1,`attn ${t.attention[e(T).id]??""}`,"svelte-r39acv"),X(R,"aria-label",t.attention[e(T).id]==="waiting"?"Claude is waiting for input":"Claude finished")}),d(k,R)};b(rt,(k)=>{if(e(T).id!==t.active&&t.attention[e(T).id])k(tt)})}s(p),Qe(p,(k,R)=>G[R.id]=k,(k)=>G?.[k.id],()=>[e(T)]);var Oe=c(p,2);{var Pe=(k)=>{var R=al(),Te=m(R);Jt(Te,{size:20}),s(R),P((He,Ge,ke)=>{R.disabled=He,X(R,"title",Ge),X(R,"aria-label",ke)},[()=>f(e(T).id),()=>f(e(T).id)?"Stopping…":`Stop ${e(T).name}`,()=>f(e(T).id)?"Stopping…":`Stop ${e(T).name}`]),Y("click",R,()=>t.onstop(e(T).id)),d(k,R)};b(Oe,(k)=>{if(t.onstop)k(Pe)})}P(()=>{U=xe(p,1,"tab svelte-r39acv",null,U,{active:e(T).id===t.active}),X(p,"id",`tab-${e(T).id??""}`),X(p,"aria-current",e(T).id===t.active?"page":void 0),X(p,"title",e(T).name),q(st,e(T).name),X(_e,"aria-label",e(T).mode==="terminal"?"Terminal-only instance":"Full IDE instance")}),Y("click",p,()=>t.onselect(e(T).id)),Y("dblclick",p,()=>t.onstartrename(e(T))),Y("keydown",p,(k)=>le(k,e($e))),d(K,_)};b(n,(K)=>{if(t.editingId===e(T).id)K(h);else K(ae,-1)})}s(Be),P(()=>qe=xe(Be,1,"tab-slot svelte-r39acv",null,qe,{active:e(T).id===t.active,"drop-target":e(x)?.id===e(T).id})),Ve("dragenter",Be,(K)=>M(K,e(T).id)),Ve("dragover",Be,(K)=>M(K,e(T).id)),Ve("dragleave",Be,O),Ve("drop",Be,(K)=>Q(K,e(T).id)),d(ye,Be)}),s(Ee),Qe(Ee,(ye)=>r(fe,ye),()=>e(fe)),s(Z),Qe(Z,(ye)=>r(D,ye),()=>e(D));var Ke=c(Z,2);{var Ye=(ye)=>{var T=fl(),$e=m(T);Ti($e,{size:16}),s(T),P(()=>T.disabled=e(j)),Y("click",T,()=>F(1)),d(ye,T)};b(Ke,(ye)=>{if(e(te))ye(Ye)})}s(he),d(J,he)};b(ve,(J)=>{if(t.running.length>0)J(Ie)})}var Me=c(ve,2),W=m(Me);{var o=(J)=>{var he=cl(),g=m(he);wt(g,{size:18}),s(he),Y("click",he,function(...I){t.onreload?.apply(this,I)}),d(J,he)};b(W,(J)=>{if(t.onreload)J(o)})}var w=c(W,2),A=m(w);xt(A,{size:18}),s(w),s(Me),P((J)=>X(w,"href",J),[()=>nt("/settings")]),d(L,ne)},$$slots:{default:!0}});var V=c(N,2);{var ie=(L)=>{var B=sl();let ne;P(()=>ne=yt(B,"",ne,{left:`${e(y)??""}px`,top:`${e(x).y??""}px`})),Pi(B,"offsetWidth",(ve)=>r(v,ve)),d(L,B)};b(V,(L)=>{if(e(x))L(ie)})}d(i,S),ue()}We(["click","keydown","dblclick"]);var ml=u('<div class="row svelte-w5e143"> </div>'),gl=u('<div class="stalled svelte-w5e143"><p class="svelte-w5e143"> </p> <!></div>'),ul=u('<div class="loader svelte-w5e143"><div class="grid svelte-w5e143" aria-hidden="true"></div> <div class="label svelte-w5e143"> <span class="dot svelte-w5e143">.</span><span class="dot svelte-w5e143">.</span><span class="dot svelte-w5e143">.</span></div> <!></div>');function Zt(i,t){ge(t,!0);let a=Le(t,"speed",3,1),l=Le(t,"mode",3,"ide"),f=C(()=>l()==="terminal"),x=E(!1);we(()=>{if(t.stalledAfterMs===void 0)return;let le=setTimeout(()=>r(x,!0),t.stalledAfterMs);return()=>clearTimeout(le)});let v=3,y=22,M=140,O=7,Q=C(()=>Math.max(20,M/a())),fe=E(pe((()=>Array.from({length:v},()=>Array.from({length:y},()=>Math.random()<0.5?0:1)))()));we(()=>{if(window.matchMedia?.("(prefers-reduced-motion: reduce)").matches)return;let le=setInterval(()=>{let F=e(fe).map((S)=>S.slice());for(let S=0;S<O;S++){let N=F[Math.floor(Math.random()*v)],V=Math.floor(Math.random()*y);N[V]=N[V]?0:1}r(fe,F,!0)},e(Q));return()=>clearInterval(le)});var H=ul(),j=m(H);ze(j,21,()=>e(fe),Ai,(le,F)=>{var S=ml(),N=re(S,!0);P((V)=>q(N,V),[()=>e(F).join("")]),d(le,S)}),s(j);var G=c(j,2),te=m(G);Se(3),s(G);var $=c(G,2);{var ee=(le)=>{var F=gl(),S=m(F),N=re(S),V=c(S,2);{var ie=(L)=>{Ne(L,{size:"sm",get onclick(){return t.onoverride},children:(B,ne)=>{Se();var ve=Ae("Open anyway");d(B,ve)},$$slots:{default:!0}})};b(V,(L)=>{if(t.onoverride)L(ie)})}s(F),P(()=>q(N,`Waiting for ${e(f)?"the terminal":"code-server"} to answer inside the container.`)),d(le,F)};b($,(le)=>{if(e(x))le(ee)})}s(H),P(()=>q(te,`Loading ${e(f)?"terminal":"editor"}`)),d(i,H),ue()}var vl=new Set(["$$slots","$$events","$$legacy"]);function Rt(i,t){let a=ce(t,vl),l={name:"panel-right-open",size:24,node:[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2"}],["path",{d:"M15 3v18"}],["path",{d:"m10 15-3-3 3-3"}]]};se(i,de(()=>a,{get icon(){return l}}))}var hl=new Set(["$$slots","$$events","$$legacy"]);function Qt(i,t){let a=ce(t,hl),l={name:"panel-right-close",size:24,node:[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2"}],["path",{d:"M15 3v18"}],["path",{d:"m8 9 3 3-3 3"}]]};se(i,de(()=>a,{get icon(){return l}}))}function Fi(i){let t=i.indexOf(";");if(t===-1)return null;let a=i.slice(t+1).replace(/\s+/g,"");if(a===""||a==="?")return null;try{let l=Uint8Array.from(atob(a),(f)=>f.charCodeAt(0));return new TextDecoder().decode(l)}catch{return null}}var xl=u('<span class="status svelte-ui3nvu">connecting…</span>'),wl=u('<div class="term svelte-ui3nvu"></div> <div class="overlay svelte-ui3nvu"><!> <!> <button type="button" title="Reload terminal (reconnects, keeps the session)" aria-label="Reload terminal"><!></button></div>',1);function Ut(i,t){ge(t,!0);let a=Le(t,"focus",3,!0),l,f,x,v,y,M=!1,O=E(!1),Q=0,D="0",fe="1",H=48,j=new TextEncoder;function G(W){if(v?.readyState===WebSocket.OPEN)v.send(j.encode(W))}function te(W){let o=new Uint8Array(W);if(o.length===0)return;if(o[0]===H)f?.write(o.subarray(1))}function $(){let W=++Q,o=location.protocol==="https:"?"wss:":"ws:",w=t.arg?`?arg=${encodeURIComponent(t.arg)}`:"",A=new WebSocket(`${o}//${location.host}/p/${t.id}/ws${w}`,["tty"]);v=A,A.binaryType="arraybuffer",A.onopen=()=>{if(Q!==W)return;r(O,!0),G(JSON.stringify({AuthToken:"",columns:f?.cols??80,rows:f?.rows??24}))},A.onmessage=(J)=>{if(Q===W)te(J.data)},A.onclose=()=>{if(Q!==W||M)return;r(O,!1),y=setTimeout($,1000)},A.onerror=()=>{try{A.close()}catch{}}}function ee(){if(y)clearTimeout(y);Q++,r(O,!1),f?.reset();let W=v;v=void 0;let o=!1,w=()=>{if(o||M)return;if(o=!0,S(),$(),t.active&&a())f?.focus()};if(W&&W.readyState!==WebSocket.CLOSED){W.addEventListener("close",w,{once:!0}),setTimeout(w,1500);try{W.close()}catch{}}else w()}async function le(W){if(!W)return;try{await navigator.clipboard.writeText(W);return}catch{}let o=document.createElement("textarea");o.value=W,o.setAttribute("aria-hidden","true"),o.style.position="fixed",o.style.opacity="0",document.body.appendChild(o),o.select();try{document.execCommand("copy")}catch{}if(o.remove(),t.active&&a())f?.focus()}function F(){let W=f?.getSelection();if(W)le(W)}function S(){if(l?.clientWidth>0&&l?.clientHeight>0)try{x?.fit()}catch{}}function N(){if(!f||!l)return;let W=getComputedStyle(l),o=W.backgroundColor||"#0d0e0a",w=W.color||"#d8d9cf";f.options.theme={background:o,foreground:w,cursor:w,cursorAccent:o}}Ki(()=>{let W,o=window.matchMedia("(prefers-color-scheme: dark)"),w=()=>N();o.addEventListener("change",w),(async()=>{let[{Terminal:J},{FitAddon:he}]=await Promise.all([import("/_mochi/client/chunk-tss2473w.js"),import("/_mochi/client/chunk-0vqvn81s.js")]);if(M)return;if(f=new J({fontFamily:"'JetBrains Mono Variable', ui-monospace, monospace",fontSize:13,cursorBlink:!0,scrollback:1e4,allowProposedApi:!0}),x=new he,f.loadAddon(x),f.open(l),N(),S(),f.parser.registerOscHandler(52,(g)=>{let I=Fi(g);if(I!==null)le(I);return!0}),f.attachCustomKeyEventHandler((g)=>{if(g.type!=="keydown"||!f?.hasSelection())return!0;if(!(g.ctrlKey&&(g.key==="Insert"||g.altKey&&g.key.toLowerCase()==="c")))return!0;return F(),!1}),f.onData((g)=>G(D+g)),f.onResize(({cols:g,rows:I})=>G(fe+JSON.stringify({columns:g,rows:I}))),W=new MutationObserver(N),W.observe(document.documentElement,{attributes:!0,attributeFilter:["data-theme"]}),$(),t.active&&a())f.focus()})();let A=new ResizeObserver(()=>S());return A.observe(l),l.addEventListener("mouseup",F),()=>{if(M=!0,l.removeEventListener("mouseup",F),A.disconnect(),W?.disconnect(),o.removeEventListener("change",w),y)clearTimeout(y);try{v?.close()}catch{}f?.dispose()}}),we(()=>{if(t.active&&f){if(S(),a())f.focus()}});var V=wl(),ie=be(V);Qe(ie,(W)=>l=W,()=>l);var L=c(ie,2),B=m(L);{var ne=(W)=>{var o=xl();d(W,o)};b(B,(W)=>{if(!e(O))W(ne)})}var ve=c(B,2);Wi(ve,()=>t.actions??Bi);var Ie=c(ve,2),Me=m(Ie);wt(Me,{size:14}),s(Ie),s(L),Y("click",Ie,ee),d(i,V),ue()}We(["click"]);var Sl=u('<button type="button"><!></button>'),Il=u('<div role="separator" aria-orientation="vertical" aria-label="Resize terminal panes" tabindex="0"></div> <div><!></div>',1),El=u('<div class="split svelte-1ysvu88"><div class="side svelte-1ysvu88"><!></div> <!></div>');function gi(i,t){ge(t,!0);let a=(S)=>{var N=Sl(),V=m(N);{var ie=(B)=>{Qt(B,{size:14})},L=(B)=>{Rt(B,{size:14})};b(V,(B)=>{if(e(f))B(ie);else B(L,-1)})}s(N),P(()=>{X(N,"aria-pressed",e(f)),X(N,"title",e(f)?"Hide the shell pane":"Open a shell alongside Claude"),X(N,"aria-label",e(f)?"Hide the shell pane":"Open a shell alongside Claude")}),Y("click",N,O),d(S,N)},l=Le(t,"initialOpen",3,!1),f=E(pe(l())),x=E(pe(l())),v=E(50),y=E("left"),M;function O(){if(r(f,!e(f)),e(f))r(x,!0);r(y,e(f)?"right":"left",!0),Ue(`/api/instances/${t.id}/split`,{open:e(f)}).catch(()=>{})}function Q(S){return Math.min(80,Math.max(20,S))}function D(S){let N=M.getBoundingClientRect();if(N.width>0)r(v,Q((S-N.left)/N.width*100),!0)}function fe(S){S.preventDefault(),S.currentTarget.setPointerCapture(S.pointerId)}function H(S){if(S.currentTarget.hasPointerCapture(S.pointerId))D(S.clientX)}function j(S){if(S.key==="ArrowLeft")r(v,Q(e(v)-5),!0);else if(S.key==="ArrowRight")r(v,Q(e(v)+5),!0);else return;S.preventDefault()}var G=El(),te=m(G);let $;var ee=m(te);{let S=C(()=>t.active&&e(y)==="left"),N=C(()=>e(f)?void 0:a);Ut(ee,{get id(){return t.id},get active(){return t.active},get focus(){return e(S)},get actions(){return e(N)}})}s(te);var le=c(te,2);{var F=(S)=>{var N=Il(),V=be(N);let ie;X(V,"aria-valuemin",20),X(V,"aria-valuemax",80);var L=c(V,2);let B,ne;var ve=m(L);{let Ie=C(()=>t.active&&e(f)),Me=C(()=>t.active&&e(f)&&e(y)==="right"),W=C(()=>e(f)?a:void 0);Ut(ve,{get id(){return t.id},arg:"shell",get active(){return e(Ie)},get focus(){return e(Me)},get actions(){return e(W)}})}s(L),P((Ie)=>{ie=xe(V,1,"divider svelte-1ysvu88",null,ie,{hidden:!e(f)}),X(V,"aria-valuenow",Ie),B=xe(L,1,"side svelte-1ysvu88",null,B,{hidden:!e(f)}),ne=yt(L,"",ne,{"flex-basis":`${100-e(v)}%`})},[()=>Math.round(e(v))]),Y("pointerdown",V,fe),Y("pointermove",V,H),Y("dblclick",V,()=>r(v,50)),Y("keydown",V,j),Ve("pointerdown",L,()=>r(y,"right"),!0),d(S,N)};b(le,(S)=>{if(e(x))S(F)})}s(G),Qe(G,(S)=>M=S,()=>M),P(()=>$=yt(te,"",$,{"flex-basis":e(f)?`${e(v)}%`:"100%"})),Ve("pointerdown",te,()=>r(y,"left"),!0),d(i,G),ue()}We(["click","pointerdown","pointermove","dblclick","keydown"]);var yl=u('<iframe allow="clipboard-read; clipboard-write" class="svelte-1duc7gd"></iframe>'),Cl=u('<div role="region"><!> <!> <!></div>'),Ll=u('<div class="empty svelte-1duc7gd">No running instances.</div>'),bl=u("<div><!> <div><!> <!></div></div> <!>",1);function vi(i,t){ge(t,!0);let a=E(pe(t.snapshot)),l=E(pe(t.preflight)),f=E(pe(t.pet)),x=E(pe(t.filter)),v=E(t.snapshot.length>0),y=C(()=>e(a).filter((n)=>n.status==="running")),M=E(pe(Object.fromEntries(t.snapshot.map((n)=>[n.id,n.attention])))),O=E(null),Q=E(""),D=new je;async function fe(n){if(D.has(n))return;D.add(n);try{await Ue(`/api/instances/${n}/stop`,void 0,"Failed to stop instance")}catch(h){lt.error(h.message),D.delete(n)}}function H(n){r(O,n.id,!0),r(Q,n.name,!0)}function j(){r(O,null),r(Q,"")}async function G(n){let h=e(Q).trim(),ae=e(a).find((K)=>K.id===n)?.name;if(!h||h===ae){j();return}j();try{await Ue(`/api/instances/${n}/rename`,{name:h},"Failed to rename")}catch(K){lt.error(K.message)}}function te(n){r(x,n,!0),Ue("/api/settings/filter",{value:n}).catch(()=>{})}let $=E(pe(t.initialPath)),ee=C(()=>e($).startsWith("/ide")),le=C(()=>e($).startsWith("/ide/")?e($).slice(5):""),F=C(()=>e(ee)?e(y).some((n)=>n.id===e(le))?e(le):e(y)[0]?.id??"":"");function S(n){if(n===e($))return;history.pushState({},"",n),r($,n,!0)}we(()=>{function n(h){if(h.defaultPrevented||h.button!==0||h.metaKey||h.ctrlKey||h.shiftKey||h.altKey)return;let ae=h.target?.closest?.("a");if(!ae)return;let K=ae.getAttribute("href");if(!K||ae.target==="_blank"||ae.hasAttribute("download"))return;let _=new URL(K,location.href);if(_.origin!==location.origin)return;if(_.pathname==="/"||_.pathname.startsWith("/ide/"))h.preventDefault(),S(_.pathname)}return document.addEventListener("click",n),()=>document.removeEventListener("click",n)}),we(()=>{function n(){r($,location.pathname,!0)}return window.addEventListener("popstate",n),()=>window.removeEventListener("popstate",n)}),we(()=>{if(e(y).length===0)return;function n(h){h.preventDefault(),h.returnValue=""}return window.addEventListener("beforeunload",n),()=>window.removeEventListener("beforeunload",n)});let N=new je;we(()=>{if(e(F))N.add(e(F))});let V=new je,ie=new je,L=new je,B=(n)=>ie.has(n)||L.has(n),ne=1e4,ve=C(()=>e(y).find((n)=>n.id===e(F))),Ie={};function Me(){let n=e(ve);if(!n||n.mode==="terminal")return;V.delete(n.id),Ie[n.id]?.contentWindow?.location.replace(ui(n))}we(()=>{document.title=e(ee)&&e(ve)?`${e(ve).name} — Codebay`:"Codebay"});function W(n,h){if(!n.altKey||n.ctrlKey||n.metaKey||e(O)||!Ri())return;let ae=/^Digit([1-9])$/.exec(n.code)?.[1];if(!ae)return;let K=Nt(e(y).findIndex((p)=>p.id===e(F)),ae,e(y).length),_=K===null?void 0:e(y)[K];if(!_)return;if(n.preventDefault(),n.stopPropagation(),S(`/ide/${_.id}`),h)At().then(()=>Ie[_.id]?.contentWindow?.focus())}let o=C(()=>e(y).filter((n)=>n.mode!=="terminal"&&V.has(n.id)).map((n)=>n.id).join(" "));we(()=>{if(!e(ee))return;function n(ae,K){let _=(p)=>W(p,K);return ae.addEventListener("keydown",_,{capture:!0}),()=>ae.removeEventListener("keydown",_,{capture:!0})}let h=[n(window,!1)];for(let ae of e(o).split(" ").filter(Boolean)){let K=Ie[ae]?.contentWindow;if(K)h.push(n(K,!0))}return()=>h.forEach((ae)=>ae())}),we(()=>{return window.addEventListener("pointerdown",Lt),window.addEventListener("keydown",Lt),()=>{window.removeEventListener("pointerdown",Lt),window.removeEventListener("keydown",Lt)}});async function w(n,h){for(let ae of h)try{let K=await Zi(n,ae);lt.success(`Saved ${K.containerPath}`),navigator.clipboard.writeText(K.containerPath).catch(()=>{})}catch(K){lt.error(K.message)}}let A=E(!1);function J(n){n.preventDefault(),r(A,!1),w(e(F),Ct(n.dataTransfer))}we(()=>{if(!e(l).uploadEnabled||!e(ee))return;let n=(U)=>U.dataTransfer?.types.includes("Files")??!1,h=(U)=>{if(n(U))r(A,!0)},ae=(U)=>{if(!n(U)||U.defaultPrevented)return;U.preventDefault(),U.dataTransfer.dropEffect="none"},K=(U)=>{if(n(U))U.preventDefault();r(A,!1)},_=(U)=>{if(U.relatedTarget===null)r(A,!1)},p=(U)=>{let Ce=Ct(U.clipboardData);if(Ce.length&&e(F))U.preventDefault(),w(e(F),Ce)};return window.addEventListener("dragenter",h),window.addEventListener("dragover",ae),window.addEventListener("dragleave",_),window.addEventListener("drop",K),window.addEventListener("paste",p,!0),()=>{window.removeEventListener("dragenter",h),window.removeEventListener("dragover",ae),window.removeEventListener("dragleave",_),window.removeEventListener("drop",K),window.removeEventListener("paste",p,!0)}}),we(()=>{let n=!1;return Ui((h)=>{if(h.type==="preflight"){r(l,{...e(l),docker:h.data.docker,cli:h.data.cli},!0);return}if(h.type==="pet"){r(f,ct(h.data.name??void 0),!0);return}if(h.type==="filter"){r(x,h.data.value,!0);return}if(h.type==="default-mode"){r(l,{...e(l),defaultMode:h.data.mode},!0);return}if(h.type==="upload-enabled"){r(l,{...e(l),uploadEnabled:h.data.enabled},!0);return}if(h.type==="theme"){Yi(h.data.value);return}if(h.type==="run"){let p=h.data;r(a,e(a).map((U)=>U.id===p.instance_id?{...U,active_run:p.finished_at?null:p}:U),!0);return}if(h.type==="health"){let p=e(a).find((U)=>U.id===h.data.id);if(h.data.health.codeServerAccessible&&p?.status==="running")ie.add(h.data.id);return}if(h.type!=="instances")return;let ae=h.data,K=new Set(ae.filter((p)=>p.status==="running").map((p)=>p.id));for(let p of[...ie])if(!K.has(p))ie.delete(p);for(let p of[...L])if(!K.has(p))L.delete(p);for(let p of[...V])if(!K.has(p))V.delete(p);for(let p of[...D])if(!K.has(p))D.delete(p);let _={};for(let p of ae)_[p.id]=p.attention;if(n)for(let p in _){let U=_[p];if(U&&U!==e(M)[p])if(p===e(F))console.log(`[chime] attention id=${p} state=${U} — skipped (tab is active/focused)`);else console.log(`[chime] attention id=${p} state=${U} → playChime`),Qi(U)}else console.log("[chime] first frame after (re)connect — baselining, no chimes");n=!0,r(a,ae,!0),r(M,_,!0),r(v,!0)},()=>{n=!1})}),we(()=>{if(!e(F)||!e(M)[e(F)])return;let n=()=>{if(document.visibilityState==="visible")Ue(`/api/instances/${e(F)}/attention/clear`).catch(()=>{})};return n(),document.addEventListener("visibilitychange",n),()=>document.removeEventListener("visibilitychange",n)});var he=bl(),g=be(he);let I;var Z=m(g);{var Ee=(n)=>{{let h=C(()=>[...D]),ae=C(()=>e(ve)&&e(ve).mode!=="terminal"&&B(e(F))?Me:void 0),K=C(()=>e(l).uploadEnabled?(_,p)=>void w(_,p):void 0);mi(n,{get running(){return e(y)},get active(){return e(F)},get attention(){return e(M)},get editingId(){return e(O)},get stopping(){return e(h)},get onreload(){return e(ae)},onselect:(_)=>S(`/ide/${_}`),onstop:fe,get ondropfiles(){return e(K)},onstartrename:H,oncommitrename:G,oncancelrename:j,get editingName(){return e(Q)},set editingName(_){r(Q,_,!0)}})}},Ke=(n)=>{oi(n,{get preflight(){return e(l)},get instances(){return e(a)},get loaded(){return e(v)},get pet(){return e(f)},get filter(){return e(x)},onFilter:te})};b(Z,(n)=>{if(e(ee))n(Ee);else n(Ke,-1)})}var Ye=c(Z,2);let ye;var T=m(Ye);ze(T,17,()=>e(y),(n)=>n.id,(n,h)=>{var ae=Et(),K=be(ae);{var _=(U)=>{var Ce=Cl();let et;var st=m(Ce);{var _e=(R)=>{var Te=Et(),He=be(Te);{var Ge=(Re)=>{{let Je=C(()=>e(h).id===e(F)),Ze=C(()=>e(h).terminal_split===1);gi(Re,{get id(){return e(h).id},get active(){return e(Je)},get initialOpen(){return e(Ze)}})}},ke=(Re)=>{var Je=yl();Qe(Je,(Ze,St)=>Ie[St.id]=Ze,(Ze)=>Ie?.[Ze.id],()=>[e(h)]),P((Ze)=>{X(Je,"src",Ze),X(Je,"title",e(h).name)},[()=>ui(e(h))]),Ve("load",Je,()=>V.add(e(h).id)),Oi(Je),d(Re,Je)};b(He,(Re)=>{if(e(h).mode==="terminal")Re(Ge);else Re(ke,-1)})}d(R,Te)},z=C(()=>B(e(h).id));b(st,(R)=>{if(e(z))R(_e)})}var oe=c(st,2);{var Fe=(R)=>{Zt(R,{get mode(){return e(h).mode},stalledAfterMs:ne,onoverride:()=>L.add(e(h).id)})},rt=C(()=>!B(e(h).id)),tt=(R)=>{Zt(R,{})},Oe=C(()=>e(h).mode!=="terminal"&&!V.has(e(h).id));b(oe,(R)=>{if(e(rt))R(Fe);else if(e(Oe))R(tt,1)})}var Pe=c(oe,2);{var k=(R)=>{Ji(R,{ondrop:J})};b(Pe,(R)=>{if(e(A)&&e(h).id===e(F)&&e(h).mode==="terminal")R(k)})}s(Ce),P(()=>{et=xe(Ce,1,"pane svelte-1duc7gd",null,et,{active:e(h).id===e(F)}),X(Ce,"aria-labelledby",`tab-${e(h).id??""}`)}),d(U,Ce)},p=C(()=>N.has(e(h).id));b(K,(U)=>{if(e(p))U(_)})}d(n,ae)});var $e=c(T,2);{var Be=(n)=>{var h=Ll();d(n,h)};b($e,(n)=>{if(e(ee)&&e(y).length===0)n(Be)})}s(Ye),s(g);var qe=c(g,2);Hi(qe,{get toastOptions(){return Gi}}),P(()=>{I=xe(g,1,"app svelte-1duc7gd",null,I,{ide:e(ee)}),ye=xe(Ye,1,"panes svelte-1duc7gd",null,ye,{hidden:!e(ee)})}),d(i,he),ue()}ki("AppShell_2rtnxn6pgp2rh",vi);
@@ -823,6 +823,7 @@ function TopBar($$renderer, $$props) {
823
823
  onNew,
824
824
  onDeleteAll
825
825
  } = $$props;
826
+ const deleteLabel = $19.derived(() => filter && filter !== "all" ? `Delete ${filter}` : "Delete all");
826
827
  const altMode = $19.derived(() => defaultMode === "terminal" ? "ide" : "terminal");
827
828
  $$renderer2.push(`<header class="topbar svelte-1h259us">`);
828
829
  Brand($$renderer2, { pet });
@@ -860,7 +861,7 @@ function TopBar($$renderer, $$props) {
860
861
  onclick: onDeleteAll,
861
862
  disabled: !canDelete,
862
863
  children: ($$renderer3) => {
863
- $$renderer3.push(`<!---->Delete all`);
864
+ $$renderer3.push(`<!---->${$19.escape(deleteLabel())}`);
864
865
  },
865
866
  $$slots: { default: true }
866
867
  });
@@ -968,10 +969,11 @@ function DashboardView($$renderer, $$props) {
968
969
  }
969
970
  async function deleteAll() {
970
971
  actionError = null;
971
- if (!confirm(`Delete all ${instances.length} instances and their copied files?`))
972
+ const ids = visible().map((i) => i.id);
973
+ if (!confirm(`Delete ${ids.length} instance${ids.length === 1 ? "" : "s"} and their copied files?`))
972
974
  return;
973
975
  try {
974
- await apiPost("/api/instances/delete-all", undefined, "Failed to delete all");
976
+ await apiPost("/api/instances/delete-all", { ids }, "Failed to delete all");
975
977
  } catch (err) {
976
978
  actionError = err.message;
977
979
  }
@@ -982,7 +984,7 @@ function DashboardView($$renderer, $$props) {
982
984
  TopBar($$renderer3, {
983
985
  auth: preflight.auth,
984
986
  pet,
985
- canDelete: instances.length > 0,
987
+ canDelete: visible().length > 0,
986
988
  ready: ready(),
987
989
  creating,
988
990
  filter,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codebay",
3
- "version": "0.16.0",
3
+ "version": "0.16.2",
4
4
  "description": "Web UI for spinning up isolated devcontainer instances from any local folder, each with a browser-based VS Code (code-server) — built for parallel Claude Code workflows.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -137,9 +137,15 @@
137
137
 
138
138
  async function deleteAll() {
139
139
  actionError = null;
140
- if (!confirm(`Delete all ${instances.length} instances and their copied files?`)) return;
140
+ const ids = visible.map((i) => i.id);
141
+ if (
142
+ !confirm(
143
+ `Delete ${ids.length} instance${ids.length === 1 ? '' : 's'} and their copied files?`
144
+ )
145
+ )
146
+ return;
141
147
  try {
142
- await apiPost('/api/instances/delete-all', undefined, 'Failed to delete all');
148
+ await apiPost('/api/instances/delete-all', { ids }, 'Failed to delete all');
143
149
  // The live stream reflects the resulting empty state.
144
150
  } catch (err) {
145
151
  actionError = (err as Error).message;
@@ -150,7 +156,7 @@
150
156
  <TopBar
151
157
  auth={preflight.auth}
152
158
  {pet}
153
- canDelete={instances.length > 0}
159
+ canDelete={visible.length > 0}
154
160
  {ready}
155
161
  {creating}
156
162
  {filter}
@@ -38,6 +38,7 @@
38
38
  onDeleteAll?: () => void;
39
39
  } = $props();
40
40
 
41
+ const deleteLabel = $derived(filter && filter !== 'all' ? `Delete ${filter}` : 'Delete all');
41
42
  const altMode = $derived<InstanceMode>(defaultMode === 'terminal' ? 'ide' : 'terminal');
42
43
  </script>
43
44
 
@@ -53,7 +54,7 @@
53
54
  <SettingsCog />
54
55
  <CredMenu {auth} />
55
56
  <Button variant="danger" size="sm" onclick={onDeleteAll} disabled={!canDelete}>
56
- Delete all
57
+ {deleteLabel}
57
58
  </Button>
58
59
  <div class="new-group">
59
60
  <Button
@@ -150,6 +150,15 @@ export function binShim(binDir: string, name: string): string | null {
150
150
  return null;
151
151
  }
152
152
 
153
+ /**
154
+ * The CLI's `node` shebang resolves to Bun under Bun, and Bun loads `bunfig.toml` from cwd — so a
155
+ * workspace cwd would run the repo's `preload` on the host; not tmpdir, since that's world-writable.
156
+ */
157
+ export function devcontainerCwd(): string {
158
+ mkdirSync(DATA_DIR, { recursive: true });
159
+ return DATA_DIR;
160
+ }
161
+
153
162
  /**
154
163
  * An argv rather than a path, because the `devcontainer.js` fallback leads with a
155
164
  * `#!/usr/bin/env node` shebang that Windows doesn't honour — there it only runs when handed to
@@ -15,6 +15,7 @@ import {
15
15
  PUBLISH_HOST,
16
16
  TTYD_PORT,
17
17
  devcontainerBin,
18
+ devcontainerCwd,
18
19
  dockerEnv
19
20
  } from './config.server.ts';
20
21
  import { spawnCapture } from './spawn.server.ts';
@@ -381,7 +382,8 @@ let cliProbeWarned = false;
381
382
 
382
383
  export async function devcontainerCliAvailable(): Promise<boolean> {
383
384
  const argv = devcontainerBin();
384
- const available = (await spawnCapture([...argv, '--version'])) !== null;
385
+ const available =
386
+ (await spawnCapture([...argv, '--version'], { cwd: devcontainerCwd() })) !== null;
385
387
  if (!available && !cliProbeWarned) {
386
388
  console.warn(`⚠ devcontainer CLI probe failed — could not run: ${argv.join(' ')}`);
387
389
  }
@@ -1032,7 +1034,7 @@ export async function devcontainerUp(
1032
1034
  opts: UpOptions = {}
1033
1035
  ): Promise<UpResult> {
1034
1036
  const proc = Bun.spawn(devcontainerUpArgs(workspaceDir, opts), {
1035
- cwd: workspaceDir,
1037
+ cwd: devcontainerCwd(),
1036
1038
  stdout: 'pipe',
1037
1039
  stderr: 'pipe',
1038
1040
  env: devcontainerUpEnv()
@@ -940,8 +940,10 @@ export async function deleteInstance(id: string): Promise<void> {
940
940
  triggerReconcile();
941
941
  }
942
942
 
943
- export async function deleteAllInstances(): Promise<void> {
943
+ export async function deleteAllInstances(ids?: string[]): Promise<void> {
944
+ const only = ids && new Set(ids);
944
945
  for (const row of allInstances()) {
946
+ if (only && !only.has(row.id)) continue;
945
947
  await deleteInstance(row.id);
946
948
  }
947
949
  }
@@ -1,10 +1,15 @@
1
1
  /** Null on anything short of a clean run with output, so callers need no error branch. */
2
2
  export async function spawnCapture(
3
3
  cmd: string[],
4
- opts?: { env?: Record<string, string | undefined> }
4
+ opts?: { env?: Record<string, string | undefined>; cwd?: string }
5
5
  ): Promise<string | null> {
6
6
  try {
7
- const proc = Bun.spawn(cmd, { stdout: 'pipe', stderr: 'ignore', env: opts?.env });
7
+ const proc = Bun.spawn(cmd, {
8
+ stdout: 'pipe',
9
+ stderr: 'ignore',
10
+ env: opts?.env,
11
+ cwd: opts?.cwd
12
+ });
8
13
  const [out, code] = await Promise.all([new Response(proc.stdout).text(), proc.exited]);
9
14
  const value = out.trim();
10
15
  return code === 0 && value ? value : null;
package/src/routes.ts CHANGED
@@ -642,8 +642,9 @@ export const routes: Record<string, MochiRouteValue> = {
642
642
  return apiError(405, 'Method Not Allowed');
643
643
  }),
644
644
 
645
- '/api/instances/delete-all': mutationRoute('POST', async () => {
646
- await deleteAllInstances();
645
+ '/api/instances/delete-all': mutationRoute('POST', async ({ request }) => {
646
+ const body = (await request.json().catch(() => null)) as { ids?: string[] } | null;
647
+ await deleteAllInstances(Array.isArray(body?.ids) ? body.ids : undefined);
647
648
  return { ok: true };
648
649
  }),
649
650
 
@@ -1,2 +0,0 @@
1
- import{a as ai,b as Mi,c as Ji,d as Ti,e as Ct,f as Zi,h as Ui}from"/_mochi/client/chunk-jm3ge348.js";import{j as ht,k as Ot,n as Ri,p as Lt,q as Qi}from"/_mochi/client/chunk-3cxaw5hr.js";import{D as Yi,v as ui,w as vt,x as ei,y as Ue,z as bi}from"/_mochi/client/chunk-bhseezf3.js";import{M as ct,N as dt,O as Ne,P as Di}from"/_mochi/client/chunk-7g3xt6ez.js";import{Q as de,R as It,S as ft,V as Hi,W as lt,X as Gi}from"/_mochi/client/chunk-3jqc40sp.js";import{$ as s,Aa as mt,Ba as At,Ca as e,Fa as Oi,Ga as Ve,Ha as U,Ia as We,Ja as v,La as Ae,Ma as Et,Na as d,Oa as qt,Pa as _,Qa as L,Sa as Ai,Ta as ze,Va as Wi,Wa as zi,Y as Bi,Za as xe,_a as yt,aa as Se,ab as it,db as $,ea as ge,fa as ue,fb as at,ga as Vt,gb as Pi,ha as C,hb as Qe,ib as pi,ja as Mt,ka as S,ma as r,na as De,oa as pe,ob as fe,pb as ce,qa as o,qb as Le,ra as be,rb as Ki,sa as ae,ta as c,ua as we,ub as Ni,wb as ki,xa as T,ya as kt,za as Xt}from"/_mochi/client/chunk-3pgw6t5j.js";import{xb as Vi}from"/_mochi/client/chunk-sxcr9gzp.js";var hi=!1;class $t extends Date{#e=S(super.getTime());#t=new Map;#i=kt;constructor(...i){super(...i);if(!hi)this.#a()}#a(){hi=!0;var i=$t.prototype,t=Date.prototype,a=Object.getOwnPropertyNames(t);for(let l of a){if(l.startsWith("get")||l.startsWith("to")||l==="valueOf")i[l]=function(...n){if(n.length>0)return e(this.#e),t[l].apply(this,n);var x=this.#t.get(l);if(x===void 0){let g=kt;Xt(this.#i),x=C(()=>{return e(this.#e),t[l].apply(this,n)}),this.#t.set(l,x),Xt(g)}return e(x)};if(l.startsWith("set"))i[l]=function(...n){var x=t[l].apply(this,n);return r(this.#e,t.getTime.call(this)),x}}}}var $i=["forEach","isDisjointFrom","isSubsetOf","isSupersetOf"],ji=["difference","intersection","symmetricDifference","union"],xi=!1;class $e extends Set{#e=new Map;#t=S(0);#i=S(0);#a=mt||-1;constructor(i){super();if(i){for(var t of i)super.add(t);this.#i.v=super.size}if(!xi)this.#r()}#l(i){return mt===this.#a?S(i):Mt(i)}#r(){xi=!0;var i=$e.prototype,t=Set.prototype;for(let a of $i)i[a]=function(...l){return e(this.#t),t[a].apply(this,l)};for(let a of ji)i[a]=function(...l){e(this.#t);var n=t[a].apply(this,l);return new $e(n)}}has(i){var t=super.has(i),a=this.#e,l=a.get(i);if(l===void 0){if(!t)return e(this.#t),!1;l=this.#l(!0),a.set(i,l)}return e(l),t}add(i){if(!super.has(i))super.add(i),r(this.#i,super.size),De(this.#t);return this}delete(i){var t=super.delete(i),a=this.#e,l=a.get(i);if(l!==void 0)a.delete(i),r(l,!1);if(t)r(this.#i,super.size),De(this.#t);return t}clear(){if(super.size===0)return;super.clear();var i=this.#e;for(var t of i.values())r(t,!1);i.clear(),r(this.#i,0),De(this.#t)}keys(){return this.values()}values(){return e(this.#t),super.values()}entries(){return e(this.#t),super.entries()}[Symbol.iterator](){return this.keys()}get size(){return e(this.#i)}}class wi extends Map{#e=new Map;#t=S(0);#i=S(0);#a=mt||-1;constructor(i){super();if(i){for(var[t,a]of i)super.set(t,a);this.#i.v=super.size}}#l(i){return mt===this.#a?S(i):Mt(i)}has(i){var t=this.#e,a=t.get(i);if(a===void 0)if(super.has(i))a=this.#l(0),t.set(i,a);else return e(this.#t),!1;return e(a),!0}forEach(i,t){this.#r(),super.forEach(i,t)}get(i){var t=this.#e,a=t.get(i);if(a===void 0)if(super.has(i))a=this.#l(0),t.set(i,a);else{e(this.#t);return}return e(a),super.get(i)}getOrInsert(i,t){if(!super.has(i))this.set(i,t);return this.get(i)}getOrInsertComputed(i,t){if(!super.has(i))this.set(i,t(i));return this.get(i)}set(i,t){var a=this.#e,l=a.get(i),n=super.get(i),x=super.set(i,t),g=this.#t;if(l===void 0)l=this.#l(0),a.set(i,l),r(this.#i,super.size),De(g);else if(n!==t){De(l);var I=g.reactions===null?null:new Set(g.reactions),p=I===null||!l.reactions?.every((O)=>I.has(O));if(p)De(g)}return x}delete(i){var t=this.#e,a=t.get(i),l=super.delete(i);if(a!==void 0)t.delete(i),r(a,-1);if(l)r(this.#i,super.size),De(this.#t);return l}clear(){if(super.size===0)return;super.clear();var i=this.#e;r(this.#i,0);for(var t of i.values())r(t,-1);De(this.#t),i.clear()}#r(){e(this.#t);var i=this.#e;if(this.#i.v!==i.size){for(var t of super.keys())if(!i.has(t)){var a=this.#l(0);i.set(t,a)}}for([,a]of this.#e)e(a)}keys(){return e(this.#t),super.keys()}values(){return this.#r(),super.values()}entries(){return this.#r(),super.entries()}[Symbol.iterator](){return this.entries()}get size(){return e(this.#i),super.size}}var pt=Symbol("replace");class zt extends URLSearchParams{#e=S(0);#t=Si();#i=!1;#a(){if(!this.#t||this.#i)return;this.#i=!0;let i=this.toString();this.#t.search=i&&`?${i}`,this.#i=!1}[pt](i){if(this.#i)return;if(i.toString()===super.toString())return;this.#i=!0;for(let t of[...super.keys()])super.delete(t);for(let[t,a]of i)super.append(t,a);De(this.#e),this.#i=!1}append(i,t){super.append(i,t),this.#a(),De(this.#e)}delete(i,t){var a=super.has(i,t);if(super.delete(i,t),a)this.#a(),De(this.#e)}get(i){return e(this.#e),super.get(i)}getAll(i){return e(this.#e),super.getAll(i)}has(i,t){return e(this.#e),super.has(i,t)}keys(){return e(this.#e),super.keys()}forEach(i,t){e(this.#e),super.forEach(i,t)}set(i,t){var a=super.getAll(i);super.set(i,t);var l=super.getAll(i);if(a.length!==l.length||a.some((n,x)=>n!==l[x]))this.#a(),De(this.#e)}sort(){super.sort(),this.#a(),De(this.#e)}toString(){return e(this.#e),super.toString()}values(){return e(this.#e),super.values()}entries(){return e(this.#e),super.entries()}[Symbol.iterator](){return this.entries()}get size(){return e(this.#e),super.size}}var jt=null;function Si(){return jt}class Ii extends URL{#e=S(super.protocol);#t=S(super.username);#i=S(super.password);#a=S(super.hostname);#l=S(super.port);#r=S(super.pathname);#n=S(super.hash);#f=S(super.search);#c;constructor(i,t){i=new URL(i,t);super(i);jt=this,this.#c=new zt(i.searchParams),jt=null}get hash(){return e(this.#n)}set hash(i){super.hash=i,r(this.#n,super.hash)}get host(){return e(this.#a),e(this.#l),super.host}set host(i){super.host=i,r(this.#a,super.hostname),r(this.#l,super.port)}get hostname(){return e(this.#a)}set hostname(i){super.hostname=i,r(this.#a,super.hostname)}get href(){return e(this.#e),e(this.#t),e(this.#i),e(this.#a),e(this.#l),e(this.#r),e(this.#n),e(this.#f),super.href}set href(i){super.href=i,r(this.#e,super.protocol),r(this.#t,super.username),r(this.#i,super.password),r(this.#a,super.hostname),r(this.#l,super.port),r(this.#r,super.pathname),r(this.#n,super.hash),r(this.#f,super.search),this.#c[pt](super.searchParams)}get password(){return e(this.#i)}set password(i){super.password=i,r(this.#i,super.password)}get pathname(){return e(this.#r)}set pathname(i){super.pathname=i,r(this.#r,super.pathname)}get port(){return e(this.#l)}set port(i){super.port=i,r(this.#l,super.port)}get protocol(){return e(this.#e)}set protocol(i){super.protocol=i,r(this.#e,super.protocol),r(this.#l,super.port)}get search(){return e(this.#f)}set search(i){super.search=i,r(this.#f,super.search),this.#c[pt](super.searchParams)}get username(){return e(this.#t)}set username(i){super.username=i,r(this.#t,super.username)}get origin(){return e(this.#e),e(this.#a),e(this.#l),super.origin}get searchParams(){return this.#c}toString(){return this.href}toJSON(){return this.href}}class Ei{#e;#t;constructor(i,t){this.#e=i,this.#t=qt(t)}get current(){return this.#t(),this.#e()}}function _i(i,t){return i===9?t-1:i-1}function Nt(i,t,a){if(a<=0)return null;let l=i<0||i>=a?0:i;switch(t){case"ArrowRight":return(l+1)%a;case"ArrowLeft":return(l-1+a)%a;case"Home":return 0;case"End":return a-1;default:{if(!/^[1-9]$/.test(t))return null;let n=_i(Number(t),a);return n<a?n:null}}}var yi=/^[A-Za-z0-9._-]+$/;function ea(i){let t=i.trim();if(!t)return null;let a,l,n=t.match(/^[A-Za-z0-9._-]+@([A-Za-z0-9.-]+):(.+)$/);if(n)a=n[1],l=n[2];else if(/^[a-z][a-z0-9+.-]*:\/\//i.test(t)){let p;try{p=new URL(t)}catch{return null}if(p.protocol!=="http:"&&p.protocol!=="https:"&&p.protocol!=="ssh:")return null;a=p.hostname,l=p.pathname}else{let p=t.match(/^([A-Za-z0-9-]+\.[A-Za-z0-9.-]+)\/(.+)$/);if(!p)return null;a=p[1],l=p[2]}if(!a||!l)return null;let x=l.replace(/\.git$/i,"").split("/").filter(Boolean),[g,I]=x;if(!g||!I||!yi.test(g)||!yi.test(I))return null;return{host:a,owner:g,repo:I,cloneUrl:`https://${a}/${g}/${I}.git`}}function _t(i){return ea(i)!==null}var Ci="::drives",Li="This PC";var ta=new Set(["$$slots","$$events","$$legacy"]);function Pt(i,t){let a=fe(t,ta),l={name:"folder-clock",size:24,node:[["path",{d:"M16 14v2.2l1.6 1"}],["path",{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"}],["circle",{cx:"16",cy:"16",r:"6"}]]};de(i,ce(()=>a,{get icon(){return l}}))}var ia=new Set(["$$slots","$$events","$$legacy"]);function gt(i,t){let a=fe(t,ia),l={name:"git-branch",size:24,node:[["path",{d:"M15 6a9 9 0 0 0-9 9V3"}],["circle",{cx:"18",cy:"6",r:"3"}],["circle",{cx:"6",cy:"18",r:"3"}]]};de(i,ce(()=>a,{get icon(){return l}}))}var aa=new Set(["$$slots","$$events","$$legacy"]);function Tt(i,t){let a=fe(t,aa),l={name:"arrow-up",size:24,node:[["path",{d:"m5 12 7-7 7 7"}],["path",{d:"M12 19V5"}]]};de(i,ce(()=>a,{get icon(){return l}}))}var la=new Set(["$$slots","$$events","$$legacy"]);function Dt(i,t){let a=fe(t,la),l={name:"folder",size:24,node:[["path",{d:"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z"}]]};de(i,ce(()=>a,{get icon(){return l}}))}var ra=new Set(["$$slots","$$events","$$legacy"]);function ut(i,t){let a=fe(t,ra),l={name:"triangle-alert",size:24,node:[["path",{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"}],["path",{d:"M12 9v4"}],["path",{d:"M12 17h.01"}]],aliases:["alert-triangle"]};de(i,ce(()=>a,{get icon(){return l}}))}var na=v('<div class="recent-row svelte-oq97c4"><button class="recent-pick svelte-oq97c4"><span class="icon svelte-oq97c4"><!></span> <span class="recent-text svelte-oq97c4"><span class="recent-name svelte-oq97c4"> </span> <span class="recent-path svelte-oq97c4"> </span></span></button> <button class="recent-x svelte-oq97c4" title="Remove from history"><!></button></div>'),fa=v('<button class="recent-toggle svelte-oq97c4"> </button>'),ca=v('<div class="recent svelte-oq97c4"><div class="recent-label svelte-oq97c4">Recent</div> <!> <!></div>'),da=v('<div class="muted svelte-oq97c4">Loading…</div>'),sa=v('<div class="muted err svelte-oq97c4"> </div>'),oa=v('<div class="row svelte-oq97c4"><button class="nav svelte-oq97c4"><span class="icon svelte-oq97c4"><!></span> <span class="ename svelte-oq97c4">..</span></button></div>'),ma=v('<div class="muted svelte-oq97c4"> </div>'),ga=v('<span class="badge svelte-oq97c4">devcontainer</span>'),ua=v('<div><button class="nav svelte-oq97c4"><span class="icon svelte-oq97c4"><!></span> <span class="ename svelte-oq97c4"> </span> <!></button> <button class="pick-inline svelte-oq97c4">Select</button></div>'),va=v("<!> <!> <!>",1),ha=v(`<div class="warn svelte-oq97c4"><!> <span>No <code class="svelte-oq97c4">devcontainer.json</code> in this folder — a default image will be used if you select
2
- it.</span></div>`),xa=v('<div class="overlay svelte-oq97c4" role="button" tabindex="0"><div class="modal panel svelte-oq97c4" role="dialog" aria-modal="true" aria-label="Pick a project folder" tabindex="-1"><div class="head svelte-oq97c4"><h2 class="svelte-oq97c4">Pick a project folder</h2> <button class="x svelte-oq97c4" aria-label="Close"><!></button></div> <div class="mode svelte-oq97c4"><div class="mode-label svelte-oq97c4">Editor</div> <div class="mode-toggle svelte-oq97c4" role="group" aria-label="Editor mode"><button type="button"><!> Full IDE</button> <button type="button"><!> 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" spellcheck="false" autocomplete="off"/> <input class="clone-branch svelte-oq97c4" type="text" placeholder="branch (optional)" spellcheck="false" autocomplete="off"/> <button class="clone-btn svelte-oq97c4">Clone</button></div></div> <div class="crumbs svelte-oq97c4"><code class="svelte-oq97c4"> </code></div> <!> <div class="search svelte-oq97c4"><input type="text" placeholder="Filter folders…" spellcheck="false" autocomplete="off" class="svelte-oq97c4"/></div> <div class="list svelte-oq97c4"><!></div> <!> <div class="foot svelte-oq97c4"><span class="hint svelte-oq97c4"> </span> <button class="primary svelte-oq97c4">Select this folder</button></div></div></div>');function ti(i,t){ge(t,!0);let a=Le(t,"defaultMode",3,"ide"),l=Le(t,"initialMode",3,null),n=S(pe(l())),x=C(()=>e(n)??a()),g=S(null),I=S(!0),p=S(null),O=S(""),Y=S(null),A=S(pe([])),le=S(!1),R=S(""),X=S(""),G=C(()=>_t(e(R)));function te(){if(!e(G))return;t.onpick(e(R).trim(),{branch:e(X).trim()||void 0,mode:e(x)})}let j=C(()=>e(g)?e(g).entries.filter((N)=>N.name.toLowerCase().includes(e(O).trim().toLowerCase())):[]),ee=C(()=>e(g)?.path===Ci),re=C(()=>e(le)?e(A):e(A).slice(0,5));async function b(){try{let N=await ei("/api/history");r(A,N.history??[],!0)}catch{}}async function y(N){let oe=e(A);r(A,e(A).filter((Fe)=>Fe.source_path!==N),!0);try{await bi("/api/history",{sourcePath:N})}catch{r(A,oe,!0)}}async function D(N=null){r(I,!0),r(p,null),r(O,"");try{let oe=N?`/api/browse?path=${encodeURIComponent(N)}`:"/api/browse";r(g,await ei(oe,void 0,"Could not list folder"),!0)}catch(oe){r(p,oe.message,!0)}finally{r(I,!1)}await At(),e(Y)?.focus()}we(()=>{D(),b()});var F=xa(),se=o(F),z=o(se),B=c(o(z),2),ne=o(B);It(ne,{size:16}),s(B),s(z);var ve=c(z,2),Ie=c(o(ve),2),Me=o(Ie);let W;var m=o(Me);ht(m,{size:15}),Se(),s(Me);var E=c(Me,2);let V;var H=o(E);vt(H,{size:15}),Se(),s(E),s(Ie),s(ve);var he=c(ve,2),u=c(o(he),2),w=o(u);it(w);var J=c(w,2);it(J);var Ee=c(J,2);s(u),s(he);var Ke=c(he,2),Ye=o(Ke),ye=ae(Ye,!0);s(Ke);var P=c(Ke,2);{var je=(N)=>{var oe=ca(),Fe=c(o(oe),2);ze(Fe,17,()=>e(re),(Oe)=>Oe.source_path,(Oe,Pe)=>{var k=na(),Z=o(k),Te=o(Z),He=o(Te);{var Ge=(Xe)=>{gt(Xe,{size:16})},ke=C(()=>_t(e(Pe).source_path)),Re=(Xe)=>{Pt(Xe,{size:16})};L(He,(Xe)=>{if(e(ke))Xe(Ge);else Xe(Re,-1)})}s(Te);var Je=c(Te,2),Ze=o(Je),St=ae(Ze,!0),Yt=c(Ze,2),Gt=ae(Yt,!0);s(Je),s(Z);var ot=c(Z,2),nt=o(ot);It(nt,{size:14}),s(ot),s(k),T(()=>{_(St,e(Pe).name),_(Gt,e(Pe).source_path),$(ot,"aria-label",`Remove ${e(Pe).name??""} from history`)}),U("click",Z,()=>t.onpick(e(Pe).source_path,{mode:e(x)})),U("click",ot,(Xe)=>{Xe.stopPropagation(),y(e(Pe).source_path)}),d(Oe,k)});var rt=c(Fe,2);{var tt=(Oe)=>{var Pe=fa(),k=ae(Pe,!0);T(()=>_(k,e(le)?"Show fewer":`Show all (${e(A).length})`)),U("click",Pe,()=>r(le,!e(le))),d(Oe,Pe)};L(rt,(Oe)=>{if(e(A).length>5)Oe(tt)})}s(oe),d(N,oe)};L(P,(N)=>{if(e(A).length>0)N(je)})}var Be=c(P,2),qe=o(Be);it(qe),Qe(qe,(N)=>r(Y,N),()=>e(Y)),s(Be);var f=c(Be,2),h=o(f);{var ie=(N)=>{var oe=da();d(N,oe)},K=(N)=>{var oe=sa(),Fe=ae(oe,!0);T(()=>_(Fe,e(p))),d(N,oe)},q=(N)=>{var oe=va(),Fe=be(oe);{var rt=(k)=>{var Z=oa(),Te=o(Z),He=o(Te),Ge=o(He);Tt(Ge,{size:16}),s(He),Se(2),s(Te),s(Z),U("click",Te,()=>D(e(g)?.parent??null)),d(k,Z)};L(Fe,(k)=>{if(e(g).parent&&!e(O))k(rt)})}var tt=c(Fe,2);{var Oe=(k)=>{var Z=ma(),Te=ae(Z,!0);T(()=>_(Te,e(O)?"No folders match.":"No subfolders here.")),d(k,Z)};L(tt,(k)=>{if(e(j).length===0)k(Oe)})}var Pe=c(tt,2);ze(Pe,19,()=>e(j),(k)=>k.path,(k,Z,Te)=>{var He=ua();let Ge;var ke=o(He),Re=o(ke),Je=o(Re);Dt(Je,{size:16}),s(Re);var Ze=c(Re,2),St=ae(Ze,!0),Yt=c(Ze,2);{var Gt=(nt)=>{var Xe=ga();d(nt,Xe)};L(Yt,(nt)=>{if(e(Z).hasDevcontainer)nt(Gt)})}s(ke);var ot=c(ke,2);s(He),T((nt)=>{Ge=xe(He,1,"row svelte-oq97c4",null,Ge,{"first-match":nt}),_(St,e(Z).name)},[()=>e(O).trim()&&e(Te)===0]),U("click",ke,()=>D(e(Z).path)),U("click",ot,()=>t.onpick(e(Z).path,{mode:e(x)})),d(k,He)}),d(N,oe)};L(h,(N)=>{if(e(I))N(ie);else if(e(p))N(K,1);else if(e(g))N(q,2)})}s(f);var M=c(f,2);{var Q=(N)=>{var oe=ha(),Fe=o(oe);ut(Fe,{size:15}),Se(2),s(oe),d(N,oe)};L(M,(N)=>{if(e(g)&&!e(g).hasDevcontainer&&!e(ee))N(Q)})}var Ce=c(M,2),et=o(Ce),st=ae(et,!0),_e=c(et,2);s(Ce),s(se),s(F),T(()=>{W=xe(Me,1,"mode-btn svelte-oq97c4",null,W,{active:e(x)==="ide"}),$(Me,"aria-pressed",e(x)==="ide"),V=xe(E,1,"mode-btn svelte-oq97c4",null,V,{active:e(x)==="terminal"}),$(E,"aria-pressed",e(x)==="terminal"),Ee.disabled=!e(G),_(ye,e(ee)?Li:e(g)?.path??"…"),_(st,e(ee)?"Pick a drive to browse.":"Browse to a folder, then select this folder or any subfolder."),_e.disabled=!e(g)||e(ee)}),U("click",F,function(...N){t.onclose?.apply(this,N)}),U("keydown",F,(N)=>N.key==="Escape"&&t.onclose()),U("click",se,(N)=>N.stopPropagation()),U("keydown",se,()=>{}),U("click",B,function(...N){t.onclose?.apply(this,N)}),U("click",Me,()=>r(n,"ide")),U("click",E,()=>r(n,"terminal")),U("keydown",w,(N)=>{if(N.key==="Enter")N.preventDefault(),te()}),at(w,()=>e(R),(N)=>r(R,N)),U("keydown",J,(N)=>{if(N.key==="Enter")N.preventDefault(),te()}),at(J,()=>e(X),(N)=>r(X,N)),U("click",Ee,te),U("keydown",qe,(N)=>{let oe=e(j)[0];if(N.key==="Enter"&&oe)N.preventDefault(),D(oe.path)}),at(qe,()=>e(O),(N)=>r(O,N)),U("click",_e,()=>e(g)&&!e(ee)&&t.onpick(e(g).path,{mode:e(x)})),d(i,F),ue()}We(["click","keydown"]);var wa=v('<div class="branch svelte-jv8lut" title="Branch checked out in the container"><!><span class="svelte-jv8lut"> </span></div>');function ii(i,t){var a=wa(),l=o(a);gt(l,{size:12});var n=c(l),x=ae(n,!0);s(a),T(()=>_(x,t.branch)),d(i,a)}var Sa=new Set(["$$slots","$$events","$$legacy"]);function Ft(i,t){let a=fe(t,Sa),l={name:"cable",size:24,node:[["path",{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"}],["path",{d:"M17 21v-2"}],["path",{d:"M19 14V6.5a1 1 0 0 0-7 0v11a1 1 0 0 1-7 0V10"}],["path",{d:"M21 21v-2"}],["path",{d:"M3 5V3"}],["path",{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"}],["path",{d:"M7 5V3"}]]};de(i,ce(()=>a,{get icon(){return l}}))}var Ia=v('<a target="_blank" rel="noopener"> </a>'),Ea=v('<div class="fports svelte-1uaz383" title="Forwarded ports — click to open"><!> <span class="list svelte-1uaz383"></span></div>');function li(i,t){ge(t,!0);var a=Et(),l=be(a);{var n=(x)=>{var g=Ea(),I=o(g);Ft(I,{size:12});var p=c(I,2);ze(p,21,()=>t.ports,(O)=>O.container_port,(O,Y)=>{var A=Ia();let le;var R=ae(A,!0);T((X,G)=>{le=xe(A,1,"fport svelte-1uaz383",null,le,{open:e(Y).open}),$(A,"href",X),$(A,"title",G),_(R,e(Y).container_port)},[()=>ai(e(Y).host_port),()=>`container :${e(Y).container_port} → ${ai(e(Y).host_port)} ${e(Y).open?"(open)":"(not published yet)"}`]),d(O,A)}),s(p),s(g),d(x,g)};L(l,(x)=>{if(t.ports.length)x(n)})}d(i,a),ue()}var ya=v('<div class="busy-overlay svelte-13338y7" aria-live="polite"><span class="busy-label svelte-13338y7"> </span></div>'),Ca=v('<input class="name-edit svelte-13338y7"/>'),La=v('<button class="name svelte-13338y7" title="Click to rename"> </button>'),ba=v("<span></span>"),Ma=v('<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"> </span></div>'),pa=v('<div class="card-error svelte-13338y7"> </div>'),za=v("<!> <!>",1),Na=v('<li><!> <div class="card-head svelte-13338y7"><!> <!> <!> <!></div> <div class="path svelte-13338y7"> </div> <!> <!> <!> <!> <div class="actions svelte-13338y7"><!> <!> <!> <!></div></li>');function ri(i,t){ge(t,!0);let a=Le(t,"editingName",15),l=Le(t,"pending",3,null),n=C(()=>t.instance.status==="running"||t.instance.status==="stopped"||t.instance.status==="error"&&!!t.instance.container_id),x={start:"Starting…",stop:"Stopping…",delete:"Deleting…",rebuild:"Rebuilding…"};var g=Na();let I;var p=o(g);{var O=(u)=>{var w=ya(),J=o(w),Ee=ae(J,!0);s(w),T(()=>_(Ee,x[l()])),d(u,w)};L(p,(u)=>{if(l())u(O)})}var Y=c(p,2),A=o(Y);{let u=C(()=>ct(t.instance.avatar??void 0)??null);dt(A,{get name(){return t.instance.name},get art(){return e(u)},interactive:!0})}var le=c(A,2);{var R=(u)=>{var w=Ca();it(w),Vt(w,!0),Ve("focus",w,(J)=>J.currentTarget.select()),Ve("blur",w,function(...J){t.oncommitrename?.apply(this,J)}),U("keydown",w,(J)=>{if(J.key==="Enter")J.currentTarget.blur();else if(J.key==="Escape")t.oncancelrename()}),at(w,a),d(u,w)},X=(u)=>{var w=La(),J=ae(w,!0);T(()=>_(J,t.instance.name)),U("click",w,function(...Ee){t.onstartrename?.apply(this,Ee)}),d(u,w)};L(le,(u)=>{if(t.editing)u(R);else u(X,-1)})}var G=c(le,2);{var te=(u)=>{var w=ba();let J;T(()=>{J=xe(w,1,"attn svelte-13338y7",null,J,{"attn-done":t.instance.attention==="done","attn-waiting":t.instance.attention==="waiting"}),$(w,"title",t.instance.attention==="waiting"?"Claude is waiting for input":"Claude finished"),$(w,"aria-label",t.instance.attention==="waiting"?"Claude is waiting for input":"Claude finished")}),d(u,w)};L(G,(u)=>{if(t.instance.attention)u(te)})}var j=c(G,2);Mi(j,{get status(){return t.instance.status}}),s(Y);var ee=c(Y,2),re=ae(ee,!0),b=c(ee,2);{var y=(u)=>{li(u,{get ports(){return t.instance.forwarded_ports}})};L(b,(u)=>{if(t.instance.status==="running")u(y)})}var D=c(b,2);{var F=(u)=>{ii(u,{get branch(){return t.instance.git_branch}})};L(D,(u)=>{if(t.instance.git_branch)u(F)})}var se=c(D,2);{var z=(u)=>{var w=Ma(),J=c(o(w),2),Ee=ae(J,!0);s(w),T(()=>_(Ee,t.instance.active_run.status==="queued"?"Agent run queued":t.instance.active_run.last_activity??"Agent running")),d(u,w)};L(se,(u)=>{if(t.instance.active_run)u(z)})}var B=c(se,2);{var ne=(u)=>{var w=pa(),J=ae(w,!0);T(()=>_(J,t.instance.error)),d(u,w)};L(B,(u)=>{if(t.instance.status==="error"&&t.instance.error)u(ne)})}var ve=c(B,2),Ie=o(ve);{var Me=(u)=>{var w=za(),J=be(w);{let Ke=C(()=>`/ide/${t.instance.id}`);Ne(J,{variant:"primary",size:"sm",get href(){return e(Ke)},children:(Ye,ye)=>{Se();var P=Ae();T(()=>_(P,t.instance.mode==="terminal"?"Open terminal":"Open IDE")),d(Ye,P)},$$slots:{default:!0}})}var Ee=c(J,2);Ne(Ee,{size:"sm",onclick:()=>t.onact("stop"),children:(Ke,Ye)=>{Se();var ye=Ae("Stop");d(Ke,ye)},$$slots:{default:!0}}),d(u,w)},W=(u)=>{Ne(u,{size:"sm",onclick:()=>t.onact("start"),children:(w,J)=>{Se();var Ee=Ae("Start");d(w,Ee)},$$slots:{default:!0}})},m=(u)=>{{let w=C(()=>ft(`/instances/${t.instance.id}`));Ne(u,{size:"sm",get href(){return e(w)},target:"_blank",rel:"noopener noreferrer",children:(J,Ee)=>{Se();var Ke=Ae("View logs");d(J,Ke)},$$slots:{default:!0}})}};L(Ie,(u)=>{if(t.instance.status==="running")u(Me);else if(t.instance.status==="stopped"||t.instance.status==="error"&&t.instance.container_id)u(W,1);else if(t.instance.status==="creating")u(m,2)})}var E=c(Ie,2);{var V=(u)=>{Ne(u,{size:"sm",title:"Recreate the container and re-run setup (credentials, hooks, port forwards)",onclick:()=>t.onact("rebuild"),children:(w,J)=>{Se();var Ee=Ae("Rebuild");d(w,Ee)},$$slots:{default:!0}})};L(E,(u)=>{if(e(n))u(V)})}var H=c(E,2);{let u=C(()=>ft(`/instances/${t.instance.id}`));Ne(H,{size:"sm",ghost:!0,get href(){return e(u)},target:"_blank",rel:"noopener noreferrer",children:(w,J)=>{Se();var Ee=Ae("Details");d(w,Ee)},$$slots:{default:!0}})}var he=c(H,2);Ne(he,{variant:"danger",size:"sm",onclick:()=>t.onact("delete"),children:(u,w)=>{Se();var J=Ae("Delete");d(u,J)},$$slots:{default:!0}}),s(ve),s(g),T(()=>{I=xe(g,1,"card panel svelte-13338y7",null,I,{busy:!!l()}),$(g,"aria-busy",!!l()||void 0),$(ee,"title",t.instance.source_path),_(re,t.instance.source_path)}),d(i,g),ue()}We(["keydown","click"]);var Pa=new Set(["$$slots","$$events","$$legacy"]);function Bt(i,t){let a=fe(t,Pa),l={name:"component",size:24,node:[["path",{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"}],["path",{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"}],["path",{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"}],["path",{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"}]]};de(i,ce(()=>a,{get icon(){return l}}))}var Ta=new Set(["$$slots","$$events","$$legacy"]);function Wt(i,t){let a=fe(t,Ta),l={name:"package",size:24,node:[["path",{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"}],["path",{d:"M12 22V12"}],["polyline",{points:"3.29 7 12 12 20.71 7"}],["path",{d:"m7.5 4.27 9 5.15"}]]};de(i,ce(()=>a,{get icon(){return l}}))}var Da=v('<a class="brand svelte-94cd8h" href="/"><span class="logo svelte-94cd8h"><!></span><span class="words svelte-94cd8h"><span>Codebay</span><span class="tagline svelte-94cd8h">devcontainer manager</span></span></a>');function ni(i,t){ge(t,!0);var a=Da(),l=o(a),n=o(l);{var x=(I)=>{dt(I,{get art(){return t.pet},get name(){return t.pet.name},scale:4})},g=(I)=>{Wt(I,{size:22})};L(n,(I)=>{if(t.pet)I(x);else I(g,-1)})}s(l),Se(),s(a),d(i,a),ue()}var Aa=v('<button type="button" role="radio"> </button>'),Fa=v('<div class="picker svelte-12yor8r" role="radiogroup" aria-label="Filter instances"></div>');function fi(i,t){ge(t,!0);let a=[{value:"all",label:"All"},{value:"active",label:"Active"},{value:"stopped",label:"Stopped"}];var l=Fa();ze(l,21,()=>a,(n)=>n.value,(n,x)=>{var g=Aa();let I;var p=ae(g,!0);T(()=>{I=xe(g,1,"segment svelte-12yor8r",null,I,{active:t.value===e(x).value}),$(g,"aria-checked",t.value===e(x).value),_(p,e(x).label)}),U("click",g,()=>t.onchange(e(x).value)),d(n,g)}),s(l),d(i,l),ue()}We(["click"]);var Va=new Set(["$$slots","$$events","$$legacy"]);function xt(i,t){let a=fe(t,Va),l={name:"settings",size:24,node:[["path",{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"}],["circle",{cx:"12",cy:"12",r:"3"}]]};de(i,ce(()=>a,{get icon(){return l}}))}var Ba=v('<a class="cog svelte-1e745g8" target="_blank" rel="noopener noreferrer" aria-label="Settings" title="Settings"><!></a>');function ci(i,t){ge(t,!1),pi();var a=Ba(),l=o(a);xt(l,{size:16}),s(a),T((n)=>$(a,"href",n),[()=>ft("/settings")]),d(i,a),ue()}var Wa=new Set(["$$slots","$$events","$$legacy"]);function Kt(i,t){let a=fe(t,Wa),l={name:"link",size:24,node:[["path",{d:"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["path",{d:"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}]]};de(i,ce(()=>a,{get icon(){return l}}))}var Ka=v('<button type="button" class="cred-row svelte-vongf9" role="menuitem"><span></span> <span class="cred-label"> </span> <span class="cred-state svelte-vongf9"> </span></button>'),Oa=v('<div class="cred-dropdown panel svelte-vongf9" role="menu"></div>'),Ha=v('<div class="cred-menu svelte-vongf9"><button aria-haspopup="menu" aria-label="Credentials" title="Credentials"><!></button> <!></div>');function di(i,t){ge(t,!0);let a=S(!1),l=C(()=>t.auth.filter((R)=>R.available).length),n=C(()=>e(l)===t.auth.length?"ok":e(l)===0?"error":"warn"),x={ok:Kt,warn:ut,error:It},g=C(()=>x[e(n)]);function I(R){if(R.available)lt.success(`${R.label} credentials come from ${R.source}.`);else{let X=R.hint?` — ${R.hint}`:"";lt.error(`No ${R.label} credentials found${X}.`)}}we(()=>{if(!e(a))return;let R=(G)=>{if(!G.target?.closest(".cred-menu"))r(a,!1)},X=(G)=>{if(G.key==="Escape")r(a,!1)};return window.addEventListener("click",R),window.addEventListener("keydown",X),()=>{window.removeEventListener("click",R),window.removeEventListener("keydown",X)}});var p=Ha(),O=o(p),Y=o(O);zi(Y,()=>e(g),(R,X)=>{X(R,{size:16})}),s(O);var A=c(O,2);{var le=(R)=>{var X=Oa();ze(X,21,()=>t.auth,(G)=>G.id,(G,te)=>{var j=Ka(),ee=o(j),re=c(ee,2),b=ae(re,!0),y=c(re,2),D=ae(y,!0);s(j),T(()=>{$(j,"title",e(te).available?`Credentials from ${e(te).source}, copied into each new instance.`:`No credentials found on this computer${e(te).hint?` — ${e(te).hint}`:""}.`),xe(ee,1,`dot ${e(te).available?"on":"off"}`,"svelte-vongf9"),_(b,e(te).label),_(D,e(te).available?"Authorized":"Not found")}),U("click",j,()=>I(e(te))),d(G,j)}),s(X),d(R,X)};L(A,(R)=>{if(e(a))R(le)})}s(p),T(()=>{xe(O,1,`cred ${e(n)??""}`,"svelte-vongf9"),$(O,"aria-expanded",e(a))}),U("click",O,()=>r(a,!e(a))),d(i,p),ue()}We(["click"]);var Ja=v('<header class="topbar svelte-1h259us"><!> <div class="topbar-actions svelte-1h259us"><!> <!> <!> <!> <!> <div class="new-group svelte-1h259us"><!> <!></div></div></header>');function si(i,t){ge(t,!0);let a=Le(t,"canDelete",3,!1),l=Le(t,"ready",3,!0),n=Le(t,"creating",3,!1),x=Le(t,"defaultMode",3,"ide"),g=C(()=>x()==="terminal"?"ide":"terminal");var I=Ja(),p=o(I);ni(p,{get pet(){return t.pet}});var O=c(p,2),Y=o(O);{var A=(b)=>{Ne(b,{variant:"default",size:"sm",get icon(){return Bt},href:"/debug",children:(y,D)=>{Se();var F=Ae("Debug");d(y,F)},$$slots:{default:!0}})};L(Y,(b)=>{if(Ni)b(A)})}var le=c(Y,2);{var R=(b)=>{fi(b,{get value(){return t.filter},get onchange(){return t.onFilter}})};L(le,(b)=>{if(t.filter&&t.onFilter)b(R)})}var X=c(le,2);ci(X,{});var G=c(X,2);di(G,{get auth(){return t.auth}});var te=c(G,2);{let b=C(()=>!a());Ne(te,{variant:"danger",size:"sm",get onclick(){return t.onDeleteAll},get disabled(){return e(b)},children:(y,D)=>{Se();var F=Ae("Delete all");d(y,F)},$$slots:{default:!0}})}var j=c(te,2),ee=o(j);{let b=C(()=>n()?void 0:Ot),y=C(()=>!l()||n());Ne(ee,{variant:"primary",size:"sm",get icon(){return e(b)},onclick:()=>t.onNew?.(),get disabled(){return e(y)},children:(D,F)=>{Se();var se=Ae();T(()=>_(se,n()?"Creating…":"New instance")),d(D,se)},$$slots:{default:!0}})}var re=c(ee,2);{let b=C(()=>e(g)==="terminal"?vt:ht),y=C(()=>!l()||n()),D=C(()=>e(g)==="terminal"?"New terminal instance":"New full IDE instance"),F=C(()=>e(g)==="terminal"?"New terminal instance":"New full IDE instance");Ne(re,{variant:"default",size:"sm",square:!0,get icon(){return e(b)},iconSize:15,onclick:()=>t.onNew?.(e(g)),get disabled(){return e(y)},get title(){return e(D)},get "aria-label"(){return e(F)}})}s(j),s(O),s(I),d(i,I),ue()}var Za=v("<span>Docker daemon is not reachable.</span>"),Ra=v("<span>The devcontainer CLI is not available.</span>"),Qa=v('<div class="banner error svelte-146pixd"><strong>Setup needed.</strong> <!> <!></div>'),Ua=v('<div class="banner error svelte-146pixd"><strong>Error.</strong> <span> </span></div>'),Ya=v('<div class="empty svelte-146pixd"><p class="empty-sub svelte-146pixd">Loading…</p></div>'),Ga=v('<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> <!></div>'),ka=v('<div class="empty svelte-146pixd"><p class="empty-sub svelte-146pixd"> </p></div>'),Xa=v('<ul class="grid svelte-146pixd"></ul>'),$a=v('<!> <main class="stage svelte-146pixd"><!> <!> <!></main> <!>',1);function oi(i,t){ge(t,!0);let a=S(!1),l=S(null),n=S(!1),x=S(null),g=S(null),I=S(""),p=S(pe({})),O=C(()=>t.preflight.docker&&t.preflight.cli),Y=C(()=>t.instances.filter((m)=>{if(t.filter==="active")return m.status==="running"||m.status==="creating";if(t.filter==="stopped")return m.status==="stopped"||m.status==="error";return!0}));we(()=>{for(let[m,{since:E}]of Object.entries(e(p))){let V=t.instances.find((H)=>H.id===m);if(!V||V.status!==E)A(m)}});function A(m){let{[m]:E,...V}=e(p);r(p,V,!0)}async function le(m,E){r(a,!1),r(n,!0),r(x,null);try{await Ue("/api/instances",{sourcePath:m,branch:E?.branch,mode:E?.mode},"Failed to create instance")}catch(V){r(x,V.message,!0)}finally{r(n,!1)}}async function R(m,E){if(r(x,null),E==="delete"&&!confirm("Delete this instance and its copied files?"))return;if(E==="rebuild"&&!confirm("Recreate this container and re-run setup? The workspace is kept."))return;let V=t.instances.find((H)=>H.id===m)?.status;if(V)r(p,{...e(p),[m]:{action:E,since:V}},!0);try{await Ue(`/api/instances/${m}/${E}`,void 0,`Failed to ${E}`)}catch(H){r(x,H.message,!0),A(m)}}function X(m){r(g,m.id,!0),r(I,m.name,!0)}function G(){r(g,null),r(I,"")}async function te(m){let E=e(I).trim(),V=t.instances.find((H)=>H.id===m)?.name;if(!E||E===V){G();return}G(),r(x,null);try{await Ue(`/api/instances/${m}/rename`,{name:E},"Failed to rename")}catch(H){r(x,H.message,!0)}}async function j(){if(r(x,null),!confirm(`Delete all ${t.instances.length} instances and their copied files?`))return;try{await Ue("/api/instances/delete-all",void 0,"Failed to delete all")}catch(m){r(x,m.message,!0)}}var ee=$a(),re=be(ee);{let m=C(()=>t.instances.length>0);si(re,{get auth(){return t.preflight.auth},get pet(){return t.pet},get canDelete(){return e(m)},get ready(){return e(O)},get creating(){return e(n)},get filter(){return t.filter},get onFilter(){return t.onFilter},get defaultMode(){return t.preflight.defaultMode},onNew:(E)=>{r(l,E??null,!0),r(a,!0)},onDeleteAll:j})}var b=c(re,2),y=o(b);{var D=(m)=>{var E=Qa(),V=c(o(E),2);{var H=(w)=>{var J=Za();d(w,J)};L(V,(w)=>{if(!t.preflight.docker)w(H)})}var he=c(V,2);{var u=(w)=>{var J=Ra();d(w,J)};L(he,(w)=>{if(!t.preflight.cli)w(u)})}s(E),d(m,E)};L(y,(m)=>{if(!e(O))m(D)})}var F=c(y,2);{var se=(m)=>{var E=Ua(),V=c(o(E),2),H=ae(V,!0);s(E),T(()=>_(H,e(x))),d(m,E)};L(F,(m)=>{if(e(x))m(se)})}var z=c(F,2);{var B=(m)=>{var E=Ya();d(m,E)},ne=(m)=>{var E=Ga(),V=c(o(E),4);{let H=C(()=>!e(O));Ne(V,{variant:"primary",get icon(){return Ot},onclick:()=>r(a,!0),get disabled(){return e(H)},children:(he,u)=>{Se();var w=Ae("New instance");d(he,w)},$$slots:{default:!0}})}s(E),d(m,E)},ve=(m)=>{var E=ka(),V=o(E),H=ae(V);s(E),T(()=>_(H,`No ${t.filter??""} instances.`)),d(m,E)},Ie=(m)=>{var E=Xa();ze(E,21,()=>e(Y),(V)=>V.id,(V,H)=>{{let he=C(()=>e(g)===e(H).id),u=C(()=>e(p)[e(H).id]?.action??null);ri(V,{get instance(){return e(H)},get editing(){return e(he)},get pending(){return e(u)},onact:(w)=>R(e(H).id,w),onstartrename:()=>X(e(H)),oncommitrename:()=>te(e(H).id),oncancelrename:G,get editingName(){return e(I)},set editingName(w){r(I,w,!0)}})}}),s(E),d(m,E)};L(z,(m)=>{if(!t.loaded)m(B);else if(t.instances.length===0)m(ne,1);else if(e(Y).length===0)m(ve,2);else m(Ie,-1)})}s(b);var Me=c(b,2);{var W=(m)=>{ti(m,{onpick:le,get defaultMode(){return t.preflight.defaultMode},get initialMode(){return e(l)},onclose:()=>r(a,!1)})};L(Me,(m)=>{if(e(a))m(W)})}d(i,ee),ue()}var ja=new Set(["$$slots","$$events","$$legacy"]);function wt(i,t){let a=fe(t,ja),l={name:"rotate-cw",size:24,node:[["path",{d:"M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8"}],["path",{d:"M21 3v5h-5"}]]};de(i,ce(()=>a,{get icon(){return l}}))}var qa=new Set(["$$slots","$$events","$$legacy"]);function Ht(i,t){let a=fe(t,qa),l={name:"chevron-left",size:24,node:[["path",{d:"m15 18-6-6 6-6"}]]};de(i,ce(()=>a,{get icon(){return l}}))}var _a=new Set(["$$slots","$$events","$$legacy"]);function Jt(i,t){let a=fe(t,_a),l={name:"circle-stop",size:24,node:[["circle",{cx:"12",cy:"12",r:"10"}],["rect",{x:"9",y:"9",width:"6",height:"6",rx:"1"}]],aliases:["stop-circle"]};de(i,ce(()=>a,{get icon(){return l}}))}var el=v('<button type="button" class="page svelte-r39acv" aria-label="Scroll tabs left"><!></button>'),tl=v('<div class="tab editing svelte-r39acv"><!> <input class="tab-name-edit svelte-r39acv"/></div>'),il=v("<span></span>"),al=v('<button type="button" class="tab-stop svelte-r39acv"><!></button>'),ll=v('<button type="button"><!> <span class="tab-name svelte-r39acv"> </span> <span class="tab-mode svelte-r39acv"><!></span> <!></button> <!>',1),rl=v('<div role="presentation"><!></div>'),nl=v('<button type="button" class="page trailing svelte-r39acv" aria-label="Scroll tabs right"><!></button>'),fl=v('<div class="strip svelte-r39acv"><!> <div class="viewport svelte-r39acv"><nav class="tabs svelte-r39acv" aria-label="Instances"></nav></div> <!></div>'),cl=v('<button type="button" class="reload svelte-r39acv" title="Reload editor" aria-label="Reload editor"><!></button>'),dl=v('<!> <div class="right svelte-r39acv"><!> <a class="cog svelte-r39acv" target="_blank" rel="noopener noreferrer" title="Settings" aria-label="Settings"><!></a></div>',1),sl=v('<div class="drop-tip panel svelte-r39acv">Drop to save into codebay-inbox/</div>'),ol=v("<!> <!>",1);function mi(i,t){ge(t,!0);let a=Le(t,"editingName",15),l=Le(t,"stopping",19,()=>[]),n=(z)=>l().includes(z),x=S(null),g=S(0),I=C(()=>e(x)?Math.max(8,Math.min(e(x).x-e(g)/2,e(x).maxX-e(g))):0);function p(z,B){if(!t.ondropfiles||!z.dataTransfer?.types.includes("Files"))return;if(z.preventDefault(),z.dataTransfer.dropEffect="copy",e(x)?.id===B)return;let ne=z.currentTarget.getBoundingClientRect();r(x,{id:B,x:ne.left+ne.width/2,y:ne.bottom,maxX:document.documentElement.clientWidth-8},!0)}function O(z){if(z.currentTarget.contains(z.relatedTarget))return;r(x,null)}function Y(z,B){if(!t.ondropfiles)return;z.preventDefault(),r(x,null),t.ondropfiles(B,Ct(z.dataTransfer))}let A=S(null),le=S(null),R=S(!0),X=S(!0),G=pe({}),te=C(()=>!e(R)||!e(X));function j(){if(!e(A))return;r(R,e(A).scrollLeft<=1),r(X,e(A).scrollLeft+e(A).clientWidth>=e(A).scrollWidth-1)}function ee(z){let B=t.running[z];if(!B)return;t.onselect(B.id),G[B.id]?.focus()}function re(z,B){let ne=Nt(B,z.key,t.running.length);if(ne===null)return;z.preventDefault(),ee(ne)}function b(z){if(!e(A))return;e(A).scrollBy({left:z*Math.max(160,e(A).clientWidth*0.7)})}we(()=>{let z=e(A),B=e(le);if(!z||!B)return;j();let ne=new ResizeObserver(j);return ne.observe(z),ne.observe(B),z.addEventListener("scroll",j,{passive:!0}),()=>{ne.disconnect(),z.removeEventListener("scroll",j)}}),we(()=>{G[t.active]?.scrollIntoView({block:"nearest",inline:"nearest"})});var y=ol(),D=be(y);Di(D,{children:(z,B)=>{var ne=dl(),ve=be(ne);{var Ie=(H)=>{var he=fl(),u=o(he);{var w=(ye)=>{var P=el(),je=o(P);Ht(je,{size:16}),s(P),T(()=>P.disabled=e(R)),U("click",P,()=>b(-1)),d(ye,P)};L(u,(ye)=>{if(e(te))ye(w)})}var J=c(u,2),Ee=o(J);ze(Ee,23,()=>t.running,(ye)=>ye.id,(ye,P,je)=>{var Be=rl();let qe;var f=o(Be);{var h=(K)=>{var q=tl(),M=o(q);{let Ce=C(()=>ct(e(P).avatar??void 0)??null);dt(M,{get name(){return e(P).name},get art(){return e(Ce)},scale:3})}var Q=c(M,2);it(Q),Vt(Q,!0),s(q),Ve("focus",Q,(Ce)=>Ce.currentTarget.select()),Ve("blur",Q,()=>t.oncommitrename(e(P).id)),U("keydown",Q,(Ce)=>{if(Ce.key==="Enter")Ce.currentTarget.blur();else if(Ce.key==="Escape")t.oncancelrename()}),at(Q,a),d(K,q)},ie=(K)=>{var q=ll(),M=be(q);let Q;var Ce=o(M);{let k=C(()=>ct(e(P).avatar??void 0)??null);dt(Ce,{get name(){return e(P).name},get art(){return e(k)},scale:3})}var et=c(Ce,2),st=ae(et,!0),_e=c(et,2),N=o(_e);{var oe=(k)=>{vt(k,{size:11})},Fe=(k)=>{ht(k,{size:11})};L(N,(k)=>{if(e(P).mode==="terminal")k(oe);else k(Fe,-1)})}s(_e);var rt=c(_e,2);{var tt=(k)=>{var Z=il();T(()=>{xe(Z,1,`attn ${t.attention[e(P).id]??""}`,"svelte-r39acv"),$(Z,"aria-label",t.attention[e(P).id]==="waiting"?"Claude is waiting for input":"Claude finished")}),d(k,Z)};L(rt,(k)=>{if(e(P).id!==t.active&&t.attention[e(P).id])k(tt)})}s(M),Qe(M,(k,Z)=>G[Z.id]=k,(k)=>G?.[k.id],()=>[e(P)]);var Oe=c(M,2);{var Pe=(k)=>{var Z=al(),Te=o(Z);Jt(Te,{size:20}),s(Z),T((He,Ge,ke)=>{Z.disabled=He,$(Z,"title",Ge),$(Z,"aria-label",ke)},[()=>n(e(P).id),()=>n(e(P).id)?"Stopping…":`Stop ${e(P).name}`,()=>n(e(P).id)?"Stopping…":`Stop ${e(P).name}`]),U("click",Z,()=>t.onstop(e(P).id)),d(k,Z)};L(Oe,(k)=>{if(t.onstop)k(Pe)})}T(()=>{Q=xe(M,1,"tab svelte-r39acv",null,Q,{active:e(P).id===t.active}),$(M,"id",`tab-${e(P).id??""}`),$(M,"aria-current",e(P).id===t.active?"page":void 0),$(M,"title",e(P).name),_(st,e(P).name),$(_e,"aria-label",e(P).mode==="terminal"?"Terminal-only instance":"Full IDE instance")}),U("click",M,()=>t.onselect(e(P).id)),U("dblclick",M,()=>t.onstartrename(e(P))),U("keydown",M,(k)=>re(k,e(je))),d(K,q)};L(f,(K)=>{if(t.editingId===e(P).id)K(h);else K(ie,-1)})}s(Be),T(()=>qe=xe(Be,1,"tab-slot svelte-r39acv",null,qe,{active:e(P).id===t.active,"drop-target":e(x)?.id===e(P).id})),Ve("dragenter",Be,(K)=>p(K,e(P).id)),Ve("dragover",Be,(K)=>p(K,e(P).id)),Ve("dragleave",Be,O),Ve("drop",Be,(K)=>Y(K,e(P).id)),d(ye,Be)}),s(Ee),Qe(Ee,(ye)=>r(le,ye),()=>e(le)),s(J),Qe(J,(ye)=>r(A,ye),()=>e(A));var Ke=c(J,2);{var Ye=(ye)=>{var P=nl(),je=o(P);Ti(je,{size:16}),s(P),T(()=>P.disabled=e(X)),U("click",P,()=>b(1)),d(ye,P)};L(Ke,(ye)=>{if(e(te))ye(Ye)})}s(he),d(H,he)};L(ve,(H)=>{if(t.running.length>0)H(Ie)})}var Me=c(ve,2),W=o(Me);{var m=(H)=>{var he=cl(),u=o(he);wt(u,{size:18}),s(he),U("click",he,function(...w){t.onreload?.apply(this,w)}),d(H,he)};L(W,(H)=>{if(t.onreload)H(m)})}var E=c(W,2),V=o(E);xt(V,{size:18}),s(E),s(Me),T((H)=>$(E,"href",H),[()=>ft("/settings")]),d(z,ne)},$$slots:{default:!0}});var F=c(D,2);{var se=(z)=>{var B=sl();let ne;T(()=>ne=yt(B,"",ne,{left:`${e(I)??""}px`,top:`${e(x).y??""}px`})),Pi(B,"offsetWidth",(ve)=>r(g,ve)),d(z,B)};L(F,(z)=>{if(e(x))z(se)})}d(i,y),ue()}We(["click","keydown","dblclick"]);var ml=v('<div class="row svelte-w5e143"> </div>'),gl=v('<div class="stalled svelte-w5e143"><p class="svelte-w5e143"> </p> <!></div>'),ul=v('<div class="loader svelte-w5e143"><div class="grid svelte-w5e143" aria-hidden="true"></div> <div class="label svelte-w5e143"> <span class="dot svelte-w5e143">.</span><span class="dot svelte-w5e143">.</span><span class="dot svelte-w5e143">.</span></div> <!></div>');function Zt(i,t){ge(t,!0);let a=Le(t,"speed",3,1),l=Le(t,"mode",3,"ide"),n=C(()=>l()==="terminal"),x=S(!1);we(()=>{if(t.stalledAfterMs===void 0)return;let re=setTimeout(()=>r(x,!0),t.stalledAfterMs);return()=>clearTimeout(re)});let g=3,I=22,p=140,O=7,Y=C(()=>Math.max(20,p/a())),le=S(pe((()=>Array.from({length:g},()=>Array.from({length:I},()=>Math.random()<0.5?0:1)))()));we(()=>{if(window.matchMedia?.("(prefers-reduced-motion: reduce)").matches)return;let re=setInterval(()=>{let b=e(le).map((y)=>y.slice());for(let y=0;y<O;y++){let D=b[Math.floor(Math.random()*g)],F=Math.floor(Math.random()*I);D[F]=D[F]?0:1}r(le,b,!0)},e(Y));return()=>clearInterval(re)});var R=ul(),X=o(R);ze(X,21,()=>e(le),Ai,(re,b)=>{var y=ml(),D=ae(y,!0);T((F)=>_(D,F),[()=>e(b).join("")]),d(re,y)}),s(X);var G=c(X,2),te=o(G);Se(3),s(G);var j=c(G,2);{var ee=(re)=>{var b=gl(),y=o(b),D=ae(y),F=c(y,2);{var se=(z)=>{Ne(z,{size:"sm",get onclick(){return t.onoverride},children:(B,ne)=>{Se();var ve=Ae("Open anyway");d(B,ve)},$$slots:{default:!0}})};L(F,(z)=>{if(t.onoverride)z(se)})}s(b),T(()=>_(D,`Waiting for ${e(n)?"the terminal":"code-server"} to answer inside the container.`)),d(re,b)};L(j,(re)=>{if(e(x))re(ee)})}s(R),T(()=>_(te,`Loading ${e(n)?"terminal":"editor"}`)),d(i,R),ue()}var vl=new Set(["$$slots","$$events","$$legacy"]);function Rt(i,t){let a=fe(t,vl),l={name:"panel-right-open",size:24,node:[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2"}],["path",{d:"M15 3v18"}],["path",{d:"m10 15-3-3 3-3"}]]};de(i,ce(()=>a,{get icon(){return l}}))}var hl=new Set(["$$slots","$$events","$$legacy"]);function Qt(i,t){let a=fe(t,hl),l={name:"panel-right-close",size:24,node:[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2"}],["path",{d:"M15 3v18"}],["path",{d:"m8 9 3 3-3 3"}]]};de(i,ce(()=>a,{get icon(){return l}}))}function Fi(i){let t=i.indexOf(";");if(t===-1)return null;let a=i.slice(t+1).replace(/\s+/g,"");if(a===""||a==="?")return null;try{let l=Uint8Array.from(atob(a),(n)=>n.charCodeAt(0));return new TextDecoder().decode(l)}catch{return null}}var xl=v('<span class="status svelte-ui3nvu">connecting…</span>'),wl=v('<div class="term svelte-ui3nvu"></div> <div class="overlay svelte-ui3nvu"><!> <!> <button type="button" title="Reload terminal (reconnects, keeps the session)" aria-label="Reload terminal"><!></button></div>',1);function Ut(i,t){ge(t,!0);let a=Le(t,"focus",3,!0),l,n,x,g,I,p=!1,O=S(!1),Y=0,A="0",le="1",R=48,X=new TextEncoder;function G(W){if(g?.readyState===WebSocket.OPEN)g.send(X.encode(W))}function te(W){let m=new Uint8Array(W);if(m.length===0)return;if(m[0]===R)n?.write(m.subarray(1))}function j(){let W=++Y,m=location.protocol==="https:"?"wss:":"ws:",E=t.arg?`?arg=${encodeURIComponent(t.arg)}`:"",V=new WebSocket(`${m}//${location.host}/p/${t.id}/ws${E}`,["tty"]);g=V,V.binaryType="arraybuffer",V.onopen=()=>{if(Y!==W)return;r(O,!0),G(JSON.stringify({AuthToken:"",columns:n?.cols??80,rows:n?.rows??24}))},V.onmessage=(H)=>{if(Y===W)te(H.data)},V.onclose=()=>{if(Y!==W||p)return;r(O,!1),I=setTimeout(j,1000)},V.onerror=()=>{try{V.close()}catch{}}}function ee(){if(I)clearTimeout(I);Y++,r(O,!1),n?.reset();let W=g;g=void 0;let m=!1,E=()=>{if(m||p)return;if(m=!0,y(),j(),t.active&&a())n?.focus()};if(W&&W.readyState!==WebSocket.CLOSED){W.addEventListener("close",E,{once:!0}),setTimeout(E,1500);try{W.close()}catch{}}else E()}async function re(W){if(!W)return;try{await navigator.clipboard.writeText(W);return}catch{}let m=document.createElement("textarea");m.value=W,m.setAttribute("aria-hidden","true"),m.style.position="fixed",m.style.opacity="0",document.body.appendChild(m),m.select();try{document.execCommand("copy")}catch{}if(m.remove(),t.active&&a())n?.focus()}function b(){let W=n?.getSelection();if(W)re(W)}function y(){if(l?.clientWidth>0&&l?.clientHeight>0)try{x?.fit()}catch{}}function D(){if(!n||!l)return;let W=getComputedStyle(l),m=W.backgroundColor||"#0d0e0a",E=W.color||"#d8d9cf";n.options.theme={background:m,foreground:E,cursor:E,cursorAccent:m}}Ki(()=>{let W,m=window.matchMedia("(prefers-color-scheme: dark)"),E=()=>D();m.addEventListener("change",E),(async()=>{let[{Terminal:H},{FitAddon:he}]=await Promise.all([import("/_mochi/client/chunk-tss2473w.js"),import("/_mochi/client/chunk-0vqvn81s.js")]);if(p)return;if(n=new H({fontFamily:"'JetBrains Mono Variable', ui-monospace, monospace",fontSize:13,cursorBlink:!0,scrollback:1e4,allowProposedApi:!0}),x=new he,n.loadAddon(x),n.open(l),D(),y(),n.parser.registerOscHandler(52,(u)=>{let w=Fi(u);if(w!==null)re(w);return!0}),n.attachCustomKeyEventHandler((u)=>{if(u.type!=="keydown"||!n?.hasSelection())return!0;if(!(u.ctrlKey&&(u.key==="Insert"||u.altKey&&u.key.toLowerCase()==="c")))return!0;return b(),!1}),n.onData((u)=>G(A+u)),n.onResize(({cols:u,rows:w})=>G(le+JSON.stringify({columns:u,rows:w}))),W=new MutationObserver(D),W.observe(document.documentElement,{attributes:!0,attributeFilter:["data-theme"]}),j(),t.active&&a())n.focus()})();let V=new ResizeObserver(()=>y());return V.observe(l),l.addEventListener("mouseup",b),()=>{if(p=!0,l.removeEventListener("mouseup",b),V.disconnect(),W?.disconnect(),m.removeEventListener("change",E),I)clearTimeout(I);try{g?.close()}catch{}n?.dispose()}}),we(()=>{if(t.active&&n){if(y(),a())n.focus()}});var F=wl(),se=be(F);Qe(se,(W)=>l=W,()=>l);var z=c(se,2),B=o(z);{var ne=(W)=>{var m=xl();d(W,m)};L(B,(W)=>{if(!e(O))W(ne)})}var ve=c(B,2);Wi(ve,()=>t.actions??Bi);var Ie=c(ve,2),Me=o(Ie);wt(Me,{size:14}),s(Ie),s(z),U("click",Ie,ee),d(i,F),ue()}We(["click"]);var Sl=v('<button type="button"><!></button>'),Il=v('<div role="separator" aria-orientation="vertical" aria-label="Resize terminal panes" tabindex="0"></div> <div><!></div>',1),El=v('<div class="split svelte-1ysvu88"><div class="side svelte-1ysvu88"><!></div> <!></div>');function gi(i,t){ge(t,!0);let a=(y)=>{var D=Sl(),F=o(D);{var se=(B)=>{Qt(B,{size:14})},z=(B)=>{Rt(B,{size:14})};L(F,(B)=>{if(e(n))B(se);else B(z,-1)})}s(D),T(()=>{$(D,"aria-pressed",e(n)),$(D,"title",e(n)?"Hide the shell pane":"Open a shell alongside Claude"),$(D,"aria-label",e(n)?"Hide the shell pane":"Open a shell alongside Claude")}),U("click",D,O),d(y,D)},l=Le(t,"initialOpen",3,!1),n=S(pe(l())),x=S(pe(l())),g=S(50),I=S("left"),p;function O(){if(r(n,!e(n)),e(n))r(x,!0);r(I,e(n)?"right":"left",!0),Ue(`/api/instances/${t.id}/split`,{open:e(n)}).catch(()=>{})}function Y(y){return Math.min(80,Math.max(20,y))}function A(y){let D=p.getBoundingClientRect();if(D.width>0)r(g,Y((y-D.left)/D.width*100),!0)}function le(y){y.preventDefault(),y.currentTarget.setPointerCapture(y.pointerId)}function R(y){if(y.currentTarget.hasPointerCapture(y.pointerId))A(y.clientX)}function X(y){if(y.key==="ArrowLeft")r(g,Y(e(g)-5),!0);else if(y.key==="ArrowRight")r(g,Y(e(g)+5),!0);else return;y.preventDefault()}var G=El(),te=o(G);let j;var ee=o(te);{let y=C(()=>t.active&&e(I)==="left"),D=C(()=>e(n)?void 0:a);Ut(ee,{get id(){return t.id},get active(){return t.active},get focus(){return e(y)},get actions(){return e(D)}})}s(te);var re=c(te,2);{var b=(y)=>{var D=Il(),F=be(D);let se;$(F,"aria-valuemin",20),$(F,"aria-valuemax",80);var z=c(F,2);let B,ne;var ve=o(z);{let Ie=C(()=>t.active&&e(n)),Me=C(()=>t.active&&e(n)&&e(I)==="right"),W=C(()=>e(n)?a:void 0);Ut(ve,{get id(){return t.id},arg:"shell",get active(){return e(Ie)},get focus(){return e(Me)},get actions(){return e(W)}})}s(z),T((Ie)=>{se=xe(F,1,"divider svelte-1ysvu88",null,se,{hidden:!e(n)}),$(F,"aria-valuenow",Ie),B=xe(z,1,"side svelte-1ysvu88",null,B,{hidden:!e(n)}),ne=yt(z,"",ne,{"flex-basis":`${100-e(g)}%`})},[()=>Math.round(e(g))]),U("pointerdown",F,le),U("pointermove",F,R),U("dblclick",F,()=>r(g,50)),U("keydown",F,X),Ve("pointerdown",z,()=>r(I,"right"),!0),d(y,D)};L(re,(y)=>{if(e(x))y(b)})}s(G),Qe(G,(y)=>p=y,()=>p),T(()=>j=yt(te,"",j,{"flex-basis":e(n)?`${e(g)}%`:"100%"})),Ve("pointerdown",te,()=>r(I,"left"),!0),d(i,G),ue()}We(["click","pointerdown","pointermove","dblclick","keydown"]);var yl=v('<iframe allow="clipboard-read; clipboard-write" class="svelte-1duc7gd"></iframe>'),Cl=v('<div role="region"><!> <!> <!></div>'),Ll=v('<div class="empty svelte-1duc7gd">No running instances.</div>'),bl=v("<div><!> <div><!> <!></div></div> <!>",1);function vi(i,t){ge(t,!0);let a=S(pe(t.snapshot)),l=S(pe(t.preflight)),n=S(pe(t.pet)),x=S(pe(t.filter)),g=S(t.snapshot.length>0),I=C(()=>e(a).filter((f)=>f.status==="running")),p=S(pe(Object.fromEntries(t.snapshot.map((f)=>[f.id,f.attention])))),O=S(null),Y=S(""),A=new $e;async function le(f){if(A.has(f))return;A.add(f);try{await Ue(`/api/instances/${f}/stop`,void 0,"Failed to stop instance")}catch(h){lt.error(h.message),A.delete(f)}}function R(f){r(O,f.id,!0),r(Y,f.name,!0)}function X(){r(O,null),r(Y,"")}async function G(f){let h=e(Y).trim(),ie=e(a).find((K)=>K.id===f)?.name;if(!h||h===ie){X();return}X();try{await Ue(`/api/instances/${f}/rename`,{name:h},"Failed to rename")}catch(K){lt.error(K.message)}}function te(f){r(x,f,!0),Ue("/api/settings/filter",{value:f}).catch(()=>{})}let j=S(pe(t.initialPath)),ee=C(()=>e(j).startsWith("/ide")),re=C(()=>e(j).startsWith("/ide/")?e(j).slice(5):""),b=C(()=>e(ee)?e(I).some((f)=>f.id===e(re))?e(re):e(I)[0]?.id??"":"");function y(f){if(f===e(j))return;history.pushState({},"",f),r(j,f,!0)}we(()=>{function f(h){if(h.defaultPrevented||h.button!==0||h.metaKey||h.ctrlKey||h.shiftKey||h.altKey)return;let ie=h.target?.closest?.("a");if(!ie)return;let K=ie.getAttribute("href");if(!K||ie.target==="_blank"||ie.hasAttribute("download"))return;let q=new URL(K,location.href);if(q.origin!==location.origin)return;if(q.pathname==="/"||q.pathname.startsWith("/ide/"))h.preventDefault(),y(q.pathname)}return document.addEventListener("click",f),()=>document.removeEventListener("click",f)}),we(()=>{function f(){r(j,location.pathname,!0)}return window.addEventListener("popstate",f),()=>window.removeEventListener("popstate",f)}),we(()=>{if(e(I).length===0)return;function f(h){h.preventDefault(),h.returnValue=""}return window.addEventListener("beforeunload",f),()=>window.removeEventListener("beforeunload",f)});let D=new $e;we(()=>{if(e(b))D.add(e(b))});let F=new $e,se=new $e,z=new $e,B=(f)=>se.has(f)||z.has(f),ne=1e4,ve=C(()=>e(I).find((f)=>f.id===e(b))),Ie={};function Me(){let f=e(ve);if(!f||f.mode==="terminal")return;F.delete(f.id),Ie[f.id]?.contentWindow?.location.replace(ui(f))}we(()=>{document.title=e(ee)&&e(ve)?`${e(ve).name} — Codebay`:"Codebay"});function W(f,h){if(!f.altKey||f.ctrlKey||f.metaKey||e(O)||!Ri())return;let ie=/^Digit([1-9])$/.exec(f.code)?.[1];if(!ie)return;let K=Nt(e(I).findIndex((M)=>M.id===e(b)),ie,e(I).length),q=K===null?void 0:e(I)[K];if(!q)return;if(f.preventDefault(),f.stopPropagation(),y(`/ide/${q.id}`),h)At().then(()=>Ie[q.id]?.contentWindow?.focus())}let m=C(()=>e(I).filter((f)=>f.mode!=="terminal"&&F.has(f.id)).map((f)=>f.id).join(" "));we(()=>{if(!e(ee))return;function f(ie,K){let q=(M)=>W(M,K);return ie.addEventListener("keydown",q,{capture:!0}),()=>ie.removeEventListener("keydown",q,{capture:!0})}let h=[f(window,!1)];for(let ie of e(m).split(" ").filter(Boolean)){let K=Ie[ie]?.contentWindow;if(K)h.push(f(K,!0))}return()=>h.forEach((ie)=>ie())}),we(()=>{return window.addEventListener("pointerdown",Lt),window.addEventListener("keydown",Lt),()=>{window.removeEventListener("pointerdown",Lt),window.removeEventListener("keydown",Lt)}});async function E(f,h){for(let ie of h)try{let K=await Zi(f,ie);lt.success(`Saved ${K.containerPath}`),navigator.clipboard.writeText(K.containerPath).catch(()=>{})}catch(K){lt.error(K.message)}}let V=S(!1);function H(f){f.preventDefault(),r(V,!1),E(e(b),Ct(f.dataTransfer))}we(()=>{if(!e(l).uploadEnabled||!e(ee))return;let f=(Q)=>Q.dataTransfer?.types.includes("Files")??!1,h=(Q)=>{if(f(Q))r(V,!0)},ie=(Q)=>{if(!f(Q)||Q.defaultPrevented)return;Q.preventDefault(),Q.dataTransfer.dropEffect="none"},K=(Q)=>{if(f(Q))Q.preventDefault();r(V,!1)},q=(Q)=>{if(Q.relatedTarget===null)r(V,!1)},M=(Q)=>{let Ce=Ct(Q.clipboardData);if(Ce.length&&e(b))Q.preventDefault(),E(e(b),Ce)};return window.addEventListener("dragenter",h),window.addEventListener("dragover",ie),window.addEventListener("dragleave",q),window.addEventListener("drop",K),window.addEventListener("paste",M,!0),()=>{window.removeEventListener("dragenter",h),window.removeEventListener("dragover",ie),window.removeEventListener("dragleave",q),window.removeEventListener("drop",K),window.removeEventListener("paste",M,!0)}}),we(()=>{let f=!1;return Ui((h)=>{if(h.type==="preflight"){r(l,{...e(l),docker:h.data.docker,cli:h.data.cli},!0);return}if(h.type==="pet"){r(n,ct(h.data.name??void 0),!0);return}if(h.type==="filter"){r(x,h.data.value,!0);return}if(h.type==="default-mode"){r(l,{...e(l),defaultMode:h.data.mode},!0);return}if(h.type==="upload-enabled"){r(l,{...e(l),uploadEnabled:h.data.enabled},!0);return}if(h.type==="theme"){Yi(h.data.value);return}if(h.type==="run"){let M=h.data;r(a,e(a).map((Q)=>Q.id===M.instance_id?{...Q,active_run:M.finished_at?null:M}:Q),!0);return}if(h.type==="health"){let M=e(a).find((Q)=>Q.id===h.data.id);if(h.data.health.codeServerAccessible&&M?.status==="running")se.add(h.data.id);return}if(h.type!=="instances")return;let ie=h.data,K=new Set(ie.filter((M)=>M.status==="running").map((M)=>M.id));for(let M of[...se])if(!K.has(M))se.delete(M);for(let M of[...z])if(!K.has(M))z.delete(M);for(let M of[...F])if(!K.has(M))F.delete(M);for(let M of[...A])if(!K.has(M))A.delete(M);let q={};for(let M of ie)q[M.id]=M.attention;if(f)for(let M in q){let Q=q[M];if(Q&&Q!==e(p)[M])if(M===e(b))console.log(`[chime] attention id=${M} state=${Q} — skipped (tab is active/focused)`);else console.log(`[chime] attention id=${M} state=${Q} → playChime`),Qi(Q)}else console.log("[chime] first frame after (re)connect — baselining, no chimes");f=!0,r(a,ie,!0),r(p,q,!0),r(g,!0)},()=>{f=!1})}),we(()=>{if(!e(b)||!e(p)[e(b)])return;let f=()=>{if(document.visibilityState==="visible")Ue(`/api/instances/${e(b)}/attention/clear`).catch(()=>{})};return f(),document.addEventListener("visibilitychange",f),()=>document.removeEventListener("visibilitychange",f)});var he=bl(),u=be(he);let w;var J=o(u);{var Ee=(f)=>{{let h=C(()=>[...A]),ie=C(()=>e(ve)&&e(ve).mode!=="terminal"&&B(e(b))?Me:void 0),K=C(()=>e(l).uploadEnabled?(q,M)=>void E(q,M):void 0);mi(f,{get running(){return e(I)},get active(){return e(b)},get attention(){return e(p)},get editingId(){return e(O)},get stopping(){return e(h)},get onreload(){return e(ie)},onselect:(q)=>y(`/ide/${q}`),onstop:le,get ondropfiles(){return e(K)},onstartrename:R,oncommitrename:G,oncancelrename:X,get editingName(){return e(Y)},set editingName(q){r(Y,q,!0)}})}},Ke=(f)=>{oi(f,{get preflight(){return e(l)},get instances(){return e(a)},get loaded(){return e(g)},get pet(){return e(n)},get filter(){return e(x)},onFilter:te})};L(J,(f)=>{if(e(ee))f(Ee);else f(Ke,-1)})}var Ye=c(J,2);let ye;var P=o(Ye);ze(P,17,()=>e(I),(f)=>f.id,(f,h)=>{var ie=Et(),K=be(ie);{var q=(Q)=>{var Ce=Cl();let et;var st=o(Ce);{var _e=(Z)=>{var Te=Et(),He=be(Te);{var Ge=(Re)=>{{let Je=C(()=>e(h).id===e(b)),Ze=C(()=>e(h).terminal_split===1);gi(Re,{get id(){return e(h).id},get active(){return e(Je)},get initialOpen(){return e(Ze)}})}},ke=(Re)=>{var Je=yl();Qe(Je,(Ze,St)=>Ie[St.id]=Ze,(Ze)=>Ie?.[Ze.id],()=>[e(h)]),T((Ze)=>{$(Je,"src",Ze),$(Je,"title",e(h).name)},[()=>ui(e(h))]),Ve("load",Je,()=>F.add(e(h).id)),Oi(Je),d(Re,Je)};L(He,(Re)=>{if(e(h).mode==="terminal")Re(Ge);else Re(ke,-1)})}d(Z,Te)},N=C(()=>B(e(h).id));L(st,(Z)=>{if(e(N))Z(_e)})}var oe=c(st,2);{var Fe=(Z)=>{Zt(Z,{get mode(){return e(h).mode},stalledAfterMs:ne,onoverride:()=>z.add(e(h).id)})},rt=C(()=>!B(e(h).id)),tt=(Z)=>{Zt(Z,{})},Oe=C(()=>e(h).mode!=="terminal"&&!F.has(e(h).id));L(oe,(Z)=>{if(e(rt))Z(Fe);else if(e(Oe))Z(tt,1)})}var Pe=c(oe,2);{var k=(Z)=>{Ji(Z,{ondrop:H})};L(Pe,(Z)=>{if(e(V)&&e(h).id===e(b)&&e(h).mode==="terminal")Z(k)})}s(Ce),T(()=>{et=xe(Ce,1,"pane svelte-1duc7gd",null,et,{active:e(h).id===e(b)}),$(Ce,"aria-labelledby",`tab-${e(h).id??""}`)}),d(Q,Ce)},M=C(()=>D.has(e(h).id));L(K,(Q)=>{if(e(M))Q(q)})}d(f,ie)});var je=c(P,2);{var Be=(f)=>{var h=Ll();d(f,h)};L(je,(f)=>{if(e(ee)&&e(I).length===0)f(Be)})}s(Ye),s(u);var qe=c(u,2);Hi(qe,{get toastOptions(){return Gi}}),T(()=>{w=xe(u,1,"app svelte-1duc7gd",null,w,{ide:e(ee)}),ye=xe(Ye,1,"panes svelte-1duc7gd",null,ye,{hidden:!e(ee)})}),d(i,he),ue()}ki("AppShell_2rtnxn6pgp2rh",vi);