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/README.md +10 -0
- package/dist/cli.js +283 -213
- package/dist/cli.js.map +1 -1
- package/dist/daemon.js +15 -1
- package/dist/daemon.js.map +1 -1
- package/dist/tui.js +72 -58
- package/dist/tui.js.map +1 -1
- package/package.json +1 -1
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,
|
|
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 (
|
|
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
|
|
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${
|
|
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${
|
|
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
|
|
4419
|
-
|
|
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
|
|
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
|
|
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 (
|
|
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 (
|
|
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
|
|
6168
|
+
const bold2 = "\x1B[1m";
|
|
6155
6169
|
const inverse = focused ? "\x1B[7m" : "";
|
|
6156
|
-
line += `${inverse}${
|
|
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
|
|
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 &&
|
|
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,
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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);
|