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,48 @@
|
|
|
1
|
+
import { AIClient, AIClientOptions, AgentContext } from "../interfaces/AIClient";
|
|
2
|
+
/**
|
|
3
|
+
* Claude SDK Client - Fallback provider using Claude API
|
|
4
|
+
*
|
|
5
|
+
* This is a simplified client that uses the Claude API directly
|
|
6
|
+
* as a fallback when MyContext AI is not available.
|
|
7
|
+
*/
|
|
8
|
+
export declare class ClaudeSDKClient 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 Claude API
|
|
21
|
+
*/
|
|
22
|
+
setApiKey(apiKey: string): void;
|
|
23
|
+
/**
|
|
24
|
+
* Check connection to Claude API
|
|
25
|
+
*/
|
|
26
|
+
checkConnection(): Promise<boolean>;
|
|
27
|
+
/**
|
|
28
|
+
* Generate text using Claude API
|
|
29
|
+
*/
|
|
30
|
+
generateText(prompt: string, options?: AIClientOptions): Promise<string>;
|
|
31
|
+
/**
|
|
32
|
+
* Generate React component using Claude API
|
|
33
|
+
*/
|
|
34
|
+
generateComponent(prompt: string, context?: AgentContext, options?: AIClientOptions): Promise<string>;
|
|
35
|
+
/**
|
|
36
|
+
* Generate component refinement using Claude 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=ClaudeSDKClient.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClaudeSDKClient.d.ts","sourceRoot":"","sources":["../../src/clients/ClaudeSDKClient.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,eAAe,EACf,YAAY,EACb,MAAM,wBAAwB,CAAC;AAEhC;;;;;GAKG;AACH,qBAAa,eAAgB,YAAW,QAAQ;IAC9C,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,CAAkC;;IAMjD;;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;IAgCzC;;OAEG;IACG,YAAY,CAChB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,MAAM,CAAC;IAuClB;;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;IAQrC;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAG/B"}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ClaudeSDKClient = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Claude SDK Client - Fallback provider using Claude API
|
|
6
|
+
*
|
|
7
|
+
* This is a simplified client that uses the Claude API directly
|
|
8
|
+
* as a fallback when MyContext AI is not available.
|
|
9
|
+
*/
|
|
10
|
+
class ClaudeSDKClient {
|
|
11
|
+
constructor() {
|
|
12
|
+
this.clientType = "direct-api";
|
|
13
|
+
this.supportsTools = false;
|
|
14
|
+
this.supportsStreaming = false;
|
|
15
|
+
this.apiKey = null;
|
|
16
|
+
this.baseUrl = "https://api.anthropic.com/v1";
|
|
17
|
+
this.apiKey = process.env.ANTHROPIC_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 Claude API
|
|
27
|
+
*/
|
|
28
|
+
setApiKey(apiKey) {
|
|
29
|
+
this.apiKey = apiKey;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Check connection to Claude API
|
|
33
|
+
*/
|
|
34
|
+
async checkConnection() {
|
|
35
|
+
if (!this.apiKey) {
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
try {
|
|
39
|
+
const response = await fetch(`${this.baseUrl}/messages`, {
|
|
40
|
+
method: "POST",
|
|
41
|
+
headers: {
|
|
42
|
+
"Content-Type": "application/json",
|
|
43
|
+
"x-api-key": this.apiKey,
|
|
44
|
+
"anthropic-version": "2023-06-01",
|
|
45
|
+
},
|
|
46
|
+
body: JSON.stringify({
|
|
47
|
+
model: "claude-3-haiku-20240307",
|
|
48
|
+
max_tokens: 10,
|
|
49
|
+
messages: [
|
|
50
|
+
{
|
|
51
|
+
role: "user",
|
|
52
|
+
content: "test",
|
|
53
|
+
},
|
|
54
|
+
],
|
|
55
|
+
}),
|
|
56
|
+
});
|
|
57
|
+
return response.ok;
|
|
58
|
+
}
|
|
59
|
+
catch (error) {
|
|
60
|
+
console.warn("Claude SDK connection check failed:", error);
|
|
61
|
+
return false;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Generate text using Claude API
|
|
66
|
+
*/
|
|
67
|
+
async generateText(prompt, options = {}) {
|
|
68
|
+
if (!this.apiKey) {
|
|
69
|
+
throw new Error("Anthropic API key not configured for Claude SDK");
|
|
70
|
+
}
|
|
71
|
+
try {
|
|
72
|
+
const response = await fetch(`${this.baseUrl}/messages`, {
|
|
73
|
+
method: "POST",
|
|
74
|
+
headers: {
|
|
75
|
+
"Content-Type": "application/json",
|
|
76
|
+
"x-api-key": this.apiKey,
|
|
77
|
+
"anthropic-version": "2023-06-01",
|
|
78
|
+
},
|
|
79
|
+
body: JSON.stringify({
|
|
80
|
+
model: options.model || "claude-3-haiku-20240307",
|
|
81
|
+
max_tokens: options.maxTokens || 4000,
|
|
82
|
+
temperature: options.temperature || 0.7,
|
|
83
|
+
messages: [
|
|
84
|
+
{
|
|
85
|
+
role: "user",
|
|
86
|
+
content: prompt,
|
|
87
|
+
},
|
|
88
|
+
],
|
|
89
|
+
}),
|
|
90
|
+
});
|
|
91
|
+
if (!response.ok) {
|
|
92
|
+
throw new Error(`Claude API error: ${response.status} ${response.statusText}`);
|
|
93
|
+
}
|
|
94
|
+
const data = await response.json();
|
|
95
|
+
return data.content[0].text || "";
|
|
96
|
+
}
|
|
97
|
+
catch (error) {
|
|
98
|
+
throw new Error(`Claude SDK generation failed: ${error}`);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Generate React component using Claude API
|
|
103
|
+
*/
|
|
104
|
+
async generateComponent(prompt, context, options = {}) {
|
|
105
|
+
const systemPrompt = `You are a React component generator. Generate production-ready React components with TypeScript.
|
|
106
|
+
|
|
107
|
+
Requirements:
|
|
108
|
+
- Use functional components with hooks
|
|
109
|
+
- Include proper TypeScript types
|
|
110
|
+
- Add accessibility attributes
|
|
111
|
+
- Use Tailwind CSS for styling
|
|
112
|
+
- Include proper imports and exports
|
|
113
|
+
- Generate complete, runnable code
|
|
114
|
+
|
|
115
|
+
${context?.prd ? `Project Requirements: ${context.prd}` : ""}
|
|
116
|
+
${context?.types ? `Type Definitions: ${context.types}` : ""}
|
|
117
|
+
${context?.brand ? `Brand Guidelines: ${context.brand}` : ""}`;
|
|
118
|
+
const fullPrompt = `${systemPrompt}\n\nGenerate a React component for: ${prompt}`;
|
|
119
|
+
return this.generateText(fullPrompt, options);
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Generate component refinement using Claude API
|
|
123
|
+
*/
|
|
124
|
+
async generateComponentRefinement(componentCode, prompt, context, options = {}) {
|
|
125
|
+
const systemPrompt = `You are a React component refiner. Improve and modify existing React components.
|
|
126
|
+
|
|
127
|
+
Requirements:
|
|
128
|
+
- Maintain existing functionality
|
|
129
|
+
- Preserve TypeScript types
|
|
130
|
+
- Keep accessibility attributes
|
|
131
|
+
- Follow React best practices
|
|
132
|
+
- Provide complete refined component
|
|
133
|
+
|
|
134
|
+
${context?.prd ? `Project Requirements: ${context.prd}` : ""}
|
|
135
|
+
${context?.types ? `Type Definitions: ${context.types}` : ""}
|
|
136
|
+
${context?.brand ? `Brand Guidelines: ${context.brand}` : ""}`;
|
|
137
|
+
const fullPrompt = `${systemPrompt}\n\nComponent to refine:\n\`\`\`tsx\n${componentCode}\n\`\`\n\nRefinement request: ${prompt}`;
|
|
138
|
+
return this.generateText(fullPrompt, options);
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* List available models
|
|
142
|
+
*/
|
|
143
|
+
async listModels() {
|
|
144
|
+
return [
|
|
145
|
+
"claude-3-haiku-20240307",
|
|
146
|
+
"claude-3-sonnet-20240229",
|
|
147
|
+
"claude-3-opus-20240229",
|
|
148
|
+
];
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Cleanup resources
|
|
152
|
+
*/
|
|
153
|
+
async cleanup() {
|
|
154
|
+
// No cleanup needed for fetch-based client
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
exports.ClaudeSDKClient = ClaudeSDKClient;
|
|
158
|
+
//# sourceMappingURL=ClaudeSDKClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClaudeSDKClient.js","sourceRoot":"","sources":["../../src/clients/ClaudeSDKClient.ts"],"names":[],"mappings":";;;AAMA;;;;;GAKG;AACH,MAAa,eAAe;IAQ1B;QAPS,eAAU,GAAG,YAAqB,CAAC;QACnC,kBAAa,GAAG,KAAK,CAAC;QACtB,sBAAiB,GAAG,KAAK,CAAC;QAE3B,WAAM,GAAkB,IAAI,CAAC;QAC7B,YAAO,GAAG,8BAA8B,CAAC;QAG/C,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,IAAI,CAAC;IACtD,CAAC;IAED;;OAEG;IACH,SAAS;QACP,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,MAAc;QACtB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe;QACnB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,WAAW,EAAE;gBACvD,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,cAAc,EAAE,kBAAkB;oBAClC,WAAW,EAAE,IAAI,CAAC,MAAM;oBACxB,mBAAmB,EAAE,YAAY;iBAClC;gBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACnB,KAAK,EAAE,yBAAyB;oBAChC,UAAU,EAAE,EAAE;oBACd,QAAQ,EAAE;wBACR;4BACE,IAAI,EAAE,MAAM;4BACZ,OAAO,EAAE,MAAM;yBAChB;qBACF;iBACF,CAAC;aACH,CAAC,CAAC;YAEH,OAAO,QAAQ,CAAC,EAAE,CAAC;QACrB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,qCAAqC,EAAE,KAAK,CAAC,CAAC;YAC3D,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAChB,MAAc,EACd,UAA2B,EAAE;QAE7B,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;QACrE,CAAC;QAED,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,WAAW,EAAE;gBACvD,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,cAAc,EAAE,kBAAkB;oBAClC,WAAW,EAAE,IAAI,CAAC,MAAM;oBACxB,mBAAmB,EAAE,YAAY;iBAClC;gBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACnB,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,yBAAyB;oBACjD,UAAU,EAAE,OAAO,CAAC,SAAS,IAAI,IAAI;oBACrC,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,GAAG;oBACvC,QAAQ,EAAE;wBACR;4BACE,IAAI,EAAE,MAAM;4BACZ,OAAO,EAAE,MAAM;yBAChB;qBACF;iBACF,CAAC;aACH,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CACb,qBAAqB,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CAC9D,CAAC;YACJ,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnC,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;QACpC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,iCAAiC,KAAK,EAAE,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,iBAAiB,CACrB,MAAc,EACd,OAAsB,EACtB,UAA2B,EAAE;QAE7B,MAAM,YAAY,GAAG;;;;;;;;;;EAUvB,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,yBAAyB,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE;EAC1D,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,qBAAqB,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE;EAC1D,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,qBAAqB,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAE3D,MAAM,UAAU,GAAG,GAAG,YAAY,uCAAuC,MAAM,EAAE,CAAC;QAElF,OAAO,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAChD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,2BAA2B,CAC/B,aAAqB,EACrB,MAAc,EACd,OAAsB,EACtB,UAA2B,EAAE;QAE7B,MAAM,YAAY,GAAG;;;;;;;;;EASvB,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,yBAAyB,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE;EAC1D,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,qBAAqB,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE;EAC1D,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,qBAAqB,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAE3D,MAAM,UAAU,GAAG,GAAG,YAAY,wCAAwC,aAAa,iCAAiC,MAAM,EAAE,CAAC;QAEjI,OAAO,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAChD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU;QACd,OAAO;YACL,yBAAyB;YACzB,0BAA0B;YAC1B,wBAAwB;SACzB,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO;QACX,2CAA2C;IAC7C,CAAC;CACF;AAjLD,0CAiLC"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { AIClient, AIClientOptions, AgentContext } from "../interfaces/AIClient";
|
|
2
|
+
/**
|
|
3
|
+
* MyContext AI Client - Fine-tuned GPT-4o Mini for component generation
|
|
4
|
+
*
|
|
5
|
+
* This client uses our proprietary fine-tuned model trained on the Intent Dictionary System
|
|
6
|
+
* to achieve 95%+ accuracy in generating shadcn/ui components from natural language.
|
|
7
|
+
*
|
|
8
|
+
* **Usage Options**:
|
|
9
|
+
* 1. Hosted API (coming soon): Set MYCONTEXT_API_KEY for api.mycontext.dev
|
|
10
|
+
* 2. Self-hosted fine-tuned model: Train your own using fine-tuning-strategy.md
|
|
11
|
+
* 3. Fallback to Claude SDK or XAI: Use BYOK mode with your provider keys
|
|
12
|
+
*
|
|
13
|
+
* **Business Model**: Open source CLI, optional paid hosted API
|
|
14
|
+
*/
|
|
15
|
+
export declare class MyContextAIClient implements AIClient {
|
|
16
|
+
readonly clientType: "direct-api";
|
|
17
|
+
readonly supportsTools = false;
|
|
18
|
+
readonly supportsStreaming = false;
|
|
19
|
+
private openai;
|
|
20
|
+
private modelId;
|
|
21
|
+
private apiKey;
|
|
22
|
+
private isHostedAPI;
|
|
23
|
+
constructor(modelId?: string);
|
|
24
|
+
/**
|
|
25
|
+
* Check if API key is available
|
|
26
|
+
*/
|
|
27
|
+
hasApiKey(): boolean;
|
|
28
|
+
/**
|
|
29
|
+
* Set API key for OpenAI client
|
|
30
|
+
*/
|
|
31
|
+
setApiKey(apiKey: string): void;
|
|
32
|
+
/**
|
|
33
|
+
* Check connection to OpenAI API
|
|
34
|
+
*/
|
|
35
|
+
checkConnection(): Promise<boolean>;
|
|
36
|
+
/**
|
|
37
|
+
* Generate text using MyContext AI
|
|
38
|
+
*/
|
|
39
|
+
generateText(prompt: string, options?: AIClientOptions): Promise<string>;
|
|
40
|
+
/**
|
|
41
|
+
* Generate React component using MyContext AI with Intent Dictionary context
|
|
42
|
+
*/
|
|
43
|
+
generateComponent(prompt: string, context?: AgentContext, options?: AIClientOptions): Promise<string>;
|
|
44
|
+
/**
|
|
45
|
+
* Generate component refinement using MyContext AI
|
|
46
|
+
*/
|
|
47
|
+
generateComponentRefinement(componentCode: string, prompt: string, context?: AgentContext, options?: AIClientOptions): Promise<string>;
|
|
48
|
+
/**
|
|
49
|
+
* List available models (returns our fine-tuned model)
|
|
50
|
+
*/
|
|
51
|
+
listModels(): Promise<string[]>;
|
|
52
|
+
/**
|
|
53
|
+
* Build system prompt for general text generation
|
|
54
|
+
*/
|
|
55
|
+
private buildSystemPrompt;
|
|
56
|
+
/**
|
|
57
|
+
* Build system prompt for component generation with Intent Dictionary context
|
|
58
|
+
*/
|
|
59
|
+
private buildComponentSystemPrompt;
|
|
60
|
+
/**
|
|
61
|
+
* Build system prompt for component refinement
|
|
62
|
+
*/
|
|
63
|
+
private buildRefinementSystemPrompt;
|
|
64
|
+
/**
|
|
65
|
+
* Build enriched context from agent context
|
|
66
|
+
*/
|
|
67
|
+
private buildEnrichedContext;
|
|
68
|
+
/**
|
|
69
|
+
* Cleanup resources
|
|
70
|
+
*/
|
|
71
|
+
cleanup(): Promise<void>;
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=MyContextAIClient.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MyContextAIClient.d.ts","sourceRoot":"","sources":["../../src/clients/MyContextAIClient.ts"],"names":[],"mappings":"AACA,OAAO,EACL,QAAQ,EACR,eAAe,EACf,YAAY,EACb,MAAM,wBAAwB,CAAC;AAGhC;;;;;;;;;;;;GAYG;AACH,qBAAa,iBAAkB,YAAW,QAAQ;IAChD,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,CAAS;IACxB,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,WAAW,CAAkB;gBAEzB,OAAO,CAAC,EAAE,MAAM;IA4B5B;;OAEG;IACH,SAAS,IAAI,OAAO;IAIpB;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAO/B;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC;IAczC;;OAEG;IACG,YAAY,CAChB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,MAAM,CAAC;IA4BlB;;OAEG;IACG,iBAAiB,CACrB,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,YAAY,EACtB,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,MAAM,CAAC;IA+BlB;;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;IA8BlB;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAIrC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAazB;;OAEG;IACH,OAAO,CAAC,0BAA0B;IAmDlC;;OAEG;IACH,OAAO,CAAC,2BAA2B;IAkBnC;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAe5B;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAG/B"}
|
|
@@ -0,0 +1,280 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.MyContextAIClient = void 0;
|
|
7
|
+
const openai_1 = __importDefault(require("openai"));
|
|
8
|
+
/**
|
|
9
|
+
* MyContext AI Client - Fine-tuned GPT-4o Mini for component generation
|
|
10
|
+
*
|
|
11
|
+
* This client uses our proprietary fine-tuned model trained on the Intent Dictionary System
|
|
12
|
+
* to achieve 95%+ accuracy in generating shadcn/ui components from natural language.
|
|
13
|
+
*
|
|
14
|
+
* **Usage Options**:
|
|
15
|
+
* 1. Hosted API (coming soon): Set MYCONTEXT_API_KEY for api.mycontext.dev
|
|
16
|
+
* 2. Self-hosted fine-tuned model: Train your own using fine-tuning-strategy.md
|
|
17
|
+
* 3. Fallback to Claude SDK or XAI: Use BYOK mode with your provider keys
|
|
18
|
+
*
|
|
19
|
+
* **Business Model**: Open source CLI, optional paid hosted API
|
|
20
|
+
*/
|
|
21
|
+
class MyContextAIClient {
|
|
22
|
+
constructor(modelId) {
|
|
23
|
+
this.clientType = "direct-api";
|
|
24
|
+
this.supportsTools = false;
|
|
25
|
+
this.supportsStreaming = false;
|
|
26
|
+
this.openai = null;
|
|
27
|
+
this.apiKey = null;
|
|
28
|
+
this.isHostedAPI = false; // Future: detect api.mycontext.dev vs self-hosted
|
|
29
|
+
// Check for MyContext AI API key (future hosted service)
|
|
30
|
+
const myContextApiKey = process.env.MYCONTEXT_API_KEY;
|
|
31
|
+
if (myContextApiKey) {
|
|
32
|
+
// Future: Route to api.mycontext.dev
|
|
33
|
+
this.apiKey = myContextApiKey;
|
|
34
|
+
this.isHostedAPI = true;
|
|
35
|
+
this.modelId = "mycontext-ai"; // Hosted model alias
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
// Self-hosted fine-tuned model
|
|
39
|
+
this.modelId =
|
|
40
|
+
modelId ||
|
|
41
|
+
process.env.MYCONTEXT_MODEL_ID ||
|
|
42
|
+
"ft:gpt-4o-mini-2024-07-18:mycontext:intent-dict:abc123";
|
|
43
|
+
this.apiKey = process.env.OPENAI_API_KEY || null;
|
|
44
|
+
this.isHostedAPI = false;
|
|
45
|
+
}
|
|
46
|
+
if (this.apiKey) {
|
|
47
|
+
this.openai = new openai_1.default({
|
|
48
|
+
apiKey: this.apiKey,
|
|
49
|
+
// Future: baseURL for hosted API
|
|
50
|
+
...(this.isHostedAPI && { baseURL: "https://api.mycontext.dev/v1" }),
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Check if API key is available
|
|
56
|
+
*/
|
|
57
|
+
hasApiKey() {
|
|
58
|
+
return !!this.apiKey;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Set API key for OpenAI client
|
|
62
|
+
*/
|
|
63
|
+
setApiKey(apiKey) {
|
|
64
|
+
this.apiKey = apiKey;
|
|
65
|
+
this.openai = new openai_1.default({
|
|
66
|
+
apiKey: this.apiKey,
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Check connection to OpenAI API
|
|
71
|
+
*/
|
|
72
|
+
async checkConnection() {
|
|
73
|
+
if (!this.apiKey) {
|
|
74
|
+
return false;
|
|
75
|
+
}
|
|
76
|
+
try {
|
|
77
|
+
await this.openai?.models.list();
|
|
78
|
+
return true;
|
|
79
|
+
}
|
|
80
|
+
catch (error) {
|
|
81
|
+
console.warn("MyContext AI connection check failed:", error);
|
|
82
|
+
return false;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Generate text using MyContext AI
|
|
87
|
+
*/
|
|
88
|
+
async generateText(prompt, options = {}) {
|
|
89
|
+
if (!this.apiKey) {
|
|
90
|
+
throw new Error("OpenAI API key not configured for MyContext AI");
|
|
91
|
+
}
|
|
92
|
+
try {
|
|
93
|
+
const response = await this.openai.chat.completions.create({
|
|
94
|
+
model: this.modelId,
|
|
95
|
+
messages: [
|
|
96
|
+
{
|
|
97
|
+
role: "system",
|
|
98
|
+
content: this.buildSystemPrompt(),
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
role: "user",
|
|
102
|
+
content: prompt,
|
|
103
|
+
},
|
|
104
|
+
],
|
|
105
|
+
temperature: options.temperature || 0.1, // Low temperature for consistency
|
|
106
|
+
max_tokens: options.maxTokens || 4000,
|
|
107
|
+
});
|
|
108
|
+
return response.choices[0]?.message?.content || "";
|
|
109
|
+
}
|
|
110
|
+
catch (error) {
|
|
111
|
+
throw new Error(`MyContext AI generation failed: ${error}`);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Generate React component using MyContext AI with Intent Dictionary context
|
|
116
|
+
*/
|
|
117
|
+
async generateComponent(prompt, context, options = {}) {
|
|
118
|
+
if (!this.apiKey) {
|
|
119
|
+
throw new Error("OpenAI API key not configured for MyContext AI");
|
|
120
|
+
}
|
|
121
|
+
try {
|
|
122
|
+
// Build enriched context with Intent Dictionary
|
|
123
|
+
const enrichedContext = this.buildEnrichedContext(context);
|
|
124
|
+
const response = await this.openai.chat.completions.create({
|
|
125
|
+
model: this.modelId,
|
|
126
|
+
messages: [
|
|
127
|
+
{
|
|
128
|
+
role: "system",
|
|
129
|
+
content: this.buildComponentSystemPrompt(enrichedContext),
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
role: "user",
|
|
133
|
+
content: prompt,
|
|
134
|
+
},
|
|
135
|
+
],
|
|
136
|
+
temperature: options.temperature || 0.1,
|
|
137
|
+
max_tokens: options.maxTokens || 4000,
|
|
138
|
+
});
|
|
139
|
+
return response.choices[0]?.message?.content || "";
|
|
140
|
+
}
|
|
141
|
+
catch (error) {
|
|
142
|
+
throw new Error(`MyContext AI component generation failed: ${error}`);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Generate component refinement using MyContext AI
|
|
147
|
+
*/
|
|
148
|
+
async generateComponentRefinement(componentCode, prompt, context, options = {}) {
|
|
149
|
+
if (!this.apiKey) {
|
|
150
|
+
throw new Error("OpenAI API key not configured for MyContext AI");
|
|
151
|
+
}
|
|
152
|
+
try {
|
|
153
|
+
const enrichedContext = this.buildEnrichedContext(context);
|
|
154
|
+
const response = await this.openai.chat.completions.create({
|
|
155
|
+
model: this.modelId,
|
|
156
|
+
messages: [
|
|
157
|
+
{
|
|
158
|
+
role: "system",
|
|
159
|
+
content: this.buildRefinementSystemPrompt(enrichedContext),
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
role: "user",
|
|
163
|
+
content: `Component to refine:\n\`\`\`tsx\n${componentCode}\n\`\`\n\nRefinement request: ${prompt}`,
|
|
164
|
+
},
|
|
165
|
+
],
|
|
166
|
+
temperature: options.temperature || 0.1,
|
|
167
|
+
max_tokens: options.maxTokens || 4000,
|
|
168
|
+
});
|
|
169
|
+
return response.choices[0]?.message?.content || "";
|
|
170
|
+
}
|
|
171
|
+
catch (error) {
|
|
172
|
+
throw new Error(`MyContext AI refinement failed: ${error}`);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* List available models (returns our fine-tuned model)
|
|
177
|
+
*/
|
|
178
|
+
async listModels() {
|
|
179
|
+
return [this.modelId];
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Build system prompt for general text generation
|
|
183
|
+
*/
|
|
184
|
+
buildSystemPrompt() {
|
|
185
|
+
return `You are MyContext AI, a specialized AI model fine-tuned for generating high-quality React components and UI code.
|
|
186
|
+
|
|
187
|
+
Key capabilities:
|
|
188
|
+
- Generate production-ready React components with TypeScript
|
|
189
|
+
- Use shadcn/ui components and patterns
|
|
190
|
+
- Include proper accessibility attributes
|
|
191
|
+
- Follow modern React best practices
|
|
192
|
+
- Provide complete, runnable code
|
|
193
|
+
|
|
194
|
+
Always provide complete, production-ready code with proper imports and TypeScript types.`;
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Build system prompt for component generation with Intent Dictionary context
|
|
198
|
+
*/
|
|
199
|
+
buildComponentSystemPrompt(enrichedContext) {
|
|
200
|
+
const intentContext = enrichedContext.enriched_intents
|
|
201
|
+
?.map((intent) => `- ${intent.canonical_intent}: ${intent.shadcn_components.join(", ")}`)
|
|
202
|
+
.join("\n") || "";
|
|
203
|
+
const validationReport = enrichedContext.intent_validation_report;
|
|
204
|
+
const confidenceScore = validationReport
|
|
205
|
+
? (validationReport.confidence_score * 100).toFixed(0)
|
|
206
|
+
: "N/A";
|
|
207
|
+
return `You are MyContext AI, fine-tuned for 95%+ accurate shadcn/ui component generation using the Intent Dictionary System.
|
|
208
|
+
|
|
209
|
+
INTENT DICTIONARY CONTEXT:
|
|
210
|
+
${intentContext}
|
|
211
|
+
|
|
212
|
+
VALIDATION REPORT:
|
|
213
|
+
- Confidence Score: ${confidenceScore}%
|
|
214
|
+
- Validated Intents: ${validationReport?.validated_intents.length || 0}
|
|
215
|
+
- Ambiguous Intents: ${validationReport?.ambiguous_intents.length || 0}
|
|
216
|
+
|
|
217
|
+
GENERATION RULES:
|
|
218
|
+
1. Generate complete, production-ready React components
|
|
219
|
+
2. Use only shadcn/ui components from the intent dictionary
|
|
220
|
+
3. Include proper TypeScript types and interfaces
|
|
221
|
+
4. Add accessibility attributes (ARIA labels, roles, etc.)
|
|
222
|
+
5. Follow exact component patterns specified in intent mappings
|
|
223
|
+
6. Never hallucinate components or props not in the dictionary
|
|
224
|
+
7. Include proper imports and exports
|
|
225
|
+
8. Use modern React patterns (hooks, functional components)
|
|
226
|
+
9. Add proper error handling and loading states
|
|
227
|
+
10. Ensure responsive design with Tailwind CSS
|
|
228
|
+
|
|
229
|
+
OUTPUT FORMAT:
|
|
230
|
+
- Complete React component with TypeScript
|
|
231
|
+
- Proper imports from shadcn/ui
|
|
232
|
+
- Interface definitions for props
|
|
233
|
+
- Accessibility attributes
|
|
234
|
+
- Responsive design classes
|
|
235
|
+
- Error handling and loading states
|
|
236
|
+
|
|
237
|
+
Never generate incomplete or placeholder code. Always provide production-ready components.`;
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* Build system prompt for component refinement
|
|
241
|
+
*/
|
|
242
|
+
buildRefinementSystemPrompt(enrichedContext) {
|
|
243
|
+
return `You are MyContext AI, specialized in refining and improving React components.
|
|
244
|
+
|
|
245
|
+
REFINEMENT RULES:
|
|
246
|
+
1. Maintain existing functionality while implementing requested changes
|
|
247
|
+
2. Preserve TypeScript types and interfaces
|
|
248
|
+
3. Keep accessibility attributes intact
|
|
249
|
+
4. Follow shadcn/ui patterns and conventions
|
|
250
|
+
5. Ensure code remains production-ready
|
|
251
|
+
6. Add proper error handling if needed
|
|
252
|
+
7. Maintain responsive design
|
|
253
|
+
8. Preserve existing imports and structure
|
|
254
|
+
|
|
255
|
+
Always provide the complete refined component, not just the changes.`;
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* Build enriched context from agent context
|
|
259
|
+
*/
|
|
260
|
+
buildEnrichedContext(context) {
|
|
261
|
+
return {
|
|
262
|
+
technical_context: {
|
|
263
|
+
prd: context?.prd || "",
|
|
264
|
+
types: context?.types || "",
|
|
265
|
+
brand: context?.brand || "",
|
|
266
|
+
},
|
|
267
|
+
enriched_intents: [],
|
|
268
|
+
intent_validation_report: undefined,
|
|
269
|
+
intent_clarifications: [],
|
|
270
|
+
};
|
|
271
|
+
}
|
|
272
|
+
/**
|
|
273
|
+
* Cleanup resources
|
|
274
|
+
*/
|
|
275
|
+
async cleanup() {
|
|
276
|
+
// No cleanup needed for OpenAI client
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
exports.MyContextAIClient = MyContextAIClient;
|
|
280
|
+
//# sourceMappingURL=MyContextAIClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MyContextAIClient.js","sourceRoot":"","sources":["../../src/clients/MyContextAIClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { AIClient, AIClientOptions, AgentContext } from "../interfaces/AIClient";
|
|
2
|
+
import { MyContextAIClient } from "./MyContextAIClient";
|
|
3
|
+
/**
|
|
4
|
+
* Simplified Provider Chain for MyContext CLI
|
|
5
|
+
*
|
|
6
|
+
* Primary: MyContext AI (Fine-tuned GPT-4o Mini)
|
|
7
|
+
* Fallback 1: Claude SDK
|
|
8
|
+
* Fallback 2: XAI (Grok)
|
|
9
|
+
*
|
|
10
|
+
* This replaces the complex HybridAIClient with a streamlined approach
|
|
11
|
+
* focused on our specialized fine-tuned model.
|
|
12
|
+
*/
|
|
13
|
+
export declare class ProviderChain implements AIClient {
|
|
14
|
+
readonly clientType: "hybrid";
|
|
15
|
+
readonly supportsTools = true;
|
|
16
|
+
readonly supportsStreaming = false;
|
|
17
|
+
private providers;
|
|
18
|
+
private myContextAI;
|
|
19
|
+
private claudeSDK;
|
|
20
|
+
private xai;
|
|
21
|
+
constructor();
|
|
22
|
+
/**
|
|
23
|
+
* Check if any provider has API key configured
|
|
24
|
+
*/
|
|
25
|
+
hasApiKey(): boolean;
|
|
26
|
+
/**
|
|
27
|
+
* Set API key for all providers
|
|
28
|
+
*/
|
|
29
|
+
setApiKey(apiKey: string): void;
|
|
30
|
+
/**
|
|
31
|
+
* Check connection to any available provider
|
|
32
|
+
*/
|
|
33
|
+
checkConnection(): Promise<boolean>;
|
|
34
|
+
/**
|
|
35
|
+
* Generate text using the first available provider
|
|
36
|
+
*/
|
|
37
|
+
generateText(prompt: string, options?: AIClientOptions): Promise<string>;
|
|
38
|
+
/**
|
|
39
|
+
* Generate React component using MyContext AI with fallbacks
|
|
40
|
+
*/
|
|
41
|
+
generateComponent(prompt: string, context?: AgentContext, options?: AIClientOptions): Promise<string>;
|
|
42
|
+
/**
|
|
43
|
+
* Generate component refinement using the first available provider
|
|
44
|
+
*/
|
|
45
|
+
generateComponentRefinement(componentCode: string, prompt: string, context?: AgentContext, options?: AIClientOptions): Promise<string>;
|
|
46
|
+
/**
|
|
47
|
+
* List models from all providers
|
|
48
|
+
*/
|
|
49
|
+
listModels(): Promise<string[]>;
|
|
50
|
+
/**
|
|
51
|
+
* Get the primary provider (MyContext AI)
|
|
52
|
+
*/
|
|
53
|
+
getPrimaryProvider(): MyContextAIClient;
|
|
54
|
+
/**
|
|
55
|
+
* Get provider by name
|
|
56
|
+
*/
|
|
57
|
+
getProvider(name: string): AIClient | null;
|
|
58
|
+
/**
|
|
59
|
+
* Get provider status
|
|
60
|
+
*/
|
|
61
|
+
getProviderStatus(): Array<{
|
|
62
|
+
name: string;
|
|
63
|
+
hasKey: boolean;
|
|
64
|
+
connected: boolean;
|
|
65
|
+
}>;
|
|
66
|
+
/**
|
|
67
|
+
* Check all provider connections
|
|
68
|
+
*/
|
|
69
|
+
checkAllConnections(): Promise<Array<{
|
|
70
|
+
name: string;
|
|
71
|
+
hasKey: boolean;
|
|
72
|
+
connected: boolean;
|
|
73
|
+
}>>;
|
|
74
|
+
/**
|
|
75
|
+
* Cleanup all providers
|
|
76
|
+
*/
|
|
77
|
+
cleanup(): Promise<void>;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Get the global provider chain instance
|
|
81
|
+
*/
|
|
82
|
+
export declare function getProviderChain(): ProviderChain;
|
|
83
|
+
/**
|
|
84
|
+
* Reset the global provider chain instance
|
|
85
|
+
*/
|
|
86
|
+
export declare function resetProviderChain(): void;
|
|
87
|
+
//# sourceMappingURL=ProviderChain.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProviderChain.d.ts","sourceRoot":"","sources":["../../src/clients/ProviderChain.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,eAAe,EACf,YAAY,EACb,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAKxD;;;;;;;;;GASG;AACH,qBAAa,aAAc,YAAW,QAAQ;IAC5C,QAAQ,CAAC,UAAU,EAAG,QAAQ,CAAU;IACxC,QAAQ,CAAC,aAAa,QAAQ;IAC9B,QAAQ,CAAC,iBAAiB,SAAS;IAEnC,OAAO,CAAC,SAAS,CAAa;IAC9B,OAAO,CAAC,WAAW,CAAoB;IACvC,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,GAAG,CAAY;;IAevB;;OAEG;IACH,SAAS,IAAI,OAAO;IAIpB;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAQ/B;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC;IAkBzC;;OAEG;IACG,YAAY,CAChB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,MAAM,CAAC;IAsBlB;;OAEG;IACG,iBAAiB,CACrB,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,YAAY,EACtB,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,MAAM,CAAC;IA4BlB;;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;IA2BlB;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAqBrC;;OAEG;IACH,kBAAkB,IAAI,iBAAiB;IAIvC;;OAEG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI;IAgB1C;;OAEG;IACH,iBAAiB,IAAI,KAAK,CAAC;QACzB,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,OAAO,CAAC;QAChB,SAAS,EAAE,OAAO,CAAC;KACpB,CAAC;IAQF;;OAEG;IACG,mBAAmB,IAAI,OAAO,CAClC,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,OAAO,CAAC;QAAC,SAAS,EAAE,OAAO,CAAA;KAAE,CAAC,CAC7D;IAyBD;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAgB/B;AAOD;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,aAAa,CAKhD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAKzC"}
|