openpond-sdk 0.12.5 → 0.12.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/TASKSETS.md +13 -0
- package/TRAINING_PROTOCOL.md +25 -0
- package/dist/advanced-refiner-evaluations.js +7 -7
- package/dist/candidate-evaluations.js +6 -6
- package/dist/{chunk-EJZ7HOIS.js → chunk-2XLKMZH5.js} +485 -251
- package/dist/chunk-2XLKMZH5.js.map +1 -0
- package/dist/{chunk-CAMLCKSF.js → chunk-3SIGXGAE.js} +132 -87
- package/dist/chunk-3SIGXGAE.js.map +1 -0
- package/dist/{chunk-T3MFWGMX.js → chunk-3VGTVZHL.js} +3 -3
- package/dist/{chunk-O54KGALH.js → chunk-5T76GARR.js} +2 -2
- package/dist/{chunk-WQFU635Q.js → chunk-ATVQQCYN.js} +8 -4
- package/dist/chunk-ATVQQCYN.js.map +1 -0
- package/dist/{chunk-MJELLVQP.js → chunk-B2MKB7NB.js} +2 -2
- package/dist/{chunk-H4NTJFEE.js → chunk-D3WOJTUY.js} +3 -2
- package/dist/{chunk-H4NTJFEE.js.map → chunk-D3WOJTUY.js.map} +1 -1
- package/dist/{chunk-F4GITADW.js → chunk-ETFWUMEJ.js} +2 -2
- package/dist/{chunk-6KKM2XRR.js → chunk-FPA3AVCP.js} +35 -6
- package/dist/chunk-FPA3AVCP.js.map +1 -0
- package/dist/{chunk-QFBSNSUL.js → chunk-HRJKDHHG.js} +6 -4
- package/dist/chunk-HRJKDHHG.js.map +1 -0
- package/dist/{chunk-6GQ3GIAP.js → chunk-HRZLFJXX.js} +3 -3
- package/dist/{chunk-BJ5MKLWH.js → chunk-KD6MM67B.js} +6 -6
- package/dist/{chunk-RE426Q7Y.js → chunk-LIMTJR3A.js} +3 -3
- package/dist/{chunk-ZFYI4P6C.js → chunk-ONGOAEY6.js} +14 -2
- package/dist/chunk-ONGOAEY6.js.map +1 -0
- package/dist/{chunk-FLNWE5ZA.js → chunk-QDYHSJT5.js} +22 -8
- package/dist/chunk-QDYHSJT5.js.map +1 -0
- package/dist/{chunk-GWGDWZVN.js → chunk-RDL6QIQO.js} +2 -2
- package/dist/{chunk-BGNPKYBJ.js → chunk-S2IASCGW.js} +3 -3
- package/dist/{chunk-KKL6OICH.js → chunk-SER76PQ7.js} +2 -2
- package/dist/{chunk-6MFFKAU6.js → chunk-SMHZT6RM.js} +2 -2
- package/dist/{chunk-BYNVSWIQ.js → chunk-SQBYHWZU.js} +2 -2
- package/dist/{chunk-6Y67YHVH.js → chunk-VBVFE33M.js} +5 -5
- package/dist/{chunk-DBKCSQVH.js → chunk-VQGTYGZH.js} +2 -2
- package/dist/{chunk-25L5IXHA.js → chunk-VTAGUWXH.js} +2 -2
- package/dist/{chunk-HOOHJCE7.js → chunk-XF3JR72U.js} +3 -3
- package/dist/{chunk-VZPNRPXL.js → chunk-Y3I7SN5W.js} +61 -35
- package/dist/chunk-Y3I7SN5W.js.map +1 -0
- package/dist/{chunk-XACJ63U4.js → chunk-Z4XGSEKC.js} +577 -249
- package/dist/chunk-Z4XGSEKC.js.map +1 -0
- package/dist/{chunk-AUNNXJQE.js → chunk-ZGZLN4LH.js} +2 -2
- package/dist/connected-evidence.js +14 -14
- package/dist/dataset-workspaces.js +14 -14
- package/dist/experiment-evaluation-schedules.js +18 -18
- package/dist/experiment-improvements.js +7 -7
- package/dist/experiments.js +17 -17
- package/dist/index.js +34 -33
- package/dist/index.js.map +1 -1
- package/dist/learning.js +113 -9
- package/dist/learning.js.map +1 -1
- package/dist/model-projects.js +1 -1
- package/dist/model-starter-attempts.js +2 -2
- package/dist/model-starter-catalog.js +9 -9
- package/dist/model-starters.js +13 -9
- package/dist/model-taskset-runs.js +3 -3
- package/dist/post-training.js +6 -6
- package/dist/taskset-drafts.js +12 -12
- package/dist/taskset-packages.js +15 -15
- package/dist/training-bundle.js +81 -19
- package/dist/training-bundle.js.map +1 -1
- package/dist/training.js +39 -7
- package/dist/types/packages/cloud/src/sandbox/sandbox-instance-client.d.ts.map +1 -1
- package/dist/types/packages/cloud/src/sandbox/url.d.ts +3 -1
- package/dist/types/packages/cloud/src/sandbox/url.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/connected-evidence-client.d.ts +4 -0
- package/dist/types/packages/sdk/src/connected-evidence-client.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/dataset-preparation-workspace.d.ts +2 -0
- package/dist/types/packages/sdk/src/dataset-preparation-workspace.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/dataset-workspace-client.d.ts +14 -0
- package/dist/types/packages/sdk/src/dataset-workspace-client.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/dataset-workspace-contracts.d.ts +4 -0
- package/dist/types/packages/sdk/src/dataset-workspace-contracts.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/dataset-workspace-operations.d.ts +4 -0
- package/dist/types/packages/sdk/src/dataset-workspace-operations.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/learning-client.d.ts +1 -0
- package/dist/types/packages/sdk/src/learning-client.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/learning-correction-metrics.d.ts +358 -0
- package/dist/types/packages/sdk/src/learning-correction-metrics.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/learning.d.ts +1 -0
- package/dist/types/packages/sdk/src/learning.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/managed-training-preparation.d.ts +24 -0
- package/dist/types/packages/sdk/src/managed-training-preparation.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/model-learning-policy.d.ts +16 -0
- package/dist/types/packages/sdk/src/model-learning-policy.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/model-projects.d.ts +172 -0
- package/dist/types/packages/sdk/src/model-projects.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/model-starters.d.ts +84 -1
- package/dist/types/packages/sdk/src/model-starters.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/model-taskset-runs.d.ts +28 -28
- package/dist/types/packages/sdk/src/model-training-defaults.d.ts +14 -0
- package/dist/types/packages/sdk/src/model-training-defaults.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/post-training.d.ts +46 -0
- package/dist/types/packages/sdk/src/post-training.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/taskset-authored-files.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/taskset-authored-portable-release.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/taskset-draft-api-contracts.d.ts +4 -0
- package/dist/types/packages/sdk/src/taskset-draft-api-contracts.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/taskset-draft-client.d.ts +141 -120
- package/dist/types/packages/sdk/src/taskset-draft-client.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/taskset-draft-document.d.ts +4 -0
- package/dist/types/packages/sdk/src/taskset-draft-document.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/taskset-draft-source.d.ts +4 -0
- package/dist/types/packages/sdk/src/taskset-draft-source.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/taskset-draft-workspace.d.ts +4 -0
- package/dist/types/packages/sdk/src/taskset-draft-workspace.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/taskset-package-client.d.ts +51 -0
- package/dist/types/packages/sdk/src/taskset-package-client.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/taskset-package-contracts.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/taskset-package-projection.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/training-bundle.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/training-compute-selection.d.ts +52 -0
- package/dist/types/packages/sdk/src/training-compute-selection.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/training-estimates.d.ts +1069 -0
- package/dist/types/packages/sdk/src/training-estimates.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/training-learning-batch.d.ts +40 -40
- package/dist/types/packages/sdk/src/training-physical-placement.d.ts +16 -0
- package/dist/types/packages/sdk/src/training-physical-placement.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/training-preparations.d.ts +248 -0
- package/dist/types/packages/sdk/src/training-preparations.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/training-qualification-preparation.d.ts +20 -0
- package/dist/types/packages/sdk/src/training-qualification-preparation.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/training-queue.d.ts +24 -0
- package/dist/types/packages/sdk/src/training-queue.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/training-recipe-binding.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/training-recovery.d.ts +85 -0
- package/dist/types/packages/sdk/src/training-recovery.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/training-verifier-assets.d.ts +7 -0
- package/dist/types/packages/sdk/src/training-verifier-assets.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/training.d.ts +599 -0
- package/dist/types/packages/sdk/src/training.d.ts.map +1 -1
- package/package.json +3 -3
- package/dist/chunk-6KKM2XRR.js.map +0 -1
- package/dist/chunk-CAMLCKSF.js.map +0 -1
- package/dist/chunk-EJZ7HOIS.js.map +0 -1
- package/dist/chunk-FLNWE5ZA.js.map +0 -1
- package/dist/chunk-QFBSNSUL.js.map +0 -1
- package/dist/chunk-VZPNRPXL.js.map +0 -1
- package/dist/chunk-WQFU635Q.js.map +0 -1
- package/dist/chunk-XACJ63U4.js.map +0 -1
- package/dist/chunk-ZFYI4P6C.js.map +0 -1
- /package/dist/{chunk-T3MFWGMX.js.map → chunk-3VGTVZHL.js.map} +0 -0
- /package/dist/{chunk-O54KGALH.js.map → chunk-5T76GARR.js.map} +0 -0
- /package/dist/{chunk-MJELLVQP.js.map → chunk-B2MKB7NB.js.map} +0 -0
- /package/dist/{chunk-F4GITADW.js.map → chunk-ETFWUMEJ.js.map} +0 -0
- /package/dist/{chunk-6GQ3GIAP.js.map → chunk-HRZLFJXX.js.map} +0 -0
- /package/dist/{chunk-BJ5MKLWH.js.map → chunk-KD6MM67B.js.map} +0 -0
- /package/dist/{chunk-RE426Q7Y.js.map → chunk-LIMTJR3A.js.map} +0 -0
- /package/dist/{chunk-GWGDWZVN.js.map → chunk-RDL6QIQO.js.map} +0 -0
- /package/dist/{chunk-BGNPKYBJ.js.map → chunk-S2IASCGW.js.map} +0 -0
- /package/dist/{chunk-KKL6OICH.js.map → chunk-SER76PQ7.js.map} +0 -0
- /package/dist/{chunk-6MFFKAU6.js.map → chunk-SMHZT6RM.js.map} +0 -0
- /package/dist/{chunk-BYNVSWIQ.js.map → chunk-SQBYHWZU.js.map} +0 -0
- /package/dist/{chunk-6Y67YHVH.js.map → chunk-VBVFE33M.js.map} +0 -0
- /package/dist/{chunk-DBKCSQVH.js.map → chunk-VQGTYGZH.js.map} +0 -0
- /package/dist/{chunk-25L5IXHA.js.map → chunk-VTAGUWXH.js.map} +0 -0
- /package/dist/{chunk-HOOHJCE7.js.map → chunk-XF3JR72U.js.map} +0 -0
- /package/dist/{chunk-AUNNXJQE.js.map → chunk-ZGZLN4LH.js.map} +0 -0
|
@@ -3,7 +3,47 @@ import {
|
|
|
3
3
|
} from "./chunk-CL3IOOVL.js";
|
|
4
4
|
|
|
5
5
|
// src/model-projects.ts
|
|
6
|
+
import { z as z2 } from "zod";
|
|
7
|
+
|
|
8
|
+
// src/training-compute-selection.ts
|
|
6
9
|
import { z } from "zod";
|
|
10
|
+
var Id = z.string().trim().min(1).max(191);
|
|
11
|
+
var Hash = z.string().regex(/^[a-f0-9]{64}$/);
|
|
12
|
+
var TrainingGpuSelectionSchema = z.discriminatedUnion("mode", [
|
|
13
|
+
z.object({ mode: z.literal("automatic"), objective: z.enum(["balanced", "fast", "economical"]) }).strict(),
|
|
14
|
+
z.object({ mode: z.literal("manual"), availabilityId: Id, gpuType: z.string().trim().min(1).max(256) }).strict()
|
|
15
|
+
]);
|
|
16
|
+
var TrainingEstimateReviewSchema = z.object({
|
|
17
|
+
estimateId: Id,
|
|
18
|
+
inputHash: Hash,
|
|
19
|
+
requestHash: Hash,
|
|
20
|
+
pricingVersion: Id,
|
|
21
|
+
expiresAt: z.string().datetime({ offset: true }),
|
|
22
|
+
token: z.string().min(1).max(8192)
|
|
23
|
+
}).strict();
|
|
24
|
+
var TrainingGpuCatalogSchema = z.object({
|
|
25
|
+
schemaVersion: z.literal("openpond.trainingGpuCatalog.v1"),
|
|
26
|
+
observedAt: z.string().datetime({ offset: true }),
|
|
27
|
+
expiresAt: z.string().datetime({ offset: true }),
|
|
28
|
+
workerImageDigest: z.string().regex(/^sha256:[a-f0-9]{64}$/),
|
|
29
|
+
supportedLoraRanks: z.array(z.number().int().positive()),
|
|
30
|
+
pricingBasis: z.literal("accepted_compute_and_disk_hourly_before_credits"),
|
|
31
|
+
offerings: z.array(z.object({
|
|
32
|
+
availabilityId: Id,
|
|
33
|
+
gpuType: z.string().min(1).max(256),
|
|
34
|
+
provider: Id,
|
|
35
|
+
region: z.string().min(1),
|
|
36
|
+
dataCenterId: z.string().nullable(),
|
|
37
|
+
gpuCount: z.number().int().positive(),
|
|
38
|
+
gpuMemoryGb: z.number().positive(),
|
|
39
|
+
stockStatus: z.enum(["High", "Medium", "Low"]),
|
|
40
|
+
computeHourlyUsd: z.number().nonnegative(),
|
|
41
|
+
diskHourlyUsd: z.number().nonnegative(),
|
|
42
|
+
totalHourlyUsd: z.number().nonnegative()
|
|
43
|
+
}).strict()).max(1e3)
|
|
44
|
+
}).strict();
|
|
45
|
+
|
|
46
|
+
// src/model-projects.ts
|
|
7
47
|
import { assertBoundedTaskJson } from "@openpond/evals/task-schema";
|
|
8
48
|
|
|
9
49
|
// src/protocol.ts
|
|
@@ -107,26 +147,26 @@ function normalizeCanonicalJson(value) {
|
|
|
107
147
|
}
|
|
108
148
|
|
|
109
149
|
// src/model-projects.ts
|
|
110
|
-
var IdSchema =
|
|
111
|
-
var HashSchema =
|
|
112
|
-
var TimestampSchema =
|
|
113
|
-
var ModelProjectImmutableRefSchema =
|
|
150
|
+
var IdSchema = z2.string().trim().min(1).max(500);
|
|
151
|
+
var HashSchema = z2.string().regex(/^[a-f0-9]{64}$/);
|
|
152
|
+
var TimestampSchema = z2.string().datetime({ offset: true });
|
|
153
|
+
var ModelProjectImmutableRefSchema = z2.object({
|
|
114
154
|
id: IdSchema,
|
|
115
155
|
contentHash: HashSchema
|
|
116
156
|
}).strict();
|
|
117
157
|
var ModelProjectVersionedRefSchema = ModelProjectImmutableRefSchema.extend({
|
|
118
|
-
revision:
|
|
158
|
+
revision: z2.number().int().positive()
|
|
119
159
|
}).strict();
|
|
120
|
-
var ModelProjectBaseModelSchema =
|
|
121
|
-
schemaVersion:
|
|
160
|
+
var ModelProjectBaseModelSchema = z2.object({
|
|
161
|
+
schemaVersion: z2.literal("openpond.baseModelPreference.v1"),
|
|
122
162
|
modelId: IdSchema,
|
|
123
|
-
revision:
|
|
124
|
-
tokenizerRevision:
|
|
125
|
-
chatTemplateHash:
|
|
163
|
+
revision: z2.string().trim().min(1).max(256).nullable(),
|
|
164
|
+
tokenizerRevision: z2.string().trim().min(1).max(256).nullable(),
|
|
165
|
+
chatTemplateHash: z2.string().trim().min(8).max(256).nullable(),
|
|
126
166
|
modelAssetId: IdSchema.nullable(),
|
|
127
|
-
source:
|
|
167
|
+
source: z2.enum(["managed", "local", "builtin"])
|
|
128
168
|
}).strict();
|
|
129
|
-
var ModelProjectTrainingMethodSchema =
|
|
169
|
+
var ModelProjectTrainingMethodSchema = z2.enum([
|
|
130
170
|
"sft",
|
|
131
171
|
"dpo",
|
|
132
172
|
"grpo",
|
|
@@ -136,25 +176,25 @@ var ModelProjectTrainingMethodSchema = z.enum([
|
|
|
136
176
|
"opsd",
|
|
137
177
|
"sdpo"
|
|
138
178
|
]);
|
|
139
|
-
var ModelProjectRecipeDocumentSchema =
|
|
140
|
-
schemaVersion:
|
|
179
|
+
var ModelProjectRecipeDocumentSchema = z2.object({
|
|
180
|
+
schemaVersion: z2.string().regex(/^openpond\.[A-Za-z0-9]+Recipe\.v\d+$/),
|
|
141
181
|
method: ModelProjectTrainingMethodSchema,
|
|
142
|
-
parameterization:
|
|
143
|
-
}).catchall(
|
|
144
|
-
var ModelProfileSourceSelectionSchema =
|
|
182
|
+
parameterization: z2.enum(["lora", "full"])
|
|
183
|
+
}).catchall(z2.unknown());
|
|
184
|
+
var ModelProfileSourceSelectionSchema = z2.object({
|
|
145
185
|
profileProjectId: IdSchema,
|
|
146
|
-
sourceRevision:
|
|
186
|
+
sourceRevision: z2.string().regex(/^[a-f0-9]{40,64}$/),
|
|
147
187
|
harnessRelease: ModelProjectImmutableRefSchema
|
|
148
188
|
}).strict();
|
|
149
|
-
var ModelProfileEvaluationSelectionSchema =
|
|
189
|
+
var ModelProfileEvaluationSelectionSchema = z2.object({
|
|
150
190
|
profileProjectId: IdSchema,
|
|
151
|
-
sourceRevision:
|
|
191
|
+
sourceRevision: z2.string().regex(/^[a-f0-9]{40,64}$/),
|
|
152
192
|
catalogHash: HashSchema,
|
|
153
193
|
definitionId: IdSchema,
|
|
154
194
|
harnessRelease: ModelProjectImmutableRefSchema,
|
|
155
195
|
tasksetRelease: ModelProjectImmutableRefSchema
|
|
156
196
|
}).strict();
|
|
157
|
-
var ModelProjectTrainingSetupSchema =
|
|
197
|
+
var ModelProjectTrainingSetupSchema = z2.object({
|
|
158
198
|
tasksetRef: ModelProjectVersionedRefSchema.nullable().default(null),
|
|
159
199
|
evaluationTasksetRef: ModelProjectVersionedRefSchema.nullable().optional(),
|
|
160
200
|
profileSource: ModelProfileSourceSelectionSchema.nullable().optional(),
|
|
@@ -165,31 +205,33 @@ var ModelProjectTrainingSetupSchema = z.object({
|
|
|
165
205
|
baseModel: ModelProjectBaseModelSchema.nullable().default(null),
|
|
166
206
|
method: ModelProjectTrainingMethodSchema.nullable().default(null),
|
|
167
207
|
destinationId: IdSchema.nullable().default(null),
|
|
168
|
-
managedRolloutPlacement:
|
|
169
|
-
managedGpuPlacementObjective:
|
|
170
|
-
|
|
171
|
-
|
|
208
|
+
managedRolloutPlacement: z2.enum(["local", "remote"]).default("remote"),
|
|
209
|
+
managedGpuPlacementObjective: z2.enum(["fast", "balanced", "economical"]).default("balanced"),
|
|
210
|
+
managedGpuSelection: TrainingGpuSelectionSchema.optional(),
|
|
211
|
+
continuationAdapterMode: z2.enum(["residual_append", "shared", "sequential_merge"]).optional(),
|
|
212
|
+
managedGpuRequirement: z2.enum(["any", "h100_hbm3"]).default("any"),
|
|
213
|
+
runPreset: z2.enum(["small", "standard", "custom", "small_experiment"]).nullable().default(null),
|
|
172
214
|
recipe: ModelProjectRecipeDocumentSchema.nullable().default(null),
|
|
173
|
-
preferredMaximumSpendUsd:
|
|
174
|
-
preferredRetentionDays:
|
|
215
|
+
preferredMaximumSpendUsd: z2.number().nonnegative().nullable().default(null),
|
|
216
|
+
preferredRetentionDays: z2.number().int().nonnegative().nullable().default(null)
|
|
175
217
|
}).strict();
|
|
176
218
|
var HostedModelProjectTrainingSetupSchema = ModelProjectTrainingSetupSchema;
|
|
177
|
-
var HostedModelProjectLinkSchema =
|
|
178
|
-
schemaVersion:
|
|
179
|
-
apiOrigin:
|
|
219
|
+
var HostedModelProjectLinkSchema = z2.object({
|
|
220
|
+
schemaVersion: z2.literal("openpond.hostedModelProjectLink.v1"),
|
|
221
|
+
apiOrigin: z2.string().url().refine((value) => new URL(value).origin === value, "Use a canonical API origin.").nullable().default(null),
|
|
180
222
|
teamId: IdSchema,
|
|
181
223
|
projectId: IdSchema,
|
|
182
224
|
portableProjectId: IdSchema,
|
|
183
|
-
revision:
|
|
225
|
+
revision: z2.number().int().positive(),
|
|
184
226
|
etag: HashSchema,
|
|
185
|
-
syncedSourceRevision:
|
|
227
|
+
syncedSourceRevision: z2.number().int().positive(),
|
|
186
228
|
syncedAt: TimestampSchema,
|
|
187
|
-
tasksets:
|
|
188
|
-
|
|
229
|
+
tasksets: z2.array(
|
|
230
|
+
z2.object({
|
|
189
231
|
localTasksetId: IdSchema,
|
|
190
232
|
localTasksetHash: HashSchema.nullable().default(null),
|
|
191
233
|
releaseId: IdSchema,
|
|
192
|
-
releaseRevision:
|
|
234
|
+
releaseRevision: z2.number().int().positive(),
|
|
193
235
|
releaseHash: HashSchema,
|
|
194
236
|
packageHash: HashSchema.nullable().default(null),
|
|
195
237
|
hostedTasksetId: IdSchema,
|
|
@@ -197,29 +239,29 @@ var HostedModelProjectLinkSchema = z.object({
|
|
|
197
239
|
}).strict()
|
|
198
240
|
).max(1e4).default([])
|
|
199
241
|
}).strict();
|
|
200
|
-
var ModelProjectTasksetSyncSchema =
|
|
242
|
+
var ModelProjectTasksetSyncSchema = z2.object({
|
|
201
243
|
localTasksetId: IdSchema,
|
|
202
244
|
releaseId: IdSchema,
|
|
203
|
-
releaseRevision:
|
|
245
|
+
releaseRevision: z2.number().int().positive(),
|
|
204
246
|
releaseHash: HashSchema,
|
|
205
|
-
state:
|
|
247
|
+
state: z2.enum(["syncing", "synced", "sync_failed"]),
|
|
206
248
|
hostedTasksetId: IdSchema.nullable().default(null),
|
|
207
249
|
lastAttemptAt: TimestampSchema,
|
|
208
250
|
syncedAt: TimestampSchema.nullable().default(null),
|
|
209
|
-
lastError:
|
|
251
|
+
lastError: z2.string().trim().min(1).max(5e3).nullable().default(null)
|
|
210
252
|
}).strict();
|
|
211
|
-
var ModelProjectSchema =
|
|
212
|
-
schemaVersion:
|
|
253
|
+
var ModelProjectSchema = z2.object({
|
|
254
|
+
schemaVersion: z2.literal("openpond.modelProject.v2"),
|
|
213
255
|
id: IdSchema,
|
|
214
256
|
profileId: IdSchema,
|
|
215
|
-
revision:
|
|
216
|
-
name:
|
|
217
|
-
objective:
|
|
257
|
+
revision: z2.number().int().positive().default(1),
|
|
258
|
+
name: z2.string().trim().min(1).max(200),
|
|
259
|
+
objective: z2.string().trim().max(5e3).nullable(),
|
|
218
260
|
defaultBaseModel: ModelProjectBaseModelSchema.nullable(),
|
|
219
261
|
defaultDestinationId: IdSchema.nullable(),
|
|
220
262
|
trainingSetup: ModelProjectTrainingSetupSchema,
|
|
221
263
|
hosted: HostedModelProjectLinkSchema.nullable().default(null),
|
|
222
|
-
tasksetSyncs:
|
|
264
|
+
tasksetSyncs: z2.array(ModelProjectTasksetSyncSchema).max(1e4).default([]),
|
|
223
265
|
createdAt: TimestampSchema,
|
|
224
266
|
updatedAt: TimestampSchema
|
|
225
267
|
}).strict();
|
|
@@ -232,34 +274,34 @@ var ModelProjectEditableSchema = ModelProjectSchema.pick({
|
|
|
232
274
|
defaultDestinationId: true,
|
|
233
275
|
trainingSetup: true
|
|
234
276
|
});
|
|
235
|
-
var ModelProjectSaveRequestSchema =
|
|
236
|
-
schemaVersion:
|
|
277
|
+
var ModelProjectSaveRequestSchema = z2.object({
|
|
278
|
+
schemaVersion: z2.literal("openpond.modelProjectSave.v1"),
|
|
237
279
|
operationId: IdSchema,
|
|
238
|
-
expectedRevision:
|
|
280
|
+
expectedRevision: z2.number().int().nonnegative(),
|
|
239
281
|
project: ModelProjectEditableSchema,
|
|
240
282
|
learning: ModelInitialLearningSchema.optional()
|
|
241
283
|
}).strict().superRefine((value, context) => {
|
|
242
284
|
if (value.learning && value.expectedRevision !== 0) context.addIssue({ code: "custom", path: ["learning"], message: "Use learning settings to edit an existing Model's policy." });
|
|
243
285
|
});
|
|
244
|
-
var ModelProjectConfigurationCheckSchema =
|
|
245
|
-
schemaVersion:
|
|
286
|
+
var ModelProjectConfigurationCheckSchema = z2.object({
|
|
287
|
+
schemaVersion: z2.literal("openpond.modelProjectConfigurationCheck.v1"),
|
|
246
288
|
configurationHash: HashSchema,
|
|
247
289
|
projectId: IdSchema,
|
|
248
|
-
expectedRevision:
|
|
290
|
+
expectedRevision: z2.number().int().nonnegative(),
|
|
249
291
|
checkedAt: TimestampSchema,
|
|
250
|
-
canSave:
|
|
251
|
-
deferred:
|
|
252
|
-
findings:
|
|
292
|
+
canSave: z2.boolean(),
|
|
293
|
+
deferred: z2.array(z2.enum(["base_model", "taskset"])).max(2),
|
|
294
|
+
findings: z2.array(z2.object({
|
|
253
295
|
code: IdSchema,
|
|
254
|
-
severity:
|
|
255
|
-
message:
|
|
256
|
-
field:
|
|
296
|
+
severity: z2.enum(["error", "warning"]),
|
|
297
|
+
message: z2.string().min(1).max(5e3),
|
|
298
|
+
field: z2.string().min(1).max(500).nullable()
|
|
257
299
|
}).strict()).max(100)
|
|
258
300
|
}).strict();
|
|
259
|
-
var ModelProjectBaseModelCandidateSchema =
|
|
301
|
+
var ModelProjectBaseModelCandidateSchema = z2.object({
|
|
260
302
|
id: IdSchema,
|
|
261
|
-
name:
|
|
262
|
-
available:
|
|
303
|
+
name: z2.string().min(1).max(500),
|
|
304
|
+
available: z2.boolean(),
|
|
263
305
|
preference: ModelProjectBaseModelSchema
|
|
264
306
|
}).strict();
|
|
265
307
|
async function modelProjectConfigurationHash(request) {
|
|
@@ -295,36 +337,36 @@ async function createModelProjectSaveRequest(project, expectedRevision, learning
|
|
|
295
337
|
...initialLearning ? { learning: initialLearning } : {}
|
|
296
338
|
});
|
|
297
339
|
}
|
|
298
|
-
var HostedModelProjectSyncSchema =
|
|
299
|
-
schemaVersion:
|
|
340
|
+
var HostedModelProjectSyncSchema = z2.object({
|
|
341
|
+
schemaVersion: z2.literal("openpond.hostedModelProjectSync.v2"),
|
|
300
342
|
portableProjectId: IdSchema,
|
|
301
|
-
name:
|
|
302
|
-
objective:
|
|
343
|
+
name: z2.string().trim().min(1).max(200),
|
|
344
|
+
objective: z2.string().trim().max(5e3).nullable(),
|
|
303
345
|
defaultBaseModel: ModelProjectBaseModelSchema.nullable(),
|
|
304
346
|
defaultDestinationId: IdSchema.nullable(),
|
|
305
347
|
trainingSetup: HostedModelProjectTrainingSetupSchema,
|
|
306
|
-
sourceRevision:
|
|
348
|
+
sourceRevision: z2.number().int().positive(),
|
|
307
349
|
sourceUpdatedAt: TimestampSchema,
|
|
308
350
|
expectedEtag: HashSchema.nullable().default(null)
|
|
309
351
|
}).strict();
|
|
310
|
-
var HostedModelProjectSummarySchema =
|
|
352
|
+
var HostedModelProjectSummarySchema = z2.object({
|
|
311
353
|
id: IdSchema,
|
|
312
354
|
teamId: IdSchema,
|
|
313
355
|
portableProjectId: IdSchema,
|
|
314
|
-
name:
|
|
315
|
-
objective:
|
|
356
|
+
name: z2.string().trim().min(1).max(200),
|
|
357
|
+
objective: z2.string().trim().max(5e3).nullable(),
|
|
316
358
|
defaultBaseModel: ModelProjectBaseModelSchema.nullable(),
|
|
317
359
|
defaultDestinationId: IdSchema.nullable(),
|
|
318
360
|
trainingSetup: HostedModelProjectTrainingSetupSchema,
|
|
319
|
-
sourceRevision:
|
|
361
|
+
sourceRevision: z2.number().int().positive(),
|
|
320
362
|
sourceUpdatedAt: TimestampSchema,
|
|
321
|
-
revision:
|
|
363
|
+
revision: z2.number().int().positive(),
|
|
322
364
|
etag: HashSchema,
|
|
323
365
|
createdAt: TimestampSchema,
|
|
324
366
|
updatedAt: TimestampSchema
|
|
325
367
|
}).strict();
|
|
326
|
-
var ModelProjectResourceSummarySchema =
|
|
327
|
-
kind:
|
|
368
|
+
var ModelProjectResourceSummarySchema = z2.object({
|
|
369
|
+
kind: z2.enum([
|
|
328
370
|
"taskset_release",
|
|
329
371
|
"harness_release",
|
|
330
372
|
"dataset_release",
|
|
@@ -334,22 +376,22 @@ var ModelProjectResourceSummarySchema = z.object({
|
|
|
334
376
|
"evaluation_receipt"
|
|
335
377
|
]),
|
|
336
378
|
ref: ModelProjectImmutableRefSchema,
|
|
337
|
-
role:
|
|
379
|
+
role: z2.string().trim().min(1).max(200).nullable().default(null),
|
|
338
380
|
updatedAt: TimestampSchema
|
|
339
381
|
}).strict();
|
|
340
|
-
var HostedModelProjectDetailSchema =
|
|
382
|
+
var HostedModelProjectDetailSchema = z2.object({
|
|
341
383
|
project: HostedModelProjectSummarySchema,
|
|
342
|
-
resources:
|
|
343
|
-
jobCount:
|
|
344
|
-
latestJobIds:
|
|
384
|
+
resources: z2.array(ModelProjectResourceSummarySchema).max(1e4),
|
|
385
|
+
jobCount: z2.number().int().nonnegative(),
|
|
386
|
+
latestJobIds: z2.array(IdSchema).max(100)
|
|
345
387
|
}).strict();
|
|
346
|
-
var ModelProjectApiErrorSchema =
|
|
347
|
-
schemaVersion:
|
|
348
|
-
code:
|
|
349
|
-
message:
|
|
350
|
-
retryable:
|
|
351
|
-
requestId:
|
|
352
|
-
details:
|
|
388
|
+
var ModelProjectApiErrorSchema = z2.object({
|
|
389
|
+
schemaVersion: z2.literal("openpond.modelProjectApiError.v2"),
|
|
390
|
+
code: z2.string().trim().min(1).max(200),
|
|
391
|
+
message: z2.string().trim().min(1).max(5e3),
|
|
392
|
+
retryable: z2.boolean().default(false),
|
|
393
|
+
requestId: z2.string().trim().min(1).max(500).nullable().default(null),
|
|
394
|
+
details: z2.record(z2.string(), z2.unknown()).default({})
|
|
353
395
|
}).strict();
|
|
354
396
|
var OpenPondModelProjectApiError = class extends Error {
|
|
355
397
|
status;
|
|
@@ -407,7 +449,7 @@ function createModelProjectsClient(input) {
|
|
|
407
449
|
}
|
|
408
450
|
return {
|
|
409
451
|
async configurationCandidates() {
|
|
410
|
-
return
|
|
452
|
+
return z2.object({ candidates: z2.array(ModelProjectBaseModelCandidateSchema).max(1e3) }).strict().parse(
|
|
411
453
|
await request("/v1/model-projects/configuration/candidates", { headers: { accept: "application/json" } })
|
|
412
454
|
).candidates;
|
|
413
455
|
},
|
|
@@ -444,7 +486,7 @@ function createModelProjectsClient(input) {
|
|
|
444
486
|
},
|
|
445
487
|
async list() {
|
|
446
488
|
const body = await request("/v1/model-projects");
|
|
447
|
-
return
|
|
489
|
+
return z2.array(HostedModelProjectSummarySchema).parse(unwrapObject(body, "projects"));
|
|
448
490
|
},
|
|
449
491
|
async get(projectId) {
|
|
450
492
|
const body = await request(
|
|
@@ -460,6 +502,9 @@ function unwrapObject(value, key) {
|
|
|
460
502
|
}
|
|
461
503
|
|
|
462
504
|
export {
|
|
505
|
+
TrainingGpuSelectionSchema,
|
|
506
|
+
TrainingEstimateReviewSchema,
|
|
507
|
+
TrainingGpuCatalogSchema,
|
|
463
508
|
OPENPOND_TRAINING_PROTOCOL_MAJOR,
|
|
464
509
|
OPENPOND_TRAINING_MEDIA_TYPE,
|
|
465
510
|
OPENPOND_MODEL_PROJECT_MEDIA_TYPE,
|
|
@@ -501,4 +546,4 @@ export {
|
|
|
501
546
|
OpenPondModelProjectApiError,
|
|
502
547
|
createModelProjectsClient
|
|
503
548
|
};
|
|
504
|
-
//# sourceMappingURL=chunk-
|
|
549
|
+
//# sourceMappingURL=chunk-3SIGXGAE.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/model-projects.ts","../src/training-compute-selection.ts","../src/protocol.ts"],"sourcesContent":["import { z } from \"zod\";\nimport { TrainingGpuSelectionSchema } from \"./training-compute-selection.js\";\nimport { ModelInitialLearningSchema, type ModelInitialLearning } from \"./model-learning-intent.js\";\nexport { ModelInitialLearningSchema, type ModelInitialLearning } from \"./model-learning-intent.js\";\nimport { assertBoundedTaskJson } from \"@openpond/evals/task-schema\";\n\nimport {\n MODEL_PROJECT_API_RESPONSE_MAX_BYTES,\n MODEL_PROJECT_SYNC_MAX_BYTES,\n OPENPOND_MODEL_PROJECT_MEDIA_TYPE,\n OpenPondProtocolError,\n assertCanonicalPayloadSize,\n canonicalSha256,\n parseBoundedJson,\n} from \"./protocol.js\";\n\nexport {\n MODEL_PROJECT_API_RESPONSE_MAX_BYTES,\n MODEL_PROJECT_SYNC_MAX_BYTES,\n OPENPOND_MODEL_PROJECT_MEDIA_TYPE,\n} from \"./protocol.js\";\n\nconst IdSchema = z.string().trim().min(1).max(500);\nconst HashSchema = z.string().regex(/^[a-f0-9]{64}$/);\nconst TimestampSchema = z.string().datetime({ offset: true });\n\nexport const ModelProjectImmutableRefSchema = z\n .object({\n id: IdSchema,\n contentHash: HashSchema,\n })\n .strict();\n\nexport const ModelProjectVersionedRefSchema =\n ModelProjectImmutableRefSchema.extend({\n revision: z.number().int().positive(),\n }).strict();\n\nexport const ModelProjectBaseModelSchema = z\n .object({\n schemaVersion: z.literal(\"openpond.baseModelPreference.v1\"),\n modelId: IdSchema,\n revision: z.string().trim().min(1).max(256).nullable(),\n tokenizerRevision: z.string().trim().min(1).max(256).nullable(),\n chatTemplateHash: z.string().trim().min(8).max(256).nullable(),\n modelAssetId: IdSchema.nullable(),\n source: z.enum([\"managed\", \"local\", \"builtin\"]),\n })\n .strict();\n\nexport const ModelProjectTrainingMethodSchema = z.enum([\n \"sft\",\n \"dpo\",\n \"grpo\",\n \"ppo\",\n \"sdft\",\n \"opd\",\n \"opsd\",\n \"sdpo\",\n]);\n\n/**\n * A versioned recipe document stored while a Project is still mutable.\n * The training endpoint validates the selected recipe version in full before\n * accepting an immutable Job; Project sync preserves newer recipe fields.\n */\nexport const ModelProjectRecipeDocumentSchema = z\n .object({\n schemaVersion: z.string().regex(/^openpond\\.[A-Za-z0-9]+Recipe\\.v\\d+$/),\n method: ModelProjectTrainingMethodSchema,\n parameterization: z.enum([\"lora\", \"full\"]),\n })\n .catchall(z.unknown());\n\n/** The published Profile source selected for this Model's Harness. */\nexport const ModelProfileSourceSelectionSchema = z.object({\n profileProjectId: IdSchema,\n sourceRevision: z.string().regex(/^[a-f0-9]{40,64}$/),\n harnessRelease: ModelProjectImmutableRefSchema,\n}).strict();\n\n/** A held-out check selected from an exact released Profile catalog. Its\n * Taskset and grader stay in the evaluation runtime, outside training input. */\nexport const ModelProfileEvaluationSelectionSchema = z.object({\n profileProjectId: IdSchema,\n sourceRevision: z.string().regex(/^[a-f0-9]{40,64}$/),\n catalogHash: HashSchema,\n definitionId: IdSchema,\n harnessRelease: ModelProjectImmutableRefSchema,\n tasksetRelease: ModelProjectImmutableRefSchema,\n}).strict();\n\nexport const ModelProjectTrainingSetupSchema = z\n .object({\n tasksetRef: ModelProjectVersionedRefSchema.nullable().default(null),\n evaluationTasksetRef: ModelProjectVersionedRefSchema.nullable().optional(),\n profileSource: ModelProfileSourceSelectionSchema.nullable().optional(),\n profileEvaluation: ModelProfileEvaluationSelectionSchema.nullable().optional(),\n rewardBindingRef: ModelProjectVersionedRefSchema.nullable().optional(),\n tasksetRelease: ModelProjectImmutableRefSchema.nullable().default(null),\n harnessRelease: ModelProjectImmutableRefSchema.nullable().default(null),\n baseModel: ModelProjectBaseModelSchema.nullable().default(null),\n method: ModelProjectTrainingMethodSchema.nullable().default(null),\n destinationId: IdSchema.nullable().default(null),\n managedRolloutPlacement: z\n .enum([\"local\", \"remote\"])\n .default(\"remote\"),\n managedGpuPlacementObjective: z\n .enum([\"fast\", \"balanced\", \"economical\"])\n .default(\"balanced\"),\n managedGpuSelection: TrainingGpuSelectionSchema.optional(),\n continuationAdapterMode: z.enum([\"residual_append\", \"shared\", \"sequential_merge\"]).optional(),\n managedGpuRequirement: z\n .enum([\"any\", \"h100_hbm3\"])\n .default(\"any\"),\n runPreset: z\n .enum([\"small\", \"standard\", \"custom\", \"small_experiment\"])\n .nullable()\n .default(null),\n recipe: ModelProjectRecipeDocumentSchema.nullable().default(null),\n preferredMaximumSpendUsd: z.number().nonnegative().nullable().default(null),\n preferredRetentionDays: z\n .number()\n .int()\n .nonnegative()\n .nullable()\n .default(null),\n })\n .strict();\n\nexport const HostedModelProjectTrainingSetupSchema =\n ModelProjectTrainingSetupSchema;\n\nexport const HostedModelProjectLinkSchema = z\n .object({\n schemaVersion: z.literal(\"openpond.hostedModelProjectLink.v1\"),\n apiOrigin: z.string().url().refine(value => new URL(value).origin === value, \"Use a canonical API origin.\").nullable().default(null),\n teamId: IdSchema,\n projectId: IdSchema,\n portableProjectId: IdSchema,\n revision: z.number().int().positive(),\n etag: HashSchema,\n syncedSourceRevision: z.number().int().positive(),\n syncedAt: TimestampSchema,\n tasksets: z\n .array(\n z\n .object({\n localTasksetId: IdSchema,\n localTasksetHash: HashSchema.nullable().default(null),\n releaseId: IdSchema,\n releaseRevision: z.number().int().positive(),\n releaseHash: HashSchema,\n packageHash: HashSchema.nullable().default(null),\n hostedTasksetId: IdSchema,\n syncedAt: TimestampSchema,\n })\n .strict(),\n )\n .max(10_000)\n .default([]),\n })\n .strict();\n\nexport const ModelProjectTasksetSyncSchema = z\n .object({\n localTasksetId: IdSchema,\n releaseId: IdSchema,\n releaseRevision: z.number().int().positive(),\n releaseHash: HashSchema,\n state: z.enum([\"syncing\", \"synced\", \"sync_failed\"]),\n hostedTasksetId: IdSchema.nullable().default(null),\n lastAttemptAt: TimestampSchema,\n syncedAt: TimestampSchema.nullable().default(null),\n lastError: z.string().trim().min(1).max(5_000).nullable().default(null),\n })\n .strict();\n\nexport const ModelProjectSchema = z\n .object({\n schemaVersion: z.literal(\"openpond.modelProject.v2\"),\n id: IdSchema,\n profileId: IdSchema,\n revision: z.number().int().positive().default(1),\n name: z.string().trim().min(1).max(200),\n objective: z.string().trim().max(5_000).nullable(),\n defaultBaseModel: ModelProjectBaseModelSchema.nullable(),\n defaultDestinationId: IdSchema.nullable(),\n trainingSetup: ModelProjectTrainingSetupSchema,\n hosted: HostedModelProjectLinkSchema.nullable().default(null),\n tasksetSyncs: z\n .array(ModelProjectTasksetSyncSchema)\n .max(10_000)\n .default([]),\n createdAt: TimestampSchema,\n updatedAt: TimestampSchema,\n })\n .strict();\n\n/** User-editable configuration. Execution and hosting receipts are server-owned. */\nexport const ModelProjectEditableSchema = ModelProjectSchema.pick({\n id: true,\n profileId: true,\n name: true,\n objective: true,\n defaultBaseModel: true,\n defaultDestinationId: true,\n trainingSetup: true,\n});\n\n/** Zero creates a new Model; a positive revision updates that exact revision. */\nexport const ModelProjectSaveRequestSchema = z.object({\n schemaVersion: z.literal(\"openpond.modelProjectSave.v1\"),\n operationId: IdSchema,\n expectedRevision: z.number().int().nonnegative(),\n project: ModelProjectEditableSchema,\n learning: ModelInitialLearningSchema.optional(),\n}).strict().superRefine((value, context) => {\n if (value.learning && value.expectedRevision !== 0) context.addIssue({ code: \"custom\", path: [\"learning\"], message: \"Use learning settings to edit an existing Model's policy.\" });\n});\n\nexport type ModelProjectSaveRequest = z.infer<typeof ModelProjectSaveRequestSchema>;\n\n/** A read-only configuration check; it does not establish training or grader quality. */\nexport const ModelProjectConfigurationCheckSchema = z.object({\n schemaVersion: z.literal(\"openpond.modelProjectConfigurationCheck.v1\"),\n configurationHash: HashSchema,\n projectId: IdSchema,\n expectedRevision: z.number().int().nonnegative(),\n checkedAt: TimestampSchema,\n canSave: z.boolean(),\n deferred: z.array(z.enum([\"base_model\", \"taskset\"])).max(2),\n findings: z.array(z.object({\n code: IdSchema,\n severity: z.enum([\"error\", \"warning\"]),\n message: z.string().min(1).max(5000),\n field: z.string().min(1).max(500).nullable(),\n }).strict()).max(100),\n}).strict();\n\nexport type ModelProjectConfigurationCheck = z.infer<typeof ModelProjectConfigurationCheckSchema>;\n\nexport const ModelProjectBaseModelCandidateSchema = z.object({\n id: IdSchema, name: z.string().min(1).max(500), available: z.boolean(), preference: ModelProjectBaseModelSchema,\n}).strict();\n\nexport async function modelProjectConfigurationHash(request: ModelProjectSaveRequest): Promise<string> {\n const parsed = parseModelProjectSaveRequest(request);\n return canonicalSha256({ project: parsed.project, expectedRevision: parsed.expectedRevision, ...(parsed.learning ? { learning: parsed.learning } : {}) });\n}\n\nexport function parseModelProjectSaveRequest(value: unknown): ModelProjectSaveRequest {\n try {\n assertBoundedTaskJson(value, MODEL_PROJECT_SYNC_MAX_BYTES);\n } catch {\n throw new OpenPondModelProjectApiError(400, {\n schemaVersion: \"openpond.modelProjectApiError.v2\", code: \"model_configuration_json_invalid\",\n message: \"Model configuration must be bounded JSON data.\", retryable: false, requestId: null, details: {},\n });\n }\n return ModelProjectSaveRequestSchema.parse(value);\n}\n\n/** Stable across transport retries; excludes server-owned revision/timestamps. */\nexport async function createModelProjectSaveRequest(\n project: z.input<typeof ModelProjectEditableSchema>,\n expectedRevision: number,\n learning?: ModelInitialLearning,\n): Promise<ModelProjectSaveRequest> {\n assertBoundedTaskJson(project, MODEL_PROJECT_SYNC_MAX_BYTES);\n const editable = ModelProjectEditableSchema.parse(project);\n assertCanonicalPayloadSize(editable, MODEL_PROJECT_SYNC_MAX_BYTES, \"Model configuration\");\n const initialLearning = learning ? ModelInitialLearningSchema.parse(learning) : undefined;\n const hash = await canonicalSha256({ project: editable, expectedRevision, ...(initialLearning ? { learning: initialLearning } : {}) });\n return parseModelProjectSaveRequest({\n schemaVersion: \"openpond.modelProjectSave.v1\",\n operationId: `model-save:${hash}`,\n expectedRevision,\n project: editable,\n ...(initialLearning ? { learning: initialLearning } : {}),\n });\n}\n\nexport const HostedModelProjectSyncSchema = z\n .object({\n schemaVersion: z.literal(\"openpond.hostedModelProjectSync.v2\"),\n portableProjectId: IdSchema,\n name: z.string().trim().min(1).max(200),\n objective: z.string().trim().max(5_000).nullable(),\n defaultBaseModel: ModelProjectBaseModelSchema.nullable(),\n defaultDestinationId: IdSchema.nullable(),\n trainingSetup: HostedModelProjectTrainingSetupSchema,\n sourceRevision: z.number().int().positive(),\n sourceUpdatedAt: TimestampSchema,\n expectedEtag: HashSchema.nullable().default(null),\n })\n .strict();\n\nexport const HostedModelProjectSummarySchema = z\n .object({\n id: IdSchema,\n teamId: IdSchema,\n portableProjectId: IdSchema,\n name: z.string().trim().min(1).max(200),\n objective: z.string().trim().max(5_000).nullable(),\n defaultBaseModel: ModelProjectBaseModelSchema.nullable(),\n defaultDestinationId: IdSchema.nullable(),\n trainingSetup: HostedModelProjectTrainingSetupSchema,\n sourceRevision: z.number().int().positive(),\n sourceUpdatedAt: TimestampSchema,\n revision: z.number().int().positive(),\n etag: HashSchema,\n createdAt: TimestampSchema,\n updatedAt: TimestampSchema,\n })\n .strict();\n\nexport const ModelProjectResourceSummarySchema = z\n .object({\n kind: z.enum([\n \"taskset_release\",\n \"harness_release\",\n \"dataset_release\",\n \"evidence_set\",\n \"model_version\",\n \"reward_model_version\",\n \"evaluation_receipt\",\n ]),\n ref: ModelProjectImmutableRefSchema,\n role: z.string().trim().min(1).max(200).nullable().default(null),\n updatedAt: TimestampSchema,\n })\n .strict();\n\nexport const HostedModelProjectDetailSchema = z\n .object({\n project: HostedModelProjectSummarySchema,\n resources: z.array(ModelProjectResourceSummarySchema).max(10_000),\n jobCount: z.number().int().nonnegative(),\n latestJobIds: z.array(IdSchema).max(100),\n })\n .strict();\n\nexport const ModelProjectApiErrorSchema = z\n .object({\n schemaVersion: z.literal(\"openpond.modelProjectApiError.v2\"),\n code: z.string().trim().min(1).max(200),\n message: z.string().trim().min(1).max(5_000),\n retryable: z.boolean().default(false),\n requestId: z.string().trim().min(1).max(500).nullable().default(null),\n details: z.record(z.string(), z.unknown()).default({}),\n })\n .strict();\n\nexport class OpenPondModelProjectApiError extends Error {\n readonly status: number;\n readonly code: string;\n readonly retryable: boolean;\n readonly requestId: string | null;\n readonly details: Record<string, unknown>;\n\n constructor(status: number, error: z.infer<typeof ModelProjectApiErrorSchema>) {\n super(error.message);\n this.name = \"OpenPondModelProjectApiError\";\n this.status = status;\n this.code = error.code;\n this.retryable = error.retryable;\n this.requestId = error.requestId;\n this.details = error.details;\n }\n}\n\nexport type ModelProject = z.infer<typeof ModelProjectSchema>;\nexport type ModelProjectTrainingSetup = z.infer<\n typeof ModelProjectTrainingSetupSchema\n>;\nexport type HostedModelProjectSync = z.infer<\n typeof HostedModelProjectSyncSchema\n>;\nexport type HostedModelProjectSummary = z.infer<\n typeof HostedModelProjectSummarySchema\n>;\nexport type HostedModelProjectDetail = z.infer<\n typeof HostedModelProjectDetailSchema\n>;\n\ntype ModelProjectsFetch = typeof fetch;\n\nfunction headersRecord(headers: HeadersInit | undefined): Record<string, string> {\n const result: Record<string, string> = {};\n new Headers(headers).forEach((value, key) => {\n result[key] = value;\n });\n return result;\n}\n\nexport function createModelProjectsClient(input: {\n baseUrl: string;\n fetch?: ModelProjectsFetch;\n headers?: HeadersInit | (() => HeadersInit | Promise<HeadersInit>);\n}) {\n const fetchImpl = input.fetch ?? fetch;\n const baseUrl = input.baseUrl.replace(/\\/$/, \"\");\n\n async function request(pathname: string, init?: RequestInit): Promise<unknown> {\n const configuredHeaders =\n typeof input.headers === \"function\"\n ? await input.headers()\n : (input.headers ?? {});\n const response = await fetchImpl(`${baseUrl}${pathname}`, {\n ...init,\n headers: {\n accept: OPENPOND_MODEL_PROJECT_MEDIA_TYPE,\n ...(init?.body\n ? { \"content-type\": OPENPOND_MODEL_PROJECT_MEDIA_TYPE }\n : {}),\n ...headersRecord(configuredHeaders),\n ...headersRecord(init?.headers),\n },\n });\n const body = parseBoundedJson(\n await response.text(),\n MODEL_PROJECT_API_RESPONSE_MAX_BYTES,\n \"Model Project API response\",\n );\n if (!response.ok) {\n const parsed = ModelProjectApiErrorSchema.safeParse(body);\n if (parsed.success) {\n throw new OpenPondModelProjectApiError(response.status, parsed.data);\n }\n throw new OpenPondProtocolError(\n \"invalid_error_response\",\n `Model Project request failed with HTTP ${response.status} and an invalid error envelope.`,\n );\n }\n return body;\n }\n\n return {\n async configurationCandidates() {\n return z.object({ candidates: z.array(ModelProjectBaseModelCandidateSchema).max(1000) }).strict().parse(\n await request(\"/v1/model-projects/configuration/candidates\", { headers: { accept: \"application/json\" } }),\n ).candidates;\n },\n async checkConfiguration(value: ModelProjectSaveRequest) {\n const parsed = parseModelProjectSaveRequest(value);\n return ModelProjectConfigurationCheckSchema.parse(await request(\"/v1/model-projects/configuration/check\", {\n method: \"POST\", headers: { accept: \"application/json\", \"content-type\": \"application/json\" }, body: JSON.stringify(parsed),\n }));\n },\n async saveConfiguration(value: ModelProjectSaveRequest) {\n const parsed = parseModelProjectSaveRequest(value);\n return HostedModelProjectSummarySchema.parse(await request(\"/v1/model-projects/configuration/save\", {\n method: \"POST\", headers: { accept: \"application/json\", \"content-type\": \"application/json\" }, body: JSON.stringify(parsed),\n }));\n },\n async upsert(project: HostedModelProjectSync) {\n assertCanonicalPayloadSize(\n project,\n MODEL_PROJECT_SYNC_MAX_BYTES,\n \"Model Project sync\",\n );\n const parsed = HostedModelProjectSyncSchema.parse(project);\n const body = await request(\n `/v1/model-projects/${encodeURIComponent(parsed.portableProjectId)}`,\n { method: \"PUT\", body: JSON.stringify(parsed) },\n );\n return HostedModelProjectSummarySchema.parse(\n unwrapObject(body, \"project\"),\n );\n },\n async list() {\n const body = await request(\"/v1/model-projects\");\n return z\n .array(HostedModelProjectSummarySchema)\n .parse(unwrapObject(body, \"projects\"));\n },\n async get(projectId: string) {\n const body = await request(\n `/v1/model-projects/${encodeURIComponent(IdSchema.parse(projectId))}`,\n );\n return HostedModelProjectDetailSchema.parse(body);\n },\n };\n}\n\nfunction unwrapObject(value: unknown, key: string): unknown {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) return value;\n return key in value ? (value as Record<string, unknown>)[key] : value;\n}\n","import { z } from \"zod\";\n\nconst Id = z.string().trim().min(1).max(191);\nconst Hash = z.string().regex(/^[a-f0-9]{64}$/);\n\nexport const TrainingGpuSelectionSchema = z.discriminatedUnion(\"mode\", [\n z.object({ mode: z.literal(\"automatic\"), objective: z.enum([\"balanced\", \"fast\", \"economical\"]) }).strict(),\n z.object({ mode: z.literal(\"manual\"), availabilityId: Id, gpuType: z.string().trim().min(1).max(256) }).strict(),\n]);\n\n/** This token binds a reviewed workload and price, without reserving resources\n * or approving the estimate's recommended budget. */\nexport const TrainingEstimateReviewSchema = z.object({\n estimateId: Id,\n inputHash: Hash,\n requestHash: Hash,\n pricingVersion: Id,\n expiresAt: z.string().datetime({ offset: true }),\n token: z.string().min(1).max(8192),\n}).strict();\n\nexport type TrainingGpuSelection = z.infer<typeof TrainingGpuSelectionSchema>;\nexport type TrainingEstimateReview = z.infer<typeof TrainingEstimateReviewSchema>;\n\nexport const TrainingGpuCatalogSchema = z.object({\n schemaVersion: z.literal(\"openpond.trainingGpuCatalog.v1\"),\n observedAt: z.string().datetime({ offset: true }),\n expiresAt: z.string().datetime({ offset: true }),\n workerImageDigest: z.string().regex(/^sha256:[a-f0-9]{64}$/),\n supportedLoraRanks: z.array(z.number().int().positive()),\n pricingBasis: z.literal(\"accepted_compute_and_disk_hourly_before_credits\"),\n offerings: z.array(z.object({\n availabilityId: Id, gpuType: z.string().min(1).max(256), provider: Id,\n region: z.string().min(1), dataCenterId: z.string().nullable(),\n gpuCount: z.number().int().positive(), gpuMemoryGb: z.number().positive(),\n stockStatus: z.enum([\"High\", \"Medium\", \"Low\"]),\n computeHourlyUsd: z.number().nonnegative(), diskHourlyUsd: z.number().nonnegative(), totalHourlyUsd: z.number().nonnegative(),\n }).strict()).max(1000),\n}).strict();\nexport type TrainingGpuCatalog = z.infer<typeof TrainingGpuCatalogSchema>;\n","export type CanonicalJsonValue =\n | null\n | boolean\n | number\n | string\n | CanonicalJsonValue[]\n | { [key: string]: CanonicalJsonValue };\n\nexport const OPENPOND_TRAINING_PROTOCOL_MAJOR = 2 as const;\nexport const OPENPOND_TRAINING_MEDIA_TYPE =\n \"application/vnd.openpond.training+json;version=2\" as const;\nexport const OPENPOND_MODEL_PROJECT_MEDIA_TYPE =\n \"application/vnd.openpond.model-project+json;version=2\" as const;\n\nexport const TRAINING_JOB_SUBMISSION_MAX_BYTES = 1_048_576;\nexport const TRAINING_INPUT_ARTIFACT_MAX_BYTES = 67_108_864;\nexport const TRAINING_API_RESPONSE_MAX_BYTES = 8_388_608;\nexport const MODEL_PROJECT_SYNC_MAX_BYTES = 524_288;\nexport const MODEL_PROJECT_API_RESPONSE_MAX_BYTES = 8_388_608;\n\nexport class OpenPondProtocolError extends Error {\n readonly code: string;\n\n constructor(code: string, message: string) {\n super(message);\n this.name = \"OpenPondProtocolError\";\n this.code = code;\n }\n}\n\n/**\n * Deterministic JSON used for content-addressed OpenPond protocol objects.\n * Object keys are sorted by Unicode code point, arrays retain their authored\n * order, and non-JSON/non-finite values are rejected rather than coerced.\n */\nexport function canonicalJson(value: unknown): string {\n return JSON.stringify(normalizeCanonicalJson(value));\n}\n\nexport function canonicalJsonByteLength(value: unknown): number {\n return new TextEncoder().encode(canonicalJson(value)).byteLength;\n}\n\nexport async function canonicalSha256(value: unknown): Promise<string> {\n const bytes = new TextEncoder().encode(canonicalJson(value));\n const digest = await globalThis.crypto.subtle.digest(\"SHA-256\", bytes);\n return Array.from(new Uint8Array(digest), (byte) =>\n byte.toString(16).padStart(2, \"0\"),\n ).join(\"\");\n}\n\nexport function assertCanonicalPayloadSize(\n value: unknown,\n maximumBytes: number,\n label: string,\n): void {\n const actualBytes = canonicalJsonByteLength(value);\n if (actualBytes > maximumBytes) {\n throw new OpenPondProtocolError(\n \"payload_too_large\",\n `${label} is ${actualBytes} bytes; the maximum is ${maximumBytes} bytes.`,\n );\n }\n}\n\nexport function parseBoundedJson(\n text: string,\n maximumBytes: number,\n label: string,\n): unknown {\n const actualBytes = new TextEncoder().encode(text).byteLength;\n if (actualBytes > maximumBytes) {\n throw new OpenPondProtocolError(\n \"response_too_large\",\n `${label} is ${actualBytes} bytes; the maximum is ${maximumBytes} bytes.`,\n );\n }\n try {\n return JSON.parse(text) as unknown;\n } catch {\n throw new OpenPondProtocolError(\n \"invalid_json\",\n `${label} was not valid JSON.`,\n );\n }\n}\n\nfunction normalizeCanonicalJson(value: unknown): CanonicalJsonValue {\n if (\n value === null ||\n typeof value === \"string\" ||\n typeof value === \"boolean\"\n ) {\n return value;\n }\n if (typeof value === \"number\") {\n if (!Number.isFinite(value)) {\n throw new OpenPondProtocolError(\n \"non_json_value\",\n \"Canonical JSON cannot contain a non-finite number.\",\n );\n }\n return Object.is(value, -0) ? 0 : value;\n }\n if (Array.isArray(value)) {\n return value.map((entry) => normalizeCanonicalJson(entry));\n }\n if (typeof value === \"object\") {\n const prototype = Object.getPrototypeOf(value);\n if (prototype !== Object.prototype && prototype !== null) {\n throw new OpenPondProtocolError(\n \"non_json_value\",\n \"Canonical JSON accepts only plain objects.\",\n );\n }\n const result: Record<string, CanonicalJsonValue> = {};\n for (const key of Object.keys(value as Record<string, unknown>).sort()) {\n const entry = (value as Record<string, unknown>)[key];\n if (entry === undefined || typeof entry === \"function\" || typeof entry === \"symbol\") {\n throw new OpenPondProtocolError(\n \"non_json_value\",\n `Canonical JSON cannot contain ${typeof entry} at ${key}.`,\n );\n }\n result[key] = normalizeCanonicalJson(entry);\n }\n return result;\n }\n throw new OpenPondProtocolError(\n \"non_json_value\",\n `Canonical JSON cannot contain ${typeof value}.`,\n );\n}\n"],"mappings":"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","names":["z","z"]}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
ExperimentGraderSelectionSchema
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-B2MKB7NB.js";
|
|
4
4
|
import {
|
|
5
5
|
ModelTasksetRunRequestSchema
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-HRZLFJXX.js";
|
|
7
7
|
|
|
8
8
|
// src/experiment-run-contracts.ts
|
|
9
9
|
import { z } from "zod";
|
|
@@ -28,4 +28,4 @@ var RunExperimentSchema = z.object({
|
|
|
28
28
|
export {
|
|
29
29
|
RunExperimentSchema
|
|
30
30
|
};
|
|
31
|
-
//# sourceMappingURL=chunk-
|
|
31
|
+
//# sourceMappingURL=chunk-3VGTVZHL.js.map
|
|
@@ -2,7 +2,7 @@ import {
|
|
|
2
2
|
ModelProjectVersionedRefSchema,
|
|
3
3
|
canonicalJson,
|
|
4
4
|
canonicalSha256
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-3SIGXGAE.js";
|
|
6
6
|
import {
|
|
7
7
|
FailureClassSchema,
|
|
8
8
|
contentHash
|
|
@@ -286,4 +286,4 @@ export {
|
|
|
286
286
|
OpenPondModelStarterAttemptError,
|
|
287
287
|
OpenPondModelStarterAttemptsClient
|
|
288
288
|
};
|
|
289
|
-
//# sourceMappingURL=chunk-
|
|
289
|
+
//# sourceMappingURL=chunk-5T76GARR.js.map
|
|
@@ -106,7 +106,7 @@ function materializePortableTasksetRelease(input) {
|
|
|
106
106
|
tasks: tasks.map(projectPortableTaskRecord),
|
|
107
107
|
graders,
|
|
108
108
|
...input.taskset.metrics ? { metrics: input.taskset.metrics } : {},
|
|
109
|
-
metadata: input.taskset.metadata.derivedPortableMetadata ?? {
|
|
109
|
+
metadata: { ...input.taskset.metadata.derivedPortableMetadata ?? {
|
|
110
110
|
sourceTasksetId: input.taskset.id,
|
|
111
111
|
sourceTasksetHash: input.taskset.contentHash,
|
|
112
112
|
sourcePackageHash: input.taskset.metadata.sourcePackageHash ?? null,
|
|
@@ -126,7 +126,9 @@ function materializePortableTasksetRelease(input) {
|
|
|
126
126
|
// A sealed batch already pins these resources in learning metadata.
|
|
127
127
|
// Resolving that same binding at admission must not change its release.
|
|
128
128
|
...rewardExecution && !learning && (input.rewardExecution || embedded) ? { rewardExecution: { binding: rewardExecution.binding, rewards: rewardExecution.rewards } } : {}
|
|
129
|
-
}
|
|
129
|
+
}, ...input.taskset.metadata.tasksetOutputContract === void 0 ? {} : {
|
|
130
|
+
tasksetOutputContract: input.taskset.metadata.tasksetOutputContract
|
|
131
|
+
} }
|
|
130
132
|
});
|
|
131
133
|
const draft = input.admittedTasksetRelease ? TasksetReleaseSchema.parse(input.admittedTasksetRelease) : TasksetReleaseSchema.parse({
|
|
132
134
|
...tasksetContent,
|
|
@@ -169,7 +171,9 @@ function projectPortableTaskRecord(task) {
|
|
|
169
171
|
policyVisibleContext: task.policyVisibleContext,
|
|
170
172
|
privilegedContextRef: task.privilegedContextRef,
|
|
171
173
|
tags: task.tags,
|
|
172
|
-
|
|
174
|
+
// Shared execution resources mount with the task, but do not become new
|
|
175
|
+
// source attachments or change its original qualification/family identity.
|
|
176
|
+
artifactRefs: task.assets === void 0 ? original.artifactRefs : task.assets.filter((asset) => original.artifactRefs.some((item) => item.id === asset.id) || asset.metadata.sharedEnvironmentResource === void 0 && !(task.requiredOutputs ?? []).some((output) => output.submissionMode === "structured_json" && output.schemaRef === asset.id)).map((asset) => {
|
|
173
177
|
const previous = original.artifactRefs.find((item) => item.id === asset.id);
|
|
174
178
|
return {
|
|
175
179
|
id: asset.id,
|
|
@@ -385,4 +389,4 @@ export {
|
|
|
385
389
|
portableTasksetTools,
|
|
386
390
|
projectPortableTaskRecord
|
|
387
391
|
};
|
|
388
|
-
//# sourceMappingURL=chunk-
|
|
392
|
+
//# sourceMappingURL=chunk-ATVQQCYN.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/taskset-authored-portable-release.ts"],"sourcesContent":["import type { Taskset } from \"./taskset-authored-contracts.js\";\nimport type {\n GraderSpec,\n TaskDataRecord,\n} from \"./taskset-draft-core.js\";\nimport {\n TaskRecordSchema,\n GraderSpecSchema as PortableGraderSpecSchema,\n TasksetReleaseContentSchema,\n TasksetReleaseSchema,\n bindTasksetExecutionReleases,\n createEnvironmentRelease,\n createVerifierSetRelease,\n EnvironmentReleaseSchema,\n VerifierSetReleaseSchema,\n verifyEnvironmentRelease,\n verifyVerifierSetRelease,\n verifyPreferenceComparisonRelease,\n type EnvironmentContract,\n type GraderSpec as PortableGraderSpec,\n type PreferenceComparisonRelease,\n type TasksetRelease,\n} from \"@openpond/evals\";\nimport type {\n ImmutableAssetRef,\n ToolDeclaration,\n} from \"@openpond/harness\";\nimport {\n CapabilityRequirementSchema,\n ImmutableAssetRefSchema,\n ToolDeclarationSchema,\n} from \"@openpond/harness\";\n\nimport { contentHash, sha256 } from \"@openpond/harness\";\nimport { TaskBatchPackageMetadataSchema } from \"@openpond/evals/learning\";\nimport { compileBoundGraders, RewardBindingSchema, RewardReleaseSchema, type RewardBinding, type RewardRelease } from \"@openpond/evals/rewards\";\nimport { portableDeterministicCheck } from \"@openpond/evals/graders\";\n\nexport type TasksetRewardExecution = { binding: RewardBinding; rewards: RewardRelease[] };\n\nexport function resolvePortableTasksetRewardExecution(taskset: Taskset, supplied?: TasksetRewardExecution): TasksetRewardExecution | null {\n const learning = taskset.metadata.learning === undefined ? null : TaskBatchPackageMetadataSchema.parse(taskset.metadata.learning);\n const embedded = taskset.metadata.rewardExecution as { binding?: unknown; rewards?: unknown } | undefined;\n const execution = supplied ?? (embedded ? {\n binding: RewardBindingSchema.parse(embedded.binding),\n rewards: RewardReleaseSchema.array().parse(embedded.rewards),\n } : learning);\n if (taskset.metadata.rewardBinding !== undefined) {\n const reference = taskset.metadata.rewardBinding as Partial<RewardBinding> | null;\n if (!execution || !reference || reference.id !== execution.binding.id\n || reference.revision !== execution.binding.revision || reference.contentHash !== execution.binding.contentHash) {\n throw new Error(\"Portable Taskset requires its exact published Reward binding.\");\n }\n }\n if (execution) compileBoundGraders(execution.binding, execution.rewards);\n return execution ? { binding: execution.binding, rewards: execution.rewards } : null;\n}\n\nexport function materializePortableTasksetRelease(input: {\n taskset: Taskset;\n selectedTasks?: TaskDataRecord[];\n adapterId: string;\n admittedTasksetRelease?: TasksetRelease | null;\n rewardExecution?: TasksetRewardExecution;\n}): {\n environmentRelease: ReturnType<typeof createEnvironmentRelease>;\n verifierSetRelease: ReturnType<typeof createVerifierSetRelease>;\n tasksetRelease: TasksetRelease;\n} {\n const environment = portableEnvironment(input.taskset);\n const tools = portableTools(input.taskset);\n const learning = input.taskset.metadata.learning === undefined ? null : TaskBatchPackageMetadataSchema.parse(input.taskset.metadata.learning);\n const embedded = input.taskset.metadata.rewardExecution;\n const rewardExecution = resolvePortableTasksetRewardExecution(input.taskset, input.rewardExecution);\n const graders = rewardExecution ? compileBoundGraders(rewardExecution.binding, rewardExecution.rewards) : input.taskset.graders.map(portableGrader);\n const tasks = input.selectedTasks?.length\n ? input.selectedTasks\n : input.taskset.tasks;\n if (!tasks.length) throw new Error(\"A portable Taskset release requires at least one task.\");\n const pinned = input.taskset.environment.metadata.portableExecutionResources as { environment?: unknown; verifierSet?: unknown } | undefined;\n if (environment.entrypoint === \"openpond.javascript-environment.v1\" && !pinned) throw new Error(\"Tool Taskset publication requires its pinned execution resources.\");\n const environmentRelease = pinned ? EnvironmentReleaseSchema.parse(pinned.environment) : createEnvironmentRelease({\n schemaVersion: \"openpond.environmentRelease.v1\",\n id: `environment-release-${input.taskset.id}-r${input.taskset.revision}`,\n revision: input.taskset.revision,\n contract: environment,\n actionSchemaRef: null,\n observationSchemaRef: null,\n stateSchemaRef: null,\n artifactCollection: {\n maxArtifacts: 100_000,\n maxTotalBytes: 250_000_000,\n },\n adapterConformanceHashes: {\n [input.adapterId]: contentHash({ adapterId: input.adapterId, environment, tools }),\n },\n metadata: {\n sourceTasksetId: input.taskset.id,\n sourcePackageHash: input.taskset.metadata.sourcePackageHash ?? null,\n resources: input.taskset.environment.resources ?? [],\n },\n });\n const verifierSetRelease = pinned?.verifierSet !== undefined ? VerifierSetReleaseSchema.parse(pinned.verifierSet) : createVerifierSetRelease({\n schemaVersion: \"openpond.verifierSetRelease.v1\",\n id: `verifier-set-release-${input.taskset.id}-r${input.taskset.revision}`,\n revision: input.taskset.revision,\n graders,\n isolation: {\n processBoundary: \"isolated_process\",\n networkPolicy: \"none\",\n defaultTimeoutMs: Math.min(input.taskset.environment.defaultTimeoutMs, 300_000),\n },\n calibrationReceiptRefs: [],\n metadata: { sourceTasksetId: input.taskset.id },\n });\n if (!verifyEnvironmentRelease(environmentRelease) || !verifyVerifierSetRelease(verifierSetRelease) ||\n contentHash(environmentRelease.contract) !== contentHash(environment) || contentHash(verifierSetRelease.graders) !== contentHash(graders)) {\n throw new Error(\"Taskset execution resources differ from its declared environment or graders.\");\n }\n const tasksetContent = TasksetReleaseContentSchema.parse({\n schemaVersion: \"openpond.tasksetRelease.v2\",\n id: input.taskset.metadata.derivedPortableMetadata === undefined ? `taskset-release-${input.taskset.id}-r${input.taskset.revision}` : input.taskset.id,\n revision: input.taskset.revision,\n policy: {\n policyVisibleFields: input.taskset.policy.policyVisibleFields,\n privilegedFields: input.taskset.policy.privilegedFields,\n hiddenGraderRefs: input.taskset.policy.hiddenGraderRefs,\n connectedAppScopes: input.taskset.policy.connectedAppScopes,\n },\n environment,\n tools,\n capabilities: portableCapabilities(input.taskset),\n tasks: tasks.map(projectPortableTaskRecord),\n graders,\n ...(input.taskset.metrics ? { metrics: input.taskset.metrics } : {}),\n metadata: { ...(input.taskset.metadata.derivedPortableMetadata ?? {\n sourceTasksetId: input.taskset.id,\n sourceTasksetHash: input.taskset.contentHash,\n sourcePackageHash: input.taskset.metadata.sourcePackageHash ?? null,\n environmentResources: input.taskset.environment.resources ?? [],\n workAssetStagingPaths: Object.fromEntries(tasks.filter(task => task.assets?.some(asset => asset.stagingPath))\n .map(task => [task.id, Object.fromEntries((task.assets ?? []).filter(asset => asset.stagingPath)\n .map(asset => [asset.id, asset.stagingPath]))])),\n ordinaryAuthoring: {\n instructions: input.taskset.objective,\n graderSourceRewards: Object.fromEntries(input.taskset.graders.filter(grader => grader.metadata.sourceReward !== undefined).map(grader => [grader.id, grader.metadata.sourceReward])),\n graderOrigins: Object.fromEntries(input.taskset.graders.map(grader => [grader.id,\n grader.metadata.preparationOrigin === \"reused\" ? \"reused\" : grader.metadata.preparationOrigin === \"adapted\" || grader.metadata.adaptedFromReward ? \"adapted\" : \"authored\"])),\n graderFixtures: input.taskset.graderFixtures,\n judgeCalibrationFixtures: Object.fromEntries(input.taskset.graders\n .filter(grader => grader.kind === \"model_judge\")\n .map(grader => [grader.id, grader.calibrationFixtureRefs])),\n },\n ...(learning ? { learning } : {}),\n // A sealed batch already pins these resources in learning metadata.\n // Resolving that same binding at admission must not change its release.\n ...(rewardExecution && !learning && (input.rewardExecution || embedded) ? { rewardExecution: { binding: rewardExecution.binding, rewards: rewardExecution.rewards } } : {}),\n }), ...(input.taskset.metadata.tasksetOutputContract === undefined ? {} : {\n tasksetOutputContract: input.taskset.metadata.tasksetOutputContract,\n }) },\n });\n const draft = input.admittedTasksetRelease\n ? TasksetReleaseSchema.parse(input.admittedTasksetRelease)\n : TasksetReleaseSchema.parse({\n ...tasksetContent,\n contentHash: contentHash(tasksetContent),\n });\n const tasksetRelease = draft.environmentRelease\n ? assertReleaseBindings({ draft, environmentRelease, verifierSetRelease })\n : bindTasksetExecutionReleases({\n taskset: draft,\n environment: environmentRelease,\n verifierSet: verifierSetRelease,\n });\n return { environmentRelease, verifierSetRelease, tasksetRelease };\n}\n\n/**\n * Admits a published comparison policy against the exact portable Taskset\n * release it names. A comparison is deliberately not embedded in that release:\n * doing so would create a content-hash cycle between Taskset and comparison.\n */\nexport function projectPreferenceComparisonRelease(input: {\n tasksetRelease: TasksetRelease;\n preferenceComparison: PreferenceComparisonRelease;\n}): PreferenceComparisonRelease {\n if (!verifyPreferenceComparisonRelease(input.preferenceComparison)) {\n throw new Error(\"Preference comparison release failed immutable content verification.\");\n }\n const release = input.preferenceComparison;\n if (\n release.tasksetRelease.id !== input.tasksetRelease.id\n || release.tasksetRelease.contentHash !== input.tasksetRelease.contentHash\n ) {\n throw new Error(\"Preference comparison release must reference the admitted portable Taskset release.\");\n }\n return release;\n}\n\nexport function portableTasksetEnvironment(taskset: Taskset): EnvironmentContract {\n return portableEnvironment(taskset);\n}\n\nexport function portableTasksetTools(taskset: Taskset): ToolDeclaration[] {\n return portableTools(taskset);\n}\n\n/** Preserve immutable file/schema references while overlaying current edits. */\nexport function projectPortableTaskRecord(task: TaskDataRecord) {\n const admitted = task.metadata.portableTaskRecord;\n if (admitted !== undefined) {\n const original = TaskRecordSchema.parse(admitted);\n const projected = TaskRecordSchema.parse({\n ...original,\n id: task.id,\n clusterKey: task.clusterKey,\n split: task.split,\n input: task.input,\n expectedOutput: portableExpectedOutput(task),\n policyVisibleContext: task.policyVisibleContext,\n privilegedContextRef: task.privilegedContextRef,\n tags: task.tags,\n // Shared execution resources mount with the task, but do not become new\n // source attachments or change its original qualification/family identity.\n artifactRefs: task.assets === undefined ? original.artifactRefs : task.assets.filter(asset => original.artifactRefs.some(item => item.id === asset.id)\n || (asset.metadata.sharedEnvironmentResource === undefined && !(task.requiredOutputs ?? []).some(output => output.submissionMode === \"structured_json\" && output.schemaRef === asset.id))).map((asset) => {\n const previous = original.artifactRefs.find(item => item.id === asset.id);\n return {\n id: asset.id,\n path: previous?.path ?? `tasks/${segment(task.id)}/${asset.stagingPath ?? segment(asset.fileName)}`,\n contentHash: hash(asset.sha256),\n sizeBytes: asset.sizeBytes,\n mediaType: asset.mediaType,\n visibility: previous?.visibility ?? \"policy\",\n };\n }),\n requiredOutputs: task.requiredOutputs === undefined ? original.requiredOutputs : task.requiredOutputs.map((output) => {\n const previous = original.requiredOutputs?.find(item => item.path === output.path);\n return {\n path: output.path,\n mediaType: output.mediaType,\n ...(output.submissionMode ? { submissionMode: output.submissionMode } : {}),\n schemaRef: previous?.schemaRef && previous.schemaRef.id === output.schemaRef ? previous.schemaRef : (task.metadata.outputSchemaRefs as Record<string, ImmutableAssetRef> | undefined)?.[output.schemaRef ?? \"\"] ?? null,\n maxBytes: output.maxBytes ?? null,\n metadata: {\n ...output.metadata,\n ...(output.schemaRef && previous?.schemaRef?.id !== output.schemaRef\n ? { legacySchemaRef: output.schemaRef }\n : {}),\n },\n };\n }),\n });\n if (projected.requiredOutputs === undefined) delete projected.requiredOutputs;\n return projected;\n }\n return {\n id: task.id,\n clusterKey: task.clusterKey,\n split: task.split,\n input: task.input,\n expectedOutput: portableExpectedOutput(task),\n policyVisibleContext: task.policyVisibleContext,\n privilegedContextRef: task.privilegedContextRef,\n artifactRefs: (task.assets ?? []).map((item) => ({\n id: item.id,\n path: `tasks/${segment(task.id)}/${item.stagingPath ?? segment(item.fileName)}`,\n contentHash: hash(item.sha256),\n sizeBytes: item.sizeBytes,\n mediaType: item.mediaType,\n visibility: \"policy\" as const,\n })),\n requiredOutputs: (task.requiredOutputs ?? []).map((output) => ({\n path: output.path,\n mediaType: output.mediaType,\n ...(output.submissionMode ? { submissionMode: output.submissionMode } : {}),\n schemaRef: (task.metadata.outputSchemaRefs as Record<string, ImmutableAssetRef> | undefined)?.[output.schemaRef ?? \"\"] ?? null,\n maxBytes: output.maxBytes ?? null,\n metadata: {\n ...output.metadata,\n legacySchemaRef: output.schemaRef ?? null,\n },\n })),\n tags: task.tags,\n };\n}\n\nfunction portableExpectedOutput(\n task: TaskDataRecord,\n): Record<string, unknown> | null {\n if (!task.expectedOutput) return null;\n if (\"artifactRenderer\" in task.expectedOutput) {\n throw new Error(\n `Task ${task.id} embeds an artifact renderer. Put shared renderer configuration in Environment resources and reference it from the Scenario.`,\n );\n }\n return task.expectedOutput;\n}\n\nfunction portableEnvironment(taskset: Taskset): EnvironmentContract {\n const kind: EnvironmentContract[\"kind\"] = taskset.environment.kind === \"chat\"\n ? \"text\"\n : taskset.environment.kind === \"work\" ? \"work\"\n : taskset.environment.kind === \"program\" ? \"custom_program\" : \"agent\";\n return {\n protocolVersion: \"openpond.environment.v1\",\n kind,\n entrypoint: taskset.environment.entrypoint,\n stateful: taskset.environment.stateful,\n deterministicSeeds: taskset.environment.deterministicSeeds,\n lifecycle: [\"create\", \"reset\", \"step\", \"collect\", \"destroy\"],\n networkPolicy: taskset.environment.networkPolicy,\n defaultTimeoutMs: taskset.environment.defaultTimeoutMs,\n };\n}\n\nfunction portableTools(taskset: Taskset): ToolDeclaration[] {\n const admitted = taskset.environment.metadata.portableTools;\n if (admitted !== undefined) {\n return ToolDeclarationSchema.array().max(200).parse(admitted);\n }\n const bindings = taskset.environment.actionBindings ?? [];\n if (bindings.length) return bindings.map((binding) => ({\n name: binding.modelToolName,\n description: binding.description,\n inputSchema: binding.inputSchema,\n inputSchemaHash: hash(binding.actionSchemaHash),\n sideEffect: binding.sideEffect,\n timeoutMs: binding.timeoutMs,\n }));\n return taskset.environment.toolNames.map((name) => ({\n name,\n description: `Host-provided ${name} tool.`,\n inputSchema: {},\n inputSchemaHash: contentHash({}),\n sideEffect: \"write\" as const,\n timeoutMs: taskset.environment.defaultTimeoutMs,\n }));\n}\n\nfunction portableGrader(grader: GraderSpec): PortableGraderSpec {\n const base = {\n id: grader.id,\n ...(grader.taskIds ? { taskIds: grader.taskIds } : {}),\n version: grader.version,\n weight: grader.weight,\n hardGate: grader.hardGate,\n rewardEligible: grader.rewardEligible,\n privileged: grader.privileged,\n };\n if (grader.kind === \"model_judge\") return {\n ...base,\n kind: \"model_judge\",\n rubricRef: rubricAsset(grader),\n model: modelJudgeRef(grader),\n temperature: grader.temperature,\n calibrationStatus: grader.calibrationStatus,\n };\n if (grader.kind === \"custom_verifier\") {\n if (grader.metadata.portableVerifierRef === undefined) {\n throw new Error(`Custom verifier ${grader.id} requires its immutable executable asset before publication.`);\n }\n const imported = PortableGraderSpecSchema.safeParse(grader.metadata.portableGrader);\n // An omitted portable export means \"verify\". Preserve that encoding on an\n // unchanged import so executing it does not silently replace its release.\n const preserveDefault = imported.success && imported.data.kind === \"custom_verifier\"\n && imported.data.exportName === undefined && grader.exportName === \"verify\";\n return {\n ...base,\n kind: \"custom_verifier\",\n ...(grader.runtime === undefined ? {} : { runtime: grader.runtime }),\n verifierRef: ImmutableAssetRefSchema.parse(grader.metadata.portableVerifierRef),\n timeoutMs: grader.timeoutMs,\n ...(preserveDefault ? {} : { exportName: grader.exportName }),\n networkPolicy: \"none\",\n };\n }\n if (grader.kind === \"human\") return {\n ...base,\n kind: \"human\",\n rubricRef: rubricAsset(grader),\n reviewerRole: grader.reviewerRole,\n ...(grader.form ? { form: grader.form } : {}),\n };\n return {\n ...base,\n ...portableDeterministicCheck(grader),\n };\n}\n\nfunction portableCapabilities(taskset: Taskset) {\n const admitted = taskset.metadata.portableCapabilities;\n if (admitted !== undefined) {\n return CapabilityRequirementSchema.array().max(200).parse(admitted);\n }\n return [\n ...(taskset.capabilities.requiresTools\n ? [{ id: \"tools\", required: true, scopes: taskset.environment.toolNames }]\n : []),\n ...(taskset.capabilities.requiresState\n ? [{ id: \"local-state\", required: true, scopes: [] }]\n : []),\n ...(taskset.capabilities.requiresPrivilegedGrading\n ? [{ id: \"private-verifier\", required: true, scopes: taskset.policy.hiddenGraderRefs }]\n : []),\n ...taskset.policy.connectedAppScopes.map((scope) => ({\n id: `connected-app-${segment(scope)}`,\n required: true,\n scopes: [scope],\n })),\n ].map((requirement) => ({\n ...requirement,\n portability: requirement.id === \"local-state\" ? \"host_adapter\" as const : \"portable\" as const,\n }));\n}\n\nfunction assertReleaseBindings(input: {\n draft: TasksetRelease;\n environmentRelease: ReturnType<typeof createEnvironmentRelease>;\n verifierSetRelease: ReturnType<typeof createVerifierSetRelease>;\n}): TasksetRelease {\n if (\n input.draft.environmentRelease?.id !== input.environmentRelease.id\n || input.draft.environmentRelease.contentHash !== input.environmentRelease.contentHash\n ) {\n throw new Error(\"Admitted Taskset Release binds a different Environment Release.\");\n }\n if (\n input.draft.verifierSetRelease?.id !== input.verifierSetRelease.id\n || input.draft.verifierSetRelease.contentHash !== input.verifierSetRelease.contentHash\n ) {\n throw new Error(\"Admitted Taskset Release binds a different Verifier Set Release.\");\n }\n if (contentHash(input.draft.environment) !== contentHash(input.environmentRelease.contract)) {\n throw new Error(\"Admitted Taskset Environment differs from its bound Environment Release.\");\n }\n if (contentHash(input.draft.graders) !== contentHash(input.verifierSetRelease.graders)) {\n throw new Error(\"Admitted Taskset graders differ from its bound Verifier Set Release.\");\n }\n return input.draft;\n}\n\nfunction modelJudgeRef(grader: Extract<GraderSpec, { kind: \"model_judge\" }>) {\n const previous = grader.metadata.portableGrader === undefined ? null : PortableGraderSpecSchema.parse(grader.metadata.portableGrader);\n const revision = previous?.kind === \"model_judge\" && previous.model?.providerId === grader.judge.providerId && previous.model.modelId === grader.judge.modelId ? previous.model.revision : null;\n return { ...grader.judge, revision };\n}\n\nfunction rubricAsset(grader: Extract<GraderSpec, { kind: \"human\" | \"model_judge\" }>): ImmutableAssetRef {\n const contentHash = sha256(grader.rubric);\n const sizeBytes = new TextEncoder().encode(grader.rubric).byteLength;\n const reference = grader.metadata.portableRubricRef;\n if (reference !== undefined) {\n const asset = ImmutableAssetRefSchema.parse(reference);\n if (asset.contentHash !== contentHash || asset.sizeBytes !== sizeBytes || asset.visibility === \"policy\") throw new Error(\"Taskset rubric differs from its published private source.\");\n return asset;\n }\n return { id: `rubric-${grader.id}`, path: `graders/${segment(grader.id)}/rubric.md`, contentHash, sizeBytes, mediaType: \"text/markdown\", visibility: \"verifier\" };\n}\n\nfunction hash(value: string): string {\n return /^[a-f0-9]{64}$/.test(value) ? value : contentHash(value);\n}\n\nfunction segment(value: string): string {\n const normalized = value.trim().replace(/[^a-zA-Z0-9._-]+/g, \"-\")\n .replace(/^-+|-+$/g, \"\");\n return normalized || \"asset\";\n}\n"],"mappings":"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","names":["contentHash"]}
|