nitrostack 1.0.0

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 (290) hide show
  1. package/CHANGELOG.md +227 -0
  2. package/CONTRIBUTING.md +182 -0
  3. package/LICENSE +201 -0
  4. package/LICENSE_URLS_UPDATE_COMPLETE.md +388 -0
  5. package/NOTICE +153 -0
  6. package/README.md +571 -0
  7. package/dist/auth/api-key.d.ts +118 -0
  8. package/dist/auth/api-key.d.ts.map +1 -0
  9. package/dist/auth/api-key.js +168 -0
  10. package/dist/auth/api-key.js.map +1 -0
  11. package/dist/auth/client.d.ts +151 -0
  12. package/dist/auth/client.d.ts.map +1 -0
  13. package/dist/auth/client.js +330 -0
  14. package/dist/auth/client.js.map +1 -0
  15. package/dist/auth/index.d.ts +30 -0
  16. package/dist/auth/index.d.ts.map +1 -0
  17. package/dist/auth/index.js +43 -0
  18. package/dist/auth/index.js.map +1 -0
  19. package/dist/auth/middleware.d.ts +95 -0
  20. package/dist/auth/middleware.d.ts.map +1 -0
  21. package/dist/auth/middleware.js +260 -0
  22. package/dist/auth/middleware.js.map +1 -0
  23. package/dist/auth/pkce.d.ts +53 -0
  24. package/dist/auth/pkce.d.ts.map +1 -0
  25. package/dist/auth/pkce.js +105 -0
  26. package/dist/auth/pkce.js.map +1 -0
  27. package/dist/auth/quick-setup.d.ts +94 -0
  28. package/dist/auth/quick-setup.d.ts.map +1 -0
  29. package/dist/auth/quick-setup.js +210 -0
  30. package/dist/auth/quick-setup.js.map +1 -0
  31. package/dist/auth/server-integration.d.ts +97 -0
  32. package/dist/auth/server-integration.d.ts.map +1 -0
  33. package/dist/auth/server-integration.js +182 -0
  34. package/dist/auth/server-integration.js.map +1 -0
  35. package/dist/auth/server-metadata.d.ts +51 -0
  36. package/dist/auth/server-metadata.d.ts.map +1 -0
  37. package/dist/auth/server-metadata.js +106 -0
  38. package/dist/auth/server-metadata.js.map +1 -0
  39. package/dist/auth/simple-jwt.d.ts +88 -0
  40. package/dist/auth/simple-jwt.d.ts.map +1 -0
  41. package/dist/auth/simple-jwt.js +152 -0
  42. package/dist/auth/simple-jwt.js.map +1 -0
  43. package/dist/auth/token-store.d.ts +104 -0
  44. package/dist/auth/token-store.d.ts.map +1 -0
  45. package/dist/auth/token-store.js +205 -0
  46. package/dist/auth/token-store.js.map +1 -0
  47. package/dist/auth/token-validation.d.ts +47 -0
  48. package/dist/auth/token-validation.d.ts.map +1 -0
  49. package/dist/auth/token-validation.js +237 -0
  50. package/dist/auth/token-validation.js.map +1 -0
  51. package/dist/auth/types.d.ts +215 -0
  52. package/dist/auth/types.d.ts.map +1 -0
  53. package/dist/auth/types.js +6 -0
  54. package/dist/auth/types.js.map +1 -0
  55. package/dist/cli/commands/build.d.ts +6 -0
  56. package/dist/cli/commands/build.d.ts.map +1 -0
  57. package/dist/cli/commands/build.js +104 -0
  58. package/dist/cli/commands/build.js.map +1 -0
  59. package/dist/cli/commands/dev.d.ts +7 -0
  60. package/dist/cli/commands/dev.d.ts.map +1 -0
  61. package/dist/cli/commands/dev.js +312 -0
  62. package/dist/cli/commands/dev.js.map +1 -0
  63. package/dist/cli/commands/generate-types.d.ts +8 -0
  64. package/dist/cli/commands/generate-types.d.ts.map +1 -0
  65. package/dist/cli/commands/generate-types.js +220 -0
  66. package/dist/cli/commands/generate-types.js.map +1 -0
  67. package/dist/cli/commands/generate.d.ts +5 -0
  68. package/dist/cli/commands/generate.d.ts.map +1 -0
  69. package/dist/cli/commands/generate.js +365 -0
  70. package/dist/cli/commands/generate.js.map +1 -0
  71. package/dist/cli/commands/init.d.ts +7 -0
  72. package/dist/cli/commands/init.d.ts.map +1 -0
  73. package/dist/cli/commands/init.js +365 -0
  74. package/dist/cli/commands/init.js.map +1 -0
  75. package/dist/cli/commands/start.d.ts +6 -0
  76. package/dist/cli/commands/start.d.ts.map +1 -0
  77. package/dist/cli/commands/start.js +61 -0
  78. package/dist/cli/commands/start.js.map +1 -0
  79. package/dist/cli/index.d.ts +3 -0
  80. package/dist/cli/index.d.ts.map +1 -0
  81. package/dist/cli/index.js +47 -0
  82. package/dist/cli/index.js.map +1 -0
  83. package/dist/cli/mcp-dev-wrapper.d.ts +3 -0
  84. package/dist/cli/mcp-dev-wrapper.d.ts.map +1 -0
  85. package/dist/cli/mcp-dev-wrapper.js +116 -0
  86. package/dist/cli/mcp-dev-wrapper.js.map +1 -0
  87. package/dist/core/apikey-module.d.ts +69 -0
  88. package/dist/core/apikey-module.d.ts.map +1 -0
  89. package/dist/core/apikey-module.js +114 -0
  90. package/dist/core/apikey-module.js.map +1 -0
  91. package/dist/core/app-decorator.d.ts +58 -0
  92. package/dist/core/app-decorator.d.ts.map +1 -0
  93. package/dist/core/app-decorator.js +261 -0
  94. package/dist/core/app-decorator.js.map +1 -0
  95. package/dist/core/builders.d.ts +38 -0
  96. package/dist/core/builders.d.ts.map +1 -0
  97. package/dist/core/builders.js +129 -0
  98. package/dist/core/builders.js.map +1 -0
  99. package/dist/core/component.d.ts +105 -0
  100. package/dist/core/component.d.ts.map +1 -0
  101. package/dist/core/component.js +182 -0
  102. package/dist/core/component.js.map +1 -0
  103. package/dist/core/config-module.d.ts +55 -0
  104. package/dist/core/config-module.d.ts.map +1 -0
  105. package/dist/core/config-module.js +94 -0
  106. package/dist/core/config-module.js.map +1 -0
  107. package/dist/core/decorators/cache.decorator.d.ts +61 -0
  108. package/dist/core/decorators/cache.decorator.d.ts.map +1 -0
  109. package/dist/core/decorators/cache.decorator.js +115 -0
  110. package/dist/core/decorators/cache.decorator.js.map +1 -0
  111. package/dist/core/decorators/health-check.decorator.d.ts +80 -0
  112. package/dist/core/decorators/health-check.decorator.d.ts.map +1 -0
  113. package/dist/core/decorators/health-check.decorator.js +153 -0
  114. package/dist/core/decorators/health-check.decorator.js.map +1 -0
  115. package/dist/core/decorators/rate-limit.decorator.d.ts +62 -0
  116. package/dist/core/decorators/rate-limit.decorator.d.ts.map +1 -0
  117. package/dist/core/decorators/rate-limit.decorator.js +129 -0
  118. package/dist/core/decorators/rate-limit.decorator.js.map +1 -0
  119. package/dist/core/decorators.d.ts +151 -0
  120. package/dist/core/decorators.d.ts.map +1 -0
  121. package/dist/core/decorators.js +142 -0
  122. package/dist/core/decorators.js.map +1 -0
  123. package/dist/core/di/container.d.ts +42 -0
  124. package/dist/core/di/container.d.ts.map +1 -0
  125. package/dist/core/di/container.js +76 -0
  126. package/dist/core/di/container.js.map +1 -0
  127. package/dist/core/di/injectable.decorator.d.ts +35 -0
  128. package/dist/core/di/injectable.decorator.d.ts.map +1 -0
  129. package/dist/core/di/injectable.decorator.js +57 -0
  130. package/dist/core/di/injectable.decorator.js.map +1 -0
  131. package/dist/core/errors.d.ts +54 -0
  132. package/dist/core/errors.d.ts.map +1 -0
  133. package/dist/core/errors.js +87 -0
  134. package/dist/core/errors.js.map +1 -0
  135. package/dist/core/events/event-emitter.d.ts +50 -0
  136. package/dist/core/events/event-emitter.d.ts.map +1 -0
  137. package/dist/core/events/event-emitter.js +94 -0
  138. package/dist/core/events/event-emitter.js.map +1 -0
  139. package/dist/core/events/event.decorator.d.ts +48 -0
  140. package/dist/core/events/event.decorator.d.ts.map +1 -0
  141. package/dist/core/events/event.decorator.js +68 -0
  142. package/dist/core/events/event.decorator.js.map +1 -0
  143. package/dist/core/filters/exception-filter.decorator.d.ts +40 -0
  144. package/dist/core/filters/exception-filter.decorator.d.ts.map +1 -0
  145. package/dist/core/filters/exception-filter.decorator.js +54 -0
  146. package/dist/core/filters/exception-filter.decorator.js.map +1 -0
  147. package/dist/core/filters/exception-filter.interface.d.ts +30 -0
  148. package/dist/core/filters/exception-filter.interface.d.ts.map +1 -0
  149. package/dist/core/filters/exception-filter.interface.js +2 -0
  150. package/dist/core/filters/exception-filter.interface.js.map +1 -0
  151. package/dist/core/guards/apikey.guard.d.ts +22 -0
  152. package/dist/core/guards/apikey.guard.d.ts.map +1 -0
  153. package/dist/core/guards/apikey.guard.js +11 -0
  154. package/dist/core/guards/apikey.guard.js.map +1 -0
  155. package/dist/core/guards/guard.interface.d.ts +18 -0
  156. package/dist/core/guards/guard.interface.d.ts.map +1 -0
  157. package/dist/core/guards/guard.interface.js +2 -0
  158. package/dist/core/guards/guard.interface.js.map +1 -0
  159. package/dist/core/guards/jwt.guard.d.ts +18 -0
  160. package/dist/core/guards/jwt.guard.d.ts.map +1 -0
  161. package/dist/core/guards/jwt.guard.js +2 -0
  162. package/dist/core/guards/jwt.guard.js.map +1 -0
  163. package/dist/core/guards/oauth.guard.d.ts +35 -0
  164. package/dist/core/guards/oauth.guard.d.ts.map +1 -0
  165. package/dist/core/guards/oauth.guard.js +2 -0
  166. package/dist/core/guards/oauth.guard.js.map +1 -0
  167. package/dist/core/guards/use-guards.decorator.d.ts +25 -0
  168. package/dist/core/guards/use-guards.decorator.d.ts.map +1 -0
  169. package/dist/core/guards/use-guards.decorator.js +32 -0
  170. package/dist/core/guards/use-guards.decorator.js.map +1 -0
  171. package/dist/core/health/health-checks.resource.d.ts +14 -0
  172. package/dist/core/health/health-checks.resource.d.ts.map +1 -0
  173. package/dist/core/health/health-checks.resource.js +29 -0
  174. package/dist/core/health/health-checks.resource.js.map +1 -0
  175. package/dist/core/index.d.ts +55 -0
  176. package/dist/core/index.d.ts.map +1 -0
  177. package/dist/core/index.js +57 -0
  178. package/dist/core/index.js.map +1 -0
  179. package/dist/core/interceptors/interceptor.decorator.d.ts +37 -0
  180. package/dist/core/interceptors/interceptor.decorator.d.ts.map +1 -0
  181. package/dist/core/interceptors/interceptor.decorator.js +51 -0
  182. package/dist/core/interceptors/interceptor.decorator.js.map +1 -0
  183. package/dist/core/interceptors/interceptor.interface.d.ts +31 -0
  184. package/dist/core/interceptors/interceptor.interface.d.ts.map +1 -0
  185. package/dist/core/interceptors/interceptor.interface.js +2 -0
  186. package/dist/core/interceptors/interceptor.interface.js.map +1 -0
  187. package/dist/core/jwt-module.d.ts +51 -0
  188. package/dist/core/jwt-module.d.ts.map +1 -0
  189. package/dist/core/jwt-module.js +52 -0
  190. package/dist/core/jwt-module.js.map +1 -0
  191. package/dist/core/logger.d.ts +18 -0
  192. package/dist/core/logger.d.ts.map +1 -0
  193. package/dist/core/logger.js +51 -0
  194. package/dist/core/logger.js.map +1 -0
  195. package/dist/core/middleware/middleware.decorator.d.ts +39 -0
  196. package/dist/core/middleware/middleware.decorator.d.ts.map +1 -0
  197. package/dist/core/middleware/middleware.decorator.js +53 -0
  198. package/dist/core/middleware/middleware.decorator.js.map +1 -0
  199. package/dist/core/middleware/middleware.interface.d.ts +29 -0
  200. package/dist/core/middleware/middleware.interface.d.ts.map +1 -0
  201. package/dist/core/middleware/middleware.interface.js +2 -0
  202. package/dist/core/middleware/middleware.interface.js.map +1 -0
  203. package/dist/core/module.d.ts +74 -0
  204. package/dist/core/module.d.ts.map +1 -0
  205. package/dist/core/module.js +82 -0
  206. package/dist/core/module.js.map +1 -0
  207. package/dist/core/oauth-module.d.ts +144 -0
  208. package/dist/core/oauth-module.d.ts.map +1 -0
  209. package/dist/core/oauth-module.js +190 -0
  210. package/dist/core/oauth-module.js.map +1 -0
  211. package/dist/core/pipes/pipe.decorator.d.ts +55 -0
  212. package/dist/core/pipes/pipe.decorator.d.ts.map +1 -0
  213. package/dist/core/pipes/pipe.decorator.js +85 -0
  214. package/dist/core/pipes/pipe.decorator.js.map +1 -0
  215. package/dist/core/pipes/pipe.interface.d.ts +36 -0
  216. package/dist/core/pipes/pipe.interface.d.ts.map +1 -0
  217. package/dist/core/pipes/pipe.interface.js +2 -0
  218. package/dist/core/pipes/pipe.interface.js.map +1 -0
  219. package/dist/core/prompt.d.ts +37 -0
  220. package/dist/core/prompt.d.ts.map +1 -0
  221. package/dist/core/prompt.js +76 -0
  222. package/dist/core/prompt.js.map +1 -0
  223. package/dist/core/resource.d.ts +42 -0
  224. package/dist/core/resource.d.ts.map +1 -0
  225. package/dist/core/resource.js +90 -0
  226. package/dist/core/resource.js.map +1 -0
  227. package/dist/core/server.d.ts +72 -0
  228. package/dist/core/server.d.ts.map +1 -0
  229. package/dist/core/server.js +406 -0
  230. package/dist/core/server.js.map +1 -0
  231. package/dist/core/tool.d.ts +78 -0
  232. package/dist/core/tool.d.ts.map +1 -0
  233. package/dist/core/tool.js +190 -0
  234. package/dist/core/tool.js.map +1 -0
  235. package/dist/core/transports/http-server.d.ts +102 -0
  236. package/dist/core/transports/http-server.d.ts.map +1 -0
  237. package/dist/core/transports/http-server.js +265 -0
  238. package/dist/core/transports/http-server.js.map +1 -0
  239. package/dist/core/types.d.ts +123 -0
  240. package/dist/core/types.d.ts.map +1 -0
  241. package/dist/core/types.js +2 -0
  242. package/dist/core/types.js.map +1 -0
  243. package/dist/core/widgets/widget-examples.resource.d.ts +17 -0
  244. package/dist/core/widgets/widget-examples.resource.d.ts.map +1 -0
  245. package/dist/core/widgets/widget-examples.resource.js +28 -0
  246. package/dist/core/widgets/widget-examples.resource.js.map +1 -0
  247. package/dist/core/widgets/widget-registry.d.ts +56 -0
  248. package/dist/core/widgets/widget-registry.d.ts.map +1 -0
  249. package/dist/core/widgets/widget-registry.js +75 -0
  250. package/dist/core/widgets/widget-registry.js.map +1 -0
  251. package/dist/testing/index.d.ts +82 -0
  252. package/dist/testing/index.d.ts.map +1 -0
  253. package/dist/testing/index.js +164 -0
  254. package/dist/testing/index.js.map +1 -0
  255. package/dist/ui-next/index.d.ts +31 -0
  256. package/dist/ui-next/index.d.ts.map +1 -0
  257. package/dist/ui-next/index.js +687 -0
  258. package/dist/ui-next/index.js.map +1 -0
  259. package/dist/widgets/index.d.ts +9 -0
  260. package/dist/widgets/index.d.ts.map +1 -0
  261. package/dist/widgets/index.js +9 -0
  262. package/dist/widgets/index.js.map +1 -0
  263. package/dist/widgets/metadata.d.ts +53 -0
  264. package/dist/widgets/metadata.d.ts.map +1 -0
  265. package/dist/widgets/metadata.js +29 -0
  266. package/dist/widgets/metadata.js.map +1 -0
  267. package/dist/widgets/withToolData.d.ts +19 -0
  268. package/dist/widgets/withToolData.d.ts.map +1 -0
  269. package/dist/widgets/withToolData.js +240 -0
  270. package/dist/widgets/withToolData.js.map +1 -0
  271. package/jest.config.js +21 -0
  272. package/package.json +108 -0
  273. package/templates/typescript-auth/AI_AGENT_CLI_REFERENCE.md +702 -0
  274. package/templates/typescript-auth/AI_AGENT_SDK_REFERENCE.md +1260 -0
  275. package/templates/typescript-auth/README.md +400 -0
  276. package/templates/typescript-auth/package.json +44 -0
  277. package/templates/typescript-auth-api-key/AI_AGENT_CLI_REFERENCE.md +701 -0
  278. package/templates/typescript-auth-api-key/AI_AGENT_SDK_REFERENCE.md +1260 -0
  279. package/templates/typescript-auth-api-key/README.md +483 -0
  280. package/templates/typescript-auth-api-key/package-lock.json +124 -0
  281. package/templates/typescript-auth-api-key/package.json +29 -0
  282. package/templates/typescript-oauth/AI_AGENT_CLI_REFERENCE.md +701 -0
  283. package/templates/typescript-oauth/AI_AGENT_SDK_REFERENCE.md +1260 -0
  284. package/templates/typescript-oauth/OAUTH_SETUP.md +406 -0
  285. package/templates/typescript-oauth/README.md +350 -0
  286. package/templates/typescript-oauth/package.json +30 -0
  287. package/templates/typescript-starter/AI_AGENT_CLI_REFERENCE.md +701 -0
  288. package/templates/typescript-starter/AI_AGENT_SDK_REFERENCE.md +1260 -0
  289. package/templates/typescript-starter/README.md +312 -0
  290. package/templates/typescript-starter/package.json +32 -0
@@ -0,0 +1,702 @@
1
+ # NitroStack CLI Reference - For AI Code Editors
2
+
3
+ **Comprehensive CLI reference for AI agents working with NitroStack v3.0**
4
+
5
+ ---
6
+
7
+ ## Installation
8
+
9
+ ```bash
10
+ # Global install (recommended for end users)
11
+ npm install -g nitrostack
12
+
13
+ # Or use npx (no installation)
14
+ npx nitrostack --version
15
+ ```
16
+
17
+ ---
18
+
19
+ ## Commands Overview
20
+
21
+ ```bash
22
+ nitrostack init <project-name> # Create new project
23
+ nitrostack dev [--port <number>] # Start development mode
24
+ nitrostack build # Build for production
25
+ nitrostack generate <type> <name> [opts] # Generate code
26
+ nitrostack --version # Show version
27
+ nitrostack --help # Show help
28
+ ```
29
+
30
+ ---
31
+
32
+ ## 1. Initialize Project
33
+
34
+ ```bash
35
+ # Basic initialization
36
+ nitrostack init my-project
37
+
38
+ # With specific template
39
+ nitrostack init my-project --template typescript-starter
40
+ nitrostack init my-ecommerce --template typescript-auth
41
+ ```
42
+
43
+ ### Available Templates
44
+
45
+ 1. **`typescript-starter`** (Simple & Educational)
46
+ - Single calculator module
47
+ - No authentication
48
+ - No database
49
+ - Perfect for learning basics
50
+ - Tools, resources, prompts, widgets, health checks
51
+
52
+ 2. **`typescript-auth`** (Full-Featured E-commerce)
53
+ - JWT, API Keys, OAuth 2.1 authentication
54
+ - SQLite database with seed data
55
+ - 5 feature modules (auth, products, cart, orders, addresses)
56
+ - 20+ UI widgets
57
+ - Guards, caching, rate limiting
58
+ - Production-ready structure
59
+
60
+ ### What `init` Does
61
+
62
+ 1. ✅ Copies template files
63
+ 2. ✅ Installs npm dependencies
64
+ 3. ✅ Installs widget dependencies (`src/widgets/`)
65
+ 4. ✅ Builds widgets for development
66
+ 5. ✅ Creates `.env` from `.env.example`
67
+ 6. ✅ Project is ready to run
68
+
69
+ ### After Init
70
+
71
+ ```bash
72
+ cd my-project
73
+
74
+ # For typescript-auth template: setup database
75
+ npm run setup-db
76
+
77
+ # Start development
78
+ npm run dev
79
+ ```
80
+
81
+ ---
82
+
83
+ ## 2. Development Mode
84
+
85
+ ```bash
86
+ # Start all services
87
+ nitrostack dev
88
+
89
+ # Custom port for Studio
90
+ nitrostack dev --port 3002
91
+ ```
92
+
93
+ ### What It Starts
94
+
95
+ 1. **MCP Server** (stdio mode)
96
+ - Communicates via stdin/stdout
97
+ - Follows MCP protocol spec
98
+ - Hot reload on code changes
99
+
100
+ 2. **Studio** (port 3000, or custom)
101
+ - Visual development interface
102
+ - Test tools manually
103
+ - AI chat (OpenAI/Gemini)
104
+ - Widget preview
105
+ - Resources browser
106
+ - Prompts testing
107
+ - Health checks dashboard
108
+ - OAuth 2.1 config
109
+ - Connection monitoring
110
+
111
+ 3. **Widget Dev Server** (port 3001)
112
+ - Next.js dev server
113
+ - Hot module replacement
114
+ - Serves UI widgets
115
+ - Fast refresh
116
+
117
+ ### Studio Features
118
+
119
+ | Tab | Purpose |
120
+ |-----|---------|
121
+ | **Tools** | Execute tools, see widget previews, examples |
122
+ | **AI Chat** | Chat with LLM using your tools |
123
+ | **Resources** | Browse resources, view UI widgets |
124
+ | **Prompts** | Test prompt templates |
125
+ | **Health** | Monitor health checks |
126
+ | **OAuth 2.1** | Configure OAuth endpoints |
127
+ | **Ping** | Test MCP connection |
128
+
129
+ ### URLs
130
+
131
+ - **Studio UI**: `http://localhost:3000`
132
+ - **Widget Dev**: `http://localhost:3001`
133
+ - **MCP Server**: stdio (no HTTP)
134
+
135
+ ### Hot Reload
136
+
137
+ Changes auto-reload:
138
+ - ✅ TypeScript files (`src/**/*.ts`)
139
+ - ✅ Widget files (`src/widgets/app/**/*`)
140
+ - ✅ No manual restart needed
141
+
142
+ ---
143
+
144
+ ## 3. Build Project
145
+
146
+ ```bash
147
+ nitrostack build
148
+ ```
149
+
150
+ ### Build Process
151
+
152
+ 1. **Compile TypeScript**
153
+ - Input: `src/**/*.ts`
154
+ - Output: `dist/**/*.js`
155
+ - ES modules format
156
+ - Source maps included
157
+
158
+ 2. **Build Widgets**
159
+ - Input: `src/widgets/`
160
+ - Output: `src/widgets/.next/`
161
+ - Production optimized
162
+ - Static assets bundled
163
+
164
+ 3. **Copy Assets**
165
+ - Database files
166
+ - Config files
167
+ - Environment templates
168
+
169
+ ### Output Structure
170
+
171
+ ```
172
+ dist/
173
+ ├── index.js # Entry point
174
+ ├── app.module.js
175
+ ├── modules/
176
+ │ ├── auth/
177
+ │ ├── products/
178
+ │ └── ...
179
+ └── ... (all compiled code)
180
+
181
+ src/widgets/.next/ # Built widgets
182
+ ```
183
+
184
+ ### Run Production Build
185
+
186
+ ```bash
187
+ # After build
188
+ node dist/index.js
189
+ ```
190
+
191
+ ---
192
+
193
+ ## 4. Generate Code
194
+
195
+ ### Generate Module
196
+
197
+ ```bash
198
+ nitrostack generate module payments
199
+ ```
200
+
201
+ Creates:
202
+ ```
203
+ src/modules/payments/
204
+ ├── payments.module.ts # @Module definition
205
+ ├── payments.tools.ts # @Tool definitions
206
+ ├── payments.resources.ts # @Resource definitions
207
+ ├── payments.prompts.ts # @Prompt definitions
208
+ └── payments.service.ts # @Injectable service
209
+ ```
210
+
211
+ **Generated module includes:**
212
+ - Boilerplate decorator setup
213
+ - Example tool with Zod schema
214
+ - Example resource
215
+ - Example prompt
216
+ - Injectable service with DI
217
+ - Ready to import in `app.module.ts`
218
+
219
+ ### Generate Tool
220
+
221
+ ```bash
222
+ nitrostack generate tool process-payment --module payments
223
+ ```
224
+
225
+ - Adds tool to `src/modules/payments/payments.tools.ts`
226
+ - Includes:
227
+ - `@Tool` decorator
228
+ - Zod input schema
229
+ - Example request/response
230
+ - `@Widget` placeholder
231
+ - Execution context
232
+
233
+ ### Generate Resource
234
+
235
+ ```bash
236
+ nitrostack generate resource payment-schema --module payments
237
+ ```
238
+
239
+ - Adds resource to `src/modules/payments/payments.resources.ts`
240
+ - Includes URI pattern, mime type, examples
241
+
242
+ ### Generate Prompt
243
+
244
+ ```bash
245
+ nitrostack generate prompt payment-help --module payments
246
+ ```
247
+
248
+ - Adds prompt to `src/modules/payments/payments.prompts.ts`
249
+ - Includes arguments, message template
250
+
251
+ ### Generate Guard
252
+
253
+ ```bash
254
+ nitrostack generate guard admin
255
+ ```
256
+
257
+ Creates `src/guards/admin.guard.ts`:
258
+ ```typescript
259
+ @Injectable()
260
+ export class AdminGuard implements Guard {
261
+ async canActivate(context: ExecutionContext): Promise<boolean> {
262
+ // Your authorization logic
263
+ }
264
+ }
265
+ ```
266
+
267
+ **Usage:**
268
+ ```typescript
269
+ @Tool({ name: 'admin_tool' })
270
+ @UseGuards(AdminGuard)
271
+ async adminTool(input: any, ctx: ExecutionContext) {}
272
+ ```
273
+
274
+ ### Generate Middleware
275
+
276
+ ```bash
277
+ nitrostack generate middleware logging
278
+ ```
279
+
280
+ Creates `src/middleware/logging.middleware.ts`:
281
+ ```typescript
282
+ @Middleware()
283
+ export class LoggingMiddleware implements MiddlewareInterface {
284
+ async use(context: ExecutionContext, next: () => Promise<any>) {
285
+ // Before
286
+ const result = await next();
287
+ // After
288
+ return result;
289
+ }
290
+ }
291
+ ```
292
+
293
+ ### Generate Interceptor
294
+
295
+ ```bash
296
+ nitrostack generate interceptor transform
297
+ ```
298
+
299
+ Creates `src/interceptors/transform.interceptor.ts`:
300
+ ```typescript
301
+ @Interceptor()
302
+ export class TransformInterceptor implements InterceptorInterface {
303
+ async intercept(context: ExecutionContext, next: () => Promise<any>) {
304
+ const result = await next();
305
+ return { success: true, data: result };
306
+ }
307
+ }
308
+ ```
309
+
310
+ ### Generate Pipe
311
+
312
+ ```bash
313
+ nitrostack generate pipe validation
314
+ ```
315
+
316
+ Creates `src/pipes/validation.pipe.ts`:
317
+ ```typescript
318
+ @Pipe()
319
+ export class ValidationPipe implements PipeInterface {
320
+ async transform(value: any, metadata: any): Promise<any> {
321
+ // Transform/validate value
322
+ return value;
323
+ }
324
+ }
325
+ ```
326
+
327
+ ### Generate Types
328
+
329
+ ```bash
330
+ # Generate TypeScript types from tool schemas
331
+ nitrostack generate types
332
+
333
+ # Custom output path
334
+ nitrostack generate types --output src/widgets/types/generated.ts
335
+ ```
336
+
337
+ **What It Does:**
338
+ 1. Scans all `*.tools.ts` files
339
+ 2. Extracts Zod schemas from `@Tool` decorators
340
+ 3. Converts to TypeScript interfaces
341
+ 4. Outputs to `src/widgets/types/tool-data.ts` (default)
342
+
343
+ **Example Input (tool):**
344
+ ```typescript
345
+ @Tool({
346
+ name: 'get_product',
347
+ inputSchema: z.object({
348
+ product_id: z.string()
349
+ })
350
+ })
351
+ async getProduct(input: any) {
352
+ return { id: input.product_id, name: 'Product', price: 99 };
353
+ }
354
+ ```
355
+
356
+ **Example Output (generated types):**
357
+ ```typescript
358
+ // Auto-generated by NitroStack CLI
359
+ export interface GetProductInput {
360
+ product_id: string;
361
+ }
362
+
363
+ export interface GetProductOutput {
364
+ id: string;
365
+ name: string;
366
+ price: number;
367
+ }
368
+ ```
369
+
370
+ **Usage in Widgets:**
371
+ ```typescript
372
+ import { GetProductOutput } from '../../types/tool-data';
373
+
374
+ export default function ProductCard({ data }: { data: GetProductOutput }) {
375
+ return <div>{data.name} - ${data.price}</div>;
376
+ }
377
+ ```
378
+
379
+ **When to Run:**
380
+ - After adding new tools
381
+ - After modifying tool schemas
382
+ - Before building widgets
383
+ - As part of CI/CD pipeline
384
+
385
+ ---
386
+
387
+ ## Configuration
388
+
389
+ ### Project Configuration (`nitrostack.config.ts`)
390
+
391
+ ```typescript
392
+ export default {
393
+ server: {
394
+ name: 'my-server',
395
+ version: '1.0.0',
396
+ description: 'My MCP server'
397
+ },
398
+ studio: {
399
+ port: 3000,
400
+ enabled: true
401
+ },
402
+ widgets: {
403
+ port: 3001,
404
+ devServer: true
405
+ },
406
+ logging: {
407
+ level: 'info', // debug | info | warn | error
408
+ file: 'logs/server.log'
409
+ }
410
+ };
411
+ ```
412
+
413
+ ### Environment Variables (`.env`)
414
+
415
+ ```env
416
+ # Node Environment
417
+ NODE_ENV=development
418
+
419
+ # JWT (if using typescript-auth template)
420
+ JWT_SECRET=your-super-secret-jwt-key-change-this-in-production
421
+
422
+ # OAuth 2.1 (if using typescript-auth template)
423
+ OAUTH_CLIENT_ID=your-client-id
424
+ OAUTH_CLIENT_SECRET=your-client-secret
425
+ OAUTH_REDIRECT_URI=http://localhost:3000/callback
426
+
427
+ # Database (if using typescript-auth template)
428
+ DATABASE_PATH=./data/ecommerce.db
429
+
430
+ # Server
431
+ PORT=3000
432
+
433
+ # Gemini API (for Studio chat)
434
+ GEMINI_API_KEY=your-gemini-key
435
+ ```
436
+
437
+ ---
438
+
439
+ ## Common Workflows
440
+
441
+ ### 1. Create New Project (Starter Template)
442
+
443
+ ```bash
444
+ # Install CLI
445
+ npm install -g nitrostack
446
+
447
+ # Initialize project
448
+ nitrostack init my-calculator --template typescript-starter
449
+ cd my-calculator
450
+
451
+ # Start development
452
+ npm run dev
453
+
454
+ # Open Studio
455
+ # http://localhost:3000
456
+ ```
457
+
458
+ ### 2. Create New Project (Auth Template)
459
+
460
+ ```bash
461
+ # Install CLI
462
+ npm install -g nitrostack
463
+
464
+ # Initialize project
465
+ nitrostack init my-shop --template typescript-auth
466
+ cd my-shop
467
+
468
+ # Setup database
469
+ npm run setup-db
470
+
471
+ # Start development
472
+ npm run dev
473
+
474
+ # Open Studio and login
475
+ # http://localhost:3000
476
+ ```
477
+
478
+ ### 3. Add New Feature Module
479
+
480
+ ```bash
481
+ # Generate module
482
+ nitrostack generate module payments
483
+
484
+ # Add to app.module.ts imports
485
+ # imports: [ConfigModule.forRoot(), PaymentsModule]
486
+
487
+ # Generate tools
488
+ nitrostack generate tool create-payment --module payments
489
+ nitrostack generate tool get-payment --module payments
490
+
491
+ # Generate types for widgets
492
+ nitrostack generate types
493
+
494
+ # Create widget
495
+ mkdir -p src/widgets/app/payment-success
496
+ # Create page.tsx in that directory
497
+
498
+ # Test in Studio
499
+ npm run dev
500
+ ```
501
+
502
+ ### 4. Development Cycle
503
+
504
+ ```bash
505
+ # Start dev server (runs concurrently)
506
+ npm run dev
507
+
508
+ # Edit code (auto-reloads)
509
+ # - Edit src/modules/**/*.ts
510
+ # - Edit src/widgets/app/**/*
511
+
512
+ # Test in Studio
513
+ # - Execute tools manually
514
+ # - Test with AI chat
515
+ # - Preview widgets
516
+
517
+ # Generate types for widgets
518
+ nitrostack generate types
519
+
520
+ # Build for production
521
+ npm run build
522
+
523
+ # Test production build
524
+ node dist/index.js
525
+ ```
526
+
527
+ ### 5. Deploy to Production
528
+
529
+ ```bash
530
+ # Build project
531
+ nitrostack build
532
+
533
+ # Copy to server
534
+ scp -r dist/ user@server:/app/
535
+ scp -r src/widgets/.next/ user@server:/app/widgets/
536
+ scp package.json user@server:/app/
537
+ scp .env.production user@server:/app/.env
538
+
539
+ # On server
540
+ cd /app
541
+ npm install --production
542
+ node dist/index.js
543
+ ```
544
+
545
+ ---
546
+
547
+ ## Troubleshooting
548
+
549
+ ### CLI Not Found
550
+
551
+ ```bash
552
+ # Install globally
553
+ npm install -g nitrostack
554
+
555
+ # Or use npx
556
+ npx nitrostack init my-project
557
+ ```
558
+
559
+ ### Port Already in Use
560
+
561
+ ```bash
562
+ # Use custom port
563
+ nitrostack dev --port 3002
564
+
565
+ # Or kill process on port
566
+ lsof -ti:3000 | xargs kill -9
567
+ lsof -ti:3001 | xargs kill -9
568
+ ```
569
+
570
+ ### Build Errors
571
+
572
+ ```bash
573
+ # Clean and rebuild
574
+ rm -rf dist
575
+ rm -rf src/widgets/.next
576
+ npm run build
577
+
578
+ # Check TypeScript errors
579
+ npx tsc --noEmit
580
+ ```
581
+
582
+ ### Module Not Found: nitrostack
583
+
584
+ ```bash
585
+ # Reinstall dependencies
586
+ rm -rf node_modules package-lock.json
587
+ npm install
588
+ ```
589
+
590
+ ### Widgets Not Loading
591
+
592
+ ```bash
593
+ # Rebuild widgets
594
+ cd src/widgets
595
+ npm install
596
+ npm run build
597
+ cd ../..
598
+
599
+ # Check widget dev server
600
+ curl http://localhost:3001
601
+ ```
602
+
603
+ ### Database Errors (typescript-auth)
604
+
605
+ ```bash
606
+ # Reset database
607
+ npm run reset-db
608
+
609
+ # Check database exists
610
+ ls -la data/ecommerce.db
611
+ ```
612
+
613
+ ### Studio Not Connecting
614
+
615
+ ```bash
616
+ # Check MCP server is running
617
+ ps aux | grep node
618
+
619
+ # Check logs
620
+ tail -f logs/server.log
621
+
622
+ # Restart
623
+ npm run dev
624
+ ```
625
+
626
+ ---
627
+
628
+ ## Quick Reference Card
629
+
630
+ ### Commands
631
+
632
+ | Command | Description |
633
+ |---------|-------------|
634
+ | `nitrostack init <name>` | Create new project |
635
+ | `nitrostack init <name> --template <type>` | Create with specific template |
636
+ | `nitrostack dev` | Start dev mode (server + Studio + widgets) |
637
+ | `nitrostack dev --port <n>` | Start with custom Studio port |
638
+ | `nitrostack build` | Build for production |
639
+ | `nitrostack generate module <name>` | Generate module |
640
+ | `nitrostack generate tool <name> --module <m>` | Generate tool |
641
+ | `nitrostack generate resource <name> --module <m>` | Generate resource |
642
+ | `nitrostack generate prompt <name> --module <m>` | Generate prompt |
643
+ | `nitrostack generate guard <name>` | Generate guard |
644
+ | `nitrostack generate middleware <name>` | Generate middleware |
645
+ | `nitrostack generate interceptor <name>` | Generate interceptor |
646
+ | `nitrostack generate pipe <name>` | Generate pipe |
647
+ | `nitrostack generate types` | Generate TypeScript types |
648
+ | `nitrostack --version` | Show version |
649
+ | `nitrostack --help` | Show help |
650
+
651
+ ### Project Scripts
652
+
653
+ | Script | Description |
654
+ |--------|-------------|
655
+ | `npm run dev` | Start development (MCP server + Studio + widgets, auto-build) |
656
+ | `npm run build` | Build MCP server + widgets for production |
657
+ | `npm start` | Run production server |
658
+ | `npm run widget <cmd>` | Run npm command in widgets directory |
659
+ | `npm run setup-db` | Initialize database (this template only) |
660
+ | `npm run reset-db` | Reset database (this template only) |
661
+ | `npm run seed` | Reseed database with test data |
662
+
663
+ ### Studio URLs
664
+
665
+ | URL | Purpose |
666
+ |-----|---------|
667
+ | `http://localhost:3000` | Studio UI |
668
+ | `http://localhost:3000/chat` | AI Chat |
669
+ | `http://localhost:3001` | Widget dev server |
670
+
671
+ ---
672
+
673
+ ## Key Concepts for AI Agents
674
+
675
+ ### 1. Templates
676
+ - **typescript-starter**: Learn basics, no auth, no DB
677
+ - **typescript-auth**: Full-featured, production-ready
678
+
679
+ ### 2. Development Flow
680
+ - `init` → `setup-db` (if auth) → `dev` → test in Studio → `build`
681
+
682
+ ### 3. Code Generation
683
+ - Generate module first
684
+ - Then generate tools/resources/prompts
685
+ - Always run `generate types` after schema changes
686
+
687
+ ### 4. Studio is Your Friend
688
+ - Test tools before writing widgets
689
+ - Use chat to verify AI integration
690
+ - Check health, resources, prompts
691
+
692
+ ### 5. Widget Development
693
+ - Widgets live in `src/widgets/app/`
694
+ - Link with `@Widget('widget-name')`
695
+ - Generate types for type safety
696
+ - Hot reload enabled
697
+
698
+ ---
699
+
700
+ **That's the complete NitroStack CLI reference!**
701
+
702
+ Use `nitrostack --help` for more details or check `/docs` for SDK documentation.