mycontext-cli 0.4.19 → 1.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 +14 -11
- package/dist/agents/implementations/BackendDevAgent.d.ts +39 -0
- package/dist/agents/implementations/BackendDevAgent.d.ts.map +1 -0
- package/dist/agents/implementations/BackendDevAgent.js +821 -0
- package/dist/agents/implementations/BackendDevAgent.js.map +1 -0
- package/dist/agents/implementations/CodeGenSubAgent.d.ts +1 -1
- package/dist/agents/implementations/CodeGenSubAgent.d.ts.map +1 -1
- package/dist/agents/implementations/CodeGenSubAgent.js +34 -22
- package/dist/agents/implementations/CodeGenSubAgent.js.map +1 -1
- package/dist/agents/implementations/DocsSubAgent.d.ts +7 -0
- package/dist/agents/implementations/DocsSubAgent.d.ts.map +1 -1
- package/dist/agents/implementations/DocsSubAgent.js +20 -11
- package/dist/agents/implementations/DocsSubAgent.js.map +1 -1
- package/dist/agents/implementations/EnhancementAgent.d.ts +1 -1
- package/dist/agents/implementations/EnhancementAgent.d.ts.map +1 -1
- package/dist/agents/implementations/EnhancementAgent.js +17 -12
- package/dist/agents/implementations/EnhancementAgent.js.map +1 -1
- package/dist/cli.js +191 -39
- package/dist/cli.js.map +1 -1
- package/dist/commands/analyze.d.ts +52 -0
- package/dist/commands/analyze.d.ts.map +1 -0
- package/dist/commands/analyze.js +740 -0
- package/dist/commands/analyze.js.map +1 -0
- package/dist/commands/auth.d.ts +19 -26
- package/dist/commands/auth.d.ts.map +1 -1
- package/dist/commands/auth.js +187 -180
- package/dist/commands/auth.js.map +1 -1
- package/dist/commands/build-app.d.ts +33 -0
- package/dist/commands/build-app.d.ts.map +1 -0
- package/dist/commands/build-app.js +507 -0
- package/dist/commands/build-app.js.map +1 -0
- package/dist/commands/generate-components.d.ts +2 -0
- package/dist/commands/generate-components.d.ts.map +1 -1
- package/dist/commands/generate-components.js +95 -49
- package/dist/commands/generate-components.js.map +1 -1
- package/dist/commands/generate.d.ts +3 -0
- package/dist/commands/generate.d.ts.map +1 -1
- package/dist/commands/generate.js +250 -93
- package/dist/commands/generate.js.map +1 -1
- package/dist/commands/init.d.ts +5 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +86 -7
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/list.d.ts.map +1 -1
- package/dist/commands/list.js +10 -7
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/migrate.d.ts +29 -0
- package/dist/commands/migrate.d.ts.map +1 -0
- package/dist/commands/migrate.js +485 -0
- package/dist/commands/migrate.js.map +1 -0
- package/dist/commands/model.d.ts +13 -16
- package/dist/commands/model.d.ts.map +1 -1
- package/dist/commands/model.js +86 -320
- package/dist/commands/model.js.map +1 -1
- package/dist/commands/playbooks.d.ts +33 -0
- package/dist/commands/playbooks.d.ts.map +1 -0
- package/dist/commands/playbooks.js +662 -0
- package/dist/commands/playbooks.js.map +1 -0
- package/dist/commands/pricing.d.ts +15 -0
- package/dist/commands/pricing.d.ts.map +1 -0
- package/dist/commands/pricing.js +129 -0
- package/dist/commands/pricing.js.map +1 -0
- package/dist/commands/promote.d.ts +22 -0
- package/dist/commands/promote.d.ts.map +1 -0
- package/dist/commands/promote.js +204 -0
- package/dist/commands/promote.js.map +1 -0
- package/dist/commands/setup.d.ts +5 -18
- package/dist/commands/setup.d.ts.map +1 -1
- package/dist/commands/setup.js +180 -340
- package/dist/commands/setup.js.map +1 -1
- package/dist/config/ai-providers.json +37 -28
- package/dist/config/api.d.ts +9 -0
- package/dist/config/api.d.ts.map +1 -0
- package/dist/config/api.js +25 -0
- package/dist/config/api.js.map +1 -0
- package/dist/config/api.ts +29 -0
- package/dist/config/pricing.json +55 -0
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/utils/apiKeyManager.d.ts.map +1 -1
- package/dist/utils/apiKeyManager.js +7 -0
- package/dist/utils/apiKeyManager.js.map +1 -1
- package/dist/utils/fileSystem.d.ts.map +1 -1
- package/dist/utils/fileSystem.js +3 -1
- package/dist/utils/fileSystem.js.map +1 -1
- package/dist/utils/hostedApiClient.d.ts +32 -0
- package/dist/utils/hostedApiClient.d.ts.map +1 -0
- package/dist/utils/hostedApiClient.js +231 -0
- package/dist/utils/hostedApiClient.js.map +1 -0
- package/dist/utils/hybridAIClient.d.ts +7 -3
- package/dist/utils/hybridAIClient.d.ts.map +1 -1
- package/dist/utils/hybridAIClient.js +103 -27
- package/dist/utils/hybridAIClient.js.map +1 -1
- package/dist/utils/qwenClient.d.ts +22 -0
- package/dist/utils/qwenClient.d.ts.map +1 -0
- package/dist/utils/qwenClient.js +180 -0
- package/dist/utils/qwenClient.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.QwenClient = void 0;
|
|
4
|
+
class QwenClient {
|
|
5
|
+
constructor(apiKey) {
|
|
6
|
+
this.baseUrl = "https://openrouter.ai/api/v1";
|
|
7
|
+
this.apiKey = null;
|
|
8
|
+
this.apiKey = apiKey || this.loadTokenFromEnvFiles();
|
|
9
|
+
}
|
|
10
|
+
hasApiKey() {
|
|
11
|
+
return !!this.apiKey;
|
|
12
|
+
}
|
|
13
|
+
loadTokenFromEnvFiles() {
|
|
14
|
+
// Check environment variables
|
|
15
|
+
const envKey = process.env.MYCONTEXT_QWEN_API_KEY || process.env.QWEN_API_KEY;
|
|
16
|
+
if (envKey)
|
|
17
|
+
return envKey;
|
|
18
|
+
// Check .mycontext/.env file
|
|
19
|
+
try {
|
|
20
|
+
const fs = require('fs');
|
|
21
|
+
const path = require('path');
|
|
22
|
+
const envPath = path.join(process.cwd(), '.mycontext', '.env');
|
|
23
|
+
if (fs.existsSync(envPath)) {
|
|
24
|
+
const envContent = fs.readFileSync(envPath, 'utf8');
|
|
25
|
+
const lines = envContent.split('\n');
|
|
26
|
+
for (const line of lines) {
|
|
27
|
+
const trimmed = line.trim();
|
|
28
|
+
if (trimmed.startsWith('MYCONTEXT_QWEN_API_KEY=')) {
|
|
29
|
+
const key = trimmed.split('=')[1]?.trim();
|
|
30
|
+
if (key && !key.startsWith('$')) {
|
|
31
|
+
return key;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
catch (error) {
|
|
38
|
+
// Ignore file read errors
|
|
39
|
+
}
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
getHeaders() {
|
|
43
|
+
return {
|
|
44
|
+
'Authorization': `Bearer ${this.apiKey}`,
|
|
45
|
+
'Content-Type': 'application/json',
|
|
46
|
+
'HTTP-Referer': 'https://mycontext.fbien.com',
|
|
47
|
+
'X-Title': 'MyContext CLI'
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
async checkConnection() {
|
|
51
|
+
if (!this.apiKey)
|
|
52
|
+
return false;
|
|
53
|
+
try {
|
|
54
|
+
const response = await fetch(`${this.baseUrl}/models`, {
|
|
55
|
+
method: 'GET',
|
|
56
|
+
headers: this.getHeaders(),
|
|
57
|
+
signal: AbortSignal.timeout(10000)
|
|
58
|
+
});
|
|
59
|
+
return response.ok;
|
|
60
|
+
}
|
|
61
|
+
catch (error) {
|
|
62
|
+
return false;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
async generateText(prompt, options = {}) {
|
|
66
|
+
const messages = [
|
|
67
|
+
{ role: "user", content: prompt }
|
|
68
|
+
];
|
|
69
|
+
return this.generateWithMessages(messages, options);
|
|
70
|
+
}
|
|
71
|
+
async generateComponent(prompt, options = {}) {
|
|
72
|
+
const systemPrompt = `You are an expert React/Next.js developer specializing in creating production-ready components using TypeScript, Tailwind CSS, and shadcn/ui.
|
|
73
|
+
|
|
74
|
+
Key requirements:
|
|
75
|
+
- Use TypeScript with proper type definitions
|
|
76
|
+
- Import shadcn/ui components from '@/components/ui/<component>'
|
|
77
|
+
- Use Tailwind CSS for styling with design tokens
|
|
78
|
+
- Follow Next.js App Router patterns (Server Components by default, "use client" when needed)
|
|
79
|
+
- Include proper accessibility attributes
|
|
80
|
+
- Add comprehensive JSDoc comments
|
|
81
|
+
- Export both named and default exports
|
|
82
|
+
- Include action functions as separate exports
|
|
83
|
+
- Use proper error handling and loading states
|
|
84
|
+
|
|
85
|
+
Generate clean, production-ready React component code.`;
|
|
86
|
+
const messages = [
|
|
87
|
+
{ role: "system", content: systemPrompt },
|
|
88
|
+
{ role: "user", content: prompt }
|
|
89
|
+
];
|
|
90
|
+
return this.generateWithMessages(messages, options);
|
|
91
|
+
}
|
|
92
|
+
async generateComponentRefinement(componentCode, prompt, options = {}) {
|
|
93
|
+
const systemPrompt = `You are an expert React/Next.js developer specializing in refining and improving existing components.
|
|
94
|
+
|
|
95
|
+
Key requirements:
|
|
96
|
+
- Maintain TypeScript type safety
|
|
97
|
+
- Preserve existing functionality while improving code quality
|
|
98
|
+
- Use shadcn/ui components from '@/components/ui/<component>'
|
|
99
|
+
- Apply Tailwind CSS best practices
|
|
100
|
+
- Improve accessibility and performance
|
|
101
|
+
- Add proper error handling and loading states
|
|
102
|
+
- Maintain consistent code style
|
|
103
|
+
- Add comprehensive JSDoc comments where missing
|
|
104
|
+
|
|
105
|
+
Refine the provided component code based on the user's request.`;
|
|
106
|
+
const messages = [
|
|
107
|
+
{ role: "system", content: systemPrompt },
|
|
108
|
+
{ role: "user", content: `Current component code:\n\`\`\`tsx\n${componentCode}\n\`\`\`\n\nRefinement request: ${prompt}` }
|
|
109
|
+
];
|
|
110
|
+
return this.generateWithMessages(messages, options);
|
|
111
|
+
}
|
|
112
|
+
async generateWithMessages(messages, options = {}) {
|
|
113
|
+
if (!this.apiKey) {
|
|
114
|
+
throw new Error('Qwen API key not found. Set MYCONTEXT_QWEN_API_KEY environment variable.');
|
|
115
|
+
}
|
|
116
|
+
const model = options.model || 'qwen/qwen3-coder:free';
|
|
117
|
+
const temperature = options.temperature ?? 0.2;
|
|
118
|
+
const maxTokens = options.maxTokens ?? 4096;
|
|
119
|
+
try {
|
|
120
|
+
const response = await fetch(`${this.baseUrl}/chat/completions`, {
|
|
121
|
+
method: 'POST',
|
|
122
|
+
headers: this.getHeaders(),
|
|
123
|
+
body: JSON.stringify({
|
|
124
|
+
model,
|
|
125
|
+
messages,
|
|
126
|
+
temperature,
|
|
127
|
+
max_tokens: maxTokens,
|
|
128
|
+
stream: false
|
|
129
|
+
}),
|
|
130
|
+
signal: AbortSignal.timeout(60000)
|
|
131
|
+
});
|
|
132
|
+
if (!response.ok) {
|
|
133
|
+
const errorText = await response.text();
|
|
134
|
+
throw new Error(`Qwen API error: ${response.status} ${response.statusText} - ${errorText}`);
|
|
135
|
+
}
|
|
136
|
+
const data = await response.json();
|
|
137
|
+
return this.extractContent(data);
|
|
138
|
+
}
|
|
139
|
+
catch (error) {
|
|
140
|
+
if (error instanceof Error) {
|
|
141
|
+
throw new Error(`Qwen generation failed: ${error.message}`);
|
|
142
|
+
}
|
|
143
|
+
throw new Error('Qwen generation failed: Unknown error');
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
extractContent(response) {
|
|
147
|
+
try {
|
|
148
|
+
if (response.choices && response.choices[0] && response.choices[0].message) {
|
|
149
|
+
return response.choices[0].message.content || '';
|
|
150
|
+
}
|
|
151
|
+
return '';
|
|
152
|
+
}
|
|
153
|
+
catch (error) {
|
|
154
|
+
return '';
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
async listModels() {
|
|
158
|
+
if (!this.apiKey)
|
|
159
|
+
return [];
|
|
160
|
+
try {
|
|
161
|
+
const response = await fetch(`${this.baseUrl}/models`, {
|
|
162
|
+
method: 'GET',
|
|
163
|
+
headers: this.getHeaders(),
|
|
164
|
+
signal: AbortSignal.timeout(10000)
|
|
165
|
+
});
|
|
166
|
+
if (!response.ok)
|
|
167
|
+
return [];
|
|
168
|
+
const data = await response.json();
|
|
169
|
+
return data.data?.map((model) => model.id).filter((id) => id.includes('qwen')) || [];
|
|
170
|
+
}
|
|
171
|
+
catch (error) {
|
|
172
|
+
return [];
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
setApiKey(apiKey) {
|
|
176
|
+
this.apiKey = apiKey;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
exports.QwenClient = QwenClient;
|
|
180
|
+
//# sourceMappingURL=qwenClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"qwenClient.js","sourceRoot":"","sources":["../../src/utils/qwenClient.ts"],"names":[],"mappings":"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"}
|