openpond-sdk 0.5.6 → 0.5.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/TRAINING_PROTOCOL.md +19 -0
- package/dist/chunk-ARUJ3FJT.js +447 -0
- package/dist/chunk-ARUJ3FJT.js.map +7 -0
- package/dist/chunk-QFT2MCIC.js +1526 -0
- package/dist/chunk-QFT2MCIC.js.map +7 -0
- package/dist/{chunk-NF63YMOL.js → chunk-QUOW6URQ.js} +7 -9
- package/dist/{chunk-NF63YMOL.js.map → chunk-QUOW6URQ.js.map} +3 -3
- package/dist/{chunk-25TBEGXB.js → chunk-TKJU3BOW.js} +2 -2
- package/dist/chunk-UJZ3XEE3.js +902 -0
- package/dist/chunk-UJZ3XEE3.js.map +7 -0
- package/dist/{chunk-EV4PKJWN.js → chunk-UKVK7MRJ.js} +320 -208
- package/dist/chunk-UKVK7MRJ.js.map +7 -0
- package/dist/index.js +3 -3
- package/dist/learning.js +3 -3
- package/dist/model-taskset-runs.js +2 -2
- package/dist/refiner.js +1 -1
- package/dist/taskset-drafts.js +35 -33
- package/dist/taskset-drafts.js.map +1 -1
- package/dist/taskset-packages.js +51 -465
- package/dist/taskset-packages.js.map +4 -4
- package/dist/training-bundle.js +459 -0
- package/dist/training-bundle.js.map +7 -0
- package/dist/types/packages/sdk/src/taskset-authored-contracts.d.ts +2 -2
- package/dist/types/packages/sdk/src/taskset-authored-files.d.ts +1 -1
- package/dist/types/packages/sdk/src/taskset-draft-dataset-artifacts.d.ts +2 -2
- package/dist/types/packages/sdk/src/taskset-package-projection.d.ts +1 -1
- package/dist/types/packages/sdk/src/training-bundle-contracts.d.ts +287 -0
- package/dist/types/packages/sdk/src/training-bundle-contracts.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/training-bundle.d.ts +48 -0
- package/dist/types/packages/sdk/src/training-bundle.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/training-learning-batch.d.ts +719 -0
- package/dist/types/packages/sdk/src/training-learning-batch.d.ts.map +1 -0
- package/package.json +6 -2
- package/dist/chunk-EV4PKJWN.js.map +0 -7
- package/dist/chunk-PXB6YY36.js +0 -2395
- package/dist/chunk-PXB6YY36.js.map +0 -7
- /package/dist/{chunk-25TBEGXB.js.map → chunk-TKJU3BOW.js.map} +0 -0
|
@@ -0,0 +1,459 @@
|
|
|
1
|
+
import {
|
|
2
|
+
learningVerifierModule,
|
|
3
|
+
projectLearningBatchGraders,
|
|
4
|
+
resolvePortableTasksetRewardExecution
|
|
5
|
+
} from "./chunk-ARUJ3FJT.js";
|
|
6
|
+
import {
|
|
7
|
+
TasksetSchema,
|
|
8
|
+
computeTasksetHash
|
|
9
|
+
} from "./chunk-QFT2MCIC.js";
|
|
10
|
+
import "./chunk-4IDTRFW2.js";
|
|
11
|
+
import "./chunk-S7I45WJQ.js";
|
|
12
|
+
import {
|
|
13
|
+
TRAINING_EVALUATION_SOURCE_PATH,
|
|
14
|
+
TrainingEvaluationSourceSchema,
|
|
15
|
+
assertTrainingEvaluationIsolation
|
|
16
|
+
} from "./chunk-F5JBFRAH.js";
|
|
17
|
+
import {
|
|
18
|
+
HarnessSourceSelectionSchema,
|
|
19
|
+
validateHarnessSourcePackage
|
|
20
|
+
} from "./chunk-UKVK7MRJ.js";
|
|
21
|
+
import {
|
|
22
|
+
ImmutableReleaseRefSchema,
|
|
23
|
+
ReleaseHashSchema,
|
|
24
|
+
ReleaseIdSchema,
|
|
25
|
+
ReleaseTimestampSchema,
|
|
26
|
+
canonicalJson,
|
|
27
|
+
contentHash,
|
|
28
|
+
sha256
|
|
29
|
+
} from "./chunk-QUOW6URQ.js";
|
|
30
|
+
import "./chunk-ZNFOVV7B.js";
|
|
31
|
+
|
|
32
|
+
// src/training-bundle.ts
|
|
33
|
+
import { compileBoundGraders } from "@openpond/evals/rewards";
|
|
34
|
+
import { verifyLearningTextAsset as verifyLearningTextAsset2 } from "@openpond/evals/learning";
|
|
35
|
+
|
|
36
|
+
// src/training-bundle-contracts.ts
|
|
37
|
+
import { z } from "zod";
|
|
38
|
+
var ScopedSecretDeclarationSchema = z.object({
|
|
39
|
+
id: ReleaseIdSchema,
|
|
40
|
+
purpose: z.string().trim().min(1).max(500),
|
|
41
|
+
audience: z.enum([
|
|
42
|
+
"orchestrator",
|
|
43
|
+
"environment",
|
|
44
|
+
"privileged_scorer",
|
|
45
|
+
"trainer",
|
|
46
|
+
"infrastructure"
|
|
47
|
+
]),
|
|
48
|
+
required: z.boolean(),
|
|
49
|
+
ttlSeconds: z.number().int().positive().max(86400),
|
|
50
|
+
scopes: z.array(z.string().trim().min(1).max(500)).max(100).default([])
|
|
51
|
+
}).strict();
|
|
52
|
+
var OpaqueSecretLeaseRefSchema = z.object({
|
|
53
|
+
declarationId: ReleaseIdSchema,
|
|
54
|
+
leaseRef: z.string().trim().min(8).max(1e3),
|
|
55
|
+
audience: ScopedSecretDeclarationSchema.shape.audience,
|
|
56
|
+
expiresAt: ReleaseTimestampSchema
|
|
57
|
+
}).strict();
|
|
58
|
+
var HarnessRuntimeTargetBindingSchema = z.object({
|
|
59
|
+
adapterId: ReleaseIdSchema,
|
|
60
|
+
placement: z.enum(["local", "remote", "colocated", "provider_native"]),
|
|
61
|
+
capabilityReceipt: ReleaseHashSchema,
|
|
62
|
+
runtimeVersion: z.string().trim().min(1).max(200),
|
|
63
|
+
dataPlane: z.object({
|
|
64
|
+
provider: ReleaseIdSchema,
|
|
65
|
+
dataPlaneId: ReleaseIdSchema,
|
|
66
|
+
cellId: ReleaseIdSchema,
|
|
67
|
+
runnerPoolId: ReleaseIdSchema,
|
|
68
|
+
runtimeImageDigest: z.string().regex(/^sha256:[a-f0-9]{64}$/),
|
|
69
|
+
capabilityReceipt: ReleaseHashSchema
|
|
70
|
+
}).strict().nullable()
|
|
71
|
+
}).strict();
|
|
72
|
+
var ComputeTargetBindingSchema = z.object({
|
|
73
|
+
adapterId: ReleaseIdSchema,
|
|
74
|
+
kind: z.enum(["local", "ssh", "managed", "custom"]),
|
|
75
|
+
deviceOrPool: z.string().trim().min(1).max(1e3),
|
|
76
|
+
capabilityReceipt: ReleaseHashSchema,
|
|
77
|
+
provider: ReleaseIdSchema.nullable()
|
|
78
|
+
}).strict();
|
|
79
|
+
var TrainingEngineBindingSchema = z.object({
|
|
80
|
+
adapterId: ReleaseIdSchema,
|
|
81
|
+
workerVersion: z.string().trim().min(1).max(200),
|
|
82
|
+
workerImageDigest: z.string().regex(/^sha256:[a-f0-9]{64}$/).nullable(),
|
|
83
|
+
upstreamRevision: z.string().trim().min(1).max(500),
|
|
84
|
+
capabilityReceipt: ReleaseHashSchema
|
|
85
|
+
}).strict();
|
|
86
|
+
var HarnessRunManifestContentSchema = z.object({
|
|
87
|
+
schemaVersion: z.literal("openpond.harnessRunManifest.v1"),
|
|
88
|
+
id: ReleaseIdSchema,
|
|
89
|
+
harnessRelease: ImmutableReleaseRefSchema,
|
|
90
|
+
datasetRelease: ImmutableReleaseRefSchema,
|
|
91
|
+
evidenceSets: z.array(ImmutableReleaseRefSchema).max(1e4),
|
|
92
|
+
model: z.object({
|
|
93
|
+
source: z.string().trim().min(1).max(200),
|
|
94
|
+
revision: z.string().trim().min(1).max(500),
|
|
95
|
+
artifactHash: ReleaseHashSchema.nullable(),
|
|
96
|
+
tokenizerRevision: z.string().trim().min(1).max(500),
|
|
97
|
+
chatTemplateHash: ReleaseHashSchema
|
|
98
|
+
}).strict(),
|
|
99
|
+
recipe: z.object({
|
|
100
|
+
method: z.string().trim().min(1).max(100),
|
|
101
|
+
version: z.string().trim().min(1).max(200),
|
|
102
|
+
configHash: ReleaseHashSchema
|
|
103
|
+
}).strict(),
|
|
104
|
+
runtimeTarget: HarnessRuntimeTargetBindingSchema,
|
|
105
|
+
computeTarget: ComputeTargetBindingSchema,
|
|
106
|
+
engine: TrainingEngineBindingSchema,
|
|
107
|
+
resolvedBundleHash: ReleaseHashSchema,
|
|
108
|
+
secretLeaseRefs: z.array(OpaqueSecretLeaseRefSchema).max(1e3),
|
|
109
|
+
approval: z.object({
|
|
110
|
+
approvalHash: ReleaseHashSchema,
|
|
111
|
+
approvedAt: ReleaseTimestampSchema,
|
|
112
|
+
maximumSpendUsd: z.number().nonnegative().nullable()
|
|
113
|
+
}).strict(),
|
|
114
|
+
createdAt: ReleaseTimestampSchema
|
|
115
|
+
}).strict();
|
|
116
|
+
var HarnessRunManifestSchema = HarnessRunManifestContentSchema.extend({
|
|
117
|
+
contentHash: ReleaseHashSchema
|
|
118
|
+
}).strict();
|
|
119
|
+
var ResolvedTrainingBundleContentSchema = z.object({
|
|
120
|
+
schemaVersion: z.literal("openpond.resolvedTrainingBundle.v1"),
|
|
121
|
+
projection: z.literal("trainer"),
|
|
122
|
+
harnessRelease: ImmutableReleaseRefSchema,
|
|
123
|
+
datasetRelease: ImmutableReleaseRefSchema,
|
|
124
|
+
evidenceSetRelease: ImmutableReleaseRefSchema.nullable(),
|
|
125
|
+
files: z.array(
|
|
126
|
+
z.object({
|
|
127
|
+
path: z.string().trim().min(1).max(2e3),
|
|
128
|
+
sha256: ReleaseHashSchema,
|
|
129
|
+
sizeBytes: z.number().int().nonnegative()
|
|
130
|
+
}).strict()
|
|
131
|
+
).max(1e5)
|
|
132
|
+
}).strict();
|
|
133
|
+
var ResolvedTrainingBundleManifestSchema = ResolvedTrainingBundleContentSchema.extend({
|
|
134
|
+
contentHash: ReleaseHashSchema
|
|
135
|
+
}).strict();
|
|
136
|
+
|
|
137
|
+
// src/training-learning-batch.ts
|
|
138
|
+
import { compileTaskBatch, learningRef, taskBatchPackageMetadata, verifyLearningTextAsset } from "@openpond/evals";
|
|
139
|
+
function materializeLearningBatchTaskset(input) {
|
|
140
|
+
const release = compileTaskBatch(input);
|
|
141
|
+
const metadata = taskBatchPackageMetadata(release);
|
|
142
|
+
if (release.environment.kind !== "text" || release.tools.length || release.tasks.some((task) => task.artifactRefs.length)) throw new Error("This learning batch requires an environment or asset adapter before training preparation.");
|
|
143
|
+
const sourceId = input.source.id;
|
|
144
|
+
const signals = { demonstrations: [], preferences: [], corrections: [], feedback: [], rewards: [], labels: [] };
|
|
145
|
+
const fixtures = [];
|
|
146
|
+
for (const admission of metadata.admissions) {
|
|
147
|
+
const evidence = input.evidence.find((item) => item.id === admission.evidence.id);
|
|
148
|
+
const decision = input.decisions.find((item) => item.id === admission.decision.id);
|
|
149
|
+
if (input.batch.purpose === "reward_training" && decision.grade?.training.status === "scored") signals.rewards.push({
|
|
150
|
+
id: `reward-${admission.taskId}`,
|
|
151
|
+
taskId: admission.taskId,
|
|
152
|
+
kind: "reward",
|
|
153
|
+
task: input.definition.instructions,
|
|
154
|
+
rules: [{ id: input.binding.id, points: 1, condition: "Execute the released Reward binding with its declared normalization, weights and gates." }],
|
|
155
|
+
otherwisePoints: 0,
|
|
156
|
+
executable: true,
|
|
157
|
+
approved: true,
|
|
158
|
+
confidence: 1,
|
|
159
|
+
sourceRefs: [sourceId],
|
|
160
|
+
artifactRef: input.binding.id,
|
|
161
|
+
metadata: { rewardBinding: learningRef(input.binding), evidence: admission.evidence, decision: admission.decision }
|
|
162
|
+
});
|
|
163
|
+
if (admission.supervisedTarget !== null) signals.demonstrations.push({ kind: "demonstration", id: `demo-${admission.taskId}`, taskId: admission.taskId, sourceRefs: [sourceId], artifactRef: admission.decision.id, approved: true, confidence: 1, prompt: null, response: JSON.stringify(admission.supervisedTarget), metadata: { evidence: admission.evidence, decision: admission.decision, targetGradeHash: decision.targetGrade?.contentHash } });
|
|
164
|
+
for (const [kind, output, grade] of [["observed", evidence.submission.observedOutput, decision.grade], ["target", decision.approvedTarget, decision.targetGrade]]) {
|
|
165
|
+
const outcome = fixtureOutcome(grade);
|
|
166
|
+
if (output === null || outcome === null) continue;
|
|
167
|
+
fixtures.push({ id: `fixture-${kind}-${admission.taskId}`, taskId: admission.taskId, label: outcome.passed ? "positive" : "negative", output, infrastructureError: null, expectedPassed: outcome.passed, expectedRewardEligible: outcome.rewardEligible, metadata: { gradeReceiptHash: grade.contentHash, evidence: admission.evidence, decision: admission.decision } });
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
if (!fixtures.length) throw new Error("Grade at least one reviewed response before preparing this batch. Grader fixtures must come from actual receipts.");
|
|
171
|
+
const graders = projectLearningBatchGraders(input.binding, input.rewards, input.assets);
|
|
172
|
+
const generatedFiles = [];
|
|
173
|
+
for (const grader of release.graders) {
|
|
174
|
+
if (grader.kind !== "custom_verifier") continue;
|
|
175
|
+
const asset = input.assets?.find((asset2) => asset2.id === grader.verifierRef.id);
|
|
176
|
+
if (!asset) throw new Error(`Reward ${grader.id} is missing its immutable verifier source.`);
|
|
177
|
+
const module = learningVerifierModule(grader.verifierRef.contentHash);
|
|
178
|
+
if (!generatedFiles.some((file) => file.path === module)) generatedFiles.push({ path: module, role: "verifier", content: verifyLearningTextAsset(asset, grader.verifierRef) });
|
|
179
|
+
}
|
|
180
|
+
const taskset = TasksetSchema.parse({
|
|
181
|
+
schemaVersion: "openpond.taskset.v1",
|
|
182
|
+
id: `learning-${contentHash([input.profileId, input.batch.contentHash]).slice(0, 40)}`,
|
|
183
|
+
revision: 1,
|
|
184
|
+
profileId: input.profileId,
|
|
185
|
+
profileRelease: null,
|
|
186
|
+
createImproveRunId: null,
|
|
187
|
+
name: `${input.definition.name} \xB7 ${input.batch.examples.length} approved examples`,
|
|
188
|
+
objective: input.definition.instructions,
|
|
189
|
+
purpose: "general",
|
|
190
|
+
benchmark: null,
|
|
191
|
+
status: "needs_review",
|
|
192
|
+
sourceRefs: [input.source],
|
|
193
|
+
datasetArtifact: null,
|
|
194
|
+
policy: release.policy,
|
|
195
|
+
environment: { protocolVersion: "openpond.taskEnvironment.v1", kind: "chat", entrypoint: "openpond.text.v1", stateful: false, deterministicSeeds: release.environment.deterministicSeeds, toolNames: [], lifecycle: ["create", "reset", "step", "grade", "cleanup"], defaultTimeoutMs: release.environment.defaultTimeoutMs, networkPolicy: release.environment.networkPolicy, metadata: { portableEnvironment: release.environment } },
|
|
196
|
+
capabilities: { schemaVersion: "openpond.tasksetCapabilities.v1", taskKind: "chat", supportedSignals: signals.demonstrations.length ? ["demonstration", "reward"] : ["reward"], compatibleMethods: input.batch.purpose === "supervised_training" ? ["sft"] : input.batch.purpose === "reward_training" ? ["grpo", "ppo"] : ["none"], rewardKinds: ["deterministic"], requiresTools: false, requiresState: false, requiresPrivilegedGrading: true, environmentPlacements: ["local", "remote"], exportable: true, portabilityBlockers: [] },
|
|
197
|
+
tasks: release.tasks.map(({ artifactRefs: _assets, ...task }) => ({ ...task, schemaVersion: "openpond.taskData.v1", sourceRefs: [sourceId], metadata: { admission: metadata.admissions.find((entry) => entry.taskId === task.id), exampleOrigin: input.evidence.find((evidence) => evidence.id === task.id)?.correctionFeedbackId ? "corrected" : "extracted" } })),
|
|
198
|
+
graders,
|
|
199
|
+
graderFixtures: fixtures,
|
|
200
|
+
learningSignals: signals,
|
|
201
|
+
authoringProvenance: { schemaVersion: "openpond.taskAuthoringProvenance.v1", model: null, modelConfig: {}, skillHash: contentHash("openpond-learning-batch-v1"), promptTemplateVersion: "learning-batch-v1", buildIntent: input.batch.purpose === "supervised_training" ? "demonstrations" : "verifiable_reward", buildSpecification: null, evidenceHashes: input.batch.examples.map((entry) => entry.evidence.contentHash), tasksetSdkVersion: "learning-batch-v1", sourceCommit: null, repairHistory: [], createdAt: input.batch.sealedAt },
|
|
202
|
+
readiness: null,
|
|
203
|
+
contentHash: "00000000",
|
|
204
|
+
createdAt: input.batch.sealedAt,
|
|
205
|
+
updatedAt: input.batch.sealedAt,
|
|
206
|
+
metadata: { learning: metadata, learningRelease: learningRef(release), trainingMethod: input.batch.purpose === "supervised_training" ? "sft" : input.batch.purpose === "reward_training" ? "grpo" : "none", tasksetOutputContract: { mode: "structured_json", jsonSchema: input.definition.outputSchema, renderer: null } }
|
|
207
|
+
});
|
|
208
|
+
return { taskset: TasksetSchema.parse({ ...taskset, contentHash: computeTasksetHash(taskset) }), release, generatedFiles };
|
|
209
|
+
}
|
|
210
|
+
function fixtureOutcome(grade) {
|
|
211
|
+
if (!grade) return null;
|
|
212
|
+
const outcome = grade.training.status === "not_configured" ? grade.evaluation : grade.training;
|
|
213
|
+
if (outcome.status !== "scored") return null;
|
|
214
|
+
return { passed: outcome.passed === true, rewardEligible: grade.training.status === "scored" };
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
// src/training-bundle.ts
|
|
218
|
+
function buildTasksetTrainingBundle(input) {
|
|
219
|
+
const { taskset, modelProject, harnessRelease, tasksetRelease } = input;
|
|
220
|
+
const setup = modelProject.trainingSetup;
|
|
221
|
+
const releasedHarness = ImmutableReleaseRefSchema.parse(harnessRelease);
|
|
222
|
+
const releasedTaskset = ImmutableReleaseRefSchema.parse(tasksetRelease);
|
|
223
|
+
void input.openpondRelease;
|
|
224
|
+
void input.workerProtocol;
|
|
225
|
+
const actualTasksetHash = computeTasksetHash(taskset);
|
|
226
|
+
if (actualTasksetHash !== taskset.contentHash) {
|
|
227
|
+
throw new Error(
|
|
228
|
+
"Taskset authoring state changed after its release was selected."
|
|
229
|
+
);
|
|
230
|
+
}
|
|
231
|
+
if (!setup.baseModel?.revision || !setup.baseModel.tokenizerRevision || !setup.baseModel.chatTemplateHash || !setup.recipe || !setup.tasksetRef || setup.tasksetRef.id !== taskset.id || setup.tasksetRef.contentHash !== taskset.contentHash) {
|
|
232
|
+
throw new Error(
|
|
233
|
+
"Model Run must bind an exact Taskset, Model revision, tokenizer, chat template, and Recipe."
|
|
234
|
+
);
|
|
235
|
+
}
|
|
236
|
+
const profileRelease = taskset.profileRelease ?? {
|
|
237
|
+
id: `profile_${taskset.profileId}`,
|
|
238
|
+
revision: taskset.revision,
|
|
239
|
+
contentHash: contentHash({
|
|
240
|
+
profileId: taskset.profileId,
|
|
241
|
+
sourceCommit: taskset.authoringProvenance.sourceCommit,
|
|
242
|
+
skillHash: taskset.authoringProvenance.skillHash
|
|
243
|
+
})
|
|
244
|
+
};
|
|
245
|
+
const assets = /* @__PURE__ */ new Map();
|
|
246
|
+
if (input.evaluationSource) {
|
|
247
|
+
const evaluation = TrainingEvaluationSourceSchema.parse(input.evaluationSource);
|
|
248
|
+
if (contentHash(evaluation.taskset) !== contentHash(setup.evaluationTasksetRef)) {
|
|
249
|
+
throw new Error("The evaluation source differs from the prepared Model configuration.");
|
|
250
|
+
}
|
|
251
|
+
assertTrainingEvaluationIsolation(taskset.tasks.filter((task) => task.split === "train"), evaluation.tasks);
|
|
252
|
+
assets.set(TRAINING_EVALUATION_SOURCE_PATH, new TextEncoder().encode(canonicalJson(evaluation)));
|
|
253
|
+
} else if (setup.evaluationTasksetRef) {
|
|
254
|
+
throw new Error("The prepared Model requires its pinned evaluation source bytes.");
|
|
255
|
+
}
|
|
256
|
+
const harnessSource = input.harnessSource ? validateHarnessSourcePackage(input.harnessSource, releasedHarness) : null;
|
|
257
|
+
if (setup.harnessRelease && !harnessSource) {
|
|
258
|
+
throw new Error("A selected Harness requires its complete immutable source package.");
|
|
259
|
+
}
|
|
260
|
+
if (harnessSource && (!setup.harnessRelease || setup.harnessRelease.id !== releasedHarness.id || setup.harnessRelease.contentHash !== releasedHarness.contentHash)) {
|
|
261
|
+
throw new Error("Harness source differs from the Model's explicit selection.");
|
|
262
|
+
}
|
|
263
|
+
if (harnessSource) {
|
|
264
|
+
const leavesLocalHost = input.runtime.placement !== "local" || input.compute.kind !== "local";
|
|
265
|
+
if (leavesLocalHost && (!harnessSource.agentSnapshot.portability.portable || harnessSource.harnessRelease.files.some((file) => file.visibility === "host_private"))) {
|
|
266
|
+
throw new Error("The selected Harness contains source that cannot leave its local host.");
|
|
267
|
+
}
|
|
268
|
+
addJsonAsset(assets, "harness/source-package.json", harnessSource);
|
|
269
|
+
}
|
|
270
|
+
addJsonAsset(assets, "harness/execution.json", HarnessSourceSelectionSchema.parse({
|
|
271
|
+
schemaVersion: "openpond.harnessSourceSelection.v1",
|
|
272
|
+
mode: harnessSource ? "selected_release" : "taskset_owned",
|
|
273
|
+
harnessRelease: releasedHarness,
|
|
274
|
+
sourcePackageHash: harnessSource?.contentHash ?? null
|
|
275
|
+
}));
|
|
276
|
+
const rewardExecution = resolvePortableTasksetRewardExecution(taskset, input.rewardExecution);
|
|
277
|
+
if (rewardExecution) {
|
|
278
|
+
const verifierAssets = input.verifierAssets ?? [];
|
|
279
|
+
const references = compileBoundGraders(rewardExecution.binding, rewardExecution.rewards).flatMap((grader) => grader.kind === "custom_verifier" ? [grader.verifierRef] : []);
|
|
280
|
+
const expected = new Set(references.map((reference) => reference.id));
|
|
281
|
+
if (new Set(verifierAssets.map((asset) => asset.id)).size !== verifierAssets.length || verifierAssets.some((asset) => !expected.has(asset.id))) throw new Error("Unexpected or duplicate private verifier asset.");
|
|
282
|
+
for (const reference of references) {
|
|
283
|
+
const asset = verifierAssets.find((asset2) => asset2.id === reference.id);
|
|
284
|
+
if (!asset || reference.visibility !== "verifier") throw new Error("Training bundle requires its private verifier asset.");
|
|
285
|
+
verifyLearningTextAsset2(asset, reference);
|
|
286
|
+
}
|
|
287
|
+
addJsonAsset(assets, "reward-binding.json", { kind: "reward_binding_v1", binding: rewardExecution.binding, rewards: rewardExecution.rewards, assets: verifierAssets });
|
|
288
|
+
} else if (input.verifierAssets?.length) {
|
|
289
|
+
throw new Error("Private verifier assets require a published Reward binding.");
|
|
290
|
+
}
|
|
291
|
+
addJsonAsset(assets, "environment.json", {
|
|
292
|
+
schemaVersion: "openpond.harnessEnvironment.v1",
|
|
293
|
+
environment: taskset.environment,
|
|
294
|
+
capabilities: taskset.capabilities,
|
|
295
|
+
policy: taskset.policy,
|
|
296
|
+
outputContract: taskset.metadata.tasksetOutputContract?.mode === "text" ? null : taskset.metadata.tasksetOutputContract ?? null
|
|
297
|
+
});
|
|
298
|
+
addJsonAsset(assets, "graders.json", {
|
|
299
|
+
schemaVersion: "openpond.harnessGraders.v1",
|
|
300
|
+
graders: taskset.graders,
|
|
301
|
+
fixtures: taskset.graderFixtures
|
|
302
|
+
});
|
|
303
|
+
addJsonAsset(assets, "tool-contract.json", {
|
|
304
|
+
schemaVersion: "openpond.harnessToolContract.v1",
|
|
305
|
+
toolNames: taskset.environment.toolNames,
|
|
306
|
+
actionBindings: taskset.environment.actionBindings ?? [],
|
|
307
|
+
capabilities: taskset.capabilities,
|
|
308
|
+
connectedAppScopes: taskset.policy.connectedAppScopes
|
|
309
|
+
});
|
|
310
|
+
const trainTasks = taskset.tasks.filter((task) => task.split === "train");
|
|
311
|
+
if (trainTasks.length > 0) {
|
|
312
|
+
addJsonAsset(assets, "dataset/train.json", {
|
|
313
|
+
schemaVersion: "openpond.datasetSplit.v1",
|
|
314
|
+
split: "train",
|
|
315
|
+
tasks: trainTasks
|
|
316
|
+
});
|
|
317
|
+
addTasksetAssets({
|
|
318
|
+
assets,
|
|
319
|
+
tasks: trainTasks,
|
|
320
|
+
tasksetAssetBytes: input.tasksetAssetBytes ?? /* @__PURE__ */ new Map()
|
|
321
|
+
});
|
|
322
|
+
} else if (taskset.datasetArtifact) {
|
|
323
|
+
addJsonAsset(assets, "dataset/artifact.json", taskset.datasetArtifact);
|
|
324
|
+
} else {
|
|
325
|
+
throw new Error("Taskset has no training dataset.");
|
|
326
|
+
}
|
|
327
|
+
const approvedSignals = Object.values(taskset.learningSignals).flat().filter((signal) => signal.approved);
|
|
328
|
+
for (const signal of approvedSignals) {
|
|
329
|
+
const value = bytes(signal);
|
|
330
|
+
assets.set(`evidence/signals/${sha256(value)}.json`, value);
|
|
331
|
+
}
|
|
332
|
+
const datasetRelease = {
|
|
333
|
+
id: `dataset_${taskset.id}_r${taskset.revision}`,
|
|
334
|
+
contentHash: contentHash({
|
|
335
|
+
taskset: releasedTaskset,
|
|
336
|
+
sourceRefs: taskset.sourceRefs,
|
|
337
|
+
datasetArtifact: taskset.datasetArtifact ?? null,
|
|
338
|
+
trainTasks
|
|
339
|
+
})
|
|
340
|
+
};
|
|
341
|
+
const evidenceSetRelease = approvedSignals.length > 0 ? {
|
|
342
|
+
id: `evidence_${taskset.id}_r${taskset.revision}`,
|
|
343
|
+
contentHash: contentHash({
|
|
344
|
+
taskset: releasedTaskset,
|
|
345
|
+
harnessRelease: releasedHarness,
|
|
346
|
+
datasetRelease,
|
|
347
|
+
profileRelease,
|
|
348
|
+
signals: approvedSignals
|
|
349
|
+
})
|
|
350
|
+
} : null;
|
|
351
|
+
const bundleContent = ResolvedTrainingBundleContentSchema.parse({
|
|
352
|
+
schemaVersion: "openpond.resolvedTrainingBundle.v1",
|
|
353
|
+
projection: "trainer",
|
|
354
|
+
harnessRelease: releasedHarness,
|
|
355
|
+
datasetRelease,
|
|
356
|
+
evidenceSetRelease,
|
|
357
|
+
files: [...assets.entries()].sort(([left], [right]) => left.localeCompare(right)).map(([assetPath, value]) => ({
|
|
358
|
+
path: assetPath,
|
|
359
|
+
sha256: sha256(value),
|
|
360
|
+
sizeBytes: value.byteLength
|
|
361
|
+
}))
|
|
362
|
+
});
|
|
363
|
+
const resolvedBundleManifest = ResolvedTrainingBundleManifestSchema.parse({
|
|
364
|
+
...bundleContent,
|
|
365
|
+
contentHash: contentHash(bundleContent)
|
|
366
|
+
});
|
|
367
|
+
const manifestContent = HarnessRunManifestContentSchema.parse({
|
|
368
|
+
schemaVersion: "openpond.harnessRunManifest.v1",
|
|
369
|
+
id: `manifest_${input.modelRunId}_${input.approval.approvalHash.slice(0, 16)}`,
|
|
370
|
+
harnessRelease,
|
|
371
|
+
datasetRelease,
|
|
372
|
+
evidenceSets: evidenceSetRelease ? [evidenceSetRelease] : [],
|
|
373
|
+
model: {
|
|
374
|
+
source: setup.baseModel.modelId,
|
|
375
|
+
revision: setup.baseModel.revision,
|
|
376
|
+
artifactHash: null,
|
|
377
|
+
tokenizerRevision: setup.baseModel.tokenizerRevision,
|
|
378
|
+
chatTemplateHash: setup.baseModel.chatTemplateHash
|
|
379
|
+
},
|
|
380
|
+
recipe: {
|
|
381
|
+
method: setup.recipe.method,
|
|
382
|
+
version: "openpond.trainingRecipe.v1",
|
|
383
|
+
configHash: contentHash(setup.recipe)
|
|
384
|
+
},
|
|
385
|
+
runtimeTarget: input.runtime,
|
|
386
|
+
computeTarget: input.compute,
|
|
387
|
+
engine: input.engine,
|
|
388
|
+
resolvedBundleHash: resolvedBundleManifest.contentHash,
|
|
389
|
+
secretLeaseRefs: input.secretLeaseRefs ?? [],
|
|
390
|
+
approval: input.approval,
|
|
391
|
+
createdAt: modelProject.updatedAt
|
|
392
|
+
});
|
|
393
|
+
const manifest = HarnessRunManifestSchema.parse({
|
|
394
|
+
...manifestContent,
|
|
395
|
+
contentHash: contentHash(manifestContent)
|
|
396
|
+
});
|
|
397
|
+
return {
|
|
398
|
+
manifest,
|
|
399
|
+
resolvedBundleManifest,
|
|
400
|
+
assets,
|
|
401
|
+
profileRelease,
|
|
402
|
+
harnessRelease: releasedHarness,
|
|
403
|
+
tasksetRelease: releasedTaskset,
|
|
404
|
+
datasetRelease,
|
|
405
|
+
evidenceSetRelease
|
|
406
|
+
};
|
|
407
|
+
}
|
|
408
|
+
function addTasksetAssets(input) {
|
|
409
|
+
const expected = /* @__PURE__ */ new Set();
|
|
410
|
+
for (const task of input.tasks) {
|
|
411
|
+
for (const asset of task.assets ?? []) {
|
|
412
|
+
if (expected.has(asset.artifactRef)) {
|
|
413
|
+
throw new Error(
|
|
414
|
+
`Training asset path ${asset.artifactRef} is shared by multiple tasks.`
|
|
415
|
+
);
|
|
416
|
+
}
|
|
417
|
+
expected.add(asset.artifactRef);
|
|
418
|
+
const value = input.tasksetAssetBytes.get(asset.artifactRef);
|
|
419
|
+
if (!value) {
|
|
420
|
+
throw new Error(
|
|
421
|
+
`Resolved Training Bundle is missing Work asset ${asset.artifactRef}.`
|
|
422
|
+
);
|
|
423
|
+
}
|
|
424
|
+
if (value.byteLength !== asset.sizeBytes || sha256(value) !== asset.sha256) {
|
|
425
|
+
throw new Error(
|
|
426
|
+
`Resolved Training Bundle Work asset ${asset.artifactRef} failed immutable verification.`
|
|
427
|
+
);
|
|
428
|
+
}
|
|
429
|
+
input.assets.set(asset.artifactRef, value);
|
|
430
|
+
}
|
|
431
|
+
}
|
|
432
|
+
for (const assetPath of input.tasksetAssetBytes.keys()) {
|
|
433
|
+
if (!expected.has(assetPath)) {
|
|
434
|
+
throw new Error(
|
|
435
|
+
`Resolved Training Bundle received unexpected Work asset ${assetPath}.`
|
|
436
|
+
);
|
|
437
|
+
}
|
|
438
|
+
}
|
|
439
|
+
}
|
|
440
|
+
function addJsonAsset(assets, assetPath, value) {
|
|
441
|
+
assets.set(assetPath, bytes(value));
|
|
442
|
+
}
|
|
443
|
+
function bytes(value) {
|
|
444
|
+
return Buffer.from(canonicalJson(value), "utf8");
|
|
445
|
+
}
|
|
446
|
+
export {
|
|
447
|
+
ComputeTargetBindingSchema,
|
|
448
|
+
HarnessRunManifestContentSchema,
|
|
449
|
+
HarnessRunManifestSchema,
|
|
450
|
+
HarnessRuntimeTargetBindingSchema,
|
|
451
|
+
OpaqueSecretLeaseRefSchema,
|
|
452
|
+
ResolvedTrainingBundleContentSchema,
|
|
453
|
+
ResolvedTrainingBundleManifestSchema,
|
|
454
|
+
ScopedSecretDeclarationSchema,
|
|
455
|
+
TrainingEngineBindingSchema,
|
|
456
|
+
buildTasksetTrainingBundle,
|
|
457
|
+
materializeLearningBatchTaskset
|
|
458
|
+
};
|
|
459
|
+
//# sourceMappingURL=training-bundle.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/training-bundle.ts", "../src/training-bundle-contracts.ts", "../src/training-learning-batch.ts"],
|
|
4
|
+
"sourcesContent": ["import { canonicalJson, contentHash, sha256, ImmutableReleaseRefSchema, HarnessSourceSelectionSchema, validateHarnessSourcePackage, type HarnessSourcePackage, type ImmutableReleaseRef, type VersionedReleaseRef } from \"@openpond/harness\";\nimport { compileBoundGraders } from \"@openpond/evals/rewards\";\nimport { verifyLearningTextAsset, type LearningTextAsset } from \"@openpond/evals/learning\";\nimport { HarnessRunManifestContentSchema, HarnessRunManifestSchema, ResolvedTrainingBundleContentSchema, ResolvedTrainingBundleManifestSchema, type ComputeTargetBinding, type HarnessRunManifest, type HarnessRuntimeTargetBinding, type OpaqueSecretLeaseRef, type ResolvedTrainingBundleManifest, type TrainingEngineBinding } from \"./training-bundle-contracts.js\";\nimport type { ModelProject } from \"./model-projects.js\";\nimport type { Taskset } from \"./taskset-authored-contracts.js\";\nimport { computeTasksetHash } from \"./taskset-authored-validation.js\";\nimport { resolvePortableTasksetRewardExecution, type TasksetRewardExecution } from \"./taskset-authored-portable-release.js\";\nimport { TRAINING_EVALUATION_SOURCE_PATH, TrainingEvaluationSourceSchema, assertTrainingEvaluationIsolation, type TrainingEvaluationSource } from \"./training-evaluation-source.js\";\n\nexport * from \"./training-bundle-contracts.js\";\nexport { materializeLearningBatchTaskset } from \"./training-learning-batch.js\";\n\nexport type TasksetTrainingBundle = {\n manifest: HarnessRunManifest;\n resolvedBundleManifest: ResolvedTrainingBundleManifest;\n assets: ReadonlyMap<string, Uint8Array>;\n profileRelease: VersionedReleaseRef;\n harnessRelease: ImmutableReleaseRef;\n tasksetRelease: ImmutableReleaseRef;\n datasetRelease: ImmutableReleaseRef;\n evidenceSetRelease: ImmutableReleaseRef | null;\n};\n\n/**\n * Produces the one artifact the training worker consumes. The release refs in\n * the manifest are immutable lineage identifiers, not separately materialized\n * release objects.\n */\nexport function buildTasksetTrainingBundle(input: {\n taskset: Taskset;\n modelProject: ModelProject;\n modelRunId: string;\n runtime: HarnessRuntimeTargetBinding;\n compute: ComputeTargetBinding;\n engine: TrainingEngineBinding;\n approval: {\n approvalHash: string;\n approvedAt: string;\n maximumSpendUsd: number | null;\n };\n secretLeaseRefs?: OpaqueSecretLeaseRef[];\n openpondRelease: string;\n workerProtocol: string;\n harnessRelease: ImmutableReleaseRef;\n tasksetRelease: ImmutableReleaseRef;\n harnessSource?: HarnessSourcePackage | null;\n tasksetAssetBytes?: ReadonlyMap<string, Uint8Array>;\n rewardExecution?: TasksetRewardExecution;\n verifierAssets?: LearningTextAsset[];\n evaluationSource?: TrainingEvaluationSource;\n}): TasksetTrainingBundle {\n const { taskset, modelProject, harnessRelease, tasksetRelease } = input;\n const setup = modelProject.trainingSetup;\n const releasedHarness = ImmutableReleaseRefSchema.parse(harnessRelease);\n const releasedTaskset = ImmutableReleaseRefSchema.parse(tasksetRelease);\n // These remain part of the preparation API for adapter compatibility; the\n // selected Harness release is now supplied explicitly and is never rebuilt\n // from mutable Profile/Taskset state here.\n void input.openpondRelease;\n void input.workerProtocol;\n const actualTasksetHash = computeTasksetHash(taskset);\n if (actualTasksetHash !== taskset.contentHash) {\n throw new Error(\n \"Taskset authoring state changed after its release was selected.\",\n );\n }\n if (\n !setup.baseModel?.revision ||\n !setup.baseModel.tokenizerRevision ||\n !setup.baseModel.chatTemplateHash ||\n !setup.recipe ||\n !setup.tasksetRef ||\n setup.tasksetRef.id !== taskset.id ||\n setup.tasksetRef.contentHash !== taskset.contentHash\n ) {\n throw new Error(\n \"Model Run must bind an exact Taskset, Model revision, tokenizer, chat template, and Recipe.\",\n );\n }\n\n const profileRelease = taskset.profileRelease ?? {\n id: `profile_${taskset.profileId}`,\n revision: taskset.revision,\n contentHash: contentHash({\n profileId: taskset.profileId,\n sourceCommit: taskset.authoringProvenance.sourceCommit,\n skillHash: taskset.authoringProvenance.skillHash,\n }),\n };\n const assets = new Map<string, Uint8Array>();\n if (input.evaluationSource) {\n const evaluation = TrainingEvaluationSourceSchema.parse(input.evaluationSource);\n if (contentHash(evaluation.taskset) !== contentHash(setup.evaluationTasksetRef)) {\n throw new Error(\"The evaluation source differs from the prepared Model configuration.\");\n }\n assertTrainingEvaluationIsolation(taskset.tasks.filter(task => task.split === \"train\"), evaluation.tasks);\n assets.set(TRAINING_EVALUATION_SOURCE_PATH, new TextEncoder().encode(canonicalJson(evaluation)));\n } else if (setup.evaluationTasksetRef) {\n throw new Error(\"The prepared Model requires its pinned evaluation source bytes.\");\n }\n const harnessSource = input.harnessSource\n ? validateHarnessSourcePackage(input.harnessSource, releasedHarness)\n : null;\n if (setup.harnessRelease && !harnessSource) {\n throw new Error(\"A selected Harness requires its complete immutable source package.\");\n }\n if (harnessSource && (!setup.harnessRelease\n || setup.harnessRelease.id !== releasedHarness.id\n || setup.harnessRelease.contentHash !== releasedHarness.contentHash)) {\n throw new Error(\"Harness source differs from the Model's explicit selection.\");\n }\n if (harnessSource) {\n const leavesLocalHost = input.runtime.placement !== \"local\" || input.compute.kind !== \"local\";\n if (leavesLocalHost && (!harnessSource.agentSnapshot.portability.portable\n || harnessSource.harnessRelease.files.some(file => file.visibility === \"host_private\"))) {\n throw new Error(\"The selected Harness contains source that cannot leave its local host.\");\n }\n addJsonAsset(assets, \"harness/source-package.json\", harnessSource);\n }\n addJsonAsset(assets, \"harness/execution.json\", HarnessSourceSelectionSchema.parse({\n schemaVersion: \"openpond.harnessSourceSelection.v1\",\n mode: harnessSource ? \"selected_release\" : \"taskset_owned\",\n harnessRelease: releasedHarness,\n sourcePackageHash: harnessSource?.contentHash ?? null,\n }));\n const rewardExecution = resolvePortableTasksetRewardExecution(taskset, input.rewardExecution);\n if (rewardExecution) {\n const verifierAssets = input.verifierAssets ?? [];\n const references = compileBoundGraders(rewardExecution.binding, rewardExecution.rewards)\n .flatMap(grader => grader.kind === \"custom_verifier\" ? [grader.verifierRef] : []);\n const expected = new Set(references.map(reference => reference.id));\n if (new Set(verifierAssets.map(asset => asset.id)).size !== verifierAssets.length\n || verifierAssets.some(asset => !expected.has(asset.id))) throw new Error(\"Unexpected or duplicate private verifier asset.\");\n for (const reference of references) {\n const asset = verifierAssets.find(asset => asset.id === reference.id);\n if (!asset || reference.visibility !== \"verifier\") throw new Error(\"Training bundle requires its private verifier asset.\");\n verifyLearningTextAsset(asset, reference);\n }\n addJsonAsset(assets, \"reward-binding.json\", { kind: \"reward_binding_v1\", binding: rewardExecution.binding, rewards: rewardExecution.rewards, assets: verifierAssets });\n } else if (input.verifierAssets?.length) {\n throw new Error(\"Private verifier assets require a published Reward binding.\");\n }\n addJsonAsset(assets, \"environment.json\", {\n schemaVersion: \"openpond.harnessEnvironment.v1\",\n environment: taskset.environment,\n capabilities: taskset.capabilities,\n policy: taskset.policy,\n outputContract:\n (taskset.metadata.tasksetOutputContract as { mode?: unknown } | undefined)\n ?.mode === \"text\"\n ? null\n : taskset.metadata.tasksetOutputContract ?? null,\n });\n addJsonAsset(assets, \"graders.json\", {\n schemaVersion: \"openpond.harnessGraders.v1\",\n graders: taskset.graders,\n fixtures: taskset.graderFixtures,\n });\n addJsonAsset(assets, \"tool-contract.json\", {\n schemaVersion: \"openpond.harnessToolContract.v1\",\n toolNames: taskset.environment.toolNames,\n actionBindings: taskset.environment.actionBindings ?? [],\n capabilities: taskset.capabilities,\n connectedAppScopes: taskset.policy.connectedAppScopes,\n });\n const trainTasks = taskset.tasks.filter((task) => task.split === \"train\");\n if (trainTasks.length > 0) {\n addJsonAsset(assets, \"dataset/train.json\", {\n schemaVersion: \"openpond.datasetSplit.v1\",\n split: \"train\",\n tasks: trainTasks,\n });\n addTasksetAssets({\n assets,\n tasks: trainTasks,\n tasksetAssetBytes: input.tasksetAssetBytes ?? new Map(),\n });\n } else if (taskset.datasetArtifact) {\n addJsonAsset(assets, \"dataset/artifact.json\", taskset.datasetArtifact);\n } else {\n throw new Error(\"Taskset has no training dataset.\");\n }\n\n const approvedSignals = Object.values(taskset.learningSignals)\n .flat()\n .filter((signal) => signal.approved);\n for (const signal of approvedSignals) {\n const value = bytes(signal);\n assets.set(`evidence/signals/${sha256(value)}.json`, value);\n }\n\n const datasetRelease = {\n id: `dataset_${taskset.id}_r${taskset.revision}`,\n contentHash: contentHash({\n taskset: releasedTaskset,\n sourceRefs: taskset.sourceRefs,\n datasetArtifact: taskset.datasetArtifact ?? null,\n trainTasks,\n }),\n };\n const evidenceSetRelease =\n approvedSignals.length > 0\n ? {\n id: `evidence_${taskset.id}_r${taskset.revision}`,\n contentHash: contentHash({\n taskset: releasedTaskset,\n harnessRelease: releasedHarness,\n datasetRelease,\n profileRelease,\n signals: approvedSignals,\n }),\n }\n : null;\n\n const bundleContent = ResolvedTrainingBundleContentSchema.parse({\n schemaVersion: \"openpond.resolvedTrainingBundle.v1\",\n projection: \"trainer\",\n harnessRelease: releasedHarness,\n datasetRelease,\n evidenceSetRelease,\n files: [...assets.entries()]\n .sort(([left], [right]) => left.localeCompare(right))\n .map(([assetPath, value]) => ({\n path: assetPath,\n sha256: sha256(value),\n sizeBytes: value.byteLength,\n })),\n });\n const resolvedBundleManifest = ResolvedTrainingBundleManifestSchema.parse({\n ...bundleContent,\n contentHash: contentHash(bundleContent),\n });\n const manifestContent = HarnessRunManifestContentSchema.parse({\n schemaVersion: \"openpond.harnessRunManifest.v1\",\n id: `manifest_${input.modelRunId}_${input.approval.approvalHash.slice(0, 16)}`,\n harnessRelease,\n datasetRelease,\n evidenceSets: evidenceSetRelease ? [evidenceSetRelease] : [],\n model: {\n source: setup.baseModel.modelId,\n revision: setup.baseModel.revision,\n artifactHash: null,\n tokenizerRevision: setup.baseModel.tokenizerRevision,\n chatTemplateHash: setup.baseModel.chatTemplateHash,\n },\n recipe: {\n method: setup.recipe.method,\n version: \"openpond.trainingRecipe.v1\",\n configHash: contentHash(setup.recipe),\n },\n runtimeTarget: input.runtime,\n computeTarget: input.compute,\n engine: input.engine,\n resolvedBundleHash: resolvedBundleManifest.contentHash,\n secretLeaseRefs: input.secretLeaseRefs ?? [],\n approval: input.approval,\n createdAt: modelProject.updatedAt,\n });\n const manifest = HarnessRunManifestSchema.parse({\n ...manifestContent,\n contentHash: contentHash(manifestContent),\n });\n return {\n manifest,\n resolvedBundleManifest,\n assets,\n profileRelease,\n harnessRelease: releasedHarness,\n tasksetRelease: releasedTaskset,\n datasetRelease,\n evidenceSetRelease,\n };\n}\n\nfunction addTasksetAssets(input: {\n assets: Map<string, Uint8Array>;\n tasks: Taskset[\"tasks\"];\n tasksetAssetBytes: ReadonlyMap<string, Uint8Array>;\n}): void {\n const expected = new Set<string>();\n for (const task of input.tasks) {\n for (const asset of task.assets ?? []) {\n if (expected.has(asset.artifactRef)) {\n throw new Error(\n `Training asset path ${asset.artifactRef} is shared by multiple tasks.`,\n );\n }\n expected.add(asset.artifactRef);\n const value = input.tasksetAssetBytes.get(asset.artifactRef);\n if (!value) {\n throw new Error(\n `Resolved Training Bundle is missing Work asset ${asset.artifactRef}.`,\n );\n }\n if (value.byteLength !== asset.sizeBytes || sha256(value) !== asset.sha256) {\n throw new Error(\n `Resolved Training Bundle Work asset ${asset.artifactRef} failed immutable verification.`,\n );\n }\n input.assets.set(asset.artifactRef, value);\n }\n }\n for (const assetPath of input.tasksetAssetBytes.keys()) {\n if (!expected.has(assetPath)) {\n throw new Error(\n `Resolved Training Bundle received unexpected Work asset ${assetPath}.`,\n );\n }\n }\n}\n\nfunction addJsonAsset(\n assets: Map<string, Uint8Array>,\n assetPath: string,\n value: unknown,\n): void {\n assets.set(assetPath, bytes(value));\n}\n\nfunction bytes(value: unknown): Uint8Array {\n return Buffer.from(canonicalJson(value), \"utf8\");\n}\n", "import { z } from \"zod\";\nimport { ImmutableReleaseRefSchema, ReleaseHashSchema, ReleaseIdSchema, ReleaseTimestampSchema } from \"@openpond/harness\";\n\nexport const ScopedSecretDeclarationSchema = z\n .object({\n id: ReleaseIdSchema,\n purpose: z.string().trim().min(1).max(500),\n audience: z.enum([\n \"orchestrator\",\n \"environment\",\n \"privileged_scorer\",\n \"trainer\",\n \"infrastructure\",\n ]),\n required: z.boolean(),\n ttlSeconds: z.number().int().positive().max(86_400),\n scopes: z.array(z.string().trim().min(1).max(500)).max(100).default([]),\n })\n .strict();\n\nexport const OpaqueSecretLeaseRefSchema = z\n .object({\n declarationId: ReleaseIdSchema,\n leaseRef: z.string().trim().min(8).max(1_000),\n audience: ScopedSecretDeclarationSchema.shape.audience,\n expiresAt: ReleaseTimestampSchema,\n })\n .strict();\n\nexport type ScopedSecretDeclaration = z.infer<\n typeof ScopedSecretDeclarationSchema\n>;\nexport type OpaqueSecretLeaseRef = z.infer<typeof OpaqueSecretLeaseRefSchema>;\n\nexport const HarnessRuntimeTargetBindingSchema = z\n .object({\n adapterId: ReleaseIdSchema,\n placement: z.enum([\"local\", \"remote\", \"colocated\", \"provider_native\"]),\n capabilityReceipt: ReleaseHashSchema,\n runtimeVersion: z.string().trim().min(1).max(200),\n dataPlane: z\n .object({\n provider: ReleaseIdSchema,\n dataPlaneId: ReleaseIdSchema,\n cellId: ReleaseIdSchema,\n runnerPoolId: ReleaseIdSchema,\n runtimeImageDigest: z.string().regex(/^sha256:[a-f0-9]{64}$/),\n capabilityReceipt: ReleaseHashSchema,\n })\n .strict()\n .nullable(),\n })\n .strict();\n\nexport const ComputeTargetBindingSchema = z\n .object({\n adapterId: ReleaseIdSchema,\n kind: z.enum([\"local\", \"ssh\", \"managed\", \"custom\"]),\n deviceOrPool: z.string().trim().min(1).max(1_000),\n capabilityReceipt: ReleaseHashSchema,\n provider: ReleaseIdSchema.nullable(),\n })\n .strict();\n\nexport const TrainingEngineBindingSchema = z\n .object({\n adapterId: ReleaseIdSchema,\n workerVersion: z.string().trim().min(1).max(200),\n workerImageDigest: z\n .string()\n .regex(/^sha256:[a-f0-9]{64}$/)\n .nullable(),\n upstreamRevision: z.string().trim().min(1).max(500),\n capabilityReceipt: ReleaseHashSchema,\n })\n .strict();\n\nexport const HarnessRunManifestContentSchema = z\n .object({\n schemaVersion: z.literal(\"openpond.harnessRunManifest.v1\"),\n id: ReleaseIdSchema,\n harnessRelease: ImmutableReleaseRefSchema,\n datasetRelease: ImmutableReleaseRefSchema,\n evidenceSets: z.array(ImmutableReleaseRefSchema).max(10_000),\n model: z\n .object({\n source: z.string().trim().min(1).max(200),\n revision: z.string().trim().min(1).max(500),\n artifactHash: ReleaseHashSchema.nullable(),\n tokenizerRevision: z.string().trim().min(1).max(500),\n chatTemplateHash: ReleaseHashSchema,\n })\n .strict(),\n recipe: z\n .object({\n method: z.string().trim().min(1).max(100),\n version: z.string().trim().min(1).max(200),\n configHash: ReleaseHashSchema,\n })\n .strict(),\n runtimeTarget: HarnessRuntimeTargetBindingSchema,\n computeTarget: ComputeTargetBindingSchema,\n engine: TrainingEngineBindingSchema,\n resolvedBundleHash: ReleaseHashSchema,\n secretLeaseRefs: z.array(OpaqueSecretLeaseRefSchema).max(1_000),\n approval: z\n .object({\n approvalHash: ReleaseHashSchema,\n approvedAt: ReleaseTimestampSchema,\n maximumSpendUsd: z.number().nonnegative().nullable(),\n })\n .strict(),\n createdAt: ReleaseTimestampSchema,\n })\n .strict();\n\nexport const HarnessRunManifestSchema = HarnessRunManifestContentSchema.extend({\n contentHash: ReleaseHashSchema,\n}).strict();\n\nexport const ResolvedTrainingBundleContentSchema = z\n .object({\n schemaVersion: z.literal(\"openpond.resolvedTrainingBundle.v1\"),\n projection: z.literal(\"trainer\"),\n harnessRelease: ImmutableReleaseRefSchema,\n datasetRelease: ImmutableReleaseRefSchema,\n evidenceSetRelease: ImmutableReleaseRefSchema.nullable(),\n files: z\n .array(\n z\n .object({\n path: z.string().trim().min(1).max(2_000),\n sha256: ReleaseHashSchema,\n sizeBytes: z.number().int().nonnegative(),\n })\n .strict(),\n )\n .max(100_000),\n })\n .strict();\n\nexport const ResolvedTrainingBundleManifestSchema =\n ResolvedTrainingBundleContentSchema.extend({\n contentHash: ReleaseHashSchema,\n }).strict();\n\nexport type HarnessRuntimeTargetBinding = z.infer<\n typeof HarnessRuntimeTargetBindingSchema\n>;\nexport type ComputeTargetBinding = z.infer<typeof ComputeTargetBindingSchema>;\nexport type TrainingEngineBinding = z.infer<\n typeof TrainingEngineBindingSchema\n>;\nexport type HarnessRunManifest = z.infer<typeof HarnessRunManifestSchema>;\nexport type ResolvedTrainingBundleManifest = z.infer<\n typeof ResolvedTrainingBundleManifestSchema\n>;\n", "import { TasksetSchema, type GeneratedTaskFile } from \"./taskset-authored-contracts.js\";\nimport type { GraderFixture, LearningSignalInventory, TasksetSourceRef } from \"./taskset-draft-core.js\";\nimport { compileTaskBatch, learningRef, taskBatchPackageMetadata, verifyLearningTextAsset, type LearningTextAsset, type RewardBinding, type RewardComposition, type RewardRelease, type TaskAdmissionDecision, type TaskBatch, type TaskDefinition, type TaskEvidence } from \"@openpond/evals\";\nimport { computeTasksetHash } from \"./taskset-authored-validation.js\";\nimport { contentHash } from \"@openpond/harness\";\nimport { learningVerifierModule, projectLearningBatchGraders } from \"./taskset-package-grader-projection.js\";\n\n/** Projects a sealed batch into training inputs. The public batch compiler\n * rechecks every evidence/decision snapshot before adaptation. */\nexport function materializeLearningBatchTaskset(input: {\n batch: TaskBatch; definition: TaskDefinition; binding: RewardBinding; rewards: RewardRelease[];\n evidence: TaskEvidence[]; decisions: TaskAdmissionDecision[]; profileId: string;\n source: TasksetSourceRef;\n assets?: LearningTextAsset[];\n}) {\n const release = compileTaskBatch(input);\n const metadata = taskBatchPackageMetadata(release);\n if (release.environment.kind !== \"text\" || release.tools.length || release.tasks.some((task) => task.artifactRefs.length)) throw new Error(\"This learning batch requires an environment or asset adapter before training preparation.\");\n const sourceId = input.source.id;\n const signals: LearningSignalInventory = { demonstrations: [], preferences: [], corrections: [], feedback: [], rewards: [], labels: [] };\n const fixtures: GraderFixture[] = [];\n for (const admission of metadata.admissions) {\n const evidence = input.evidence.find((item) => item.id === admission.evidence.id)!;\n const decision = input.decisions.find((item) => item.id === admission.decision.id)!;\n if (input.batch.purpose === \"reward_training\" && decision.grade?.training.status === \"scored\") signals.rewards.push({\n id: `reward-${admission.taskId}`, taskId: admission.taskId, kind: \"reward\", task: input.definition.instructions,\n rules: [{ id: input.binding.id, points: 1, condition: \"Execute the released Reward binding with its declared normalization, weights and gates.\" }],\n otherwisePoints: 0, executable: true, approved: true, confidence: 1, sourceRefs: [sourceId], artifactRef: input.binding.id,\n metadata: { rewardBinding: learningRef(input.binding), evidence: admission.evidence, decision: admission.decision },\n });\n if (admission.supervisedTarget !== null) signals.demonstrations.push({ kind: \"demonstration\", id: `demo-${admission.taskId}`, taskId: admission.taskId, sourceRefs: [sourceId], artifactRef: admission.decision.id, approved: true, confidence: 1, prompt: null, response: JSON.stringify(admission.supervisedTarget), metadata: { evidence: admission.evidence, decision: admission.decision, targetGradeHash: decision.targetGrade?.contentHash } });\n for (const [kind, output, grade] of [[\"observed\", evidence.submission.observedOutput, decision.grade], [\"target\", decision.approvedTarget, decision.targetGrade]] as const) {\n const outcome = fixtureOutcome(grade);\n if (output === null || outcome === null) continue;\n fixtures.push({ id: `fixture-${kind}-${admission.taskId}`, taskId: admission.taskId, label: outcome.passed ? \"positive\" : \"negative\", output, infrastructureError: null, expectedPassed: outcome.passed, expectedRewardEligible: outcome.rewardEligible, metadata: { gradeReceiptHash: grade!.contentHash, evidence: admission.evidence, decision: admission.decision } });\n }\n }\n if (!fixtures.length) throw new Error(\"Grade at least one reviewed response before preparing this batch. Grader fixtures must come from actual receipts.\");\n const graders = projectLearningBatchGraders(input.binding, input.rewards, input.assets);\n const generatedFiles: GeneratedTaskFile[] = [];\n for (const grader of release.graders) {\n if (grader.kind !== \"custom_verifier\") continue;\n const asset = input.assets?.find((asset) => asset.id === grader.verifierRef.id);\n if (!asset) throw new Error(`Reward ${grader.id} is missing its immutable verifier source.`);\n const module = learningVerifierModule(grader.verifierRef.contentHash);\n if (!generatedFiles.some((file) => file.path === module)) generatedFiles.push({ path: module, role: \"verifier\", content: verifyLearningTextAsset(asset, grader.verifierRef) });\n }\n const taskset = TasksetSchema.parse({\n schemaVersion: \"openpond.taskset.v1\", id: `learning-${contentHash([input.profileId, input.batch.contentHash]).slice(0, 40)}`, revision: 1,\n profileId: input.profileId, profileRelease: null, createImproveRunId: null, name: `${input.definition.name} \u00B7 ${input.batch.examples.length} approved examples`, objective: input.definition.instructions,\n purpose: \"general\", benchmark: null, status: \"needs_review\", sourceRefs: [input.source], datasetArtifact: null,\n policy: release.policy,\n environment: { protocolVersion: \"openpond.taskEnvironment.v1\", kind: \"chat\", entrypoint: \"openpond.text.v1\", stateful: false, deterministicSeeds: release.environment.deterministicSeeds, toolNames: [], lifecycle: [\"create\", \"reset\", \"step\", \"grade\", \"cleanup\"], defaultTimeoutMs: release.environment.defaultTimeoutMs, networkPolicy: release.environment.networkPolicy, metadata: { portableEnvironment: release.environment } },\n capabilities: { schemaVersion: \"openpond.tasksetCapabilities.v1\", taskKind: \"chat\", supportedSignals: signals.demonstrations.length ? [\"demonstration\", \"reward\"] : [\"reward\"], compatibleMethods: input.batch.purpose === \"supervised_training\" ? [\"sft\"] : input.batch.purpose === \"reward_training\" ? [\"grpo\", \"ppo\"] : [\"none\"], rewardKinds: [\"deterministic\"], requiresTools: false, requiresState: false, requiresPrivilegedGrading: true, environmentPlacements: [\"local\", \"remote\"], exportable: true, portabilityBlockers: [] },\n tasks: release.tasks.map(({ artifactRefs: _assets, ...task }) => ({ ...task, schemaVersion: \"openpond.taskData.v1\", sourceRefs: [sourceId], metadata: { admission: metadata.admissions.find((entry) => entry.taskId === task.id), exampleOrigin: input.evidence.find((evidence) => evidence.id === task.id)?.correctionFeedbackId ? \"corrected\" : \"extracted\" } })),\n graders, graderFixtures: fixtures, learningSignals: signals,\n authoringProvenance: { schemaVersion: \"openpond.taskAuthoringProvenance.v1\", model: null, modelConfig: {}, skillHash: contentHash(\"openpond-learning-batch-v1\"), promptTemplateVersion: \"learning-batch-v1\", buildIntent: input.batch.purpose === \"supervised_training\" ? \"demonstrations\" : \"verifiable_reward\", buildSpecification: null, evidenceHashes: input.batch.examples.map((entry) => entry.evidence.contentHash), tasksetSdkVersion: \"learning-batch-v1\", sourceCommit: null, repairHistory: [], createdAt: input.batch.sealedAt },\n readiness: null, contentHash: \"00000000\", createdAt: input.batch.sealedAt, updatedAt: input.batch.sealedAt,\n metadata: { learning: metadata, learningRelease: learningRef(release), trainingMethod: input.batch.purpose === \"supervised_training\" ? \"sft\" : input.batch.purpose === \"reward_training\" ? \"grpo\" : \"none\", tasksetOutputContract: { mode: \"structured_json\", jsonSchema: input.definition.outputSchema, renderer: null } },\n });\n return { taskset: TasksetSchema.parse({ ...taskset, contentHash: computeTasksetHash(taskset) }), release, generatedFiles };\n}\n\nfunction fixtureOutcome(grade: RewardComposition | null) {\n if (!grade) return null;\n const outcome = grade.training.status === \"not_configured\" ? grade.evaluation : grade.training;\n if (outcome.status !== \"scored\") return null;\n return { passed: outcome.passed === true, rewardEligible: grade.training.status === \"scored\" };\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["verifyLearningTextAsset", "asset", "asset", "verifyLearningTextAsset"]
|
|
7
|
+
}
|
|
@@ -6,13 +6,13 @@ export declare const TasksetStatusSchema: z.ZodEnum<{
|
|
|
6
6
|
archived: "archived";
|
|
7
7
|
ready: "ready";
|
|
8
8
|
draft: "draft";
|
|
9
|
+
blocked: "blocked";
|
|
9
10
|
awaiting_disclosure_approval: "awaiting_disclosure_approval";
|
|
10
11
|
awaiting_materialization_approval: "awaiting_materialization_approval";
|
|
11
12
|
materializing: "materializing";
|
|
12
13
|
validating: "validating";
|
|
13
14
|
needs_review: "needs_review";
|
|
14
15
|
baselining: "baselining";
|
|
15
|
-
blocked: "blocked";
|
|
16
16
|
}>;
|
|
17
17
|
export declare const DatasetBuildIntentSchema: z.ZodEnum<{
|
|
18
18
|
rubric: "rubric";
|
|
@@ -352,13 +352,13 @@ export declare const TasksetSchema: z.ZodObject<{
|
|
|
352
352
|
archived: "archived";
|
|
353
353
|
ready: "ready";
|
|
354
354
|
draft: "draft";
|
|
355
|
+
blocked: "blocked";
|
|
355
356
|
awaiting_disclosure_approval: "awaiting_disclosure_approval";
|
|
356
357
|
awaiting_materialization_approval: "awaiting_materialization_approval";
|
|
357
358
|
materializing: "materializing";
|
|
358
359
|
validating: "validating";
|
|
359
360
|
needs_review: "needs_review";
|
|
360
361
|
baselining: "baselining";
|
|
361
|
-
blocked: "blocked";
|
|
362
362
|
}>;
|
|
363
363
|
sourceRefs: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
|
|
364
364
|
schemaVersion: z.ZodLiteral<"openpond.trainingSource.v1">;
|
|
@@ -47,7 +47,7 @@ export declare function prepareAuthoredTasksetSource(tasksetInput: Taskset, sour
|
|
|
47
47
|
publishedAt: string;
|
|
48
48
|
metadata: Record<string, unknown>;
|
|
49
49
|
} | null;
|
|
50
|
-
status: "failed" | "archived" | "ready" | "draft" | "awaiting_disclosure_approval" | "awaiting_materialization_approval" | "materializing" | "validating" | "needs_review" | "baselining"
|
|
50
|
+
status: "failed" | "archived" | "ready" | "draft" | "blocked" | "awaiting_disclosure_approval" | "awaiting_materialization_approval" | "materializing" | "validating" | "needs_review" | "baselining";
|
|
51
51
|
sourceRefs: ({
|
|
52
52
|
id: string;
|
|
53
53
|
profileId: string;
|
|
@@ -188,13 +188,13 @@ export declare const DatasetCatalogItemSchema: z.ZodObject<{
|
|
|
188
188
|
archived: "archived";
|
|
189
189
|
ready: "ready";
|
|
190
190
|
draft: "draft";
|
|
191
|
+
blocked: "blocked";
|
|
191
192
|
awaiting_disclosure_approval: "awaiting_disclosure_approval";
|
|
192
193
|
awaiting_materialization_approval: "awaiting_materialization_approval";
|
|
193
194
|
materializing: "materializing";
|
|
194
195
|
validating: "validating";
|
|
195
196
|
needs_review: "needs_review";
|
|
196
197
|
baselining: "baselining";
|
|
197
|
-
blocked: "blocked";
|
|
198
198
|
}>;
|
|
199
199
|
storageKind: z.ZodEnum<{
|
|
200
200
|
inline: "inline";
|
|
@@ -227,13 +227,13 @@ export declare const DatasetCatalogResponseSchema: z.ZodObject<{
|
|
|
227
227
|
archived: "archived";
|
|
228
228
|
ready: "ready";
|
|
229
229
|
draft: "draft";
|
|
230
|
+
blocked: "blocked";
|
|
230
231
|
awaiting_disclosure_approval: "awaiting_disclosure_approval";
|
|
231
232
|
awaiting_materialization_approval: "awaiting_materialization_approval";
|
|
232
233
|
materializing: "materializing";
|
|
233
234
|
validating: "validating";
|
|
234
235
|
needs_review: "needs_review";
|
|
235
236
|
baselining: "baselining";
|
|
236
|
-
blocked: "blocked";
|
|
237
237
|
}>;
|
|
238
238
|
storageKind: z.ZodEnum<{
|
|
239
239
|
inline: "inline";
|
|
@@ -992,7 +992,7 @@ export declare function prepareImportedTasksetPackage(input: {
|
|
|
992
992
|
publishedAt: string;
|
|
993
993
|
metadata: Record<string, unknown>;
|
|
994
994
|
} | null;
|
|
995
|
-
status: "failed" | "archived" | "ready" | "draft" | "awaiting_disclosure_approval" | "awaiting_materialization_approval" | "materializing" | "validating" | "needs_review" | "baselining"
|
|
995
|
+
status: "failed" | "archived" | "ready" | "draft" | "blocked" | "awaiting_disclosure_approval" | "awaiting_materialization_approval" | "materializing" | "validating" | "needs_review" | "baselining";
|
|
996
996
|
sourceRefs: ({
|
|
997
997
|
id: string;
|
|
998
998
|
profileId: string;
|