@brainervirus/workit-mcp 8.11.0 → 8.12.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/index.js +72 -71
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -18436,6 +18436,63 @@ function acquireFileLockSync(targetPath, options) {
|
|
|
18436
18436
|
}
|
|
18437
18437
|
}
|
|
18438
18438
|
}
|
|
18439
|
+
// packages/workit-core/src/core/logger.ts
|
|
18440
|
+
import os from "node:os";
|
|
18441
|
+
var REDACTED = "[REDACTED]";
|
|
18442
|
+
var SECRET_VALUE = /\b(?:Bearer|Basic|Digest|Token)\s+\S+/gi;
|
|
18443
|
+
var KEY_EQ_VALUE = /\b([A-Za-z0-9_-]*(?:token|secret|password|passwd|apikey|api[_-]?key|authorization|credential|bearer)[A-Za-z0-9_-]*)([:=]\s*).+/gi;
|
|
18444
|
+
var URL_QUERY = /(https?:\/\/[^?#\s]+)\?[^#\s]*/g;
|
|
18445
|
+
var SENSITIVE_WORDS = new Set([
|
|
18446
|
+
"token",
|
|
18447
|
+
"secret",
|
|
18448
|
+
"password",
|
|
18449
|
+
"passwd",
|
|
18450
|
+
"authorization",
|
|
18451
|
+
"credential",
|
|
18452
|
+
"credentials",
|
|
18453
|
+
"cookie",
|
|
18454
|
+
"api",
|
|
18455
|
+
"apikey",
|
|
18456
|
+
"apitoken",
|
|
18457
|
+
"accesstoken",
|
|
18458
|
+
"clientsecret",
|
|
18459
|
+
"refreshtoken",
|
|
18460
|
+
"key",
|
|
18461
|
+
"bearer",
|
|
18462
|
+
"prompt",
|
|
18463
|
+
"message",
|
|
18464
|
+
"messages",
|
|
18465
|
+
"content",
|
|
18466
|
+
"body",
|
|
18467
|
+
"args",
|
|
18468
|
+
"argument",
|
|
18469
|
+
"result",
|
|
18470
|
+
"results",
|
|
18471
|
+
"output",
|
|
18472
|
+
"issue",
|
|
18473
|
+
"description",
|
|
18474
|
+
"summary",
|
|
18475
|
+
"payload",
|
|
18476
|
+
"script",
|
|
18477
|
+
"command",
|
|
18478
|
+
"text",
|
|
18479
|
+
"query"
|
|
18480
|
+
]);
|
|
18481
|
+
var STACK_WORDS = new Set(["stack", "stacktrace", "trace"]);
|
|
18482
|
+
var escapeRegExp = (value) => value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
18483
|
+
var homePattern = new RegExp(`${escapeRegExp(os.homedir())}(?=[/\\\\]|$)|\\$HOME(?=[/\\\\]|$)`, "g");
|
|
18484
|
+
var applyPatterns = (value) => {
|
|
18485
|
+
let out = value;
|
|
18486
|
+
out = out.replace(SECRET_VALUE, REDACTED);
|
|
18487
|
+
out = out.replace(KEY_EQ_VALUE, "$1$2[REDACTED]");
|
|
18488
|
+
out = out.replace(URL_QUERY, "$1?[REDACTED]");
|
|
18489
|
+
out = out.replace(homePattern, "~");
|
|
18490
|
+
if (process.platform === "win32")
|
|
18491
|
+
out = out.replace(/\\/g, "/");
|
|
18492
|
+
return out;
|
|
18493
|
+
};
|
|
18494
|
+
var redactSecrets = (value) => applyPatterns(value);
|
|
18495
|
+
|
|
18439
18496
|
// packages/workit-core/src/store/paths.ts
|
|
18440
18497
|
import { spawnSync } from "node:child_process";
|
|
18441
18498
|
import { createHash as createHash2 } from "node:crypto";
|
|
@@ -21224,7 +21281,7 @@ function loadCheckConfig(cwd) {
|
|
|
21224
21281
|
gates[gate] = names;
|
|
21225
21282
|
}
|
|
21226
21283
|
}
|
|
21227
|
-
return { source: CHECKS_FILE, root, checks, gates, error: null };
|
|
21284
|
+
return { source: CHECKS_FILE, root, checks, gates, error: null, resources: parsed.resources };
|
|
21228
21285
|
}
|
|
21229
21286
|
var sameArgv = (left, right) => left.length === right.length && left.every((item, index) => item === right[index]);
|
|
21230
21287
|
function matchesNamedCheck(config, name, argv, cwd) {
|
|
@@ -21266,7 +21323,7 @@ function checkCommand(args, version, onPath = workitAvailable()) {
|
|
|
21266
21323
|
import { spawnSync as spawnSync4 } from "node:child_process";
|
|
21267
21324
|
import { createHash as createHash5 } from "node:crypto";
|
|
21268
21325
|
import fs9 from "node:fs";
|
|
21269
|
-
import
|
|
21326
|
+
import os2 from "node:os";
|
|
21270
21327
|
import path8 from "node:path";
|
|
21271
21328
|
var MAX_BUFFER = 256 * 1024 * 1024;
|
|
21272
21329
|
var GIT_TIMEOUTS = { local: 20000, worktree: 120000, network: 15000 };
|
|
@@ -21314,7 +21371,7 @@ function worktreeTree(cwd, options = {}) {
|
|
|
21314
21371
|
return null;
|
|
21315
21372
|
const cap = options.maxUntrackedBytes ?? MAX_UNTRACKED_BYTES;
|
|
21316
21373
|
const timeoutMs = options.timeoutMs ?? GIT_TIMEOUTS.worktree;
|
|
21317
|
-
const scratch = fs9.mkdtempSync(path8.join(
|
|
21374
|
+
const scratch = fs9.mkdtempSync(path8.join(os2.tmpdir(), "workit-tree-"));
|
|
21318
21375
|
try {
|
|
21319
21376
|
const tempIndex = path8.join(scratch, "index");
|
|
21320
21377
|
if (fs9.existsSync(indexPath))
|
|
@@ -21468,7 +21525,7 @@ import {
|
|
|
21468
21525
|
readdirSync as readdirSync2,
|
|
21469
21526
|
writeFileSync as writeFileSync2
|
|
21470
21527
|
} from "node:fs";
|
|
21471
|
-
import
|
|
21528
|
+
import os3 from "node:os";
|
|
21472
21529
|
import path9 from "node:path";
|
|
21473
21530
|
|
|
21474
21531
|
// packages/workit-core/src/core/boundary.ts
|
|
@@ -21528,7 +21585,7 @@ var mergePreset = (preset, input = {}, current = {
|
|
|
21528
21585
|
protected: preset === "custom" ? input.protectedNames ?? current.branchPolicy.protected : [...defs.protected]
|
|
21529
21586
|
};
|
|
21530
21587
|
};
|
|
21531
|
-
var resolveConfigDir = () => process.env.WORKFLOW_TOOLKIT_CONFIG ?? process.env.WORKFLOW_TOOLKIT_CONFIG_DIR ?? path9.join(process.env.XDG_CONFIG_HOME || path9.join(
|
|
21588
|
+
var resolveConfigDir = () => process.env.WORKFLOW_TOOLKIT_CONFIG ?? process.env.WORKFLOW_TOOLKIT_CONFIG_DIR ?? path9.join(process.env.XDG_CONFIG_HOME || path9.join(os3.homedir(), ".config"), "workit");
|
|
21532
21589
|
var migratedDir = null;
|
|
21533
21590
|
var migrationFailed = false;
|
|
21534
21591
|
var ensureConfigDir = (dir = resolveConfigDir()) => {
|
|
@@ -21538,7 +21595,7 @@ var ensureConfigDir = (dir = resolveConfigDir()) => {
|
|
|
21538
21595
|
migratedDir = dir;
|
|
21539
21596
|
return dir;
|
|
21540
21597
|
}
|
|
21541
|
-
const legacy = path9.join(process.env.XDG_CONFIG_HOME || path9.join(
|
|
21598
|
+
const legacy = path9.join(process.env.XDG_CONFIG_HOME || path9.join(os3.homedir(), ".config"), "workflow-toolkit");
|
|
21542
21599
|
if (!existsSync3(legacy)) {
|
|
21543
21600
|
migratedDir = dir;
|
|
21544
21601
|
return dir;
|
|
@@ -21812,6 +21869,7 @@ var workspaceConfigSchema = object2({
|
|
|
21812
21869
|
autoApprove: union([boolean2(), array(nonBlank)]).optional(),
|
|
21813
21870
|
defaultEndpoint: unknown().optional(),
|
|
21814
21871
|
verification: _enum(["self", "independent"]).optional(),
|
|
21872
|
+
trailers: boolean2().optional(),
|
|
21815
21873
|
autonomy: object2(Object.fromEntries(["push", "pr", "merge", "release", "rerun"].map((kind) => [
|
|
21816
21874
|
kind,
|
|
21817
21875
|
union([boolean2(), literal("verified")]).optional()
|
|
@@ -22093,8 +22151,8 @@ var resolveRuntimeWorkspaceVcs = (cwd) => resolveRuntimeWorkspaceCandidate(cwd,
|
|
|
22093
22151
|
var runtimeWorkspaceIndexSchema = object2({
|
|
22094
22152
|
workspaces: array(object2({ name: nonBlank, glob: nonBlank }).passthrough()).optional()
|
|
22095
22153
|
}).passthrough();
|
|
22096
|
-
var matchRuntimeWorkspace = (cwd) => {
|
|
22097
|
-
const file = path10.join(
|
|
22154
|
+
var matchRuntimeWorkspace = (cwd, dir = configDir()) => {
|
|
22155
|
+
const file = path10.join(dir, "workspaces.json");
|
|
22098
22156
|
let raw;
|
|
22099
22157
|
try {
|
|
22100
22158
|
raw = readFileSync3(file, "utf8");
|
|
@@ -22123,7 +22181,7 @@ var matchRuntimeWorkspace = (cwd) => {
|
|
|
22123
22181
|
const matches = matchingEntries(cwd, entries ?? []);
|
|
22124
22182
|
const workspaceName = process.env.WORKFLOW_WORKSPACE_NAME?.trim() || undefined;
|
|
22125
22183
|
const selected = selectWorkspaceMatch(matches, cwd, workspaceName);
|
|
22126
|
-
return selected ? { file, selected } : null;
|
|
22184
|
+
return selected ? { file, selected, matches } : null;
|
|
22127
22185
|
};
|
|
22128
22186
|
var resolveRuntimeReleaseTracks = (cwd) => {
|
|
22129
22187
|
const matched = matchRuntimeWorkspace(cwd);
|
|
@@ -22452,7 +22510,7 @@ var git3 = (cwd, args) => {
|
|
|
22452
22510
|
return run.status === 0 ? (run.stdout ?? "").trim() : null;
|
|
22453
22511
|
};
|
|
22454
22512
|
var recordedBaseKey = (branch) => `branch.${branch}.workitBase`;
|
|
22455
|
-
var
|
|
22513
|
+
var escapeRegExp2 = (text) => text.replace(/[.*+?^${}()|[\]\\]/gu, "\\$&");
|
|
22456
22514
|
var reflog = (cwd, ref) => (git3(cwd, ["log", "-g", "--date=unix", "--format=%H%x09%gd%x09%gs", ref, "--"]) ?? "").split(`
|
|
22457
22515
|
`).map((line) => {
|
|
22458
22516
|
const [sha = "", selector = "", ...subject] = line.split("\t");
|
|
@@ -22484,7 +22542,7 @@ function gitTrackProbe(cwd) {
|
|
|
22484
22542
|
const created = own.at(-1);
|
|
22485
22543
|
if (!created || created.subject !== "branch: Created from HEAD")
|
|
22486
22544
|
return null;
|
|
22487
|
-
const pattern = new RegExp(`^checkout: moving from (\\S+) to ${
|
|
22545
|
+
const pattern = new RegExp(`^checkout: moving from (\\S+) to ${escapeRegExp2(branch)}$`, "u");
|
|
22488
22546
|
const entry = reflog(cwd, "HEAD").findLast((item) => item.time >= created.time && item.sha === created.sha && pattern.test(item.subject));
|
|
22489
22547
|
return entry ? pattern.exec(entry.subject)?.[1] ?? null : null;
|
|
22490
22548
|
},
|
|
@@ -24924,13 +24982,13 @@ var judgeInputSummary = (raw) => {
|
|
|
24924
24982
|
};
|
|
24925
24983
|
|
|
24926
24984
|
// packages/workit-core/src/autonomy.ts
|
|
24927
|
-
import
|
|
24985
|
+
import os4 from "node:os";
|
|
24928
24986
|
import path15 from "node:path";
|
|
24929
24987
|
var accountHome = () => {
|
|
24930
24988
|
try {
|
|
24931
|
-
return
|
|
24989
|
+
return os4.userInfo().homedir;
|
|
24932
24990
|
} catch {
|
|
24933
|
-
return
|
|
24991
|
+
return os4.homedir();
|
|
24934
24992
|
}
|
|
24935
24993
|
};
|
|
24936
24994
|
var grantsHome = { resolve: accountHome };
|
|
@@ -27769,63 +27827,6 @@ function run2(root, executable, args, env = {}) {
|
|
|
27769
27827
|
};
|
|
27770
27828
|
}
|
|
27771
27829
|
|
|
27772
|
-
// packages/workit-core/src/core/logger.ts
|
|
27773
|
-
import os4 from "node:os";
|
|
27774
|
-
var REDACTED = "[REDACTED]";
|
|
27775
|
-
var SECRET_VALUE = /\b(?:Bearer|Basic|Digest|Token)\s+\S+/gi;
|
|
27776
|
-
var KEY_EQ_VALUE = /\b([A-Za-z0-9_-]*(?:token|secret|password|passwd|apikey|api[_-]?key|authorization|credential|bearer)[A-Za-z0-9_-]*)([:=]\s*).+/gi;
|
|
27777
|
-
var URL_QUERY = /(https?:\/\/[^?#\s]+)\?[^#\s]*/g;
|
|
27778
|
-
var SENSITIVE_WORDS = new Set([
|
|
27779
|
-
"token",
|
|
27780
|
-
"secret",
|
|
27781
|
-
"password",
|
|
27782
|
-
"passwd",
|
|
27783
|
-
"authorization",
|
|
27784
|
-
"credential",
|
|
27785
|
-
"credentials",
|
|
27786
|
-
"cookie",
|
|
27787
|
-
"api",
|
|
27788
|
-
"apikey",
|
|
27789
|
-
"apitoken",
|
|
27790
|
-
"accesstoken",
|
|
27791
|
-
"clientsecret",
|
|
27792
|
-
"refreshtoken",
|
|
27793
|
-
"key",
|
|
27794
|
-
"bearer",
|
|
27795
|
-
"prompt",
|
|
27796
|
-
"message",
|
|
27797
|
-
"messages",
|
|
27798
|
-
"content",
|
|
27799
|
-
"body",
|
|
27800
|
-
"args",
|
|
27801
|
-
"argument",
|
|
27802
|
-
"result",
|
|
27803
|
-
"results",
|
|
27804
|
-
"output",
|
|
27805
|
-
"issue",
|
|
27806
|
-
"description",
|
|
27807
|
-
"summary",
|
|
27808
|
-
"payload",
|
|
27809
|
-
"script",
|
|
27810
|
-
"command",
|
|
27811
|
-
"text",
|
|
27812
|
-
"query"
|
|
27813
|
-
]);
|
|
27814
|
-
var STACK_WORDS = new Set(["stack", "stacktrace", "trace"]);
|
|
27815
|
-
var escapeRegExp2 = (value) => value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
27816
|
-
var homePattern = new RegExp(`${escapeRegExp2(os4.homedir())}(?=[/\\\\]|$)|\\$HOME(?=[/\\\\]|$)`, "g");
|
|
27817
|
-
var applyPatterns = (value) => {
|
|
27818
|
-
let out = value;
|
|
27819
|
-
out = out.replace(SECRET_VALUE, REDACTED);
|
|
27820
|
-
out = out.replace(KEY_EQ_VALUE, "$1$2[REDACTED]");
|
|
27821
|
-
out = out.replace(URL_QUERY, "$1?[REDACTED]");
|
|
27822
|
-
out = out.replace(homePattern, "~");
|
|
27823
|
-
if (process.platform === "win32")
|
|
27824
|
-
out = out.replace(/\\/g, "/");
|
|
27825
|
-
return out;
|
|
27826
|
-
};
|
|
27827
|
-
var redactSecrets = (value) => applyPatterns(value);
|
|
27828
|
-
|
|
27829
27830
|
// packages/workit-mcp/src/server.ts
|
|
27830
27831
|
class McpCapabilityUnavailableError extends Error {
|
|
27831
27832
|
capability;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@brainervirus/workit-mcp",
|
|
3
|
-
"version": "8.
|
|
3
|
+
"version": "8.12.1",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Workit shared MCP transport for the eight task and policy operation families",
|
|
6
6
|
"keywords": [
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
"build": "bun scripts/build.ts"
|
|
43
43
|
},
|
|
44
44
|
"dependencies": {
|
|
45
|
-
"@brainervirus/workit-core": "^8.
|
|
45
|
+
"@brainervirus/workit-core": "^8.12.1",
|
|
46
46
|
"@modelcontextprotocol/sdk": "1.32.0",
|
|
47
47
|
"zod": "4.6.5"
|
|
48
48
|
},
|