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.
Files changed (30) hide show
  1. package/TASKSETS.md +13 -0
  2. package/TRAINING_PROTOCOL.md +6 -0
  3. package/dist/{chunk-F5JBFRAH.js → chunk-GZOXT7YE.js} +228 -185
  4. package/dist/chunk-GZOXT7YE.js.map +7 -0
  5. package/dist/{chunk-KVU4WQYC.js → chunk-LV4TDE5S.js} +14 -6
  6. package/dist/chunk-LV4TDE5S.js.map +7 -0
  7. package/dist/taskset-drafts.js +2 -2
  8. package/dist/taskset-packages.js +2 -2
  9. package/dist/training-bundle.js +1 -1
  10. package/dist/training.js +5 -1
  11. package/dist/types/packages/sdk/src/taskset-authored-contracts.d.ts +1 -1
  12. package/dist/types/packages/sdk/src/taskset-authored-files.d.ts +1 -1
  13. package/dist/types/packages/sdk/src/taskset-draft-api-contracts.d.ts +2 -2
  14. package/dist/types/packages/sdk/src/taskset-draft-client.d.ts +14 -5
  15. package/dist/types/packages/sdk/src/taskset-draft-client.d.ts.map +1 -1
  16. package/dist/types/packages/sdk/src/taskset-draft-core.d.ts +1 -1
  17. package/dist/types/packages/sdk/src/taskset-draft-document.d.ts +1 -1
  18. package/dist/types/packages/sdk/src/taskset-draft-source.d.ts +2 -2
  19. package/dist/types/packages/sdk/src/taskset-draft-workspace.d.ts +2 -2
  20. package/dist/types/packages/sdk/src/taskset-package-client.d.ts +1487 -115
  21. package/dist/types/packages/sdk/src/taskset-package-client.d.ts.map +1 -1
  22. package/dist/types/packages/sdk/src/taskset-package-projection.d.ts +1 -1
  23. package/dist/types/packages/sdk/src/training-harness-sources.d.ts +141 -0
  24. package/dist/types/packages/sdk/src/training-harness-sources.d.ts.map +1 -0
  25. package/dist/types/packages/sdk/src/training-learning-batch.d.ts +2 -2
  26. package/dist/types/packages/sdk/src/training.d.ts +127 -0
  27. package/dist/types/packages/sdk/src/training.d.ts.map +1 -1
  28. package/package.json +1 -1
  29. package/dist/chunk-F5JBFRAH.js.map +0 -7
  30. 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 z5 } from "zod";
23
+ import { z as z6 } from "zod";
18
24
 
19
- // src/training-candidate-decisions.ts
25
+ // src/training-harness-sources.ts
20
26
  import { z } from "zod";
21
- var IdSchema = /* @__PURE__ */ (() => z.string().trim().min(1).max(500))();
22
- var HashSchema = /* @__PURE__ */ (() => z.string().regex(/^[a-f0-9]{64}$/))();
23
- var TrainingCandidateDecisionRequestSchema = /* @__PURE__ */ (() => z.object({
24
- schemaVersion: z.literal("openpond.trainingCandidateDecisionRequest.v1"),
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: z.enum(["accepted", "rejected"]),
31
- reason: z.string().trim().min(1).max(5e3),
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__ */ (() => z.object({
36
- schemaVersion: z.literal("openpond.trainingCandidateDecision.v1"),
76
+ var TrainingCandidateDecisionSchema = /* @__PURE__ */ (() => z2.object({
77
+ schemaVersion: z2.literal("openpond.trainingCandidateDecision.v1"),
37
78
  id: IdSchema,
38
79
  request: TrainingCandidateDecisionRequestSchema,
39
- revision: z.number().int().positive(),
40
- actor: z.object({ userId: IdSchema, kind: z.enum(["user", "api_key", "agent_delegate"]), id: IdSchema }).strict(),
41
- decidedAt: z.string().datetime({ offset: true }),
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 = z.object({ decision: z.unknown().nullable() }).strict().parse(await request(`${route(target)}${query}`));
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 z2 } from "zod";
96
- var IdSchema2 = /* @__PURE__ */ (() => z2.string().trim().min(1).max(500))();
97
- var HashSchema2 = /* @__PURE__ */ (() => z2.string().regex(/^[a-f0-9]{64}$/))();
98
- var TrainingEvaluationTaskResultSchema = /* @__PURE__ */ (() => z2.object({
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: z2.object({
103
- instruction: z2.string().max(1e6),
104
- context: z2.record(z2.string(), z2.unknown())
143
+ input: z3.object({
144
+ instruction: z3.string().max(1e6),
145
+ context: z3.record(z3.string(), z3.unknown())
105
146
  }).strict(),
106
- output: z2.string().max(1e6),
147
+ output: z3.string().max(1e6),
107
148
  outputSha256: HashSchema2,
108
- score: z2.number().finite().min(0).max(1),
109
- evidence: z2.object({
110
- kind: z2.enum(["worker_command", "hosted_trace", "local_trace"]),
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__ */ (() => z2.object({
115
- schemaVersion: z2.literal("openpond.trainingEvaluationTaskPage.v1"),
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: z2.enum(["baseline", "candidate"]),
120
- policyVersion: z2.number().int().nonnegative(),
160
+ kind: z3.enum(["baseline", "candidate"]),
161
+ policyVersion: z3.number().int().nonnegative(),
121
162
  taskset: ModelProjectVersionedRefSchema,
122
163
  panelSha256: HashSchema2,
123
- offset: z2.number().int().nonnegative(),
124
- total: z2.number().int().min(1).max(1e4),
125
- tasks: z2.array(TrainingEvaluationTaskResultSchema).min(1).max(100),
126
- nextCursor: z2.string().regex(/^[1-9]\d*$/).nullable(),
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 z3 } from "zod";
202
+ import { z as z4 } from "zod";
162
203
  import { compileBoundGraders, RewardBindingSchema, RewardReleaseSchema } from "@openpond/evals/rewards";
163
- var GradersSchema = z3.array(z3.object({ id: z3.string().trim().min(1) }).catchall(z3.unknown())).min(1).max(1e3);
164
- var RewardExecutionSchema = z3.object({
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: z3.array(RewardReleaseSchema).min(1).max(100)
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 z4 } from "zod";
224
+ import { z as z5 } from "zod";
184
225
  var TRAINING_EVALUATION_SOURCE_PATH = "evaluation-source.json";
185
- var TaskIdentitySchema = z4.object({
186
- id: z4.string().trim().min(1),
187
- clusterKey: z4.string().trim().min(1),
188
- split: z4.enum(["train", "validation", "frozen_eval"])
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 = z4.object({
191
- schemaVersion: z4.literal("openpond.trainingEvaluationSource.v1"),
231
+ var TrainingEvaluationSourceSchema = z5.object({
232
+ schemaVersion: z5.literal("openpond.trainingEvaluationSource.v1"),
192
233
  taskset: ModelProjectVersionedRefSchema,
193
- tasks: z4.array(TaskIdentitySchema).min(1).max(1e4),
194
- assets: z4.array(z4.object({
195
- path: z4.string().trim().min(1).max(2e3),
196
- sha256: z4.string().regex(/^[a-f0-9]{64}$/),
197
- sizeBytes: z4.number().int().nonnegative(),
198
- encoding: z4.literal("base64"),
199
- content: z4.string().max(32 * 1024 * 1024)
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 = z4.array(TaskIdentitySchema).min(1).max(1e4).parse(trainingTasks);
211
- const evaluation = z4.array(TaskIdentitySchema).min(1).max(1e4).parse(evaluationTasks);
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 = z5.string().trim().min(1).max(500);
238
- var HashSchema3 = z5.string().regex(/^[a-f0-9]{64}$/);
239
- var TimestampSchema = z5.string().datetime({ offset: true });
240
- var TrainingInputArtifactUploadSchema = z5.object({
241
- schemaVersion: z5.literal("openpond.trainingInputArtifactUpload.v2"),
242
- kind: z5.enum(["portable_training_bundle", "reward_model_dataset"]),
243
- idempotencyKey: z5.string().trim().min(1).max(500),
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: z5.unknown(),
286
+ payload: z6.unknown(),
246
287
  contentHash: HashSchema3
247
288
  }).strict();
248
- var TrainingInputArtifactSchema = z5.object({
249
- schemaVersion: z5.literal("openpond.trainingInputArtifact.v2"),
250
- kind: z5.enum(["portable_training_bundle", "reward_model_dataset"]),
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: z5.string().trim().min(1).max(2e3),
293
+ artifactRef: z6.string().trim().min(1).max(2e3),
253
294
  contentHash: HashSchema3,
254
- sizeBytes: z5.number().int().positive(),
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 = z5.enum([
318
+ var TrainingJobKindSchema = z6.enum([
278
319
  "reward_model_train",
279
320
  "policy_optimize"
280
321
  ]);
281
- var TrainingJobStateSchema = z5.enum([
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 = z5.object({
333
+ var TrainingCapabilityRequirementSchema = z6.object({
293
334
  id: IdSchema3,
294
- version: z5.string().trim().min(1).max(200).nullable().default(null),
295
- required: z5.boolean().default(true)
335
+ version: z6.string().trim().min(1).max(200).nullable().default(null),
336
+ required: z6.boolean().default(true)
296
337
  }).strict();
297
- var TrainingJobSourceSchema = z5.object({
298
- modelProject: z5.object({
338
+ var TrainingJobSourceSchema = z6.object({
339
+ modelProject: z6.object({
299
340
  id: IdSchema3,
300
341
  portableProjectId: IdSchema3,
301
- revision: z5.number().int().positive(),
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: z5.object({
349
+ evaluation: z6.object({
309
350
  taskset: ModelProjectVersionedRefSchema,
310
351
  dataset: ModelProjectImmutableRefSchema
311
352
  }).strict().nullable().optional(),
312
353
  dataset: ModelProjectImmutableRefSchema,
313
- evidenceSets: z5.array(ModelProjectImmutableRefSchema).max(1e4)
354
+ evidenceSets: z6.array(ModelProjectImmutableRefSchema).max(1e4)
314
355
  }).strict();
315
- var RewardModelTrainingRequestSchema = z5.object({
316
- kind: z5.literal("reward_model_train"),
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: z5.object({
321
- schemaVersion: z5.literal("openpond.rewardModelRecipe.v1"),
322
- method: z5.literal("reward_model"),
323
- parameterization: z5.literal("lora_with_scalar_head")
324
- }).catchall(z5.unknown())
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 = z5.object({
327
- kind: z5.literal("deterministic"),
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 = z5.object({
332
- kind: z5.literal("learned_reward"),
372
+ var LearnedRewardSourceSchema = z6.object({
373
+ kind: z6.literal("learned_reward"),
333
374
  rewardModelVersion: ModelProjectImmutableRefSchema,
334
375
  qualificationReport: ModelProjectImmutableRefSchema.nullable().default(null),
335
- evaluationReferences: z5.array(ModelProjectImmutableRefSchema).max(1e3).default([]),
336
- scorerArtifact: z5.object({
337
- artifactRef: z5.string().trim().min(1).max(2e3),
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 = z5.object({
345
- kind: z5.literal("policy_optimize"),
385
+ var PolicyOptimizationRequestSchema = z6.object({
386
+ kind: z6.literal("policy_optimize"),
346
387
  baseModel: ModelProjectBaseModelSchema,
347
388
  recipe: ModelProjectRecipeDocumentSchema,
348
- rewardSource: z5.discriminatedUnion("kind", [
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 = z5.discriminatedUnion("kind", [
395
+ var TrainingJobRequestSchema = z6.discriminatedUnion("kind", [
355
396
  RewardModelTrainingRequestSchema,
356
397
  PolicyOptimizationRequestSchema
357
398
  ]);
358
- var TrainingJobApprovalSchema = z5.object({
399
+ var TrainingJobApprovalSchema = z6.object({
359
400
  approvalHash: HashSchema3,
360
401
  approvedAt: TimestampSchema,
361
- exportApproved: z5.boolean(),
362
- maximumSpendUsd: z5.number().nonnegative(),
363
- retentionDays: z5.number().int().nonnegative().nullable(),
364
- region: z5.string().trim().min(1).max(200).nullable().default(null)
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 = z5.object({
367
- schemaVersion: z5.literal("openpond.trainingJobSubmission.v2"),
368
- idempotencyKey: z5.string().trim().min(1).max(500),
369
- name: z5.string().trim().min(1).max(200),
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: z5.array(TrainingCapabilityRequirementSchema).max(1e3),
373
- placementObjective: z5.enum(["fast", "balanced", "economical"]),
374
- budget: z5.object({
375
- maximumSpendUsd: z5.number().nonnegative(),
376
- maximumWallSeconds: z5.number().int().positive()
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 = z5.object({
410
- schemaVersion: z5.literal("openpond.trainingJob.v2"),
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: z5.number().int().positive(),
457
+ sourceProjectRevision: z6.number().int().positive(),
417
458
  submissionHash: HashSchema3,
418
459
  state: TrainingJobStateSchema,
419
- phase: z5.string().trim().min(1).max(200),
420
- version: z5.number().int().nonnegative(),
421
- progress: z5.number().min(0).max(1),
422
- rolloutProgress: z5.object({
423
- groupsCompleted: z5.number().int().nonnegative(),
424
- groupsTarget: z5.number().int().nonnegative(),
425
- optimizerUpdatesApplied: z5.number().int().nonnegative(),
426
- optimizerUpdatesSkipped: z5.number().int().nonnegative()
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: z5.number().nonnegative(),
429
- terminalReason: z5.string().trim().min(1).max(5e3).nullable(),
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 = z5.object({
435
- schemaVersion: z5.literal("openpond.trainingJobPage.v2"),
436
- jobs: z5.array(TrainingJobSchema).max(1e3),
437
- nextCursor: z5.string().trim().min(1).max(2e3).nullable()
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 = z5.object({
440
- schemaVersion: z5.literal("openpond.trainingJobEvent.v2"),
480
+ var TrainingJobEventSchema = z6.object({
481
+ schemaVersion: z6.literal("openpond.trainingJobEvent.v2"),
441
482
  id: IdSchema3,
442
483
  jobId: IdSchema3,
443
- sequence: z5.number().int().nonnegative(),
484
+ sequence: z6.number().int().nonnegative(),
444
485
  type: IdSchema3,
445
- phase: z5.string().trim().min(1).max(200),
446
- message: z5.string().trim().min(1).max(5e3).nullable(),
447
- data: z5.record(z5.string(), z5.unknown()).default({}),
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 = z5.object({
451
- schemaVersion: z5.literal("openpond.trainingJobLog.v2"),
491
+ var TrainingJobLogSchema = z6.object({
492
+ schemaVersion: z6.literal("openpond.trainingJobLog.v2"),
452
493
  jobId: IdSchema3,
453
- sequence: z5.number().int().nonnegative(),
454
- level: z5.enum(["debug", "info", "warning", "error"]),
455
- message: z5.string().max(2e4),
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 = z5.object({ expectedVersion: z5.number().int().nonnegative() }).strict();
459
- var TrainingJobOutputSchema = z5.object({
460
- schemaVersion: z5.literal("openpond.trainingJobOutput.v2"),
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: z5.enum([
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: z5.string().trim().min(1).max(2e3),
513
+ artifactRef: z6.string().trim().min(1).max(2e3),
473
514
  contentHash: HashSchema3,
474
- sizeBytes: z5.number().int().nonnegative(),
475
- metadata: z5.record(z5.string(), z5.unknown()).default({}),
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 = z5.object({
479
- schemaVersion: z5.literal("openpond.trainingExecutionReceipt.v2"),
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: z5.array(ModelProjectImmutableRefSchema).max(1e4),
489
- outputs: z5.array(ModelProjectImmutableRefSchema).max(1e4),
490
- spendUsd: z5.number().nonnegative(),
491
- durationSeconds: z5.number().nonnegative(),
492
- cleanupComplete: z5.boolean(),
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: z5.string().trim().min(1).max(1e4).nullable()
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 = z5.object({
532
- schemaVersion: z5.literal("openpond.trainingJobOutputs.v2"),
533
- outputs: z5.array(TrainingJobOutputSchema).max(1e4),
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 = z5.object({
537
- schemaVersion: z5.literal("openpond.trainingApiError.v2"),
538
- code: z5.string().trim().min(1).max(200),
539
- message: z5.string().trim().min(1).max(5e3),
540
- retryable: z5.boolean().default(false),
541
- requestId: z5.string().trim().min(1).max(500).nullable().default(null),
542
- details: z5.record(z5.string(), z5.unknown()).default({})
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 = z5.object({
561
- schemaVersion: z5.literal("openpond.trainingCapabilities.v2"),
601
+ var TrainingCapabilitiesSchema = z6.object({
602
+ schemaVersion: z6.literal("openpond.trainingCapabilities.v2"),
562
603
  capabilityHash: HashSchema3,
563
- jobKinds: z5.array(TrainingJobKindSchema),
564
- methods: z5.array(z5.string().trim().min(1).max(200)),
565
- placements: z5.array(
566
- z5.enum(["local", "remote", "colocated", "provider_native"])
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: z5.object({
569
- cancel: z5.boolean(),
570
- stopAfterGroup: z5.boolean(),
571
- resumeFromCheckpoint: z5.boolean()
609
+ controls: z6.object({
610
+ cancel: z6.boolean(),
611
+ stopAfterGroup: z6.boolean(),
612
+ resumeFromCheckpoint: z6.boolean()
572
613
  }).strict(),
573
- limits: z5.object({
574
- maximumSpendUsd: z5.number().nonnegative(),
575
- maximumWallSeconds: z5.number().int().positive(),
576
- maximumArtifactBytes: z5.number().int().positive()
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
- TRAINING_API_RESPONSE_MAX_BYTES,
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", z5.string().trim().min(1).max(2e3).parse(options.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(z5.number().int().min(1).max(1e3).parse(options.limit))
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 z5.array(TrainingJobEventSchema).parse(
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 : z5.string().regex(/^[1-9]\d*$/).parse(options.cursor);
735
- const offset = cursor === void 0 ? 0 : z5.number().int().min(1).max(9999).parse(Number(cursor));
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(z5.number().int().min(1).max(100).parse(options.limit)));
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 z5.array(TrainingJobLogSchema).max(1e5).parse(
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-F5JBFRAH.js.map
868
+ //# sourceMappingURL=chunk-GZOXT7YE.js.map