@framingui/mcp-server 0.6.9 → 0.6.11
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 +55 -12
- package/dist/cli/commands.d.ts +2 -0
- package/dist/cli/commands.d.ts.map +1 -0
- package/dist/cli/commands.js +20 -0
- package/dist/cli/commands.js.map +1 -0
- package/dist/cli/help.d.ts +5 -0
- package/dist/cli/help.d.ts.map +1 -0
- package/dist/cli/help.js +59 -0
- package/dist/cli/help.js.map +1 -0
- package/dist/cli/index.d.ts +1 -1
- package/dist/cli/index.js +47 -3
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/init.d.ts.map +1 -1
- package/dist/cli/init.js +3 -13
- package/dist/cli/init.js.map +1 -1
- package/dist/cli/package-manager.d.ts +5 -0
- package/dist/cli/package-manager.d.ts.map +1 -0
- package/dist/cli/package-manager.js +34 -0
- package/dist/cli/package-manager.js.map +1 -0
- package/dist/cli/update.d.ts +8 -0
- package/dist/cli/update.d.ts.map +1 -0
- package/dist/cli/update.js +53 -0
- package/dist/cli/update.js.map +1 -0
- package/dist/commands/slash-command-adapters.d.ts +9 -0
- package/dist/commands/slash-command-adapters.d.ts.map +1 -0
- package/dist/commands/slash-command-adapters.js +116 -0
- package/dist/commands/slash-command-adapters.js.map +1 -0
- package/dist/commands/slash-command-registry.d.ts +31 -0
- package/dist/commands/slash-command-registry.d.ts.map +1 -0
- package/dist/commands/slash-command-registry.js +358 -0
- package/dist/commands/slash-command-registry.js.map +1 -0
- package/dist/data/component-props.d.ts +30 -0
- package/dist/data/component-props.d.ts.map +1 -0
- package/dist/data/component-props.js +537 -0
- package/dist/data/component-props.js.map +1 -0
- package/dist/data/component-registry.d.ts +30 -0
- package/dist/data/component-registry.d.ts.map +1 -0
- package/dist/data/component-registry.js +320 -0
- package/dist/data/component-registry.js.map +1 -0
- package/dist/data/examples/screen-examples.d.ts +38 -0
- package/dist/data/examples/screen-examples.d.ts.map +1 -0
- package/dist/data/examples/screen-examples.js +500 -0
- package/dist/data/examples/screen-examples.js.map +1 -0
- package/dist/index.js +7 -22
- package/dist/index.js.map +1 -1
- package/dist/prompts/a11y-workflow.d.ts +10 -0
- package/dist/prompts/a11y-workflow.d.ts.map +1 -0
- package/dist/prompts/a11y-workflow.js +46 -0
- package/dist/prompts/a11y-workflow.js.map +1 -0
- package/dist/prompts/command-help.d.ts +10 -0
- package/dist/prompts/command-help.d.ts.map +1 -0
- package/dist/prompts/command-help.js +101 -0
- package/dist/prompts/command-help.js.map +1 -0
- package/dist/prompts/doctor-workflow.d.ts +10 -0
- package/dist/prompts/doctor-workflow.d.ts.map +1 -0
- package/dist/prompts/doctor-workflow.js +39 -0
- package/dist/prompts/doctor-workflow.js.map +1 -0
- package/dist/prompts/getting-started.d.ts.map +1 -1
- package/dist/prompts/getting-started.js +18 -1
- package/dist/prompts/getting-started.js.map +1 -1
- package/dist/prompts/prompt-catalog.d.ts +26 -0
- package/dist/prompts/prompt-catalog.d.ts.map +1 -0
- package/dist/prompts/prompt-catalog.js +82 -0
- package/dist/prompts/prompt-catalog.js.map +1 -0
- package/dist/prompts/responsive-workflow.d.ts +10 -0
- package/dist/prompts/responsive-workflow.d.ts.map +1 -0
- package/dist/prompts/responsive-workflow.js +52 -0
- package/dist/prompts/responsive-workflow.js.map +1 -0
- package/dist/prompts/screen-workflow.d.ts +1 -1
- package/dist/prompts/screen-workflow.d.ts.map +1 -1
- package/dist/prompts/screen-workflow.js +42 -4
- package/dist/prompts/screen-workflow.js.map +1 -1
- package/dist/prompts/slash-commands.d.ts +10 -0
- package/dist/prompts/slash-commands.d.ts.map +1 -0
- package/dist/prompts/slash-commands.js +32 -0
- package/dist/prompts/slash-commands.js.map +1 -0
- package/dist/prompts/theme-swap-workflow.d.ts +10 -0
- package/dist/prompts/theme-swap-workflow.d.ts.map +1 -0
- package/dist/prompts/theme-swap-workflow.js +35 -0
- package/dist/prompts/theme-swap-workflow.js.map +1 -0
- package/dist/prompts/update-workflow.d.ts +10 -0
- package/dist/prompts/update-workflow.d.ts.map +1 -0
- package/dist/prompts/update-workflow.js +36 -0
- package/dist/prompts/update-workflow.js.map +1 -0
- package/dist/schemas/mcp-schemas.d.ts +204 -158
- package/dist/schemas/mcp-schemas.d.ts.map +1 -1
- package/dist/schemas/mcp-schemas.js +17 -0
- package/dist/schemas/mcp-schemas.js.map +1 -1
- package/dist/tools/generate-screen.d.ts.map +1 -1
- package/dist/tools/generate-screen.js +36 -28
- package/dist/tools/generate-screen.js.map +1 -1
- package/dist/tools/validate-environment.d.ts.map +1 -1
- package/dist/tools/validate-environment.js +30 -1
- package/dist/tools/validate-environment.js.map +1 -1
- package/dist/tools/validate-screen-definition.d.ts.map +1 -1
- package/dist/tools/validate-screen-definition.js +38 -95
- package/dist/tools/validate-screen-definition.js.map +1 -1
- package/dist/utils/style-contract-reader.d.ts +10 -0
- package/dist/utils/style-contract-reader.d.ts.map +1 -0
- package/dist/utils/style-contract-reader.js +67 -0
- package/dist/utils/style-contract-reader.js.map +1 -0
- package/package.json +19 -18
- package/LICENSE +0 -21
package/README.md
CHANGED
|
@@ -98,13 +98,17 @@ npx @framingui/mcp-server init
|
|
|
98
98
|
|
|
99
99
|
### CLI Commands
|
|
100
100
|
|
|
101
|
-
| Command | Description
|
|
102
|
-
| ------------------------------------------ |
|
|
103
|
-
| `npx -y @framingui/mcp-server@latest` | MCP stdio 서버 시작
|
|
104
|
-
| `npx -y @framingui/mcp-server@latest init` | 프로젝트 초기 설정
|
|
105
|
-
| `framingui-mcp
|
|
106
|
-
| `framingui-mcp
|
|
107
|
-
| `framingui-mcp
|
|
101
|
+
| Command | Description |
|
|
102
|
+
| ------------------------------------------ | ------------------------ |
|
|
103
|
+
| `npx -y @framingui/mcp-server@latest` | MCP stdio 서버 시작 |
|
|
104
|
+
| `npx -y @framingui/mcp-server@latest init` | 프로젝트 초기 설정 |
|
|
105
|
+
| `framingui-mcp help` | CLI 도움말 |
|
|
106
|
+
| `framingui-mcp commands --format json` | command adapter export |
|
|
107
|
+
| `framingui-mcp login` | 브라우저 OAuth 로그인 |
|
|
108
|
+
| `framingui-mcp logout` | 로그아웃 |
|
|
109
|
+
| `framingui-mcp status` | 인증 상태 확인 |
|
|
110
|
+
| `framingui-mcp update --check` | 패키지 업데이트 점검 |
|
|
111
|
+
| `framingui-mcp server` | MCP stdio 서버 명시 시작 |
|
|
108
112
|
|
|
109
113
|
## Development Quick Start
|
|
110
114
|
|
|
@@ -602,7 +606,7 @@ See [Package Guide](../../docs/packages/mcp-server.md) for complete setup instru
|
|
|
602
606
|
|
|
603
607
|
## MCP Prompts (Universal Guidance)
|
|
604
608
|
|
|
605
|
-
The MCP server provides
|
|
609
|
+
The MCP server provides 9 built-in prompts that work across all MCP clients:
|
|
606
610
|
|
|
607
611
|
### 1. getting-started
|
|
608
612
|
|
|
@@ -613,28 +617,67 @@ The MCP server provides 2 built-in prompts that work across all MCP clients:
|
|
|
613
617
|
- Authentication setup (framingui-mcp login)
|
|
614
618
|
- Theme exploration workflow
|
|
615
619
|
- Component availability checking
|
|
616
|
-
- 4-step screen generation workflow
|
|
620
|
+
- style-contract preflight plus 4-step screen generation workflow
|
|
617
621
|
- Common mistakes and troubleshooting
|
|
618
622
|
|
|
619
623
|
**When to use**: First-time users, onboarding, workflow overview
|
|
620
624
|
|
|
621
625
|
### 2. screen-workflow
|
|
622
626
|
|
|
623
|
-
**Purpose**:
|
|
627
|
+
**Purpose**: Production workflow with style-contract preflight
|
|
624
628
|
|
|
625
629
|
**Content**:
|
|
626
630
|
|
|
631
|
+
- Step 0: detect the target style contract
|
|
627
632
|
- Step 1/4: get-screen-generation-context
|
|
628
633
|
- Step 2/4: validate-screen-definition
|
|
629
634
|
- Step 3/4: generate_screen
|
|
630
635
|
- Step 4/4: validate-environment
|
|
631
636
|
- Complete examples and troubleshooting
|
|
632
637
|
|
|
633
|
-
**When to use**: Production screen generation
|
|
638
|
+
**When to use**: Production screen generation and `/screen`, `/section`, `/draft` style workflows
|
|
639
|
+
|
|
640
|
+
### 3. responsive-workflow
|
|
641
|
+
|
|
642
|
+
**Purpose**: Responsive optimization workflow behind `/responsive`
|
|
643
|
+
|
|
644
|
+
### 4. a11y-workflow
|
|
645
|
+
|
|
646
|
+
**Purpose**: Accessibility audit workflow behind `/a11y`
|
|
647
|
+
|
|
648
|
+
### 5. theme-swap-workflow
|
|
649
|
+
|
|
650
|
+
**Purpose**: Theme application workflow behind `/theme-swap`
|
|
651
|
+
|
|
652
|
+
### 6. doctor-workflow
|
|
653
|
+
|
|
654
|
+
**Purpose**: Environment diagnosis workflow behind `/doctor` and `/install-check`, including style contract mismatch checks
|
|
655
|
+
|
|
656
|
+
### 7. slash-commands
|
|
657
|
+
|
|
658
|
+
**Purpose**: Slash command catalog for FramingUI design workflows
|
|
659
|
+
|
|
660
|
+
### 8. command-help
|
|
661
|
+
|
|
662
|
+
**Purpose**: Detailed help for one slash command including usage, options, examples, and MCP workflow mapping
|
|
663
|
+
|
|
664
|
+
### 9. update-workflow
|
|
665
|
+
|
|
666
|
+
**Purpose**: Maintenance workflow behind `/update`
|
|
667
|
+
|
|
668
|
+
### CLI adapter export
|
|
669
|
+
|
|
670
|
+
You can export client-oriented slash command adapters from the CLI:
|
|
671
|
+
|
|
672
|
+
```bash
|
|
673
|
+
framingui-mcp commands --client codex --format json
|
|
674
|
+
framingui-mcp commands --client claude-code --format markdown
|
|
675
|
+
framingui-mcp commands --client cursor --command /responsive --format text
|
|
676
|
+
```
|
|
634
677
|
|
|
635
678
|
**Note**: These prompts are platform-agnostic and work with Claude Code, OpenAI Codex, Cursor, Windsurf, and any MCP-compatible client.
|
|
636
679
|
|
|
637
|
-
**Total Prompts**:
|
|
680
|
+
**Total Prompts**: 9
|
|
638
681
|
|
|
639
682
|
### 11. Preview Screen Template
|
|
640
683
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/cli/commands.ts"],"names":[],"mappings":"AAcA,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAYpD"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { renderSlashCommandAdapter, } from '../commands/slash-command-adapters.js';
|
|
2
|
+
function readOption(args, flag) {
|
|
3
|
+
const index = args.indexOf(flag);
|
|
4
|
+
if (index === -1) {
|
|
5
|
+
return undefined;
|
|
6
|
+
}
|
|
7
|
+
return args[index + 1];
|
|
8
|
+
}
|
|
9
|
+
export function commandsCommand(args) {
|
|
10
|
+
const formatArg = readOption(args, '--format') ?? 'text';
|
|
11
|
+
const clientArg = (readOption(args, '--client') ?? 'generic');
|
|
12
|
+
const commandArg = readOption(args, '--command');
|
|
13
|
+
const output = renderSlashCommandAdapter({
|
|
14
|
+
format: formatArg === 'json' || formatArg === 'markdown' ? formatArg : 'text',
|
|
15
|
+
client: clientArg,
|
|
16
|
+
command: commandArg,
|
|
17
|
+
});
|
|
18
|
+
console.log(output);
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=commands.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/cli/commands.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,yBAAyB,GAE1B,MAAM,uCAAuC,CAAC;AAE/C,SAAS,UAAU,CAAC,IAAc,EAAE,IAAY;IAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;QACjB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAc;IAC5C,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC;IACzD,MAAM,SAAS,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,SAAS,CAA8B,CAAC;IAC3F,MAAM,UAAU,GAAG,UAAU,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IAEjD,MAAM,MAAM,GAAG,yBAAyB,CAAC;QACvC,MAAM,EAAE,SAAS,KAAK,MAAM,IAAI,SAAS,KAAK,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM;QAC7E,MAAM,EAAE,SAAS;QACjB,OAAO,EAAE,UAAU;KACpB,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACtB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../../src/cli/help.ts"],"names":[],"mappings":"AAAA,wBAAgB,eAAe,IAAI,MAAM,CA6BxC;AAED,wBAAgB,SAAS,IAAI,IAAI,CAqBhC;AAED,wBAAgB,UAAU,IAAI,IAAI,CAEjC;AAED,wBAAgB,qBAAqB,IAAI,OAAO,CAE/C"}
|
package/dist/cli/help.js
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
export function getCliGuideText() {
|
|
2
|
+
return `FramingUI MCP Server
|
|
3
|
+
|
|
4
|
+
FramingUI is a design-system workflow for generating production-ready UI with MCP-aware tools, prompts, and command metadata.
|
|
5
|
+
|
|
6
|
+
Quick start:
|
|
7
|
+
1. Set up a project: framingui-mcp init
|
|
8
|
+
2. Authenticate: framingui-mcp login
|
|
9
|
+
3. Check status: framingui-mcp status
|
|
10
|
+
4. Inspect commands: framingui-mcp commands --format text
|
|
11
|
+
5. Start MCP server: framingui-mcp server
|
|
12
|
+
|
|
13
|
+
What you get:
|
|
14
|
+
- screen generation workflows
|
|
15
|
+
- responsive optimization guidance
|
|
16
|
+
- accessibility and theme-swap workflows
|
|
17
|
+
- environment diagnosis and install checks
|
|
18
|
+
|
|
19
|
+
Useful commands:
|
|
20
|
+
framingui-mcp help
|
|
21
|
+
framingui-mcp guide
|
|
22
|
+
framingui-mcp commands --command /responsive
|
|
23
|
+
framingui-mcp update --check
|
|
24
|
+
|
|
25
|
+
In MCP clients, use the built-in prompts:
|
|
26
|
+
- getting-started
|
|
27
|
+
- slash-commands
|
|
28
|
+
- command-help
|
|
29
|
+
`;
|
|
30
|
+
}
|
|
31
|
+
export function printHelp() {
|
|
32
|
+
console.log(`Usage: framingui-mcp <command>
|
|
33
|
+
|
|
34
|
+
Commands:
|
|
35
|
+
help Show CLI usage and FramingUI overview
|
|
36
|
+
guide Show first-run onboarding guide
|
|
37
|
+
commands Export slash command metadata for clients or humans
|
|
38
|
+
init Configure a project for FramingUI
|
|
39
|
+
login Authenticate via browser OAuth
|
|
40
|
+
logout Remove saved credentials
|
|
41
|
+
status Show current authentication status
|
|
42
|
+
update Update installed FramingUI packages in a project
|
|
43
|
+
server Start the MCP stdio server explicitly
|
|
44
|
+
-v, --version Print the CLI version
|
|
45
|
+
|
|
46
|
+
Examples:
|
|
47
|
+
framingui-mcp init
|
|
48
|
+
framingui-mcp commands --format markdown
|
|
49
|
+
framingui-mcp commands --command /responsive --format text
|
|
50
|
+
framingui-mcp update --check
|
|
51
|
+
framingui-mcp server`);
|
|
52
|
+
}
|
|
53
|
+
export function printGuide() {
|
|
54
|
+
console.log(getCliGuideText());
|
|
55
|
+
}
|
|
56
|
+
export function isInteractiveTerminal() {
|
|
57
|
+
return Boolean(process.stdin.isTTY && process.stdout.isTTY);
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=help.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/cli/help.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,eAAe;IAC7B,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2BR,CAAC;AACF,CAAC;AAED,MAAM,UAAU,SAAS;IACvB,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;uBAmBS,CAAC,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC9D,CAAC"}
|
package/dist/cli/index.d.ts
CHANGED
package/dist/cli/index.js
CHANGED
|
@@ -1,16 +1,34 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
/**
|
|
3
3
|
* Framingui MCP CLI 라우터
|
|
4
|
-
* 서브커맨드: login, logout, status,
|
|
4
|
+
* 서브커맨드: help, guide, commands, login, logout, status, init, update, server
|
|
5
5
|
*/
|
|
6
6
|
const command = process.argv[2];
|
|
7
|
+
const args = process.argv.slice(3);
|
|
7
8
|
switch (command) {
|
|
9
|
+
case '--help':
|
|
10
|
+
case '-h':
|
|
11
|
+
case 'help': {
|
|
12
|
+
const { printHelp } = await import('./help.js');
|
|
13
|
+
printHelp();
|
|
14
|
+
break;
|
|
15
|
+
}
|
|
16
|
+
case 'guide': {
|
|
17
|
+
const { printGuide } = await import('./help.js');
|
|
18
|
+
printGuide();
|
|
19
|
+
break;
|
|
20
|
+
}
|
|
8
21
|
case '--version':
|
|
9
22
|
case '-v': {
|
|
10
23
|
const { printVersion } = await import('./version.js');
|
|
11
24
|
printVersion();
|
|
12
25
|
break;
|
|
13
26
|
}
|
|
27
|
+
case 'commands': {
|
|
28
|
+
const { commandsCommand } = await import('./commands.js');
|
|
29
|
+
commandsCommand(args);
|
|
30
|
+
break;
|
|
31
|
+
}
|
|
14
32
|
case 'login': {
|
|
15
33
|
const { loginCommand } = await import('./login.js');
|
|
16
34
|
try {
|
|
@@ -37,11 +55,37 @@ switch (command) {
|
|
|
37
55
|
await initCommand();
|
|
38
56
|
break;
|
|
39
57
|
}
|
|
40
|
-
|
|
41
|
-
|
|
58
|
+
case 'update': {
|
|
59
|
+
const { updateCommand } = await import('./update.js');
|
|
60
|
+
try {
|
|
61
|
+
updateCommand(args);
|
|
62
|
+
}
|
|
63
|
+
catch (err) {
|
|
64
|
+
console.error(err instanceof Error ? err.message : String(err));
|
|
65
|
+
process.exit(1);
|
|
66
|
+
}
|
|
67
|
+
break;
|
|
68
|
+
}
|
|
69
|
+
case 'server': {
|
|
42
70
|
await import('../index.js');
|
|
43
71
|
break;
|
|
44
72
|
}
|
|
73
|
+
case undefined: {
|
|
74
|
+
const { isInteractiveTerminal, printGuide } = await import('./help.js');
|
|
75
|
+
if (isInteractiveTerminal()) {
|
|
76
|
+
printGuide();
|
|
77
|
+
break;
|
|
78
|
+
}
|
|
79
|
+
await import('../index.js');
|
|
80
|
+
break;
|
|
81
|
+
}
|
|
82
|
+
default: {
|
|
83
|
+
const { printHelp } = await import('./help.js');
|
|
84
|
+
console.error(`Unknown command: ${command}`);
|
|
85
|
+
printHelp();
|
|
86
|
+
process.exit(1);
|
|
87
|
+
break;
|
|
88
|
+
}
|
|
45
89
|
}
|
|
46
90
|
export {};
|
|
47
91
|
//# sourceMappingURL=index.js.map
|
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;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
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;AA2QH,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAkFjD"}
|
package/dist/cli/init.js
CHANGED
|
@@ -9,6 +9,7 @@ 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';
|
|
12
13
|
// ─── 상수 ──────────────────────────────────────────────
|
|
13
14
|
const FRAMINGUI_UI_CONTENT_PATH = './node_modules/@framingui/ui/dist/**/*.{js,mjs}';
|
|
14
15
|
const FRAMINGUI_STYLE_IMPORT = "@import '@framingui/ui/styles';";
|
|
@@ -56,20 +57,9 @@ function detectFramework(cwd) {
|
|
|
56
57
|
}
|
|
57
58
|
return null;
|
|
58
59
|
}
|
|
59
|
-
|
|
60
|
-
if (fileExists(path.join(cwd, 'pnpm-lock.yaml'))) {
|
|
61
|
-
return 'pnpm';
|
|
62
|
-
}
|
|
63
|
-
if (fileExists(path.join(cwd, 'yarn.lock'))) {
|
|
64
|
-
return 'yarn';
|
|
65
|
-
}
|
|
66
|
-
if (fileExists(path.join(cwd, 'bun.lock')) || fileExists(path.join(cwd, 'bun.lockb'))) {
|
|
67
|
-
return 'bun';
|
|
68
|
-
}
|
|
69
|
-
return 'npm';
|
|
70
|
-
}
|
|
60
|
+
// ─── Step 2: 패키지 매니저 감지 및 설치 ─────────────────
|
|
71
61
|
function installPackages(cwd, pm) {
|
|
72
|
-
const cmd =
|
|
62
|
+
const cmd = buildAddCommand(pm, PACKAGES_TO_INSTALL);
|
|
73
63
|
logDetail(cmd);
|
|
74
64
|
execSync(cmd, { cwd, stdio: 'inherit' });
|
|
75
65
|
}
|
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;AAC3F,OAAO,EAAE,2BAA2B,EAAkB,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export type PackageManager = 'pnpm' | 'yarn' | 'bun' | 'npm';
|
|
2
|
+
export declare function detectPackageManager(cwd: string): PackageManager;
|
|
3
|
+
export declare function buildAddCommand(pm: PackageManager, packages: string[]): string;
|
|
4
|
+
export declare function buildUpdateCommand(pm: PackageManager, packages: string[]): string;
|
|
5
|
+
//# sourceMappingURL=package-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-manager.d.ts","sourceRoot":"","sources":["../../src/cli/package-manager.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,CAAC;AAM7D,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAWhE;AAED,wBAAgB,eAAe,CAAC,EAAE,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,CAE9E;AAED,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,CAYjF"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
function fileExists(filePath) {
|
|
4
|
+
return fs.existsSync(filePath);
|
|
5
|
+
}
|
|
6
|
+
export function detectPackageManager(cwd) {
|
|
7
|
+
if (fileExists(path.join(cwd, 'pnpm-lock.yaml'))) {
|
|
8
|
+
return 'pnpm';
|
|
9
|
+
}
|
|
10
|
+
if (fileExists(path.join(cwd, 'yarn.lock'))) {
|
|
11
|
+
return 'yarn';
|
|
12
|
+
}
|
|
13
|
+
if (fileExists(path.join(cwd, 'bun.lock')) || fileExists(path.join(cwd, 'bun.lockb'))) {
|
|
14
|
+
return 'bun';
|
|
15
|
+
}
|
|
16
|
+
return 'npm';
|
|
17
|
+
}
|
|
18
|
+
export function buildAddCommand(pm, packages) {
|
|
19
|
+
return `${pm} add ${packages.join(' ')}`;
|
|
20
|
+
}
|
|
21
|
+
export function buildUpdateCommand(pm, packages) {
|
|
22
|
+
switch (pm) {
|
|
23
|
+
case 'pnpm':
|
|
24
|
+
return `pnpm up ${packages.join(' ')}`;
|
|
25
|
+
case 'yarn':
|
|
26
|
+
return `yarn up ${packages.join(' ')}`;
|
|
27
|
+
case 'bun':
|
|
28
|
+
return `bun update ${packages.join(' ')}`;
|
|
29
|
+
case 'npm':
|
|
30
|
+
default:
|
|
31
|
+
return `npm install ${packages.map(pkg => `${pkg}@latest`).join(' ')}`;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=package-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-manager.js","sourceRoot":"","sources":["../../src/cli/package-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAI7B,SAAS,UAAU,CAAC,QAAgB;IAClC,OAAO,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,GAAW;IAC9C,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC,EAAE,CAAC;QACjD,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC;QAC5C,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC;QACtF,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,EAAkB,EAAE,QAAkB;IACpE,OAAO,GAAG,EAAE,QAAQ,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,EAAkB,EAAE,QAAkB;IACvE,QAAQ,EAAE,EAAE,CAAC;QACX,KAAK,MAAM;YACT,OAAO,WAAW,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACzC,KAAK,MAAM;YACT,OAAO,WAAW,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACzC,KAAK,KAAK;YACR,OAAO,cAAc,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5C,KAAK,KAAK,CAAC;QACX;YACE,OAAO,eAAe,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IAC3E,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare function getInstalledFraminguiPackages(cwd: string): string[];
|
|
2
|
+
export declare function getUpdatePlan(cwd: string): {
|
|
3
|
+
packageManager: string;
|
|
4
|
+
packages: string[];
|
|
5
|
+
command: string | null;
|
|
6
|
+
};
|
|
7
|
+
export declare function updateCommand(args: string[]): void;
|
|
8
|
+
//# sourceMappingURL=update.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/cli/update.ts"],"names":[],"mappings":"AA2BA,wBAAgB,6BAA6B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CASnE;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG;IAC1C,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB,CASA;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAsBlD"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { execSync } from 'node:child_process';
|
|
4
|
+
import { buildUpdateCommand, detectPackageManager } from './package-manager.js';
|
|
5
|
+
const UPDATE_CANDIDATES = [
|
|
6
|
+
'@framingui/ui',
|
|
7
|
+
'@framingui/core',
|
|
8
|
+
'@framingui/tokens',
|
|
9
|
+
'@framingui/mcp-server',
|
|
10
|
+
'tailwindcss-animate',
|
|
11
|
+
];
|
|
12
|
+
function findPackageJsonPath(cwd) {
|
|
13
|
+
const direct = path.join(cwd, 'package.json');
|
|
14
|
+
if (fs.existsSync(direct)) {
|
|
15
|
+
return direct;
|
|
16
|
+
}
|
|
17
|
+
throw new Error(`No package.json found in ${cwd}. Run this inside a project directory.`);
|
|
18
|
+
}
|
|
19
|
+
export function getInstalledFraminguiPackages(cwd) {
|
|
20
|
+
const packageJsonPath = findPackageJsonPath(cwd);
|
|
21
|
+
const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'));
|
|
22
|
+
const installed = new Set([
|
|
23
|
+
...Object.keys(packageJson.dependencies ?? {}),
|
|
24
|
+
...Object.keys(packageJson.devDependencies ?? {}),
|
|
25
|
+
]);
|
|
26
|
+
return UPDATE_CANDIDATES.filter(pkg => installed.has(pkg));
|
|
27
|
+
}
|
|
28
|
+
export function getUpdatePlan(cwd) {
|
|
29
|
+
const packageManager = detectPackageManager(cwd);
|
|
30
|
+
const packages = getInstalledFraminguiPackages(cwd);
|
|
31
|
+
return {
|
|
32
|
+
packageManager,
|
|
33
|
+
packages,
|
|
34
|
+
command: packages.length > 0 ? buildUpdateCommand(packageManager, packages) : null,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
export function updateCommand(args) {
|
|
38
|
+
const cwdIndex = args.indexOf('--cwd');
|
|
39
|
+
const cwd = cwdIndex === -1 ? process.cwd() : path.resolve(args[cwdIndex + 1] ?? process.cwd());
|
|
40
|
+
const checkOnly = args.includes('--check');
|
|
41
|
+
const plan = getUpdatePlan(cwd);
|
|
42
|
+
if (!plan.command) {
|
|
43
|
+
throw new Error(`No installed FramingUI packages found in ${cwd}. Run \`framingui-mcp init\` or install @framingui/ui first.`);
|
|
44
|
+
}
|
|
45
|
+
console.log(`Detected package manager: ${plan.packageManager}`);
|
|
46
|
+
console.log(`Packages: ${plan.packages.join(', ')}`);
|
|
47
|
+
console.log(`Command: ${plan.command}`);
|
|
48
|
+
if (checkOnly) {
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
execSync(plan.command, { cwd, stdio: 'inherit' });
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=update.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/cli/update.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export type SlashCommandAdapterFormat = 'json' | 'markdown' | 'text';
|
|
2
|
+
export type SlashCommandAdapterClient = 'generic' | 'codex' | 'claude-code' | 'cursor';
|
|
3
|
+
export interface SlashCommandAdapterOptions {
|
|
4
|
+
format: SlashCommandAdapterFormat;
|
|
5
|
+
client?: SlashCommandAdapterClient;
|
|
6
|
+
command?: string;
|
|
7
|
+
}
|
|
8
|
+
export declare function renderSlashCommandAdapter(options: SlashCommandAdapterOptions): string;
|
|
9
|
+
//# sourceMappingURL=slash-command-adapters.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slash-command-adapters.d.ts","sourceRoot":"","sources":["../../src/commands/slash-command-adapters.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,yBAAyB,GAAG,MAAM,GAAG,UAAU,GAAG,MAAM,CAAC;AACrE,MAAM,MAAM,yBAAyB,GAAG,SAAS,GAAG,OAAO,GAAG,aAAa,GAAG,QAAQ,CAAC;AAEvF,MAAM,WAAW,0BAA0B;IACzC,MAAM,EAAE,yBAAyB,CAAC;IAClC,MAAM,CAAC,EAAE,yBAAyB,CAAC;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AA2HD,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,0BAA0B,GAAG,MAAM,CAyBrF"}
|