@framingui/mcp-server 0.6.19 → 0.6.21

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 (44) hide show
  1. package/README.md +79 -990
  2. package/dist/cli/agent-md-templates.d.ts +0 -12
  3. package/dist/cli/agent-md-templates.d.ts.map +1 -1
  4. package/dist/cli/agent-md-templates.js +73 -255
  5. package/dist/cli/agent-md-templates.js.map +1 -1
  6. package/dist/cli/guide-template.d.ts +0 -7
  7. package/dist/cli/guide-template.d.ts.map +1 -1
  8. package/dist/cli/guide-template.js +58 -157
  9. package/dist/cli/guide-template.js.map +1 -1
  10. package/dist/cli/index.d.ts +1 -1
  11. package/dist/cli/index.js +3 -47
  12. package/dist/cli/index.js.map +1 -1
  13. package/dist/cli/init.d.ts +18 -2
  14. package/dist/cli/init.d.ts.map +1 -1
  15. package/dist/cli/init.js +278 -108
  16. package/dist/cli/init.js.map +1 -1
  17. package/dist/index.js +39 -35
  18. package/dist/index.js.map +1 -1
  19. package/dist/prompts/getting-started.d.ts.map +1 -1
  20. package/dist/prompts/getting-started.js +6 -29
  21. package/dist/prompts/getting-started.js.map +1 -1
  22. package/dist/prompts/screen-workflow.d.ts +1 -4
  23. package/dist/prompts/screen-workflow.d.ts.map +1 -1
  24. package/dist/prompts/screen-workflow.js +84 -234
  25. package/dist/prompts/screen-workflow.js.map +1 -1
  26. package/dist/schemas/mcp-schemas.d.ts +212 -449
  27. package/dist/schemas/mcp-schemas.d.ts.map +1 -1
  28. package/dist/schemas/mcp-schemas.js +15 -69
  29. package/dist/schemas/mcp-schemas.js.map +1 -1
  30. package/dist/tools/get-screen-generation-context.d.ts.map +1 -1
  31. package/dist/tools/get-screen-generation-context.js +74 -117
  32. package/dist/tools/get-screen-generation-context.js.map +1 -1
  33. package/dist/tools/preview-component.js +1 -1
  34. package/dist/tools/preview-component.js.map +1 -1
  35. package/dist/tools/preview-screen-template.d.ts.map +1 -1
  36. package/dist/tools/preview-screen-template.js +0 -1
  37. package/dist/tools/preview-screen-template.js.map +1 -1
  38. package/dist/tools/validate-environment.d.ts.map +1 -1
  39. package/dist/tools/validate-environment.js +1 -84
  40. package/dist/tools/validate-environment.js.map +1 -1
  41. package/dist/tools/validate-screen-definition.d.ts.map +1 -1
  42. package/dist/tools/validate-screen-definition.js +0 -6
  43. package/dist/tools/validate-screen-definition.js.map +1 -1
  44. package/package.json +4 -4
package/dist/cli/init.js CHANGED
@@ -1,6 +1,6 @@
1
1
  /**
2
- * framingui-mcp init 명령어
3
- * 프로젝트에 FramingUI 디자인 시스템을 줄로 설정
2
+ * framingui-mcp init command
3
+ * Bootstraps the FramingUI screen-generation runtime into a project.
4
4
  */
5
5
  import fs from 'node:fs';
6
6
  import path from 'node:path';
@@ -9,12 +9,47 @@ import readline from 'node:readline';
9
9
  import { generateGuide } from './guide-template.js';
10
10
  import { generateClaudeMdSection, generateAgentsMdSection } from './agent-md-templates.js';
11
11
  import { upsertFraminguiServerConfig } from './mcp-config.js';
12
- import { buildAddCommand, detectPackageManager } from './package-manager.js';
13
- // ─── 상수 ──────────────────────────────────────────────
12
+ import { readTailwindConfig } from '../utils/tailwind-config-reader.js';
14
13
  const FRAMINGUI_UI_CONTENT_PATH = './node_modules/@framingui/ui/dist/**/*.{js,mjs}';
15
14
  const FRAMINGUI_STYLE_IMPORT = "@import '@framingui/ui/styles';";
16
- const PACKAGES_TO_INSTALL = ['@framingui/ui', 'tailwindcss-animate'];
17
- // ─── 유틸리티 ──────────────────────────────────────────
15
+ const EXCLUDED_DIRS = new Set(['node_modules', '.git', '.next', 'dist', 'build', 'coverage']);
16
+ const MAX_SEARCH_DEPTH = 5;
17
+ export const SCREEN_GENERATION_PACKAGES = [
18
+ '@framingui/ui',
19
+ '@framingui/core',
20
+ '@framingui/tokens',
21
+ '@hookform/resolvers',
22
+ '@radix-ui/react-alert-dialog',
23
+ '@radix-ui/react-avatar',
24
+ '@radix-ui/react-checkbox',
25
+ '@radix-ui/react-dialog',
26
+ '@radix-ui/react-dropdown-menu',
27
+ '@radix-ui/react-label',
28
+ '@radix-ui/react-navigation-menu',
29
+ '@radix-ui/react-popover',
30
+ '@radix-ui/react-progress',
31
+ '@radix-ui/react-radio-group',
32
+ '@radix-ui/react-scroll-area',
33
+ '@radix-ui/react-select',
34
+ '@radix-ui/react-separator',
35
+ '@radix-ui/react-slider',
36
+ '@radix-ui/react-slot',
37
+ '@radix-ui/react-switch',
38
+ '@radix-ui/react-tabs',
39
+ '@radix-ui/react-toast',
40
+ '@radix-ui/react-tooltip',
41
+ 'class-variance-authority',
42
+ 'clsx',
43
+ 'cmdk',
44
+ 'date-fns',
45
+ 'framer-motion',
46
+ 'lucide-react',
47
+ 'react-day-picker',
48
+ 'react-hook-form',
49
+ 'tailwind-merge',
50
+ 'tailwindcss-animate',
51
+ 'zod',
52
+ ];
18
53
  function log(step, total, message) {
19
54
  console.log(`\n[${step}/${total}] ${message}`);
20
55
  }
@@ -25,11 +60,30 @@ function fileExists(filePath) {
25
60
  return fs.existsSync(filePath);
26
61
  }
27
62
  function findFile(dir, candidates) {
28
- return candidates.find(c => fileExists(path.join(dir, c)));
63
+ return candidates.find(candidate => fileExists(path.join(dir, candidate)));
64
+ }
65
+ function walkFiles(dir, depth = 0) {
66
+ if (depth > MAX_SEARCH_DEPTH || !fileExists(dir)) {
67
+ return [];
68
+ }
69
+ const entries = fs.readdirSync(dir, { withFileTypes: true });
70
+ const files = [];
71
+ for (const entry of entries) {
72
+ if (EXCLUDED_DIRS.has(entry.name)) {
73
+ continue;
74
+ }
75
+ const fullPath = path.join(dir, entry.name);
76
+ if (entry.isDirectory()) {
77
+ files.push(...walkFiles(fullPath, depth + 1));
78
+ continue;
79
+ }
80
+ files.push(fullPath);
81
+ }
82
+ return files;
83
+ }
84
+ function relativeToCwd(cwd, filePath) {
85
+ return path.relative(cwd, filePath).replaceAll(path.sep, '/');
29
86
  }
30
- /**
31
- * stdin에서 사용자 선택을 받음
32
- */
33
87
  async function askUser(question, options) {
34
88
  const rl = readline.createInterface({
35
89
  input: process.stdin,
@@ -45,7 +99,6 @@ async function askUser(question, options) {
45
99
  });
46
100
  });
47
101
  }
48
- // ─── Step 1: 프로젝트 감지 ─────────────────────────────
49
102
  function detectFramework(cwd) {
50
103
  const nextConfigs = ['next.config.ts', 'next.config.js', 'next.config.mjs'];
51
104
  const viteConfigs = ['vite.config.ts', 'vite.config.js', 'vite.config.mjs'];
@@ -57,13 +110,29 @@ function detectFramework(cwd) {
57
110
  }
58
111
  return null;
59
112
  }
60
- // ─── Step 2: 패키지 매니저 감지 및 설치 ─────────────────
113
+ function detectPackageManager(cwd) {
114
+ if (fileExists(path.join(cwd, 'pnpm-lock.yaml'))) {
115
+ return 'pnpm';
116
+ }
117
+ if (fileExists(path.join(cwd, 'yarn.lock'))) {
118
+ return 'yarn';
119
+ }
120
+ if (fileExists(path.join(cwd, 'bun.lock')) || fileExists(path.join(cwd, 'bun.lockb'))) {
121
+ return 'bun';
122
+ }
123
+ return 'npm';
124
+ }
61
125
  function installPackages(cwd, pm) {
62
- const cmd = buildAddCommand(pm, PACKAGES_TO_INSTALL);
63
- logDetail(cmd);
64
- execSync(cmd, { cwd, stdio: 'inherit' });
126
+ const command = `${pm} add ${SCREEN_GENERATION_PACKAGES.join(' ')}`;
127
+ logDetail(command);
128
+ try {
129
+ execSync(command, { cwd, stdio: 'inherit' });
130
+ return { ok: true, command };
131
+ }
132
+ catch {
133
+ return { ok: false, command };
134
+ }
65
135
  }
66
- // ─── Step 3: Tailwind CSS 설정 ──────────────────────────
67
136
  const TAILWIND_CONFIG_CANDIDATES = [
68
137
  'tailwind.config.ts',
69
138
  'tailwind.config.js',
@@ -73,30 +142,24 @@ const TAILWIND_CONFIG_CANDIDATES = [
73
142
  function setupTailwind(cwd) {
74
143
  const configName = findFile(cwd, TAILWIND_CONFIG_CANDIDATES);
75
144
  if (configName) {
76
- // 기존 파일 수정
77
145
  const configPath = path.join(cwd, configName);
78
146
  let content = fs.readFileSync(configPath, 'utf-8');
79
- // content 배열에 @framingui/ui 경로 추가
80
147
  if (!content.includes('@framingui/ui')) {
81
148
  content = content.replace(/(content\s*:\s*\[)/, `$1\n '${FRAMINGUI_UI_CONTENT_PATH}',`);
82
149
  }
83
- // plugins에 tailwindcss-animate 추가
84
150
  if (!content.includes('tailwindcss-animate')) {
85
- // plugins 배열이 있는 경우
86
151
  if (/plugins\s*:\s*\[/.test(content)) {
87
152
  content = content.replace(/(plugins\s*:\s*\[)/, `$1\n require('tailwindcss-animate'),`);
88
153
  }
89
154
  else {
90
- // plugins가 없으면 content 닫는 ] 뒤에 추가
91
155
  content = content.replace(/(content\s*:\s*\[[\s\S]*?\]\s*,?)/, `$1\n plugins: [require('tailwindcss-animate')],`);
92
156
  }
93
157
  }
94
158
  fs.writeFileSync(configPath, content, 'utf-8');
95
- logDetail(`${configName} 업데이트 완료`);
159
+ logDetail(`${configName} updated`);
160
+ return configPath;
96
161
  }
97
- else {
98
- // 새 파일 생성
99
- const template = `import type { Config } from 'tailwindcss';
162
+ const template = `import type { Config } from 'tailwindcss';
100
163
 
101
164
  const config: Config = {
102
165
  content: [
@@ -110,32 +173,63 @@ const config: Config = {
110
173
 
111
174
  export default config;
112
175
  `;
113
- fs.writeFileSync(path.join(cwd, 'tailwind.config.ts'), template, 'utf-8');
114
- logDetail('tailwind.config.ts 생성 완료');
176
+ const newPath = path.join(cwd, 'tailwind.config.ts');
177
+ fs.writeFileSync(newPath, template, 'utf-8');
178
+ logDetail('tailwind.config.ts created');
179
+ return newPath;
180
+ }
181
+ function stylesheetPriority(relativePath, framework) {
182
+ const normalized = relativePath.replaceAll('\\', '/');
183
+ const priorities = framework === 'nextjs'
184
+ ? [
185
+ 'app/globals.css',
186
+ 'src/app/globals.css',
187
+ 'styles/globals.css',
188
+ 'app/globals.scss',
189
+ 'src/app/globals.scss',
190
+ ]
191
+ : ['src/index.css', 'src/main.css', 'index.css', 'src/index.scss', 'src/main.scss'];
192
+ const exactIndex = priorities.findIndex(candidate => normalized.endsWith(candidate));
193
+ if (exactIndex >= 0) {
194
+ return exactIndex;
195
+ }
196
+ if (normalized.endsWith('globals.css') || normalized.endsWith('globals.scss')) {
197
+ return 20;
198
+ }
199
+ if (normalized.endsWith('index.css') || normalized.endsWith('index.scss')) {
200
+ return 30;
201
+ }
202
+ if (normalized.endsWith('main.css') || normalized.endsWith('main.scss')) {
203
+ return 40;
204
+ }
205
+ if (normalized.endsWith('.css') || normalized.endsWith('.scss')) {
206
+ return 100;
115
207
  }
208
+ return 999;
209
+ }
210
+ export function findBestStylesheet(cwd, framework) {
211
+ const files = walkFiles(cwd)
212
+ .filter(filePath => /\.(css|scss)$/.test(filePath))
213
+ .map(filePath => relativeToCwd(cwd, filePath))
214
+ .sort((a, b) => stylesheetPriority(a, framework) - stylesheetPriority(b, framework));
215
+ return files[0];
116
216
  }
117
- // ─── Step 4: CSS 임포트 추가 ────────────────────────────
118
217
  function setupCSS(cwd, framework) {
119
- const candidates = framework === 'nextjs'
120
- ? ['app/globals.css', 'src/app/globals.css', 'styles/globals.css']
121
- : ['src/index.css', 'src/main.css', 'index.css'];
122
- const cssFile = findFile(cwd, candidates);
218
+ const cssFile = findBestStylesheet(cwd, framework);
123
219
  if (!cssFile) {
124
- logDetail('CSS 파일을 찾을 없습니다. 수동으로 추가해 주세요:');
125
- logDetail(` ${FRAMINGUI_STYLE_IMPORT}`);
126
- return;
220
+ logDetail('No stylesheet file found for FramingUI styles import');
221
+ return undefined;
127
222
  }
128
223
  const cssPath = path.join(cwd, cssFile);
129
224
  const content = fs.readFileSync(cssPath, 'utf-8');
130
225
  if (content.includes(FRAMINGUI_STYLE_IMPORT)) {
131
- logDetail(`${cssFile} (이미 설정됨, skip)`);
132
- return;
226
+ logDetail(`${cssFile} (already configured)`);
227
+ return cssPath;
133
228
  }
134
- // 파일 상단에 import 추가
135
229
  fs.writeFileSync(cssPath, `${FRAMINGUI_STYLE_IMPORT}\n\n${content}`, 'utf-8');
136
- logDetail(`${cssFile} 업데이트 완료`);
230
+ logDetail(`${cssFile} updated`);
231
+ return cssPath;
137
232
  }
138
- // ─── Step 5: MCP 설정 ──────────────────────────────────
139
233
  function setupMCP(cwd) {
140
234
  const mcpPath = path.join(cwd, '.mcp.json');
141
235
  if (fileExists(mcpPath)) {
@@ -143,155 +237,231 @@ function setupMCP(cwd) {
143
237
  const config = JSON.parse(raw);
144
238
  const result = upsertFraminguiServerConfig(config);
145
239
  if (!result.updated) {
146
- logDetail('.mcp.json (already using latest FramingUI server config)');
240
+ logDetail('.mcp.json already uses the latest FramingUI server config');
147
241
  return;
148
242
  }
149
243
  fs.writeFileSync(mcpPath, JSON.stringify(result.config, null, 2) + '\n', 'utf-8');
150
- logDetail(result.created ? '.mcp.json 업데이트 완료' : '.mcp.json framingui 서버를 latest로 갱신 완료');
151
- }
152
- else {
153
- const result = upsertFraminguiServerConfig({});
154
- fs.writeFileSync(mcpPath, JSON.stringify(result.config, null, 2) + '\n', 'utf-8');
155
- logDetail('.mcp.json 생성 완료');
244
+ logDetail(result.created ? '.mcp.json updated' : '.mcp.json FramingUI server refreshed');
245
+ return;
156
246
  }
247
+ const result = upsertFraminguiServerConfig({});
248
+ fs.writeFileSync(mcpPath, JSON.stringify(result.config, null, 2) + '\n', 'utf-8');
249
+ logDetail('.mcp.json created');
157
250
  }
158
- // ─── Step 6: 가이드 문서 생성 ──────────────────────────
159
251
  function setupGuide(cwd, framework) {
160
252
  const guidePath = path.join(cwd, 'FRAMINGUI-GUIDE.md');
161
253
  if (fileExists(guidePath)) {
162
- logDetail('FRAMINGUI-GUIDE.md (이미 존재함, skip)');
254
+ logDetail('FRAMINGUI-GUIDE.md already exists');
163
255
  return;
164
256
  }
165
- const content = generateGuide(framework);
166
- fs.writeFileSync(guidePath, content, 'utf-8');
167
- logDetail('FRAMINGUI-GUIDE.md 생성 완료');
257
+ fs.writeFileSync(guidePath, generateGuide(framework), 'utf-8');
258
+ logDetail('FRAMINGUI-GUIDE.md created');
168
259
  }
169
- // ─── Step 7: CLAUDE.md / AGENTS.md 설정 ────────────────
170
260
  function setupAgentMd(cwd, framework) {
171
- // CLAUDE.md 섹션 추가 (기존 파일이 있으면 append, 없으면 생성)
172
261
  const claudeMdPath = path.join(cwd, 'CLAUDE.md');
173
262
  const claudeSection = generateClaudeMdSection(framework);
174
263
  if (fileExists(claudeMdPath)) {
175
264
  const existingContent = fs.readFileSync(claudeMdPath, 'utf-8');
176
265
  if (existingContent.includes('## FramingUI Workflow')) {
177
- logDetail('CLAUDE.md (이미 Framingui 섹션 존재, skip)');
266
+ logDetail('CLAUDE.md already contains the FramingUI section');
178
267
  }
179
268
  else {
180
269
  fs.appendFileSync(claudeMdPath, `\n${claudeSection}`, 'utf-8');
181
- logDetail('CLAUDE.md Framingui 섹션 추가 완료');
270
+ logDetail('CLAUDE.md FramingUI section appended');
182
271
  }
183
272
  }
184
273
  else {
185
274
  fs.writeFileSync(claudeMdPath, `# Project Instructions\n${claudeSection}`, 'utf-8');
186
- logDetail('CLAUDE.md 생성 완료');
275
+ logDetail('CLAUDE.md created');
187
276
  }
188
- // AGENTS.md 섹션 추가 (기존 파일이 있으면 append, 없으면 생성)
189
277
  const agentsMdPath = path.join(cwd, 'AGENTS.md');
190
278
  const agentsSection = generateAgentsMdSection(framework);
191
279
  if (fileExists(agentsMdPath)) {
192
280
  const existingContent = fs.readFileSync(agentsMdPath, 'utf-8');
193
281
  if (existingContent.includes('## FramingUI Workflow')) {
194
- logDetail('AGENTS.md (이미 Framingui 섹션 존재, skip)');
282
+ logDetail('AGENTS.md already contains the FramingUI section');
195
283
  }
196
284
  else {
197
285
  fs.appendFileSync(agentsMdPath, `\n${agentsSection}`, 'utf-8');
198
- logDetail('AGENTS.md Framingui 섹션 추가 완료');
286
+ logDetail('AGENTS.md FramingUI section appended');
199
287
  }
200
288
  }
201
289
  else {
202
290
  fs.writeFileSync(agentsMdPath, `# AI Agent Instructions\n${agentsSection}`, 'utf-8');
203
- logDetail('AGENTS.md 생성 완료');
291
+ logDetail('AGENTS.md created');
204
292
  }
205
293
  }
206
- // ─── Step 8: 완료 메시지 (인증 안내 강화) ─────────────────
207
- function printSuccess() {
208
- console.log(`
294
+ function readProjectPackageJson(cwd) {
295
+ const packageJsonPath = path.join(cwd, 'package.json');
296
+ if (!fileExists(packageJsonPath)) {
297
+ return null;
298
+ }
299
+ return JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'));
300
+ }
301
+ function getInstalledPackageNames(packageJson) {
302
+ const installed = new Set();
303
+ if (!packageJson) {
304
+ return installed;
305
+ }
306
+ const fields = ['dependencies', 'devDependencies', 'peerDependencies'];
307
+ for (const field of fields) {
308
+ const deps = packageJson[field];
309
+ if (deps && typeof deps === 'object') {
310
+ for (const pkgName of Object.keys(deps)) {
311
+ installed.add(pkgName);
312
+ }
313
+ }
314
+ }
315
+ return installed;
316
+ }
317
+ export function verifyInitSetup(cwd) {
318
+ const packageJson = readProjectPackageJson(cwd);
319
+ const installed = getInstalledPackageNames(packageJson);
320
+ const missingPackages = SCREEN_GENERATION_PACKAGES.filter(pkg => !installed.has(pkg));
321
+ const stylesheets = walkFiles(cwd).filter(filePath => /\.(css|scss)$/.test(filePath));
322
+ const stylesheetWithImport = stylesheets.find(filePath => fs.readFileSync(filePath, 'utf-8').includes(FRAMINGUI_STYLE_IMPORT));
323
+ const tailwind = readTailwindConfig(cwd);
324
+ const warnings = [];
325
+ if (missingPackages.length > 0) {
326
+ warnings.push(`Missing packages: ${missingPackages.join(', ')}`);
327
+ }
328
+ if (!stylesheetWithImport) {
329
+ warnings.push(`Missing ${FRAMINGUI_STYLE_IMPORT} in a global stylesheet`);
330
+ }
331
+ if (!tailwind.found) {
332
+ warnings.push('Tailwind config not found');
333
+ }
334
+ else {
335
+ if (!tailwind.hasUiContentPath) {
336
+ warnings.push('Tailwind config is missing @framingui/ui content paths');
337
+ }
338
+ if (!tailwind.hasAnimatePlugin) {
339
+ warnings.push('Tailwind config is missing the tailwindcss-animate plugin');
340
+ }
341
+ }
342
+ return {
343
+ installedPackagesOk: missingPackages.length === 0,
344
+ missingPackages,
345
+ styleImportOk: Boolean(stylesheetWithImport),
346
+ styleImportPath: stylesheetWithImport,
347
+ tailwindFound: tailwind.found,
348
+ tailwindUiContentOk: tailwind.hasUiContentPath,
349
+ tailwindAnimatePluginOk: tailwind.hasAnimatePlugin,
350
+ tailwindConfigPath: tailwind.configPath,
351
+ warnings,
352
+ };
353
+ }
354
+ function printResult(pm, verification) {
355
+ if (verification.warnings.length === 0) {
356
+ console.log(`
209
357
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
210
358
 
211
- FramingUI 설정 완료!
359
+ FramingUI setup completed.
212
360
 
213
- 다음 단계:
214
- 1. 먼저 인증하세요: framingui-mcp login
215
- 2. Claude Code를 재시작하세요
216
- 3. AI에게 요청하세요: "로그인 화면 만들어줘"
217
- 4. FRAMINGUI-GUIDE.md에서 전체 가이드를 확인하세요
361
+ Verified:
362
+ - screen-generation runtime packages installed
363
+ - Tailwind content paths updated
364
+ - tailwindcss-animate configured
365
+ - @import '@framingui/ui/styles'; present
218
366
 
219
- 중요: 모든 6개 테마는 인증이 필요합니다
367
+ Next steps:
368
+ 1. Run: framingui-mcp login
369
+ 2. Restart your MCP client
370
+ 3. Start with: get-screen-generation-context
371
+
372
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━`);
373
+ return;
374
+ }
375
+ console.error(`
376
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
377
+
378
+ FramingUI setup is incomplete.
379
+
380
+ Problems:
381
+ - ${verification.warnings.join('\n - ')}
382
+
383
+ Recovery:
384
+ - Re-run package install:
385
+ ${pm} add ${SCREEN_GENERATION_PACKAGES.join(' ')}
386
+ - Ensure a global stylesheet imports:
387
+ ${FRAMINGUI_STYLE_IMPORT}
220
388
 
221
389
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━`);
222
390
  }
223
- // ─── 메인 ──────────────────────────────────────────────
224
391
  export async function initCommand() {
225
392
  const cwd = process.cwd();
226
- const totalSteps = 8;
393
+ const totalSteps = 9;
227
394
  console.log('\n@framingui/mcp-server init\n');
228
- // package.json 확인
229
395
  if (!fileExists(path.join(cwd, 'package.json'))) {
230
- console.error('package.json 찾을 없습니다. 프로젝트 루트에서 실행해 주세요.');
396
+ console.error('package.json not found. Run this command from the project root.');
231
397
  process.exit(1);
232
398
  }
233
- // Step 1: 프로젝트 감지
234
- log(1, totalSteps, '프로젝트 감지 중...');
399
+ log(1, totalSteps, 'Detecting project...');
235
400
  let framework = detectFramework(cwd);
236
401
  if (!framework) {
237
- const answer = await askUser('프로젝트 유형을 감지할 없습니다. 프레임워크를 선택해 주세요:', ['Next.js', 'Vite']);
402
+ const answer = await askUser('Could not detect the framework. Choose one:', [
403
+ 'Next.js',
404
+ 'Vite',
405
+ ]);
238
406
  framework = answer === 'Vite' ? 'vite' : 'nextjs';
239
407
  }
240
- const frameworkLabel = framework === 'nextjs' ? 'Next.js' : 'Vite';
241
- logDetail(`${frameworkLabel} 프로젝트`);
242
- // Step 2: 패키지 설치
243
- log(2, totalSteps, '패키지 설치 중...');
408
+ logDetail(`Detected ${framework === 'nextjs' ? 'Next.js' : 'Vite'} project`);
409
+ log(2, totalSteps, 'Installing FramingUI screen-generation runtime...');
244
410
  const pm = detectPackageManager(cwd);
245
- try {
246
- installPackages(cwd, pm);
247
- }
248
- catch {
249
- console.error('패키지 설치에 실패했습니다. 수동으로 설치해 주세요:');
250
- console.error(` ${pm} add ${PACKAGES_TO_INSTALL.join(' ')}`);
411
+ const installResult = installPackages(cwd, pm);
412
+ if (!installResult.ok) {
413
+ console.error('Package installation failed.');
251
414
  }
252
- // Step 3: Tailwind CSS 설정
253
- log(3, totalSteps, 'Tailwind CSS 설정 중...');
415
+ log(3, totalSteps, 'Configuring Tailwind CSS...');
254
416
  try {
255
417
  setupTailwind(cwd);
256
418
  }
257
419
  catch {
258
- console.error('Tailwind CSS 설정에 실패했습니다. 수동으로 설정해 주세요.');
420
+ console.error('Failed to update Tailwind CSS configuration.');
259
421
  }
260
- // Step 4: CSS 토큰 임포트
261
- log(4, totalSteps, 'CSS 토큰 임포트 추가 중...');
422
+ log(4, totalSteps, 'Adding FramingUI styles import...');
262
423
  try {
263
- setupCSS(cwd, framework);
424
+ const cssPath = setupCSS(cwd, framework);
425
+ if (!cssPath) {
426
+ console.error(`Could not find a stylesheet to update with ${FRAMINGUI_STYLE_IMPORT}`);
427
+ }
264
428
  }
265
429
  catch {
266
- console.error('CSS 설정에 실패했습니다. 수동으로 추가해 주세요:');
267
- console.error(` ${FRAMINGUI_STYLE_IMPORT}`);
430
+ console.error('Failed to update the stylesheet import.');
268
431
  }
269
- // Step 5: MCP 설정
270
- log(5, totalSteps, 'Claude Code MCP 설정 중...');
432
+ log(5, totalSteps, 'Configuring MCP server...');
271
433
  try {
272
434
  setupMCP(cwd);
273
435
  }
274
436
  catch {
275
- console.error('MCP 설정에 실패했습니다. 수동으로 .mcp.json을 생성해 주세요.');
437
+ console.error('Failed to update .mcp.json.');
276
438
  }
277
- // Step 6: 가이드 문서 생성
278
- log(6, totalSteps, '가이드 문서 생성 중...');
439
+ log(6, totalSteps, 'Generating project guide...');
279
440
  try {
280
441
  setupGuide(cwd, framework);
281
442
  }
282
443
  catch {
283
- console.error('가이드 문서 생성에 실패했습니다.');
444
+ console.error('Failed to generate FRAMINGUI-GUIDE.md.');
284
445
  }
285
- // Step 7: CLAUDE.md / AGENTS.md 설정
286
- log(7, totalSteps, 'AI 에이전트 가이드 설정 중...');
446
+ log(7, totalSteps, 'Updating AI agent guides...');
287
447
  try {
288
448
  setupAgentMd(cwd, framework);
289
449
  }
290
450
  catch {
291
- console.error('AI 에이전트 가이드 설정에 실패했습니다.');
451
+ console.error('Failed to update CLAUDE.md / AGENTS.md.');
452
+ }
453
+ log(8, totalSteps, 'Verifying FramingUI setup...');
454
+ const verification = verifyInitSetup(cwd);
455
+ if (verification.styleImportPath) {
456
+ logDetail(`Styles import found in ${relativeToCwd(cwd, verification.styleImportPath)}`);
457
+ }
458
+ if (verification.tailwindConfigPath) {
459
+ logDetail(`Tailwind config verified at ${relativeToCwd(cwd, verification.tailwindConfigPath)}`);
460
+ }
461
+ log(9, totalSteps, verification.warnings.length === 0 ? 'Setup complete' : 'Setup incomplete');
462
+ printResult(pm, verification);
463
+ if (!installResult.ok || verification.warnings.length > 0) {
464
+ process.exitCode = 1;
292
465
  }
293
- // Step 8: 완료 메시지
294
- log(8, totalSteps, '설정 완료');
295
- printSuccess();
296
466
  }
297
467
  //# sourceMappingURL=init.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"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"}