@mutmutco/cli 3.120.0 → 3.122.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/main.cjs +22 -19
- package/package.json +1 -1
package/dist/main.cjs
CHANGED
|
@@ -10004,6 +10004,12 @@ var MANAGED_GITIGNORE_LINES = [
|
|
|
10004
10004
|
// thing blocking the cleanup that gate's own worktree needs. Org-universal: every repo runs the same
|
|
10005
10005
|
// gate, so this belongs in the managed block rather than in one repo's own ignores.
|
|
10006
10006
|
".jerv/",
|
|
10007
|
+
// #4856: the JervCode (pi) host writes its loop journal to `.pi/loops/` in whatever repo it runs in —
|
|
10008
|
+
// the same runtime-state class as `.jerv/` and `.codex/` above, and the one active surface missing from
|
|
10009
|
+
// this list. Left un-ignored it is permanent `?? .pi/` noise that refuses a release clean-tree gate
|
|
10010
|
+
// (measured on the v3.120.0 Hub train), with no legal resolution: committing another host's runtime
|
|
10011
|
+
// state is not an option, so the operator's only move was to park the directory outside the repo.
|
|
10012
|
+
".pi/",
|
|
10007
10013
|
// #2321 doctrine: the canonical worktree home is the SIBLING `../mmi-worktrees/<RepoName>/<branch>` (outside the tree,
|
|
10008
10014
|
// via `mmi-cli worktree create`), so a repo-local `.worktrees/` is NOT un-ignored org-wide — `mmi-cli
|
|
10009
10015
|
// doctor` flags one explicitly instead (buildRepoLocalWorktreeCheck) rather than baking the fallback path
|
|
@@ -15845,10 +15851,10 @@ var rollout_plan_default = {
|
|
|
15845
15851
|
note: "The v4.0.0 stamp happens at cut time (D6e #4463); until then the candidate is the origin/development head artifacts (built cli/dist + npm pack), identity proven by dist content hash (D6a)."
|
|
15846
15852
|
},
|
|
15847
15853
|
baseline: {
|
|
15848
|
-
version: "3.
|
|
15849
|
-
tag: "v3.
|
|
15850
|
-
commit: "
|
|
15851
|
-
npm: "@mutmutco/cli@3.
|
|
15854
|
+
version: "3.122.0",
|
|
15855
|
+
tag: "v3.122.0",
|
|
15856
|
+
commit: "d145ba2bac34",
|
|
15857
|
+
npm: "@mutmutco/cli@3.122.0"
|
|
15852
15858
|
},
|
|
15853
15859
|
exitCriterion: "fleet-n-of-n",
|
|
15854
15860
|
hubOnlyShortcut: "forbidden",
|
|
@@ -15865,14 +15871,14 @@ var rollout_plan_default = {
|
|
|
15865
15871
|
repo: "mutmutco/mmi-hub",
|
|
15866
15872
|
role: "canary",
|
|
15867
15873
|
schedule: "train",
|
|
15868
|
-
v3Target: "v3.
|
|
15874
|
+
v3Target: "v3.122.0"
|
|
15869
15875
|
}
|
|
15870
15876
|
],
|
|
15871
15877
|
rollbackTrigger: "Any red inside the post-cut soak window: `devops train gate` FAIL attributable to the v4 doors, Hub endpoint health probe failure, a v3 client refused while the compat window must still admit it (SUPPORTED_MINOR_WINDOW=2, MIN_CLIENT_VERSION 0.0.0 \u2014 D6a), or npm consumer install/doctor failure on the v4 dist.",
|
|
15872
15878
|
rollback: {
|
|
15873
15879
|
independent: true,
|
|
15874
|
-
mechanism: "npm dist-tag latest -> 3.
|
|
15875
|
-
v3Target: "v3.
|
|
15880
|
+
mechanism: "npm dist-tag latest -> 3.122.0 and redeploy the Hub Lambda from tag v3.122.0 (d145ba2bac34); installed clients repair via `mmi-cli doctor`. No other cohort is touched.",
|
|
15881
|
+
v3Target: "v3.122.0 (@mutmutco/cli@3.122.0, tag commit d145ba2bac34 \u2014 the preserved latest-v3 distribution, D6b)"
|
|
15876
15882
|
}
|
|
15877
15883
|
},
|
|
15878
15884
|
{
|
|
@@ -22831,13 +22837,9 @@ function partitionBoardItems(items, viewer, currentRepo, writableRepos) {
|
|
|
22831
22837
|
sortBuckets(groups.secondary);
|
|
22832
22838
|
return groups;
|
|
22833
22839
|
}
|
|
22834
|
-
function detailCandidates(report) {
|
|
22835
|
-
|
|
22836
|
-
|
|
22837
|
-
...report.primary.claimable,
|
|
22838
|
-
...report.secondary.userOwned,
|
|
22839
|
-
...report.secondary.claimable
|
|
22840
|
-
].filter((item) => item.contentType === "Issue");
|
|
22840
|
+
function detailCandidates(report, options = {}) {
|
|
22841
|
+
const scopes = [report.primary, report.secondary];
|
|
22842
|
+
return scopes.flatMap((scope) => options.all ? [...scope.userOwned, ...scope.claimable, ...scope.taken, ...scope.unownedInFlight] : [...scope.userOwned, ...scope.claimable]).filter((item) => item.contentType === "Issue");
|
|
22841
22843
|
}
|
|
22842
22844
|
function boardNotFoundError(ref, board, opts = {}) {
|
|
22843
22845
|
const verb = opts.verb ?? "is not on";
|
|
@@ -23133,8 +23135,8 @@ async function readBoard(options, deps = {}) {
|
|
|
23133
23135
|
freshness,
|
|
23134
23136
|
...sourceReason ? { sourceReason } : {}
|
|
23135
23137
|
};
|
|
23136
|
-
if (options.includeBundleDetails) {
|
|
23137
|
-
await attachBundleDetails(report, client, options.allowPartial ?? false);
|
|
23138
|
+
if (options.includeBundleDetails || options.includeAllBodies) {
|
|
23139
|
+
await attachBundleDetails(report, client, options.allowPartial ?? false, { all: options.includeAllBodies });
|
|
23138
23140
|
}
|
|
23139
23141
|
for (const scope of ["primary", "secondary"]) {
|
|
23140
23142
|
const filtered = await filterDependencyBlockedClaimables(report[scope].claimable, client, {
|
|
@@ -23761,8 +23763,8 @@ function nodeToItem(node, cfg) {
|
|
|
23761
23763
|
function isSupportedContent(content) {
|
|
23762
23764
|
return Boolean(content && (content.__typename === "Issue" || content.__typename === "PullRequest"));
|
|
23763
23765
|
}
|
|
23764
|
-
async function attachBundleDetails(report, client, allowPartial) {
|
|
23765
|
-
const candidates = detailCandidates(report);
|
|
23766
|
+
async function attachBundleDetails(report, client, allowPartial, options = {}) {
|
|
23767
|
+
const candidates = detailCandidates(report, options);
|
|
23766
23768
|
if (candidates.length === 0) return;
|
|
23767
23769
|
let next = 0;
|
|
23768
23770
|
const worker = async () => {
|
|
@@ -32389,6 +32391,7 @@ function registerBoardCommands(program3) {
|
|
|
32389
32391
|
config: await loadConfigForRepo(o.repo),
|
|
32390
32392
|
repo: o.repo,
|
|
32391
32393
|
includeBundleDetails: o.bundleDetails,
|
|
32394
|
+
includeAllBodies: o.bodies,
|
|
32392
32395
|
allowPartial: o.allowPartial,
|
|
32393
32396
|
live: o.live
|
|
32394
32397
|
});
|
|
@@ -32401,7 +32404,7 @@ function registerBoardCommands(program3) {
|
|
|
32401
32404
|
return alreadyClaimed ? `Check ${ref}: claimed and In Progress, no live contest - claim would renew the lease (nothing written)` : `Check ${ref}: free - claim would proceed (nothing written)`;
|
|
32402
32405
|
}
|
|
32403
32406
|
const board = program3.command("board").description("read, claim, show, and move Project v2 work items for the current repo");
|
|
32404
|
-
board.command("read", { isDefault: true }).description("read the board and print user-owned, claimable, and taken items").option("--json", "machine-readable output").option("--repo <owner/repo>", "current repo (defaults to git origin)").option("--bundle-details", "fetch body/comments only for user-owned and claimable issues").option("--allow-partial", "return partial board results when later page/detail reads fail").option("--live", "bypass the projection and read the authoritative GitHub Project v2 board").addHelpText("after", "\nBy default, read uses the explicitly-stale Hub projection and prints its watermark. --live is authoritative.\n--allow-partial applies to the live paginated path and detail reads; the projection row itself is atomic.\n").action((o) => runBoardRead(o));
|
|
32407
|
+
board.command("read", { isDefault: true }).description("read the board and print user-owned, claimable, and taken items").option("--json", "machine-readable output").option("--repo <owner/repo>", "current repo (defaults to git origin)").option("--bundle-details", "fetch body/comments only for user-owned and claimable issues").option("--bodies", "fetch body/comments for EVERY scoped row, including taken and unowned in-flight ones \u2014 for consumers that scope by Status rather than ownership (#4861); implies --bundle-details and costs one extra read per row").option("--allow-partial", "return partial board results when later page/detail reads fail").option("--live", "bypass the projection and read the authoritative GitHub Project v2 board").addHelpText("after", "\nBy default, read uses the explicitly-stale Hub projection and prints its watermark. --live is authoritative.\n--allow-partial applies to the live paginated path and detail reads; the projection row itself is atomic.\n").action((o) => runBoardRead(o));
|
|
32405
32408
|
withExamples(mutating(
|
|
32406
32409
|
board.command("claim <issues...>").description("claim issues: assign them and move their Project v2 Status to In Progress \u2014 idempotent, so an item already yours and In Progress succeeds unchanged (one or more refs)").option("--json", "machine-readable output").option("--repo <owner/repo>", "current repo for local issue numbers (defaults to git origin)").option("--for <login>", "assign to this login instead of @me \u2014 agent claims on behalf of the master").option("--force", "take an item already claimed by another lane that shows live evidence of active work (#3727)").option("--check", "read-only: run every claim gate and report the verdict, writing nothing \u2014 exits 1 with the same refusal a real claim would raise (#4511)").option("--allow-partial", "return success JSON if assignment succeeds but the status move fails"),
|
|
32407
32410
|
(_opts, args) => ({ command: "board claim", issues: args[0] ?? [] })
|
package/package.json
CHANGED