openpond-sdk 0.5.3 → 0.5.4

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