@brainervirus/workit-cli 8.38.1 → 8.38.2
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 +21 -9
- package/package.json +3 -3
package/dist/index.js
CHANGED
|
@@ -9317,7 +9317,7 @@ var package_default;
|
|
|
9317
9317
|
var init_package = __esm(() => {
|
|
9318
9318
|
package_default = {
|
|
9319
9319
|
name: "@brainervirus/workit-cli",
|
|
9320
|
-
version: "8.38.
|
|
9320
|
+
version: "8.38.2",
|
|
9321
9321
|
private: false,
|
|
9322
9322
|
description: "Workit CLI — setup wizard, doctor, and task control for agentic coding workflows",
|
|
9323
9323
|
keywords: [
|
|
@@ -9355,13 +9355,13 @@ var init_package = __esm(() => {
|
|
|
9355
9355
|
},
|
|
9356
9356
|
dependencies: {
|
|
9357
9357
|
"@babel/parser": "7.29.9",
|
|
9358
|
-
"@brainervirus/workit-cursor": "^8.38.
|
|
9358
|
+
"@brainervirus/workit-cursor": "^8.38.2",
|
|
9359
9359
|
"@inkjs/ui": "2.0.0",
|
|
9360
9360
|
ink: "7.1.1",
|
|
9361
9361
|
react: "19.2.8"
|
|
9362
9362
|
},
|
|
9363
9363
|
devDependencies: {
|
|
9364
|
-
"@brainervirus/workit-core": "^8.38.
|
|
9364
|
+
"@brainervirus/workit-core": "^8.38.2"
|
|
9365
9365
|
},
|
|
9366
9366
|
engines: {
|
|
9367
9367
|
node: ">=24"
|
|
@@ -69625,8 +69625,8 @@ var TOKEN_PLACEHOLDER2 = "YOUR_TOKEN_HERE", findDevFromCwd = (cwd) => {
|
|
|
69625
69625
|
return `${minutes} min ago`;
|
|
69626
69626
|
const hours = Math.round(minutes / 60);
|
|
69627
69627
|
return hours < 48 ? `${hours} h ago` : `${Math.round(hours / 24)} d ago`;
|
|
69628
|
-
}, checkHookRuns = (res) => {
|
|
69629
|
-
const runs = readHookRuns(res.hookStateDir)
|
|
69628
|
+
}, HOOK_RUN_BASELINE, checkHookRuns = (res) => {
|
|
69629
|
+
const runs = readHookRuns(res.hookStateDir);
|
|
69630
69630
|
if (runs.length === 0)
|
|
69631
69631
|
return {
|
|
69632
69632
|
id: "hook_runs",
|
|
@@ -69636,7 +69636,8 @@ var TOKEN_PLACEHOLDER2 = "YOUR_TOKEN_HERE", findDevFromCwd = (cwd) => {
|
|
|
69636
69636
|
const now = Date.now();
|
|
69637
69637
|
const hosts = [...new Set(runs.map((run) => run.host))].toSorted();
|
|
69638
69638
|
const parts = hosts.map((host) => {
|
|
69639
|
-
const
|
|
69639
|
+
const others = runs.filter((run) => run.host === host && !HOOK_RUN_BASELINE.includes(run.event)).map((run) => run.event).toSorted();
|
|
69640
|
+
const seen = [...HOOK_RUN_BASELINE, ...new Set(others)].map((event) => {
|
|
69640
69641
|
const run = runs.find((r) => r.host === host && r.event === event);
|
|
69641
69642
|
return `${event} ${run ? `${ago(now - Date.parse(run.at))} (${run.count})` : "never"}`;
|
|
69642
69643
|
});
|
|
@@ -69703,6 +69704,7 @@ var init_doctor = __esm(() => {
|
|
|
69703
69704
|
DAY_MS = 24 * 60 * 60 * 1000;
|
|
69704
69705
|
SEMVER = /\d+\.\d+\.\d+/;
|
|
69705
69706
|
workitVersions = new Map;
|
|
69707
|
+
HOOK_RUN_BASELINE = ["SessionStart", "PreToolUse"];
|
|
69706
69708
|
RUN_CHECKS = [
|
|
69707
69709
|
checkRuntime,
|
|
69708
69710
|
checkVersions,
|
|
@@ -86256,7 +86258,7 @@ async function merge3(argv, io) {
|
|
|
86256
86258
|
const cleanup = result.data.deletedBranch === true ? cleanupMergedBranch(io.cwd, result.data.branch, result.data.head) : null;
|
|
86257
86259
|
return emit(io, ok2({ ...result.data, localCleanup: cleanup }), (data) => [
|
|
86258
86260
|
`merged ${connected.data.forge.kind === "github" ? "PR #" : "MR !"}${data.number} (${data.method}) at head ${data.head.slice(0, 12)}${data.mergeSha ? ` -> ${data.mergeSha.slice(0, 12)}` : ""}`,
|
|
86259
|
-
data.unverified ? `UNVERIFIED: merged without a verdict (--unverified: ${data.unverified.reason}); ledger ${data.unverified.recorded}` :
|
|
86261
|
+
data.unverified ? `UNVERIFIED: merged without a verdict (--unverified: ${data.unverified.reason}); ledger ${data.unverified.recorded}` : mergedOnLine(data.verdict),
|
|
86260
86262
|
...data.baseCi.note ? [data.baseCi.note] : [],
|
|
86261
86263
|
...data.mergeBack.length ? [
|
|
86262
86264
|
`merge back: ${data.base} is the ${data.mergeBackTrack} production branch; bring it into ${data.mergeBack.join(", ")}`
|
|
@@ -86424,7 +86426,15 @@ async function run15(argv, io) {
|
|
|
86424
86426
|
return reply(rest, io);
|
|
86425
86427
|
return usage4(io, sub && !sub.startsWith("-") ? `unknown pr subcommand "${sub}"` : "missing pr subcommand", USAGE9);
|
|
86426
86428
|
}
|
|
86427
|
-
var STATUS_USAGE = "workit pr status [--pr <n> | --branch <b>] [--log-lines 60] [--json]", CREATE_USAGE = "workit pr create [--base <b> | --track <t>] (--title <t> [--body <text> | --body-file <f|->] | --fill) [--issue <#n|ID|url>]… [--refs] [--label <l>]… [--reviewer <login>]… [--draft] [--json]", MERGE_USAGE = "workit pr merge [--pr <n>] [--squash|--merge|--rebase | --method squash|merge|rebase] [--subject <s>] [--body <b> | --body-file <f|->] [--delete-branch | --keep-branch] [--unverified --reason <why>] [--base-red-ok --reason <why>] [--json]", READY_USAGE = "workit pr ready [--pr <n>] [--undo] [--json]", EDIT_USAGE = "workit pr edit [--pr <n>] [--title <t>] [--body-file <f|->] [--add-label <l>]… [--remove-label <l>]… [--add-reviewer <login>]… [--base <b>] [--json]", THREADS_USAGE = "workit pr threads [--pr <n>] [--json]", REPLY_USAGE = "workit pr reply [--pr <n>] --thread <id> [--body-file <f|->] [--resolve] [--json]", USAGE9 = "workit pr status|create|merge|ready|edit|threads|reply ... (workit help pr)", prLabel = (kind, number) => `${kind === "github" ? "PR #" : "MR !"}${number}`, NEED_TEXT, mergedVerdictLine = (landed) => landed === "untracked" ? "merged outside workit (no merge record)" : landed.unverified ? `merged unverified at ${(landed.head ?? "?").slice(0, 12)} (recorded bypass)` : landed.lane === "none" && !landed.verdictId ? `merged at ${(landed.head ?? "?").slice(0, 12)} with no verdict (lane none)` : landed.review === "self-reviewed" ? `merged self-reviewed (lane self) with the author's verdict ${landed.verdictId ?? "?"} at ${(landed.head ?? "?").slice(0, 12)}` : `merged with accepted verdict ${landed.verdictId ?? "?"} at ${(landed.head ?? "?").slice(0, 12)}${landed.intentOnly ? " (merge intent recorded; the merge call itself failed)" : ""}`,
|
|
86429
|
+
var STATUS_USAGE = "workit pr status [--pr <n> | --branch <b>] [--log-lines 60] [--json]", CREATE_USAGE = "workit pr create [--base <b> | --track <t>] (--title <t> [--body <text> | --body-file <f|->] | --fill) [--issue <#n|ID|url>]… [--refs] [--label <l>]… [--reviewer <login>]… [--draft] [--json]", MERGE_USAGE = "workit pr merge [--pr <n>] [--squash|--merge|--rebase | --method squash|merge|rebase] [--subject <s>] [--body <b> | --body-file <f|->] [--delete-branch | --keep-branch] [--unverified --reason <why>] [--base-red-ok --reason <why>] [--json]", READY_USAGE = "workit pr ready [--pr <n>] [--undo] [--json]", EDIT_USAGE = "workit pr edit [--pr <n>] [--title <t>] [--body-file <f|->] [--add-label <l>]… [--remove-label <l>]… [--add-reviewer <login>]… [--base <b>] [--json]", THREADS_USAGE = "workit pr threads [--pr <n>] [--json]", REPLY_USAGE = "workit pr reply [--pr <n>] --thread <id> [--body-file <f|->] [--resolve] [--json]", USAGE9 = "workit pr status|create|merge|ready|edit|threads|reply ... (workit help pr)", prLabel = (kind, number) => `${kind === "github" ? "PR #" : "MR !"}${number}`, NEED_TEXT, mergedVerdictLine = (landed) => landed === "untracked" ? "merged outside workit (no merge record)" : landed.unverified ? `merged unverified at ${(landed.head ?? "?").slice(0, 12)} (recorded bypass)` : landed.lane === "none" && !landed.verdictId ? `merged at ${(landed.head ?? "?").slice(0, 12)} with no verdict (lane none)` : landed.review === "self-reviewed" ? `merged self-reviewed (lane self) with the author's verdict ${landed.verdictId ?? "?"} at ${(landed.head ?? "?").slice(0, 12)}` : `merged with accepted verdict ${landed.verdictId ?? "?"} at ${(landed.head ?? "?").slice(0, 12)}${landed.intentOnly ? " (merge intent recorded; the merge call itself failed)" : ""}`, mergedOnLine = (verdict) => {
|
|
86430
|
+
if (verdict.review === "self-reviewed")
|
|
86431
|
+
return `self-reviewed (lane ${verdict.lane}): the author's verdict ${verdict.verdictId ?? "?"}; no independent verdict accepted for that head`;
|
|
86432
|
+
if (!verdict.verdictId)
|
|
86433
|
+
return `no verdict required (lane ${verdict.lane})`;
|
|
86434
|
+
if (!verdict.accepted && !verdict.cover && !verdict.carry)
|
|
86435
|
+
return `verdict ${verdict.verdictId} satisfied lane ${verdict.lane}; not an accepted independent verdict for that head`;
|
|
86436
|
+
return `verdict ${verdict.verdictId} accepted for that head${verdict.cover ? ` (stack verdict on ${verdict.cover.branch} @ ${verdict.cover.head.slice(0, 12)})` : verdict.carry ? ` (${carryLabel(verdict.carry)})` : ""}`;
|
|
86437
|
+
}, acceptedHow = (verdict) => verdict.cover ? `stack verdict ${verdict.cover.verdictId} on ${verdict.cover.branch} @ ${verdict.cover.head.slice(0, 12)}` : verdict.carry ? carryLabel(verdict.carry) : verdict.basis, METHODS2;
|
|
86428
86438
|
var init_pr = __esm(() => {
|
|
86429
86439
|
init_autonomy();
|
|
86430
86440
|
init_issue_link();
|
|
@@ -89527,6 +89537,8 @@ async function run22(argv, io) {
|
|
|
89527
89537
|
if (rest.length !== 1)
|
|
89528
89538
|
return usage5(io, `ledger verdict takes one result: ${VERDICT_RESULTS.join("|")}`);
|
|
89529
89539
|
const claimed = values.self === true ? null : claimedSession(acting);
|
|
89540
|
+
if (values.self !== true && claimed === null)
|
|
89541
|
+
return emit(io, fail2("blocked", NO_SESSION_ERROR, { unblock: NO_SESSION_UNBLOCK }));
|
|
89530
89542
|
const token = values.token ?? io.env.WORKIT_SESSION_TOKEN ?? null;
|
|
89531
89543
|
const refusal = claimed === null ? null : sessionClaimRefusal(io.env, claimed, io.cwd, { token, flag: acting.source === "flag" });
|
|
89532
89544
|
if (refusal)
|
|
@@ -89641,7 +89653,7 @@ var USAGE15 = "workit ledger decision|ruling|verdict|standing|list|check ... (wo
|
|
|
89641
89653
|
};
|
|
89642
89654
|
}
|
|
89643
89655
|
return { actor, source: "env" };
|
|
89644
|
-
}, claimedSession = (acting) => acting.source === "as" ? acting.derivedFrom ?? null : acting.actor.session, positiveInt2 = (value, flag) => {
|
|
89656
|
+
}, NO_SESSION_ERROR = "no_session: this verdict cannot bind a host session (WORKIT_SESSION_ID is unset or empty and no --session was named), so it would be stored as a self verdict that no gate accepts; nothing was recorded", NO_SESSION_UNBLOCK = "a Claude Code verifier or reviewer passes exactly the `--session <lead>:<agent id> --token=<token>` its SubagentStart hook put in its context; none there means that hook did not bind it (check `workit doctor`: hook_runs lists SubagentStart, hook_issued_sessions passes), so the lead spawns a fresh workit:verifier or workit:reviewer. On Codex, OpenCode and Pi record from the agent's own shell, where the host sets its session. The author records `--self` instead (never accepted as independent)", claimedSession = (acting) => acting.source === "as" ? acting.derivedFrom ?? null : acting.actor.session, positiveInt2 = (value, flag) => {
|
|
89645
89657
|
if (value === undefined)
|
|
89646
89658
|
return;
|
|
89647
89659
|
const parsed = Number(value);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@brainervirus/workit-cli",
|
|
3
|
-
"version": "8.38.
|
|
3
|
+
"version": "8.38.2",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Workit CLI — setup wizard, doctor, and task control for agentic coding workflows",
|
|
6
6
|
"keywords": [
|
|
@@ -38,13 +38,13 @@
|
|
|
38
38
|
},
|
|
39
39
|
"dependencies": {
|
|
40
40
|
"@babel/parser": "7.29.9",
|
|
41
|
-
"@brainervirus/workit-cursor": "^8.38.
|
|
41
|
+
"@brainervirus/workit-cursor": "^8.38.2",
|
|
42
42
|
"@inkjs/ui": "2.0.0",
|
|
43
43
|
"ink": "7.1.1",
|
|
44
44
|
"react": "19.2.8"
|
|
45
45
|
},
|
|
46
46
|
"devDependencies": {
|
|
47
|
-
"@brainervirus/workit-core": "^8.38.
|
|
47
|
+
"@brainervirus/workit-core": "^8.38.2"
|
|
48
48
|
},
|
|
49
49
|
"engines": {
|
|
50
50
|
"node": ">=24"
|