erosolar-cli 2.1.238 → 2.1.240

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 (142) hide show
  1. package/README.md +9 -0
  2. package/dist/contracts/tools.schema.json +3 -1
  3. package/dist/core/agent.d.ts.map +1 -1
  4. package/dist/core/agent.js +5 -1
  5. package/dist/core/agent.js.map +1 -1
  6. package/dist/core/agentOrchestrator.d.ts +4 -0
  7. package/dist/core/agentOrchestrator.d.ts.map +1 -1
  8. package/dist/core/agentOrchestrator.js +58 -6
  9. package/dist/core/agentOrchestrator.js.map +1 -1
  10. package/dist/core/autoExecutionOrchestrator.d.ts +172 -0
  11. package/dist/core/autoExecutionOrchestrator.d.ts.map +1 -0
  12. package/dist/core/autoExecutionOrchestrator.js +591 -0
  13. package/dist/core/autoExecutionOrchestrator.js.map +1 -0
  14. package/dist/core/contextManager.d.ts.map +1 -1
  15. package/dist/core/contextManager.js.map +1 -1
  16. package/dist/core/dualAgentOrchestrator.d.ts +34 -0
  17. package/dist/core/dualAgentOrchestrator.d.ts.map +1 -0
  18. package/dist/core/dualAgentOrchestrator.js +94 -0
  19. package/dist/core/dualAgentOrchestrator.js.map +1 -0
  20. package/dist/core/errors/safetyValidator.d.ts +25 -12
  21. package/dist/core/errors/safetyValidator.d.ts.map +1 -1
  22. package/dist/core/errors/safetyValidator.js +165 -17
  23. package/dist/core/errors/safetyValidator.js.map +1 -1
  24. package/dist/core/governmentProcedures.d.ts +118 -0
  25. package/dist/core/governmentProcedures.d.ts.map +1 -0
  26. package/dist/core/governmentProcedures.js +912 -0
  27. package/dist/core/governmentProcedures.js.map +1 -0
  28. package/dist/core/infrastructureTemplates.d.ts +123 -0
  29. package/dist/core/infrastructureTemplates.d.ts.map +1 -0
  30. package/dist/core/infrastructureTemplates.js +1326 -0
  31. package/dist/core/infrastructureTemplates.js.map +1 -0
  32. package/dist/core/integrityVerification.d.ts +250 -0
  33. package/dist/core/integrityVerification.d.ts.map +1 -0
  34. package/dist/core/integrityVerification.js +616 -0
  35. package/dist/core/integrityVerification.js.map +1 -0
  36. package/dist/core/orchestration.d.ts +534 -0
  37. package/dist/core/orchestration.d.ts.map +1 -0
  38. package/dist/core/orchestration.js +2009 -0
  39. package/dist/core/orchestration.js.map +1 -0
  40. package/dist/core/persistentObjectiveStore.d.ts +292 -0
  41. package/dist/core/persistentObjectiveStore.d.ts.map +1 -0
  42. package/dist/core/persistentObjectiveStore.js +613 -0
  43. package/dist/core/persistentObjectiveStore.js.map +1 -0
  44. package/dist/core/preferences.js +1 -1
  45. package/dist/core/preferences.js.map +1 -1
  46. package/dist/core/reliabilityPrompt.d.ts.map +1 -1
  47. package/dist/core/reliabilityPrompt.js +3 -0
  48. package/dist/core/reliabilityPrompt.js.map +1 -1
  49. package/dist/core/securityDeliverableGenerator.d.ts +292 -0
  50. package/dist/core/securityDeliverableGenerator.d.ts.map +1 -0
  51. package/dist/core/securityDeliverableGenerator.js +1590 -0
  52. package/dist/core/securityDeliverableGenerator.js.map +1 -0
  53. package/dist/core/taskCompletionDetector.d.ts.map +1 -1
  54. package/dist/core/taskCompletionDetector.js +4 -1
  55. package/dist/core/taskCompletionDetector.js.map +1 -1
  56. package/dist/shell/autoExecutor.d.ts.map +1 -1
  57. package/dist/shell/autoExecutor.js +32 -3
  58. package/dist/shell/autoExecutor.js.map +1 -1
  59. package/dist/shell/interactiveShell.d.ts +9 -0
  60. package/dist/shell/interactiveShell.d.ts.map +1 -1
  61. package/dist/shell/interactiveShell.js +282 -190
  62. package/dist/shell/interactiveShell.js.map +1 -1
  63. package/dist/tools/bashTools.d.ts +3 -5
  64. package/dist/tools/bashTools.d.ts.map +1 -1
  65. package/dist/tools/bashTools.js +259 -161
  66. package/dist/tools/bashTools.js.map +1 -1
  67. package/dist/tools/tao/index.d.ts +4 -4
  68. package/dist/tools/tao/index.d.ts.map +1 -1
  69. package/dist/tools/tao/index.js +15 -5
  70. package/dist/tools/tao/index.js.map +1 -1
  71. package/dist/tools/tao/rl.d.ts +164 -0
  72. package/dist/tools/tao/rl.d.ts.map +1 -0
  73. package/dist/tools/tao/rl.js +2998 -0
  74. package/dist/tools/tao/rl.js.map +1 -0
  75. package/dist/tools/taoTools.d.ts +2 -2
  76. package/dist/tools/taoTools.d.ts.map +1 -1
  77. package/dist/tools/taoTools.js +103 -20
  78. package/dist/tools/taoTools.js.map +1 -1
  79. package/dist/ui/PromptController.d.ts +3 -0
  80. package/dist/ui/PromptController.d.ts.map +1 -1
  81. package/dist/ui/PromptController.js +3 -0
  82. package/dist/ui/PromptController.js.map +1 -1
  83. package/dist/ui/UnifiedUIRenderer.d.ts +4 -0
  84. package/dist/ui/UnifiedUIRenderer.d.ts.map +1 -1
  85. package/dist/ui/UnifiedUIRenderer.js +37 -6
  86. package/dist/ui/UnifiedUIRenderer.js.map +1 -1
  87. package/dist/ui/display.d.ts +9 -1
  88. package/dist/ui/display.d.ts.map +1 -1
  89. package/dist/ui/display.js +66 -9
  90. package/dist/ui/display.js.map +1 -1
  91. package/dist/ui/shortcutsHelp.d.ts.map +1 -1
  92. package/dist/ui/shortcutsHelp.js +1 -0
  93. package/dist/ui/shortcutsHelp.js.map +1 -1
  94. package/package.json +3 -2
  95. package/dist/capabilities/askUserCapability.d.ts +0 -14
  96. package/dist/capabilities/askUserCapability.d.ts.map +0 -1
  97. package/dist/capabilities/askUserCapability.js +0 -134
  98. package/dist/capabilities/askUserCapability.js.map +0 -1
  99. package/dist/capabilities/codeGenerationCapability.d.ts +0 -13
  100. package/dist/capabilities/codeGenerationCapability.d.ts.map +0 -1
  101. package/dist/capabilities/codeGenerationCapability.js +0 -25
  102. package/dist/capabilities/codeGenerationCapability.js.map +0 -1
  103. package/dist/capabilities/performanceMonitoringCapability.d.ts +0 -108
  104. package/dist/capabilities/performanceMonitoringCapability.d.ts.map +0 -1
  105. package/dist/capabilities/performanceMonitoringCapability.js +0 -176
  106. package/dist/capabilities/performanceMonitoringCapability.js.map +0 -1
  107. package/dist/capabilities/todoCapability.d.ts +0 -19
  108. package/dist/capabilities/todoCapability.d.ts.map +0 -1
  109. package/dist/capabilities/todoCapability.js +0 -170
  110. package/dist/capabilities/todoCapability.js.map +0 -1
  111. package/dist/core/baseToolFactory.d.ts +0 -187
  112. package/dist/core/baseToolFactory.d.ts.map +0 -1
  113. package/dist/core/baseToolFactory.js +0 -352
  114. package/dist/core/baseToolFactory.js.map +0 -1
  115. package/dist/core/intelligentSummarizer.d.ts +0 -79
  116. package/dist/core/intelligentSummarizer.d.ts.map +0 -1
  117. package/dist/core/intelligentSummarizer.js +0 -273
  118. package/dist/core/intelligentSummarizer.js.map +0 -1
  119. package/dist/core/memorySystem.d.ts +0 -67
  120. package/dist/core/memorySystem.d.ts.map +0 -1
  121. package/dist/core/memorySystem.js +0 -334
  122. package/dist/core/memorySystem.js.map +0 -1
  123. package/dist/core/outputStyles.d.ts +0 -48
  124. package/dist/core/outputStyles.d.ts.map +0 -1
  125. package/dist/core/outputStyles.js +0 -270
  126. package/dist/core/outputStyles.js.map +0 -1
  127. package/dist/core/toolPatternAnalyzer.d.ts +0 -87
  128. package/dist/core/toolPatternAnalyzer.d.ts.map +0 -1
  129. package/dist/core/toolPatternAnalyzer.js +0 -272
  130. package/dist/core/toolPatternAnalyzer.js.map +0 -1
  131. package/dist/tools/backgroundBashTools.d.ts +0 -21
  132. package/dist/tools/backgroundBashTools.d.ts.map +0 -1
  133. package/dist/tools/backgroundBashTools.js +0 -215
  134. package/dist/tools/backgroundBashTools.js.map +0 -1
  135. package/dist/tools/code-quality-dashboard.d.ts +0 -57
  136. package/dist/tools/code-quality-dashboard.d.ts.map +0 -1
  137. package/dist/tools/code-quality-dashboard.js +0 -218
  138. package/dist/tools/code-quality-dashboard.js.map +0 -1
  139. package/dist/tools/tao/rlEngine.d.ts +0 -40
  140. package/dist/tools/tao/rlEngine.d.ts.map +0 -1
  141. package/dist/tools/tao/rlEngine.js +0 -237
  142. package/dist/tools/tao/rlEngine.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"outputStyles.js","sourceRoot":"","sources":["../../src/core/outputStyles.ts"],"names":[],"mappings":"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"}
@@ -1,87 +0,0 @@
1
- /**
2
- * Tool Execution Pattern Analyzer
3
- *
4
- * Analyzes tool usage patterns to help the AI learn optimal workflows.
5
- * Critical for Claude Code to operate efficiently without wasting context
6
- * on redundant operations.
7
- */
8
- export interface ToolCall {
9
- name: string;
10
- args: Record<string, unknown>;
11
- timestamp: number;
12
- duration?: number;
13
- success: boolean;
14
- }
15
- export interface Pattern {
16
- id: string;
17
- description: string;
18
- sequence: string[];
19
- frequency: number;
20
- avgDuration: number;
21
- successRate: number;
22
- examples: ToolCall[][];
23
- }
24
- export interface Inefficiency {
25
- type: 'redundant' | 'inefficient_order' | 'missing_step' | 'wrong_tool';
26
- description: string;
27
- suggestion: string;
28
- severity: 'low' | 'medium' | 'high';
29
- affectedCalls: string[];
30
- }
31
- /**
32
- * Analyzes tool execution patterns and suggests optimizations
33
- */
34
- export declare class ToolPatternAnalyzer {
35
- private callHistory;
36
- private readonly maxHistory;
37
- private detectedPatterns;
38
- /**
39
- * Record a tool call
40
- */
41
- recordCall(call: ToolCall): void;
42
- /**
43
- * Get recent tool calls
44
- */
45
- getRecentCalls(count?: number): ToolCall[];
46
- /**
47
- * Detect inefficiencies in recent tool usage
48
- */
49
- detectInefficiencies(lookback?: number): Inefficiency[];
50
- /**
51
- * Detect redundant file reads
52
- */
53
- private detectRedundantReads;
54
- /**
55
- * Detect missing validation after edits
56
- */
57
- private detectMissingValidation;
58
- /**
59
- * Detect inefficient search patterns
60
- */
61
- private detectInefficientSearches;
62
- /**
63
- * Detect wrong tool choices
64
- */
65
- private detectWrongToolChoices;
66
- /**
67
- * Update detected patterns from call history
68
- */
69
- private updatePatterns;
70
- /**
71
- * Get detected patterns sorted by frequency
72
- */
73
- getPatterns(): Pattern[];
74
- /**
75
- * Generate workflow suggestions based on patterns
76
- */
77
- generateSuggestions(): string[];
78
- /**
79
- * Clear all history and patterns
80
- */
81
- clear(): void;
82
- }
83
- /**
84
- * Global singleton instance
85
- */
86
- export declare const toolPatternAnalyzer: ToolPatternAnalyzer;
87
- //# sourceMappingURL=toolPatternAnalyzer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"toolPatternAnalyzer.d.ts","sourceRoot":"","sources":["../../src/core/toolPatternAnalyzer.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,QAAQ,EAAE,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,WAAW,GAAG,mBAAmB,GAAG,cAAc,GAAG,YAAY,CAAC;IACxE,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IACpC,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AAED;;GAEG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAO;IAClC,OAAO,CAAC,gBAAgB,CAAmC;IAE3D;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI;IAYhC;;OAEG;IACH,cAAc,CAAC,KAAK,GAAE,MAAW,GAAG,QAAQ,EAAE;IAI9C;;OAEG;IACH,oBAAoB,CAAC,QAAQ,GAAE,MAAW,GAAG,YAAY,EAAE;IAmB3D;;OAEG;IACH,OAAO,CAAC,oBAAoB;IA6B5B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IA6C/B;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAwCjC;;OAEG;IACH,OAAO,CAAC,sBAAsB;IA2C9B;;OAEG;IACH,OAAO,CAAC,cAAc;IA4BtB;;OAEG;IACH,WAAW,IAAI,OAAO,EAAE;IAKxB;;OAEG;IACH,mBAAmB,IAAI,MAAM,EAAE;IAuB/B;;OAEG;IACH,KAAK,IAAI,IAAI;CAId;AAED;;GAEG;AACH,eAAO,MAAM,mBAAmB,qBAA4B,CAAC"}
@@ -1,272 +0,0 @@
1
- /**
2
- * Tool Execution Pattern Analyzer
3
- *
4
- * Analyzes tool usage patterns to help the AI learn optimal workflows.
5
- * Critical for Claude Code to operate efficiently without wasting context
6
- * on redundant operations.
7
- */
8
- /**
9
- * Analyzes tool execution patterns and suggests optimizations
10
- */
11
- export class ToolPatternAnalyzer {
12
- callHistory = [];
13
- maxHistory = 200;
14
- detectedPatterns = new Map();
15
- /**
16
- * Record a tool call
17
- */
18
- recordCall(call) {
19
- this.callHistory.push(call);
20
- // Keep history bounded
21
- if (this.callHistory.length > this.maxHistory) {
22
- this.callHistory.shift();
23
- }
24
- // Update pattern detection
25
- this.updatePatterns();
26
- }
27
- /**
28
- * Get recent tool calls
29
- */
30
- getRecentCalls(count = 10) {
31
- return this.callHistory.slice(-count);
32
- }
33
- /**
34
- * Detect inefficiencies in recent tool usage
35
- */
36
- detectInefficiencies(lookback = 20) {
37
- const recent = this.getRecentCalls(lookback);
38
- const inefficiencies = [];
39
- // Check for redundant reads
40
- inefficiencies.push(...this.detectRedundantReads(recent));
41
- // Check for missing validation after edits
42
- inefficiencies.push(...this.detectMissingValidation(recent));
43
- // Check for inefficient search patterns
44
- inefficiencies.push(...this.detectInefficientSearches(recent));
45
- // Check for wrong tool choices
46
- inefficiencies.push(...this.detectWrongToolChoices(recent));
47
- return inefficiencies;
48
- }
49
- /**
50
- * Detect redundant file reads
51
- */
52
- detectRedundantReads(calls) {
53
- const inefficiencies = [];
54
- const seenPaths = new Map();
55
- for (let i = 0; i < calls.length; i++) {
56
- const call = calls[i];
57
- if (!call)
58
- continue;
59
- if (call.name === 'Read' || call.name === 'read_file') {
60
- const path = call.args['file_path'] || call.args['path'];
61
- if (typeof path === 'string') {
62
- const lastIndex = seenPaths.get(path);
63
- if (lastIndex !== undefined && i - lastIndex < 5) {
64
- // Same file read within 5 calls - likely redundant
65
- inefficiencies.push({
66
- type: 'redundant',
67
- description: `File "${path}" was read multiple times within ${i - lastIndex} tool calls`,
68
- suggestion: 'Retain file content in memory between operations instead of re-reading',
69
- severity: 'medium',
70
- affectedCalls: [call.name],
71
- });
72
- }
73
- seenPaths.set(path, i);
74
- }
75
- }
76
- }
77
- return inefficiencies;
78
- }
79
- /**
80
- * Detect missing validation after edits
81
- */
82
- detectMissingValidation(calls) {
83
- const inefficiencies = [];
84
- for (let i = 0; i < calls.length - 1; i++) {
85
- const call = calls[i];
86
- if (!call)
87
- continue;
88
- const nextCalls = calls.slice(i + 1, i + 6);
89
- // Check if Edit/Write was followed by validation
90
- if (call.name === 'Edit' || call.name === 'Write' || call.name === 'edit_file' || call.name === 'write_file') {
91
- const editedPath = call.args['file_path'] || call.args['path'];
92
- const hasValidation = nextCalls.some(c => {
93
- // Build, test, validate, type-check are always validation
94
- if (c.name.includes('validate') ||
95
- c.name.includes('build') ||
96
- c.name.includes('test') ||
97
- c.name.includes('type')) {
98
- return true;
99
- }
100
- // Read only counts as validation if it reads the same file
101
- if (c.name === 'Read') {
102
- const readPath = c.args['file_path'] || c.args['path'];
103
- return readPath === editedPath;
104
- }
105
- return false;
106
- });
107
- if (!hasValidation) {
108
- inefficiencies.push({
109
- type: 'missing_step',
110
- description: 'File modification not followed by validation or verification',
111
- suggestion: 'After editing files, immediately verify changes with Read or run validation',
112
- severity: 'high',
113
- affectedCalls: [call.name],
114
- });
115
- }
116
- }
117
- }
118
- return inefficiencies;
119
- }
120
- /**
121
- * Detect inefficient search patterns
122
- */
123
- detectInefficientSearches(calls) {
124
- const inefficiencies = [];
125
- for (let i = 0; i < calls.length - 1; i++) {
126
- const call = calls[i];
127
- const next = calls[i + 1];
128
- if (!call || !next)
129
- continue;
130
- // Multiple sequential searches - should be parallel
131
- if ((call.name === 'Grep' || call.name === 'search') &&
132
- (next.name === 'Grep' || next.name === 'search')) {
133
- inefficiencies.push({
134
- type: 'inefficient_order',
135
- description: 'Sequential searches could be parallelized',
136
- suggestion: 'Run multiple searches in parallel by calling them together',
137
- severity: 'low',
138
- affectedCalls: [call.name, next.name],
139
- });
140
- }
141
- // Glob followed by individual reads - could use batch read
142
- if ((call.name === 'Glob' || call.name === 'glob') &&
143
- next.name === 'Read') {
144
- const nextFew = calls.slice(i + 1, i + 4);
145
- const consecutiveReads = nextFew.filter(c => c.name === 'Read').length;
146
- if (consecutiveReads >= 2) {
147
- inefficiencies.push({
148
- type: 'inefficient_order',
149
- description: `${consecutiveReads} sequential reads after glob - could be parallelized`,
150
- suggestion: 'After finding files with Glob, read multiple files in parallel',
151
- severity: 'medium',
152
- affectedCalls: ['Glob', 'Read'],
153
- });
154
- }
155
- }
156
- }
157
- return inefficiencies;
158
- }
159
- /**
160
- * Detect wrong tool choices
161
- */
162
- detectWrongToolChoices(calls) {
163
- const inefficiencies = [];
164
- for (const call of calls) {
165
- if (!call)
166
- continue;
167
- // Using bash for simple file operations
168
- if (call.name === 'Bash' || call.name === 'bash') {
169
- const command = call.args['command'];
170
- if (command) {
171
- if (command.startsWith('cat ') || command.includes('cat ')) {
172
- inefficiencies.push({
173
- type: 'wrong_tool',
174
- description: 'Using bash cat instead of Read tool',
175
- suggestion: 'Use the Read tool instead of bash cat for better error handling and context management',
176
- severity: 'low',
177
- affectedCalls: ['Bash'],
178
- });
179
- }
180
- if (command.startsWith('find ') || command.includes('find ')) {
181
- inefficiencies.push({
182
- type: 'wrong_tool',
183
- description: 'Using bash find instead of Glob tool',
184
- suggestion: 'Use the Glob tool instead of bash find for consistent results',
185
- severity: 'low',
186
- affectedCalls: ['Bash'],
187
- });
188
- }
189
- if (command.startsWith('grep ') || command.includes('grep ')) {
190
- inefficiencies.push({
191
- type: 'wrong_tool',
192
- description: 'Using bash grep instead of Grep tool',
193
- suggestion: 'Use the Grep tool instead of bash grep for better output formatting',
194
- severity: 'low',
195
- affectedCalls: ['Bash'],
196
- });
197
- }
198
- }
199
- }
200
- }
201
- return inefficiencies;
202
- }
203
- /**
204
- * Update detected patterns from call history
205
- */
206
- updatePatterns() {
207
- // Detect common sequences (simplified - real implementation would use more sophisticated algorithms)
208
- const windowSize = 3;
209
- const sequences = new Map();
210
- for (let i = 0; i <= this.callHistory.length - windowSize; i++) {
211
- const window = this.callHistory.slice(i, i + windowSize);
212
- const sequence = window.map(c => c.name).join(' -> ');
213
- sequences.set(sequence, (sequences.get(sequence) || 0) + 1);
214
- }
215
- // Update patterns
216
- for (const [sequence, frequency] of sequences) {
217
- if (frequency >= 2) { // Pattern must occur at least twice
218
- const patternId = `pattern_${sequence.replace(/\s/g, '_')}`;
219
- this.detectedPatterns.set(patternId, {
220
- id: patternId,
221
- description: `Common workflow: ${sequence}`,
222
- sequence: sequence.split(' -> '),
223
- frequency,
224
- avgDuration: 0, // Would be calculated in real implementation
225
- successRate: 0, // Would be calculated in real implementation
226
- examples: [],
227
- });
228
- }
229
- }
230
- }
231
- /**
232
- * Get detected patterns sorted by frequency
233
- */
234
- getPatterns() {
235
- return Array.from(this.detectedPatterns.values())
236
- .sort((a, b) => b.frequency - a.frequency);
237
- }
238
- /**
239
- * Generate workflow suggestions based on patterns
240
- */
241
- generateSuggestions() {
242
- const suggestions = [];
243
- const patterns = this.getPatterns();
244
- // Suggest based on most common patterns
245
- if (patterns.length > 0) {
246
- const topPattern = patterns[0];
247
- if (topPattern) {
248
- suggestions.push(`Most common workflow: ${topPattern.description} (used ${topPattern.frequency}×)`);
249
- }
250
- }
251
- // Suggest based on inefficiencies
252
- const inefficiencies = this.detectInefficiencies();
253
- const highSeverity = inefficiencies.filter(i => i.severity === 'high');
254
- if (highSeverity.length > 0) {
255
- suggestions.push(`⚠️ ${highSeverity.length} high-priority inefficiencies detected`);
256
- suggestions.push(...highSeverity.map(i => ` → ${i.suggestion}`));
257
- }
258
- return suggestions;
259
- }
260
- /**
261
- * Clear all history and patterns
262
- */
263
- clear() {
264
- this.callHistory = [];
265
- this.detectedPatterns.clear();
266
- }
267
- }
268
- /**
269
- * Global singleton instance
270
- */
271
- export const toolPatternAnalyzer = new ToolPatternAnalyzer();
272
- //# sourceMappingURL=toolPatternAnalyzer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"toolPatternAnalyzer.js","sourceRoot":"","sources":["../../src/core/toolPatternAnalyzer.ts"],"names":[],"mappings":"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"}
@@ -1,21 +0,0 @@
1
- import type { ToolDefinition } from '../core/toolRuntime.js';
2
- /**
3
- * Creates background bash management tools
4
- *
5
- * Tools:
6
- * - Bash (with run_in_background): Start background processes
7
- * - BashOutput: Retrieve output from background shells
8
- * - KillShell: Terminate background shells
9
- *
10
- * @param _workingDir - The working directory for commands (reserved for future use)
11
- * @returns Array of tool definitions
12
- */
13
- export declare function createBackgroundBashTools(_workingDir: string): ToolDefinition[];
14
- /**
15
- * Start a background bash command
16
- *
17
- * This should be integrated into the main Bash tool with a run_in_background parameter.
18
- * For now, it's exported as a helper function.
19
- */
20
- export declare function startBackgroundShell(command: string, workingDir: string): string;
21
- //# sourceMappingURL=backgroundBashTools.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"backgroundBashTools.d.ts","sourceRoot":"","sources":["../../src/tools/backgroundBashTools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAuH7D;;;;;;;;;;GAUG;AACH,wBAAgB,yBAAyB,CAAC,WAAW,EAAE,MAAM,GAAG,cAAc,EAAE,CAuG/E;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAEhF"}
@@ -1,215 +0,0 @@
1
- import { spawn } from 'node:child_process';
2
- import { buildError } from '../core/errors.js';
3
- /**
4
- * Background Bash Shell Manager
5
- *
6
- * Manages long-running background bash shells with output buffering.
7
- */
8
- class BackgroundShellManager {
9
- shells = new Map();
10
- nextId = 1;
11
- createShell(command, workingDir) {
12
- const shellId = `shell_${this.nextId++}`;
13
- const shell = new BackgroundShell(shellId, command, workingDir);
14
- this.shells.set(shellId, shell);
15
- shell.start();
16
- return shellId;
17
- }
18
- getShell(shellId) {
19
- return this.shells.get(shellId);
20
- }
21
- killShell(shellId) {
22
- const shell = this.shells.get(shellId);
23
- if (shell) {
24
- shell.kill();
25
- this.shells.delete(shellId);
26
- return true;
27
- }
28
- return false;
29
- }
30
- listShells() {
31
- return Array.from(this.shells.keys());
32
- }
33
- }
34
- class BackgroundShell {
35
- id;
36
- command;
37
- _workingDir;
38
- process;
39
- outputBuffer = [];
40
- errorBuffer = [];
41
- lastReadPosition = 0;
42
- isRunning = false;
43
- exitCode;
44
- constructor(id, command, _workingDir) {
45
- this.id = id;
46
- this.command = command;
47
- this._workingDir = _workingDir;
48
- }
49
- start() {
50
- this.process = spawn('bash', ['-c', this.command], {
51
- cwd: this._workingDir,
52
- stdio: ['ignore', 'pipe', 'pipe'],
53
- });
54
- this.isRunning = true;
55
- this.process.stdout?.on('data', (data) => {
56
- this.outputBuffer.push(data.toString());
57
- });
58
- this.process.stderr?.on('data', (data) => {
59
- this.errorBuffer.push(data.toString());
60
- });
61
- this.process.on('exit', (code) => {
62
- this.exitCode = code ?? 0;
63
- this.isRunning = false;
64
- });
65
- }
66
- getNewOutput(filter) {
67
- const allOutput = this.outputBuffer.join('');
68
- const newOutput = allOutput.substring(this.lastReadPosition);
69
- this.lastReadPosition = allOutput.length;
70
- const allError = this.errorBuffer.join('');
71
- let stdout = newOutput;
72
- if (filter) {
73
- const lines = newOutput.split('\n');
74
- const filtered = lines.filter(line => filter.test(line));
75
- stdout = filtered.join('\n');
76
- }
77
- const status = this.isRunning
78
- ? 'running'
79
- : `exited with code ${this.exitCode}`;
80
- return {
81
- stdout,
82
- stderr: allError,
83
- status,
84
- };
85
- }
86
- kill() {
87
- if (this.process) {
88
- this.process.kill('SIGTERM');
89
- setTimeout(() => {
90
- if (this.process && !this.process.killed) {
91
- this.process.kill('SIGKILL');
92
- }
93
- }, 5000);
94
- }
95
- }
96
- getStatus() {
97
- return this.isRunning ? 'running' : `exited with code ${this.exitCode}`;
98
- }
99
- }
100
- // Global manager instance
101
- const shellManager = new BackgroundShellManager();
102
- /**
103
- * Creates background bash management tools
104
- *
105
- * Tools:
106
- * - Bash (with run_in_background): Start background processes
107
- * - BashOutput: Retrieve output from background shells
108
- * - KillShell: Terminate background shells
109
- *
110
- * @param _workingDir - The working directory for commands (reserved for future use)
111
- * @returns Array of tool definitions
112
- */
113
- export function createBackgroundBashTools(_workingDir) {
114
- return [
115
- {
116
- name: 'BashOutput',
117
- description: 'Retrieves output from a running or completed background bash shell. Always returns only new output since the last check.',
118
- parameters: {
119
- type: 'object',
120
- properties: {
121
- bash_id: {
122
- type: 'string',
123
- description: 'The ID of the background shell to retrieve output from',
124
- },
125
- filter: {
126
- type: 'string',
127
- description: 'Optional regular expression to filter the output lines. Only lines matching this regex will be included.',
128
- },
129
- },
130
- required: ['bash_id'],
131
- additionalProperties: false,
132
- },
133
- handler: async (args) => {
134
- const bashId = args['bash_id'];
135
- const filterStr = args['filter'];
136
- if (typeof bashId !== 'string' || !bashId.trim()) {
137
- return 'Error: bash_id must be a non-empty string.';
138
- }
139
- try {
140
- const shell = shellManager.getShell(bashId);
141
- if (!shell) {
142
- const available = shellManager.listShells();
143
- return `Error: Shell "${bashId}" not found.\n\nAvailable shells: ${available.length > 0 ? available.join(', ') : 'none'}`;
144
- }
145
- const filter = filterStr && typeof filterStr === 'string'
146
- ? new RegExp(filterStr)
147
- : undefined;
148
- const { stdout, stderr, status } = shell.getNewOutput(filter);
149
- const parts = [];
150
- parts.push(`Shell: ${bashId}`);
151
- parts.push(`Status: ${status}`);
152
- if (stdout) {
153
- parts.push('\n=== New Output ===');
154
- parts.push(stdout);
155
- }
156
- if (stderr) {
157
- parts.push('\n=== Errors ===');
158
- parts.push(stderr);
159
- }
160
- if (!stdout && !stderr) {
161
- parts.push('\n(No new output)');
162
- }
163
- return parts.join('\n');
164
- }
165
- catch (error) {
166
- return buildError('retrieving shell output', error, { bash_id: bashId });
167
- }
168
- },
169
- },
170
- {
171
- name: 'KillShell',
172
- description: 'Kills a running background bash shell by its ID. Returns success or failure status.',
173
- parameters: {
174
- type: 'object',
175
- properties: {
176
- shell_id: {
177
- type: 'string',
178
- description: 'The ID of the background shell to kill',
179
- },
180
- },
181
- required: ['shell_id'],
182
- additionalProperties: false,
183
- },
184
- handler: async (args) => {
185
- const shellId = args['shell_id'];
186
- if (typeof shellId !== 'string' || !shellId.trim()) {
187
- return 'Error: shell_id must be a non-empty string.';
188
- }
189
- try {
190
- const success = shellManager.killShell(shellId);
191
- if (success) {
192
- return `✓ Shell "${shellId}" has been terminated.`;
193
- }
194
- else {
195
- const available = shellManager.listShells();
196
- return `Error: Shell "${shellId}" not found.\n\nAvailable shells: ${available.length > 0 ? available.join(', ') : 'none'}`;
197
- }
198
- }
199
- catch (error) {
200
- return buildError('killing shell', error, { shell_id: shellId });
201
- }
202
- },
203
- },
204
- ];
205
- }
206
- /**
207
- * Start a background bash command
208
- *
209
- * This should be integrated into the main Bash tool with a run_in_background parameter.
210
- * For now, it's exported as a helper function.
211
- */
212
- export function startBackgroundShell(command, workingDir) {
213
- return shellManager.createShell(command, workingDir);
214
- }
215
- //# sourceMappingURL=backgroundBashTools.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"backgroundBashTools.js","sourceRoot":"","sources":["../../src/tools/backgroundBashTools.ts"],"names":[],"mappings":"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"}