@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
@@ -1,55 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.NoopCheckProvider = void 0;
4
- const check_provider_interface_1 = require("./check-provider.interface");
5
- /**
6
- * No-operation check provider that doesn't perform any analysis.
7
- *
8
- * This provider is designed for command orchestration - it allows creating
9
- * checks that exist purely to trigger other checks through dependencies.
10
- *
11
- * Example use case: A "/review" command that triggers multiple analysis checks
12
- * without performing any analysis itself.
13
- */
14
- class NoopCheckProvider extends check_provider_interface_1.CheckProvider {
15
- getName() {
16
- return 'noop';
17
- }
18
- getDescription() {
19
- return 'No-operation provider for command orchestration and dependency triggering';
20
- }
21
- async validateConfig(config) {
22
- if (!config || typeof config !== 'object') {
23
- return false;
24
- }
25
- const cfg = config;
26
- // Type must be 'noop'
27
- if (cfg.type !== 'noop') {
28
- return false;
29
- }
30
- return true;
31
- }
32
- async execute(_prInfo, _config, _dependencyResults, _sessionInfo) {
33
- // Noop provider doesn't perform any analysis
34
- // It exists purely for command orchestration and dependency triggering
35
- return {
36
- issues: [],
37
- suggestions: [],
38
- };
39
- }
40
- getSupportedConfigKeys() {
41
- return ['type', 'command', 'depends_on', 'on', 'if', 'group'];
42
- }
43
- async isAvailable() {
44
- // Noop provider is always available
45
- return true;
46
- }
47
- getRequirements() {
48
- return [
49
- 'No external dependencies required',
50
- 'Used for command orchestration and dependency triggering',
51
- ];
52
- }
53
- }
54
- exports.NoopCheckProvider = NoopCheckProvider;
55
- //# sourceMappingURL=noop-check-provider.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"noop-check-provider.js","sourceRoot":"","sources":["../../src/providers/noop-check-provider.ts"],"names":[],"mappings":";;;AAAA,yEAAgF;AAIhF;;;;;;;;GAQG;AACH,MAAa,iBAAkB,SAAQ,wCAAa;IAClD,OAAO;QACL,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,cAAc;QACZ,OAAO,2EAA2E,CAAC;IACrF,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,MAAe;QAClC,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC1C,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,GAAG,GAAG,MAA6B,CAAC;QAE1C,sBAAsB;QACtB,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACxB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,OAAO,CACX,OAAe,EACf,OAA4B,EAC5B,kBAA+C,EAC/C,YAAmE;QAEnE,6CAA6C;QAC7C,uEAAuE;QACvE,OAAO;YACL,MAAM,EAAE,EAAE;YACV,WAAW,EAAE,EAAE;SAChB,CAAC;IACJ,CAAC;IAED,sBAAsB;QACpB,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAChE,CAAC;IAED,KAAK,CAAC,WAAW;QACf,oCAAoC;QACpC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,eAAe;QACb,OAAO;YACL,mCAAmC;YACnC,0DAA0D;SAC3D,CAAC;IACJ,CAAC;CACF;AArDD,8CAqDC"}
@@ -1,174 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ToolCheckProvider = void 0;
4
- const check_provider_interface_1 = require("./check-provider.interface");
5
- const child_process_1 = require("child_process");
6
- const liquidjs_1 = require("liquidjs");
7
- /**
8
- * Check provider that executes external tools and commands with Liquid template support
9
- * Supports both simple commands and complex templated execution with stdin
10
- */
11
- class ToolCheckProvider extends check_provider_interface_1.CheckProvider {
12
- liquid;
13
- constructor() {
14
- super();
15
- this.liquid = new liquidjs_1.Liquid({
16
- strictVariables: false,
17
- strictFilters: false,
18
- });
19
- }
20
- getName() {
21
- return 'tool';
22
- }
23
- getDescription() {
24
- return 'Execute external code analysis tools (ESLint, Prettier, etc.)';
25
- }
26
- async validateConfig(config) {
27
- if (!config || typeof config !== 'object') {
28
- return false;
29
- }
30
- const cfg = config;
31
- // Type must be 'tool'
32
- if (cfg.type !== 'tool') {
33
- return false;
34
- }
35
- // Must have exec specified for tool execution
36
- if (typeof cfg.exec !== 'string' || !cfg.exec) {
37
- return false;
38
- }
39
- return true;
40
- }
41
- async execute(prInfo, config, _dependencyResults, _sessionInfo) {
42
- const execTemplate = config.exec;
43
- const stdinTemplate = config.stdin;
44
- // Prepare template context
45
- const templateContext = {
46
- pr: {
47
- number: prInfo.number,
48
- title: prInfo.title,
49
- body: prInfo.body,
50
- author: prInfo.author,
51
- base: prInfo.base,
52
- head: prInfo.head,
53
- totalAdditions: prInfo.totalAdditions,
54
- totalDeletions: prInfo.totalDeletions,
55
- },
56
- files: prInfo.files.map(f => ({
57
- filename: f.filename,
58
- status: f.status,
59
- additions: f.additions,
60
- deletions: f.deletions,
61
- changes: f.changes,
62
- patch: f.patch,
63
- })),
64
- // Add convenience arrays for common use cases
65
- filenames: prInfo.files.map(f => f.filename),
66
- config: config, // Allow access to config values in templates
67
- };
68
- // Render the command template
69
- const renderedCommand = await this.liquid.parseAndRender(execTemplate, templateContext);
70
- // Render stdin if provided
71
- let renderedStdin;
72
- if (stdinTemplate) {
73
- renderedStdin = await this.liquid.parseAndRender(stdinTemplate, templateContext);
74
- }
75
- // Execute the tool
76
- const output = await this.executeCommand(renderedCommand.trim(), renderedStdin);
77
- // Parse tool output (this would be customized per tool)
78
- const comments = this.parseToolOutput(output, renderedCommand);
79
- const issues = comments.map(comment => ({
80
- file: comment.file,
81
- line: comment.line,
82
- endLine: undefined,
83
- ruleId: `tool/${comment.category}`,
84
- message: comment.message,
85
- severity: comment.severity,
86
- category: comment.category,
87
- suggestion: undefined,
88
- replacement: undefined,
89
- }));
90
- return {
91
- issues,
92
- suggestions: this.generateSuggestions(comments, renderedCommand),
93
- };
94
- }
95
- async executeCommand(command, stdin) {
96
- return new Promise((resolve, reject) => {
97
- // Parse command and arguments (handle quoted arguments)
98
- const parts = command.match(/(?:[^\s"]+|"[^"]*")+/g) || [command];
99
- const cmd = parts[0];
100
- const args = parts.slice(1).map(arg => arg.replace(/^"(.*)"$/, '$1'));
101
- const child = (0, child_process_1.spawn)(cmd, args, {
102
- shell: false,
103
- stdio: ['pipe', 'pipe', 'pipe'],
104
- });
105
- let output = '';
106
- let error = '';
107
- child.stdout.on('data', data => {
108
- output += data.toString();
109
- });
110
- child.stderr.on('data', data => {
111
- error += data.toString();
112
- });
113
- // Send stdin data if provided
114
- if (stdin) {
115
- child.stdin.write(stdin);
116
- child.stdin.end();
117
- }
118
- child.on('close', _code => {
119
- // Many tools return non-zero on issues found
120
- resolve(output || error);
121
- });
122
- child.on('error', err => {
123
- reject(new Error(`Failed to execute ${cmd}: ${err.message}`));
124
- });
125
- });
126
- }
127
- parseToolOutput(output, _command) {
128
- const comments = [];
129
- // This is a simplified parser - real implementation would handle specific tool formats
130
- const lines = output.split('\n');
131
- for (const line of lines) {
132
- // Example: file.js:10:5: error: Missing semicolon
133
- const match = line.match(/^(.+?):(\d+):(\d+):\s*(critical|error|warning|info):\s*(.+)$/);
134
- if (match) {
135
- comments.push({
136
- file: match[1],
137
- line: parseInt(match[2]),
138
- message: match[5],
139
- severity: match[4],
140
- category: 'style',
141
- });
142
- }
143
- }
144
- return comments;
145
- }
146
- generateSuggestions(comments, command) {
147
- const suggestions = [];
148
- if (comments.length > 0) {
149
- suggestions.push(`Fix ${comments.length} issues found by ${command}`);
150
- const errorCount = comments.filter(c => c.severity === 'error').length;
151
- if (errorCount > 0) {
152
- suggestions.push(`Priority: Fix ${errorCount} errors before merging`);
153
- }
154
- }
155
- return suggestions;
156
- }
157
- getSupportedConfigKeys() {
158
- return ['type', 'exec', 'command', 'stdin', 'timeout', 'workingDirectory'];
159
- }
160
- async isAvailable() {
161
- // Check if common tools are available
162
- // In a real implementation, this would check for specific tools based on config
163
- return true;
164
- }
165
- getRequirements() {
166
- return [
167
- 'External tool must be installed (e.g., eslint, prettier)',
168
- 'Tool must be accessible in PATH',
169
- 'Appropriate configuration files for the tool',
170
- ];
171
- }
172
- }
173
- exports.ToolCheckProvider = ToolCheckProvider;
174
- //# sourceMappingURL=tool-check-provider.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tool-check-provider.js","sourceRoot":"","sources":["../../src/providers/tool-check-provider.ts"],"names":[],"mappings":"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"}
@@ -1,173 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.WebhookCheckProvider = void 0;
4
- const check_provider_interface_1 = require("./check-provider.interface");
5
- /**
6
- * Check provider that sends PR info to a webhook for external analysis
7
- */
8
- class WebhookCheckProvider extends check_provider_interface_1.CheckProvider {
9
- getName() {
10
- return 'webhook';
11
- }
12
- getDescription() {
13
- return 'Send PR data to external webhook for custom analysis';
14
- }
15
- async validateConfig(config) {
16
- if (!config || typeof config !== 'object') {
17
- return false;
18
- }
19
- const cfg = config;
20
- // Type must be 'webhook'
21
- if (cfg.type !== 'webhook') {
22
- return false;
23
- }
24
- // Must have URL specified
25
- if (typeof cfg.url !== 'string' || !cfg.url) {
26
- return false;
27
- }
28
- // Validate URL format
29
- try {
30
- new URL(cfg.url);
31
- return true;
32
- }
33
- catch {
34
- return false;
35
- }
36
- }
37
- async execute(prInfo, config, _dependencyResults, _sessionInfo) {
38
- const url = config.url;
39
- const method = config.method || 'POST';
40
- const headers = config.headers || {};
41
- const timeout = config.timeout || 30000;
42
- // Prepare webhook payload
43
- const payload = {
44
- title: prInfo.title,
45
- body: prInfo.body,
46
- author: prInfo.author,
47
- base: prInfo.base,
48
- head: prInfo.head,
49
- files: prInfo.files.map(f => ({
50
- filename: f.filename,
51
- status: f.status,
52
- additions: f.additions,
53
- deletions: f.deletions,
54
- changes: f.changes,
55
- patch: f.patch,
56
- })),
57
- totalAdditions: prInfo.totalAdditions,
58
- totalDeletions: prInfo.totalDeletions,
59
- metadata: config.metadata || {},
60
- };
61
- try {
62
- // Send webhook request
63
- const response = await this.sendWebhookRequest(url, method, headers, payload, timeout);
64
- // Parse webhook response
65
- return this.parseWebhookResponse(response, url);
66
- }
67
- catch (error) {
68
- return this.createErrorResult(url, error);
69
- }
70
- }
71
- async sendWebhookRequest(url, method, headers, payload, timeout) {
72
- // Check if fetch is available (Node 18+)
73
- if (typeof fetch === 'undefined') {
74
- throw new Error('Webhook provider requires Node.js 18+ or node-fetch package');
75
- }
76
- const controller = new AbortController();
77
- const timeoutId = setTimeout(() => controller.abort(), timeout);
78
- try {
79
- const response = await fetch(url, {
80
- method,
81
- headers: {
82
- 'Content-Type': 'application/json',
83
- ...headers,
84
- },
85
- body: JSON.stringify(payload),
86
- signal: controller.signal,
87
- });
88
- clearTimeout(timeoutId);
89
- if (!response.ok) {
90
- throw new Error(`Webhook returned ${response.status}: ${response.statusText}`);
91
- }
92
- return (await response.json());
93
- }
94
- catch (error) {
95
- clearTimeout(timeoutId);
96
- if (error?.name === 'AbortError') {
97
- throw new Error(`Webhook request timed out after ${timeout}ms`);
98
- }
99
- throw error;
100
- }
101
- }
102
- parseWebhookResponse(response, url) {
103
- // Validate and normalize the webhook response
104
- if (!response || typeof response !== 'object') {
105
- return this.createErrorResult(url, new Error('Invalid webhook response format'));
106
- }
107
- const issues = Array.isArray(response.comments)
108
- ? response.comments.map(c => ({
109
- file: c.file || 'unknown',
110
- line: c.line || 0,
111
- endLine: c.endLine,
112
- ruleId: c.ruleId || `webhook/${this.validateCategory(c.category)}`,
113
- message: c.message || '',
114
- severity: this.validateSeverity(c.severity),
115
- category: this.validateCategory(c.category),
116
- suggestion: c.suggestion,
117
- replacement: c.replacement,
118
- }))
119
- : [];
120
- return {
121
- issues,
122
- suggestions: Array.isArray(response.suggestions) ? response.suggestions : [],
123
- };
124
- }
125
- createErrorResult(url, error) {
126
- const errorMessage = error instanceof Error ? error.message : 'Unknown error';
127
- return {
128
- issues: [
129
- {
130
- file: 'webhook',
131
- line: 0,
132
- endLine: undefined,
133
- ruleId: 'webhook/error',
134
- message: `Webhook execution error: ${errorMessage}`,
135
- severity: 'error',
136
- category: 'logic',
137
- suggestion: undefined,
138
- replacement: undefined,
139
- },
140
- ],
141
- suggestions: [`Webhook ${url} failed: ${errorMessage}`],
142
- };
143
- }
144
- validateSeverity(severity) {
145
- const valid = ['info', 'warning', 'error', 'critical'];
146
- return valid.includes(severity)
147
- ? severity
148
- : 'info';
149
- }
150
- validateCategory(category) {
151
- const valid = ['security', 'performance', 'style', 'logic', 'documentation'];
152
- return valid.includes(category)
153
- ? category
154
- : 'logic';
155
- }
156
- getSupportedConfigKeys() {
157
- return ['type', 'url', 'method', 'headers', 'timeout', 'metadata', 'retryCount', 'retryDelay'];
158
- }
159
- async isAvailable() {
160
- // Webhook is available if fetch is available
161
- return typeof fetch !== 'undefined';
162
- }
163
- getRequirements() {
164
- return [
165
- 'Valid webhook URL',
166
- 'Network access to webhook endpoint',
167
- 'Webhook must return JSON in ReviewSummary format',
168
- 'Webhook must respond within timeout period',
169
- ];
170
- }
171
- }
172
- exports.WebhookCheckProvider = WebhookCheckProvider;
173
- //# sourceMappingURL=webhook-check-provider.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"webhook-check-provider.js","sourceRoot":"","sources":["../../src/providers/webhook-check-provider.ts"],"names":[],"mappings":"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"}