-
-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Expand file tree
/
Copy pathtypes.ts
More file actions
81 lines (71 loc) · 2.87 KB
/
types.ts
File metadata and controls
81 lines (71 loc) · 2.87 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
import { z } from "zod";
// ── Templates ────────────────────────────────────────────────────────────────
export const TemplateCreateRequestSchema = z.object({
image: z.string(),
cpu: z.number(),
memory_gb: z.number(),
background: z.boolean().optional(),
callback: z
.object({
url: z.string(),
metadata: z.record(z.string()).optional(),
})
.optional(),
});
export type TemplateCreateRequest = z.infer<typeof TemplateCreateRequestSchema>;
export const TemplateCallbackPayloadSchema = z.object({
template_id: z.string().optional(),
image: z.string(),
status: z.enum(["completed", "failed"]),
error: z.string().optional(),
metadata: z.record(z.string()).optional(),
duration_ms: z.number().optional(),
});
export type TemplateCallbackPayload = z.infer<typeof TemplateCallbackPayloadSchema>;
// ── Instances ────────────────────────────────────────────────────────────────
export const InstanceCreateRequestSchema = z.object({
name: z.string(),
image: z.string(),
env: z.record(z.string()),
cpu: z.number(),
memory_gb: z.number(),
metadata: z.record(z.unknown()).optional(),
});
export type InstanceCreateRequest = z.infer<typeof InstanceCreateRequestSchema>;
export const InstanceCreateResponseSchema = z.object({
id: z.string(),
_timing: z.unknown().optional(),
});
export type InstanceCreateResponse = z.infer<typeof InstanceCreateResponseSchema>;
export const InstanceSnapshotRequestSchema = z.object({
callback: z.object({
url: z.string(),
metadata: z.record(z.string()),
}),
});
export type InstanceSnapshotRequest = z.infer<typeof InstanceSnapshotRequestSchema>;
// ── Snapshots ────────────────────────────────────────────────────────────────
export const SnapshotRestoreRequestSchema = z.object({
name: z.string(),
metadata: z.record(z.string()),
cpu: z.number(),
memory_gb: z.number(),
});
export type SnapshotRestoreRequest = z.infer<typeof SnapshotRestoreRequestSchema>;
export const SnapshotCallbackPayloadSchema = z.discriminatedUnion("status", [
z.object({
status: z.literal("completed"),
snapshot_id: z.string(),
instance_id: z.string(),
metadata: z.record(z.string()).optional(),
duration_ms: z.number().optional(),
}),
z.object({
status: z.literal("failed"),
instance_id: z.string(),
error: z.string().optional(),
metadata: z.record(z.string()).optional(),
duration_ms: z.number().optional(),
}),
]);
export type SnapshotCallbackPayload = z.infer<typeof SnapshotCallbackPayloadSchema>;