@renaiss-shipflow/cli 0.16.0 → 0.16.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/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 +17 -28
- 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 +44 -121
- 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/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;AA4BzC,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"pr.d.ts","sourceRoot":"","sources":["../../src/commands/pr.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA4BzC,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
|
@@ -8,7 +8,7 @@ import { diffAnchors, buildReviewPayload } from "../review-contract.js";
|
|
|
8
8
|
import { cleanupMergedLocalBranch, findSuspiciousEmails } from "../git-local.js";
|
|
9
9
|
import { shellQuote } from "../sh.js";
|
|
10
10
|
import { classifyPR, mergeDecision } from "../pr-state.js";
|
|
11
|
-
import { loadCtx, runAction } from "./helpers.js";
|
|
11
|
+
import { emit, loadCtx, resolveTarget, runAction, signalBestEffort } from "./helpers.js";
|
|
12
12
|
const APPROVED_LABEL = "shipflow-approved";
|
|
13
13
|
/** Count a PR's unresolved review threads, failing *closed* on a transient
|
|
14
14
|
* GraphQL blip: return `unavailable` so ready/automerge treat it as a blocker
|
|
@@ -60,23 +60,14 @@ export function registerPRCommand(program) {
|
|
|
60
60
|
const header = buildShipFlowHeader(ctx.project.projectName, issueNumber, issueUrl);
|
|
61
61
|
const body = `${header}\n\n${opts.body ?? ""}`;
|
|
62
62
|
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);
|
|
63
|
+
await signalBestEffort(ctx, "prs", created.number, "opened", {
|
|
64
|
+
repo: ctx.project.repoFullName,
|
|
65
|
+
branch,
|
|
66
|
+
headSha: execSync("git rev-parse HEAD").toString().trim(),
|
|
67
|
+
issueRefs: issueNumber ? [issueNumber] : [],
|
|
68
|
+
previewUrl: opts.previewUrl ?? "",
|
|
69
|
+
}, "PR opened but ShipFlow signal failed");
|
|
70
|
+
emit(opts, created, () => console.log(created.url));
|
|
80
71
|
}));
|
|
81
72
|
pr
|
|
82
73
|
.command("merge <number>")
|
|
@@ -86,26 +77,15 @@ export function registerPRCommand(program) {
|
|
|
86
77
|
.option("--json", "Output JSON")
|
|
87
78
|
.action(runAction(async (numberStr, opts) => {
|
|
88
79
|
const ctx = await loadCtx(program);
|
|
89
|
-
const number =
|
|
90
|
-
const result = ghPRMerge(
|
|
80
|
+
const { number, repo } = resolveTarget(ctx, numberStr, opts);
|
|
81
|
+
const result = ghPRMerge(repo, number, opts.mode, !opts.keepBranch);
|
|
91
82
|
if (!opts.keepBranch)
|
|
92
83
|
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}`);
|
|
84
|
+
const signalOk = await signalBestEffort(ctx, "prs", number, "merged", {
|
|
85
|
+
repo,
|
|
86
|
+
mergedSha: result.mergedSha,
|
|
87
|
+
}, "Merged but ShipFlow signal failed");
|
|
88
|
+
emit(opts, { number, merged: true, mergedSha: result.mergedSha, mode: opts.mode, signalOk }, () => console.log(`merged: ${result.mergedSha}`));
|
|
109
89
|
}));
|
|
110
90
|
pr
|
|
111
91
|
.command("ready <number>")
|
|
@@ -115,8 +95,7 @@ export function registerPRCommand(program) {
|
|
|
115
95
|
.option("--json", "Output JSON")
|
|
116
96
|
.action(runAction(async (numberStr, opts) => {
|
|
117
97
|
const ctx = await loadCtx(program);
|
|
118
|
-
const number =
|
|
119
|
-
const repo = opts.repo ?? ctx.project.repoFullName;
|
|
98
|
+
const { number, repo } = resolveTarget(ctx, numberStr, opts);
|
|
120
99
|
const policy = opts.policy ?? resolveMergePolicy();
|
|
121
100
|
const staleHours = resolveStalePrHours();
|
|
122
101
|
const me = ghCurrentLogin();
|
|
@@ -133,11 +112,7 @@ export function registerPRCommand(program) {
|
|
|
133
112
|
number, state: cl.state, ciState: cl.ciState, approved: cl.approved, unresolvedThreads,
|
|
134
113
|
ageHours: Math.round(cl.ageHours), policy, wouldMerge, blockers,
|
|
135
114
|
};
|
|
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("; ")})`}`);
|
|
115
|
+
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
116
|
}));
|
|
142
117
|
pr
|
|
143
118
|
.command("automerge <number>")
|
|
@@ -148,8 +123,7 @@ export function registerPRCommand(program) {
|
|
|
148
123
|
.option("--json", "Output JSON")
|
|
149
124
|
.action(runAction(async (numberStr, opts) => {
|
|
150
125
|
const ctx = await loadCtx(program);
|
|
151
|
-
const number =
|
|
152
|
-
const repo = opts.repo ?? ctx.project.repoFullName;
|
|
126
|
+
const { number, repo } = resolveTarget(ctx, numberStr, opts);
|
|
153
127
|
const policy = opts.policy ?? resolveMergePolicy();
|
|
154
128
|
const staleHours = resolveStalePrHours();
|
|
155
129
|
const me = ghCurrentLogin();
|
|
@@ -162,36 +136,19 @@ export function registerPRCommand(program) {
|
|
|
162
136
|
const blockers = threads.unavailable ? ["review threads unavailable", ...decision.blockers] : decision.blockers;
|
|
163
137
|
const wouldMerge = decision.wouldMerge && !threads.unavailable;
|
|
164
138
|
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
|
-
}
|
|
139
|
+
emit(opts, { number, merged: false, policy, blockers }, () => console.log(`⏸️ PR #${number} not auto-merged: ${blockers.join("; ")}`));
|
|
171
140
|
process.exit(5);
|
|
172
141
|
}
|
|
173
142
|
const result = ghPRMerge(repo, number, opts.mode ?? "squash", true);
|
|
174
143
|
// The loop runs in a reusable worktree; drop the merged local branch so it
|
|
175
144
|
// doesn't accumulate stale branches across issues (remote is gone already).
|
|
176
145
|
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
|
-
}
|
|
146
|
+
await signalBestEffort(ctx, "prs", number, "merged", { repo, mergedSha: result.mergedSha }, "Merged but ShipFlow signal failed");
|
|
183
147
|
const closed = (prView.closingIssuesReferences ?? []).map((i) => i.number);
|
|
184
148
|
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 */ }
|
|
149
|
+
await signalBestEffort(ctx, "issues", n, "release-claim", { repo, reason: `merged via PR #${number}` });
|
|
189
150
|
}
|
|
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(", #")}` : ""}.`);
|
|
151
|
+
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
152
|
}));
|
|
196
153
|
pr
|
|
197
154
|
.command("sync <number>")
|
|
@@ -201,8 +158,7 @@ export function registerPRCommand(program) {
|
|
|
201
158
|
.option("--json", "Output JSON")
|
|
202
159
|
.action(runAction(async (numberStr, opts) => {
|
|
203
160
|
const ctx = await loadCtx(program);
|
|
204
|
-
const number =
|
|
205
|
-
const repo = opts.repo ?? ctx.project.repoFullName;
|
|
161
|
+
const { number, repo } = resolveTarget(ctx, numberStr, opts);
|
|
206
162
|
const prView = ghPRView(repo, number);
|
|
207
163
|
const base = prView.baseRefName;
|
|
208
164
|
const head = prView.headRefName;
|
|
@@ -237,12 +193,7 @@ export function registerPRCommand(program) {
|
|
|
237
193
|
conflicted = true;
|
|
238
194
|
}
|
|
239
195
|
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
|
-
}
|
|
196
|
+
emit(opts, { number, rebased: false, conflict: true, base }, () => console.log(`🔀 PR #${number}: rebase onto ${base} conflicts — aborted. Resolve manually or escalate.`));
|
|
246
197
|
process.exit(6);
|
|
247
198
|
}
|
|
248
199
|
let pushed = false;
|
|
@@ -257,11 +208,7 @@ export function registerPRCommand(program) {
|
|
|
257
208
|
}
|
|
258
209
|
pushed = true;
|
|
259
210
|
}
|
|
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" : ""}.`);
|
|
211
|
+
emit(opts, { number, rebased: true, conflict: false, base, pushed }, () => console.log(`🔀 PR #${number}: rebased "${head}" onto ${base}${pushed ? " and pushed" : ""}.`));
|
|
265
212
|
}));
|
|
266
213
|
pr
|
|
267
214
|
.command("packet <number>")
|
|
@@ -270,8 +217,7 @@ export function registerPRCommand(program) {
|
|
|
270
217
|
.option("--json", "Emit the packet as a structured object instead of markdown")
|
|
271
218
|
.action(runAction(async (numberStr, opts) => {
|
|
272
219
|
const ctx = await loadCtx(program);
|
|
273
|
-
const number =
|
|
274
|
-
const repo = opts.repo ?? ctx.project.repoFullName;
|
|
220
|
+
const { number, repo } = resolveTarget(ctx, numberStr, opts);
|
|
275
221
|
const prView = ghPRView(repo, number);
|
|
276
222
|
let threads = [];
|
|
277
223
|
try {
|
|
@@ -328,8 +274,7 @@ export function registerPRCommand(program) {
|
|
|
328
274
|
.option("--json", "Output JSON")
|
|
329
275
|
.action(runAction(async (numberStr, opts) => {
|
|
330
276
|
const ctx = await loadCtx(program);
|
|
331
|
-
const number =
|
|
332
|
-
const repo = opts.repo ?? ctx.project.repoFullName;
|
|
277
|
+
const { number, repo } = resolveTarget(ctx, numberStr, opts);
|
|
333
278
|
// Only block on stdin when findings are actually piped (or "-" is
|
|
334
279
|
// explicit). In an interactive terminal with no --findings this is the
|
|
335
280
|
// approve flow (empty findings) — reading stdin would hang forever.
|
|
@@ -352,11 +297,7 @@ export function registerPRCommand(program) {
|
|
|
352
297
|
ghCreateReview(repo, number, payload);
|
|
353
298
|
const inlineCount = payload.comments.length;
|
|
354
299
|
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` : ""}.`);
|
|
300
|
+
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
301
|
}));
|
|
361
302
|
pr
|
|
362
303
|
.command("approve <number>")
|
|
@@ -367,19 +308,13 @@ export function registerPRCommand(program) {
|
|
|
367
308
|
.option("--json", "Output JSON")
|
|
368
309
|
.action(runAction(async (numberStr, opts) => {
|
|
369
310
|
const ctx = await loadCtx(program);
|
|
370
|
-
const number =
|
|
371
|
-
const repo = opts.repo ?? ctx.project.repoFullName;
|
|
311
|
+
const { number, repo } = resolveTarget(ctx, numberStr, opts);
|
|
372
312
|
// Gate: don't approve while external review threads (e.g. gemini-code-assist)
|
|
373
313
|
// are still open — address + resolve them first.
|
|
374
314
|
const unresolved = ghReviewThreads(repo, number).filter((t) => !t.isResolved);
|
|
375
315
|
if (unresolved.length && !opts.force) {
|
|
376
316
|
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
|
-
}
|
|
317
|
+
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
318
|
process.exit(7);
|
|
384
319
|
}
|
|
385
320
|
ghEnsureLabel(repo, APPROVED_LABEL, "0e8a16", "Reviewed and approved by the ShipFlow loop reviewer");
|
|
@@ -390,11 +325,7 @@ export function registerPRCommand(program) {
|
|
|
390
325
|
// header; no extra prefix (keeps the PR comment short + non-redundant).
|
|
391
326
|
execSync(`gh pr comment ${number} --repo ${shellQuote(repo)} --body ${shellQuote(opts.comment)}`, { stdio: "ignore" });
|
|
392
327
|
}
|
|
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).`);
|
|
328
|
+
emit(opts, { number, approved: true, label: APPROVED_LABEL }, () => console.log(`✅ PR #${number} approved — labelled "${APPROVED_LABEL}" (automerge can proceed under an auto-* policy).`));
|
|
398
329
|
}));
|
|
399
330
|
pr
|
|
400
331
|
.command("reviews <number>")
|
|
@@ -403,8 +334,7 @@ export function registerPRCommand(program) {
|
|
|
403
334
|
.option("--json", "Output JSON")
|
|
404
335
|
.action(runAction(async (numberStr, opts) => {
|
|
405
336
|
const ctx = await loadCtx(program);
|
|
406
|
-
const number =
|
|
407
|
-
const repo = opts.repo ?? ctx.project.repoFullName;
|
|
337
|
+
const { number, repo } = resolveTarget(ctx, numberStr, opts);
|
|
408
338
|
const me = ghCurrentLogin();
|
|
409
339
|
const threads = ghReviewThreads(repo, number);
|
|
410
340
|
const unresolved = threads.filter((t) => !t.isResolved);
|
|
@@ -417,17 +347,15 @@ export function registerPRCommand(program) {
|
|
|
417
347
|
reviewers: [...new Set(threads.map((t) => t.author).filter(Boolean))],
|
|
418
348
|
threads: unresolved.map((t) => ({ id: t.id, author: t.author, path: t.path, line: t.line, body: t.body })),
|
|
419
349
|
};
|
|
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)}`);
|
|
350
|
+
emit(opts, out, () => {
|
|
351
|
+
if (!unresolved.length) {
|
|
352
|
+
console.log(`✅ PR #${number}: no unresolved review threads.`);
|
|
353
|
+
return;
|
|
354
|
+
}
|
|
355
|
+
console.log(`PR #${number}: ${unresolved.length} unresolved thread(s)${out.blocking ? " — BLOCKS approval/merge" : ""}`);
|
|
356
|
+
for (const t of unresolved)
|
|
357
|
+
console.log(` • ${t.author} ${t.path}:${t.line ?? "?"} — ${t.body.split("\n")[0].slice(0, 90)}`);
|
|
358
|
+
}, { pretty: true });
|
|
431
359
|
}));
|
|
432
360
|
pr
|
|
433
361
|
.command("resolve <number>")
|
|
@@ -437,17 +365,12 @@ export function registerPRCommand(program) {
|
|
|
437
365
|
.option("--json", "Output JSON")
|
|
438
366
|
.action(runAction(async (numberStr, opts) => {
|
|
439
367
|
const ctx = await loadCtx(program);
|
|
440
|
-
const number =
|
|
441
|
-
const repo = opts.repo ?? ctx.project.repoFullName;
|
|
368
|
+
const { number, repo } = resolveTarget(ctx, numberStr, opts);
|
|
442
369
|
const unresolved = ghReviewThreads(repo, number).filter((t) => !t.isResolved);
|
|
443
370
|
const targets = opts.thread?.length ? unresolved.filter((t) => opts.thread.includes(t.id)) : unresolved;
|
|
444
371
|
for (const t of targets)
|
|
445
372
|
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}.`);
|
|
373
|
+
emit(opts, { number, resolved: targets.length }, () => console.log(`🧵 Resolved ${targets.length} review thread(s) on PR #${number}.`));
|
|
451
374
|
}));
|
|
452
375
|
}
|
|
453
376
|
/** Author emails on the branch's own commits (vs origin main/master), falling
|