mycontext-cli 2.0.8 → 2.0.9
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/dist/agents/communication/AgentCommunicationManager.d.ts +3 -3
- package/dist/agents/communication/AgentCommunicationManager.d.ts.map +1 -1
- package/dist/agents/communication/AgentCommunicationManager.js +7 -6
- package/dist/agents/communication/AgentCommunicationManager.js.map +1 -1
- package/dist/agents/evolution/CodeEvolutionEngine.d.ts.map +1 -1
- package/dist/agents/evolution/CodeEvolutionEngine.js +10 -7
- package/dist/agents/evolution/CodeEvolutionEngine.js.map +1 -1
- package/dist/agents/implementations/ArchitectAgent.js +2 -2
- package/dist/agents/implementations/ArchitectAgent.js.map +1 -1
- package/dist/agents/implementations/BackendDevAgent.d.ts.map +1 -1
- package/dist/agents/implementations/BackendDevAgent.js +4 -1
- package/dist/agents/implementations/BackendDevAgent.js.map +1 -1
- package/dist/agents/implementations/BuildStrategyAgent.d.ts.map +1 -1
- package/dist/agents/implementations/BuildStrategyAgent.js +4 -3
- package/dist/agents/implementations/BuildStrategyAgent.js.map +1 -1
- package/dist/agents/implementations/CodeGenSubAgent.d.ts.map +1 -1
- package/dist/agents/implementations/CodeGenSubAgent.js +6 -5
- package/dist/agents/implementations/CodeGenSubAgent.js.map +1 -1
- package/dist/agents/implementations/DocsSubAgent.js +2 -2
- package/dist/agents/implementations/DocsSubAgent.js.map +1 -1
- package/dist/agents/implementations/EnhancementAgent.d.ts.map +1 -1
- package/dist/agents/implementations/EnhancementAgent.js +6 -4
- package/dist/agents/implementations/EnhancementAgent.js.map +1 -1
- package/dist/agents/implementations/InteractiveAgent.d.ts.map +1 -1
- package/dist/agents/implementations/InteractiveAgent.js +8 -1
- package/dist/agents/implementations/InteractiveAgent.js.map +1 -1
- package/dist/agents/implementations/PromptConstructorAgent.d.ts.map +1 -1
- package/dist/agents/implementations/PromptConstructorAgent.js +79 -31
- package/dist/agents/implementations/PromptConstructorAgent.js.map +1 -1
- package/dist/agents/implementations/QASubAgent.js +2 -2
- package/dist/agents/implementations/QASubAgent.js.map +1 -1
- package/dist/agents/implementations/SecurityAgent.js +2 -2
- package/dist/agents/implementations/SecurityAgent.js.map +1 -1
- package/dist/agents/implementations/WorkflowAgent.d.ts +0 -1
- package/dist/agents/implementations/WorkflowAgent.d.ts.map +1 -1
- package/dist/agents/implementations/WorkflowAgent.js +6 -10
- package/dist/agents/implementations/WorkflowAgent.js.map +1 -1
- package/dist/agents/intelligence/ProjectIntelligence.js +5 -5
- package/dist/agents/intelligence/ProjectIntelligence.js.map +1 -1
- package/dist/agents/orchestrator/SubAgentOrchestrator.d.ts.map +1 -1
- package/dist/agents/orchestrator/SubAgentOrchestrator.js +4 -4
- package/dist/agents/orchestrator/SubAgentOrchestrator.js.map +1 -1
- package/dist/cli.js +8 -40
- package/dist/cli.js.map +1 -1
- package/dist/commands/analyze.d.ts.map +1 -1
- package/dist/commands/analyze.js +9 -9
- package/dist/commands/analyze.js.map +1 -1
- package/dist/commands/enhance.d.ts.map +1 -1
- package/dist/commands/enhance.js +23 -78
- package/dist/commands/enhance.js.map +1 -1
- package/dist/commands/generate-components.d.ts.map +1 -1
- package/dist/commands/generate-components.js +12 -7
- package/dist/commands/generate-components.js.map +1 -1
- package/dist/commands/generate-todos.js +1 -1
- package/dist/commands/generate-todos.js.map +1 -1
- package/dist/commands/generate.d.ts.map +1 -1
- package/dist/commands/generate.js +57 -41
- package/dist/commands/generate.js.map +1 -1
- package/dist/commands/playbooks.d.ts.map +1 -1
- package/dist/commands/playbooks.js +14 -8
- package/dist/commands/playbooks.js.map +1 -1
- package/dist/commands/preview.js +1 -1
- package/dist/commands/preview.js.map +1 -1
- package/dist/commands/refine.d.ts.map +1 -1
- package/dist/commands/refine.js +5 -3
- package/dist/commands/refine.js.map +1 -1
- package/dist/commands/sanitize.d.ts.map +1 -1
- package/dist/commands/sanitize.js +11 -4
- package/dist/commands/sanitize.js.map +1 -1
- package/dist/commands/setup-database.d.ts.map +1 -1
- package/dist/commands/setup-database.js +9 -7
- package/dist/commands/setup-database.js.map +1 -1
- package/dist/commands/setup-instantdb.d.ts.map +1 -1
- package/dist/commands/setup-instantdb.js +9 -7
- package/dist/commands/setup-instantdb.js.map +1 -1
- package/dist/config/build-strategies.json +2 -2
- package/dist/{agents/personalities/definitions.d.ts → constants/subAgentPersonalities.d.ts} +2 -2
- package/dist/constants/subAgentPersonalities.d.ts.map +1 -0
- package/dist/{agents/personalities/definitions.js → constants/subAgentPersonalities.js} +2 -2
- package/dist/constants/subAgentPersonalities.js.map +1 -0
- package/dist/package.json +1 -1
- package/dist/types/analysis.d.ts +67 -0
- package/dist/types/analysis.d.ts.map +1 -0
- package/dist/types/analysis.js +7 -0
- package/dist/types/analysis.js.map +1 -0
- package/dist/types/components.d.ts +90 -0
- package/dist/types/components.d.ts.map +1 -0
- package/dist/types/components.js +7 -0
- package/dist/types/components.js.map +1 -0
- package/dist/types/enhancement.d.ts +127 -0
- package/dist/types/enhancement.d.ts.map +1 -0
- package/dist/types/enhancement.js +7 -0
- package/dist/types/enhancement.js.map +1 -0
- package/dist/types/index.d.ts +4 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +25 -0
- package/dist/types/index.js.map +1 -1
- package/dist/types/progress.d.ts +88 -0
- package/dist/types/progress.d.ts.map +1 -0
- package/dist/types/progress.js +7 -0
- package/dist/types/progress.js.map +1 -0
- package/dist/utils/ProjectHealthMonitor.d.ts.map +1 -1
- package/dist/utils/ProjectHealthMonitor.js +47 -36
- package/dist/utils/ProjectHealthMonitor.js.map +1 -1
- package/dist/utils/agentDefinitions.d.ts +2 -2
- package/dist/utils/agentDefinitions.d.ts.map +1 -1
- package/dist/utils/agentDefinitions.js +40 -33
- package/dist/utils/agentDefinitions.js.map +1 -1
- package/dist/utils/buildStrategyManager.d.ts.map +1 -1
- package/dist/utils/buildStrategyManager.js +1 -1
- package/dist/utils/buildStrategyManager.js.map +1 -1
- package/dist/utils/claudeAgentClient.d.ts +0 -1
- package/dist/utils/claudeAgentClient.d.ts.map +1 -1
- package/dist/utils/claudeAgentClient.js +46 -39
- package/dist/utils/claudeAgentClient.js.map +1 -1
- package/dist/utils/hybridAIClient.d.ts +1 -9
- package/dist/utils/hybridAIClient.d.ts.map +1 -1
- package/dist/utils/hybridAIClient.js +81 -78
- package/dist/utils/hybridAIClient.js.map +1 -1
- package/dist/utils/mcpAgentIntegration.d.ts.map +1 -1
- package/dist/utils/mcpAgentIntegration.js +1 -1
- package/dist/utils/mcpAgentIntegration.js.map +1 -1
- package/dist/utils/mcpTools.d.ts +5 -5
- package/dist/utils/mcpTools.d.ts.map +1 -1
- package/dist/utils/mcpTools.js +319 -241
- package/dist/utils/mcpTools.js.map +1 -1
- package/dist/utils/progressTracker.d.ts +3 -79
- package/dist/utils/progressTracker.d.ts.map +1 -1
- package/dist/utils/progressTracker.js +92 -68
- package/dist/utils/progressTracker.js.map +1 -1
- package/dist/utils/typeTemplateGenerator.d.ts.map +1 -1
- package/dist/utils/typeTemplateGenerator.js +125 -79
- package/dist/utils/typeTemplateGenerator.js.map +1 -1
- package/package.json +1 -1
- package/dist/agents/implementations/ClaudeAgentWorkflow.d.ts +0 -110
- package/dist/agents/implementations/ClaudeAgentWorkflow.d.ts.map +0 -1
- package/dist/agents/implementations/ClaudeAgentWorkflow.js +0 -661
- package/dist/agents/implementations/ClaudeAgentWorkflow.js.map +0 -1
- package/dist/agents/personalities/definitions.d.ts.map +0 -1
- package/dist/agents/personalities/definitions.js.map +0 -1
- package/dist/commands/model.d.ts +0 -22
- package/dist/commands/model.d.ts.map +0 -1
- package/dist/commands/model.js +0 -130
- package/dist/commands/model.js.map +0 -1
- package/dist/commands/normalize.d.ts +0 -5
- package/dist/commands/normalize.d.ts.map +0 -1
- package/dist/commands/normalize.js +0 -128
- package/dist/commands/normalize.js.map +0 -1
- package/dist/commands/pricing.d.ts +0 -15
- package/dist/commands/pricing.d.ts.map +0 -1
- package/dist/commands/pricing.js +0 -94
- package/dist/commands/pricing.js.map +0 -1
- package/dist/config/ai-providers.json +0 -102
- package/dist/config/pricing.json +0 -55
- package/dist/utils/aiClientFactory.d.ts +0 -93
- package/dist/utils/aiClientFactory.d.ts.map +0 -1
- package/dist/utils/aiClientFactory.js +0 -290
- package/dist/utils/aiClientFactory.js.map +0 -1
- package/dist/utils/aiClientRouter.d.ts +0 -121
- package/dist/utils/aiClientRouter.d.ts.map +0 -1
- package/dist/utils/aiClientRouter.js +0 -401
- package/dist/utils/aiClientRouter.js.map +0 -1
- package/dist/utils/apiKeyManager.d.ts +0 -137
- package/dist/utils/apiKeyManager.d.ts.map +0 -1
- package/dist/utils/apiKeyManager.js +0 -479
- package/dist/utils/apiKeyManager.js.map +0 -1
- package/dist/utils/claudeClient.d.ts +0 -28
- package/dist/utils/claudeClient.d.ts.map +0 -1
- package/dist/utils/claudeClient.js +0 -233
- package/dist/utils/claudeClient.js.map +0 -1
- package/dist/utils/geminiClient.d.ts +0 -61
- package/dist/utils/geminiClient.d.ts.map +0 -1
- package/dist/utils/geminiClient.js +0 -173
- package/dist/utils/geminiClient.js.map +0 -1
- package/dist/utils/githubModelsClient.d.ts +0 -27
- package/dist/utils/githubModelsClient.d.ts.map +0 -1
- package/dist/utils/githubModelsClient.js +0 -332
- package/dist/utils/githubModelsClient.js.map +0 -1
- package/dist/utils/huggingFaceClient.d.ts +0 -44
- package/dist/utils/huggingFaceClient.d.ts.map +0 -1
- package/dist/utils/huggingFaceClient.js +0 -169
- package/dist/utils/huggingFaceClient.js.map +0 -1
- package/dist/utils/openaiClient.d.ts +0 -24
- package/dist/utils/openaiClient.d.ts.map +0 -1
- package/dist/utils/openaiClient.js +0 -204
- package/dist/utils/openaiClient.js.map +0 -1
- package/dist/utils/qwenClient.d.ts +0 -22
- package/dist/utils/qwenClient.d.ts.map +0 -1
- package/dist/utils/qwenClient.js +0 -185
- package/dist/utils/qwenClient.js.map +0 -1
- package/dist/utils/streamingHandler.d.ts +0 -98
- package/dist/utils/streamingHandler.d.ts.map +0 -1
- package/dist/utils/streamingHandler.js +0 -259
- package/dist/utils/streamingHandler.js.map +0 -1
- package/dist/utils/xaiClient.d.ts +0 -19
- package/dist/utils/xaiClient.d.ts.map +0 -1
- package/dist/utils/xaiClient.js +0 -135
- package/dist/utils/xaiClient.js.map +0 -1
|
@@ -1,401 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"aiClientRouter.js","sourceRoot":"","sources":["../../src/utils/aiClientRouter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,137 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Secure API Key Management System for MyContext CLI
|
|
3
|
-
*
|
|
4
|
-
* Handles storage, validation, and secure access to API keys for multiple AI providers.
|
|
5
|
-
* Supports environment variables, encrypted local storage, and secure key rotation.
|
|
6
|
-
*/
|
|
7
|
-
export interface APIKeyConfig {
|
|
8
|
-
provider: string;
|
|
9
|
-
key: string;
|
|
10
|
-
environment?: string;
|
|
11
|
-
createdAt: string;
|
|
12
|
-
lastUsed?: string;
|
|
13
|
-
isValid?: boolean;
|
|
14
|
-
permissions?: string[];
|
|
15
|
-
metadata?: Record<string, unknown>;
|
|
16
|
-
}
|
|
17
|
-
export interface APIKeyValidation {
|
|
18
|
-
isValid: boolean;
|
|
19
|
-
provider: string;
|
|
20
|
-
permissions?: string[];
|
|
21
|
-
rateLimit?: {
|
|
22
|
-
requests: number;
|
|
23
|
-
window: number;
|
|
24
|
-
resetTime?: string;
|
|
25
|
-
};
|
|
26
|
-
error?: string;
|
|
27
|
-
}
|
|
28
|
-
export interface ProviderConfig {
|
|
29
|
-
name: string;
|
|
30
|
-
envVar: string;
|
|
31
|
-
validationUrl?: string;
|
|
32
|
-
requiredPermissions?: string[];
|
|
33
|
-
rateLimits?: {
|
|
34
|
-
requests: number;
|
|
35
|
-
window: number;
|
|
36
|
-
};
|
|
37
|
-
}
|
|
38
|
-
export declare class APIKeyManager {
|
|
39
|
-
private static instance;
|
|
40
|
-
private keys;
|
|
41
|
-
private configPath;
|
|
42
|
-
private encryptionKey;
|
|
43
|
-
private providers;
|
|
44
|
-
private constructor();
|
|
45
|
-
static getInstance(): APIKeyManager;
|
|
46
|
-
/**
|
|
47
|
-
* Initialize supported AI providers
|
|
48
|
-
*/
|
|
49
|
-
private initializeProviders;
|
|
50
|
-
/**
|
|
51
|
-
* Get or generate encryption key for secure storage
|
|
52
|
-
*/
|
|
53
|
-
private getEncryptionKey;
|
|
54
|
-
/**
|
|
55
|
-
* Encrypt sensitive data
|
|
56
|
-
*/
|
|
57
|
-
private encrypt;
|
|
58
|
-
/**
|
|
59
|
-
* Decrypt sensitive data
|
|
60
|
-
*/
|
|
61
|
-
private decrypt;
|
|
62
|
-
/**
|
|
63
|
-
* Load API keys from secure storage
|
|
64
|
-
*/
|
|
65
|
-
loadKeys(): Promise<void>;
|
|
66
|
-
/**
|
|
67
|
-
* Save API keys to secure storage
|
|
68
|
-
*/
|
|
69
|
-
saveKeys(): Promise<void>;
|
|
70
|
-
/**
|
|
71
|
-
* Get API key for a provider
|
|
72
|
-
*/
|
|
73
|
-
getKey(provider: string): Promise<string | null>;
|
|
74
|
-
/**
|
|
75
|
-
* Get API key from environment variables
|
|
76
|
-
*/
|
|
77
|
-
private getKeyFromEnvironment;
|
|
78
|
-
/**
|
|
79
|
-
* Set API key for a provider
|
|
80
|
-
*/
|
|
81
|
-
setKey(provider: string, key: string, options?: Partial<APIKeyConfig>): Promise<void>;
|
|
82
|
-
/**
|
|
83
|
-
* Validate API key format
|
|
84
|
-
*/
|
|
85
|
-
private validateKeyFormat;
|
|
86
|
-
/**
|
|
87
|
-
* Validate API key with provider
|
|
88
|
-
*/
|
|
89
|
-
validateKey(provider: string, key?: string): Promise<APIKeyValidation>;
|
|
90
|
-
/**
|
|
91
|
-
* Validate API key with provider's API
|
|
92
|
-
*/
|
|
93
|
-
private validateWithProvider;
|
|
94
|
-
/**
|
|
95
|
-
* Remove API key for a provider
|
|
96
|
-
*/
|
|
97
|
-
removeKey(provider: string): Promise<void>;
|
|
98
|
-
/**
|
|
99
|
-
* List all configured API keys
|
|
100
|
-
*/
|
|
101
|
-
listKeys(): Array<{
|
|
102
|
-
provider: string;
|
|
103
|
-
hasKey: boolean;
|
|
104
|
-
source: "environment" | "storage" | "none";
|
|
105
|
-
}>;
|
|
106
|
-
/**
|
|
107
|
-
* Get provider configuration
|
|
108
|
-
*/
|
|
109
|
-
getProviderConfig(provider: string): ProviderConfig | undefined;
|
|
110
|
-
/**
|
|
111
|
-
* List all supported providers
|
|
112
|
-
*/
|
|
113
|
-
getSupportedProviders(): string[];
|
|
114
|
-
/**
|
|
115
|
-
* Clear all stored API keys
|
|
116
|
-
*/
|
|
117
|
-
clearAllKeys(): Promise<void>;
|
|
118
|
-
/**
|
|
119
|
-
* Export API keys (for backup purposes)
|
|
120
|
-
*/
|
|
121
|
-
exportKeys(password: string): Promise<string>;
|
|
122
|
-
/**
|
|
123
|
-
* Import API keys from backup
|
|
124
|
-
*/
|
|
125
|
-
importKeys(backupData: string, password: string): Promise<void>;
|
|
126
|
-
}
|
|
127
|
-
export declare const apiKeyManager: APIKeyManager;
|
|
128
|
-
export declare const getAPIKey: (provider: string) => Promise<string | null>;
|
|
129
|
-
export declare const setAPIKey: (provider: string, key: string, options?: Partial<APIKeyConfig>) => Promise<void>;
|
|
130
|
-
export declare const validateAPIKey: (provider: string, key?: string) => Promise<APIKeyValidation>;
|
|
131
|
-
export declare const removeAPIKey: (provider: string) => Promise<void>;
|
|
132
|
-
export declare const listAPIKeys: () => {
|
|
133
|
-
provider: string;
|
|
134
|
-
hasKey: boolean;
|
|
135
|
-
source: "environment" | "storage" | "none";
|
|
136
|
-
}[];
|
|
137
|
-
//# sourceMappingURL=apiKeyManager.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"apiKeyManager.d.ts","sourceRoot":"","sources":["../../src/utils/apiKeyManager.ts"],"names":[],"mappings":"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"}
|