@brainervirus/workit-claude-code 8.40.1 → 8.40.3

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.40.1",
9320
+ version: "8.40.3",
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.40.1",
9358
+ "@brainervirus/workit-cursor": "^8.40.3",
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.40.1"
9364
+ "@brainervirus/workit-core": "^8.40.3"
9365
9365
  },
9366
9366
  engines: {
9367
9367
  node: ">=24"
@@ -9779,34 +9779,20 @@ function configuredGrants(entry) {
9779
9779
  const legacy = fromAutoApprove(record.autoApprove);
9780
9780
  return legacy ? { grants: legacy, source: "autoApprove" } : { grants: {}, source: "default" };
9781
9781
  }
9782
- function resolveAutonomy(cwd) {
9783
- const override = grantsOverride();
9784
- if (override)
9785
- return {
9786
- workspace: null,
9787
- grants: { ...DEFAULT_GRANTS },
9788
- configured: [],
9789
- source: "default",
9790
- accountConfigured: false,
9791
- defaultEndpoint: DEFAULT_ENDPOINT,
9792
- configuredEndpoint: null,
9793
- effectiveEndpoint: DEFAULT_ENDPOINT,
9794
- verification: DEFAULT_VERIFICATION,
9795
- note: override
9796
- };
9797
- const workspace = resolveWorkspaceFrom(cwd, grantsDir(), process.env.WORKFLOW_WORKSPACE_NAME?.trim() || undefined);
9782
+ function autonomyOf(workspace) {
9798
9783
  const { grants, source } = configuredGrants(workspace);
9799
9784
  const full = { ...DEFAULT_GRANTS, ...grants };
9800
9785
  const configured = GRANT_KINDS.filter((kind) => grants[kind] !== undefined);
9801
9786
  const accountConfigured = Boolean(workspace?.vcs?.account);
9787
+ const name = workspace?.name ?? null;
9802
9788
  return {
9803
- workspace: workspace?.name ?? null,
9789
+ workspace: name,
9804
9790
  grants: full,
9805
9791
  configured,
9806
9792
  source,
9807
9793
  accountConfigured,
9808
9794
  ...endpointView(workspace, {
9809
- workspace: workspace?.name ?? null,
9795
+ workspace: name,
9810
9796
  grants: full,
9811
9797
  configured,
9812
9798
  accountConfigured
@@ -9814,6 +9800,64 @@ function resolveAutonomy(cwd) {
9814
9800
  verification: verificationOf(workspace)
9815
9801
  };
9816
9802
  }
9803
+ function capByFolder(named, folder, name) {
9804
+ if (folder?.workspace === named.workspace)
9805
+ return named;
9806
+ const nothing = !folder || folder.configured.length > 0 && !folder.accountConfigured;
9807
+ const grants = { ...named.grants };
9808
+ const lowered = [];
9809
+ for (const kind of GRANT_KINDS) {
9810
+ const floor = !nothing && folder.grants[kind];
9811
+ if (!raises(kind, floor, grants[kind]))
9812
+ continue;
9813
+ grants[kind] = floor;
9814
+ lowered.push(kind);
9815
+ }
9816
+ const ceiling = !nothing && folder.effectiveEndpoint || DEFAULT_ENDPOINT;
9817
+ const endpoint = raisesEndpoint(ceiling, named.effectiveEndpoint);
9818
+ if (endpoint)
9819
+ lowered.push("defaultEndpoint");
9820
+ const strict = folder?.verification ?? "independent";
9821
+ const looser = VERIFICATION_MODES.indexOf(named.verification) < VERIFICATION_MODES.indexOf(strict);
9822
+ if (looser)
9823
+ lowered.push("verification");
9824
+ if (lowered.length === 0)
9825
+ return named;
9826
+ return {
9827
+ ...named,
9828
+ grants,
9829
+ ...endpoint ? { effectiveEndpoint: ceiling, endpointReason: undefined } : {},
9830
+ verification: looser ? strict : named.verification,
9831
+ note: `WORKFLOW_WORKSPACE_NAME=${name}: ${lowered.join(", ")} capped at ${folder ? `workspace ${folder.workspace}` : "nothing (tied workspaces)"}; a name never raises grants`
9832
+ };
9833
+ }
9834
+ function resolveAutonomy(cwd) {
9835
+ const override = grantsOverride();
9836
+ if (override)
9837
+ return {
9838
+ workspace: null,
9839
+ grants: { ...DEFAULT_GRANTS },
9840
+ configured: [],
9841
+ source: "default",
9842
+ accountConfigured: false,
9843
+ defaultEndpoint: DEFAULT_ENDPOINT,
9844
+ configuredEndpoint: null,
9845
+ effectiveEndpoint: DEFAULT_ENDPOINT,
9846
+ verification: DEFAULT_VERIFICATION,
9847
+ note: override
9848
+ };
9849
+ const name = process.env.WORKFLOW_WORKSPACE_NAME?.trim() || undefined;
9850
+ const named = autonomyOf(resolveWorkspaceFrom(cwd, grantsDir(), name));
9851
+ if (name === undefined)
9852
+ return named;
9853
+ let folder;
9854
+ try {
9855
+ folder = autonomyOf(resolveWorkspaceFrom(cwd, grantsDir()));
9856
+ } catch {
9857
+ folder = null;
9858
+ }
9859
+ return capByFolder(named, folder, name);
9860
+ }
9817
9861
  function requireGrant(cwd, kind, options = {}) {
9818
9862
  let autonomy;
9819
9863
  try {
@@ -18967,8 +19011,97 @@ var init_policy_resolver = __esm(() => {
18967
19011
  init_derive();
18968
19012
  });
18969
19013
 
18970
- // packages/workit-core/src/core/task-engine.ts
19014
+ // packages/workit-core/src/core/task-view.ts
18971
19015
  import { realpathSync as realpathSync4 } from "node:fs";
19016
+ function contextRootError(store, context) {
19017
+ try {
19018
+ realpathSync4(context.root);
19019
+ const root = checkoutRootOf(context.root);
19020
+ if (root !== store.root && !sameDirectoryIdentity(root, store.root))
19021
+ return failure2("invalid_input", "operation context root does not match the task store root");
19022
+ } catch {
19023
+ return failure2("invalid_input", "operation context root cannot be resolved");
19024
+ }
19025
+ return success(null, null, null);
19026
+ }
19027
+ function helperEntry(task, context, requireSession = false, requireActive = false) {
19028
+ const workerId = context.workerId ?? null;
19029
+ if (workerId === null)
19030
+ return failure2("permission_denied", "operation is lead-only");
19031
+ const worker = task.workers.find((entry) => entry.id === workerId);
19032
+ if (!worker)
19033
+ return failure2("permission_denied", "worker is not assigned to this task");
19034
+ if (worker.data.session && !sameSession2(worker.data.session, context))
19035
+ return failure2("permission_denied", "worker session does not match the caller");
19036
+ if (requireSession && (!worker.data.session || !sameSession2(worker.data.session, context)))
19037
+ return failure2("permission_denied", "worker session has not been observed");
19038
+ if (requireActive && worker.data.state !== "running")
19039
+ return failure2("permission_denied", "worker is not active");
19040
+ return success(null, null, worker);
19041
+ }
19042
+ function helperTaskGuard(task, context, allowRead = false) {
19043
+ if ((context.workerId ?? null) === null)
19044
+ return success(null, null, null);
19045
+ const worker = helperEntry(task, context);
19046
+ if (!worker.ok)
19047
+ return worker;
19048
+ return allowRead ? success(null, null, null) : failure2("permission_denied", "helpers cannot control task lifecycle or scope");
19049
+ }
19050
+ function taskView(store, context, task, capture = true, freshness = treeFreshness(store.root)) {
19051
+ const workspace = store.readWorkspace();
19052
+ if (!workspace.ok)
19053
+ return workspace;
19054
+ if (!workspace.data)
19055
+ return failure2("not_found", "workspace not found");
19056
+ const historical = task.status === "closed" ? task.candidates.at(-1) : undefined;
19057
+ const current = historical ? success(null, null, historical) : capture ? captureCandidate(store.root, task.intent.data.scope, environment()) : success(null, null, task.candidates.at(-1) ?? null);
19058
+ if (!current.ok)
19059
+ return current;
19060
+ const evaluationWorkspace = workspace.data;
19061
+ const tree = freshness;
19062
+ const requirements = evaluateRequirements(task, evaluationWorkspace, context.capabilities, current.data, store.root, context.caller, tree);
19063
+ return success(task.revision, workspace.data.revision, {
19064
+ task,
19065
+ workspace: evaluationWorkspace,
19066
+ capabilities: context.capabilities,
19067
+ requirements,
19068
+ evidence: evaluateEvidence(task, current.data, tree)
19069
+ });
19070
+ }
19071
+ function compactContext(store, context, taskId, freshness, origin = null) {
19072
+ const root = contextRootError(store, context);
19073
+ if (!root.ok)
19074
+ return root;
19075
+ const base = origin && store.readStoreTask(origin.taskId);
19076
+ const inherited = base?.ok && base.data ? {
19077
+ origin: origin.origin,
19078
+ taskId: base.data.id,
19079
+ decisions: base.data.decisions.filter((entry) => entry.data.revoked === null)
19080
+ } : null;
19081
+ if (taskId === null)
19082
+ return success(null, null, inherited?.decisions.length ? compactTaskContext(null, inherited) : "");
19083
+ const task = store.readTask(taskId);
19084
+ if (!task.ok)
19085
+ return task;
19086
+ const helper = helperTaskGuard(task.data, context, true);
19087
+ if (!helper.ok)
19088
+ return helper;
19089
+ const view = taskView(store, context, task.data, false, freshness ?? signalFreshness(store.root));
19090
+ if (!view.ok)
19091
+ return view;
19092
+ return success(view.revision, view.workspaceRevision, compactTaskContext(view.data, inherited));
19093
+ }
19094
+ var environment = () => [], sameSession2 = (value, context) => typeof value === "object" && value !== null && value.kind === "host" && value.host === context.caller.host && value.handle === context.caller.actor;
19095
+ var init_task_view = __esm(() => {
19096
+ init_task_contract();
19097
+ init_paths();
19098
+ init_task_store();
19099
+ init_task_context();
19100
+ init_task_evaluation();
19101
+ });
19102
+
19103
+ // packages/workit-core/src/core/task-engine.ts
19104
+ import { realpathSync as realpathSync5 } from "node:fs";
18972
19105
 
18973
19106
  class WorkitCore {
18974
19107
  store;
@@ -18982,15 +19115,7 @@ class WorkitCore {
18982
19115
  return this.context.workerId !== null && this.context.workerId !== undefined;
18983
19116
  }
18984
19117
  contextRootError() {
18985
- try {
18986
- realpathSync4(this.context.root);
18987
- const root = checkoutRootOf(this.context.root);
18988
- if (root !== this.store.root && !sameDirectoryIdentity(root, this.store.root))
18989
- return failure2("invalid_input", "operation context root does not match the task store root");
18990
- } catch {
18991
- return failure2("invalid_input", "operation context root cannot be resolved");
18992
- }
18993
- return success(null, null, null);
19118
+ return contextRootError(this.store, this.context);
18994
19119
  }
18995
19120
  fillRevisions(input, task, workspace) {
18996
19121
  if (input.expectedRevision === undefined && task)
@@ -19038,27 +19163,10 @@ class WorkitCore {
19038
19163
  return success(null, null, { ...request, taskId: found.data.task.id });
19039
19164
  }
19040
19165
  helperEntry(task, requireSession = false, requireActive = false) {
19041
- const workerId = this.context.workerId ?? null;
19042
- if (workerId === null)
19043
- return failure2("permission_denied", "operation is lead-only");
19044
- const worker = task.workers.find((entry) => entry.id === workerId);
19045
- if (!worker)
19046
- return failure2("permission_denied", "worker is not assigned to this task");
19047
- if (worker.data.session && !sameSession2(worker.data.session, this.context))
19048
- return failure2("permission_denied", "worker session does not match the caller");
19049
- if (requireSession && (!worker.data.session || !sameSession2(worker.data.session, this.context)))
19050
- return failure2("permission_denied", "worker session has not been observed");
19051
- if (requireActive && worker.data.state !== "running")
19052
- return failure2("permission_denied", "worker is not active");
19053
- return success(null, null, worker);
19166
+ return helperEntry(task, this.context, requireSession, requireActive);
19054
19167
  }
19055
19168
  helperTaskGuard(task, allowRead = false) {
19056
- if ((this.context.workerId ?? null) === null)
19057
- return success(null, null, null);
19058
- const worker = this.helperEntry(task);
19059
- if (!worker.ok)
19060
- return worker;
19061
- return allowRead ? success(null, null, null) : failure2("permission_denied", "helpers cannot control task lifecycle or scope");
19169
+ return helperTaskGuard(task, this.context, allowRead);
19062
19170
  }
19063
19171
  activeWorkerBlocker(task) {
19064
19172
  if (task.workers.some((entry) => workerBlocksTransition("close", entry.data.state)))
@@ -19968,48 +20076,10 @@ class WorkitCore {
19968
20076
  });
19969
20077
  }
19970
20078
  compactContext(taskId, freshness, origin = null) {
19971
- const root = this.contextRootError();
19972
- if (!root.ok)
19973
- return root;
19974
- const base = origin && this.store.readStoreTask(origin.taskId);
19975
- const inherited = base?.ok && base.data ? {
19976
- origin: origin.origin,
19977
- taskId: base.data.id,
19978
- decisions: base.data.decisions.filter((entry) => entry.data.revoked === null)
19979
- } : null;
19980
- if (taskId === null)
19981
- return success(null, null, inherited?.decisions.length ? compactTaskContext(null, inherited) : "");
19982
- const task = this.store.readTask(taskId);
19983
- if (!task.ok)
19984
- return task;
19985
- const helper = this.helperTaskGuard(task.data, true);
19986
- if (!helper.ok)
19987
- return helper;
19988
- const view = this.view(task.data, false, freshness ?? signalFreshness(this.store.root));
19989
- if (!view.ok)
19990
- return view;
19991
- return success(view.revision, view.workspaceRevision, compactTaskContext(view.data, inherited));
20079
+ return compactContext(this.store, this.context, taskId, freshness, origin);
19992
20080
  }
19993
- view(task, capture = true, freshness = treeFreshness(this.store.root)) {
19994
- const workspace = this.store.readWorkspace();
19995
- if (!workspace.ok)
19996
- return workspace;
19997
- if (!workspace.data)
19998
- return failure2("not_found", "workspace not found");
19999
- const historical = task.status === "closed" ? task.candidates.at(-1) : undefined;
20000
- const current = historical ? success(null, null, historical) : capture ? captureCandidate(this.store.root, task.intent.data.scope, environment()) : success(null, null, task.candidates.at(-1) ?? null);
20001
- if (!current.ok)
20002
- return current;
20003
- const evaluationWorkspace = workspace.data;
20004
- const tree = freshness;
20005
- const requirements = evaluateRequirements(task, evaluationWorkspace, this.context.capabilities, current.data, this.store.root, this.context.caller, tree);
20006
- return success(task.revision, workspace.data.revision, {
20007
- task,
20008
- workspace: evaluationWorkspace,
20009
- capabilities: this.context.capabilities,
20010
- requirements,
20011
- evidence: evaluateEvidence(task, current.data, tree)
20012
- });
20081
+ view(task, capture = true, freshness) {
20082
+ return taskView(this.store, this.context, task, capture, freshness);
20013
20083
  }
20014
20084
  reconcileResume(view, observations = []) {
20015
20085
  const root = this.contextRootError();
@@ -20020,7 +20090,7 @@ class WorkitCore {
20020
20090
  if (view.task.workspaceId !== view.workspace.id)
20021
20091
  return failure2("invalid_input", "task and workspace bindings are invalid");
20022
20092
  try {
20023
- if (realpathSync4(view.workspace.root) !== this.store.root)
20093
+ if (realpathSync5(view.workspace.root) !== this.store.root)
20024
20094
  return failure2("invalid_input", "task view root does not match the task store");
20025
20095
  } catch {
20026
20096
  return failure2("invalid_input", "task view root cannot be resolved");
@@ -20280,7 +20350,7 @@ var MAX_JUDGED_REFS = 5, workspaceVerification = (root) => {
20280
20350
  host: context.caller.host,
20281
20351
  session: { kind: "host", host: context.caller.host, handle: context.caller.actor },
20282
20352
  workerId: context.workerId ?? null
20283
- }), environment = () => [], sameSession2 = (value, context) => typeof value === "object" && value !== null && value.kind === "host" && value.host === context.caller.host && value.handle === context.caller.actor, verifiedWorkers, sameValue = (left, right) => {
20353
+ }), verifiedWorkers, sameValue = (left, right) => {
20284
20354
  try {
20285
20355
  return canonicalJson(left) === canonicalJson(right);
20286
20356
  } catch {
@@ -20599,8 +20669,7 @@ var init_task_engine = __esm(() => {
20599
20669
  init_ledger();
20600
20670
  init_rev();
20601
20671
  init_autonomy();
20602
- init_task_store();
20603
- init_paths();
20672
+ init_task_view();
20604
20673
  init_store_lock();
20605
20674
  init_task_context();
20606
20675
  init_workers();
@@ -21242,10 +21311,10 @@ var init_context_read = __esm(() => {
21242
21311
  });
21243
21312
 
21244
21313
  // packages/workit-core/src/core.ts
21245
- import { existsSync as existsSync8, realpathSync as realpathSync5 } from "node:fs";
21314
+ import { existsSync as existsSync8, realpathSync as realpathSync6 } from "node:fs";
21246
21315
  import path26 from "node:path";
21247
21316
  function resolveInside(root, candidate) {
21248
- const base = realpathSync5(root);
21317
+ const base = realpathSync6(root);
21249
21318
  const target = path26.resolve(base, candidate);
21250
21319
  if (target !== base && !target.startsWith(base + path26.sep)) {
21251
21320
  throw new Error("path must stay inside repository root");
@@ -21253,7 +21322,7 @@ function resolveInside(root, candidate) {
21253
21322
  let ancestor = target;
21254
21323
  while (!existsSync8(ancestor))
21255
21324
  ancestor = path26.dirname(ancestor);
21256
- const canonicalAncestor = realpathSync5(ancestor);
21325
+ const canonicalAncestor = realpathSync6(ancestor);
21257
21326
  if (canonicalAncestor !== base && !canonicalAncestor.startsWith(base + path26.sep)) {
21258
21327
  throw new Error("path must stay inside repository root");
21259
21328
  }
@@ -66007,7 +66076,7 @@ import {
66007
66076
  existsSync as existsSync12,
66008
66077
  readFileSync as readFileSync13,
66009
66078
  readdirSync as readdirSync6,
66010
- realpathSync as realpathSync6,
66079
+ realpathSync as realpathSync7,
66011
66080
  statSync as statSync2
66012
66081
  } from "node:fs";
66013
66082
  import os9 from "node:os";
@@ -66447,7 +66516,7 @@ var resolveWindowsShimScript = (shim) => {
66447
66516
  return found;
66448
66517
  }, isClaudeWorkitInstalled = (home, env = process.env, cwd = process.cwd()) => claudeWorkitInstalls(home, env, cwd).length > 0, findNpmCli = (npm) => {
66449
66518
  try {
66450
- const resolved = realpathSync6(npm);
66519
+ const resolved = realpathSync7(npm);
66451
66520
  if (path33.basename(resolved) === "npm-cli.js")
66452
66521
  return resolved;
66453
66522
  } catch {}
@@ -66945,7 +67014,7 @@ import {
66945
67014
  readdirSync as readdirSync9,
66946
67015
  mkdirSync as mkdirSync7,
66947
67016
  readFileSync as readFileSync17,
66948
- realpathSync as realpathSync7,
67017
+ realpathSync as realpathSync8,
66949
67018
  rmSync as rmSync3,
66950
67019
  statSync as statSync5
66951
67020
  } from "node:fs";
@@ -67168,7 +67237,7 @@ function applyHostPermissions(plan, options = {}) {
67168
67237
  continue;
67169
67238
  }
67170
67239
  try {
67171
- const target = change.before === null ? change.file : realpathSync7(change.file);
67240
+ const target = change.before === null ? change.file : realpathSync8(change.file);
67172
67241
  if (change.before !== null) {
67173
67242
  const backups = path38.join(paths.stateDir, "host-permissions-backup");
67174
67243
  mkdirSync7(backups, { recursive: true, mode: 448 });
@@ -69983,7 +70052,7 @@ import {
69983
70052
  mkdtempSync as mkdtempSync2,
69984
70053
  readFileSync as readFileSync19,
69985
70054
  readdirSync as readdirSync11,
69986
- realpathSync as realpathSync8,
70055
+ realpathSync as realpathSync9,
69987
70056
  renameSync as renameSync5,
69988
70057
  rmSync as rmSync5,
69989
70058
  statSync as statSync7,
@@ -70429,7 +70498,7 @@ function applyOpenCode(root, res) {
70429
70498
  };
70430
70499
  }
70431
70500
  function copyPluginDir(src, dest) {
70432
- const realSrc = realpathSync8(src);
70501
+ const realSrc = realpathSync9(src);
70433
70502
  const marker = path40.join(dest, ".workit-root");
70434
70503
  const destIsLink = existsSync17(dest) && lstatSync6(dest).isSymbolicLink();
70435
70504
  const synced = !destIsLink && readFileSafe(marker)?.trim() === realSrc && samePluginContent(realSrc, dest, dest);
@@ -70868,7 +70937,7 @@ var TOKEN_PLACEHOLDER3 = "YOUR_TOKEN_HERE", YT_OVERRIDES, VCS_OVERRIDES, SETUP_O
70868
70937
  return (require2.resolve.paths(name) ?? []).map((dir) => path40.join(dir, name));
70869
70938
  }, realRoot = (root) => {
70870
70939
  try {
70871
- return realpathSync8(root);
70940
+ return realpathSync9(root);
70872
70941
  } catch {
70873
70942
  return root;
70874
70943
  }
@@ -71928,7 +71997,7 @@ var init_wizard_state = __esm(() => {
71928
71997
  });
71929
71998
 
71930
71999
  // packages/workit-cli/src/admin/uninstall.ts
71931
- import { existsSync as existsSync19, readFileSync as readFileSync21, realpathSync as realpathSync9, rmSync as rmSync7, writeFileSync as writeFileSync12 } from "node:fs";
72000
+ import { existsSync as existsSync19, readFileSync as readFileSync21, realpathSync as realpathSync10, rmSync as rmSync7, writeFileSync as writeFileSync12 } from "node:fs";
71932
72001
  import os14 from "node:os";
71933
72002
  import path43 from "node:path";
71934
72003
  function cleanCursorSettings(settings, pluginDir) {
@@ -72236,7 +72305,7 @@ var resolveUninstallPaths = (options = {}) => {
72236
72305
  return false;
72237
72306
  }
72238
72307
  try {
72239
- return realpathSync9(actionPath) === realpathSync9(expected);
72308
+ return realpathSync10(actionPath) === realpathSync10(expected);
72240
72309
  } catch {
72241
72310
  return true;
72242
72311
  }
@@ -106830,7 +106899,7 @@ import {
106830
106899
  readdirSync as readdirSync15,
106831
106900
  readFileSync as readFileSync30,
106832
106901
  readlinkSync as readlinkSync3,
106833
- realpathSync as realpathSync10,
106902
+ realpathSync as realpathSync11,
106834
106903
  renameSync as renameSync7,
106835
106904
  rmSync as rmSync9,
106836
106905
  statSync as statSync11,
@@ -106967,7 +107036,7 @@ function linkNodeModules(origin, target, repo, copy) {
106967
107036
  if (entry.isSymbolicLink()) {
106968
107037
  let real;
106969
107038
  try {
106970
- real = realpathSync10(from);
107039
+ real = realpathSync11(from);
106971
107040
  } catch {
106972
107041
  continue;
106973
107042
  }
@@ -106983,11 +107052,11 @@ function linkNodeModules(origin, target, repo, copy) {
106983
107052
  function copySymlink(repo, tree, from, to) {
106984
107053
  let real = null;
106985
107054
  try {
106986
- real = realpathSync10(from);
107055
+ real = realpathSync11(from);
106987
107056
  } catch {
106988
107057
  real = null;
106989
107058
  }
106990
- const realRepo = realpathSync10(repo);
107059
+ const realRepo = realpathSync11(repo);
106991
107060
  if (real && inside5(realRepo, real)) {
106992
107061
  symlinkSync(path72.relative(path72.dirname(to), path72.join(tree, path72.relative(realRepo, real))), to);
106993
107062
  return;
@@ -107001,7 +107070,7 @@ function writeInside(copy, file, content) {
107001
107070
  const target = path72.join(copy, file);
107002
107071
  try {
107003
107072
  const stat = lstatSync8(target);
107004
- if (!stat.isFile() || !inside5(realpathSync10(copy), realpathSync10(path72.dirname(target))))
107073
+ if (!stat.isFile() || !inside5(realpathSync11(copy), realpathSync11(path72.dirname(target))))
107005
107074
  return false;
107006
107075
  } catch {
107007
107076
  return false;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@brainervirus/workit-claude-code",
3
- "version": "8.40.1",
3
+ "version": "8.40.3",
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.40.1",
43
- "@brainervirus/workit-core": "^8.40.1"
42
+ "@brainervirus/workit-cli": "^8.40.3",
43
+ "@brainervirus/workit-core": "^8.40.3"
44
44
  },
45
45
  "engines": {
46
46
  "node": ">=24"