erosolar-cli 2.1.171 → 2.1.172
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 +3 -21
- package/dist/StringUtils.d.ts +8 -0
- package/dist/StringUtils.d.ts.map +1 -0
- package/dist/StringUtils.js +11 -0
- package/dist/StringUtils.js.map +1 -0
- 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 +24 -83
- package/dist/core/agent.d.ts.map +1 -1
- package/dist/core/agent.js +248 -499
- package/dist/core/agent.js.map +1 -1
- package/dist/core/aiFlowSupervisor.d.ts +44 -0
- package/dist/core/aiFlowSupervisor.d.ts.map +1 -0
- package/dist/core/aiFlowSupervisor.js +299 -0
- package/dist/core/aiFlowSupervisor.js.map +1 -0
- package/dist/core/cliTestHarness.d.ts +200 -0
- package/dist/core/cliTestHarness.d.ts.map +1 -0
- package/dist/core/cliTestHarness.js +549 -0
- package/dist/core/cliTestHarness.js.map +1 -0
- package/dist/core/preferences.d.ts +0 -1
- package/dist/core/preferences.d.ts.map +1 -1
- package/dist/core/preferences.js +1 -8
- package/dist/core/preferences.js.map +1 -1
- package/dist/core/schemaValidator.js +3 -3
- package/dist/core/schemaValidator.js.map +1 -1
- package/dist/core/testUtils.d.ts +121 -0
- package/dist/core/testUtils.d.ts.map +1 -0
- package/dist/core/testUtils.js +235 -0
- package/dist/core/testUtils.js.map +1 -0
- package/dist/core/toolPreconditions.d.ts +11 -0
- package/dist/core/toolPreconditions.d.ts.map +1 -1
- package/dist/core/toolPreconditions.js +164 -33
- package/dist/core/toolPreconditions.js.map +1 -1
- package/dist/core/toolRuntime.d.ts.map +1 -1
- package/dist/core/toolRuntime.js +114 -9
- package/dist/core/toolRuntime.js.map +1 -1
- package/dist/core/toolValidation.d.ts +116 -0
- package/dist/core/toolValidation.d.ts.map +1 -0
- package/dist/core/toolValidation.js +282 -0
- package/dist/core/toolValidation.js.map +1 -0
- package/dist/core/updateChecker.d.ts +1 -61
- package/dist/core/updateChecker.d.ts.map +1 -1
- package/dist/core/updateChecker.js +3 -147
- package/dist/core/updateChecker.js.map +1 -1
- package/dist/headless/evalMode.d.ts.map +1 -1
- package/dist/headless/evalMode.js +0 -6
- package/dist/headless/evalMode.js.map +1 -1
- package/dist/headless/headlessApp.d.ts.map +1 -1
- package/dist/headless/headlessApp.js +39 -6
- package/dist/headless/headlessApp.js.map +1 -1
- package/dist/mcp/sseClient.d.ts +1 -4
- package/dist/mcp/sseClient.d.ts.map +1 -1
- package/dist/mcp/sseClient.js +2 -36
- package/dist/mcp/sseClient.js.map +1 -1
- package/dist/mcp/stdioClient.d.ts +1 -4
- package/dist/mcp/stdioClient.d.ts.map +1 -1
- package/dist/mcp/stdioClient.js +1 -41
- package/dist/mcp/stdioClient.js.map +1 -1
- package/dist/mcp/toolBridge.d.ts +0 -3
- package/dist/mcp/toolBridge.d.ts.map +1 -1
- package/dist/mcp/toolBridge.js +2 -2
- package/dist/mcp/toolBridge.js.map +1 -1
- package/dist/mcp/types.d.ts +0 -18
- package/dist/mcp/types.d.ts.map +1 -1
- package/dist/plugins/tools/nodeDefaults.d.ts.map +1 -1
- package/dist/plugins/tools/nodeDefaults.js +2 -0
- package/dist/plugins/tools/nodeDefaults.js.map +1 -1
- package/dist/providers/openaiResponsesProvider.d.ts.map +1 -1
- package/dist/providers/openaiResponsesProvider.js +74 -79
- package/dist/providers/openaiResponsesProvider.js.map +1 -1
- package/dist/runtime/agentController.d.ts.map +1 -1
- package/dist/runtime/agentController.js +3 -6
- package/dist/runtime/agentController.js.map +1 -1
- package/dist/runtime/agentSession.d.ts +2 -0
- 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 +18 -20
- package/dist/shell/interactiveShell.d.ts.map +1 -1
- package/dist/shell/interactiveShell.js +291 -329
- package/dist/shell/interactiveShell.js.map +1 -1
- package/dist/shell/shellApp.d.ts.map +1 -1
- package/dist/shell/shellApp.js +8 -16
- package/dist/shell/shellApp.js.map +1 -1
- package/dist/shell/systemPrompt.d.ts.map +1 -1
- package/dist/shell/systemPrompt.js +15 -4
- package/dist/shell/systemPrompt.js.map +1 -1
- package/dist/subagents/taskRunner.js +1 -2
- package/dist/subagents/taskRunner.js.map +1 -1
- package/dist/tools/bashTools.d.ts.map +1 -1
- package/dist/tools/bashTools.js +8 -101
- package/dist/tools/bashTools.js.map +1 -1
- package/dist/tools/diffUtils.d.ts +2 -8
- package/dist/tools/diffUtils.d.ts.map +1 -1
- package/dist/tools/diffUtils.js +13 -72
- package/dist/tools/diffUtils.js.map +1 -1
- package/dist/tools/grepTools.d.ts.map +1 -1
- package/dist/tools/grepTools.js +2 -10
- package/dist/tools/grepTools.js.map +1 -1
- package/dist/tools/planningTools.d.ts +10 -0
- package/dist/tools/planningTools.d.ts.map +1 -1
- package/dist/tools/planningTools.js +16 -0
- package/dist/tools/planningTools.js.map +1 -1
- package/dist/tools/searchTools.d.ts.map +1 -1
- package/dist/tools/searchTools.js +2 -4
- package/dist/tools/searchTools.js.map +1 -1
- package/dist/ui/PromptController.d.ts +4 -4
- package/dist/ui/PromptController.d.ts.map +1 -1
- package/dist/ui/PromptController.js +7 -1
- package/dist/ui/PromptController.js.map +1 -1
- package/dist/ui/ShellUIAdapter.d.ts +28 -292
- package/dist/ui/ShellUIAdapter.d.ts.map +1 -1
- package/dist/ui/ShellUIAdapter.js +121 -1513
- package/dist/ui/ShellUIAdapter.js.map +1 -1
- package/dist/ui/UnifiedUIRenderer.d.ts +30 -136
- package/dist/ui/UnifiedUIRenderer.d.ts.map +1 -1
- package/dist/ui/UnifiedUIRenderer.js +370 -955
- package/dist/ui/UnifiedUIRenderer.js.map +1 -1
- package/dist/ui/animatedStatus.d.ts +6 -128
- package/dist/ui/animatedStatus.d.ts.map +1 -1
- package/dist/ui/animatedStatus.js +50 -383
- package/dist/ui/animatedStatus.js.map +1 -1
- package/dist/ui/display.d.ts +26 -182
- package/dist/ui/display.d.ts.map +1 -1
- package/dist/ui/display.js +97 -678
- package/dist/ui/display.js.map +1 -1
- package/dist/ui/layout.d.ts +1 -0
- package/dist/ui/layout.d.ts.map +1 -1
- package/dist/ui/layout.js +12 -0
- package/dist/ui/layout.js.map +1 -1
- package/dist/ui/orchestration/UIUpdateCoordinator.d.ts +7 -61
- package/dist/ui/orchestration/UIUpdateCoordinator.d.ts.map +1 -1
- package/dist/ui/orchestration/UIUpdateCoordinator.js +20 -232
- package/dist/ui/orchestration/UIUpdateCoordinator.js.map +1 -1
- package/dist/ui/planOverlay.d.ts +28 -0
- package/dist/ui/planOverlay.d.ts.map +1 -0
- package/dist/ui/planOverlay.js +156 -0
- package/dist/ui/planOverlay.js.map +1 -0
- package/dist/ui/shortcutsHelp.d.ts.map +1 -1
- package/dist/ui/shortcutsHelp.js +1 -0
- package/dist/ui/shortcutsHelp.js.map +1 -1
- package/dist/ui/streamingFormatter.d.ts +30 -0
- package/dist/ui/streamingFormatter.d.ts.map +1 -0
- package/dist/ui/streamingFormatter.js +91 -0
- package/dist/ui/streamingFormatter.js.map +1 -0
- package/dist/ui/unified/index.d.ts +1 -30
- package/dist/ui/unified/index.d.ts.map +1 -1
- package/dist/ui/unified/index.js +2 -45
- package/dist/ui/unified/index.js.map +1 -1
- package/dist/utils/errorUtils.d.ts +16 -0
- package/dist/utils/errorUtils.d.ts.map +1 -0
- package/dist/utils/errorUtils.js +66 -0
- package/dist/utils/errorUtils.js.map +1 -0
- package/package.json +2 -1
- package/dist/codex/capabilities/codexCoreCapability.d.ts +0 -6
- package/dist/codex/capabilities/codexCoreCapability.d.ts.map +0 -1
- package/dist/codex/capabilities/codexCoreCapability.js +0 -516
- package/dist/codex/capabilities/codexCoreCapability.js.map +0 -1
- package/dist/codex/fs.d.ts +0 -4
- package/dist/codex/fs.d.ts.map +0 -1
- package/dist/codex/fs.js +0 -25
- package/dist/codex/fs.js.map +0 -1
- package/dist/codex/persistence/planStore.d.ts +0 -4
- package/dist/codex/persistence/planStore.d.ts.map +0 -1
- package/dist/codex/persistence/planStore.js +0 -59
- package/dist/codex/persistence/planStore.js.map +0 -1
- package/dist/codex/pluginAllowlist.d.ts +0 -4
- package/dist/codex/pluginAllowlist.d.ts.map +0 -1
- package/dist/codex/pluginAllowlist.js +0 -14
- package/dist/codex/pluginAllowlist.js.map +0 -1
- package/dist/codex/types.d.ts +0 -21
- package/dist/codex/types.d.ts.map +0 -1
- package/dist/codex/types.js +0 -62
- package/dist/codex/types.js.map +0 -1
- package/dist/core/reliabilityPrompt.d.ts +0 -9
- package/dist/core/reliabilityPrompt.d.ts.map +0 -1
- package/dist/core/reliabilityPrompt.js +0 -31
- package/dist/core/reliabilityPrompt.js.map +0 -1
- package/dist/ui/UnifiedUIController.d.ts +0 -81
- package/dist/ui/UnifiedUIController.d.ts.map +0 -1
- package/dist/ui/UnifiedUIController.js +0 -212
- package/dist/ui/UnifiedUIController.js.map +0 -1
- package/dist/ui/animation/AnimationScheduler.d.ts +0 -192
- package/dist/ui/animation/AnimationScheduler.d.ts.map +0 -1
- package/dist/ui/animation/AnimationScheduler.js +0 -432
- package/dist/ui/animation/AnimationScheduler.js.map +0 -1
- package/dist/ui/inPlaceUpdater.d.ts +0 -181
- package/dist/ui/inPlaceUpdater.d.ts.map +0 -1
- package/dist/ui/inPlaceUpdater.js +0 -515
- package/dist/ui/inPlaceUpdater.js.map +0 -1
- package/dist/ui/interrupts/InterruptManager.d.ts +0 -142
- package/dist/ui/interrupts/InterruptManager.d.ts.map +0 -1
- package/dist/ui/interrupts/InterruptManager.js +0 -439
- package/dist/ui/interrupts/InterruptManager.js.map +0 -1
- package/dist/ui/telemetry/ResponseTracker.d.ts +0 -22
- package/dist/ui/telemetry/ResponseTracker.d.ts.map +0 -1
- package/dist/ui/telemetry/ResponseTracker.js +0 -60
- package/dist/ui/telemetry/ResponseTracker.js.map +0 -1
- package/dist/ui/telemetry/UITelemetry.d.ts +0 -181
- package/dist/ui/telemetry/UITelemetry.d.ts.map +0 -1
- package/dist/ui/telemetry/UITelemetry.js +0 -446
- package/dist/ui/telemetry/UITelemetry.js.map +0 -1
- package/dist/ui/unified/layout.d.ts +0 -12
- package/dist/ui/unified/layout.d.ts.map +0 -1
- package/dist/ui/unified/layout.js +0 -96
- package/dist/ui/unified/layout.js.map +0 -1
|
@@ -81,9 +81,9 @@ export function validateToolArguments(toolName, schema, args) {
|
|
|
81
81
|
for (const [key, value] of Object.entries(args)) {
|
|
82
82
|
const definition = properties[key];
|
|
83
83
|
if (!definition) {
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
84
|
+
if (schema.additionalProperties === false) {
|
|
85
|
+
errors.push(`Property "${key}" is not allowed.`);
|
|
86
|
+
}
|
|
87
87
|
continue;
|
|
88
88
|
}
|
|
89
89
|
validateSchemaProperty(definition, value, key, errors);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schemaValidator.js","sourceRoot":"","sources":["../../src/core/schemaValidator.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,OAAO,2BAA4B,SAAQ,KAAK;IAC3C,MAAM,CAAoB;IAC1B,QAAQ,CAAS;IAE1B,YAAY,QAAgB,EAAE,MAAgB;QAC5C,KAAK,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI,GAAG,6BAA6B,CAAC;QAC1C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,KAAW,UAAU,CAiD1B;AAjDD,WAAiB,UAAU;IACzB;;OAEG;IACH,SAAgB,QAAQ,CAAC,KAAc;QACrC,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC;IACnC,CAAC;IAFe,mBAAQ,WAEvB,CAAA;IAED;;OAEG;IACH,SAAgB,QAAQ,CAAC,KAAc;QACrC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC3D,CAAC;IAFe,mBAAQ,WAEvB,CAAA;IAED;;OAEG;IACH,SAAgB,SAAS,CAAC,KAAc;QACtC,OAAO,OAAO,KAAK,KAAK,SAAS,CAAC;IACpC,CAAC;IAFe,oBAAS,YAExB,CAAA;IAED;;OAEG;IACH,SAAgB,OAAO,CAAC,KAAc;QACpC,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IAFe,kBAAO,UAEtB,CAAA;IAED;;OAEG;IACH,SAAgB,QAAQ,CAAC,KAAc;QACrC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC9E,CAAC;IAFe,mBAAQ,WAEvB,CAAA;IAED;;OAEG;IACH,SAAgB,SAAS,CAAC,KAAc;QACtC,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC;IAC/C,CAAC;IAFe,oBAAS,YAExB,CAAA;IAED;;OAEG;IACH,SAAgB,MAAM,CAAmB,KAAc,EAAE,UAAwB;QAC/E,OAAO,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,KAAU,CAAC,CAAC;IACvE,CAAC;IAFe,iBAAM,SAErB,CAAA;AACH,CAAC,EAjDgB,UAAU,KAAV,UAAU,QAiD1B;AAED,MAAM,UAAU,qBAAqB,CACnC,QAAgB,EAChB,MAAoC,EACpC,IAA6B;IAE7B,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QACxC,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC;IAC3C,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;IAEvE,KAAK,MAAM,QAAQ,IAAI,QAAQ,EAAE,CAAC;QAChC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC;YACjC,MAAM,CAAC,IAAI,CAAC,8BAA8B,QAAQ,IAAI,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;IAED,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAChD,MAAM,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,
|
|
1
|
+
{"version":3,"file":"schemaValidator.js","sourceRoot":"","sources":["../../src/core/schemaValidator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,121 @@
|
|
|
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 type { ToolCallRequest, ToolResponse, JSONSchemaObject, Result, ToolSuccessResponse, ToolErrorResponse, ToolWarningResponse } from './types.js';
|
|
6
|
+
import { validateToolPreconditions, validateAIFlowPatterns } from './toolPreconditions.js';
|
|
7
|
+
/**
|
|
8
|
+
* Test utilities for tool validation and AI flow testing
|
|
9
|
+
*/
|
|
10
|
+
export declare namespace ToolTestUtils {
|
|
11
|
+
/**
|
|
12
|
+
* Creates a mock tool call for testing
|
|
13
|
+
*/
|
|
14
|
+
function createMockToolCall(name: string, args?: Record<string, unknown>): ToolCallRequest;
|
|
15
|
+
/**
|
|
16
|
+
* Creates a mock successful tool response
|
|
17
|
+
*/
|
|
18
|
+
function createMockSuccessResponse(content: string, metadata?: ToolSuccessResponse['metadata']): ToolSuccessResponse;
|
|
19
|
+
/**
|
|
20
|
+
* Creates a mock error tool response
|
|
21
|
+
*/
|
|
22
|
+
function createMockErrorResponse(code: string, message: string, recoverable?: boolean): ToolErrorResponse;
|
|
23
|
+
/**
|
|
24
|
+
* Creates a mock warning tool response
|
|
25
|
+
*/
|
|
26
|
+
function createMockWarningResponse(content: string, warnings: ToolWarningResponse['warnings']): ToolWarningResponse;
|
|
27
|
+
/**
|
|
28
|
+
* Validates tool arguments against schema with detailed error reporting
|
|
29
|
+
*/
|
|
30
|
+
function validateToolArgs(toolName: string, schema: JSONSchemaObject | undefined, args: Record<string, unknown>): Result<void, string[]>;
|
|
31
|
+
/**
|
|
32
|
+
* Tests AI flow patterns with tool history simulation
|
|
33
|
+
*/
|
|
34
|
+
function testAIFlowPatterns(toolName: string, args: Record<string, unknown>, toolHistory: Array<{
|
|
35
|
+
toolName: string;
|
|
36
|
+
args: Record<string, unknown>;
|
|
37
|
+
timestamp: number;
|
|
38
|
+
}>): {
|
|
39
|
+
preflightWarnings: ReturnType<typeof validateToolPreconditions>;
|
|
40
|
+
aiFlowWarnings: ReturnType<typeof validateAIFlowPatterns>;
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* Type-safe assertion for tool responses
|
|
44
|
+
*/
|
|
45
|
+
function assertToolSuccess(response: ToolResponse): asserts response is ToolSuccessResponse;
|
|
46
|
+
/**
|
|
47
|
+
* Type-safe assertion for tool errors
|
|
48
|
+
*/
|
|
49
|
+
function assertToolError(response: ToolResponse): asserts response is ToolErrorResponse;
|
|
50
|
+
/**
|
|
51
|
+
* Type-safe assertion for tool warnings
|
|
52
|
+
*/
|
|
53
|
+
function assertToolWarning(response: ToolResponse): asserts response is ToolWarningResponse;
|
|
54
|
+
/**
|
|
55
|
+
* Creates a test suite for tool validation
|
|
56
|
+
*/
|
|
57
|
+
function createToolTestSuite(toolName: string, schema: JSONSchemaObject | undefined): {
|
|
58
|
+
/**
|
|
59
|
+
* Test valid arguments
|
|
60
|
+
*/
|
|
61
|
+
testValidArgs(args: Record<string, unknown>): void;
|
|
62
|
+
/**
|
|
63
|
+
* Test invalid arguments
|
|
64
|
+
*/
|
|
65
|
+
testInvalidArgs(args: Record<string, unknown>, expectedErrors: string[]): void;
|
|
66
|
+
/**
|
|
67
|
+
* Test required arguments
|
|
68
|
+
*/
|
|
69
|
+
testRequiredArgs(requiredArgs: string[]): void;
|
|
70
|
+
};
|
|
71
|
+
/**
|
|
72
|
+
* Performance testing utilities
|
|
73
|
+
*/
|
|
74
|
+
namespace Performance {
|
|
75
|
+
/**
|
|
76
|
+
* Measures tool execution time
|
|
77
|
+
*/
|
|
78
|
+
function measureExecutionTime<T>(fn: () => Promise<T> | T): Promise<{
|
|
79
|
+
result: T;
|
|
80
|
+
executionTime: number;
|
|
81
|
+
}>;
|
|
82
|
+
/**
|
|
83
|
+
* Runs performance benchmark
|
|
84
|
+
*/
|
|
85
|
+
function benchmark(fn: () => Promise<unknown> | unknown, iterations?: number): Promise<{
|
|
86
|
+
averageTime: number;
|
|
87
|
+
minTime: number;
|
|
88
|
+
maxTime: number;
|
|
89
|
+
totalTime: number;
|
|
90
|
+
}>;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* AI flow testing utilities
|
|
94
|
+
*/
|
|
95
|
+
namespace AIFlow {
|
|
96
|
+
/**
|
|
97
|
+
* Simulates a complete AI flow with tool history
|
|
98
|
+
*/
|
|
99
|
+
function simulateAIFlow(flow: Array<{
|
|
100
|
+
toolName: string;
|
|
101
|
+
args: Record<string, unknown>;
|
|
102
|
+
}>): Array<{
|
|
103
|
+
toolName: string;
|
|
104
|
+
args: Record<string, unknown>;
|
|
105
|
+
warnings: ReturnType<typeof validateAIFlowPatterns>;
|
|
106
|
+
}>;
|
|
107
|
+
/**
|
|
108
|
+
* Tests for common AI flow anti-patterns
|
|
109
|
+
*/
|
|
110
|
+
function detectAntiPatterns(flow: Array<{
|
|
111
|
+
toolName: string;
|
|
112
|
+
args: Record<string, unknown>;
|
|
113
|
+
}>): {
|
|
114
|
+
sequentialReads: boolean;
|
|
115
|
+
editWithoutRead: boolean;
|
|
116
|
+
multipleValidations: boolean;
|
|
117
|
+
inefficientGitOps: boolean;
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
//# sourceMappingURL=testUtils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testUtils.d.ts","sourceRoot":"","sources":["../../src/core/testUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,235 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -8,6 +8,17 @@ export interface PreflightWarning {
|
|
|
8
8
|
readonly severity: 'critical' | 'warning' | 'info';
|
|
9
9
|
readonly suggestion: string;
|
|
10
10
|
}
|
|
11
|
+
export declare const AI_FLOW_VALIDATION_PATTERNS: {
|
|
12
|
+
readonly EDIT_LONG_SINGLE_LINE: RegExp;
|
|
13
|
+
readonly EDIT_PLACEHOLDER_PATTERNS: readonly [RegExp, RegExp, RegExp, RegExp];
|
|
14
|
+
readonly EDIT_FUNCTION_SIGNATURE: RegExp;
|
|
15
|
+
readonly SEARCH_OVERLY_BROAD: readonly [RegExp, RegExp, RegExp, RegExp];
|
|
16
|
+
readonly GIT_REDUNDANT_STATUS: RegExp;
|
|
17
|
+
readonly GIT_INEFFICIENT_CHAIN: RegExp;
|
|
18
|
+
readonly NPM_INCOMPLETE_PUBLISH: RegExp;
|
|
19
|
+
readonly CONTEXT_REDUNDANT_SNAPSHOT: RegExp;
|
|
20
|
+
readonly VALIDATION_EARLY_RUN: RegExp;
|
|
21
|
+
};
|
|
11
22
|
/**
|
|
12
23
|
* Validate tool preconditions before execution to prevent common AI flow failures.
|
|
13
24
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toolPreconditions.d.ts","sourceRoot":"","sources":["../../src/core/toolPreconditions.ts"],"names":[],"mappings":"AAIA;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,UAAU,GAAG,SAAS,GAAG,MAAM,CAAC;IACnD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAGD;;;;;;;;;GASG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,gBAAgB,EAAE,
|
|
1
|
+
{"version":3,"file":"toolPreconditions.d.ts","sourceRoot":"","sources":["../../src/core/toolPreconditions.ts"],"names":[],"mappings":"AAIA;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,UAAU,GAAG,SAAS,GAAG,MAAM,CAAC;IACnD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAGD,eAAO,MAAM,2BAA2B;;;;;;;;;;CA+B9B,CAAC;AAEX;;;;;;;;;GASG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,gBAAgB,EAAE,CAkMpB;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,WAAW,EAAE,SAAS;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,GAC9F,gBAAgB,EAAE,CA6EpB"}
|