@probelabs/visor 0.1.20 → 0.1.22
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/action-cli-bridge.d.ts +0 -1
- package/dist/action-cli-bridge.d.ts.map +1 -1
- package/dist/ai-review-service.d.ts +0 -1
- package/dist/ai-review-service.d.ts.map +1 -1
- package/dist/check-execution-engine.d.ts +0 -1
- package/dist/check-execution-engine.d.ts.map +1 -1
- package/dist/cli-main.d.ts +0 -2
- package/dist/cli-main.d.ts.map +1 -1
- package/dist/cli.d.ts +0 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/commands.d.ts +0 -1
- package/dist/commands.d.ts.map +1 -1
- package/dist/config.d.ts +0 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/dependency-resolver.d.ts +0 -1
- package/dist/dependency-resolver.d.ts.map +1 -1
- package/dist/event-mapper.d.ts +0 -1
- package/dist/event-mapper.d.ts.map +1 -1
- package/dist/failure-condition-evaluator.d.ts +0 -1
- package/dist/failure-condition-evaluator.d.ts.map +1 -1
- package/dist/git-repository-analyzer.d.ts +0 -1
- package/dist/git-repository-analyzer.d.ts.map +1 -1
- package/dist/github-check-service.d.ts +0 -1
- package/dist/github-check-service.d.ts.map +1 -1
- package/dist/github-comments.d.ts +0 -1
- package/dist/github-comments.d.ts.map +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +127709 -805
- package/dist/output-formatters.d.ts +0 -1
- package/dist/output-formatters.d.ts.map +1 -1
- package/dist/pr-analyzer.d.ts +0 -1
- package/dist/pr-analyzer.d.ts.map +1 -1
- package/dist/pr-detector.d.ts +0 -1
- package/dist/pr-detector.d.ts.map +1 -1
- package/dist/providers/ai-check-provider.d.ts.map +1 -1
- package/dist/providers/check-provider-registry.d.ts.map +1 -1
- package/dist/providers/check-provider.interface.d.ts.map +1 -1
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/noop-check-provider.d.ts.map +1 -1
- package/dist/providers/tool-check-provider.d.ts.map +1 -1
- package/dist/providers/webhook-check-provider.d.ts.map +1 -1
- package/dist/reviewer.d.ts +0 -1
- package/dist/reviewer.d.ts.map +1 -1
- package/dist/session-registry.d.ts +0 -1
- package/dist/session-registry.d.ts.map +1 -1
- package/dist/types/cli.d.ts.map +1 -1
- package/dist/types/config.d.ts.map +1 -1
- package/dist/utils/env-resolver.d.ts.map +1 -1
- package/package.json +3 -3
- package/dist/action-cli-bridge.js +0 -387
- package/dist/action-cli-bridge.js.map +0 -1
- package/dist/ai-review-service.js +0 -854
- package/dist/ai-review-service.js.map +0 -1
- package/dist/check-execution-engine.js +0 -1720
- package/dist/check-execution-engine.js.map +0 -1
- package/dist/cli-main.js +0 -249
- package/dist/cli-main.js.map +0 -1
- package/dist/cli.js +0 -241
- package/dist/cli.js.map +0 -1
- package/dist/commands.js +0 -53
- package/dist/commands.js.map +0 -1
- package/dist/config.js +0 -437
- package/dist/config.js.map +0 -1
- package/dist/dependency-resolver.js +0 -163
- package/dist/dependency-resolver.js.map +0 -1
- package/dist/event-mapper.js +0 -316
- package/dist/event-mapper.js.map +0 -1
- package/dist/failure-condition-evaluator.js +0 -481
- package/dist/failure-condition-evaluator.js.map +0 -1
- package/dist/git-repository-analyzer.js +0 -285
- package/dist/git-repository-analyzer.js.map +0 -1
- package/dist/github-check-service.js +0 -369
- package/dist/github-check-service.js.map +0 -1
- package/dist/github-comments.js +0 -289
- package/dist/github-comments.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/output-formatters.js +0 -624
- package/dist/output-formatters.js.map +0 -1
- package/dist/pr-analyzer.js +0 -195
- package/dist/pr-analyzer.js.map +0 -1
- package/dist/pr-detector.js +0 -357
- package/dist/pr-detector.js.map +0 -1
- package/dist/providers/ai-check-provider.js +0 -437
- package/dist/providers/ai-check-provider.js.map +0 -1
- package/dist/providers/check-provider-registry.js +0 -138
- package/dist/providers/check-provider-registry.js.map +0 -1
- package/dist/providers/check-provider.interface.js +0 -11
- package/dist/providers/check-provider.interface.js.map +0 -1
- package/dist/providers/index.js +0 -19
- package/dist/providers/index.js.map +0 -1
- package/dist/providers/noop-check-provider.js +0 -55
- package/dist/providers/noop-check-provider.js.map +0 -1
- package/dist/providers/tool-check-provider.js +0 -174
- package/dist/providers/tool-check-provider.js.map +0 -1
- package/dist/providers/webhook-check-provider.js +0 -173
- package/dist/providers/webhook-check-provider.js.map +0 -1
- package/dist/reviewer.js +0 -260
- package/dist/reviewer.js.map +0 -1
- package/dist/session-registry.js +0 -67
- package/dist/session-registry.js.map +0 -1
- package/dist/types/cli.js +0 -3
- package/dist/types/cli.js.map +0 -1
- package/dist/types/config.js +0 -6
- package/dist/types/config.js.map +0 -1
- package/dist/utils/env-resolver.js +0 -130
- package/dist/utils/env-resolver.js.map +0 -1
|
@@ -1,163 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Dependency resolution and execution ordering for checks
|
|
4
|
-
*/
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.DependencyResolver = void 0;
|
|
7
|
-
class DependencyResolver {
|
|
8
|
-
/**
|
|
9
|
-
* Build dependency graph from check dependencies
|
|
10
|
-
*/
|
|
11
|
-
static buildDependencyGraph(checkDependencies) {
|
|
12
|
-
const nodes = new Map();
|
|
13
|
-
// Initialize all nodes
|
|
14
|
-
for (const checkId of Object.keys(checkDependencies)) {
|
|
15
|
-
nodes.set(checkId, {
|
|
16
|
-
id: checkId,
|
|
17
|
-
dependencies: checkDependencies[checkId] || [],
|
|
18
|
-
dependents: [],
|
|
19
|
-
depth: 0,
|
|
20
|
-
});
|
|
21
|
-
}
|
|
22
|
-
// Build bidirectional relationships
|
|
23
|
-
for (const [checkId, dependencies] of Object.entries(checkDependencies)) {
|
|
24
|
-
for (const depId of dependencies || []) {
|
|
25
|
-
if (!nodes.has(depId)) {
|
|
26
|
-
throw new Error(`Check "${checkId}" depends on "${depId}" but "${depId}" is not defined`);
|
|
27
|
-
}
|
|
28
|
-
const depNode = nodes.get(depId);
|
|
29
|
-
depNode.dependents.push(checkId);
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
// Detect cycles using DFS
|
|
33
|
-
const cycleDetection = this.detectCycles(nodes);
|
|
34
|
-
if (cycleDetection.hasCycles) {
|
|
35
|
-
return {
|
|
36
|
-
nodes,
|
|
37
|
-
executionOrder: [],
|
|
38
|
-
hasCycles: true,
|
|
39
|
-
cycleNodes: cycleDetection.cycleNodes,
|
|
40
|
-
};
|
|
41
|
-
}
|
|
42
|
-
// Calculate execution order using topological sort
|
|
43
|
-
const executionOrder = this.topologicalSort(nodes);
|
|
44
|
-
return {
|
|
45
|
-
nodes,
|
|
46
|
-
executionOrder,
|
|
47
|
-
hasCycles: false,
|
|
48
|
-
};
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* Detect cycles in the dependency graph using DFS
|
|
52
|
-
*/
|
|
53
|
-
static detectCycles(nodes) {
|
|
54
|
-
const visited = new Set();
|
|
55
|
-
const recursionStack = new Set();
|
|
56
|
-
const cycleNodes = [];
|
|
57
|
-
const dfs = (nodeId) => {
|
|
58
|
-
if (recursionStack.has(nodeId)) {
|
|
59
|
-
cycleNodes.push(nodeId);
|
|
60
|
-
return true;
|
|
61
|
-
}
|
|
62
|
-
if (visited.has(nodeId)) {
|
|
63
|
-
return false;
|
|
64
|
-
}
|
|
65
|
-
visited.add(nodeId);
|
|
66
|
-
recursionStack.add(nodeId);
|
|
67
|
-
const node = nodes.get(nodeId);
|
|
68
|
-
if (node) {
|
|
69
|
-
for (const depId of node.dependencies) {
|
|
70
|
-
if (dfs(depId)) {
|
|
71
|
-
cycleNodes.push(nodeId);
|
|
72
|
-
return true;
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
recursionStack.delete(nodeId);
|
|
77
|
-
return false;
|
|
78
|
-
};
|
|
79
|
-
for (const nodeId of nodes.keys()) {
|
|
80
|
-
if (!visited.has(nodeId)) {
|
|
81
|
-
if (dfs(nodeId)) {
|
|
82
|
-
return { hasCycles: true, cycleNodes: [...new Set(cycleNodes)] };
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
return { hasCycles: false };
|
|
87
|
-
}
|
|
88
|
-
/**
|
|
89
|
-
* Perform topological sort to determine execution order
|
|
90
|
-
* Groups checks that can run in parallel at each level
|
|
91
|
-
*/
|
|
92
|
-
static topologicalSort(nodes) {
|
|
93
|
-
const remainingNodes = new Map(nodes);
|
|
94
|
-
const executionGroups = [];
|
|
95
|
-
let level = 0;
|
|
96
|
-
while (remainingNodes.size > 0) {
|
|
97
|
-
// Find nodes with no remaining dependencies
|
|
98
|
-
const readyNodes = [];
|
|
99
|
-
for (const [nodeId, node] of remainingNodes.entries()) {
|
|
100
|
-
const unmetDependencies = node.dependencies.filter(depId => remainingNodes.has(depId));
|
|
101
|
-
if (unmetDependencies.length === 0) {
|
|
102
|
-
readyNodes.push(nodeId);
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
if (readyNodes.length === 0) {
|
|
106
|
-
// This shouldn't happen if cycle detection worked correctly
|
|
107
|
-
throw new Error('Unable to resolve dependencies - possible circular dependency detected');
|
|
108
|
-
}
|
|
109
|
-
// Add this group to execution order
|
|
110
|
-
executionGroups.push({
|
|
111
|
-
parallel: readyNodes,
|
|
112
|
-
level,
|
|
113
|
-
});
|
|
114
|
-
// Remove processed nodes
|
|
115
|
-
for (const nodeId of readyNodes) {
|
|
116
|
-
remainingNodes.delete(nodeId);
|
|
117
|
-
}
|
|
118
|
-
level++;
|
|
119
|
-
}
|
|
120
|
-
return executionGroups;
|
|
121
|
-
}
|
|
122
|
-
/**
|
|
123
|
-
* Validate that all dependencies exist
|
|
124
|
-
*/
|
|
125
|
-
static validateDependencies(checkIds, dependencies) {
|
|
126
|
-
const errors = [];
|
|
127
|
-
const checkIdSet = new Set(checkIds);
|
|
128
|
-
for (const [checkId, deps] of Object.entries(dependencies)) {
|
|
129
|
-
if (!checkIdSet.has(checkId)) {
|
|
130
|
-
errors.push(`Check "${checkId}" is not in the list of available checks`);
|
|
131
|
-
continue;
|
|
132
|
-
}
|
|
133
|
-
for (const depId of deps || []) {
|
|
134
|
-
if (!checkIdSet.has(depId)) {
|
|
135
|
-
errors.push(`Check "${checkId}" depends on "${depId}" which is not available`);
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
return {
|
|
140
|
-
valid: errors.length === 0,
|
|
141
|
-
errors,
|
|
142
|
-
};
|
|
143
|
-
}
|
|
144
|
-
/**
|
|
145
|
-
* Get execution statistics for debugging
|
|
146
|
-
*/
|
|
147
|
-
static getExecutionStats(graph) {
|
|
148
|
-
const totalChecks = graph.nodes.size;
|
|
149
|
-
const parallelLevels = graph.executionOrder.length;
|
|
150
|
-
const maxParallelism = Math.max(...graph.executionOrder.map(group => group.parallel.length));
|
|
151
|
-
const averageParallelism = totalChecks / parallelLevels;
|
|
152
|
-
const checksWithDependencies = Array.from(graph.nodes.values()).filter(node => node.dependencies.length > 0).length;
|
|
153
|
-
return {
|
|
154
|
-
totalChecks,
|
|
155
|
-
parallelLevels,
|
|
156
|
-
maxParallelism,
|
|
157
|
-
averageParallelism,
|
|
158
|
-
checksWithDependencies,
|
|
159
|
-
};
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
exports.DependencyResolver = DependencyResolver;
|
|
163
|
-
//# sourceMappingURL=dependency-resolver.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dependency-resolver.js","sourceRoot":"","sources":["../src/dependency-resolver.ts"],"names":[],"mappings":"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"}
|
package/dist/event-mapper.js
DELETED
|
@@ -1,316 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.EventMapper = void 0;
|
|
4
|
-
exports.createEventMapper = createEventMapper;
|
|
5
|
-
exports.extractFileContext = extractFileContext;
|
|
6
|
-
/**
|
|
7
|
-
* Maps GitHub events to Visor check executions based on configuration
|
|
8
|
-
*/
|
|
9
|
-
class EventMapper {
|
|
10
|
-
config;
|
|
11
|
-
constructor(config) {
|
|
12
|
-
this.config = config;
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* Map GitHub event to execution plan
|
|
16
|
-
*/
|
|
17
|
-
mapEventToExecution(eventContext, fileContext) {
|
|
18
|
-
// Validate input payload first
|
|
19
|
-
if (!eventContext || typeof eventContext !== 'object') {
|
|
20
|
-
throw new Error('Invalid or corrupted event payload: missing event context');
|
|
21
|
-
}
|
|
22
|
-
if (!eventContext.event_name || typeof eventContext.event_name !== 'string') {
|
|
23
|
-
throw new Error('Invalid or corrupted event payload: missing or invalid event_name');
|
|
24
|
-
}
|
|
25
|
-
const eventTrigger = this.mapGitHubEventToTrigger(eventContext);
|
|
26
|
-
if (!eventTrigger) {
|
|
27
|
-
return {
|
|
28
|
-
shouldExecute: false,
|
|
29
|
-
checksToRun: [],
|
|
30
|
-
executionContext: {
|
|
31
|
-
eventType: 'pr_opened',
|
|
32
|
-
repository: this.getRepositoryName(eventContext),
|
|
33
|
-
triggeredBy: 'unknown_event',
|
|
34
|
-
},
|
|
35
|
-
};
|
|
36
|
-
}
|
|
37
|
-
const checksToRun = this.getChecksForEvent(eventTrigger, fileContext);
|
|
38
|
-
const repository = this.getRepositoryName(eventContext);
|
|
39
|
-
return {
|
|
40
|
-
shouldExecute: checksToRun.length > 0,
|
|
41
|
-
checksToRun,
|
|
42
|
-
executionContext: {
|
|
43
|
-
eventType: eventTrigger,
|
|
44
|
-
prNumber: this.extractPRNumber(eventContext),
|
|
45
|
-
repository,
|
|
46
|
-
triggeredBy: this.getTriggeredBy(eventContext),
|
|
47
|
-
},
|
|
48
|
-
};
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* Map GitHub event to Visor event trigger
|
|
52
|
-
*/
|
|
53
|
-
mapGitHubEventToTrigger(eventContext) {
|
|
54
|
-
const { event_name, action } = eventContext;
|
|
55
|
-
switch (event_name) {
|
|
56
|
-
case 'pull_request':
|
|
57
|
-
if (action === 'opened')
|
|
58
|
-
return 'pr_opened';
|
|
59
|
-
if (action === 'synchronize' || action === 'edited')
|
|
60
|
-
return 'pr_updated';
|
|
61
|
-
if (action === 'closed')
|
|
62
|
-
return 'pr_closed';
|
|
63
|
-
break;
|
|
64
|
-
case 'issues':
|
|
65
|
-
if (action === 'opened')
|
|
66
|
-
return 'issue_opened';
|
|
67
|
-
break;
|
|
68
|
-
case 'issue_comment':
|
|
69
|
-
// Check if this is a comment on a PR (has pull_request property)
|
|
70
|
-
if (eventContext.issue?.pull_request) {
|
|
71
|
-
return 'pr_updated'; // Treat PR comments as PR updates
|
|
72
|
-
}
|
|
73
|
-
return 'issue_comment'; // Regular issue comments remain issue_comment
|
|
74
|
-
break;
|
|
75
|
-
case 'pull_request_review':
|
|
76
|
-
return 'pr_updated';
|
|
77
|
-
case 'push':
|
|
78
|
-
// Push events are not directly supported as PR events
|
|
79
|
-
// They would need additional context to determine if they're part of a PR
|
|
80
|
-
return null;
|
|
81
|
-
}
|
|
82
|
-
return null;
|
|
83
|
-
}
|
|
84
|
-
/**
|
|
85
|
-
* Get checks that should run for a specific event
|
|
86
|
-
*/
|
|
87
|
-
getChecksForEvent(eventTrigger, fileContext) {
|
|
88
|
-
const checksToRun = [];
|
|
89
|
-
for (const [checkName, checkConfig] of Object.entries(this.config.checks || {})) {
|
|
90
|
-
if (this.shouldRunCheck(checkConfig, eventTrigger, fileContext)) {
|
|
91
|
-
checksToRun.push(checkName);
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
return checksToRun;
|
|
95
|
-
}
|
|
96
|
-
/**
|
|
97
|
-
* Determine if a specific check should run
|
|
98
|
-
*/
|
|
99
|
-
shouldRunCheck(checkConfig, eventTrigger, fileContext) {
|
|
100
|
-
// Check if event trigger matches
|
|
101
|
-
if (!checkConfig.on.includes(eventTrigger)) {
|
|
102
|
-
return false;
|
|
103
|
-
}
|
|
104
|
-
// Check file-based triggers if file context is available
|
|
105
|
-
if (fileContext && checkConfig.triggers) {
|
|
106
|
-
return this.matchesFilePatterns(checkConfig.triggers, fileContext);
|
|
107
|
-
}
|
|
108
|
-
// If no file triggers specified, run on matching events
|
|
109
|
-
return true;
|
|
110
|
-
}
|
|
111
|
-
/**
|
|
112
|
-
* Check if file changes match trigger patterns
|
|
113
|
-
*/
|
|
114
|
-
matchesFilePatterns(patterns, fileContext) {
|
|
115
|
-
const allFiles = [
|
|
116
|
-
...(fileContext.changedFiles || []),
|
|
117
|
-
...(fileContext.addedFiles || []),
|
|
118
|
-
...(fileContext.modifiedFiles || []),
|
|
119
|
-
];
|
|
120
|
-
return patterns.some(pattern => {
|
|
121
|
-
const regex = this.convertGlobToRegex(pattern);
|
|
122
|
-
return allFiles.some(file => regex.test(file));
|
|
123
|
-
});
|
|
124
|
-
}
|
|
125
|
-
/**
|
|
126
|
-
* Convert glob pattern to RegExp
|
|
127
|
-
*/
|
|
128
|
-
convertGlobToRegex(glob) {
|
|
129
|
-
let regexPattern = glob.replace(/[.+^${}()|[\]\\]/g, '\\$&'); // Escape special regex chars
|
|
130
|
-
// Handle different types of glob patterns
|
|
131
|
-
regexPattern = regexPattern
|
|
132
|
-
.replace(/\*\*\/\*/g, '___GLOBSTAR_ALL___') // Temporarily replace **/*
|
|
133
|
-
.replace(/\*\*\//g, '___GLOBSTAR_DIR___') // Temporarily replace **/
|
|
134
|
-
.replace(/\/\*\*/g, '___SLASH_GLOBSTAR___') // Temporarily replace /**
|
|
135
|
-
.replace(/\*\*/g, '___GLOBSTAR___') // Temporarily replace **
|
|
136
|
-
.replace(/\*/g, '[^/]*') // Convert * to [^/]* (matches within directory)
|
|
137
|
-
.replace(/\?/g, '.') // Convert ? to .
|
|
138
|
-
.replace(/___GLOBSTAR_ALL___/g, '.*') // Convert **/* to .*
|
|
139
|
-
.replace(/___GLOBSTAR_DIR___/g, '(?:.*/)?') // Convert **/ to (?:.*/)?
|
|
140
|
-
.replace(/___SLASH_GLOBSTAR___/g, '(?:/.*)?') // Convert /** to (?:/.*)?
|
|
141
|
-
.replace(/___GLOBSTAR___/g, '.*'); // Convert ** to .*
|
|
142
|
-
// Handle brace expansion {a,b} -> (a|b)
|
|
143
|
-
regexPattern = regexPattern.replace(/\\\{([^}]+)\\\}/g, (match, content) => {
|
|
144
|
-
// Convert comma-separated alternatives to regex alternation
|
|
145
|
-
const alternatives = content.split(',').map((alt) => alt.trim());
|
|
146
|
-
return `(${alternatives.join('|')})`;
|
|
147
|
-
});
|
|
148
|
-
return new RegExp(`^${regexPattern}$`);
|
|
149
|
-
}
|
|
150
|
-
/**
|
|
151
|
-
* Extract PR number from event context
|
|
152
|
-
*/
|
|
153
|
-
extractPRNumber(eventContext) {
|
|
154
|
-
if (eventContext.pull_request) {
|
|
155
|
-
return eventContext.pull_request.number;
|
|
156
|
-
}
|
|
157
|
-
if (eventContext.issue?.pull_request) {
|
|
158
|
-
return eventContext.issue.number;
|
|
159
|
-
}
|
|
160
|
-
return undefined;
|
|
161
|
-
}
|
|
162
|
-
/**
|
|
163
|
-
* Get repository name from event context
|
|
164
|
-
*/
|
|
165
|
-
getRepositoryName(eventContext) {
|
|
166
|
-
if (eventContext.repository &&
|
|
167
|
-
typeof eventContext.repository === 'object' &&
|
|
168
|
-
eventContext.repository.owner &&
|
|
169
|
-
typeof eventContext.repository.owner === 'object' &&
|
|
170
|
-
eventContext.repository.owner.login &&
|
|
171
|
-
eventContext.repository.name) {
|
|
172
|
-
return `${eventContext.repository.owner.login}/${eventContext.repository.name}`;
|
|
173
|
-
}
|
|
174
|
-
return 'unknown/repository';
|
|
175
|
-
}
|
|
176
|
-
/**
|
|
177
|
-
* Get triggered by information
|
|
178
|
-
*/
|
|
179
|
-
getTriggeredBy(eventContext) {
|
|
180
|
-
const { event_name, action } = eventContext;
|
|
181
|
-
if (eventContext.comment?.user?.login) {
|
|
182
|
-
return `comment_by_${eventContext.comment.user.login}`;
|
|
183
|
-
}
|
|
184
|
-
return action ? `${event_name}_${action}` : event_name;
|
|
185
|
-
}
|
|
186
|
-
/**
|
|
187
|
-
* Get selective execution plan for specific checks
|
|
188
|
-
*/
|
|
189
|
-
getSelectiveExecution(eventContext, requestedChecks, fileContext) {
|
|
190
|
-
const eventTrigger = this.mapGitHubEventToTrigger(eventContext);
|
|
191
|
-
if (!eventTrigger) {
|
|
192
|
-
return {
|
|
193
|
-
shouldExecute: false,
|
|
194
|
-
checksToRun: [],
|
|
195
|
-
executionContext: {
|
|
196
|
-
eventType: 'pr_opened',
|
|
197
|
-
repository: this.getRepositoryName(eventContext),
|
|
198
|
-
triggeredBy: 'selective_execution',
|
|
199
|
-
},
|
|
200
|
-
};
|
|
201
|
-
}
|
|
202
|
-
// Filter requested checks by what's available in config and what should run
|
|
203
|
-
const validChecks = requestedChecks.filter(checkName => {
|
|
204
|
-
const checkConfig = this.config.checks?.[checkName];
|
|
205
|
-
return checkConfig && this.shouldRunCheck(checkConfig, eventTrigger, fileContext);
|
|
206
|
-
});
|
|
207
|
-
return {
|
|
208
|
-
shouldExecute: validChecks.length > 0,
|
|
209
|
-
checksToRun: validChecks,
|
|
210
|
-
executionContext: {
|
|
211
|
-
eventType: eventTrigger,
|
|
212
|
-
prNumber: this.extractPRNumber(eventContext),
|
|
213
|
-
repository: this.getRepositoryName(eventContext),
|
|
214
|
-
triggeredBy: 'selective_execution',
|
|
215
|
-
},
|
|
216
|
-
};
|
|
217
|
-
}
|
|
218
|
-
/**
|
|
219
|
-
* Check if event should trigger any executions
|
|
220
|
-
*/
|
|
221
|
-
shouldProcessEvent(eventContext) {
|
|
222
|
-
const eventTrigger = this.mapGitHubEventToTrigger(eventContext);
|
|
223
|
-
if (!eventTrigger) {
|
|
224
|
-
return false;
|
|
225
|
-
}
|
|
226
|
-
// Check if any configured checks match this event
|
|
227
|
-
return Object.values(this.config.checks || {}).some(checkConfig => checkConfig.on.includes(eventTrigger));
|
|
228
|
-
}
|
|
229
|
-
/**
|
|
230
|
-
* Get available checks for display purposes
|
|
231
|
-
*/
|
|
232
|
-
getAvailableChecks() {
|
|
233
|
-
return Object.entries(this.config.checks || {}).map(([name, config]) => ({
|
|
234
|
-
name,
|
|
235
|
-
description: config.prompt?.split('\n')[0] || config.exec?.split(' ')[0] || 'No description available',
|
|
236
|
-
triggers: config.on,
|
|
237
|
-
}));
|
|
238
|
-
}
|
|
239
|
-
/**
|
|
240
|
-
* Validate event context
|
|
241
|
-
*/
|
|
242
|
-
validateEventContext(eventContext) {
|
|
243
|
-
const errors = [];
|
|
244
|
-
if (!eventContext.event_name) {
|
|
245
|
-
errors.push('Missing event_name in event context');
|
|
246
|
-
}
|
|
247
|
-
if (!eventContext.repository) {
|
|
248
|
-
errors.push('Missing repository information in event context');
|
|
249
|
-
}
|
|
250
|
-
// For PR events, ensure PR information is present
|
|
251
|
-
if (eventContext.event_name === 'pull_request' && !eventContext.pull_request) {
|
|
252
|
-
errors.push('Missing pull_request information for pull_request event');
|
|
253
|
-
}
|
|
254
|
-
// For comment events, ensure comment and issue information is present
|
|
255
|
-
if (eventContext.event_name === 'issue_comment') {
|
|
256
|
-
if (!eventContext.comment) {
|
|
257
|
-
errors.push('Missing comment information for issue_comment event');
|
|
258
|
-
}
|
|
259
|
-
if (!eventContext.issue) {
|
|
260
|
-
errors.push('Missing issue information for issue_comment event');
|
|
261
|
-
}
|
|
262
|
-
}
|
|
263
|
-
return {
|
|
264
|
-
isValid: errors.length === 0,
|
|
265
|
-
errors,
|
|
266
|
-
};
|
|
267
|
-
}
|
|
268
|
-
}
|
|
269
|
-
exports.EventMapper = EventMapper;
|
|
270
|
-
/**
|
|
271
|
-
* Utility function to create EventMapper from config
|
|
272
|
-
*/
|
|
273
|
-
function createEventMapper(config) {
|
|
274
|
-
return new EventMapper(config);
|
|
275
|
-
}
|
|
276
|
-
/**
|
|
277
|
-
* Utility function to extract file context from GitHub PR
|
|
278
|
-
*/
|
|
279
|
-
async function extractFileContext(octokit, owner, repo, prNumber) {
|
|
280
|
-
try {
|
|
281
|
-
const { data: files } = await octokit.rest.pulls.listFiles({
|
|
282
|
-
owner,
|
|
283
|
-
repo,
|
|
284
|
-
pull_number: prNumber,
|
|
285
|
-
});
|
|
286
|
-
const changedFiles = [];
|
|
287
|
-
const addedFiles = [];
|
|
288
|
-
const modifiedFiles = [];
|
|
289
|
-
const deletedFiles = [];
|
|
290
|
-
for (const file of files) {
|
|
291
|
-
changedFiles.push(file.filename);
|
|
292
|
-
switch (file.status) {
|
|
293
|
-
case 'added':
|
|
294
|
-
addedFiles.push(file.filename);
|
|
295
|
-
break;
|
|
296
|
-
case 'modified':
|
|
297
|
-
modifiedFiles.push(file.filename);
|
|
298
|
-
break;
|
|
299
|
-
case 'removed':
|
|
300
|
-
deletedFiles.push(file.filename);
|
|
301
|
-
break;
|
|
302
|
-
}
|
|
303
|
-
}
|
|
304
|
-
return {
|
|
305
|
-
changedFiles,
|
|
306
|
-
addedFiles,
|
|
307
|
-
modifiedFiles,
|
|
308
|
-
deletedFiles,
|
|
309
|
-
};
|
|
310
|
-
}
|
|
311
|
-
catch (error) {
|
|
312
|
-
console.error('Failed to extract file context:', error);
|
|
313
|
-
return {};
|
|
314
|
-
}
|
|
315
|
-
}
|
|
316
|
-
//# sourceMappingURL=event-mapper.js.map
|
package/dist/event-mapper.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"event-mapper.js","sourceRoot":"","sources":["../src/event-mapper.ts"],"names":[],"mappings":"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"}
|