@ninedeploy/schemas 0.2.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/dist/kernel.js ADDED
@@ -0,0 +1,112 @@
1
+ import { z } from 'zod';
2
+ // ─── Configuration Center Schemas ───────────────────────────────────────────
3
+ export const configItemSchema = z.object({
4
+ key: z.string(),
5
+ pluginId: z.string().nullable().optional(),
6
+ type: z.enum(['string', 'number', 'boolean', 'enum', 'json']).default('string'),
7
+ isSecret: z.boolean(),
8
+ label: z.string(),
9
+ category: z.string(),
10
+ description: z.string().optional(),
11
+ tags: z.array(z.string()),
12
+ options: z.array(z.string()).optional(),
13
+ value: z.unknown(),
14
+ isConfigured: z.boolean(),
15
+ updatedAt: z.string().optional(),
16
+ });
17
+ export const configListSchema = z.object({
18
+ entries: z.array(configItemSchema),
19
+ });
20
+ export const setConfigSchema = z.object({
21
+ value: z.unknown(),
22
+ isSecret: z.boolean().optional(),
23
+ description: z.string().max(500).optional(),
24
+ tags: z.array(z.string().max(50)).optional(),
25
+ });
26
+ // ─── Plugin Ecosystem Schemas ───────────────────────────────────────────────
27
+ export const pluginItemSchema = z.object({
28
+ id: z.string(),
29
+ name: z.string(),
30
+ version: z.string(),
31
+ description: z.string().optional(),
32
+ author: z.string().optional(),
33
+ icon: z.string().optional(),
34
+ isOfficial: z.boolean(),
35
+ enabled: z.boolean(),
36
+ status: z.enum(['active', 'disabled', 'errored', 'installing']),
37
+ configSchema: z.array(z.record(z.string(), z.unknown())).optional(),
38
+ menuItems: z.array(z.record(z.string(), z.unknown())).optional(),
39
+ dependencies: z.array(z.string()).optional(),
40
+ error: z.string().optional(),
41
+ installedAt: z.string().optional(),
42
+ });
43
+ export const pluginListSchema = z.object({
44
+ plugins: z.array(pluginItemSchema),
45
+ });
46
+ export const installPluginSchema = z.object({
47
+ source: z.enum(['marketplace', 'npm', 'git', 'local']).default('marketplace'),
48
+ target: z.string().min(1),
49
+ name: z.string().optional(),
50
+ version: z.string().optional(),
51
+ description: z.string().optional(),
52
+ author: z.string().optional(),
53
+ icon: z.string().optional(),
54
+ dependencies: z.array(z.string()).optional(),
55
+ configSchema: z.array(z.record(z.string(), z.unknown())).optional(),
56
+ menuItems: z.array(z.record(z.string(), z.unknown())).optional(),
57
+ });
58
+ export const marketplacePluginItemSchema = z.object({
59
+ id: z.string(),
60
+ name: z.string(),
61
+ version: z.string(),
62
+ description: z.string(),
63
+ author: z.string(),
64
+ icon: z.string().optional(),
65
+ category: z.string(),
66
+ isOfficial: z.boolean(),
67
+ isInstalled: z.boolean().default(false),
68
+ dependencies: z.array(z.string()).optional(),
69
+ configSchema: z.array(z.record(z.string(), z.unknown())).optional(),
70
+ menuItems: z.array(z.record(z.string(), z.unknown())).optional(),
71
+ });
72
+ export const marketplaceCatalogSchema = z.object({
73
+ catalog: z.array(marketplacePluginItemSchema),
74
+ });
75
+ // ─── Menu & Navigation Schemas ──────────────────────────────────────────────
76
+ export const menuItemSchema = z.object({
77
+ id: z.string(),
78
+ pluginId: z.string().optional(),
79
+ slot: z.string(),
80
+ label: z.string(),
81
+ route: z.string(),
82
+ icon: z.string().optional(),
83
+ order: z.number().optional(),
84
+ permission: z.enum(['admin', 'member']).optional(),
85
+ });
86
+ export const menuListSchema = z.object({
87
+ slots: z.record(z.string(), z.array(menuItemSchema)),
88
+ items: z.array(menuItemSchema),
89
+ });
90
+ export const pluginInspectSchema = z.object({
91
+ id: z.string(),
92
+ name: z.string(),
93
+ version: z.string(),
94
+ description: z.string().optional(),
95
+ author: z.string().optional(),
96
+ isOfficial: z.boolean(),
97
+ enabled: z.boolean(),
98
+ status: z.enum(['active', 'disabled', 'errored', 'installing']),
99
+ dependencies: z.array(z.string()),
100
+ hooks: z.array(z.string()),
101
+ services: z.array(z.string()),
102
+ menus: z.array(menuItemSchema),
103
+ configSchema: z.array(z.record(z.string(), z.unknown())),
104
+ error: z.string().nullable().optional(),
105
+ installedAt: z.string().optional(),
106
+ runtimeStats: z.object({
107
+ eventsHandled: z.number(),
108
+ uptimeSeconds: z.number(),
109
+ loadedAt: z.string().optional(),
110
+ }),
111
+ });
112
+ //# sourceMappingURL=kernel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kernel.js","sourceRoot":"","sources":["../src/kernel.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,371 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * Zod schemas for management/admin endpoints that previously used ad-hoc
4
+ * `as { ... }` casts. Centralising them gives consistent 400 validation errors.
5
+ */
6
+ export declare const rolePatch: z.ZodObject<{
7
+ role: z.ZodEnum<{
8
+ admin: "admin";
9
+ member: "member";
10
+ }>;
11
+ }, z.core.$strip>;
12
+ export type RolePatch = z.infer<typeof rolePatch>;
13
+ export declare const updateCheckResult: z.ZodObject<{
14
+ current: z.ZodString;
15
+ latest: z.ZodNullable<z.ZodString>;
16
+ updateAvailable: z.ZodNullable<z.ZodBoolean>;
17
+ notesUrl: z.ZodNullable<z.ZodString>;
18
+ checkedAt: z.ZodString;
19
+ }, z.core.$strip>;
20
+ export type UpdateCheckResult = z.infer<typeof updateCheckResult>;
21
+ export declare const webhookCreate: z.ZodObject<{
22
+ branch: z.ZodOptional<z.ZodString>;
23
+ watchPaths: z.ZodOptional<z.ZodString>;
24
+ }, z.core.$strip>;
25
+ export type WebhookCreate = z.infer<typeof webhookCreate>;
26
+ export declare const sourcePatch: z.ZodObject<{
27
+ name: z.ZodOptional<z.ZodString>;
28
+ token: z.ZodOptional<z.ZodString>;
29
+ deployKey: z.ZodOptional<z.ZodString>;
30
+ registryUsername: z.ZodOptional<z.ZodString>;
31
+ defaultBranch: z.ZodOptional<z.ZodString>;
32
+ }, z.core.$strip>;
33
+ export type SourcePatch = z.infer<typeof sourcePatch>;
34
+ export declare const notificationType: z.ZodEnum<{
35
+ discord: "discord";
36
+ email: "email";
37
+ ntfy: "ntfy";
38
+ slack: "slack";
39
+ telegram: "telegram";
40
+ webhook: "webhook";
41
+ }>;
42
+ export declare const notificationChannelCreate: z.ZodObject<{
43
+ name: z.ZodString;
44
+ type: z.ZodEnum<{
45
+ discord: "discord";
46
+ email: "email";
47
+ ntfy: "ntfy";
48
+ slack: "slack";
49
+ telegram: "telegram";
50
+ webhook: "webhook";
51
+ }>;
52
+ target: z.ZodString;
53
+ eventFilter: z.ZodOptional<z.ZodString>;
54
+ }, z.core.$strip>;
55
+ export type NotificationChannelCreate = z.infer<typeof notificationChannelCreate>;
56
+ export declare const notificationChannelPatch: z.ZodObject<{
57
+ name: z.ZodOptional<z.ZodString>;
58
+ target: z.ZodOptional<z.ZodString>;
59
+ eventFilter: z.ZodOptional<z.ZodString>;
60
+ active: z.ZodOptional<z.ZodBoolean>;
61
+ }, z.core.$strip>;
62
+ export type NotificationChannelPatch = z.infer<typeof notificationChannelPatch>;
63
+ export declare const alertMetricEnum: z.ZodEnum<{
64
+ "cert-expiry": "cert-expiry";
65
+ cpu: "cpu";
66
+ memory: "memory";
67
+ }>;
68
+ export declare const alertOperatorEnum: z.ZodEnum<{
69
+ "<": "<";
70
+ ">": ">";
71
+ }>;
72
+ export declare const alertRuleCreate: z.ZodObject<{
73
+ name: z.ZodString;
74
+ serviceId: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
75
+ metric: z.ZodEnum<{
76
+ "cert-expiry": "cert-expiry";
77
+ cpu: "cpu";
78
+ memory: "memory";
79
+ }>;
80
+ operator: z.ZodDefault<z.ZodEnum<{
81
+ "<": "<";
82
+ ">": ">";
83
+ }>>;
84
+ threshold: z.ZodNumber;
85
+ durationWindows: z.ZodDefault<z.ZodNumber>;
86
+ enabled: z.ZodDefault<z.ZodBoolean>;
87
+ }, z.core.$strip>;
88
+ export type AlertRuleCreate = z.infer<typeof alertRuleCreate>;
89
+ export declare const alertRulePatch: z.ZodObject<{
90
+ name: z.ZodOptional<z.ZodString>;
91
+ serviceId: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
92
+ metric: z.ZodOptional<z.ZodEnum<{
93
+ "cert-expiry": "cert-expiry";
94
+ cpu: "cpu";
95
+ memory: "memory";
96
+ }>>;
97
+ operator: z.ZodOptional<z.ZodEnum<{
98
+ "<": "<";
99
+ ">": ">";
100
+ }>>;
101
+ threshold: z.ZodOptional<z.ZodNumber>;
102
+ durationWindows: z.ZodOptional<z.ZodNumber>;
103
+ enabled: z.ZodOptional<z.ZodBoolean>;
104
+ }, z.core.$strip>;
105
+ export type AlertRulePatch = z.infer<typeof alertRulePatch>;
106
+ /**
107
+ * Blank region/prefix fall back to the documented defaults (pre-schema
108
+ * behaviour); the endpoint must be an http(s) URL.
109
+ */
110
+ export declare const backupDestinationCreate: z.ZodObject<{
111
+ name: z.ZodString;
112
+ endpoint: z.ZodString;
113
+ region: z.ZodPipe<z.ZodOptional<z.ZodString>, z.ZodTransform<string, string | undefined>>;
114
+ bucket: z.ZodString;
115
+ prefix: z.ZodPipe<z.ZodOptional<z.ZodString>, z.ZodTransform<string, string | undefined>>;
116
+ accessKeyId: z.ZodString;
117
+ secretAccessKey: z.ZodString;
118
+ }, z.core.$strip>;
119
+ export type BackupDestinationCreate = z.infer<typeof backupDestinationCreate>;
120
+ /**
121
+ * All fields optional; blank strings are accepted here and skipped by the
122
+ * route (patching e.g. `name: " "` is a no-op, not an error).
123
+ */
124
+ export declare const backupDestinationPatch: z.ZodObject<{
125
+ name: z.ZodOptional<z.ZodString>;
126
+ endpoint: z.ZodOptional<z.ZodString>;
127
+ region: z.ZodOptional<z.ZodString>;
128
+ bucket: z.ZodOptional<z.ZodString>;
129
+ prefix: z.ZodOptional<z.ZodString>;
130
+ accessKeyId: z.ZodOptional<z.ZodString>;
131
+ secretAccessKey: z.ZodOptional<z.ZodString>;
132
+ active: z.ZodOptional<z.ZodBoolean>;
133
+ }, z.core.$strip>;
134
+ export type BackupDestinationPatch = z.infer<typeof backupDestinationPatch>;
135
+ /**
136
+ * `host` is a bare hostname (or IP) or host:port. A non-numeric port falls
137
+ * back to the default 4600 (pre-schema behaviour); an out-of-range one is
138
+ * rejected.
139
+ */
140
+ export declare const serverCreate: z.ZodObject<{
141
+ name: z.ZodString;
142
+ host: z.ZodString;
143
+ port: z.ZodPipe<z.ZodPipe<z.ZodOptional<z.ZodUnknown>, z.ZodTransform<number, unknown>>, z.ZodNumber>;
144
+ }, z.core.$strip>;
145
+ export type ServerCreate = z.infer<typeof serverCreate>;
146
+ export declare const serverAnnounce: z.ZodObject<{
147
+ name: z.ZodString;
148
+ host: z.ZodOptional<z.ZodString>;
149
+ port: z.ZodPipe<z.ZodPipe<z.ZodOptional<z.ZodUnknown>, z.ZodTransform<number, unknown>>, z.ZodNumber>;
150
+ token: z.ZodString;
151
+ }, z.core.$strip>;
152
+ export type ServerAnnounce = z.infer<typeof serverAnnounce>;
153
+ export declare const sshAuthType: z.ZodEnum<{
154
+ key: "key";
155
+ password: "password";
156
+ }>;
157
+ export type SshAuthType = z.infer<typeof sshAuthType>;
158
+ export declare const serverSshTest: z.ZodObject<{
159
+ host: z.ZodString;
160
+ sshPort: z.ZodPipe<z.ZodPipe<z.ZodOptional<z.ZodUnknown>, z.ZodTransform<number, unknown>>, z.ZodNumber>;
161
+ sshUser: z.ZodDefault<z.ZodString>;
162
+ authType: z.ZodDefault<z.ZodEnum<{
163
+ key: "key";
164
+ password: "password";
165
+ }>>;
166
+ sshKey: z.ZodOptional<z.ZodString>;
167
+ sshPassword: z.ZodOptional<z.ZodString>;
168
+ }, z.core.$strip>;
169
+ export type ServerSshTest = z.infer<typeof serverSshTest>;
170
+ export declare const serverSshBootstrap: z.ZodObject<{
171
+ name: z.ZodString;
172
+ host: z.ZodString;
173
+ sshPort: z.ZodPipe<z.ZodPipe<z.ZodOptional<z.ZodUnknown>, z.ZodTransform<number, unknown>>, z.ZodNumber>;
174
+ sshUser: z.ZodDefault<z.ZodString>;
175
+ authType: z.ZodDefault<z.ZodEnum<{
176
+ key: "key";
177
+ password: "password";
178
+ }>>;
179
+ sshKey: z.ZodOptional<z.ZodString>;
180
+ sshPassword: z.ZodOptional<z.ZodString>;
181
+ installDocker: z.ZodDefault<z.ZodBoolean>;
182
+ agentPort: z.ZodPipe<z.ZodPipe<z.ZodOptional<z.ZodUnknown>, z.ZodTransform<number, unknown>>, z.ZodNumber>;
183
+ }, z.core.$strip>;
184
+ export type ServerSshBootstrap = z.infer<typeof serverSshBootstrap>;
185
+ export interface ServerSshTestResult {
186
+ ok: boolean;
187
+ message: string;
188
+ os?: string;
189
+ dockerInstalled?: boolean;
190
+ dockerVersion?: string;
191
+ latencyMs?: number;
192
+ }
193
+ export interface ServerBootstrapStep {
194
+ step: 'connecting' | 'os_detect' | 'docker_check' | 'docker_install' | 'agent_deploy' | 'verify' | 'done' | 'error';
195
+ status: 'pending' | 'running' | 'success' | 'failed';
196
+ message: string;
197
+ timestamp: string;
198
+ }
199
+ export interface ServerBootstrapResult {
200
+ ok: boolean;
201
+ serverId?: number;
202
+ serverName?: string;
203
+ steps: ServerBootstrapStep[];
204
+ logs: string[];
205
+ error?: string;
206
+ }
207
+ /**
208
+ * The cron expression itself is validated with croner at the route (the
209
+ * schema package has no cron dependency); a non-string `command` is ignored
210
+ * (empty string) as before.
211
+ */
212
+ export declare const jobCreate: z.ZodObject<{
213
+ name: z.ZodString;
214
+ cron: z.ZodString;
215
+ kind: z.ZodDefault<z.ZodEnum<{
216
+ deploy: "deploy";
217
+ exec: "exec";
218
+ }>>;
219
+ command: z.ZodPipe<z.ZodOptional<z.ZodUnknown>, z.ZodTransform<string, unknown>>;
220
+ enabled: z.ZodPipe<z.ZodOptional<z.ZodUnknown>, z.ZodTransform<boolean, unknown>>;
221
+ }, z.core.$strip>;
222
+ export type JobCreate = z.infer<typeof jobCreate>;
223
+ /** Blank strings are accepted and treated as "no change"/cleared by the route. */
224
+ export declare const jobPatch: z.ZodObject<{
225
+ name: z.ZodOptional<z.ZodString>;
226
+ cron: z.ZodOptional<z.ZodString>;
227
+ kind: z.ZodOptional<z.ZodEnum<{
228
+ deploy: "deploy";
229
+ exec: "exec";
230
+ }>>;
231
+ command: z.ZodOptional<z.ZodString>;
232
+ enabled: z.ZodOptional<z.ZodBoolean>;
233
+ }, z.core.$strip>;
234
+ export type JobPatch = z.infer<typeof jobPatch>;
235
+ /**
236
+ * Query params arrive as strings: any `kind` other than "memory" reads as
237
+ * "cpu", and an unusable `minutes` falls back to 60 (clamped to 1..1440).
238
+ */
239
+ export declare const metricQuery: z.ZodObject<{
240
+ kind: z.ZodPipe<z.ZodOptional<z.ZodString>, z.ZodTransform<"cpu" | "memory", string | undefined>>;
241
+ minutes: z.ZodPipe<z.ZodOptional<z.ZodUnknown>, z.ZodTransform<number, unknown>>;
242
+ }, z.core.$strip>;
243
+ export type MetricQuery = z.infer<typeof metricQuery>;
244
+ /** Serialized alert rule as returned by GET/PATCH /v1/alerts. */
245
+ export interface AlertRule {
246
+ id: number;
247
+ serviceId: number | null;
248
+ name: string;
249
+ metric: 'cpu' | 'memory' | 'cert-expiry';
250
+ operator: '>' | '<';
251
+ threshold: number;
252
+ durationWindows: number;
253
+ enabled: boolean;
254
+ status: 'ok' | 'breaching' | 'firing';
255
+ lastValue: number | null;
256
+ firedAt: string | null;
257
+ createdAt: string;
258
+ }
259
+ /** Input for creating an alert rule — defaults optional (zod applies them server-side). */
260
+ export type CreateAlertRuleInput = z.input<typeof alertRuleCreate>;
261
+ /** One audit-log entry (activity feed). `meta` carries request context (ip/ua). */
262
+ export interface ActivityEntry {
263
+ id: number;
264
+ userId: number | null;
265
+ userName?: string | null;
266
+ userEmail?: string | null;
267
+ action: string;
268
+ entity: string | null;
269
+ meta: Record<string, unknown> | null;
270
+ ts: string;
271
+ }
272
+ export interface TraefikStatus {
273
+ running: boolean;
274
+ version: string | null;
275
+ versionLatest: string | null;
276
+ outdated: boolean;
277
+ uptime: string | null;
278
+ ports: {
279
+ http: number;
280
+ https: number;
281
+ };
282
+ configDir: string;
283
+ }
284
+ export interface TraefikCertificate {
285
+ domain: string;
286
+ expiresAt: string | null;
287
+ daysUntilExpiry: number | null;
288
+ issuer: string | null;
289
+ }
290
+ export interface TraefikRouter {
291
+ name: string;
292
+ rule: string;
293
+ service: string;
294
+ entryPoints: string[];
295
+ tls: boolean;
296
+ middleware: string[];
297
+ }
298
+ export interface TraefikService {
299
+ name: string;
300
+ url: string;
301
+ loadBalancer: string;
302
+ }
303
+ export interface TraefikMiddleware {
304
+ name: string;
305
+ type: string;
306
+ config: Record<string, unknown>;
307
+ }
308
+ export interface TraefikInfo {
309
+ status: TraefikStatus;
310
+ certificates: TraefikCertificate[];
311
+ routers: TraefikRouter[];
312
+ services: TraefikService[];
313
+ middlewares: TraefikMiddleware[];
314
+ }
315
+ export interface DatabaseDetail {
316
+ id: number;
317
+ projectId: number | null;
318
+ name: string;
319
+ slug: string;
320
+ engine: string;
321
+ version: string | null;
322
+ status: string;
323
+ host: string | null;
324
+ port: number | null;
325
+ username: string | null;
326
+ database: string | null;
327
+ connectionString: string | null;
328
+ containerName?: string | null;
329
+ containerId?: string | null;
330
+ volumeName?: string | null;
331
+ cpuShares?: number | null;
332
+ memLimitMb?: number | null;
333
+ webGuiEnabled?: boolean | null;
334
+ webGuiPort?: number | null;
335
+ extensions?: string[];
336
+ attachedServices: Array<{
337
+ id: number;
338
+ name: string;
339
+ slug: string;
340
+ }>;
341
+ createdAt: string;
342
+ updatedAt: string;
343
+ }
344
+ export interface DatabaseCredentials {
345
+ engine: string;
346
+ username: string | null;
347
+ password: string;
348
+ database: string | null;
349
+ internalHost: string | null;
350
+ internalPort: number | null;
351
+ connectionString: string;
352
+ }
353
+ export declare const demoSeedResult: z.ZodObject<{
354
+ ok: z.ZodBoolean;
355
+ projectId: z.ZodNumber;
356
+ projectName: z.ZodString;
357
+ services: z.ZodArray<z.ZodObject<{
358
+ id: z.ZodNumber;
359
+ name: z.ZodString;
360
+ type: z.ZodString;
361
+ status: z.ZodString;
362
+ port: z.ZodNullable<z.ZodNumber>;
363
+ }, z.core.$strip>>;
364
+ database: z.ZodNullable<z.ZodObject<{
365
+ id: z.ZodNumber;
366
+ name: z.ZodString;
367
+ engine: z.ZodString;
368
+ }, z.core.$strip>>;
369
+ }, z.core.$strip>;
370
+ export type DemoSeedResult = z.infer<typeof demoSeedResult>;
371
+ //# sourceMappingURL=management.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"management.d.ts","sourceRoot":"","sources":["../src/management.ts"],"names":[],"mappings":"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"}