@brainervirus/workit-codex 8.29.0 → 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.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "workit",
3
- "version": "8.29.0",
3
+ "version": "8.29.1",
4
4
  "description": "Adaptive engineering workflow rails for Codex",
5
5
  "author": {
6
6
  "name": "BrainerVirus"
@@ -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
- carries your session and `--token=<token>`; the token is yours alone: never put it in a report); it already names `--kind review`:
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
- carries your session and `--token=<token>`; you share the lead's
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.
@@ -22221,6 +22221,7 @@ var LAUNCHERS = new Set([
22221
22221
  "command"
22222
22222
  ]);
22223
22223
  var PACKAGE_RUNNERS = new Set(["npx", "bunx", "pnpx"]);
22224
+ var OUTPUT_FILTERS = new Set(["tail", "head", "grep"]);
22224
22225
  var PUSH_VALUE_OPTIONS = new Set(["-o", "--push-option", "--receive-pack", "--exec", "--repo"]);
22225
22226
  var VALUE_OPTIONS = {
22226
22227
  git: new Set([
@@ -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
- function simpleCommand(command, dialect = "posix", depth = 0) {
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
- if (segments.length !== 1)
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: `workit: \`${command.trim()}\` is heavy but runs outside the heavy-check lease because a host permission rule names it (or \`workit\` is allowlisted); the host decides.`
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 each heavy part alone as \`workit check --heavy -- <segment>\` (here: ${parts.map((part) => `\`${part}\``).join("; ")}); run the other parts as their own commands.`,
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 judge = event.agentType.endsWith("reviewer") ? "reviewer" : "verifier";
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"]);
@@ -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-y685rj7k.js");
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.29.0",
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.29.0",
43
- "@brainervirus/workit-mcp": "^8.29.0"
42
+ "@brainervirus/workit-core": "^8.29.1",
43
+ "@brainervirus/workit-mcp": "^8.29.1"
44
44
  },
45
45
  "engines": {
46
46
  "node": ">=24"