@brainervirus/workit-codex 8.35.0 → 8.36.0
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/launch-mcp.js
CHANGED
|
@@ -14926,7 +14926,11 @@ var releaseTrackSchema = object({
|
|
|
14926
14926
|
["requiredChecks", track.requiredChecks ?? []]
|
|
14927
14927
|
]) {
|
|
14928
14928
|
if (new Set(values).size !== values.length) {
|
|
14929
|
-
context.addIssue({
|
|
14929
|
+
context.addIssue({
|
|
14930
|
+
code: "custom",
|
|
14931
|
+
path: [field],
|
|
14932
|
+
message: "entries must be unique"
|
|
14933
|
+
});
|
|
14930
14934
|
}
|
|
14931
14935
|
}
|
|
14932
14936
|
if (track.versionSource?.kind === "package-json" && (path4.posix.isAbsolute(track.versionSource.path.replaceAll("\\", "/")) || /^[A-Za-z]:\//u.test(track.versionSource.path.replaceAll("\\", "/")) || track.versionSource.path.replaceAll("\\", "/").split("/").includes(".."))) {
|
|
@@ -14959,7 +14963,10 @@ var workspaceConfigSchema = object({
|
|
|
14959
14963
|
kind,
|
|
14960
14964
|
union([boolean2(), literal("verified")]).optional()
|
|
14961
14965
|
]))).passthrough().optional(),
|
|
14962
|
-
youtrack: object({
|
|
14966
|
+
youtrack: object({
|
|
14967
|
+
baseUrl: nonBlank.optional(),
|
|
14968
|
+
link_issues: boolean2().optional()
|
|
14969
|
+
}).passthrough().optional(),
|
|
14963
14970
|
issues: object({
|
|
14964
14971
|
provider: _enum(["github", "gitlab", "youtrack"]).optional(),
|
|
14965
14972
|
link: boolean2().optional(),
|
|
@@ -15000,9 +15007,16 @@ var workspacesFileSchema = object({
|
|
|
15000
15007
|
var workspacesRevision = (contents) => createHash2("sha256").update(contents ?? "<missing>").digest("hex");
|
|
15001
15008
|
var validateWorkspacesDocument = (parsed, file) => {
|
|
15002
15009
|
if (!isConfigObject(parsed)) {
|
|
15003
|
-
return {
|
|
15010
|
+
return {
|
|
15011
|
+
status: "malformed",
|
|
15012
|
+
path: file,
|
|
15013
|
+
entries: [],
|
|
15014
|
+
error: `${file} is not a JSON object`
|
|
15015
|
+
};
|
|
15004
15016
|
}
|
|
15005
|
-
const validated = workspacesFileSchema.safeParse(parsed, {
|
|
15017
|
+
const validated = workspacesFileSchema.safeParse(parsed, {
|
|
15018
|
+
reportInput: true
|
|
15019
|
+
});
|
|
15006
15020
|
if (!validated.success) {
|
|
15007
15021
|
const detail = validated.error.issues.map((issue) => {
|
|
15008
15022
|
const field = String(issue.path[issue.path.length - 1] ?? "");
|
|
@@ -15042,7 +15056,12 @@ var readWorkspacesResult = (dir = configDir()) => {
|
|
|
15042
15056
|
raw = readFileSync2(file, "utf8");
|
|
15043
15057
|
} catch (error) {
|
|
15044
15058
|
if (error.code === "ENOENT")
|
|
15045
|
-
return {
|
|
15059
|
+
return {
|
|
15060
|
+
status: "missing",
|
|
15061
|
+
path: file,
|
|
15062
|
+
entries: [],
|
|
15063
|
+
revision: workspacesRevision(null)
|
|
15064
|
+
};
|
|
15046
15065
|
return {
|
|
15047
15066
|
status: "malformed",
|
|
15048
15067
|
path: file,
|
|
@@ -15062,7 +15081,10 @@ var readWorkspacesResult = (dir = configDir()) => {
|
|
|
15062
15081
|
error: `${file} is not valid JSON`
|
|
15063
15082
|
};
|
|
15064
15083
|
}
|
|
15065
|
-
return {
|
|
15084
|
+
return {
|
|
15085
|
+
...validateWorkspacesDocument(parsed, file),
|
|
15086
|
+
revision: workspacesRevision(raw)
|
|
15087
|
+
};
|
|
15066
15088
|
};
|
|
15067
15089
|
var globToRegExp = (glob) => {
|
|
15068
15090
|
let out = "";
|
|
@@ -15273,7 +15295,10 @@ var matchRuntimeWorkspace = (cwd, dir = configDir()) => {
|
|
|
15273
15295
|
};
|
|
15274
15296
|
var resolveRuntimeReleaseTracks = (cwd) => {
|
|
15275
15297
|
const matched = matchRuntimeWorkspace(cwd);
|
|
15276
|
-
return matched ? {
|
|
15298
|
+
return matched ? {
|
|
15299
|
+
workspace: matched.selected.name,
|
|
15300
|
+
releaseTracks: matched.selected.releaseTracks
|
|
15301
|
+
} : null;
|
|
15277
15302
|
};
|
|
15278
15303
|
var modelSources = (cwd, dir) => {
|
|
15279
15304
|
const out = [];
|
|
@@ -20644,7 +20669,12 @@ function readLedger(cwd, options = {}) {
|
|
|
20644
20669
|
});
|
|
20645
20670
|
return {
|
|
20646
20671
|
ok: true,
|
|
20647
|
-
value: {
|
|
20672
|
+
value: {
|
|
20673
|
+
path: file.value,
|
|
20674
|
+
rows,
|
|
20675
|
+
skipped,
|
|
20676
|
+
integrity: options.integrity ? integrity : null
|
|
20677
|
+
}
|
|
20648
20678
|
};
|
|
20649
20679
|
}
|
|
20650
20680
|
var TAMPER_REASONS = new Set(["hash_mismatch", "broken_link"]);
|
|
@@ -20737,7 +20767,10 @@ var renameAwareBranch = (scopeOf, branch) => {
|
|
|
20737
20767
|
return scopeOf(own)({ branch: theirs, at: target.at });
|
|
20738
20768
|
};
|
|
20739
20769
|
};
|
|
20740
|
-
function authorSessions(cwd, rows, branch, range = {
|
|
20770
|
+
function authorSessions(cwd, rows, branch, range = {
|
|
20771
|
+
base: null,
|
|
20772
|
+
head: null
|
|
20773
|
+
}, scope = branchScope(cwd, branch)) {
|
|
20741
20774
|
const sessions = new Set;
|
|
20742
20775
|
for (const row of rows) {
|
|
20743
20776
|
if (!scope(row) || row.type !== "commit.recorded" && row.type !== "task.opened")
|
|
@@ -20848,12 +20881,13 @@ function restackCarries(exactIn, rows, branch, from, to) {
|
|
|
20848
20881
|
const cwd = exactIn;
|
|
20849
20882
|
let known = restackExact.get(row);
|
|
20850
20883
|
if (known === undefined) {
|
|
20851
|
-
|
|
20884
|
+
const range = typeof row.fromBase === "string" && typeof row.toBase === "string" ? {
|
|
20852
20885
|
from: fromHead,
|
|
20853
20886
|
to: head,
|
|
20854
20887
|
fromBase: row.fromBase,
|
|
20855
20888
|
toBase: row.toBase
|
|
20856
|
-
}
|
|
20889
|
+
} : null;
|
|
20890
|
+
known = range !== null && (sameOwnChange(cwd, range) || cleanRebase(cwd, range));
|
|
20857
20891
|
restackExact.set(row, known);
|
|
20858
20892
|
}
|
|
20859
20893
|
return known;
|
|
@@ -20888,7 +20922,10 @@ function checkVerdicts(cwd, branch, ledgerRows) {
|
|
|
20888
20922
|
const cacheKey = `${base}\x00${at}`;
|
|
20889
20923
|
let key = keyCache.get(cacheKey);
|
|
20890
20924
|
if (!key) {
|
|
20891
|
-
key = {
|
|
20925
|
+
key = {
|
|
20926
|
+
patchId: patchId(cwd, base, at),
|
|
20927
|
+
diffHash: diffHash(cwd, base, at)
|
|
20928
|
+
};
|
|
20892
20929
|
keyCache.set(cacheKey, key);
|
|
20893
20930
|
}
|
|
20894
20931
|
return key;
|
|
@@ -20928,7 +20965,10 @@ function checkVerdicts(cwd, branch, ledgerRows) {
|
|
|
20928
20965
|
};
|
|
20929
20966
|
const exactCarry = (row) => FAILING.has(String(row.result)) || exactMatch(row) !== null;
|
|
20930
20967
|
const keyBasis = (row) => {
|
|
20931
|
-
const basis = verdictBasis(row, {
|
|
20968
|
+
const basis = verdictBasis(row, {
|
|
20969
|
+
head,
|
|
20970
|
+
...keyFor(row.base ?? fallbackBase)
|
|
20971
|
+
});
|
|
20932
20972
|
return basis === "carried" && !exactCarry(row) ? "stale" : basis;
|
|
20933
20973
|
};
|
|
20934
20974
|
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;
|
|
@@ -21033,7 +21073,11 @@ function checkVerdicts(cwd, branch, ledgerRows) {
|
|
|
21033
21073
|
const newestCurrent = verdicts.findLast((entry) => entry.current) ?? verdicts.at(-1) ?? null;
|
|
21034
21074
|
const failing = verdicts.find((entry) => entry.current && entry.independent && FAILING.has(String(entry.verdict.result)));
|
|
21035
21075
|
const newestAccepted = verdicts.findLast((entry) => entry.accepted && STRONG_RESULTS.has(String(entry.verdict.result))) ?? null;
|
|
21036
|
-
const accepted = tampered.length ? {
|
|
21076
|
+
const accepted = tampered.length ? {
|
|
21077
|
+
accepted: false,
|
|
21078
|
+
verdict: null,
|
|
21079
|
+
reasons: ["ledger_tampered"]
|
|
21080
|
+
} : newestAccepted && !failing ? { accepted: true, verdict: newestAccepted.verdict, reasons: [] } : {
|
|
21037
21081
|
accepted: false,
|
|
21038
21082
|
verdict: failing?.verdict ?? null,
|
|
21039
21083
|
reasons: failing ? ["failing_verdict"] : !newestCurrent ? ["no_verdict"] : newestCurrent.reasons.length ? newestCurrent.reasons : ["type_check_only"]
|
|
@@ -21051,7 +21095,10 @@ function checkVerdicts(cwd, branch, ledgerRows) {
|
|
|
21051
21095
|
selfVerdict: accepted.accepted ? null : selfEntry?.verdict ?? null,
|
|
21052
21096
|
base: newestCurrent?.verdict.base ?? fallbackBase,
|
|
21053
21097
|
patchId: keyFor(newestCurrent?.verdict.base ?? fallbackBase).patchId,
|
|
21054
|
-
current: {
|
|
21098
|
+
current: {
|
|
21099
|
+
basis: newestCurrent?.basis ?? "none",
|
|
21100
|
+
verdict: newestCurrent?.verdict ?? null
|
|
21101
|
+
},
|
|
21055
21102
|
carry: carryEntry?.carry ?? null,
|
|
21056
21103
|
reverify,
|
|
21057
21104
|
accepted,
|
|
@@ -6261,7 +6261,11 @@ var releaseTrackSchema = object({
|
|
|
6261
6261
|
["requiredChecks", track.requiredChecks ?? []]
|
|
6262
6262
|
]) {
|
|
6263
6263
|
if (new Set(values).size !== values.length) {
|
|
6264
|
-
context.addIssue({
|
|
6264
|
+
context.addIssue({
|
|
6265
|
+
code: "custom",
|
|
6266
|
+
path: [field],
|
|
6267
|
+
message: "entries must be unique"
|
|
6268
|
+
});
|
|
6265
6269
|
}
|
|
6266
6270
|
}
|
|
6267
6271
|
if (track.versionSource?.kind === "package-json" && (path2.posix.isAbsolute(track.versionSource.path.replaceAll("\\", "/")) || /^[A-Za-z]:\//u.test(track.versionSource.path.replaceAll("\\", "/")) || track.versionSource.path.replaceAll("\\", "/").split("/").includes(".."))) {
|
|
@@ -6294,7 +6298,10 @@ var workspaceConfigSchema = object({
|
|
|
6294
6298
|
kind,
|
|
6295
6299
|
union([boolean2(), literal("verified")]).optional()
|
|
6296
6300
|
]))).passthrough().optional(),
|
|
6297
|
-
youtrack: object({
|
|
6301
|
+
youtrack: object({
|
|
6302
|
+
baseUrl: nonBlank.optional(),
|
|
6303
|
+
link_issues: boolean2().optional()
|
|
6304
|
+
}).passthrough().optional(),
|
|
6298
6305
|
issues: object({
|
|
6299
6306
|
provider: _enum(["github", "gitlab", "youtrack"]).optional(),
|
|
6300
6307
|
link: boolean2().optional(),
|
|
@@ -6335,9 +6342,16 @@ var workspacesFileSchema = object({
|
|
|
6335
6342
|
var workspacesRevision = (contents) => createHash("sha256").update(contents ?? "<missing>").digest("hex");
|
|
6336
6343
|
var validateWorkspacesDocument = (parsed, file) => {
|
|
6337
6344
|
if (!isConfigObject(parsed)) {
|
|
6338
|
-
return {
|
|
6345
|
+
return {
|
|
6346
|
+
status: "malformed",
|
|
6347
|
+
path: file,
|
|
6348
|
+
entries: [],
|
|
6349
|
+
error: `${file} is not a JSON object`
|
|
6350
|
+
};
|
|
6339
6351
|
}
|
|
6340
|
-
const validated = workspacesFileSchema.safeParse(parsed, {
|
|
6352
|
+
const validated = workspacesFileSchema.safeParse(parsed, {
|
|
6353
|
+
reportInput: true
|
|
6354
|
+
});
|
|
6341
6355
|
if (!validated.success) {
|
|
6342
6356
|
const detail = validated.error.issues.map((issue) => {
|
|
6343
6357
|
const field = String(issue.path[issue.path.length - 1] ?? "");
|
|
@@ -6377,7 +6391,12 @@ var readWorkspacesResult = (dir = configDir()) => {
|
|
|
6377
6391
|
raw = readFileSync2(file, "utf8");
|
|
6378
6392
|
} catch (error) {
|
|
6379
6393
|
if (error.code === "ENOENT")
|
|
6380
|
-
return {
|
|
6394
|
+
return {
|
|
6395
|
+
status: "missing",
|
|
6396
|
+
path: file,
|
|
6397
|
+
entries: [],
|
|
6398
|
+
revision: workspacesRevision(null)
|
|
6399
|
+
};
|
|
6381
6400
|
return {
|
|
6382
6401
|
status: "malformed",
|
|
6383
6402
|
path: file,
|
|
@@ -6397,7 +6416,10 @@ var readWorkspacesResult = (dir = configDir()) => {
|
|
|
6397
6416
|
error: `${file} is not valid JSON`
|
|
6398
6417
|
};
|
|
6399
6418
|
}
|
|
6400
|
-
return {
|
|
6419
|
+
return {
|
|
6420
|
+
...validateWorkspacesDocument(parsed, file),
|
|
6421
|
+
revision: workspacesRevision(raw)
|
|
6422
|
+
};
|
|
6401
6423
|
};
|
|
6402
6424
|
var globToRegExp = (glob) => {
|
|
6403
6425
|
let out = "";
|
|
@@ -6608,7 +6630,10 @@ var matchRuntimeWorkspace = (cwd, dir = configDir()) => {
|
|
|
6608
6630
|
};
|
|
6609
6631
|
var resolveRuntimeReleaseTracks = (cwd) => {
|
|
6610
6632
|
const matched = matchRuntimeWorkspace(cwd);
|
|
6611
|
-
return matched ? {
|
|
6633
|
+
return matched ? {
|
|
6634
|
+
workspace: matched.selected.name,
|
|
6635
|
+
releaseTracks: matched.selected.releaseTracks
|
|
6636
|
+
} : null;
|
|
6612
6637
|
};
|
|
6613
6638
|
var inheritedSetting = (cwd, dir, has) => {
|
|
6614
6639
|
let matched;
|
|
@@ -6621,7 +6646,10 @@ var inheritedSetting = (cwd, dir, has) => {
|
|
|
6621
6646
|
return null;
|
|
6622
6647
|
const { selected, matches } = matched;
|
|
6623
6648
|
const enclosing = matches.filter((entry) => entry !== selected).toSorted((a, b) => globSpecificity(b.glob) - globSpecificity(a.glob));
|
|
6624
|
-
return {
|
|
6649
|
+
return {
|
|
6650
|
+
workspace: selected.name,
|
|
6651
|
+
source: [selected, ...enclosing].find(has) ?? null
|
|
6652
|
+
};
|
|
6625
6653
|
};
|
|
6626
6654
|
var workspaceTrailers = (cwd, dir) => {
|
|
6627
6655
|
const found = inheritedSetting(cwd, dir, (entry) => typeof entry.trailers === "boolean");
|
|
@@ -13458,7 +13486,12 @@ function readLedger(cwd, options = {}) {
|
|
|
13458
13486
|
});
|
|
13459
13487
|
return {
|
|
13460
13488
|
ok: true,
|
|
13461
|
-
value: {
|
|
13489
|
+
value: {
|
|
13490
|
+
path: file.value,
|
|
13491
|
+
rows,
|
|
13492
|
+
skipped,
|
|
13493
|
+
integrity: options.integrity ? integrity : null
|
|
13494
|
+
}
|
|
13462
13495
|
};
|
|
13463
13496
|
}
|
|
13464
13497
|
var TAMPER_REASONS = new Set(["hash_mismatch", "broken_link"]);
|
|
@@ -13551,7 +13584,10 @@ var renameAwareBranch = (scopeOf, branch) => {
|
|
|
13551
13584
|
return scopeOf(own)({ branch: theirs, at: target.at });
|
|
13552
13585
|
};
|
|
13553
13586
|
};
|
|
13554
|
-
function authorSessions(cwd, rows, branch, range = {
|
|
13587
|
+
function authorSessions(cwd, rows, branch, range = {
|
|
13588
|
+
base: null,
|
|
13589
|
+
head: null
|
|
13590
|
+
}, scope = branchScope(cwd, branch)) {
|
|
13555
13591
|
const sessions = new Set;
|
|
13556
13592
|
for (const row of rows) {
|
|
13557
13593
|
if (!scope(row) || row.type !== "commit.recorded" && row.type !== "task.opened")
|
|
@@ -13662,12 +13698,13 @@ function restackCarries(exactIn, rows, branch, from, to) {
|
|
|
13662
13698
|
const cwd = exactIn;
|
|
13663
13699
|
let known = restackExact.get(row);
|
|
13664
13700
|
if (known === undefined) {
|
|
13665
|
-
|
|
13701
|
+
const range = typeof row.fromBase === "string" && typeof row.toBase === "string" ? {
|
|
13666
13702
|
from: fromHead,
|
|
13667
13703
|
to: head,
|
|
13668
13704
|
fromBase: row.fromBase,
|
|
13669
13705
|
toBase: row.toBase
|
|
13670
|
-
}
|
|
13706
|
+
} : null;
|
|
13707
|
+
known = range !== null && (sameOwnChange(cwd, range) || cleanRebase(cwd, range));
|
|
13671
13708
|
restackExact.set(row, known);
|
|
13672
13709
|
}
|
|
13673
13710
|
return known;
|
|
@@ -13702,7 +13739,10 @@ function checkVerdicts(cwd, branch, ledgerRows) {
|
|
|
13702
13739
|
const cacheKey = `${base}\x00${at}`;
|
|
13703
13740
|
let key = keyCache.get(cacheKey);
|
|
13704
13741
|
if (!key) {
|
|
13705
|
-
key = {
|
|
13742
|
+
key = {
|
|
13743
|
+
patchId: patchId(cwd, base, at),
|
|
13744
|
+
diffHash: diffHash(cwd, base, at)
|
|
13745
|
+
};
|
|
13706
13746
|
keyCache.set(cacheKey, key);
|
|
13707
13747
|
}
|
|
13708
13748
|
return key;
|
|
@@ -13742,7 +13782,10 @@ function checkVerdicts(cwd, branch, ledgerRows) {
|
|
|
13742
13782
|
};
|
|
13743
13783
|
const exactCarry = (row) => FAILING.has(String(row.result)) || exactMatch(row) !== null;
|
|
13744
13784
|
const keyBasis = (row) => {
|
|
13745
|
-
const basis = verdictBasis(row, {
|
|
13785
|
+
const basis = verdictBasis(row, {
|
|
13786
|
+
head,
|
|
13787
|
+
...keyFor(row.base ?? fallbackBase)
|
|
13788
|
+
});
|
|
13746
13789
|
return basis === "carried" && !exactCarry(row) ? "stale" : basis;
|
|
13747
13790
|
};
|
|
13748
13791
|
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;
|
|
@@ -13847,7 +13890,11 @@ function checkVerdicts(cwd, branch, ledgerRows) {
|
|
|
13847
13890
|
const newestCurrent = verdicts.findLast((entry) => entry.current) ?? verdicts.at(-1) ?? null;
|
|
13848
13891
|
const failing = verdicts.find((entry) => entry.current && entry.independent && FAILING.has(String(entry.verdict.result)));
|
|
13849
13892
|
const newestAccepted = verdicts.findLast((entry) => entry.accepted && STRONG_RESULTS.has(String(entry.verdict.result))) ?? null;
|
|
13850
|
-
const accepted = tampered.length ? {
|
|
13893
|
+
const accepted = tampered.length ? {
|
|
13894
|
+
accepted: false,
|
|
13895
|
+
verdict: null,
|
|
13896
|
+
reasons: ["ledger_tampered"]
|
|
13897
|
+
} : newestAccepted && !failing ? { accepted: true, verdict: newestAccepted.verdict, reasons: [] } : {
|
|
13851
13898
|
accepted: false,
|
|
13852
13899
|
verdict: failing?.verdict ?? null,
|
|
13853
13900
|
reasons: failing ? ["failing_verdict"] : !newestCurrent ? ["no_verdict"] : newestCurrent.reasons.length ? newestCurrent.reasons : ["type_check_only"]
|
|
@@ -13865,7 +13912,10 @@ function checkVerdicts(cwd, branch, ledgerRows) {
|
|
|
13865
13912
|
selfVerdict: accepted.accepted ? null : selfEntry?.verdict ?? null,
|
|
13866
13913
|
base: newestCurrent?.verdict.base ?? fallbackBase,
|
|
13867
13914
|
patchId: keyFor(newestCurrent?.verdict.base ?? fallbackBase).patchId,
|
|
13868
|
-
current: {
|
|
13915
|
+
current: {
|
|
13916
|
+
basis: newestCurrent?.basis ?? "none",
|
|
13917
|
+
verdict: newestCurrent?.verdict ?? null
|
|
13918
|
+
},
|
|
13869
13919
|
carry: carryEntry?.carry ?? null,
|
|
13870
13920
|
reverify,
|
|
13871
13921
|
accepted,
|
|
@@ -17439,7 +17489,10 @@ function entryCompactContext(store, entry, session, context) {
|
|
|
17439
17489
|
const task = entry ? store.readTask(entry.id) : null;
|
|
17440
17490
|
if (task && !task.ok)
|
|
17441
17491
|
return null;
|
|
17442
|
-
const freshness = {
|
|
17492
|
+
const freshness = {
|
|
17493
|
+
mode: "signal",
|
|
17494
|
+
current: () => recentSignal(store.root)
|
|
17495
|
+
};
|
|
17443
17496
|
const observed = task?.data.evidence.some(isObservedCheck) ?? false;
|
|
17444
17497
|
const files = (task?.data.decisions ?? []).flatMap((decision) => decision.data.binding.contentRefs.flatMap((ref) => ref.kind === "file" ? [path18.resolve(store.root, ref.path)] : []));
|
|
17445
17498
|
const observedFiles = filesKey(files);
|
|
@@ -17505,7 +17558,10 @@ var checkoutAt = (cwd) => {
|
|
|
17505
17558
|
if (fs13.existsSync(dotGit)) {
|
|
17506
17559
|
const admin = fs13.statSync(dotGit).isFile() ? path18.resolve(dir, /^gitdir:\s*(.+)$/mu.exec(fs13.readFileSync(dotGit, "utf8"))?.[1]?.trim() ?? "") : dotGit;
|
|
17507
17560
|
const head = fs13.readFileSync(path18.join(admin, "HEAD"), "utf8").trim();
|
|
17508
|
-
return {
|
|
17561
|
+
return {
|
|
17562
|
+
root: dir,
|
|
17563
|
+
branch: /^ref: refs\/heads\/(.+)$/u.exec(head)?.[1] ?? null
|
|
17564
|
+
};
|
|
17509
17565
|
}
|
|
17510
17566
|
if (path18.dirname(dir) === dir)
|
|
17511
17567
|
return null;
|
package/dist/workit-hook.js
CHANGED
|
@@ -82,6 +82,6 @@ if (quiet) {
|
|
|
82
82
|
process.stdout.write(`${JSON.stringify({ hookSpecificOutput: { hookEventName: quiet } })}
|
|
83
83
|
`);
|
|
84
84
|
} else {
|
|
85
|
-
const { runCodexHook } = await import("./workit-hook-
|
|
85
|
+
const { runCodexHook } = await import("./workit-hook-7dqgrrwd.js");
|
|
86
86
|
await runCodexHook([payload]);
|
|
87
87
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@brainervirus/workit-codex",
|
|
3
|
-
"version": "8.
|
|
3
|
+
"version": "8.36.0",
|
|
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.
|
|
43
|
-
"@brainervirus/workit-mcp": "^8.
|
|
42
|
+
"@brainervirus/workit-core": "^8.36.0",
|
|
43
|
+
"@brainervirus/workit-mcp": "^8.36.0"
|
|
44
44
|
},
|
|
45
45
|
"engines": {
|
|
46
46
|
"node": ">=24"
|
|
@@ -23,7 +23,7 @@ description: Build a requested change in small verified steps - follow local pat
|
|
|
23
23
|
(`workit check test`, plus `lint` and `typecheck` when the repo has them),
|
|
24
24
|
not after every edit. Heavy work runs under one machine-wide lease: an ad-hoc
|
|
25
25
|
suite is `workit check --heavy -- <cmd>`, never a hand-made flock; a busy
|
|
26
|
-
lease waits and names its holder (`workit lock status`).
|
|
26
|
+
lease waits and names its holder (`workit lock status`). A tool warning is a finding: fix it in this PR in the right layer, or record the false positive with evidence; pre-existing ones get their own PR.
|
|
27
27
|
5. Prove the feature on its real surface with the project's `verify-<app>`
|
|
28
28
|
skill; none yet? Write one (read the `workit-verify-app` skill's SKILL.md and follow it). Tests show branch behavior,
|
|
29
29
|
not that the feature works. The report carries what you observed: a UI
|
|
@@ -49,7 +49,7 @@ the same check. Fix round and recheck both failed: a decider (read the `workit-f
|
|
|
49
49
|
5. **CI.** Local gates mirror CI: push and continue; `workit ci wait` once on
|
|
50
50
|
the final head, in the background where the host allows. Red: read `logTail`, classify. Flake or infra: one
|
|
51
51
|
`workit ci rerun --failed --reason flake|infra` per head. Real: reproduce
|
|
52
|
-
with `workit check`, fix the root cause, batch every fix in one push.
|
|
52
|
+
with `workit check`, fix the root cause, batch every fix in one push. A tool warning is a finding: fix it in this PR in the right layer, or record the false positive with evidence; pre-existing ones get their own PR.
|
|
53
53
|
6. **Verified.** The lane in `workit pr status` decides: none, no verdict; self, your `--self` verdict; focused or full (or `verification: self|independent`), one non-author verifier per PR after the last push, never per push (read the `workit-review` skill's SKILL.md and follow it), on Claude Code with the `model` and `effort` of `workit models show --role verifier`. A docs-only push (or test-only under a unit verdict) keeps the verdict (`carried`); `reverify: focused` re-checks only the new diff, reusing green CI; one verdict at a stack's top covers its unchanged lower PRs. Land only when
|
|
54
54
|
granted: `workit stack land` or `workit pr merge`; `--unverified --reason` if user-asked.
|
|
55
55
|
7. **Observe it landed:** `workit verify-delivery pr` or `merge`. After a failed
|