
























@@ -14,6 +14,41 @@ function escapeCommandValue(value) {
1414.replace(/:/g, "%3A");
1515}
161617+async function fetchProofComments({ owner, repo, issueNumber, tokens }) {
18+let lastError;
19+for (const token of tokens.filter(Boolean)) {
20+const comments = [];
21+try {
22+for (let page = 1; page <= 10; page += 1) {
23+const url = new URL(
24+`https://api.github.com/repos/${owner}/${repo}/issues/${issueNumber}/comments`,
25+);
26+url.searchParams.set("per_page", "100");
27+url.searchParams.set("page", String(page));
28+const response = await fetch(url, {
29+headers: {
30+Accept: "application/vnd.github+json",
31+Authorization: `Bearer ${token}`,
32+"X-GitHub-Api-Version": "2022-11-28",
33+},
34+});
35+if (!response.ok) {
36+throw new Error(`comments API returned ${response.status}`);
37+}
38+const pageComments = await response.json();
39+comments.push(...pageComments);
40+if (pageComments.length < 100) {
41+break;
42+}
43+}
44+return comments;
45+} catch (error) {
46+lastError = error;
47+}
48+}
49+throw lastError ?? new Error("No GitHub token available for proof comment lookup.");
50+}
51+1752const eventPath = process.env.GITHUB_EVENT_PATH;
1853if (!eventPath) {
1954console.error("::error title=Real behavior proof failed::GITHUB_EVENT_PATH is not set.");
@@ -51,41 +86,29 @@ if (evaluation.passed) {
5186process.exit(0);
5287}
538854-const token = appToken || process.env.GITHUB_TOKEN;
5589const repository = process.env.GITHUB_REPOSITORY;
56-if (token && repository && pullRequest.number) {
90+if ((appToken || process.env.GITHUB_TOKEN) && repository && pullRequest.number) {
5791const [owner, repo] = repository.split("/");
58-const comments = [];
59-for (let page = 1; page <= 10; page += 1) {
60-const url = new URL(
61-`https://api.github.com/repos/${owner}/${repo}/issues/${pullRequest.number}/comments`,
62-);
63-url.searchParams.set("per_page", "100");
64-url.searchParams.set("page", String(page));
65-const response = await fetch(url, {
66-headers: {
67-Accept: "application/vnd.github+json",
68-Authorization: `Bearer ${token}`,
69-"X-GitHub-Api-Version": "2022-11-28",
70-},
92+try {
93+const comments = await fetchProofComments({
94+ owner,
95+ repo,
96+issueNumber: pullRequest.number,
97+tokens: [appToken, process.env.GITHUB_TOKEN],
7198});
72-if (!response.ok) {
73-throw new Error(`Failed to fetch PR comments for proof verdicts: ${response.status}`);
74-}
75-const pageComments = await response.json();
76-comments.push(...pageComments);
77-if (pageComments.length < 100) {
78-break;
79-}
80-}
819982-const clawSweeperEvaluation = evaluateClawSweeperExactHeadProof({
83- pullRequest,
84- comments,
85-});
86-if (clawSweeperEvaluation.passed) {
87-console.log(clawSweeperEvaluation.reason);
88-process.exit(0);
100+const clawSweeperEvaluation = evaluateClawSweeperExactHeadProof({
101+ pullRequest,
102+ comments,
103+});
104+if (clawSweeperEvaluation.passed) {
105+console.log(clawSweeperEvaluation.reason);
106+process.exit(0);
107+}
108+} catch (error) {
109+console.warn(
110+`::warning title=Proof verdict comment lookup failed::${escapeCommandValue(error?.message ?? String(error))}`,
111+);
89112}
90113}
91114此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。