@ebowwa/codespaces-types 0.1.0 → 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.
- package/README.md +34 -37
- package/dist/runtime/ai.d.ts +1336 -0
- package/dist/runtime/ai.d.ts.map +1 -0
- package/dist/runtime/ai.js +416 -0
- package/dist/runtime/api.d.ts +1304 -0
- package/dist/runtime/api.d.ts.map +1 -0
- package/dist/runtime/api.js +673 -0
- package/dist/runtime/database.d.ts +376 -0
- package/dist/runtime/database.d.ts.map +1 -0
- package/dist/runtime/database.js +91 -0
- package/dist/runtime/env.d.ts +121 -0
- package/dist/runtime/env.d.ts.map +1 -0
- package/dist/runtime/env.js +54 -0
- package/dist/runtime/glm.d.ts +17 -0
- package/dist/runtime/glm.d.ts.map +1 -0
- package/dist/runtime/glm.js +25 -0
- package/dist/runtime/index.d.ts +13 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/index.js +12 -0
- package/dist/runtime/ssh.d.ts +111 -0
- package/dist/runtime/ssh.d.ts.map +1 -0
- package/dist/runtime/ssh.js +44 -0
- package/dist/{index.d.ts → types/index.d.ts} +1 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/{resources.d.ts → types/resources.d.ts} +1 -0
- package/dist/types/resources.d.ts.map +1 -0
- package/dist/{schemas → types/schemas}/resources.d.ts +5 -4
- package/dist/types/schemas/resources.d.ts.map +1 -0
- package/dist/{terminal-websocket.d.ts → types/terminal-websocket.d.ts} +1 -0
- package/dist/types/terminal-websocket.d.ts.map +1 -0
- package/dist/{time.d.ts → types/time.d.ts} +1 -0
- package/dist/types/time.d.ts.map +1 -0
- package/dist/{user → types/user}/distributions.d.ts +1 -1
- package/dist/types/user/distributions.d.ts.map +1 -0
- package/dist/{user → types/user}/distributions.js +1 -1
- package/dist/{validation.d.ts → types/validation.d.ts} +1 -0
- package/dist/types/validation.d.ts.map +1 -0
- package/package.json +48 -53
- package/LICENSE +0 -21
- /package/dist/{index.js → types/index.js} +0 -0
- /package/dist/{resources.js → types/resources.js} +0 -0
- /package/dist/{schemas → types/schemas}/resources.js +0 -0
- /package/dist/{terminal-websocket.js → types/terminal-websocket.js} +0 -0
- /package/dist/{time.js → types/time.js} +0 -0
- /package/dist/{validation.js → types/validation.js} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../runtime/api.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,673 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Zod schemas for API request/response validation
|
|
3
|
+
*/
|
|
4
|
+
import { z } from "zod";
|
|
5
|
+
/**
|
|
6
|
+
* Environment ID validation
|
|
7
|
+
*/
|
|
8
|
+
export const EnvironmentIdSchema = z
|
|
9
|
+
.string()
|
|
10
|
+
.transform((val) => parseInt(val, 10))
|
|
11
|
+
.pipe(z.number().int().positive("Environment ID must be a positive integer"));
|
|
12
|
+
/**
|
|
13
|
+
* Create Environment Request
|
|
14
|
+
*/
|
|
15
|
+
export const CreateEnvironmentRequestSchema = z.object({
|
|
16
|
+
name: z
|
|
17
|
+
.string()
|
|
18
|
+
.min(1, "Name is required")
|
|
19
|
+
.max(64, "Name must be 64 characters or less")
|
|
20
|
+
.regex(/^[a-zA-Z0-9][a-zA-Z0-9-]*$/, "Name must start with letter/number and contain only letters, numbers, and hyphens"),
|
|
21
|
+
serverType: z.string().min(1, "Server type is required"),
|
|
22
|
+
location: z.string().min(1, "Location is required"),
|
|
23
|
+
sshKeys: z.array(z.string()).optional(),
|
|
24
|
+
autoInstallSeed: z.boolean().default(false).optional(),
|
|
25
|
+
metadata: z
|
|
26
|
+
.object({
|
|
27
|
+
description: z.string().optional(),
|
|
28
|
+
project: z.string().optional(),
|
|
29
|
+
owner: z.string().optional(),
|
|
30
|
+
purpose: z.string().optional(),
|
|
31
|
+
environmentType: z
|
|
32
|
+
.enum(["development", "staging", "production", "testing"])
|
|
33
|
+
.optional(),
|
|
34
|
+
})
|
|
35
|
+
.optional(),
|
|
36
|
+
});
|
|
37
|
+
/**
|
|
38
|
+
* Update Metadata Request
|
|
39
|
+
*/
|
|
40
|
+
export const UpdateMetadataRequestSchema = z.object({
|
|
41
|
+
description: z.string().optional(),
|
|
42
|
+
project: z.string().optional(),
|
|
43
|
+
owner: z.string().optional(),
|
|
44
|
+
purpose: z.string().optional(),
|
|
45
|
+
environmentType: z
|
|
46
|
+
.enum(["development", "staging", "production", "testing"])
|
|
47
|
+
.optional(),
|
|
48
|
+
});
|
|
49
|
+
/**
|
|
50
|
+
* Update Activity Request
|
|
51
|
+
*/
|
|
52
|
+
export const UpdateActivityRequestSchema = z.object({
|
|
53
|
+
hoursActive: z.number().min(0).optional(),
|
|
54
|
+
lastActive: z.string().datetime().optional(),
|
|
55
|
+
activePorts: z
|
|
56
|
+
.array(z.object({
|
|
57
|
+
port: z.number().int().min(1).max(65535),
|
|
58
|
+
protocol: z.enum(["tcp", "udp"]),
|
|
59
|
+
service: z.string().optional(),
|
|
60
|
+
state: z.enum(["open", "closed", "filtered"]),
|
|
61
|
+
}))
|
|
62
|
+
.optional(),
|
|
63
|
+
});
|
|
64
|
+
/**
|
|
65
|
+
* Update Plugins Request
|
|
66
|
+
*/
|
|
67
|
+
export const UpdatePluginsRequestSchema = z.object({
|
|
68
|
+
plugins: z
|
|
69
|
+
.record(z.string(), z.object({
|
|
70
|
+
enabled: z.boolean(),
|
|
71
|
+
config: z.record(z.string(), z.any()).optional(),
|
|
72
|
+
}))
|
|
73
|
+
.optional(),
|
|
74
|
+
});
|
|
75
|
+
/**
|
|
76
|
+
* SSH Connection Request
|
|
77
|
+
*/
|
|
78
|
+
export const SSHConnectionRequestSchema = z.object({
|
|
79
|
+
host: z.string().min(1, "Host is required"),
|
|
80
|
+
user: z.string().default("root").optional(),
|
|
81
|
+
});
|
|
82
|
+
/**
|
|
83
|
+
* SSH Test Request
|
|
84
|
+
*/
|
|
85
|
+
export const SSHTestRequestSchema = z.object({
|
|
86
|
+
host: z.string().min(1, "Host is required"),
|
|
87
|
+
user: z.string().default("root").optional(),
|
|
88
|
+
port: z.number().int().positive().max(65535).default(22).optional(),
|
|
89
|
+
});
|
|
90
|
+
/**
|
|
91
|
+
* SSH Fingerprint Request
|
|
92
|
+
*/
|
|
93
|
+
export const SSHFingerprintRequestSchema = z.object({
|
|
94
|
+
host: z.string().min(1, "Host is required"),
|
|
95
|
+
user: z.string().default("root").optional(),
|
|
96
|
+
port: z.number().int().positive().max(65535).default(22).optional(),
|
|
97
|
+
});
|
|
98
|
+
/**
|
|
99
|
+
* Terminal Create Session Request
|
|
100
|
+
*/
|
|
101
|
+
export const TerminalCreateSessionSchema = z.object({
|
|
102
|
+
host: z.string().min(1, "Host is required"),
|
|
103
|
+
user: z.string().default("root").optional(),
|
|
104
|
+
port: z.number().int().positive().max(65535).default(22).optional(),
|
|
105
|
+
rows: z.number().int().positive().max(200).default(24).optional(),
|
|
106
|
+
cols: z.number().int().positive().max(500).default(80).optional(),
|
|
107
|
+
});
|
|
108
|
+
/**
|
|
109
|
+
* Terminal Resize Request
|
|
110
|
+
*/
|
|
111
|
+
export const TerminalResizeSchema = z.object({
|
|
112
|
+
sessionId: z.string().min(1, "Session ID is required"),
|
|
113
|
+
rows: z.number().int().positive().max(200),
|
|
114
|
+
cols: z.number().int().positive().max(500),
|
|
115
|
+
});
|
|
116
|
+
/**
|
|
117
|
+
* SCP Upload Request
|
|
118
|
+
*/
|
|
119
|
+
export const SCPUploadRequestSchema = z.object({
|
|
120
|
+
host: z.string().min(1, "Host is required"),
|
|
121
|
+
user: z.string().default("root").optional(),
|
|
122
|
+
source: z.string().min(1, "Source path is required"),
|
|
123
|
+
destination: z.string().min(1, "Destination path is required"),
|
|
124
|
+
recursive: z.boolean().default(false).optional(),
|
|
125
|
+
preserve: z.boolean().default(false).optional(),
|
|
126
|
+
});
|
|
127
|
+
/**
|
|
128
|
+
* SCP Download Request
|
|
129
|
+
*/
|
|
130
|
+
export const SCPDownloadRequestSchema = z.object({
|
|
131
|
+
host: z.string().min(1, "Host is required"),
|
|
132
|
+
user: z.string().default("root").optional(),
|
|
133
|
+
source: z.string().min(1, "Source path is required"),
|
|
134
|
+
destination: z.string().min(1, "Destination path is required"),
|
|
135
|
+
recursive: z.boolean().default(false).optional(),
|
|
136
|
+
preserve: z.boolean().default(false).optional(),
|
|
137
|
+
});
|
|
138
|
+
/**
|
|
139
|
+
* Files List Request
|
|
140
|
+
*/
|
|
141
|
+
export const FilesListRequestSchema = z.object({
|
|
142
|
+
host: z.string().min(1, "Host is required"),
|
|
143
|
+
user: z.string().default("root").optional(),
|
|
144
|
+
path: z.string().default(".").optional(),
|
|
145
|
+
});
|
|
146
|
+
/**
|
|
147
|
+
* Files Preview Request
|
|
148
|
+
*/
|
|
149
|
+
export const FilesPreviewRequestSchema = z.object({
|
|
150
|
+
host: z.string().min(1, "Host is required"),
|
|
151
|
+
user: z.string().default("root").optional(),
|
|
152
|
+
path: z.string().min(1, "Path is required"),
|
|
153
|
+
});
|
|
154
|
+
/**
|
|
155
|
+
* SSH Key ID validation
|
|
156
|
+
*/
|
|
157
|
+
export const SSHKeyIdSchema = z
|
|
158
|
+
.string()
|
|
159
|
+
.transform((val) => parseInt(val, 10))
|
|
160
|
+
.pipe(z.number().int().positive("SSH Key ID must be a positive integer"));
|
|
161
|
+
/**
|
|
162
|
+
* Create SSH Key Request
|
|
163
|
+
*/
|
|
164
|
+
export const CreateSSHKeyRequestSchema = z.object({
|
|
165
|
+
name: z
|
|
166
|
+
.string()
|
|
167
|
+
.min(1, "Name is required")
|
|
168
|
+
.max(64, "Name must be 64 characters or less")
|
|
169
|
+
.regex(/^[a-zA-Z0-9][a-zA-Z0-9-]*$/, "Name must start with letter/number and contain only letters, numbers, and hyphens"),
|
|
170
|
+
public_key: z.string().min(1, "Public key is required"),
|
|
171
|
+
labels: z.record(z.string(), z.any()).optional(),
|
|
172
|
+
});
|
|
173
|
+
/**
|
|
174
|
+
* AI Generate Request
|
|
175
|
+
*/
|
|
176
|
+
export const AIGenerateRequestSchema = z.object({
|
|
177
|
+
prompt: z.string().min(1, "Prompt is required"),
|
|
178
|
+
model: z.string().optional(), // Generic string for any AI provider
|
|
179
|
+
temperature: z.number().min(0).max(2).optional(),
|
|
180
|
+
maxTokens: z.number().int().positive().optional(),
|
|
181
|
+
});
|
|
182
|
+
/**
|
|
183
|
+
* AI Chat Request
|
|
184
|
+
*/
|
|
185
|
+
export const AIChatRequestSchema = z.object({
|
|
186
|
+
messages: z.array(z.any()).min(1, "At least one message is required"),
|
|
187
|
+
model: z.string().optional(), // Generic string for any AI provider
|
|
188
|
+
temperature: z.number().min(0).max(2).optional(),
|
|
189
|
+
maxTokens: z.number().int().positive().optional(),
|
|
190
|
+
});
|
|
191
|
+
/**
|
|
192
|
+
* AI Suggest Name Request
|
|
193
|
+
*/
|
|
194
|
+
export const AISuggestNameRequestSchema = z.object({
|
|
195
|
+
project: z.string().optional(),
|
|
196
|
+
description: z.string().optional(),
|
|
197
|
+
});
|
|
198
|
+
/**
|
|
199
|
+
* AI Suggest Server Type Request
|
|
200
|
+
*/
|
|
201
|
+
export const AISuggestServerTypeRequestSchema = z.object({
|
|
202
|
+
workload: z.string().min(1, "Workload description is required"),
|
|
203
|
+
});
|
|
204
|
+
/**
|
|
205
|
+
* AI Analyze Resources Request
|
|
206
|
+
*/
|
|
207
|
+
export const AIAnalyzeResourcesRequestSchema = z.object({
|
|
208
|
+
cpu: z.number().min(0).max(100),
|
|
209
|
+
memory: z.number().min(0).max(100),
|
|
210
|
+
disk: z.number().min(0).max(100),
|
|
211
|
+
});
|
|
212
|
+
/**
|
|
213
|
+
* AI Troubleshoot SSH Request
|
|
214
|
+
*/
|
|
215
|
+
export const AITroubleshootSSHRequestSchema = z.object({
|
|
216
|
+
error: z.string().min(1, "Error message is required"),
|
|
217
|
+
});
|
|
218
|
+
/**
|
|
219
|
+
* AI Suggest Actions Request
|
|
220
|
+
*/
|
|
221
|
+
export const AISuggestActionsRequestSchema = z.object({
|
|
222
|
+
status: z.string().min(1, "Status is required"),
|
|
223
|
+
age: z.string().optional(),
|
|
224
|
+
});
|
|
225
|
+
/**
|
|
226
|
+
* AI Status Message Request
|
|
227
|
+
*/
|
|
228
|
+
export const AIStatusMessageRequestSchema = z.object({
|
|
229
|
+
status: z.string().min(1, "Status is required"),
|
|
230
|
+
name: z.string().min(1, "Name is required"),
|
|
231
|
+
});
|
|
232
|
+
/**
|
|
233
|
+
* Metrics Query Schema (for query parameters)
|
|
234
|
+
*/
|
|
235
|
+
export const MetricsQuerySchema = z.object({
|
|
236
|
+
hours: z
|
|
237
|
+
.string()
|
|
238
|
+
.default("24")
|
|
239
|
+
.transform((val) => parseInt(val, 10))
|
|
240
|
+
.pipe(z.number().int().positive().max(8760)),
|
|
241
|
+
limit: z
|
|
242
|
+
.string()
|
|
243
|
+
.default("100")
|
|
244
|
+
.transform((val) => parseInt(val, 10))
|
|
245
|
+
.pipe(z.number().int().positive().max(1000)),
|
|
246
|
+
});
|
|
247
|
+
/**
|
|
248
|
+
* Insert Metric Request
|
|
249
|
+
*/
|
|
250
|
+
export const InsertMetricRequestSchema = z.object({
|
|
251
|
+
environmentId: z.number().int().positive(),
|
|
252
|
+
cpuPercent: z.number().min(0).max(100),
|
|
253
|
+
memoryPercent: z.number().min(0).max(100),
|
|
254
|
+
memoryUsed: z.number().min(0),
|
|
255
|
+
memoryTotal: z.number().min(0),
|
|
256
|
+
diskPercent: z.number().min(0).max(100),
|
|
257
|
+
diskUsed: z.number().min(0),
|
|
258
|
+
diskTotal: z.number().min(0),
|
|
259
|
+
gpuPercent: z.number().min(0).max(100).optional(),
|
|
260
|
+
gpuMemoryUsed: z.number().min(0).optional(),
|
|
261
|
+
gpuMemoryTotal: z.number().min(0).optional(),
|
|
262
|
+
});
|
|
263
|
+
/**
|
|
264
|
+
* AI Analyze Historical Request
|
|
265
|
+
*/
|
|
266
|
+
export const AIAnalyzeHistoricalRequestSchema = z.object({
|
|
267
|
+
environmentId: z.number().int().positive(),
|
|
268
|
+
hours: z.number().int().positive().max(8760).default(24),
|
|
269
|
+
});
|
|
270
|
+
/**
|
|
271
|
+
* Seed Install Request
|
|
272
|
+
*/
|
|
273
|
+
export const SeedInstallRequestSchema = z.object({
|
|
274
|
+
environmentId: z.string().min(1, "Environment ID is required"),
|
|
275
|
+
autoConfirm: z.boolean().default(true).optional(),
|
|
276
|
+
});
|
|
277
|
+
/**
|
|
278
|
+
* Seed Install Response (partial - actual response includes more fields)
|
|
279
|
+
*/
|
|
280
|
+
export const SeedInstallResponseSchema = z.object({
|
|
281
|
+
success: z.boolean(),
|
|
282
|
+
cloned: z.boolean(),
|
|
283
|
+
setupRun: z.boolean(),
|
|
284
|
+
seedPath: z.string(),
|
|
285
|
+
error: z.string().optional(),
|
|
286
|
+
output: z.array(z.string()),
|
|
287
|
+
});
|
|
288
|
+
/**
|
|
289
|
+
* Seed Status Response
|
|
290
|
+
*/
|
|
291
|
+
export const SeedStatusResponseSchema = z.object({
|
|
292
|
+
installed: z.boolean(),
|
|
293
|
+
setupComplete: z.boolean(),
|
|
294
|
+
version: z.string().optional(),
|
|
295
|
+
branch: z.string().optional(),
|
|
296
|
+
});
|
|
297
|
+
/**
|
|
298
|
+
* Login Commands Response
|
|
299
|
+
*/
|
|
300
|
+
export const LoginCommandsResponseSchema = z.object({
|
|
301
|
+
ssh: z.string(),
|
|
302
|
+
web: z.string(),
|
|
303
|
+
claude: z.string(),
|
|
304
|
+
quick: z.string(),
|
|
305
|
+
});
|
|
306
|
+
// ============================================
|
|
307
|
+
// Volume Schemas
|
|
308
|
+
// ============================================
|
|
309
|
+
/**
|
|
310
|
+
* Volume ID validation
|
|
311
|
+
*/
|
|
312
|
+
export const VolumeIdSchema = z
|
|
313
|
+
.string()
|
|
314
|
+
.transform((val) => parseInt(val, 10))
|
|
315
|
+
.pipe(z.number().int().positive("Volume ID must be a positive integer"));
|
|
316
|
+
/**
|
|
317
|
+
* Create Volume Request
|
|
318
|
+
*/
|
|
319
|
+
export const CreateVolumeRequestSchema = z.object({
|
|
320
|
+
name: z
|
|
321
|
+
.string()
|
|
322
|
+
.min(1, "Name is required")
|
|
323
|
+
.max(64, "Name must be 64 characters or less")
|
|
324
|
+
.regex(/^[a-zA-Z0-9][a-zA-Z0-9-]*$/, "Name must start with letter/number and contain only letters, numbers, and hyphens"),
|
|
325
|
+
size: z
|
|
326
|
+
.number()
|
|
327
|
+
.int()
|
|
328
|
+
.positive("Size must be a positive integer")
|
|
329
|
+
.min(10, "Minimum volume size is 10 GB")
|
|
330
|
+
.max(10240, "Maximum volume size is 10 TB"),
|
|
331
|
+
server: z.string().optional(), // Server ID to attach to
|
|
332
|
+
location: z.string().optional(), // Location if not attaching to server
|
|
333
|
+
automount: z.boolean().default(true).optional(),
|
|
334
|
+
format: z.enum(["ext4", "xfs"]).optional(),
|
|
335
|
+
labels: z.record(z.string(), z.any()).optional(),
|
|
336
|
+
});
|
|
337
|
+
/**
|
|
338
|
+
* Update Volume Request
|
|
339
|
+
*/
|
|
340
|
+
export const UpdateVolumeRequestSchema = z.object({
|
|
341
|
+
name: z.string().min(1).max(64).optional(),
|
|
342
|
+
labels: z.record(z.string(), z.any()).optional(),
|
|
343
|
+
});
|
|
344
|
+
/**
|
|
345
|
+
* Attach Volume Request
|
|
346
|
+
*/
|
|
347
|
+
export const AttachVolumeRequestSchema = z.object({
|
|
348
|
+
volumeId: z.number().int().positive("Volume ID is required"),
|
|
349
|
+
serverId: z.number().int().positive("Server ID is required"),
|
|
350
|
+
automount: z.boolean().default(true).optional(),
|
|
351
|
+
});
|
|
352
|
+
/**
|
|
353
|
+
* Detach Volume Request
|
|
354
|
+
*/
|
|
355
|
+
export const DetachVolumeRequestSchema = z.object({
|
|
356
|
+
volumeId: z.number().int().positive("Volume ID is required"),
|
|
357
|
+
});
|
|
358
|
+
/**
|
|
359
|
+
* Resize Volume Request
|
|
360
|
+
*/
|
|
361
|
+
export const ResizeVolumeRequestSchema = z.object({
|
|
362
|
+
volumeId: z.number().int().positive("Volume ID is required"),
|
|
363
|
+
size: z
|
|
364
|
+
.number()
|
|
365
|
+
.int()
|
|
366
|
+
.positive("Size must be a positive integer")
|
|
367
|
+
.min(10, "Minimum volume size is 10 GB")
|
|
368
|
+
.max(10240, "Maximum volume size is 10 TB"),
|
|
369
|
+
});
|
|
370
|
+
/**
|
|
371
|
+
* Volume Protection Request
|
|
372
|
+
*/
|
|
373
|
+
export const VolumeProtectionRequestSchema = z.object({
|
|
374
|
+
delete: z.boolean(),
|
|
375
|
+
});
|
|
376
|
+
/**
|
|
377
|
+
* Volume Price Query
|
|
378
|
+
*/
|
|
379
|
+
export const VolumePriceQuerySchema = z.object({
|
|
380
|
+
size: z
|
|
381
|
+
.number()
|
|
382
|
+
.int()
|
|
383
|
+
.positive("Size must be a positive integer")
|
|
384
|
+
.min(10, "Minimum volume size is 10 GB")
|
|
385
|
+
.max(10240, "Maximum volume size is 10 TB"),
|
|
386
|
+
});
|
|
387
|
+
// ============================================
|
|
388
|
+
// Tmux Session Management Schemas
|
|
389
|
+
// ============================================
|
|
390
|
+
/**
|
|
391
|
+
* Tmux Send Command Request
|
|
392
|
+
*/
|
|
393
|
+
export const TmuxSendCommandSchema = z.object({
|
|
394
|
+
sessionId: z.string().min(1, "Session ID is required"),
|
|
395
|
+
command: z.string().min(1, "Command is required"),
|
|
396
|
+
paneIndex: z.string().default("0").optional(),
|
|
397
|
+
});
|
|
398
|
+
/**
|
|
399
|
+
* Tmux Split Pane Request
|
|
400
|
+
*/
|
|
401
|
+
export const TmuxSplitPaneSchema = z.object({
|
|
402
|
+
sessionId: z.string().min(1, "Session ID is required"),
|
|
403
|
+
direction: z.enum(["h", "v"]).default("v"),
|
|
404
|
+
command: z.string().optional(),
|
|
405
|
+
});
|
|
406
|
+
/**
|
|
407
|
+
* Tmux List Windows Request
|
|
408
|
+
*/
|
|
409
|
+
export const TmuxListWindowsSchema = z.object({
|
|
410
|
+
sessionId: z.string().min(1, "Session ID is required"),
|
|
411
|
+
});
|
|
412
|
+
/**
|
|
413
|
+
* Tmux List Panes Request
|
|
414
|
+
*/
|
|
415
|
+
export const TmuxListPanesSchema = z.object({
|
|
416
|
+
sessionId: z.string().min(1, "Session ID is required"),
|
|
417
|
+
windowIndex: z.string().default("0").optional(),
|
|
418
|
+
});
|
|
419
|
+
/**
|
|
420
|
+
* Tmux Capture Pane Request
|
|
421
|
+
*/
|
|
422
|
+
export const TmuxCapturePaneSchema = z.object({
|
|
423
|
+
sessionId: z.string().min(1, "Session ID is required"),
|
|
424
|
+
paneIndex: z.string().default("0").optional(),
|
|
425
|
+
});
|
|
426
|
+
/**
|
|
427
|
+
* Tmux Get History Request
|
|
428
|
+
*/
|
|
429
|
+
export const TmuxGetHistorySchema = z.object({
|
|
430
|
+
sessionId: z.string().min(1, "Session ID is required"),
|
|
431
|
+
paneIndex: z.string().default("0").optional(),
|
|
432
|
+
lines: z.number().int().default(-1).optional(),
|
|
433
|
+
});
|
|
434
|
+
/**
|
|
435
|
+
* Tmux Switch Window Request
|
|
436
|
+
*/
|
|
437
|
+
export const TmuxSwitchWindowSchema = z.object({
|
|
438
|
+
sessionId: z.string().min(1, "Session ID is required"),
|
|
439
|
+
windowIndex: z.string().min(1, "Window index is required"),
|
|
440
|
+
});
|
|
441
|
+
/**
|
|
442
|
+
* Tmux Switch Pane Request
|
|
443
|
+
*/
|
|
444
|
+
export const TmuxSwitchPaneSchema = z.object({
|
|
445
|
+
sessionId: z.string().min(1, "Session ID is required"),
|
|
446
|
+
paneIndex: z.string().min(1, "Pane index is required"),
|
|
447
|
+
});
|
|
448
|
+
/**
|
|
449
|
+
* Tmux Rename Window Request
|
|
450
|
+
*/
|
|
451
|
+
export const TmuxRenameWindowSchema = z.object({
|
|
452
|
+
sessionId: z.string().min(1, "Session ID is required"),
|
|
453
|
+
windowIndex: z.string().min(1, "Window index is required"),
|
|
454
|
+
newName: z.string().min(1, "New name is required").max(64),
|
|
455
|
+
});
|
|
456
|
+
/**
|
|
457
|
+
* Tmux Kill Pane Request
|
|
458
|
+
*/
|
|
459
|
+
export const TmuxKillPaneSchema = z.object({
|
|
460
|
+
sessionId: z.string().min(1, "Session ID is required"),
|
|
461
|
+
paneIndex: z.string().min(1, "Pane index is required"),
|
|
462
|
+
});
|
|
463
|
+
/**
|
|
464
|
+
* Tmux Detailed Info Request
|
|
465
|
+
*/
|
|
466
|
+
export const TmuxDetailedInfoSchema = z.object({
|
|
467
|
+
sessionId: z.string().min(1, "Session ID is required"),
|
|
468
|
+
});
|
|
469
|
+
// ============================================
|
|
470
|
+
// Multi-Node Tmux Manager Schemas
|
|
471
|
+
// ============================================
|
|
472
|
+
/**
|
|
473
|
+
* Tmux Manager Add Node Request
|
|
474
|
+
*/
|
|
475
|
+
export const TmuxManagerAddNodeSchema = z.object({
|
|
476
|
+
id: z.string().min(1, "Node ID is required"),
|
|
477
|
+
name: z.string().min(1, "Node name is required"),
|
|
478
|
+
ip: z.string().min(1, "IP address is required"),
|
|
479
|
+
ipv6: z.string().nullable().optional(),
|
|
480
|
+
user: z.string().default("root"),
|
|
481
|
+
port: z.number().int().positive().max(65535).default(22),
|
|
482
|
+
keyPath: z.string().optional(),
|
|
483
|
+
status: z.enum(["running", "stopped", "unreachable"]).default("running"),
|
|
484
|
+
tags: z.array(z.string()).optional(),
|
|
485
|
+
location: z.string().optional(),
|
|
486
|
+
});
|
|
487
|
+
/**
|
|
488
|
+
* Tmux Manager Create Session Request
|
|
489
|
+
*/
|
|
490
|
+
export const TmuxManagerCreateSessionSchema = z.object({
|
|
491
|
+
nodeId: z.string().min(1, "Node ID is required"),
|
|
492
|
+
sessionName: z.string().optional(),
|
|
493
|
+
cwd: z.string().optional(),
|
|
494
|
+
initialCommand: z.string().optional(),
|
|
495
|
+
layout: z.enum(["even-horizontal", "even-vertical", "main-horizontal", "main-vertical", "tiled"]).optional(),
|
|
496
|
+
});
|
|
497
|
+
/**
|
|
498
|
+
* Tmux Manager Attach Session Request
|
|
499
|
+
*/
|
|
500
|
+
export const TmuxManagerAttachSessionSchema = z.object({
|
|
501
|
+
nodeId: z.string().min(1, "Node ID is required"),
|
|
502
|
+
sessionName: z.string().optional(),
|
|
503
|
+
});
|
|
504
|
+
/**
|
|
505
|
+
* Tmux Manager Kill Session Request
|
|
506
|
+
*/
|
|
507
|
+
export const TmuxManagerKillSessionSchema = z.object({
|
|
508
|
+
nodeId: z.string().min(1, "Node ID is required"),
|
|
509
|
+
sessionName: z.string().min(1, "Session name is required"),
|
|
510
|
+
});
|
|
511
|
+
/**
|
|
512
|
+
* Tmux Manager Send Command Request
|
|
513
|
+
*/
|
|
514
|
+
export const TmuxManagerSendCommandSchema = z.object({
|
|
515
|
+
nodeId: z.string().min(1, "Node ID is required"),
|
|
516
|
+
sessionName: z.string().min(1, "Session name is required"),
|
|
517
|
+
command: z.string().min(1, "Command is required"),
|
|
518
|
+
paneIndex: z.string().default("0"),
|
|
519
|
+
});
|
|
520
|
+
/**
|
|
521
|
+
* Tmux Manager Batch Send Command Request
|
|
522
|
+
*/
|
|
523
|
+
export const TmuxManagerBatchSendCommandSchema = z.object({
|
|
524
|
+
nodeIds: z.array(z.string().min(1)).min(1, "At least one node ID is required"),
|
|
525
|
+
sessionName: z.string().min(1, "Session name is required"),
|
|
526
|
+
command: z.string().min(1, "Command is required"),
|
|
527
|
+
paneIndex: z.string().default("0"),
|
|
528
|
+
parallel: z.boolean().default(true),
|
|
529
|
+
continueOnError: z.boolean().default(true),
|
|
530
|
+
timeout: z.number().int().positive().default(30),
|
|
531
|
+
});
|
|
532
|
+
/**
|
|
533
|
+
* Tmux Manager Split Pane Request
|
|
534
|
+
*/
|
|
535
|
+
export const TmuxManagerSplitPaneSchema = z.object({
|
|
536
|
+
nodeId: z.string().min(1, "Node ID is required"),
|
|
537
|
+
sessionName: z.string().min(1, "Session name is required"),
|
|
538
|
+
direction: z.enum(["h", "v"]).default("v"),
|
|
539
|
+
command: z.string().nullable().optional(),
|
|
540
|
+
windowIndex: z.string().default("0"),
|
|
541
|
+
});
|
|
542
|
+
/**
|
|
543
|
+
* Tmux Manager Capture Pane Request
|
|
544
|
+
*/
|
|
545
|
+
export const TmuxManagerCapturePaneSchema = z.object({
|
|
546
|
+
nodeId: z.string().min(1, "Node ID is required"),
|
|
547
|
+
sessionName: z.string().min(1, "Session name is required"),
|
|
548
|
+
paneIndex: z.string().default("0"),
|
|
549
|
+
});
|
|
550
|
+
/**
|
|
551
|
+
* Tmux Manager Get History Request
|
|
552
|
+
*/
|
|
553
|
+
export const TmuxManagerGetHistorySchema = z.object({
|
|
554
|
+
nodeId: z.string().min(1, "Node ID is required"),
|
|
555
|
+
sessionName: z.string().min(1, "Session name is required"),
|
|
556
|
+
paneIndex: z.string().default("0"),
|
|
557
|
+
lines: z.number().int().default(-1),
|
|
558
|
+
});
|
|
559
|
+
/**
|
|
560
|
+
* Tmux Manager List Windows Request
|
|
561
|
+
*/
|
|
562
|
+
export const TmuxManagerListWindowsSchema = z.object({
|
|
563
|
+
nodeId: z.string().min(1, "Node ID is required"),
|
|
564
|
+
sessionName: z.string().min(1, "Session name is required"),
|
|
565
|
+
});
|
|
566
|
+
/**
|
|
567
|
+
* Tmux Manager List Panes Request
|
|
568
|
+
*/
|
|
569
|
+
export const TmuxManagerListPanesSchema = z.object({
|
|
570
|
+
nodeId: z.string().min(1, "Node ID is required"),
|
|
571
|
+
sessionName: z.string().min(1, "Session name is required"),
|
|
572
|
+
windowIndex: z.string().default("0"),
|
|
573
|
+
});
|
|
574
|
+
/**
|
|
575
|
+
* Tmux Manager Switch Window Request
|
|
576
|
+
*/
|
|
577
|
+
export const TmuxManagerSwitchWindowSchema = z.object({
|
|
578
|
+
nodeId: z.string().min(1, "Node ID is required"),
|
|
579
|
+
sessionName: z.string().min(1, "Session name is required"),
|
|
580
|
+
windowIndex: z.string().min(1, "Window index is required"),
|
|
581
|
+
});
|
|
582
|
+
/**
|
|
583
|
+
* Tmux Manager Switch Pane Request
|
|
584
|
+
*/
|
|
585
|
+
export const TmuxManagerSwitchPaneSchema = z.object({
|
|
586
|
+
nodeId: z.string().min(1, "Node ID is required"),
|
|
587
|
+
sessionName: z.string().min(1, "Session name is required"),
|
|
588
|
+
paneIndex: z.string().min(1, "Pane index is required"),
|
|
589
|
+
});
|
|
590
|
+
/**
|
|
591
|
+
* Tmux Manager Rename Window Request
|
|
592
|
+
*/
|
|
593
|
+
export const TmuxManagerRenameWindowSchema = z.object({
|
|
594
|
+
nodeId: z.string().min(1, "Node ID is required"),
|
|
595
|
+
sessionName: z.string().min(1, "Session name is required"),
|
|
596
|
+
windowIndex: z.string().min(1, "Window index is required"),
|
|
597
|
+
newName: z.string().min(1, "New name is required").max(64),
|
|
598
|
+
});
|
|
599
|
+
/**
|
|
600
|
+
* Tmux Manager Kill Pane Request
|
|
601
|
+
*/
|
|
602
|
+
export const TmuxManagerKillPaneSchema = z.object({
|
|
603
|
+
nodeId: z.string().min(1, "Node ID is required"),
|
|
604
|
+
sessionName: z.string().min(1, "Session name is required"),
|
|
605
|
+
paneIndex: z.string().min(1, "Pane index is required"),
|
|
606
|
+
});
|
|
607
|
+
/**
|
|
608
|
+
* Tmux Manager Cleanup Old Sessions Request
|
|
609
|
+
*/
|
|
610
|
+
export const TmuxManagerCleanupOldSessionsSchema = z.object({
|
|
611
|
+
nodeId: z.string().min(1, "Node ID is required"),
|
|
612
|
+
ageLimitMs: z.number().int().positive().default(30 * 24 * 60 * 60 * 1000), // 30 days
|
|
613
|
+
});
|
|
614
|
+
/**
|
|
615
|
+
* Tmux Manager Detailed Session Request
|
|
616
|
+
*/
|
|
617
|
+
export const TmuxManagerDetailedSessionSchema = z.object({
|
|
618
|
+
nodeId: z.string().min(1, "Node ID is required"),
|
|
619
|
+
sessionName: z.string().min(1, "Session name is required"),
|
|
620
|
+
});
|
|
621
|
+
/**
|
|
622
|
+
* Tmux Manager List Sessions Query
|
|
623
|
+
*/
|
|
624
|
+
export const TmuxManagerListSessionsQuerySchema = z.object({
|
|
625
|
+
nodeIds: z.array(z.string()).optional(),
|
|
626
|
+
tags: z.array(z.string()).optional(),
|
|
627
|
+
detailed: z.boolean().default(false).optional(),
|
|
628
|
+
includeInactive: z.boolean().default(false).optional(),
|
|
629
|
+
});
|
|
630
|
+
// ============================================
|
|
631
|
+
// Activities Schemas
|
|
632
|
+
// ============================================
|
|
633
|
+
/**
|
|
634
|
+
* Add Activity Request
|
|
635
|
+
*/
|
|
636
|
+
export const AddActivityRequestSchema = z.object({
|
|
637
|
+
environmentId: z.string().min(1, "Environment ID is required"),
|
|
638
|
+
action: z.string().min(1, "Action is required").max(100),
|
|
639
|
+
environmentName: z.string().min(1, "Environment name is required").max(64),
|
|
640
|
+
details: z.string().max(1000).optional(),
|
|
641
|
+
});
|
|
642
|
+
/**
|
|
643
|
+
* Activities Query Schema (for query parameters)
|
|
644
|
+
*/
|
|
645
|
+
export const ActivitiesQueryParamsSchema = z.object({
|
|
646
|
+
environmentId: z.string().optional(),
|
|
647
|
+
limit: z
|
|
648
|
+
.string()
|
|
649
|
+
.default("100")
|
|
650
|
+
.transform((val) => parseInt(val, 10))
|
|
651
|
+
.pipe(z.number().int().positive().max(1000))
|
|
652
|
+
.optional(),
|
|
653
|
+
hours: z
|
|
654
|
+
.string()
|
|
655
|
+
.transform((val) => parseInt(val, 10))
|
|
656
|
+
.pipe(z.number().int().positive())
|
|
657
|
+
.optional(),
|
|
658
|
+
since: z.string().datetime().optional(),
|
|
659
|
+
until: z.string().datetime().optional(),
|
|
660
|
+
action: z.string().optional(),
|
|
661
|
+
});
|
|
662
|
+
/**
|
|
663
|
+
* Cleanup Activities Request
|
|
664
|
+
*/
|
|
665
|
+
export const CleanupActivitiesRequestSchema = z.object({
|
|
666
|
+
environmentId: z.string().optional(),
|
|
667
|
+
keepHours: z
|
|
668
|
+
.number()
|
|
669
|
+
.int()
|
|
670
|
+
.positive()
|
|
671
|
+
.default(720) // 30 days
|
|
672
|
+
.optional(),
|
|
673
|
+
});
|