@vibe-validate/cli 0.17.6 → 0.18.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/dist/bin/vibe-validate +4 -0
- package/dist/bin/vibe-validate.js +4 -0
- package/dist/bin/vibe-validate.js.map +1 -1
- package/dist/bin/vv +4 -0
- package/dist/bin.js +12 -4
- package/dist/bin.js.map +1 -1
- package/dist/commands/cleanup.d.ts +4 -1
- package/dist/commands/cleanup.d.ts.map +1 -1
- package/dist/commands/cleanup.js +168 -122
- package/dist/commands/cleanup.js.map +1 -1
- package/dist/commands/config.d.ts.map +1 -1
- package/dist/commands/config.js +35 -21
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/create-extractor.d.ts.map +1 -1
- package/dist/commands/create-extractor.js +29 -14
- package/dist/commands/create-extractor.js.map +1 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +12 -23
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/generate-workflow.d.ts.map +1 -1
- package/dist/commands/generate-workflow.js +6 -2
- package/dist/commands/generate-workflow.js.map +1 -1
- package/dist/commands/history.d.ts.map +1 -1
- package/dist/commands/history.js +19 -9
- package/dist/commands/history.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +3 -1
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/pre-commit.d.ts.map +1 -1
- package/dist/commands/pre-commit.js +3 -1
- package/dist/commands/pre-commit.js.map +1 -1
- package/dist/commands/run.d.ts.map +1 -1
- package/dist/commands/run.js +21 -13
- package/dist/commands/run.js.map +1 -1
- package/dist/commands/state.d.ts.map +1 -1
- package/dist/commands/state.js +11 -6
- package/dist/commands/state.js.map +1 -1
- package/dist/commands/watch-pr.d.ts +16 -0
- package/dist/commands/watch-pr.d.ts.map +1 -1
- package/dist/commands/watch-pr.js +574 -320
- package/dist/commands/watch-pr.js.map +1 -1
- package/dist/schemas/watch-pr-result.schema.d.ts +2071 -0
- package/dist/schemas/watch-pr-result.schema.d.ts.map +1 -0
- package/dist/schemas/watch-pr-result.schema.js +346 -0
- package/dist/schemas/watch-pr-result.schema.js.map +1 -0
- package/dist/schemas/watch-pr-schema.d.ts +6 -6
- package/dist/services/cache-manager.d.ts +113 -0
- package/dist/services/cache-manager.d.ts.map +1 -0
- package/dist/services/cache-manager.js +211 -0
- package/dist/services/cache-manager.js.map +1 -0
- package/dist/services/ci-providers/github-actions.d.ts.map +1 -1
- package/dist/services/ci-providers/github-actions.js +10 -16
- package/dist/services/ci-providers/github-actions.js.map +1 -1
- package/dist/services/external-check-extractor.d.ts +66 -0
- package/dist/services/external-check-extractor.d.ts.map +1 -0
- package/dist/services/external-check-extractor.js +114 -0
- package/dist/services/external-check-extractor.js.map +1 -0
- package/dist/services/extraction-mode-detector.d.ts +85 -0
- package/dist/services/extraction-mode-detector.d.ts.map +1 -0
- package/dist/services/extraction-mode-detector.js +200 -0
- package/dist/services/extraction-mode-detector.js.map +1 -0
- package/dist/services/github-fetcher.d.ts +234 -0
- package/dist/services/github-fetcher.d.ts.map +1 -0
- package/dist/services/github-fetcher.js +441 -0
- package/dist/services/github-fetcher.js.map +1 -0
- package/dist/services/history-summary-builder.d.ts +74 -0
- package/dist/services/history-summary-builder.d.ts.map +1 -0
- package/dist/services/history-summary-builder.js +199 -0
- package/dist/services/history-summary-builder.js.map +1 -0
- package/dist/services/watch-pr-orchestrator.d.ts +132 -0
- package/dist/services/watch-pr-orchestrator.d.ts.map +1 -0
- package/dist/services/watch-pr-orchestrator.js +451 -0
- package/dist/services/watch-pr-orchestrator.js.map +1 -0
- package/dist/utils/command-name.d.ts +21 -0
- package/dist/utils/command-name.d.ts.map +1 -0
- package/dist/utils/command-name.js +45 -0
- package/dist/utils/command-name.js.map +1 -0
- package/dist/utils/pid-lock.d.ts.map +1 -1
- package/dist/utils/pid-lock.js +3 -3
- package/dist/utils/pid-lock.js.map +1 -1
- package/dist/utils/secret-scanning.d.ts.map +1 -1
- package/dist/utils/secret-scanning.js +45 -17
- package/dist/utils/secret-scanning.js.map +1 -1
- package/dist/utils/temp-files.d.ts +1 -2
- package/dist/utils/temp-files.d.ts.map +1 -1
- package/dist/utils/temp-files.js +4 -4
- package/dist/utils/temp-files.js.map +1 -1
- package/package.json +8 -8
|
@@ -0,0 +1,451 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WatchPROrchestrator - Coordinate all components to build complete WatchPRResult
|
|
3
|
+
*
|
|
4
|
+
* Responsibilities:
|
|
5
|
+
* - Coordinate data fetching (PR metadata, checks, history, changes)
|
|
6
|
+
* - Extract errors from check logs (matrix + non-matrix modes)
|
|
7
|
+
* - Extract external check details (codecov, SonarCloud, etc.)
|
|
8
|
+
* - Build complete WatchPRResult with validation
|
|
9
|
+
* - Generate intelligent guidance
|
|
10
|
+
* - Handle caching (save/retrieve results)
|
|
11
|
+
* - Select output format (YAML on failure, text on success)
|
|
12
|
+
*
|
|
13
|
+
* @packageDocumentation
|
|
14
|
+
*/
|
|
15
|
+
import { CacheManager } from './cache-manager.js';
|
|
16
|
+
import { CodecovExtractor, ExternalExtractorRegistry, SonarCloudExtractor, } from './external-check-extractor.js';
|
|
17
|
+
import { ExtractionModeDetector } from './extraction-mode-detector.js';
|
|
18
|
+
import { GitHubFetcher } from './github-fetcher.js';
|
|
19
|
+
import { HistorySummaryBuilder } from './history-summary-builder.js';
|
|
20
|
+
/**
|
|
21
|
+
* WatchPROrchestrator - Build complete WatchPRResult
|
|
22
|
+
*/
|
|
23
|
+
export class WatchPROrchestrator {
|
|
24
|
+
owner;
|
|
25
|
+
repo;
|
|
26
|
+
fetcher;
|
|
27
|
+
historyBuilder;
|
|
28
|
+
extractionDetector;
|
|
29
|
+
externalCheckExtractor;
|
|
30
|
+
cacheManager;
|
|
31
|
+
constructor(owner, repo) {
|
|
32
|
+
this.owner = owner;
|
|
33
|
+
this.repo = repo;
|
|
34
|
+
this.fetcher = new GitHubFetcher(owner, repo);
|
|
35
|
+
this.historyBuilder = new HistorySummaryBuilder(owner, repo);
|
|
36
|
+
this.extractionDetector = new ExtractionModeDetector();
|
|
37
|
+
// Initialize external check extractor registry
|
|
38
|
+
this.externalCheckExtractor = new ExternalExtractorRegistry();
|
|
39
|
+
this.externalCheckExtractor.register(new CodecovExtractor());
|
|
40
|
+
this.externalCheckExtractor.register(new SonarCloudExtractor());
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Build complete WatchPRResult
|
|
44
|
+
*
|
|
45
|
+
* @param prNumber - PR number
|
|
46
|
+
* @param options - Options (useCache, forceFetch)
|
|
47
|
+
* @returns Complete WatchPRResult
|
|
48
|
+
*/
|
|
49
|
+
// eslint-disable-next-line sonarjs/cognitive-complexity
|
|
50
|
+
async buildResult(prNumber, options = {}) {
|
|
51
|
+
const { useCache = true } = options;
|
|
52
|
+
// Initialize cache manager if caching enabled (for logs only)
|
|
53
|
+
if (useCache && !this.cacheManager) {
|
|
54
|
+
this.cacheManager = new CacheManager(`${this.owner}/${this.repo}`, prNumber);
|
|
55
|
+
}
|
|
56
|
+
// Always fetch fresh PR metadata and checks from GitHub
|
|
57
|
+
// Cache is ONLY used for expensive log downloads, NOT for status
|
|
58
|
+
const prMetadata = await this.fetcher.fetchPRDetails(prNumber);
|
|
59
|
+
// Fetch checks
|
|
60
|
+
const checks = await this.fetcher.fetchChecks(prNumber);
|
|
61
|
+
// Classify checks into GitHub Actions vs external
|
|
62
|
+
const githubActions = [];
|
|
63
|
+
const rawExternalChecks = [];
|
|
64
|
+
for (const check of checks) {
|
|
65
|
+
if (check.type === 'github_action') {
|
|
66
|
+
// GitHub Action check - may have extraction
|
|
67
|
+
if (!check.run_id ||
|
|
68
|
+
!check.workflow ||
|
|
69
|
+
!check.started_at ||
|
|
70
|
+
!check.duration) {
|
|
71
|
+
continue; // Skip invalid checks
|
|
72
|
+
}
|
|
73
|
+
const actionCheck = {
|
|
74
|
+
name: check.name,
|
|
75
|
+
status: check.status,
|
|
76
|
+
conclusion: check.conclusion,
|
|
77
|
+
run_id: check.run_id,
|
|
78
|
+
job_id: check.job_id,
|
|
79
|
+
workflow: check.workflow,
|
|
80
|
+
started_at: check.started_at,
|
|
81
|
+
duration: check.duration,
|
|
82
|
+
};
|
|
83
|
+
// Try to extract errors if check failed
|
|
84
|
+
if (check.conclusion === 'failure' && check.run_id) {
|
|
85
|
+
// Use retry logic to handle GitHub API race condition (Issue #4)
|
|
86
|
+
// Pass job_id for matrix strategy jobs to get job-specific logs
|
|
87
|
+
const logs = await this.fetchLogsWithRetry(check.run_id, check.job_id);
|
|
88
|
+
if (logs) {
|
|
89
|
+
const extraction = await this.extractionDetector.detectAndExtract(actionCheck, logs);
|
|
90
|
+
if (extraction) {
|
|
91
|
+
actionCheck.extraction = extraction;
|
|
92
|
+
}
|
|
93
|
+
// Save logs to cache
|
|
94
|
+
if (this.cacheManager) {
|
|
95
|
+
await this.cacheManager.saveLog(check.run_id, logs);
|
|
96
|
+
if (extraction) {
|
|
97
|
+
await this.cacheManager.saveExtraction(check.run_id, extraction);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
// If logs are null, gracefully continue without extraction
|
|
102
|
+
// No noisy error output (Issue #4 fix)
|
|
103
|
+
}
|
|
104
|
+
githubActions.push(actionCheck);
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
// External check - will extract later
|
|
108
|
+
if (!check.url) {
|
|
109
|
+
continue; // Skip invalid checks
|
|
110
|
+
}
|
|
111
|
+
rawExternalChecks.push({
|
|
112
|
+
name: check.name,
|
|
113
|
+
status: check.status,
|
|
114
|
+
conclusion: check.conclusion,
|
|
115
|
+
url: check.url,
|
|
116
|
+
provider: check.provider,
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
// Extract details from external checks (all at once)
|
|
121
|
+
const externalChecks = await this.externalCheckExtractor.extractAll(rawExternalChecks);
|
|
122
|
+
// Order checks: failed first (newspaper philosophy)
|
|
123
|
+
const orderedGitHubActions = this.orderChecks(githubActions);
|
|
124
|
+
const orderedExternalChecks = this.orderExternalChecks(externalChecks);
|
|
125
|
+
// Calculate check counts
|
|
126
|
+
const totalChecks = githubActions.length + externalChecks.length;
|
|
127
|
+
const passedChecks = githubActions.filter((c) => c.conclusion === 'success').length +
|
|
128
|
+
externalChecks.filter((c) => c.conclusion === 'success').length;
|
|
129
|
+
const failedChecks = githubActions.filter((c) => c.conclusion === 'failure').length +
|
|
130
|
+
externalChecks.filter((c) => c.conclusion === 'failure').length;
|
|
131
|
+
const pendingChecks = githubActions.filter((c) => c.status !== 'completed').length +
|
|
132
|
+
externalChecks.filter((c) => c.status !== 'completed').length;
|
|
133
|
+
// Fetch history summary
|
|
134
|
+
const historySummary = await this.historyBuilder.buildSummary(prMetadata.branch);
|
|
135
|
+
// Fetch file changes
|
|
136
|
+
const changes = await this.fetcher.fetchFileChanges(prNumber);
|
|
137
|
+
// Determine overall status
|
|
138
|
+
let status = 'passed';
|
|
139
|
+
if (failedChecks > 0) {
|
|
140
|
+
status = 'failed';
|
|
141
|
+
}
|
|
142
|
+
else if (pendingChecks > 0) {
|
|
143
|
+
status = 'pending';
|
|
144
|
+
}
|
|
145
|
+
// Generate guidance
|
|
146
|
+
const guidance = this.generateGuidance(status, orderedGitHubActions, orderedExternalChecks, prMetadata.mergeable);
|
|
147
|
+
// Build result
|
|
148
|
+
const result = {
|
|
149
|
+
pr: prMetadata,
|
|
150
|
+
status,
|
|
151
|
+
checks: {
|
|
152
|
+
total: totalChecks,
|
|
153
|
+
passed: passedChecks,
|
|
154
|
+
failed: failedChecks,
|
|
155
|
+
pending: pendingChecks,
|
|
156
|
+
history_summary: historySummary.total_runs > 0 ? historySummary : undefined,
|
|
157
|
+
github_actions: orderedGitHubActions,
|
|
158
|
+
external_checks: orderedExternalChecks,
|
|
159
|
+
},
|
|
160
|
+
changes,
|
|
161
|
+
guidance,
|
|
162
|
+
// Note: cache field removed - will be added back when actually needed
|
|
163
|
+
};
|
|
164
|
+
// Note: We do NOT cache the result itself - only logs are cached
|
|
165
|
+
// This ensures PR status is always fresh from GitHub
|
|
166
|
+
return result;
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Build GitHub Action check from a workflow job
|
|
170
|
+
*/
|
|
171
|
+
async buildCheckFromJob(job, runId, workflowName) {
|
|
172
|
+
// Calculate duration
|
|
173
|
+
const startTime = new Date(job.started_at).getTime();
|
|
174
|
+
const endTime = job.completed_at ? new Date(job.completed_at).getTime() : Date.now();
|
|
175
|
+
const durationSecs = Math.floor((endTime - startTime) / 1000);
|
|
176
|
+
// Normalize status
|
|
177
|
+
let jobStatus = 'queued';
|
|
178
|
+
if (job.status === 'completed') {
|
|
179
|
+
jobStatus = 'completed';
|
|
180
|
+
}
|
|
181
|
+
else if (job.status === 'in_progress') {
|
|
182
|
+
jobStatus = 'in_progress';
|
|
183
|
+
}
|
|
184
|
+
const actionCheck = {
|
|
185
|
+
name: job.name,
|
|
186
|
+
status: jobStatus,
|
|
187
|
+
conclusion: job.conclusion ? job.conclusion : undefined,
|
|
188
|
+
run_id: runId,
|
|
189
|
+
job_id: job.id, // CRITICAL: Include job_id for matrix strategy support
|
|
190
|
+
workflow: workflowName,
|
|
191
|
+
started_at: job.started_at,
|
|
192
|
+
duration: `${durationSecs}s`,
|
|
193
|
+
};
|
|
194
|
+
// Extract errors from failed jobs
|
|
195
|
+
if (job.status === 'completed' && job.conclusion === 'failure') {
|
|
196
|
+
await this.extractErrorsForCheck(actionCheck, runId, job.id);
|
|
197
|
+
}
|
|
198
|
+
return actionCheck;
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Extract errors for a check from run logs
|
|
202
|
+
*/
|
|
203
|
+
async extractErrorsForCheck(check, runId, jobId) {
|
|
204
|
+
const logs = await this.fetchLogsWithRetry(runId, jobId);
|
|
205
|
+
if (!logs)
|
|
206
|
+
return;
|
|
207
|
+
const extraction = await this.extractionDetector.detectAndExtract(check, logs);
|
|
208
|
+
if (extraction) {
|
|
209
|
+
check.extraction = extraction;
|
|
210
|
+
}
|
|
211
|
+
// Save to cache
|
|
212
|
+
if (this.cacheManager) {
|
|
213
|
+
await this.cacheManager.saveLog(runId, logs);
|
|
214
|
+
if (extraction) {
|
|
215
|
+
await this.cacheManager.saveExtraction(runId, extraction);
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Determine overall PR status from checks
|
|
221
|
+
*/
|
|
222
|
+
determineOverallStatus(checks) {
|
|
223
|
+
const hasFailure = checks.some(c => c.conclusion === 'failure');
|
|
224
|
+
const hasPending = checks.some(c => c.status === 'in_progress' || c.status === 'queued');
|
|
225
|
+
if (hasFailure)
|
|
226
|
+
return 'failed';
|
|
227
|
+
if (hasPending)
|
|
228
|
+
return 'pending';
|
|
229
|
+
return 'passed';
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Build result for a specific run ID
|
|
233
|
+
*
|
|
234
|
+
* Fetches all jobs for the workflow run and creates individual checks for each job.
|
|
235
|
+
* This provides consistent job-level detail matching the default behavior.
|
|
236
|
+
*
|
|
237
|
+
* @param prNumber - PR number
|
|
238
|
+
* @param runId - GitHub run ID
|
|
239
|
+
* @param options - Options (useCache)
|
|
240
|
+
* @returns WatchPRResult with job-level checks
|
|
241
|
+
*/
|
|
242
|
+
async buildResultForRun(prNumber, runId, options = {}) {
|
|
243
|
+
const { useCache = false } = options;
|
|
244
|
+
// Initialize cache manager if caching enabled
|
|
245
|
+
if (useCache && !this.cacheManager) {
|
|
246
|
+
this.cacheManager = new CacheManager(`${this.owner}/${this.repo}`, prNumber);
|
|
247
|
+
}
|
|
248
|
+
// Fetch metadata
|
|
249
|
+
const prMetadata = await this.fetcher.fetchPRDetails(prNumber);
|
|
250
|
+
const runDetails = await this.fetcher.fetchRunDetails(runId);
|
|
251
|
+
const jobs = await this.fetcher.fetchRunJobs(runId);
|
|
252
|
+
// Build checks from jobs
|
|
253
|
+
const actionChecks = await Promise.all(jobs.map(job => this.buildCheckFromJob(job, runId, runDetails.workflow)));
|
|
254
|
+
// Fetch file changes
|
|
255
|
+
const changes = await this.fetcher.fetchFileChanges(prNumber);
|
|
256
|
+
// Determine status
|
|
257
|
+
const status = this.determineOverallStatus(actionChecks);
|
|
258
|
+
// Calculate counts
|
|
259
|
+
const totalChecks = actionChecks.length;
|
|
260
|
+
const passedChecks = actionChecks.filter(c => c.conclusion === 'success').length;
|
|
261
|
+
const failedChecks = actionChecks.filter(c => c.conclusion === 'failure').length;
|
|
262
|
+
const pendingChecks = actionChecks.filter(c => c.status === 'in_progress' || c.status === 'queued').length;
|
|
263
|
+
// Generate guidance
|
|
264
|
+
const guidance = this.generateGuidance(status, actionChecks, [], prMetadata.mergeable);
|
|
265
|
+
// Build result
|
|
266
|
+
return {
|
|
267
|
+
pr: prMetadata,
|
|
268
|
+
status,
|
|
269
|
+
checks: {
|
|
270
|
+
total: totalChecks,
|
|
271
|
+
passed: passedChecks,
|
|
272
|
+
failed: failedChecks,
|
|
273
|
+
pending: pendingChecks,
|
|
274
|
+
github_actions: this.orderChecks(actionChecks),
|
|
275
|
+
external_checks: [],
|
|
276
|
+
},
|
|
277
|
+
changes,
|
|
278
|
+
guidance,
|
|
279
|
+
};
|
|
280
|
+
}
|
|
281
|
+
/**
|
|
282
|
+
* Get priority for check ordering (lower is higher priority)
|
|
283
|
+
*/
|
|
284
|
+
getCheckPriority(conclusion, status) {
|
|
285
|
+
if (conclusion === 'failure')
|
|
286
|
+
return 0;
|
|
287
|
+
if (status !== 'completed')
|
|
288
|
+
return 1;
|
|
289
|
+
if (conclusion === 'success')
|
|
290
|
+
return 2;
|
|
291
|
+
return 3;
|
|
292
|
+
}
|
|
293
|
+
/**
|
|
294
|
+
* Order checks: failed first, then pending, then passed
|
|
295
|
+
*
|
|
296
|
+
* @param checks - GitHub Action checks
|
|
297
|
+
* @returns Ordered checks
|
|
298
|
+
*/
|
|
299
|
+
orderChecks(checks) {
|
|
300
|
+
return checks.sort((a, b) => {
|
|
301
|
+
return this.getCheckPriority(a.conclusion, a.status) - this.getCheckPriority(b.conclusion, b.status);
|
|
302
|
+
});
|
|
303
|
+
}
|
|
304
|
+
/**
|
|
305
|
+
* Order external checks: failed first, then pending, then passed
|
|
306
|
+
*
|
|
307
|
+
* @param checks - External checks
|
|
308
|
+
* @returns Ordered checks
|
|
309
|
+
*/
|
|
310
|
+
// eslint-disable-next-line sonarjs/no-identical-functions
|
|
311
|
+
orderExternalChecks(checks) {
|
|
312
|
+
return checks.sort((a, b) => {
|
|
313
|
+
return this.getCheckPriority(a.conclusion, a.status) - this.getCheckPriority(b.conclusion, b.status);
|
|
314
|
+
});
|
|
315
|
+
}
|
|
316
|
+
/**
|
|
317
|
+
* Generate intelligent guidance based on check results
|
|
318
|
+
*
|
|
319
|
+
* @param status - Overall status
|
|
320
|
+
* @param githubActions - GitHub Action checks
|
|
321
|
+
* @param externalChecks - External checks
|
|
322
|
+
* @param mergeable - Is PR mergeable?
|
|
323
|
+
* @returns Guidance with next steps
|
|
324
|
+
*/
|
|
325
|
+
generateGuidance(status, githubActions, externalChecks, mergeable) {
|
|
326
|
+
const nextSteps = [];
|
|
327
|
+
if (status === 'failed') {
|
|
328
|
+
// Find failed checks
|
|
329
|
+
const failedGitHubActions = githubActions.filter((c) => c.conclusion === 'failure');
|
|
330
|
+
const failedExternalChecks = externalChecks.filter((c) => c.conclusion === 'failure');
|
|
331
|
+
// Add next steps for failed GitHub Actions
|
|
332
|
+
for (const check of failedGitHubActions) {
|
|
333
|
+
nextSteps.push({
|
|
334
|
+
action: `Fix ${check.name} failure`,
|
|
335
|
+
url: `https://github.com/${this.owner}/${this.repo}/actions/runs/${check.run_id}`,
|
|
336
|
+
severity: 'error',
|
|
337
|
+
reason: check.extraction
|
|
338
|
+
? `${check.extraction.totalErrors} error(s) detected`
|
|
339
|
+
: 'Check failed',
|
|
340
|
+
});
|
|
341
|
+
}
|
|
342
|
+
// Add next steps for failed external checks
|
|
343
|
+
for (const check of failedExternalChecks) {
|
|
344
|
+
nextSteps.push({
|
|
345
|
+
action: `Fix ${check.name} failure`,
|
|
346
|
+
url: check.url,
|
|
347
|
+
severity: check.extracted?.severity ?? 'error',
|
|
348
|
+
reason: check.extracted?.summary ?? 'Check failed',
|
|
349
|
+
});
|
|
350
|
+
}
|
|
351
|
+
return {
|
|
352
|
+
status: 'failed',
|
|
353
|
+
blocking: !mergeable,
|
|
354
|
+
severity: 'error',
|
|
355
|
+
summary: `${failedGitHubActions.length + failedExternalChecks.length} check(s) failed`,
|
|
356
|
+
next_steps: nextSteps,
|
|
357
|
+
};
|
|
358
|
+
}
|
|
359
|
+
if (status === 'pending') {
|
|
360
|
+
return {
|
|
361
|
+
status: 'pending',
|
|
362
|
+
blocking: false,
|
|
363
|
+
severity: 'info',
|
|
364
|
+
summary: 'Checks are still running',
|
|
365
|
+
next_steps: [
|
|
366
|
+
{
|
|
367
|
+
action: 'Wait for checks to complete',
|
|
368
|
+
severity: 'info',
|
|
369
|
+
},
|
|
370
|
+
],
|
|
371
|
+
};
|
|
372
|
+
}
|
|
373
|
+
// Passed
|
|
374
|
+
return {
|
|
375
|
+
status: 'passed',
|
|
376
|
+
blocking: false,
|
|
377
|
+
severity: 'info',
|
|
378
|
+
summary: 'All checks passed',
|
|
379
|
+
next_steps: mergeable
|
|
380
|
+
? [
|
|
381
|
+
{
|
|
382
|
+
action: 'Ready to merge',
|
|
383
|
+
severity: 'info',
|
|
384
|
+
},
|
|
385
|
+
]
|
|
386
|
+
: [
|
|
387
|
+
{
|
|
388
|
+
action: 'Resolve merge conflicts',
|
|
389
|
+
severity: 'warning',
|
|
390
|
+
reason: 'PR is not mergeable',
|
|
391
|
+
},
|
|
392
|
+
],
|
|
393
|
+
};
|
|
394
|
+
}
|
|
395
|
+
// buildCacheInfo() removed - cache field will be added back when actually needed
|
|
396
|
+
/**
|
|
397
|
+
* Fetch logs with retry logic for race conditions
|
|
398
|
+
*
|
|
399
|
+
* When GitHub marks a check as complete, logs may not be immediately available.
|
|
400
|
+
* This method retries with exponential backoff to handle the race condition.
|
|
401
|
+
*
|
|
402
|
+
* Retry schedule: 2s, 4s, 8s (total 3 attempts over ~14 seconds)
|
|
403
|
+
*
|
|
404
|
+
* @param runId - GitHub run ID
|
|
405
|
+
* @param jobId - GitHub job ID (optional, for matrix strategy jobs)
|
|
406
|
+
* @param maxRetries - Maximum number of retry attempts (default: 3)
|
|
407
|
+
* @returns Log content, or null if all retries failed
|
|
408
|
+
*/
|
|
409
|
+
async fetchLogsWithRetry(runId, jobId, maxRetries = 3) {
|
|
410
|
+
for (let attempt = 1; attempt <= maxRetries; attempt++) {
|
|
411
|
+
try {
|
|
412
|
+
return await this.fetcher.fetchRunLogs(runId, jobId);
|
|
413
|
+
}
|
|
414
|
+
catch {
|
|
415
|
+
// Intentionally suppress error (Issue #4 fix: no noisy output)
|
|
416
|
+
// If this was the last attempt, break without sleeping
|
|
417
|
+
if (attempt === maxRetries) {
|
|
418
|
+
break;
|
|
419
|
+
}
|
|
420
|
+
// Exponential backoff: 2s, 4s, 8s
|
|
421
|
+
const delayMs = Math.pow(2, attempt) * 1000;
|
|
422
|
+
await new Promise((resolve) => setTimeout(resolve, delayMs));
|
|
423
|
+
}
|
|
424
|
+
}
|
|
425
|
+
// All retries failed - return null (graceful degradation)
|
|
426
|
+
// Logs can be inspected with debug mode if needed
|
|
427
|
+
return null;
|
|
428
|
+
}
|
|
429
|
+
/**
|
|
430
|
+
* Fetch all workflow runs for a PR (for --history flag)
|
|
431
|
+
*
|
|
432
|
+
* @param prNumber - PR number
|
|
433
|
+
* @returns List of workflow runs with basic metadata
|
|
434
|
+
*/
|
|
435
|
+
async fetchRunsForPR(prNumber) {
|
|
436
|
+
return await this.fetcher.fetchRunsForPR(prNumber);
|
|
437
|
+
}
|
|
438
|
+
/**
|
|
439
|
+
* Determine if output should be YAML format
|
|
440
|
+
*
|
|
441
|
+
* Auto-YAML on failure (consistent with validate command)
|
|
442
|
+
*
|
|
443
|
+
* @param status - Overall status
|
|
444
|
+
* @param forceYAML - Force YAML output
|
|
445
|
+
* @returns True if should output YAML
|
|
446
|
+
*/
|
|
447
|
+
shouldOutputYAML(status, forceYAML) {
|
|
448
|
+
return forceYAML || status === 'failed';
|
|
449
|
+
}
|
|
450
|
+
}
|
|
451
|
+
//# sourceMappingURL=watch-pr-orchestrator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"watch-pr-orchestrator.js","sourceRoot":"","sources":["../../src/services/watch-pr-orchestrator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Command name detection utilities
|
|
3
|
+
*
|
|
4
|
+
* Detects the actual command name used to invoke vibe-validate (e.g., "vv" vs "vibe-validate")
|
|
5
|
+
* so error messages and usage examples reflect what the user actually typed.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Get the command name that was used to invoke the CLI
|
|
9
|
+
*
|
|
10
|
+
* @returns The command name (e.g., "vv", "vibe-validate", or fallback "vibe-validate")
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```typescript
|
|
14
|
+
* const cmd = getCommandName();
|
|
15
|
+
* console.error(`Usage: ${cmd} watch-pr <pr-number>`);
|
|
16
|
+
* // If invoked with "vv": "Usage: vv watch-pr <pr-number>"
|
|
17
|
+
* // If invoked with "vibe-validate": "Usage: vibe-validate watch-pr <pr-number>"
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
export declare function getCommandName(): string;
|
|
21
|
+
//# sourceMappingURL=command-name.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command-name.d.ts","sourceRoot":"","sources":["../../src/utils/command-name.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,IAAI,MAAM,CA4BvC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Command name detection utilities
|
|
3
|
+
*
|
|
4
|
+
* Detects the actual command name used to invoke vibe-validate (e.g., "vv" vs "vibe-validate")
|
|
5
|
+
* so error messages and usage examples reflect what the user actually typed.
|
|
6
|
+
*/
|
|
7
|
+
import { basename } from 'node:path';
|
|
8
|
+
/**
|
|
9
|
+
* Get the command name that was used to invoke the CLI
|
|
10
|
+
*
|
|
11
|
+
* @returns The command name (e.g., "vv", "vibe-validate", or fallback "vibe-validate")
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```typescript
|
|
15
|
+
* const cmd = getCommandName();
|
|
16
|
+
* console.error(`Usage: ${cmd} watch-pr <pr-number>`);
|
|
17
|
+
* // If invoked with "vv": "Usage: vv watch-pr <pr-number>"
|
|
18
|
+
* // If invoked with "vibe-validate": "Usage: vibe-validate watch-pr <pr-number>"
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
export function getCommandName() {
|
|
22
|
+
// Check if the wrapper passed the command name via environment variable
|
|
23
|
+
// This is set by the smart wrapper (bin/vibe-validate.ts) when it spawns bin.js
|
|
24
|
+
const envCommandName = process.env.VV_COMMAND_NAME;
|
|
25
|
+
if (envCommandName === 'vv' || envCommandName === 'vibe-validate') {
|
|
26
|
+
return envCommandName;
|
|
27
|
+
}
|
|
28
|
+
// Fallback: extract from process.argv[1] (for direct invocation or dev mode)
|
|
29
|
+
// process.argv[0] is node executable
|
|
30
|
+
// process.argv[1] is the script being executed (e.g., /path/to/vv or /path/to/vibe-validate)
|
|
31
|
+
const scriptPath = process.argv[1];
|
|
32
|
+
if (!scriptPath) {
|
|
33
|
+
return 'vibe-validate'; // Fallback
|
|
34
|
+
}
|
|
35
|
+
// Extract basename (e.g., "vv" from "/usr/local/bin/vv")
|
|
36
|
+
const commandName = basename(scriptPath);
|
|
37
|
+
// Handle common cases: vv, vibe-validate, or .js/.ts extensions in dev mode
|
|
38
|
+
if (commandName === 'vv' || commandName === 'vibe-validate') {
|
|
39
|
+
return commandName;
|
|
40
|
+
}
|
|
41
|
+
// Dev mode: might be bin.js, bin.ts, vibe-validate.js, etc.
|
|
42
|
+
// Fall back to "vibe-validate" for consistency
|
|
43
|
+
return 'vibe-validate';
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=command-name.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command-name.js","sourceRoot":"","sources":["../../src/utils/command-name.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,cAAc;IAC5B,wEAAwE;IACxE,gFAAgF;IAChF,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;IACnD,IAAI,cAAc,KAAK,IAAI,IAAI,cAAc,KAAK,eAAe,EAAE,CAAC;QAClE,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,6EAA6E;IAC7E,qCAAqC;IACrC,6FAA6F;IAC7F,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAEnC,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,eAAe,CAAC,CAAC,WAAW;IACrC,CAAC;IAED,yDAAyD;IACzD,MAAM,WAAW,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC;IAEzC,4EAA4E;IAC5E,IAAI,WAAW,KAAK,IAAI,IAAI,WAAW,KAAK,eAAe,EAAE,CAAC;QAC5D,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,4DAA4D;IAC5D,+CAA+C;IAC/C,OAAO,eAAe,CAAC;AACzB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pid-lock.d.ts","sourceRoot":"","sources":["../../src/utils/pid-lock.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"pid-lock.d.ts","sourceRoot":"","sources":["../../src/utils/pid-lock.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,kCAAkC;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,6BAA6B;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,gDAAgD;IAChD,QAAQ,EAAE,MAAM,CAAC;IACjB,2CAA2C;IAC3C,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,6CAA6C;IAC7C,QAAQ,EAAE,OAAO,CAAC;IAClB,wBAAwB;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,8DAA8D;IAC9D,YAAY,CAAC,EAAE,QAAQ,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B;;;;OAIG;IACH,KAAK,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IAChC;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA8DD;;;;;;;;;;;GAWG;AACH,wBAAsB,WAAW,CAC/B,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,UAAU,CAAC,CAyCrB;AAED;;;;;;;GAOG;AACH,wBAAsB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAIjE;AAED;;;;;;;;;GASG;AACH,wBAAsB,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAuBtG;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,WAAW,CAC/B,SAAS,EAAE,MAAM,EACjB,cAAc,GAAE,MAAY,EAC5B,cAAc,GAAE,MAAa,EAC7B,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC;IAAE,QAAQ,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,QAAQ,GAAG,IAAI,CAAA;CAAE,CAAC,CA6B/E"}
|
package/dist/utils/pid-lock.js
CHANGED
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
* Cross-platform (Node.js), works on Windows, macOS, Linux.
|
|
6
6
|
*/
|
|
7
7
|
import { readFileSync, writeFileSync, unlinkSync, existsSync } from 'node:fs';
|
|
8
|
-
import { tmpdir } from 'node:os';
|
|
9
8
|
import { join } from 'node:path';
|
|
9
|
+
import { normalizedTmpdir } from '@vibe-validate/utils';
|
|
10
10
|
/**
|
|
11
11
|
* Encode directory path for use in lock file name
|
|
12
12
|
*
|
|
@@ -40,11 +40,11 @@ function getLockFilePath(directory, options = {}) {
|
|
|
40
40
|
throw new Error('projectId is required when scope is "project"');
|
|
41
41
|
}
|
|
42
42
|
// Project-scoped: /tmp/vibe-validate-project-{projectId}.lock
|
|
43
|
-
return join(
|
|
43
|
+
return join(normalizedTmpdir(), `vibe-validate-project-${options.projectId}.lock`);
|
|
44
44
|
}
|
|
45
45
|
// Directory-scoped (default): /tmp/vibe-validate-{encoded-dir}.lock
|
|
46
46
|
const encoded = encodeDirectoryPath(directory);
|
|
47
|
-
return join(
|
|
47
|
+
return join(normalizedTmpdir(), `vibe-validate-${encoded}.lock`);
|
|
48
48
|
}
|
|
49
49
|
/**
|
|
50
50
|
* Check if a process is running
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pid-lock.js","sourceRoot":"","sources":["../../src/utils/pid-lock.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC9E,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"pid-lock.js","sourceRoot":"","sources":["../../src/utils/pid-lock.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC9E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AA8CxD;;;;;;;;;;;;GAYG;AACH,SAAS,mBAAmB,CAAC,SAAiB;IAC5C,OAAO,SAAS;SACb,OAAO,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC,iCAAiC;SAChE,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,sBAAsB;SAC5C,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,uBAAuB;AAClD,CAAC;AAED;;;;;;GAMG;AACH,SAAS,eAAe,CAAC,SAAiB,EAAE,UAAuB,EAAE;IACnE,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,WAAW,CAAC;IAE3C,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;QACnE,CAAC;QACD,8DAA8D;QAC9D,OAAO,IAAI,CAAC,gBAAgB,EAAE,EAAE,yBAAyB,OAAO,CAAC,SAAS,OAAO,CAAC,CAAC;IACrF,CAAC;IAED,oEAAoE;IACpE,MAAM,OAAO,GAAG,mBAAmB,CAAC,SAAS,CAAC,CAAC;IAC/C,OAAO,IAAI,CAAC,gBAAgB,EAAE,EAAE,iBAAiB,OAAO,OAAO,CAAC,CAAC;AACnE,CAAC;AAED;;;;;GAKG;AACH,SAAS,gBAAgB,CAAC,GAAW;IACnC,IAAI,CAAC;QACH,0DAA0D;QAC1D,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,gEAAgE;QAChE,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,SAAiB,EACjB,QAAgB,EAChB,UAAuB,EAAE;IAEzB,MAAM,QAAQ,GAAG,eAAe,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAErD,0BAA0B;IAC1B,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAa,CAAC;YAEzE,qCAAqC;YACrC,IAAI,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBACnC,6CAA6C;gBAC7C,OAAO;oBACL,QAAQ,EAAE,KAAK;oBACf,QAAQ;oBACR,YAAY,EAAE,QAAQ;iBACvB,CAAC;YACJ,CAAC;YAED,wCAAwC;YACxC,0BAA0B;YAC1B,UAAU,CAAC,QAAQ,CAAC,CAAC;QACvB,CAAC;QAAC,MAAM,CAAC;YACP,2CAA2C;YAC3C,UAAU,CAAC,QAAQ,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAED,eAAe;IACf,MAAM,QAAQ,GAAa;QACzB,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,SAAS;QACT,QAAQ;QACR,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACpC,CAAC;IAEF,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAE3D,OAAO;QACL,QAAQ,EAAE,IAAI;QACd,QAAQ;KACT,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,QAAgB;IAChD,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzB,UAAU,CAAC,QAAQ,CAAC,CAAC;IACvB,CAAC;AACH,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,SAAiB,EAAE,UAAuB,EAAE;IAC1E,MAAM,QAAQ,GAAG,eAAe,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAErD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAa,CAAC;QAEzE,kCAAkC;QAClC,IAAI,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACnC,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,wBAAwB;QACxB,UAAU,CAAC,QAAQ,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,iCAAiC;QACjC,UAAU,CAAC,QAAQ,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,SAAiB,EACjB,iBAAyB,GAAG,EAC5B,iBAAyB,IAAI,EAC7B,UAAuB,EAAE;IAEzB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,SAAS,GAAG,cAAc,GAAG,IAAI,CAAC;IAExC,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAEjD,mCAAmC;QACnC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO;gBACL,QAAQ,EAAE,IAAI;gBACd,QAAQ,EAAE,KAAK;gBACf,SAAS,EAAE,IAAI;aAChB,CAAC;QACJ,CAAC;QAED,gBAAgB;QAChB,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QACvC,IAAI,OAAO,IAAI,SAAS,EAAE,CAAC;YACzB,OAAO;gBACL,QAAQ,EAAE,KAAK;gBACf,QAAQ,EAAE,IAAI;gBACd,SAAS,EAAE,IAAI;aAChB,CAAC;QACJ,CAAC;QAED,wBAAwB;QACxB,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC;IACtE,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"secret-scanning.d.ts","sourceRoot":"","sources":["../../src/utils/secret-scanning.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAQH;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,UAAU,GAAG,YAAY,CAAC;AAE3D;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,kBAAkB,CAAC;IACzB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,GAAE,MAAsB,GAAG,OAAO,CAKtE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,GAAE,MAAsB,GAAG,OAAO,CAExE;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,GAAG,GAAE,MAAsB,GAAG,aAAa,EAAE,CAmBtF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,GAAG,GAAE,MAAsB,GAC1B;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,EAAE,CAoCjD;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,kBAAkB,CAAC;IACzB,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;
|
|
1
|
+
{"version":3,"file":"secret-scanning.d.ts","sourceRoot":"","sources":["../../src/utils/secret-scanning.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAQH;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,UAAU,GAAG,YAAY,CAAC;AAE3D;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,kBAAkB,CAAC;IACzB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,GAAE,MAAsB,GAAG,OAAO,CAKtE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,GAAE,MAAsB,GAAG,OAAO,CAExE;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,GAAG,GAAE,MAAsB,GAAG,aAAa,EAAE,CAmBtF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,GAAG,GAAE,MAAsB,GAC1B;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,EAAE,CAoCjD;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,kBAAkB,CAAC;IACzB,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAmDD;;GAEG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,kBAAkB,EACxB,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,OAAe,GACvB,UAAU,CA4EZ;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,kBAAkB,GAAG,MAAM,CAE/D;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,kBAAkB,EACxB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,kBAAkB,GAAE,OAAe,GAClC,IAAI,CAmBN;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,IAAI,CAsBpE"}
|