@brainervirus/workit-cli 8.7.0 → 8.8.0
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/index.js +49 -7
- package/package.json +4 -4
package/dist/index.js
CHANGED
|
@@ -65,7 +65,7 @@ var package_default;
|
|
|
65
65
|
var init_package = __esm(() => {
|
|
66
66
|
package_default = {
|
|
67
67
|
name: "@brainervirus/workit-cli",
|
|
68
|
-
version: "8.
|
|
68
|
+
version: "8.8.0",
|
|
69
69
|
private: false,
|
|
70
70
|
description: "Workit CLI — setup wizard, doctor, and task control for agentic coding workflows",
|
|
71
71
|
keywords: [
|
|
@@ -103,9 +103,9 @@ var init_package = __esm(() => {
|
|
|
103
103
|
},
|
|
104
104
|
dependencies: {
|
|
105
105
|
"@babel/parser": "7.29.9",
|
|
106
|
-
"@brainervirus/workit-core": "^8.
|
|
107
|
-
"@brainervirus/workit-cursor": "^8.
|
|
108
|
-
"@brainervirus/workit-opencode": "^8.
|
|
106
|
+
"@brainervirus/workit-core": "^8.8.0",
|
|
107
|
+
"@brainervirus/workit-cursor": "^8.8.0",
|
|
108
|
+
"@brainervirus/workit-opencode": "^8.8.0",
|
|
109
109
|
"@inkjs/ui": "2.0.0",
|
|
110
110
|
ink: "7.1.1",
|
|
111
111
|
react: "19.2.8"
|
|
@@ -15136,6 +15136,9 @@ function summarizeRow(row) {
|
|
|
15136
15136
|
case "pr.created":
|
|
15137
15137
|
summary = `#${row.pr ?? "?"} -> ${text("base")} at ${(row.head ?? "?").slice(0, 12)}${row.created === false ? " (existing)" : ""}`;
|
|
15138
15138
|
break;
|
|
15139
|
+
case "pr.status":
|
|
15140
|
+
summary = `#${row.pr ?? "?"} ${text("state") && text("state") !== "open" ? `${text("state")} ` : ""}checks ${text("checks") || "?"} at ${(row.head ?? "?").slice(0, 12)}`;
|
|
15141
|
+
break;
|
|
15139
15142
|
case "pr.merged":
|
|
15140
15143
|
summary = `#${row.pr ?? "?"} ${text("method")} at ${(row.head ?? "?").slice(0, 12)}${text("mergeSha") ? ` -> ${text("mergeSha").slice(0, 12)}` : ""}`;
|
|
15141
15144
|
break;
|
|
@@ -63192,7 +63195,7 @@ function cursorHookDrift(installed, pluginDir) {
|
|
|
63192
63195
|
if (pluginDir)
|
|
63193
63196
|
commands.push(canonicalHookEntry(event, pluginDir).command);
|
|
63194
63197
|
const entry = Array.isArray(list) ? list[0] : undefined;
|
|
63195
|
-
if (!isRecord4(entry) || !commands.includes(entry.command) || entry.failClosed === true || event === "preToolUse" && entry.matcher !== canonical.matcher)
|
|
63198
|
+
if (!isRecord4(entry) || !commands.includes(entry.command) || entry.failClosed === true || event === "stop" && entry.loop_limit !== canonical.loop_limit || event === "preToolUse" && entry.matcher !== canonical.matcher)
|
|
63196
63199
|
drift.push(event);
|
|
63197
63200
|
}
|
|
63198
63201
|
return drift;
|
|
@@ -63215,7 +63218,11 @@ function cursorHooksEntry(pluginDir) {
|
|
|
63215
63218
|
}
|
|
63216
63219
|
var OPENCODE_NPM_PIN = "@brainervirus/workit-opencode", isRecord4 = (v) => v !== null && typeof v === "object" && !Array.isArray(v), named = (s, name) => s === name || s.startsWith(`${name}@`), CURSOR_RUNTIME_PACKAGE = "@brainervirus/workit-cursor@latest", cursorHookLauncher = (pluginDir) => pluginDir ? `node "${shellQuotedPath(path26.join(pluginDir, "hooks", "launch.mjs"))}"` : 'node "${CURSOR_PLUGIN_ROOT}/hooks/launch.mjs"', shellQuotedPath = (file) => path26.sep === "\\" ? file : file.replace(/([$`"\\])/g, "\\$1"), CURSOR_HOOK_RUN_COMMAND, CURSOR_PRETOOLUSE_MATCHER = "Write|Edit|Delete|Shell|Remove|ApplyPatch|Apply_Patch|Patch|Rename|Mkdir|Mv|Cp|Touch", CURSOR_HOOK_EVENTS, canonicalHookEntry = (event, pluginDir) => {
|
|
63217
63220
|
const command = `${cursorHookLauncher(pluginDir)} workit-cursor-hook`;
|
|
63218
|
-
|
|
63221
|
+
if (event === "preToolUse")
|
|
63222
|
+
return { command, matcher: CURSOR_PRETOOLUSE_MATCHER, failClosed: false };
|
|
63223
|
+
if (event === "stop")
|
|
63224
|
+
return { command, loop_limit: 1, failClosed: false };
|
|
63225
|
+
return { command, failClosed: false };
|
|
63219
63226
|
};
|
|
63220
63227
|
var init_registration = __esm(() => {
|
|
63221
63228
|
CURSOR_HOOK_RUN_COMMAND = `${cursorHookLauncher()} workit-cursor-hook`;
|
|
@@ -63224,6 +63231,7 @@ var init_registration = __esm(() => {
|
|
|
63224
63231
|
"beforeShellExecution",
|
|
63225
63232
|
"subagentStart",
|
|
63226
63233
|
"subagentStop",
|
|
63234
|
+
"stop",
|
|
63227
63235
|
"preCompact"
|
|
63228
63236
|
];
|
|
63229
63237
|
});
|
|
@@ -73295,6 +73303,33 @@ function buildStatusDoc(cwd, resolved, status, options) {
|
|
|
73295
73303
|
babysit: babysitAction(blockers[0]?.next ?? "READY", blockers[0]?.reason ?? null, status.draft || blockers.some((blocker) => blocker.next === "MARK_READY"))
|
|
73296
73304
|
});
|
|
73297
73305
|
}
|
|
73306
|
+
function recordPrStatus(cwd, doc, actor) {
|
|
73307
|
+
const checks = doc.checks.state;
|
|
73308
|
+
const state = doc.state;
|
|
73309
|
+
if (state !== "open" && state !== "merged" && state !== "closed")
|
|
73310
|
+
return;
|
|
73311
|
+
if (state === "open" && checks !== "passing" && checks !== "failing" && checks !== "pending")
|
|
73312
|
+
return;
|
|
73313
|
+
try {
|
|
73314
|
+
const ledger = readLedger(cwd);
|
|
73315
|
+
if (!ledger.ok)
|
|
73316
|
+
return;
|
|
73317
|
+
const last = ledger.value.rows.findLast((row) => row.type === "pr.status" && row.observer === "workit_cli" && row.pr === doc.number && row.repo === doc.repo);
|
|
73318
|
+
if (last && last.head === doc.head.sha && last.checks === checks && (last.state ?? "open") === state)
|
|
73319
|
+
return;
|
|
73320
|
+
appendObserved(cwd, {
|
|
73321
|
+
type: "pr.status",
|
|
73322
|
+
actor,
|
|
73323
|
+
branch: doc.head.branch,
|
|
73324
|
+
head: doc.head.sha,
|
|
73325
|
+
pr: doc.number,
|
|
73326
|
+
repo: doc.repo,
|
|
73327
|
+
forge: doc.forge,
|
|
73328
|
+
state,
|
|
73329
|
+
checks
|
|
73330
|
+
});
|
|
73331
|
+
} catch {}
|
|
73332
|
+
}
|
|
73298
73333
|
function prStatusReport(cwd, resolved, options = {}) {
|
|
73299
73334
|
const number = selectPr(cwd, resolved, options);
|
|
73300
73335
|
if (!number.ok)
|
|
@@ -73309,6 +73344,8 @@ function prStatusReport(cwd, resolved, options = {}) {
|
|
|
73309
73344
|
});
|
|
73310
73345
|
if (!doc.ok)
|
|
73311
73346
|
return doc;
|
|
73347
|
+
if (options.actor)
|
|
73348
|
+
recordPrStatus(cwd, doc.data, options.actor);
|
|
73312
73349
|
return success2({ doc: doc.data, raw: status.data });
|
|
73313
73350
|
}
|
|
73314
73351
|
function waitVerdict(doc, options) {
|
|
@@ -73434,6 +73471,7 @@ function recordAccepted(cwd, resolved, status, accepted, options) {
|
|
|
73434
73471
|
var MAX_LOG_TAILS = 5, GITLAB_MERGEABLE, GITHUB_MERGEABLE, NO_CHECKS_GRACE_MS = 90000;
|
|
73435
73472
|
var init_report = __esm(() => {
|
|
73436
73473
|
init_rev();
|
|
73474
|
+
init_ledger();
|
|
73437
73475
|
init_reruns();
|
|
73438
73476
|
GITLAB_MERGEABLE = new Set(["mergeable"]);
|
|
73439
73477
|
GITHUB_MERGEABLE = new Set(["clean", "unstable", "has_hooks"]);
|
|
@@ -76595,7 +76633,8 @@ async function status(argv, io) {
|
|
|
76595
76633
|
pr,
|
|
76596
76634
|
branch: flags.values.branch ?? null,
|
|
76597
76635
|
logLines: logLines ?? 60,
|
|
76598
|
-
identity: connected.data.identity
|
|
76636
|
+
identity: connected.data.identity,
|
|
76637
|
+
actor: actorFromEnv(io.env)
|
|
76599
76638
|
});
|
|
76600
76639
|
if (!report.ok)
|
|
76601
76640
|
return forgeFail(io, report);
|
|
@@ -76966,6 +77005,7 @@ async function wait(argv, io) {
|
|
|
76966
77005
|
const number = selectPr(io.cwd, resolved, { pr, branch: flags.values.branch ?? null });
|
|
76967
77006
|
if (!number.ok)
|
|
76968
77007
|
return forgeFail(io, number);
|
|
77008
|
+
const actor = actorFromEnv(io.env);
|
|
76969
77009
|
let polls = 0;
|
|
76970
77010
|
let errors = 0;
|
|
76971
77011
|
let status = null;
|
|
@@ -76980,6 +77020,7 @@ async function wait(argv, io) {
|
|
|
76980
77020
|
const doc = buildStatusDoc(io.cwd, resolved, status, { logLines: 0, behind: false });
|
|
76981
77021
|
if (!doc.ok)
|
|
76982
77022
|
return forgeFail(io, doc);
|
|
77023
|
+
recordPrStatus(io.cwd, doc.data, actor);
|
|
76983
77024
|
verdict = waitVerdict(doc.data, { head, elapsedMs });
|
|
76984
77025
|
if (verdict.state !== "waiting")
|
|
76985
77026
|
break;
|
|
@@ -77106,6 +77147,7 @@ async function run11(argv, io) {
|
|
|
77106
77147
|
var WAIT_USAGE = "workit ci wait [--pr <n> | --branch <b>] [--head <sha>] [--timeout 20m] [--interval 30s] [--json]", RERUN_USAGE = "workit ci rerun [--pr <n> | --branch <b>] [--check <name>… | --failed] --reason flake|infra [--force] [--json]", ONE_POLL_MS = 20000, MAX_POLL_ERRORS = 3, seconds = (ms) => `${Math.round(ms / 1000)}s`;
|
|
77107
77148
|
var init_ci = __esm(() => {
|
|
77108
77149
|
init_report();
|
|
77150
|
+
init_ledger();
|
|
77109
77151
|
init_autonomy();
|
|
77110
77152
|
init_output();
|
|
77111
77153
|
init_forge_common();
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@brainervirus/workit-cli",
|
|
3
|
-
"version": "8.
|
|
3
|
+
"version": "8.8.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Workit CLI — setup wizard, doctor, and task control for agentic coding workflows",
|
|
6
6
|
"keywords": [
|
|
@@ -38,9 +38,9 @@
|
|
|
38
38
|
},
|
|
39
39
|
"dependencies": {
|
|
40
40
|
"@babel/parser": "7.29.9",
|
|
41
|
-
"@brainervirus/workit-core": "^8.
|
|
42
|
-
"@brainervirus/workit-cursor": "^8.
|
|
43
|
-
"@brainervirus/workit-opencode": "^8.
|
|
41
|
+
"@brainervirus/workit-core": "^8.8.0",
|
|
42
|
+
"@brainervirus/workit-cursor": "^8.8.0",
|
|
43
|
+
"@brainervirus/workit-opencode": "^8.8.0",
|
|
44
44
|
"@inkjs/ui": "2.0.0",
|
|
45
45
|
"ink": "7.1.1",
|
|
46
46
|
"react": "19.2.8"
|