@brainervirus/workit-claude-code 8.30.0 → 8.31.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/dist/workit.js CHANGED
@@ -9285,7 +9285,7 @@ var package_default;
9285
9285
  var init_package = __esm(() => {
9286
9286
  package_default = {
9287
9287
  name: "@brainervirus/workit-cli",
9288
- version: "8.30.0",
9288
+ version: "8.31.1",
9289
9289
  private: false,
9290
9290
  description: "Workit CLI — setup wizard, doctor, and task control for agentic coding workflows",
9291
9291
  keywords: [
@@ -9323,13 +9323,13 @@ var init_package = __esm(() => {
9323
9323
  },
9324
9324
  dependencies: {
9325
9325
  "@babel/parser": "7.29.9",
9326
- "@brainervirus/workit-cursor": "^8.30.0",
9326
+ "@brainervirus/workit-cursor": "^8.31.1",
9327
9327
  "@inkjs/ui": "2.0.0",
9328
9328
  ink: "7.1.1",
9329
9329
  react: "19.2.8"
9330
9330
  },
9331
9331
  devDependencies: {
9332
- "@brainervirus/workit-core": "^8.30.0"
9332
+ "@brainervirus/workit-core": "^8.31.1"
9333
9333
  },
9334
9334
  engines: {
9335
9335
  node: ">=24"
@@ -14621,6 +14621,18 @@ function diffHash(cwd, base, head) {
14621
14621
  }
14622
14622
  return `sha256:${hash.digest("hex")}`;
14623
14623
  }
14624
+ function cleanRebase(cwd, range) {
14625
+ if (!Object.values(range).every(safeRef2))
14626
+ return false;
14627
+ const fromFork = git4(cwd, ["merge-base", range.fromBase, range.from]);
14628
+ const toFork = git4(cwd, ["merge-base", range.toBase, range.to]);
14629
+ if (!fromFork || !toFork || fromFork === toFork)
14630
+ return false;
14631
+ const merged = gitRun2(cwd, ["merge-tree", "--write-tree", "--no-messages", `--merge-base=${fromFork}`, toFork, range.from], GIT_TIMEOUTS.worktree);
14632
+ const tree = merged.ok ? merged.stdout.split(`
14633
+ `)[0]?.trim() : null;
14634
+ return Boolean(tree) && tree === git4(cwd, ["rev-parse", "--verify", "-q", `${range.to}^{tree}`]);
14635
+ }
14624
14636
  function storeRoot(cwd) {
14625
14637
  const location = resolveStore(path20.resolve(cwd));
14626
14638
  if (location instanceof Error)
@@ -15142,23 +15154,24 @@ function checkVerdicts(cwd, branch, ledgerRows) {
15142
15154
  return drift;
15143
15155
  };
15144
15156
  const exactCache = new Map;
15145
- const exactCarry = (row) => {
15146
- if (FAILING.has(String(row.result)))
15147
- return true;
15157
+ const exactMatch = (row) => {
15148
15158
  let exact = exactCache.get(row);
15149
15159
  if (exact === undefined) {
15150
15160
  const toBase = row.base ?? fallbackBase;
15151
15161
  const toBaseSha = toBase ? resolveCommit(cwd, toBase) : null;
15152
15162
  const fromBase = row.baseSha ?? toBaseSha;
15153
- exact = Boolean(row.head && head && toBaseSha && fromBase && sameOwnChange(cwd, { from: row.head, to: head, fromBase, toBase: toBaseSha }));
15163
+ const range = row.head && head && toBaseSha && fromBase ? { from: row.head, to: head, fromBase, toBase: toBaseSha } : null;
15164
+ exact = !range ? null : sameOwnChange(cwd, range) ? "same" : cleanRebase(cwd, range) ? "rebase" : null;
15154
15165
  exactCache.set(row, exact);
15155
15166
  }
15156
15167
  return exact;
15157
15168
  };
15169
+ const exactCarry = (row) => FAILING.has(String(row.result)) || exactMatch(row) !== null;
15158
15170
  const keyBasis = (row) => {
15159
15171
  const basis = verdictBasis(row, { head, ...keyFor(row.base ?? fallbackBase) });
15160
15172
  return basis === "carried" && !exactCarry(row) ? "stale" : basis;
15161
15173
  };
15174
+ const rebaseNote = (row) => row.head && head && row.head !== head && !FAILING.has(String(row.result)) && keyBasis(row) === "carried" && exactMatch(row) === "rebase" ? { rule: "rebase", since: row.head, files: [] } : null;
15162
15175
  const restacked = (row) => restackCarries(FAILING.has(String(row.result)) ? null : cwd, rows, branch, row.head, head);
15163
15176
  const carryOf = (row) => {
15164
15177
  if (keyBasis(row) !== "stale")
@@ -15236,7 +15249,7 @@ function checkVerdicts(cwd, branch, ledgerRows) {
15236
15249
  independent: independence.length === 0,
15237
15250
  accepted: reasons.length === 0,
15238
15251
  reasons,
15239
- carry: basis === "carried" ? carryOf(row) : null,
15252
+ carry: basis === "carried" ? rebaseNote(row) ?? carryOf(row) : null,
15240
15253
  verdict: row
15241
15254
  });
15242
15255
  if (reasons.length === 0) {
@@ -15813,7 +15826,7 @@ ${body}`), TAIL_BYTES, lastLine = (fd, size) => {
15813
15826
  session: str(actor.session),
15814
15827
  agentId: str(actor.agentId)
15815
15828
  };
15816
- }, TAMPER_REASONS, tamperCache, fileStamp = (stat) => `${stat.ino}:${stat.mtimeMs}:${stat.ctimeMs}`, tamperedWarning = (cwd, breaks) => `the ledger was edited, or a row was removed or moved (${breaks.slice(0, 3).map((row) => `${row.reason} at row ${row.seq}`).join(", ")}${breaks.length > 3 ? ", …" : ""}): no verdict is accepted until it is repaired. ${tamperedUnblock(cwd)}`, carryLabel = (carry) => `carried (${carry.rule === "lane-none" ? "lane none" : "tests only"} since ${carry.since.slice(0, 12)})`, isLiveVerdict = (row, retired) => row.type === "verdict" && typeof row.result === "string" && !retired.has(row.id), RENAMED, renameAwareBranch = (scopeOf, branch) => {
15829
+ }, TAMPER_REASONS, tamperCache, fileStamp = (stat) => `${stat.ino}:${stat.mtimeMs}:${stat.ctimeMs}`, tamperedWarning = (cwd, breaks) => `the ledger was edited, or a row was removed or moved (${breaks.slice(0, 3).map((row) => `${row.reason} at row ${row.seq}`).join(", ")}${breaks.length > 3 ? ", …" : ""}): no verdict is accepted until it is repaired. ${tamperedUnblock(cwd)}`, carryLabel = (carry) => carry.rule === "rebase" ? "carried (rebase: patch unchanged)" : `carried (${carry.rule === "lane-none" ? "lane none" : "tests only"} since ${carry.since.slice(0, 12)})`, isLiveVerdict = (row, retired) => row.type === "verdict" && typeof row.result === "string" && !retired.has(row.id), RENAMED, renameAwareBranch = (scopeOf, branch) => {
15817
15830
  return (target) => {
15818
15831
  const own = typeof branch === "string" ? branch : null;
15819
15832
  const theirs = typeof target.branch === "string" ? target.branch : null;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@brainervirus/workit-claude-code",
3
- "version": "8.30.0",
3
+ "version": "8.31.1",
4
4
  "private": false,
5
5
  "description": "Workit Claude Code plugin — session and per-turn task context, branch policy on git shell commands, workit 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-cli": "^8.30.0",
43
- "@brainervirus/workit-core": "^8.30.0"
42
+ "@brainervirus/workit-cli": "^8.31.1",
43
+ "@brainervirus/workit-core": "^8.31.1"
44
44
  },
45
45
  "engines": {
46
46
  "node": ">=24"