@renaiss-shipflow/cli 0.16.0 โ 0.17.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/commands/activity.d.ts.map +1 -1
- package/dist/commands/activity.js +2 -4
- package/dist/commands/activity.js.map +1 -1
- package/dist/commands/channels.d.ts.map +1 -1
- package/dist/commands/channels.js +3 -6
- package/dist/commands/channels.js.map +1 -1
- package/dist/commands/claims.d.ts.map +1 -1
- package/dist/commands/claims.js +12 -24
- package/dist/commands/claims.js.map +1 -1
- package/dist/commands/features.d.ts.map +1 -1
- package/dist/commands/features.js +25 -37
- package/dist/commands/features.js.map +1 -1
- package/dist/commands/helpers.d.ts +61 -0
- package/dist/commands/helpers.d.ts.map +1 -1
- package/dist/commands/helpers.js +60 -6
- package/dist/commands/helpers.js.map +1 -1
- package/dist/commands/inbox.d.ts.map +1 -1
- package/dist/commands/inbox.js +18 -29
- package/dist/commands/inbox.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +3 -10
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/issue.d.ts.map +1 -1
- package/dist/commands/issue.js +22 -51
- package/dist/commands/issue.js.map +1 -1
- package/dist/commands/issues.d.ts.map +1 -1
- package/dist/commands/issues.js +9 -21
- package/dist/commands/issues.js.map +1 -1
- package/dist/commands/pr.d.ts.map +1 -1
- package/dist/commands/pr.js +51 -125
- package/dist/commands/pr.js.map +1 -1
- package/dist/commands/regression.d.ts.map +1 -1
- package/dist/commands/regression.js +4 -22
- package/dist/commands/regression.js.map +1 -1
- package/dist/commands/release.d.ts.map +1 -1
- package/dist/commands/release.js +9 -21
- package/dist/commands/release.js.map +1 -1
- package/dist/commands/repos.d.ts.map +1 -1
- package/dist/commands/repos.js +4 -9
- package/dist/commands/repos.js.map +1 -1
- package/dist/commands/stats.d.ts.map +1 -1
- package/dist/commands/stats.js +2 -4
- package/dist/commands/stats.js.map +1 -1
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +14 -26
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/trigger.d.ts.map +1 -1
- package/dist/commands/trigger.js +3 -8
- package/dist/commands/trigger.js.map +1 -1
- package/dist/commands/workflows.d.ts.map +1 -1
- package/dist/commands/workflows.js +5 -10
- package/dist/commands/workflows.js.map +1 -1
- package/dist/escalation-format.d.ts +4 -2
- package/dist/escalation-format.d.ts.map +1 -1
- package/dist/escalation-format.js +14 -8
- package/dist/escalation-format.js.map +1 -1
- package/dist/gh.d.ts.map +1 -1
- package/dist/gh.js +12 -28
- package/dist/gh.js.map +1 -1
- package/dist/issue-order.d.ts +2 -2
- package/dist/issue-order.d.ts.map +1 -1
- package/dist/issue-order.js +9 -7
- package/dist/issue-order.js.map +1 -1
- package/dist/pr-state.d.ts.map +1 -1
- package/dist/pr-state.js +5 -2
- package/dist/pr-state.js.map +1 -1
- package/dist/review-contract-data.d.ts +7 -0
- package/dist/review-contract-data.d.ts.map +1 -1
- package/dist/review-contract-data.js +9 -2
- package/dist/review-contract-data.js.map +1 -1
- package/dist/review-contract.d.ts +3 -1
- package/dist/review-contract.d.ts.map +1 -1
- package/dist/review-contract.js +5 -7
- package/dist/review-contract.js.map +1 -1
- package/dist/shipflow-contract-data.d.ts +52 -0
- package/dist/shipflow-contract-data.d.ts.map +1 -0
- package/dist/shipflow-contract-data.js +69 -0
- package/dist/shipflow-contract-data.js.map +1 -0
- package/package.json +1 -1
package/dist/commands/issue.js
CHANGED
|
@@ -8,7 +8,7 @@ import { resolveSignoffOwner } from "../config.js";
|
|
|
8
8
|
import { sortIssuesForPickup, isActionableForPickup, IN_PROGRESS_LABEL, NEEDS_HUMAN_LABEL } from "../issue-order.js";
|
|
9
9
|
import { validateEvidenceSelection } from "../evidence.js";
|
|
10
10
|
import { promptText } from "../prompts.js";
|
|
11
|
-
import { loadCtx, runAction } from "./helpers.js";
|
|
11
|
+
import { emit, loadCtx, resolveTarget, runAction, signalBestEffort } from "./helpers.js";
|
|
12
12
|
export function registerIssueCommand(program) {
|
|
13
13
|
const issue = program.command("issue").description("Issue actions");
|
|
14
14
|
issue
|
|
@@ -30,11 +30,7 @@ export function registerIssueCommand(program) {
|
|
|
30
30
|
const created = ghIssueCreate(repo, title, body, labels);
|
|
31
31
|
// Note: creating an issue does NOT claim it โ claims are exclusive
|
|
32
32
|
// work locks now; run `issue work <n>` to pick it up.
|
|
33
|
-
|
|
34
|
-
console.log(JSON.stringify({ number: created.number, url: created.url, labels }));
|
|
35
|
-
return;
|
|
36
|
-
}
|
|
37
|
-
console.log(created.url);
|
|
33
|
+
emit(opts, { number: created.number, url: created.url, labels }, () => console.log(created.url));
|
|
38
34
|
}));
|
|
39
35
|
issue
|
|
40
36
|
.command("work <number>")
|
|
@@ -45,8 +41,7 @@ export function registerIssueCommand(program) {
|
|
|
45
41
|
.option("--json", "Output JSON")
|
|
46
42
|
.action(runAction(async (numberStr, opts) => {
|
|
47
43
|
const ctx = await loadCtx(program);
|
|
48
|
-
const number =
|
|
49
|
-
const repo = opts.repo ?? ctx.project.repoFullName;
|
|
44
|
+
const { number, repo } = resolveTarget(ctx, numberStr, opts);
|
|
50
45
|
const agent = opts.agent ?? process.env.SHIPFLOW_AGENT ?? hostname();
|
|
51
46
|
// Take the exclusive claim FIRST โ if another agent holds the issue,
|
|
52
47
|
// skip it without doing any work.
|
|
@@ -105,12 +100,7 @@ export function registerIssueCommand(program) {
|
|
|
105
100
|
printIssueContext(issueData, triage, repo, ctx.project, opts.json);
|
|
106
101
|
return;
|
|
107
102
|
}
|
|
108
|
-
|
|
109
|
-
console.log(JSON.stringify({ issue: null, reason: "no_actionable_issues" }, null, 2));
|
|
110
|
-
}
|
|
111
|
-
else {
|
|
112
|
-
console.log("โ
No actionable issues โ every open issue is claimed or filtered out.");
|
|
113
|
-
}
|
|
103
|
+
emit(opts, { issue: null, reason: "no_actionable_issues" }, () => console.log("โ
No actionable issues โ every open issue is claimed or filtered out."), { pretty: true });
|
|
114
104
|
process.exit(4);
|
|
115
105
|
}));
|
|
116
106
|
issue
|
|
@@ -121,15 +111,10 @@ export function registerIssueCommand(program) {
|
|
|
121
111
|
.option("--json", "Output JSON")
|
|
122
112
|
.action(runAction(async (numberStr, opts) => {
|
|
123
113
|
const ctx = await loadCtx(program);
|
|
124
|
-
const number =
|
|
125
|
-
const repo = opts.repo ?? ctx.project.repoFullName;
|
|
114
|
+
const { number, repo } = resolveTarget(ctx, numberStr, opts);
|
|
126
115
|
const reason = opts.reason ?? "";
|
|
127
116
|
await ctx.client.signal(ctx.creds.org, ctx.project.projectId, "issues", number, "release-claim", { repo, reason });
|
|
128
|
-
|
|
129
|
-
console.log(JSON.stringify({ number, released: true, reason }));
|
|
130
|
-
return;
|
|
131
|
-
}
|
|
132
|
-
console.log(`Released #${number}.`);
|
|
117
|
+
emit(opts, { number, released: true, reason }, () => console.log(`Released #${number}.`));
|
|
133
118
|
}));
|
|
134
119
|
issue
|
|
135
120
|
.command("escalate <number>")
|
|
@@ -162,8 +147,7 @@ export function registerIssueCommand(program) {
|
|
|
162
147
|
}
|
|
163
148
|
}
|
|
164
149
|
const ctx = await loadCtx(program);
|
|
165
|
-
const number =
|
|
166
|
-
const repo = opts.repo ?? ctx.project.repoFullName;
|
|
150
|
+
const { number, repo } = resolveTarget(ctx, numberStr, opts);
|
|
167
151
|
// Normalize once so the comment body, console line, and JSON all agree
|
|
168
152
|
// (a raw "--owner @x" would otherwise print "owner @@x" / leak the @).
|
|
169
153
|
const owner = normalizeOwner(opts.owner ?? resolveSignoffOwner() ?? ghIssueAuthor(repo, number));
|
|
@@ -193,19 +177,9 @@ export function registerIssueCommand(program) {
|
|
|
193
177
|
ghIssueComment(repo, number, body);
|
|
194
178
|
let released = false;
|
|
195
179
|
if (opts.release) {
|
|
196
|
-
|
|
197
|
-
await ctx.client.signal(ctx.creds.org, ctx.project.projectId, "issues", number, "release-claim", { repo, reason: `escalated: ${reason}` });
|
|
198
|
-
released = true;
|
|
199
|
-
}
|
|
200
|
-
catch (e) {
|
|
201
|
-
console.warn(`Escalated, but the release signal failed: ${e.message}`);
|
|
202
|
-
}
|
|
180
|
+
released = await signalBestEffort(ctx, "issues", number, "release-claim", { repo, reason: `escalated: ${reason}` }, "Escalated, but the release signal failed");
|
|
203
181
|
}
|
|
204
|
-
|
|
205
|
-
console.log(JSON.stringify({ number, escalated: true, label: NEEDS_HUMAN_LABEL, released, reason, owner: owner ?? null, category: opts.category ?? null, updated }));
|
|
206
|
-
return;
|
|
207
|
-
}
|
|
208
|
-
console.log(`๐ง #${number} escalated${updated ? " (existing ๐ง comment updated)" : ""} โ labelled "${NEEDS_HUMAN_LABEL}"${owner ? `, owner @${owner}` : ""}${released ? " and claim released" : " (claim kept โ loop skips it this run)"}.`);
|
|
182
|
+
emit(opts, { number, escalated: true, label: NEEDS_HUMAN_LABEL, released, reason, owner: owner ?? null, category: opts.category ?? null, updated }, () => console.log(`๐ง #${number} escalated${updated ? " (existing ๐ง comment updated)" : ""} โ labelled "${NEEDS_HUMAN_LABEL}"${owner ? `, owner @${owner}` : ""}${released ? " and claim released" : " (claim kept โ loop skips it this run)"}.`));
|
|
209
183
|
}));
|
|
210
184
|
issue
|
|
211
185
|
.command("evidence <number>")
|
|
@@ -229,8 +203,7 @@ export function registerIssueCommand(program) {
|
|
|
229
203
|
process.exit(1);
|
|
230
204
|
}
|
|
231
205
|
const ctx = await loadCtx(program);
|
|
232
|
-
const number =
|
|
233
|
-
const repo = opts.repo ?? ctx.project.repoFullName;
|
|
206
|
+
const { number, repo } = resolveTarget(ctx, numberStr, opts);
|
|
234
207
|
const toImg = (p) => ({ filename: basename(p), data: new Uint8Array(readFileSync(p)) });
|
|
235
208
|
const res = await ctx.client.attachEvidence(ctx.creds.org, ctx.project.projectId, number, {
|
|
236
209
|
repo,
|
|
@@ -241,20 +214,18 @@ export function registerIssueCommand(program) {
|
|
|
241
214
|
after: after.map(toImg),
|
|
242
215
|
images: misc.map(toImg),
|
|
243
216
|
});
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
where.
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
for (const u of res.threadImageUrls ?? [])
|
|
257
|
-
console.log(` ${u}`);
|
|
217
|
+
emit(opts, res, () => {
|
|
218
|
+
const where = [];
|
|
219
|
+
if (res.threadNotified)
|
|
220
|
+
where.push("reporter thread");
|
|
221
|
+
if (res.prCommented)
|
|
222
|
+
where.push("PR comment");
|
|
223
|
+
if (res.githubCommented)
|
|
224
|
+
where.push("GitHub issue comment");
|
|
225
|
+
console.log(`๐งช Evidence delivered to: ${where.join(" + ") || "nowhere (check server logs)"}`);
|
|
226
|
+
for (const u of res.threadImageUrls ?? [])
|
|
227
|
+
console.log(` ${u}`);
|
|
228
|
+
}, { pretty: true });
|
|
258
229
|
}));
|
|
259
230
|
}
|
|
260
231
|
function printIssueContext(issueData, triage, repo, project, json) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"issue.js","sourceRoot":"","sources":["../../src/commands/issue.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"issue.js","sourceRoot":"","sources":["../../src/commands/issue.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"issues.d.ts","sourceRoot":"","sources":["../../src/commands/issues.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"issues.d.ts","sourceRoot":"","sources":["../../src/commands/issues.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOzC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA0D5D"}
|
package/dist/commands/issues.js
CHANGED
|
@@ -1,11 +1,8 @@
|
|
|
1
1
|
import { writeFileSync } from "node:fs";
|
|
2
2
|
import { resolve } from "node:path";
|
|
3
|
-
import { ShipFlowClient } from "../client.js";
|
|
4
|
-
import { resolveApiUrl, resolveAuthToken, loadCredentials, refreshOpts } from "../config.js";
|
|
5
|
-
import { resolveProject } from "../project.js";
|
|
6
3
|
import { ghIssueList, ghIssueListFiltered } from "../gh.js";
|
|
7
4
|
import { buildXlsx } from "../xlsx.js";
|
|
8
|
-
import { loadCtx, runAction } from "./helpers.js";
|
|
5
|
+
import { emit, loadCtx, runAction } from "./helpers.js";
|
|
9
6
|
const collect = (v, prev) => prev.concat([v]);
|
|
10
7
|
export function registerIssuesCommand(program) {
|
|
11
8
|
const issues = program.command("issues").description("Issue listing");
|
|
@@ -16,24 +13,15 @@ export function registerIssuesCommand(program) {
|
|
|
16
13
|
.option("--limit <n>", "Max results", "30")
|
|
17
14
|
.option("--json", "Output JSON")
|
|
18
15
|
.action(runAction(async (opts) => {
|
|
19
|
-
const
|
|
20
|
-
const creds = loadCredentials();
|
|
21
|
-
if (!auth || !creds) {
|
|
22
|
-
console.error("Not signed in. Run: renaiss-shipflow login");
|
|
23
|
-
process.exit(1);
|
|
24
|
-
}
|
|
25
|
-
const client = new ShipFlowClient({ baseUrl: resolveApiUrl(program.opts().apiUrl), jwt: auth.token, ...refreshOpts(creds) });
|
|
26
|
-
const project = await resolveProject(client, creds);
|
|
16
|
+
const { project } = await loadCtx(program);
|
|
27
17
|
const list = ghIssueList(project.repoFullName, opts.state, parseInt(opts.limit, 10));
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
console.log(` ${i.labels.map((l) => l.name).join(", ")}`);
|
|
36
|
-
}
|
|
18
|
+
emit(opts, { project, issues: list }, () => {
|
|
19
|
+
for (const i of list) {
|
|
20
|
+
console.log(`#${i.number} ${i.title}`);
|
|
21
|
+
if (i.labels.length)
|
|
22
|
+
console.log(` ${i.labels.map((l) => l.name).join(", ")}`);
|
|
23
|
+
}
|
|
24
|
+
}, { pretty: true });
|
|
37
25
|
}));
|
|
38
26
|
issues
|
|
39
27
|
.command("export")
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"issues.js","sourceRoot":"","sources":["../../src/commands/issues.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"issues.js","sourceRoot":"","sources":["../../src/commands/issues.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pr.d.ts","sourceRoot":"","sources":["../../src/commands/pr.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"pr.d.ts","sourceRoot":"","sources":["../../src/commands/pr.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA+BzC,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4WxD;AAoCD;;+CAE+C;AAC/C,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAIpG"}
|
package/dist/commands/pr.js
CHANGED
|
@@ -2,14 +2,17 @@ import { execSync } from "node:child_process";
|
|
|
2
2
|
import { readFileSync } from "node:fs";
|
|
3
3
|
import { resolveMergePolicy, resolveRequireCi, resolveStalePrHours, } from "../config.js";
|
|
4
4
|
import { hostname } from "node:os";
|
|
5
|
-
import { ghPRCreate, ghPRMerge, ghPRView, ghPRDiffText, ghCurrentLogin, ghEnsureLabel, ghIssueAddLabels, ghIssueRemoveLabel, ghIssueView, ghReviewThreads, ghResolveReviewThread, ghCreateReview } from "../gh.js";
|
|
5
|
+
import { ghPRCreate, ghPRMerge, ghPRView, ghPRDiffText, ghCurrentLogin, ghEnsureLabel, ghIssueAddLabels, ghIssueRemoveLabel, ghIssueView, ghReviewThreads, ghResolveReviewThread, ghCreateReview, labelColorFor } from "../gh.js";
|
|
6
6
|
import { buildReviewPacket, buildReviewPacketData } from "../packet.js";
|
|
7
7
|
import { diffAnchors, buildReviewPayload } from "../review-contract.js";
|
|
8
|
+
import { NEEDS_HUMAN_LABEL } from "../issue-order.js";
|
|
9
|
+
import { SHIPFLOW_CONTRACT } from "../shipflow-contract-data.js";
|
|
8
10
|
import { cleanupMergedLocalBranch, findSuspiciousEmails } from "../git-local.js";
|
|
9
11
|
import { shellQuote } from "../sh.js";
|
|
10
12
|
import { classifyPR, mergeDecision } from "../pr-state.js";
|
|
11
|
-
import { loadCtx, runAction } from "./helpers.js";
|
|
12
|
-
|
|
13
|
+
import { emit, loadCtx, resolveTarget, runAction, signalBestEffort } from "./helpers.js";
|
|
14
|
+
// Single-sourced from the shared ShipFlow contract (labels.names.shipflowApproved).
|
|
15
|
+
const APPROVED_LABEL = SHIPFLOW_CONTRACT.labels.names.shipflowApproved;
|
|
13
16
|
/** Count a PR's unresolved review threads, failing *closed* on a transient
|
|
14
17
|
* GraphQL blip: return `unavailable` so ready/automerge treat it as a blocker
|
|
15
18
|
* (never merge on unknown review state) rather than crashing the loop. */
|
|
@@ -60,23 +63,14 @@ export function registerPRCommand(program) {
|
|
|
60
63
|
const header = buildShipFlowHeader(ctx.project.projectName, issueNumber, issueUrl);
|
|
61
64
|
const body = `${header}\n\n${opts.body ?? ""}`;
|
|
62
65
|
const created = ghPRCreate({ repo: ctx.project.repoFullName, body, title: opts.title, base: opts.base, head: branch, draft: opts.draft });
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
}
|
|
72
|
-
catch (e) {
|
|
73
|
-
console.warn(`PR opened but ShipFlow signal failed: ${e.message}`);
|
|
74
|
-
}
|
|
75
|
-
if (opts.json) {
|
|
76
|
-
console.log(JSON.stringify(created));
|
|
77
|
-
return;
|
|
78
|
-
}
|
|
79
|
-
console.log(created.url);
|
|
66
|
+
await signalBestEffort(ctx, "prs", created.number, "opened", {
|
|
67
|
+
repo: ctx.project.repoFullName,
|
|
68
|
+
branch,
|
|
69
|
+
headSha: execSync("git rev-parse HEAD").toString().trim(),
|
|
70
|
+
issueRefs: issueNumber ? [issueNumber] : [],
|
|
71
|
+
previewUrl: opts.previewUrl ?? "",
|
|
72
|
+
}, "PR opened but ShipFlow signal failed");
|
|
73
|
+
emit(opts, created, () => console.log(created.url));
|
|
80
74
|
}));
|
|
81
75
|
pr
|
|
82
76
|
.command("merge <number>")
|
|
@@ -86,26 +80,15 @@ export function registerPRCommand(program) {
|
|
|
86
80
|
.option("--json", "Output JSON")
|
|
87
81
|
.action(runAction(async (numberStr, opts) => {
|
|
88
82
|
const ctx = await loadCtx(program);
|
|
89
|
-
const number =
|
|
90
|
-
const result = ghPRMerge(
|
|
83
|
+
const { number, repo } = resolveTarget(ctx, numberStr, opts);
|
|
84
|
+
const result = ghPRMerge(repo, number, opts.mode, !opts.keepBranch);
|
|
91
85
|
if (!opts.keepBranch)
|
|
92
86
|
cleanupMergedLocalBranch(result.headBranch);
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
});
|
|
99
|
-
}
|
|
100
|
-
catch (e) {
|
|
101
|
-
signalOk = false;
|
|
102
|
-
console.warn(`Merged but ShipFlow signal failed: ${e.message}`);
|
|
103
|
-
}
|
|
104
|
-
if (opts.json) {
|
|
105
|
-
console.log(JSON.stringify({ number, merged: true, mergedSha: result.mergedSha, mode: opts.mode, signalOk }));
|
|
106
|
-
return;
|
|
107
|
-
}
|
|
108
|
-
console.log(`merged: ${result.mergedSha}`);
|
|
87
|
+
const signalOk = await signalBestEffort(ctx, "prs", number, "merged", {
|
|
88
|
+
repo,
|
|
89
|
+
mergedSha: result.mergedSha,
|
|
90
|
+
}, "Merged but ShipFlow signal failed");
|
|
91
|
+
emit(opts, { number, merged: true, mergedSha: result.mergedSha, mode: opts.mode, signalOk }, () => console.log(`merged: ${result.mergedSha}`));
|
|
109
92
|
}));
|
|
110
93
|
pr
|
|
111
94
|
.command("ready <number>")
|
|
@@ -115,8 +98,7 @@ export function registerPRCommand(program) {
|
|
|
115
98
|
.option("--json", "Output JSON")
|
|
116
99
|
.action(runAction(async (numberStr, opts) => {
|
|
117
100
|
const ctx = await loadCtx(program);
|
|
118
|
-
const number =
|
|
119
|
-
const repo = opts.repo ?? ctx.project.repoFullName;
|
|
101
|
+
const { number, repo } = resolveTarget(ctx, numberStr, opts);
|
|
120
102
|
const policy = opts.policy ?? resolveMergePolicy();
|
|
121
103
|
const staleHours = resolveStalePrHours();
|
|
122
104
|
const me = ghCurrentLogin();
|
|
@@ -133,11 +115,7 @@ export function registerPRCommand(program) {
|
|
|
133
115
|
number, state: cl.state, ciState: cl.ciState, approved: cl.approved, unresolvedThreads,
|
|
134
116
|
ageHours: Math.round(cl.ageHours), policy, wouldMerge, blockers,
|
|
135
117
|
};
|
|
136
|
-
|
|
137
|
-
console.log(JSON.stringify(out, null, 2));
|
|
138
|
-
return;
|
|
139
|
-
}
|
|
140
|
-
console.log(`PR #${number}: ${cl.state} ยท ci=${cl.ciState} ยท approved=${cl.approved} ยท policy=${policy} โ ${wouldMerge ? "READY TO MERGE" : `not ready (${blockers.join("; ")})`}`);
|
|
118
|
+
emit(opts, out, () => console.log(`PR #${number}: ${cl.state} ยท ci=${cl.ciState} ยท approved=${cl.approved} ยท policy=${policy} โ ${wouldMerge ? "READY TO MERGE" : `not ready (${blockers.join("; ")})`}`), { pretty: true });
|
|
141
119
|
}));
|
|
142
120
|
pr
|
|
143
121
|
.command("automerge <number>")
|
|
@@ -148,8 +126,7 @@ export function registerPRCommand(program) {
|
|
|
148
126
|
.option("--json", "Output JSON")
|
|
149
127
|
.action(runAction(async (numberStr, opts) => {
|
|
150
128
|
const ctx = await loadCtx(program);
|
|
151
|
-
const number =
|
|
152
|
-
const repo = opts.repo ?? ctx.project.repoFullName;
|
|
129
|
+
const { number, repo } = resolveTarget(ctx, numberStr, opts);
|
|
153
130
|
const policy = opts.policy ?? resolveMergePolicy();
|
|
154
131
|
const staleHours = resolveStalePrHours();
|
|
155
132
|
const me = ghCurrentLogin();
|
|
@@ -162,36 +139,19 @@ export function registerPRCommand(program) {
|
|
|
162
139
|
const blockers = threads.unavailable ? ["review threads unavailable", ...decision.blockers] : decision.blockers;
|
|
163
140
|
const wouldMerge = decision.wouldMerge && !threads.unavailable;
|
|
164
141
|
if (!wouldMerge) {
|
|
165
|
-
|
|
166
|
-
console.log(JSON.stringify({ number, merged: false, policy, blockers }));
|
|
167
|
-
}
|
|
168
|
-
else {
|
|
169
|
-
console.log(`โธ๏ธ PR #${number} not auto-merged: ${blockers.join("; ")}`);
|
|
170
|
-
}
|
|
142
|
+
emit(opts, { number, merged: false, policy, blockers }, () => console.log(`โธ๏ธ PR #${number} not auto-merged: ${blockers.join("; ")}`));
|
|
171
143
|
process.exit(5);
|
|
172
144
|
}
|
|
173
145
|
const result = ghPRMerge(repo, number, opts.mode ?? "squash", true);
|
|
174
146
|
// The loop runs in a reusable worktree; drop the merged local branch so it
|
|
175
147
|
// doesn't accumulate stale branches across issues (remote is gone already).
|
|
176
148
|
cleanupMergedLocalBranch(result.headBranch);
|
|
177
|
-
|
|
178
|
-
await ctx.client.signal(ctx.creds.org, ctx.project.projectId, "prs", number, "merged", { repo, mergedSha: result.mergedSha });
|
|
179
|
-
}
|
|
180
|
-
catch (e) {
|
|
181
|
-
console.warn(`Merged but ShipFlow signal failed: ${e.message}`);
|
|
182
|
-
}
|
|
149
|
+
await signalBestEffort(ctx, "prs", number, "merged", { repo, mergedSha: result.mergedSha }, "Merged but ShipFlow signal failed");
|
|
183
150
|
const closed = (prView.closingIssuesReferences ?? []).map((i) => i.number);
|
|
184
151
|
for (const n of closed) {
|
|
185
|
-
|
|
186
|
-
await ctx.client.signal(ctx.creds.org, ctx.project.projectId, "issues", n, "release-claim", { repo, reason: `merged via PR #${number}` });
|
|
187
|
-
}
|
|
188
|
-
catch { /* best-effort */ }
|
|
152
|
+
await signalBestEffort(ctx, "issues", n, "release-claim", { repo, reason: `merged via PR #${number}` });
|
|
189
153
|
}
|
|
190
|
-
|
|
191
|
-
console.log(JSON.stringify({ number, merged: true, mergedSha: result.mergedSha, policy, closedIssues: closed }));
|
|
192
|
-
return;
|
|
193
|
-
}
|
|
194
|
-
console.log(`โ
Merged PR #${number} (${result.mergedSha}) under policy=${policy}${closed.length ? ` โ closes #${closed.join(", #")}` : ""}.`);
|
|
154
|
+
emit(opts, { number, merged: true, mergedSha: result.mergedSha, policy, closedIssues: closed }, () => console.log(`โ
Merged PR #${number} (${result.mergedSha}) under policy=${policy}${closed.length ? ` โ closes #${closed.join(", #")}` : ""}.`));
|
|
195
155
|
}));
|
|
196
156
|
pr
|
|
197
157
|
.command("sync <number>")
|
|
@@ -201,8 +161,7 @@ export function registerPRCommand(program) {
|
|
|
201
161
|
.option("--json", "Output JSON")
|
|
202
162
|
.action(runAction(async (numberStr, opts) => {
|
|
203
163
|
const ctx = await loadCtx(program);
|
|
204
|
-
const number =
|
|
205
|
-
const repo = opts.repo ?? ctx.project.repoFullName;
|
|
164
|
+
const { number, repo } = resolveTarget(ctx, numberStr, opts);
|
|
206
165
|
const prView = ghPRView(repo, number);
|
|
207
166
|
const base = prView.baseRefName;
|
|
208
167
|
const head = prView.headRefName;
|
|
@@ -237,12 +196,7 @@ export function registerPRCommand(program) {
|
|
|
237
196
|
conflicted = true;
|
|
238
197
|
}
|
|
239
198
|
if (conflicted) {
|
|
240
|
-
|
|
241
|
-
console.log(JSON.stringify({ number, rebased: false, conflict: true, base }));
|
|
242
|
-
}
|
|
243
|
-
else {
|
|
244
|
-
console.log(`๐ PR #${number}: rebase onto ${base} conflicts โ aborted. Resolve manually or escalate.`);
|
|
245
|
-
}
|
|
199
|
+
emit(opts, { number, rebased: false, conflict: true, base }, () => console.log(`๐ PR #${number}: rebase onto ${base} conflicts โ aborted. Resolve manually or escalate.`));
|
|
246
200
|
process.exit(6);
|
|
247
201
|
}
|
|
248
202
|
let pushed = false;
|
|
@@ -257,11 +211,7 @@ export function registerPRCommand(program) {
|
|
|
257
211
|
}
|
|
258
212
|
pushed = true;
|
|
259
213
|
}
|
|
260
|
-
|
|
261
|
-
console.log(JSON.stringify({ number, rebased: true, conflict: false, base, pushed }));
|
|
262
|
-
return;
|
|
263
|
-
}
|
|
264
|
-
console.log(`๐ PR #${number}: rebased "${head}" onto ${base}${pushed ? " and pushed" : ""}.`);
|
|
214
|
+
emit(opts, { number, rebased: true, conflict: false, base, pushed }, () => console.log(`๐ PR #${number}: rebased "${head}" onto ${base}${pushed ? " and pushed" : ""}.`));
|
|
265
215
|
}));
|
|
266
216
|
pr
|
|
267
217
|
.command("packet <number>")
|
|
@@ -270,8 +220,7 @@ export function registerPRCommand(program) {
|
|
|
270
220
|
.option("--json", "Emit the packet as a structured object instead of markdown")
|
|
271
221
|
.action(runAction(async (numberStr, opts) => {
|
|
272
222
|
const ctx = await loadCtx(program);
|
|
273
|
-
const number =
|
|
274
|
-
const repo = opts.repo ?? ctx.project.repoFullName;
|
|
223
|
+
const { number, repo } = resolveTarget(ctx, numberStr, opts);
|
|
275
224
|
const prView = ghPRView(repo, number);
|
|
276
225
|
let threads = [];
|
|
277
226
|
try {
|
|
@@ -328,8 +277,7 @@ export function registerPRCommand(program) {
|
|
|
328
277
|
.option("--json", "Output JSON")
|
|
329
278
|
.action(runAction(async (numberStr, opts) => {
|
|
330
279
|
const ctx = await loadCtx(program);
|
|
331
|
-
const number =
|
|
332
|
-
const repo = opts.repo ?? ctx.project.repoFullName;
|
|
280
|
+
const { number, repo } = resolveTarget(ctx, numberStr, opts);
|
|
333
281
|
// Only block on stdin when findings are actually piped (or "-" is
|
|
334
282
|
// explicit). In an interactive terminal with no --findings this is the
|
|
335
283
|
// approve flow (empty findings) โ reading stdin would hang forever.
|
|
@@ -352,11 +300,7 @@ export function registerPRCommand(program) {
|
|
|
352
300
|
ghCreateReview(repo, number, payload);
|
|
353
301
|
const inlineCount = payload.comments.length;
|
|
354
302
|
const foldedCount = findings.length - inlineCount;
|
|
355
|
-
|
|
356
|
-
console.log(JSON.stringify({ number, verdict, inline: inlineCount, folded: foldedCount }));
|
|
357
|
-
return;
|
|
358
|
-
}
|
|
359
|
-
console.log(`Posted ${verdict} review on #${number}: ${inlineCount} inline finding(s) on the diff${foldedCount ? `, ${foldedCount} folded into the body` : ""}.`);
|
|
303
|
+
emit(opts, { number, verdict, inline: inlineCount, folded: foldedCount }, () => console.log(`Posted ${verdict} review on #${number}: ${inlineCount} inline finding(s) on the diff${foldedCount ? `, ${foldedCount} folded into the body` : ""}.`));
|
|
360
304
|
}));
|
|
361
305
|
pr
|
|
362
306
|
.command("approve <number>")
|
|
@@ -367,34 +311,24 @@ export function registerPRCommand(program) {
|
|
|
367
311
|
.option("--json", "Output JSON")
|
|
368
312
|
.action(runAction(async (numberStr, opts) => {
|
|
369
313
|
const ctx = await loadCtx(program);
|
|
370
|
-
const number =
|
|
371
|
-
const repo = opts.repo ?? ctx.project.repoFullName;
|
|
314
|
+
const { number, repo } = resolveTarget(ctx, numberStr, opts);
|
|
372
315
|
// Gate: don't approve while external review threads (e.g. gemini-code-assist)
|
|
373
316
|
// are still open โ address + resolve them first.
|
|
374
317
|
const unresolved = ghReviewThreads(repo, number).filter((t) => !t.isResolved);
|
|
375
318
|
if (unresolved.length && !opts.force) {
|
|
376
319
|
const list = unresolved.map((t) => ` โข ${t.author} ${t.path}:${t.line ?? "?"} โ ${t.body.split("\n")[0].slice(0, 80)}`).join("\n");
|
|
377
|
-
|
|
378
|
-
console.log(JSON.stringify({ number, approved: false, unresolvedThreads: unresolved.length }));
|
|
379
|
-
}
|
|
380
|
-
else {
|
|
381
|
-
console.error(`โ Not approving PR #${number}: ${unresolved.length} unresolved review thread(s):\n${list}\nAddress + resolve them (pr resolve), then approve (or --force).`);
|
|
382
|
-
}
|
|
320
|
+
emit(opts, { number, approved: false, unresolvedThreads: unresolved.length }, () => console.error(`โ Not approving PR #${number}: ${unresolved.length} unresolved review thread(s):\n${list}\nAddress + resolve them (pr resolve), then approve (or --force).`));
|
|
383
321
|
process.exit(7);
|
|
384
322
|
}
|
|
385
|
-
ghEnsureLabel(repo, APPROVED_LABEL,
|
|
323
|
+
ghEnsureLabel(repo, APPROVED_LABEL, labelColorFor(APPROVED_LABEL), "Reviewed and approved by the ShipFlow loop reviewer");
|
|
386
324
|
ghIssueAddLabels(repo, number, [APPROVED_LABEL]);
|
|
387
|
-
ghIssueRemoveLabel(repo, number,
|
|
325
|
+
ghIssueRemoveLabel(repo, number, NEEDS_HUMAN_LABEL); // approval clears a prior escalation
|
|
388
326
|
if (opts.comment) {
|
|
389
327
|
// Posted verbatim โ the reviewer's verdict block already carries its own
|
|
390
328
|
// header; no extra prefix (keeps the PR comment short + non-redundant).
|
|
391
329
|
execSync(`gh pr comment ${number} --repo ${shellQuote(repo)} --body ${shellQuote(opts.comment)}`, { stdio: "ignore" });
|
|
392
330
|
}
|
|
393
|
-
|
|
394
|
-
console.log(JSON.stringify({ number, approved: true, label: APPROVED_LABEL }));
|
|
395
|
-
return;
|
|
396
|
-
}
|
|
397
|
-
console.log(`โ
PR #${number} approved โ labelled "${APPROVED_LABEL}" (automerge can proceed under an auto-* policy).`);
|
|
331
|
+
emit(opts, { number, approved: true, label: APPROVED_LABEL }, () => console.log(`โ
PR #${number} approved โ labelled "${APPROVED_LABEL}" (automerge can proceed under an auto-* policy).`));
|
|
398
332
|
}));
|
|
399
333
|
pr
|
|
400
334
|
.command("reviews <number>")
|
|
@@ -403,8 +337,7 @@ export function registerPRCommand(program) {
|
|
|
403
337
|
.option("--json", "Output JSON")
|
|
404
338
|
.action(runAction(async (numberStr, opts) => {
|
|
405
339
|
const ctx = await loadCtx(program);
|
|
406
|
-
const number =
|
|
407
|
-
const repo = opts.repo ?? ctx.project.repoFullName;
|
|
340
|
+
const { number, repo } = resolveTarget(ctx, numberStr, opts);
|
|
408
341
|
const me = ghCurrentLogin();
|
|
409
342
|
const threads = ghReviewThreads(repo, number);
|
|
410
343
|
const unresolved = threads.filter((t) => !t.isResolved);
|
|
@@ -417,17 +350,15 @@ export function registerPRCommand(program) {
|
|
|
417
350
|
reviewers: [...new Set(threads.map((t) => t.author).filter(Boolean))],
|
|
418
351
|
threads: unresolved.map((t) => ({ id: t.id, author: t.author, path: t.path, line: t.line, body: t.body })),
|
|
419
352
|
};
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
console.log(
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
for (const t of unresolved)
|
|
430
|
-
console.log(` โข ${t.author} ${t.path}:${t.line ?? "?"} โ ${t.body.split("\n")[0].slice(0, 90)}`);
|
|
353
|
+
emit(opts, out, () => {
|
|
354
|
+
if (!unresolved.length) {
|
|
355
|
+
console.log(`โ
PR #${number}: no unresolved review threads.`);
|
|
356
|
+
return;
|
|
357
|
+
}
|
|
358
|
+
console.log(`PR #${number}: ${unresolved.length} unresolved thread(s)${out.blocking ? " โ BLOCKS approval/merge" : ""}`);
|
|
359
|
+
for (const t of unresolved)
|
|
360
|
+
console.log(` โข ${t.author} ${t.path}:${t.line ?? "?"} โ ${t.body.split("\n")[0].slice(0, 90)}`);
|
|
361
|
+
}, { pretty: true });
|
|
431
362
|
}));
|
|
432
363
|
pr
|
|
433
364
|
.command("resolve <number>")
|
|
@@ -437,17 +368,12 @@ export function registerPRCommand(program) {
|
|
|
437
368
|
.option("--json", "Output JSON")
|
|
438
369
|
.action(runAction(async (numberStr, opts) => {
|
|
439
370
|
const ctx = await loadCtx(program);
|
|
440
|
-
const number =
|
|
441
|
-
const repo = opts.repo ?? ctx.project.repoFullName;
|
|
371
|
+
const { number, repo } = resolveTarget(ctx, numberStr, opts);
|
|
442
372
|
const unresolved = ghReviewThreads(repo, number).filter((t) => !t.isResolved);
|
|
443
373
|
const targets = opts.thread?.length ? unresolved.filter((t) => opts.thread.includes(t.id)) : unresolved;
|
|
444
374
|
for (const t of targets)
|
|
445
375
|
ghResolveReviewThread(t.id);
|
|
446
|
-
|
|
447
|
-
console.log(JSON.stringify({ number, resolved: targets.length }));
|
|
448
|
-
return;
|
|
449
|
-
}
|
|
450
|
-
console.log(`๐งต Resolved ${targets.length} review thread(s) on PR #${number}.`);
|
|
376
|
+
emit(opts, { number, resolved: targets.length }, () => console.log(`๐งต Resolved ${targets.length} review thread(s) on PR #${number}.`));
|
|
451
377
|
}));
|
|
452
378
|
}
|
|
453
379
|
/** Author emails on the branch's own commits (vs origin main/master), falling
|