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,312 @@
1
+ # NitroStack Starter Template
2
+
3
+ **The simple starter template** - Learn NitroStack v3.0 fundamentals with a clean calculator example.
4
+
5
+ ## 🎯 What's Inside
6
+
7
+ This template demonstrates core NitroStack v3.0 features:
8
+
9
+ - **One Module** - Calculator module with all features
10
+ - **One Tool** - `calculate` - Perform arithmetic operations
11
+ - **One Resource** - `calculator://operations` - List of operations
12
+ - **One Prompt** - `calculator_help` - Get usage help
13
+ - **Two Widgets** - Beautiful UI for results and operations list
14
+ - **No Authentication** - Focus on learning the basics
15
+ - **No Database** - Pure computation example
16
+
17
+ ## 🚀 Quick Start
18
+
19
+ ### Prerequisites
20
+
21
+ ```bash
22
+ # Install NitroStack CLI globally
23
+ npm install -g nitrostack
24
+
25
+ # Or use npx
26
+ npx nitrostack --version
27
+ ```
28
+
29
+ ### Setup Your Project
30
+
31
+ ```bash
32
+ nitrostack init my-calculator --template typescript-starter
33
+ cd my-calculator
34
+ ```
35
+
36
+ That's it! The CLI automatically:
37
+ - ✅ Installs all dependencies
38
+ - ✅ Installs widget dependencies
39
+ - ✅ Builds the widgets
40
+ - ✅ Sets up the project structure
41
+
42
+ ### Run the Project
43
+
44
+ ```bash
45
+ npm run dev
46
+ ```
47
+
48
+ This starts:
49
+ - **MCP Server** (stdio mode) - Hot reloads on code changes
50
+ - **Studio** on http://localhost:3000 - Visual testing environment
51
+ - **Widget Dev Server** on http://localhost:3001 - Hot module replacement
52
+
53
+ The `nitrostack dev` command handles everything automatically:
54
+ - ✅ Auto-detects widget directory
55
+ - ✅ Installs dependencies (if needed)
56
+ - ✅ Builds widgets (on first run)
57
+ - ✅ Starts all services concurrently
58
+ - ✅ Hot reload for TypeScript and widgets
59
+
60
+ ## 📁 Project Structure
61
+
62
+ ```
63
+ src/
64
+ ├── modules/
65
+ │ └── calculator/
66
+ │ ├── calculator.module.ts # @Module definition
67
+ │ ├── calculator.tools.ts # @Tool with examples
68
+ │ ├── calculator.resources.ts # @Resource
69
+ │ └── calculator.prompts.ts # @Prompt
70
+ ├── widgets/ # Next.js UI widgets
71
+ │ └── app/
72
+ │ ├── calculator-result/ # Tool result widget
73
+ │ └── calculator-operations/ # Resource widget
74
+ ├── app.module.ts # Root @McpApp module
75
+ └── index.ts # Application bootstrap
76
+ ```
77
+
78
+ ## 🛠️ Available Features
79
+
80
+ ### Health Check: `system`
81
+
82
+ Monitors server health and resources:
83
+
84
+ - **Uptime**: Server running time
85
+ - **Memory Usage**: Heap memory consumption
86
+ - **Process Info**: PID and Node.js version
87
+ - **Status**: `up`, `degraded`, or `down`
88
+
89
+ Check health status in Studio's Health Checks tab!
90
+
91
+ ### Tool: `calculate`
92
+
93
+ Perform basic arithmetic operations:
94
+
95
+ ```typescript
96
+ @Tool({
97
+ name: 'calculate',
98
+ description: 'Perform basic arithmetic calculations',
99
+ inputSchema: z.object({
100
+ operation: z.enum(['add', 'subtract', 'multiply', 'divide']),
101
+ a: z.number(),
102
+ b: z.number()
103
+ }),
104
+ examples: {
105
+ request: { operation: 'add', a: 5, b: 3 },
106
+ response: { result: 8, expression: '5 + 3 = 8' }
107
+ }
108
+ })
109
+ ```
110
+
111
+ **Usage:**
112
+ ```
113
+ User: "Calculate 5 + 3"
114
+ AI: [Calls calculate tool]
115
+ Result: Beautiful widget showing "5 + 3 = 8"
116
+ ```
117
+
118
+ ### Resource: `calculator://operations`
119
+
120
+ Lists all available operations with examples.
121
+
122
+ ### Prompt: `calculator_help`
123
+
124
+ Get help on how to use the calculator.
125
+
126
+ ## 🎨 Widgets
127
+
128
+ ### Calculator Result Widget
129
+ - Gradient background
130
+ - Operation icon
131
+ - Breakdown of numbers
132
+ - Beautiful animations
133
+
134
+ ### Calculator Operations Widget
135
+ - Grid of all operations
136
+ - Color-coded by type
137
+ - Examples for each operation
138
+
139
+ ## 💡 Learning Path
140
+
141
+ This template is perfect for learning:
142
+
143
+ 1. **Module Organization** - How to structure a feature module
144
+ 2. **Tools** - How to create a tool with `@Tool` decorator
145
+ 3. **Resources** - How to expose data with `@Resource`
146
+ 4. **Prompts** - How to create conversation templates
147
+ 5. **Widgets** - How to build UI components
148
+ 6. **Examples** - How to include request/response examples
149
+ 7. **Validation** - How to use Zod schemas
150
+
151
+ ## 🔧 Commands
152
+
153
+ ```bash
154
+ # Development
155
+ npm run dev # Start dev server with Studio (auto-builds everything)
156
+ npm run build # Build TypeScript and widgets for production
157
+ npm start # Run production server
158
+
159
+ # Widget Management
160
+ npm run widget <command> # Run npm command in widgets directory
161
+ npm run widget add <pkg> # Add a widget dependency (e.g., @mui/material)
162
+ ```
163
+
164
+ **Note:** The NitroStack CLI automatically handles building, installing dependencies, and hot reload. You don't need separate commands for widgets anymore!
165
+
166
+ ## 📝 Example Interactions
167
+
168
+ ### Basic Calculation
169
+ ```
170
+ User: "What's 12 times 8?"
171
+ AI: Calls calculate(operation="multiply", a=12, b=8)
172
+ Result: Widget showing "12 × 8 = 96"
173
+ ```
174
+
175
+ ### Get Help
176
+ ```
177
+ User: "How do I use the calculator?"
178
+ AI: Uses calculator_help prompt
179
+ Result: Complete usage instructions
180
+ ```
181
+
182
+ ### List Operations
183
+ ```
184
+ User: "What operations are available?"
185
+ AI: Fetches calculator://operations resource
186
+ Result: Widget showing all 4 operations with examples
187
+ ```
188
+
189
+ ## 🎓 Code Walkthrough
190
+
191
+ ### 1. Tool Definition
192
+
193
+ ```typescript
194
+ @Tool({
195
+ name: 'calculate',
196
+ description: 'Perform basic arithmetic calculations',
197
+ inputSchema: z.object({...}),
198
+ examples: {...}
199
+ })
200
+ @Widget('calculator-result') // Link UI widget
201
+ async calculate(input: any, ctx: ExecutionContext) {
202
+ // Your logic here
203
+ return { result, expression };
204
+ }
205
+ ```
206
+
207
+ **Key Points:**
208
+ - `@Tool` decorator defines the tool
209
+ - `inputSchema` validates input with Zod
210
+ - `examples` help AI understand usage
211
+ - `@Widget` links the UI component
212
+ - `ExecutionContext` provides logger, metadata
213
+
214
+ ### 2. Resource Definition
215
+
216
+ ```typescript
217
+ @Resource({
218
+ uri: 'calculator://operations',
219
+ name: 'Calculator Operations',
220
+ mimeType: 'application/json',
221
+ examples: {...}
222
+ })
223
+ @Widget('calculator-operations')
224
+ async getOperations(uri: string, ctx: ExecutionContext) {
225
+ return { contents: [{...}] };
226
+ }
227
+ ```
228
+
229
+ ### 3. Prompt Definition
230
+
231
+ ```typescript
232
+ @Prompt({
233
+ name: 'calculator_help',
234
+ arguments: [...]
235
+ })
236
+ async getHelp(args: any, ctx: ExecutionContext) {
237
+ return { messages: [...] };
238
+ }
239
+ ```
240
+
241
+ ### 4. Module Definition
242
+
243
+ ```typescript
244
+ @Module({
245
+ name: 'calculator',
246
+ controllers: [CalculatorTools, CalculatorResources, CalculatorPrompts]
247
+ })
248
+ export class CalculatorModule {}
249
+ ```
250
+
251
+ ### 5. Root Module
252
+
253
+ ```typescript
254
+ @McpApp({
255
+ server: { name: 'calculator-server', version: '1.0.0' }
256
+ })
257
+ @Module({
258
+ imports: [ConfigModule.forRoot(), CalculatorModule]
259
+ })
260
+ export class AppModule {}
261
+ ```
262
+
263
+ ## 🚀 Extend This Template
264
+
265
+ ### Add More Operations
266
+
267
+ Edit `calculator.tools.ts` and add new operations to the enum and switch statement.
268
+
269
+ ### Add History Feature
270
+
271
+ 1. Create a service to store calculations
272
+ 2. Add a `get_history` tool
273
+ 3. Create a history widget
274
+
275
+ ### Add More Modules
276
+
277
+ ```bash
278
+ nitrostack generate module converter
279
+ ```
280
+
281
+ ## 📚 Next Steps
282
+
283
+ Once you understand this template:
284
+
285
+ 1. Try the [E-commerce Template](/templates/ecommerce) - Advanced features with auth
286
+ 2. Read [Server Concepts](/sdk/typescript/server) - Deep dive into modules
287
+ 3. Read [Tools Guide](/sdk/typescript/tools) - Advanced tool patterns
288
+ 4. Read [Widgets Guide](/sdk/typescript/ui/widgets) - Build better UIs
289
+
290
+ ## 💡 Tips
291
+
292
+ - **Keep it Simple** - This template shows the minimum needed
293
+ - **Study the Code** - Each file has clear examples
294
+ - **Test in Studio** - Use the chat to test your tools
295
+ - **Check Examples** - The `examples` field helps AI understand your tools
296
+
297
+ ## 🎉 What to Build
298
+
299
+ Use this as a starting point for:
300
+
301
+ - **Unit Converters** - Temperature, currency, etc.
302
+ - **Text Tools** - String manipulation, formatting
303
+ - **Data Processors** - JSON, CSV, XML parsing
304
+ - **Simple APIs** - Weather, jokes, facts
305
+ - **Utilities** - Date/time, UUID generation
306
+
307
+ ---
308
+
309
+ **Happy Learning! 📖**
310
+
311
+ Start simple, learn the patterns, then build something amazing!
312
+
@@ -0,0 +1,32 @@
1
+ {
2
+ "name": "nitrostack-starter",
3
+ "version": "1.0.0",
4
+ "description": "NitroStack starter template with calculator example",
5
+ "type": "module",
6
+ "main": "dist/index.js",
7
+ "scripts": {
8
+ "dev": "nitrostack dev",
9
+ "build": "nitrostack build",
10
+ "start": "nitrostack start",
11
+ "widget": "npm --prefix src/widgets"
12
+ },
13
+ "keywords": [
14
+ "mcp",
15
+ "nitrostack",
16
+ "starter",
17
+ "template",
18
+ "calculator"
19
+ ],
20
+ "author": "",
21
+ "license": "MIT",
22
+ "dependencies": {
23
+ "nitrostack": "^1.0.0",
24
+ "zod": "^3.22.4",
25
+ "reflect-metadata": "^0.2.1"
26
+ },
27
+ "devDependencies": {
28
+ "@types/node": "^20.10.0",
29
+ "typescript": "^5.3.3"
30
+ }
31
+ }
32
+