openpond-sdk 0.8.0 → 0.8.2
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/TRAINING_PROTOCOL.md +38 -0
- package/dist/{chunk-CGIMLZE5.js → chunk-KIBRMKJQ.js} +310 -188
- package/dist/chunk-KIBRMKJQ.js.map +7 -0
- package/dist/dataset-workspaces.js +1 -1
- package/dist/model-starter-catalog.js +1 -1
- package/dist/model-starters.js +1 -1
- package/dist/taskset-drafts.js +1 -1
- package/dist/taskset-packages.js +1 -1
- package/dist/training-bundle.js +1 -1
- package/dist/training.js +17 -1
- package/dist/types/packages/sdk/src/training-preparations.d.ts +820 -0
- package/dist/types/packages/sdk/src/training-preparations.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/training.d.ts +392 -0
- package/dist/types/packages/sdk/src/training.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/chunk-CGIMLZE5.js.map +0 -7
|
@@ -20,15 +20,128 @@ import {
|
|
|
20
20
|
} from "./chunk-QUOW6URQ.js";
|
|
21
21
|
|
|
22
22
|
// src/training.ts
|
|
23
|
-
import { z as
|
|
23
|
+
import { z as z7 } from "zod";
|
|
24
24
|
|
|
25
|
-
// src/training-
|
|
25
|
+
// src/training-preparations.ts
|
|
26
26
|
import { z } from "zod";
|
|
27
|
-
var
|
|
28
|
-
|
|
27
|
+
var Id = z.string().trim().min(1).max(191);
|
|
28
|
+
var Hash = z.string().regex(/^[a-f0-9]{64}$/);
|
|
29
|
+
var TrainingPreparationRequestSchema = z.object({
|
|
30
|
+
schemaVersion: z.literal("openpond.trainingPreparationRequest.v1"),
|
|
31
|
+
teamId: Id,
|
|
32
|
+
operationId: Id,
|
|
33
|
+
projectId: Id.nullable(),
|
|
34
|
+
configuration: z.object({ id: Id, expectedRevision: z.number().int().positive(), expectedEtag: Hash }).strict(),
|
|
35
|
+
batch: ModelProjectVersionedRefSchema,
|
|
36
|
+
name: z.string().trim().min(1).max(191),
|
|
37
|
+
maximumSpendUsd: z.number().finite().positive().max(1e6)
|
|
38
|
+
}).strict();
|
|
39
|
+
var TrainingPreparationPlanContentSchema = z.object({
|
|
40
|
+
schemaVersion: z.literal("openpond.trainingPreparationPlan.v1"),
|
|
41
|
+
id: Id,
|
|
42
|
+
creatorUserId: Id,
|
|
43
|
+
request: TrainingPreparationRequestSchema,
|
|
44
|
+
requestHash: Hash,
|
|
45
|
+
source: z.lazy(() => TrainingJobSourceSchema),
|
|
46
|
+
submissionHash: Hash,
|
|
47
|
+
createdAt: z.string().datetime({ offset: true })
|
|
48
|
+
}).strict();
|
|
49
|
+
var TrainingPreparationPlanSchema = TrainingPreparationPlanContentSchema.extend({ contentHash: Hash }).strict();
|
|
50
|
+
var TrainingPreparationReceiptSchema = z.object({
|
|
51
|
+
schemaVersion: z.literal("openpond.trainingPreparationReceipt.v1"),
|
|
52
|
+
plan: TrainingPreparationPlanSchema,
|
|
53
|
+
revision: z.number().int().positive(),
|
|
54
|
+
state: z.enum(["prepared", "submitted", "cancelled"]),
|
|
55
|
+
jobId: Id.nullable()
|
|
56
|
+
}).strict().superRefine((value, context) => {
|
|
57
|
+
if (value.state === "submitted" !== Boolean(value.jobId)) context.addIssue({ code: "custom", path: ["jobId"], message: "Only submitted preparations identify a job." });
|
|
58
|
+
});
|
|
59
|
+
var TrainingPreparationControlSchema = z.object({
|
|
60
|
+
teamId: Id,
|
|
61
|
+
planHash: Hash,
|
|
62
|
+
expectedRevision: z.number().int().positive()
|
|
63
|
+
}).strict();
|
|
64
|
+
var TrainingPreparationListQuerySchema = z.object({
|
|
65
|
+
projectId: Id.optional(),
|
|
66
|
+
state: z.enum(["prepared", "submitted", "cancelled"]).optional(),
|
|
67
|
+
afterId: Id.optional(),
|
|
68
|
+
limit: z.number().int().min(1).max(100).default(25)
|
|
69
|
+
}).strict();
|
|
70
|
+
var TrainingPreparationPageSchema = z.object({
|
|
71
|
+
schemaVersion: z.literal("openpond.trainingPreparationPage.v1"),
|
|
72
|
+
teamId: Id,
|
|
73
|
+
items: z.array(TrainingPreparationReceiptSchema).max(100),
|
|
74
|
+
nextCursor: Id.nullable()
|
|
75
|
+
}).strict();
|
|
76
|
+
async function parseAndVerifyTrainingPreparationReceipt(value) {
|
|
77
|
+
const receipt = TrainingPreparationReceiptSchema.parse(value);
|
|
78
|
+
const { contentHash, ...plan } = receipt.plan;
|
|
79
|
+
if (await canonicalSha256(plan) !== contentHash || await canonicalSha256(plan.request) !== plan.requestHash || plan.source.modelProject.id !== plan.request.configuration.id) {
|
|
80
|
+
throw new OpenPondProtocolError("training_preparation_mismatch", "The prepared training inputs changed.");
|
|
81
|
+
}
|
|
82
|
+
return receipt;
|
|
83
|
+
}
|
|
84
|
+
function createTrainingPreparationClient(request) {
|
|
85
|
+
async function read(value, teamId, id) {
|
|
86
|
+
const receipt = await parseAndVerifyTrainingPreparationReceipt(value);
|
|
87
|
+
if (receipt.plan.request.teamId !== teamId || id && receipt.plan.id !== id)
|
|
88
|
+
throw new OpenPondProtocolError("training_preparation_scope_mismatch", "The training preparation belongs to a different workspace or request.");
|
|
89
|
+
return receipt;
|
|
90
|
+
}
|
|
91
|
+
return {
|
|
92
|
+
/** Discover the authenticated user's retained preparations without creating jobs. */
|
|
93
|
+
async listPreparations(teamId, input = {}) {
|
|
94
|
+
const scope = Id.parse(teamId);
|
|
95
|
+
const query = TrainingPreparationListQuerySchema.parse(input);
|
|
96
|
+
const params = new URLSearchParams();
|
|
97
|
+
for (const [key, value] of Object.entries(query)) params.set(key, String(value));
|
|
98
|
+
const page = TrainingPreparationPageSchema.parse(await request(`/v1/training/preparations?${params}`));
|
|
99
|
+
if (page.teamId !== scope || page.items.length > query.limit || new Set(page.items.map((item) => item.plan.id)).size !== page.items.length || page.nextCursor !== null && (page.nextCursor !== page.items.at(-1)?.plan.id || page.nextCursor === query.afterId)) {
|
|
100
|
+
throw new OpenPondProtocolError("training_preparation_page_mismatch", "The preparation page does not match its workspace or cursor.");
|
|
101
|
+
}
|
|
102
|
+
const items = await Promise.all(page.items.map(async (item) => {
|
|
103
|
+
const receipt = await read(item, scope);
|
|
104
|
+
if (query.projectId && receipt.plan.request.projectId !== query.projectId || query.state && receipt.state !== query.state) {
|
|
105
|
+
throw new OpenPondProtocolError("training_preparation_page_mismatch", "A preparation does not match the requested Project or state.");
|
|
106
|
+
}
|
|
107
|
+
return receipt;
|
|
108
|
+
}));
|
|
109
|
+
return { ...page, items };
|
|
110
|
+
},
|
|
111
|
+
async prepareRun(input) {
|
|
112
|
+
const parsed = TrainingPreparationRequestSchema.parse(input);
|
|
113
|
+
const receipt = await read(await request("/v1/training/preparations", { method: "POST", body: JSON.stringify(parsed) }), parsed.teamId);
|
|
114
|
+
if (receipt.plan.requestHash !== await canonicalSha256(parsed))
|
|
115
|
+
throw new OpenPondProtocolError("training_preparation_request_mismatch", "The preparation does not match the requested run.");
|
|
116
|
+
return receipt;
|
|
117
|
+
},
|
|
118
|
+
async getPreparation(teamId, id) {
|
|
119
|
+
return read(await request(`/v1/training/preparations/${encodeURIComponent(Id.parse(id))}`), Id.parse(teamId), id);
|
|
120
|
+
},
|
|
121
|
+
async startPreparation(id, input) {
|
|
122
|
+
const parsed = TrainingPreparationControlSchema.parse(input);
|
|
123
|
+
const receipt = await read(await request(`/v1/training/preparations/${encodeURIComponent(Id.parse(id))}/start`, { method: "POST", body: JSON.stringify(parsed) }), parsed.teamId, id);
|
|
124
|
+
if (receipt.plan.contentHash !== parsed.planHash || receipt.state !== "submitted")
|
|
125
|
+
throw new OpenPondProtocolError("training_preparation_start_mismatch", "The submitted run does not match the approved preparation.");
|
|
126
|
+
return receipt;
|
|
127
|
+
},
|
|
128
|
+
async cancelPreparation(id, input) {
|
|
129
|
+
const parsed = TrainingPreparationControlSchema.parse(input);
|
|
130
|
+
const receipt = await read(await request(`/v1/training/preparations/${encodeURIComponent(Id.parse(id))}/cancel`, { method: "POST", body: JSON.stringify(parsed) }), parsed.teamId, id);
|
|
131
|
+
if (receipt.plan.contentHash !== parsed.planHash || receipt.state !== "cancelled")
|
|
132
|
+
throw new OpenPondProtocolError("training_preparation_cancel_mismatch", "The preparation cancellation could not be verified.");
|
|
133
|
+
return receipt;
|
|
134
|
+
}
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
// src/training-harness-sources.ts
|
|
139
|
+
import { z as z2 } from "zod";
|
|
140
|
+
var TrainingHarnessSourcePublicationSchema = z2.object({
|
|
141
|
+
schemaVersion: z2.literal("openpond.trainingHarnessSourcePublication.v1"),
|
|
29
142
|
harnessRelease: ImmutableReleaseRefSchema,
|
|
30
|
-
sourcePackageHash:
|
|
31
|
-
sizeBytes:
|
|
143
|
+
sourcePackageHash: z2.string().regex(/^[a-f0-9]{64}$/),
|
|
144
|
+
sizeBytes: z2.number().int().positive().max(TRAINING_INPUT_ARTIFACT_MAX_BYTES)
|
|
32
145
|
}).strict();
|
|
33
146
|
function createTrainingHarnessSourceClient(request) {
|
|
34
147
|
const route = (reference) => {
|
|
@@ -58,28 +171,28 @@ function createTrainingHarnessSourceClient(request) {
|
|
|
58
171
|
}
|
|
59
172
|
|
|
60
173
|
// src/training-candidate-decisions.ts
|
|
61
|
-
import { z as
|
|
62
|
-
var IdSchema = /* @__PURE__ */ (() =>
|
|
63
|
-
var HashSchema = /* @__PURE__ */ (() =>
|
|
64
|
-
var TrainingCandidateDecisionRequestSchema = /* @__PURE__ */ (() =>
|
|
65
|
-
schemaVersion:
|
|
174
|
+
import { z as z3 } from "zod";
|
|
175
|
+
var IdSchema = /* @__PURE__ */ (() => z3.string().trim().min(1).max(500))();
|
|
176
|
+
var HashSchema = /* @__PURE__ */ (() => z3.string().regex(/^[a-f0-9]{64}$/))();
|
|
177
|
+
var TrainingCandidateDecisionRequestSchema = /* @__PURE__ */ (() => z3.object({
|
|
178
|
+
schemaVersion: z3.literal("openpond.trainingCandidateDecisionRequest.v1"),
|
|
66
179
|
teamId: IdSchema,
|
|
67
180
|
jobId: IdSchema,
|
|
68
181
|
artifact: ModelProjectImmutableRefSchema,
|
|
69
182
|
evaluation: ModelProjectImmutableRefSchema,
|
|
70
183
|
executionReceipt: ModelProjectImmutableRefSchema,
|
|
71
|
-
decision:
|
|
72
|
-
reason:
|
|
184
|
+
decision: z3.enum(["accepted", "rejected"]),
|
|
185
|
+
reason: z3.string().trim().min(1).max(5e3),
|
|
73
186
|
idempotencyKey: IdSchema,
|
|
74
187
|
expectedDecision: ModelProjectImmutableRefSchema.nullable()
|
|
75
188
|
}).strict())();
|
|
76
|
-
var TrainingCandidateDecisionSchema = /* @__PURE__ */ (() =>
|
|
77
|
-
schemaVersion:
|
|
189
|
+
var TrainingCandidateDecisionSchema = /* @__PURE__ */ (() => z3.object({
|
|
190
|
+
schemaVersion: z3.literal("openpond.trainingCandidateDecision.v1"),
|
|
78
191
|
id: IdSchema,
|
|
79
192
|
request: TrainingCandidateDecisionRequestSchema,
|
|
80
|
-
revision:
|
|
81
|
-
actor:
|
|
82
|
-
decidedAt:
|
|
193
|
+
revision: z3.number().int().positive(),
|
|
194
|
+
actor: z3.object({ userId: IdSchema, kind: z3.enum(["user", "api_key", "agent_delegate"]), id: IdSchema }).strict(),
|
|
195
|
+
decidedAt: z3.string().datetime({ offset: true }),
|
|
83
196
|
contentHash: HashSchema
|
|
84
197
|
}).strict().superRefine((value, context) => {
|
|
85
198
|
if (value.revision === 1 !== (value.request.expectedDecision === null)) {
|
|
@@ -116,7 +229,7 @@ function createTrainingCandidateDecisionClient(request) {
|
|
|
116
229
|
IdSchema.parse(target.teamId);
|
|
117
230
|
const reference = options.decision ? ModelProjectImmutableRefSchema.parse(options.decision) : void 0;
|
|
118
231
|
const query = reference ? `?decisionId=${encodeURIComponent(reference.id)}` : "";
|
|
119
|
-
const response =
|
|
232
|
+
const response = z3.object({ decision: z3.unknown().nullable() }).strict().parse(await request(`${route(target)}${query}`));
|
|
120
233
|
if (response.decision === null && !reference) return null;
|
|
121
234
|
const decision = await parseAndVerifyTrainingCandidateDecision(response.decision, target);
|
|
122
235
|
if (reference && (decision.id !== reference.id || decision.contentHash !== reference.contentHash)) {
|
|
@@ -133,38 +246,38 @@ function createTrainingCandidateDecisionClient(request) {
|
|
|
133
246
|
}
|
|
134
247
|
|
|
135
248
|
// src/training-evaluation-results.ts
|
|
136
|
-
import { z as
|
|
137
|
-
var IdSchema2 = /* @__PURE__ */ (() =>
|
|
138
|
-
var HashSchema2 = /* @__PURE__ */ (() =>
|
|
139
|
-
var TrainingEvaluationTaskResultSchema = /* @__PURE__ */ (() =>
|
|
249
|
+
import { z as z4 } from "zod";
|
|
250
|
+
var IdSchema2 = /* @__PURE__ */ (() => z4.string().trim().min(1).max(500))();
|
|
251
|
+
var HashSchema2 = /* @__PURE__ */ (() => z4.string().regex(/^[a-f0-9]{64}$/))();
|
|
252
|
+
var TrainingEvaluationTaskResultSchema = /* @__PURE__ */ (() => z4.object({
|
|
140
253
|
taskId: IdSchema2,
|
|
141
254
|
taskSha256: HashSchema2,
|
|
142
255
|
resultSha256: HashSchema2,
|
|
143
|
-
input:
|
|
144
|
-
instruction:
|
|
145
|
-
context:
|
|
256
|
+
input: z4.object({
|
|
257
|
+
instruction: z4.string().max(1e6),
|
|
258
|
+
context: z4.record(z4.string(), z4.unknown())
|
|
146
259
|
}).strict(),
|
|
147
|
-
output:
|
|
260
|
+
output: z4.string().max(1e6),
|
|
148
261
|
outputSha256: HashSchema2,
|
|
149
|
-
score:
|
|
150
|
-
evidence:
|
|
151
|
-
kind:
|
|
262
|
+
score: z4.number().finite().min(0).max(1),
|
|
263
|
+
evidence: z4.object({
|
|
264
|
+
kind: z4.enum(["worker_command", "hosted_trace", "local_trace"]),
|
|
152
265
|
id: IdSchema2
|
|
153
266
|
}).strict()
|
|
154
267
|
}).strict())();
|
|
155
|
-
var TrainingEvaluationTaskPageSchema = /* @__PURE__ */ (() =>
|
|
156
|
-
schemaVersion:
|
|
268
|
+
var TrainingEvaluationTaskPageSchema = /* @__PURE__ */ (() => z4.object({
|
|
269
|
+
schemaVersion: z4.literal("openpond.trainingEvaluationTaskPage.v1"),
|
|
157
270
|
jobId: IdSchema2,
|
|
158
271
|
teamId: IdSchema2,
|
|
159
272
|
evaluation: ModelProjectImmutableRefSchema,
|
|
160
|
-
kind:
|
|
161
|
-
policyVersion:
|
|
273
|
+
kind: z4.enum(["baseline", "candidate"]),
|
|
274
|
+
policyVersion: z4.number().int().nonnegative(),
|
|
162
275
|
taskset: ModelProjectVersionedRefSchema,
|
|
163
276
|
panelSha256: HashSchema2,
|
|
164
|
-
offset:
|
|
165
|
-
total:
|
|
166
|
-
tasks:
|
|
167
|
-
nextCursor:
|
|
277
|
+
offset: z4.number().int().nonnegative(),
|
|
278
|
+
total: z4.number().int().min(1).max(1e4),
|
|
279
|
+
tasks: z4.array(TrainingEvaluationTaskResultSchema).min(1).max(100),
|
|
280
|
+
nextCursor: z4.string().regex(/^[1-9]\d*$/).nullable(),
|
|
168
281
|
contentHash: HashSchema2
|
|
169
282
|
}).strict().superRefine((page, context) => {
|
|
170
283
|
const end = page.offset + page.tasks.length;
|
|
@@ -199,12 +312,12 @@ async function parseAndVerifyTrainingEvaluationTaskPage(value, expected) {
|
|
|
199
312
|
}
|
|
200
313
|
|
|
201
314
|
// src/training-grading-plan.ts
|
|
202
|
-
import { z as
|
|
315
|
+
import { z as z5 } from "zod";
|
|
203
316
|
import { compileBoundGraders, RewardBindingSchema, RewardReleaseSchema } from "@openpond/evals/rewards";
|
|
204
|
-
var GradersSchema =
|
|
205
|
-
var RewardExecutionSchema =
|
|
317
|
+
var GradersSchema = z5.array(z5.object({ id: z5.string().trim().min(1) }).catchall(z5.unknown())).min(1).max(1e3);
|
|
318
|
+
var RewardExecutionSchema = z5.object({
|
|
206
319
|
binding: RewardBindingSchema,
|
|
207
|
-
rewards:
|
|
320
|
+
rewards: z5.array(RewardReleaseSchema).min(1).max(100)
|
|
208
321
|
}).strict();
|
|
209
322
|
async function deterministicTrainingRewardSource(input) {
|
|
210
323
|
const execution = input.rewardExecution ? RewardExecutionSchema.parse(input.rewardExecution) : null;
|
|
@@ -221,23 +334,23 @@ async function deterministicTrainingRewardSource(input) {
|
|
|
221
334
|
}
|
|
222
335
|
|
|
223
336
|
// src/training-evaluation-source.ts
|
|
224
|
-
import { z as
|
|
337
|
+
import { z as z6 } from "zod";
|
|
225
338
|
var TRAINING_EVALUATION_SOURCE_PATH = "evaluation-source.json";
|
|
226
|
-
var TaskIdentitySchema =
|
|
227
|
-
id:
|
|
228
|
-
clusterKey:
|
|
229
|
-
split:
|
|
339
|
+
var TaskIdentitySchema = z6.object({
|
|
340
|
+
id: z6.string().trim().min(1),
|
|
341
|
+
clusterKey: z6.string().trim().min(1),
|
|
342
|
+
split: z6.enum(["train", "validation", "frozen_eval"])
|
|
230
343
|
}).passthrough();
|
|
231
|
-
var TrainingEvaluationSourceSchema =
|
|
232
|
-
schemaVersion:
|
|
344
|
+
var TrainingEvaluationSourceSchema = z6.object({
|
|
345
|
+
schemaVersion: z6.literal("openpond.trainingEvaluationSource.v1"),
|
|
233
346
|
taskset: ModelProjectVersionedRefSchema,
|
|
234
|
-
tasks:
|
|
235
|
-
assets:
|
|
236
|
-
path:
|
|
237
|
-
sha256:
|
|
238
|
-
sizeBytes:
|
|
239
|
-
encoding:
|
|
240
|
-
content:
|
|
347
|
+
tasks: z6.array(TaskIdentitySchema).min(1).max(1e4),
|
|
348
|
+
assets: z6.array(z6.object({
|
|
349
|
+
path: z6.string().trim().min(1).max(2e3),
|
|
350
|
+
sha256: z6.string().regex(/^[a-f0-9]{64}$/),
|
|
351
|
+
sizeBytes: z6.number().int().nonnegative(),
|
|
352
|
+
encoding: z6.literal("base64"),
|
|
353
|
+
content: z6.string().max(32 * 1024 * 1024)
|
|
241
354
|
}).strict()).max(1e4)
|
|
242
355
|
}).strict().superRefine((source, context) => {
|
|
243
356
|
const ids = /* @__PURE__ */ new Set();
|
|
@@ -248,8 +361,8 @@ var TrainingEvaluationSourceSchema = z5.object({
|
|
|
248
361
|
});
|
|
249
362
|
});
|
|
250
363
|
function assertTrainingEvaluationIsolation(trainingTasks, evaluationTasks) {
|
|
251
|
-
const training =
|
|
252
|
-
const evaluation =
|
|
364
|
+
const training = z6.array(TaskIdentitySchema).min(1).max(1e4).parse(trainingTasks);
|
|
365
|
+
const evaluation = z6.array(TaskIdentitySchema).min(1).max(1e4).parse(evaluationTasks);
|
|
253
366
|
const trainIds = /* @__PURE__ */ new Set();
|
|
254
367
|
const trainFamilies = /* @__PURE__ */ new Set();
|
|
255
368
|
for (const task of training) {
|
|
@@ -275,24 +388,24 @@ async function trainingEvaluationSourceRef(input) {
|
|
|
275
388
|
}
|
|
276
389
|
|
|
277
390
|
// src/training.ts
|
|
278
|
-
var IdSchema3 =
|
|
279
|
-
var HashSchema3 =
|
|
280
|
-
var TimestampSchema =
|
|
281
|
-
var TrainingInputArtifactUploadSchema =
|
|
282
|
-
schemaVersion:
|
|
283
|
-
kind:
|
|
284
|
-
idempotencyKey:
|
|
391
|
+
var IdSchema3 = z7.string().trim().min(1).max(500);
|
|
392
|
+
var HashSchema3 = z7.string().regex(/^[a-f0-9]{64}$/);
|
|
393
|
+
var TimestampSchema = z7.string().datetime({ offset: true });
|
|
394
|
+
var TrainingInputArtifactUploadSchema = z7.object({
|
|
395
|
+
schemaVersion: z7.literal("openpond.trainingInputArtifactUpload.v2"),
|
|
396
|
+
kind: z7.enum(["portable_training_bundle", "reward_model_dataset"]),
|
|
397
|
+
idempotencyKey: z7.string().trim().min(1).max(500),
|
|
285
398
|
sourceManifest: ModelProjectImmutableRefSchema,
|
|
286
|
-
payload:
|
|
399
|
+
payload: z7.unknown(),
|
|
287
400
|
contentHash: HashSchema3
|
|
288
401
|
}).strict();
|
|
289
|
-
var TrainingInputArtifactSchema =
|
|
290
|
-
schemaVersion:
|
|
291
|
-
kind:
|
|
402
|
+
var TrainingInputArtifactSchema = z7.object({
|
|
403
|
+
schemaVersion: z7.literal("openpond.trainingInputArtifact.v2"),
|
|
404
|
+
kind: z7.enum(["portable_training_bundle", "reward_model_dataset"]),
|
|
292
405
|
sourceManifest: ModelProjectImmutableRefSchema,
|
|
293
|
-
artifactRef:
|
|
406
|
+
artifactRef: z7.string().trim().min(1).max(2e3),
|
|
294
407
|
contentHash: HashSchema3,
|
|
295
|
-
sizeBytes:
|
|
408
|
+
sizeBytes: z7.number().int().positive(),
|
|
296
409
|
createdAt: TimestampSchema
|
|
297
410
|
}).strict();
|
|
298
411
|
async function trainingInputArtifactUploadHash(upload) {
|
|
@@ -315,11 +428,11 @@ async function parseAndVerifyTrainingInputArtifactUpload(value) {
|
|
|
315
428
|
}
|
|
316
429
|
return parsed;
|
|
317
430
|
}
|
|
318
|
-
var TrainingJobKindSchema =
|
|
431
|
+
var TrainingJobKindSchema = z7.enum([
|
|
319
432
|
"reward_model_train",
|
|
320
433
|
"policy_optimize"
|
|
321
434
|
]);
|
|
322
|
-
var TrainingJobStateSchema =
|
|
435
|
+
var TrainingJobStateSchema = z7.enum([
|
|
323
436
|
"queued",
|
|
324
437
|
"admitting",
|
|
325
438
|
"provisioning",
|
|
@@ -330,91 +443,91 @@ var TrainingJobStateSchema = z6.enum([
|
|
|
330
443
|
"failed",
|
|
331
444
|
"cancelled"
|
|
332
445
|
]);
|
|
333
|
-
var TrainingCapabilityRequirementSchema =
|
|
446
|
+
var TrainingCapabilityRequirementSchema = z7.object({
|
|
334
447
|
id: IdSchema3,
|
|
335
|
-
version:
|
|
336
|
-
required:
|
|
448
|
+
version: z7.string().trim().min(1).max(200).nullable().default(null),
|
|
449
|
+
required: z7.boolean().default(true)
|
|
337
450
|
}).strict();
|
|
338
|
-
var TrainingJobSourceSchema =
|
|
339
|
-
modelProject:
|
|
451
|
+
var TrainingJobSourceSchema = z7.object({
|
|
452
|
+
modelProject: z7.object({
|
|
340
453
|
id: IdSchema3,
|
|
341
454
|
portableProjectId: IdSchema3,
|
|
342
|
-
revision:
|
|
455
|
+
revision: z7.number().int().positive(),
|
|
343
456
|
contentHash: HashSchema3
|
|
344
457
|
}).strict(),
|
|
345
458
|
harnessRunManifest: ModelProjectImmutableRefSchema,
|
|
346
459
|
harnessRelease: ModelProjectImmutableRefSchema,
|
|
347
460
|
taskset: ModelProjectVersionedRefSchema,
|
|
348
461
|
tasksetRelease: ModelProjectImmutableRefSchema,
|
|
349
|
-
evaluation:
|
|
462
|
+
evaluation: z7.object({
|
|
350
463
|
taskset: ModelProjectVersionedRefSchema,
|
|
351
464
|
dataset: ModelProjectImmutableRefSchema
|
|
352
465
|
}).strict().nullable().optional(),
|
|
353
466
|
dataset: ModelProjectImmutableRefSchema,
|
|
354
|
-
evidenceSets:
|
|
467
|
+
evidenceSets: z7.array(ModelProjectImmutableRefSchema).max(1e4)
|
|
355
468
|
}).strict();
|
|
356
|
-
var RewardModelTrainingRequestSchema =
|
|
357
|
-
kind:
|
|
469
|
+
var RewardModelTrainingRequestSchema = z7.object({
|
|
470
|
+
kind: z7.literal("reward_model_train"),
|
|
358
471
|
baseModel: ModelProjectBaseModelSchema,
|
|
359
472
|
preferenceDatasetRelease: ModelProjectImmutableRefSchema,
|
|
360
473
|
processorRelease: ModelProjectImmutableRefSchema,
|
|
361
|
-
recipe:
|
|
362
|
-
schemaVersion:
|
|
363
|
-
method:
|
|
364
|
-
parameterization:
|
|
365
|
-
}).catchall(
|
|
474
|
+
recipe: z7.object({
|
|
475
|
+
schemaVersion: z7.literal("openpond.rewardModelRecipe.v1"),
|
|
476
|
+
method: z7.literal("reward_model"),
|
|
477
|
+
parameterization: z7.literal("lora_with_scalar_head")
|
|
478
|
+
}).catchall(z7.unknown())
|
|
366
479
|
}).strict();
|
|
367
|
-
var DeterministicRewardSourceSchema =
|
|
368
|
-
kind:
|
|
480
|
+
var DeterministicRewardSourceSchema = z7.object({
|
|
481
|
+
kind: z7.literal("deterministic"),
|
|
369
482
|
grader: ModelProjectImmutableRefSchema,
|
|
370
483
|
composer: ModelProjectImmutableRefSchema.nullable().default(null)
|
|
371
484
|
}).strict();
|
|
372
|
-
var LearnedRewardSourceSchema =
|
|
373
|
-
kind:
|
|
485
|
+
var LearnedRewardSourceSchema = z7.object({
|
|
486
|
+
kind: z7.literal("learned_reward"),
|
|
374
487
|
rewardModelVersion: ModelProjectImmutableRefSchema,
|
|
375
488
|
qualificationReport: ModelProjectImmutableRefSchema.nullable().default(null),
|
|
376
|
-
evaluationReferences:
|
|
377
|
-
scorerArtifact:
|
|
378
|
-
artifactRef:
|
|
489
|
+
evaluationReferences: z7.array(ModelProjectImmutableRefSchema).max(1e3).default([]),
|
|
490
|
+
scorerArtifact: z7.object({
|
|
491
|
+
artifactRef: z7.string().trim().min(1).max(2e3),
|
|
379
492
|
contentHash: HashSchema3,
|
|
380
493
|
executionReceipt: ModelProjectImmutableRefSchema
|
|
381
494
|
}).strict(),
|
|
382
495
|
processorRelease: ModelProjectImmutableRefSchema,
|
|
383
496
|
rewardComposerRelease: ModelProjectImmutableRefSchema
|
|
384
497
|
}).strict();
|
|
385
|
-
var PolicyOptimizationRequestSchema =
|
|
386
|
-
kind:
|
|
498
|
+
var PolicyOptimizationRequestSchema = z7.object({
|
|
499
|
+
kind: z7.literal("policy_optimize"),
|
|
387
500
|
baseModel: ModelProjectBaseModelSchema,
|
|
388
501
|
recipe: ModelProjectRecipeDocumentSchema,
|
|
389
|
-
rewardSource:
|
|
502
|
+
rewardSource: z7.discriminatedUnion("kind", [
|
|
390
503
|
DeterministicRewardSourceSchema,
|
|
391
504
|
LearnedRewardSourceSchema
|
|
392
505
|
]),
|
|
393
506
|
resumeFrom: ModelProjectImmutableRefSchema.nullable().default(null)
|
|
394
507
|
}).strict();
|
|
395
|
-
var TrainingJobRequestSchema =
|
|
508
|
+
var TrainingJobRequestSchema = z7.discriminatedUnion("kind", [
|
|
396
509
|
RewardModelTrainingRequestSchema,
|
|
397
510
|
PolicyOptimizationRequestSchema
|
|
398
511
|
]);
|
|
399
|
-
var TrainingJobApprovalSchema =
|
|
512
|
+
var TrainingJobApprovalSchema = z7.object({
|
|
400
513
|
approvalHash: HashSchema3,
|
|
401
514
|
approvedAt: TimestampSchema,
|
|
402
|
-
exportApproved:
|
|
403
|
-
maximumSpendUsd:
|
|
404
|
-
retentionDays:
|
|
405
|
-
region:
|
|
515
|
+
exportApproved: z7.boolean(),
|
|
516
|
+
maximumSpendUsd: z7.number().nonnegative(),
|
|
517
|
+
retentionDays: z7.number().int().nonnegative().nullable(),
|
|
518
|
+
region: z7.string().trim().min(1).max(200).nullable().default(null)
|
|
406
519
|
}).strict();
|
|
407
|
-
var TrainingJobSubmissionSchema =
|
|
408
|
-
schemaVersion:
|
|
409
|
-
idempotencyKey:
|
|
410
|
-
name:
|
|
520
|
+
var TrainingJobSubmissionSchema = z7.object({
|
|
521
|
+
schemaVersion: z7.literal("openpond.trainingJobSubmission.v2"),
|
|
522
|
+
idempotencyKey: z7.string().trim().min(1).max(500),
|
|
523
|
+
name: z7.string().trim().min(1).max(200),
|
|
411
524
|
source: TrainingJobSourceSchema,
|
|
412
525
|
job: TrainingJobRequestSchema,
|
|
413
|
-
requestedCapabilities:
|
|
414
|
-
placementObjective:
|
|
415
|
-
budget:
|
|
416
|
-
maximumSpendUsd:
|
|
417
|
-
maximumWallSeconds:
|
|
526
|
+
requestedCapabilities: z7.array(TrainingCapabilityRequirementSchema).max(1e3),
|
|
527
|
+
placementObjective: z7.enum(["fast", "balanced", "economical"]),
|
|
528
|
+
budget: z7.object({
|
|
529
|
+
maximumSpendUsd: z7.number().nonnegative(),
|
|
530
|
+
maximumWallSeconds: z7.number().int().positive()
|
|
418
531
|
}).strict(),
|
|
419
532
|
approval: TrainingJobApprovalSchema,
|
|
420
533
|
contentHash: HashSchema3
|
|
@@ -447,61 +560,61 @@ async function parseAndVerifyTrainingJobSubmission(value) {
|
|
|
447
560
|
}
|
|
448
561
|
return parsed;
|
|
449
562
|
}
|
|
450
|
-
var TrainingJobSchema =
|
|
451
|
-
schemaVersion:
|
|
563
|
+
var TrainingJobSchema = z7.object({
|
|
564
|
+
schemaVersion: z7.literal("openpond.trainingJob.v2"),
|
|
452
565
|
id: IdSchema3,
|
|
453
566
|
teamId: IdSchema3,
|
|
454
567
|
kind: TrainingJobKindSchema,
|
|
455
568
|
modelProjectId: IdSchema3,
|
|
456
569
|
portableProjectId: IdSchema3,
|
|
457
|
-
sourceProjectRevision:
|
|
570
|
+
sourceProjectRevision: z7.number().int().positive(),
|
|
458
571
|
submissionHash: HashSchema3,
|
|
459
572
|
state: TrainingJobStateSchema,
|
|
460
|
-
phase:
|
|
461
|
-
version:
|
|
462
|
-
progress:
|
|
463
|
-
rolloutProgress:
|
|
464
|
-
groupsCompleted:
|
|
465
|
-
groupsTarget:
|
|
466
|
-
optimizerUpdatesApplied:
|
|
467
|
-
optimizerUpdatesSkipped:
|
|
573
|
+
phase: z7.string().trim().min(1).max(200),
|
|
574
|
+
version: z7.number().int().nonnegative(),
|
|
575
|
+
progress: z7.number().min(0).max(1),
|
|
576
|
+
rolloutProgress: z7.object({
|
|
577
|
+
groupsCompleted: z7.number().int().nonnegative(),
|
|
578
|
+
groupsTarget: z7.number().int().nonnegative(),
|
|
579
|
+
optimizerUpdatesApplied: z7.number().int().nonnegative(),
|
|
580
|
+
optimizerUpdatesSkipped: z7.number().int().nonnegative()
|
|
468
581
|
}).strict(),
|
|
469
|
-
accruedSpendUsd:
|
|
470
|
-
terminalReason:
|
|
582
|
+
accruedSpendUsd: z7.number().nonnegative(),
|
|
583
|
+
terminalReason: z7.string().trim().min(1).max(5e3).nullable(),
|
|
471
584
|
createdAt: TimestampSchema,
|
|
472
585
|
updatedAt: TimestampSchema,
|
|
473
586
|
completedAt: TimestampSchema.nullable()
|
|
474
587
|
}).strict();
|
|
475
|
-
var TrainingJobPageSchema =
|
|
476
|
-
schemaVersion:
|
|
477
|
-
jobs:
|
|
478
|
-
nextCursor:
|
|
588
|
+
var TrainingJobPageSchema = z7.object({
|
|
589
|
+
schemaVersion: z7.literal("openpond.trainingJobPage.v2"),
|
|
590
|
+
jobs: z7.array(TrainingJobSchema).max(1e3),
|
|
591
|
+
nextCursor: z7.string().trim().min(1).max(2e3).nullable()
|
|
479
592
|
}).strict();
|
|
480
|
-
var TrainingJobEventSchema =
|
|
481
|
-
schemaVersion:
|
|
593
|
+
var TrainingJobEventSchema = z7.object({
|
|
594
|
+
schemaVersion: z7.literal("openpond.trainingJobEvent.v2"),
|
|
482
595
|
id: IdSchema3,
|
|
483
596
|
jobId: IdSchema3,
|
|
484
|
-
sequence:
|
|
597
|
+
sequence: z7.number().int().nonnegative(),
|
|
485
598
|
type: IdSchema3,
|
|
486
|
-
phase:
|
|
487
|
-
message:
|
|
488
|
-
data:
|
|
599
|
+
phase: z7.string().trim().min(1).max(200),
|
|
600
|
+
message: z7.string().trim().min(1).max(5e3).nullable(),
|
|
601
|
+
data: z7.record(z7.string(), z7.unknown()).default({}),
|
|
489
602
|
createdAt: TimestampSchema
|
|
490
603
|
}).strict();
|
|
491
|
-
var TrainingJobLogSchema =
|
|
492
|
-
schemaVersion:
|
|
604
|
+
var TrainingJobLogSchema = z7.object({
|
|
605
|
+
schemaVersion: z7.literal("openpond.trainingJobLog.v2"),
|
|
493
606
|
jobId: IdSchema3,
|
|
494
|
-
sequence:
|
|
495
|
-
level:
|
|
496
|
-
message:
|
|
607
|
+
sequence: z7.number().int().nonnegative(),
|
|
608
|
+
level: z7.enum(["debug", "info", "warning", "error"]),
|
|
609
|
+
message: z7.string().max(2e4),
|
|
497
610
|
createdAt: TimestampSchema
|
|
498
611
|
}).strict();
|
|
499
|
-
var TrainingJobControlRequestSchema =
|
|
500
|
-
var TrainingJobOutputSchema =
|
|
501
|
-
schemaVersion:
|
|
612
|
+
var TrainingJobControlRequestSchema = z7.object({ expectedVersion: z7.number().int().nonnegative() }).strict();
|
|
613
|
+
var TrainingJobOutputSchema = z7.object({
|
|
614
|
+
schemaVersion: z7.literal("openpond.trainingJobOutput.v2"),
|
|
502
615
|
id: IdSchema3,
|
|
503
616
|
jobId: IdSchema3,
|
|
504
|
-
kind:
|
|
617
|
+
kind: z7.enum([
|
|
505
618
|
"checkpoint",
|
|
506
619
|
"adapter",
|
|
507
620
|
"scorer",
|
|
@@ -510,14 +623,14 @@ var TrainingJobOutputSchema = z6.object({
|
|
|
510
623
|
"trace",
|
|
511
624
|
"receipt"
|
|
512
625
|
]),
|
|
513
|
-
artifactRef:
|
|
626
|
+
artifactRef: z7.string().trim().min(1).max(2e3),
|
|
514
627
|
contentHash: HashSchema3,
|
|
515
|
-
sizeBytes:
|
|
516
|
-
metadata:
|
|
628
|
+
sizeBytes: z7.number().int().nonnegative(),
|
|
629
|
+
metadata: z7.record(z7.string(), z7.unknown()).default({}),
|
|
517
630
|
createdAt: TimestampSchema
|
|
518
631
|
}).strict();
|
|
519
|
-
var TrainingExecutionReceiptSchema =
|
|
520
|
-
schemaVersion:
|
|
632
|
+
var TrainingExecutionReceiptSchema = z7.object({
|
|
633
|
+
schemaVersion: z7.literal("openpond.trainingExecutionReceipt.v2"),
|
|
521
634
|
id: IdSchema3,
|
|
522
635
|
teamId: IdSchema3,
|
|
523
636
|
jobId: IdSchema3,
|
|
@@ -526,14 +639,14 @@ var TrainingExecutionReceiptSchema = z6.object({
|
|
|
526
639
|
recipeHash: HashSchema3,
|
|
527
640
|
capabilityHash: HashSchema3,
|
|
528
641
|
runtimeRelease: ModelProjectImmutableRefSchema,
|
|
529
|
-
inputs:
|
|
530
|
-
outputs:
|
|
531
|
-
spendUsd:
|
|
532
|
-
durationSeconds:
|
|
533
|
-
cleanupComplete:
|
|
642
|
+
inputs: z7.array(ModelProjectImmutableRefSchema).max(1e4),
|
|
643
|
+
outputs: z7.array(ModelProjectImmutableRefSchema).max(1e4),
|
|
644
|
+
spendUsd: z7.number().nonnegative(),
|
|
645
|
+
durationSeconds: z7.number().nonnegative(),
|
|
646
|
+
cleanupComplete: z7.boolean(),
|
|
534
647
|
issuer: IdSchema3,
|
|
535
648
|
issuedAt: TimestampSchema,
|
|
536
|
-
signature:
|
|
649
|
+
signature: z7.string().trim().min(1).max(1e4).nullable()
|
|
537
650
|
}).strict();
|
|
538
651
|
async function trainingExecutionReceiptHash(receipt) {
|
|
539
652
|
return canonicalSha256(TrainingExecutionReceiptSchema.parse(receipt));
|
|
@@ -569,18 +682,18 @@ async function parseAndVerifyTrainingExecutionReceipt(value, expected) {
|
|
|
569
682
|
}
|
|
570
683
|
return receipt;
|
|
571
684
|
}
|
|
572
|
-
var TrainingJobOutputsSchema =
|
|
573
|
-
schemaVersion:
|
|
574
|
-
outputs:
|
|
685
|
+
var TrainingJobOutputsSchema = z7.object({
|
|
686
|
+
schemaVersion: z7.literal("openpond.trainingJobOutputs.v2"),
|
|
687
|
+
outputs: z7.array(TrainingJobOutputSchema).max(1e4),
|
|
575
688
|
receipt: TrainingExecutionReceiptSchema.nullable()
|
|
576
689
|
}).strict();
|
|
577
|
-
var TrainingApiErrorSchema =
|
|
578
|
-
schemaVersion:
|
|
579
|
-
code:
|
|
580
|
-
message:
|
|
581
|
-
retryable:
|
|
582
|
-
requestId:
|
|
583
|
-
details:
|
|
690
|
+
var TrainingApiErrorSchema = z7.object({
|
|
691
|
+
schemaVersion: z7.literal("openpond.trainingApiError.v2"),
|
|
692
|
+
code: z7.string().trim().min(1).max(200),
|
|
693
|
+
message: z7.string().trim().min(1).max(5e3),
|
|
694
|
+
retryable: z7.boolean().default(false),
|
|
695
|
+
requestId: z7.string().trim().min(1).max(500).nullable().default(null),
|
|
696
|
+
details: z7.record(z7.string(), z7.unknown()).default({})
|
|
584
697
|
}).strict();
|
|
585
698
|
var OpenPondTrainingApiError = class extends Error {
|
|
586
699
|
status;
|
|
@@ -598,23 +711,23 @@ var OpenPondTrainingApiError = class extends Error {
|
|
|
598
711
|
this.details = error.details;
|
|
599
712
|
}
|
|
600
713
|
};
|
|
601
|
-
var TrainingCapabilitiesSchema =
|
|
602
|
-
schemaVersion:
|
|
714
|
+
var TrainingCapabilitiesSchema = z7.object({
|
|
715
|
+
schemaVersion: z7.literal("openpond.trainingCapabilities.v2"),
|
|
603
716
|
capabilityHash: HashSchema3,
|
|
604
|
-
jobKinds:
|
|
605
|
-
methods:
|
|
606
|
-
placements:
|
|
607
|
-
|
|
717
|
+
jobKinds: z7.array(TrainingJobKindSchema),
|
|
718
|
+
methods: z7.array(z7.string().trim().min(1).max(200)),
|
|
719
|
+
placements: z7.array(
|
|
720
|
+
z7.enum(["local", "remote", "colocated", "provider_native"])
|
|
608
721
|
),
|
|
609
|
-
controls:
|
|
610
|
-
cancel:
|
|
611
|
-
stopAfterGroup:
|
|
612
|
-
resumeFromCheckpoint:
|
|
722
|
+
controls: z7.object({
|
|
723
|
+
cancel: z7.boolean(),
|
|
724
|
+
stopAfterGroup: z7.boolean(),
|
|
725
|
+
resumeFromCheckpoint: z7.boolean()
|
|
613
726
|
}).strict(),
|
|
614
|
-
limits:
|
|
615
|
-
maximumSpendUsd:
|
|
616
|
-
maximumWallSeconds:
|
|
617
|
-
maximumArtifactBytes:
|
|
727
|
+
limits: z7.object({
|
|
728
|
+
maximumSpendUsd: z7.number().nonnegative(),
|
|
729
|
+
maximumWallSeconds: z7.number().int().positive(),
|
|
730
|
+
maximumArtifactBytes: z7.number().int().positive()
|
|
618
731
|
}).strict(),
|
|
619
732
|
checkedAt: TimestampSchema,
|
|
620
733
|
expiresAt: TimestampSchema
|
|
@@ -670,6 +783,7 @@ function createTrainingClient(input) {
|
|
|
670
783
|
);
|
|
671
784
|
}
|
|
672
785
|
return {
|
|
786
|
+
...createTrainingPreparationClient(request),
|
|
673
787
|
...createTrainingHarnessSourceClient(request),
|
|
674
788
|
...createTrainingCandidateDecisionClient(request),
|
|
675
789
|
async capabilities() {
|
|
@@ -707,12 +821,12 @@ function createTrainingClient(input) {
|
|
|
707
821
|
parameters.set("modelProjectId", IdSchema3.parse(options.modelProjectId));
|
|
708
822
|
}
|
|
709
823
|
if (options.cursor) {
|
|
710
|
-
parameters.set("cursor",
|
|
824
|
+
parameters.set("cursor", z7.string().trim().min(1).max(2e3).parse(options.cursor));
|
|
711
825
|
}
|
|
712
826
|
if (options.limit !== void 0) {
|
|
713
827
|
parameters.set(
|
|
714
828
|
"limit",
|
|
715
|
-
String(
|
|
829
|
+
String(z7.number().int().min(1).max(1e3).parse(options.limit))
|
|
716
830
|
);
|
|
717
831
|
}
|
|
718
832
|
const query = parameters.size > 0 ? `?${parameters.toString()}` : "";
|
|
@@ -753,7 +867,7 @@ function createTrainingClient(input) {
|
|
|
753
867
|
);
|
|
754
868
|
},
|
|
755
869
|
async events(jobId) {
|
|
756
|
-
return
|
|
870
|
+
return z7.array(TrainingJobEventSchema).parse(
|
|
757
871
|
unwrapObject(
|
|
758
872
|
await request(
|
|
759
873
|
`/v1/training/jobs/${encodeURIComponent(IdSchema3.parse(jobId))}/events`
|
|
@@ -773,10 +887,10 @@ function createTrainingClient(input) {
|
|
|
773
887
|
const id = IdSchema3.parse(jobId);
|
|
774
888
|
const reference = ModelProjectImmutableRefSchema.parse(evaluation);
|
|
775
889
|
const parameters = new URLSearchParams();
|
|
776
|
-
const cursor = options.cursor === void 0 ? void 0 :
|
|
777
|
-
const offset = cursor === void 0 ? 0 :
|
|
890
|
+
const cursor = options.cursor === void 0 ? void 0 : z7.string().regex(/^[1-9]\d*$/).parse(options.cursor);
|
|
891
|
+
const offset = cursor === void 0 ? 0 : z7.number().int().min(1).max(9999).parse(Number(cursor));
|
|
778
892
|
if (cursor !== void 0) parameters.set("cursor", cursor);
|
|
779
|
-
if (options.limit !== void 0) parameters.set("limit", String(
|
|
893
|
+
if (options.limit !== void 0) parameters.set("limit", String(z7.number().int().min(1).max(100).parse(options.limit)));
|
|
780
894
|
const query = parameters.size ? `?${parameters.toString()}` : "";
|
|
781
895
|
return parseAndVerifyTrainingEvaluationTaskPage(
|
|
782
896
|
await request(`/v1/training/jobs/${encodeURIComponent(id)}/evaluations/${encodeURIComponent(reference.id)}/tasks${query}`),
|
|
@@ -784,7 +898,7 @@ function createTrainingClient(input) {
|
|
|
784
898
|
);
|
|
785
899
|
},
|
|
786
900
|
async logs(jobId) {
|
|
787
|
-
return
|
|
901
|
+
return z7.array(TrainingJobLogSchema).max(1e5).parse(
|
|
788
902
|
unwrapObject(
|
|
789
903
|
await request(
|
|
790
904
|
`/v1/training/jobs/${encodeURIComponent(IdSchema3.parse(jobId))}/logs`
|
|
@@ -821,6 +935,14 @@ function trainingApiError(value, status) {
|
|
|
821
935
|
}
|
|
822
936
|
|
|
823
937
|
export {
|
|
938
|
+
TrainingPreparationRequestSchema,
|
|
939
|
+
TrainingPreparationPlanContentSchema,
|
|
940
|
+
TrainingPreparationPlanSchema,
|
|
941
|
+
TrainingPreparationReceiptSchema,
|
|
942
|
+
TrainingPreparationControlSchema,
|
|
943
|
+
TrainingPreparationListQuerySchema,
|
|
944
|
+
TrainingPreparationPageSchema,
|
|
945
|
+
parseAndVerifyTrainingPreparationReceipt,
|
|
824
946
|
TrainingHarnessSourcePublicationSchema,
|
|
825
947
|
TrainingCandidateDecisionRequestSchema,
|
|
826
948
|
TrainingCandidateDecisionSchema,
|
|
@@ -865,4 +987,4 @@ export {
|
|
|
865
987
|
TrainingCapabilitiesSchema,
|
|
866
988
|
createTrainingClient
|
|
867
989
|
};
|
|
868
|
-
//# sourceMappingURL=chunk-
|
|
990
|
+
//# sourceMappingURL=chunk-KIBRMKJQ.js.map
|