@bojackduy/opencode-loopd 1.11.2 → 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) {
@@ -6003,6 +5970,7 @@ function commandHelp() {
6003
5970
  " :nudge Force re-prompt now with full steering (N)",
6004
5971
  " :interactive Toggle manual mode (engine never starts turns)",
6005
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)",
6006
5974
  " :bug / :report Open prefilled GitHub bug report",
6007
5975
  " :logs / :help / :q Toggle logs / help / close",
6008
5976
  " Tip: create goals via /goal in the parent chat (agent clarifies first)."
@@ -6373,12 +6341,12 @@ function moveDashboardSelection(sel, move, goalCount, commandCount) {
6373
6341
  return { ...sel, commandIndex: max };
6374
6342
  }
6375
6343
  }
6376
- function resolveDashboardOpen(lists, sel, ownerSessionID, returnSessionID) {
6344
+ function resolveDashboardOpen(lists, sel, ownerSessionID, returnSessionID, showCompleted = false) {
6377
6345
  if (sel.view === "goals") {
6378
6346
  const goal = lists.goals[sel.goalIndex];
6379
6347
  return resolveOpenTarget({ selection: goal ? { kind: "goal", workerSessionID: goal.workerSessionID } : null, ownerSessionID, returnSessionID });
6380
6348
  }
6381
- const ownerCommands = filterCommandsByOwner(lists.commands, ownerSessionID);
6349
+ const ownerCommands = visibleOwnerCommands(lists.commands, ownerSessionID, showCompleted);
6382
6350
  const cmd = ownerCommands[sel.commandIndex];
6383
6351
  return resolveOpenTarget({
6384
6352
  selection: cmd ? { kind: "command", commandID: cmd.id } : null,
@@ -6396,16 +6364,6 @@ function visibleOwnerCommands(commands, ownerSessionID, showCompleted = false) {
6396
6364
 
6397
6365
  // src/tui/dashboard.tsx
6398
6366
  import { randomUUID as randomUUID2 } from "crypto";
6399
- var LOG_FILE = "/tmp/loopd-tui.log";
6400
- function debugLog(...args) {
6401
- try {
6402
- const {
6403
- appendFileSync
6404
- } = __require("fs");
6405
- appendFileSync(LOG_FILE, `[${new Date().toISOString()}] ${args.map((a) => typeof a === "string" ? a : JSON.stringify(a)).join(" ")}
6406
- `);
6407
- } catch {}
6408
- }
6409
6367
  function prevent(evt) {
6410
6368
  const e = evt;
6411
6369
  e.preventDefault?.();
@@ -6744,19 +6702,10 @@ function LoopDashboard(props) {
6744
6702
  typeof u === "function" ? u() : clearInterval(u);
6745
6703
  });
6746
6704
  onMount(() => {
6747
- try {
6748
- const {
6749
- appendFileSync
6750
- } = __require("fs");
6751
- appendFileSync(LOG_FILE, `[${new Date().toISOString()}] dashboard mounted dir=${props.directory} mode=${mode()} dialogOpen=${props.api.ui.dialog.open}
6752
- `);
6753
- } catch {}
6754
- debugLog("mounted", "dialogOpen", props.api.ui.dialog.open, "directory", props.directory);
6755
6705
  focusInput();
6756
6706
  });
6757
6707
  createEffect(() => {
6758
- const m = mode();
6759
- debugLog("mode ->", m);
6708
+ mode();
6760
6709
  focusInput();
6761
6710
  });
6762
6711
  function enterInsertMode() {
@@ -6777,7 +6726,6 @@ function LoopDashboard(props) {
6777
6726
  const name = evt.name || "";
6778
6727
  const seq = evt.sequence || "";
6779
6728
  const raw = evt.raw || "";
6780
- 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}`);
6781
6729
  if (!props.api.ui.dialog.open)
6782
6730
  return;
6783
6731
  const active = (() => {
@@ -6791,18 +6739,15 @@ function LoopDashboard(props) {
6791
6739
  return;
6792
6740
  const isColon = name === ":" || seq === ":" || raw === ":" || seq.includes(":") || raw.includes(":") || name === ";" || name === "colon";
6793
6741
  const isQuestion = name === "?" || seq === "?" || raw === "?" || seq.includes("?") || raw.includes("?");
6794
- debugLog("isColon", isColon, "isQuestion", isQuestion, "modeBefore", mode());
6795
6742
  if (mode() === "insert") {
6796
6743
  if (isEnterKey(evt)) {
6797
6744
  prevent(evt);
6798
- debugLog("insert enter -> execute");
6799
6745
  executeCommand(commandInput());
6800
6746
  return;
6801
6747
  }
6802
6748
  if (isEscapeKey(evt) || isCtrlN(evt)) {
6803
6749
  prevent(evt);
6804
6750
  returnToNormalMode();
6805
- debugLog("insert -> normal via esc/ctrl+n");
6806
6751
  return;
6807
6752
  }
6808
6753
  return;
@@ -6810,13 +6755,11 @@ function LoopDashboard(props) {
6810
6755
  if (isColon) {
6811
6756
  prevent(evt);
6812
6757
  enterInsertMode();
6813
- debugLog("normal -> insert");
6814
6758
  return;
6815
6759
  }
6816
6760
  if (isQuestion) {
6817
6761
  prevent(evt);
6818
6762
  setShowHelp((value) => !value);
6819
- debugLog("toggle help");
6820
6763
  return;
6821
6764
  }
6822
6765
  const key = raw || seq || name;
@@ -6839,7 +6782,6 @@ function LoopDashboard(props) {
6839
6782
  setStatusText(next ? `Showing finished ${tab() === "commands" ? "commands" : "goals"}.` : `Hiding finished ${tab() === "commands" ? "commands" : "goals"}.`);
6840
6783
  return next;
6841
6784
  });
6842
- debugLog("toggle completed");
6843
6785
  return;
6844
6786
  }
6845
6787
  const currentGoals = state()?.goals.filter((goal) => showCompleted() || goal.status !== "complete") || [];
@@ -6847,14 +6789,12 @@ function LoopDashboard(props) {
6847
6789
  if (name === "tab") {
6848
6790
  prevent(evt);
6849
6791
  setTab((v) => toggleDashboardView(v));
6850
- debugLog("switch tab ->", tab());
6851
6792
  return;
6852
6793
  }
6853
6794
  const directionalView = dashboardViewForKey(key);
6854
6795
  if (directionalView !== undefined) {
6855
6796
  prevent(evt);
6856
6797
  setTab(directionalView);
6857
- debugLog("select tab ->", tab());
6858
6798
  return;
6859
6799
  }
6860
6800
  function dashboardSelection() {
@@ -6904,7 +6844,7 @@ function LoopDashboard(props) {
6904
6844
  removeFinishedSelected();
6905
6845
  return;
6906
6846
  }
6907
- const needsGoalsTab = ["p", "r", "A", "N", "model", "models"].includes(key);
6847
+ const needsGoalsTab = ["p", "r", "A", "N", "model", "models", "agent", "agents"].includes(key);
6908
6848
  if (needsGoalsTab && tab() !== "goals") {
6909
6849
  prevent(evt);
6910
6850
  setStatusText("Goal controls need the Goals tab (Tab to switch).");
@@ -6950,7 +6890,7 @@ function LoopDashboard(props) {
6950
6890
  const target = resolveDashboardOpen({
6951
6891
  goals: currentGoals,
6952
6892
  commands: state()?.commands ?? []
6953
- }, dashboardSelection(), ownerSessionID(), currentRouteSessionID(props.api));
6893
+ }, dashboardSelection(), ownerSessionID(), currentRouteSessionID(props.api), showCompleted());
6954
6894
  if (target.kind === "goal") {
6955
6895
  props.api.route.navigate("session", {
6956
6896
  sessionID: target.workerSessionID
@@ -7045,8 +6985,13 @@ function LoopDashboard(props) {
7045
6985
  }, sel.id);
7046
6986
  }
7047
6987
  async function executeCommandTabCommand(verb, positional, raw) {
7048
- debugLog("commands-tab command", verb);
7049
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;
7050
6995
  case "new": {
7051
6996
  const argv = parseNewCommand(raw);
7052
6997
  if (!argv) {
@@ -7118,12 +7063,9 @@ function LoopDashboard(props) {
7118
7063
  }
7119
7064
  }
7120
7065
  async function executeCommand(cmd) {
7121
- debugLog("executeCommand raw=", JSON.stringify(cmd));
7122
7066
  const parsed = parseCommand(cmd);
7123
- debugLog("parsed", parsed);
7124
7067
  if (!parsed) {
7125
7068
  setStatusText("Empty command");
7126
- debugLog("empty command");
7127
7069
  return;
7128
7070
  }
7129
7071
  if (tab() === "commands" && !["q", "close"].includes(parsed.command)) {
@@ -7342,6 +7284,41 @@ function LoopDashboard(props) {
7342
7284
  await refresh();
7343
7285
  break;
7344
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
+ }
7345
7322
  case "model": {
7346
7323
  if (!selectedGoal()) {
7347
7324
  setStatusText("No goal selected");
@@ -7356,7 +7333,7 @@ function LoopDashboard(props) {
7356
7333
  version: 1,
7357
7334
  requestID: randomUUID2(),
7358
7335
  requestedAt: new Date().toISOString(),
7359
- command: "switch_goal_model",
7336
+ command: "switch_goal_identity",
7360
7337
  goalID: selectedGoal().id,
7361
7338
  args: {
7362
7339
  model: target
@@ -7840,8 +7817,8 @@ function LoopDashboard(props) {
7840
7817
  var _el$108 = _$createElement("span"), _el$109 = _$createTextNode(` `);
7841
7818
  _$insertNode(_el$108, _el$109);
7842
7819
  _$insert(_el$108, (() => {
7843
- var _c$11 = _$memo(() => runtime().phase === "running");
7844
- return () => _c$11() ? runningFrame() : phaseIcon(runtime().phase);
7820
+ var _c$12 = _$memo(() => runtime().phase === "running");
7821
+ return () => _c$12() ? runningFrame() : phaseIcon(runtime().phase);
7845
7822
  })(), _el$109);
7846
7823
  _$insert(_el$108, () => phaseLabel(runtime().phase).short.toUpperCase(), null);
7847
7824
  _$effect((_$p) => _$setProp(_el$108, "style", {
@@ -7958,29 +7935,41 @@ function LoopDashboard(props) {
7958
7935
  })();
7959
7936
  })(), null);
7960
7937
  _$insert(_el$99, (() => {
7961
- var _c$1 = _$memo(() => !!(runtime() && runtime().retryAfter));
7938
+ var _c$1 = _$memo(() => !!goal.config.agent);
7962
7939
  return () => _c$1() && (() => {
7963
- var _el$131 = _$createElement("span"), _el$132 = _$createTextNode(` \u2502 \u21BB `);
7940
+ var _el$131 = _$createElement("span"), _el$132 = _$createTextNode(` \u2502 \uD83E\uDD16 `);
7964
7941
  _$insertNode(_el$131, _el$132);
7965
- _$insert(_el$131, () => countdownLabel(runtime().retryAfter, clock()), null);
7942
+ _$insert(_el$131, () => goal.config.agent, null);
7966
7943
  _$effect((_$p) => _$setProp(_el$131, "style", {
7967
- fg: theme().accent
7944
+ fg: theme().info
7968
7945
  }, _$p));
7969
7946
  return _el$131;
7970
7947
  })();
7971
7948
  })(), null);
7972
7949
  _$insert(_el$99, (() => {
7973
- var _c$10 = _$memo(() => !!(runtime() && runtime().nextRunAt));
7950
+ var _c$10 = _$memo(() => !!(runtime() && runtime().retryAfter));
7974
7951
  return () => _c$10() && (() => {
7975
- var _el$133 = _$createElement("span"), _el$134 = _$createTextNode(` \u2502 \u23F0 `);
7952
+ var _el$133 = _$createElement("span"), _el$134 = _$createTextNode(` \u2502 \u21BB `);
7976
7953
  _$insertNode(_el$133, _el$134);
7977
- _$insert(_el$133, () => countdownLabel(runtime().nextRunAt, clock()), null);
7954
+ _$insert(_el$133, () => countdownLabel(runtime().retryAfter, clock()), null);
7978
7955
  _$effect((_$p) => _$setProp(_el$133, "style", {
7979
7956
  fg: theme().accent
7980
7957
  }, _$p));
7981
7958
  return _el$133;
7982
7959
  })();
7983
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);
7984
7973
  _$effect((_p$) => {
7985
7974
  var _v$36 = rowIdFor(goal.id), _v$37 = isActive() ? theme().backgroundElement : undefined, _v$38 = {
7986
7975
  fg: statusColor(goal.status, theme()),
@@ -8024,579 +8013,608 @@ function LoopDashboard(props) {
8024
8013
  const lp = () => goal().lastProgress;
8025
8014
  const blk = () => goal().blocker;
8026
8015
  return (() => {
8027
- var _el$135 = _$createElement("box"), _el$136 = _$createElement("text"), _el$137 = _$createElement("span"), _el$138 = _$createTextNode(` `), _el$139 = _$createElement("span"), _el$141 = _$createElement("span"), _el$142 = _$createTextNode(` \u2014 `), _el$143 = _$createTextNode(`
8028
- `), _el$144 = _$createElement("span"), _el$145 = _$createTextNode(`
8029
- `), _el$146 = _$createElement("span"), _el$148 = _$createElement("span");
8030
- _$insertNode(_el$135, _el$136);
8031
- _$setProp(_el$135, "flexDirection", "column");
8032
- _$setProp(_el$135, "border", true);
8033
- _$setProp(_el$135, "padding", 1);
8034
- _$setProp(_el$135, "flexShrink", 0);
8035
- _$setProp(_el$135, "maxHeight", 13);
8036
- _$insertNode(_el$136, _el$137);
8037
- _$insertNode(_el$136, _el$139);
8038
- _$insertNode(_el$136, _el$141);
8039
- _$insertNode(_el$136, _el$143);
8040
- _$insertNode(_el$136, _el$144);
8041
- _$insertNode(_el$136, _el$145);
8042
- _$insertNode(_el$136, _el$146);
8043
- _$insertNode(_el$136, _el$148);
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");
8044
8019
  _$insertNode(_el$137, _el$138);
8045
- _$insert(_el$137, () => statusIcon(goal().status), _el$138);
8046
- _$insert(_el$137, () => goal().name, null);
8047
- _$insertNode(_el$139, _$createTextNode(` Goal `));
8048
- _$insertNode(_el$141, _el$142);
8049
- _$insert(_el$141, () => goalStatusLabel(goal().status).short, _el$142);
8050
- _$insert(_el$141, () => goalStatusLabel(goal().status).hint, null);
8051
- _$insert(_el$136, (() => {
8052
- var _c$12 = _$memo(() => !!rt());
8053
- return () => _c$12() && [(() => {
8054
- var _el$149 = _$createElement("span");
8055
- _$insertNode(_el$149, _$createTextNode(` \u2502 Worker `));
8056
- _$effect((_$p) => _$setProp(_el$149, "style", {
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", {
8057
8046
  fg: theme().textMuted
8058
8047
  }, _$p));
8059
- return _el$149;
8048
+ return _el$151;
8060
8049
  })(), (() => {
8061
- var _el$151 = _$createElement("span"), _el$152 = _$createTextNode(` `), _el$153 = _$createTextNode(` \u2014 `);
8062
- _$insertNode(_el$151, _el$152);
8063
- _$insertNode(_el$151, _el$153);
8064
- _$insert(_el$151, () => phaseIcon(rt().phase), _el$152);
8065
- _$insert(_el$151, () => phaseLabel(rt().phase).short, _el$153);
8066
- _$insert(_el$151, () => phaseLabel(rt().phase).hint, null);
8067
- _$effect((_$p) => _$setProp(_el$151, "style", {
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", {
8068
8057
  fg: phaseColor(rt().phase, theme()),
8069
8058
  bold: true
8070
8059
  }, _$p));
8071
- return _el$151;
8060
+ return _el$153;
8072
8061
  })(), (() => {
8073
- var _el$154 = _$createElement("span"), _el$155 = _$createTextNode(` run `), _el$156 = _$createTextNode(` (budget `), _el$157 = _$createTextNode(`)`);
8074
- _$insertNode(_el$154, _el$155);
8075
- _$insertNode(_el$154, _el$156);
8076
- _$insertNode(_el$154, _el$157);
8077
- _$insert(_el$154, () => rt().runCount, _el$156);
8078
- _$insert(_el$154, () => rt().budgetTurnCount, _el$157);
8079
- _$effect((_$p) => _$setProp(_el$154, "style", {
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", {
8080
8069
  fg: theme().textMuted
8081
8070
  }, _$p));
8082
- return _el$154;
8071
+ return _el$156;
8083
8072
  })()];
8084
- })(), _el$143);
8085
- _$insert(_el$144, () => describeGoalState(goal().status, rt()?.phase));
8086
- _$insert(_el$136, (() => {
8087
- var _c$13 = _$memo(() => !!rt()?.workerAbortedAt);
8088
- return () => _c$13() && [(() => {
8089
- var _el$158 = _$createElement("span");
8090
- _$insertNode(_el$158, _$createTextNode(` \u2502 \u26A0 worker aborted `));
8091
- _$effect((_$p) => _$setProp(_el$158, "style", {
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", {
8092
8081
  fg: theme().warning,
8093
8082
  bold: true
8094
8083
  }, _$p));
8095
- return _el$158;
8084
+ return _el$160;
8096
8085
  })(), (() => {
8097
- var _el$160 = _$createElement("span"), _el$161 = _$createTextNode(` \u2014 session kept, next turn reuses it`);
8098
- _$insertNode(_el$160, _el$161);
8099
- _$insert(_el$160, () => ageLabel(rt().workerAbortedAt, clock()), _el$161);
8100
- _$effect((_$p) => _$setProp(_el$160, "style", {
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", {
8101
8090
  fg: theme().textMuted
8102
8091
  }, _$p));
8103
- return _el$160;
8092
+ return _el$162;
8104
8093
  })()];
8105
- })(), _el$145);
8106
- _$insert(_el$136, () => {
8094
+ })(), _el$147);
8095
+ _$insert(_el$138, () => {
8107
8096
  const agentName = goal().config.agent;
8108
8097
  const meta = agentName ? agentIndex()[agentName] ?? agentIndex()[agentName.toLowerCase()] : undefined;
8109
8098
  const model = goal().config.model;
8110
8099
  const slash = model?.indexOf("/") ?? -1;
8111
8100
  return [`
8112
8101
  `, (() => {
8113
- var _el$162 = _$createElement("span");
8114
- _$insertNode(_el$162, _$createTextNode(`\uD83E\uDD16 `));
8115
- _$effect((_$p) => _$setProp(_el$162, "style", {
8102
+ var _el$164 = _$createElement("span");
8103
+ _$insertNode(_el$164, _$createTextNode(`\uD83E\uDD16 `));
8104
+ _$effect((_$p) => _$setProp(_el$164, "style", {
8116
8105
  fg: theme().textMuted
8117
8106
  }, _$p));
8118
- return _el$162;
8107
+ return _el$164;
8119
8108
  })(), (() => {
8120
- var _el$164 = _$createElement("span");
8121
- _$insertNode(_el$164, _$createTextNode(`Agent: `));
8122
- _$effect((_$p) => _$setProp(_el$164, "style", {
8109
+ var _el$166 = _$createElement("span");
8110
+ _$insertNode(_el$166, _$createTextNode(`Agent: `));
8111
+ _$effect((_$p) => _$setProp(_el$166, "style", {
8123
8112
  fg: theme().primary,
8124
8113
  bold: true
8125
8114
  }, _$p));
8126
- return _el$164;
8115
+ return _el$166;
8127
8116
  })(), _$memo(() => agentName ? [(() => {
8128
- var _el$180 = _$createElement("span");
8129
- _$insert(_el$180, agentName);
8130
- _$effect((_$p) => _$setProp(_el$180, "style", {
8117
+ var _el$182 = _$createElement("span");
8118
+ _$insert(_el$182, agentName);
8119
+ _$effect((_$p) => _$setProp(_el$182, "style", {
8131
8120
  fg: agentColor(meta?.color, theme()),
8132
8121
  bold: true
8133
8122
  }, _$p));
8134
- return _el$180;
8123
+ return _el$182;
8135
8124
  })(), _$memo(() => _$memo(() => !!meta?.mode)() && (() => {
8136
- var _el$181 = _$createElement("span"), _el$182 = _$createTextNode(` (`), _el$183 = _$createTextNode(`)`);
8137
- _$insertNode(_el$181, _el$182);
8138
- _$insertNode(_el$181, _el$183);
8139
- _$insert(_el$181, () => meta.mode, _el$183);
8140
- _$effect((_$p) => _$setProp(_el$181, "style", {
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", {
8141
8130
  fg: theme().textMuted
8142
8131
  }, _$p));
8143
- return _el$181;
8132
+ return _el$183;
8144
8133
  })())] : goal().parentAgent ? [(() => {
8145
- var _el$184 = _$createElement("span");
8146
- _$insertNode(_el$184, _$createTextNode(`\u21A9 `));
8147
- _$effect((_$p) => _$setProp(_el$184, "style", {
8134
+ var _el$186 = _$createElement("span");
8135
+ _$insertNode(_el$186, _$createTextNode(`\u21A9 `));
8136
+ _$effect((_$p) => _$setProp(_el$186, "style", {
8148
8137
  fg: theme().textMuted
8149
8138
  }, _$p));
8150
- return _el$184;
8139
+ return _el$186;
8151
8140
  })(), (() => {
8152
- var _el$186 = _$createElement("span");
8153
- _$insert(_el$186, () => goal().parentAgent);
8154
- _$effect((_$p) => _$setProp(_el$186, "style", {
8141
+ var _el$188 = _$createElement("span");
8142
+ _$insert(_el$188, () => goal().parentAgent);
8143
+ _$effect((_$p) => _$setProp(_el$188, "style", {
8155
8144
  fg: theme().text,
8156
8145
  bold: true
8157
8146
  }, _$p));
8158
- return _el$186;
8147
+ return _el$188;
8159
8148
  })(), (() => {
8160
- var _el$187 = _$createElement("span");
8161
- _$insertNode(_el$187, _$createTextNode(` (parent)`));
8162
- _$effect((_$p) => _$setProp(_el$187, "style", {
8163
- fg: theme().textMuted
8164
- }, _$p));
8165
- return _el$187;
8166
- })()] : (() => {
8167
8149
  var _el$189 = _$createElement("span");
8168
- _$insertNode(_el$189, _$createTextNode(`parent`));
8150
+ _$insertNode(_el$189, _$createTextNode(` (parent)`));
8169
8151
  _$effect((_$p) => _$setProp(_el$189, "style", {
8170
8152
  fg: theme().textMuted
8171
8153
  }, _$p));
8172
8154
  return _el$189;
8173
- })()), (() => {
8174
- var _el$166 = _$createElement("span");
8175
- _$insertNode(_el$166, _$createTextNode(` \u2502 \uD83E\uDDE0 `));
8176
- _$effect((_$p) => _$setProp(_el$166, "style", {
8155
+ })()] : (() => {
8156
+ var _el$191 = _$createElement("span");
8157
+ _$insertNode(_el$191, _$createTextNode(`parent`));
8158
+ _$effect((_$p) => _$setProp(_el$191, "style", {
8177
8159
  fg: theme().textMuted
8178
8160
  }, _$p));
8179
- return _el$166;
8180
- })(), (() => {
8161
+ return _el$191;
8162
+ })()), (() => {
8181
8163
  var _el$168 = _$createElement("span");
8182
- _$insertNode(_el$168, _$createTextNode(`Model: `));
8164
+ _$insertNode(_el$168, _$createTextNode(` \u2502 \uD83E\uDDE0 `));
8183
8165
  _$effect((_$p) => _$setProp(_el$168, "style", {
8166
+ fg: theme().textMuted
8167
+ }, _$p));
8168
+ return _el$168;
8169
+ })(), (() => {
8170
+ var _el$170 = _$createElement("span");
8171
+ _$insertNode(_el$170, _$createTextNode(`Model: `));
8172
+ _$effect((_$p) => _$setProp(_el$170, "style", {
8184
8173
  fg: theme().primary,
8185
8174
  bold: true
8186
8175
  }, _$p));
8187
- return _el$168;
8176
+ return _el$170;
8188
8177
  })(), _$memo(() => model && slash > 0 ? [(() => {
8189
- var _el$191 = _$createElement("span"), _el$192 = _$createTextNode(`/`);
8190
- _$insertNode(_el$191, _el$192);
8191
- _$insert(_el$191, () => model.slice(0, slash), _el$192);
8192
- _$effect((_$p) => _$setProp(_el$191, "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", {
8193
8182
  fg: theme().textMuted
8194
8183
  }, _$p));
8195
- return _el$191;
8184
+ return _el$193;
8196
8185
  })(), (() => {
8197
- var _el$193 = _$createElement("span");
8198
- _$insert(_el$193, () => model.slice(slash + 1));
8199
- _$effect((_$p) => _$setProp(_el$193, "style", {
8186
+ var _el$195 = _$createElement("span");
8187
+ _$insert(_el$195, () => model.slice(slash + 1));
8188
+ _$effect((_$p) => _$setProp(_el$195, "style", {
8200
8189
  fg: theme().info,
8201
8190
  bold: true
8202
8191
  }, _$p));
8203
- return _el$193;
8192
+ return _el$195;
8204
8193
  })()] : goal().parentModel ? [(() => {
8205
- var _el$194 = _$createElement("span");
8206
- _$insertNode(_el$194, _$createTextNode(`\u21A9 `));
8207
- _$effect((_$p) => _$setProp(_el$194, "style", {
8194
+ var _el$196 = _$createElement("span");
8195
+ _$insertNode(_el$196, _$createTextNode(`\u21A9 `));
8196
+ _$effect((_$p) => _$setProp(_el$196, "style", {
8208
8197
  fg: theme().textMuted
8209
8198
  }, _$p));
8210
- return _el$194;
8199
+ return _el$196;
8211
8200
  })(), (() => {
8212
- var _el$196 = _$createElement("span");
8213
- _$insert(_el$196, () => goal().parentModel);
8214
- _$effect((_$p) => _$setProp(_el$196, "style", {
8201
+ var _el$198 = _$createElement("span");
8202
+ _$insert(_el$198, () => goal().parentModel);
8203
+ _$effect((_$p) => _$setProp(_el$198, "style", {
8215
8204
  fg: theme().info,
8216
8205
  bold: true
8217
8206
  }, _$p));
8218
- return _el$196;
8207
+ return _el$198;
8219
8208
  })(), (() => {
8220
- var _el$197 = _$createElement("span");
8221
- _$insertNode(_el$197, _$createTextNode(` (parent)`));
8222
- _$effect((_$p) => _$setProp(_el$197, "style", {
8223
- fg: theme().textMuted
8224
- }, _$p));
8225
- return _el$197;
8226
- })()] : (() => {
8227
8209
  var _el$199 = _$createElement("span");
8228
- _$insertNode(_el$199, _$createTextNode(`parent`));
8210
+ _$insertNode(_el$199, _$createTextNode(` (parent)`));
8229
8211
  _$effect((_$p) => _$setProp(_el$199, "style", {
8230
8212
  fg: theme().textMuted
8231
8213
  }, _$p));
8232
8214
  return _el$199;
8233
- })()), (() => {
8234
- var _el$170 = _$createElement("span");
8235
- _$insertNode(_el$170, _$createTextNode(` \u2502 \uD83D\uDCB0 `));
8236
- _$effect((_$p) => _$setProp(_el$170, "style", {
8215
+ })()] : (() => {
8216
+ var _el$201 = _$createElement("span");
8217
+ _$insertNode(_el$201, _$createTextNode(`parent`));
8218
+ _$effect((_$p) => _$setProp(_el$201, "style", {
8237
8219
  fg: theme().textMuted
8238
8220
  }, _$p));
8239
- return _el$170;
8240
- })(), (() => {
8221
+ return _el$201;
8222
+ })()), (() => {
8241
8223
  var _el$172 = _$createElement("span");
8242
- _$insertNode(_el$172, _$createTextNode(`Spent: `));
8224
+ _$insertNode(_el$172, _$createTextNode(` \u2502 \uD83D\uDCB0 `));
8243
8225
  _$effect((_$p) => _$setProp(_el$172, "style", {
8244
- fg: theme().primary,
8245
- bold: true
8226
+ fg: theme().textMuted
8246
8227
  }, _$p));
8247
8228
  return _el$172;
8248
8229
  })(), (() => {
8249
8230
  var _el$174 = _$createElement("span");
8250
- _$insert(_el$174, () => formatCost(goal().costUsed));
8231
+ _$insertNode(_el$174, _$createTextNode(`Spent: `));
8251
8232
  _$effect((_$p) => _$setProp(_el$174, "style", {
8252
- fg: theme().success,
8233
+ fg: theme().primary,
8253
8234
  bold: true
8254
8235
  }, _$p));
8255
8236
  return _el$174;
8256
8237
  })(), (() => {
8257
- var _el$175 = _$createElement("span");
8258
- _$insertNode(_el$175, _$createTextNode(` \xB7 `));
8259
- _$effect((_$p) => _$setProp(_el$175, "style", {
8260
- fg: theme().textMuted
8238
+ var _el$176 = _$createElement("span");
8239
+ _$insert(_el$176, () => formatCost(goal().costUsed));
8240
+ _$effect((_$p) => _$setProp(_el$176, "style", {
8241
+ fg: theme().success,
8242
+ bold: true
8261
8243
  }, _$p));
8262
- return _el$175;
8244
+ return _el$176;
8263
8245
  })(), (() => {
8264
8246
  var _el$177 = _$createElement("span");
8265
- _$insert(_el$177, () => formatTokens(goal().tokensUsed));
8247
+ _$insertNode(_el$177, _$createTextNode(` \xB7 `));
8266
8248
  _$effect((_$p) => _$setProp(_el$177, "style", {
8249
+ fg: theme().textMuted
8250
+ }, _$p));
8251
+ return _el$177;
8252
+ })(), (() => {
8253
+ var _el$179 = _$createElement("span");
8254
+ _$insert(_el$179, () => formatTokens(goal().tokensUsed));
8255
+ _$effect((_$p) => _$setProp(_el$179, "style", {
8267
8256
  fg: theme().warning,
8268
8257
  bold: true
8269
8258
  }, _$p));
8270
- return _el$177;
8259
+ return _el$179;
8271
8260
  })(), (() => {
8272
- var _el$178 = _$createElement("span"), _el$179 = _$createTextNode(` tokens \xB7 `);
8273
- _$insertNode(_el$178, _el$179);
8274
- _$insert(_el$178, () => formatDuration(goal().timeUsedSeconds), null);
8275
- _$effect((_$p) => _$setProp(_el$178, "style", {
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", {
8276
8265
  fg: theme().textMuted
8277
8266
  }, _$p));
8278
- return _el$178;
8267
+ return _el$180;
8279
8268
  })()];
8280
- }, _el$145);
8281
- _$insertNode(_el$146, _$createTextNode(`\uD83C\uDFAF Target: `));
8282
- _$insert(_el$148, () => goal().objective.slice(0, 160));
8283
- _$insert(_el$136, (() => {
8284
- var _c$14 = _$memo(() => !!lp());
8285
- return () => _c$14() && [(() => {
8286
- var _el$201 = _$createElement("span"), _el$202 = _$createTextNode(`
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(`
8287
8276
  \u2714 `);
8288
- _$insertNode(_el$201, _el$202);
8289
- _$effect((_$p) => _$setProp(_el$201, "style", {
8277
+ _$insertNode(_el$203, _el$204);
8278
+ _$effect((_$p) => _$setProp(_el$203, "style", {
8290
8279
  fg: theme().success
8291
8280
  }, _$p));
8292
- return _el$201;
8281
+ return _el$203;
8293
8282
  })(), (() => {
8294
- var _el$204 = _$createElement("span");
8295
- _$insertNode(_el$204, _$createTextNode(`Progress: `));
8296
- _$effect((_$p) => _$setProp(_el$204, "style", {
8283
+ var _el$206 = _$createElement("span");
8284
+ _$insertNode(_el$206, _$createTextNode(`Progress: `));
8285
+ _$effect((_$p) => _$setProp(_el$206, "style", {
8297
8286
  fg: theme().success,
8298
8287
  bold: true
8299
8288
  }, _$p));
8300
- return _el$204;
8289
+ return _el$206;
8301
8290
  })(), (() => {
8302
- var _el$206 = _$createElement("span");
8303
- _$insert(_el$206, () => lp().summary.slice(0, 100));
8304
- _$effect((_$p) => _$setProp(_el$206, "style", {
8291
+ var _el$208 = _$createElement("span");
8292
+ _$insert(_el$208, () => lp().summary.slice(0, 100));
8293
+ _$effect((_$p) => _$setProp(_el$208, "style", {
8305
8294
  fg: theme().text
8306
8295
  }, _$p));
8307
- return _el$206;
8296
+ return _el$208;
8308
8297
  })(), (() => {
8309
- var _el$207 = _$createElement("span"), _el$208 = _$createTextNode(` \u2192 `);
8310
- _$insertNode(_el$207, _el$208);
8311
- _$insert(_el$207, () => lp().next?.slice(0, 60) || "", null);
8312
- _$effect((_$p) => _$setProp(_el$207, "style", {
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", {
8313
8302
  fg: theme().textMuted
8314
8303
  }, _$p));
8315
- return _el$207;
8304
+ return _el$209;
8316
8305
  })()];
8317
8306
  })(), null);
8318
- _$insert(_el$136, (() => {
8319
- var _c$15 = _$memo(() => !!blk());
8320
- return () => _c$15() && [(() => {
8321
- var _el$209 = _$createElement("span"), _el$210 = _$createTextNode(`
8307
+ _$insert(_el$138, (() => {
8308
+ var _c$16 = _$memo(() => !!blk());
8309
+ return () => _c$16() && [(() => {
8310
+ var _el$211 = _$createElement("span"), _el$212 = _$createTextNode(`
8322
8311
  \u2716 Blocked: `);
8323
- _$insertNode(_el$209, _el$210);
8324
- _$effect((_$p) => _$setProp(_el$209, "style", {
8312
+ _$insertNode(_el$211, _el$212);
8313
+ _$effect((_$p) => _$setProp(_el$211, "style", {
8325
8314
  fg: theme().error,
8326
8315
  bold: true
8327
8316
  }, _$p));
8328
- return _el$209;
8317
+ return _el$211;
8329
8318
  })(), (() => {
8330
- var _el$212 = _$createElement("span");
8331
- _$insert(_el$212, () => blk().reason.slice(0, 140));
8332
- _$effect((_$p) => _$setProp(_el$212, "style", {
8319
+ var _el$214 = _$createElement("span");
8320
+ _$insert(_el$214, () => blk().reason.slice(0, 140));
8321
+ _$effect((_$p) => _$setProp(_el$214, "style", {
8333
8322
  fg: theme().error
8334
8323
  }, _$p));
8335
- return _el$212;
8324
+ return _el$214;
8336
8325
  })(), (() => {
8337
- var _el$213 = _$createElement("span"), _el$214 = _$createTextNode(` \u2014 `);
8338
- _$insertNode(_el$213, _el$214);
8339
- _$insert(_el$213, () => blk().needed.slice(0, 60), null);
8340
- _$effect((_$p) => _$setProp(_el$213, "style", {
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", {
8341
8330
  fg: theme().textMuted
8342
8331
  }, _$p));
8343
- return _el$213;
8332
+ return _el$215;
8344
8333
  })()];
8345
8334
  })(), null);
8346
- _$insert(_el$136, (() => {
8347
- var _c$16 = _$memo(() => !!goal().config.artifactDir);
8348
- return () => _c$16() && [(() => {
8349
- var _el$215 = _$createElement("span"), _el$216 = _$createTextNode(`
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(`
8350
8339
  \uD83D\uDCC1 `);
8351
- _$insertNode(_el$215, _el$216);
8352
- _$effect((_$p) => _$setProp(_el$215, "style", {
8340
+ _$insertNode(_el$217, _el$218);
8341
+ _$effect((_$p) => _$setProp(_el$217, "style", {
8353
8342
  fg: theme().accent
8354
8343
  }, _$p));
8355
- return _el$215;
8344
+ return _el$217;
8356
8345
  })(), (() => {
8357
- var _el$218 = _$createElement("span");
8358
- _$insertNode(_el$218, _$createTextNode(`Artifacts: `));
8359
- _$effect((_$p) => _$setProp(_el$218, "style", {
8346
+ var _el$220 = _$createElement("span");
8347
+ _$insertNode(_el$220, _$createTextNode(`Artifacts: `));
8348
+ _$effect((_$p) => _$setProp(_el$220, "style", {
8360
8349
  fg: theme().accent,
8361
8350
  bold: true
8362
8351
  }, _$p));
8363
- return _el$218;
8352
+ return _el$220;
8364
8353
  })(), (() => {
8365
- var _el$220 = _$createElement("span");
8366
- _$insert(_el$220, () => String(goal().config.artifactDir).replace(String(props.directory), "."));
8367
- _$effect((_$p) => _$setProp(_el$220, "style", {
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", {
8368
8357
  fg: theme().textMuted
8369
8358
  }, _$p));
8370
- return _el$220;
8359
+ return _el$222;
8371
8360
  })()];
8372
8361
  })(), null);
8373
- _$insert(_el$136, (() => {
8374
- var _c$17 = _$memo(() => !!goal().workerTopology);
8375
- return () => _c$17() && [(() => {
8376
- var _el$221 = _$createElement("span"), _el$222 = _$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(`
8377
8366
  \uD83C\uDF3F Worker: `);
8378
- _$insertNode(_el$221, _el$222);
8379
- _$effect((_$p) => _$setProp(_el$221, "style", {
8367
+ _$insertNode(_el$223, _el$224);
8368
+ _$effect((_$p) => _$setProp(_el$223, "style", {
8380
8369
  fg: theme().textMuted
8381
8370
  }, _$p));
8382
- return _el$221;
8371
+ return _el$223;
8383
8372
  })(), (() => {
8384
- var _el$224 = _$createElement("span");
8385
- _$insert(_el$224, (() => {
8386
- var _c$26 = _$memo(() => goal().workerTopology === "v2-native-child");
8387
- return () => _c$26() ? "native child" : goal().workerTopology === "v2-root-fallback" ? "root fallback" : "v1 child";
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";
8388
8377
  })());
8389
- _$effect((_$p) => _$setProp(_el$224, "style", {
8378
+ _$effect((_$p) => _$setProp(_el$226, "style", {
8390
8379
  fg: theme().text
8391
8380
  }, _$p));
8392
- return _el$224;
8381
+ return _el$226;
8393
8382
  })(), _$memo(() => _$memo(() => !!goal().nativeParentID)() ? (() => {
8394
- var _el$225 = _$createElement("span"), _el$226 = _$createTextNode(` of `), _el$227 = _$createTextNode(`\u2026`);
8395
- _$insertNode(_el$225, _el$226);
8396
- _$insertNode(_el$225, _el$227);
8397
- _$insert(_el$225, () => goal().nativeParentID.slice(0, 12), _el$227);
8398
- _$effect((_$p) => _$setProp(_el$225, "style", {
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", {
8399
8388
  fg: theme().textMuted
8400
8389
  }, _$p));
8401
- return _el$225;
8390
+ return _el$227;
8402
8391
  })() : null)];
8403
8392
  })(), null);
8404
- _$insert(_el$136, (() => {
8405
- var _c$18 = _$memo(() => goal().interactive === true);
8406
- return () => _c$18() && [(() => {
8407
- var _el$228 = _$createElement("span"), _el$229 = _$createTextNode(`
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(`
8408
8397
  \u270B Manual: `);
8409
- _$insertNode(_el$228, _el$229);
8410
- _$effect((_$p) => _$setProp(_el$228, "style", {
8398
+ _$insertNode(_el$230, _el$231);
8399
+ _$effect((_$p) => _$setProp(_el$230, "style", {
8411
8400
  fg: theme().accent,
8412
8401
  bold: true
8413
8402
  }, _$p));
8414
- return _el$228;
8403
+ return _el$230;
8415
8404
  })(), (() => {
8416
- var _el$231 = _$createElement("span");
8417
- _$insertNode(_el$231, _$createTextNode(`engine never starts turns \u2014 steer with :send/nudge (:interactive to re-enable auto)`));
8418
- _$effect((_$p) => _$setProp(_el$231, "style", {
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", {
8419
8408
  fg: theme().textMuted
8420
8409
  }, _$p));
8421
- return _el$231;
8410
+ return _el$233;
8422
8411
  })()];
8423
8412
  })(), null);
8424
- _$insert(_el$136, (() => {
8425
- var _c$19 = _$memo(() => !!goal().config.model);
8426
- return () => _c$19() && [(() => {
8427
- var _el$233 = _$createElement("span"), _el$234 = _$createTextNode(`
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(`
8428
8417
  \uD83E\uDDE0 Model: `);
8429
- _$insertNode(_el$233, _el$234);
8430
- _$effect((_$p) => _$setProp(_el$233, "style", {
8418
+ _$insertNode(_el$235, _el$236);
8419
+ _$effect((_$p) => _$setProp(_el$235, "style", {
8431
8420
  fg: theme().info,
8432
8421
  bold: true
8433
8422
  }, _$p));
8434
- return _el$233;
8423
+ return _el$235;
8435
8424
  })(), (() => {
8436
- var _el$236 = _$createElement("span");
8437
- _$insert(_el$236, () => goal().config.model);
8438
- _$effect((_$p) => _$setProp(_el$236, "style", {
8425
+ var _el$238 = _$createElement("span");
8426
+ _$insert(_el$238, () => goal().config.model);
8427
+ _$effect((_$p) => _$setProp(_el$238, "style", {
8439
8428
  fg: theme().text
8440
8429
  }, _$p));
8441
- return _el$236;
8430
+ return _el$238;
8442
8431
  })(), _$memo(() => _$memo(() => !!goal().modelSwitch?.pending)() ? (() => {
8443
- var _el$237 = _$createElement("span"), _el$238 = _$createTextNode(` \u2192 pending `), _el$239 = _$createTextNode(` (applies next turn)`);
8444
- _$insertNode(_el$237, _el$238);
8445
- _$insertNode(_el$237, _el$239);
8446
- _$insert(_el$237, () => goal().modelSwitch?.pending?.model, _el$239);
8447
- _$effect((_$p) => _$setProp(_el$237, "style", {
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", {
8448
8466
  fg: theme().warning
8449
8467
  }, _$p));
8450
- return _el$237;
8468
+ return _el$246;
8451
8469
  })() : null)];
8452
8470
  })(), null);
8453
- _$insert(_el$136, (() => {
8454
- var _c$20 = _$memo(() => (goal().config.checks?.length ?? 0) > 0);
8455
- return () => _c$20() ? [(() => {
8456
- var _el$240 = _$createElement("span"), _el$241 = _$createTextNode(`
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(`
8457
8475
  \u25A3 `);
8458
- _$insertNode(_el$240, _el$241);
8459
- _$effect((_$p) => _$setProp(_el$240, "style", {
8476
+ _$insertNode(_el$249, _el$250);
8477
+ _$effect((_$p) => _$setProp(_el$249, "style", {
8460
8478
  fg: theme().warning
8461
8479
  }, _$p));
8462
- return _el$240;
8480
+ return _el$249;
8463
8481
  })(), (() => {
8464
- var _el$243 = _$createElement("span");
8465
- _$insertNode(_el$243, _$createTextNode(`Checks: `));
8466
- _$effect((_$p) => _$setProp(_el$243, "style", {
8482
+ var _el$252 = _$createElement("span");
8483
+ _$insertNode(_el$252, _$createTextNode(`Checks: `));
8484
+ _$effect((_$p) => _$setProp(_el$252, "style", {
8467
8485
  fg: theme().warning,
8468
8486
  bold: true
8469
8487
  }, _$p));
8470
- return _el$243;
8488
+ return _el$252;
8471
8489
  })(), (() => {
8472
- var _el$245 = _$createElement("span");
8473
- _$insert(_el$245, () => goal().config.checks.join(", ").slice(0, 100));
8474
- _$effect((_$p) => _$setProp(_el$245, "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", {
8475
8493
  fg: theme().textMuted
8476
8494
  }, _$p));
8477
- return _el$245;
8495
+ return _el$254;
8478
8496
  })()] : null;
8479
8497
  })(), null);
8480
- _$insert(_el$136, (() => {
8481
- var _c$21 = _$memo(() => rt()?.evaluatorRejectionCount > 0);
8482
- return () => _c$21() && [(() => {
8483
- var _el$246 = _$createElement("span"), _el$247 = _$createTextNode(`
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(`
8484
8502
  \u26A0 rejections: `);
8485
- _$insertNode(_el$246, _el$247);
8486
- _$effect((_$p) => _$setProp(_el$246, "style", {
8503
+ _$insertNode(_el$255, _el$256);
8504
+ _$effect((_$p) => _$setProp(_el$255, "style", {
8487
8505
  fg: theme().warning
8488
8506
  }, _$p));
8489
- return _el$246;
8507
+ return _el$255;
8490
8508
  })(), (() => {
8491
- var _el$249 = _$createElement("span"), _el$250 = _$createTextNode(` \u2014 `);
8492
- _$insertNode(_el$249, _el$250);
8493
- _$insert(_el$249, () => String(rt().evaluatorRejectionCount), _el$250);
8494
- _$insert(_el$249, () => String(rt().lastRejectionDetails || "").slice(0, 80), null);
8495
- _$effect((_$p) => _$setProp(_el$249, "style", {
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", {
8496
8514
  fg: theme().warning
8497
8515
  }, _$p));
8498
- return _el$249;
8516
+ return _el$258;
8499
8517
  })()];
8500
8518
  })(), null);
8501
- _$insert(_el$136, (() => {
8502
- var _c$22 = _$memo(() => rt()?.unknownStatusCount > 0);
8503
- return () => _c$22() && [(() => {
8504
- var _el$251 = _$createElement("span"), _el$252 = _$createTextNode(`
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(`
8505
8523
  \u26A0\uFE0F unreachable: `);
8506
- _$insertNode(_el$251, _el$252);
8507
- _$effect((_$p) => _$setProp(_el$251, "style", {
8524
+ _$insertNode(_el$260, _el$261);
8525
+ _$effect((_$p) => _$setProp(_el$260, "style", {
8508
8526
  fg: theme().error
8509
8527
  }, _$p));
8510
- return _el$251;
8528
+ return _el$260;
8511
8529
  })(), (() => {
8512
- var _el$254 = _$createElement("span"), _el$255 = _$createTextNode(`/3`);
8513
- _$insertNode(_el$254, _el$255);
8514
- _$insert(_el$254, () => String(rt().unknownStatusCount), _el$255);
8515
- _$effect((_$p) => _$setProp(_el$254, "style", {
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", {
8516
8534
  fg: theme().error
8517
8535
  }, _$p));
8518
- return _el$254;
8536
+ return _el$263;
8519
8537
  })(), (() => {
8520
- var _el$256 = _$createElement("span");
8521
- _$insertNode(_el$256, _$createTextNode(` \u2014 nudge to recover`));
8522
- _$effect((_$p) => _$setProp(_el$256, "style", {
8538
+ var _el$265 = _$createElement("span");
8539
+ _$insertNode(_el$265, _$createTextNode(` \u2014 nudge to recover`));
8540
+ _$effect((_$p) => _$setProp(_el$265, "style", {
8523
8541
  fg: theme().textMuted
8524
8542
  }, _$p));
8525
- return _el$256;
8543
+ return _el$265;
8526
8544
  })()];
8527
8545
  })(), null);
8528
- _$insert(_el$136, (() => {
8529
- var _c$23 = _$memo(() => !!rt()?.retryAfter);
8530
- return () => _c$23() && [(() => {
8531
- var _el$258 = _$createElement("span"), _el$259 = _$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(`
8532
8550
  \u21BB retry in: `);
8533
- _$insertNode(_el$258, _el$259);
8534
- _$effect((_$p) => _$setProp(_el$258, "style", {
8551
+ _$insertNode(_el$267, _el$268);
8552
+ _$effect((_$p) => _$setProp(_el$267, "style", {
8535
8553
  fg: theme().accent
8536
8554
  }, _$p));
8537
- return _el$258;
8555
+ return _el$267;
8538
8556
  })(), (() => {
8539
- var _el$261 = _$createElement("span");
8540
- _$insert(_el$261, () => countdownLabel(rt().retryAfter, clock()));
8541
- _$effect((_$p) => _$setProp(_el$261, "style", {
8557
+ var _el$270 = _$createElement("span");
8558
+ _$insert(_el$270, () => countdownLabel(rt().retryAfter, clock()));
8559
+ _$effect((_$p) => _$setProp(_el$270, "style", {
8542
8560
  fg: theme().accent
8543
8561
  }, _$p));
8544
- return _el$261;
8562
+ return _el$270;
8545
8563
  })()];
8546
8564
  })(), null);
8547
- _$insert(_el$136, (() => {
8548
- var _c$24 = _$memo(() => !!rt()?.nextRunAt);
8549
- return () => _c$24() && [(() => {
8550
- var _el$262 = _$createElement("span"), _el$263 = _$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(`
8551
8569
  \u23F0 next run: `);
8552
- _$insertNode(_el$262, _el$263);
8553
- _$effect((_$p) => _$setProp(_el$262, "style", {
8570
+ _$insertNode(_el$271, _el$272);
8571
+ _$effect((_$p) => _$setProp(_el$271, "style", {
8554
8572
  fg: theme().accent
8555
8573
  }, _$p));
8556
- return _el$262;
8574
+ return _el$271;
8557
8575
  })(), (() => {
8558
- var _el$265 = _$createElement("span");
8559
- _$insert(_el$265, () => countdownLabel(rt().nextRunAt, clock()));
8560
- _$effect((_$p) => _$setProp(_el$265, "style", {
8576
+ var _el$274 = _$createElement("span");
8577
+ _$insert(_el$274, () => countdownLabel(rt().nextRunAt, clock()));
8578
+ _$effect((_$p) => _$setProp(_el$274, "style", {
8561
8579
  fg: theme().accent
8562
8580
  }, _$p));
8563
- return _el$265;
8581
+ return _el$274;
8564
8582
  })(), (() => {
8565
- var _el$266 = _$createElement("span"), _el$267 = _$createTextNode(` (`), _el$268 = _$createTextNode(` runs)`);
8566
- _$insertNode(_el$266, _el$267);
8567
- _$insertNode(_el$266, _el$268);
8568
- _$insert(_el$266, () => String(rt().scheduleRunCount || 0), _el$268);
8569
- _$effect((_$p) => _$setProp(_el$266, "style", {
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", {
8570
8588
  fg: theme().textMuted
8571
8589
  }, _$p));
8572
- return _el$266;
8590
+ return _el$275;
8573
8591
  })()];
8574
8592
  })(), null);
8575
- _$insert(_el$136, (() => {
8576
- var _c$25 = _$memo(() => !!rt()?.lastError);
8577
- return () => _c$25() && [(() => {
8578
- var _el$269 = _$createElement("span"), _el$270 = _$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(`
8579
8597
  \u26A0 `);
8580
- _$insertNode(_el$269, _el$270);
8581
- _$effect((_$p) => _$setProp(_el$269, "style", {
8598
+ _$insertNode(_el$278, _el$279);
8599
+ _$effect((_$p) => _$setProp(_el$278, "style", {
8582
8600
  fg: theme().error
8583
8601
  }, _$p));
8584
- return _el$269;
8602
+ return _el$278;
8585
8603
  })(), (() => {
8586
- var _el$272 = _$createElement("span");
8587
- _$insertNode(_el$272, _$createTextNode(`Error: `));
8588
- _$effect((_$p) => _$setProp(_el$272, "style", {
8604
+ var _el$281 = _$createElement("span");
8605
+ _$insertNode(_el$281, _$createTextNode(`Error: `));
8606
+ _$effect((_$p) => _$setProp(_el$281, "style", {
8589
8607
  fg: theme().error,
8590
8608
  bold: true
8591
8609
  }, _$p));
8592
- return _el$272;
8610
+ return _el$281;
8593
8611
  })(), (() => {
8594
- var _el$274 = _$createElement("span");
8595
- _$insert(_el$274, () => rt().lastError.slice(0, 120));
8596
- _$effect((_$p) => _$setProp(_el$274, "style", {
8612
+ var _el$283 = _$createElement("span");
8613
+ _$insert(_el$283, () => rt().lastError.slice(0, 120));
8614
+ _$effect((_$p) => _$setProp(_el$283, "style", {
8597
8615
  fg: theme().error
8598
8616
  }, _$p));
8599
- return _el$274;
8617
+ return _el$283;
8600
8618
  })()];
8601
8619
  })(), null);
8602
8620
  _$effect((_p$) => {
@@ -8615,13 +8633,13 @@ function LoopDashboard(props) {
8615
8633
  }, _v$48 = {
8616
8634
  fg: theme().text
8617
8635
  };
8618
- _v$42 !== _p$.e && (_p$.e = _$setProp(_el$135, "borderColor", _v$42, _p$.e));
8619
- _v$43 !== _p$.t && (_p$.t = _$setProp(_el$137, "style", _v$43, _p$.t));
8620
- _v$44 !== _p$.a && (_p$.a = _$setProp(_el$139, "style", _v$44, _p$.a));
8621
- _v$45 !== _p$.o && (_p$.o = _$setProp(_el$141, "style", _v$45, _p$.o));
8622
- _v$46 !== _p$.i && (_p$.i = _$setProp(_el$144, "style", _v$46, _p$.i));
8623
- _v$47 !== _p$.n && (_p$.n = _$setProp(_el$146, "style", _v$47, _p$.n));
8624
- _v$48 !== _p$.s && (_p$.s = _$setProp(_el$148, "style", _v$48, _p$.s));
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));
8625
8643
  return _p$;
8626
8644
  }, {
8627
8645
  e: undefined,
@@ -8632,7 +8650,7 @@ function LoopDashboard(props) {
8632
8650
  n: undefined,
8633
8651
  s: undefined
8634
8652
  });
8635
- return _el$135;
8653
+ return _el$137;
8636
8654
  })();
8637
8655
  }
8638
8656
  })];
@@ -8649,62 +8667,62 @@ function LoopDashboard(props) {
8649
8667
  },
8650
8668
  get fallback() {
8651
8669
  return (() => {
8652
- var _el$275 = _$createElement("box"), _el$276 = _$createElement("text"), _el$277 = _$createElement("span"), _el$278 = _$createTextNode(`No live command sessions`), _el$279 = _$createTextNode(`. `), _el$280 = _$createElement("span"), _el$282 = _$createElement("span"), _el$283 = _$createTextNode(` to start one`), _el$284 = _$createElement("text"), _el$285 = _$createElement("span"), _el$287 = _$createElement("span"), _el$289 = _$createElement("span"), _el$291 = _$createElement("span"), _el$293 = _$createElement("span"), _el$295 = _$createElement("span"), _el$297 = _$createElement("span");
8653
- _$insertNode(_el$275, _el$276);
8654
- _$insertNode(_el$275, _el$284);
8655
- _$setProp(_el$275, "flexDirection", "column");
8656
- _$setProp(_el$275, "gap", 1);
8657
- _$setProp(_el$275, "padding", 1);
8658
- _$insertNode(_el$276, _el$277);
8659
- _$insertNode(_el$276, _el$280);
8660
- _$insertNode(_el$276, _el$282);
8661
- _$insertNode(_el$277, _el$278);
8662
- _$insertNode(_el$277, _el$279);
8663
- _$insert(_el$277, (() => {
8664
- var _c$27 = _$memo(() => hiddenFinishedCommands() > 0);
8665
- return () => _c$27() ? ` \u2014 ${hiddenFinishedCommands()} finished hidden` : "";
8666
- })(), _el$279);
8667
- _$insertNode(_el$280, _$createTextNode(`:new &lt;command&gt;`));
8668
- _$insertNode(_el$282, _el$283);
8669
- _$insert(_el$282, () => hiddenFinishedCommands() > 0 ? ", or " : "; ", null);
8670
- _$insert(_el$276, (() => {
8671
- var _c$28 = _$memo(() => hiddenFinishedCommands() > 0);
8672
- return () => _c$28() && (() => {
8673
- var _el$299 = _$createElement("span"), _el$300 = _$createElement("span"), _el$302 = _$createElement("span");
8674
- _$insertNode(_el$299, _el$300);
8675
- _$insertNode(_el$299, _el$302);
8676
- _$insertNode(_el$300, _$createTextNode(`c`));
8677
- _$insertNode(_el$302, _$createTextNode(` to show finished.`));
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.`));
8678
8696
  _$effect((_p$) => {
8679
8697
  var _v$59 = {
8680
8698
  fg: theme().warning
8681
8699
  }, _v$60 = {
8682
8700
  fg: theme().textMuted
8683
8701
  };
8684
- _v$59 !== _p$.e && (_p$.e = _$setProp(_el$300, "style", _v$59, _p$.e));
8685
- _v$60 !== _p$.t && (_p$.t = _$setProp(_el$302, "style", _v$60, _p$.t));
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));
8686
8704
  return _p$;
8687
8705
  }, {
8688
8706
  e: undefined,
8689
8707
  t: undefined
8690
8708
  });
8691
- return _el$299;
8709
+ return _el$308;
8692
8710
  })();
8693
8711
  })(), null);
8694
- _$insertNode(_el$284, _el$285);
8695
- _$insertNode(_el$284, _el$287);
8696
- _$insertNode(_el$284, _el$289);
8697
- _$insertNode(_el$284, _el$291);
8698
- _$insertNode(_el$284, _el$293);
8699
- _$insertNode(_el$284, _el$295);
8700
- _$insertNode(_el$284, _el$297);
8701
- _$insertNode(_el$285, _$createTextNode(`Tip: `));
8702
- _$insertNode(_el$287, _$createTextNode(`o`));
8703
- _$insertNode(_el$289, _$createTextNode(` fullscreen \xB7 `));
8704
- _$insertNode(_el$291, _$createTextNode(`X kill \xB7 R restart \xB7 x remove-done`));
8705
- _$insertNode(_el$293, _$createTextNode(` \xB7 `));
8706
- _$insertNode(_el$295, _$createTextNode(`:interrupt :terminate :remove`));
8707
- _$insertNode(_el$297, _$createTextNode(` manage \xB7 text + Enter writes stdin.`));
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.`));
8708
8726
  _$effect((_p$) => {
8709
8727
  var _v$49 = {
8710
8728
  fg: theme().textMuted
@@ -8727,16 +8745,16 @@ function LoopDashboard(props) {
8727
8745
  }, _v$58 = {
8728
8746
  fg: theme().textMuted
8729
8747
  };
8730
- _v$49 !== _p$.e && (_p$.e = _$setProp(_el$277, "style", _v$49, _p$.e));
8731
- _v$50 !== _p$.t && (_p$.t = _$setProp(_el$280, "style", _v$50, _p$.t));
8732
- _v$51 !== _p$.a && (_p$.a = _$setProp(_el$282, "style", _v$51, _p$.a));
8733
- _v$52 !== _p$.o && (_p$.o = _$setProp(_el$285, "style", _v$52, _p$.o));
8734
- _v$53 !== _p$.i && (_p$.i = _$setProp(_el$287, "style", _v$53, _p$.i));
8735
- _v$54 !== _p$.n && (_p$.n = _$setProp(_el$289, "style", _v$54, _p$.n));
8736
- _v$55 !== _p$.s && (_p$.s = _$setProp(_el$291, "style", _v$55, _p$.s));
8737
- _v$56 !== _p$.h && (_p$.h = _$setProp(_el$293, "style", _v$56, _p$.h));
8738
- _v$57 !== _p$.r && (_p$.r = _$setProp(_el$295, "style", _v$57, _p$.r));
8739
- _v$58 !== _p$.d && (_p$.d = _$setProp(_el$297, "style", _v$58, _p$.d));
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));
8740
8758
  return _p$;
8741
8759
  }, {
8742
8760
  e: undefined,
@@ -8750,7 +8768,7 @@ function LoopDashboard(props) {
8750
8768
  r: undefined,
8751
8769
  d: undefined
8752
8770
  });
8753
- return _el$275;
8771
+ return _el$284;
8754
8772
  })();
8755
8773
  },
8756
8774
  get children() {
@@ -8762,77 +8780,77 @@ function LoopDashboard(props) {
8762
8780
  children: (cmd, i) => {
8763
8781
  const isActive = () => i() === cmdSelected();
8764
8782
  return (() => {
8765
- var _el$304 = _$createElement("box"), _el$305 = _$createElement("text"), _el$306 = _$createElement("span"), _el$307 = _$createElement("span"), _el$309 = _$createElement("span"), _el$311 = _$createElement("span"), _el$312 = _$createElement("span"), _el$314 = _$createElement("span"), _el$315 = _$createElement("span"), _el$316 = _$createTextNode(` \u2502 `);
8766
- _$insertNode(_el$304, _el$305);
8767
- _$setProp(_el$304, "flexDirection", "row");
8768
- _$setProp(_el$304, "paddingLeft", 1);
8769
- _$setProp(_el$304, "paddingRight", 1);
8770
- _$insertNode(_el$305, _el$306);
8771
- _$insertNode(_el$305, _el$307);
8772
- _$insertNode(_el$305, _el$309);
8773
- _$insertNode(_el$305, _el$311);
8774
- _$insertNode(_el$305, _el$312);
8775
- _$insertNode(_el$305, _el$314);
8776
- _$insertNode(_el$305, _el$315);
8777
- _$setProp(_el$305, "wrapMode", "none");
8778
- _$setProp(_el$305, "truncate", true);
8779
- _$insert(_el$306, (() => {
8780
- var _c$29 = _$memo(() => !!isActive());
8781
- return () => _c$29() ? `\u25B6 ${commandStatusIcon(cmd.status)} ${cmd.title}` : ` ${commandStatusIcon(cmd.status)} ${cmd.title}`;
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}`;
8782
8800
  })());
8783
- _$insertNode(_el$307, _$createTextNode(` \u2502 `));
8784
- _$insertNode(_el$309, _$createTextNode(`Cmd `));
8785
- _$insert(_el$311, () => commandStatusLabel(cmd.status).short);
8786
- _$insertNode(_el$312, _$createTextNode(` \u2502 `));
8787
- _$insert(_el$314, () => cmd.command);
8788
- _$insert(_el$305, (() => {
8789
- var _c$30 = _$memo(() => cmd.args.length > 0);
8790
- return () => _c$30() && (() => {
8791
- var _el$317 = _$createElement("span"), _el$318 = _$createTextNode(` `);
8792
- _$insertNode(_el$317, _el$318);
8793
- _$insert(_el$317, () => cmd.args.join(" ").slice(0, 40), null);
8794
- _$effect((_$p) => _$setProp(_el$317, "style", {
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", {
8795
8813
  fg: theme().textMuted
8796
8814
  }, _$p));
8797
- return _el$317;
8815
+ return _el$326;
8798
8816
  })();
8799
- })(), _el$315);
8800
- _$insert(_el$305, (() => {
8801
- var _c$31 = _$memo(() => cmd.exitCode !== undefined);
8802
- return () => _c$31() && (() => {
8803
- var _el$319 = _$createElement("span"), _el$320 = _$createTextNode(` \u2502 exit `);
8804
- _$insertNode(_el$319, _el$320);
8805
- _$insert(_el$319, () => cmd.exitCode, null);
8806
- _$effect((_$p) => _$setProp(_el$319, "style", {
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", {
8807
8825
  fg: cmd.exitCode === 0 ? theme().success : theme().error
8808
8826
  }, _$p));
8809
- return _el$319;
8827
+ return _el$328;
8810
8828
  })();
8811
- })(), _el$315);
8812
- _$insert(_el$305, (() => {
8813
- var _c$32 = _$memo(() => !!cmd.signal);
8814
- return () => _c$32() && (() => {
8815
- var _el$321 = _$createElement("span"), _el$322 = _$createTextNode(` \u2502 `);
8816
- _$insertNode(_el$321, _el$322);
8817
- _$insert(_el$321, () => cmd.signal, null);
8818
- _$effect((_$p) => _$setProp(_el$321, "style", {
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", {
8819
8837
  fg: theme().warning
8820
8838
  }, _$p));
8821
- return _el$321;
8839
+ return _el$330;
8822
8840
  })();
8823
- })(), _el$315);
8824
- _$insertNode(_el$315, _el$316);
8825
- _$insert(_el$315, () => ageLabel(cmd.updatedAt, clock()), null);
8826
- _$insert(_el$305, (() => {
8827
- var _c$33 = _$memo(() => !!cmd.truncated);
8828
- return () => _c$33() && (() => {
8829
- var _el$323 = _$createElement("span");
8830
- _$insertNode(_el$323, _$createTextNode(` \u2502 \u26A0 truncated`));
8831
- _$effect((_$p) => _$setProp(_el$323, "style", {
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", {
8832
8850
  fg: theme().warning,
8833
8851
  bold: true
8834
8852
  }, _$p));
8835
- return _el$323;
8853
+ return _el$332;
8836
8854
  })();
8837
8855
  })(), null);
8838
8856
  _$effect((_p$) => {
@@ -8854,14 +8872,14 @@ function LoopDashboard(props) {
8854
8872
  }, _v$68 = {
8855
8873
  fg: theme().textMuted
8856
8874
  };
8857
- _v$61 !== _p$.e && (_p$.e = _$setProp(_el$304, "backgroundColor", _v$61, _p$.e));
8858
- _v$62 !== _p$.t && (_p$.t = _$setProp(_el$306, "style", _v$62, _p$.t));
8859
- _v$63 !== _p$.a && (_p$.a = _$setProp(_el$307, "style", _v$63, _p$.a));
8860
- _v$64 !== _p$.o && (_p$.o = _$setProp(_el$309, "style", _v$64, _p$.o));
8861
- _v$65 !== _p$.i && (_p$.i = _$setProp(_el$311, "style", _v$65, _p$.i));
8862
- _v$66 !== _p$.n && (_p$.n = _$setProp(_el$312, "style", _v$66, _p$.n));
8863
- _v$67 !== _p$.s && (_p$.s = _$setProp(_el$314, "style", _v$67, _p$.s));
8864
- _v$68 !== _p$.h && (_p$.h = _$setProp(_el$315, "style", _v$68, _p$.h));
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));
8865
8883
  return _p$;
8866
8884
  }, {
8867
8885
  e: undefined,
@@ -8873,7 +8891,7 @@ function LoopDashboard(props) {
8873
8891
  s: undefined,
8874
8892
  h: undefined
8875
8893
  });
8876
- return _el$304;
8894
+ return _el$313;
8877
8895
  })();
8878
8896
  }
8879
8897
  }));
@@ -8885,115 +8903,115 @@ function LoopDashboard(props) {
8885
8903
  return selectedCommand();
8886
8904
  },
8887
8905
  children: (cmd) => (() => {
8888
- var _el$325 = _$createElement("box"), _el$326 = _$createElement("text"), _el$327 = _$createElement("span"), _el$328 = _$createTextNode(` `), _el$329 = _$createElement("span"), _el$331 = _$createElement("span"), _el$332 = _$createTextNode(` \u2014 `), _el$333 = _$createTextNode(`
8889
- `), _el$334 = _$createElement("span"), _el$336 = _$createElement("span"), _el$337 = _$createTextNode(`
8890
- `), _el$338 = _$createElement("span"), _el$340 = _$createElement("span"), _el$342 = _$createElement("span"), _el$343 = _$createTextNode(`
8891
- `), _el$344 = _$createElement("span"), _el$346 = _$createElement("span"), _el$348 = _$createElement("span"), _el$349 = _$createTextNode(` bytes`), _el$350 = _$createElement("span"), _el$351 = _$createTextNode(` \u2502 updated `), _el$352 = _$createTextNode(`
8892
- `), _el$353 = _$createElement("span");
8893
- _$insertNode(_el$325, _el$326);
8894
- _$setProp(_el$325, "flexDirection", "column");
8895
- _$setProp(_el$325, "border", true);
8896
- _$setProp(_el$325, "padding", 1);
8897
- _$setProp(_el$325, "flexShrink", 0);
8898
- _$setProp(_el$325, "maxHeight", 8);
8899
- _$insertNode(_el$326, _el$327);
8900
- _$insertNode(_el$326, _el$329);
8901
- _$insertNode(_el$326, _el$331);
8902
- _$insertNode(_el$326, _el$333);
8903
- _$insertNode(_el$326, _el$334);
8904
- _$insertNode(_el$326, _el$336);
8905
- _$insertNode(_el$326, _el$337);
8906
- _$insertNode(_el$326, _el$338);
8907
- _$insertNode(_el$326, _el$340);
8908
- _$insertNode(_el$326, _el$342);
8909
- _$insertNode(_el$326, _el$343);
8910
- _$insertNode(_el$326, _el$344);
8911
- _$insertNode(_el$326, _el$346);
8912
- _$insertNode(_el$326, _el$348);
8913
- _$insertNode(_el$326, _el$350);
8914
- _$insertNode(_el$326, _el$352);
8915
- _$insertNode(_el$326, _el$353);
8916
- _$insertNode(_el$327, _el$328);
8917
- _$insert(_el$327, () => commandStatusIcon(cmd().status), _el$328);
8918
- _$insert(_el$327, () => cmd().title, null);
8919
- _$insertNode(_el$329, _$createTextNode(` Cmd `));
8920
- _$insertNode(_el$331, _el$332);
8921
- _$insert(_el$331, () => commandStatusLabel(cmd().status).short, _el$332);
8922
- _$insert(_el$331, () => commandStatusLabel(cmd().status).hint, null);
8923
- _$insertNode(_el$334, _$createTextNode(`\u2B22 Spawn: `));
8924
- _$insert(_el$336, () => cmd().command);
8925
- _$insert(_el$326, (() => {
8926
- var _c$34 = _$memo(() => cmd().args.length > 0);
8927
- return () => _c$34() && (() => {
8928
- var _el$355 = _$createElement("span"), _el$356 = _$createTextNode(` `);
8929
- _$insertNode(_el$355, _el$356);
8930
- _$insert(_el$355, () => cmd().args.join(" "), null);
8931
- _$effect((_$p) => _$setProp(_el$355, "style", {
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", {
8932
8950
  fg: theme().text
8933
8951
  }, _$p));
8934
- return _el$355;
8952
+ return _el$364;
8935
8953
  })();
8936
- })(), _el$337);
8937
- _$insertNode(_el$338, _$createTextNode(`\uD83D\uDCC1 `));
8938
- _$insertNode(_el$340, _$createTextNode(`Cwd: `));
8939
- _$insert(_el$342, () => cmd().cwd.replace(String(props.directory), "."));
8940
- _$insert(_el$326, (() => {
8941
- var _c$35 = _$memo(() => !!cmd().goalID);
8942
- return () => _c$35() && [(() => {
8943
- var _el$357 = _$createElement("span");
8944
- _$insertNode(_el$357, _$createTextNode(` \u2502 \uD83D\uDD17 linked goal `));
8945
- _$effect((_$p) => _$setProp(_el$357, "style", {
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", {
8946
8964
  fg: theme().textMuted
8947
8965
  }, _$p));
8948
- return _el$357;
8966
+ return _el$366;
8949
8967
  })(), (() => {
8950
- var _el$359 = _$createElement("span");
8951
- _$insert(_el$359, () => cmd().goalID.slice(0, 8));
8952
- _$effect((_$p) => _$setProp(_el$359, "style", {
8968
+ var _el$368 = _$createElement("span");
8969
+ _$insert(_el$368, () => cmd().goalID.slice(0, 8));
8970
+ _$effect((_$p) => _$setProp(_el$368, "style", {
8953
8971
  fg: theme().text
8954
8972
  }, _$p));
8955
- return _el$359;
8973
+ return _el$368;
8956
8974
  })()];
8957
- })(), _el$343);
8958
- _$insertNode(_el$344, _$createTextNode(`\uD83D\uDCBE `));
8959
- _$insertNode(_el$346, _$createTextNode(`Output: `));
8960
- _$insertNode(_el$348, _el$349);
8961
- _$insert(_el$348, () => cmd().outputBytes, _el$349);
8962
- _$insert(_el$326, (() => {
8963
- var _c$36 = _$memo(() => !!cmd().truncated);
8964
- return () => _c$36() && (() => {
8965
- var _el$360 = _$createElement("span");
8966
- _$insertNode(_el$360, _$createTextNode(` \xB7 \u26A0 truncated`));
8967
- _$effect((_$p) => _$setProp(_el$360, "style", {
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", {
8968
8986
  fg: theme().warning,
8969
8987
  bold: true
8970
8988
  }, _$p));
8971
- return _el$360;
8989
+ return _el$369;
8972
8990
  })();
8973
- })(), _el$350);
8974
- _$insertNode(_el$350, _el$351);
8975
- _$insert(_el$350, () => ageLabel(cmd().updatedAt, clock()), null);
8976
- _$insert(_el$326, (() => {
8977
- var _c$37 = _$memo(() => !!cmd().lastError);
8978
- return () => _c$37() && [(() => {
8979
- var _el$362 = _$createElement("span"), _el$363 = _$createTextNode(`
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(`
8980
8998
  \u26A0 Error: `);
8981
- _$insertNode(_el$362, _el$363);
8982
- _$effect((_$p) => _$setProp(_el$362, "style", {
8999
+ _$insertNode(_el$371, _el$372);
9000
+ _$effect((_$p) => _$setProp(_el$371, "style", {
8983
9001
  fg: theme().error,
8984
9002
  bold: true
8985
9003
  }, _$p));
8986
- return _el$362;
9004
+ return _el$371;
8987
9005
  })(), (() => {
8988
- var _el$365 = _$createElement("span");
8989
- _$insert(_el$365, () => cmd().lastError.slice(0, 120));
8990
- _$effect((_$p) => _$setProp(_el$365, "style", {
9006
+ var _el$374 = _$createElement("span");
9007
+ _$insert(_el$374, () => cmd().lastError.slice(0, 120));
9008
+ _$effect((_$p) => _$setProp(_el$374, "style", {
8991
9009
  fg: theme().error
8992
9010
  }, _$p));
8993
- return _el$365;
9011
+ return _el$374;
8994
9012
  })()];
8995
- })(), _el$352);
8996
- _$insertNode(_el$353, _$createTextNode(`o fullscreen \xB7 X kill \xB7 R restart \xB7 x remove-done \xB7 :interrupt :terminate :remove \xB7 text + Enter writes stdin`));
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`));
8997
9015
  _$effect((_p$) => {
8998
9016
  var _v$69 = commandBorderColor(cmd().status, theme()), _v$70 = {
8999
9017
  fg: commandStatusColor(cmd().status, theme()),
@@ -9028,20 +9046,20 @@ function LoopDashboard(props) {
9028
9046
  }, _v$82 = {
9029
9047
  fg: theme().textMuted
9030
9048
  };
9031
- _v$69 !== _p$.e && (_p$.e = _$setProp(_el$325, "borderColor", _v$69, _p$.e));
9032
- _v$70 !== _p$.t && (_p$.t = _$setProp(_el$327, "style", _v$70, _p$.t));
9033
- _v$71 !== _p$.a && (_p$.a = _$setProp(_el$329, "style", _v$71, _p$.a));
9034
- _v$72 !== _p$.o && (_p$.o = _$setProp(_el$331, "style", _v$72, _p$.o));
9035
- _v$73 !== _p$.i && (_p$.i = _$setProp(_el$334, "style", _v$73, _p$.i));
9036
- _v$74 !== _p$.n && (_p$.n = _$setProp(_el$336, "style", _v$74, _p$.n));
9037
- _v$75 !== _p$.s && (_p$.s = _$setProp(_el$338, "style", _v$75, _p$.s));
9038
- _v$76 !== _p$.h && (_p$.h = _$setProp(_el$340, "style", _v$76, _p$.h));
9039
- _v$77 !== _p$.r && (_p$.r = _$setProp(_el$342, "style", _v$77, _p$.r));
9040
- _v$78 !== _p$.d && (_p$.d = _$setProp(_el$344, "style", _v$78, _p$.d));
9041
- _v$79 !== _p$.l && (_p$.l = _$setProp(_el$346, "style", _v$79, _p$.l));
9042
- _v$80 !== _p$.u && (_p$.u = _$setProp(_el$348, "style", _v$80, _p$.u));
9043
- _v$81 !== _p$.c && (_p$.c = _$setProp(_el$350, "style", _v$81, _p$.c));
9044
- _v$82 !== _p$.w && (_p$.w = _$setProp(_el$353, "style", _v$82, _p$.w));
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));
9045
9063
  return _p$;
9046
9064
  }, {
9047
9065
  e: undefined,
@@ -9059,7 +9077,7 @@ function LoopDashboard(props) {
9059
9077
  c: undefined,
9060
9078
  w: undefined
9061
9079
  });
9062
- return _el$325;
9080
+ return _el$334;
9063
9081
  })()
9064
9082
  })];
9065
9083
  }
@@ -9087,29 +9105,29 @@ function LoopDashboard(props) {
9087
9105
  },
9088
9106
  children: (ev) => [`
9089
9107
  `, (() => {
9090
- var _el$366 = _$createElement("span");
9091
- _$insert(_el$366, () => String(ev.type));
9092
- _$effect((_$p) => _$setProp(_el$366, "style", {
9108
+ var _el$375 = _$createElement("span");
9109
+ _$insert(_el$375, () => String(ev.type));
9110
+ _$effect((_$p) => _$setProp(_el$375, "style", {
9093
9111
  fg: eventColor(String(ev.type), theme()),
9094
9112
  bold: true
9095
9113
  }, _$p));
9096
- return _el$366;
9114
+ return _el$375;
9097
9115
  })(), (() => {
9098
- var _el$367 = _$createElement("span"), _el$368 = _$createTextNode(` `);
9099
- _$insertNode(_el$367, _el$368);
9100
- _$insert(_el$367, () => ev.goalID?.slice(0, 8), null);
9101
- _$effect((_$p) => _$setProp(_el$367, "style", {
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", {
9102
9120
  fg: theme().textMuted
9103
9121
  }, _$p));
9104
- return _el$367;
9122
+ return _el$376;
9105
9123
  })(), _$memo(() => _$memo(() => !!ev.summary)() && (() => {
9106
- var _el$369 = _$createElement("span"), _el$370 = _$createTextNode(` \u2014 `);
9107
- _$insertNode(_el$369, _el$370);
9108
- _$insert(_el$369, () => String(ev.summary).slice(0, 60), null);
9109
- _$effect((_$p) => _$setProp(_el$369, "style", {
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", {
9110
9128
  fg: theme().text
9111
9129
  }, _$p));
9112
- return _el$369;
9130
+ return _el$378;
9113
9131
  })())]
9114
9132
  }), null);
9115
9133
  _$effect((_p$) => {
@@ -9148,16 +9166,12 @@ function LoopDashboard(props) {
9148
9166
  }, _el$54);
9149
9167
  _$setProp(_el$54, "flexGrow", 1);
9150
9168
  _$setProp(_el$54, "onInput", (v) => {
9151
- debugLog("onInput", JSON.stringify(v), "mode", mode());
9152
9169
  if (mode() === "insert")
9153
9170
  setCommandInput(v);
9154
9171
  else if (inputEl?.value)
9155
9172
  inputEl.value = "";
9156
9173
  });
9157
9174
  _$setProp(_el$54, "onKeyDown", (evt) => {
9158
- const name = evt.name || "";
9159
- const seq = evt.sequence || "";
9160
- debugLog("input onKeyDown", `name=${name} seq=${JSON.stringify(seq)} mode=${mode()} value=${JSON.stringify(commandInput())}`);
9161
9175
  if (mode() !== "insert") {
9162
9176
  if ((evt.name || "").length === 1)
9163
9177
  prevent(evt);
@@ -9905,7 +9919,6 @@ function createCommandStreamClient(options = {}) {
9905
9919
  }
9906
9920
 
9907
9921
  // src/tui/terminal-screen.ts
9908
- var import_headless = __toESM(require_xterm_headless(), 1);
9909
9922
  var BASE_COLORS = [
9910
9923
  "#000000",
9911
9924
  "#cd0000",
@@ -9944,8 +9957,9 @@ function paletteToHex(index) {
9944
9957
  return toHex(g << 16 | g << 8 | g);
9945
9958
  }
9946
9959
  function createTerminalScreen(cols, rows) {
9960
+ const { Terminal } = require_xterm_headless();
9947
9961
  function makeTerm(nextCols, nextRows) {
9948
- return new import_headless.Terminal({
9962
+ return new Terminal({
9949
9963
  cols: nextCols,
9950
9964
  rows: nextRows,
9951
9965
  scrollback: 0,
@@ -12595,15 +12609,6 @@ var v2setup = (ctx) => {
12595
12609
  }
12596
12610
  },
12597
12611
  claimantID,
12598
- onOutcome: (outcome, requestID) => {
12599
- try {
12600
- const {
12601
- appendFileSync
12602
- } = __require("fs");
12603
- appendFileSync("/tmp/loopd-tui.log", `[${new Date().toISOString()}] native-worker request=${requestID} outcome=${JSON.stringify(outcome)}
12604
- `);
12605
- } catch {}
12606
- },
12607
12612
  isKnownParent: (parentSessionID) => {
12608
12613
  const parent = ctx.data.session.get(parentSessionID);
12609
12614
  if (!parent)