@brainervirus/workit-claude-code 8.36.0 → 8.37.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
@@ -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.36.0",
9320
+ version: "8.37.1",
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.36.0",
9358
+ "@brainervirus/workit-cursor": "^8.37.1",
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.36.0"
9364
+ "@brainervirus/workit-core": "^8.37.1"
9365
9365
  },
9366
9366
  engines: {
9367
9367
  node: ">=24"
@@ -68522,7 +68522,7 @@ var TOKEN_PLACEHOLDER2 = "YOUR_TOKEN_HERE", findDevFromCwd = (cwd) => {
68522
68522
  status: "warn",
68523
68523
  registryProbed: true,
68524
68524
  detail: "registry_unreachable: cannot compare OpenCode @latest cache against published workit-opencode",
68525
- fix: `Retry when npm is reachable, or remove ${cache.dir} and restart OpenCode to re-resolve`
68525
+ fix: `Retry when npm is reachable; to update, opencode plugin update ${OPENCODE_NPM_PIN}`
68526
68526
  };
68527
68527
  }
68528
68528
  if (!semverAtLeast(installed, expected)) {
@@ -68531,7 +68531,7 @@ var TOKEN_PLACEHOLDER2 = "YOUR_TOKEN_HERE", findDevFromCwd = (cwd) => {
68531
68531
  status: "fail",
68532
68532
  registryProbed: true,
68533
68533
  detail: `stale_install: OpenCode @latest cache has workit-opencode ${installed} behind published ${expected}`,
68534
- fix: `Remove ${cache.dir} and restart OpenCode — it re-resolves @latest on the next launch`
68534
+ fix: `opencode plugin update ${OPENCODE_NPM_PIN} (OpenCode 2.x loads it live, no restart); without that verb, remove ${cache.dir} and relaunch OpenCode`
68535
68535
  };
68536
68536
  }
68537
68537
  return {
@@ -87877,7 +87877,7 @@ function renderBrief(cwd, plan, input) {
87877
87877
  ...verifier ? [
87878
87878
  ` verifier: model ${verifier.model}${verifier.effort ? ` effort ${verifier.effort}` : ""} (${verifier.source})`
87879
87879
  ] : [],
87880
- `TIMEBOX: ${slice.timebox ?? DEFAULT_TIMEBOX}; past it without a new commit you will be replaced`,
87880
+ `TIMEBOX: ${timeboxText(slice.timebox)}; past it without a new commit you will be replaced`,
87881
87881
  scratchLine,
87882
87882
  `FORBIDDEN: ${slice.forbidden.join("; ")}`,
87883
87883
  ...fanIn,
@@ -87912,7 +87912,10 @@ function renderBrief(cwd, plan, input) {
87912
87912
  }
87913
87913
  };
87914
87914
  }
87915
- var DEFAULT_TIMEBOX = "30 minutes", REPORT, identityOf = (host) => {
87915
+ var DEFAULT_TIMEBOX = "30 minutes", DEFAULT_TOOL_CALLS = 120, timeboxText = (timebox) => {
87916
+ const text = timebox ?? DEFAULT_TIMEBOX;
87917
+ return /\b\d+\s+tool calls\b/u.test(text) ? text : `${text}, ${DEFAULT_TOOL_CALLS} tool calls`;
87918
+ }, REPORT, identityOf = (host) => {
87916
87919
  const family = host?.replace(/_(?:cli|desktop)$/, "") ?? "";
87917
87920
  if (family === "claude_code")
87918
87921
  return "issued";
@@ -88424,9 +88427,10 @@ var init_fanout_check = __esm(() => {
88424
88427
 
88425
88428
  // packages/workit-core/src/fanout-status.ts
88426
88429
  function timeboxMs(text) {
88427
- if (!text || /^\s*\d+(?:\.\d+)?\s*$/u.test(text))
88430
+ const time = text?.replace(/[\s,;]*\b\d+\s+tool calls\b[\s,;]*/gu, " ").trim();
88431
+ if (!time || /^\d+(?:\.\d+)?$/u.test(time))
88428
88432
  return null;
88429
- const ms = parseDuration2(text);
88433
+ const ms = parseDuration2(time);
88430
88434
  return ms && ms > 0 ? ms : null;
88431
88435
  }
88432
88436
  function activity(cwd, plan, slice, rows) {
package/hooks/hooks.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "description": "Workit host hooks: task context on session start (incl. compaction restore and forks) and when it changes per turn, branch policy and raw git/forge steering (deny gate bypasses, nudge routine commands) on shell commands, the heavy-command gate (a heavy shell command runs under the machine-wide heavy-check lease, a chain with heavy parts is split, a command a permission rule names is left to Claude Code), the before-write gate on file edits and shell writes, recording raw git commits for the session after they run, worktree guidance for subagents, the role's default model and effort on a subagent spawn that names none, one continuation when the agent stops with a provable unmet delivery obligation, a one-line skill nudge on prompts and delivery commands, and recording each Workit skill load. Only events that change Claude's behavior are registered.",
2
+ "description": "Workit host hooks: task context on session start (incl. compaction restore and forks) and when it changes per turn, branch policy and raw git/forge steering (deny gate bypasses, nudge routine commands) on shell commands, the heavy-command gate (a heavy shell command runs under the machine-wide heavy-check lease, a chain with heavy parts is split, a command a permission rule names is left to Claude Code), the before-write gate on file edits and shell writes, recording raw git commits for the session after they run, worktree guidance for subagents, the role's default model and effort on a subagent spawn that names none, one continuation when the agent stops with a provable unmet delivery obligation, a one-line skill nudge on prompts and delivery commands, and recording each Workit skill load, and counting a budgeted worker's tool calls (Read, Grep and Glob included) so its brief's tool-call budget is told once (its budget files go when it stops). Only events that change Claude's behavior are registered.",
3
3
  "hooks": {
4
4
  "SessionStart": [
5
5
  {
@@ -71,6 +71,17 @@
71
71
  }
72
72
  ]
73
73
  },
74
+ {
75
+ "matcher": "Read|Grep|Glob",
76
+ "hooks": [
77
+ {
78
+ "type": "command",
79
+ "command": "node",
80
+ "args": ["${CLAUDE_PLUGIN_ROOT}/bin/workit-hook.mjs"],
81
+ "timeout": 15
82
+ }
83
+ ]
84
+ },
74
85
  {
75
86
  "matcher": "Skill",
76
87
  "hooks": [
@@ -119,6 +130,18 @@
119
130
  }
120
131
  ]
121
132
  }
133
+ ],
134
+ "SubagentStop": [
135
+ {
136
+ "hooks": [
137
+ {
138
+ "type": "command",
139
+ "command": "node",
140
+ "args": ["${CLAUDE_PLUGIN_ROOT}/bin/workit-hook.mjs"],
141
+ "timeout": 15
142
+ }
143
+ ]
144
+ }
122
145
  ]
123
146
  }
124
147
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@brainervirus/workit-claude-code",
3
- "version": "8.36.0",
3
+ "version": "8.37.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.36.0",
43
- "@brainervirus/workit-core": "^8.36.0"
42
+ "@brainervirus/workit-cli": "^8.37.1",
43
+ "@brainervirus/workit-core": "^8.37.1"
44
44
  },
45
45
  "engines": {
46
46
  "node": ">=24"