@treeseed/sdk 0.13.0-rc.50 → 0.13.0-rc.52

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.
@@ -0,0 +1,454 @@
1
+ import { z } from 'zod';
2
+ export declare const AI_MODE_INTERNAL_PATH: string;
3
+ export declare const aiModeSchema: z.ZodEnum<["awake", "sleep"]>;
4
+ export type AiMode = z.infer<typeof aiModeSchema>;
5
+ export declare const aiModeFingerprintSchema: z.ZodObject<{
6
+ inferenceRuntimeDigest: z.ZodString;
7
+ trainingRuntimeDigest: z.ZodString;
8
+ }, "strict", z.ZodTypeAny, {
9
+ inferenceRuntimeDigest: string;
10
+ trainingRuntimeDigest: string;
11
+ }, {
12
+ inferenceRuntimeDigest: string;
13
+ trainingRuntimeDigest: string;
14
+ }>;
15
+ export type AiModeFingerprint = z.infer<typeof aiModeFingerprintSchema>;
16
+ export declare const aiModeRequestSchema: z.ZodObject<{
17
+ schemaVersion: z.ZodLiteral<"treeseed.ai-mode-request/v1">;
18
+ target: z.ZodEnum<["awake", "sleep"]>;
19
+ idempotencyKey: z.ZodString;
20
+ drainTimeoutSeconds: z.ZodDefault<z.ZodNumber>;
21
+ }, "strict", z.ZodTypeAny, {
22
+ target: "awake" | "sleep";
23
+ schemaVersion: "treeseed.ai-mode-request/v1";
24
+ idempotencyKey: string;
25
+ drainTimeoutSeconds: number;
26
+ }, {
27
+ target: "awake" | "sleep";
28
+ schemaVersion: "treeseed.ai-mode-request/v1";
29
+ idempotencyKey: string;
30
+ drainTimeoutSeconds?: number | undefined;
31
+ }>;
32
+ export declare const aiModeTransitionStepSchema: z.ZodObject<{
33
+ id: z.ZodEnum<["close-inference", "drain-inference", "stop-vllm", "start-training", "open-training", "close-training", "drain-training", "stop-training", "start-vllm", "warm-vllm", "open-inference", "rollback"]>;
34
+ state: z.ZodEnum<["pending", "running", "succeeded", "skipped", "failed"]>;
35
+ completedAt: z.ZodNullable<z.ZodString>;
36
+ }, "strict", z.ZodTypeAny, {
37
+ id: "close-inference" | "drain-inference" | "stop-vllm" | "start-training" | "open-training" | "close-training" | "drain-training" | "stop-training" | "start-vllm" | "warm-vllm" | "open-inference" | "rollback";
38
+ state: "pending" | "failed" | "running" | "succeeded" | "skipped";
39
+ completedAt: string | null;
40
+ }, {
41
+ id: "close-inference" | "drain-inference" | "stop-vllm" | "start-training" | "open-training" | "close-training" | "drain-training" | "stop-training" | "start-vllm" | "warm-vllm" | "open-inference" | "rollback";
42
+ state: "pending" | "failed" | "running" | "succeeded" | "skipped";
43
+ completedAt: string | null;
44
+ }>;
45
+ export declare const aiModeTransitionReceiptSchema: z.ZodObject<{
46
+ schemaVersion: z.ZodLiteral<"treeseed.ai-mode-transition-receipt/v1">;
47
+ transitionId: z.ZodString;
48
+ idempotencyKey: z.ZodString;
49
+ resource: z.ZodLiteral<"ai-gpu">;
50
+ requestedBy: z.ZodEnum<["operator", "ai-lab"]>;
51
+ from: z.ZodEnum<["awake", "sleep"]>;
52
+ to: z.ZodEnum<["awake", "sleep"]>;
53
+ state: z.ZodEnum<["planned", "running", "succeeded", "postponed", "rolled-back", "degraded"]>;
54
+ reason: z.ZodNullable<z.ZodEnum<["active-inference", "active-training", "transition-failed", "recovery-failed"]>>;
55
+ fingerprint: z.ZodObject<{
56
+ inferenceRuntimeDigest: z.ZodString;
57
+ trainingRuntimeDigest: z.ZodString;
58
+ }, "strict", z.ZodTypeAny, {
59
+ inferenceRuntimeDigest: string;
60
+ trainingRuntimeDigest: string;
61
+ }, {
62
+ inferenceRuntimeDigest: string;
63
+ trainingRuntimeDigest: string;
64
+ }>;
65
+ steps: z.ZodArray<z.ZodObject<{
66
+ id: z.ZodEnum<["close-inference", "drain-inference", "stop-vllm", "start-training", "open-training", "close-training", "drain-training", "stop-training", "start-vllm", "warm-vllm", "open-inference", "rollback"]>;
67
+ state: z.ZodEnum<["pending", "running", "succeeded", "skipped", "failed"]>;
68
+ completedAt: z.ZodNullable<z.ZodString>;
69
+ }, "strict", z.ZodTypeAny, {
70
+ id: "close-inference" | "drain-inference" | "stop-vllm" | "start-training" | "open-training" | "close-training" | "drain-training" | "stop-training" | "start-vllm" | "warm-vllm" | "open-inference" | "rollback";
71
+ state: "pending" | "failed" | "running" | "succeeded" | "skipped";
72
+ completedAt: string | null;
73
+ }, {
74
+ id: "close-inference" | "drain-inference" | "stop-vllm" | "start-training" | "open-training" | "close-training" | "drain-training" | "stop-training" | "start-vllm" | "warm-vllm" | "open-inference" | "rollback";
75
+ state: "pending" | "failed" | "running" | "succeeded" | "skipped";
76
+ completedAt: string | null;
77
+ }>, "many">;
78
+ startedAt: z.ZodString;
79
+ completedAt: z.ZodNullable<z.ZodString>;
80
+ }, "strict", z.ZodTypeAny, {
81
+ schemaVersion: "treeseed.ai-mode-transition-receipt/v1";
82
+ state: "degraded" | "running" | "succeeded" | "planned" | "postponed" | "rolled-back";
83
+ resource: "ai-gpu";
84
+ completedAt: string | null;
85
+ idempotencyKey: string;
86
+ transitionId: string;
87
+ requestedBy: "operator" | "ai-lab";
88
+ from: "awake" | "sleep";
89
+ to: "awake" | "sleep";
90
+ reason: "active-inference" | "active-training" | "transition-failed" | "recovery-failed" | null;
91
+ fingerprint: {
92
+ inferenceRuntimeDigest: string;
93
+ trainingRuntimeDigest: string;
94
+ };
95
+ steps: {
96
+ id: "close-inference" | "drain-inference" | "stop-vllm" | "start-training" | "open-training" | "close-training" | "drain-training" | "stop-training" | "start-vllm" | "warm-vllm" | "open-inference" | "rollback";
97
+ state: "pending" | "failed" | "running" | "succeeded" | "skipped";
98
+ completedAt: string | null;
99
+ }[];
100
+ startedAt: string;
101
+ }, {
102
+ schemaVersion: "treeseed.ai-mode-transition-receipt/v1";
103
+ state: "degraded" | "running" | "succeeded" | "planned" | "postponed" | "rolled-back";
104
+ resource: "ai-gpu";
105
+ completedAt: string | null;
106
+ idempotencyKey: string;
107
+ transitionId: string;
108
+ requestedBy: "operator" | "ai-lab";
109
+ from: "awake" | "sleep";
110
+ to: "awake" | "sleep";
111
+ reason: "active-inference" | "active-training" | "transition-failed" | "recovery-failed" | null;
112
+ fingerprint: {
113
+ inferenceRuntimeDigest: string;
114
+ trainingRuntimeDigest: string;
115
+ };
116
+ steps: {
117
+ id: "close-inference" | "drain-inference" | "stop-vllm" | "start-training" | "open-training" | "close-training" | "drain-training" | "stop-training" | "start-vllm" | "warm-vllm" | "open-inference" | "rollback";
118
+ state: "pending" | "failed" | "running" | "succeeded" | "skipped";
119
+ completedAt: string | null;
120
+ }[];
121
+ startedAt: string;
122
+ }>;
123
+ export declare const aiModeStatusSchema: z.ZodObject<{
124
+ schemaVersion: z.ZodLiteral<"treeseed.ai-mode-status/v1">;
125
+ resource: z.ZodLiteral<"ai-gpu">;
126
+ available: z.ZodBoolean;
127
+ mode: z.ZodEnum<["awake", "sleep", "transitioning-awake", "transitioning-sleep", "degraded", "unavailable"]>;
128
+ fingerprint: z.ZodNullable<z.ZodObject<{
129
+ inferenceRuntimeDigest: z.ZodString;
130
+ trainingRuntimeDigest: z.ZodString;
131
+ }, "strict", z.ZodTypeAny, {
132
+ inferenceRuntimeDigest: string;
133
+ trainingRuntimeDigest: string;
134
+ }, {
135
+ inferenceRuntimeDigest: string;
136
+ trainingRuntimeDigest: string;
137
+ }>>;
138
+ activeTransition: z.ZodNullable<z.ZodObject<{
139
+ schemaVersion: z.ZodLiteral<"treeseed.ai-mode-transition-receipt/v1">;
140
+ transitionId: z.ZodString;
141
+ idempotencyKey: z.ZodString;
142
+ resource: z.ZodLiteral<"ai-gpu">;
143
+ requestedBy: z.ZodEnum<["operator", "ai-lab"]>;
144
+ from: z.ZodEnum<["awake", "sleep"]>;
145
+ to: z.ZodEnum<["awake", "sleep"]>;
146
+ state: z.ZodEnum<["planned", "running", "succeeded", "postponed", "rolled-back", "degraded"]>;
147
+ reason: z.ZodNullable<z.ZodEnum<["active-inference", "active-training", "transition-failed", "recovery-failed"]>>;
148
+ fingerprint: z.ZodObject<{
149
+ inferenceRuntimeDigest: z.ZodString;
150
+ trainingRuntimeDigest: z.ZodString;
151
+ }, "strict", z.ZodTypeAny, {
152
+ inferenceRuntimeDigest: string;
153
+ trainingRuntimeDigest: string;
154
+ }, {
155
+ inferenceRuntimeDigest: string;
156
+ trainingRuntimeDigest: string;
157
+ }>;
158
+ steps: z.ZodArray<z.ZodObject<{
159
+ id: z.ZodEnum<["close-inference", "drain-inference", "stop-vllm", "start-training", "open-training", "close-training", "drain-training", "stop-training", "start-vllm", "warm-vllm", "open-inference", "rollback"]>;
160
+ state: z.ZodEnum<["pending", "running", "succeeded", "skipped", "failed"]>;
161
+ completedAt: z.ZodNullable<z.ZodString>;
162
+ }, "strict", z.ZodTypeAny, {
163
+ id: "close-inference" | "drain-inference" | "stop-vllm" | "start-training" | "open-training" | "close-training" | "drain-training" | "stop-training" | "start-vllm" | "warm-vllm" | "open-inference" | "rollback";
164
+ state: "pending" | "failed" | "running" | "succeeded" | "skipped";
165
+ completedAt: string | null;
166
+ }, {
167
+ id: "close-inference" | "drain-inference" | "stop-vllm" | "start-training" | "open-training" | "close-training" | "drain-training" | "stop-training" | "start-vllm" | "warm-vllm" | "open-inference" | "rollback";
168
+ state: "pending" | "failed" | "running" | "succeeded" | "skipped";
169
+ completedAt: string | null;
170
+ }>, "many">;
171
+ startedAt: z.ZodString;
172
+ completedAt: z.ZodNullable<z.ZodString>;
173
+ }, "strict", z.ZodTypeAny, {
174
+ schemaVersion: "treeseed.ai-mode-transition-receipt/v1";
175
+ state: "degraded" | "running" | "succeeded" | "planned" | "postponed" | "rolled-back";
176
+ resource: "ai-gpu";
177
+ completedAt: string | null;
178
+ idempotencyKey: string;
179
+ transitionId: string;
180
+ requestedBy: "operator" | "ai-lab";
181
+ from: "awake" | "sleep";
182
+ to: "awake" | "sleep";
183
+ reason: "active-inference" | "active-training" | "transition-failed" | "recovery-failed" | null;
184
+ fingerprint: {
185
+ inferenceRuntimeDigest: string;
186
+ trainingRuntimeDigest: string;
187
+ };
188
+ steps: {
189
+ id: "close-inference" | "drain-inference" | "stop-vllm" | "start-training" | "open-training" | "close-training" | "drain-training" | "stop-training" | "start-vllm" | "warm-vllm" | "open-inference" | "rollback";
190
+ state: "pending" | "failed" | "running" | "succeeded" | "skipped";
191
+ completedAt: string | null;
192
+ }[];
193
+ startedAt: string;
194
+ }, {
195
+ schemaVersion: "treeseed.ai-mode-transition-receipt/v1";
196
+ state: "degraded" | "running" | "succeeded" | "planned" | "postponed" | "rolled-back";
197
+ resource: "ai-gpu";
198
+ completedAt: string | null;
199
+ idempotencyKey: string;
200
+ transitionId: string;
201
+ requestedBy: "operator" | "ai-lab";
202
+ from: "awake" | "sleep";
203
+ to: "awake" | "sleep";
204
+ reason: "active-inference" | "active-training" | "transition-failed" | "recovery-failed" | null;
205
+ fingerprint: {
206
+ inferenceRuntimeDigest: string;
207
+ trainingRuntimeDigest: string;
208
+ };
209
+ steps: {
210
+ id: "close-inference" | "drain-inference" | "stop-vllm" | "start-training" | "open-training" | "close-training" | "drain-training" | "stop-training" | "start-vllm" | "warm-vllm" | "open-inference" | "rollback";
211
+ state: "pending" | "failed" | "running" | "succeeded" | "skipped";
212
+ completedAt: string | null;
213
+ }[];
214
+ startedAt: string;
215
+ }>>;
216
+ lastReceipt: z.ZodNullable<z.ZodObject<{
217
+ schemaVersion: z.ZodLiteral<"treeseed.ai-mode-transition-receipt/v1">;
218
+ transitionId: z.ZodString;
219
+ idempotencyKey: z.ZodString;
220
+ resource: z.ZodLiteral<"ai-gpu">;
221
+ requestedBy: z.ZodEnum<["operator", "ai-lab"]>;
222
+ from: z.ZodEnum<["awake", "sleep"]>;
223
+ to: z.ZodEnum<["awake", "sleep"]>;
224
+ state: z.ZodEnum<["planned", "running", "succeeded", "postponed", "rolled-back", "degraded"]>;
225
+ reason: z.ZodNullable<z.ZodEnum<["active-inference", "active-training", "transition-failed", "recovery-failed"]>>;
226
+ fingerprint: z.ZodObject<{
227
+ inferenceRuntimeDigest: z.ZodString;
228
+ trainingRuntimeDigest: z.ZodString;
229
+ }, "strict", z.ZodTypeAny, {
230
+ inferenceRuntimeDigest: string;
231
+ trainingRuntimeDigest: string;
232
+ }, {
233
+ inferenceRuntimeDigest: string;
234
+ trainingRuntimeDigest: string;
235
+ }>;
236
+ steps: z.ZodArray<z.ZodObject<{
237
+ id: z.ZodEnum<["close-inference", "drain-inference", "stop-vllm", "start-training", "open-training", "close-training", "drain-training", "stop-training", "start-vllm", "warm-vllm", "open-inference", "rollback"]>;
238
+ state: z.ZodEnum<["pending", "running", "succeeded", "skipped", "failed"]>;
239
+ completedAt: z.ZodNullable<z.ZodString>;
240
+ }, "strict", z.ZodTypeAny, {
241
+ id: "close-inference" | "drain-inference" | "stop-vllm" | "start-training" | "open-training" | "close-training" | "drain-training" | "stop-training" | "start-vllm" | "warm-vllm" | "open-inference" | "rollback";
242
+ state: "pending" | "failed" | "running" | "succeeded" | "skipped";
243
+ completedAt: string | null;
244
+ }, {
245
+ id: "close-inference" | "drain-inference" | "stop-vllm" | "start-training" | "open-training" | "close-training" | "drain-training" | "stop-training" | "start-vllm" | "warm-vllm" | "open-inference" | "rollback";
246
+ state: "pending" | "failed" | "running" | "succeeded" | "skipped";
247
+ completedAt: string | null;
248
+ }>, "many">;
249
+ startedAt: z.ZodString;
250
+ completedAt: z.ZodNullable<z.ZodString>;
251
+ }, "strict", z.ZodTypeAny, {
252
+ schemaVersion: "treeseed.ai-mode-transition-receipt/v1";
253
+ state: "degraded" | "running" | "succeeded" | "planned" | "postponed" | "rolled-back";
254
+ resource: "ai-gpu";
255
+ completedAt: string | null;
256
+ idempotencyKey: string;
257
+ transitionId: string;
258
+ requestedBy: "operator" | "ai-lab";
259
+ from: "awake" | "sleep";
260
+ to: "awake" | "sleep";
261
+ reason: "active-inference" | "active-training" | "transition-failed" | "recovery-failed" | null;
262
+ fingerprint: {
263
+ inferenceRuntimeDigest: string;
264
+ trainingRuntimeDigest: string;
265
+ };
266
+ steps: {
267
+ id: "close-inference" | "drain-inference" | "stop-vllm" | "start-training" | "open-training" | "close-training" | "drain-training" | "stop-training" | "start-vllm" | "warm-vllm" | "open-inference" | "rollback";
268
+ state: "pending" | "failed" | "running" | "succeeded" | "skipped";
269
+ completedAt: string | null;
270
+ }[];
271
+ startedAt: string;
272
+ }, {
273
+ schemaVersion: "treeseed.ai-mode-transition-receipt/v1";
274
+ state: "degraded" | "running" | "succeeded" | "planned" | "postponed" | "rolled-back";
275
+ resource: "ai-gpu";
276
+ completedAt: string | null;
277
+ idempotencyKey: string;
278
+ transitionId: string;
279
+ requestedBy: "operator" | "ai-lab";
280
+ from: "awake" | "sleep";
281
+ to: "awake" | "sleep";
282
+ reason: "active-inference" | "active-training" | "transition-failed" | "recovery-failed" | null;
283
+ fingerprint: {
284
+ inferenceRuntimeDigest: string;
285
+ trainingRuntimeDigest: string;
286
+ };
287
+ steps: {
288
+ id: "close-inference" | "drain-inference" | "stop-vllm" | "start-training" | "open-training" | "close-training" | "drain-training" | "stop-training" | "start-vllm" | "warm-vllm" | "open-inference" | "rollback";
289
+ state: "pending" | "failed" | "running" | "succeeded" | "skipped";
290
+ completedAt: string | null;
291
+ }[];
292
+ startedAt: string;
293
+ }>>;
294
+ }, "strict", z.ZodTypeAny, {
295
+ schemaVersion: "treeseed.ai-mode-status/v1";
296
+ mode: "degraded" | "awake" | "sleep" | "transitioning-awake" | "transitioning-sleep" | "unavailable";
297
+ resource: "ai-gpu";
298
+ fingerprint: {
299
+ inferenceRuntimeDigest: string;
300
+ trainingRuntimeDigest: string;
301
+ } | null;
302
+ available: boolean;
303
+ activeTransition: {
304
+ schemaVersion: "treeseed.ai-mode-transition-receipt/v1";
305
+ state: "degraded" | "running" | "succeeded" | "planned" | "postponed" | "rolled-back";
306
+ resource: "ai-gpu";
307
+ completedAt: string | null;
308
+ idempotencyKey: string;
309
+ transitionId: string;
310
+ requestedBy: "operator" | "ai-lab";
311
+ from: "awake" | "sleep";
312
+ to: "awake" | "sleep";
313
+ reason: "active-inference" | "active-training" | "transition-failed" | "recovery-failed" | null;
314
+ fingerprint: {
315
+ inferenceRuntimeDigest: string;
316
+ trainingRuntimeDigest: string;
317
+ };
318
+ steps: {
319
+ id: "close-inference" | "drain-inference" | "stop-vllm" | "start-training" | "open-training" | "close-training" | "drain-training" | "stop-training" | "start-vllm" | "warm-vllm" | "open-inference" | "rollback";
320
+ state: "pending" | "failed" | "running" | "succeeded" | "skipped";
321
+ completedAt: string | null;
322
+ }[];
323
+ startedAt: string;
324
+ } | null;
325
+ lastReceipt: {
326
+ schemaVersion: "treeseed.ai-mode-transition-receipt/v1";
327
+ state: "degraded" | "running" | "succeeded" | "planned" | "postponed" | "rolled-back";
328
+ resource: "ai-gpu";
329
+ completedAt: string | null;
330
+ idempotencyKey: string;
331
+ transitionId: string;
332
+ requestedBy: "operator" | "ai-lab";
333
+ from: "awake" | "sleep";
334
+ to: "awake" | "sleep";
335
+ reason: "active-inference" | "active-training" | "transition-failed" | "recovery-failed" | null;
336
+ fingerprint: {
337
+ inferenceRuntimeDigest: string;
338
+ trainingRuntimeDigest: string;
339
+ };
340
+ steps: {
341
+ id: "close-inference" | "drain-inference" | "stop-vllm" | "start-training" | "open-training" | "close-training" | "drain-training" | "stop-training" | "start-vllm" | "warm-vllm" | "open-inference" | "rollback";
342
+ state: "pending" | "failed" | "running" | "succeeded" | "skipped";
343
+ completedAt: string | null;
344
+ }[];
345
+ startedAt: string;
346
+ } | null;
347
+ }, {
348
+ schemaVersion: "treeseed.ai-mode-status/v1";
349
+ mode: "degraded" | "awake" | "sleep" | "transitioning-awake" | "transitioning-sleep" | "unavailable";
350
+ resource: "ai-gpu";
351
+ fingerprint: {
352
+ inferenceRuntimeDigest: string;
353
+ trainingRuntimeDigest: string;
354
+ } | null;
355
+ available: boolean;
356
+ activeTransition: {
357
+ schemaVersion: "treeseed.ai-mode-transition-receipt/v1";
358
+ state: "degraded" | "running" | "succeeded" | "planned" | "postponed" | "rolled-back";
359
+ resource: "ai-gpu";
360
+ completedAt: string | null;
361
+ idempotencyKey: string;
362
+ transitionId: string;
363
+ requestedBy: "operator" | "ai-lab";
364
+ from: "awake" | "sleep";
365
+ to: "awake" | "sleep";
366
+ reason: "active-inference" | "active-training" | "transition-failed" | "recovery-failed" | null;
367
+ fingerprint: {
368
+ inferenceRuntimeDigest: string;
369
+ trainingRuntimeDigest: string;
370
+ };
371
+ steps: {
372
+ id: "close-inference" | "drain-inference" | "stop-vllm" | "start-training" | "open-training" | "close-training" | "drain-training" | "stop-training" | "start-vllm" | "warm-vllm" | "open-inference" | "rollback";
373
+ state: "pending" | "failed" | "running" | "succeeded" | "skipped";
374
+ completedAt: string | null;
375
+ }[];
376
+ startedAt: string;
377
+ } | null;
378
+ lastReceipt: {
379
+ schemaVersion: "treeseed.ai-mode-transition-receipt/v1";
380
+ state: "degraded" | "running" | "succeeded" | "planned" | "postponed" | "rolled-back";
381
+ resource: "ai-gpu";
382
+ completedAt: string | null;
383
+ idempotencyKey: string;
384
+ transitionId: string;
385
+ requestedBy: "operator" | "ai-lab";
386
+ from: "awake" | "sleep";
387
+ to: "awake" | "sleep";
388
+ reason: "active-inference" | "active-training" | "transition-failed" | "recovery-failed" | null;
389
+ fingerprint: {
390
+ inferenceRuntimeDigest: string;
391
+ trainingRuntimeDigest: string;
392
+ };
393
+ steps: {
394
+ id: "close-inference" | "drain-inference" | "stop-vllm" | "start-training" | "open-training" | "close-training" | "drain-training" | "stop-training" | "start-vllm" | "warm-vllm" | "open-inference" | "rollback";
395
+ state: "pending" | "failed" | "running" | "succeeded" | "skipped";
396
+ completedAt: string | null;
397
+ }[];
398
+ startedAt: string;
399
+ } | null;
400
+ }>;
401
+ export declare const aiModeInternalControlSchema: z.ZodObject<{
402
+ schemaVersion: z.ZodLiteral<"treeseed.ai-mode-internal-control/v1">;
403
+ transport: z.ZodLiteral<"mtls">;
404
+ clientCommonName: z.ZodLiteral<"client-ai-lab-mode">;
405
+ method: z.ZodLiteral<"POST">;
406
+ path: z.ZodLiteral<string>;
407
+ urlEnvironment: z.ZodLiteral<"TREESEED_AI_MODE_URL">;
408
+ credentialFiles: z.ZodObject<{
409
+ certificateAuthority: z.ZodLiteral<"/run/secrets/ai-mode-ca">;
410
+ certificate: z.ZodLiteral<"/run/secrets/ai-mode-client-cert">;
411
+ privateKey: z.ZodLiteral<"/run/secrets/ai-mode-client-key">;
412
+ }, "strict", z.ZodTypeAny, {
413
+ certificateAuthority: "/run/secrets/ai-mode-ca";
414
+ certificate: "/run/secrets/ai-mode-client-cert";
415
+ privateKey: "/run/secrets/ai-mode-client-key";
416
+ }, {
417
+ certificateAuthority: "/run/secrets/ai-mode-ca";
418
+ certificate: "/run/secrets/ai-mode-client-cert";
419
+ privateKey: "/run/secrets/ai-mode-client-key";
420
+ }>;
421
+ requestSchema: z.ZodLiteral<"treeseed.ai-mode-request/v1">;
422
+ receiptSchema: z.ZodLiteral<"treeseed.ai-mode-transition-receipt/v1">;
423
+ }, "strict", z.ZodTypeAny, {
424
+ path: string;
425
+ schemaVersion: "treeseed.ai-mode-internal-control/v1";
426
+ transport: "mtls";
427
+ clientCommonName: "client-ai-lab-mode";
428
+ method: "POST";
429
+ urlEnvironment: "TREESEED_AI_MODE_URL";
430
+ credentialFiles: {
431
+ certificateAuthority: "/run/secrets/ai-mode-ca";
432
+ certificate: "/run/secrets/ai-mode-client-cert";
433
+ privateKey: "/run/secrets/ai-mode-client-key";
434
+ };
435
+ requestSchema: "treeseed.ai-mode-request/v1";
436
+ receiptSchema: "treeseed.ai-mode-transition-receipt/v1";
437
+ }, {
438
+ path: string;
439
+ schemaVersion: "treeseed.ai-mode-internal-control/v1";
440
+ transport: "mtls";
441
+ clientCommonName: "client-ai-lab-mode";
442
+ method: "POST";
443
+ urlEnvironment: "TREESEED_AI_MODE_URL";
444
+ credentialFiles: {
445
+ certificateAuthority: "/run/secrets/ai-mode-ca";
446
+ certificate: "/run/secrets/ai-mode-client-cert";
447
+ privateKey: "/run/secrets/ai-mode-client-key";
448
+ };
449
+ requestSchema: "treeseed.ai-mode-request/v1";
450
+ receiptSchema: "treeseed.ai-mode-transition-receipt/v1";
451
+ }>;
452
+ export type AiModeRequest = z.infer<typeof aiModeRequestSchema>;
453
+ export type AiModeTransitionReceipt = z.infer<typeof aiModeTransitionReceiptSchema>;
454
+ export type AiModeStatus = z.infer<typeof aiModeStatusSchema>;
@@ -0,0 +1,67 @@
1
+ import { z } from "zod";
2
+ const AI_MODE_INTERNAL_PATH = `${["", "v1"].join("/")}/ai/mode`;
3
+ const aiModeSchema = z.enum(["awake", "sleep"]);
4
+ const aiModeFingerprintSchema = z.object({
5
+ inferenceRuntimeDigest: z.string().regex(/^sha256:[a-f0-9]{64}$/u),
6
+ trainingRuntimeDigest: z.string().regex(/^sha256:[a-f0-9]{64}$/u)
7
+ }).strict();
8
+ const aiModeRequestSchema = z.object({
9
+ schemaVersion: z.literal("treeseed.ai-mode-request/v1"),
10
+ target: aiModeSchema,
11
+ idempotencyKey: z.string().min(1).max(128).regex(/^[A-Za-z0-9._:-]+$/u),
12
+ drainTimeoutSeconds: z.number().int().min(1).max(3600).default(900)
13
+ }).strict();
14
+ const aiModeTransitionStepSchema = z.object({
15
+ id: z.enum(["close-inference", "drain-inference", "stop-vllm", "start-training", "open-training", "close-training", "drain-training", "stop-training", "start-vllm", "warm-vllm", "open-inference", "rollback"]),
16
+ state: z.enum(["pending", "running", "succeeded", "skipped", "failed"]),
17
+ completedAt: z.string().datetime().nullable()
18
+ }).strict();
19
+ const aiModeTransitionReceiptSchema = z.object({
20
+ schemaVersion: z.literal("treeseed.ai-mode-transition-receipt/v1"),
21
+ transitionId: z.string().uuid(),
22
+ idempotencyKey: z.string().min(1).max(128),
23
+ resource: z.literal("ai-gpu"),
24
+ requestedBy: z.enum(["operator", "ai-lab"]),
25
+ from: aiModeSchema,
26
+ to: aiModeSchema,
27
+ state: z.enum(["planned", "running", "succeeded", "postponed", "rolled-back", "degraded"]),
28
+ reason: z.enum(["active-inference", "active-training", "transition-failed", "recovery-failed"]).nullable(),
29
+ fingerprint: aiModeFingerprintSchema,
30
+ steps: z.array(aiModeTransitionStepSchema),
31
+ startedAt: z.string().datetime(),
32
+ completedAt: z.string().datetime().nullable()
33
+ }).strict();
34
+ const aiModeStatusSchema = z.object({
35
+ schemaVersion: z.literal("treeseed.ai-mode-status/v1"),
36
+ resource: z.literal("ai-gpu"),
37
+ available: z.boolean(),
38
+ mode: z.enum(["awake", "sleep", "transitioning-awake", "transitioning-sleep", "degraded", "unavailable"]),
39
+ fingerprint: aiModeFingerprintSchema.nullable(),
40
+ activeTransition: aiModeTransitionReceiptSchema.nullable(),
41
+ lastReceipt: aiModeTransitionReceiptSchema.nullable()
42
+ }).strict();
43
+ const aiModeInternalControlSchema = z.object({
44
+ schemaVersion: z.literal("treeseed.ai-mode-internal-control/v1"),
45
+ transport: z.literal("mtls"),
46
+ clientCommonName: z.literal("client-ai-lab-mode"),
47
+ method: z.literal("POST"),
48
+ path: z.literal(AI_MODE_INTERNAL_PATH),
49
+ urlEnvironment: z.literal("TREESEED_AI_MODE_URL"),
50
+ credentialFiles: z.object({
51
+ certificateAuthority: z.literal("/run/secrets/ai-mode-ca"),
52
+ certificate: z.literal("/run/secrets/ai-mode-client-cert"),
53
+ privateKey: z.literal("/run/secrets/ai-mode-client-key")
54
+ }).strict(),
55
+ requestSchema: z.literal("treeseed.ai-mode-request/v1"),
56
+ receiptSchema: z.literal("treeseed.ai-mode-transition-receipt/v1")
57
+ }).strict();
58
+ export {
59
+ AI_MODE_INTERNAL_PATH,
60
+ aiModeFingerprintSchema,
61
+ aiModeInternalControlSchema,
62
+ aiModeRequestSchema,
63
+ aiModeSchema,
64
+ aiModeStatusSchema,
65
+ aiModeTransitionReceiptSchema,
66
+ aiModeTransitionStepSchema
67
+ };
@@ -2,3 +2,4 @@ export * from './schemas.js';
2
2
  export * from './canonical.js';
3
3
  export * from './catalog.js';
4
4
  export * from './topology.js';
5
+ export * from './ai-mode.js';
@@ -2,3 +2,4 @@ export * from "./schemas.js";
2
2
  export * from "./canonical.js";
3
3
  export * from "./catalog.js";
4
4
  export * from "./topology.js";
5
+ export * from "./ai-mode.js";