mycontext-cli 1.0.1 → 1.0.3
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 +34 -36
- package/dist/agents/implementations/CodeGenSubAgent.d.ts.map +1 -1
- package/dist/agents/implementations/CodeGenSubAgent.js +13 -0
- package/dist/agents/implementations/CodeGenSubAgent.js.map +1 -1
- package/dist/cli.js +20 -1
- package/dist/cli.js.map +1 -1
- package/dist/commands/enhance.d.ts.map +1 -1
- package/dist/commands/enhance.js +11 -0
- package/dist/commands/enhance.js.map +1 -1
- package/dist/commands/generate-components.d.ts.map +1 -1
- package/dist/commands/generate-components.js +1 -0
- package/dist/commands/generate-components.js.map +1 -1
- package/dist/commands/generate-todos.d.ts +25 -0
- package/dist/commands/generate-todos.d.ts.map +1 -0
- package/dist/commands/generate-todos.js +249 -0
- package/dist/commands/generate-todos.js.map +1 -0
- package/dist/commands/generate.d.ts.map +1 -1
- package/dist/commands/generate.js +1 -0
- package/dist/commands/generate.js.map +1 -1
- package/dist/commands/model.d.ts.map +1 -1
- package/dist/commands/model.js +8 -5
- package/dist/commands/model.js.map +1 -1
- package/dist/commands/predict.d.ts.map +1 -1
- package/dist/commands/predict.js +11 -0
- package/dist/commands/predict.js.map +1 -1
- package/dist/commands/refine.d.ts.map +1 -1
- package/dist/commands/refine.js +11 -0
- package/dist/commands/refine.js.map +1 -1
- package/dist/config/ai-providers.json +44 -12
- package/dist/types/index.d.ts +6 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/utils/contextLoader.d.ts +50 -0
- package/dist/utils/contextLoader.d.ts.map +1 -0
- package/dist/utils/contextLoader.js +288 -0
- package/dist/utils/contextLoader.js.map +1 -0
- package/dist/utils/geminiClient.d.ts +61 -0
- package/dist/utils/geminiClient.d.ts.map +1 -0
- package/dist/utils/geminiClient.js +173 -0
- package/dist/utils/geminiClient.js.map +1 -0
- package/dist/utils/hybridAIClient.d.ts +8 -1
- package/dist/utils/hybridAIClient.d.ts.map +1 -1
- package/dist/utils/hybridAIClient.js +102 -53
- package/dist/utils/hybridAIClient.js.map +1 -1
- package/dist/utils/qwenClient.d.ts.map +1 -1
- package/dist/utils/qwenClient.js +39 -34
- package/dist/utils/qwenClient.js.map +1 -1
- package/package.json +1 -1
package/dist/utils/qwenClient.js
CHANGED
|
@@ -17,17 +17,17 @@ class QwenClient {
|
|
|
17
17
|
return envKey;
|
|
18
18
|
// Check .mycontext/.env file
|
|
19
19
|
try {
|
|
20
|
-
const fs = require(
|
|
21
|
-
const path = require(
|
|
22
|
-
const envPath = path.join(process.cwd(),
|
|
20
|
+
const fs = require("fs");
|
|
21
|
+
const path = require("path");
|
|
22
|
+
const envPath = path.join(process.cwd(), ".mycontext", ".env");
|
|
23
23
|
if (fs.existsSync(envPath)) {
|
|
24
|
-
const envContent = fs.readFileSync(envPath,
|
|
25
|
-
const lines = envContent.split(
|
|
24
|
+
const envContent = fs.readFileSync(envPath, "utf8");
|
|
25
|
+
const lines = envContent.split("\n");
|
|
26
26
|
for (const line of lines) {
|
|
27
27
|
const trimmed = line.trim();
|
|
28
|
-
if (trimmed.startsWith(
|
|
29
|
-
const key = trimmed.split(
|
|
30
|
-
if (key && !key.startsWith(
|
|
28
|
+
if (trimmed.startsWith("MYCONTEXT_QWEN_API_KEY=")) {
|
|
29
|
+
const key = trimmed.split("=")[1]?.trim();
|
|
30
|
+
if (key && !key.startsWith("$")) {
|
|
31
31
|
return key;
|
|
32
32
|
}
|
|
33
33
|
}
|
|
@@ -41,10 +41,10 @@ class QwenClient {
|
|
|
41
41
|
}
|
|
42
42
|
getHeaders() {
|
|
43
43
|
return {
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
44
|
+
Authorization: `Bearer ${this.apiKey}`,
|
|
45
|
+
"Content-Type": "application/json",
|
|
46
|
+
"HTTP-Referer": "https://mycontext.fbien.com",
|
|
47
|
+
"X-Title": "MyContext CLI",
|
|
48
48
|
};
|
|
49
49
|
}
|
|
50
50
|
async checkConnection() {
|
|
@@ -52,9 +52,9 @@ class QwenClient {
|
|
|
52
52
|
return false;
|
|
53
53
|
try {
|
|
54
54
|
const response = await fetch(`${this.baseUrl}/models`, {
|
|
55
|
-
method:
|
|
55
|
+
method: "GET",
|
|
56
56
|
headers: this.getHeaders(),
|
|
57
|
-
signal: AbortSignal.timeout(10000)
|
|
57
|
+
signal: AbortSignal.timeout(10000),
|
|
58
58
|
});
|
|
59
59
|
return response.ok;
|
|
60
60
|
}
|
|
@@ -63,9 +63,7 @@ class QwenClient {
|
|
|
63
63
|
}
|
|
64
64
|
}
|
|
65
65
|
async generateText(prompt, options = {}) {
|
|
66
|
-
const messages = [
|
|
67
|
-
{ role: "user", content: prompt }
|
|
68
|
-
];
|
|
66
|
+
const messages = [{ role: "user", content: prompt }];
|
|
69
67
|
return this.generateWithMessages(messages, options);
|
|
70
68
|
}
|
|
71
69
|
async generateComponent(prompt, options = {}) {
|
|
@@ -85,7 +83,7 @@ Key requirements:
|
|
|
85
83
|
Generate clean, production-ready React component code.`;
|
|
86
84
|
const messages = [
|
|
87
85
|
{ role: "system", content: systemPrompt },
|
|
88
|
-
{ role: "user", content: prompt }
|
|
86
|
+
{ role: "user", content: prompt },
|
|
89
87
|
];
|
|
90
88
|
return this.generateWithMessages(messages, options);
|
|
91
89
|
}
|
|
@@ -105,29 +103,32 @@ Key requirements:
|
|
|
105
103
|
Refine the provided component code based on the user's request.`;
|
|
106
104
|
const messages = [
|
|
107
105
|
{ role: "system", content: systemPrompt },
|
|
108
|
-
{
|
|
106
|
+
{
|
|
107
|
+
role: "user",
|
|
108
|
+
content: `Current component code:\n\`\`\`tsx\n${componentCode}\n\`\`\`\n\nRefinement request: ${prompt}`,
|
|
109
|
+
},
|
|
109
110
|
];
|
|
110
111
|
return this.generateWithMessages(messages, options);
|
|
111
112
|
}
|
|
112
113
|
async generateWithMessages(messages, options = {}) {
|
|
113
114
|
if (!this.apiKey) {
|
|
114
|
-
throw new Error(
|
|
115
|
+
throw new Error("Qwen API key not found. Set MYCONTEXT_QWEN_API_KEY environment variable.");
|
|
115
116
|
}
|
|
116
|
-
const model = options.model ||
|
|
117
|
+
const model = options.model || "qwen/qwen3-coder:free";
|
|
117
118
|
const temperature = options.temperature ?? 0.2;
|
|
118
|
-
const maxTokens = options.maxTokens ??
|
|
119
|
+
const maxTokens = Math.min(options.maxTokens ?? 4000, 4000);
|
|
119
120
|
try {
|
|
120
121
|
const response = await fetch(`${this.baseUrl}/chat/completions`, {
|
|
121
|
-
method:
|
|
122
|
+
method: "POST",
|
|
122
123
|
headers: this.getHeaders(),
|
|
123
124
|
body: JSON.stringify({
|
|
124
125
|
model,
|
|
125
126
|
messages,
|
|
126
127
|
temperature,
|
|
127
128
|
max_tokens: maxTokens,
|
|
128
|
-
stream: false
|
|
129
|
+
stream: false,
|
|
129
130
|
}),
|
|
130
|
-
signal: AbortSignal.timeout(60000)
|
|
131
|
+
signal: AbortSignal.timeout(60000),
|
|
131
132
|
});
|
|
132
133
|
if (!response.ok) {
|
|
133
134
|
const errorText = await response.text();
|
|
@@ -140,18 +141,20 @@ Refine the provided component code based on the user's request.`;
|
|
|
140
141
|
if (error instanceof Error) {
|
|
141
142
|
throw new Error(`Qwen generation failed: ${error.message}`);
|
|
142
143
|
}
|
|
143
|
-
throw new Error(
|
|
144
|
+
throw new Error("Qwen generation failed: Unknown error");
|
|
144
145
|
}
|
|
145
146
|
}
|
|
146
147
|
extractContent(response) {
|
|
147
148
|
try {
|
|
148
|
-
if (response.choices &&
|
|
149
|
-
|
|
149
|
+
if (response.choices &&
|
|
150
|
+
response.choices[0] &&
|
|
151
|
+
response.choices[0].message) {
|
|
152
|
+
return response.choices[0].message.content || "";
|
|
150
153
|
}
|
|
151
|
-
return
|
|
154
|
+
return "";
|
|
152
155
|
}
|
|
153
156
|
catch (error) {
|
|
154
|
-
return
|
|
157
|
+
return "";
|
|
155
158
|
}
|
|
156
159
|
}
|
|
157
160
|
async listModels() {
|
|
@@ -159,14 +162,16 @@ Refine the provided component code based on the user's request.`;
|
|
|
159
162
|
return [];
|
|
160
163
|
try {
|
|
161
164
|
const response = await fetch(`${this.baseUrl}/models`, {
|
|
162
|
-
method:
|
|
165
|
+
method: "GET",
|
|
163
166
|
headers: this.getHeaders(),
|
|
164
|
-
signal: AbortSignal.timeout(10000)
|
|
167
|
+
signal: AbortSignal.timeout(10000),
|
|
165
168
|
});
|
|
166
169
|
if (!response.ok)
|
|
167
170
|
return [];
|
|
168
|
-
const data = await response.json();
|
|
169
|
-
return data.data
|
|
171
|
+
const data = (await response.json());
|
|
172
|
+
return (data.data
|
|
173
|
+
?.map((model) => model.id)
|
|
174
|
+
.filter((id) => id.includes("qwen")) || []);
|
|
170
175
|
}
|
|
171
176
|
catch (error) {
|
|
172
177
|
return [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"qwenClient.js","sourceRoot":"","sources":["../../src/utils/qwenClient.ts"],"names":[],"mappings":";;;AAQA,MAAa,UAAU;IAIrB,YAAY,MAAe;QAHnB,YAAO,GAAG,8BAA8B,CAAC;QACzC,WAAM,GAAkB,IAAI,CAAC;QAGnC,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,IAAI,CAAC,qBAAqB,EAAE,CAAC;IACvD,CAAC;IAED,SAAS;QACP,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;IAEO,qBAAqB;QAC3B,8BAA8B;QAC9B,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"qwenClient.js","sourceRoot":"","sources":["../../src/utils/qwenClient.ts"],"names":[],"mappings":"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"}
|