openpond-sdk 0.5.13 → 0.5.15
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/TASKSETS.md +13 -0
- package/TRAINING_PROTOCOL.md +6 -0
- package/dist/{chunk-F5JBFRAH.js → chunk-GZOXT7YE.js} +228 -185
- package/dist/chunk-GZOXT7YE.js.map +7 -0
- package/dist/{chunk-KVU4WQYC.js → chunk-LV4TDE5S.js} +14 -6
- package/dist/chunk-LV4TDE5S.js.map +7 -0
- package/dist/taskset-drafts.js +2 -2
- package/dist/taskset-packages.js +2 -2
- package/dist/training-bundle.js +1 -1
- package/dist/training.js +5 -1
- package/dist/types/packages/sdk/src/taskset-authored-contracts.d.ts +1 -1
- package/dist/types/packages/sdk/src/taskset-authored-files.d.ts +1 -1
- package/dist/types/packages/sdk/src/taskset-draft-api-contracts.d.ts +2 -2
- package/dist/types/packages/sdk/src/taskset-draft-client.d.ts +14 -5
- package/dist/types/packages/sdk/src/taskset-draft-client.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/taskset-draft-core.d.ts +1 -1
- package/dist/types/packages/sdk/src/taskset-draft-document.d.ts +1 -1
- package/dist/types/packages/sdk/src/taskset-draft-source.d.ts +2 -2
- package/dist/types/packages/sdk/src/taskset-draft-workspace.d.ts +2 -2
- package/dist/types/packages/sdk/src/taskset-package-client.d.ts +1487 -115
- package/dist/types/packages/sdk/src/taskset-package-client.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/taskset-package-projection.d.ts +1 -1
- package/dist/types/packages/sdk/src/training-harness-sources.d.ts +141 -0
- package/dist/types/packages/sdk/src/training-harness-sources.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/training-learning-batch.d.ts +2 -2
- package/dist/types/packages/sdk/src/training.d.ts +127 -0
- package/dist/types/packages/sdk/src/training.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/chunk-F5JBFRAH.js.map +0 -7
- package/dist/chunk-KVU4WQYC.js.map +0 -7
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
import {
|
|
2
|
+
validateHarnessSourcePackage
|
|
3
|
+
} from "./chunk-5FBPNWT4.js";
|
|
4
|
+
import {
|
|
5
|
+
ImmutableReleaseRefSchema
|
|
6
|
+
} from "./chunk-QUOW6URQ.js";
|
|
1
7
|
import {
|
|
2
8
|
ModelProjectBaseModelSchema,
|
|
3
9
|
ModelProjectImmutableRefSchema,
|
|
@@ -14,31 +20,66 @@ import {
|
|
|
14
20
|
} from "./chunk-ZNFOVV7B.js";
|
|
15
21
|
|
|
16
22
|
// src/training.ts
|
|
17
|
-
import { z as
|
|
23
|
+
import { z as z6 } from "zod";
|
|
18
24
|
|
|
19
|
-
// src/training-
|
|
25
|
+
// src/training-harness-sources.ts
|
|
20
26
|
import { z } from "zod";
|
|
21
|
-
var
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
27
|
+
var TrainingHarnessSourcePublicationSchema = z.object({
|
|
28
|
+
schemaVersion: z.literal("openpond.trainingHarnessSourcePublication.v1"),
|
|
29
|
+
harnessRelease: ImmutableReleaseRefSchema,
|
|
30
|
+
sourcePackageHash: z.string().regex(/^[a-f0-9]{64}$/),
|
|
31
|
+
sizeBytes: z.number().int().positive().max(TRAINING_INPUT_ARTIFACT_MAX_BYTES)
|
|
32
|
+
}).strict();
|
|
33
|
+
function createTrainingHarnessSourceClient(request) {
|
|
34
|
+
const route = (reference) => {
|
|
35
|
+
const ref = ImmutableReleaseRefSchema.parse(reference);
|
|
36
|
+
return `/v1/training/harness-sources/${encodeURIComponent(ref.id)}/${ref.contentHash}`;
|
|
37
|
+
};
|
|
38
|
+
return {
|
|
39
|
+
async publishHarnessSource(value) {
|
|
40
|
+
assertCanonicalPayloadSize(value, TRAINING_INPUT_ARTIFACT_MAX_BYTES, "Training Harness source");
|
|
41
|
+
const source = validateHarnessSourcePackage(value);
|
|
42
|
+
const portability = source.agentSnapshot.portability;
|
|
43
|
+
if (!portability.portable || portability.blockers.length || portability.localOnlyAssetRefs.length || portability.hostPrivateAssetRefs.length || source.harnessRelease.files.some((file) => file.visibility !== "policy")) {
|
|
44
|
+
throw new Error("Hosted training Harness publication requires portable, policy-visible source.");
|
|
45
|
+
}
|
|
46
|
+
const result = TrainingHarnessSourcePublicationSchema.parse(await request(route({ id: source.harnessRelease.id, contentHash: source.harnessRelease.contentHash }), { method: "PUT", body: JSON.stringify(source) }));
|
|
47
|
+
if (result.harnessRelease.id !== source.harnessRelease.id || result.harnessRelease.contentHash !== source.harnessRelease.contentHash || result.sourcePackageHash !== source.contentHash) {
|
|
48
|
+
throw new Error("Published Harness source differs from the selected immutable package.");
|
|
49
|
+
}
|
|
50
|
+
return result;
|
|
51
|
+
},
|
|
52
|
+
async getHarnessSource(reference) {
|
|
53
|
+
const value = await request(route(reference), void 0, TRAINING_INPUT_ARTIFACT_MAX_BYTES);
|
|
54
|
+
assertCanonicalPayloadSize(value, TRAINING_INPUT_ARTIFACT_MAX_BYTES, "Training Harness source");
|
|
55
|
+
return validateHarnessSourcePackage(value, reference);
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
// src/training-candidate-decisions.ts
|
|
61
|
+
import { z as z2 } from "zod";
|
|
62
|
+
var IdSchema = /* @__PURE__ */ (() => z2.string().trim().min(1).max(500))();
|
|
63
|
+
var HashSchema = /* @__PURE__ */ (() => z2.string().regex(/^[a-f0-9]{64}$/))();
|
|
64
|
+
var TrainingCandidateDecisionRequestSchema = /* @__PURE__ */ (() => z2.object({
|
|
65
|
+
schemaVersion: z2.literal("openpond.trainingCandidateDecisionRequest.v1"),
|
|
25
66
|
teamId: IdSchema,
|
|
26
67
|
jobId: IdSchema,
|
|
27
68
|
artifact: ModelProjectImmutableRefSchema,
|
|
28
69
|
evaluation: ModelProjectImmutableRefSchema,
|
|
29
70
|
executionReceipt: ModelProjectImmutableRefSchema,
|
|
30
|
-
decision:
|
|
31
|
-
reason:
|
|
71
|
+
decision: z2.enum(["accepted", "rejected"]),
|
|
72
|
+
reason: z2.string().trim().min(1).max(5e3),
|
|
32
73
|
idempotencyKey: IdSchema,
|
|
33
74
|
expectedDecision: ModelProjectImmutableRefSchema.nullable()
|
|
34
75
|
}).strict())();
|
|
35
|
-
var TrainingCandidateDecisionSchema = /* @__PURE__ */ (() =>
|
|
36
|
-
schemaVersion:
|
|
76
|
+
var TrainingCandidateDecisionSchema = /* @__PURE__ */ (() => z2.object({
|
|
77
|
+
schemaVersion: z2.literal("openpond.trainingCandidateDecision.v1"),
|
|
37
78
|
id: IdSchema,
|
|
38
79
|
request: TrainingCandidateDecisionRequestSchema,
|
|
39
|
-
revision:
|
|
40
|
-
actor:
|
|
41
|
-
decidedAt:
|
|
80
|
+
revision: z2.number().int().positive(),
|
|
81
|
+
actor: z2.object({ userId: IdSchema, kind: z2.enum(["user", "api_key", "agent_delegate"]), id: IdSchema }).strict(),
|
|
82
|
+
decidedAt: z2.string().datetime({ offset: true }),
|
|
42
83
|
contentHash: HashSchema
|
|
43
84
|
}).strict().superRefine((value, context) => {
|
|
44
85
|
if (value.revision === 1 !== (value.request.expectedDecision === null)) {
|
|
@@ -75,7 +116,7 @@ function createTrainingCandidateDecisionClient(request) {
|
|
|
75
116
|
IdSchema.parse(target.teamId);
|
|
76
117
|
const reference = options.decision ? ModelProjectImmutableRefSchema.parse(options.decision) : void 0;
|
|
77
118
|
const query = reference ? `?decisionId=${encodeURIComponent(reference.id)}` : "";
|
|
78
|
-
const response =
|
|
119
|
+
const response = z2.object({ decision: z2.unknown().nullable() }).strict().parse(await request(`${route(target)}${query}`));
|
|
79
120
|
if (response.decision === null && !reference) return null;
|
|
80
121
|
const decision = await parseAndVerifyTrainingCandidateDecision(response.decision, target);
|
|
81
122
|
if (reference && (decision.id !== reference.id || decision.contentHash !== reference.contentHash)) {
|
|
@@ -92,38 +133,38 @@ function createTrainingCandidateDecisionClient(request) {
|
|
|
92
133
|
}
|
|
93
134
|
|
|
94
135
|
// src/training-evaluation-results.ts
|
|
95
|
-
import { z as
|
|
96
|
-
var IdSchema2 = /* @__PURE__ */ (() =>
|
|
97
|
-
var HashSchema2 = /* @__PURE__ */ (() =>
|
|
98
|
-
var TrainingEvaluationTaskResultSchema = /* @__PURE__ */ (() =>
|
|
136
|
+
import { z as z3 } from "zod";
|
|
137
|
+
var IdSchema2 = /* @__PURE__ */ (() => z3.string().trim().min(1).max(500))();
|
|
138
|
+
var HashSchema2 = /* @__PURE__ */ (() => z3.string().regex(/^[a-f0-9]{64}$/))();
|
|
139
|
+
var TrainingEvaluationTaskResultSchema = /* @__PURE__ */ (() => z3.object({
|
|
99
140
|
taskId: IdSchema2,
|
|
100
141
|
taskSha256: HashSchema2,
|
|
101
142
|
resultSha256: HashSchema2,
|
|
102
|
-
input:
|
|
103
|
-
instruction:
|
|
104
|
-
context:
|
|
143
|
+
input: z3.object({
|
|
144
|
+
instruction: z3.string().max(1e6),
|
|
145
|
+
context: z3.record(z3.string(), z3.unknown())
|
|
105
146
|
}).strict(),
|
|
106
|
-
output:
|
|
147
|
+
output: z3.string().max(1e6),
|
|
107
148
|
outputSha256: HashSchema2,
|
|
108
|
-
score:
|
|
109
|
-
evidence:
|
|
110
|
-
kind:
|
|
149
|
+
score: z3.number().finite().min(0).max(1),
|
|
150
|
+
evidence: z3.object({
|
|
151
|
+
kind: z3.enum(["worker_command", "hosted_trace", "local_trace"]),
|
|
111
152
|
id: IdSchema2
|
|
112
153
|
}).strict()
|
|
113
154
|
}).strict())();
|
|
114
|
-
var TrainingEvaluationTaskPageSchema = /* @__PURE__ */ (() =>
|
|
115
|
-
schemaVersion:
|
|
155
|
+
var TrainingEvaluationTaskPageSchema = /* @__PURE__ */ (() => z3.object({
|
|
156
|
+
schemaVersion: z3.literal("openpond.trainingEvaluationTaskPage.v1"),
|
|
116
157
|
jobId: IdSchema2,
|
|
117
158
|
teamId: IdSchema2,
|
|
118
159
|
evaluation: ModelProjectImmutableRefSchema,
|
|
119
|
-
kind:
|
|
120
|
-
policyVersion:
|
|
160
|
+
kind: z3.enum(["baseline", "candidate"]),
|
|
161
|
+
policyVersion: z3.number().int().nonnegative(),
|
|
121
162
|
taskset: ModelProjectVersionedRefSchema,
|
|
122
163
|
panelSha256: HashSchema2,
|
|
123
|
-
offset:
|
|
124
|
-
total:
|
|
125
|
-
tasks:
|
|
126
|
-
nextCursor:
|
|
164
|
+
offset: z3.number().int().nonnegative(),
|
|
165
|
+
total: z3.number().int().min(1).max(1e4),
|
|
166
|
+
tasks: z3.array(TrainingEvaluationTaskResultSchema).min(1).max(100),
|
|
167
|
+
nextCursor: z3.string().regex(/^[1-9]\d*$/).nullable(),
|
|
127
168
|
contentHash: HashSchema2
|
|
128
169
|
}).strict().superRefine((page, context) => {
|
|
129
170
|
const end = page.offset + page.tasks.length;
|
|
@@ -158,12 +199,12 @@ async function parseAndVerifyTrainingEvaluationTaskPage(value, expected) {
|
|
|
158
199
|
}
|
|
159
200
|
|
|
160
201
|
// src/training-grading-plan.ts
|
|
161
|
-
import { z as
|
|
202
|
+
import { z as z4 } from "zod";
|
|
162
203
|
import { compileBoundGraders, RewardBindingSchema, RewardReleaseSchema } from "@openpond/evals/rewards";
|
|
163
|
-
var GradersSchema =
|
|
164
|
-
var RewardExecutionSchema =
|
|
204
|
+
var GradersSchema = z4.array(z4.object({ id: z4.string().trim().min(1) }).catchall(z4.unknown())).min(1).max(1e3);
|
|
205
|
+
var RewardExecutionSchema = z4.object({
|
|
165
206
|
binding: RewardBindingSchema,
|
|
166
|
-
rewards:
|
|
207
|
+
rewards: z4.array(RewardReleaseSchema).min(1).max(100)
|
|
167
208
|
}).strict();
|
|
168
209
|
async function deterministicTrainingRewardSource(input) {
|
|
169
210
|
const execution = input.rewardExecution ? RewardExecutionSchema.parse(input.rewardExecution) : null;
|
|
@@ -180,23 +221,23 @@ async function deterministicTrainingRewardSource(input) {
|
|
|
180
221
|
}
|
|
181
222
|
|
|
182
223
|
// src/training-evaluation-source.ts
|
|
183
|
-
import { z as
|
|
224
|
+
import { z as z5 } from "zod";
|
|
184
225
|
var TRAINING_EVALUATION_SOURCE_PATH = "evaluation-source.json";
|
|
185
|
-
var TaskIdentitySchema =
|
|
186
|
-
id:
|
|
187
|
-
clusterKey:
|
|
188
|
-
split:
|
|
226
|
+
var TaskIdentitySchema = z5.object({
|
|
227
|
+
id: z5.string().trim().min(1),
|
|
228
|
+
clusterKey: z5.string().trim().min(1),
|
|
229
|
+
split: z5.enum(["train", "validation", "frozen_eval"])
|
|
189
230
|
}).passthrough();
|
|
190
|
-
var TrainingEvaluationSourceSchema =
|
|
191
|
-
schemaVersion:
|
|
231
|
+
var TrainingEvaluationSourceSchema = z5.object({
|
|
232
|
+
schemaVersion: z5.literal("openpond.trainingEvaluationSource.v1"),
|
|
192
233
|
taskset: ModelProjectVersionedRefSchema,
|
|
193
|
-
tasks:
|
|
194
|
-
assets:
|
|
195
|
-
path:
|
|
196
|
-
sha256:
|
|
197
|
-
sizeBytes:
|
|
198
|
-
encoding:
|
|
199
|
-
content:
|
|
234
|
+
tasks: z5.array(TaskIdentitySchema).min(1).max(1e4),
|
|
235
|
+
assets: z5.array(z5.object({
|
|
236
|
+
path: z5.string().trim().min(1).max(2e3),
|
|
237
|
+
sha256: z5.string().regex(/^[a-f0-9]{64}$/),
|
|
238
|
+
sizeBytes: z5.number().int().nonnegative(),
|
|
239
|
+
encoding: z5.literal("base64"),
|
|
240
|
+
content: z5.string().max(32 * 1024 * 1024)
|
|
200
241
|
}).strict()).max(1e4)
|
|
201
242
|
}).strict().superRefine((source, context) => {
|
|
202
243
|
const ids = /* @__PURE__ */ new Set();
|
|
@@ -207,8 +248,8 @@ var TrainingEvaluationSourceSchema = z4.object({
|
|
|
207
248
|
});
|
|
208
249
|
});
|
|
209
250
|
function assertTrainingEvaluationIsolation(trainingTasks, evaluationTasks) {
|
|
210
|
-
const training =
|
|
211
|
-
const evaluation =
|
|
251
|
+
const training = z5.array(TaskIdentitySchema).min(1).max(1e4).parse(trainingTasks);
|
|
252
|
+
const evaluation = z5.array(TaskIdentitySchema).min(1).max(1e4).parse(evaluationTasks);
|
|
212
253
|
const trainIds = /* @__PURE__ */ new Set();
|
|
213
254
|
const trainFamilies = /* @__PURE__ */ new Set();
|
|
214
255
|
for (const task of training) {
|
|
@@ -234,24 +275,24 @@ async function trainingEvaluationSourceRef(input) {
|
|
|
234
275
|
}
|
|
235
276
|
|
|
236
277
|
// src/training.ts
|
|
237
|
-
var IdSchema3 =
|
|
238
|
-
var HashSchema3 =
|
|
239
|
-
var TimestampSchema =
|
|
240
|
-
var TrainingInputArtifactUploadSchema =
|
|
241
|
-
schemaVersion:
|
|
242
|
-
kind:
|
|
243
|
-
idempotencyKey:
|
|
278
|
+
var IdSchema3 = z6.string().trim().min(1).max(500);
|
|
279
|
+
var HashSchema3 = z6.string().regex(/^[a-f0-9]{64}$/);
|
|
280
|
+
var TimestampSchema = z6.string().datetime({ offset: true });
|
|
281
|
+
var TrainingInputArtifactUploadSchema = z6.object({
|
|
282
|
+
schemaVersion: z6.literal("openpond.trainingInputArtifactUpload.v2"),
|
|
283
|
+
kind: z6.enum(["portable_training_bundle", "reward_model_dataset"]),
|
|
284
|
+
idempotencyKey: z6.string().trim().min(1).max(500),
|
|
244
285
|
sourceManifest: ModelProjectImmutableRefSchema,
|
|
245
|
-
payload:
|
|
286
|
+
payload: z6.unknown(),
|
|
246
287
|
contentHash: HashSchema3
|
|
247
288
|
}).strict();
|
|
248
|
-
var TrainingInputArtifactSchema =
|
|
249
|
-
schemaVersion:
|
|
250
|
-
kind:
|
|
289
|
+
var TrainingInputArtifactSchema = z6.object({
|
|
290
|
+
schemaVersion: z6.literal("openpond.trainingInputArtifact.v2"),
|
|
291
|
+
kind: z6.enum(["portable_training_bundle", "reward_model_dataset"]),
|
|
251
292
|
sourceManifest: ModelProjectImmutableRefSchema,
|
|
252
|
-
artifactRef:
|
|
293
|
+
artifactRef: z6.string().trim().min(1).max(2e3),
|
|
253
294
|
contentHash: HashSchema3,
|
|
254
|
-
sizeBytes:
|
|
295
|
+
sizeBytes: z6.number().int().positive(),
|
|
255
296
|
createdAt: TimestampSchema
|
|
256
297
|
}).strict();
|
|
257
298
|
async function trainingInputArtifactUploadHash(upload) {
|
|
@@ -274,11 +315,11 @@ async function parseAndVerifyTrainingInputArtifactUpload(value) {
|
|
|
274
315
|
}
|
|
275
316
|
return parsed;
|
|
276
317
|
}
|
|
277
|
-
var TrainingJobKindSchema =
|
|
318
|
+
var TrainingJobKindSchema = z6.enum([
|
|
278
319
|
"reward_model_train",
|
|
279
320
|
"policy_optimize"
|
|
280
321
|
]);
|
|
281
|
-
var TrainingJobStateSchema =
|
|
322
|
+
var TrainingJobStateSchema = z6.enum([
|
|
282
323
|
"queued",
|
|
283
324
|
"admitting",
|
|
284
325
|
"provisioning",
|
|
@@ -289,91 +330,91 @@ var TrainingJobStateSchema = z5.enum([
|
|
|
289
330
|
"failed",
|
|
290
331
|
"cancelled"
|
|
291
332
|
]);
|
|
292
|
-
var TrainingCapabilityRequirementSchema =
|
|
333
|
+
var TrainingCapabilityRequirementSchema = z6.object({
|
|
293
334
|
id: IdSchema3,
|
|
294
|
-
version:
|
|
295
|
-
required:
|
|
335
|
+
version: z6.string().trim().min(1).max(200).nullable().default(null),
|
|
336
|
+
required: z6.boolean().default(true)
|
|
296
337
|
}).strict();
|
|
297
|
-
var TrainingJobSourceSchema =
|
|
298
|
-
modelProject:
|
|
338
|
+
var TrainingJobSourceSchema = z6.object({
|
|
339
|
+
modelProject: z6.object({
|
|
299
340
|
id: IdSchema3,
|
|
300
341
|
portableProjectId: IdSchema3,
|
|
301
|
-
revision:
|
|
342
|
+
revision: z6.number().int().positive(),
|
|
302
343
|
contentHash: HashSchema3
|
|
303
344
|
}).strict(),
|
|
304
345
|
harnessRunManifest: ModelProjectImmutableRefSchema,
|
|
305
346
|
harnessRelease: ModelProjectImmutableRefSchema,
|
|
306
347
|
taskset: ModelProjectVersionedRefSchema,
|
|
307
348
|
tasksetRelease: ModelProjectImmutableRefSchema,
|
|
308
|
-
evaluation:
|
|
349
|
+
evaluation: z6.object({
|
|
309
350
|
taskset: ModelProjectVersionedRefSchema,
|
|
310
351
|
dataset: ModelProjectImmutableRefSchema
|
|
311
352
|
}).strict().nullable().optional(),
|
|
312
353
|
dataset: ModelProjectImmutableRefSchema,
|
|
313
|
-
evidenceSets:
|
|
354
|
+
evidenceSets: z6.array(ModelProjectImmutableRefSchema).max(1e4)
|
|
314
355
|
}).strict();
|
|
315
|
-
var RewardModelTrainingRequestSchema =
|
|
316
|
-
kind:
|
|
356
|
+
var RewardModelTrainingRequestSchema = z6.object({
|
|
357
|
+
kind: z6.literal("reward_model_train"),
|
|
317
358
|
baseModel: ModelProjectBaseModelSchema,
|
|
318
359
|
preferenceDatasetRelease: ModelProjectImmutableRefSchema,
|
|
319
360
|
processorRelease: ModelProjectImmutableRefSchema,
|
|
320
|
-
recipe:
|
|
321
|
-
schemaVersion:
|
|
322
|
-
method:
|
|
323
|
-
parameterization:
|
|
324
|
-
}).catchall(
|
|
361
|
+
recipe: z6.object({
|
|
362
|
+
schemaVersion: z6.literal("openpond.rewardModelRecipe.v1"),
|
|
363
|
+
method: z6.literal("reward_model"),
|
|
364
|
+
parameterization: z6.literal("lora_with_scalar_head")
|
|
365
|
+
}).catchall(z6.unknown())
|
|
325
366
|
}).strict();
|
|
326
|
-
var DeterministicRewardSourceSchema =
|
|
327
|
-
kind:
|
|
367
|
+
var DeterministicRewardSourceSchema = z6.object({
|
|
368
|
+
kind: z6.literal("deterministic"),
|
|
328
369
|
grader: ModelProjectImmutableRefSchema,
|
|
329
370
|
composer: ModelProjectImmutableRefSchema.nullable().default(null)
|
|
330
371
|
}).strict();
|
|
331
|
-
var LearnedRewardSourceSchema =
|
|
332
|
-
kind:
|
|
372
|
+
var LearnedRewardSourceSchema = z6.object({
|
|
373
|
+
kind: z6.literal("learned_reward"),
|
|
333
374
|
rewardModelVersion: ModelProjectImmutableRefSchema,
|
|
334
375
|
qualificationReport: ModelProjectImmutableRefSchema.nullable().default(null),
|
|
335
|
-
evaluationReferences:
|
|
336
|
-
scorerArtifact:
|
|
337
|
-
artifactRef:
|
|
376
|
+
evaluationReferences: z6.array(ModelProjectImmutableRefSchema).max(1e3).default([]),
|
|
377
|
+
scorerArtifact: z6.object({
|
|
378
|
+
artifactRef: z6.string().trim().min(1).max(2e3),
|
|
338
379
|
contentHash: HashSchema3,
|
|
339
380
|
executionReceipt: ModelProjectImmutableRefSchema
|
|
340
381
|
}).strict(),
|
|
341
382
|
processorRelease: ModelProjectImmutableRefSchema,
|
|
342
383
|
rewardComposerRelease: ModelProjectImmutableRefSchema
|
|
343
384
|
}).strict();
|
|
344
|
-
var PolicyOptimizationRequestSchema =
|
|
345
|
-
kind:
|
|
385
|
+
var PolicyOptimizationRequestSchema = z6.object({
|
|
386
|
+
kind: z6.literal("policy_optimize"),
|
|
346
387
|
baseModel: ModelProjectBaseModelSchema,
|
|
347
388
|
recipe: ModelProjectRecipeDocumentSchema,
|
|
348
|
-
rewardSource:
|
|
389
|
+
rewardSource: z6.discriminatedUnion("kind", [
|
|
349
390
|
DeterministicRewardSourceSchema,
|
|
350
391
|
LearnedRewardSourceSchema
|
|
351
392
|
]),
|
|
352
393
|
resumeFrom: ModelProjectImmutableRefSchema.nullable().default(null)
|
|
353
394
|
}).strict();
|
|
354
|
-
var TrainingJobRequestSchema =
|
|
395
|
+
var TrainingJobRequestSchema = z6.discriminatedUnion("kind", [
|
|
355
396
|
RewardModelTrainingRequestSchema,
|
|
356
397
|
PolicyOptimizationRequestSchema
|
|
357
398
|
]);
|
|
358
|
-
var TrainingJobApprovalSchema =
|
|
399
|
+
var TrainingJobApprovalSchema = z6.object({
|
|
359
400
|
approvalHash: HashSchema3,
|
|
360
401
|
approvedAt: TimestampSchema,
|
|
361
|
-
exportApproved:
|
|
362
|
-
maximumSpendUsd:
|
|
363
|
-
retentionDays:
|
|
364
|
-
region:
|
|
402
|
+
exportApproved: z6.boolean(),
|
|
403
|
+
maximumSpendUsd: z6.number().nonnegative(),
|
|
404
|
+
retentionDays: z6.number().int().nonnegative().nullable(),
|
|
405
|
+
region: z6.string().trim().min(1).max(200).nullable().default(null)
|
|
365
406
|
}).strict();
|
|
366
|
-
var TrainingJobSubmissionSchema =
|
|
367
|
-
schemaVersion:
|
|
368
|
-
idempotencyKey:
|
|
369
|
-
name:
|
|
407
|
+
var TrainingJobSubmissionSchema = z6.object({
|
|
408
|
+
schemaVersion: z6.literal("openpond.trainingJobSubmission.v2"),
|
|
409
|
+
idempotencyKey: z6.string().trim().min(1).max(500),
|
|
410
|
+
name: z6.string().trim().min(1).max(200),
|
|
370
411
|
source: TrainingJobSourceSchema,
|
|
371
412
|
job: TrainingJobRequestSchema,
|
|
372
|
-
requestedCapabilities:
|
|
373
|
-
placementObjective:
|
|
374
|
-
budget:
|
|
375
|
-
maximumSpendUsd:
|
|
376
|
-
maximumWallSeconds:
|
|
413
|
+
requestedCapabilities: z6.array(TrainingCapabilityRequirementSchema).max(1e3),
|
|
414
|
+
placementObjective: z6.enum(["fast", "balanced", "economical"]),
|
|
415
|
+
budget: z6.object({
|
|
416
|
+
maximumSpendUsd: z6.number().nonnegative(),
|
|
417
|
+
maximumWallSeconds: z6.number().int().positive()
|
|
377
418
|
}).strict(),
|
|
378
419
|
approval: TrainingJobApprovalSchema,
|
|
379
420
|
contentHash: HashSchema3
|
|
@@ -406,61 +447,61 @@ async function parseAndVerifyTrainingJobSubmission(value) {
|
|
|
406
447
|
}
|
|
407
448
|
return parsed;
|
|
408
449
|
}
|
|
409
|
-
var TrainingJobSchema =
|
|
410
|
-
schemaVersion:
|
|
450
|
+
var TrainingJobSchema = z6.object({
|
|
451
|
+
schemaVersion: z6.literal("openpond.trainingJob.v2"),
|
|
411
452
|
id: IdSchema3,
|
|
412
453
|
teamId: IdSchema3,
|
|
413
454
|
kind: TrainingJobKindSchema,
|
|
414
455
|
modelProjectId: IdSchema3,
|
|
415
456
|
portableProjectId: IdSchema3,
|
|
416
|
-
sourceProjectRevision:
|
|
457
|
+
sourceProjectRevision: z6.number().int().positive(),
|
|
417
458
|
submissionHash: HashSchema3,
|
|
418
459
|
state: TrainingJobStateSchema,
|
|
419
|
-
phase:
|
|
420
|
-
version:
|
|
421
|
-
progress:
|
|
422
|
-
rolloutProgress:
|
|
423
|
-
groupsCompleted:
|
|
424
|
-
groupsTarget:
|
|
425
|
-
optimizerUpdatesApplied:
|
|
426
|
-
optimizerUpdatesSkipped:
|
|
460
|
+
phase: z6.string().trim().min(1).max(200),
|
|
461
|
+
version: z6.number().int().nonnegative(),
|
|
462
|
+
progress: z6.number().min(0).max(1),
|
|
463
|
+
rolloutProgress: z6.object({
|
|
464
|
+
groupsCompleted: z6.number().int().nonnegative(),
|
|
465
|
+
groupsTarget: z6.number().int().nonnegative(),
|
|
466
|
+
optimizerUpdatesApplied: z6.number().int().nonnegative(),
|
|
467
|
+
optimizerUpdatesSkipped: z6.number().int().nonnegative()
|
|
427
468
|
}).strict(),
|
|
428
|
-
accruedSpendUsd:
|
|
429
|
-
terminalReason:
|
|
469
|
+
accruedSpendUsd: z6.number().nonnegative(),
|
|
470
|
+
terminalReason: z6.string().trim().min(1).max(5e3).nullable(),
|
|
430
471
|
createdAt: TimestampSchema,
|
|
431
472
|
updatedAt: TimestampSchema,
|
|
432
473
|
completedAt: TimestampSchema.nullable()
|
|
433
474
|
}).strict();
|
|
434
|
-
var TrainingJobPageSchema =
|
|
435
|
-
schemaVersion:
|
|
436
|
-
jobs:
|
|
437
|
-
nextCursor:
|
|
475
|
+
var TrainingJobPageSchema = z6.object({
|
|
476
|
+
schemaVersion: z6.literal("openpond.trainingJobPage.v2"),
|
|
477
|
+
jobs: z6.array(TrainingJobSchema).max(1e3),
|
|
478
|
+
nextCursor: z6.string().trim().min(1).max(2e3).nullable()
|
|
438
479
|
}).strict();
|
|
439
|
-
var TrainingJobEventSchema =
|
|
440
|
-
schemaVersion:
|
|
480
|
+
var TrainingJobEventSchema = z6.object({
|
|
481
|
+
schemaVersion: z6.literal("openpond.trainingJobEvent.v2"),
|
|
441
482
|
id: IdSchema3,
|
|
442
483
|
jobId: IdSchema3,
|
|
443
|
-
sequence:
|
|
484
|
+
sequence: z6.number().int().nonnegative(),
|
|
444
485
|
type: IdSchema3,
|
|
445
|
-
phase:
|
|
446
|
-
message:
|
|
447
|
-
data:
|
|
486
|
+
phase: z6.string().trim().min(1).max(200),
|
|
487
|
+
message: z6.string().trim().min(1).max(5e3).nullable(),
|
|
488
|
+
data: z6.record(z6.string(), z6.unknown()).default({}),
|
|
448
489
|
createdAt: TimestampSchema
|
|
449
490
|
}).strict();
|
|
450
|
-
var TrainingJobLogSchema =
|
|
451
|
-
schemaVersion:
|
|
491
|
+
var TrainingJobLogSchema = z6.object({
|
|
492
|
+
schemaVersion: z6.literal("openpond.trainingJobLog.v2"),
|
|
452
493
|
jobId: IdSchema3,
|
|
453
|
-
sequence:
|
|
454
|
-
level:
|
|
455
|
-
message:
|
|
494
|
+
sequence: z6.number().int().nonnegative(),
|
|
495
|
+
level: z6.enum(["debug", "info", "warning", "error"]),
|
|
496
|
+
message: z6.string().max(2e4),
|
|
456
497
|
createdAt: TimestampSchema
|
|
457
498
|
}).strict();
|
|
458
|
-
var TrainingJobControlRequestSchema =
|
|
459
|
-
var TrainingJobOutputSchema =
|
|
460
|
-
schemaVersion:
|
|
499
|
+
var TrainingJobControlRequestSchema = z6.object({ expectedVersion: z6.number().int().nonnegative() }).strict();
|
|
500
|
+
var TrainingJobOutputSchema = z6.object({
|
|
501
|
+
schemaVersion: z6.literal("openpond.trainingJobOutput.v2"),
|
|
461
502
|
id: IdSchema3,
|
|
462
503
|
jobId: IdSchema3,
|
|
463
|
-
kind:
|
|
504
|
+
kind: z6.enum([
|
|
464
505
|
"checkpoint",
|
|
465
506
|
"adapter",
|
|
466
507
|
"scorer",
|
|
@@ -469,14 +510,14 @@ var TrainingJobOutputSchema = z5.object({
|
|
|
469
510
|
"trace",
|
|
470
511
|
"receipt"
|
|
471
512
|
]),
|
|
472
|
-
artifactRef:
|
|
513
|
+
artifactRef: z6.string().trim().min(1).max(2e3),
|
|
473
514
|
contentHash: HashSchema3,
|
|
474
|
-
sizeBytes:
|
|
475
|
-
metadata:
|
|
515
|
+
sizeBytes: z6.number().int().nonnegative(),
|
|
516
|
+
metadata: z6.record(z6.string(), z6.unknown()).default({}),
|
|
476
517
|
createdAt: TimestampSchema
|
|
477
518
|
}).strict();
|
|
478
|
-
var TrainingExecutionReceiptSchema =
|
|
479
|
-
schemaVersion:
|
|
519
|
+
var TrainingExecutionReceiptSchema = z6.object({
|
|
520
|
+
schemaVersion: z6.literal("openpond.trainingExecutionReceipt.v2"),
|
|
480
521
|
id: IdSchema3,
|
|
481
522
|
teamId: IdSchema3,
|
|
482
523
|
jobId: IdSchema3,
|
|
@@ -485,14 +526,14 @@ var TrainingExecutionReceiptSchema = z5.object({
|
|
|
485
526
|
recipeHash: HashSchema3,
|
|
486
527
|
capabilityHash: HashSchema3,
|
|
487
528
|
runtimeRelease: ModelProjectImmutableRefSchema,
|
|
488
|
-
inputs:
|
|
489
|
-
outputs:
|
|
490
|
-
spendUsd:
|
|
491
|
-
durationSeconds:
|
|
492
|
-
cleanupComplete:
|
|
529
|
+
inputs: z6.array(ModelProjectImmutableRefSchema).max(1e4),
|
|
530
|
+
outputs: z6.array(ModelProjectImmutableRefSchema).max(1e4),
|
|
531
|
+
spendUsd: z6.number().nonnegative(),
|
|
532
|
+
durationSeconds: z6.number().nonnegative(),
|
|
533
|
+
cleanupComplete: z6.boolean(),
|
|
493
534
|
issuer: IdSchema3,
|
|
494
535
|
issuedAt: TimestampSchema,
|
|
495
|
-
signature:
|
|
536
|
+
signature: z6.string().trim().min(1).max(1e4).nullable()
|
|
496
537
|
}).strict();
|
|
497
538
|
async function trainingExecutionReceiptHash(receipt) {
|
|
498
539
|
return canonicalSha256(TrainingExecutionReceiptSchema.parse(receipt));
|
|
@@ -528,18 +569,18 @@ async function parseAndVerifyTrainingExecutionReceipt(value, expected) {
|
|
|
528
569
|
}
|
|
529
570
|
return receipt;
|
|
530
571
|
}
|
|
531
|
-
var TrainingJobOutputsSchema =
|
|
532
|
-
schemaVersion:
|
|
533
|
-
outputs:
|
|
572
|
+
var TrainingJobOutputsSchema = z6.object({
|
|
573
|
+
schemaVersion: z6.literal("openpond.trainingJobOutputs.v2"),
|
|
574
|
+
outputs: z6.array(TrainingJobOutputSchema).max(1e4),
|
|
534
575
|
receipt: TrainingExecutionReceiptSchema.nullable()
|
|
535
576
|
}).strict();
|
|
536
|
-
var TrainingApiErrorSchema =
|
|
537
|
-
schemaVersion:
|
|
538
|
-
code:
|
|
539
|
-
message:
|
|
540
|
-
retryable:
|
|
541
|
-
requestId:
|
|
542
|
-
details:
|
|
577
|
+
var TrainingApiErrorSchema = z6.object({
|
|
578
|
+
schemaVersion: z6.literal("openpond.trainingApiError.v2"),
|
|
579
|
+
code: z6.string().trim().min(1).max(200),
|
|
580
|
+
message: z6.string().trim().min(1).max(5e3),
|
|
581
|
+
retryable: z6.boolean().default(false),
|
|
582
|
+
requestId: z6.string().trim().min(1).max(500).nullable().default(null),
|
|
583
|
+
details: z6.record(z6.string(), z6.unknown()).default({})
|
|
543
584
|
}).strict();
|
|
544
585
|
var OpenPondTrainingApiError = class extends Error {
|
|
545
586
|
status;
|
|
@@ -557,23 +598,23 @@ var OpenPondTrainingApiError = class extends Error {
|
|
|
557
598
|
this.details = error.details;
|
|
558
599
|
}
|
|
559
600
|
};
|
|
560
|
-
var TrainingCapabilitiesSchema =
|
|
561
|
-
schemaVersion:
|
|
601
|
+
var TrainingCapabilitiesSchema = z6.object({
|
|
602
|
+
schemaVersion: z6.literal("openpond.trainingCapabilities.v2"),
|
|
562
603
|
capabilityHash: HashSchema3,
|
|
563
|
-
jobKinds:
|
|
564
|
-
methods:
|
|
565
|
-
placements:
|
|
566
|
-
|
|
604
|
+
jobKinds: z6.array(TrainingJobKindSchema),
|
|
605
|
+
methods: z6.array(z6.string().trim().min(1).max(200)),
|
|
606
|
+
placements: z6.array(
|
|
607
|
+
z6.enum(["local", "remote", "colocated", "provider_native"])
|
|
567
608
|
),
|
|
568
|
-
controls:
|
|
569
|
-
cancel:
|
|
570
|
-
stopAfterGroup:
|
|
571
|
-
resumeFromCheckpoint:
|
|
609
|
+
controls: z6.object({
|
|
610
|
+
cancel: z6.boolean(),
|
|
611
|
+
stopAfterGroup: z6.boolean(),
|
|
612
|
+
resumeFromCheckpoint: z6.boolean()
|
|
572
613
|
}).strict(),
|
|
573
|
-
limits:
|
|
574
|
-
maximumSpendUsd:
|
|
575
|
-
maximumWallSeconds:
|
|
576
|
-
maximumArtifactBytes:
|
|
614
|
+
limits: z6.object({
|
|
615
|
+
maximumSpendUsd: z6.number().nonnegative(),
|
|
616
|
+
maximumWallSeconds: z6.number().int().positive(),
|
|
617
|
+
maximumArtifactBytes: z6.number().int().positive()
|
|
577
618
|
}).strict(),
|
|
578
619
|
checkedAt: TimestampSchema,
|
|
579
620
|
expiresAt: TimestampSchema
|
|
@@ -588,7 +629,7 @@ function headersRecord(headers) {
|
|
|
588
629
|
function createTrainingClient(input) {
|
|
589
630
|
const fetchImpl = input.fetch ?? fetch;
|
|
590
631
|
const baseUrl = input.baseUrl.replace(/\/$/, "");
|
|
591
|
-
async function request(pathname, init) {
|
|
632
|
+
async function request(pathname, init, responseLimit = TRAINING_API_RESPONSE_MAX_BYTES) {
|
|
592
633
|
const readOnly = init?.method === void 0 || init.method.toUpperCase() === "GET";
|
|
593
634
|
const maximumAttempts = readOnly ? 3 : 1;
|
|
594
635
|
for (let attempt = 1; attempt <= maximumAttempts; attempt += 1) {
|
|
@@ -613,7 +654,7 @@ function createTrainingClient(input) {
|
|
|
613
654
|
}
|
|
614
655
|
const body = parseBoundedJson(
|
|
615
656
|
await response.text(),
|
|
616
|
-
|
|
657
|
+
responseLimit,
|
|
617
658
|
"Training API response"
|
|
618
659
|
);
|
|
619
660
|
if (response.ok) return body;
|
|
@@ -629,6 +670,7 @@ function createTrainingClient(input) {
|
|
|
629
670
|
);
|
|
630
671
|
}
|
|
631
672
|
return {
|
|
673
|
+
...createTrainingHarnessSourceClient(request),
|
|
632
674
|
...createTrainingCandidateDecisionClient(request),
|
|
633
675
|
async capabilities() {
|
|
634
676
|
return TrainingCapabilitiesSchema.parse(
|
|
@@ -665,12 +707,12 @@ function createTrainingClient(input) {
|
|
|
665
707
|
parameters.set("modelProjectId", IdSchema3.parse(options.modelProjectId));
|
|
666
708
|
}
|
|
667
709
|
if (options.cursor) {
|
|
668
|
-
parameters.set("cursor",
|
|
710
|
+
parameters.set("cursor", z6.string().trim().min(1).max(2e3).parse(options.cursor));
|
|
669
711
|
}
|
|
670
712
|
if (options.limit !== void 0) {
|
|
671
713
|
parameters.set(
|
|
672
714
|
"limit",
|
|
673
|
-
String(
|
|
715
|
+
String(z6.number().int().min(1).max(1e3).parse(options.limit))
|
|
674
716
|
);
|
|
675
717
|
}
|
|
676
718
|
const query = parameters.size > 0 ? `?${parameters.toString()}` : "";
|
|
@@ -711,7 +753,7 @@ function createTrainingClient(input) {
|
|
|
711
753
|
);
|
|
712
754
|
},
|
|
713
755
|
async events(jobId) {
|
|
714
|
-
return
|
|
756
|
+
return z6.array(TrainingJobEventSchema).parse(
|
|
715
757
|
unwrapObject(
|
|
716
758
|
await request(
|
|
717
759
|
`/v1/training/jobs/${encodeURIComponent(IdSchema3.parse(jobId))}/events`
|
|
@@ -731,10 +773,10 @@ function createTrainingClient(input) {
|
|
|
731
773
|
const id = IdSchema3.parse(jobId);
|
|
732
774
|
const reference = ModelProjectImmutableRefSchema.parse(evaluation);
|
|
733
775
|
const parameters = new URLSearchParams();
|
|
734
|
-
const cursor = options.cursor === void 0 ? void 0 :
|
|
735
|
-
const offset = cursor === void 0 ? 0 :
|
|
776
|
+
const cursor = options.cursor === void 0 ? void 0 : z6.string().regex(/^[1-9]\d*$/).parse(options.cursor);
|
|
777
|
+
const offset = cursor === void 0 ? 0 : z6.number().int().min(1).max(9999).parse(Number(cursor));
|
|
736
778
|
if (cursor !== void 0) parameters.set("cursor", cursor);
|
|
737
|
-
if (options.limit !== void 0) parameters.set("limit", String(
|
|
779
|
+
if (options.limit !== void 0) parameters.set("limit", String(z6.number().int().min(1).max(100).parse(options.limit)));
|
|
738
780
|
const query = parameters.size ? `?${parameters.toString()}` : "";
|
|
739
781
|
return parseAndVerifyTrainingEvaluationTaskPage(
|
|
740
782
|
await request(`/v1/training/jobs/${encodeURIComponent(id)}/evaluations/${encodeURIComponent(reference.id)}/tasks${query}`),
|
|
@@ -742,7 +784,7 @@ function createTrainingClient(input) {
|
|
|
742
784
|
);
|
|
743
785
|
},
|
|
744
786
|
async logs(jobId) {
|
|
745
|
-
return
|
|
787
|
+
return z6.array(TrainingJobLogSchema).max(1e5).parse(
|
|
746
788
|
unwrapObject(
|
|
747
789
|
await request(
|
|
748
790
|
`/v1/training/jobs/${encodeURIComponent(IdSchema3.parse(jobId))}/logs`
|
|
@@ -779,6 +821,7 @@ function trainingApiError(value, status) {
|
|
|
779
821
|
}
|
|
780
822
|
|
|
781
823
|
export {
|
|
824
|
+
TrainingHarnessSourcePublicationSchema,
|
|
782
825
|
TrainingCandidateDecisionRequestSchema,
|
|
783
826
|
TrainingCandidateDecisionSchema,
|
|
784
827
|
trainingCandidateDecisionHash,
|
|
@@ -822,4 +865,4 @@ export {
|
|
|
822
865
|
TrainingCapabilitiesSchema,
|
|
823
866
|
createTrainingClient
|
|
824
867
|
};
|
|
825
|
-
//# sourceMappingURL=chunk-
|
|
868
|
+
//# sourceMappingURL=chunk-GZOXT7YE.js.map
|