mycontext-cli 2.0.26 → 2.0.28
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 +36 -355
- package/dist/agents/implementations/CodeGenSubAgent.d.ts.map +1 -1
- package/dist/agents/implementations/CodeGenSubAgent.js +67 -14
- package/dist/agents/implementations/CodeGenSubAgent.js.map +1 -1
- package/dist/agents/implementations/DesignPipelineAgent.d.ts +80 -0
- package/dist/agents/implementations/DesignPipelineAgent.d.ts.map +1 -0
- package/dist/agents/implementations/DesignPipelineAgent.js +1406 -0
- package/dist/agents/implementations/DesignPipelineAgent.js.map +1 -0
- package/dist/agents/implementations/FeatureAssemblyAgent.d.ts +67 -0
- package/dist/agents/implementations/FeatureAssemblyAgent.d.ts.map +1 -0
- package/dist/agents/implementations/FeatureAssemblyAgent.js +564 -0
- package/dist/agents/implementations/FeatureAssemblyAgent.js.map +1 -0
- package/dist/agents/implementations/PromptConstructorAgent.d.ts +10 -0
- package/dist/agents/implementations/PromptConstructorAgent.d.ts.map +1 -1
- package/dist/agents/implementations/PromptConstructorAgent.js +172 -12
- package/dist/agents/implementations/PromptConstructorAgent.js.map +1 -1
- package/dist/agents/implementations/RoleBasedGenerator.d.ts +52 -0
- package/dist/agents/implementations/RoleBasedGenerator.d.ts.map +1 -0
- package/dist/agents/implementations/RoleBasedGenerator.js +370 -0
- package/dist/agents/implementations/RoleBasedGenerator.js.map +1 -0
- package/dist/cli.js +65 -0
- package/dist/cli.js.map +1 -1
- package/dist/clients/ClaudeSDKClient.d.ts +48 -0
- package/dist/clients/ClaudeSDKClient.d.ts.map +1 -0
- package/dist/clients/ClaudeSDKClient.js +158 -0
- package/dist/clients/ClaudeSDKClient.js.map +1 -0
- package/dist/clients/MyContextAIClient.d.ts +73 -0
- package/dist/clients/MyContextAIClient.d.ts.map +1 -0
- package/dist/clients/MyContextAIClient.js +280 -0
- package/dist/clients/MyContextAIClient.js.map +1 -0
- package/dist/clients/ProviderChain.d.ts +87 -0
- package/dist/clients/ProviderChain.d.ts.map +1 -0
- package/dist/clients/ProviderChain.js +246 -0
- package/dist/clients/ProviderChain.js.map +1 -0
- package/dist/clients/XAIClient.d.ts +48 -0
- package/dist/clients/XAIClient.d.ts.map +1 -0
- package/dist/clients/XAIClient.js +152 -0
- package/dist/clients/XAIClient.js.map +1 -0
- package/dist/commands/assemble-features.d.ts +40 -0
- package/dist/commands/assemble-features.d.ts.map +1 -0
- package/dist/commands/assemble-features.js +383 -0
- package/dist/commands/assemble-features.js.map +1 -0
- package/dist/commands/clone-starter.d.ts +32 -0
- package/dist/commands/clone-starter.d.ts.map +1 -0
- package/dist/commands/clone-starter.js +218 -0
- package/dist/commands/clone-starter.js.map +1 -0
- package/dist/commands/design-analyze.d.ts +46 -0
- package/dist/commands/design-analyze.d.ts.map +1 -0
- package/dist/commands/design-analyze.js +232 -0
- package/dist/commands/design-analyze.js.map +1 -0
- package/dist/commands/generate-components.d.ts +1 -0
- package/dist/commands/generate-components.d.ts.map +1 -1
- package/dist/commands/generate-components.js +42 -9
- package/dist/commands/generate-components.js.map +1 -1
- package/dist/commands/generate.d.ts.map +1 -1
- package/dist/commands/generate.js +34 -1
- package/dist/commands/generate.js.map +1 -1
- package/dist/commands/setup-complete.d.ts.map +1 -1
- package/dist/commands/setup-complete.js +38 -2
- package/dist/commands/setup-complete.js.map +1 -1
- package/dist/commands/workflow.d.ts.map +1 -1
- package/dist/commands/workflow.js +86 -7
- package/dist/commands/workflow.js.map +1 -1
- package/dist/config/intent-dictionary.json +3700 -0
- package/dist/package.json +3 -1
- package/dist/services/IntentEnricher.d.ts +61 -0
- package/dist/services/IntentEnricher.d.ts.map +1 -0
- package/dist/services/IntentEnricher.js +318 -0
- package/dist/services/IntentEnricher.js.map +1 -0
- package/dist/services/IntentValidator.d.ts +114 -0
- package/dist/services/IntentValidator.d.ts.map +1 -0
- package/dist/services/IntentValidator.js +680 -0
- package/dist/services/IntentValidator.js.map +1 -0
- package/dist/types/design-pipeline.d.ts +300 -0
- package/dist/types/design-pipeline.d.ts.map +1 -0
- package/dist/types/design-pipeline.js +9 -0
- package/dist/types/design-pipeline.js.map +1 -0
- package/dist/types/feature-bundle.d.ts +239 -0
- package/dist/types/feature-bundle.d.ts.map +1 -0
- package/dist/types/feature-bundle.js +9 -0
- package/dist/types/feature-bundle.js.map +1 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -1
- package/dist/types/intent-dictionary.d.ts +525 -0
- package/dist/types/intent-dictionary.d.ts.map +1 -0
- package/dist/types/intent-dictionary.js +11 -0
- package/dist/types/intent-dictionary.js.map +1 -0
- package/dist/types/role-permissions.d.ts +167 -0
- package/dist/types/role-permissions.d.ts.map +1 -0
- package/dist/types/role-permissions.js +9 -0
- package/dist/types/role-permissions.js.map +1 -0
- package/dist/utils/contextEnricher.d.ts +41 -0
- package/dist/utils/contextEnricher.d.ts.map +1 -0
- package/dist/utils/contextEnricher.js +327 -0
- package/dist/utils/contextEnricher.js.map +1 -0
- package/dist/utils/designFallbacks.d.ts +48 -0
- package/dist/utils/designFallbacks.d.ts.map +1 -0
- package/dist/utils/designFallbacks.js +885 -0
- package/dist/utils/designFallbacks.js.map +1 -0
- package/dist/utils/designManifestManager.d.ts +89 -0
- package/dist/utils/designManifestManager.d.ts.map +1 -0
- package/dist/utils/designManifestManager.js +533 -0
- package/dist/utils/designManifestManager.js.map +1 -0
- package/dist/utils/designPipelineStateManager.d.ts +63 -0
- package/dist/utils/designPipelineStateManager.d.ts.map +1 -0
- package/dist/utils/designPipelineStateManager.js +174 -0
- package/dist/utils/designPipelineStateManager.js.map +1 -0
- package/dist/utils/envExampleGenerator.d.ts.map +1 -1
- package/dist/utils/envExampleGenerator.js +35 -171
- package/dist/utils/envExampleGenerator.js.map +1 -1
- package/dist/utils/featureBundleManager.d.ts +90 -0
- package/dist/utils/featureBundleManager.d.ts.map +1 -0
- package/dist/utils/featureBundleManager.js +340 -0
- package/dist/utils/featureBundleManager.js.map +1 -0
- package/dist/utils/githubCloner.d.ts +93 -0
- package/dist/utils/githubCloner.d.ts.map +1 -0
- package/dist/utils/githubCloner.js +305 -0
- package/dist/utils/githubCloner.js.map +1 -0
- package/dist/utils/rolePermissionMapper.d.ts +89 -0
- package/dist/utils/rolePermissionMapper.d.ts.map +1 -0
- package/dist/utils/rolePermissionMapper.js +337 -0
- package/dist/utils/rolePermissionMapper.js.map +1 -0
- package/dist/utils/unifiedDesignContextLoader.d.ts +76 -0
- package/dist/utils/unifiedDesignContextLoader.d.ts.map +1 -0
- package/dist/utils/unifiedDesignContextLoader.js +344 -0
- package/dist/utils/unifiedDesignContextLoader.js.map +1 -0
- package/package.json +3 -1
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ProviderChain = void 0;
|
|
4
|
+
exports.getProviderChain = getProviderChain;
|
|
5
|
+
exports.resetProviderChain = resetProviderChain;
|
|
6
|
+
const MyContextAIClient_1 = require("./MyContextAIClient");
|
|
7
|
+
const ClaudeSDKClient_1 = require("./ClaudeSDKClient");
|
|
8
|
+
const XAIClient_1 = require("./XAIClient");
|
|
9
|
+
/**
|
|
10
|
+
* Simplified Provider Chain for MyContext CLI
|
|
11
|
+
*
|
|
12
|
+
* Primary: MyContext AI (Fine-tuned GPT-4o Mini)
|
|
13
|
+
* Fallback 1: Claude SDK
|
|
14
|
+
* Fallback 2: XAI (Grok)
|
|
15
|
+
*
|
|
16
|
+
* This replaces the complex HybridAIClient with a streamlined approach
|
|
17
|
+
* focused on our specialized fine-tuned model.
|
|
18
|
+
*/
|
|
19
|
+
class ProviderChain {
|
|
20
|
+
constructor() {
|
|
21
|
+
this.clientType = "hybrid";
|
|
22
|
+
this.supportsTools = true;
|
|
23
|
+
this.supportsStreaming = false;
|
|
24
|
+
// Initialize providers in order of preference
|
|
25
|
+
this.myContextAI = new MyContextAIClient_1.MyContextAIClient();
|
|
26
|
+
this.claudeSDK = new ClaudeSDKClient_1.ClaudeSDKClient();
|
|
27
|
+
this.xai = new XAIClient_1.XAIClient();
|
|
28
|
+
this.providers = [
|
|
29
|
+
this.myContextAI, // Primary: Fine-tuned model
|
|
30
|
+
this.claudeSDK, // Fallback 1: Claude SDK
|
|
31
|
+
this.xai, // Fallback 2: XAI (Grok)
|
|
32
|
+
];
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Check if any provider has API key configured
|
|
36
|
+
*/
|
|
37
|
+
hasApiKey() {
|
|
38
|
+
return this.providers.some((provider) => provider.hasApiKey());
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Set API key for all providers
|
|
42
|
+
*/
|
|
43
|
+
setApiKey(apiKey) {
|
|
44
|
+
this.providers.forEach((provider) => {
|
|
45
|
+
if (provider.setApiKey) {
|
|
46
|
+
provider.setApiKey(apiKey);
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Check connection to any available provider
|
|
52
|
+
*/
|
|
53
|
+
async checkConnection() {
|
|
54
|
+
for (const provider of this.providers) {
|
|
55
|
+
try {
|
|
56
|
+
const isConnected = await provider.checkConnection();
|
|
57
|
+
if (isConnected) {
|
|
58
|
+
return true;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
catch (error) {
|
|
62
|
+
console.warn(`Provider ${provider.constructor.name} connection failed:`, error);
|
|
63
|
+
continue;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return false;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Generate text using the first available provider
|
|
70
|
+
*/
|
|
71
|
+
async generateText(prompt, options = {}) {
|
|
72
|
+
for (const provider of this.providers) {
|
|
73
|
+
try {
|
|
74
|
+
if (!provider.hasApiKey()) {
|
|
75
|
+
console.warn(`Provider ${provider.constructor.name} has no API key, skipping`);
|
|
76
|
+
continue;
|
|
77
|
+
}
|
|
78
|
+
const result = await provider.generateText(prompt, options);
|
|
79
|
+
console.log(`✅ Generated text using ${provider.constructor.name}`);
|
|
80
|
+
return result;
|
|
81
|
+
}
|
|
82
|
+
catch (error) {
|
|
83
|
+
console.warn(`❌ Provider ${provider.constructor.name} failed:`, error);
|
|
84
|
+
continue;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
throw new Error("All AI providers failed to generate text");
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Generate React component using MyContext AI with fallbacks
|
|
91
|
+
*/
|
|
92
|
+
async generateComponent(prompt, context, options = {}) {
|
|
93
|
+
for (const provider of this.providers) {
|
|
94
|
+
try {
|
|
95
|
+
if (!provider.hasApiKey()) {
|
|
96
|
+
console.warn(`Provider ${provider.constructor.name} has no API key, skipping`);
|
|
97
|
+
continue;
|
|
98
|
+
}
|
|
99
|
+
const result = await provider.generateComponent(prompt, context, options);
|
|
100
|
+
console.log(`✅ Generated component using ${provider.constructor.name}`);
|
|
101
|
+
return result;
|
|
102
|
+
}
|
|
103
|
+
catch (error) {
|
|
104
|
+
console.warn(`❌ Provider ${provider.constructor.name} failed:`, error);
|
|
105
|
+
continue;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
throw new Error("All AI providers failed to generate component");
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Generate component refinement using the first available provider
|
|
112
|
+
*/
|
|
113
|
+
async generateComponentRefinement(componentCode, prompt, context, options = {}) {
|
|
114
|
+
for (const provider of this.providers) {
|
|
115
|
+
try {
|
|
116
|
+
if (!provider.hasApiKey()) {
|
|
117
|
+
console.warn(`Provider ${provider.constructor.name} has no API key, skipping`);
|
|
118
|
+
continue;
|
|
119
|
+
}
|
|
120
|
+
const result = await provider.generateComponentRefinement(componentCode, prompt, context, options);
|
|
121
|
+
console.log(`✅ Refined component using ${provider.constructor.name}`);
|
|
122
|
+
return result;
|
|
123
|
+
}
|
|
124
|
+
catch (error) {
|
|
125
|
+
console.warn(`❌ Provider ${provider.constructor.name} failed:`, error);
|
|
126
|
+
continue;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
throw new Error("All AI providers failed to refine component");
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* List models from all providers
|
|
133
|
+
*/
|
|
134
|
+
async listModels() {
|
|
135
|
+
const allModels = [];
|
|
136
|
+
for (const provider of this.providers) {
|
|
137
|
+
try {
|
|
138
|
+
if (provider.hasApiKey()) {
|
|
139
|
+
const models = await provider.listModels();
|
|
140
|
+
allModels.push(...models);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
catch (error) {
|
|
144
|
+
console.warn(`Failed to list models from ${provider.constructor.name}:`, error);
|
|
145
|
+
continue;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
return [...new Set(allModels)]; // Remove duplicates
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Get the primary provider (MyContext AI)
|
|
152
|
+
*/
|
|
153
|
+
getPrimaryProvider() {
|
|
154
|
+
return this.myContextAI;
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Get provider by name
|
|
158
|
+
*/
|
|
159
|
+
getProvider(name) {
|
|
160
|
+
switch (name.toLowerCase()) {
|
|
161
|
+
case "mycontext":
|
|
162
|
+
case "mycontext-ai":
|
|
163
|
+
return this.myContextAI;
|
|
164
|
+
case "claude":
|
|
165
|
+
case "claude-sdk":
|
|
166
|
+
return this.claudeSDK;
|
|
167
|
+
case "xai":
|
|
168
|
+
case "grok":
|
|
169
|
+
return this.xai;
|
|
170
|
+
default:
|
|
171
|
+
return null;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Get provider status
|
|
176
|
+
*/
|
|
177
|
+
getProviderStatus() {
|
|
178
|
+
return this.providers.map((provider) => ({
|
|
179
|
+
name: provider.constructor.name,
|
|
180
|
+
hasKey: provider.hasApiKey(),
|
|
181
|
+
connected: false, // Will be updated by checkConnection
|
|
182
|
+
}));
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Check all provider connections
|
|
186
|
+
*/
|
|
187
|
+
async checkAllConnections() {
|
|
188
|
+
const statuses = await Promise.all(this.providers.map(async (provider) => {
|
|
189
|
+
const hasKey = provider.hasApiKey();
|
|
190
|
+
let connected = false;
|
|
191
|
+
if (hasKey) {
|
|
192
|
+
try {
|
|
193
|
+
connected = await provider.checkConnection();
|
|
194
|
+
}
|
|
195
|
+
catch (error) {
|
|
196
|
+
connected = false;
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
return {
|
|
200
|
+
name: provider.constructor.name,
|
|
201
|
+
hasKey,
|
|
202
|
+
connected,
|
|
203
|
+
};
|
|
204
|
+
}));
|
|
205
|
+
return statuses;
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Cleanup all providers
|
|
209
|
+
*/
|
|
210
|
+
async cleanup() {
|
|
211
|
+
await Promise.all(this.providers.map(async (provider) => {
|
|
212
|
+
if (provider.cleanup) {
|
|
213
|
+
try {
|
|
214
|
+
await provider.cleanup();
|
|
215
|
+
}
|
|
216
|
+
catch (error) {
|
|
217
|
+
console.warn(`Failed to cleanup ${provider.constructor.name}:`, error);
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
}));
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
exports.ProviderChain = ProviderChain;
|
|
224
|
+
/**
|
|
225
|
+
* Singleton instance of the provider chain
|
|
226
|
+
*/
|
|
227
|
+
let providerChainInstance = null;
|
|
228
|
+
/**
|
|
229
|
+
* Get the global provider chain instance
|
|
230
|
+
*/
|
|
231
|
+
function getProviderChain() {
|
|
232
|
+
if (!providerChainInstance) {
|
|
233
|
+
providerChainInstance = new ProviderChain();
|
|
234
|
+
}
|
|
235
|
+
return providerChainInstance;
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* Reset the global provider chain instance
|
|
239
|
+
*/
|
|
240
|
+
function resetProviderChain() {
|
|
241
|
+
if (providerChainInstance) {
|
|
242
|
+
providerChainInstance.cleanup();
|
|
243
|
+
}
|
|
244
|
+
providerChainInstance = null;
|
|
245
|
+
}
|
|
246
|
+
//# sourceMappingURL=ProviderChain.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProviderChain.js","sourceRoot":"","sources":["../../src/clients/ProviderChain.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { AIClient, AIClientOptions, AgentContext } from "../interfaces/AIClient";
|
|
2
|
+
/**
|
|
3
|
+
* XAI Client - Fallback provider using X AI API (Grok)
|
|
4
|
+
*
|
|
5
|
+
* This is a simplified client that uses the X AI API directly
|
|
6
|
+
* as a secondary fallback when MyContext AI and Claude SDK are not available.
|
|
7
|
+
*/
|
|
8
|
+
export declare class XAIClient implements AIClient {
|
|
9
|
+
readonly clientType: "direct-api";
|
|
10
|
+
readonly supportsTools = false;
|
|
11
|
+
readonly supportsStreaming = false;
|
|
12
|
+
private apiKey;
|
|
13
|
+
private baseUrl;
|
|
14
|
+
constructor();
|
|
15
|
+
/**
|
|
16
|
+
* Check if API key is available
|
|
17
|
+
*/
|
|
18
|
+
hasApiKey(): boolean;
|
|
19
|
+
/**
|
|
20
|
+
* Set API key for X AI API
|
|
21
|
+
*/
|
|
22
|
+
setApiKey(apiKey: string): void;
|
|
23
|
+
/**
|
|
24
|
+
* Check connection to X AI API
|
|
25
|
+
*/
|
|
26
|
+
checkConnection(): Promise<boolean>;
|
|
27
|
+
/**
|
|
28
|
+
* Generate text using X AI API
|
|
29
|
+
*/
|
|
30
|
+
generateText(prompt: string, options?: AIClientOptions): Promise<string>;
|
|
31
|
+
/**
|
|
32
|
+
* Generate React component using X AI API
|
|
33
|
+
*/
|
|
34
|
+
generateComponent(prompt: string, context?: AgentContext, options?: AIClientOptions): Promise<string>;
|
|
35
|
+
/**
|
|
36
|
+
* Generate component refinement using X AI API
|
|
37
|
+
*/
|
|
38
|
+
generateComponentRefinement(componentCode: string, prompt: string, context?: AgentContext, options?: AIClientOptions): Promise<string>;
|
|
39
|
+
/**
|
|
40
|
+
* List available models
|
|
41
|
+
*/
|
|
42
|
+
listModels(): Promise<string[]>;
|
|
43
|
+
/**
|
|
44
|
+
* Cleanup resources
|
|
45
|
+
*/
|
|
46
|
+
cleanup(): Promise<void>;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=XAIClient.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"XAIClient.d.ts","sourceRoot":"","sources":["../../src/clients/XAIClient.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,eAAe,EACf,YAAY,EACb,MAAM,wBAAwB,CAAC;AAEhC;;;;;GAKG;AACH,qBAAa,SAAU,YAAW,QAAQ;IACxC,QAAQ,CAAC,UAAU,EAAG,YAAY,CAAU;IAC5C,QAAQ,CAAC,aAAa,SAAS;IAC/B,QAAQ,CAAC,iBAAiB,SAAS;IAEnC,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,OAAO,CAAyB;;IAMxC;;OAEG;IACH,SAAS,IAAI,OAAO;IAIpB;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI/B;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC;IA+BzC;;OAEG;IACG,YAAY,CAChB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,MAAM,CAAC;IAsClB;;OAEG;IACG,iBAAiB,CACrB,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,YAAY,EACtB,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,MAAM,CAAC;IAoBlB;;OAEG;IACG,2BAA2B,CAC/B,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,YAAY,EACtB,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,MAAM,CAAC;IAmBlB;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAIrC;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAG/B"}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.XAIClient = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* XAI Client - Fallback provider using X AI API (Grok)
|
|
6
|
+
*
|
|
7
|
+
* This is a simplified client that uses the X AI API directly
|
|
8
|
+
* as a secondary fallback when MyContext AI and Claude SDK are not available.
|
|
9
|
+
*/
|
|
10
|
+
class XAIClient {
|
|
11
|
+
constructor() {
|
|
12
|
+
this.clientType = "direct-api";
|
|
13
|
+
this.supportsTools = false;
|
|
14
|
+
this.supportsStreaming = false;
|
|
15
|
+
this.apiKey = null;
|
|
16
|
+
this.baseUrl = "https://api.x.ai/v1";
|
|
17
|
+
this.apiKey = process.env.XAI_API_KEY || null;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Check if API key is available
|
|
21
|
+
*/
|
|
22
|
+
hasApiKey() {
|
|
23
|
+
return !!this.apiKey;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Set API key for X AI API
|
|
27
|
+
*/
|
|
28
|
+
setApiKey(apiKey) {
|
|
29
|
+
this.apiKey = apiKey;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Check connection to X AI API
|
|
33
|
+
*/
|
|
34
|
+
async checkConnection() {
|
|
35
|
+
if (!this.apiKey) {
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
try {
|
|
39
|
+
const response = await fetch(`${this.baseUrl}/chat/completions`, {
|
|
40
|
+
method: "POST",
|
|
41
|
+
headers: {
|
|
42
|
+
"Content-Type": "application/json",
|
|
43
|
+
Authorization: `Bearer ${this.apiKey}`,
|
|
44
|
+
},
|
|
45
|
+
body: JSON.stringify({
|
|
46
|
+
model: "grok-beta",
|
|
47
|
+
max_tokens: 10,
|
|
48
|
+
messages: [
|
|
49
|
+
{
|
|
50
|
+
role: "user",
|
|
51
|
+
content: "test",
|
|
52
|
+
},
|
|
53
|
+
],
|
|
54
|
+
}),
|
|
55
|
+
});
|
|
56
|
+
return response.ok;
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
console.warn("XAI connection check failed:", error);
|
|
60
|
+
return false;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Generate text using X AI API
|
|
65
|
+
*/
|
|
66
|
+
async generateText(prompt, options = {}) {
|
|
67
|
+
if (!this.apiKey) {
|
|
68
|
+
throw new Error("XAI API key not configured");
|
|
69
|
+
}
|
|
70
|
+
try {
|
|
71
|
+
const response = await fetch(`${this.baseUrl}/chat/completions`, {
|
|
72
|
+
method: "POST",
|
|
73
|
+
headers: {
|
|
74
|
+
"Content-Type": "application/json",
|
|
75
|
+
Authorization: `Bearer ${this.apiKey}`,
|
|
76
|
+
},
|
|
77
|
+
body: JSON.stringify({
|
|
78
|
+
model: options.model || "grok-beta",
|
|
79
|
+
max_tokens: options.maxTokens || 4000,
|
|
80
|
+
temperature: options.temperature || 0.7,
|
|
81
|
+
messages: [
|
|
82
|
+
{
|
|
83
|
+
role: "user",
|
|
84
|
+
content: prompt,
|
|
85
|
+
},
|
|
86
|
+
],
|
|
87
|
+
}),
|
|
88
|
+
});
|
|
89
|
+
if (!response.ok) {
|
|
90
|
+
throw new Error(`XAI API error: ${response.status} ${response.statusText}`);
|
|
91
|
+
}
|
|
92
|
+
const data = await response.json();
|
|
93
|
+
return data.choices[0].message.content || "";
|
|
94
|
+
}
|
|
95
|
+
catch (error) {
|
|
96
|
+
throw new Error(`XAI generation failed: ${error}`);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Generate React component using X AI API
|
|
101
|
+
*/
|
|
102
|
+
async generateComponent(prompt, context, options = {}) {
|
|
103
|
+
const systemPrompt = `You are a React component generator. Generate production-ready React components with TypeScript.
|
|
104
|
+
|
|
105
|
+
Requirements:
|
|
106
|
+
- Use functional components with hooks
|
|
107
|
+
- Include proper TypeScript types
|
|
108
|
+
- Add accessibility attributes
|
|
109
|
+
- Use Tailwind CSS for styling
|
|
110
|
+
- Include proper imports and exports
|
|
111
|
+
- Generate complete, runnable code
|
|
112
|
+
|
|
113
|
+
${context?.prd ? `Project Requirements: ${context.prd}` : ""}
|
|
114
|
+
${context?.types ? `Type Definitions: ${context.types}` : ""}
|
|
115
|
+
${context?.brand ? `Brand Guidelines: ${context.brand}` : ""}`;
|
|
116
|
+
const fullPrompt = `${systemPrompt}\n\nGenerate a React component for: ${prompt}`;
|
|
117
|
+
return this.generateText(fullPrompt, options);
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Generate component refinement using X AI API
|
|
121
|
+
*/
|
|
122
|
+
async generateComponentRefinement(componentCode, prompt, context, options = {}) {
|
|
123
|
+
const systemPrompt = `You are a React component refiner. Improve and modify existing React components.
|
|
124
|
+
|
|
125
|
+
Requirements:
|
|
126
|
+
- Maintain existing functionality
|
|
127
|
+
- Preserve TypeScript types
|
|
128
|
+
- Keep accessibility attributes
|
|
129
|
+
- Follow React best practices
|
|
130
|
+
- Provide complete refined component
|
|
131
|
+
|
|
132
|
+
${context?.prd ? `Project Requirements: ${context.prd}` : ""}
|
|
133
|
+
${context?.types ? `Type Definitions: ${context.types}` : ""}
|
|
134
|
+
${context?.brand ? `Brand Guidelines: ${context.brand}` : ""}`;
|
|
135
|
+
const fullPrompt = `${systemPrompt}\n\nComponent to refine:\n\`\`\`tsx\n${componentCode}\n\`\`\n\nRefinement request: ${prompt}`;
|
|
136
|
+
return this.generateText(fullPrompt, options);
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* List available models
|
|
140
|
+
*/
|
|
141
|
+
async listModels() {
|
|
142
|
+
return ["grok-beta", "grok-2-1212", "grok-2-vision-1212"];
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Cleanup resources
|
|
146
|
+
*/
|
|
147
|
+
async cleanup() {
|
|
148
|
+
// No cleanup needed for fetch-based client
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
exports.XAIClient = XAIClient;
|
|
152
|
+
//# sourceMappingURL=XAIClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"XAIClient.js","sourceRoot":"","sources":["../../src/clients/XAIClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Assemble Features Command
|
|
3
|
+
*
|
|
4
|
+
* Combines generated components into complete working features
|
|
5
|
+
* with actions, hooks, routes, and role-based permissions.
|
|
6
|
+
*/
|
|
7
|
+
import { Command } from "commander";
|
|
8
|
+
import { Role } from "../types/role-permissions";
|
|
9
|
+
export interface AssembleFeaturesOptions {
|
|
10
|
+
fromComponents?: boolean;
|
|
11
|
+
useStarter?: boolean;
|
|
12
|
+
role?: Role;
|
|
13
|
+
feature?: string;
|
|
14
|
+
output?: string;
|
|
15
|
+
template?: string;
|
|
16
|
+
includeTests?: boolean;
|
|
17
|
+
includeDocs?: boolean;
|
|
18
|
+
verbose?: boolean;
|
|
19
|
+
}
|
|
20
|
+
export declare class AssembleFeaturesCommand {
|
|
21
|
+
private command;
|
|
22
|
+
constructor();
|
|
23
|
+
private setupCommand;
|
|
24
|
+
execute(options: AssembleFeaturesOptions): Promise<void>;
|
|
25
|
+
private assembleFromStarter;
|
|
26
|
+
private assembleFromComponents;
|
|
27
|
+
private loadAdminStarterBundle;
|
|
28
|
+
private extractFeaturesFromStarter;
|
|
29
|
+
private loadGeneratedComponents;
|
|
30
|
+
private loadContextFiles;
|
|
31
|
+
private loadDesignManifest;
|
|
32
|
+
private loadFeatureTemplates;
|
|
33
|
+
private getTargetRoles;
|
|
34
|
+
private saveFeatureBundles;
|
|
35
|
+
private hasGeneratedComponents;
|
|
36
|
+
private hasAdminStarter;
|
|
37
|
+
private showNextSteps;
|
|
38
|
+
getCommand(): Command;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=assemble-features.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assemble-features.d.ts","sourceRoot":"","sources":["../../src/commands/assemble-features.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAapC,OAAO,EAAE,IAAI,EAAiB,MAAM,2BAA2B,CAAC;AAGhE,MAAM,WAAW,uBAAuB;IACtC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,qBAAa,uBAAuB;IAClC,OAAO,CAAC,OAAO,CAAU;;IAOzB,OAAO,CAAC,YAAY;IAqBd,OAAO,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC;YAwChD,mBAAmB;YAkDnB,sBAAsB;YAkDtB,sBAAsB;YAStB,0BAA0B;YA4E1B,uBAAuB;YAevB,gBAAgB;YAuBhB,kBAAkB;YAelB,oBAAoB;IA2BlC,OAAO,CAAC,cAAc;YASR,kBAAkB;YA6ClB,sBAAsB;YAUtB,eAAe;IAc7B,OAAO,CAAC,aAAa;IAgCrB,UAAU,IAAI,OAAO;CAGtB"}
|