@camstack/types 1.2.331 → 1.2.333

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.
Files changed (51) hide show
  1. package/dist/addon/base-addon.d.ts +32 -0
  2. package/dist/addon/secret-aware-context.d.ts +49 -6
  3. package/dist/addon/secret-settings-view.d.ts +23 -1
  4. package/dist/addon/secret-write-back.d.ts +40 -0
  5. package/dist/addon.js +5 -7
  6. package/dist/addon.mjs +5 -7
  7. package/dist/auth/app-callback.d.ts +28 -0
  8. package/dist/auth/sso-state.d.ts +16 -0
  9. package/dist/capabilities/addon-routes.cap.d.ts +3 -0
  10. package/dist/capabilities/addons.cap.d.ts +4 -4
  11. package/dist/capabilities/backup.cap.d.ts +101 -1
  12. package/dist/capabilities/broker.cap.d.ts +4 -4
  13. package/dist/capabilities/custom-model-registry.cap.d.ts +520 -0
  14. package/dist/capabilities/device-manager.cap.d.ts +4 -4
  15. package/dist/capabilities/hub-address.d.ts +2 -2
  16. package/dist/capabilities/index.d.ts +12 -6
  17. package/dist/capabilities/keychain-admin.cap.d.ts +83 -0
  18. package/dist/capabilities/login-method.cap.d.ts +5 -6
  19. package/dist/capabilities/notification-output.cap.d.ts +4 -4
  20. package/dist/capabilities/notification-rules.cap.d.ts +6 -6
  21. package/dist/capabilities/osd-manager.cap.d.ts +5 -5
  22. package/dist/capabilities/pipeline-analytics.cap.d.ts +39 -8
  23. package/dist/capabilities/recording.cap.d.ts +3 -3
  24. package/dist/capabilities/server-management.cap.d.ts +5 -5
  25. package/dist/capabilities/snapshot.cap.d.ts +2 -2
  26. package/dist/capabilities/sso-bridge.cap.d.ts +5 -2
  27. package/dist/capabilities/training-provider.cap.d.ts +373 -0
  28. package/dist/capabilities/training.cap.d.ts +1896 -0
  29. package/dist/capabilities/user-management.cap.d.ts +1 -64
  30. package/dist/capabilities/videoclips.cap.d.ts +3 -3
  31. package/dist/client.js +26 -4
  32. package/dist/client.mjs +26 -4
  33. package/dist/generated/addon-api.d.ts +842 -173
  34. package/dist/generated/cap-input-defaults.d.ts +1 -1
  35. package/dist/generated/capability-router-map.d.ts +10 -4
  36. package/dist/generated/collection-array-methods.d.ts +1 -1
  37. package/dist/generated/method-access-map.d.ts +1 -1
  38. package/dist/generated/method-device-selectors.d.ts +2 -2
  39. package/dist/generated/system-proxy.d.ts +5 -3
  40. package/dist/index.d.ts +3 -0
  41. package/dist/index.js +1462 -93
  42. package/dist/index.mjs +1413 -92
  43. package/dist/interfaces/addon-routes.d.ts +7 -0
  44. package/dist/interfaces/addon.d.ts +8 -0
  45. package/dist/interfaces/auth.d.ts +6 -3
  46. package/dist/schemas/auth-records.d.ts +1 -2
  47. package/dist/{sleep-ClNXPpWR.js → sleep-DiQYrfm9.js} +425 -75
  48. package/dist/{sleep-DujUvOcb.mjs → sleep-r3RWkGVx.mjs} +425 -75
  49. package/dist/training/index.d.ts +1 -0
  50. package/dist/training/trainer-contract.d.ts +468 -0
  51. package/package.json +1 -1
@@ -101,9 +101,9 @@ export declare const snapshotCapability: {
101
101
  state: z.ZodObject<{
102
102
  isBattery: z.ZodBoolean;
103
103
  reason: z.ZodNullable<z.ZodEnum<{
104
+ unreachable: "unreachable";
104
105
  offline: "offline";
105
106
  disabled: "disabled";
106
- unreachable: "unreachable";
107
107
  sleeping: "sleeping";
108
108
  waking: "waking";
109
109
  }>>;
@@ -174,9 +174,9 @@ export declare const snapshotCapability: {
174
174
  neverCaptured: z.ZodBoolean;
175
175
  sleeping: z.ZodBoolean;
176
176
  stateReason: z.ZodNullable<z.ZodEnum<{
177
+ unreachable: "unreachable";
177
178
  offline: "offline";
178
179
  disabled: "disabled";
179
- unreachable: "unreachable";
180
180
  sleeping: "sleeping";
181
181
  waking: "waking";
182
182
  }>>;
@@ -2,7 +2,7 @@ import { z } from 'zod';
2
2
  import { type InferProvider } from './capability-definition.js';
3
3
  /**
4
4
  * `sso-bridge` — internal hub-only cap that lets SSO-style auth
5
- * providers (OIDC, SAML, magic-link, …) mint an HMAC-signed token
5
+ * providers (OIDC, SAML, …) mint an HMAC-signed token
6
6
  * carrying the post-callback claims before redirecting back to
7
7
  * `/api/auth/sso/finish`.
8
8
  *
@@ -78,6 +78,7 @@ declare const SsoBridgeClaimsSchema: z.ZodObject<{
78
78
  refreshTtl: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodLiteral<"never">]>>;
79
79
  linkIntent: z.ZodOptional<z.ZodString>;
80
80
  issuer: z.ZodOptional<z.ZodString>;
81
+ browserBinding: z.ZodOptional<z.ZodString>;
81
82
  }, z.core.$strip>;
82
83
  export declare const ssoBridgeCapability: {
83
84
  readonly name: "sso-bridge";
@@ -95,7 +96,7 @@ export declare const ssoBridgeCapability: {
95
96
  * `/api/auth/sso/finish` to become admin — a full privilege escalation
96
97
  * through the exact surface this cap exists to close (see the module
97
98
  * docblock). Every real caller (`oauth-grants.ts`, `main.ts`
98
- * registration, the OIDC/magic-link addons) reaches this through
99
+ * registration, the OIDC addon) reaches this through
99
100
  * `ctx.api` / the in-process registry — never through tRPC — so
100
101
  * `auth: 'admin'` costs those callers nothing.
101
102
  */
@@ -164,6 +165,7 @@ export declare const ssoBridgeCapability: {
164
165
  refreshTtl: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodLiteral<"never">]>>;
165
166
  linkIntent: z.ZodOptional<z.ZodString>;
166
167
  issuer: z.ZodOptional<z.ZodString>;
168
+ browserBinding: z.ZodOptional<z.ZodString>;
167
169
  }, z.core.$strip>;
168
170
  ttlSec: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodLiteral<"never">]>>;
169
171
  }, z.core.$strip>, z.ZodObject<{
@@ -235,6 +237,7 @@ export declare const ssoBridgeCapability: {
235
237
  refreshTtl: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodLiteral<"never">]>>;
236
238
  linkIntent: z.ZodOptional<z.ZodString>;
237
239
  issuer: z.ZodOptional<z.ZodString>;
240
+ browserBinding: z.ZodOptional<z.ZodString>;
238
241
  }, z.core.$strip>>, import("./capability-definition.js").CapabilityMethodKind>;
239
242
  };
240
243
  };
@@ -0,0 +1,373 @@
1
+ import { z } from 'zod';
2
+ import { type InferProvider } from './capability-definition.js';
3
+ /**
4
+ * `training-provider` — ONE cloud that can run the CamStack trainer.
5
+ *
6
+ * A thin, mockable translation layer: it knows how to run a container with a
7
+ * GPU, move a dataset in, read the job's stdout and hand artefacts back. It
8
+ * knows nothing about datasets, splits, floors, cost policy or Model Studio —
9
+ * those are the `training` orchestrator's (D805). Every rule written there
10
+ * once is what makes a second provider (RunPod, a local NVIDIA node) a new
11
+ * manifest entry and nothing else.
12
+ *
13
+ * Collection, routed by the `addonId` in every single-row input (the `llm` /
14
+ * `notification-output` posture); `describe` concat-fans across providers.
15
+ * Every method is `admin`: these spend money.
16
+ *
17
+ * Every cloud object a provider creates is tagged with the orchestrator's
18
+ * `jobKey`, so a retried submit finds the job it already started instead of
19
+ * starting a second GPU, and `listJobs` can find orphans.
20
+ *
21
+ * Bytes never ride a cap field: the dataset arrives as a `ctx.peerBytes`
22
+ * ticket the producer (pipeline-analytics) minted, and artefacts leave as a
23
+ * ticket the provider mints (D613).
24
+ */
25
+ export declare const TrainingGpuOptionSchema: z.ZodObject<{
26
+ id: z.ZodString;
27
+ label: z.ZodString;
28
+ usdPerHour: z.ZodNumber;
29
+ vramGb: z.ZodNumber;
30
+ }, z.core.$strip>;
31
+ export type TrainingGpuOption = z.infer<typeof TrainingGpuOptionSchema>;
32
+ export declare const TrainingRegionOptionSchema: z.ZodObject<{
33
+ id: z.ZodString;
34
+ label: z.ZodString;
35
+ priceMultiplier: z.ZodNumber;
36
+ }, z.core.$strip>;
37
+ export type TrainingRegionOption = z.infer<typeof TrainingRegionOptionSchema>;
38
+ /**
39
+ * The provider's per-account settings, as the orchestrator reads them. They
40
+ * live in the PROVIDER addon's settings (operator decision 2026-10-08: they
41
+ * depend on the user's account), never hard-coded in the orchestrator.
42
+ */
43
+ export declare const TrainingProviderDefaultsSchema: z.ZodObject<{
44
+ gpuType: z.ZodString;
45
+ region: z.ZodString;
46
+ costCapUsd: z.ZodNumber;
47
+ maxRuntimeSec: z.ZodNumber;
48
+ failedDatasetGraceHours: z.ZodNumber;
49
+ }, z.core.$strip>;
50
+ export type TrainingProviderDefaults = z.infer<typeof TrainingProviderDefaultsSchema>;
51
+ export declare const TrainingProviderDescriptorSchema: z.ZodObject<{
52
+ addonId: z.ZodString;
53
+ kind: z.ZodString;
54
+ label: z.ZodString;
55
+ gpuTypes: z.ZodReadonly<z.ZodArray<z.ZodObject<{
56
+ id: z.ZodString;
57
+ label: z.ZodString;
58
+ usdPerHour: z.ZodNumber;
59
+ vramGb: z.ZodNumber;
60
+ }, z.core.$strip>>>;
61
+ regions: z.ZodReadonly<z.ZodArray<z.ZodObject<{
62
+ id: z.ZodString;
63
+ label: z.ZodString;
64
+ priceMultiplier: z.ZodNumber;
65
+ }, z.core.$strip>>>;
66
+ maxDatasetBytes: z.ZodNumber;
67
+ maxRuntimeSec: z.ZodNumber;
68
+ freeTierNote: z.ZodOptional<z.ZodString>;
69
+ dataResidencyNote: z.ZodString;
70
+ configured: z.ZodBoolean;
71
+ defaults: z.ZodObject<{
72
+ gpuType: z.ZodString;
73
+ region: z.ZodString;
74
+ costCapUsd: z.ZodNumber;
75
+ maxRuntimeSec: z.ZodNumber;
76
+ failedDatasetGraceHours: z.ZodNumber;
77
+ }, z.core.$strip>;
78
+ }, z.core.$strip>;
79
+ export type TrainingProviderDescriptor = z.infer<typeof TrainingProviderDescriptorSchema>;
80
+ export declare const TrainingCredentialCheckSchema: z.ZodObject<{
81
+ ok: z.ZodBoolean;
82
+ account: z.ZodOptional<z.ZodString>;
83
+ reason: z.ZodOptional<z.ZodEnum<{
84
+ invalid: "invalid";
85
+ quota: "quota";
86
+ missing: "missing";
87
+ forbidden: "forbidden";
88
+ network: "network";
89
+ }>>;
90
+ detail: z.ZodOptional<z.ZodString>;
91
+ }, z.core.$strip>;
92
+ export type TrainingCredentialCheck = z.infer<typeof TrainingCredentialCheckSchema>;
93
+ export declare const ProviderJobStateSchema: z.ZodEnum<{
94
+ running: "running";
95
+ failed: "failed";
96
+ cancelled: "cancelled";
97
+ pending: "pending";
98
+ succeeded: "succeeded";
99
+ starting: "starting";
100
+ lost: "lost";
101
+ }>;
102
+ export type ProviderJobState = z.infer<typeof ProviderJobStateSchema>;
103
+ export declare const ProviderJobStatusSchema: z.ZodObject<{
104
+ jobKey: z.ZodString;
105
+ providerJobId: z.ZodOptional<z.ZodString>;
106
+ state: z.ZodEnum<{
107
+ running: "running";
108
+ failed: "failed";
109
+ cancelled: "cancelled";
110
+ pending: "pending";
111
+ succeeded: "succeeded";
112
+ starting: "starting";
113
+ lost: "lost";
114
+ }>;
115
+ startedAt: z.ZodOptional<z.ZodNumber>;
116
+ endedAt: z.ZodOptional<z.ZodNumber>;
117
+ exitCode: z.ZodOptional<z.ZodNumber>;
118
+ failureReason: z.ZodOptional<z.ZodString>;
119
+ gpuType: z.ZodString;
120
+ region: z.ZodOptional<z.ZodString>;
121
+ billedSeconds: z.ZodNumber;
122
+ costUsd: z.ZodNumber;
123
+ costIsEstimate: z.ZodBoolean;
124
+ lastFetchedAt: z.ZodNumber;
125
+ }, z.core.$strip>;
126
+ export type ProviderJobStatus = z.infer<typeof ProviderJobStatusSchema>;
127
+ /**
128
+ * The trainer the job runs, by SOURCE revision: the provider turns it into an
129
+ * image its own way (Modal builds the published Dockerfile at that revision;
130
+ * a registry-pull provider maps it to a tag). Recorded on the job and echoed
131
+ * in `result.json`.
132
+ */
133
+ export declare const TrainerSourceRefSchema: z.ZodObject<{
134
+ repo: z.ZodString;
135
+ revision: z.ZodString;
136
+ }, z.core.$strip>;
137
+ export type TrainerSourceRef = z.infer<typeof TrainerSourceRefSchema>;
138
+ export declare const TrainingLogLineSchema: z.ZodObject<{
139
+ ts: z.ZodNumber;
140
+ text: z.ZodString;
141
+ }, z.core.$strip>;
142
+ export type TrainingLogLine = z.infer<typeof TrainingLogLineSchema>;
143
+ export declare const trainingProviderCapability: {
144
+ readonly name: "training-provider";
145
+ readonly scope: "system";
146
+ readonly mode: "collection";
147
+ readonly internal: true;
148
+ readonly methods: {
149
+ /** Every provider's offer and settings. Concat-fans across providers. */
150
+ readonly describe: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{}, z.core.$strip>, z.ZodReadonly<z.ZodArray<z.ZodObject<{
151
+ addonId: z.ZodString;
152
+ kind: z.ZodString;
153
+ label: z.ZodString;
154
+ gpuTypes: z.ZodReadonly<z.ZodArray<z.ZodObject<{
155
+ id: z.ZodString;
156
+ label: z.ZodString;
157
+ usdPerHour: z.ZodNumber;
158
+ vramGb: z.ZodNumber;
159
+ }, z.core.$strip>>>;
160
+ regions: z.ZodReadonly<z.ZodArray<z.ZodObject<{
161
+ id: z.ZodString;
162
+ label: z.ZodString;
163
+ priceMultiplier: z.ZodNumber;
164
+ }, z.core.$strip>>>;
165
+ maxDatasetBytes: z.ZodNumber;
166
+ maxRuntimeSec: z.ZodNumber;
167
+ freeTierNote: z.ZodOptional<z.ZodString>;
168
+ dataResidencyNote: z.ZodString;
169
+ configured: z.ZodBoolean;
170
+ defaults: z.ZodObject<{
171
+ gpuType: z.ZodString;
172
+ region: z.ZodString;
173
+ costCapUsd: z.ZodNumber;
174
+ maxRuntimeSec: z.ZodNumber;
175
+ failedDatasetGraceHours: z.ZodNumber;
176
+ }, z.core.$strip>;
177
+ }, z.core.$strip>>>, import("./capability-definition.js").CapabilityMethodKind>;
178
+ /** Call the provider with the stored credentials. Never returns them. */
179
+ readonly validateCredentials: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
180
+ addonId: z.ZodString;
181
+ }, z.core.$strip>, z.ZodObject<{
182
+ ok: z.ZodBoolean;
183
+ account: z.ZodOptional<z.ZodString>;
184
+ reason: z.ZodOptional<z.ZodEnum<{
185
+ invalid: "invalid";
186
+ quota: "quota";
187
+ missing: "missing";
188
+ forbidden: "forbidden";
189
+ network: "network";
190
+ }>>;
191
+ detail: z.ZodOptional<z.ZodString>;
192
+ }, z.core.$strip>, "mutation">;
193
+ /** USD range for a run of `gpuSeconds` on `gpuType` in `region`. */
194
+ readonly estimateJob: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
195
+ addonId: z.ZodString;
196
+ gpuType: z.ZodString;
197
+ region: z.ZodString;
198
+ datasetBytes: z.ZodNumber;
199
+ gpuSecondsLow: z.ZodNumber;
200
+ gpuSecondsHigh: z.ZodNumber;
201
+ }, z.core.$strip>, z.ZodObject<{
202
+ usdLow: z.ZodNumber;
203
+ usdHigh: z.ZodNumber;
204
+ notes: z.ZodReadonly<z.ZodArray<z.ZodString>>;
205
+ }, z.core.$strip>, import("./capability-definition.js").CapabilityMethodKind>;
206
+ /**
207
+ * Take the dataset archive behind `ticket` (minted by pipeline-analytics,
208
+ * same host) and land it as the job's dataset in the cloud, streamed —
209
+ * nothing is staged on the hub's disk. Idempotent per `jobKey`: a second
210
+ * call replaces a partial upload. Answers what actually landed.
211
+ */
212
+ readonly uploadDataset: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
213
+ ticket: z.ZodObject<{
214
+ url: z.ZodString;
215
+ hostNodeId: z.ZodString;
216
+ expiresAtMs: z.ZodNumber;
217
+ declaredBytes: z.ZodNullable<z.ZodNumber>;
218
+ }, z.core.$strip>;
219
+ addonId: z.ZodString;
220
+ jobKey: z.ZodString;
221
+ }, z.core.$strip>, z.ZodObject<{
222
+ bytes: z.ZodNumber;
223
+ sha256: z.ZodString;
224
+ }, z.core.$strip>, "mutation">;
225
+ /**
226
+ * Start the trainer on a GPU. Looks the job up by `jobKey` first, so a
227
+ * retried submit never starts a second GPU. `jobSpecJson` is written next
228
+ * to the dataset as `job.json`; `maxRuntimeSec` is enforced by the
229
+ * provider (a hard timeout), not by the hub.
230
+ */
231
+ readonly submitJob: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
232
+ trainer: z.ZodObject<{
233
+ repo: z.ZodString;
234
+ revision: z.ZodString;
235
+ }, z.core.$strip>;
236
+ jobSpecJson: z.ZodString;
237
+ gpuType: z.ZodString;
238
+ region: z.ZodString;
239
+ maxRuntimeSec: z.ZodNumber;
240
+ addonId: z.ZodString;
241
+ jobKey: z.ZodString;
242
+ }, z.core.$strip>, z.ZodObject<{
243
+ jobKey: z.ZodString;
244
+ providerJobId: z.ZodOptional<z.ZodString>;
245
+ state: z.ZodEnum<{
246
+ running: "running";
247
+ failed: "failed";
248
+ cancelled: "cancelled";
249
+ pending: "pending";
250
+ succeeded: "succeeded";
251
+ starting: "starting";
252
+ lost: "lost";
253
+ }>;
254
+ startedAt: z.ZodOptional<z.ZodNumber>;
255
+ endedAt: z.ZodOptional<z.ZodNumber>;
256
+ exitCode: z.ZodOptional<z.ZodNumber>;
257
+ failureReason: z.ZodOptional<z.ZodString>;
258
+ gpuType: z.ZodString;
259
+ region: z.ZodOptional<z.ZodString>;
260
+ billedSeconds: z.ZodNumber;
261
+ costUsd: z.ZodNumber;
262
+ costIsEstimate: z.ZodBoolean;
263
+ lastFetchedAt: z.ZodNumber;
264
+ }, z.core.$strip>, "mutation">;
265
+ readonly getJob: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
266
+ addonId: z.ZodString;
267
+ jobKey: z.ZodString;
268
+ }, z.core.$strip>, z.ZodObject<{
269
+ jobKey: z.ZodString;
270
+ providerJobId: z.ZodOptional<z.ZodString>;
271
+ state: z.ZodEnum<{
272
+ running: "running";
273
+ failed: "failed";
274
+ cancelled: "cancelled";
275
+ pending: "pending";
276
+ succeeded: "succeeded";
277
+ starting: "starting";
278
+ lost: "lost";
279
+ }>;
280
+ startedAt: z.ZodOptional<z.ZodNumber>;
281
+ endedAt: z.ZodOptional<z.ZodNumber>;
282
+ exitCode: z.ZodOptional<z.ZodNumber>;
283
+ failureReason: z.ZodOptional<z.ZodString>;
284
+ gpuType: z.ZodString;
285
+ region: z.ZodOptional<z.ZodString>;
286
+ billedSeconds: z.ZodNumber;
287
+ costUsd: z.ZodNumber;
288
+ costIsEstimate: z.ZodBoolean;
289
+ lastFetchedAt: z.ZodNumber;
290
+ }, z.core.$strip>, import("./capability-definition.js").CapabilityMethodKind>;
291
+ /** Stdout/stderr since `cursor` (opaque), oldest first, at most `max` lines. */
292
+ readonly listJobEvents: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
293
+ cursor: z.ZodOptional<z.ZodString>;
294
+ max: z.ZodNumber;
295
+ addonId: z.ZodString;
296
+ jobKey: z.ZodString;
297
+ }, z.core.$strip>, z.ZodObject<{
298
+ lines: z.ZodReadonly<z.ZodArray<z.ZodObject<{
299
+ ts: z.ZodNumber;
300
+ text: z.ZodString;
301
+ }, z.core.$strip>>>;
302
+ cursor: z.ZodString;
303
+ }, z.core.$strip>, import("./capability-definition.js").CapabilityMethodKind>;
304
+ /** Stop the job. Idempotent: an unknown or finished job is a no-op. */
305
+ readonly cancelJob: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
306
+ addonId: z.ZodString;
307
+ jobKey: z.ZodString;
308
+ }, z.core.$strip>, z.ZodObject<{
309
+ ok: z.ZodLiteral<true>;
310
+ }, z.core.$strip>, "mutation">;
311
+ /** The job's `result.json`, as text (small, JSON). `found: false` before it exists. */
312
+ readonly readResult: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
313
+ addonId: z.ZodString;
314
+ jobKey: z.ZodString;
315
+ }, z.core.$strip>, z.ZodObject<{
316
+ found: z.ZodBoolean;
317
+ text: z.ZodOptional<z.ZodString>;
318
+ }, z.core.$strip>, "mutation">;
319
+ /**
320
+ * Offer one output file of the job (`bundle.tar`) to the caller as a
321
+ * one-shot `ctx.peerBytes` ticket, streamed from the cloud — the provider
322
+ * stages nothing on disk. The caller dials it at once.
323
+ */
324
+ readonly offerArtifact: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
325
+ path: z.ZodEnum<{
326
+ "bundle.tar": "bundle.tar";
327
+ }>;
328
+ addonId: z.ZodString;
329
+ jobKey: z.ZodString;
330
+ }, z.core.$strip>, z.ZodObject<{
331
+ ticket: z.ZodObject<{
332
+ url: z.ZodString;
333
+ hostNodeId: z.ZodString;
334
+ expiresAtMs: z.ZodNumber;
335
+ declaredBytes: z.ZodNullable<z.ZodNumber>;
336
+ }, z.core.$strip>;
337
+ }, z.core.$strip>, "mutation">;
338
+ /** Delete every cloud object tagged with `jobKey` (the dataset first). Idempotent. */
339
+ readonly cleanupJob: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
340
+ addonId: z.ZodString;
341
+ jobKey: z.ZodString;
342
+ }, z.core.$strip>, z.ZodObject<{
343
+ deleted: z.ZodReadonly<z.ZodArray<z.ZodString>>;
344
+ }, z.core.$strip>, "mutation">;
345
+ /** Every job the provider can still see — the orphan sweep diffs it against our records. */
346
+ readonly listJobs: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
347
+ addonId: z.ZodString;
348
+ }, z.core.$strip>, z.ZodReadonly<z.ZodArray<z.ZodObject<{
349
+ jobKey: z.ZodString;
350
+ providerJobId: z.ZodOptional<z.ZodString>;
351
+ state: z.ZodEnum<{
352
+ running: "running";
353
+ failed: "failed";
354
+ cancelled: "cancelled";
355
+ pending: "pending";
356
+ succeeded: "succeeded";
357
+ starting: "starting";
358
+ lost: "lost";
359
+ }>;
360
+ startedAt: z.ZodOptional<z.ZodNumber>;
361
+ endedAt: z.ZodOptional<z.ZodNumber>;
362
+ exitCode: z.ZodOptional<z.ZodNumber>;
363
+ failureReason: z.ZodOptional<z.ZodString>;
364
+ gpuType: z.ZodString;
365
+ region: z.ZodOptional<z.ZodString>;
366
+ billedSeconds: z.ZodNumber;
367
+ costUsd: z.ZodNumber;
368
+ costIsEstimate: z.ZodBoolean;
369
+ lastFetchedAt: z.ZodNumber;
370
+ }, z.core.$strip>>>, import("./capability-definition.js").CapabilityMethodKind>;
371
+ };
372
+ };
373
+ export type ITrainingCloudProvider = InferProvider<typeof trainingProviderCapability>;