openpond-sdk 0.5.5 → 0.5.7
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 +44 -0
- package/dist/chunk-ARUJ3FJT.js +447 -0
- package/dist/chunk-ARUJ3FJT.js.map +7 -0
- package/dist/{chunk-M6MM6IGG.js → chunk-F5JBFRAH.js} +300 -220
- package/dist/chunk-F5JBFRAH.js.map +7 -0
- package/dist/chunk-QFT2MCIC.js +1526 -0
- package/dist/chunk-QFT2MCIC.js.map +7 -0
- package/dist/{chunk-NF63YMOL.js → chunk-QUOW6URQ.js} +7 -9
- package/dist/{chunk-NF63YMOL.js.map → chunk-QUOW6URQ.js.map} +3 -3
- package/dist/{chunk-25TBEGXB.js → chunk-TKJU3BOW.js} +2 -2
- package/dist/chunk-UJZ3XEE3.js +902 -0
- package/dist/chunk-UJZ3XEE3.js.map +7 -0
- package/dist/{chunk-EV4PKJWN.js → chunk-UKVK7MRJ.js} +320 -208
- package/dist/chunk-UKVK7MRJ.js.map +7 -0
- package/dist/index.js +3 -3
- package/dist/learning.js +3 -3
- package/dist/model-taskset-runs.js +2 -2
- package/dist/refiner.js +1 -1
- package/dist/taskset-drafts.js +36 -34
- package/dist/taskset-drafts.js.map +1 -1
- package/dist/taskset-packages.js +52 -466
- package/dist/taskset-packages.js.map +4 -4
- package/dist/training-bundle.js +459 -0
- package/dist/training-bundle.js.map +7 -0
- package/dist/training.js +9 -1
- package/dist/types/packages/sdk/src/taskset-authored-contracts.d.ts +2 -2
- package/dist/types/packages/sdk/src/taskset-authored-files.d.ts +1 -1
- package/dist/types/packages/sdk/src/taskset-draft-dataset-artifacts.d.ts +2 -2
- package/dist/types/packages/sdk/src/taskset-package-projection.d.ts +1 -1
- package/dist/types/packages/sdk/src/training-bundle-contracts.d.ts +287 -0
- package/dist/types/packages/sdk/src/training-bundle-contracts.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/training-bundle.d.ts +48 -0
- package/dist/types/packages/sdk/src/training-bundle.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/training-candidate-decisions.d.ts +90 -0
- package/dist/types/packages/sdk/src/training-candidate-decisions.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/training-learning-batch.d.ts +719 -0
- package/dist/types/packages/sdk/src/training-learning-batch.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/training.d.ts +8 -0
- package/dist/types/packages/sdk/src/training.d.ts.map +1 -1
- package/package.json +6 -2
- package/dist/chunk-EV4PKJWN.js.map +0 -7
- package/dist/chunk-M6MM6IGG.js.map +0 -7
- package/dist/chunk-PXB6YY36.js +0 -2395
- package/dist/chunk-PXB6YY36.js.map +0 -7
- /package/dist/{chunk-25TBEGXB.js.map → chunk-TKJU3BOW.js.map} +0 -0
|
@@ -14,42 +14,117 @@ import {
|
|
|
14
14
|
} from "./chunk-ZNFOVV7B.js";
|
|
15
15
|
|
|
16
16
|
// src/training.ts
|
|
17
|
-
import { z as
|
|
17
|
+
import { z as z5 } from "zod";
|
|
18
18
|
|
|
19
|
-
// src/training-
|
|
19
|
+
// src/training-candidate-decisions.ts
|
|
20
20
|
import { z } from "zod";
|
|
21
21
|
var IdSchema = /* @__PURE__ */ (() => z.string().trim().min(1).max(500))();
|
|
22
22
|
var HashSchema = /* @__PURE__ */ (() => z.string().regex(/^[a-f0-9]{64}$/))();
|
|
23
|
-
var
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
23
|
+
var TrainingCandidateDecisionRequestSchema = /* @__PURE__ */ (() => z.object({
|
|
24
|
+
schemaVersion: z.literal("openpond.trainingCandidateDecisionRequest.v1"),
|
|
25
|
+
teamId: IdSchema,
|
|
26
|
+
jobId: IdSchema,
|
|
27
|
+
artifact: ModelProjectImmutableRefSchema,
|
|
28
|
+
evaluation: ModelProjectImmutableRefSchema,
|
|
29
|
+
executionReceipt: ModelProjectImmutableRefSchema,
|
|
30
|
+
decision: z.enum(["accepted", "rejected"]),
|
|
31
|
+
reason: z.string().trim().min(1).max(5e3),
|
|
32
|
+
idempotencyKey: IdSchema,
|
|
33
|
+
expectedDecision: ModelProjectImmutableRefSchema.nullable()
|
|
34
|
+
}).strict())();
|
|
35
|
+
var TrainingCandidateDecisionSchema = /* @__PURE__ */ (() => z.object({
|
|
36
|
+
schemaVersion: z.literal("openpond.trainingCandidateDecision.v1"),
|
|
37
|
+
id: IdSchema,
|
|
38
|
+
request: TrainingCandidateDecisionRequestSchema,
|
|
39
|
+
revision: z.number().int().positive(),
|
|
40
|
+
actor: z.object({ userId: IdSchema, kind: z.enum(["user", "api_key", "agent_delegate"]), id: IdSchema }).strict(),
|
|
41
|
+
decidedAt: z.string().datetime({ offset: true }),
|
|
42
|
+
contentHash: HashSchema
|
|
43
|
+
}).strict().superRefine((value, context) => {
|
|
44
|
+
if (value.revision === 1 !== (value.request.expectedDecision === null)) {
|
|
45
|
+
context.addIssue({ code: "custom", path: ["revision"], message: "A first decision has no predecessor; later decisions must reference the prior decision." });
|
|
46
|
+
}
|
|
47
|
+
if (value.request.expectedDecision?.id === value.id) {
|
|
48
|
+
context.addIssue({ code: "custom", path: ["request", "expectedDecision"], message: "A decision cannot supersede itself." });
|
|
49
|
+
}
|
|
50
|
+
}))();
|
|
51
|
+
async function trainingCandidateDecisionHash(value) {
|
|
52
|
+
const { contentHash: _contentHash, ...content } = value;
|
|
53
|
+
return canonicalSha256(content);
|
|
54
|
+
}
|
|
55
|
+
async function parseAndVerifyTrainingCandidateDecision(value, expected) {
|
|
56
|
+
assertCanonicalPayloadSize(value, 32768, "Training candidate decision");
|
|
57
|
+
const parsed = TrainingCandidateDecisionSchema.parse(value);
|
|
58
|
+
if (parsed.contentHash !== await trainingCandidateDecisionHash(parsed)) {
|
|
59
|
+
throw new OpenPondProtocolError("content_hash_mismatch", "Training candidate decision content hash does not match.");
|
|
60
|
+
}
|
|
61
|
+
if (parsed.request.teamId !== expected.teamId || parsed.request.jobId !== expected.jobId || parsed.request.artifact.id !== expected.artifact.id || parsed.request.artifact.contentHash !== expected.artifact.contentHash) {
|
|
62
|
+
throw new OpenPondProtocolError("candidate_decision_identity_mismatch", "Training candidate decision belongs to a different team, Job or artifact.");
|
|
63
|
+
}
|
|
64
|
+
if (expected.request && await canonicalSha256(parsed.request) !== await canonicalSha256(TrainingCandidateDecisionRequestSchema.parse(expected.request))) {
|
|
65
|
+
throw new OpenPondProtocolError("candidate_decision_request_mismatch", "Training candidate decision does not match the submitted review.");
|
|
66
|
+
}
|
|
67
|
+
return parsed;
|
|
68
|
+
}
|
|
69
|
+
function createTrainingCandidateDecisionClient(request) {
|
|
70
|
+
function route(target) {
|
|
71
|
+
return `/v1/training/jobs/${encodeURIComponent(IdSchema.parse(target.jobId))}/candidates/${encodeURIComponent(ModelProjectImmutableRefSchema.parse(target.artifact).id)}/decision`;
|
|
72
|
+
}
|
|
73
|
+
return {
|
|
74
|
+
async candidateDecision(target, options = {}) {
|
|
75
|
+
IdSchema.parse(target.teamId);
|
|
76
|
+
const reference = options.decision ? ModelProjectImmutableRefSchema.parse(options.decision) : void 0;
|
|
77
|
+
const query = reference ? `?decisionId=${encodeURIComponent(reference.id)}` : "";
|
|
78
|
+
const response = z.object({ decision: z.unknown().nullable() }).strict().parse(await request(`${route(target)}${query}`));
|
|
79
|
+
if (response.decision === null && !reference) return null;
|
|
80
|
+
const decision = await parseAndVerifyTrainingCandidateDecision(response.decision, target);
|
|
81
|
+
if (reference && (decision.id !== reference.id || decision.contentHash !== reference.contentHash)) {
|
|
82
|
+
throw new OpenPondProtocolError("candidate_decision_identity_mismatch", "Training candidate decision does not match the requested history entry.");
|
|
83
|
+
}
|
|
84
|
+
return decision;
|
|
85
|
+
},
|
|
86
|
+
async recordCandidateDecision(input) {
|
|
87
|
+
const parsed = TrainingCandidateDecisionRequestSchema.parse(input);
|
|
88
|
+
const response = await request(route(parsed), { method: "POST", body: JSON.stringify(parsed) });
|
|
89
|
+
return parseAndVerifyTrainingCandidateDecision(response, { ...parsed, request: parsed });
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
// src/training-evaluation-results.ts
|
|
95
|
+
import { z as z2 } from "zod";
|
|
96
|
+
var IdSchema2 = /* @__PURE__ */ (() => z2.string().trim().min(1).max(500))();
|
|
97
|
+
var HashSchema2 = /* @__PURE__ */ (() => z2.string().regex(/^[a-f0-9]{64}$/))();
|
|
98
|
+
var TrainingEvaluationTaskResultSchema = /* @__PURE__ */ (() => z2.object({
|
|
99
|
+
taskId: IdSchema2,
|
|
100
|
+
taskSha256: HashSchema2,
|
|
101
|
+
resultSha256: HashSchema2,
|
|
102
|
+
input: z2.object({
|
|
103
|
+
instruction: z2.string().max(1e6),
|
|
104
|
+
context: z2.record(z2.string(), z2.unknown())
|
|
30
105
|
}).strict(),
|
|
31
|
-
output:
|
|
32
|
-
outputSha256:
|
|
33
|
-
score:
|
|
34
|
-
evidence:
|
|
35
|
-
kind:
|
|
36
|
-
id:
|
|
106
|
+
output: z2.string().max(1e6),
|
|
107
|
+
outputSha256: HashSchema2,
|
|
108
|
+
score: z2.number().finite().min(0).max(1),
|
|
109
|
+
evidence: z2.object({
|
|
110
|
+
kind: z2.enum(["worker_command", "hosted_trace", "local_trace"]),
|
|
111
|
+
id: IdSchema2
|
|
37
112
|
}).strict()
|
|
38
113
|
}).strict())();
|
|
39
|
-
var TrainingEvaluationTaskPageSchema = /* @__PURE__ */ (() =>
|
|
40
|
-
schemaVersion:
|
|
41
|
-
jobId:
|
|
42
|
-
teamId:
|
|
114
|
+
var TrainingEvaluationTaskPageSchema = /* @__PURE__ */ (() => z2.object({
|
|
115
|
+
schemaVersion: z2.literal("openpond.trainingEvaluationTaskPage.v1"),
|
|
116
|
+
jobId: IdSchema2,
|
|
117
|
+
teamId: IdSchema2,
|
|
43
118
|
evaluation: ModelProjectImmutableRefSchema,
|
|
44
|
-
kind:
|
|
45
|
-
policyVersion:
|
|
119
|
+
kind: z2.enum(["baseline", "candidate"]),
|
|
120
|
+
policyVersion: z2.number().int().nonnegative(),
|
|
46
121
|
taskset: ModelProjectVersionedRefSchema,
|
|
47
|
-
panelSha256:
|
|
48
|
-
offset:
|
|
49
|
-
total:
|
|
50
|
-
tasks:
|
|
51
|
-
nextCursor:
|
|
52
|
-
contentHash:
|
|
122
|
+
panelSha256: HashSchema2,
|
|
123
|
+
offset: z2.number().int().nonnegative(),
|
|
124
|
+
total: z2.number().int().min(1).max(1e4),
|
|
125
|
+
tasks: z2.array(TrainingEvaluationTaskResultSchema).min(1).max(100),
|
|
126
|
+
nextCursor: z2.string().regex(/^[1-9]\d*$/).nullable(),
|
|
127
|
+
contentHash: HashSchema2
|
|
53
128
|
}).strict().superRefine((page, context) => {
|
|
54
129
|
const end = page.offset + page.tasks.length;
|
|
55
130
|
const expectedCursor = end < page.total ? String(end) : null;
|
|
@@ -68,7 +143,7 @@ async function parseAndVerifyTrainingEvaluationTaskPage(value, expected) {
|
|
|
68
143
|
assertCanonicalPayloadSize(value, TRAINING_API_RESPONSE_MAX_BYTES, "Training evaluation task page");
|
|
69
144
|
const page = TrainingEvaluationTaskPageSchema.parse(value);
|
|
70
145
|
const reference = ModelProjectImmutableRefSchema.parse(expected.evaluation);
|
|
71
|
-
if (page.jobId !==
|
|
146
|
+
if (page.jobId !== IdSchema2.parse(expected.jobId) || page.evaluation.id !== reference.id || page.evaluation.contentHash !== reference.contentHash || page.offset !== (expected.offset ?? 0) || expected.teamId !== void 0 && page.teamId !== IdSchema2.parse(expected.teamId)) {
|
|
72
147
|
throw new OpenPondProtocolError("evaluation_page_identity_mismatch", "Evaluation results differ from the requested Job, evaluation, or page.");
|
|
73
148
|
}
|
|
74
149
|
if (await trainingEvaluationTaskPageHash(page) !== page.contentHash) {
|
|
@@ -83,12 +158,12 @@ async function parseAndVerifyTrainingEvaluationTaskPage(value, expected) {
|
|
|
83
158
|
}
|
|
84
159
|
|
|
85
160
|
// src/training-grading-plan.ts
|
|
86
|
-
import { z as
|
|
161
|
+
import { z as z3 } from "zod";
|
|
87
162
|
import { compileBoundGraders, RewardBindingSchema, RewardReleaseSchema } from "@openpond/evals/rewards";
|
|
88
|
-
var GradersSchema =
|
|
89
|
-
var RewardExecutionSchema =
|
|
163
|
+
var GradersSchema = z3.array(z3.object({ id: z3.string().trim().min(1) }).catchall(z3.unknown())).min(1).max(1e3);
|
|
164
|
+
var RewardExecutionSchema = z3.object({
|
|
90
165
|
binding: RewardBindingSchema,
|
|
91
|
-
rewards:
|
|
166
|
+
rewards: z3.array(RewardReleaseSchema).min(1).max(100)
|
|
92
167
|
}).strict();
|
|
93
168
|
async function deterministicTrainingRewardSource(input) {
|
|
94
169
|
const execution = input.rewardExecution ? RewardExecutionSchema.parse(input.rewardExecution) : null;
|
|
@@ -105,23 +180,23 @@ async function deterministicTrainingRewardSource(input) {
|
|
|
105
180
|
}
|
|
106
181
|
|
|
107
182
|
// src/training-evaluation-source.ts
|
|
108
|
-
import { z as
|
|
183
|
+
import { z as z4 } from "zod";
|
|
109
184
|
var TRAINING_EVALUATION_SOURCE_PATH = "evaluation-source.json";
|
|
110
|
-
var TaskIdentitySchema =
|
|
111
|
-
id:
|
|
112
|
-
clusterKey:
|
|
113
|
-
split:
|
|
185
|
+
var TaskIdentitySchema = z4.object({
|
|
186
|
+
id: z4.string().trim().min(1),
|
|
187
|
+
clusterKey: z4.string().trim().min(1),
|
|
188
|
+
split: z4.enum(["train", "validation", "frozen_eval"])
|
|
114
189
|
}).passthrough();
|
|
115
|
-
var TrainingEvaluationSourceSchema =
|
|
116
|
-
schemaVersion:
|
|
190
|
+
var TrainingEvaluationSourceSchema = z4.object({
|
|
191
|
+
schemaVersion: z4.literal("openpond.trainingEvaluationSource.v1"),
|
|
117
192
|
taskset: ModelProjectVersionedRefSchema,
|
|
118
|
-
tasks:
|
|
119
|
-
assets:
|
|
120
|
-
path:
|
|
121
|
-
sha256:
|
|
122
|
-
sizeBytes:
|
|
123
|
-
encoding:
|
|
124
|
-
content:
|
|
193
|
+
tasks: z4.array(TaskIdentitySchema).min(1).max(1e4),
|
|
194
|
+
assets: z4.array(z4.object({
|
|
195
|
+
path: z4.string().trim().min(1).max(2e3),
|
|
196
|
+
sha256: z4.string().regex(/^[a-f0-9]{64}$/),
|
|
197
|
+
sizeBytes: z4.number().int().nonnegative(),
|
|
198
|
+
encoding: z4.literal("base64"),
|
|
199
|
+
content: z4.string().max(32 * 1024 * 1024)
|
|
125
200
|
}).strict()).max(1e4)
|
|
126
201
|
}).strict().superRefine((source, context) => {
|
|
127
202
|
const ids = /* @__PURE__ */ new Set();
|
|
@@ -132,8 +207,8 @@ var TrainingEvaluationSourceSchema = z3.object({
|
|
|
132
207
|
});
|
|
133
208
|
});
|
|
134
209
|
function assertTrainingEvaluationIsolation(trainingTasks, evaluationTasks) {
|
|
135
|
-
const training =
|
|
136
|
-
const evaluation =
|
|
210
|
+
const training = z4.array(TaskIdentitySchema).min(1).max(1e4).parse(trainingTasks);
|
|
211
|
+
const evaluation = z4.array(TaskIdentitySchema).min(1).max(1e4).parse(evaluationTasks);
|
|
137
212
|
const trainIds = /* @__PURE__ */ new Set();
|
|
138
213
|
const trainFamilies = /* @__PURE__ */ new Set();
|
|
139
214
|
for (const task of training) {
|
|
@@ -159,24 +234,24 @@ async function trainingEvaluationSourceRef(input) {
|
|
|
159
234
|
}
|
|
160
235
|
|
|
161
236
|
// src/training.ts
|
|
162
|
-
var
|
|
163
|
-
var
|
|
164
|
-
var TimestampSchema =
|
|
165
|
-
var TrainingInputArtifactUploadSchema =
|
|
166
|
-
schemaVersion:
|
|
167
|
-
kind:
|
|
168
|
-
idempotencyKey:
|
|
237
|
+
var IdSchema3 = z5.string().trim().min(1).max(500);
|
|
238
|
+
var HashSchema3 = z5.string().regex(/^[a-f0-9]{64}$/);
|
|
239
|
+
var TimestampSchema = z5.string().datetime({ offset: true });
|
|
240
|
+
var TrainingInputArtifactUploadSchema = z5.object({
|
|
241
|
+
schemaVersion: z5.literal("openpond.trainingInputArtifactUpload.v2"),
|
|
242
|
+
kind: z5.enum(["portable_training_bundle", "reward_model_dataset"]),
|
|
243
|
+
idempotencyKey: z5.string().trim().min(1).max(500),
|
|
169
244
|
sourceManifest: ModelProjectImmutableRefSchema,
|
|
170
|
-
payload:
|
|
171
|
-
contentHash:
|
|
245
|
+
payload: z5.unknown(),
|
|
246
|
+
contentHash: HashSchema3
|
|
172
247
|
}).strict();
|
|
173
|
-
var TrainingInputArtifactSchema =
|
|
174
|
-
schemaVersion:
|
|
175
|
-
kind:
|
|
248
|
+
var TrainingInputArtifactSchema = z5.object({
|
|
249
|
+
schemaVersion: z5.literal("openpond.trainingInputArtifact.v2"),
|
|
250
|
+
kind: z5.enum(["portable_training_bundle", "reward_model_dataset"]),
|
|
176
251
|
sourceManifest: ModelProjectImmutableRefSchema,
|
|
177
|
-
artifactRef:
|
|
178
|
-
contentHash:
|
|
179
|
-
sizeBytes:
|
|
252
|
+
artifactRef: z5.string().trim().min(1).max(2e3),
|
|
253
|
+
contentHash: HashSchema3,
|
|
254
|
+
sizeBytes: z5.number().int().positive(),
|
|
180
255
|
createdAt: TimestampSchema
|
|
181
256
|
}).strict();
|
|
182
257
|
async function trainingInputArtifactUploadHash(upload) {
|
|
@@ -199,11 +274,11 @@ async function parseAndVerifyTrainingInputArtifactUpload(value) {
|
|
|
199
274
|
}
|
|
200
275
|
return parsed;
|
|
201
276
|
}
|
|
202
|
-
var TrainingJobKindSchema =
|
|
277
|
+
var TrainingJobKindSchema = z5.enum([
|
|
203
278
|
"reward_model_train",
|
|
204
279
|
"policy_optimize"
|
|
205
280
|
]);
|
|
206
|
-
var TrainingJobStateSchema =
|
|
281
|
+
var TrainingJobStateSchema = z5.enum([
|
|
207
282
|
"queued",
|
|
208
283
|
"admitting",
|
|
209
284
|
"provisioning",
|
|
@@ -214,94 +289,94 @@ var TrainingJobStateSchema = z4.enum([
|
|
|
214
289
|
"failed",
|
|
215
290
|
"cancelled"
|
|
216
291
|
]);
|
|
217
|
-
var TrainingCapabilityRequirementSchema =
|
|
218
|
-
id:
|
|
219
|
-
version:
|
|
220
|
-
required:
|
|
292
|
+
var TrainingCapabilityRequirementSchema = z5.object({
|
|
293
|
+
id: IdSchema3,
|
|
294
|
+
version: z5.string().trim().min(1).max(200).nullable().default(null),
|
|
295
|
+
required: z5.boolean().default(true)
|
|
221
296
|
}).strict();
|
|
222
|
-
var TrainingJobSourceSchema =
|
|
223
|
-
modelProject:
|
|
224
|
-
id:
|
|
225
|
-
portableProjectId:
|
|
226
|
-
revision:
|
|
227
|
-
contentHash:
|
|
297
|
+
var TrainingJobSourceSchema = z5.object({
|
|
298
|
+
modelProject: z5.object({
|
|
299
|
+
id: IdSchema3,
|
|
300
|
+
portableProjectId: IdSchema3,
|
|
301
|
+
revision: z5.number().int().positive(),
|
|
302
|
+
contentHash: HashSchema3
|
|
228
303
|
}).strict(),
|
|
229
304
|
harnessRunManifest: ModelProjectImmutableRefSchema,
|
|
230
305
|
harnessRelease: ModelProjectImmutableRefSchema,
|
|
231
306
|
taskset: ModelProjectVersionedRefSchema,
|
|
232
307
|
tasksetRelease: ModelProjectImmutableRefSchema,
|
|
233
|
-
evaluation:
|
|
308
|
+
evaluation: z5.object({
|
|
234
309
|
taskset: ModelProjectVersionedRefSchema,
|
|
235
310
|
dataset: ModelProjectImmutableRefSchema
|
|
236
311
|
}).strict().nullable().optional(),
|
|
237
312
|
dataset: ModelProjectImmutableRefSchema,
|
|
238
|
-
evidenceSets:
|
|
313
|
+
evidenceSets: z5.array(ModelProjectImmutableRefSchema).max(1e4)
|
|
239
314
|
}).strict();
|
|
240
|
-
var RewardModelTrainingRequestSchema =
|
|
241
|
-
kind:
|
|
315
|
+
var RewardModelTrainingRequestSchema = z5.object({
|
|
316
|
+
kind: z5.literal("reward_model_train"),
|
|
242
317
|
baseModel: ModelProjectBaseModelSchema,
|
|
243
318
|
preferenceDatasetRelease: ModelProjectImmutableRefSchema,
|
|
244
319
|
processorRelease: ModelProjectImmutableRefSchema,
|
|
245
|
-
recipe:
|
|
246
|
-
schemaVersion:
|
|
247
|
-
method:
|
|
248
|
-
parameterization:
|
|
249
|
-
}).catchall(
|
|
320
|
+
recipe: z5.object({
|
|
321
|
+
schemaVersion: z5.literal("openpond.rewardModelRecipe.v1"),
|
|
322
|
+
method: z5.literal("reward_model"),
|
|
323
|
+
parameterization: z5.literal("lora_with_scalar_head")
|
|
324
|
+
}).catchall(z5.unknown())
|
|
250
325
|
}).strict();
|
|
251
|
-
var DeterministicRewardSourceSchema =
|
|
252
|
-
kind:
|
|
326
|
+
var DeterministicRewardSourceSchema = z5.object({
|
|
327
|
+
kind: z5.literal("deterministic"),
|
|
253
328
|
grader: ModelProjectImmutableRefSchema,
|
|
254
329
|
composer: ModelProjectImmutableRefSchema.nullable().default(null)
|
|
255
330
|
}).strict();
|
|
256
|
-
var LearnedRewardSourceSchema =
|
|
257
|
-
kind:
|
|
331
|
+
var LearnedRewardSourceSchema = z5.object({
|
|
332
|
+
kind: z5.literal("learned_reward"),
|
|
258
333
|
rewardModelVersion: ModelProjectImmutableRefSchema,
|
|
259
334
|
qualificationReport: ModelProjectImmutableRefSchema.nullable().default(null),
|
|
260
|
-
evaluationReferences:
|
|
261
|
-
scorerArtifact:
|
|
262
|
-
artifactRef:
|
|
263
|
-
contentHash:
|
|
335
|
+
evaluationReferences: z5.array(ModelProjectImmutableRefSchema).max(1e3).default([]),
|
|
336
|
+
scorerArtifact: z5.object({
|
|
337
|
+
artifactRef: z5.string().trim().min(1).max(2e3),
|
|
338
|
+
contentHash: HashSchema3,
|
|
264
339
|
executionReceipt: ModelProjectImmutableRefSchema
|
|
265
340
|
}).strict(),
|
|
266
341
|
processorRelease: ModelProjectImmutableRefSchema,
|
|
267
342
|
rewardComposerRelease: ModelProjectImmutableRefSchema
|
|
268
343
|
}).strict();
|
|
269
|
-
var PolicyOptimizationRequestSchema =
|
|
270
|
-
kind:
|
|
344
|
+
var PolicyOptimizationRequestSchema = z5.object({
|
|
345
|
+
kind: z5.literal("policy_optimize"),
|
|
271
346
|
baseModel: ModelProjectBaseModelSchema,
|
|
272
347
|
recipe: ModelProjectRecipeDocumentSchema,
|
|
273
|
-
rewardSource:
|
|
348
|
+
rewardSource: z5.discriminatedUnion("kind", [
|
|
274
349
|
DeterministicRewardSourceSchema,
|
|
275
350
|
LearnedRewardSourceSchema
|
|
276
351
|
]),
|
|
277
352
|
resumeFrom: ModelProjectImmutableRefSchema.nullable().default(null)
|
|
278
353
|
}).strict();
|
|
279
|
-
var TrainingJobRequestSchema =
|
|
354
|
+
var TrainingJobRequestSchema = z5.discriminatedUnion("kind", [
|
|
280
355
|
RewardModelTrainingRequestSchema,
|
|
281
356
|
PolicyOptimizationRequestSchema
|
|
282
357
|
]);
|
|
283
|
-
var TrainingJobApprovalSchema =
|
|
284
|
-
approvalHash:
|
|
358
|
+
var TrainingJobApprovalSchema = z5.object({
|
|
359
|
+
approvalHash: HashSchema3,
|
|
285
360
|
approvedAt: TimestampSchema,
|
|
286
|
-
exportApproved:
|
|
287
|
-
maximumSpendUsd:
|
|
288
|
-
retentionDays:
|
|
289
|
-
region:
|
|
361
|
+
exportApproved: z5.boolean(),
|
|
362
|
+
maximumSpendUsd: z5.number().nonnegative(),
|
|
363
|
+
retentionDays: z5.number().int().nonnegative().nullable(),
|
|
364
|
+
region: z5.string().trim().min(1).max(200).nullable().default(null)
|
|
290
365
|
}).strict();
|
|
291
|
-
var TrainingJobSubmissionSchema =
|
|
292
|
-
schemaVersion:
|
|
293
|
-
idempotencyKey:
|
|
294
|
-
name:
|
|
366
|
+
var TrainingJobSubmissionSchema = z5.object({
|
|
367
|
+
schemaVersion: z5.literal("openpond.trainingJobSubmission.v2"),
|
|
368
|
+
idempotencyKey: z5.string().trim().min(1).max(500),
|
|
369
|
+
name: z5.string().trim().min(1).max(200),
|
|
295
370
|
source: TrainingJobSourceSchema,
|
|
296
371
|
job: TrainingJobRequestSchema,
|
|
297
|
-
requestedCapabilities:
|
|
298
|
-
placementObjective:
|
|
299
|
-
budget:
|
|
300
|
-
maximumSpendUsd:
|
|
301
|
-
maximumWallSeconds:
|
|
372
|
+
requestedCapabilities: z5.array(TrainingCapabilityRequirementSchema).max(1e3),
|
|
373
|
+
placementObjective: z5.enum(["fast", "balanced", "economical"]),
|
|
374
|
+
budget: z5.object({
|
|
375
|
+
maximumSpendUsd: z5.number().nonnegative(),
|
|
376
|
+
maximumWallSeconds: z5.number().int().positive()
|
|
302
377
|
}).strict(),
|
|
303
378
|
approval: TrainingJobApprovalSchema,
|
|
304
|
-
contentHash:
|
|
379
|
+
contentHash: HashSchema3
|
|
305
380
|
}).strict().superRefine((submission, context) => {
|
|
306
381
|
if (submission.approval.maximumSpendUsd !== submission.budget.maximumSpendUsd) {
|
|
307
382
|
context.addIssue({
|
|
@@ -331,61 +406,61 @@ async function parseAndVerifyTrainingJobSubmission(value) {
|
|
|
331
406
|
}
|
|
332
407
|
return parsed;
|
|
333
408
|
}
|
|
334
|
-
var TrainingJobSchema =
|
|
335
|
-
schemaVersion:
|
|
336
|
-
id:
|
|
337
|
-
teamId:
|
|
409
|
+
var TrainingJobSchema = z5.object({
|
|
410
|
+
schemaVersion: z5.literal("openpond.trainingJob.v2"),
|
|
411
|
+
id: IdSchema3,
|
|
412
|
+
teamId: IdSchema3,
|
|
338
413
|
kind: TrainingJobKindSchema,
|
|
339
|
-
modelProjectId:
|
|
340
|
-
portableProjectId:
|
|
341
|
-
sourceProjectRevision:
|
|
342
|
-
submissionHash:
|
|
414
|
+
modelProjectId: IdSchema3,
|
|
415
|
+
portableProjectId: IdSchema3,
|
|
416
|
+
sourceProjectRevision: z5.number().int().positive(),
|
|
417
|
+
submissionHash: HashSchema3,
|
|
343
418
|
state: TrainingJobStateSchema,
|
|
344
|
-
phase:
|
|
345
|
-
version:
|
|
346
|
-
progress:
|
|
347
|
-
rolloutProgress:
|
|
348
|
-
groupsCompleted:
|
|
349
|
-
groupsTarget:
|
|
350
|
-
optimizerUpdatesApplied:
|
|
351
|
-
optimizerUpdatesSkipped:
|
|
419
|
+
phase: z5.string().trim().min(1).max(200),
|
|
420
|
+
version: z5.number().int().nonnegative(),
|
|
421
|
+
progress: z5.number().min(0).max(1),
|
|
422
|
+
rolloutProgress: z5.object({
|
|
423
|
+
groupsCompleted: z5.number().int().nonnegative(),
|
|
424
|
+
groupsTarget: z5.number().int().nonnegative(),
|
|
425
|
+
optimizerUpdatesApplied: z5.number().int().nonnegative(),
|
|
426
|
+
optimizerUpdatesSkipped: z5.number().int().nonnegative()
|
|
352
427
|
}).strict(),
|
|
353
|
-
accruedSpendUsd:
|
|
354
|
-
terminalReason:
|
|
428
|
+
accruedSpendUsd: z5.number().nonnegative(),
|
|
429
|
+
terminalReason: z5.string().trim().min(1).max(5e3).nullable(),
|
|
355
430
|
createdAt: TimestampSchema,
|
|
356
431
|
updatedAt: TimestampSchema,
|
|
357
432
|
completedAt: TimestampSchema.nullable()
|
|
358
433
|
}).strict();
|
|
359
|
-
var TrainingJobPageSchema =
|
|
360
|
-
schemaVersion:
|
|
361
|
-
jobs:
|
|
362
|
-
nextCursor:
|
|
434
|
+
var TrainingJobPageSchema = z5.object({
|
|
435
|
+
schemaVersion: z5.literal("openpond.trainingJobPage.v2"),
|
|
436
|
+
jobs: z5.array(TrainingJobSchema).max(1e3),
|
|
437
|
+
nextCursor: z5.string().trim().min(1).max(2e3).nullable()
|
|
363
438
|
}).strict();
|
|
364
|
-
var TrainingJobEventSchema =
|
|
365
|
-
schemaVersion:
|
|
366
|
-
id:
|
|
367
|
-
jobId:
|
|
368
|
-
sequence:
|
|
369
|
-
type:
|
|
370
|
-
phase:
|
|
371
|
-
message:
|
|
372
|
-
data:
|
|
439
|
+
var TrainingJobEventSchema = z5.object({
|
|
440
|
+
schemaVersion: z5.literal("openpond.trainingJobEvent.v2"),
|
|
441
|
+
id: IdSchema3,
|
|
442
|
+
jobId: IdSchema3,
|
|
443
|
+
sequence: z5.number().int().nonnegative(),
|
|
444
|
+
type: IdSchema3,
|
|
445
|
+
phase: z5.string().trim().min(1).max(200),
|
|
446
|
+
message: z5.string().trim().min(1).max(5e3).nullable(),
|
|
447
|
+
data: z5.record(z5.string(), z5.unknown()).default({}),
|
|
373
448
|
createdAt: TimestampSchema
|
|
374
449
|
}).strict();
|
|
375
|
-
var TrainingJobLogSchema =
|
|
376
|
-
schemaVersion:
|
|
377
|
-
jobId:
|
|
378
|
-
sequence:
|
|
379
|
-
level:
|
|
380
|
-
message:
|
|
450
|
+
var TrainingJobLogSchema = z5.object({
|
|
451
|
+
schemaVersion: z5.literal("openpond.trainingJobLog.v2"),
|
|
452
|
+
jobId: IdSchema3,
|
|
453
|
+
sequence: z5.number().int().nonnegative(),
|
|
454
|
+
level: z5.enum(["debug", "info", "warning", "error"]),
|
|
455
|
+
message: z5.string().max(2e4),
|
|
381
456
|
createdAt: TimestampSchema
|
|
382
457
|
}).strict();
|
|
383
|
-
var TrainingJobControlRequestSchema =
|
|
384
|
-
var TrainingJobOutputSchema =
|
|
385
|
-
schemaVersion:
|
|
386
|
-
id:
|
|
387
|
-
jobId:
|
|
388
|
-
kind:
|
|
458
|
+
var TrainingJobControlRequestSchema = z5.object({ expectedVersion: z5.number().int().nonnegative() }).strict();
|
|
459
|
+
var TrainingJobOutputSchema = z5.object({
|
|
460
|
+
schemaVersion: z5.literal("openpond.trainingJobOutput.v2"),
|
|
461
|
+
id: IdSchema3,
|
|
462
|
+
jobId: IdSchema3,
|
|
463
|
+
kind: z5.enum([
|
|
389
464
|
"checkpoint",
|
|
390
465
|
"adapter",
|
|
391
466
|
"scorer",
|
|
@@ -394,38 +469,38 @@ var TrainingJobOutputSchema = z4.object({
|
|
|
394
469
|
"trace",
|
|
395
470
|
"receipt"
|
|
396
471
|
]),
|
|
397
|
-
artifactRef:
|
|
398
|
-
contentHash:
|
|
399
|
-
sizeBytes:
|
|
400
|
-
metadata:
|
|
472
|
+
artifactRef: z5.string().trim().min(1).max(2e3),
|
|
473
|
+
contentHash: HashSchema3,
|
|
474
|
+
sizeBytes: z5.number().int().nonnegative(),
|
|
475
|
+
metadata: z5.record(z5.string(), z5.unknown()).default({}),
|
|
401
476
|
createdAt: TimestampSchema
|
|
402
477
|
}).strict();
|
|
403
|
-
var TrainingExecutionReceiptSchema =
|
|
404
|
-
schemaVersion:
|
|
405
|
-
id:
|
|
406
|
-
teamId:
|
|
407
|
-
jobId:
|
|
408
|
-
submissionHash:
|
|
409
|
-
manifestHash:
|
|
410
|
-
recipeHash:
|
|
411
|
-
capabilityHash:
|
|
478
|
+
var TrainingExecutionReceiptSchema = z5.object({
|
|
479
|
+
schemaVersion: z5.literal("openpond.trainingExecutionReceipt.v2"),
|
|
480
|
+
id: IdSchema3,
|
|
481
|
+
teamId: IdSchema3,
|
|
482
|
+
jobId: IdSchema3,
|
|
483
|
+
submissionHash: HashSchema3,
|
|
484
|
+
manifestHash: HashSchema3,
|
|
485
|
+
recipeHash: HashSchema3,
|
|
486
|
+
capabilityHash: HashSchema3,
|
|
412
487
|
runtimeRelease: ModelProjectImmutableRefSchema,
|
|
413
|
-
inputs:
|
|
414
|
-
outputs:
|
|
415
|
-
spendUsd:
|
|
416
|
-
durationSeconds:
|
|
417
|
-
cleanupComplete:
|
|
418
|
-
issuer:
|
|
488
|
+
inputs: z5.array(ModelProjectImmutableRefSchema).max(1e4),
|
|
489
|
+
outputs: z5.array(ModelProjectImmutableRefSchema).max(1e4),
|
|
490
|
+
spendUsd: z5.number().nonnegative(),
|
|
491
|
+
durationSeconds: z5.number().nonnegative(),
|
|
492
|
+
cleanupComplete: z5.boolean(),
|
|
493
|
+
issuer: IdSchema3,
|
|
419
494
|
issuedAt: TimestampSchema,
|
|
420
|
-
signature:
|
|
495
|
+
signature: z5.string().trim().min(1).max(1e4).nullable()
|
|
421
496
|
}).strict();
|
|
422
497
|
async function trainingExecutionReceiptHash(receipt) {
|
|
423
498
|
return canonicalSha256(TrainingExecutionReceiptSchema.parse(receipt));
|
|
424
499
|
}
|
|
425
500
|
async function parseAndVerifyTrainingExecutionReceipt(value, expected) {
|
|
426
501
|
const receipt = TrainingExecutionReceiptSchema.parse(value);
|
|
427
|
-
const expectedId =
|
|
428
|
-
const expectedHash =
|
|
502
|
+
const expectedId = IdSchema3.parse(expected.id);
|
|
503
|
+
const expectedHash = HashSchema3.parse(expected.contentHash);
|
|
429
504
|
const actualHash = await trainingExecutionReceiptHash(receipt);
|
|
430
505
|
if (receipt.id !== expectedId || actualHash !== expectedHash) {
|
|
431
506
|
throw new OpenPondProtocolError(
|
|
@@ -433,13 +508,13 @@ async function parseAndVerifyTrainingExecutionReceipt(value, expected) {
|
|
|
433
508
|
"The execution receipt identity or canonical content hash did not match."
|
|
434
509
|
);
|
|
435
510
|
}
|
|
436
|
-
if (expected.teamId !== void 0 && receipt.teamId !==
|
|
511
|
+
if (expected.teamId !== void 0 && receipt.teamId !== IdSchema3.parse(expected.teamId)) {
|
|
437
512
|
throw new OpenPondProtocolError(
|
|
438
513
|
"execution_receipt_team_mismatch",
|
|
439
514
|
"The execution receipt belongs to a different team."
|
|
440
515
|
);
|
|
441
516
|
}
|
|
442
|
-
if (expected.jobId !== void 0 && receipt.jobId !==
|
|
517
|
+
if (expected.jobId !== void 0 && receipt.jobId !== IdSchema3.parse(expected.jobId)) {
|
|
443
518
|
throw new OpenPondProtocolError(
|
|
444
519
|
"execution_receipt_job_mismatch",
|
|
445
520
|
"The execution receipt belongs to a different Training Job."
|
|
@@ -453,18 +528,18 @@ async function parseAndVerifyTrainingExecutionReceipt(value, expected) {
|
|
|
453
528
|
}
|
|
454
529
|
return receipt;
|
|
455
530
|
}
|
|
456
|
-
var TrainingJobOutputsSchema =
|
|
457
|
-
schemaVersion:
|
|
458
|
-
outputs:
|
|
531
|
+
var TrainingJobOutputsSchema = z5.object({
|
|
532
|
+
schemaVersion: z5.literal("openpond.trainingJobOutputs.v2"),
|
|
533
|
+
outputs: z5.array(TrainingJobOutputSchema).max(1e4),
|
|
459
534
|
receipt: TrainingExecutionReceiptSchema.nullable()
|
|
460
535
|
}).strict();
|
|
461
|
-
var TrainingApiErrorSchema =
|
|
462
|
-
schemaVersion:
|
|
463
|
-
code:
|
|
464
|
-
message:
|
|
465
|
-
retryable:
|
|
466
|
-
requestId:
|
|
467
|
-
details:
|
|
536
|
+
var TrainingApiErrorSchema = z5.object({
|
|
537
|
+
schemaVersion: z5.literal("openpond.trainingApiError.v2"),
|
|
538
|
+
code: z5.string().trim().min(1).max(200),
|
|
539
|
+
message: z5.string().trim().min(1).max(5e3),
|
|
540
|
+
retryable: z5.boolean().default(false),
|
|
541
|
+
requestId: z5.string().trim().min(1).max(500).nullable().default(null),
|
|
542
|
+
details: z5.record(z5.string(), z5.unknown()).default({})
|
|
468
543
|
}).strict();
|
|
469
544
|
var OpenPondTrainingApiError = class extends Error {
|
|
470
545
|
status;
|
|
@@ -482,23 +557,23 @@ var OpenPondTrainingApiError = class extends Error {
|
|
|
482
557
|
this.details = error.details;
|
|
483
558
|
}
|
|
484
559
|
};
|
|
485
|
-
var TrainingCapabilitiesSchema =
|
|
486
|
-
schemaVersion:
|
|
487
|
-
capabilityHash:
|
|
488
|
-
jobKinds:
|
|
489
|
-
methods:
|
|
490
|
-
placements:
|
|
491
|
-
|
|
560
|
+
var TrainingCapabilitiesSchema = z5.object({
|
|
561
|
+
schemaVersion: z5.literal("openpond.trainingCapabilities.v2"),
|
|
562
|
+
capabilityHash: HashSchema3,
|
|
563
|
+
jobKinds: z5.array(TrainingJobKindSchema),
|
|
564
|
+
methods: z5.array(z5.string().trim().min(1).max(200)),
|
|
565
|
+
placements: z5.array(
|
|
566
|
+
z5.enum(["local", "remote", "colocated", "provider_native"])
|
|
492
567
|
),
|
|
493
|
-
controls:
|
|
494
|
-
cancel:
|
|
495
|
-
stopAfterGroup:
|
|
496
|
-
resumeFromCheckpoint:
|
|
568
|
+
controls: z5.object({
|
|
569
|
+
cancel: z5.boolean(),
|
|
570
|
+
stopAfterGroup: z5.boolean(),
|
|
571
|
+
resumeFromCheckpoint: z5.boolean()
|
|
497
572
|
}).strict(),
|
|
498
|
-
limits:
|
|
499
|
-
maximumSpendUsd:
|
|
500
|
-
maximumWallSeconds:
|
|
501
|
-
maximumArtifactBytes:
|
|
573
|
+
limits: z5.object({
|
|
574
|
+
maximumSpendUsd: z5.number().nonnegative(),
|
|
575
|
+
maximumWallSeconds: z5.number().int().positive(),
|
|
576
|
+
maximumArtifactBytes: z5.number().int().positive()
|
|
502
577
|
}).strict(),
|
|
503
578
|
checkedAt: TimestampSchema,
|
|
504
579
|
expiresAt: TimestampSchema
|
|
@@ -554,6 +629,7 @@ function createTrainingClient(input) {
|
|
|
554
629
|
);
|
|
555
630
|
}
|
|
556
631
|
return {
|
|
632
|
+
...createTrainingCandidateDecisionClient(request),
|
|
557
633
|
async capabilities() {
|
|
558
634
|
return TrainingCapabilitiesSchema.parse(
|
|
559
635
|
unwrapObject(await request("/v1/training/capabilities"), "capabilities")
|
|
@@ -586,15 +662,15 @@ function createTrainingClient(input) {
|
|
|
586
662
|
async listJobs(options = {}) {
|
|
587
663
|
const parameters = new URLSearchParams();
|
|
588
664
|
if (options.modelProjectId) {
|
|
589
|
-
parameters.set("modelProjectId",
|
|
665
|
+
parameters.set("modelProjectId", IdSchema3.parse(options.modelProjectId));
|
|
590
666
|
}
|
|
591
667
|
if (options.cursor) {
|
|
592
|
-
parameters.set("cursor",
|
|
668
|
+
parameters.set("cursor", z5.string().trim().min(1).max(2e3).parse(options.cursor));
|
|
593
669
|
}
|
|
594
670
|
if (options.limit !== void 0) {
|
|
595
671
|
parameters.set(
|
|
596
672
|
"limit",
|
|
597
|
-
String(
|
|
673
|
+
String(z5.number().int().min(1).max(1e3).parse(options.limit))
|
|
598
674
|
);
|
|
599
675
|
}
|
|
600
676
|
const query = parameters.size > 0 ? `?${parameters.toString()}` : "";
|
|
@@ -605,7 +681,7 @@ function createTrainingClient(input) {
|
|
|
605
681
|
async getJob(jobId) {
|
|
606
682
|
return TrainingJobSchema.parse(
|
|
607
683
|
unwrapObject(
|
|
608
|
-
await request(`/v1/training/jobs/${encodeURIComponent(
|
|
684
|
+
await request(`/v1/training/jobs/${encodeURIComponent(IdSchema3.parse(jobId))}`),
|
|
609
685
|
"job"
|
|
610
686
|
)
|
|
611
687
|
);
|
|
@@ -615,7 +691,7 @@ function createTrainingClient(input) {
|
|
|
615
691
|
return TrainingJobSchema.parse(
|
|
616
692
|
unwrapObject(
|
|
617
693
|
await request(
|
|
618
|
-
`/v1/training/jobs/${encodeURIComponent(
|
|
694
|
+
`/v1/training/jobs/${encodeURIComponent(IdSchema3.parse(jobId))}/cancel`,
|
|
619
695
|
{ method: "POST", body: JSON.stringify(control) }
|
|
620
696
|
),
|
|
621
697
|
"job"
|
|
@@ -627,7 +703,7 @@ function createTrainingClient(input) {
|
|
|
627
703
|
return TrainingJobSchema.parse(
|
|
628
704
|
unwrapObject(
|
|
629
705
|
await request(
|
|
630
|
-
`/v1/training/jobs/${encodeURIComponent(
|
|
706
|
+
`/v1/training/jobs/${encodeURIComponent(IdSchema3.parse(jobId))}/stop-after-group`,
|
|
631
707
|
{ method: "POST", body: JSON.stringify(control) }
|
|
632
708
|
),
|
|
633
709
|
"job"
|
|
@@ -635,10 +711,10 @@ function createTrainingClient(input) {
|
|
|
635
711
|
);
|
|
636
712
|
},
|
|
637
713
|
async events(jobId) {
|
|
638
|
-
return
|
|
714
|
+
return z5.array(TrainingJobEventSchema).parse(
|
|
639
715
|
unwrapObject(
|
|
640
716
|
await request(
|
|
641
|
-
`/v1/training/jobs/${encodeURIComponent(
|
|
717
|
+
`/v1/training/jobs/${encodeURIComponent(IdSchema3.parse(jobId))}/events`
|
|
642
718
|
),
|
|
643
719
|
"events"
|
|
644
720
|
)
|
|
@@ -647,18 +723,18 @@ function createTrainingClient(input) {
|
|
|
647
723
|
async outputs(jobId) {
|
|
648
724
|
return TrainingJobOutputsSchema.parse(
|
|
649
725
|
await request(
|
|
650
|
-
`/v1/training/jobs/${encodeURIComponent(
|
|
726
|
+
`/v1/training/jobs/${encodeURIComponent(IdSchema3.parse(jobId))}/outputs`
|
|
651
727
|
)
|
|
652
728
|
);
|
|
653
729
|
},
|
|
654
730
|
async evaluationTasks(jobId, evaluation, options = {}) {
|
|
655
|
-
const id =
|
|
731
|
+
const id = IdSchema3.parse(jobId);
|
|
656
732
|
const reference = ModelProjectImmutableRefSchema.parse(evaluation);
|
|
657
733
|
const parameters = new URLSearchParams();
|
|
658
|
-
const cursor = options.cursor === void 0 ? void 0 :
|
|
659
|
-
const offset = cursor === void 0 ? 0 :
|
|
734
|
+
const cursor = options.cursor === void 0 ? void 0 : z5.string().regex(/^[1-9]\d*$/).parse(options.cursor);
|
|
735
|
+
const offset = cursor === void 0 ? 0 : z5.number().int().min(1).max(9999).parse(Number(cursor));
|
|
660
736
|
if (cursor !== void 0) parameters.set("cursor", cursor);
|
|
661
|
-
if (options.limit !== void 0) parameters.set("limit", String(
|
|
737
|
+
if (options.limit !== void 0) parameters.set("limit", String(z5.number().int().min(1).max(100).parse(options.limit)));
|
|
662
738
|
const query = parameters.size ? `?${parameters.toString()}` : "";
|
|
663
739
|
return parseAndVerifyTrainingEvaluationTaskPage(
|
|
664
740
|
await request(`/v1/training/jobs/${encodeURIComponent(id)}/evaluations/${encodeURIComponent(reference.id)}/tasks${query}`),
|
|
@@ -666,10 +742,10 @@ function createTrainingClient(input) {
|
|
|
666
742
|
);
|
|
667
743
|
},
|
|
668
744
|
async logs(jobId) {
|
|
669
|
-
return
|
|
745
|
+
return z5.array(TrainingJobLogSchema).max(1e5).parse(
|
|
670
746
|
unwrapObject(
|
|
671
747
|
await request(
|
|
672
|
-
`/v1/training/jobs/${encodeURIComponent(
|
|
748
|
+
`/v1/training/jobs/${encodeURIComponent(IdSchema3.parse(jobId))}/logs`
|
|
673
749
|
),
|
|
674
750
|
"logs"
|
|
675
751
|
)
|
|
@@ -703,6 +779,10 @@ function trainingApiError(value, status) {
|
|
|
703
779
|
}
|
|
704
780
|
|
|
705
781
|
export {
|
|
782
|
+
TrainingCandidateDecisionRequestSchema,
|
|
783
|
+
TrainingCandidateDecisionSchema,
|
|
784
|
+
trainingCandidateDecisionHash,
|
|
785
|
+
parseAndVerifyTrainingCandidateDecision,
|
|
706
786
|
TrainingEvaluationTaskResultSchema,
|
|
707
787
|
TrainingEvaluationTaskPageSchema,
|
|
708
788
|
trainingEvaluationTaskPageHash,
|
|
@@ -742,4 +822,4 @@ export {
|
|
|
742
822
|
TrainingCapabilitiesSchema,
|
|
743
823
|
createTrainingClient
|
|
744
824
|
};
|
|
745
|
-
//# sourceMappingURL=chunk-
|
|
825
|
+
//# sourceMappingURL=chunk-F5JBFRAH.js.map
|