@probelabs/visor 0.1.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.
Files changed (116) hide show
  1. package/README.md +1240 -0
  2. package/action.yml +142 -0
  3. package/defaults/.visor.yaml +184 -0
  4. package/dist/action-cli-bridge.d.ts +104 -0
  5. package/dist/action-cli-bridge.d.ts.map +1 -0
  6. package/dist/action-cli-bridge.js +372 -0
  7. package/dist/action-cli-bridge.js.map +1 -0
  8. package/dist/ai-review-service.d.ts +84 -0
  9. package/dist/ai-review-service.d.ts.map +1 -0
  10. package/dist/ai-review-service.js +674 -0
  11. package/dist/ai-review-service.js.map +1 -0
  12. package/dist/check-execution-engine.d.ts +165 -0
  13. package/dist/check-execution-engine.d.ts.map +1 -0
  14. package/dist/check-execution-engine.js +1172 -0
  15. package/dist/check-execution-engine.js.map +1 -0
  16. package/dist/cli-main.d.ts +6 -0
  17. package/dist/cli-main.d.ts.map +1 -0
  18. package/dist/cli-main.js +247 -0
  19. package/dist/cli-main.js.map +1 -0
  20. package/dist/cli.d.ts +47 -0
  21. package/dist/cli.d.ts.map +1 -0
  22. package/dist/cli.js +224 -0
  23. package/dist/cli.js.map +1 -0
  24. package/dist/commands.d.ts +10 -0
  25. package/dist/commands.d.ts.map +1 -0
  26. package/dist/commands.js +53 -0
  27. package/dist/commands.js.map +1 -0
  28. package/dist/config.d.ts +63 -0
  29. package/dist/config.d.ts.map +1 -0
  30. package/dist/config.js +369 -0
  31. package/dist/config.js.map +1 -0
  32. package/dist/dependency-resolver.d.ts +54 -0
  33. package/dist/dependency-resolver.d.ts.map +1 -0
  34. package/dist/dependency-resolver.js +163 -0
  35. package/dist/dependency-resolver.js.map +1 -0
  36. package/dist/event-mapper.d.ts +125 -0
  37. package/dist/event-mapper.d.ts.map +1 -0
  38. package/dist/event-mapper.js +311 -0
  39. package/dist/event-mapper.js.map +1 -0
  40. package/dist/failure-condition-evaluator.d.ts +81 -0
  41. package/dist/failure-condition-evaluator.d.ts.map +1 -0
  42. package/dist/failure-condition-evaluator.js +445 -0
  43. package/dist/failure-condition-evaluator.js.map +1 -0
  44. package/dist/git-repository-analyzer.d.ts +45 -0
  45. package/dist/git-repository-analyzer.d.ts.map +1 -0
  46. package/dist/git-repository-analyzer.js +285 -0
  47. package/dist/git-repository-analyzer.js.map +1 -0
  48. package/dist/github-check-service.d.ts +104 -0
  49. package/dist/github-check-service.d.ts.map +1 -0
  50. package/dist/github-check-service.js +382 -0
  51. package/dist/github-check-service.js.map +1 -0
  52. package/dist/github-comments.d.ts +109 -0
  53. package/dist/github-comments.d.ts.map +1 -0
  54. package/dist/github-comments.js +289 -0
  55. package/dist/github-comments.js.map +1 -0
  56. package/dist/index.d.ts +2 -0
  57. package/dist/index.d.ts.map +1 -0
  58. package/dist/index.js +1265 -0
  59. package/dist/index.js.map +1 -0
  60. package/dist/output-formatters.d.ts +66 -0
  61. package/dist/output-formatters.d.ts.map +1 -0
  62. package/dist/output-formatters.js +624 -0
  63. package/dist/output-formatters.js.map +1 -0
  64. package/dist/pr-analyzer.d.ts +47 -0
  65. package/dist/pr-analyzer.d.ts.map +1 -0
  66. package/dist/pr-analyzer.js +194 -0
  67. package/dist/pr-analyzer.js.map +1 -0
  68. package/dist/pr-detector.d.ts +78 -0
  69. package/dist/pr-detector.d.ts.map +1 -0
  70. package/dist/pr-detector.js +357 -0
  71. package/dist/pr-detector.js.map +1 -0
  72. package/dist/providers/ai-check-provider.d.ts +40 -0
  73. package/dist/providers/ai-check-provider.d.ts.map +1 -0
  74. package/dist/providers/ai-check-provider.js +416 -0
  75. package/dist/providers/ai-check-provider.js.map +1 -0
  76. package/dist/providers/check-provider-registry.d.ts +67 -0
  77. package/dist/providers/check-provider-registry.d.ts.map +1 -0
  78. package/dist/providers/check-provider-registry.js +138 -0
  79. package/dist/providers/check-provider-registry.js.map +1 -0
  80. package/dist/providers/check-provider.interface.d.ts +78 -0
  81. package/dist/providers/check-provider.interface.d.ts.map +1 -0
  82. package/dist/providers/check-provider.interface.js +11 -0
  83. package/dist/providers/check-provider.interface.js.map +1 -0
  84. package/dist/providers/index.d.ts +10 -0
  85. package/dist/providers/index.d.ts.map +1 -0
  86. package/dist/providers/index.js +19 -0
  87. package/dist/providers/index.js.map +1 -0
  88. package/dist/providers/script-check-provider.d.ts +20 -0
  89. package/dist/providers/script-check-provider.d.ts.map +1 -0
  90. package/dist/providers/script-check-provider.js +163 -0
  91. package/dist/providers/script-check-provider.js.map +1 -0
  92. package/dist/providers/tool-check-provider.d.ts +19 -0
  93. package/dist/providers/tool-check-provider.d.ts.map +1 -0
  94. package/dist/providers/tool-check-provider.js +125 -0
  95. package/dist/providers/tool-check-provider.js.map +1 -0
  96. package/dist/providers/webhook-check-provider.d.ts +21 -0
  97. package/dist/providers/webhook-check-provider.d.ts.map +1 -0
  98. package/dist/providers/webhook-check-provider.js +173 -0
  99. package/dist/providers/webhook-check-provider.js.map +1 -0
  100. package/dist/reviewer.d.ts +88 -0
  101. package/dist/reviewer.d.ts.map +1 -0
  102. package/dist/reviewer.js +760 -0
  103. package/dist/reviewer.js.map +1 -0
  104. package/dist/types/cli.d.ts +41 -0
  105. package/dist/types/cli.d.ts.map +1 -0
  106. package/dist/types/cli.js +3 -0
  107. package/dist/types/cli.js.map +1 -0
  108. package/dist/types/config.d.ts +315 -0
  109. package/dist/types/config.d.ts.map +1 -0
  110. package/dist/types/config.js +6 -0
  111. package/dist/types/config.js.map +1 -0
  112. package/dist/utils/env-resolver.d.ts +38 -0
  113. package/dist/utils/env-resolver.d.ts.map +1 -0
  114. package/dist/utils/env-resolver.js +130 -0
  115. package/dist/utils/env-resolver.js.map +1 -0
  116. package/package.json +116 -0
@@ -0,0 +1,357 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pr-detector.js","sourceRoot":"","sources":["../src/pr-detector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ import { CheckProvider, CheckProviderConfig } from './check-provider.interface';
2
+ import { PRInfo } from '../pr-analyzer';
3
+ import { ReviewSummary } from '../reviewer';
4
+ /**
5
+ * AI-powered check provider using probe agent
6
+ */
7
+ export declare class AICheckProvider extends CheckProvider {
8
+ private aiReviewService;
9
+ private liquidEngine;
10
+ constructor();
11
+ getName(): string;
12
+ getDescription(): string;
13
+ validateConfig(config: unknown): Promise<boolean>;
14
+ /**
15
+ * Group files by their file extension for template context
16
+ */
17
+ private groupFilesByExtension;
18
+ /**
19
+ * Process prompt configuration to resolve final prompt string
20
+ */
21
+ private processPrompt;
22
+ /**
23
+ * Detect if a string is likely a file path and if the file exists
24
+ */
25
+ private isFilePath;
26
+ /**
27
+ * Load prompt content from file with security validation
28
+ */
29
+ private loadPromptFromFile;
30
+ /**
31
+ * Render Liquid template in prompt with comprehensive event context
32
+ */
33
+ private renderPromptTemplate;
34
+ execute(prInfo: PRInfo, config: CheckProviderConfig, _dependencyResults?: Map<string, ReviewSummary>): Promise<ReviewSummary>;
35
+ private executeWithConfig;
36
+ getSupportedConfigKeys(): string[];
37
+ isAvailable(): Promise<boolean>;
38
+ getRequirements(): string[];
39
+ }
40
+ //# sourceMappingURL=ai-check-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-check-provider.d.ts","sourceRoot":"","sources":["../../src/providers/ai-check-provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAChF,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAO5C;;GAEG;AACH,qBAAa,eAAgB,SAAQ,aAAa;IAChD,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,YAAY,CAAS;;IAQ7B,OAAO,IAAI,MAAM;IAIjB,cAAc,IAAI,MAAM;IAIlB,cAAc,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAoCvD;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAe7B;;OAEG;YACW,aAAa;IAmB3B;;OAEG;YACW,UAAU;IAsExB;;OAEG;YACW,kBAAkB;IAqChC;;OAEG;YACW,oBAAoB;IAmJ5B,OAAO,CACX,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,mBAAmB,EAC3B,kBAAkB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,GAC9C,OAAO,CAAC,aAAa,CAAC;YAiBX,iBAAiB;IA2F/B,sBAAsB,IAAI,MAAM,EAAE;IAiB5B,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IASrC,eAAe,IAAI,MAAM,EAAE;CAO5B"}