@bojackduy/opencode-loopd 1.11.2 → 1.12.3

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) {
@@ -5593,16 +5560,16 @@ ${i.join(`
5593
5560
  import { createComponent as _$createComponent4 } from "@opentui/solid";
5594
5561
 
5595
5562
  // src/tui/dashboard.tsx
5596
- import { use as _$use } from "@opentui/solid";
5597
- import { effect as _$effect } from "@opentui/solid";
5598
5563
  import { createComponent as _$createComponent } from "@opentui/solid";
5599
5564
  import { spread as _$spread } from "@opentui/solid";
5600
5565
  import { mergeProps as _$mergeProps } from "@opentui/solid";
5601
5566
  import { memo as _$memo } from "@opentui/solid";
5602
- import { insert as _$insert } from "@opentui/solid";
5603
5567
  import { createTextNode as _$createTextNode } from "@opentui/solid";
5604
5568
  import { insertNode as _$insertNode } from "@opentui/solid";
5569
+ import { effect as _$effect } from "@opentui/solid";
5570
+ import { insert as _$insert } from "@opentui/solid";
5605
5571
  import { setProp as _$setProp } from "@opentui/solid";
5572
+ import { use as _$use } from "@opentui/solid";
5606
5573
  import { createElement as _$createElement } from "@opentui/solid";
5607
5574
  import { createSignal, For, Show, onCleanup, onMount, createEffect } from "solid-js";
5608
5575
  import { useKeyboard } from "@opentui/solid";
@@ -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?.();
@@ -6670,6 +6628,72 @@ function indexAgents(list) {
6670
6628
  }
6671
6629
  return map;
6672
6630
  }
6631
+ function DashboardList(props) {
6632
+ let scroll;
6633
+ let followPending = true;
6634
+ createEffect(() => {
6635
+ props.count;
6636
+ props.selectedID;
6637
+ followPending = true;
6638
+ scroll?.requestRender();
6639
+ });
6640
+ return (() => {
6641
+ var _el$ = _$createElement("scrollbox");
6642
+ _$use((el) => {
6643
+ scroll = el;
6644
+ }, _el$);
6645
+ _$setProp(_el$, "scrollX", false);
6646
+ _$setProp(_el$, "scrollY", true);
6647
+ _$setProp(_el$, "stickyScroll", false);
6648
+ _$setProp(_el$, "renderAfter", () => {
6649
+ if (!followPending || !scroll)
6650
+ return;
6651
+ followPending = false;
6652
+ if (props.selectedID)
6653
+ scroll.scrollChildIntoView(props.selectedID);
6654
+ });
6655
+ _$insert(_el$, () => props.children);
6656
+ _$effect((_$p) => _$setProp(_el$, "height", Math.min(props.count, 10), _$p));
6657
+ return _el$;
6658
+ })();
6659
+ }
6660
+ function DashboardRow(props) {
6661
+ let text;
6662
+ return (() => {
6663
+ var _el$2 = _$createElement("box"), _el$3 = _$createElement("text");
6664
+ _$insertNode(_el$2, _el$3);
6665
+ _$setProp(_el$2, "flexDirection", "row");
6666
+ _$setProp(_el$2, "paddingLeft", 1);
6667
+ _$setProp(_el$2, "paddingRight", 1);
6668
+ _$setProp(_el$2, "height", 1);
6669
+ _$setProp(_el$2, "flexShrink", 0);
6670
+ _$setProp(_el$2, "overflow", "hidden");
6671
+ _$setProp(_el$2, "onMouseScroll", () => {
6672
+ if (text) {
6673
+ text.scrollX = 0;
6674
+ text.scrollY = 0;
6675
+ }
6676
+ });
6677
+ _$use((el) => {
6678
+ text = el;
6679
+ }, _el$3);
6680
+ _$setProp(_el$3, "wrapMode", "none");
6681
+ _$setProp(_el$3, "truncate", true);
6682
+ _$setProp(_el$3, "minWidth", 0);
6683
+ _$setProp(_el$3, "flexShrink", 1);
6684
+ _$insert(_el$3, () => props.children);
6685
+ _$effect((_p$) => {
6686
+ var { id: _v$, backgroundColor: _v$2 } = props;
6687
+ _v$ !== _p$.e && (_p$.e = _$setProp(_el$2, "id", _v$, _p$.e));
6688
+ _v$2 !== _p$.t && (_p$.t = _$setProp(_el$2, "backgroundColor", _v$2, _p$.t));
6689
+ return _p$;
6690
+ }, {
6691
+ e: undefined,
6692
+ t: undefined
6693
+ });
6694
+ return _el$2;
6695
+ })();
6696
+ }
6673
6697
  function LoopDashboard(props) {
6674
6698
  const theme = () => props.api.theme.current;
6675
6699
  const [mode, setMode] = createSignal("normal");
@@ -6695,7 +6719,6 @@ function LoopDashboard(props) {
6695
6719
  const [clock, setClock] = createSignal(Date.now());
6696
6720
  const [agentIndex, setAgentIndex] = createSignal({});
6697
6721
  let inputEl;
6698
- let listScrollRef;
6699
6722
  let focusTimer;
6700
6723
  const client = createControlClient(props.directory);
6701
6724
  const popMode = props.api.mode.push("loopd.dashboard");
@@ -6713,13 +6736,6 @@ function LoopDashboard(props) {
6713
6736
  try {
6714
6737
  const s = await client.getState();
6715
6738
  setState(s);
6716
- const goals = s.goals.filter((g) => showCompleted() || g.status !== "complete");
6717
- if (goals.length > 0 && selected() >= goals.length)
6718
- setSelected(goals.length - 1);
6719
- setSelectedGoal(goals[selected()] || null);
6720
- const cmds = visibleOwnerCommands(s.commands, ownerSessionID(), showCompleted());
6721
- if (cmds.length > 0 && cmdSelected() >= cmds.length)
6722
- setCmdSelected(cmds.length - 1);
6723
6739
  setEvents(await client.getEvents(20));
6724
6740
  } catch (e) {
6725
6741
  setStatusText(`Error: ${e instanceof Error ? e.message : String(e)}`);
@@ -6744,19 +6760,10 @@ function LoopDashboard(props) {
6744
6760
  typeof u === "function" ? u() : clearInterval(u);
6745
6761
  });
6746
6762
  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
6763
  focusInput();
6756
6764
  });
6757
6765
  createEffect(() => {
6758
- const m = mode();
6759
- debugLog("mode ->", m);
6766
+ mode();
6760
6767
  focusInput();
6761
6768
  });
6762
6769
  function enterInsertMode() {
@@ -6777,7 +6784,6 @@ function LoopDashboard(props) {
6777
6784
  const name = evt.name || "";
6778
6785
  const seq = evt.sequence || "";
6779
6786
  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
6787
  if (!props.api.ui.dialog.open)
6782
6788
  return;
6783
6789
  const active = (() => {
@@ -6791,18 +6797,15 @@ function LoopDashboard(props) {
6791
6797
  return;
6792
6798
  const isColon = name === ":" || seq === ":" || raw === ":" || seq.includes(":") || raw.includes(":") || name === ";" || name === "colon";
6793
6799
  const isQuestion = name === "?" || seq === "?" || raw === "?" || seq.includes("?") || raw.includes("?");
6794
- debugLog("isColon", isColon, "isQuestion", isQuestion, "modeBefore", mode());
6795
6800
  if (mode() === "insert") {
6796
6801
  if (isEnterKey(evt)) {
6797
6802
  prevent(evt);
6798
- debugLog("insert enter -> execute");
6799
6803
  executeCommand(commandInput());
6800
6804
  return;
6801
6805
  }
6802
6806
  if (isEscapeKey(evt) || isCtrlN(evt)) {
6803
6807
  prevent(evt);
6804
6808
  returnToNormalMode();
6805
- debugLog("insert -> normal via esc/ctrl+n");
6806
6809
  return;
6807
6810
  }
6808
6811
  return;
@@ -6810,13 +6813,11 @@ function LoopDashboard(props) {
6810
6813
  if (isColon) {
6811
6814
  prevent(evt);
6812
6815
  enterInsertMode();
6813
- debugLog("normal -> insert");
6814
6816
  return;
6815
6817
  }
6816
6818
  if (isQuestion) {
6817
6819
  prevent(evt);
6818
6820
  setShowHelp((value) => !value);
6819
- debugLog("toggle help");
6820
6821
  return;
6821
6822
  }
6822
6823
  const key = raw || seq || name;
@@ -6839,7 +6840,6 @@ function LoopDashboard(props) {
6839
6840
  setStatusText(next ? `Showing finished ${tab() === "commands" ? "commands" : "goals"}.` : `Hiding finished ${tab() === "commands" ? "commands" : "goals"}.`);
6840
6841
  return next;
6841
6842
  });
6842
- debugLog("toggle completed");
6843
6843
  return;
6844
6844
  }
6845
6845
  const currentGoals = state()?.goals.filter((goal) => showCompleted() || goal.status !== "complete") || [];
@@ -6847,14 +6847,12 @@ function LoopDashboard(props) {
6847
6847
  if (name === "tab") {
6848
6848
  prevent(evt);
6849
6849
  setTab((v) => toggleDashboardView(v));
6850
- debugLog("switch tab ->", tab());
6851
6850
  return;
6852
6851
  }
6853
6852
  const directionalView = dashboardViewForKey(key);
6854
6853
  if (directionalView !== undefined) {
6855
6854
  prevent(evt);
6856
6855
  setTab(directionalView);
6857
- debugLog("select tab ->", tab());
6858
6856
  return;
6859
6857
  }
6860
6858
  function dashboardSelection() {
@@ -6904,7 +6902,7 @@ function LoopDashboard(props) {
6904
6902
  removeFinishedSelected();
6905
6903
  return;
6906
6904
  }
6907
- const needsGoalsTab = ["p", "r", "A", "N", "model", "models"].includes(key);
6905
+ const needsGoalsTab = ["p", "r", "A", "N", "model", "models", "agent", "agents"].includes(key);
6908
6906
  if (needsGoalsTab && tab() !== "goals") {
6909
6907
  prevent(evt);
6910
6908
  setStatusText("Goal controls need the Goals tab (Tab to switch).");
@@ -6950,7 +6948,7 @@ function LoopDashboard(props) {
6950
6948
  const target = resolveDashboardOpen({
6951
6949
  goals: currentGoals,
6952
6950
  commands: state()?.commands ?? []
6953
- }, dashboardSelection(), ownerSessionID(), currentRouteSessionID(props.api));
6951
+ }, dashboardSelection(), ownerSessionID(), currentRouteSessionID(props.api), showCompleted());
6954
6952
  if (target.kind === "goal") {
6955
6953
  props.api.route.navigate("session", {
6956
6954
  sessionID: target.workerSessionID
@@ -7045,8 +7043,13 @@ function LoopDashboard(props) {
7045
7043
  }, sel.id);
7046
7044
  }
7047
7045
  async function executeCommandTabCommand(verb, positional, raw) {
7048
- debugLog("commands-tab command", verb);
7049
7046
  switch (verb) {
7047
+ case "model":
7048
+ case "models":
7049
+ case "agent":
7050
+ case "agents":
7051
+ setStatusText(`:${verb} is only available on the Goals tab.`);
7052
+ return;
7050
7053
  case "new": {
7051
7054
  const argv = parseNewCommand(raw);
7052
7055
  if (!argv) {
@@ -7118,12 +7121,9 @@ function LoopDashboard(props) {
7118
7121
  }
7119
7122
  }
7120
7123
  async function executeCommand(cmd) {
7121
- debugLog("executeCommand raw=", JSON.stringify(cmd));
7122
7124
  const parsed = parseCommand(cmd);
7123
- debugLog("parsed", parsed);
7124
7125
  if (!parsed) {
7125
7126
  setStatusText("Empty command");
7126
- debugLog("empty command");
7127
7127
  return;
7128
7128
  }
7129
7129
  if (tab() === "commands" && !["q", "close"].includes(parsed.command)) {
@@ -7342,6 +7342,41 @@ function LoopDashboard(props) {
7342
7342
  await refresh();
7343
7343
  break;
7344
7344
  }
7345
+ case "agent": {
7346
+ if (!selectedGoal()) {
7347
+ setStatusText("No goal selected");
7348
+ break;
7349
+ }
7350
+ const agent = parsed.positional.join(" ").trim();
7351
+ if (!agent) {
7352
+ setStatusText("Usage: :agent <name> \u2014 :agents lists available agents.");
7353
+ break;
7354
+ }
7355
+ const r = await client.execute({
7356
+ version: 1,
7357
+ requestID: randomUUID2(),
7358
+ requestedAt: new Date().toISOString(),
7359
+ command: "switch_goal_identity",
7360
+ goalID: selectedGoal().id,
7361
+ args: {
7362
+ agent
7363
+ }
7364
+ });
7365
+ setStatusText(r.ok ? r.message : `Error: ${r.message}`);
7366
+ if (r.ok)
7367
+ await refresh();
7368
+ break;
7369
+ }
7370
+ case "agents": {
7371
+ const r = await client.execute({
7372
+ version: 1,
7373
+ requestID: randomUUID2(),
7374
+ requestedAt: new Date().toISOString(),
7375
+ command: "list_agents"
7376
+ });
7377
+ setStatusText(r.ok ? r.message : `Error: ${r.message}`);
7378
+ break;
7379
+ }
7345
7380
  case "model": {
7346
7381
  if (!selectedGoal()) {
7347
7382
  setStatusText("No goal selected");
@@ -7356,7 +7391,7 @@ function LoopDashboard(props) {
7356
7391
  version: 1,
7357
7392
  requestID: randomUUID2(),
7358
7393
  requestedAt: new Date().toISOString(),
7359
- command: "switch_goal_model",
7394
+ command: "switch_goal_identity",
7360
7395
  goalID: selectedGoal().id,
7361
7396
  args: {
7362
7397
  model: target
@@ -7422,7 +7457,6 @@ function LoopDashboard(props) {
7422
7457
  returnToNormalMode();
7423
7458
  }
7424
7459
  const activeGoals = () => state()?.goals.filter((g) => showCompleted() || g.status !== "complete") || [];
7425
- const listHeight = () => Math.min(activeGoals().length, 10);
7426
7460
  const runningCount = () => state()?.runtimes.filter((runtime) => runtime.phase === "running").length || 0;
7427
7461
  const runningFrame = () => ["|", "/", "-", "\\"][Math.floor(clock() / 500) % 4];
7428
7462
  function handleBugReport() {
@@ -7435,125 +7469,120 @@ function LoopDashboard(props) {
7435
7469
  const res = openBrowserUrl(url);
7436
7470
  setStatusText(res.status === "opened" ? "Opening bug report in browser\u2026" : `Could not open browser: ${res.reason} \u2014 ${url}`);
7437
7471
  }
7438
- createEffect(() => setSelectedGoal(activeGoals()[selected()] || null));
7472
+ createEffect(() => {
7473
+ setSelected(Math.max(0, Math.min(selected(), activeGoals().length - 1)));
7474
+ setCmdSelected(Math.max(0, Math.min(cmdSelected(), ownerCommands().length - 1)));
7475
+ setSelectedGoal(activeGoals()[selected()] || null);
7476
+ });
7439
7477
  function rowIdFor(goalID) {
7440
7478
  return `loopd-goal-${goalID}`;
7441
7479
  }
7442
- createEffect(() => {
7443
- const goals = activeGoals();
7444
- const goal = goals[selected()];
7445
- if (!goal || !listScrollRef)
7446
- return;
7447
- try {
7448
- listScrollRef.scrollChildIntoView(rowIdFor(goal.id));
7449
- } catch {}
7450
- });
7451
7480
  return (() => {
7452
- var _el$ = _$createElement("box"), _el$2 = _$createElement("box"), _el$3 = _$createElement("box"), _el$4 = _$createElement("text"), _el$5 = _$createElement("span"), _el$7 = _$createElement("span"), _el$9 = _$createElement("span"), _el$0 = _$createTextNode(` `), _el$1 = _$createTextNode(` `), _el$10 = _$createElement("span"), _el$12 = _$createElement("span"), _el$13 = _$createElement("span"), _el$15 = _$createElement("span"), _el$17 = _$createElement("span"), _el$18 = _$createTextNode(` `), _el$19 = _$createTextNode(` acting now`), _el$20 = _$createElement("span"), _el$22 = _$createElement("span"), _el$23 = _$createElement("span"), _el$25 = _$createElement("span"), _el$27 = _$createElement("span"), _el$29 = _$createElement("span"), _el$31 = _$createElement("span"), _el$33 = _$createElement("span"), _el$35 = _$createElement("box"), _el$36 = _$createElement("text"), _el$37 = _$createElement("span"), _el$39 = _$createElement("box"), _el$51 = _$createElement("box"), _el$52 = _$createElement("text"), _el$53 = _$createElement("span"), _el$54 = _$createElement("input");
7453
- _$insertNode(_el$, _el$2);
7454
- _$setProp(_el$, "flexDirection", "column");
7455
- _$setProp(_el$, "width", "100%");
7456
- _$setProp(_el$, "alignItems", "center");
7457
- _$setProp(_el$, "padding", 1);
7458
- _$insertNode(_el$2, _el$3);
7459
- _$insertNode(_el$2, _el$39);
7460
- _$insertNode(_el$2, _el$51);
7461
- _$setProp(_el$2, "flexDirection", "column");
7462
- _$setProp(_el$2, "width", "90%");
7463
- _$setProp(_el$2, "border", true);
7464
- _$setProp(_el$2, "padding", 1);
7465
- _$insertNode(_el$3, _el$4);
7466
- _$insertNode(_el$3, _el$35);
7467
- _$setProp(_el$3, "flexDirection", "row");
7468
- _$setProp(_el$3, "justifyContent", "space-between");
7469
- _$setProp(_el$3, "alignItems", "center");
7470
- _$setProp(_el$3, "padding", 0);
7471
- _$setProp(_el$3, "flexShrink", 0);
7472
- _$setProp(_el$3, "gap", 1);
7481
+ var _el$4 = _$createElement("box"), _el$5 = _$createElement("box"), _el$6 = _$createElement("box"), _el$7 = _$createElement("text"), _el$8 = _$createElement("span"), _el$0 = _$createElement("span"), _el$10 = _$createElement("span"), _el$11 = _$createTextNode(` `), _el$12 = _$createTextNode(` `), _el$13 = _$createElement("span"), _el$15 = _$createElement("span"), _el$16 = _$createElement("span"), _el$18 = _$createElement("span"), _el$20 = _$createElement("span"), _el$21 = _$createTextNode(` `), _el$22 = _$createTextNode(` acting now`), _el$23 = _$createElement("span"), _el$25 = _$createElement("span"), _el$26 = _$createElement("span"), _el$28 = _$createElement("span"), _el$30 = _$createElement("span"), _el$32 = _$createElement("span"), _el$34 = _$createElement("span"), _el$36 = _$createElement("span"), _el$38 = _$createElement("box"), _el$39 = _$createElement("text"), _el$40 = _$createElement("span"), _el$42 = _$createElement("box"), _el$52 = _$createElement("box"), _el$53 = _$createElement("text"), _el$54 = _$createElement("span"), _el$55 = _$createElement("input");
7473
7482
  _$insertNode(_el$4, _el$5);
7474
- _$insertNode(_el$4, _el$7);
7475
- _$insertNode(_el$4, _el$9);
7476
- _$insertNode(_el$4, _el$10);
7477
- _$insertNode(_el$4, _el$12);
7478
- _$insertNode(_el$4, _el$13);
7479
- _$insertNode(_el$4, _el$15);
7480
- _$insertNode(_el$4, _el$17);
7481
- _$insertNode(_el$4, _el$20);
7482
- _$insertNode(_el$4, _el$22);
7483
- _$insertNode(_el$4, _el$23);
7484
- _$insertNode(_el$4, _el$25);
7485
- _$insertNode(_el$4, _el$27);
7486
- _$insertNode(_el$4, _el$29);
7487
- _$insertNode(_el$4, _el$31);
7488
- _$insertNode(_el$4, _el$33);
7489
- _$insertNode(_el$5, _$createTextNode(`\u2B22 Loop Dashboard`));
7490
- _$insertNode(_el$7, _$createTextNode(` \u2502 `));
7491
- _$insertNode(_el$9, _el$0);
7492
- _$insertNode(_el$9, _el$1);
7493
- _$insert(_el$9, () => mode().toUpperCase(), _el$1);
7494
- _$insertNode(_el$10, _$createTextNode(` \u2502 `));
7495
- _$insert(_el$12, () => activeGoals().length);
7496
- _$insertNode(_el$13, _$createTextNode(` open`));
7497
- _$insertNode(_el$15, _$createTextNode(` \u2502 `));
7498
- _$insertNode(_el$17, _el$18);
7499
- _$insertNode(_el$17, _el$19);
7500
- _$insert(_el$17, (() => {
7483
+ _$setProp(_el$4, "flexDirection", "column");
7484
+ _$setProp(_el$4, "width", "100%");
7485
+ _$setProp(_el$4, "alignItems", "center");
7486
+ _$setProp(_el$4, "padding", 1);
7487
+ _$insertNode(_el$5, _el$6);
7488
+ _$insertNode(_el$5, _el$42);
7489
+ _$insertNode(_el$5, _el$52);
7490
+ _$setProp(_el$5, "flexDirection", "column");
7491
+ _$setProp(_el$5, "width", "90%");
7492
+ _$setProp(_el$5, "border", true);
7493
+ _$setProp(_el$5, "padding", 1);
7494
+ _$insertNode(_el$6, _el$7);
7495
+ _$insertNode(_el$6, _el$38);
7496
+ _$setProp(_el$6, "flexDirection", "row");
7497
+ _$setProp(_el$6, "justifyContent", "space-between");
7498
+ _$setProp(_el$6, "alignItems", "center");
7499
+ _$setProp(_el$6, "padding", 0);
7500
+ _$setProp(_el$6, "flexShrink", 0);
7501
+ _$setProp(_el$6, "gap", 1);
7502
+ _$insertNode(_el$7, _el$8);
7503
+ _$insertNode(_el$7, _el$0);
7504
+ _$insertNode(_el$7, _el$10);
7505
+ _$insertNode(_el$7, _el$13);
7506
+ _$insertNode(_el$7, _el$15);
7507
+ _$insertNode(_el$7, _el$16);
7508
+ _$insertNode(_el$7, _el$18);
7509
+ _$insertNode(_el$7, _el$20);
7510
+ _$insertNode(_el$7, _el$23);
7511
+ _$insertNode(_el$7, _el$25);
7512
+ _$insertNode(_el$7, _el$26);
7513
+ _$insertNode(_el$7, _el$28);
7514
+ _$insertNode(_el$7, _el$30);
7515
+ _$insertNode(_el$7, _el$32);
7516
+ _$insertNode(_el$7, _el$34);
7517
+ _$insertNode(_el$7, _el$36);
7518
+ _$insertNode(_el$8, _$createTextNode(`\u2B22 Loop Dashboard`));
7519
+ _$insertNode(_el$0, _$createTextNode(` \u2502 `));
7520
+ _$insertNode(_el$10, _el$11);
7521
+ _$insertNode(_el$10, _el$12);
7522
+ _$insert(_el$10, () => mode().toUpperCase(), _el$12);
7523
+ _$insertNode(_el$13, _$createTextNode(` \u2502 `));
7524
+ _$insert(_el$15, () => activeGoals().length);
7525
+ _$insertNode(_el$16, _$createTextNode(` open`));
7526
+ _$insertNode(_el$18, _$createTextNode(` \u2502 `));
7527
+ _$insertNode(_el$20, _el$21);
7528
+ _$insertNode(_el$20, _el$22);
7529
+ _$insert(_el$20, (() => {
7501
7530
  var _c$ = _$memo(() => runningCount() > 0);
7502
7531
  return () => _c$() ? runningFrame() : "\u25CB";
7503
- })(), _el$18);
7504
- _$insert(_el$17, runningCount, _el$19);
7505
- _$insertNode(_el$20, _$createTextNode(` \u2502 `));
7506
- _$insert(_el$22, () => state()?.goals.filter((g) => g.status === "complete").length || 0);
7507
- _$insertNode(_el$23, _$createTextNode(` done`));
7508
- _$insertNode(_el$25, _$createTextNode(` \u2502 `));
7509
- _$insertNode(_el$27, _$createTextNode(`[Goals]`));
7510
- _$insertNode(_el$29, _$createTextNode(` `));
7511
- _$insertNode(_el$31, _$createTextNode(`[Commands]`));
7512
- _$insertNode(_el$33, _$createTextNode(` (Tab)`));
7513
- _$insertNode(_el$35, _el$36);
7514
- _$setProp(_el$35, "flexDirection", "row");
7515
- _$setProp(_el$35, "alignItems", "center");
7516
- _$setProp(_el$35, "paddingLeft", 1);
7517
- _$setProp(_el$35, "paddingRight", 1);
7518
- _$setProp(_el$35, "flexShrink", 0);
7519
- _$spread(_el$35, _$mergeProps({
7532
+ })(), _el$21);
7533
+ _$insert(_el$20, runningCount, _el$22);
7534
+ _$insertNode(_el$23, _$createTextNode(` \u2502 `));
7535
+ _$insert(_el$25, () => state()?.goals.filter((g) => g.status === "complete").length || 0);
7536
+ _$insertNode(_el$26, _$createTextNode(` done`));
7537
+ _$insertNode(_el$28, _$createTextNode(` \u2502 `));
7538
+ _$insertNode(_el$30, _$createTextNode(`[Goals]`));
7539
+ _$insertNode(_el$32, _$createTextNode(` `));
7540
+ _$insertNode(_el$34, _$createTextNode(`[Commands]`));
7541
+ _$insertNode(_el$36, _$createTextNode(` (Tab)`));
7542
+ _$insertNode(_el$38, _el$39);
7543
+ _$setProp(_el$38, "flexDirection", "row");
7544
+ _$setProp(_el$38, "alignItems", "center");
7545
+ _$setProp(_el$38, "paddingLeft", 1);
7546
+ _$setProp(_el$38, "paddingRight", 1);
7547
+ _$setProp(_el$38, "flexShrink", 0);
7548
+ _$spread(_el$38, _$mergeProps({
7520
7549
  get backgroundColor() {
7521
7550
  return theme().error;
7522
7551
  }
7523
7552
  }, {
7524
7553
  onMouseDown: handleBugReport
7525
7554
  }), true);
7526
- _$insertNode(_el$36, _el$37);
7527
- _$insertNode(_el$37, _$createTextNode(`Bug Report`));
7528
- _$setProp(_el$37, "style", {
7555
+ _$insertNode(_el$39, _el$40);
7556
+ _$insertNode(_el$40, _$createTextNode(`Bug Report`));
7557
+ _$setProp(_el$40, "style", {
7529
7558
  fg: "white",
7530
7559
  bold: true
7531
7560
  });
7532
- _$setProp(_el$39, "flexDirection", "column");
7533
- _$setProp(_el$39, "flexShrink", 1);
7534
- _$setProp(_el$39, "minHeight", 0);
7535
- _$setProp(_el$39, "overflow", "hidden");
7536
- _$insert(_el$39, _$createComponent(Show, {
7561
+ _$setProp(_el$42, "flexDirection", "column");
7562
+ _$setProp(_el$42, "flexShrink", 1);
7563
+ _$setProp(_el$42, "minHeight", 0);
7564
+ _$setProp(_el$42, "overflow", "hidden");
7565
+ _$insert(_el$42, _$createComponent(Show, {
7537
7566
  get when() {
7538
7567
  return showHelp();
7539
7568
  },
7540
7569
  get children() {
7541
- var _el$40 = _$createElement("box"), _el$41 = _$createElement("text"), _el$42 = _$createElement("span");
7542
- _$insertNode(_el$40, _el$41);
7543
- _$setProp(_el$40, "flexDirection", "column");
7544
- _$setProp(_el$40, "padding", 1);
7545
- _$setProp(_el$40, "border", true);
7546
- _$setProp(_el$40, "borderColor", "yellow");
7547
- _$setProp(_el$40, "flexShrink", 0);
7548
- _$setProp(_el$40, "maxHeight", 17);
7549
- _$setProp(_el$40, "overflow", "hidden");
7550
- _$insertNode(_el$41, _el$42);
7551
- _$setProp(_el$42, "style", {
7570
+ var _el$43 = _$createElement("box"), _el$44 = _$createElement("text"), _el$45 = _$createElement("span");
7571
+ _$insertNode(_el$43, _el$44);
7572
+ _$setProp(_el$43, "flexDirection", "column");
7573
+ _$setProp(_el$43, "padding", 1);
7574
+ _$setProp(_el$43, "border", true);
7575
+ _$setProp(_el$43, "borderColor", "yellow");
7576
+ _$setProp(_el$43, "flexShrink", 0);
7577
+ _$setProp(_el$43, "maxHeight", 17);
7578
+ _$setProp(_el$43, "overflow", "hidden");
7579
+ _$insertNode(_el$44, _el$45);
7580
+ _$setProp(_el$45, "style", {
7552
7581
  fg: "yellow",
7553
7582
  bold: true
7554
7583
  });
7555
- _$insert(_el$42, () => tab() === "commands" ? "\u2501\u2501\u2501 Commands: ? help : insert c toggle done X kill R restart x remove-done o fullscreen q close \u2501\u2501\u2501" : "\u2501\u2501\u2501 Keys: ? toggle help c toggle done : insert Ctrl+N normal o open A abort worker N nudge q close \u2501\u2501\u2501");
7556
- _$insert(_el$41, _$createComponent(For, {
7584
+ _$insert(_el$45, () => 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");
7585
+ _$insert(_el$44, _$createComponent(For, {
7557
7586
  get each() {
7558
7587
  return (tab() === "commands" ? commandTabHelp() : commandHelp()).split(`
7559
7588
  `);
@@ -7565,20 +7594,20 @@ function LoopDashboard(props) {
7565
7594
  const segments = rest.split(" | ");
7566
7595
  return [`
7567
7596
  `, (() => {
7568
- var _el$55 = _$createElement("span");
7569
- _$insert(_el$55, label);
7570
- _$effect((_$p) => _$setProp(_el$55, "style", {
7597
+ var _el$56 = _$createElement("span");
7598
+ _$insert(_el$56, label);
7599
+ _$effect((_$p) => _$setProp(_el$56, "style", {
7571
7600
  fg: theme().primary,
7572
7601
  bold: true
7573
7602
  }, _$p));
7574
- return _el$55;
7603
+ return _el$56;
7575
7604
  })(), (() => {
7576
- var _el$56 = _$createElement("span");
7577
- _$insertNode(_el$56, _$createTextNode(` `));
7578
- _$effect((_$p) => _$setProp(_el$56, "style", {
7605
+ var _el$57 = _$createElement("span");
7606
+ _$insertNode(_el$57, _$createTextNode(` `));
7607
+ _$effect((_$p) => _$setProp(_el$57, "style", {
7579
7608
  fg: theme().textMuted
7580
7609
  }, _$p));
7581
- return _el$56;
7610
+ return _el$57;
7582
7611
  })(), _$createComponent(For, {
7583
7612
  each: segments,
7584
7613
  children: (seg, idx) => {
@@ -7586,62 +7615,62 @@ function LoopDashboard(props) {
7586
7615
  if (hasArrow) {
7587
7616
  const [k, d] = seg.split("\u2192").map((s) => s.trim());
7588
7617
  return [_$memo(() => _$memo(() => idx() > 0)() && (() => {
7589
- var _el$62 = _$createElement("span");
7590
- _$insertNode(_el$62, _$createTextNode(` | `));
7591
- _$effect((_$p) => _$setProp(_el$62, "style", {
7618
+ var _el$63 = _$createElement("span");
7619
+ _$insertNode(_el$63, _$createTextNode(` | `));
7620
+ _$effect((_$p) => _$setProp(_el$63, "style", {
7592
7621
  fg: theme().textMuted
7593
7622
  }, _$p));
7594
- return _el$62;
7623
+ return _el$63;
7595
7624
  })()), (() => {
7596
- var _el$58 = _$createElement("span");
7597
- _$insert(_el$58, k);
7598
- _$effect((_$p) => _$setProp(_el$58, "style", {
7625
+ var _el$59 = _$createElement("span");
7626
+ _$insert(_el$59, k);
7627
+ _$effect((_$p) => _$setProp(_el$59, "style", {
7599
7628
  fg: theme().warning,
7600
7629
  bold: true
7601
7630
  }, _$p));
7602
- return _el$58;
7631
+ return _el$59;
7603
7632
  })(), (() => {
7604
- var _el$59 = _$createElement("span");
7605
- _$insertNode(_el$59, _$createTextNode(` \u2192 `));
7606
- _$effect((_$p) => _$setProp(_el$59, "style", {
7633
+ var _el$60 = _$createElement("span");
7634
+ _$insertNode(_el$60, _$createTextNode(` \u2192 `));
7635
+ _$effect((_$p) => _$setProp(_el$60, "style", {
7607
7636
  fg: theme().textMuted
7608
7637
  }, _$p));
7609
- return _el$59;
7638
+ return _el$60;
7610
7639
  })(), (() => {
7611
- var _el$61 = _$createElement("span");
7612
- _$insert(_el$61, d);
7613
- _$effect((_$p) => _$setProp(_el$61, "style", {
7640
+ var _el$62 = _$createElement("span");
7641
+ _$insert(_el$62, d);
7642
+ _$effect((_$p) => _$setProp(_el$62, "style", {
7614
7643
  fg: theme().text
7615
7644
  }, _$p));
7616
- return _el$61;
7645
+ return _el$62;
7617
7646
  })()];
7618
7647
  }
7619
7648
  const sp = seg.indexOf(" ");
7620
7649
  const k = sp > 0 ? seg.slice(0, sp) : seg;
7621
7650
  const d = sp > 0 ? seg.slice(sp + 1) : "";
7622
7651
  return [_$memo(() => _$memo(() => idx() > 0)() && (() => {
7623
- var _el$65 = _$createElement("span");
7624
- _$insertNode(_el$65, _$createTextNode(` | `));
7625
- _$effect((_$p) => _$setProp(_el$65, "style", {
7652
+ var _el$66 = _$createElement("span");
7653
+ _$insertNode(_el$66, _$createTextNode(` | `));
7654
+ _$effect((_$p) => _$setProp(_el$66, "style", {
7626
7655
  fg: theme().textMuted
7627
7656
  }, _$p));
7628
- return _el$65;
7657
+ return _el$66;
7629
7658
  })()), (() => {
7630
- var _el$64 = _$createElement("span");
7631
- _$insert(_el$64, k);
7632
- _$effect((_$p) => _$setProp(_el$64, "style", {
7659
+ var _el$65 = _$createElement("span");
7660
+ _$insert(_el$65, k);
7661
+ _$effect((_$p) => _$setProp(_el$65, "style", {
7633
7662
  fg: theme().warning,
7634
7663
  bold: true
7635
7664
  }, _$p));
7636
- return _el$64;
7665
+ return _el$65;
7637
7666
  })(), d && (() => {
7638
- var _el$67 = _$createElement("span"), _el$68 = _$createTextNode(` `);
7639
- _$insertNode(_el$67, _el$68);
7640
- _$insert(_el$67, d, null);
7641
- _$effect((_$p) => _$setProp(_el$67, "style", {
7667
+ var _el$68 = _$createElement("span"), _el$69 = _$createTextNode(` `);
7668
+ _$insertNode(_el$68, _el$69);
7669
+ _$insert(_el$68, d, null);
7670
+ _$effect((_$p) => _$setProp(_el$68, "style", {
7642
7671
  fg: theme().text
7643
7672
  }, _$p));
7644
- return _el$67;
7673
+ return _el$68;
7645
7674
  })()];
7646
7675
  }
7647
7676
  })];
@@ -7653,54 +7682,54 @@ function LoopDashboard(props) {
7653
7682
  const desc = m?.[3] ?? line.split(/\s{2,}/)[1] ?? "";
7654
7683
  return [`
7655
7684
  `, (() => {
7656
- var _el$69 = _$createElement("span");
7657
- _$insert(_el$69, indent);
7658
- _$effect((_$p) => _$setProp(_el$69, "style", {
7685
+ var _el$70 = _$createElement("span");
7686
+ _$insert(_el$70, indent);
7687
+ _$effect((_$p) => _$setProp(_el$70, "style", {
7659
7688
  fg: theme().textMuted
7660
7689
  }, _$p));
7661
- return _el$69;
7690
+ return _el$70;
7662
7691
  })(), (() => {
7663
- var _el$70 = _$createElement("span");
7664
- _$insert(_el$70, key);
7665
- _$effect((_$p) => _$setProp(_el$70, "style", {
7692
+ var _el$71 = _$createElement("span");
7693
+ _$insert(_el$71, key);
7694
+ _$effect((_$p) => _$setProp(_el$71, "style", {
7666
7695
  fg: theme().warning,
7667
7696
  bold: true
7668
7697
  }, _$p));
7669
- return _el$70;
7698
+ return _el$71;
7670
7699
  })(), desc && [(() => {
7671
- var _el$71 = _$createElement("span");
7672
- _$insertNode(_el$71, _$createTextNode(` `));
7673
- _$effect((_$p) => _$setProp(_el$71, "style", {
7700
+ var _el$72 = _$createElement("span");
7701
+ _$insertNode(_el$72, _$createTextNode(` `));
7702
+ _$effect((_$p) => _$setProp(_el$72, "style", {
7674
7703
  fg: theme().textMuted
7675
7704
  }, _$p));
7676
- return _el$71;
7705
+ return _el$72;
7677
7706
  })(), (() => {
7678
- var _el$73 = _$createElement("span");
7679
- _$insert(_el$73, desc);
7680
- _$effect((_$p) => _$setProp(_el$73, "style", {
7707
+ var _el$74 = _$createElement("span");
7708
+ _$insert(_el$74, desc);
7709
+ _$effect((_$p) => _$setProp(_el$74, "style", {
7681
7710
  fg: theme().textMuted
7682
7711
  }, _$p));
7683
- return _el$73;
7712
+ return _el$74;
7684
7713
  })()]];
7685
7714
  }
7686
7715
  const isHeader = line.startsWith("Commands");
7687
7716
  return [`
7688
7717
  `, (() => {
7689
- var _el$74 = _$createElement("span");
7690
- _$insert(_el$74, line);
7691
- _$effect((_$p) => _$setProp(_el$74, "style", {
7718
+ var _el$75 = _$createElement("span");
7719
+ _$insert(_el$75, line);
7720
+ _$effect((_$p) => _$setProp(_el$75, "style", {
7692
7721
  fg: isHeader ? theme().primary : theme().textMuted,
7693
7722
  bold: isHeader
7694
7723
  }, _$p));
7695
- return _el$74;
7724
+ return _el$75;
7696
7725
  })()];
7697
7726
  }
7698
7727
  }), null);
7699
- _$effect((_$p) => _$setProp(_el$40, "backgroundColor", theme().background, _$p));
7700
- return _el$40;
7728
+ _$effect((_$p) => _$setProp(_el$43, "backgroundColor", theme().background, _$p));
7729
+ return _el$43;
7701
7730
  }
7702
7731
  }), null);
7703
- _$insert(_el$39, _$createComponent(Show, {
7732
+ _$insert(_el$42, _$createComponent(Show, {
7704
7733
  get when() {
7705
7734
  return tab() === "goals";
7706
7735
  },
@@ -7711,43 +7740,39 @@ function LoopDashboard(props) {
7711
7740
  },
7712
7741
  get fallback() {
7713
7742
  return (() => {
7714
- var _el$75 = _$createElement("box"), _el$76 = _$createElement("text"), _el$77 = _$createElement("span"), _el$79 = _$createElement("span"), _el$81 = _$createElement("span"), _el$83 = _$createElement("text"), _el$84 = _$createElement("span"), _el$86 = _$createElement("span"), _el$88 = _$createElement("span"), _el$90 = _$createElement("span"), _el$92 = _$createElement("span"), _el$94 = _$createElement("span"), _el$96 = _$createElement("span");
7715
- _$insertNode(_el$75, _el$76);
7716
- _$insertNode(_el$75, _el$83);
7717
- _$setProp(_el$75, "flexDirection", "column");
7718
- _$setProp(_el$75, "gap", 1);
7719
- _$setProp(_el$75, "padding", 1);
7743
+ var _el$76 = _$createElement("box"), _el$77 = _$createElement("text"), _el$78 = _$createElement("span"), _el$80 = _$createElement("span"), _el$82 = _$createElement("span"), _el$84 = _$createElement("text"), _el$85 = _$createElement("span"), _el$87 = _$createElement("span"), _el$89 = _$createElement("span"), _el$91 = _$createElement("span"), _el$93 = _$createElement("span"), _el$95 = _$createElement("span"), _el$97 = _$createElement("span");
7720
7744
  _$insertNode(_el$76, _el$77);
7721
- _$insertNode(_el$76, _el$79);
7722
- _$insertNode(_el$76, _el$81);
7723
- _$insertNode(_el$77, _$createTextNode(`No active goals.`));
7724
- _$insertNode(_el$79, _$createTextNode(` /goal`));
7725
- _$insertNode(_el$81, _$createTextNode(` in parent chat to create one.`));
7726
- _$insertNode(_el$83, _el$84);
7727
- _$insertNode(_el$83, _el$86);
7728
- _$insertNode(_el$83, _el$88);
7729
- _$insertNode(_el$83, _el$90);
7730
- _$insertNode(_el$83, _el$92);
7731
- _$insertNode(_el$83, _el$94);
7732
- _$insertNode(_el$83, _el$96);
7733
- _$insertNode(_el$84, _$createTextNode(`Tip: `));
7734
- _$insertNode(_el$86, _$createTextNode(`:send`));
7735
- _$insertNode(_el$88, _$createTextNode(` to steer the worker \xB7 `));
7736
- _$insertNode(_el$90, _$createTextNode(`o`));
7737
- _$insertNode(_el$92, _$createTextNode(` to open child \xB7 `));
7738
- _$insertNode(_el$94, _$createTextNode(`:force`));
7739
- _$insertNode(_el$96, _$createTextNode(` to complete manually.`));
7745
+ _$insertNode(_el$76, _el$84);
7746
+ _$setProp(_el$76, "flexDirection", "column");
7747
+ _$setProp(_el$76, "gap", 1);
7748
+ _$setProp(_el$76, "padding", 1);
7749
+ _$insertNode(_el$77, _el$78);
7750
+ _$insertNode(_el$77, _el$80);
7751
+ _$insertNode(_el$77, _el$82);
7752
+ _$insertNode(_el$78, _$createTextNode(`No active goals.`));
7753
+ _$insertNode(_el$80, _$createTextNode(` /goal`));
7754
+ _$insertNode(_el$82, _$createTextNode(` in parent chat to create one.`));
7755
+ _$insertNode(_el$84, _el$85);
7756
+ _$insertNode(_el$84, _el$87);
7757
+ _$insertNode(_el$84, _el$89);
7758
+ _$insertNode(_el$84, _el$91);
7759
+ _$insertNode(_el$84, _el$93);
7760
+ _$insertNode(_el$84, _el$95);
7761
+ _$insertNode(_el$84, _el$97);
7762
+ _$insertNode(_el$85, _$createTextNode(`Tip: `));
7763
+ _$insertNode(_el$87, _$createTextNode(`:send`));
7764
+ _$insertNode(_el$89, _$createTextNode(` to steer the worker \xB7 `));
7765
+ _$insertNode(_el$91, _$createTextNode(`o`));
7766
+ _$insertNode(_el$93, _$createTextNode(` to open child \xB7 `));
7767
+ _$insertNode(_el$95, _$createTextNode(`:force`));
7768
+ _$insertNode(_el$97, _$createTextNode(` to complete manually.`));
7740
7769
  _$effect((_p$) => {
7741
- var _v$26 = {
7742
- fg: theme().textMuted
7743
- }, _v$27 = {
7744
- fg: theme().accent
7745
- }, _v$28 = {
7770
+ var _v$28 = {
7746
7771
  fg: theme().textMuted
7747
7772
  }, _v$29 = {
7748
- fg: theme().textMuted
7773
+ fg: theme().accent
7749
7774
  }, _v$30 = {
7750
- fg: theme().warning
7775
+ fg: theme().textMuted
7751
7776
  }, _v$31 = {
7752
7777
  fg: theme().textMuted
7753
7778
  }, _v$32 = {
@@ -7758,17 +7783,21 @@ function LoopDashboard(props) {
7758
7783
  fg: theme().warning
7759
7784
  }, _v$35 = {
7760
7785
  fg: theme().textMuted
7786
+ }, _v$36 = {
7787
+ fg: theme().warning
7788
+ }, _v$37 = {
7789
+ fg: theme().textMuted
7761
7790
  };
7762
- _v$26 !== _p$.e && (_p$.e = _$setProp(_el$77, "style", _v$26, _p$.e));
7763
- _v$27 !== _p$.t && (_p$.t = _$setProp(_el$79, "style", _v$27, _p$.t));
7764
- _v$28 !== _p$.a && (_p$.a = _$setProp(_el$81, "style", _v$28, _p$.a));
7765
- _v$29 !== _p$.o && (_p$.o = _$setProp(_el$84, "style", _v$29, _p$.o));
7766
- _v$30 !== _p$.i && (_p$.i = _$setProp(_el$86, "style", _v$30, _p$.i));
7767
- _v$31 !== _p$.n && (_p$.n = _$setProp(_el$88, "style", _v$31, _p$.n));
7768
- _v$32 !== _p$.s && (_p$.s = _$setProp(_el$90, "style", _v$32, _p$.s));
7769
- _v$33 !== _p$.h && (_p$.h = _$setProp(_el$92, "style", _v$33, _p$.h));
7770
- _v$34 !== _p$.r && (_p$.r = _$setProp(_el$94, "style", _v$34, _p$.r));
7771
- _v$35 !== _p$.d && (_p$.d = _$setProp(_el$96, "style", _v$35, _p$.d));
7791
+ _v$28 !== _p$.e && (_p$.e = _$setProp(_el$78, "style", _v$28, _p$.e));
7792
+ _v$29 !== _p$.t && (_p$.t = _$setProp(_el$80, "style", _v$29, _p$.t));
7793
+ _v$30 !== _p$.a && (_p$.a = _$setProp(_el$82, "style", _v$30, _p$.a));
7794
+ _v$31 !== _p$.o && (_p$.o = _$setProp(_el$85, "style", _v$31, _p$.o));
7795
+ _v$32 !== _p$.i && (_p$.i = _$setProp(_el$87, "style", _v$32, _p$.i));
7796
+ _v$33 !== _p$.n && (_p$.n = _$setProp(_el$89, "style", _v$33, _p$.n));
7797
+ _v$34 !== _p$.s && (_p$.s = _$setProp(_el$91, "style", _v$34, _p$.s));
7798
+ _v$35 !== _p$.h && (_p$.h = _$setProp(_el$93, "style", _v$35, _p$.h));
7799
+ _v$36 !== _p$.r && (_p$.r = _$setProp(_el$95, "style", _v$36, _p$.r));
7800
+ _v$37 !== _p$.d && (_p$.d = _$setProp(_el$97, "style", _v$37, _p$.d));
7772
7801
  return _p$;
7773
7802
  }, {
7774
7803
  e: undefined,
@@ -7782,238 +7811,206 @@ function LoopDashboard(props) {
7782
7811
  r: undefined,
7783
7812
  d: undefined
7784
7813
  });
7785
- return _el$75;
7814
+ return _el$76;
7786
7815
  })();
7787
7816
  },
7788
7817
  get children() {
7789
- var _el$43 = _$createElement("scrollbox");
7790
- _$use((el) => {
7791
- listScrollRef = el;
7792
- }, _el$43);
7793
- _$insert(_el$43, _$createComponent(For, {
7794
- get each() {
7795
- return activeGoals();
7818
+ return _$createComponent(DashboardList, {
7819
+ get count() {
7820
+ return activeGoals().length;
7796
7821
  },
7797
- children: (goal, i) => {
7798
- const runtime = () => state()?.runtimes.find((r) => r.goalID === goal.id);
7799
- const isActive = () => i() === selected();
7800
- const maxTurns = goal.config?.maxTurns;
7801
- const turnColor = () => {
7802
- if (!runtime() || !maxTurns)
7803
- return phaseColor(runtime()?.phase || "idle", theme());
7804
- const ratio = runtime().budgetTurnCount / maxTurns;
7805
- if (ratio >= 1)
7806
- return theme().error;
7807
- if (ratio >= 0.8)
7808
- return theme().warning;
7809
- return phaseColor(runtime().phase || "idle", theme());
7810
- };
7811
- return (() => {
7812
- var _el$98 = _$createElement("box"), _el$99 = _$createElement("text"), _el$100 = _$createElement("span"), _el$101 = _$createElement("span"), _el$103 = _$createElement("span"), _el$105 = _$createElement("span");
7813
- _$insertNode(_el$98, _el$99);
7814
- _$setProp(_el$98, "flexDirection", "row");
7815
- _$setProp(_el$98, "paddingLeft", 1);
7816
- _$setProp(_el$98, "paddingRight", 1);
7817
- _$insertNode(_el$99, _el$100);
7818
- _$insertNode(_el$99, _el$101);
7819
- _$insertNode(_el$99, _el$103);
7820
- _$insertNode(_el$99, _el$105);
7821
- _$setProp(_el$99, "wrapMode", "none");
7822
- _$setProp(_el$99, "truncate", true);
7823
- _$insert(_el$100, (() => {
7824
- var _c$2 = _$memo(() => !!isActive());
7825
- return () => _c$2() ? `\u25B6 ${statusIcon(goal.status)} ${goal.name}` : ` ${statusIcon(goal.status)} ${goal.name}`;
7826
- })());
7827
- _$insertNode(_el$101, _$createTextNode(` \u2502 `));
7828
- _$insertNode(_el$103, _$createTextNode(`Goal `));
7829
- _$insert(_el$105, () => goalStatusLabel(goal.status).short.toUpperCase());
7830
- _$insert(_el$99, (() => {
7831
- var _c$3 = _$memo(() => !!runtime());
7832
- return () => _c$3() && [(() => {
7833
- var _el$106 = _$createElement("span");
7834
- _$insertNode(_el$106, _$createTextNode(` \u2502 Worker `));
7835
- _$effect((_$p) => _$setProp(_el$106, "style", {
7836
- fg: theme().textMuted
7837
- }, _$p));
7838
- return _el$106;
7839
- })(), (() => {
7840
- var _el$108 = _$createElement("span"), _el$109 = _$createTextNode(` `);
7841
- _$insertNode(_el$108, _el$109);
7842
- _$insert(_el$108, (() => {
7843
- var _c$11 = _$memo(() => runtime().phase === "running");
7844
- return () => _c$11() ? runningFrame() : phaseIcon(runtime().phase);
7845
- })(), _el$109);
7846
- _$insert(_el$108, () => phaseLabel(runtime().phase).short.toUpperCase(), null);
7847
- _$effect((_$p) => _$setProp(_el$108, "style", {
7848
- fg: turnColor(),
7849
- bold: runtime().phase === "running"
7850
- }, _$p));
7851
- return _el$108;
7852
- })(), (() => {
7853
- var _el$110 = _$createElement("span"), _el$111 = _$createTextNode(` `);
7854
- _$insertNode(_el$110, _el$111);
7855
- _$insert(_el$110, () => runtime().budgetTurnCount, null);
7856
- _$insert(_el$110, maxTurns ? `/${maxTurns}` : "", null);
7857
- _$effect((_$p) => _$setProp(_el$110, "style", {
7858
- fg: turnColor()
7859
- }, _$p));
7860
- return _el$110;
7861
- })(), (() => {
7862
- var _el$112 = _$createElement("span"), _el$113 = _$createTextNode(` `);
7863
- _$insertNode(_el$112, _el$113);
7864
- _$insert(_el$112, () => ageLabel(runtime().lastProgressAt || runtime().lastRunAt, clock()), null);
7865
- _$effect((_$p) => _$setProp(_el$112, "style", {
7866
- fg: theme().textMuted
7867
- }, _$p));
7868
- return _el$112;
7869
- })()];
7870
- })(), null);
7871
- _$insert(_el$99, (() => {
7872
- var _c$4 = _$memo(() => !!(runtime() && runtime().consecutiveFailures > 0));
7873
- return () => _c$4() && (() => {
7874
- var _el$114 = _$createElement("span"), _el$115 = _$createTextNode(` \u2502 \u26A0 `), _el$116 = _$createTextNode(` fail`);
7875
- _$insertNode(_el$114, _el$115);
7876
- _$insertNode(_el$114, _el$116);
7877
- _$insert(_el$114, () => runtime().consecutiveFailures, _el$116);
7878
- _$effect((_$p) => _$setProp(_el$114, "style", {
7879
- fg: theme().error,
7880
- bold: true
7881
- }, _$p));
7882
- return _el$114;
7883
- })();
7884
- })(), null);
7885
- _$insert(_el$99, (() => {
7886
- var _c$5 = _$memo(() => !!(runtime() && (runtime().noProgressCount || 0) > 0));
7887
- return () => _c$5() && (() => {
7888
- var _el$117 = _$createElement("span"), _el$118 = _$createTextNode(` \u2502 `), _el$119 = _$createTextNode(` no-progress`);
7889
- _$insertNode(_el$117, _el$118);
7890
- _$insertNode(_el$117, _el$119);
7891
- _$insert(_el$117, () => runtime().noProgressCount, _el$119);
7892
- _$effect((_$p) => _$setProp(_el$117, "style", {
7893
- fg: theme().warning
7894
- }, _$p));
7895
- return _el$117;
7896
- })();
7897
- })(), null);
7898
- _$insert(_el$99, (() => {
7899
- var _c$6 = _$memo(() => !!(runtime() && runtime().evaluatorRejectionCount > 0));
7900
- return () => _c$6() && (() => {
7901
- var _el$120 = _$createElement("span"), _el$121 = _$createTextNode(` \u2502 \u26A0 `), _el$122 = _$createTextNode(` rejected`);
7902
- _$insertNode(_el$120, _el$121);
7903
- _$insertNode(_el$120, _el$122);
7904
- _$insert(_el$120, () => String(runtime().evaluatorRejectionCount), _el$122);
7905
- _$effect((_$p) => _$setProp(_el$120, "style", {
7906
- fg: theme().warning,
7907
- bold: true
7908
- }, _$p));
7909
- return _el$120;
7910
- })();
7911
- })(), null);
7912
- _$insert(_el$99, (() => {
7913
- var _c$7 = _$memo(() => !!(runtime() && runtime().unknownStatusCount >= 3));
7914
- return () => _c$7() && (() => {
7915
- var _el$123 = _$createElement("span");
7916
- _$insertNode(_el$123, _$createTextNode(` \u2502 \u26A0\uFE0F UNREACHABLE`));
7917
- _$effect((_$p) => _$setProp(_el$123, "style", {
7918
- fg: theme().error,
7919
- bold: true
7920
- }, _$p));
7921
- return _el$123;
7922
- })();
7923
- })(), null);
7924
- _$insert(_el$99, (() => {
7925
- var _c$8 = _$memo(() => !!(runtime() && runtime().phase === "idle" && runtime().activeRunID));
7926
- return () => _c$8() && (() => {
7927
- var _el$125 = _$createElement("span");
7928
- _$insertNode(_el$125, _$createTextNode(` \u2502 \u26A0\uFE0F STALE LEASE`));
7929
- _$effect((_$p) => _$setProp(_el$125, "style", {
7930
- fg: theme().error,
7931
- bold: true
7932
- }, _$p));
7933
- return _el$125;
7934
- })();
7935
- })(), null);
7936
- _$insert(_el$99, (() => {
7937
- var _c$9 = _$memo(() => goal.interactive === true);
7938
- return () => _c$9() && (() => {
7939
- var _el$127 = _$createElement("span");
7940
- _$insertNode(_el$127, _$createTextNode(` \u2502 \u270B MANUAL`));
7941
- _$effect((_$p) => _$setProp(_el$127, "style", {
7942
- fg: theme().accent,
7943
- bold: true
7944
- }, _$p));
7945
- return _el$127;
7946
- })();
7947
- })(), null);
7948
- _$insert(_el$99, (() => {
7949
- var _c$0 = _$memo(() => !!goal.config.model);
7950
- return () => _c$0() && (() => {
7951
- var _el$129 = _$createElement("span"), _el$130 = _$createTextNode(` \u2502 \uD83E\uDDE0 `);
7952
- _$insertNode(_el$129, _el$130);
7953
- _$insert(_el$129, () => goal.config.model, null);
7954
- _$effect((_$p) => _$setProp(_el$129, "style", {
7955
- fg: theme().info
7956
- }, _$p));
7957
- return _el$129;
7958
- })();
7959
- })(), null);
7960
- _$insert(_el$99, (() => {
7961
- var _c$1 = _$memo(() => !!(runtime() && runtime().retryAfter));
7962
- return () => _c$1() && (() => {
7963
- var _el$131 = _$createElement("span"), _el$132 = _$createTextNode(` \u2502 \u21BB `);
7964
- _$insertNode(_el$131, _el$132);
7965
- _$insert(_el$131, () => countdownLabel(runtime().retryAfter, clock()), null);
7966
- _$effect((_$p) => _$setProp(_el$131, "style", {
7967
- fg: theme().accent
7968
- }, _$p));
7969
- return _el$131;
7970
- })();
7971
- })(), null);
7972
- _$insert(_el$99, (() => {
7973
- var _c$10 = _$memo(() => !!(runtime() && runtime().nextRunAt));
7974
- return () => _c$10() && (() => {
7975
- var _el$133 = _$createElement("span"), _el$134 = _$createTextNode(` \u2502 \u23F0 `);
7976
- _$insertNode(_el$133, _el$134);
7977
- _$insert(_el$133, () => countdownLabel(runtime().nextRunAt, clock()), null);
7978
- _$effect((_$p) => _$setProp(_el$133, "style", {
7979
- fg: theme().accent
7980
- }, _$p));
7981
- return _el$133;
7982
- })();
7983
- })(), null);
7984
- _$effect((_p$) => {
7985
- var _v$36 = rowIdFor(goal.id), _v$37 = isActive() ? theme().backgroundElement : undefined, _v$38 = {
7986
- fg: statusColor(goal.status, theme()),
7987
- bold: isActive()
7988
- }, _v$39 = {
7989
- fg: theme().textMuted
7990
- }, _v$40 = {
7991
- fg: theme().textMuted
7992
- }, _v$41 = {
7993
- fg: statusColor(goal.status, theme()),
7994
- bold: true
7822
+ get selectedID() {
7823
+ return _$memo(() => !!activeGoals()[selected()])() ? rowIdFor(activeGoals()[selected()].id) : undefined;
7824
+ },
7825
+ get children() {
7826
+ return _$createComponent(For, {
7827
+ get each() {
7828
+ return activeGoals();
7829
+ },
7830
+ children: (goal, i) => {
7831
+ const runtime = () => state()?.runtimes.find((r) => r.goalID === goal.id);
7832
+ const isActive = () => i() === selected();
7833
+ const maxTurns = goal.config?.maxTurns;
7834
+ const turnColor = () => {
7835
+ if (!runtime() || !maxTurns)
7836
+ return phaseColor(runtime()?.phase || "idle", theme());
7837
+ const ratio = runtime().budgetTurnCount / maxTurns;
7838
+ if (ratio >= 1)
7839
+ return theme().error;
7840
+ if (ratio >= 0.8)
7841
+ return theme().warning;
7842
+ return phaseColor(runtime().phase || "idle", theme());
7995
7843
  };
7996
- _v$36 !== _p$.e && (_p$.e = _$setProp(_el$98, "id", _v$36, _p$.e));
7997
- _v$37 !== _p$.t && (_p$.t = _$setProp(_el$98, "backgroundColor", _v$37, _p$.t));
7998
- _v$38 !== _p$.a && (_p$.a = _$setProp(_el$100, "style", _v$38, _p$.a));
7999
- _v$39 !== _p$.o && (_p$.o = _$setProp(_el$101, "style", _v$39, _p$.o));
8000
- _v$40 !== _p$.i && (_p$.i = _$setProp(_el$103, "style", _v$40, _p$.i));
8001
- _v$41 !== _p$.n && (_p$.n = _$setProp(_el$105, "style", _v$41, _p$.n));
8002
- return _p$;
8003
- }, {
8004
- e: undefined,
8005
- t: undefined,
8006
- a: undefined,
8007
- o: undefined,
8008
- i: undefined,
8009
- n: undefined
8010
- });
8011
- return _el$98;
8012
- })();
7844
+ return _$createComponent(DashboardRow, {
7845
+ get id() {
7846
+ return rowIdFor(goal.id);
7847
+ },
7848
+ get backgroundColor() {
7849
+ return _$memo(() => !!isActive())() ? theme().backgroundElement : undefined;
7850
+ },
7851
+ get children() {
7852
+ return [(() => {
7853
+ var _el$99 = _$createElement("span");
7854
+ _$insert(_el$99, (() => {
7855
+ var _c$2 = _$memo(() => !!isActive());
7856
+ return () => _c$2() ? `\u25B6 ${statusIcon(goal.status)} ${goal.name}` : ` ${statusIcon(goal.status)} ${goal.name}`;
7857
+ })());
7858
+ _$effect((_$p) => _$setProp(_el$99, "style", {
7859
+ fg: statusColor(goal.status, theme()),
7860
+ bold: isActive()
7861
+ }, _$p));
7862
+ return _el$99;
7863
+ })(), (() => {
7864
+ var _el$100 = _$createElement("span");
7865
+ _$insertNode(_el$100, _$createTextNode(` \u2502 `));
7866
+ _$effect((_$p) => _$setProp(_el$100, "style", {
7867
+ fg: theme().textMuted
7868
+ }, _$p));
7869
+ return _el$100;
7870
+ })(), (() => {
7871
+ var _el$102 = _$createElement("span");
7872
+ _$insertNode(_el$102, _$createTextNode(`Goal `));
7873
+ _$effect((_$p) => _$setProp(_el$102, "style", {
7874
+ fg: theme().textMuted
7875
+ }, _$p));
7876
+ return _el$102;
7877
+ })(), (() => {
7878
+ var _el$104 = _$createElement("span");
7879
+ _$insert(_el$104, () => goalStatusLabel(goal.status).short.toUpperCase());
7880
+ _$effect((_$p) => _$setProp(_el$104, "style", {
7881
+ fg: statusColor(goal.status, theme()),
7882
+ bold: true
7883
+ }, _$p));
7884
+ return _el$104;
7885
+ })(), _$memo(() => _$memo(() => !!runtime())() && [(() => {
7886
+ var _el$105 = _$createElement("span");
7887
+ _$insertNode(_el$105, _$createTextNode(` \u2502 Worker `));
7888
+ _$effect((_$p) => _$setProp(_el$105, "style", {
7889
+ fg: theme().textMuted
7890
+ }, _$p));
7891
+ return _el$105;
7892
+ })(), (() => {
7893
+ var _el$107 = _$createElement("span"), _el$108 = _$createTextNode(` `);
7894
+ _$insertNode(_el$107, _el$108);
7895
+ _$insert(_el$107, (() => {
7896
+ var _c$3 = _$memo(() => runtime().phase === "running");
7897
+ return () => _c$3() ? runningFrame() : phaseIcon(runtime().phase);
7898
+ })(), _el$108);
7899
+ _$insert(_el$107, () => phaseLabel(runtime().phase).short.toUpperCase(), null);
7900
+ _$effect((_$p) => _$setProp(_el$107, "style", {
7901
+ fg: turnColor(),
7902
+ bold: runtime().phase === "running"
7903
+ }, _$p));
7904
+ return _el$107;
7905
+ })(), (() => {
7906
+ var _el$109 = _$createElement("span"), _el$110 = _$createTextNode(` `);
7907
+ _$insertNode(_el$109, _el$110);
7908
+ _$insert(_el$109, () => runtime().budgetTurnCount, null);
7909
+ _$insert(_el$109, maxTurns ? `/${maxTurns}` : "", null);
7910
+ _$effect((_$p) => _$setProp(_el$109, "style", {
7911
+ fg: turnColor()
7912
+ }, _$p));
7913
+ return _el$109;
7914
+ })(), (() => {
7915
+ var _el$111 = _$createElement("span"), _el$112 = _$createTextNode(` `);
7916
+ _$insertNode(_el$111, _el$112);
7917
+ _$insert(_el$111, () => ageLabel(runtime().lastProgressAt || runtime().lastRunAt, clock()), null);
7918
+ _$effect((_$p) => _$setProp(_el$111, "style", {
7919
+ fg: theme().textMuted
7920
+ }, _$p));
7921
+ return _el$111;
7922
+ })()]), _$memo(() => _$memo(() => !!(runtime() && runtime().consecutiveFailures > 0))() && (() => {
7923
+ var _el$113 = _$createElement("span"), _el$114 = _$createTextNode(` \u2502 \u26A0 `), _el$115 = _$createTextNode(` fail`);
7924
+ _$insertNode(_el$113, _el$114);
7925
+ _$insertNode(_el$113, _el$115);
7926
+ _$insert(_el$113, () => runtime().consecutiveFailures, _el$115);
7927
+ _$effect((_$p) => _$setProp(_el$113, "style", {
7928
+ fg: theme().error,
7929
+ bold: true
7930
+ }, _$p));
7931
+ return _el$113;
7932
+ })()), _$memo(() => _$memo(() => !!(runtime() && (runtime().noProgressCount || 0) > 0))() && (() => {
7933
+ var _el$116 = _$createElement("span"), _el$117 = _$createTextNode(` \u2502 `), _el$118 = _$createTextNode(` no-progress`);
7934
+ _$insertNode(_el$116, _el$117);
7935
+ _$insertNode(_el$116, _el$118);
7936
+ _$insert(_el$116, () => runtime().noProgressCount, _el$118);
7937
+ _$effect((_$p) => _$setProp(_el$116, "style", {
7938
+ fg: theme().warning
7939
+ }, _$p));
7940
+ return _el$116;
7941
+ })()), _$memo(() => _$memo(() => !!(runtime() && runtime().evaluatorRejectionCount > 0))() && (() => {
7942
+ var _el$119 = _$createElement("span"), _el$120 = _$createTextNode(` \u2502 \u26A0 `), _el$121 = _$createTextNode(` rejected`);
7943
+ _$insertNode(_el$119, _el$120);
7944
+ _$insertNode(_el$119, _el$121);
7945
+ _$insert(_el$119, () => String(runtime().evaluatorRejectionCount), _el$121);
7946
+ _$effect((_$p) => _$setProp(_el$119, "style", {
7947
+ fg: theme().warning,
7948
+ bold: true
7949
+ }, _$p));
7950
+ return _el$119;
7951
+ })()), _$memo(() => _$memo(() => !!(runtime() && runtime().unknownStatusCount >= 3))() && (() => {
7952
+ var _el$122 = _$createElement("span");
7953
+ _$insertNode(_el$122, _$createTextNode(` \u2502 \u26A0\uFE0F UNREACHABLE`));
7954
+ _$effect((_$p) => _$setProp(_el$122, "style", {
7955
+ fg: theme().error,
7956
+ bold: true
7957
+ }, _$p));
7958
+ return _el$122;
7959
+ })()), _$memo(() => _$memo(() => !!(runtime() && runtime().phase === "idle" && runtime().activeRunID))() && (() => {
7960
+ var _el$124 = _$createElement("span");
7961
+ _$insertNode(_el$124, _$createTextNode(` \u2502 \u26A0\uFE0F STALE LEASE`));
7962
+ _$effect((_$p) => _$setProp(_el$124, "style", {
7963
+ fg: theme().error,
7964
+ bold: true
7965
+ }, _$p));
7966
+ return _el$124;
7967
+ })()), _$memo(() => _$memo(() => goal.interactive === true)() && (() => {
7968
+ var _el$126 = _$createElement("span");
7969
+ _$insertNode(_el$126, _$createTextNode(` \u2502 \u270B MANUAL`));
7970
+ _$effect((_$p) => _$setProp(_el$126, "style", {
7971
+ fg: theme().accent,
7972
+ bold: true
7973
+ }, _$p));
7974
+ return _el$126;
7975
+ })()), _$memo(() => _$memo(() => !!goal.config.model)() && (() => {
7976
+ var _el$128 = _$createElement("span"), _el$129 = _$createTextNode(` \u2502 \uD83E\uDDE0 `);
7977
+ _$insertNode(_el$128, _el$129);
7978
+ _$insert(_el$128, () => goal.config.model, null);
7979
+ _$effect((_$p) => _$setProp(_el$128, "style", {
7980
+ fg: theme().info
7981
+ }, _$p));
7982
+ return _el$128;
7983
+ })()), _$memo(() => _$memo(() => !!goal.config.agent)() && (() => {
7984
+ var _el$130 = _$createElement("span"), _el$131 = _$createTextNode(` \u2502 \uD83E\uDD16 `);
7985
+ _$insertNode(_el$130, _el$131);
7986
+ _$insert(_el$130, () => goal.config.agent, null);
7987
+ _$effect((_$p) => _$setProp(_el$130, "style", {
7988
+ fg: theme().info
7989
+ }, _$p));
7990
+ return _el$130;
7991
+ })()), _$memo(() => _$memo(() => !!(runtime() && runtime().retryAfter))() && (() => {
7992
+ var _el$132 = _$createElement("span"), _el$133 = _$createTextNode(` \u2502 \u21BB `);
7993
+ _$insertNode(_el$132, _el$133);
7994
+ _$insert(_el$132, () => countdownLabel(runtime().retryAfter, clock()), null);
7995
+ _$effect((_$p) => _$setProp(_el$132, "style", {
7996
+ fg: theme().accent
7997
+ }, _$p));
7998
+ return _el$132;
7999
+ })()), _$memo(() => _$memo(() => !!(runtime() && runtime().nextRunAt))() && (() => {
8000
+ var _el$134 = _$createElement("span"), _el$135 = _$createTextNode(` \u2502 \u23F0 `);
8001
+ _$insertNode(_el$134, _el$135);
8002
+ _$insert(_el$134, () => countdownLabel(runtime().nextRunAt, clock()), null);
8003
+ _$effect((_$p) => _$setProp(_el$134, "style", {
8004
+ fg: theme().accent
8005
+ }, _$p));
8006
+ return _el$134;
8007
+ })())];
8008
+ }
8009
+ });
8010
+ }
8011
+ });
8013
8012
  }
8014
- }));
8015
- _$effect((_$p) => _$setProp(_el$43, "height", listHeight(), _$p));
8016
- return _el$43;
8013
+ });
8017
8014
  }
8018
8015
  }), _$createComponent(Show, {
8019
8016
  get when() {
@@ -8024,604 +8021,633 @@ function LoopDashboard(props) {
8024
8021
  const lp = () => goal().lastProgress;
8025
8022
  const blk = () => goal().blocker;
8026
8023
  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);
8024
+ var _el$136 = _$createElement("box"), _el$137 = _$createElement("text"), _el$138 = _$createElement("span"), _el$139 = _$createTextNode(` `), _el$140 = _$createElement("span"), _el$142 = _$createElement("span"), _el$143 = _$createTextNode(` \u2014 `), _el$144 = _$createTextNode(`
8025
+ `), _el$145 = _$createElement("span"), _el$146 = _$createTextNode(`
8026
+ `), _el$147 = _$createElement("span"), _el$149 = _$createElement("span");
8036
8027
  _$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);
8028
+ _$setProp(_el$136, "flexDirection", "column");
8029
+ _$setProp(_el$136, "border", true);
8030
+ _$setProp(_el$136, "padding", 1);
8031
+ _$setProp(_el$136, "flexShrink", 0);
8032
+ _$setProp(_el$136, "maxHeight", 13);
8044
8033
  _$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", {
8034
+ _$insertNode(_el$137, _el$140);
8035
+ _$insertNode(_el$137, _el$142);
8036
+ _$insertNode(_el$137, _el$144);
8037
+ _$insertNode(_el$137, _el$145);
8038
+ _$insertNode(_el$137, _el$146);
8039
+ _$insertNode(_el$137, _el$147);
8040
+ _$insertNode(_el$137, _el$149);
8041
+ _$insertNode(_el$138, _el$139);
8042
+ _$insert(_el$138, () => statusIcon(goal().status), _el$139);
8043
+ _$insert(_el$138, () => goal().name, null);
8044
+ _$insertNode(_el$140, _$createTextNode(` Goal `));
8045
+ _$insertNode(_el$142, _el$143);
8046
+ _$insert(_el$142, () => goalStatusLabel(goal().status).short, _el$143);
8047
+ _$insert(_el$142, () => goalStatusLabel(goal().status).hint, null);
8048
+ _$insert(_el$137, (() => {
8049
+ var _c$4 = _$memo(() => !!rt());
8050
+ return () => _c$4() && [(() => {
8051
+ var _el$150 = _$createElement("span");
8052
+ _$insertNode(_el$150, _$createTextNode(` \u2502 Worker `));
8053
+ _$effect((_$p) => _$setProp(_el$150, "style", {
8057
8054
  fg: theme().textMuted
8058
8055
  }, _$p));
8059
- return _el$149;
8056
+ return _el$150;
8060
8057
  })(), (() => {
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", {
8058
+ var _el$152 = _$createElement("span"), _el$153 = _$createTextNode(` `), _el$154 = _$createTextNode(` \u2014 `);
8059
+ _$insertNode(_el$152, _el$153);
8060
+ _$insertNode(_el$152, _el$154);
8061
+ _$insert(_el$152, () => phaseIcon(rt().phase), _el$153);
8062
+ _$insert(_el$152, () => phaseLabel(rt().phase).short, _el$154);
8063
+ _$insert(_el$152, () => phaseLabel(rt().phase).hint, null);
8064
+ _$effect((_$p) => _$setProp(_el$152, "style", {
8068
8065
  fg: phaseColor(rt().phase, theme()),
8069
8066
  bold: true
8070
8067
  }, _$p));
8071
- return _el$151;
8068
+ return _el$152;
8072
8069
  })(), (() => {
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", {
8070
+ var _el$155 = _$createElement("span"), _el$156 = _$createTextNode(` run `), _el$157 = _$createTextNode(` (budget `), _el$158 = _$createTextNode(`)`);
8071
+ _$insertNode(_el$155, _el$156);
8072
+ _$insertNode(_el$155, _el$157);
8073
+ _$insertNode(_el$155, _el$158);
8074
+ _$insert(_el$155, () => rt().runCount, _el$157);
8075
+ _$insert(_el$155, () => rt().budgetTurnCount, _el$158);
8076
+ _$effect((_$p) => _$setProp(_el$155, "style", {
8080
8077
  fg: theme().textMuted
8081
8078
  }, _$p));
8082
- return _el$154;
8079
+ return _el$155;
8083
8080
  })()];
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", {
8081
+ })(), _el$144);
8082
+ _$insert(_el$145, () => describeGoalState(goal().status, rt()?.phase));
8083
+ _$insert(_el$137, (() => {
8084
+ var _c$5 = _$memo(() => !!rt()?.workerAbortedAt);
8085
+ return () => _c$5() && [(() => {
8086
+ var _el$159 = _$createElement("span");
8087
+ _$insertNode(_el$159, _$createTextNode(` \u2502 \u26A0 worker aborted `));
8088
+ _$effect((_$p) => _$setProp(_el$159, "style", {
8092
8089
  fg: theme().warning,
8093
8090
  bold: true
8094
8091
  }, _$p));
8095
- return _el$158;
8092
+ return _el$159;
8096
8093
  })(), (() => {
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", {
8094
+ var _el$161 = _$createElement("span"), _el$162 = _$createTextNode(` \u2014 session kept, next turn reuses it`);
8095
+ _$insertNode(_el$161, _el$162);
8096
+ _$insert(_el$161, () => ageLabel(rt().workerAbortedAt, clock()), _el$162);
8097
+ _$effect((_$p) => _$setProp(_el$161, "style", {
8101
8098
  fg: theme().textMuted
8102
8099
  }, _$p));
8103
- return _el$160;
8100
+ return _el$161;
8104
8101
  })()];
8105
- })(), _el$145);
8106
- _$insert(_el$136, () => {
8102
+ })(), _el$146);
8103
+ _$insert(_el$137, () => {
8107
8104
  const agentName = goal().config.agent;
8108
8105
  const meta = agentName ? agentIndex()[agentName] ?? agentIndex()[agentName.toLowerCase()] : undefined;
8109
8106
  const model = goal().config.model;
8110
8107
  const slash = model?.indexOf("/") ?? -1;
8111
8108
  return [`
8112
8109
  `, (() => {
8113
- var _el$162 = _$createElement("span");
8114
- _$insertNode(_el$162, _$createTextNode(`\uD83E\uDD16 `));
8115
- _$effect((_$p) => _$setProp(_el$162, "style", {
8110
+ var _el$163 = _$createElement("span");
8111
+ _$insertNode(_el$163, _$createTextNode(`\uD83E\uDD16 `));
8112
+ _$effect((_$p) => _$setProp(_el$163, "style", {
8116
8113
  fg: theme().textMuted
8117
8114
  }, _$p));
8118
- return _el$162;
8115
+ return _el$163;
8119
8116
  })(), (() => {
8120
- var _el$164 = _$createElement("span");
8121
- _$insertNode(_el$164, _$createTextNode(`Agent: `));
8122
- _$effect((_$p) => _$setProp(_el$164, "style", {
8117
+ var _el$165 = _$createElement("span");
8118
+ _$insertNode(_el$165, _$createTextNode(`Agent: `));
8119
+ _$effect((_$p) => _$setProp(_el$165, "style", {
8123
8120
  fg: theme().primary,
8124
8121
  bold: true
8125
8122
  }, _$p));
8126
- return _el$164;
8123
+ return _el$165;
8127
8124
  })(), _$memo(() => agentName ? [(() => {
8128
- var _el$180 = _$createElement("span");
8129
- _$insert(_el$180, agentName);
8130
- _$effect((_$p) => _$setProp(_el$180, "style", {
8125
+ var _el$181 = _$createElement("span");
8126
+ _$insert(_el$181, agentName);
8127
+ _$effect((_$p) => _$setProp(_el$181, "style", {
8131
8128
  fg: agentColor(meta?.color, theme()),
8132
8129
  bold: true
8133
8130
  }, _$p));
8134
- return _el$180;
8131
+ return _el$181;
8135
8132
  })(), _$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", {
8133
+ var _el$182 = _$createElement("span"), _el$183 = _$createTextNode(` (`), _el$184 = _$createTextNode(`)`);
8134
+ _$insertNode(_el$182, _el$183);
8135
+ _$insertNode(_el$182, _el$184);
8136
+ _$insert(_el$182, () => meta.mode, _el$184);
8137
+ _$effect((_$p) => _$setProp(_el$182, "style", {
8141
8138
  fg: theme().textMuted
8142
8139
  }, _$p));
8143
- return _el$181;
8140
+ return _el$182;
8144
8141
  })())] : goal().parentAgent ? [(() => {
8145
- var _el$184 = _$createElement("span");
8146
- _$insertNode(_el$184, _$createTextNode(`\u21A9 `));
8147
- _$effect((_$p) => _$setProp(_el$184, "style", {
8142
+ var _el$185 = _$createElement("span");
8143
+ _$insertNode(_el$185, _$createTextNode(`\u21A9 `));
8144
+ _$effect((_$p) => _$setProp(_el$185, "style", {
8148
8145
  fg: theme().textMuted
8149
8146
  }, _$p));
8150
- return _el$184;
8147
+ return _el$185;
8151
8148
  })(), (() => {
8152
- var _el$186 = _$createElement("span");
8153
- _$insert(_el$186, () => goal().parentAgent);
8154
- _$effect((_$p) => _$setProp(_el$186, "style", {
8149
+ var _el$187 = _$createElement("span");
8150
+ _$insert(_el$187, () => goal().parentAgent);
8151
+ _$effect((_$p) => _$setProp(_el$187, "style", {
8155
8152
  fg: theme().text,
8156
8153
  bold: true
8157
8154
  }, _$p));
8158
- return _el$186;
8155
+ return _el$187;
8159
8156
  })(), (() => {
8160
- var _el$187 = _$createElement("span");
8161
- _$insertNode(_el$187, _$createTextNode(` (parent)`));
8162
- _$effect((_$p) => _$setProp(_el$187, "style", {
8157
+ var _el$188 = _$createElement("span");
8158
+ _$insertNode(_el$188, _$createTextNode(` (parent)`));
8159
+ _$effect((_$p) => _$setProp(_el$188, "style", {
8163
8160
  fg: theme().textMuted
8164
8161
  }, _$p));
8165
- return _el$187;
8162
+ return _el$188;
8166
8163
  })()] : (() => {
8167
- var _el$189 = _$createElement("span");
8168
- _$insertNode(_el$189, _$createTextNode(`parent`));
8169
- _$effect((_$p) => _$setProp(_el$189, "style", {
8164
+ var _el$190 = _$createElement("span");
8165
+ _$insertNode(_el$190, _$createTextNode(`parent`));
8166
+ _$effect((_$p) => _$setProp(_el$190, "style", {
8170
8167
  fg: theme().textMuted
8171
8168
  }, _$p));
8172
- return _el$189;
8169
+ return _el$190;
8173
8170
  })()), (() => {
8174
- var _el$166 = _$createElement("span");
8175
- _$insertNode(_el$166, _$createTextNode(` \u2502 \uD83E\uDDE0 `));
8176
- _$effect((_$p) => _$setProp(_el$166, "style", {
8171
+ var _el$167 = _$createElement("span");
8172
+ _$insertNode(_el$167, _$createTextNode(` \u2502 \uD83E\uDDE0 `));
8173
+ _$effect((_$p) => _$setProp(_el$167, "style", {
8177
8174
  fg: theme().textMuted
8178
8175
  }, _$p));
8179
- return _el$166;
8176
+ return _el$167;
8180
8177
  })(), (() => {
8181
- var _el$168 = _$createElement("span");
8182
- _$insertNode(_el$168, _$createTextNode(`Model: `));
8183
- _$effect((_$p) => _$setProp(_el$168, "style", {
8178
+ var _el$169 = _$createElement("span");
8179
+ _$insertNode(_el$169, _$createTextNode(`Model: `));
8180
+ _$effect((_$p) => _$setProp(_el$169, "style", {
8184
8181
  fg: theme().primary,
8185
8182
  bold: true
8186
8183
  }, _$p));
8187
- return _el$168;
8184
+ return _el$169;
8188
8185
  })(), _$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", {
8186
+ var _el$192 = _$createElement("span"), _el$193 = _$createTextNode(`/`);
8187
+ _$insertNode(_el$192, _el$193);
8188
+ _$insert(_el$192, () => model.slice(0, slash), _el$193);
8189
+ _$effect((_$p) => _$setProp(_el$192, "style", {
8193
8190
  fg: theme().textMuted
8194
8191
  }, _$p));
8195
- return _el$191;
8192
+ return _el$192;
8196
8193
  })(), (() => {
8197
- var _el$193 = _$createElement("span");
8198
- _$insert(_el$193, () => model.slice(slash + 1));
8199
- _$effect((_$p) => _$setProp(_el$193, "style", {
8194
+ var _el$194 = _$createElement("span");
8195
+ _$insert(_el$194, () => model.slice(slash + 1));
8196
+ _$effect((_$p) => _$setProp(_el$194, "style", {
8200
8197
  fg: theme().info,
8201
8198
  bold: true
8202
8199
  }, _$p));
8203
- return _el$193;
8200
+ return _el$194;
8204
8201
  })()] : goal().parentModel ? [(() => {
8205
- var _el$194 = _$createElement("span");
8206
- _$insertNode(_el$194, _$createTextNode(`\u21A9 `));
8207
- _$effect((_$p) => _$setProp(_el$194, "style", {
8202
+ var _el$195 = _$createElement("span");
8203
+ _$insertNode(_el$195, _$createTextNode(`\u21A9 `));
8204
+ _$effect((_$p) => _$setProp(_el$195, "style", {
8208
8205
  fg: theme().textMuted
8209
8206
  }, _$p));
8210
- return _el$194;
8207
+ return _el$195;
8211
8208
  })(), (() => {
8212
- var _el$196 = _$createElement("span");
8213
- _$insert(_el$196, () => goal().parentModel);
8214
- _$effect((_$p) => _$setProp(_el$196, "style", {
8209
+ var _el$197 = _$createElement("span");
8210
+ _$insert(_el$197, () => goal().parentModel);
8211
+ _$effect((_$p) => _$setProp(_el$197, "style", {
8215
8212
  fg: theme().info,
8216
8213
  bold: true
8217
8214
  }, _$p));
8218
- return _el$196;
8215
+ return _el$197;
8219
8216
  })(), (() => {
8220
- var _el$197 = _$createElement("span");
8221
- _$insertNode(_el$197, _$createTextNode(` (parent)`));
8222
- _$effect((_$p) => _$setProp(_el$197, "style", {
8217
+ var _el$198 = _$createElement("span");
8218
+ _$insertNode(_el$198, _$createTextNode(` (parent)`));
8219
+ _$effect((_$p) => _$setProp(_el$198, "style", {
8223
8220
  fg: theme().textMuted
8224
8221
  }, _$p));
8225
- return _el$197;
8222
+ return _el$198;
8226
8223
  })()] : (() => {
8227
- var _el$199 = _$createElement("span");
8228
- _$insertNode(_el$199, _$createTextNode(`parent`));
8229
- _$effect((_$p) => _$setProp(_el$199, "style", {
8224
+ var _el$200 = _$createElement("span");
8225
+ _$insertNode(_el$200, _$createTextNode(`parent`));
8226
+ _$effect((_$p) => _$setProp(_el$200, "style", {
8230
8227
  fg: theme().textMuted
8231
8228
  }, _$p));
8232
- return _el$199;
8229
+ return _el$200;
8233
8230
  })()), (() => {
8234
- var _el$170 = _$createElement("span");
8235
- _$insertNode(_el$170, _$createTextNode(` \u2502 \uD83D\uDCB0 `));
8236
- _$effect((_$p) => _$setProp(_el$170, "style", {
8231
+ var _el$171 = _$createElement("span");
8232
+ _$insertNode(_el$171, _$createTextNode(` \u2502 \uD83D\uDCB0 `));
8233
+ _$effect((_$p) => _$setProp(_el$171, "style", {
8237
8234
  fg: theme().textMuted
8238
8235
  }, _$p));
8239
- return _el$170;
8236
+ return _el$171;
8240
8237
  })(), (() => {
8241
- var _el$172 = _$createElement("span");
8242
- _$insertNode(_el$172, _$createTextNode(`Spent: `));
8243
- _$effect((_$p) => _$setProp(_el$172, "style", {
8238
+ var _el$173 = _$createElement("span");
8239
+ _$insertNode(_el$173, _$createTextNode(`Spent: `));
8240
+ _$effect((_$p) => _$setProp(_el$173, "style", {
8244
8241
  fg: theme().primary,
8245
8242
  bold: true
8246
8243
  }, _$p));
8247
- return _el$172;
8244
+ return _el$173;
8248
8245
  })(), (() => {
8249
- var _el$174 = _$createElement("span");
8250
- _$insert(_el$174, () => formatCost(goal().costUsed));
8251
- _$effect((_$p) => _$setProp(_el$174, "style", {
8246
+ var _el$175 = _$createElement("span");
8247
+ _$insert(_el$175, () => formatCost(goal().costUsed));
8248
+ _$effect((_$p) => _$setProp(_el$175, "style", {
8252
8249
  fg: theme().success,
8253
8250
  bold: true
8254
8251
  }, _$p));
8255
- return _el$174;
8252
+ return _el$175;
8256
8253
  })(), (() => {
8257
- var _el$175 = _$createElement("span");
8258
- _$insertNode(_el$175, _$createTextNode(` \xB7 `));
8259
- _$effect((_$p) => _$setProp(_el$175, "style", {
8254
+ var _el$176 = _$createElement("span");
8255
+ _$insertNode(_el$176, _$createTextNode(` \xB7 `));
8256
+ _$effect((_$p) => _$setProp(_el$176, "style", {
8260
8257
  fg: theme().textMuted
8261
8258
  }, _$p));
8262
- return _el$175;
8259
+ return _el$176;
8263
8260
  })(), (() => {
8264
- var _el$177 = _$createElement("span");
8265
- _$insert(_el$177, () => formatTokens(goal().tokensUsed));
8266
- _$effect((_$p) => _$setProp(_el$177, "style", {
8261
+ var _el$178 = _$createElement("span");
8262
+ _$insert(_el$178, () => formatTokens(goal().tokensUsed));
8263
+ _$effect((_$p) => _$setProp(_el$178, "style", {
8267
8264
  fg: theme().warning,
8268
8265
  bold: true
8269
8266
  }, _$p));
8270
- return _el$177;
8267
+ return _el$178;
8271
8268
  })(), (() => {
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", {
8269
+ var _el$179 = _$createElement("span"), _el$180 = _$createTextNode(` tokens \xB7 `);
8270
+ _$insertNode(_el$179, _el$180);
8271
+ _$insert(_el$179, () => formatDuration(goal().timeUsedSeconds), null);
8272
+ _$effect((_$p) => _$setProp(_el$179, "style", {
8276
8273
  fg: theme().textMuted
8277
8274
  }, _$p));
8278
- return _el$178;
8275
+ return _el$179;
8279
8276
  })()];
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(`
8277
+ }, _el$146);
8278
+ _$insertNode(_el$147, _$createTextNode(`\uD83C\uDFAF Target: `));
8279
+ _$insert(_el$149, () => goal().objective.slice(0, 160));
8280
+ _$insert(_el$137, (() => {
8281
+ var _c$6 = _$memo(() => !!lp());
8282
+ return () => _c$6() && [(() => {
8283
+ var _el$202 = _$createElement("span"), _el$203 = _$createTextNode(`
8287
8284
  \u2714 `);
8288
- _$insertNode(_el$201, _el$202);
8289
- _$effect((_$p) => _$setProp(_el$201, "style", {
8285
+ _$insertNode(_el$202, _el$203);
8286
+ _$effect((_$p) => _$setProp(_el$202, "style", {
8290
8287
  fg: theme().success
8291
8288
  }, _$p));
8292
- return _el$201;
8289
+ return _el$202;
8293
8290
  })(), (() => {
8294
- var _el$204 = _$createElement("span");
8295
- _$insertNode(_el$204, _$createTextNode(`Progress: `));
8296
- _$effect((_$p) => _$setProp(_el$204, "style", {
8291
+ var _el$205 = _$createElement("span");
8292
+ _$insertNode(_el$205, _$createTextNode(`Progress: `));
8293
+ _$effect((_$p) => _$setProp(_el$205, "style", {
8297
8294
  fg: theme().success,
8298
8295
  bold: true
8299
8296
  }, _$p));
8300
- return _el$204;
8297
+ return _el$205;
8301
8298
  })(), (() => {
8302
- var _el$206 = _$createElement("span");
8303
- _$insert(_el$206, () => lp().summary.slice(0, 100));
8304
- _$effect((_$p) => _$setProp(_el$206, "style", {
8299
+ var _el$207 = _$createElement("span");
8300
+ _$insert(_el$207, () => lp().summary.slice(0, 100));
8301
+ _$effect((_$p) => _$setProp(_el$207, "style", {
8305
8302
  fg: theme().text
8306
8303
  }, _$p));
8307
- return _el$206;
8304
+ return _el$207;
8308
8305
  })(), (() => {
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", {
8306
+ var _el$208 = _$createElement("span"), _el$209 = _$createTextNode(` \u2192 `);
8307
+ _$insertNode(_el$208, _el$209);
8308
+ _$insert(_el$208, () => lp().next?.slice(0, 60) || "", null);
8309
+ _$effect((_$p) => _$setProp(_el$208, "style", {
8313
8310
  fg: theme().textMuted
8314
8311
  }, _$p));
8315
- return _el$207;
8312
+ return _el$208;
8316
8313
  })()];
8317
8314
  })(), null);
8318
- _$insert(_el$136, (() => {
8319
- var _c$15 = _$memo(() => !!blk());
8320
- return () => _c$15() && [(() => {
8321
- var _el$209 = _$createElement("span"), _el$210 = _$createTextNode(`
8315
+ _$insert(_el$137, (() => {
8316
+ var _c$7 = _$memo(() => !!blk());
8317
+ return () => _c$7() && [(() => {
8318
+ var _el$210 = _$createElement("span"), _el$211 = _$createTextNode(`
8322
8319
  \u2716 Blocked: `);
8323
- _$insertNode(_el$209, _el$210);
8324
- _$effect((_$p) => _$setProp(_el$209, "style", {
8320
+ _$insertNode(_el$210, _el$211);
8321
+ _$effect((_$p) => _$setProp(_el$210, "style", {
8325
8322
  fg: theme().error,
8326
8323
  bold: true
8327
8324
  }, _$p));
8328
- return _el$209;
8325
+ return _el$210;
8329
8326
  })(), (() => {
8330
- var _el$212 = _$createElement("span");
8331
- _$insert(_el$212, () => blk().reason.slice(0, 140));
8332
- _$effect((_$p) => _$setProp(_el$212, "style", {
8327
+ var _el$213 = _$createElement("span");
8328
+ _$insert(_el$213, () => blk().reason.slice(0, 140));
8329
+ _$effect((_$p) => _$setProp(_el$213, "style", {
8333
8330
  fg: theme().error
8334
8331
  }, _$p));
8335
- return _el$212;
8332
+ return _el$213;
8336
8333
  })(), (() => {
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", {
8334
+ var _el$214 = _$createElement("span"), _el$215 = _$createTextNode(` \u2014 `);
8335
+ _$insertNode(_el$214, _el$215);
8336
+ _$insert(_el$214, () => blk().needed.slice(0, 60), null);
8337
+ _$effect((_$p) => _$setProp(_el$214, "style", {
8341
8338
  fg: theme().textMuted
8342
8339
  }, _$p));
8343
- return _el$213;
8340
+ return _el$214;
8344
8341
  })()];
8345
8342
  })(), 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(`
8343
+ _$insert(_el$137, (() => {
8344
+ var _c$8 = _$memo(() => !!goal().config.artifactDir);
8345
+ return () => _c$8() && [(() => {
8346
+ var _el$216 = _$createElement("span"), _el$217 = _$createTextNode(`
8350
8347
  \uD83D\uDCC1 `);
8351
- _$insertNode(_el$215, _el$216);
8352
- _$effect((_$p) => _$setProp(_el$215, "style", {
8348
+ _$insertNode(_el$216, _el$217);
8349
+ _$effect((_$p) => _$setProp(_el$216, "style", {
8353
8350
  fg: theme().accent
8354
8351
  }, _$p));
8355
- return _el$215;
8352
+ return _el$216;
8356
8353
  })(), (() => {
8357
- var _el$218 = _$createElement("span");
8358
- _$insertNode(_el$218, _$createTextNode(`Artifacts: `));
8359
- _$effect((_$p) => _$setProp(_el$218, "style", {
8354
+ var _el$219 = _$createElement("span");
8355
+ _$insertNode(_el$219, _$createTextNode(`Artifacts: `));
8356
+ _$effect((_$p) => _$setProp(_el$219, "style", {
8360
8357
  fg: theme().accent,
8361
8358
  bold: true
8362
8359
  }, _$p));
8363
- return _el$218;
8360
+ return _el$219;
8364
8361
  })(), (() => {
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", {
8362
+ var _el$221 = _$createElement("span");
8363
+ _$insert(_el$221, () => String(goal().config.artifactDir).replace(String(props.directory), "."));
8364
+ _$effect((_$p) => _$setProp(_el$221, "style", {
8368
8365
  fg: theme().textMuted
8369
8366
  }, _$p));
8370
- return _el$220;
8367
+ return _el$221;
8371
8368
  })()];
8372
8369
  })(), 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(`
8370
+ _$insert(_el$137, (() => {
8371
+ var _c$9 = _$memo(() => !!goal().workerTopology);
8372
+ return () => _c$9() && [(() => {
8373
+ var _el$222 = _$createElement("span"), _el$223 = _$createTextNode(`
8377
8374
  \uD83C\uDF3F Worker: `);
8378
- _$insertNode(_el$221, _el$222);
8379
- _$effect((_$p) => _$setProp(_el$221, "style", {
8375
+ _$insertNode(_el$222, _el$223);
8376
+ _$effect((_$p) => _$setProp(_el$222, "style", {
8380
8377
  fg: theme().textMuted
8381
8378
  }, _$p));
8382
- return _el$221;
8379
+ return _el$222;
8383
8380
  })(), (() => {
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";
8381
+ var _el$225 = _$createElement("span");
8382
+ _$insert(_el$225, (() => {
8383
+ var _c$17 = _$memo(() => goal().workerTopology === "v2-native-child");
8384
+ return () => _c$17() ? "native child" : goal().workerTopology === "v2-root-fallback" ? "root fallback" : "v1 child";
8388
8385
  })());
8389
- _$effect((_$p) => _$setProp(_el$224, "style", {
8386
+ _$effect((_$p) => _$setProp(_el$225, "style", {
8390
8387
  fg: theme().text
8391
8388
  }, _$p));
8392
- return _el$224;
8389
+ return _el$225;
8393
8390
  })(), _$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", {
8391
+ var _el$226 = _$createElement("span"), _el$227 = _$createTextNode(` of `), _el$228 = _$createTextNode(`\u2026`);
8392
+ _$insertNode(_el$226, _el$227);
8393
+ _$insertNode(_el$226, _el$228);
8394
+ _$insert(_el$226, () => goal().nativeParentID.slice(0, 12), _el$228);
8395
+ _$effect((_$p) => _$setProp(_el$226, "style", {
8399
8396
  fg: theme().textMuted
8400
8397
  }, _$p));
8401
- return _el$225;
8398
+ return _el$226;
8402
8399
  })() : null)];
8403
8400
  })(), 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(`
8401
+ _$insert(_el$137, (() => {
8402
+ var _c$0 = _$memo(() => goal().interactive === true);
8403
+ return () => _c$0() && [(() => {
8404
+ var _el$229 = _$createElement("span"), _el$230 = _$createTextNode(`
8408
8405
  \u270B Manual: `);
8409
- _$insertNode(_el$228, _el$229);
8410
- _$effect((_$p) => _$setProp(_el$228, "style", {
8406
+ _$insertNode(_el$229, _el$230);
8407
+ _$effect((_$p) => _$setProp(_el$229, "style", {
8411
8408
  fg: theme().accent,
8412
8409
  bold: true
8413
8410
  }, _$p));
8414
- return _el$228;
8411
+ return _el$229;
8415
8412
  })(), (() => {
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", {
8413
+ var _el$232 = _$createElement("span");
8414
+ _$insertNode(_el$232, _$createTextNode(`engine never starts turns \u2014 steer with :send/nudge (:interactive to re-enable auto)`));
8415
+ _$effect((_$p) => _$setProp(_el$232, "style", {
8419
8416
  fg: theme().textMuted
8420
8417
  }, _$p));
8421
- return _el$231;
8418
+ return _el$232;
8422
8419
  })()];
8423
8420
  })(), 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(`
8421
+ _$insert(_el$137, (() => {
8422
+ var _c$1 = _$memo(() => !!goal().config.model);
8423
+ return () => _c$1() && [(() => {
8424
+ var _el$234 = _$createElement("span"), _el$235 = _$createTextNode(`
8428
8425
  \uD83E\uDDE0 Model: `);
8429
- _$insertNode(_el$233, _el$234);
8430
- _$effect((_$p) => _$setProp(_el$233, "style", {
8426
+ _$insertNode(_el$234, _el$235);
8427
+ _$effect((_$p) => _$setProp(_el$234, "style", {
8431
8428
  fg: theme().info,
8432
8429
  bold: true
8433
8430
  }, _$p));
8434
- return _el$233;
8431
+ return _el$234;
8435
8432
  })(), (() => {
8436
- var _el$236 = _$createElement("span");
8437
- _$insert(_el$236, () => goal().config.model);
8438
- _$effect((_$p) => _$setProp(_el$236, "style", {
8433
+ var _el$237 = _$createElement("span");
8434
+ _$insert(_el$237, () => goal().config.model);
8435
+ _$effect((_$p) => _$setProp(_el$237, "style", {
8439
8436
  fg: theme().text
8440
8437
  }, _$p));
8441
- return _el$236;
8438
+ return _el$237;
8442
8439
  })(), _$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", {
8440
+ var _el$238 = _$createElement("span"), _el$239 = _$createTextNode(` \u2192 pending `), _el$240 = _$createTextNode(` (applies next turn)`);
8441
+ _$insertNode(_el$238, _el$239);
8442
+ _$insertNode(_el$238, _el$240);
8443
+ _$insert(_el$238, () => goal().modelSwitch?.pending?.model, _el$240);
8444
+ _$effect((_$p) => _$setProp(_el$238, "style", {
8448
8445
  fg: theme().warning
8449
8446
  }, _$p));
8450
- return _el$237;
8447
+ return _el$238;
8448
+ })() : null)];
8449
+ })(), null);
8450
+ _$insert(_el$137, (() => {
8451
+ var _c$10 = _$memo(() => !!goal().config.agent);
8452
+ return () => _c$10() && [(() => {
8453
+ var _el$241 = _$createElement("span"), _el$242 = _$createTextNode(`
8454
+ \uD83E\uDD16 Agent: `);
8455
+ _$insertNode(_el$241, _el$242);
8456
+ _$effect((_$p) => _$setProp(_el$241, "style", {
8457
+ fg: theme().info,
8458
+ bold: true
8459
+ }, _$p));
8460
+ return _el$241;
8461
+ })(), (() => {
8462
+ var _el$244 = _$createElement("span");
8463
+ _$insert(_el$244, () => goal().config.agent);
8464
+ _$effect((_$p) => _$setProp(_el$244, "style", {
8465
+ fg: theme().text
8466
+ }, _$p));
8467
+ return _el$244;
8468
+ })(), _$memo(() => _$memo(() => !!goal().agentSwitch?.pending)() ? (() => {
8469
+ var _el$245 = _$createElement("span"), _el$246 = _$createTextNode(` \u2192 pending `), _el$247 = _$createTextNode(` (applies next turn)`);
8470
+ _$insertNode(_el$245, _el$246);
8471
+ _$insertNode(_el$245, _el$247);
8472
+ _$insert(_el$245, () => goal().agentSwitch?.pending?.agent, _el$247);
8473
+ _$effect((_$p) => _$setProp(_el$245, "style", {
8474
+ fg: theme().warning
8475
+ }, _$p));
8476
+ return _el$245;
8451
8477
  })() : null)];
8452
8478
  })(), 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(`
8479
+ _$insert(_el$137, (() => {
8480
+ var _c$11 = _$memo(() => (goal().config.checks?.length ?? 0) > 0);
8481
+ return () => _c$11() ? [(() => {
8482
+ var _el$248 = _$createElement("span"), _el$249 = _$createTextNode(`
8457
8483
  \u25A3 `);
8458
- _$insertNode(_el$240, _el$241);
8459
- _$effect((_$p) => _$setProp(_el$240, "style", {
8484
+ _$insertNode(_el$248, _el$249);
8485
+ _$effect((_$p) => _$setProp(_el$248, "style", {
8460
8486
  fg: theme().warning
8461
8487
  }, _$p));
8462
- return _el$240;
8488
+ return _el$248;
8463
8489
  })(), (() => {
8464
- var _el$243 = _$createElement("span");
8465
- _$insertNode(_el$243, _$createTextNode(`Checks: `));
8466
- _$effect((_$p) => _$setProp(_el$243, "style", {
8490
+ var _el$251 = _$createElement("span");
8491
+ _$insertNode(_el$251, _$createTextNode(`Checks: `));
8492
+ _$effect((_$p) => _$setProp(_el$251, "style", {
8467
8493
  fg: theme().warning,
8468
8494
  bold: true
8469
8495
  }, _$p));
8470
- return _el$243;
8496
+ return _el$251;
8471
8497
  })(), (() => {
8472
- var _el$245 = _$createElement("span");
8473
- _$insert(_el$245, () => goal().config.checks.join(", ").slice(0, 100));
8474
- _$effect((_$p) => _$setProp(_el$245, "style", {
8498
+ var _el$253 = _$createElement("span");
8499
+ _$insert(_el$253, () => goal().config.checks.join(", ").slice(0, 100));
8500
+ _$effect((_$p) => _$setProp(_el$253, "style", {
8475
8501
  fg: theme().textMuted
8476
8502
  }, _$p));
8477
- return _el$245;
8503
+ return _el$253;
8478
8504
  })()] : null;
8479
8505
  })(), 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(`
8506
+ _$insert(_el$137, (() => {
8507
+ var _c$12 = _$memo(() => rt()?.evaluatorRejectionCount > 0);
8508
+ return () => _c$12() && [(() => {
8509
+ var _el$254 = _$createElement("span"), _el$255 = _$createTextNode(`
8484
8510
  \u26A0 rejections: `);
8485
- _$insertNode(_el$246, _el$247);
8486
- _$effect((_$p) => _$setProp(_el$246, "style", {
8511
+ _$insertNode(_el$254, _el$255);
8512
+ _$effect((_$p) => _$setProp(_el$254, "style", {
8487
8513
  fg: theme().warning
8488
8514
  }, _$p));
8489
- return _el$246;
8515
+ return _el$254;
8490
8516
  })(), (() => {
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", {
8517
+ var _el$257 = _$createElement("span"), _el$258 = _$createTextNode(` \u2014 `);
8518
+ _$insertNode(_el$257, _el$258);
8519
+ _$insert(_el$257, () => String(rt().evaluatorRejectionCount), _el$258);
8520
+ _$insert(_el$257, () => String(rt().lastRejectionDetails || "").slice(0, 80), null);
8521
+ _$effect((_$p) => _$setProp(_el$257, "style", {
8496
8522
  fg: theme().warning
8497
8523
  }, _$p));
8498
- return _el$249;
8524
+ return _el$257;
8499
8525
  })()];
8500
8526
  })(), 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(`
8527
+ _$insert(_el$137, (() => {
8528
+ var _c$13 = _$memo(() => rt()?.unknownStatusCount > 0);
8529
+ return () => _c$13() && [(() => {
8530
+ var _el$259 = _$createElement("span"), _el$260 = _$createTextNode(`
8505
8531
  \u26A0\uFE0F unreachable: `);
8506
- _$insertNode(_el$251, _el$252);
8507
- _$effect((_$p) => _$setProp(_el$251, "style", {
8532
+ _$insertNode(_el$259, _el$260);
8533
+ _$effect((_$p) => _$setProp(_el$259, "style", {
8508
8534
  fg: theme().error
8509
8535
  }, _$p));
8510
- return _el$251;
8536
+ return _el$259;
8511
8537
  })(), (() => {
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", {
8538
+ var _el$262 = _$createElement("span"), _el$263 = _$createTextNode(`/3`);
8539
+ _$insertNode(_el$262, _el$263);
8540
+ _$insert(_el$262, () => String(rt().unknownStatusCount), _el$263);
8541
+ _$effect((_$p) => _$setProp(_el$262, "style", {
8516
8542
  fg: theme().error
8517
8543
  }, _$p));
8518
- return _el$254;
8544
+ return _el$262;
8519
8545
  })(), (() => {
8520
- var _el$256 = _$createElement("span");
8521
- _$insertNode(_el$256, _$createTextNode(` \u2014 nudge to recover`));
8522
- _$effect((_$p) => _$setProp(_el$256, "style", {
8546
+ var _el$264 = _$createElement("span");
8547
+ _$insertNode(_el$264, _$createTextNode(` \u2014 nudge to recover`));
8548
+ _$effect((_$p) => _$setProp(_el$264, "style", {
8523
8549
  fg: theme().textMuted
8524
8550
  }, _$p));
8525
- return _el$256;
8551
+ return _el$264;
8526
8552
  })()];
8527
8553
  })(), 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(`
8554
+ _$insert(_el$137, (() => {
8555
+ var _c$14 = _$memo(() => !!rt()?.retryAfter);
8556
+ return () => _c$14() && [(() => {
8557
+ var _el$266 = _$createElement("span"), _el$267 = _$createTextNode(`
8532
8558
  \u21BB retry in: `);
8533
- _$insertNode(_el$258, _el$259);
8534
- _$effect((_$p) => _$setProp(_el$258, "style", {
8559
+ _$insertNode(_el$266, _el$267);
8560
+ _$effect((_$p) => _$setProp(_el$266, "style", {
8535
8561
  fg: theme().accent
8536
8562
  }, _$p));
8537
- return _el$258;
8563
+ return _el$266;
8538
8564
  })(), (() => {
8539
- var _el$261 = _$createElement("span");
8540
- _$insert(_el$261, () => countdownLabel(rt().retryAfter, clock()));
8541
- _$effect((_$p) => _$setProp(_el$261, "style", {
8565
+ var _el$269 = _$createElement("span");
8566
+ _$insert(_el$269, () => countdownLabel(rt().retryAfter, clock()));
8567
+ _$effect((_$p) => _$setProp(_el$269, "style", {
8542
8568
  fg: theme().accent
8543
8569
  }, _$p));
8544
- return _el$261;
8570
+ return _el$269;
8545
8571
  })()];
8546
8572
  })(), 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(`
8573
+ _$insert(_el$137, (() => {
8574
+ var _c$15 = _$memo(() => !!rt()?.nextRunAt);
8575
+ return () => _c$15() && [(() => {
8576
+ var _el$270 = _$createElement("span"), _el$271 = _$createTextNode(`
8551
8577
  \u23F0 next run: `);
8552
- _$insertNode(_el$262, _el$263);
8553
- _$effect((_$p) => _$setProp(_el$262, "style", {
8578
+ _$insertNode(_el$270, _el$271);
8579
+ _$effect((_$p) => _$setProp(_el$270, "style", {
8554
8580
  fg: theme().accent
8555
8581
  }, _$p));
8556
- return _el$262;
8582
+ return _el$270;
8557
8583
  })(), (() => {
8558
- var _el$265 = _$createElement("span");
8559
- _$insert(_el$265, () => countdownLabel(rt().nextRunAt, clock()));
8560
- _$effect((_$p) => _$setProp(_el$265, "style", {
8584
+ var _el$273 = _$createElement("span");
8585
+ _$insert(_el$273, () => countdownLabel(rt().nextRunAt, clock()));
8586
+ _$effect((_$p) => _$setProp(_el$273, "style", {
8561
8587
  fg: theme().accent
8562
8588
  }, _$p));
8563
- return _el$265;
8589
+ return _el$273;
8564
8590
  })(), (() => {
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", {
8591
+ var _el$274 = _$createElement("span"), _el$275 = _$createTextNode(` (`), _el$276 = _$createTextNode(` runs)`);
8592
+ _$insertNode(_el$274, _el$275);
8593
+ _$insertNode(_el$274, _el$276);
8594
+ _$insert(_el$274, () => String(rt().scheduleRunCount || 0), _el$276);
8595
+ _$effect((_$p) => _$setProp(_el$274, "style", {
8570
8596
  fg: theme().textMuted
8571
8597
  }, _$p));
8572
- return _el$266;
8598
+ return _el$274;
8573
8599
  })()];
8574
8600
  })(), 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(`
8601
+ _$insert(_el$137, (() => {
8602
+ var _c$16 = _$memo(() => !!rt()?.lastError);
8603
+ return () => _c$16() && [(() => {
8604
+ var _el$277 = _$createElement("span"), _el$278 = _$createTextNode(`
8579
8605
  \u26A0 `);
8580
- _$insertNode(_el$269, _el$270);
8581
- _$effect((_$p) => _$setProp(_el$269, "style", {
8606
+ _$insertNode(_el$277, _el$278);
8607
+ _$effect((_$p) => _$setProp(_el$277, "style", {
8582
8608
  fg: theme().error
8583
8609
  }, _$p));
8584
- return _el$269;
8610
+ return _el$277;
8585
8611
  })(), (() => {
8586
- var _el$272 = _$createElement("span");
8587
- _$insertNode(_el$272, _$createTextNode(`Error: `));
8588
- _$effect((_$p) => _$setProp(_el$272, "style", {
8612
+ var _el$280 = _$createElement("span");
8613
+ _$insertNode(_el$280, _$createTextNode(`Error: `));
8614
+ _$effect((_$p) => _$setProp(_el$280, "style", {
8589
8615
  fg: theme().error,
8590
8616
  bold: true
8591
8617
  }, _$p));
8592
- return _el$272;
8618
+ return _el$280;
8593
8619
  })(), (() => {
8594
- var _el$274 = _$createElement("span");
8595
- _$insert(_el$274, () => rt().lastError.slice(0, 120));
8596
- _$effect((_$p) => _$setProp(_el$274, "style", {
8620
+ var _el$282 = _$createElement("span");
8621
+ _$insert(_el$282, () => rt().lastError.slice(0, 120));
8622
+ _$effect((_$p) => _$setProp(_el$282, "style", {
8597
8623
  fg: theme().error
8598
8624
  }, _$p));
8599
- return _el$274;
8625
+ return _el$282;
8600
8626
  })()];
8601
8627
  })(), null);
8602
8628
  _$effect((_p$) => {
8603
- var _v$42 = borderColorForStatus(goal().status, theme()), _v$43 = {
8629
+ var _v$38 = borderColorForStatus(goal().status, theme()), _v$39 = {
8604
8630
  fg: statusColor(goal().status, theme()),
8605
8631
  bold: true
8606
- }, _v$44 = {
8632
+ }, _v$40 = {
8607
8633
  fg: theme().textMuted
8608
- }, _v$45 = {
8634
+ }, _v$41 = {
8609
8635
  fg: statusColor(goal().status, theme())
8610
- }, _v$46 = {
8636
+ }, _v$42 = {
8611
8637
  fg: theme().textMuted
8612
- }, _v$47 = {
8638
+ }, _v$43 = {
8613
8639
  fg: theme().primary,
8614
8640
  bold: true
8615
- }, _v$48 = {
8641
+ }, _v$44 = {
8616
8642
  fg: theme().text
8617
8643
  };
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));
8644
+ _v$38 !== _p$.e && (_p$.e = _$setProp(_el$136, "borderColor", _v$38, _p$.e));
8645
+ _v$39 !== _p$.t && (_p$.t = _$setProp(_el$138, "style", _v$39, _p$.t));
8646
+ _v$40 !== _p$.a && (_p$.a = _$setProp(_el$140, "style", _v$40, _p$.a));
8647
+ _v$41 !== _p$.o && (_p$.o = _$setProp(_el$142, "style", _v$41, _p$.o));
8648
+ _v$42 !== _p$.i && (_p$.i = _$setProp(_el$145, "style", _v$42, _p$.i));
8649
+ _v$43 !== _p$.n && (_p$.n = _$setProp(_el$147, "style", _v$43, _p$.n));
8650
+ _v$44 !== _p$.s && (_p$.s = _$setProp(_el$149, "style", _v$44, _p$.s));
8625
8651
  return _p$;
8626
8652
  }, {
8627
8653
  e: undefined,
@@ -8632,13 +8658,13 @@ function LoopDashboard(props) {
8632
8658
  n: undefined,
8633
8659
  s: undefined
8634
8660
  });
8635
- return _el$135;
8661
+ return _el$136;
8636
8662
  })();
8637
8663
  }
8638
8664
  })];
8639
8665
  }
8640
8666
  }), null);
8641
- _$insert(_el$39, _$createComponent(Show, {
8667
+ _$insert(_el$42, _$createComponent(Show, {
8642
8668
  get when() {
8643
8669
  return tab() === "commands";
8644
8670
  },
@@ -8649,94 +8675,94 @@ function LoopDashboard(props) {
8649
8675
  },
8650
8676
  get fallback() {
8651
8677
  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.`));
8678
+ var _el$283 = _$createElement("box"), _el$284 = _$createElement("text"), _el$285 = _$createElement("span"), _el$286 = _$createTextNode(`No live command sessions`), _el$287 = _$createTextNode(`. `), _el$288 = _$createElement("span"), _el$290 = _$createElement("span"), _el$291 = _$createTextNode(` to start one`), _el$292 = _$createElement("text"), _el$293 = _$createElement("span"), _el$295 = _$createElement("span"), _el$297 = _$createElement("span"), _el$299 = _$createElement("span"), _el$301 = _$createElement("span"), _el$303 = _$createElement("span"), _el$305 = _$createElement("span");
8679
+ _$insertNode(_el$283, _el$284);
8680
+ _$insertNode(_el$283, _el$292);
8681
+ _$setProp(_el$283, "flexDirection", "column");
8682
+ _$setProp(_el$283, "gap", 1);
8683
+ _$setProp(_el$283, "padding", 1);
8684
+ _$insertNode(_el$284, _el$285);
8685
+ _$insertNode(_el$284, _el$288);
8686
+ _$insertNode(_el$284, _el$290);
8687
+ _$insertNode(_el$285, _el$286);
8688
+ _$insertNode(_el$285, _el$287);
8689
+ _$insert(_el$285, (() => {
8690
+ var _c$18 = _$memo(() => hiddenFinishedCommands() > 0);
8691
+ return () => _c$18() ? ` \u2014 ${hiddenFinishedCommands()} finished hidden` : "";
8692
+ })(), _el$287);
8693
+ _$insertNode(_el$288, _$createTextNode(`:new &lt;command&gt;`));
8694
+ _$insertNode(_el$290, _el$291);
8695
+ _$insert(_el$290, () => hiddenFinishedCommands() > 0 ? ", or " : "; ", null);
8696
+ _$insert(_el$284, (() => {
8697
+ var _c$19 = _$memo(() => hiddenFinishedCommands() > 0);
8698
+ return () => _c$19() && (() => {
8699
+ var _el$307 = _$createElement("span"), _el$308 = _$createElement("span"), _el$310 = _$createElement("span");
8700
+ _$insertNode(_el$307, _el$308);
8701
+ _$insertNode(_el$307, _el$310);
8702
+ _$insertNode(_el$308, _$createTextNode(`c`));
8703
+ _$insertNode(_el$310, _$createTextNode(` to show finished.`));
8678
8704
  _$effect((_p$) => {
8679
- var _v$59 = {
8705
+ var _v$55 = {
8680
8706
  fg: theme().warning
8681
- }, _v$60 = {
8707
+ }, _v$56 = {
8682
8708
  fg: theme().textMuted
8683
8709
  };
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));
8710
+ _v$55 !== _p$.e && (_p$.e = _$setProp(_el$308, "style", _v$55, _p$.e));
8711
+ _v$56 !== _p$.t && (_p$.t = _$setProp(_el$310, "style", _v$56, _p$.t));
8686
8712
  return _p$;
8687
8713
  }, {
8688
8714
  e: undefined,
8689
8715
  t: undefined
8690
8716
  });
8691
- return _el$299;
8717
+ return _el$307;
8692
8718
  })();
8693
8719
  })(), 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.`));
8720
+ _$insertNode(_el$292, _el$293);
8721
+ _$insertNode(_el$292, _el$295);
8722
+ _$insertNode(_el$292, _el$297);
8723
+ _$insertNode(_el$292, _el$299);
8724
+ _$insertNode(_el$292, _el$301);
8725
+ _$insertNode(_el$292, _el$303);
8726
+ _$insertNode(_el$292, _el$305);
8727
+ _$insertNode(_el$293, _$createTextNode(`Tip: `));
8728
+ _$insertNode(_el$295, _$createTextNode(`o`));
8729
+ _$insertNode(_el$297, _$createTextNode(` fullscreen \xB7 `));
8730
+ _$insertNode(_el$299, _$createTextNode(`X kill \xB7 R restart \xB7 x remove-done`));
8731
+ _$insertNode(_el$301, _$createTextNode(` \xB7 `));
8732
+ _$insertNode(_el$303, _$createTextNode(`:interrupt :terminate :remove`));
8733
+ _$insertNode(_el$305, _$createTextNode(` manage \xB7 text + Enter writes stdin.`));
8708
8734
  _$effect((_p$) => {
8709
- var _v$49 = {
8735
+ var _v$45 = {
8710
8736
  fg: theme().textMuted
8711
- }, _v$50 = {
8737
+ }, _v$46 = {
8712
8738
  fg: theme().warning
8713
- }, _v$51 = {
8739
+ }, _v$47 = {
8714
8740
  fg: theme().textMuted
8715
- }, _v$52 = {
8741
+ }, _v$48 = {
8716
8742
  fg: theme().textMuted
8717
- }, _v$53 = {
8743
+ }, _v$49 = {
8718
8744
  fg: theme().warning
8719
- }, _v$54 = {
8745
+ }, _v$50 = {
8720
8746
  fg: theme().textMuted
8721
- }, _v$55 = {
8747
+ }, _v$51 = {
8722
8748
  fg: theme().warning
8723
- }, _v$56 = {
8749
+ }, _v$52 = {
8724
8750
  fg: theme().textMuted
8725
- }, _v$57 = {
8751
+ }, _v$53 = {
8726
8752
  fg: theme().warning
8727
- }, _v$58 = {
8753
+ }, _v$54 = {
8728
8754
  fg: theme().textMuted
8729
8755
  };
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));
8756
+ _v$45 !== _p$.e && (_p$.e = _$setProp(_el$285, "style", _v$45, _p$.e));
8757
+ _v$46 !== _p$.t && (_p$.t = _$setProp(_el$288, "style", _v$46, _p$.t));
8758
+ _v$47 !== _p$.a && (_p$.a = _$setProp(_el$290, "style", _v$47, _p$.a));
8759
+ _v$48 !== _p$.o && (_p$.o = _$setProp(_el$293, "style", _v$48, _p$.o));
8760
+ _v$49 !== _p$.i && (_p$.i = _$setProp(_el$295, "style", _v$49, _p$.i));
8761
+ _v$50 !== _p$.n && (_p$.n = _$setProp(_el$297, "style", _v$50, _p$.n));
8762
+ _v$51 !== _p$.s && (_p$.s = _$setProp(_el$299, "style", _v$51, _p$.s));
8763
+ _v$52 !== _p$.h && (_p$.h = _$setProp(_el$301, "style", _v$52, _p$.h));
8764
+ _v$53 !== _p$.r && (_p$.r = _$setProp(_el$303, "style", _v$53, _p$.r));
8765
+ _v$54 !== _p$.d && (_p$.d = _$setProp(_el$305, "style", _v$54, _p$.d));
8740
8766
  return _p$;
8741
8767
  }, {
8742
8768
  e: undefined,
@@ -8750,298 +8776,290 @@ function LoopDashboard(props) {
8750
8776
  r: undefined,
8751
8777
  d: undefined
8752
8778
  });
8753
- return _el$275;
8779
+ return _el$283;
8754
8780
  })();
8755
8781
  },
8756
8782
  get children() {
8757
- var _el$44 = _$createElement("scrollbox");
8758
- _$insert(_el$44, _$createComponent(For, {
8759
- get each() {
8760
- return ownerCommands();
8783
+ return _$createComponent(DashboardList, {
8784
+ get count() {
8785
+ return ownerCommands().length;
8761
8786
  },
8762
- children: (cmd, i) => {
8763
- const isActive = () => i() === cmdSelected();
8764
- 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}`;
8782
- })());
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", {
8795
- fg: theme().textMuted
8796
- }, _$p));
8797
- return _el$317;
8798
- })();
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", {
8807
- fg: cmd.exitCode === 0 ? theme().success : theme().error
8808
- }, _$p));
8809
- return _el$319;
8810
- })();
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", {
8819
- fg: theme().warning
8820
- }, _$p));
8821
- return _el$321;
8822
- })();
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", {
8832
- fg: theme().warning,
8833
- bold: true
8834
- }, _$p));
8835
- return _el$323;
8836
- })();
8837
- })(), null);
8838
- _$effect((_p$) => {
8839
- var _v$61 = isActive() ? theme().backgroundElement : undefined, _v$62 = {
8840
- fg: commandStatusColor(cmd.status, theme()),
8841
- bold: isActive()
8842
- }, _v$63 = {
8843
- fg: theme().textMuted
8844
- }, _v$64 = {
8845
- fg: theme().textMuted
8846
- }, _v$65 = {
8847
- fg: commandStatusColor(cmd.status, theme()),
8848
- bold: true
8849
- }, _v$66 = {
8850
- fg: theme().textMuted
8851
- }, _v$67 = {
8852
- fg: theme().accent,
8853
- bold: true
8854
- }, _v$68 = {
8855
- fg: theme().textMuted
8856
- };
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));
8865
- return _p$;
8866
- }, {
8867
- e: undefined,
8868
- t: undefined,
8869
- a: undefined,
8870
- o: undefined,
8871
- i: undefined,
8872
- n: undefined,
8873
- s: undefined,
8874
- h: undefined
8875
- });
8876
- return _el$304;
8877
- })();
8787
+ get selectedID() {
8788
+ return _$memo(() => !!selectedCommand())() ? `loopd-command-${selectedCommand().id}` : undefined;
8789
+ },
8790
+ get children() {
8791
+ return _$createComponent(For, {
8792
+ get each() {
8793
+ return ownerCommands();
8794
+ },
8795
+ children: (cmd, i) => {
8796
+ const isActive = () => i() === cmdSelected();
8797
+ return _$createComponent(DashboardRow, {
8798
+ get id() {
8799
+ return `loopd-command-${cmd.id}`;
8800
+ },
8801
+ get backgroundColor() {
8802
+ return _$memo(() => !!isActive())() ? theme().backgroundElement : undefined;
8803
+ },
8804
+ get children() {
8805
+ return [(() => {
8806
+ var _el$312 = _$createElement("span");
8807
+ _$insert(_el$312, (() => {
8808
+ var _c$20 = _$memo(() => !!isActive());
8809
+ return () => _c$20() ? `\u25B6 ${cmd.title}` : ` ${commandStatusIcon(cmd.status)} ${cmd.title}`;
8810
+ })());
8811
+ _$effect((_$p) => _$setProp(_el$312, "style", {
8812
+ fg: commandStatusColor(cmd.status, theme()),
8813
+ bold: isActive()
8814
+ }, _$p));
8815
+ return _el$312;
8816
+ })(), (() => {
8817
+ var _el$313 = _$createElement("span");
8818
+ _$insertNode(_el$313, _$createTextNode(` \u2502 `));
8819
+ _$effect((_$p) => _$setProp(_el$313, "style", {
8820
+ fg: theme().textMuted
8821
+ }, _$p));
8822
+ return _el$313;
8823
+ })(), (() => {
8824
+ var _el$315 = _$createElement("span");
8825
+ _$insertNode(_el$315, _$createTextNode(`Cmd `));
8826
+ _$effect((_$p) => _$setProp(_el$315, "style", {
8827
+ fg: theme().textMuted
8828
+ }, _$p));
8829
+ return _el$315;
8830
+ })(), (() => {
8831
+ var _el$317 = _$createElement("span");
8832
+ _$insert(_el$317, () => commandStatusLabel(cmd.status).short);
8833
+ _$effect((_$p) => _$setProp(_el$317, "style", {
8834
+ fg: commandStatusColor(cmd.status, theme()),
8835
+ bold: true
8836
+ }, _$p));
8837
+ return _el$317;
8838
+ })(), (() => {
8839
+ var _el$318 = _$createElement("span");
8840
+ _$insertNode(_el$318, _$createTextNode(` \u2502 `));
8841
+ _$effect((_$p) => _$setProp(_el$318, "style", {
8842
+ fg: theme().textMuted
8843
+ }, _$p));
8844
+ return _el$318;
8845
+ })(), (() => {
8846
+ var _el$320 = _$createElement("span");
8847
+ _$insert(_el$320, () => cmd.command);
8848
+ _$effect((_$p) => _$setProp(_el$320, "style", {
8849
+ fg: theme().accent,
8850
+ bold: true
8851
+ }, _$p));
8852
+ return _el$320;
8853
+ })(), _$memo(() => _$memo(() => cmd.args.length > 0)() && (() => {
8854
+ var _el$323 = _$createElement("span"), _el$324 = _$createTextNode(` `);
8855
+ _$insertNode(_el$323, _el$324);
8856
+ _$insert(_el$323, () => cmd.args.join(" ").slice(0, 40), null);
8857
+ _$effect((_$p) => _$setProp(_el$323, "style", {
8858
+ fg: theme().textMuted
8859
+ }, _$p));
8860
+ return _el$323;
8861
+ })()), _$memo(() => _$memo(() => cmd.exitCode !== undefined)() && (() => {
8862
+ var _el$325 = _$createElement("span"), _el$326 = _$createTextNode(` \u2502 exit `);
8863
+ _$insertNode(_el$325, _el$326);
8864
+ _$insert(_el$325, () => cmd.exitCode, null);
8865
+ _$effect((_$p) => _$setProp(_el$325, "style", {
8866
+ fg: cmd.exitCode === 0 ? theme().success : theme().error
8867
+ }, _$p));
8868
+ return _el$325;
8869
+ })()), _$memo(() => _$memo(() => !!cmd.signal)() && (() => {
8870
+ var _el$327 = _$createElement("span"), _el$328 = _$createTextNode(` \u2502 `);
8871
+ _$insertNode(_el$327, _el$328);
8872
+ _$insert(_el$327, () => cmd.signal, null);
8873
+ _$effect((_$p) => _$setProp(_el$327, "style", {
8874
+ fg: theme().warning
8875
+ }, _$p));
8876
+ return _el$327;
8877
+ })()), (() => {
8878
+ var _el$321 = _$createElement("span"), _el$322 = _$createTextNode(` \u2502 `);
8879
+ _$insertNode(_el$321, _el$322);
8880
+ _$insert(_el$321, () => ageLabel(cmd.updatedAt, clock()), null);
8881
+ _$effect((_$p) => _$setProp(_el$321, "style", {
8882
+ fg: theme().textMuted
8883
+ }, _$p));
8884
+ return _el$321;
8885
+ })(), _$memo(() => _$memo(() => !!cmd.truncated)() && (() => {
8886
+ var _el$329 = _$createElement("span");
8887
+ _$insertNode(_el$329, _$createTextNode(` \u2502 \u26A0 truncated`));
8888
+ _$effect((_$p) => _$setProp(_el$329, "style", {
8889
+ fg: theme().warning,
8890
+ bold: true
8891
+ }, _$p));
8892
+ return _el$329;
8893
+ })())];
8894
+ }
8895
+ });
8896
+ }
8897
+ });
8878
8898
  }
8879
- }));
8880
- _$effect((_$p) => _$setProp(_el$44, "height", Math.min(ownerCommands().length, 10), _$p));
8881
- return _el$44;
8899
+ });
8882
8900
  }
8883
8901
  }), _$createComponent(Show, {
8884
8902
  get when() {
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 `));
8906
+ var _el$331 = _$createElement("box"), _el$332 = _$createElement("text"), _el$333 = _$createElement("span"), _el$334 = _$createTextNode(` `), _el$335 = _$createElement("span"), _el$337 = _$createElement("span"), _el$338 = _$createTextNode(` \u2014 `), _el$339 = _$createTextNode(`
8907
+ `), _el$340 = _$createElement("span"), _el$342 = _$createElement("span"), _el$343 = _$createTextNode(`
8908
+ `), _el$344 = _$createElement("span"), _el$346 = _$createElement("span"), _el$348 = _$createElement("span"), _el$349 = _$createTextNode(`
8909
+ `), _el$350 = _$createElement("span"), _el$352 = _$createElement("span"), _el$354 = _$createElement("span"), _el$355 = _$createTextNode(` bytes`), _el$356 = _$createElement("span"), _el$357 = _$createTextNode(` \u2502 updated `), _el$358 = _$createTextNode(`
8910
+ `), _el$359 = _$createElement("span");
8920
8911
  _$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", {
8912
+ _$setProp(_el$331, "flexDirection", "column");
8913
+ _$setProp(_el$331, "border", true);
8914
+ _$setProp(_el$331, "padding", 1);
8915
+ _$setProp(_el$331, "flexShrink", 0);
8916
+ _$setProp(_el$331, "maxHeight", 8);
8917
+ _$insertNode(_el$332, _el$333);
8918
+ _$insertNode(_el$332, _el$335);
8919
+ _$insertNode(_el$332, _el$337);
8920
+ _$insertNode(_el$332, _el$339);
8921
+ _$insertNode(_el$332, _el$340);
8922
+ _$insertNode(_el$332, _el$342);
8923
+ _$insertNode(_el$332, _el$343);
8924
+ _$insertNode(_el$332, _el$344);
8925
+ _$insertNode(_el$332, _el$346);
8926
+ _$insertNode(_el$332, _el$348);
8927
+ _$insertNode(_el$332, _el$349);
8928
+ _$insertNode(_el$332, _el$350);
8929
+ _$insertNode(_el$332, _el$352);
8930
+ _$insertNode(_el$332, _el$354);
8931
+ _$insertNode(_el$332, _el$356);
8932
+ _$insertNode(_el$332, _el$358);
8933
+ _$insertNode(_el$332, _el$359);
8934
+ _$insertNode(_el$333, _el$334);
8935
+ _$insert(_el$333, () => commandStatusIcon(cmd().status), _el$334);
8936
+ _$insert(_el$333, () => cmd().title, null);
8937
+ _$insertNode(_el$335, _$createTextNode(` Cmd `));
8938
+ _$insertNode(_el$337, _el$338);
8939
+ _$insert(_el$337, () => commandStatusLabel(cmd().status).short, _el$338);
8940
+ _$insert(_el$337, () => commandStatusLabel(cmd().status).hint, null);
8941
+ _$insertNode(_el$340, _$createTextNode(`\u2B22 Spawn: `));
8942
+ _$insert(_el$342, () => cmd().command);
8943
+ _$insert(_el$332, (() => {
8944
+ var _c$21 = _$memo(() => cmd().args.length > 0);
8945
+ return () => _c$21() && (() => {
8946
+ var _el$361 = _$createElement("span"), _el$362 = _$createTextNode(` `);
8947
+ _$insertNode(_el$361, _el$362);
8948
+ _$insert(_el$361, () => cmd().args.join(" "), null);
8949
+ _$effect((_$p) => _$setProp(_el$361, "style", {
8932
8950
  fg: theme().text
8933
8951
  }, _$p));
8934
- return _el$355;
8952
+ return _el$361;
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$343);
8955
+ _$insertNode(_el$344, _$createTextNode(`\uD83D\uDCC1 `));
8956
+ _$insertNode(_el$346, _$createTextNode(`Cwd: `));
8957
+ _$insert(_el$348, () => cmd().cwd.replace(String(props.directory), "."));
8958
+ _$insert(_el$332, (() => {
8959
+ var _c$22 = _$memo(() => !!cmd().goalID);
8960
+ return () => _c$22() && [(() => {
8961
+ var _el$363 = _$createElement("span");
8962
+ _$insertNode(_el$363, _$createTextNode(` \u2502 \uD83D\uDD17 linked goal `));
8963
+ _$effect((_$p) => _$setProp(_el$363, "style", {
8946
8964
  fg: theme().textMuted
8947
8965
  }, _$p));
8948
- return _el$357;
8966
+ return _el$363;
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$365 = _$createElement("span");
8969
+ _$insert(_el$365, () => cmd().goalID.slice(0, 8));
8970
+ _$effect((_$p) => _$setProp(_el$365, "style", {
8953
8971
  fg: theme().text
8954
8972
  }, _$p));
8955
- return _el$359;
8973
+ return _el$365;
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$349);
8976
+ _$insertNode(_el$350, _$createTextNode(`\uD83D\uDCBE `));
8977
+ _$insertNode(_el$352, _$createTextNode(`Output: `));
8978
+ _$insertNode(_el$354, _el$355);
8979
+ _$insert(_el$354, () => cmd().outputBytes, _el$355);
8980
+ _$insert(_el$332, (() => {
8981
+ var _c$23 = _$memo(() => !!cmd().truncated);
8982
+ return () => _c$23() && (() => {
8983
+ var _el$366 = _$createElement("span");
8984
+ _$insertNode(_el$366, _$createTextNode(` \xB7 \u26A0 truncated`));
8985
+ _$effect((_$p) => _$setProp(_el$366, "style", {
8968
8986
  fg: theme().warning,
8969
8987
  bold: true
8970
8988
  }, _$p));
8971
- return _el$360;
8989
+ return _el$366;
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$356);
8992
+ _$insertNode(_el$356, _el$357);
8993
+ _$insert(_el$356, () => ageLabel(cmd().updatedAt, clock()), null);
8994
+ _$insert(_el$332, (() => {
8995
+ var _c$24 = _$memo(() => !!cmd().lastError);
8996
+ return () => _c$24() && [(() => {
8997
+ var _el$368 = _$createElement("span"), _el$369 = _$createTextNode(`
8980
8998
  \u26A0 Error: `);
8981
- _$insertNode(_el$362, _el$363);
8982
- _$effect((_$p) => _$setProp(_el$362, "style", {
8999
+ _$insertNode(_el$368, _el$369);
9000
+ _$effect((_$p) => _$setProp(_el$368, "style", {
8983
9001
  fg: theme().error,
8984
9002
  bold: true
8985
9003
  }, _$p));
8986
- return _el$362;
9004
+ return _el$368;
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$371 = _$createElement("span");
9007
+ _$insert(_el$371, () => cmd().lastError.slice(0, 120));
9008
+ _$effect((_$p) => _$setProp(_el$371, "style", {
8991
9009
  fg: theme().error
8992
9010
  }, _$p));
8993
- return _el$365;
9011
+ return _el$371;
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$358);
9014
+ _$insertNode(_el$359, _$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
- var _v$69 = commandBorderColor(cmd().status, theme()), _v$70 = {
9016
+ var _v$57 = commandBorderColor(cmd().status, theme()), _v$58 = {
8999
9017
  fg: commandStatusColor(cmd().status, theme()),
9000
9018
  bold: true
9001
- }, _v$71 = {
9019
+ }, _v$59 = {
9002
9020
  fg: theme().textMuted
9003
- }, _v$72 = {
9021
+ }, _v$60 = {
9004
9022
  fg: commandStatusColor(cmd().status, theme())
9005
- }, _v$73 = {
9023
+ }, _v$61 = {
9006
9024
  fg: theme().primary,
9007
9025
  bold: true
9008
- }, _v$74 = {
9026
+ }, _v$62 = {
9009
9027
  fg: theme().accent,
9010
9028
  bold: true
9011
- }, _v$75 = {
9029
+ }, _v$63 = {
9012
9030
  fg: theme().textMuted
9013
- }, _v$76 = {
9031
+ }, _v$64 = {
9014
9032
  fg: theme().accent,
9015
9033
  bold: true
9016
- }, _v$77 = {
9034
+ }, _v$65 = {
9017
9035
  fg: theme().textMuted
9018
- }, _v$78 = {
9036
+ }, _v$66 = {
9019
9037
  fg: theme().warning,
9020
9038
  bold: true
9021
- }, _v$79 = {
9039
+ }, _v$67 = {
9022
9040
  fg: theme().warning,
9023
9041
  bold: true
9024
- }, _v$80 = {
9042
+ }, _v$68 = {
9025
9043
  fg: theme().text
9026
- }, _v$81 = {
9044
+ }, _v$69 = {
9027
9045
  fg: theme().textMuted
9028
- }, _v$82 = {
9046
+ }, _v$70 = {
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$57 !== _p$.e && (_p$.e = _$setProp(_el$331, "borderColor", _v$57, _p$.e));
9050
+ _v$58 !== _p$.t && (_p$.t = _$setProp(_el$333, "style", _v$58, _p$.t));
9051
+ _v$59 !== _p$.a && (_p$.a = _$setProp(_el$335, "style", _v$59, _p$.a));
9052
+ _v$60 !== _p$.o && (_p$.o = _$setProp(_el$337, "style", _v$60, _p$.o));
9053
+ _v$61 !== _p$.i && (_p$.i = _$setProp(_el$340, "style", _v$61, _p$.i));
9054
+ _v$62 !== _p$.n && (_p$.n = _$setProp(_el$342, "style", _v$62, _p$.n));
9055
+ _v$63 !== _p$.s && (_p$.s = _$setProp(_el$344, "style", _v$63, _p$.s));
9056
+ _v$64 !== _p$.h && (_p$.h = _$setProp(_el$346, "style", _v$64, _p$.h));
9057
+ _v$65 !== _p$.r && (_p$.r = _$setProp(_el$348, "style", _v$65, _p$.r));
9058
+ _v$66 !== _p$.d && (_p$.d = _$setProp(_el$350, "style", _v$66, _p$.d));
9059
+ _v$67 !== _p$.l && (_p$.l = _$setProp(_el$352, "style", _v$67, _p$.l));
9060
+ _v$68 !== _p$.u && (_p$.u = _$setProp(_el$354, "style", _v$68, _p$.u));
9061
+ _v$69 !== _p$.c && (_p$.c = _$setProp(_el$356, "style", _v$69, _p$.c));
9062
+ _v$70 !== _p$.w && (_p$.w = _$setProp(_el$359, "style", _v$70, _p$.w));
9045
9063
  return _p$;
9046
9064
  }, {
9047
9065
  e: undefined,
@@ -9059,105 +9077,101 @@ function LoopDashboard(props) {
9059
9077
  c: undefined,
9060
9078
  w: undefined
9061
9079
  });
9062
- return _el$325;
9080
+ return _el$331;
9063
9081
  })()
9064
9082
  })];
9065
9083
  }
9066
9084
  }), null);
9067
- _$insert(_el$39, _$createComponent(Show, {
9085
+ _$insert(_el$42, _$createComponent(Show, {
9068
9086
  get when() {
9069
9087
  return _$memo(() => !!showLogs())() && events().length > 0;
9070
9088
  },
9071
9089
  get children() {
9072
- var _el$45 = _$createElement("box"), _el$46 = _$createElement("text"), _el$47 = _$createElement("span"), _el$49 = _$createElement("span");
9073
- _$insertNode(_el$45, _el$46);
9074
- _$setProp(_el$45, "flexDirection", "column");
9075
- _$setProp(_el$45, "border", true);
9076
- _$setProp(_el$45, "padding", 1);
9077
- _$setProp(_el$45, "maxHeight", 7);
9078
- _$setProp(_el$45, "flexShrink", 0);
9079
- _$setProp(_el$45, "overflow", "hidden");
9090
+ var _el$46 = _$createElement("box"), _el$47 = _$createElement("text"), _el$48 = _$createElement("span"), _el$50 = _$createElement("span");
9080
9091
  _$insertNode(_el$46, _el$47);
9081
- _$insertNode(_el$46, _el$49);
9082
- _$insertNode(_el$47, _$createTextNode(`\u25C8 Recent Events`));
9083
- _$insertNode(_el$49, _$createTextNode(` \u2014 :logs to hide`));
9084
- _$insert(_el$46, _$createComponent(For, {
9092
+ _$setProp(_el$46, "flexDirection", "column");
9093
+ _$setProp(_el$46, "border", true);
9094
+ _$setProp(_el$46, "padding", 1);
9095
+ _$setProp(_el$46, "maxHeight", 7);
9096
+ _$setProp(_el$46, "flexShrink", 0);
9097
+ _$setProp(_el$46, "overflow", "hidden");
9098
+ _$insertNode(_el$47, _el$48);
9099
+ _$insertNode(_el$47, _el$50);
9100
+ _$insertNode(_el$48, _$createTextNode(`\u25C8 Recent Events`));
9101
+ _$insertNode(_el$50, _$createTextNode(` \u2014 :logs to hide`));
9102
+ _$insert(_el$47, _$createComponent(For, {
9085
9103
  get each() {
9086
9104
  return events().slice(-10);
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$372 = _$createElement("span");
9109
+ _$insert(_el$372, () => String(ev.type));
9110
+ _$effect((_$p) => _$setProp(_el$372, "style", {
9093
9111
  fg: eventColor(String(ev.type), theme()),
9094
9112
  bold: true
9095
9113
  }, _$p));
9096
- return _el$366;
9114
+ return _el$372;
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$373 = _$createElement("span"), _el$374 = _$createTextNode(` `);
9117
+ _$insertNode(_el$373, _el$374);
9118
+ _$insert(_el$373, () => ev.goalID?.slice(0, 8), null);
9119
+ _$effect((_$p) => _$setProp(_el$373, "style", {
9102
9120
  fg: theme().textMuted
9103
9121
  }, _$p));
9104
- return _el$367;
9122
+ return _el$373;
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$375 = _$createElement("span"), _el$376 = _$createTextNode(` \u2014 `);
9125
+ _$insertNode(_el$375, _el$376);
9126
+ _$insert(_el$375, () => String(ev.summary).slice(0, 60), null);
9127
+ _$effect((_$p) => _$setProp(_el$375, "style", {
9110
9128
  fg: theme().text
9111
9129
  }, _$p));
9112
- return _el$369;
9130
+ return _el$375;
9113
9131
  })())]
9114
9132
  }), null);
9115
9133
  _$effect((_p$) => {
9116
- var _v$ = theme().border, _v$2 = {
9134
+ var _v$3 = theme().border, _v$4 = {
9117
9135
  fg: theme().accent,
9118
9136
  bold: true
9119
- }, _v$3 = {
9137
+ }, _v$5 = {
9120
9138
  fg: theme().textMuted
9121
9139
  };
9122
- _v$ !== _p$.e && (_p$.e = _$setProp(_el$45, "borderColor", _v$, _p$.e));
9123
- _v$2 !== _p$.t && (_p$.t = _$setProp(_el$47, "style", _v$2, _p$.t));
9124
- _v$3 !== _p$.a && (_p$.a = _$setProp(_el$49, "style", _v$3, _p$.a));
9140
+ _v$3 !== _p$.e && (_p$.e = _$setProp(_el$46, "borderColor", _v$3, _p$.e));
9141
+ _v$4 !== _p$.t && (_p$.t = _$setProp(_el$48, "style", _v$4, _p$.t));
9142
+ _v$5 !== _p$.a && (_p$.a = _$setProp(_el$50, "style", _v$5, _p$.a));
9125
9143
  return _p$;
9126
9144
  }, {
9127
9145
  e: undefined,
9128
9146
  t: undefined,
9129
9147
  a: undefined
9130
9148
  });
9131
- return _el$45;
9149
+ return _el$46;
9132
9150
  }
9133
9151
  }), null);
9134
- _$insertNode(_el$51, _el$52);
9135
- _$insertNode(_el$51, _el$54);
9136
- _$setProp(_el$51, "flexDirection", "row");
9137
- _$setProp(_el$51, "border", true);
9138
- _$setProp(_el$51, "paddingLeft", 1);
9139
- _$setProp(_el$51, "paddingRight", 1);
9140
- _$setProp(_el$51, "flexShrink", 0);
9141
- _$setProp(_el$51, "height", 3);
9142
- _$setProp(_el$51, "gap", 1);
9143
9152
  _$insertNode(_el$52, _el$53);
9144
- _$insert(_el$53, () => mode() === "insert" ? " INSERT \uE0B1" : " NORMAL ");
9153
+ _$insertNode(_el$52, _el$55);
9154
+ _$setProp(_el$52, "flexDirection", "row");
9155
+ _$setProp(_el$52, "border", true);
9156
+ _$setProp(_el$52, "paddingLeft", 1);
9157
+ _$setProp(_el$52, "paddingRight", 1);
9158
+ _$setProp(_el$52, "flexShrink", 0);
9159
+ _$setProp(_el$52, "height", 3);
9160
+ _$setProp(_el$52, "gap", 1);
9161
+ _$insertNode(_el$53, _el$54);
9162
+ _$insert(_el$54, () => mode() === "insert" ? " INSERT \uE0B1" : " NORMAL ");
9145
9163
  _$use((el) => {
9146
9164
  inputEl = el;
9147
9165
  focusInput();
9148
- }, _el$54);
9149
- _$setProp(_el$54, "flexGrow", 1);
9150
- _$setProp(_el$54, "onInput", (v) => {
9151
- debugLog("onInput", JSON.stringify(v), "mode", mode());
9166
+ }, _el$55);
9167
+ _$setProp(_el$55, "flexGrow", 1);
9168
+ _$setProp(_el$55, "onInput", (v) => {
9152
9169
  if (mode() === "insert")
9153
9170
  setCommandInput(v);
9154
9171
  else if (inputEl?.value)
9155
9172
  inputEl.value = "";
9156
9173
  });
9157
- _$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())}`);
9174
+ _$setProp(_el$55, "onKeyDown", (evt) => {
9161
9175
  if (mode() !== "insert") {
9162
9176
  if ((evt.name || "").length === 1)
9163
9177
  prevent(evt);
@@ -9165,75 +9179,75 @@ function LoopDashboard(props) {
9165
9179
  }
9166
9180
  });
9167
9181
  _$effect((_p$) => {
9168
- var _v$4 = theme().border, _v$5 = {
9182
+ var _v$6 = theme().border, _v$7 = {
9169
9183
  fg: theme().primary,
9170
9184
  bold: true
9171
- }, _v$6 = {
9185
+ }, _v$8 = {
9172
9186
  fg: theme().textMuted
9173
- }, _v$7 = {
9187
+ }, _v$9 = {
9174
9188
  fg: mode() === "normal" ? theme().success : theme().warning,
9175
9189
  bold: true,
9176
9190
  bg: mode() === "insert" ? theme().backgroundElement : undefined
9177
- }, _v$8 = {
9191
+ }, _v$0 = {
9178
9192
  fg: theme().textMuted
9179
- }, _v$9 = {
9193
+ }, _v$1 = {
9180
9194
  fg: theme().accent,
9181
9195
  bold: true
9182
- }, _v$0 = {
9196
+ }, _v$10 = {
9183
9197
  fg: theme().textMuted
9184
- }, _v$1 = {
9198
+ }, _v$11 = {
9185
9199
  fg: theme().textMuted
9186
- }, _v$10 = {
9200
+ }, _v$12 = {
9187
9201
  fg: runningCount() > 0 ? theme().success : theme().textMuted,
9188
9202
  bold: runningCount() > 0
9189
- }, _v$11 = {
9203
+ }, _v$13 = {
9190
9204
  fg: theme().textMuted
9191
- }, _v$12 = {
9205
+ }, _v$14 = {
9192
9206
  fg: theme().info,
9193
9207
  bold: true
9194
- }, _v$13 = {
9208
+ }, _v$15 = {
9195
9209
  fg: theme().textMuted
9196
- }, _v$14 = {
9210
+ }, _v$16 = {
9197
9211
  fg: theme().textMuted
9198
- }, _v$15 = {
9212
+ }, _v$17 = {
9199
9213
  fg: tab() === "goals" ? theme().primary : theme().textMuted,
9200
9214
  bold: tab() === "goals"
9201
- }, _v$16 = {
9215
+ }, _v$18 = {
9202
9216
  fg: theme().textMuted
9203
- }, _v$17 = {
9217
+ }, _v$19 = {
9204
9218
  fg: tab() === "commands" ? theme().primary : theme().textMuted,
9205
9219
  bold: tab() === "commands"
9206
- }, _v$18 = {
9220
+ }, _v$20 = {
9207
9221
  fg: theme().textMuted
9208
- }, _v$19 = mode() === "insert" ? theme().warning : theme().border, _v$20 = {
9222
+ }, _v$21 = mode() === "insert" ? theme().warning : theme().border, _v$22 = {
9209
9223
  fg: mode() === "insert" ? theme().warning : theme().success,
9210
9224
  bold: true,
9211
9225
  bg: mode() === "insert" ? theme().backgroundElement : undefined
9212
- }, _v$21 = mode() === "insert" ? ":send hello or :force done --evidence proof or :open (Ctrl+N: normal)" : statusText() || "Press : to send/command \xB7 ? help \xB7 o open child \xB7 q close", _v$22 = theme().textMuted, _v$23 = theme().primary, _v$24 = theme().text, _v$25 = theme().background;
9213
- _v$4 !== _p$.e && (_p$.e = _$setProp(_el$2, "borderColor", _v$4, _p$.e));
9214
- _v$5 !== _p$.t && (_p$.t = _$setProp(_el$5, "style", _v$5, _p$.t));
9215
- _v$6 !== _p$.a && (_p$.a = _$setProp(_el$7, "style", _v$6, _p$.a));
9216
- _v$7 !== _p$.o && (_p$.o = _$setProp(_el$9, "style", _v$7, _p$.o));
9217
- _v$8 !== _p$.i && (_p$.i = _$setProp(_el$10, "style", _v$8, _p$.i));
9218
- _v$9 !== _p$.n && (_p$.n = _$setProp(_el$12, "style", _v$9, _p$.n));
9219
- _v$0 !== _p$.s && (_p$.s = _$setProp(_el$13, "style", _v$0, _p$.s));
9220
- _v$1 !== _p$.h && (_p$.h = _$setProp(_el$15, "style", _v$1, _p$.h));
9221
- _v$10 !== _p$.r && (_p$.r = _$setProp(_el$17, "style", _v$10, _p$.r));
9222
- _v$11 !== _p$.d && (_p$.d = _$setProp(_el$20, "style", _v$11, _p$.d));
9223
- _v$12 !== _p$.l && (_p$.l = _$setProp(_el$22, "style", _v$12, _p$.l));
9224
- _v$13 !== _p$.u && (_p$.u = _$setProp(_el$23, "style", _v$13, _p$.u));
9225
- _v$14 !== _p$.c && (_p$.c = _$setProp(_el$25, "style", _v$14, _p$.c));
9226
- _v$15 !== _p$.w && (_p$.w = _$setProp(_el$27, "style", _v$15, _p$.w));
9227
- _v$16 !== _p$.m && (_p$.m = _$setProp(_el$29, "style", _v$16, _p$.m));
9228
- _v$17 !== _p$.f && (_p$.f = _$setProp(_el$31, "style", _v$17, _p$.f));
9229
- _v$18 !== _p$.y && (_p$.y = _$setProp(_el$33, "style", _v$18, _p$.y));
9230
- _v$19 !== _p$.g && (_p$.g = _$setProp(_el$51, "borderColor", _v$19, _p$.g));
9231
- _v$20 !== _p$.p && (_p$.p = _$setProp(_el$53, "style", _v$20, _p$.p));
9232
- _v$21 !== _p$.b && (_p$.b = _$setProp(_el$54, "placeholder", _v$21, _p$.b));
9233
- _v$22 !== _p$.T && (_p$.T = _$setProp(_el$54, "placeholderColor", _v$22, _p$.T));
9234
- _v$23 !== _p$.A && (_p$.A = _$setProp(_el$54, "cursorColor", _v$23, _p$.A));
9235
- _v$24 !== _p$.O && (_p$.O = _$setProp(_el$54, "focusedTextColor", _v$24, _p$.O));
9236
- _v$25 !== _p$.I && (_p$.I = _$setProp(_el$54, "focusedBackgroundColor", _v$25, _p$.I));
9226
+ }, _v$23 = mode() === "insert" ? ":send hello or :force done --evidence proof or :open (Ctrl+N: normal)" : statusText() || "Press : to send/command \xB7 ? help \xB7 o open child \xB7 q close", _v$24 = theme().textMuted, _v$25 = theme().primary, _v$26 = theme().text, _v$27 = theme().background;
9227
+ _v$6 !== _p$.e && (_p$.e = _$setProp(_el$5, "borderColor", _v$6, _p$.e));
9228
+ _v$7 !== _p$.t && (_p$.t = _$setProp(_el$8, "style", _v$7, _p$.t));
9229
+ _v$8 !== _p$.a && (_p$.a = _$setProp(_el$0, "style", _v$8, _p$.a));
9230
+ _v$9 !== _p$.o && (_p$.o = _$setProp(_el$10, "style", _v$9, _p$.o));
9231
+ _v$0 !== _p$.i && (_p$.i = _$setProp(_el$13, "style", _v$0, _p$.i));
9232
+ _v$1 !== _p$.n && (_p$.n = _$setProp(_el$15, "style", _v$1, _p$.n));
9233
+ _v$10 !== _p$.s && (_p$.s = _$setProp(_el$16, "style", _v$10, _p$.s));
9234
+ _v$11 !== _p$.h && (_p$.h = _$setProp(_el$18, "style", _v$11, _p$.h));
9235
+ _v$12 !== _p$.r && (_p$.r = _$setProp(_el$20, "style", _v$12, _p$.r));
9236
+ _v$13 !== _p$.d && (_p$.d = _$setProp(_el$23, "style", _v$13, _p$.d));
9237
+ _v$14 !== _p$.l && (_p$.l = _$setProp(_el$25, "style", _v$14, _p$.l));
9238
+ _v$15 !== _p$.u && (_p$.u = _$setProp(_el$26, "style", _v$15, _p$.u));
9239
+ _v$16 !== _p$.c && (_p$.c = _$setProp(_el$28, "style", _v$16, _p$.c));
9240
+ _v$17 !== _p$.w && (_p$.w = _$setProp(_el$30, "style", _v$17, _p$.w));
9241
+ _v$18 !== _p$.m && (_p$.m = _$setProp(_el$32, "style", _v$18, _p$.m));
9242
+ _v$19 !== _p$.f && (_p$.f = _$setProp(_el$34, "style", _v$19, _p$.f));
9243
+ _v$20 !== _p$.y && (_p$.y = _$setProp(_el$36, "style", _v$20, _p$.y));
9244
+ _v$21 !== _p$.g && (_p$.g = _$setProp(_el$52, "borderColor", _v$21, _p$.g));
9245
+ _v$22 !== _p$.p && (_p$.p = _$setProp(_el$54, "style", _v$22, _p$.p));
9246
+ _v$23 !== _p$.b && (_p$.b = _$setProp(_el$55, "placeholder", _v$23, _p$.b));
9247
+ _v$24 !== _p$.T && (_p$.T = _$setProp(_el$55, "placeholderColor", _v$24, _p$.T));
9248
+ _v$25 !== _p$.A && (_p$.A = _$setProp(_el$55, "cursorColor", _v$25, _p$.A));
9249
+ _v$26 !== _p$.O && (_p$.O = _$setProp(_el$55, "focusedTextColor", _v$26, _p$.O));
9250
+ _v$27 !== _p$.I && (_p$.I = _$setProp(_el$55, "focusedBackgroundColor", _v$27, _p$.I));
9237
9251
  return _p$;
9238
9252
  }, {
9239
9253
  e: undefined,
@@ -9261,7 +9275,7 @@ function LoopDashboard(props) {
9261
9275
  O: undefined,
9262
9276
  I: undefined
9263
9277
  });
9264
- return _el$;
9278
+ return _el$4;
9265
9279
  })();
9266
9280
  }
9267
9281
 
@@ -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)