openpond-sdk 0.5.1 → 0.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/TRAINING_PROTOCOL.md +20 -0
  2. package/dist/{chunk-65D4C7HP.js → chunk-4IDTRFW2.js} +2 -2
  3. package/dist/{chunk-747CMU2Y.js → chunk-6QWV5TEJ.js} +3 -3
  4. package/dist/{chunk-ODTLCYUT.js → chunk-OJERFIEJ.js} +190 -128
  5. package/dist/chunk-OJERFIEJ.js.map +7 -0
  6. package/dist/{chunk-6LGGLXAM.js → chunk-PXB6YY36.js} +3 -3
  7. package/dist/{chunk-EPJM7VEV.js → chunk-SQCACAC7.js} +2 -2
  8. package/dist/{chunk-5PRP457R.js → chunk-ZNFOVV7B.js} +2 -1
  9. package/dist/chunk-ZNFOVV7B.js.map +7 -0
  10. package/dist/model-projects.js +1 -1
  11. package/dist/model-starter-attempts.js +2 -2
  12. package/dist/model-starter-catalog.js +3 -3
  13. package/dist/model-starters.js +3 -3
  14. package/dist/model-taskset-runs.js +2 -2
  15. package/dist/taskset-drafts.js +4 -4
  16. package/dist/taskset-packages.js +4 -4
  17. package/dist/training.js +10 -2
  18. package/dist/types/packages/sdk/src/model-projects.d.ts +60 -0
  19. package/dist/types/packages/sdk/src/model-projects.d.ts.map +1 -1
  20. package/dist/types/packages/sdk/src/taskset-draft-client.d.ts +5 -0
  21. package/dist/types/packages/sdk/src/taskset-draft-client.d.ts.map +1 -1
  22. package/dist/types/packages/sdk/src/taskset-package-client.d.ts +15 -0
  23. package/dist/types/packages/sdk/src/taskset-package-client.d.ts.map +1 -1
  24. package/dist/types/packages/sdk/src/training-evaluation-source.d.ts +41 -0
  25. package/dist/types/packages/sdk/src/training-evaluation-source.d.ts.map +1 -0
  26. package/dist/types/packages/sdk/src/training.d.ts +23 -0
  27. package/dist/types/packages/sdk/src/training.d.ts.map +1 -1
  28. package/fixtures/training/v2/policy-optimize.valid.json +13 -2
  29. package/package.json +1 -1
  30. package/dist/chunk-5PRP457R.js.map +0 -7
  31. package/dist/chunk-ODTLCYUT.js.map +0 -7
  32. /package/dist/{chunk-65D4C7HP.js.map → chunk-4IDTRFW2.js.map} +0 -0
  33. /package/dist/{chunk-747CMU2Y.js.map → chunk-6QWV5TEJ.js.map} +0 -0
  34. /package/dist/{chunk-6LGGLXAM.js.map → chunk-PXB6YY36.js.map} +0 -0
  35. /package/dist/{chunk-EPJM7VEV.js.map → chunk-SQCACAC7.js.map} +0 -0
@@ -96,6 +96,26 @@ bundle before provisioning and retain both in receipt inputs when non-null.
96
96
  Identity validation does not establish that a provider can execute a grader;
97
97
  providers must also reject unsupported execution configurations at admission.
98
98
 
99
+ ## Held-out evaluation source
100
+
101
+ Managed policy training carries `evaluation-source.json` inside the verified
102
+ resolved bundle. `TrainingEvaluationSourceSchema` describes its exact Taskset
103
+ revision, complete held-out task records and evaluator-only asset bytes.
104
+ `assertTrainingEvaluationIsolation` rejects train/held-out split violations,
105
+ duplicate task IDs and shared training/evaluation families. The data remains
106
+ private to evaluation and must not become policy-visible context.
107
+
108
+ `trainingEvaluationSourceRef` derives `source.evaluation`: the original Taskset
109
+ reference and the canonical evaluation dataset hash. Providers compare these
110
+ references with the admitted bundle before provisioning and retain both in
111
+ receipt inputs. Changing private answers or assets changes the bundle and
112
+ evaluation dataset identity. Model configuration may select a separate immutable
113
+ `evaluationTasksetRef`; a train-only batch does not need a Comparison Series.
114
+
115
+ The nullable wire field preserves historical records. A provider that requires
116
+ pinned evaluation must reject new policy submissions without it. Artifact
117
+ admission alone does not establish model execution or learning quality.
118
+
99
119
  ## Conformance
100
120
 
101
121
  Published fixtures live in `fixtures/training/v2`. Providers should:
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  ModelProjectVersionedRefSchema,
3
3
  canonicalJson
4
- } from "./chunk-5PRP457R.js";
4
+ } from "./chunk-ZNFOVV7B.js";
5
5
 
6
6
  // src/model-starter-execution.ts
7
7
  import { z } from "zod";
@@ -270,4 +270,4 @@ export {
270
270
  deriveModelTaskset,
271
271
  validateModelTasksetPackage
272
272
  };
273
- //# sourceMappingURL=chunk-65D4C7HP.js.map
273
+ //# sourceMappingURL=chunk-4IDTRFW2.js.map
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  ModelStarterExecutionSchema,
3
3
  validateModelStarterExecution
4
- } from "./chunk-65D4C7HP.js";
4
+ } from "./chunk-4IDTRFW2.js";
5
5
  import {
6
6
  ModelProjectBaseModelSchema,
7
7
  ModelProjectTrainingMethodSchema,
8
8
  ModelProjectVersionedRefSchema,
9
9
  canonicalSha256
10
- } from "./chunk-5PRP457R.js";
10
+ } from "./chunk-ZNFOVV7B.js";
11
11
 
12
12
  // src/model-starters.ts
13
13
  import { z } from "zod";
@@ -219,4 +219,4 @@ export {
219
219
  previewModelStarter,
220
220
  validateResolvedModelStarter
221
221
  };
222
- //# sourceMappingURL=chunk-747CMU2Y.js.map
222
+ //# sourceMappingURL=chunk-6QWV5TEJ.js.map
@@ -11,10 +11,10 @@ import {
11
11
  assertCanonicalPayloadSize,
12
12
  canonicalSha256,
13
13
  parseBoundedJson
14
- } from "./chunk-5PRP457R.js";
14
+ } from "./chunk-ZNFOVV7B.js";
15
15
 
16
16
  // src/training.ts
17
- import { z as z2 } from "zod";
17
+ import { z as z3 } from "zod";
18
18
 
19
19
  // src/training-grading-plan.ts
20
20
  import { z } from "zod";
@@ -38,25 +38,79 @@ async function deterministicTrainingRewardSource(input) {
38
38
  };
39
39
  }
40
40
 
41
+ // src/training-evaluation-source.ts
42
+ import { z as z2 } from "zod";
43
+ 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"])
48
+ }).passthrough();
49
+ var TrainingEvaluationSourceSchema = z2.object({
50
+ schemaVersion: z2.literal("openpond.trainingEvaluationSource.v1"),
51
+ 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)
59
+ }).strict()).max(1e4)
60
+ }).strict().superRefine((source, context) => {
61
+ const ids = /* @__PURE__ */ new Set();
62
+ source.tasks.forEach((task, index) => {
63
+ if (task.split === "train") context.addIssue({ code: "custom", path: ["tasks", index, "split"], message: "Evaluation sources require held-out tasks." });
64
+ if (ids.has(task.id)) context.addIssue({ code: "custom", path: ["tasks", index, "id"], message: "Evaluation task identities must be unique." });
65
+ ids.add(task.id);
66
+ });
67
+ });
68
+ 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);
71
+ const trainIds = /* @__PURE__ */ new Set();
72
+ const trainFamilies = /* @__PURE__ */ new Set();
73
+ for (const task of training) {
74
+ if (task.split !== "train") throw new Error("The training population contains a held-out task.");
75
+ if (trainIds.has(task.id)) throw new Error("Training task identities must be unique.");
76
+ trainIds.add(task.id);
77
+ trainFamilies.add(task.clusterKey);
78
+ }
79
+ const evaluationIds = /* @__PURE__ */ new Set();
80
+ for (const task of evaluation) {
81
+ if (task.split === "train") throw new Error("The evaluation population contains a training task.");
82
+ if (evaluationIds.has(task.id)) throw new Error("Evaluation task identities must be unique.");
83
+ if (trainIds.has(task.id) || trainFamilies.has(task.clusterKey)) {
84
+ throw new Error("Training and evaluation tasks or families overlap.");
85
+ }
86
+ evaluationIds.add(task.id);
87
+ }
88
+ }
89
+ async function trainingEvaluationSourceRef(input) {
90
+ const source = TrainingEvaluationSourceSchema.parse(input);
91
+ const hash = await canonicalSha256(source);
92
+ return { taskset: source.taskset, dataset: { id: `training-evaluation-${hash.slice(0, 32)}`, contentHash: hash } };
93
+ }
94
+
41
95
  // src/training.ts
42
- var IdSchema = z2.string().trim().min(1).max(500);
43
- var HashSchema = z2.string().regex(/^[a-f0-9]{64}$/);
44
- var TimestampSchema = z2.string().datetime({ offset: true });
45
- var TrainingInputArtifactUploadSchema = z2.object({
46
- schemaVersion: z2.literal("openpond.trainingInputArtifactUpload.v2"),
47
- kind: z2.enum(["portable_training_bundle", "reward_model_dataset"]),
48
- idempotencyKey: z2.string().trim().min(1).max(500),
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),
49
103
  sourceManifest: ModelProjectImmutableRefSchema,
50
- payload: z2.unknown(),
104
+ payload: z3.unknown(),
51
105
  contentHash: HashSchema
52
106
  }).strict();
53
- var TrainingInputArtifactSchema = z2.object({
54
- schemaVersion: z2.literal("openpond.trainingInputArtifact.v2"),
55
- kind: z2.enum(["portable_training_bundle", "reward_model_dataset"]),
107
+ var TrainingInputArtifactSchema = z3.object({
108
+ schemaVersion: z3.literal("openpond.trainingInputArtifact.v2"),
109
+ kind: z3.enum(["portable_training_bundle", "reward_model_dataset"]),
56
110
  sourceManifest: ModelProjectImmutableRefSchema,
57
- artifactRef: z2.string().trim().min(1).max(2e3),
111
+ artifactRef: z3.string().trim().min(1).max(2e3),
58
112
  contentHash: HashSchema,
59
- sizeBytes: z2.number().int().positive(),
113
+ sizeBytes: z3.number().int().positive(),
60
114
  createdAt: TimestampSchema
61
115
  }).strict();
62
116
  async function trainingInputArtifactUploadHash(upload) {
@@ -79,11 +133,11 @@ async function parseAndVerifyTrainingInputArtifactUpload(value) {
79
133
  }
80
134
  return parsed;
81
135
  }
82
- var TrainingJobKindSchema = z2.enum([
136
+ var TrainingJobKindSchema = z3.enum([
83
137
  "reward_model_train",
84
138
  "policy_optimize"
85
139
  ]);
86
- var TrainingJobStateSchema = z2.enum([
140
+ var TrainingJobStateSchema = z3.enum([
87
141
  "queued",
88
142
  "admitting",
89
143
  "provisioning",
@@ -94,87 +148,91 @@ var TrainingJobStateSchema = z2.enum([
94
148
  "failed",
95
149
  "cancelled"
96
150
  ]);
97
- var TrainingCapabilityRequirementSchema = z2.object({
151
+ var TrainingCapabilityRequirementSchema = z3.object({
98
152
  id: IdSchema,
99
- version: z2.string().trim().min(1).max(200).nullable().default(null),
100
- required: z2.boolean().default(true)
153
+ version: z3.string().trim().min(1).max(200).nullable().default(null),
154
+ required: z3.boolean().default(true)
101
155
  }).strict();
102
- var TrainingJobSourceSchema = z2.object({
103
- modelProject: z2.object({
156
+ var TrainingJobSourceSchema = z3.object({
157
+ modelProject: z3.object({
104
158
  id: IdSchema,
105
159
  portableProjectId: IdSchema,
106
- revision: z2.number().int().positive(),
160
+ revision: z3.number().int().positive(),
107
161
  contentHash: HashSchema
108
162
  }).strict(),
109
163
  harnessRunManifest: ModelProjectImmutableRefSchema,
110
164
  harnessRelease: ModelProjectImmutableRefSchema,
111
165
  taskset: ModelProjectVersionedRefSchema,
112
166
  tasksetRelease: ModelProjectImmutableRefSchema,
167
+ evaluation: z3.object({
168
+ taskset: ModelProjectVersionedRefSchema,
169
+ dataset: ModelProjectImmutableRefSchema
170
+ }).strict().nullable().optional(),
113
171
  dataset: ModelProjectImmutableRefSchema,
114
- evidenceSets: z2.array(ModelProjectImmutableRefSchema).max(1e4)
172
+ evidenceSets: z3.array(ModelProjectImmutableRefSchema).max(1e4)
115
173
  }).strict();
116
- var RewardModelTrainingRequestSchema = z2.object({
117
- kind: z2.literal("reward_model_train"),
174
+ var RewardModelTrainingRequestSchema = z3.object({
175
+ kind: z3.literal("reward_model_train"),
118
176
  baseModel: ModelProjectBaseModelSchema,
119
177
  preferenceDatasetRelease: ModelProjectImmutableRefSchema,
120
178
  processorRelease: ModelProjectImmutableRefSchema,
121
- recipe: z2.object({
122
- schemaVersion: z2.literal("openpond.rewardModelRecipe.v1"),
123
- method: z2.literal("reward_model"),
124
- parameterization: z2.literal("lora_with_scalar_head")
125
- }).catchall(z2.unknown())
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())
126
184
  }).strict();
127
- var DeterministicRewardSourceSchema = z2.object({
128
- kind: z2.literal("deterministic"),
185
+ var DeterministicRewardSourceSchema = z3.object({
186
+ kind: z3.literal("deterministic"),
129
187
  grader: ModelProjectImmutableRefSchema,
130
188
  composer: ModelProjectImmutableRefSchema.nullable().default(null)
131
189
  }).strict();
132
- var LearnedRewardSourceSchema = z2.object({
133
- kind: z2.literal("learned_reward"),
190
+ var LearnedRewardSourceSchema = z3.object({
191
+ kind: z3.literal("learned_reward"),
134
192
  rewardModelVersion: ModelProjectImmutableRefSchema,
135
193
  qualificationReport: ModelProjectImmutableRefSchema.nullable().default(null),
136
- evaluationReferences: z2.array(ModelProjectImmutableRefSchema).max(1e3).default([]),
137
- scorerArtifact: z2.object({
138
- artifactRef: z2.string().trim().min(1).max(2e3),
194
+ evaluationReferences: z3.array(ModelProjectImmutableRefSchema).max(1e3).default([]),
195
+ scorerArtifact: z3.object({
196
+ artifactRef: z3.string().trim().min(1).max(2e3),
139
197
  contentHash: HashSchema,
140
198
  executionReceipt: ModelProjectImmutableRefSchema
141
199
  }).strict(),
142
200
  processorRelease: ModelProjectImmutableRefSchema,
143
201
  rewardComposerRelease: ModelProjectImmutableRefSchema
144
202
  }).strict();
145
- var PolicyOptimizationRequestSchema = z2.object({
146
- kind: z2.literal("policy_optimize"),
203
+ var PolicyOptimizationRequestSchema = z3.object({
204
+ kind: z3.literal("policy_optimize"),
147
205
  baseModel: ModelProjectBaseModelSchema,
148
206
  recipe: ModelProjectRecipeDocumentSchema,
149
- rewardSource: z2.discriminatedUnion("kind", [
207
+ rewardSource: z3.discriminatedUnion("kind", [
150
208
  DeterministicRewardSourceSchema,
151
209
  LearnedRewardSourceSchema
152
210
  ]),
153
211
  resumeFrom: ModelProjectImmutableRefSchema.nullable().default(null)
154
212
  }).strict();
155
- var TrainingJobRequestSchema = z2.discriminatedUnion("kind", [
213
+ var TrainingJobRequestSchema = z3.discriminatedUnion("kind", [
156
214
  RewardModelTrainingRequestSchema,
157
215
  PolicyOptimizationRequestSchema
158
216
  ]);
159
- var TrainingJobApprovalSchema = z2.object({
217
+ var TrainingJobApprovalSchema = z3.object({
160
218
  approvalHash: HashSchema,
161
219
  approvedAt: TimestampSchema,
162
- exportApproved: z2.boolean(),
163
- maximumSpendUsd: z2.number().nonnegative(),
164
- retentionDays: z2.number().int().nonnegative().nullable(),
165
- region: z2.string().trim().min(1).max(200).nullable().default(null)
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)
166
224
  }).strict();
167
- var TrainingJobSubmissionSchema = z2.object({
168
- schemaVersion: z2.literal("openpond.trainingJobSubmission.v2"),
169
- idempotencyKey: z2.string().trim().min(1).max(500),
170
- name: z2.string().trim().min(1).max(200),
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),
171
229
  source: TrainingJobSourceSchema,
172
230
  job: TrainingJobRequestSchema,
173
- requestedCapabilities: z2.array(TrainingCapabilityRequirementSchema).max(1e3),
174
- placementObjective: z2.enum(["fast", "balanced", "economical"]),
175
- budget: z2.object({
176
- maximumSpendUsd: z2.number().nonnegative(),
177
- maximumWallSeconds: z2.number().int().positive()
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()
178
236
  }).strict(),
179
237
  approval: TrainingJobApprovalSchema,
180
238
  contentHash: HashSchema
@@ -207,61 +265,61 @@ async function parseAndVerifyTrainingJobSubmission(value) {
207
265
  }
208
266
  return parsed;
209
267
  }
210
- var TrainingJobSchema = z2.object({
211
- schemaVersion: z2.literal("openpond.trainingJob.v2"),
268
+ var TrainingJobSchema = z3.object({
269
+ schemaVersion: z3.literal("openpond.trainingJob.v2"),
212
270
  id: IdSchema,
213
271
  teamId: IdSchema,
214
272
  kind: TrainingJobKindSchema,
215
273
  modelProjectId: IdSchema,
216
274
  portableProjectId: IdSchema,
217
- sourceProjectRevision: z2.number().int().positive(),
275
+ sourceProjectRevision: z3.number().int().positive(),
218
276
  submissionHash: HashSchema,
219
277
  state: TrainingJobStateSchema,
220
- phase: z2.string().trim().min(1).max(200),
221
- version: z2.number().int().nonnegative(),
222
- progress: z2.number().min(0).max(1),
223
- rolloutProgress: z2.object({
224
- groupsCompleted: z2.number().int().nonnegative(),
225
- groupsTarget: z2.number().int().nonnegative(),
226
- optimizerUpdatesApplied: z2.number().int().nonnegative(),
227
- optimizerUpdatesSkipped: z2.number().int().nonnegative()
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()
228
286
  }).strict(),
229
- accruedSpendUsd: z2.number().nonnegative(),
230
- terminalReason: z2.string().trim().min(1).max(5e3).nullable(),
287
+ accruedSpendUsd: z3.number().nonnegative(),
288
+ terminalReason: z3.string().trim().min(1).max(5e3).nullable(),
231
289
  createdAt: TimestampSchema,
232
290
  updatedAt: TimestampSchema,
233
291
  completedAt: TimestampSchema.nullable()
234
292
  }).strict();
235
- var TrainingJobPageSchema = z2.object({
236
- schemaVersion: z2.literal("openpond.trainingJobPage.v2"),
237
- jobs: z2.array(TrainingJobSchema).max(1e3),
238
- nextCursor: z2.string().trim().min(1).max(2e3).nullable()
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()
239
297
  }).strict();
240
- var TrainingJobEventSchema = z2.object({
241
- schemaVersion: z2.literal("openpond.trainingJobEvent.v2"),
298
+ var TrainingJobEventSchema = z3.object({
299
+ schemaVersion: z3.literal("openpond.trainingJobEvent.v2"),
242
300
  id: IdSchema,
243
301
  jobId: IdSchema,
244
- sequence: z2.number().int().nonnegative(),
302
+ sequence: z3.number().int().nonnegative(),
245
303
  type: IdSchema,
246
- phase: z2.string().trim().min(1).max(200),
247
- message: z2.string().trim().min(1).max(5e3).nullable(),
248
- data: z2.record(z2.string(), z2.unknown()).default({}),
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({}),
249
307
  createdAt: TimestampSchema
250
308
  }).strict();
251
- var TrainingJobLogSchema = z2.object({
252
- schemaVersion: z2.literal("openpond.trainingJobLog.v2"),
309
+ var TrainingJobLogSchema = z3.object({
310
+ schemaVersion: z3.literal("openpond.trainingJobLog.v2"),
253
311
  jobId: IdSchema,
254
- sequence: z2.number().int().nonnegative(),
255
- level: z2.enum(["debug", "info", "warning", "error"]),
256
- message: z2.string().max(2e4),
312
+ sequence: z3.number().int().nonnegative(),
313
+ level: z3.enum(["debug", "info", "warning", "error"]),
314
+ message: z3.string().max(2e4),
257
315
  createdAt: TimestampSchema
258
316
  }).strict();
259
- var TrainingJobControlRequestSchema = z2.object({ expectedVersion: z2.number().int().nonnegative() }).strict();
260
- var TrainingJobOutputSchema = z2.object({
261
- schemaVersion: z2.literal("openpond.trainingJobOutput.v2"),
317
+ var TrainingJobControlRequestSchema = z3.object({ expectedVersion: z3.number().int().nonnegative() }).strict();
318
+ var TrainingJobOutputSchema = z3.object({
319
+ schemaVersion: z3.literal("openpond.trainingJobOutput.v2"),
262
320
  id: IdSchema,
263
321
  jobId: IdSchema,
264
- kind: z2.enum([
322
+ kind: z3.enum([
265
323
  "checkpoint",
266
324
  "adapter",
267
325
  "scorer",
@@ -270,14 +328,14 @@ var TrainingJobOutputSchema = z2.object({
270
328
  "trace",
271
329
  "receipt"
272
330
  ]),
273
- artifactRef: z2.string().trim().min(1).max(2e3),
331
+ artifactRef: z3.string().trim().min(1).max(2e3),
274
332
  contentHash: HashSchema,
275
- sizeBytes: z2.number().int().nonnegative(),
276
- metadata: z2.record(z2.string(), z2.unknown()).default({}),
333
+ sizeBytes: z3.number().int().nonnegative(),
334
+ metadata: z3.record(z3.string(), z3.unknown()).default({}),
277
335
  createdAt: TimestampSchema
278
336
  }).strict();
279
- var TrainingExecutionReceiptSchema = z2.object({
280
- schemaVersion: z2.literal("openpond.trainingExecutionReceipt.v2"),
337
+ var TrainingExecutionReceiptSchema = z3.object({
338
+ schemaVersion: z3.literal("openpond.trainingExecutionReceipt.v2"),
281
339
  id: IdSchema,
282
340
  teamId: IdSchema,
283
341
  jobId: IdSchema,
@@ -286,14 +344,14 @@ var TrainingExecutionReceiptSchema = z2.object({
286
344
  recipeHash: HashSchema,
287
345
  capabilityHash: HashSchema,
288
346
  runtimeRelease: ModelProjectImmutableRefSchema,
289
- inputs: z2.array(ModelProjectImmutableRefSchema).max(1e4),
290
- outputs: z2.array(ModelProjectImmutableRefSchema).max(1e4),
291
- spendUsd: z2.number().nonnegative(),
292
- durationSeconds: z2.number().nonnegative(),
293
- cleanupComplete: z2.boolean(),
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(),
294
352
  issuer: IdSchema,
295
353
  issuedAt: TimestampSchema,
296
- signature: z2.string().trim().min(1).max(1e4).nullable()
354
+ signature: z3.string().trim().min(1).max(1e4).nullable()
297
355
  }).strict();
298
356
  async function trainingExecutionReceiptHash(receipt) {
299
357
  return canonicalSha256(TrainingExecutionReceiptSchema.parse(receipt));
@@ -329,18 +387,18 @@ async function parseAndVerifyTrainingExecutionReceipt(value, expected) {
329
387
  }
330
388
  return receipt;
331
389
  }
332
- var TrainingJobOutputsSchema = z2.object({
333
- schemaVersion: z2.literal("openpond.trainingJobOutputs.v2"),
334
- outputs: z2.array(TrainingJobOutputSchema).max(1e4),
390
+ var TrainingJobOutputsSchema = z3.object({
391
+ schemaVersion: z3.literal("openpond.trainingJobOutputs.v2"),
392
+ outputs: z3.array(TrainingJobOutputSchema).max(1e4),
335
393
  receipt: TrainingExecutionReceiptSchema.nullable()
336
394
  }).strict();
337
- var TrainingApiErrorSchema = z2.object({
338
- schemaVersion: z2.literal("openpond.trainingApiError.v2"),
339
- code: z2.string().trim().min(1).max(200),
340
- message: z2.string().trim().min(1).max(5e3),
341
- retryable: z2.boolean().default(false),
342
- requestId: z2.string().trim().min(1).max(500).nullable().default(null),
343
- details: z2.record(z2.string(), z2.unknown()).default({})
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({})
344
402
  }).strict();
345
403
  var OpenPondTrainingApiError = class extends Error {
346
404
  status;
@@ -358,23 +416,23 @@ var OpenPondTrainingApiError = class extends Error {
358
416
  this.details = error.details;
359
417
  }
360
418
  };
361
- var TrainingCapabilitiesSchema = z2.object({
362
- schemaVersion: z2.literal("openpond.trainingCapabilities.v2"),
419
+ var TrainingCapabilitiesSchema = z3.object({
420
+ schemaVersion: z3.literal("openpond.trainingCapabilities.v2"),
363
421
  capabilityHash: HashSchema,
364
- jobKinds: z2.array(TrainingJobKindSchema),
365
- methods: z2.array(z2.string().trim().min(1).max(200)),
366
- placements: z2.array(
367
- z2.enum(["local", "remote", "colocated", "provider_native"])
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"])
368
426
  ),
369
- controls: z2.object({
370
- cancel: z2.boolean(),
371
- stopAfterGroup: z2.boolean(),
372
- resumeFromCheckpoint: z2.boolean()
427
+ controls: z3.object({
428
+ cancel: z3.boolean(),
429
+ stopAfterGroup: z3.boolean(),
430
+ resumeFromCheckpoint: z3.boolean()
373
431
  }).strict(),
374
- limits: z2.object({
375
- maximumSpendUsd: z2.number().nonnegative(),
376
- maximumWallSeconds: z2.number().int().positive(),
377
- maximumArtifactBytes: z2.number().int().positive()
432
+ limits: z3.object({
433
+ maximumSpendUsd: z3.number().nonnegative(),
434
+ maximumWallSeconds: z3.number().int().positive(),
435
+ maximumArtifactBytes: z3.number().int().positive()
378
436
  }).strict(),
379
437
  checkedAt: TimestampSchema,
380
438
  expiresAt: TimestampSchema
@@ -465,12 +523,12 @@ function createTrainingClient(input) {
465
523
  parameters.set("modelProjectId", IdSchema.parse(options.modelProjectId));
466
524
  }
467
525
  if (options.cursor) {
468
- parameters.set("cursor", z2.string().trim().min(1).max(2e3).parse(options.cursor));
526
+ parameters.set("cursor", z3.string().trim().min(1).max(2e3).parse(options.cursor));
469
527
  }
470
528
  if (options.limit !== void 0) {
471
529
  parameters.set(
472
530
  "limit",
473
- String(z2.number().int().min(1).max(1e3).parse(options.limit))
531
+ String(z3.number().int().min(1).max(1e3).parse(options.limit))
474
532
  );
475
533
  }
476
534
  const query = parameters.size > 0 ? `?${parameters.toString()}` : "";
@@ -511,7 +569,7 @@ function createTrainingClient(input) {
511
569
  );
512
570
  },
513
571
  async events(jobId) {
514
- return z2.array(TrainingJobEventSchema).parse(
572
+ return z3.array(TrainingJobEventSchema).parse(
515
573
  unwrapObject(
516
574
  await request(
517
575
  `/v1/training/jobs/${encodeURIComponent(IdSchema.parse(jobId))}/events`
@@ -528,7 +586,7 @@ function createTrainingClient(input) {
528
586
  );
529
587
  },
530
588
  async logs(jobId) {
531
- return z2.array(TrainingJobLogSchema).max(1e5).parse(
589
+ return z3.array(TrainingJobLogSchema).max(1e5).parse(
532
590
  unwrapObject(
533
591
  await request(
534
592
  `/v1/training/jobs/${encodeURIComponent(IdSchema.parse(jobId))}/logs`
@@ -566,6 +624,10 @@ function trainingApiError(value, status) {
566
624
 
567
625
  export {
568
626
  deterministicTrainingRewardSource,
627
+ TRAINING_EVALUATION_SOURCE_PATH,
628
+ TrainingEvaluationSourceSchema,
629
+ assertTrainingEvaluationIsolation,
630
+ trainingEvaluationSourceRef,
569
631
  TrainingInputArtifactUploadSchema,
570
632
  TrainingInputArtifactSchema,
571
633
  trainingInputArtifactUploadHash,
@@ -596,4 +658,4 @@ export {
596
658
  TrainingCapabilitiesSchema,
597
659
  createTrainingClient
598
660
  };
599
- //# sourceMappingURL=chunk-ODTLCYUT.js.map
661
+ //# sourceMappingURL=chunk-OJERFIEJ.js.map