@brainervirus/workit-codex 8.28.1 → 8.29.1
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/.codex-plugin/plugin.json +1 -1
- package/agents/workit-reviewer.toml +2 -3
- package/agents/workit-verifier.toml +2 -4
- package/dist/launch-mcp.js +15 -1
- package/dist/{workit-hook-27bwpc4a.js → workit-hook-9pq84bdw.js} +1 -1
- package/dist/{workit-hook-2m8a4m5j.js → workit-hook-eaahdgen.js} +14 -1
- package/dist/{workit-hook-0vzd6e1j.js → workit-hook-q91d0376.js} +18 -10
- package/dist/workit-hook.js +2 -2
- package/package.json +3 -3
|
@@ -17,9 +17,8 @@ description of it. Follow the workit-review skill (`$workit-review`).
|
|
|
17
17
|
4. Each finding: file:line, severity (blocker, major, minor, nit), evidence
|
|
18
18
|
(hunk, test or command output), concrete fix.
|
|
19
19
|
5. Record the verdict:
|
|
20
|
-
start from the exact verdict command the SubagentStart hook put in your context (it
|
|
21
|
-
|
|
22
|
-
`workit ledger verdict verified|failed|blocked --kind review --branch <b> --session <id> --token=<token> --how "<what you read and ran>"`
|
|
20
|
+
start from the exact verdict command the SubagentStart hook put in your context (it names no --session or --token: your shell already acts as your own session); it already names `--kind review`:
|
|
21
|
+
`workit ledger verdict verified|failed|blocked --kind review --branch <b> --how "<what you read and ran>"`
|
|
23
22
|
(`verified` with `--kind review`: no blocker or major finding left).
|
|
24
23
|
Record a design choice you had to make as `workit ledger ruling`.
|
|
25
24
|
|
|
@@ -20,10 +20,8 @@ it.
|
|
|
20
20
|
5. Judge each acceptance line as met, not met, or not verifiable, citing what
|
|
21
21
|
you observed. Label every claim measured, inferred or guess.
|
|
22
22
|
6. Record the verdict, then report it:
|
|
23
|
-
start from the exact verdict command the SubagentStart hook put in your context (it
|
|
24
|
-
|
|
25
|
-
`WORKIT_SESSION_ID`, which authored the work) and pick its `--kind <live|unit>`:
|
|
26
|
-
`workit ledger verdict verified|tests-verified|type-check-only|failed|blocked --kind <live|unit> --branch <b> --session <id> --token=<token> --how "<what you ran and saw>"`.
|
|
23
|
+
start from the exact verdict command the SubagentStart hook put in your context (it names no --session or --token: your shell already acts as your own session, never set WORKIT_SESSION_ID) and pick its `--kind <live|unit>`:
|
|
24
|
+
`workit ledger verdict verified|tests-verified|type-check-only|failed|blocked --kind <live|unit> --branch <b> --how "<what you ran and saw>"`.
|
|
27
25
|
`verified` means the change was observed working on its real surface
|
|
28
26
|
(verify-<app>, `--kind live`); `tests-verified` means only tests ran. If the ledger refuses you as an author, report that;
|
|
29
27
|
never pass `--self` to get around it.
|
package/dist/launch-mcp.js
CHANGED
|
@@ -19292,9 +19292,22 @@ function detectedChecks(root) {
|
|
|
19292
19292
|
return checks;
|
|
19293
19293
|
}
|
|
19294
19294
|
var GATES = ["testing", "verification"];
|
|
19295
|
+
function configFileFor(root) {
|
|
19296
|
+
const own = checksConfigFile(root);
|
|
19297
|
+
if (fs11.existsSync(own))
|
|
19298
|
+
return own;
|
|
19299
|
+
const common = git3(root, ["rev-parse", "--path-format=absolute", "--git-common-dir"]);
|
|
19300
|
+
if (!common || path13.basename(common) !== ".git")
|
|
19301
|
+
return own;
|
|
19302
|
+
const main = path13.dirname(common);
|
|
19303
|
+
if (path13.resolve(main) === path13.resolve(root))
|
|
19304
|
+
return own;
|
|
19305
|
+
const shared = checksConfigFile(main);
|
|
19306
|
+
return fs11.existsSync(shared) ? shared : own;
|
|
19307
|
+
}
|
|
19295
19308
|
function loadCheckConfig(cwd) {
|
|
19296
19309
|
const root = checkRoot(cwd);
|
|
19297
|
-
const file =
|
|
19310
|
+
const file = configFileFor(root);
|
|
19298
19311
|
const legacy = path13.basename(file) === LEGACY_CHECKS_FILE;
|
|
19299
19312
|
const label = legacy ? LEGACY_CHECKS_FILE : CHECKS_FILE;
|
|
19300
19313
|
const note = legacy ? {
|
|
@@ -22208,6 +22221,7 @@ var LAUNCHERS = new Set([
|
|
|
22208
22221
|
"command"
|
|
22209
22222
|
]);
|
|
22210
22223
|
var PACKAGE_RUNNERS = new Set(["npx", "bunx", "pnpx"]);
|
|
22224
|
+
var OUTPUT_FILTERS = new Set(["tail", "head", "grep"]);
|
|
22211
22225
|
var PUSH_VALUE_OPTIONS = new Set(["-o", "--push-option", "--receive-pack", "--exec", "--repo"]);
|
|
22212
22226
|
var VALUE_OPTIONS = {
|
|
22213
22227
|
git: new Set([
|
|
@@ -137,9 +137,22 @@ function detectedChecks(root) {
|
|
|
137
137
|
return checks;
|
|
138
138
|
}
|
|
139
139
|
var GATES = ["testing", "verification"];
|
|
140
|
+
function configFileFor(root) {
|
|
141
|
+
const own = checksConfigFile(root);
|
|
142
|
+
if (fs.existsSync(own))
|
|
143
|
+
return own;
|
|
144
|
+
const common = git(root, ["rev-parse", "--path-format=absolute", "--git-common-dir"]);
|
|
145
|
+
if (!common || path.basename(common) !== ".git")
|
|
146
|
+
return own;
|
|
147
|
+
const main = path.dirname(common);
|
|
148
|
+
if (path.resolve(main) === path.resolve(root))
|
|
149
|
+
return own;
|
|
150
|
+
const shared = checksConfigFile(main);
|
|
151
|
+
return fs.existsSync(shared) ? shared : own;
|
|
152
|
+
}
|
|
140
153
|
function loadCheckConfig(cwd) {
|
|
141
154
|
const root = checkRoot(cwd);
|
|
142
|
-
const file =
|
|
155
|
+
const file = configFileFor(root);
|
|
143
156
|
const legacy = path.basename(file) === LEGACY_CHECKS_FILE;
|
|
144
157
|
const label = legacy ? LEGACY_CHECKS_FILE : CHECKS_FILE;
|
|
145
158
|
const note = legacy ? {
|
|
@@ -14,7 +14,7 @@ import {
|
|
|
14
14
|
gateCheckNames,
|
|
15
15
|
checkCommand,
|
|
16
16
|
maybeHeavy2
|
|
17
|
-
} from "./workit-hook-
|
|
17
|
+
} from "./workit-hook-eaahdgen.js";
|
|
18
18
|
// packages/workit-core/src/hooks/descriptor.ts
|
|
19
19
|
var support = (descriptor, axis) => {
|
|
20
20
|
if (axis.startsWith("event:"))
|
|
@@ -18675,17 +18675,22 @@ function workitCheckTail(words) {
|
|
|
18675
18675
|
return null;
|
|
18676
18676
|
return args.slice(0, split).includes("--shell") ? { script: tail.join(" "), cwd } : { argv: tail, cwd };
|
|
18677
18677
|
}
|
|
18678
|
-
|
|
18678
|
+
var OUTPUT_FILTERS = new Set(["tail", "head", "grep"]);
|
|
18679
|
+
function simpleCommand(command, dialect = "posix", depth = 0, shaped = false) {
|
|
18679
18680
|
let segments;
|
|
18680
18681
|
try {
|
|
18681
18682
|
segments = segmentsOf(command, dialect);
|
|
18682
18683
|
} catch {
|
|
18683
18684
|
return null;
|
|
18684
18685
|
}
|
|
18685
|
-
|
|
18686
|
+
const filter = shaped && segments.length === 2 ? segments[1] : null;
|
|
18687
|
+
if (filter) {
|
|
18688
|
+
if (!segments[0].pipe || !OUTPUT_FILTERS.has(commandName(filter.words[0])) || filter.group || filter.pipe || filter.unanalyzable || filter.subs?.length || filter.stdin?.length)
|
|
18689
|
+
return null;
|
|
18690
|
+
} else if (segments.length !== 1)
|
|
18686
18691
|
return null;
|
|
18687
18692
|
const [segment] = segments;
|
|
18688
|
-
if (segment.group || segment.pipe || segment.unanalyzable || segment.redirects.length || segment.subs?.length || segment.stdin?.length)
|
|
18693
|
+
if (segment.group || segment.pipe && !filter || segment.unanalyzable || segment.redirects.length && !shaped || segment.subs?.length || segment.stdin?.length)
|
|
18689
18694
|
return null;
|
|
18690
18695
|
const { words } = stripPrefixes(segment.words);
|
|
18691
18696
|
const name = commandName(words[0]);
|
|
@@ -20460,7 +20465,7 @@ function heavyPlan(command, options) {
|
|
|
20460
20465
|
const heavy = heavyLines(lines, options);
|
|
20461
20466
|
if (!heavy.length)
|
|
20462
20467
|
return { kind: "none" };
|
|
20463
|
-
const simple = simpleCommand(command, dialect);
|
|
20468
|
+
const simple = simpleCommand(command, dialect, 0, true);
|
|
20464
20469
|
const single = simple && !WORKIT.test(baseName2(simple[0])) && heavyLines([simple], options)[0];
|
|
20465
20470
|
const judged = single ? [{ words: lines.flat(), text: command }] : heavy.map((match) => ({
|
|
20466
20471
|
words: match.line,
|
|
@@ -20472,7 +20477,7 @@ function heavyPlan(command, options) {
|
|
|
20472
20477
|
if (!verdict.ok)
|
|
20473
20478
|
return {
|
|
20474
20479
|
kind: "passthrough",
|
|
20475
|
-
note:
|
|
20480
|
+
note: ""
|
|
20476
20481
|
};
|
|
20477
20482
|
}
|
|
20478
20483
|
if (single) {
|
|
@@ -20482,7 +20487,7 @@ function heavyPlan(command, options) {
|
|
|
20482
20487
|
const parts = heavy.map((match) => leaseCommand(match.line));
|
|
20483
20488
|
return {
|
|
20484
20489
|
kind: "split",
|
|
20485
|
-
reason: `heavy_command: \`${command.trim()}\` chains heavy work (${heavy.map((match) => match.reason).join("; ")}) with other commands, and a chain cannot run under the machine-wide heavy-check lease. Run
|
|
20490
|
+
reason: `heavy_command: \`${command.trim()}\` chains heavy work (${heavy.map((match) => match.reason).join("; ")}) with other commands, and a chain cannot run under the machine-wide heavy-check lease. Run the heavy part alone, now: \`${parts[0]}\`; then run the other parts as their own commands${parts.length > 1 ? ", each heavy one the same way" : ""}.`,
|
|
20486
20491
|
unblock: parts[0] ?? null
|
|
20487
20492
|
};
|
|
20488
20493
|
}
|
|
@@ -22431,12 +22436,15 @@ ${subagentStartText({ ...input, cwd: "" }, descriptor, event)}`;
|
|
|
22431
22436
|
return readOnly;
|
|
22432
22437
|
const own = subagentSession(session, event.agentId);
|
|
22433
22438
|
const cwd = input.cwd || process.cwd();
|
|
22439
|
+
const judge = event.agentType.endsWith("reviewer") ? "reviewer" : "verifier";
|
|
22440
|
+
const pick = judge === "verifier" ? ", --kind live when you drove the real surface" : "";
|
|
22441
|
+
const branch = judgeBranch(cwd);
|
|
22442
|
+
if (descriptor.host === "codex_cli" || descriptor.host === "codex_desktop")
|
|
22443
|
+
return `${readOnly} Its shell already acts as its own Workit session, so the ledger tells its verdicts apart from the author's. Record the verdict with exactly this command (pick the result${pick}, name the candidate branch if it differs, say what you ran): \`${verdictCommand({ branch, judge })}\`. Add no session or token option to it, and never set WORKIT_SESSION_ID by hand.`;
|
|
22434
22444
|
const token = session ? recordIssuedSession(cwd, session, own) : null;
|
|
22435
22445
|
if (session && !token)
|
|
22436
22446
|
return `${readOnly} ${own} was already issued to an earlier subagent, so no token is handed out again and a verdict under it would be refused (unbound_session). Record no verdict as ${own}: spawn a fresh verifier or reviewer, which gets its own session and token.`;
|
|
22437
|
-
const
|
|
22438
|
-
const line = verdictCommand({ branch: judgeBranch(cwd), judge, session: own, token });
|
|
22439
|
-
const pick = judge === "verifier" ? ", --kind live when you drove the real surface" : "";
|
|
22447
|
+
const line = verdictCommand({ branch, judge, session: own, token });
|
|
22440
22448
|
return `${readOnly} Its own Workit session is ${own}, so the ledger tells its verdicts apart from the author's. Record the verdict with exactly this command (pick the result${pick}, name the candidate branch if it differs, say what you ran): \`${line}\`.${token ? " The token is this subagent's alone: never write it into a report, a file or a commit. --token needs a workit CLI at least as new as this plugin; if the CLI answers that --token is an unknown option, update the workit CLI (workit upgrade --cli) and record again." : ""}`;
|
|
22441
22449
|
};
|
|
22442
22450
|
var PRE_TOOL = new Set(["shell.pre", "write.pre", "tool.pre"]);
|
package/dist/workit-hook.js
CHANGED
|
@@ -34,7 +34,7 @@ if (tooOld) {
|
|
|
34
34
|
`);
|
|
35
35
|
process.exit(0);
|
|
36
36
|
}
|
|
37
|
-
var { maybeHeavy, stateDir } = await import("./workit-hook-
|
|
37
|
+
var { maybeHeavy, stateDir } = await import("./workit-hook-9pq84bdw.js");
|
|
38
38
|
var { standingPending } = await import("./workit-hook-mk64s4fk.js");
|
|
39
39
|
var payload = "";
|
|
40
40
|
for await (const chunk of process.stdin)
|
|
@@ -79,6 +79,6 @@ if (quiet)
|
|
|
79
79
|
process.stdout.write(`${JSON.stringify({ hookSpecificOutput: { hookEventName: quiet } })}
|
|
80
80
|
`);
|
|
81
81
|
else {
|
|
82
|
-
const { runCodexHook } = await import("./workit-hook-
|
|
82
|
+
const { runCodexHook } = await import("./workit-hook-q91d0376.js");
|
|
83
83
|
await runCodexHook([payload]);
|
|
84
84
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@brainervirus/workit-codex",
|
|
3
|
-
"version": "8.
|
|
3
|
+
"version": "8.29.1",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Workit Codex CLI/desktop plugin — shared MCP transport, hooks, method skills, and verifier/reviewer/implementer agents",
|
|
6
6
|
"keywords": [
|
|
@@ -39,8 +39,8 @@
|
|
|
39
39
|
"build": "bun scripts/build.ts"
|
|
40
40
|
},
|
|
41
41
|
"devDependencies": {
|
|
42
|
-
"@brainervirus/workit-core": "^8.
|
|
43
|
-
"@brainervirus/workit-mcp": "^8.
|
|
42
|
+
"@brainervirus/workit-core": "^8.29.1",
|
|
43
|
+
"@brainervirus/workit-mcp": "^8.29.1"
|
|
44
44
|
},
|
|
45
45
|
"engines": {
|
|
46
46
|
"node": ">=24"
|