erosolar-cli 2.1.168 → 2.1.169
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.
- package/README.md +1 -1
- package/agents/erosolar-code.rules.json +2 -2
- package/agents/general.rules.json +21 -3
- package/dist/capabilities/statusCapability.js +2 -2
- package/dist/capabilities/statusCapability.js.map +1 -1
- package/dist/contracts/agent-schemas.json +5 -5
- package/dist/core/agent.d.ts +70 -24
- package/dist/core/agent.d.ts.map +1 -1
- package/dist/core/agent.js +424 -248
- package/dist/core/agent.js.map +1 -1
- package/dist/core/preferences.d.ts +1 -0
- package/dist/core/preferences.d.ts.map +1 -1
- package/dist/core/preferences.js +8 -1
- package/dist/core/preferences.js.map +1 -1
- package/dist/core/reliabilityPrompt.d.ts +9 -0
- package/dist/core/reliabilityPrompt.d.ts.map +1 -0
- package/dist/core/reliabilityPrompt.js +31 -0
- package/dist/core/reliabilityPrompt.js.map +1 -0
- package/dist/core/schemaValidator.js +3 -3
- package/dist/core/schemaValidator.js.map +1 -1
- package/dist/core/toolPreconditions.d.ts +0 -11
- package/dist/core/toolPreconditions.d.ts.map +1 -1
- package/dist/core/toolPreconditions.js +33 -164
- package/dist/core/toolPreconditions.js.map +1 -1
- package/dist/core/toolRuntime.d.ts.map +1 -1
- package/dist/core/toolRuntime.js +9 -114
- package/dist/core/toolRuntime.js.map +1 -1
- package/dist/core/updateChecker.d.ts +61 -1
- package/dist/core/updateChecker.d.ts.map +1 -1
- package/dist/core/updateChecker.js +147 -3
- package/dist/core/updateChecker.js.map +1 -1
- package/dist/headless/headlessApp.d.ts.map +1 -1
- package/dist/headless/headlessApp.js +0 -39
- package/dist/headless/headlessApp.js.map +1 -1
- package/dist/plugins/tools/nodeDefaults.d.ts.map +1 -1
- package/dist/plugins/tools/nodeDefaults.js +0 -2
- package/dist/plugins/tools/nodeDefaults.js.map +1 -1
- package/dist/providers/openaiResponsesProvider.d.ts.map +1 -1
- package/dist/providers/openaiResponsesProvider.js +79 -74
- package/dist/providers/openaiResponsesProvider.js.map +1 -1
- package/dist/runtime/agentController.d.ts.map +1 -1
- package/dist/runtime/agentController.js +6 -3
- package/dist/runtime/agentController.js.map +1 -1
- package/dist/runtime/agentSession.d.ts +0 -2
- package/dist/runtime/agentSession.d.ts.map +1 -1
- package/dist/runtime/agentSession.js +2 -2
- package/dist/runtime/agentSession.js.map +1 -1
- package/dist/shell/interactiveShell.d.ts +11 -12
- package/dist/shell/interactiveShell.d.ts.map +1 -1
- package/dist/shell/interactiveShell.js +269 -193
- package/dist/shell/interactiveShell.js.map +1 -1
- package/dist/shell/systemPrompt.d.ts.map +1 -1
- package/dist/shell/systemPrompt.js +4 -15
- package/dist/shell/systemPrompt.js.map +1 -1
- package/dist/subagents/taskRunner.js +2 -1
- package/dist/subagents/taskRunner.js.map +1 -1
- package/dist/tools/bashTools.d.ts.map +1 -1
- package/dist/tools/bashTools.js +101 -8
- package/dist/tools/bashTools.js.map +1 -1
- package/dist/tools/diffUtils.d.ts +8 -2
- package/dist/tools/diffUtils.d.ts.map +1 -1
- package/dist/tools/diffUtils.js +72 -13
- package/dist/tools/diffUtils.js.map +1 -1
- package/dist/tools/grepTools.d.ts.map +1 -1
- package/dist/tools/grepTools.js +10 -2
- package/dist/tools/grepTools.js.map +1 -1
- package/dist/tools/searchTools.d.ts.map +1 -1
- package/dist/tools/searchTools.js +4 -2
- package/dist/tools/searchTools.js.map +1 -1
- package/dist/ui/PromptController.d.ts +2 -3
- package/dist/ui/PromptController.d.ts.map +1 -1
- package/dist/ui/PromptController.js +2 -3
- package/dist/ui/PromptController.js.map +1 -1
- package/dist/ui/ShellUIAdapter.d.ts +71 -18
- package/dist/ui/ShellUIAdapter.d.ts.map +1 -1
- package/dist/ui/ShellUIAdapter.js +237 -139
- package/dist/ui/ShellUIAdapter.js.map +1 -1
- package/dist/ui/UnifiedUIController.d.ts +0 -1
- package/dist/ui/UnifiedUIController.d.ts.map +1 -1
- package/dist/ui/UnifiedUIController.js +0 -1
- package/dist/ui/UnifiedUIController.js.map +1 -1
- package/dist/ui/UnifiedUIRenderer.d.ts +122 -7
- package/dist/ui/UnifiedUIRenderer.d.ts.map +1 -1
- package/dist/ui/UnifiedUIRenderer.js +823 -130
- package/dist/ui/UnifiedUIRenderer.js.map +1 -1
- package/dist/ui/animatedStatus.d.ts +129 -0
- package/dist/ui/animatedStatus.d.ts.map +1 -0
- package/dist/ui/animatedStatus.js +384 -0
- package/dist/ui/animatedStatus.js.map +1 -0
- package/dist/ui/display.d.ts +13 -48
- package/dist/ui/display.d.ts.map +1 -1
- package/dist/ui/display.js +22 -105
- package/dist/ui/display.js.map +1 -1
- package/dist/ui/shortcutsHelp.d.ts.map +1 -1
- package/dist/ui/shortcutsHelp.js +0 -1
- package/dist/ui/shortcutsHelp.js.map +1 -1
- package/dist/ui/unified/index.d.ts +1 -1
- package/dist/ui/unified/index.d.ts.map +1 -1
- package/dist/ui/unified/index.js +0 -2
- package/dist/ui/unified/index.js.map +1 -1
- package/package.json +1 -2
- package/dist/StringUtils.d.ts +0 -8
- package/dist/StringUtils.d.ts.map +0 -1
- package/dist/StringUtils.js +0 -11
- package/dist/StringUtils.js.map +0 -1
- package/dist/core/aiFlowSupervisor.d.ts +0 -44
- package/dist/core/aiFlowSupervisor.d.ts.map +0 -1
- package/dist/core/aiFlowSupervisor.js +0 -299
- package/dist/core/aiFlowSupervisor.js.map +0 -1
- package/dist/core/cliTestHarness.d.ts +0 -200
- package/dist/core/cliTestHarness.d.ts.map +0 -1
- package/dist/core/cliTestHarness.js +0 -549
- package/dist/core/cliTestHarness.js.map +0 -1
- package/dist/core/testUtils.d.ts +0 -121
- package/dist/core/testUtils.d.ts.map +0 -1
- package/dist/core/testUtils.js +0 -235
- package/dist/core/testUtils.js.map +0 -1
- package/dist/core/toolValidation.d.ts +0 -116
- package/dist/core/toolValidation.d.ts.map +0 -1
- package/dist/core/toolValidation.js +0 -282
- package/dist/core/toolValidation.js.map +0 -1
- package/dist/ui/compactRenderer.d.ts +0 -139
- package/dist/ui/compactRenderer.d.ts.map +0 -1
- package/dist/ui/compactRenderer.js +0 -398
- package/dist/ui/compactRenderer.js.map +0 -1
- package/dist/ui/streamingFormatter.d.ts +0 -30
- package/dist/ui/streamingFormatter.d.ts.map +0 -1
- package/dist/ui/streamingFormatter.js +0 -91
- package/dist/ui/streamingFormatter.js.map +0 -1
- package/dist/utils/errorUtils.d.ts +0 -16
- package/dist/utils/errorUtils.d.ts.map +0 -1
- package/dist/utils/errorUtils.js +0 -66
- package/dist/utils/errorUtils.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"testUtils.d.ts","sourceRoot":"","sources":["../../src/core/testUtils.ts"],"names":[],"mappings":"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"}
|
package/dist/core/testUtils.js
DELETED
|
@@ -1,235 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Comprehensive test utilities for tool validation and AI flow testing
|
|
3
|
-
* Provides type-safe testing patterns for erosolar-cli software engineering
|
|
4
|
-
*/
|
|
5
|
-
import { validateToolArguments, ToolArgumentValidationError } from './schemaValidator.js';
|
|
6
|
-
import { validateToolPreconditions, validateAIFlowPatterns } from './toolPreconditions.js';
|
|
7
|
-
/**
|
|
8
|
-
* Test utilities for tool validation and AI flow testing
|
|
9
|
-
*/
|
|
10
|
-
export var ToolTestUtils;
|
|
11
|
-
(function (ToolTestUtils) {
|
|
12
|
-
/**
|
|
13
|
-
* Creates a mock tool call for testing
|
|
14
|
-
*/
|
|
15
|
-
function createMockToolCall(name, args = {}) {
|
|
16
|
-
return {
|
|
17
|
-
id: `test-${Date.now()}-${Math.random().toString(36).substring(2)}`,
|
|
18
|
-
name,
|
|
19
|
-
arguments: args
|
|
20
|
-
};
|
|
21
|
-
}
|
|
22
|
-
ToolTestUtils.createMockToolCall = createMockToolCall;
|
|
23
|
-
/**
|
|
24
|
-
* Creates a mock successful tool response
|
|
25
|
-
*/
|
|
26
|
-
function createMockSuccessResponse(content, metadata) {
|
|
27
|
-
return {
|
|
28
|
-
type: 'success',
|
|
29
|
-
content,
|
|
30
|
-
metadata: {
|
|
31
|
-
timestamp: Date.now(),
|
|
32
|
-
toolName: 'test-tool',
|
|
33
|
-
...metadata
|
|
34
|
-
}
|
|
35
|
-
};
|
|
36
|
-
}
|
|
37
|
-
ToolTestUtils.createMockSuccessResponse = createMockSuccessResponse;
|
|
38
|
-
/**
|
|
39
|
-
* Creates a mock error tool response
|
|
40
|
-
*/
|
|
41
|
-
function createMockErrorResponse(code, message, recoverable = false) {
|
|
42
|
-
return {
|
|
43
|
-
type: 'error',
|
|
44
|
-
error: {
|
|
45
|
-
code,
|
|
46
|
-
message,
|
|
47
|
-
recoverable,
|
|
48
|
-
toolName: 'test-tool'
|
|
49
|
-
}
|
|
50
|
-
};
|
|
51
|
-
}
|
|
52
|
-
ToolTestUtils.createMockErrorResponse = createMockErrorResponse;
|
|
53
|
-
/**
|
|
54
|
-
* Creates a mock warning tool response
|
|
55
|
-
*/
|
|
56
|
-
function createMockWarningResponse(content, warnings) {
|
|
57
|
-
return {
|
|
58
|
-
type: 'warning',
|
|
59
|
-
content,
|
|
60
|
-
warnings
|
|
61
|
-
};
|
|
62
|
-
}
|
|
63
|
-
ToolTestUtils.createMockWarningResponse = createMockWarningResponse;
|
|
64
|
-
/**
|
|
65
|
-
* Validates tool arguments against schema with detailed error reporting
|
|
66
|
-
*/
|
|
67
|
-
function validateToolArgs(toolName, schema, args) {
|
|
68
|
-
try {
|
|
69
|
-
validateToolArguments(toolName, schema, args);
|
|
70
|
-
return { ok: true, value: undefined };
|
|
71
|
-
}
|
|
72
|
-
catch (error) {
|
|
73
|
-
if (error instanceof ToolArgumentValidationError) {
|
|
74
|
-
return { ok: false, error: [...error.issues] };
|
|
75
|
-
}
|
|
76
|
-
return { ok: false, error: [String(error)] };
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
ToolTestUtils.validateToolArgs = validateToolArgs;
|
|
80
|
-
/**
|
|
81
|
-
* Tests AI flow patterns with tool history simulation
|
|
82
|
-
*/
|
|
83
|
-
function testAIFlowPatterns(toolName, args, toolHistory) {
|
|
84
|
-
return {
|
|
85
|
-
preflightWarnings: validateToolPreconditions(toolName, args),
|
|
86
|
-
aiFlowWarnings: validateAIFlowPatterns(toolName, args, toolHistory)
|
|
87
|
-
};
|
|
88
|
-
}
|
|
89
|
-
ToolTestUtils.testAIFlowPatterns = testAIFlowPatterns;
|
|
90
|
-
/**
|
|
91
|
-
* Type-safe assertion for tool responses
|
|
92
|
-
*/
|
|
93
|
-
function assertToolSuccess(response) {
|
|
94
|
-
if (response.type !== 'success') {
|
|
95
|
-
throw new Error(`Expected success response, got ${response.type}`);
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
ToolTestUtils.assertToolSuccess = assertToolSuccess;
|
|
99
|
-
/**
|
|
100
|
-
* Type-safe assertion for tool errors
|
|
101
|
-
*/
|
|
102
|
-
function assertToolError(response) {
|
|
103
|
-
if (response.type !== 'error') {
|
|
104
|
-
throw new Error(`Expected error response, got ${response.type}`);
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
ToolTestUtils.assertToolError = assertToolError;
|
|
108
|
-
/**
|
|
109
|
-
* Type-safe assertion for tool warnings
|
|
110
|
-
*/
|
|
111
|
-
function assertToolWarning(response) {
|
|
112
|
-
if (response.type !== 'warning') {
|
|
113
|
-
throw new Error(`Expected warning response, got ${response.type}`);
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
ToolTestUtils.assertToolWarning = assertToolWarning;
|
|
117
|
-
/**
|
|
118
|
-
* Creates a test suite for tool validation
|
|
119
|
-
*/
|
|
120
|
-
function createToolTestSuite(toolName, schema) {
|
|
121
|
-
return {
|
|
122
|
-
/**
|
|
123
|
-
* Test valid arguments
|
|
124
|
-
*/
|
|
125
|
-
testValidArgs(args) {
|
|
126
|
-
const result = validateToolArgs(toolName, schema, args);
|
|
127
|
-
if (!result.ok) {
|
|
128
|
-
throw new Error(`Expected valid arguments: ${result.error.join(', ')}`);
|
|
129
|
-
}
|
|
130
|
-
},
|
|
131
|
-
/**
|
|
132
|
-
* Test invalid arguments
|
|
133
|
-
*/
|
|
134
|
-
testInvalidArgs(args, expectedErrors) {
|
|
135
|
-
const result = validateToolArgs(toolName, schema, args);
|
|
136
|
-
if (result.ok) {
|
|
137
|
-
throw new Error('Expected invalid arguments');
|
|
138
|
-
}
|
|
139
|
-
const missingErrors = expectedErrors.filter(expected => !result.error.some(actual => actual.includes(expected)));
|
|
140
|
-
if (missingErrors.length > 0) {
|
|
141
|
-
throw new Error(`Missing expected errors: ${missingErrors.join(', ')}`);
|
|
142
|
-
}
|
|
143
|
-
},
|
|
144
|
-
/**
|
|
145
|
-
* Test required arguments
|
|
146
|
-
*/
|
|
147
|
-
testRequiredArgs(requiredArgs) {
|
|
148
|
-
for (const arg of requiredArgs) {
|
|
149
|
-
const result = validateToolArgs(toolName, schema, {});
|
|
150
|
-
if (result.ok || !result.error.some(e => e.includes(arg))) {
|
|
151
|
-
throw new Error(`Expected missing required argument: ${arg}`);
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
};
|
|
156
|
-
}
|
|
157
|
-
ToolTestUtils.createToolTestSuite = createToolTestSuite;
|
|
158
|
-
/**
|
|
159
|
-
* Performance testing utilities
|
|
160
|
-
*/
|
|
161
|
-
let Performance;
|
|
162
|
-
(function (Performance) {
|
|
163
|
-
/**
|
|
164
|
-
* Measures tool execution time
|
|
165
|
-
*/
|
|
166
|
-
async function measureExecutionTime(fn) {
|
|
167
|
-
const start = performance.now();
|
|
168
|
-
const result = await fn();
|
|
169
|
-
const executionTime = performance.now() - start;
|
|
170
|
-
return { result, executionTime };
|
|
171
|
-
}
|
|
172
|
-
Performance.measureExecutionTime = measureExecutionTime;
|
|
173
|
-
/**
|
|
174
|
-
* Runs performance benchmark
|
|
175
|
-
*/
|
|
176
|
-
async function benchmark(fn, iterations = 100) {
|
|
177
|
-
const times = [];
|
|
178
|
-
for (let i = 0; i < iterations; i++) {
|
|
179
|
-
const start = performance.now();
|
|
180
|
-
await fn();
|
|
181
|
-
const end = performance.now();
|
|
182
|
-
times.push(end - start);
|
|
183
|
-
}
|
|
184
|
-
const totalTime = times.reduce((sum, time) => sum + time, 0);
|
|
185
|
-
const averageTime = totalTime / iterations;
|
|
186
|
-
const minTime = Math.min(...times);
|
|
187
|
-
const maxTime = Math.max(...times);
|
|
188
|
-
return { averageTime, minTime, maxTime, totalTime };
|
|
189
|
-
}
|
|
190
|
-
Performance.benchmark = benchmark;
|
|
191
|
-
})(Performance = ToolTestUtils.Performance || (ToolTestUtils.Performance = {}));
|
|
192
|
-
/**
|
|
193
|
-
* AI flow testing utilities
|
|
194
|
-
*/
|
|
195
|
-
let AIFlow;
|
|
196
|
-
(function (AIFlow) {
|
|
197
|
-
/**
|
|
198
|
-
* Simulates a complete AI flow with tool history
|
|
199
|
-
*/
|
|
200
|
-
function simulateAIFlow(flow) {
|
|
201
|
-
const toolHistory = [];
|
|
202
|
-
const results = [];
|
|
203
|
-
for (const step of flow) {
|
|
204
|
-
const warnings = validateAIFlowPatterns(step.toolName, step.args, toolHistory);
|
|
205
|
-
results.push({
|
|
206
|
-
toolName: step.toolName,
|
|
207
|
-
args: step.args,
|
|
208
|
-
warnings
|
|
209
|
-
});
|
|
210
|
-
// Add to history for next iteration
|
|
211
|
-
toolHistory.push({
|
|
212
|
-
toolName: step.toolName,
|
|
213
|
-
args: step.args,
|
|
214
|
-
timestamp: Date.now()
|
|
215
|
-
});
|
|
216
|
-
}
|
|
217
|
-
return results;
|
|
218
|
-
}
|
|
219
|
-
AIFlow.simulateAIFlow = simulateAIFlow;
|
|
220
|
-
/**
|
|
221
|
-
* Tests for common AI flow anti-patterns
|
|
222
|
-
*/
|
|
223
|
-
function detectAntiPatterns(flow) {
|
|
224
|
-
const toolNames = flow.map(step => step.toolName);
|
|
225
|
-
return {
|
|
226
|
-
sequentialReads: toolNames.filter(name => name.includes('read') || name.includes('Read')).length > 1,
|
|
227
|
-
editWithoutRead: toolNames.includes('Edit') && !toolNames.some(name => name.includes('read') || name.includes('Read')),
|
|
228
|
-
multipleValidations: toolNames.filter(name => name.includes('test') || name.includes('validate') || name.includes('check')).length > 1,
|
|
229
|
-
inefficientGitOps: toolNames.filter(name => name.includes('git') || name.includes('Git')).length > 2
|
|
230
|
-
};
|
|
231
|
-
}
|
|
232
|
-
AIFlow.detectAntiPatterns = detectAntiPatterns;
|
|
233
|
-
})(AIFlow = ToolTestUtils.AIFlow || (ToolTestUtils.AIFlow = {}));
|
|
234
|
-
})(ToolTestUtils || (ToolTestUtils = {}));
|
|
235
|
-
//# sourceMappingURL=testUtils.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"testUtils.js","sourceRoot":"","sources":["../../src/core/testUtils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAWH,OAAO,EAAE,qBAAqB,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AAC1F,OAAO,EAAE,yBAAyB,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAE3F;;GAEG;AACH,MAAM,KAAW,aAAa,CAyS7B;AAzSD,WAAiB,aAAa;IAC5B;;OAEG;IACH,SAAgB,kBAAkB,CAChC,IAAY,EACZ,OAAgC,EAAE;QAElC,OAAO;YACL,EAAE,EAAE,QAAQ,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;YACnE,IAAI;YACJ,SAAS,EAAE,IAAI;SAChB,CAAC;IACJ,CAAC;IATe,gCAAkB,qBASjC,CAAA;IAED;;OAEG;IACH,SAAgB,yBAAyB,CACvC,OAAe,EACf,QAA0C;QAE1C,OAAO;YACL,IAAI,EAAE,SAAS;YACf,OAAO;YACP,QAAQ,EAAE;gBACR,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;gBACrB,QAAQ,EAAE,WAAW;gBACrB,GAAG,QAAQ;aACZ;SACF,CAAC;IACJ,CAAC;IAbe,uCAAyB,4BAaxC,CAAA;IAED;;OAEG;IACH,SAAgB,uBAAuB,CACrC,IAAY,EACZ,OAAe,EACf,WAAW,GAAG,KAAK;QAEnB,OAAO;YACL,IAAI,EAAE,OAAO;YACb,KAAK,EAAE;gBACL,IAAI;gBACJ,OAAO;gBACP,WAAW;gBACX,QAAQ,EAAE,WAAW;aACtB;SACF,CAAC;IACJ,CAAC;IAde,qCAAuB,0BActC,CAAA;IAED;;OAEG;IACH,SAAgB,yBAAyB,CACvC,OAAe,EACf,QAAyC;QAEzC,OAAO;YACL,IAAI,EAAE,SAAS;YACf,OAAO;YACP,QAAQ;SACT,CAAC;IACJ,CAAC;IATe,uCAAyB,4BASxC,CAAA;IAED;;OAEG;IACH,SAAgB,gBAAgB,CAC9B,QAAgB,EAChB,MAAoC,EACpC,IAA6B;QAE7B,IAAI,CAAC;YACH,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;YAC9C,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;QACxC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,2BAA2B,EAAE,CAAC;gBACjD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;YACjD,CAAC;YACD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QAC/C,CAAC;IACH,CAAC;IAde,8BAAgB,mBAc/B,CAAA;IAED;;OAEG;IACH,SAAgB,kBAAkB,CAChC,QAAgB,EAChB,IAA6B,EAC7B,WAA0F;QAK1F,OAAO;YACL,iBAAiB,EAAE,yBAAyB,CAAC,QAAQ,EAAE,IAAI,CAAC;YAC5D,cAAc,EAAE,sBAAsB,CAAC,QAAQ,EAAE,IAAI,EAAE,WAAW,CAAC;SACpE,CAAC;IACJ,CAAC;IAZe,gCAAkB,qBAYjC,CAAA;IAED;;OAEG;IACH,SAAgB,iBAAiB,CAC/B,QAAsB;QAEtB,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAChC,MAAM,IAAI,KAAK,CAAC,kCAAkC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;QACrE,CAAC;IACH,CAAC;IANe,+BAAiB,oBAMhC,CAAA;IAED;;OAEG;IACH,SAAgB,eAAe,CAC7B,QAAsB;QAEtB,IAAI,QAAQ,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,gCAAgC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IANe,6BAAe,kBAM9B,CAAA;IAED;;OAEG;IACH,SAAgB,iBAAiB,CAC/B,QAAsB;QAEtB,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAChC,MAAM,IAAI,KAAK,CAAC,kCAAkC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;QACrE,CAAC;IACH,CAAC;IANe,+BAAiB,oBAMhC,CAAA;IAED;;OAEG;IACH,SAAgB,mBAAmB,CACjC,QAAgB,EAChB,MAAoC;QAEpC,OAAO;YACL;;eAEG;YACH,aAAa,CAAC,IAA6B;gBACzC,MAAM,MAAM,GAAG,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;gBACxD,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;oBACf,MAAM,IAAI,KAAK,CAAC,6BAA6B,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC1E,CAAC;YACH,CAAC;YAED;;eAEG;YACH,eAAe,CAAC,IAA6B,EAAE,cAAwB;gBACrE,MAAM,MAAM,GAAG,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;gBACxD,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;oBACd,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;gBAChD,CAAC;gBAED,MAAM,aAAa,GAAG,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CACrD,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CACxD,CAAC;gBAEF,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC7B,MAAM,IAAI,KAAK,CAAC,4BAA4B,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC1E,CAAC;YACH,CAAC;YAED;;eAEG;YACH,gBAAgB,CAAC,YAAsB;gBACrC,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;oBAC/B,MAAM,MAAM,GAAG,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;oBACtD,IAAI,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;wBAC1D,MAAM,IAAI,KAAK,CAAC,uCAAuC,GAAG,EAAE,CAAC,CAAC;oBAChE,CAAC;gBACH,CAAC;YACH,CAAC;SACF,CAAC;IACJ,CAAC;IA7Ce,iCAAmB,sBA6ClC,CAAA;IAED;;OAEG;IACH,IAAiB,WAAW,CAyC3B;IAzCD,WAAiB,WAAW;QAC1B;;WAEG;QACI,KAAK,UAAU,oBAAoB,CACxC,EAAwB;YAExB,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;YAChC,MAAM,MAAM,GAAG,MAAM,EAAE,EAAE,CAAC;YAC1B,MAAM,aAAa,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;YAChD,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;QACnC,CAAC;QAPqB,gCAAoB,uBAOzC,CAAA;QAED;;WAEG;QACI,KAAK,UAAU,SAAS,CAC7B,EAAoC,EACpC,UAAU,GAAG,GAAG;YAOhB,MAAM,KAAK,GAAa,EAAE,CAAC;YAE3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;gBACpC,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;gBAChC,MAAM,EAAE,EAAE,CAAC;gBACX,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;gBAC9B,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC;YAC1B,CAAC;YAED,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;YAC7D,MAAM,WAAW,GAAG,SAAS,GAAG,UAAU,CAAC;YAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;YACnC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;YAEnC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;QACtD,CAAC;QAxBqB,qBAAS,YAwB9B,CAAA;IACH,CAAC,EAzCgB,WAAW,GAAX,yBAAW,KAAX,yBAAW,QAyC3B;IAED;;OAEG;IACH,IAAiB,MAAM,CA8DtB;IA9DD,WAAiB,MAAM;QACrB;;WAEG;QACH,SAAgB,cAAc,CAC5B,IAAgE;YAMhE,MAAM,WAAW,GAAkF,EAAE,CAAC;YACtG,MAAM,OAAO,GAAG,EAAE,CAAC;YAEnB,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC;gBACxB,MAAM,QAAQ,GAAG,sBAAsB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;gBAE/E,OAAO,CAAC,IAAI,CAAC;oBACX,QAAQ,EAAE,IAAI,CAAC,QAAQ;oBACvB,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,QAAQ;iBACT,CAAC,CAAC;gBAEH,oCAAoC;gBACpC,WAAW,CAAC,IAAI,CAAC;oBACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;oBACvB,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;iBACtB,CAAC,CAAC;YACL,CAAC;YAED,OAAO,OAAO,CAAC;QACjB,CAAC;QA5Be,qBAAc,iBA4B7B,CAAA;QAED;;WAEG;QACH,SAAgB,kBAAkB,CAChC,IAAgE;YAOhE,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAElD,OAAO;gBACL,eAAe,EAAE,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CACvC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAC/C,CAAC,MAAM,GAAG,CAAC;gBACZ,eAAe,EAAE,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACpE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAC/C;gBACD,mBAAmB,EAAE,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAC3C,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAC7E,CAAC,MAAM,GAAG,CAAC;gBACZ,iBAAiB,EAAE,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CACzC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAC7C,CAAC,MAAM,GAAG,CAAC;aACb,CAAC;QACJ,CAAC;QAxBe,yBAAkB,qBAwBjC,CAAA;IACH,CAAC,EA9DgB,MAAM,GAAN,oBAAM,KAAN,oBAAM,QA8DtB;AACH,CAAC,EAzSgB,aAAa,KAAb,aAAa,QAyS7B"}
|
|
@@ -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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"}
|