@h-rig/cli 0.0.6-alpha.76 → 0.0.6-alpha.77
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/bin/rig.js +153 -150
- package/dist/src/commands/_cli-format.js +84 -24
- package/dist/src/commands/connect.js +74 -14
- package/dist/src/commands/inbox.js +73 -13
- package/dist/src/commands/run.js +76 -16
- package/dist/src/commands/server.js +74 -14
- package/dist/src/commands/stats.js +61 -2
- package/dist/src/commands/task.js +73 -13
- package/dist/src/commands.js +153 -150
- package/dist/src/index.js +153 -150
- package/package.json +8 -8
package/dist/src/index.js
CHANGED
|
@@ -1118,6 +1118,125 @@ var init__server_client = __esm(() => {
|
|
|
1118
1118
|
]);
|
|
1119
1119
|
});
|
|
1120
1120
|
|
|
1121
|
+
// packages/cli/src/commands/_tui-theme.ts
|
|
1122
|
+
function hexToRgb(hex) {
|
|
1123
|
+
const value = hex.replace("#", "");
|
|
1124
|
+
return [
|
|
1125
|
+
Number.parseInt(value.slice(0, 2), 16),
|
|
1126
|
+
Number.parseInt(value.slice(2, 4), 16),
|
|
1127
|
+
Number.parseInt(value.slice(4, 6), 16)
|
|
1128
|
+
];
|
|
1129
|
+
}
|
|
1130
|
+
function fg(hex) {
|
|
1131
|
+
const [r, g, b] = hexToRgb(hex);
|
|
1132
|
+
return (text2) => `\x1B[38;2;${r};${g};${b}m${text2}\x1B[39m`;
|
|
1133
|
+
}
|
|
1134
|
+
function bold(text2) {
|
|
1135
|
+
return `\x1B[1m${text2}\x1B[22m`;
|
|
1136
|
+
}
|
|
1137
|
+
function statusColor(status) {
|
|
1138
|
+
switch (status) {
|
|
1139
|
+
case "running":
|
|
1140
|
+
return accent;
|
|
1141
|
+
case "preparing":
|
|
1142
|
+
case "created":
|
|
1143
|
+
case "validating":
|
|
1144
|
+
case "reviewing":
|
|
1145
|
+
case "closing-out":
|
|
1146
|
+
return cyan;
|
|
1147
|
+
case "needs-attention":
|
|
1148
|
+
case "needs_attention":
|
|
1149
|
+
return yellow;
|
|
1150
|
+
case "failed":
|
|
1151
|
+
return red;
|
|
1152
|
+
default:
|
|
1153
|
+
return ink3;
|
|
1154
|
+
}
|
|
1155
|
+
}
|
|
1156
|
+
function droneCharColor(char) {
|
|
1157
|
+
if (char === "$" || char === "@")
|
|
1158
|
+
return accent;
|
|
1159
|
+
if (char === "=" || char === "%")
|
|
1160
|
+
return accentDim;
|
|
1161
|
+
if (char === "\\" || char === "/")
|
|
1162
|
+
return ink3;
|
|
1163
|
+
return ink4;
|
|
1164
|
+
}
|
|
1165
|
+
function renderDroneFrame(tick) {
|
|
1166
|
+
const blade = BLADE_FRAMES[Math.floor(tick / 4) % BLADE_FRAMES.length];
|
|
1167
|
+
const pulse = Math.sin(tick * 0.07);
|
|
1168
|
+
const eye = pulse > 0.45 ? EYE_FRAMES[0] : pulse > -0.1 ? EYE_FRAMES[1] : EYE_FRAMES[2];
|
|
1169
|
+
return DRONE_ART.map((line) => {
|
|
1170
|
+
let out = "";
|
|
1171
|
+
let index = 0;
|
|
1172
|
+
while (index < line.length) {
|
|
1173
|
+
if (line.startsWith("!!!", index)) {
|
|
1174
|
+
out += cyan(blade);
|
|
1175
|
+
index += 3;
|
|
1176
|
+
continue;
|
|
1177
|
+
}
|
|
1178
|
+
const char = line[index];
|
|
1179
|
+
if (char === "?") {
|
|
1180
|
+
out += bold(cyan(eye));
|
|
1181
|
+
} else if (char !== " ") {
|
|
1182
|
+
out += droneCharColor(char)(char);
|
|
1183
|
+
} else {
|
|
1184
|
+
out += " ";
|
|
1185
|
+
}
|
|
1186
|
+
index += 1;
|
|
1187
|
+
}
|
|
1188
|
+
return out;
|
|
1189
|
+
});
|
|
1190
|
+
}
|
|
1191
|
+
var RIG_PALETTE, ink, ink2, ink3, ink4, accent, accentDim, cyan, red, yellow, RIG_SPINNER_FRAMES, DRONE_ART, BLADE_FRAMES, EYE_FRAMES, DRONE_WIDTH, DRONE_HEIGHT;
|
|
1192
|
+
var init__tui_theme = __esm(() => {
|
|
1193
|
+
RIG_PALETTE = {
|
|
1194
|
+
ink: "#f2f3f6",
|
|
1195
|
+
ink2: "#aeb0ba",
|
|
1196
|
+
ink3: "#6c6e79",
|
|
1197
|
+
ink4: "#44464f",
|
|
1198
|
+
accent: "#ccff4d",
|
|
1199
|
+
accentDim: "#a9d63f",
|
|
1200
|
+
cyan: "#56d8ff",
|
|
1201
|
+
red: "#ff5d5d",
|
|
1202
|
+
yellow: "#ffd24d"
|
|
1203
|
+
};
|
|
1204
|
+
ink = fg(RIG_PALETTE.ink);
|
|
1205
|
+
ink2 = fg(RIG_PALETTE.ink2);
|
|
1206
|
+
ink3 = fg(RIG_PALETTE.ink3);
|
|
1207
|
+
ink4 = fg(RIG_PALETTE.ink4);
|
|
1208
|
+
accent = fg(RIG_PALETTE.accent);
|
|
1209
|
+
accentDim = fg(RIG_PALETTE.accentDim);
|
|
1210
|
+
cyan = fg(RIG_PALETTE.cyan);
|
|
1211
|
+
red = fg(RIG_PALETTE.red);
|
|
1212
|
+
yellow = fg(RIG_PALETTE.yellow);
|
|
1213
|
+
RIG_SPINNER_FRAMES = ["\u280B", "\u2819", "\u2839", "\u2838", "\u283C", "\u2834", "\u2826", "\u2827", "\u2807", "\u280F"];
|
|
1214
|
+
DRONE_ART = [
|
|
1215
|
+
" .-=-. .-=-. ",
|
|
1216
|
+
" ( !!! ) ( !!! ) ",
|
|
1217
|
+
" '-=-'._ _.'-=-' ",
|
|
1218
|
+
" '._ _.' ",
|
|
1219
|
+
" '=$$$$$$$=.' ",
|
|
1220
|
+
" =$$$$$$$$$$$= ",
|
|
1221
|
+
" $$$@@@@@@@@@@$$$ ",
|
|
1222
|
+
" $$$@@ @@$$$ ",
|
|
1223
|
+
" $$@ ? @$$$ ",
|
|
1224
|
+
" $$$@ '-' @$$$ ",
|
|
1225
|
+
" $$$@@ @@$$$ ",
|
|
1226
|
+
" $$$@@@@@@@@@@$$$ ",
|
|
1227
|
+
" =$$$$$$$$$$$= ",
|
|
1228
|
+
" '=$$$$$$$=.' ",
|
|
1229
|
+
" _.' '._ ",
|
|
1230
|
+
" .-=-.' '.-=-. ",
|
|
1231
|
+
" ( !!! ) ( !!! ) ",
|
|
1232
|
+
" '-=-' '-=-' "
|
|
1233
|
+
];
|
|
1234
|
+
BLADE_FRAMES = ["---", "\\\\\\", "|||", "///"];
|
|
1235
|
+
EYE_FRAMES = ["@", "o", "."];
|
|
1236
|
+
DRONE_WIDTH = DRONE_ART[0].length;
|
|
1237
|
+
DRONE_HEIGHT = DRONE_ART.length;
|
|
1238
|
+
});
|
|
1239
|
+
|
|
1121
1240
|
// packages/cli/src/commands/_cli-format.ts
|
|
1122
1241
|
import { log as log3, note as note3 } from "@clack/prompts";
|
|
1123
1242
|
import pc3 from "picocolors";
|
|
@@ -1147,17 +1266,17 @@ function truncate(value, width) {
|
|
|
1147
1266
|
function pad(value, width) {
|
|
1148
1267
|
return value.length >= width ? value : `${value}${" ".repeat(width - value.length)}`;
|
|
1149
1268
|
}
|
|
1150
|
-
function
|
|
1269
|
+
function statusColor2(status) {
|
|
1151
1270
|
const normalized = status.toLowerCase();
|
|
1152
|
-
if (["completed", "merged", "closed", "done", "accepted", "pass", "selected", "approved"].includes(normalized))
|
|
1153
|
-
return
|
|
1271
|
+
if (["completed", "merged", "closed", "done", "accepted", "pass", "selected", "approved", "running"].includes(normalized))
|
|
1272
|
+
return accent;
|
|
1154
1273
|
if (["failed", "needs_attention", "needs-attention", "blocked", "error", "rejected"].includes(normalized))
|
|
1155
|
-
return
|
|
1156
|
-
if (["
|
|
1157
|
-
return
|
|
1158
|
-
if (["ready", "open", "queued", "created", "
|
|
1159
|
-
return
|
|
1160
|
-
return
|
|
1274
|
+
return red;
|
|
1275
|
+
if (["reviewing", "validating", "in_progress", "in-progress", "remote", "preparing", "closing-out"].includes(normalized))
|
|
1276
|
+
return cyan;
|
|
1277
|
+
if (["ready", "open", "queued", "created", "local", "pending"].includes(normalized))
|
|
1278
|
+
return yellow;
|
|
1279
|
+
return themeDim;
|
|
1161
1280
|
}
|
|
1162
1281
|
function compactDate(value) {
|
|
1163
1282
|
if (!value.trim())
|
|
@@ -1213,20 +1332,20 @@ function printFormattedOutput(message2, options = {}) {
|
|
|
1213
1332
|
}
|
|
1214
1333
|
function formatStatusPill(status) {
|
|
1215
1334
|
const label = status || "unknown";
|
|
1216
|
-
return
|
|
1335
|
+
return statusColor2(label)(`\u25CF ${label}`);
|
|
1217
1336
|
}
|
|
1218
1337
|
function formatSection(title, subtitle) {
|
|
1219
|
-
return `${pc3.bold(
|
|
1338
|
+
return `${pc3.bold(accent("\u25C6"))} ${pc3.bold(title)}${subtitle ? themeDim(` \u2014 ${subtitle}`) : ""}`;
|
|
1220
1339
|
}
|
|
1221
1340
|
function formatSuccessCard(title, rows = []) {
|
|
1222
|
-
const body = rows.filter(([, value]) => value !== undefined && value !== null && String(value).length > 0).map(([key, value]) => `${
|
|
1341
|
+
const body = rows.filter(([, value]) => value !== undefined && value !== null && String(value).length > 0).map(([key, value]) => `${themeFaint("\u2502")} ${themeDim(key.padEnd(12))} ${value}`);
|
|
1223
1342
|
return [formatSection(title), ...body].join(`
|
|
1224
1343
|
`);
|
|
1225
1344
|
}
|
|
1226
1345
|
function formatNextSteps(steps) {
|
|
1227
1346
|
if (steps.length === 0)
|
|
1228
1347
|
return [];
|
|
1229
|
-
return [pc3.bold("Next"), ...steps.map((step) => `${
|
|
1348
|
+
return [pc3.bold("Next"), ...steps.map((step) => `${accent("\u203A")} ${step}`)];
|
|
1230
1349
|
}
|
|
1231
1350
|
function formatTaskList(tasks, options = {}) {
|
|
1232
1351
|
if (options.raw)
|
|
@@ -1248,11 +1367,11 @@ function formatTaskList(tasks, options = {}) {
|
|
|
1248
1367
|
const statusWidth = Math.min(16, Math.max(6, ...rows.map((row) => row.status.length)));
|
|
1249
1368
|
const header = `${pc3.bold(pad("TASK", idWidth))} ${pc3.bold(pad("STATUS", statusWidth))} ${pc3.bold("TITLE")}`;
|
|
1250
1369
|
const body = rows.map((row) => {
|
|
1251
|
-
const labels = row.labels.length > 0 ?
|
|
1252
|
-
const source = row.source ?
|
|
1370
|
+
const labels = row.labels.length > 0 ? themeDim(` ${row.labels.slice(0, 4).map((label) => `#${label}`).join(" ")}`) : "";
|
|
1371
|
+
const source = row.source ? themeDim(` ${row.source}`) : "";
|
|
1253
1372
|
return [
|
|
1254
1373
|
pc3.bold(pad(truncate(row.id, idWidth), idWidth)),
|
|
1255
|
-
|
|
1374
|
+
statusColor2(row.status)(pad(truncate(row.status, statusWidth), statusWidth)),
|
|
1256
1375
|
`${row.title}${labels}${source}`
|
|
1257
1376
|
].join(" ");
|
|
1258
1377
|
});
|
|
@@ -1297,7 +1416,7 @@ function formatRunList(runs, options = {}) {
|
|
|
1297
1416
|
if (runs.length === 0) {
|
|
1298
1417
|
return [
|
|
1299
1418
|
formatSection("Runs", "none recorded"),
|
|
1300
|
-
options.source === "server" ?
|
|
1419
|
+
options.source === "server" ? themeDim("No runs recorded on the selected Rig server.") : themeDim("No runs recorded in .rig/runs."),
|
|
1301
1420
|
"",
|
|
1302
1421
|
...formatNextSteps(["Start one: `rig task run --next`", "Check server: `rig server status`"])
|
|
1303
1422
|
].join(`
|
|
@@ -1316,8 +1435,8 @@ function formatRunList(runs, options = {}) {
|
|
|
1316
1435
|
const header = `${pc3.bold(pad("RUN", idWidth))} ${pc3.bold(pad("STATUS", statusWidth))} ${pc3.bold("TITLE")}`;
|
|
1317
1436
|
const body = rows.map((row) => [
|
|
1318
1437
|
pc3.bold(pad(truncate(row.runId, idWidth), idWidth)),
|
|
1319
|
-
|
|
1320
|
-
`${row.title}${row.runtime ?
|
|
1438
|
+
statusColor2(row.status)(pad(truncate(row.status, statusWidth), statusWidth)),
|
|
1439
|
+
`${row.title}${row.runtime ? themeDim(` ${row.runtime}`) : ""}`
|
|
1321
1440
|
].join(" "));
|
|
1322
1441
|
return [formatSection("Runs", options.source === "server" ? "selected server" : "local state"), header, ...body, "", ...formatNextSteps(["Follow live: `rig run attach <run-id> --follow`", "Details: `rig run show <run-id>`"])].join(`
|
|
1323
1442
|
`);
|
|
@@ -1391,7 +1510,7 @@ function formatRunStatus(summary, options = {}) {
|
|
|
1391
1510
|
const lines = [formatSection("Run status", options.source === "server" ? "selected server" : "local state")];
|
|
1392
1511
|
lines.push("", pc3.bold(`Active runs (${activeRuns.length})`));
|
|
1393
1512
|
if (activeRuns.length === 0) {
|
|
1394
|
-
lines.push(
|
|
1513
|
+
lines.push(themeDim("No active runs."));
|
|
1395
1514
|
} else {
|
|
1396
1515
|
for (const run of activeRuns) {
|
|
1397
1516
|
lines.push(formatRunSummaryLine(run));
|
|
@@ -1399,7 +1518,7 @@ function formatRunStatus(summary, options = {}) {
|
|
|
1399
1518
|
}
|
|
1400
1519
|
lines.push("", pc3.bold(`Recent runs (${recentRuns.length})`));
|
|
1401
1520
|
if (recentRuns.length === 0) {
|
|
1402
|
-
lines.push(
|
|
1521
|
+
lines.push(themeDim("No recent terminal runs."));
|
|
1403
1522
|
} else {
|
|
1404
1523
|
for (const run of recentRuns.slice(0, 10)) {
|
|
1405
1524
|
lines.push(formatRunSummaryLine(run));
|
|
@@ -1417,14 +1536,14 @@ function formatRunSummaryLine(run) {
|
|
|
1417
1536
|
const title = runTitleOf(record);
|
|
1418
1537
|
const runtime = firstString(record, ["runtimeAdapter", "runtime", "adapter"]);
|
|
1419
1538
|
const descriptor = [taskId, title].filter(Boolean).join(" \xB7 ");
|
|
1420
|
-
return `${
|
|
1539
|
+
return `${themeFaint("\u2502")} ${pc3.bold(runId)} ${formatStatusPill(status)} ${descriptor}${runtime ? themeDim(` ${runtime}`) : ""}`;
|
|
1421
1540
|
}
|
|
1422
1541
|
function formatInboxList(kind, entries) {
|
|
1423
1542
|
const title = kind === "approvals" ? "Approval inbox" : "Input inbox";
|
|
1424
1543
|
if (entries.length === 0) {
|
|
1425
1544
|
return [
|
|
1426
1545
|
formatSection(title, "empty"),
|
|
1427
|
-
|
|
1546
|
+
themeDim(kind === "approvals" ? "No pending approvals." : "No pending user-input requests."),
|
|
1428
1547
|
"",
|
|
1429
1548
|
...formatNextSteps(["Check runs: `rig run status`", "Start work: `rig task run --next`"])
|
|
1430
1549
|
].join(`
|
|
@@ -1438,8 +1557,8 @@ function formatInboxList(kind, entries) {
|
|
|
1438
1557
|
const requestId = requestIdOf(record);
|
|
1439
1558
|
const status = firstString(record, ["status", "state"], "pending");
|
|
1440
1559
|
const prompt = firstString(record, ["prompt", "message", "reason", "title", "summary"], kind === "approvals" ? "Approval requested" : "Input requested");
|
|
1441
|
-
lines.push(`${
|
|
1442
|
-
lines.push(`${
|
|
1560
|
+
lines.push(`${themeFaint("\u2502")} ${pc3.bold(requestId)} ${formatStatusPill(status)} ${prompt}`);
|
|
1561
|
+
lines.push(`${themeFaint("\u2502")} ${themeDim("run ")} ${runId || "(unknown-run)"}${taskId ? themeDim(` task ${taskId}`) : ""}`);
|
|
1443
1562
|
}
|
|
1444
1563
|
lines.push("", ...formatNextSteps(kind === "approvals" ? ["Resolve: `rig inbox approve --run <run-id> --request <request-id> --decision approve|reject`", "Rejoin: `rig run attach <run-id> --follow`"] : ["Respond: `rig inbox respond --run <run-id> --request <request-id> --answer key=value`", "Rejoin: `rig run attach <run-id> --follow`"]));
|
|
1445
1564
|
return lines.join(`
|
|
@@ -1461,15 +1580,18 @@ function formatConnectionStatus(selected, connections) {
|
|
|
1461
1580
|
const target = !connection ? "not configured" : connection.kind === "remote" ? connection.baseUrl : "local";
|
|
1462
1581
|
return [
|
|
1463
1582
|
formatSection("Rig server", "selected for this repo"),
|
|
1464
|
-
`${
|
|
1465
|
-
`${
|
|
1466
|
-
`${
|
|
1583
|
+
`${themeFaint("\u2502")} ${themeDim("selected ")} ${pc3.bold(selected)}`,
|
|
1584
|
+
`${themeFaint("\u2502")} ${themeDim("kind ")} ${formatStatusPill(connection?.kind ?? "unknown")}`,
|
|
1585
|
+
`${themeFaint("\u2502")} ${themeDim("target ")} ${target ?? "not configured"}`,
|
|
1467
1586
|
"",
|
|
1468
1587
|
...formatNextSteps(["Change: `rig server use <alias|local>`", "List saved servers: `rig server list`"])
|
|
1469
1588
|
].join(`
|
|
1470
1589
|
`);
|
|
1471
1590
|
}
|
|
1472
|
-
var
|
|
1591
|
+
var themeDim = (value) => ink3(value), themeFaint = (value) => ink4(value);
|
|
1592
|
+
var init__cli_format = __esm(() => {
|
|
1593
|
+
init__tui_theme();
|
|
1594
|
+
});
|
|
1473
1595
|
|
|
1474
1596
|
// packages/cli/src/commands/_spinner.ts
|
|
1475
1597
|
function createTtySpinner(input) {
|
|
@@ -1919,125 +2041,6 @@ var init__pi_frontend = __esm(() => {
|
|
|
1919
2041
|
init__async_ui();
|
|
1920
2042
|
});
|
|
1921
2043
|
|
|
1922
|
-
// packages/cli/src/commands/_tui-theme.ts
|
|
1923
|
-
function hexToRgb(hex) {
|
|
1924
|
-
const value = hex.replace("#", "");
|
|
1925
|
-
return [
|
|
1926
|
-
Number.parseInt(value.slice(0, 2), 16),
|
|
1927
|
-
Number.parseInt(value.slice(2, 4), 16),
|
|
1928
|
-
Number.parseInt(value.slice(4, 6), 16)
|
|
1929
|
-
];
|
|
1930
|
-
}
|
|
1931
|
-
function fg(hex) {
|
|
1932
|
-
const [r, g, b] = hexToRgb(hex);
|
|
1933
|
-
return (text3) => `\x1B[38;2;${r};${g};${b}m${text3}\x1B[39m`;
|
|
1934
|
-
}
|
|
1935
|
-
function bold(text3) {
|
|
1936
|
-
return `\x1B[1m${text3}\x1B[22m`;
|
|
1937
|
-
}
|
|
1938
|
-
function statusColor2(status) {
|
|
1939
|
-
switch (status) {
|
|
1940
|
-
case "running":
|
|
1941
|
-
return accent;
|
|
1942
|
-
case "preparing":
|
|
1943
|
-
case "created":
|
|
1944
|
-
case "validating":
|
|
1945
|
-
case "reviewing":
|
|
1946
|
-
case "closing-out":
|
|
1947
|
-
return cyan;
|
|
1948
|
-
case "needs-attention":
|
|
1949
|
-
case "needs_attention":
|
|
1950
|
-
return yellow;
|
|
1951
|
-
case "failed":
|
|
1952
|
-
return red;
|
|
1953
|
-
default:
|
|
1954
|
-
return ink3;
|
|
1955
|
-
}
|
|
1956
|
-
}
|
|
1957
|
-
function droneCharColor(char) {
|
|
1958
|
-
if (char === "$" || char === "@")
|
|
1959
|
-
return accent;
|
|
1960
|
-
if (char === "=" || char === "%")
|
|
1961
|
-
return accentDim;
|
|
1962
|
-
if (char === "\\" || char === "/")
|
|
1963
|
-
return ink3;
|
|
1964
|
-
return ink4;
|
|
1965
|
-
}
|
|
1966
|
-
function renderDroneFrame(tick) {
|
|
1967
|
-
const blade = BLADE_FRAMES[Math.floor(tick / 4) % BLADE_FRAMES.length];
|
|
1968
|
-
const pulse = Math.sin(tick * 0.07);
|
|
1969
|
-
const eye = pulse > 0.45 ? EYE_FRAMES[0] : pulse > -0.1 ? EYE_FRAMES[1] : EYE_FRAMES[2];
|
|
1970
|
-
return DRONE_ART.map((line) => {
|
|
1971
|
-
let out = "";
|
|
1972
|
-
let index = 0;
|
|
1973
|
-
while (index < line.length) {
|
|
1974
|
-
if (line.startsWith("!!!", index)) {
|
|
1975
|
-
out += cyan(blade);
|
|
1976
|
-
index += 3;
|
|
1977
|
-
continue;
|
|
1978
|
-
}
|
|
1979
|
-
const char = line[index];
|
|
1980
|
-
if (char === "?") {
|
|
1981
|
-
out += bold(cyan(eye));
|
|
1982
|
-
} else if (char !== " ") {
|
|
1983
|
-
out += droneCharColor(char)(char);
|
|
1984
|
-
} else {
|
|
1985
|
-
out += " ";
|
|
1986
|
-
}
|
|
1987
|
-
index += 1;
|
|
1988
|
-
}
|
|
1989
|
-
return out;
|
|
1990
|
-
});
|
|
1991
|
-
}
|
|
1992
|
-
var RIG_PALETTE, ink, ink2, ink3, ink4, accent, accentDim, cyan, red, yellow, RIG_SPINNER_FRAMES, DRONE_ART, BLADE_FRAMES, EYE_FRAMES, DRONE_WIDTH, DRONE_HEIGHT;
|
|
1993
|
-
var init__tui_theme = __esm(() => {
|
|
1994
|
-
RIG_PALETTE = {
|
|
1995
|
-
ink: "#f2f3f6",
|
|
1996
|
-
ink2: "#aeb0ba",
|
|
1997
|
-
ink3: "#6c6e79",
|
|
1998
|
-
ink4: "#44464f",
|
|
1999
|
-
accent: "#ccff4d",
|
|
2000
|
-
accentDim: "#a9d63f",
|
|
2001
|
-
cyan: "#56d8ff",
|
|
2002
|
-
red: "#ff5d5d",
|
|
2003
|
-
yellow: "#ffd24d"
|
|
2004
|
-
};
|
|
2005
|
-
ink = fg(RIG_PALETTE.ink);
|
|
2006
|
-
ink2 = fg(RIG_PALETTE.ink2);
|
|
2007
|
-
ink3 = fg(RIG_PALETTE.ink3);
|
|
2008
|
-
ink4 = fg(RIG_PALETTE.ink4);
|
|
2009
|
-
accent = fg(RIG_PALETTE.accent);
|
|
2010
|
-
accentDim = fg(RIG_PALETTE.accentDim);
|
|
2011
|
-
cyan = fg(RIG_PALETTE.cyan);
|
|
2012
|
-
red = fg(RIG_PALETTE.red);
|
|
2013
|
-
yellow = fg(RIG_PALETTE.yellow);
|
|
2014
|
-
RIG_SPINNER_FRAMES = ["\u280B", "\u2819", "\u2839", "\u2838", "\u283C", "\u2834", "\u2826", "\u2827", "\u2807", "\u280F"];
|
|
2015
|
-
DRONE_ART = [
|
|
2016
|
-
" .-=-. .-=-. ",
|
|
2017
|
-
" ( !!! ) ( !!! ) ",
|
|
2018
|
-
" '-=-'._ _.'-=-' ",
|
|
2019
|
-
" '._ _.' ",
|
|
2020
|
-
" '=$$$$$$$=.' ",
|
|
2021
|
-
" =$$$$$$$$$$$= ",
|
|
2022
|
-
" $$$@@@@@@@@@@$$$ ",
|
|
2023
|
-
" $$$@@ @@$$$ ",
|
|
2024
|
-
" $$@ ? @$$$ ",
|
|
2025
|
-
" $$$@ '-' @$$$ ",
|
|
2026
|
-
" $$$@@ @@$$$ ",
|
|
2027
|
-
" $$$@@@@@@@@@@$$$ ",
|
|
2028
|
-
" =$$$$$$$$$$$= ",
|
|
2029
|
-
" '=$$$$$$$=.' ",
|
|
2030
|
-
" _.' '._ ",
|
|
2031
|
-
" .-=-.' '.-=-. ",
|
|
2032
|
-
" ( !!! ) ( !!! ) ",
|
|
2033
|
-
" '-=-' '-=-' "
|
|
2034
|
-
];
|
|
2035
|
-
BLADE_FRAMES = ["---", "\\\\\\", "|||", "///"];
|
|
2036
|
-
EYE_FRAMES = ["@", "o", "."];
|
|
2037
|
-
DRONE_WIDTH = DRONE_ART[0].length;
|
|
2038
|
-
DRONE_HEIGHT = DRONE_ART.length;
|
|
2039
|
-
});
|
|
2040
|
-
|
|
2041
2044
|
// packages/cli/src/commands/_operator-board.ts
|
|
2042
2045
|
var exports__operator_board = {};
|
|
2043
2046
|
__export(exports__operator_board, {
|
|
@@ -2108,9 +2111,9 @@ class RunsList {
|
|
|
2108
2111
|
const lines = visible.map((run, index) => {
|
|
2109
2112
|
const absolute = start + index;
|
|
2110
2113
|
const isSelected = absolute === this.selected;
|
|
2111
|
-
const dot =
|
|
2114
|
+
const dot = statusColor(run.status)(isSelected ? "\u25CF" : "\xB7");
|
|
2112
2115
|
const id = run.runId.slice(0, 8);
|
|
2113
|
-
const status =
|
|
2116
|
+
const status = statusColor(run.status)(run.status.padEnd(16));
|
|
2114
2117
|
const title = truncateToWidth(run.title, Math.max(8, width - 36));
|
|
2115
2118
|
const row = ` ${dot} ${isSelected ? bold(ink(id)) : ink3(id)} ${status} ${isSelected ? ink(title) : ink2(title)}`;
|
|
2116
2119
|
return isSelected ? accent("\u258C") + row : " " + row;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@h-rig/cli",
|
|
3
|
-
"version": "0.0.6-alpha.
|
|
3
|
+
"version": "0.0.6-alpha.77",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Rig package",
|
|
6
6
|
"license": "UNLICENSED",
|
|
@@ -25,13 +25,13 @@
|
|
|
25
25
|
"@clack/prompts": "^1.2.0",
|
|
26
26
|
"@earendil-works/pi-coding-agent": "0.79.0",
|
|
27
27
|
"@earendil-works/pi-tui": "^0.79.0",
|
|
28
|
-
"@rig/client": "npm:@h-rig/client@0.0.6-alpha.
|
|
29
|
-
"@rig/contracts": "npm:@h-rig/contracts@0.0.6-alpha.
|
|
30
|
-
"@rig/core": "npm:@h-rig/core@0.0.6-alpha.
|
|
31
|
-
"@rig/pi-rig": "npm:@h-rig/pi-rig@0.0.6-alpha.
|
|
32
|
-
"@rig/runtime": "npm:@h-rig/runtime@0.0.6-alpha.
|
|
33
|
-
"@rig/server": "npm:@h-rig/server@0.0.6-alpha.
|
|
34
|
-
"@rig/standard-plugin": "npm:@h-rig/standard-plugin@0.0.6-alpha.
|
|
28
|
+
"@rig/client": "npm:@h-rig/client@0.0.6-alpha.77",
|
|
29
|
+
"@rig/contracts": "npm:@h-rig/contracts@0.0.6-alpha.77",
|
|
30
|
+
"@rig/core": "npm:@h-rig/core@0.0.6-alpha.77",
|
|
31
|
+
"@rig/pi-rig": "npm:@h-rig/pi-rig@0.0.6-alpha.77",
|
|
32
|
+
"@rig/runtime": "npm:@h-rig/runtime@0.0.6-alpha.77",
|
|
33
|
+
"@rig/server": "npm:@h-rig/server@0.0.6-alpha.77",
|
|
34
|
+
"@rig/standard-plugin": "npm:@h-rig/standard-plugin@0.0.6-alpha.77",
|
|
35
35
|
"effect": "4.0.0-beta.78",
|
|
36
36
|
"picocolors": "^1.1.1"
|
|
37
37
|
}
|