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