@jonit-dev/night-watch-cli 1.8.12-beta.10 → 1.8.12-beta.12
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/cli.js +127 -39
- package/dist/commands/run.d.ts +14 -1
- package/dist/commands/run.d.ts.map +1 -1
- package/dist/commands/run.js +97 -40
- package/dist/commands/run.js.map +1 -1
- package/dist/scripts/night-watch-merger-cron.sh +74 -1
- package/dist/scripts/night-watch-pr-reviewer-cron.sh +80 -0
- package/dist/templates/night-watch-pr-reviewer.md +7 -6
- package/dist/templates/pr-reviewer.md +7 -6
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -5977,12 +5977,19 @@ function formatDiscordPayload(ctx) {
|
|
|
5977
5977
|
function formatTelegramPayload(ctx) {
|
|
5978
5978
|
const emoji = getEventEmoji(ctx.event);
|
|
5979
5979
|
const title = ctx.event === "run_succeeded" ? "PR Opened" : getEventTitle(ctx.event);
|
|
5980
|
-
if (ctx.prUrl
|
|
5980
|
+
if (ctx.prUrl || ctx.prTitle || ctx.prNumber !== void 0) {
|
|
5981
5981
|
const lines = [];
|
|
5982
|
+
const prLabelParts = ["PR"];
|
|
5983
|
+
if (ctx.prNumber !== void 0) {
|
|
5984
|
+
prLabelParts.push(`#${ctx.prNumber}`);
|
|
5985
|
+
}
|
|
5986
|
+
const prLabel = ctx.prTitle ? `${prLabelParts.join(" ")}: ${ctx.prTitle}` : prLabelParts.join(" ");
|
|
5982
5987
|
lines.push(`*${escapeMarkdownV2(emoji + " " + title)}*`);
|
|
5983
5988
|
lines.push("");
|
|
5984
|
-
lines.push(`${escapeMarkdownV2("\u{1F4CB}")} *${escapeMarkdownV2(
|
|
5985
|
-
|
|
5989
|
+
lines.push(`${escapeMarkdownV2("\u{1F4CB}")} *${escapeMarkdownV2(prLabel)}*`);
|
|
5990
|
+
if (ctx.prUrl) {
|
|
5991
|
+
lines.push(`${escapeMarkdownV2("\u{1F517}")} ${escapeMarkdownV2(ctx.prUrl)}`);
|
|
5992
|
+
}
|
|
5986
5993
|
if (ctx.prBody && ctx.prBody.trim().length > 0) {
|
|
5987
5994
|
const summary = extractSummary(ctx.prBody);
|
|
5988
5995
|
if (summary) {
|
|
@@ -6030,7 +6037,16 @@ function formatTelegramPayload(ctx) {
|
|
|
6030
6037
|
}
|
|
6031
6038
|
}
|
|
6032
6039
|
lines.push("");
|
|
6033
|
-
lines.push(escapeMarkdownV2(
|
|
6040
|
+
lines.push(escapeMarkdownV2("\u2699\uFE0F Meta"));
|
|
6041
|
+
lines.push(escapeMarkdownV2(`Project: ${ctx.projectName}`));
|
|
6042
|
+
lines.push(escapeMarkdownV2(`Provider: ${ctx.provider}`));
|
|
6043
|
+
lines.push(escapeMarkdownV2(`Exit code: ${ctx.exitCode}`));
|
|
6044
|
+
if (ctx.prdName) {
|
|
6045
|
+
lines.push(escapeMarkdownV2(`PRD: ${ctx.prdName}`));
|
|
6046
|
+
}
|
|
6047
|
+
if (ctx.branchName) {
|
|
6048
|
+
lines.push(escapeMarkdownV2(`Branch: ${ctx.branchName}`));
|
|
6049
|
+
}
|
|
6034
6050
|
return {
|
|
6035
6051
|
text: lines.join("\n"),
|
|
6036
6052
|
parse_mode: "MarkdownV2"
|
|
@@ -10888,6 +10904,27 @@ function resolveRunNotificationEvent(exitCode, scriptStatus) {
|
|
|
10888
10904
|
}
|
|
10889
10905
|
return null;
|
|
10890
10906
|
}
|
|
10907
|
+
function extractPrUrlFromOutput(output) {
|
|
10908
|
+
if (!output) {
|
|
10909
|
+
return void 0;
|
|
10910
|
+
}
|
|
10911
|
+
const matches = Array.from(
|
|
10912
|
+
output.matchAll(/https:\/\/github\.com\/[^\s)]+\/pull\/\d+/g),
|
|
10913
|
+
(match) => match[0]
|
|
10914
|
+
);
|
|
10915
|
+
return matches.at(-1);
|
|
10916
|
+
}
|
|
10917
|
+
function extractResultValueFromOutput(output, key) {
|
|
10918
|
+
if (!output) {
|
|
10919
|
+
return void 0;
|
|
10920
|
+
}
|
|
10921
|
+
const escapedKey = key.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
10922
|
+
const regex = new RegExp(`\\b${escapedKey}=([^\\s|]+)`, "g");
|
|
10923
|
+
const matches = Array.from(output.matchAll(regex), (match) => match[1]).filter(
|
|
10924
|
+
(value) => value !== void 0 && value.length > 0
|
|
10925
|
+
);
|
|
10926
|
+
return matches.at(-1);
|
|
10927
|
+
}
|
|
10891
10928
|
function shouldAttemptCrossProjectFallback(options, scriptStatus) {
|
|
10892
10929
|
if (options.crossProjectFallback !== true) {
|
|
10893
10930
|
return false;
|
|
@@ -10903,6 +10940,71 @@ function shouldAttemptCrossProjectFallback(options, scriptStatus) {
|
|
|
10903
10940
|
}
|
|
10904
10941
|
return scriptStatus === "skip_no_eligible_prd";
|
|
10905
10942
|
}
|
|
10943
|
+
function parsePrNumberFromUrl(prUrl) {
|
|
10944
|
+
const match = prUrl?.match(/\/pull\/(\d+)(?:\b|[/?#])/);
|
|
10945
|
+
if (!match?.[1]) {
|
|
10946
|
+
return void 0;
|
|
10947
|
+
}
|
|
10948
|
+
const parsed = parseInt(match[1], 10);
|
|
10949
|
+
return Number.isNaN(parsed) ? void 0 : parsed;
|
|
10950
|
+
}
|
|
10951
|
+
function getRunPrMetadata(scriptResult, rawOutput) {
|
|
10952
|
+
const prUrl = scriptResult?.data.pr_url ?? extractPrUrlFromOutput(rawOutput);
|
|
10953
|
+
const branchName = scriptResult?.data.branch ?? extractResultValueFromOutput(rawOutput, "branch");
|
|
10954
|
+
const prNumber = parsePrNumberFromUrl(prUrl) ?? (scriptResult?.data.pr_number ? parseInt(scriptResult.data.pr_number, 10) : void 0);
|
|
10955
|
+
return {
|
|
10956
|
+
prUrl,
|
|
10957
|
+
branchName,
|
|
10958
|
+
prNumber: prNumber !== void 0 && !Number.isNaN(prNumber) ? prNumber : void 0
|
|
10959
|
+
};
|
|
10960
|
+
}
|
|
10961
|
+
function fetchRunPrDetails(config, projectDir, metadata) {
|
|
10962
|
+
if (metadata.prNumber !== void 0) {
|
|
10963
|
+
const details = fetchPrDetailsByNumber(metadata.prNumber, projectDir);
|
|
10964
|
+
if (details) {
|
|
10965
|
+
return details;
|
|
10966
|
+
}
|
|
10967
|
+
}
|
|
10968
|
+
if (metadata.prUrl) {
|
|
10969
|
+
const details = fetchPrDetailsForBranch(metadata.prUrl, projectDir);
|
|
10970
|
+
if (details) {
|
|
10971
|
+
return details;
|
|
10972
|
+
}
|
|
10973
|
+
}
|
|
10974
|
+
if (metadata.branchName) {
|
|
10975
|
+
const details = fetchPrDetailsForBranch(metadata.branchName, projectDir);
|
|
10976
|
+
if (details) {
|
|
10977
|
+
return details;
|
|
10978
|
+
}
|
|
10979
|
+
}
|
|
10980
|
+
return fetchPrDetails(config.branchPrefix, projectDir);
|
|
10981
|
+
}
|
|
10982
|
+
function buildRunNotificationContext(config, projectDir, event, exitCode, scriptResult, prDetails, rawOutput) {
|
|
10983
|
+
const metadata = getRunPrMetadata(scriptResult, rawOutput);
|
|
10984
|
+
const timeoutDuration = event === "run_timeout" ? config.maxRuntime : void 0;
|
|
10985
|
+
const checkpointValue = scriptResult?.data.checkpoint;
|
|
10986
|
+
const checkpointStatus = checkpointValue === "created" || checkpointValue === "available" || checkpointValue === "none" ? checkpointValue : void 0;
|
|
10987
|
+
return {
|
|
10988
|
+
event,
|
|
10989
|
+
projectName: path23.basename(projectDir),
|
|
10990
|
+
exitCode,
|
|
10991
|
+
provider: config.provider,
|
|
10992
|
+
prdName: scriptResult?.data.prd ?? extractResultValueFromOutput(rawOutput, "prd"),
|
|
10993
|
+
branchName: metadata.branchName,
|
|
10994
|
+
duration: timeoutDuration,
|
|
10995
|
+
scriptStatus: scriptResult?.status,
|
|
10996
|
+
failureReason: scriptResult?.data.reason,
|
|
10997
|
+
failureDetail: scriptResult?.data.detail,
|
|
10998
|
+
checkpointStatus,
|
|
10999
|
+
prUrl: prDetails?.url || metadata.prUrl,
|
|
11000
|
+
prTitle: prDetails?.title,
|
|
11001
|
+
prBody: prDetails?.body,
|
|
11002
|
+
prNumber: prDetails?.number ?? metadata.prNumber,
|
|
11003
|
+
filesChanged: prDetails?.changedFiles,
|
|
11004
|
+
additions: prDetails?.additions,
|
|
11005
|
+
deletions: prDetails?.deletions
|
|
11006
|
+
};
|
|
11007
|
+
}
|
|
10906
11008
|
function getCrossProjectFallbackCandidates(currentProjectDir) {
|
|
10907
11009
|
const current = path23.resolve(currentProjectDir);
|
|
10908
11010
|
const { valid, invalid } = validateRegistry();
|
|
@@ -10911,7 +11013,7 @@ function getCrossProjectFallbackCandidates(currentProjectDir) {
|
|
|
10911
11013
|
}
|
|
10912
11014
|
return valid.filter((entry) => path23.resolve(entry.path) !== current);
|
|
10913
11015
|
}
|
|
10914
|
-
async function sendRunCompletionNotifications(config, projectDir, options, exitCode, scriptResult) {
|
|
11016
|
+
async function sendRunCompletionNotifications(config, projectDir, options, exitCode, scriptResult, rawOutput) {
|
|
10915
11017
|
if (isRateLimitFallbackTriggered(scriptResult?.data)) {
|
|
10916
11018
|
const nonTelegramWebhooks = (config.notifications?.webhooks ?? []).filter(
|
|
10917
11019
|
(wh) => wh.type !== "telegram"
|
|
@@ -10935,42 +11037,18 @@ async function sendRunCompletionNotifications(config, projectDir, options, exitC
|
|
|
10935
11037
|
const event = resolveRunNotificationEvent(exitCode, scriptResult?.status);
|
|
10936
11038
|
let prDetails = null;
|
|
10937
11039
|
if (event === "run_succeeded") {
|
|
10938
|
-
|
|
10939
|
-
const branch = scriptResult?.data.branch;
|
|
10940
|
-
if (prUrl) {
|
|
10941
|
-
prDetails = fetchPrDetailsForBranch(prUrl, projectDir);
|
|
10942
|
-
}
|
|
10943
|
-
if (!prDetails && branch) {
|
|
10944
|
-
prDetails = fetchPrDetailsForBranch(branch, projectDir);
|
|
10945
|
-
}
|
|
10946
|
-
if (!prDetails) {
|
|
10947
|
-
prDetails = fetchPrDetails(config.branchPrefix, projectDir);
|
|
10948
|
-
}
|
|
11040
|
+
prDetails = fetchRunPrDetails(config, projectDir, getRunPrMetadata(scriptResult, rawOutput));
|
|
10949
11041
|
}
|
|
10950
11042
|
if (event) {
|
|
10951
|
-
const
|
|
10952
|
-
|
|
10953
|
-
|
|
10954
|
-
const _ctx = {
|
|
11043
|
+
const _ctx = buildRunNotificationContext(
|
|
11044
|
+
config,
|
|
11045
|
+
projectDir,
|
|
10955
11046
|
event,
|
|
10956
|
-
projectName: path23.basename(projectDir),
|
|
10957
11047
|
exitCode,
|
|
10958
|
-
|
|
10959
|
-
|
|
10960
|
-
|
|
10961
|
-
|
|
10962
|
-
scriptStatus: scriptResult?.status,
|
|
10963
|
-
failureReason: scriptResult?.data.reason,
|
|
10964
|
-
failureDetail: scriptResult?.data.detail,
|
|
10965
|
-
checkpointStatus,
|
|
10966
|
-
prUrl: prDetails?.url,
|
|
10967
|
-
prTitle: prDetails?.title,
|
|
10968
|
-
prBody: prDetails?.body,
|
|
10969
|
-
prNumber: prDetails?.number,
|
|
10970
|
-
filesChanged: prDetails?.changedFiles,
|
|
10971
|
-
additions: prDetails?.additions,
|
|
10972
|
-
deletions: prDetails?.deletions
|
|
10973
|
-
};
|
|
11048
|
+
scriptResult,
|
|
11049
|
+
prDetails,
|
|
11050
|
+
rawOutput
|
|
11051
|
+
);
|
|
10974
11052
|
await sendNotifications(config, _ctx);
|
|
10975
11053
|
} else if (!options.dryRun) {
|
|
10976
11054
|
info("Skipping completion notification (no actionable run result)");
|
|
@@ -11021,7 +11099,9 @@ ${stderr}`);
|
|
|
11021
11099
|
candidate.path,
|
|
11022
11100
|
options,
|
|
11023
11101
|
exitCode,
|
|
11024
|
-
scriptResult
|
|
11102
|
+
scriptResult,
|
|
11103
|
+
`${stdout}
|
|
11104
|
+
${stderr}`
|
|
11025
11105
|
);
|
|
11026
11106
|
}
|
|
11027
11107
|
if (exitCode !== 0) {
|
|
@@ -11363,7 +11443,15 @@ ${stderr}`);
|
|
|
11363
11443
|
});
|
|
11364
11444
|
} catch {
|
|
11365
11445
|
}
|
|
11366
|
-
await sendRunCompletionNotifications(
|
|
11446
|
+
await sendRunCompletionNotifications(
|
|
11447
|
+
config,
|
|
11448
|
+
projectDir,
|
|
11449
|
+
options,
|
|
11450
|
+
exitCode,
|
|
11451
|
+
scriptResult,
|
|
11452
|
+
`${stdout}
|
|
11453
|
+
${stderr}`
|
|
11454
|
+
);
|
|
11367
11455
|
}
|
|
11368
11456
|
if (shouldAttemptCrossProjectFallback(options, scriptResult?.status)) {
|
|
11369
11457
|
const executedFallback = await runCrossProjectFallback(projectDir, options);
|
package/dist/commands/run.d.ts
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { Command } from 'commander';
|
|
5
5
|
import { INightWatchConfig, NotificationEvent, parseScriptResult } from '@night-watch/core';
|
|
6
|
-
import type { JobType } from '@night-watch/core';
|
|
6
|
+
import type { INotificationContext, IPrDetails, JobType } from '@night-watch/core';
|
|
7
7
|
/**
|
|
8
8
|
* Options for the run command
|
|
9
9
|
*/
|
|
@@ -25,15 +25,28 @@ export interface IRunOutcomeRecordInput {
|
|
|
25
25
|
scriptResult?: ReturnType<typeof parseScriptResult>;
|
|
26
26
|
metadata?: Record<string, unknown>;
|
|
27
27
|
}
|
|
28
|
+
export interface IRunPrMetadata {
|
|
29
|
+
prUrl?: string;
|
|
30
|
+
branchName?: string;
|
|
31
|
+
prNumber?: number;
|
|
32
|
+
}
|
|
28
33
|
/**
|
|
29
34
|
* Map executor exit/result state to a notification event.
|
|
30
35
|
* Returns null when the run completed with no actionable work (skip/no-op).
|
|
31
36
|
*/
|
|
32
37
|
export declare function resolveRunNotificationEvent(exitCode: number, scriptStatus?: string): NotificationEvent | null;
|
|
38
|
+
/**
|
|
39
|
+
* Extract the most recent GitHub PR URL from raw executor output.
|
|
40
|
+
* This is a safety net for older/custom scripts that open a PR successfully
|
|
41
|
+
* but do not emit complete NIGHT_WATCH_RESULT metadata.
|
|
42
|
+
*/
|
|
43
|
+
export declare function extractPrUrlFromOutput(output?: string): string | undefined;
|
|
33
44
|
/**
|
|
34
45
|
* Determine if cross-project fallback should run for this executor result.
|
|
35
46
|
*/
|
|
36
47
|
export declare function shouldAttemptCrossProjectFallback(options: IRunOptions, scriptStatus?: string): boolean;
|
|
48
|
+
export declare function parsePrNumberFromUrl(prUrl?: string): number | undefined;
|
|
49
|
+
export declare function buildRunNotificationContext(config: INightWatchConfig, projectDir: string, event: NotificationEvent, exitCode: number, scriptResult: ReturnType<typeof parseScriptResult>, prDetails: IPrDetails | null, rawOutput?: string): INotificationContext;
|
|
37
50
|
/**
|
|
38
51
|
* Resolve valid registered projects excluding the current project.
|
|
39
52
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAGL,iBAAiB,EAEjB,iBAAiB,
|
|
1
|
+
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/run.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Run command - executes the PRD cron script
|
|
3
3
|
*/
|
|
4
|
-
import { CLAIM_FILE_EXTENSION, CLAUDE_MODEL_IDS, PROVIDER_COMMANDS, analyzeFeedbackOutcome, buildProjectFeedbackPromptBlock, buildSessionOutcomeInput, createBoardProvider, createSpinner, createTable, dim, executeScriptWithOutput, fetchPrDetails, fetchPrDetailsForBranch, getRepositories, getScriptPath, header, info, isFeedbackPromptEnabled, loadConfig, parseScriptResult, resolveJobProvider, resolvePreset, sendNotifications, error as uiError, validateRegistry, warn, } from '@night-watch/core';
|
|
4
|
+
import { CLAIM_FILE_EXTENSION, CLAUDE_MODEL_IDS, PROVIDER_COMMANDS, analyzeFeedbackOutcome, buildProjectFeedbackPromptBlock, buildSessionOutcomeInput, createBoardProvider, createSpinner, createTable, dim, executeScriptWithOutput, fetchPrDetails, fetchPrDetailsByNumber, fetchPrDetailsForBranch, getRepositories, getScriptPath, header, info, isFeedbackPromptEnabled, loadConfig, parseScriptResult, resolveJobProvider, resolvePreset, sendNotifications, error as uiError, validateRegistry, warn, } from '@night-watch/core';
|
|
5
5
|
import { buildBaseEnvVars, maybeApplyCronSchedulingDelay } from './shared/env-builder.js';
|
|
6
6
|
import { getFeedbackAnalysisOptions, isFeedbackEnabled } from './shared/feedback.js';
|
|
7
7
|
import * as fs from 'fs';
|
|
@@ -25,6 +25,27 @@ export function resolveRunNotificationEvent(exitCode, scriptStatus) {
|
|
|
25
25
|
}
|
|
26
26
|
return null;
|
|
27
27
|
}
|
|
28
|
+
/**
|
|
29
|
+
* Extract the most recent GitHub PR URL from raw executor output.
|
|
30
|
+
* This is a safety net for older/custom scripts that open a PR successfully
|
|
31
|
+
* but do not emit complete NIGHT_WATCH_RESULT metadata.
|
|
32
|
+
*/
|
|
33
|
+
export function extractPrUrlFromOutput(output) {
|
|
34
|
+
if (!output) {
|
|
35
|
+
return undefined;
|
|
36
|
+
}
|
|
37
|
+
const matches = Array.from(output.matchAll(/https:\/\/github\.com\/[^\s)]+\/pull\/\d+/g), (match) => match[0]);
|
|
38
|
+
return matches.at(-1);
|
|
39
|
+
}
|
|
40
|
+
function extractResultValueFromOutput(output, key) {
|
|
41
|
+
if (!output) {
|
|
42
|
+
return undefined;
|
|
43
|
+
}
|
|
44
|
+
const escapedKey = key.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
45
|
+
const regex = new RegExp(`\\b${escapedKey}=([^\\s|]+)`, 'g');
|
|
46
|
+
const matches = Array.from(output.matchAll(regex), (match) => match[1]).filter((value) => value !== undefined && value.length > 0);
|
|
47
|
+
return matches.at(-1);
|
|
48
|
+
}
|
|
28
49
|
/**
|
|
29
50
|
* Determine if cross-project fallback should run for this executor result.
|
|
30
51
|
*/
|
|
@@ -44,6 +65,76 @@ export function shouldAttemptCrossProjectFallback(options, scriptStatus) {
|
|
|
44
65
|
}
|
|
45
66
|
return scriptStatus === 'skip_no_eligible_prd';
|
|
46
67
|
}
|
|
68
|
+
export function parsePrNumberFromUrl(prUrl) {
|
|
69
|
+
const match = prUrl?.match(/\/pull\/(\d+)(?:\b|[/?#])/);
|
|
70
|
+
if (!match?.[1]) {
|
|
71
|
+
return undefined;
|
|
72
|
+
}
|
|
73
|
+
const parsed = parseInt(match[1], 10);
|
|
74
|
+
return Number.isNaN(parsed) ? undefined : parsed;
|
|
75
|
+
}
|
|
76
|
+
function getRunPrMetadata(scriptResult, rawOutput) {
|
|
77
|
+
const prUrl = scriptResult?.data.pr_url ?? extractPrUrlFromOutput(rawOutput);
|
|
78
|
+
const branchName = scriptResult?.data.branch ?? extractResultValueFromOutput(rawOutput, 'branch');
|
|
79
|
+
const prNumber = parsePrNumberFromUrl(prUrl) ??
|
|
80
|
+
(scriptResult?.data.pr_number ? parseInt(scriptResult.data.pr_number, 10) : undefined);
|
|
81
|
+
return {
|
|
82
|
+
prUrl,
|
|
83
|
+
branchName,
|
|
84
|
+
prNumber: prNumber !== undefined && !Number.isNaN(prNumber) ? prNumber : undefined,
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
function fetchRunPrDetails(config, projectDir, metadata) {
|
|
88
|
+
// Prefer number lookup. Some gh versions are less reliable with URL selectors,
|
|
89
|
+
// while PR numbers are unambiguous once parsed from the emitted PR URL.
|
|
90
|
+
if (metadata.prNumber !== undefined) {
|
|
91
|
+
const details = fetchPrDetailsByNumber(metadata.prNumber, projectDir);
|
|
92
|
+
if (details) {
|
|
93
|
+
return details;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
if (metadata.prUrl) {
|
|
97
|
+
const details = fetchPrDetailsForBranch(metadata.prUrl, projectDir);
|
|
98
|
+
if (details) {
|
|
99
|
+
return details;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
if (metadata.branchName) {
|
|
103
|
+
const details = fetchPrDetailsForBranch(metadata.branchName, projectDir);
|
|
104
|
+
if (details) {
|
|
105
|
+
return details;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
return fetchPrDetails(config.branchPrefix, projectDir);
|
|
109
|
+
}
|
|
110
|
+
export function buildRunNotificationContext(config, projectDir, event, exitCode, scriptResult, prDetails, rawOutput) {
|
|
111
|
+
const metadata = getRunPrMetadata(scriptResult, rawOutput);
|
|
112
|
+
const timeoutDuration = event === 'run_timeout' ? config.maxRuntime : undefined;
|
|
113
|
+
const checkpointValue = scriptResult?.data.checkpoint;
|
|
114
|
+
const checkpointStatus = checkpointValue === 'created' || checkpointValue === 'available' || checkpointValue === 'none'
|
|
115
|
+
? checkpointValue
|
|
116
|
+
: undefined;
|
|
117
|
+
return {
|
|
118
|
+
event,
|
|
119
|
+
projectName: path.basename(projectDir),
|
|
120
|
+
exitCode,
|
|
121
|
+
provider: config.provider,
|
|
122
|
+
prdName: scriptResult?.data.prd ?? extractResultValueFromOutput(rawOutput, 'prd'),
|
|
123
|
+
branchName: metadata.branchName,
|
|
124
|
+
duration: timeoutDuration,
|
|
125
|
+
scriptStatus: scriptResult?.status,
|
|
126
|
+
failureReason: scriptResult?.data.reason,
|
|
127
|
+
failureDetail: scriptResult?.data.detail,
|
|
128
|
+
checkpointStatus,
|
|
129
|
+
prUrl: prDetails?.url || metadata.prUrl,
|
|
130
|
+
prTitle: prDetails?.title,
|
|
131
|
+
prBody: prDetails?.body,
|
|
132
|
+
prNumber: prDetails?.number ?? metadata.prNumber,
|
|
133
|
+
filesChanged: prDetails?.changedFiles,
|
|
134
|
+
additions: prDetails?.additions,
|
|
135
|
+
deletions: prDetails?.deletions,
|
|
136
|
+
};
|
|
137
|
+
}
|
|
47
138
|
/**
|
|
48
139
|
* Resolve valid registered projects excluding the current project.
|
|
49
140
|
*/
|
|
@@ -58,7 +149,7 @@ export function getCrossProjectFallbackCandidates(currentProjectDir) {
|
|
|
58
149
|
/**
|
|
59
150
|
* Run completion notifications for an executor invocation (local or fallback).
|
|
60
151
|
*/
|
|
61
|
-
async function sendRunCompletionNotifications(config, projectDir, options, exitCode, scriptResult) {
|
|
152
|
+
async function sendRunCompletionNotifications(config, projectDir, options, exitCode, scriptResult, rawOutput) {
|
|
62
153
|
// Rate-limit fallback notifications are sent immediately to Telegram in bash.
|
|
63
154
|
// Send this event only to non-Telegram webhooks to avoid duplicate alerts.
|
|
64
155
|
if (isRateLimitFallbackTriggered(scriptResult?.data)) {
|
|
@@ -81,44 +172,10 @@ async function sendRunCompletionNotifications(config, projectDir, options, exitC
|
|
|
81
172
|
// Enrich with PR details on success (graceful — null if gh fails)
|
|
82
173
|
let prDetails = null;
|
|
83
174
|
if (event === 'run_succeeded') {
|
|
84
|
-
|
|
85
|
-
const branch = scriptResult?.data.branch;
|
|
86
|
-
if (prUrl) {
|
|
87
|
-
prDetails = fetchPrDetailsForBranch(prUrl, projectDir);
|
|
88
|
-
}
|
|
89
|
-
if (!prDetails && branch) {
|
|
90
|
-
prDetails = fetchPrDetailsForBranch(branch, projectDir);
|
|
91
|
-
}
|
|
92
|
-
if (!prDetails) {
|
|
93
|
-
prDetails = fetchPrDetails(config.branchPrefix, projectDir);
|
|
94
|
-
}
|
|
175
|
+
prDetails = fetchRunPrDetails(config, projectDir, getRunPrMetadata(scriptResult, rawOutput));
|
|
95
176
|
}
|
|
96
177
|
if (event) {
|
|
97
|
-
const
|
|
98
|
-
const checkpointValue = scriptResult?.data.checkpoint;
|
|
99
|
-
const checkpointStatus = checkpointValue === 'created' || checkpointValue === 'available' || checkpointValue === 'none'
|
|
100
|
-
? checkpointValue
|
|
101
|
-
: undefined;
|
|
102
|
-
const _ctx = {
|
|
103
|
-
event,
|
|
104
|
-
projectName: path.basename(projectDir),
|
|
105
|
-
exitCode,
|
|
106
|
-
provider: config.provider,
|
|
107
|
-
prdName: scriptResult?.data.prd,
|
|
108
|
-
branchName: scriptResult?.data.branch,
|
|
109
|
-
duration: timeoutDuration,
|
|
110
|
-
scriptStatus: scriptResult?.status,
|
|
111
|
-
failureReason: scriptResult?.data.reason,
|
|
112
|
-
failureDetail: scriptResult?.data.detail,
|
|
113
|
-
checkpointStatus,
|
|
114
|
-
prUrl: prDetails?.url,
|
|
115
|
-
prTitle: prDetails?.title,
|
|
116
|
-
prBody: prDetails?.body,
|
|
117
|
-
prNumber: prDetails?.number,
|
|
118
|
-
filesChanged: prDetails?.changedFiles,
|
|
119
|
-
additions: prDetails?.additions,
|
|
120
|
-
deletions: prDetails?.deletions,
|
|
121
|
-
};
|
|
178
|
+
const _ctx = buildRunNotificationContext(config, projectDir, event, exitCode, scriptResult, prDetails, rawOutput);
|
|
122
179
|
await sendNotifications(config, _ctx);
|
|
123
180
|
}
|
|
124
181
|
else if (!options.dryRun) {
|
|
@@ -165,7 +222,7 @@ async function runCrossProjectFallback(currentProjectDir, options) {
|
|
|
165
222
|
// Outcome persistence must not change fallback execution behavior.
|
|
166
223
|
}
|
|
167
224
|
if (!options.dryRun) {
|
|
168
|
-
await sendRunCompletionNotifications(candidateConfig, candidate.path, options, exitCode, scriptResult);
|
|
225
|
+
await sendRunCompletionNotifications(candidateConfig, candidate.path, options, exitCode, scriptResult, `${stdout}\n${stderr}`);
|
|
169
226
|
}
|
|
170
227
|
if (exitCode !== 0) {
|
|
171
228
|
warn(`Cross-project fallback: ${candidate.name} exited with code ${exitCode}; checking next project.`);
|
|
@@ -573,7 +630,7 @@ export function runCommand(program) {
|
|
|
573
630
|
catch {
|
|
574
631
|
// Outcome persistence must not change command exit behavior.
|
|
575
632
|
}
|
|
576
|
-
await sendRunCompletionNotifications(config, projectDir, options, exitCode, scriptResult);
|
|
633
|
+
await sendRunCompletionNotifications(config, projectDir, options, exitCode, scriptResult, `${stdout}\n${stderr}`);
|
|
577
634
|
}
|
|
578
635
|
// Opportunistic cross-project balancing:
|
|
579
636
|
// if this project has no eligible work, try other registered projects.
|
package/dist/commands/run.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"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"}
|
|
@@ -120,6 +120,73 @@ get_review_score() {
|
|
|
120
120
|
echo "${score}"
|
|
121
121
|
}
|
|
122
122
|
|
|
123
|
+
# Count pending review feedback that should send the PR back through reviewer
|
|
124
|
+
# instead of allowing the merger to land it. We combine GitHub's review decision
|
|
125
|
+
# with unresolved review threads because some providers leave actionable feedback
|
|
126
|
+
# as thread comments without lowering the score.
|
|
127
|
+
get_pending_review_feedback_count() {
|
|
128
|
+
local pr_number="${1}"
|
|
129
|
+
local review_decision=""
|
|
130
|
+
local change_request_count="0"
|
|
131
|
+
local unresolved_thread_count="0"
|
|
132
|
+
local repo=""
|
|
133
|
+
local owner=""
|
|
134
|
+
local name=""
|
|
135
|
+
|
|
136
|
+
review_decision=$(gh pr view "${pr_number}" --json reviewDecision --jq '.reviewDecision // ""' 2>/dev/null || echo "")
|
|
137
|
+
|
|
138
|
+
change_request_count=$(gh api "repos/{owner}/{repo}/pulls/${pr_number}/reviews" \
|
|
139
|
+
--jq '[.[] | select(.state == "CHANGES_REQUESTED")] | length' 2>/dev/null || echo "0")
|
|
140
|
+
if ! [[ "${change_request_count}" =~ ^[0-9]+$ ]]; then
|
|
141
|
+
change_request_count="0"
|
|
142
|
+
fi
|
|
143
|
+
|
|
144
|
+
repo=$(gh repo view --json nameWithOwner --jq '.nameWithOwner' 2>/dev/null || echo "")
|
|
145
|
+
if [[ "${repo}" == */* ]]; then
|
|
146
|
+
owner="${repo%%/*}"
|
|
147
|
+
name="${repo#*/}"
|
|
148
|
+
unresolved_thread_count=$(gh api graphql \
|
|
149
|
+
-F owner="${owner}" \
|
|
150
|
+
-F name="${name}" \
|
|
151
|
+
-F number="${pr_number}" \
|
|
152
|
+
-f query='
|
|
153
|
+
query($owner: String!, $name: String!, $number: Int!) {
|
|
154
|
+
repository(owner: $owner, name: $name) {
|
|
155
|
+
pullRequest(number: $number) {
|
|
156
|
+
reviewThreads(first: 100) {
|
|
157
|
+
nodes {
|
|
158
|
+
isResolved
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
' \
|
|
165
|
+
--jq '[.data.repository.pullRequest.reviewThreads.nodes[]? | select(.isResolved == false)] | length' \
|
|
166
|
+
2>/dev/null || echo "0")
|
|
167
|
+
if ! [[ "${unresolved_thread_count}" =~ ^[0-9]+$ ]]; then
|
|
168
|
+
unresolved_thread_count="0"
|
|
169
|
+
fi
|
|
170
|
+
fi
|
|
171
|
+
|
|
172
|
+
if [ "${unresolved_thread_count}" -gt 0 ]; then
|
|
173
|
+
echo "${unresolved_thread_count}"
|
|
174
|
+
return 0
|
|
175
|
+
fi
|
|
176
|
+
|
|
177
|
+
if [ "${change_request_count}" -gt 0 ]; then
|
|
178
|
+
echo "${change_request_count}"
|
|
179
|
+
return 0
|
|
180
|
+
fi
|
|
181
|
+
|
|
182
|
+
if [ "${review_decision}" = "CHANGES_REQUESTED" ]; then
|
|
183
|
+
echo "1"
|
|
184
|
+
return 0
|
|
185
|
+
fi
|
|
186
|
+
|
|
187
|
+
echo "0"
|
|
188
|
+
}
|
|
189
|
+
|
|
123
190
|
# Get the current head OID for a PR.
|
|
124
191
|
get_pr_head_oid() {
|
|
125
192
|
local pr_number="${1}"
|
|
@@ -335,11 +402,17 @@ while IFS= read -r pr_json; do
|
|
|
335
402
|
if [ "${MIN_REVIEW_SCORE}" -gt "0" ]; then
|
|
336
403
|
score=$(get_review_score "${pr_number}")
|
|
337
404
|
if [ "${score}" -lt "0" ] || [ "${score}" -lt "${MIN_REVIEW_SCORE}" ]; then
|
|
338
|
-
log "INFO: PR #${pr_number} (${pr_branch}): Review score ${score} < ${MIN_REVIEW_SCORE} (or no score found),
|
|
405
|
+
log "INFO: PR #${pr_number} (${pr_branch}): Review score ${score} < ${MIN_REVIEW_SCORE} (or no score found), reviewer job required before merge"
|
|
339
406
|
continue
|
|
340
407
|
fi
|
|
341
408
|
fi
|
|
342
409
|
|
|
410
|
+
pending_review_feedback_count=$(get_pending_review_feedback_count "${pr_number}")
|
|
411
|
+
if [ "${pending_review_feedback_count}" -gt "0" ]; then
|
|
412
|
+
log "INFO: PR #${pr_number} (${pr_branch}): ${pending_review_feedback_count} pending review feedback item(s), reviewer job required before merge"
|
|
413
|
+
continue
|
|
414
|
+
fi
|
|
415
|
+
|
|
343
416
|
log "INFO: PR #${pr_number} (${pr_branch}): Eligible for merge"
|
|
344
417
|
|
|
345
418
|
# Rebase before merge if configured
|
|
@@ -132,6 +132,72 @@ get_pr_comments() {
|
|
|
132
132
|
} | awk '!seen[$0]++'
|
|
133
133
|
}
|
|
134
134
|
|
|
135
|
+
get_pr_pending_review_feedback_count() {
|
|
136
|
+
local pr_number="${1:?PR number required}"
|
|
137
|
+
local review_decision=""
|
|
138
|
+
local change_request_count="0"
|
|
139
|
+
local unresolved_thread_count="0"
|
|
140
|
+
local repo="${REPO:-}"
|
|
141
|
+
local owner=""
|
|
142
|
+
local name=""
|
|
143
|
+
|
|
144
|
+
review_decision=$(gh pr view "${pr_number}" --json reviewDecision --jq '.reviewDecision // ""' 2>/dev/null || echo "")
|
|
145
|
+
|
|
146
|
+
change_request_count=$(gh api "repos/{owner}/{repo}/pulls/${pr_number}/reviews" \
|
|
147
|
+
--jq '[.[] | select(.state == "CHANGES_REQUESTED")] | length' 2>/dev/null || echo "0")
|
|
148
|
+
if ! [[ "${change_request_count}" =~ ^[0-9]+$ ]]; then
|
|
149
|
+
change_request_count="0"
|
|
150
|
+
fi
|
|
151
|
+
|
|
152
|
+
if [ -z "${repo}" ]; then
|
|
153
|
+
repo=$(gh repo view --json nameWithOwner --jq '.nameWithOwner' 2>/dev/null || echo "")
|
|
154
|
+
fi
|
|
155
|
+
|
|
156
|
+
if [[ "${repo}" == */* ]]; then
|
|
157
|
+
owner="${repo%%/*}"
|
|
158
|
+
name="${repo#*/}"
|
|
159
|
+
unresolved_thread_count=$(gh api graphql \
|
|
160
|
+
-F owner="${owner}" \
|
|
161
|
+
-F name="${name}" \
|
|
162
|
+
-F number="${pr_number}" \
|
|
163
|
+
-f query='
|
|
164
|
+
query($owner: String!, $name: String!, $number: Int!) {
|
|
165
|
+
repository(owner: $owner, name: $name) {
|
|
166
|
+
pullRequest(number: $number) {
|
|
167
|
+
reviewThreads(first: 100) {
|
|
168
|
+
nodes {
|
|
169
|
+
isResolved
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
' \
|
|
176
|
+
--jq '[.data.repository.pullRequest.reviewThreads.nodes[]? | select(.isResolved == false)] | length' \
|
|
177
|
+
2>/dev/null || echo "0")
|
|
178
|
+
if ! [[ "${unresolved_thread_count}" =~ ^[0-9]+$ ]]; then
|
|
179
|
+
unresolved_thread_count="0"
|
|
180
|
+
fi
|
|
181
|
+
fi
|
|
182
|
+
|
|
183
|
+
if [ "${unresolved_thread_count}" -gt 0 ]; then
|
|
184
|
+
echo "${unresolved_thread_count}"
|
|
185
|
+
return 0
|
|
186
|
+
fi
|
|
187
|
+
|
|
188
|
+
if [ "${change_request_count}" -gt 0 ]; then
|
|
189
|
+
echo "${change_request_count}"
|
|
190
|
+
return 0
|
|
191
|
+
fi
|
|
192
|
+
|
|
193
|
+
if [ "${review_decision}" = "CHANGES_REQUESTED" ]; then
|
|
194
|
+
echo "1"
|
|
195
|
+
return 0
|
|
196
|
+
fi
|
|
197
|
+
|
|
198
|
+
echo "0"
|
|
199
|
+
}
|
|
200
|
+
|
|
135
201
|
get_pr_head_ref_oid() {
|
|
136
202
|
local pr_number="${1:?PR number required}"
|
|
137
203
|
gh pr view "${pr_number}" --json headRefOid --jq '.headRefOid' 2>/dev/null || echo ""
|
|
@@ -760,6 +826,18 @@ while IFS=$'\t' read -r pr_number pr_branch pr_labels; do
|
|
|
760
826
|
continue
|
|
761
827
|
fi
|
|
762
828
|
|
|
829
|
+
PENDING_REVIEW_FEEDBACK_COUNT=$(get_pr_pending_review_feedback_count "${pr_number}")
|
|
830
|
+
if [ "${PENDING_REVIEW_FEEDBACK_COUNT}" -gt 0 ]; then
|
|
831
|
+
if [ "${local_ready_for_review_label_present}" -eq 1 ]; then
|
|
832
|
+
log "INFO: PR #${pr_number} (${pr_branch}) has pending review feedback; removing stale ${READY_FOR_REVIEW_LABEL} label"
|
|
833
|
+
clear_ready_for_human_review_label "${pr_number}"
|
|
834
|
+
fi
|
|
835
|
+
log "INFO: PR #${pr_number} (${pr_branch}) has ${PENDING_REVIEW_FEEDBACK_COUNT} pending review feedback item(s)"
|
|
836
|
+
NEEDS_WORK=1
|
|
837
|
+
PRS_NEEDING_WORK="${PRS_NEEDING_WORK} #${pr_number}"
|
|
838
|
+
continue
|
|
839
|
+
fi
|
|
840
|
+
|
|
763
841
|
if has_ready_for_human_review_marker "${all_comments}" "${current_head_sha}"; then
|
|
764
842
|
SKIPPED_ALREADY_REVIEWED_CURRENT_HEAD=1
|
|
765
843
|
log "INFO: PR #${pr_number} (${pr_branch}) is already marked ready for human review at head ${current_head_sha:0:12}; skipping repeat automated review"
|
|
@@ -1077,6 +1155,7 @@ if [ -n "${TARGET_PR}" ]; then
|
|
|
1077
1155
|
TARGET_MERGE_STATE=$(gh pr view "${TARGET_PR}" --json mergeStateStatus --jq '.mergeStateStatus' 2>/dev/null || echo "UNKNOWN")
|
|
1078
1156
|
TARGET_FAILED_CHECKS=$(get_pr_failed_ci_summary "${TARGET_PR}")
|
|
1079
1157
|
TARGET_SCORE=$(get_pr_score "${TARGET_PR}")
|
|
1158
|
+
TARGET_PENDING_REVIEW_FEEDBACK=$(get_pr_pending_review_feedback_count "${TARGET_PR}")
|
|
1080
1159
|
|
|
1081
1160
|
TARGET_SCOPE_PROMPT+=$'\n## Preflight Data (from CLI)\n- mergeStateStatus: '"${TARGET_MERGE_STATE}"$'\n'
|
|
1082
1161
|
if [ -n "${TARGET_FAILED_CHECKS}" ]; then
|
|
@@ -1084,6 +1163,7 @@ if [ -n "${TARGET_PR}" ]; then
|
|
|
1084
1163
|
else
|
|
1085
1164
|
TARGET_SCOPE_PROMPT+=$'- failing checks: none detected\n'
|
|
1086
1165
|
fi
|
|
1166
|
+
TARGET_SCOPE_PROMPT+=$'- pending review feedback: '"${TARGET_PENDING_REVIEW_FEEDBACK}"$' item(s)\n'
|
|
1087
1167
|
if [ -n "${TARGET_SCORE}" ]; then
|
|
1088
1168
|
TARGET_SCOPE_PROMPT+=$'- latest review score: '"${TARGET_SCORE}"$'/100\n'
|
|
1089
1169
|
TARGET_SCOPE_PROMPT+=$'- action: fix\n'
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
You are the Night Watch PR Reviewer agent. Your job is to check open PRs for three things:
|
|
2
2
|
|
|
3
3
|
1. Merge conflicts -- rebase onto the base branch and resolve them.
|
|
4
|
-
2. Review comments with a score below 80 -- address the feedback.
|
|
4
|
+
2. Review comments with a score below 80 or unresolved review feedback -- address the feedback.
|
|
5
5
|
3. Failed CI jobs -- diagnose and fix the failures.
|
|
6
6
|
|
|
7
7
|
## Context
|
|
@@ -10,7 +10,7 @@ The repo can have multiple PR checks/workflows (project CI plus Night Watch auto
|
|
|
10
10
|
Common examples include `typecheck`, `lint`, `test`, `build`, `verify`, `executor`, `qa`, and `audit`.
|
|
11
11
|
Treat `gh pr checks <number> --json name,state,conclusion` as the source of truth for which checks failed.
|
|
12
12
|
|
|
13
|
-
A PR needs attention if **any** of the following: merge conflicts present, review score below 80, or any CI job failed.
|
|
13
|
+
A PR needs attention if **any** of the following: merge conflicts present, no review score yet, review score below 80, unresolved review feedback, or any CI job failed.
|
|
14
14
|
|
|
15
15
|
## PRD Context
|
|
16
16
|
|
|
@@ -21,7 +21,7 @@ If current PR code or review feedback conflicts with the PRD context, call out t
|
|
|
21
21
|
## Important: Early Exit
|
|
22
22
|
|
|
23
23
|
- If there are **no open PRs** on `night-watch/` or `feat/` branches, **stop immediately** and report "No PRs to review."
|
|
24
|
-
- If all open PRs have **no merge conflicts**, **passing CI**,
|
|
24
|
+
- If all open PRs have **no merge conflicts**, **passing CI**, **review score >= 80**, and **no unresolved review feedback**, **stop immediately** and report "All PRs are in good shape."
|
|
25
25
|
- If a PR has no review score yet, it needs a first review — do NOT skip it.
|
|
26
26
|
- Do **NOT** loop or retry. Process each PR **once** per run. After processing all PRs, stop.
|
|
27
27
|
- Do **NOT** re-check PRs after pushing fixes -- the CI will re-run automatically on the next push.
|
|
@@ -90,8 +90,8 @@ Parse the review score from the comment body. Look for patterns like:
|
|
|
90
90
|
Extract the numeric score. If multiple comments have scores, use the **most recent** one.
|
|
91
91
|
|
|
92
92
|
3. **Determine if PR needs work**:
|
|
93
|
-
- If no merge conflicts **AND** score >= 80 **AND** all CI checks pass --> skip this PR.
|
|
94
|
-
- If merge conflicts present **OR** score < 80 **OR** any CI check failed --> fix the issues.
|
|
93
|
+
- If no merge conflicts **AND** score >= 80 **AND** no unresolved review feedback **AND** all CI checks pass --> skip this PR.
|
|
94
|
+
- If merge conflicts present **OR** score < 80 **OR** unresolved review feedback exists **OR** any CI check failed --> fix the issues.
|
|
95
95
|
|
|
96
96
|
4. **Fix the PR**:
|
|
97
97
|
|
|
@@ -122,8 +122,9 @@ Parse the review score from the comment body. Look for patterns like:
|
|
|
122
122
|
- Push the clean branch: `git push --force-with-lease origin <branch-name>`
|
|
123
123
|
- **Do NOT leave any conflict markers (`<<<<<<<`, `=======`, `>>>>>>>`) in any file.**
|
|
124
124
|
|
|
125
|
-
c. **Address review feedback** (if score < 80):
|
|
125
|
+
c. **Address review feedback** (if score < 80 or pending review feedback exists):
|
|
126
126
|
- Read the review comments carefully. Extract areas for improvement, bugs found, issues found, and specific file/line suggestions.
|
|
127
|
+
- If `pending review feedback` is greater than 0 in the cron-provided preflight data, inspect review conversations with `gh pr view <number> --comments` and the GitHub PR review UI/API as needed.
|
|
127
128
|
- For each review suggestion:
|
|
128
129
|
- If you agree, implement the change.
|
|
129
130
|
- If you do not agree, do not implement it blindly. Capture a short technical reason and include that reason in the PR comment.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
You are the Night Watch PR Reviewer agent. Your job is to check open PRs for three things:
|
|
2
2
|
|
|
3
3
|
1. Merge conflicts -- rebase onto the base branch and resolve them.
|
|
4
|
-
2. Review comments with a score below 80 -- address the feedback.
|
|
4
|
+
2. Review comments with a score below 80 or unresolved review feedback -- address the feedback.
|
|
5
5
|
3. Failed CI jobs -- diagnose and fix the failures.
|
|
6
6
|
|
|
7
7
|
## Context
|
|
@@ -10,7 +10,7 @@ The repo can have multiple PR checks/workflows (project CI plus Night Watch auto
|
|
|
10
10
|
Common examples include `typecheck`, `lint`, `test`, `build`, `verify`, `executor`, `qa`, and `audit`.
|
|
11
11
|
Treat `gh pr checks <number> --json name,state,conclusion` as the source of truth for which checks failed.
|
|
12
12
|
|
|
13
|
-
A PR needs attention if **any** of the following: merge conflicts present, review score below 80, or any CI job failed.
|
|
13
|
+
A PR needs attention if **any** of the following: merge conflicts present, no review score yet, review score below 80, unresolved review feedback, or any CI job failed.
|
|
14
14
|
|
|
15
15
|
## PRD Context
|
|
16
16
|
|
|
@@ -21,7 +21,7 @@ If current PR code or review feedback conflicts with the PRD context, call out t
|
|
|
21
21
|
## Important: Early Exit
|
|
22
22
|
|
|
23
23
|
- If there are **no open PRs** on `night-watch/` or `feat/` branches, **stop immediately** and report "No PRs to review."
|
|
24
|
-
- If all open PRs have **no merge conflicts**, **passing CI**,
|
|
24
|
+
- If all open PRs have **no merge conflicts**, **passing CI**, **review score >= 80**, and **no unresolved review feedback**, **stop immediately** and report "All PRs are in good shape."
|
|
25
25
|
- If a PR has no review score yet, it needs a first review — do NOT skip it.
|
|
26
26
|
- Do **NOT** loop or retry. Process each PR **once** per run. After processing all PRs, stop.
|
|
27
27
|
- Do **NOT** re-check PRs after pushing fixes -- the CI will re-run automatically on the next push.
|
|
@@ -90,8 +90,8 @@ Parse the review score from the comment body. Look for patterns like:
|
|
|
90
90
|
Extract the numeric score. If multiple comments have scores, use the **most recent** one.
|
|
91
91
|
|
|
92
92
|
3. **Determine if PR needs work**:
|
|
93
|
-
- If no merge conflicts **AND** score >= 80 **AND** all CI checks pass --> skip this PR.
|
|
94
|
-
- If merge conflicts present **OR** score < 80 **OR** any CI check failed --> fix the issues.
|
|
93
|
+
- If no merge conflicts **AND** score >= 80 **AND** no unresolved review feedback **AND** all CI checks pass --> skip this PR.
|
|
94
|
+
- If merge conflicts present **OR** score < 80 **OR** unresolved review feedback exists **OR** any CI check failed --> fix the issues.
|
|
95
95
|
|
|
96
96
|
4. **Fix the PR**:
|
|
97
97
|
|
|
@@ -122,8 +122,9 @@ Parse the review score from the comment body. Look for patterns like:
|
|
|
122
122
|
- Push the clean branch: `git push --force-with-lease origin <branch-name>`
|
|
123
123
|
- **Do NOT leave any conflict markers (`<<<<<<<`, `=======`, `>>>>>>>`) in any file.**
|
|
124
124
|
|
|
125
|
-
c. **Address review feedback** (if score < 80):
|
|
125
|
+
c. **Address review feedback** (if score < 80 or pending review feedback exists):
|
|
126
126
|
- Read the review comments carefully. Extract areas for improvement, bugs found, issues found, and specific file/line suggestions.
|
|
127
|
+
- If `pending review feedback` is greater than 0 in the cron-provided preflight data, inspect review conversations with `gh pr view <number> --comments` and the GitHub PR review UI/API as needed.
|
|
127
128
|
- For each review suggestion:
|
|
128
129
|
- If you agree, implement the change.
|
|
129
130
|
- If you do not agree, do not implement it blindly. Capture a short technical reason and include that reason in the PR comment.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jonit-dev/night-watch-cli",
|
|
3
|
-
"version": "1.8.12-beta.
|
|
3
|
+
"version": "1.8.12-beta.12",
|
|
4
4
|
"description": "AI agent that implements your specs, opens PRs, and reviews code overnight. Queue GitHub issues or PRDs, wake up to pull requests.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|