@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.
- package/dist/addon/base-addon.d.ts +32 -0
- package/dist/addon/secret-aware-context.d.ts +49 -6
- package/dist/addon/secret-settings-view.d.ts +23 -1
- package/dist/addon/secret-write-back.d.ts +40 -0
- package/dist/addon.js +5 -7
- package/dist/addon.mjs +5 -7
- package/dist/auth/app-callback.d.ts +28 -0
- package/dist/auth/sso-state.d.ts +16 -0
- package/dist/capabilities/addon-routes.cap.d.ts +3 -0
- package/dist/capabilities/addons.cap.d.ts +4 -4
- package/dist/capabilities/backup.cap.d.ts +101 -1
- package/dist/capabilities/broker.cap.d.ts +4 -4
- package/dist/capabilities/custom-model-registry.cap.d.ts +520 -0
- package/dist/capabilities/device-manager.cap.d.ts +4 -4
- package/dist/capabilities/hub-address.d.ts +2 -2
- package/dist/capabilities/index.d.ts +12 -6
- package/dist/capabilities/keychain-admin.cap.d.ts +83 -0
- package/dist/capabilities/login-method.cap.d.ts +5 -6
- package/dist/capabilities/notification-output.cap.d.ts +4 -4
- package/dist/capabilities/notification-rules.cap.d.ts +6 -6
- package/dist/capabilities/osd-manager.cap.d.ts +5 -5
- package/dist/capabilities/pipeline-analytics.cap.d.ts +39 -8
- package/dist/capabilities/recording.cap.d.ts +3 -3
- package/dist/capabilities/server-management.cap.d.ts +5 -5
- package/dist/capabilities/snapshot.cap.d.ts +2 -2
- package/dist/capabilities/sso-bridge.cap.d.ts +5 -2
- package/dist/capabilities/training-provider.cap.d.ts +373 -0
- package/dist/capabilities/training.cap.d.ts +1896 -0
- package/dist/capabilities/user-management.cap.d.ts +1 -64
- package/dist/capabilities/videoclips.cap.d.ts +3 -3
- package/dist/client.js +26 -4
- package/dist/client.mjs +26 -4
- package/dist/generated/addon-api.d.ts +842 -173
- package/dist/generated/cap-input-defaults.d.ts +1 -1
- package/dist/generated/capability-router-map.d.ts +10 -4
- package/dist/generated/collection-array-methods.d.ts +1 -1
- package/dist/generated/method-access-map.d.ts +1 -1
- package/dist/generated/method-device-selectors.d.ts +2 -2
- package/dist/generated/system-proxy.d.ts +5 -3
- package/dist/index.d.ts +3 -0
- package/dist/index.js +1462 -93
- package/dist/index.mjs +1413 -92
- package/dist/interfaces/addon-routes.d.ts +7 -0
- package/dist/interfaces/addon.d.ts +8 -0
- package/dist/interfaces/auth.d.ts +6 -3
- package/dist/schemas/auth-records.d.ts +1 -2
- package/dist/{sleep-ClNXPpWR.js → sleep-DiQYrfm9.js} +425 -75
- package/dist/{sleep-DujUvOcb.mjs → sleep-r3RWkGVx.mjs} +425 -75
- package/dist/training/index.d.ts +1 -0
- package/dist/training/trainer-contract.d.ts +468 -0
- 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,
|
|
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
|
|
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>;
|