chief-clancy 0.5.7 → 0.5.8
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/bundle/clancy-once.js +53 -53
- package/dist/scripts/once/board-ops.d.ts +11 -0
- package/dist/scripts/once/board-ops.d.ts.map +1 -0
- package/dist/scripts/once/board-ops.js +81 -0
- package/dist/scripts/once/board-ops.js.map +1 -0
- package/dist/scripts/once/deliver.d.ts +13 -0
- package/dist/scripts/once/deliver.d.ts.map +1 -0
- package/dist/scripts/once/deliver.js +134 -0
- package/dist/scripts/once/deliver.js.map +1 -0
- package/dist/scripts/once/fetch-ticket.d.ts +4 -0
- package/dist/scripts/once/fetch-ticket.d.ts.map +1 -0
- package/dist/scripts/once/fetch-ticket.js +59 -0
- package/dist/scripts/once/fetch-ticket.js.map +1 -0
- package/dist/scripts/once/git-token.d.ts +13 -0
- package/dist/scripts/once/git-token.d.ts.map +1 -0
- package/dist/scripts/once/git-token.js +30 -0
- package/dist/scripts/once/git-token.js.map +1 -0
- package/dist/scripts/once/once.d.ts.map +1 -1
- package/dist/scripts/once/once.js +6 -535
- package/dist/scripts/once/once.js.map +1 -1
- package/dist/scripts/once/pr-creation.d.ts +11 -0
- package/dist/scripts/once/pr-creation.d.ts.map +1 -0
- package/dist/scripts/once/pr-creation.js +50 -0
- package/dist/scripts/once/pr-creation.js.map +1 -0
- package/dist/scripts/once/rework.d.ts +32 -0
- package/dist/scripts/once/rework.d.ts.map +1 -0
- package/dist/scripts/once/rework.js +208 -0
- package/dist/scripts/once/rework.js.map +1 -0
- package/dist/scripts/once/types.d.ts +13 -0
- package/dist/scripts/once/types.d.ts.map +1 -0
- package/dist/scripts/once/types.js +2 -0
- package/dist/scripts/once/types.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pr-creation.d.ts","sourceRoot":"","sources":["../../../src/scripts/once/pr-creation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2CAA2C,CAAC;AAQ7E,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAKrE;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,UAAU,EAClB,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,CAyDvC;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,UAAU,EAClB,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,GACnB,MAAM,GAAG,SAAS,CAiBpB"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { createPullRequest as createBitbucketPr, createServerPullRequest as createBitbucketServerPr, } from '../../scripts/shared/pull-request/bitbucket/bitbucket.js';
|
|
2
|
+
import { createPullRequest as createGitHubPr } from '../../scripts/shared/pull-request/github/github.js';
|
|
3
|
+
import { createMergeRequest as createGitLabMr } from '../../scripts/shared/pull-request/gitlab/gitlab.js';
|
|
4
|
+
import { buildApiBaseUrl } from '../../scripts/shared/remote/remote.js';
|
|
5
|
+
import { sharedEnv } from './board-ops.js';
|
|
6
|
+
import { resolveGitToken } from './git-token.js';
|
|
7
|
+
/**
|
|
8
|
+
* Attempt to create a PR/MR on the detected remote platform.
|
|
9
|
+
*/
|
|
10
|
+
export async function attemptPrCreation(config, remote, ticketBranch, targetBranch, title, body) {
|
|
11
|
+
const creds = resolveGitToken(config, remote);
|
|
12
|
+
if (!creds)
|
|
13
|
+
return undefined;
|
|
14
|
+
const apiBase = buildApiBaseUrl(remote, sharedEnv(config).CLANCY_GIT_API_URL);
|
|
15
|
+
if (!apiBase)
|
|
16
|
+
return undefined;
|
|
17
|
+
switch (remote.host) {
|
|
18
|
+
case 'github':
|
|
19
|
+
return createGitHubPr(creds.token, `${remote.owner}/${remote.repo}`, ticketBranch, targetBranch, title, body, apiBase);
|
|
20
|
+
case 'gitlab':
|
|
21
|
+
return createGitLabMr(creds.token, apiBase, remote.projectPath, ticketBranch, targetBranch, title, body);
|
|
22
|
+
case 'bitbucket':
|
|
23
|
+
return createBitbucketPr(creds.username, creds.token, remote.workspace, remote.repoSlug, ticketBranch, targetBranch, title, body);
|
|
24
|
+
case 'bitbucket-server':
|
|
25
|
+
return createBitbucketServerPr(creds.token, apiBase, remote.projectKey, remote.repoSlug, ticketBranch, targetBranch, title, body);
|
|
26
|
+
default:
|
|
27
|
+
return undefined;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Build a manual PR/MR URL for the user to click.
|
|
32
|
+
*/
|
|
33
|
+
export function buildManualPrUrl(remote, ticketBranch, targetBranch) {
|
|
34
|
+
const encodedTicket = encodeURIComponent(ticketBranch);
|
|
35
|
+
const encodedTarget = encodeURIComponent(targetBranch);
|
|
36
|
+
if (remote.host === 'github') {
|
|
37
|
+
return `https://${remote.hostname}/${remote.owner}/${remote.repo}/compare/${encodedTarget}...${encodedTicket}`;
|
|
38
|
+
}
|
|
39
|
+
if (remote.host === 'gitlab') {
|
|
40
|
+
return `https://${remote.hostname}/${remote.projectPath}/-/merge_requests/new?merge_request[source_branch]=${encodedTicket}&merge_request[target_branch]=${encodedTarget}`;
|
|
41
|
+
}
|
|
42
|
+
if (remote.host === 'bitbucket') {
|
|
43
|
+
return `https://${remote.hostname}/${remote.workspace}/${remote.repoSlug}/pull-requests/new?source=${encodedTicket}&dest=${encodedTarget}`;
|
|
44
|
+
}
|
|
45
|
+
if (remote.host === 'bitbucket-server') {
|
|
46
|
+
return `https://${remote.hostname}/projects/${remote.projectKey}/repos/${remote.repoSlug}/pull-requests?create&sourceBranch=refs/heads/${encodedTicket}&targetBranch=refs/heads/${encodedTarget}`;
|
|
47
|
+
}
|
|
48
|
+
return undefined;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=pr-creation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pr-creation.js","sourceRoot":"","sources":["../../../src/scripts/once/pr-creation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { BoardConfig } from '../../scripts/shared/env-schema/env-schema.js';
|
|
2
|
+
import type { FetchedTicket } from './types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Check open PRs for review feedback requesting changes.
|
|
5
|
+
*
|
|
6
|
+
* Scans progress.txt for tickets with status PR_CREATED, then checks
|
|
7
|
+
* the corresponding PR's review state on the detected remote platform.
|
|
8
|
+
* If a reviewer has requested changes, returns the ticket and feedback.
|
|
9
|
+
*
|
|
10
|
+
* This is best-effort — errors are swallowed so the orchestrator
|
|
11
|
+
* can fall through to fresh ticket fetch.
|
|
12
|
+
*/
|
|
13
|
+
export declare function fetchReworkFromPrReview(config: BoardConfig): Promise<{
|
|
14
|
+
ticket: FetchedTicket;
|
|
15
|
+
feedback: string[];
|
|
16
|
+
prNumber: number;
|
|
17
|
+
discussionIds?: string[];
|
|
18
|
+
reviewers: string[];
|
|
19
|
+
} | undefined>;
|
|
20
|
+
/**
|
|
21
|
+
* Build a rework comment to post on the PR after pushing fixes.
|
|
22
|
+
*
|
|
23
|
+
* Prefixed with `[clancy]` (not `Rework:`) so it does NOT trigger
|
|
24
|
+
* rework detection on the next cycle.
|
|
25
|
+
*/
|
|
26
|
+
export declare function buildReworkComment(feedback: string[]): string;
|
|
27
|
+
/**
|
|
28
|
+
* Perform post-rework actions: comment on PR, re-request review (GitHub),
|
|
29
|
+
* resolve threads (GitLab). All best-effort — failures warn but don't block.
|
|
30
|
+
*/
|
|
31
|
+
export declare function postReworkActions(config: BoardConfig, prNumber: number, feedback: string[], discussionIds?: string[], reviewers?: string[]): Promise<void>;
|
|
32
|
+
//# sourceMappingURL=rework.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rework.d.ts","sourceRoot":"","sources":["../../../src/scripts/once/rework.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2CAA2C,CAAC;AA8B7E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAIhD;;;;;;;;;GASG;AACH,wBAAsB,uBAAuB,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CACvE;IACE,MAAM,EAAE,aAAa,CAAC;IACtB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB,GACD,SAAS,CACZ,CA8KA;AAID;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,CAW7D;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,WAAW,EACnB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAAE,EAClB,aAAa,CAAC,EAAE,MAAM,EAAE,EACxB,SAAS,CAAC,EAAE,MAAM,EAAE,GACnB,OAAO,CAAC,IAAI,CAAC,CAiHf"}
|
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
import { resolveUsername } from '../../scripts/board/github/github.js';
|
|
2
|
+
import { computeTicketBranch } from '../../scripts/shared/branch/branch.js';
|
|
3
|
+
import { findEntriesWithStatus } from '../../scripts/shared/progress/progress.js';
|
|
4
|
+
import { checkPrReviewState as checkBitbucketPrReviewState, checkServerPrReviewState as checkBitbucketServerPrReviewState, fetchPrReviewComments as fetchBitbucketPrReviewComments, fetchServerPrReviewComments as fetchBitbucketServerPrReviewComments, postCloudPrComment, postServerPrComment, } from '../../scripts/shared/pull-request/bitbucket/bitbucket.js';
|
|
5
|
+
import { checkPrReviewState as checkGitHubPrReviewState, fetchPrReviewComments as fetchGitHubPrReviewComments, postPrComment as postGitHubPrComment, requestReview as requestGitHubReview, } from '../../scripts/shared/pull-request/github/github.js';
|
|
6
|
+
import { checkMrReviewState as checkGitLabMrReviewState, fetchMrReviewComments as fetchGitLabMrReviewComments, postMrNote, resolveDiscussions, } from '../../scripts/shared/pull-request/gitlab/gitlab.js';
|
|
7
|
+
import { buildApiBaseUrl, detectRemote, } from '../../scripts/shared/remote/remote.js';
|
|
8
|
+
import { dim } from '../../utils/ansi/ansi.js';
|
|
9
|
+
import { sharedEnv } from './board-ops.js';
|
|
10
|
+
import { resolveGitToken } from './git-token.js';
|
|
11
|
+
// ─── PR-based rework detection ────────────────────────────────────────────────
|
|
12
|
+
/**
|
|
13
|
+
* Check open PRs for review feedback requesting changes.
|
|
14
|
+
*
|
|
15
|
+
* Scans progress.txt for tickets with status PR_CREATED, then checks
|
|
16
|
+
* the corresponding PR's review state on the detected remote platform.
|
|
17
|
+
* If a reviewer has requested changes, returns the ticket and feedback.
|
|
18
|
+
*
|
|
19
|
+
* This is best-effort — errors are swallowed so the orchestrator
|
|
20
|
+
* can fall through to fresh ticket fetch.
|
|
21
|
+
*/
|
|
22
|
+
export async function fetchReworkFromPrReview(config) {
|
|
23
|
+
const prCreated = findEntriesWithStatus(process.cwd(), 'PR_CREATED');
|
|
24
|
+
const reworked = findEntriesWithStatus(process.cwd(), 'REWORK');
|
|
25
|
+
const pushed = findEntriesWithStatus(process.cwd(), 'PUSHED');
|
|
26
|
+
const pushFailed = findEntriesWithStatus(process.cwd(), 'PUSH_FAILED');
|
|
27
|
+
const candidates = [...prCreated, ...reworked, ...pushed, ...pushFailed];
|
|
28
|
+
if (candidates.length === 0)
|
|
29
|
+
return undefined;
|
|
30
|
+
const platformOverride = sharedEnv(config).CLANCY_GIT_PLATFORM;
|
|
31
|
+
const remote = detectRemote(platformOverride);
|
|
32
|
+
if (remote.host === 'none' ||
|
|
33
|
+
remote.host === 'unknown' ||
|
|
34
|
+
remote.host === 'azure') {
|
|
35
|
+
return undefined;
|
|
36
|
+
}
|
|
37
|
+
const creds = resolveGitToken(config, remote);
|
|
38
|
+
if (!creds)
|
|
39
|
+
return undefined;
|
|
40
|
+
const apiBase = buildApiBaseUrl(remote, sharedEnv(config).CLANCY_GIT_API_URL);
|
|
41
|
+
if (!apiBase)
|
|
42
|
+
return undefined;
|
|
43
|
+
// Resolve GitHub username for author filtering (GitHub only)
|
|
44
|
+
let ghUsername;
|
|
45
|
+
if (remote.host === 'github') {
|
|
46
|
+
try {
|
|
47
|
+
ghUsername = await resolveUsername(creds.token, apiBase);
|
|
48
|
+
}
|
|
49
|
+
catch {
|
|
50
|
+
// Best-effort — skip author filtering if username resolution fails
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
// Limit to first 5 candidates to avoid rate limits
|
|
54
|
+
const toCheck = candidates.slice(0, 5);
|
|
55
|
+
for (const entry of toCheck) {
|
|
56
|
+
const branch = computeTicketBranch(config.provider, entry.key);
|
|
57
|
+
// Convert progress timestamp (YYYY-MM-DD HH:MM) to ISO 8601 for API filtering.
|
|
58
|
+
// Only comments created AFTER this timestamp should trigger rework,
|
|
59
|
+
// preventing stale inline comments from causing infinite rework loops.
|
|
60
|
+
// Parse UTC timestamp (YYYY-MM-DD HH:MM) to ISO 8601.
|
|
61
|
+
// Falls back to undefined if timestamp is invalid (skips filtering).
|
|
62
|
+
let since;
|
|
63
|
+
if (entry.timestamp) {
|
|
64
|
+
const date = new Date(entry.timestamp.replace(' ', 'T') + 'Z');
|
|
65
|
+
since = Number.isNaN(date.getTime()) ? undefined : date.toISOString();
|
|
66
|
+
}
|
|
67
|
+
let reviewState;
|
|
68
|
+
switch (remote.host) {
|
|
69
|
+
case 'github':
|
|
70
|
+
reviewState = await checkGitHubPrReviewState(creds.token, `${remote.owner}/${remote.repo}`, branch, remote.owner, apiBase, since, ghUsername);
|
|
71
|
+
break;
|
|
72
|
+
case 'gitlab':
|
|
73
|
+
reviewState = await checkGitLabMrReviewState(creds.token, apiBase, remote.projectPath, branch, since);
|
|
74
|
+
break;
|
|
75
|
+
case 'bitbucket':
|
|
76
|
+
reviewState = await checkBitbucketPrReviewState(creds.username, creds.token, remote.workspace, remote.repoSlug, branch, since);
|
|
77
|
+
break;
|
|
78
|
+
case 'bitbucket-server':
|
|
79
|
+
reviewState = await checkBitbucketServerPrReviewState(creds.token, apiBase, remote.projectKey, remote.repoSlug, branch, since);
|
|
80
|
+
break;
|
|
81
|
+
}
|
|
82
|
+
if (reviewState?.changesRequested) {
|
|
83
|
+
// Fetch review comments for the PR
|
|
84
|
+
let feedback = [];
|
|
85
|
+
let discussionIds;
|
|
86
|
+
switch (remote.host) {
|
|
87
|
+
case 'github':
|
|
88
|
+
feedback = await fetchGitHubPrReviewComments(creds.token, `${remote.owner}/${remote.repo}`, reviewState.prNumber, apiBase, since, ghUsername);
|
|
89
|
+
break;
|
|
90
|
+
case 'gitlab': {
|
|
91
|
+
const mrResult = await fetchGitLabMrReviewComments(creds.token, apiBase, remote.projectPath, reviewState.prNumber, since);
|
|
92
|
+
feedback = mrResult.comments;
|
|
93
|
+
discussionIds = mrResult.discussionIds;
|
|
94
|
+
break;
|
|
95
|
+
}
|
|
96
|
+
case 'bitbucket':
|
|
97
|
+
feedback = await fetchBitbucketPrReviewComments(creds.username, creds.token, remote.workspace, remote.repoSlug, reviewState.prNumber, since);
|
|
98
|
+
break;
|
|
99
|
+
case 'bitbucket-server':
|
|
100
|
+
feedback = await fetchBitbucketServerPrReviewComments(creds.token, apiBase, remote.projectKey, remote.repoSlug, reviewState.prNumber, since);
|
|
101
|
+
break;
|
|
102
|
+
}
|
|
103
|
+
const ticket = {
|
|
104
|
+
key: entry.key,
|
|
105
|
+
title: entry.summary,
|
|
106
|
+
description: entry.summary,
|
|
107
|
+
parentInfo: 'none',
|
|
108
|
+
blockers: 'None',
|
|
109
|
+
};
|
|
110
|
+
return {
|
|
111
|
+
ticket,
|
|
112
|
+
feedback,
|
|
113
|
+
prNumber: reviewState.prNumber,
|
|
114
|
+
discussionIds,
|
|
115
|
+
reviewers: reviewState.reviewers ?? [],
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
return undefined;
|
|
120
|
+
}
|
|
121
|
+
// ─── Post-rework actions ──────────────────────────────────────────────────
|
|
122
|
+
/**
|
|
123
|
+
* Build a rework comment to post on the PR after pushing fixes.
|
|
124
|
+
*
|
|
125
|
+
* Prefixed with `[clancy]` (not `Rework:`) so it does NOT trigger
|
|
126
|
+
* rework detection on the next cycle.
|
|
127
|
+
*/
|
|
128
|
+
export function buildReworkComment(feedback) {
|
|
129
|
+
if (feedback.length === 0) {
|
|
130
|
+
return '[clancy] Rework pushed addressing reviewer feedback.';
|
|
131
|
+
}
|
|
132
|
+
const count = feedback.length;
|
|
133
|
+
const summary = feedback
|
|
134
|
+
.slice(0, 3)
|
|
135
|
+
.map((f) => `- ${f.slice(0, 80)}`)
|
|
136
|
+
.join('\n');
|
|
137
|
+
const suffix = feedback.length > 3 ? '\n- ...' : '';
|
|
138
|
+
return `[clancy] Rework pushed addressing ${count} feedback item${count !== 1 ? 's' : ''}.\n\n${summary}${suffix}`;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Perform post-rework actions: comment on PR, re-request review (GitHub),
|
|
142
|
+
* resolve threads (GitLab). All best-effort — failures warn but don't block.
|
|
143
|
+
*/
|
|
144
|
+
export async function postReworkActions(config, prNumber, feedback, discussionIds, reviewers) {
|
|
145
|
+
const platformOverride = sharedEnv(config).CLANCY_GIT_PLATFORM;
|
|
146
|
+
const remote = detectRemote(platformOverride);
|
|
147
|
+
if (remote.host === 'none' ||
|
|
148
|
+
remote.host === 'unknown' ||
|
|
149
|
+
remote.host === 'azure') {
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
const creds = resolveGitToken(config, remote);
|
|
153
|
+
if (!creds)
|
|
154
|
+
return;
|
|
155
|
+
const apiBase = buildApiBaseUrl(remote, sharedEnv(config).CLANCY_GIT_API_URL);
|
|
156
|
+
if (!apiBase)
|
|
157
|
+
return;
|
|
158
|
+
const comment = buildReworkComment(feedback);
|
|
159
|
+
// 1. Post rework comment
|
|
160
|
+
try {
|
|
161
|
+
let posted = false;
|
|
162
|
+
switch (remote.host) {
|
|
163
|
+
case 'github':
|
|
164
|
+
posted = await postGitHubPrComment(creds.token, `${remote.owner}/${remote.repo}`, prNumber, comment, apiBase);
|
|
165
|
+
break;
|
|
166
|
+
case 'gitlab':
|
|
167
|
+
posted = await postMrNote(creds.token, apiBase, remote.projectPath, prNumber, comment);
|
|
168
|
+
break;
|
|
169
|
+
case 'bitbucket':
|
|
170
|
+
posted = await postCloudPrComment(creds.username, creds.token, remote.workspace, remote.repoSlug, prNumber, comment);
|
|
171
|
+
break;
|
|
172
|
+
case 'bitbucket-server':
|
|
173
|
+
posted = await postServerPrComment(creds.token, apiBase, remote.projectKey, remote.repoSlug, prNumber, comment);
|
|
174
|
+
break;
|
|
175
|
+
}
|
|
176
|
+
if (posted) {
|
|
177
|
+
console.log(dim(' ✓ Posted rework comment'));
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
catch {
|
|
181
|
+
// Best-effort
|
|
182
|
+
}
|
|
183
|
+
// 2. GitLab: resolve addressed discussion threads
|
|
184
|
+
if (remote.host === 'gitlab' && discussionIds && discussionIds.length > 0) {
|
|
185
|
+
try {
|
|
186
|
+
const resolved = await resolveDiscussions(creds.token, apiBase, remote.projectPath, prNumber, discussionIds);
|
|
187
|
+
if (resolved > 0) {
|
|
188
|
+
console.log(dim(` ✓ Resolved ${resolved} discussion thread${resolved !== 1 ? 's' : ''}`));
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
catch {
|
|
192
|
+
// Best-effort
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
// 3. GitHub: re-request review from reviewers who requested changes
|
|
196
|
+
if (remote.host === 'github' && reviewers && reviewers.length > 0) {
|
|
197
|
+
try {
|
|
198
|
+
const ok = await requestGitHubReview(creds.token, `${remote.owner}/${remote.repo}`, prNumber, reviewers, apiBase);
|
|
199
|
+
if (ok) {
|
|
200
|
+
console.log(dim(` ✓ Re-requested review from ${reviewers.join(', ')}`));
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
catch {
|
|
204
|
+
// Best-effort
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
//# sourceMappingURL=rework.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rework.js","sourceRoot":"","sources":["../../../src/scripts/once/rework.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/** Normalised ticket representation used within the once orchestrator. */
|
|
2
|
+
export type FetchedTicket = {
|
|
3
|
+
key: string;
|
|
4
|
+
title: string;
|
|
5
|
+
description: string;
|
|
6
|
+
parentInfo: string;
|
|
7
|
+
blockers: string;
|
|
8
|
+
/** Linear internal issue ID — needed for state transitions. */
|
|
9
|
+
linearIssueId?: string;
|
|
10
|
+
/** Board-specific issue ID — needed for feedback fetching (e.g., Linear UUID). */
|
|
11
|
+
issueId?: string;
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/scripts/once/types.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,MAAM,MAAM,aAAa,GAAG;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,+DAA+D;IAC/D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kFAAkF;IAClF,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/scripts/once/types.ts"],"names":[],"mappings":""}
|
package/package.json
CHANGED