@humanbased/crosscheck 0.14.0
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/AGENT.md +207 -0
- package/ISSUE.md +234 -0
- package/LICENSE +21 -0
- package/README.md +234 -0
- package/README.zh.md +169 -0
- package/assets/logo.png +0 -0
- package/assets/screenshot-watch-timing.png +0 -0
- package/assets/screenshot-watch-timing.svg +1 -0
- package/assets/screenshot-watch.png +0 -0
- package/crosscheck.config.example.yml +214 -0
- package/dist/__tests__/annotation.test.d.ts +2 -0
- package/dist/__tests__/annotation.test.d.ts.map +1 -0
- package/dist/__tests__/annotation.test.js +134 -0
- package/dist/__tests__/annotation.test.js.map +1 -0
- package/dist/__tests__/backtrace.test.d.ts +2 -0
- package/dist/__tests__/backtrace.test.d.ts.map +1 -0
- package/dist/__tests__/backtrace.test.js +280 -0
- package/dist/__tests__/backtrace.test.js.map +1 -0
- package/dist/__tests__/board.test.d.ts +2 -0
- package/dist/__tests__/board.test.d.ts.map +1 -0
- package/dist/__tests__/board.test.js +149 -0
- package/dist/__tests__/board.test.js.map +1 -0
- package/dist/__tests__/codex.test.d.ts +2 -0
- package/dist/__tests__/codex.test.d.ts.map +1 -0
- package/dist/__tests__/codex.test.js +92 -0
- package/dist/__tests__/codex.test.js.map +1 -0
- package/dist/__tests__/comment-bodies.test.d.ts +2 -0
- package/dist/__tests__/comment-bodies.test.d.ts.map +1 -0
- package/dist/__tests__/comment-bodies.test.js +75 -0
- package/dist/__tests__/comment-bodies.test.js.map +1 -0
- package/dist/__tests__/conflict-resolve.test.d.ts +2 -0
- package/dist/__tests__/conflict-resolve.test.d.ts.map +1 -0
- package/dist/__tests__/conflict-resolve.test.js +123 -0
- package/dist/__tests__/conflict-resolve.test.js.map +1 -0
- package/dist/__tests__/crosscheck-commit.test.d.ts +2 -0
- package/dist/__tests__/crosscheck-commit.test.d.ts.map +1 -0
- package/dist/__tests__/crosscheck-commit.test.js +13 -0
- package/dist/__tests__/crosscheck-commit.test.js.map +1 -0
- package/dist/__tests__/detector.test.d.ts +2 -0
- package/dist/__tests__/detector.test.d.ts.map +1 -0
- package/dist/__tests__/detector.test.js +112 -0
- package/dist/__tests__/detector.test.js.map +1 -0
- package/dist/__tests__/diagnose.test.d.ts +2 -0
- package/dist/__tests__/diagnose.test.d.ts.map +1 -0
- package/dist/__tests__/diagnose.test.js +164 -0
- package/dist/__tests__/diagnose.test.js.map +1 -0
- package/dist/__tests__/diff-hash.test.d.ts +2 -0
- package/dist/__tests__/diff-hash.test.d.ts.map +1 -0
- package/dist/__tests__/diff-hash.test.js +126 -0
- package/dist/__tests__/diff-hash.test.js.map +1 -0
- package/dist/__tests__/durations.test.d.ts +2 -0
- package/dist/__tests__/durations.test.d.ts.map +1 -0
- package/dist/__tests__/durations.test.js +26 -0
- package/dist/__tests__/durations.test.js.map +1 -0
- package/dist/__tests__/event-fields.test.d.ts +2 -0
- package/dist/__tests__/event-fields.test.d.ts.map +1 -0
- package/dist/__tests__/event-fields.test.js +50 -0
- package/dist/__tests__/event-fields.test.js.map +1 -0
- package/dist/__tests__/filter.test.d.ts +2 -0
- package/dist/__tests__/filter.test.d.ts.map +1 -0
- package/dist/__tests__/filter.test.js +21 -0
- package/dist/__tests__/filter.test.js.map +1 -0
- package/dist/__tests__/fix.test.d.ts +2 -0
- package/dist/__tests__/fix.test.d.ts.map +1 -0
- package/dist/__tests__/fix.test.js +124 -0
- package/dist/__tests__/fix.test.js.map +1 -0
- package/dist/__tests__/github-client.test.d.ts +2 -0
- package/dist/__tests__/github-client.test.d.ts.map +1 -0
- package/dist/__tests__/github-client.test.js +22 -0
- package/dist/__tests__/github-client.test.js.map +1 -0
- package/dist/__tests__/github-scan-client.test.d.ts +2 -0
- package/dist/__tests__/github-scan-client.test.d.ts.map +1 -0
- package/dist/__tests__/github-scan-client.test.js +100 -0
- package/dist/__tests__/github-scan-client.test.js.map +1 -0
- package/dist/__tests__/is-fresh-review-comment.test.d.ts +2 -0
- package/dist/__tests__/is-fresh-review-comment.test.d.ts.map +1 -0
- package/dist/__tests__/is-fresh-review-comment.test.js +86 -0
- package/dist/__tests__/is-fresh-review-comment.test.js.map +1 -0
- package/dist/__tests__/issue.test.d.ts +2 -0
- package/dist/__tests__/issue.test.d.ts.map +1 -0
- package/dist/__tests__/issue.test.js +259 -0
- package/dist/__tests__/issue.test.js.map +1 -0
- package/dist/__tests__/kickass.test.d.ts +2 -0
- package/dist/__tests__/kickass.test.d.ts.map +1 -0
- package/dist/__tests__/kickass.test.js +268 -0
- package/dist/__tests__/kickass.test.js.map +1 -0
- package/dist/__tests__/loader.test.d.ts +2 -0
- package/dist/__tests__/loader.test.d.ts.map +1 -0
- package/dist/__tests__/loader.test.js +180 -0
- package/dist/__tests__/loader.test.js.map +1 -0
- package/dist/__tests__/onboard-preservation.test.d.ts +2 -0
- package/dist/__tests__/onboard-preservation.test.d.ts.map +1 -0
- package/dist/__tests__/onboard-preservation.test.js +506 -0
- package/dist/__tests__/onboard-preservation.test.js.map +1 -0
- package/dist/__tests__/optimize.test.d.ts +2 -0
- package/dist/__tests__/optimize.test.d.ts.map +1 -0
- package/dist/__tests__/optimize.test.js +101 -0
- package/dist/__tests__/optimize.test.js.map +1 -0
- package/dist/__tests__/post-review-comment.test.d.ts +2 -0
- package/dist/__tests__/post-review-comment.test.d.ts.map +1 -0
- package/dist/__tests__/post-review-comment.test.js +44 -0
- package/dist/__tests__/post-review-comment.test.js.map +1 -0
- package/dist/__tests__/pr-lock.test.d.ts +2 -0
- package/dist/__tests__/pr-lock.test.d.ts.map +1 -0
- package/dist/__tests__/pr-lock.test.js +115 -0
- package/dist/__tests__/pr-lock.test.js.map +1 -0
- package/dist/__tests__/pr-picker.test.d.ts +2 -0
- package/dist/__tests__/pr-picker.test.d.ts.map +1 -0
- package/dist/__tests__/pr-picker.test.js +57 -0
- package/dist/__tests__/pr-picker.test.js.map +1 -0
- package/dist/__tests__/pr-status-scan.test.d.ts +2 -0
- package/dist/__tests__/pr-status-scan.test.d.ts.map +1 -0
- package/dist/__tests__/pr-status-scan.test.js +92 -0
- package/dist/__tests__/pr-status-scan.test.js.map +1 -0
- package/dist/__tests__/pr-status.test.d.ts +2 -0
- package/dist/__tests__/pr-status.test.d.ts.map +1 -0
- package/dist/__tests__/pr-status.test.js +346 -0
- package/dist/__tests__/pr-status.test.js.map +1 -0
- package/dist/__tests__/repo-picker.test.d.ts +2 -0
- package/dist/__tests__/repo-picker.test.d.ts.map +1 -0
- package/dist/__tests__/repo-picker.test.js +115 -0
- package/dist/__tests__/repo-picker.test.js.map +1 -0
- package/dist/__tests__/review-comment-body.test.d.ts +2 -0
- package/dist/__tests__/review-comment-body.test.d.ts.map +1 -0
- package/dist/__tests__/review-comment-body.test.js +54 -0
- package/dist/__tests__/review-comment-body.test.js.map +1 -0
- package/dist/__tests__/review-models.test.d.ts +2 -0
- package/dist/__tests__/review-models.test.d.ts.map +1 -0
- package/dist/__tests__/review-models.test.js +39 -0
- package/dist/__tests__/review-models.test.js.map +1 -0
- package/dist/__tests__/review-status.test.d.ts +2 -0
- package/dist/__tests__/review-status.test.d.ts.map +1 -0
- package/dist/__tests__/review-status.test.js +95 -0
- package/dist/__tests__/review-status.test.js.map +1 -0
- package/dist/__tests__/runner.test.d.ts +2 -0
- package/dist/__tests__/runner.test.d.ts.map +1 -0
- package/dist/__tests__/runner.test.js +204 -0
- package/dist/__tests__/runner.test.js.map +1 -0
- package/dist/__tests__/scan-cache.test.d.ts +2 -0
- package/dist/__tests__/scan-cache.test.d.ts.map +1 -0
- package/dist/__tests__/scan-cache.test.js +59 -0
- package/dist/__tests__/scan-cache.test.js.map +1 -0
- package/dist/__tests__/scan-client.test.d.ts +2 -0
- package/dist/__tests__/scan-client.test.d.ts.map +1 -0
- package/dist/__tests__/scan-client.test.js +30 -0
- package/dist/__tests__/scan-client.test.js.map +1 -0
- package/dist/__tests__/scan.test.d.ts +2 -0
- package/dist/__tests__/scan.test.d.ts.map +1 -0
- package/dist/__tests__/scan.test.js +115 -0
- package/dist/__tests__/scan.test.js.map +1 -0
- package/dist/__tests__/scopes.test.d.ts +2 -0
- package/dist/__tests__/scopes.test.d.ts.map +1 -0
- package/dist/__tests__/scopes.test.js +101 -0
- package/dist/__tests__/scopes.test.js.map +1 -0
- package/dist/__tests__/sha-cache.test.d.ts +2 -0
- package/dist/__tests__/sha-cache.test.d.ts.map +1 -0
- package/dist/__tests__/sha-cache.test.js +40 -0
- package/dist/__tests__/sha-cache.test.js.map +1 -0
- package/dist/__tests__/smart-switch.test.d.ts +2 -0
- package/dist/__tests__/smart-switch.test.d.ts.map +1 -0
- package/dist/__tests__/smart-switch.test.js +145 -0
- package/dist/__tests__/smart-switch.test.js.map +1 -0
- package/dist/ck.d.ts +3 -0
- package/dist/ck.d.ts.map +1 -0
- package/dist/ck.js +8 -0
- package/dist/ck.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +132 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/diagnose.d.ts +54 -0
- package/dist/commands/diagnose.d.ts.map +1 -0
- package/dist/commands/diagnose.js +294 -0
- package/dist/commands/diagnose.js.map +1 -0
- package/dist/commands/impact.d.ts +38 -0
- package/dist/commands/impact.d.ts.map +1 -0
- package/dist/commands/impact.js +210 -0
- package/dist/commands/impact.js.map +1 -0
- package/dist/commands/init.d.ts +12 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +183 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/issue.d.ts +25 -0
- package/dist/commands/issue.d.ts.map +1 -0
- package/dist/commands/issue.js +445 -0
- package/dist/commands/issue.js.map +1 -0
- package/dist/commands/kickass.d.ts +59 -0
- package/dist/commands/kickass.d.ts.map +1 -0
- package/dist/commands/kickass.js +288 -0
- package/dist/commands/kickass.js.map +1 -0
- package/dist/commands/onboard.d.ts +70 -0
- package/dist/commands/onboard.d.ts.map +1 -0
- package/dist/commands/onboard.js +883 -0
- package/dist/commands/onboard.js.map +1 -0
- package/dist/commands/optimize.d.ts +16 -0
- package/dist/commands/optimize.d.ts.map +1 -0
- package/dist/commands/optimize.js +244 -0
- package/dist/commands/optimize.js.map +1 -0
- package/dist/commands/review.d.ts +2 -0
- package/dist/commands/review.d.ts.map +1 -0
- package/dist/commands/review.js +118 -0
- package/dist/commands/review.js.map +1 -0
- package/dist/commands/run.d.ts +13 -0
- package/dist/commands/run.d.ts.map +1 -0
- package/dist/commands/run.js +243 -0
- package/dist/commands/run.js.map +1 -0
- package/dist/commands/scan.d.ts +94 -0
- package/dist/commands/scan.d.ts.map +1 -0
- package/dist/commands/scan.js +276 -0
- package/dist/commands/scan.js.map +1 -0
- package/dist/commands/serve.d.ts +9 -0
- package/dist/commands/serve.d.ts.map +1 -0
- package/dist/commands/serve.js +402 -0
- package/dist/commands/serve.js.map +1 -0
- package/dist/commands/status.d.ts +2 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +89 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/watch.d.ts +9 -0
- package/dist/commands/watch.d.ts.map +1 -0
- package/dist/commands/watch.js +902 -0
- package/dist/commands/watch.js.map +1 -0
- package/dist/config/loader.d.ts +47 -0
- package/dist/config/loader.d.ts.map +1 -0
- package/dist/config/loader.js +334 -0
- package/dist/config/loader.js.map +1 -0
- package/dist/config/schema.d.ts +814 -0
- package/dist/config/schema.d.ts.map +1 -0
- package/dist/config/schema.js +152 -0
- package/dist/config/schema.js.map +1 -0
- package/dist/github/client.d.ts +139 -0
- package/dist/github/client.d.ts.map +1 -0
- package/dist/github/client.js +711 -0
- package/dist/github/client.js.map +1 -0
- package/dist/github/detector.d.ts +12 -0
- package/dist/github/detector.d.ts.map +1 -0
- package/dist/github/detector.js +120 -0
- package/dist/github/detector.js.map +1 -0
- package/dist/github/merge.d.ts +9 -0
- package/dist/github/merge.d.ts.map +1 -0
- package/dist/github/merge.js +33 -0
- package/dist/github/merge.js.map +1 -0
- package/dist/github/review-status.d.ts +6 -0
- package/dist/github/review-status.d.ts.map +1 -0
- package/dist/github/review-status.js +51 -0
- package/dist/github/review-status.js.map +1 -0
- package/dist/github/webhook.d.ts +41 -0
- package/dist/github/webhook.d.ts.map +1 -0
- package/dist/github/webhook.js +50 -0
- package/dist/github/webhook.js.map +1 -0
- package/dist/lib/annotation.d.ts +23 -0
- package/dist/lib/annotation.d.ts.map +1 -0
- package/dist/lib/annotation.js +103 -0
- package/dist/lib/annotation.js.map +1 -0
- package/dist/lib/backtrace.d.ts +40 -0
- package/dist/lib/backtrace.d.ts.map +1 -0
- package/dist/lib/backtrace.js +169 -0
- package/dist/lib/backtrace.js.map +1 -0
- package/dist/lib/board.d.ts +74 -0
- package/dist/lib/board.d.ts.map +1 -0
- package/dist/lib/board.js +640 -0
- package/dist/lib/board.js.map +1 -0
- package/dist/lib/clone.d.ts +12 -0
- package/dist/lib/clone.d.ts.map +1 -0
- package/dist/lib/clone.js +30 -0
- package/dist/lib/clone.js.map +1 -0
- package/dist/lib/comment-bodies.d.ts +17 -0
- package/dist/lib/comment-bodies.d.ts.map +1 -0
- package/dist/lib/comment-bodies.js +51 -0
- package/dist/lib/comment-bodies.js.map +1 -0
- package/dist/lib/crosscheck-commit.d.ts +2 -0
- package/dist/lib/crosscheck-commit.d.ts.map +1 -0
- package/dist/lib/crosscheck-commit.js +4 -0
- package/dist/lib/crosscheck-commit.js.map +1 -0
- package/dist/lib/diff-hash.d.ts +16 -0
- package/dist/lib/diff-hash.d.ts.map +1 -0
- package/dist/lib/diff-hash.js +71 -0
- package/dist/lib/diff-hash.js.map +1 -0
- package/dist/lib/durations.d.ts +5 -0
- package/dist/lib/durations.d.ts.map +1 -0
- package/dist/lib/durations.js +39 -0
- package/dist/lib/durations.js.map +1 -0
- package/dist/lib/event-fields.d.ts +6 -0
- package/dist/lib/event-fields.d.ts.map +1 -0
- package/dist/lib/event-fields.js +20 -0
- package/dist/lib/event-fields.js.map +1 -0
- package/dist/lib/filter.d.ts +2 -0
- package/dist/lib/filter.d.ts.map +1 -0
- package/dist/lib/filter.js +4 -0
- package/dist/lib/filter.js.map +1 -0
- package/dist/lib/fortune.d.ts +2 -0
- package/dist/lib/fortune.d.ts.map +1 -0
- package/dist/lib/fortune.js +26 -0
- package/dist/lib/fortune.js.map +1 -0
- package/dist/lib/languages.d.ts +3 -0
- package/dist/lib/languages.d.ts.map +1 -0
- package/dist/lib/languages.js +26 -0
- package/dist/lib/languages.js.map +1 -0
- package/dist/lib/log-analysis.d.ts +17 -0
- package/dist/lib/log-analysis.d.ts.map +1 -0
- package/dist/lib/log-analysis.js +72 -0
- package/dist/lib/log-analysis.js.map +1 -0
- package/dist/lib/logger.d.ts +14 -0
- package/dist/lib/logger.d.ts.map +1 -0
- package/dist/lib/logger.js +84 -0
- package/dist/lib/logger.js.map +1 -0
- package/dist/lib/port.d.ts +2 -0
- package/dist/lib/port.d.ts.map +1 -0
- package/dist/lib/port.js +21 -0
- package/dist/lib/port.js.map +1 -0
- package/dist/lib/pr-lock.d.ts +4 -0
- package/dist/lib/pr-lock.d.ts.map +1 -0
- package/dist/lib/pr-lock.js +91 -0
- package/dist/lib/pr-lock.js.map +1 -0
- package/dist/lib/pr-picker.d.ts +10 -0
- package/dist/lib/pr-picker.d.ts.map +1 -0
- package/dist/lib/pr-picker.js +80 -0
- package/dist/lib/pr-picker.js.map +1 -0
- package/dist/lib/pr-status.d.ts +206 -0
- package/dist/lib/pr-status.d.ts.map +1 -0
- package/dist/lib/pr-status.js +613 -0
- package/dist/lib/pr-status.js.map +1 -0
- package/dist/lib/repo-picker.d.ts +23 -0
- package/dist/lib/repo-picker.d.ts.map +1 -0
- package/dist/lib/repo-picker.js +411 -0
- package/dist/lib/repo-picker.js.map +1 -0
- package/dist/lib/review-models.d.ts +7 -0
- package/dist/lib/review-models.d.ts.map +1 -0
- package/dist/lib/review-models.js +32 -0
- package/dist/lib/review-models.js.map +1 -0
- package/dist/lib/runner.d.ts +65 -0
- package/dist/lib/runner.d.ts.map +1 -0
- package/dist/lib/runner.js +710 -0
- package/dist/lib/runner.js.map +1 -0
- package/dist/lib/scan-cache.d.ts +31 -0
- package/dist/lib/scan-cache.d.ts.map +1 -0
- package/dist/lib/scan-cache.js +112 -0
- package/dist/lib/scan-cache.js.map +1 -0
- package/dist/lib/scopes.d.ts +16 -0
- package/dist/lib/scopes.d.ts.map +1 -0
- package/dist/lib/scopes.js +37 -0
- package/dist/lib/scopes.js.map +1 -0
- package/dist/lib/sha-cache.d.ts +7 -0
- package/dist/lib/sha-cache.d.ts.map +1 -0
- package/dist/lib/sha-cache.js +44 -0
- package/dist/lib/sha-cache.js.map +1 -0
- package/dist/lib/smart-switch.d.ts +44 -0
- package/dist/lib/smart-switch.d.ts.map +1 -0
- package/dist/lib/smart-switch.js +145 -0
- package/dist/lib/smart-switch.js.map +1 -0
- package/dist/lib/verdict.d.ts +9 -0
- package/dist/lib/verdict.d.ts.map +1 -0
- package/dist/lib/verdict.js +52 -0
- package/dist/lib/verdict.js.map +1 -0
- package/dist/lib/workflow.d.ts +85 -0
- package/dist/lib/workflow.d.ts.map +1 -0
- package/dist/lib/workflow.js +116 -0
- package/dist/lib/workflow.js.map +1 -0
- package/dist/reviewers/address.d.ts +5 -0
- package/dist/reviewers/address.d.ts.map +1 -0
- package/dist/reviewers/address.js +87 -0
- package/dist/reviewers/address.js.map +1 -0
- package/dist/reviewers/claude.d.ts +12 -0
- package/dist/reviewers/claude.d.ts.map +1 -0
- package/dist/reviewers/claude.js +78 -0
- package/dist/reviewers/claude.js.map +1 -0
- package/dist/reviewers/codex.d.ts +9 -0
- package/dist/reviewers/codex.d.ts.map +1 -0
- package/dist/reviewers/codex.js +121 -0
- package/dist/reviewers/codex.js.map +1 -0
- package/dist/reviewers/conflict-resolve.d.ts +15 -0
- package/dist/reviewers/conflict-resolve.d.ts.map +1 -0
- package/dist/reviewers/conflict-resolve.js +219 -0
- package/dist/reviewers/conflict-resolve.js.map +1 -0
- package/dist/reviewers/fix.d.ts +7 -0
- package/dist/reviewers/fix.d.ts.map +1 -0
- package/dist/reviewers/fix.js +197 -0
- package/dist/reviewers/fix.js.map +1 -0
- package/get-started.md +1271 -0
- package/get-started.zh.md +1208 -0
- package/package.json +75 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/github/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Config } from '../config/schema.js';
|
|
2
|
+
export type PROrigin = 'claude' | 'codex' | 'human';
|
|
3
|
+
export declare function detectOriginFromBody(prBody: string, config: Config): PROrigin | null;
|
|
4
|
+
export declare function detectOriginFromCommits(messages: string[], config: Config): PROrigin | null;
|
|
5
|
+
export declare function detectOriginFromBranch(headRef: string, config: Config): PROrigin | null;
|
|
6
|
+
export declare function detectOriginFull(prBody: string, headRef: string, owner: string, repo: string, prNumber: number, config: Config, token: string, author?: string): Promise<{
|
|
7
|
+
origin: PROrigin;
|
|
8
|
+
method: string;
|
|
9
|
+
}>;
|
|
10
|
+
export declare function detectPROrigin(prBody: string, config: Config, author?: string): PROrigin;
|
|
11
|
+
export declare function assignReviewer(origin: PROrigin, config: Config): Promise<'claude' | 'codex' | null>;
|
|
12
|
+
//# sourceMappingURL=detector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detector.d.ts","sourceRoot":"","sources":["../../src/github/detector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAKjD,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,CAAA;AAenD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAEpF;AAGD,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAM3F;AAGD,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAQvF;AAaD,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CA0B/C;AAID,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,CAIxF;AAeD,wBAAsB,cAAc,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,OAAO,GAAG,IAAI,CAAC,CAUzG"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { getPRCommits } from './client.js';
|
|
2
|
+
import { checkCodexAuth } from '../reviewers/codex.js';
|
|
3
|
+
import { checkClaudeAuth } from '../reviewers/claude.js';
|
|
4
|
+
// Applies codex_reviews_patterns / claude_reviews_patterns against a single text block.
|
|
5
|
+
// Returns the detected origin or null if nothing matched.
|
|
6
|
+
function matchPatterns(text, config) {
|
|
7
|
+
for (const pattern of config.routing.codex_reviews_patterns) {
|
|
8
|
+
if (new RegExp(pattern, 'i').test(text))
|
|
9
|
+
return 'claude';
|
|
10
|
+
}
|
|
11
|
+
for (const pattern of config.routing.claude_reviews_patterns) {
|
|
12
|
+
if (new RegExp(pattern, 'i').test(text))
|
|
13
|
+
return 'codex';
|
|
14
|
+
}
|
|
15
|
+
return null;
|
|
16
|
+
}
|
|
17
|
+
// Step 1 — PR body patterns
|
|
18
|
+
export function detectOriginFromBody(prBody, config) {
|
|
19
|
+
return matchPatterns(prBody ?? '', config);
|
|
20
|
+
}
|
|
21
|
+
// Step 2 — commit Co-Authored-By trailers (fetched separately, passed in)
|
|
22
|
+
export function detectOriginFromCommits(messages, config) {
|
|
23
|
+
for (const msg of messages) {
|
|
24
|
+
const result = matchPatterns(msg, config);
|
|
25
|
+
if (result !== null)
|
|
26
|
+
return result;
|
|
27
|
+
}
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
// Step 3 — branch name prefix
|
|
31
|
+
export function detectOriginFromBranch(headRef, config) {
|
|
32
|
+
for (const prefix of config.routing.claude_branch_prefixes) {
|
|
33
|
+
if (headRef.startsWith(prefix))
|
|
34
|
+
return 'claude';
|
|
35
|
+
}
|
|
36
|
+
for (const prefix of config.routing.codex_branch_prefixes) {
|
|
37
|
+
if (headRef.startsWith(prefix))
|
|
38
|
+
return 'codex';
|
|
39
|
+
}
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
// Full detection chain: body → commits → branch → author_routes → human
|
|
43
|
+
// API failure on the commits fetch is non-fatal; falls through to branch check.
|
|
44
|
+
//
|
|
45
|
+
// author_routes semantics differ by mode:
|
|
46
|
+
// - single-vendor mode: applies normally (only one vendor reviews anyway, so a wrong
|
|
47
|
+
// guess just means an unwanted review, never a wrong-vendor review).
|
|
48
|
+
// - cross-vendor mode with both vendors enabled: author_routes is demoted — when the
|
|
49
|
+
// user actively uses multiple agents, a static author→vendor map will route the
|
|
50
|
+
// other agent's PRs to the wrong reviewer. We fall through to fallback_reviewer
|
|
51
|
+
// instead, which can be set to a single vendor or 'skip' to handle this case
|
|
52
|
+
// explicitly.
|
|
53
|
+
export async function detectOriginFull(prBody, headRef, owner, repo, prNumber, config, token, author) {
|
|
54
|
+
const fromBody = detectOriginFromBody(prBody, config);
|
|
55
|
+
if (fromBody !== null)
|
|
56
|
+
return { origin: fromBody, method: 'body' };
|
|
57
|
+
try {
|
|
58
|
+
const messages = await getPRCommits(owner, repo, prNumber, token);
|
|
59
|
+
const fromCommits = detectOriginFromCommits(messages, config);
|
|
60
|
+
if (fromCommits !== null)
|
|
61
|
+
return { origin: fromCommits, method: 'commits' };
|
|
62
|
+
}
|
|
63
|
+
catch { /* API failure — fall through */ }
|
|
64
|
+
const fromBranch = detectOriginFromBranch(headRef, config);
|
|
65
|
+
if (fromBranch !== null)
|
|
66
|
+
return { origin: fromBranch, method: 'branch' };
|
|
67
|
+
if (author && config.routing.author_routes[author]) {
|
|
68
|
+
const bothEnabled = config.mode === 'cross-vendor'
|
|
69
|
+
&& config.vendors.claude.enabled
|
|
70
|
+
&& config.vendors.codex.enabled;
|
|
71
|
+
if (!bothEnabled) {
|
|
72
|
+
return { origin: config.routing.author_routes[author], method: 'author_routes' };
|
|
73
|
+
}
|
|
74
|
+
// Cross-vendor with both vendors enabled: log the bypass so users can spot it
|
|
75
|
+
// in logs without changing reviewer selection silently.
|
|
76
|
+
return { origin: 'human', method: 'author_routes_bypassed' };
|
|
77
|
+
}
|
|
78
|
+
return { origin: 'human', method: 'none' };
|
|
79
|
+
}
|
|
80
|
+
// Backward-compatible sync variant (body + author_routes only).
|
|
81
|
+
// Use detectOriginFull for the full async chain.
|
|
82
|
+
export function detectPROrigin(prBody, config, author) {
|
|
83
|
+
return detectOriginFromBody(prBody, config)
|
|
84
|
+
?? (author ? (config.routing.author_routes[author] ?? null) : null)
|
|
85
|
+
?? 'human';
|
|
86
|
+
}
|
|
87
|
+
async function resolveFallback(config) {
|
|
88
|
+
const fb = config.routing.fallback_reviewer;
|
|
89
|
+
if (fb === null)
|
|
90
|
+
return null;
|
|
91
|
+
if (fb === 'codex')
|
|
92
|
+
return config.vendors.codex.enabled ? 'codex' : null;
|
|
93
|
+
if (fb === 'claude')
|
|
94
|
+
return config.vendors.claude.enabled ? 'claude' : null;
|
|
95
|
+
// 'auto': use runtime capability checks so a Claude-only install doesn't
|
|
96
|
+
// attempt Codex just because both vendors are enabled in config by default.
|
|
97
|
+
const [codexAuth, claudeAuth] = await Promise.all([checkCodexAuth(), checkClaudeAuth()]);
|
|
98
|
+
if (codexAuth.ok)
|
|
99
|
+
return 'codex';
|
|
100
|
+
if (claudeAuth.ok)
|
|
101
|
+
return 'claude';
|
|
102
|
+
return null;
|
|
103
|
+
}
|
|
104
|
+
export async function assignReviewer(origin, config) {
|
|
105
|
+
if (config.mode === 'single-vendor') {
|
|
106
|
+
if (config.vendors.codex.enabled)
|
|
107
|
+
return 'codex';
|
|
108
|
+
if (config.vendors.claude.enabled)
|
|
109
|
+
return 'claude';
|
|
110
|
+
return null;
|
|
111
|
+
}
|
|
112
|
+
if (origin === 'claude' && config.vendors.codex.enabled)
|
|
113
|
+
return 'codex';
|
|
114
|
+
if (origin === 'codex' && config.vendors.claude.enabled)
|
|
115
|
+
return 'claude';
|
|
116
|
+
if (origin === 'human')
|
|
117
|
+
return resolveFallback(config);
|
|
118
|
+
return null;
|
|
119
|
+
}
|
|
120
|
+
//# sourceMappingURL=detector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detector.js","sourceRoot":"","sources":["../../src/github/detector.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Octokit } from 'octokit';
|
|
2
|
+
import type { PRMergeSummary } from '../lib/pr-status.js';
|
|
3
|
+
export type MergeMethod = 'merge' | 'squash' | 'rebase';
|
|
4
|
+
export declare function getPRMergeSummary(octokit: Octokit, owner: string, repo: string, pullNumber: number, baseRef: string): Promise<PRMergeSummary>;
|
|
5
|
+
export declare function mergePullRequest(octokit: Octokit, owner: string, repo: string, pullNumber: number, options: {
|
|
6
|
+
method: MergeMethod;
|
|
7
|
+
expectedHeadSha?: string;
|
|
8
|
+
}): Promise<void>;
|
|
9
|
+
//# sourceMappingURL=merge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"merge.d.ts","sourceRoot":"","sources":["../../src/github/merge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAEzD,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAA;AAEvD,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,cAAc,CAAC,CAezB;AAED,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,CAAA;CAAE,GACzD,OAAO,CAAC,IAAI,CAAC,CAQf"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export async function getPRMergeSummary(octokit, owner, repo, pullNumber, baseRef) {
|
|
2
|
+
const [{ data: pull }, protectedBase] = await Promise.all([
|
|
3
|
+
octokit.rest.pulls.get({ owner, repo, pull_number: pullNumber }),
|
|
4
|
+
getProtectedBase(octokit, owner, repo, baseRef),
|
|
5
|
+
]);
|
|
6
|
+
const mergeStateStatus = typeof pull.mergeable_state === 'string'
|
|
7
|
+
? pull.mergeable_state
|
|
8
|
+
: undefined;
|
|
9
|
+
return {
|
|
10
|
+
mergeable: pull.mergeable,
|
|
11
|
+
...(mergeStateStatus && { mergeStateStatus }),
|
|
12
|
+
protectedBase,
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
export async function mergePullRequest(octokit, owner, repo, pullNumber, options) {
|
|
16
|
+
await octokit.rest.pulls.merge({
|
|
17
|
+
owner,
|
|
18
|
+
repo,
|
|
19
|
+
pull_number: pullNumber,
|
|
20
|
+
merge_method: options.method,
|
|
21
|
+
...(options.expectedHeadSha && { sha: options.expectedHeadSha }),
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
async function getProtectedBase(octokit, owner, repo, branch) {
|
|
25
|
+
try {
|
|
26
|
+
const { data } = await octokit.rest.repos.getBranch({ owner, repo, branch });
|
|
27
|
+
return data.protected;
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=merge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"merge.js","sourceRoot":"","sources":["../../src/github/merge.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,OAAgB,EAChB,KAAa,EACb,IAAY,EACZ,UAAkB,EAClB,OAAe;IAEf,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,aAAa,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACxD,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;QAChE,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC;KAChD,CAAC,CAAA;IAEF,MAAM,gBAAgB,GAAG,OAAO,IAAI,CAAC,eAAe,KAAK,QAAQ;QAC/D,CAAC,CAAC,IAAI,CAAC,eAAe;QACtB,CAAC,CAAC,SAAS,CAAA;IAEb,OAAO;QACL,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,GAAG,CAAC,gBAAgB,IAAI,EAAE,gBAAgB,EAAE,CAAC;QAC7C,aAAa;KACd,CAAA;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,OAAgB,EAChB,KAAa,EACb,IAAY,EACZ,UAAkB,EAClB,OAA0D;IAE1D,MAAM,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QAC7B,KAAK;QACL,IAAI;QACJ,WAAW,EAAE,UAAU;QACvB,YAAY,EAAE,OAAO,CAAC,MAAM;QAC5B,GAAG,CAAC,OAAO,CAAC,eAAe,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,eAAe,EAAE,CAAC;KACjE,CAAC,CAAA;AACJ,CAAC;AAED,KAAK,UAAU,gBAAgB,CAC7B,OAAgB,EAChB,KAAa,EACb,IAAY,EACZ,MAAc;IAEd,IAAI,CAAC;QACH,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAA;QAC5E,OAAO,IAAI,CAAC,SAAS,CAAA;IACvB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { Octokit } from 'octokit';
|
|
2
|
+
export declare function checkRemoteLock(octokit: Octokit, owner: string, repo: string, sha: string): Promise<boolean>;
|
|
3
|
+
export declare function acquireRemoteLock(octokit: Octokit, owner: string, repo: string, sha: string): Promise<void>;
|
|
4
|
+
export declare function startRemoteLockHeartbeat(octokit: Octokit, owner: string, repo: string, sha: string): () => void;
|
|
5
|
+
export declare function releaseRemoteLock(octokit: Octokit, owner: string, repo: string, sha: string, outcome: 'success' | 'failure'): Promise<void>;
|
|
6
|
+
//# sourceMappingURL=review-status.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"review-status.d.ts","sourceRoot":"","sources":["../../src/github/review-status.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAQtC,wBAAsB,eAAe,CACnC,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,OAAO,CAAC,CAYlB;AAED,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,IAAI,CAAC,CAOf;AAKD,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,GACV,MAAM,IAAI,CAUZ;AAED,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,SAAS,GAAG,SAAS,GAC7B,OAAO,CAAC,IAAI,CAAC,CAMf"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
const CONTEXT = 'crosscheck/review';
|
|
2
|
+
const STALE_MS = 15 * 60 * 1000;
|
|
3
|
+
// Heartbeat keeps the pending status fresh so long-running reviews (codex
|
|
4
|
+
// thorough + fix can exceed 20 min) are not mistaken as abandoned.
|
|
5
|
+
const HEARTBEAT_INTERVAL_MS = 10 * 60 * 1000;
|
|
6
|
+
export async function checkRemoteLock(octokit, owner, repo, sha) {
|
|
7
|
+
try {
|
|
8
|
+
const { data } = await octokit.rest.repos.getCombinedStatusForRef({ owner, repo, ref: sha });
|
|
9
|
+
const status = data.statuses
|
|
10
|
+
.filter(s => s.context === CONTEXT)
|
|
11
|
+
.sort((a, b) => new Date(b.updated_at).getTime() - new Date(a.updated_at).getTime())[0];
|
|
12
|
+
if (!status || status.state !== 'pending')
|
|
13
|
+
return false;
|
|
14
|
+
const age = Date.now() - new Date(status.updated_at).getTime();
|
|
15
|
+
return age < STALE_MS;
|
|
16
|
+
}
|
|
17
|
+
catch {
|
|
18
|
+
return false;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
export async function acquireRemoteLock(octokit, owner, repo, sha) {
|
|
22
|
+
await octokit.rest.repos.createCommitStatus({
|
|
23
|
+
owner, repo, sha,
|
|
24
|
+
state: 'pending',
|
|
25
|
+
context: CONTEXT,
|
|
26
|
+
description: `Review started at ${new Date().toISOString()}`,
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
// Starts a repeating interval that refreshes the pending status timestamp so
|
|
30
|
+
// checkRemoteLock never treats an active review as stale. Returns a stop
|
|
31
|
+
// function that must be called in the finally block after the review completes.
|
|
32
|
+
export function startRemoteLockHeartbeat(octokit, owner, repo, sha) {
|
|
33
|
+
const id = setInterval(() => {
|
|
34
|
+
octokit.rest.repos.createCommitStatus({
|
|
35
|
+
owner, repo, sha,
|
|
36
|
+
state: 'pending',
|
|
37
|
+
context: CONTEXT,
|
|
38
|
+
description: `Review active at ${new Date().toISOString()}`,
|
|
39
|
+
}).catch(() => { });
|
|
40
|
+
}, HEARTBEAT_INTERVAL_MS);
|
|
41
|
+
return () => clearInterval(id);
|
|
42
|
+
}
|
|
43
|
+
export async function releaseRemoteLock(octokit, owner, repo, sha, outcome) {
|
|
44
|
+
try {
|
|
45
|
+
await octokit.rest.repos.createCommitStatus({
|
|
46
|
+
owner, repo, sha, state: outcome, context: CONTEXT,
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
catch { /* best-effort */ }
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=review-status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"review-status.js","sourceRoot":"","sources":["../../src/github/review-status.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,GAAG,mBAAmB,CAAA;AACnC,MAAM,QAAQ,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAA;AAC/B,0EAA0E;AAC1E,mEAAmE;AACnE,MAAM,qBAAqB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAA;AAE5C,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,OAAgB,EAChB,KAAa,EACb,IAAY,EACZ,GAAW;IAEX,IAAI,CAAC;QACH,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAA;QAC5F,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ;aACzB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC;aAClC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;QACzF,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS;YAAE,OAAO,KAAK,CAAA;QACvD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,CAAA;QAC9D,OAAO,GAAG,GAAG,QAAQ,CAAA;IACvB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,OAAgB,EAChB,KAAa,EACb,IAAY,EACZ,GAAW;IAEX,MAAM,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC;QAC1C,KAAK,EAAE,IAAI,EAAE,GAAG;QAChB,KAAK,EAAE,SAAS;QAChB,OAAO,EAAE,OAAO;QAChB,WAAW,EAAE,qBAAqB,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE;KAC7D,CAAC,CAAA;AACJ,CAAC;AAED,6EAA6E;AAC7E,yEAAyE;AACzE,gFAAgF;AAChF,MAAM,UAAU,wBAAwB,CACtC,OAAgB,EAChB,KAAa,EACb,IAAY,EACZ,GAAW;IAEX,MAAM,EAAE,GAAG,WAAW,CAAC,GAAG,EAAE;QAC1B,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC;YACpC,KAAK,EAAE,IAAI,EAAE,GAAG;YAChB,KAAK,EAAE,SAAS;YAChB,OAAO,EAAE,OAAO;YAChB,WAAW,EAAE,oBAAoB,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE;SAC5D,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAqB,CAAC,CAAC,CAAA;IACvC,CAAC,EAAE,qBAAqB,CAAC,CAAA;IACzB,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,CAAA;AAChC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,OAAgB,EAChB,KAAa,EACb,IAAY,EACZ,GAAW,EACX,OAA8B;IAE9B,IAAI,CAAC;QACH,MAAM,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC;YAC1C,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO;SACnD,CAAC,CAAA;IACJ,CAAC;IAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,CAAC;AAC/B,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { type IncomingMessage, type ServerResponse } from 'http';
|
|
2
|
+
import type { Config } from '../config/schema.js';
|
|
3
|
+
export interface PREvent {
|
|
4
|
+
action: string;
|
|
5
|
+
number: number;
|
|
6
|
+
pull_request: {
|
|
7
|
+
title: string;
|
|
8
|
+
body: string;
|
|
9
|
+
head: {
|
|
10
|
+
ref: string;
|
|
11
|
+
sha: string;
|
|
12
|
+
repo: {
|
|
13
|
+
full_name: string;
|
|
14
|
+
} | null;
|
|
15
|
+
};
|
|
16
|
+
base: {
|
|
17
|
+
ref: string;
|
|
18
|
+
repo: {
|
|
19
|
+
full_name: string;
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
html_url: string;
|
|
23
|
+
user: {
|
|
24
|
+
login: string;
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
repository: {
|
|
28
|
+
name: string;
|
|
29
|
+
owner: {
|
|
30
|
+
login: string;
|
|
31
|
+
};
|
|
32
|
+
clone_url: string;
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
export interface WebhookFileLogEntry {
|
|
36
|
+
level: 'info' | 'warn' | 'error';
|
|
37
|
+
event: string;
|
|
38
|
+
[key: string]: unknown;
|
|
39
|
+
}
|
|
40
|
+
export declare function createWebhookServer(config: Config, webhookSecret: string, onPR: (event: PREvent) => void, onLog: (msg: string) => void, onFileLog?: (entry: WebhookFileLogEntry) => void): import("http").Server<typeof IncomingMessage, typeof ServerResponse>;
|
|
41
|
+
//# sourceMappingURL=webhook.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webhook.d.ts","sourceRoot":"","sources":["../../src/github/webhook.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,eAAe,EAAE,KAAK,cAAc,EAAE,MAAM,MAAM,CAAA;AAC9E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAGjD,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,EAAE;QACZ,KAAK,EAAE,MAAM,CAAA;QACb,IAAI,EAAE,MAAM,CAAA;QACZ,IAAI,EAAE;YAAE,GAAG,EAAE,MAAM,CAAC;YAAC,GAAG,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE;gBAAE,SAAS,EAAE,MAAM,CAAA;aAAE,GAAG,IAAI,CAAA;SAAE,CAAA;QACtE,IAAI,EAAE;YAAE,GAAG,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE;gBAAE,SAAS,EAAE,MAAM,CAAA;aAAE,CAAA;SAAE,CAAA;QAClD,QAAQ,EAAE,MAAM,CAAA;QAChB,IAAI,EAAE;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,CAAA;KACxB,CAAA;IACD,UAAU,EAAE;QACV,IAAI,EAAE,MAAM,CAAA;QACZ,KAAK,EAAE;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,CAAA;QACxB,SAAS,EAAE,MAAM,CAAA;KAClB,CAAA;CACF;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAA;IAChC,KAAK,EAAE,MAAM,CAAA;IACb,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,EACrB,IAAI,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,EAC9B,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,EAC5B,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,IAAI,wEAoDjD"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { createServer } from 'http';
|
|
2
|
+
import { verifyWebhookSignature } from './client.js';
|
|
3
|
+
export function createWebhookServer(config, webhookSecret, onPR, onLog, onFileLog) {
|
|
4
|
+
const server = createServer(async (req, res) => {
|
|
5
|
+
const { pathname } = new URL(req.url ?? '/', `http://localhost`);
|
|
6
|
+
if (pathname !== config.server.webhook_path) {
|
|
7
|
+
res.writeHead(404).end();
|
|
8
|
+
return;
|
|
9
|
+
}
|
|
10
|
+
if (req.method !== 'POST') {
|
|
11
|
+
res.writeHead(405).end();
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
const chunks = [];
|
|
15
|
+
for await (const chunk of req)
|
|
16
|
+
chunks.push(chunk);
|
|
17
|
+
const rawBody = Buffer.concat(chunks).toString('utf8');
|
|
18
|
+
const signature = req.headers['x-hub-signature-256'] ?? '';
|
|
19
|
+
if (!verifyWebhookSignature(rawBody, signature, webhookSecret)) {
|
|
20
|
+
onLog('⚠ Rejected request with invalid webhook signature');
|
|
21
|
+
onFileLog?.({ level: 'warn', event: 'webhook_sig_invalid', ip: req.socket.remoteAddress });
|
|
22
|
+
res.writeHead(401).end();
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
const event = req.headers['x-github-event'];
|
|
26
|
+
if (event !== 'pull_request') {
|
|
27
|
+
res.writeHead(200).end('ok');
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
let body;
|
|
31
|
+
try {
|
|
32
|
+
body = JSON.parse(rawBody);
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
onFileLog?.({ level: 'error', event: 'webhook_parse_error', ip: req.socket.remoteAddress });
|
|
36
|
+
res.writeHead(400).end();
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
if (body.action === 'opened' || body.action === 'synchronize') {
|
|
40
|
+
res.writeHead(200).end('ok');
|
|
41
|
+
// async — don't block the webhook response
|
|
42
|
+
setImmediate(() => onPR(body));
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
res.writeHead(200).end('ok');
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
return server;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=webhook.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webhook.js","sourceRoot":"","sources":["../../src/github/webhook.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAA6C,MAAM,MAAM,CAAA;AAE9E,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA;AA0BpD,MAAM,UAAU,mBAAmB,CACjC,MAAc,EACd,aAAqB,EACrB,IAA8B,EAC9B,KAA4B,EAC5B,SAAgD;IAEhD,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,EAAE,GAAoB,EAAE,GAAmB,EAAE,EAAE;QAC9E,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,EAAE,kBAAkB,CAAC,CAAA;QAEhE,IAAI,QAAQ,KAAK,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;YAC5C,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAA;YACxB,OAAM;QACR,CAAC;QAED,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YAC1B,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAA;YACxB,OAAM;QACR,CAAC;QAED,MAAM,MAAM,GAAa,EAAE,CAAA;QAC3B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG;YAAE,MAAM,CAAC,IAAI,CAAC,KAAe,CAAC,CAAA;QAC3D,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;QAEtD,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,qBAAqB,CAAW,IAAI,EAAE,CAAA;QACpE,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE,SAAS,EAAE,aAAa,CAAC,EAAE,CAAC;YAC/D,KAAK,CAAC,oDAAoD,CAAC,CAAA;YAC3D,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,qBAAqB,EAAE,EAAE,EAAE,GAAG,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAA;YAC1F,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAA;YACxB,OAAM;QACR,CAAC;QAED,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAW,CAAA;QACrD,IAAI,KAAK,KAAK,cAAc,EAAE,CAAC;YAC7B,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;YAC5B,OAAM;QACR,CAAC;QAED,IAAI,IAAa,CAAA;QACjB,IAAI,CAAC;YACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAY,CAAA;QACvC,CAAC;QAAC,MAAM,CAAC;YACP,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,qBAAqB,EAAE,EAAE,EAAE,GAAG,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAA;YAC3F,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAA;YACxB,OAAM;QACR,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,aAAa,EAAE,CAAC;YAC9D,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;YAC5B,2CAA2C;YAC3C,YAAY,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;QAChC,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAC9B,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,OAAO,MAAM,CAAA;AACf,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export type CrosscheckStepType = 'review' | 'recheck' | 'fix' | 'conflict-resolve';
|
|
2
|
+
export interface CrosscheckAnnotationInput {
|
|
3
|
+
origin: string;
|
|
4
|
+
reviewer: string;
|
|
5
|
+
verdict: string;
|
|
6
|
+
type: CrosscheckStepType | string;
|
|
7
|
+
model: string;
|
|
8
|
+
round: number;
|
|
9
|
+
service: string;
|
|
10
|
+
sha?: string;
|
|
11
|
+
}
|
|
12
|
+
export interface CrosscheckCommitTrailerInput {
|
|
13
|
+
reviewer: string;
|
|
14
|
+
model: string;
|
|
15
|
+
step: CrosscheckStepType;
|
|
16
|
+
service: string;
|
|
17
|
+
}
|
|
18
|
+
export declare function buildAnnotation(input: CrosscheckAnnotationInput): string;
|
|
19
|
+
export declare function parseAnnotation(body: string): CrosscheckAnnotationInput | null;
|
|
20
|
+
export declare function parseAnnotationFields(body: string): ReadonlyMap<string, string> | null;
|
|
21
|
+
export declare function parseAnnotationFieldsFenced(body: string): ReadonlyMap<string, string> | null;
|
|
22
|
+
export declare function buildCommitTrailers(input: CrosscheckCommitTrailerInput): string;
|
|
23
|
+
//# sourceMappingURL=annotation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"annotation.d.ts","sourceRoot":"","sources":["../../src/lib/annotation.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,kBAAkB,GAAG,QAAQ,GAAG,SAAS,GAAG,KAAK,GAAG,kBAAkB,CAAA;AAElF,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,kBAAkB,GAAG,MAAM,CAAA;IACjC,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,GAAG,CAAC,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,kBAAkB,CAAA;IACxB,OAAO,EAAE,MAAM,CAAA;CAChB;AASD,wBAAgB,eAAe,CAAC,KAAK,EAAE,yBAAyB,GAAG,MAAM,CAGxE;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,yBAAyB,GAAG,IAAI,CAoB9E;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAEtF;AASD,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAe5F;AAgBD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,4BAA4B,GAAG,MAAM,CAO/E"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
const DEFAULT_TYPE = 'review';
|
|
2
|
+
const DEFAULT_MODEL = 'default';
|
|
3
|
+
const DEFAULT_ROUND = 1;
|
|
4
|
+
const DEFAULT_SERVICE = 'crosscheck';
|
|
5
|
+
const STEP_TYPES = new Set(['review', 'recheck', 'fix', 'conflict-resolve']);
|
|
6
|
+
export function buildAnnotation(input) {
|
|
7
|
+
const sha = input.sha ? ` sha=${fieldValue(input.sha)}` : '';
|
|
8
|
+
return `<!-- crosscheck: origin=${fieldValue(input.origin)} reviewer=${fieldValue(input.reviewer)} model=${fieldValue(input.model)} type=${fieldValue(input.type)} round=${input.round} verdict=${fieldValue(input.verdict)} service=${fieldValue(input.service)}${sha} -->`;
|
|
9
|
+
}
|
|
10
|
+
export function parseAnnotation(body) {
|
|
11
|
+
const fields = parseAnnotationFields(body);
|
|
12
|
+
if (!fields)
|
|
13
|
+
return null;
|
|
14
|
+
const origin = fields.get('origin');
|
|
15
|
+
const reviewer = fields.get('reviewer');
|
|
16
|
+
if (!origin || !reviewer)
|
|
17
|
+
return null;
|
|
18
|
+
// Defaults keep legacy annotations parseable:
|
|
19
|
+
// type=review, round=1, service=crosscheck, model=default.
|
|
20
|
+
return {
|
|
21
|
+
origin,
|
|
22
|
+
reviewer,
|
|
23
|
+
model: fields.get('model') ?? DEFAULT_MODEL,
|
|
24
|
+
type: parseType(fields.get('type')),
|
|
25
|
+
round: parseRound(fields.get('round')),
|
|
26
|
+
verdict: fields.get('verdict') ?? 'UNKNOWN',
|
|
27
|
+
service: fields.get('service') ?? DEFAULT_SERVICE,
|
|
28
|
+
...(fields.has('sha') && { sha: fields.get('sha') }),
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
export function parseAnnotationFields(body) {
|
|
32
|
+
return parseAnnotationFieldsFenced(body);
|
|
33
|
+
}
|
|
34
|
+
// Like parseAnnotationFields but skips annotations inside fenced code blocks
|
|
35
|
+
// (``` or ~~~). Prevents annotations in examples from being misread as the
|
|
36
|
+
// authoritative crosscheck marker for a comment.
|
|
37
|
+
//
|
|
38
|
+
// Bareword tokens (e.g. `fix_applied`, `conflict_resolved`) that have no `=`
|
|
39
|
+
// are stored in the returned map under the key '__marker__' so callers can
|
|
40
|
+
// detect them without special-casing the loop.
|
|
41
|
+
export function parseAnnotationFieldsFenced(body) {
|
|
42
|
+
let inFence = false;
|
|
43
|
+
let lastMatch = null;
|
|
44
|
+
for (const line of body.split('\n')) {
|
|
45
|
+
const trimmed = line.trim();
|
|
46
|
+
if (trimmed.startsWith('```') || trimmed.startsWith('~~~')) {
|
|
47
|
+
inFence = !inFence;
|
|
48
|
+
continue;
|
|
49
|
+
}
|
|
50
|
+
if (inFence)
|
|
51
|
+
continue;
|
|
52
|
+
const match = trimmed.match(/^<!--\s*crosscheck:\s*([^>]*)-->/);
|
|
53
|
+
if (match)
|
|
54
|
+
lastMatch = match[1];
|
|
55
|
+
}
|
|
56
|
+
if (!lastMatch)
|
|
57
|
+
return null;
|
|
58
|
+
return parseFieldsWithMarker(lastMatch);
|
|
59
|
+
}
|
|
60
|
+
function parseFieldsWithMarker(attrs) {
|
|
61
|
+
const fields = new Map();
|
|
62
|
+
for (const token of attrs.trim().split(/\s+/).filter(Boolean)) {
|
|
63
|
+
const eq = token.indexOf('=');
|
|
64
|
+
if (eq === -1) {
|
|
65
|
+
// Bareword token: store as marker (last one wins, matching legacy behaviour)
|
|
66
|
+
fields.set('__marker__', token);
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
fields.set(token.slice(0, eq), token.slice(eq + 1));
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return fields;
|
|
73
|
+
}
|
|
74
|
+
export function buildCommitTrailers(input) {
|
|
75
|
+
return [
|
|
76
|
+
`Crosscheck-Reviewer: ${fieldValue(input.reviewer)}`,
|
|
77
|
+
`Crosscheck-Model: ${fieldValue(input.model)}`,
|
|
78
|
+
`Crosscheck-Step: ${fieldValue(input.step)}`,
|
|
79
|
+
`Crosscheck-Service: ${fieldValue(input.service)}`,
|
|
80
|
+
].join('\n');
|
|
81
|
+
}
|
|
82
|
+
function parseFields(attrs) {
|
|
83
|
+
const fields = new Map();
|
|
84
|
+
for (const match of attrs.matchAll(/\b([a-z_]+)=([^\s]+)/g)) {
|
|
85
|
+
fields.set(match[1], match[2]);
|
|
86
|
+
}
|
|
87
|
+
return fields;
|
|
88
|
+
}
|
|
89
|
+
function parseType(value) {
|
|
90
|
+
if (value === undefined)
|
|
91
|
+
return DEFAULT_TYPE;
|
|
92
|
+
return STEP_TYPES.has(value) ? value : value;
|
|
93
|
+
}
|
|
94
|
+
function parseRound(value) {
|
|
95
|
+
if (value === undefined)
|
|
96
|
+
return DEFAULT_ROUND;
|
|
97
|
+
const parsed = Number.parseInt(value, 10);
|
|
98
|
+
return Number.isInteger(parsed) && parsed > 0 ? parsed : DEFAULT_ROUND;
|
|
99
|
+
}
|
|
100
|
+
function fieldValue(value) {
|
|
101
|
+
return value.trim().replace(/\s+/g, '_');
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=annotation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"annotation.js","sourceRoot":"","sources":["../../src/lib/annotation.ts"],"names":[],"mappings":"AAsBA,MAAM,YAAY,GAAuB,QAAQ,CAAA;AACjD,MAAM,aAAa,GAAG,SAAS,CAAA;AAC/B,MAAM,aAAa,GAAG,CAAC,CAAA;AACvB,MAAM,eAAe,GAAG,YAAY,CAAA;AAEpC,MAAM,UAAU,GAAG,IAAI,GAAG,CAAqB,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,kBAAkB,CAAC,CAAC,CAAA;AAEhG,MAAM,UAAU,eAAe,CAAC,KAAgC;IAC9D,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;IAC5D,OAAO,2BAA2B,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,KAAK,CAAC,KAAK,YAAY,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,GAAG,MAAM,CAAA;AAC9Q,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,MAAM,MAAM,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAA;IAC1C,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAA;IAExB,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IACnC,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;IACvC,IAAI,CAAC,MAAM,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAA;IAErC,8CAA8C;IAC9C,2DAA2D;IAC3D,OAAO;QACL,MAAM;QACN,QAAQ;QACR,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,aAAa;QAC3C,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACnC,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACtC,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,SAAS;QAC3C,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,eAAe;QACjD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;KACrD,CAAA;AACH,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,IAAY;IAChD,OAAO,2BAA2B,CAAC,IAAI,CAAC,CAAA;AAC1C,CAAC;AAED,6EAA6E;AAC7E,2EAA2E;AAC3E,iDAAiD;AACjD,EAAE;AACF,6EAA6E;AAC7E,2EAA2E;AAC3E,+CAA+C;AAC/C,MAAM,UAAU,2BAA2B,CAAC,IAAY;IACtD,IAAI,OAAO,GAAG,KAAK,CAAA;IACnB,IAAI,SAAS,GAAkB,IAAI,CAAA;IACnC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACpC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;QAC3B,IAAI,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3D,OAAO,GAAG,CAAC,OAAO,CAAA;YAClB,SAAQ;QACV,CAAC;QACD,IAAI,OAAO;YAAE,SAAQ;QACrB,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAA;QAC/D,IAAI,KAAK;YAAE,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;IACjC,CAAC;IACD,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAA;IAC3B,OAAO,qBAAqB,CAAC,SAAS,CAAC,CAAA;AACzC,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAa;IAC1C,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAA;IACxC,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;QAC9D,MAAM,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QAC7B,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC;YACd,6EAA6E;YAC7E,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,KAAK,CAAC,CAAA;QACjC,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAA;QACrD,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,KAAmC;IACrE,OAAO;QACL,wBAAwB,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE;QACpD,qBAAqB,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;QAC9C,oBAAoB,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;QAC5C,uBAAuB,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;KACnD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACd,CAAC;AAED,SAAS,WAAW,CAAC,KAAa;IAChC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAA;IACxC,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,QAAQ,CAAC,uBAAuB,CAAC,EAAE,CAAC;QAC5D,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IAChC,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED,SAAS,SAAS,CAAC,KAAyB;IAC1C,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,YAAY,CAAA;IAC5C,OAAO,UAAU,CAAC,GAAG,CAAC,KAA2B,CAAC,CAAC,CAAC,CAAE,KAA4B,CAAC,CAAC,CAAC,KAAK,CAAA;AAC5F,CAAC;AAED,SAAS,UAAU,CAAC,KAAyB;IAC3C,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,aAAa,CAAA;IAC7C,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;IACzC,OAAO,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAA;AACxE,CAAC;AAED,SAAS,UAAU,CAAC,KAAa;IAC/B,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;AAC1C,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { Config } from '../config/schema.js';
|
|
2
|
+
import { type OpenPR } from '../github/client.js';
|
|
3
|
+
import { type PRStatus, type PRStatusLogEvent } from './pr-status.js';
|
|
4
|
+
export type BacktraceScope = {
|
|
5
|
+
org: string;
|
|
6
|
+
} | {
|
|
7
|
+
owner: string;
|
|
8
|
+
repo: string;
|
|
9
|
+
};
|
|
10
|
+
export interface BacktracePR extends OpenPR {
|
|
11
|
+
owner: string;
|
|
12
|
+
repo: string;
|
|
13
|
+
}
|
|
14
|
+
export interface BacktraceResult {
|
|
15
|
+
queued: BacktracePR[];
|
|
16
|
+
alreadyReviewed: number;
|
|
17
|
+
skippedAuthor: number;
|
|
18
|
+
}
|
|
19
|
+
export interface ScanFailure {
|
|
20
|
+
owner?: string;
|
|
21
|
+
repo?: string;
|
|
22
|
+
pr?: number;
|
|
23
|
+
stage: 'scope' | 'repo' | 'pr';
|
|
24
|
+
message: string;
|
|
25
|
+
}
|
|
26
|
+
export interface ScanOptions {
|
|
27
|
+
logEvents?: PRStatusLogEvent[];
|
|
28
|
+
staleAfter?: number;
|
|
29
|
+
}
|
|
30
|
+
export interface ScanResult {
|
|
31
|
+
statuses: PRStatus[];
|
|
32
|
+
failures: ScanFailure[];
|
|
33
|
+
skippedAuthor: number;
|
|
34
|
+
scannedRepos: number;
|
|
35
|
+
scannedPRs: number;
|
|
36
|
+
}
|
|
37
|
+
export declare function buildScopesFromConfig(config: Config, token: string): Promise<BacktraceScope[]>;
|
|
38
|
+
export declare function scanUnreviewedPRs(scopes: BacktraceScope[], config: Config, token: string): Promise<BacktraceResult>;
|
|
39
|
+
export declare function scanOpenPRStatuses(scopes: BacktraceScope[], config: Config, token: string, opts?: ScanOptions): Promise<ScanResult>;
|
|
40
|
+
//# sourceMappingURL=backtrace.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backtrace.d.ts","sourceRoot":"","sources":["../../src/lib/backtrace.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAEjD,OAAO,EAQL,KAAK,MAAM,EACZ,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAGL,KAAK,QAAQ,EACb,KAAK,gBAAgB,EAEtB,MAAM,gBAAgB,CAAA;AAEvB,MAAM,MAAM,cAAc,GAAG;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAA;AAE9E,MAAM,WAAW,WAAY,SAAQ,MAAM;IACzC,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,WAAW,EAAE,CAAA;IACrB,eAAe,EAAE,MAAM,CAAA;IACvB,aAAa,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAAA;IAC9B,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,SAAS,CAAC,EAAE,gBAAgB,EAAE,CAAA;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,QAAQ,EAAE,CAAA;IACpB,QAAQ,EAAE,WAAW,EAAE,CAAA;IACvB,aAAa,EAAE,MAAM,CAAA;IACrB,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,MAAM,CAAA;CACnB;AAsDD,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,cAAc,EAAE,CAAC,CAc3B;AAMD,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,cAAc,EAAE,EACxB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,eAAe,CAAC,CAwC1B;AAED,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,cAAc,EAAE,EACxB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,IAAI,GAAE,WAAgB,GACrB,OAAO,CAAC,UAAU,CAAC,CA0ErB"}
|