@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,81 @@
1
+ /**
2
+ * Failure condition evaluation engine using SandboxJS for secure expression evaluation
3
+ */
4
+ import { ReviewSummary } from './reviewer';
5
+ import { FailureConditions, FailureConditionResult } from './types/config';
6
+ /**
7
+ * Evaluates failure conditions using SandboxJS for secure evaluation
8
+ */
9
+ export declare class FailureConditionEvaluator {
10
+ private sandbox;
11
+ constructor();
12
+ /**
13
+ * Create a secure sandbox with whitelisted functions and globals
14
+ */
15
+ private createSecureSandbox;
16
+ /**
17
+ * Evaluate simple fail_if condition
18
+ */
19
+ evaluateSimpleCondition(checkName: string, checkSchema: string, checkGroup: string, reviewSummary: ReviewSummary, expression: string, previousOutputs?: Record<string, any>): Promise<boolean>;
20
+ /**
21
+ * Evaluate if condition to determine whether a check should run
22
+ */
23
+ evaluateIfCondition(checkName: string, expression: string, contextData?: {
24
+ branch?: string;
25
+ baseBranch?: string;
26
+ filesChanged?: string[];
27
+ event?: string;
28
+ environment?: Record<string, any>;
29
+ previousResults?: Map<string, ReviewSummary>;
30
+ }): Promise<boolean>;
31
+ /**
32
+ * Evaluate all failure conditions for a check result
33
+ */
34
+ evaluateConditions(checkName: string, checkSchema: string, checkGroup: string, reviewSummary: ReviewSummary, globalConditions?: FailureConditions, checkConditions?: FailureConditions, previousOutputs?: Record<string, any>): Promise<FailureConditionResult[]>;
35
+ /**
36
+ * Evaluate a set of failure conditions
37
+ */
38
+ private evaluateConditionSet;
39
+ /**
40
+ * Evaluate a single failure condition
41
+ */
42
+ private evaluateSingleCondition;
43
+ /**
44
+ * Secure expression evaluation using SandboxJS
45
+ * Supports the same GitHub Actions-style functions as the previous implementation
46
+ */
47
+ private evaluateExpression;
48
+ /**
49
+ * Extract the expression from a failure condition
50
+ */
51
+ private extractExpression;
52
+ /**
53
+ * Extract configuration from a failure condition
54
+ */
55
+ private extractConditionConfig;
56
+ /**
57
+ * Build the evaluation context for expressions
58
+ */
59
+ private buildEvaluationContext;
60
+ /**
61
+ * Check if any failure condition requires halting execution
62
+ */
63
+ static shouldHaltExecution(results: FailureConditionResult[]): boolean;
64
+ /**
65
+ * Get all failed conditions
66
+ */
67
+ static getFailedConditions(results: FailureConditionResult[]): FailureConditionResult[];
68
+ /**
69
+ * Group results by severity
70
+ */
71
+ static groupResultsBySeverity(results: FailureConditionResult[]): {
72
+ error: FailureConditionResult[];
73
+ warning: FailureConditionResult[];
74
+ info: FailureConditionResult[];
75
+ };
76
+ /**
77
+ * Format results for display
78
+ */
79
+ static formatResults(results: FailureConditionResult[]): string;
80
+ }
81
+ //# sourceMappingURL=failure-condition-evaluator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"failure-condition-evaluator.d.ts","sourceRoot":"","sources":["../src/failure-condition-evaluator.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EACL,iBAAiB,EAGjB,sBAAsB,EAEvB,MAAM,gBAAgB,CAAC;AAGxB;;GAEG;AACH,qBAAa,yBAAyB;IACpC,OAAO,CAAC,OAAO,CAAU;;IAMzB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA6D3B;;OAEG;IACG,uBAAuB,CAC3B,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,aAAa,EAC5B,UAAU,EAAE,MAAM,EAClB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GACpC,OAAO,CAAC,OAAO,CAAC;IAiBnB;;OAEG;IACG,mBAAmB,CACvB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,WAAW,CAAC,EAAE;QACZ,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;QACxB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAClC,eAAe,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;KAC9C,GACA,OAAO,CAAC,OAAO,CAAC;IAyCnB;;OAEG;IACG,kBAAkB,CACtB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,aAAa,EAC5B,gBAAgB,CAAC,EAAE,iBAAiB,EACpC,eAAe,CAAC,EAAE,iBAAiB,EACnC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GACpC,OAAO,CAAC,sBAAsB,EAAE,CAAC;IAkCpC;;OAEG;YACW,oBAAoB;IA6BlC;;OAEG;YACW,uBAAuB;IA0BrC;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAgJ1B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAOzB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAe9B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAgD9B;;OAEG;IACH,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,sBAAsB,EAAE,GAAG,OAAO;IAItE;;OAEG;IACH,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,sBAAsB,EAAE,GAAG,sBAAsB,EAAE;IAIvF;;OAEG;IACH,MAAM,CAAC,sBAAsB,CAAC,OAAO,EAAE,sBAAsB,EAAE,GAAG;QAChE,KAAK,EAAE,sBAAsB,EAAE,CAAC;QAChC,OAAO,EAAE,sBAAsB,EAAE,CAAC;QAClC,IAAI,EAAE,sBAAsB,EAAE,CAAC;KAChC;IAQD;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,sBAAsB,EAAE,GAAG,MAAM;CAiChE"}
@@ -0,0 +1,445 @@
1
+ "use strict";
2
+ /**
3
+ * Failure condition evaluation engine using SandboxJS for secure expression evaluation
4
+ */
5
+ var __importDefault = (this && this.__importDefault) || function (mod) {
6
+ return (mod && mod.__esModule) ? mod : { "default": mod };
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.FailureConditionEvaluator = void 0;
10
+ const sandboxjs_1 = __importDefault(require("@nyariv/sandboxjs"));
11
+ /**
12
+ * Evaluates failure conditions using SandboxJS for secure evaluation
13
+ */
14
+ class FailureConditionEvaluator {
15
+ sandbox;
16
+ constructor() {
17
+ this.sandbox = this.createSecureSandbox();
18
+ }
19
+ /**
20
+ * Create a secure sandbox with whitelisted functions and globals
21
+ */
22
+ createSecureSandbox() {
23
+ // Start with safe globals and prototypes
24
+ const globals = {
25
+ ...sandboxjs_1.default.SAFE_GLOBALS,
26
+ // Allow Math for calculations
27
+ Math,
28
+ // Allow console for debugging (in controlled environment)
29
+ console: {
30
+ log: console.log,
31
+ warn: console.warn,
32
+ error: console.error,
33
+ },
34
+ };
35
+ // Create prototype whitelist - use safe defaults
36
+ const prototypeWhitelist = new Map(sandboxjs_1.default.SAFE_PROTOTYPES);
37
+ // Explicitly allow array methods that we need
38
+ const arrayMethods = new Set([
39
+ 'some',
40
+ 'every',
41
+ 'filter',
42
+ 'map',
43
+ 'reduce',
44
+ 'find',
45
+ 'includes',
46
+ 'indexOf',
47
+ 'length',
48
+ 'slice',
49
+ 'concat',
50
+ 'join',
51
+ ]);
52
+ prototypeWhitelist.set(Array.prototype, arrayMethods);
53
+ // Allow string methods
54
+ const stringMethods = new Set([
55
+ 'toLowerCase',
56
+ 'toUpperCase',
57
+ 'includes',
58
+ 'indexOf',
59
+ 'startsWith',
60
+ 'endsWith',
61
+ 'slice',
62
+ 'substring',
63
+ 'length',
64
+ 'trim',
65
+ 'split',
66
+ 'replace',
67
+ ]);
68
+ prototypeWhitelist.set(String.prototype, stringMethods);
69
+ // Allow basic object methods
70
+ const objectMethods = new Set(['hasOwnProperty', 'toString', 'valueOf']);
71
+ prototypeWhitelist.set(Object.prototype, objectMethods);
72
+ return new sandboxjs_1.default({
73
+ globals,
74
+ prototypeWhitelist,
75
+ });
76
+ }
77
+ /**
78
+ * Evaluate simple fail_if condition
79
+ */
80
+ async evaluateSimpleCondition(checkName, checkSchema, checkGroup, reviewSummary, expression, previousOutputs) {
81
+ const context = this.buildEvaluationContext(checkName, checkSchema, checkGroup, reviewSummary, previousOutputs);
82
+ try {
83
+ return this.evaluateExpression(expression, context);
84
+ }
85
+ catch (error) {
86
+ console.warn(`Failed to evaluate fail_if expression: ${error}`);
87
+ return false; // Don't fail on evaluation errors
88
+ }
89
+ }
90
+ /**
91
+ * Evaluate if condition to determine whether a check should run
92
+ */
93
+ async evaluateIfCondition(checkName, expression, contextData) {
94
+ // Build context for if evaluation
95
+ const context = {
96
+ // Check metadata
97
+ checkName,
98
+ // Git context
99
+ branch: contextData?.branch || 'unknown',
100
+ baseBranch: contextData?.baseBranch || 'main',
101
+ filesChanged: contextData?.filesChanged || [],
102
+ filesCount: contextData?.filesChanged?.length || 0,
103
+ // Event context
104
+ event: contextData?.event || 'manual',
105
+ // Environment variables
106
+ env: contextData?.environment || {},
107
+ // Previous check results (raw outputs for full access)
108
+ outputs: contextData?.previousResults
109
+ ? Object.fromEntries(Array.from(contextData.previousResults.entries()))
110
+ : {},
111
+ // Utility metadata
112
+ metadata: {
113
+ checkName,
114
+ hasChanges: (contextData?.filesChanged?.length || 0) > 0,
115
+ branch: contextData?.branch || 'unknown',
116
+ event: contextData?.event || 'manual',
117
+ },
118
+ };
119
+ try {
120
+ return this.evaluateExpression(expression, context);
121
+ }
122
+ catch (error) {
123
+ console.warn(`Failed to evaluate if expression for check '${checkName}': ${error}`);
124
+ // Default to running the check if evaluation fails
125
+ return true;
126
+ }
127
+ }
128
+ /**
129
+ * Evaluate all failure conditions for a check result
130
+ */
131
+ async evaluateConditions(checkName, checkSchema, checkGroup, reviewSummary, globalConditions, checkConditions, previousOutputs) {
132
+ const context = this.buildEvaluationContext(checkName, checkSchema, checkGroup, reviewSummary, previousOutputs);
133
+ const results = [];
134
+ // Evaluate global conditions first
135
+ if (globalConditions) {
136
+ const globalResults = await this.evaluateConditionSet(globalConditions, context, 'global');
137
+ results.push(...globalResults);
138
+ }
139
+ // Evaluate check-specific conditions (these override global ones with same name)
140
+ if (checkConditions) {
141
+ const checkResults = await this.evaluateConditionSet(checkConditions, context, 'check');
142
+ // Remove global conditions that are overridden by check-specific ones
143
+ const overriddenConditions = new Set(Object.keys(checkConditions));
144
+ const filteredResults = results.filter(result => !overriddenConditions.has(result.conditionName));
145
+ results.length = 0;
146
+ results.push(...filteredResults, ...checkResults);
147
+ }
148
+ return results;
149
+ }
150
+ /**
151
+ * Evaluate a set of failure conditions
152
+ */
153
+ async evaluateConditionSet(conditions, context, source) {
154
+ const results = [];
155
+ for (const [conditionName, condition] of Object.entries(conditions)) {
156
+ try {
157
+ const result = await this.evaluateSingleCondition(conditionName, condition, context);
158
+ results.push(result);
159
+ }
160
+ catch (error) {
161
+ // If evaluation fails, create an error result
162
+ results.push({
163
+ conditionName,
164
+ failed: false,
165
+ expression: this.extractExpression(condition),
166
+ severity: 'error',
167
+ haltExecution: false,
168
+ error: `Failed to evaluate ${source} condition '${conditionName}': ${error instanceof Error ? error.message : String(error)}`,
169
+ });
170
+ }
171
+ }
172
+ return results;
173
+ }
174
+ /**
175
+ * Evaluate a single failure condition
176
+ */
177
+ async evaluateSingleCondition(conditionName, condition, context) {
178
+ const expression = this.extractExpression(condition);
179
+ const config = this.extractConditionConfig(condition);
180
+ try {
181
+ const failed = this.evaluateExpression(expression, context);
182
+ return {
183
+ conditionName,
184
+ failed,
185
+ expression,
186
+ message: config.message,
187
+ severity: config.severity || 'error',
188
+ haltExecution: config.halt_execution || false,
189
+ };
190
+ }
191
+ catch (error) {
192
+ throw new Error(`Expression evaluation error: ${error instanceof Error ? error.message : String(error)}`);
193
+ }
194
+ }
195
+ /**
196
+ * Secure expression evaluation using SandboxJS
197
+ * Supports the same GitHub Actions-style functions as the previous implementation
198
+ */
199
+ evaluateExpression(condition, context) {
200
+ try {
201
+ // Helper functions for GitHub Actions-style expressions
202
+ const contains = (searchString, searchValue) => String(searchString).toLowerCase().includes(String(searchValue).toLowerCase());
203
+ const startsWith = (searchString, searchValue) => String(searchString).toLowerCase().startsWith(String(searchValue).toLowerCase());
204
+ const endsWith = (searchString, searchValue) => String(searchString).toLowerCase().endsWith(String(searchValue).toLowerCase());
205
+ const length = (value) => {
206
+ if (typeof value === 'string' || Array.isArray(value)) {
207
+ return value.length;
208
+ }
209
+ if (value && typeof value === 'object') {
210
+ return Object.keys(value).length;
211
+ }
212
+ return 0;
213
+ };
214
+ const always = () => true;
215
+ const success = () => true;
216
+ const failure = () => false;
217
+ // Helper functions for array operations
218
+ const hasIssue = (issues, field, value) => {
219
+ if (!Array.isArray(issues))
220
+ return false;
221
+ return issues.some(issue => issue[field] === value);
222
+ };
223
+ const countIssues = (issues, field, value) => {
224
+ if (!Array.isArray(issues))
225
+ return 0;
226
+ return issues.filter(issue => issue[field] === value).length;
227
+ };
228
+ const hasFileMatching = (issues, pattern) => {
229
+ if (!Array.isArray(issues))
230
+ return false;
231
+ return issues.some(issue => issue.file && issue.file.includes(pattern));
232
+ };
233
+ const hasSuggestion = (suggestions, text) => {
234
+ if (!Array.isArray(suggestions))
235
+ return false;
236
+ return suggestions.some(s => s.toLowerCase().includes(text.toLowerCase()));
237
+ };
238
+ // Backward compatibility aliases
239
+ const hasIssueWith = hasIssue;
240
+ const hasFileWith = hasFileMatching;
241
+ // Extract context variables
242
+ const output = context.output || {};
243
+ const issues = output.issues || [];
244
+ const suggestions = output.suggestions || [];
245
+ // Backward compatibility: provide metadata for transition period
246
+ // TODO: Remove after all configurations are updated
247
+ const metadata = context.metadata || {
248
+ checkName: context.checkName || '',
249
+ schema: context.schema || '',
250
+ group: context.group || '',
251
+ criticalIssues: issues.filter((i) => i.severity === 'critical').length,
252
+ errorIssues: issues.filter((i) => i.severity === 'error').length,
253
+ warningIssues: issues.filter((i) => i.severity === 'warning').length,
254
+ infoIssues: issues.filter((i) => i.severity === 'info').length,
255
+ totalIssues: issues.length,
256
+ hasChanges: context.hasChanges || false,
257
+ };
258
+ // Legacy variables for backward compatibility
259
+ const criticalIssues = metadata.criticalIssues;
260
+ const errorIssues = metadata.errorIssues;
261
+ const totalIssues = metadata.totalIssues;
262
+ const warningIssues = metadata.warningIssues;
263
+ const infoIssues = metadata.infoIssues;
264
+ // Additional context for 'if' conditions and some failure conditions
265
+ const checkName = context.checkName || '';
266
+ const schema = context.schema || '';
267
+ const group = context.group || '';
268
+ const branch = context.branch || 'unknown';
269
+ const baseBranch = context.baseBranch || 'main';
270
+ const filesChanged = context.filesChanged || [];
271
+ const filesCount = context.filesCount || 0;
272
+ const event = context.event || 'manual';
273
+ const env = context.env || {};
274
+ const outputs = context.outputs || {};
275
+ const debug = context.debug || null;
276
+ // Create scope with all context variables and helper functions
277
+ const scope = {
278
+ // Primary context variables
279
+ output,
280
+ outputs,
281
+ debug,
282
+ // Legacy compatibility variables
283
+ issues,
284
+ suggestions,
285
+ metadata,
286
+ criticalIssues,
287
+ errorIssues,
288
+ totalIssues,
289
+ warningIssues,
290
+ infoIssues,
291
+ // If condition context
292
+ checkName,
293
+ schema,
294
+ group,
295
+ branch,
296
+ baseBranch,
297
+ filesChanged,
298
+ filesCount,
299
+ event,
300
+ env,
301
+ // Helper functions
302
+ contains,
303
+ startsWith,
304
+ endsWith,
305
+ length,
306
+ always,
307
+ success,
308
+ failure,
309
+ hasIssue,
310
+ countIssues,
311
+ hasFileMatching,
312
+ hasSuggestion,
313
+ hasIssueWith,
314
+ hasFileWith,
315
+ };
316
+ // Compile and execute the expression in the sandbox
317
+ const exec = this.sandbox.compile(`return (${condition.trim()});`);
318
+ const result = exec(scope).run();
319
+ // Ensure we return a boolean
320
+ return Boolean(result);
321
+ }
322
+ catch (error) {
323
+ console.error('❌ Failed to evaluate expression:', condition, error);
324
+ // Re-throw the error so it can be caught at a higher level for error reporting
325
+ throw error;
326
+ }
327
+ }
328
+ /**
329
+ * Extract the expression from a failure condition
330
+ */
331
+ extractExpression(condition) {
332
+ if (typeof condition === 'string') {
333
+ return condition;
334
+ }
335
+ return condition.condition;
336
+ }
337
+ /**
338
+ * Extract configuration from a failure condition
339
+ */
340
+ extractConditionConfig(condition) {
341
+ if (typeof condition === 'string') {
342
+ return {};
343
+ }
344
+ return {
345
+ message: condition.message,
346
+ severity: condition.severity,
347
+ halt_execution: condition.halt_execution,
348
+ };
349
+ }
350
+ /**
351
+ * Build the evaluation context for expressions
352
+ */
353
+ buildEvaluationContext(checkName, checkSchema, checkGroup, reviewSummary, previousOutputs) {
354
+ const { issues, suggestions, debug } = reviewSummary;
355
+ const context = {
356
+ output: {
357
+ issues: issues.map(issue => ({
358
+ file: issue.file,
359
+ line: issue.line,
360
+ endLine: issue.endLine,
361
+ ruleId: issue.ruleId,
362
+ message: issue.message,
363
+ severity: issue.severity,
364
+ category: issue.category,
365
+ group: issue.group,
366
+ schema: issue.schema,
367
+ suggestion: issue.suggestion,
368
+ replacement: issue.replacement,
369
+ })),
370
+ suggestions,
371
+ // Include additional schema-specific data from reviewSummary
372
+ ...reviewSummary, // Pass through any additional fields
373
+ },
374
+ outputs: previousOutputs || {},
375
+ // Add basic context info for failure conditions
376
+ checkName: checkName,
377
+ schema: checkSchema,
378
+ group: checkGroup,
379
+ };
380
+ // Add debug information if available
381
+ if (debug) {
382
+ context.debug = {
383
+ errors: debug.errors || [],
384
+ processingTime: debug.processingTime || 0,
385
+ provider: debug.provider || 'unknown',
386
+ model: debug.model || 'unknown',
387
+ };
388
+ }
389
+ return context;
390
+ }
391
+ /**
392
+ * Check if any failure condition requires halting execution
393
+ */
394
+ static shouldHaltExecution(results) {
395
+ return results.some(result => result.failed && result.haltExecution);
396
+ }
397
+ /**
398
+ * Get all failed conditions
399
+ */
400
+ static getFailedConditions(results) {
401
+ return results.filter(result => result.failed);
402
+ }
403
+ /**
404
+ * Group results by severity
405
+ */
406
+ static groupResultsBySeverity(results) {
407
+ return {
408
+ error: results.filter(r => r.severity === 'error'),
409
+ warning: results.filter(r => r.severity === 'warning'),
410
+ info: results.filter(r => r.severity === 'info'),
411
+ };
412
+ }
413
+ /**
414
+ * Format results for display
415
+ */
416
+ static formatResults(results) {
417
+ const failed = FailureConditionEvaluator.getFailedConditions(results);
418
+ if (failed.length === 0) {
419
+ return '✅ All failure conditions passed';
420
+ }
421
+ const grouped = FailureConditionEvaluator.groupResultsBySeverity(failed);
422
+ const sections = [];
423
+ if (grouped.error.length > 0) {
424
+ sections.push(`❌ **Error conditions (${grouped.error.length}):**`);
425
+ grouped.error.forEach(result => {
426
+ sections.push(` - ${result.conditionName}: ${result.message || result.expression}`);
427
+ });
428
+ }
429
+ if (grouped.warning.length > 0) {
430
+ sections.push(`⚠️ **Warning conditions (${grouped.warning.length}):**`);
431
+ grouped.warning.forEach(result => {
432
+ sections.push(` - ${result.conditionName}: ${result.message || result.expression}`);
433
+ });
434
+ }
435
+ if (grouped.info.length > 0) {
436
+ sections.push(`ℹ️ **Info conditions (${grouped.info.length}):**`);
437
+ grouped.info.forEach(result => {
438
+ sections.push(` - ${result.conditionName}: ${result.message || result.expression}`);
439
+ });
440
+ }
441
+ return sections.join('\n');
442
+ }
443
+ }
444
+ exports.FailureConditionEvaluator = FailureConditionEvaluator;
445
+ //# sourceMappingURL=failure-condition-evaluator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"failure-condition-evaluator.js","sourceRoot":"","sources":["../src/failure-condition-evaluator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ import { PRInfo } from './pr-analyzer';
2
+ export interface GitFileChange {
3
+ filename: string;
4
+ status: 'added' | 'removed' | 'modified' | 'renamed';
5
+ additions: number;
6
+ deletions: number;
7
+ changes: number;
8
+ content?: string;
9
+ patch?: string;
10
+ }
11
+ export interface GitRepositoryInfo {
12
+ title: string;
13
+ body: string;
14
+ author: string;
15
+ base: string;
16
+ head: string;
17
+ files: GitFileChange[];
18
+ totalAdditions: number;
19
+ totalDeletions: number;
20
+ isGitRepository: boolean;
21
+ workingDirectory: string;
22
+ }
23
+ export declare class GitRepositoryAnalyzer {
24
+ private git;
25
+ private cwd;
26
+ constructor(workingDirectory?: string);
27
+ /**
28
+ * Analyze the current git repository state and return data compatible with PRInfo interface
29
+ */
30
+ analyzeRepository(): Promise<GitRepositoryInfo>;
31
+ /**
32
+ * Convert GitRepositoryInfo to PRInfo format for compatibility with existing PRReviewer
33
+ */
34
+ toPRInfo(repositoryInfo: GitRepositoryInfo): PRInfo;
35
+ private isGitRepository;
36
+ private getCurrentBranch;
37
+ private getBaseBranch;
38
+ private getRemoteInfo;
39
+ private getUncommittedChanges;
40
+ private analyzeFileChange;
41
+ private generateTitle;
42
+ private generateDescription;
43
+ private createEmptyRepositoryInfo;
44
+ }
45
+ //# sourceMappingURL=git-repository-analyzer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-repository-analyzer.d.ts","sourceRoot":"","sources":["../src/git-repository-analyzer.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAU,MAAM,eAAe,CAAC;AAE/C,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,OAAO,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC;IACrD,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,OAAO,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,qBAAa,qBAAqB;IAChC,OAAO,CAAC,GAAG,CAAY;IACvB,OAAO,CAAC,GAAG,CAAS;gBAER,gBAAgB,GAAE,MAAsB;IAKpD;;OAEG;IACG,iBAAiB,IAAI,OAAO,CAAC,iBAAiB,CAAC;IA0CrD;;OAEG;IACH,QAAQ,CAAC,cAAc,EAAE,iBAAiB,GAAG,MAAM;YAuBrC,eAAe;YASf,gBAAgB;YAShB,aAAa;YAmBb,aAAa;YAYb,qBAAqB;YA6BrB,iBAAiB;IAyD/B,OAAO,CAAC,aAAa;IAcrB,OAAO,CAAC,mBAAmB;IA4B3B,OAAO,CAAC,yBAAyB;CAclC"}