@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.
Files changed (107) hide show
  1. package/dist/action-cli-bridge.d.ts +0 -1
  2. package/dist/action-cli-bridge.d.ts.map +1 -1
  3. package/dist/ai-review-service.d.ts +0 -1
  4. package/dist/ai-review-service.d.ts.map +1 -1
  5. package/dist/check-execution-engine.d.ts +0 -1
  6. package/dist/check-execution-engine.d.ts.map +1 -1
  7. package/dist/cli-main.d.ts +0 -2
  8. package/dist/cli-main.d.ts.map +1 -1
  9. package/dist/cli.d.ts +0 -1
  10. package/dist/cli.d.ts.map +1 -1
  11. package/dist/commands.d.ts +0 -1
  12. package/dist/commands.d.ts.map +1 -1
  13. package/dist/config.d.ts +0 -1
  14. package/dist/config.d.ts.map +1 -1
  15. package/dist/dependency-resolver.d.ts +0 -1
  16. package/dist/dependency-resolver.d.ts.map +1 -1
  17. package/dist/event-mapper.d.ts +0 -1
  18. package/dist/event-mapper.d.ts.map +1 -1
  19. package/dist/failure-condition-evaluator.d.ts +0 -1
  20. package/dist/failure-condition-evaluator.d.ts.map +1 -1
  21. package/dist/git-repository-analyzer.d.ts +0 -1
  22. package/dist/git-repository-analyzer.d.ts.map +1 -1
  23. package/dist/github-check-service.d.ts +0 -1
  24. package/dist/github-check-service.d.ts.map +1 -1
  25. package/dist/github-comments.d.ts +0 -1
  26. package/dist/github-comments.d.ts.map +1 -1
  27. package/dist/index.d.ts +0 -1
  28. package/dist/index.d.ts.map +1 -1
  29. package/dist/index.js +127709 -805
  30. package/dist/output-formatters.d.ts +0 -1
  31. package/dist/output-formatters.d.ts.map +1 -1
  32. package/dist/pr-analyzer.d.ts +0 -1
  33. package/dist/pr-analyzer.d.ts.map +1 -1
  34. package/dist/pr-detector.d.ts +0 -1
  35. package/dist/pr-detector.d.ts.map +1 -1
  36. package/dist/providers/ai-check-provider.d.ts.map +1 -1
  37. package/dist/providers/check-provider-registry.d.ts.map +1 -1
  38. package/dist/providers/check-provider.interface.d.ts.map +1 -1
  39. package/dist/providers/index.d.ts.map +1 -1
  40. package/dist/providers/noop-check-provider.d.ts.map +1 -1
  41. package/dist/providers/tool-check-provider.d.ts.map +1 -1
  42. package/dist/providers/webhook-check-provider.d.ts.map +1 -1
  43. package/dist/reviewer.d.ts +0 -1
  44. package/dist/reviewer.d.ts.map +1 -1
  45. package/dist/session-registry.d.ts +0 -1
  46. package/dist/session-registry.d.ts.map +1 -1
  47. package/dist/types/cli.d.ts.map +1 -1
  48. package/dist/types/config.d.ts.map +1 -1
  49. package/dist/utils/env-resolver.d.ts.map +1 -1
  50. package/package.json +3 -3
  51. package/dist/action-cli-bridge.js +0 -387
  52. package/dist/action-cli-bridge.js.map +0 -1
  53. package/dist/ai-review-service.js +0 -854
  54. package/dist/ai-review-service.js.map +0 -1
  55. package/dist/check-execution-engine.js +0 -1720
  56. package/dist/check-execution-engine.js.map +0 -1
  57. package/dist/cli-main.js +0 -249
  58. package/dist/cli-main.js.map +0 -1
  59. package/dist/cli.js +0 -241
  60. package/dist/cli.js.map +0 -1
  61. package/dist/commands.js +0 -53
  62. package/dist/commands.js.map +0 -1
  63. package/dist/config.js +0 -437
  64. package/dist/config.js.map +0 -1
  65. package/dist/dependency-resolver.js +0 -163
  66. package/dist/dependency-resolver.js.map +0 -1
  67. package/dist/event-mapper.js +0 -316
  68. package/dist/event-mapper.js.map +0 -1
  69. package/dist/failure-condition-evaluator.js +0 -481
  70. package/dist/failure-condition-evaluator.js.map +0 -1
  71. package/dist/git-repository-analyzer.js +0 -285
  72. package/dist/git-repository-analyzer.js.map +0 -1
  73. package/dist/github-check-service.js +0 -369
  74. package/dist/github-check-service.js.map +0 -1
  75. package/dist/github-comments.js +0 -289
  76. package/dist/github-comments.js.map +0 -1
  77. package/dist/index.js.map +0 -1
  78. package/dist/output-formatters.js +0 -624
  79. package/dist/output-formatters.js.map +0 -1
  80. package/dist/pr-analyzer.js +0 -195
  81. package/dist/pr-analyzer.js.map +0 -1
  82. package/dist/pr-detector.js +0 -357
  83. package/dist/pr-detector.js.map +0 -1
  84. package/dist/providers/ai-check-provider.js +0 -437
  85. package/dist/providers/ai-check-provider.js.map +0 -1
  86. package/dist/providers/check-provider-registry.js +0 -138
  87. package/dist/providers/check-provider-registry.js.map +0 -1
  88. package/dist/providers/check-provider.interface.js +0 -11
  89. package/dist/providers/check-provider.interface.js.map +0 -1
  90. package/dist/providers/index.js +0 -19
  91. package/dist/providers/index.js.map +0 -1
  92. package/dist/providers/noop-check-provider.js +0 -55
  93. package/dist/providers/noop-check-provider.js.map +0 -1
  94. package/dist/providers/tool-check-provider.js +0 -174
  95. package/dist/providers/tool-check-provider.js.map +0 -1
  96. package/dist/providers/webhook-check-provider.js +0 -173
  97. package/dist/providers/webhook-check-provider.js.map +0 -1
  98. package/dist/reviewer.js +0 -260
  99. package/dist/reviewer.js.map +0 -1
  100. package/dist/session-registry.js +0 -67
  101. package/dist/session-registry.js.map +0 -1
  102. package/dist/types/cli.js +0 -3
  103. package/dist/types/cli.js.map +0 -1
  104. package/dist/types/config.js +0 -6
  105. package/dist/types/config.js.map +0 -1
  106. package/dist/utils/env-resolver.js +0 -130
  107. package/dist/utils/env-resolver.js.map +0 -1
package/dist/reviewer.js DELETED
@@ -1,260 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.PRReviewer = void 0;
37
- exports.convertReviewSummaryToGroupedResults = convertReviewSummaryToGroupedResults;
38
- exports.calculateTotalIssues = calculateTotalIssues;
39
- exports.calculateCriticalIssues = calculateCriticalIssues;
40
- exports.convertIssuesToComments = convertIssuesToComments;
41
- const github_comments_1 = require("./github-comments");
42
- const ai_review_service_1 = require("./ai-review-service");
43
- // Test utility function - Convert old ReviewSummary to new GroupedCheckResults format
44
- // This is for backward compatibility with tests only
45
- function convertReviewSummaryToGroupedResults(reviewSummary, checkName = 'test-check', groupName = 'default') {
46
- // Create a simple content string from issues and suggestions
47
- let content = '';
48
- if (reviewSummary.issues && reviewSummary.issues.length > 0) {
49
- content += `## Issues Found (${reviewSummary.issues.length})\n\n`;
50
- reviewSummary.issues.forEach(issue => {
51
- content += `- **${issue.severity.toUpperCase()}**: ${issue.message} (${issue.file}:${issue.line})\n`;
52
- });
53
- content += '\n';
54
- }
55
- if (reviewSummary.suggestions && reviewSummary.suggestions.length > 0) {
56
- content += `## Suggestions\n\n`;
57
- reviewSummary.suggestions.forEach(suggestion => {
58
- content += `- ${suggestion}\n`;
59
- });
60
- }
61
- if (!content) {
62
- content = 'No issues found.';
63
- }
64
- const checkResult = {
65
- checkName,
66
- content: content.trim(),
67
- group: groupName,
68
- debug: reviewSummary.debug,
69
- issues: reviewSummary.issues, // Include structured issues
70
- };
71
- const groupedResults = {};
72
- groupedResults[groupName] = [checkResult];
73
- return groupedResults;
74
- }
75
- // Helper functions for GitHub checks - ONLY for structured schemas that have issues
76
- // These are the ONLY acceptable hardcoded schema dependencies, and only for GitHub integration
77
- function calculateTotalIssues(issues) {
78
- return (issues || []).length;
79
- }
80
- function calculateCriticalIssues(issues) {
81
- return (issues || []).filter(i => i.severity === 'critical').length;
82
- }
83
- // Legacy converter - ONLY for GitHub integration compatibility
84
- function convertIssuesToComments(issues) {
85
- return issues.map(issue => ({
86
- file: issue.file,
87
- line: issue.line,
88
- message: issue.message,
89
- severity: issue.severity,
90
- category: issue.category,
91
- suggestion: issue.suggestion,
92
- replacement: issue.replacement,
93
- ruleId: issue.ruleId,
94
- }));
95
- }
96
- class PRReviewer {
97
- octokit;
98
- commentManager;
99
- aiReviewService;
100
- constructor(octokit) {
101
- this.octokit = octokit;
102
- this.commentManager = new github_comments_1.CommentManager(octokit);
103
- this.aiReviewService = new ai_review_service_1.AIReviewService();
104
- }
105
- async reviewPR(owner, repo, prNumber, prInfo, options = {}) {
106
- const { debug = false, config, checks } = options;
107
- if (config && checks && checks.length > 0) {
108
- const { CheckExecutionEngine } = await Promise.resolve().then(() => __importStar(require('./check-execution-engine')));
109
- const engine = new CheckExecutionEngine();
110
- const groupedResults = await engine.executeGroupedChecks(prInfo, checks, undefined, config, undefined, debug);
111
- return groupedResults;
112
- }
113
- throw new Error('No configuration provided. Please create a .visor.yaml file with check definitions. ' +
114
- 'Built-in prompts have been removed - all checks must be explicitly configured.');
115
- }
116
- async postReviewComment(owner, repo, prNumber, groupedResults, options = {}) {
117
- // Post separate comments for each group
118
- for (const [groupName, checkResults] of Object.entries(groupedResults)) {
119
- const comment = await this.formatGroupComment(checkResults, options, {
120
- owner,
121
- repo,
122
- prNumber,
123
- commitSha: options.commitSha,
124
- });
125
- const commentId = options.commentId
126
- ? `${options.commentId}-${groupName}`
127
- : `visor-review-${groupName}`;
128
- await this.commentManager.updateOrCreateComment(owner, repo, prNumber, comment, {
129
- commentId,
130
- triggeredBy: options.triggeredBy || 'unknown',
131
- allowConcurrentUpdates: false,
132
- commitSha: options.commitSha,
133
- });
134
- }
135
- }
136
- async formatGroupComment(checkResults, _options, _githubContext) {
137
- let comment = '';
138
- comment += `## 🔍 Code Analysis Results\n\n`;
139
- // Simple concatenation of all check outputs in this group
140
- const checkContents = checkResults
141
- .map(result => result.content)
142
- .filter(content => content.trim());
143
- comment += checkContents.join('\n\n');
144
- // Add debug info if any check has it
145
- const debugInfo = checkResults.find(result => result.debug)?.debug;
146
- if (debugInfo) {
147
- comment += '\n\n' + this.formatDebugSection(debugInfo);
148
- comment += '\n\n';
149
- }
150
- comment += `\n---\n*Powered by [Visor](https://probelabs.com/visor) from [Probelabs](https://probelabs.com)*`;
151
- return comment;
152
- }
153
- formatDebugSection(debug) {
154
- const formattedContent = [
155
- `**Provider:** ${debug.provider}`,
156
- `**Model:** ${debug.model}`,
157
- `**API Key Source:** ${debug.apiKeySource}`,
158
- `**Processing Time:** ${debug.processingTime}ms`,
159
- `**Timestamp:** ${debug.timestamp}`,
160
- `**Prompt Length:** ${debug.promptLength} characters`,
161
- `**Response Length:** ${debug.responseLength} characters`,
162
- `**JSON Parse Success:** ${debug.jsonParseSuccess ? '✅' : '❌'}`,
163
- ];
164
- if (debug.errors && debug.errors.length > 0) {
165
- formattedContent.push('', '### Errors');
166
- debug.errors.forEach(error => {
167
- formattedContent.push(`- ${error}`);
168
- });
169
- }
170
- const fullDebugContent = [
171
- ...formattedContent,
172
- '',
173
- '### AI Prompt',
174
- '```',
175
- debug.prompt,
176
- '```',
177
- '',
178
- '### Raw AI Response',
179
- '```json',
180
- debug.rawResponse,
181
- '```',
182
- ].join('\n');
183
- if (fullDebugContent.length > 60000) {
184
- const artifactPath = this.saveDebugArtifact(debug);
185
- formattedContent.push('');
186
- formattedContent.push('### Debug Details');
187
- formattedContent.push('⚠️ Debug information is too large for GitHub comments.');
188
- if (artifactPath) {
189
- formattedContent.push(`📁 **Full debug information saved to artifact:** \`${artifactPath}\``);
190
- formattedContent.push('');
191
- const runId = process.env.GITHUB_RUN_ID;
192
- const repoUrl = process.env.GITHUB_SERVER_URL && process.env.GITHUB_REPOSITORY
193
- ? `${process.env.GITHUB_SERVER_URL}/${process.env.GITHUB_REPOSITORY}`
194
- : null;
195
- if (runId && repoUrl) {
196
- formattedContent.push(`🔗 **Download Link:** [visor-debug-${process.env.GITHUB_RUN_NUMBER || runId}](${repoUrl}/actions/runs/${runId})`);
197
- }
198
- formattedContent.push('💡 Go to the GitHub Action run above and download the debug artifact to view complete prompts and responses.');
199
- }
200
- else {
201
- formattedContent.push('📝 **Prompt preview:** ' + debug.prompt.substring(0, 500) + '...');
202
- formattedContent.push('📝 **Response preview:** ' + debug.rawResponse.substring(0, 500) + '...');
203
- }
204
- }
205
- else {
206
- formattedContent.push('');
207
- formattedContent.push('### AI Prompt');
208
- formattedContent.push('```');
209
- formattedContent.push(debug.prompt);
210
- formattedContent.push('```');
211
- formattedContent.push('');
212
- formattedContent.push('### Raw AI Response');
213
- formattedContent.push('```json');
214
- formattedContent.push(debug.rawResponse);
215
- formattedContent.push('```');
216
- }
217
- return this.commentManager.createCollapsibleSection('🐛 Debug Information', formattedContent.join('\n'), false);
218
- }
219
- saveDebugArtifact(debug) {
220
- try {
221
- const fs = require('fs');
222
- const path = require('path');
223
- const debugDir = path.join(process.cwd(), 'debug-artifacts');
224
- if (!fs.existsSync(debugDir)) {
225
- fs.mkdirSync(debugDir, { recursive: true });
226
- }
227
- const timestamp = new Date().toISOString().replace(/[:.]/g, '-');
228
- const filename = `visor-debug-${timestamp}.md`;
229
- const filepath = path.join(debugDir, filename);
230
- const content = [
231
- `# Visor Debug Information`,
232
- ``,
233
- `**Timestamp:** ${debug.timestamp}`,
234
- `**Provider:** ${debug.provider}`,
235
- `**Model:** ${debug.model}`,
236
- `**Processing Time:** ${debug.processingTime}ms`,
237
- ``,
238
- `## AI Prompt`,
239
- ``,
240
- '```',
241
- debug.prompt,
242
- '```',
243
- ``,
244
- `## Raw AI Response`,
245
- ``,
246
- '```json',
247
- debug.rawResponse,
248
- '```',
249
- ].join('\n');
250
- fs.writeFileSync(filepath, content, 'utf8');
251
- return filename;
252
- }
253
- catch (error) {
254
- console.error('Failed to save debug artifact:', error);
255
- return null;
256
- }
257
- }
258
- }
259
- exports.PRReviewer = PRReviewer;
260
- //# sourceMappingURL=reviewer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"reviewer.js","sourceRoot":"","sources":["../src/reviewer.ts"],"names":[],"mappings":"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"}
@@ -1,67 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SessionRegistry = void 0;
4
- /**
5
- * Registry to manage active ProbeAgent sessions for session reuse
6
- */
7
- class SessionRegistry {
8
- static instance;
9
- sessions = new Map();
10
- constructor() { }
11
- /**
12
- * Get the singleton instance of SessionRegistry
13
- */
14
- static getInstance() {
15
- if (!SessionRegistry.instance) {
16
- SessionRegistry.instance = new SessionRegistry();
17
- }
18
- return SessionRegistry.instance;
19
- }
20
- /**
21
- * Register a ProbeAgent session
22
- */
23
- registerSession(sessionId, agent) {
24
- console.error(`🔄 Registering AI session: ${sessionId}`);
25
- this.sessions.set(sessionId, agent);
26
- }
27
- /**
28
- * Get an existing ProbeAgent session
29
- */
30
- getSession(sessionId) {
31
- const agent = this.sessions.get(sessionId);
32
- if (agent) {
33
- console.error(`♻️ Reusing AI session: ${sessionId}`);
34
- }
35
- return agent;
36
- }
37
- /**
38
- * Remove a session from the registry
39
- */
40
- unregisterSession(sessionId) {
41
- if (this.sessions.has(sessionId)) {
42
- console.error(`🗑️ Unregistering AI session: ${sessionId}`);
43
- this.sessions.delete(sessionId);
44
- }
45
- }
46
- /**
47
- * Clear all sessions (useful for cleanup)
48
- */
49
- clearAllSessions() {
50
- console.error(`🧹 Clearing all AI sessions (${this.sessions.size} sessions)`);
51
- this.sessions.clear();
52
- }
53
- /**
54
- * Get all active session IDs
55
- */
56
- getActiveSessionIds() {
57
- return Array.from(this.sessions.keys());
58
- }
59
- /**
60
- * Check if a session exists
61
- */
62
- hasSession(sessionId) {
63
- return this.sessions.has(sessionId);
64
- }
65
- }
66
- exports.SessionRegistry = SessionRegistry;
67
- //# sourceMappingURL=session-registry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"session-registry.js","sourceRoot":"","sources":["../src/session-registry.ts"],"names":[],"mappings":";;;AAEA;;GAEG;AACH,MAAa,eAAe;IAClB,MAAM,CAAC,QAAQ,CAAkB;IACjC,QAAQ,GAA4B,IAAI,GAAG,EAAE,CAAC;IAEtD,gBAAuB,CAAC;IAExB;;OAEG;IACI,MAAM,CAAC,WAAW;QACvB,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC;YAC9B,eAAe,CAAC,QAAQ,GAAG,IAAI,eAAe,EAAE,CAAC;QACnD,CAAC;QACD,OAAO,eAAe,CAAC,QAAQ,CAAC;IAClC,CAAC;IAED;;OAEG;IACI,eAAe,CAAC,SAAiB,EAAE,KAAiB;QACzD,OAAO,CAAC,KAAK,CAAC,8BAA8B,SAAS,EAAE,CAAC,CAAC;QACzD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IACtC,CAAC;IAED;;OAEG;IACI,UAAU,CAAC,SAAiB;QACjC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC3C,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,CAAC,KAAK,CAAC,2BAA2B,SAAS,EAAE,CAAC,CAAC;QACxD,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACI,iBAAiB,CAAC,SAAiB;QACxC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YACjC,OAAO,CAAC,KAAK,CAAC,kCAAkC,SAAS,EAAE,CAAC,CAAC;YAC7D,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IAED;;OAEG;IACI,gBAAgB;QACrB,OAAO,CAAC,KAAK,CAAC,gCAAgC,IAAI,CAAC,QAAQ,CAAC,IAAI,YAAY,CAAC,CAAC;QAC9E,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;IAED;;OAEG;IACI,mBAAmB;QACxB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED;;OAEG;IACI,UAAU,CAAC,SAAiB;QACjC,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACtC,CAAC;CACF;AAlED,0CAkEC"}
package/dist/types/cli.js DELETED
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=cli.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/types/cli.ts"],"names":[],"mappings":""}
@@ -1,6 +0,0 @@
1
- "use strict";
2
- /**
3
- * Types for Visor configuration system
4
- */
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- //# sourceMappingURL=config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/types/config.ts"],"names":[],"mappings":";AAAA;;GAEG"}
@@ -1,130 +0,0 @@
1
- "use strict";
2
- /**
3
- * Environment variable resolution utilities
4
- * Supports GitHub Actions-like syntax for referencing environment variables
5
- */
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.EnvironmentResolver = void 0;
8
- /**
9
- * Resolves environment variables in configuration values
10
- * Supports the following syntaxes:
11
- * - ${{ env.VARIABLE_NAME }} (GitHub Actions style)
12
- * - ${VARIABLE_NAME} (shell style)
13
- * - $VARIABLE_NAME (simple shell style)
14
- * - Direct environment variable names
15
- */
16
- class EnvironmentResolver {
17
- /**
18
- * Resolves a single configuration value that may contain environment variable references
19
- */
20
- static resolveValue(value) {
21
- if (typeof value !== 'string') {
22
- return value;
23
- }
24
- // GitHub Actions style: ${{ env.VARIABLE_NAME }}
25
- let resolved = value.replace(/\$\{\{\s*env\.([A-Z_][A-Z0-9_]*)\s*\}\}/g, (match, envVar) => {
26
- return process.env[envVar] || match;
27
- });
28
- // Shell style: ${VARIABLE_NAME}
29
- resolved = resolved.replace(/\$\{([A-Z_][A-Z0-9_]*)\}/g, (match, envVar) => {
30
- return process.env[envVar] || match;
31
- });
32
- // Simple shell style: $VARIABLE_NAME
33
- resolved = resolved.replace(/\$([A-Z_][A-Z0-9_]*)/g, (match, envVar) => {
34
- return process.env[envVar] || match;
35
- });
36
- return resolved;
37
- }
38
- /**
39
- * Resolves all environment variables in an EnvConfig object
40
- */
41
- static resolveEnvConfig(envConfig) {
42
- const resolved = {};
43
- for (const [key, value] of Object.entries(envConfig)) {
44
- resolved[key] = this.resolveValue(value);
45
- }
46
- return resolved;
47
- }
48
- /**
49
- * Applies environment configuration to the process environment
50
- * This allows checks to access their specific environment variables
51
- */
52
- static applyEnvConfig(envConfig) {
53
- const resolved = this.resolveEnvConfig(envConfig);
54
- for (const [key, value] of Object.entries(resolved)) {
55
- if (value !== undefined) {
56
- process.env[key] = String(value);
57
- }
58
- }
59
- }
60
- /**
61
- * Creates a temporary environment for a specific check execution
62
- * Returns a cleanup function to restore the original environment
63
- */
64
- static withTemporaryEnv(envConfig, callback) {
65
- const resolved = this.resolveEnvConfig(envConfig);
66
- const originalValues = {};
67
- // Store original values and apply new ones
68
- for (const [key, value] of Object.entries(resolved)) {
69
- originalValues[key] = process.env[key];
70
- if (value !== undefined) {
71
- process.env[key] = String(value);
72
- }
73
- }
74
- try {
75
- const result = callback();
76
- // If callback returns a promise, handle cleanup after it resolves
77
- if (result instanceof Promise) {
78
- return result.finally(() => {
79
- // Restore original values
80
- for (const [key, originalValue] of Object.entries(originalValues)) {
81
- if (originalValue === undefined) {
82
- delete process.env[key];
83
- }
84
- else {
85
- process.env[key] = originalValue;
86
- }
87
- }
88
- });
89
- }
90
- // Restore original values immediately for sync callbacks
91
- for (const [key, originalValue] of Object.entries(originalValues)) {
92
- if (originalValue === undefined) {
93
- delete process.env[key];
94
- }
95
- else {
96
- process.env[key] = originalValue;
97
- }
98
- }
99
- return result;
100
- }
101
- catch (error) {
102
- // Restore original values on error
103
- for (const [key, originalValue] of Object.entries(originalValues)) {
104
- if (originalValue === undefined) {
105
- delete process.env[key];
106
- }
107
- else {
108
- process.env[key] = originalValue;
109
- }
110
- }
111
- throw error;
112
- }
113
- }
114
- /**
115
- * Validates that all required environment variables are available
116
- */
117
- static validateRequiredEnvVars(envConfig, requiredVars) {
118
- const resolved = this.resolveEnvConfig(envConfig);
119
- const missing = [];
120
- for (const varName of requiredVars) {
121
- const value = resolved[varName] || process.env[varName];
122
- if (!value) {
123
- missing.push(varName);
124
- }
125
- }
126
- return missing;
127
- }
128
- }
129
- exports.EnvironmentResolver = EnvironmentResolver;
130
- //# sourceMappingURL=env-resolver.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"env-resolver.js","sourceRoot":"","sources":["../../src/utils/env-resolver.ts"],"names":[],"mappings":"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"}