codebay 0.15.0 → 0.16.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. package/.mochi/manifest.json +490 -429
  2. package/.mochi/svelte-client/HydratableIsland-6y9p903x.js +1 -0
  3. package/.mochi/svelte-client/_hydrate-AppShell_2rtnxn6pgp2rh-nv6yzk0x.js +2 -0
  4. package/.mochi/svelte-client/_hydrate-AvatarsView_257s9yq1wwr4f-ry83ck8a.js +14 -0
  5. package/.mochi/svelte-client/_hydrate-InstanceView_2ma45l9bybfhl-vjt4jscf.js +3 -0
  6. package/.mochi/svelte-client/_hydrate-SettingsView_8hmarwmf8onq-1jdrk8x6.js +48 -0
  7. package/.mochi/svelte-client/{chunk-5pg0be5f.js → chunk-0vqvn81s.js} +1 -1
  8. package/.mochi/svelte-client/chunk-2dc6352a.js +1 -0
  9. package/.mochi/svelte-client/chunk-3cxaw5hr.js +2 -0
  10. package/.mochi/svelte-client/chunk-3jqc40sp.js +2 -0
  11. package/.mochi/svelte-client/chunk-3pgw6t5j.js +4 -0
  12. package/.mochi/svelte-client/chunk-7g3xt6ez.js +2 -0
  13. package/.mochi/svelte-client/chunk-b5s3mpg0.js +1 -0
  14. package/.mochi/svelte-client/chunk-bhseezf3.js +2 -0
  15. package/.mochi/svelte-client/chunk-bhwkq8er.js +1 -0
  16. package/.mochi/svelte-client/chunk-jm3ge348.js +1 -0
  17. package/.mochi/svelte-client/{chunk-ds9yn9cq.js → chunk-sxcr9gzp.js} +1 -1
  18. package/.mochi/svelte-client/{chunk-a2hty99b.js → chunk-tss2473w.js} +1 -1
  19. package/.mochi/svelte-compile/{App-68f9a9fq.server.js → App-8mpgrxza.server.js} +489 -295
  20. package/.mochi/svelte-compile/{Avatars-vyh3rwxx.server.js → Avatars-y5nf6q25.server.js} +102 -86
  21. package/.mochi/svelte-compile/{DefaultError-je52k17d.server.js → DefaultError-rrjye0s2.server.js} +1 -2
  22. package/.mochi/svelte-compile/{Instance-yfw7s5mp.server.js → Instance-3sbzyp0g.server.js} +186 -118
  23. package/.mochi/svelte-compile/{Settings-0b5t9kw9.server.js → Settings-ysvh5vhh.server.js} +739 -628
  24. package/.mochi/svelte-compile/chunk-7zaw9t5a.js +25 -0
  25. package/.mochi/svelte-compile/chunk-878xcmp4.js +65 -0
  26. package/.mochi/svelte-compile/chunk-d2z3qxxe.js +28 -0
  27. package/.mochi/svelte-compile/{chunk-60mpagr9.js → chunk-gnf5cnct.js} +661 -22
  28. package/.mochi/svelte-compile/{chunk-0y3wrae9.js → chunk-jq7jj8jd.js} +10 -6
  29. package/.mochi/svelte-compile/chunk-vr0e32mv.js +24 -0
  30. package/.mochi/svelte-compile/{chunk-apdte4nh.js → chunk-xmygdsj4.js} +35 -612
  31. package/.mochi/svelte-compile/{chunk-g0eravvj.js → chunk-zk4a9zms.js} +25 -17
  32. package/.mochi/svelte-css/DropZone-1zeitd761uwyd.css +1 -0
  33. package/.mochi/svelte-css/IdeBar-d3un7kuigxc5.css +1 -0
  34. package/.mochi/svelte-css/InstanceView-3ucotech5097w.css +1 -0
  35. package/README.md +13 -4
  36. package/migrations/0011_agent_run_rejected_structured_output.sql +2 -0
  37. package/package.json +9 -9
  38. package/src/__fixtures__/IdeBarStrip.svelte +41 -0
  39. package/src/avatars/dog.ts +1 -1
  40. package/src/avatars/lightning.ts +8 -9
  41. package/src/avatars/rocket.ts +4 -5
  42. package/src/components/AppShell.svelte +101 -1
  43. package/src/components/DropZone.svelte +77 -0
  44. package/src/components/HealthBox.svelte +6 -5
  45. package/src/components/IdeBar.svelte +222 -76
  46. package/src/components/InstanceView.svelte +75 -2
  47. package/src/components/SettingsView.svelte +87 -0
  48. package/src/components/TerminalPane.svelte +54 -0
  49. package/src/components/UiShowcase.svelte +19 -1
  50. package/src/container-injections/claude-code-install.ts +1 -1
  51. package/src/container-injections/claude-history.ts +52 -0
  52. package/src/container-injections/tmux.ts +6 -2
  53. package/src/index.ts +3 -0
  54. package/src/lib/agent-run-stream.ts +41 -1
  55. package/src/lib/agent-runs.server.ts +14 -3
  56. package/src/lib/config.server.ts +16 -1
  57. package/src/lib/db.server.ts +6 -2
  58. package/src/lib/devcontainer.server.ts +37 -4
  59. package/src/lib/injections.server.ts +5 -1
  60. package/src/lib/instances.server.ts +21 -4
  61. package/src/lib/log-capture.server.ts +46 -18
  62. package/src/lib/osc52.ts +18 -0
  63. package/src/lib/spawn.server.ts +7 -2
  64. package/src/lib/upload.ts +32 -0
  65. package/src/lib/uploads.server.ts +164 -0
  66. package/src/mcp/server.server.ts +4 -1
  67. package/src/mcp/tools.server.ts +178 -12
  68. package/src/pages/Instance.svelte +6 -2
  69. package/src/pages/Settings.svelte +3 -0
  70. package/src/routes.ts +16 -2
  71. package/src/types.ts +2 -0
  72. package/.mochi/svelte-client/HydratableIsland-smgsf0ma.js +0 -1
  73. package/.mochi/svelte-client/_hydrate-AppShell_2rtnxn6pgp2rh-9vc087ep.js +0 -2
  74. package/.mochi/svelte-client/_hydrate-AvatarsView_257s9yq1wwr4f-a48xq47a.js +0 -14
  75. package/.mochi/svelte-client/_hydrate-InstanceView_2ma45l9bybfhl-d4zehrqz.js +0 -3
  76. package/.mochi/svelte-client/_hydrate-SettingsView_8hmarwmf8onq-t5175pf5.js +0 -44
  77. package/.mochi/svelte-client/chunk-0mstgbtr.js +0 -2
  78. package/.mochi/svelte-client/chunk-0q9g0kpg.js +0 -1
  79. package/.mochi/svelte-client/chunk-3fwjzw1r.js +0 -1
  80. package/.mochi/svelte-client/chunk-fn03gxer.js +0 -4
  81. package/.mochi/svelte-client/chunk-jhgq7f65.js +0 -2
  82. package/.mochi/svelte-client/chunk-p5a07kx1.js +0 -1
  83. package/.mochi/svelte-client/chunk-p5wpyhsf.js +0 -2
  84. package/.mochi/svelte-client/chunk-t2kfvtb6.js +0 -2
  85. package/.mochi/svelte-client/chunk-v3wg9mdy.js +0 -1
  86. package/.mochi/svelte-compile/chunk-2qzc07gt.js +0 -34
  87. package/.mochi/svelte-compile/chunk-ef3hvegw.js +0 -21
  88. package/.mochi/svelte-compile/chunk-f9td8ej2.js +0 -24
  89. package/.mochi/svelte-compile/chunk-jx6h1xzp.js +0 -20
  90. package/.mochi/svelte-css/IdeBar-1mtgemqfuvqzi.css +0 -1
  91. package/.mochi/svelte-css/InstanceView-32j12hyg8v9u0.css +0 -1
@@ -19,6 +19,7 @@
19
19
  defaultImage,
20
20
  builtinImage,
21
21
  disableBuildCache,
22
+ workspaceUploadEnabled,
22
23
  copyIgnorePatterns,
23
24
  builtinCopyIgnore,
24
25
  claudeConfigDir,
@@ -65,6 +66,7 @@
65
66
  defaultImage: string;
66
67
  builtinImage: string;
67
68
  disableBuildCache: boolean;
69
+ workspaceUploadEnabled: boolean;
68
70
  copyIgnorePatterns: string;
69
71
  builtinCopyIgnore: string;
70
72
  claudeConfigDir: string;
@@ -114,6 +116,7 @@
114
116
  {defaultImage}
115
117
  {builtinImage}
116
118
  {disableBuildCache}
119
+ {workspaceUploadEnabled}
117
120
  {copyIgnorePatterns}
118
121
  {builtinCopyIgnore}
119
122
  {claudeConfigDir}
package/src/routes.ts CHANGED
@@ -37,6 +37,7 @@ import {
37
37
  broadcastFilter,
38
38
  broadcastPet,
39
39
  broadcastTheme,
40
+ broadcastUploadEnabled,
40
41
  createInstance,
41
42
  getDefaultMode,
42
43
  deleteAllInstances,
@@ -84,6 +85,7 @@ import { proxyRoutes } from './lib/proxy.server.ts';
84
85
  import { runDetail, runTimeline } from './lib/agent-runs.server.ts';
85
86
  import { PR_ATTRIBUTION_KEY, prAttributionEnabled } from './lib/sandbox-ops.server.ts';
86
87
  import { mcpRoutes } from './mcp/routes.server.ts';
88
+ import { UPLOAD_ENABLED_KEY, uploadEnabled, uploadRoutes } from './lib/uploads.server.ts';
87
89
  import {
88
90
  isInstanceFilter,
89
91
  isTheme,
@@ -114,7 +116,7 @@ async function preflight() {
114
116
  })
115
117
  )
116
118
  ]);
117
- return { docker, cli, auth, defaultMode: getDefaultMode() };
119
+ return { docker, cli, auth, defaultMode: getDefaultMode(), uploadEnabled: uploadEnabled() };
118
120
  }
119
121
 
120
122
  /** The header pet logo, resolved from the DB option. A name that left the catalog reads as "off". */
@@ -194,7 +196,8 @@ export const routes: Record<string, MochiRouteValue> = {
194
196
  // Lets the health panel's skeleton render one row per real check before the first snapshot.
195
197
  return {
196
198
  id: params.id,
197
- injectionChecks: resolveInjections(row.mode).filter((i) => i.check).length
199
+ injectionChecks: resolveInjections(row.mode).filter((i) => i.check).length,
200
+ uploadEnabled: uploadEnabled()
198
201
  };
199
202
  },
200
203
  actions: {
@@ -230,6 +233,7 @@ export const routes: Record<string, MochiRouteValue> = {
230
233
  defaultImage: getOption('default_image') ?? DEFAULT_IMAGE,
231
234
  builtinImage: DEFAULT_IMAGE,
232
235
  disableBuildCache: getOption('disable_build_cache') === '1',
236
+ workspaceUploadEnabled: uploadEnabled(),
233
237
  // An explicit empty string (as opposed to unset) means "copy everything".
234
238
  copyIgnorePatterns: getOption('copy_ignore_patterns') ?? DEFAULT_COPY_IGNORE,
235
239
  builtinCopyIgnore: DEFAULT_COPY_IGNORE,
@@ -328,6 +332,14 @@ export const routes: Record<string, MochiRouteValue> = {
328
332
  return success({ enabled });
329
333
  },
330
334
 
335
+ // Gates the upload route and the drop zones; broadcast so an open IDE tab arms/disarms without a reload.
336
+ workspaceUploadToggle: ({ formData }) => {
337
+ const enabled = onChecked(formData, 'enabled');
338
+ setOption(UPLOAD_ENABLED_KEY, enabled ? '1' : '0');
339
+ broadcastUploadEnabled(enabled);
340
+ return success({ enabled });
341
+ },
342
+
331
343
  // Turning the pet on with none chosen lands on a random sprite, so there's always one to adjust.
332
344
  petToggle: ({ formData }) => {
333
345
  const enabled = onChecked(formData, 'enabled');
@@ -757,6 +769,8 @@ export const routes: Record<string, MochiRouteValue> = {
757
769
 
758
770
  ...mcpRoutes,
759
771
 
772
+ ...uploadRoutes,
773
+
760
774
  ...(process.env.MODE === 'development'
761
775
  ? {
762
776
  '/debug': Mochi.page('./src/pages/UI.svelte', {
package/src/types.ts CHANGED
@@ -144,6 +144,8 @@ export interface Preflight {
144
144
  auth: AuthProvider[];
145
145
  /** Global default the picker's mode toggle starts on; per-instance override wins. */
146
146
  defaultMode: InstanceMode;
147
+ /** Whether the drop/paste upload zones are armed; the stream keeps it current. */
148
+ uploadEnabled: boolean;
147
149
  }
148
150
 
149
151
  /** Same-origin so the app's Basic Auth covers the editor too. */
@@ -1 +0,0 @@
1
- import{pb as a}from"/_mochi/client/chunk-fn03gxer.js";import"/_mochi/client/chunk-ds9yn9cq.js";export{a as registerComponent};
@@ -1,2 +0,0 @@
1
- import{a as _t,b as bi,c as Li,e as Bi}from"/_mochi/client/chunk-p5a07kx1.js";import{f as nt,g as zt,j as Vi,l as vt,m as ki}from"/_mochi/client/chunk-jhgq7f65.js";import{r as mi,s as ft,t as Xt,u as Be,v as Ci,z as Di}from"/_mochi/client/chunk-0mstgbtr.js";import{J as Xe,K as je,L as Te,M as Wi,N as ut,O as Ti,P as Ki}from"/_mochi/client/chunk-p5wpyhsf.js";import{Q as ne,R as gt,S as Ue}from"/_mochi/client/chunk-t2kfvtb6.js";import{$a as Ze,Aa as at,Ba as Tt,Ca as e,Fa as zi,Ga as ke,Ha as B,Ia as $e,Ja as v,La as Ae,Ma as Ge,Na as m,Oa as G,Pa as L,Ra as Pi,Sa as Le,Ua as $i,V as Fi,Va as yi,X as f,Y as he,Ya as xe,Za as di,aa as ce,ba as de,cb as H,eb as He,fb as We,gb as Ei,ha as At,hb as le,ia as Gt,ib as re,ja as E,jb as Ce,kb as pi,la as Nt,ma as N,nb as Mi,oa as r,pa as Pe,pb as Oi,qa as Ee,ra as n,sa as ye,ta as d,ua as Se,xa as A,ya as Zt,za as Ht}from"/_mochi/client/chunk-fn03gxer.js";import{qb as Ai}from"/_mochi/client/chunk-ds9yn9cq.js";var gi=!1;class Qt extends Date{#e=N(super.getTime());#t=new Map;#i=Zt;constructor(...i){super(...i);if(!gi)this.#a()}#a(){gi=!0;var i=Qt.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(...s){if(s.length>0)return e(this.#e),t[l].apply(this,s);var u=this.#t.get(l);if(u===void 0){let o=Zt;Ht(this.#i),u=E(()=>{return e(this.#e),t[l].apply(this,s)}),this.#t.set(l,u),Ht(o)}return e(u)};if(l.startsWith("set"))i[l]=function(...s){var u=t[l].apply(this,s);return r(this.#e,t.getTime.call(this)),u}}}}var Ri=["forEach","isDisjointFrom","isSubsetOf","isSupersetOf"],Zi=["difference","intersection","symmetricDifference","union"],ui=!1;class Re extends Set{#e=new Map;#t=N(0);#i=N(0);#a=at||-1;constructor(i){super();if(i){for(var t of i)super.add(t);this.#i.v=super.size}if(!ui)this.#r()}#l(i){return at===this.#a?N(i):Nt(i)}#r(){ui=!0;var i=Re.prototype,t=Set.prototype;for(let a of Ri)i[a]=function(...l){return e(this.#t),t[a].apply(this,l)};for(let a of Zi)i[a]=function(...l){e(this.#t);var s=t[a].apply(this,l);return new Re(s)}}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),Pe(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),Pe(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),Pe(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 vi extends Map{#e=new Map;#t=N(0);#i=N(0);#a=at||-1;constructor(i){super();if(i){for(var[t,a]of i)super.set(t,a);this.#i.v=super.size}}#l(i){return at===this.#a?N(i):Nt(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)}set(i,t){var a=this.#e,l=a.get(i),s=super.get(i),u=super.set(i,t),o=this.#t;if(l===void 0)l=this.#l(0),a.set(i,l),r(this.#i,super.size),Pe(o);else if(s!==t){Pe(l);var S=o.reactions===null?null:new Set(o.reactions),y=S===null||!l.reactions?.every((F)=>S.has(F));if(y)Pe(o)}return u}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),Pe(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);Pe(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 Ct=Symbol("replace");class bt extends URLSearchParams{#e=N(0);#t=hi();#i=!1;#a(){if(!this.#t||this.#i)return;this.#i=!0;let i=this.toString();this.#t.search=i&&`?${i}`,this.#i=!1}[Ct](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);Pe(this.#e),this.#i=!1}append(i,t){super.append(i,t),this.#a(),Pe(this.#e)}delete(i,t){var a=super.has(i,t);if(super.delete(i,t),a)this.#a(),Pe(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((s,u)=>s!==l[u]))this.#a(),Pe(this.#e)}sort(){super.sort(),this.#a(),Pe(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 Yt=null;function hi(){return Yt}class xi extends URL{#e=N(super.protocol);#t=N(super.username);#i=N(super.password);#a=N(super.hostname);#l=N(super.port);#r=N(super.pathname);#f=N(super.hash);#n=N(super.search);#c;constructor(i,t){i=new URL(i,t);super(i);Yt=this,this.#c=new bt(i.searchParams),Yt=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[Ct](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)}get search(){return e(this.#n)}set search(i){super.search=i,r(this.#n,super.search),this.#c[Ct](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 Si{#e;#t;constructor(i,t){this.#e=i,this.#t=Gt(t)}get current(){return this.#t(),this.#e()}}function Qi(i,t){return i===9?t-1:i-1}function Et(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 s=Qi(Number(t),a);return s<a?s:null}}}var wi=/^[A-Za-z0-9._-]+$/;function Yi(i){let t=i.trim();if(!t)return null;let a,l,s=t.match(/^[A-Za-z0-9._-]+@([A-Za-z0-9.-]+):(.+)$/);if(s)a=s[1],l=s[2];else if(/^[a-z][a-z0-9+.-]*:\/\//i.test(t)){let y;try{y=new URL(t)}catch{return null}if(y.protocol!=="http:"&&y.protocol!=="https:"&&y.protocol!=="ssh:")return null;a=y.hostname,l=y.pathname}else{let y=t.match(/^([A-Za-z0-9-]+\.[A-Za-z0-9.-]+)\/(.+)$/);if(!y)return null;a=y[1],l=y[2]}if(!a||!l)return null;let u=l.replace(/\.git$/i,"").split("/").filter(Boolean),[o,S]=u;if(!o||!S||!wi.test(o)||!wi.test(S))return null;return{host:a,owner:o,repo:S,cloneUrl:`https://${a}/${o}/${S}.git`}}function Ut(i){return Yi(i)!==null}var Ii="::drives",Ni="This PC";var Gi=new Set(["$$slots","$$events","$$legacy"]);function yt(i,t){let a=le(t,Gi),l=[["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"}]];ne(i,re({name:"folder-clock"},()=>a,{get iconNode(){return l}}))}var Ui=new Set(["$$slots","$$events","$$legacy"]);function lt(i,t){let a=le(t,Ui),l=[["path",{d:"M15 6a9 9 0 0 0-9 9V3"}],["circle",{cx:"18",cy:"6",r:"3"}],["circle",{cx:"6",cy:"18",r:"3"}]];ne(i,re({name:"git-branch"},()=>a,{get iconNode(){return l}}))}var Xi=new Set(["$$slots","$$events","$$legacy"]);function Mt(i,t){let a=le(t,Xi),l=[["path",{d:"m5 12 7-7 7 7"}],["path",{d:"M12 19V5"}]];ne(i,re({name:"arrow-up"},()=>a,{get iconNode(){return l}}))}var ji=new Set(["$$slots","$$events","$$legacy"]);function Lt(i,t){let a=le(t,ji),l=[["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"}]];ne(i,re({name:"folder"},()=>a,{get iconNode(){return l}}))}var qi=new Set(["$$slots","$$events","$$legacy"]);function rt(i,t){let a=le(t,qi),l=[["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"}]];ne(i,re({name:"triangle-alert"},()=>a,{get iconNode(){return l}}))}var _i=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>'),ea=v('<button class="recent-toggle svelte-oq97c4"> </button>'),ta=v('<div class="recent svelte-oq97c4"><div class="recent-label svelte-oq97c4">Recent</div> <!> <!></div>'),ia=v('<div class="muted svelte-oq97c4">Loading…</div>'),aa=v('<div class="muted err svelte-oq97c4"> </div>'),la=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>'),ra=v('<div class="muted svelte-oq97c4"> </div>'),fa=v('<span class="badge svelte-oq97c4">devcontainer</span>'),na=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>'),ca=v("<!> <!> <!>",1),da=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>`),sa=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 jt(i,t){ce(t,!0);let a=Ce(t,"defaultMode",3,"ide"),l=Ce(t,"initialMode",3,null),s=N(Ee(l())),u=E(()=>e(s)??a()),o=N(null),S=N(!0),y=N(null),F=N(""),k=N(null),J=N(Ee([])),_=N(!1),D=N(""),Q=N(""),M=E(()=>Ut(e(D)));function $(){if(!e(M))return;t.onpick(e(D).trim(),{branch:e(Q).trim()||void 0,mode:e(u)})}let U=E(()=>e(o)?e(o).entries.filter((T)=>T.name.toLowerCase().includes(e(F).trim().toLowerCase())):[]),K=E(()=>e(o)?.path===Ii),X=E(()=>e(_)?e(J):e(J).slice(0,5));async function z(){try{let T=await Xt("/api/history");r(J,T.history??[],!0)}catch{}}async function w(T){let Y=e(J);r(J,e(J).filter((Fe)=>Fe.source_path!==T),!0);try{await Ci("/api/history",{sourcePath:T})}catch{r(J,Y,!0)}}async function P(T=null){r(S,!0),r(y,null),r(F,"");try{let Y=T?`/api/browse?path=${encodeURIComponent(T)}`:"/api/browse";r(o,await Xt(Y,void 0,"Could not list folder"),!0)}catch(Y){r(y,Y.message,!0)}finally{r(S,!1)}await Tt(),e(k)?.focus()}Se(()=>{P(),z()});var p=sa(),ie=n(p),q=n(ie),Z=d(n(q),2),ve=n(Z);gt(ve,{size:16}),f(Z),f(q);var Ie=d(q,2),W=d(n(Ie),2),j=n(W);let oe;var h=n(j);nt(h,{size:15}),he(),f(j);var x=d(j,2);let I;var O=n(x);ft(O,{size:15}),he(),f(x),f(W),f(Ie);var Me=d(Ie,2),b=d(n(Me),2),C=n(b);Ze(C);var V=d(C,2);Ze(V);var se=d(V,2);f(b),f(Me);var ae=d(Me,2),pe=n(ae),c=n(pe,!0);f(pe),f(ae);var g=d(ae,2);{var ee=(T)=>{var Y=ta(),Fe=d(n(Y),2);Le(Fe,17,()=>e(X),(Ve)=>Ve.source_path,(Ve,Ne)=>{var me=_i(),ue=n(me),ze=n(ue),Je=n(ze);{var et=(Ke)=>{lt(Ke,{size:16})},tt=E(()=>Ut(e(Ne).source_path)),ot=(Ke)=>{yt(Ke,{size:16})};L(Je,(Ke)=>{if(e(tt))Ke(et);else Ke(ot,-1)})}f(ze);var St=d(ze,2),Qe=n(St),Jt=n(Qe,!0);f(Qe);var wt=d(Qe,2),Rt=n(wt,!0);f(wt),f(St),f(ue);var it=d(ue,2),Ye=n(it);gt(Ye,{size:14}),f(it),f(me),A(()=>{G(Jt,e(Ne).name),G(Rt,e(Ne).source_path),H(it,"aria-label",`Remove ${e(Ne).name??""} from history`)}),B("click",ue,()=>t.onpick(e(Ne).source_path,{mode:e(u)})),B("click",it,(Ke)=>{Ke.stopPropagation(),w(e(Ne).source_path)}),m(Ve,me)});var mt=d(Fe,2);{var _e=(Ve)=>{var Ne=ea(),me=n(Ne,!0);f(Ne),A(()=>G(me,e(_)?"Show fewer":`Show all (${e(J).length})`)),B("click",Ne,()=>r(_,!e(_))),m(Ve,Ne)};L(mt,(Ve)=>{if(e(J).length>5)Ve(_e)})}f(Y),m(T,Y)};L(g,(T)=>{if(e(J).length>0)T(ee)})}var te=d(g,2),ge=n(te);Ze(ge),We(ge,(T)=>r(k,T),()=>e(k)),f(te);var R=d(te,2),be=n(R);{var Oe=(T)=>{var Y=ia();m(T,Y)},qe=(T)=>{var Y=aa(),Fe=n(Y,!0);f(Y),A(()=>G(Fe,e(y))),m(T,Y)},we=(T)=>{var Y=ca(),Fe=ye(Y);{var mt=(me)=>{var ue=la(),ze=n(ue),Je=n(ze),et=n(Je);Mt(et,{size:16}),f(Je),he(2),f(ze),f(ue),B("click",ze,()=>P(e(o)?.parent??null)),m(me,ue)};L(Fe,(me)=>{if(e(o).parent&&!e(F))me(mt)})}var _e=d(Fe,2);{var Ve=(me)=>{var ue=ra(),ze=n(ue,!0);f(ue),A(()=>G(ze,e(F)?"No folders match.":"No subfolders here.")),m(me,ue)};L(_e,(me)=>{if(e(U).length===0)me(Ve)})}var Ne=d(_e,2);Le(Ne,19,()=>e(U),(me)=>me.path,(me,ue,ze)=>{var Je=na();let et;var tt=n(Je),ot=n(tt),St=n(ot);Lt(St,{size:16}),f(ot);var Qe=d(ot,2),Jt=n(Qe,!0);f(Qe);var wt=d(Qe,2);{var Rt=(Ye)=>{var Ke=fa();m(Ye,Ke)};L(wt,(Ye)=>{if(e(ue).hasDevcontainer)Ye(Rt)})}f(tt);var it=d(tt,2);f(Je),A((Ye)=>{et=xe(Je,1,"row svelte-oq97c4",null,et,Ye),G(Jt,e(ue).name)},[()=>({"first-match":e(F).trim()&&e(ze)===0})]),B("click",tt,()=>P(e(ue).path)),B("click",it,()=>t.onpick(e(ue).path,{mode:e(u)})),m(me,Je)}),m(T,Y)};L(be,(T)=>{if(e(S))T(Oe);else if(e(y))T(qe,1);else if(e(o))T(we,2)})}f(R);var De=d(R,2);{var Kt=(T)=>{var Y=da(),Fe=n(Y);rt(Fe,{size:15}),he(2),f(Y),m(T,Y)};L(De,(T)=>{if(e(o)&&!e(o).hasDevcontainer&&!e(K))T(Kt)})}var ht=d(De,2),st=n(ht),Ot=n(st,!0);f(st);var xt=d(st,2);f(ht),f(ie),f(p),A(()=>{oe=xe(j,1,"mode-btn svelte-oq97c4",null,oe,{active:e(u)==="ide"}),H(j,"aria-pressed",e(u)==="ide"),I=xe(x,1,"mode-btn svelte-oq97c4",null,I,{active:e(u)==="terminal"}),H(x,"aria-pressed",e(u)==="terminal"),se.disabled=!e(M),G(c,e(K)?Ni:e(o)?.path??"…"),G(Ot,e(K)?"Pick a drive to browse.":"Browse to a folder, then select this folder or any subfolder."),xt.disabled=!e(o)||e(K)}),B("click",p,function(...T){t.onclose?.apply(this,T)}),B("keydown",p,(T)=>T.key==="Escape"&&t.onclose()),B("click",ie,(T)=>T.stopPropagation()),B("keydown",ie,()=>{}),B("click",Z,function(...T){t.onclose?.apply(this,T)}),B("click",j,()=>r(s,"ide")),B("click",x,()=>r(s,"terminal")),B("keydown",C,(T)=>{if(T.key==="Enter")T.preventDefault(),$()}),He(C,()=>e(D),(T)=>r(D,T)),B("keydown",V,(T)=>{if(T.key==="Enter")T.preventDefault(),$()}),He(V,()=>e(Q),(T)=>r(Q,T)),B("click",se,$),B("keydown",ge,(T)=>{let Y=e(U)[0];if(T.key==="Enter"&&Y)T.preventDefault(),P(Y.path)}),He(ge,()=>e(F),(T)=>r(F,T)),B("click",xt,()=>e(o)&&!e(K)&&t.onpick(e(o).path,{mode:e(u)})),m(i,p),de()}$e(["click","keydown"]);var ma=v('<div class="branch svelte-jv8lut" title="Branch checked out in the container"><!><span class="svelte-jv8lut"> </span></div>');function qt(i,t){var a=ma(),l=n(a);lt(l,{size:12});var s=d(l),u=n(s,!0);f(s),f(a),A(()=>G(u,t.branch)),m(i,a)}var oa=new Set(["$$slots","$$events","$$legacy"]);function Pt(i,t){let a=le(t,oa),l=[["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"}]];ne(i,re({name:"cable"},()=>a,{get iconNode(){return l}}))}var ga=v('<a target="_blank" rel="noopener"> </a>'),ua=v('<div class="fports svelte-1uaz383" title="Forwarded ports — click to open"><!> <span class="list svelte-1uaz383"></span></div>');function ei(i,t){ce(t,!0);var a=Ge(),l=ye(a);{var s=(u)=>{var o=ua(),S=n(o);Pt(S,{size:12});var y=d(S,2);Le(y,21,()=>t.ports,(F)=>F.container_port,(F,k)=>{var J=ga();let _;var D=n(J,!0);f(J),A((Q,M)=>{_=xe(J,1,"fport svelte-1uaz383",null,_,{open:e(k).open}),H(J,"href",Q),H(J,"title",M),G(D,e(k).container_port)},[()=>_t(e(k).host_port),()=>`container :${e(k).container_port} → ${_t(e(k).host_port)} ${e(k).open?"(open)":"(not published yet)"}`]),m(F,J)}),f(y),f(o),m(u,o)};L(l,(u)=>{if(t.ports.length)u(s)})}m(i,a),de()}var va=v('<div class="busy-overlay svelte-13338y7" aria-live="polite"><span class="busy-label svelte-13338y7"> </span></div>'),ha=v('<input class="name-edit svelte-13338y7"/>'),xa=v('<button class="name svelte-13338y7" title="Click to rename"> </button>'),Sa=v("<span></span>"),wa=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>'),Ia=v('<div class="card-error svelte-13338y7"> </div>'),Na=v("<!> <!>",1),Ca=v('<li><!> <div class="card-head svelte-13338y7"><!> <!> <!> <!></div> <div class="path svelte-13338y7"> </div> <!> <!> <!> <!> <div class="actions svelte-13338y7"><!> <!> <!> <!></div></li>');function ti(i,t){ce(t,!0);let a=Ce(t,"editingName",15),l=Ce(t,"pending",3,null),s=E(()=>t.instance.status==="running"||t.instance.status==="stopped"||t.instance.status==="error"&&!!t.instance.container_id),u={start:"Starting…",stop:"Stopping…",delete:"Deleting…",rebuild:"Rebuilding…"};var o=Ca();let S;var y=n(o);{var F=(b)=>{var C=va(),V=n(C),se=n(V,!0);f(V),f(C),A(()=>G(se,u[l()])),m(b,C)};L(y,(b)=>{if(l())b(F)})}var k=d(y,2),J=n(k);{let b=E(()=>Xe(t.instance.avatar??void 0)??null);je(J,{get name(){return t.instance.name},get art(){return e(b)},interactive:!0})}var _=d(J,2);{var D=(b)=>{var C=ha();Ze(C),At(C,!0),ke("focus",C,(V)=>V.currentTarget.select()),ke("blur",C,function(...V){t.oncommitrename?.apply(this,V)}),B("keydown",C,(V)=>{if(V.key==="Enter")V.currentTarget.blur();else if(V.key==="Escape")t.oncancelrename()}),He(C,a),m(b,C)},Q=(b)=>{var C=xa(),V=n(C,!0);f(C),A(()=>G(V,t.instance.name)),B("click",C,function(...se){t.onstartrename?.apply(this,se)}),m(b,C)};L(_,(b)=>{if(t.editing)b(D);else b(Q,-1)})}var M=d(_,2);{var $=(b)=>{var C=Sa();let V;A(()=>{V=xe(C,1,"attn svelte-13338y7",null,V,{"attn-done":t.instance.attention==="done","attn-waiting":t.instance.attention==="waiting"}),H(C,"title",t.instance.attention==="waiting"?"Claude is waiting for input":"Claude finished"),H(C,"aria-label",t.instance.attention==="waiting"?"Claude is waiting for input":"Claude finished")}),m(b,C)};L(M,(b)=>{if(t.instance.attention)b($)})}var U=d(M,2);bi(U,{get status(){return t.instance.status}}),f(k);var K=d(k,2),X=n(K,!0);f(K);var z=d(K,2);{var w=(b)=>{ei(b,{get ports(){return t.instance.forwarded_ports}})};L(z,(b)=>{if(t.instance.status==="running")b(w)})}var P=d(z,2);{var p=(b)=>{qt(b,{get branch(){return t.instance.git_branch}})};L(P,(b)=>{if(t.instance.git_branch)b(p)})}var ie=d(P,2);{var q=(b)=>{var C=wa(),V=d(n(C),2),se=n(V,!0);f(V),f(C),A(()=>G(se,t.instance.active_run.status==="queued"?"Agent run queued":t.instance.active_run.last_activity??"Agent running")),m(b,C)};L(ie,(b)=>{if(t.instance.active_run)b(q)})}var Z=d(ie,2);{var ve=(b)=>{var C=Ia(),V=n(C,!0);f(C),A(()=>G(V,t.instance.error)),m(b,C)};L(Z,(b)=>{if(t.instance.status==="error"&&t.instance.error)b(ve)})}var Ie=d(Z,2),W=n(Ie);{var j=(b)=>{var C=Na(),V=ye(C);{let ae=E(()=>`/ide/${t.instance.id}`);Te(V,{variant:"primary",size:"sm",get href(){return e(ae)},children:(pe,c)=>{he();var g=Ae();A(()=>G(g,t.instance.mode==="terminal"?"Open terminal":"Open IDE")),m(pe,g)},$$slots:{default:!0}})}var se=d(V,2);Te(se,{size:"sm",onclick:()=>t.onact("stop"),children:(ae,pe)=>{he();var c=Ae("Stop");m(ae,c)},$$slots:{default:!0}}),m(b,C)},oe=(b)=>{Te(b,{size:"sm",onclick:()=>t.onact("start"),children:(C,V)=>{he();var se=Ae("Start");m(C,se)},$$slots:{default:!0}})},h=(b)=>{{let C=E(()=>Ue(`/instances/${t.instance.id}`));Te(b,{size:"sm",get href(){return e(C)},target:"_blank",rel:"noopener noreferrer",children:(V,se)=>{he();var ae=Ae("View logs");m(V,ae)},$$slots:{default:!0}})}};L(W,(b)=>{if(t.instance.status==="running")b(j);else if(t.instance.status==="stopped"||t.instance.status==="error"&&t.instance.container_id)b(oe,1);else if(t.instance.status==="creating")b(h,2)})}var x=d(W,2);{var I=(b)=>{Te(b,{size:"sm",title:"Recreate the container and re-run setup (credentials, hooks, port forwards)",onclick:()=>t.onact("rebuild"),children:(C,V)=>{he();var se=Ae("Rebuild");m(C,se)},$$slots:{default:!0}})};L(x,(b)=>{if(e(s))b(I)})}var O=d(x,2);{let b=E(()=>Ue(`/instances/${t.instance.id}`));Te(O,{size:"sm",ghost:!0,get href(){return e(b)},target:"_blank",rel:"noopener noreferrer",children:(C,V)=>{he();var se=Ae("Details");m(C,se)},$$slots:{default:!0}})}var Me=d(O,2);Te(Me,{variant:"danger",size:"sm",onclick:()=>t.onact("delete"),children:(b,C)=>{he();var V=Ae("Delete");m(b,V)},$$slots:{default:!0}}),f(Ie),f(o),A(()=>{S=xe(o,1,"card panel svelte-13338y7",null,S,{busy:!!l()}),H(o,"aria-busy",!!l()||void 0),H(K,"title",t.instance.source_path),G(X,t.instance.source_path)}),m(i,o),de()}$e(["keydown","click"]);var ba=new Set(["$$slots","$$events","$$legacy"]);function Ft(i,t){let a=le(t,ba),l=[["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"}]];ne(i,re({name:"component"},()=>a,{get iconNode(){return l}}))}var Ea=new Set(["$$slots","$$events","$$legacy"]);function $t(i,t){let a=le(t,Ea),l=[["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"}]];ne(i,re({name:"package"},()=>a,{get iconNode(){return l}}))}var ya=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 ii(i,t){ce(t,!0);var a=ya(),l=n(a),s=n(l);{var u=(S)=>{je(S,{get art(){return t.pet},get name(){return t.pet.name},scale:4})},o=(S)=>{$t(S,{size:22})};L(s,(S)=>{if(t.pet)S(u);else S(o,-1)})}f(l),he(),f(a),m(i,a),de()}var Ma=v('<button type="button" role="radio"> </button>'),La=v('<div class="picker svelte-12yor8r" role="radiogroup" aria-label="Filter instances"></div>');function ai(i,t){ce(t,!0);let a=[{value:"all",label:"All"},{value:"active",label:"Active"},{value:"stopped",label:"Stopped"}];var l=La();Le(l,21,()=>a,(s)=>s.value,(s,u)=>{var o=Ma();let S;var y=n(o,!0);f(o),A(()=>{S=xe(o,1,"segment svelte-12yor8r",null,S,{active:t.value===e(u).value}),H(o,"aria-checked",t.value===e(u).value),G(y,e(u).label)}),B("click",o,()=>t.onchange(e(u).value)),m(s,o)}),f(l),m(i,l),de()}$e(["click"]);var Ta=new Set(["$$slots","$$events","$$legacy"]);function ct(i,t){let a=le(t,Ta),l=[["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"}]];ne(i,re({name:"settings"},()=>a,{get iconNode(){return l}}))}var Pa=v('<a class="cog svelte-1e745g8" target="_blank" rel="noopener noreferrer" aria-label="Settings" title="Settings"><!></a>');function li(i,t){ce(t,!1),Ei();var a=Pa(),l=n(a);ct(l,{size:16}),f(a),A((s)=>H(a,"href",s),[()=>Ue("/settings")]),m(i,a),de()}var Aa=new Set(["$$slots","$$events","$$legacy"]);function pt(i,t){let a=le(t,Aa),l=[["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"}]];ne(i,re({name:"link"},()=>a,{get iconNode(){return l}}))}var Fa=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>'),$a=v('<div class="cred-dropdown panel svelte-vongf9" role="menu"></div>'),pa=v('<div class="cred-menu svelte-vongf9"><button aria-haspopup="menu" aria-label="Credentials" title="Credentials"><!></button> <!></div>');function ri(i,t){ce(t,!0);let a=N(!1),l=E(()=>t.auth.filter((D)=>D.available).length),s=E(()=>e(l)===t.auth.length?"ok":e(l)===0?"error":"warn"),u={ok:pt,warn:rt,error:gt},o=E(()=>u[e(s)]);function S(D){if(D.available)ut.success(`${D.label} credentials come from ${D.source}.`);else{let Q=D.hint?` — ${D.hint}`:"";ut.error(`No ${D.label} credentials found${Q}.`)}}Se(()=>{if(!e(a))return;let D=(M)=>{if(!M.target?.closest(".cred-menu"))r(a,!1)},Q=(M)=>{if(M.key==="Escape")r(a,!1)};return window.addEventListener("click",D),window.addEventListener("keydown",Q),()=>{window.removeEventListener("click",D),window.removeEventListener("keydown",Q)}});var y=pa(),F=n(y),k=n(F);yi(k,()=>e(o),(D,Q)=>{Q(D,{size:16})}),f(F);var J=d(F,2);{var _=(D)=>{var Q=$a();Le(Q,21,()=>t.auth,(M)=>M.id,(M,$)=>{var U=Fa(),K=n(U),X=d(K,2),z=n(X,!0);f(X);var w=d(X,2),P=n(w,!0);f(w),f(U),A(()=>{H(U,"title",e($).available?`Credentials from ${e($).source}, copied into each new instance.`:`No credentials found on this computer${e($).hint?` — ${e($).hint}`:""}.`),xe(K,1,`dot ${e($).available?"on":"off"}`,"svelte-vongf9"),G(z,e($).label),G(P,e($).available?"Authorized":"Not found")}),B("click",U,()=>S(e($))),m(M,U)}),f(Q),m(D,Q)};L(J,(D)=>{if(e(a))D(_)})}f(y),A(()=>{xe(F,1,`cred ${e(s)??""}`,"svelte-vongf9"),H(F,"aria-expanded",e(a))}),B("click",F,()=>r(a,!e(a))),m(i,y),de()}$e(["click"]);var za=v('<header class="topbar svelte-1h259us"><!> <div class="topbar-actions svelte-1h259us"><!> <!> <!> <!> <!> <div class="new-group svelte-1h259us"><!> <!></div></div></header>');function fi(i,t){ce(t,!0);let a=Ce(t,"canDelete",3,!1),l=Ce(t,"ready",3,!0),s=Ce(t,"creating",3,!1),u=Ce(t,"defaultMode",3,"ide"),o=E(()=>u()==="terminal"?"ide":"terminal");var S=za(),y=n(S);ii(y,{get pet(){return t.pet}});var F=d(y,2),k=n(F);{var J=(z)=>{Te(z,{variant:"default",size:"sm",get icon(){return Ft},href:"/debug",children:(w,P)=>{he();var p=Ae("Debug");m(w,p)},$$slots:{default:!0}})};L(k,(z)=>{if(Mi)z(J)})}var _=d(k,2);{var D=(z)=>{ai(z,{get value(){return t.filter},get onchange(){return t.onFilter}})};L(_,(z)=>{if(t.filter&&t.onFilter)z(D)})}var Q=d(_,2);li(Q,{});var M=d(Q,2);ri(M,{get auth(){return t.auth}});var $=d(M,2);{let z=E(()=>!a());Te($,{variant:"danger",size:"sm",get onclick(){return t.onDeleteAll},get disabled(){return e(z)},children:(w,P)=>{he();var p=Ae("Delete all");m(w,p)},$$slots:{default:!0}})}var U=d($,2),K=n(U);{let z=E(()=>s()?void 0:zt),w=E(()=>!l()||s());Te(K,{variant:"primary",size:"sm",get icon(){return e(z)},onclick:()=>t.onNew?.(),get disabled(){return e(w)},children:(P,p)=>{he();var ie=Ae();A(()=>G(ie,s()?"Creating…":"New instance")),m(P,ie)},$$slots:{default:!0}})}var X=d(K,2);{let z=E(()=>e(o)==="terminal"?ft:nt),w=E(()=>!l()||s()),P=E(()=>e(o)==="terminal"?"New terminal instance":"New full IDE instance"),p=E(()=>e(o)==="terminal"?"New terminal instance":"New full IDE instance");Te(X,{variant:"default",size:"sm",square:!0,get icon(){return e(z)},iconSize:15,onclick:()=>t.onNew?.(e(o)),get disabled(){return e(w)},get title(){return e(P)},get "aria-label"(){return e(p)}})}f(U),f(F),f(S),m(i,S),de()}var Wa=v("<span>Docker daemon is not reachable.</span>"),Va=v("<span>The devcontainer CLI is not available.</span>"),ka=v('<div class="banner error svelte-146pixd"><strong>Setup needed.</strong> <!> <!></div>'),Ba=v('<div class="banner error svelte-146pixd"><strong>Error.</strong> <span> </span></div>'),Da=v('<div class="empty svelte-146pixd"><p class="empty-sub svelte-146pixd">Loading…</p></div>'),Ka=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>'),Oa=v('<div class="empty svelte-146pixd"><p class="empty-sub svelte-146pixd"> </p></div>'),Ja=v('<ul class="grid svelte-146pixd"></ul>'),Ra=v('<!> <main class="stage svelte-146pixd"><!> <!> <!></main> <!>',1);function ni(i,t){ce(t,!0);let a=N(!1),l=N(null),s=N(!1),u=N(null),o=N(null),S=N(""),y=N(Ee({})),F=E(()=>t.preflight.docker&&t.preflight.cli),k=E(()=>t.instances.filter((h)=>{if(t.filter==="active")return h.status==="running"||h.status==="creating";if(t.filter==="stopped")return h.status==="stopped"||h.status==="error";return!0}));Se(()=>{for(let[h,{since:x}]of Object.entries(e(y))){let I=t.instances.find((O)=>O.id===h);if(!I||I.status!==x)J(h)}});function J(h){let{[h]:x,...I}=e(y);r(y,I,!0)}async function _(h,x){r(a,!1),r(s,!0),r(u,null);try{await Be("/api/instances",{sourcePath:h,branch:x?.branch,mode:x?.mode},"Failed to create instance")}catch(I){r(u,I.message,!0)}finally{r(s,!1)}}async function D(h,x){if(r(u,null),x==="delete"&&!confirm("Delete this instance and its copied files?"))return;if(x==="rebuild"&&!confirm("Recreate this container and re-run setup? The workspace is kept."))return;let I=t.instances.find((O)=>O.id===h)?.status;if(I)r(y,{...e(y),[h]:{action:x,since:I}},!0);try{await Be(`/api/instances/${h}/${x}`,void 0,`Failed to ${x}`)}catch(O){r(u,O.message,!0),J(h)}}function Q(h){r(o,h.id,!0),r(S,h.name,!0)}function M(){r(o,null),r(S,"")}async function $(h){let x=e(S).trim(),I=t.instances.find((O)=>O.id===h)?.name;if(!x||x===I){M();return}M(),r(u,null);try{await Be(`/api/instances/${h}/rename`,{name:x},"Failed to rename")}catch(O){r(u,O.message,!0)}}async function U(){if(r(u,null),!confirm(`Delete all ${t.instances.length} instances and their copied files?`))return;try{await Be("/api/instances/delete-all",void 0,"Failed to delete all")}catch(h){r(u,h.message,!0)}}var K=Ra(),X=ye(K);{let h=E(()=>t.instances.length>0);fi(X,{get auth(){return t.preflight.auth},get pet(){return t.pet},get canDelete(){return e(h)},get ready(){return e(F)},get creating(){return e(s)},get filter(){return t.filter},get onFilter(){return t.onFilter},get defaultMode(){return t.preflight.defaultMode},onNew:(x)=>{r(l,x??null,!0),r(a,!0)},onDeleteAll:U})}var z=d(X,2),w=n(z);{var P=(h)=>{var x=ka(),I=d(n(x),2);{var O=(C)=>{var V=Wa();m(C,V)};L(I,(C)=>{if(!t.preflight.docker)C(O)})}var Me=d(I,2);{var b=(C)=>{var V=Va();m(C,V)};L(Me,(C)=>{if(!t.preflight.cli)C(b)})}f(x),m(h,x)};L(w,(h)=>{if(!e(F))h(P)})}var p=d(w,2);{var ie=(h)=>{var x=Ba(),I=d(n(x),2),O=n(I,!0);f(I),f(x),A(()=>G(O,e(u))),m(h,x)};L(p,(h)=>{if(e(u))h(ie)})}var q=d(p,2);{var Z=(h)=>{var x=Da();m(h,x)},ve=(h)=>{var x=Ka(),I=d(n(x),4);{let O=E(()=>!e(F));Te(I,{variant:"primary",get icon(){return zt},onclick:()=>r(a,!0),get disabled(){return e(O)},children:(Me,b)=>{he();var C=Ae("New instance");m(Me,C)},$$slots:{default:!0}})}f(x),m(h,x)},Ie=(h)=>{var x=Oa(),I=n(x),O=n(I);f(I),f(x),A(()=>G(O,`No ${t.filter??""} instances.`)),m(h,x)},W=(h)=>{var x=Ja();Le(x,21,()=>e(k),(I)=>I.id,(I,O)=>{{let Me=E(()=>e(o)===e(O).id),b=E(()=>e(y)[e(O).id]?.action??null);ti(I,{get instance(){return e(O)},get editing(){return e(Me)},get pending(){return e(b)},onact:(C)=>D(e(O).id,C),onstartrename:()=>Q(e(O)),oncommitrename:()=>$(e(O).id),oncancelrename:M,get editingName(){return e(S)},set editingName(C){r(S,C,!0)}})}}),f(x),m(h,x)};L(q,(h)=>{if(!t.loaded)h(Z);else if(t.instances.length===0)h(ve,1);else if(e(k).length===0)h(Ie,2);else h(W,-1)})}f(z);var j=d(z,2);{var oe=(h)=>{jt(h,{onpick:_,get defaultMode(){return t.preflight.defaultMode},get initialMode(){return e(l)},onclose:()=>r(a,!1)})};L(j,(h)=>{if(e(a))h(oe)})}m(i,K),de()}var Za=new Set(["$$slots","$$events","$$legacy"]);function dt(i,t){let a=le(t,Za),l=[["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"}]];ne(i,re({name:"rotate-cw"},()=>a,{get iconNode(){return l}}))}var Ha=new Set(["$$slots","$$events","$$legacy"]);function Wt(i,t){let a=le(t,Ha),l=[["path",{d:"m15 18-6-6 6-6"}]];ne(i,re({name:"chevron-left"},()=>a,{get iconNode(){return l}}))}var Qa=v('<button type="button" class="page svelte-r39acv" aria-label="Scroll tabs left"><!></button>'),Ya=v('<div class="tab editing svelte-r39acv"><!> <input class="tab-name-edit svelte-r39acv"/></div>'),Ga=v("<span></span>"),Ua=v('<button type="button" role="tab"><!> <span class="tab-name svelte-r39acv"> </span> <span class="tab-mode svelte-r39acv"><!></span> <!></button>'),Xa=v('<button type="button" class="page trailing svelte-r39acv" aria-label="Scroll tabs right"><!></button>'),ja=v('<div class="strip svelte-r39acv"><!> <div class="viewport svelte-r39acv"><div class="tabs svelte-r39acv" role="tablist" aria-label="Instances"></div></div> <!></div>'),qa=v('<button type="button" class="reload svelte-r39acv" title="Reload editor" aria-label="Reload editor"><!></button>'),_a=v('<!> <div class="right svelte-r39acv"><!> <a class="cog svelte-r39acv" target="_blank" rel="noopener noreferrer" title="Settings" aria-label="Settings"><!></a></div>',1);function ci(i,t){ce(t,!0);let a=Ce(t,"editingName",15),l=E(()=>t.running.findIndex((M)=>M.id===t.active)),s=E(()=>e(l)>=0?e(l):0),u=N(null),o=N(null),S=N(!0),y=N(!0),F=Ee({}),k=E(()=>!e(S)||!e(y));function J(){if(!e(u))return;r(S,e(u).scrollLeft<=1),r(y,e(u).scrollLeft+e(u).clientWidth>=e(u).scrollWidth-1)}function _(M){let $=t.running[M];if(!$)return;t.onselect($.id),F[$.id]?.focus()}function D(M){let $=Et(e(l),M.key,t.running.length);if($===null)return;M.preventDefault(),_($)}function Q(M){if(!e(u))return;e(u).scrollBy({left:M*Math.max(160,e(u).clientWidth*0.7)})}Se(()=>{let M=e(u),$=e(o);if(!M||!$)return;J();let U=new ResizeObserver(J);return U.observe(M),U.observe($),M.addEventListener("scroll",J,{passive:!0}),()=>{U.disconnect(),M.removeEventListener("scroll",J)}}),Se(()=>{F[t.active]?.scrollIntoView({block:"nearest",inline:"nearest"})}),Ti(i,{children:(M,$)=>{var U=_a(),K=ye(U);{var X=(q)=>{var Z=ja(),ve=n(Z);{var Ie=(x)=>{var I=Qa(),O=n(I);Wt(O,{size:16}),f(I),A(()=>I.disabled=e(S)),B("click",I,()=>Q(-1)),m(x,I)};L(ve,(x)=>{if(e(k))x(Ie)})}var W=d(ve,2),j=n(W);Le(j,23,()=>t.running,(x)=>x.id,(x,I,O)=>{var Me=Ge(),b=ye(Me);{var C=(se)=>{var ae=Ya(),pe=n(ae);{let g=E(()=>Xe(e(I).avatar??void 0)??null);je(pe,{get name(){return e(I).name},get art(){return e(g)},scale:3})}var c=d(pe,2);Ze(c),At(c,!0),f(ae),ke("focus",c,(g)=>g.currentTarget.select()),ke("blur",c,()=>t.oncommitrename(e(I).id)),B("keydown",c,(g)=>{if(g.key==="Enter")g.currentTarget.blur();else if(g.key==="Escape")t.oncancelrename()}),He(c,a),m(se,ae)},V=(se)=>{var ae=Ua();let pe;var c=n(ae);{let we=E(()=>Xe(e(I).avatar??void 0)??null);je(c,{get name(){return e(I).name},get art(){return e(we)},scale:3})}var g=d(c,2),ee=n(g,!0);f(g);var te=d(g,2),ge=n(te);{var R=(we)=>{ft(we,{size:11})},be=(we)=>{nt(we,{size:11})};L(ge,(we)=>{if(e(I).mode==="terminal")we(R);else we(be,-1)})}f(te);var Oe=d(te,2);{var qe=(we)=>{var De=Ga();A(()=>{xe(De,1,`attn ${t.attention[e(I).id]??""}`,"svelte-r39acv"),H(De,"aria-label",t.attention[e(I).id]==="waiting"?"Claude is waiting for input":"Claude finished")}),m(we,De)};L(Oe,(we)=>{if(e(I).id!==t.active&&t.attention[e(I).id])we(qe)})}f(ae),We(ae,(we,De)=>F[De.id]=we,(we)=>F?.[we.id],()=>[e(I)]),A(()=>{pe=xe(ae,1,"tab svelte-r39acv",null,pe,{active:e(I).id===t.active}),H(ae,"id",`tab-${e(I).id??""}`),H(ae,"aria-selected",e(I).id===t.active),H(ae,"tabindex",e(O)===e(s)?0:-1),H(ae,"title",e(I).name),G(ee,e(I).name),H(te,"aria-label",e(I).mode==="terminal"?"Terminal-only instance":"Full IDE instance")}),B("click",ae,()=>t.onselect(e(I).id)),B("dblclick",ae,()=>t.onstartrename(e(I))),B("keydown",ae,D),m(se,ae)};L(b,(se)=>{if(t.editingId===e(I).id)se(C);else se(V,-1)})}m(x,Me)}),f(j),We(j,(x)=>r(o,x),()=>e(o)),f(W),We(W,(x)=>r(u,x),()=>e(u));var oe=d(W,2);{var h=(x)=>{var I=Xa(),O=n(I);Li(O,{size:16}),f(I),A(()=>I.disabled=e(y)),B("click",I,()=>Q(1)),m(x,I)};L(oe,(x)=>{if(e(k))x(h)})}f(Z),m(q,Z)};L(K,(q)=>{if(t.running.length>0)q(X)})}var z=d(K,2),w=n(z);{var P=(q)=>{var Z=qa(),ve=n(Z);dt(ve,{size:18}),f(Z),B("click",Z,function(...Ie){t.onreload?.apply(this,Ie)}),m(q,Z)};L(w,(q)=>{if(t.onreload)q(P)})}var p=d(w,2),ie=n(p);ct(ie,{size:18}),f(p),f(z),A((q)=>H(p,"href",q),[()=>Ue("/settings")]),m(M,U)},$$slots:{default:!0}}),de()}$e(["click","keydown","dblclick"]);var el=v('<div class="row svelte-w5e143"> </div>'),tl=v('<div class="stalled svelte-w5e143"><p class="svelte-w5e143"> </p> <!></div>'),il=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 Vt(i,t){ce(t,!0);let a=Ce(t,"speed",3,1),l=Ce(t,"mode",3,"ide"),s=E(()=>l()==="terminal"),u=N(!1);Se(()=>{if(t.stalledAfterMs===void 0)return;let X=setTimeout(()=>r(u,!0),t.stalledAfterMs);return()=>clearTimeout(X)});let o=3,S=22,y=140,F=7,k=E(()=>Math.max(20,y/a())),_=N(Ee((()=>Array.from({length:o},()=>Array.from({length:S},()=>Math.random()<0.5?0:1)))()));Se(()=>{if(window.matchMedia?.("(prefers-reduced-motion: reduce)").matches)return;let X=setInterval(()=>{let z=e(_).map((w)=>w.slice());for(let w=0;w<F;w++){let P=z[Math.floor(Math.random()*o)],p=Math.floor(Math.random()*S);P[p]=P[p]?0:1}r(_,z,!0)},e(k));return()=>clearInterval(X)});var D=il(),Q=n(D);Le(Q,21,()=>e(_),Pi,(X,z)=>{var w=el(),P=n(w,!0);f(w),A((p)=>G(P,p),[()=>e(z).join("")]),m(X,w)}),f(Q);var M=d(Q,2),$=n(M);he(3),f(M);var U=d(M,2);{var K=(X)=>{var z=tl(),w=n(z),P=n(w);f(w);var p=d(w,2);{var ie=(q)=>{Te(q,{size:"sm",get onclick(){return t.onoverride},children:(Z,ve)=>{he();var Ie=Ae("Open anyway");m(Z,Ie)},$$slots:{default:!0}})};L(p,(q)=>{if(t.onoverride)q(ie)})}f(z),A(()=>G(P,`Waiting for ${e(s)?"the terminal":"code-server"} to answer inside the container.`)),m(X,z)};L(U,(X)=>{if(e(u))X(K)})}f(D),A(()=>G($,`Loading ${e(s)?"terminal":"editor"}`)),m(i,D),de()}var al=new Set(["$$slots","$$events","$$legacy"]);function kt(i,t){let a=le(t,al),l=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2"}],["path",{d:"M15 3v18"}],["path",{d:"m10 15-3-3 3-3"}]];ne(i,re({name:"panel-right-open"},()=>a,{get iconNode(){return l}}))}var ll=new Set(["$$slots","$$events","$$legacy"]);function Bt(i,t){let a=le(t,ll),l=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2"}],["path",{d:"M15 3v18"}],["path",{d:"m8 9 3 3-3 3"}]];ne(i,re({name:"panel-right-close"},()=>a,{get iconNode(){return l}}))}var rl=v('<span class="status svelte-ui3nvu">connecting…</span>'),fl=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 Dt(i,t){ce(t,!0);let a=Ce(t,"focus",3,!0),l,s,u,o,S,y=!1,F=N(!1),k=0,J="0",_="1",D=48,Q=new TextEncoder;function M(W){if(o?.readyState===WebSocket.OPEN)o.send(Q.encode(W))}function $(W){let j=new Uint8Array(W);if(j.length===0)return;if(j[0]===D)s?.write(j.subarray(1))}function U(){let W=++k,j=location.protocol==="https:"?"wss:":"ws:",oe=t.arg?`?arg=${encodeURIComponent(t.arg)}`:"",h=new WebSocket(`${j}//${location.host}/p/${t.id}/ws${oe}`,["tty"]);o=h,h.binaryType="arraybuffer",h.onopen=()=>{if(k!==W)return;r(F,!0),M(JSON.stringify({AuthToken:"",columns:s?.cols??80,rows:s?.rows??24}))},h.onmessage=(x)=>{if(k===W)$(x.data)},h.onclose=()=>{if(k!==W||y)return;r(F,!1),S=setTimeout(U,1000)},h.onerror=()=>{try{h.close()}catch{}}}function K(){if(S)clearTimeout(S);k++,r(F,!1),s?.reset();let W=o;o=void 0;let j=!1,oe=()=>{if(j||y)return;if(j=!0,X(),U(),t.active&&a())s?.focus()};if(W&&W.readyState!==WebSocket.CLOSED){W.addEventListener("close",oe,{once:!0}),setTimeout(oe,1500);try{W.close()}catch{}}else oe()}function X(){if(l?.clientWidth>0&&l?.clientHeight>0)try{u?.fit()}catch{}}function z(){if(!s||!l)return;let W=getComputedStyle(l),j=W.backgroundColor||"#0d0e0a",oe=W.color||"#d8d9cf";s.options.theme={background:j,foreground:oe,cursor:oe,cursorAccent:j}}pi(()=>{let W,j=window.matchMedia("(prefers-color-scheme: dark)"),oe=()=>z();j.addEventListener("change",oe),(async()=>{let[{Terminal:x},{FitAddon:I}]=await Promise.all([import("/_mochi/client/chunk-a2hty99b.js"),import("/_mochi/client/chunk-5pg0be5f.js")]);if(y)return;if(s=new x({fontFamily:"'JetBrains Mono Variable', ui-monospace, monospace",fontSize:13,cursorBlink:!0,scrollback:1e4,allowProposedApi:!0}),u=new I,s.loadAddon(u),s.open(l),z(),X(),s.onData((O)=>M(J+O)),s.onResize(({cols:O,rows:Me})=>M(_+JSON.stringify({columns:O,rows:Me}))),W=new MutationObserver(z),W.observe(document.documentElement,{attributes:!0,attributeFilter:["data-theme"]}),U(),t.active&&a())s.focus()})();let h=new ResizeObserver(()=>X());return h.observe(l),()=>{if(y=!0,h.disconnect(),W?.disconnect(),j.removeEventListener("change",oe),S)clearTimeout(S);try{o?.close()}catch{}s?.dispose()}}),Se(()=>{if(t.active&&s){if(X(),a())s.focus()}});var w=fl(),P=ye(w);We(P,(W)=>l=W,()=>l);var p=d(P,2),ie=n(p);{var q=(W)=>{var j=rl();m(W,j)};L(ie,(W)=>{if(!e(F))W(q)})}var Z=d(ie,2);$i(Z,()=>t.actions??Fi);var ve=d(Z,2),Ie=n(ve);dt(Ie,{size:14}),f(ve),f(p),B("click",ve,K),m(i,w),de()}$e(["click"]);var nl=v('<button type="button"><!></button>'),cl=v('<div role="separator" aria-orientation="vertical" aria-label="Resize terminal panes" tabindex="0"></div> <div><!></div>',1),dl=v('<div class="split svelte-1ysvu88"><div class="side svelte-1ysvu88"><!></div> <!></div>');function si(i,t){ce(t,!0);let a=(w)=>{var P=nl(),p=n(P);{var ie=(Z)=>{Bt(Z,{size:14})},q=(Z)=>{kt(Z,{size:14})};L(p,(Z)=>{if(e(s))Z(ie);else Z(q,-1)})}f(P),A(()=>{H(P,"aria-pressed",e(s)),H(P,"title",e(s)?"Hide the shell pane":"Open a shell alongside Claude"),H(P,"aria-label",e(s)?"Hide the shell pane":"Open a shell alongside Claude")}),B("click",P,F),m(w,P)},l=Ce(t,"initialOpen",3,!1),s=N(Ee(l())),u=N(Ee(l())),o=N(50),S=N("left"),y;function F(){if(r(s,!e(s)),e(s))r(u,!0);r(S,e(s)?"right":"left",!0),Be(`/api/instances/${t.id}/split`,{open:e(s)}).catch(()=>{})}function k(w){return Math.min(80,Math.max(20,w))}function J(w){let P=y.getBoundingClientRect();if(P.width>0)r(o,k((w-P.left)/P.width*100),!0)}function _(w){w.preventDefault(),w.currentTarget.setPointerCapture(w.pointerId)}function D(w){if(w.currentTarget.hasPointerCapture(w.pointerId))J(w.clientX)}function Q(w){if(w.key==="ArrowLeft")r(o,k(e(o)-5),!0);else if(w.key==="ArrowRight")r(o,k(e(o)+5),!0);else return;w.preventDefault()}var M=dl(),$=n(M);let U;var K=n($);{let w=E(()=>t.active&&e(S)==="left"),P=E(()=>e(s)?void 0:a);Dt(K,{get id(){return t.id},get active(){return t.active},get focus(){return e(w)},get actions(){return e(P)}})}f($);var X=d($,2);{var z=(w)=>{var P=cl(),p=ye(P);let ie;H(p,"aria-valuemin",20),H(p,"aria-valuemax",80);var q=d(p,2);let Z,ve;var Ie=n(q);{let W=E(()=>t.active&&e(s)),j=E(()=>t.active&&e(s)&&e(S)==="right"),oe=E(()=>e(s)?a:void 0);Dt(Ie,{get id(){return t.id},arg:"shell",get active(){return e(W)},get focus(){return e(j)},get actions(){return e(oe)}})}f(q),A((W)=>{ie=xe(p,1,"divider svelte-1ysvu88",null,ie,{hidden:!e(s)}),H(p,"aria-valuenow",W),Z=xe(q,1,"side svelte-1ysvu88",null,Z,{hidden:!e(s)}),ve=di(q,"",ve,{"flex-basis":`${100-e(o)}%`})},[()=>Math.round(e(o))]),B("pointerdown",p,_),B("pointermove",p,D),B("dblclick",p,()=>r(o,50)),B("keydown",p,Q),ke("pointerdown",q,()=>r(S,"right"),!0),m(w,P)};L(X,(w)=>{if(e(u))w(z)})}f(M),We(M,(w)=>y=w,()=>y),A(()=>U=di($,"",U,{"flex-basis":e(s)?`${e(o)}%`:"100%"})),ke("pointerdown",$,()=>r(S,"left"),!0),m(i,M),de()}$e(["click","pointerdown","pointermove","dblclick","keydown"]);var sl=v('<iframe class="svelte-1duc7gd"></iframe>'),ml=v('<div role="tabpanel"><!> <!></div>'),ol=v('<div class="empty svelte-1duc7gd">No running instances.</div>'),gl=v("<div><!> <div><!> <!></div></div> <!>",1);function oi(i,t){ce(t,!0);let a=N(Ee(t.snapshot)),l=N(Ee(t.preflight)),s=N(Ee(t.pet)),u=N(Ee(t.filter)),o=N(t.snapshot.length>0),S=E(()=>e(a).filter((c)=>c.status==="running")),y=N(Ee(Object.fromEntries(t.snapshot.map((c)=>[c.id,c.attention])))),F=N(null),k=N("");function J(c){r(F,c.id,!0),r(k,c.name,!0)}function _(){r(F,null),r(k,"")}async function D(c){let g=e(k).trim(),ee=e(a).find((te)=>te.id===c)?.name;if(!g||g===ee){_();return}_();try{await Be(`/api/instances/${c}/rename`,{name:g},"Failed to rename")}catch(te){ut.error(te.message)}}function Q(c){r(u,c,!0),Be("/api/settings/filter",{value:c}).catch(()=>{})}let M=N(Ee(t.initialPath)),$=E(()=>e(M).startsWith("/ide")),U=E(()=>e(M).startsWith("/ide/")?e(M).slice(5):""),K=E(()=>e($)?e(S).some((c)=>c.id===e(U))?e(U):e(S)[0]?.id??"":"");function X(c){if(c===e(M))return;history.pushState({},"",c),r(M,c,!0)}Se(()=>{function c(g){if(g.defaultPrevented||g.button!==0||g.metaKey||g.ctrlKey||g.shiftKey||g.altKey)return;let ee=g.target?.closest?.("a");if(!ee)return;let te=ee.getAttribute("href");if(!te||ee.target==="_blank"||ee.hasAttribute("download"))return;let ge=new URL(te,location.href);if(ge.origin!==location.origin)return;if(ge.pathname==="/"||ge.pathname.startsWith("/ide/"))g.preventDefault(),X(ge.pathname)}return document.addEventListener("click",c),()=>document.removeEventListener("click",c)}),Se(()=>{function c(){r(M,location.pathname,!0)}return window.addEventListener("popstate",c),()=>window.removeEventListener("popstate",c)}),Se(()=>{if(e(S).length===0)return;function c(g){g.preventDefault(),g.returnValue=""}return window.addEventListener("beforeunload",c),()=>window.removeEventListener("beforeunload",c)});let z=new Re;Se(()=>{if(e(K))z.add(e(K))});let w=new Re,P=new Re,p=new Re,ie=(c)=>P.has(c)||p.has(c),q=1e4,Z=E(()=>e(S).find((c)=>c.id===e(K))),ve={};function Ie(){let c=e(Z);if(!c||c.mode==="terminal")return;w.delete(c.id),ve[c.id]?.contentWindow?.location.replace(mi(c))}Se(()=>{document.title=e($)&&e(Z)?`${e(Z).name} — Codebay`:"Codebay"});function W(c,g){if(!c.altKey||c.ctrlKey||c.metaKey||e(F)||!Vi())return;let ee=/^Digit([1-9])$/.exec(c.code)?.[1];if(!ee)return;let te=Et(e(S).findIndex((R)=>R.id===e(K)),ee,e(S).length),ge=te===null?void 0:e(S)[te];if(!ge)return;if(c.preventDefault(),c.stopPropagation(),X(`/ide/${ge.id}`),g)Tt().then(()=>ve[ge.id]?.contentWindow?.focus())}let j=E(()=>e(S).filter((c)=>c.mode!=="terminal"&&w.has(c.id)).map((c)=>c.id).join(" "));Se(()=>{if(!e($))return;function c(ee,te){let ge=(R)=>W(R,te);return ee.addEventListener("keydown",ge,{capture:!0}),()=>ee.removeEventListener("keydown",ge,{capture:!0})}let g=[c(window,!1)];for(let ee of e(j).split(" ").filter(Boolean)){let te=ve[ee]?.contentWindow;if(te)g.push(c(te,!0))}return()=>g.forEach((ee)=>ee())}),Se(()=>{return window.addEventListener("pointerdown",vt),window.addEventListener("keydown",vt),()=>{window.removeEventListener("pointerdown",vt),window.removeEventListener("keydown",vt)}}),Se(()=>{let c=!1;return Bi((g)=>{if(g.type==="preflight"){r(l,{...e(l),docker:g.data.docker,cli:g.data.cli},!0);return}if(g.type==="pet"){r(s,Xe(g.data.name??void 0),!0);return}if(g.type==="filter"){r(u,g.data.value,!0);return}if(g.type==="default-mode"){r(l,{...e(l),defaultMode:g.data.mode},!0);return}if(g.type==="theme"){Di(g.data.value);return}if(g.type==="run"){let R=g.data;r(a,e(a).map((be)=>be.id===R.instance_id?{...be,active_run:R.finished_at?null:R}:be),!0);return}if(g.type==="health"){let R=e(a).find((be)=>be.id===g.data.id);if(g.data.health.codeServerAccessible&&R?.status==="running")P.add(g.data.id);return}if(g.type!=="instances")return;let ee=g.data,te=new Set(ee.filter((R)=>R.status==="running").map((R)=>R.id));for(let R of[...P])if(!te.has(R))P.delete(R);for(let R of[...p])if(!te.has(R))p.delete(R);for(let R of[...w])if(!te.has(R))w.delete(R);let ge={};for(let R of ee)ge[R.id]=R.attention;if(c)for(let R in ge){let be=ge[R];if(be&&be!==e(y)[R])if(R===e(K))console.log(`[chime] attention id=${R} state=${be} — skipped (tab is active/focused)`);else console.log(`[chime] attention id=${R} state=${be} → playChime`),ki(be)}else console.log("[chime] first frame after (re)connect — baselining, no chimes");c=!0,r(a,ee,!0),r(y,ge,!0),r(o,!0)},()=>{c=!1})}),Se(()=>{if(!e(K)||!e(y)[e(K)])return;let c=()=>{if(document.visibilityState==="visible")Be(`/api/instances/${e(K)}/attention/clear`).catch(()=>{})};return c(),document.addEventListener("visibilitychange",c),()=>document.removeEventListener("visibilitychange",c)});var oe=gl(),h=ye(oe);let x;var I=n(h);{var O=(c)=>{{let g=E(()=>e(Z)&&e(Z).mode!=="terminal"&&ie(e(K))?Ie:void 0);ci(c,{get running(){return e(S)},get active(){return e(K)},get attention(){return e(y)},get editingId(){return e(F)},get onreload(){return e(g)},onselect:(ee)=>X(`/ide/${ee}`),onstartrename:J,oncommitrename:D,oncancelrename:_,get editingName(){return e(k)},set editingName(ee){r(k,ee,!0)}})}},Me=(c)=>{ni(c,{get preflight(){return e(l)},get instances(){return e(a)},get loaded(){return e(o)},get pet(){return e(s)},get filter(){return e(u)},onFilter:Q})};L(I,(c)=>{if(e($))c(O);else c(Me,-1)})}var b=d(I,2);let C;var V=n(b);Le(V,17,()=>e(S),(c)=>c.id,(c,g)=>{var ee=Ge(),te=ye(ee);{var ge=(be)=>{var Oe=ml();let qe;var we=n(Oe);{var De=(Y)=>{var Fe=Ge(),mt=ye(Fe);{var _e=(Ne)=>{{let me=E(()=>e(g).id===e(K)),ue=E(()=>e(g).terminal_split===1);si(Ne,{get id(){return e(g).id},get active(){return e(me)},get initialOpen(){return e(ue)}})}},Ve=(Ne)=>{var me=sl();We(me,(ue,ze)=>ve[ze.id]=ue,(ue)=>ve?.[ue.id],()=>[e(g)]),A((ue)=>{H(me,"src",ue),H(me,"title",e(g).name)},[()=>mi(e(g))]),ke("load",me,()=>w.add(e(g).id)),zi(me),m(Ne,me)};L(mt,(Ne)=>{if(e(g).mode==="terminal")Ne(_e);else Ne(Ve,-1)})}m(Y,Fe)},Kt=E(()=>ie(e(g).id));L(we,(Y)=>{if(e(Kt))Y(De)})}var ht=d(we,2);{var st=(Y)=>{Vt(Y,{get mode(){return e(g).mode},stalledAfterMs:q,onoverride:()=>p.add(e(g).id)})},Ot=E(()=>!ie(e(g).id)),xt=(Y)=>{Vt(Y,{})},T=E(()=>e(g).mode!=="terminal"&&!w.has(e(g).id));L(ht,(Y)=>{if(e(Ot))Y(st);else if(e(T))Y(xt,1)})}f(Oe),A(()=>{qe=xe(Oe,1,"pane svelte-1duc7gd",null,qe,{active:e(g).id===e(K)}),H(Oe,"aria-labelledby",`tab-${e(g).id??""}`)}),m(be,Oe)},R=E(()=>z.has(e(g).id));L(te,(be)=>{if(e(R))be(ge)})}m(c,ee)});var se=d(V,2);{var ae=(c)=>{var g=ol();m(c,g)};L(se,(c)=>{if(e($)&&e(S).length===0)c(ae)})}f(b),f(h);var pe=d(h,2);Wi(pe,{get toastOptions(){return Ki}}),A(()=>{x=xe(h,1,"app svelte-1duc7gd",null,x,{ide:e($)}),C=xe(b,1,"panes svelte-1duc7gd",null,C,{hidden:!e($)})}),m(i,oe),de()}Oi("AppShell_2rtnxn6pgp2rh",oi);
@@ -1,14 +0,0 @@
1
- import{A as cs}from"/_mochi/client/chunk-3fwjzw1r.js";import{B as ps}from"/_mochi/client/chunk-v3wg9mdy.js";import{C as S,D as q,E as Q,F as D,G as Z,H as Xe,I as Me,K as F,L as n,M as hs,N as be,O as is,P as as}from"/_mochi/client/chunk-p5wpyhsf.js";import{Q as H,R as ts}from"/_mochi/client/chunk-t2kfvtb6.js";import{$a as Ke,Ca as e,Ga as Ze,Ha as u,Ia as ze,Ja as g,La as d,Na as o,Oa as U,Pa as M,Qa as ms,Ra as ue,Sa as R,X as p,Y as L,Ya as me,Za as es,aa as Ce,ab as ss,ba as Ne,cb as qe,eb as ls,fb as he,hb as N,ib as z,ja as b,jb as fs,ma as E,oa as x,pb as os,qa as Se,ra as r,sa as rs,ta as i,xa as C}from"/_mochi/client/chunk-fn03gxer.js";import"/_mochi/client/chunk-ds9yn9cq.js";var zs=new Set(["$$slots","$$events","$$legacy"]);function ke(t,m){let f=N(m,zs),c=[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"}]];H(t,z({name:"copy"},()=>f,{get iconNode(){return c}}))}var Hs=new Set(["$$slots","$$events","$$legacy"]);function ve(t,m){let f=N(m,Hs),c=[["path",{d:"M21 21H8a2 2 0 0 1-1.42-.587l-3.994-3.999a2 2 0 0 1 0-2.828l10-10a2 2 0 0 1 2.829 0l5.999 6a2 2 0 0 1 0 2.828L12.834 21"}],["path",{d:"m5.082 11.09 8.828 8.828"}]];H(t,z({name:"eraser"},()=>f,{get iconNode(){return c}}))}var ys=new Set(["$$slots","$$events","$$legacy"]);function $e(t,m){let f=N(m,ys),c=[["circle",{cx:"12",cy:"12",r:"10"}],["path",{d:"M12 18a6 6 0 0 0 0-12v12z"}]];H(t,z({name:"contrast"},()=>f,{get iconNode(){return c}}))}var Ps=new Set(["$$slots","$$events","$$legacy"]);function xe(t,m){let f=N(m,Ps),c=[["path",{d:"M15 3h6v6"}],["path",{d:"M10 14 21 3"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"}]];H(t,z({name:"external-link"},()=>f,{get iconNode(){return c}}))}var re=[{id:"black",label:"Black"},{id:"gray",label:"Gray"},{id:"cycle",label:"Cycle"}];function Re(t,m){if(t==="black")return m===q?S:q;if(t==="gray")return m===Q?S:Q;return m===S?Q:m===Q?q:S}var js="https://github.com/khromov/codebay";function Fe(t){return t.trim().toLowerCase().replace(/[^a-z0-9-]+/g,"-").replace(/^-+|-+$/g,"")}function Oe(t){let m=[];for(let f=0;f<D;f++){let c="";for(let I=0;I<Z;I++){let y=t[f*Z+I];c+=y===q?"#":y===Q?"+":"."}m.push(c)}return m}function Te(t){let m=t.pixels.map((f)=>` '${f}'`).join(`,
2
- `);return`import type { AvatarArt } from './types.ts';
3
-
4
- const art: AvatarArt = {
5
- name: '${t.name}',
6
- pixels: [
7
- ${m}
8
- ]
9
- };
10
-
11
- export default art;
12
- `}function _e(t,m="create"){let f=m==="edit"?Qs(t):Js(t),c=m==="edit"?`Avatar edit: ${t.name}`:`Avatar contribution: ${t.name}`,I=new URLSearchParams({title:c,body:f});return`${js}/issues/new?${I}`}function Js(t){return["Hi! I drew this avatar in the editor easter egg and I'd love to see it in the official set.","","```",...t.pixels,"```","",`Ready-to-paste module (\`src/avatars/${t.name}.ts\`, plus a line in \`src/avatars/index.ts\`):`,"","```ts",Te(t).trimEnd(),"```","","_It should satisfy `src/avatars/avatars.test.ts`: exactly 8×8, only `#`/`+`/`.` pixels, unique name._"].join(`
13
- `)}function Qs(t){return[`Hi! I redrew the existing \`${t.name}\` sprite by hand in the editor easter egg — it started as an AI-generated placeholder and this replaces it.`,"","```",...t.pixels,"```","",`Ready-to-paste replacement for \`src/avatars/${t.name}.ts\` (the \`robot\` flag is intentionally dropped — it's hand-drawn now):`,"","```ts",Te(t).trimEnd(),"```","","_It should satisfy `src/avatars/avatars.test.ts`: exactly 8×8, only `#`/`+`/`.` pixels._"].join(`
14
- `)}var Zs=g('<button type="button" class="head-cancel svelte-qu6vp4"><!> <span>New drawing</span></button>'),us=g('<span class="ring-cell svelte-qu6vp4" aria-hidden="true"></span>'),Ks=g("<span></span>"),Xs=g('<div class="preview before"><div class="preview-label svelte-qu6vp4">Before</div> <div class="preview-row svelte-qu6vp4"><!></div></div>'),bs=g('<input type="text" readonly="" aria-readonly="true" class="svelte-qu6vp4"/>'),Es=g('<input type="text" spellcheck="false" autocapitalize="off" autocorrect="off" autocomplete="off" maxlength="24" class="svelte-qu6vp4"/>'),Ms=g('<button type="button" role="radio"> </button>'),Us=g('<section class="editor svelte-qu6vp4"><div class="head svelte-qu6vp4"><h2 class="svelte-qu6vp4"> </h2> <!></div> <div class="body svelte-qu6vp4"><div class="grid-frame svelte-qu6vp4"><!> <div class="grid svelte-qu6vp4" role="img" aria-label="8 by 8 pixel drawing canvas"></div></div> <div class="side svelte-qu6vp4"><div class="preview"><div class="preview-label svelte-qu6vp4">Preview</div> <div class="preview-row svelte-qu6vp4"><!> <!></div></div> <!> <label class="name-field svelte-qu6vp4"><span class="preview-label svelte-qu6vp4">Name</span> <!></label> <div class="mode-field svelte-qu6vp4"><span class="preview-label svelte-qu6vp4">Mode</span> <div class="modes svelte-qu6vp4" role="radiogroup" aria-label="Drawing mode"></div></div> <div class="tools svelte-qu6vp4"><!> <!> <!></div></div></div> <div class="foot svelte-qu6vp4"><span class="hint svelte-qu6vp4"> </span> <div class="actions svelte-qu6vp4"><!> <!></div></div></section>');function Ee(t,m){Ce(m,!0);let f=fs(m,"editing",3,null),c=b(()=>f()!=null),I=E(Se(f()?Xe(f()):Array(D*Z).fill(S))),y=E(Se(f()?.name??"")),W=b(()=>f()?f().name:Fe(e(y))),P=b(()=>({name:e(W)||"my-avatar",pixels:Oe(e(I))})),O=b(()=>e(W).length>0&&e(I).some((s)=>s!==S)),T=E("cycle"),_=Se([]);function ie(s,l){let h=s.key==="ArrowRight"||s.key==="ArrowDown"?1:s.key==="ArrowLeft"||s.key==="ArrowUp"?-1:0;if(h===0)return;s.preventDefault();let a=(l+h+re.length)%re.length;x(T,re[a].id,!0),_[a]?.focus()}let K=E(null),Y=!1,ee=q,ae=Array.from({length:100},(s,l)=>({r:Math.floor(l/10),c:l%10})).filter(({r:s,c:l})=>s===0||s===9||l===0||l===9);function ce(s){if(!e(K))return null;let l=e(K).getBoundingClientRect(),h=Math.floor((s.clientX-l.left)/l.width*Z),a=Math.floor((s.clientY-l.top)/l.height*D);if(a<0||a>=D||h<0||h>=Z)return null;return a*Z+h}function k(s){let l=ce(s);if(l==null)return;s.currentTarget.setPointerCapture?.(s.pointerId),Y=!0,ee=Re(e(T),e(I)[l]),e(I)[l]=ee}function v(s){if(!Y)return;let l=ce(s);if(l!=null)e(I)[l]=ee}function j(){Y=!1}function oe(){x(I,Array(D*Z).fill(S),!0)}function se(){if(f())x(I,Xe(f()),!0)}function Ie(){x(I,e(I).map((s)=>s===q?S:s===S?q:s),!0)}async function ye(){try{await navigator.clipboard.writeText(Te(e(P))),be("Copied — paste it into the GitHub issue")}catch(s){be.error(`Copy failed: ${s.message}`)}}var le=Us(),fe=r(le),te=r(fe),J=r(te,!0);p(te);var $=i(te,2);{var A=(s)=>{var l=Zs(),h=r(l);ts(h,{size:14}),L(2),p(l),u("click",l,()=>m.oncancelEdit?.()),o(s,l)};M($,(s)=>{if(e(c))s(A)})}p(fe);var G=i(fe,2),w=r(G),ge=r(w);R(ge,17,()=>ae,ue,(s,l)=>{let h=()=>e(l).r,a=()=>e(l).c;var V=us();C(()=>es(V,`grid-row:${h()+1};grid-column:${a()+1}`)),o(s,V)});var X=i(ge,2);R(X,21,()=>e(I),ue,(s,l)=>{var h=Ks();let a;C(()=>a=me(h,1,"cell svelte-qu6vp4",null,a,{on:e(l)===q,gray:e(l)===Q})),o(s,h)}),p(X),he(X,(s)=>x(K,s),()=>e(K)),p(w);var Ve=i(w,2),Pe=r(Ve),De=i(r(Pe),2),Le=r(De);F(Le,{get art(){return e(P)},get name(){return e(P).name},scale:6});var Is=i(Le,2);F(Is,{get art(){return e(P)},get name(){return e(P).name},scale:3}),p(De),p(Pe);var We=i(Pe,2);{var gs=(s)=>{var l=Xs(),h=i(r(l),2),a=r(h);F(a,{get art(){return f()},get name(){return f().name},scale:3}),p(h),p(l),o(s,l)};M(We,(s)=>{if(e(c))s(gs)})}var je=i(We,2),ks=i(r(je),2);{var vs=(s)=>{var l=bs();Ke(l),C(()=>ss(l,f().name)),o(s,l)},$s=(s)=>{var l=Es();Ke(l),C(()=>qe(l,"placeholder",m.namePlaceholder)),ls(l,()=>e(y),(h)=>x(y,h)),o(s,l)};M(ks,(s)=>{if(e(c))s(vs);else s($s,-1)})}p(je);var Je=i(je,2),Ye=i(r(Je),2);R(Ye,23,()=>re,(s)=>s.id,(s,l,h)=>{var a=Ms();let V;var Cs=r(a,!0);p(a),he(a,(pe,Ns)=>_[Ns]=pe,(pe)=>_?.[pe],()=>[e(h)]),C(()=>{V=me(a,1,"mode svelte-qu6vp4",null,V,{active:e(T)===e(l).id}),qe(a,"aria-checked",e(T)===e(l).id),qe(a,"tabindex",e(T)===e(l).id?0:-1),U(Cs,e(l).label)}),u("click",a,()=>x(T,e(l).id,!0)),u("keydown",a,(pe)=>ie(pe,e(h))),o(s,a)}),p(Ye),p(Je);var Ae=i(Je,2),Ge=r(Ae);{var xs=(s)=>{n(s,{size:"sm",get icon(){return ps},onclick:se,children:(l,h)=>{L();var a=d("Reset");o(l,a)},$$slots:{default:!0}})};M(Ge,(s)=>{if(e(c))s(xs)})}var we=i(Ge,2);n(we,{size:"sm",get icon(){return ve},onclick:oe,children:(s,l)=>{L();var h=d("Clear");o(s,h)},$$slots:{default:!0}});var Ts=i(we,2);n(Ts,{size:"sm",get icon(){return $e},onclick:Ie,children:(s,l)=>{L();var h=d("Invert");o(s,h)},$$slots:{default:!0}}),p(Ae),p(Ve),p(G);var Be=i(G,2),Qe=r(Be),Ss=r(Qe,!0);p(Qe);var de=i(Qe,2),ne=r(de);{let s=b(()=>!e(O));n(ne,{size:"sm",get icon(){return ke},get disabled(){return e(s)},onclick:ye,children:(l,h)=>{L();var a=d("Copy");o(l,a)},$$slots:{default:!0}})}var qs=i(ne,2);{let s=b(()=>!e(O)),l=b(()=>_e(e(P),e(c)?"edit":"create"));n(qs,{size:"sm",variant:"primary",get icon(){return xe},get disabled(){return e(s)},get href(){return e(l)},target:"_blank",rel:"noopener",children:(h,a)=>{L();var V=d("Open GitHub issue");o(h,V)},$$slots:{default:!0}})}p(de),p(Be),p(le),C(()=>{U(J,e(c)?`Redraw “${f().name}”`:"Draw your own avatar"),U(Ss,e(c)?"Redraw it, then open an issue to replace the AI-generated original.":"Draw something, then open an issue to get it into the official set.")}),u("pointerdown",X,k),u("pointermove",X,v),u("pointerup",X,j),Ze("pointercancel",X,j),Ze("lostpointercapture",X,j),o(t,le),Ne()}ze(["click","pointerdown","pointermove","pointerup","keydown"]);var Vs=new Set(["$$slots","$$events","$$legacy"]);function He(t,m){let f=N(m,Vs),c=[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z"}],["path",{d:"m15 5 4 4"}]];H(t,z({name:"pencil"},()=>f,{get iconNode(){return c}}))}var Ds=g('<span class="title svelte-fkq7sr">Avatars</span>'),Ls=g('<span class="robot-mark svelte-fkq7sr" title="AI-generated"><!></span>'),Ws=g('<button type="button"><!> <span> </span></button>'),Ys=g('<li class="svelte-fkq7sr"><!> <span class="label svelte-fkq7sr"><!> </span> <!></li>'),As=g('<div class="page svelte-fkq7sr"><!> <main class="content svelte-fkq7sr"><div class="editor-slot svelte-fkq7sr"><!></div> <section class="catalog svelte-fkq7sr"><header class="svelte-fkq7sr"><h2 class="svelte-fkq7sr">The set</h2> <p class="svelte-fkq7sr"> </p></header> <ul class="svelte-fkq7sr"></ul></section></main></div> <!>',1);function Ue(t,m){Ce(m,!0);let f=E(null),c=E(null);function I(k){x(f,k,!0),e(c)?.scrollIntoView({behavior:"smooth",block:"start"})}var y=As(),W=rs(y),P=r(W);is(P,{children:(k,v)=>{var j=Ds();o(k,j)},$$slots:{default:!0}});var O=i(P,2),T=r(O),_=r(T);ms(_,()=>e(f)?.name??"\x00new",(k)=>{Ee(k,{get namePlaceholder(){return m.namePlaceholder},get editing(){return e(f)},oncancelEdit:()=>x(f,null)})}),p(T),he(T,(k)=>x(c,k),()=>e(c));var ie=i(T,2),K=r(ie),Y=i(r(K),2),ee=r(Y);p(Y),p(K);var ae=i(K,2);R(ae,21,()=>Me,(k)=>k.name,(k,v)=>{var j=Ys(),oe=r(j);F(oe,{get art(){return e(v)},get name(){return e(v).name},scale:8,interactive:!0});var se=i(oe,2),Ie=r(se);{var ye=(J)=>{var $=Ls(),A=r($);cs(A,{size:11}),p($),o(J,$)};M(Ie,(J)=>{if(e(v).robot)J(ye)})}var le=i(Ie);p(se);var fe=i(se,2);{var te=(J)=>{var $=Ws();let A;var G=r($);He(G,{size:11});var w=i(G,2),ge=r(w,!0);p(w),p($),C(()=>{A=me($,1,"edit-btn svelte-fkq7sr",null,A,{active:e(f)?.name===e(v).name}),$.disabled=e(f)?.name===e(v).name,U(ge,e(f)?.name===e(v).name?"Editing":"Redraw")}),u("click",$,()=>I(e(v))),o(J,$)};M(fe,(J)=>{if(e(v).robot)J(te)})}p(j),C(()=>U(le,` ${e(v).name??""}`)),o(k,j)}),p(ae),p(ie),p(O),p(W);var ce=i(W,2);hs(ce,{get toastOptions(){return as}}),C(()=>U(ee,`${Me.length??""} hand-crafted 8×8 sprites`)),o(t,y),Ne()}ze(["click"]);os("AvatarsView_257s9yq1wwr4f",Ue);
@@ -1,3 +0,0 @@
1
- import{a as Tl,b as _l,c as bl,d as lv,e as vv}from"/_mochi/client/chunk-p5a07kx1.js";import{n as cl}from"/_mochi/client/chunk-0q9g0kpg.js";import{r as ol,s as Pl,t as Bl,u as Fl,v as $l,z as fv}from"/_mochi/client/chunk-0mstgbtr.js";import{A as pl}from"/_mochi/client/chunk-3fwjzw1r.js";import{Q as o,R as Ul,T as rl,U as nl}from"/_mochi/client/chunk-t2kfvtb6.js";import{$a as al,Ba as tl,Ca as l,Da as Rl,Ga as ql,Ha as Q1,Ia as Hl,Ja as M,Ma as M1,Na as y,Oa as x,Pa as D,Ra as Al,Sa as i1,Va as wl,X as f,Xa as sl,Y as x1,Ya as p,Za as kl,aa as P1,ba as B1,cb as W1,eb as el,fb as dl,hb as d,ib as u,ja as L,jb as $,ma as J,mb as ul,oa as H,pb as Sv,qa as b1,ra as C,sa as _,ta as m,ua as H1,xa as z}from"/_mochi/client/chunk-fn03gxer.js";import"/_mochi/client/chunk-ds9yn9cq.js";var hv=new Set(["$$slots","$$events","$$legacy"]);function yl(Y,I){let K=d(I,hv),h=[["path",{d:"m12 19-7-7 7-7"}],["path",{d:"M19 12H5"}]];o(Y,u({name:"arrow-left"},()=>K,{get iconNode(){return h}}))}var yv=new Set(["$$slots","$$events","$$legacy"]);function o1(Y,I){let K=d(I,yv),h=[["path",{d:"M7 7h10v10"}],["path",{d:"M7 17 17 7"}]];o(Y,u({name:"arrow-up-right"},()=>K,{get iconNode(){return h}}))}var Iv=new Set(["$$slots","$$events","$$legacy"]);function Il(Y,I){let K=d(I,Iv),h=[["path",{d:"M20 6 9 17l-5-5"}]];o(Y,u({name:"check"},()=>K,{get iconNode(){return h}}))}var Mv=M("<span></span>");function J1(Y,I){let K=$(I,"variant",3,"text");var h=Mv();let A;z(()=>{p(h,1,`skel ${K()??""}`,"svelte-tl058d"),A=kl(h,"",A,{width:I.width})}),y(Y,h)}var iv=M('<div class="hrow svelte-1hnopyv"><span><!></span> <span class="hlabel svelte-1hnopyv"> </span> <span class="hvalue svelte-1hnopyv"> </span></div>'),xv=M('<div class="hrow svelte-1hnopyv"><span class="box idle svelte-1hnopyv"></span> <!> <!></div>'),Hv=M('<div class="hrow svelte-1hnopyv"><span class="box idle svelte-1hnopyv"></span> <span class="hlabel svelte-1hnopyv"> </span> <span class="hvalue svelte-1hnopyv">—</span></div>'),Wv=M('<div><div class="panel-bar">Health</div> <div class="health svelte-1hnopyv"><!></div> <div class="hfoot svelte-1hnopyv"> </div></div>');function Zl(Y,I){P1(I,!0);let K=$(I,"health",3,null),h=$(I,"lastFetchedAt",3,null),A=$(I,"active",3,!0),c=$(I,"injectionChecks",3,0),g=$(I,"mode",3,"ide"),r=L(()=>["Container running",g()==="terminal"?"Terminal reachable":"Code-server reachable"]),t=L(()=>{if(!K())return[];let Q=(E)=>({ok:E,value:E?"OK":"—"});return[{label:l(r)[0],...Q(K().containerRunning)},{label:l(r)[1],...Q(K().codeServerAccessible)},...K().injections.map((E)=>({label:E.label,...Q(E.ok)}))]});function R(){return K()?l(t).length:l(r).length+c()}let j1=J(b1(Date.now()));H1(()=>{let Q=setInterval(()=>H(j1,Date.now(),!0),1000);return()=>clearInterval(Q)});let p1=L(()=>{if(!A()&&!K())return"Container not running";if(!h())return"Waiting for first check…";return`Updated ${Math.max(0,Math.round((l(j1)-h())/1000))}s ago`});var z1=Wv();let w;var n=m(C(z1),2),v1=C(n);{var T1=(Q)=>{var E=M1(),q=_(E);i1(q,17,()=>l(t),(P)=>P.label,(P,B)=>{var S=iv(),i=C(S),G=C(i);{var C1=(S1)=>{Il(S1,{size:12,strokeWidth:3})},D1=(S1)=>{Ul(S1,{size:12,strokeWidth:3})};D(G,(S1)=>{if(l(B).ok)S1(C1);else S1(D1,-1)})}f(i);var K1=m(i,2),Z1=C(K1,!0);f(K1);var m1=m(K1,2),g1=C(m1,!0);f(m1),f(S),z(()=>{p(i,1,`box ${l(B).ok?"ok":"bad"}`,"svelte-1hnopyv"),x(Z1,l(B).label),x(g1,l(B).value)}),y(P,S)}),y(Q,E)},f1=(Q)=>{var E=M1(),q=_(E);i1(q,17,()=>Array(R()),Al,(P,B)=>{var S=xv(),i=m(C(S),2);J1(i,{width:"120px"});var G=m(i,2);J1(G,{variant:"pill"}),f(S),y(P,S)}),y(Q,E)},Y1=(Q)=>{var E=M1(),q=_(E);i1(q,16,()=>l(r),(P)=>P,(P,B)=>{var S=Hv(),i=m(C(S),2),G=C(i,!0);f(i),x1(2),f(S),z(()=>x(G,B)),y(P,S)}),y(Q,E)};D(v1,(Q)=>{if(K())Q(T1);else if(A())Q(f1,1);else Q(Y1,-1)})}f(n);var V1=m(n,2),c1=C(V1,!0);f(V1),f(z1),z(()=>{w=p(z1,1,"healthwrap panel svelte-1hnopyv",null,w,{dim:!A()&&!K()}),x(c1,l(p1))}),y(Y,z1),B1()}var jv=new Set(["$$slots","$$events","$$legacy"]);function Ml(Y,I){let K=d(I,jv),h=[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8"}],["path",{d:"M21 3v5h-5"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16"}],["path",{d:"M8 16H3v5"}]];o(Y,u({name:"refresh-cw"},()=>K,{get iconNode(){return h}}))}var zv=new Set(["$$slots","$$events","$$legacy"]);function il(Y,I){let K=d(I,zv),h=[["circle",{cx:"12",cy:"12",r:"10"}],["path",{d:"m9 12 2 2 4-4"}]];o(Y,u({name:"circle-check"},()=>K,{get iconNode(){return h}}))}var Dv=new Set(["$$slots","$$events","$$legacy"]);function xl(Y,I){let K=d(I,Dv),h=[["circle",{cx:"12",cy:"12",r:"10"}],["path",{d:"m15 9-6 6"}],["path",{d:"m9 9 6 6"}]];o(Y,u({name:"circle-x"},()=>K,{get iconNode(){return h}}))}var Kv=M('<span class="pulse svelte-rfwj7e"></span>'),Xv=M('<span class="model svelte-rfwj7e"> </span>'),Ev=M("<span> </span>"),Gv=M('<span class="peek svelte-rfwj7e"> </span>'),Jv=M('<li class="step svelte-rfwj7e"><span class="ico svelte-rfwj7e"><span class="pulse svelte-rfwj7e"></span></span> <span class="body svelte-rfwj7e"><span class="text svelte-rfwj7e"> </span></span></li>'),Qv=M('<li class="step svelte-rfwj7e"><span class="body svelte-rfwj7e"><span class="text svelte-rfwj7e">No steps recorded.</span></span></li>'),Yv=M('<span class="tool svelte-rfwj7e"> </span>'),Zv=M('<li><span><!></span> <span class="body svelte-rfwj7e"><!> <span class="text svelte-rfwj7e"> </span></span></li>'),Ol=M('<div class="err svelte-rfwj7e"> </div>'),Lv=M('<div class="prompt svelte-rfwj7e"><div class="ptitle svelte-rfwj7e">Initial prompt</div> <div class="ptext svelte-rfwj7e"> </div></div> <ol class="steps svelte-rfwj7e"><!> <!></ol> <!>',1),Fv=M('<div class="run svelte-rfwj7e"><button type="button" class="run-head svelte-rfwj7e"><span><!></span> <span class="when svelte-rfwj7e"> </span> <span><!> </span> <!> <!> <!> <span class="run-meta svelte-rfwj7e"> </span></button> <!></div>'),Tv=M('<section class="agentwrap panel svelte-rfwj7e"><div class="agent-bar panel-bar svelte-rfwj7e"><span class="svelte-rfwj7e"><!> Agent log</span> <span class="count svelte-rfwj7e"> </span></div> <!> <!></section>');function Ll(Y,I){P1(I,!0);let K=$(I,"bump",3,0),h=J(b1([])),A=J(b1({})),c=J(b1([])),g=null,r=J(!1),t=J(null),R=(S)=>l(c).includes(S);async function j1(){try{let S=l(c).length?`?run_ids=${encodeURIComponent(l(c).join(","))}`:"",i=await Bl(`/api/instances/${I.id}/agent-log${S}`,void 0,"Could not load the agent log");H(h,Array.isArray(i.runs)?i.runs:[],!0),H(A,{...l(A),...i.timelines??{}},!0);let G=i.runs[0]?.id??null;if(G&&G!==g)g=G,H(c,[G],!0);H(t,null)}catch(S){H(t,S.message,!0)}finally{H(r,!0)}}H1(()=>{if(K()<0)return;Rl(()=>void j1())});function p1(S){let i=!R(S);if(H(c,i?[...l(c),S]:l(c).filter((G)=>G!==S),!0),i&&!l(A)[S])j1()}let z1={tool:Pl,text:cl,retry:Ml,result:il},w=(S)=>S.status==="running"||S.status==="queued",n=(S)=>S.map((i,G)=>({entry:i,index:G})).reverse(),v1=(S)=>S.model??S.requested_model;function T1(S){if(S.model&&S.requested_model&&S.model!==S.requested_model)return`Requested as ${S.requested_model}`;return S.model?void 0:"Requested; Claude has not reported the model it is using yet"}let f1=(S)=>S.session_id??S.resume_session_id,Y1=(S)=>S.slice(0,8);function V1(S){let i=f1(S);if(!i)return"";return`${S.resume_session_id?"Continues an earlier run in this session":"New session, started by this run"}
2
- Session ${i}${S.session_id?"":" (requested; not started yet)"}`}function c1(S){return new Date(S.created_at).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",second:"2-digit"})}function Q(S){let i=[];if(S.num_turns!=null)i.push(`${S.num_turns} turns`);if(S.cost_usd!=null)i.push(`$${S.cost_usd.toFixed(4)}`);if(S.duration_ms!=null)i.push(`${(S.duration_ms/1000).toFixed(1)}s`);return i.join(" · ")}function E(S){if(S.status==="queued")return"Queued";if(w(S))return(S.last_activity??"Working…").replace(/\s+/g," ").trim();return(S.error??S.result??S.prompt).replace(/\s+/g," ").trim()}var q=M1(),P=_(q);{var B=(S)=>{var i=Tv(),G=C(i),C1=C(G),D1=C(C1);pl(D1,{size:14}),x1(),f(C1);var K1=m(C1,2),Z1=C(K1);f(K1),f(G);var m1=m(G,2);i1(m1,17,()=>l(h),(N1)=>N1.id,(N1,W)=>{let X1=L(()=>R(l(W).id));var t1=Fv(),E1=C(t1),k1=C(E1);let q1;var s1=C(k1);bl(s1,{size:14}),f(k1);var A1=m(k1,2),Wl=C(A1,!0);f(A1);var U1=m(A1,2);let $1;var _1=C(U1);{var jl=(X)=>{var Z=Kv();y(X,Z)},a1=L(()=>w(l(W)));D(_1,(X)=>{if(l(a1))X(jl)})}var zl=m(_1);f(U1);var O1=m(U1,2);{var e1=(X)=>{var Z=Xv(),F=C(Z,!0);f(Z),z((s,h1)=>{W1(Z,"title",s),x(F,h1)},[()=>T1(l(W)),()=>v1(l(W))]),y(X,Z)},Dl=L(()=>v1(l(W)));D(O1,(X)=>{if(l(Dl))X(e1)})}var r1=m(O1,2);{var n1=(X)=>{let Z=L(()=>f1(l(W)));var F=Ev();let s;var h1=C(F);f(F),z((G1,a)=>{s=p(F,1,"session svelte-rfwj7e",null,s,{resumed:l(W).resume_session_id}),W1(F,"title",G1),x(h1,`${l(W).resume_session_id?"⤷":"◆"}
3
- ${a??""}`)},[()=>V1(l(W)),()=>Y1(l(Z))]),y(X,F)},ll=L(()=>f1(l(W)));D(r1,(X)=>{if(l(ll))X(n1)})}var vl=m(r1,2);{var Kl=(X)=>{var Z=Gv(),F=C(Z,!0);f(Z),z((s)=>x(F,s),[()=>E(l(W))]),y(X,Z)};D(vl,(X)=>{if(!l(X1))X(Kl)})}var L1=m(vl,2),fl=C(L1,!0);f(L1),f(E1);var Sl=m(E1,2);{var Xl=(X)=>{var Z=Lv(),F=_(Z),s=m(C(F),2),h1=C(s,!0);f(s),f(F);var G1=m(F,2),a=C(G1);{var Cl=(T)=>{var V=Jv(),k=m(C(V),2),d1=C(k),v=C(d1,!0);f(d1),f(k),f(V),z(()=>x(v,l(W).status==="queued"?"Queued — waiting for the sandbox":"Working…")),y(T,V)},ml=L(()=>w(l(W))),El=(T)=>{var V=Qv();y(T,V)};D(a,(T)=>{if(l(ml))T(Cl);else if((l(A)[l(W).id]??[]).length===0)T(El,1)})}var Gl=m(a,2);i1(Gl,17,()=>n(l(A)[l(W).id]??[]),({entry:T,index:V})=>V,(T,V)=>{let k=()=>l(V).entry,d1=()=>l(V).index;var v=Zv();let N;var j=C(v);let b;var y1=C(j);{var l1=(e)=>{xl(e,{size:14})},U=(e)=>{let u1=L(()=>z1[k().kind]);var hl=M1(),Cv=_(hl);wl(Cv,()=>l(u1),(mv,Nv)=>{Nv(mv,{size:14})}),y(e,hl)};D(y1,(e)=>{if(k().kind==="result"&&k().isError)e(l1);else e(U,-1)})}f(j);var O=m(j,2),F1=C(O);{var Ql=(e)=>{var u1=Yv(),hl=C(u1,!0);f(u1),z(()=>x(hl,k().name)),y(e,u1)};D(F1,(e)=>{if(k().name)e(Ql)})}var Nl=m(F1,2),Yl=C(Nl,!0);f(Nl),f(O),f(v),z(()=>{N=p(v,1,"step svelte-rfwj7e",null,N,{sub:k().subagent}),b=p(j,1,"ico svelte-rfwj7e",null,b,{bad:k().kind==="result"&&k().isError}),x(Yl,k().text)}),y(T,v)}),f(G1);var R1=m(G1,2);{var Jl=(T)=>{var V=Ol(),k=C(V,!0);f(V),z(()=>x(k,l(W).error)),y(T,V)},w1=L(()=>l(W).error&&!w(l(W)));D(R1,(T)=>{if(l(w1))T(Jl)})}z(()=>x(h1,l(W).prompt)),y(X,Z)};D(Sl,(X)=>{if(l(X1))X(Xl)})}f(t1),z((X,Z,F)=>{W1(E1,"aria-expanded",l(X1)),q1=p(k1,1,"chev svelte-rfwj7e",null,q1,{down:l(X1)}),x(Wl,X),$1=p(U1,1,"status svelte-rfwj7e",null,$1,Z),x(zl,` ${l(W).status??""}`),x(fl,F)},[()=>c1(l(W)),()=>({bad:l(W).is_error,live:w(l(W))}),()=>Q(l(W))]),Q1("click",E1,()=>p1(l(W).id)),y(N1,t1)});var g1=m(m1,2);{var S1=(N1)=>{var W=Ol(),X1=C(W,!0);f(W),z(()=>x(X1,l(t))),y(N1,W)};D(g1,(N1)=>{if(l(t))N1(S1)})}f(i),z(()=>x(Z1,`${l(h).length??""} run${l(h).length===1?"":"s"}`)),y(S,i)};D(P,(S)=>{if(l(r)&&l(h).length>0)S(B)})}y(Y,q),B1()}Hl(["click"]);var Vv=M('<form method="POST" action="?/restart" class="svelte-15fxkvm"><button class="restart svelte-15fxkvm" type="submit"> </button></form> <a class="open svelte-15fxkvm" target="_blank" rel="noopener">Open in new tab <!></a>',1),kv=M('<p class="restart-err svelte-15fxkvm"> </p>'),gl=M('<code class="svelte-15fxkvm"> </code>'),Av=M('<code class="svelte-15fxkvm">local (project devcontainer.json)</code>'),Uv=M('<code class="muted svelte-15fxkvm">—</code>'),Ov=M('<button class="rebuild svelte-15fxkvm"> </button>'),Rv=M('<li class="svelte-15fxkvm"><span class="cp svelte-15fxkvm"> </span> <span class="arr svelte-15fxkvm">→</span> <a target="_blank" rel="noopener" class="svelte-15fxkvm"> <!></a> <button class="rm svelte-15fxkvm" title="Remove">×</button></li>'),wv=M('<ul class="port-list svelte-15fxkvm"></ul>'),Pv=M('<p class="empty svelte-15fxkvm">No ports forwarded yet.</p>'),Bv=M('<p class="port-err svelte-15fxkvm"> </p>'),bv=M('<p class="hint pending svelte-15fxkvm">Port changes apply when you <strong class="svelte-15fxkvm">Restart</strong> (recreates the container).</p>'),pv=M('<span class="dot svelte-15fxkvm"></span>'),cv=M('<div class="err svelte-15fxkvm"> </div>'),gv=M('<header class="topbar svelte-15fxkvm"><a class="back svelte-15fxkvm" href="/"><!> All instances</a> <div class="title svelte-15fxkvm"><span class="name svelte-15fxkvm"> </span> <!></div> <!></header> <!> <main class="stage svelte-15fxkvm"><div class="meta svelte-15fxkvm"><span class="k svelte-15fxkvm">Source</span> <!> <span class="k svelte-15fxkvm">Image</span> <!></div> <div class="healthslot svelte-15fxkvm"><!></div> <section class="ports panel svelte-15fxkvm"><div class="ports-bar panel-bar svelte-15fxkvm"><span class="svelte-15fxkvm">Forwarded ports</span> <!></div> <div class="ports-body svelte-15fxkvm"><!> <form class="add svelte-15fxkvm"><input type="number" min="1" max="65535" placeholder="container port (e.g. 3000)" spellcheck="false" class="svelte-15fxkvm"/> <button type="submit" class="svelte-15fxkvm">Add</button></form> <!> <!> <p class="hint svelte-15fxkvm">Your app must bind to <code class="svelte-15fxkvm">0.0.0.0</code> inside the container to be reachable.</p></div></section> <!> <div class="logwrap panel svelte-15fxkvm"><div class="log-bar panel-bar svelte-15fxkvm"><span class="svelte-15fxkvm">Boot log</span> <div class="log-actions svelte-15fxkvm"><button><!> </button> <button class="copy svelte-15fxkvm"> </button></div></div> <div class="logs svelte-15fxkvm"><pre class="svelte-15fxkvm"> <span class="caret svelte-15fxkvm"></span></pre></div> <!></div></main>',1);function Vl(Y,I){P1(I,!0);let K=$(I,"injectionChecks",3,0),h=J(null),A=J(null),c=J(null),g=J(""),r=J(0),t=J(null),R=J(!0);async function j1(){await tl(),l(t)?.scrollTo(0,l(t).scrollHeight)}H1(()=>{if(!l(R)||l(g).length===0)return;j1()});function p1(){if(H(R,!l(R)),l(R))j1()}H1(()=>nl()),H1(()=>lv(`/api/instances/${I.id}/logs`,(v)=>H(g,l(g)+v),()=>H(g,""))),H1(()=>vv((v)=>{if(v.type==="instances"){let N=v.data.find((j)=>j.id===I.id);if(N)H(h,N,!0)}else if(v.type==="health"&&v.data.id===I.id)H(A,v.data.health,!0),H(c,Date.now(),!0);else if(v.type==="run"&&v.data.instance_id===I.id)H(r,l(r)+1);else if(v.type==="theme")fv(v.data.value)}));let z1=L(()=>l(h)?ol(l(h)):"#"),w=J(""),n=J(null),v1=J(!1),T1=L(()=>l(h)?.forwarded_ports??[]),f1=L(()=>l(h)?.status==="creating");async function Y1(v){H(n,null);try{return await v(),!0}catch(N){return H(n,N.message,!0),!1}}async function V1(v){v.preventDefault();let N=Number.parseInt(l(w),10);if(!Number.isInteger(N)||N<1||N>65535){H(n,"Enter a port number between 1 and 65535");return}if(await Y1(()=>Fl(`/api/instances/${I.id}/ports`,{port:N})))H(w,""),H(v1,!0)}async function c1(v){if(await Y1(()=>$l(`/api/instances/${I.id}/ports/${v}`)))H(v1,!0)}async function Q(){if(await Y1(()=>Fl(`/api/instances/${I.id}/rebuild`)))H(v1,!1)}let E=J(null),q=J(!1),P={onPending:(v)=>H(q,v,!0),submit:()=>{return H(E,null),({result:v})=>{if(v.type==="failure")H(E,v.data?.error??"Restart failed",!0);else if(v.type==="error")H(E,"Network error. Try again.")}}},B=J(!1),S;async function i(){await navigator.clipboard.writeText(l(g)),H(B,!0),clearTimeout(S),S=setTimeout(()=>H(B,!1),2000)}var G=gv(),C1=_(G),D1=C(C1),K1=C(D1);yl(K1,{size:15}),x1(),f(D1);var Z1=m(D1,2),m1=C(Z1),g1=C(m1,!0);f(m1);var S1=m(m1,2);{var N1=(v)=>{_l(v,{get status(){return l(h).status}})},W=(v)=>{J1(v,{variant:"pill"})};D(S1,(v)=>{if(l(h))v(N1);else v(W,-1)})}f(Z1);var X1=m(Z1,2);{var t1=(v)=>{var N=Vv(),j=_(N),b=C(j),y1=C(b,!0);f(b),f(j),sl(j,()=>ul(P));var l1=m(j,2),U=m(C(l1));o1(U,{size:15}),f(l1),z(()=>{b.disabled=l(q)||l(f1),x(y1,l(q)||l(f1)?"Restarting…":"Restart container"),W1(l1,"href",l(z1))}),y(v,N)};D(X1,(v)=>{if(l(h)?.status==="running")v(t1)})}f(C1);var E1=m(C1,2);{var k1=(v)=>{var N=kv(),j=C(N,!0);f(N),z(()=>x(j,l(E))),y(v,N)};D(E1,(v)=>{if(l(E))v(k1)})}var q1=m(E1,2),s1=C(q1),A1=m(C(s1),2);{var Wl=(v)=>{var N=gl(),j=C(N,!0);f(N),z(()=>x(j,l(h).source_path)),y(v,N)},U1=(v)=>{J1(v,{variant:"wide"})};D(A1,(v)=>{if(l(h))v(Wl);else v(U1,-1)})}var $1=m(A1,4);{var _1=(v)=>{var N=M1(),j=_(N);{var b=(U)=>{var O=Av();y(U,O)},y1=(U)=>{var O=gl(),F1=C(O,!0);f(O),z(()=>x(F1,l(h).image_source)),y(U,O)},l1=(U)=>{var O=Uv();y(U,O)};D(j,(U)=>{if(l(h).image_source==="local")U(b);else if(l(h).image_source)U(y1,1);else U(l1,-1)})}y(v,N)},jl=(v)=>{J1(v,{variant:"wide"})};D($1,(v)=>{if(l(h))v(_1);else v(jl,-1)})}f(s1);var a1=m(s1,2),zl=C(a1);{let v=L(()=>!l(h)||l(h).status==="running"),N=L(()=>l(h)?.mode??"ide");Zl(zl,{get health(){return l(A)},get lastFetchedAt(){return l(c)},get injectionChecks(){return K()},get active(){return l(v)},get mode(){return l(N)}})}f(a1);var O1=m(a1,2),e1=C(O1),Dl=m(C(e1),2);{var r1=(v)=>{var N=Ov(),j=C(N,!0);f(N),z(()=>{N.disabled=l(f1),x(j,l(f1)?"Restarting…":"Restart to apply")}),Q1("click",N,Q),y(v,N)};D(Dl,(v)=>{if(l(v1))v(r1)})}f(e1);var n1=m(e1,2),ll=C(n1);{var vl=(v)=>{var N=wv();i1(N,21,()=>l(T1),(j)=>j.container_port,(j,b)=>{var y1=Rv(),l1=C(y1),U=C(l1);f(l1);var O=m(l1,4),F1=C(O),Ql=m(F1);o1(Ql,{size:12}),f(O);var Nl=m(O,2);f(y1),z((Yl,e)=>{x(U,`:${l(b).container_port??""}`),W1(O,"href",Yl),x(F1,`${e??""} `)},[()=>Tl(l(b).host_port),()=>Tl(l(b).host_port).replace("http://","")]),Q1("click",Nl,()=>c1(l(b).container_port)),y(j,y1)}),f(N),y(v,N)},Kl=(v)=>{var N=Pv();y(v,N)};D(ll,(v)=>{if(l(T1).length)v(vl);else v(Kl,-1)})}var L1=m(ll,2),fl=C(L1);al(fl),x1(2),f(L1);var Sl=m(L1,2);{var Xl=(v)=>{var N=Bv(),j=C(N,!0);f(N),z(()=>x(j,l(n))),y(v,N)};D(Sl,(v)=>{if(l(n))v(Xl)})}var X=m(Sl,2);{var Z=(v)=>{var N=bv();y(v,N)};D(X,(v)=>{if(l(v1))v(Z)})}x1(2),f(n1),f(O1);var F=m(O1,2);Ll(F,{get id(){return I.id},get bump(){return l(r)}});var s=m(F,2),h1=C(s),G1=m(C(h1),2),a=C(G1);let Cl;var ml=C(a);{var El=(v)=>{var N=pv();y(v,N)};D(ml,(v)=>{if(l(R))v(El)})}var Gl=m(ml);f(a);var R1=m(a,2),Jl=C(R1,!0);f(R1),f(G1),f(h1);var w1=m(h1,2),T=C(w1),V=C(T,!0);x1(),f(T),f(w1),dl(w1,(v)=>H(t,v),()=>l(t));var k=m(w1,2);{var d1=(v)=>{var N=cv(),j=C(N,!0);f(N),z(()=>x(j,l(h).error)),y(v,N)};D(k,(v)=>{if(l(h)?.status==="error"&&l(h).error)v(d1)})}f(s),f(q1),z(()=>{x(g1,l(h)?.name??"Instance"),Cl=p(a,1,"copy svelte-15fxkvm",null,Cl,{active:l(R)}),W1(a,"aria-pressed",l(R)),W1(a,"title",l(R)?"Following — click to pause":"Paused — click to follow new output"),x(Gl,` ${l(R)?"Following":"Follow log"}`),R1.disabled=!l(g),x(Jl,l(B)?"Copied!":"Copy logs"),x(V,l(g)||"Waiting for output…")}),Q1("click",D1,function(...v){rl?.apply(this,v)}),ql("submit",L1,V1),el(fl,()=>l(w),(v)=>H(w,v)),Q1("click",a,p1),Q1("click",R1,i),y(Y,G),B1()}Hl(["click"]);Sv("InstanceView_2ma45l9bybfhl",Vl);