@idea1/cli 1.7.1 → 1.7.3
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/README.md +77 -16
- package/dist/cli/parser.d.ts.map +1 -1
- package/dist/cli/parser.js +3 -2
- package/dist/cli/parser.js.map +1 -1
- package/dist/commands/approve-pr.js +1 -1
- package/dist/commands/approve-pr.js.map +1 -1
- package/dist/commands/help.d.ts.map +1 -1
- package/dist/commands/help.js +35 -4
- package/dist/commands/help.js.map +1 -1
- package/dist/commands/index.d.ts +2 -1
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +3 -1
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/integrate.d.ts +13 -0
- package/dist/commands/integrate.d.ts.map +1 -0
- package/dist/commands/integrate.js +128 -0
- package/dist/commands/integrate.js.map +1 -0
- package/dist/commands/ready-for-approval.js +1 -1
- package/dist/commands/ready-for-approval.js.map +1 -1
- package/dist/commands/release.d.ts +7 -0
- package/dist/commands/release.d.ts.map +1 -1
- package/dist/commands/release.js +32 -188
- package/dist/commands/release.js.map +1 -1
- package/dist/lib/claude-options.d.ts +10 -0
- package/dist/lib/claude-options.d.ts.map +1 -1
- package/dist/lib/claude-options.js +36 -1
- package/dist/lib/claude-options.js.map +1 -1
- package/dist/lib/shell.d.ts +8 -0
- package/dist/lib/shell.d.ts.map +1 -1
- package/dist/lib/shell.js +6 -3
- package/dist/lib/shell.js.map +1 -1
- package/dist/services/claude.d.ts +2 -2
- package/dist/services/claude.d.ts.map +1 -1
- package/dist/services/claude.js +2 -3
- package/dist/services/claude.js.map +1 -1
- package/dist/services/github.d.ts +69 -28
- package/dist/services/github.d.ts.map +1 -1
- package/dist/services/github.js +148 -74
- package/dist/services/github.js.map +1 -1
- package/dist/services/release-flow.d.ts +83 -0
- package/dist/services/release-flow.d.ts.map +1 -0
- package/dist/services/release-flow.js +338 -0
- package/dist/services/release-flow.js.map +1 -0
- package/dist/services/setup.js +2 -2
- package/dist/services/workflow-handlers/agent-implementation.d.ts.map +1 -1
- package/dist/services/workflow-handlers/agent-implementation.js +5 -4
- package/dist/services/workflow-handlers/agent-implementation.js.map +1 -1
- package/dist/services/workflow-handlers/approve-pr.d.ts +6 -3
- package/dist/services/workflow-handlers/approve-pr.d.ts.map +1 -1
- package/dist/services/workflow-handlers/approve-pr.js +24 -64
- package/dist/services/workflow-handlers/approve-pr.js.map +1 -1
- package/dist/services/workflow-handlers/ready-for-approval.d.ts +5 -3
- package/dist/services/workflow-handlers/ready-for-approval.d.ts.map +1 -1
- package/dist/services/workflow-handlers/ready-for-approval.js +10 -11
- package/dist/services/workflow-handlers/ready-for-approval.js.map +1 -1
- package/dist/services/worktree.d.ts +2 -0
- package/dist/services/worktree.d.ts.map +1 -1
- package/dist/services/worktree.js +4 -4
- package/dist/services/worktree.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +3 -2
|
@@ -21,12 +21,14 @@ export declare function createPrIfNeeded(branchName: string, baseBranchName: str
|
|
|
21
21
|
export declare function getPrInfo(branchName: string): Promise<PrInfo | null>;
|
|
22
22
|
/**
|
|
23
23
|
* Request review from one or more users on a PR.
|
|
24
|
-
*
|
|
24
|
+
*
|
|
25
|
+
* Requested reviewers are optional: the approver of record is the assignee, not a reviewer
|
|
26
|
+
* (change-management-policy.md clause 2). No-op when the list is empty.
|
|
25
27
|
*/
|
|
26
28
|
export declare function assignReviewers(branchName: string, reviewers: string[]): Promise<void>;
|
|
27
29
|
/**
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
+
* Set the PR's assignee - the person who approves the change by merging it with
|
|
31
|
+
* `idea1 approve-pr`.
|
|
30
32
|
*/
|
|
31
33
|
export declare function assignAssignee(branchName: string, assignee: string): Promise<void>;
|
|
32
34
|
/**
|
|
@@ -34,10 +36,6 @@ export declare function assignAssignee(branchName: string, assignee: string): Pr
|
|
|
34
36
|
* These repo collaborators are also the valid set of reviewers.
|
|
35
37
|
*/
|
|
36
38
|
export declare function listAssignableUsers(): Promise<string[]>;
|
|
37
|
-
/**
|
|
38
|
-
* Approve a PR
|
|
39
|
-
*/
|
|
40
|
-
export declare function approvePr(branchName: string, comment?: string): Promise<boolean>;
|
|
41
39
|
export interface MergeResult {
|
|
42
40
|
success: boolean;
|
|
43
41
|
error?: string;
|
|
@@ -54,10 +52,6 @@ export declare function mergePrWithAdminOverride(branchName: string): Promise<Me
|
|
|
54
52
|
* Delete a remote branch
|
|
55
53
|
*/
|
|
56
54
|
export declare function deleteRemoteBranch(branchName: string): Promise<boolean>;
|
|
57
|
-
/**
|
|
58
|
-
* Check if a PR is approved
|
|
59
|
-
*/
|
|
60
|
-
export declare function isPrApproved(branchName: string): Promise<boolean>;
|
|
61
55
|
/**
|
|
62
56
|
* Resolve the head branch and base branch from a GitHub PR URL.
|
|
63
57
|
* Accepts any URL of the form https://github.com/<owner>/<repo>/pull/<number>.
|
|
@@ -67,28 +61,75 @@ export declare function getBranchFromPrUrl(prUrl: string): Promise<{
|
|
|
67
61
|
baseBranch: string;
|
|
68
62
|
} | null>;
|
|
69
63
|
/**
|
|
70
|
-
*
|
|
64
|
+
* Wait for a PR's checks to finish, returning whether they all passed.
|
|
65
|
+
*
|
|
66
|
+
* The required CI/CD checks are the automated gate no individual may wave through
|
|
67
|
+
* (change-management-policy.md clause 3), so a merge has to wait for them rather than outrun them.
|
|
68
|
+
* `gh pr checks --watch` blocks until every check reaches a conclusion and exits non-zero when any
|
|
69
|
+
* failed (exit code 8 means checks were still pending when it stopped).
|
|
70
|
+
*
|
|
71
|
+
* Two ways of "not finished" are failures here, never successes: a watch that hits the timeout is
|
|
72
|
+
* killed by a signal and has no exit code, and a PR whose checks never appear at all - GitHub can
|
|
73
|
+
* take a moment to report the first check on a just-opened PR, so that case is polled for a short
|
|
74
|
+
* grace period before it is called a failure.
|
|
75
|
+
*/
|
|
76
|
+
export declare function waitForPrChecks(branchName: string, timeoutMinutes?: number): Promise<{
|
|
77
|
+
passed: boolean;
|
|
78
|
+
summary: string;
|
|
79
|
+
}>;
|
|
80
|
+
/**
|
|
81
|
+
* Post a comment on a PR. This is how an admin override is recorded on the PR itself, so the
|
|
82
|
+
* exception lives with the change rather than only in a terminal session. Throws when the comment
|
|
83
|
+
* cannot be posted: an override with no record is not permitted, so the caller must not merge.
|
|
84
|
+
*/
|
|
85
|
+
export declare function addPrComment(branchName: string, body: string): Promise<void>;
|
|
86
|
+
/**
|
|
87
|
+
* The GitHub login `gh` is authenticated as - the person running the command.
|
|
88
|
+
*/
|
|
89
|
+
export declare function getCurrentLogin(): Promise<string>;
|
|
90
|
+
export interface CreatePrOptions {
|
|
91
|
+
sourceBranch: string;
|
|
92
|
+
targetBranch: string;
|
|
93
|
+
title: string;
|
|
94
|
+
body: string;
|
|
95
|
+
/** The PR's approver of record: the person who will merge it. */
|
|
96
|
+
assignee: string;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Create a PR with its body and assignee set at creation, returning its URL.
|
|
71
100
|
*/
|
|
72
|
-
export declare function
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
101
|
+
export declare function createPr(options: CreatePrOptions): Promise<string>;
|
|
102
|
+
/**
|
|
103
|
+
* Read who a PR's assignee is. The assignee is its approver, so `idea1 approve-pr` reports it
|
|
104
|
+
* before merging.
|
|
105
|
+
*/
|
|
106
|
+
export declare function getPrAssignees(branchName: string): Promise<string[]>;
|
|
107
|
+
/**
|
|
108
|
+
* What one merged PR contributes to an approval chain: who wrote it, and who approved it by
|
|
109
|
+
* merging it.
|
|
110
|
+
*/
|
|
111
|
+
export interface MergedPrRecord {
|
|
112
|
+
number: number;
|
|
113
|
+
title: string;
|
|
114
|
+
author: string;
|
|
115
|
+
mergedAt: string;
|
|
116
|
+
mergedBy: string;
|
|
79
117
|
}
|
|
80
118
|
/**
|
|
81
|
-
*
|
|
119
|
+
* Every PR merged into a branch, most recent first, with its merge record. The approval chain of
|
|
120
|
+
* a release or integration is assembled from this list: each PR's approval is its merge, performed
|
|
121
|
+
* by its assignee, so a PR that lists them is self-contained evidence of who approved what.
|
|
82
122
|
*/
|
|
83
|
-
export declare function
|
|
84
|
-
export interface
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
123
|
+
export declare function listMergedPrsInto(baseBranch: string): Promise<MergedPrRecord[]>;
|
|
124
|
+
export interface CommitPullRequest {
|
|
125
|
+
number: number;
|
|
126
|
+
baseBranch: string;
|
|
127
|
+
merged: boolean;
|
|
88
128
|
}
|
|
89
129
|
/**
|
|
90
|
-
*
|
|
91
|
-
*
|
|
130
|
+
* The PRs GitHub associates with a commit. This is how a commit on a branch is traced back to
|
|
131
|
+
* the PR that brought it there regardless of merge strategy - a squash or rebase merge leaves no
|
|
132
|
+
* "Merge pull request" subject to parse, but GitHub still knows which PR the commit came from.
|
|
92
133
|
*/
|
|
93
|
-
export declare function
|
|
134
|
+
export declare function getPullRequestsForCommit(sha: string): Promise<CommitPullRequest[]>;
|
|
94
135
|
//# sourceMappingURL=github.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../../src/services/github.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAIrD;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAyBtG;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAchF;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,MAAM,EACtB,cAAc,EAAE,MAAM,GAAG,IAAI,EAC7B,KAAK,UAAQ,GACZ,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAuCxB;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAmB1E;AAED
|
|
1
|
+
{"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../../src/services/github.ts"],"names":[],"mappings":"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"}
|
package/dist/services/github.js
CHANGED
|
@@ -110,7 +110,9 @@ export async function getPrInfo(branchName) {
|
|
|
110
110
|
}
|
|
111
111
|
/**
|
|
112
112
|
* Request review from one or more users on a PR.
|
|
113
|
-
*
|
|
113
|
+
*
|
|
114
|
+
* Requested reviewers are optional: the approver of record is the assignee, not a reviewer
|
|
115
|
+
* (change-management-policy.md clause 2). No-op when the list is empty.
|
|
114
116
|
*/
|
|
115
117
|
export async function assignReviewers(branchName, reviewers) {
|
|
116
118
|
if (reviewers.length === 0) {
|
|
@@ -127,13 +129,10 @@ export async function assignReviewers(branchName, reviewers) {
|
|
|
127
129
|
logger.success(`Review requested from ${list}`);
|
|
128
130
|
}
|
|
129
131
|
/**
|
|
130
|
-
*
|
|
131
|
-
*
|
|
132
|
+
* Set the PR's assignee - the person who approves the change by merging it with
|
|
133
|
+
* `idea1 approve-pr`.
|
|
132
134
|
*/
|
|
133
135
|
export async function assignAssignee(branchName, assignee) {
|
|
134
|
-
if (!assignee) {
|
|
135
|
-
return;
|
|
136
|
-
}
|
|
137
136
|
await ensureGitHubCli();
|
|
138
137
|
logger.step(`Assigning ${assignee} to PR for branch ${branchName}...`);
|
|
139
138
|
await execOrThrow('gh', [
|
|
@@ -160,24 +159,6 @@ export async function listAssignableUsers() {
|
|
|
160
159
|
.map(login => login.trim())
|
|
161
160
|
.filter(login => login.length > 0);
|
|
162
161
|
}
|
|
163
|
-
/**
|
|
164
|
-
* Approve a PR
|
|
165
|
-
*/
|
|
166
|
-
export async function approvePr(branchName, comment) {
|
|
167
|
-
await ensureGitHubCli();
|
|
168
|
-
const approvalComment = comment ?? 'Approved via idea1 CLI workflow';
|
|
169
|
-
logger.step(`Approving PR for branch ${branchName}...`);
|
|
170
|
-
const result = await exec('gh', [
|
|
171
|
-
'pr', 'review', branchName,
|
|
172
|
-
'--approve',
|
|
173
|
-
'--body', approvalComment
|
|
174
|
-
]);
|
|
175
|
-
if (result.exitCode === 0) {
|
|
176
|
-
logger.success('PR approved successfully');
|
|
177
|
-
return true;
|
|
178
|
-
}
|
|
179
|
-
return false;
|
|
180
|
-
}
|
|
181
162
|
/**
|
|
182
163
|
* Merge a PR
|
|
183
164
|
*/
|
|
@@ -229,21 +210,6 @@ export async function deleteRemoteBranch(branchName) {
|
|
|
229
210
|
logger.dim(`Note: Remote branch ${branchName} may already be deleted`);
|
|
230
211
|
return false;
|
|
231
212
|
}
|
|
232
|
-
/**
|
|
233
|
-
* Check if a PR is approved
|
|
234
|
-
*/
|
|
235
|
-
export async function isPrApproved(branchName) {
|
|
236
|
-
await ensureGitHubCli();
|
|
237
|
-
const result = await exec('gh', [
|
|
238
|
-
'pr', 'view', branchName,
|
|
239
|
-
'--json', 'reviewDecision',
|
|
240
|
-
'-q', '.reviewDecision'
|
|
241
|
-
]);
|
|
242
|
-
if (result.exitCode === 0 && result.stdout.trim() === 'APPROVED') {
|
|
243
|
-
return true;
|
|
244
|
-
}
|
|
245
|
-
return false;
|
|
246
|
-
}
|
|
247
213
|
/**
|
|
248
214
|
* Resolve the head branch and base branch from a GitHub PR URL.
|
|
249
215
|
* Accepts any URL of the form https://github.com/<owner>/<repo>/pull/<number>.
|
|
@@ -265,59 +231,167 @@ export async function getBranchFromPrUrl(prUrl) {
|
|
|
265
231
|
}
|
|
266
232
|
return null;
|
|
267
233
|
}
|
|
234
|
+
/** How long a freshly opened PR is given for GitHub to report its first check. */
|
|
235
|
+
const CHECKS_APPEAR_GRACE_MS = 3 * 60 * 1000;
|
|
236
|
+
const CHECKS_APPEAR_POLL_MS = 15 * 1000;
|
|
237
|
+
function sleep(ms) {
|
|
238
|
+
return new Promise(resolve => setTimeout(resolve, ms));
|
|
239
|
+
}
|
|
240
|
+
function noChecksReported(result) {
|
|
241
|
+
return /no checks reported/i.test(`${result.stdout}\n${result.stderr}`);
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Wait for a PR's checks to finish, returning whether they all passed.
|
|
245
|
+
*
|
|
246
|
+
* The required CI/CD checks are the automated gate no individual may wave through
|
|
247
|
+
* (change-management-policy.md clause 3), so a merge has to wait for them rather than outrun them.
|
|
248
|
+
* `gh pr checks --watch` blocks until every check reaches a conclusion and exits non-zero when any
|
|
249
|
+
* failed (exit code 8 means checks were still pending when it stopped).
|
|
250
|
+
*
|
|
251
|
+
* Two ways of "not finished" are failures here, never successes: a watch that hits the timeout is
|
|
252
|
+
* killed by a signal and has no exit code, and a PR whose checks never appear at all - GitHub can
|
|
253
|
+
* take a moment to report the first check on a just-opened PR, so that case is polled for a short
|
|
254
|
+
* grace period before it is called a failure.
|
|
255
|
+
*/
|
|
256
|
+
export async function waitForPrChecks(branchName, timeoutMinutes = 60) {
|
|
257
|
+
await ensureGitHubCli();
|
|
258
|
+
logger.step(`Waiting for required checks on the PR for ${branchName} (timeout ${timeoutMinutes}m)...`);
|
|
259
|
+
const deadline = Date.now() + timeoutMinutes * 60 * 1000;
|
|
260
|
+
const graceDeadline = Date.now() + CHECKS_APPEAR_GRACE_MS;
|
|
261
|
+
while (noChecksReported(await exec('gh', ['pr', 'checks', branchName]))) {
|
|
262
|
+
if (Date.now() >= graceDeadline) {
|
|
263
|
+
logger.warning('No checks were reported on the PR');
|
|
264
|
+
return {
|
|
265
|
+
passed: false,
|
|
266
|
+
summary: `No checks were reported on the PR for ${branchName} within ${CHECKS_APPEAR_GRACE_MS / 60000} minutes of waiting.`
|
|
267
|
+
};
|
|
268
|
+
}
|
|
269
|
+
logger.dim('No checks reported yet - waiting for the suite to start...');
|
|
270
|
+
await sleep(CHECKS_APPEAR_POLL_MS);
|
|
271
|
+
}
|
|
272
|
+
const watch = await exec('gh', [
|
|
273
|
+
'pr', 'checks', branchName,
|
|
274
|
+
'--watch',
|
|
275
|
+
'--interval', '30',
|
|
276
|
+
'--fail-fast'
|
|
277
|
+
], { timeout: Math.max(deadline - Date.now(), 1) });
|
|
278
|
+
const summary = await exec('gh', ['pr', 'checks', branchName]);
|
|
279
|
+
const summaryText = summary.stdout.trim() || watch.stdout.trim();
|
|
280
|
+
if (watch.timedOut) {
|
|
281
|
+
logger.warning(`Checks did not finish within ${timeoutMinutes} minutes`);
|
|
282
|
+
return {
|
|
283
|
+
passed: false,
|
|
284
|
+
summary: `Timed out after ${timeoutMinutes} minutes with checks still running.\n${summaryText}`
|
|
285
|
+
};
|
|
286
|
+
}
|
|
287
|
+
if (watch.exitCode === 0) {
|
|
288
|
+
logger.success('All checks passed');
|
|
289
|
+
return { passed: true, summary: summaryText };
|
|
290
|
+
}
|
|
291
|
+
logger.warning(`Checks did not pass (gh exit code ${watch.exitCode})`);
|
|
292
|
+
return { passed: false, summary: summaryText };
|
|
293
|
+
}
|
|
294
|
+
/**
|
|
295
|
+
* Post a comment on a PR. This is how an admin override is recorded on the PR itself, so the
|
|
296
|
+
* exception lives with the change rather than only in a terminal session. Throws when the comment
|
|
297
|
+
* cannot be posted: an override with no record is not permitted, so the caller must not merge.
|
|
298
|
+
*/
|
|
299
|
+
export async function addPrComment(branchName, body) {
|
|
300
|
+
await ensureGitHubCli();
|
|
301
|
+
const result = await exec('gh', ['pr', 'comment', branchName, '--body', body]);
|
|
302
|
+
if (result.exitCode !== 0) {
|
|
303
|
+
throw new Error(`Could not record the comment on the PR for ${branchName}: ${result.stderr}`);
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
/**
|
|
307
|
+
* The GitHub login `gh` is authenticated as - the person running the command.
|
|
308
|
+
*/
|
|
309
|
+
export async function getCurrentLogin() {
|
|
310
|
+
await ensureGitHubCli();
|
|
311
|
+
const login = (await execOrThrow('gh', ['api', 'user', '--jq', '.login'])).trim();
|
|
312
|
+
if (!login) {
|
|
313
|
+
throw new Error('Could not determine the current GitHub login (gh api user returned nothing)');
|
|
314
|
+
}
|
|
315
|
+
return login;
|
|
316
|
+
}
|
|
268
317
|
/**
|
|
269
|
-
*
|
|
318
|
+
* Create a PR with its body and assignee set at creation, returning its URL.
|
|
270
319
|
*/
|
|
271
|
-
export async function
|
|
320
|
+
export async function createPr(options) {
|
|
272
321
|
await ensureGitHubCli();
|
|
273
322
|
const result = await exec('gh', [
|
|
274
|
-
'
|
|
275
|
-
'
|
|
323
|
+
'pr', 'create',
|
|
324
|
+
'--base', options.targetBranch,
|
|
325
|
+
'--head', options.sourceBranch,
|
|
326
|
+
'--title', options.title,
|
|
327
|
+
'--body', options.body,
|
|
328
|
+
'--assignee', options.assignee
|
|
276
329
|
]);
|
|
277
|
-
if (result.exitCode
|
|
278
|
-
|
|
330
|
+
if (result.exitCode !== 0) {
|
|
331
|
+
throw new Error(`Failed to create PR: ${result.stderr}`);
|
|
279
332
|
}
|
|
280
|
-
return
|
|
333
|
+
return result.stdout.trim();
|
|
281
334
|
}
|
|
282
335
|
/**
|
|
283
|
-
*
|
|
336
|
+
* Read who a PR's assignee is. The assignee is its approver, so `idea1 approve-pr` reports it
|
|
337
|
+
* before merging.
|
|
284
338
|
*/
|
|
285
|
-
export async function
|
|
339
|
+
export async function getPrAssignees(branchName) {
|
|
286
340
|
await ensureGitHubCli();
|
|
287
341
|
const result = await exec('gh', [
|
|
288
342
|
'pr', 'view', branchName,
|
|
289
|
-
'--json', '
|
|
290
|
-
'-q', '
|
|
343
|
+
'--json', 'assignees',
|
|
344
|
+
'-q', '[.assignees[].login] | join(",")'
|
|
291
345
|
]);
|
|
292
|
-
if (result.exitCode
|
|
293
|
-
|
|
294
|
-
return JSON.parse(result.stdout.trim());
|
|
295
|
-
}
|
|
296
|
-
catch {
|
|
297
|
-
return null;
|
|
298
|
-
}
|
|
346
|
+
if (result.exitCode !== 0) {
|
|
347
|
+
return [];
|
|
299
348
|
}
|
|
300
|
-
return
|
|
349
|
+
return result.stdout
|
|
350
|
+
.trim()
|
|
351
|
+
.split(',')
|
|
352
|
+
.map(login => login.trim())
|
|
353
|
+
.filter(login => login.length > 0);
|
|
301
354
|
}
|
|
302
355
|
/**
|
|
303
|
-
*
|
|
304
|
-
*
|
|
356
|
+
* Every PR merged into a branch, most recent first, with its merge record. The approval chain of
|
|
357
|
+
* a release or integration is assembled from this list: each PR's approval is its merge, performed
|
|
358
|
+
* by its assignee, so a PR that lists them is self-contained evidence of who approved what.
|
|
305
359
|
*/
|
|
306
|
-
export async function
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
360
|
+
export async function listMergedPrsInto(baseBranch) {
|
|
361
|
+
await ensureGitHubCli();
|
|
362
|
+
const result = await exec('gh', [
|
|
363
|
+
'pr', 'list',
|
|
364
|
+
'--base', baseBranch,
|
|
365
|
+
'--state', 'merged',
|
|
366
|
+
'--limit', '500',
|
|
367
|
+
'--json', 'number,title,author,mergedAt,mergedBy'
|
|
368
|
+
]);
|
|
369
|
+
if (result.exitCode !== 0) {
|
|
370
|
+
throw new Error(`Could not list merged PRs into ${baseBranch}: ${result.stderr}`);
|
|
310
371
|
}
|
|
311
|
-
const
|
|
312
|
-
|
|
313
|
-
|
|
372
|
+
const prs = JSON.parse(result.stdout);
|
|
373
|
+
return prs.map(pr => ({
|
|
374
|
+
number: pr.number,
|
|
375
|
+
title: pr.title,
|
|
376
|
+
author: pr.author?.login ?? 'unknown',
|
|
377
|
+
mergedAt: pr.mergedAt ?? '',
|
|
378
|
+
mergedBy: pr.mergedBy?.login ?? 'unknown'
|
|
379
|
+
}));
|
|
380
|
+
}
|
|
381
|
+
/**
|
|
382
|
+
* The PRs GitHub associates with a commit. This is how a commit on a branch is traced back to
|
|
383
|
+
* the PR that brought it there regardless of merge strategy - a squash or rebase merge leaves no
|
|
384
|
+
* "Merge pull request" subject to parse, but GitHub still knows which PR the commit came from.
|
|
385
|
+
*/
|
|
386
|
+
export async function getPullRequestsForCommit(sha) {
|
|
387
|
+
await ensureGitHubCli();
|
|
388
|
+
const result = await exec('gh', [
|
|
389
|
+
'api', `repos/{owner}/{repo}/commits/${sha}/pulls`,
|
|
390
|
+
'--jq', '[.[] | { number: .number, baseBranch: .base.ref, merged: (.merged_at != null) }]'
|
|
391
|
+
]);
|
|
392
|
+
if (result.exitCode !== 0) {
|
|
393
|
+
throw new Error(`Could not read the pull requests for commit ${sha}: ${result.stderr}`);
|
|
314
394
|
}
|
|
315
|
-
|
|
316
|
-
const hasAlreadyApproved = reviewInfo.reviews.some(review => review.author === currentUser && review.state === 'APPROVED');
|
|
317
|
-
return {
|
|
318
|
-
isRequestedReviewer,
|
|
319
|
-
hasAlreadyApproved,
|
|
320
|
-
canApprove: isRequestedReviewer && !hasAlreadyApproved
|
|
321
|
-
};
|
|
395
|
+
return JSON.parse(result.stdout);
|
|
322
396
|
}
|
|
323
397
|
//# sourceMappingURL=github.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"github.js","sourceRoot":"","sources":["../../src/services/github.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"github.js","sourceRoot":"","sources":["../../src/services/github.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import type { CommandOption } from '../types/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* The gated-merge sequence shared by `idea1 release` (release branch -> main) and
|
|
4
|
+
* `idea1 integrate` (integration branch -> release branch). Both open a PR whose body is the
|
|
5
|
+
* approval chain of the changes it carries, both assign it to its approver, and both merge it only
|
|
6
|
+
* once the required CI/CD checks have passed - with the one sanctioned admin override
|
|
7
|
+
* (change-management-policy.md clause 3) recorded on the PR before any merge happens.
|
|
8
|
+
*/
|
|
9
|
+
/** Which command is running the sequence; shapes the PR body and the override record. */
|
|
10
|
+
export interface GatedPrKind {
|
|
11
|
+
/** The command as recorded on the PR, e.g. `idea1 release`. */
|
|
12
|
+
commandName: string;
|
|
13
|
+
/** Noun for the PR, e.g. `Release` / `Integration`. */
|
|
14
|
+
label: string;
|
|
15
|
+
}
|
|
16
|
+
export declare const RELEASE_KIND: GatedPrKind;
|
|
17
|
+
export declare const INTEGRATION_KIND: GatedPrKind;
|
|
18
|
+
export type PrMode = 'create' | 'merge';
|
|
19
|
+
/**
|
|
20
|
+
* The `--pr-mode` option both commands share. `create` is the default: the PR is opened and the
|
|
21
|
+
* approver merges it in GitHub once the required checks are green - that merge is the approval of
|
|
22
|
+
* record, exactly as in `merge` mode, where the CLI waits for the checks and merges here.
|
|
23
|
+
*/
|
|
24
|
+
export declare const PR_MODE_OPTION: CommandOption;
|
|
25
|
+
/** The first line of the comment that records an admin override; the evidence script keys on it. */
|
|
26
|
+
export declare const OVERRIDE_COMMENT_MARKER = "**Change-management exception: merged with admin override.**";
|
|
27
|
+
/**
|
|
28
|
+
* The local checkout must be the source branch, clean, fully pushed and level with origin, so the
|
|
29
|
+
* PR carries exactly what the person running the command is looking at.
|
|
30
|
+
*/
|
|
31
|
+
export declare function validateSourceBranch(sourceBranch: string): Promise<void>;
|
|
32
|
+
/**
|
|
33
|
+
* The PR body, written as the approval record for everything the PR carries.
|
|
34
|
+
*
|
|
35
|
+
* SOC2 change management asks who approved a change and when. Each change on the source branch
|
|
36
|
+
* was already approved by its assignee, who merged its PR into that branch. Listing those merges
|
|
37
|
+
* here makes this PR self-contained evidence: the whole chain is readable from the one PR an
|
|
38
|
+
* auditor lands on. Commits are attributed to PRs through GitHub's own association, so squash and
|
|
39
|
+
* rebase merges are covered, and a commit with no PR is shown rather than silently dropped.
|
|
40
|
+
*/
|
|
41
|
+
export declare function buildApprovalChainBody(sourceBranch: string, targetBranch: string, kind: GatedPrKind): Promise<string>;
|
|
42
|
+
export interface CreateGatedPrOptions {
|
|
43
|
+
sourceBranch: string;
|
|
44
|
+
targetBranch: string;
|
|
45
|
+
title: string;
|
|
46
|
+
/** The approver of record - the person who will merge the PR. */
|
|
47
|
+
assignee: string;
|
|
48
|
+
kind: GatedPrKind;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Open the PR with its approval-chain body and its approver as assignee. Returns the PR URL.
|
|
52
|
+
*/
|
|
53
|
+
export declare function createGatedPr(options: CreateGatedPrOptions): Promise<string>;
|
|
54
|
+
/**
|
|
55
|
+
* The PR's assignee is its approver of record, and GitHub records whoever merges as `merged_by`.
|
|
56
|
+
* The two must be the same person for the record to name the right approver: no assignee means
|
|
57
|
+
* no approver, and a different merger is an exception the evidence report calls out - so it
|
|
58
|
+
* takes an explicit, eyes-open confirmation.
|
|
59
|
+
*/
|
|
60
|
+
export declare function confirmApproverIdentity(branchName: string): Promise<void>;
|
|
61
|
+
/**
|
|
62
|
+
* Merge the PR once the required checks pass. Checks that fail, never start or never finish stop
|
|
63
|
+
* the merge. The one sanctioned admin override remains: it needs an explicit confirmation, a
|
|
64
|
+
* stated reason, and the exception must be recorded as a comment on the PR *before* the merge -
|
|
65
|
+
* if the comment cannot be posted, nothing is merged.
|
|
66
|
+
*/
|
|
67
|
+
export declare function mergeWithCheckGate(branchName: string, kind: GatedPrKind): Promise<void>;
|
|
68
|
+
export interface RunPrModeOptions {
|
|
69
|
+
mode: PrMode;
|
|
70
|
+
sourceBranch: string;
|
|
71
|
+
targetBranch: string;
|
|
72
|
+
prUrl: string;
|
|
73
|
+
kind: GatedPrKind;
|
|
74
|
+
/** Open the Actions page after the merge - the merge to main triggers the production deploy. */
|
|
75
|
+
openActionsAfterMerge: boolean;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Finish the sequence in the chosen mode. Either way the merge is the approval of record: in
|
|
79
|
+
* `create` mode the approver performs it in GitHub once the checks are green; in `merge` mode the
|
|
80
|
+
* CLI waits for the checks and performs it here, as the approver.
|
|
81
|
+
*/
|
|
82
|
+
export declare function runPrMode(options: RunPrModeOptions): Promise<void>;
|
|
83
|
+
//# sourceMappingURL=release-flow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"release-flow.d.ts","sourceRoot":"","sources":["../../src/services/release-flow.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAOvD;;;;;;GAMG;AAEH,yFAAyF;AACzF,MAAM,WAAW,WAAW;IAC1B,+DAA+D;IAC/D,WAAW,EAAE,MAAM,CAAC;IACpB,uDAAuD;IACvD,KAAK,EAAE,MAAM,CAAC;CACf;AAED,eAAO,MAAM,YAAY,EAAE,WAAgE,CAAC;AAC5F,eAAO,MAAM,gBAAgB,EAAE,WAAsE,CAAC;AAEtG,MAAM,MAAM,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;AAExC;;;;GAIG;AACH,eAAO,MAAM,cAAc,EAAE,aAU5B,CAAC;AAEF,oGAAoG;AACpG,eAAO,MAAM,uBAAuB,iEAAiE,CAAC;AAEtG;;;GAGG;AACH,wBAAsB,oBAAoB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA+C9E;AAwCD;;;;;;;;GAQG;AACH,wBAAsB,sBAAsB,CAC1C,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,WAAW,GAChB,OAAO,CAAC,MAAM,CAAC,CAyFjB;AAED,MAAM,WAAW,oBAAoB;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,iEAAiE;IACjE,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,WAAW,CAAC;CACnB;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAC,CAgBlF;AAED;;;;;GAKG;AACH,wBAAsB,uBAAuB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA8B/E;AAsBD;;;;;GAKG;AACH,wBAAsB,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAoC7F;AA+BD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,WAAW,CAAC;IAClB,gGAAgG;IAChG,qBAAqB,EAAE,OAAO,CAAC;CAChC;AAED;;;;GAIG;AACH,wBAAsB,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAuCxE"}
|