@bojackduy/opencode-loopd 1.10.4 → 1.10.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/tui.js CHANGED
@@ -6007,6 +6007,21 @@ function commandHelp() {
6007
6007
  ].join(`
6008
6008
  `);
6009
6009
  }
6010
+ function commandTabHelp() {
6011
+ return [
6012
+ "Nav: j/k select | o fullscreen | q close",
6013
+ "Commands tab (selected command only):",
6014
+ " Ctrl+C / :interrupt Send SIGINT",
6015
+ " :terminate Graceful stop (SIGTERM\u2192SIGKILL)",
6016
+ " X / :kill Force kill now (SIGKILL)",
6017
+ " R / :restart Restart; old log retained",
6018
+ " x / :remove Remove finished command + log",
6019
+ " :new <cmd> [args] Start (quoted args supported)",
6020
+ " bare text + Enter Write stdin line",
6021
+ " ? toggle help | : insert | Ctrl+N normal"
6022
+ ].join(`
6023
+ `);
6024
+ }
6010
6025
 
6011
6026
  // src/tui/command-controller.ts
6012
6027
  function emptyCommandPanelState() {
@@ -6786,6 +6801,18 @@ function LoopDashboard(props) {
6786
6801
  return;
6787
6802
  }
6788
6803
  const key = raw || seq || name;
6804
+ if (tab() === "commands" && Boolean(evt.ctrl) && name === "c") {
6805
+ prevent(evt);
6806
+ const sel = selectedCommand();
6807
+ if (!sel) {
6808
+ setStatusText("No command selected.");
6809
+ return;
6810
+ }
6811
+ executeCommandRaw("cmd_interrupt", {
6812
+ commandID: sel.id
6813
+ }, sel.id);
6814
+ return;
6815
+ }
6789
6816
  if (key === "c") {
6790
6817
  prevent(evt);
6791
6818
  setShowCompleted((v) => !v);
@@ -6839,7 +6866,22 @@ function LoopDashboard(props) {
6839
6866
  applyMove("last");
6840
6867
  return;
6841
6868
  }
6842
- const needsGoalsTab = ["p", "r", "R", "x", "A", "N"].includes(key);
6869
+ if (tab() === "commands" && key === "X") {
6870
+ prevent(evt);
6871
+ killSelectedCommand();
6872
+ return;
6873
+ }
6874
+ if (tab() === "commands" && key === "R") {
6875
+ prevent(evt);
6876
+ restartSelectedCommand();
6877
+ return;
6878
+ }
6879
+ if (tab() === "commands" && key === "x") {
6880
+ prevent(evt);
6881
+ removeFinishedSelected();
6882
+ return;
6883
+ }
6884
+ const needsGoalsTab = ["p", "r", "A", "N"].includes(key);
6843
6885
  if (needsGoalsTab && tab() !== "goals") {
6844
6886
  prevent(evt);
6845
6887
  setStatusText("Goal controls need the Goals tab (Tab to switch).");
@@ -6945,6 +6987,40 @@ function LoopDashboard(props) {
6945
6987
  function selectedCommand() {
6946
6988
  return ownerCommands()[cmdSelected()] ?? null;
6947
6989
  }
6990
+ async function killSelectedCommand() {
6991
+ const sel = selectedCommand();
6992
+ if (!sel) {
6993
+ setStatusText("No command selected.");
6994
+ return;
6995
+ }
6996
+ await executeCommandRaw("cmd_kill", {
6997
+ commandID: sel.id
6998
+ }, sel.id);
6999
+ }
7000
+ async function restartSelectedCommand() {
7001
+ const sel = selectedCommand();
7002
+ if (!sel) {
7003
+ setStatusText("No command selected.");
7004
+ return;
7005
+ }
7006
+ await executeCommandRaw("cmd_restart", {
7007
+ commandID: sel.id
7008
+ }, sel.id);
7009
+ }
7010
+ function removeFinishedSelected() {
7011
+ const sel = selectedCommand();
7012
+ if (!sel) {
7013
+ setStatusText("No command selected.");
7014
+ return;
7015
+ }
7016
+ if (sel.status === "running") {
7017
+ setStatusText(`"${sel.title}" is still running \u2014 X force kill \xB7 :terminate graceful \xB7 q detach (keeps running).`);
7018
+ return;
7019
+ }
7020
+ executeCommandRaw("cmd_remove", {
7021
+ commandID: sel.id
7022
+ }, sel.id);
7023
+ }
6948
7024
  async function executeCommandTabCommand(verb, positional, raw) {
6949
7025
  debugLog("commands-tab command", verb);
6950
7026
  switch (verb) {
@@ -6983,6 +7059,12 @@ function LoopDashboard(props) {
6983
7059
  commandID: selectedCommand().id
6984
7060
  }, selectedCommand().id);
6985
7061
  return;
7062
+ case "kill":
7063
+ await killSelectedCommand();
7064
+ return;
7065
+ case "restart":
7066
+ await restartSelectedCommand();
7067
+ return;
6986
7068
  case "remove":
6987
7069
  if (!selectedCommand()) {
6988
7070
  setStatusText("No command selected.");
@@ -7288,7 +7370,7 @@ function LoopDashboard(props) {
7288
7370
  } catch {}
7289
7371
  });
7290
7372
  return (() => {
7291
- var _el$ = _$createElement("box"), _el$2 = _$createElement("box"), _el$3 = _$createElement("box"), _el$4 = _$createElement("text"), _el$5 = _$createElement("span"), _el$7 = _$createElement("span"), _el$9 = _$createElement("span"), _el$0 = _$createTextNode(` `), _el$1 = _$createTextNode(` `), _el$10 = _$createElement("span"), _el$12 = _$createElement("span"), _el$13 = _$createElement("span"), _el$15 = _$createElement("span"), _el$17 = _$createElement("span"), _el$18 = _$createTextNode(` `), _el$19 = _$createTextNode(` acting now`), _el$20 = _$createElement("span"), _el$22 = _$createElement("span"), _el$23 = _$createElement("span"), _el$25 = _$createElement("span"), _el$27 = _$createElement("span"), _el$29 = _$createElement("span"), _el$31 = _$createElement("span"), _el$33 = _$createElement("span"), _el$35 = _$createElement("box"), _el$36 = _$createElement("text"), _el$37 = _$createElement("span"), _el$39 = _$createElement("box"), _el$52 = _$createElement("box"), _el$53 = _$createElement("text"), _el$54 = _$createElement("span"), _el$55 = _$createElement("input");
7373
+ var _el$ = _$createElement("box"), _el$2 = _$createElement("box"), _el$3 = _$createElement("box"), _el$4 = _$createElement("text"), _el$5 = _$createElement("span"), _el$7 = _$createElement("span"), _el$9 = _$createElement("span"), _el$0 = _$createTextNode(` `), _el$1 = _$createTextNode(` `), _el$10 = _$createElement("span"), _el$12 = _$createElement("span"), _el$13 = _$createElement("span"), _el$15 = _$createElement("span"), _el$17 = _$createElement("span"), _el$18 = _$createTextNode(` `), _el$19 = _$createTextNode(` acting now`), _el$20 = _$createElement("span"), _el$22 = _$createElement("span"), _el$23 = _$createElement("span"), _el$25 = _$createElement("span"), _el$27 = _$createElement("span"), _el$29 = _$createElement("span"), _el$31 = _$createElement("span"), _el$33 = _$createElement("span"), _el$35 = _$createElement("box"), _el$36 = _$createElement("text"), _el$37 = _$createElement("span"), _el$39 = _$createElement("box"), _el$51 = _$createElement("box"), _el$52 = _$createElement("text"), _el$53 = _$createElement("span"), _el$54 = _$createElement("input");
7292
7374
  _$insertNode(_el$, _el$2);
7293
7375
  _$setProp(_el$, "flexDirection", "column");
7294
7376
  _$setProp(_el$, "width", "100%");
@@ -7296,7 +7378,7 @@ function LoopDashboard(props) {
7296
7378
  _$setProp(_el$, "padding", 1);
7297
7379
  _$insertNode(_el$2, _el$3);
7298
7380
  _$insertNode(_el$2, _el$39);
7299
- _$insertNode(_el$2, _el$52);
7381
+ _$insertNode(_el$2, _el$51);
7300
7382
  _$setProp(_el$2, "flexDirection", "column");
7301
7383
  _$setProp(_el$2, "width", "90%");
7302
7384
  _$setProp(_el$2, "border", true);
@@ -7387,14 +7469,14 @@ function LoopDashboard(props) {
7387
7469
  _$setProp(_el$40, "maxHeight", 14);
7388
7470
  _$setProp(_el$40, "overflow", "hidden");
7389
7471
  _$insertNode(_el$41, _el$42);
7390
- _$insertNode(_el$42, _$createTextNode(`\u2501\u2501\u2501 Keys: ? toggle help c toggle done : insert Ctrl+N normal o open A abort worker N nudge q close \u2501\u2501\u2501`));
7391
7472
  _$setProp(_el$42, "style", {
7392
7473
  fg: "yellow",
7393
7474
  bold: true
7394
7475
  });
7476
+ _$insert(_el$42, () => tab() === "commands" ? "\u2501\u2501\u2501 Commands: ? help : insert X kill R restart x remove-done o fullscreen q close \u2501\u2501\u2501" : "\u2501\u2501\u2501 Keys: ? toggle help c toggle done : insert Ctrl+N normal o open A abort worker N nudge q close \u2501\u2501\u2501");
7395
7477
  _$insert(_el$41, _$createComponent(For, {
7396
7478
  get each() {
7397
- return commandHelp().split(`
7479
+ return (tab() === "commands" ? commandTabHelp() : commandHelp()).split(`
7398
7480
  `);
7399
7481
  },
7400
7482
  children: (line) => {
@@ -7404,20 +7486,20 @@ function LoopDashboard(props) {
7404
7486
  const segments = rest.split(" | ");
7405
7487
  return [`
7406
7488
  `, (() => {
7407
- var _el$56 = _$createElement("span");
7408
- _$insert(_el$56, label);
7409
- _$effect((_$p) => _$setProp(_el$56, "style", {
7489
+ var _el$55 = _$createElement("span");
7490
+ _$insert(_el$55, label);
7491
+ _$effect((_$p) => _$setProp(_el$55, "style", {
7410
7492
  fg: theme().primary,
7411
7493
  bold: true
7412
7494
  }, _$p));
7413
- return _el$56;
7495
+ return _el$55;
7414
7496
  })(), (() => {
7415
- var _el$57 = _$createElement("span");
7416
- _$insertNode(_el$57, _$createTextNode(` `));
7417
- _$effect((_$p) => _$setProp(_el$57, "style", {
7497
+ var _el$56 = _$createElement("span");
7498
+ _$insertNode(_el$56, _$createTextNode(` `));
7499
+ _$effect((_$p) => _$setProp(_el$56, "style", {
7418
7500
  fg: theme().textMuted
7419
7501
  }, _$p));
7420
- return _el$57;
7502
+ return _el$56;
7421
7503
  })(), _$createComponent(For, {
7422
7504
  each: segments,
7423
7505
  children: (seg, idx) => {
@@ -7425,62 +7507,62 @@ function LoopDashboard(props) {
7425
7507
  if (hasArrow) {
7426
7508
  const [k, d] = seg.split("\u2192").map((s) => s.trim());
7427
7509
  return [_$memo(() => _$memo(() => idx() > 0)() && (() => {
7428
- var _el$63 = _$createElement("span");
7429
- _$insertNode(_el$63, _$createTextNode(` | `));
7430
- _$effect((_$p) => _$setProp(_el$63, "style", {
7510
+ var _el$62 = _$createElement("span");
7511
+ _$insertNode(_el$62, _$createTextNode(` | `));
7512
+ _$effect((_$p) => _$setProp(_el$62, "style", {
7431
7513
  fg: theme().textMuted
7432
7514
  }, _$p));
7433
- return _el$63;
7515
+ return _el$62;
7434
7516
  })()), (() => {
7435
- var _el$59 = _$createElement("span");
7436
- _$insert(_el$59, k);
7437
- _$effect((_$p) => _$setProp(_el$59, "style", {
7517
+ var _el$58 = _$createElement("span");
7518
+ _$insert(_el$58, k);
7519
+ _$effect((_$p) => _$setProp(_el$58, "style", {
7438
7520
  fg: theme().warning,
7439
7521
  bold: true
7440
7522
  }, _$p));
7441
- return _el$59;
7523
+ return _el$58;
7442
7524
  })(), (() => {
7443
- var _el$60 = _$createElement("span");
7444
- _$insertNode(_el$60, _$createTextNode(` \u2192 `));
7445
- _$effect((_$p) => _$setProp(_el$60, "style", {
7525
+ var _el$59 = _$createElement("span");
7526
+ _$insertNode(_el$59, _$createTextNode(` \u2192 `));
7527
+ _$effect((_$p) => _$setProp(_el$59, "style", {
7446
7528
  fg: theme().textMuted
7447
7529
  }, _$p));
7448
- return _el$60;
7530
+ return _el$59;
7449
7531
  })(), (() => {
7450
- var _el$62 = _$createElement("span");
7451
- _$insert(_el$62, d);
7452
- _$effect((_$p) => _$setProp(_el$62, "style", {
7532
+ var _el$61 = _$createElement("span");
7533
+ _$insert(_el$61, d);
7534
+ _$effect((_$p) => _$setProp(_el$61, "style", {
7453
7535
  fg: theme().text
7454
7536
  }, _$p));
7455
- return _el$62;
7537
+ return _el$61;
7456
7538
  })()];
7457
7539
  }
7458
7540
  const sp = seg.indexOf(" ");
7459
7541
  const k = sp > 0 ? seg.slice(0, sp) : seg;
7460
7542
  const d = sp > 0 ? seg.slice(sp + 1) : "";
7461
7543
  return [_$memo(() => _$memo(() => idx() > 0)() && (() => {
7462
- var _el$66 = _$createElement("span");
7463
- _$insertNode(_el$66, _$createTextNode(` | `));
7464
- _$effect((_$p) => _$setProp(_el$66, "style", {
7544
+ var _el$65 = _$createElement("span");
7545
+ _$insertNode(_el$65, _$createTextNode(` | `));
7546
+ _$effect((_$p) => _$setProp(_el$65, "style", {
7465
7547
  fg: theme().textMuted
7466
7548
  }, _$p));
7467
- return _el$66;
7549
+ return _el$65;
7468
7550
  })()), (() => {
7469
- var _el$65 = _$createElement("span");
7470
- _$insert(_el$65, k);
7471
- _$effect((_$p) => _$setProp(_el$65, "style", {
7551
+ var _el$64 = _$createElement("span");
7552
+ _$insert(_el$64, k);
7553
+ _$effect((_$p) => _$setProp(_el$64, "style", {
7472
7554
  fg: theme().warning,
7473
7555
  bold: true
7474
7556
  }, _$p));
7475
- return _el$65;
7557
+ return _el$64;
7476
7558
  })(), d && (() => {
7477
- var _el$68 = _$createElement("span"), _el$69 = _$createTextNode(` `);
7478
- _$insertNode(_el$68, _el$69);
7479
- _$insert(_el$68, d, null);
7480
- _$effect((_$p) => _$setProp(_el$68, "style", {
7559
+ var _el$67 = _$createElement("span"), _el$68 = _$createTextNode(` `);
7560
+ _$insertNode(_el$67, _el$68);
7561
+ _$insert(_el$67, d, null);
7562
+ _$effect((_$p) => _$setProp(_el$67, "style", {
7481
7563
  fg: theme().text
7482
7564
  }, _$p));
7483
- return _el$68;
7565
+ return _el$67;
7484
7566
  })()];
7485
7567
  }
7486
7568
  })];
@@ -7492,46 +7574,46 @@ function LoopDashboard(props) {
7492
7574
  const desc = m?.[3] ?? line.split(/\s{2,}/)[1] ?? "";
7493
7575
  return [`
7494
7576
  `, (() => {
7495
- var _el$70 = _$createElement("span");
7496
- _$insert(_el$70, indent);
7497
- _$effect((_$p) => _$setProp(_el$70, "style", {
7577
+ var _el$69 = _$createElement("span");
7578
+ _$insert(_el$69, indent);
7579
+ _$effect((_$p) => _$setProp(_el$69, "style", {
7498
7580
  fg: theme().textMuted
7499
7581
  }, _$p));
7500
- return _el$70;
7582
+ return _el$69;
7501
7583
  })(), (() => {
7502
- var _el$71 = _$createElement("span");
7503
- _$insert(_el$71, key);
7504
- _$effect((_$p) => _$setProp(_el$71, "style", {
7584
+ var _el$70 = _$createElement("span");
7585
+ _$insert(_el$70, key);
7586
+ _$effect((_$p) => _$setProp(_el$70, "style", {
7505
7587
  fg: theme().warning,
7506
7588
  bold: true
7507
7589
  }, _$p));
7508
- return _el$71;
7590
+ return _el$70;
7509
7591
  })(), desc && [(() => {
7510
- var _el$72 = _$createElement("span");
7511
- _$insertNode(_el$72, _$createTextNode(` `));
7512
- _$effect((_$p) => _$setProp(_el$72, "style", {
7592
+ var _el$71 = _$createElement("span");
7593
+ _$insertNode(_el$71, _$createTextNode(` `));
7594
+ _$effect((_$p) => _$setProp(_el$71, "style", {
7513
7595
  fg: theme().textMuted
7514
7596
  }, _$p));
7515
- return _el$72;
7597
+ return _el$71;
7516
7598
  })(), (() => {
7517
- var _el$74 = _$createElement("span");
7518
- _$insert(_el$74, desc);
7519
- _$effect((_$p) => _$setProp(_el$74, "style", {
7599
+ var _el$73 = _$createElement("span");
7600
+ _$insert(_el$73, desc);
7601
+ _$effect((_$p) => _$setProp(_el$73, "style", {
7520
7602
  fg: theme().textMuted
7521
7603
  }, _$p));
7522
- return _el$74;
7604
+ return _el$73;
7523
7605
  })()]];
7524
7606
  }
7525
7607
  const isHeader = line.startsWith("Commands");
7526
7608
  return [`
7527
7609
  `, (() => {
7528
- var _el$75 = _$createElement("span");
7529
- _$insert(_el$75, line);
7530
- _$effect((_$p) => _$setProp(_el$75, "style", {
7610
+ var _el$74 = _$createElement("span");
7611
+ _$insert(_el$74, line);
7612
+ _$effect((_$p) => _$setProp(_el$74, "style", {
7531
7613
  fg: isHeader ? theme().primary : theme().textMuted,
7532
7614
  bold: isHeader
7533
7615
  }, _$p));
7534
- return _el$75;
7616
+ return _el$74;
7535
7617
  })()];
7536
7618
  }
7537
7619
  }), null);
@@ -7550,32 +7632,32 @@ function LoopDashboard(props) {
7550
7632
  },
7551
7633
  get fallback() {
7552
7634
  return (() => {
7553
- var _el$76 = _$createElement("box"), _el$77 = _$createElement("text"), _el$78 = _$createElement("span"), _el$80 = _$createElement("span"), _el$82 = _$createElement("span"), _el$84 = _$createElement("text"), _el$85 = _$createElement("span"), _el$87 = _$createElement("span"), _el$89 = _$createElement("span"), _el$91 = _$createElement("span"), _el$93 = _$createElement("span"), _el$95 = _$createElement("span"), _el$97 = _$createElement("span");
7635
+ var _el$75 = _$createElement("box"), _el$76 = _$createElement("text"), _el$77 = _$createElement("span"), _el$79 = _$createElement("span"), _el$81 = _$createElement("span"), _el$83 = _$createElement("text"), _el$84 = _$createElement("span"), _el$86 = _$createElement("span"), _el$88 = _$createElement("span"), _el$90 = _$createElement("span"), _el$92 = _$createElement("span"), _el$94 = _$createElement("span"), _el$96 = _$createElement("span");
7636
+ _$insertNode(_el$75, _el$76);
7637
+ _$insertNode(_el$75, _el$83);
7638
+ _$setProp(_el$75, "flexDirection", "column");
7639
+ _$setProp(_el$75, "gap", 1);
7640
+ _$setProp(_el$75, "padding", 1);
7554
7641
  _$insertNode(_el$76, _el$77);
7555
- _$insertNode(_el$76, _el$84);
7556
- _$setProp(_el$76, "flexDirection", "column");
7557
- _$setProp(_el$76, "gap", 1);
7558
- _$setProp(_el$76, "padding", 1);
7559
- _$insertNode(_el$77, _el$78);
7560
- _$insertNode(_el$77, _el$80);
7561
- _$insertNode(_el$77, _el$82);
7562
- _$insertNode(_el$78, _$createTextNode(`No active goals.`));
7563
- _$insertNode(_el$80, _$createTextNode(` /goal`));
7564
- _$insertNode(_el$82, _$createTextNode(` in parent chat to create one.`));
7565
- _$insertNode(_el$84, _el$85);
7566
- _$insertNode(_el$84, _el$87);
7567
- _$insertNode(_el$84, _el$89);
7568
- _$insertNode(_el$84, _el$91);
7569
- _$insertNode(_el$84, _el$93);
7570
- _$insertNode(_el$84, _el$95);
7571
- _$insertNode(_el$84, _el$97);
7572
- _$insertNode(_el$85, _$createTextNode(`Tip: `));
7573
- _$insertNode(_el$87, _$createTextNode(`:send`));
7574
- _$insertNode(_el$89, _$createTextNode(` to steer the worker \xB7 `));
7575
- _$insertNode(_el$91, _$createTextNode(`o`));
7576
- _$insertNode(_el$93, _$createTextNode(` to open child \xB7 `));
7577
- _$insertNode(_el$95, _$createTextNode(`:force`));
7578
- _$insertNode(_el$97, _$createTextNode(` to complete manually.`));
7642
+ _$insertNode(_el$76, _el$79);
7643
+ _$insertNode(_el$76, _el$81);
7644
+ _$insertNode(_el$77, _$createTextNode(`No active goals.`));
7645
+ _$insertNode(_el$79, _$createTextNode(` /goal`));
7646
+ _$insertNode(_el$81, _$createTextNode(` in parent chat to create one.`));
7647
+ _$insertNode(_el$83, _el$84);
7648
+ _$insertNode(_el$83, _el$86);
7649
+ _$insertNode(_el$83, _el$88);
7650
+ _$insertNode(_el$83, _el$90);
7651
+ _$insertNode(_el$83, _el$92);
7652
+ _$insertNode(_el$83, _el$94);
7653
+ _$insertNode(_el$83, _el$96);
7654
+ _$insertNode(_el$84, _$createTextNode(`Tip: `));
7655
+ _$insertNode(_el$86, _$createTextNode(`:send`));
7656
+ _$insertNode(_el$88, _$createTextNode(` to steer the worker \xB7 `));
7657
+ _$insertNode(_el$90, _$createTextNode(`o`));
7658
+ _$insertNode(_el$92, _$createTextNode(` to open child \xB7 `));
7659
+ _$insertNode(_el$94, _$createTextNode(`:force`));
7660
+ _$insertNode(_el$96, _$createTextNode(` to complete manually.`));
7579
7661
  _$effect((_p$) => {
7580
7662
  var _v$26 = {
7581
7663
  fg: theme().textMuted
@@ -7598,16 +7680,16 @@ function LoopDashboard(props) {
7598
7680
  }, _v$35 = {
7599
7681
  fg: theme().textMuted
7600
7682
  };
7601
- _v$26 !== _p$.e && (_p$.e = _$setProp(_el$78, "style", _v$26, _p$.e));
7602
- _v$27 !== _p$.t && (_p$.t = _$setProp(_el$80, "style", _v$27, _p$.t));
7603
- _v$28 !== _p$.a && (_p$.a = _$setProp(_el$82, "style", _v$28, _p$.a));
7604
- _v$29 !== _p$.o && (_p$.o = _$setProp(_el$85, "style", _v$29, _p$.o));
7605
- _v$30 !== _p$.i && (_p$.i = _$setProp(_el$87, "style", _v$30, _p$.i));
7606
- _v$31 !== _p$.n && (_p$.n = _$setProp(_el$89, "style", _v$31, _p$.n));
7607
- _v$32 !== _p$.s && (_p$.s = _$setProp(_el$91, "style", _v$32, _p$.s));
7608
- _v$33 !== _p$.h && (_p$.h = _$setProp(_el$93, "style", _v$33, _p$.h));
7609
- _v$34 !== _p$.r && (_p$.r = _$setProp(_el$95, "style", _v$34, _p$.r));
7610
- _v$35 !== _p$.d && (_p$.d = _$setProp(_el$97, "style", _v$35, _p$.d));
7683
+ _v$26 !== _p$.e && (_p$.e = _$setProp(_el$77, "style", _v$26, _p$.e));
7684
+ _v$27 !== _p$.t && (_p$.t = _$setProp(_el$79, "style", _v$27, _p$.t));
7685
+ _v$28 !== _p$.a && (_p$.a = _$setProp(_el$81, "style", _v$28, _p$.a));
7686
+ _v$29 !== _p$.o && (_p$.o = _$setProp(_el$84, "style", _v$29, _p$.o));
7687
+ _v$30 !== _p$.i && (_p$.i = _$setProp(_el$86, "style", _v$30, _p$.i));
7688
+ _v$31 !== _p$.n && (_p$.n = _$setProp(_el$88, "style", _v$31, _p$.n));
7689
+ _v$32 !== _p$.s && (_p$.s = _$setProp(_el$90, "style", _v$32, _p$.s));
7690
+ _v$33 !== _p$.h && (_p$.h = _$setProp(_el$92, "style", _v$33, _p$.h));
7691
+ _v$34 !== _p$.r && (_p$.r = _$setProp(_el$94, "style", _v$34, _p$.r));
7692
+ _v$35 !== _p$.d && (_p$.d = _$setProp(_el$96, "style", _v$35, _p$.d));
7611
7693
  return _p$;
7612
7694
  }, {
7613
7695
  e: undefined,
@@ -7621,15 +7703,15 @@ function LoopDashboard(props) {
7621
7703
  r: undefined,
7622
7704
  d: undefined
7623
7705
  });
7624
- return _el$76;
7706
+ return _el$75;
7625
7707
  })();
7626
7708
  },
7627
7709
  get children() {
7628
- var _el$44 = _$createElement("scrollbox");
7710
+ var _el$43 = _$createElement("scrollbox");
7629
7711
  _$use((el) => {
7630
7712
  listScrollRef = el;
7631
- }, _el$44);
7632
- _$insert(_el$44, _$createComponent(For, {
7713
+ }, _el$43);
7714
+ _$insert(_el$43, _$createComponent(For, {
7633
7715
  get each() {
7634
7716
  return activeGoals();
7635
7717
  },
@@ -7648,152 +7730,152 @@ function LoopDashboard(props) {
7648
7730
  return phaseColor(runtime().phase || "idle", theme());
7649
7731
  };
7650
7732
  return (() => {
7651
- var _el$99 = _$createElement("box"), _el$100 = _$createElement("text"), _el$101 = _$createElement("span"), _el$102 = _$createElement("span"), _el$104 = _$createElement("span"), _el$106 = _$createElement("span");
7733
+ var _el$98 = _$createElement("box"), _el$99 = _$createElement("text"), _el$100 = _$createElement("span"), _el$101 = _$createElement("span"), _el$103 = _$createElement("span"), _el$105 = _$createElement("span");
7734
+ _$insertNode(_el$98, _el$99);
7735
+ _$setProp(_el$98, "flexDirection", "row");
7736
+ _$setProp(_el$98, "paddingLeft", 1);
7737
+ _$setProp(_el$98, "paddingRight", 1);
7652
7738
  _$insertNode(_el$99, _el$100);
7653
- _$setProp(_el$99, "flexDirection", "row");
7654
- _$setProp(_el$99, "paddingLeft", 1);
7655
- _$setProp(_el$99, "paddingRight", 1);
7656
- _$insertNode(_el$100, _el$101);
7657
- _$insertNode(_el$100, _el$102);
7658
- _$insertNode(_el$100, _el$104);
7659
- _$insertNode(_el$100, _el$106);
7660
- _$setProp(_el$100, "wrapMode", "none");
7661
- _$setProp(_el$100, "truncate", true);
7662
- _$insert(_el$101, (() => {
7739
+ _$insertNode(_el$99, _el$101);
7740
+ _$insertNode(_el$99, _el$103);
7741
+ _$insertNode(_el$99, _el$105);
7742
+ _$setProp(_el$99, "wrapMode", "none");
7743
+ _$setProp(_el$99, "truncate", true);
7744
+ _$insert(_el$100, (() => {
7663
7745
  var _c$2 = _$memo(() => !!isActive());
7664
7746
  return () => _c$2() ? `\u25B6 ${statusIcon(goal.status)} ${goal.name}` : ` ${statusIcon(goal.status)} ${goal.name}`;
7665
7747
  })());
7666
- _$insertNode(_el$102, _$createTextNode(` \u2502 `));
7667
- _$insertNode(_el$104, _$createTextNode(`Goal `));
7668
- _$insert(_el$106, () => goalStatusLabel(goal.status).short.toUpperCase());
7669
- _$insert(_el$100, (() => {
7748
+ _$insertNode(_el$101, _$createTextNode(` \u2502 `));
7749
+ _$insertNode(_el$103, _$createTextNode(`Goal `));
7750
+ _$insert(_el$105, () => goalStatusLabel(goal.status).short.toUpperCase());
7751
+ _$insert(_el$99, (() => {
7670
7752
  var _c$3 = _$memo(() => !!runtime());
7671
7753
  return () => _c$3() && [(() => {
7672
- var _el$107 = _$createElement("span");
7673
- _$insertNode(_el$107, _$createTextNode(` \u2502 Worker `));
7674
- _$effect((_$p) => _$setProp(_el$107, "style", {
7754
+ var _el$106 = _$createElement("span");
7755
+ _$insertNode(_el$106, _$createTextNode(` \u2502 Worker `));
7756
+ _$effect((_$p) => _$setProp(_el$106, "style", {
7675
7757
  fg: theme().textMuted
7676
7758
  }, _$p));
7677
- return _el$107;
7759
+ return _el$106;
7678
7760
  })(), (() => {
7679
- var _el$109 = _$createElement("span"), _el$110 = _$createTextNode(` `);
7680
- _$insertNode(_el$109, _el$110);
7681
- _$insert(_el$109, (() => {
7761
+ var _el$108 = _$createElement("span"), _el$109 = _$createTextNode(` `);
7762
+ _$insertNode(_el$108, _el$109);
7763
+ _$insert(_el$108, (() => {
7682
7764
  var _c$1 = _$memo(() => runtime().phase === "running");
7683
7765
  return () => _c$1() ? runningFrame() : phaseIcon(runtime().phase);
7684
- })(), _el$110);
7685
- _$insert(_el$109, () => phaseLabel(runtime().phase).short.toUpperCase(), null);
7686
- _$effect((_$p) => _$setProp(_el$109, "style", {
7766
+ })(), _el$109);
7767
+ _$insert(_el$108, () => phaseLabel(runtime().phase).short.toUpperCase(), null);
7768
+ _$effect((_$p) => _$setProp(_el$108, "style", {
7687
7769
  fg: turnColor(),
7688
7770
  bold: runtime().phase === "running"
7689
7771
  }, _$p));
7690
- return _el$109;
7772
+ return _el$108;
7691
7773
  })(), (() => {
7692
- var _el$111 = _$createElement("span"), _el$112 = _$createTextNode(` `);
7693
- _$insertNode(_el$111, _el$112);
7694
- _$insert(_el$111, () => runtime().budgetTurnCount, null);
7695
- _$insert(_el$111, maxTurns ? `/${maxTurns}` : "", null);
7696
- _$effect((_$p) => _$setProp(_el$111, "style", {
7774
+ var _el$110 = _$createElement("span"), _el$111 = _$createTextNode(` `);
7775
+ _$insertNode(_el$110, _el$111);
7776
+ _$insert(_el$110, () => runtime().budgetTurnCount, null);
7777
+ _$insert(_el$110, maxTurns ? `/${maxTurns}` : "", null);
7778
+ _$effect((_$p) => _$setProp(_el$110, "style", {
7697
7779
  fg: turnColor()
7698
7780
  }, _$p));
7699
- return _el$111;
7781
+ return _el$110;
7700
7782
  })(), (() => {
7701
- var _el$113 = _$createElement("span"), _el$114 = _$createTextNode(` `);
7702
- _$insertNode(_el$113, _el$114);
7703
- _$insert(_el$113, () => ageLabel(runtime().lastProgressAt || runtime().lastRunAt, clock()), null);
7704
- _$effect((_$p) => _$setProp(_el$113, "style", {
7783
+ var _el$112 = _$createElement("span"), _el$113 = _$createTextNode(` `);
7784
+ _$insertNode(_el$112, _el$113);
7785
+ _$insert(_el$112, () => ageLabel(runtime().lastProgressAt || runtime().lastRunAt, clock()), null);
7786
+ _$effect((_$p) => _$setProp(_el$112, "style", {
7705
7787
  fg: theme().textMuted
7706
7788
  }, _$p));
7707
- return _el$113;
7789
+ return _el$112;
7708
7790
  })()];
7709
7791
  })(), null);
7710
- _$insert(_el$100, (() => {
7792
+ _$insert(_el$99, (() => {
7711
7793
  var _c$4 = _$memo(() => !!(runtime() && runtime().consecutiveFailures > 0));
7712
7794
  return () => _c$4() && (() => {
7713
- var _el$115 = _$createElement("span"), _el$116 = _$createTextNode(` \u2502 \u26A0 `), _el$117 = _$createTextNode(` fail`);
7714
- _$insertNode(_el$115, _el$116);
7715
- _$insertNode(_el$115, _el$117);
7716
- _$insert(_el$115, () => runtime().consecutiveFailures, _el$117);
7717
- _$effect((_$p) => _$setProp(_el$115, "style", {
7795
+ var _el$114 = _$createElement("span"), _el$115 = _$createTextNode(` \u2502 \u26A0 `), _el$116 = _$createTextNode(` fail`);
7796
+ _$insertNode(_el$114, _el$115);
7797
+ _$insertNode(_el$114, _el$116);
7798
+ _$insert(_el$114, () => runtime().consecutiveFailures, _el$116);
7799
+ _$effect((_$p) => _$setProp(_el$114, "style", {
7718
7800
  fg: theme().error,
7719
7801
  bold: true
7720
7802
  }, _$p));
7721
- return _el$115;
7803
+ return _el$114;
7722
7804
  })();
7723
7805
  })(), null);
7724
- _$insert(_el$100, (() => {
7806
+ _$insert(_el$99, (() => {
7725
7807
  var _c$5 = _$memo(() => !!(runtime() && (runtime().noProgressCount || 0) > 0));
7726
7808
  return () => _c$5() && (() => {
7727
- var _el$118 = _$createElement("span"), _el$119 = _$createTextNode(` \u2502 `), _el$120 = _$createTextNode(` no-progress`);
7728
- _$insertNode(_el$118, _el$119);
7729
- _$insertNode(_el$118, _el$120);
7730
- _$insert(_el$118, () => runtime().noProgressCount, _el$120);
7731
- _$effect((_$p) => _$setProp(_el$118, "style", {
7809
+ var _el$117 = _$createElement("span"), _el$118 = _$createTextNode(` \u2502 `), _el$119 = _$createTextNode(` no-progress`);
7810
+ _$insertNode(_el$117, _el$118);
7811
+ _$insertNode(_el$117, _el$119);
7812
+ _$insert(_el$117, () => runtime().noProgressCount, _el$119);
7813
+ _$effect((_$p) => _$setProp(_el$117, "style", {
7732
7814
  fg: theme().warning
7733
7815
  }, _$p));
7734
- return _el$118;
7816
+ return _el$117;
7735
7817
  })();
7736
7818
  })(), null);
7737
- _$insert(_el$100, (() => {
7819
+ _$insert(_el$99, (() => {
7738
7820
  var _c$6 = _$memo(() => !!(runtime() && runtime().evaluatorRejectionCount > 0));
7739
7821
  return () => _c$6() && (() => {
7740
- var _el$121 = _$createElement("span"), _el$122 = _$createTextNode(` \u2502 \u26A0 `), _el$123 = _$createTextNode(` rejected`);
7741
- _$insertNode(_el$121, _el$122);
7742
- _$insertNode(_el$121, _el$123);
7743
- _$insert(_el$121, () => String(runtime().evaluatorRejectionCount), _el$123);
7744
- _$effect((_$p) => _$setProp(_el$121, "style", {
7822
+ var _el$120 = _$createElement("span"), _el$121 = _$createTextNode(` \u2502 \u26A0 `), _el$122 = _$createTextNode(` rejected`);
7823
+ _$insertNode(_el$120, _el$121);
7824
+ _$insertNode(_el$120, _el$122);
7825
+ _$insert(_el$120, () => String(runtime().evaluatorRejectionCount), _el$122);
7826
+ _$effect((_$p) => _$setProp(_el$120, "style", {
7745
7827
  fg: theme().warning,
7746
7828
  bold: true
7747
7829
  }, _$p));
7748
- return _el$121;
7830
+ return _el$120;
7749
7831
  })();
7750
7832
  })(), null);
7751
- _$insert(_el$100, (() => {
7833
+ _$insert(_el$99, (() => {
7752
7834
  var _c$7 = _$memo(() => !!(runtime() && runtime().unknownStatusCount >= 3));
7753
7835
  return () => _c$7() && (() => {
7754
- var _el$124 = _$createElement("span");
7755
- _$insertNode(_el$124, _$createTextNode(` \u2502 \u26A0\uFE0F UNREACHABLE`));
7756
- _$effect((_$p) => _$setProp(_el$124, "style", {
7836
+ var _el$123 = _$createElement("span");
7837
+ _$insertNode(_el$123, _$createTextNode(` \u2502 \u26A0\uFE0F UNREACHABLE`));
7838
+ _$effect((_$p) => _$setProp(_el$123, "style", {
7757
7839
  fg: theme().error,
7758
7840
  bold: true
7759
7841
  }, _$p));
7760
- return _el$124;
7842
+ return _el$123;
7761
7843
  })();
7762
7844
  })(), null);
7763
- _$insert(_el$100, (() => {
7845
+ _$insert(_el$99, (() => {
7764
7846
  var _c$8 = _$memo(() => !!(runtime() && runtime().phase === "idle" && runtime().activeRunID));
7765
7847
  return () => _c$8() && (() => {
7766
- var _el$126 = _$createElement("span");
7767
- _$insertNode(_el$126, _$createTextNode(` \u2502 \u26A0\uFE0F STALE LEASE`));
7768
- _$effect((_$p) => _$setProp(_el$126, "style", {
7848
+ var _el$125 = _$createElement("span");
7849
+ _$insertNode(_el$125, _$createTextNode(` \u2502 \u26A0\uFE0F STALE LEASE`));
7850
+ _$effect((_$p) => _$setProp(_el$125, "style", {
7769
7851
  fg: theme().error,
7770
7852
  bold: true
7771
7853
  }, _$p));
7772
- return _el$126;
7854
+ return _el$125;
7773
7855
  })();
7774
7856
  })(), null);
7775
- _$insert(_el$100, (() => {
7857
+ _$insert(_el$99, (() => {
7776
7858
  var _c$9 = _$memo(() => !!(runtime() && runtime().retryAfter));
7777
7859
  return () => _c$9() && (() => {
7778
- var _el$128 = _$createElement("span"), _el$129 = _$createTextNode(` \u2502 \u21BB `);
7779
- _$insertNode(_el$128, _el$129);
7780
- _$insert(_el$128, () => countdownLabel(runtime().retryAfter, clock()), null);
7781
- _$effect((_$p) => _$setProp(_el$128, "style", {
7860
+ var _el$127 = _$createElement("span"), _el$128 = _$createTextNode(` \u2502 \u21BB `);
7861
+ _$insertNode(_el$127, _el$128);
7862
+ _$insert(_el$127, () => countdownLabel(runtime().retryAfter, clock()), null);
7863
+ _$effect((_$p) => _$setProp(_el$127, "style", {
7782
7864
  fg: theme().accent
7783
7865
  }, _$p));
7784
- return _el$128;
7866
+ return _el$127;
7785
7867
  })();
7786
7868
  })(), null);
7787
- _$insert(_el$100, (() => {
7869
+ _$insert(_el$99, (() => {
7788
7870
  var _c$0 = _$memo(() => !!(runtime() && runtime().nextRunAt));
7789
7871
  return () => _c$0() && (() => {
7790
- var _el$130 = _$createElement("span"), _el$131 = _$createTextNode(` \u2502 \u23F0 `);
7791
- _$insertNode(_el$130, _el$131);
7792
- _$insert(_el$130, () => countdownLabel(runtime().nextRunAt, clock()), null);
7793
- _$effect((_$p) => _$setProp(_el$130, "style", {
7872
+ var _el$129 = _$createElement("span"), _el$130 = _$createTextNode(` \u2502 \u23F0 `);
7873
+ _$insertNode(_el$129, _el$130);
7874
+ _$insert(_el$129, () => countdownLabel(runtime().nextRunAt, clock()), null);
7875
+ _$effect((_$p) => _$setProp(_el$129, "style", {
7794
7876
  fg: theme().accent
7795
7877
  }, _$p));
7796
- return _el$130;
7878
+ return _el$129;
7797
7879
  })();
7798
7880
  })(), null);
7799
7881
  _$effect((_p$) => {
@@ -7808,12 +7890,12 @@ function LoopDashboard(props) {
7808
7890
  fg: statusColor(goal.status, theme()),
7809
7891
  bold: true
7810
7892
  };
7811
- _v$36 !== _p$.e && (_p$.e = _$setProp(_el$99, "id", _v$36, _p$.e));
7812
- _v$37 !== _p$.t && (_p$.t = _$setProp(_el$99, "backgroundColor", _v$37, _p$.t));
7813
- _v$38 !== _p$.a && (_p$.a = _$setProp(_el$101, "style", _v$38, _p$.a));
7814
- _v$39 !== _p$.o && (_p$.o = _$setProp(_el$102, "style", _v$39, _p$.o));
7815
- _v$40 !== _p$.i && (_p$.i = _$setProp(_el$104, "style", _v$40, _p$.i));
7816
- _v$41 !== _p$.n && (_p$.n = _$setProp(_el$106, "style", _v$41, _p$.n));
7893
+ _v$36 !== _p$.e && (_p$.e = _$setProp(_el$98, "id", _v$36, _p$.e));
7894
+ _v$37 !== _p$.t && (_p$.t = _$setProp(_el$98, "backgroundColor", _v$37, _p$.t));
7895
+ _v$38 !== _p$.a && (_p$.a = _$setProp(_el$100, "style", _v$38, _p$.a));
7896
+ _v$39 !== _p$.o && (_p$.o = _$setProp(_el$101, "style", _v$39, _p$.o));
7897
+ _v$40 !== _p$.i && (_p$.i = _$setProp(_el$103, "style", _v$40, _p$.i));
7898
+ _v$41 !== _p$.n && (_p$.n = _$setProp(_el$105, "style", _v$41, _p$.n));
7817
7899
  return _p$;
7818
7900
  }, {
7819
7901
  e: undefined,
@@ -7823,12 +7905,12 @@ function LoopDashboard(props) {
7823
7905
  i: undefined,
7824
7906
  n: undefined
7825
7907
  });
7826
- return _el$99;
7908
+ return _el$98;
7827
7909
  })();
7828
7910
  }
7829
7911
  }));
7830
- _$effect((_$p) => _$setProp(_el$44, "height", listHeight(), _$p));
7831
- return _el$44;
7912
+ _$effect((_$p) => _$setProp(_el$43, "height", listHeight(), _$p));
7913
+ return _el$43;
7832
7914
  }
7833
7915
  }), _$createComponent(Show, {
7834
7916
  get when() {
@@ -7839,530 +7921,530 @@ function LoopDashboard(props) {
7839
7921
  const lp = () => goal().lastProgress;
7840
7922
  const blk = () => goal().blocker;
7841
7923
  return (() => {
7842
- var _el$132 = _$createElement("box"), _el$133 = _$createElement("text"), _el$134 = _$createElement("span"), _el$135 = _$createTextNode(` `), _el$136 = _$createElement("span"), _el$138 = _$createElement("span"), _el$139 = _$createTextNode(` \u2014 `), _el$140 = _$createTextNode(`
7843
- `), _el$141 = _$createElement("span"), _el$142 = _$createTextNode(`
7844
- `), _el$143 = _$createElement("span"), _el$145 = _$createElement("span");
7924
+ var _el$131 = _$createElement("box"), _el$132 = _$createElement("text"), _el$133 = _$createElement("span"), _el$134 = _$createTextNode(` `), _el$135 = _$createElement("span"), _el$137 = _$createElement("span"), _el$138 = _$createTextNode(` \u2014 `), _el$139 = _$createTextNode(`
7925
+ `), _el$140 = _$createElement("span"), _el$141 = _$createTextNode(`
7926
+ `), _el$142 = _$createElement("span"), _el$144 = _$createElement("span");
7927
+ _$insertNode(_el$131, _el$132);
7928
+ _$setProp(_el$131, "flexDirection", "column");
7929
+ _$setProp(_el$131, "border", true);
7930
+ _$setProp(_el$131, "padding", 1);
7931
+ _$setProp(_el$131, "flexShrink", 0);
7932
+ _$setProp(_el$131, "maxHeight", 13);
7845
7933
  _$insertNode(_el$132, _el$133);
7846
- _$setProp(_el$132, "flexDirection", "column");
7847
- _$setProp(_el$132, "border", true);
7848
- _$setProp(_el$132, "padding", 1);
7849
- _$setProp(_el$132, "flexShrink", 0);
7850
- _$setProp(_el$132, "maxHeight", 13);
7934
+ _$insertNode(_el$132, _el$135);
7935
+ _$insertNode(_el$132, _el$137);
7936
+ _$insertNode(_el$132, _el$139);
7937
+ _$insertNode(_el$132, _el$140);
7938
+ _$insertNode(_el$132, _el$141);
7939
+ _$insertNode(_el$132, _el$142);
7940
+ _$insertNode(_el$132, _el$144);
7851
7941
  _$insertNode(_el$133, _el$134);
7852
- _$insertNode(_el$133, _el$136);
7853
- _$insertNode(_el$133, _el$138);
7854
- _$insertNode(_el$133, _el$140);
7855
- _$insertNode(_el$133, _el$141);
7856
- _$insertNode(_el$133, _el$142);
7857
- _$insertNode(_el$133, _el$143);
7858
- _$insertNode(_el$133, _el$145);
7859
- _$insertNode(_el$134, _el$135);
7860
- _$insert(_el$134, () => statusIcon(goal().status), _el$135);
7861
- _$insert(_el$134, () => goal().name, null);
7862
- _$insertNode(_el$136, _$createTextNode(` Goal `));
7863
- _$insertNode(_el$138, _el$139);
7864
- _$insert(_el$138, () => goalStatusLabel(goal().status).short, _el$139);
7865
- _$insert(_el$138, () => goalStatusLabel(goal().status).hint, null);
7866
- _$insert(_el$133, (() => {
7942
+ _$insert(_el$133, () => statusIcon(goal().status), _el$134);
7943
+ _$insert(_el$133, () => goal().name, null);
7944
+ _$insertNode(_el$135, _$createTextNode(` Goal `));
7945
+ _$insertNode(_el$137, _el$138);
7946
+ _$insert(_el$137, () => goalStatusLabel(goal().status).short, _el$138);
7947
+ _$insert(_el$137, () => goalStatusLabel(goal().status).hint, null);
7948
+ _$insert(_el$132, (() => {
7867
7949
  var _c$10 = _$memo(() => !!rt());
7868
7950
  return () => _c$10() && [(() => {
7869
- var _el$146 = _$createElement("span");
7870
- _$insertNode(_el$146, _$createTextNode(` \u2502 Worker `));
7871
- _$effect((_$p) => _$setProp(_el$146, "style", {
7951
+ var _el$145 = _$createElement("span");
7952
+ _$insertNode(_el$145, _$createTextNode(` \u2502 Worker `));
7953
+ _$effect((_$p) => _$setProp(_el$145, "style", {
7872
7954
  fg: theme().textMuted
7873
7955
  }, _$p));
7874
- return _el$146;
7956
+ return _el$145;
7875
7957
  })(), (() => {
7876
- var _el$148 = _$createElement("span"), _el$149 = _$createTextNode(` `), _el$150 = _$createTextNode(` \u2014 `);
7877
- _$insertNode(_el$148, _el$149);
7878
- _$insertNode(_el$148, _el$150);
7879
- _$insert(_el$148, () => phaseIcon(rt().phase), _el$149);
7880
- _$insert(_el$148, () => phaseLabel(rt().phase).short, _el$150);
7881
- _$insert(_el$148, () => phaseLabel(rt().phase).hint, null);
7882
- _$effect((_$p) => _$setProp(_el$148, "style", {
7958
+ var _el$147 = _$createElement("span"), _el$148 = _$createTextNode(` `), _el$149 = _$createTextNode(` \u2014 `);
7959
+ _$insertNode(_el$147, _el$148);
7960
+ _$insertNode(_el$147, _el$149);
7961
+ _$insert(_el$147, () => phaseIcon(rt().phase), _el$148);
7962
+ _$insert(_el$147, () => phaseLabel(rt().phase).short, _el$149);
7963
+ _$insert(_el$147, () => phaseLabel(rt().phase).hint, null);
7964
+ _$effect((_$p) => _$setProp(_el$147, "style", {
7883
7965
  fg: phaseColor(rt().phase, theme()),
7884
7966
  bold: true
7885
7967
  }, _$p));
7886
- return _el$148;
7968
+ return _el$147;
7887
7969
  })(), (() => {
7888
- var _el$151 = _$createElement("span"), _el$152 = _$createTextNode(` run `), _el$153 = _$createTextNode(` (budget `), _el$154 = _$createTextNode(`)`);
7889
- _$insertNode(_el$151, _el$152);
7890
- _$insertNode(_el$151, _el$153);
7891
- _$insertNode(_el$151, _el$154);
7892
- _$insert(_el$151, () => rt().runCount, _el$153);
7893
- _$insert(_el$151, () => rt().budgetTurnCount, _el$154);
7894
- _$effect((_$p) => _$setProp(_el$151, "style", {
7970
+ var _el$150 = _$createElement("span"), _el$151 = _$createTextNode(` run `), _el$152 = _$createTextNode(` (budget `), _el$153 = _$createTextNode(`)`);
7971
+ _$insertNode(_el$150, _el$151);
7972
+ _$insertNode(_el$150, _el$152);
7973
+ _$insertNode(_el$150, _el$153);
7974
+ _$insert(_el$150, () => rt().runCount, _el$152);
7975
+ _$insert(_el$150, () => rt().budgetTurnCount, _el$153);
7976
+ _$effect((_$p) => _$setProp(_el$150, "style", {
7895
7977
  fg: theme().textMuted
7896
7978
  }, _$p));
7897
- return _el$151;
7979
+ return _el$150;
7898
7980
  })()];
7899
- })(), _el$140);
7900
- _$insert(_el$141, () => describeGoalState(goal().status, rt()?.phase));
7901
- _$insert(_el$133, (() => {
7981
+ })(), _el$139);
7982
+ _$insert(_el$140, () => describeGoalState(goal().status, rt()?.phase));
7983
+ _$insert(_el$132, (() => {
7902
7984
  var _c$11 = _$memo(() => !!rt()?.workerAbortedAt);
7903
7985
  return () => _c$11() && [(() => {
7904
- var _el$155 = _$createElement("span");
7905
- _$insertNode(_el$155, _$createTextNode(` \u2502 \u26A0 worker aborted `));
7906
- _$effect((_$p) => _$setProp(_el$155, "style", {
7986
+ var _el$154 = _$createElement("span");
7987
+ _$insertNode(_el$154, _$createTextNode(` \u2502 \u26A0 worker aborted `));
7988
+ _$effect((_$p) => _$setProp(_el$154, "style", {
7907
7989
  fg: theme().warning,
7908
7990
  bold: true
7909
7991
  }, _$p));
7910
- return _el$155;
7992
+ return _el$154;
7911
7993
  })(), (() => {
7912
- var _el$157 = _$createElement("span"), _el$158 = _$createTextNode(` \u2014 session kept, next turn reuses it`);
7913
- _$insertNode(_el$157, _el$158);
7914
- _$insert(_el$157, () => ageLabel(rt().workerAbortedAt, clock()), _el$158);
7915
- _$effect((_$p) => _$setProp(_el$157, "style", {
7994
+ var _el$156 = _$createElement("span"), _el$157 = _$createTextNode(` \u2014 session kept, next turn reuses it`);
7995
+ _$insertNode(_el$156, _el$157);
7996
+ _$insert(_el$156, () => ageLabel(rt().workerAbortedAt, clock()), _el$157);
7997
+ _$effect((_$p) => _$setProp(_el$156, "style", {
7916
7998
  fg: theme().textMuted
7917
7999
  }, _$p));
7918
- return _el$157;
8000
+ return _el$156;
7919
8001
  })()];
7920
- })(), _el$142);
7921
- _$insert(_el$133, () => {
8002
+ })(), _el$141);
8003
+ _$insert(_el$132, () => {
7922
8004
  const agentName = goal().config.agent;
7923
8005
  const meta = agentName ? agentIndex()[agentName] ?? agentIndex()[agentName.toLowerCase()] : undefined;
7924
8006
  const model = goal().config.model;
7925
8007
  const slash = model?.indexOf("/") ?? -1;
7926
8008
  return [`
7927
8009
  `, (() => {
7928
- var _el$159 = _$createElement("span");
7929
- _$insertNode(_el$159, _$createTextNode(`\uD83E\uDD16 `));
7930
- _$effect((_$p) => _$setProp(_el$159, "style", {
8010
+ var _el$158 = _$createElement("span");
8011
+ _$insertNode(_el$158, _$createTextNode(`\uD83E\uDD16 `));
8012
+ _$effect((_$p) => _$setProp(_el$158, "style", {
7931
8013
  fg: theme().textMuted
7932
8014
  }, _$p));
7933
- return _el$159;
8015
+ return _el$158;
7934
8016
  })(), (() => {
7935
- var _el$161 = _$createElement("span");
7936
- _$insertNode(_el$161, _$createTextNode(`Agent: `));
7937
- _$effect((_$p) => _$setProp(_el$161, "style", {
8017
+ var _el$160 = _$createElement("span");
8018
+ _$insertNode(_el$160, _$createTextNode(`Agent: `));
8019
+ _$effect((_$p) => _$setProp(_el$160, "style", {
7938
8020
  fg: theme().primary,
7939
8021
  bold: true
7940
8022
  }, _$p));
7941
- return _el$161;
8023
+ return _el$160;
7942
8024
  })(), _$memo(() => agentName ? [(() => {
7943
- var _el$177 = _$createElement("span");
7944
- _$insert(_el$177, agentName);
7945
- _$effect((_$p) => _$setProp(_el$177, "style", {
8025
+ var _el$176 = _$createElement("span");
8026
+ _$insert(_el$176, agentName);
8027
+ _$effect((_$p) => _$setProp(_el$176, "style", {
7946
8028
  fg: agentColor(meta?.color, theme()),
7947
8029
  bold: true
7948
8030
  }, _$p));
7949
- return _el$177;
8031
+ return _el$176;
7950
8032
  })(), _$memo(() => _$memo(() => !!meta?.mode)() && (() => {
7951
- var _el$178 = _$createElement("span"), _el$179 = _$createTextNode(` (`), _el$180 = _$createTextNode(`)`);
7952
- _$insertNode(_el$178, _el$179);
7953
- _$insertNode(_el$178, _el$180);
7954
- _$insert(_el$178, () => meta.mode, _el$180);
7955
- _$effect((_$p) => _$setProp(_el$178, "style", {
8033
+ var _el$177 = _$createElement("span"), _el$178 = _$createTextNode(` (`), _el$179 = _$createTextNode(`)`);
8034
+ _$insertNode(_el$177, _el$178);
8035
+ _$insertNode(_el$177, _el$179);
8036
+ _$insert(_el$177, () => meta.mode, _el$179);
8037
+ _$effect((_$p) => _$setProp(_el$177, "style", {
7956
8038
  fg: theme().textMuted
7957
8039
  }, _$p));
7958
- return _el$178;
8040
+ return _el$177;
7959
8041
  })())] : goal().parentAgent ? [(() => {
7960
- var _el$181 = _$createElement("span");
7961
- _$insertNode(_el$181, _$createTextNode(`\u21A9 `));
7962
- _$effect((_$p) => _$setProp(_el$181, "style", {
8042
+ var _el$180 = _$createElement("span");
8043
+ _$insertNode(_el$180, _$createTextNode(`\u21A9 `));
8044
+ _$effect((_$p) => _$setProp(_el$180, "style", {
7963
8045
  fg: theme().textMuted
7964
8046
  }, _$p));
7965
- return _el$181;
8047
+ return _el$180;
7966
8048
  })(), (() => {
7967
- var _el$183 = _$createElement("span");
7968
- _$insert(_el$183, () => goal().parentAgent);
7969
- _$effect((_$p) => _$setProp(_el$183, "style", {
8049
+ var _el$182 = _$createElement("span");
8050
+ _$insert(_el$182, () => goal().parentAgent);
8051
+ _$effect((_$p) => _$setProp(_el$182, "style", {
7970
8052
  fg: theme().text,
7971
8053
  bold: true
7972
8054
  }, _$p));
7973
- return _el$183;
8055
+ return _el$182;
7974
8056
  })(), (() => {
7975
- var _el$184 = _$createElement("span");
7976
- _$insertNode(_el$184, _$createTextNode(` (parent)`));
7977
- _$effect((_$p) => _$setProp(_el$184, "style", {
8057
+ var _el$183 = _$createElement("span");
8058
+ _$insertNode(_el$183, _$createTextNode(` (parent)`));
8059
+ _$effect((_$p) => _$setProp(_el$183, "style", {
7978
8060
  fg: theme().textMuted
7979
8061
  }, _$p));
7980
- return _el$184;
8062
+ return _el$183;
7981
8063
  })()] : (() => {
7982
- var _el$186 = _$createElement("span");
7983
- _$insertNode(_el$186, _$createTextNode(`parent`));
7984
- _$effect((_$p) => _$setProp(_el$186, "style", {
8064
+ var _el$185 = _$createElement("span");
8065
+ _$insertNode(_el$185, _$createTextNode(`parent`));
8066
+ _$effect((_$p) => _$setProp(_el$185, "style", {
7985
8067
  fg: theme().textMuted
7986
8068
  }, _$p));
7987
- return _el$186;
8069
+ return _el$185;
7988
8070
  })()), (() => {
7989
- var _el$163 = _$createElement("span");
7990
- _$insertNode(_el$163, _$createTextNode(` \u2502 \uD83E\uDDE0 `));
7991
- _$effect((_$p) => _$setProp(_el$163, "style", {
8071
+ var _el$162 = _$createElement("span");
8072
+ _$insertNode(_el$162, _$createTextNode(` \u2502 \uD83E\uDDE0 `));
8073
+ _$effect((_$p) => _$setProp(_el$162, "style", {
7992
8074
  fg: theme().textMuted
7993
8075
  }, _$p));
7994
- return _el$163;
8076
+ return _el$162;
7995
8077
  })(), (() => {
7996
- var _el$165 = _$createElement("span");
7997
- _$insertNode(_el$165, _$createTextNode(`Model: `));
7998
- _$effect((_$p) => _$setProp(_el$165, "style", {
8078
+ var _el$164 = _$createElement("span");
8079
+ _$insertNode(_el$164, _$createTextNode(`Model: `));
8080
+ _$effect((_$p) => _$setProp(_el$164, "style", {
7999
8081
  fg: theme().primary,
8000
8082
  bold: true
8001
8083
  }, _$p));
8002
- return _el$165;
8084
+ return _el$164;
8003
8085
  })(), _$memo(() => model && slash > 0 ? [(() => {
8004
- var _el$188 = _$createElement("span"), _el$189 = _$createTextNode(`/`);
8005
- _$insertNode(_el$188, _el$189);
8006
- _$insert(_el$188, () => model.slice(0, slash), _el$189);
8007
- _$effect((_$p) => _$setProp(_el$188, "style", {
8086
+ var _el$187 = _$createElement("span"), _el$188 = _$createTextNode(`/`);
8087
+ _$insertNode(_el$187, _el$188);
8088
+ _$insert(_el$187, () => model.slice(0, slash), _el$188);
8089
+ _$effect((_$p) => _$setProp(_el$187, "style", {
8008
8090
  fg: theme().textMuted
8009
8091
  }, _$p));
8010
- return _el$188;
8092
+ return _el$187;
8011
8093
  })(), (() => {
8012
- var _el$190 = _$createElement("span");
8013
- _$insert(_el$190, () => model.slice(slash + 1));
8014
- _$effect((_$p) => _$setProp(_el$190, "style", {
8094
+ var _el$189 = _$createElement("span");
8095
+ _$insert(_el$189, () => model.slice(slash + 1));
8096
+ _$effect((_$p) => _$setProp(_el$189, "style", {
8015
8097
  fg: theme().info,
8016
8098
  bold: true
8017
8099
  }, _$p));
8018
- return _el$190;
8100
+ return _el$189;
8019
8101
  })()] : goal().parentModel ? [(() => {
8020
- var _el$191 = _$createElement("span");
8021
- _$insertNode(_el$191, _$createTextNode(`\u21A9 `));
8022
- _$effect((_$p) => _$setProp(_el$191, "style", {
8102
+ var _el$190 = _$createElement("span");
8103
+ _$insertNode(_el$190, _$createTextNode(`\u21A9 `));
8104
+ _$effect((_$p) => _$setProp(_el$190, "style", {
8023
8105
  fg: theme().textMuted
8024
8106
  }, _$p));
8025
- return _el$191;
8107
+ return _el$190;
8026
8108
  })(), (() => {
8027
- var _el$193 = _$createElement("span");
8028
- _$insert(_el$193, () => goal().parentModel);
8029
- _$effect((_$p) => _$setProp(_el$193, "style", {
8109
+ var _el$192 = _$createElement("span");
8110
+ _$insert(_el$192, () => goal().parentModel);
8111
+ _$effect((_$p) => _$setProp(_el$192, "style", {
8030
8112
  fg: theme().info,
8031
8113
  bold: true
8032
8114
  }, _$p));
8033
- return _el$193;
8115
+ return _el$192;
8034
8116
  })(), (() => {
8035
- var _el$194 = _$createElement("span");
8036
- _$insertNode(_el$194, _$createTextNode(` (parent)`));
8037
- _$effect((_$p) => _$setProp(_el$194, "style", {
8117
+ var _el$193 = _$createElement("span");
8118
+ _$insertNode(_el$193, _$createTextNode(` (parent)`));
8119
+ _$effect((_$p) => _$setProp(_el$193, "style", {
8038
8120
  fg: theme().textMuted
8039
8121
  }, _$p));
8040
- return _el$194;
8122
+ return _el$193;
8041
8123
  })()] : (() => {
8042
- var _el$196 = _$createElement("span");
8043
- _$insertNode(_el$196, _$createTextNode(`parent`));
8044
- _$effect((_$p) => _$setProp(_el$196, "style", {
8124
+ var _el$195 = _$createElement("span");
8125
+ _$insertNode(_el$195, _$createTextNode(`parent`));
8126
+ _$effect((_$p) => _$setProp(_el$195, "style", {
8045
8127
  fg: theme().textMuted
8046
8128
  }, _$p));
8047
- return _el$196;
8129
+ return _el$195;
8048
8130
  })()), (() => {
8049
- var _el$167 = _$createElement("span");
8050
- _$insertNode(_el$167, _$createTextNode(` \u2502 \uD83D\uDCB0 `));
8051
- _$effect((_$p) => _$setProp(_el$167, "style", {
8131
+ var _el$166 = _$createElement("span");
8132
+ _$insertNode(_el$166, _$createTextNode(` \u2502 \uD83D\uDCB0 `));
8133
+ _$effect((_$p) => _$setProp(_el$166, "style", {
8052
8134
  fg: theme().textMuted
8053
8135
  }, _$p));
8054
- return _el$167;
8136
+ return _el$166;
8055
8137
  })(), (() => {
8056
- var _el$169 = _$createElement("span");
8057
- _$insertNode(_el$169, _$createTextNode(`Spent: `));
8058
- _$effect((_$p) => _$setProp(_el$169, "style", {
8138
+ var _el$168 = _$createElement("span");
8139
+ _$insertNode(_el$168, _$createTextNode(`Spent: `));
8140
+ _$effect((_$p) => _$setProp(_el$168, "style", {
8059
8141
  fg: theme().primary,
8060
8142
  bold: true
8061
8143
  }, _$p));
8062
- return _el$169;
8144
+ return _el$168;
8063
8145
  })(), (() => {
8064
- var _el$171 = _$createElement("span");
8065
- _$insert(_el$171, () => formatCost(goal().costUsed));
8066
- _$effect((_$p) => _$setProp(_el$171, "style", {
8146
+ var _el$170 = _$createElement("span");
8147
+ _$insert(_el$170, () => formatCost(goal().costUsed));
8148
+ _$effect((_$p) => _$setProp(_el$170, "style", {
8067
8149
  fg: theme().success,
8068
8150
  bold: true
8069
8151
  }, _$p));
8070
- return _el$171;
8152
+ return _el$170;
8071
8153
  })(), (() => {
8072
- var _el$172 = _$createElement("span");
8073
- _$insertNode(_el$172, _$createTextNode(` \xB7 `));
8074
- _$effect((_$p) => _$setProp(_el$172, "style", {
8154
+ var _el$171 = _$createElement("span");
8155
+ _$insertNode(_el$171, _$createTextNode(` \xB7 `));
8156
+ _$effect((_$p) => _$setProp(_el$171, "style", {
8075
8157
  fg: theme().textMuted
8076
8158
  }, _$p));
8077
- return _el$172;
8159
+ return _el$171;
8078
8160
  })(), (() => {
8079
- var _el$174 = _$createElement("span");
8080
- _$insert(_el$174, () => formatTokens(goal().tokensUsed));
8081
- _$effect((_$p) => _$setProp(_el$174, "style", {
8161
+ var _el$173 = _$createElement("span");
8162
+ _$insert(_el$173, () => formatTokens(goal().tokensUsed));
8163
+ _$effect((_$p) => _$setProp(_el$173, "style", {
8082
8164
  fg: theme().warning,
8083
8165
  bold: true
8084
8166
  }, _$p));
8085
- return _el$174;
8167
+ return _el$173;
8086
8168
  })(), (() => {
8087
- var _el$175 = _$createElement("span"), _el$176 = _$createTextNode(` tokens \xB7 `);
8088
- _$insertNode(_el$175, _el$176);
8089
- _$insert(_el$175, () => formatDuration(goal().timeUsedSeconds), null);
8090
- _$effect((_$p) => _$setProp(_el$175, "style", {
8169
+ var _el$174 = _$createElement("span"), _el$175 = _$createTextNode(` tokens \xB7 `);
8170
+ _$insertNode(_el$174, _el$175);
8171
+ _$insert(_el$174, () => formatDuration(goal().timeUsedSeconds), null);
8172
+ _$effect((_$p) => _$setProp(_el$174, "style", {
8091
8173
  fg: theme().textMuted
8092
8174
  }, _$p));
8093
- return _el$175;
8175
+ return _el$174;
8094
8176
  })()];
8095
- }, _el$142);
8096
- _$insertNode(_el$143, _$createTextNode(`\uD83C\uDFAF Target: `));
8097
- _$insert(_el$145, () => goal().objective.slice(0, 160));
8098
- _$insert(_el$133, (() => {
8177
+ }, _el$141);
8178
+ _$insertNode(_el$142, _$createTextNode(`\uD83C\uDFAF Target: `));
8179
+ _$insert(_el$144, () => goal().objective.slice(0, 160));
8180
+ _$insert(_el$132, (() => {
8099
8181
  var _c$12 = _$memo(() => !!lp());
8100
8182
  return () => _c$12() && [(() => {
8101
- var _el$198 = _$createElement("span"), _el$199 = _$createTextNode(`
8183
+ var _el$197 = _$createElement("span"), _el$198 = _$createTextNode(`
8102
8184
  \u2714 `);
8103
- _$insertNode(_el$198, _el$199);
8104
- _$effect((_$p) => _$setProp(_el$198, "style", {
8185
+ _$insertNode(_el$197, _el$198);
8186
+ _$effect((_$p) => _$setProp(_el$197, "style", {
8105
8187
  fg: theme().success
8106
8188
  }, _$p));
8107
- return _el$198;
8189
+ return _el$197;
8108
8190
  })(), (() => {
8109
- var _el$201 = _$createElement("span");
8110
- _$insertNode(_el$201, _$createTextNode(`Progress: `));
8111
- _$effect((_$p) => _$setProp(_el$201, "style", {
8191
+ var _el$200 = _$createElement("span");
8192
+ _$insertNode(_el$200, _$createTextNode(`Progress: `));
8193
+ _$effect((_$p) => _$setProp(_el$200, "style", {
8112
8194
  fg: theme().success,
8113
8195
  bold: true
8114
8196
  }, _$p));
8115
- return _el$201;
8197
+ return _el$200;
8116
8198
  })(), (() => {
8117
- var _el$203 = _$createElement("span");
8118
- _$insert(_el$203, () => lp().summary.slice(0, 100));
8119
- _$effect((_$p) => _$setProp(_el$203, "style", {
8199
+ var _el$202 = _$createElement("span");
8200
+ _$insert(_el$202, () => lp().summary.slice(0, 100));
8201
+ _$effect((_$p) => _$setProp(_el$202, "style", {
8120
8202
  fg: theme().text
8121
8203
  }, _$p));
8122
- return _el$203;
8204
+ return _el$202;
8123
8205
  })(), (() => {
8124
- var _el$204 = _$createElement("span"), _el$205 = _$createTextNode(` \u2192 `);
8125
- _$insertNode(_el$204, _el$205);
8126
- _$insert(_el$204, () => lp().next?.slice(0, 60) || "", null);
8127
- _$effect((_$p) => _$setProp(_el$204, "style", {
8206
+ var _el$203 = _$createElement("span"), _el$204 = _$createTextNode(` \u2192 `);
8207
+ _$insertNode(_el$203, _el$204);
8208
+ _$insert(_el$203, () => lp().next?.slice(0, 60) || "", null);
8209
+ _$effect((_$p) => _$setProp(_el$203, "style", {
8128
8210
  fg: theme().textMuted
8129
8211
  }, _$p));
8130
- return _el$204;
8212
+ return _el$203;
8131
8213
  })()];
8132
8214
  })(), null);
8133
- _$insert(_el$133, (() => {
8215
+ _$insert(_el$132, (() => {
8134
8216
  var _c$13 = _$memo(() => !!blk());
8135
8217
  return () => _c$13() && [(() => {
8136
- var _el$206 = _$createElement("span"), _el$207 = _$createTextNode(`
8218
+ var _el$205 = _$createElement("span"), _el$206 = _$createTextNode(`
8137
8219
  \u2716 Blocked: `);
8138
- _$insertNode(_el$206, _el$207);
8139
- _$effect((_$p) => _$setProp(_el$206, "style", {
8220
+ _$insertNode(_el$205, _el$206);
8221
+ _$effect((_$p) => _$setProp(_el$205, "style", {
8140
8222
  fg: theme().error,
8141
8223
  bold: true
8142
8224
  }, _$p));
8143
- return _el$206;
8225
+ return _el$205;
8144
8226
  })(), (() => {
8145
- var _el$209 = _$createElement("span");
8146
- _$insert(_el$209, () => blk().reason.slice(0, 140));
8147
- _$effect((_$p) => _$setProp(_el$209, "style", {
8227
+ var _el$208 = _$createElement("span");
8228
+ _$insert(_el$208, () => blk().reason.slice(0, 140));
8229
+ _$effect((_$p) => _$setProp(_el$208, "style", {
8148
8230
  fg: theme().error
8149
8231
  }, _$p));
8150
- return _el$209;
8232
+ return _el$208;
8151
8233
  })(), (() => {
8152
- var _el$210 = _$createElement("span"), _el$211 = _$createTextNode(` \u2014 `);
8153
- _$insertNode(_el$210, _el$211);
8154
- _$insert(_el$210, () => blk().needed.slice(0, 60), null);
8155
- _$effect((_$p) => _$setProp(_el$210, "style", {
8234
+ var _el$209 = _$createElement("span"), _el$210 = _$createTextNode(` \u2014 `);
8235
+ _$insertNode(_el$209, _el$210);
8236
+ _$insert(_el$209, () => blk().needed.slice(0, 60), null);
8237
+ _$effect((_$p) => _$setProp(_el$209, "style", {
8156
8238
  fg: theme().textMuted
8157
8239
  }, _$p));
8158
- return _el$210;
8240
+ return _el$209;
8159
8241
  })()];
8160
8242
  })(), null);
8161
- _$insert(_el$133, (() => {
8243
+ _$insert(_el$132, (() => {
8162
8244
  var _c$14 = _$memo(() => !!goal().config.artifactDir);
8163
8245
  return () => _c$14() && [(() => {
8164
- var _el$212 = _$createElement("span"), _el$213 = _$createTextNode(`
8246
+ var _el$211 = _$createElement("span"), _el$212 = _$createTextNode(`
8165
8247
  \uD83D\uDCC1 `);
8166
- _$insertNode(_el$212, _el$213);
8167
- _$effect((_$p) => _$setProp(_el$212, "style", {
8248
+ _$insertNode(_el$211, _el$212);
8249
+ _$effect((_$p) => _$setProp(_el$211, "style", {
8168
8250
  fg: theme().accent
8169
8251
  }, _$p));
8170
- return _el$212;
8252
+ return _el$211;
8171
8253
  })(), (() => {
8172
- var _el$215 = _$createElement("span");
8173
- _$insertNode(_el$215, _$createTextNode(`Artifacts: `));
8174
- _$effect((_$p) => _$setProp(_el$215, "style", {
8254
+ var _el$214 = _$createElement("span");
8255
+ _$insertNode(_el$214, _$createTextNode(`Artifacts: `));
8256
+ _$effect((_$p) => _$setProp(_el$214, "style", {
8175
8257
  fg: theme().accent,
8176
8258
  bold: true
8177
8259
  }, _$p));
8178
- return _el$215;
8260
+ return _el$214;
8179
8261
  })(), (() => {
8180
- var _el$217 = _$createElement("span");
8181
- _$insert(_el$217, () => String(goal().config.artifactDir).replace(String(props.directory), "."));
8182
- _$effect((_$p) => _$setProp(_el$217, "style", {
8262
+ var _el$216 = _$createElement("span");
8263
+ _$insert(_el$216, () => String(goal().config.artifactDir).replace(String(props.directory), "."));
8264
+ _$effect((_$p) => _$setProp(_el$216, "style", {
8183
8265
  fg: theme().textMuted
8184
8266
  }, _$p));
8185
- return _el$217;
8267
+ return _el$216;
8186
8268
  })()];
8187
8269
  })(), null);
8188
- _$insert(_el$133, (() => {
8270
+ _$insert(_el$132, (() => {
8189
8271
  var _c$15 = _$memo(() => !!goal().workerTopology);
8190
8272
  return () => _c$15() && [(() => {
8191
- var _el$218 = _$createElement("span"), _el$219 = _$createTextNode(`
8273
+ var _el$217 = _$createElement("span"), _el$218 = _$createTextNode(`
8192
8274
  \uD83C\uDF3F Worker: `);
8193
- _$insertNode(_el$218, _el$219);
8194
- _$effect((_$p) => _$setProp(_el$218, "style", {
8275
+ _$insertNode(_el$217, _el$218);
8276
+ _$effect((_$p) => _$setProp(_el$217, "style", {
8195
8277
  fg: theme().textMuted
8196
8278
  }, _$p));
8197
- return _el$218;
8279
+ return _el$217;
8198
8280
  })(), (() => {
8199
- var _el$221 = _$createElement("span");
8200
- _$insert(_el$221, (() => {
8281
+ var _el$220 = _$createElement("span");
8282
+ _$insert(_el$220, (() => {
8201
8283
  var _c$22 = _$memo(() => goal().workerTopology === "v2-native-child");
8202
8284
  return () => _c$22() ? "native child" : goal().workerTopology === "v2-root-fallback" ? "root fallback" : "v1 child";
8203
8285
  })());
8204
- _$effect((_$p) => _$setProp(_el$221, "style", {
8286
+ _$effect((_$p) => _$setProp(_el$220, "style", {
8205
8287
  fg: theme().text
8206
8288
  }, _$p));
8207
- return _el$221;
8289
+ return _el$220;
8208
8290
  })(), _$memo(() => _$memo(() => !!goal().nativeParentID)() ? (() => {
8209
- var _el$222 = _$createElement("span"), _el$223 = _$createTextNode(` of `), _el$224 = _$createTextNode(`\u2026`);
8210
- _$insertNode(_el$222, _el$223);
8211
- _$insertNode(_el$222, _el$224);
8212
- _$insert(_el$222, () => goal().nativeParentID.slice(0, 12), _el$224);
8213
- _$effect((_$p) => _$setProp(_el$222, "style", {
8291
+ var _el$221 = _$createElement("span"), _el$222 = _$createTextNode(` of `), _el$223 = _$createTextNode(`\u2026`);
8292
+ _$insertNode(_el$221, _el$222);
8293
+ _$insertNode(_el$221, _el$223);
8294
+ _$insert(_el$221, () => goal().nativeParentID.slice(0, 12), _el$223);
8295
+ _$effect((_$p) => _$setProp(_el$221, "style", {
8214
8296
  fg: theme().textMuted
8215
8297
  }, _$p));
8216
- return _el$222;
8298
+ return _el$221;
8217
8299
  })() : null)];
8218
8300
  })(), null);
8219
- _$insert(_el$133, (() => {
8301
+ _$insert(_el$132, (() => {
8220
8302
  var _c$16 = _$memo(() => (goal().config.checks?.length ?? 0) > 0);
8221
8303
  return () => _c$16() ? [(() => {
8222
- var _el$225 = _$createElement("span"), _el$226 = _$createTextNode(`
8304
+ var _el$224 = _$createElement("span"), _el$225 = _$createTextNode(`
8223
8305
  \u25A3 `);
8224
- _$insertNode(_el$225, _el$226);
8225
- _$effect((_$p) => _$setProp(_el$225, "style", {
8306
+ _$insertNode(_el$224, _el$225);
8307
+ _$effect((_$p) => _$setProp(_el$224, "style", {
8226
8308
  fg: theme().warning
8227
8309
  }, _$p));
8228
- return _el$225;
8310
+ return _el$224;
8229
8311
  })(), (() => {
8230
- var _el$228 = _$createElement("span");
8231
- _$insertNode(_el$228, _$createTextNode(`Checks: `));
8232
- _$effect((_$p) => _$setProp(_el$228, "style", {
8312
+ var _el$227 = _$createElement("span");
8313
+ _$insertNode(_el$227, _$createTextNode(`Checks: `));
8314
+ _$effect((_$p) => _$setProp(_el$227, "style", {
8233
8315
  fg: theme().warning,
8234
8316
  bold: true
8235
8317
  }, _$p));
8236
- return _el$228;
8318
+ return _el$227;
8237
8319
  })(), (() => {
8238
- var _el$230 = _$createElement("span");
8239
- _$insert(_el$230, () => goal().config.checks.join(", ").slice(0, 100));
8240
- _$effect((_$p) => _$setProp(_el$230, "style", {
8320
+ var _el$229 = _$createElement("span");
8321
+ _$insert(_el$229, () => goal().config.checks.join(", ").slice(0, 100));
8322
+ _$effect((_$p) => _$setProp(_el$229, "style", {
8241
8323
  fg: theme().textMuted
8242
8324
  }, _$p));
8243
- return _el$230;
8325
+ return _el$229;
8244
8326
  })()] : null;
8245
8327
  })(), null);
8246
- _$insert(_el$133, (() => {
8328
+ _$insert(_el$132, (() => {
8247
8329
  var _c$17 = _$memo(() => rt()?.evaluatorRejectionCount > 0);
8248
8330
  return () => _c$17() && [(() => {
8249
- var _el$231 = _$createElement("span"), _el$232 = _$createTextNode(`
8331
+ var _el$230 = _$createElement("span"), _el$231 = _$createTextNode(`
8250
8332
  \u26A0 rejections: `);
8251
- _$insertNode(_el$231, _el$232);
8252
- _$effect((_$p) => _$setProp(_el$231, "style", {
8333
+ _$insertNode(_el$230, _el$231);
8334
+ _$effect((_$p) => _$setProp(_el$230, "style", {
8253
8335
  fg: theme().warning
8254
8336
  }, _$p));
8255
- return _el$231;
8337
+ return _el$230;
8256
8338
  })(), (() => {
8257
- var _el$234 = _$createElement("span"), _el$235 = _$createTextNode(` \u2014 `);
8258
- _$insertNode(_el$234, _el$235);
8259
- _$insert(_el$234, () => String(rt().evaluatorRejectionCount), _el$235);
8260
- _$insert(_el$234, () => String(rt().lastRejectionDetails || "").slice(0, 80), null);
8261
- _$effect((_$p) => _$setProp(_el$234, "style", {
8339
+ var _el$233 = _$createElement("span"), _el$234 = _$createTextNode(` \u2014 `);
8340
+ _$insertNode(_el$233, _el$234);
8341
+ _$insert(_el$233, () => String(rt().evaluatorRejectionCount), _el$234);
8342
+ _$insert(_el$233, () => String(rt().lastRejectionDetails || "").slice(0, 80), null);
8343
+ _$effect((_$p) => _$setProp(_el$233, "style", {
8262
8344
  fg: theme().warning
8263
8345
  }, _$p));
8264
- return _el$234;
8346
+ return _el$233;
8265
8347
  })()];
8266
8348
  })(), null);
8267
- _$insert(_el$133, (() => {
8349
+ _$insert(_el$132, (() => {
8268
8350
  var _c$18 = _$memo(() => rt()?.unknownStatusCount > 0);
8269
8351
  return () => _c$18() && [(() => {
8270
- var _el$236 = _$createElement("span"), _el$237 = _$createTextNode(`
8352
+ var _el$235 = _$createElement("span"), _el$236 = _$createTextNode(`
8271
8353
  \u26A0\uFE0F unreachable: `);
8272
- _$insertNode(_el$236, _el$237);
8273
- _$effect((_$p) => _$setProp(_el$236, "style", {
8354
+ _$insertNode(_el$235, _el$236);
8355
+ _$effect((_$p) => _$setProp(_el$235, "style", {
8274
8356
  fg: theme().error
8275
8357
  }, _$p));
8276
- return _el$236;
8358
+ return _el$235;
8277
8359
  })(), (() => {
8278
- var _el$239 = _$createElement("span"), _el$240 = _$createTextNode(`/3`);
8279
- _$insertNode(_el$239, _el$240);
8280
- _$insert(_el$239, () => String(rt().unknownStatusCount), _el$240);
8281
- _$effect((_$p) => _$setProp(_el$239, "style", {
8360
+ var _el$238 = _$createElement("span"), _el$239 = _$createTextNode(`/3`);
8361
+ _$insertNode(_el$238, _el$239);
8362
+ _$insert(_el$238, () => String(rt().unknownStatusCount), _el$239);
8363
+ _$effect((_$p) => _$setProp(_el$238, "style", {
8282
8364
  fg: theme().error
8283
8365
  }, _$p));
8284
- return _el$239;
8366
+ return _el$238;
8285
8367
  })(), (() => {
8286
- var _el$241 = _$createElement("span");
8287
- _$insertNode(_el$241, _$createTextNode(` \u2014 nudge to recover`));
8288
- _$effect((_$p) => _$setProp(_el$241, "style", {
8368
+ var _el$240 = _$createElement("span");
8369
+ _$insertNode(_el$240, _$createTextNode(` \u2014 nudge to recover`));
8370
+ _$effect((_$p) => _$setProp(_el$240, "style", {
8289
8371
  fg: theme().textMuted
8290
8372
  }, _$p));
8291
- return _el$241;
8373
+ return _el$240;
8292
8374
  })()];
8293
8375
  })(), null);
8294
- _$insert(_el$133, (() => {
8376
+ _$insert(_el$132, (() => {
8295
8377
  var _c$19 = _$memo(() => !!rt()?.retryAfter);
8296
8378
  return () => _c$19() && [(() => {
8297
- var _el$243 = _$createElement("span"), _el$244 = _$createTextNode(`
8379
+ var _el$242 = _$createElement("span"), _el$243 = _$createTextNode(`
8298
8380
  \u21BB retry in: `);
8299
- _$insertNode(_el$243, _el$244);
8300
- _$effect((_$p) => _$setProp(_el$243, "style", {
8381
+ _$insertNode(_el$242, _el$243);
8382
+ _$effect((_$p) => _$setProp(_el$242, "style", {
8301
8383
  fg: theme().accent
8302
8384
  }, _$p));
8303
- return _el$243;
8385
+ return _el$242;
8304
8386
  })(), (() => {
8305
- var _el$246 = _$createElement("span");
8306
- _$insert(_el$246, () => countdownLabel(rt().retryAfter, clock()));
8307
- _$effect((_$p) => _$setProp(_el$246, "style", {
8387
+ var _el$245 = _$createElement("span");
8388
+ _$insert(_el$245, () => countdownLabel(rt().retryAfter, clock()));
8389
+ _$effect((_$p) => _$setProp(_el$245, "style", {
8308
8390
  fg: theme().accent
8309
8391
  }, _$p));
8310
- return _el$246;
8392
+ return _el$245;
8311
8393
  })()];
8312
8394
  })(), null);
8313
- _$insert(_el$133, (() => {
8395
+ _$insert(_el$132, (() => {
8314
8396
  var _c$20 = _$memo(() => !!rt()?.nextRunAt);
8315
8397
  return () => _c$20() && [(() => {
8316
- var _el$247 = _$createElement("span"), _el$248 = _$createTextNode(`
8398
+ var _el$246 = _$createElement("span"), _el$247 = _$createTextNode(`
8317
8399
  \u23F0 next run: `);
8318
- _$insertNode(_el$247, _el$248);
8319
- _$effect((_$p) => _$setProp(_el$247, "style", {
8400
+ _$insertNode(_el$246, _el$247);
8401
+ _$effect((_$p) => _$setProp(_el$246, "style", {
8320
8402
  fg: theme().accent
8321
8403
  }, _$p));
8322
- return _el$247;
8404
+ return _el$246;
8323
8405
  })(), (() => {
8324
- var _el$250 = _$createElement("span");
8325
- _$insert(_el$250, () => countdownLabel(rt().nextRunAt, clock()));
8326
- _$effect((_$p) => _$setProp(_el$250, "style", {
8406
+ var _el$249 = _$createElement("span");
8407
+ _$insert(_el$249, () => countdownLabel(rt().nextRunAt, clock()));
8408
+ _$effect((_$p) => _$setProp(_el$249, "style", {
8327
8409
  fg: theme().accent
8328
8410
  }, _$p));
8329
- return _el$250;
8411
+ return _el$249;
8330
8412
  })(), (() => {
8331
- var _el$251 = _$createElement("span"), _el$252 = _$createTextNode(` (`), _el$253 = _$createTextNode(` runs)`);
8332
- _$insertNode(_el$251, _el$252);
8333
- _$insertNode(_el$251, _el$253);
8334
- _$insert(_el$251, () => String(rt().scheduleRunCount || 0), _el$253);
8335
- _$effect((_$p) => _$setProp(_el$251, "style", {
8413
+ var _el$250 = _$createElement("span"), _el$251 = _$createTextNode(` (`), _el$252 = _$createTextNode(` runs)`);
8414
+ _$insertNode(_el$250, _el$251);
8415
+ _$insertNode(_el$250, _el$252);
8416
+ _$insert(_el$250, () => String(rt().scheduleRunCount || 0), _el$252);
8417
+ _$effect((_$p) => _$setProp(_el$250, "style", {
8336
8418
  fg: theme().textMuted
8337
8419
  }, _$p));
8338
- return _el$251;
8420
+ return _el$250;
8339
8421
  })()];
8340
8422
  })(), null);
8341
- _$insert(_el$133, (() => {
8423
+ _$insert(_el$132, (() => {
8342
8424
  var _c$21 = _$memo(() => !!rt()?.lastError);
8343
8425
  return () => _c$21() && [(() => {
8344
- var _el$254 = _$createElement("span"), _el$255 = _$createTextNode(`
8426
+ var _el$253 = _$createElement("span"), _el$254 = _$createTextNode(`
8345
8427
  \u26A0 `);
8346
- _$insertNode(_el$254, _el$255);
8347
- _$effect((_$p) => _$setProp(_el$254, "style", {
8428
+ _$insertNode(_el$253, _el$254);
8429
+ _$effect((_$p) => _$setProp(_el$253, "style", {
8348
8430
  fg: theme().error
8349
8431
  }, _$p));
8350
- return _el$254;
8432
+ return _el$253;
8351
8433
  })(), (() => {
8352
- var _el$257 = _$createElement("span");
8353
- _$insertNode(_el$257, _$createTextNode(`Error: `));
8354
- _$effect((_$p) => _$setProp(_el$257, "style", {
8434
+ var _el$256 = _$createElement("span");
8435
+ _$insertNode(_el$256, _$createTextNode(`Error: `));
8436
+ _$effect((_$p) => _$setProp(_el$256, "style", {
8355
8437
  fg: theme().error,
8356
8438
  bold: true
8357
8439
  }, _$p));
8358
- return _el$257;
8440
+ return _el$256;
8359
8441
  })(), (() => {
8360
- var _el$259 = _$createElement("span");
8361
- _$insert(_el$259, () => rt().lastError.slice(0, 120));
8362
- _$effect((_$p) => _$setProp(_el$259, "style", {
8442
+ var _el$258 = _$createElement("span");
8443
+ _$insert(_el$258, () => rt().lastError.slice(0, 120));
8444
+ _$effect((_$p) => _$setProp(_el$258, "style", {
8363
8445
  fg: theme().error
8364
8446
  }, _$p));
8365
- return _el$259;
8447
+ return _el$258;
8366
8448
  })()];
8367
8449
  })(), null);
8368
8450
  _$effect((_p$) => {
@@ -8381,13 +8463,13 @@ function LoopDashboard(props) {
8381
8463
  }, _v$48 = {
8382
8464
  fg: theme().text
8383
8465
  };
8384
- _v$42 !== _p$.e && (_p$.e = _$setProp(_el$132, "borderColor", _v$42, _p$.e));
8385
- _v$43 !== _p$.t && (_p$.t = _$setProp(_el$134, "style", _v$43, _p$.t));
8386
- _v$44 !== _p$.a && (_p$.a = _$setProp(_el$136, "style", _v$44, _p$.a));
8387
- _v$45 !== _p$.o && (_p$.o = _$setProp(_el$138, "style", _v$45, _p$.o));
8388
- _v$46 !== _p$.i && (_p$.i = _$setProp(_el$141, "style", _v$46, _p$.i));
8389
- _v$47 !== _p$.n && (_p$.n = _$setProp(_el$143, "style", _v$47, _p$.n));
8390
- _v$48 !== _p$.s && (_p$.s = _$setProp(_el$145, "style", _v$48, _p$.s));
8466
+ _v$42 !== _p$.e && (_p$.e = _$setProp(_el$131, "borderColor", _v$42, _p$.e));
8467
+ _v$43 !== _p$.t && (_p$.t = _$setProp(_el$133, "style", _v$43, _p$.t));
8468
+ _v$44 !== _p$.a && (_p$.a = _$setProp(_el$135, "style", _v$44, _p$.a));
8469
+ _v$45 !== _p$.o && (_p$.o = _$setProp(_el$137, "style", _v$45, _p$.o));
8470
+ _v$46 !== _p$.i && (_p$.i = _$setProp(_el$140, "style", _v$46, _p$.i));
8471
+ _v$47 !== _p$.n && (_p$.n = _$setProp(_el$142, "style", _v$47, _p$.n));
8472
+ _v$48 !== _p$.s && (_p$.s = _$setProp(_el$144, "style", _v$48, _p$.s));
8391
8473
  return _p$;
8392
8474
  }, {
8393
8475
  e: undefined,
@@ -8398,7 +8480,7 @@ function LoopDashboard(props) {
8398
8480
  n: undefined,
8399
8481
  s: undefined
8400
8482
  });
8401
- return _el$132;
8483
+ return _el$131;
8402
8484
  })();
8403
8485
  }
8404
8486
  })];
@@ -8415,28 +8497,32 @@ function LoopDashboard(props) {
8415
8497
  },
8416
8498
  get fallback() {
8417
8499
  return (() => {
8418
- var _el$260 = _$createElement("box"), _el$261 = _$createElement("text"), _el$262 = _$createElement("span"), _el$264 = _$createElement("span"), _el$266 = _$createElement("span"), _el$268 = _$createElement("text"), _el$269 = _$createElement("span"), _el$271 = _$createElement("span"), _el$273 = _$createElement("span"), _el$275 = _$createElement("span"), _el$277 = _$createElement("span");
8500
+ var _el$259 = _$createElement("box"), _el$260 = _$createElement("text"), _el$261 = _$createElement("span"), _el$263 = _$createElement("span"), _el$265 = _$createElement("span"), _el$267 = _$createElement("text"), _el$268 = _$createElement("span"), _el$270 = _$createElement("span"), _el$272 = _$createElement("span"), _el$274 = _$createElement("span"), _el$276 = _$createElement("span"), _el$278 = _$createElement("span"), _el$280 = _$createElement("span");
8501
+ _$insertNode(_el$259, _el$260);
8502
+ _$insertNode(_el$259, _el$267);
8503
+ _$setProp(_el$259, "flexDirection", "column");
8504
+ _$setProp(_el$259, "gap", 1);
8505
+ _$setProp(_el$259, "padding", 1);
8419
8506
  _$insertNode(_el$260, _el$261);
8420
- _$insertNode(_el$260, _el$268);
8421
- _$setProp(_el$260, "flexDirection", "column");
8422
- _$setProp(_el$260, "gap", 1);
8423
- _$setProp(_el$260, "padding", 1);
8424
- _$insertNode(_el$261, _el$262);
8425
- _$insertNode(_el$261, _el$264);
8426
- _$insertNode(_el$261, _el$266);
8427
- _$insertNode(_el$262, _$createTextNode(`No command sessions owned by this session. `));
8428
- _$insertNode(_el$264, _$createTextNode(`:new &lt;command&gt;`));
8429
- _$insertNode(_el$266, _$createTextNode(` to start one.`));
8430
- _$insertNode(_el$268, _el$269);
8431
- _$insertNode(_el$268, _el$271);
8432
- _$insertNode(_el$268, _el$273);
8433
- _$insertNode(_el$268, _el$275);
8434
- _$insertNode(_el$268, _el$277);
8435
- _$insertNode(_el$269, _$createTextNode(`Tip: `));
8436
- _$insertNode(_el$271, _$createTextNode(`o`));
8437
- _$insertNode(_el$273, _$createTextNode(` fullscreen \xB7 `));
8438
- _$insertNode(_el$275, _$createTextNode(`:interrupt :terminate :remove`));
8439
- _$insertNode(_el$277, _$createTextNode(` manage \xB7 text + Enter writes stdin.`));
8507
+ _$insertNode(_el$260, _el$263);
8508
+ _$insertNode(_el$260, _el$265);
8509
+ _$insertNode(_el$261, _$createTextNode(`No command sessions owned by this session. `));
8510
+ _$insertNode(_el$263, _$createTextNode(`:new &lt;command&gt;`));
8511
+ _$insertNode(_el$265, _$createTextNode(` to start one.`));
8512
+ _$insertNode(_el$267, _el$268);
8513
+ _$insertNode(_el$267, _el$270);
8514
+ _$insertNode(_el$267, _el$272);
8515
+ _$insertNode(_el$267, _el$274);
8516
+ _$insertNode(_el$267, _el$276);
8517
+ _$insertNode(_el$267, _el$278);
8518
+ _$insertNode(_el$267, _el$280);
8519
+ _$insertNode(_el$268, _$createTextNode(`Tip: `));
8520
+ _$insertNode(_el$270, _$createTextNode(`o`));
8521
+ _$insertNode(_el$272, _$createTextNode(` fullscreen \xB7 `));
8522
+ _$insertNode(_el$274, _$createTextNode(`X kill \xB7 R restart \xB7 x remove-done`));
8523
+ _$insertNode(_el$276, _$createTextNode(` \xB7 `));
8524
+ _$insertNode(_el$278, _$createTextNode(`:interrupt :terminate :remove`));
8525
+ _$insertNode(_el$280, _$createTextNode(` manage \xB7 text + Enter writes stdin.`));
8440
8526
  _$effect((_p$) => {
8441
8527
  var _v$49 = {
8442
8528
  fg: theme().textMuted
@@ -8454,15 +8540,21 @@ function LoopDashboard(props) {
8454
8540
  fg: theme().warning
8455
8541
  }, _v$56 = {
8456
8542
  fg: theme().textMuted
8543
+ }, _v$57 = {
8544
+ fg: theme().warning
8545
+ }, _v$58 = {
8546
+ fg: theme().textMuted
8457
8547
  };
8458
- _v$49 !== _p$.e && (_p$.e = _$setProp(_el$262, "style", _v$49, _p$.e));
8459
- _v$50 !== _p$.t && (_p$.t = _$setProp(_el$264, "style", _v$50, _p$.t));
8460
- _v$51 !== _p$.a && (_p$.a = _$setProp(_el$266, "style", _v$51, _p$.a));
8461
- _v$52 !== _p$.o && (_p$.o = _$setProp(_el$269, "style", _v$52, _p$.o));
8462
- _v$53 !== _p$.i && (_p$.i = _$setProp(_el$271, "style", _v$53, _p$.i));
8463
- _v$54 !== _p$.n && (_p$.n = _$setProp(_el$273, "style", _v$54, _p$.n));
8464
- _v$55 !== _p$.s && (_p$.s = _$setProp(_el$275, "style", _v$55, _p$.s));
8465
- _v$56 !== _p$.h && (_p$.h = _$setProp(_el$277, "style", _v$56, _p$.h));
8548
+ _v$49 !== _p$.e && (_p$.e = _$setProp(_el$261, "style", _v$49, _p$.e));
8549
+ _v$50 !== _p$.t && (_p$.t = _$setProp(_el$263, "style", _v$50, _p$.t));
8550
+ _v$51 !== _p$.a && (_p$.a = _$setProp(_el$265, "style", _v$51, _p$.a));
8551
+ _v$52 !== _p$.o && (_p$.o = _$setProp(_el$268, "style", _v$52, _p$.o));
8552
+ _v$53 !== _p$.i && (_p$.i = _$setProp(_el$270, "style", _v$53, _p$.i));
8553
+ _v$54 !== _p$.n && (_p$.n = _$setProp(_el$272, "style", _v$54, _p$.n));
8554
+ _v$55 !== _p$.s && (_p$.s = _$setProp(_el$274, "style", _v$55, _p$.s));
8555
+ _v$56 !== _p$.h && (_p$.h = _$setProp(_el$276, "style", _v$56, _p$.h));
8556
+ _v$57 !== _p$.r && (_p$.r = _$setProp(_el$278, "style", _v$57, _p$.r));
8557
+ _v$58 !== _p$.d && (_p$.d = _$setProp(_el$280, "style", _v$58, _p$.d));
8466
8558
  return _p$;
8467
8559
  }, {
8468
8560
  e: undefined,
@@ -8472,120 +8564,122 @@ function LoopDashboard(props) {
8472
8564
  i: undefined,
8473
8565
  n: undefined,
8474
8566
  s: undefined,
8475
- h: undefined
8567
+ h: undefined,
8568
+ r: undefined,
8569
+ d: undefined
8476
8570
  });
8477
- return _el$260;
8571
+ return _el$259;
8478
8572
  })();
8479
8573
  },
8480
8574
  get children() {
8481
- var _el$45 = _$createElement("scrollbox");
8482
- _$insert(_el$45, _$createComponent(For, {
8575
+ var _el$44 = _$createElement("scrollbox");
8576
+ _$insert(_el$44, _$createComponent(For, {
8483
8577
  get each() {
8484
8578
  return ownerCommands();
8485
8579
  },
8486
8580
  children: (cmd, i) => {
8487
8581
  const isActive = () => i() === cmdSelected();
8488
8582
  return (() => {
8489
- var _el$279 = _$createElement("box"), _el$280 = _$createElement("text"), _el$281 = _$createElement("span"), _el$282 = _$createElement("span"), _el$284 = _$createElement("span"), _el$286 = _$createElement("span"), _el$287 = _$createElement("span"), _el$289 = _$createElement("span"), _el$290 = _$createElement("span"), _el$291 = _$createTextNode(` \u2502 `);
8490
- _$insertNode(_el$279, _el$280);
8491
- _$setProp(_el$279, "flexDirection", "row");
8492
- _$setProp(_el$279, "paddingLeft", 1);
8493
- _$setProp(_el$279, "paddingRight", 1);
8494
- _$insertNode(_el$280, _el$281);
8495
- _$insertNode(_el$280, _el$282);
8496
- _$insertNode(_el$280, _el$284);
8497
- _$insertNode(_el$280, _el$286);
8498
- _$insertNode(_el$280, _el$287);
8499
- _$insertNode(_el$280, _el$289);
8500
- _$insertNode(_el$280, _el$290);
8501
- _$setProp(_el$280, "wrapMode", "none");
8502
- _$setProp(_el$280, "truncate", true);
8503
- _$insert(_el$281, (() => {
8583
+ var _el$282 = _$createElement("box"), _el$283 = _$createElement("text"), _el$284 = _$createElement("span"), _el$285 = _$createElement("span"), _el$287 = _$createElement("span"), _el$289 = _$createElement("span"), _el$290 = _$createElement("span"), _el$292 = _$createElement("span"), _el$293 = _$createElement("span"), _el$294 = _$createTextNode(` \u2502 `);
8584
+ _$insertNode(_el$282, _el$283);
8585
+ _$setProp(_el$282, "flexDirection", "row");
8586
+ _$setProp(_el$282, "paddingLeft", 1);
8587
+ _$setProp(_el$282, "paddingRight", 1);
8588
+ _$insertNode(_el$283, _el$284);
8589
+ _$insertNode(_el$283, _el$285);
8590
+ _$insertNode(_el$283, _el$287);
8591
+ _$insertNode(_el$283, _el$289);
8592
+ _$insertNode(_el$283, _el$290);
8593
+ _$insertNode(_el$283, _el$292);
8594
+ _$insertNode(_el$283, _el$293);
8595
+ _$setProp(_el$283, "wrapMode", "none");
8596
+ _$setProp(_el$283, "truncate", true);
8597
+ _$insert(_el$284, (() => {
8504
8598
  var _c$23 = _$memo(() => !!isActive());
8505
8599
  return () => _c$23() ? `\u25B6 ${commandStatusIcon(cmd.status)} ${cmd.title}` : ` ${commandStatusIcon(cmd.status)} ${cmd.title}`;
8506
8600
  })());
8507
- _$insertNode(_el$282, _$createTextNode(` \u2502 `));
8508
- _$insertNode(_el$284, _$createTextNode(`Cmd `));
8509
- _$insert(_el$286, () => commandStatusLabel(cmd.status).short);
8510
- _$insertNode(_el$287, _$createTextNode(` \u2502 `));
8511
- _$insert(_el$289, () => cmd.command);
8512
- _$insert(_el$280, (() => {
8601
+ _$insertNode(_el$285, _$createTextNode(` \u2502 `));
8602
+ _$insertNode(_el$287, _$createTextNode(`Cmd `));
8603
+ _$insert(_el$289, () => commandStatusLabel(cmd.status).short);
8604
+ _$insertNode(_el$290, _$createTextNode(` \u2502 `));
8605
+ _$insert(_el$292, () => cmd.command);
8606
+ _$insert(_el$283, (() => {
8513
8607
  var _c$24 = _$memo(() => cmd.args.length > 0);
8514
8608
  return () => _c$24() && (() => {
8515
- var _el$292 = _$createElement("span"), _el$293 = _$createTextNode(` `);
8516
- _$insertNode(_el$292, _el$293);
8517
- _$insert(_el$292, () => cmd.args.join(" ").slice(0, 40), null);
8518
- _$effect((_$p) => _$setProp(_el$292, "style", {
8609
+ var _el$295 = _$createElement("span"), _el$296 = _$createTextNode(` `);
8610
+ _$insertNode(_el$295, _el$296);
8611
+ _$insert(_el$295, () => cmd.args.join(" ").slice(0, 40), null);
8612
+ _$effect((_$p) => _$setProp(_el$295, "style", {
8519
8613
  fg: theme().textMuted
8520
8614
  }, _$p));
8521
- return _el$292;
8615
+ return _el$295;
8522
8616
  })();
8523
- })(), _el$290);
8524
- _$insert(_el$280, (() => {
8617
+ })(), _el$293);
8618
+ _$insert(_el$283, (() => {
8525
8619
  var _c$25 = _$memo(() => cmd.exitCode !== undefined);
8526
8620
  return () => _c$25() && (() => {
8527
- var _el$294 = _$createElement("span"), _el$295 = _$createTextNode(` \u2502 exit `);
8528
- _$insertNode(_el$294, _el$295);
8529
- _$insert(_el$294, () => cmd.exitCode, null);
8530
- _$effect((_$p) => _$setProp(_el$294, "style", {
8621
+ var _el$297 = _$createElement("span"), _el$298 = _$createTextNode(` \u2502 exit `);
8622
+ _$insertNode(_el$297, _el$298);
8623
+ _$insert(_el$297, () => cmd.exitCode, null);
8624
+ _$effect((_$p) => _$setProp(_el$297, "style", {
8531
8625
  fg: cmd.exitCode === 0 ? theme().success : theme().error
8532
8626
  }, _$p));
8533
- return _el$294;
8627
+ return _el$297;
8534
8628
  })();
8535
- })(), _el$290);
8536
- _$insert(_el$280, (() => {
8629
+ })(), _el$293);
8630
+ _$insert(_el$283, (() => {
8537
8631
  var _c$26 = _$memo(() => !!cmd.signal);
8538
8632
  return () => _c$26() && (() => {
8539
- var _el$296 = _$createElement("span"), _el$297 = _$createTextNode(` \u2502 `);
8540
- _$insertNode(_el$296, _el$297);
8541
- _$insert(_el$296, () => cmd.signal, null);
8542
- _$effect((_$p) => _$setProp(_el$296, "style", {
8633
+ var _el$299 = _$createElement("span"), _el$300 = _$createTextNode(` \u2502 `);
8634
+ _$insertNode(_el$299, _el$300);
8635
+ _$insert(_el$299, () => cmd.signal, null);
8636
+ _$effect((_$p) => _$setProp(_el$299, "style", {
8543
8637
  fg: theme().warning
8544
8638
  }, _$p));
8545
- return _el$296;
8639
+ return _el$299;
8546
8640
  })();
8547
- })(), _el$290);
8548
- _$insertNode(_el$290, _el$291);
8549
- _$insert(_el$290, () => ageLabel(cmd.updatedAt, clock()), null);
8550
- _$insert(_el$280, (() => {
8641
+ })(), _el$293);
8642
+ _$insertNode(_el$293, _el$294);
8643
+ _$insert(_el$293, () => ageLabel(cmd.updatedAt, clock()), null);
8644
+ _$insert(_el$283, (() => {
8551
8645
  var _c$27 = _$memo(() => !!cmd.truncated);
8552
8646
  return () => _c$27() && (() => {
8553
- var _el$298 = _$createElement("span");
8554
- _$insertNode(_el$298, _$createTextNode(` \u2502 \u26A0 truncated`));
8555
- _$effect((_$p) => _$setProp(_el$298, "style", {
8647
+ var _el$301 = _$createElement("span");
8648
+ _$insertNode(_el$301, _$createTextNode(` \u2502 \u26A0 truncated`));
8649
+ _$effect((_$p) => _$setProp(_el$301, "style", {
8556
8650
  fg: theme().warning,
8557
8651
  bold: true
8558
8652
  }, _$p));
8559
- return _el$298;
8653
+ return _el$301;
8560
8654
  })();
8561
8655
  })(), null);
8562
8656
  _$effect((_p$) => {
8563
- var _v$57 = isActive() ? theme().backgroundElement : undefined, _v$58 = {
8657
+ var _v$59 = isActive() ? theme().backgroundElement : undefined, _v$60 = {
8564
8658
  fg: commandStatusColor(cmd.status, theme()),
8565
8659
  bold: isActive()
8566
- }, _v$59 = {
8660
+ }, _v$61 = {
8567
8661
  fg: theme().textMuted
8568
- }, _v$60 = {
8662
+ }, _v$62 = {
8569
8663
  fg: theme().textMuted
8570
- }, _v$61 = {
8664
+ }, _v$63 = {
8571
8665
  fg: commandStatusColor(cmd.status, theme()),
8572
8666
  bold: true
8573
- }, _v$62 = {
8667
+ }, _v$64 = {
8574
8668
  fg: theme().textMuted
8575
- }, _v$63 = {
8669
+ }, _v$65 = {
8576
8670
  fg: theme().accent,
8577
8671
  bold: true
8578
- }, _v$64 = {
8672
+ }, _v$66 = {
8579
8673
  fg: theme().textMuted
8580
8674
  };
8581
- _v$57 !== _p$.e && (_p$.e = _$setProp(_el$279, "backgroundColor", _v$57, _p$.e));
8582
- _v$58 !== _p$.t && (_p$.t = _$setProp(_el$281, "style", _v$58, _p$.t));
8583
- _v$59 !== _p$.a && (_p$.a = _$setProp(_el$282, "style", _v$59, _p$.a));
8584
- _v$60 !== _p$.o && (_p$.o = _$setProp(_el$284, "style", _v$60, _p$.o));
8585
- _v$61 !== _p$.i && (_p$.i = _$setProp(_el$286, "style", _v$61, _p$.i));
8586
- _v$62 !== _p$.n && (_p$.n = _$setProp(_el$287, "style", _v$62, _p$.n));
8587
- _v$63 !== _p$.s && (_p$.s = _$setProp(_el$289, "style", _v$63, _p$.s));
8588
- _v$64 !== _p$.h && (_p$.h = _$setProp(_el$290, "style", _v$64, _p$.h));
8675
+ _v$59 !== _p$.e && (_p$.e = _$setProp(_el$282, "backgroundColor", _v$59, _p$.e));
8676
+ _v$60 !== _p$.t && (_p$.t = _$setProp(_el$284, "style", _v$60, _p$.t));
8677
+ _v$61 !== _p$.a && (_p$.a = _$setProp(_el$285, "style", _v$61, _p$.a));
8678
+ _v$62 !== _p$.o && (_p$.o = _$setProp(_el$287, "style", _v$62, _p$.o));
8679
+ _v$63 !== _p$.i && (_p$.i = _$setProp(_el$289, "style", _v$63, _p$.i));
8680
+ _v$64 !== _p$.n && (_p$.n = _$setProp(_el$290, "style", _v$64, _p$.n));
8681
+ _v$65 !== _p$.s && (_p$.s = _$setProp(_el$292, "style", _v$65, _p$.s));
8682
+ _v$66 !== _p$.h && (_p$.h = _$setProp(_el$293, "style", _v$66, _p$.h));
8589
8683
  return _p$;
8590
8684
  }, {
8591
8685
  e: undefined,
@@ -8597,175 +8691,175 @@ function LoopDashboard(props) {
8597
8691
  s: undefined,
8598
8692
  h: undefined
8599
8693
  });
8600
- return _el$279;
8694
+ return _el$282;
8601
8695
  })();
8602
8696
  }
8603
8697
  }));
8604
- _$effect((_$p) => _$setProp(_el$45, "height", Math.min(ownerCommands().length, 10), _$p));
8605
- return _el$45;
8698
+ _$effect((_$p) => _$setProp(_el$44, "height", Math.min(ownerCommands().length, 10), _$p));
8699
+ return _el$44;
8606
8700
  }
8607
8701
  }), _$createComponent(Show, {
8608
8702
  get when() {
8609
8703
  return selectedCommand();
8610
8704
  },
8611
8705
  children: (cmd) => (() => {
8612
- var _el$300 = _$createElement("box"), _el$301 = _$createElement("text"), _el$302 = _$createElement("span"), _el$303 = _$createTextNode(` `), _el$304 = _$createElement("span"), _el$306 = _$createElement("span"), _el$307 = _$createTextNode(` \u2014 `), _el$308 = _$createTextNode(`
8613
- `), _el$309 = _$createElement("span"), _el$311 = _$createElement("span"), _el$312 = _$createTextNode(`
8614
- `), _el$313 = _$createElement("span"), _el$315 = _$createElement("span"), _el$317 = _$createElement("span"), _el$318 = _$createTextNode(`
8615
- `), _el$319 = _$createElement("span"), _el$321 = _$createElement("span"), _el$323 = _$createElement("span"), _el$324 = _$createTextNode(` bytes`), _el$325 = _$createElement("span"), _el$326 = _$createTextNode(` \u2502 updated `), _el$327 = _$createTextNode(`
8616
- `), _el$328 = _$createElement("span");
8617
- _$insertNode(_el$300, _el$301);
8618
- _$setProp(_el$300, "flexDirection", "column");
8619
- _$setProp(_el$300, "border", true);
8620
- _$setProp(_el$300, "padding", 1);
8621
- _$setProp(_el$300, "flexShrink", 0);
8622
- _$setProp(_el$300, "maxHeight", 8);
8623
- _$insertNode(_el$301, _el$302);
8624
- _$insertNode(_el$301, _el$304);
8625
- _$insertNode(_el$301, _el$306);
8626
- _$insertNode(_el$301, _el$308);
8627
- _$insertNode(_el$301, _el$309);
8628
- _$insertNode(_el$301, _el$311);
8629
- _$insertNode(_el$301, _el$312);
8630
- _$insertNode(_el$301, _el$313);
8631
- _$insertNode(_el$301, _el$315);
8632
- _$insertNode(_el$301, _el$317);
8633
- _$insertNode(_el$301, _el$318);
8634
- _$insertNode(_el$301, _el$319);
8635
- _$insertNode(_el$301, _el$321);
8636
- _$insertNode(_el$301, _el$323);
8637
- _$insertNode(_el$301, _el$325);
8638
- _$insertNode(_el$301, _el$327);
8639
- _$insertNode(_el$301, _el$328);
8640
- _$insertNode(_el$302, _el$303);
8641
- _$insert(_el$302, () => commandStatusIcon(cmd().status), _el$303);
8642
- _$insert(_el$302, () => cmd().title, null);
8643
- _$insertNode(_el$304, _$createTextNode(` Cmd `));
8644
- _$insertNode(_el$306, _el$307);
8645
- _$insert(_el$306, () => commandStatusLabel(cmd().status).short, _el$307);
8646
- _$insert(_el$306, () => commandStatusLabel(cmd().status).hint, null);
8647
- _$insertNode(_el$309, _$createTextNode(`\u2B22 Spawn: `));
8648
- _$insert(_el$311, () => cmd().command);
8649
- _$insert(_el$301, (() => {
8706
+ var _el$303 = _$createElement("box"), _el$304 = _$createElement("text"), _el$305 = _$createElement("span"), _el$306 = _$createTextNode(` `), _el$307 = _$createElement("span"), _el$309 = _$createElement("span"), _el$310 = _$createTextNode(` \u2014 `), _el$311 = _$createTextNode(`
8707
+ `), _el$312 = _$createElement("span"), _el$314 = _$createElement("span"), _el$315 = _$createTextNode(`
8708
+ `), _el$316 = _$createElement("span"), _el$318 = _$createElement("span"), _el$320 = _$createElement("span"), _el$321 = _$createTextNode(`
8709
+ `), _el$322 = _$createElement("span"), _el$324 = _$createElement("span"), _el$326 = _$createElement("span"), _el$327 = _$createTextNode(` bytes`), _el$328 = _$createElement("span"), _el$329 = _$createTextNode(` \u2502 updated `), _el$330 = _$createTextNode(`
8710
+ `), _el$331 = _$createElement("span");
8711
+ _$insertNode(_el$303, _el$304);
8712
+ _$setProp(_el$303, "flexDirection", "column");
8713
+ _$setProp(_el$303, "border", true);
8714
+ _$setProp(_el$303, "padding", 1);
8715
+ _$setProp(_el$303, "flexShrink", 0);
8716
+ _$setProp(_el$303, "maxHeight", 8);
8717
+ _$insertNode(_el$304, _el$305);
8718
+ _$insertNode(_el$304, _el$307);
8719
+ _$insertNode(_el$304, _el$309);
8720
+ _$insertNode(_el$304, _el$311);
8721
+ _$insertNode(_el$304, _el$312);
8722
+ _$insertNode(_el$304, _el$314);
8723
+ _$insertNode(_el$304, _el$315);
8724
+ _$insertNode(_el$304, _el$316);
8725
+ _$insertNode(_el$304, _el$318);
8726
+ _$insertNode(_el$304, _el$320);
8727
+ _$insertNode(_el$304, _el$321);
8728
+ _$insertNode(_el$304, _el$322);
8729
+ _$insertNode(_el$304, _el$324);
8730
+ _$insertNode(_el$304, _el$326);
8731
+ _$insertNode(_el$304, _el$328);
8732
+ _$insertNode(_el$304, _el$330);
8733
+ _$insertNode(_el$304, _el$331);
8734
+ _$insertNode(_el$305, _el$306);
8735
+ _$insert(_el$305, () => commandStatusIcon(cmd().status), _el$306);
8736
+ _$insert(_el$305, () => cmd().title, null);
8737
+ _$insertNode(_el$307, _$createTextNode(` Cmd `));
8738
+ _$insertNode(_el$309, _el$310);
8739
+ _$insert(_el$309, () => commandStatusLabel(cmd().status).short, _el$310);
8740
+ _$insert(_el$309, () => commandStatusLabel(cmd().status).hint, null);
8741
+ _$insertNode(_el$312, _$createTextNode(`\u2B22 Spawn: `));
8742
+ _$insert(_el$314, () => cmd().command);
8743
+ _$insert(_el$304, (() => {
8650
8744
  var _c$28 = _$memo(() => cmd().args.length > 0);
8651
8745
  return () => _c$28() && (() => {
8652
- var _el$330 = _$createElement("span"), _el$331 = _$createTextNode(` `);
8653
- _$insertNode(_el$330, _el$331);
8654
- _$insert(_el$330, () => cmd().args.join(" "), null);
8655
- _$effect((_$p) => _$setProp(_el$330, "style", {
8746
+ var _el$333 = _$createElement("span"), _el$334 = _$createTextNode(` `);
8747
+ _$insertNode(_el$333, _el$334);
8748
+ _$insert(_el$333, () => cmd().args.join(" "), null);
8749
+ _$effect((_$p) => _$setProp(_el$333, "style", {
8656
8750
  fg: theme().text
8657
8751
  }, _$p));
8658
- return _el$330;
8752
+ return _el$333;
8659
8753
  })();
8660
- })(), _el$312);
8661
- _$insertNode(_el$313, _$createTextNode(`\uD83D\uDCC1 `));
8662
- _$insertNode(_el$315, _$createTextNode(`Cwd: `));
8663
- _$insert(_el$317, () => cmd().cwd.replace(String(props.directory), "."));
8664
- _$insert(_el$301, (() => {
8754
+ })(), _el$315);
8755
+ _$insertNode(_el$316, _$createTextNode(`\uD83D\uDCC1 `));
8756
+ _$insertNode(_el$318, _$createTextNode(`Cwd: `));
8757
+ _$insert(_el$320, () => cmd().cwd.replace(String(props.directory), "."));
8758
+ _$insert(_el$304, (() => {
8665
8759
  var _c$29 = _$memo(() => !!cmd().goalID);
8666
8760
  return () => _c$29() && [(() => {
8667
- var _el$332 = _$createElement("span");
8668
- _$insertNode(_el$332, _$createTextNode(` \u2502 \uD83D\uDD17 linked goal `));
8669
- _$effect((_$p) => _$setProp(_el$332, "style", {
8761
+ var _el$335 = _$createElement("span");
8762
+ _$insertNode(_el$335, _$createTextNode(` \u2502 \uD83D\uDD17 linked goal `));
8763
+ _$effect((_$p) => _$setProp(_el$335, "style", {
8670
8764
  fg: theme().textMuted
8671
8765
  }, _$p));
8672
- return _el$332;
8766
+ return _el$335;
8673
8767
  })(), (() => {
8674
- var _el$334 = _$createElement("span");
8675
- _$insert(_el$334, () => cmd().goalID.slice(0, 8));
8676
- _$effect((_$p) => _$setProp(_el$334, "style", {
8768
+ var _el$337 = _$createElement("span");
8769
+ _$insert(_el$337, () => cmd().goalID.slice(0, 8));
8770
+ _$effect((_$p) => _$setProp(_el$337, "style", {
8677
8771
  fg: theme().text
8678
8772
  }, _$p));
8679
- return _el$334;
8773
+ return _el$337;
8680
8774
  })()];
8681
- })(), _el$318);
8682
- _$insertNode(_el$319, _$createTextNode(`\uD83D\uDCBE `));
8683
- _$insertNode(_el$321, _$createTextNode(`Output: `));
8684
- _$insertNode(_el$323, _el$324);
8685
- _$insert(_el$323, () => cmd().outputBytes, _el$324);
8686
- _$insert(_el$301, (() => {
8775
+ })(), _el$321);
8776
+ _$insertNode(_el$322, _$createTextNode(`\uD83D\uDCBE `));
8777
+ _$insertNode(_el$324, _$createTextNode(`Output: `));
8778
+ _$insertNode(_el$326, _el$327);
8779
+ _$insert(_el$326, () => cmd().outputBytes, _el$327);
8780
+ _$insert(_el$304, (() => {
8687
8781
  var _c$30 = _$memo(() => !!cmd().truncated);
8688
8782
  return () => _c$30() && (() => {
8689
- var _el$335 = _$createElement("span");
8690
- _$insertNode(_el$335, _$createTextNode(` \xB7 \u26A0 truncated`));
8691
- _$effect((_$p) => _$setProp(_el$335, "style", {
8783
+ var _el$338 = _$createElement("span");
8784
+ _$insertNode(_el$338, _$createTextNode(` \xB7 \u26A0 truncated`));
8785
+ _$effect((_$p) => _$setProp(_el$338, "style", {
8692
8786
  fg: theme().warning,
8693
8787
  bold: true
8694
8788
  }, _$p));
8695
- return _el$335;
8789
+ return _el$338;
8696
8790
  })();
8697
- })(), _el$325);
8698
- _$insertNode(_el$325, _el$326);
8699
- _$insert(_el$325, () => ageLabel(cmd().updatedAt, clock()), null);
8700
- _$insert(_el$301, (() => {
8791
+ })(), _el$328);
8792
+ _$insertNode(_el$328, _el$329);
8793
+ _$insert(_el$328, () => ageLabel(cmd().updatedAt, clock()), null);
8794
+ _$insert(_el$304, (() => {
8701
8795
  var _c$31 = _$memo(() => !!cmd().lastError);
8702
8796
  return () => _c$31() && [(() => {
8703
- var _el$337 = _$createElement("span"), _el$338 = _$createTextNode(`
8797
+ var _el$340 = _$createElement("span"), _el$341 = _$createTextNode(`
8704
8798
  \u26A0 Error: `);
8705
- _$insertNode(_el$337, _el$338);
8706
- _$effect((_$p) => _$setProp(_el$337, "style", {
8799
+ _$insertNode(_el$340, _el$341);
8800
+ _$effect((_$p) => _$setProp(_el$340, "style", {
8707
8801
  fg: theme().error,
8708
8802
  bold: true
8709
8803
  }, _$p));
8710
- return _el$337;
8804
+ return _el$340;
8711
8805
  })(), (() => {
8712
- var _el$340 = _$createElement("span");
8713
- _$insert(_el$340, () => cmd().lastError.slice(0, 120));
8714
- _$effect((_$p) => _$setProp(_el$340, "style", {
8806
+ var _el$343 = _$createElement("span");
8807
+ _$insert(_el$343, () => cmd().lastError.slice(0, 120));
8808
+ _$effect((_$p) => _$setProp(_el$343, "style", {
8715
8809
  fg: theme().error
8716
8810
  }, _$p));
8717
- return _el$340;
8811
+ return _el$343;
8718
8812
  })()];
8719
- })(), _el$327);
8720
- _$insertNode(_el$328, _$createTextNode(`o fullscreen \xB7 :interrupt :terminate :remove \xB7 text + Enter writes stdin`));
8813
+ })(), _el$330);
8814
+ _$insertNode(_el$331, _$createTextNode(`o fullscreen \xB7 X kill \xB7 R restart \xB7 x remove-done \xB7 :interrupt :terminate :remove \xB7 text + Enter writes stdin`));
8721
8815
  _$effect((_p$) => {
8722
- var _v$65 = commandBorderColor(cmd().status, theme()), _v$66 = {
8816
+ var _v$67 = commandBorderColor(cmd().status, theme()), _v$68 = {
8723
8817
  fg: commandStatusColor(cmd().status, theme()),
8724
8818
  bold: true
8725
- }, _v$67 = {
8819
+ }, _v$69 = {
8726
8820
  fg: theme().textMuted
8727
- }, _v$68 = {
8821
+ }, _v$70 = {
8728
8822
  fg: commandStatusColor(cmd().status, theme())
8729
- }, _v$69 = {
8823
+ }, _v$71 = {
8730
8824
  fg: theme().primary,
8731
8825
  bold: true
8732
- }, _v$70 = {
8733
- fg: theme().accent,
8734
- bold: true
8735
- }, _v$71 = {
8736
- fg: theme().textMuted
8737
8826
  }, _v$72 = {
8738
8827
  fg: theme().accent,
8739
8828
  bold: true
8740
8829
  }, _v$73 = {
8741
8830
  fg: theme().textMuted
8742
8831
  }, _v$74 = {
8743
- fg: theme().warning,
8832
+ fg: theme().accent,
8744
8833
  bold: true
8745
8834
  }, _v$75 = {
8835
+ fg: theme().textMuted
8836
+ }, _v$76 = {
8746
8837
  fg: theme().warning,
8747
8838
  bold: true
8748
- }, _v$76 = {
8749
- fg: theme().text
8750
8839
  }, _v$77 = {
8751
- fg: theme().textMuted
8840
+ fg: theme().warning,
8841
+ bold: true
8752
8842
  }, _v$78 = {
8843
+ fg: theme().text
8844
+ }, _v$79 = {
8845
+ fg: theme().textMuted
8846
+ }, _v$80 = {
8753
8847
  fg: theme().textMuted
8754
8848
  };
8755
- _v$65 !== _p$.e && (_p$.e = _$setProp(_el$300, "borderColor", _v$65, _p$.e));
8756
- _v$66 !== _p$.t && (_p$.t = _$setProp(_el$302, "style", _v$66, _p$.t));
8757
- _v$67 !== _p$.a && (_p$.a = _$setProp(_el$304, "style", _v$67, _p$.a));
8758
- _v$68 !== _p$.o && (_p$.o = _$setProp(_el$306, "style", _v$68, _p$.o));
8759
- _v$69 !== _p$.i && (_p$.i = _$setProp(_el$309, "style", _v$69, _p$.i));
8760
- _v$70 !== _p$.n && (_p$.n = _$setProp(_el$311, "style", _v$70, _p$.n));
8761
- _v$71 !== _p$.s && (_p$.s = _$setProp(_el$313, "style", _v$71, _p$.s));
8762
- _v$72 !== _p$.h && (_p$.h = _$setProp(_el$315, "style", _v$72, _p$.h));
8763
- _v$73 !== _p$.r && (_p$.r = _$setProp(_el$317, "style", _v$73, _p$.r));
8764
- _v$74 !== _p$.d && (_p$.d = _$setProp(_el$319, "style", _v$74, _p$.d));
8765
- _v$75 !== _p$.l && (_p$.l = _$setProp(_el$321, "style", _v$75, _p$.l));
8766
- _v$76 !== _p$.u && (_p$.u = _$setProp(_el$323, "style", _v$76, _p$.u));
8767
- _v$77 !== _p$.c && (_p$.c = _$setProp(_el$325, "style", _v$77, _p$.c));
8768
- _v$78 !== _p$.w && (_p$.w = _$setProp(_el$328, "style", _v$78, _p$.w));
8849
+ _v$67 !== _p$.e && (_p$.e = _$setProp(_el$303, "borderColor", _v$67, _p$.e));
8850
+ _v$68 !== _p$.t && (_p$.t = _$setProp(_el$305, "style", _v$68, _p$.t));
8851
+ _v$69 !== _p$.a && (_p$.a = _$setProp(_el$307, "style", _v$69, _p$.a));
8852
+ _v$70 !== _p$.o && (_p$.o = _$setProp(_el$309, "style", _v$70, _p$.o));
8853
+ _v$71 !== _p$.i && (_p$.i = _$setProp(_el$312, "style", _v$71, _p$.i));
8854
+ _v$72 !== _p$.n && (_p$.n = _$setProp(_el$314, "style", _v$72, _p$.n));
8855
+ _v$73 !== _p$.s && (_p$.s = _$setProp(_el$316, "style", _v$73, _p$.s));
8856
+ _v$74 !== _p$.h && (_p$.h = _$setProp(_el$318, "style", _v$74, _p$.h));
8857
+ _v$75 !== _p$.r && (_p$.r = _$setProp(_el$320, "style", _v$75, _p$.r));
8858
+ _v$76 !== _p$.d && (_p$.d = _$setProp(_el$322, "style", _v$76, _p$.d));
8859
+ _v$77 !== _p$.l && (_p$.l = _$setProp(_el$324, "style", _v$77, _p$.l));
8860
+ _v$78 !== _p$.u && (_p$.u = _$setProp(_el$326, "style", _v$78, _p$.u));
8861
+ _v$79 !== _p$.c && (_p$.c = _$setProp(_el$328, "style", _v$79, _p$.c));
8862
+ _v$80 !== _p$.w && (_p$.w = _$setProp(_el$331, "style", _v$80, _p$.w));
8769
8863
  return _p$;
8770
8864
  }, {
8771
8865
  e: undefined,
@@ -8783,7 +8877,7 @@ function LoopDashboard(props) {
8783
8877
  c: undefined,
8784
8878
  w: undefined
8785
8879
  });
8786
- return _el$300;
8880
+ return _el$303;
8787
8881
  })()
8788
8882
  })];
8789
8883
  }
@@ -8793,47 +8887,47 @@ function LoopDashboard(props) {
8793
8887
  return _$memo(() => !!showLogs())() && events().length > 0;
8794
8888
  },
8795
8889
  get children() {
8796
- var _el$46 = _$createElement("box"), _el$47 = _$createElement("text"), _el$48 = _$createElement("span"), _el$50 = _$createElement("span");
8890
+ var _el$45 = _$createElement("box"), _el$46 = _$createElement("text"), _el$47 = _$createElement("span"), _el$49 = _$createElement("span");
8891
+ _$insertNode(_el$45, _el$46);
8892
+ _$setProp(_el$45, "flexDirection", "column");
8893
+ _$setProp(_el$45, "border", true);
8894
+ _$setProp(_el$45, "padding", 1);
8895
+ _$setProp(_el$45, "maxHeight", 7);
8896
+ _$setProp(_el$45, "flexShrink", 0);
8897
+ _$setProp(_el$45, "overflow", "hidden");
8797
8898
  _$insertNode(_el$46, _el$47);
8798
- _$setProp(_el$46, "flexDirection", "column");
8799
- _$setProp(_el$46, "border", true);
8800
- _$setProp(_el$46, "padding", 1);
8801
- _$setProp(_el$46, "maxHeight", 7);
8802
- _$setProp(_el$46, "flexShrink", 0);
8803
- _$setProp(_el$46, "overflow", "hidden");
8804
- _$insertNode(_el$47, _el$48);
8805
- _$insertNode(_el$47, _el$50);
8806
- _$insertNode(_el$48, _$createTextNode(`\u25C8 Recent Events`));
8807
- _$insertNode(_el$50, _$createTextNode(` \u2014 :logs to hide`));
8808
- _$insert(_el$47, _$createComponent(For, {
8899
+ _$insertNode(_el$46, _el$49);
8900
+ _$insertNode(_el$47, _$createTextNode(`\u25C8 Recent Events`));
8901
+ _$insertNode(_el$49, _$createTextNode(` \u2014 :logs to hide`));
8902
+ _$insert(_el$46, _$createComponent(For, {
8809
8903
  get each() {
8810
8904
  return events().slice(-10);
8811
8905
  },
8812
8906
  children: (ev) => [`
8813
8907
  `, (() => {
8814
- var _el$341 = _$createElement("span");
8815
- _$insert(_el$341, () => String(ev.type));
8816
- _$effect((_$p) => _$setProp(_el$341, "style", {
8908
+ var _el$344 = _$createElement("span");
8909
+ _$insert(_el$344, () => String(ev.type));
8910
+ _$effect((_$p) => _$setProp(_el$344, "style", {
8817
8911
  fg: eventColor(String(ev.type), theme()),
8818
8912
  bold: true
8819
8913
  }, _$p));
8820
- return _el$341;
8914
+ return _el$344;
8821
8915
  })(), (() => {
8822
- var _el$342 = _$createElement("span"), _el$343 = _$createTextNode(` `);
8823
- _$insertNode(_el$342, _el$343);
8824
- _$insert(_el$342, () => ev.goalID?.slice(0, 8), null);
8825
- _$effect((_$p) => _$setProp(_el$342, "style", {
8916
+ var _el$345 = _$createElement("span"), _el$346 = _$createTextNode(` `);
8917
+ _$insertNode(_el$345, _el$346);
8918
+ _$insert(_el$345, () => ev.goalID?.slice(0, 8), null);
8919
+ _$effect((_$p) => _$setProp(_el$345, "style", {
8826
8920
  fg: theme().textMuted
8827
8921
  }, _$p));
8828
- return _el$342;
8922
+ return _el$345;
8829
8923
  })(), _$memo(() => _$memo(() => !!ev.summary)() && (() => {
8830
- var _el$344 = _$createElement("span"), _el$345 = _$createTextNode(` \u2014 `);
8831
- _$insertNode(_el$344, _el$345);
8832
- _$insert(_el$344, () => String(ev.summary).slice(0, 60), null);
8833
- _$effect((_$p) => _$setProp(_el$344, "style", {
8924
+ var _el$347 = _$createElement("span"), _el$348 = _$createTextNode(` \u2014 `);
8925
+ _$insertNode(_el$347, _el$348);
8926
+ _$insert(_el$347, () => String(ev.summary).slice(0, 60), null);
8927
+ _$effect((_$p) => _$setProp(_el$347, "style", {
8834
8928
  fg: theme().text
8835
8929
  }, _$p));
8836
- return _el$344;
8930
+ return _el$347;
8837
8931
  })())]
8838
8932
  }), null);
8839
8933
  _$effect((_p$) => {
@@ -8843,42 +8937,42 @@ function LoopDashboard(props) {
8843
8937
  }, _v$3 = {
8844
8938
  fg: theme().textMuted
8845
8939
  };
8846
- _v$ !== _p$.e && (_p$.e = _$setProp(_el$46, "borderColor", _v$, _p$.e));
8847
- _v$2 !== _p$.t && (_p$.t = _$setProp(_el$48, "style", _v$2, _p$.t));
8848
- _v$3 !== _p$.a && (_p$.a = _$setProp(_el$50, "style", _v$3, _p$.a));
8940
+ _v$ !== _p$.e && (_p$.e = _$setProp(_el$45, "borderColor", _v$, _p$.e));
8941
+ _v$2 !== _p$.t && (_p$.t = _$setProp(_el$47, "style", _v$2, _p$.t));
8942
+ _v$3 !== _p$.a && (_p$.a = _$setProp(_el$49, "style", _v$3, _p$.a));
8849
8943
  return _p$;
8850
8944
  }, {
8851
8945
  e: undefined,
8852
8946
  t: undefined,
8853
8947
  a: undefined
8854
8948
  });
8855
- return _el$46;
8949
+ return _el$45;
8856
8950
  }
8857
8951
  }), null);
8952
+ _$insertNode(_el$51, _el$52);
8953
+ _$insertNode(_el$51, _el$54);
8954
+ _$setProp(_el$51, "flexDirection", "row");
8955
+ _$setProp(_el$51, "border", true);
8956
+ _$setProp(_el$51, "paddingLeft", 1);
8957
+ _$setProp(_el$51, "paddingRight", 1);
8958
+ _$setProp(_el$51, "flexShrink", 0);
8959
+ _$setProp(_el$51, "height", 3);
8960
+ _$setProp(_el$51, "gap", 1);
8858
8961
  _$insertNode(_el$52, _el$53);
8859
- _$insertNode(_el$52, _el$55);
8860
- _$setProp(_el$52, "flexDirection", "row");
8861
- _$setProp(_el$52, "border", true);
8862
- _$setProp(_el$52, "paddingLeft", 1);
8863
- _$setProp(_el$52, "paddingRight", 1);
8864
- _$setProp(_el$52, "flexShrink", 0);
8865
- _$setProp(_el$52, "height", 3);
8866
- _$setProp(_el$52, "gap", 1);
8867
- _$insertNode(_el$53, _el$54);
8868
- _$insert(_el$54, () => mode() === "insert" ? " INSERT \uE0B1" : " NORMAL ");
8962
+ _$insert(_el$53, () => mode() === "insert" ? " INSERT \uE0B1" : " NORMAL ");
8869
8963
  _$use((el) => {
8870
8964
  inputEl = el;
8871
8965
  focusInput();
8872
- }, _el$55);
8873
- _$setProp(_el$55, "flexGrow", 1);
8874
- _$setProp(_el$55, "onInput", (v) => {
8966
+ }, _el$54);
8967
+ _$setProp(_el$54, "flexGrow", 1);
8968
+ _$setProp(_el$54, "onInput", (v) => {
8875
8969
  debugLog("onInput", JSON.stringify(v), "mode", mode());
8876
8970
  if (mode() === "insert")
8877
8971
  setCommandInput(v);
8878
8972
  else if (inputEl?.value)
8879
8973
  inputEl.value = "";
8880
8974
  });
8881
- _$setProp(_el$55, "onKeyDown", (evt) => {
8975
+ _$setProp(_el$54, "onKeyDown", (evt) => {
8882
8976
  const name = evt.name || "";
8883
8977
  const seq = evt.sequence || "";
8884
8978
  debugLog("input onKeyDown", `name=${name} seq=${JSON.stringify(seq)} mode=${mode()} value=${JSON.stringify(commandInput())}`);
@@ -8951,13 +9045,13 @@ function LoopDashboard(props) {
8951
9045
  _v$16 !== _p$.m && (_p$.m = _$setProp(_el$29, "style", _v$16, _p$.m));
8952
9046
  _v$17 !== _p$.f && (_p$.f = _$setProp(_el$31, "style", _v$17, _p$.f));
8953
9047
  _v$18 !== _p$.y && (_p$.y = _$setProp(_el$33, "style", _v$18, _p$.y));
8954
- _v$19 !== _p$.g && (_p$.g = _$setProp(_el$52, "borderColor", _v$19, _p$.g));
8955
- _v$20 !== _p$.p && (_p$.p = _$setProp(_el$54, "style", _v$20, _p$.p));
8956
- _v$21 !== _p$.b && (_p$.b = _$setProp(_el$55, "placeholder", _v$21, _p$.b));
8957
- _v$22 !== _p$.T && (_p$.T = _$setProp(_el$55, "placeholderColor", _v$22, _p$.T));
8958
- _v$23 !== _p$.A && (_p$.A = _$setProp(_el$55, "cursorColor", _v$23, _p$.A));
8959
- _v$24 !== _p$.O && (_p$.O = _$setProp(_el$55, "focusedTextColor", _v$24, _p$.O));
8960
- _v$25 !== _p$.I && (_p$.I = _$setProp(_el$55, "focusedBackgroundColor", _v$25, _p$.I));
9048
+ _v$19 !== _p$.g && (_p$.g = _$setProp(_el$51, "borderColor", _v$19, _p$.g));
9049
+ _v$20 !== _p$.p && (_p$.p = _$setProp(_el$53, "style", _v$20, _p$.p));
9050
+ _v$21 !== _p$.b && (_p$.b = _$setProp(_el$54, "placeholder", _v$21, _p$.b));
9051
+ _v$22 !== _p$.T && (_p$.T = _$setProp(_el$54, "placeholderColor", _v$22, _p$.T));
9052
+ _v$23 !== _p$.A && (_p$.A = _$setProp(_el$54, "cursorColor", _v$23, _p$.A));
9053
+ _v$24 !== _p$.O && (_p$.O = _$setProp(_el$54, "focusedTextColor", _v$24, _p$.O));
9054
+ _v$25 !== _p$.I && (_p$.I = _$setProp(_el$54, "focusedBackgroundColor", _v$25, _p$.I));
8961
9055
  return _p$;
8962
9056
  }, {
8963
9057
  e: undefined,
@@ -9978,7 +10072,7 @@ function CommandPanel(props) {
9978
10072
  });
9979
10073
  const [insertMode, setInsertMode] = createSignal2(false);
9980
10074
  const [inputValue, setInputValue] = createSignal2("");
9981
- const [statusText, setStatusText] = createSignal2("commands: j/k move \xB7 o fullscreen \xB7 enter write-mode \xB7 ctrl-c interrupt \xB7 :terminate :remove :resize :await \xB7 q detach");
10075
+ const [statusText, setStatusText] = createSignal2("commands: j/k move \xB7 o fullscreen \xB7 enter write-mode \xB7 ctrl-c interrupt \xB7 X kill \xB7 R restart \xB7 x remove-done \xB7 :terminate :remove :resize :await \xB7 q detach");
9982
10076
  let inputEl;
9983
10077
  const client = createControlClient(props.directory);
9984
10078
  const ownerSessionID = props.ownerSessionID ?? routeOwnerSessionID(props.api);
@@ -10325,6 +10419,26 @@ function CommandPanel(props) {
10325
10419
  commandID: id
10326
10420
  }, id);
10327
10421
  }
10422
+ async function forceKill() {
10423
+ const id = selectedID();
10424
+ if (!id) {
10425
+ setStatusText("No command selected.");
10426
+ return;
10427
+ }
10428
+ await sendRaw("cmd_kill", {
10429
+ commandID: id
10430
+ }, id);
10431
+ }
10432
+ async function restart() {
10433
+ const id = selectedID();
10434
+ if (!id) {
10435
+ setStatusText("No command selected.");
10436
+ return;
10437
+ }
10438
+ await sendRaw("cmd_restart", {
10439
+ commandID: id
10440
+ }, id);
10441
+ }
10328
10442
  async function remove() {
10329
10443
  const id = selectedID();
10330
10444
  if (!id) {
@@ -10335,6 +10449,20 @@ function CommandPanel(props) {
10335
10449
  commandID: id
10336
10450
  }, id);
10337
10451
  }
10452
+ async function removeFinished() {
10453
+ const sel = state().selectedCommand;
10454
+ if (!sel) {
10455
+ setStatusText("No command selected.");
10456
+ return;
10457
+ }
10458
+ if (sel.status === "running") {
10459
+ setStatusText(`"${sel.title}" is still running \u2014 X force kill \xB7 :terminate graceful \xB7 q detach (keeps running).`);
10460
+ return;
10461
+ }
10462
+ await sendRaw("cmd_remove", {
10463
+ commandID: sel.id
10464
+ }, sel.id);
10465
+ }
10338
10466
  async function awaitExit(goalID) {
10339
10467
  const sel = state().selectedCommand;
10340
10468
  if (!sel) {
@@ -10406,6 +10534,12 @@ function CommandPanel(props) {
10406
10534
  case "terminate":
10407
10535
  await terminate();
10408
10536
  break;
10537
+ case "kill":
10538
+ await forceKill();
10539
+ break;
10540
+ case "restart":
10541
+ await restart();
10542
+ break;
10409
10543
  case "remove":
10410
10544
  await remove();
10411
10545
  break;
@@ -10429,7 +10563,7 @@ function CommandPanel(props) {
10429
10563
  await awaitExit(rest[0]);
10430
10564
  break;
10431
10565
  default:
10432
- setStatusText(`Unknown :${verb}. Try :new, :terminate, :remove, :interrupt, :resize, :open-cmd, :await <goalID>`);
10566
+ setStatusText(`Unknown :${verb}. Try :new, :terminate, :kill, :restart, :remove, :interrupt, :resize, :open-cmd, :await <goalID>`);
10433
10567
  }
10434
10568
  }
10435
10569
  function focusInput() {
@@ -10568,6 +10702,21 @@ function CommandPanel(props) {
10568
10702
  }
10569
10703
  return;
10570
10704
  }
10705
+ if (key === "X") {
10706
+ prevent2(evt);
10707
+ forceKill();
10708
+ return;
10709
+ }
10710
+ if (key === "R") {
10711
+ prevent2(evt);
10712
+ restart();
10713
+ return;
10714
+ }
10715
+ if (key === "x") {
10716
+ prevent2(evt);
10717
+ removeFinished();
10718
+ return;
10719
+ }
10571
10720
  if (key === "q") {
10572
10721
  prevent2(evt);
10573
10722
  if (props.onDetach)
@@ -10838,7 +10987,7 @@ function CommandPanel(props) {
10838
10987
  }, _v$5 = insertMode() ? theme().warning : theme().border, _v$6 = {
10839
10988
  fg: insertMode() ? theme().warning : theme().success,
10840
10989
  bold: true
10841
- }, _v$7 = insertMode() ? "type stdin, Enter sends (:new/:terminate/:remove/:interrupt/:resize/:open-cmd/:await)" : statusText() || "Press : to type, q to detach", _v$8 = theme().textMuted, _v$9 = theme().primary, _v$0 = theme().text, _v$1 = theme().background;
10990
+ }, _v$7 = insertMode() ? "type stdin, Enter sends (:new/:terminate/:kill/:restart/:remove/:interrupt/:resize/:open-cmd/:await)" : statusText() || "Press : to type, q to detach", _v$8 = theme().textMuted, _v$9 = theme().primary, _v$0 = theme().text, _v$1 = theme().background;
10842
10991
  _v$ !== _p$.e && (_p$.e = _$setProp2(_el$2, "borderColor", _v$, _p$.e));
10843
10992
  _v$2 !== _p$.t && (_p$.t = _$setProp2(_el$5, "style", _v$2, _p$.t));
10844
10993
  _v$3 !== _p$.a && (_p$.a = _$setProp2(_el$7, "style", _v$3, _p$.a));
@@ -11087,8 +11236,8 @@ function createTerminalSession(options) {
11087
11236
  }
11088
11237
  command = snap.command;
11089
11238
  connection = "stream";
11090
- connectionDetail = "live";
11091
11239
  live = snap.command.status === "running";
11240
+ connectionDetail = live ? "live" : "saved output (process ended)";
11092
11241
  applySnapshotBytes(snap.data, snap.startOffset, snap.endOffset);
11093
11242
  },
11094
11243
  onDelta: (delta) => {
@@ -11103,6 +11252,7 @@ function createTerminalSession(options) {
11103
11252
  return;
11104
11253
  command = cmd;
11105
11254
  live = cmd.status === "running";
11255
+ connectionDetail = live ? "live" : "saved output (process ended)";
11106
11256
  emitSoon();
11107
11257
  },
11108
11258
  onError: (message) => {
@@ -11136,6 +11286,8 @@ function createTerminalSession(options) {
11136
11286
  return;
11137
11287
  if (connection === "error")
11138
11288
  return;
11289
+ if (command && command.status !== "running")
11290
+ return;
11139
11291
  if (streamLive() && stream.sendInput(data.commandID, bytes).ok)
11140
11292
  return;
11141
11293
  control.executeRaw({ command: "cmd_write", goalID: data.commandID, args: { commandID: data.commandID, input: bytes, ownerSessionID: data.ownerSessionID } }).catch(() => {});
@@ -11150,6 +11302,8 @@ function createTerminalSession(options) {
11150
11302
  return;
11151
11303
  if (connection === "error")
11152
11304
  return;
11305
+ if (command && command.status !== "running")
11306
+ return;
11153
11307
  if (streamLive() && stream.sendInterrupt(data.commandID).ok)
11154
11308
  return;
11155
11309
  control.executeRaw({ command: "cmd_interrupt", goalID: data.commandID, args: { commandID: data.commandID, ownerSessionID: data.ownerSessionID } }).catch(() => {});
@@ -11588,12 +11742,16 @@ function TerminalView(props) {
11588
11742
  }
11589
11743
  if (isInterruptChord(toKeyEvent(evt))) {
11590
11744
  prevent3(evt);
11745
+ if (view()?.command && view()?.command?.status !== "running")
11746
+ return;
11591
11747
  session.interrupt();
11592
11748
  return;
11593
11749
  }
11594
11750
  const bytes = encodeTerminalKey(toKeyEvent(evt));
11595
11751
  if (bytes !== undefined) {
11596
11752
  prevent3(evt);
11753
+ if (view()?.command && view()?.command?.status !== "running")
11754
+ return;
11597
11755
  session.writeInput(bytes);
11598
11756
  }
11599
11757
  });
@@ -11605,6 +11763,7 @@ function TerminalView(props) {
11605
11763
  } catch {}
11606
11764
  });
11607
11765
  const cmd = () => view()?.command;
11766
+ const processRunning = () => cmd()?.status === "running" && view()?.live === true;
11608
11767
  const dims = () => {
11609
11768
  const v = view();
11610
11769
  if (!v)
@@ -11612,10 +11771,10 @@ function TerminalView(props) {
11612
11771
  return `${v.cols}x${v.viewportRows}`;
11613
11772
  };
11614
11773
  return (() => {
11615
- var _el$ = _$createElement3("box"), _el$2 = _$createElement3("box"), _el$3 = _$createElement3("text"), _el$4 = _$createElement3("span"), _el$5 = _$createTextNode3(`\u2B22 `), _el$9 = _$createElement3("span"), _el$1 = _$createElement3("span"), _el$12 = _$createElement3("text"), _el$13 = _$createElement3("span"), _el$21 = _$createElement3("box"), _el$22 = _$createElement3("box"), _el$23 = _$createElement3("text"), _el$24 = _$createElement3("span"), _el$26 = _$createElement3("span"), _el$28 = _$createElement3("span"), _el$30 = _$createElement3("span"), _el$32 = _$createElement3("span"), _el$34 = _$createElement3("text"), _el$35 = _$createElement3("span"), _el$36 = _$createTextNode3(` \xB7 `), _el$37 = _$createTextNode3(` bytes`);
11774
+ var _el$ = _$createElement3("box"), _el$2 = _$createElement3("box"), _el$3 = _$createElement3("text"), _el$4 = _$createElement3("span"), _el$5 = _$createTextNode3(`\u2B22 `), _el$9 = _$createElement3("span"), _el$1 = _$createElement3("span"), _el$12 = _$createElement3("text"), _el$13 = _$createElement3("span"), _el$26 = _$createElement3("box"), _el$27 = _$createElement3("box"), _el$28 = _$createElement3("text"), _el$29 = _$createElement3("span"), _el$30 = _$createElement3("span"), _el$32 = _$createElement3("span"), _el$34 = _$createElement3("span"), _el$36 = _$createElement3("span"), _el$38 = _$createElement3("text"), _el$39 = _$createElement3("span"), _el$40 = _$createTextNode3(` \xB7 `), _el$41 = _$createTextNode3(` bytes`);
11616
11775
  _$insertNode3(_el$, _el$2);
11617
- _$insertNode3(_el$, _el$21);
11618
- _$insertNode3(_el$, _el$22);
11776
+ _$insertNode3(_el$, _el$26);
11777
+ _$insertNode3(_el$, _el$27);
11619
11778
  _$setProp3(_el$, "flexDirection", "column");
11620
11779
  _$setProp3(_el$, "width", "100%");
11621
11780
  _$setProp3(_el$, "height", "100%");
@@ -11667,7 +11826,7 @@ function TerminalView(props) {
11667
11826
  }), null);
11668
11827
  _$insertNode3(_el$12, _el$13);
11669
11828
  _$insert3(_el$13, dims, null);
11670
- _$insert3(_el$13, () => view()?.live ? " \xB7 live" : "", null);
11829
+ _$insert3(_el$13, () => processRunning() ? " \xB7 live" : "", null);
11671
11830
  _$insert3(_el$, _$createComponent3(Show3, {
11672
11831
  get when() {
11673
11832
  return view()?.invalid;
@@ -11703,96 +11862,128 @@ Press Ctrl+] to go back. Nothing was subscribed or written.`);
11703
11862
  });
11704
11863
  return _el$14;
11705
11864
  }
11706
- }), _el$21);
11865
+ }), _el$26);
11866
+ _$insert3(_el$, _$createComponent3(Show3, {
11867
+ get when() {
11868
+ return _$memo3(() => !!cmd())() && !processRunning();
11869
+ },
11870
+ get children() {
11871
+ var _el$21 = _$createElement3("box"), _el$22 = _$createElement3("text"), _el$23 = _$createElement3("span"), _el$24 = _$createTextNode3(`PROCESS `), _el$25 = _$createTextNode3(` \u2014 saved output only. Ctrl+C/input cannot affect it; Ctrl+] returns to Commands.`);
11872
+ _$insertNode3(_el$21, _el$22);
11873
+ _$setProp3(_el$21, "border", true);
11874
+ _$setProp3(_el$21, "paddingLeft", 1);
11875
+ _$setProp3(_el$21, "paddingRight", 1);
11876
+ _$setProp3(_el$21, "flexShrink", 0);
11877
+ _$insertNode3(_el$22, _el$23);
11878
+ _$insertNode3(_el$23, _el$24);
11879
+ _$insertNode3(_el$23, _el$25);
11880
+ _$insert3(_el$23, () => cmd().status.toUpperCase(), _el$25);
11881
+ _$insert3(_el$23, (() => {
11882
+ var _c$2 = _$memo3(() => cmd().exitCode !== undefined);
11883
+ return () => _c$2() ? ` (exit ${cmd().exitCode})` : "";
11884
+ })(), _el$25);
11885
+ _$effect3((_p$) => {
11886
+ var _v$4 = theme().warning, _v$5 = {
11887
+ fg: theme().warning,
11888
+ bold: true
11889
+ };
11890
+ _v$4 !== _p$.e && (_p$.e = _$setProp3(_el$21, "borderColor", _v$4, _p$.e));
11891
+ _v$5 !== _p$.t && (_p$.t = _$setProp3(_el$23, "style", _v$5, _p$.t));
11892
+ return _p$;
11893
+ }, {
11894
+ e: undefined,
11895
+ t: undefined
11896
+ });
11897
+ return _el$21;
11898
+ }
11899
+ }), _el$26);
11707
11900
  _$use3((el) => {
11708
11901
  viewportEl = el;
11709
11902
  try {
11710
11903
  el.onSizeChange = () => measureViewport();
11711
11904
  } catch {}
11712
11905
  setTimeout(measureViewport, 50);
11713
- }, _el$21);
11714
- _$setProp3(_el$21, "flexDirection", "column");
11715
- _$setProp3(_el$21, "flexGrow", 1);
11716
- _$setProp3(_el$21, "minHeight", 0);
11717
- _$setProp3(_el$21, "overflow", "hidden");
11718
- _$insert3(_el$21, _$createComponent3(Show3, {
11906
+ }, _el$26);
11907
+ _$setProp3(_el$26, "flexDirection", "column");
11908
+ _$setProp3(_el$26, "flexGrow", 1);
11909
+ _$setProp3(_el$26, "minHeight", 0);
11910
+ _$setProp3(_el$26, "overflow", "hidden");
11911
+ _$insert3(_el$26, _$createComponent3(Show3, {
11719
11912
  get when() {
11720
11913
  return _$memo3(() => !!view())() && view().rows.length > 0;
11721
11914
  },
11722
11915
  get fallback() {
11723
11916
  return (() => {
11724
- var _el$38 = _$createElement3("text"), _el$39 = _$createElement3("span");
11725
- _$insertNode3(_el$38, _el$39);
11726
- _$insert3(_el$39, () => view()?.invalid ? "" : "(no output yet)");
11727
- _$effect3((_$p) => _$setProp3(_el$39, "style", {
11917
+ var _el$42 = _$createElement3("text"), _el$43 = _$createElement3("span");
11918
+ _$insertNode3(_el$42, _el$43);
11919
+ _$insert3(_el$43, () => view()?.invalid ? "" : "(no output yet)");
11920
+ _$effect3((_$p) => _$setProp3(_el$43, "style", {
11728
11921
  fg: theme().textMuted
11729
11922
  }, _$p));
11730
- return _el$38;
11923
+ return _el$42;
11731
11924
  })();
11732
11925
  },
11733
11926
  get children() {
11734
11927
  return _$createComponent3(For3, {
11735
11928
  get each() {
11736
- return buildTerminalRows(view().rows, view().cols, view().viewportRows, view().cursor);
11929
+ return buildTerminalRows(view().rows, view().cols, view().viewportRows, {
11930
+ ...view().cursor,
11931
+ visible: processRunning() && view().cursor.visible
11932
+ });
11737
11933
  },
11738
11934
  children: (runs) => (() => {
11739
- var _el$40 = _$createElement3("text");
11740
- _$setProp3(_el$40, "wrapMode", "none");
11741
- _$setProp3(_el$40, "truncate", true);
11742
- _$insert3(_el$40, _$createComponent3(For3, {
11935
+ var _el$44 = _$createElement3("text");
11936
+ _$setProp3(_el$44, "wrapMode", "none");
11937
+ _$setProp3(_el$44, "truncate", true);
11938
+ _$insert3(_el$44, _$createComponent3(For3, {
11743
11939
  each: runs,
11744
11940
  children: (run) => (() => {
11745
- var _el$41 = _$createElement3("span");
11746
- _$insert3(_el$41, () => run.text);
11747
- _$effect3((_$p) => _$setProp3(_el$41, "style", {
11941
+ var _el$45 = _$createElement3("span");
11942
+ _$insert3(_el$45, () => run.text);
11943
+ _$effect3((_$p) => _$setProp3(_el$45, "style", {
11748
11944
  fg: run.cursor ? theme().background : run.inverse ? run.fg ?? theme().background : run.fg ?? theme().text,
11749
11945
  bg: run.cursor ? theme().primary : run.inverse ? run.bg ?? theme().text : run.bg,
11750
11946
  bold: run.bold ?? run.cursor,
11751
11947
  underline: run.underline
11752
11948
  }, _$p));
11753
- return _el$41;
11949
+ return _el$45;
11754
11950
  })()
11755
11951
  }));
11756
- return _el$40;
11952
+ return _el$44;
11757
11953
  })()
11758
11954
  });
11759
11955
  }
11760
11956
  }));
11761
- _$insertNode3(_el$22, _el$23);
11762
- _$insertNode3(_el$22, _el$34);
11763
- _$setProp3(_el$22, "flexDirection", "row");
11764
- _$setProp3(_el$22, "justifyContent", "space-between");
11765
- _$setProp3(_el$22, "flexShrink", 0);
11766
- _$insertNode3(_el$23, _el$24);
11767
- _$insertNode3(_el$23, _el$26);
11768
- _$insertNode3(_el$23, _el$28);
11769
- _$insertNode3(_el$23, _el$30);
11770
- _$insertNode3(_el$23, _el$32);
11771
- _$insertNode3(_el$24, _$createTextNode3(`type to write \xB7 `));
11772
- _$insertNode3(_el$26, _$createTextNode3(`Ctrl+C`));
11773
- _$insertNode3(_el$28, _$createTextNode3(` interrupt \xB7 `));
11774
- _$insertNode3(_el$30, _$createTextNode3(`Ctrl+]`));
11775
- _$insertNode3(_el$32, _$createTextNode3(` detach (keeps running)`));
11776
- _$insertNode3(_el$34, _el$35);
11777
- _$insertNode3(_el$35, _el$36);
11778
- _$insertNode3(_el$35, _el$37);
11779
- _$insert3(_el$35, dims, _el$36);
11780
- _$insert3(_el$35, () => view()?.totalBytes ?? 0, _el$37);
11957
+ _$insertNode3(_el$27, _el$28);
11958
+ _$insertNode3(_el$27, _el$38);
11959
+ _$setProp3(_el$27, "flexDirection", "row");
11960
+ _$setProp3(_el$27, "justifyContent", "space-between");
11961
+ _$setProp3(_el$27, "flexShrink", 0);
11962
+ _$insertNode3(_el$28, _el$29);
11963
+ _$insertNode3(_el$28, _el$30);
11964
+ _$insertNode3(_el$28, _el$32);
11965
+ _$insertNode3(_el$28, _el$34);
11966
+ _$insertNode3(_el$28, _el$36);
11967
+ _$insert3(_el$29, () => processRunning() ? "type to write \xB7 " : "saved log \xB7 ");
11968
+ _$insertNode3(_el$30, _$createTextNode3(`Ctrl+C`));
11969
+ _$insertNode3(_el$32, _$createTextNode3(` interrupt \xB7 `));
11970
+ _$insertNode3(_el$34, _$createTextNode3(`Ctrl+]`));
11971
+ _$insertNode3(_el$36, _$createTextNode3(` detach (keeps running)`));
11972
+ _$insertNode3(_el$38, _el$39);
11973
+ _$insertNode3(_el$39, _el$40);
11974
+ _$insertNode3(_el$39, _el$41);
11975
+ _$insert3(_el$39, dims, _el$40);
11976
+ _$insert3(_el$39, () => view()?.totalBytes ?? 0, _el$41);
11781
11977
  _$effect3((_p$) => {
11782
- var _v$4 = {
11978
+ var _v$6 = {
11783
11979
  fg: theme().primary,
11784
11980
  bold: true
11785
- }, _v$5 = {
11786
- fg: theme().textMuted
11787
- }, _v$6 = {
11788
- fg: view()?.connection === "stream" ? theme().success : view()?.connection === "polling" ? theme().warning : theme().error
11789
11981
  }, _v$7 = {
11790
11982
  fg: theme().textMuted
11791
11983
  }, _v$8 = {
11792
- fg: theme().textMuted
11984
+ fg: cmd() && !processRunning() ? theme().warning : view()?.connection === "stream" ? theme().success : view()?.connection === "polling" ? theme().warning : theme().error
11793
11985
  }, _v$9 = {
11794
- fg: theme().warning,
11795
- bold: true
11986
+ fg: theme().textMuted
11796
11987
  }, _v$0 = {
11797
11988
  fg: theme().textMuted
11798
11989
  }, _v$1 = {
@@ -11801,18 +11992,23 @@ Press Ctrl+] to go back. Nothing was subscribed or written.`);
11801
11992
  }, _v$10 = {
11802
11993
  fg: theme().textMuted
11803
11994
  }, _v$11 = {
11995
+ fg: theme().warning,
11996
+ bold: true
11997
+ }, _v$12 = {
11998
+ fg: theme().textMuted
11999
+ }, _v$13 = {
11804
12000
  fg: theme().textMuted
11805
12001
  };
11806
- _v$4 !== _p$.e && (_p$.e = _$setProp3(_el$4, "style", _v$4, _p$.e));
11807
- _v$5 !== _p$.t && (_p$.t = _$setProp3(_el$9, "style", _v$5, _p$.t));
11808
- _v$6 !== _p$.a && (_p$.a = _$setProp3(_el$1, "style", _v$6, _p$.a));
11809
- _v$7 !== _p$.o && (_p$.o = _$setProp3(_el$13, "style", _v$7, _p$.o));
11810
- _v$8 !== _p$.i && (_p$.i = _$setProp3(_el$24, "style", _v$8, _p$.i));
11811
- _v$9 !== _p$.n && (_p$.n = _$setProp3(_el$26, "style", _v$9, _p$.n));
11812
- _v$0 !== _p$.s && (_p$.s = _$setProp3(_el$28, "style", _v$0, _p$.s));
11813
- _v$1 !== _p$.h && (_p$.h = _$setProp3(_el$30, "style", _v$1, _p$.h));
11814
- _v$10 !== _p$.r && (_p$.r = _$setProp3(_el$32, "style", _v$10, _p$.r));
11815
- _v$11 !== _p$.d && (_p$.d = _$setProp3(_el$35, "style", _v$11, _p$.d));
12002
+ _v$6 !== _p$.e && (_p$.e = _$setProp3(_el$4, "style", _v$6, _p$.e));
12003
+ _v$7 !== _p$.t && (_p$.t = _$setProp3(_el$9, "style", _v$7, _p$.t));
12004
+ _v$8 !== _p$.a && (_p$.a = _$setProp3(_el$1, "style", _v$8, _p$.a));
12005
+ _v$9 !== _p$.o && (_p$.o = _$setProp3(_el$13, "style", _v$9, _p$.o));
12006
+ _v$0 !== _p$.i && (_p$.i = _$setProp3(_el$29, "style", _v$0, _p$.i));
12007
+ _v$1 !== _p$.n && (_p$.n = _$setProp3(_el$30, "style", _v$1, _p$.n));
12008
+ _v$10 !== _p$.s && (_p$.s = _$setProp3(_el$32, "style", _v$10, _p$.s));
12009
+ _v$11 !== _p$.h && (_p$.h = _$setProp3(_el$34, "style", _v$11, _p$.h));
12010
+ _v$12 !== _p$.r && (_p$.r = _$setProp3(_el$36, "style", _v$12, _p$.r));
12011
+ _v$13 !== _p$.d && (_p$.d = _$setProp3(_el$39, "style", _v$13, _p$.d));
11816
12012
  return _p$;
11817
12013
  }, {
11818
12014
  e: undefined,