@probelabs/visor 0.1.19 → 0.1.21

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 (107) hide show
  1. package/dist/action-cli-bridge.d.ts +0 -1
  2. package/dist/action-cli-bridge.d.ts.map +1 -1
  3. package/dist/ai-review-service.d.ts +0 -1
  4. package/dist/ai-review-service.d.ts.map +1 -1
  5. package/dist/check-execution-engine.d.ts +0 -1
  6. package/dist/check-execution-engine.d.ts.map +1 -1
  7. package/dist/cli-main.d.ts +0 -2
  8. package/dist/cli-main.d.ts.map +1 -1
  9. package/dist/cli.d.ts +0 -1
  10. package/dist/cli.d.ts.map +1 -1
  11. package/dist/commands.d.ts +0 -1
  12. package/dist/commands.d.ts.map +1 -1
  13. package/dist/config.d.ts +0 -1
  14. package/dist/config.d.ts.map +1 -1
  15. package/dist/dependency-resolver.d.ts +0 -1
  16. package/dist/dependency-resolver.d.ts.map +1 -1
  17. package/dist/event-mapper.d.ts +0 -1
  18. package/dist/event-mapper.d.ts.map +1 -1
  19. package/dist/failure-condition-evaluator.d.ts +0 -1
  20. package/dist/failure-condition-evaluator.d.ts.map +1 -1
  21. package/dist/git-repository-analyzer.d.ts +0 -1
  22. package/dist/git-repository-analyzer.d.ts.map +1 -1
  23. package/dist/github-check-service.d.ts +0 -1
  24. package/dist/github-check-service.d.ts.map +1 -1
  25. package/dist/github-comments.d.ts +0 -1
  26. package/dist/github-comments.d.ts.map +1 -1
  27. package/dist/index.d.ts +0 -1
  28. package/dist/index.d.ts.map +1 -1
  29. package/dist/index.js +127704 -805
  30. package/dist/output-formatters.d.ts +0 -1
  31. package/dist/output-formatters.d.ts.map +1 -1
  32. package/dist/pr-analyzer.d.ts +0 -1
  33. package/dist/pr-analyzer.d.ts.map +1 -1
  34. package/dist/pr-detector.d.ts +0 -1
  35. package/dist/pr-detector.d.ts.map +1 -1
  36. package/dist/providers/ai-check-provider.d.ts.map +1 -1
  37. package/dist/providers/check-provider-registry.d.ts.map +1 -1
  38. package/dist/providers/check-provider.interface.d.ts.map +1 -1
  39. package/dist/providers/index.d.ts.map +1 -1
  40. package/dist/providers/noop-check-provider.d.ts.map +1 -1
  41. package/dist/providers/tool-check-provider.d.ts.map +1 -1
  42. package/dist/providers/webhook-check-provider.d.ts.map +1 -1
  43. package/dist/reviewer.d.ts +0 -1
  44. package/dist/reviewer.d.ts.map +1 -1
  45. package/dist/session-registry.d.ts +0 -1
  46. package/dist/session-registry.d.ts.map +1 -1
  47. package/dist/types/cli.d.ts.map +1 -1
  48. package/dist/types/config.d.ts.map +1 -1
  49. package/dist/utils/env-resolver.d.ts.map +1 -1
  50. package/package.json +3 -3
  51. package/dist/action-cli-bridge.js +0 -380
  52. package/dist/action-cli-bridge.js.map +0 -1
  53. package/dist/ai-review-service.js +0 -854
  54. package/dist/ai-review-service.js.map +0 -1
  55. package/dist/check-execution-engine.js +0 -1720
  56. package/dist/check-execution-engine.js.map +0 -1
  57. package/dist/cli-main.js +0 -249
  58. package/dist/cli-main.js.map +0 -1
  59. package/dist/cli.js +0 -241
  60. package/dist/cli.js.map +0 -1
  61. package/dist/commands.js +0 -53
  62. package/dist/commands.js.map +0 -1
  63. package/dist/config.js +0 -437
  64. package/dist/config.js.map +0 -1
  65. package/dist/dependency-resolver.js +0 -163
  66. package/dist/dependency-resolver.js.map +0 -1
  67. package/dist/event-mapper.js +0 -316
  68. package/dist/event-mapper.js.map +0 -1
  69. package/dist/failure-condition-evaluator.js +0 -481
  70. package/dist/failure-condition-evaluator.js.map +0 -1
  71. package/dist/git-repository-analyzer.js +0 -285
  72. package/dist/git-repository-analyzer.js.map +0 -1
  73. package/dist/github-check-service.js +0 -369
  74. package/dist/github-check-service.js.map +0 -1
  75. package/dist/github-comments.js +0 -289
  76. package/dist/github-comments.js.map +0 -1
  77. package/dist/index.js.map +0 -1
  78. package/dist/output-formatters.js +0 -624
  79. package/dist/output-formatters.js.map +0 -1
  80. package/dist/pr-analyzer.js +0 -195
  81. package/dist/pr-analyzer.js.map +0 -1
  82. package/dist/pr-detector.js +0 -357
  83. package/dist/pr-detector.js.map +0 -1
  84. package/dist/providers/ai-check-provider.js +0 -437
  85. package/dist/providers/ai-check-provider.js.map +0 -1
  86. package/dist/providers/check-provider-registry.js +0 -138
  87. package/dist/providers/check-provider-registry.js.map +0 -1
  88. package/dist/providers/check-provider.interface.js +0 -11
  89. package/dist/providers/check-provider.interface.js.map +0 -1
  90. package/dist/providers/index.js +0 -19
  91. package/dist/providers/index.js.map +0 -1
  92. package/dist/providers/noop-check-provider.js +0 -55
  93. package/dist/providers/noop-check-provider.js.map +0 -1
  94. package/dist/providers/tool-check-provider.js +0 -174
  95. package/dist/providers/tool-check-provider.js.map +0 -1
  96. package/dist/providers/webhook-check-provider.js +0 -173
  97. package/dist/providers/webhook-check-provider.js.map +0 -1
  98. package/dist/reviewer.js +0 -260
  99. package/dist/reviewer.js.map +0 -1
  100. package/dist/session-registry.js +0 -67
  101. package/dist/session-registry.js.map +0 -1
  102. package/dist/types/cli.js +0 -3
  103. package/dist/types/cli.js.map +0 -1
  104. package/dist/types/config.js +0 -6
  105. package/dist/types/config.js.map +0 -1
  106. package/dist/utils/env-resolver.js +0 -130
  107. package/dist/utils/env-resolver.js.map +0 -1
@@ -1,195 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PRAnalyzer = void 0;
4
- class PRAnalyzer {
5
- octokit;
6
- maxRetries;
7
- constructor(octokit, maxRetries = 3) {
8
- this.octokit = octokit;
9
- this.maxRetries = maxRetries;
10
- }
11
- /**
12
- * Fetch commit diff for incremental analysis
13
- */
14
- async fetchCommitDiff(owner, repo, commitSha) {
15
- try {
16
- const { data: commit } = await this.withRetry(() => this.octokit.rest.repos.getCommit({
17
- owner,
18
- repo,
19
- ref: commitSha,
20
- }));
21
- // Extract patches from all files in the commit
22
- const patches = commit.files
23
- ?.filter(file => file.patch)
24
- .map(file => `--- ${file.filename}\n${file.patch}`)
25
- .join('\n\n') || '';
26
- return patches;
27
- }
28
- catch (error) {
29
- console.warn(`Failed to fetch commit diff for ${commitSha}:`, error);
30
- return '';
31
- }
32
- }
33
- /**
34
- * Generate unified diff for all PR files
35
- */
36
- generateFullDiff(files) {
37
- return files
38
- .filter(file => file.patch)
39
- .map(file => `--- ${file.filename}\n${file.patch}`)
40
- .join('\n\n');
41
- }
42
- async fetchPRDiff(owner, repo, prNumber, commitSha, eventType) {
43
- const [prData, filesData] = await Promise.all([
44
- this.withRetry(() => this.octokit.rest.pulls.get({
45
- owner,
46
- repo,
47
- pull_number: prNumber,
48
- })),
49
- this.withRetry(() => this.octokit.rest.pulls.listFiles({
50
- owner,
51
- repo,
52
- pull_number: prNumber,
53
- })),
54
- ]);
55
- const pr = prData?.data;
56
- const files = filesData?.data || [];
57
- // Handle missing or malformed PR data gracefully
58
- if (!pr) {
59
- throw new Error('Invalid or missing pull request data');
60
- }
61
- // Validate critical fields and provide defaults for missing data
62
- const title = typeof pr.title === 'string' ? pr.title : pr.title ? String(pr.title) : 'MISSING';
63
- const body = typeof pr.body === 'string' ? pr.body : pr.body ? String(pr.body) : '';
64
- const author = pr.user && typeof pr.user === 'object' && pr.user.login
65
- ? typeof pr.user.login === 'string'
66
- ? pr.user.login
67
- : String(pr.user.login)
68
- : 'unknown';
69
- const base = pr.base && typeof pr.base === 'object' && pr.base.ref
70
- ? typeof pr.base.ref === 'string'
71
- ? pr.base.ref
72
- : String(pr.base.ref)
73
- : 'main';
74
- const head = pr.head && typeof pr.head === 'object' && pr.head.ref
75
- ? typeof pr.head.ref === 'string'
76
- ? pr.head.ref
77
- : String(pr.head.ref)
78
- : 'feature';
79
- // Filter out malformed files and handle invalid data types
80
- const validFiles = files
81
- ? files
82
- .filter(file => file && typeof file === 'object' && file.filename)
83
- .map(file => ({
84
- filename: typeof file.filename === 'string'
85
- ? file.filename
86
- : String(file.filename || 'unknown'),
87
- additions: typeof file.additions === 'number' ? Math.max(0, file.additions) : 0,
88
- deletions: typeof file.deletions === 'number' ? Math.max(0, file.deletions) : 0,
89
- changes: typeof file.changes === 'number' ? Math.max(0, file.changes) : 0,
90
- patch: typeof file.patch === 'string' ? file.patch : undefined,
91
- status: (['added', 'removed', 'modified', 'renamed'].includes(file.status)
92
- ? file.status
93
- : 'modified'),
94
- }))
95
- .filter(file => file.filename.length > 0) // Remove files with empty names
96
- : [];
97
- const prInfo = {
98
- number: typeof pr.number === 'number' ? pr.number : parseInt(String(pr.number || 1), 10),
99
- title,
100
- body,
101
- author,
102
- base,
103
- head,
104
- files: validFiles,
105
- totalAdditions: validFiles.reduce((sum, file) => sum + file.additions, 0),
106
- totalDeletions: validFiles.reduce((sum, file) => sum + file.deletions, 0),
107
- fullDiff: this.generateFullDiff(validFiles),
108
- eventType,
109
- };
110
- // Add commit diff for incremental analysis
111
- if (commitSha) {
112
- console.log(`🔧 Fetching incremental diff for commit: ${commitSha}`);
113
- prInfo.commitDiff = await this.fetchCommitDiff(owner, repo, commitSha);
114
- prInfo.isIncremental = true;
115
- if (!prInfo.commitDiff || prInfo.commitDiff.length === 0) {
116
- console.warn(`⚠️ No commit diff retrieved for ${commitSha}, will use full diff as fallback`);
117
- }
118
- else {
119
- console.log(`✅ Incremental diff retrieved (${prInfo.commitDiff.length} chars)`);
120
- }
121
- }
122
- else {
123
- prInfo.isIncremental = false;
124
- }
125
- return prInfo;
126
- }
127
- async fetchPRComments(owner, repo, prNumber) {
128
- const { data: comments } = await this.withRetry(() => this.octokit.rest.issues.listComments({
129
- owner,
130
- repo,
131
- issue_number: prNumber,
132
- }));
133
- return comments.map(comment => ({
134
- id: comment.id,
135
- author: comment.user?.login || 'unknown',
136
- body: comment.body || '',
137
- createdAt: comment.created_at,
138
- updatedAt: comment.updated_at,
139
- }));
140
- }
141
- async withRetry(operation) {
142
- let lastError = new Error('Unknown error');
143
- for (let attempt = 0; attempt <= this.maxRetries; attempt++) {
144
- try {
145
- return await operation();
146
- }
147
- catch (error) {
148
- // Preserve the original error object if possible
149
- if (error instanceof Error) {
150
- lastError = error;
151
- }
152
- else if (typeof error === 'object' && error !== null) {
153
- // For objects like {code: 'ETIMEDOUT', message: 'Network timeout'}
154
- const errorObj = error;
155
- const message = errorObj.message || errorObj.code || 'Unknown error';
156
- lastError = new Error(String(message));
157
- // Preserve important properties
158
- Object.assign(lastError, error);
159
- }
160
- else {
161
- lastError = new Error(String(error));
162
- }
163
- // Don't retry on the last attempt
164
- if (attempt === this.maxRetries) {
165
- break;
166
- }
167
- // Check if this is a retryable error
168
- if (this.isRetryableError(error)) {
169
- const delay = Math.min(1000 * Math.pow(2, attempt), 5000); // Exponential backoff, max 5s
170
- await new Promise(resolve => setTimeout(resolve, delay));
171
- }
172
- else {
173
- // Non-retryable error, fail immediately with original error
174
- throw error;
175
- }
176
- }
177
- }
178
- throw lastError;
179
- }
180
- isRetryableError(error) {
181
- // Retry on network timeouts, connection errors, and temporary server errors
182
- const retryableErrors = ['ETIMEDOUT', 'ECONNRESET', 'ECONNREFUSED', 'ENOTFOUND', 'EAI_AGAIN'];
183
- const retryableStatuses = [408, 429, 500, 502, 503, 504];
184
- // Type guard for error objects
185
- if (typeof error !== 'object' || error === null) {
186
- return false;
187
- }
188
- const err = error;
189
- return ((err.code !== undefined && retryableErrors.includes(err.code)) ||
190
- (err.status !== undefined && retryableStatuses.includes(err.status)) ||
191
- (err.response?.status !== undefined && retryableStatuses.includes(err.response.status)));
192
- }
193
- }
194
- exports.PRAnalyzer = PRAnalyzer;
195
- //# sourceMappingURL=pr-analyzer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pr-analyzer.js","sourceRoot":"","sources":["../src/pr-analyzer.ts"],"names":[],"mappings":"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"}
@@ -1,357 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PRDetector = void 0;
4
- /**
5
- * Robust PR detection utility that works across all GitHub event types
6
- */
7
- class PRDetector {
8
- octokit;
9
- debug;
10
- constructor(octokit, debug = false) {
11
- this.octokit = octokit;
12
- this.debug = debug;
13
- }
14
- log(message, ...args) {
15
- if (this.debug) {
16
- console.error(`[PR Detector] ${message}`, ...args);
17
- }
18
- }
19
- /**
20
- * Detect PR number from GitHub context with comprehensive fallback strategies
21
- */
22
- async detectPRNumber(context, owner, repo) {
23
- const repoOwner = owner || context.repository?.owner.login;
24
- const repoName = repo || context.repository?.name;
25
- if (!repoOwner || !repoName) {
26
- this.log('Missing repository information');
27
- return {
28
- prNumber: null,
29
- confidence: 'low',
30
- source: 'direct',
31
- details: 'Missing repository owner or name',
32
- };
33
- }
34
- this.log(`Detecting PR for event: ${context.event_name} in ${repoOwner}/${repoName}`);
35
- try {
36
- // Strategy 1: Direct PR event detection
37
- const directResult = this.detectFromDirectPREvent(context);
38
- if (directResult.prNumber) {
39
- this.log(`Found PR via direct event: #${directResult.prNumber}`);
40
- return directResult;
41
- }
42
- // Strategy 2: Issue comment PR detection
43
- const commentResult = this.detectFromIssueComment(context);
44
- if (commentResult.prNumber) {
45
- this.log(`Found PR via issue comment: #${commentResult.prNumber}`);
46
- return commentResult;
47
- }
48
- // Strategy 3: Push event PR detection (query GitHub API)
49
- if (context.event_name === 'push') {
50
- const pushResult = await this.detectFromPushEvent(context, repoOwner, repoName);
51
- if (pushResult.prNumber) {
52
- this.log(`Found PR via push event API query: #${pushResult.prNumber}`);
53
- return pushResult;
54
- }
55
- }
56
- // Strategy 4: Branch-based PR search
57
- const branchResult = await this.detectFromBranch(context, repoOwner, repoName);
58
- if (branchResult.prNumber) {
59
- this.log(`Found PR via branch search: #${branchResult.prNumber}`);
60
- return branchResult;
61
- }
62
- // Strategy 5: Commit-based PR search
63
- const commitResult = await this.detectFromCommit(context, repoOwner, repoName);
64
- if (commitResult.prNumber) {
65
- this.log(`Found PR via commit search: #${commitResult.prNumber}`);
66
- return commitResult;
67
- }
68
- this.log('No PR found with any detection strategy');
69
- return {
70
- prNumber: null,
71
- confidence: 'low',
72
- source: 'direct',
73
- details: `No PR found for ${context.event_name} event`,
74
- };
75
- }
76
- catch (error) {
77
- this.log('Error during PR detection:', error);
78
- return {
79
- prNumber: null,
80
- confidence: 'low',
81
- source: 'direct',
82
- details: error instanceof Error ? error.message : 'Unknown error',
83
- };
84
- }
85
- }
86
- /**
87
- * Strategy 1: Detect PR from direct PR events
88
- */
89
- detectFromDirectPREvent(context) {
90
- const prNumber = context.event?.pull_request?.number;
91
- if (prNumber) {
92
- return {
93
- prNumber,
94
- confidence: 'high',
95
- source: 'direct',
96
- details: `Direct PR event: ${context.event_name}`,
97
- };
98
- }
99
- return { prNumber: null, confidence: 'low', source: 'direct' };
100
- }
101
- /**
102
- * Strategy 2: Detect PR from issue comment events
103
- */
104
- detectFromIssueComment(context) {
105
- if (context.event_name === 'issue_comment') {
106
- const issue = context.event?.issue;
107
- // Check if this issue is actually a PR (issues with pull_request key are PRs)
108
- if (issue?.pull_request && issue.number) {
109
- return {
110
- prNumber: issue.number,
111
- confidence: 'high',
112
- source: 'comment',
113
- details: 'Issue comment on PR',
114
- };
115
- }
116
- }
117
- return { prNumber: null, confidence: 'low', source: 'comment' };
118
- }
119
- /**
120
- * Strategy 3: Detect PR from push events by querying associated PRs
121
- */
122
- async detectFromPushEvent(context, owner, repo) {
123
- if (context.event_name !== 'push') {
124
- return { prNumber: null, confidence: 'low', source: 'api_query' };
125
- }
126
- const ref = context.event?.ref;
127
- const commits = context.event?.commits || [];
128
- const headCommit = context.event?.head_commit;
129
- // Extract branch name from ref (refs/heads/branch-name)
130
- const branchName = ref?.replace('refs/heads/', '');
131
- this.log(`Push event - Branch: ${branchName}, Commits: ${commits.length}`);
132
- // First, try to find PRs for the specific branch
133
- if (branchName && branchName !== 'main' && branchName !== 'master') {
134
- try {
135
- const prs = await this.octokit.rest.pulls.list({
136
- owner,
137
- repo,
138
- head: `${owner}:${branchName}`,
139
- state: 'open',
140
- });
141
- if (prs.data.length > 0) {
142
- return {
143
- prNumber: prs.data[0].number,
144
- confidence: 'high',
145
- source: 'api_query',
146
- details: `Found open PR for branch ${branchName}`,
147
- };
148
- }
149
- }
150
- catch (error) {
151
- this.log(`Error querying PRs for branch ${branchName}:`, error);
152
- }
153
- }
154
- // If head commit exists, search for PRs containing that commit
155
- if (headCommit?.id) {
156
- const commitResult = await this.searchPRsByCommit(owner, repo, headCommit.id);
157
- if (commitResult.prNumber) {
158
- return {
159
- ...commitResult,
160
- source: 'api_query',
161
- details: `Found PR containing head commit ${headCommit.id}`,
162
- };
163
- }
164
- }
165
- // If we have multiple commits, try the most recent ones
166
- if (commits.length > 0) {
167
- for (const commit of commits.slice(-3)) {
168
- // Check last 3 commits
169
- if (commit.id) {
170
- const commitResult = await this.searchPRsByCommit(owner, repo, commit.id);
171
- if (commitResult.prNumber) {
172
- return {
173
- ...commitResult,
174
- source: 'api_query',
175
- details: `Found PR containing commit ${commit.id}`,
176
- };
177
- }
178
- }
179
- }
180
- }
181
- return { prNumber: null, confidence: 'low', source: 'api_query' };
182
- }
183
- /**
184
- * Strategy 4: Detect PR by searching current branch
185
- */
186
- async detectFromBranch(context, owner, repo) {
187
- try {
188
- // Try to get current branch from various sources
189
- let branchName = null;
190
- // From push event ref
191
- if (context.event?.ref) {
192
- branchName = context.event.ref.replace('refs/heads/', '');
193
- }
194
- // Try to get current branch from environment (GitHub Actions sets this)
195
- if (!branchName && process.env.GITHUB_HEAD_REF) {
196
- branchName = process.env.GITHUB_HEAD_REF;
197
- }
198
- if (!branchName && process.env.GITHUB_REF_NAME) {
199
- branchName = process.env.GITHUB_REF_NAME;
200
- }
201
- if (!branchName) {
202
- this.log('No branch name found for branch-based search');
203
- return { prNumber: null, confidence: 'low', source: 'branch_search' };
204
- }
205
- this.log(`Searching for PRs on branch: ${branchName}`);
206
- // Search for open PRs from this branch
207
- const prs = await this.octokit.rest.pulls.list({
208
- owner,
209
- repo,
210
- head: `${owner}:${branchName}`,
211
- state: 'open',
212
- });
213
- if (prs.data.length > 0) {
214
- return {
215
- prNumber: prs.data[0].number,
216
- confidence: 'medium',
217
- source: 'branch_search',
218
- details: `Found open PR from branch ${branchName}`,
219
- };
220
- }
221
- // Also try searching closed PRs (recently merged)
222
- const closedPrs = await this.octokit.rest.pulls.list({
223
- owner,
224
- repo,
225
- head: `${owner}:${branchName}`,
226
- state: 'closed',
227
- sort: 'updated',
228
- direction: 'desc',
229
- per_page: 5,
230
- });
231
- if (closedPrs.data.length > 0) {
232
- const recentPr = closedPrs.data[0];
233
- return {
234
- prNumber: recentPr.number,
235
- confidence: 'medium',
236
- source: 'branch_search',
237
- details: `Found recently closed PR from branch ${branchName}`,
238
- };
239
- }
240
- return { prNumber: null, confidence: 'low', source: 'branch_search' };
241
- }
242
- catch (error) {
243
- this.log('Error in branch-based PR search:', error);
244
- return {
245
- prNumber: null,
246
- confidence: 'low',
247
- source: 'branch_search',
248
- details: error instanceof Error ? error.message : 'Unknown error',
249
- };
250
- }
251
- }
252
- /**
253
- * Strategy 5: Detect PR by searching for commits
254
- */
255
- async detectFromCommit(context, owner, repo) {
256
- // Try to get commit SHA from various sources
257
- let commitSha = null;
258
- if (context.event?.head_commit?.id) {
259
- commitSha = context.event.head_commit.id;
260
- }
261
- else if (process.env.GITHUB_SHA) {
262
- commitSha = process.env.GITHUB_SHA;
263
- }
264
- if (!commitSha) {
265
- this.log('No commit SHA found for commit-based search');
266
- return { prNumber: null, confidence: 'low', source: 'commit_search' };
267
- }
268
- this.log(`Searching for PRs containing commit: ${commitSha}`);
269
- return await this.searchPRsByCommit(owner, repo, commitSha);
270
- }
271
- /**
272
- * Search for PRs containing a specific commit
273
- */
274
- async searchPRsByCommit(owner, repo, commitSha) {
275
- try {
276
- // GitHub's search API can find PRs containing specific commits
277
- const searchQuery = `repo:${owner}/${repo} type:pr ${commitSha}`;
278
- this.log(`Searching with query: ${searchQuery}`);
279
- const searchResults = await this.octokit.rest.search.issuesAndPullRequests({
280
- q: searchQuery,
281
- sort: 'updated',
282
- order: 'desc',
283
- per_page: 10,
284
- });
285
- if (searchResults.data.items.length > 0) {
286
- // Find the most recent PR that contains this commit
287
- for (const item of searchResults.data.items) {
288
- if (item.pull_request) {
289
- return {
290
- prNumber: item.number,
291
- confidence: 'medium',
292
- source: 'commit_search',
293
- details: `Found PR via commit search for ${commitSha}`,
294
- };
295
- }
296
- }
297
- }
298
- // Fallback: Get recent PRs and check if they contain the commit
299
- const recentPrs = await this.octokit.rest.pulls.list({
300
- owner,
301
- repo,
302
- state: 'all',
303
- sort: 'updated',
304
- direction: 'desc',
305
- per_page: 20,
306
- });
307
- for (const pr of recentPrs.data) {
308
- try {
309
- // Check if this PR contains the commit
310
- const commits = await this.octokit.rest.pulls.listCommits({
311
- owner,
312
- repo,
313
- pull_number: pr.number,
314
- });
315
- const hasCommit = commits.data.some(commit => commit.sha === commitSha);
316
- if (hasCommit) {
317
- return {
318
- prNumber: pr.number,
319
- confidence: 'high',
320
- source: 'commit_search',
321
- details: `Found PR containing commit ${commitSha}`,
322
- };
323
- }
324
- }
325
- catch (error) {
326
- // Continue to next PR if we can't check commits
327
- this.log(`Error checking commits for PR #${pr.number}:`, error);
328
- continue;
329
- }
330
- }
331
- return { prNumber: null, confidence: 'low', source: 'commit_search' };
332
- }
333
- catch (error) {
334
- this.log('Error in commit-based PR search:', error);
335
- return {
336
- prNumber: null,
337
- confidence: 'low',
338
- source: 'commit_search',
339
- details: error instanceof Error ? error.message : 'Unknown error',
340
- };
341
- }
342
- }
343
- /**
344
- * Get PR detection summary for debugging
345
- */
346
- getDetectionStrategies() {
347
- return [
348
- '1. Direct PR event detection (pull_request events)',
349
- '2. Issue comment PR detection (issue_comment events on PRs)',
350
- '3. Push event PR detection (API queries for branch PRs)',
351
- '4. Branch-based PR search (current branch PRs)',
352
- '5. Commit-based PR search (PRs containing specific commits)',
353
- ];
354
- }
355
- }
356
- exports.PRDetector = PRDetector;
357
- //# sourceMappingURL=pr-detector.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pr-detector.js","sourceRoot":"","sources":["../src/pr-detector.ts"],"names":[],"mappings":"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"}