@blogic-cz/agent-tools 1.7.2 → 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/dist/credential-guard/index.d.ts.map +1 -1
- package/dist/gh-tool/api.d.ts.map +1 -1
- package/dist/gh-tool/config.d.ts +1 -0
- package/dist/gh-tool/config.d.ts.map +1 -1
- package/dist/gh-tool/errors.d.ts +2 -1
- package/dist/gh-tool/errors.d.ts.map +1 -1
- package/dist/gh-tool/issue/triage.d.ts +3 -3
- package/dist/gh-tool/issue/triage.d.ts.map +1 -1
- package/dist/gh-tool/pr/check-status-cache.d.ts +6 -0
- package/dist/gh-tool/pr/check-status-cache.d.ts.map +1 -0
- package/dist/gh-tool/pr/commands.d.ts +6 -5
- package/dist/gh-tool/pr/commands.d.ts.map +1 -1
- package/dist/gh-tool/pr/core.d.ts +9 -6
- package/dist/gh-tool/pr/core.d.ts.map +1 -1
- package/dist/gh-tool/service.d.ts.map +1 -1
- package/dist/gh-tool/types.d.ts +2 -0
- package/dist/gh-tool/types.d.ts.map +1 -1
- package/dist/gh-tool/workflow.d.ts.map +1 -1
- package/dist/shared/retry-transient.d.ts +1 -0
- package/dist/shared/retry-transient.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/credential-guard/index.ts +21 -1
- package/src/gh-tool/api.ts +40 -4
- package/src/gh-tool/config.ts +1 -0
- package/src/gh-tool/errors.ts +4 -2
- package/src/gh-tool/pr/check-status-cache.ts +142 -0
- package/src/gh-tool/pr/commands.ts +15 -8
- package/src/gh-tool/pr/core.ts +166 -28
- package/src/gh-tool/service.ts +29 -0
- package/src/gh-tool/types.ts +2 -0
- package/src/gh-tool/workflow.ts +9 -1
- package/src/shared/retry-transient.ts +7 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/credential-guard/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAmB,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAM5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAM/D,8CAA8C;AAC9C,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,+CAA+C;AAC/C,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B,CAAC;AAQF,+CAA+C;AAC/C,MAAM,MAAM,eAAe,GAAG;IAC5B,uBAAuB,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;IACxE,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC3E,aAAa,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC;IAC7C,aAAa,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC;IAC7C,sBAAsB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;IACrD,iBAAiB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACjF,kBAAkB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;IACjD,kBAAkB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;CACxD,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/credential-guard/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAmB,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAM5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAM/D,8CAA8C;AAC9C,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,+CAA+C;AAC/C,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B,CAAC;AAQF,+CAA+C;AAC/C,MAAM,MAAM,eAAe,GAAG;IAC5B,uBAAuB,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;IACxE,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC3E,aAAa,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC;IAC7C,aAAa,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC;IAC7C,sBAAsB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;IACrD,iBAAiB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACjF,kBAAkB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;IACjD,kBAAkB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;CACxD,CAAC;AAy+GF,6CAA6C;AAC7C,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAErE;AAED,2CAA2C;AAC3C,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAEpE;AAED,2CAA2C;AAC3C,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAEpE;AAMD;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,CAAC,EAAE,qBAAqB,GAAG,eAAe,CA8hBrF;AAQD,kEAAkE;AAClE,eAAO,MAAM,uBAAuB,UAjjID,SAAS,UAAU,UAAU,KAAK,IAijIM,CAAC;AAE5E,oDAAoD;AACpD,eAAO,MAAM,aAAa,YAnjIC,MAAM,KAAK;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,IAmjIjB,CAAC;AAExD,yEAAyE;AACzE,eAAO,MAAM,aAAa,aArjIE,MAAM,KAAK,OAqjIgB,CAAC;AAExD,yDAAyD;AACzD,eAAO,MAAM,aAAa,aAvjIE,MAAM,KAAK,OAujIgB,CAAC;AAExD,oEAAoE;AACpE,eAAO,MAAM,sBAAsB,YAzjIC,MAAM,KAAK,OAyjI0B,CAAC;AAE1E,iDAAiD;AACjD,eAAO,MAAM,iBAAiB,YA3jIC,MAAM,KAAK;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,IA2jIf,CAAC;AAEhE,wDAAwD;AACxD,eAAO,MAAM,kBAAkB,YA7jIC,MAAM,KAAK,OA6jIsB,CAAC;AAElE,8EAA8E;AAC9E,eAAO,MAAM,kBAAkB,YA/jIC,MAAM,KAAK,MAAM,GAAG,IA+jIa,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/gh-tool/api.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/gh-tool/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,MAAM,EAAE,MAAM,QAAQ,CAAC;AAIvC,OAAO,EAAE,eAAe,EAA2C,MAAM,UAAU,CAAC;AACpF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAW/C,MAAM,MAAM,iBAAiB,CAAC,CAAC,IAAI;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,CAAC,CAAC;CACT,CAAC;AAYF,eAAO,MAAM,kBAAkB,qDA6B7B,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC;IACrD,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B,CAAC;AAuHF,eAAO,MAAM,SAAS,GAAI,CAAC,QACnB,gBAAgB,KACrB,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,cAAc,CAyCjD,CAAC"}
|
package/dist/gh-tool/config.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export declare const DEFAULT_MERGE_STRATEGY: "squash";
|
|
2
2
|
export declare const DEFAULT_DELETE_BRANCH: true;
|
|
3
3
|
export declare const CI_CHECK_WATCH_TIMEOUT_MS: 600000;
|
|
4
|
+
export declare const PR_WATCH_TIMEOUT_SECONDS: 1800;
|
|
4
5
|
export declare const GRAPHQL_PAGE_SIZE: 100;
|
|
5
6
|
export declare const GH_BINARY: "gh";
|
|
6
7
|
export declare const MERGE_STRATEGIES: readonly ["squash", "merge", "rebase"];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/gh-tool/config.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,sBAAsB,EAAG,QAAiB,CAAC;AACxD,eAAO,MAAM,qBAAqB,MAAgB,CAAC;AACnD,eAAO,MAAM,yBAAyB,EAAG,MAAgB,CAAC;AAC1D,eAAO,MAAM,iBAAiB,EAAG,GAAY,CAAC;AAC9C,eAAO,MAAM,SAAS,EAAG,IAAa,CAAC;AAEvC,eAAO,MAAM,gBAAgB,YAAI,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAU,CAAC;AAEvE,eAAO,MAAM,aAAa,YAAI,SAAS,EAAE,SAAS,EAAE,iBAAiB,CAAU,CAAC;AAChF,eAAO,MAAM,oBAAoB,EAAG,SAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/gh-tool/config.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,sBAAsB,EAAG,QAAiB,CAAC;AACxD,eAAO,MAAM,qBAAqB,MAAgB,CAAC;AACnD,eAAO,MAAM,yBAAyB,EAAG,MAAgB,CAAC;AAC1D,eAAO,MAAM,wBAAwB,EAAG,IAAc,CAAC;AACvD,eAAO,MAAM,iBAAiB,EAAG,GAAY,CAAC;AAC9C,eAAO,MAAM,SAAS,EAAG,IAAa,CAAC;AAEvC,eAAO,MAAM,gBAAgB,YAAI,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAU,CAAC;AAEvE,eAAO,MAAM,aAAa,YAAI,SAAS,EAAE,SAAS,EAAE,iBAAiB,CAAU,CAAC;AAChF,eAAO,MAAM,oBAAoB,EAAG,SAAkB,CAAC"}
|
package/dist/gh-tool/errors.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Schema } from "effect";
|
|
1
|
+
import { Runtime, Schema } from "effect";
|
|
2
2
|
declare const GitHubCommandError_base: Schema.Class<GitHubCommandError, Schema.TaggedStruct<"GitHubCommandError", {
|
|
3
3
|
readonly message: Schema.String;
|
|
4
4
|
readonly command: Schema.String;
|
|
@@ -45,6 +45,7 @@ declare const GitHubTimeoutError_base: Schema.Class<GitHubTimeoutError, Schema.T
|
|
|
45
45
|
readonly retryable: Schema.optionalKey<Schema.Boolean>;
|
|
46
46
|
}>, import("effect/Cause").YieldableError>;
|
|
47
47
|
export declare class GitHubTimeoutError extends GitHubTimeoutError_base {
|
|
48
|
+
readonly [Runtime.errorExitCode] = 124;
|
|
48
49
|
}
|
|
49
50
|
export type GitHubServiceError = GitHubCommandError | GitHubNotFoundError | GitHubAuthError | GitHubMergeError | GitHubTimeoutError;
|
|
50
51
|
export type GitHubApiError = GitHubCommandError | GitHubAuthError | GitHubNotFoundError;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/gh-tool/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/gh-tool/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;;;;;;;;;;AAEzC,qBAAa,kBAAmB,SAAQ,uBAWvC;CAAG;;;;;;;;;AAEJ,qBAAa,mBAAoB,SAAQ,wBAUxC;CAAG;;;;;;;AAEJ,qBAAa,eAAgB,SAAQ,oBAKnC;CAAG;;;;;;;;AAEL,qBAAa,gBAAiB,SAAQ,qBAYpC;CAAG;;;;;;;;AAEL,qBAAa,kBAAmB,SAAQ,uBASvC;IACC,QAAQ,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO;CACxC;AAED,MAAM,MAAM,kBAAkB,GAC1B,kBAAkB,GAClB,mBAAmB,GACnB,eAAe,GACf,gBAAgB,GAChB,kBAAkB,CAAC;AAEvB,MAAM,MAAM,cAAc,GAAG,kBAAkB,GAAG,eAAe,GAAG,mBAAmB,CAAC"}
|
|
@@ -68,11 +68,11 @@ export declare const collectLinkedPullRequestNumbers: (body: string, comments: r
|
|
|
68
68
|
export declare const fetchIssueSnapshot: (opts: {
|
|
69
69
|
issue: number;
|
|
70
70
|
owner: string | null;
|
|
71
|
-
}) => Effect.Effect<IssueSnapshot, import("#gh/service").GhError, GitHubService>;
|
|
71
|
+
}) => Effect.Effect<IssueSnapshot, import("../errors").GitHubTimeoutError | import("#gh/service").GhError, GitHubService>;
|
|
72
72
|
export declare const fetchIssueSnapshotBatch: (opts: {
|
|
73
73
|
issues: readonly number[];
|
|
74
74
|
owner: string | null;
|
|
75
|
-
}) => Effect.Effect<IssueSnapshot[], import("#gh/service").GhError, GitHubService>;
|
|
75
|
+
}) => Effect.Effect<IssueSnapshot[], import("../errors").GitHubTimeoutError | import("#gh/service").GhError, GitHubService>;
|
|
76
76
|
export declare const issueTriageCommand: Command.Command<"triage", {
|
|
77
77
|
readonly format: "json" | "toon";
|
|
78
78
|
readonly issue: number;
|
|
@@ -84,6 +84,6 @@ export declare const issueSnapshotBatchCommand: Command.Command<"snapshot-batch"
|
|
|
84
84
|
readonly issues: string;
|
|
85
85
|
readonly owner: Option.Option<string>;
|
|
86
86
|
readonly repo: Option.Option<string>;
|
|
87
|
-
}, {}, import("#gh/service").GhError, GitHubService>;
|
|
87
|
+
}, {}, import("../errors").GitHubTimeoutError | import("#gh/service").GhError, GitHubService>;
|
|
88
88
|
export {};
|
|
89
89
|
//# sourceMappingURL=triage.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"triage.d.ts","sourceRoot":"","sources":["../../../src/gh-tool/issue/triage.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"triage.d.ts","sourceRoot":"","sources":["../../../src/gh-tool/issue/triage.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { Context } from "effect";
|
|
2
|
+
import type { CheckResult } from "#gh/types";
|
|
3
|
+
export declare const CheckStatusCacheDirectory: Context.Reference<string | undefined>;
|
|
4
|
+
export declare const readCheckStatusCache: (identity: string, repo: string, pr: number, headSha: string, now: number, watchPending?: boolean, directory?: string) => Promise<CheckResult[] | null>;
|
|
5
|
+
export declare const writeCheckStatusCache: (identity: string, repo: string, pr: number, headSha: string, checks: CheckResult[], fetchedAt: number, directory?: string) => Promise<void>;
|
|
6
|
+
//# sourceMappingURL=check-status-cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check-status-cache.d.ts","sourceRoot":"","sources":["../../../src/gh-tool/pr/check-status-cache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAMjC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAM7C,eAAO,MAAM,yBAAyB,uCAGrC,CAAC;AAqBF,eAAO,MAAM,oBAAoB,aACrB,MAAM,QACV,MAAM,MACR,MAAM,WACD,MAAM,OACV,MAAM,iDAGV,OAAO,CAAC,WAAW,EAAE,GAAG,IAAI,CA+C9B,CAAC;AAEF,eAAO,MAAM,qBAAqB,aACtB,MAAM,QACV,MAAM,MACR,MAAM,WACD,MAAM,UACP,WAAW,EAAE,aACV,MAAM,yBAEhB,OAAO,CAAC,IAAI,CAwCd,CAAC"}
|
|
@@ -159,7 +159,7 @@ export declare const fetchReviewTriage: (prNumber: number | null, format?: "json
|
|
|
159
159
|
unknown: number;
|
|
160
160
|
};
|
|
161
161
|
};
|
|
162
|
-
}, import("#gh/service").GhError, GitHubService>;
|
|
162
|
+
}, import("#gh/errors").GitHubTimeoutError | import("#gh/service").GhError, GitHubService>;
|
|
163
163
|
export declare const prViewCommand: Command.Command<"view", {
|
|
164
164
|
readonly format: "json" | "toon";
|
|
165
165
|
readonly pr: Option.Option<number>;
|
|
@@ -243,12 +243,13 @@ 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").GitHubAuthError | GitHubCommandError | import("#gh/errors").GitHubNotFoundError, GitHubService>;
|
|
246
|
+
}, {}, import("#gh/errors").GitHubAuthError | GitHubCommandError | import("#gh/errors").GitHubNotFoundError | import("#gh/errors").GitHubTimeoutError, GitHubService>;
|
|
247
247
|
export declare const prChecksFailedCommand: Command.Command<"checks-failed", {
|
|
248
248
|
readonly format: "json" | "toon";
|
|
249
249
|
readonly pr: Option.Option<number>;
|
|
250
250
|
readonly repo: Option.Option<string>;
|
|
251
251
|
readonly withLogs: boolean;
|
|
252
|
+
readonly fullLogs: boolean;
|
|
252
253
|
}, {}, import("#gh/service").GhError, GitHubService>;
|
|
253
254
|
export declare const prWatchCommand: Command.Command<"watch", {
|
|
254
255
|
readonly prs: string;
|
|
@@ -257,7 +258,7 @@ export declare const prWatchCommand: Command.Command<"watch", {
|
|
|
257
258
|
readonly interval: number;
|
|
258
259
|
readonly timeout: number;
|
|
259
260
|
readonly repo: Option.Option<string>;
|
|
260
|
-
}, {}, "timeout" | import("#gh/service").GhError, GitHubService>;
|
|
261
|
+
}, {}, "timeout" | import("#gh/errors").GitHubTimeoutError | import("#gh/service").GhError, GitHubService>;
|
|
261
262
|
export declare const prRerunChecksCommand: Command.Command<"rerun-checks", {
|
|
262
263
|
readonly format: "json" | "toon";
|
|
263
264
|
readonly pr: Option.Option<number>;
|
|
@@ -386,7 +387,7 @@ export declare const prReviewTriageCommand: Command.Command<"review-triage", {
|
|
|
386
387
|
readonly omit: Option.Option<string>;
|
|
387
388
|
readonly pr: Option.Option<number>;
|
|
388
389
|
readonly repo: Option.Option<string>;
|
|
389
|
-
}, {}, import("#gh/service").GhError, GitHubService>;
|
|
390
|
+
}, {}, import("#gh/errors").GitHubTimeoutError | import("#gh/service").GhError, GitHubService>;
|
|
390
391
|
export declare const prRequestReviewCommand: Command.Command<"request-review", {
|
|
391
392
|
readonly format: "json" | "toon";
|
|
392
393
|
readonly pr: number;
|
|
@@ -397,7 +398,7 @@ export declare const prReviewTriageBatchCommand: Command.Command<"review-triage-
|
|
|
397
398
|
readonly format: "json" | "toon";
|
|
398
399
|
readonly prs: string;
|
|
399
400
|
readonly repo: Option.Option<string>;
|
|
400
|
-
}, {}, import("#gh/service").GhError, GitHubService>;
|
|
401
|
+
}, {}, import("#gh/errors").GitHubTimeoutError | import("#gh/service").GhError, GitHubService>;
|
|
401
402
|
export declare const prReplyAndResolveCommand: Command.Command<"reply-and-resolve", {
|
|
402
403
|
readonly body: Option.Option<string>;
|
|
403
404
|
readonly bodyFile: Option.Option<string>;
|
|
@@ -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,qBAAqB,CAAC;AAC3D,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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"}
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import { Effect } from "effect";
|
|
2
2
|
import type { BranchPRDetail, CheckResult, FailedCheckDetail, MergeResult, MergeStrategy, PRInfo, RerunChecksReport } from "#gh/types";
|
|
3
3
|
import type { GitHubAuthError, GitHubNotFoundError } from "#gh/errors";
|
|
4
|
-
import { GitHubCommandError, GitHubMergeError } from "#gh/errors";
|
|
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 declare const fetchCheckResults: (pr: number | null
|
|
7
|
+
export declare const fetchCheckResults: (pr: number | null, cache?: {
|
|
8
|
+
headSha: string;
|
|
9
|
+
watchPending?: boolean;
|
|
10
|
+
} | undefined) => Effect.Effect<CheckResult[], GitHubAuthError | GitHubCommandError | GitHubNotFoundError, GitHubService>;
|
|
8
11
|
export declare const fetchPRView: (prNumber: number | null) => Effect.Effect<{
|
|
9
12
|
number: number;
|
|
10
13
|
url: string;
|
|
@@ -219,7 +222,7 @@ export declare const editPR: (opts: {
|
|
|
219
222
|
headSha: string | null;
|
|
220
223
|
baseSha: string | null;
|
|
221
224
|
}, import("#gh/service").GhError, GitHubService>;
|
|
222
|
-
export declare const fetchChecks: (pr: number | null, watch: boolean, failFast: boolean, timeoutSeconds: number, quiet?: any) => Effect.Effect<CheckResult[], GitHubAuthError | GitHubCommandError | GitHubNotFoundError, GitHubService>;
|
|
225
|
+
export declare const fetchChecks: (pr: number | null, watch: boolean, failFast: boolean, timeoutSeconds: number, quiet?: any) => Effect.Effect<CheckResult[], GitHubAuthError | GitHubCommandError | GitHubNotFoundError | GitHubTimeoutError, GitHubService>;
|
|
223
226
|
export declare const triggerChecks: (pr: number | null, workflow: string, fields: readonly string[]) => Effect.Effect<{
|
|
224
227
|
triggered: false;
|
|
225
228
|
pr: number;
|
|
@@ -249,7 +252,7 @@ export declare const collectWithStableState: <S, A, E1, R1, E2, R2>(initial: S,
|
|
|
249
252
|
state: S;
|
|
250
253
|
value: A;
|
|
251
254
|
} | null, E1 | E2, R1 | R2>;
|
|
252
|
-
export declare const fetchFailedChecks: (pr: number | null, withLogs?: any) => Effect.Effect<{
|
|
255
|
+
export declare const fetchFailedChecks: (pr: number | null, withLogs?: any, fullLogs?: any) => Effect.Effect<{
|
|
253
256
|
evidence: {
|
|
254
257
|
headSha: string | null;
|
|
255
258
|
baseSha: string | null;
|
|
@@ -284,12 +287,12 @@ export declare const fetchChecksForCommand: (pr: number | null, watch: boolean,
|
|
|
284
287
|
pendingChecks: CheckResult[];
|
|
285
288
|
hint: string;
|
|
286
289
|
nextCommands: string[];
|
|
287
|
-
}, GitHubAuthError | GitHubCommandError | GitHubNotFoundError, GitHubService>;
|
|
290
|
+
}, GitHubAuthError | GitHubCommandError | GitHubNotFoundError | GitHubTimeoutError, GitHubService>;
|
|
288
291
|
export declare const watchPRs: (prs: readonly number[], options: {
|
|
289
292
|
intervalSeconds: number;
|
|
290
293
|
timeoutSeconds: number;
|
|
291
294
|
until?: "terminal";
|
|
292
|
-
}, emit: (event: Record<string, unknown>) => Effect.Effect<void>) => Effect.Effect<undefined, "timeout" | import("#gh/service").GhError, GitHubService>;
|
|
295
|
+
}, emit: (event: Record<string, unknown>) => Effect.Effect<void>) => Effect.Effect<undefined, "timeout" | GitHubTimeoutError | import("#gh/service").GhError, GitHubService>;
|
|
293
296
|
export declare const rerunChecks: (pr: number | null, failedOnly: boolean, options?: {
|
|
294
297
|
watch?: boolean;
|
|
295
298
|
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;
|
|
1
|
+
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../src/gh-tool/pr/core.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/gh-tool/service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC5E,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAU,MAAM,QAAQ,CAAC;AAExD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAIxC,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAGpF,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AACjE,OAAO,EAAE,aAAa,EAA4C,MAAM,SAAS,CAAC;AA4DlF,MAAM,MAAM,QAAQ,GAAG;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,OAAO,GAAG,kBAAkB,GAAG,eAAe,GAAG,mBAAmB,CAAC;;oBAK7D,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC;wBAChD,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC;yBAC/C,CACnB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC,KAC9C,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC;yBACf,CAAC,CAAC,EACrB,IAAI,EAAE,gBAAgB,KACnB,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC;4BACzB,MAAM,MAAM,CAAC,MAAM,CAAC,gBAAgB,GAAG,SAAS,EAAE,KAAK,CAAC;0BAC1D,MAAM,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC;6BACnC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAC/B,MAAM,EAAE,MAAM,GAAG,IAAI,EACrB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAC3B,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,kBAAkB,EAAE,CAAC,CAAC;;AAjBpD,qBAAa,aAAc,SAAQ,kBAmBF;IAC/B,MAAM,CAAC,QAAQ,CAAC,KAAK,
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/gh-tool/service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC5E,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAU,MAAM,QAAQ,CAAC;AAExD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAIxC,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAGpF,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AACjE,OAAO,EAAE,aAAa,EAA4C,MAAM,SAAS,CAAC;AA4DlF,MAAM,MAAM,QAAQ,GAAG;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,OAAO,GAAG,kBAAkB,GAAG,eAAe,GAAG,mBAAmB,CAAC;;oBAK7D,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC;wBAChD,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC;yBAC/C,CACnB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC,KAC9C,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC;yBACf,CAAC,CAAC,EACrB,IAAI,EAAE,gBAAgB,KACnB,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC;4BACzB,MAAM,MAAM,CAAC,MAAM,CAAC,gBAAgB,GAAG,SAAS,EAAE,KAAK,CAAC;0BAC1D,MAAM,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC;6BACnC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAC/B,MAAM,EAAE,MAAM,GAAG,IAAI,EACrB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAC3B,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,kBAAkB,EAAE,CAAC,CAAC;;AAjBpD,qBAAa,aAAc,SAAQ,kBAmBF;IAC/B,MAAM,CAAC,QAAQ,CAAC,KAAK,6FAuTnB;CACH"}
|
package/dist/gh-tool/types.d.ts
CHANGED
|
@@ -114,6 +114,7 @@ export type FailedCheckJob = {
|
|
|
114
114
|
export type FailedCheckRunContext = {
|
|
115
115
|
runId: number;
|
|
116
116
|
attempt: number | null;
|
|
117
|
+
headSha: string | null;
|
|
117
118
|
url: string | null;
|
|
118
119
|
workflowName: string | null;
|
|
119
120
|
status: string;
|
|
@@ -200,6 +201,7 @@ export type FailedChecksReport = {
|
|
|
200
201
|
export type WorkflowRunDetail = {
|
|
201
202
|
databaseId: number;
|
|
202
203
|
attempt: number | null;
|
|
204
|
+
headSha: string | null;
|
|
203
205
|
url: string;
|
|
204
206
|
workflowName: string | null;
|
|
205
207
|
status: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/gh-tool/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC;AAE1D,MAAM,MAAM,MAAM,GAAG;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,WAAW,GAAG,aAAa,GAAG,SAAS,CAAC;CACpD,CAAC;AAEF,MAAM,MAAM,aAAa,GACrB;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACrC;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvD,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG;IAChC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAE,CAAC;IAC3C,cAAc,EAAE,UAAU,GAAG,mBAAmB,GAAG,iBAAiB,GAAG,EAAE,CAAC;IAC1E,cAAc,EAAE,aAAa,EAAE,CAAC;CACjC,CAAC;AAEF,eAAO,MAAM,cAAc,uEAA+D,CAAC;AAC3F,MAAM,MAAM,cAAc,GAAG,OAAO,cAAc,CAAC,IAAI,CAAC;AAExD,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,cAAc,EAAE,cAAc,CAAC;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,OAAO,CAAC;IACzB,aAAa,EAAE,OAAO,CAAC;IACvB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,2FAA2F;IAC3F,kBAAkB,EAAE,MAAM,EAAE,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,cAAc,EAAE,cAAc,CAAC;IAC/B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB;;;;;OAKG;IACH,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,eAAO,MAAM,cAAc,4CAAkD,CAAC;AAC9E,MAAM,MAAM,cAAc,GAAG,OAAO,cAAc,CAAC,IAAI,CAAC;AAExD,eAAO,MAAM,YAAY,6CAAmD,CAAC;AAC7E,MAAM,MAAM,YAAY,GAAG,OAAO,YAAY,CAAC,IAAI,CAAC;AAEpD,eAAO,MAAM,qBAAqB,sDAA4D,CAAC;AAC/F,MAAM,MAAM,qBAAqB,GAAG,OAAO,qBAAqB,CAAC,IAAI,CAAC;AAEtE,MAAM,MAAM,YAAY,GAAG;IACzB,EAAE,EAAE,cAAc,CAAC;IACnB,SAAS,EAAE,IAAI,CAAC;IAChB,cAAc,EAAE,SAAS,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,YAAY,CAAC;IACxB,GAAG,EAAE,qBAAqB,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,cAAc,EAAE,cAAc,CAAC;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,YAAY,GAAG,IAAI,CAAC;IACjC,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,cAAc,EAAE,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,WAAW,GAAG;IAC5C,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,GAAG,EAAE,qBAAqB,GAAG,IAAI,CAAC;IAClC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,YAAY,CAAC;CAC1B,CAAC;AAEF,eAAO,MAAM,oBAAoB,gIAQ/B,CAAC;AACH,MAAM,MAAM,oBAAoB,GAAG,OAAO,oBAAoB,CAAC,IAAI,CAAC;AAEpE,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,OAAO,GAAG,IAAI,CAAC;IAC7B,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;CACnC,CAAC;AAEF,eAAO,MAAM,uBAAuB,qEAA6D,CAAC;AAClG,MAAM,MAAM,uBAAuB,GAAG,OAAO,uBAAuB,CAAC,IAAI,CAAC;AAE1E,MAAM,MAAM,kBAAkB,GAC1B;IAAE,KAAK,EAAE,UAAU,CAAC;IAAC,SAAS,EAAE,YAAY,CAAA;CAAE,GAC9C;IAAE,KAAK,EAAE,YAAY,CAAC;IAAC,SAAS,EAAE,YAAY,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAChE;IAAE,KAAK,EAAE,aAAa,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE7C,eAAO,MAAM,gBAAgB,oKAS3B,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,OAAO,gBAAgB,CAAC,IAAI,CAAC;AAE5D,MAAM,MAAM,aAAa,GAAG;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,IAAI,EAAE,aAAa,EAAE,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,aAAa,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC/B,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,MAAM,EAAE,gBAAgB,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC5B,aAAa,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAAC;CAC1C,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,sBAAsB,GAAG,qBAAqB,GAAG,QAAQ,GAAG,eAAe,CAAC;IACrF,IAAI,CAAC,EAAE,cAAc,EAAE,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,EAAE;QAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC;IACpE,MAAM,EAAE,QAAQ,GAAG,aAAa,CAAC;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,YAAY,EAAE,iBAAiB,EAAE,CAAC;IAClC,aAAa,EAAE,WAAW,EAAE,CAAC;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,IAAI,EAAE,KAAK,CAAC;QACV,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;QAC1B,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,KAAK,CAAC;YACX,IAAI,EAAE,MAAM,CAAC;YACb,MAAM,EAAE,MAAM,CAAC;YACf,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;YAC1B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;YACzB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;SAC5B,CAAC,CAAC;KACJ,CAAC,CAAC;CACJ,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,aAAa,CAAC;IACxB,aAAa,EAAE,OAAO,CAAC;IACvB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,mFAAmF;IACnF,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,oFAAoF;IACpF,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,QAAQ,CAAC;IACf,EAAE,EAAE,MAAM,CAAC;CACZ,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,UAAU,CAAC;IACjB,GAAG,EAAE,MAAM,EAAE,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,OAAO,CAAC;IACtB,QAAQ,EAAE;QACR,MAAM,EAAE,MAAM,CAAC;QACf,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,QAAQ,GAAG,QAAQ,CAAC;KAC5B,GAAG,IAAI,CAAC;CACV,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,cAAc,EAAE,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,cAAc,GAAG,gBAAgB,GAAG,YAAY,CAAC;AAE9E,MAAM,MAAM,kBAAkB,GAAG;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,IAAI,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,gBAAgB,EAAE,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;IACnD,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,kBAAkB,EAAE,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,EAAE,WAAW,EAAE,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,OAAO,GAAG,eAAe,GAAG,sBAAsB,GAAG,gBAAgB,GAAG,gBAAgB,CAAC;IACjG,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,aAAa,CAAC;IACxB,IAAI,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACvE,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,sBAAsB,EAAE,OAAO,CAAC;CACjC,CAAC"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/gh-tool/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow.d.ts","sourceRoot":"","sources":["../../src/gh-tool/workflow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAe,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAY,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAIlD,OAAO,EAAsB,mBAAmB,EAAE,MAAM,UAAU,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,KAAK,EAAsC,YAAY,EAAE,MAAM,SAAS,CAAC;AAwChF,MAAM,MAAM,QAAQ,GAAG;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAqKF,eAAO,MAAM,gBAAgB;cACjB,MAAM;SACX,MAAM;YACH,aAAa,CAAC,MAAM,CAAC;UACvB,MAAM,GAAG,IAAI;;;;;;;8CAsBnB,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAKF,eAAO,MAAM,kBAAkB;cACnB,MAAM;SACX,MAAM;UACL,MAAM,GAAG,IAAI;6GAyBnB,CAAC;AAKH,eAAO,MAAM,qBAAqB;cACtB,MAAM;SACX,MAAM;UACL,MAAM,GAAG,IAAI;iBACN,WAAW,CAAC,MAAM,CAAC;kHAShC,CAAC;AAMH,eAAO,MAAM,gBAAgB,UACpB,MAAM,cACD;IACV,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,IAAI,EAAE,aAAa,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC,CAAC;CAClF,eACY,MAAM,GAAG,IAAI,UAClB,OAAO,kBACC,MAAM;;;;;;;;;;CAiBtB,CAAC;AAmHH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAOjD;AAED,KAAK,UAAU,GAAG;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B,CAAC;AAOF,eAAO,MAAM,aAAa,2GAWxB,CAAC;AAaH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,GAAE,aAAa,CAAC,UAAU,CAAM,GAAG,QAAQ,EAAE,CAE9F;AA6CD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,QAAQ,EAAE,GAAG,MAAM,CAa5D;AAgBD,eAAO,MAAM,kBAAkB,YAAa,SAAS,QAAQ,EAAE,KAAG,
|
|
1
|
+
{"version":3,"file":"workflow.d.ts","sourceRoot":"","sources":["../../src/gh-tool/workflow.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,5 +3,6 @@ export declare const retryTransient: <A, E, R>(opts: {
|
|
|
3
3
|
attempt: () => Effect.Effect<A, E, R>;
|
|
4
4
|
isTransient: (error: E) => boolean;
|
|
5
5
|
maxRetries: number;
|
|
6
|
+
retryDelayMs?: (error: E, attempt: number, fallbackMs: number) => number;
|
|
6
7
|
}) => Effect.Effect<A, E, R>;
|
|
7
8
|
//# sourceMappingURL=retry-transient.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"retry-transient.d.ts","sourceRoot":"","sources":["../../src/shared/retry-transient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,MAAM,EAAE,MAAM,QAAQ,CAAC;AAI1C,eAAO,MAAM,cAAc,GAAI,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ;IAC5C,OAAO,EAAE,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACtC,WAAW,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC;IACnC,UAAU,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"retry-transient.d.ts","sourceRoot":"","sources":["../../src/shared/retry-transient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,MAAM,EAAE,MAAM,QAAQ,CAAC;AAI1C,eAAO,MAAM,cAAc,GAAI,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ;IAC5C,OAAO,EAAE,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACtC,WAAW,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,MAAM,CAAC;CAC1E,KAAG,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAkBxB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1174,6 +1174,24 @@ function hasProvedPythonCompileInvocation(command: string): boolean {
|
|
|
1174
1174
|
);
|
|
1175
1175
|
}
|
|
1176
1176
|
|
|
1177
|
+
/** Only literal navigation may precede an unqualified writer; shell state can change what runs. */
|
|
1178
|
+
function isLiteralWriterHeader(command: string, pipelines: string[][][]): boolean {
|
|
1179
|
+
const commands = pipelines.flat();
|
|
1180
|
+
const writer = commands.at(-1);
|
|
1181
|
+
return (
|
|
1182
|
+
!command.includes("\r") &&
|
|
1183
|
+
pipelines.at(-1)?.length === 1 &&
|
|
1184
|
+
(writer?.[0] === "cat" || writer?.[0] === "tee") &&
|
|
1185
|
+
commands
|
|
1186
|
+
.slice(0, -1)
|
|
1187
|
+
.every(
|
|
1188
|
+
(words) =>
|
|
1189
|
+
(words[0] === "cd" && isStaticNavigationCommand(words)) ||
|
|
1190
|
+
(words.length === 1 && words[0] === "pwd"),
|
|
1191
|
+
)
|
|
1192
|
+
);
|
|
1193
|
+
}
|
|
1194
|
+
|
|
1177
1195
|
/** Move a complete, literal Python stdin program into the existing inline argv boundary. */
|
|
1178
1196
|
function normalizeProgramHeredocs(command: string, depth = 0): string {
|
|
1179
1197
|
if (depth >= 32 || new TextEncoder().encode(command).byteLength > 65_536) return command;
|
|
@@ -1185,8 +1203,9 @@ function normalizeProgramHeredocs(command: string, depth = 0): string {
|
|
|
1185
1203
|
const last = parsed.pipelines.at(-1)?.at(-1);
|
|
1186
1204
|
const argv = last ? unwrapStaticCommand(last) : [];
|
|
1187
1205
|
const name = argv[0]?.split("/").at(-1);
|
|
1206
|
+
// A quoted delimiter disables expansion, so a first cat/tee body is data too.
|
|
1188
1207
|
if (
|
|
1189
|
-
depth > 0 &&
|
|
1208
|
+
(depth > 0 || (heredoc.quoted && isLiteralWriterHeader(command, parsed.pipelines))) &&
|
|
1190
1209
|
((name === "cat" && argv.slice(1).every((arg) => arg === "--" || !arg.startsWith("-"))) ||
|
|
1191
1210
|
(name === "tee" &&
|
|
1192
1211
|
argv
|
|
@@ -3896,6 +3915,7 @@ export function createCredentialGuard(config?: CredentialGuardConfig): Credentia
|
|
|
3896
3915
|
}
|
|
3897
3916
|
|
|
3898
3917
|
function detectSleepPolling(command: string): string | null {
|
|
3918
|
+
command = normalizeProgramHeredocs(command);
|
|
3899
3919
|
if (!/\bsleep\s+\d+/.test(command)) return null;
|
|
3900
3920
|
|
|
3901
3921
|
for (const { pattern, suggestion } of DEFAULT_POLLING_DETECTION_RULES) {
|
package/src/gh-tool/api.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Effect } from "effect";
|
|
1
|
+
import { Clock, Effect } from "effect";
|
|
2
2
|
|
|
3
3
|
import { retryTransient } from "#shared/retry-transient";
|
|
4
4
|
|
|
@@ -68,6 +68,8 @@ export type GitHubApiRequest = {
|
|
|
68
68
|
};
|
|
69
69
|
|
|
70
70
|
const MAX_API_RETRIES = 2;
|
|
71
|
+
const MAX_RATE_LIMIT_WAIT_MS = 60_000;
|
|
72
|
+
const rateLimitRetryDelays = new WeakMap<GitHubCommandError, number>();
|
|
71
73
|
|
|
72
74
|
// Traverse only parsed JSON, never the caller's getters or toJSON hooks.
|
|
73
75
|
const decodedBodyText = (value: unknown): string => {
|
|
@@ -142,13 +144,43 @@ const githubApiAttempt = Effect.fn("gh.githubApiAttempt")(function* <T>(
|
|
|
142
144
|
});
|
|
143
145
|
}
|
|
144
146
|
|
|
145
|
-
|
|
146
|
-
|
|
147
|
+
const now = yield* Clock.currentTimeMillis;
|
|
148
|
+
const resetSeconds = Number(response.headers.get("x-ratelimit-reset"));
|
|
149
|
+
const resetDelay =
|
|
150
|
+
Number.isFinite(resetSeconds) && resetSeconds > 0
|
|
151
|
+
? Math.max(0, resetSeconds * 1000 - now + 1000)
|
|
152
|
+
: undefined;
|
|
153
|
+
const retryAfter = response.headers.get("retry-after");
|
|
154
|
+
const retryAfterMs =
|
|
155
|
+
retryAfter === null
|
|
156
|
+
? undefined
|
|
157
|
+
: /^\d+(?:\.\d+)?$/.test(retryAfter)
|
|
158
|
+
? Number(retryAfter) * 1000
|
|
159
|
+
: Date.parse(retryAfter) - now;
|
|
160
|
+
const waitMs =
|
|
161
|
+
retryAfterMs !== undefined && Number.isFinite(retryAfterMs) && retryAfterMs >= 0
|
|
162
|
+
? retryAfterMs
|
|
163
|
+
: resetDelay;
|
|
164
|
+
const canWait = waitMs !== undefined && waitMs <= MAX_RATE_LIMIT_WAIT_MS;
|
|
165
|
+
const rateLimit =
|
|
166
|
+
response.status === 429 ||
|
|
167
|
+
(response.status === 403 &&
|
|
168
|
+
(response.headers.get("x-ratelimit-remaining") === "0" ||
|
|
169
|
+
/rate limit|secondary rate limit|abuse detection/i.test(
|
|
170
|
+
apiErrorMessage(parsed, response.status),
|
|
171
|
+
)));
|
|
172
|
+
|
|
173
|
+
const error = new GitHubCommandError({
|
|
174
|
+
message: rateLimit
|
|
175
|
+
? `${apiErrorMessage(parsed, response.status)}; reset time: ${resetDelay === undefined ? "unavailable" : new Date(resetSeconds * 1000).toISOString()}; remaining quota: ${response.headers.get("x-ratelimit-remaining") ?? "unavailable"}`
|
|
176
|
+
: apiErrorMessage(parsed, response.status),
|
|
147
177
|
command: `${method} ${opts.path}`,
|
|
148
178
|
exitCode: response.status,
|
|
149
179
|
stderr: text,
|
|
150
|
-
...(response.status >= 500 ? { retryable: true } : {}),
|
|
180
|
+
...(response.status >= 500 || (rateLimit && canWait) ? { retryable: true } : {}),
|
|
151
181
|
});
|
|
182
|
+
if (rateLimit && canWait && waitMs !== undefined) rateLimitRetryDelays.set(error, waitMs);
|
|
183
|
+
return yield* error;
|
|
152
184
|
});
|
|
153
185
|
|
|
154
186
|
// Mirrors GitHubService.runGh: replay a transient failure, and only for an idempotent read.
|
|
@@ -190,6 +222,10 @@ export const githubApi = <T>(
|
|
|
190
222
|
isTransient: (error) =>
|
|
191
223
|
error._tag === "GitHubCommandError" && error.retryable === true && request.method === "GET",
|
|
192
224
|
maxRetries: MAX_API_RETRIES,
|
|
225
|
+
retryDelayMs: (error, _attempt, fallbackMs) =>
|
|
226
|
+
error instanceof GitHubCommandError
|
|
227
|
+
? Math.max(fallbackMs, rateLimitRetryDelays.get(error) ?? 0)
|
|
228
|
+
: fallbackMs,
|
|
193
229
|
});
|
|
194
230
|
});
|
|
195
231
|
|
package/src/gh-tool/config.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export const DEFAULT_MERGE_STRATEGY = "squash" as const;
|
|
2
2
|
export const DEFAULT_DELETE_BRANCH = true as const;
|
|
3
3
|
export const CI_CHECK_WATCH_TIMEOUT_MS = 600_000 as const; // 10 minutes
|
|
4
|
+
export const PR_WATCH_TIMEOUT_SECONDS = 1_800 as const;
|
|
4
5
|
export const GRAPHQL_PAGE_SIZE = 100 as const;
|
|
5
6
|
export const GH_BINARY = "gh" as const;
|
|
6
7
|
|
package/src/gh-tool/errors.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Schema } from "effect";
|
|
1
|
+
import { Runtime, Schema } from "effect";
|
|
2
2
|
|
|
3
3
|
export class GitHubCommandError extends Schema.TaggedError<GitHubCommandError>()(
|
|
4
4
|
"GitHubCommandError",
|
|
@@ -55,7 +55,9 @@ export class GitHubTimeoutError extends Schema.TaggedError<GitHubTimeoutError>()
|
|
|
55
55
|
nextCommand: Schema.optionalKey(Schema.String),
|
|
56
56
|
retryable: Schema.optionalKey(Schema.Boolean),
|
|
57
57
|
},
|
|
58
|
-
) {
|
|
58
|
+
) {
|
|
59
|
+
readonly [Runtime.errorExitCode] = 124;
|
|
60
|
+
}
|
|
59
61
|
|
|
60
62
|
export type GitHubServiceError =
|
|
61
63
|
| GitHubCommandError
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import { Context } from "effect";
|
|
2
|
+
import { createHash, randomUUID } from "node:crypto";
|
|
3
|
+
import { chmod, mkdir, readFile, readdir, rename, rm, writeFile } from "node:fs/promises";
|
|
4
|
+
import { homedir } from "node:os";
|
|
5
|
+
import { join } from "node:path";
|
|
6
|
+
|
|
7
|
+
import type { CheckResult } from "#gh/types";
|
|
8
|
+
|
|
9
|
+
const CACHE_TTL_MS = 30_000;
|
|
10
|
+
const WATCH_PENDING_TTL_MS = 5_000;
|
|
11
|
+
const CACHE_DIR = join(homedir(), ".cache", "agent-tools", "gh-check-status-v1");
|
|
12
|
+
|
|
13
|
+
export const CheckStatusCacheDirectory = Context.Reference<string | undefined>(
|
|
14
|
+
"@agent-tools/CheckStatusCacheDirectory",
|
|
15
|
+
{ defaultValue: () => CACHE_DIR },
|
|
16
|
+
);
|
|
17
|
+
|
|
18
|
+
type CacheEntry = { fetchedAt: number; checks: CheckResult[] };
|
|
19
|
+
|
|
20
|
+
const keyFor = (identity: string, repo: string, pr: number, headSha: string) =>
|
|
21
|
+
createHash("sha256")
|
|
22
|
+
.update(`${identity}\n${repo.toLowerCase()}\n${pr}\n${headSha}`)
|
|
23
|
+
.digest("hex");
|
|
24
|
+
|
|
25
|
+
const validChecks = (value: unknown): value is CheckResult[] =>
|
|
26
|
+
Array.isArray(value) &&
|
|
27
|
+
value.every(
|
|
28
|
+
(item) =>
|
|
29
|
+
item !== null &&
|
|
30
|
+
typeof item === "object" &&
|
|
31
|
+
typeof item.name === "string" &&
|
|
32
|
+
typeof item.state === "string" &&
|
|
33
|
+
typeof item.bucket === "string" &&
|
|
34
|
+
typeof item.link === "string",
|
|
35
|
+
);
|
|
36
|
+
|
|
37
|
+
export const readCheckStatusCache = async (
|
|
38
|
+
identity: string,
|
|
39
|
+
repo: string,
|
|
40
|
+
pr: number,
|
|
41
|
+
headSha: string,
|
|
42
|
+
now: number,
|
|
43
|
+
watchPending = false,
|
|
44
|
+
directory = CACHE_DIR,
|
|
45
|
+
): Promise<CheckResult[] | null> => {
|
|
46
|
+
try {
|
|
47
|
+
const prefix = keyFor(identity, repo, pr, headSha);
|
|
48
|
+
const files = (await readdir(directory)).filter((name) => name.startsWith(`${prefix}.`));
|
|
49
|
+
let latest: CacheEntry | null = null;
|
|
50
|
+
const entries = await Promise.all(
|
|
51
|
+
files.map(async (name) => {
|
|
52
|
+
try {
|
|
53
|
+
return {
|
|
54
|
+
name,
|
|
55
|
+
value: JSON.parse(await readFile(join(directory, name), "utf8")) as unknown,
|
|
56
|
+
};
|
|
57
|
+
} catch {
|
|
58
|
+
return { name, value: null };
|
|
59
|
+
}
|
|
60
|
+
}),
|
|
61
|
+
);
|
|
62
|
+
const staleFiles: string[] = [];
|
|
63
|
+
for (const { name, value: entry } of entries) {
|
|
64
|
+
if (!name.endsWith(".json")) continue;
|
|
65
|
+
if (entry === null || typeof entry !== "object") continue;
|
|
66
|
+
const candidate = entry as Partial<CacheEntry>;
|
|
67
|
+
const fetchedAt = candidate.fetchedAt;
|
|
68
|
+
if (
|
|
69
|
+
typeof fetchedAt !== "number" ||
|
|
70
|
+
!Number.isFinite(fetchedAt) ||
|
|
71
|
+
!validChecks(candidate.checks) ||
|
|
72
|
+
candidate.checks.length === 0
|
|
73
|
+
) {
|
|
74
|
+
staleFiles.push(join(directory, name));
|
|
75
|
+
continue;
|
|
76
|
+
}
|
|
77
|
+
if (fetchedAt > now || now - fetchedAt > CACHE_TTL_MS) {
|
|
78
|
+
staleFiles.push(join(directory, name));
|
|
79
|
+
continue;
|
|
80
|
+
}
|
|
81
|
+
if (watchPending && !candidate.checks.some((check) => check.bucket === "pending")) continue;
|
|
82
|
+
if (latest === null || fetchedAt > latest.fetchedAt)
|
|
83
|
+
latest = { fetchedAt, checks: candidate.checks };
|
|
84
|
+
}
|
|
85
|
+
await Promise.all(staleFiles.map((path) => rm(path, { force: true }).catch(() => undefined)));
|
|
86
|
+
if (latest === null || (watchPending && now - latest.fetchedAt > WATCH_PENDING_TTL_MS))
|
|
87
|
+
return null;
|
|
88
|
+
return latest.checks;
|
|
89
|
+
} catch {
|
|
90
|
+
return null;
|
|
91
|
+
}
|
|
92
|
+
};
|
|
93
|
+
|
|
94
|
+
export const writeCheckStatusCache = async (
|
|
95
|
+
identity: string,
|
|
96
|
+
repo: string,
|
|
97
|
+
pr: number,
|
|
98
|
+
headSha: string,
|
|
99
|
+
checks: CheckResult[],
|
|
100
|
+
fetchedAt: number,
|
|
101
|
+
directory = CACHE_DIR,
|
|
102
|
+
): Promise<void> => {
|
|
103
|
+
if (checks.length === 0) return;
|
|
104
|
+
try {
|
|
105
|
+
await mkdir(directory, { recursive: true, mode: 0o700 });
|
|
106
|
+
await chmod(directory, 0o700);
|
|
107
|
+
await Promise.all(
|
|
108
|
+
(await readdir(directory))
|
|
109
|
+
.filter((name) => name.endsWith(".json"))
|
|
110
|
+
.map(async (name) => {
|
|
111
|
+
const path = join(directory, name);
|
|
112
|
+
try {
|
|
113
|
+
const entry: unknown = JSON.parse(await readFile(path, "utf8"));
|
|
114
|
+
if (
|
|
115
|
+
entry !== null &&
|
|
116
|
+
typeof entry === "object" &&
|
|
117
|
+
"fetchedAt" in entry &&
|
|
118
|
+
typeof entry.fetchedAt === "number" &&
|
|
119
|
+
Number.isFinite(entry.fetchedAt) &&
|
|
120
|
+
fetchedAt - entry.fetchedAt <= CACHE_TTL_MS
|
|
121
|
+
)
|
|
122
|
+
return;
|
|
123
|
+
await rm(path, { force: true });
|
|
124
|
+
} catch {
|
|
125
|
+
/* Another writer can remove a stale snapshot first. */
|
|
126
|
+
}
|
|
127
|
+
}),
|
|
128
|
+
);
|
|
129
|
+
const prefix = keyFor(identity, repo, pr, headSha);
|
|
130
|
+
const temporary = join(directory, `${prefix}.${process.pid}.${randomUUID()}.tmp`);
|
|
131
|
+
const destination = join(
|
|
132
|
+
directory,
|
|
133
|
+
`${prefix}.${fetchedAt}.${process.pid}.${randomUUID()}.json`,
|
|
134
|
+
);
|
|
135
|
+
await writeFile(temporary, JSON.stringify({ fetchedAt, checks } satisfies CacheEntry), {
|
|
136
|
+
mode: 0o600,
|
|
137
|
+
});
|
|
138
|
+
await rename(temporary, destination);
|
|
139
|
+
} catch {
|
|
140
|
+
// A cache write must never replace a successful GitHub response with an error.
|
|
141
|
+
}
|
|
142
|
+
};
|
|
@@ -22,6 +22,7 @@ import {
|
|
|
22
22
|
} from "#gh/text-input";
|
|
23
23
|
import {
|
|
24
24
|
CI_CHECK_WATCH_TIMEOUT_MS,
|
|
25
|
+
PR_WATCH_TIMEOUT_SECONDS,
|
|
25
26
|
DEFAULT_DELETE_BRANCH,
|
|
26
27
|
DEFAULT_MERGE_STRATEGY,
|
|
27
28
|
DEFAULT_REVIEW_EVENT,
|
|
@@ -913,18 +914,20 @@ export const prChecksFailedCommand = Command.make(
|
|
|
913
914
|
),
|
|
914
915
|
repo: repoOption,
|
|
915
916
|
withLogs: Flag.Boolean("with-logs").pipe(
|
|
916
|
-
Flag.withDescription(
|
|
917
|
-
|
|
918
|
-
|
|
917
|
+
Flag.withDescription("Inline a short summary from each failed step"),
|
|
918
|
+
Flag.withDefault(false),
|
|
919
|
+
),
|
|
920
|
+
fullLogs: Flag.Boolean("full-logs").pipe(
|
|
921
|
+
Flag.withDescription("Inline all failed-step log lines; implies --with-logs"),
|
|
919
922
|
Flag.withDefault(false),
|
|
920
923
|
),
|
|
921
924
|
},
|
|
922
|
-
({ format, pr, repo, withLogs }) =>
|
|
925
|
+
({ format, pr, repo, withLogs, fullLogs }) =>
|
|
923
926
|
withRepo(
|
|
924
927
|
repo,
|
|
925
928
|
Effect.gen(function* () {
|
|
926
929
|
const prNumber = Option.getOrNull(pr);
|
|
927
|
-
const checks = yield* fetchFailedChecks(prNumber, withLogs);
|
|
930
|
+
const checks = yield* fetchFailedChecks(prNumber, withLogs, fullLogs);
|
|
928
931
|
yield* logFormatted(checks, format);
|
|
929
932
|
}),
|
|
930
933
|
),
|
|
@@ -938,13 +941,17 @@ export const prWatchCommand = Command.make(
|
|
|
938
941
|
format: Flag.Literals("format", ["jsonl"]).pipe(Flag.withDefault("jsonl")),
|
|
939
942
|
interval: Flag.Int("interval").pipe(
|
|
940
943
|
Flag.withDefault(5),
|
|
944
|
+
Flag.withDescription("Polling interval in seconds (default: 5, range: 1..86400)"),
|
|
941
945
|
Flag.filter(
|
|
942
|
-
(n) => n >= 1 && n <=
|
|
943
|
-
() => "--interval must be 1..
|
|
946
|
+
(n) => n >= 1 && n <= 86400,
|
|
947
|
+
() => "--interval must be 1..86400 seconds",
|
|
944
948
|
),
|
|
945
949
|
),
|
|
946
950
|
timeout: Flag.Int("timeout").pipe(
|
|
947
|
-
Flag.withDefault(
|
|
951
|
+
Flag.withDefault(PR_WATCH_TIMEOUT_SECONDS),
|
|
952
|
+
Flag.withDescription(
|
|
953
|
+
"Timeout in seconds (default: 1800, minimum 1); timeout is not a CI verdict",
|
|
954
|
+
),
|
|
948
955
|
Flag.filter(
|
|
949
956
|
(n) => n >= 1,
|
|
950
957
|
() => "--timeout must be at least 1 second",
|
package/src/gh-tool/pr/core.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Clock, Console, Duration, Effect, Option, Result } from "effect";
|
|
2
|
+
import { createHash } from "node:crypto";
|
|
2
3
|
|
|
3
4
|
import type {
|
|
4
5
|
BranchPRDetail,
|
|
@@ -17,10 +18,11 @@ import type {
|
|
|
17
18
|
} from "#gh/types";
|
|
18
19
|
|
|
19
20
|
import type { GitHubAuthError, GitHubNotFoundError } from "#gh/errors";
|
|
20
|
-
import { GitHubCommandError, GitHubMergeError } from "#gh/errors";
|
|
21
|
+
import { GitHubCommandError, GitHubMergeError, GitHubTimeoutError } from "#gh/errors";
|
|
21
22
|
import { GitHubService } from "#gh/service";
|
|
23
|
+
import { resolveGitHubToken } from "#gh/api";
|
|
22
24
|
import type { GhResult } from "#gh/service";
|
|
23
|
-
import { logText } from "#shared";
|
|
25
|
+
import { logFormatted, logText } from "#shared";
|
|
24
26
|
import { redactSensitiveText } from "#shared/content-security";
|
|
25
27
|
|
|
26
28
|
import type { ButStatusJson, PRViewJsonResult } from "./helpers";
|
|
@@ -37,6 +39,11 @@ import {
|
|
|
37
39
|
parseRawJobLogs,
|
|
38
40
|
readJobLogApi,
|
|
39
41
|
} from "#gh/workflow";
|
|
42
|
+
import {
|
|
43
|
+
CheckStatusCacheDirectory,
|
|
44
|
+
readCheckStatusCache,
|
|
45
|
+
writeCheckStatusCache,
|
|
46
|
+
} from "./check-status-cache";
|
|
40
47
|
|
|
41
48
|
const CHECK_JSON_FIELDS = "name,state,bucket,link";
|
|
42
49
|
const LONG_LIVED_BRANCHES = new Set(["main", "master", "develop", "staging", "production"]);
|
|
@@ -219,7 +226,7 @@ const fetchWorkflowRunFailureContext = Effect.fn("pr.fetchWorkflowRunFailureCont
|
|
|
219
226
|
"view",
|
|
220
227
|
String(runId),
|
|
221
228
|
"--json",
|
|
222
|
-
"databaseId,attempt,url,workflowName,status,conclusion,jobs",
|
|
229
|
+
"databaseId,attempt,headSha,url,workflowName,status,conclusion,jobs",
|
|
223
230
|
])
|
|
224
231
|
.pipe(Effect.catchTag("GitHubCommandError", () => Effect.succeed(null)));
|
|
225
232
|
|
|
@@ -245,6 +252,7 @@ const fetchWorkflowRunFailureContext = Effect.fn("pr.fetchWorkflowRunFailureCont
|
|
|
245
252
|
const context: FailedCheckRunContext = {
|
|
246
253
|
runId: run.databaseId,
|
|
247
254
|
attempt: run.attempt ?? null,
|
|
255
|
+
headSha: run.headSha ?? null,
|
|
248
256
|
url: run.url,
|
|
249
257
|
workflowName: run.workflowName,
|
|
250
258
|
status: run.status,
|
|
@@ -267,7 +275,35 @@ export const NO_CHECKS_REPORTED_RE = /no checks reported/i;
|
|
|
267
275
|
const CHECK_REGISTRATION_POLL_SECONDS = 5;
|
|
268
276
|
const CHECK_REGISTRATION_GRACE_SECONDS = 60;
|
|
269
277
|
|
|
270
|
-
|
|
278
|
+
const summarizeFailedStepEntries = (entries: Array<{ step: string; message: string }>) => {
|
|
279
|
+
const selected = entries
|
|
280
|
+
.map((entry, index) => ({
|
|
281
|
+
entry,
|
|
282
|
+
index,
|
|
283
|
+
rank: /assert|expected|received|actual|failed|failure|error|exception|fatal/i.test(
|
|
284
|
+
entry.message,
|
|
285
|
+
)
|
|
286
|
+
? 0
|
|
287
|
+
: 1,
|
|
288
|
+
}))
|
|
289
|
+
.toSorted((a, b) => a.rank - b.rank || b.index - a.index)
|
|
290
|
+
.slice(0, 20)
|
|
291
|
+
.toSorted((a, b) => a.index - b.index);
|
|
292
|
+
const kept: Array<{ step: string; message: string }> = [];
|
|
293
|
+
for (const { entry } of selected.toReversed()) {
|
|
294
|
+
const clipped = { step: entry.step.slice(0, 80), message: entry.message.slice(0, 150) };
|
|
295
|
+
if (formatLogEntries([clipped, ...kept]).length <= 3_900) kept.unshift(clipped);
|
|
296
|
+
}
|
|
297
|
+
let output = formatLogEntries(kept);
|
|
298
|
+
if (kept.length < entries.length)
|
|
299
|
+
output += `\n… ${entries.length - kept.length} log lines omitted`;
|
|
300
|
+
return output;
|
|
301
|
+
};
|
|
302
|
+
|
|
303
|
+
export const fetchCheckResults = Effect.fn("pr.fetchCheckResults")(function* (
|
|
304
|
+
pr: number | null,
|
|
305
|
+
cache?: { headSha: string; watchPending?: boolean },
|
|
306
|
+
) {
|
|
271
307
|
const gh = yield* GitHubService;
|
|
272
308
|
|
|
273
309
|
const args = ["pr", "checks"];
|
|
@@ -275,7 +311,43 @@ export const fetchCheckResults = Effect.fn("pr.fetchCheckResults")(function* (pr
|
|
|
275
311
|
args.push(String(pr));
|
|
276
312
|
}
|
|
277
313
|
|
|
278
|
-
|
|
314
|
+
const directory = yield* CheckStatusCacheDirectory;
|
|
315
|
+
const now = yield* Clock.currentTimeMillis;
|
|
316
|
+
let repo: string | null = null;
|
|
317
|
+
let identity: string | null = null;
|
|
318
|
+
if (cache !== undefined && pr !== null && directory !== undefined) {
|
|
319
|
+
const repoInfo = yield* gh.getRepoInfo().pipe(Effect.result);
|
|
320
|
+
const token = yield* resolveGitHubToken().pipe(Effect.result);
|
|
321
|
+
if (Result.isSuccess(repoInfo) && Result.isSuccess(token)) {
|
|
322
|
+
const host = yield* Effect.try({
|
|
323
|
+
try: () => new URL(repoInfo.success.url).host,
|
|
324
|
+
catch: () => "",
|
|
325
|
+
}).pipe(Effect.orElseSucceed(() => ""));
|
|
326
|
+
if (host.length > 0) {
|
|
327
|
+
const cacheRepo = `${host}/${repoInfo.success.owner}/${repoInfo.success.name}`;
|
|
328
|
+
const cacheIdentity = createHash("sha256").update(token.success).digest("hex");
|
|
329
|
+
const cached = yield* Effect.tryPromise({
|
|
330
|
+
try: () =>
|
|
331
|
+
readCheckStatusCache(
|
|
332
|
+
cacheIdentity,
|
|
333
|
+
cacheRepo,
|
|
334
|
+
pr,
|
|
335
|
+
cache.headSha,
|
|
336
|
+
now,
|
|
337
|
+
cache.watchPending,
|
|
338
|
+
directory,
|
|
339
|
+
),
|
|
340
|
+
catch: () => null,
|
|
341
|
+
}).pipe(Effect.orElseSucceed(() => null));
|
|
342
|
+
if (cached !== null) return cached;
|
|
343
|
+
repo = cacheRepo;
|
|
344
|
+
identity = cacheIdentity;
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
const fetchedAt = yield* Clock.currentTimeMillis;
|
|
350
|
+
const checks = yield* gh
|
|
279
351
|
.runGhJson<CheckResult[]>([...args, "--json", CHECK_JSON_FIELDS])
|
|
280
352
|
.pipe(
|
|
281
353
|
Effect.catchTag("GitHubCommandError", (error) =>
|
|
@@ -284,6 +356,20 @@ export const fetchCheckResults = Effect.fn("pr.fetchCheckResults")(function* (pr
|
|
|
284
356
|
: Effect.fail(error),
|
|
285
357
|
),
|
|
286
358
|
);
|
|
359
|
+
if (
|
|
360
|
+
cache !== undefined &&
|
|
361
|
+
pr !== null &&
|
|
362
|
+
repo !== null &&
|
|
363
|
+
identity !== null &&
|
|
364
|
+
checks.length > 0
|
|
365
|
+
) {
|
|
366
|
+
yield* Effect.tryPromise({
|
|
367
|
+
try: () =>
|
|
368
|
+
writeCheckStatusCache(identity, repo, pr, cache.headSha, checks, fetchedAt, directory),
|
|
369
|
+
catch: () => undefined,
|
|
370
|
+
}).pipe(Effect.orElseSucceed(() => undefined));
|
|
371
|
+
}
|
|
372
|
+
return checks;
|
|
287
373
|
});
|
|
288
374
|
|
|
289
375
|
const buildFailedChecksReport = Effect.fn("pr.buildFailedChecksReport")(function* (
|
|
@@ -291,6 +377,7 @@ const buildFailedChecksReport = Effect.fn("pr.buildFailedChecksReport")(function
|
|
|
291
377
|
checks: CheckResult[],
|
|
292
378
|
options: {
|
|
293
379
|
withLogs: boolean;
|
|
380
|
+
fullLogs?: boolean;
|
|
294
381
|
evidence?: { headSha: string | null; baseSha: string | null } | null;
|
|
295
382
|
} = { withLogs: false },
|
|
296
383
|
) {
|
|
@@ -354,12 +441,20 @@ const buildFailedChecksReport = Effect.fn("pr.buildFailedChecksReport")(function
|
|
|
354
441
|
if (failedStepLogs === null || !("entries" in failedStepLogs) || !failedStepLogs.entries) {
|
|
355
442
|
return detail;
|
|
356
443
|
}
|
|
357
|
-
const formatted =
|
|
444
|
+
const formatted = options.fullLogs
|
|
445
|
+
? formatLogEntries(failedStepLogs.entries)
|
|
446
|
+
: summarizeFailedStepEntries(failedStepLogs.entries);
|
|
358
447
|
return formatted.length > 0
|
|
359
448
|
? {
|
|
360
449
|
...detail,
|
|
361
450
|
failedStepLogs: formatted,
|
|
362
|
-
|
|
451
|
+
...(run?.headSha !== null &&
|
|
452
|
+
run?.headSha !== undefined &&
|
|
453
|
+
evidence?.headSha !== null &&
|
|
454
|
+
evidence?.headSha !== undefined &&
|
|
455
|
+
run.headSha !== evidence.headSha
|
|
456
|
+
? {}
|
|
457
|
+
: { diagnosis: diagnoseLogEntries(failedStepLogs.entries) }),
|
|
363
458
|
}
|
|
364
459
|
: detail;
|
|
365
460
|
}),
|
|
@@ -375,10 +470,12 @@ const buildFailedChecksReport = Effect.fn("pr.buildFailedChecksReport")(function
|
|
|
375
470
|
}
|
|
376
471
|
|
|
377
472
|
const commands = [`bun agent-tools-gh workflow view --run ${check.runId}`];
|
|
378
|
-
const
|
|
379
|
-
|
|
473
|
+
const matchedJob = check.run
|
|
474
|
+
? matchFailedJobForCheck(check.name, check.run.failedJobs)
|
|
475
|
+
: null;
|
|
476
|
+
if (matchedJob) {
|
|
380
477
|
commands.push(
|
|
381
|
-
`bun agent-tools-gh workflow job-logs --run ${check.runId} --job ${JSON.stringify(
|
|
478
|
+
`bun agent-tools-gh workflow job-logs --run ${check.runId} --job ${JSON.stringify(matchedJob.name)} --failed-steps-only`,
|
|
382
479
|
);
|
|
383
480
|
}
|
|
384
481
|
|
|
@@ -397,6 +494,20 @@ const buildFailedChecksReport = Effect.fn("pr.buildFailedChecksReport")(function
|
|
|
397
494
|
? `Detected ${failedChecks.length} failed check(s) while ${pendingChecks.length} check(s) are still running.`
|
|
398
495
|
: `Detected ${failedChecks.length} failed check(s).`;
|
|
399
496
|
|
|
497
|
+
let remainingLogCharacters = 16_000;
|
|
498
|
+
const reportFailedChecks = options.fullLogs
|
|
499
|
+
? enrichedFailedChecks
|
|
500
|
+
: enrichedFailedChecks.map((check) => {
|
|
501
|
+
if (check.failedStepLogs === undefined) return check;
|
|
502
|
+
const limit = Math.max(0, remainingLogCharacters);
|
|
503
|
+
remainingLogCharacters -= check.failedStepLogs.length;
|
|
504
|
+
return check.failedStepLogs.length <= limit
|
|
505
|
+
? check
|
|
506
|
+
: Object.assign({}, check, {
|
|
507
|
+
failedStepLogs: `${check.failedStepLogs.slice(0, Math.max(0, limit - 40))}\n… report log summary omitted`,
|
|
508
|
+
});
|
|
509
|
+
});
|
|
510
|
+
|
|
400
511
|
const hint =
|
|
401
512
|
failedChecks.length === 0
|
|
402
513
|
? pendingChecks.length > 0
|
|
@@ -416,7 +527,7 @@ const buildFailedChecksReport = Effect.fn("pr.buildFailedChecksReport")(function
|
|
|
416
527
|
pending: pendingChecks.length,
|
|
417
528
|
passed: passedChecks.length,
|
|
418
529
|
},
|
|
419
|
-
failedChecks:
|
|
530
|
+
failedChecks: reportFailedChecks,
|
|
420
531
|
pendingChecks,
|
|
421
532
|
hint,
|
|
422
533
|
nextCommands,
|
|
@@ -1431,13 +1542,8 @@ export const fetchChecks = Effect.fn("pr.fetchChecks")(function* (
|
|
|
1431
1542
|
watchArgs.push("--fail-fast");
|
|
1432
1543
|
}
|
|
1433
1544
|
|
|
1434
|
-
//
|
|
1435
|
-
//
|
|
1436
|
-
// nothing — that was the actual token-wasting bug.
|
|
1437
|
-
// A push registers its checks a moment after the ref lands, and `gh pr checks --watch`
|
|
1438
|
-
// exits non-zero in that window. A watch was asked to wait, so keep waiting: the outer
|
|
1439
|
-
// timeout still bounds it, and a PR that genuinely has no checks returns an empty
|
|
1440
|
-
// snapshot at that deadline rather than an error.
|
|
1545
|
+
// A push can register checks after the ref lands. Wait through that window
|
|
1546
|
+
// within the caller's timeout, then report the final snapshot.
|
|
1441
1547
|
let watchResult: GhResult | null = null;
|
|
1442
1548
|
let registered = false;
|
|
1443
1549
|
let graceExpired = false;
|
|
@@ -1488,12 +1594,14 @@ export const fetchChecks = Effect.fn("pr.fetchChecks")(function* (
|
|
|
1488
1594
|
`likely dropped, and re-watching will find nothing again — dispatch them on the PR ` +
|
|
1489
1595
|
`head instead:\n agent-tools-gh pr trigger-checks --pr ${prRef} --workflow <file.yml>`,
|
|
1490
1596
|
);
|
|
1491
|
-
}
|
|
1492
|
-
|
|
1493
|
-
|
|
1494
|
-
|
|
1495
|
-
|
|
1496
|
-
|
|
1597
|
+
}
|
|
1598
|
+
if (watchOutcome === null && results.some((check) => check.bucket === "pending")) {
|
|
1599
|
+
const pending = results.filter((check) => check.bucket === "pending").length;
|
|
1600
|
+
yield* logFormatted(results, quiet ? "json" : "toon");
|
|
1601
|
+
return yield* new GitHubTimeoutError({
|
|
1602
|
+
message: `Watch timed out, ${pending} pending after ${timeoutSeconds}s. This is not a CI verdict.`,
|
|
1603
|
+
timeoutMs: timeoutSeconds * 1000,
|
|
1604
|
+
});
|
|
1497
1605
|
}
|
|
1498
1606
|
return results;
|
|
1499
1607
|
}
|
|
@@ -1591,6 +1699,7 @@ export const collectWithStableState = <S, A, E1, R1, E2, R2>(
|
|
|
1591
1699
|
export const fetchFailedChecks = Effect.fn("pr.fetchFailedChecks")(function* (
|
|
1592
1700
|
pr: number | null,
|
|
1593
1701
|
withLogs = false,
|
|
1702
|
+
fullLogs = false,
|
|
1594
1703
|
) {
|
|
1595
1704
|
const initial = yield* viewPR(pr);
|
|
1596
1705
|
const snapshot = yield* collectWithStableState(
|
|
@@ -1604,7 +1713,8 @@ export const fetchFailedChecks = Effect.fn("pr.fetchFailedChecks")(function* (
|
|
|
1604
1713
|
);
|
|
1605
1714
|
if (snapshot !== null) {
|
|
1606
1715
|
return yield* buildFailedChecksReport(snapshot.state.number, snapshot.value, {
|
|
1607
|
-
withLogs,
|
|
1716
|
+
withLogs: withLogs || fullLogs,
|
|
1717
|
+
fullLogs,
|
|
1608
1718
|
evidence: { headSha: snapshot.state.headSha, baseSha: snapshot.state.baseSha },
|
|
1609
1719
|
});
|
|
1610
1720
|
}
|
|
@@ -1710,7 +1820,14 @@ export const watchPRs = Effect.fn("pr.watchPRs")(function* (
|
|
|
1710
1820
|
const initial = yield* watchPRState(pr);
|
|
1711
1821
|
const stableResult = yield* collectWithStableState(
|
|
1712
1822
|
initial,
|
|
1713
|
-
() =>
|
|
1823
|
+
(state) =>
|
|
1824
|
+
requireDeadline.pipe(
|
|
1825
|
+
Effect.andThen(
|
|
1826
|
+
state.headRefOid
|
|
1827
|
+
? fetchCheckResults(pr, { headSha: state.headRefOid, watchPending: true })
|
|
1828
|
+
: fetchCheckResults(pr),
|
|
1829
|
+
),
|
|
1830
|
+
),
|
|
1714
1831
|
() => requireDeadline.pipe(Effect.andThen(watchPRState(pr))),
|
|
1715
1832
|
(before, after) => before.headRefOid === after.headRefOid && before.state === after.state,
|
|
1716
1833
|
).pipe(Effect.result);
|
|
@@ -1769,7 +1886,13 @@ export const watchPRs = Effect.fn("pr.watchPRs")(function* (
|
|
|
1769
1886
|
timedOut = true;
|
|
1770
1887
|
break;
|
|
1771
1888
|
}
|
|
1772
|
-
const
|
|
1889
|
+
const remainingMs = Math.max(1, deadline - Number(yield* Clock.currentTimeMillis));
|
|
1890
|
+
const state = yield* snapshot(number).pipe(
|
|
1891
|
+
Effect.timeoutOrElse({
|
|
1892
|
+
duration: remainingMs,
|
|
1893
|
+
orElse: () => Effect.succeed("timeout" as const),
|
|
1894
|
+
}),
|
|
1895
|
+
);
|
|
1773
1896
|
if (state === "timeout") {
|
|
1774
1897
|
timedOut = true;
|
|
1775
1898
|
break;
|
|
@@ -1869,12 +1992,27 @@ export const watchPRs = Effect.fn("pr.watchPRs")(function* (
|
|
|
1869
1992
|
}),
|
|
1870
1993
|
step: () => undefined,
|
|
1871
1994
|
});
|
|
1995
|
+
const watcherTimedOut = terminal.size < prs.length;
|
|
1872
1996
|
yield* emit({
|
|
1873
1997
|
type: "watcher_terminal",
|
|
1874
1998
|
repo: `${repo.owner}/${repo.name}`,
|
|
1875
|
-
status:
|
|
1999
|
+
status: watcherTimedOut ? "timeout" : "terminal",
|
|
1876
2000
|
terminal: [...terminal].toSorted((a, b) => a - b),
|
|
2001
|
+
...(watcherTimedOut
|
|
2002
|
+
? {
|
|
2003
|
+
verdict: null,
|
|
2004
|
+
message: `Watch timed out, ${prs.length - terminal.size} pending. This is not a CI verdict.`,
|
|
2005
|
+
timeoutSeconds: options.timeoutSeconds,
|
|
2006
|
+
pending: prs.filter((number) => !terminal.has(number)).toSorted((a, b) => a - b),
|
|
2007
|
+
}
|
|
2008
|
+
: {}),
|
|
1877
2009
|
});
|
|
2010
|
+
if (watcherTimedOut) {
|
|
2011
|
+
return yield* new GitHubTimeoutError({
|
|
2012
|
+
message: `Watch timed out, ${prs.length - terminal.size} pending. This is not a CI verdict.`,
|
|
2013
|
+
timeoutMs: options.timeoutSeconds * 1000,
|
|
2014
|
+
});
|
|
2015
|
+
}
|
|
1878
2016
|
});
|
|
1879
2017
|
|
|
1880
2018
|
type RerunDiscovery = RerunCheckAttempt & { status?: string };
|
package/src/gh-tool/service.ts
CHANGED
|
@@ -224,6 +224,35 @@ export class GitHubService extends Context.Service<
|
|
|
224
224
|
});
|
|
225
225
|
}
|
|
226
226
|
|
|
227
|
+
if (/rate limit|abuse detection|HTTP 429/i.test(result.stderr)) {
|
|
228
|
+
const resource =
|
|
229
|
+
args[0] === "api"
|
|
230
|
+
? args[1]?.replace(/^\//, "") === "graphql"
|
|
231
|
+
? "graphql"
|
|
232
|
+
: args[1]?.replace(/^\//, "").startsWith("search/")
|
|
233
|
+
? "search"
|
|
234
|
+
: "core"
|
|
235
|
+
: undefined;
|
|
236
|
+
const quotaFilter =
|
|
237
|
+
resource === undefined
|
|
238
|
+
? '.resources | to_entries[] | "\\(.key): reset time: \\(.value.reset | todateiso8601); remaining quota: \\(.value.remaining)"'
|
|
239
|
+
: `.resources.${resource} | "reset time: \\(.reset | todateiso8601); remaining quota: \\(.remaining)"`;
|
|
240
|
+
const quota = yield* executeGh(["api", "rate_limit", "--jq", quotaFilter]).pipe(
|
|
241
|
+
Effect.orElseSucceed(() => null),
|
|
242
|
+
);
|
|
243
|
+
const detail =
|
|
244
|
+
quota?.exitCode === 0 && quota.stdout.trim()
|
|
245
|
+
? quota.stdout.trim()
|
|
246
|
+
: "reset time: unavailable; remaining quota: unavailable (quota lookup failed)";
|
|
247
|
+
return yield* new GitHubCommandError({
|
|
248
|
+
message: `${result.stderr.trim()}; ${detail}`,
|
|
249
|
+
command: `gh ${args.join(" ")}`,
|
|
250
|
+
exitCode: result.exitCode,
|
|
251
|
+
stderr: result.stderr,
|
|
252
|
+
hint: "Wait until the quota resets before you retry. The failed command was not replayed.",
|
|
253
|
+
});
|
|
254
|
+
}
|
|
255
|
+
|
|
227
256
|
// Transient network/5xx — flag retryable so the wrapper below can replay safe reads.
|
|
228
257
|
if (NETWORK_ERROR_RE.test(result.stderr)) {
|
|
229
258
|
return yield* new GitHubCommandError({
|
package/src/gh-tool/types.ts
CHANGED
|
@@ -121,6 +121,7 @@ export type FailedCheckJob = {
|
|
|
121
121
|
export type FailedCheckRunContext = {
|
|
122
122
|
runId: number;
|
|
123
123
|
attempt: number | null;
|
|
124
|
+
headSha: string | null;
|
|
124
125
|
url: string | null;
|
|
125
126
|
workflowName: string | null;
|
|
126
127
|
status: string;
|
|
@@ -226,6 +227,7 @@ export type FailedChecksReport = {
|
|
|
226
227
|
export type WorkflowRunDetail = {
|
|
227
228
|
databaseId: number;
|
|
228
229
|
attempt: number | null;
|
|
230
|
+
headSha: string | null;
|
|
229
231
|
url: string;
|
|
230
232
|
workflowName: string | null;
|
|
231
233
|
status: string;
|
package/src/gh-tool/workflow.ts
CHANGED
|
@@ -567,7 +567,15 @@ const normalizeFingerprint = (message: string) =>
|
|
|
567
567
|
.slice(0, 240);
|
|
568
568
|
|
|
569
569
|
export const diagnoseLogEntries = (entries: readonly LogEntry[]): LogDiagnosis => {
|
|
570
|
-
const
|
|
570
|
+
const fetchProgress =
|
|
571
|
+
/^(?:\s*(?:\*\s+\[new branch\]|\[new branch\]|From\s+\S+|\*\s+\[new tag\]|\s*->\s+origin\/)|\s*\+?git fetch\b|.*refs\/(?:heads|remotes)\/)/i;
|
|
572
|
+
const lines = entries
|
|
573
|
+
.filter(
|
|
574
|
+
({ message }) =>
|
|
575
|
+
/fatal:|error:|failed|exception|could not resolve|connection|timed out/i.test(message) ||
|
|
576
|
+
!fetchProgress.test(message),
|
|
577
|
+
)
|
|
578
|
+
.map((entry) => entry.message);
|
|
571
579
|
const text = lines.join("\n");
|
|
572
580
|
const find = (pattern: RegExp) => lines.find((line) => pattern.test(line)) ?? null;
|
|
573
581
|
const testsStarted =
|
|
@@ -6,6 +6,7 @@ export const retryTransient = <A, E, R>(opts: {
|
|
|
6
6
|
attempt: () => Effect.Effect<A, E, R>;
|
|
7
7
|
isTransient: (error: E) => boolean;
|
|
8
8
|
maxRetries: number;
|
|
9
|
+
retryDelayMs?: (error: E, attempt: number, fallbackMs: number) => number;
|
|
9
10
|
}): Effect.Effect<A, E, R> => {
|
|
10
11
|
const loop = (attempt: number): Effect.Effect<A, E, R> =>
|
|
11
12
|
opts
|
|
@@ -13,9 +14,12 @@ export const retryTransient = <A, E, R>(opts: {
|
|
|
13
14
|
.pipe(
|
|
14
15
|
Effect.catch((error: E) =>
|
|
15
16
|
opts.isTransient(error) && attempt < opts.maxRetries
|
|
16
|
-
? Effect.sleep(
|
|
17
|
-
|
|
18
|
-
|
|
17
|
+
? Effect.sleep(
|
|
18
|
+
Duration.millis(
|
|
19
|
+
opts.retryDelayMs?.(error, attempt, BASE_DELAY_MS * 2 ** attempt) ??
|
|
20
|
+
BASE_DELAY_MS * 2 ** attempt,
|
|
21
|
+
),
|
|
22
|
+
).pipe(Effect.flatMap(() => loop(attempt + 1)))
|
|
19
23
|
: Effect.fail(error),
|
|
20
24
|
),
|
|
21
25
|
);
|