@bojackduy/opencode-loopd 1.10.5 → 1.12.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
@@ -1,38 +1,5 @@
1
1
  // @bun
2
- var __create = Object.create;
3
- var __getProtoOf = Object.getPrototypeOf;
4
- var __defProp = Object.defineProperty;
5
- var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __hasOwnProp = Object.prototype.hasOwnProperty;
7
- function __accessProp(key) {
8
- return this[key];
9
- }
10
- var __toESMCache_node;
11
- var __toESMCache_esm;
12
- var __toESM = (mod, isNodeMode, target) => {
13
- var canCache = mod != null && typeof mod === "object";
14
- if (canCache) {
15
- var cache = isNodeMode ? __toESMCache_node ??= new WeakMap : __toESMCache_esm ??= new WeakMap;
16
- var cached = cache.get(mod);
17
- if (cached)
18
- return cached;
19
- }
20
- target = mod != null ? __create(__getProtoOf(mod)) : {};
21
- const to = isNodeMode || !mod || !mod.__esModule || !__hasOwnProp.call(mod, "default") ? __defProp(target, "default", { value: mod, enumerable: true }) : target;
22
- if (mod && typeof mod === "object" || typeof mod === "function") {
23
- for (let key of __getOwnPropNames(mod))
24
- if (!__hasOwnProp.call(to, key))
25
- __defProp(to, key, {
26
- get: __accessProp.bind(mod, key),
27
- enumerable: true
28
- });
29
- }
30
- if (canCache)
31
- cache.set(mod, to);
32
- return to;
33
- };
34
2
  var __commonJS = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports);
35
- var __require = import.meta.require;
36
3
 
37
4
  // node_modules/@xterm/headless/lib-headless/xterm-headless.js
38
5
  var require_xterm_headless = __commonJS(function(exports) {
@@ -6001,6 +5968,9 @@ function commandHelp() {
6001
5968
  " :pause / :resume / :retry / :clear Quick controls (also p/r/R/x)",
6002
5969
  " :abort Abort worker session now (status unchanged; A)",
6003
5970
  " :nudge Force re-prompt now with full steering (N)",
5971
+ " :interactive Toggle manual mode (engine never starts turns)",
5972
+ " :model <provider/model> Switch this goal's model (same worker; :models lists options)",
5973
+ " :agent <name> / :agents Switch this goal's agent / list agents (Goals tab only)",
6004
5974
  " :bug / :report Open prefilled GitHub bug report",
6005
5975
  " :logs / :help / :q Toggle logs / help / close",
6006
5976
  " Tip: create goals via /goal in the parent chat (agent clarifies first)."
@@ -6011,14 +5981,13 @@ function commandTabHelp() {
6011
5981
  return [
6012
5982
  "Nav: j/k select | o fullscreen | q close",
6013
5983
  "Commands tab (selected command only):",
6014
- " Ctrl+C / :interrupt Send SIGINT",
6015
- " :terminate Graceful stop (SIGTERM\u2192SIGKILL)",
6016
- " X / :kill Force kill now (SIGKILL)",
6017
- " R / :restart Restart; old log retained",
6018
- " x / :remove Remove finished command + log",
6019
- " :new <cmd> [args] Start (quoted args supported)",
6020
- " bare text + Enter Write stdin line",
6021
- " ? toggle help | : insert | Ctrl+N normal"
5984
+ " c / Ctrl+C Toggle finished / send SIGINT",
5985
+ " :terminate Graceful stop (SIGTERM\u2192SIGKILL)",
5986
+ " X / :kill Force kill now (SIGKILL)",
5987
+ " R / :restart Restart; old log kept",
5988
+ " x / :remove Remove finished + log",
5989
+ " :new <cmd> [args] Start a command",
5990
+ " bare text + Enter Write stdin line"
6022
5991
  ].join(`
6023
5992
  `);
6024
5993
  }
@@ -6325,6 +6294,14 @@ function resolveOpenTarget(input) {
6325
6294
  };
6326
6295
  }
6327
6296
 
6297
+ // src/domain/command-await.ts
6298
+ var TERMINAL_COMMAND_STATUSES = [
6299
+ "exited",
6300
+ "terminated",
6301
+ "missing"
6302
+ ];
6303
+ var MAX_AWAIT_TAIL_BYTES = 4 * 1024;
6304
+
6328
6305
  // src/tui/dashboard-view.ts
6329
6306
  function toggleDashboardView(view) {
6330
6307
  return view === "goals" ? "commands" : "goals";
@@ -6364,12 +6341,12 @@ function moveDashboardSelection(sel, move, goalCount, commandCount) {
6364
6341
  return { ...sel, commandIndex: max };
6365
6342
  }
6366
6343
  }
6367
- function resolveDashboardOpen(lists, sel, ownerSessionID, returnSessionID) {
6344
+ function resolveDashboardOpen(lists, sel, ownerSessionID, returnSessionID, showCompleted = false) {
6368
6345
  if (sel.view === "goals") {
6369
6346
  const goal = lists.goals[sel.goalIndex];
6370
6347
  return resolveOpenTarget({ selection: goal ? { kind: "goal", workerSessionID: goal.workerSessionID } : null, ownerSessionID, returnSessionID });
6371
6348
  }
6372
- const ownerCommands = filterCommandsByOwner(lists.commands, ownerSessionID);
6349
+ const ownerCommands = visibleOwnerCommands(lists.commands, ownerSessionID, showCompleted);
6373
6350
  const cmd = ownerCommands[sel.commandIndex];
6374
6351
  return resolveOpenTarget({
6375
6352
  selection: cmd ? { kind: "command", commandID: cmd.id } : null,
@@ -6377,22 +6354,16 @@ function resolveDashboardOpen(lists, sel, ownerSessionID, returnSessionID) {
6377
6354
  returnSessionID
6378
6355
  });
6379
6356
  }
6380
- function visibleOwnerCommands(commands, ownerSessionID) {
6381
- return filterCommandsByOwner(commands ?? [], ownerSessionID);
6357
+ function visibleOwnerCommands(commands, ownerSessionID, showCompleted = false) {
6358
+ const owned = filterCommandsByOwner(commands ?? [], ownerSessionID);
6359
+ if (showCompleted)
6360
+ return owned;
6361
+ const terminal = TERMINAL_COMMAND_STATUSES;
6362
+ return owned.filter((c) => !terminal.includes(c.status));
6382
6363
  }
6383
6364
 
6384
6365
  // src/tui/dashboard.tsx
6385
6366
  import { randomUUID as randomUUID2 } from "crypto";
6386
- var LOG_FILE = "/tmp/loopd-tui.log";
6387
- function debugLog(...args) {
6388
- try {
6389
- const {
6390
- appendFileSync
6391
- } = __require("fs");
6392
- appendFileSync(LOG_FILE, `[${new Date().toISOString()}] ${args.map((a) => typeof a === "string" ? a : JSON.stringify(a)).join(" ")}
6393
- `);
6394
- } catch {}
6395
- }
6396
6367
  function prevent(evt) {
6397
6368
  const e = evt;
6398
6369
  e.preventDefault?.();
@@ -6666,7 +6637,13 @@ function LoopDashboard(props) {
6666
6637
  const [tab, setTab] = createSignal(props.initialView ?? "goals");
6667
6638
  const [cmdSelected, setCmdSelected] = createSignal(0);
6668
6639
  const ownerSessionID = () => props.ownerSessionID ?? currentRouteSessionID(props.api);
6669
- const ownerCommands = () => visibleOwnerCommands(state()?.commands, ownerSessionID());
6640
+ const ownerCommands = () => visibleOwnerCommands(state()?.commands, ownerSessionID(), showCompleted());
6641
+ const hiddenFinishedCommands = () => {
6642
+ if (showCompleted())
6643
+ return 0;
6644
+ const terminal = ["exited", "terminated", "missing"];
6645
+ return (state()?.commands ?? []).filter((c) => c.ownerSessionID === ownerSessionID() && terminal.includes(c.status)).length;
6646
+ };
6670
6647
  const [state, setState] = createSignal(null);
6671
6648
  const [events, setEvents] = createSignal([]);
6672
6649
  const [selectedGoal, setSelectedGoal] = createSignal(null);
@@ -6698,7 +6675,7 @@ function LoopDashboard(props) {
6698
6675
  if (goals.length > 0 && selected() >= goals.length)
6699
6676
  setSelected(goals.length - 1);
6700
6677
  setSelectedGoal(goals[selected()] || null);
6701
- const cmds = visibleOwnerCommands(s.commands, ownerSessionID());
6678
+ const cmds = visibleOwnerCommands(s.commands, ownerSessionID(), showCompleted());
6702
6679
  if (cmds.length > 0 && cmdSelected() >= cmds.length)
6703
6680
  setCmdSelected(cmds.length - 1);
6704
6681
  setEvents(await client.getEvents(20));
@@ -6725,19 +6702,10 @@ function LoopDashboard(props) {
6725
6702
  typeof u === "function" ? u() : clearInterval(u);
6726
6703
  });
6727
6704
  onMount(() => {
6728
- try {
6729
- const {
6730
- appendFileSync
6731
- } = __require("fs");
6732
- appendFileSync(LOG_FILE, `[${new Date().toISOString()}] dashboard mounted dir=${props.directory} mode=${mode()} dialogOpen=${props.api.ui.dialog.open}
6733
- `);
6734
- } catch {}
6735
- debugLog("mounted", "dialogOpen", props.api.ui.dialog.open, "directory", props.directory);
6736
6705
  focusInput();
6737
6706
  });
6738
6707
  createEffect(() => {
6739
- const m = mode();
6740
- debugLog("mode ->", m);
6708
+ mode();
6741
6709
  focusInput();
6742
6710
  });
6743
6711
  function enterInsertMode() {
@@ -6758,7 +6726,6 @@ function LoopDashboard(props) {
6758
6726
  const name = evt.name || "";
6759
6727
  const seq = evt.sequence || "";
6760
6728
  const raw = evt.raw || "";
6761
- debugLog("useKeyboard", `name=${name} seq=${JSON.stringify(seq)} raw=${JSON.stringify(raw)} shift=${evt.shift} ctrl=${evt.ctrl} mode=${mode()} dialogOpen=${props.api.ui.dialog.open}`);
6762
6729
  if (!props.api.ui.dialog.open)
6763
6730
  return;
6764
6731
  const active = (() => {
@@ -6772,18 +6739,15 @@ function LoopDashboard(props) {
6772
6739
  return;
6773
6740
  const isColon = name === ":" || seq === ":" || raw === ":" || seq.includes(":") || raw.includes(":") || name === ";" || name === "colon";
6774
6741
  const isQuestion = name === "?" || seq === "?" || raw === "?" || seq.includes("?") || raw.includes("?");
6775
- debugLog("isColon", isColon, "isQuestion", isQuestion, "modeBefore", mode());
6776
6742
  if (mode() === "insert") {
6777
6743
  if (isEnterKey(evt)) {
6778
6744
  prevent(evt);
6779
- debugLog("insert enter -> execute");
6780
6745
  executeCommand(commandInput());
6781
6746
  return;
6782
6747
  }
6783
6748
  if (isEscapeKey(evt) || isCtrlN(evt)) {
6784
6749
  prevent(evt);
6785
6750
  returnToNormalMode();
6786
- debugLog("insert -> normal via esc/ctrl+n");
6787
6751
  return;
6788
6752
  }
6789
6753
  return;
@@ -6791,13 +6755,11 @@ function LoopDashboard(props) {
6791
6755
  if (isColon) {
6792
6756
  prevent(evt);
6793
6757
  enterInsertMode();
6794
- debugLog("normal -> insert");
6795
6758
  return;
6796
6759
  }
6797
6760
  if (isQuestion) {
6798
6761
  prevent(evt);
6799
6762
  setShowHelp((value) => !value);
6800
- debugLog("toggle help");
6801
6763
  return;
6802
6764
  }
6803
6765
  const key = raw || seq || name;
@@ -6815,8 +6777,11 @@ function LoopDashboard(props) {
6815
6777
  }
6816
6778
  if (key === "c") {
6817
6779
  prevent(evt);
6818
- setShowCompleted((v) => !v);
6819
- debugLog("toggle completed");
6780
+ setShowCompleted((v) => {
6781
+ const next = !v;
6782
+ setStatusText(next ? `Showing finished ${tab() === "commands" ? "commands" : "goals"}.` : `Hiding finished ${tab() === "commands" ? "commands" : "goals"}.`);
6783
+ return next;
6784
+ });
6820
6785
  return;
6821
6786
  }
6822
6787
  const currentGoals = state()?.goals.filter((goal) => showCompleted() || goal.status !== "complete") || [];
@@ -6824,14 +6789,12 @@ function LoopDashboard(props) {
6824
6789
  if (name === "tab") {
6825
6790
  prevent(evt);
6826
6791
  setTab((v) => toggleDashboardView(v));
6827
- debugLog("switch tab ->", tab());
6828
6792
  return;
6829
6793
  }
6830
6794
  const directionalView = dashboardViewForKey(key);
6831
6795
  if (directionalView !== undefined) {
6832
6796
  prevent(evt);
6833
6797
  setTab(directionalView);
6834
- debugLog("select tab ->", tab());
6835
6798
  return;
6836
6799
  }
6837
6800
  function dashboardSelection() {
@@ -6881,7 +6844,7 @@ function LoopDashboard(props) {
6881
6844
  removeFinishedSelected();
6882
6845
  return;
6883
6846
  }
6884
- const needsGoalsTab = ["p", "r", "A", "N"].includes(key);
6847
+ const needsGoalsTab = ["p", "r", "A", "N", "model", "models", "agent", "agents"].includes(key);
6885
6848
  if (needsGoalsTab && tab() !== "goals") {
6886
6849
  prevent(evt);
6887
6850
  setStatusText("Goal controls need the Goals tab (Tab to switch).");
@@ -6927,7 +6890,7 @@ function LoopDashboard(props) {
6927
6890
  const target = resolveDashboardOpen({
6928
6891
  goals: currentGoals,
6929
6892
  commands: state()?.commands ?? []
6930
- }, dashboardSelection(), ownerSessionID(), currentRouteSessionID(props.api));
6893
+ }, dashboardSelection(), ownerSessionID(), currentRouteSessionID(props.api), showCompleted());
6931
6894
  if (target.kind === "goal") {
6932
6895
  props.api.route.navigate("session", {
6933
6896
  sessionID: target.workerSessionID
@@ -7022,8 +6985,13 @@ function LoopDashboard(props) {
7022
6985
  }, sel.id);
7023
6986
  }
7024
6987
  async function executeCommandTabCommand(verb, positional, raw) {
7025
- debugLog("commands-tab command", verb);
7026
6988
  switch (verb) {
6989
+ case "model":
6990
+ case "models":
6991
+ case "agent":
6992
+ case "agents":
6993
+ setStatusText(`:${verb} is only available on the Goals tab.`);
6994
+ return;
7027
6995
  case "new": {
7028
6996
  const argv = parseNewCommand(raw);
7029
6997
  if (!argv) {
@@ -7095,12 +7063,9 @@ function LoopDashboard(props) {
7095
7063
  }
7096
7064
  }
7097
7065
  async function executeCommand(cmd) {
7098
- debugLog("executeCommand raw=", JSON.stringify(cmd));
7099
7066
  const parsed = parseCommand(cmd);
7100
- debugLog("parsed", parsed);
7101
7067
  if (!parsed) {
7102
7068
  setStatusText("Empty command");
7103
- debugLog("empty command");
7104
7069
  return;
7105
7070
  }
7106
7071
  if (tab() === "commands" && !["q", "close"].includes(parsed.command)) {
@@ -7298,6 +7263,97 @@ function LoopDashboard(props) {
7298
7263
  await refresh();
7299
7264
  break;
7300
7265
  }
7266
+ case "interactive": {
7267
+ if (!selectedGoal()) {
7268
+ setStatusText("No goal");
7269
+ break;
7270
+ }
7271
+ const next = !(selectedGoal().interactive === true);
7272
+ const r = await client.execute({
7273
+ version: 1,
7274
+ requestID: randomUUID2(),
7275
+ requestedAt: new Date().toISOString(),
7276
+ command: "set_interactive",
7277
+ goalID: selectedGoal().id,
7278
+ args: {
7279
+ interactive: next
7280
+ }
7281
+ });
7282
+ setStatusText(r.ok ? r.message : `Error: ${r.message}`);
7283
+ if (r.ok)
7284
+ await refresh();
7285
+ break;
7286
+ }
7287
+ case "agent": {
7288
+ if (!selectedGoal()) {
7289
+ setStatusText("No goal selected");
7290
+ break;
7291
+ }
7292
+ const agent = parsed.positional.join(" ").trim();
7293
+ if (!agent) {
7294
+ setStatusText("Usage: :agent <name> \u2014 :agents lists available agents.");
7295
+ break;
7296
+ }
7297
+ const r = await client.execute({
7298
+ version: 1,
7299
+ requestID: randomUUID2(),
7300
+ requestedAt: new Date().toISOString(),
7301
+ command: "switch_goal_identity",
7302
+ goalID: selectedGoal().id,
7303
+ args: {
7304
+ agent
7305
+ }
7306
+ });
7307
+ setStatusText(r.ok ? r.message : `Error: ${r.message}`);
7308
+ if (r.ok)
7309
+ await refresh();
7310
+ break;
7311
+ }
7312
+ case "agents": {
7313
+ const r = await client.execute({
7314
+ version: 1,
7315
+ requestID: randomUUID2(),
7316
+ requestedAt: new Date().toISOString(),
7317
+ command: "list_agents"
7318
+ });
7319
+ setStatusText(r.ok ? r.message : `Error: ${r.message}`);
7320
+ break;
7321
+ }
7322
+ case "model": {
7323
+ if (!selectedGoal()) {
7324
+ setStatusText("No goal selected");
7325
+ break;
7326
+ }
7327
+ const target = parsed.positional.join(" ").trim();
7328
+ if (!target) {
7329
+ setStatusText("Usage: :model <provider/model> \u2014 e.g. :model openai/gpt-5.6-sol. :models lists what's available.");
7330
+ break;
7331
+ }
7332
+ const r = await client.execute({
7333
+ version: 1,
7334
+ requestID: randomUUID2(),
7335
+ requestedAt: new Date().toISOString(),
7336
+ command: "switch_goal_identity",
7337
+ goalID: selectedGoal().id,
7338
+ args: {
7339
+ model: target
7340
+ }
7341
+ });
7342
+ setStatusText(r.ok ? r.message : `Error: ${r.message}`);
7343
+ if (r.ok)
7344
+ await refresh();
7345
+ break;
7346
+ }
7347
+ case "models": {
7348
+ const r = await client.execute({
7349
+ version: 1,
7350
+ requestID: randomUUID2(),
7351
+ requestedAt: new Date().toISOString(),
7352
+ command: "list_models"
7353
+ });
7354
+ setStatusText(r.ok ? r.message : `Error: ${r.message}`);
7355
+ break;
7356
+ }
7301
7357
  case "goal": {
7302
7358
  setStatusText("Create goals via /goal in the parent chat (agent clarifies first). Dashboard: :send to steer the worker.");
7303
7359
  break;
@@ -7466,14 +7522,14 @@ function LoopDashboard(props) {
7466
7522
  _$setProp(_el$40, "border", true);
7467
7523
  _$setProp(_el$40, "borderColor", "yellow");
7468
7524
  _$setProp(_el$40, "flexShrink", 0);
7469
- _$setProp(_el$40, "maxHeight", 14);
7525
+ _$setProp(_el$40, "maxHeight", 17);
7470
7526
  _$setProp(_el$40, "overflow", "hidden");
7471
7527
  _$insertNode(_el$41, _el$42);
7472
7528
  _$setProp(_el$42, "style", {
7473
7529
  fg: "yellow",
7474
7530
  bold: true
7475
7531
  });
7476
- _$insert(_el$42, () => tab() === "commands" ? "\u2501\u2501\u2501 Commands: ? help : insert X kill R restart x remove-done o fullscreen q close \u2501\u2501\u2501" : "\u2501\u2501\u2501 Keys: ? toggle help c toggle done : insert Ctrl+N normal o open A abort worker N nudge q close \u2501\u2501\u2501");
7532
+ _$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");
7477
7533
  _$insert(_el$41, _$createComponent(For, {
7478
7534
  get each() {
7479
7535
  return (tab() === "commands" ? commandTabHelp() : commandHelp()).split(`
@@ -7761,8 +7817,8 @@ function LoopDashboard(props) {
7761
7817
  var _el$108 = _$createElement("span"), _el$109 = _$createTextNode(` `);
7762
7818
  _$insertNode(_el$108, _el$109);
7763
7819
  _$insert(_el$108, (() => {
7764
- var _c$1 = _$memo(() => runtime().phase === "running");
7765
- return () => _c$1() ? runningFrame() : phaseIcon(runtime().phase);
7820
+ var _c$12 = _$memo(() => runtime().phase === "running");
7821
+ return () => _c$12() ? runningFrame() : phaseIcon(runtime().phase);
7766
7822
  })(), _el$109);
7767
7823
  _$insert(_el$108, () => phaseLabel(runtime().phase).short.toUpperCase(), null);
7768
7824
  _$effect((_$p) => _$setProp(_el$108, "style", {
@@ -7855,29 +7911,65 @@ function LoopDashboard(props) {
7855
7911
  })();
7856
7912
  })(), null);
7857
7913
  _$insert(_el$99, (() => {
7858
- var _c$9 = _$memo(() => !!(runtime() && runtime().retryAfter));
7914
+ var _c$9 = _$memo(() => goal.interactive === true);
7859
7915
  return () => _c$9() && (() => {
7860
- var _el$127 = _$createElement("span"), _el$128 = _$createTextNode(` \u2502 \u21BB `);
7861
- _$insertNode(_el$127, _el$128);
7862
- _$insert(_el$127, () => countdownLabel(runtime().retryAfter, clock()), null);
7916
+ var _el$127 = _$createElement("span");
7917
+ _$insertNode(_el$127, _$createTextNode(` \u2502 \u270B MANUAL`));
7863
7918
  _$effect((_$p) => _$setProp(_el$127, "style", {
7864
- fg: theme().accent
7919
+ fg: theme().accent,
7920
+ bold: true
7865
7921
  }, _$p));
7866
7922
  return _el$127;
7867
7923
  })();
7868
7924
  })(), null);
7869
7925
  _$insert(_el$99, (() => {
7870
- var _c$0 = _$memo(() => !!(runtime() && runtime().nextRunAt));
7926
+ var _c$0 = _$memo(() => !!goal.config.model);
7871
7927
  return () => _c$0() && (() => {
7872
- var _el$129 = _$createElement("span"), _el$130 = _$createTextNode(` \u2502 \u23F0 `);
7928
+ var _el$129 = _$createElement("span"), _el$130 = _$createTextNode(` \u2502 \uD83E\uDDE0 `);
7873
7929
  _$insertNode(_el$129, _el$130);
7874
- _$insert(_el$129, () => countdownLabel(runtime().nextRunAt, clock()), null);
7930
+ _$insert(_el$129, () => goal.config.model, null);
7875
7931
  _$effect((_$p) => _$setProp(_el$129, "style", {
7876
- fg: theme().accent
7932
+ fg: theme().info
7877
7933
  }, _$p));
7878
7934
  return _el$129;
7879
7935
  })();
7880
7936
  })(), null);
7937
+ _$insert(_el$99, (() => {
7938
+ var _c$1 = _$memo(() => !!goal.config.agent);
7939
+ return () => _c$1() && (() => {
7940
+ var _el$131 = _$createElement("span"), _el$132 = _$createTextNode(` \u2502 \uD83E\uDD16 `);
7941
+ _$insertNode(_el$131, _el$132);
7942
+ _$insert(_el$131, () => goal.config.agent, null);
7943
+ _$effect((_$p) => _$setProp(_el$131, "style", {
7944
+ fg: theme().info
7945
+ }, _$p));
7946
+ return _el$131;
7947
+ })();
7948
+ })(), null);
7949
+ _$insert(_el$99, (() => {
7950
+ var _c$10 = _$memo(() => !!(runtime() && runtime().retryAfter));
7951
+ return () => _c$10() && (() => {
7952
+ var _el$133 = _$createElement("span"), _el$134 = _$createTextNode(` \u2502 \u21BB `);
7953
+ _$insertNode(_el$133, _el$134);
7954
+ _$insert(_el$133, () => countdownLabel(runtime().retryAfter, clock()), null);
7955
+ _$effect((_$p) => _$setProp(_el$133, "style", {
7956
+ fg: theme().accent
7957
+ }, _$p));
7958
+ return _el$133;
7959
+ })();
7960
+ })(), null);
7961
+ _$insert(_el$99, (() => {
7962
+ var _c$11 = _$memo(() => !!(runtime() && runtime().nextRunAt));
7963
+ return () => _c$11() && (() => {
7964
+ var _el$135 = _$createElement("span"), _el$136 = _$createTextNode(` \u2502 \u23F0 `);
7965
+ _$insertNode(_el$135, _el$136);
7966
+ _$insert(_el$135, () => countdownLabel(runtime().nextRunAt, clock()), null);
7967
+ _$effect((_$p) => _$setProp(_el$135, "style", {
7968
+ fg: theme().accent
7969
+ }, _$p));
7970
+ return _el$135;
7971
+ })();
7972
+ })(), null);
7881
7973
  _$effect((_p$) => {
7882
7974
  var _v$36 = rowIdFor(goal.id), _v$37 = isActive() ? theme().backgroundElement : undefined, _v$38 = {
7883
7975
  fg: statusColor(goal.status, theme()),
@@ -7921,530 +8013,608 @@ function LoopDashboard(props) {
7921
8013
  const lp = () => goal().lastProgress;
7922
8014
  const blk = () => goal().blocker;
7923
8015
  return (() => {
7924
- var _el$131 = _$createElement("box"), _el$132 = _$createElement("text"), _el$133 = _$createElement("span"), _el$134 = _$createTextNode(` `), _el$135 = _$createElement("span"), _el$137 = _$createElement("span"), _el$138 = _$createTextNode(` \u2014 `), _el$139 = _$createTextNode(`
7925
- `), _el$140 = _$createElement("span"), _el$141 = _$createTextNode(`
7926
- `), _el$142 = _$createElement("span"), _el$144 = _$createElement("span");
7927
- _$insertNode(_el$131, _el$132);
7928
- _$setProp(_el$131, "flexDirection", "column");
7929
- _$setProp(_el$131, "border", true);
7930
- _$setProp(_el$131, "padding", 1);
7931
- _$setProp(_el$131, "flexShrink", 0);
7932
- _$setProp(_el$131, "maxHeight", 13);
7933
- _$insertNode(_el$132, _el$133);
7934
- _$insertNode(_el$132, _el$135);
7935
- _$insertNode(_el$132, _el$137);
7936
- _$insertNode(_el$132, _el$139);
7937
- _$insertNode(_el$132, _el$140);
7938
- _$insertNode(_el$132, _el$141);
7939
- _$insertNode(_el$132, _el$142);
7940
- _$insertNode(_el$132, _el$144);
7941
- _$insertNode(_el$133, _el$134);
7942
- _$insert(_el$133, () => statusIcon(goal().status), _el$134);
7943
- _$insert(_el$133, () => goal().name, null);
7944
- _$insertNode(_el$135, _$createTextNode(` Goal `));
8016
+ var _el$137 = _$createElement("box"), _el$138 = _$createElement("text"), _el$139 = _$createElement("span"), _el$140 = _$createTextNode(` `), _el$141 = _$createElement("span"), _el$143 = _$createElement("span"), _el$144 = _$createTextNode(` \u2014 `), _el$145 = _$createTextNode(`
8017
+ `), _el$146 = _$createElement("span"), _el$147 = _$createTextNode(`
8018
+ `), _el$148 = _$createElement("span"), _el$150 = _$createElement("span");
7945
8019
  _$insertNode(_el$137, _el$138);
7946
- _$insert(_el$137, () => goalStatusLabel(goal().status).short, _el$138);
7947
- _$insert(_el$137, () => goalStatusLabel(goal().status).hint, null);
7948
- _$insert(_el$132, (() => {
7949
- var _c$10 = _$memo(() => !!rt());
7950
- return () => _c$10() && [(() => {
7951
- var _el$145 = _$createElement("span");
7952
- _$insertNode(_el$145, _$createTextNode(` \u2502 Worker `));
7953
- _$effect((_$p) => _$setProp(_el$145, "style", {
8020
+ _$setProp(_el$137, "flexDirection", "column");
8021
+ _$setProp(_el$137, "border", true);
8022
+ _$setProp(_el$137, "padding", 1);
8023
+ _$setProp(_el$137, "flexShrink", 0);
8024
+ _$setProp(_el$137, "maxHeight", 13);
8025
+ _$insertNode(_el$138, _el$139);
8026
+ _$insertNode(_el$138, _el$141);
8027
+ _$insertNode(_el$138, _el$143);
8028
+ _$insertNode(_el$138, _el$145);
8029
+ _$insertNode(_el$138, _el$146);
8030
+ _$insertNode(_el$138, _el$147);
8031
+ _$insertNode(_el$138, _el$148);
8032
+ _$insertNode(_el$138, _el$150);
8033
+ _$insertNode(_el$139, _el$140);
8034
+ _$insert(_el$139, () => statusIcon(goal().status), _el$140);
8035
+ _$insert(_el$139, () => goal().name, null);
8036
+ _$insertNode(_el$141, _$createTextNode(` Goal `));
8037
+ _$insertNode(_el$143, _el$144);
8038
+ _$insert(_el$143, () => goalStatusLabel(goal().status).short, _el$144);
8039
+ _$insert(_el$143, () => goalStatusLabel(goal().status).hint, null);
8040
+ _$insert(_el$138, (() => {
8041
+ var _c$13 = _$memo(() => !!rt());
8042
+ return () => _c$13() && [(() => {
8043
+ var _el$151 = _$createElement("span");
8044
+ _$insertNode(_el$151, _$createTextNode(` \u2502 Worker `));
8045
+ _$effect((_$p) => _$setProp(_el$151, "style", {
7954
8046
  fg: theme().textMuted
7955
8047
  }, _$p));
7956
- return _el$145;
8048
+ return _el$151;
7957
8049
  })(), (() => {
7958
- var _el$147 = _$createElement("span"), _el$148 = _$createTextNode(` `), _el$149 = _$createTextNode(` \u2014 `);
7959
- _$insertNode(_el$147, _el$148);
7960
- _$insertNode(_el$147, _el$149);
7961
- _$insert(_el$147, () => phaseIcon(rt().phase), _el$148);
7962
- _$insert(_el$147, () => phaseLabel(rt().phase).short, _el$149);
7963
- _$insert(_el$147, () => phaseLabel(rt().phase).hint, null);
7964
- _$effect((_$p) => _$setProp(_el$147, "style", {
8050
+ var _el$153 = _$createElement("span"), _el$154 = _$createTextNode(` `), _el$155 = _$createTextNode(` \u2014 `);
8051
+ _$insertNode(_el$153, _el$154);
8052
+ _$insertNode(_el$153, _el$155);
8053
+ _$insert(_el$153, () => phaseIcon(rt().phase), _el$154);
8054
+ _$insert(_el$153, () => phaseLabel(rt().phase).short, _el$155);
8055
+ _$insert(_el$153, () => phaseLabel(rt().phase).hint, null);
8056
+ _$effect((_$p) => _$setProp(_el$153, "style", {
7965
8057
  fg: phaseColor(rt().phase, theme()),
7966
8058
  bold: true
7967
8059
  }, _$p));
7968
- return _el$147;
8060
+ return _el$153;
7969
8061
  })(), (() => {
7970
- var _el$150 = _$createElement("span"), _el$151 = _$createTextNode(` run `), _el$152 = _$createTextNode(` (budget `), _el$153 = _$createTextNode(`)`);
7971
- _$insertNode(_el$150, _el$151);
7972
- _$insertNode(_el$150, _el$152);
7973
- _$insertNode(_el$150, _el$153);
7974
- _$insert(_el$150, () => rt().runCount, _el$152);
7975
- _$insert(_el$150, () => rt().budgetTurnCount, _el$153);
7976
- _$effect((_$p) => _$setProp(_el$150, "style", {
8062
+ var _el$156 = _$createElement("span"), _el$157 = _$createTextNode(` run `), _el$158 = _$createTextNode(` (budget `), _el$159 = _$createTextNode(`)`);
8063
+ _$insertNode(_el$156, _el$157);
8064
+ _$insertNode(_el$156, _el$158);
8065
+ _$insertNode(_el$156, _el$159);
8066
+ _$insert(_el$156, () => rt().runCount, _el$158);
8067
+ _$insert(_el$156, () => rt().budgetTurnCount, _el$159);
8068
+ _$effect((_$p) => _$setProp(_el$156, "style", {
7977
8069
  fg: theme().textMuted
7978
8070
  }, _$p));
7979
- return _el$150;
8071
+ return _el$156;
7980
8072
  })()];
7981
- })(), _el$139);
7982
- _$insert(_el$140, () => describeGoalState(goal().status, rt()?.phase));
7983
- _$insert(_el$132, (() => {
7984
- var _c$11 = _$memo(() => !!rt()?.workerAbortedAt);
7985
- return () => _c$11() && [(() => {
7986
- var _el$154 = _$createElement("span");
7987
- _$insertNode(_el$154, _$createTextNode(` \u2502 \u26A0 worker aborted `));
7988
- _$effect((_$p) => _$setProp(_el$154, "style", {
8073
+ })(), _el$145);
8074
+ _$insert(_el$146, () => describeGoalState(goal().status, rt()?.phase));
8075
+ _$insert(_el$138, (() => {
8076
+ var _c$14 = _$memo(() => !!rt()?.workerAbortedAt);
8077
+ return () => _c$14() && [(() => {
8078
+ var _el$160 = _$createElement("span");
8079
+ _$insertNode(_el$160, _$createTextNode(` \u2502 \u26A0 worker aborted `));
8080
+ _$effect((_$p) => _$setProp(_el$160, "style", {
7989
8081
  fg: theme().warning,
7990
8082
  bold: true
7991
8083
  }, _$p));
7992
- return _el$154;
8084
+ return _el$160;
7993
8085
  })(), (() => {
7994
- var _el$156 = _$createElement("span"), _el$157 = _$createTextNode(` \u2014 session kept, next turn reuses it`);
7995
- _$insertNode(_el$156, _el$157);
7996
- _$insert(_el$156, () => ageLabel(rt().workerAbortedAt, clock()), _el$157);
7997
- _$effect((_$p) => _$setProp(_el$156, "style", {
8086
+ var _el$162 = _$createElement("span"), _el$163 = _$createTextNode(` \u2014 session kept, next turn reuses it`);
8087
+ _$insertNode(_el$162, _el$163);
8088
+ _$insert(_el$162, () => ageLabel(rt().workerAbortedAt, clock()), _el$163);
8089
+ _$effect((_$p) => _$setProp(_el$162, "style", {
7998
8090
  fg: theme().textMuted
7999
8091
  }, _$p));
8000
- return _el$156;
8092
+ return _el$162;
8001
8093
  })()];
8002
- })(), _el$141);
8003
- _$insert(_el$132, () => {
8094
+ })(), _el$147);
8095
+ _$insert(_el$138, () => {
8004
8096
  const agentName = goal().config.agent;
8005
8097
  const meta = agentName ? agentIndex()[agentName] ?? agentIndex()[agentName.toLowerCase()] : undefined;
8006
8098
  const model = goal().config.model;
8007
8099
  const slash = model?.indexOf("/") ?? -1;
8008
8100
  return [`
8009
8101
  `, (() => {
8010
- var _el$158 = _$createElement("span");
8011
- _$insertNode(_el$158, _$createTextNode(`\uD83E\uDD16 `));
8012
- _$effect((_$p) => _$setProp(_el$158, "style", {
8102
+ var _el$164 = _$createElement("span");
8103
+ _$insertNode(_el$164, _$createTextNode(`\uD83E\uDD16 `));
8104
+ _$effect((_$p) => _$setProp(_el$164, "style", {
8013
8105
  fg: theme().textMuted
8014
8106
  }, _$p));
8015
- return _el$158;
8107
+ return _el$164;
8016
8108
  })(), (() => {
8017
- var _el$160 = _$createElement("span");
8018
- _$insertNode(_el$160, _$createTextNode(`Agent: `));
8019
- _$effect((_$p) => _$setProp(_el$160, "style", {
8109
+ var _el$166 = _$createElement("span");
8110
+ _$insertNode(_el$166, _$createTextNode(`Agent: `));
8111
+ _$effect((_$p) => _$setProp(_el$166, "style", {
8020
8112
  fg: theme().primary,
8021
8113
  bold: true
8022
8114
  }, _$p));
8023
- return _el$160;
8115
+ return _el$166;
8024
8116
  })(), _$memo(() => agentName ? [(() => {
8025
- var _el$176 = _$createElement("span");
8026
- _$insert(_el$176, agentName);
8027
- _$effect((_$p) => _$setProp(_el$176, "style", {
8117
+ var _el$182 = _$createElement("span");
8118
+ _$insert(_el$182, agentName);
8119
+ _$effect((_$p) => _$setProp(_el$182, "style", {
8028
8120
  fg: agentColor(meta?.color, theme()),
8029
8121
  bold: true
8030
8122
  }, _$p));
8031
- return _el$176;
8123
+ return _el$182;
8032
8124
  })(), _$memo(() => _$memo(() => !!meta?.mode)() && (() => {
8033
- var _el$177 = _$createElement("span"), _el$178 = _$createTextNode(` (`), _el$179 = _$createTextNode(`)`);
8034
- _$insertNode(_el$177, _el$178);
8035
- _$insertNode(_el$177, _el$179);
8036
- _$insert(_el$177, () => meta.mode, _el$179);
8037
- _$effect((_$p) => _$setProp(_el$177, "style", {
8125
+ var _el$183 = _$createElement("span"), _el$184 = _$createTextNode(` (`), _el$185 = _$createTextNode(`)`);
8126
+ _$insertNode(_el$183, _el$184);
8127
+ _$insertNode(_el$183, _el$185);
8128
+ _$insert(_el$183, () => meta.mode, _el$185);
8129
+ _$effect((_$p) => _$setProp(_el$183, "style", {
8038
8130
  fg: theme().textMuted
8039
8131
  }, _$p));
8040
- return _el$177;
8132
+ return _el$183;
8041
8133
  })())] : goal().parentAgent ? [(() => {
8042
- var _el$180 = _$createElement("span");
8043
- _$insertNode(_el$180, _$createTextNode(`\u21A9 `));
8044
- _$effect((_$p) => _$setProp(_el$180, "style", {
8134
+ var _el$186 = _$createElement("span");
8135
+ _$insertNode(_el$186, _$createTextNode(`\u21A9 `));
8136
+ _$effect((_$p) => _$setProp(_el$186, "style", {
8045
8137
  fg: theme().textMuted
8046
8138
  }, _$p));
8047
- return _el$180;
8139
+ return _el$186;
8048
8140
  })(), (() => {
8049
- var _el$182 = _$createElement("span");
8050
- _$insert(_el$182, () => goal().parentAgent);
8051
- _$effect((_$p) => _$setProp(_el$182, "style", {
8141
+ var _el$188 = _$createElement("span");
8142
+ _$insert(_el$188, () => goal().parentAgent);
8143
+ _$effect((_$p) => _$setProp(_el$188, "style", {
8052
8144
  fg: theme().text,
8053
8145
  bold: true
8054
8146
  }, _$p));
8055
- return _el$182;
8147
+ return _el$188;
8056
8148
  })(), (() => {
8057
- var _el$183 = _$createElement("span");
8058
- _$insertNode(_el$183, _$createTextNode(` (parent)`));
8059
- _$effect((_$p) => _$setProp(_el$183, "style", {
8149
+ var _el$189 = _$createElement("span");
8150
+ _$insertNode(_el$189, _$createTextNode(` (parent)`));
8151
+ _$effect((_$p) => _$setProp(_el$189, "style", {
8060
8152
  fg: theme().textMuted
8061
8153
  }, _$p));
8062
- return _el$183;
8154
+ return _el$189;
8063
8155
  })()] : (() => {
8064
- var _el$185 = _$createElement("span");
8065
- _$insertNode(_el$185, _$createTextNode(`parent`));
8066
- _$effect((_$p) => _$setProp(_el$185, "style", {
8156
+ var _el$191 = _$createElement("span");
8157
+ _$insertNode(_el$191, _$createTextNode(`parent`));
8158
+ _$effect((_$p) => _$setProp(_el$191, "style", {
8067
8159
  fg: theme().textMuted
8068
8160
  }, _$p));
8069
- return _el$185;
8161
+ return _el$191;
8070
8162
  })()), (() => {
8071
- var _el$162 = _$createElement("span");
8072
- _$insertNode(_el$162, _$createTextNode(` \u2502 \uD83E\uDDE0 `));
8073
- _$effect((_$p) => _$setProp(_el$162, "style", {
8163
+ var _el$168 = _$createElement("span");
8164
+ _$insertNode(_el$168, _$createTextNode(` \u2502 \uD83E\uDDE0 `));
8165
+ _$effect((_$p) => _$setProp(_el$168, "style", {
8074
8166
  fg: theme().textMuted
8075
8167
  }, _$p));
8076
- return _el$162;
8168
+ return _el$168;
8077
8169
  })(), (() => {
8078
- var _el$164 = _$createElement("span");
8079
- _$insertNode(_el$164, _$createTextNode(`Model: `));
8080
- _$effect((_$p) => _$setProp(_el$164, "style", {
8170
+ var _el$170 = _$createElement("span");
8171
+ _$insertNode(_el$170, _$createTextNode(`Model: `));
8172
+ _$effect((_$p) => _$setProp(_el$170, "style", {
8081
8173
  fg: theme().primary,
8082
8174
  bold: true
8083
8175
  }, _$p));
8084
- return _el$164;
8176
+ return _el$170;
8085
8177
  })(), _$memo(() => model && slash > 0 ? [(() => {
8086
- var _el$187 = _$createElement("span"), _el$188 = _$createTextNode(`/`);
8087
- _$insertNode(_el$187, _el$188);
8088
- _$insert(_el$187, () => model.slice(0, slash), _el$188);
8089
- _$effect((_$p) => _$setProp(_el$187, "style", {
8178
+ var _el$193 = _$createElement("span"), _el$194 = _$createTextNode(`/`);
8179
+ _$insertNode(_el$193, _el$194);
8180
+ _$insert(_el$193, () => model.slice(0, slash), _el$194);
8181
+ _$effect((_$p) => _$setProp(_el$193, "style", {
8090
8182
  fg: theme().textMuted
8091
8183
  }, _$p));
8092
- return _el$187;
8184
+ return _el$193;
8093
8185
  })(), (() => {
8094
- var _el$189 = _$createElement("span");
8095
- _$insert(_el$189, () => model.slice(slash + 1));
8096
- _$effect((_$p) => _$setProp(_el$189, "style", {
8186
+ var _el$195 = _$createElement("span");
8187
+ _$insert(_el$195, () => model.slice(slash + 1));
8188
+ _$effect((_$p) => _$setProp(_el$195, "style", {
8097
8189
  fg: theme().info,
8098
8190
  bold: true
8099
8191
  }, _$p));
8100
- return _el$189;
8192
+ return _el$195;
8101
8193
  })()] : goal().parentModel ? [(() => {
8102
- var _el$190 = _$createElement("span");
8103
- _$insertNode(_el$190, _$createTextNode(`\u21A9 `));
8104
- _$effect((_$p) => _$setProp(_el$190, "style", {
8194
+ var _el$196 = _$createElement("span");
8195
+ _$insertNode(_el$196, _$createTextNode(`\u21A9 `));
8196
+ _$effect((_$p) => _$setProp(_el$196, "style", {
8105
8197
  fg: theme().textMuted
8106
8198
  }, _$p));
8107
- return _el$190;
8199
+ return _el$196;
8108
8200
  })(), (() => {
8109
- var _el$192 = _$createElement("span");
8110
- _$insert(_el$192, () => goal().parentModel);
8111
- _$effect((_$p) => _$setProp(_el$192, "style", {
8201
+ var _el$198 = _$createElement("span");
8202
+ _$insert(_el$198, () => goal().parentModel);
8203
+ _$effect((_$p) => _$setProp(_el$198, "style", {
8112
8204
  fg: theme().info,
8113
8205
  bold: true
8114
8206
  }, _$p));
8115
- return _el$192;
8207
+ return _el$198;
8116
8208
  })(), (() => {
8117
- var _el$193 = _$createElement("span");
8118
- _$insertNode(_el$193, _$createTextNode(` (parent)`));
8119
- _$effect((_$p) => _$setProp(_el$193, "style", {
8209
+ var _el$199 = _$createElement("span");
8210
+ _$insertNode(_el$199, _$createTextNode(` (parent)`));
8211
+ _$effect((_$p) => _$setProp(_el$199, "style", {
8120
8212
  fg: theme().textMuted
8121
8213
  }, _$p));
8122
- return _el$193;
8214
+ return _el$199;
8123
8215
  })()] : (() => {
8124
- var _el$195 = _$createElement("span");
8125
- _$insertNode(_el$195, _$createTextNode(`parent`));
8126
- _$effect((_$p) => _$setProp(_el$195, "style", {
8216
+ var _el$201 = _$createElement("span");
8217
+ _$insertNode(_el$201, _$createTextNode(`parent`));
8218
+ _$effect((_$p) => _$setProp(_el$201, "style", {
8127
8219
  fg: theme().textMuted
8128
8220
  }, _$p));
8129
- return _el$195;
8221
+ return _el$201;
8130
8222
  })()), (() => {
8131
- var _el$166 = _$createElement("span");
8132
- _$insertNode(_el$166, _$createTextNode(` \u2502 \uD83D\uDCB0 `));
8133
- _$effect((_$p) => _$setProp(_el$166, "style", {
8223
+ var _el$172 = _$createElement("span");
8224
+ _$insertNode(_el$172, _$createTextNode(` \u2502 \uD83D\uDCB0 `));
8225
+ _$effect((_$p) => _$setProp(_el$172, "style", {
8134
8226
  fg: theme().textMuted
8135
8227
  }, _$p));
8136
- return _el$166;
8228
+ return _el$172;
8137
8229
  })(), (() => {
8138
- var _el$168 = _$createElement("span");
8139
- _$insertNode(_el$168, _$createTextNode(`Spent: `));
8140
- _$effect((_$p) => _$setProp(_el$168, "style", {
8230
+ var _el$174 = _$createElement("span");
8231
+ _$insertNode(_el$174, _$createTextNode(`Spent: `));
8232
+ _$effect((_$p) => _$setProp(_el$174, "style", {
8141
8233
  fg: theme().primary,
8142
8234
  bold: true
8143
8235
  }, _$p));
8144
- return _el$168;
8236
+ return _el$174;
8145
8237
  })(), (() => {
8146
- var _el$170 = _$createElement("span");
8147
- _$insert(_el$170, () => formatCost(goal().costUsed));
8148
- _$effect((_$p) => _$setProp(_el$170, "style", {
8238
+ var _el$176 = _$createElement("span");
8239
+ _$insert(_el$176, () => formatCost(goal().costUsed));
8240
+ _$effect((_$p) => _$setProp(_el$176, "style", {
8149
8241
  fg: theme().success,
8150
8242
  bold: true
8151
8243
  }, _$p));
8152
- return _el$170;
8244
+ return _el$176;
8153
8245
  })(), (() => {
8154
- var _el$171 = _$createElement("span");
8155
- _$insertNode(_el$171, _$createTextNode(` \xB7 `));
8156
- _$effect((_$p) => _$setProp(_el$171, "style", {
8246
+ var _el$177 = _$createElement("span");
8247
+ _$insertNode(_el$177, _$createTextNode(` \xB7 `));
8248
+ _$effect((_$p) => _$setProp(_el$177, "style", {
8157
8249
  fg: theme().textMuted
8158
8250
  }, _$p));
8159
- return _el$171;
8251
+ return _el$177;
8160
8252
  })(), (() => {
8161
- var _el$173 = _$createElement("span");
8162
- _$insert(_el$173, () => formatTokens(goal().tokensUsed));
8163
- _$effect((_$p) => _$setProp(_el$173, "style", {
8253
+ var _el$179 = _$createElement("span");
8254
+ _$insert(_el$179, () => formatTokens(goal().tokensUsed));
8255
+ _$effect((_$p) => _$setProp(_el$179, "style", {
8164
8256
  fg: theme().warning,
8165
8257
  bold: true
8166
8258
  }, _$p));
8167
- return _el$173;
8259
+ return _el$179;
8168
8260
  })(), (() => {
8169
- var _el$174 = _$createElement("span"), _el$175 = _$createTextNode(` tokens \xB7 `);
8170
- _$insertNode(_el$174, _el$175);
8171
- _$insert(_el$174, () => formatDuration(goal().timeUsedSeconds), null);
8172
- _$effect((_$p) => _$setProp(_el$174, "style", {
8261
+ var _el$180 = _$createElement("span"), _el$181 = _$createTextNode(` tokens \xB7 `);
8262
+ _$insertNode(_el$180, _el$181);
8263
+ _$insert(_el$180, () => formatDuration(goal().timeUsedSeconds), null);
8264
+ _$effect((_$p) => _$setProp(_el$180, "style", {
8173
8265
  fg: theme().textMuted
8174
8266
  }, _$p));
8175
- return _el$174;
8267
+ return _el$180;
8176
8268
  })()];
8177
- }, _el$141);
8178
- _$insertNode(_el$142, _$createTextNode(`\uD83C\uDFAF Target: `));
8179
- _$insert(_el$144, () => goal().objective.slice(0, 160));
8180
- _$insert(_el$132, (() => {
8181
- var _c$12 = _$memo(() => !!lp());
8182
- return () => _c$12() && [(() => {
8183
- var _el$197 = _$createElement("span"), _el$198 = _$createTextNode(`
8269
+ }, _el$147);
8270
+ _$insertNode(_el$148, _$createTextNode(`\uD83C\uDFAF Target: `));
8271
+ _$insert(_el$150, () => goal().objective.slice(0, 160));
8272
+ _$insert(_el$138, (() => {
8273
+ var _c$15 = _$memo(() => !!lp());
8274
+ return () => _c$15() && [(() => {
8275
+ var _el$203 = _$createElement("span"), _el$204 = _$createTextNode(`
8184
8276
  \u2714 `);
8185
- _$insertNode(_el$197, _el$198);
8186
- _$effect((_$p) => _$setProp(_el$197, "style", {
8277
+ _$insertNode(_el$203, _el$204);
8278
+ _$effect((_$p) => _$setProp(_el$203, "style", {
8187
8279
  fg: theme().success
8188
8280
  }, _$p));
8189
- return _el$197;
8281
+ return _el$203;
8190
8282
  })(), (() => {
8191
- var _el$200 = _$createElement("span");
8192
- _$insertNode(_el$200, _$createTextNode(`Progress: `));
8193
- _$effect((_$p) => _$setProp(_el$200, "style", {
8283
+ var _el$206 = _$createElement("span");
8284
+ _$insertNode(_el$206, _$createTextNode(`Progress: `));
8285
+ _$effect((_$p) => _$setProp(_el$206, "style", {
8194
8286
  fg: theme().success,
8195
8287
  bold: true
8196
8288
  }, _$p));
8197
- return _el$200;
8289
+ return _el$206;
8198
8290
  })(), (() => {
8199
- var _el$202 = _$createElement("span");
8200
- _$insert(_el$202, () => lp().summary.slice(0, 100));
8201
- _$effect((_$p) => _$setProp(_el$202, "style", {
8291
+ var _el$208 = _$createElement("span");
8292
+ _$insert(_el$208, () => lp().summary.slice(0, 100));
8293
+ _$effect((_$p) => _$setProp(_el$208, "style", {
8202
8294
  fg: theme().text
8203
8295
  }, _$p));
8204
- return _el$202;
8296
+ return _el$208;
8205
8297
  })(), (() => {
8206
- var _el$203 = _$createElement("span"), _el$204 = _$createTextNode(` \u2192 `);
8207
- _$insertNode(_el$203, _el$204);
8208
- _$insert(_el$203, () => lp().next?.slice(0, 60) || "", null);
8209
- _$effect((_$p) => _$setProp(_el$203, "style", {
8298
+ var _el$209 = _$createElement("span"), _el$210 = _$createTextNode(` \u2192 `);
8299
+ _$insertNode(_el$209, _el$210);
8300
+ _$insert(_el$209, () => lp().next?.slice(0, 60) || "", null);
8301
+ _$effect((_$p) => _$setProp(_el$209, "style", {
8210
8302
  fg: theme().textMuted
8211
8303
  }, _$p));
8212
- return _el$203;
8304
+ return _el$209;
8213
8305
  })()];
8214
8306
  })(), null);
8215
- _$insert(_el$132, (() => {
8216
- var _c$13 = _$memo(() => !!blk());
8217
- return () => _c$13() && [(() => {
8218
- var _el$205 = _$createElement("span"), _el$206 = _$createTextNode(`
8307
+ _$insert(_el$138, (() => {
8308
+ var _c$16 = _$memo(() => !!blk());
8309
+ return () => _c$16() && [(() => {
8310
+ var _el$211 = _$createElement("span"), _el$212 = _$createTextNode(`
8219
8311
  \u2716 Blocked: `);
8220
- _$insertNode(_el$205, _el$206);
8221
- _$effect((_$p) => _$setProp(_el$205, "style", {
8312
+ _$insertNode(_el$211, _el$212);
8313
+ _$effect((_$p) => _$setProp(_el$211, "style", {
8222
8314
  fg: theme().error,
8223
8315
  bold: true
8224
8316
  }, _$p));
8225
- return _el$205;
8317
+ return _el$211;
8226
8318
  })(), (() => {
8227
- var _el$208 = _$createElement("span");
8228
- _$insert(_el$208, () => blk().reason.slice(0, 140));
8229
- _$effect((_$p) => _$setProp(_el$208, "style", {
8319
+ var _el$214 = _$createElement("span");
8320
+ _$insert(_el$214, () => blk().reason.slice(0, 140));
8321
+ _$effect((_$p) => _$setProp(_el$214, "style", {
8230
8322
  fg: theme().error
8231
8323
  }, _$p));
8232
- return _el$208;
8324
+ return _el$214;
8233
8325
  })(), (() => {
8234
- var _el$209 = _$createElement("span"), _el$210 = _$createTextNode(` \u2014 `);
8235
- _$insertNode(_el$209, _el$210);
8236
- _$insert(_el$209, () => blk().needed.slice(0, 60), null);
8237
- _$effect((_$p) => _$setProp(_el$209, "style", {
8326
+ var _el$215 = _$createElement("span"), _el$216 = _$createTextNode(` \u2014 `);
8327
+ _$insertNode(_el$215, _el$216);
8328
+ _$insert(_el$215, () => blk().needed.slice(0, 60), null);
8329
+ _$effect((_$p) => _$setProp(_el$215, "style", {
8238
8330
  fg: theme().textMuted
8239
8331
  }, _$p));
8240
- return _el$209;
8332
+ return _el$215;
8241
8333
  })()];
8242
8334
  })(), null);
8243
- _$insert(_el$132, (() => {
8244
- var _c$14 = _$memo(() => !!goal().config.artifactDir);
8245
- return () => _c$14() && [(() => {
8246
- var _el$211 = _$createElement("span"), _el$212 = _$createTextNode(`
8335
+ _$insert(_el$138, (() => {
8336
+ var _c$17 = _$memo(() => !!goal().config.artifactDir);
8337
+ return () => _c$17() && [(() => {
8338
+ var _el$217 = _$createElement("span"), _el$218 = _$createTextNode(`
8247
8339
  \uD83D\uDCC1 `);
8248
- _$insertNode(_el$211, _el$212);
8249
- _$effect((_$p) => _$setProp(_el$211, "style", {
8340
+ _$insertNode(_el$217, _el$218);
8341
+ _$effect((_$p) => _$setProp(_el$217, "style", {
8250
8342
  fg: theme().accent
8251
8343
  }, _$p));
8252
- return _el$211;
8344
+ return _el$217;
8253
8345
  })(), (() => {
8254
- var _el$214 = _$createElement("span");
8255
- _$insertNode(_el$214, _$createTextNode(`Artifacts: `));
8256
- _$effect((_$p) => _$setProp(_el$214, "style", {
8346
+ var _el$220 = _$createElement("span");
8347
+ _$insertNode(_el$220, _$createTextNode(`Artifacts: `));
8348
+ _$effect((_$p) => _$setProp(_el$220, "style", {
8257
8349
  fg: theme().accent,
8258
8350
  bold: true
8259
8351
  }, _$p));
8260
- return _el$214;
8352
+ return _el$220;
8261
8353
  })(), (() => {
8262
- var _el$216 = _$createElement("span");
8263
- _$insert(_el$216, () => String(goal().config.artifactDir).replace(String(props.directory), "."));
8264
- _$effect((_$p) => _$setProp(_el$216, "style", {
8354
+ var _el$222 = _$createElement("span");
8355
+ _$insert(_el$222, () => String(goal().config.artifactDir).replace(String(props.directory), "."));
8356
+ _$effect((_$p) => _$setProp(_el$222, "style", {
8265
8357
  fg: theme().textMuted
8266
8358
  }, _$p));
8267
- return _el$216;
8359
+ return _el$222;
8268
8360
  })()];
8269
8361
  })(), null);
8270
- _$insert(_el$132, (() => {
8271
- var _c$15 = _$memo(() => !!goal().workerTopology);
8272
- return () => _c$15() && [(() => {
8273
- var _el$217 = _$createElement("span"), _el$218 = _$createTextNode(`
8362
+ _$insert(_el$138, (() => {
8363
+ var _c$18 = _$memo(() => !!goal().workerTopology);
8364
+ return () => _c$18() && [(() => {
8365
+ var _el$223 = _$createElement("span"), _el$224 = _$createTextNode(`
8274
8366
  \uD83C\uDF3F Worker: `);
8275
- _$insertNode(_el$217, _el$218);
8276
- _$effect((_$p) => _$setProp(_el$217, "style", {
8367
+ _$insertNode(_el$223, _el$224);
8368
+ _$effect((_$p) => _$setProp(_el$223, "style", {
8277
8369
  fg: theme().textMuted
8278
8370
  }, _$p));
8279
- return _el$217;
8371
+ return _el$223;
8280
8372
  })(), (() => {
8281
- var _el$220 = _$createElement("span");
8282
- _$insert(_el$220, (() => {
8283
- var _c$22 = _$memo(() => goal().workerTopology === "v2-native-child");
8284
- return () => _c$22() ? "native child" : goal().workerTopology === "v2-root-fallback" ? "root fallback" : "v1 child";
8373
+ var _el$226 = _$createElement("span");
8374
+ _$insert(_el$226, (() => {
8375
+ var _c$28 = _$memo(() => goal().workerTopology === "v2-native-child");
8376
+ return () => _c$28() ? "native child" : goal().workerTopology === "v2-root-fallback" ? "root fallback" : "v1 child";
8285
8377
  })());
8286
- _$effect((_$p) => _$setProp(_el$220, "style", {
8378
+ _$effect((_$p) => _$setProp(_el$226, "style", {
8287
8379
  fg: theme().text
8288
8380
  }, _$p));
8289
- return _el$220;
8381
+ return _el$226;
8290
8382
  })(), _$memo(() => _$memo(() => !!goal().nativeParentID)() ? (() => {
8291
- var _el$221 = _$createElement("span"), _el$222 = _$createTextNode(` of `), _el$223 = _$createTextNode(`\u2026`);
8292
- _$insertNode(_el$221, _el$222);
8293
- _$insertNode(_el$221, _el$223);
8294
- _$insert(_el$221, () => goal().nativeParentID.slice(0, 12), _el$223);
8295
- _$effect((_$p) => _$setProp(_el$221, "style", {
8383
+ var _el$227 = _$createElement("span"), _el$228 = _$createTextNode(` of `), _el$229 = _$createTextNode(`\u2026`);
8384
+ _$insertNode(_el$227, _el$228);
8385
+ _$insertNode(_el$227, _el$229);
8386
+ _$insert(_el$227, () => goal().nativeParentID.slice(0, 12), _el$229);
8387
+ _$effect((_$p) => _$setProp(_el$227, "style", {
8296
8388
  fg: theme().textMuted
8297
8389
  }, _$p));
8298
- return _el$221;
8390
+ return _el$227;
8299
8391
  })() : null)];
8300
8392
  })(), null);
8301
- _$insert(_el$132, (() => {
8302
- var _c$16 = _$memo(() => (goal().config.checks?.length ?? 0) > 0);
8303
- return () => _c$16() ? [(() => {
8304
- var _el$224 = _$createElement("span"), _el$225 = _$createTextNode(`
8393
+ _$insert(_el$138, (() => {
8394
+ var _c$19 = _$memo(() => goal().interactive === true);
8395
+ return () => _c$19() && [(() => {
8396
+ var _el$230 = _$createElement("span"), _el$231 = _$createTextNode(`
8397
+ \u270B Manual: `);
8398
+ _$insertNode(_el$230, _el$231);
8399
+ _$effect((_$p) => _$setProp(_el$230, "style", {
8400
+ fg: theme().accent,
8401
+ bold: true
8402
+ }, _$p));
8403
+ return _el$230;
8404
+ })(), (() => {
8405
+ var _el$233 = _$createElement("span");
8406
+ _$insertNode(_el$233, _$createTextNode(`engine never starts turns \u2014 steer with :send/nudge (:interactive to re-enable auto)`));
8407
+ _$effect((_$p) => _$setProp(_el$233, "style", {
8408
+ fg: theme().textMuted
8409
+ }, _$p));
8410
+ return _el$233;
8411
+ })()];
8412
+ })(), null);
8413
+ _$insert(_el$138, (() => {
8414
+ var _c$20 = _$memo(() => !!goal().config.model);
8415
+ return () => _c$20() && [(() => {
8416
+ var _el$235 = _$createElement("span"), _el$236 = _$createTextNode(`
8417
+ \uD83E\uDDE0 Model: `);
8418
+ _$insertNode(_el$235, _el$236);
8419
+ _$effect((_$p) => _$setProp(_el$235, "style", {
8420
+ fg: theme().info,
8421
+ bold: true
8422
+ }, _$p));
8423
+ return _el$235;
8424
+ })(), (() => {
8425
+ var _el$238 = _$createElement("span");
8426
+ _$insert(_el$238, () => goal().config.model);
8427
+ _$effect((_$p) => _$setProp(_el$238, "style", {
8428
+ fg: theme().text
8429
+ }, _$p));
8430
+ return _el$238;
8431
+ })(), _$memo(() => _$memo(() => !!goal().modelSwitch?.pending)() ? (() => {
8432
+ var _el$239 = _$createElement("span"), _el$240 = _$createTextNode(` \u2192 pending `), _el$241 = _$createTextNode(` (applies next turn)`);
8433
+ _$insertNode(_el$239, _el$240);
8434
+ _$insertNode(_el$239, _el$241);
8435
+ _$insert(_el$239, () => goal().modelSwitch?.pending?.model, _el$241);
8436
+ _$effect((_$p) => _$setProp(_el$239, "style", {
8437
+ fg: theme().warning
8438
+ }, _$p));
8439
+ return _el$239;
8440
+ })() : null)];
8441
+ })(), null);
8442
+ _$insert(_el$138, (() => {
8443
+ var _c$21 = _$memo(() => !!goal().config.agent);
8444
+ return () => _c$21() && [(() => {
8445
+ var _el$242 = _$createElement("span"), _el$243 = _$createTextNode(`
8446
+ \uD83E\uDD16 Agent: `);
8447
+ _$insertNode(_el$242, _el$243);
8448
+ _$effect((_$p) => _$setProp(_el$242, "style", {
8449
+ fg: theme().info,
8450
+ bold: true
8451
+ }, _$p));
8452
+ return _el$242;
8453
+ })(), (() => {
8454
+ var _el$245 = _$createElement("span");
8455
+ _$insert(_el$245, () => goal().config.agent);
8456
+ _$effect((_$p) => _$setProp(_el$245, "style", {
8457
+ fg: theme().text
8458
+ }, _$p));
8459
+ return _el$245;
8460
+ })(), _$memo(() => _$memo(() => !!goal().agentSwitch?.pending)() ? (() => {
8461
+ var _el$246 = _$createElement("span"), _el$247 = _$createTextNode(` \u2192 pending `), _el$248 = _$createTextNode(` (applies next turn)`);
8462
+ _$insertNode(_el$246, _el$247);
8463
+ _$insertNode(_el$246, _el$248);
8464
+ _$insert(_el$246, () => goal().agentSwitch?.pending?.agent, _el$248);
8465
+ _$effect((_$p) => _$setProp(_el$246, "style", {
8466
+ fg: theme().warning
8467
+ }, _$p));
8468
+ return _el$246;
8469
+ })() : null)];
8470
+ })(), null);
8471
+ _$insert(_el$138, (() => {
8472
+ var _c$22 = _$memo(() => (goal().config.checks?.length ?? 0) > 0);
8473
+ return () => _c$22() ? [(() => {
8474
+ var _el$249 = _$createElement("span"), _el$250 = _$createTextNode(`
8305
8475
  \u25A3 `);
8306
- _$insertNode(_el$224, _el$225);
8307
- _$effect((_$p) => _$setProp(_el$224, "style", {
8476
+ _$insertNode(_el$249, _el$250);
8477
+ _$effect((_$p) => _$setProp(_el$249, "style", {
8308
8478
  fg: theme().warning
8309
8479
  }, _$p));
8310
- return _el$224;
8480
+ return _el$249;
8311
8481
  })(), (() => {
8312
- var _el$227 = _$createElement("span");
8313
- _$insertNode(_el$227, _$createTextNode(`Checks: `));
8314
- _$effect((_$p) => _$setProp(_el$227, "style", {
8482
+ var _el$252 = _$createElement("span");
8483
+ _$insertNode(_el$252, _$createTextNode(`Checks: `));
8484
+ _$effect((_$p) => _$setProp(_el$252, "style", {
8315
8485
  fg: theme().warning,
8316
8486
  bold: true
8317
8487
  }, _$p));
8318
- return _el$227;
8488
+ return _el$252;
8319
8489
  })(), (() => {
8320
- var _el$229 = _$createElement("span");
8321
- _$insert(_el$229, () => goal().config.checks.join(", ").slice(0, 100));
8322
- _$effect((_$p) => _$setProp(_el$229, "style", {
8490
+ var _el$254 = _$createElement("span");
8491
+ _$insert(_el$254, () => goal().config.checks.join(", ").slice(0, 100));
8492
+ _$effect((_$p) => _$setProp(_el$254, "style", {
8323
8493
  fg: theme().textMuted
8324
8494
  }, _$p));
8325
- return _el$229;
8495
+ return _el$254;
8326
8496
  })()] : null;
8327
8497
  })(), null);
8328
- _$insert(_el$132, (() => {
8329
- var _c$17 = _$memo(() => rt()?.evaluatorRejectionCount > 0);
8330
- return () => _c$17() && [(() => {
8331
- var _el$230 = _$createElement("span"), _el$231 = _$createTextNode(`
8498
+ _$insert(_el$138, (() => {
8499
+ var _c$23 = _$memo(() => rt()?.evaluatorRejectionCount > 0);
8500
+ return () => _c$23() && [(() => {
8501
+ var _el$255 = _$createElement("span"), _el$256 = _$createTextNode(`
8332
8502
  \u26A0 rejections: `);
8333
- _$insertNode(_el$230, _el$231);
8334
- _$effect((_$p) => _$setProp(_el$230, "style", {
8503
+ _$insertNode(_el$255, _el$256);
8504
+ _$effect((_$p) => _$setProp(_el$255, "style", {
8335
8505
  fg: theme().warning
8336
8506
  }, _$p));
8337
- return _el$230;
8507
+ return _el$255;
8338
8508
  })(), (() => {
8339
- var _el$233 = _$createElement("span"), _el$234 = _$createTextNode(` \u2014 `);
8340
- _$insertNode(_el$233, _el$234);
8341
- _$insert(_el$233, () => String(rt().evaluatorRejectionCount), _el$234);
8342
- _$insert(_el$233, () => String(rt().lastRejectionDetails || "").slice(0, 80), null);
8343
- _$effect((_$p) => _$setProp(_el$233, "style", {
8509
+ var _el$258 = _$createElement("span"), _el$259 = _$createTextNode(` \u2014 `);
8510
+ _$insertNode(_el$258, _el$259);
8511
+ _$insert(_el$258, () => String(rt().evaluatorRejectionCount), _el$259);
8512
+ _$insert(_el$258, () => String(rt().lastRejectionDetails || "").slice(0, 80), null);
8513
+ _$effect((_$p) => _$setProp(_el$258, "style", {
8344
8514
  fg: theme().warning
8345
8515
  }, _$p));
8346
- return _el$233;
8516
+ return _el$258;
8347
8517
  })()];
8348
8518
  })(), null);
8349
- _$insert(_el$132, (() => {
8350
- var _c$18 = _$memo(() => rt()?.unknownStatusCount > 0);
8351
- return () => _c$18() && [(() => {
8352
- var _el$235 = _$createElement("span"), _el$236 = _$createTextNode(`
8519
+ _$insert(_el$138, (() => {
8520
+ var _c$24 = _$memo(() => rt()?.unknownStatusCount > 0);
8521
+ return () => _c$24() && [(() => {
8522
+ var _el$260 = _$createElement("span"), _el$261 = _$createTextNode(`
8353
8523
  \u26A0\uFE0F unreachable: `);
8354
- _$insertNode(_el$235, _el$236);
8355
- _$effect((_$p) => _$setProp(_el$235, "style", {
8524
+ _$insertNode(_el$260, _el$261);
8525
+ _$effect((_$p) => _$setProp(_el$260, "style", {
8356
8526
  fg: theme().error
8357
8527
  }, _$p));
8358
- return _el$235;
8528
+ return _el$260;
8359
8529
  })(), (() => {
8360
- var _el$238 = _$createElement("span"), _el$239 = _$createTextNode(`/3`);
8361
- _$insertNode(_el$238, _el$239);
8362
- _$insert(_el$238, () => String(rt().unknownStatusCount), _el$239);
8363
- _$effect((_$p) => _$setProp(_el$238, "style", {
8530
+ var _el$263 = _$createElement("span"), _el$264 = _$createTextNode(`/3`);
8531
+ _$insertNode(_el$263, _el$264);
8532
+ _$insert(_el$263, () => String(rt().unknownStatusCount), _el$264);
8533
+ _$effect((_$p) => _$setProp(_el$263, "style", {
8364
8534
  fg: theme().error
8365
8535
  }, _$p));
8366
- return _el$238;
8536
+ return _el$263;
8367
8537
  })(), (() => {
8368
- var _el$240 = _$createElement("span");
8369
- _$insertNode(_el$240, _$createTextNode(` \u2014 nudge to recover`));
8370
- _$effect((_$p) => _$setProp(_el$240, "style", {
8538
+ var _el$265 = _$createElement("span");
8539
+ _$insertNode(_el$265, _$createTextNode(` \u2014 nudge to recover`));
8540
+ _$effect((_$p) => _$setProp(_el$265, "style", {
8371
8541
  fg: theme().textMuted
8372
8542
  }, _$p));
8373
- return _el$240;
8543
+ return _el$265;
8374
8544
  })()];
8375
8545
  })(), null);
8376
- _$insert(_el$132, (() => {
8377
- var _c$19 = _$memo(() => !!rt()?.retryAfter);
8378
- return () => _c$19() && [(() => {
8379
- var _el$242 = _$createElement("span"), _el$243 = _$createTextNode(`
8546
+ _$insert(_el$138, (() => {
8547
+ var _c$25 = _$memo(() => !!rt()?.retryAfter);
8548
+ return () => _c$25() && [(() => {
8549
+ var _el$267 = _$createElement("span"), _el$268 = _$createTextNode(`
8380
8550
  \u21BB retry in: `);
8381
- _$insertNode(_el$242, _el$243);
8382
- _$effect((_$p) => _$setProp(_el$242, "style", {
8551
+ _$insertNode(_el$267, _el$268);
8552
+ _$effect((_$p) => _$setProp(_el$267, "style", {
8383
8553
  fg: theme().accent
8384
8554
  }, _$p));
8385
- return _el$242;
8555
+ return _el$267;
8386
8556
  })(), (() => {
8387
- var _el$245 = _$createElement("span");
8388
- _$insert(_el$245, () => countdownLabel(rt().retryAfter, clock()));
8389
- _$effect((_$p) => _$setProp(_el$245, "style", {
8557
+ var _el$270 = _$createElement("span");
8558
+ _$insert(_el$270, () => countdownLabel(rt().retryAfter, clock()));
8559
+ _$effect((_$p) => _$setProp(_el$270, "style", {
8390
8560
  fg: theme().accent
8391
8561
  }, _$p));
8392
- return _el$245;
8562
+ return _el$270;
8393
8563
  })()];
8394
8564
  })(), null);
8395
- _$insert(_el$132, (() => {
8396
- var _c$20 = _$memo(() => !!rt()?.nextRunAt);
8397
- return () => _c$20() && [(() => {
8398
- var _el$246 = _$createElement("span"), _el$247 = _$createTextNode(`
8565
+ _$insert(_el$138, (() => {
8566
+ var _c$26 = _$memo(() => !!rt()?.nextRunAt);
8567
+ return () => _c$26() && [(() => {
8568
+ var _el$271 = _$createElement("span"), _el$272 = _$createTextNode(`
8399
8569
  \u23F0 next run: `);
8400
- _$insertNode(_el$246, _el$247);
8401
- _$effect((_$p) => _$setProp(_el$246, "style", {
8570
+ _$insertNode(_el$271, _el$272);
8571
+ _$effect((_$p) => _$setProp(_el$271, "style", {
8402
8572
  fg: theme().accent
8403
8573
  }, _$p));
8404
- return _el$246;
8574
+ return _el$271;
8405
8575
  })(), (() => {
8406
- var _el$249 = _$createElement("span");
8407
- _$insert(_el$249, () => countdownLabel(rt().nextRunAt, clock()));
8408
- _$effect((_$p) => _$setProp(_el$249, "style", {
8576
+ var _el$274 = _$createElement("span");
8577
+ _$insert(_el$274, () => countdownLabel(rt().nextRunAt, clock()));
8578
+ _$effect((_$p) => _$setProp(_el$274, "style", {
8409
8579
  fg: theme().accent
8410
8580
  }, _$p));
8411
- return _el$249;
8581
+ return _el$274;
8412
8582
  })(), (() => {
8413
- var _el$250 = _$createElement("span"), _el$251 = _$createTextNode(` (`), _el$252 = _$createTextNode(` runs)`);
8414
- _$insertNode(_el$250, _el$251);
8415
- _$insertNode(_el$250, _el$252);
8416
- _$insert(_el$250, () => String(rt().scheduleRunCount || 0), _el$252);
8417
- _$effect((_$p) => _$setProp(_el$250, "style", {
8583
+ var _el$275 = _$createElement("span"), _el$276 = _$createTextNode(` (`), _el$277 = _$createTextNode(` runs)`);
8584
+ _$insertNode(_el$275, _el$276);
8585
+ _$insertNode(_el$275, _el$277);
8586
+ _$insert(_el$275, () => String(rt().scheduleRunCount || 0), _el$277);
8587
+ _$effect((_$p) => _$setProp(_el$275, "style", {
8418
8588
  fg: theme().textMuted
8419
8589
  }, _$p));
8420
- return _el$250;
8590
+ return _el$275;
8421
8591
  })()];
8422
8592
  })(), null);
8423
- _$insert(_el$132, (() => {
8424
- var _c$21 = _$memo(() => !!rt()?.lastError);
8425
- return () => _c$21() && [(() => {
8426
- var _el$253 = _$createElement("span"), _el$254 = _$createTextNode(`
8593
+ _$insert(_el$138, (() => {
8594
+ var _c$27 = _$memo(() => !!rt()?.lastError);
8595
+ return () => _c$27() && [(() => {
8596
+ var _el$278 = _$createElement("span"), _el$279 = _$createTextNode(`
8427
8597
  \u26A0 `);
8428
- _$insertNode(_el$253, _el$254);
8429
- _$effect((_$p) => _$setProp(_el$253, "style", {
8598
+ _$insertNode(_el$278, _el$279);
8599
+ _$effect((_$p) => _$setProp(_el$278, "style", {
8430
8600
  fg: theme().error
8431
8601
  }, _$p));
8432
- return _el$253;
8602
+ return _el$278;
8433
8603
  })(), (() => {
8434
- var _el$256 = _$createElement("span");
8435
- _$insertNode(_el$256, _$createTextNode(`Error: `));
8436
- _$effect((_$p) => _$setProp(_el$256, "style", {
8604
+ var _el$281 = _$createElement("span");
8605
+ _$insertNode(_el$281, _$createTextNode(`Error: `));
8606
+ _$effect((_$p) => _$setProp(_el$281, "style", {
8437
8607
  fg: theme().error,
8438
8608
  bold: true
8439
8609
  }, _$p));
8440
- return _el$256;
8610
+ return _el$281;
8441
8611
  })(), (() => {
8442
- var _el$258 = _$createElement("span");
8443
- _$insert(_el$258, () => rt().lastError.slice(0, 120));
8444
- _$effect((_$p) => _$setProp(_el$258, "style", {
8612
+ var _el$283 = _$createElement("span");
8613
+ _$insert(_el$283, () => rt().lastError.slice(0, 120));
8614
+ _$effect((_$p) => _$setProp(_el$283, "style", {
8445
8615
  fg: theme().error
8446
8616
  }, _$p));
8447
- return _el$258;
8617
+ return _el$283;
8448
8618
  })()];
8449
8619
  })(), null);
8450
8620
  _$effect((_p$) => {
@@ -8463,13 +8633,13 @@ function LoopDashboard(props) {
8463
8633
  }, _v$48 = {
8464
8634
  fg: theme().text
8465
8635
  };
8466
- _v$42 !== _p$.e && (_p$.e = _$setProp(_el$131, "borderColor", _v$42, _p$.e));
8467
- _v$43 !== _p$.t && (_p$.t = _$setProp(_el$133, "style", _v$43, _p$.t));
8468
- _v$44 !== _p$.a && (_p$.a = _$setProp(_el$135, "style", _v$44, _p$.a));
8469
- _v$45 !== _p$.o && (_p$.o = _$setProp(_el$137, "style", _v$45, _p$.o));
8470
- _v$46 !== _p$.i && (_p$.i = _$setProp(_el$140, "style", _v$46, _p$.i));
8471
- _v$47 !== _p$.n && (_p$.n = _$setProp(_el$142, "style", _v$47, _p$.n));
8472
- _v$48 !== _p$.s && (_p$.s = _$setProp(_el$144, "style", _v$48, _p$.s));
8636
+ _v$42 !== _p$.e && (_p$.e = _$setProp(_el$137, "borderColor", _v$42, _p$.e));
8637
+ _v$43 !== _p$.t && (_p$.t = _$setProp(_el$139, "style", _v$43, _p$.t));
8638
+ _v$44 !== _p$.a && (_p$.a = _$setProp(_el$141, "style", _v$44, _p$.a));
8639
+ _v$45 !== _p$.o && (_p$.o = _$setProp(_el$143, "style", _v$45, _p$.o));
8640
+ _v$46 !== _p$.i && (_p$.i = _$setProp(_el$146, "style", _v$46, _p$.i));
8641
+ _v$47 !== _p$.n && (_p$.n = _$setProp(_el$148, "style", _v$47, _p$.n));
8642
+ _v$48 !== _p$.s && (_p$.s = _$setProp(_el$150, "style", _v$48, _p$.s));
8473
8643
  return _p$;
8474
8644
  }, {
8475
8645
  e: undefined,
@@ -8480,7 +8650,7 @@ function LoopDashboard(props) {
8480
8650
  n: undefined,
8481
8651
  s: undefined
8482
8652
  });
8483
- return _el$131;
8653
+ return _el$137;
8484
8654
  })();
8485
8655
  }
8486
8656
  })];
@@ -8497,32 +8667,62 @@ function LoopDashboard(props) {
8497
8667
  },
8498
8668
  get fallback() {
8499
8669
  return (() => {
8500
- var _el$259 = _$createElement("box"), _el$260 = _$createElement("text"), _el$261 = _$createElement("span"), _el$263 = _$createElement("span"), _el$265 = _$createElement("span"), _el$267 = _$createElement("text"), _el$268 = _$createElement("span"), _el$270 = _$createElement("span"), _el$272 = _$createElement("span"), _el$274 = _$createElement("span"), _el$276 = _$createElement("span"), _el$278 = _$createElement("span"), _el$280 = _$createElement("span");
8501
- _$insertNode(_el$259, _el$260);
8502
- _$insertNode(_el$259, _el$267);
8503
- _$setProp(_el$259, "flexDirection", "column");
8504
- _$setProp(_el$259, "gap", 1);
8505
- _$setProp(_el$259, "padding", 1);
8506
- _$insertNode(_el$260, _el$261);
8507
- _$insertNode(_el$260, _el$263);
8508
- _$insertNode(_el$260, _el$265);
8509
- _$insertNode(_el$261, _$createTextNode(`No command sessions owned by this session. `));
8510
- _$insertNode(_el$263, _$createTextNode(`:new &lt;command&gt;`));
8511
- _$insertNode(_el$265, _$createTextNode(` to start one.`));
8512
- _$insertNode(_el$267, _el$268);
8513
- _$insertNode(_el$267, _el$270);
8514
- _$insertNode(_el$267, _el$272);
8515
- _$insertNode(_el$267, _el$274);
8516
- _$insertNode(_el$267, _el$276);
8517
- _$insertNode(_el$267, _el$278);
8518
- _$insertNode(_el$267, _el$280);
8519
- _$insertNode(_el$268, _$createTextNode(`Tip: `));
8520
- _$insertNode(_el$270, _$createTextNode(`o`));
8521
- _$insertNode(_el$272, _$createTextNode(` fullscreen \xB7 `));
8522
- _$insertNode(_el$274, _$createTextNode(`X kill \xB7 R restart \xB7 x remove-done`));
8523
- _$insertNode(_el$276, _$createTextNode(` \xB7 `));
8524
- _$insertNode(_el$278, _$createTextNode(`:interrupt :terminate :remove`));
8525
- _$insertNode(_el$280, _$createTextNode(` manage \xB7 text + Enter writes stdin.`));
8670
+ var _el$284 = _$createElement("box"), _el$285 = _$createElement("text"), _el$286 = _$createElement("span"), _el$287 = _$createTextNode(`No live command sessions`), _el$288 = _$createTextNode(`. `), _el$289 = _$createElement("span"), _el$291 = _$createElement("span"), _el$292 = _$createTextNode(` to start one`), _el$293 = _$createElement("text"), _el$294 = _$createElement("span"), _el$296 = _$createElement("span"), _el$298 = _$createElement("span"), _el$300 = _$createElement("span"), _el$302 = _$createElement("span"), _el$304 = _$createElement("span"), _el$306 = _$createElement("span");
8671
+ _$insertNode(_el$284, _el$285);
8672
+ _$insertNode(_el$284, _el$293);
8673
+ _$setProp(_el$284, "flexDirection", "column");
8674
+ _$setProp(_el$284, "gap", 1);
8675
+ _$setProp(_el$284, "padding", 1);
8676
+ _$insertNode(_el$285, _el$286);
8677
+ _$insertNode(_el$285, _el$289);
8678
+ _$insertNode(_el$285, _el$291);
8679
+ _$insertNode(_el$286, _el$287);
8680
+ _$insertNode(_el$286, _el$288);
8681
+ _$insert(_el$286, (() => {
8682
+ var _c$29 = _$memo(() => hiddenFinishedCommands() > 0);
8683
+ return () => _c$29() ? ` \u2014 ${hiddenFinishedCommands()} finished hidden` : "";
8684
+ })(), _el$288);
8685
+ _$insertNode(_el$289, _$createTextNode(`:new &lt;command&gt;`));
8686
+ _$insertNode(_el$291, _el$292);
8687
+ _$insert(_el$291, () => hiddenFinishedCommands() > 0 ? ", or " : "; ", null);
8688
+ _$insert(_el$285, (() => {
8689
+ var _c$30 = _$memo(() => hiddenFinishedCommands() > 0);
8690
+ return () => _c$30() && (() => {
8691
+ var _el$308 = _$createElement("span"), _el$309 = _$createElement("span"), _el$311 = _$createElement("span");
8692
+ _$insertNode(_el$308, _el$309);
8693
+ _$insertNode(_el$308, _el$311);
8694
+ _$insertNode(_el$309, _$createTextNode(`c`));
8695
+ _$insertNode(_el$311, _$createTextNode(` to show finished.`));
8696
+ _$effect((_p$) => {
8697
+ var _v$59 = {
8698
+ fg: theme().warning
8699
+ }, _v$60 = {
8700
+ fg: theme().textMuted
8701
+ };
8702
+ _v$59 !== _p$.e && (_p$.e = _$setProp(_el$309, "style", _v$59, _p$.e));
8703
+ _v$60 !== _p$.t && (_p$.t = _$setProp(_el$311, "style", _v$60, _p$.t));
8704
+ return _p$;
8705
+ }, {
8706
+ e: undefined,
8707
+ t: undefined
8708
+ });
8709
+ return _el$308;
8710
+ })();
8711
+ })(), null);
8712
+ _$insertNode(_el$293, _el$294);
8713
+ _$insertNode(_el$293, _el$296);
8714
+ _$insertNode(_el$293, _el$298);
8715
+ _$insertNode(_el$293, _el$300);
8716
+ _$insertNode(_el$293, _el$302);
8717
+ _$insertNode(_el$293, _el$304);
8718
+ _$insertNode(_el$293, _el$306);
8719
+ _$insertNode(_el$294, _$createTextNode(`Tip: `));
8720
+ _$insertNode(_el$296, _$createTextNode(`o`));
8721
+ _$insertNode(_el$298, _$createTextNode(` fullscreen \xB7 `));
8722
+ _$insertNode(_el$300, _$createTextNode(`X kill \xB7 R restart \xB7 x remove-done`));
8723
+ _$insertNode(_el$302, _$createTextNode(` \xB7 `));
8724
+ _$insertNode(_el$304, _$createTextNode(`:interrupt :terminate :remove`));
8725
+ _$insertNode(_el$306, _$createTextNode(` manage \xB7 text + Enter writes stdin.`));
8526
8726
  _$effect((_p$) => {
8527
8727
  var _v$49 = {
8528
8728
  fg: theme().textMuted
@@ -8545,16 +8745,16 @@ function LoopDashboard(props) {
8545
8745
  }, _v$58 = {
8546
8746
  fg: theme().textMuted
8547
8747
  };
8548
- _v$49 !== _p$.e && (_p$.e = _$setProp(_el$261, "style", _v$49, _p$.e));
8549
- _v$50 !== _p$.t && (_p$.t = _$setProp(_el$263, "style", _v$50, _p$.t));
8550
- _v$51 !== _p$.a && (_p$.a = _$setProp(_el$265, "style", _v$51, _p$.a));
8551
- _v$52 !== _p$.o && (_p$.o = _$setProp(_el$268, "style", _v$52, _p$.o));
8552
- _v$53 !== _p$.i && (_p$.i = _$setProp(_el$270, "style", _v$53, _p$.i));
8553
- _v$54 !== _p$.n && (_p$.n = _$setProp(_el$272, "style", _v$54, _p$.n));
8554
- _v$55 !== _p$.s && (_p$.s = _$setProp(_el$274, "style", _v$55, _p$.s));
8555
- _v$56 !== _p$.h && (_p$.h = _$setProp(_el$276, "style", _v$56, _p$.h));
8556
- _v$57 !== _p$.r && (_p$.r = _$setProp(_el$278, "style", _v$57, _p$.r));
8557
- _v$58 !== _p$.d && (_p$.d = _$setProp(_el$280, "style", _v$58, _p$.d));
8748
+ _v$49 !== _p$.e && (_p$.e = _$setProp(_el$286, "style", _v$49, _p$.e));
8749
+ _v$50 !== _p$.t && (_p$.t = _$setProp(_el$289, "style", _v$50, _p$.t));
8750
+ _v$51 !== _p$.a && (_p$.a = _$setProp(_el$291, "style", _v$51, _p$.a));
8751
+ _v$52 !== _p$.o && (_p$.o = _$setProp(_el$294, "style", _v$52, _p$.o));
8752
+ _v$53 !== _p$.i && (_p$.i = _$setProp(_el$296, "style", _v$53, _p$.i));
8753
+ _v$54 !== _p$.n && (_p$.n = _$setProp(_el$298, "style", _v$54, _p$.n));
8754
+ _v$55 !== _p$.s && (_p$.s = _$setProp(_el$300, "style", _v$55, _p$.s));
8755
+ _v$56 !== _p$.h && (_p$.h = _$setProp(_el$302, "style", _v$56, _p$.h));
8756
+ _v$57 !== _p$.r && (_p$.r = _$setProp(_el$304, "style", _v$57, _p$.r));
8757
+ _v$58 !== _p$.d && (_p$.d = _$setProp(_el$306, "style", _v$58, _p$.d));
8558
8758
  return _p$;
8559
8759
  }, {
8560
8760
  e: undefined,
@@ -8568,7 +8768,7 @@ function LoopDashboard(props) {
8568
8768
  r: undefined,
8569
8769
  d: undefined
8570
8770
  });
8571
- return _el$259;
8771
+ return _el$284;
8572
8772
  })();
8573
8773
  },
8574
8774
  get children() {
@@ -8580,106 +8780,106 @@ function LoopDashboard(props) {
8580
8780
  children: (cmd, i) => {
8581
8781
  const isActive = () => i() === cmdSelected();
8582
8782
  return (() => {
8583
- var _el$282 = _$createElement("box"), _el$283 = _$createElement("text"), _el$284 = _$createElement("span"), _el$285 = _$createElement("span"), _el$287 = _$createElement("span"), _el$289 = _$createElement("span"), _el$290 = _$createElement("span"), _el$292 = _$createElement("span"), _el$293 = _$createElement("span"), _el$294 = _$createTextNode(` \u2502 `);
8584
- _$insertNode(_el$282, _el$283);
8585
- _$setProp(_el$282, "flexDirection", "row");
8586
- _$setProp(_el$282, "paddingLeft", 1);
8587
- _$setProp(_el$282, "paddingRight", 1);
8588
- _$insertNode(_el$283, _el$284);
8589
- _$insertNode(_el$283, _el$285);
8590
- _$insertNode(_el$283, _el$287);
8591
- _$insertNode(_el$283, _el$289);
8592
- _$insertNode(_el$283, _el$290);
8593
- _$insertNode(_el$283, _el$292);
8594
- _$insertNode(_el$283, _el$293);
8595
- _$setProp(_el$283, "wrapMode", "none");
8596
- _$setProp(_el$283, "truncate", true);
8597
- _$insert(_el$284, (() => {
8598
- var _c$23 = _$memo(() => !!isActive());
8599
- return () => _c$23() ? `\u25B6 ${commandStatusIcon(cmd.status)} ${cmd.title}` : ` ${commandStatusIcon(cmd.status)} ${cmd.title}`;
8783
+ var _el$313 = _$createElement("box"), _el$314 = _$createElement("text"), _el$315 = _$createElement("span"), _el$316 = _$createElement("span"), _el$318 = _$createElement("span"), _el$320 = _$createElement("span"), _el$321 = _$createElement("span"), _el$323 = _$createElement("span"), _el$324 = _$createElement("span"), _el$325 = _$createTextNode(` \u2502 `);
8784
+ _$insertNode(_el$313, _el$314);
8785
+ _$setProp(_el$313, "flexDirection", "row");
8786
+ _$setProp(_el$313, "paddingLeft", 1);
8787
+ _$setProp(_el$313, "paddingRight", 1);
8788
+ _$insertNode(_el$314, _el$315);
8789
+ _$insertNode(_el$314, _el$316);
8790
+ _$insertNode(_el$314, _el$318);
8791
+ _$insertNode(_el$314, _el$320);
8792
+ _$insertNode(_el$314, _el$321);
8793
+ _$insertNode(_el$314, _el$323);
8794
+ _$insertNode(_el$314, _el$324);
8795
+ _$setProp(_el$314, "wrapMode", "none");
8796
+ _$setProp(_el$314, "truncate", true);
8797
+ _$insert(_el$315, (() => {
8798
+ var _c$31 = _$memo(() => !!isActive());
8799
+ return () => _c$31() ? `\u25B6 ${cmd.title}` : ` ${commandStatusIcon(cmd.status)} ${cmd.title}`;
8600
8800
  })());
8601
- _$insertNode(_el$285, _$createTextNode(` \u2502 `));
8602
- _$insertNode(_el$287, _$createTextNode(`Cmd `));
8603
- _$insert(_el$289, () => commandStatusLabel(cmd.status).short);
8604
- _$insertNode(_el$290, _$createTextNode(` \u2502 `));
8605
- _$insert(_el$292, () => cmd.command);
8606
- _$insert(_el$283, (() => {
8607
- var _c$24 = _$memo(() => cmd.args.length > 0);
8608
- return () => _c$24() && (() => {
8609
- var _el$295 = _$createElement("span"), _el$296 = _$createTextNode(` `);
8610
- _$insertNode(_el$295, _el$296);
8611
- _$insert(_el$295, () => cmd.args.join(" ").slice(0, 40), null);
8612
- _$effect((_$p) => _$setProp(_el$295, "style", {
8801
+ _$insertNode(_el$316, _$createTextNode(` \u2502 `));
8802
+ _$insertNode(_el$318, _$createTextNode(`Cmd `));
8803
+ _$insert(_el$320, () => commandStatusLabel(cmd.status).short);
8804
+ _$insertNode(_el$321, _$createTextNode(` \u2502 `));
8805
+ _$insert(_el$323, () => cmd.command);
8806
+ _$insert(_el$314, (() => {
8807
+ var _c$32 = _$memo(() => cmd.args.length > 0);
8808
+ return () => _c$32() && (() => {
8809
+ var _el$326 = _$createElement("span"), _el$327 = _$createTextNode(` `);
8810
+ _$insertNode(_el$326, _el$327);
8811
+ _$insert(_el$326, () => cmd.args.join(" ").slice(0, 40), null);
8812
+ _$effect((_$p) => _$setProp(_el$326, "style", {
8613
8813
  fg: theme().textMuted
8614
8814
  }, _$p));
8615
- return _el$295;
8815
+ return _el$326;
8616
8816
  })();
8617
- })(), _el$293);
8618
- _$insert(_el$283, (() => {
8619
- var _c$25 = _$memo(() => cmd.exitCode !== undefined);
8620
- return () => _c$25() && (() => {
8621
- var _el$297 = _$createElement("span"), _el$298 = _$createTextNode(` \u2502 exit `);
8622
- _$insertNode(_el$297, _el$298);
8623
- _$insert(_el$297, () => cmd.exitCode, null);
8624
- _$effect((_$p) => _$setProp(_el$297, "style", {
8817
+ })(), _el$324);
8818
+ _$insert(_el$314, (() => {
8819
+ var _c$33 = _$memo(() => cmd.exitCode !== undefined);
8820
+ return () => _c$33() && (() => {
8821
+ var _el$328 = _$createElement("span"), _el$329 = _$createTextNode(` \u2502 exit `);
8822
+ _$insertNode(_el$328, _el$329);
8823
+ _$insert(_el$328, () => cmd.exitCode, null);
8824
+ _$effect((_$p) => _$setProp(_el$328, "style", {
8625
8825
  fg: cmd.exitCode === 0 ? theme().success : theme().error
8626
8826
  }, _$p));
8627
- return _el$297;
8827
+ return _el$328;
8628
8828
  })();
8629
- })(), _el$293);
8630
- _$insert(_el$283, (() => {
8631
- var _c$26 = _$memo(() => !!cmd.signal);
8632
- return () => _c$26() && (() => {
8633
- var _el$299 = _$createElement("span"), _el$300 = _$createTextNode(` \u2502 `);
8634
- _$insertNode(_el$299, _el$300);
8635
- _$insert(_el$299, () => cmd.signal, null);
8636
- _$effect((_$p) => _$setProp(_el$299, "style", {
8829
+ })(), _el$324);
8830
+ _$insert(_el$314, (() => {
8831
+ var _c$34 = _$memo(() => !!cmd.signal);
8832
+ return () => _c$34() && (() => {
8833
+ var _el$330 = _$createElement("span"), _el$331 = _$createTextNode(` \u2502 `);
8834
+ _$insertNode(_el$330, _el$331);
8835
+ _$insert(_el$330, () => cmd.signal, null);
8836
+ _$effect((_$p) => _$setProp(_el$330, "style", {
8637
8837
  fg: theme().warning
8638
8838
  }, _$p));
8639
- return _el$299;
8839
+ return _el$330;
8640
8840
  })();
8641
- })(), _el$293);
8642
- _$insertNode(_el$293, _el$294);
8643
- _$insert(_el$293, () => ageLabel(cmd.updatedAt, clock()), null);
8644
- _$insert(_el$283, (() => {
8645
- var _c$27 = _$memo(() => !!cmd.truncated);
8646
- return () => _c$27() && (() => {
8647
- var _el$301 = _$createElement("span");
8648
- _$insertNode(_el$301, _$createTextNode(` \u2502 \u26A0 truncated`));
8649
- _$effect((_$p) => _$setProp(_el$301, "style", {
8841
+ })(), _el$324);
8842
+ _$insertNode(_el$324, _el$325);
8843
+ _$insert(_el$324, () => ageLabel(cmd.updatedAt, clock()), null);
8844
+ _$insert(_el$314, (() => {
8845
+ var _c$35 = _$memo(() => !!cmd.truncated);
8846
+ return () => _c$35() && (() => {
8847
+ var _el$332 = _$createElement("span");
8848
+ _$insertNode(_el$332, _$createTextNode(` \u2502 \u26A0 truncated`));
8849
+ _$effect((_$p) => _$setProp(_el$332, "style", {
8650
8850
  fg: theme().warning,
8651
8851
  bold: true
8652
8852
  }, _$p));
8653
- return _el$301;
8853
+ return _el$332;
8654
8854
  })();
8655
8855
  })(), null);
8656
8856
  _$effect((_p$) => {
8657
- var _v$59 = isActive() ? theme().backgroundElement : undefined, _v$60 = {
8857
+ var _v$61 = isActive() ? theme().backgroundElement : undefined, _v$62 = {
8658
8858
  fg: commandStatusColor(cmd.status, theme()),
8659
8859
  bold: isActive()
8660
- }, _v$61 = {
8860
+ }, _v$63 = {
8661
8861
  fg: theme().textMuted
8662
- }, _v$62 = {
8862
+ }, _v$64 = {
8663
8863
  fg: theme().textMuted
8664
- }, _v$63 = {
8864
+ }, _v$65 = {
8665
8865
  fg: commandStatusColor(cmd.status, theme()),
8666
8866
  bold: true
8667
- }, _v$64 = {
8867
+ }, _v$66 = {
8668
8868
  fg: theme().textMuted
8669
- }, _v$65 = {
8869
+ }, _v$67 = {
8670
8870
  fg: theme().accent,
8671
8871
  bold: true
8672
- }, _v$66 = {
8872
+ }, _v$68 = {
8673
8873
  fg: theme().textMuted
8674
8874
  };
8675
- _v$59 !== _p$.e && (_p$.e = _$setProp(_el$282, "backgroundColor", _v$59, _p$.e));
8676
- _v$60 !== _p$.t && (_p$.t = _$setProp(_el$284, "style", _v$60, _p$.t));
8677
- _v$61 !== _p$.a && (_p$.a = _$setProp(_el$285, "style", _v$61, _p$.a));
8678
- _v$62 !== _p$.o && (_p$.o = _$setProp(_el$287, "style", _v$62, _p$.o));
8679
- _v$63 !== _p$.i && (_p$.i = _$setProp(_el$289, "style", _v$63, _p$.i));
8680
- _v$64 !== _p$.n && (_p$.n = _$setProp(_el$290, "style", _v$64, _p$.n));
8681
- _v$65 !== _p$.s && (_p$.s = _$setProp(_el$292, "style", _v$65, _p$.s));
8682
- _v$66 !== _p$.h && (_p$.h = _$setProp(_el$293, "style", _v$66, _p$.h));
8875
+ _v$61 !== _p$.e && (_p$.e = _$setProp(_el$313, "backgroundColor", _v$61, _p$.e));
8876
+ _v$62 !== _p$.t && (_p$.t = _$setProp(_el$315, "style", _v$62, _p$.t));
8877
+ _v$63 !== _p$.a && (_p$.a = _$setProp(_el$316, "style", _v$63, _p$.a));
8878
+ _v$64 !== _p$.o && (_p$.o = _$setProp(_el$318, "style", _v$64, _p$.o));
8879
+ _v$65 !== _p$.i && (_p$.i = _$setProp(_el$320, "style", _v$65, _p$.i));
8880
+ _v$66 !== _p$.n && (_p$.n = _$setProp(_el$321, "style", _v$66, _p$.n));
8881
+ _v$67 !== _p$.s && (_p$.s = _$setProp(_el$323, "style", _v$67, _p$.s));
8882
+ _v$68 !== _p$.h && (_p$.h = _$setProp(_el$324, "style", _v$68, _p$.h));
8683
8883
  return _p$;
8684
8884
  }, {
8685
8885
  e: undefined,
@@ -8691,7 +8891,7 @@ function LoopDashboard(props) {
8691
8891
  s: undefined,
8692
8892
  h: undefined
8693
8893
  });
8694
- return _el$282;
8894
+ return _el$313;
8695
8895
  })();
8696
8896
  }
8697
8897
  }));
@@ -8703,163 +8903,163 @@ function LoopDashboard(props) {
8703
8903
  return selectedCommand();
8704
8904
  },
8705
8905
  children: (cmd) => (() => {
8706
- var _el$303 = _$createElement("box"), _el$304 = _$createElement("text"), _el$305 = _$createElement("span"), _el$306 = _$createTextNode(` `), _el$307 = _$createElement("span"), _el$309 = _$createElement("span"), _el$310 = _$createTextNode(` \u2014 `), _el$311 = _$createTextNode(`
8707
- `), _el$312 = _$createElement("span"), _el$314 = _$createElement("span"), _el$315 = _$createTextNode(`
8708
- `), _el$316 = _$createElement("span"), _el$318 = _$createElement("span"), _el$320 = _$createElement("span"), _el$321 = _$createTextNode(`
8709
- `), _el$322 = _$createElement("span"), _el$324 = _$createElement("span"), _el$326 = _$createElement("span"), _el$327 = _$createTextNode(` bytes`), _el$328 = _$createElement("span"), _el$329 = _$createTextNode(` \u2502 updated `), _el$330 = _$createTextNode(`
8710
- `), _el$331 = _$createElement("span");
8711
- _$insertNode(_el$303, _el$304);
8712
- _$setProp(_el$303, "flexDirection", "column");
8713
- _$setProp(_el$303, "border", true);
8714
- _$setProp(_el$303, "padding", 1);
8715
- _$setProp(_el$303, "flexShrink", 0);
8716
- _$setProp(_el$303, "maxHeight", 8);
8717
- _$insertNode(_el$304, _el$305);
8718
- _$insertNode(_el$304, _el$307);
8719
- _$insertNode(_el$304, _el$309);
8720
- _$insertNode(_el$304, _el$311);
8721
- _$insertNode(_el$304, _el$312);
8722
- _$insertNode(_el$304, _el$314);
8723
- _$insertNode(_el$304, _el$315);
8724
- _$insertNode(_el$304, _el$316);
8725
- _$insertNode(_el$304, _el$318);
8726
- _$insertNode(_el$304, _el$320);
8727
- _$insertNode(_el$304, _el$321);
8728
- _$insertNode(_el$304, _el$322);
8729
- _$insertNode(_el$304, _el$324);
8730
- _$insertNode(_el$304, _el$326);
8731
- _$insertNode(_el$304, _el$328);
8732
- _$insertNode(_el$304, _el$330);
8733
- _$insertNode(_el$304, _el$331);
8734
- _$insertNode(_el$305, _el$306);
8735
- _$insert(_el$305, () => commandStatusIcon(cmd().status), _el$306);
8736
- _$insert(_el$305, () => cmd().title, null);
8737
- _$insertNode(_el$307, _$createTextNode(` Cmd `));
8738
- _$insertNode(_el$309, _el$310);
8739
- _$insert(_el$309, () => commandStatusLabel(cmd().status).short, _el$310);
8740
- _$insert(_el$309, () => commandStatusLabel(cmd().status).hint, null);
8741
- _$insertNode(_el$312, _$createTextNode(`\u2B22 Spawn: `));
8742
- _$insert(_el$314, () => cmd().command);
8743
- _$insert(_el$304, (() => {
8744
- var _c$28 = _$memo(() => cmd().args.length > 0);
8745
- return () => _c$28() && (() => {
8746
- var _el$333 = _$createElement("span"), _el$334 = _$createTextNode(` `);
8747
- _$insertNode(_el$333, _el$334);
8748
- _$insert(_el$333, () => cmd().args.join(" "), null);
8749
- _$effect((_$p) => _$setProp(_el$333, "style", {
8906
+ var _el$334 = _$createElement("box"), _el$335 = _$createElement("text"), _el$336 = _$createElement("span"), _el$337 = _$createTextNode(` `), _el$338 = _$createElement("span"), _el$340 = _$createElement("span"), _el$341 = _$createTextNode(` \u2014 `), _el$342 = _$createTextNode(`
8907
+ `), _el$343 = _$createElement("span"), _el$345 = _$createElement("span"), _el$346 = _$createTextNode(`
8908
+ `), _el$347 = _$createElement("span"), _el$349 = _$createElement("span"), _el$351 = _$createElement("span"), _el$352 = _$createTextNode(`
8909
+ `), _el$353 = _$createElement("span"), _el$355 = _$createElement("span"), _el$357 = _$createElement("span"), _el$358 = _$createTextNode(` bytes`), _el$359 = _$createElement("span"), _el$360 = _$createTextNode(` \u2502 updated `), _el$361 = _$createTextNode(`
8910
+ `), _el$362 = _$createElement("span");
8911
+ _$insertNode(_el$334, _el$335);
8912
+ _$setProp(_el$334, "flexDirection", "column");
8913
+ _$setProp(_el$334, "border", true);
8914
+ _$setProp(_el$334, "padding", 1);
8915
+ _$setProp(_el$334, "flexShrink", 0);
8916
+ _$setProp(_el$334, "maxHeight", 8);
8917
+ _$insertNode(_el$335, _el$336);
8918
+ _$insertNode(_el$335, _el$338);
8919
+ _$insertNode(_el$335, _el$340);
8920
+ _$insertNode(_el$335, _el$342);
8921
+ _$insertNode(_el$335, _el$343);
8922
+ _$insertNode(_el$335, _el$345);
8923
+ _$insertNode(_el$335, _el$346);
8924
+ _$insertNode(_el$335, _el$347);
8925
+ _$insertNode(_el$335, _el$349);
8926
+ _$insertNode(_el$335, _el$351);
8927
+ _$insertNode(_el$335, _el$352);
8928
+ _$insertNode(_el$335, _el$353);
8929
+ _$insertNode(_el$335, _el$355);
8930
+ _$insertNode(_el$335, _el$357);
8931
+ _$insertNode(_el$335, _el$359);
8932
+ _$insertNode(_el$335, _el$361);
8933
+ _$insertNode(_el$335, _el$362);
8934
+ _$insertNode(_el$336, _el$337);
8935
+ _$insert(_el$336, () => commandStatusIcon(cmd().status), _el$337);
8936
+ _$insert(_el$336, () => cmd().title, null);
8937
+ _$insertNode(_el$338, _$createTextNode(` Cmd `));
8938
+ _$insertNode(_el$340, _el$341);
8939
+ _$insert(_el$340, () => commandStatusLabel(cmd().status).short, _el$341);
8940
+ _$insert(_el$340, () => commandStatusLabel(cmd().status).hint, null);
8941
+ _$insertNode(_el$343, _$createTextNode(`\u2B22 Spawn: `));
8942
+ _$insert(_el$345, () => cmd().command);
8943
+ _$insert(_el$335, (() => {
8944
+ var _c$36 = _$memo(() => cmd().args.length > 0);
8945
+ return () => _c$36() && (() => {
8946
+ var _el$364 = _$createElement("span"), _el$365 = _$createTextNode(` `);
8947
+ _$insertNode(_el$364, _el$365);
8948
+ _$insert(_el$364, () => cmd().args.join(" "), null);
8949
+ _$effect((_$p) => _$setProp(_el$364, "style", {
8750
8950
  fg: theme().text
8751
8951
  }, _$p));
8752
- return _el$333;
8952
+ return _el$364;
8753
8953
  })();
8754
- })(), _el$315);
8755
- _$insertNode(_el$316, _$createTextNode(`\uD83D\uDCC1 `));
8756
- _$insertNode(_el$318, _$createTextNode(`Cwd: `));
8757
- _$insert(_el$320, () => cmd().cwd.replace(String(props.directory), "."));
8758
- _$insert(_el$304, (() => {
8759
- var _c$29 = _$memo(() => !!cmd().goalID);
8760
- return () => _c$29() && [(() => {
8761
- var _el$335 = _$createElement("span");
8762
- _$insertNode(_el$335, _$createTextNode(` \u2502 \uD83D\uDD17 linked goal `));
8763
- _$effect((_$p) => _$setProp(_el$335, "style", {
8954
+ })(), _el$346);
8955
+ _$insertNode(_el$347, _$createTextNode(`\uD83D\uDCC1 `));
8956
+ _$insertNode(_el$349, _$createTextNode(`Cwd: `));
8957
+ _$insert(_el$351, () => cmd().cwd.replace(String(props.directory), "."));
8958
+ _$insert(_el$335, (() => {
8959
+ var _c$37 = _$memo(() => !!cmd().goalID);
8960
+ return () => _c$37() && [(() => {
8961
+ var _el$366 = _$createElement("span");
8962
+ _$insertNode(_el$366, _$createTextNode(` \u2502 \uD83D\uDD17 linked goal `));
8963
+ _$effect((_$p) => _$setProp(_el$366, "style", {
8764
8964
  fg: theme().textMuted
8765
8965
  }, _$p));
8766
- return _el$335;
8966
+ return _el$366;
8767
8967
  })(), (() => {
8768
- var _el$337 = _$createElement("span");
8769
- _$insert(_el$337, () => cmd().goalID.slice(0, 8));
8770
- _$effect((_$p) => _$setProp(_el$337, "style", {
8968
+ var _el$368 = _$createElement("span");
8969
+ _$insert(_el$368, () => cmd().goalID.slice(0, 8));
8970
+ _$effect((_$p) => _$setProp(_el$368, "style", {
8771
8971
  fg: theme().text
8772
8972
  }, _$p));
8773
- return _el$337;
8973
+ return _el$368;
8774
8974
  })()];
8775
- })(), _el$321);
8776
- _$insertNode(_el$322, _$createTextNode(`\uD83D\uDCBE `));
8777
- _$insertNode(_el$324, _$createTextNode(`Output: `));
8778
- _$insertNode(_el$326, _el$327);
8779
- _$insert(_el$326, () => cmd().outputBytes, _el$327);
8780
- _$insert(_el$304, (() => {
8781
- var _c$30 = _$memo(() => !!cmd().truncated);
8782
- return () => _c$30() && (() => {
8783
- var _el$338 = _$createElement("span");
8784
- _$insertNode(_el$338, _$createTextNode(` \xB7 \u26A0 truncated`));
8785
- _$effect((_$p) => _$setProp(_el$338, "style", {
8975
+ })(), _el$352);
8976
+ _$insertNode(_el$353, _$createTextNode(`\uD83D\uDCBE `));
8977
+ _$insertNode(_el$355, _$createTextNode(`Output: `));
8978
+ _$insertNode(_el$357, _el$358);
8979
+ _$insert(_el$357, () => cmd().outputBytes, _el$358);
8980
+ _$insert(_el$335, (() => {
8981
+ var _c$38 = _$memo(() => !!cmd().truncated);
8982
+ return () => _c$38() && (() => {
8983
+ var _el$369 = _$createElement("span");
8984
+ _$insertNode(_el$369, _$createTextNode(` \xB7 \u26A0 truncated`));
8985
+ _$effect((_$p) => _$setProp(_el$369, "style", {
8786
8986
  fg: theme().warning,
8787
8987
  bold: true
8788
8988
  }, _$p));
8789
- return _el$338;
8989
+ return _el$369;
8790
8990
  })();
8791
- })(), _el$328);
8792
- _$insertNode(_el$328, _el$329);
8793
- _$insert(_el$328, () => ageLabel(cmd().updatedAt, clock()), null);
8794
- _$insert(_el$304, (() => {
8795
- var _c$31 = _$memo(() => !!cmd().lastError);
8796
- return () => _c$31() && [(() => {
8797
- var _el$340 = _$createElement("span"), _el$341 = _$createTextNode(`
8991
+ })(), _el$359);
8992
+ _$insertNode(_el$359, _el$360);
8993
+ _$insert(_el$359, () => ageLabel(cmd().updatedAt, clock()), null);
8994
+ _$insert(_el$335, (() => {
8995
+ var _c$39 = _$memo(() => !!cmd().lastError);
8996
+ return () => _c$39() && [(() => {
8997
+ var _el$371 = _$createElement("span"), _el$372 = _$createTextNode(`
8798
8998
  \u26A0 Error: `);
8799
- _$insertNode(_el$340, _el$341);
8800
- _$effect((_$p) => _$setProp(_el$340, "style", {
8999
+ _$insertNode(_el$371, _el$372);
9000
+ _$effect((_$p) => _$setProp(_el$371, "style", {
8801
9001
  fg: theme().error,
8802
9002
  bold: true
8803
9003
  }, _$p));
8804
- return _el$340;
9004
+ return _el$371;
8805
9005
  })(), (() => {
8806
- var _el$343 = _$createElement("span");
8807
- _$insert(_el$343, () => cmd().lastError.slice(0, 120));
8808
- _$effect((_$p) => _$setProp(_el$343, "style", {
9006
+ var _el$374 = _$createElement("span");
9007
+ _$insert(_el$374, () => cmd().lastError.slice(0, 120));
9008
+ _$effect((_$p) => _$setProp(_el$374, "style", {
8809
9009
  fg: theme().error
8810
9010
  }, _$p));
8811
- return _el$343;
9011
+ return _el$374;
8812
9012
  })()];
8813
- })(), _el$330);
8814
- _$insertNode(_el$331, _$createTextNode(`o fullscreen \xB7 X kill \xB7 R restart \xB7 x remove-done \xB7 :interrupt :terminate :remove \xB7 text + Enter writes stdin`));
9013
+ })(), _el$361);
9014
+ _$insertNode(_el$362, _$createTextNode(`o fullscreen \xB7 X kill \xB7 R restart \xB7 x remove-done \xB7 :interrupt :terminate :remove \xB7 text + Enter writes stdin`));
8815
9015
  _$effect((_p$) => {
8816
- var _v$67 = commandBorderColor(cmd().status, theme()), _v$68 = {
9016
+ var _v$69 = commandBorderColor(cmd().status, theme()), _v$70 = {
8817
9017
  fg: commandStatusColor(cmd().status, theme()),
8818
9018
  bold: true
8819
- }, _v$69 = {
9019
+ }, _v$71 = {
8820
9020
  fg: theme().textMuted
8821
- }, _v$70 = {
9021
+ }, _v$72 = {
8822
9022
  fg: commandStatusColor(cmd().status, theme())
8823
- }, _v$71 = {
9023
+ }, _v$73 = {
8824
9024
  fg: theme().primary,
8825
9025
  bold: true
8826
- }, _v$72 = {
8827
- fg: theme().accent,
8828
- bold: true
8829
- }, _v$73 = {
8830
- fg: theme().textMuted
8831
9026
  }, _v$74 = {
8832
9027
  fg: theme().accent,
8833
9028
  bold: true
8834
9029
  }, _v$75 = {
8835
9030
  fg: theme().textMuted
8836
9031
  }, _v$76 = {
8837
- fg: theme().warning,
9032
+ fg: theme().accent,
8838
9033
  bold: true
8839
9034
  }, _v$77 = {
9035
+ fg: theme().textMuted
9036
+ }, _v$78 = {
8840
9037
  fg: theme().warning,
8841
9038
  bold: true
8842
- }, _v$78 = {
8843
- fg: theme().text
8844
9039
  }, _v$79 = {
8845
- fg: theme().textMuted
9040
+ fg: theme().warning,
9041
+ bold: true
8846
9042
  }, _v$80 = {
9043
+ fg: theme().text
9044
+ }, _v$81 = {
9045
+ fg: theme().textMuted
9046
+ }, _v$82 = {
8847
9047
  fg: theme().textMuted
8848
9048
  };
8849
- _v$67 !== _p$.e && (_p$.e = _$setProp(_el$303, "borderColor", _v$67, _p$.e));
8850
- _v$68 !== _p$.t && (_p$.t = _$setProp(_el$305, "style", _v$68, _p$.t));
8851
- _v$69 !== _p$.a && (_p$.a = _$setProp(_el$307, "style", _v$69, _p$.a));
8852
- _v$70 !== _p$.o && (_p$.o = _$setProp(_el$309, "style", _v$70, _p$.o));
8853
- _v$71 !== _p$.i && (_p$.i = _$setProp(_el$312, "style", _v$71, _p$.i));
8854
- _v$72 !== _p$.n && (_p$.n = _$setProp(_el$314, "style", _v$72, _p$.n));
8855
- _v$73 !== _p$.s && (_p$.s = _$setProp(_el$316, "style", _v$73, _p$.s));
8856
- _v$74 !== _p$.h && (_p$.h = _$setProp(_el$318, "style", _v$74, _p$.h));
8857
- _v$75 !== _p$.r && (_p$.r = _$setProp(_el$320, "style", _v$75, _p$.r));
8858
- _v$76 !== _p$.d && (_p$.d = _$setProp(_el$322, "style", _v$76, _p$.d));
8859
- _v$77 !== _p$.l && (_p$.l = _$setProp(_el$324, "style", _v$77, _p$.l));
8860
- _v$78 !== _p$.u && (_p$.u = _$setProp(_el$326, "style", _v$78, _p$.u));
8861
- _v$79 !== _p$.c && (_p$.c = _$setProp(_el$328, "style", _v$79, _p$.c));
8862
- _v$80 !== _p$.w && (_p$.w = _$setProp(_el$331, "style", _v$80, _p$.w));
9049
+ _v$69 !== _p$.e && (_p$.e = _$setProp(_el$334, "borderColor", _v$69, _p$.e));
9050
+ _v$70 !== _p$.t && (_p$.t = _$setProp(_el$336, "style", _v$70, _p$.t));
9051
+ _v$71 !== _p$.a && (_p$.a = _$setProp(_el$338, "style", _v$71, _p$.a));
9052
+ _v$72 !== _p$.o && (_p$.o = _$setProp(_el$340, "style", _v$72, _p$.o));
9053
+ _v$73 !== _p$.i && (_p$.i = _$setProp(_el$343, "style", _v$73, _p$.i));
9054
+ _v$74 !== _p$.n && (_p$.n = _$setProp(_el$345, "style", _v$74, _p$.n));
9055
+ _v$75 !== _p$.s && (_p$.s = _$setProp(_el$347, "style", _v$75, _p$.s));
9056
+ _v$76 !== _p$.h && (_p$.h = _$setProp(_el$349, "style", _v$76, _p$.h));
9057
+ _v$77 !== _p$.r && (_p$.r = _$setProp(_el$351, "style", _v$77, _p$.r));
9058
+ _v$78 !== _p$.d && (_p$.d = _$setProp(_el$353, "style", _v$78, _p$.d));
9059
+ _v$79 !== _p$.l && (_p$.l = _$setProp(_el$355, "style", _v$79, _p$.l));
9060
+ _v$80 !== _p$.u && (_p$.u = _$setProp(_el$357, "style", _v$80, _p$.u));
9061
+ _v$81 !== _p$.c && (_p$.c = _$setProp(_el$359, "style", _v$81, _p$.c));
9062
+ _v$82 !== _p$.w && (_p$.w = _$setProp(_el$362, "style", _v$82, _p$.w));
8863
9063
  return _p$;
8864
9064
  }, {
8865
9065
  e: undefined,
@@ -8877,7 +9077,7 @@ function LoopDashboard(props) {
8877
9077
  c: undefined,
8878
9078
  w: undefined
8879
9079
  });
8880
- return _el$303;
9080
+ return _el$334;
8881
9081
  })()
8882
9082
  })];
8883
9083
  }
@@ -8905,29 +9105,29 @@ function LoopDashboard(props) {
8905
9105
  },
8906
9106
  children: (ev) => [`
8907
9107
  `, (() => {
8908
- var _el$344 = _$createElement("span");
8909
- _$insert(_el$344, () => String(ev.type));
8910
- _$effect((_$p) => _$setProp(_el$344, "style", {
9108
+ var _el$375 = _$createElement("span");
9109
+ _$insert(_el$375, () => String(ev.type));
9110
+ _$effect((_$p) => _$setProp(_el$375, "style", {
8911
9111
  fg: eventColor(String(ev.type), theme()),
8912
9112
  bold: true
8913
9113
  }, _$p));
8914
- return _el$344;
9114
+ return _el$375;
8915
9115
  })(), (() => {
8916
- var _el$345 = _$createElement("span"), _el$346 = _$createTextNode(` `);
8917
- _$insertNode(_el$345, _el$346);
8918
- _$insert(_el$345, () => ev.goalID?.slice(0, 8), null);
8919
- _$effect((_$p) => _$setProp(_el$345, "style", {
9116
+ var _el$376 = _$createElement("span"), _el$377 = _$createTextNode(` `);
9117
+ _$insertNode(_el$376, _el$377);
9118
+ _$insert(_el$376, () => ev.goalID?.slice(0, 8), null);
9119
+ _$effect((_$p) => _$setProp(_el$376, "style", {
8920
9120
  fg: theme().textMuted
8921
9121
  }, _$p));
8922
- return _el$345;
9122
+ return _el$376;
8923
9123
  })(), _$memo(() => _$memo(() => !!ev.summary)() && (() => {
8924
- var _el$347 = _$createElement("span"), _el$348 = _$createTextNode(` \u2014 `);
8925
- _$insertNode(_el$347, _el$348);
8926
- _$insert(_el$347, () => String(ev.summary).slice(0, 60), null);
8927
- _$effect((_$p) => _$setProp(_el$347, "style", {
9124
+ var _el$378 = _$createElement("span"), _el$379 = _$createTextNode(` \u2014 `);
9125
+ _$insertNode(_el$378, _el$379);
9126
+ _$insert(_el$378, () => String(ev.summary).slice(0, 60), null);
9127
+ _$effect((_$p) => _$setProp(_el$378, "style", {
8928
9128
  fg: theme().text
8929
9129
  }, _$p));
8930
- return _el$347;
9130
+ return _el$378;
8931
9131
  })())]
8932
9132
  }), null);
8933
9133
  _$effect((_p$) => {
@@ -8966,16 +9166,12 @@ function LoopDashboard(props) {
8966
9166
  }, _el$54);
8967
9167
  _$setProp(_el$54, "flexGrow", 1);
8968
9168
  _$setProp(_el$54, "onInput", (v) => {
8969
- debugLog("onInput", JSON.stringify(v), "mode", mode());
8970
9169
  if (mode() === "insert")
8971
9170
  setCommandInput(v);
8972
9171
  else if (inputEl?.value)
8973
9172
  inputEl.value = "";
8974
9173
  });
8975
9174
  _$setProp(_el$54, "onKeyDown", (evt) => {
8976
- const name = evt.name || "";
8977
- const seq = evt.sequence || "";
8978
- debugLog("input onKeyDown", `name=${name} seq=${JSON.stringify(seq)} mode=${mode()} value=${JSON.stringify(commandInput())}`);
8979
9175
  if (mode() !== "insert") {
8980
9176
  if ((evt.name || "").length === 1)
8981
9177
  prevent(evt);
@@ -9723,7 +9919,6 @@ function createCommandStreamClient(options = {}) {
9723
9919
  }
9724
9920
 
9725
9921
  // src/tui/terminal-screen.ts
9726
- var import_headless = __toESM(require_xterm_headless(), 1);
9727
9922
  var BASE_COLORS = [
9728
9923
  "#000000",
9729
9924
  "#cd0000",
@@ -9762,8 +9957,9 @@ function paletteToHex(index) {
9762
9957
  return toHex(g << 16 | g << 8 | g);
9763
9958
  }
9764
9959
  function createTerminalScreen(cols, rows) {
9960
+ const { Terminal } = require_xterm_headless();
9765
9961
  function makeTerm(nextCols, nextRows) {
9766
- return new import_headless.Terminal({
9962
+ return new Terminal({
9767
9963
  cols: nextCols,
9768
9964
  rows: nextRows,
9769
9965
  scrollback: 0,
@@ -12413,15 +12609,6 @@ var v2setup = (ctx) => {
12413
12609
  }
12414
12610
  },
12415
12611
  claimantID,
12416
- onOutcome: (outcome, requestID) => {
12417
- try {
12418
- const {
12419
- appendFileSync
12420
- } = __require("fs");
12421
- appendFileSync("/tmp/loopd-tui.log", `[${new Date().toISOString()}] native-worker request=${requestID} outcome=${JSON.stringify(outcome)}
12422
- `);
12423
- } catch {}
12424
- },
12425
12612
  isKnownParent: (parentSessionID) => {
12426
12613
  const parent = ctx.data.session.get(parentSessionID);
12427
12614
  if (!parent)