@framingui/mcp-server 0.6.4 → 0.6.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/README.md +19 -33
- package/dist/api/api-result.js +1 -1
- package/dist/auth/guard.d.ts +0 -17
- package/dist/auth/guard.d.ts.map +1 -1
- package/dist/auth/guard.js +1 -25
- package/dist/auth/guard.js.map +1 -1
- package/dist/auth/state.d.ts +0 -9
- package/dist/auth/state.d.ts.map +1 -1
- package/dist/auth/state.js +0 -17
- package/dist/auth/state.js.map +1 -1
- package/dist/cli/index.js +6 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/init.d.ts.map +1 -1
- package/dist/cli/init.js +9 -21
- package/dist/cli/init.js.map +1 -1
- package/dist/cli/mcp-config.d.ts +17 -0
- package/dist/cli/mcp-config.d.ts.map +1 -0
- package/dist/cli/mcp-config.js +40 -0
- package/dist/cli/mcp-config.js.map +1 -0
- package/dist/cli/version.d.ts +3 -0
- package/dist/cli/version.d.ts.map +1 -0
- package/dist/cli/version.js +10 -0
- package/dist/cli/version.js.map +1 -0
- package/dist/index.js +24 -49
- package/dist/index.js.map +1 -1
- package/dist/prompts/getting-started.d.ts.map +1 -1
- package/dist/prompts/getting-started.js +6 -4
- package/dist/prompts/getting-started.js.map +1 -1
- package/dist/prompts/screen-workflow.d.ts.map +1 -1
- package/dist/prompts/screen-workflow.js +3 -0
- package/dist/prompts/screen-workflow.js.map +1 -1
- package/dist/tools/generate-screen.d.ts.map +1 -1
- package/dist/tools/generate-screen.js +37 -1
- package/dist/tools/generate-screen.js.map +1 -1
- package/dist/tools/get-screen-generation-context.d.ts.map +1 -1
- package/dist/tools/get-screen-generation-context.js +81 -11
- package/dist/tools/get-screen-generation-context.js.map +1 -1
- package/dist/tools/list-icon-libraries.d.ts +1 -1
- package/dist/tools/list-icon-libraries.js +1 -1
- package/dist/tools/list-themes.d.ts +1 -1
- package/dist/tools/list-themes.d.ts.map +1 -1
- package/dist/tools/list-themes.js +15 -1
- package/dist/tools/list-themes.js.map +1 -1
- package/dist/tools/preview-icon-library.d.ts +1 -1
- package/dist/tools/preview-icon-library.js +1 -1
- package/dist/tools/preview-theme.d.ts +1 -1
- package/dist/tools/preview-theme.d.ts.map +1 -1
- package/dist/tools/preview-theme.js +11 -1
- package/dist/tools/preview-theme.js.map +1 -1
- package/dist/tools/screen-component-contract.d.ts +4 -0
- package/dist/tools/screen-component-contract.d.ts.map +1 -0
- package/dist/tools/screen-component-contract.js +42 -0
- package/dist/tools/screen-component-contract.js.map +1 -0
- package/dist/tools/theme-authority.d.ts +9 -0
- package/dist/tools/theme-authority.d.ts.map +1 -0
- package/dist/tools/theme-authority.js +36 -0
- package/dist/tools/theme-authority.js.map +1 -0
- package/dist/tools/validate-screen-definition.d.ts.map +1 -1
- package/dist/tools/validate-screen-definition.js +12 -32
- package/dist/tools/validate-screen-definition.js.map +1 -1
- package/dist/tools/whoami.d.ts +1 -2
- package/dist/tools/whoami.d.ts.map +1 -1
- package/dist/tools/whoami.js +2 -5
- package/dist/tools/whoami.js.map +1 -1
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -6,7 +6,7 @@ Framingui MCP Server v2.0.0 - stdio-based MCP protocol implementation for Claude
|
|
|
6
6
|
|
|
7
7
|
MCP (Model Context Protocol) server enabling AI-driven blueprint generation, theme preview, and production code export for the Framingui design system.
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
Consumer install and upgrade steps live in [docs/packages/install-update.md](../../docs/packages/install-update.md).
|
|
10
10
|
|
|
11
11
|
## Features
|
|
12
12
|
|
|
@@ -98,13 +98,13 @@ npx @framingui/mcp-server init
|
|
|
98
98
|
|
|
99
99
|
### CLI Commands
|
|
100
100
|
|
|
101
|
-
| Command
|
|
102
|
-
|
|
|
103
|
-
| `npx @framingui/mcp-server` | MCP stdio 서버 시작 |
|
|
104
|
-
| `npx @framingui/mcp-server init` | 프로젝트 초기 설정 |
|
|
105
|
-
| `framingui-mcp login`
|
|
106
|
-
| `framingui-mcp logout`
|
|
107
|
-
| `framingui-mcp status`
|
|
101
|
+
| Command | Description |
|
|
102
|
+
| ------------------------------------------ | --------------------- |
|
|
103
|
+
| `npx -y @framingui/mcp-server@latest` | MCP stdio 서버 시작 |
|
|
104
|
+
| `npx -y @framingui/mcp-server@latest init` | 프로젝트 초기 설정 |
|
|
105
|
+
| `framingui-mcp login` | 브라우저 OAuth 로그인 |
|
|
106
|
+
| `framingui-mcp logout` | 로그아웃 |
|
|
107
|
+
| `framingui-mcp status` | 인증 상태 확인 |
|
|
108
108
|
|
|
109
109
|
## Development Quick Start
|
|
110
110
|
|
|
@@ -124,7 +124,7 @@ pnpm inspect
|
|
|
124
124
|
|
|
125
125
|
### 3. Integrate with Claude Code
|
|
126
126
|
|
|
127
|
-
See [
|
|
127
|
+
See [Package Guide](../../docs/packages/mcp-server.md) for complete setup instructions.
|
|
128
128
|
|
|
129
129
|
**Quick Config** (프로젝트 루트 `.mcp.json`):
|
|
130
130
|
|
|
@@ -134,7 +134,7 @@ See [Claude Code Integration Guide](../../.moai/specs/SPEC-MCP-002/CLAUDE-CODE-I
|
|
|
134
134
|
"framingui": {
|
|
135
135
|
"type": "stdio",
|
|
136
136
|
"command": "npx",
|
|
137
|
-
"args": ["-y", "@framingui/mcp-server"]
|
|
137
|
+
"args": ["-y", "@framingui/mcp-server@latest"]
|
|
138
138
|
}
|
|
139
139
|
}
|
|
140
140
|
}
|
|
@@ -249,7 +249,7 @@ See [Claude Code Integration Guide](../../.moai/specs/SPEC-MCP-002/CLAUDE-CODE-I
|
|
|
249
249
|
|
|
250
250
|
**Tool**: `list-themes`
|
|
251
251
|
|
|
252
|
-
**Description**: List
|
|
252
|
+
**Description**: List the themes accessible to the current authenticated session
|
|
253
253
|
|
|
254
254
|
**Input**:
|
|
255
255
|
|
|
@@ -802,7 +802,7 @@ User: "What can I customize in the loading template?"
|
|
|
802
802
|
→ Customizable texts, slots, and optional features returned
|
|
803
803
|
```
|
|
804
804
|
|
|
805
|
-
See [
|
|
805
|
+
See [Package Guide](../../docs/packages/mcp-server.md) for complete examples.
|
|
806
806
|
|
|
807
807
|
## Architecture
|
|
808
808
|
|
|
@@ -907,24 +907,11 @@ All functions use `MemoryCache` (10-min TTL) with `getStale()` fallback for netw
|
|
|
907
907
|
|
|
908
908
|
## Documentation
|
|
909
909
|
|
|
910
|
-
###
|
|
910
|
+
### Consumer Documentation
|
|
911
911
|
|
|
912
|
-
-
|
|
913
|
-
-
|
|
914
|
-
-
|
|
915
|
-
- 🔄 [Handover Document](../../.moai/specs/SPEC-MCP-002/HANDOVER.md) - Implementation details
|
|
916
|
-
|
|
917
|
-
### SPEC-MCP-003 v1.0.0 Documentation (Component & Template Discovery)
|
|
918
|
-
|
|
919
|
-
- 📋 [Specification](../../.moai/specs/SPEC-MCP-003/spec.md) - Component & template discovery requirements
|
|
920
|
-
- 🧩 Component Registry - 30+ UI components with metadata
|
|
921
|
-
- 📄 Template Registry - 13 screen templates with customization boundaries
|
|
922
|
-
|
|
923
|
-
### Integration Guides
|
|
924
|
-
|
|
925
|
-
- 🤖 [Claude Code Integration](../../.moai/specs/SPEC-MCP-002/CLAUDE-CODE-INTEGRATION.md) - Setup and usage
|
|
926
|
-
- ✅ [Phase 5 Results](../../.moai/specs/SPEC-MCP-002/PHASE-5-RESULTS.md) - MCP Inspector validation
|
|
927
|
-
- 🎯 [Phase 6 Completion](../../.moai/specs/SPEC-MCP-002/PHASE-6-COMPLETION.md) - Integration testing
|
|
912
|
+
- 📦 [Install And Update Guide](../../docs/packages/install-update.md) - package install, upgrade, and cache troubleshooting
|
|
913
|
+
- 🤖 [Package Guide](../../docs/packages/mcp-server.md) - setup and usage
|
|
914
|
+
- 📘 [Local MCP Docs](./docs/README.md) - quick start, API reference, and integration notes
|
|
928
915
|
|
|
929
916
|
### Quick Links
|
|
930
917
|
|
|
@@ -988,7 +975,7 @@ pnpm inspect
|
|
|
988
975
|
- **Data-Only Philosophy**: Claude Code handles all file operations
|
|
989
976
|
- **Security**: No file system side effects from MCP tools
|
|
990
977
|
|
|
991
|
-
**Visual Preview**: Use
|
|
978
|
+
**Visual Preview**: Use the FramingUI playground app for React-based rendering and theme inspection.
|
|
992
979
|
|
|
993
980
|
## Contributing
|
|
994
981
|
|
|
@@ -1005,7 +992,6 @@ MIT
|
|
|
1005
992
|
|
|
1006
993
|
---
|
|
1007
994
|
|
|
1008
|
-
**Version**: 0.6.
|
|
1009
|
-
**Last Updated**: 2026-03-
|
|
1010
|
-
**SPEC**: SPEC-MCP-002 v2.0.0, SPEC-LAYOUT-002 Phase 4, SPEC-MCP-003 v1.0.0, SPEC-MCP-007 v1.0.0
|
|
995
|
+
**Version**: 0.6.5
|
|
996
|
+
**Last Updated**: 2026-03-07
|
|
1011
997
|
**Total Tools**: 17
|
package/dist/api/api-result.js
CHANGED
|
@@ -32,7 +32,7 @@ export function formatToolError(error, context) {
|
|
|
32
32
|
switch (error.code) {
|
|
33
33
|
case 'AUTH_FAILED':
|
|
34
34
|
case 'NOT_AUTHENTICATED':
|
|
35
|
-
return `${prefix}Authentication failed.
|
|
35
|
+
return `${prefix}Authentication failed. Check your login session or API key and try again.`;
|
|
36
36
|
case 'FORBIDDEN':
|
|
37
37
|
return `${prefix}${error.message}`;
|
|
38
38
|
case 'NOT_FOUND':
|
package/dist/auth/guard.d.ts
CHANGED
|
@@ -1,22 +1,5 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 인증 가드 - 모든 도구 호출 전 인증 상태 확인
|
|
3
|
-
* SPEC-DEPLOY-001: 모든 테마 유료화, 인증 필수
|
|
4
|
-
*/
|
|
5
1
|
export declare class AuthRequiredError extends Error {
|
|
6
2
|
constructor();
|
|
7
3
|
}
|
|
8
|
-
export declare class WhoamiRequiredError extends Error {
|
|
9
|
-
constructor();
|
|
10
|
-
}
|
|
11
|
-
/**
|
|
12
|
-
* 인증 필수 가드
|
|
13
|
-
* 인증되지 않은 경우 AuthRequiredError를 throw
|
|
14
|
-
*/
|
|
15
4
|
export declare function requireAuth(): void;
|
|
16
|
-
/**
|
|
17
|
-
* whoami 필수 가드 (서버 사이드 강제)
|
|
18
|
-
* whoami 미호출 시 WhoamiRequiredError를 throw
|
|
19
|
-
* 프롬프트 인젝션으로 우회 불가
|
|
20
|
-
*/
|
|
21
|
-
export declare function requireWhoami(): void;
|
|
22
5
|
//# sourceMappingURL=guard.d.ts.map
|
package/dist/auth/guard.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guard.d.ts","sourceRoot":"","sources":["../../src/auth/guard.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"guard.d.ts","sourceRoot":"","sources":["../../src/auth/guard.ts"],"names":[],"mappings":"AAEA,qBAAa,iBAAkB,SAAQ,KAAK;;CAO3C;AAED,wBAAgB,WAAW,IAAI,IAAI,CAIlC"}
|
package/dist/auth/guard.js
CHANGED
|
@@ -1,37 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
* 인증 가드 - 모든 도구 호출 전 인증 상태 확인
|
|
3
|
-
* SPEC-DEPLOY-001: 모든 테마 유료화, 인증 필수
|
|
4
|
-
*/
|
|
5
|
-
import { isAuthenticated, isWhoamiCompleted } from './state.js';
|
|
1
|
+
import { isAuthenticated } from './state.js';
|
|
6
2
|
export class AuthRequiredError extends Error {
|
|
7
3
|
constructor() {
|
|
8
4
|
super('Authentication required. Run `framingui-mcp login` to authenticate, or set FRAMINGUI_API_KEY environment variable.');
|
|
9
5
|
this.name = 'AuthRequiredError';
|
|
10
6
|
}
|
|
11
7
|
}
|
|
12
|
-
export class WhoamiRequiredError extends Error {
|
|
13
|
-
constructor() {
|
|
14
|
-
super('Please call the "whoami" tool first to verify your account and license status before using other tools.');
|
|
15
|
-
this.name = 'WhoamiRequiredError';
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* 인증 필수 가드
|
|
20
|
-
* 인증되지 않은 경우 AuthRequiredError를 throw
|
|
21
|
-
*/
|
|
22
8
|
export function requireAuth() {
|
|
23
9
|
if (!isAuthenticated()) {
|
|
24
10
|
throw new AuthRequiredError();
|
|
25
11
|
}
|
|
26
12
|
}
|
|
27
|
-
/**
|
|
28
|
-
* whoami 필수 가드 (서버 사이드 강제)
|
|
29
|
-
* whoami 미호출 시 WhoamiRequiredError를 throw
|
|
30
|
-
* 프롬프트 인젝션으로 우회 불가
|
|
31
|
-
*/
|
|
32
|
-
export function requireWhoami() {
|
|
33
|
-
if (!isWhoamiCompleted()) {
|
|
34
|
-
throw new WhoamiRequiredError();
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
13
|
//# sourceMappingURL=guard.js.map
|
package/dist/auth/guard.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guard.js","sourceRoot":"","sources":["../../src/auth/guard.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"guard.js","sourceRoot":"","sources":["../../src/auth/guard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE7C,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IAC1C;QACE,KAAK,CACH,oHAAoH,CACrH,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF;AAED,MAAM,UAAU,WAAW;IACzB,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC;QACvB,MAAM,IAAI,iBAAiB,EAAE,CAAC;IAChC,CAAC;AACH,CAAC"}
|
package/dist/auth/state.d.ts
CHANGED
|
@@ -25,15 +25,6 @@ export declare function getRawApiKey(): string | null;
|
|
|
25
25
|
* Clear authentication data and cache
|
|
26
26
|
*/
|
|
27
27
|
export declare function clearAuthData(): void;
|
|
28
|
-
/**
|
|
29
|
-
* whoami 도구 호출 완료 표시
|
|
30
|
-
*/
|
|
31
|
-
export declare function setWhoamiCompleted(): void;
|
|
32
|
-
/**
|
|
33
|
-
* whoami 도구 호출 여부 확인
|
|
34
|
-
* @returns whoami가 호출되었으면 true
|
|
35
|
-
*/
|
|
36
|
-
export declare function isWhoamiCompleted(): boolean;
|
|
37
28
|
/**
|
|
38
29
|
* Check if user is authenticated
|
|
39
30
|
* @returns true if authenticated with valid data
|
package/dist/auth/state.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/auth/state.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/auth/state.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAiBlD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI,GAAG,IAAI,CAOjE;AAED;;;GAGG;AACH,wBAAgB,WAAW,IAAI,cAAc,GAAG,IAAI,CAWnD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAExD;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,MAAM,GAAG,IAAI,CAE5C;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,IAAI,CAKpC;AAED;;;GAGG;AACH,wBAAgB,eAAe,IAAI,OAAO,CAGzC;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAoBnE"}
|
package/dist/auth/state.js
CHANGED
|
@@ -11,8 +11,6 @@ const CACHE_TTL_MS = 5 * 60 * 1000;
|
|
|
11
11
|
const authCache = new MemoryCache();
|
|
12
12
|
// Current authentication state
|
|
13
13
|
let currentAuthData = null;
|
|
14
|
-
// whoami 도구 호출 완료 여부 (서버 사이드 게이트)
|
|
15
|
-
let whoamiCompleted = false;
|
|
16
14
|
// Raw API key (API 데이터 클라이언트에서 Bearer 헤더로 사용)
|
|
17
15
|
let rawApiKey = null;
|
|
18
16
|
/**
|
|
@@ -57,25 +55,10 @@ export function getRawApiKey() {
|
|
|
57
55
|
*/
|
|
58
56
|
export function clearAuthData() {
|
|
59
57
|
currentAuthData = null;
|
|
60
|
-
whoamiCompleted = false;
|
|
61
58
|
rawApiKey = null;
|
|
62
59
|
authCache.clear();
|
|
63
60
|
info('Authentication data cleared');
|
|
64
61
|
}
|
|
65
|
-
/**
|
|
66
|
-
* whoami 도구 호출 완료 표시
|
|
67
|
-
*/
|
|
68
|
-
export function setWhoamiCompleted() {
|
|
69
|
-
whoamiCompleted = true;
|
|
70
|
-
info('whoami completed - all tools unlocked');
|
|
71
|
-
}
|
|
72
|
-
/**
|
|
73
|
-
* whoami 도구 호출 여부 확인
|
|
74
|
-
* @returns whoami가 호출되었으면 true
|
|
75
|
-
*/
|
|
76
|
-
export function isWhoamiCompleted() {
|
|
77
|
-
return whoamiCompleted;
|
|
78
|
-
}
|
|
79
62
|
/**
|
|
80
63
|
* Check if user is authenticated
|
|
81
64
|
* @returns true if authenticated with valid data
|
package/dist/auth/state.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/auth/state.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,8CAA8C;AAC9C,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AAEnC,mCAAmC;AACnC,MAAM,SAAS,GAAG,IAAI,WAAW,EAAkB,CAAC;AAEpD,+BAA+B;AAC/B,IAAI,eAAe,GAA0B,IAAI,CAAC;AAElD,
|
|
1
|
+
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/auth/state.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,8CAA8C;AAC9C,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AAEnC,mCAAmC;AACnC,MAAM,SAAS,GAAG,IAAI,WAAW,EAAkB,CAAC;AAEpD,+BAA+B;AAC/B,IAAI,eAAe,GAA0B,IAAI,CAAC;AAElD,8CAA8C;AAC9C,IAAI,SAAS,GAAkB,IAAI,CAAC;AAEpC;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,QAA+B;IACzD,eAAe,GAAG,QAAQ,CAAC;IAE3B,IAAI,QAAQ,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;QAC/B,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;QAC9C,IAAI,CAAC,0CAA0C,CAAC,CAAC;IACnD,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW;IACzB,8BAA8B;IAC9B,MAAM,UAAU,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAEzC,IAAI,UAAU,EAAE,CAAC;QACf,IAAI,CAAC,kCAAkC,CAAC,CAAC;QACzC,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,uBAAuB;IACvB,OAAO,eAAe,CAAC;AACzB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,MAAqB;IAChD,SAAS,GAAG,MAAM,CAAC;AACrB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY;IAC1B,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa;IAC3B,eAAe,GAAG,IAAI,CAAC;IACvB,SAAS,GAAG,IAAI,CAAC;IACjB,SAAS,CAAC,KAAK,EAAE,CAAC;IAClB,IAAI,CAAC,6BAA6B,CAAC,CAAC;AACtC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe;IAC7B,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,OAAO,QAAQ,KAAK,IAAI,IAAI,QAAQ,CAAC,KAAK,KAAK,IAAI,CAAC;AACtD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CAAC,WAAqB;IACvD,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAE/B,qBAAqB;IACrB,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACjC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,sBAAsB;IACtB,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IACnC,IAAI,KAAK,IAAI,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;QACpC,OAAO,CAAC,GAAG,WAAW,CAAC,CAAC;IAC1B,CAAC;IAED,sBAAsB;IACtB,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,EAAE,QAAQ,IAAI,EAAE,CAAC;IACvD,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,cAAc,CAAC,CAAC;IAEjD,kBAAkB;IAClB,OAAO,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AAC5D,CAAC"}
|
package/dist/cli/index.js
CHANGED
|
@@ -5,6 +5,12 @@
|
|
|
5
5
|
*/
|
|
6
6
|
const command = process.argv[2];
|
|
7
7
|
switch (command) {
|
|
8
|
+
case '--version':
|
|
9
|
+
case '-v': {
|
|
10
|
+
const { printVersion } = await import('./version.js');
|
|
11
|
+
printVersion();
|
|
12
|
+
break;
|
|
13
|
+
}
|
|
8
14
|
case 'login': {
|
|
9
15
|
const { loginCommand } = await import('./login.js');
|
|
10
16
|
try {
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAEA;;;GAGG;AAIH,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAEhC,QAAQ,OAAO,EAAE,CAAC;IAChB,KAAK,OAAO,CAAC,CAAC,CAAC;QACb,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;QACpD,IAAI,CAAC;YACH,MAAM,YAAY,EAAE,CAAC;QACvB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAChE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,MAAM;IACR,CAAC;IAED,KAAK,QAAQ,CAAC,CAAC,CAAC;QACd,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;QACtD,aAAa,EAAE,CAAC;QAChB,MAAM;IACR,CAAC;IAED,KAAK,QAAQ,CAAC,CAAC,CAAC;QACd,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;QACtD,aAAa,EAAE,CAAC;QAChB,MAAM;IACR,CAAC;IAED,KAAK,MAAM,CAAC,CAAC,CAAC;QACZ,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;QAClD,MAAM,WAAW,EAAE,CAAC;QACpB,MAAM;IACR,CAAC;IAED,OAAO,CAAC,CAAC,CAAC;QACR,wCAAwC;QACxC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;QAC5B,MAAM;IACR,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAEA;;;GAGG;AAIH,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAEhC,QAAQ,OAAO,EAAE,CAAC;IAChB,KAAK,WAAW,CAAC;IACjB,KAAK,IAAI,CAAC,CAAC,CAAC;QACV,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAC;QACtD,YAAY,EAAE,CAAC;QACf,MAAM;IACR,CAAC;IAED,KAAK,OAAO,CAAC,CAAC,CAAC;QACb,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;QACpD,IAAI,CAAC;YACH,MAAM,YAAY,EAAE,CAAC;QACvB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAChE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,MAAM;IACR,CAAC;IAED,KAAK,QAAQ,CAAC,CAAC,CAAC;QACd,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;QACtD,aAAa,EAAE,CAAC;QAChB,MAAM;IACR,CAAC;IAED,KAAK,QAAQ,CAAC,CAAC,CAAC;QACd,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;QACtD,aAAa,EAAE,CAAC;QAChB,MAAM;IACR,CAAC;IAED,KAAK,MAAM,CAAC,CAAC,CAAC;QACZ,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;QAClD,MAAM,WAAW,EAAE,CAAC;QACpB,MAAM;IACR,CAAC;IAED,OAAO,CAAC,CAAC,CAAC;QACR,wCAAwC;QACxC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;QAC5B,MAAM;IACR,CAAC;AACH,CAAC"}
|
package/dist/cli/init.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAyRH,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAkFjD"}
|
package/dist/cli/init.js
CHANGED
|
@@ -8,6 +8,7 @@ import { execSync } from 'node:child_process';
|
|
|
8
8
|
import readline from 'node:readline';
|
|
9
9
|
import { generateGuide } from './guide-template.js';
|
|
10
10
|
import { generateClaudeMdSection, generateAgentsMdSection } from './agent-md-templates.js';
|
|
11
|
+
import { upsertFraminguiServerConfig } from './mcp-config.js';
|
|
11
12
|
// ─── 상수 ──────────────────────────────────────────────
|
|
12
13
|
const FRAMINGUI_UI_CONTENT_PATH = './node_modules/@framingui/ui/dist/**/*.{js,mjs}';
|
|
13
14
|
const FRAMINGUI_STYLE_IMPORT = "@import '@framingui/ui/styles';";
|
|
@@ -144,36 +145,23 @@ function setupCSS(cwd, framework) {
|
|
|
144
145
|
fs.writeFileSync(cssPath, `${FRAMINGUI_STYLE_IMPORT}\n\n${content}`, 'utf-8');
|
|
145
146
|
logDetail(`${cssFile} 업데이트 완료`);
|
|
146
147
|
}
|
|
148
|
+
// ─── Step 5: MCP 설정 ──────────────────────────────────
|
|
147
149
|
function setupMCP(cwd) {
|
|
148
150
|
const mcpPath = path.join(cwd, '.mcp.json');
|
|
149
|
-
const framinguiServer = {
|
|
150
|
-
type: 'stdio',
|
|
151
|
-
command: 'npx',
|
|
152
|
-
args: ['-y', '@framingui/mcp-server'],
|
|
153
|
-
};
|
|
154
151
|
if (fileExists(mcpPath)) {
|
|
155
|
-
// 기존 파일에 framingui 서버 추가
|
|
156
152
|
const raw = fs.readFileSync(mcpPath, 'utf-8');
|
|
157
153
|
const config = JSON.parse(raw);
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
if ('framingui' in config.mcpServers) {
|
|
162
|
-
logDetail('.mcp.json (이미 설정됨, skip)');
|
|
154
|
+
const result = upsertFraminguiServerConfig(config);
|
|
155
|
+
if (!result.updated) {
|
|
156
|
+
logDetail('.mcp.json (already using latest FramingUI server config)');
|
|
163
157
|
return;
|
|
164
158
|
}
|
|
165
|
-
config
|
|
166
|
-
|
|
167
|
-
logDetail('.mcp.json 업데이트 완료');
|
|
159
|
+
fs.writeFileSync(mcpPath, JSON.stringify(result.config, null, 2) + '\n', 'utf-8');
|
|
160
|
+
logDetail(result.created ? '.mcp.json 업데이트 완료' : '.mcp.json framingui 서버를 latest로 갱신 완료');
|
|
168
161
|
}
|
|
169
162
|
else {
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
mcpServers: {
|
|
173
|
-
framingui: framinguiServer,
|
|
174
|
-
},
|
|
175
|
-
};
|
|
176
|
-
fs.writeFileSync(mcpPath, JSON.stringify(config, null, 2) + '\n', 'utf-8');
|
|
163
|
+
const result = upsertFraminguiServerConfig({});
|
|
164
|
+
fs.writeFileSync(mcpPath, JSON.stringify(result.config, null, 2) + '\n', 'utf-8');
|
|
177
165
|
logDetail('.mcp.json 생성 완료');
|
|
178
166
|
}
|
|
179
167
|
}
|
package/dist/cli/init.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,QAAQ,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,aAAa,EAAkB,MAAM,qBAAqB,CAAC;AACpE,OAAO,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
interface McpServerConfig {
|
|
2
|
+
type: 'stdio';
|
|
3
|
+
command: string;
|
|
4
|
+
args: string[];
|
|
5
|
+
}
|
|
6
|
+
export interface McpConfig {
|
|
7
|
+
mcpServers?: Record<string, unknown>;
|
|
8
|
+
}
|
|
9
|
+
export declare function getCanonicalFraminguiServerConfig(): McpServerConfig;
|
|
10
|
+
export declare function isFraminguiServerConfigOutdated(config: unknown): boolean;
|
|
11
|
+
export declare function upsertFraminguiServerConfig(config: McpConfig): {
|
|
12
|
+
config: McpConfig;
|
|
13
|
+
created: boolean;
|
|
14
|
+
updated: boolean;
|
|
15
|
+
};
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=mcp-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-config.d.ts","sourceRoot":"","sources":["../../src/cli/mcp-config.ts"],"names":[],"mappings":"AAAA,UAAU,eAAe;IACvB,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,MAAM,WAAW,SAAS;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;AAED,wBAAgB,iCAAiC,IAAI,eAAe,CAMnE;AAED,wBAAgB,+BAA+B,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAiBxE;AAED,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,SAAS,GAAG;IAC9D,MAAM,EAAE,SAAS,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;CAClB,CAoBA"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
export function getCanonicalFraminguiServerConfig() {
|
|
2
|
+
return {
|
|
3
|
+
type: 'stdio',
|
|
4
|
+
command: 'npx',
|
|
5
|
+
args: ['-y', '@framingui/mcp-server@latest'],
|
|
6
|
+
};
|
|
7
|
+
}
|
|
8
|
+
export function isFraminguiServerConfigOutdated(config) {
|
|
9
|
+
if (!config || typeof config !== 'object') {
|
|
10
|
+
return true;
|
|
11
|
+
}
|
|
12
|
+
const candidate = config;
|
|
13
|
+
const expected = getCanonicalFraminguiServerConfig();
|
|
14
|
+
if (candidate.type !== expected.type || candidate.command !== expected.command) {
|
|
15
|
+
return true;
|
|
16
|
+
}
|
|
17
|
+
if (!Array.isArray(candidate.args) || candidate.args.length !== expected.args.length) {
|
|
18
|
+
return true;
|
|
19
|
+
}
|
|
20
|
+
return expected.args.some((arg, index) => candidate.args?.[index] !== arg);
|
|
21
|
+
}
|
|
22
|
+
export function upsertFraminguiServerConfig(config) {
|
|
23
|
+
const nextConfig = {
|
|
24
|
+
...config,
|
|
25
|
+
mcpServers: {
|
|
26
|
+
...(config.mcpServers ?? {}),
|
|
27
|
+
},
|
|
28
|
+
};
|
|
29
|
+
const created = !('framingui' in nextConfig.mcpServers);
|
|
30
|
+
const updated = created || isFraminguiServerConfigOutdated(nextConfig.mcpServers.framingui);
|
|
31
|
+
if (updated) {
|
|
32
|
+
nextConfig.mcpServers.framingui = getCanonicalFraminguiServerConfig();
|
|
33
|
+
}
|
|
34
|
+
return {
|
|
35
|
+
config: nextConfig,
|
|
36
|
+
created,
|
|
37
|
+
updated,
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=mcp-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-config.js","sourceRoot":"","sources":["../../src/cli/mcp-config.ts"],"names":[],"mappings":"AAUA,MAAM,UAAU,iCAAiC;IAC/C,OAAO;QACL,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,KAAK;QACd,IAAI,EAAE,CAAC,IAAI,EAAE,8BAA8B,CAAC;KAC7C,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,+BAA+B,CAAC,MAAe;IAC7D,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC1C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,SAAS,GAAG,MAAkC,CAAC;IACrD,MAAM,QAAQ,GAAG,iCAAiC,EAAE,CAAC;IAErD,IAAI,SAAS,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,IAAI,SAAS,CAAC,OAAO,KAAK,QAAQ,CAAC,OAAO,EAAE,CAAC;QAC/E,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QACrF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;AAC7E,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,MAAiB;IAK3D,MAAM,UAAU,GAAc;QAC5B,GAAG,MAAM;QACT,UAAU,EAAE;YACV,GAAG,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC;SAC7B;KACF,CAAC;IAEF,MAAM,OAAO,GAAG,CAAC,CAAC,WAAW,IAAI,UAAU,CAAC,UAAW,CAAC,CAAC;IACzD,MAAM,OAAO,GAAG,OAAO,IAAI,+BAA+B,CAAC,UAAU,CAAC,UAAW,CAAC,SAAS,CAAC,CAAC;IAE7F,IAAI,OAAO,EAAE,CAAC;QACZ,UAAU,CAAC,UAAW,CAAC,SAAS,GAAG,iCAAiC,EAAE,CAAC;IACzE,CAAC;IAED,OAAO;QACL,MAAM,EAAE,UAAU;QAClB,OAAO;QACP,OAAO;KACR,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/cli/version.ts"],"names":[],"mappings":"AAEA,wBAAgB,aAAa,IAAI,MAAM,CAItC;AAED,wBAAgB,YAAY,IAAI,IAAI,CAEnC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
export function getCliVersion() {
|
|
3
|
+
const packageJsonUrl = new URL('../../package.json', import.meta.url);
|
|
4
|
+
const packageJson = JSON.parse(fs.readFileSync(packageJsonUrl, 'utf-8'));
|
|
5
|
+
return packageJson.version ?? '0.0.0';
|
|
6
|
+
}
|
|
7
|
+
export function printVersion() {
|
|
8
|
+
console.log(getCliVersion());
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=version.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/cli/version.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AAEzB,MAAM,UAAU,aAAa;IAC3B,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,oBAAoB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACtE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,cAAc,EAAE,OAAO,CAAC,CAAyB,CAAC;IACjG,OAAO,WAAW,CAAC,OAAO,IAAI,OAAO,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,CAAC;AAC/B,CAAC"}
|