openpond-sdk 0.8.0 → 0.8.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.
@@ -20,15 +20,128 @@ import {
20
20
  } from "./chunk-QUOW6URQ.js";
21
21
 
22
22
  // src/training.ts
23
- import { z as z6 } from "zod";
23
+ import { z as z7 } from "zod";
24
24
 
25
- // src/training-harness-sources.ts
25
+ // src/training-preparations.ts
26
26
  import { z } from "zod";
27
- var TrainingHarnessSourcePublicationSchema = z.object({
28
- schemaVersion: z.literal("openpond.trainingHarnessSourcePublication.v1"),
27
+ var Id = z.string().trim().min(1).max(191);
28
+ var Hash = z.string().regex(/^[a-f0-9]{64}$/);
29
+ var TrainingPreparationRequestSchema = z.object({
30
+ schemaVersion: z.literal("openpond.trainingPreparationRequest.v1"),
31
+ teamId: Id,
32
+ operationId: Id,
33
+ projectId: Id.nullable(),
34
+ configuration: z.object({ id: Id, expectedRevision: z.number().int().positive(), expectedEtag: Hash }).strict(),
35
+ batch: ModelProjectVersionedRefSchema,
36
+ name: z.string().trim().min(1).max(191),
37
+ maximumSpendUsd: z.number().finite().positive().max(1e6)
38
+ }).strict();
39
+ var TrainingPreparationPlanContentSchema = z.object({
40
+ schemaVersion: z.literal("openpond.trainingPreparationPlan.v1"),
41
+ id: Id,
42
+ creatorUserId: Id,
43
+ request: TrainingPreparationRequestSchema,
44
+ requestHash: Hash,
45
+ source: z.lazy(() => TrainingJobSourceSchema),
46
+ submissionHash: Hash,
47
+ createdAt: z.string().datetime({ offset: true })
48
+ }).strict();
49
+ var TrainingPreparationPlanSchema = TrainingPreparationPlanContentSchema.extend({ contentHash: Hash }).strict();
50
+ var TrainingPreparationReceiptSchema = z.object({
51
+ schemaVersion: z.literal("openpond.trainingPreparationReceipt.v1"),
52
+ plan: TrainingPreparationPlanSchema,
53
+ revision: z.number().int().positive(),
54
+ state: z.enum(["prepared", "submitted", "cancelled"]),
55
+ jobId: Id.nullable()
56
+ }).strict().superRefine((value, context) => {
57
+ if (value.state === "submitted" !== Boolean(value.jobId)) context.addIssue({ code: "custom", path: ["jobId"], message: "Only submitted preparations identify a job." });
58
+ });
59
+ var TrainingPreparationControlSchema = z.object({
60
+ teamId: Id,
61
+ planHash: Hash,
62
+ expectedRevision: z.number().int().positive()
63
+ }).strict();
64
+ var TrainingPreparationListQuerySchema = z.object({
65
+ projectId: Id.optional(),
66
+ state: z.enum(["prepared", "submitted", "cancelled"]).optional(),
67
+ afterId: Id.optional(),
68
+ limit: z.number().int().min(1).max(100).default(25)
69
+ }).strict();
70
+ var TrainingPreparationPageSchema = z.object({
71
+ schemaVersion: z.literal("openpond.trainingPreparationPage.v1"),
72
+ teamId: Id,
73
+ items: z.array(TrainingPreparationReceiptSchema).max(100),
74
+ nextCursor: Id.nullable()
75
+ }).strict();
76
+ async function parseAndVerifyTrainingPreparationReceipt(value) {
77
+ const receipt = TrainingPreparationReceiptSchema.parse(value);
78
+ const { contentHash, ...plan } = receipt.plan;
79
+ if (await canonicalSha256(plan) !== contentHash || await canonicalSha256(plan.request) !== plan.requestHash || plan.source.modelProject.id !== plan.request.configuration.id) {
80
+ throw new OpenPondProtocolError("training_preparation_mismatch", "The prepared training inputs changed.");
81
+ }
82
+ return receipt;
83
+ }
84
+ function createTrainingPreparationClient(request) {
85
+ async function read(value, teamId, id) {
86
+ const receipt = await parseAndVerifyTrainingPreparationReceipt(value);
87
+ if (receipt.plan.request.teamId !== teamId || id && receipt.plan.id !== id)
88
+ throw new OpenPondProtocolError("training_preparation_scope_mismatch", "The training preparation belongs to a different workspace or request.");
89
+ return receipt;
90
+ }
91
+ return {
92
+ /** Discover the authenticated user's retained preparations without creating jobs. */
93
+ async listPreparations(teamId, input = {}) {
94
+ const scope = Id.parse(teamId);
95
+ const query = TrainingPreparationListQuerySchema.parse(input);
96
+ const params = new URLSearchParams();
97
+ for (const [key, value] of Object.entries(query)) params.set(key, String(value));
98
+ const page = TrainingPreparationPageSchema.parse(await request(`/v1/training/preparations?${params}`));
99
+ if (page.teamId !== scope || page.items.length > query.limit || new Set(page.items.map((item) => item.plan.id)).size !== page.items.length || page.nextCursor !== null && (page.nextCursor !== page.items.at(-1)?.plan.id || page.nextCursor === query.afterId)) {
100
+ throw new OpenPondProtocolError("training_preparation_page_mismatch", "The preparation page does not match its workspace or cursor.");
101
+ }
102
+ const items = await Promise.all(page.items.map(async (item) => {
103
+ const receipt = await read(item, scope);
104
+ if (query.projectId && receipt.plan.request.projectId !== query.projectId || query.state && receipt.state !== query.state) {
105
+ throw new OpenPondProtocolError("training_preparation_page_mismatch", "A preparation does not match the requested Project or state.");
106
+ }
107
+ return receipt;
108
+ }));
109
+ return { ...page, items };
110
+ },
111
+ async prepareRun(input) {
112
+ const parsed = TrainingPreparationRequestSchema.parse(input);
113
+ const receipt = await read(await request("/v1/training/preparations", { method: "POST", body: JSON.stringify(parsed) }), parsed.teamId);
114
+ if (receipt.plan.requestHash !== await canonicalSha256(parsed))
115
+ throw new OpenPondProtocolError("training_preparation_request_mismatch", "The preparation does not match the requested run.");
116
+ return receipt;
117
+ },
118
+ async getPreparation(teamId, id) {
119
+ return read(await request(`/v1/training/preparations/${encodeURIComponent(Id.parse(id))}`), Id.parse(teamId), id);
120
+ },
121
+ async startPreparation(id, input) {
122
+ const parsed = TrainingPreparationControlSchema.parse(input);
123
+ const receipt = await read(await request(`/v1/training/preparations/${encodeURIComponent(Id.parse(id))}/start`, { method: "POST", body: JSON.stringify(parsed) }), parsed.teamId, id);
124
+ if (receipt.plan.contentHash !== parsed.planHash || receipt.state !== "submitted")
125
+ throw new OpenPondProtocolError("training_preparation_start_mismatch", "The submitted run does not match the approved preparation.");
126
+ return receipt;
127
+ },
128
+ async cancelPreparation(id, input) {
129
+ const parsed = TrainingPreparationControlSchema.parse(input);
130
+ const receipt = await read(await request(`/v1/training/preparations/${encodeURIComponent(Id.parse(id))}/cancel`, { method: "POST", body: JSON.stringify(parsed) }), parsed.teamId, id);
131
+ if (receipt.plan.contentHash !== parsed.planHash || receipt.state !== "cancelled")
132
+ throw new OpenPondProtocolError("training_preparation_cancel_mismatch", "The preparation cancellation could not be verified.");
133
+ return receipt;
134
+ }
135
+ };
136
+ }
137
+
138
+ // src/training-harness-sources.ts
139
+ import { z as z2 } from "zod";
140
+ var TrainingHarnessSourcePublicationSchema = z2.object({
141
+ schemaVersion: z2.literal("openpond.trainingHarnessSourcePublication.v1"),
29
142
  harnessRelease: ImmutableReleaseRefSchema,
30
- sourcePackageHash: z.string().regex(/^[a-f0-9]{64}$/),
31
- sizeBytes: z.number().int().positive().max(TRAINING_INPUT_ARTIFACT_MAX_BYTES)
143
+ sourcePackageHash: z2.string().regex(/^[a-f0-9]{64}$/),
144
+ sizeBytes: z2.number().int().positive().max(TRAINING_INPUT_ARTIFACT_MAX_BYTES)
32
145
  }).strict();
33
146
  function createTrainingHarnessSourceClient(request) {
34
147
  const route = (reference) => {
@@ -58,28 +171,28 @@ function createTrainingHarnessSourceClient(request) {
58
171
  }
59
172
 
60
173
  // 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"),
174
+ import { z as z3 } from "zod";
175
+ var IdSchema = /* @__PURE__ */ (() => z3.string().trim().min(1).max(500))();
176
+ var HashSchema = /* @__PURE__ */ (() => z3.string().regex(/^[a-f0-9]{64}$/))();
177
+ var TrainingCandidateDecisionRequestSchema = /* @__PURE__ */ (() => z3.object({
178
+ schemaVersion: z3.literal("openpond.trainingCandidateDecisionRequest.v1"),
66
179
  teamId: IdSchema,
67
180
  jobId: IdSchema,
68
181
  artifact: ModelProjectImmutableRefSchema,
69
182
  evaluation: ModelProjectImmutableRefSchema,
70
183
  executionReceipt: ModelProjectImmutableRefSchema,
71
- decision: z2.enum(["accepted", "rejected"]),
72
- reason: z2.string().trim().min(1).max(5e3),
184
+ decision: z3.enum(["accepted", "rejected"]),
185
+ reason: z3.string().trim().min(1).max(5e3),
73
186
  idempotencyKey: IdSchema,
74
187
  expectedDecision: ModelProjectImmutableRefSchema.nullable()
75
188
  }).strict())();
76
- var TrainingCandidateDecisionSchema = /* @__PURE__ */ (() => z2.object({
77
- schemaVersion: z2.literal("openpond.trainingCandidateDecision.v1"),
189
+ var TrainingCandidateDecisionSchema = /* @__PURE__ */ (() => z3.object({
190
+ schemaVersion: z3.literal("openpond.trainingCandidateDecision.v1"),
78
191
  id: IdSchema,
79
192
  request: TrainingCandidateDecisionRequestSchema,
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 }),
193
+ revision: z3.number().int().positive(),
194
+ actor: z3.object({ userId: IdSchema, kind: z3.enum(["user", "api_key", "agent_delegate"]), id: IdSchema }).strict(),
195
+ decidedAt: z3.string().datetime({ offset: true }),
83
196
  contentHash: HashSchema
84
197
  }).strict().superRefine((value, context) => {
85
198
  if (value.revision === 1 !== (value.request.expectedDecision === null)) {
@@ -116,7 +229,7 @@ function createTrainingCandidateDecisionClient(request) {
116
229
  IdSchema.parse(target.teamId);
117
230
  const reference = options.decision ? ModelProjectImmutableRefSchema.parse(options.decision) : void 0;
118
231
  const query = reference ? `?decisionId=${encodeURIComponent(reference.id)}` : "";
119
- const response = z2.object({ decision: z2.unknown().nullable() }).strict().parse(await request(`${route(target)}${query}`));
232
+ const response = z3.object({ decision: z3.unknown().nullable() }).strict().parse(await request(`${route(target)}${query}`));
120
233
  if (response.decision === null && !reference) return null;
121
234
  const decision = await parseAndVerifyTrainingCandidateDecision(response.decision, target);
122
235
  if (reference && (decision.id !== reference.id || decision.contentHash !== reference.contentHash)) {
@@ -133,38 +246,38 @@ function createTrainingCandidateDecisionClient(request) {
133
246
  }
134
247
 
135
248
  // src/training-evaluation-results.ts
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({
249
+ import { z as z4 } from "zod";
250
+ var IdSchema2 = /* @__PURE__ */ (() => z4.string().trim().min(1).max(500))();
251
+ var HashSchema2 = /* @__PURE__ */ (() => z4.string().regex(/^[a-f0-9]{64}$/))();
252
+ var TrainingEvaluationTaskResultSchema = /* @__PURE__ */ (() => z4.object({
140
253
  taskId: IdSchema2,
141
254
  taskSha256: HashSchema2,
142
255
  resultSha256: HashSchema2,
143
- input: z3.object({
144
- instruction: z3.string().max(1e6),
145
- context: z3.record(z3.string(), z3.unknown())
256
+ input: z4.object({
257
+ instruction: z4.string().max(1e6),
258
+ context: z4.record(z4.string(), z4.unknown())
146
259
  }).strict(),
147
- output: z3.string().max(1e6),
260
+ output: z4.string().max(1e6),
148
261
  outputSha256: HashSchema2,
149
- score: z3.number().finite().min(0).max(1),
150
- evidence: z3.object({
151
- kind: z3.enum(["worker_command", "hosted_trace", "local_trace"]),
262
+ score: z4.number().finite().min(0).max(1),
263
+ evidence: z4.object({
264
+ kind: z4.enum(["worker_command", "hosted_trace", "local_trace"]),
152
265
  id: IdSchema2
153
266
  }).strict()
154
267
  }).strict())();
155
- var TrainingEvaluationTaskPageSchema = /* @__PURE__ */ (() => z3.object({
156
- schemaVersion: z3.literal("openpond.trainingEvaluationTaskPage.v1"),
268
+ var TrainingEvaluationTaskPageSchema = /* @__PURE__ */ (() => z4.object({
269
+ schemaVersion: z4.literal("openpond.trainingEvaluationTaskPage.v1"),
157
270
  jobId: IdSchema2,
158
271
  teamId: IdSchema2,
159
272
  evaluation: ModelProjectImmutableRefSchema,
160
- kind: z3.enum(["baseline", "candidate"]),
161
- policyVersion: z3.number().int().nonnegative(),
273
+ kind: z4.enum(["baseline", "candidate"]),
274
+ policyVersion: z4.number().int().nonnegative(),
162
275
  taskset: ModelProjectVersionedRefSchema,
163
276
  panelSha256: HashSchema2,
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(),
277
+ offset: z4.number().int().nonnegative(),
278
+ total: z4.number().int().min(1).max(1e4),
279
+ tasks: z4.array(TrainingEvaluationTaskResultSchema).min(1).max(100),
280
+ nextCursor: z4.string().regex(/^[1-9]\d*$/).nullable(),
168
281
  contentHash: HashSchema2
169
282
  }).strict().superRefine((page, context) => {
170
283
  const end = page.offset + page.tasks.length;
@@ -199,12 +312,12 @@ async function parseAndVerifyTrainingEvaluationTaskPage(value, expected) {
199
312
  }
200
313
 
201
314
  // src/training-grading-plan.ts
202
- import { z as z4 } from "zod";
315
+ import { z as z5 } from "zod";
203
316
  import { compileBoundGraders, RewardBindingSchema, RewardReleaseSchema } from "@openpond/evals/rewards";
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({
317
+ var GradersSchema = z5.array(z5.object({ id: z5.string().trim().min(1) }).catchall(z5.unknown())).min(1).max(1e3);
318
+ var RewardExecutionSchema = z5.object({
206
319
  binding: RewardBindingSchema,
207
- rewards: z4.array(RewardReleaseSchema).min(1).max(100)
320
+ rewards: z5.array(RewardReleaseSchema).min(1).max(100)
208
321
  }).strict();
209
322
  async function deterministicTrainingRewardSource(input) {
210
323
  const execution = input.rewardExecution ? RewardExecutionSchema.parse(input.rewardExecution) : null;
@@ -221,23 +334,23 @@ async function deterministicTrainingRewardSource(input) {
221
334
  }
222
335
 
223
336
  // src/training-evaluation-source.ts
224
- import { z as z5 } from "zod";
337
+ import { z as z6 } from "zod";
225
338
  var TRAINING_EVALUATION_SOURCE_PATH = "evaluation-source.json";
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"])
339
+ var TaskIdentitySchema = z6.object({
340
+ id: z6.string().trim().min(1),
341
+ clusterKey: z6.string().trim().min(1),
342
+ split: z6.enum(["train", "validation", "frozen_eval"])
230
343
  }).passthrough();
231
- var TrainingEvaluationSourceSchema = z5.object({
232
- schemaVersion: z5.literal("openpond.trainingEvaluationSource.v1"),
344
+ var TrainingEvaluationSourceSchema = z6.object({
345
+ schemaVersion: z6.literal("openpond.trainingEvaluationSource.v1"),
233
346
  taskset: ModelProjectVersionedRefSchema,
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)
347
+ tasks: z6.array(TaskIdentitySchema).min(1).max(1e4),
348
+ assets: z6.array(z6.object({
349
+ path: z6.string().trim().min(1).max(2e3),
350
+ sha256: z6.string().regex(/^[a-f0-9]{64}$/),
351
+ sizeBytes: z6.number().int().nonnegative(),
352
+ encoding: z6.literal("base64"),
353
+ content: z6.string().max(32 * 1024 * 1024)
241
354
  }).strict()).max(1e4)
242
355
  }).strict().superRefine((source, context) => {
243
356
  const ids = /* @__PURE__ */ new Set();
@@ -248,8 +361,8 @@ var TrainingEvaluationSourceSchema = z5.object({
248
361
  });
249
362
  });
250
363
  function assertTrainingEvaluationIsolation(trainingTasks, 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);
364
+ const training = z6.array(TaskIdentitySchema).min(1).max(1e4).parse(trainingTasks);
365
+ const evaluation = z6.array(TaskIdentitySchema).min(1).max(1e4).parse(evaluationTasks);
253
366
  const trainIds = /* @__PURE__ */ new Set();
254
367
  const trainFamilies = /* @__PURE__ */ new Set();
255
368
  for (const task of training) {
@@ -275,24 +388,24 @@ async function trainingEvaluationSourceRef(input) {
275
388
  }
276
389
 
277
390
  // src/training.ts
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),
391
+ var IdSchema3 = z7.string().trim().min(1).max(500);
392
+ var HashSchema3 = z7.string().regex(/^[a-f0-9]{64}$/);
393
+ var TimestampSchema = z7.string().datetime({ offset: true });
394
+ var TrainingInputArtifactUploadSchema = z7.object({
395
+ schemaVersion: z7.literal("openpond.trainingInputArtifactUpload.v2"),
396
+ kind: z7.enum(["portable_training_bundle", "reward_model_dataset"]),
397
+ idempotencyKey: z7.string().trim().min(1).max(500),
285
398
  sourceManifest: ModelProjectImmutableRefSchema,
286
- payload: z6.unknown(),
399
+ payload: z7.unknown(),
287
400
  contentHash: HashSchema3
288
401
  }).strict();
289
- var TrainingInputArtifactSchema = z6.object({
290
- schemaVersion: z6.literal("openpond.trainingInputArtifact.v2"),
291
- kind: z6.enum(["portable_training_bundle", "reward_model_dataset"]),
402
+ var TrainingInputArtifactSchema = z7.object({
403
+ schemaVersion: z7.literal("openpond.trainingInputArtifact.v2"),
404
+ kind: z7.enum(["portable_training_bundle", "reward_model_dataset"]),
292
405
  sourceManifest: ModelProjectImmutableRefSchema,
293
- artifactRef: z6.string().trim().min(1).max(2e3),
406
+ artifactRef: z7.string().trim().min(1).max(2e3),
294
407
  contentHash: HashSchema3,
295
- sizeBytes: z6.number().int().positive(),
408
+ sizeBytes: z7.number().int().positive(),
296
409
  createdAt: TimestampSchema
297
410
  }).strict();
298
411
  async function trainingInputArtifactUploadHash(upload) {
@@ -315,11 +428,11 @@ async function parseAndVerifyTrainingInputArtifactUpload(value) {
315
428
  }
316
429
  return parsed;
317
430
  }
318
- var TrainingJobKindSchema = z6.enum([
431
+ var TrainingJobKindSchema = z7.enum([
319
432
  "reward_model_train",
320
433
  "policy_optimize"
321
434
  ]);
322
- var TrainingJobStateSchema = z6.enum([
435
+ var TrainingJobStateSchema = z7.enum([
323
436
  "queued",
324
437
  "admitting",
325
438
  "provisioning",
@@ -330,91 +443,91 @@ var TrainingJobStateSchema = z6.enum([
330
443
  "failed",
331
444
  "cancelled"
332
445
  ]);
333
- var TrainingCapabilityRequirementSchema = z6.object({
446
+ var TrainingCapabilityRequirementSchema = z7.object({
334
447
  id: IdSchema3,
335
- version: z6.string().trim().min(1).max(200).nullable().default(null),
336
- required: z6.boolean().default(true)
448
+ version: z7.string().trim().min(1).max(200).nullable().default(null),
449
+ required: z7.boolean().default(true)
337
450
  }).strict();
338
- var TrainingJobSourceSchema = z6.object({
339
- modelProject: z6.object({
451
+ var TrainingJobSourceSchema = z7.object({
452
+ modelProject: z7.object({
340
453
  id: IdSchema3,
341
454
  portableProjectId: IdSchema3,
342
- revision: z6.number().int().positive(),
455
+ revision: z7.number().int().positive(),
343
456
  contentHash: HashSchema3
344
457
  }).strict(),
345
458
  harnessRunManifest: ModelProjectImmutableRefSchema,
346
459
  harnessRelease: ModelProjectImmutableRefSchema,
347
460
  taskset: ModelProjectVersionedRefSchema,
348
461
  tasksetRelease: ModelProjectImmutableRefSchema,
349
- evaluation: z6.object({
462
+ evaluation: z7.object({
350
463
  taskset: ModelProjectVersionedRefSchema,
351
464
  dataset: ModelProjectImmutableRefSchema
352
465
  }).strict().nullable().optional(),
353
466
  dataset: ModelProjectImmutableRefSchema,
354
- evidenceSets: z6.array(ModelProjectImmutableRefSchema).max(1e4)
467
+ evidenceSets: z7.array(ModelProjectImmutableRefSchema).max(1e4)
355
468
  }).strict();
356
- var RewardModelTrainingRequestSchema = z6.object({
357
- kind: z6.literal("reward_model_train"),
469
+ var RewardModelTrainingRequestSchema = z7.object({
470
+ kind: z7.literal("reward_model_train"),
358
471
  baseModel: ModelProjectBaseModelSchema,
359
472
  preferenceDatasetRelease: ModelProjectImmutableRefSchema,
360
473
  processorRelease: ModelProjectImmutableRefSchema,
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())
474
+ recipe: z7.object({
475
+ schemaVersion: z7.literal("openpond.rewardModelRecipe.v1"),
476
+ method: z7.literal("reward_model"),
477
+ parameterization: z7.literal("lora_with_scalar_head")
478
+ }).catchall(z7.unknown())
366
479
  }).strict();
367
- var DeterministicRewardSourceSchema = z6.object({
368
- kind: z6.literal("deterministic"),
480
+ var DeterministicRewardSourceSchema = z7.object({
481
+ kind: z7.literal("deterministic"),
369
482
  grader: ModelProjectImmutableRefSchema,
370
483
  composer: ModelProjectImmutableRefSchema.nullable().default(null)
371
484
  }).strict();
372
- var LearnedRewardSourceSchema = z6.object({
373
- kind: z6.literal("learned_reward"),
485
+ var LearnedRewardSourceSchema = z7.object({
486
+ kind: z7.literal("learned_reward"),
374
487
  rewardModelVersion: ModelProjectImmutableRefSchema,
375
488
  qualificationReport: ModelProjectImmutableRefSchema.nullable().default(null),
376
- evaluationReferences: z6.array(ModelProjectImmutableRefSchema).max(1e3).default([]),
377
- scorerArtifact: z6.object({
378
- artifactRef: z6.string().trim().min(1).max(2e3),
489
+ evaluationReferences: z7.array(ModelProjectImmutableRefSchema).max(1e3).default([]),
490
+ scorerArtifact: z7.object({
491
+ artifactRef: z7.string().trim().min(1).max(2e3),
379
492
  contentHash: HashSchema3,
380
493
  executionReceipt: ModelProjectImmutableRefSchema
381
494
  }).strict(),
382
495
  processorRelease: ModelProjectImmutableRefSchema,
383
496
  rewardComposerRelease: ModelProjectImmutableRefSchema
384
497
  }).strict();
385
- var PolicyOptimizationRequestSchema = z6.object({
386
- kind: z6.literal("policy_optimize"),
498
+ var PolicyOptimizationRequestSchema = z7.object({
499
+ kind: z7.literal("policy_optimize"),
387
500
  baseModel: ModelProjectBaseModelSchema,
388
501
  recipe: ModelProjectRecipeDocumentSchema,
389
- rewardSource: z6.discriminatedUnion("kind", [
502
+ rewardSource: z7.discriminatedUnion("kind", [
390
503
  DeterministicRewardSourceSchema,
391
504
  LearnedRewardSourceSchema
392
505
  ]),
393
506
  resumeFrom: ModelProjectImmutableRefSchema.nullable().default(null)
394
507
  }).strict();
395
- var TrainingJobRequestSchema = z6.discriminatedUnion("kind", [
508
+ var TrainingJobRequestSchema = z7.discriminatedUnion("kind", [
396
509
  RewardModelTrainingRequestSchema,
397
510
  PolicyOptimizationRequestSchema
398
511
  ]);
399
- var TrainingJobApprovalSchema = z6.object({
512
+ var TrainingJobApprovalSchema = z7.object({
400
513
  approvalHash: HashSchema3,
401
514
  approvedAt: TimestampSchema,
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)
515
+ exportApproved: z7.boolean(),
516
+ maximumSpendUsd: z7.number().nonnegative(),
517
+ retentionDays: z7.number().int().nonnegative().nullable(),
518
+ region: z7.string().trim().min(1).max(200).nullable().default(null)
406
519
  }).strict();
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),
520
+ var TrainingJobSubmissionSchema = z7.object({
521
+ schemaVersion: z7.literal("openpond.trainingJobSubmission.v2"),
522
+ idempotencyKey: z7.string().trim().min(1).max(500),
523
+ name: z7.string().trim().min(1).max(200),
411
524
  source: TrainingJobSourceSchema,
412
525
  job: TrainingJobRequestSchema,
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()
526
+ requestedCapabilities: z7.array(TrainingCapabilityRequirementSchema).max(1e3),
527
+ placementObjective: z7.enum(["fast", "balanced", "economical"]),
528
+ budget: z7.object({
529
+ maximumSpendUsd: z7.number().nonnegative(),
530
+ maximumWallSeconds: z7.number().int().positive()
418
531
  }).strict(),
419
532
  approval: TrainingJobApprovalSchema,
420
533
  contentHash: HashSchema3
@@ -447,61 +560,61 @@ async function parseAndVerifyTrainingJobSubmission(value) {
447
560
  }
448
561
  return parsed;
449
562
  }
450
- var TrainingJobSchema = z6.object({
451
- schemaVersion: z6.literal("openpond.trainingJob.v2"),
563
+ var TrainingJobSchema = z7.object({
564
+ schemaVersion: z7.literal("openpond.trainingJob.v2"),
452
565
  id: IdSchema3,
453
566
  teamId: IdSchema3,
454
567
  kind: TrainingJobKindSchema,
455
568
  modelProjectId: IdSchema3,
456
569
  portableProjectId: IdSchema3,
457
- sourceProjectRevision: z6.number().int().positive(),
570
+ sourceProjectRevision: z7.number().int().positive(),
458
571
  submissionHash: HashSchema3,
459
572
  state: TrainingJobStateSchema,
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()
573
+ phase: z7.string().trim().min(1).max(200),
574
+ version: z7.number().int().nonnegative(),
575
+ progress: z7.number().min(0).max(1),
576
+ rolloutProgress: z7.object({
577
+ groupsCompleted: z7.number().int().nonnegative(),
578
+ groupsTarget: z7.number().int().nonnegative(),
579
+ optimizerUpdatesApplied: z7.number().int().nonnegative(),
580
+ optimizerUpdatesSkipped: z7.number().int().nonnegative()
468
581
  }).strict(),
469
- accruedSpendUsd: z6.number().nonnegative(),
470
- terminalReason: z6.string().trim().min(1).max(5e3).nullable(),
582
+ accruedSpendUsd: z7.number().nonnegative(),
583
+ terminalReason: z7.string().trim().min(1).max(5e3).nullable(),
471
584
  createdAt: TimestampSchema,
472
585
  updatedAt: TimestampSchema,
473
586
  completedAt: TimestampSchema.nullable()
474
587
  }).strict();
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()
588
+ var TrainingJobPageSchema = z7.object({
589
+ schemaVersion: z7.literal("openpond.trainingJobPage.v2"),
590
+ jobs: z7.array(TrainingJobSchema).max(1e3),
591
+ nextCursor: z7.string().trim().min(1).max(2e3).nullable()
479
592
  }).strict();
480
- var TrainingJobEventSchema = z6.object({
481
- schemaVersion: z6.literal("openpond.trainingJobEvent.v2"),
593
+ var TrainingJobEventSchema = z7.object({
594
+ schemaVersion: z7.literal("openpond.trainingJobEvent.v2"),
482
595
  id: IdSchema3,
483
596
  jobId: IdSchema3,
484
- sequence: z6.number().int().nonnegative(),
597
+ sequence: z7.number().int().nonnegative(),
485
598
  type: IdSchema3,
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({}),
599
+ phase: z7.string().trim().min(1).max(200),
600
+ message: z7.string().trim().min(1).max(5e3).nullable(),
601
+ data: z7.record(z7.string(), z7.unknown()).default({}),
489
602
  createdAt: TimestampSchema
490
603
  }).strict();
491
- var TrainingJobLogSchema = z6.object({
492
- schemaVersion: z6.literal("openpond.trainingJobLog.v2"),
604
+ var TrainingJobLogSchema = z7.object({
605
+ schemaVersion: z7.literal("openpond.trainingJobLog.v2"),
493
606
  jobId: IdSchema3,
494
- sequence: z6.number().int().nonnegative(),
495
- level: z6.enum(["debug", "info", "warning", "error"]),
496
- message: z6.string().max(2e4),
607
+ sequence: z7.number().int().nonnegative(),
608
+ level: z7.enum(["debug", "info", "warning", "error"]),
609
+ message: z7.string().max(2e4),
497
610
  createdAt: TimestampSchema
498
611
  }).strict();
499
- var TrainingJobControlRequestSchema = z6.object({ expectedVersion: z6.number().int().nonnegative() }).strict();
500
- var TrainingJobOutputSchema = z6.object({
501
- schemaVersion: z6.literal("openpond.trainingJobOutput.v2"),
612
+ var TrainingJobControlRequestSchema = z7.object({ expectedVersion: z7.number().int().nonnegative() }).strict();
613
+ var TrainingJobOutputSchema = z7.object({
614
+ schemaVersion: z7.literal("openpond.trainingJobOutput.v2"),
502
615
  id: IdSchema3,
503
616
  jobId: IdSchema3,
504
- kind: z6.enum([
617
+ kind: z7.enum([
505
618
  "checkpoint",
506
619
  "adapter",
507
620
  "scorer",
@@ -510,14 +623,14 @@ var TrainingJobOutputSchema = z6.object({
510
623
  "trace",
511
624
  "receipt"
512
625
  ]),
513
- artifactRef: z6.string().trim().min(1).max(2e3),
626
+ artifactRef: z7.string().trim().min(1).max(2e3),
514
627
  contentHash: HashSchema3,
515
- sizeBytes: z6.number().int().nonnegative(),
516
- metadata: z6.record(z6.string(), z6.unknown()).default({}),
628
+ sizeBytes: z7.number().int().nonnegative(),
629
+ metadata: z7.record(z7.string(), z7.unknown()).default({}),
517
630
  createdAt: TimestampSchema
518
631
  }).strict();
519
- var TrainingExecutionReceiptSchema = z6.object({
520
- schemaVersion: z6.literal("openpond.trainingExecutionReceipt.v2"),
632
+ var TrainingExecutionReceiptSchema = z7.object({
633
+ schemaVersion: z7.literal("openpond.trainingExecutionReceipt.v2"),
521
634
  id: IdSchema3,
522
635
  teamId: IdSchema3,
523
636
  jobId: IdSchema3,
@@ -526,14 +639,14 @@ var TrainingExecutionReceiptSchema = z6.object({
526
639
  recipeHash: HashSchema3,
527
640
  capabilityHash: HashSchema3,
528
641
  runtimeRelease: ModelProjectImmutableRefSchema,
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(),
642
+ inputs: z7.array(ModelProjectImmutableRefSchema).max(1e4),
643
+ outputs: z7.array(ModelProjectImmutableRefSchema).max(1e4),
644
+ spendUsd: z7.number().nonnegative(),
645
+ durationSeconds: z7.number().nonnegative(),
646
+ cleanupComplete: z7.boolean(),
534
647
  issuer: IdSchema3,
535
648
  issuedAt: TimestampSchema,
536
- signature: z6.string().trim().min(1).max(1e4).nullable()
649
+ signature: z7.string().trim().min(1).max(1e4).nullable()
537
650
  }).strict();
538
651
  async function trainingExecutionReceiptHash(receipt) {
539
652
  return canonicalSha256(TrainingExecutionReceiptSchema.parse(receipt));
@@ -569,18 +682,18 @@ async function parseAndVerifyTrainingExecutionReceipt(value, expected) {
569
682
  }
570
683
  return receipt;
571
684
  }
572
- var TrainingJobOutputsSchema = z6.object({
573
- schemaVersion: z6.literal("openpond.trainingJobOutputs.v2"),
574
- outputs: z6.array(TrainingJobOutputSchema).max(1e4),
685
+ var TrainingJobOutputsSchema = z7.object({
686
+ schemaVersion: z7.literal("openpond.trainingJobOutputs.v2"),
687
+ outputs: z7.array(TrainingJobOutputSchema).max(1e4),
575
688
  receipt: TrainingExecutionReceiptSchema.nullable()
576
689
  }).strict();
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({})
690
+ var TrainingApiErrorSchema = z7.object({
691
+ schemaVersion: z7.literal("openpond.trainingApiError.v2"),
692
+ code: z7.string().trim().min(1).max(200),
693
+ message: z7.string().trim().min(1).max(5e3),
694
+ retryable: z7.boolean().default(false),
695
+ requestId: z7.string().trim().min(1).max(500).nullable().default(null),
696
+ details: z7.record(z7.string(), z7.unknown()).default({})
584
697
  }).strict();
585
698
  var OpenPondTrainingApiError = class extends Error {
586
699
  status;
@@ -598,23 +711,23 @@ var OpenPondTrainingApiError = class extends Error {
598
711
  this.details = error.details;
599
712
  }
600
713
  };
601
- var TrainingCapabilitiesSchema = z6.object({
602
- schemaVersion: z6.literal("openpond.trainingCapabilities.v2"),
714
+ var TrainingCapabilitiesSchema = z7.object({
715
+ schemaVersion: z7.literal("openpond.trainingCapabilities.v2"),
603
716
  capabilityHash: HashSchema3,
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"])
717
+ jobKinds: z7.array(TrainingJobKindSchema),
718
+ methods: z7.array(z7.string().trim().min(1).max(200)),
719
+ placements: z7.array(
720
+ z7.enum(["local", "remote", "colocated", "provider_native"])
608
721
  ),
609
- controls: z6.object({
610
- cancel: z6.boolean(),
611
- stopAfterGroup: z6.boolean(),
612
- resumeFromCheckpoint: z6.boolean()
722
+ controls: z7.object({
723
+ cancel: z7.boolean(),
724
+ stopAfterGroup: z7.boolean(),
725
+ resumeFromCheckpoint: z7.boolean()
613
726
  }).strict(),
614
- limits: z6.object({
615
- maximumSpendUsd: z6.number().nonnegative(),
616
- maximumWallSeconds: z6.number().int().positive(),
617
- maximumArtifactBytes: z6.number().int().positive()
727
+ limits: z7.object({
728
+ maximumSpendUsd: z7.number().nonnegative(),
729
+ maximumWallSeconds: z7.number().int().positive(),
730
+ maximumArtifactBytes: z7.number().int().positive()
618
731
  }).strict(),
619
732
  checkedAt: TimestampSchema,
620
733
  expiresAt: TimestampSchema
@@ -670,6 +783,7 @@ function createTrainingClient(input) {
670
783
  );
671
784
  }
672
785
  return {
786
+ ...createTrainingPreparationClient(request),
673
787
  ...createTrainingHarnessSourceClient(request),
674
788
  ...createTrainingCandidateDecisionClient(request),
675
789
  async capabilities() {
@@ -707,12 +821,12 @@ function createTrainingClient(input) {
707
821
  parameters.set("modelProjectId", IdSchema3.parse(options.modelProjectId));
708
822
  }
709
823
  if (options.cursor) {
710
- parameters.set("cursor", z6.string().trim().min(1).max(2e3).parse(options.cursor));
824
+ parameters.set("cursor", z7.string().trim().min(1).max(2e3).parse(options.cursor));
711
825
  }
712
826
  if (options.limit !== void 0) {
713
827
  parameters.set(
714
828
  "limit",
715
- String(z6.number().int().min(1).max(1e3).parse(options.limit))
829
+ String(z7.number().int().min(1).max(1e3).parse(options.limit))
716
830
  );
717
831
  }
718
832
  const query = parameters.size > 0 ? `?${parameters.toString()}` : "";
@@ -753,7 +867,7 @@ function createTrainingClient(input) {
753
867
  );
754
868
  },
755
869
  async events(jobId) {
756
- return z6.array(TrainingJobEventSchema).parse(
870
+ return z7.array(TrainingJobEventSchema).parse(
757
871
  unwrapObject(
758
872
  await request(
759
873
  `/v1/training/jobs/${encodeURIComponent(IdSchema3.parse(jobId))}/events`
@@ -773,10 +887,10 @@ function createTrainingClient(input) {
773
887
  const id = IdSchema3.parse(jobId);
774
888
  const reference = ModelProjectImmutableRefSchema.parse(evaluation);
775
889
  const parameters = new URLSearchParams();
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));
890
+ const cursor = options.cursor === void 0 ? void 0 : z7.string().regex(/^[1-9]\d*$/).parse(options.cursor);
891
+ const offset = cursor === void 0 ? 0 : z7.number().int().min(1).max(9999).parse(Number(cursor));
778
892
  if (cursor !== void 0) parameters.set("cursor", cursor);
779
- if (options.limit !== void 0) parameters.set("limit", String(z6.number().int().min(1).max(100).parse(options.limit)));
893
+ if (options.limit !== void 0) parameters.set("limit", String(z7.number().int().min(1).max(100).parse(options.limit)));
780
894
  const query = parameters.size ? `?${parameters.toString()}` : "";
781
895
  return parseAndVerifyTrainingEvaluationTaskPage(
782
896
  await request(`/v1/training/jobs/${encodeURIComponent(id)}/evaluations/${encodeURIComponent(reference.id)}/tasks${query}`),
@@ -784,7 +898,7 @@ function createTrainingClient(input) {
784
898
  );
785
899
  },
786
900
  async logs(jobId) {
787
- return z6.array(TrainingJobLogSchema).max(1e5).parse(
901
+ return z7.array(TrainingJobLogSchema).max(1e5).parse(
788
902
  unwrapObject(
789
903
  await request(
790
904
  `/v1/training/jobs/${encodeURIComponent(IdSchema3.parse(jobId))}/logs`
@@ -821,6 +935,14 @@ function trainingApiError(value, status) {
821
935
  }
822
936
 
823
937
  export {
938
+ TrainingPreparationRequestSchema,
939
+ TrainingPreparationPlanContentSchema,
940
+ TrainingPreparationPlanSchema,
941
+ TrainingPreparationReceiptSchema,
942
+ TrainingPreparationControlSchema,
943
+ TrainingPreparationListQuerySchema,
944
+ TrainingPreparationPageSchema,
945
+ parseAndVerifyTrainingPreparationReceipt,
824
946
  TrainingHarnessSourcePublicationSchema,
825
947
  TrainingCandidateDecisionRequestSchema,
826
948
  TrainingCandidateDecisionSchema,
@@ -865,4 +987,4 @@ export {
865
987
  TrainingCapabilitiesSchema,
866
988
  createTrainingClient
867
989
  };
868
- //# sourceMappingURL=chunk-CGIMLZE5.js.map
990
+ //# sourceMappingURL=chunk-KIBRMKJQ.js.map