@bojackduy/opencode-loopd 1.10.4 → 1.11.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/tui.js CHANGED
@@ -6001,12 +6001,28 @@ function commandHelp() {
6001
6001
  " :pause / :resume / :retry / :clear Quick controls (also p/r/R/x)",
6002
6002
  " :abort Abort worker session now (status unchanged; A)",
6003
6003
  " :nudge Force re-prompt now with full steering (N)",
6004
+ " :interactive Toggle manual mode (engine never starts turns)",
6005
+ " :model <provider/model> Switch this goal's model (same worker; :models lists options)",
6004
6006
  " :bug / :report Open prefilled GitHub bug report",
6005
6007
  " :logs / :help / :q Toggle logs / help / close",
6006
6008
  " Tip: create goals via /goal in the parent chat (agent clarifies first)."
6007
6009
  ].join(`
6008
6010
  `);
6009
6011
  }
6012
+ function commandTabHelp() {
6013
+ return [
6014
+ "Nav: j/k select | o fullscreen | q close",
6015
+ "Commands tab (selected command only):",
6016
+ " c / Ctrl+C Toggle finished / send SIGINT",
6017
+ " :terminate Graceful stop (SIGTERM\u2192SIGKILL)",
6018
+ " X / :kill Force kill now (SIGKILL)",
6019
+ " R / :restart Restart; old log kept",
6020
+ " x / :remove Remove finished + log",
6021
+ " :new <cmd> [args] Start a command",
6022
+ " bare text + Enter Write stdin line"
6023
+ ].join(`
6024
+ `);
6025
+ }
6010
6026
 
6011
6027
  // src/tui/command-controller.ts
6012
6028
  function emptyCommandPanelState() {
@@ -6310,6 +6326,14 @@ function resolveOpenTarget(input) {
6310
6326
  };
6311
6327
  }
6312
6328
 
6329
+ // src/domain/command-await.ts
6330
+ var TERMINAL_COMMAND_STATUSES = [
6331
+ "exited",
6332
+ "terminated",
6333
+ "missing"
6334
+ ];
6335
+ var MAX_AWAIT_TAIL_BYTES = 4 * 1024;
6336
+
6313
6337
  // src/tui/dashboard-view.ts
6314
6338
  function toggleDashboardView(view) {
6315
6339
  return view === "goals" ? "commands" : "goals";
@@ -6362,8 +6386,12 @@ function resolveDashboardOpen(lists, sel, ownerSessionID, returnSessionID) {
6362
6386
  returnSessionID
6363
6387
  });
6364
6388
  }
6365
- function visibleOwnerCommands(commands, ownerSessionID) {
6366
- return filterCommandsByOwner(commands ?? [], ownerSessionID);
6389
+ function visibleOwnerCommands(commands, ownerSessionID, showCompleted = false) {
6390
+ const owned = filterCommandsByOwner(commands ?? [], ownerSessionID);
6391
+ if (showCompleted)
6392
+ return owned;
6393
+ const terminal = TERMINAL_COMMAND_STATUSES;
6394
+ return owned.filter((c) => !terminal.includes(c.status));
6367
6395
  }
6368
6396
 
6369
6397
  // src/tui/dashboard.tsx
@@ -6651,7 +6679,13 @@ function LoopDashboard(props) {
6651
6679
  const [tab, setTab] = createSignal(props.initialView ?? "goals");
6652
6680
  const [cmdSelected, setCmdSelected] = createSignal(0);
6653
6681
  const ownerSessionID = () => props.ownerSessionID ?? currentRouteSessionID(props.api);
6654
- const ownerCommands = () => visibleOwnerCommands(state()?.commands, ownerSessionID());
6682
+ const ownerCommands = () => visibleOwnerCommands(state()?.commands, ownerSessionID(), showCompleted());
6683
+ const hiddenFinishedCommands = () => {
6684
+ if (showCompleted())
6685
+ return 0;
6686
+ const terminal = ["exited", "terminated", "missing"];
6687
+ return (state()?.commands ?? []).filter((c) => c.ownerSessionID === ownerSessionID() && terminal.includes(c.status)).length;
6688
+ };
6655
6689
  const [state, setState] = createSignal(null);
6656
6690
  const [events, setEvents] = createSignal([]);
6657
6691
  const [selectedGoal, setSelectedGoal] = createSignal(null);
@@ -6683,7 +6717,7 @@ function LoopDashboard(props) {
6683
6717
  if (goals.length > 0 && selected() >= goals.length)
6684
6718
  setSelected(goals.length - 1);
6685
6719
  setSelectedGoal(goals[selected()] || null);
6686
- const cmds = visibleOwnerCommands(s.commands, ownerSessionID());
6720
+ const cmds = visibleOwnerCommands(s.commands, ownerSessionID(), showCompleted());
6687
6721
  if (cmds.length > 0 && cmdSelected() >= cmds.length)
6688
6722
  setCmdSelected(cmds.length - 1);
6689
6723
  setEvents(await client.getEvents(20));
@@ -6786,9 +6820,25 @@ function LoopDashboard(props) {
6786
6820
  return;
6787
6821
  }
6788
6822
  const key = raw || seq || name;
6823
+ if (tab() === "commands" && Boolean(evt.ctrl) && name === "c") {
6824
+ prevent(evt);
6825
+ const sel = selectedCommand();
6826
+ if (!sel) {
6827
+ setStatusText("No command selected.");
6828
+ return;
6829
+ }
6830
+ executeCommandRaw("cmd_interrupt", {
6831
+ commandID: sel.id
6832
+ }, sel.id);
6833
+ return;
6834
+ }
6789
6835
  if (key === "c") {
6790
6836
  prevent(evt);
6791
- setShowCompleted((v) => !v);
6837
+ setShowCompleted((v) => {
6838
+ const next = !v;
6839
+ setStatusText(next ? `Showing finished ${tab() === "commands" ? "commands" : "goals"}.` : `Hiding finished ${tab() === "commands" ? "commands" : "goals"}.`);
6840
+ return next;
6841
+ });
6792
6842
  debugLog("toggle completed");
6793
6843
  return;
6794
6844
  }
@@ -6839,7 +6889,22 @@ function LoopDashboard(props) {
6839
6889
  applyMove("last");
6840
6890
  return;
6841
6891
  }
6842
- const needsGoalsTab = ["p", "r", "R", "x", "A", "N"].includes(key);
6892
+ if (tab() === "commands" && key === "X") {
6893
+ prevent(evt);
6894
+ killSelectedCommand();
6895
+ return;
6896
+ }
6897
+ if (tab() === "commands" && key === "R") {
6898
+ prevent(evt);
6899
+ restartSelectedCommand();
6900
+ return;
6901
+ }
6902
+ if (tab() === "commands" && key === "x") {
6903
+ prevent(evt);
6904
+ removeFinishedSelected();
6905
+ return;
6906
+ }
6907
+ const needsGoalsTab = ["p", "r", "A", "N", "model", "models"].includes(key);
6843
6908
  if (needsGoalsTab && tab() !== "goals") {
6844
6909
  prevent(evt);
6845
6910
  setStatusText("Goal controls need the Goals tab (Tab to switch).");
@@ -6945,6 +7010,40 @@ function LoopDashboard(props) {
6945
7010
  function selectedCommand() {
6946
7011
  return ownerCommands()[cmdSelected()] ?? null;
6947
7012
  }
7013
+ async function killSelectedCommand() {
7014
+ const sel = selectedCommand();
7015
+ if (!sel) {
7016
+ setStatusText("No command selected.");
7017
+ return;
7018
+ }
7019
+ await executeCommandRaw("cmd_kill", {
7020
+ commandID: sel.id
7021
+ }, sel.id);
7022
+ }
7023
+ async function restartSelectedCommand() {
7024
+ const sel = selectedCommand();
7025
+ if (!sel) {
7026
+ setStatusText("No command selected.");
7027
+ return;
7028
+ }
7029
+ await executeCommandRaw("cmd_restart", {
7030
+ commandID: sel.id
7031
+ }, sel.id);
7032
+ }
7033
+ function removeFinishedSelected() {
7034
+ const sel = selectedCommand();
7035
+ if (!sel) {
7036
+ setStatusText("No command selected.");
7037
+ return;
7038
+ }
7039
+ if (sel.status === "running") {
7040
+ setStatusText(`"${sel.title}" is still running \u2014 X force kill \xB7 :terminate graceful \xB7 q detach (keeps running).`);
7041
+ return;
7042
+ }
7043
+ executeCommandRaw("cmd_remove", {
7044
+ commandID: sel.id
7045
+ }, sel.id);
7046
+ }
6948
7047
  async function executeCommandTabCommand(verb, positional, raw) {
6949
7048
  debugLog("commands-tab command", verb);
6950
7049
  switch (verb) {
@@ -6983,6 +7082,12 @@ function LoopDashboard(props) {
6983
7082
  commandID: selectedCommand().id
6984
7083
  }, selectedCommand().id);
6985
7084
  return;
7085
+ case "kill":
7086
+ await killSelectedCommand();
7087
+ return;
7088
+ case "restart":
7089
+ await restartSelectedCommand();
7090
+ return;
6986
7091
  case "remove":
6987
7092
  if (!selectedCommand()) {
6988
7093
  setStatusText("No command selected.");
@@ -7216,6 +7321,62 @@ function LoopDashboard(props) {
7216
7321
  await refresh();
7217
7322
  break;
7218
7323
  }
7324
+ case "interactive": {
7325
+ if (!selectedGoal()) {
7326
+ setStatusText("No goal");
7327
+ break;
7328
+ }
7329
+ const next = !(selectedGoal().interactive === true);
7330
+ const r = await client.execute({
7331
+ version: 1,
7332
+ requestID: randomUUID2(),
7333
+ requestedAt: new Date().toISOString(),
7334
+ command: "set_interactive",
7335
+ goalID: selectedGoal().id,
7336
+ args: {
7337
+ interactive: next
7338
+ }
7339
+ });
7340
+ setStatusText(r.ok ? r.message : `Error: ${r.message}`);
7341
+ if (r.ok)
7342
+ await refresh();
7343
+ break;
7344
+ }
7345
+ case "model": {
7346
+ if (!selectedGoal()) {
7347
+ setStatusText("No goal selected");
7348
+ break;
7349
+ }
7350
+ const target = parsed.positional.join(" ").trim();
7351
+ if (!target) {
7352
+ setStatusText("Usage: :model <provider/model> \u2014 e.g. :model openai/gpt-5.6-sol. :models lists what's available.");
7353
+ break;
7354
+ }
7355
+ const r = await client.execute({
7356
+ version: 1,
7357
+ requestID: randomUUID2(),
7358
+ requestedAt: new Date().toISOString(),
7359
+ command: "switch_goal_model",
7360
+ goalID: selectedGoal().id,
7361
+ args: {
7362
+ model: target
7363
+ }
7364
+ });
7365
+ setStatusText(r.ok ? r.message : `Error: ${r.message}`);
7366
+ if (r.ok)
7367
+ await refresh();
7368
+ break;
7369
+ }
7370
+ case "models": {
7371
+ const r = await client.execute({
7372
+ version: 1,
7373
+ requestID: randomUUID2(),
7374
+ requestedAt: new Date().toISOString(),
7375
+ command: "list_models"
7376
+ });
7377
+ setStatusText(r.ok ? r.message : `Error: ${r.message}`);
7378
+ break;
7379
+ }
7219
7380
  case "goal": {
7220
7381
  setStatusText("Create goals via /goal in the parent chat (agent clarifies first). Dashboard: :send to steer the worker.");
7221
7382
  break;
@@ -7288,7 +7449,7 @@ function LoopDashboard(props) {
7288
7449
  } catch {}
7289
7450
  });
7290
7451
  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");
7452
+ 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
7453
  _$insertNode(_el$, _el$2);
7293
7454
  _$setProp(_el$, "flexDirection", "column");
7294
7455
  _$setProp(_el$, "width", "100%");
@@ -7296,7 +7457,7 @@ function LoopDashboard(props) {
7296
7457
  _$setProp(_el$, "padding", 1);
7297
7458
  _$insertNode(_el$2, _el$3);
7298
7459
  _$insertNode(_el$2, _el$39);
7299
- _$insertNode(_el$2, _el$52);
7460
+ _$insertNode(_el$2, _el$51);
7300
7461
  _$setProp(_el$2, "flexDirection", "column");
7301
7462
  _$setProp(_el$2, "width", "90%");
7302
7463
  _$setProp(_el$2, "border", true);
@@ -7384,17 +7545,17 @@ function LoopDashboard(props) {
7384
7545
  _$setProp(_el$40, "border", true);
7385
7546
  _$setProp(_el$40, "borderColor", "yellow");
7386
7547
  _$setProp(_el$40, "flexShrink", 0);
7387
- _$setProp(_el$40, "maxHeight", 14);
7548
+ _$setProp(_el$40, "maxHeight", 17);
7388
7549
  _$setProp(_el$40, "overflow", "hidden");
7389
7550
  _$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
7551
  _$setProp(_el$42, "style", {
7392
7552
  fg: "yellow",
7393
7553
  bold: true
7394
7554
  });
7555
+ _$insert(_el$42, () => tab() === "commands" ? "\u2501\u2501\u2501 Commands: ? help : insert c toggle done 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
7556
  _$insert(_el$41, _$createComponent(For, {
7396
7557
  get each() {
7397
- return commandHelp().split(`
7558
+ return (tab() === "commands" ? commandTabHelp() : commandHelp()).split(`
7398
7559
  `);
7399
7560
  },
7400
7561
  children: (line) => {
@@ -7404,20 +7565,20 @@ function LoopDashboard(props) {
7404
7565
  const segments = rest.split(" | ");
7405
7566
  return [`
7406
7567
  `, (() => {
7407
- var _el$56 = _$createElement("span");
7408
- _$insert(_el$56, label);
7409
- _$effect((_$p) => _$setProp(_el$56, "style", {
7568
+ var _el$55 = _$createElement("span");
7569
+ _$insert(_el$55, label);
7570
+ _$effect((_$p) => _$setProp(_el$55, "style", {
7410
7571
  fg: theme().primary,
7411
7572
  bold: true
7412
7573
  }, _$p));
7413
- return _el$56;
7574
+ return _el$55;
7414
7575
  })(), (() => {
7415
- var _el$57 = _$createElement("span");
7416
- _$insertNode(_el$57, _$createTextNode(` `));
7417
- _$effect((_$p) => _$setProp(_el$57, "style", {
7576
+ var _el$56 = _$createElement("span");
7577
+ _$insertNode(_el$56, _$createTextNode(` `));
7578
+ _$effect((_$p) => _$setProp(_el$56, "style", {
7418
7579
  fg: theme().textMuted
7419
7580
  }, _$p));
7420
- return _el$57;
7581
+ return _el$56;
7421
7582
  })(), _$createComponent(For, {
7422
7583
  each: segments,
7423
7584
  children: (seg, idx) => {
@@ -7425,62 +7586,62 @@ function LoopDashboard(props) {
7425
7586
  if (hasArrow) {
7426
7587
  const [k, d] = seg.split("\u2192").map((s) => s.trim());
7427
7588
  return [_$memo(() => _$memo(() => idx() > 0)() && (() => {
7428
- var _el$63 = _$createElement("span");
7429
- _$insertNode(_el$63, _$createTextNode(` | `));
7430
- _$effect((_$p) => _$setProp(_el$63, "style", {
7589
+ var _el$62 = _$createElement("span");
7590
+ _$insertNode(_el$62, _$createTextNode(` | `));
7591
+ _$effect((_$p) => _$setProp(_el$62, "style", {
7431
7592
  fg: theme().textMuted
7432
7593
  }, _$p));
7433
- return _el$63;
7594
+ return _el$62;
7434
7595
  })()), (() => {
7435
- var _el$59 = _$createElement("span");
7436
- _$insert(_el$59, k);
7437
- _$effect((_$p) => _$setProp(_el$59, "style", {
7596
+ var _el$58 = _$createElement("span");
7597
+ _$insert(_el$58, k);
7598
+ _$effect((_$p) => _$setProp(_el$58, "style", {
7438
7599
  fg: theme().warning,
7439
7600
  bold: true
7440
7601
  }, _$p));
7441
- return _el$59;
7602
+ return _el$58;
7442
7603
  })(), (() => {
7443
- var _el$60 = _$createElement("span");
7444
- _$insertNode(_el$60, _$createTextNode(` \u2192 `));
7445
- _$effect((_$p) => _$setProp(_el$60, "style", {
7604
+ var _el$59 = _$createElement("span");
7605
+ _$insertNode(_el$59, _$createTextNode(` \u2192 `));
7606
+ _$effect((_$p) => _$setProp(_el$59, "style", {
7446
7607
  fg: theme().textMuted
7447
7608
  }, _$p));
7448
- return _el$60;
7609
+ return _el$59;
7449
7610
  })(), (() => {
7450
- var _el$62 = _$createElement("span");
7451
- _$insert(_el$62, d);
7452
- _$effect((_$p) => _$setProp(_el$62, "style", {
7611
+ var _el$61 = _$createElement("span");
7612
+ _$insert(_el$61, d);
7613
+ _$effect((_$p) => _$setProp(_el$61, "style", {
7453
7614
  fg: theme().text
7454
7615
  }, _$p));
7455
- return _el$62;
7616
+ return _el$61;
7456
7617
  })()];
7457
7618
  }
7458
7619
  const sp = seg.indexOf(" ");
7459
7620
  const k = sp > 0 ? seg.slice(0, sp) : seg;
7460
7621
  const d = sp > 0 ? seg.slice(sp + 1) : "";
7461
7622
  return [_$memo(() => _$memo(() => idx() > 0)() && (() => {
7462
- var _el$66 = _$createElement("span");
7463
- _$insertNode(_el$66, _$createTextNode(` | `));
7464
- _$effect((_$p) => _$setProp(_el$66, "style", {
7623
+ var _el$65 = _$createElement("span");
7624
+ _$insertNode(_el$65, _$createTextNode(` | `));
7625
+ _$effect((_$p) => _$setProp(_el$65, "style", {
7465
7626
  fg: theme().textMuted
7466
7627
  }, _$p));
7467
- return _el$66;
7628
+ return _el$65;
7468
7629
  })()), (() => {
7469
- var _el$65 = _$createElement("span");
7470
- _$insert(_el$65, k);
7471
- _$effect((_$p) => _$setProp(_el$65, "style", {
7630
+ var _el$64 = _$createElement("span");
7631
+ _$insert(_el$64, k);
7632
+ _$effect((_$p) => _$setProp(_el$64, "style", {
7472
7633
  fg: theme().warning,
7473
7634
  bold: true
7474
7635
  }, _$p));
7475
- return _el$65;
7636
+ return _el$64;
7476
7637
  })(), 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", {
7638
+ var _el$67 = _$createElement("span"), _el$68 = _$createTextNode(` `);
7639
+ _$insertNode(_el$67, _el$68);
7640
+ _$insert(_el$67, d, null);
7641
+ _$effect((_$p) => _$setProp(_el$67, "style", {
7481
7642
  fg: theme().text
7482
7643
  }, _$p));
7483
- return _el$68;
7644
+ return _el$67;
7484
7645
  })()];
7485
7646
  }
7486
7647
  })];
@@ -7492,46 +7653,46 @@ function LoopDashboard(props) {
7492
7653
  const desc = m?.[3] ?? line.split(/\s{2,}/)[1] ?? "";
7493
7654
  return [`
7494
7655
  `, (() => {
7495
- var _el$70 = _$createElement("span");
7496
- _$insert(_el$70, indent);
7497
- _$effect((_$p) => _$setProp(_el$70, "style", {
7656
+ var _el$69 = _$createElement("span");
7657
+ _$insert(_el$69, indent);
7658
+ _$effect((_$p) => _$setProp(_el$69, "style", {
7498
7659
  fg: theme().textMuted
7499
7660
  }, _$p));
7500
- return _el$70;
7661
+ return _el$69;
7501
7662
  })(), (() => {
7502
- var _el$71 = _$createElement("span");
7503
- _$insert(_el$71, key);
7504
- _$effect((_$p) => _$setProp(_el$71, "style", {
7663
+ var _el$70 = _$createElement("span");
7664
+ _$insert(_el$70, key);
7665
+ _$effect((_$p) => _$setProp(_el$70, "style", {
7505
7666
  fg: theme().warning,
7506
7667
  bold: true
7507
7668
  }, _$p));
7508
- return _el$71;
7669
+ return _el$70;
7509
7670
  })(), desc && [(() => {
7510
- var _el$72 = _$createElement("span");
7511
- _$insertNode(_el$72, _$createTextNode(` `));
7512
- _$effect((_$p) => _$setProp(_el$72, "style", {
7671
+ var _el$71 = _$createElement("span");
7672
+ _$insertNode(_el$71, _$createTextNode(` `));
7673
+ _$effect((_$p) => _$setProp(_el$71, "style", {
7513
7674
  fg: theme().textMuted
7514
7675
  }, _$p));
7515
- return _el$72;
7676
+ return _el$71;
7516
7677
  })(), (() => {
7517
- var _el$74 = _$createElement("span");
7518
- _$insert(_el$74, desc);
7519
- _$effect((_$p) => _$setProp(_el$74, "style", {
7678
+ var _el$73 = _$createElement("span");
7679
+ _$insert(_el$73, desc);
7680
+ _$effect((_$p) => _$setProp(_el$73, "style", {
7520
7681
  fg: theme().textMuted
7521
7682
  }, _$p));
7522
- return _el$74;
7683
+ return _el$73;
7523
7684
  })()]];
7524
7685
  }
7525
7686
  const isHeader = line.startsWith("Commands");
7526
7687
  return [`
7527
7688
  `, (() => {
7528
- var _el$75 = _$createElement("span");
7529
- _$insert(_el$75, line);
7530
- _$effect((_$p) => _$setProp(_el$75, "style", {
7689
+ var _el$74 = _$createElement("span");
7690
+ _$insert(_el$74, line);
7691
+ _$effect((_$p) => _$setProp(_el$74, "style", {
7531
7692
  fg: isHeader ? theme().primary : theme().textMuted,
7532
7693
  bold: isHeader
7533
7694
  }, _$p));
7534
- return _el$75;
7695
+ return _el$74;
7535
7696
  })()];
7536
7697
  }
7537
7698
  }), null);
@@ -7550,32 +7711,32 @@ function LoopDashboard(props) {
7550
7711
  },
7551
7712
  get fallback() {
7552
7713
  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");
7714
+ 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");
7715
+ _$insertNode(_el$75, _el$76);
7716
+ _$insertNode(_el$75, _el$83);
7717
+ _$setProp(_el$75, "flexDirection", "column");
7718
+ _$setProp(_el$75, "gap", 1);
7719
+ _$setProp(_el$75, "padding", 1);
7554
7720
  _$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.`));
7721
+ _$insertNode(_el$76, _el$79);
7722
+ _$insertNode(_el$76, _el$81);
7723
+ _$insertNode(_el$77, _$createTextNode(`No active goals.`));
7724
+ _$insertNode(_el$79, _$createTextNode(` /goal`));
7725
+ _$insertNode(_el$81, _$createTextNode(` in parent chat to create one.`));
7726
+ _$insertNode(_el$83, _el$84);
7727
+ _$insertNode(_el$83, _el$86);
7728
+ _$insertNode(_el$83, _el$88);
7729
+ _$insertNode(_el$83, _el$90);
7730
+ _$insertNode(_el$83, _el$92);
7731
+ _$insertNode(_el$83, _el$94);
7732
+ _$insertNode(_el$83, _el$96);
7733
+ _$insertNode(_el$84, _$createTextNode(`Tip: `));
7734
+ _$insertNode(_el$86, _$createTextNode(`:send`));
7735
+ _$insertNode(_el$88, _$createTextNode(` to steer the worker \xB7 `));
7736
+ _$insertNode(_el$90, _$createTextNode(`o`));
7737
+ _$insertNode(_el$92, _$createTextNode(` to open child \xB7 `));
7738
+ _$insertNode(_el$94, _$createTextNode(`:force`));
7739
+ _$insertNode(_el$96, _$createTextNode(` to complete manually.`));
7579
7740
  _$effect((_p$) => {
7580
7741
  var _v$26 = {
7581
7742
  fg: theme().textMuted
@@ -7598,16 +7759,16 @@ function LoopDashboard(props) {
7598
7759
  }, _v$35 = {
7599
7760
  fg: theme().textMuted
7600
7761
  };
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));
7762
+ _v$26 !== _p$.e && (_p$.e = _$setProp(_el$77, "style", _v$26, _p$.e));
7763
+ _v$27 !== _p$.t && (_p$.t = _$setProp(_el$79, "style", _v$27, _p$.t));
7764
+ _v$28 !== _p$.a && (_p$.a = _$setProp(_el$81, "style", _v$28, _p$.a));
7765
+ _v$29 !== _p$.o && (_p$.o = _$setProp(_el$84, "style", _v$29, _p$.o));
7766
+ _v$30 !== _p$.i && (_p$.i = _$setProp(_el$86, "style", _v$30, _p$.i));
7767
+ _v$31 !== _p$.n && (_p$.n = _$setProp(_el$88, "style", _v$31, _p$.n));
7768
+ _v$32 !== _p$.s && (_p$.s = _$setProp(_el$90, "style", _v$32, _p$.s));
7769
+ _v$33 !== _p$.h && (_p$.h = _$setProp(_el$92, "style", _v$33, _p$.h));
7770
+ _v$34 !== _p$.r && (_p$.r = _$setProp(_el$94, "style", _v$34, _p$.r));
7771
+ _v$35 !== _p$.d && (_p$.d = _$setProp(_el$96, "style", _v$35, _p$.d));
7611
7772
  return _p$;
7612
7773
  }, {
7613
7774
  e: undefined,
@@ -7621,15 +7782,15 @@ function LoopDashboard(props) {
7621
7782
  r: undefined,
7622
7783
  d: undefined
7623
7784
  });
7624
- return _el$76;
7785
+ return _el$75;
7625
7786
  })();
7626
7787
  },
7627
7788
  get children() {
7628
- var _el$44 = _$createElement("scrollbox");
7789
+ var _el$43 = _$createElement("scrollbox");
7629
7790
  _$use((el) => {
7630
7791
  listScrollRef = el;
7631
- }, _el$44);
7632
- _$insert(_el$44, _$createComponent(For, {
7792
+ }, _el$43);
7793
+ _$insert(_el$43, _$createComponent(For, {
7633
7794
  get each() {
7634
7795
  return activeGoals();
7635
7796
  },
@@ -7648,152 +7809,176 @@ function LoopDashboard(props) {
7648
7809
  return phaseColor(runtime().phase || "idle", theme());
7649
7810
  };
7650
7811
  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");
7812
+ 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");
7813
+ _$insertNode(_el$98, _el$99);
7814
+ _$setProp(_el$98, "flexDirection", "row");
7815
+ _$setProp(_el$98, "paddingLeft", 1);
7816
+ _$setProp(_el$98, "paddingRight", 1);
7652
7817
  _$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, (() => {
7818
+ _$insertNode(_el$99, _el$101);
7819
+ _$insertNode(_el$99, _el$103);
7820
+ _$insertNode(_el$99, _el$105);
7821
+ _$setProp(_el$99, "wrapMode", "none");
7822
+ _$setProp(_el$99, "truncate", true);
7823
+ _$insert(_el$100, (() => {
7663
7824
  var _c$2 = _$memo(() => !!isActive());
7664
7825
  return () => _c$2() ? `\u25B6 ${statusIcon(goal.status)} ${goal.name}` : ` ${statusIcon(goal.status)} ${goal.name}`;
7665
7826
  })());
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, (() => {
7827
+ _$insertNode(_el$101, _$createTextNode(` \u2502 `));
7828
+ _$insertNode(_el$103, _$createTextNode(`Goal `));
7829
+ _$insert(_el$105, () => goalStatusLabel(goal.status).short.toUpperCase());
7830
+ _$insert(_el$99, (() => {
7670
7831
  var _c$3 = _$memo(() => !!runtime());
7671
7832
  return () => _c$3() && [(() => {
7672
- var _el$107 = _$createElement("span");
7673
- _$insertNode(_el$107, _$createTextNode(` \u2502 Worker `));
7674
- _$effect((_$p) => _$setProp(_el$107, "style", {
7833
+ var _el$106 = _$createElement("span");
7834
+ _$insertNode(_el$106, _$createTextNode(` \u2502 Worker `));
7835
+ _$effect((_$p) => _$setProp(_el$106, "style", {
7675
7836
  fg: theme().textMuted
7676
7837
  }, _$p));
7677
- return _el$107;
7838
+ return _el$106;
7678
7839
  })(), (() => {
7679
- var _el$109 = _$createElement("span"), _el$110 = _$createTextNode(` `);
7680
- _$insertNode(_el$109, _el$110);
7681
- _$insert(_el$109, (() => {
7682
- var _c$1 = _$memo(() => runtime().phase === "running");
7683
- 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", {
7840
+ var _el$108 = _$createElement("span"), _el$109 = _$createTextNode(` `);
7841
+ _$insertNode(_el$108, _el$109);
7842
+ _$insert(_el$108, (() => {
7843
+ var _c$11 = _$memo(() => runtime().phase === "running");
7844
+ return () => _c$11() ? runningFrame() : phaseIcon(runtime().phase);
7845
+ })(), _el$109);
7846
+ _$insert(_el$108, () => phaseLabel(runtime().phase).short.toUpperCase(), null);
7847
+ _$effect((_$p) => _$setProp(_el$108, "style", {
7687
7848
  fg: turnColor(),
7688
7849
  bold: runtime().phase === "running"
7689
7850
  }, _$p));
7690
- return _el$109;
7851
+ return _el$108;
7691
7852
  })(), (() => {
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", {
7853
+ var _el$110 = _$createElement("span"), _el$111 = _$createTextNode(` `);
7854
+ _$insertNode(_el$110, _el$111);
7855
+ _$insert(_el$110, () => runtime().budgetTurnCount, null);
7856
+ _$insert(_el$110, maxTurns ? `/${maxTurns}` : "", null);
7857
+ _$effect((_$p) => _$setProp(_el$110, "style", {
7697
7858
  fg: turnColor()
7698
7859
  }, _$p));
7699
- return _el$111;
7860
+ return _el$110;
7700
7861
  })(), (() => {
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", {
7862
+ var _el$112 = _$createElement("span"), _el$113 = _$createTextNode(` `);
7863
+ _$insertNode(_el$112, _el$113);
7864
+ _$insert(_el$112, () => ageLabel(runtime().lastProgressAt || runtime().lastRunAt, clock()), null);
7865
+ _$effect((_$p) => _$setProp(_el$112, "style", {
7705
7866
  fg: theme().textMuted
7706
7867
  }, _$p));
7707
- return _el$113;
7868
+ return _el$112;
7708
7869
  })()];
7709
7870
  })(), null);
7710
- _$insert(_el$100, (() => {
7871
+ _$insert(_el$99, (() => {
7711
7872
  var _c$4 = _$memo(() => !!(runtime() && runtime().consecutiveFailures > 0));
7712
7873
  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", {
7874
+ var _el$114 = _$createElement("span"), _el$115 = _$createTextNode(` \u2502 \u26A0 `), _el$116 = _$createTextNode(` fail`);
7875
+ _$insertNode(_el$114, _el$115);
7876
+ _$insertNode(_el$114, _el$116);
7877
+ _$insert(_el$114, () => runtime().consecutiveFailures, _el$116);
7878
+ _$effect((_$p) => _$setProp(_el$114, "style", {
7718
7879
  fg: theme().error,
7719
7880
  bold: true
7720
7881
  }, _$p));
7721
- return _el$115;
7882
+ return _el$114;
7722
7883
  })();
7723
7884
  })(), null);
7724
- _$insert(_el$100, (() => {
7885
+ _$insert(_el$99, (() => {
7725
7886
  var _c$5 = _$memo(() => !!(runtime() && (runtime().noProgressCount || 0) > 0));
7726
7887
  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", {
7888
+ var _el$117 = _$createElement("span"), _el$118 = _$createTextNode(` \u2502 `), _el$119 = _$createTextNode(` no-progress`);
7889
+ _$insertNode(_el$117, _el$118);
7890
+ _$insertNode(_el$117, _el$119);
7891
+ _$insert(_el$117, () => runtime().noProgressCount, _el$119);
7892
+ _$effect((_$p) => _$setProp(_el$117, "style", {
7732
7893
  fg: theme().warning
7733
7894
  }, _$p));
7734
- return _el$118;
7895
+ return _el$117;
7735
7896
  })();
7736
7897
  })(), null);
7737
- _$insert(_el$100, (() => {
7898
+ _$insert(_el$99, (() => {
7738
7899
  var _c$6 = _$memo(() => !!(runtime() && runtime().evaluatorRejectionCount > 0));
7739
7900
  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", {
7901
+ var _el$120 = _$createElement("span"), _el$121 = _$createTextNode(` \u2502 \u26A0 `), _el$122 = _$createTextNode(` rejected`);
7902
+ _$insertNode(_el$120, _el$121);
7903
+ _$insertNode(_el$120, _el$122);
7904
+ _$insert(_el$120, () => String(runtime().evaluatorRejectionCount), _el$122);
7905
+ _$effect((_$p) => _$setProp(_el$120, "style", {
7745
7906
  fg: theme().warning,
7746
7907
  bold: true
7747
7908
  }, _$p));
7748
- return _el$121;
7909
+ return _el$120;
7749
7910
  })();
7750
7911
  })(), null);
7751
- _$insert(_el$100, (() => {
7912
+ _$insert(_el$99, (() => {
7752
7913
  var _c$7 = _$memo(() => !!(runtime() && runtime().unknownStatusCount >= 3));
7753
7914
  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", {
7915
+ var _el$123 = _$createElement("span");
7916
+ _$insertNode(_el$123, _$createTextNode(` \u2502 \u26A0\uFE0F UNREACHABLE`));
7917
+ _$effect((_$p) => _$setProp(_el$123, "style", {
7757
7918
  fg: theme().error,
7758
7919
  bold: true
7759
7920
  }, _$p));
7760
- return _el$124;
7921
+ return _el$123;
7761
7922
  })();
7762
7923
  })(), null);
7763
- _$insert(_el$100, (() => {
7924
+ _$insert(_el$99, (() => {
7764
7925
  var _c$8 = _$memo(() => !!(runtime() && runtime().phase === "idle" && runtime().activeRunID));
7765
7926
  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", {
7927
+ var _el$125 = _$createElement("span");
7928
+ _$insertNode(_el$125, _$createTextNode(` \u2502 \u26A0\uFE0F STALE LEASE`));
7929
+ _$effect((_$p) => _$setProp(_el$125, "style", {
7769
7930
  fg: theme().error,
7770
7931
  bold: true
7771
7932
  }, _$p));
7772
- return _el$126;
7933
+ return _el$125;
7773
7934
  })();
7774
7935
  })(), null);
7775
- _$insert(_el$100, (() => {
7776
- var _c$9 = _$memo(() => !!(runtime() && runtime().retryAfter));
7936
+ _$insert(_el$99, (() => {
7937
+ var _c$9 = _$memo(() => goal.interactive === true);
7777
7938
  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", {
7782
- fg: theme().accent
7939
+ var _el$127 = _$createElement("span");
7940
+ _$insertNode(_el$127, _$createTextNode(` \u2502 \u270B MANUAL`));
7941
+ _$effect((_$p) => _$setProp(_el$127, "style", {
7942
+ fg: theme().accent,
7943
+ bold: true
7783
7944
  }, _$p));
7784
- return _el$128;
7945
+ return _el$127;
7785
7946
  })();
7786
7947
  })(), null);
7787
- _$insert(_el$100, (() => {
7788
- var _c$0 = _$memo(() => !!(runtime() && runtime().nextRunAt));
7948
+ _$insert(_el$99, (() => {
7949
+ var _c$0 = _$memo(() => !!goal.config.model);
7789
7950
  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", {
7951
+ var _el$129 = _$createElement("span"), _el$130 = _$createTextNode(` \u2502 \uD83E\uDDE0 `);
7952
+ _$insertNode(_el$129, _el$130);
7953
+ _$insert(_el$129, () => goal.config.model, null);
7954
+ _$effect((_$p) => _$setProp(_el$129, "style", {
7955
+ fg: theme().info
7956
+ }, _$p));
7957
+ return _el$129;
7958
+ })();
7959
+ })(), null);
7960
+ _$insert(_el$99, (() => {
7961
+ var _c$1 = _$memo(() => !!(runtime() && runtime().retryAfter));
7962
+ return () => _c$1() && (() => {
7963
+ var _el$131 = _$createElement("span"), _el$132 = _$createTextNode(` \u2502 \u21BB `);
7964
+ _$insertNode(_el$131, _el$132);
7965
+ _$insert(_el$131, () => countdownLabel(runtime().retryAfter, clock()), null);
7966
+ _$effect((_$p) => _$setProp(_el$131, "style", {
7794
7967
  fg: theme().accent
7795
7968
  }, _$p));
7796
- return _el$130;
7969
+ return _el$131;
7970
+ })();
7971
+ })(), null);
7972
+ _$insert(_el$99, (() => {
7973
+ var _c$10 = _$memo(() => !!(runtime() && runtime().nextRunAt));
7974
+ return () => _c$10() && (() => {
7975
+ var _el$133 = _$createElement("span"), _el$134 = _$createTextNode(` \u2502 \u23F0 `);
7976
+ _$insertNode(_el$133, _el$134);
7977
+ _$insert(_el$133, () => countdownLabel(runtime().nextRunAt, clock()), null);
7978
+ _$effect((_$p) => _$setProp(_el$133, "style", {
7979
+ fg: theme().accent
7980
+ }, _$p));
7981
+ return _el$133;
7797
7982
  })();
7798
7983
  })(), null);
7799
7984
  _$effect((_p$) => {
@@ -7808,12 +7993,12 @@ function LoopDashboard(props) {
7808
7993
  fg: statusColor(goal.status, theme()),
7809
7994
  bold: true
7810
7995
  };
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));
7996
+ _v$36 !== _p$.e && (_p$.e = _$setProp(_el$98, "id", _v$36, _p$.e));
7997
+ _v$37 !== _p$.t && (_p$.t = _$setProp(_el$98, "backgroundColor", _v$37, _p$.t));
7998
+ _v$38 !== _p$.a && (_p$.a = _$setProp(_el$100, "style", _v$38, _p$.a));
7999
+ _v$39 !== _p$.o && (_p$.o = _$setProp(_el$101, "style", _v$39, _p$.o));
8000
+ _v$40 !== _p$.i && (_p$.i = _$setProp(_el$103, "style", _v$40, _p$.i));
8001
+ _v$41 !== _p$.n && (_p$.n = _$setProp(_el$105, "style", _v$41, _p$.n));
7817
8002
  return _p$;
7818
8003
  }, {
7819
8004
  e: undefined,
@@ -7823,12 +8008,12 @@ function LoopDashboard(props) {
7823
8008
  i: undefined,
7824
8009
  n: undefined
7825
8010
  });
7826
- return _el$99;
8011
+ return _el$98;
7827
8012
  })();
7828
8013
  }
7829
8014
  }));
7830
- _$effect((_$p) => _$setProp(_el$44, "height", listHeight(), _$p));
7831
- return _el$44;
8015
+ _$effect((_$p) => _$setProp(_el$43, "height", listHeight(), _$p));
8016
+ return _el$43;
7832
8017
  }
7833
8018
  }), _$createComponent(Show, {
7834
8019
  get when() {
@@ -7839,530 +8024,579 @@ function LoopDashboard(props) {
7839
8024
  const lp = () => goal().lastProgress;
7840
8025
  const blk = () => goal().blocker;
7841
8026
  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");
7845
- _$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);
7851
- _$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, (() => {
7867
- var _c$10 = _$memo(() => !!rt());
7868
- return () => _c$10() && [(() => {
7869
- var _el$146 = _$createElement("span");
7870
- _$insertNode(_el$146, _$createTextNode(` \u2502 Worker `));
7871
- _$effect((_$p) => _$setProp(_el$146, "style", {
8027
+ var _el$135 = _$createElement("box"), _el$136 = _$createElement("text"), _el$137 = _$createElement("span"), _el$138 = _$createTextNode(` `), _el$139 = _$createElement("span"), _el$141 = _$createElement("span"), _el$142 = _$createTextNode(` \u2014 `), _el$143 = _$createTextNode(`
8028
+ `), _el$144 = _$createElement("span"), _el$145 = _$createTextNode(`
8029
+ `), _el$146 = _$createElement("span"), _el$148 = _$createElement("span");
8030
+ _$insertNode(_el$135, _el$136);
8031
+ _$setProp(_el$135, "flexDirection", "column");
8032
+ _$setProp(_el$135, "border", true);
8033
+ _$setProp(_el$135, "padding", 1);
8034
+ _$setProp(_el$135, "flexShrink", 0);
8035
+ _$setProp(_el$135, "maxHeight", 13);
8036
+ _$insertNode(_el$136, _el$137);
8037
+ _$insertNode(_el$136, _el$139);
8038
+ _$insertNode(_el$136, _el$141);
8039
+ _$insertNode(_el$136, _el$143);
8040
+ _$insertNode(_el$136, _el$144);
8041
+ _$insertNode(_el$136, _el$145);
8042
+ _$insertNode(_el$136, _el$146);
8043
+ _$insertNode(_el$136, _el$148);
8044
+ _$insertNode(_el$137, _el$138);
8045
+ _$insert(_el$137, () => statusIcon(goal().status), _el$138);
8046
+ _$insert(_el$137, () => goal().name, null);
8047
+ _$insertNode(_el$139, _$createTextNode(` Goal `));
8048
+ _$insertNode(_el$141, _el$142);
8049
+ _$insert(_el$141, () => goalStatusLabel(goal().status).short, _el$142);
8050
+ _$insert(_el$141, () => goalStatusLabel(goal().status).hint, null);
8051
+ _$insert(_el$136, (() => {
8052
+ var _c$12 = _$memo(() => !!rt());
8053
+ return () => _c$12() && [(() => {
8054
+ var _el$149 = _$createElement("span");
8055
+ _$insertNode(_el$149, _$createTextNode(` \u2502 Worker `));
8056
+ _$effect((_$p) => _$setProp(_el$149, "style", {
7872
8057
  fg: theme().textMuted
7873
8058
  }, _$p));
7874
- return _el$146;
8059
+ return _el$149;
7875
8060
  })(), (() => {
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", {
8061
+ var _el$151 = _$createElement("span"), _el$152 = _$createTextNode(` `), _el$153 = _$createTextNode(` \u2014 `);
8062
+ _$insertNode(_el$151, _el$152);
8063
+ _$insertNode(_el$151, _el$153);
8064
+ _$insert(_el$151, () => phaseIcon(rt().phase), _el$152);
8065
+ _$insert(_el$151, () => phaseLabel(rt().phase).short, _el$153);
8066
+ _$insert(_el$151, () => phaseLabel(rt().phase).hint, null);
8067
+ _$effect((_$p) => _$setProp(_el$151, "style", {
7883
8068
  fg: phaseColor(rt().phase, theme()),
7884
8069
  bold: true
7885
8070
  }, _$p));
7886
- return _el$148;
8071
+ return _el$151;
7887
8072
  })(), (() => {
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", {
8073
+ var _el$154 = _$createElement("span"), _el$155 = _$createTextNode(` run `), _el$156 = _$createTextNode(` (budget `), _el$157 = _$createTextNode(`)`);
8074
+ _$insertNode(_el$154, _el$155);
8075
+ _$insertNode(_el$154, _el$156);
8076
+ _$insertNode(_el$154, _el$157);
8077
+ _$insert(_el$154, () => rt().runCount, _el$156);
8078
+ _$insert(_el$154, () => rt().budgetTurnCount, _el$157);
8079
+ _$effect((_$p) => _$setProp(_el$154, "style", {
7895
8080
  fg: theme().textMuted
7896
8081
  }, _$p));
7897
- return _el$151;
8082
+ return _el$154;
7898
8083
  })()];
7899
- })(), _el$140);
7900
- _$insert(_el$141, () => describeGoalState(goal().status, rt()?.phase));
7901
- _$insert(_el$133, (() => {
7902
- var _c$11 = _$memo(() => !!rt()?.workerAbortedAt);
7903
- 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", {
8084
+ })(), _el$143);
8085
+ _$insert(_el$144, () => describeGoalState(goal().status, rt()?.phase));
8086
+ _$insert(_el$136, (() => {
8087
+ var _c$13 = _$memo(() => !!rt()?.workerAbortedAt);
8088
+ return () => _c$13() && [(() => {
8089
+ var _el$158 = _$createElement("span");
8090
+ _$insertNode(_el$158, _$createTextNode(` \u2502 \u26A0 worker aborted `));
8091
+ _$effect((_$p) => _$setProp(_el$158, "style", {
7907
8092
  fg: theme().warning,
7908
8093
  bold: true
7909
8094
  }, _$p));
7910
- return _el$155;
8095
+ return _el$158;
7911
8096
  })(), (() => {
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", {
8097
+ var _el$160 = _$createElement("span"), _el$161 = _$createTextNode(` \u2014 session kept, next turn reuses it`);
8098
+ _$insertNode(_el$160, _el$161);
8099
+ _$insert(_el$160, () => ageLabel(rt().workerAbortedAt, clock()), _el$161);
8100
+ _$effect((_$p) => _$setProp(_el$160, "style", {
7916
8101
  fg: theme().textMuted
7917
8102
  }, _$p));
7918
- return _el$157;
8103
+ return _el$160;
7919
8104
  })()];
7920
- })(), _el$142);
7921
- _$insert(_el$133, () => {
8105
+ })(), _el$145);
8106
+ _$insert(_el$136, () => {
7922
8107
  const agentName = goal().config.agent;
7923
8108
  const meta = agentName ? agentIndex()[agentName] ?? agentIndex()[agentName.toLowerCase()] : undefined;
7924
8109
  const model = goal().config.model;
7925
8110
  const slash = model?.indexOf("/") ?? -1;
7926
8111
  return [`
7927
8112
  `, (() => {
7928
- var _el$159 = _$createElement("span");
7929
- _$insertNode(_el$159, _$createTextNode(`\uD83E\uDD16 `));
7930
- _$effect((_$p) => _$setProp(_el$159, "style", {
8113
+ var _el$162 = _$createElement("span");
8114
+ _$insertNode(_el$162, _$createTextNode(`\uD83E\uDD16 `));
8115
+ _$effect((_$p) => _$setProp(_el$162, "style", {
7931
8116
  fg: theme().textMuted
7932
8117
  }, _$p));
7933
- return _el$159;
8118
+ return _el$162;
7934
8119
  })(), (() => {
7935
- var _el$161 = _$createElement("span");
7936
- _$insertNode(_el$161, _$createTextNode(`Agent: `));
7937
- _$effect((_$p) => _$setProp(_el$161, "style", {
8120
+ var _el$164 = _$createElement("span");
8121
+ _$insertNode(_el$164, _$createTextNode(`Agent: `));
8122
+ _$effect((_$p) => _$setProp(_el$164, "style", {
7938
8123
  fg: theme().primary,
7939
8124
  bold: true
7940
8125
  }, _$p));
7941
- return _el$161;
8126
+ return _el$164;
7942
8127
  })(), _$memo(() => agentName ? [(() => {
7943
- var _el$177 = _$createElement("span");
7944
- _$insert(_el$177, agentName);
7945
- _$effect((_$p) => _$setProp(_el$177, "style", {
8128
+ var _el$180 = _$createElement("span");
8129
+ _$insert(_el$180, agentName);
8130
+ _$effect((_$p) => _$setProp(_el$180, "style", {
7946
8131
  fg: agentColor(meta?.color, theme()),
7947
8132
  bold: true
7948
8133
  }, _$p));
7949
- return _el$177;
8134
+ return _el$180;
7950
8135
  })(), _$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", {
8136
+ var _el$181 = _$createElement("span"), _el$182 = _$createTextNode(` (`), _el$183 = _$createTextNode(`)`);
8137
+ _$insertNode(_el$181, _el$182);
8138
+ _$insertNode(_el$181, _el$183);
8139
+ _$insert(_el$181, () => meta.mode, _el$183);
8140
+ _$effect((_$p) => _$setProp(_el$181, "style", {
7956
8141
  fg: theme().textMuted
7957
8142
  }, _$p));
7958
- return _el$178;
8143
+ return _el$181;
7959
8144
  })())] : goal().parentAgent ? [(() => {
7960
- var _el$181 = _$createElement("span");
7961
- _$insertNode(_el$181, _$createTextNode(`\u21A9 `));
7962
- _$effect((_$p) => _$setProp(_el$181, "style", {
8145
+ var _el$184 = _$createElement("span");
8146
+ _$insertNode(_el$184, _$createTextNode(`\u21A9 `));
8147
+ _$effect((_$p) => _$setProp(_el$184, "style", {
7963
8148
  fg: theme().textMuted
7964
8149
  }, _$p));
7965
- return _el$181;
8150
+ return _el$184;
7966
8151
  })(), (() => {
7967
- var _el$183 = _$createElement("span");
7968
- _$insert(_el$183, () => goal().parentAgent);
7969
- _$effect((_$p) => _$setProp(_el$183, "style", {
8152
+ var _el$186 = _$createElement("span");
8153
+ _$insert(_el$186, () => goal().parentAgent);
8154
+ _$effect((_$p) => _$setProp(_el$186, "style", {
7970
8155
  fg: theme().text,
7971
8156
  bold: true
7972
8157
  }, _$p));
7973
- return _el$183;
8158
+ return _el$186;
7974
8159
  })(), (() => {
7975
- var _el$184 = _$createElement("span");
7976
- _$insertNode(_el$184, _$createTextNode(` (parent)`));
7977
- _$effect((_$p) => _$setProp(_el$184, "style", {
8160
+ var _el$187 = _$createElement("span");
8161
+ _$insertNode(_el$187, _$createTextNode(` (parent)`));
8162
+ _$effect((_$p) => _$setProp(_el$187, "style", {
7978
8163
  fg: theme().textMuted
7979
8164
  }, _$p));
7980
- return _el$184;
8165
+ return _el$187;
7981
8166
  })()] : (() => {
7982
- var _el$186 = _$createElement("span");
7983
- _$insertNode(_el$186, _$createTextNode(`parent`));
7984
- _$effect((_$p) => _$setProp(_el$186, "style", {
8167
+ var _el$189 = _$createElement("span");
8168
+ _$insertNode(_el$189, _$createTextNode(`parent`));
8169
+ _$effect((_$p) => _$setProp(_el$189, "style", {
7985
8170
  fg: theme().textMuted
7986
8171
  }, _$p));
7987
- return _el$186;
8172
+ return _el$189;
7988
8173
  })()), (() => {
7989
- var _el$163 = _$createElement("span");
7990
- _$insertNode(_el$163, _$createTextNode(` \u2502 \uD83E\uDDE0 `));
7991
- _$effect((_$p) => _$setProp(_el$163, "style", {
8174
+ var _el$166 = _$createElement("span");
8175
+ _$insertNode(_el$166, _$createTextNode(` \u2502 \uD83E\uDDE0 `));
8176
+ _$effect((_$p) => _$setProp(_el$166, "style", {
7992
8177
  fg: theme().textMuted
7993
8178
  }, _$p));
7994
- return _el$163;
8179
+ return _el$166;
7995
8180
  })(), (() => {
7996
- var _el$165 = _$createElement("span");
7997
- _$insertNode(_el$165, _$createTextNode(`Model: `));
7998
- _$effect((_$p) => _$setProp(_el$165, "style", {
8181
+ var _el$168 = _$createElement("span");
8182
+ _$insertNode(_el$168, _$createTextNode(`Model: `));
8183
+ _$effect((_$p) => _$setProp(_el$168, "style", {
7999
8184
  fg: theme().primary,
8000
8185
  bold: true
8001
8186
  }, _$p));
8002
- return _el$165;
8187
+ return _el$168;
8003
8188
  })(), _$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", {
8008
- fg: theme().textMuted
8009
- }, _$p));
8010
- return _el$188;
8011
- })(), (() => {
8012
- var _el$190 = _$createElement("span");
8013
- _$insert(_el$190, () => model.slice(slash + 1));
8014
- _$effect((_$p) => _$setProp(_el$190, "style", {
8015
- fg: theme().info,
8016
- bold: true
8017
- }, _$p));
8018
- return _el$190;
8019
- })()] : goal().parentModel ? [(() => {
8020
- var _el$191 = _$createElement("span");
8021
- _$insertNode(_el$191, _$createTextNode(`\u21A9 `));
8189
+ var _el$191 = _$createElement("span"), _el$192 = _$createTextNode(`/`);
8190
+ _$insertNode(_el$191, _el$192);
8191
+ _$insert(_el$191, () => model.slice(0, slash), _el$192);
8022
8192
  _$effect((_$p) => _$setProp(_el$191, "style", {
8023
8193
  fg: theme().textMuted
8024
8194
  }, _$p));
8025
8195
  return _el$191;
8026
8196
  })(), (() => {
8027
8197
  var _el$193 = _$createElement("span");
8028
- _$insert(_el$193, () => goal().parentModel);
8198
+ _$insert(_el$193, () => model.slice(slash + 1));
8029
8199
  _$effect((_$p) => _$setProp(_el$193, "style", {
8030
8200
  fg: theme().info,
8031
8201
  bold: true
8032
8202
  }, _$p));
8033
8203
  return _el$193;
8034
- })(), (() => {
8204
+ })()] : goal().parentModel ? [(() => {
8035
8205
  var _el$194 = _$createElement("span");
8036
- _$insertNode(_el$194, _$createTextNode(` (parent)`));
8206
+ _$insertNode(_el$194, _$createTextNode(`\u21A9 `));
8037
8207
  _$effect((_$p) => _$setProp(_el$194, "style", {
8038
8208
  fg: theme().textMuted
8039
8209
  }, _$p));
8040
8210
  return _el$194;
8041
- })()] : (() => {
8211
+ })(), (() => {
8042
8212
  var _el$196 = _$createElement("span");
8043
- _$insertNode(_el$196, _$createTextNode(`parent`));
8213
+ _$insert(_el$196, () => goal().parentModel);
8044
8214
  _$effect((_$p) => _$setProp(_el$196, "style", {
8045
- fg: theme().textMuted
8215
+ fg: theme().info,
8216
+ bold: true
8046
8217
  }, _$p));
8047
8218
  return _el$196;
8219
+ })(), (() => {
8220
+ var _el$197 = _$createElement("span");
8221
+ _$insertNode(_el$197, _$createTextNode(` (parent)`));
8222
+ _$effect((_$p) => _$setProp(_el$197, "style", {
8223
+ fg: theme().textMuted
8224
+ }, _$p));
8225
+ return _el$197;
8226
+ })()] : (() => {
8227
+ var _el$199 = _$createElement("span");
8228
+ _$insertNode(_el$199, _$createTextNode(`parent`));
8229
+ _$effect((_$p) => _$setProp(_el$199, "style", {
8230
+ fg: theme().textMuted
8231
+ }, _$p));
8232
+ return _el$199;
8048
8233
  })()), (() => {
8049
- var _el$167 = _$createElement("span");
8050
- _$insertNode(_el$167, _$createTextNode(` \u2502 \uD83D\uDCB0 `));
8051
- _$effect((_$p) => _$setProp(_el$167, "style", {
8234
+ var _el$170 = _$createElement("span");
8235
+ _$insertNode(_el$170, _$createTextNode(` \u2502 \uD83D\uDCB0 `));
8236
+ _$effect((_$p) => _$setProp(_el$170, "style", {
8052
8237
  fg: theme().textMuted
8053
8238
  }, _$p));
8054
- return _el$167;
8239
+ return _el$170;
8055
8240
  })(), (() => {
8056
- var _el$169 = _$createElement("span");
8057
- _$insertNode(_el$169, _$createTextNode(`Spent: `));
8058
- _$effect((_$p) => _$setProp(_el$169, "style", {
8241
+ var _el$172 = _$createElement("span");
8242
+ _$insertNode(_el$172, _$createTextNode(`Spent: `));
8243
+ _$effect((_$p) => _$setProp(_el$172, "style", {
8059
8244
  fg: theme().primary,
8060
8245
  bold: true
8061
8246
  }, _$p));
8062
- return _el$169;
8247
+ return _el$172;
8063
8248
  })(), (() => {
8064
- var _el$171 = _$createElement("span");
8065
- _$insert(_el$171, () => formatCost(goal().costUsed));
8066
- _$effect((_$p) => _$setProp(_el$171, "style", {
8249
+ var _el$174 = _$createElement("span");
8250
+ _$insert(_el$174, () => formatCost(goal().costUsed));
8251
+ _$effect((_$p) => _$setProp(_el$174, "style", {
8067
8252
  fg: theme().success,
8068
8253
  bold: true
8069
8254
  }, _$p));
8070
- return _el$171;
8255
+ return _el$174;
8071
8256
  })(), (() => {
8072
- var _el$172 = _$createElement("span");
8073
- _$insertNode(_el$172, _$createTextNode(` \xB7 `));
8074
- _$effect((_$p) => _$setProp(_el$172, "style", {
8257
+ var _el$175 = _$createElement("span");
8258
+ _$insertNode(_el$175, _$createTextNode(` \xB7 `));
8259
+ _$effect((_$p) => _$setProp(_el$175, "style", {
8075
8260
  fg: theme().textMuted
8076
8261
  }, _$p));
8077
- return _el$172;
8262
+ return _el$175;
8078
8263
  })(), (() => {
8079
- var _el$174 = _$createElement("span");
8080
- _$insert(_el$174, () => formatTokens(goal().tokensUsed));
8081
- _$effect((_$p) => _$setProp(_el$174, "style", {
8264
+ var _el$177 = _$createElement("span");
8265
+ _$insert(_el$177, () => formatTokens(goal().tokensUsed));
8266
+ _$effect((_$p) => _$setProp(_el$177, "style", {
8082
8267
  fg: theme().warning,
8083
8268
  bold: true
8084
8269
  }, _$p));
8085
- return _el$174;
8270
+ return _el$177;
8086
8271
  })(), (() => {
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", {
8272
+ var _el$178 = _$createElement("span"), _el$179 = _$createTextNode(` tokens \xB7 `);
8273
+ _$insertNode(_el$178, _el$179);
8274
+ _$insert(_el$178, () => formatDuration(goal().timeUsedSeconds), null);
8275
+ _$effect((_$p) => _$setProp(_el$178, "style", {
8091
8276
  fg: theme().textMuted
8092
8277
  }, _$p));
8093
- return _el$175;
8278
+ return _el$178;
8094
8279
  })()];
8095
- }, _el$142);
8096
- _$insertNode(_el$143, _$createTextNode(`\uD83C\uDFAF Target: `));
8097
- _$insert(_el$145, () => goal().objective.slice(0, 160));
8098
- _$insert(_el$133, (() => {
8099
- var _c$12 = _$memo(() => !!lp());
8100
- return () => _c$12() && [(() => {
8101
- var _el$198 = _$createElement("span"), _el$199 = _$createTextNode(`
8280
+ }, _el$145);
8281
+ _$insertNode(_el$146, _$createTextNode(`\uD83C\uDFAF Target: `));
8282
+ _$insert(_el$148, () => goal().objective.slice(0, 160));
8283
+ _$insert(_el$136, (() => {
8284
+ var _c$14 = _$memo(() => !!lp());
8285
+ return () => _c$14() && [(() => {
8286
+ var _el$201 = _$createElement("span"), _el$202 = _$createTextNode(`
8102
8287
  \u2714 `);
8103
- _$insertNode(_el$198, _el$199);
8104
- _$effect((_$p) => _$setProp(_el$198, "style", {
8288
+ _$insertNode(_el$201, _el$202);
8289
+ _$effect((_$p) => _$setProp(_el$201, "style", {
8105
8290
  fg: theme().success
8106
8291
  }, _$p));
8107
- return _el$198;
8292
+ return _el$201;
8108
8293
  })(), (() => {
8109
- var _el$201 = _$createElement("span");
8110
- _$insertNode(_el$201, _$createTextNode(`Progress: `));
8111
- _$effect((_$p) => _$setProp(_el$201, "style", {
8294
+ var _el$204 = _$createElement("span");
8295
+ _$insertNode(_el$204, _$createTextNode(`Progress: `));
8296
+ _$effect((_$p) => _$setProp(_el$204, "style", {
8112
8297
  fg: theme().success,
8113
8298
  bold: true
8114
8299
  }, _$p));
8115
- return _el$201;
8300
+ return _el$204;
8116
8301
  })(), (() => {
8117
- var _el$203 = _$createElement("span");
8118
- _$insert(_el$203, () => lp().summary.slice(0, 100));
8119
- _$effect((_$p) => _$setProp(_el$203, "style", {
8302
+ var _el$206 = _$createElement("span");
8303
+ _$insert(_el$206, () => lp().summary.slice(0, 100));
8304
+ _$effect((_$p) => _$setProp(_el$206, "style", {
8120
8305
  fg: theme().text
8121
8306
  }, _$p));
8122
- return _el$203;
8307
+ return _el$206;
8123
8308
  })(), (() => {
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", {
8309
+ var _el$207 = _$createElement("span"), _el$208 = _$createTextNode(` \u2192 `);
8310
+ _$insertNode(_el$207, _el$208);
8311
+ _$insert(_el$207, () => lp().next?.slice(0, 60) || "", null);
8312
+ _$effect((_$p) => _$setProp(_el$207, "style", {
8128
8313
  fg: theme().textMuted
8129
8314
  }, _$p));
8130
- return _el$204;
8315
+ return _el$207;
8131
8316
  })()];
8132
8317
  })(), null);
8133
- _$insert(_el$133, (() => {
8134
- var _c$13 = _$memo(() => !!blk());
8135
- return () => _c$13() && [(() => {
8136
- var _el$206 = _$createElement("span"), _el$207 = _$createTextNode(`
8318
+ _$insert(_el$136, (() => {
8319
+ var _c$15 = _$memo(() => !!blk());
8320
+ return () => _c$15() && [(() => {
8321
+ var _el$209 = _$createElement("span"), _el$210 = _$createTextNode(`
8137
8322
  \u2716 Blocked: `);
8138
- _$insertNode(_el$206, _el$207);
8139
- _$effect((_$p) => _$setProp(_el$206, "style", {
8323
+ _$insertNode(_el$209, _el$210);
8324
+ _$effect((_$p) => _$setProp(_el$209, "style", {
8140
8325
  fg: theme().error,
8141
8326
  bold: true
8142
8327
  }, _$p));
8143
- return _el$206;
8328
+ return _el$209;
8144
8329
  })(), (() => {
8145
- var _el$209 = _$createElement("span");
8146
- _$insert(_el$209, () => blk().reason.slice(0, 140));
8147
- _$effect((_$p) => _$setProp(_el$209, "style", {
8330
+ var _el$212 = _$createElement("span");
8331
+ _$insert(_el$212, () => blk().reason.slice(0, 140));
8332
+ _$effect((_$p) => _$setProp(_el$212, "style", {
8148
8333
  fg: theme().error
8149
8334
  }, _$p));
8150
- return _el$209;
8335
+ return _el$212;
8151
8336
  })(), (() => {
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", {
8337
+ var _el$213 = _$createElement("span"), _el$214 = _$createTextNode(` \u2014 `);
8338
+ _$insertNode(_el$213, _el$214);
8339
+ _$insert(_el$213, () => blk().needed.slice(0, 60), null);
8340
+ _$effect((_$p) => _$setProp(_el$213, "style", {
8156
8341
  fg: theme().textMuted
8157
8342
  }, _$p));
8158
- return _el$210;
8343
+ return _el$213;
8159
8344
  })()];
8160
8345
  })(), null);
8161
- _$insert(_el$133, (() => {
8162
- var _c$14 = _$memo(() => !!goal().config.artifactDir);
8163
- return () => _c$14() && [(() => {
8164
- var _el$212 = _$createElement("span"), _el$213 = _$createTextNode(`
8346
+ _$insert(_el$136, (() => {
8347
+ var _c$16 = _$memo(() => !!goal().config.artifactDir);
8348
+ return () => _c$16() && [(() => {
8349
+ var _el$215 = _$createElement("span"), _el$216 = _$createTextNode(`
8165
8350
  \uD83D\uDCC1 `);
8166
- _$insertNode(_el$212, _el$213);
8167
- _$effect((_$p) => _$setProp(_el$212, "style", {
8351
+ _$insertNode(_el$215, _el$216);
8352
+ _$effect((_$p) => _$setProp(_el$215, "style", {
8168
8353
  fg: theme().accent
8169
8354
  }, _$p));
8170
- return _el$212;
8355
+ return _el$215;
8171
8356
  })(), (() => {
8172
- var _el$215 = _$createElement("span");
8173
- _$insertNode(_el$215, _$createTextNode(`Artifacts: `));
8174
- _$effect((_$p) => _$setProp(_el$215, "style", {
8357
+ var _el$218 = _$createElement("span");
8358
+ _$insertNode(_el$218, _$createTextNode(`Artifacts: `));
8359
+ _$effect((_$p) => _$setProp(_el$218, "style", {
8175
8360
  fg: theme().accent,
8176
8361
  bold: true
8177
8362
  }, _$p));
8178
- return _el$215;
8363
+ return _el$218;
8179
8364
  })(), (() => {
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", {
8365
+ var _el$220 = _$createElement("span");
8366
+ _$insert(_el$220, () => String(goal().config.artifactDir).replace(String(props.directory), "."));
8367
+ _$effect((_$p) => _$setProp(_el$220, "style", {
8183
8368
  fg: theme().textMuted
8184
8369
  }, _$p));
8185
- return _el$217;
8370
+ return _el$220;
8186
8371
  })()];
8187
8372
  })(), null);
8188
- _$insert(_el$133, (() => {
8189
- var _c$15 = _$memo(() => !!goal().workerTopology);
8190
- return () => _c$15() && [(() => {
8191
- var _el$218 = _$createElement("span"), _el$219 = _$createTextNode(`
8373
+ _$insert(_el$136, (() => {
8374
+ var _c$17 = _$memo(() => !!goal().workerTopology);
8375
+ return () => _c$17() && [(() => {
8376
+ var _el$221 = _$createElement("span"), _el$222 = _$createTextNode(`
8192
8377
  \uD83C\uDF3F Worker: `);
8193
- _$insertNode(_el$218, _el$219);
8194
- _$effect((_$p) => _$setProp(_el$218, "style", {
8378
+ _$insertNode(_el$221, _el$222);
8379
+ _$effect((_$p) => _$setProp(_el$221, "style", {
8195
8380
  fg: theme().textMuted
8196
8381
  }, _$p));
8197
- return _el$218;
8382
+ return _el$221;
8198
8383
  })(), (() => {
8199
- var _el$221 = _$createElement("span");
8200
- _$insert(_el$221, (() => {
8201
- var _c$22 = _$memo(() => goal().workerTopology === "v2-native-child");
8202
- return () => _c$22() ? "native child" : goal().workerTopology === "v2-root-fallback" ? "root fallback" : "v1 child";
8384
+ var _el$224 = _$createElement("span");
8385
+ _$insert(_el$224, (() => {
8386
+ var _c$26 = _$memo(() => goal().workerTopology === "v2-native-child");
8387
+ return () => _c$26() ? "native child" : goal().workerTopology === "v2-root-fallback" ? "root fallback" : "v1 child";
8203
8388
  })());
8204
- _$effect((_$p) => _$setProp(_el$221, "style", {
8389
+ _$effect((_$p) => _$setProp(_el$224, "style", {
8205
8390
  fg: theme().text
8206
8391
  }, _$p));
8207
- return _el$221;
8392
+ return _el$224;
8208
8393
  })(), _$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", {
8394
+ var _el$225 = _$createElement("span"), _el$226 = _$createTextNode(` of `), _el$227 = _$createTextNode(`\u2026`);
8395
+ _$insertNode(_el$225, _el$226);
8396
+ _$insertNode(_el$225, _el$227);
8397
+ _$insert(_el$225, () => goal().nativeParentID.slice(0, 12), _el$227);
8398
+ _$effect((_$p) => _$setProp(_el$225, "style", {
8214
8399
  fg: theme().textMuted
8215
8400
  }, _$p));
8216
- return _el$222;
8401
+ return _el$225;
8217
8402
  })() : null)];
8218
8403
  })(), null);
8219
- _$insert(_el$133, (() => {
8220
- var _c$16 = _$memo(() => (goal().config.checks?.length ?? 0) > 0);
8221
- return () => _c$16() ? [(() => {
8222
- var _el$225 = _$createElement("span"), _el$226 = _$createTextNode(`
8404
+ _$insert(_el$136, (() => {
8405
+ var _c$18 = _$memo(() => goal().interactive === true);
8406
+ return () => _c$18() && [(() => {
8407
+ var _el$228 = _$createElement("span"), _el$229 = _$createTextNode(`
8408
+ \u270B Manual: `);
8409
+ _$insertNode(_el$228, _el$229);
8410
+ _$effect((_$p) => _$setProp(_el$228, "style", {
8411
+ fg: theme().accent,
8412
+ bold: true
8413
+ }, _$p));
8414
+ return _el$228;
8415
+ })(), (() => {
8416
+ var _el$231 = _$createElement("span");
8417
+ _$insertNode(_el$231, _$createTextNode(`engine never starts turns \u2014 steer with :send/nudge (:interactive to re-enable auto)`));
8418
+ _$effect((_$p) => _$setProp(_el$231, "style", {
8419
+ fg: theme().textMuted
8420
+ }, _$p));
8421
+ return _el$231;
8422
+ })()];
8423
+ })(), null);
8424
+ _$insert(_el$136, (() => {
8425
+ var _c$19 = _$memo(() => !!goal().config.model);
8426
+ return () => _c$19() && [(() => {
8427
+ var _el$233 = _$createElement("span"), _el$234 = _$createTextNode(`
8428
+ \uD83E\uDDE0 Model: `);
8429
+ _$insertNode(_el$233, _el$234);
8430
+ _$effect((_$p) => _$setProp(_el$233, "style", {
8431
+ fg: theme().info,
8432
+ bold: true
8433
+ }, _$p));
8434
+ return _el$233;
8435
+ })(), (() => {
8436
+ var _el$236 = _$createElement("span");
8437
+ _$insert(_el$236, () => goal().config.model);
8438
+ _$effect((_$p) => _$setProp(_el$236, "style", {
8439
+ fg: theme().text
8440
+ }, _$p));
8441
+ return _el$236;
8442
+ })(), _$memo(() => _$memo(() => !!goal().modelSwitch?.pending)() ? (() => {
8443
+ var _el$237 = _$createElement("span"), _el$238 = _$createTextNode(` \u2192 pending `), _el$239 = _$createTextNode(` (applies next turn)`);
8444
+ _$insertNode(_el$237, _el$238);
8445
+ _$insertNode(_el$237, _el$239);
8446
+ _$insert(_el$237, () => goal().modelSwitch?.pending?.model, _el$239);
8447
+ _$effect((_$p) => _$setProp(_el$237, "style", {
8448
+ fg: theme().warning
8449
+ }, _$p));
8450
+ return _el$237;
8451
+ })() : null)];
8452
+ })(), null);
8453
+ _$insert(_el$136, (() => {
8454
+ var _c$20 = _$memo(() => (goal().config.checks?.length ?? 0) > 0);
8455
+ return () => _c$20() ? [(() => {
8456
+ var _el$240 = _$createElement("span"), _el$241 = _$createTextNode(`
8223
8457
  \u25A3 `);
8224
- _$insertNode(_el$225, _el$226);
8225
- _$effect((_$p) => _$setProp(_el$225, "style", {
8458
+ _$insertNode(_el$240, _el$241);
8459
+ _$effect((_$p) => _$setProp(_el$240, "style", {
8226
8460
  fg: theme().warning
8227
8461
  }, _$p));
8228
- return _el$225;
8462
+ return _el$240;
8229
8463
  })(), (() => {
8230
- var _el$228 = _$createElement("span");
8231
- _$insertNode(_el$228, _$createTextNode(`Checks: `));
8232
- _$effect((_$p) => _$setProp(_el$228, "style", {
8464
+ var _el$243 = _$createElement("span");
8465
+ _$insertNode(_el$243, _$createTextNode(`Checks: `));
8466
+ _$effect((_$p) => _$setProp(_el$243, "style", {
8233
8467
  fg: theme().warning,
8234
8468
  bold: true
8235
8469
  }, _$p));
8236
- return _el$228;
8470
+ return _el$243;
8237
8471
  })(), (() => {
8238
- var _el$230 = _$createElement("span");
8239
- _$insert(_el$230, () => goal().config.checks.join(", ").slice(0, 100));
8240
- _$effect((_$p) => _$setProp(_el$230, "style", {
8472
+ var _el$245 = _$createElement("span");
8473
+ _$insert(_el$245, () => goal().config.checks.join(", ").slice(0, 100));
8474
+ _$effect((_$p) => _$setProp(_el$245, "style", {
8241
8475
  fg: theme().textMuted
8242
8476
  }, _$p));
8243
- return _el$230;
8477
+ return _el$245;
8244
8478
  })()] : null;
8245
8479
  })(), null);
8246
- _$insert(_el$133, (() => {
8247
- var _c$17 = _$memo(() => rt()?.evaluatorRejectionCount > 0);
8248
- return () => _c$17() && [(() => {
8249
- var _el$231 = _$createElement("span"), _el$232 = _$createTextNode(`
8480
+ _$insert(_el$136, (() => {
8481
+ var _c$21 = _$memo(() => rt()?.evaluatorRejectionCount > 0);
8482
+ return () => _c$21() && [(() => {
8483
+ var _el$246 = _$createElement("span"), _el$247 = _$createTextNode(`
8250
8484
  \u26A0 rejections: `);
8251
- _$insertNode(_el$231, _el$232);
8252
- _$effect((_$p) => _$setProp(_el$231, "style", {
8485
+ _$insertNode(_el$246, _el$247);
8486
+ _$effect((_$p) => _$setProp(_el$246, "style", {
8253
8487
  fg: theme().warning
8254
8488
  }, _$p));
8255
- return _el$231;
8489
+ return _el$246;
8256
8490
  })(), (() => {
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", {
8491
+ var _el$249 = _$createElement("span"), _el$250 = _$createTextNode(` \u2014 `);
8492
+ _$insertNode(_el$249, _el$250);
8493
+ _$insert(_el$249, () => String(rt().evaluatorRejectionCount), _el$250);
8494
+ _$insert(_el$249, () => String(rt().lastRejectionDetails || "").slice(0, 80), null);
8495
+ _$effect((_$p) => _$setProp(_el$249, "style", {
8262
8496
  fg: theme().warning
8263
8497
  }, _$p));
8264
- return _el$234;
8498
+ return _el$249;
8265
8499
  })()];
8266
8500
  })(), null);
8267
- _$insert(_el$133, (() => {
8268
- var _c$18 = _$memo(() => rt()?.unknownStatusCount > 0);
8269
- return () => _c$18() && [(() => {
8270
- var _el$236 = _$createElement("span"), _el$237 = _$createTextNode(`
8501
+ _$insert(_el$136, (() => {
8502
+ var _c$22 = _$memo(() => rt()?.unknownStatusCount > 0);
8503
+ return () => _c$22() && [(() => {
8504
+ var _el$251 = _$createElement("span"), _el$252 = _$createTextNode(`
8271
8505
  \u26A0\uFE0F unreachable: `);
8272
- _$insertNode(_el$236, _el$237);
8273
- _$effect((_$p) => _$setProp(_el$236, "style", {
8506
+ _$insertNode(_el$251, _el$252);
8507
+ _$effect((_$p) => _$setProp(_el$251, "style", {
8274
8508
  fg: theme().error
8275
8509
  }, _$p));
8276
- return _el$236;
8510
+ return _el$251;
8277
8511
  })(), (() => {
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", {
8512
+ var _el$254 = _$createElement("span"), _el$255 = _$createTextNode(`/3`);
8513
+ _$insertNode(_el$254, _el$255);
8514
+ _$insert(_el$254, () => String(rt().unknownStatusCount), _el$255);
8515
+ _$effect((_$p) => _$setProp(_el$254, "style", {
8282
8516
  fg: theme().error
8283
8517
  }, _$p));
8284
- return _el$239;
8518
+ return _el$254;
8285
8519
  })(), (() => {
8286
- var _el$241 = _$createElement("span");
8287
- _$insertNode(_el$241, _$createTextNode(` \u2014 nudge to recover`));
8288
- _$effect((_$p) => _$setProp(_el$241, "style", {
8520
+ var _el$256 = _$createElement("span");
8521
+ _$insertNode(_el$256, _$createTextNode(` \u2014 nudge to recover`));
8522
+ _$effect((_$p) => _$setProp(_el$256, "style", {
8289
8523
  fg: theme().textMuted
8290
8524
  }, _$p));
8291
- return _el$241;
8525
+ return _el$256;
8292
8526
  })()];
8293
8527
  })(), null);
8294
- _$insert(_el$133, (() => {
8295
- var _c$19 = _$memo(() => !!rt()?.retryAfter);
8296
- return () => _c$19() && [(() => {
8297
- var _el$243 = _$createElement("span"), _el$244 = _$createTextNode(`
8528
+ _$insert(_el$136, (() => {
8529
+ var _c$23 = _$memo(() => !!rt()?.retryAfter);
8530
+ return () => _c$23() && [(() => {
8531
+ var _el$258 = _$createElement("span"), _el$259 = _$createTextNode(`
8298
8532
  \u21BB retry in: `);
8299
- _$insertNode(_el$243, _el$244);
8300
- _$effect((_$p) => _$setProp(_el$243, "style", {
8533
+ _$insertNode(_el$258, _el$259);
8534
+ _$effect((_$p) => _$setProp(_el$258, "style", {
8301
8535
  fg: theme().accent
8302
8536
  }, _$p));
8303
- return _el$243;
8537
+ return _el$258;
8304
8538
  })(), (() => {
8305
- var _el$246 = _$createElement("span");
8306
- _$insert(_el$246, () => countdownLabel(rt().retryAfter, clock()));
8307
- _$effect((_$p) => _$setProp(_el$246, "style", {
8539
+ var _el$261 = _$createElement("span");
8540
+ _$insert(_el$261, () => countdownLabel(rt().retryAfter, clock()));
8541
+ _$effect((_$p) => _$setProp(_el$261, "style", {
8308
8542
  fg: theme().accent
8309
8543
  }, _$p));
8310
- return _el$246;
8544
+ return _el$261;
8311
8545
  })()];
8312
8546
  })(), null);
8313
- _$insert(_el$133, (() => {
8314
- var _c$20 = _$memo(() => !!rt()?.nextRunAt);
8315
- return () => _c$20() && [(() => {
8316
- var _el$247 = _$createElement("span"), _el$248 = _$createTextNode(`
8547
+ _$insert(_el$136, (() => {
8548
+ var _c$24 = _$memo(() => !!rt()?.nextRunAt);
8549
+ return () => _c$24() && [(() => {
8550
+ var _el$262 = _$createElement("span"), _el$263 = _$createTextNode(`
8317
8551
  \u23F0 next run: `);
8318
- _$insertNode(_el$247, _el$248);
8319
- _$effect((_$p) => _$setProp(_el$247, "style", {
8552
+ _$insertNode(_el$262, _el$263);
8553
+ _$effect((_$p) => _$setProp(_el$262, "style", {
8320
8554
  fg: theme().accent
8321
8555
  }, _$p));
8322
- return _el$247;
8556
+ return _el$262;
8323
8557
  })(), (() => {
8324
- var _el$250 = _$createElement("span");
8325
- _$insert(_el$250, () => countdownLabel(rt().nextRunAt, clock()));
8326
- _$effect((_$p) => _$setProp(_el$250, "style", {
8558
+ var _el$265 = _$createElement("span");
8559
+ _$insert(_el$265, () => countdownLabel(rt().nextRunAt, clock()));
8560
+ _$effect((_$p) => _$setProp(_el$265, "style", {
8327
8561
  fg: theme().accent
8328
8562
  }, _$p));
8329
- return _el$250;
8563
+ return _el$265;
8330
8564
  })(), (() => {
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", {
8565
+ var _el$266 = _$createElement("span"), _el$267 = _$createTextNode(` (`), _el$268 = _$createTextNode(` runs)`);
8566
+ _$insertNode(_el$266, _el$267);
8567
+ _$insertNode(_el$266, _el$268);
8568
+ _$insert(_el$266, () => String(rt().scheduleRunCount || 0), _el$268);
8569
+ _$effect((_$p) => _$setProp(_el$266, "style", {
8336
8570
  fg: theme().textMuted
8337
8571
  }, _$p));
8338
- return _el$251;
8572
+ return _el$266;
8339
8573
  })()];
8340
8574
  })(), null);
8341
- _$insert(_el$133, (() => {
8342
- var _c$21 = _$memo(() => !!rt()?.lastError);
8343
- return () => _c$21() && [(() => {
8344
- var _el$254 = _$createElement("span"), _el$255 = _$createTextNode(`
8575
+ _$insert(_el$136, (() => {
8576
+ var _c$25 = _$memo(() => !!rt()?.lastError);
8577
+ return () => _c$25() && [(() => {
8578
+ var _el$269 = _$createElement("span"), _el$270 = _$createTextNode(`
8345
8579
  \u26A0 `);
8346
- _$insertNode(_el$254, _el$255);
8347
- _$effect((_$p) => _$setProp(_el$254, "style", {
8580
+ _$insertNode(_el$269, _el$270);
8581
+ _$effect((_$p) => _$setProp(_el$269, "style", {
8348
8582
  fg: theme().error
8349
8583
  }, _$p));
8350
- return _el$254;
8584
+ return _el$269;
8351
8585
  })(), (() => {
8352
- var _el$257 = _$createElement("span");
8353
- _$insertNode(_el$257, _$createTextNode(`Error: `));
8354
- _$effect((_$p) => _$setProp(_el$257, "style", {
8586
+ var _el$272 = _$createElement("span");
8587
+ _$insertNode(_el$272, _$createTextNode(`Error: `));
8588
+ _$effect((_$p) => _$setProp(_el$272, "style", {
8355
8589
  fg: theme().error,
8356
8590
  bold: true
8357
8591
  }, _$p));
8358
- return _el$257;
8592
+ return _el$272;
8359
8593
  })(), (() => {
8360
- var _el$259 = _$createElement("span");
8361
- _$insert(_el$259, () => rt().lastError.slice(0, 120));
8362
- _$effect((_$p) => _$setProp(_el$259, "style", {
8594
+ var _el$274 = _$createElement("span");
8595
+ _$insert(_el$274, () => rt().lastError.slice(0, 120));
8596
+ _$effect((_$p) => _$setProp(_el$274, "style", {
8363
8597
  fg: theme().error
8364
8598
  }, _$p));
8365
- return _el$259;
8599
+ return _el$274;
8366
8600
  })()];
8367
8601
  })(), null);
8368
8602
  _$effect((_p$) => {
@@ -8381,13 +8615,13 @@ function LoopDashboard(props) {
8381
8615
  }, _v$48 = {
8382
8616
  fg: theme().text
8383
8617
  };
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));
8618
+ _v$42 !== _p$.e && (_p$.e = _$setProp(_el$135, "borderColor", _v$42, _p$.e));
8619
+ _v$43 !== _p$.t && (_p$.t = _$setProp(_el$137, "style", _v$43, _p$.t));
8620
+ _v$44 !== _p$.a && (_p$.a = _$setProp(_el$139, "style", _v$44, _p$.a));
8621
+ _v$45 !== _p$.o && (_p$.o = _$setProp(_el$141, "style", _v$45, _p$.o));
8622
+ _v$46 !== _p$.i && (_p$.i = _$setProp(_el$144, "style", _v$46, _p$.i));
8623
+ _v$47 !== _p$.n && (_p$.n = _$setProp(_el$146, "style", _v$47, _p$.n));
8624
+ _v$48 !== _p$.s && (_p$.s = _$setProp(_el$148, "style", _v$48, _p$.s));
8391
8625
  return _p$;
8392
8626
  }, {
8393
8627
  e: undefined,
@@ -8398,7 +8632,7 @@ function LoopDashboard(props) {
8398
8632
  n: undefined,
8399
8633
  s: undefined
8400
8634
  });
8401
- return _el$132;
8635
+ return _el$135;
8402
8636
  })();
8403
8637
  }
8404
8638
  })];
@@ -8415,28 +8649,62 @@ function LoopDashboard(props) {
8415
8649
  },
8416
8650
  get fallback() {
8417
8651
  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");
8419
- _$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.`));
8652
+ var _el$275 = _$createElement("box"), _el$276 = _$createElement("text"), _el$277 = _$createElement("span"), _el$278 = _$createTextNode(`No live command sessions`), _el$279 = _$createTextNode(`. `), _el$280 = _$createElement("span"), _el$282 = _$createElement("span"), _el$283 = _$createTextNode(` to start one`), _el$284 = _$createElement("text"), _el$285 = _$createElement("span"), _el$287 = _$createElement("span"), _el$289 = _$createElement("span"), _el$291 = _$createElement("span"), _el$293 = _$createElement("span"), _el$295 = _$createElement("span"), _el$297 = _$createElement("span");
8653
+ _$insertNode(_el$275, _el$276);
8654
+ _$insertNode(_el$275, _el$284);
8655
+ _$setProp(_el$275, "flexDirection", "column");
8656
+ _$setProp(_el$275, "gap", 1);
8657
+ _$setProp(_el$275, "padding", 1);
8658
+ _$insertNode(_el$276, _el$277);
8659
+ _$insertNode(_el$276, _el$280);
8660
+ _$insertNode(_el$276, _el$282);
8661
+ _$insertNode(_el$277, _el$278);
8662
+ _$insertNode(_el$277, _el$279);
8663
+ _$insert(_el$277, (() => {
8664
+ var _c$27 = _$memo(() => hiddenFinishedCommands() > 0);
8665
+ return () => _c$27() ? ` \u2014 ${hiddenFinishedCommands()} finished hidden` : "";
8666
+ })(), _el$279);
8667
+ _$insertNode(_el$280, _$createTextNode(`:new &lt;command&gt;`));
8668
+ _$insertNode(_el$282, _el$283);
8669
+ _$insert(_el$282, () => hiddenFinishedCommands() > 0 ? ", or " : "; ", null);
8670
+ _$insert(_el$276, (() => {
8671
+ var _c$28 = _$memo(() => hiddenFinishedCommands() > 0);
8672
+ return () => _c$28() && (() => {
8673
+ var _el$299 = _$createElement("span"), _el$300 = _$createElement("span"), _el$302 = _$createElement("span");
8674
+ _$insertNode(_el$299, _el$300);
8675
+ _$insertNode(_el$299, _el$302);
8676
+ _$insertNode(_el$300, _$createTextNode(`c`));
8677
+ _$insertNode(_el$302, _$createTextNode(` to show finished.`));
8678
+ _$effect((_p$) => {
8679
+ var _v$59 = {
8680
+ fg: theme().warning
8681
+ }, _v$60 = {
8682
+ fg: theme().textMuted
8683
+ };
8684
+ _v$59 !== _p$.e && (_p$.e = _$setProp(_el$300, "style", _v$59, _p$.e));
8685
+ _v$60 !== _p$.t && (_p$.t = _$setProp(_el$302, "style", _v$60, _p$.t));
8686
+ return _p$;
8687
+ }, {
8688
+ e: undefined,
8689
+ t: undefined
8690
+ });
8691
+ return _el$299;
8692
+ })();
8693
+ })(), null);
8694
+ _$insertNode(_el$284, _el$285);
8695
+ _$insertNode(_el$284, _el$287);
8696
+ _$insertNode(_el$284, _el$289);
8697
+ _$insertNode(_el$284, _el$291);
8698
+ _$insertNode(_el$284, _el$293);
8699
+ _$insertNode(_el$284, _el$295);
8700
+ _$insertNode(_el$284, _el$297);
8701
+ _$insertNode(_el$285, _$createTextNode(`Tip: `));
8702
+ _$insertNode(_el$287, _$createTextNode(`o`));
8703
+ _$insertNode(_el$289, _$createTextNode(` fullscreen \xB7 `));
8704
+ _$insertNode(_el$291, _$createTextNode(`X kill \xB7 R restart \xB7 x remove-done`));
8705
+ _$insertNode(_el$293, _$createTextNode(` \xB7 `));
8706
+ _$insertNode(_el$295, _$createTextNode(`:interrupt :terminate :remove`));
8707
+ _$insertNode(_el$297, _$createTextNode(` manage \xB7 text + Enter writes stdin.`));
8440
8708
  _$effect((_p$) => {
8441
8709
  var _v$49 = {
8442
8710
  fg: theme().textMuted
@@ -8454,15 +8722,21 @@ function LoopDashboard(props) {
8454
8722
  fg: theme().warning
8455
8723
  }, _v$56 = {
8456
8724
  fg: theme().textMuted
8725
+ }, _v$57 = {
8726
+ fg: theme().warning
8727
+ }, _v$58 = {
8728
+ fg: theme().textMuted
8457
8729
  };
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));
8730
+ _v$49 !== _p$.e && (_p$.e = _$setProp(_el$277, "style", _v$49, _p$.e));
8731
+ _v$50 !== _p$.t && (_p$.t = _$setProp(_el$280, "style", _v$50, _p$.t));
8732
+ _v$51 !== _p$.a && (_p$.a = _$setProp(_el$282, "style", _v$51, _p$.a));
8733
+ _v$52 !== _p$.o && (_p$.o = _$setProp(_el$285, "style", _v$52, _p$.o));
8734
+ _v$53 !== _p$.i && (_p$.i = _$setProp(_el$287, "style", _v$53, _p$.i));
8735
+ _v$54 !== _p$.n && (_p$.n = _$setProp(_el$289, "style", _v$54, _p$.n));
8736
+ _v$55 !== _p$.s && (_p$.s = _$setProp(_el$291, "style", _v$55, _p$.s));
8737
+ _v$56 !== _p$.h && (_p$.h = _$setProp(_el$293, "style", _v$56, _p$.h));
8738
+ _v$57 !== _p$.r && (_p$.r = _$setProp(_el$295, "style", _v$57, _p$.r));
8739
+ _v$58 !== _p$.d && (_p$.d = _$setProp(_el$297, "style", _v$58, _p$.d));
8466
8740
  return _p$;
8467
8741
  }, {
8468
8742
  e: undefined,
@@ -8472,120 +8746,122 @@ function LoopDashboard(props) {
8472
8746
  i: undefined,
8473
8747
  n: undefined,
8474
8748
  s: undefined,
8475
- h: undefined
8749
+ h: undefined,
8750
+ r: undefined,
8751
+ d: undefined
8476
8752
  });
8477
- return _el$260;
8753
+ return _el$275;
8478
8754
  })();
8479
8755
  },
8480
8756
  get children() {
8481
- var _el$45 = _$createElement("scrollbox");
8482
- _$insert(_el$45, _$createComponent(For, {
8757
+ var _el$44 = _$createElement("scrollbox");
8758
+ _$insert(_el$44, _$createComponent(For, {
8483
8759
  get each() {
8484
8760
  return ownerCommands();
8485
8761
  },
8486
8762
  children: (cmd, i) => {
8487
8763
  const isActive = () => i() === cmdSelected();
8488
8764
  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, (() => {
8504
- var _c$23 = _$memo(() => !!isActive());
8505
- return () => _c$23() ? `\u25B6 ${commandStatusIcon(cmd.status)} ${cmd.title}` : ` ${commandStatusIcon(cmd.status)} ${cmd.title}`;
8765
+ var _el$304 = _$createElement("box"), _el$305 = _$createElement("text"), _el$306 = _$createElement("span"), _el$307 = _$createElement("span"), _el$309 = _$createElement("span"), _el$311 = _$createElement("span"), _el$312 = _$createElement("span"), _el$314 = _$createElement("span"), _el$315 = _$createElement("span"), _el$316 = _$createTextNode(` \u2502 `);
8766
+ _$insertNode(_el$304, _el$305);
8767
+ _$setProp(_el$304, "flexDirection", "row");
8768
+ _$setProp(_el$304, "paddingLeft", 1);
8769
+ _$setProp(_el$304, "paddingRight", 1);
8770
+ _$insertNode(_el$305, _el$306);
8771
+ _$insertNode(_el$305, _el$307);
8772
+ _$insertNode(_el$305, _el$309);
8773
+ _$insertNode(_el$305, _el$311);
8774
+ _$insertNode(_el$305, _el$312);
8775
+ _$insertNode(_el$305, _el$314);
8776
+ _$insertNode(_el$305, _el$315);
8777
+ _$setProp(_el$305, "wrapMode", "none");
8778
+ _$setProp(_el$305, "truncate", true);
8779
+ _$insert(_el$306, (() => {
8780
+ var _c$29 = _$memo(() => !!isActive());
8781
+ return () => _c$29() ? `\u25B6 ${commandStatusIcon(cmd.status)} ${cmd.title}` : ` ${commandStatusIcon(cmd.status)} ${cmd.title}`;
8506
8782
  })());
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, (() => {
8513
- var _c$24 = _$memo(() => cmd.args.length > 0);
8514
- 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", {
8783
+ _$insertNode(_el$307, _$createTextNode(` \u2502 `));
8784
+ _$insertNode(_el$309, _$createTextNode(`Cmd `));
8785
+ _$insert(_el$311, () => commandStatusLabel(cmd.status).short);
8786
+ _$insertNode(_el$312, _$createTextNode(` \u2502 `));
8787
+ _$insert(_el$314, () => cmd.command);
8788
+ _$insert(_el$305, (() => {
8789
+ var _c$30 = _$memo(() => cmd.args.length > 0);
8790
+ return () => _c$30() && (() => {
8791
+ var _el$317 = _$createElement("span"), _el$318 = _$createTextNode(` `);
8792
+ _$insertNode(_el$317, _el$318);
8793
+ _$insert(_el$317, () => cmd.args.join(" ").slice(0, 40), null);
8794
+ _$effect((_$p) => _$setProp(_el$317, "style", {
8519
8795
  fg: theme().textMuted
8520
8796
  }, _$p));
8521
- return _el$292;
8797
+ return _el$317;
8522
8798
  })();
8523
- })(), _el$290);
8524
- _$insert(_el$280, (() => {
8525
- var _c$25 = _$memo(() => cmd.exitCode !== undefined);
8526
- 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", {
8799
+ })(), _el$315);
8800
+ _$insert(_el$305, (() => {
8801
+ var _c$31 = _$memo(() => cmd.exitCode !== undefined);
8802
+ return () => _c$31() && (() => {
8803
+ var _el$319 = _$createElement("span"), _el$320 = _$createTextNode(` \u2502 exit `);
8804
+ _$insertNode(_el$319, _el$320);
8805
+ _$insert(_el$319, () => cmd.exitCode, null);
8806
+ _$effect((_$p) => _$setProp(_el$319, "style", {
8531
8807
  fg: cmd.exitCode === 0 ? theme().success : theme().error
8532
8808
  }, _$p));
8533
- return _el$294;
8809
+ return _el$319;
8534
8810
  })();
8535
- })(), _el$290);
8536
- _$insert(_el$280, (() => {
8537
- var _c$26 = _$memo(() => !!cmd.signal);
8538
- 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", {
8811
+ })(), _el$315);
8812
+ _$insert(_el$305, (() => {
8813
+ var _c$32 = _$memo(() => !!cmd.signal);
8814
+ return () => _c$32() && (() => {
8815
+ var _el$321 = _$createElement("span"), _el$322 = _$createTextNode(` \u2502 `);
8816
+ _$insertNode(_el$321, _el$322);
8817
+ _$insert(_el$321, () => cmd.signal, null);
8818
+ _$effect((_$p) => _$setProp(_el$321, "style", {
8543
8819
  fg: theme().warning
8544
8820
  }, _$p));
8545
- return _el$296;
8821
+ return _el$321;
8546
8822
  })();
8547
- })(), _el$290);
8548
- _$insertNode(_el$290, _el$291);
8549
- _$insert(_el$290, () => ageLabel(cmd.updatedAt, clock()), null);
8550
- _$insert(_el$280, (() => {
8551
- var _c$27 = _$memo(() => !!cmd.truncated);
8552
- return () => _c$27() && (() => {
8553
- var _el$298 = _$createElement("span");
8554
- _$insertNode(_el$298, _$createTextNode(` \u2502 \u26A0 truncated`));
8555
- _$effect((_$p) => _$setProp(_el$298, "style", {
8823
+ })(), _el$315);
8824
+ _$insertNode(_el$315, _el$316);
8825
+ _$insert(_el$315, () => ageLabel(cmd.updatedAt, clock()), null);
8826
+ _$insert(_el$305, (() => {
8827
+ var _c$33 = _$memo(() => !!cmd.truncated);
8828
+ return () => _c$33() && (() => {
8829
+ var _el$323 = _$createElement("span");
8830
+ _$insertNode(_el$323, _$createTextNode(` \u2502 \u26A0 truncated`));
8831
+ _$effect((_$p) => _$setProp(_el$323, "style", {
8556
8832
  fg: theme().warning,
8557
8833
  bold: true
8558
8834
  }, _$p));
8559
- return _el$298;
8835
+ return _el$323;
8560
8836
  })();
8561
8837
  })(), null);
8562
8838
  _$effect((_p$) => {
8563
- var _v$57 = isActive() ? theme().backgroundElement : undefined, _v$58 = {
8839
+ var _v$61 = isActive() ? theme().backgroundElement : undefined, _v$62 = {
8564
8840
  fg: commandStatusColor(cmd.status, theme()),
8565
8841
  bold: isActive()
8566
- }, _v$59 = {
8842
+ }, _v$63 = {
8567
8843
  fg: theme().textMuted
8568
- }, _v$60 = {
8844
+ }, _v$64 = {
8569
8845
  fg: theme().textMuted
8570
- }, _v$61 = {
8846
+ }, _v$65 = {
8571
8847
  fg: commandStatusColor(cmd.status, theme()),
8572
8848
  bold: true
8573
- }, _v$62 = {
8849
+ }, _v$66 = {
8574
8850
  fg: theme().textMuted
8575
- }, _v$63 = {
8851
+ }, _v$67 = {
8576
8852
  fg: theme().accent,
8577
8853
  bold: true
8578
- }, _v$64 = {
8854
+ }, _v$68 = {
8579
8855
  fg: theme().textMuted
8580
8856
  };
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));
8857
+ _v$61 !== _p$.e && (_p$.e = _$setProp(_el$304, "backgroundColor", _v$61, _p$.e));
8858
+ _v$62 !== _p$.t && (_p$.t = _$setProp(_el$306, "style", _v$62, _p$.t));
8859
+ _v$63 !== _p$.a && (_p$.a = _$setProp(_el$307, "style", _v$63, _p$.a));
8860
+ _v$64 !== _p$.o && (_p$.o = _$setProp(_el$309, "style", _v$64, _p$.o));
8861
+ _v$65 !== _p$.i && (_p$.i = _$setProp(_el$311, "style", _v$65, _p$.i));
8862
+ _v$66 !== _p$.n && (_p$.n = _$setProp(_el$312, "style", _v$66, _p$.n));
8863
+ _v$67 !== _p$.s && (_p$.s = _$setProp(_el$314, "style", _v$67, _p$.s));
8864
+ _v$68 !== _p$.h && (_p$.h = _$setProp(_el$315, "style", _v$68, _p$.h));
8589
8865
  return _p$;
8590
8866
  }, {
8591
8867
  e: undefined,
@@ -8597,175 +8873,175 @@ function LoopDashboard(props) {
8597
8873
  s: undefined,
8598
8874
  h: undefined
8599
8875
  });
8600
- return _el$279;
8876
+ return _el$304;
8601
8877
  })();
8602
8878
  }
8603
8879
  }));
8604
- _$effect((_$p) => _$setProp(_el$45, "height", Math.min(ownerCommands().length, 10), _$p));
8605
- return _el$45;
8880
+ _$effect((_$p) => _$setProp(_el$44, "height", Math.min(ownerCommands().length, 10), _$p));
8881
+ return _el$44;
8606
8882
  }
8607
8883
  }), _$createComponent(Show, {
8608
8884
  get when() {
8609
8885
  return selectedCommand();
8610
8886
  },
8611
8887
  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, (() => {
8650
- var _c$28 = _$memo(() => cmd().args.length > 0);
8651
- 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", {
8888
+ var _el$325 = _$createElement("box"), _el$326 = _$createElement("text"), _el$327 = _$createElement("span"), _el$328 = _$createTextNode(` `), _el$329 = _$createElement("span"), _el$331 = _$createElement("span"), _el$332 = _$createTextNode(` \u2014 `), _el$333 = _$createTextNode(`
8889
+ `), _el$334 = _$createElement("span"), _el$336 = _$createElement("span"), _el$337 = _$createTextNode(`
8890
+ `), _el$338 = _$createElement("span"), _el$340 = _$createElement("span"), _el$342 = _$createElement("span"), _el$343 = _$createTextNode(`
8891
+ `), _el$344 = _$createElement("span"), _el$346 = _$createElement("span"), _el$348 = _$createElement("span"), _el$349 = _$createTextNode(` bytes`), _el$350 = _$createElement("span"), _el$351 = _$createTextNode(` \u2502 updated `), _el$352 = _$createTextNode(`
8892
+ `), _el$353 = _$createElement("span");
8893
+ _$insertNode(_el$325, _el$326);
8894
+ _$setProp(_el$325, "flexDirection", "column");
8895
+ _$setProp(_el$325, "border", true);
8896
+ _$setProp(_el$325, "padding", 1);
8897
+ _$setProp(_el$325, "flexShrink", 0);
8898
+ _$setProp(_el$325, "maxHeight", 8);
8899
+ _$insertNode(_el$326, _el$327);
8900
+ _$insertNode(_el$326, _el$329);
8901
+ _$insertNode(_el$326, _el$331);
8902
+ _$insertNode(_el$326, _el$333);
8903
+ _$insertNode(_el$326, _el$334);
8904
+ _$insertNode(_el$326, _el$336);
8905
+ _$insertNode(_el$326, _el$337);
8906
+ _$insertNode(_el$326, _el$338);
8907
+ _$insertNode(_el$326, _el$340);
8908
+ _$insertNode(_el$326, _el$342);
8909
+ _$insertNode(_el$326, _el$343);
8910
+ _$insertNode(_el$326, _el$344);
8911
+ _$insertNode(_el$326, _el$346);
8912
+ _$insertNode(_el$326, _el$348);
8913
+ _$insertNode(_el$326, _el$350);
8914
+ _$insertNode(_el$326, _el$352);
8915
+ _$insertNode(_el$326, _el$353);
8916
+ _$insertNode(_el$327, _el$328);
8917
+ _$insert(_el$327, () => commandStatusIcon(cmd().status), _el$328);
8918
+ _$insert(_el$327, () => cmd().title, null);
8919
+ _$insertNode(_el$329, _$createTextNode(` Cmd `));
8920
+ _$insertNode(_el$331, _el$332);
8921
+ _$insert(_el$331, () => commandStatusLabel(cmd().status).short, _el$332);
8922
+ _$insert(_el$331, () => commandStatusLabel(cmd().status).hint, null);
8923
+ _$insertNode(_el$334, _$createTextNode(`\u2B22 Spawn: `));
8924
+ _$insert(_el$336, () => cmd().command);
8925
+ _$insert(_el$326, (() => {
8926
+ var _c$34 = _$memo(() => cmd().args.length > 0);
8927
+ return () => _c$34() && (() => {
8928
+ var _el$355 = _$createElement("span"), _el$356 = _$createTextNode(` `);
8929
+ _$insertNode(_el$355, _el$356);
8930
+ _$insert(_el$355, () => cmd().args.join(" "), null);
8931
+ _$effect((_$p) => _$setProp(_el$355, "style", {
8656
8932
  fg: theme().text
8657
8933
  }, _$p));
8658
- return _el$330;
8934
+ return _el$355;
8659
8935
  })();
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, (() => {
8665
- var _c$29 = _$memo(() => !!cmd().goalID);
8666
- 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", {
8936
+ })(), _el$337);
8937
+ _$insertNode(_el$338, _$createTextNode(`\uD83D\uDCC1 `));
8938
+ _$insertNode(_el$340, _$createTextNode(`Cwd: `));
8939
+ _$insert(_el$342, () => cmd().cwd.replace(String(props.directory), "."));
8940
+ _$insert(_el$326, (() => {
8941
+ var _c$35 = _$memo(() => !!cmd().goalID);
8942
+ return () => _c$35() && [(() => {
8943
+ var _el$357 = _$createElement("span");
8944
+ _$insertNode(_el$357, _$createTextNode(` \u2502 \uD83D\uDD17 linked goal `));
8945
+ _$effect((_$p) => _$setProp(_el$357, "style", {
8670
8946
  fg: theme().textMuted
8671
8947
  }, _$p));
8672
- return _el$332;
8948
+ return _el$357;
8673
8949
  })(), (() => {
8674
- var _el$334 = _$createElement("span");
8675
- _$insert(_el$334, () => cmd().goalID.slice(0, 8));
8676
- _$effect((_$p) => _$setProp(_el$334, "style", {
8950
+ var _el$359 = _$createElement("span");
8951
+ _$insert(_el$359, () => cmd().goalID.slice(0, 8));
8952
+ _$effect((_$p) => _$setProp(_el$359, "style", {
8677
8953
  fg: theme().text
8678
8954
  }, _$p));
8679
- return _el$334;
8955
+ return _el$359;
8680
8956
  })()];
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, (() => {
8687
- var _c$30 = _$memo(() => !!cmd().truncated);
8688
- return () => _c$30() && (() => {
8689
- var _el$335 = _$createElement("span");
8690
- _$insertNode(_el$335, _$createTextNode(` \xB7 \u26A0 truncated`));
8691
- _$effect((_$p) => _$setProp(_el$335, "style", {
8957
+ })(), _el$343);
8958
+ _$insertNode(_el$344, _$createTextNode(`\uD83D\uDCBE `));
8959
+ _$insertNode(_el$346, _$createTextNode(`Output: `));
8960
+ _$insertNode(_el$348, _el$349);
8961
+ _$insert(_el$348, () => cmd().outputBytes, _el$349);
8962
+ _$insert(_el$326, (() => {
8963
+ var _c$36 = _$memo(() => !!cmd().truncated);
8964
+ return () => _c$36() && (() => {
8965
+ var _el$360 = _$createElement("span");
8966
+ _$insertNode(_el$360, _$createTextNode(` \xB7 \u26A0 truncated`));
8967
+ _$effect((_$p) => _$setProp(_el$360, "style", {
8692
8968
  fg: theme().warning,
8693
8969
  bold: true
8694
8970
  }, _$p));
8695
- return _el$335;
8971
+ return _el$360;
8696
8972
  })();
8697
- })(), _el$325);
8698
- _$insertNode(_el$325, _el$326);
8699
- _$insert(_el$325, () => ageLabel(cmd().updatedAt, clock()), null);
8700
- _$insert(_el$301, (() => {
8701
- var _c$31 = _$memo(() => !!cmd().lastError);
8702
- return () => _c$31() && [(() => {
8703
- var _el$337 = _$createElement("span"), _el$338 = _$createTextNode(`
8973
+ })(), _el$350);
8974
+ _$insertNode(_el$350, _el$351);
8975
+ _$insert(_el$350, () => ageLabel(cmd().updatedAt, clock()), null);
8976
+ _$insert(_el$326, (() => {
8977
+ var _c$37 = _$memo(() => !!cmd().lastError);
8978
+ return () => _c$37() && [(() => {
8979
+ var _el$362 = _$createElement("span"), _el$363 = _$createTextNode(`
8704
8980
  \u26A0 Error: `);
8705
- _$insertNode(_el$337, _el$338);
8706
- _$effect((_$p) => _$setProp(_el$337, "style", {
8981
+ _$insertNode(_el$362, _el$363);
8982
+ _$effect((_$p) => _$setProp(_el$362, "style", {
8707
8983
  fg: theme().error,
8708
8984
  bold: true
8709
8985
  }, _$p));
8710
- return _el$337;
8986
+ return _el$362;
8711
8987
  })(), (() => {
8712
- var _el$340 = _$createElement("span");
8713
- _$insert(_el$340, () => cmd().lastError.slice(0, 120));
8714
- _$effect((_$p) => _$setProp(_el$340, "style", {
8988
+ var _el$365 = _$createElement("span");
8989
+ _$insert(_el$365, () => cmd().lastError.slice(0, 120));
8990
+ _$effect((_$p) => _$setProp(_el$365, "style", {
8715
8991
  fg: theme().error
8716
8992
  }, _$p));
8717
- return _el$340;
8993
+ return _el$365;
8718
8994
  })()];
8719
- })(), _el$327);
8720
- _$insertNode(_el$328, _$createTextNode(`o fullscreen \xB7 :interrupt :terminate :remove \xB7 text + Enter writes stdin`));
8995
+ })(), _el$352);
8996
+ _$insertNode(_el$353, _$createTextNode(`o fullscreen \xB7 X kill \xB7 R restart \xB7 x remove-done \xB7 :interrupt :terminate :remove \xB7 text + Enter writes stdin`));
8721
8997
  _$effect((_p$) => {
8722
- var _v$65 = commandBorderColor(cmd().status, theme()), _v$66 = {
8998
+ var _v$69 = commandBorderColor(cmd().status, theme()), _v$70 = {
8723
8999
  fg: commandStatusColor(cmd().status, theme()),
8724
9000
  bold: true
8725
- }, _v$67 = {
9001
+ }, _v$71 = {
8726
9002
  fg: theme().textMuted
8727
- }, _v$68 = {
9003
+ }, _v$72 = {
8728
9004
  fg: commandStatusColor(cmd().status, theme())
8729
- }, _v$69 = {
9005
+ }, _v$73 = {
8730
9006
  fg: theme().primary,
8731
9007
  bold: true
8732
- }, _v$70 = {
9008
+ }, _v$74 = {
8733
9009
  fg: theme().accent,
8734
9010
  bold: true
8735
- }, _v$71 = {
9011
+ }, _v$75 = {
8736
9012
  fg: theme().textMuted
8737
- }, _v$72 = {
9013
+ }, _v$76 = {
8738
9014
  fg: theme().accent,
8739
9015
  bold: true
8740
- }, _v$73 = {
9016
+ }, _v$77 = {
8741
9017
  fg: theme().textMuted
8742
- }, _v$74 = {
9018
+ }, _v$78 = {
8743
9019
  fg: theme().warning,
8744
9020
  bold: true
8745
- }, _v$75 = {
9021
+ }, _v$79 = {
8746
9022
  fg: theme().warning,
8747
9023
  bold: true
8748
- }, _v$76 = {
9024
+ }, _v$80 = {
8749
9025
  fg: theme().text
8750
- }, _v$77 = {
9026
+ }, _v$81 = {
8751
9027
  fg: theme().textMuted
8752
- }, _v$78 = {
9028
+ }, _v$82 = {
8753
9029
  fg: theme().textMuted
8754
9030
  };
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));
9031
+ _v$69 !== _p$.e && (_p$.e = _$setProp(_el$325, "borderColor", _v$69, _p$.e));
9032
+ _v$70 !== _p$.t && (_p$.t = _$setProp(_el$327, "style", _v$70, _p$.t));
9033
+ _v$71 !== _p$.a && (_p$.a = _$setProp(_el$329, "style", _v$71, _p$.a));
9034
+ _v$72 !== _p$.o && (_p$.o = _$setProp(_el$331, "style", _v$72, _p$.o));
9035
+ _v$73 !== _p$.i && (_p$.i = _$setProp(_el$334, "style", _v$73, _p$.i));
9036
+ _v$74 !== _p$.n && (_p$.n = _$setProp(_el$336, "style", _v$74, _p$.n));
9037
+ _v$75 !== _p$.s && (_p$.s = _$setProp(_el$338, "style", _v$75, _p$.s));
9038
+ _v$76 !== _p$.h && (_p$.h = _$setProp(_el$340, "style", _v$76, _p$.h));
9039
+ _v$77 !== _p$.r && (_p$.r = _$setProp(_el$342, "style", _v$77, _p$.r));
9040
+ _v$78 !== _p$.d && (_p$.d = _$setProp(_el$344, "style", _v$78, _p$.d));
9041
+ _v$79 !== _p$.l && (_p$.l = _$setProp(_el$346, "style", _v$79, _p$.l));
9042
+ _v$80 !== _p$.u && (_p$.u = _$setProp(_el$348, "style", _v$80, _p$.u));
9043
+ _v$81 !== _p$.c && (_p$.c = _$setProp(_el$350, "style", _v$81, _p$.c));
9044
+ _v$82 !== _p$.w && (_p$.w = _$setProp(_el$353, "style", _v$82, _p$.w));
8769
9045
  return _p$;
8770
9046
  }, {
8771
9047
  e: undefined,
@@ -8783,7 +9059,7 @@ function LoopDashboard(props) {
8783
9059
  c: undefined,
8784
9060
  w: undefined
8785
9061
  });
8786
- return _el$300;
9062
+ return _el$325;
8787
9063
  })()
8788
9064
  })];
8789
9065
  }
@@ -8793,47 +9069,47 @@ function LoopDashboard(props) {
8793
9069
  return _$memo(() => !!showLogs())() && events().length > 0;
8794
9070
  },
8795
9071
  get children() {
8796
- var _el$46 = _$createElement("box"), _el$47 = _$createElement("text"), _el$48 = _$createElement("span"), _el$50 = _$createElement("span");
9072
+ var _el$45 = _$createElement("box"), _el$46 = _$createElement("text"), _el$47 = _$createElement("span"), _el$49 = _$createElement("span");
9073
+ _$insertNode(_el$45, _el$46);
9074
+ _$setProp(_el$45, "flexDirection", "column");
9075
+ _$setProp(_el$45, "border", true);
9076
+ _$setProp(_el$45, "padding", 1);
9077
+ _$setProp(_el$45, "maxHeight", 7);
9078
+ _$setProp(_el$45, "flexShrink", 0);
9079
+ _$setProp(_el$45, "overflow", "hidden");
8797
9080
  _$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, {
9081
+ _$insertNode(_el$46, _el$49);
9082
+ _$insertNode(_el$47, _$createTextNode(`\u25C8 Recent Events`));
9083
+ _$insertNode(_el$49, _$createTextNode(` \u2014 :logs to hide`));
9084
+ _$insert(_el$46, _$createComponent(For, {
8809
9085
  get each() {
8810
9086
  return events().slice(-10);
8811
9087
  },
8812
9088
  children: (ev) => [`
8813
9089
  `, (() => {
8814
- var _el$341 = _$createElement("span");
8815
- _$insert(_el$341, () => String(ev.type));
8816
- _$effect((_$p) => _$setProp(_el$341, "style", {
9090
+ var _el$366 = _$createElement("span");
9091
+ _$insert(_el$366, () => String(ev.type));
9092
+ _$effect((_$p) => _$setProp(_el$366, "style", {
8817
9093
  fg: eventColor(String(ev.type), theme()),
8818
9094
  bold: true
8819
9095
  }, _$p));
8820
- return _el$341;
9096
+ return _el$366;
8821
9097
  })(), (() => {
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", {
9098
+ var _el$367 = _$createElement("span"), _el$368 = _$createTextNode(` `);
9099
+ _$insertNode(_el$367, _el$368);
9100
+ _$insert(_el$367, () => ev.goalID?.slice(0, 8), null);
9101
+ _$effect((_$p) => _$setProp(_el$367, "style", {
8826
9102
  fg: theme().textMuted
8827
9103
  }, _$p));
8828
- return _el$342;
9104
+ return _el$367;
8829
9105
  })(), _$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", {
9106
+ var _el$369 = _$createElement("span"), _el$370 = _$createTextNode(` \u2014 `);
9107
+ _$insertNode(_el$369, _el$370);
9108
+ _$insert(_el$369, () => String(ev.summary).slice(0, 60), null);
9109
+ _$effect((_$p) => _$setProp(_el$369, "style", {
8834
9110
  fg: theme().text
8835
9111
  }, _$p));
8836
- return _el$344;
9112
+ return _el$369;
8837
9113
  })())]
8838
9114
  }), null);
8839
9115
  _$effect((_p$) => {
@@ -8843,42 +9119,42 @@ function LoopDashboard(props) {
8843
9119
  }, _v$3 = {
8844
9120
  fg: theme().textMuted
8845
9121
  };
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));
9122
+ _v$ !== _p$.e && (_p$.e = _$setProp(_el$45, "borderColor", _v$, _p$.e));
9123
+ _v$2 !== _p$.t && (_p$.t = _$setProp(_el$47, "style", _v$2, _p$.t));
9124
+ _v$3 !== _p$.a && (_p$.a = _$setProp(_el$49, "style", _v$3, _p$.a));
8849
9125
  return _p$;
8850
9126
  }, {
8851
9127
  e: undefined,
8852
9128
  t: undefined,
8853
9129
  a: undefined
8854
9130
  });
8855
- return _el$46;
9131
+ return _el$45;
8856
9132
  }
8857
9133
  }), null);
9134
+ _$insertNode(_el$51, _el$52);
9135
+ _$insertNode(_el$51, _el$54);
9136
+ _$setProp(_el$51, "flexDirection", "row");
9137
+ _$setProp(_el$51, "border", true);
9138
+ _$setProp(_el$51, "paddingLeft", 1);
9139
+ _$setProp(_el$51, "paddingRight", 1);
9140
+ _$setProp(_el$51, "flexShrink", 0);
9141
+ _$setProp(_el$51, "height", 3);
9142
+ _$setProp(_el$51, "gap", 1);
8858
9143
  _$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 ");
9144
+ _$insert(_el$53, () => mode() === "insert" ? " INSERT \uE0B1" : " NORMAL ");
8869
9145
  _$use((el) => {
8870
9146
  inputEl = el;
8871
9147
  focusInput();
8872
- }, _el$55);
8873
- _$setProp(_el$55, "flexGrow", 1);
8874
- _$setProp(_el$55, "onInput", (v) => {
9148
+ }, _el$54);
9149
+ _$setProp(_el$54, "flexGrow", 1);
9150
+ _$setProp(_el$54, "onInput", (v) => {
8875
9151
  debugLog("onInput", JSON.stringify(v), "mode", mode());
8876
9152
  if (mode() === "insert")
8877
9153
  setCommandInput(v);
8878
9154
  else if (inputEl?.value)
8879
9155
  inputEl.value = "";
8880
9156
  });
8881
- _$setProp(_el$55, "onKeyDown", (evt) => {
9157
+ _$setProp(_el$54, "onKeyDown", (evt) => {
8882
9158
  const name = evt.name || "";
8883
9159
  const seq = evt.sequence || "";
8884
9160
  debugLog("input onKeyDown", `name=${name} seq=${JSON.stringify(seq)} mode=${mode()} value=${JSON.stringify(commandInput())}`);
@@ -8951,13 +9227,13 @@ function LoopDashboard(props) {
8951
9227
  _v$16 !== _p$.m && (_p$.m = _$setProp(_el$29, "style", _v$16, _p$.m));
8952
9228
  _v$17 !== _p$.f && (_p$.f = _$setProp(_el$31, "style", _v$17, _p$.f));
8953
9229
  _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));
9230
+ _v$19 !== _p$.g && (_p$.g = _$setProp(_el$51, "borderColor", _v$19, _p$.g));
9231
+ _v$20 !== _p$.p && (_p$.p = _$setProp(_el$53, "style", _v$20, _p$.p));
9232
+ _v$21 !== _p$.b && (_p$.b = _$setProp(_el$54, "placeholder", _v$21, _p$.b));
9233
+ _v$22 !== _p$.T && (_p$.T = _$setProp(_el$54, "placeholderColor", _v$22, _p$.T));
9234
+ _v$23 !== _p$.A && (_p$.A = _$setProp(_el$54, "cursorColor", _v$23, _p$.A));
9235
+ _v$24 !== _p$.O && (_p$.O = _$setProp(_el$54, "focusedTextColor", _v$24, _p$.O));
9236
+ _v$25 !== _p$.I && (_p$.I = _$setProp(_el$54, "focusedBackgroundColor", _v$25, _p$.I));
8961
9237
  return _p$;
8962
9238
  }, {
8963
9239
  e: undefined,
@@ -9978,7 +10254,7 @@ function CommandPanel(props) {
9978
10254
  });
9979
10255
  const [insertMode, setInsertMode] = createSignal2(false);
9980
10256
  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");
10257
+ 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
10258
  let inputEl;
9983
10259
  const client = createControlClient(props.directory);
9984
10260
  const ownerSessionID = props.ownerSessionID ?? routeOwnerSessionID(props.api);
@@ -10325,6 +10601,26 @@ function CommandPanel(props) {
10325
10601
  commandID: id
10326
10602
  }, id);
10327
10603
  }
10604
+ async function forceKill() {
10605
+ const id = selectedID();
10606
+ if (!id) {
10607
+ setStatusText("No command selected.");
10608
+ return;
10609
+ }
10610
+ await sendRaw("cmd_kill", {
10611
+ commandID: id
10612
+ }, id);
10613
+ }
10614
+ async function restart() {
10615
+ const id = selectedID();
10616
+ if (!id) {
10617
+ setStatusText("No command selected.");
10618
+ return;
10619
+ }
10620
+ await sendRaw("cmd_restart", {
10621
+ commandID: id
10622
+ }, id);
10623
+ }
10328
10624
  async function remove() {
10329
10625
  const id = selectedID();
10330
10626
  if (!id) {
@@ -10335,6 +10631,20 @@ function CommandPanel(props) {
10335
10631
  commandID: id
10336
10632
  }, id);
10337
10633
  }
10634
+ async function removeFinished() {
10635
+ const sel = state().selectedCommand;
10636
+ if (!sel) {
10637
+ setStatusText("No command selected.");
10638
+ return;
10639
+ }
10640
+ if (sel.status === "running") {
10641
+ setStatusText(`"${sel.title}" is still running \u2014 X force kill \xB7 :terminate graceful \xB7 q detach (keeps running).`);
10642
+ return;
10643
+ }
10644
+ await sendRaw("cmd_remove", {
10645
+ commandID: sel.id
10646
+ }, sel.id);
10647
+ }
10338
10648
  async function awaitExit(goalID) {
10339
10649
  const sel = state().selectedCommand;
10340
10650
  if (!sel) {
@@ -10406,6 +10716,12 @@ function CommandPanel(props) {
10406
10716
  case "terminate":
10407
10717
  await terminate();
10408
10718
  break;
10719
+ case "kill":
10720
+ await forceKill();
10721
+ break;
10722
+ case "restart":
10723
+ await restart();
10724
+ break;
10409
10725
  case "remove":
10410
10726
  await remove();
10411
10727
  break;
@@ -10429,7 +10745,7 @@ function CommandPanel(props) {
10429
10745
  await awaitExit(rest[0]);
10430
10746
  break;
10431
10747
  default:
10432
- setStatusText(`Unknown :${verb}. Try :new, :terminate, :remove, :interrupt, :resize, :open-cmd, :await <goalID>`);
10748
+ setStatusText(`Unknown :${verb}. Try :new, :terminate, :kill, :restart, :remove, :interrupt, :resize, :open-cmd, :await <goalID>`);
10433
10749
  }
10434
10750
  }
10435
10751
  function focusInput() {
@@ -10568,6 +10884,21 @@ function CommandPanel(props) {
10568
10884
  }
10569
10885
  return;
10570
10886
  }
10887
+ if (key === "X") {
10888
+ prevent2(evt);
10889
+ forceKill();
10890
+ return;
10891
+ }
10892
+ if (key === "R") {
10893
+ prevent2(evt);
10894
+ restart();
10895
+ return;
10896
+ }
10897
+ if (key === "x") {
10898
+ prevent2(evt);
10899
+ removeFinished();
10900
+ return;
10901
+ }
10571
10902
  if (key === "q") {
10572
10903
  prevent2(evt);
10573
10904
  if (props.onDetach)
@@ -10838,7 +11169,7 @@ function CommandPanel(props) {
10838
11169
  }, _v$5 = insertMode() ? theme().warning : theme().border, _v$6 = {
10839
11170
  fg: insertMode() ? theme().warning : theme().success,
10840
11171
  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;
11172
+ }, _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
11173
  _v$ !== _p$.e && (_p$.e = _$setProp2(_el$2, "borderColor", _v$, _p$.e));
10843
11174
  _v$2 !== _p$.t && (_p$.t = _$setProp2(_el$5, "style", _v$2, _p$.t));
10844
11175
  _v$3 !== _p$.a && (_p$.a = _$setProp2(_el$7, "style", _v$3, _p$.a));
@@ -11087,8 +11418,8 @@ function createTerminalSession(options) {
11087
11418
  }
11088
11419
  command = snap.command;
11089
11420
  connection = "stream";
11090
- connectionDetail = "live";
11091
11421
  live = snap.command.status === "running";
11422
+ connectionDetail = live ? "live" : "saved output (process ended)";
11092
11423
  applySnapshotBytes(snap.data, snap.startOffset, snap.endOffset);
11093
11424
  },
11094
11425
  onDelta: (delta) => {
@@ -11103,6 +11434,7 @@ function createTerminalSession(options) {
11103
11434
  return;
11104
11435
  command = cmd;
11105
11436
  live = cmd.status === "running";
11437
+ connectionDetail = live ? "live" : "saved output (process ended)";
11106
11438
  emitSoon();
11107
11439
  },
11108
11440
  onError: (message) => {
@@ -11136,6 +11468,8 @@ function createTerminalSession(options) {
11136
11468
  return;
11137
11469
  if (connection === "error")
11138
11470
  return;
11471
+ if (command && command.status !== "running")
11472
+ return;
11139
11473
  if (streamLive() && stream.sendInput(data.commandID, bytes).ok)
11140
11474
  return;
11141
11475
  control.executeRaw({ command: "cmd_write", goalID: data.commandID, args: { commandID: data.commandID, input: bytes, ownerSessionID: data.ownerSessionID } }).catch(() => {});
@@ -11150,6 +11484,8 @@ function createTerminalSession(options) {
11150
11484
  return;
11151
11485
  if (connection === "error")
11152
11486
  return;
11487
+ if (command && command.status !== "running")
11488
+ return;
11153
11489
  if (streamLive() && stream.sendInterrupt(data.commandID).ok)
11154
11490
  return;
11155
11491
  control.executeRaw({ command: "cmd_interrupt", goalID: data.commandID, args: { commandID: data.commandID, ownerSessionID: data.ownerSessionID } }).catch(() => {});
@@ -11588,12 +11924,16 @@ function TerminalView(props) {
11588
11924
  }
11589
11925
  if (isInterruptChord(toKeyEvent(evt))) {
11590
11926
  prevent3(evt);
11927
+ if (view()?.command && view()?.command?.status !== "running")
11928
+ return;
11591
11929
  session.interrupt();
11592
11930
  return;
11593
11931
  }
11594
11932
  const bytes = encodeTerminalKey(toKeyEvent(evt));
11595
11933
  if (bytes !== undefined) {
11596
11934
  prevent3(evt);
11935
+ if (view()?.command && view()?.command?.status !== "running")
11936
+ return;
11597
11937
  session.writeInput(bytes);
11598
11938
  }
11599
11939
  });
@@ -11605,6 +11945,7 @@ function TerminalView(props) {
11605
11945
  } catch {}
11606
11946
  });
11607
11947
  const cmd = () => view()?.command;
11948
+ const processRunning = () => cmd()?.status === "running" && view()?.live === true;
11608
11949
  const dims = () => {
11609
11950
  const v = view();
11610
11951
  if (!v)
@@ -11612,10 +11953,10 @@ function TerminalView(props) {
11612
11953
  return `${v.cols}x${v.viewportRows}`;
11613
11954
  };
11614
11955
  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`);
11956
+ 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
11957
  _$insertNode3(_el$, _el$2);
11617
- _$insertNode3(_el$, _el$21);
11618
- _$insertNode3(_el$, _el$22);
11958
+ _$insertNode3(_el$, _el$26);
11959
+ _$insertNode3(_el$, _el$27);
11619
11960
  _$setProp3(_el$, "flexDirection", "column");
11620
11961
  _$setProp3(_el$, "width", "100%");
11621
11962
  _$setProp3(_el$, "height", "100%");
@@ -11667,7 +12008,7 @@ function TerminalView(props) {
11667
12008
  }), null);
11668
12009
  _$insertNode3(_el$12, _el$13);
11669
12010
  _$insert3(_el$13, dims, null);
11670
- _$insert3(_el$13, () => view()?.live ? " \xB7 live" : "", null);
12011
+ _$insert3(_el$13, () => processRunning() ? " \xB7 live" : "", null);
11671
12012
  _$insert3(_el$, _$createComponent3(Show3, {
11672
12013
  get when() {
11673
12014
  return view()?.invalid;
@@ -11703,96 +12044,128 @@ Press Ctrl+] to go back. Nothing was subscribed or written.`);
11703
12044
  });
11704
12045
  return _el$14;
11705
12046
  }
11706
- }), _el$21);
12047
+ }), _el$26);
12048
+ _$insert3(_el$, _$createComponent3(Show3, {
12049
+ get when() {
12050
+ return _$memo3(() => !!cmd())() && !processRunning();
12051
+ },
12052
+ get children() {
12053
+ 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.`);
12054
+ _$insertNode3(_el$21, _el$22);
12055
+ _$setProp3(_el$21, "border", true);
12056
+ _$setProp3(_el$21, "paddingLeft", 1);
12057
+ _$setProp3(_el$21, "paddingRight", 1);
12058
+ _$setProp3(_el$21, "flexShrink", 0);
12059
+ _$insertNode3(_el$22, _el$23);
12060
+ _$insertNode3(_el$23, _el$24);
12061
+ _$insertNode3(_el$23, _el$25);
12062
+ _$insert3(_el$23, () => cmd().status.toUpperCase(), _el$25);
12063
+ _$insert3(_el$23, (() => {
12064
+ var _c$2 = _$memo3(() => cmd().exitCode !== undefined);
12065
+ return () => _c$2() ? ` (exit ${cmd().exitCode})` : "";
12066
+ })(), _el$25);
12067
+ _$effect3((_p$) => {
12068
+ var _v$4 = theme().warning, _v$5 = {
12069
+ fg: theme().warning,
12070
+ bold: true
12071
+ };
12072
+ _v$4 !== _p$.e && (_p$.e = _$setProp3(_el$21, "borderColor", _v$4, _p$.e));
12073
+ _v$5 !== _p$.t && (_p$.t = _$setProp3(_el$23, "style", _v$5, _p$.t));
12074
+ return _p$;
12075
+ }, {
12076
+ e: undefined,
12077
+ t: undefined
12078
+ });
12079
+ return _el$21;
12080
+ }
12081
+ }), _el$26);
11707
12082
  _$use3((el) => {
11708
12083
  viewportEl = el;
11709
12084
  try {
11710
12085
  el.onSizeChange = () => measureViewport();
11711
12086
  } catch {}
11712
12087
  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, {
12088
+ }, _el$26);
12089
+ _$setProp3(_el$26, "flexDirection", "column");
12090
+ _$setProp3(_el$26, "flexGrow", 1);
12091
+ _$setProp3(_el$26, "minHeight", 0);
12092
+ _$setProp3(_el$26, "overflow", "hidden");
12093
+ _$insert3(_el$26, _$createComponent3(Show3, {
11719
12094
  get when() {
11720
12095
  return _$memo3(() => !!view())() && view().rows.length > 0;
11721
12096
  },
11722
12097
  get fallback() {
11723
12098
  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", {
12099
+ var _el$42 = _$createElement3("text"), _el$43 = _$createElement3("span");
12100
+ _$insertNode3(_el$42, _el$43);
12101
+ _$insert3(_el$43, () => view()?.invalid ? "" : "(no output yet)");
12102
+ _$effect3((_$p) => _$setProp3(_el$43, "style", {
11728
12103
  fg: theme().textMuted
11729
12104
  }, _$p));
11730
- return _el$38;
12105
+ return _el$42;
11731
12106
  })();
11732
12107
  },
11733
12108
  get children() {
11734
12109
  return _$createComponent3(For3, {
11735
12110
  get each() {
11736
- return buildTerminalRows(view().rows, view().cols, view().viewportRows, view().cursor);
12111
+ return buildTerminalRows(view().rows, view().cols, view().viewportRows, {
12112
+ ...view().cursor,
12113
+ visible: processRunning() && view().cursor.visible
12114
+ });
11737
12115
  },
11738
12116
  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, {
12117
+ var _el$44 = _$createElement3("text");
12118
+ _$setProp3(_el$44, "wrapMode", "none");
12119
+ _$setProp3(_el$44, "truncate", true);
12120
+ _$insert3(_el$44, _$createComponent3(For3, {
11743
12121
  each: runs,
11744
12122
  children: (run) => (() => {
11745
- var _el$41 = _$createElement3("span");
11746
- _$insert3(_el$41, () => run.text);
11747
- _$effect3((_$p) => _$setProp3(_el$41, "style", {
12123
+ var _el$45 = _$createElement3("span");
12124
+ _$insert3(_el$45, () => run.text);
12125
+ _$effect3((_$p) => _$setProp3(_el$45, "style", {
11748
12126
  fg: run.cursor ? theme().background : run.inverse ? run.fg ?? theme().background : run.fg ?? theme().text,
11749
12127
  bg: run.cursor ? theme().primary : run.inverse ? run.bg ?? theme().text : run.bg,
11750
12128
  bold: run.bold ?? run.cursor,
11751
12129
  underline: run.underline
11752
12130
  }, _$p));
11753
- return _el$41;
12131
+ return _el$45;
11754
12132
  })()
11755
12133
  }));
11756
- return _el$40;
12134
+ return _el$44;
11757
12135
  })()
11758
12136
  });
11759
12137
  }
11760
12138
  }));
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);
12139
+ _$insertNode3(_el$27, _el$28);
12140
+ _$insertNode3(_el$27, _el$38);
12141
+ _$setProp3(_el$27, "flexDirection", "row");
12142
+ _$setProp3(_el$27, "justifyContent", "space-between");
12143
+ _$setProp3(_el$27, "flexShrink", 0);
12144
+ _$insertNode3(_el$28, _el$29);
12145
+ _$insertNode3(_el$28, _el$30);
12146
+ _$insertNode3(_el$28, _el$32);
12147
+ _$insertNode3(_el$28, _el$34);
12148
+ _$insertNode3(_el$28, _el$36);
12149
+ _$insert3(_el$29, () => processRunning() ? "type to write \xB7 " : "saved log \xB7 ");
12150
+ _$insertNode3(_el$30, _$createTextNode3(`Ctrl+C`));
12151
+ _$insertNode3(_el$32, _$createTextNode3(` interrupt \xB7 `));
12152
+ _$insertNode3(_el$34, _$createTextNode3(`Ctrl+]`));
12153
+ _$insertNode3(_el$36, _$createTextNode3(` detach (keeps running)`));
12154
+ _$insertNode3(_el$38, _el$39);
12155
+ _$insertNode3(_el$39, _el$40);
12156
+ _$insertNode3(_el$39, _el$41);
12157
+ _$insert3(_el$39, dims, _el$40);
12158
+ _$insert3(_el$39, () => view()?.totalBytes ?? 0, _el$41);
11781
12159
  _$effect3((_p$) => {
11782
- var _v$4 = {
12160
+ var _v$6 = {
11783
12161
  fg: theme().primary,
11784
12162
  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
12163
  }, _v$7 = {
11790
12164
  fg: theme().textMuted
11791
12165
  }, _v$8 = {
11792
- fg: theme().textMuted
12166
+ fg: cmd() && !processRunning() ? theme().warning : view()?.connection === "stream" ? theme().success : view()?.connection === "polling" ? theme().warning : theme().error
11793
12167
  }, _v$9 = {
11794
- fg: theme().warning,
11795
- bold: true
12168
+ fg: theme().textMuted
11796
12169
  }, _v$0 = {
11797
12170
  fg: theme().textMuted
11798
12171
  }, _v$1 = {
@@ -11801,18 +12174,23 @@ Press Ctrl+] to go back. Nothing was subscribed or written.`);
11801
12174
  }, _v$10 = {
11802
12175
  fg: theme().textMuted
11803
12176
  }, _v$11 = {
12177
+ fg: theme().warning,
12178
+ bold: true
12179
+ }, _v$12 = {
12180
+ fg: theme().textMuted
12181
+ }, _v$13 = {
11804
12182
  fg: theme().textMuted
11805
12183
  };
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));
12184
+ _v$6 !== _p$.e && (_p$.e = _$setProp3(_el$4, "style", _v$6, _p$.e));
12185
+ _v$7 !== _p$.t && (_p$.t = _$setProp3(_el$9, "style", _v$7, _p$.t));
12186
+ _v$8 !== _p$.a && (_p$.a = _$setProp3(_el$1, "style", _v$8, _p$.a));
12187
+ _v$9 !== _p$.o && (_p$.o = _$setProp3(_el$13, "style", _v$9, _p$.o));
12188
+ _v$0 !== _p$.i && (_p$.i = _$setProp3(_el$29, "style", _v$0, _p$.i));
12189
+ _v$1 !== _p$.n && (_p$.n = _$setProp3(_el$30, "style", _v$1, _p$.n));
12190
+ _v$10 !== _p$.s && (_p$.s = _$setProp3(_el$32, "style", _v$10, _p$.s));
12191
+ _v$11 !== _p$.h && (_p$.h = _$setProp3(_el$34, "style", _v$11, _p$.h));
12192
+ _v$12 !== _p$.r && (_p$.r = _$setProp3(_el$36, "style", _v$12, _p$.r));
12193
+ _v$13 !== _p$.d && (_p$.d = _$setProp3(_el$39, "style", _v$13, _p$.d));
11816
12194
  return _p$;
11817
12195
  }, {
11818
12196
  e: undefined,