@blogic-cz/agent-tools 1.7.4 → 1.7.5
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.
|
@@ -243,7 +243,7 @@ export declare const prChecksCommand: Command.Command<"checks", {
|
|
|
243
243
|
readonly repo: Option.Option<string>;
|
|
244
244
|
readonly timeout: number;
|
|
245
245
|
readonly watch: boolean;
|
|
246
|
-
}, {}, import("#gh/errors").
|
|
246
|
+
}, {}, import("#gh/errors").GitHubTimeoutError | import("#gh/service").GhError, GitHubService>;
|
|
247
247
|
export declare const prChecksFailedCommand: Command.Command<"checks-failed", {
|
|
248
248
|
readonly format: "json" | "toon";
|
|
249
249
|
readonly pr: Option.Option<number>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../../src/gh-tool/pr/commands.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAe,MAAM,YAAY,CAAC;AAClD,OAAO,EAAW,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEjD,OAAO,KAAK,EAAE,WAAW,EAAkB,MAAM,WAAW,CAAC;AAG7D,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../../src/gh-tool/pr/commands.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,10 +4,30 @@ import type { GitHubAuthError, GitHubNotFoundError } from "#gh/errors";
|
|
|
4
4
|
import { GitHubCommandError, GitHubMergeError, GitHubTimeoutError } from "#gh/errors";
|
|
5
5
|
import { GitHubService } from "#gh/service";
|
|
6
6
|
export declare const NO_CHECKS_REPORTED_RE: RegExp;
|
|
7
|
+
export type CheckReport = {
|
|
8
|
+
checksStatus: "reported";
|
|
9
|
+
checks: CheckResult[];
|
|
10
|
+
} | {
|
|
11
|
+
checksStatus: "none_reported";
|
|
12
|
+
reason: string;
|
|
13
|
+
checks: null;
|
|
14
|
+
};
|
|
7
15
|
export declare const fetchCheckResults: (pr: number | null, cache?: {
|
|
8
16
|
headSha: string;
|
|
9
17
|
watchPending?: boolean;
|
|
10
18
|
} | undefined) => Effect.Effect<CheckResult[], GitHubAuthError | GitHubCommandError | GitHubNotFoundError, GitHubService>;
|
|
19
|
+
export declare const fetchCheckReport: (pr: number | null, cache?: {
|
|
20
|
+
headSha: string;
|
|
21
|
+
watchPending?: boolean;
|
|
22
|
+
} | undefined) => Effect.Effect<{
|
|
23
|
+
checksStatus: "reported";
|
|
24
|
+
checks: CheckResult[];
|
|
25
|
+
reason?: undefined;
|
|
26
|
+
} | {
|
|
27
|
+
checksStatus: "none_reported";
|
|
28
|
+
reason: string;
|
|
29
|
+
checks: null;
|
|
30
|
+
}, GitHubAuthError | GitHubCommandError | GitHubNotFoundError, GitHubService>;
|
|
11
31
|
export declare const fetchPRView: (prNumber: number | null) => Effect.Effect<{
|
|
12
32
|
number: number;
|
|
13
33
|
url: string;
|
|
@@ -288,6 +308,21 @@ export declare const fetchChecksForCommand: (pr: number | null, watch: boolean,
|
|
|
288
308
|
hint: string;
|
|
289
309
|
nextCommands: string[];
|
|
290
310
|
}, GitHubAuthError | GitHubCommandError | GitHubNotFoundError | GitHubTimeoutError, GitHubService>;
|
|
311
|
+
export declare const fetchChecksBatch: (prs: readonly number[]) => Effect.Effect<({
|
|
312
|
+
checksStatus: "reported";
|
|
313
|
+
checks: CheckResult[];
|
|
314
|
+
reason?: undefined;
|
|
315
|
+
pr: number;
|
|
316
|
+
state: string;
|
|
317
|
+
headSha: string | null;
|
|
318
|
+
} | {
|
|
319
|
+
checksStatus: "none_reported";
|
|
320
|
+
reason: string;
|
|
321
|
+
checks: null;
|
|
322
|
+
pr: number;
|
|
323
|
+
state: string;
|
|
324
|
+
headSha: string | null;
|
|
325
|
+
})[], import("#gh/service").GhError, GitHubService>;
|
|
291
326
|
export declare const watchPRs: (prs: readonly number[], options: {
|
|
292
327
|
intervalSeconds: number;
|
|
293
328
|
timeoutSeconds: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../src/gh-tool/pr/core.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,MAAM,EAAkB,MAAM,QAAQ,CAAC;AAG1E,OAAO,KAAK,EACV,cAAc,EACd,WAAW,EACX,iBAAiB,EAEjB,WAAW,EACX,aAAa,EACb,MAAM,EAGN,iBAAiB,EAIlB,MAAM,WAAW,CAAC;AAEnB,OAAO,KAAK,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACtF,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../src/gh-tool/pr/core.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,MAAM,EAAkB,MAAM,QAAQ,CAAC;AAG1E,OAAO,KAAK,EACV,cAAc,EACd,WAAW,EACX,iBAAiB,EAEjB,WAAW,EACX,aAAa,EACb,MAAM,EAGN,iBAAiB,EAIlB,MAAM,WAAW,CAAC;AAEnB,OAAO,KAAK,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACtF,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAwP5C,eAAO,MAAM,qBAAqB,QAAwB,CAAC;AAW3D,MAAM,MAAM,WAAW,GACnB;IAAE,YAAY,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,WAAW,EAAE,CAAA;CAAE,GACnD;IAAE,YAAY,EAAE,eAAe,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,IAAI,CAAA;CAAE,CAAC;AA2BpE,eAAO,MAAM,iBAAiB;aAET,MAAM;mBAAiB,OAAO;yHAIjD,CAAC;AAEH,eAAO,MAAM,gBAAgB;aAER,MAAM;mBAAiB,OAAO;;;;;;;;;6EA4EjD,CAAC;AAoKH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;iBAYuC,MAAM;;;;gDAOnE,CAAC;AAEH,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;iBAT4C,MAAM;;;;gDAwBnE,CAAC;AAEH,eAAO,MAAM,cAAc;UAiBf,MAAM;cACI,cAAc,EAAE;;;;;UAkI1B,QAAQ;QACK,MAAM;;;;;UAKrB,UAAU;;yFAGlB,CAAC;AAEH,eAAO,MAAM,OAAO;WACX,MAAM;WACN,MAAM;YACL,MAAM,GAAG,IAAI;UACf,MAAM,GAAG,IAAI;UACb,MAAM,GAAG,IAAI;YACX,MAAM,GAAG,IAAI;2EAkBrB,CAAC;AAMH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;iBAvNkC,MAAM;;;;gDAsPnE,CAAC;AAEH,eAAO,MAAM,QAAQ;UACb,MAAM,GAAG,IAAI;WACZ,MAAM;UACP,MAAM;WACL,OAAO;UACR,MAAM,GAAG,IAAI;qBACF,OAAO;;;;;;;;;;;;;;;;iBA9PqC,MAAM;;;;;mHAyZnE,CAAC;AAkFH,eAAO,MAAM,OAAO;QACd,MAAM;cACA,aAAa;kBACT,OAAO;aACZ,OAAO;sBACE,MAAM;iGA0WxB,CAAC;AAEH,eAAO,MAAM,OAAO;QACd,MAAM;aACD,MAAM,GAAG,IAAI;kBACR,OAAO;;;;;;;;;;;;;;;;iBA/1BwC,MAAM;;;;gDAg3BnE,CAAC;AAEH,eAAO,MAAM,OAAO;QAAkD,MAAM,GAAG,IAAI;;;;;;;;;;;;;;;;iBAl3BpB,MAAM;;;;;gDAi4BnE,CAAC;AAEH,eAAO,MAAM,OAAO;QAAkD,MAAM,GAAG,IAAI;;;;;;;;;;;;;;;;iBAn4BpB,MAAM;;;;;gDAg5BnE,CAAC;AAEH,eAAO,MAAM,MAAM;QACb,MAAM;WACH,MAAM,GAAG,IAAI;UACd,MAAM,GAAG,IAAI;UACb,MAAM,GAAG,IAAI;;;;;;;;;;;;;;;;iBAt5B0C,MAAM;;;;gDA88BnE,CAAC;AAEH,eAAO,MAAM,WAAW,6NA4FtB,CAAC;AAIH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;gDA2DxB,CAAC;AAEH,eAAO,MAAM,sBAAsB,GAAI,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,WAChD,CAAC,WACD,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,WACtC,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,aACpC,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,OAAO,KAC1C,MAAM,CAAC,MAAM,CAAC;IAAE,KAAK,EAAE,CAAC,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAU5D,CAAC;AAEL,eAAO,MAAM,iBAAiB;;iBAtyCJ,MAAM,GAAG,IAAI;iBAAW,MAAM,GAAG,IAAI;;;;;QAgJzD,KAAK;QACL,MAAM;QACN,OAAO;QACP,MAAM;;;;;;gDAkrCV,CAAC;AAEH,eAAO,MAAM,qBAAqB;;iBAv0CR,MAAM,GAAG,IAAI;iBAAW,MAAM,GAAG,IAAI;;;;;QAgJzD,KAAK;QACL,MAAM;QACN,OAAO;QACP,MAAM;;;;;;kGAotCV,CAAC;AAqBH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;mDA+B3B,CAAC;AAEH,eAAO,MAAM,QAAQ;qBAES,MAAM;oBAAkB,MAAM;YAAU,UAAU;iBAChE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,4GAoO7D,CAAC;AAkEH,eAAO,MAAM,WAAW;YAGH,OAAO;qBAAmB,MAAM;gGAwLnD,CAAC"}
|
package/package.json
CHANGED
|
@@ -40,6 +40,7 @@ import {
|
|
|
40
40
|
editPR,
|
|
41
41
|
fetchPRView,
|
|
42
42
|
fetchChecks,
|
|
43
|
+
fetchChecksBatch,
|
|
43
44
|
fetchChecksForCommand,
|
|
44
45
|
fetchFailedChecks,
|
|
45
46
|
listPRs,
|
|
@@ -877,14 +878,7 @@ export const prChecksCommand = Command.make(
|
|
|
877
878
|
}
|
|
878
879
|
}
|
|
879
880
|
const numbers = yield* parsePrNumbers(batch);
|
|
880
|
-
const results = yield*
|
|
881
|
-
numbers.map((n) =>
|
|
882
|
-
fetchChecks(n, false, failFast, timeout, format === "json").pipe(
|
|
883
|
-
Effect.map((checks) => ({ pr: n, checks })),
|
|
884
|
-
),
|
|
885
|
-
),
|
|
886
|
-
{ concurrency: 5 },
|
|
887
|
-
);
|
|
881
|
+
const results = yield* fetchChecksBatch(numbers);
|
|
888
882
|
yield* logFormatted({ count: results.length, prs: results }, format);
|
|
889
883
|
return;
|
|
890
884
|
}
|
package/src/gh-tool/pr/core.ts
CHANGED
|
@@ -265,7 +265,8 @@ const fetchWorkflowRunFailureContext = Effect.fn("pr.fetchWorkflowRunFailureCont
|
|
|
265
265
|
});
|
|
266
266
|
|
|
267
267
|
// `gh pr checks` exits 1 on an *empty* result ("no checks reported on the 'x' branch"). Zero checks
|
|
268
|
-
// is an ordinary state, so
|
|
268
|
+
// is an ordinary state, so it is not an error, but it is also not an empty list: a PR with green
|
|
269
|
+
// checks (sabservis/nexus-be#1396) once came back empty.
|
|
269
270
|
export const NO_CHECKS_REPORTED_RE = /no checks reported/i;
|
|
270
271
|
// `gh` reports "no checks reported" both for the seconds after a push, before its checks
|
|
271
272
|
// register, and forever for a PR that has none — the message cannot tell them apart. So the
|
|
@@ -274,6 +275,12 @@ export const NO_CHECKS_REPORTED_RE = /no checks reported/i;
|
|
|
274
275
|
// for the caller's whole --timeout.
|
|
275
276
|
const CHECK_REGISTRATION_POLL_SECONDS = 5;
|
|
276
277
|
const CHECK_REGISTRATION_GRACE_SECONDS = 60;
|
|
278
|
+
const NO_CHECKS_REPORTED_REASON =
|
|
279
|
+
"gh reported no checks for this head. Checks may not be registered yet, the PR may have no CI, or GitHub returned an empty rollup. This is not a CI verdict.";
|
|
280
|
+
|
|
281
|
+
export type CheckReport =
|
|
282
|
+
| { checksStatus: "reported"; checks: CheckResult[] }
|
|
283
|
+
| { checksStatus: "none_reported"; reason: string; checks: null };
|
|
277
284
|
|
|
278
285
|
const summarizeFailedStepEntries = (entries: Array<{ step: string; message: string }>) => {
|
|
279
286
|
const selected = entries
|
|
@@ -303,6 +310,14 @@ const summarizeFailedStepEntries = (entries: Array<{ step: string; message: stri
|
|
|
303
310
|
export const fetchCheckResults = Effect.fn("pr.fetchCheckResults")(function* (
|
|
304
311
|
pr: number | null,
|
|
305
312
|
cache?: { headSha: string; watchPending?: boolean },
|
|
313
|
+
) {
|
|
314
|
+
const report = yield* fetchCheckReport(pr, cache);
|
|
315
|
+
return report.checks ?? [];
|
|
316
|
+
});
|
|
317
|
+
|
|
318
|
+
export const fetchCheckReport = Effect.fn("pr.fetchCheckReport")(function* (
|
|
319
|
+
pr: number | null,
|
|
320
|
+
cache?: { headSha: string; watchPending?: boolean },
|
|
306
321
|
) {
|
|
307
322
|
const gh = yield* GitHubService;
|
|
308
323
|
|
|
@@ -339,7 +354,8 @@ export const fetchCheckResults = Effect.fn("pr.fetchCheckResults")(function* (
|
|
|
339
354
|
),
|
|
340
355
|
catch: () => null,
|
|
341
356
|
}).pipe(Effect.orElseSucceed(() => null));
|
|
342
|
-
if (cached !== null)
|
|
357
|
+
if (cached !== null)
|
|
358
|
+
return { checksStatus: "reported", checks: cached } satisfies CheckReport;
|
|
343
359
|
repo = cacheRepo;
|
|
344
360
|
identity = cacheIdentity;
|
|
345
361
|
}
|
|
@@ -352,10 +368,17 @@ export const fetchCheckResults = Effect.fn("pr.fetchCheckResults")(function* (
|
|
|
352
368
|
.pipe(
|
|
353
369
|
Effect.catchTag("GitHubCommandError", (error) =>
|
|
354
370
|
NO_CHECKS_REPORTED_RE.test(error.stderr) || NO_CHECKS_REPORTED_RE.test(error.message)
|
|
355
|
-
? Effect.succeed
|
|
371
|
+
? Effect.succeed(null)
|
|
356
372
|
: Effect.fail(error),
|
|
357
373
|
),
|
|
358
374
|
);
|
|
375
|
+
if (checks === null || checks.length === 0) {
|
|
376
|
+
return {
|
|
377
|
+
checksStatus: "none_reported",
|
|
378
|
+
reason: NO_CHECKS_REPORTED_REASON,
|
|
379
|
+
checks: null,
|
|
380
|
+
} satisfies CheckReport;
|
|
381
|
+
}
|
|
359
382
|
if (
|
|
360
383
|
cache !== undefined &&
|
|
361
384
|
pr !== null &&
|
|
@@ -369,7 +392,7 @@ export const fetchCheckResults = Effect.fn("pr.fetchCheckResults")(function* (
|
|
|
369
392
|
catch: () => undefined,
|
|
370
393
|
}).pipe(Effect.orElseSucceed(() => undefined));
|
|
371
394
|
}
|
|
372
|
-
return checks;
|
|
395
|
+
return { checksStatus: "reported", checks } satisfies CheckReport;
|
|
373
396
|
});
|
|
374
397
|
|
|
375
398
|
const buildFailedChecksReport = Effect.fn("pr.buildFailedChecksReport")(function* (
|
|
@@ -1782,6 +1805,39 @@ const watchPRState = Effect.fn("pr.watchPRState")(function* (pr: number) {
|
|
|
1782
1805
|
]);
|
|
1783
1806
|
});
|
|
1784
1807
|
|
|
1808
|
+
export const fetchChecksBatch = Effect.fn("pr.fetchChecksBatch")(function* (
|
|
1809
|
+
prs: readonly number[],
|
|
1810
|
+
) {
|
|
1811
|
+
return yield* Effect.forEach(
|
|
1812
|
+
prs,
|
|
1813
|
+
(pr) =>
|
|
1814
|
+
Effect.gen(function* () {
|
|
1815
|
+
const snapshot = yield* collectWithStableState(
|
|
1816
|
+
yield* watchPRState(pr),
|
|
1817
|
+
() => fetchCheckReport(pr),
|
|
1818
|
+
() => watchPRState(pr),
|
|
1819
|
+
(before, after) => before.headRefOid === after.headRefOid && before.state === after.state,
|
|
1820
|
+
);
|
|
1821
|
+
if (snapshot === null) {
|
|
1822
|
+
return yield* new GitHubCommandError({
|
|
1823
|
+
command: "gh-tool pr checks --prs",
|
|
1824
|
+
exitCode: 1,
|
|
1825
|
+
stderr: "",
|
|
1826
|
+
message: `PR #${pr} head changed repeatedly while collecting checks`,
|
|
1827
|
+
retryable: true,
|
|
1828
|
+
});
|
|
1829
|
+
}
|
|
1830
|
+
return {
|
|
1831
|
+
pr,
|
|
1832
|
+
state: snapshot.state.state,
|
|
1833
|
+
headSha: snapshot.state.headRefOid ?? null,
|
|
1834
|
+
...snapshot.value,
|
|
1835
|
+
};
|
|
1836
|
+
}),
|
|
1837
|
+
{ concurrency: 5 },
|
|
1838
|
+
);
|
|
1839
|
+
});
|
|
1840
|
+
|
|
1785
1841
|
export const watchPRs = Effect.fn("pr.watchPRs")(function* (
|
|
1786
1842
|
prs: readonly number[],
|
|
1787
1843
|
options: { intervalSeconds: number; timeoutSeconds: number; until?: "terminal" },
|