@hileeon/mcc 0.1.4 → 0.1.6
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/accounts/store.d.ts +1 -0
- package/dist/accounts/store.d.ts.map +1 -1
- package/dist/accounts/store.js.map +1 -1
- package/dist/dashboard-server.js +5 -4
- package/dist/dashboard-server.js.map +1 -1
- package/dist/mcc.js +8 -2
- package/dist/mcc.js.map +1 -1
- package/dist/proxy/proxy-daemon.d.ts +1 -1
- package/dist/proxy/proxy-daemon.d.ts.map +1 -1
- package/dist/proxy/proxy-daemon.js +2 -1
- package/dist/proxy/proxy-daemon.js.map +1 -1
- package/dist/proxy/proxy-entry.js +6 -1
- package/dist/proxy/proxy-entry.js.map +1 -1
- package/dist/proxy/proxy-server.d.ts +1 -0
- package/dist/proxy/proxy-server.d.ts.map +1 -1
- package/dist/proxy/proxy-server.js +1 -1
- package/dist/proxy/proxy-server.js.map +1 -1
- package/dist/proxy/upstream-url.d.ts +1 -1
- package/dist/proxy/upstream-url.d.ts.map +1 -1
- package/dist/proxy/upstream-url.js +20 -2
- package/dist/proxy/upstream-url.js.map +1 -1
- package/dist/shared/provider-preset-catalog.d.ts +3 -1
- package/dist/shared/provider-preset-catalog.d.ts.map +1 -1
- package/dist/shared/provider-preset-catalog.js +16 -0
- package/dist/shared/provider-preset-catalog.js.map +1 -1
- package/{ui/dist → dist/ui}/index.html +2 -2
- package/package.json +6 -2
- package/.claude/CLAUDE.md +0 -204
- package/.claude/agents/.gitkeep +0 -0
- package/.claude/settings.json +0 -9
- package/.claude/skills/.gitkeep +0 -0
- package/docs/decisions.md +0 -33
- package/docs/lessons.md +0 -8
- package/docs/product.md +0 -37
- package/src/accounts/instance-manager.ts +0 -58
- package/src/accounts/shared-manager.ts +0 -154
- package/src/accounts/store.ts +0 -111
- package/src/core/model-router.ts +0 -82
- package/src/dashboard-server.ts +0 -427
- package/src/mcc.ts +0 -482
- package/src/mcp/external-registry.ts +0 -73
- package/src/mcp/installer.ts +0 -258
- package/src/mcp/mcp-config.ts +0 -168
- package/src/mcp/registry.ts +0 -89
- package/src/proxy/proxy-daemon.ts +0 -184
- package/src/proxy/proxy-entry.ts +0 -63
- package/src/proxy/proxy-paths.ts +0 -97
- package/src/proxy/proxy-server.ts +0 -278
- package/src/proxy/upstream-url.ts +0 -38
- package/src/shared/logger.ts +0 -140
- package/src/shared/provider-preset-catalog.ts +0 -340
- package/tsconfig.json +0 -33
- package/ui/.prettierrc +0 -9
- package/ui/index.html +0 -12
- package/ui/package.json +0 -33
- package/ui/postcss.config.js +0 -6
- package/ui/src/App.tsx +0 -753
- package/ui/src/components/ui/button.tsx +0 -48
- package/ui/src/components/ui/card.tsx +0 -50
- package/ui/src/components/ui/input.tsx +0 -21
- package/ui/src/components/ui/label.tsx +0 -20
- package/ui/src/components/ui/select.tsx +0 -80
- package/ui/src/components/ui/switch.tsx +0 -26
- package/ui/src/components/ui/tabs.tsx +0 -52
- package/ui/src/index.css +0 -33
- package/ui/src/lib/api.ts +0 -185
- package/ui/src/lib/utils.ts +0 -6
- package/ui/src/main.tsx +0 -10
- package/ui/src/vite-env.d.ts +0 -1
- package/ui/tailwind.config.js +0 -49
- package/ui/tsconfig.json +0 -25
- package/ui/vite.config.ts +0 -20
- /package/{ui/dist → dist/ui}/assets/index-B16lhKZ6.js +0 -0
- /package/{ui/dist → dist/ui}/assets/index-jEfiB6-h.css +0 -0
|
@@ -1,340 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Shared provider preset catalog for CLI + Dashboard.
|
|
3
|
-
*
|
|
4
|
-
* Keep this file runtime-agnostic (no Node/browser APIs) so both
|
|
5
|
-
* backend and UI can import the same source of truth.
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
export type PresetCategory = 'recommended' | 'alternative';
|
|
9
|
-
export type ProviderPresetTarget = 'claude' | 'droid';
|
|
10
|
-
|
|
11
|
-
export const PROVIDER_PRESET_IDS = [
|
|
12
|
-
'openrouter',
|
|
13
|
-
'alibaba-coding-plan',
|
|
14
|
-
'huggingface',
|
|
15
|
-
'ollama',
|
|
16
|
-
'llamacpp',
|
|
17
|
-
'anthropic',
|
|
18
|
-
'glm',
|
|
19
|
-
'km',
|
|
20
|
-
'foundry',
|
|
21
|
-
'mm',
|
|
22
|
-
'deepseek',
|
|
23
|
-
'qwen',
|
|
24
|
-
'ollama-cloud',
|
|
25
|
-
'novita',
|
|
26
|
-
] as const;
|
|
27
|
-
|
|
28
|
-
export type ProviderPresetId = (typeof PROVIDER_PRESET_IDS)[number];
|
|
29
|
-
|
|
30
|
-
export interface ProviderPresetDefinition {
|
|
31
|
-
id: ProviderPresetId;
|
|
32
|
-
name: string;
|
|
33
|
-
description: string;
|
|
34
|
-
baseUrl: string;
|
|
35
|
-
defaultProfileName: string;
|
|
36
|
-
defaultModel: string;
|
|
37
|
-
apiKeyPlaceholder: string;
|
|
38
|
-
apiKeyHint: string;
|
|
39
|
-
category: PresetCategory;
|
|
40
|
-
requiresApiKey: boolean;
|
|
41
|
-
defaultTarget?: ProviderPresetTarget;
|
|
42
|
-
/** Additional env vars for thinking mode, etc. */
|
|
43
|
-
extraEnv?: Record<string, string>;
|
|
44
|
-
/** Enable always thinking mode. */
|
|
45
|
-
alwaysThinkingEnabled?: boolean;
|
|
46
|
-
/** UI metadata */
|
|
47
|
-
badge?: string;
|
|
48
|
-
featured?: boolean;
|
|
49
|
-
icon?: string;
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
export const OPENROUTER_BASE_URL = 'https://openrouter.ai/api/v1';
|
|
53
|
-
|
|
54
|
-
/**
|
|
55
|
-
* Legacy aliases mapped to canonical preset IDs.
|
|
56
|
-
* Keep this minimal and explicit to avoid hidden implicit behavior.
|
|
57
|
-
*/
|
|
58
|
-
export const PROVIDER_PRESET_ALIASES: Readonly<Record<string, ProviderPresetId>> = Object.freeze({
|
|
59
|
-
glmt: 'glm',
|
|
60
|
-
kimi: 'km',
|
|
61
|
-
alibaba: 'alibaba-coding-plan',
|
|
62
|
-
acp: 'alibaba-coding-plan',
|
|
63
|
-
hf: 'huggingface',
|
|
64
|
-
});
|
|
65
|
-
|
|
66
|
-
const RAW_PROVIDER_PRESET_DEFINITIONS: readonly ProviderPresetDefinition[] = [
|
|
67
|
-
{
|
|
68
|
-
id: 'openrouter',
|
|
69
|
-
name: 'OpenRouter',
|
|
70
|
-
description: '349+ models from OpenAI, Anthropic, Google, Meta',
|
|
71
|
-
baseUrl: OPENROUTER_BASE_URL,
|
|
72
|
-
defaultProfileName: 'openrouter',
|
|
73
|
-
defaultModel: 'anthropic/claude-opus-4.5',
|
|
74
|
-
apiKeyPlaceholder: 'sk-or-...',
|
|
75
|
-
apiKeyHint: 'Get your API key at openrouter.ai/keys',
|
|
76
|
-
category: 'recommended',
|
|
77
|
-
requiresApiKey: true,
|
|
78
|
-
badge: '349+ models',
|
|
79
|
-
featured: true,
|
|
80
|
-
icon: '/icons/openrouter.svg',
|
|
81
|
-
},
|
|
82
|
-
{
|
|
83
|
-
id: 'alibaba-coding-plan',
|
|
84
|
-
name: 'Alibaba Coding Plan',
|
|
85
|
-
description: 'Alibaba Cloud Coding Plan via Anthropic-compatible endpoint',
|
|
86
|
-
baseUrl: 'https://coding-intl.dashscope.aliyuncs.com/apps/anthropic',
|
|
87
|
-
defaultProfileName: 'albb',
|
|
88
|
-
defaultModel: 'qwen3-coder-plus',
|
|
89
|
-
apiKeyPlaceholder: 'sk-sp-...',
|
|
90
|
-
apiKeyHint: 'Get your Coding Plan key from Alibaba Cloud Model Studio',
|
|
91
|
-
category: 'recommended',
|
|
92
|
-
requiresApiKey: true,
|
|
93
|
-
badge: 'Coding Plan',
|
|
94
|
-
featured: true,
|
|
95
|
-
icon: '/assets/providers/alibabacloud-color.svg',
|
|
96
|
-
},
|
|
97
|
-
{
|
|
98
|
-
id: 'ollama',
|
|
99
|
-
name: 'Ollama (Local)',
|
|
100
|
-
description: 'Local open-source models via Ollama (32K+ context)',
|
|
101
|
-
baseUrl: 'http://localhost:11434',
|
|
102
|
-
defaultProfileName: 'ollama',
|
|
103
|
-
defaultModel: 'qwen3-coder',
|
|
104
|
-
apiKeyPlaceholder: 'ollama',
|
|
105
|
-
apiKeyHint: 'Install Ollama from ollama.com - no API key needed for local',
|
|
106
|
-
category: 'recommended',
|
|
107
|
-
requiresApiKey: false,
|
|
108
|
-
badge: 'Local',
|
|
109
|
-
featured: true,
|
|
110
|
-
icon: '/icons/ollama.svg',
|
|
111
|
-
},
|
|
112
|
-
{
|
|
113
|
-
id: 'llamacpp',
|
|
114
|
-
name: 'llama.cpp (Local)',
|
|
115
|
-
description: 'Local inference via llama.cpp (LLaMA models)',
|
|
116
|
-
baseUrl: 'http://127.0.0.1:8080',
|
|
117
|
-
defaultProfileName: 'llamacpp',
|
|
118
|
-
defaultModel: 'llama3-8b',
|
|
119
|
-
apiKeyPlaceholder: 'llamacpp',
|
|
120
|
-
apiKeyHint: 'Run llama.cpp server: ./server --host 0.0.0.0 --port 8080 -m model.gguf',
|
|
121
|
-
category: 'recommended',
|
|
122
|
-
requiresApiKey: false,
|
|
123
|
-
badge: 'Local',
|
|
124
|
-
featured: true,
|
|
125
|
-
icon: '/assets/providers/llama-cpp.svg',
|
|
126
|
-
},
|
|
127
|
-
{
|
|
128
|
-
id: 'anthropic',
|
|
129
|
-
name: 'Anthropic (Direct API)',
|
|
130
|
-
description: 'Use your own Anthropic API key (sk-ant-...)',
|
|
131
|
-
baseUrl: '',
|
|
132
|
-
defaultProfileName: 'anthropic',
|
|
133
|
-
defaultModel: 'claude-sonnet-4-5-20250929',
|
|
134
|
-
apiKeyPlaceholder: 'sk-ant-api03-...',
|
|
135
|
-
apiKeyHint: 'Get key at console.anthropic.com/settings/keys',
|
|
136
|
-
category: 'recommended',
|
|
137
|
-
requiresApiKey: true,
|
|
138
|
-
badge: 'Direct',
|
|
139
|
-
featured: true,
|
|
140
|
-
icon: '/assets/providers/claude.svg',
|
|
141
|
-
},
|
|
142
|
-
{
|
|
143
|
-
id: 'huggingface',
|
|
144
|
-
name: 'Hugging Face',
|
|
145
|
-
description: 'Inference Providers router via OpenAI-compatible chat completions',
|
|
146
|
-
baseUrl: 'https://router.huggingface.co/v1',
|
|
147
|
-
defaultProfileName: 'hf',
|
|
148
|
-
defaultModel: 'openai/gpt-oss-120b:fastest',
|
|
149
|
-
apiKeyPlaceholder: 'hf_...',
|
|
150
|
-
apiKeyHint: 'Create a User Access Token at hf.co/settings/tokens',
|
|
151
|
-
category: 'alternative',
|
|
152
|
-
requiresApiKey: true,
|
|
153
|
-
defaultTarget: 'droid',
|
|
154
|
-
badge: 'Router',
|
|
155
|
-
},
|
|
156
|
-
{
|
|
157
|
-
id: 'glm',
|
|
158
|
-
name: 'GLM',
|
|
159
|
-
description: 'Direct Z.AI Anthropic-compatible API profile',
|
|
160
|
-
baseUrl: 'https://api.z.ai/api/anthropic',
|
|
161
|
-
defaultProfileName: 'glm',
|
|
162
|
-
defaultModel: 'glm-5',
|
|
163
|
-
apiKeyPlaceholder: 'ghp_...',
|
|
164
|
-
apiKeyHint: 'Get your API key from Z.AI',
|
|
165
|
-
category: 'alternative',
|
|
166
|
-
requiresApiKey: true,
|
|
167
|
-
badge: 'Z.AI',
|
|
168
|
-
icon: '/icons/zai.svg',
|
|
169
|
-
},
|
|
170
|
-
{
|
|
171
|
-
id: 'km',
|
|
172
|
-
name: 'Kimi',
|
|
173
|
-
description: 'Moonshot AI - Fast reasoning model',
|
|
174
|
-
baseUrl: 'https://api.kimi.com/coding/',
|
|
175
|
-
defaultProfileName: 'km',
|
|
176
|
-
defaultModel: 'kimi-k2-thinking-turbo',
|
|
177
|
-
apiKeyPlaceholder: 'sk-...',
|
|
178
|
-
apiKeyHint: 'Get your API key from Moonshot AI',
|
|
179
|
-
category: 'alternative',
|
|
180
|
-
requiresApiKey: true,
|
|
181
|
-
alwaysThinkingEnabled: true,
|
|
182
|
-
badge: 'Reasoning',
|
|
183
|
-
icon: '/icons/kimi.svg',
|
|
184
|
-
},
|
|
185
|
-
{
|
|
186
|
-
id: 'foundry',
|
|
187
|
-
name: 'Azure Foundry',
|
|
188
|
-
description: 'Claude via Microsoft Azure AI Foundry',
|
|
189
|
-
baseUrl: 'https://<your-resource>.services.ai.azure.com/api/anthropic',
|
|
190
|
-
defaultProfileName: 'foundry',
|
|
191
|
-
defaultModel: 'claude-sonnet-4-5',
|
|
192
|
-
apiKeyPlaceholder: 'YOUR_AZURE_API_KEY',
|
|
193
|
-
apiKeyHint: 'Create resource at ai.azure.com, get API key from Keys tab',
|
|
194
|
-
category: 'alternative',
|
|
195
|
-
requiresApiKey: true,
|
|
196
|
-
badge: 'Azure',
|
|
197
|
-
icon: '/icons/azure.svg',
|
|
198
|
-
},
|
|
199
|
-
{
|
|
200
|
-
id: 'mm',
|
|
201
|
-
name: 'Minimax',
|
|
202
|
-
description: 'M2.1/M2.1-lightning/M2 - multilang coding (1M context)',
|
|
203
|
-
baseUrl: 'https://api.minimax.io/anthropic',
|
|
204
|
-
defaultProfileName: 'mm',
|
|
205
|
-
defaultModel: 'MiniMax-M2.1',
|
|
206
|
-
apiKeyPlaceholder: 'YOUR_MINIMAX_API_KEY_HERE',
|
|
207
|
-
apiKeyHint: 'Get your API key at platform.minimax.io',
|
|
208
|
-
category: 'alternative',
|
|
209
|
-
requiresApiKey: true,
|
|
210
|
-
badge: '1M context',
|
|
211
|
-
icon: '/icons/minimax.svg',
|
|
212
|
-
},
|
|
213
|
-
{
|
|
214
|
-
id: 'deepseek',
|
|
215
|
-
name: 'DeepSeek',
|
|
216
|
-
description: 'V3.2 and R1 reasoning model (128K context)',
|
|
217
|
-
baseUrl: 'https://api.deepseek.com/anthropic',
|
|
218
|
-
defaultProfileName: 'deepseek',
|
|
219
|
-
defaultModel: 'deepseek-chat',
|
|
220
|
-
apiKeyPlaceholder: 'sk-...',
|
|
221
|
-
apiKeyHint: 'Get your API key at platform.deepseek.com',
|
|
222
|
-
category: 'alternative',
|
|
223
|
-
requiresApiKey: true,
|
|
224
|
-
badge: 'Reasoning',
|
|
225
|
-
icon: '/icons/deepseek.svg',
|
|
226
|
-
},
|
|
227
|
-
{
|
|
228
|
-
id: 'qwen',
|
|
229
|
-
name: 'Qwen',
|
|
230
|
-
description: 'Alibaba Cloud - Qwen3 models (256K-1M context, thinking support)',
|
|
231
|
-
baseUrl: 'https://dashscope-intl.aliyuncs.com/apps/anthropic',
|
|
232
|
-
defaultProfileName: 'qwen-api',
|
|
233
|
-
defaultModel: 'qwen3-coder-plus',
|
|
234
|
-
apiKeyPlaceholder: 'sk-...',
|
|
235
|
-
apiKeyHint: 'Get your API key from Alibaba Cloud Model Studio',
|
|
236
|
-
category: 'alternative',
|
|
237
|
-
requiresApiKey: true,
|
|
238
|
-
badge: 'Alibaba',
|
|
239
|
-
icon: '/assets/providers/qwen-color.svg',
|
|
240
|
-
},
|
|
241
|
-
{
|
|
242
|
-
id: 'ollama-cloud',
|
|
243
|
-
name: 'Ollama Cloud',
|
|
244
|
-
description: 'Ollama cloud models via direct API (glm-5:cloud, minimax-m2.1:cloud)',
|
|
245
|
-
baseUrl: 'https://ollama.com',
|
|
246
|
-
defaultProfileName: 'ollama-cloud',
|
|
247
|
-
defaultModel: 'glm-5:cloud',
|
|
248
|
-
apiKeyPlaceholder: 'YOUR_OLLAMA_CLOUD_API_KEY',
|
|
249
|
-
apiKeyHint: 'Get your API key at ollama.com',
|
|
250
|
-
category: 'alternative',
|
|
251
|
-
requiresApiKey: true,
|
|
252
|
-
badge: 'Cloud',
|
|
253
|
-
icon: '/icons/ollama.svg',
|
|
254
|
-
},
|
|
255
|
-
{
|
|
256
|
-
id: 'novita',
|
|
257
|
-
name: 'Novita AI',
|
|
258
|
-
description: 'Anthropic-compatible API for Claude Code and CCS profiles',
|
|
259
|
-
baseUrl: 'https://api.novita.ai/anthropic',
|
|
260
|
-
defaultProfileName: 'novita',
|
|
261
|
-
defaultModel: 'deepseek/deepseek-v3.2',
|
|
262
|
-
apiKeyPlaceholder: 'YOUR_NOVITA_API_KEY',
|
|
263
|
-
apiKeyHint: 'Get your API key at novita.ai',
|
|
264
|
-
category: 'alternative',
|
|
265
|
-
requiresApiKey: true,
|
|
266
|
-
badge: 'Anthropic-compatible',
|
|
267
|
-
icon: '/icons/novita.svg',
|
|
268
|
-
},
|
|
269
|
-
];
|
|
270
|
-
|
|
271
|
-
function clonePresetDefinition(preset: ProviderPresetDefinition): ProviderPresetDefinition {
|
|
272
|
-
return {
|
|
273
|
-
...preset,
|
|
274
|
-
extraEnv: preset.extraEnv ? { ...preset.extraEnv } : undefined,
|
|
275
|
-
};
|
|
276
|
-
}
|
|
277
|
-
|
|
278
|
-
function freezePresetDefinition(preset: ProviderPresetDefinition): ProviderPresetDefinition {
|
|
279
|
-
const cloned = clonePresetDefinition(preset);
|
|
280
|
-
if (cloned.extraEnv) {
|
|
281
|
-
Object.freeze(cloned.extraEnv);
|
|
282
|
-
}
|
|
283
|
-
return Object.freeze(cloned);
|
|
284
|
-
}
|
|
285
|
-
|
|
286
|
-
function assertProviderPresetCatalogIntegrity(
|
|
287
|
-
definitions: readonly ProviderPresetDefinition[],
|
|
288
|
-
aliases: Readonly<Record<string, ProviderPresetId>>
|
|
289
|
-
): void {
|
|
290
|
-
const presetIdSet = new Set<string>();
|
|
291
|
-
for (const definition of definitions) {
|
|
292
|
-
const normalizedId = definition.id.trim().toLowerCase();
|
|
293
|
-
if (definition.id !== normalizedId) {
|
|
294
|
-
throw new Error(`Preset ID must be normalized: "${definition.id}"`);
|
|
295
|
-
}
|
|
296
|
-
if (presetIdSet.has(definition.id)) {
|
|
297
|
-
throw new Error(`Duplicate preset ID detected: "${definition.id}"`);
|
|
298
|
-
}
|
|
299
|
-
presetIdSet.add(definition.id);
|
|
300
|
-
}
|
|
301
|
-
|
|
302
|
-
const normalizedAliasSet = new Set<string>();
|
|
303
|
-
for (const [alias, target] of Object.entries(aliases)) {
|
|
304
|
-
const normalizedAlias = alias.trim().toLowerCase();
|
|
305
|
-
if (!normalizedAlias) {
|
|
306
|
-
throw new Error('Preset alias keys cannot be empty');
|
|
307
|
-
}
|
|
308
|
-
if (alias !== normalizedAlias) {
|
|
309
|
-
throw new Error(`Preset alias must be normalized: "${alias}"`);
|
|
310
|
-
}
|
|
311
|
-
if (normalizedAliasSet.has(normalizedAlias)) {
|
|
312
|
-
throw new Error(`Duplicate normalized preset alias detected: "${alias}"`);
|
|
313
|
-
}
|
|
314
|
-
normalizedAliasSet.add(normalizedAlias);
|
|
315
|
-
|
|
316
|
-
if (!presetIdSet.has(target)) {
|
|
317
|
-
throw new Error(`Preset alias "${alias}" points to unknown target "${target}"`);
|
|
318
|
-
}
|
|
319
|
-
if (presetIdSet.has(normalizedAlias)) {
|
|
320
|
-
throw new Error(
|
|
321
|
-
`Preset alias "${alias}" collides with canonical preset ID "${normalizedAlias}"`
|
|
322
|
-
);
|
|
323
|
-
}
|
|
324
|
-
}
|
|
325
|
-
}
|
|
326
|
-
|
|
327
|
-
assertProviderPresetCatalogIntegrity(RAW_PROVIDER_PRESET_DEFINITIONS, PROVIDER_PRESET_ALIASES);
|
|
328
|
-
|
|
329
|
-
export const PROVIDER_PRESET_DEFINITIONS: readonly ProviderPresetDefinition[] = Object.freeze(
|
|
330
|
-
RAW_PROVIDER_PRESET_DEFINITIONS.map(freezePresetDefinition)
|
|
331
|
-
);
|
|
332
|
-
|
|
333
|
-
export function createProviderPresetDefinitions(): ProviderPresetDefinition[] {
|
|
334
|
-
return PROVIDER_PRESET_DEFINITIONS.map(clonePresetDefinition);
|
|
335
|
-
}
|
|
336
|
-
|
|
337
|
-
export function normalizeProviderPresetId(id: string): string {
|
|
338
|
-
const normalized = id.trim().toLowerCase();
|
|
339
|
-
return PROVIDER_PRESET_ALIASES[normalized] || normalized;
|
|
340
|
-
}
|
package/tsconfig.json
DELETED
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"compilerOptions": {
|
|
3
|
-
"outDir": "./dist",
|
|
4
|
-
"rootDir": "./src",
|
|
5
|
-
"sourceMap": true,
|
|
6
|
-
"module": "commonjs",
|
|
7
|
-
"target": "ES2020",
|
|
8
|
-
"lib": ["ES2020"],
|
|
9
|
-
"moduleResolution": "node",
|
|
10
|
-
"esModuleInterop": true,
|
|
11
|
-
"allowSyntheticDefaultImports": true,
|
|
12
|
-
"resolveJsonModule": true,
|
|
13
|
-
"skipLibCheck": true,
|
|
14
|
-
"strict": true,
|
|
15
|
-
"noImplicitAny": true,
|
|
16
|
-
"strictNullChecks": true,
|
|
17
|
-
"strictFunctionTypes": true,
|
|
18
|
-
"noImplicitThis": true,
|
|
19
|
-
"alwaysStrict": true,
|
|
20
|
-
"noUnusedLocals": true,
|
|
21
|
-
"noUnusedParameters": true,
|
|
22
|
-
"noImplicitReturns": true,
|
|
23
|
-
"noFallthroughCasesInSwitch": true,
|
|
24
|
-
"declaration": true,
|
|
25
|
-
"declarationMap": true,
|
|
26
|
-
"removeComments": false,
|
|
27
|
-
"forceConsistentCasingInFileNames": true,
|
|
28
|
-
"incremental": true,
|
|
29
|
-
"types": ["node"]
|
|
30
|
-
},
|
|
31
|
-
"include": ["src/**/*"],
|
|
32
|
-
"exclude": ["node_modules", "dist", "tests"]
|
|
33
|
-
}
|
package/ui/.prettierrc
DELETED
package/ui/index.html
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html lang="en">
|
|
3
|
-
<head>
|
|
4
|
-
<meta charset="UTF-8" />
|
|
5
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
|
-
<title>MCC Dashboard</title>
|
|
7
|
-
</head>
|
|
8
|
-
<body>
|
|
9
|
-
<div id="root"></div>
|
|
10
|
-
<script type="module" src="/src/main.tsx"></script>
|
|
11
|
-
</body>
|
|
12
|
-
</html>
|
package/ui/package.json
DELETED
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@hileeon/mcc-ui",
|
|
3
|
-
"private": true,
|
|
4
|
-
"version": "0.1.0",
|
|
5
|
-
"type": "module",
|
|
6
|
-
"scripts": {
|
|
7
|
-
"dev": "vite",
|
|
8
|
-
"build": "tsc -b && vite build",
|
|
9
|
-
"preview": "vite preview"
|
|
10
|
-
},
|
|
11
|
-
"dependencies": {
|
|
12
|
-
"react": "^18.3.1",
|
|
13
|
-
"react-dom": "^18.3.1",
|
|
14
|
-
"clsx": "^2.1.1",
|
|
15
|
-
"tailwind-merge": "^2.6.0",
|
|
16
|
-
"class-variance-authority": "^0.7.1",
|
|
17
|
-
"@radix-ui/react-slot": "^1.1.1",
|
|
18
|
-
"@radix-ui/react-tabs": "^1.1.2",
|
|
19
|
-
"@radix-ui/react-label": "^2.1.1",
|
|
20
|
-
"@radix-ui/react-switch": "^1.1.2",
|
|
21
|
-
"@radix-ui/react-select": "^2.1.4"
|
|
22
|
-
},
|
|
23
|
-
"devDependencies": {
|
|
24
|
-
"@types/react": "^18.3.12",
|
|
25
|
-
"@types/react-dom": "^18.3.1",
|
|
26
|
-
"@vitejs/plugin-react": "^4.3.4",
|
|
27
|
-
"autoprefixer": "^10.4.20",
|
|
28
|
-
"postcss": "^8.4.49",
|
|
29
|
-
"tailwindcss": "^3.4.16",
|
|
30
|
-
"typescript": "^5.6.3",
|
|
31
|
-
"vite": "^6.0.3"
|
|
32
|
-
}
|
|
33
|
-
}
|