erosolar-cli 1.7.194 → 1.7.196

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 (68) hide show
  1. package/dist/core/agent.d.ts +6 -0
  2. package/dist/core/agent.d.ts.map +1 -1
  3. package/dist/core/agent.js +10 -1
  4. package/dist/core/agent.js.map +1 -1
  5. package/dist/core/errors/errorUtils.d.ts +87 -0
  6. package/dist/core/errors/errorUtils.d.ts.map +1 -0
  7. package/dist/core/errors/errorUtils.js +158 -0
  8. package/dist/core/errors/errorUtils.js.map +1 -0
  9. package/dist/core/resultVerification.js.map +1 -1
  10. package/dist/core/toolValidation.d.ts +117 -0
  11. package/dist/core/toolValidation.d.ts.map +1 -0
  12. package/dist/core/toolValidation.js +282 -0
  13. package/dist/core/toolValidation.js.map +1 -0
  14. package/dist/core/types/utilityTypes.d.ts +192 -0
  15. package/dist/core/types/utilityTypes.d.ts.map +1 -0
  16. package/dist/core/types/utilityTypes.js +272 -0
  17. package/dist/core/types/utilityTypes.js.map +1 -0
  18. package/dist/shell/interactiveShell.d.ts +9 -0
  19. package/dist/shell/interactiveShell.d.ts.map +1 -1
  20. package/dist/shell/interactiveShell.js +69 -1
  21. package/dist/shell/interactiveShell.js.map +1 -1
  22. package/dist/shell/systemPrompt.d.ts.map +1 -1
  23. package/dist/shell/systemPrompt.js +5 -0
  24. package/dist/shell/systemPrompt.js.map +1 -1
  25. package/dist/shell/terminalInput.d.ts +1 -0
  26. package/dist/shell/terminalInput.d.ts.map +1 -1
  27. package/dist/shell/terminalInput.js +9 -2
  28. package/dist/shell/terminalInput.js.map +1 -1
  29. package/dist/shell/terminalInputAdapter.d.ts +4 -0
  30. package/dist/shell/terminalInputAdapter.d.ts.map +1 -1
  31. package/dist/shell/terminalInputAdapter.js +6 -0
  32. package/dist/shell/terminalInputAdapter.js.map +1 -1
  33. package/dist/tools/planningTools.d.ts +1 -0
  34. package/dist/tools/planningTools.d.ts.map +1 -1
  35. package/dist/tools/planningTools.js +48 -0
  36. package/dist/tools/planningTools.js.map +1 -1
  37. package/dist/ui/display.d.ts +5 -49
  38. package/dist/ui/display.d.ts.map +1 -1
  39. package/dist/ui/display.js +36 -335
  40. package/dist/ui/display.js.map +1 -1
  41. package/dist/ui/toolDisplay.d.ts.map +1 -1
  42. package/dist/ui/toolDisplay.js +17 -0
  43. package/dist/ui/toolDisplay.js.map +1 -1
  44. package/dist/utils/planFormatter.d.ts +34 -0
  45. package/dist/utils/planFormatter.d.ts.map +1 -0
  46. package/dist/utils/planFormatter.js +140 -0
  47. package/dist/utils/planFormatter.js.map +1 -0
  48. package/package.json +2 -2
  49. package/dist/shell/bracketedPasteManager.d.ts +0 -128
  50. package/dist/shell/bracketedPasteManager.d.ts.map +0 -1
  51. package/dist/shell/bracketedPasteManager.enhanced.d.ts +0 -2
  52. package/dist/shell/bracketedPasteManager.enhanced.d.ts.map +0 -1
  53. package/dist/shell/bracketedPasteManager.enhanced.js +0 -4
  54. package/dist/shell/bracketedPasteManager.enhanced.js.map +0 -1
  55. package/dist/shell/bracketedPasteManager.js +0 -372
  56. package/dist/shell/bracketedPasteManager.js.map +0 -1
  57. package/dist/shell/chatBox.d.ts +0 -228
  58. package/dist/shell/chatBox.d.ts.map +0 -1
  59. package/dist/shell/chatBox.js +0 -811
  60. package/dist/shell/chatBox.js.map +0 -1
  61. package/dist/shell/unifiedChatBox.d.ts +0 -194
  62. package/dist/shell/unifiedChatBox.d.ts.map +0 -1
  63. package/dist/shell/unifiedChatBox.js +0 -585
  64. package/dist/shell/unifiedChatBox.js.map +0 -1
  65. package/dist/ui/persistentPrompt.d.ts +0 -545
  66. package/dist/ui/persistentPrompt.d.ts.map +0 -1
  67. package/dist/ui/persistentPrompt.js +0 -1529
  68. package/dist/ui/persistentPrompt.js.map +0 -1
@@ -0,0 +1,282 @@
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
+ /**
11
+ * Comprehensive tool validator
12
+ */
13
+ export class ToolValidator {
14
+ patterns = [
15
+ {
16
+ pattern: 'edit_without_read',
17
+ description: 'Attempting Edit tool without first reading the file',
18
+ guidance: 'ALWAYS use Read tool before Edit tool to get exact text including whitespace and indentation',
19
+ examples: [
20
+ 'Edit tool called without preceding Read tool',
21
+ 'old_string contains guessed content instead of exact file content'
22
+ ]
23
+ },
24
+ {
25
+ pattern: 'broad_search_pattern',
26
+ description: 'Using overly broad search patterns that may cause context overflow',
27
+ guidance: 'Use specific search patterns like "**/*.ts" or "src/**/*.js" instead of "*" or "."',
28
+ examples: [
29
+ 'Glob(".") or Glob("*") without head_limit',
30
+ 'Search patterns that could return thousands of files'
31
+ ]
32
+ },
33
+ {
34
+ pattern: 'redundant_git_operations',
35
+ description: 'Running multiple git status calls or inefficient git command chains',
36
+ guidance: 'Use single combined commands: "git add -A && git commit -m msg && git push"',
37
+ examples: [
38
+ 'git status → git add → git status → git commit → git push',
39
+ 'Multiple git status calls in sequence'
40
+ ]
41
+ },
42
+ {
43
+ pattern: 'incomplete_npm_publish',
44
+ description: 'Incomplete npm publish workflow',
45
+ guidance: 'Use npm_publish tool for complete workflow: version bump → build → publish → push',
46
+ examples: [
47
+ 'Running npm publish without version bump',
48
+ 'Manual publish without build step'
49
+ ]
50
+ },
51
+ {
52
+ pattern: 'sequential_file_reads',
53
+ description: 'Reading files sequentially when parallel execution is possible',
54
+ guidance: 'Use parallel tool calls for independent file reads to improve performance',
55
+ examples: [
56
+ 'Multiple Read calls in separate tool calls',
57
+ 'Sequential file operations that could be parallelized'
58
+ ]
59
+ },
60
+ {
61
+ pattern: 'validation_after_each_edit',
62
+ description: 'Running validation after each individual edit',
63
+ guidance: 'Complete ALL edits first, run ONE validation at the end only if needed',
64
+ examples: [
65
+ 'Running type-check after each file edit',
66
+ 'Running build/test after every small change'
67
+ ]
68
+ }
69
+ ];
70
+ /**
71
+ * Validate tool usage before execution
72
+ */
73
+ validateToolUsage(tool, context) {
74
+ const warnings = [];
75
+ const suggestions = [];
76
+ const criticalErrors = [];
77
+ // Tool-specific validation
78
+ this.validateToolSpecific(tool, context, warnings, suggestions, criticalErrors);
79
+ // AI flow pattern validation
80
+ this.validateAIFlowPatterns(tool, context, warnings, suggestions);
81
+ // Performance optimization validation
82
+ this.validatePerformance(tool, context, warnings, suggestions);
83
+ return {
84
+ valid: criticalErrors.length === 0,
85
+ warnings,
86
+ suggestions,
87
+ criticalErrors
88
+ };
89
+ }
90
+ /**
91
+ * Validate tool-specific patterns
92
+ */
93
+ validateToolSpecific(tool, context, warnings, suggestions, criticalErrors) {
94
+ switch (tool.name) {
95
+ case 'Edit':
96
+ this.validateEditTool(tool, context, warnings, criticalErrors);
97
+ break;
98
+ case 'Glob':
99
+ case 'Grep':
100
+ this.validateSearchTools(tool, context, warnings, suggestions);
101
+ break;
102
+ case 'execute_bash':
103
+ this.validateBashCommands(tool, context, warnings, suggestions);
104
+ break;
105
+ }
106
+ }
107
+ /**
108
+ * Validate Edit tool usage
109
+ */
110
+ validateEditTool(tool, context, warnings, criticalErrors) {
111
+ const params = tool.parameters;
112
+ // Check for placeholder patterns in old_string
113
+ if (params.old_string && this.containsPlaceholderPattern(params.old_string)) {
114
+ warnings.push({
115
+ code: 'EDIT_PLACEHOLDER_DETECTED',
116
+ message: 'Edit tool old_string contains placeholder patterns',
117
+ severity: 'high',
118
+ suggestion: 'Use Read tool first to get exact file content instead of guessing'
119
+ });
120
+ }
121
+ // Check for long single lines (likely guessed content)
122
+ if (params.old_string && this.isLongSingleLine(params.old_string)) {
123
+ warnings.push({
124
+ code: 'EDIT_LONG_SINGLE_LINE',
125
+ message: 'Edit tool old_string is a long single line (likely guessed content)',
126
+ severity: 'medium',
127
+ suggestion: 'Read the file first to get exact multi-line content'
128
+ });
129
+ }
130
+ // Check for indentation mismatches
131
+ if (params.old_string && params.new_string && this.hasIndentationMismatch(params.old_string, params.new_string)) {
132
+ warnings.push({
133
+ code: 'EDIT_INDENTATION_MISMATCH',
134
+ message: 'Edit tool old_string and new_string have indentation mismatches',
135
+ severity: 'high',
136
+ suggestion: 'Ensure exact whitespace matching between old and new strings'
137
+ });
138
+ }
139
+ }
140
+ /**
141
+ * Validate search tools (Glob, Grep)
142
+ */
143
+ validateSearchTools(tool, context, warnings, suggestions) {
144
+ const params = tool.parameters;
145
+ // Check for overly broad patterns
146
+ if (params.pattern && this.isOverlyBroadPattern(params.pattern)) {
147
+ warnings.push({
148
+ code: 'SEARCH_OVERLY_BROAD',
149
+ message: `Search pattern "${params.pattern}" is overly broad`,
150
+ severity: 'medium',
151
+ suggestion: 'Use specific patterns like "**/*.ts" or add head_limit parameter'
152
+ });
153
+ }
154
+ // Suggest head_limit for broad patterns
155
+ if (params.pattern && this.isBroadPattern(params.pattern) && !params.head_limit) {
156
+ suggestions.push({
157
+ code: 'SEARCH_SUGGEST_HEAD_LIMIT',
158
+ message: 'Broad search pattern detected without head_limit',
159
+ action: 'Add head_limit parameter to prevent context overflow'
160
+ });
161
+ }
162
+ }
163
+ /**
164
+ * Validate bash commands
165
+ */
166
+ validateBashCommands(tool, context, warnings, suggestions) {
167
+ const params = tool.parameters;
168
+ if (!params.command)
169
+ return;
170
+ // Check for redundant git operations
171
+ if (this.containsRedundantGitOperations(params.command)) {
172
+ warnings.push({
173
+ code: 'GIT_REDUNDANT_OPERATIONS',
174
+ message: 'Redundant git operations detected',
175
+ severity: 'low',
176
+ suggestion: 'Use combined git commands: "git add -A && git commit -m msg && git push"'
177
+ });
178
+ }
179
+ // Check for incomplete npm publish
180
+ if (this.isIncompleteNpmPublish(params.command)) {
181
+ suggestions.push({
182
+ code: 'NPM_INCOMPLETE_PUBLISH',
183
+ message: 'Incomplete npm publish workflow detected',
184
+ action: 'Use npm_publish tool for complete workflow automation'
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 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
+ containsRedundantGitOperations(command) {
258
+ const gitStatusPattern = /git status/g;
259
+ const matches = command.match(gitStatusPattern);
260
+ return matches ? matches.length > 1 : false;
261
+ }
262
+ isIncompleteNpmPublish(command) {
263
+ return command.includes('npm publish') &&
264
+ !command.includes('npm version') &&
265
+ !command.includes('npm run build');
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toolValidation.js","sourceRoot":"","sources":["../../src/core/toolValidation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,192 @@
1
+ /**
2
+ * TypeScript Utility Types and Helper Functions
3
+ *
4
+ * Provides comprehensive TypeScript utilities for:
5
+ * - Advanced type manipulation
6
+ * - Functional programming patterns
7
+ * - Immutable data structures
8
+ * - Runtime type checking
9
+ */
10
+ /**
11
+ * Deep Readonly type for complete immutability
12
+ */
13
+ export type DeepReadonly<T> = {
14
+ readonly [P in keyof T]: T[P] extends object ? DeepReadonly<T[P]> : T[P];
15
+ };
16
+ /**
17
+ * Make specific properties optional
18
+ */
19
+ export type PartialBy<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;
20
+ /**
21
+ * Make specific properties required
22
+ */
23
+ export type RequiredBy<T, K extends keyof T> = T & Required<Pick<T, K>>;
24
+ /**
25
+ * Extract only function properties from type
26
+ */
27
+ export type FunctionProperties<T> = {
28
+ [K in keyof T]: T[K] extends (...args: unknown[]) => unknown ? T[K] : never;
29
+ };
30
+ /**
31
+ * Extract only data properties from type
32
+ */
33
+ export type DataProperties<T> = {
34
+ [K in keyof T]: T[K] extends (...args: unknown[]) => unknown ? never : T[K];
35
+ };
36
+ /**
37
+ * Branded type for nominal typing
38
+ */
39
+ export type Brand<T, B> = T & {
40
+ readonly __brand: B;
41
+ };
42
+ /**
43
+ * Union to intersection type
44
+ */
45
+ export type UnionToIntersection<U> = (U extends unknown ? (x: U) => void : never) extends (x: infer I) => void ? I : never;
46
+ /**
47
+ * Async function return type
48
+ */
49
+ export type AsyncReturnType<T extends (...args: unknown[]) => unknown> = T extends (...args: unknown[]) => Promise<infer R> ? R : never;
50
+ /**
51
+ * Constructor type
52
+ */
53
+ export type Constructor<T = unknown> = new (...args: unknown[]) => T;
54
+ /**
55
+ * Instance type from constructor
56
+ */
57
+ export type InstanceType<T extends Constructor> = T extends Constructor<infer R> ? R : never;
58
+ /**
59
+ * Runtime type checking utilities
60
+ */
61
+ export declare class TypeGuards {
62
+ /**
63
+ * Check if value is a string
64
+ */
65
+ static isString(value: unknown): value is string;
66
+ /**
67
+ * Check if value is a number
68
+ */
69
+ static isNumber(value: unknown): value is number;
70
+ /**
71
+ * Check if value is a boolean
72
+ */
73
+ static isBoolean(value: unknown): value is boolean;
74
+ /**
75
+ * Check if value is an object (not null, not array)
76
+ */
77
+ static isObject(value: unknown): value is Record<string, unknown>;
78
+ /**
79
+ * Check if value is an array
80
+ */
81
+ static isArray(value: unknown): value is unknown[];
82
+ /**
83
+ * Check if value is a function
84
+ */
85
+ static isFunction(value: unknown): value is (...args: unknown[]) => unknown;
86
+ /**
87
+ * Check if value is null or undefined
88
+ */
89
+ static isNil(value: unknown): value is null | undefined;
90
+ /**
91
+ * Check if value has a specific property
92
+ */
93
+ static hasProperty<T extends string>(value: unknown, property: T): value is {
94
+ [K in T]: unknown;
95
+ };
96
+ }
97
+ /**
98
+ * Functional programming utilities
99
+ */
100
+ export declare class Functional {
101
+ /**
102
+ * Compose multiple functions
103
+ */
104
+ static compose<T>(...fns: Array<(x: T) => T>): (x: T) => T;
105
+ /**
106
+ * Pipe value through multiple functions
107
+ */
108
+ static pipe<T>(value: T, ...fns: Array<(x: T) => T>): T;
109
+ /**
110
+ * Memoize function with cache
111
+ */
112
+ static memoize<T extends (...args: unknown[]) => unknown>(fn: T, cacheKey?: (...args: Parameters<T>) => string): T;
113
+ /**
114
+ * Debounce function execution
115
+ */
116
+ static debounce<T extends (...args: unknown[]) => unknown>(fn: T, delay: number): (...args: Parameters<T>) => void;
117
+ /**
118
+ * Throttle function execution
119
+ */
120
+ static throttle<T extends (...args: unknown[]) => unknown>(fn: T, delay: number): (...args: Parameters<T>) => void;
121
+ }
122
+ /**
123
+ * Immutable data utilities
124
+ */
125
+ export declare class Immutable {
126
+ /**
127
+ * Deep freeze object
128
+ */
129
+ static deepFreeze<T>(obj: T): DeepReadonly<T>;
130
+ /**
131
+ * Create immutable copy with updates
132
+ */
133
+ static update<T extends Record<string, unknown>>(obj: T, updates: Partial<T>): T;
134
+ /**
135
+ * Create immutable copy with nested updates
136
+ */
137
+ static updateIn<T extends Record<string, unknown>>(obj: T, path: string[], value: unknown): T;
138
+ }
139
+ /**
140
+ * Type-safe event emitter
141
+ */
142
+ export declare class TypedEventEmitter<T extends Record<string, unknown[]>> {
143
+ private listeners;
144
+ /**
145
+ * Add event listener
146
+ */
147
+ on<K extends keyof T>(event: K, listener: (...args: T[K]) => void): void;
148
+ /**
149
+ * Remove event listener
150
+ */
151
+ off<K extends keyof T>(event: K, listener: (...args: T[K]) => void): void;
152
+ /**
153
+ * Emit event
154
+ */
155
+ emit<K extends keyof T>(event: K, ...args: T[K]): void;
156
+ /**
157
+ * Remove all listeners
158
+ */
159
+ removeAllListeners(): void;
160
+ }
161
+ /**
162
+ * Utility functions for common TypeScript patterns
163
+ */
164
+ export declare class TypeScriptUtils {
165
+ /**
166
+ * Assert value is not null or undefined
167
+ */
168
+ static assertDefined<T>(value: T | null | undefined, message?: string): asserts value is T;
169
+ /**
170
+ * Create type-safe enum from array
171
+ */
172
+ static createStringEnum<T extends string>(values: readonly T[]): {
173
+ [K in T]: K;
174
+ };
175
+ /**
176
+ * Create branded type
177
+ */
178
+ static createBranded<T, B>(value: T): Brand<T, B>;
179
+ /**
180
+ * Extract keys from type that match a condition
181
+ */
182
+ static extractKeys<T extends object>(obj: T, predicate: (key: keyof T, value: T[keyof T]) => boolean): Array<keyof T>;
183
+ /**
184
+ * Pick properties from object
185
+ */
186
+ static pick<T extends object, K extends keyof T>(obj: T, keys: K[]): Pick<T, K>;
187
+ /**
188
+ * Omit properties from object
189
+ */
190
+ static omit<T, K extends keyof T>(obj: T, keys: K[]): Omit<T, K>;
191
+ }
192
+ //# sourceMappingURL=utilityTypes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utilityTypes.d.ts","sourceRoot":"","sources":["../../../src/core/types/utilityTypes.ts"],"names":[],"mappings":"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"}