mycontext-cli 0.2.38 → 0.4.0
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/implementations/CodeGenSubAgent.d.ts +2 -0
- package/dist/agents/implementations/CodeGenSubAgent.d.ts.map +1 -1
- package/dist/agents/implementations/CodeGenSubAgent.js +344 -24
- package/dist/agents/implementations/CodeGenSubAgent.js.map +1 -1
- package/dist/agents/implementations/DocsSubAgent.js +1 -1
- 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 +31 -44
- package/dist/agents/implementations/EnhancementAgent.js.map +1 -1
- package/dist/agents/implementations/QASubAgent.js +1 -1
- package/dist/agents/orchestrator/SubAgentOrchestrator.js +1 -1
- package/dist/agents/orchestrator/SubAgentOrchestrator.js.map +1 -1
- package/dist/cli.js +38 -2
- package/dist/cli.js.map +1 -1
- package/dist/commands/auth.d.ts +8 -1
- package/dist/commands/auth.d.ts.map +1 -1
- package/dist/commands/auth.js +63 -22
- package/dist/commands/auth.js.map +1 -1
- package/dist/commands/core.d.ts +12 -0
- package/dist/commands/core.d.ts.map +1 -0
- package/dist/commands/core.js +133 -0
- package/dist/commands/core.js.map +1 -0
- package/dist/commands/enhance.d.ts +1 -1
- package/dist/commands/enhance.d.ts.map +1 -1
- package/dist/commands/enhance.js +54 -59
- package/dist/commands/enhance.js.map +1 -1
- package/dist/commands/generate-components.d.ts +22 -0
- package/dist/commands/generate-components.d.ts.map +1 -1
- package/dist/commands/generate-components.js +449 -69
- package/dist/commands/generate-components.js.map +1 -1
- package/dist/commands/generate.d.ts +5 -0
- package/dist/commands/generate.d.ts.map +1 -1
- package/dist/commands/generate.js +277 -35
- package/dist/commands/generate.js.map +1 -1
- package/dist/commands/init.js +1 -1
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/list.d.ts.map +1 -1
- package/dist/commands/list.js +25 -9
- package/dist/commands/list.js.map +1 -1
- package/dist/config/ai-providers.json +25 -0
- package/dist/utils/apiKeyManager.d.ts +1 -1
- package/dist/utils/apiKeyManager.js +1 -1
- package/dist/utils/errorHandler.d.ts +4 -0
- package/dist/utils/errorHandler.d.ts.map +1 -1
- package/dist/utils/errorHandler.js +4 -0
- package/dist/utils/errorHandler.js.map +1 -1
- package/dist/utils/fileSystem.d.ts.map +1 -1
- package/dist/utils/fileSystem.js +5 -7
- package/dist/utils/fileSystem.js.map +1 -1
- package/dist/utils/hybridAIClient.d.ts +1 -0
- package/dist/utils/hybridAIClient.d.ts.map +1 -1
- package/dist/utils/hybridAIClient.js +13 -0
- package/dist/utils/hybridAIClient.js.map +1 -1
- package/dist/utils/xaiClient.d.ts +19 -0
- package/dist/utils/xaiClient.d.ts.map +1 -0
- package/dist/utils/xaiClient.js +108 -0
- package/dist/utils/xaiClient.js.map +1 -0
- package/package.json +8 -2
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export interface XaiOptions {
|
|
2
|
+
model?: string;
|
|
3
|
+
temperature?: number;
|
|
4
|
+
maxTokens?: number;
|
|
5
|
+
}
|
|
6
|
+
export declare class XaiClient {
|
|
7
|
+
private baseUrl;
|
|
8
|
+
private apiKey;
|
|
9
|
+
constructor(apiKey?: string);
|
|
10
|
+
hasApiKey(): boolean;
|
|
11
|
+
checkConnection(): Promise<boolean>;
|
|
12
|
+
generateText(prompt: string, options?: Partial<XaiOptions>): Promise<string>;
|
|
13
|
+
generateComponent(prompt: string, options?: Partial<XaiOptions>): Promise<string>;
|
|
14
|
+
generateComponentRefinement(componentCode: string, prompt: string, options?: Partial<XaiOptions>): Promise<string>;
|
|
15
|
+
private request;
|
|
16
|
+
private extractContent;
|
|
17
|
+
private getDefaultModel;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=xaiClient.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"xaiClient.d.ts","sourceRoot":"","sources":["../../src/utils/xaiClient.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAID,qBAAa,SAAS;IACpB,OAAO,CAAC,OAAO,CAAqD;IACpE,OAAO,CAAC,MAAM,CAAuB;gBAEzB,MAAM,CAAC,EAAE,MAAM;IAQ3B,SAAS,IAAI,OAAO;IAId,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC;IAoBnC,YAAY,CAChB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,OAAO,CAAC,UAAU,CAAM,GAChC,OAAO,CAAC,MAAM,CAAC;IAaZ,iBAAiB,CACrB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,OAAO,CAAC,UAAU,CAAM,GAChC,OAAO,CAAC,MAAM,CAAC;IAIZ,2BAA2B,CAC/B,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,OAAO,CAAC,UAAU,CAAM,GAChC,OAAO,CAAC,MAAM,CAAC;YAoBJ,OAAO;IAiCrB,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,eAAe;CAIxB"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.XaiClient = void 0;
|
|
4
|
+
class XaiClient {
|
|
5
|
+
constructor(apiKey) {
|
|
6
|
+
this.baseUrl = process.env.XAI_BASE_URL || "https://api.x.ai/v1";
|
|
7
|
+
this.apiKey = null;
|
|
8
|
+
this.apiKey =
|
|
9
|
+
apiKey ||
|
|
10
|
+
process.env.MYCONTEXT_GROK_TOKEN ||
|
|
11
|
+
process.env.XAI_API_KEY ||
|
|
12
|
+
null;
|
|
13
|
+
}
|
|
14
|
+
hasApiKey() {
|
|
15
|
+
return Boolean(this.apiKey);
|
|
16
|
+
}
|
|
17
|
+
async checkConnection() {
|
|
18
|
+
if (!this.hasApiKey())
|
|
19
|
+
return false;
|
|
20
|
+
try {
|
|
21
|
+
// Lightweight ping by requesting a very small completion
|
|
22
|
+
const res = await this.request("/chat/completions", {
|
|
23
|
+
model: this.getDefaultModel(),
|
|
24
|
+
messages: [{ role: "user", content: "ping" }],
|
|
25
|
+
max_tokens: 1,
|
|
26
|
+
temperature: 0.0,
|
|
27
|
+
}, 8000);
|
|
28
|
+
return Boolean(res?.id);
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
async generateText(prompt, options = {}) {
|
|
35
|
+
const response = await this.request("/chat/completions", {
|
|
36
|
+
model: options.model || this.getDefaultModel(),
|
|
37
|
+
messages: [
|
|
38
|
+
{ role: "system", content: "You are a helpful assistant." },
|
|
39
|
+
{ role: "user", content: prompt },
|
|
40
|
+
],
|
|
41
|
+
max_tokens: options.maxTokens ?? 2048,
|
|
42
|
+
temperature: options.temperature ?? 0.2,
|
|
43
|
+
});
|
|
44
|
+
return this.extractContent(response) || "";
|
|
45
|
+
}
|
|
46
|
+
async generateComponent(prompt, options = {}) {
|
|
47
|
+
return this.generateText(prompt, options);
|
|
48
|
+
}
|
|
49
|
+
async generateComponentRefinement(componentCode, prompt, options = {}) {
|
|
50
|
+
const messages = [
|
|
51
|
+
{
|
|
52
|
+
role: "system",
|
|
53
|
+
content: "You are an expert React/TypeScript code assistant.",
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
role: "user",
|
|
57
|
+
content: `${prompt}\n\n\u0060\u0060\u0060tsx\n${componentCode}\n\u0060\u0060\u0060`,
|
|
58
|
+
},
|
|
59
|
+
];
|
|
60
|
+
const response = await this.request("/chat/completions", {
|
|
61
|
+
model: options.model || this.getDefaultModel(),
|
|
62
|
+
messages,
|
|
63
|
+
max_tokens: options.maxTokens ?? 4096,
|
|
64
|
+
temperature: options.temperature ?? 0.2,
|
|
65
|
+
});
|
|
66
|
+
return this.extractContent(response) || "";
|
|
67
|
+
}
|
|
68
|
+
async request(path, body, timeoutMs = 30000) {
|
|
69
|
+
if (!this.apiKey)
|
|
70
|
+
throw new Error("Missing X.AI API key (set MYCONTEXT_GROK_TOKEN or XAI_API_KEY)");
|
|
71
|
+
const controller = new AbortController();
|
|
72
|
+
const t = setTimeout(() => controller.abort(), timeoutMs);
|
|
73
|
+
try {
|
|
74
|
+
const res = await fetch(`${this.baseUrl}${path}`, {
|
|
75
|
+
method: "POST",
|
|
76
|
+
headers: {
|
|
77
|
+
"Content-Type": "application/json",
|
|
78
|
+
Authorization: `Bearer ${this.apiKey}`,
|
|
79
|
+
},
|
|
80
|
+
body: JSON.stringify(body),
|
|
81
|
+
signal: controller.signal,
|
|
82
|
+
});
|
|
83
|
+
if (!res.ok) {
|
|
84
|
+
const text = await res.text();
|
|
85
|
+
throw new Error(`XAI request failed: ${res.status} ${res.statusText} – ${text}`);
|
|
86
|
+
}
|
|
87
|
+
return await res.json();
|
|
88
|
+
}
|
|
89
|
+
finally {
|
|
90
|
+
clearTimeout(t);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
extractContent(resp) {
|
|
94
|
+
try {
|
|
95
|
+
const content = resp?.choices?.[0]?.message?.content;
|
|
96
|
+
return typeof content === "string" ? content : null;
|
|
97
|
+
}
|
|
98
|
+
catch {
|
|
99
|
+
return null;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
getDefaultModel() {
|
|
103
|
+
// Reasonable default; allow override via env
|
|
104
|
+
return process.env.XAI_MODEL || "grok-2-latest";
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
exports.XaiClient = XaiClient;
|
|
108
|
+
//# sourceMappingURL=xaiClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"xaiClient.js","sourceRoot":"","sources":["../../src/utils/xaiClient.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mycontext-cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"description": "mycontext CLI - AI-powered component generation with shadcn/ui and Next.js 15 integration",
|
|
5
5
|
"main": "dist/cli.js",
|
|
6
6
|
"bin": {
|
|
@@ -12,7 +12,13 @@
|
|
|
12
12
|
"dev": "ts-node src/cli.ts",
|
|
13
13
|
"start": "node dist/cli.js",
|
|
14
14
|
"watch": "tsc --watch",
|
|
15
|
-
"test": "jest"
|
|
15
|
+
"test": "jest",
|
|
16
|
+
"test:watch": "jest --watch",
|
|
17
|
+
"test:coverage": "jest --coverage",
|
|
18
|
+
"test:integration": "jest --testPathPattern=integration",
|
|
19
|
+
"test:unit": "jest --testPathPattern=unit",
|
|
20
|
+
"lint": "eslint src/**/*.ts",
|
|
21
|
+
"lint:fix": "eslint src/**/*.ts --fix"
|
|
16
22
|
},
|
|
17
23
|
"keywords": [
|
|
18
24
|
"mycontext",
|