erosolar-cli 2.0.4 → 2.1.1

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 (134) hide show
  1. package/agents/erosolar-security.rules.json +147 -0
  2. package/dist/capabilities/enhancedAnalysisCapability.d.ts +13 -0
  3. package/dist/capabilities/enhancedAnalysisCapability.d.ts.map +1 -0
  4. package/dist/capabilities/enhancedAnalysisCapability.js +20 -0
  5. package/dist/capabilities/enhancedAnalysisCapability.js.map +1 -0
  6. package/dist/capabilities/offsecOpsCapability.d.ts +6 -0
  7. package/dist/capabilities/offsecOpsCapability.d.ts.map +1 -0
  8. package/dist/capabilities/offsecOpsCapability.js +20 -0
  9. package/dist/capabilities/offsecOpsCapability.js.map +1 -0
  10. package/dist/capabilities/offsecSearchCapability.d.ts +12 -0
  11. package/dist/capabilities/offsecSearchCapability.d.ts.map +1 -0
  12. package/dist/capabilities/offsecSearchCapability.js +27 -0
  13. package/dist/capabilities/offsecSearchCapability.js.map +1 -0
  14. package/dist/capabilities/taoCapability.d.ts +6 -0
  15. package/dist/capabilities/taoCapability.d.ts.map +1 -0
  16. package/dist/capabilities/taoCapability.js +20 -0
  17. package/dist/capabilities/taoCapability.js.map +1 -0
  18. package/dist/capabilities/toolRegistry.d.ts +2 -1
  19. package/dist/capabilities/toolRegistry.d.ts.map +1 -1
  20. package/dist/capabilities/toolRegistry.js +6 -1
  21. package/dist/capabilities/toolRegistry.js.map +1 -1
  22. package/dist/contracts/agent-schemas.json +18 -19
  23. package/dist/contracts/tools.schema.json +38 -8
  24. package/dist/core/contextManager.d.ts +8 -2
  25. package/dist/core/contextManager.d.ts.map +1 -1
  26. package/dist/core/contextManager.js +15 -2
  27. package/dist/core/contextManager.js.map +1 -1
  28. package/dist/core/deepBugAnalyzer.d.ts +128 -0
  29. package/dist/core/deepBugAnalyzer.d.ts.map +1 -0
  30. package/dist/core/deepBugAnalyzer.js +406 -0
  31. package/dist/core/deepBugAnalyzer.js.map +1 -0
  32. package/dist/core/hypothesisEngine.d.ts +113 -0
  33. package/dist/core/hypothesisEngine.d.ts.map +1 -0
  34. package/dist/core/hypothesisEngine.js +264 -0
  35. package/dist/core/hypothesisEngine.js.map +1 -0
  36. package/dist/core/intelligentSummarizer.d.ts +79 -0
  37. package/dist/core/intelligentSummarizer.d.ts.map +1 -0
  38. package/dist/core/intelligentSummarizer.js +273 -0
  39. package/dist/core/intelligentSummarizer.js.map +1 -0
  40. package/dist/core/offsecAlphaZero.d.ts +3 -0
  41. package/dist/core/offsecAlphaZero.d.ts.map +1 -1
  42. package/dist/core/offsecAlphaZero.js +166 -5
  43. package/dist/core/offsecAlphaZero.js.map +1 -1
  44. package/dist/core/productTestHarness.d.ts +113 -0
  45. package/dist/core/productTestHarness.d.ts.map +1 -0
  46. package/dist/core/productTestHarness.js +345 -0
  47. package/dist/core/productTestHarness.js.map +1 -0
  48. package/dist/core/toolPatternAnalyzer.d.ts +87 -0
  49. package/dist/core/toolPatternAnalyzer.d.ts.map +1 -0
  50. package/dist/core/toolPatternAnalyzer.js +272 -0
  51. package/dist/core/toolPatternAnalyzer.js.map +1 -0
  52. package/dist/plugins/tools/enhancedAnalysis/enhancedAnalysisPlugin.d.ts +3 -0
  53. package/dist/plugins/tools/enhancedAnalysis/enhancedAnalysisPlugin.d.ts.map +1 -0
  54. package/dist/plugins/tools/enhancedAnalysis/enhancedAnalysisPlugin.js +14 -0
  55. package/dist/plugins/tools/enhancedAnalysis/enhancedAnalysisPlugin.js.map +1 -0
  56. package/dist/plugins/tools/enhancedCodeIntelligence/enhancedCodeIntelligencePlugin.d.ts +3 -0
  57. package/dist/plugins/tools/enhancedCodeIntelligence/enhancedCodeIntelligencePlugin.d.ts.map +1 -0
  58. package/dist/plugins/tools/enhancedCodeIntelligence/enhancedCodeIntelligencePlugin.js +12 -0
  59. package/dist/plugins/tools/enhancedCodeIntelligence/enhancedCodeIntelligencePlugin.js.map +1 -0
  60. package/dist/plugins/tools/enhancedDevWorkflow/enhancedDevWorkflowPlugin.d.ts +3 -0
  61. package/dist/plugins/tools/enhancedDevWorkflow/enhancedDevWorkflowPlugin.d.ts.map +1 -0
  62. package/dist/plugins/tools/enhancedDevWorkflow/enhancedDevWorkflowPlugin.js +12 -0
  63. package/dist/plugins/tools/enhancedDevWorkflow/enhancedDevWorkflowPlugin.js.map +1 -0
  64. package/dist/plugins/tools/nodeDefaults.d.ts.map +1 -1
  65. package/dist/plugins/tools/nodeDefaults.js +12 -0
  66. package/dist/plugins/tools/nodeDefaults.js.map +1 -1
  67. package/dist/plugins/tools/offsec/offsecOpsPlugin.d.ts +3 -0
  68. package/dist/plugins/tools/offsec/offsecOpsPlugin.d.ts.map +1 -0
  69. package/dist/plugins/tools/offsec/offsecOpsPlugin.js +10 -0
  70. package/dist/plugins/tools/offsec/offsecOpsPlugin.js.map +1 -0
  71. package/dist/plugins/tools/offsec/offsecSearchPlugin.d.ts +3 -0
  72. package/dist/plugins/tools/offsec/offsecSearchPlugin.d.ts.map +1 -0
  73. package/dist/plugins/tools/offsec/offsecSearchPlugin.js +12 -0
  74. package/dist/plugins/tools/offsec/offsecSearchPlugin.js.map +1 -0
  75. package/dist/plugins/tools/tao/taoPlugin.d.ts +3 -0
  76. package/dist/plugins/tools/tao/taoPlugin.d.ts.map +1 -0
  77. package/dist/plugins/tools/tao/taoPlugin.js +10 -0
  78. package/dist/plugins/tools/tao/taoPlugin.js.map +1 -0
  79. package/dist/shell/interactiveShell.d.ts +7 -0
  80. package/dist/shell/interactiveShell.d.ts.map +1 -1
  81. package/dist/shell/interactiveShell.js +70 -22
  82. package/dist/shell/interactiveShell.js.map +1 -1
  83. package/dist/shell/shellApp.js +1 -1
  84. package/dist/shell/shellApp.js.map +1 -1
  85. package/dist/shell/systemPrompt.d.ts.map +1 -1
  86. package/dist/shell/systemPrompt.js +3 -0
  87. package/dist/shell/systemPrompt.js.map +1 -1
  88. package/dist/tools/enhancedAnalysisTools.d.ts +9 -0
  89. package/dist/tools/enhancedAnalysisTools.d.ts.map +1 -0
  90. package/dist/tools/enhancedAnalysisTools.js +382 -0
  91. package/dist/tools/enhancedAnalysisTools.js.map +1 -0
  92. package/dist/tools/enhancedCodeIntelligenceTools.d.ts +1 -21
  93. package/dist/tools/enhancedCodeIntelligenceTools.d.ts.map +1 -1
  94. package/dist/tools/enhancedCodeIntelligenceTools.js +378 -256
  95. package/dist/tools/enhancedCodeIntelligenceTools.js.map +1 -1
  96. package/dist/tools/enhancedDevWorkflowTools.d.ts +2 -10
  97. package/dist/tools/enhancedDevWorkflowTools.d.ts.map +1 -1
  98. package/dist/tools/enhancedDevWorkflowTools.js +293 -165
  99. package/dist/tools/enhancedDevWorkflowTools.js.map +1 -1
  100. package/dist/tools/interactionTools.d.ts.map +1 -1
  101. package/dist/tools/interactionTools.js +55 -0
  102. package/dist/tools/interactionTools.js.map +1 -1
  103. package/dist/tools/offsec/offsecOperationsTools.d.ts +3 -0
  104. package/dist/tools/offsec/offsecOperationsTools.d.ts.map +1 -0
  105. package/dist/tools/offsec/offsecOperationsTools.js +333 -0
  106. package/dist/tools/offsec/offsecOperationsTools.js.map +1 -0
  107. package/dist/tools/offsecSearchTools.d.ts +3 -0
  108. package/dist/tools/offsecSearchTools.d.ts.map +1 -0
  109. package/dist/tools/offsecSearchTools.js +330 -0
  110. package/dist/tools/offsecSearchTools.js.map +1 -0
  111. package/dist/tools/taoOperations.d.ts +7 -0
  112. package/dist/tools/taoOperations.d.ts.map +1 -0
  113. package/dist/tools/taoOperations.js +744 -0
  114. package/dist/tools/taoOperations.js.map +1 -0
  115. package/dist/ui/PromptController.d.ts +5 -1
  116. package/dist/ui/PromptController.d.ts.map +1 -1
  117. package/dist/ui/PromptController.js +6 -0
  118. package/dist/ui/PromptController.js.map +1 -1
  119. package/dist/ui/ShellUIAdapter.d.ts +10 -6
  120. package/dist/ui/ShellUIAdapter.d.ts.map +1 -1
  121. package/dist/ui/ShellUIAdapter.js +68 -66
  122. package/dist/ui/ShellUIAdapter.js.map +1 -1
  123. package/dist/ui/UnifiedUIRenderer.d.ts +2 -0
  124. package/dist/ui/UnifiedUIRenderer.d.ts.map +1 -1
  125. package/dist/ui/UnifiedUIRenderer.js +22 -0
  126. package/dist/ui/UnifiedUIRenderer.js.map +1 -1
  127. package/dist/ui/globalWriteLock.d.ts.map +1 -1
  128. package/dist/ui/globalWriteLock.js +6 -0
  129. package/dist/ui/globalWriteLock.js.map +1 -1
  130. package/dist/ui/streamingFormatter.d.ts +11 -0
  131. package/dist/ui/streamingFormatter.d.ts.map +1 -1
  132. package/dist/ui/streamingFormatter.js +27 -1
  133. package/dist/ui/streamingFormatter.js.map +1 -1
  134. package/package.json +4 -13
@@ -0,0 +1,345 @@
1
+ /**
2
+ * Comprehensive Product Test Harness
3
+ *
4
+ * This module provides extensive testing capabilities similar to human product testing,
5
+ * including runtime creation, execution, and validation of code.
6
+ */
7
+ import { spawn } from 'node:child_process';
8
+ import { writeFileSync, readFileSync, mkdirSync, existsSync, rmSync } from 'node:fs';
9
+ import { join } from 'node:path';
10
+ import { tmpdir } from 'node:os';
11
+ /**
12
+ * Product Test Harness - Comprehensive testing like a human QA engineer
13
+ */
14
+ export class ProductTestHarness {
15
+ scenarios = [];
16
+ results = [];
17
+ /**
18
+ * Add a test scenario
19
+ */
20
+ addScenario(scenario) {
21
+ this.scenarios.push(scenario);
22
+ }
23
+ /**
24
+ * Add multiple scenarios
25
+ */
26
+ addScenarios(scenarios) {
27
+ this.scenarios.push(...scenarios);
28
+ }
29
+ /**
30
+ * Run all test scenarios
31
+ */
32
+ async runAll() {
33
+ this.results = [];
34
+ for (const scenario of this.scenarios) {
35
+ const result = await this.runScenario(scenario);
36
+ this.results.push(result);
37
+ }
38
+ const passed = this.results.filter(r => r.passed).length;
39
+ const failed = this.results.length - passed;
40
+ return {
41
+ passed,
42
+ failed,
43
+ total: this.results.length,
44
+ results: this.results,
45
+ summary: this.generateSummary(),
46
+ };
47
+ }
48
+ /**
49
+ * Run a single test scenario
50
+ */
51
+ async runScenario(scenario) {
52
+ const startTime = Date.now();
53
+ let result;
54
+ try {
55
+ // Setup
56
+ if (scenario.setup) {
57
+ await scenario.setup();
58
+ }
59
+ // Execute with timeout
60
+ const timeout = scenario.timeout ?? 30000; // 30s default
61
+ const executePromise = scenario.execute();
62
+ const timeoutPromise = new Promise((_, reject) => {
63
+ setTimeout(() => reject(new Error('Test timeout exceeded')), timeout);
64
+ });
65
+ result = await Promise.race([executePromise, timeoutPromise]);
66
+ }
67
+ catch (error) {
68
+ result = {
69
+ scenario: scenario.name,
70
+ passed: false,
71
+ duration: Date.now() - startTime,
72
+ output: '',
73
+ error: error instanceof Error ? error.message : String(error),
74
+ };
75
+ }
76
+ finally {
77
+ // Teardown
78
+ if (scenario.teardown) {
79
+ try {
80
+ await scenario.teardown();
81
+ }
82
+ catch (error) {
83
+ // Log teardown errors but don't fail the test
84
+ console.error(`Teardown error for ${scenario.name}:`, error);
85
+ }
86
+ }
87
+ }
88
+ return result;
89
+ }
90
+ /**
91
+ * Generate test summary
92
+ */
93
+ generateSummary() {
94
+ const passed = this.results.filter(r => r.passed).length;
95
+ const failed = this.results.length - passed;
96
+ const totalDuration = this.results.reduce((sum, r) => sum + r.duration, 0);
97
+ let summary = `\n${'='.repeat(60)}\n`;
98
+ summary += `TEST SUMMARY\n`;
99
+ summary += `${'='.repeat(60)}\n`;
100
+ summary += `Total Tests: ${this.results.length}\n`;
101
+ summary += `Passed: ${passed} ✓\n`;
102
+ summary += `Failed: ${failed} ✗\n`;
103
+ summary += `Success Rate: ${((passed / this.results.length) * 100).toFixed(1)}%\n`;
104
+ summary += `Total Duration: ${totalDuration}ms\n`;
105
+ summary += `${'='.repeat(60)}\n`;
106
+ if (failed > 0) {
107
+ summary += `\nFailed Tests:\n`;
108
+ this.results.filter(r => !r.passed).forEach(r => {
109
+ summary += ` ✗ ${r.scenario}\n`;
110
+ if (r.error) {
111
+ summary += ` Error: ${r.error}\n`;
112
+ }
113
+ });
114
+ }
115
+ return summary;
116
+ }
117
+ /**
118
+ * Clear all scenarios and results
119
+ */
120
+ clear() {
121
+ this.scenarios = [];
122
+ this.results = [];
123
+ }
124
+ }
125
+ /**
126
+ * Create an isolated runtime environment for testing
127
+ */
128
+ export function createRuntimeEnvironment(id) {
129
+ const envId = id ?? `test_${Date.now()}_${Math.random().toString(36).substring(7)}`;
130
+ const workDir = join(tmpdir(), 'erosolar-test-env', envId);
131
+ // Create work directory
132
+ if (!existsSync(workDir)) {
133
+ mkdirSync(workDir, { recursive: true });
134
+ }
135
+ const env = {
136
+ workDir,
137
+ cleanup: () => {
138
+ try {
139
+ if (existsSync(workDir)) {
140
+ rmSync(workDir, { recursive: true, force: true });
141
+ }
142
+ }
143
+ catch (error) {
144
+ console.error(`Failed to cleanup runtime environment ${envId}:`, error);
145
+ }
146
+ },
147
+ execute: async (code, language) => {
148
+ const startTime = Date.now();
149
+ // Prepare execution based on language
150
+ let command;
151
+ let args;
152
+ let scriptPath;
153
+ if (language === 'typescript') {
154
+ // For TypeScript, write to file and use ts-node
155
+ scriptPath = join(workDir, 'script.ts');
156
+ writeFileSync(scriptPath, code);
157
+ command = 'npx';
158
+ args = ['ts-node', scriptPath];
159
+ }
160
+ else if (language === 'node') {
161
+ scriptPath = join(workDir, 'script.js');
162
+ writeFileSync(scriptPath, code);
163
+ command = 'node';
164
+ args = [scriptPath];
165
+ }
166
+ else {
167
+ // bash
168
+ scriptPath = join(workDir, 'script.sh');
169
+ writeFileSync(scriptPath, code);
170
+ command = 'bash';
171
+ args = [scriptPath];
172
+ }
173
+ return new Promise((resolve) => {
174
+ let stdout = '';
175
+ let stderr = '';
176
+ const proc = spawn(command, args, {
177
+ cwd: workDir,
178
+ env: { ...process.env },
179
+ });
180
+ proc.stdout?.on('data', (data) => {
181
+ stdout += data.toString();
182
+ });
183
+ proc.stderr?.on('data', (data) => {
184
+ stderr += data.toString();
185
+ });
186
+ proc.on('error', (error) => {
187
+ resolve({
188
+ stdout,
189
+ stderr,
190
+ exitCode: 1,
191
+ duration: Date.now() - startTime,
192
+ error,
193
+ });
194
+ });
195
+ proc.on('close', (exitCode) => {
196
+ resolve({
197
+ stdout,
198
+ stderr,
199
+ exitCode: exitCode ?? 0,
200
+ duration: Date.now() - startTime,
201
+ });
202
+ });
203
+ });
204
+ },
205
+ writeFile: (path, content) => {
206
+ const fullPath = join(workDir, path);
207
+ const dir = join(fullPath, '..');
208
+ if (!existsSync(dir)) {
209
+ mkdirSync(dir, { recursive: true });
210
+ }
211
+ writeFileSync(fullPath, content);
212
+ },
213
+ readFile: (path) => {
214
+ const fullPath = join(workDir, path);
215
+ return readFileSync(fullPath, 'utf-8');
216
+ },
217
+ fileExists: (path) => {
218
+ const fullPath = join(workDir, path);
219
+ return existsSync(fullPath);
220
+ },
221
+ };
222
+ return env;
223
+ }
224
+ /**
225
+ * Common test scenarios generator
226
+ */
227
+ export class TestScenarioGenerator {
228
+ /**
229
+ * Generate basic functionality tests
230
+ */
231
+ static generateBasicTests(functionName, testCases) {
232
+ return testCases.map((testCase, index) => ({
233
+ name: `${functionName}_test_${index + 1}`,
234
+ description: testCase.description,
235
+ execute: async () => {
236
+ const passed = testCase.input === testCase.expected;
237
+ return {
238
+ scenario: testCase.description,
239
+ passed,
240
+ duration: 0,
241
+ output: `Expected: ${testCase.expected}, Got: ${testCase.input}`,
242
+ metrics: {
243
+ assertions: [{
244
+ name: 'equality_check',
245
+ passed,
246
+ expected: testCase.expected,
247
+ actual: testCase.input,
248
+ }],
249
+ },
250
+ };
251
+ },
252
+ }));
253
+ }
254
+ /**
255
+ * Generate edge case tests
256
+ */
257
+ static generateEdgeCaseTests(functionCode) {
258
+ const scenarios = [];
259
+ // Test with null/undefined
260
+ scenarios.push({
261
+ name: 'null_input_test',
262
+ description: 'Test function behavior with null input',
263
+ execute: async () => {
264
+ const env = createRuntimeEnvironment();
265
+ try {
266
+ const testCode = `
267
+ ${functionCode}
268
+ const result = testFunction(null);
269
+ console.log(JSON.stringify(result));
270
+ `;
271
+ const result = await env.execute(testCode, 'node');
272
+ return {
273
+ scenario: 'null_input_test',
274
+ passed: result.exitCode === 0,
275
+ duration: result.duration,
276
+ output: result.stdout,
277
+ error: result.stderr,
278
+ };
279
+ }
280
+ finally {
281
+ env.cleanup();
282
+ }
283
+ },
284
+ });
285
+ // Test with empty values
286
+ scenarios.push({
287
+ name: 'empty_input_test',
288
+ description: 'Test function behavior with empty input',
289
+ execute: async () => {
290
+ const env = createRuntimeEnvironment();
291
+ try {
292
+ const testCode = `
293
+ ${functionCode}
294
+ const result = testFunction('');
295
+ console.log(JSON.stringify(result));
296
+ `;
297
+ const result = await env.execute(testCode, 'node');
298
+ return {
299
+ scenario: 'empty_input_test',
300
+ passed: result.exitCode === 0,
301
+ duration: result.duration,
302
+ output: result.stdout,
303
+ error: result.stderr,
304
+ };
305
+ }
306
+ finally {
307
+ env.cleanup();
308
+ }
309
+ },
310
+ });
311
+ return scenarios;
312
+ }
313
+ /**
314
+ * Generate performance tests
315
+ */
316
+ static generatePerformanceTest(name, code, maxDurationMs) {
317
+ return {
318
+ name: `${name}_performance`,
319
+ description: `Performance test: should complete within ${maxDurationMs}ms`,
320
+ execute: async () => {
321
+ const env = createRuntimeEnvironment();
322
+ try {
323
+ const result = await env.execute(code, 'node');
324
+ const passed = result.duration < maxDurationMs && result.exitCode === 0;
325
+ return {
326
+ scenario: `${name}_performance`,
327
+ passed,
328
+ duration: result.duration,
329
+ output: result.stdout,
330
+ error: passed ? undefined : `Exceeded ${maxDurationMs}ms (took ${result.duration}ms)`,
331
+ metrics: {
332
+ cpuTime: result.duration,
333
+ exitCode: result.exitCode,
334
+ },
335
+ };
336
+ }
337
+ finally {
338
+ env.cleanup();
339
+ }
340
+ },
341
+ timeout: maxDurationMs * 2,
342
+ };
343
+ }
344
+ }
345
+ //# sourceMappingURL=productTestHarness.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"productTestHarness.js","sourceRoot":"","sources":["../../src/core/productTestHarness.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,87 @@
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
@@ -0,0 +1 @@
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"}