mycontext-cli 2.0.7 → 2.0.9

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.
Files changed (204) hide show
  1. package/README.md +84 -0
  2. package/dist/agents/communication/AgentCommunicationManager.d.ts +3 -3
  3. package/dist/agents/communication/AgentCommunicationManager.d.ts.map +1 -1
  4. package/dist/agents/communication/AgentCommunicationManager.js +7 -6
  5. package/dist/agents/communication/AgentCommunicationManager.js.map +1 -1
  6. package/dist/agents/evolution/CodeEvolutionEngine.d.ts.map +1 -1
  7. package/dist/agents/evolution/CodeEvolutionEngine.js +10 -7
  8. package/dist/agents/evolution/CodeEvolutionEngine.js.map +1 -1
  9. package/dist/agents/implementations/ArchitectAgent.js +2 -2
  10. package/dist/agents/implementations/ArchitectAgent.js.map +1 -1
  11. package/dist/agents/implementations/BackendDevAgent.d.ts.map +1 -1
  12. package/dist/agents/implementations/BackendDevAgent.js +4 -1
  13. package/dist/agents/implementations/BackendDevAgent.js.map +1 -1
  14. package/dist/agents/implementations/BuildStrategyAgent.d.ts.map +1 -1
  15. package/dist/agents/implementations/BuildStrategyAgent.js +4 -3
  16. package/dist/agents/implementations/BuildStrategyAgent.js.map +1 -1
  17. package/dist/agents/implementations/CodeGenSubAgent.d.ts.map +1 -1
  18. package/dist/agents/implementations/CodeGenSubAgent.js +6 -5
  19. package/dist/agents/implementations/CodeGenSubAgent.js.map +1 -1
  20. package/dist/agents/implementations/DocsSubAgent.js +2 -2
  21. package/dist/agents/implementations/DocsSubAgent.js.map +1 -1
  22. package/dist/agents/implementations/EnhancementAgent.d.ts.map +1 -1
  23. package/dist/agents/implementations/EnhancementAgent.js +6 -4
  24. package/dist/agents/implementations/EnhancementAgent.js.map +1 -1
  25. package/dist/agents/implementations/InteractiveAgent.d.ts.map +1 -1
  26. package/dist/agents/implementations/InteractiveAgent.js +8 -1
  27. package/dist/agents/implementations/InteractiveAgent.js.map +1 -1
  28. package/dist/agents/implementations/PromptConstructorAgent.d.ts.map +1 -1
  29. package/dist/agents/implementations/PromptConstructorAgent.js +79 -31
  30. package/dist/agents/implementations/PromptConstructorAgent.js.map +1 -1
  31. package/dist/agents/implementations/QASubAgent.js +2 -2
  32. package/dist/agents/implementations/QASubAgent.js.map +1 -1
  33. package/dist/agents/implementations/SecurityAgent.js +2 -2
  34. package/dist/agents/implementations/SecurityAgent.js.map +1 -1
  35. package/dist/agents/implementations/WorkflowAgent.d.ts +0 -1
  36. package/dist/agents/implementations/WorkflowAgent.d.ts.map +1 -1
  37. package/dist/agents/implementations/WorkflowAgent.js +6 -10
  38. package/dist/agents/implementations/WorkflowAgent.js.map +1 -1
  39. package/dist/agents/intelligence/ProjectIntelligence.js +5 -5
  40. package/dist/agents/intelligence/ProjectIntelligence.js.map +1 -1
  41. package/dist/agents/orchestrator/SubAgentOrchestrator.d.ts.map +1 -1
  42. package/dist/agents/orchestrator/SubAgentOrchestrator.js +4 -4
  43. package/dist/agents/orchestrator/SubAgentOrchestrator.js.map +1 -1
  44. package/dist/cli.js +8 -40
  45. package/dist/cli.js.map +1 -1
  46. package/dist/commands/analyze.d.ts.map +1 -1
  47. package/dist/commands/analyze.js +9 -9
  48. package/dist/commands/analyze.js.map +1 -1
  49. package/dist/commands/enhance.d.ts.map +1 -1
  50. package/dist/commands/enhance.js +23 -78
  51. package/dist/commands/enhance.js.map +1 -1
  52. package/dist/commands/generate-components.d.ts.map +1 -1
  53. package/dist/commands/generate-components.js +84 -36
  54. package/dist/commands/generate-components.js.map +1 -1
  55. package/dist/commands/generate-todos.js +1 -1
  56. package/dist/commands/generate-todos.js.map +1 -1
  57. package/dist/commands/generate.d.ts.map +1 -1
  58. package/dist/commands/generate.js +57 -41
  59. package/dist/commands/generate.js.map +1 -1
  60. package/dist/commands/playbooks.d.ts.map +1 -1
  61. package/dist/commands/playbooks.js +14 -8
  62. package/dist/commands/playbooks.js.map +1 -1
  63. package/dist/commands/preview.js +1 -1
  64. package/dist/commands/preview.js.map +1 -1
  65. package/dist/commands/refine.d.ts +33 -0
  66. package/dist/commands/refine.d.ts.map +1 -1
  67. package/dist/commands/refine.js +334 -3
  68. package/dist/commands/refine.js.map +1 -1
  69. package/dist/commands/sanitize.d.ts.map +1 -1
  70. package/dist/commands/sanitize.js +11 -4
  71. package/dist/commands/sanitize.js.map +1 -1
  72. package/dist/commands/setup-database.d.ts.map +1 -1
  73. package/dist/commands/setup-database.js +9 -7
  74. package/dist/commands/setup-database.js.map +1 -1
  75. package/dist/commands/setup-instantdb.d.ts.map +1 -1
  76. package/dist/commands/setup-instantdb.js +9 -7
  77. package/dist/commands/setup-instantdb.js.map +1 -1
  78. package/dist/config/build-strategies.json +2 -2
  79. package/dist/config/dependencies.json +4 -4
  80. package/dist/{agents/personalities/definitions.d.ts → constants/subAgentPersonalities.d.ts} +2 -2
  81. package/dist/constants/subAgentPersonalities.d.ts.map +1 -0
  82. package/dist/{agents/personalities/definitions.js → constants/subAgentPersonalities.js} +2 -2
  83. package/dist/constants/subAgentPersonalities.js.map +1 -0
  84. package/dist/package.json +1 -1
  85. package/dist/types/analysis.d.ts +67 -0
  86. package/dist/types/analysis.d.ts.map +1 -0
  87. package/dist/types/analysis.js +7 -0
  88. package/dist/types/analysis.js.map +1 -0
  89. package/dist/types/components.d.ts +90 -0
  90. package/dist/types/components.d.ts.map +1 -0
  91. package/dist/types/components.js +7 -0
  92. package/dist/types/components.js.map +1 -0
  93. package/dist/types/enhancement.d.ts +127 -0
  94. package/dist/types/enhancement.d.ts.map +1 -0
  95. package/dist/types/enhancement.js +7 -0
  96. package/dist/types/enhancement.js.map +1 -0
  97. package/dist/types/index.d.ts +4 -0
  98. package/dist/types/index.d.ts.map +1 -1
  99. package/dist/types/index.js +25 -0
  100. package/dist/types/index.js.map +1 -1
  101. package/dist/types/progress.d.ts +88 -0
  102. package/dist/types/progress.d.ts.map +1 -0
  103. package/dist/types/progress.js +7 -0
  104. package/dist/types/progress.js.map +1 -0
  105. package/dist/utils/ProjectHealthMonitor.d.ts.map +1 -1
  106. package/dist/utils/ProjectHealthMonitor.js +47 -36
  107. package/dist/utils/ProjectHealthMonitor.js.map +1 -1
  108. package/dist/utils/agentDefinitions.d.ts +2 -2
  109. package/dist/utils/agentDefinitions.d.ts.map +1 -1
  110. package/dist/utils/agentDefinitions.js +40 -33
  111. package/dist/utils/agentDefinitions.js.map +1 -1
  112. package/dist/utils/buildStrategyManager.d.ts.map +1 -1
  113. package/dist/utils/buildStrategyManager.js +1 -1
  114. package/dist/utils/buildStrategyManager.js.map +1 -1
  115. package/dist/utils/claudeAgentClient.d.ts +0 -1
  116. package/dist/utils/claudeAgentClient.d.ts.map +1 -1
  117. package/dist/utils/claudeAgentClient.js +46 -39
  118. package/dist/utils/claudeAgentClient.js.map +1 -1
  119. package/dist/utils/envExampleGenerator.d.ts.map +1 -1
  120. package/dist/utils/envExampleGenerator.js +94 -38
  121. package/dist/utils/envExampleGenerator.js.map +1 -1
  122. package/dist/utils/hybridAIClient.d.ts +1 -9
  123. package/dist/utils/hybridAIClient.d.ts.map +1 -1
  124. package/dist/utils/hybridAIClient.js +81 -78
  125. package/dist/utils/hybridAIClient.js.map +1 -1
  126. package/dist/utils/mcpAgentIntegration.d.ts.map +1 -1
  127. package/dist/utils/mcpAgentIntegration.js +1 -1
  128. package/dist/utils/mcpAgentIntegration.js.map +1 -1
  129. package/dist/utils/mcpTools.d.ts +5 -5
  130. package/dist/utils/mcpTools.d.ts.map +1 -1
  131. package/dist/utils/mcpTools.js +319 -241
  132. package/dist/utils/mcpTools.js.map +1 -1
  133. package/dist/utils/progressTracker.d.ts +3 -79
  134. package/dist/utils/progressTracker.d.ts.map +1 -1
  135. package/dist/utils/progressTracker.js +92 -68
  136. package/dist/utils/progressTracker.js.map +1 -1
  137. package/dist/utils/typeTemplateGenerator.d.ts.map +1 -1
  138. package/dist/utils/typeTemplateGenerator.js +125 -79
  139. package/dist/utils/typeTemplateGenerator.js.map +1 -1
  140. package/package.json +1 -1
  141. package/dist/agents/implementations/ClaudeAgentWorkflow.d.ts +0 -110
  142. package/dist/agents/implementations/ClaudeAgentWorkflow.d.ts.map +0 -1
  143. package/dist/agents/implementations/ClaudeAgentWorkflow.js +0 -661
  144. package/dist/agents/implementations/ClaudeAgentWorkflow.js.map +0 -1
  145. package/dist/agents/personalities/definitions.d.ts.map +0 -1
  146. package/dist/agents/personalities/definitions.js.map +0 -1
  147. package/dist/commands/model.d.ts +0 -22
  148. package/dist/commands/model.d.ts.map +0 -1
  149. package/dist/commands/model.js +0 -130
  150. package/dist/commands/model.js.map +0 -1
  151. package/dist/commands/normalize.d.ts +0 -5
  152. package/dist/commands/normalize.d.ts.map +0 -1
  153. package/dist/commands/normalize.js +0 -128
  154. package/dist/commands/normalize.js.map +0 -1
  155. package/dist/commands/pricing.d.ts +0 -15
  156. package/dist/commands/pricing.d.ts.map +0 -1
  157. package/dist/commands/pricing.js +0 -94
  158. package/dist/commands/pricing.js.map +0 -1
  159. package/dist/config/ai-providers.json +0 -230
  160. package/dist/config/pricing.json +0 -55
  161. package/dist/utils/aiClientFactory.d.ts +0 -93
  162. package/dist/utils/aiClientFactory.d.ts.map +0 -1
  163. package/dist/utils/aiClientFactory.js +0 -290
  164. package/dist/utils/aiClientFactory.js.map +0 -1
  165. package/dist/utils/aiClientRouter.d.ts +0 -121
  166. package/dist/utils/aiClientRouter.d.ts.map +0 -1
  167. package/dist/utils/aiClientRouter.js +0 -401
  168. package/dist/utils/aiClientRouter.js.map +0 -1
  169. package/dist/utils/apiKeyManager.d.ts +0 -137
  170. package/dist/utils/apiKeyManager.d.ts.map +0 -1
  171. package/dist/utils/apiKeyManager.js +0 -479
  172. package/dist/utils/apiKeyManager.js.map +0 -1
  173. package/dist/utils/claudeClient.d.ts +0 -28
  174. package/dist/utils/claudeClient.d.ts.map +0 -1
  175. package/dist/utils/claudeClient.js +0 -233
  176. package/dist/utils/claudeClient.js.map +0 -1
  177. package/dist/utils/geminiClient.d.ts +0 -61
  178. package/dist/utils/geminiClient.d.ts.map +0 -1
  179. package/dist/utils/geminiClient.js +0 -173
  180. package/dist/utils/geminiClient.js.map +0 -1
  181. package/dist/utils/githubModelsClient.d.ts +0 -27
  182. package/dist/utils/githubModelsClient.d.ts.map +0 -1
  183. package/dist/utils/githubModelsClient.js +0 -332
  184. package/dist/utils/githubModelsClient.js.map +0 -1
  185. package/dist/utils/huggingFaceClient.d.ts +0 -44
  186. package/dist/utils/huggingFaceClient.d.ts.map +0 -1
  187. package/dist/utils/huggingFaceClient.js +0 -169
  188. package/dist/utils/huggingFaceClient.js.map +0 -1
  189. package/dist/utils/openaiClient.d.ts +0 -24
  190. package/dist/utils/openaiClient.d.ts.map +0 -1
  191. package/dist/utils/openaiClient.js +0 -204
  192. package/dist/utils/openaiClient.js.map +0 -1
  193. package/dist/utils/qwenClient.d.ts +0 -22
  194. package/dist/utils/qwenClient.d.ts.map +0 -1
  195. package/dist/utils/qwenClient.js +0 -185
  196. package/dist/utils/qwenClient.js.map +0 -1
  197. package/dist/utils/streamingHandler.d.ts +0 -98
  198. package/dist/utils/streamingHandler.d.ts.map +0 -1
  199. package/dist/utils/streamingHandler.js +0 -259
  200. package/dist/utils/streamingHandler.js.map +0 -1
  201. package/dist/utils/xaiClient.d.ts +0 -19
  202. package/dist/utils/xaiClient.d.ts.map +0 -1
  203. package/dist/utils/xaiClient.js +0 -135
  204. package/dist/utils/xaiClient.js.map +0 -1
@@ -1,230 +0,0 @@
1
- {
2
- "github": {
3
- "enabled": true,
4
- "priority": 1,
5
- "models": {
6
- "component-generator": {
7
- "name": "grok-3",
8
- "description": "GPT-5 for component generation on GitHub Models",
9
- "capabilities": ["generation", "typescript", "jsx", "docs"],
10
- "maxTokens": 4000,
11
- "temperature": 0.2
12
- },
13
- "component-refiner": {
14
- "name": "grok-3",
15
- "description": "GPT-5 for high-quality refinement and editing",
16
- "capabilities": ["refinement", "accessibility", "styling", "perf"],
17
- "maxTokens": 4000,
18
- "temperature": 0.2
19
- }
20
- },
21
- "api": {
22
- "baseUrl": "https://models.github.ai/inference",
23
- "timeout": 60000,
24
- "retries": 2
25
- }
26
- },
27
- "huggingface": {
28
- "enabled": false,
29
- "priority": 5,
30
- "models": {
31
- "component-refiner": {
32
- "name": "mycontext/react-component-refiner",
33
- "description": "Specialized model for React component refinement",
34
- "capabilities": ["refinement", "accessibility", "styling", "performance"],
35
- "maxTokens": 2048,
36
- "temperature": 0.1
37
- },
38
- "component-generator": {
39
- "name": "mycontext/react-component-generator",
40
- "description": "Specialized model for generating new React components",
41
- "capabilities": ["generation", "typescript", "jsx", "shadcn"],
42
- "maxTokens": 2048,
43
- "temperature": 0.1
44
- }
45
- },
46
- "api": {
47
- "baseUrl": "https://api-inference.huggingface.co",
48
- "timeout": 60000,
49
- "retries": 2
50
- }
51
- },
52
- "xai": {
53
- "enabled": true,
54
- "priority": 1,
55
- "models": {
56
- "component-generator": {
57
- "name": "grok-4-fast-reasoning",
58
- "description": "Grok 4 Fast Reasoning for component generation",
59
- "capabilities": ["generation", "typescript", "jsx", "docs"],
60
- "maxTokens": 8000,
61
- "temperature": 0.2
62
- },
63
- "component-refiner": {
64
- "name": "grok-4-fast-reasoning",
65
- "description": "Grok 4 Fast Reasoning for refinement",
66
- "capabilities": ["refinement", "accessibility", "styling", "perf"],
67
- "maxTokens": 8000,
68
- "temperature": 0.2
69
- },
70
- "text-generator": {
71
- "name": "grok-4-fast-reasoning",
72
- "description": "Grok 4 Fast Reasoning for PRD, types, and brand generation",
73
- "capabilities": ["generation", "analysis", "documentation"],
74
- "maxTokens": 8000,
75
- "temperature": 0.3
76
- }
77
- },
78
- "api": {
79
- "baseUrl": "https://api.x.ai/v1",
80
- "timeout": 60000,
81
- "retries": 2
82
- }
83
- },
84
- "openai": {
85
- "enabled": true,
86
- "priority": 1,
87
- "models": {
88
- "component-generator": {
89
- "name": "gpt-3.5-turbo",
90
- "description": "GPT-3.5-turbo for component generation",
91
- "capabilities": ["generation", "typescript", "jsx", "docs"],
92
- "maxTokens": 4000,
93
- "temperature": 0.2
94
- },
95
- "component-refiner": {
96
- "name": "gpt-3.5-turbo",
97
- "description": "GPT-3.5-turbo for high-quality refinement and editing",
98
- "capabilities": ["refinement", "accessibility", "styling", "perf"],
99
- "maxTokens": 4000,
100
- "temperature": 0.2
101
- },
102
- "text-generator": {
103
- "name": "gpt-3.5-turbo",
104
- "description": "GPT-3.5-turbo for PRD, types, and brand generation",
105
- "capabilities": ["generation", "analysis", "documentation"],
106
- "maxTokens": 4000,
107
- "temperature": 0.3
108
- },
109
- "component-generator-gpt4": {
110
- "name": "gpt-4",
111
- "description": "GPT-4 for advanced component generation (requires API access)",
112
- "capabilities": ["generation", "typescript", "jsx", "docs"],
113
- "maxTokens": 4000,
114
- "temperature": 0.2
115
- }
116
- },
117
- "api": {
118
- "baseUrl": "https://api.openai.com/v1",
119
- "timeout": 60000,
120
- "retries": 2
121
- }
122
- },
123
- "claude": {
124
- "enabled": true,
125
- "priority": 1,
126
- "models": {
127
- "component-generator": {
128
- "name": "claude-3-5-sonnet-20241022",
129
- "description": "Claude 3.5 Sonnet for component generation",
130
- "capabilities": ["generation", "typescript", "jsx", "docs"],
131
- "maxTokens": 4000,
132
- "temperature": 0.2
133
- },
134
- "component-refiner": {
135
- "name": "claude-3-5-sonnet-20241022",
136
- "description": "Claude 3.5 Sonnet for high-quality refinement and editing",
137
- "capabilities": ["refinement", "accessibility", "styling", "perf"],
138
- "maxTokens": 4000,
139
- "temperature": 0.2
140
- },
141
- "text-generator": {
142
- "name": "claude-3-5-sonnet-20241022",
143
- "description": "Claude 3.5 Sonnet for PRD, types, and brand generation",
144
- "capabilities": ["generation", "analysis", "documentation"],
145
- "maxTokens": 4000,
146
- "temperature": 0.3
147
- },
148
- "component-generator-haiku": {
149
- "name": "claude-3-haiku-20240307",
150
- "description": "Claude 3 Haiku for fast component generation",
151
- "capabilities": ["generation", "typescript", "jsx"],
152
- "maxTokens": 4000,
153
- "temperature": 0.2
154
- }
155
- },
156
- "api": {
157
- "baseUrl": "https://api.anthropic.com/v1",
158
- "timeout": 60000,
159
- "retries": 2
160
- }
161
- },
162
- "qwen": {
163
- "enabled": true,
164
- "priority": 5,
165
- "models": {
166
- "component-generator": {
167
- "name": "qwen/qwen3-coder:free",
168
- "description": "Qwen3 Coder 480B A35B for component generation (free via OpenRouter)",
169
- "capabilities": ["generation", "typescript", "jsx", "docs", "code-generation"],
170
- "maxTokens": 4000,
171
- "temperature": 0.2
172
- },
173
- "component-refiner": {
174
- "name": "qwen/qwen3-coder:free",
175
- "description": "Qwen3 Coder 480B A35B for component refinement (free via OpenRouter)",
176
- "capabilities": ["refinement", "accessibility", "styling", "perf", "code-generation"],
177
- "maxTokens": 4000,
178
- "temperature": 0.2
179
- },
180
- "text-generator": {
181
- "name": "qwen/qwen3-coder:free",
182
- "description": "Qwen3 Coder 480B A35B for PRD, types, and brand generation (free via OpenRouter)",
183
- "capabilities": ["generation", "analysis", "documentation", "code-generation"],
184
- "maxTokens": 4000,
185
- "temperature": 0.3
186
- }
187
- },
188
- "api": {
189
- "baseUrl": "https://openrouter.ai/api/v1",
190
- "timeout": 60000,
191
- "retries": 2
192
- }
193
- },
194
- "gemini": {
195
- "enabled": true,
196
- "priority": 5,
197
- "models": {
198
- "component-generator": {
199
- "name": "gemini-2.0-flash",
200
- "description": "Gemini 2.0 Flash for component generation",
201
- "capabilities": ["generation", "typescript", "jsx", "docs", "code-generation"],
202
- "maxTokens": 4000,
203
- "temperature": 0.2
204
- },
205
- "component-refiner": {
206
- "name": "gemini-2.0-flash",
207
- "description": "Gemini 2.0 Flash for component refinement",
208
- "capabilities": ["refinement", "accessibility", "styling", "perf", "code-generation"],
209
- "maxTokens": 4000,
210
- "temperature": 0.2
211
- },
212
- "text-generator": {
213
- "name": "gemini-2.0-flash",
214
- "description": "Gemini 2.0 Flash for PRD, types, and brand generation",
215
- "capabilities": ["generation", "analysis", "documentation", "code-generation"],
216
- "maxTokens": 4000,
217
- "temperature": 0.3
218
- }
219
- },
220
- "api": {
221
- "baseUrl": "https://generativelanguage.googleapis.com/v1beta",
222
- "timeout": 60000,
223
- "retries": 2
224
- }
225
- },
226
- "fallback": {
227
- "enabled": false,
228
- "priority": 99
229
- }
230
- }
@@ -1,55 +0,0 @@
1
- {
2
- "plans": {
3
- "free_beta": {
4
- "name": "Free Beta",
5
- "price": 0,
6
- "currency": "USD",
7
- "interval": "month",
8
- "features": [
9
- "Unlimited Qwen3 Coder generations",
10
- "All component types",
11
- "Basic support",
12
- "Community access"
13
- ],
14
- "limits": {
15
- "generations_per_month": -1,
16
- "max_tokens_per_request": 4000,
17
- "concurrent_requests": 5
18
- },
19
- "description": "Free during beta period - unlimited usage with Qwen3 Coder"
20
- },
21
- "unlimited": {
22
- "name": "Unlimited Pro",
23
- "price": 5,
24
- "currency": "USD",
25
- "interval": "month",
26
- "features": [
27
- "Unlimited generations with all AI providers",
28
- "Priority support",
29
- "Advanced features",
30
- "Team collaboration",
31
- "API access"
32
- ],
33
- "limits": {
34
- "generations_per_month": -1,
35
- "max_tokens_per_request": 8000,
36
- "concurrent_requests": 20
37
- },
38
- "description": "Unlimited usage with all AI providers and premium features"
39
- }
40
- },
41
- "hosted_api": {
42
- "base_url": "https://api.mycontext.fbien.com/v1",
43
- "endpoints": {
44
- "generate": "/generate",
45
- "status": "/status",
46
- "pricing": "/pricing"
47
- },
48
- "fallback_providers": ["qwen", "github", "claude", "openai"]
49
- },
50
- "beta_period": {
51
- "enabled": true,
52
- "end_date": "2025-12-31",
53
- "message": "Free beta until December 31, 2025"
54
- }
55
- }
@@ -1,93 +0,0 @@
1
- /**
2
- * AI Client Factory
3
- *
4
- * Factory for creating and managing AI client instances.
5
- * Handles client selection, caching, and lifecycle management.
6
- */
7
- import { AIClient, AgentAIClient, AIClientFactoryConfig, OperationComplexity } from '../interfaces/AIClient';
8
- /**
9
- * Singleton factory for creating and managing AI clients
10
- */
11
- export declare class AIClientFactory {
12
- private static instance;
13
- private config;
14
- private clientCache;
15
- private workingDirectory;
16
- private constructor();
17
- /**
18
- * Get singleton instance
19
- */
20
- static getInstance(config?: AIClientFactoryConfig): AIClientFactory;
21
- /**
22
- * Reset singleton (useful for testing)
23
- */
24
- static reset(): void;
25
- /**
26
- * Update factory configuration
27
- */
28
- configure(config: Partial<AIClientFactoryConfig>): void;
29
- /**
30
- * Get or create a client based on requirements
31
- */
32
- getClient(complexity?: OperationComplexity, requiresTools?: boolean, requiresStreaming?: boolean): Promise<AIClient>;
33
- /**
34
- * Get Agent SDK client specifically (for advanced operations)
35
- */
36
- getAgentClient(): Promise<AgentAIClient>;
37
- /**
38
- * Get Direct API client specifically (for simple operations)
39
- */
40
- getDirectClient(): Promise<AIClient>;
41
- /**
42
- * Select appropriate client type based on operation requirements
43
- */
44
- private selectClientType;
45
- /**
46
- * Create a new client instance
47
- */
48
- private createClient;
49
- /**
50
- * Check if any AI client is available and configured
51
- */
52
- isAvailable(): Promise<boolean>;
53
- /**
54
- * Test connection for a specific client type
55
- */
56
- testConnection(clientType?: 'direct-api' | 'agent-sdk'): Promise<boolean>;
57
- /**
58
- * Get current configuration
59
- */
60
- getConfig(): AIClientFactoryConfig;
61
- /**
62
- * Clear client cache
63
- */
64
- clearCache(): void;
65
- /**
66
- * Cleanup all cached clients
67
- */
68
- cleanup(): Promise<void>;
69
- /**
70
- * Get statistics about cached clients
71
- */
72
- getStats(): {
73
- cachedClients: number;
74
- clientTypes: Record<string, number>;
75
- };
76
- /**
77
- * Log current factory state (for debugging)
78
- */
79
- logState(): void;
80
- }
81
- /**
82
- * Convenience function to get factory instance
83
- */
84
- export declare function getAIClientFactory(config?: AIClientFactoryConfig): AIClientFactory;
85
- /**
86
- * Convenience function to get an AI client
87
- */
88
- export declare function getAIClient(complexity?: OperationComplexity, requiresTools?: boolean, requiresStreaming?: boolean): Promise<AIClient>;
89
- /**
90
- * Convenience function to get Agent SDK client
91
- */
92
- export declare function getAgentClient(): Promise<AgentAIClient>;
93
- //# sourceMappingURL=aiClientFactory.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"aiClientFactory.d.ts","sourceRoot":"","sources":["../../src/utils/aiClientFactory.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,QAAQ,EACR,aAAa,EACb,qBAAqB,EAErB,mBAAmB,EACpB,MAAM,wBAAwB,CAAC;AAKhC;;GAEG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAkB;IACzC,OAAO,CAAC,MAAM,CAAwB;IACtC,OAAO,CAAC,WAAW,CAAoC;IACvD,OAAO,CAAC,gBAAgB,CAAS;IAEjC,OAAO;IAaP;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,qBAAqB,GAAG,eAAe;IAOnE;;OAEG;IACH,MAAM,CAAC,KAAK,IAAI,IAAI;IAIpB;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,qBAAqB,CAAC,GAAG,IAAI;IAOvD;;OAEG;IACG,SAAS,CACb,UAAU,CAAC,EAAE,mBAAmB,EAChC,aAAa,GAAE,OAAe,EAC9B,iBAAiB,GAAE,OAAe,GACjC,OAAO,CAAC,QAAQ,CAAC;IAqBpB;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,aAAa,CAAC;IAqC9C;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,QAAQ,CAAC;IAqB1C;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAkDxB;;OAEG;YACW,YAAY;IAU1B;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IA4BrC;;OAEG;IACG,cAAc,CAClB,UAAU,GAAE,YAAY,GAAG,WAAyB,GACnD,OAAO,CAAC,OAAO,CAAC;IASnB;;OAEG;IACH,SAAS,IAAI,qBAAqB;IAIlC;;OAEG;IACH,UAAU,IAAI,IAAI;IAIlB;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAgB9B;;OAEG;IACH,QAAQ,IAAI;QACV,aAAa,EAAE,MAAM,CAAC;QACtB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACrC;IAcD;;OAEG;IACH,QAAQ,IAAI,IAAI;CAgBjB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,CAAC,EAAE,qBAAqB,GAC7B,eAAe,CAEjB;AAED;;GAEG;AACH,wBAAsB,WAAW,CAC/B,UAAU,CAAC,EAAE,mBAAmB,EAChC,aAAa,CAAC,EAAE,OAAO,EACvB,iBAAiB,CAAC,EAAE,OAAO,GAC1B,OAAO,CAAC,QAAQ,CAAC,CAGnB;AAED;;GAEG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,aAAa,CAAC,CAG7D"}
@@ -1,290 +0,0 @@
1
- "use strict";
2
- /**
3
- * AI Client Factory
4
- *
5
- * Factory for creating and managing AI client instances.
6
- * Handles client selection, caching, and lifecycle management.
7
- */
8
- var __importDefault = (this && this.__importDefault) || function (mod) {
9
- return (mod && mod.__esModule) ? mod : { "default": mod };
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.AIClientFactory = void 0;
13
- exports.getAIClientFactory = getAIClientFactory;
14
- exports.getAIClient = getAIClient;
15
- exports.getAgentClient = getAgentClient;
16
- const AIClient_1 = require("../interfaces/AIClient");
17
- const claudeClient_1 = require("./claudeClient");
18
- const claudeAgentClient_1 = require("./claudeAgentClient");
19
- const chalk_1 = __importDefault(require("chalk"));
20
- /**
21
- * Singleton factory for creating and managing AI clients
22
- */
23
- class AIClientFactory {
24
- constructor(config = {}) {
25
- this.clientCache = new Map();
26
- this.config = {
27
- preferredClient: config.preferredClient || 'auto',
28
- fallbackEnabled: config.fallbackEnabled !== false,
29
- autoSelectByComplexity: config.autoSelectByComplexity !== false,
30
- defaultModel: config.defaultModel || 'claude-3-5-sonnet-20241022',
31
- defaultTemperature: config.defaultTemperature || 0.7,
32
- defaultMaxTokens: config.defaultMaxTokens || 4096,
33
- workingDirectory: config.workingDirectory || process.cwd(),
34
- };
35
- this.workingDirectory = this.config.workingDirectory;
36
- }
37
- /**
38
- * Get singleton instance
39
- */
40
- static getInstance(config) {
41
- if (!AIClientFactory.instance) {
42
- AIClientFactory.instance = new AIClientFactory(config);
43
- }
44
- return AIClientFactory.instance;
45
- }
46
- /**
47
- * Reset singleton (useful for testing)
48
- */
49
- static reset() {
50
- AIClientFactory.instance = null;
51
- }
52
- /**
53
- * Update factory configuration
54
- */
55
- configure(config) {
56
- this.config = { ...this.config, ...config };
57
- if (config.workingDirectory) {
58
- this.workingDirectory = config.workingDirectory;
59
- }
60
- }
61
- /**
62
- * Get or create a client based on requirements
63
- */
64
- async getClient(complexity, requiresTools = false, requiresStreaming = false) {
65
- // Determine which client to use
66
- const clientType = this.selectClientType(complexity, requiresTools, requiresStreaming);
67
- // Check cache first
68
- const cacheKey = `${clientType}-${this.workingDirectory}`;
69
- if (this.clientCache.has(cacheKey)) {
70
- return this.clientCache.get(cacheKey);
71
- }
72
- // Create new client
73
- const client = await this.createClient(clientType);
74
- this.clientCache.set(cacheKey, client);
75
- return client;
76
- }
77
- /**
78
- * Get Agent SDK client specifically (for advanced operations)
79
- */
80
- async getAgentClient() {
81
- const cacheKey = `agent-sdk-${this.workingDirectory}`;
82
- if (this.clientCache.has(cacheKey)) {
83
- return this.clientCache.get(cacheKey);
84
- }
85
- const client = new claudeAgentClient_1.ClaudeAgentClient(this.workingDirectory);
86
- // Verify API key is available
87
- if (!client.hasApiKey()) {
88
- throw new AIClient_1.AIClientError('Claude API key not configured. Set MYCONTEXT_CLAUDE_API_KEY or ANTHROPIC_API_KEY', 'NO_API_KEY', false);
89
- }
90
- // Initialize the agent
91
- try {
92
- await client.initialize({
93
- model: this.config.defaultModel,
94
- temperature: this.config.defaultTemperature,
95
- maxTokens: this.config.defaultMaxTokens,
96
- });
97
- }
98
- catch (error) {
99
- throw new AIClient_1.AIClientError(`Failed to initialize Agent SDK: ${error.message}`, 'AGENT_INIT_FAILED', false);
100
- }
101
- this.clientCache.set(cacheKey, client);
102
- return client;
103
- }
104
- /**
105
- * Get Direct API client specifically (for simple operations)
106
- */
107
- async getDirectClient() {
108
- const cacheKey = `direct-api-${this.workingDirectory}`;
109
- if (this.clientCache.has(cacheKey)) {
110
- return this.clientCache.get(cacheKey);
111
- }
112
- const client = new claudeClient_1.ClaudeClient();
113
- if (!client.hasApiKey()) {
114
- throw new AIClient_1.AIClientError('Claude API key not configured. Set MYCONTEXT_CLAUDE_API_KEY or ANTHROPIC_API_KEY', 'NO_API_KEY', false);
115
- }
116
- this.clientCache.set(cacheKey, client);
117
- return client;
118
- }
119
- /**
120
- * Select appropriate client type based on operation requirements
121
- */
122
- selectClientType(complexity, requiresTools = false, requiresStreaming = false) {
123
- // If explicitly configured, use that preference
124
- if (this.config.preferredClient === 'direct-api') {
125
- if (requiresTools) {
126
- console.log(chalk_1.default.yellow('⚠️ Operation requires tools but preferredClient is direct-api. Consider using agent-sdk.'));
127
- }
128
- return 'direct-api';
129
- }
130
- if (this.config.preferredClient === 'agent-sdk') {
131
- return 'agent-sdk';
132
- }
133
- // Auto-select based on requirements
134
- if (this.config.autoSelectByComplexity) {
135
- // Use Agent SDK for:
136
- // - Complex operations
137
- // - Operations requiring tools (file access, validation)
138
- // - Operations requiring streaming
139
- if (complexity === 'complex' ||
140
- requiresTools ||
141
- requiresStreaming) {
142
- return 'agent-sdk';
143
- }
144
- // Use Direct API for:
145
- // - Simple operations
146
- // - Single-shot text generation
147
- if (complexity === 'simple') {
148
- return 'direct-api';
149
- }
150
- // Default to Agent SDK for moderate complexity
151
- return 'agent-sdk';
152
- }
153
- // Default to Agent SDK
154
- return 'agent-sdk';
155
- }
156
- /**
157
- * Create a new client instance
158
- */
159
- async createClient(clientType) {
160
- if (clientType === 'agent-sdk') {
161
- return await this.getAgentClient();
162
- }
163
- else {
164
- return await this.getDirectClient();
165
- }
166
- }
167
- /**
168
- * Check if any AI client is available and configured
169
- */
170
- async isAvailable() {
171
- try {
172
- // Try Agent SDK first
173
- const agentClient = new claudeAgentClient_1.ClaudeAgentClient(this.workingDirectory);
174
- if (agentClient.hasApiKey()) {
175
- const connected = await agentClient.checkConnection();
176
- if (connected) {
177
- console.log(chalk_1.default.green('✅ Claude Agent SDK available'));
178
- return true;
179
- }
180
- }
181
- // Fallback to direct API
182
- const directClient = new claudeClient_1.ClaudeClient();
183
- if (directClient.hasApiKey()) {
184
- const connected = await directClient.checkConnection();
185
- if (connected) {
186
- console.log(chalk_1.default.green('✅ Claude Direct API available'));
187
- return true;
188
- }
189
- }
190
- return false;
191
- }
192
- catch (error) {
193
- return false;
194
- }
195
- }
196
- /**
197
- * Test connection for a specific client type
198
- */
199
- async testConnection(clientType = 'agent-sdk') {
200
- try {
201
- const client = await this.createClient(clientType);
202
- return await client.checkConnection();
203
- }
204
- catch (error) {
205
- return false;
206
- }
207
- }
208
- /**
209
- * Get current configuration
210
- */
211
- getConfig() {
212
- return { ...this.config };
213
- }
214
- /**
215
- * Clear client cache
216
- */
217
- clearCache() {
218
- this.clientCache.clear();
219
- }
220
- /**
221
- * Cleanup all cached clients
222
- */
223
- async cleanup() {
224
- for (const [key, client] of this.clientCache.entries()) {
225
- if (client.cleanup) {
226
- try {
227
- await client.cleanup();
228
- }
229
- catch (error) {
230
- console.error(chalk_1.default.red(`Failed to cleanup client ${key}:`), error);
231
- }
232
- }
233
- }
234
- this.clearCache();
235
- }
236
- /**
237
- * Get statistics about cached clients
238
- */
239
- getStats() {
240
- const stats = {
241
- cachedClients: this.clientCache.size,
242
- clientTypes: {},
243
- };
244
- for (const [key] of this.clientCache.entries()) {
245
- const type = key.split('-')[0];
246
- stats.clientTypes[type] = (stats.clientTypes[type] || 0) + 1;
247
- }
248
- return stats;
249
- }
250
- /**
251
- * Log current factory state (for debugging)
252
- */
253
- logState() {
254
- console.log(chalk_1.default.blue('\n🏭 AI Client Factory State:'));
255
- console.log(chalk_1.default.gray(` Preferred Client: ${this.config.preferredClient}`));
256
- console.log(chalk_1.default.gray(` Fallback Enabled: ${this.config.fallbackEnabled}`));
257
- console.log(chalk_1.default.gray(` Auto-Select: ${this.config.autoSelectByComplexity}`));
258
- console.log(chalk_1.default.gray(` Working Directory: ${this.workingDirectory}`));
259
- const stats = this.getStats();
260
- console.log(chalk_1.default.gray(` Cached Clients: ${stats.cachedClients}`));
261
- if (stats.cachedClients > 0) {
262
- for (const [type, count] of Object.entries(stats.clientTypes)) {
263
- console.log(chalk_1.default.gray(` - ${type}: ${count}`));
264
- }
265
- }
266
- console.log();
267
- }
268
- }
269
- exports.AIClientFactory = AIClientFactory;
270
- /**
271
- * Convenience function to get factory instance
272
- */
273
- function getAIClientFactory(config) {
274
- return AIClientFactory.getInstance(config);
275
- }
276
- /**
277
- * Convenience function to get an AI client
278
- */
279
- async function getAIClient(complexity, requiresTools, requiresStreaming) {
280
- const factory = AIClientFactory.getInstance();
281
- return await factory.getClient(complexity, requiresTools, requiresStreaming);
282
- }
283
- /**
284
- * Convenience function to get Agent SDK client
285
- */
286
- async function getAgentClient() {
287
- const factory = AIClientFactory.getInstance();
288
- return await factory.getAgentClient();
289
- }
290
- //# sourceMappingURL=aiClientFactory.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"aiClientFactory.js","sourceRoot":"","sources":["../../src/utils/aiClientFactory.ts"],"names":[],"mappings":"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"}