@hazeljs/cli 0.6.0 → 0.7.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.
- package/@template-ai-native/package.json +1 -1
- package/README.md +22 -1
- package/cli-manifest.json +940 -0
- package/dist/commands/add.d.ts +9 -0
- package/dist/commands/add.js +9 -0
- package/dist/commands/generate-auth.d.ts +12 -0
- package/dist/commands/generate-auth.js +12 -0
- package/dist/commands/generate-crud.d.ts +12 -0
- package/dist/commands/generate-crud.js +12 -0
- package/dist/commands/generate-dto.d.ts +12 -0
- package/dist/commands/generate-dto.js +12 -0
- package/dist/commands/generate-module.d.ts +12 -0
- package/dist/commands/generate-module.js +12 -0
- package/dist/commands/generate-simple.d.ts +53 -6
- package/dist/commands/generate-simple.js +42 -386
- package/dist/commands/info.d.ts +12 -0
- package/dist/commands/info.js +12 -0
- package/dist/commands/templates.d.ts +34 -0
- package/dist/commands/templates.js +387 -0
- package/dist/index.d.ts +40 -0
- package/dist/index.js +45 -1
- package/dist/utils/generator-registry.d.ts +5 -0
- package/dist/utils/generator-registry.js +5 -0
- package/dist/utils/packages-registry.d.ts +11 -2
- package/dist/utils/packages-registry.js +11 -2
- package/package.json +6 -4
|
@@ -0,0 +1,940 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"title": "HazelJS CLI Manifest",
|
|
4
|
+
"description": "Machine-readable manifest of all CLI commands and options for LLM agent tool-use",
|
|
5
|
+
"cli": {
|
|
6
|
+
"name": "hazel",
|
|
7
|
+
"version": "0.7.0",
|
|
8
|
+
"description": "CLI for generating HazelJS components and applications"
|
|
9
|
+
},
|
|
10
|
+
"commands": [
|
|
11
|
+
{
|
|
12
|
+
"name": "new",
|
|
13
|
+
"usage": "hazel new <appName> [options]",
|
|
14
|
+
"description": "Create a new HazelJS application with optional interactive setup",
|
|
15
|
+
"args": [
|
|
16
|
+
{
|
|
17
|
+
"name": "appName",
|
|
18
|
+
"type": "string",
|
|
19
|
+
"required": true,
|
|
20
|
+
"description": "Name of the new application"
|
|
21
|
+
}
|
|
22
|
+
],
|
|
23
|
+
"options": [
|
|
24
|
+
{
|
|
25
|
+
"name": "dest",
|
|
26
|
+
"short": "d",
|
|
27
|
+
"type": "string",
|
|
28
|
+
"default": ".",
|
|
29
|
+
"description": "Destination path"
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"name": "skip-install",
|
|
33
|
+
"type": "boolean",
|
|
34
|
+
"description": "Skip npm install"
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"name": "skip-git",
|
|
38
|
+
"type": "boolean",
|
|
39
|
+
"description": "Skip git initialization"
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"name": "interactive",
|
|
43
|
+
"short": "i",
|
|
44
|
+
"type": "boolean",
|
|
45
|
+
"description": "Interactive setup with package selection"
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"name": "template",
|
|
49
|
+
"short": "t",
|
|
50
|
+
"type": "string",
|
|
51
|
+
"enum": [
|
|
52
|
+
"basic",
|
|
53
|
+
"ai-native"
|
|
54
|
+
],
|
|
55
|
+
"default": "basic",
|
|
56
|
+
"description": "Project template"
|
|
57
|
+
}
|
|
58
|
+
],
|
|
59
|
+
"examples": [
|
|
60
|
+
"hazel new my-app",
|
|
61
|
+
"hazel new my-app -i",
|
|
62
|
+
"hazel new my-ai-app --template ai-native"
|
|
63
|
+
]
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
"name": "generate",
|
|
67
|
+
"usage": "hazel generate <type> <name> [options]",
|
|
68
|
+
"description": "Generate HazelJS components. Use --list to see all types",
|
|
69
|
+
"alias": "g",
|
|
70
|
+
"subcommands": [
|
|
71
|
+
{
|
|
72
|
+
"name": "app",
|
|
73
|
+
"usage": "hazel g app <name> [options]",
|
|
74
|
+
"description": "Generate a skeleton HazelJS application (minimal template, no install)",
|
|
75
|
+
"args": [
|
|
76
|
+
{
|
|
77
|
+
"name": "name",
|
|
78
|
+
"type": "string",
|
|
79
|
+
"required": true,
|
|
80
|
+
"description": "Application name"
|
|
81
|
+
}
|
|
82
|
+
],
|
|
83
|
+
"options": [
|
|
84
|
+
{
|
|
85
|
+
"name": "path",
|
|
86
|
+
"short": "p",
|
|
87
|
+
"type": "string",
|
|
88
|
+
"default": ".",
|
|
89
|
+
"description": "Parent directory for the app"
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
"name": "template",
|
|
93
|
+
"short": "t",
|
|
94
|
+
"type": "string",
|
|
95
|
+
"enum": [
|
|
96
|
+
"basic",
|
|
97
|
+
"ai-native"
|
|
98
|
+
],
|
|
99
|
+
"default": "basic",
|
|
100
|
+
"description": "Project template"
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
"name": "dry-run",
|
|
104
|
+
"type": "boolean",
|
|
105
|
+
"description": "Preview without writing files"
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
"name": "json",
|
|
109
|
+
"type": "boolean",
|
|
110
|
+
"description": "Output result as JSON"
|
|
111
|
+
}
|
|
112
|
+
]
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
"name": "module",
|
|
116
|
+
"usage": "hazel g module <name> [options]",
|
|
117
|
+
"description": "Generate a new module (with controller, service, DTOs)",
|
|
118
|
+
"alias": "m",
|
|
119
|
+
"args": [
|
|
120
|
+
{
|
|
121
|
+
"name": "name",
|
|
122
|
+
"type": "string",
|
|
123
|
+
"required": true,
|
|
124
|
+
"description": "Module name"
|
|
125
|
+
}
|
|
126
|
+
],
|
|
127
|
+
"options": [
|
|
128
|
+
{
|
|
129
|
+
"name": "path",
|
|
130
|
+
"short": "p",
|
|
131
|
+
"type": "string",
|
|
132
|
+
"description": "Path where the module should be generated"
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
"name": "dry-run",
|
|
136
|
+
"type": "boolean",
|
|
137
|
+
"description": "Preview files without writing them"
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
"name": "json",
|
|
141
|
+
"type": "boolean",
|
|
142
|
+
"description": "Output result as JSON"
|
|
143
|
+
}
|
|
144
|
+
]
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
"name": "dto",
|
|
148
|
+
"usage": "hazel g dto <name> [options]",
|
|
149
|
+
"description": "Generate create and update DTOs",
|
|
150
|
+
"alias": "d",
|
|
151
|
+
"args": [
|
|
152
|
+
{
|
|
153
|
+
"name": "name",
|
|
154
|
+
"type": "string",
|
|
155
|
+
"required": true,
|
|
156
|
+
"description": "DTO name"
|
|
157
|
+
}
|
|
158
|
+
],
|
|
159
|
+
"options": [
|
|
160
|
+
{
|
|
161
|
+
"name": "path",
|
|
162
|
+
"short": "p",
|
|
163
|
+
"type": "string",
|
|
164
|
+
"description": "Path where the DTOs should be generated"
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
"name": "dry-run",
|
|
168
|
+
"type": "boolean",
|
|
169
|
+
"description": "Preview files without writing them"
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
"name": "json",
|
|
173
|
+
"type": "boolean",
|
|
174
|
+
"description": "Output result as JSON"
|
|
175
|
+
}
|
|
176
|
+
]
|
|
177
|
+
},
|
|
178
|
+
{
|
|
179
|
+
"name": "crud",
|
|
180
|
+
"usage": "hazel g crud <name> [options]",
|
|
181
|
+
"description": "Generate a complete CRUD resource (controller, service, module, DTOs)",
|
|
182
|
+
"args": [
|
|
183
|
+
{
|
|
184
|
+
"name": "name",
|
|
185
|
+
"type": "string",
|
|
186
|
+
"required": true,
|
|
187
|
+
"description": "Resource name"
|
|
188
|
+
}
|
|
189
|
+
],
|
|
190
|
+
"options": [
|
|
191
|
+
{
|
|
192
|
+
"name": "path",
|
|
193
|
+
"short": "p",
|
|
194
|
+
"type": "string",
|
|
195
|
+
"default": "src",
|
|
196
|
+
"description": "Specify the path"
|
|
197
|
+
},
|
|
198
|
+
{
|
|
199
|
+
"name": "route",
|
|
200
|
+
"short": "r",
|
|
201
|
+
"type": "string",
|
|
202
|
+
"description": "Specify the route path"
|
|
203
|
+
},
|
|
204
|
+
{
|
|
205
|
+
"name": "dry-run",
|
|
206
|
+
"type": "boolean",
|
|
207
|
+
"description": "Preview files without writing them"
|
|
208
|
+
},
|
|
209
|
+
{
|
|
210
|
+
"name": "json",
|
|
211
|
+
"type": "boolean",
|
|
212
|
+
"description": "Output result as JSON"
|
|
213
|
+
}
|
|
214
|
+
]
|
|
215
|
+
},
|
|
216
|
+
{
|
|
217
|
+
"name": "auth",
|
|
218
|
+
"usage": "hazel g auth [options]",
|
|
219
|
+
"description": "Generate an auth module with JWT guard, service, controller, and DTOs",
|
|
220
|
+
"args": [],
|
|
221
|
+
"options": [
|
|
222
|
+
{
|
|
223
|
+
"name": "path",
|
|
224
|
+
"short": "p",
|
|
225
|
+
"type": "string",
|
|
226
|
+
"default": "src/auth",
|
|
227
|
+
"description": "Specify the path"
|
|
228
|
+
},
|
|
229
|
+
{
|
|
230
|
+
"name": "dry-run",
|
|
231
|
+
"type": "boolean",
|
|
232
|
+
"description": "Preview files without writing them"
|
|
233
|
+
},
|
|
234
|
+
{
|
|
235
|
+
"name": "json",
|
|
236
|
+
"type": "boolean",
|
|
237
|
+
"description": "Output result as JSON"
|
|
238
|
+
}
|
|
239
|
+
]
|
|
240
|
+
}
|
|
241
|
+
],
|
|
242
|
+
"simpleGenerators": [
|
|
243
|
+
{
|
|
244
|
+
"type": "controller",
|
|
245
|
+
"description": "REST controller",
|
|
246
|
+
"alias": "c",
|
|
247
|
+
"usage": "hazel g controller <name> [options]",
|
|
248
|
+
"nameRequired": true,
|
|
249
|
+
"options": [
|
|
250
|
+
{
|
|
251
|
+
"name": "path",
|
|
252
|
+
"short": "p",
|
|
253
|
+
"type": "string",
|
|
254
|
+
"description": "Path where the file should be generated"
|
|
255
|
+
},
|
|
256
|
+
{
|
|
257
|
+
"name": "dry-run",
|
|
258
|
+
"type": "boolean",
|
|
259
|
+
"description": "Preview files without writing them"
|
|
260
|
+
},
|
|
261
|
+
{
|
|
262
|
+
"name": "json",
|
|
263
|
+
"type": "boolean",
|
|
264
|
+
"description": "Output result as JSON"
|
|
265
|
+
}
|
|
266
|
+
]
|
|
267
|
+
},
|
|
268
|
+
{
|
|
269
|
+
"type": "service",
|
|
270
|
+
"description": "Service class",
|
|
271
|
+
"alias": "s",
|
|
272
|
+
"usage": "hazel g service <name> [options]",
|
|
273
|
+
"nameRequired": true,
|
|
274
|
+
"options": [
|
|
275
|
+
{
|
|
276
|
+
"name": "path",
|
|
277
|
+
"short": "p",
|
|
278
|
+
"type": "string",
|
|
279
|
+
"description": "Path where the file should be generated"
|
|
280
|
+
},
|
|
281
|
+
{
|
|
282
|
+
"name": "dry-run",
|
|
283
|
+
"type": "boolean",
|
|
284
|
+
"description": "Preview files without writing them"
|
|
285
|
+
},
|
|
286
|
+
{
|
|
287
|
+
"name": "json",
|
|
288
|
+
"type": "boolean",
|
|
289
|
+
"description": "Output result as JSON"
|
|
290
|
+
}
|
|
291
|
+
]
|
|
292
|
+
},
|
|
293
|
+
{
|
|
294
|
+
"type": "guard",
|
|
295
|
+
"description": "Guard (e.g. auth)",
|
|
296
|
+
"alias": "gu",
|
|
297
|
+
"usage": "hazel g guard <name> [options]",
|
|
298
|
+
"nameRequired": true,
|
|
299
|
+
"options": [
|
|
300
|
+
{
|
|
301
|
+
"name": "path",
|
|
302
|
+
"short": "p",
|
|
303
|
+
"type": "string",
|
|
304
|
+
"description": "Path where the file should be generated"
|
|
305
|
+
},
|
|
306
|
+
{
|
|
307
|
+
"name": "dry-run",
|
|
308
|
+
"type": "boolean",
|
|
309
|
+
"description": "Preview files without writing them"
|
|
310
|
+
},
|
|
311
|
+
{
|
|
312
|
+
"name": "json",
|
|
313
|
+
"type": "boolean",
|
|
314
|
+
"description": "Output result as JSON"
|
|
315
|
+
}
|
|
316
|
+
]
|
|
317
|
+
},
|
|
318
|
+
{
|
|
319
|
+
"type": "interceptor",
|
|
320
|
+
"description": "Interceptor",
|
|
321
|
+
"alias": "i",
|
|
322
|
+
"usage": "hazel g interceptor <name> [options]",
|
|
323
|
+
"nameRequired": true,
|
|
324
|
+
"options": [
|
|
325
|
+
{
|
|
326
|
+
"name": "path",
|
|
327
|
+
"short": "p",
|
|
328
|
+
"type": "string",
|
|
329
|
+
"description": "Path where the file should be generated"
|
|
330
|
+
},
|
|
331
|
+
{
|
|
332
|
+
"name": "dry-run",
|
|
333
|
+
"type": "boolean",
|
|
334
|
+
"description": "Preview files without writing them"
|
|
335
|
+
},
|
|
336
|
+
{
|
|
337
|
+
"name": "json",
|
|
338
|
+
"type": "boolean",
|
|
339
|
+
"description": "Output result as JSON"
|
|
340
|
+
}
|
|
341
|
+
]
|
|
342
|
+
},
|
|
343
|
+
{
|
|
344
|
+
"type": "middleware",
|
|
345
|
+
"description": "Middleware",
|
|
346
|
+
"alias": "mw",
|
|
347
|
+
"usage": "hazel g middleware <name> [options]",
|
|
348
|
+
"nameRequired": true,
|
|
349
|
+
"defaultPath": "src/middleware",
|
|
350
|
+
"options": [
|
|
351
|
+
{
|
|
352
|
+
"name": "path",
|
|
353
|
+
"short": "p",
|
|
354
|
+
"type": "string",
|
|
355
|
+
"default": "src/middleware",
|
|
356
|
+
"description": "Path where the file should be generated"
|
|
357
|
+
},
|
|
358
|
+
{
|
|
359
|
+
"name": "dry-run",
|
|
360
|
+
"type": "boolean",
|
|
361
|
+
"description": "Preview files without writing them"
|
|
362
|
+
},
|
|
363
|
+
{
|
|
364
|
+
"name": "json",
|
|
365
|
+
"type": "boolean",
|
|
366
|
+
"description": "Output result as JSON"
|
|
367
|
+
}
|
|
368
|
+
]
|
|
369
|
+
},
|
|
370
|
+
{
|
|
371
|
+
"type": "pipe",
|
|
372
|
+
"description": "Validation/transform pipe",
|
|
373
|
+
"usage": "hazel g pipe <name> [options]",
|
|
374
|
+
"nameRequired": true,
|
|
375
|
+
"options": [
|
|
376
|
+
{
|
|
377
|
+
"name": "path",
|
|
378
|
+
"short": "p",
|
|
379
|
+
"type": "string",
|
|
380
|
+
"description": "Path where the file should be generated"
|
|
381
|
+
},
|
|
382
|
+
{
|
|
383
|
+
"name": "dry-run",
|
|
384
|
+
"type": "boolean",
|
|
385
|
+
"description": "Preview files without writing them"
|
|
386
|
+
},
|
|
387
|
+
{
|
|
388
|
+
"name": "json",
|
|
389
|
+
"type": "boolean",
|
|
390
|
+
"description": "Output result as JSON"
|
|
391
|
+
}
|
|
392
|
+
]
|
|
393
|
+
},
|
|
394
|
+
{
|
|
395
|
+
"type": "filter",
|
|
396
|
+
"description": "Exception filter",
|
|
397
|
+
"alias": "f",
|
|
398
|
+
"usage": "hazel g filter <name> [options]",
|
|
399
|
+
"nameRequired": true,
|
|
400
|
+
"options": [
|
|
401
|
+
{
|
|
402
|
+
"name": "path",
|
|
403
|
+
"short": "p",
|
|
404
|
+
"type": "string",
|
|
405
|
+
"description": "Path where the file should be generated"
|
|
406
|
+
},
|
|
407
|
+
{
|
|
408
|
+
"name": "dry-run",
|
|
409
|
+
"type": "boolean",
|
|
410
|
+
"description": "Preview files without writing them"
|
|
411
|
+
},
|
|
412
|
+
{
|
|
413
|
+
"name": "json",
|
|
414
|
+
"type": "boolean",
|
|
415
|
+
"description": "Output result as JSON"
|
|
416
|
+
}
|
|
417
|
+
]
|
|
418
|
+
},
|
|
419
|
+
{
|
|
420
|
+
"type": "repository",
|
|
421
|
+
"description": "Prisma repository",
|
|
422
|
+
"alias": "repo",
|
|
423
|
+
"usage": "hazel g repository <name> [options]",
|
|
424
|
+
"nameRequired": true,
|
|
425
|
+
"options": [
|
|
426
|
+
{
|
|
427
|
+
"name": "path",
|
|
428
|
+
"short": "p",
|
|
429
|
+
"type": "string",
|
|
430
|
+
"description": "Path where the file should be generated"
|
|
431
|
+
},
|
|
432
|
+
{
|
|
433
|
+
"name": "dry-run",
|
|
434
|
+
"type": "boolean",
|
|
435
|
+
"description": "Preview files without writing them"
|
|
436
|
+
},
|
|
437
|
+
{
|
|
438
|
+
"name": "json",
|
|
439
|
+
"type": "boolean",
|
|
440
|
+
"description": "Output result as JSON"
|
|
441
|
+
}
|
|
442
|
+
]
|
|
443
|
+
},
|
|
444
|
+
{
|
|
445
|
+
"type": "gateway",
|
|
446
|
+
"description": "WebSocket gateway",
|
|
447
|
+
"alias": "ws",
|
|
448
|
+
"usage": "hazel g gateway <name> [options]",
|
|
449
|
+
"nameRequired": true,
|
|
450
|
+
"options": [
|
|
451
|
+
{
|
|
452
|
+
"name": "path",
|
|
453
|
+
"short": "p",
|
|
454
|
+
"type": "string",
|
|
455
|
+
"description": "Path where the file should be generated"
|
|
456
|
+
},
|
|
457
|
+
{
|
|
458
|
+
"name": "dry-run",
|
|
459
|
+
"type": "boolean",
|
|
460
|
+
"description": "Preview files without writing them"
|
|
461
|
+
},
|
|
462
|
+
{
|
|
463
|
+
"name": "json",
|
|
464
|
+
"type": "boolean",
|
|
465
|
+
"description": "Output result as JSON"
|
|
466
|
+
}
|
|
467
|
+
]
|
|
468
|
+
},
|
|
469
|
+
{
|
|
470
|
+
"type": "ai-service",
|
|
471
|
+
"description": "AI service with decorators",
|
|
472
|
+
"alias": "ai",
|
|
473
|
+
"usage": "hazel g ai-service <name> [options]",
|
|
474
|
+
"nameRequired": true,
|
|
475
|
+
"options": [
|
|
476
|
+
{
|
|
477
|
+
"name": "path",
|
|
478
|
+
"short": "p",
|
|
479
|
+
"type": "string",
|
|
480
|
+
"description": "Path where the file should be generated"
|
|
481
|
+
},
|
|
482
|
+
{
|
|
483
|
+
"name": "dry-run",
|
|
484
|
+
"type": "boolean",
|
|
485
|
+
"description": "Preview files without writing them"
|
|
486
|
+
},
|
|
487
|
+
{
|
|
488
|
+
"name": "json",
|
|
489
|
+
"type": "boolean",
|
|
490
|
+
"description": "Output result as JSON"
|
|
491
|
+
}
|
|
492
|
+
]
|
|
493
|
+
},
|
|
494
|
+
{
|
|
495
|
+
"type": "agent",
|
|
496
|
+
"description": "AI agent with @Agent and @Tool",
|
|
497
|
+
"usage": "hazel g agent <name> [options]",
|
|
498
|
+
"nameRequired": true,
|
|
499
|
+
"options": [
|
|
500
|
+
{
|
|
501
|
+
"name": "path",
|
|
502
|
+
"short": "p",
|
|
503
|
+
"type": "string",
|
|
504
|
+
"description": "Path where the file should be generated"
|
|
505
|
+
},
|
|
506
|
+
{
|
|
507
|
+
"name": "dry-run",
|
|
508
|
+
"type": "boolean",
|
|
509
|
+
"description": "Preview files without writing them"
|
|
510
|
+
},
|
|
511
|
+
{
|
|
512
|
+
"name": "json",
|
|
513
|
+
"type": "boolean",
|
|
514
|
+
"description": "Output result as JSON"
|
|
515
|
+
}
|
|
516
|
+
]
|
|
517
|
+
},
|
|
518
|
+
{
|
|
519
|
+
"type": "cache",
|
|
520
|
+
"description": "Cache service with decorators",
|
|
521
|
+
"usage": "hazel g cache <name> [options]",
|
|
522
|
+
"nameRequired": true,
|
|
523
|
+
"options": [
|
|
524
|
+
{
|
|
525
|
+
"name": "path",
|
|
526
|
+
"short": "p",
|
|
527
|
+
"type": "string",
|
|
528
|
+
"description": "Path where the file should be generated"
|
|
529
|
+
},
|
|
530
|
+
{
|
|
531
|
+
"name": "dry-run",
|
|
532
|
+
"type": "boolean",
|
|
533
|
+
"description": "Preview files without writing them"
|
|
534
|
+
},
|
|
535
|
+
{
|
|
536
|
+
"name": "json",
|
|
537
|
+
"type": "boolean",
|
|
538
|
+
"description": "Output result as JSON"
|
|
539
|
+
}
|
|
540
|
+
]
|
|
541
|
+
},
|
|
542
|
+
{
|
|
543
|
+
"type": "cron",
|
|
544
|
+
"description": "Cron/scheduled job service",
|
|
545
|
+
"alias": "job",
|
|
546
|
+
"usage": "hazel g cron <name> [options]",
|
|
547
|
+
"nameRequired": true,
|
|
548
|
+
"options": [
|
|
549
|
+
{
|
|
550
|
+
"name": "path",
|
|
551
|
+
"short": "p",
|
|
552
|
+
"type": "string",
|
|
553
|
+
"description": "Path where the file should be generated"
|
|
554
|
+
},
|
|
555
|
+
{
|
|
556
|
+
"name": "dry-run",
|
|
557
|
+
"type": "boolean",
|
|
558
|
+
"description": "Preview files without writing them"
|
|
559
|
+
},
|
|
560
|
+
{
|
|
561
|
+
"name": "json",
|
|
562
|
+
"type": "boolean",
|
|
563
|
+
"description": "Output result as JSON"
|
|
564
|
+
}
|
|
565
|
+
]
|
|
566
|
+
},
|
|
567
|
+
{
|
|
568
|
+
"type": "rag",
|
|
569
|
+
"description": "RAG (Retrieval-Augmented Generation) service",
|
|
570
|
+
"usage": "hazel g rag <name> [options]",
|
|
571
|
+
"nameRequired": true,
|
|
572
|
+
"options": [
|
|
573
|
+
{
|
|
574
|
+
"name": "path",
|
|
575
|
+
"short": "p",
|
|
576
|
+
"type": "string",
|
|
577
|
+
"description": "Path where the file should be generated"
|
|
578
|
+
},
|
|
579
|
+
{
|
|
580
|
+
"name": "dry-run",
|
|
581
|
+
"type": "boolean",
|
|
582
|
+
"description": "Preview files without writing them"
|
|
583
|
+
},
|
|
584
|
+
{
|
|
585
|
+
"name": "json",
|
|
586
|
+
"type": "boolean",
|
|
587
|
+
"description": "Output result as JSON"
|
|
588
|
+
}
|
|
589
|
+
]
|
|
590
|
+
},
|
|
591
|
+
{
|
|
592
|
+
"type": "discovery",
|
|
593
|
+
"description": "Service discovery setup",
|
|
594
|
+
"usage": "hazel g discovery <name> [options]",
|
|
595
|
+
"nameRequired": true,
|
|
596
|
+
"options": [
|
|
597
|
+
{
|
|
598
|
+
"name": "path",
|
|
599
|
+
"short": "p",
|
|
600
|
+
"type": "string",
|
|
601
|
+
"description": "Path where the file should be generated"
|
|
602
|
+
},
|
|
603
|
+
{
|
|
604
|
+
"name": "dry-run",
|
|
605
|
+
"type": "boolean",
|
|
606
|
+
"description": "Preview files without writing them"
|
|
607
|
+
},
|
|
608
|
+
{
|
|
609
|
+
"name": "json",
|
|
610
|
+
"type": "boolean",
|
|
611
|
+
"description": "Output result as JSON"
|
|
612
|
+
}
|
|
613
|
+
]
|
|
614
|
+
},
|
|
615
|
+
{
|
|
616
|
+
"type": "config",
|
|
617
|
+
"description": "Config module setup",
|
|
618
|
+
"usage": "hazel g config [options]",
|
|
619
|
+
"nameRequired": false,
|
|
620
|
+
"options": [
|
|
621
|
+
{
|
|
622
|
+
"name": "path",
|
|
623
|
+
"short": "p",
|
|
624
|
+
"type": "string",
|
|
625
|
+
"description": "Path where the file should be generated"
|
|
626
|
+
},
|
|
627
|
+
{
|
|
628
|
+
"name": "dry-run",
|
|
629
|
+
"type": "boolean",
|
|
630
|
+
"description": "Preview files without writing them"
|
|
631
|
+
},
|
|
632
|
+
{
|
|
633
|
+
"name": "json",
|
|
634
|
+
"type": "boolean",
|
|
635
|
+
"description": "Output result as JSON"
|
|
636
|
+
}
|
|
637
|
+
]
|
|
638
|
+
},
|
|
639
|
+
{
|
|
640
|
+
"type": "serverless",
|
|
641
|
+
"description": "Serverless handler (Lambda or Cloud Function)",
|
|
642
|
+
"alias": "sls",
|
|
643
|
+
"usage": "hazel g serverless <name> [options]",
|
|
644
|
+
"nameRequired": true,
|
|
645
|
+
"options": [
|
|
646
|
+
{
|
|
647
|
+
"name": "path",
|
|
648
|
+
"short": "p",
|
|
649
|
+
"type": "string",
|
|
650
|
+
"description": "Path where the file should be generated"
|
|
651
|
+
},
|
|
652
|
+
{
|
|
653
|
+
"name": "platform",
|
|
654
|
+
"type": "string",
|
|
655
|
+
"enum": [
|
|
656
|
+
"lambda",
|
|
657
|
+
"cloud-function"
|
|
658
|
+
],
|
|
659
|
+
"default": "lambda",
|
|
660
|
+
"description": "Platform: lambda or cloud-function"
|
|
661
|
+
},
|
|
662
|
+
{
|
|
663
|
+
"name": "dry-run",
|
|
664
|
+
"type": "boolean",
|
|
665
|
+
"description": "Preview files without writing them"
|
|
666
|
+
},
|
|
667
|
+
{
|
|
668
|
+
"name": "json",
|
|
669
|
+
"type": "boolean",
|
|
670
|
+
"description": "Output result as JSON"
|
|
671
|
+
}
|
|
672
|
+
]
|
|
673
|
+
}
|
|
674
|
+
],
|
|
675
|
+
"options": [
|
|
676
|
+
{
|
|
677
|
+
"name": "list",
|
|
678
|
+
"type": "boolean",
|
|
679
|
+
"description": "List available generator types"
|
|
680
|
+
},
|
|
681
|
+
{
|
|
682
|
+
"name": "list-json",
|
|
683
|
+
"type": "boolean",
|
|
684
|
+
"description": "With --list: output list as JSON"
|
|
685
|
+
}
|
|
686
|
+
]
|
|
687
|
+
},
|
|
688
|
+
{
|
|
689
|
+
"name": "add",
|
|
690
|
+
"usage": "hazel add [package] [options]",
|
|
691
|
+
"description": "Add a HazelJS package to your project (optionally generate a setup file with --setup)",
|
|
692
|
+
"args": [
|
|
693
|
+
{
|
|
694
|
+
"name": "package",
|
|
695
|
+
"type": "string",
|
|
696
|
+
"required": false,
|
|
697
|
+
"description": "Package short name (e.g. 'ai', 'auth') or full npm name"
|
|
698
|
+
}
|
|
699
|
+
],
|
|
700
|
+
"options": [
|
|
701
|
+
{
|
|
702
|
+
"name": "dev",
|
|
703
|
+
"type": "boolean",
|
|
704
|
+
"description": "Install as dev dependency"
|
|
705
|
+
},
|
|
706
|
+
{
|
|
707
|
+
"name": "setup",
|
|
708
|
+
"type": "boolean",
|
|
709
|
+
"description": "Also generate a minimal setup/starter file in src/"
|
|
710
|
+
},
|
|
711
|
+
{
|
|
712
|
+
"name": "setup-path",
|
|
713
|
+
"type": "string",
|
|
714
|
+
"default": "src",
|
|
715
|
+
"description": "Path for the setup file"
|
|
716
|
+
}
|
|
717
|
+
],
|
|
718
|
+
"packages": [
|
|
719
|
+
{
|
|
720
|
+
"shortName": "ai",
|
|
721
|
+
"npm": "@hazeljs/ai",
|
|
722
|
+
"label": "AI Integration (@hazeljs/ai)",
|
|
723
|
+
"description": "AI integration with OpenAI, Anthropic, and other providers"
|
|
724
|
+
},
|
|
725
|
+
{
|
|
726
|
+
"shortName": "agent",
|
|
727
|
+
"npm": "@hazeljs/agent",
|
|
728
|
+
"label": "AI Agents (@hazeljs/agent)",
|
|
729
|
+
"description": "AI agents with tools, memory, and RAG capabilities"
|
|
730
|
+
},
|
|
731
|
+
{
|
|
732
|
+
"shortName": "auth",
|
|
733
|
+
"npm": "@hazeljs/auth",
|
|
734
|
+
"label": "Authentication (@hazeljs/auth)",
|
|
735
|
+
"description": "JWT authentication with guards and decorators"
|
|
736
|
+
},
|
|
737
|
+
{
|
|
738
|
+
"shortName": "cache",
|
|
739
|
+
"npm": "@hazeljs/cache",
|
|
740
|
+
"label": "Caching (@hazeljs/cache)",
|
|
741
|
+
"description": "Multi-tier caching with Redis, memory, and decorators"
|
|
742
|
+
},
|
|
743
|
+
{
|
|
744
|
+
"shortName": "config",
|
|
745
|
+
"npm": "@hazeljs/config",
|
|
746
|
+
"label": "Configuration (@hazeljs/config)",
|
|
747
|
+
"description": "Environment-based configuration management"
|
|
748
|
+
},
|
|
749
|
+
{
|
|
750
|
+
"shortName": "cron",
|
|
751
|
+
"npm": "@hazeljs/cron",
|
|
752
|
+
"label": "Cron Jobs (@hazeljs/cron)",
|
|
753
|
+
"description": "Scheduled jobs with cron expressions"
|
|
754
|
+
},
|
|
755
|
+
{
|
|
756
|
+
"shortName": "data",
|
|
757
|
+
"npm": "@hazeljs/data",
|
|
758
|
+
"label": "Data/ETL (@hazeljs/data)",
|
|
759
|
+
"description": "Data pipelines and ETL workflows"
|
|
760
|
+
},
|
|
761
|
+
{
|
|
762
|
+
"shortName": "discovery",
|
|
763
|
+
"npm": "@hazeljs/discovery",
|
|
764
|
+
"label": "Service Discovery (@hazeljs/discovery)",
|
|
765
|
+
"description": "Service registration and discovery"
|
|
766
|
+
},
|
|
767
|
+
{
|
|
768
|
+
"shortName": "event-emitter",
|
|
769
|
+
"npm": "@hazeljs/event-emitter",
|
|
770
|
+
"label": "Event Emitter (@hazeljs/event-emitter)",
|
|
771
|
+
"description": "Event-driven architecture with EventEmitter"
|
|
772
|
+
},
|
|
773
|
+
{
|
|
774
|
+
"shortName": "gateway",
|
|
775
|
+
"npm": "@hazeljs/gateway",
|
|
776
|
+
"label": "API Gateway (@hazeljs/gateway)",
|
|
777
|
+
"description": "API gateway with routing and load balancing"
|
|
778
|
+
},
|
|
779
|
+
{
|
|
780
|
+
"shortName": "graphql",
|
|
781
|
+
"npm": "@hazeljs/graphql",
|
|
782
|
+
"label": "GraphQL (@hazeljs/graphql)",
|
|
783
|
+
"description": "GraphQL server with schema and resolvers"
|
|
784
|
+
},
|
|
785
|
+
{
|
|
786
|
+
"shortName": "grpc",
|
|
787
|
+
"npm": "@hazeljs/grpc",
|
|
788
|
+
"label": "gRPC (@hazeljs/grpc)",
|
|
789
|
+
"description": "gRPC server with protobuf integration"
|
|
790
|
+
},
|
|
791
|
+
{
|
|
792
|
+
"shortName": "kafka",
|
|
793
|
+
"npm": "@hazeljs/kafka",
|
|
794
|
+
"label": "Kafka (@hazeljs/kafka)",
|
|
795
|
+
"description": "Apache Kafka integration for event streaming"
|
|
796
|
+
},
|
|
797
|
+
{
|
|
798
|
+
"shortName": "messaging",
|
|
799
|
+
"npm": "@hazeljs/messaging",
|
|
800
|
+
"label": "Messaging - WhatsApp/Telegram (@hazeljs/messaging)",
|
|
801
|
+
"description": "Multi-platform messaging (WhatsApp, Telegram)"
|
|
802
|
+
},
|
|
803
|
+
{
|
|
804
|
+
"shortName": "ml",
|
|
805
|
+
"npm": "@hazeljs/ml",
|
|
806
|
+
"label": "Machine Learning (@hazeljs/ml)",
|
|
807
|
+
"description": "ML model integration and feature store"
|
|
808
|
+
},
|
|
809
|
+
{
|
|
810
|
+
"shortName": "mcp",
|
|
811
|
+
"npm": "@hazeljs/mcp",
|
|
812
|
+
"label": "MCP - Model Context Protocol (@hazeljs/mcp)",
|
|
813
|
+
"description": "Model Context Protocol server implementation"
|
|
814
|
+
},
|
|
815
|
+
{
|
|
816
|
+
"shortName": "pdf-to-audio",
|
|
817
|
+
"npm": "@hazeljs/pdf-to-audio",
|
|
818
|
+
"label": "PDF to Audio (@hazeljs/pdf-to-audio)",
|
|
819
|
+
"description": "Convert PDF documents to audio using TTS"
|
|
820
|
+
},
|
|
821
|
+
{
|
|
822
|
+
"shortName": "prisma",
|
|
823
|
+
"npm": "@hazeljs/prisma",
|
|
824
|
+
"label": "Prisma ORM (@hazeljs/prisma)",
|
|
825
|
+
"description": "Database ORM with Prisma"
|
|
826
|
+
},
|
|
827
|
+
{
|
|
828
|
+
"shortName": "typeorm",
|
|
829
|
+
"npm": "@hazeljs/typeorm",
|
|
830
|
+
"label": "TypeORM (@hazeljs/typeorm)",
|
|
831
|
+
"description": "Database ORM with TypeORM"
|
|
832
|
+
},
|
|
833
|
+
{
|
|
834
|
+
"shortName": "queue",
|
|
835
|
+
"npm": "@hazeljs/queue",
|
|
836
|
+
"label": "Queue/BullMQ (@hazeljs/queue)",
|
|
837
|
+
"description": "Job queue with BullMQ and Redis"
|
|
838
|
+
},
|
|
839
|
+
{
|
|
840
|
+
"shortName": "rag",
|
|
841
|
+
"npm": "@hazeljs/rag",
|
|
842
|
+
"label": "RAG/Vector Search (@hazeljs/rag)",
|
|
843
|
+
"description": "Retrieval-augmented generation with vector search"
|
|
844
|
+
},
|
|
845
|
+
{
|
|
846
|
+
"shortName": "resilience",
|
|
847
|
+
"npm": "@hazeljs/resilience",
|
|
848
|
+
"label": "Resilience - Circuit Breaker (@hazeljs/resilience)",
|
|
849
|
+
"description": "Circuit breaker, retry, and timeout patterns"
|
|
850
|
+
},
|
|
851
|
+
{
|
|
852
|
+
"shortName": "serverless",
|
|
853
|
+
"npm": "@hazeljs/serverless",
|
|
854
|
+
"label": "Serverless (@hazeljs/serverless)",
|
|
855
|
+
"description": "Serverless adapters for AWS Lambda, Google Cloud Functions"
|
|
856
|
+
},
|
|
857
|
+
{
|
|
858
|
+
"shortName": "swagger",
|
|
859
|
+
"npm": "@hazeljs/swagger",
|
|
860
|
+
"label": "Swagger/OpenAPI (@hazeljs/swagger)",
|
|
861
|
+
"description": "OpenAPI documentation and Swagger UI"
|
|
862
|
+
},
|
|
863
|
+
{
|
|
864
|
+
"shortName": "websocket",
|
|
865
|
+
"npm": "@hazeljs/websocket",
|
|
866
|
+
"label": "WebSocket (@hazeljs/websocket)",
|
|
867
|
+
"description": "Real-time WebSocket communication"
|
|
868
|
+
}
|
|
869
|
+
]
|
|
870
|
+
},
|
|
871
|
+
{
|
|
872
|
+
"name": "info",
|
|
873
|
+
"usage": "hazel info",
|
|
874
|
+
"description": "Display information about the current HazelJS project",
|
|
875
|
+
"args": [],
|
|
876
|
+
"options": []
|
|
877
|
+
}
|
|
878
|
+
],
|
|
879
|
+
"globalOptions": [
|
|
880
|
+
{
|
|
881
|
+
"name": "help",
|
|
882
|
+
"short": "h",
|
|
883
|
+
"type": "boolean",
|
|
884
|
+
"description": "Display help for command"
|
|
885
|
+
},
|
|
886
|
+
{
|
|
887
|
+
"name": "version",
|
|
888
|
+
"short": "V",
|
|
889
|
+
"type": "boolean",
|
|
890
|
+
"description": "Output the version number"
|
|
891
|
+
}
|
|
892
|
+
],
|
|
893
|
+
"outputFormats": {
|
|
894
|
+
"json": {
|
|
895
|
+
"description": "Machine-readable JSON output for automation and LLM tool-use",
|
|
896
|
+
"supported": [
|
|
897
|
+
"generate",
|
|
898
|
+
"add"
|
|
899
|
+
],
|
|
900
|
+
"schema": {
|
|
901
|
+
"type": "object",
|
|
902
|
+
"properties": {
|
|
903
|
+
"ok": {
|
|
904
|
+
"type": "boolean",
|
|
905
|
+
"description": "Whether the operation succeeded"
|
|
906
|
+
},
|
|
907
|
+
"created": {
|
|
908
|
+
"type": "array",
|
|
909
|
+
"items": {
|
|
910
|
+
"type": "string"
|
|
911
|
+
},
|
|
912
|
+
"description": "List of created file paths"
|
|
913
|
+
},
|
|
914
|
+
"nextSteps": {
|
|
915
|
+
"type": "array",
|
|
916
|
+
"items": {
|
|
917
|
+
"type": "string"
|
|
918
|
+
},
|
|
919
|
+
"description": "Optional next steps for the user"
|
|
920
|
+
},
|
|
921
|
+
"dryRun": {
|
|
922
|
+
"type": "boolean",
|
|
923
|
+
"description": "True if this was a dry-run preview"
|
|
924
|
+
},
|
|
925
|
+
"error": {
|
|
926
|
+
"type": "string",
|
|
927
|
+
"description": "Error message if ok is false"
|
|
928
|
+
}
|
|
929
|
+
}
|
|
930
|
+
}
|
|
931
|
+
},
|
|
932
|
+
"dryRun": {
|
|
933
|
+
"description": "Preview mode that shows what would be created without writing files",
|
|
934
|
+
"supported": [
|
|
935
|
+
"generate"
|
|
936
|
+
],
|
|
937
|
+
"behavior": "Prefixes output with [dry-run] and sets dryRun: true in JSON"
|
|
938
|
+
}
|
|
939
|
+
}
|
|
940
|
+
}
|