gitlab-auto-reviewers 2.0.0 → 2.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 (98) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +20 -10
  3. package/dist/bin/cli.js +155 -85
  4. package/dist/bin/cli.js.map +1 -1
  5. package/dist/bin/index.d.ts +1 -8
  6. package/dist/bin/index.d.ts.map +1 -1
  7. package/dist/bin/index.js +26 -9
  8. package/dist/bin/index.js.map +1 -1
  9. package/dist/bin/mcp.js +0 -0
  10. package/dist/cli/cicd-integration.d.ts +127 -0
  11. package/dist/cli/cicd-integration.d.ts.map +1 -0
  12. package/dist/cli/cicd-integration.js +385 -0
  13. package/dist/cli/cicd-integration.js.map +1 -0
  14. package/dist/cli/commands.d.ts +21 -4
  15. package/dist/cli/commands.d.ts.map +1 -1
  16. package/dist/cli/commands.js +417 -71
  17. package/dist/cli/commands.js.map +1 -1
  18. package/dist/cli/config.d.ts +145 -0
  19. package/dist/cli/config.d.ts.map +1 -0
  20. package/dist/cli/config.js +277 -0
  21. package/dist/cli/config.js.map +1 -0
  22. package/dist/cli/consistency-validator.d.ts +175 -0
  23. package/dist/cli/consistency-validator.d.ts.map +1 -0
  24. package/dist/cli/consistency-validator.js +599 -0
  25. package/dist/cli/consistency-validator.js.map +1 -0
  26. package/dist/cli/data-source-consistency.d.ts +105 -0
  27. package/dist/cli/data-source-consistency.d.ts.map +1 -0
  28. package/dist/cli/data-source-consistency.js +271 -0
  29. package/dist/cli/data-source-consistency.js.map +1 -0
  30. package/dist/cli/data-source-selector.d.ts +103 -0
  31. package/dist/cli/data-source-selector.d.ts.map +1 -0
  32. package/dist/cli/data-source-selector.js +242 -0
  33. package/dist/cli/data-source-selector.js.map +1 -0
  34. package/dist/cli/enhanced-cli.d.ts +104 -0
  35. package/dist/cli/enhanced-cli.d.ts.map +1 -0
  36. package/dist/cli/enhanced-cli.js +321 -0
  37. package/dist/cli/enhanced-cli.js.map +1 -0
  38. package/dist/cli/enhanced-data-source-resolver.d.ts +67 -0
  39. package/dist/cli/enhanced-data-source-resolver.d.ts.map +1 -0
  40. package/dist/cli/enhanced-data-source-resolver.js +249 -0
  41. package/dist/cli/enhanced-data-source-resolver.js.map +1 -0
  42. package/dist/cli/enhanced-parameter-resolver.d.ts +111 -0
  43. package/dist/cli/enhanced-parameter-resolver.d.ts.map +1 -0
  44. package/dist/cli/enhanced-parameter-resolver.js +233 -0
  45. package/dist/cli/enhanced-parameter-resolver.js.map +1 -0
  46. package/dist/cli/errors.d.ts +105 -0
  47. package/dist/cli/errors.d.ts.map +1 -0
  48. package/dist/cli/errors.js +577 -0
  49. package/dist/cli/errors.js.map +1 -0
  50. package/dist/cli/output.d.ts +43 -3
  51. package/dist/cli/output.d.ts.map +1 -1
  52. package/dist/cli/output.js +157 -30
  53. package/dist/cli/output.js.map +1 -1
  54. package/dist/cli/parameter-source-tracker.d.ts +169 -0
  55. package/dist/cli/parameter-source-tracker.d.ts.map +1 -0
  56. package/dist/cli/parameter-source-tracker.js +252 -0
  57. package/dist/cli/parameter-source-tracker.js.map +1 -0
  58. package/dist/cli/template-engine.d.ts +109 -0
  59. package/dist/cli/template-engine.d.ts.map +1 -0
  60. package/dist/cli/template-engine.js +220 -0
  61. package/dist/cli/template-engine.js.map +1 -0
  62. package/dist/config/config.service.d.ts +24 -2
  63. package/dist/config/config.service.d.ts.map +1 -1
  64. package/dist/config/config.service.js +39 -6
  65. package/dist/config/config.service.js.map +1 -1
  66. package/dist/datasources/local-git-data-source.d.ts +39 -0
  67. package/dist/datasources/local-git-data-source.d.ts.map +1 -1
  68. package/dist/datasources/local-git-data-source.js +121 -1
  69. package/dist/datasources/local-git-data-source.js.map +1 -1
  70. package/dist/enhanced-config.js +26 -0
  71. package/dist/index.js +0 -0
  72. package/dist/mcp/server.js +2 -2
  73. package/dist/mcp/server.js.map +1 -1
  74. package/dist/services/blacklist.service.d.ts +11 -5
  75. package/dist/services/blacklist.service.d.ts.map +1 -1
  76. package/dist/services/blacklist.service.js +28 -7
  77. package/dist/services/blacklist.service.js.map +1 -1
  78. package/dist/services/reviewer-service.d.ts +24 -0
  79. package/dist/services/reviewer-service.d.ts.map +1 -1
  80. package/dist/services/reviewer-service.js +177 -7
  81. package/dist/services/reviewer-service.js.map +1 -1
  82. package/dist/services/whitelist.service.js +1 -1
  83. package/dist/services/whitelist.service.js.map +1 -1
  84. package/dist/types/enhanced-config.d.ts +121 -0
  85. package/dist/types/enhanced-config.d.ts.map +1 -0
  86. package/dist/types/enhanced-config.js +27 -0
  87. package/dist/types/enhanced-config.js.map +1 -0
  88. package/dist/types.d.ts +28 -0
  89. package/dist/types.d.ts.map +1 -1
  90. package/package.json +11 -11
  91. package/dist/bin/deprecated-mcp.d.ts +0 -12
  92. package/dist/bin/deprecated-mcp.d.ts.map +0 -1
  93. package/dist/bin/deprecated-mcp.js +0 -73
  94. package/dist/bin/deprecated-mcp.js.map +0 -1
  95. package/dist/tools.d.ts +0 -22
  96. package/dist/tools.d.ts.map +0 -1
  97. package/dist/tools.js +0 -176
  98. package/dist/tools.js.map +0 -1
@@ -0,0 +1,233 @@
1
+ /**
2
+ * Enhanced Parameter Resolver
3
+ *
4
+ * This module implements parameter resolution with clear precedence rules:
5
+ * 1. CLI arguments (highest priority)
6
+ * 2. Environment variables (secondary)
7
+ * 3. Auto-detection (when available)
8
+ * 4. Default values (lowest priority)
9
+ *
10
+ * @module cli/enhanced-parameter-resolver
11
+ */
12
+ /**
13
+ * Enhanced parameter resolver with precedence handling
14
+ */
15
+ export class EnhancedParameterResolver {
16
+ logger;
17
+ /**
18
+ * Creates a new EnhancedParameterResolver instance.
19
+ *
20
+ * @param logger - Logger service for debugging and monitoring
21
+ */
22
+ constructor(logger) {
23
+ this.logger = logger;
24
+ }
25
+ /**
26
+ * Resolve parameter using precedence rules
27
+ *
28
+ * @param cliValue - Value from CLI argument
29
+ * @param envVarName - Environment variable name
30
+ * @param autoDetectFn - Optional auto-detection function
31
+ * @returns Resolved parameter value or null
32
+ */
33
+ resolveParameter(cliValue, envVarName, autoDetectFn) {
34
+ // Priority 1: CLI argument
35
+ if (cliValue !== undefined) {
36
+ this.logger.debug('Using CLI argument', {
37
+ parameter: envVarName,
38
+ source: 'cli-argument'
39
+ });
40
+ return cliValue;
41
+ }
42
+ // Priority 2: Environment variable
43
+ const envValue = process.env[envVarName];
44
+ if (envValue) {
45
+ this.logger.debug('Using environment variable', {
46
+ parameter: envVarName,
47
+ source: 'environment-variable',
48
+ envVar: envVarName
49
+ });
50
+ return envValue;
51
+ }
52
+ // Priority 3: Auto-detection
53
+ if (autoDetectFn) {
54
+ const autoDetected = autoDetectFn();
55
+ if (autoDetected !== null) {
56
+ this.logger.debug('Using auto-detected value', {
57
+ parameter: envVarName,
58
+ source: 'auto-detection'
59
+ });
60
+ return autoDetected;
61
+ }
62
+ }
63
+ this.logger.debug('No value found for parameter', {
64
+ parameter: envVarName,
65
+ checkedSources: ['cli-argument', 'environment-variable', autoDetectFn ? 'auto-detection' : null].filter(Boolean)
66
+ });
67
+ return null;
68
+ }
69
+ /**
70
+ * Resolve GitLab authentication token
71
+ *
72
+ * @param cliToken - Token from CLI argument
73
+ * @returns Resolved token or null
74
+ */
75
+ resolveGitLabToken(cliToken) {
76
+ // Priority 1: CLI argument
77
+ if (cliToken) {
78
+ this.logger.debug('Using GitLab token from CLI argument');
79
+ return cliToken;
80
+ }
81
+ // Priority 2: Check standard token environment variables in order
82
+ for (const envVar of ['CI_JOB_TOKEN', 'GITLAB_TOKEN']) {
83
+ const token = process.env[envVar];
84
+ if (token) {
85
+ this.logger.debug('Using GitLab token from environment variable', { envVar });
86
+ return token;
87
+ }
88
+ }
89
+ this.logger.debug('No GitLab token found in CLI arguments or environment variables');
90
+ return null;
91
+ }
92
+ /**
93
+ * Resolve merge request ID
94
+ *
95
+ * @param cliMrId - MR ID from CLI argument
96
+ * @returns Resolved MR ID or null
97
+ */
98
+ resolveMergeRequestId(cliMrId) {
99
+ // Priority 1: CLI argument
100
+ if (cliMrId !== undefined) {
101
+ this.logger.debug('Using CLI argument', {
102
+ parameter: 'CI_MERGE_REQUEST_IID',
103
+ source: 'cli-argument'
104
+ });
105
+ return cliMrId;
106
+ }
107
+ // Priority 2: Environment variable (with parsing)
108
+ const envMrId = process.env.CI_MERGE_REQUEST_IID;
109
+ if (envMrId) {
110
+ this.logger.debug('Using environment variable', {
111
+ parameter: 'CI_MERGE_REQUEST_IID',
112
+ source: 'environment-variable',
113
+ envVar: 'CI_MERGE_REQUEST_IID'
114
+ });
115
+ const parsed = parseInt(envMrId, 10);
116
+ return isNaN(parsed) ? null : parsed;
117
+ }
118
+ this.logger.debug('No value found for parameter', {
119
+ parameter: 'CI_MERGE_REQUEST_IID',
120
+ checkedSources: ['cli-argument', 'environment-variable']
121
+ });
122
+ return null;
123
+ }
124
+ /**
125
+ * Resolve GitLab URL
126
+ *
127
+ * @param cliUrl - URL from CLI argument
128
+ * @returns Resolved GitLab URL or null
129
+ */
130
+ resolveGitLabUrl(cliUrl) {
131
+ return this.resolveParameter(cliUrl, 'CI_SERVER_URL', () => process.env.CI_SERVER_URL || null);
132
+ }
133
+ /**
134
+ * Resolve project identifier
135
+ *
136
+ * @param cliProject - Project from CLI argument
137
+ * @param autoDetectFn - Function to auto-detect project
138
+ * @returns Resolved project or null
139
+ */
140
+ resolveProject(cliProject, autoDetectFn) {
141
+ return this.resolveParameter(cliProject, 'CI_PROJECT_PATH', () => {
142
+ // Try CI_PROJECT_PATH first, then CI_PROJECT_ID, then auto-detection
143
+ const projectPath = process.env.CI_PROJECT_PATH;
144
+ if (projectPath) {
145
+ return projectPath;
146
+ }
147
+ const projectId = process.env.CI_PROJECT_ID;
148
+ if (projectId) {
149
+ return projectId;
150
+ }
151
+ // Use auto-detection function if provided
152
+ return autoDetectFn ? autoDetectFn() : null;
153
+ });
154
+ }
155
+ /**
156
+ * Get parameter source information for debugging
157
+ *
158
+ * @param cliValue - Value from CLI
159
+ * @param envVarName - Environment variable name
160
+ * @param autoDetectFn - Auto-detection function
161
+ * @returns Source information string
162
+ */
163
+ getParameterSource(cliValue, envVarName, autoDetectFn) {
164
+ if (cliValue !== undefined) {
165
+ return 'cli-argument';
166
+ }
167
+ if (process.env[envVarName]) {
168
+ return `environment-variable:${envVarName}`;
169
+ }
170
+ if (autoDetectFn && autoDetectFn() !== null) {
171
+ return 'auto-detection';
172
+ }
173
+ return 'not-found';
174
+ }
175
+ /**
176
+ * Resolve all core parameters and return source information
177
+ *
178
+ * @param cliOptions - CLI options
179
+ * @param autoDetectProject - Function to auto-detect project
180
+ * @returns Resolved parameters with source tracking
181
+ */
182
+ resolveAllParameters(cliOptions, autoDetectProject) {
183
+ const project = this.resolveProject(cliOptions.project, autoDetectProject);
184
+ const mergeRequestId = this.resolveMergeRequestId(cliOptions.mr);
185
+ const gitlabUrl = this.resolveGitLabUrl(cliOptions.gitlabUrl);
186
+ const gitlabToken = this.resolveGitLabToken(cliOptions.gitlabToken);
187
+ return {
188
+ project,
189
+ mergeRequestId,
190
+ gitlabUrl,
191
+ gitlabToken,
192
+ sources: {
193
+ project: this.getParameterSource(cliOptions.project, 'CI_PROJECT_PATH', autoDetectProject),
194
+ mergeRequestId: this.getMergeRequestIdSource(cliOptions.mr),
195
+ gitlabUrl: this.getParameterSource(cliOptions.gitlabUrl, 'CI_SERVER_URL'),
196
+ gitlabToken: this.getGitLabTokenSource(cliOptions.gitlabToken),
197
+ },
198
+ };
199
+ }
200
+ /**
201
+ * Get merge request ID source information
202
+ *
203
+ * @param cliMrId - MR ID from CLI
204
+ * @returns Source information string
205
+ */
206
+ getMergeRequestIdSource(cliMrId) {
207
+ if (cliMrId !== undefined) {
208
+ return 'cli-argument';
209
+ }
210
+ if (process.env.CI_MERGE_REQUEST_IID) {
211
+ return 'environment-variable:CI_MERGE_REQUEST_IID';
212
+ }
213
+ return 'not-found';
214
+ }
215
+ /**
216
+ * Get GitLab token source information
217
+ *
218
+ * @param cliToken - Token from CLI
219
+ * @returns Source information string
220
+ */
221
+ getGitLabTokenSource(cliToken) {
222
+ if (cliToken) {
223
+ return 'cli-argument';
224
+ }
225
+ for (const envVar of ['CI_JOB_TOKEN', 'GITLAB_TOKEN']) {
226
+ if (process.env[envVar]) {
227
+ return `environment-variable:${envVar}`;
228
+ }
229
+ }
230
+ return 'not-found';
231
+ }
232
+ }
233
+ //# sourceMappingURL=enhanced-parameter-resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enhanced-parameter-resolver.js","sourceRoot":"","sources":["../../src/cli/enhanced-parameter-resolver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,105 @@
1
+ /**
2
+ * CLI Error Handling
3
+ *
4
+ * Provides comprehensive error handling and validation for CLI operations.
5
+ * Includes specific error types, validation functions, and user-friendly error messages.
6
+ *
7
+ * @module cli/errors
8
+ */
9
+ import { MCPError } from '../errors/error-handler.js';
10
+ /**
11
+ * CLI-specific error codes
12
+ */
13
+ export declare enum CLIErrorCode {
14
+ SUCCESS = 0,
15
+ VALIDATION_ERROR = 1,
16
+ AUTHENTICATION_ERROR = 2,
17
+ NETWORK_ERROR = 3,
18
+ API_ERROR = 4,
19
+ PERMISSION_ERROR = 5,
20
+ CONFIGURATION_ERROR = 6,
21
+ TEMPLATE_ERROR = 7,
22
+ RATE_LIMITED = 8,
23
+ NOT_FOUND = 9,
24
+ UNKNOWN_ERROR = 99
25
+ }
26
+ /**
27
+ * CLI Error class with specific error codes and user guidance
28
+ */
29
+ export declare class CLIError extends MCPError {
30
+ exitCode: CLIErrorCode;
31
+ userGuidance?: string | undefined;
32
+ /**
33
+ * Creates a new CLI error with specific exit code and user guidance
34
+ *
35
+ * @param message - The error message
36
+ * @param exitCode - CLI exit code for this error
37
+ * @param userGuidance - Optional user guidance for resolving the error
38
+ * @param details - Optional additional error details
39
+ * @param cause - Optional underlying error that caused this error
40
+ */
41
+ constructor(message: string, exitCode: CLIErrorCode, userGuidance?: string | undefined, details?: Record<string, unknown>, cause?: Error);
42
+ /**
43
+ * Get formatted error message with guidance
44
+ */
45
+ getFormattedMessage(): string;
46
+ }
47
+ /**
48
+ * Parameter validation functions
49
+ */
50
+ export declare class ParameterValidator {
51
+ /**
52
+ * Validate repository path
53
+ */
54
+ static validateRepositoryPath(repoPath: string | undefined): string;
55
+ /**
56
+ * Validate merge request IID
57
+ */
58
+ static validateMergeRequestIid(mrIid: number | undefined): number | undefined;
59
+ /**
60
+ * Validate branch name
61
+ */
62
+ static validateBranchName(branch: string | undefined): string | undefined;
63
+ /**
64
+ * Validate GitLab URL
65
+ */
66
+ static validateGitLabUrl(url: string | undefined): string | undefined;
67
+ /**
68
+ * Validate GitLab token
69
+ */
70
+ static validateGitLabToken(token: string | undefined): string | undefined;
71
+ /**
72
+ * Validate output format
73
+ */
74
+ static validateFormat(format: string | undefined): 'json' | 'text' | undefined;
75
+ /**
76
+ * Validate that either MR IID or branch is provided
77
+ */
78
+ static validateMergeRequestIdentifier(mergeRequestIid: number | undefined, branch: string | undefined): void;
79
+ /**
80
+ * Validate conflicting options
81
+ */
82
+ static validateConflictingOptions(verbose: boolean, quiet: boolean): void;
83
+ }
84
+ /**
85
+ * Error detection and classification functions
86
+ */
87
+ export declare class ErrorClassifier {
88
+ /**
89
+ * Classify an error and return appropriate CLI error code
90
+ */
91
+ static classifyError(error: Error): CLIErrorCode;
92
+ /**
93
+ * Get user-friendly error message with guidance
94
+ */
95
+ static getErrorGuidance(_error: Error, errorCode: CLIErrorCode): string;
96
+ /**
97
+ * Extract wait time from rate limit error
98
+ */
99
+ static extractRateLimitWaitTime(error: Error): number | undefined;
100
+ }
101
+ /**
102
+ * Format error for CLI output
103
+ */
104
+ export declare function formatCLIError(error: Error, format?: 'json' | 'text', verbose?: boolean): string;
105
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/cli/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,QAAQ,EAAiB,MAAM,4BAA4B,CAAC;AAErE;;GAEG;AACH,oBAAY,YAAY;IACtB,OAAO,IAAI;IACX,gBAAgB,IAAI;IACpB,oBAAoB,IAAI;IACxB,aAAa,IAAI;IACjB,SAAS,IAAI;IACb,gBAAgB,IAAI;IACpB,mBAAmB,IAAI;IACvB,cAAc,IAAI;IAClB,YAAY,IAAI;IAChB,SAAS,IAAI;IACb,aAAa,KAAK;CACnB;AAED;;GAEG;AACH,qBAAa,QAAS,SAAQ,QAAQ;IAY3B,QAAQ,EAAE,YAAY;IACtB,YAAY,CAAC,EAAE,MAAM;IAZ9B;;;;;;;;OAQG;gBAED,OAAO,EAAE,MAAM,EACR,QAAQ,EAAE,YAAY,EACtB,YAAY,CAAC,EAAE,MAAM,YAAA,EAC5B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,KAAK,CAAC,EAAE,KAAK;IAMf;;OAEG;IACH,mBAAmB,IAAI,MAAM;CAW9B;AAED;;GAEG;AACH,qBAAa,kBAAkB;IAC7B;;OAEG;IACH,MAAM,CAAC,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM;IAyBnE;;OAEG;IACH,MAAM,CAAC,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS;IA0B7E;;OAEG;IACH,MAAM,CAAC,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS;IAmDzE;;OAEG;IACH,MAAM,CAAC,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS;IA+CrE;;OAEG;IACH,MAAM,CAAC,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS;IAkDzE;;OAEG;IACH,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS;IAqB9E;;OAEG;IACH,MAAM,CAAC,8BAA8B,CACnC,eAAe,EAAE,MAAM,GAAG,SAAS,EACnC,MAAM,EAAE,MAAM,GAAG,SAAS,GACzB,IAAI;IAoBP;;OAEG;IACH,MAAM,CAAC,0BAA0B,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;CAU1E;AAED;;GAEG;AACH,qBAAa,eAAe;IAC1B;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,GAAG,YAAY;IAmDhD;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,YAAY,GAAG,MAAM;IAiPvE;;OAEG;IACH,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,GAAG,SAAS;CAwBlE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,KAAK,EACZ,MAAM,GAAE,MAAM,GAAG,MAAe,EAChC,OAAO,GAAE,OAAe,GACvB,MAAM,CAwDR"}