sisyphi 1.1.39 → 1.1.40

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
@@ -731,7 +731,7 @@ var init_config = __esm({
731
731
  },
732
732
  companionPopup: true,
733
733
  requiredPlugins: [
734
- { name: "devcore", marketplace: "crouton-kit" }
734
+ { name: "devcore", marketplace: "crouton-kit", owner: "crouton-labs" }
735
735
  ]
736
736
  };
737
737
  }
@@ -1530,6 +1530,19 @@ function statusColor(status) {
1530
1530
  return "white";
1531
1531
  }
1532
1532
  }
1533
+ var COLOR_ENABLED = process.env["FORCE_COLOR"] === "1" || process.stdout.isTTY === true && process.env["NO_COLOR"] === void 0 && process.env["TERM"] !== "dumb";
1534
+ function wrap(open, close = "\x1B[0m") {
1535
+ return (s) => COLOR_ENABLED ? `${open}${s}${close}` : s;
1536
+ }
1537
+ var bold = wrap("\x1B[1m");
1538
+ var dim = wrap("\x1B[2m");
1539
+ var red = wrap("\x1B[31m");
1540
+ var green = wrap("\x1B[32m");
1541
+ var yellow = wrap("\x1B[33m");
1542
+ var cyan = wrap("\x1B[36m");
1543
+ var gray = wrap("\x1B[90m");
1544
+ var magenta = wrap("\x1B[35m");
1545
+ var white = wrap("\x1B[37m");
1533
1546
 
1534
1547
  // src/tui/lib/format.ts
1535
1548
  function formatTimeAgo(iso) {
@@ -1685,10 +1698,10 @@ function ansiBold(text) {
1685
1698
  function ansiDim(text) {
1686
1699
  return `\x1B[2m${text}\x1B[0m`;
1687
1700
  }
1688
- function ansiColor(text, color, bold = false) {
1701
+ function ansiColor(text, color, bold2 = false) {
1689
1702
  const COLOR_MAP = { black: 30, red: 31, green: 32, yellow: 33, blue: 34, magenta: 35, cyan: 36, white: 37, gray: 90 };
1690
1703
  const codes = [];
1691
- if (bold) codes.push(1);
1704
+ if (bold2) codes.push(1);
1692
1705
  const sgr = COLOR_MAP[color];
1693
1706
  if (sgr !== void 0) codes.push(sgr);
1694
1707
  if (codes.length === 0) return text;
@@ -3234,7 +3247,7 @@ function stripAnsiForWidth(s) {
3234
3247
  return s.replace(/\x1b\[[0-9;]*m/g, "");
3235
3248
  }
3236
3249
  function renderBadgeCard(def, unlock, opts) {
3237
- const dim = opts?.dim === true || unlock === null;
3250
+ const dim2 = opts?.dim === true || unlock === null;
3238
3251
  const art = BADGE_ART[def.id] ?? [];
3239
3252
  const lines = [];
3240
3253
  const category = def.category.toUpperCase();
@@ -3248,7 +3261,7 @@ function renderBadgeCard(def, unlock, opts) {
3248
3261
  const artSlice = art.slice(0, artMaxLines);
3249
3262
  for (const artLine of artSlice) {
3250
3263
  const centered = centerLine(artLine, CARD_INNER);
3251
- lines.push(`\u2502${dim ? dimText(centered) : centered}\u2502`);
3264
+ lines.push(`\u2502${dim2 ? dimText(centered) : centered}\u2502`);
3252
3265
  }
3253
3266
  for (let i = artSlice.length; i < artMaxLines; i++) {
3254
3267
  lines.push(`\u2502${" ".repeat(CARD_INNER)}\u2502`);
@@ -3259,7 +3272,7 @@ function renderBadgeCard(def, unlock, opts) {
3259
3272
  const descLines = wrapText2(def.description, CARD_INNER - 4);
3260
3273
  for (const dl of descLines.slice(0, 2)) {
3261
3274
  const centered = centerLine(dl, CARD_INNER);
3262
- lines.push(`\u2502${dim ? dimText(centered) : centered}\u2502`);
3275
+ lines.push(`\u2502${dim2 ? dimText(centered) : centered}\u2502`);
3263
3276
  }
3264
3277
  const usedContent = 1 + 1 + artMaxLines + 1 + 1 + Math.min(descLines.length, 2);
3265
3278
  const remaining = CARD_HEIGHT - 2 - usedContent;
@@ -4415,8 +4428,9 @@ function handleLeaderAction(action, state2, actions) {
4415
4428
  break;
4416
4429
  }
4417
4430
  try {
4418
- const text = actions.promptInPopup("Delete session? (yes/no):");
4419
- if (text?.trim() === "yes") {
4431
+ const text = actions.promptInPopup("Delete session? (y/yes to confirm):");
4432
+ const answer = text?.trim().toLowerCase();
4433
+ if (answer === "y" || answer === "yes") {
4420
4434
  actions.sendAndNotify({ type: "delete", sessionId: selectedSessionId, cwd: state2.cwd }, "Session deleted");
4421
4435
  } else {
4422
4436
  notify(state2, "Delete cancelled");
@@ -5960,7 +5974,7 @@ function renderNodeContent(node, maxWidth) {
5960
5974
  case "session": {
5961
5975
  const icon = statusIndicator(node.status);
5962
5976
  const color = statusColor(node.status);
5963
- const dim = node.status === "completed" || node.orphaned === true;
5977
+ const dim2 = node.status === "completed" || node.orphaned === true;
5964
5978
  const cyclePart = node.cycleCount > 0 ? `C${node.cycleCount}` : "";
5965
5979
  const dur = formatDuration(node.activeMs);
5966
5980
  const agopart = node.status === "completed" && node.completedAt ? formatTimeAgo(node.completedAt) : "";
@@ -5972,7 +5986,7 @@ function renderNodeContent(node, maxWidth) {
5972
5986
  const displayText = node.name ?? node.task;
5973
5987
  const suffixWidth = suffix ? suffix.length + 1 : 0;
5974
5988
  const maxLabel = Math.max(8, maxWidth - meta.length - 4 - suffixWidth);
5975
- return { icon, label: truncate(displayText, maxLabel), meta, color, dim, metaColor, suffix, suffixColor };
5989
+ return { icon, label: truncate(displayText, maxLabel), meta, color, dim: dim2, metaColor, suffix, suffixColor };
5976
5990
  }
5977
5991
  case "cycle": {
5978
5992
  const isRunning = !node.completedAt;
@@ -5993,7 +6007,7 @@ function renderNodeContent(node, maxWidth) {
5993
6007
  const color = statusColor(node.status);
5994
6008
  const dur = formatDuration(node.activeMs);
5995
6009
  const durClr = durationColor(node.activeMs) || void 0;
5996
- const dim = node.status === "completed" || node.orphaned === true;
6010
+ const dim2 = node.status === "completed" || node.orphaned === true;
5997
6011
  const displayName = agentDisplayName({
5998
6012
  name: node.name,
5999
6013
  id: node.agentId,
@@ -6008,7 +6022,7 @@ function renderNodeContent(node, maxWidth) {
6008
6022
  label: truncate(displayName, maxLabel),
6009
6023
  meta: dur,
6010
6024
  color,
6011
- dim,
6025
+ dim: dim2,
6012
6026
  metaColor: durClr,
6013
6027
  suffix,
6014
6028
  suffixColor
@@ -6131,16 +6145,16 @@ function renderTreePanel(buf, rect, nodes, cursorIndex, focused, companion) {
6131
6145
  const isSelected = realIdx === cursorIndex;
6132
6146
  const prefix = node.prefix ?? renderTreePrefix(node, nodes, realIdx);
6133
6147
  const contentWidth = innerW;
6134
- const { icon, label, meta, color, dim, metaColor, suffix, suffixColor } = renderNodeContent(
6148
+ const { icon, label, meta, color, dim: dim2, metaColor, suffix, suffixColor } = renderNodeContent(
6135
6149
  node,
6136
6150
  contentWidth - prefix.length
6137
6151
  );
6138
6152
  let content = "";
6139
6153
  if (icon) {
6140
- if (dim) content += `\x1B[2;${colorToSGR(color)}m${icon}\x1B[0m `;
6154
+ if (dim2) content += `\x1B[2;${colorToSGR(color)}m${icon}\x1B[0m `;
6141
6155
  else content += `\x1B[${colorToSGR(color)}m${icon}\x1B[0m `;
6142
6156
  }
6143
- if (dim) content += `\x1B[2m${label}\x1B[0m`;
6157
+ if (dim2) content += `\x1B[2m${label}\x1B[0m`;
6144
6158
  else content += label;
6145
6159
  if (meta) {
6146
6160
  if (metaColor) content += ` \x1B[${colorToSGR(metaColor)}m${meta}\x1B[0m`;
@@ -6151,9 +6165,9 @@ function renderTreePanel(buf, rect, nodes, cursorIndex, focused, companion) {
6151
6165
  }
6152
6166
  let line = prefix;
6153
6167
  if (isSelected) {
6154
- const bold = "\x1B[1m";
6168
+ const bold2 = "\x1B[1m";
6155
6169
  const inverse = focused ? "\x1B[7m" : "";
6156
- line += `${inverse}${bold}${content}\x1B[0m`;
6170
+ line += `${inverse}${bold2}${content}\x1B[0m`;
6157
6171
  } else {
6158
6172
  line += content;
6159
6173
  }
@@ -6236,7 +6250,7 @@ function buildOrchestratorNode(cycle, agents, width, bright, showConnectorBottom
6236
6250
  const lines = [];
6237
6251
  const inner = width - 2;
6238
6252
  const bg2 = BG_TINTS.yellow;
6239
- const dim = !bright;
6253
+ const dim2 = !bright;
6240
6254
  const isRunning = !cycle.completedAt;
6241
6255
  const icon = isRunning ? "\u25CF" : "\u25CB";
6242
6256
  const cycleLabel = `C${cycle.cycle}`;
@@ -6254,63 +6268,63 @@ function buildOrchestratorNode(cycle, agents, width, bright, showConnectorBottom
6254
6268
  const leftW = stringWidth5(leftContent);
6255
6269
  const rightW = stringWidth5(rightText);
6256
6270
  const gap = Math.max(1, inner - 2 - leftW - rightW);
6257
- lines.push([seg("\u256D" + "\u2500".repeat(inner) + "\u256E", { color: "yellow", dim })]);
6271
+ lines.push([seg("\u256D" + "\u2500".repeat(inner) + "\u256E", { color: "yellow", dim: dim2 })]);
6258
6272
  const contentSegs = [
6259
- seg("\u2502", { color: "yellow", dim }),
6260
- seg(" " + icon + " ", { bg: bg2, color: isRunning ? "green" : void 0, dim: !isRunning && dim, bold: bright }),
6261
- seg(cycleLabel, { bg: bg2, dim, bold: bright }),
6273
+ seg("\u2502", { color: "yellow", dim: dim2 }),
6274
+ seg(" " + icon + " ", { bg: bg2, color: isRunning ? "green" : void 0, dim: !isRunning && dim2, bold: bright }),
6275
+ seg(cycleLabel, { bg: bg2, dim: dim2, bold: bright }),
6262
6276
  seg(" ", { bg: bg2 }),
6263
- seg(modeLabel, { bg: bg2, color: mColor, dim }),
6277
+ seg(modeLabel, { bg: bg2, color: mColor, dim: dim2 }),
6264
6278
  seg(" ".repeat(gap), { bg: bg2 })
6265
6279
  ];
6266
6280
  if (isRunning && bright) {
6267
6281
  contentSegs.push(seg(rightText, { bg: bg2, color: "green", bold: true }));
6268
6282
  } else {
6269
- contentSegs.push(seg(rightText, { bg: bg2, dim }));
6283
+ contentSegs.push(seg(rightText, { bg: bg2, dim: dim2 }));
6270
6284
  }
6271
6285
  contentSegs.push(seg(" ", { bg: bg2 }));
6272
6286
  const usedWidth = 1 + 1 + 1 + 1 + stringWidth5(cycleLabel) + 2 + stringWidth5(modeLabel) + gap + stringWidth5(rightText) + 1;
6273
6287
  if (usedWidth < inner) {
6274
6288
  contentSegs.push(seg(" ".repeat(inner - usedWidth), { bg: bg2 }));
6275
6289
  }
6276
- contentSegs.push(seg("\u2502", { color: "yellow", dim }));
6290
+ contentSegs.push(seg("\u2502", { color: "yellow", dim: dim2 }));
6277
6291
  lines.push(contentSegs);
6278
6292
  if (agents.length > 0) {
6279
6293
  const running = agents.filter((a) => a.status === "running").length;
6280
6294
  const done = agents.filter((a) => a.status === "completed").length;
6281
6295
  const failed = agents.filter((a) => a.status === "killed" || a.status === "crashed").length;
6282
6296
  const parts = [
6283
- seg("\u2502", { color: "yellow", dim }),
6297
+ seg("\u2502", { color: "yellow", dim: dim2 }),
6284
6298
  seg(` ${agents.length} agent${agents.length !== 1 ? "s" : ""}: `, { bg: bg2, dim: true })
6285
6299
  ];
6286
- if (running > 0) parts.push(seg(`${running}\u25B6 `, { bg: bg2, color: "green", dim }));
6287
- if (done > 0) parts.push(seg(`${done}\u2713 `, { bg: bg2, color: "cyan", dim }));
6288
- if (failed > 0) parts.push(seg(`${failed}\u2715 `, { bg: bg2, color: "red", dim }));
6300
+ if (running > 0) parts.push(seg(`${running}\u25B6 `, { bg: bg2, color: "green", dim: dim2 }));
6301
+ if (done > 0) parts.push(seg(`${done}\u2713 `, { bg: bg2, color: "cyan", dim: dim2 }));
6302
+ if (failed > 0) parts.push(seg(`${failed}\u2715 `, { bg: bg2, color: "red", dim: dim2 }));
6289
6303
  const labelLen = ` ${agents.length} agent${agents.length !== 1 ? "s" : ""}: `.length;
6290
6304
  const countLen = (running > 0 ? `${running}\u25B6 `.length : 0) + (done > 0 ? `${done}\u2713 `.length : 0) + (failed > 0 ? `${failed}\u2715 `.length : 0);
6291
6305
  const remaining = Math.max(0, inner - labelLen - countLen);
6292
6306
  parts.push(seg(" ".repeat(remaining), { bg: bg2 }));
6293
- parts.push(seg("\u2502", { color: "yellow", dim }));
6307
+ parts.push(seg("\u2502", { color: "yellow", dim: dim2 }));
6294
6308
  lines.push(parts);
6295
6309
  }
6296
6310
  if (showConnectorBottom) {
6297
6311
  const mid = Math.floor(inner / 2);
6298
6312
  const left = mid;
6299
6313
  const right = inner - mid - 1;
6300
- lines.push([seg("\u2570" + "\u2500".repeat(left) + "\u252C" + "\u2500".repeat(right) + "\u256F", { color: "yellow", dim })]);
6314
+ lines.push([seg("\u2570" + "\u2500".repeat(left) + "\u252C" + "\u2500".repeat(right) + "\u256F", { color: "yellow", dim: dim2 })]);
6301
6315
  } else {
6302
- lines.push([seg("\u2570" + "\u2500".repeat(inner) + "\u256F", { color: "yellow", dim })]);
6316
+ lines.push([seg("\u2570" + "\u2500".repeat(inner) + "\u256F", { color: "yellow", dim: dim2 })]);
6303
6317
  }
6304
6318
  return lines;
6305
6319
  }
6306
6320
  function stemCol(width) {
6307
6321
  return Math.floor(width / 2);
6308
6322
  }
6309
- function buildVerticalConnector(width, dim) {
6323
+ function buildVerticalConnector(width, dim2) {
6310
6324
  const col = stemCol(width);
6311
6325
  return [
6312
6326
  seg(" ".repeat(col)),
6313
- seg("\u2502", { dim })
6327
+ seg("\u2502", { dim: dim2 })
6314
6328
  ];
6315
6329
  }
6316
6330
  function buildBranchConnector(boxWidth, count, totalWidth, direction) {
@@ -6416,9 +6430,9 @@ function buildAgentBoxRows(agents, boxWidth, totalWidth, bright, maxPerRow) {
6416
6430
  const a = rowAgents[i];
6417
6431
  const isError = a.status === "killed" || a.status === "crashed";
6418
6432
  const borderColor = isError ? "red" : resolveColor(a.color);
6419
- const dim = !bright;
6433
+ const dim2 = !bright;
6420
6434
  const mid = Math.floor(innerW / 2);
6421
- topSegs.push(seg("\u256D" + "\u2500".repeat(mid) + "\u2534" + "\u2500".repeat(innerW - mid - 1) + "\u256E", { color: borderColor, dim }));
6435
+ topSegs.push(seg("\u256D" + "\u2500".repeat(mid) + "\u2534" + "\u2500".repeat(innerW - mid - 1) + "\u256E", { color: borderColor, dim: dim2 }));
6422
6436
  }
6423
6437
  lines.push(topSegs);
6424
6438
  const line1Segs = [];
@@ -6427,14 +6441,14 @@ function buildAgentBoxRows(agents, boxWidth, totalWidth, bright, maxPerRow) {
6427
6441
  const isError = a.status === "killed" || a.status === "crashed";
6428
6442
  const borderColor = isError ? "red" : resolveColor(a.color);
6429
6443
  const agentBg = BG_TINTS[isError ? "red" : resolveColor(a.color)] ?? BG_TINTS.gray;
6430
- const dim = !bright;
6444
+ const dim2 = !bright;
6431
6445
  const icon = agentStatusIcon(a.status);
6432
6446
  const iconColor = statusColor(a.status);
6433
6447
  const idPadded = padTo(` ${a.id}`, innerW - stringWidth5(icon));
6434
- line1Segs.push(seg("\u2502", { color: borderColor, dim }));
6448
+ line1Segs.push(seg("\u2502", { color: borderColor, dim: dim2 }));
6435
6449
  line1Segs.push(seg(icon, { bg: agentBg, color: iconColor, bold: bright }));
6436
- line1Segs.push(seg(idPadded, { bg: agentBg, dim, bold: bright && a.status === "running" }));
6437
- line1Segs.push(seg("\u2502", { color: borderColor, dim }));
6450
+ line1Segs.push(seg(idPadded, { bg: agentBg, dim: dim2, bold: bright && a.status === "running" }));
6451
+ line1Segs.push(seg("\u2502", { color: borderColor, dim: dim2 }));
6438
6452
  }
6439
6453
  lines.push(line1Segs);
6440
6454
  const line2Segs = [];
@@ -6443,11 +6457,11 @@ function buildAgentBoxRows(agents, boxWidth, totalWidth, bright, maxPerRow) {
6443
6457
  const isError = a.status === "killed" || a.status === "crashed";
6444
6458
  const borderColor = isError ? "red" : resolveColor(a.color);
6445
6459
  const agentBg = BG_TINTS[isError ? "red" : resolveColor(a.color)] ?? BG_TINTS.gray;
6446
- const dim = !bright;
6460
+ const dim2 = !bright;
6447
6461
  const name = padTo(agentDisplayName(a), innerW);
6448
- line2Segs.push(seg("\u2502", { color: borderColor, dim }));
6449
- line2Segs.push(seg(name, { bg: agentBg, dim }));
6450
- line2Segs.push(seg("\u2502", { color: borderColor, dim }));
6462
+ line2Segs.push(seg("\u2502", { color: borderColor, dim: dim2 }));
6463
+ line2Segs.push(seg(name, { bg: agentBg, dim: dim2 }));
6464
+ line2Segs.push(seg("\u2502", { color: borderColor, dim: dim2 }));
6451
6465
  }
6452
6466
  lines.push(line2Segs);
6453
6467
  const line3Segs = [];
@@ -6456,7 +6470,7 @@ function buildAgentBoxRows(agents, boxWidth, totalWidth, bright, maxPerRow) {
6456
6470
  const isError = a.status === "killed" || a.status === "crashed";
6457
6471
  const borderColor = isError ? "red" : resolveColor(a.color);
6458
6472
  const agentBg = BG_TINTS[isError ? "red" : resolveColor(a.color)] ?? BG_TINTS.gray;
6459
- const dim = !bright;
6473
+ const dim2 = !bright;
6460
6474
  const dur = formatDuration(a.activeMs);
6461
6475
  const durClr = isError ? "red" : durationColor(a.activeMs) || void 0;
6462
6476
  let durText;
@@ -6468,9 +6482,9 @@ function buildAgentBoxRows(agents, boxWidth, totalWidth, bright, maxPerRow) {
6468
6482
  } else {
6469
6483
  durText = padTo(dur, innerW);
6470
6484
  }
6471
- line3Segs.push(seg("\u2502", { color: borderColor, dim }));
6472
- line3Segs.push(seg(durText, { bg: agentBg, dim, color: durClr }));
6473
- line3Segs.push(seg("\u2502", { color: borderColor, dim }));
6485
+ line3Segs.push(seg("\u2502", { color: borderColor, dim: dim2 }));
6486
+ line3Segs.push(seg(durText, { bg: agentBg, dim: dim2, color: durClr }));
6487
+ line3Segs.push(seg("\u2502", { color: borderColor, dim: dim2 }));
6474
6488
  }
6475
6489
  lines.push(line3Segs);
6476
6490
  const line4Segs = [];
@@ -6479,11 +6493,11 @@ function buildAgentBoxRows(agents, boxWidth, totalWidth, bright, maxPerRow) {
6479
6493
  const isError = a.status === "killed" || a.status === "crashed";
6480
6494
  const borderColor = isError ? "red" : resolveColor(a.color);
6481
6495
  const agentBg = BG_TINTS[isError ? "red" : resolveColor(a.color)] ?? BG_TINTS.gray;
6482
- const dim = !bright;
6496
+ const dim2 = !bright;
6483
6497
  const summary = padTo(agentSummary(a, innerW), innerW);
6484
- line4Segs.push(seg("\u2502", { color: borderColor, dim }));
6498
+ line4Segs.push(seg("\u2502", { color: borderColor, dim: dim2 }));
6485
6499
  line4Segs.push(seg(summary, { bg: agentBg, dim: true }));
6486
- line4Segs.push(seg("\u2502", { color: borderColor, dim }));
6500
+ line4Segs.push(seg("\u2502", { color: borderColor, dim: dim2 }));
6487
6501
  }
6488
6502
  lines.push(line4Segs);
6489
6503
  const botSegs = [];
@@ -6491,11 +6505,11 @@ function buildAgentBoxRows(agents, boxWidth, totalWidth, bright, maxPerRow) {
6491
6505
  for (const a of rowAgents) {
6492
6506
  const isError = a.status === "killed" || a.status === "crashed";
6493
6507
  const borderColor = isError ? "red" : resolveColor(a.color);
6494
- const dim = !bright;
6508
+ const dim2 = !bright;
6495
6509
  const mid = Math.floor(innerW / 2);
6496
6510
  const left = mid;
6497
6511
  const right = innerW - mid - 1;
6498
- botSegs.push(seg("\u2570" + "\u2500".repeat(left) + "\u252C" + "\u2500".repeat(right) + "\u256F", { color: borderColor, dim }));
6512
+ botSegs.push(seg("\u2570" + "\u2500".repeat(left) + "\u252C" + "\u2500".repeat(right) + "\u256F", { color: borderColor, dim: dim2 }));
6499
6513
  }
6500
6514
  lines.push(botSegs);
6501
6515
  }
@@ -6536,19 +6550,19 @@ function buildYieldNode(prompt, width, bright, known) {
6536
6550
  const lines = [];
6537
6551
  const inner = width - 2;
6538
6552
  const bg2 = BG_TINTS.gray;
6539
- const dim = !bright;
6553
+ const dim2 = !bright;
6540
6554
  if (known && prompt) {
6541
- lines.push([seg("\u256D" + "\u2500".repeat(inner) + "\u256E", { color: "yellow", dim })]);
6555
+ lines.push([seg("\u256D" + "\u2500".repeat(inner) + "\u256E", { color: "yellow", dim: dim2 })]);
6542
6556
  const wrapped = wrapText(prompt, inner - 2);
6543
6557
  for (const wl of wrapped) {
6544
6558
  const padded = padTo(" " + wl, inner);
6545
6559
  lines.push([
6546
- seg("\u2502", { color: "yellow", dim }),
6560
+ seg("\u2502", { color: "yellow", dim: dim2 }),
6547
6561
  seg(padded, { bg: bg2, dim: true }),
6548
- seg("\u2502", { color: "yellow", dim })
6562
+ seg("\u2502", { color: "yellow", dim: dim2 })
6549
6563
  ]);
6550
6564
  }
6551
- lines.push([seg("\u2570" + "\u2500".repeat(inner) + "\u256F", { color: "yellow", dim })]);
6565
+ lines.push([seg("\u2570" + "\u2500".repeat(inner) + "\u256F", { color: "yellow", dim: dim2 })]);
6552
6566
  } else {
6553
6567
  lines.push([seg("\u256D" + "\u2500".repeat(inner) + "\u256E", { dim: true })]);
6554
6568
  const placeholder = padTo(" awaiting agents\u2026", inner);