mycontext-cli 1.0.95 ā 2.0.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.
- package/README.md +268 -295
- package/dist/agents/implementations/ClaudeAgentWorkflow.d.ts.map +1 -1
- package/dist/agents/implementations/ClaudeAgentWorkflow.js +38 -3
- package/dist/agents/implementations/ClaudeAgentWorkflow.js.map +1 -1
- package/dist/agents/implementations/WorkflowAgent.d.ts +8 -0
- package/dist/agents/implementations/WorkflowAgent.d.ts.map +1 -1
- package/dist/agents/implementations/WorkflowAgent.js +105 -11
- package/dist/agents/implementations/WorkflowAgent.js.map +1 -1
- package/dist/agents/interfaces/SubAgent.d.ts +5 -0
- package/dist/agents/interfaces/SubAgent.d.ts.map +1 -1
- package/dist/commands/build-app.d.ts +5 -0
- package/dist/commands/build-app.d.ts.map +1 -1
- package/dist/commands/build-app.js +127 -4
- package/dist/commands/build-app.js.map +1 -1
- package/dist/commands/compile-prd.d.ts.map +1 -1
- package/dist/commands/compile-prd.js +18 -54
- package/dist/commands/compile-prd.js.map +1 -1
- package/dist/commands/enhance.d.ts +21 -0
- package/dist/commands/enhance.d.ts.map +1 -1
- package/dist/commands/enhance.js +155 -12
- package/dist/commands/enhance.js.map +1 -1
- package/dist/commands/generate-components.d.ts +43 -0
- package/dist/commands/generate-components.d.ts.map +1 -1
- package/dist/commands/generate-components.js +270 -0
- package/dist/commands/generate-components.js.map +1 -1
- package/dist/constants/fileNames.d.ts +68 -0
- package/dist/constants/fileNames.d.ts.map +1 -0
- package/dist/constants/fileNames.js +102 -0
- package/dist/constants/fileNames.js.map +1 -0
- package/dist/interfaces/AIClient.d.ts +198 -0
- package/dist/interfaces/AIClient.d.ts.map +1 -0
- package/dist/interfaces/AIClient.js +40 -0
- package/dist/interfaces/AIClient.js.map +1 -0
- package/dist/package.json +4 -3
- package/dist/types/index.d.ts +423 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/utils/agentDefinitions.d.ts +60 -0
- package/dist/utils/agentDefinitions.d.ts.map +1 -0
- package/dist/utils/agentDefinitions.js +344 -0
- package/dist/utils/agentDefinitions.js.map +1 -0
- package/dist/utils/aiClientFactory.d.ts +93 -0
- package/dist/utils/aiClientFactory.d.ts.map +1 -0
- package/dist/utils/aiClientFactory.js +290 -0
- package/dist/utils/aiClientFactory.js.map +1 -0
- package/dist/utils/aiClientRouter.d.ts +121 -0
- package/dist/utils/aiClientRouter.d.ts.map +1 -0
- package/dist/utils/aiClientRouter.js +401 -0
- package/dist/utils/aiClientRouter.js.map +1 -0
- package/dist/utils/buildValidator.d.ts +72 -0
- package/dist/utils/buildValidator.d.ts.map +1 -0
- package/dist/utils/buildValidator.js +338 -0
- package/dist/utils/buildValidator.js.map +1 -0
- package/dist/utils/claudeAgentClient.d.ts +79 -11
- package/dist/utils/claudeAgentClient.d.ts.map +1 -1
- package/dist/utils/claudeAgentClient.js +306 -1
- package/dist/utils/claudeAgentClient.js.map +1 -1
- package/dist/utils/claudeClient.d.ts +7 -3
- package/dist/utils/claudeClient.d.ts.map +1 -1
- package/dist/utils/claudeClient.js +28 -5
- package/dist/utils/claudeClient.js.map +1 -1
- package/dist/utils/completeArchitectureEngine.d.ts +67 -0
- package/dist/utils/completeArchitectureEngine.d.ts.map +1 -0
- package/dist/utils/completeArchitectureEngine.js +329 -0
- package/dist/utils/completeArchitectureEngine.js.map +1 -0
- package/dist/utils/contextLoader.d.ts +1 -12
- package/dist/utils/contextLoader.d.ts.map +1 -1
- package/dist/utils/contextLoader.js +29 -150
- package/dist/utils/contextLoader.js.map +1 -1
- package/dist/utils/contextManager.d.ts +2 -12
- package/dist/utils/contextManager.d.ts.map +1 -1
- package/dist/utils/contextManager.js +11 -6
- package/dist/utils/contextManager.js.map +1 -1
- package/dist/utils/mcpTools.d.ts +164 -0
- package/dist/utils/mcpTools.d.ts.map +1 -0
- package/dist/utils/mcpTools.js +385 -0
- package/dist/utils/mcpTools.js.map +1 -0
- package/dist/utils/progressTracker.d.ts +121 -0
- package/dist/utils/progressTracker.d.ts.map +1 -0
- package/dist/utils/progressTracker.js +334 -0
- package/dist/utils/progressTracker.js.map +1 -0
- package/dist/utils/routeGenerator.d.ts +56 -0
- package/dist/utils/routeGenerator.d.ts.map +1 -0
- package/dist/utils/routeGenerator.js +231 -0
- package/dist/utils/routeGenerator.js.map +1 -0
- package/dist/utils/serverActionGenerator.d.ts +56 -0
- package/dist/utils/serverActionGenerator.d.ts.map +1 -0
- package/dist/utils/serverActionGenerator.js +258 -0
- package/dist/utils/serverActionGenerator.js.map +1 -0
- package/dist/utils/streamingHandler.d.ts +98 -0
- package/dist/utils/streamingHandler.d.ts.map +1 -0
- package/dist/utils/streamingHandler.js +259 -0
- package/dist/utils/streamingHandler.js.map +1 -0
- package/dist/utils/validationGates.d.ts +58 -0
- package/dist/utils/validationGates.d.ts.map +1 -0
- package/dist/utils/validationGates.js +390 -0
- package/dist/utils/validationGates.js.map +1 -0
- package/package.json +4 -3
|
@@ -0,0 +1,401 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* AI Client Router
|
|
4
|
+
*
|
|
5
|
+
* Intelligent routing layer that decides which AI client to use based on
|
|
6
|
+
* operation characteristics, context, and system state.
|
|
7
|
+
*/
|
|
8
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
9
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.AIClientRouter = void 0;
|
|
13
|
+
exports.getAIClientRouter = getAIClientRouter;
|
|
14
|
+
exports.resetAIClientRouter = resetAIClientRouter;
|
|
15
|
+
const AIClient_1 = require("../interfaces/AIClient");
|
|
16
|
+
const aiClientFactory_1 = require("./aiClientFactory");
|
|
17
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
18
|
+
/**
|
|
19
|
+
* Router that intelligently selects the appropriate AI client for operations
|
|
20
|
+
*/
|
|
21
|
+
class AIClientRouter {
|
|
22
|
+
constructor(factory) {
|
|
23
|
+
this.operationHistory = new Map();
|
|
24
|
+
this.performanceMetrics = new Map();
|
|
25
|
+
this.factory = factory || aiClientFactory_1.AIClientFactory.getInstance();
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Route a simple text generation request
|
|
29
|
+
*/
|
|
30
|
+
async generateText(prompt, options) {
|
|
31
|
+
const metadata = this.analyzeOperation({
|
|
32
|
+
prompt,
|
|
33
|
+
operationType: 'text-generation',
|
|
34
|
+
});
|
|
35
|
+
const client = await this.selectClient(metadata);
|
|
36
|
+
const startTime = Date.now();
|
|
37
|
+
try {
|
|
38
|
+
const result = await client.generateText(prompt, options);
|
|
39
|
+
this.recordPerformance('text-generation', Date.now() - startTime, true);
|
|
40
|
+
return result;
|
|
41
|
+
}
|
|
42
|
+
catch (error) {
|
|
43
|
+
this.recordPerformance('text-generation', Date.now() - startTime, false);
|
|
44
|
+
throw this.handleError(error, metadata);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Route a component generation request
|
|
49
|
+
*/
|
|
50
|
+
async generateComponent(prompt, context, options) {
|
|
51
|
+
const metadata = this.analyzeOperation({
|
|
52
|
+
prompt,
|
|
53
|
+
context,
|
|
54
|
+
operationType: 'component-generation',
|
|
55
|
+
});
|
|
56
|
+
const client = await this.selectClient(metadata);
|
|
57
|
+
const startTime = Date.now();
|
|
58
|
+
try {
|
|
59
|
+
const result = await client.generateComponent(prompt, context, options);
|
|
60
|
+
this.recordPerformance('component-generation', Date.now() - startTime, true);
|
|
61
|
+
return result;
|
|
62
|
+
}
|
|
63
|
+
catch (error) {
|
|
64
|
+
this.recordPerformance('component-generation', Date.now() - startTime, false);
|
|
65
|
+
throw this.handleError(error, metadata);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Route a component refinement request
|
|
70
|
+
*/
|
|
71
|
+
async refineComponent(componentCode, prompt, context, options) {
|
|
72
|
+
const metadata = this.analyzeOperation({
|
|
73
|
+
prompt,
|
|
74
|
+
context,
|
|
75
|
+
componentCode,
|
|
76
|
+
operationType: 'component-refinement',
|
|
77
|
+
});
|
|
78
|
+
const client = await this.selectClient(metadata);
|
|
79
|
+
const startTime = Date.now();
|
|
80
|
+
try {
|
|
81
|
+
const result = await client.generateComponentRefinement(componentCode, prompt, context, options);
|
|
82
|
+
this.recordPerformance('component-refinement', Date.now() - startTime, true);
|
|
83
|
+
return result;
|
|
84
|
+
}
|
|
85
|
+
catch (error) {
|
|
86
|
+
this.recordPerformance('component-refinement', Date.now() - startTime, false);
|
|
87
|
+
throw this.handleError(error, metadata);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Route a workflow request (Agent SDK only)
|
|
92
|
+
*/
|
|
93
|
+
async runWorkflow(workflowPrompt, context, options) {
|
|
94
|
+
const metadata = this.analyzeOperation({
|
|
95
|
+
prompt: workflowPrompt,
|
|
96
|
+
context,
|
|
97
|
+
operationType: 'workflow',
|
|
98
|
+
});
|
|
99
|
+
// Workflows always require Agent SDK
|
|
100
|
+
metadata.requiresTools = true;
|
|
101
|
+
metadata.requiresMultiStep = true;
|
|
102
|
+
metadata.complexity = 'complex';
|
|
103
|
+
const client = await this.selectClient(metadata);
|
|
104
|
+
if (!this.isAgentClient(client)) {
|
|
105
|
+
throw new AIClient_1.AIClientError('Workflow operations require Agent SDK client', 'AGENT_SDK_REQUIRED', false);
|
|
106
|
+
}
|
|
107
|
+
const startTime = Date.now();
|
|
108
|
+
try {
|
|
109
|
+
const result = await client.runWorkflow(workflowPrompt, context, options);
|
|
110
|
+
this.recordPerformance('workflow', Date.now() - startTime, true);
|
|
111
|
+
return result;
|
|
112
|
+
}
|
|
113
|
+
catch (error) {
|
|
114
|
+
this.recordPerformance('workflow', Date.now() - startTime, false);
|
|
115
|
+
throw this.handleError(error, metadata);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Route a generation with specific tools (Agent SDK only)
|
|
120
|
+
*/
|
|
121
|
+
async generateWithTools(prompt, tools, context, options) {
|
|
122
|
+
const metadata = this.analyzeOperation({
|
|
123
|
+
prompt,
|
|
124
|
+
context,
|
|
125
|
+
tools,
|
|
126
|
+
operationType: 'generation-with-tools',
|
|
127
|
+
});
|
|
128
|
+
metadata.requiresTools = true;
|
|
129
|
+
metadata.complexity = 'complex';
|
|
130
|
+
const client = await this.selectClient(metadata);
|
|
131
|
+
if (!this.isAgentClient(client)) {
|
|
132
|
+
throw new AIClient_1.AIClientError('Tool-based generation requires Agent SDK client', 'AGENT_SDK_REQUIRED', false);
|
|
133
|
+
}
|
|
134
|
+
const startTime = Date.now();
|
|
135
|
+
try {
|
|
136
|
+
const result = await client.generateWithTools(prompt, tools, context, options);
|
|
137
|
+
this.recordPerformance('generation-with-tools', Date.now() - startTime, true);
|
|
138
|
+
return result;
|
|
139
|
+
}
|
|
140
|
+
catch (error) {
|
|
141
|
+
this.recordPerformance('generation-with-tools', Date.now() - startTime, false);
|
|
142
|
+
throw this.handleError(error, metadata);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Analyze operation to determine requirements
|
|
147
|
+
*/
|
|
148
|
+
analyzeOperation(input) {
|
|
149
|
+
const metadata = {
|
|
150
|
+
complexity: this.determineComplexity(input),
|
|
151
|
+
requiresTools: this.checkToolRequirement(input),
|
|
152
|
+
requiresStreaming: this.checkStreamingRequirement(input),
|
|
153
|
+
requiresMultiStep: this.checkMultiStepRequirement(input),
|
|
154
|
+
requiresFileAccess: this.checkFileAccessRequirement(input),
|
|
155
|
+
requiresValidation: this.checkValidationRequirement(input),
|
|
156
|
+
estimatedTokens: this.estimateTokens(input),
|
|
157
|
+
};
|
|
158
|
+
// Store for future analysis
|
|
159
|
+
const key = input.operationType || 'unknown';
|
|
160
|
+
this.operationHistory.set(key, metadata);
|
|
161
|
+
return metadata;
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Determine operation complexity
|
|
165
|
+
*/
|
|
166
|
+
determineComplexity(input) {
|
|
167
|
+
const { prompt, context, operationType, componentCode } = input;
|
|
168
|
+
// Workflows and multi-file operations are always complex
|
|
169
|
+
if (operationType === 'workflow' || operationType === 'generation-with-tools') {
|
|
170
|
+
return 'complex';
|
|
171
|
+
}
|
|
172
|
+
// Component operations with rich context are moderate to complex
|
|
173
|
+
if (operationType === 'component-generation' || operationType === 'component-refinement') {
|
|
174
|
+
const hasContext = context && (context.prd || context.types || context.brand);
|
|
175
|
+
const isLarge = (prompt?.length || 0) > 1000 || (componentCode?.length || 0) > 2000;
|
|
176
|
+
if (hasContext && isLarge)
|
|
177
|
+
return 'complex';
|
|
178
|
+
if (hasContext || isLarge)
|
|
179
|
+
return 'moderate';
|
|
180
|
+
}
|
|
181
|
+
// Simple text generation
|
|
182
|
+
if ((prompt?.length || 0) < 500) {
|
|
183
|
+
return 'simple';
|
|
184
|
+
}
|
|
185
|
+
return 'moderate';
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Check if operation requires tools
|
|
189
|
+
*/
|
|
190
|
+
checkToolRequirement(input) {
|
|
191
|
+
const { operationType, tools, context } = input;
|
|
192
|
+
// Explicit tool requirements
|
|
193
|
+
if (tools && tools.length > 0)
|
|
194
|
+
return true;
|
|
195
|
+
// Workflow operations need tools
|
|
196
|
+
if (operationType === 'workflow')
|
|
197
|
+
return true;
|
|
198
|
+
// Check context for file references
|
|
199
|
+
if (context?.workingDirectory)
|
|
200
|
+
return true;
|
|
201
|
+
return false;
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Check if operation would benefit from streaming
|
|
205
|
+
*/
|
|
206
|
+
checkStreamingRequirement(input) {
|
|
207
|
+
const { operationType, estimatedDuration } = input;
|
|
208
|
+
// Long-running operations benefit from streaming
|
|
209
|
+
if (estimatedDuration && estimatedDuration > 5000)
|
|
210
|
+
return true;
|
|
211
|
+
// Workflows should stream progress
|
|
212
|
+
if (operationType === 'workflow')
|
|
213
|
+
return true;
|
|
214
|
+
return false;
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Check if operation is multi-step
|
|
218
|
+
*/
|
|
219
|
+
checkMultiStepRequirement(input) {
|
|
220
|
+
const { operationType } = input;
|
|
221
|
+
return operationType === 'workflow' || operationType === 'generation-with-tools';
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Check if operation needs file access
|
|
225
|
+
*/
|
|
226
|
+
checkFileAccessRequirement(input) {
|
|
227
|
+
const { context, tools } = input;
|
|
228
|
+
if (context?.workingDirectory)
|
|
229
|
+
return true;
|
|
230
|
+
if (tools?.some(t => ['Read', 'Write', 'Edit', 'Glob'].includes(t)))
|
|
231
|
+
return true;
|
|
232
|
+
return false;
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* Check if operation needs validation
|
|
236
|
+
*/
|
|
237
|
+
checkValidationRequirement(input) {
|
|
238
|
+
const { operationType } = input;
|
|
239
|
+
return operationType === 'component-generation' ||
|
|
240
|
+
operationType === 'component-refinement' ||
|
|
241
|
+
operationType === 'workflow';
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Estimate token count for operation
|
|
245
|
+
*/
|
|
246
|
+
estimateTokens(input) {
|
|
247
|
+
const { prompt, context, componentCode } = input;
|
|
248
|
+
let tokens = 0;
|
|
249
|
+
// Estimate prompt tokens (rough approximation: 1 token ā 4 characters)
|
|
250
|
+
if (prompt)
|
|
251
|
+
tokens += Math.ceil(prompt.length / 4);
|
|
252
|
+
if (componentCode)
|
|
253
|
+
tokens += Math.ceil(componentCode.length / 4);
|
|
254
|
+
// Add context tokens
|
|
255
|
+
if (context) {
|
|
256
|
+
if (context.prd)
|
|
257
|
+
tokens += Math.ceil(context.prd.length / 4);
|
|
258
|
+
if (context.types)
|
|
259
|
+
tokens += Math.ceil(context.types.length / 4);
|
|
260
|
+
if (context.brand)
|
|
261
|
+
tokens += Math.ceil(context.brand.length / 4);
|
|
262
|
+
}
|
|
263
|
+
return tokens;
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* Select appropriate client based on metadata
|
|
267
|
+
*/
|
|
268
|
+
async selectClient(metadata) {
|
|
269
|
+
try {
|
|
270
|
+
return await this.factory.getClient(metadata.complexity, metadata.requiresTools, metadata.requiresStreaming);
|
|
271
|
+
}
|
|
272
|
+
catch (error) {
|
|
273
|
+
throw new AIClient_1.AIClientError(`Failed to get AI client: ${error.message}`, 'CLIENT_SELECTION_FAILED', false);
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
/**
|
|
277
|
+
* Check if client is an Agent SDK client
|
|
278
|
+
*/
|
|
279
|
+
isAgentClient(client) {
|
|
280
|
+
return client.clientType === 'agent-sdk' && client.supportsTools;
|
|
281
|
+
}
|
|
282
|
+
/**
|
|
283
|
+
* Handle and transform errors
|
|
284
|
+
*/
|
|
285
|
+
handleError(error, metadata) {
|
|
286
|
+
if (error instanceof AIClient_1.AIClientError) {
|
|
287
|
+
return error;
|
|
288
|
+
}
|
|
289
|
+
// Transform common errors
|
|
290
|
+
if (error.message?.includes('permission')) {
|
|
291
|
+
return new AIClient_1.AIClientError(error.message, 'PERMISSION_DENIED', true);
|
|
292
|
+
}
|
|
293
|
+
if (error.message?.includes('timeout')) {
|
|
294
|
+
return new AIClient_1.AIClientError(error.message, 'TIMEOUT', true);
|
|
295
|
+
}
|
|
296
|
+
if (error.message?.includes('context')) {
|
|
297
|
+
return new AIClient_1.AIClientError(error.message, 'CONTEXT_OVERFLOW', true);
|
|
298
|
+
}
|
|
299
|
+
// Generic error
|
|
300
|
+
return new AIClient_1.AIClientError(error.message || 'Unknown error', 'UNKNOWN_ERROR', false);
|
|
301
|
+
}
|
|
302
|
+
/**
|
|
303
|
+
* Record performance metrics
|
|
304
|
+
*/
|
|
305
|
+
recordPerformance(operation, duration, success) {
|
|
306
|
+
if (!this.performanceMetrics.has(operation)) {
|
|
307
|
+
this.performanceMetrics.set(operation, []);
|
|
308
|
+
}
|
|
309
|
+
this.performanceMetrics.get(operation).push({
|
|
310
|
+
duration,
|
|
311
|
+
success,
|
|
312
|
+
timestamp: Date.now(),
|
|
313
|
+
});
|
|
314
|
+
// Keep only last 100 entries per operation
|
|
315
|
+
const metrics = this.performanceMetrics.get(operation);
|
|
316
|
+
if (metrics.length > 100) {
|
|
317
|
+
metrics.shift();
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
/**
|
|
321
|
+
* Get performance statistics
|
|
322
|
+
*/
|
|
323
|
+
getPerformanceStats(operation) {
|
|
324
|
+
if (operation) {
|
|
325
|
+
const metrics = this.performanceMetrics.get(operation) || [];
|
|
326
|
+
return this.calculateStats(metrics);
|
|
327
|
+
}
|
|
328
|
+
// Aggregate all operations
|
|
329
|
+
const allMetrics = [];
|
|
330
|
+
for (const metrics of this.performanceMetrics.values()) {
|
|
331
|
+
allMetrics.push(...metrics);
|
|
332
|
+
}
|
|
333
|
+
return this.calculateStats(allMetrics);
|
|
334
|
+
}
|
|
335
|
+
/**
|
|
336
|
+
* Calculate statistics from metrics
|
|
337
|
+
*/
|
|
338
|
+
calculateStats(metrics) {
|
|
339
|
+
if (metrics.length === 0) {
|
|
340
|
+
return {
|
|
341
|
+
count: 0,
|
|
342
|
+
successRate: 0,
|
|
343
|
+
avgDuration: 0,
|
|
344
|
+
minDuration: 0,
|
|
345
|
+
maxDuration: 0,
|
|
346
|
+
};
|
|
347
|
+
}
|
|
348
|
+
const durations = metrics.map(m => m.duration);
|
|
349
|
+
const successes = metrics.filter(m => m.success).length;
|
|
350
|
+
return {
|
|
351
|
+
count: metrics.length,
|
|
352
|
+
successRate: successes / metrics.length,
|
|
353
|
+
avgDuration: durations.reduce((a, b) => a + b, 0) / durations.length,
|
|
354
|
+
minDuration: Math.min(...durations),
|
|
355
|
+
maxDuration: Math.max(...durations),
|
|
356
|
+
};
|
|
357
|
+
}
|
|
358
|
+
/**
|
|
359
|
+
* Log router statistics
|
|
360
|
+
*/
|
|
361
|
+
logStats() {
|
|
362
|
+
console.log(chalk_1.default.blue('\nš AI Client Router Statistics:'));
|
|
363
|
+
for (const [operation, metrics] of this.performanceMetrics.entries()) {
|
|
364
|
+
const stats = this.calculateStats(metrics);
|
|
365
|
+
console.log(chalk_1.default.gray(`\n ${operation}:`));
|
|
366
|
+
console.log(chalk_1.default.gray(` Count: ${stats.count}`));
|
|
367
|
+
console.log(chalk_1.default.gray(` Success Rate: ${(stats.successRate * 100).toFixed(1)}%`));
|
|
368
|
+
console.log(chalk_1.default.gray(` Avg Duration: ${stats.avgDuration.toFixed(0)}ms`));
|
|
369
|
+
console.log(chalk_1.default.gray(` Range: ${stats.minDuration.toFixed(0)}ms - ${stats.maxDuration.toFixed(0)}ms`));
|
|
370
|
+
}
|
|
371
|
+
console.log();
|
|
372
|
+
}
|
|
373
|
+
/**
|
|
374
|
+
* Clear performance history
|
|
375
|
+
*/
|
|
376
|
+
clearHistory() {
|
|
377
|
+
this.operationHistory.clear();
|
|
378
|
+
this.performanceMetrics.clear();
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
exports.AIClientRouter = AIClientRouter;
|
|
382
|
+
/**
|
|
383
|
+
* Singleton router instance
|
|
384
|
+
*/
|
|
385
|
+
let routerInstance = null;
|
|
386
|
+
/**
|
|
387
|
+
* Get router instance
|
|
388
|
+
*/
|
|
389
|
+
function getAIClientRouter() {
|
|
390
|
+
if (!routerInstance) {
|
|
391
|
+
routerInstance = new AIClientRouter();
|
|
392
|
+
}
|
|
393
|
+
return routerInstance;
|
|
394
|
+
}
|
|
395
|
+
/**
|
|
396
|
+
* Reset router (useful for testing)
|
|
397
|
+
*/
|
|
398
|
+
function resetAIClientRouter() {
|
|
399
|
+
routerInstance = null;
|
|
400
|
+
}
|
|
401
|
+
//# sourceMappingURL=aiClientRouter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aiClientRouter.js","sourceRoot":"","sources":["../../src/utils/aiClientRouter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Build Validation System
|
|
3
|
+
*
|
|
4
|
+
* Ensures every component passes TypeScript, ESLint, and build checks.
|
|
5
|
+
* Follows "LLM as Compiler" philosophy - validates the "compiled output".
|
|
6
|
+
*/
|
|
7
|
+
export interface ValidationResult {
|
|
8
|
+
passed: boolean;
|
|
9
|
+
errors: string[];
|
|
10
|
+
warnings: string[];
|
|
11
|
+
output?: string;
|
|
12
|
+
}
|
|
13
|
+
export interface BuildValidationResults {
|
|
14
|
+
typescript: ValidationResult;
|
|
15
|
+
eslint: ValidationResult;
|
|
16
|
+
build: ValidationResult;
|
|
17
|
+
tests?: ValidationResult;
|
|
18
|
+
}
|
|
19
|
+
export declare class BuildValidator {
|
|
20
|
+
private projectPath;
|
|
21
|
+
private verbose;
|
|
22
|
+
constructor(projectPath: string, verbose?: boolean);
|
|
23
|
+
/**
|
|
24
|
+
* Run TypeScript type checking
|
|
25
|
+
*/
|
|
26
|
+
validateTypeScript(filePath?: string): Promise<ValidationResult>;
|
|
27
|
+
/**
|
|
28
|
+
* Run ESLint
|
|
29
|
+
*/
|
|
30
|
+
validateESLint(filePath?: string): Promise<ValidationResult>;
|
|
31
|
+
/**
|
|
32
|
+
* Run full build
|
|
33
|
+
*/
|
|
34
|
+
validateBuild(): Promise<ValidationResult>;
|
|
35
|
+
/**
|
|
36
|
+
* Run tests for a component
|
|
37
|
+
*/
|
|
38
|
+
validateTests(testPath?: string): Promise<ValidationResult>;
|
|
39
|
+
/**
|
|
40
|
+
* Run all validations for a component
|
|
41
|
+
*/
|
|
42
|
+
validateComponent(componentPath: string, withTests?: boolean): Promise<BuildValidationResults>;
|
|
43
|
+
/**
|
|
44
|
+
* Run complete project validation
|
|
45
|
+
*/
|
|
46
|
+
validateProject(): Promise<BuildValidationResults>;
|
|
47
|
+
/**
|
|
48
|
+
* Parse TypeScript errors
|
|
49
|
+
*/
|
|
50
|
+
private parseTypeScriptErrors;
|
|
51
|
+
/**
|
|
52
|
+
* Parse ESLint errors
|
|
53
|
+
*/
|
|
54
|
+
private parseESLintErrors;
|
|
55
|
+
/**
|
|
56
|
+
* Parse build errors
|
|
57
|
+
*/
|
|
58
|
+
private parseBuildErrors;
|
|
59
|
+
/**
|
|
60
|
+
* Parse test errors
|
|
61
|
+
*/
|
|
62
|
+
private parseTestErrors;
|
|
63
|
+
/**
|
|
64
|
+
* Get error context for AI retry
|
|
65
|
+
*/
|
|
66
|
+
static extractErrorContext(validationResults: BuildValidationResults): string;
|
|
67
|
+
/**
|
|
68
|
+
* Format validation summary
|
|
69
|
+
*/
|
|
70
|
+
static formatValidationSummary(results: BuildValidationResults): string;
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=buildValidator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buildValidator.d.ts","sourceRoot":"","sources":["../../src/utils/buildValidator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAUH,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE,gBAAgB,CAAC;IAC7B,MAAM,EAAE,gBAAgB,CAAC;IACzB,KAAK,EAAE,gBAAgB,CAAC;IACxB,KAAK,CAAC,EAAE,gBAAgB,CAAC;CAC1B;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,OAAO,CAAU;gBAEb,WAAW,EAAE,MAAM,EAAE,OAAO,UAAQ;IAKhD;;OAEG;IACG,kBAAkB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAoCtE;;OAEG;IACG,cAAc,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IA0ClE;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAgChD;;OAEG;IACG,aAAa,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAoCjE;;OAEG;IACG,iBAAiB,CAAC,aAAa,EAAE,MAAM,EAAE,SAAS,UAAQ,GAAG,OAAO,CAAC,sBAAsB,CAAC;IA8BlG;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,sBAAsB,CAAC;IAqBxD;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAa7B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAgBzB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAkBxB;;OAEG;IACH,OAAO,CAAC,eAAe;IAavB;;OAEG;IACH,MAAM,CAAC,mBAAmB,CAAC,iBAAiB,EAAE,sBAAsB,GAAG,MAAM;IA0B7E;;OAEG;IACH,MAAM,CAAC,uBAAuB,CAAC,OAAO,EAAE,sBAAsB,GAAG,MAAM;CAcxE"}
|