@mandujs/cli 0.12.2 → 0.13.1

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 (51) hide show
  1. package/README.ko.md +234 -234
  2. package/README.md +354 -354
  3. package/package.json +2 -2
  4. package/src/commands/contract.ts +173 -173
  5. package/src/commands/dev.ts +8 -68
  6. package/src/commands/doctor.ts +27 -27
  7. package/src/commands/guard-arch.ts +303 -303
  8. package/src/commands/guard-check.ts +3 -3
  9. package/src/commands/monitor.ts +300 -300
  10. package/src/commands/openapi.ts +107 -107
  11. package/src/commands/registry.ts +367 -357
  12. package/src/commands/routes.ts +228 -228
  13. package/src/commands/start.ts +184 -0
  14. package/src/errors/codes.ts +35 -35
  15. package/src/errors/index.ts +2 -2
  16. package/src/errors/messages.ts +143 -143
  17. package/src/hooks/index.ts +17 -17
  18. package/src/hooks/preaction.ts +256 -256
  19. package/src/main.ts +37 -34
  20. package/src/terminal/banner.ts +166 -166
  21. package/src/terminal/help.ts +306 -306
  22. package/src/terminal/index.ts +71 -71
  23. package/src/terminal/output.ts +295 -295
  24. package/src/terminal/palette.ts +30 -30
  25. package/src/terminal/progress.ts +327 -327
  26. package/src/terminal/stream-writer.ts +214 -214
  27. package/src/terminal/table.ts +354 -354
  28. package/src/terminal/theme.ts +142 -142
  29. package/src/util/bun.ts +6 -6
  30. package/src/util/fs.ts +23 -23
  31. package/src/util/handlers.ts +96 -0
  32. package/src/util/manifest.ts +52 -52
  33. package/src/util/output.ts +22 -22
  34. package/src/util/port.ts +71 -71
  35. package/templates/default/AGENTS.md +96 -96
  36. package/templates/default/app/api/health/route.ts +13 -13
  37. package/templates/default/app/globals.css +49 -49
  38. package/templates/default/app/layout.tsx +27 -27
  39. package/templates/default/app/page.tsx +38 -38
  40. package/templates/default/package.json +1 -0
  41. package/templates/default/src/client/shared/lib/utils.ts +16 -16
  42. package/templates/default/src/client/shared/ui/button.tsx +57 -57
  43. package/templates/default/src/client/shared/ui/card.tsx +78 -78
  44. package/templates/default/src/client/shared/ui/index.ts +21 -21
  45. package/templates/default/src/client/shared/ui/input.tsx +24 -24
  46. package/templates/default/tests/example.test.ts +58 -58
  47. package/templates/default/tests/helpers.ts +52 -52
  48. package/templates/default/tests/setup.ts +9 -9
  49. package/templates/default/tsconfig.json +12 -14
  50. package/templates/default/apps/server/main.ts +0 -67
  51. package/templates/default/apps/web/entry.tsx +0 -35
package/README.ko.md CHANGED
@@ -1,234 +1,234 @@
1
- <p align="center">
2
- <img src="https://raw.githubusercontent.com/konamgil/mandu/main/mandu_only_simbol.png" alt="Mandu" width="200" />
3
- </p>
4
-
5
- <h1 align="center">@mandujs/cli</h1>
6
-
7
- <p align="center">
8
- <strong>Agent-Native Fullstack Framework CLI</strong><br/>
9
- 에이전트가 코딩해도 아키텍처가 무너지지 않는 개발 OS
10
- </p>
11
-
12
- <p align="center">
13
- <a href="./README.md"><strong>English</strong></a> | 한국어
14
- </p>
15
-
16
- ## 설치
17
-
18
- ```bash
19
- # Bun 필수
20
- bun add -D @mandujs/cli
21
- ```
22
-
23
- ## 빠른 시작
24
-
25
- ```bash
26
- # 새 프로젝트 생성
27
- bunx @mandujs/cli init my-app
28
- cd my-app
29
-
30
- # 개발 서버 시작
31
- bun run dev
32
- ```
33
-
34
- ## 명령어
35
-
36
- ### `mandu init <project-name>`
37
-
38
- 새 Mandu 프로젝트를 생성합니다.
39
-
40
- ```bash
41
- bunx @mandujs/cli init my-app
42
- ```
43
-
44
- 생성되는 구조:
45
- ```
46
- my-app/
47
- ├── app/ # FS Routes
48
- │ └── page.tsx # /
49
- ├── src/ # 아키텍처 레이어
50
- │ ├── client/ # 클라이언트 (FSD)
51
- │ │ ├── app/
52
- │ │ ├── pages/
53
- │ │ ├── widgets/
54
- │ │ ├── features/
55
- │ │ ├── entities/
56
- │ │ └── shared/
57
- │ ├── server/ # 서버 (Clean)
58
- │ │ ├── api/
59
- │ │ ├── application/
60
- │ │ ├── domain/
61
- │ │ ├── infra/
62
- │ │ └── core/
63
- │ └── shared/ # 공용
64
- │ ├── contracts/ # client-safe 계약
65
- │ ├── types/
66
- │ ├── utils/
67
- │ │ ├── client/ # 클라이언트 safe 유틸
68
- │ │ └── server/ # 서버 전용 유틸
69
- │ ├── schema/ # 서버 전용 스키마
70
- │ └── env/ # 서버 전용 환경
71
- ├── apps/
72
- │ ├── server/main.ts # 서버 진입점
73
- │ └── web/entry.tsx # 클라이언트 진입점
74
- ├── spec/
75
- │ └── routes.manifest.json # SSOT - 라우트 정의
76
- ├── package.json
77
- └── tsconfig.json
78
- ```
79
-
80
- ### `mandu dev`
81
-
82
- 개발 서버를 시작합니다 (HMR 지원).
83
-
84
- ```bash
85
- bun run dev
86
- # 또는
87
- bunx mandu dev
88
- ```
89
-
90
- ### `mandu spec`
91
-
92
- spec 파일을 검증하고 lock 파일을 갱신합니다.
93
-
94
- ```bash
95
- bun run spec
96
- ```
97
-
98
- ### `mandu generate`
99
-
100
- spec 기반으로 코드를 생성합니다.
101
-
102
- ```bash
103
- bun run generate
104
- ```
105
-
106
- ### `mandu guard`
107
-
108
- 아키텍처 규칙을 검사합니다. (기본: mandu 프리셋)
109
-
110
- ```bash
111
- bun run guard
112
-
113
- # 프리셋 변경
114
- bunx mandu guard --preset fsd
115
-
116
- # CI 모드 (warning도 실패 처리)
117
- bunx mandu guard --ci
118
- ```
119
-
120
- ### `mandu guard legacy`
121
-
122
- 레거시 Spec Guard 검사 + 자동 수정입니다.
123
-
124
- ```bash
125
- bunx mandu guard legacy
126
-
127
- # 자동 수정 비활성화
128
- bunx mandu guard legacy --no-auto-correct
129
- ```
130
-
131
- 자동 수정 가능한 규칙(legacy):
132
- - `SPEC_HASH_MISMATCH` → lock 파일 갱신
133
- - `GENERATED_MANUAL_EDIT` → 코드 재생성
134
- - `SLOT_NOT_FOUND` → slot 파일 생성
135
-
136
- ### `mandu contract build`
137
-
138
- 계약 레지스트리(`.mandu/contracts.json`)를 생성합니다.
139
-
140
- ```bash
141
- bunx mandu contract build
142
- ```
143
-
144
- ### `mandu contract diff`
145
-
146
- 계약 변경사항(major/minor/patch)을 비교합니다.
147
-
148
- ```bash
149
- bunx mandu contract diff
150
- ```
151
-
152
- ## Spec 파일 작성
153
-
154
- `spec/routes.manifest.json`이 모든 라우트의 단일 진실 공급원(SSOT)입니다.
155
-
156
- ```json
157
- {
158
- "version": "1.0.0",
159
- "routes": [
160
- {
161
- "id": "getUsers",
162
- "pattern": "/api/users",
163
- "kind": "api",
164
- "module": "apps/server/api/users.ts"
165
- },
166
- {
167
- "id": "homePage",
168
- "pattern": "/",
169
- "kind": "page",
170
- "module": "apps/server/pages/home.ts",
171
- "componentModule": "apps/web/pages/Home.tsx"
172
- }
173
- ]
174
- }
175
- ```
176
-
177
- ### Slot 시스템 (v0.2.0+)
178
-
179
- 비즈니스 로직을 분리하려면 `slotModule`을 추가합니다:
180
-
181
- ```json
182
- {
183
- "id": "getUsers",
184
- "pattern": "/api/users",
185
- "kind": "api",
186
- "module": "apps/server/api/users.generated.ts",
187
- "slotModule": "apps/server/api/users.slot.ts"
188
- }
189
- ```
190
-
191
- - `*.generated.ts` - 프레임워크가 관리 (수정 금지)
192
- - `*.slot.ts` - 개발자가 작성하는 비즈니스 로직
193
-
194
- ## 개발 워크플로우
195
-
196
- ```bash
197
- # 1. spec 수정
198
- # 2. spec 검증 및 lock 갱신
199
- bun run spec
200
-
201
- # 3. 코드 생성
202
- bun run generate
203
-
204
- # 4. 아키텍처 검사
205
- bun run guard
206
-
207
- # 5. 테스트
208
- bun test
209
-
210
- # 6. 개발 서버
211
- bun run dev
212
- ```
213
-
214
- ## 테스트
215
-
216
- Bun 테스트 프레임워크를 기본 지원합니다.
217
-
218
- ```bash
219
- bun test # 테스트 실행
220
- bun test --watch # 감시 모드
221
- ```
222
-
223
- ## 요구 사항
224
-
225
- - Bun >= 1.0.0
226
- - React >= 19.0.0
227
-
228
- ## 관련 패키지
229
-
230
- - [@mandujs/core](https://www.npmjs.com/package/@mandujs/core) - 핵심 런타임
231
-
232
- ## 라이선스
233
-
234
- MIT
1
+ <p align="center">
2
+ <img src="https://raw.githubusercontent.com/konamgil/mandu/main/mandu_only_simbol.png" alt="Mandu" width="200" />
3
+ </p>
4
+
5
+ <h1 align="center">@mandujs/cli</h1>
6
+
7
+ <p align="center">
8
+ <strong>Agent-Native Fullstack Framework CLI</strong><br/>
9
+ 에이전트가 코딩해도 아키텍처가 무너지지 않는 개발 OS
10
+ </p>
11
+
12
+ <p align="center">
13
+ <a href="./README.md"><strong>English</strong></a> | 한국어
14
+ </p>
15
+
16
+ ## 설치
17
+
18
+ ```bash
19
+ # Bun 필수
20
+ bun add -D @mandujs/cli
21
+ ```
22
+
23
+ ## 빠른 시작
24
+
25
+ ```bash
26
+ # 새 프로젝트 생성
27
+ bunx @mandujs/cli init my-app
28
+ cd my-app
29
+
30
+ # 개발 서버 시작
31
+ bun run dev
32
+ ```
33
+
34
+ ## 명령어
35
+
36
+ ### `mandu init <project-name>`
37
+
38
+ 새 Mandu 프로젝트를 생성합니다.
39
+
40
+ ```bash
41
+ bunx @mandujs/cli init my-app
42
+ ```
43
+
44
+ 생성되는 구조:
45
+ ```
46
+ my-app/
47
+ ├── app/ # FS Routes
48
+ │ └── page.tsx # /
49
+ ├── src/ # 아키텍처 레이어
50
+ │ ├── client/ # 클라이언트 (FSD)
51
+ │ │ ├── app/
52
+ │ │ ├── pages/
53
+ │ │ ├── widgets/
54
+ │ │ ├── features/
55
+ │ │ ├── entities/
56
+ │ │ └── shared/
57
+ │ ├── server/ # 서버 (Clean)
58
+ │ │ ├── api/
59
+ │ │ ├── application/
60
+ │ │ ├── domain/
61
+ │ │ ├── infra/
62
+ │ │ └── core/
63
+ │ └── shared/ # 공용
64
+ │ ├── contracts/ # client-safe 계약
65
+ │ ├── types/
66
+ │ ├── utils/
67
+ │ │ ├── client/ # 클라이언트 safe 유틸
68
+ │ │ └── server/ # 서버 전용 유틸
69
+ │ ├── schema/ # 서버 전용 스키마
70
+ │ └── env/ # 서버 전용 환경
71
+ ├── apps/
72
+ │ ├── server/main.ts # 서버 진입점
73
+ │ └── web/entry.tsx # 클라이언트 진입점
74
+ ├── spec/
75
+ │ └── routes.manifest.json # SSOT - 라우트 정의
76
+ ├── package.json
77
+ └── tsconfig.json
78
+ ```
79
+
80
+ ### `mandu dev`
81
+
82
+ 개발 서버를 시작합니다 (HMR 지원).
83
+
84
+ ```bash
85
+ bun run dev
86
+ # 또는
87
+ bunx mandu dev
88
+ ```
89
+
90
+ ### `mandu spec`
91
+
92
+ spec 파일을 검증하고 lock 파일을 갱신합니다.
93
+
94
+ ```bash
95
+ bun run spec
96
+ ```
97
+
98
+ ### `mandu generate`
99
+
100
+ spec 기반으로 코드를 생성합니다.
101
+
102
+ ```bash
103
+ bun run generate
104
+ ```
105
+
106
+ ### `mandu guard`
107
+
108
+ 아키텍처 규칙을 검사합니다. (기본: mandu 프리셋)
109
+
110
+ ```bash
111
+ bun run guard
112
+
113
+ # 프리셋 변경
114
+ bunx mandu guard --preset fsd
115
+
116
+ # CI 모드 (warning도 실패 처리)
117
+ bunx mandu guard --ci
118
+ ```
119
+
120
+ ### `mandu guard legacy`
121
+
122
+ 레거시 Spec Guard 검사 + 자동 수정입니다.
123
+
124
+ ```bash
125
+ bunx mandu guard legacy
126
+
127
+ # 자동 수정 비활성화
128
+ bunx mandu guard legacy --no-auto-correct
129
+ ```
130
+
131
+ 자동 수정 가능한 규칙(legacy):
132
+ - `SPEC_HASH_MISMATCH` → lock 파일 갱신
133
+ - `GENERATED_MANUAL_EDIT` → 코드 재생성
134
+ - `SLOT_NOT_FOUND` → slot 파일 생성
135
+
136
+ ### `mandu contract build`
137
+
138
+ 계약 레지스트리(`.mandu/contracts.json`)를 생성합니다.
139
+
140
+ ```bash
141
+ bunx mandu contract build
142
+ ```
143
+
144
+ ### `mandu contract diff`
145
+
146
+ 계약 변경사항(major/minor/patch)을 비교합니다.
147
+
148
+ ```bash
149
+ bunx mandu contract diff
150
+ ```
151
+
152
+ ## Spec 파일 작성
153
+
154
+ `spec/routes.manifest.json`이 모든 라우트의 단일 진실 공급원(SSOT)입니다.
155
+
156
+ ```json
157
+ {
158
+ "version": "1.0.0",
159
+ "routes": [
160
+ {
161
+ "id": "getUsers",
162
+ "pattern": "/api/users",
163
+ "kind": "api",
164
+ "module": "apps/server/api/users.ts"
165
+ },
166
+ {
167
+ "id": "homePage",
168
+ "pattern": "/",
169
+ "kind": "page",
170
+ "module": "apps/server/pages/home.ts",
171
+ "componentModule": "apps/web/pages/Home.tsx"
172
+ }
173
+ ]
174
+ }
175
+ ```
176
+
177
+ ### Slot 시스템 (v0.2.0+)
178
+
179
+ 비즈니스 로직을 분리하려면 `slotModule`을 추가합니다:
180
+
181
+ ```json
182
+ {
183
+ "id": "getUsers",
184
+ "pattern": "/api/users",
185
+ "kind": "api",
186
+ "module": "apps/server/api/users.generated.ts",
187
+ "slotModule": "apps/server/api/users.slot.ts"
188
+ }
189
+ ```
190
+
191
+ - `*.generated.ts` - 프레임워크가 관리 (수정 금지)
192
+ - `*.slot.ts` - 개발자가 작성하는 비즈니스 로직
193
+
194
+ ## 개발 워크플로우
195
+
196
+ ```bash
197
+ # 1. spec 수정
198
+ # 2. spec 검증 및 lock 갱신
199
+ bun run spec
200
+
201
+ # 3. 코드 생성
202
+ bun run generate
203
+
204
+ # 4. 아키텍처 검사
205
+ bun run guard
206
+
207
+ # 5. 테스트
208
+ bun test
209
+
210
+ # 6. 개발 서버
211
+ bun run dev
212
+ ```
213
+
214
+ ## 테스트
215
+
216
+ Bun 테스트 프레임워크를 기본 지원합니다.
217
+
218
+ ```bash
219
+ bun test # 테스트 실행
220
+ bun test --watch # 감시 모드
221
+ ```
222
+
223
+ ## 요구 사항
224
+
225
+ - Bun >= 1.0.0
226
+ - React >= 19.0.0
227
+
228
+ ## 관련 패키지
229
+
230
+ - [@mandujs/core](https://www.npmjs.com/package/@mandujs/core) - 핵심 런타임
231
+
232
+ ## 라이선스
233
+
234
+ MIT