erosolar-cli 2.1.120 → 2.1.123

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.
@@ -1,116 +0,0 @@
1
- /**
2
- * Comprehensive Tool Validation System
3
- *
4
- * Provides proactive validation for AI tool usage with:
5
- * - Pre-flight validation before tool execution
6
- * - Real-time AI flow guidance
7
- * - Pattern-based anti-pattern detection
8
- * - Recovery suggestions for common failures
9
- */
10
- import type { ToolDefinition } from './toolRuntime.js';
11
- /**
12
- * Tool validation result
13
- */
14
- export interface ToolValidationResult {
15
- readonly valid: boolean;
16
- readonly warnings: ToolValidationWarning[];
17
- readonly suggestions: ToolValidationSuggestion[];
18
- readonly criticalErrors: ToolValidationError[];
19
- }
20
- /**
21
- * Tool validation warning
22
- */
23
- export interface ToolValidationWarning {
24
- readonly code: string;
25
- readonly message: string;
26
- readonly severity: 'low' | 'medium' | 'high';
27
- readonly suggestion?: string;
28
- }
29
- /**
30
- * Tool validation error
31
- */
32
- export interface ToolValidationError {
33
- readonly code: string;
34
- readonly message: string;
35
- readonly recovery?: string;
36
- }
37
- /**
38
- * Tool validation suggestion
39
- */
40
- export interface ToolValidationSuggestion {
41
- readonly code: string;
42
- readonly message: string;
43
- readonly action: string;
44
- }
45
- /**
46
- * AI flow guidance patterns
47
- */
48
- export interface AIFlowPattern {
49
- readonly pattern: string;
50
- readonly description: string;
51
- readonly guidance: string;
52
- readonly examples: string[];
53
- }
54
- /**
55
- * Tool usage context
56
- */
57
- export interface ToolUsageContext {
58
- readonly toolName: string;
59
- readonly parameters: Record<string, unknown>;
60
- readonly workspaceContext?: {
61
- readonly currentFiles: string[];
62
- readonly recentOperations: string[];
63
- readonly workspacePath: string;
64
- };
65
- }
66
- /**
67
- * Comprehensive tool validator
68
- */
69
- export declare class ToolValidator {
70
- private readonly patterns;
71
- /**
72
- * Validate tool usage before execution
73
- */
74
- validateToolUsage(tool: ToolDefinition, context: ToolUsageContext): ToolValidationResult;
75
- /**
76
- * Validate tool-specific patterns
77
- */
78
- private validateToolSpecific;
79
- /**
80
- * Validate Edit tool usage
81
- */
82
- private validateEditTool;
83
- /**
84
- * Validate search tools (Glob, Grep)
85
- */
86
- private validateSearchTools;
87
- /**
88
- * Validate bash commands
89
- */
90
- private validateBashCommands;
91
- /**
92
- * Validate AI flow patterns
93
- */
94
- private validateAIFlowPatterns;
95
- /**
96
- * Validate performance optimizations
97
- */
98
- private validatePerformance;
99
- private containsPlaceholderPattern;
100
- private isLongSingleLine;
101
- private hasIndentationMismatch;
102
- private detectIndentation;
103
- private isOverlyBroadPattern;
104
- private isBroadPattern;
105
- private mapFlowSeverity;
106
- /**
107
- * Get AI flow guidance for a specific pattern
108
- */
109
- getAIFlowGuidance(patternId: string): AIFlowPattern | undefined;
110
- /**
111
- * Get all AI flow patterns
112
- */
113
- getAllAIFlowPatterns(): AIFlowPattern[];
114
- }
115
- export declare const globalToolValidator: ToolValidator;
116
- //# sourceMappingURL=toolValidation.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"toolValidation.d.ts","sourceRoot":"","sources":["../../src/core/toolValidation.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAGvD;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,qBAAqB,EAAE,CAAC;IAC3C,QAAQ,CAAC,WAAW,EAAE,wBAAwB,EAAE,CAAC;IACjD,QAAQ,CAAC,cAAc,EAAE,mBAAmB,EAAE,CAAC;CAChD;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC7C,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7C,QAAQ,CAAC,gBAAgB,CAAC,EAAE;QAC1B,QAAQ,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC;QAChC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,EAAE,CAAC;QACpC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;KAChC,CAAC;CACH;AAED;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAuDvB;IAEF;;OAEG;IACH,iBAAiB,CACf,IAAI,EAAE,cAAc,EACpB,OAAO,EAAE,gBAAgB,GACxB,oBAAoB;IAsBvB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAqB5B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAuCxB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA4B3B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IA6B5B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAsB9B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAwB3B,OAAO,CAAC,0BAA0B;IAWlC,OAAO,CAAC,gBAAgB;IAKxB,OAAO,CAAC,sBAAsB;IAM9B,OAAO,CAAC,iBAAiB;IAMzB,OAAO,CAAC,oBAAoB;IAK5B,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,eAAe;IAWvB;;OAEG;IACH,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAI/D;;OAEG;IACH,oBAAoB,IAAI,aAAa,EAAE;CAGxC;AAGD,eAAO,MAAM,mBAAmB,eAAsB,CAAC"}
@@ -1,282 +0,0 @@
1
- /**
2
- * Comprehensive Tool Validation System
3
- *
4
- * Provides proactive validation for AI tool usage with:
5
- * - Pre-flight validation before tool execution
6
- * - Real-time AI flow guidance
7
- * - Pattern-based anti-pattern detection
8
- * - Recovery suggestions for common failures
9
- */
10
- import { analyzeBashFlow } from './bashCommandGuidance.js';
11
- /**
12
- * Comprehensive tool validator
13
- */
14
- export class ToolValidator {
15
- patterns = [
16
- {
17
- pattern: 'edit_without_read',
18
- description: 'Attempting Edit tool without first reading the file',
19
- guidance: 'ALWAYS use Read tool before Edit tool to get exact text including whitespace and indentation',
20
- examples: [
21
- 'Edit tool called without preceding Read tool',
22
- 'old_string contains guessed content instead of exact file content'
23
- ]
24
- },
25
- {
26
- pattern: 'broad_search_pattern',
27
- description: 'Using overly broad search patterns that may cause context overflow',
28
- guidance: 'Use specific search patterns like "**/*.ts" or "src/**/*.js" instead of "*" or "."',
29
- examples: [
30
- 'Glob(".") or Glob("*") without head_limit',
31
- 'Search patterns that could return thousands of files'
32
- ]
33
- },
34
- {
35
- pattern: 'redundant_git_operations',
36
- description: 'Running multiple git status calls or inefficient git command chains',
37
- guidance: 'Use single combined commands: "git add -A && git commit -m msg && git push"',
38
- examples: [
39
- 'git status → git add → git status → git commit → git push',
40
- 'Multiple git status calls in sequence'
41
- ]
42
- },
43
- {
44
- pattern: 'incomplete_npm_publish',
45
- description: 'npm publish detected without confirming release prerequisites',
46
- guidance: 'Ensure auth, version bump, build/tests, publish, and git push follow the project release process; automation (npm_publish) is preferred but not required',
47
- examples: [
48
- 'Running npm publish before bumping version',
49
- 'Publishing without build/test steps required by the project'
50
- ]
51
- },
52
- {
53
- pattern: 'sequential_file_reads',
54
- description: 'Reading files sequentially when parallel execution is possible',
55
- guidance: 'Use parallel tool calls for independent file reads to improve performance',
56
- examples: [
57
- 'Multiple Read calls in separate tool calls',
58
- 'Sequential file operations that could be parallelized'
59
- ]
60
- },
61
- {
62
- pattern: 'validation_after_each_edit',
63
- description: 'Running validation after each individual edit',
64
- guidance: 'Complete ALL edits first, run ONE validation at the end only if needed',
65
- examples: [
66
- 'Running type-check after each file edit',
67
- 'Running build/test after every small change'
68
- ]
69
- }
70
- ];
71
- /**
72
- * Validate tool usage before execution
73
- */
74
- validateToolUsage(tool, context) {
75
- const warnings = [];
76
- const suggestions = [];
77
- const criticalErrors = [];
78
- // Tool-specific validation
79
- this.validateToolSpecific(tool, context, warnings, suggestions, criticalErrors);
80
- // AI flow pattern validation
81
- this.validateAIFlowPatterns(tool, context, warnings, suggestions);
82
- // Performance optimization validation
83
- this.validatePerformance(tool, context, warnings, suggestions);
84
- return {
85
- valid: criticalErrors.length === 0,
86
- warnings,
87
- suggestions,
88
- criticalErrors
89
- };
90
- }
91
- /**
92
- * Validate tool-specific patterns
93
- */
94
- validateToolSpecific(tool, context, warnings, suggestions, criticalErrors) {
95
- switch (tool.name) {
96
- case 'Edit':
97
- this.validateEditTool(tool, context, warnings, criticalErrors);
98
- break;
99
- case 'Glob':
100
- case 'Grep':
101
- this.validateSearchTools(tool, context, warnings, suggestions);
102
- break;
103
- case 'execute_bash':
104
- this.validateBashCommands(tool, context, warnings, suggestions);
105
- break;
106
- }
107
- }
108
- /**
109
- * Validate Edit tool usage
110
- */
111
- validateEditTool(tool, context, warnings, criticalErrors) {
112
- const params = tool.parameters;
113
- // Check for placeholder patterns in old_string
114
- if (params.old_string && this.containsPlaceholderPattern(params.old_string)) {
115
- warnings.push({
116
- code: 'EDIT_PLACEHOLDER_DETECTED',
117
- message: 'Edit tool old_string contains placeholder patterns',
118
- severity: 'high',
119
- suggestion: 'Use Read tool first to get exact file content instead of guessing'
120
- });
121
- }
122
- // Check for long single lines (likely guessed content)
123
- if (params.old_string && this.isLongSingleLine(params.old_string)) {
124
- warnings.push({
125
- code: 'EDIT_LONG_SINGLE_LINE',
126
- message: 'Edit tool old_string is a long single line (likely guessed content)',
127
- severity: 'medium',
128
- suggestion: 'Read the file first to get exact multi-line content'
129
- });
130
- }
131
- // Check for indentation mismatches
132
- if (params.old_string && params.new_string && this.hasIndentationMismatch(params.old_string, params.new_string)) {
133
- warnings.push({
134
- code: 'EDIT_INDENTATION_MISMATCH',
135
- message: 'Edit tool old_string and new_string have indentation mismatches',
136
- severity: 'high',
137
- suggestion: 'Ensure exact whitespace matching between old and new strings'
138
- });
139
- }
140
- }
141
- /**
142
- * Validate search tools (Glob, Grep)
143
- */
144
- validateSearchTools(tool, context, warnings, suggestions) {
145
- const params = tool.parameters;
146
- // Check for overly broad patterns
147
- if (params.pattern && this.isOverlyBroadPattern(params.pattern)) {
148
- warnings.push({
149
- code: 'SEARCH_OVERLY_BROAD',
150
- message: `Search pattern "${params.pattern}" is overly broad`,
151
- severity: 'medium',
152
- suggestion: 'Use specific patterns like "**/*.ts" or add head_limit parameter'
153
- });
154
- }
155
- // Suggest head_limit for broad patterns
156
- if (params.pattern && this.isBroadPattern(params.pattern) && !params.head_limit) {
157
- suggestions.push({
158
- code: 'SEARCH_SUGGEST_HEAD_LIMIT',
159
- message: 'Broad search pattern detected without head_limit',
160
- action: 'Add head_limit parameter to prevent context overflow'
161
- });
162
- }
163
- }
164
- /**
165
- * Validate bash commands
166
- */
167
- validateBashCommands(tool, context, warnings, suggestions) {
168
- const params = tool.parameters;
169
- if (!params.command)
170
- return;
171
- const flowWarnings = analyzeBashFlow(params.command);
172
- for (const flow of flowWarnings) {
173
- warnings.push({
174
- code: flow.code,
175
- message: flow.message,
176
- severity: this.mapFlowSeverity(flow.severity),
177
- suggestion: flow.suggestion,
178
- });
179
- if (flow.suggestion) {
180
- suggestions.push({
181
- code: flow.code,
182
- message: flow.message,
183
- action: flow.suggestion,
184
- });
185
- }
186
- }
187
- }
188
- /**
189
- * Validate AI flow patterns
190
- */
191
- validateAIFlowPatterns(tool, context, warnings, suggestions) {
192
- // Check for sequential file reads
193
- if (tool.name === 'read_file' && context.workspaceContext?.recentOperations) {
194
- const recentReads = context.workspaceContext.recentOperations
195
- .filter(op => op === 'read_file')
196
- .length;
197
- if (recentReads > 2) {
198
- suggestions.push({
199
- code: 'PARALLEL_READ_SUGGESTION',
200
- message: 'Multiple sequential file reads detected',
201
- action: 'Use parallel tool calls (e.g., read_files) for independent file reads to improve performance'
202
- });
203
- }
204
- }
205
- }
206
- /**
207
- * Validate performance optimizations
208
- */
209
- validatePerformance(tool, context, warnings, suggestions) {
210
- // Add performance optimization suggestions
211
- if (tool.name === 'execute_bash' && context.workspaceContext?.recentOperations) {
212
- const recentValidations = context.workspaceContext.recentOperations
213
- .filter(op => op.includes('validate') || op.includes('test') || op.includes('build'))
214
- .length;
215
- if (recentValidations > 1) {
216
- warnings.push({
217
- code: 'EXCESSIVE_VALIDATION',
218
- message: 'Multiple validation operations detected',
219
- severity: 'low',
220
- suggestion: 'Complete ALL edits first, run ONE validation at the end only if needed'
221
- });
222
- }
223
- }
224
- }
225
- // Helper methods
226
- containsPlaceholderPattern(text) {
227
- const patterns = [
228
- /\.\.\./,
229
- /\[.*\]/,
230
- /\/\/.*\.\.\./,
231
- /TODO/,
232
- /FIXME/
233
- ];
234
- return patterns.some(pattern => pattern.test(text));
235
- }
236
- isLongSingleLine(text) {
237
- const lines = text.split('\n');
238
- return lines.length === 1 && text.length > 100;
239
- }
240
- hasIndentationMismatch(oldString, newString) {
241
- const oldIndent = this.detectIndentation(oldString);
242
- const newIndent = this.detectIndentation(newString);
243
- return oldIndent !== newIndent;
244
- }
245
- detectIndentation(text) {
246
- const firstLine = text.split('\n')[0] || '';
247
- const match = firstLine.match(/^(\s+)/);
248
- return match?.[1] ?? '';
249
- }
250
- isOverlyBroadPattern(pattern) {
251
- const broadPatterns = ['.', '*', '**'];
252
- return broadPatterns.includes(pattern);
253
- }
254
- isBroadPattern(pattern) {
255
- return pattern.includes('*') && !pattern.includes('.');
256
- }
257
- mapFlowSeverity(severity) {
258
- switch (severity) {
259
- case 'critical':
260
- return 'high';
261
- case 'info':
262
- return 'low';
263
- default:
264
- return 'medium';
265
- }
266
- }
267
- /**
268
- * Get AI flow guidance for a specific pattern
269
- */
270
- getAIFlowGuidance(patternId) {
271
- return this.patterns.find(p => p.pattern === patternId);
272
- }
273
- /**
274
- * Get all AI flow patterns
275
- */
276
- getAllAIFlowPatterns() {
277
- return [...this.patterns];
278
- }
279
- }
280
- // Global tool validator instance
281
- export const globalToolValidator = new ToolValidator();
282
- //# sourceMappingURL=toolValidation.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"toolValidation.js","sourceRoot":"","sources":["../../src/core/toolValidation.ts"],"names":[],"mappings":"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"}