@motivation-labs/crosscheck 0.12.1-beta.0 → 0.13.0-beta.13

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.
Files changed (37) hide show
  1. package/dist/__tests__/pr-lock.test.d.ts +2 -0
  2. package/dist/__tests__/pr-lock.test.d.ts.map +1 -0
  3. package/dist/__tests__/pr-lock.test.js +53 -0
  4. package/dist/__tests__/pr-lock.test.js.map +1 -0
  5. package/dist/__tests__/review-status.test.d.ts +2 -0
  6. package/dist/__tests__/review-status.test.d.ts.map +1 -0
  7. package/dist/__tests__/review-status.test.js +76 -0
  8. package/dist/__tests__/review-status.test.js.map +1 -0
  9. package/dist/commands/run.d.ts.map +1 -1
  10. package/dist/commands/run.js +35 -0
  11. package/dist/commands/run.js.map +1 -1
  12. package/dist/commands/serve.d.ts.map +1 -1
  13. package/dist/commands/serve.js +31 -1
  14. package/dist/commands/serve.js.map +1 -1
  15. package/dist/commands/watch.d.ts.map +1 -1
  16. package/dist/commands/watch.js +28 -1
  17. package/dist/commands/watch.js.map +1 -1
  18. package/dist/github/client.d.ts +2 -1
  19. package/dist/github/client.d.ts.map +1 -1
  20. package/dist/github/client.js +55 -3
  21. package/dist/github/client.js.map +1 -1
  22. package/dist/github/review-status.d.ts +6 -0
  23. package/dist/github/review-status.d.ts.map +1 -0
  24. package/dist/github/review-status.js +49 -0
  25. package/dist/github/review-status.js.map +1 -0
  26. package/dist/lib/pr-lock.d.ts +3 -0
  27. package/dist/lib/pr-lock.d.ts.map +1 -0
  28. package/dist/lib/pr-lock.js +76 -0
  29. package/dist/lib/pr-lock.js.map +1 -0
  30. package/dist/lib/runner.d.ts.map +1 -1
  31. package/dist/lib/runner.js +13 -3
  32. package/dist/lib/runner.js.map +1 -1
  33. package/dist/lib/workflow.d.ts +1 -0
  34. package/dist/lib/workflow.d.ts.map +1 -1
  35. package/dist/lib/workflow.js.map +1 -1
  36. package/get-started.md +9 -1
  37. package/package.json +1 -1
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=pr-lock.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pr-lock.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/pr-lock.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,53 @@
1
+ import { describe, it, expect, afterEach } from 'vitest';
2
+ import { writeFileSync, mkdirSync, utimesSync } from 'fs';
3
+ import { homedir } from 'os';
4
+ import { join } from 'path';
5
+ import { acquirePRLock, releasePRLock } from '../lib/pr-lock.js';
6
+ const OWNER = 'test-owner';
7
+ const REPO = 'test-repo';
8
+ const PR = 999;
9
+ const SHA = 'abc12345def67890';
10
+ afterEach(() => {
11
+ releasePRLock(OWNER, REPO, PR, SHA);
12
+ releasePRLock(OWNER, REPO, PR + 1, SHA);
13
+ });
14
+ describe('acquirePRLock', () => {
15
+ it('returns true on first acquisition', () => {
16
+ expect(acquirePRLock(OWNER, REPO, PR, SHA)).toBe(true);
17
+ });
18
+ it('returns false when lock is already held for same SHA', () => {
19
+ acquirePRLock(OWNER, REPO, PR, SHA);
20
+ expect(acquirePRLock(OWNER, REPO, PR, SHA)).toBe(false);
21
+ });
22
+ it('returns true for a different SHA on the same PR', () => {
23
+ acquirePRLock(OWNER, REPO, PR, SHA);
24
+ const newSha = 'ffffffff00000000';
25
+ expect(acquirePRLock(OWNER, REPO, PR, newSha)).toBe(true);
26
+ releasePRLock(OWNER, REPO, PR, newSha);
27
+ });
28
+ it('returns true after lock is released', () => {
29
+ acquirePRLock(OWNER, REPO, PR, SHA);
30
+ releasePRLock(OWNER, REPO, PR, SHA);
31
+ expect(acquirePRLock(OWNER, REPO, PR, SHA)).toBe(true);
32
+ });
33
+ it('does not conflict across different PR numbers', () => {
34
+ expect(acquirePRLock(OWNER, REPO, PR, SHA)).toBe(true);
35
+ expect(acquirePRLock(OWNER, REPO, PR + 1, SHA)).toBe(true);
36
+ });
37
+ it('acquires a stale lock (mtime > 20 min)', () => {
38
+ const lockDir = join(homedir(), '.crosscheck', 'locks');
39
+ mkdirSync(lockDir, { recursive: true });
40
+ const stalePath = join(lockDir, `${OWNER}-${REPO}-${PR}-${SHA.slice(0, 8)}.lock`);
41
+ writeFileSync(stalePath, '');
42
+ // Back-date the mtime to 21 minutes ago
43
+ const staleTime = new Date(Date.now() - 21 * 60 * 1000);
44
+ utimesSync(stalePath, staleTime, staleTime);
45
+ expect(acquirePRLock(OWNER, REPO, PR, SHA)).toBe(true);
46
+ });
47
+ });
48
+ describe('releasePRLock', () => {
49
+ it('does not throw when lock file does not exist', () => {
50
+ expect(() => releasePRLock(OWNER, REPO, PR, SHA)).not.toThrow();
51
+ });
52
+ });
53
+ //# sourceMappingURL=pr-lock.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pr-lock.test.js","sourceRoot":"","sources":["../../src/__tests__/pr-lock.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AACxD,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,IAAI,CAAA;AACzD,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAA;AAC5B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAEhE,MAAM,KAAK,GAAG,YAAY,CAAA;AAC1B,MAAM,IAAI,GAAG,WAAW,CAAA;AACxB,MAAM,EAAE,GAAG,GAAG,CAAA;AACd,MAAM,GAAG,GAAG,kBAAkB,CAAA;AAE9B,SAAS,CAAC,GAAG,EAAE;IACb,aAAa,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC,CAAA;IACnC,aAAa,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAA;AACzC,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACxD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC9D,aAAa,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC,CAAA;QACnC,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACzD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,aAAa,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC,CAAA;QACnC,MAAM,MAAM,GAAG,kBAAkB,CAAA;QACjC,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACzD,aAAa,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,CAAC,CAAA;IACxC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC7C,aAAa,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC,CAAA;QACnC,aAAa,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC,CAAA;QACnC,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACxD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACvD,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACtD,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC5D,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,OAAO,CAAC,CAAA;QACvD,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QACvC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,KAAK,IAAI,IAAI,IAAI,EAAE,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAA;QACjF,aAAa,CAAC,SAAS,EAAE,EAAE,CAAC,CAAA;QAC5B,wCAAwC;QACxC,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAA;QACvD,UAAU,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAA;QAC3C,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACxD,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAA;IACjE,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=review-status.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review-status.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/review-status.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,76 @@
1
+ import { describe, it, expect, vi } from 'vitest';
2
+ import { checkRemoteLock, acquireRemoteLock, releaseRemoteLock, startRemoteLockHeartbeat } from '../github/review-status.js';
3
+ function makeOctokit(state, updatedAt = new Date().toISOString()) {
4
+ return {
5
+ rest: {
6
+ repos: {
7
+ getCombinedStatusForRef: vi.fn().mockResolvedValue({
8
+ data: {
9
+ statuses: state
10
+ ? [{ context: 'crosscheck/review', state, updated_at: updatedAt }]
11
+ : [],
12
+ },
13
+ }),
14
+ createCommitStatus: vi.fn().mockResolvedValue({}),
15
+ },
16
+ },
17
+ };
18
+ }
19
+ describe('checkRemoteLock', () => {
20
+ it('returns false when no status exists', async () => {
21
+ const octokit = makeOctokit(null);
22
+ expect(await checkRemoteLock(octokit, 'o', 'r', 'sha')).toBe(false);
23
+ });
24
+ it('returns true for a fresh pending status', async () => {
25
+ const octokit = makeOctokit('pending', new Date().toISOString());
26
+ expect(await checkRemoteLock(octokit, 'o', 'r', 'sha')).toBe(true);
27
+ });
28
+ it('returns false for a pending status older than 15 minutes', async () => {
29
+ const staleDate = new Date(Date.now() - 16 * 60 * 1000).toISOString();
30
+ const octokit = makeOctokit('pending', staleDate);
31
+ expect(await checkRemoteLock(octokit, 'o', 'r', 'sha')).toBe(false);
32
+ });
33
+ it('returns false when status is success', async () => {
34
+ const octokit = makeOctokit('success', new Date().toISOString());
35
+ expect(await checkRemoteLock(octokit, 'o', 'r', 'sha')).toBe(false);
36
+ });
37
+ it('returns false when status is failure', async () => {
38
+ const octokit = makeOctokit('failure', new Date().toISOString());
39
+ expect(await checkRemoteLock(octokit, 'o', 'r', 'sha')).toBe(false);
40
+ });
41
+ it('returns false when the API throws', async () => {
42
+ const octokit = {
43
+ rest: { repos: { getCombinedStatusForRef: vi.fn().mockRejectedValue(new Error('network')) } },
44
+ };
45
+ expect(await checkRemoteLock(octokit, 'o', 'r', 'sha')).toBe(false);
46
+ });
47
+ });
48
+ describe('acquireRemoteLock', () => {
49
+ it('calls createCommitStatus with pending state', async () => {
50
+ const octokit = makeOctokit(null);
51
+ await acquireRemoteLock(octokit, 'o', 'r', 'sha');
52
+ expect(octokit.rest.repos.createCommitStatus).toHaveBeenCalledWith(expect.objectContaining({ state: 'pending', context: 'crosscheck/review' }));
53
+ });
54
+ });
55
+ describe('startRemoteLockHeartbeat', () => {
56
+ it('returns a stop function that clears the interval', () => {
57
+ const octokit = makeOctokit(null);
58
+ const stop = startRemoteLockHeartbeat(octokit, 'o', 'r', 'sha');
59
+ expect(typeof stop).toBe('function');
60
+ expect(() => stop()).not.toThrow();
61
+ });
62
+ });
63
+ describe('releaseRemoteLock', () => {
64
+ it('sets status to success', async () => {
65
+ const octokit = makeOctokit(null);
66
+ await releaseRemoteLock(octokit, 'o', 'r', 'sha', 'success');
67
+ expect(octokit.rest.repos.createCommitStatus).toHaveBeenCalledWith(expect.objectContaining({ state: 'success' }));
68
+ });
69
+ it('does not throw when API call fails', async () => {
70
+ const octokit = {
71
+ rest: { repos: { createCommitStatus: vi.fn().mockRejectedValue(new Error('network')) } },
72
+ };
73
+ await expect(releaseRemoteLock(octokit, 'o', 'r', 'sha', 'failure')).resolves.not.toThrow();
74
+ });
75
+ });
76
+ //# sourceMappingURL=review-status.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review-status.test.js","sourceRoot":"","sources":["../../src/__tests__/review-status.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"AAeA,MAAM,WAAW,OAAO;IACtB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AAQD,wBAAsB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE,OAAY,iBA2I7D"}
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"AAiBA,MAAM,WAAW,OAAO;IACtB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AAQD,wBAAsB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE,OAAY,iBA2K7D"}
@@ -11,6 +11,8 @@ import { runWorkflow } from '../lib/runner.js';
11
11
  import { loadWorkflow } from '../lib/workflow.js';
12
12
  import { formatVerdict } from '../lib/verdict.js';
13
13
  import { clonePRForReview } from '../lib/clone.js';
14
+ import { acquirePRLock, releasePRLock } from '../lib/pr-lock.js';
15
+ import { checkRemoteLock, acquireRemoteLock, releaseRemoteLock, startRemoteLockHeartbeat } from '../github/review-status.js';
14
16
  function parsePRUrl(url) {
15
17
  const m = url.match(/github\.com\/([^/]+)\/([^/]+)\/pull\/(\d+)/);
16
18
  if (!m)
@@ -89,9 +91,31 @@ export async function runRun(prUrl, opts = {}) {
89
91
  html_url: prData.html_url,
90
92
  user: { login: prData.user?.login ?? '' },
91
93
  };
94
+ const { sha } = prData.head;
95
+ if (!acquirePRLock(owner, repo, number, sha)) {
96
+ fileLog({ level: 'info', event: 'pr_skipped', repo: `${owner}/${repo}`, pr: number, reason: 'in_progress_local' });
97
+ console.log(chalk.yellow(`⚠ PR #${number} is already being reviewed by another process on this machine — skipping`));
98
+ return;
99
+ }
100
+ if (!opts.dryRun) {
101
+ if (await checkRemoteLock(octokit, owner, repo, sha)) {
102
+ releasePRLock(owner, repo, number, sha);
103
+ fileLog({ level: 'info', event: 'pr_skipped', repo: `${owner}/${repo}`, pr: number, reason: 'in_progress_remote' });
104
+ console.log(chalk.yellow(`⚠ PR #${number} is already being reviewed on another machine — skipping`));
105
+ return;
106
+ }
107
+ try {
108
+ await acquireRemoteLock(octokit, owner, repo, sha);
109
+ }
110
+ catch (err) {
111
+ releasePRLock(owner, repo, number, sha);
112
+ throw err;
113
+ }
114
+ }
92
115
  // Clone the repo
93
116
  const tmpDir = mkdtempSync(join(tmpdir(), 'crosscheck-run-'));
94
117
  const cloneSpinner = ora('Cloning repo...').start();
118
+ let stopHeartbeat = () => { };
95
119
  try {
96
120
  clonePRForReview({
97
121
  owner, repo, prNumber: number, baseRef: prData.base.ref,
@@ -99,6 +123,8 @@ export async function runRun(prUrl, opts = {}) {
99
123
  onBaseFetchFailed: () => fileLog({ level: 'warn', event: 'base_branch_fetch_skipped', repo: `${owner}/${repo}`, pr: number, base: prData.base.ref }),
100
124
  });
101
125
  cloneSpinner.succeed('Repo ready');
126
+ if (!opts.dryRun)
127
+ stopHeartbeat = startRemoteLockHeartbeat(octokit, owner, repo, sha);
102
128
  let activeSpinner = ora('').start();
103
129
  const { verdict } = await runWorkflow({
104
130
  owner,
@@ -124,13 +150,22 @@ export async function runRun(prUrl, opts = {}) {
124
150
  else {
125
151
  console.log(chalk.dim(`\n dry-run complete — no changes posted\n`));
126
152
  }
153
+ stopHeartbeat();
154
+ if (!opts.dryRun)
155
+ await releaseRemoteLock(octokit, owner, repo, sha, 'success');
127
156
  }
128
157
  catch (err) {
158
+ stopHeartbeat();
159
+ if (!opts.dryRun)
160
+ await releaseRemoteLock(octokit, owner, repo, sha, 'failure');
129
161
  logError({ repo: `${owner}/${repo}`, pr: number, phase: 'run' }, err);
130
162
  console.error(chalk.red(`\n✗ ${err instanceof Error ? err.message : String(err)}\n`));
163
+ releasePRLock(owner, repo, number, sha);
164
+ rmSync(tmpDir, { force: true, recursive: true });
131
165
  process.exit(2);
132
166
  }
133
167
  finally {
168
+ releasePRLock(owner, repo, number, sha);
134
169
  rmSync(tmpDir, { force: true, recursive: true });
135
170
  }
136
171
  }
@@ -1 +1 @@
1
- {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"serve.d.ts","sourceRoot":"","sources":["../../src/commands/serve.ts"],"names":[],"mappings":"AA4LA,MAAM,WAAW,SAAS;IACxB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB;AAED,wBAAsB,QAAQ,CAAC,IAAI,GAAE,SAAc,iBAkLlD"}
1
+ {"version":3,"file":"serve.d.ts","sourceRoot":"","sources":["../../src/commands/serve.ts"],"names":[],"mappings":"AA2NA,MAAM,WAAW,SAAS;IACxB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB;AAED,wBAAsB,QAAQ,CAAC,IAAI,GAAE,SAAc,iBAkLlD"}
@@ -5,7 +5,9 @@ import { execSync } from 'child_process';
5
5
  import chalk from 'chalk';
6
6
  import { findAvailablePort } from '../lib/port.js';
7
7
  import { createWebhookServer } from '../github/webhook.js';
8
- import { checkRepoAccessible } from '../github/client.js';
8
+ import { checkRepoAccessible, createGithubClient } from '../github/client.js';
9
+ import { acquirePRLock, releasePRLock } from '../lib/pr-lock.js';
10
+ import { checkRemoteLock, acquireRemoteLock, releaseRemoteLock, startRemoteLockHeartbeat } from '../github/review-status.js';
9
11
  import { scanUnreviewedPRs, buildScopesFromConfig } from '../lib/backtrace.js';
10
12
  import { detectOriginFull, assignReviewer } from '../github/detector.js';
11
13
  import { loadConfig, getGithubToken, getWebhookSecret, resolveConfigPath, promptDeploymentMode, detectScopesForDeployment, patchDeploymentConfig, } from '../config/loader.js';
@@ -94,12 +96,34 @@ async function handlePR(event, config, token, board) {
94
96
  }
95
97
  const modeNote = ss.active ? chalk.yellow(' [smart-switch]') : '';
96
98
  board.log(`${ts} PR #${prNumber} ${event.action} ${chalk.dim(pr.title)}`, `${tsIndent}origin=${chalk.yellow(origin)} via=${chalk.dim(originMethod)} reviewer=${chalk.cyan(reviewer)}${modeNote}`);
99
+ if (!acquirePRLock(owner, repoName, prNumber, pr.head.sha)) {
100
+ fileLog({ level: 'info', event: 'pr_skipped', repo: `${owner}/${repoName}`, pr: prNumber, reason: 'in_progress_local' });
101
+ inFlight.delete(key);
102
+ return;
103
+ }
104
+ const lockOctokit = createGithubClient(token);
105
+ if (await checkRemoteLock(lockOctokit, owner, repoName, pr.head.sha)) {
106
+ releasePRLock(owner, repoName, prNumber, pr.head.sha);
107
+ fileLog({ level: 'info', event: 'pr_skipped', repo: `${owner}/${repoName}`, pr: prNumber, reason: 'in_progress_remote' });
108
+ inFlight.delete(key);
109
+ return;
110
+ }
111
+ try {
112
+ await acquireRemoteLock(lockOctokit, owner, repoName, pr.head.sha);
113
+ }
114
+ catch (err) {
115
+ releasePRLock(owner, repoName, prNumber, pr.head.sha);
116
+ inFlight.delete(key);
117
+ logError({ repo: `${owner}/${repoName}`, pr: prNumber, phase: 'lock' }, err);
118
+ return;
119
+ }
97
120
  const prKey = `${owner}/${repoName}#${prNumber}`;
98
121
  const isRecheckRun = reviewedPRKeys.has(prKey);
99
122
  const round = isRecheckRun ? (prRoundCounts.get(prKey) ?? 1) + 1 : 1;
100
123
  board.addPR(key, prNumber, `${owner}/${repoName}`, pr.head.ref, round);
101
124
  const reviewStart = Date.now();
102
125
  const tmpDir = mkdtempSync(join(tmpdir(), 'crosscheck-repo-'));
126
+ let stopHeartbeat = () => { };
103
127
  try {
104
128
  clonePRForReview({
105
129
  owner, repo: repoName, prNumber, baseRef: pr.base.ref,
@@ -108,6 +132,7 @@ async function handlePR(event, config, token, board) {
108
132
  });
109
133
  const prLoc = computePRLoc(tmpDir, pr.base.ref);
110
134
  board.updatePR(key, { prLoc });
135
+ stopHeartbeat = startRemoteLockHeartbeat(lockOctokit, owner, repoName, pr.head.sha);
111
136
  await runWorkflow({
112
137
  owner, repoName, prNumber, pr,
113
138
  tmpDir, token, config: effectiveConfig, origin,
@@ -126,11 +151,15 @@ async function handlePR(event, config, token, board) {
126
151
  url: `github.com/${owner}/${repoName}/pull/${prNumber}`,
127
152
  });
128
153
  notifyReviewSuccess(reviewer, announce);
154
+ stopHeartbeat();
155
+ await releaseRemoteLock(lockOctokit, owner, repoName, pr.head.sha, 'success');
129
156
  }
130
157
  catch (err) {
158
+ stopHeartbeat();
131
159
  const message = err instanceof Error ? err.message : err.message ?? 'unknown error';
132
160
  board.failPR(key, message);
133
161
  logError({ repo: `${owner}/${repoName}`, pr: prNumber, phase: 'review' }, err);
162
+ await releaseRemoteLock(lockOctokit, owner, repoName, pr.head.sha, 'failure');
134
163
  if (config.mode === 'cross-vendor' && !getSmartSwitch().active && isSubscriptionLimitError(err)) {
135
164
  const failedVendor = detectFailedVendor(err);
136
165
  if (failedVendor)
@@ -138,6 +167,7 @@ async function handlePR(event, config, token, board) {
138
167
  }
139
168
  }
140
169
  finally {
170
+ releasePRLock(owner, repoName, prNumber, pr.head.sha);
141
171
  rmSync(tmpDir, { force: true, recursive: true });
142
172
  inFlight.delete(key);
143
173
  }
@@ -1 +1 @@
1
- {"version":3,"file":"serve.js","sourceRoot":"","sources":["../../src/commands/serve.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"serve.js","sourceRoot":"","sources":["../../src/commands/serve.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"watch.d.ts","sourceRoot":"","sources":["../../src/commands/watch.ts"],"names":[],"mappings":"AAwJA,MAAM,WAAW,SAAS;IACxB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB;AAED,wBAAsB,QAAQ,CAAC,IAAI,GAAE,SAAc,iBAqnBlD"}
1
+ {"version":3,"file":"watch.d.ts","sourceRoot":"","sources":["../../src/commands/watch.ts"],"names":[],"mappings":"AA2JA,MAAM,WAAW,SAAS;IACxB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB;AAED,wBAAsB,QAAQ,CAAC,IAAI,GAAE,SAAc,iBA+oBlD"}
@@ -1,7 +1,7 @@
1
1
  import { execSync, spawn } from 'child_process';
2
2
  import chalk from 'chalk';
3
3
  import { createWebhookServer } from '../github/webhook.js';
4
- import { registerOrgWebhook, deleteOrgWebhook, registerRepoWebhook, deleteRepoWebhook, findOrgWebhook, findRepoWebhook, listUserRepos, checkRepoAccessible, } from '../github/client.js';
4
+ import { createGithubClient, registerOrgWebhook, deleteOrgWebhook, registerRepoWebhook, deleteRepoWebhook, findOrgWebhook, findRepoWebhook, listUserRepos, checkRepoAccessible, } from '../github/client.js';
5
5
  import { detectOriginFull, assignReviewer } from '../github/detector.js';
6
6
  import { loadConfig, getGithubToken, getWebhookSecret, resolveConfigPath, promptDeploymentMode, detectScopesForDeployment, patchDeploymentConfig, detectGitHubLogin, } from '../config/loader.js';
7
7
  import { randomFortune } from '../lib/fortune.js';
@@ -17,6 +17,8 @@ import { mkdtempSync, rmSync } from 'fs';
17
17
  import { tmpdir } from 'os';
18
18
  import { join } from 'path';
19
19
  import { PersistentShaSet } from '../lib/sha-cache.js';
20
+ import { acquirePRLock, releasePRLock } from '../lib/pr-lock.js';
21
+ import { checkRemoteLock, acquireRemoteLock, releaseRemoteLock, startRemoteLockHeartbeat } from '../github/review-status.js';
20
22
  function buildFallbackConfig(config, fallbackVendor) {
21
23
  return {
22
24
  ...config,
@@ -200,12 +202,31 @@ export async function runWatch(opts = {}) {
200
202
  html_url: `https://github.com/${owner}/${repoName}/pull/${prNumber}`,
201
203
  user: { login: params.author },
202
204
  };
205
+ if (!acquirePRLock(owner, repoName, prNumber, params.headSha)) {
206
+ fileLog({ level: 'info', event: 'pr_skipped', repo: `${owner}/${repoName}`, pr: prNumber, reason: 'in_progress_local' });
207
+ return;
208
+ }
209
+ const lockOctokit = createGithubClient(token);
210
+ if (await checkRemoteLock(lockOctokit, owner, repoName, params.headSha)) {
211
+ releasePRLock(owner, repoName, prNumber, params.headSha);
212
+ fileLog({ level: 'info', event: 'pr_skipped', repo: `${owner}/${repoName}`, pr: prNumber, reason: 'in_progress_remote' });
213
+ return;
214
+ }
215
+ try {
216
+ await acquireRemoteLock(lockOctokit, owner, repoName, params.headSha);
217
+ }
218
+ catch (err) {
219
+ releasePRLock(owner, repoName, prNumber, params.headSha);
220
+ logError({ repo: `${owner}/${repoName}`, pr: prNumber, phase: 'lock' }, err);
221
+ return;
222
+ }
203
223
  const prKey = `${owner}/${repoName}#${prNumber}`;
204
224
  const isRecheckRun = reviewedPRKeys.has(prKey);
205
225
  const round = isRecheckRun ? (prRoundCounts.get(prKey) ?? 1) + 1 : 1;
206
226
  board.addPR(key, prNumber, `${owner}/${repoName}`, params.headRef, round);
207
227
  const reviewStart = Date.now();
208
228
  const tmpDir = mkdtempSync(join(tmpdir(), 'crosscheck-repo-'));
229
+ let stopHeartbeat = () => { };
209
230
  try {
210
231
  clonePRForReview({
211
232
  owner, repo: repoName, prNumber, baseRef: params.baseRef,
@@ -214,6 +235,7 @@ export async function runWatch(opts = {}) {
214
235
  });
215
236
  const prLoc = computePRLoc(tmpDir, params.baseRef);
216
237
  board.updatePR(key, { prLoc });
238
+ stopHeartbeat = startRemoteLockHeartbeat(lockOctokit, owner, repoName, params.headSha);
217
239
  const { verdict } = await runWorkflow({
218
240
  owner, repoName, prNumber, pr,
219
241
  tmpDir, token, config: effectiveConfig, origin,
@@ -235,11 +257,15 @@ export async function runWatch(opts = {}) {
235
257
  // Smart-switch recovery confirmation: if a restore attempt is pending and
236
258
  // this reviewer matches the previously-degraded vendor, announce full restoration.
237
259
  notifyReviewSuccess(reviewer, bLog);
260
+ stopHeartbeat();
261
+ await releaseRemoteLock(lockOctokit, owner, repoName, params.headSha, 'success');
238
262
  }
239
263
  catch (err) {
264
+ stopHeartbeat();
240
265
  const message = err instanceof Error ? err.message : String(err);
241
266
  board.failPR(key, message);
242
267
  logError({ repo: `${owner}/${repoName}`, pr: prNumber, phase: 'review' }, err);
268
+ await releaseRemoteLock(lockOctokit, owner, repoName, params.headSha, 'failure');
243
269
  // Smart-switch: when a reviewer hits a subscription limit in cross-vendor mode,
244
270
  // degrade to single-vendor with the healthy vendor for the next 30 minutes.
245
271
  if (config.mode === 'cross-vendor' && !getSmartSwitch().active && isSubscriptionLimitError(err)) {
@@ -249,6 +275,7 @@ export async function runWatch(opts = {}) {
249
275
  }
250
276
  }
251
277
  finally {
278
+ releasePRLock(owner, repoName, prNumber, params.headSha);
252
279
  rmSync(tmpDir, { force: true, recursive: true });
253
280
  }
254
281
  }