openpond-sdk 0.5.24 → 0.5.26
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/MODEL_STARTERS.md +2 -0
- package/dist/{chunk-V54FU6VN.js → chunk-7PCER4VL.js} +22 -3
- package/dist/{chunk-V54FU6VN.js.map → chunk-7PCER4VL.js.map} +2 -2
- package/dist/{chunk-GRGVOTZV.js → chunk-AMBW4UHN.js} +86 -6
- package/dist/chunk-AMBW4UHN.js.map +7 -0
- package/dist/model-starter-catalog.js +3 -1
- package/dist/model-starter-catalog.js.map +1 -1
- package/dist/model-starters.js +5 -1
- package/dist/taskset-packages.js +1 -1
- package/dist/training-bundle.js +3 -3
- package/dist/training-bundle.js.map +2 -2
- package/dist/types/packages/sdk/src/model-starters.d.ts +1 -0
- package/dist/types/packages/sdk/src/model-starters.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/model-training-defaults.d.ts +8 -0
- package/dist/types/packages/sdk/src/model-training-defaults.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/taskset-package-grader-projection.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/training-bundle.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/chunk-GRGVOTZV.js.map +0 -7
package/MODEL_STARTERS.md
CHANGED
|
@@ -33,6 +33,8 @@ const request = await createModelStarterCreationRequest({
|
|
|
33
33
|
|
|
34
34
|
Prepare the request on final confirmation and retain it for transport retries. The server must authorize the profile, resolve trusted catalog content, materialize immutable files and atomically save resources, model configuration and the original retry receipt. A stable operation ID alone does not implement server idempotency. Creation starts no model call or training job.
|
|
35
35
|
|
|
36
|
+
`prepareModelTrainingDefaults({ setup, package })` fills missing Run settings from a validated model Taskset package. It selects retained evaluation when the collection has validation or frozen-evaluation tasks, and prepares a GRPO recipe when the starting model and execution resources are pinned. Existing recipes and explicit evaluation selections are preserved. Hosts apply it after selecting the model-owned Taskset and Reward. These saved settings do not authorize execution: Run review still validates the exact task populations, runtime support and approved budget.
|
|
37
|
+
|
|
36
38
|
Evidence references are nullable pointers to actual verifier, baseline, training and evaluation results. Publication and package integrity do not qualify a starter or imply improvement. Continuous learning is a separate model workflow mode; it is not a starter category or comparison-run type.
|
|
37
39
|
|
|
38
40
|
The repository's invoice-extraction example authors 80 original synthetic text tasks and executes its verifier fixtures. Its baseline, training, evaluation and full product qualification remain pending. The local server includes preparation, atomic persistence and file-materialization adapters; catalog publication, route wiring and Desktop Get Started integration are separate delivery steps.
|
|
@@ -372,7 +372,7 @@ function segment(value) {
|
|
|
372
372
|
|
|
373
373
|
// src/taskset-package-grader-projection.ts
|
|
374
374
|
import { compileBoundGraders as compileBoundGraders2, resolveBoundRewards } from "@openpond/evals/rewards";
|
|
375
|
-
import { learningRef, verifyLearningTextAsset } from "@openpond/evals/learning";
|
|
375
|
+
import { learningRef, verifyLearningTextAsset, RewardFixtureAuthoringFieldsSchema } from "@openpond/evals/learning";
|
|
376
376
|
import { z } from "zod";
|
|
377
377
|
function importedPackageGraders(value) {
|
|
378
378
|
const authoring = value.taskset.metadata.ordinaryAuthoring;
|
|
@@ -414,7 +414,26 @@ function projectLearningBatchGraders(binding, rewards, assets = []) {
|
|
|
414
414
|
return compileBoundGraders2(binding, rewards).map((grader) => {
|
|
415
415
|
const reward = resolved.find(({ source }) => source.graderId === grader.id).reward;
|
|
416
416
|
const base = { ...grader, label: reward.name, metadata: { rewardBinding: learningRef(binding) } };
|
|
417
|
-
if (grader.kind === "model_judge")
|
|
417
|
+
if (grader.kind === "model_judge") {
|
|
418
|
+
if (!grader.model || grader.calibrationStatus !== "passed" || !reward.calibrationCheckRef || !reward.fixtureSetRef) throw new Error(`Reward ${grader.id} needs a retained passing calibration check before preparation.`);
|
|
419
|
+
const rubric = assets.find((asset) => asset.id === grader.rubricRef.id);
|
|
420
|
+
const fixtures = assets.find((asset) => asset.id === reward.fixtureSetRef.id);
|
|
421
|
+
if (!rubric || !fixtures) throw new Error(`Reward ${grader.id} is missing its immutable rubric or calibration fixtures.`);
|
|
422
|
+
const fields = RewardFixtureAuthoringFieldsSchema.array().min(1).max(50).parse(JSON.parse(verifyLearningTextAsset(fixtures, reward.fixtureSetRef)));
|
|
423
|
+
return GraderSpecSchema.parse({
|
|
424
|
+
...base,
|
|
425
|
+
rubric: verifyLearningTextAsset(rubric, grader.rubricRef),
|
|
426
|
+
judge: grader.model,
|
|
427
|
+
temperature: grader.temperature ?? 0,
|
|
428
|
+
calibrationFixtureRefs: fields.map((fixture) => fixture.id),
|
|
429
|
+
metadata: {
|
|
430
|
+
...base.metadata,
|
|
431
|
+
portableRubricRef: grader.rubricRef,
|
|
432
|
+
calibrationEvidenceHash: reward.calibrationCheckRef.contentHash,
|
|
433
|
+
calibrationCheckRef: reward.calibrationCheckRef
|
|
434
|
+
}
|
|
435
|
+
});
|
|
436
|
+
}
|
|
418
437
|
if (grader.kind === "custom_verifier") return GraderSpecSchema.parse({
|
|
419
438
|
...base,
|
|
420
439
|
module: learningVerifierModule(grader.verifierRef.contentHash),
|
|
@@ -444,4 +463,4 @@ export {
|
|
|
444
463
|
projectLearningBatchGraders,
|
|
445
464
|
learningVerifierModule
|
|
446
465
|
};
|
|
447
|
-
//# sourceMappingURL=chunk-
|
|
466
|
+
//# sourceMappingURL=chunk-7PCER4VL.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/taskset-authored-portable-release.ts", "../src/taskset-package-grader-projection.ts"],
|
|
4
|
-
"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 ordinaryAuthoring: {\n instructions: input.taskset.objective,\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 },\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 artifactRefs: task.assets === undefined ? original.artifactRefs : task.assets.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)}/${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 schemaRef: previous?.schemaRef && previous.schemaRef.id === output.schemaRef ? previous.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)}/${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 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 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 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 };\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", "import { compileBoundGraders, resolveBoundRewards, type RewardBinding, type RewardRelease } from \"@openpond/evals/rewards\";\nimport { learningRef, verifyLearningTextAsset, type LearningTextAsset } from \"@openpond/evals/learning\";\nimport type { GraderSpec } from \"./taskset-draft-core.js\";\nimport { GraderSpecSchema } from \"./taskset-draft-core.js\";\nimport { decodeTasksetPackageFile, type TasksetPackage } from \"./taskset-package-contracts.js\";\nimport { z } from \"zod\";\n\n/** Project an ordinary portable package without inventing a Reward binding. */\nexport function importedPackageGraders(value: TasksetPackage) {\n const authoring = value.taskset.metadata.ordinaryAuthoring as { judgeCalibrationFixtures?: unknown } | undefined;\n const calibrationFixtures = z.record(z.string(), z.array(z.string().min(1)).max(100_000)).parse(authoring?.judgeCalibrationFixtures ?? {});\n return value.taskset.graders.map(grader => {\n const base = { ...grader, label: grader.id, metadata: { portableGrader: grader } };\n if (grader.kind === \"custom_verifier\") return GraderSpecSchema.parse({ ...base,\n module: learningVerifierModule(grader.verifierRef.contentHash), exportName: grader.exportName ?? \"verify\",\n metadata: { ...base.metadata, portableVerifierRef: grader.verifierRef } });\n if (grader.kind === \"human\" || grader.kind === \"model_judge\") {\n const file = value.files.find(file => file.asset.id === grader.rubricRef.id);\n if (!file) throw new Error(`Imported rubric is missing: ${grader.id}.`);\n const rubric = new TextDecoder(\"utf-8\", { fatal: true }).decode(decodeTasksetPackageFile(file));\n const metadata = { ...base.metadata, portableRubricRef: grader.rubricRef };\n if (grader.kind === \"human\") return GraderSpecSchema.parse({ ...base, rubric, metadata });\n if (!grader.model) throw new Error(`Imported judge ${grader.id} requires its declared model before local preparation.`);\n return GraderSpecSchema.parse({ ...base, rubric, metadata, judge: grader.model, temperature: grader.temperature ?? 0,\n calibrationStatus: \"pending\", calibrationFixtureRefs: calibrationFixtures[grader.id] ?? [] });\n }\n return GraderSpecSchema.parse({ ...base, kind: grader.kind === \"artifact\" ? \"file\" : grader.kind,\n config: grader.kind === \"artifact\" ? { ...grader.config, ...(grader.config.refIncludes === undefined ? {} : { pathIncludes: grader.config.refIncludes }) } : grader.config });\n });\n}\n\nexport function projectLearningBatchGraders(binding: RewardBinding, rewards: RewardRelease[], assets: LearningTextAsset[] = []): GraderSpec[] {\n const resolved = resolveBoundRewards(binding, rewards);\n return compileBoundGraders(binding, rewards).map((grader) => {\n const reward = resolved.find(({ source }) => source.graderId === grader.id)!.reward;\n const base = { ...grader, label: reward.name, metadata: { rewardBinding: learningRef(binding) } };\n if (grader.kind === \"model_judge\") throw new Error(`Reward ${grader.id} needs a calibrated model execution adapter before preparation.`);\n if (grader.kind === \"custom_verifier\") return GraderSpecSchema.parse({ ...base,\n module: learningVerifierModule(grader.verifierRef.contentHash), exportName: grader.exportName ?? \"verify\",\n metadata: { ...base.metadata, portableVerifierRef: grader.verifierRef },\n });\n if (grader.kind === \"human\") {\n const asset = assets.find((asset) => asset.id === grader.rubricRef.id);\n if (!asset) throw new Error(`Reward ${grader.id} is missing its immutable rubric.`);\n return GraderSpecSchema.parse({ ...base, rubric: verifyLearningTextAsset(asset, grader.rubricRef) });\n }\n return GraderSpecSchema.parse({ ...base, kind: grader.kind === \"artifact\" ? \"file\" : grader.kind });\n });\n}\n\nexport function learningVerifierModule(hash: string) { return `graders/reward-${hash}.js`; }\n"],
|
|
5
|
-
"mappings": "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",
|
|
4
|
+
"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 ordinaryAuthoring: {\n instructions: input.taskset.objective,\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 },\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 artifactRefs: task.assets === undefined ? original.artifactRefs : task.assets.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)}/${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 schemaRef: previous?.schemaRef && previous.schemaRef.id === output.schemaRef ? previous.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)}/${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 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 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 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 };\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", "import { compileBoundGraders, resolveBoundRewards, type RewardBinding, type RewardRelease } from \"@openpond/evals/rewards\";\nimport { learningRef, verifyLearningTextAsset, RewardFixtureAuthoringFieldsSchema, type LearningTextAsset } from \"@openpond/evals/learning\";\nimport type { GraderSpec } from \"./taskset-draft-core.js\";\nimport { GraderSpecSchema } from \"./taskset-draft-core.js\";\nimport { decodeTasksetPackageFile, type TasksetPackage } from \"./taskset-package-contracts.js\";\nimport { z } from \"zod\";\n\n/** Project an ordinary portable package without inventing a Reward binding. */\nexport function importedPackageGraders(value: TasksetPackage) {\n const authoring = value.taskset.metadata.ordinaryAuthoring as { judgeCalibrationFixtures?: unknown } | undefined;\n const calibrationFixtures = z.record(z.string(), z.array(z.string().min(1)).max(100_000)).parse(authoring?.judgeCalibrationFixtures ?? {});\n return value.taskset.graders.map(grader => {\n const base = { ...grader, label: grader.id, metadata: { portableGrader: grader } };\n if (grader.kind === \"custom_verifier\") return GraderSpecSchema.parse({ ...base,\n module: learningVerifierModule(grader.verifierRef.contentHash), exportName: grader.exportName ?? \"verify\",\n metadata: { ...base.metadata, portableVerifierRef: grader.verifierRef } });\n if (grader.kind === \"human\" || grader.kind === \"model_judge\") {\n const file = value.files.find(file => file.asset.id === grader.rubricRef.id);\n if (!file) throw new Error(`Imported rubric is missing: ${grader.id}.`);\n const rubric = new TextDecoder(\"utf-8\", { fatal: true }).decode(decodeTasksetPackageFile(file));\n const metadata = { ...base.metadata, portableRubricRef: grader.rubricRef };\n if (grader.kind === \"human\") return GraderSpecSchema.parse({ ...base, rubric, metadata });\n if (!grader.model) throw new Error(`Imported judge ${grader.id} requires its declared model before local preparation.`);\n return GraderSpecSchema.parse({ ...base, rubric, metadata, judge: grader.model, temperature: grader.temperature ?? 0,\n calibrationStatus: \"pending\", calibrationFixtureRefs: calibrationFixtures[grader.id] ?? [] });\n }\n return GraderSpecSchema.parse({ ...base, kind: grader.kind === \"artifact\" ? \"file\" : grader.kind,\n config: grader.kind === \"artifact\" ? { ...grader.config, ...(grader.config.refIncludes === undefined ? {} : { pathIncludes: grader.config.refIncludes }) } : grader.config });\n });\n}\n\nexport function projectLearningBatchGraders(binding: RewardBinding, rewards: RewardRelease[], assets: LearningTextAsset[] = []): GraderSpec[] {\n const resolved = resolveBoundRewards(binding, rewards);\n return compileBoundGraders(binding, rewards).map((grader) => {\n const reward = resolved.find(({ source }) => source.graderId === grader.id)!.reward;\n const base = { ...grader, label: reward.name, metadata: { rewardBinding: learningRef(binding) } };\n if (grader.kind === \"model_judge\") {\n if (!grader.model || grader.calibrationStatus !== \"passed\" || !reward.calibrationCheckRef || !reward.fixtureSetRef) throw new Error(`Reward ${grader.id} needs a retained passing calibration check before preparation.`);\n const rubric = assets.find(asset => asset.id === grader.rubricRef.id);\n const fixtures = assets.find(asset => asset.id === reward.fixtureSetRef!.id);\n if (!rubric || !fixtures) throw new Error(`Reward ${grader.id} is missing its immutable rubric or calibration fixtures.`);\n const fields = RewardFixtureAuthoringFieldsSchema.array().min(1).max(50).parse(JSON.parse(verifyLearningTextAsset(fixtures, reward.fixtureSetRef)));\n return GraderSpecSchema.parse({ ...base, rubric: verifyLearningTextAsset(rubric, grader.rubricRef), judge: grader.model,\n temperature: grader.temperature ?? 0, calibrationFixtureRefs: fields.map(fixture => fixture.id),\n metadata: { ...base.metadata, portableRubricRef: grader.rubricRef,\n calibrationEvidenceHash: reward.calibrationCheckRef.contentHash, calibrationCheckRef: reward.calibrationCheckRef },\n });\n }\n if (grader.kind === \"custom_verifier\") return GraderSpecSchema.parse({ ...base,\n module: learningVerifierModule(grader.verifierRef.contentHash), exportName: grader.exportName ?? \"verify\",\n metadata: { ...base.metadata, portableVerifierRef: grader.verifierRef },\n });\n if (grader.kind === \"human\") {\n const asset = assets.find((asset) => asset.id === grader.rubricRef.id);\n if (!asset) throw new Error(`Reward ${grader.id} is missing its immutable rubric.`);\n return GraderSpecSchema.parse({ ...base, rubric: verifyLearningTextAsset(asset, grader.rubricRef) });\n }\n return GraderSpecSchema.parse({ ...base, kind: grader.kind === \"artifact\" ? \"file\" : grader.kind });\n });\n}\n\nexport function learningVerifierModule(hash: string) { return `graders/reward-${hash}.js`; }\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["contentHash", "compileBoundGraders", "file", "compileBoundGraders", "asset", "hash"]
|
|
7
7
|
}
|
|
@@ -1,10 +1,15 @@
|
|
|
1
1
|
import {
|
|
2
2
|
ModelStarterExecutionSchema,
|
|
3
|
-
validateModelStarterExecution
|
|
3
|
+
validateModelStarterExecution,
|
|
4
|
+
validateModelTasksetPackage
|
|
4
5
|
} from "./chunk-GFVMIDP5.js";
|
|
6
|
+
import {
|
|
7
|
+
contentHash
|
|
8
|
+
} from "./chunk-QUOW6URQ.js";
|
|
5
9
|
import {
|
|
6
10
|
ModelProjectBaseModelSchema,
|
|
7
11
|
ModelProjectTrainingMethodSchema,
|
|
12
|
+
ModelProjectTrainingSetupSchema,
|
|
8
13
|
ModelProjectVersionedRefSchema,
|
|
9
14
|
canonicalSha256
|
|
10
15
|
} from "./chunk-ZNFOVV7B.js";
|
|
@@ -13,8 +18,82 @@ import {
|
|
|
13
18
|
import { z } from "zod";
|
|
14
19
|
import { TasksetReleaseSchema, assertTasksetRelease } from "@openpond/evals/tasksets";
|
|
15
20
|
import { LearningTextAssetSchema, TaskDefinitionSchema, learningRef, sameLearningRef, sealLearningContent } from "@openpond/evals/learning";
|
|
16
|
-
import { RewardBindingSchema, RewardReleaseSchema, compileBoundGraders } from "@openpond/evals/rewards";
|
|
21
|
+
import { RewardBindingSchema, RewardReleaseSchema, compileBoundGraders as compileBoundGraders2 } from "@openpond/evals/rewards";
|
|
17
22
|
import { assertBoundedTaskJson, validateTaskValue } from "@openpond/evals/task-schema";
|
|
23
|
+
|
|
24
|
+
// src/model-training-defaults.ts
|
|
25
|
+
import { compileBoundGraders } from "@openpond/evals/rewards";
|
|
26
|
+
function prepareModelTrainingDefaults(input) {
|
|
27
|
+
const setup = ModelProjectTrainingSetupSchema.parse(input.setup);
|
|
28
|
+
const source = validateModelTasksetPackage(input.package);
|
|
29
|
+
if (setup.tasksetRef?.id !== source.taskset.id || setup.tasksetRef.revision !== source.taskset.revision) return setup;
|
|
30
|
+
if (!setup.evaluationTasksetRef && source.taskset.tasks.some((task) => task.split === "frozen_eval" || task.split === "validation")) {
|
|
31
|
+
setup.evaluationTasksetRef = setup.tasksetRef;
|
|
32
|
+
}
|
|
33
|
+
const base = setup.baseModel;
|
|
34
|
+
if (setup.method !== "grpo" || setup.recipe || !base?.revision || !base.tokenizerRevision || !base.chatTemplateHash) return setup;
|
|
35
|
+
const training = source.taskset.tasks.filter((task) => task.split === "train");
|
|
36
|
+
const graders = compileBoundGraders(source.rewardBinding, source.rewards);
|
|
37
|
+
const grader = graders.find((candidate) => candidate.rewardEligible);
|
|
38
|
+
const environment = source.executionResources?.environment ?? source.execution?.environment;
|
|
39
|
+
if (!training.length || !grader || !environment) return setup;
|
|
40
|
+
const groupSize = 8;
|
|
41
|
+
const maxSteps = 8;
|
|
42
|
+
return ModelProjectTrainingSetupSchema.parse({
|
|
43
|
+
...setup,
|
|
44
|
+
recipe: {
|
|
45
|
+
schemaVersion: "openpond.rftRecipe.v1",
|
|
46
|
+
method: "grpo",
|
|
47
|
+
parameterization: "lora",
|
|
48
|
+
baseModel: {
|
|
49
|
+
id: base.modelId,
|
|
50
|
+
revision: base.revision,
|
|
51
|
+
tokenizerRevision: base.tokenizerRevision,
|
|
52
|
+
chatTemplateHash: base.chatTemplateHash
|
|
53
|
+
},
|
|
54
|
+
dataset: {
|
|
55
|
+
trainSplit: "train",
|
|
56
|
+
validationSplit: source.taskset.tasks.some((task) => task.split === "frozen_eval") ? "frozen_eval" : "validation",
|
|
57
|
+
maxPromptTokens: 4096,
|
|
58
|
+
maxExamples: Math.min(1e3, training.length),
|
|
59
|
+
selectionStrategy: "stable_hash_top_n"
|
|
60
|
+
},
|
|
61
|
+
lora: { rank: 2 },
|
|
62
|
+
rollout: {
|
|
63
|
+
groupSize,
|
|
64
|
+
concurrency: 4,
|
|
65
|
+
maxTurns: source.taskset.environment.kind === "text" ? 1 : 15,
|
|
66
|
+
maxOutputTokens: 1024,
|
|
67
|
+
temperature: 0.8,
|
|
68
|
+
topP: 0.95,
|
|
69
|
+
seed: 17
|
|
70
|
+
},
|
|
71
|
+
optimizer: {
|
|
72
|
+
learningRate: 1e-4,
|
|
73
|
+
maxSteps,
|
|
74
|
+
clipRange: 0.2,
|
|
75
|
+
iterations: 2,
|
|
76
|
+
microbatchSize: 1,
|
|
77
|
+
gradientAccumulationSteps: groupSize,
|
|
78
|
+
advantageEpsilon: 1e-8,
|
|
79
|
+
adamw: { name: "adamw", weightDecay: 0, beta1: 0.9, beta2: 0.999, epsilon: 1e-8 }
|
|
80
|
+
},
|
|
81
|
+
loss: { method: "grpo", klBeta: 0.01 },
|
|
82
|
+
reward: {
|
|
83
|
+
graderId: grader.id,
|
|
84
|
+
graderHash: contentHash(graders),
|
|
85
|
+
environmentId: environment.id,
|
|
86
|
+
environmentVersion: String(environment.revision),
|
|
87
|
+
toolContractHash: contentHash(source.taskset.tools),
|
|
88
|
+
learnedPreference: null
|
|
89
|
+
},
|
|
90
|
+
resourceLimits: { wallTimeMs: 66 * 60 * 1e3, maxRollouts: maxSteps * groupSize, maxPayloadBytes: 1e6 },
|
|
91
|
+
policyOptimization: null
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
// src/model-starters.ts
|
|
18
97
|
var IdSchema = z.string().trim().min(1).max(500);
|
|
19
98
|
var RefSchema = ModelProjectVersionedRefSchema;
|
|
20
99
|
var ModelStarterContentSchema = z.object({
|
|
@@ -143,8 +222,8 @@ function validateResolvedModelStarter(value) {
|
|
|
143
222
|
}
|
|
144
223
|
const resources = [starter, taskset, taskDefinition, rewardBinding, ...rewards, ...assets];
|
|
145
224
|
for (const resource of resources) {
|
|
146
|
-
const { contentHash, ...content } = resource;
|
|
147
|
-
if (sealLearningContent(content).contentHash !==
|
|
225
|
+
const { contentHash: contentHash2, ...content } = resource;
|
|
226
|
+
if (sealLearningContent(content).contentHash !== contentHash2) throw new Error(`Starter resource integrity failed: ${resource.id}.`);
|
|
148
227
|
}
|
|
149
228
|
assertTasksetRelease(taskset);
|
|
150
229
|
validateModelStarterExecution(resolved.execution, taskset, assets);
|
|
@@ -159,7 +238,7 @@ function validateResolvedModelStarter(value) {
|
|
|
159
238
|
const { policy, environment, environmentRelease, tools, capabilities, verifierSetRelease } = taskset;
|
|
160
239
|
const execution = { policy, environment, ...environmentRelease ? { environmentRelease } : {}, tools, capabilities, ...verifierSetRelease ? { verifierSetRelease } : {} };
|
|
161
240
|
if (sealLearningContent(execution).contentHash !== sealLearningContent(taskDefinition.execution).contentHash) throw new Error("Starter execution context differs from its task format.");
|
|
162
|
-
if (sealLearningContent({ graders: taskset.graders }).contentHash !== sealLearningContent({ graders:
|
|
241
|
+
if (sealLearningContent({ graders: taskset.graders }).contentHash !== sealLearningContent({ graders: compileBoundGraders2(rewardBinding, rewards) }).contentHash) throw new Error("Starter executable graders differ from its Reward binding.");
|
|
163
242
|
for (const [references, values] of [[starter.rewards, rewards], [starter.assets, assets]]) {
|
|
164
243
|
if (references.length !== values.length || new Set(values.map((resource) => resource.id)).size !== values.length) throw new Error("Starter dependency inventory mismatch.");
|
|
165
244
|
for (const ref of references) {
|
|
@@ -206,6 +285,7 @@ function validateResolvedModelStarter(value) {
|
|
|
206
285
|
}
|
|
207
286
|
|
|
208
287
|
export {
|
|
288
|
+
prepareModelTrainingDefaults,
|
|
209
289
|
ModelStarterContentSchema,
|
|
210
290
|
ModelStarterSchema,
|
|
211
291
|
ResolvedModelStarterSchema,
|
|
@@ -219,4 +299,4 @@ export {
|
|
|
219
299
|
previewModelStarter,
|
|
220
300
|
validateResolvedModelStarter
|
|
221
301
|
};
|
|
222
|
-
//# sourceMappingURL=chunk-
|
|
302
|
+
//# sourceMappingURL=chunk-AMBW4UHN.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/model-starters.ts", "../src/model-training-defaults.ts"],
|
|
4
|
+
"sourcesContent": ["import { z } from \"zod\";\nimport { TasksetReleaseSchema, assertTasksetRelease } from \"@openpond/evals/tasksets\";\nimport { LearningTextAssetSchema, TaskDefinitionSchema, learningRef, sameLearningRef, sealLearningContent } from \"@openpond/evals/learning\";\nimport { RewardBindingSchema, RewardReleaseSchema, compileBoundGraders } from \"@openpond/evals/rewards\";\nimport { assertBoundedTaskJson, validateTaskValue } from \"@openpond/evals/task-schema\";\n\nimport { ModelProjectBaseModelSchema, ModelProjectTrainingMethodSchema, ModelProjectVersionedRefSchema } from \"./model-projects.js\";\nimport { canonicalSha256 } from \"./protocol.js\";\nimport { ModelStarterExecutionSchema, validateModelStarterExecution } from \"./model-starter-execution.js\";\n\nexport { ModelStarterExecutionSchema, ModelStarterEnvironmentAttemptSchema, verifyModelStarterEnvironmentAttempt, ModelStarterToolFixtureScriptSchema, createModelStarterExecutionAsset, modelStarterExecutionAssetId, resolveModelStarterExecutionAsset, type ModelStarterExecution, type ModelStarterExecutionContext } from \"./model-starter-execution.js\";\nexport { ModelTasksetDerivationSchema, ModelTasksetPackageSchema, deriveModelTaskset, validateModelTasksetPackage, type ModelTasksetPackage } from \"./model-taskset-derivation.js\";\nexport { ModelTasksetExecutionResourcesSchema, createModelTasksetExecutionResourcesAsset, modelTasksetExecutionResourcesAssetId, resolveModelTasksetExecutionResourcesAsset } from \"./model-taskset-resources.js\";\nexport { prepareModelTrainingDefaults } from \"./model-training-defaults.js\";\n\nconst IdSchema = z.string().trim().min(1).max(500);\nconst RefSchema = ModelProjectVersionedRefSchema;\n\n/** Catalog records contain references and previews, never the private task rows. */\nexport const ModelStarterContentSchema = z.object({\n schemaVersion: z.literal(\"openpond.modelStarter.v1\"),\n id: IdSchema,\n revision: z.number().int().positive(),\n name: z.string().trim().min(1).max(200),\n description: z.string().trim().min(1).max(2_000),\n category: z.enum([\"extraction\", \"support\", \"operations\", \"knowledge\", \"coding\", \"writing\", \"classification\"]),\n taskset: RefSchema,\n taskDefinition: RefSchema,\n rewardBinding: RefSchema,\n rewards: z.array(RefSchema).min(1).max(100),\n assets: z.array(RefSchema).max(1_000),\n previewTaskIds: z.array(IdSchema).min(1).max(8),\n startingModel: ModelProjectBaseModelSchema,\n supportedMethods: z.array(ModelProjectTrainingMethodSchema).min(1).max(8),\n defaultMethod: ModelProjectTrainingMethodSchema,\n provenance: z.object({ author: z.string().min(1).max(200), license: z.string().min(1).max(200), sourceDescription: z.string().min(1).max(2_000) }).strict(),\n // These are references to real results. Package publication does not create\n // evidence, qualify a starter, or enable continuous learning.\n evidence: z.object({ verifierFixtures: RefSchema.nullable(), baseline: RefSchema.nullable(), training: RefSchema.nullable(), evaluation: RefSchema.nullable() }).strict(),\n}).strict().superRefine((starter, context) => {\n if (!starter.supportedMethods.includes(starter.defaultMethod)) context.addIssue({ code: \"custom\", path: [\"defaultMethod\"], message: \"The default method must be supported by the package.\" });\n for (const field of [\"rewards\", \"assets\"] as const) {\n if (new Set(starter[field].map(ref => ref.id)).size !== starter[field].length) context.addIssue({ code: \"custom\", path: [field], message: \"Dependency identities must be unique.\" });\n }\n if (new Set(starter.previewTaskIds).size !== starter.previewTaskIds.length) context.addIssue({ code: \"custom\", path: [\"previewTaskIds\"], message: \"Preview tasks must be unique.\" });\n});\nexport const ModelStarterSchema = ModelStarterContentSchema.safeExtend({ contentHash: z.string().regex(/^[a-f0-9]{64}$/) });\nexport type ModelStarter = z.infer<typeof ModelStarterSchema>;\n\n/** A resolved small package, obtained separately from catalog discovery.\n * Large Tasksets remain manifest/shard resources; they are not list payloads. */\nexport const ResolvedModelStarterSchema = z.object({\n starter: ModelStarterSchema,\n taskset: TasksetReleaseSchema,\n taskDefinition: TaskDefinitionSchema,\n rewardBinding: RewardBindingSchema,\n rewards: z.array(RewardReleaseSchema).min(1).max(100),\n assets: z.array(LearningTextAssetSchema).max(1_000),\n execution: ModelStarterExecutionSchema.optional(),\n}).strict();\nexport type ResolvedModelStarter = z.infer<typeof ResolvedModelStarterSchema>;\n\n/** Publisher attestation for original synthetic contact data, never a caller\n * override for arbitrary imports or for a failed secret scan. */\nexport const ModelStarterPrivacyReviewSchema = z.object({\n schemaVersion: z.literal(\"openpond.modelStarterPrivacyReview.v1\"),\n disposition: z.literal(\"synthetic_only\"),\n reviewedBy: z.string().trim().min(1).max(500), reviewedAt: z.iso.datetime(),\n reviewedContentHash: z.string().regex(/^[a-f0-9]{64}$/),\n note: z.string().trim().min(1).max(2_000),\n}).strict();\nexport function modelStarterPrivacyContentHash(value: ResolvedModelStarter): string {\n const { contentHash: _starterHash, ...starter } = value.starter;\n const { contentHash: _tasksetHash, ...taskset } = value.taskset;\n const { contentHash: _referenceHash, ...tasksetRef } = starter.taskset;\n const metadata = { ...taskset.metadata };\n const authoring = metadata.starterAuthoring;\n if (authoring && typeof authoring === \"object\" && !Array.isArray(authoring)) {\n const { privacyReview: _review, ...content } = authoring as Record<string, unknown>;\n metadata.starterAuthoring = content;\n }\n // Exclude only the attestation and hashes that contain that attestation.\n return sealLearningContent({ ...value, starter: { ...starter, taskset: tasksetRef }, taskset: { ...taskset, metadata } }).contentHash;\n}\n\n/** Final creation intent. The server resolves package bytes from its catalog;\n * callers cannot supply executable resources or qualification receipts here. */\nexport const ModelStarterCreationIntentSchema = z.object({\n profileId: IdSchema,\n modelId: IdSchema,\n name: z.string().trim().min(1).max(200),\n starter: RefSchema,\n startingModel: ModelProjectBaseModelSchema,\n method: ModelProjectTrainingMethodSchema,\n rewardBindingRef: RefSchema.nullable().optional(),\n}).strict();\nexport const ModelStarterCreationRequestSchema = ModelStarterCreationIntentSchema.extend({\n schemaVersion: z.literal(\"openpond.modelStarterCreation.v1\"),\n operationId: IdSchema,\n}).strict();\nexport type ModelStarterCreationRequest = z.infer<typeof ModelStarterCreationRequestSchema>;\n\nexport function parseModelStarterCreationRequest(value: unknown): ModelStarterCreationRequest {\n assertBoundedTaskJson(value, 64 * 1024);\n return ModelStarterCreationRequestSchema.parse(value);\n}\n\n/** Prepare once on final confirmation and retain across uncertain transport\n * outcomes. The server must bind operationId to the complete original intent\n * and atomically commit resources, model configuration and the retry receipt. */\nexport async function createModelStarterCreationRequest(\n value: z.input<typeof ModelStarterCreationIntentSchema>,\n): Promise<ModelStarterCreationRequest> {\n assertBoundedTaskJson(value, 64 * 1024);\n const intent = ModelStarterCreationIntentSchema.parse(value);\n return parseModelStarterCreationRequest({\n ...intent,\n schemaVersion: \"openpond.modelStarterCreation.v1\",\n operationId: `model-starter:${await canonicalSha256(intent)}`,\n });\n}\n\n/** Scope authorization belongs to the API. This validates the final intent\n * against the exact trusted package before any user resources are written. */\nexport function validateModelStarterCreation(value: unknown, packageValue: unknown) {\n const request = parseModelStarterCreationRequest(value);\n const resolved = validateResolvedModelStarter(packageValue);\n if (!sameLearningRef(request.starter, learningRef(resolved.starter))) throw new Error(\"Starter creation references a different package revision.\");\n if (!resolved.starter.supportedMethods.includes(request.method)) throw new Error(\"The selected training method is not supported by this starter.\");\n return { request, resolved };\n}\n\n/** Explicit projection keeps frozen examples, expected outputs, privileged\n * context and verifier source out of read-only model-facing previews. */\nexport function previewModelStarter(value: unknown) {\n const { starter, taskset, taskDefinition, rewardBinding, rewards } = validateResolvedModelStarter(value);\n return {\n starter,\n inputSchema: taskDefinition.inputSchema,\n outputSchema: taskDefinition.outputSchema,\n reward: {\n name: rewardBinding.name,\n description: rewardBinding.description,\n checks: rewardBinding.sources.map(source => {\n const reward = rewards.find(reward => sameLearningRef(source.reward, learningRef(reward)))!;\n return { name: reward.name, description: reward.description, kind: reward.implementation.kind, role: source.role, weight: source.weight, required: source.required, hardGate: source.hardGate };\n }),\n },\n tasks: starter.previewTaskIds.map(id => {\n const task = taskset.tasks.find(task => task.id === id)!;\n return { id: task.id, input: task.input, policyVisibleContext: task.policyVisibleContext };\n }),\n counts: {\n train: taskset.tasks.filter(task => task.split === \"train\").length,\n validation: taskset.tasks.filter(task => task.split === \"validation\").length,\n frozenEvaluation: taskset.tasks.filter(task => task.split === \"frozen_eval\").length,\n },\n };\n}\n\n/** Verify the dependency graph before creating user-owned configuration.\n * A matching outer hash alone cannot authorize substituted private graders. */\nexport function validateResolvedModelStarter(value: unknown): ResolvedModelStarter {\n assertBoundedTaskJson(value, 16 * 1024 * 1024);\n const resolved = ResolvedModelStarterSchema.parse(value);\n const { starter, taskset, taskDefinition, rewardBinding, rewards, assets } = resolved;\n const authoring = taskset.metadata.starterAuthoring;\n if (authoring && typeof authoring === \"object\" && !Array.isArray(authoring) && \"privacyReview\" in authoring) {\n const review = ModelStarterPrivacyReviewSchema.parse(authoring.privacyReview);\n if (review.reviewedContentHash !== modelStarterPrivacyContentHash(resolved)) throw new Error(\"Starter privacy review differs from the published contents.\");\n }\n const resources = [starter, taskset, taskDefinition, rewardBinding, ...rewards, ...assets];\n for (const resource of resources) {\n const { contentHash, ...content } = resource;\n if (sealLearningContent(content).contentHash !== contentHash) throw new Error(`Starter resource integrity failed: ${resource.id}.`);\n }\n assertTasksetRelease(taskset);\n validateModelStarterExecution(resolved.execution, taskset, assets);\n function exact(expected: z.infer<typeof RefSchema>, resource: { id: string; revision: number; contentHash: string }) {\n if (!sameLearningRef(expected, learningRef(resource))) throw new Error(`Starter dependency mismatch: ${expected.id}.`);\n }\n exact(starter.taskset, taskset);\n exact(starter.taskDefinition, taskDefinition);\n exact(starter.rewardBinding, rewardBinding);\n exact(taskDefinition.rewardBinding, rewardBinding);\n if (rewardBinding.recipeRef) throw new Error(\"Starter binding recipes must be resolved into a standalone binding before publication.\");\n const { policy, environment, environmentRelease, tools, capabilities, verifierSetRelease } = taskset;\n const execution = { policy, environment, ...(environmentRelease ? { environmentRelease } : {}), tools, capabilities, ...(verifierSetRelease ? { verifierSetRelease } : {}) };\n if (sealLearningContent(execution).contentHash !== sealLearningContent(taskDefinition.execution).contentHash) throw new Error(\"Starter execution context differs from its task format.\");\n if (sealLearningContent({ graders: taskset.graders }).contentHash !== sealLearningContent({ graders: compileBoundGraders(rewardBinding, rewards) }).contentHash) throw new Error(\"Starter executable graders differ from its Reward binding.\");\n for (const [references, values] of [[starter.rewards, rewards], [starter.assets, assets]] as const) {\n if (references.length !== values.length || new Set(values.map(resource => resource.id)).size !== values.length) throw new Error(\"Starter dependency inventory mismatch.\");\n for (const ref of references) {\n const resource = values.find(value => value.id === ref.id);\n if (!resource) throw new Error(`Starter dependency is missing: ${ref.id}.`);\n exact(ref, resource);\n }\n }\n for (const source of rewardBinding.sources) {\n const reward = rewards.find(reward => reward.id === source.reward.id);\n if (!reward) throw new Error(`Starter Reward is missing: ${source.reward.id}.`);\n exact(source.reward, reward);\n }\n for (const reward of rewards) {\n const implementation = reward.implementation;\n const references = [...reward.assets,\n ...(\"verifierRef\" in implementation ? [implementation.verifierRef] : []),\n ...(\"rubricRef\" in implementation ? [implementation.rubricRef] : []),\n ...(\"inputContract\" in implementation ? [implementation.inputContract] : []),\n ];\n for (const ref of references) {\n const asset = assets.find(asset => asset.id === ref.id);\n if (!asset || sealLearningContent(asset.asset).contentHash !== sealLearningContent(ref).contentHash) throw new Error(`Starter Reward source is missing or changed: ${ref.id}.`);\n if (ref.visibility === \"policy\") throw new Error(`Starter Reward source must remain private to its evaluator: ${ref.id}.`);\n }\n }\n if (new Set(taskset.tasks.map(task => task.id)).size !== taskset.tasks.length) throw new Error(\"Starter task identities must be unique.\");\n const inputSplits = new Map<string, string>();\n for (const task of taskset.tasks) {\n if (task.policyVisibleContext.instructions !== taskDefinition.instructions) throw new Error(`Starter task does not carry its declared model instructions: ${task.id}.`);\n const inputHash = sealLearningContent({ input: task.input, context: task.policyVisibleContext }).contentHash;\n const priorSplit = inputSplits.get(inputHash);\n if (priorSplit && priorSplit !== task.split) throw new Error(\"Starter policy input appears in multiple splits.\");\n inputSplits.set(inputHash, task.split);\n if (!validateTaskValue(taskDefinition.inputSchema, task.input).valid) throw new Error(`Starter task input does not match its format: ${task.id}.`);\n if (task.expectedOutput !== null && !validateTaskValue(taskDefinition.outputSchema, task.expectedOutput).valid) throw new Error(`Starter expected output does not match its format: ${task.id}.`);\n }\n for (const id of starter.previewTaskIds) {\n const task = taskset.tasks.find(task => task.id === id);\n if (!task || task.split === \"frozen_eval\") throw new Error(`Starter preview task is unavailable: ${id}.`);\n }\n return resolved;\n}\n", "import { contentHash } from \"@openpond/harness\";\nimport { compileBoundGraders } from \"@openpond/evals/rewards\";\nimport { validateModelTasksetPackage } from \"./model-taskset-derivation.js\";\nimport { ModelProjectTrainingSetupSchema, type ModelProjectTrainingSetup } from \"./model-projects.js\";\n\n/** Saved defaults do not authorize execution. The Run review still owns the\n * budget, runtime admission and exact training/evaluation population checks. */\nexport function prepareModelTrainingDefaults(input: {\n setup: ModelProjectTrainingSetup;\n package: unknown;\n}): ModelProjectTrainingSetup {\n const setup = ModelProjectTrainingSetupSchema.parse(input.setup);\n const source = validateModelTasksetPackage(input.package);\n if (setup.tasksetRef?.id !== source.taskset.id || setup.tasksetRef.revision !== source.taskset.revision) return setup;\n if (!setup.evaluationTasksetRef && source.taskset.tasks.some(task => task.split === \"frozen_eval\" || task.split === \"validation\")) {\n setup.evaluationTasksetRef = setup.tasksetRef;\n }\n const base = setup.baseModel;\n if (setup.method !== \"grpo\" || setup.recipe || !base?.revision\n || !base.tokenizerRevision || !base.chatTemplateHash) return setup;\n const training = source.taskset.tasks.filter(task => task.split === \"train\");\n const graders = compileBoundGraders(source.rewardBinding, source.rewards);\n const grader = graders.find(candidate => candidate.rewardEligible);\n const environment = source.executionResources?.environment ?? source.execution?.environment;\n if (!training.length || !grader || !environment) return setup;\n const groupSize = 8;\n const maxSteps = 8;\n return ModelProjectTrainingSetupSchema.parse({\n ...setup,\n recipe: {\n schemaVersion: \"openpond.rftRecipe.v1\", method: \"grpo\", parameterization: \"lora\",\n baseModel: { id: base.modelId, revision: base.revision,\n tokenizerRevision: base.tokenizerRevision, chatTemplateHash: base.chatTemplateHash },\n dataset: { trainSplit: \"train\", validationSplit: source.taskset.tasks.some(task => task.split === \"frozen_eval\") ? \"frozen_eval\" : \"validation\",\n maxPromptTokens: 4_096, maxExamples: Math.min(1_000, training.length), selectionStrategy: \"stable_hash_top_n\" },\n lora: { rank: 2 },\n rollout: { groupSize, concurrency: 4,\n maxTurns: source.taskset.environment.kind === \"text\" ? 1 : 15,\n maxOutputTokens: 1_024, temperature: 0.8, topP: 0.95, seed: 17 },\n optimizer: { learningRate: 0.0001, maxSteps, clipRange: 0.2, iterations: 2,\n microbatchSize: 1, gradientAccumulationSteps: groupSize, advantageEpsilon: 1e-8,\n adamw: { name: \"adamw\", weightDecay: 0, beta1: 0.9, beta2: 0.999, epsilon: 1e-8 } },\n loss: { method: \"grpo\", klBeta: 0.01 },\n reward: { graderId: grader.id, graderHash: contentHash(graders),\n environmentId: environment.id, environmentVersion: String(environment.revision),\n toolContractHash: contentHash(source.taskset.tools), learnedPreference: null },\n resourceLimits: { wallTimeMs: 66 * 60 * 1_000, maxRollouts: maxSteps * groupSize, maxPayloadBytes: 1_000_000 },\n policyOptimization: null,\n },\n });\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["compileBoundGraders", "reward", "task", "contentHash", "compileBoundGraders", "value", "asset"]
|
|
7
|
+
}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
ModelStarterSchema,
|
|
3
3
|
validateResolvedModelStarter
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-AMBW4UHN.js";
|
|
5
5
|
import "./chunk-GFVMIDP5.js";
|
|
6
|
+
import "./chunk-5FBPNWT4.js";
|
|
7
|
+
import "./chunk-QUOW6URQ.js";
|
|
6
8
|
import {
|
|
7
9
|
ModelProjectVersionedRefSchema
|
|
8
10
|
} from "./chunk-ZNFOVV7B.js";
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/model-starter-catalog.ts"],
|
|
4
4
|
"sourcesContent": ["import { z } from \"zod\";\nimport { ModelProjectVersionedRefSchema } from \"./model-projects.js\";\nimport { ModelStarterSchema, validateResolvedModelStarter } from \"./model-starters.js\";\n\nexport const ModelStarterCatalogQuerySchema = z.object({\n afterId: z.string().trim().min(1).max(500).optional(),\n limit: z.number().int().min(1).max(100).default(30),\n}).strict();\nexport const ModelStarterCatalogItemSchema = ModelStarterSchema.extend({\n rewardSummary: z.array(z.object({ name: z.string().min(1).max(500), kind: z.enum([\"custom_verifier\", \"model_judge\", \"human\", \"learned_model\", \"content\", \"schema\", \"artifact\", \"runtime_event\", \"state\"]) }).strict()).max(100).optional(),\n});\nexport type ModelStarterCatalogItem = z.infer<typeof ModelStarterCatalogItemSchema>;\nexport const ModelStarterCatalogPageSchema = z.object({\n items: z.array(ModelStarterCatalogItemSchema).max(100),\n nextCursor: z.string().min(1).max(500).nullable(),\n}).strict();\nexport const ModelStarterCatalogErrorSchema = z.object({ code: z.string().min(1).max(200), message: z.string().min(1).max(5_000) }).strict();\n\nexport class OpenPondModelStarterCatalogError extends Error {\n constructor(readonly status: number, readonly code: string, message: string) { super(message); this.name = \"OpenPondModelStarterCatalogError\"; }\n}\n\n/** One hosted catalog for both clients. Discovery never downloads task rows;\n * exact resolution obtains a bounded, integrity-checked package separately. */\nexport class OpenPondModelStarterCatalogClient {\n readonly #options: { baseUrl: string; apiKey: string; teamId: string; fetch?: typeof globalThis.fetch };\n constructor(options: { baseUrl: string; apiKey: string; teamId: string; fetch?: typeof globalThis.fetch }) {\n if (!options.apiKey.trim() || !options.teamId.trim()) throw new Error(\"Starter catalog credentials and workspace are required.\");\n const url = new URL(options.baseUrl);\n if (![\"http:\", \"https:\"].includes(url.protocol) || url.username || url.password || url.search || url.hash) throw new Error(\"Starter catalog base URL must be an HTTP(S) endpoint without credentials, query or fragment.\");\n this.#options = { ...options, baseUrl: url.toString().replace(/\\/+$/, \"\") };\n }\n\n async list(query: z.input<typeof ModelStarterCatalogQuerySchema> = {}, options: { signal?: AbortSignal } = {}) {\n const parsed = ModelStarterCatalogQuerySchema.parse(query);\n const search = new URLSearchParams({ limit: String(parsed.limit) });\n if (parsed.afterId) search.set(\"afterId\", parsed.afterId);\n const page = ModelStarterCatalogPageSchema.parse(await this.#request(`?${search}`, 4 * 1024 * 1024, options.signal));\n if (page.items.length > parsed.limit || new Set(page.items.map(item => item.id)).size !== page.items.length) throw new OpenPondModelStarterCatalogError(502, \"starter_catalog_page_invalid\", \"Starter catalog returned an invalid page.\");\n return page;\n }\n\n async resolve(reference: z.infer<typeof ModelProjectVersionedRefSchema>, options: { signal?: AbortSignal } = {}) {\n const ref = ModelProjectVersionedRefSchema.parse(reference);\n const resolved = validateResolvedModelStarter(await this.#request(`/releases/${encodeURIComponent(ref.id)}/${ref.revision}/${ref.contentHash}`, 16 * 1024 * 1024, options.signal));\n if (resolved.starter.id !== ref.id || resolved.starter.revision !== ref.revision || resolved.starter.contentHash !== ref.contentHash) throw new OpenPondModelStarterCatalogError(502, \"starter_catalog_revision_mismatch\", \"Starter catalog returned a different package revision.\");\n return resolved;\n }\n\n async #request(path: string, maximumBytes: number, signal?: AbortSignal): Promise<unknown> {\n const response = await (this.#options.fetch ?? globalThis.fetch)(`${this.#options.baseUrl}/v1/model-starter-catalog${path}`, {\n headers: { Authorization: `Bearer ${this.#options.apiKey}`, \"X-OpenPond-Team-Id\": this.#options.teamId, Accept: \"application/json\" }, signal, redirect: \"error\",\n });\n const reader = response.body?.getReader();\n if (!reader) throw new OpenPondModelStarterCatalogError(response.status, \"starter_catalog_empty_response\", \"Starter catalog returned no data.\");\n const decoder = new TextDecoder();\n let size = 0;\n let text = \"\";\n try {\n while (true) {\n const chunk = await reader.read();\n if (chunk.done) break;\n size += chunk.value.byteLength;\n if (size > maximumBytes) throw new OpenPondModelStarterCatalogError(response.status, \"starter_catalog_response_too_large\", \"Starter catalog response exceeded its limit.\");\n text += decoder.decode(chunk.value, { stream: true });\n }\n text += decoder.decode();\n } finally { await reader.cancel(); reader.releaseLock(); }\n const payload: unknown = JSON.parse(text);\n if (!response.ok) {\n const error = ModelStarterCatalogErrorSchema.safeParse(payload);\n throw new OpenPondModelStarterCatalogError(response.status, error.success ? error.data.code : \"starter_catalog_invalid_error\", error.success ? error.data.message : \"Starter catalog request failed.\");\n }\n return payload;\n }\n}\n"],
|
|
5
|
-
"mappings": "
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/dist/model-starters.js
CHANGED
|
@@ -8,10 +8,11 @@ import {
|
|
|
8
8
|
createModelStarterCreationRequest,
|
|
9
9
|
modelStarterPrivacyContentHash,
|
|
10
10
|
parseModelStarterCreationRequest,
|
|
11
|
+
prepareModelTrainingDefaults,
|
|
11
12
|
previewModelStarter,
|
|
12
13
|
validateModelStarterCreation,
|
|
13
14
|
validateResolvedModelStarter
|
|
14
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-AMBW4UHN.js";
|
|
15
16
|
import {
|
|
16
17
|
ModelStarterEnvironmentAttemptSchema,
|
|
17
18
|
ModelStarterExecutionSchema,
|
|
@@ -29,6 +30,8 @@ import {
|
|
|
29
30
|
validateModelTasksetPackage,
|
|
30
31
|
verifyModelStarterEnvironmentAttempt
|
|
31
32
|
} from "./chunk-GFVMIDP5.js";
|
|
33
|
+
import "./chunk-5FBPNWT4.js";
|
|
34
|
+
import "./chunk-QUOW6URQ.js";
|
|
32
35
|
import "./chunk-ZNFOVV7B.js";
|
|
33
36
|
export {
|
|
34
37
|
ModelStarterContentSchema,
|
|
@@ -51,6 +54,7 @@ export {
|
|
|
51
54
|
modelStarterPrivacyContentHash,
|
|
52
55
|
modelTasksetExecutionResourcesAssetId,
|
|
53
56
|
parseModelStarterCreationRequest,
|
|
57
|
+
prepareModelTrainingDefaults,
|
|
54
58
|
previewModelStarter,
|
|
55
59
|
resolveModelStarterExecutionAsset,
|
|
56
60
|
resolveModelTasksetExecutionResourcesAsset,
|
package/dist/taskset-packages.js
CHANGED
|
@@ -13,7 +13,7 @@ import {
|
|
|
13
13
|
projectPortableTaskRecord,
|
|
14
14
|
projectPreferenceComparisonRelease,
|
|
15
15
|
resolvePortableTasksetRewardExecution
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-7PCER4VL.js";
|
|
17
17
|
import {
|
|
18
18
|
OpenPondTasksetPackageClient,
|
|
19
19
|
OpenPondTasksetPackageError,
|
package/dist/training-bundle.js
CHANGED
|
@@ -2,7 +2,7 @@ import {
|
|
|
2
2
|
learningVerifierModule,
|
|
3
3
|
projectLearningBatchGraders,
|
|
4
4
|
resolvePortableTasksetRewardExecution
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-7PCER4VL.js";
|
|
6
6
|
import {
|
|
7
7
|
LearningBatchDatasetSourceRefSchema,
|
|
8
8
|
MAX_TASKSET_PACKAGE_BYTES,
|
|
@@ -276,7 +276,7 @@ function materializeLearningBatchTaskset(input) {
|
|
|
276
276
|
datasetArtifact: null,
|
|
277
277
|
policy: release.policy,
|
|
278
278
|
environment: { protocolVersion: "openpond.taskEnvironment.v1", kind: work ? "work" : "chat", entrypoint: release.environment.entrypoint, stateful: release.environment.stateful, deterministicSeeds: release.environment.deterministicSeeds, toolNames: release.tools.map((tool) => tool.name), lifecycle: ["create", "reset", "step", "grade", "cleanup"], defaultTimeoutMs: release.environment.defaultTimeoutMs, networkPolicy: release.environment.networkPolicy, metadata: { portableEnvironment: release.environment, portableTools: release.tools } },
|
|
279
|
-
capabilities: { schemaVersion: "openpond.tasksetCapabilities.v1", taskKind: work ? "single_agent" : "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: release.tools.length > 0, requiresState: release.environment.stateful, requiresPrivilegedGrading: true, environmentPlacements: ["local", "remote"], exportable: true, portabilityBlockers: [] },
|
|
279
|
+
capabilities: { schemaVersion: "openpond.tasksetCapabilities.v1", taskKind: work ? "single_agent" : "chat", supportedSignals: signals.demonstrations.length ? ["demonstration", "reward"] : ["reward"], compatibleMethods: input.batch.purpose === "supervised_training" ? ["sft"] : input.batch.purpose === "reward_training" ? ["grpo", "ppo"] : ["none"], rewardKinds: [...new Set(release.graders.map((grader) => grader.kind === "human" ? "human" : grader.kind === "model_judge" ? "model_judge" : "deterministic"))], requiresTools: release.tools.length > 0, requiresState: release.environment.stateful, requiresPrivilegedGrading: true, environmentPlacements: ["local", "remote"], exportable: true, portabilityBlockers: [] },
|
|
280
280
|
tasks: materialized.tasks.map((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" } })),
|
|
281
281
|
graders,
|
|
282
282
|
graderFixtures: fixtures,
|
|
@@ -749,7 +749,7 @@ function buildTasksetTrainingBundle(input) {
|
|
|
749
749
|
const rewardExecution = resolvePortableTasksetRewardExecution(taskset, input.rewardExecution);
|
|
750
750
|
if (rewardExecution) {
|
|
751
751
|
const verifierAssets = input.verifierAssets ?? [];
|
|
752
|
-
const references = compileBoundGraders(rewardExecution.binding, rewardExecution.rewards).flatMap((grader) => grader.kind === "custom_verifier" ? [grader.verifierRef] : []);
|
|
752
|
+
const references = compileBoundGraders(rewardExecution.binding, rewardExecution.rewards).flatMap((grader) => grader.kind === "custom_verifier" ? [grader.verifierRef] : grader.kind === "model_judge" ? [grader.rubricRef] : []);
|
|
753
753
|
const expected = new Set(references.map((reference) => reference.id));
|
|
754
754
|
if (new Set(verifierAssets.map((asset2) => asset2.id)).size !== verifierAssets.length || verifierAssets.some((asset2) => !expected.has(asset2.id))) throw new Error("Unexpected or duplicate private verifier asset.");
|
|
755
755
|
for (const reference of references) {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/training-bundle.ts", "../src/training-bundle-contracts.ts", "../src/training-privacy.ts", "../src/training-learning-batch.ts", "../src/learning-batch-assets.ts", "../src/managed-training-preparation.ts", "../src/training-recipe-binding.ts", "../src/training-policy-harness.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, prepareReviewedLearningBatch } from \"./training-learning-batch.js\";\nexport { prepareManagedTrainingSubmission, type ManagedTrainingPreparationInput, type TrainingPreparationFile } from \"./managed-training-preparation.js\";\nexport { scanAndRedactEvidence, type EvidencePrivacyScan } from \"./training-privacy.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\nexport { withAuthoritativeRecipeHashes, AdamwOptimizerConfigSchema } from \"./training-recipe-binding.js\";\n\nexport { createPolicyHarnessContext } from \"./training-policy-harness.js\";\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", "const SECRET_PATTERNS: Array<{ label: string; pattern: RegExp }> = [\n { label: \"OpenAI-style API key\", pattern: /\\bsk-[A-Za-z0-9_-]{16,}\\b/g },\n { label: \"OpenPond API key\", pattern: /\\bopk_[A-Za-z0-9_-]{12,}\\b/g },\n { label: \"private key\", pattern: /-----BEGIN (?:RSA |EC |OPENSSH )?PRIVATE KEY-----/g },\n { label: \"credential assignment\", pattern: /\\b(?:api[_-]?key|password|secret|token)\\s*[:=]\\s*[\"']?[^\\s\"']{8,}/gi },\n];\nconst EMAIL_PATTERN = /\\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,}\\b/gi;\nconst PHONE_PATTERN = /\\b(?:\\+?1[-.\\s]?)?\\(?\\d{3}\\)?[-.\\s]\\d{3}[-.\\s]\\d{4}\\b/g;\n\nexport type EvidencePrivacyScan = {\n secretStatus: \"passed\" | \"blocked\";\n piiStatus: \"passed\" | \"review\";\n findings: string[];\n redacted: string;\n};\n\nexport function scanAndRedactEvidence(text: string): EvidencePrivacyScan {\n const findings: string[] = [];\n let redacted = text;\n for (const item of SECRET_PATTERNS) {\n item.pattern.lastIndex = 0;\n if (item.pattern.test(redacted)) findings.push(item.label);\n item.pattern.lastIndex = 0;\n redacted = redacted.replace(item.pattern, `[REDACTED ${item.label}]`);\n }\n EMAIL_PATTERN.lastIndex = 0;\n const hasEmail = EMAIL_PATTERN.test(redacted);\n EMAIL_PATTERN.lastIndex = 0;\n if (hasEmail) findings.push(\"email address\");\n redacted = redacted.replace(EMAIL_PATTERN, \"[REDACTED email]\");\n PHONE_PATTERN.lastIndex = 0;\n const hasPhone = PHONE_PATTERN.test(redacted);\n PHONE_PATTERN.lastIndex = 0;\n if (hasPhone) findings.push(\"phone number\");\n redacted = redacted.replace(PHONE_PATTERN, \"[REDACTED phone]\");\n return {\n secretStatus: findings.some((finding) => !finding.includes(\"email\") && !finding.includes(\"phone\")) ? \"blocked\" : \"passed\",\n piiStatus: hasEmail || hasPhone ? \"review\" : \"passed\",\n findings,\n redacted,\n };\n}\n", "import { TasksetSchema, type GeneratedTaskFile } from \"./taskset-authored-contracts.js\";\nimport type { GraderFixture, LearningSignalInventory, TasksetSourceRef } from \"./taskset-draft-core.js\";\nimport { LearningBatchDatasetSourceRefSchema } from \"./taskset-draft-dataset-sources.js\";\nimport { scanAndRedactEvidence } from \"./training-privacy.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\";\nimport { materializeLearningBatchAssets } from \"./learning-batch-assets.js\";\nimport { MAX_TASKSET_PACKAGE_BYTES } from \"./taskset-package-files.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 assetBytes?: ReadonlyMap<string, Uint8Array>;\n}) {\n const release = compileTaskBatch(input);\n const metadata = taskBatchPackageMetadata(release);\n const work = release.environment.kind === \"work\";\n if ((!work && (release.environment.kind !== \"text\" || release.tools.length || release.tasks.some(task => task.artifactRefs.length)))\n || (work && release.tasks.some(task => !task.requiredOutputs?.length))) throw new Error(\"This learning batch requires a supported text or Work environment with declared outputs.\");\n const sourceId = input.source.id;\n const materialized = materializeLearningBatchAssets({ tasks: release.tasks, sourceId, assets: input.assets, assetBytes: input.assetBytes });\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: work ? \"work\" : \"chat\", entrypoint: release.environment.entrypoint, stateful: release.environment.stateful, deterministicSeeds: release.environment.deterministicSeeds, toolNames: release.tools.map(tool => tool.name), lifecycle: [\"create\", \"reset\", \"step\", \"grade\", \"cleanup\"], defaultTimeoutMs: release.environment.defaultTimeoutMs, networkPolicy: release.environment.networkPolicy, metadata: { portableEnvironment: release.environment, portableTools: release.tools } },\n capabilities: { schemaVersion: \"openpond.tasksetCapabilities.v1\", taskKind: work ? \"single_agent\" : \"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: release.tools.length > 0, requiresState: release.environment.stateful, requiresPrivilegedGrading: true, environmentPlacements: [\"local\", \"remote\"], exportable: true, portabilityBlockers: [] },\n tasks: materialized.tasks.map(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: work ? { mode: \"artifacts\", requiredOutputSource: \"task.requiredOutputs\" } : { mode: \"structured_json\", jsonSchema: input.definition.outputSchema, renderer: null } },\n });\n return { taskset: TasksetSchema.parse({ ...taskset, contentHash: computeTasksetHash(taskset) }), release, generatedFiles, tasksetAssetBytes: materialized.tasksetAssetBytes };\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\n/** Shared admission-to-training preparation. No caller may claim a passed\n * privacy scan without executing the same checks over the pinned evidence.\n */\nexport function prepareReviewedLearningBatch(input: Omit<Parameters<typeof materializeLearningBatchTaskset>[0], \"source\"> & {\n admissionContext?: \"explicit_local_batch_review\" | \"explicit_hosted_batch_review\";\n}) {\n const inputAssetText: string[] = [];\n let inputAssetSize = 0;\n for (const ref of new Map(input.evidence.flatMap(item => item.submission.assets.map(ref => [ref.id, ref] as const))).values()) {\n const bytes = input.assetBytes?.get(ref.id);\n const stored = input.assets?.find(asset => asset.id === ref.id);\n const size = bytes?.byteLength ?? (stored ? new TextEncoder().encode(stored.text).byteLength : 0);\n inputAssetSize += size;\n if (inputAssetSize > MAX_TASKSET_PACKAGE_BYTES) throw new Error(\"Learning input assets exceed the training package limit.\");\n if (bytes) inputAssetText.push(new TextDecoder().decode(bytes));\n else if (stored) inputAssetText.push(stored.text);\n }\n const scan = scanAndRedactEvidence(JSON.stringify({\n tasks: input.evidence.map(item => item.submission), targets: input.decisions.map(item => item.approvedTarget), definition: input.definition,\n inputAssets: inputAssetText,\n }));\n if (scan.secretStatus !== \"passed\" || scan.piiStatus !== \"passed\") throw new Error(`Learning batch contains unresolved data findings (${scan.findings.join(\", \")}). Correct the source examples and seal a revised batch before training.`);\n const source = LearningBatchDatasetSourceRefSchema.parse({\n schemaVersion: \"openpond.learningBatchDatasetSource.v1\", kind: \"learning_batch\",\n id: `batch-source-${input.batch.contentHash.slice(0, 40)}`, profileId: input.profileId,\n title: input.definition.name, sourceHash: input.batch.contentHash, occurredAt: input.batch.sealedAt,\n batch: learningRef(input.batch), taskDefinition: input.batch.taskDefinition, admittedBy: input.batch.sealedBy,\n licensingStatus: \"approved\", secretScanStatus: scan.secretStatus, piiScanStatus: scan.piiStatus,\n metadata: { admission: input.admissionContext ?? \"explicit_local_batch_review\", privacyScanner: \"openpond-evidence-v1\", findings: scan.findings },\n });\n return materializeLearningBatchTaskset({ ...input, source });\n}\n", "import { contentHash, sha256 } from \"@openpond/harness\";\nimport { verifyLearningTextAsset, type LearningTextAsset } from \"@openpond/evals/learning\";\nimport type { TaskRecord } from \"@openpond/evals/tasksets\";\n\n/** Capture exact admitted input bytes under task-specific materialization paths. */\nexport function materializeLearningBatchAssets(input: {\n tasks: TaskRecord[]; sourceId: string; assets?: LearningTextAsset[];\n assetBytes?: ReadonlyMap<string, Uint8Array>;\n}) {\n const tasksetAssetBytes = new Map<string, Uint8Array>();\n const tasks = input.tasks.map(({ artifactRefs, ...task }) => ({\n ...task,\n assets: artifactRefs.map(asset => {\n if (asset.visibility !== \"policy\") throw new Error(\"Learning task inputs must be policy-visible assets.\");\n const stored = input.assets?.find(value => value.id === asset.id);\n const bytes = input.assetBytes?.get(asset.id)\n ?? (stored ? new TextEncoder().encode(verifyLearningTextAsset(stored, asset)) : undefined);\n if (!bytes || bytes.byteLength !== asset.sizeBytes || sha256(bytes) !== asset.contentHash) throw new Error(`Learning task input bytes are missing or changed: ${asset.id}.`);\n const artifactRef = `learning/assets/${contentHash({ task: task.id, asset: asset.id }).slice(0, 40)}/${asset.path}`;\n tasksetAssetBytes.set(artifactRef, new Uint8Array(bytes));\n return { id: asset.id, sourceRefId: input.sourceId, artifactRef,\n fileName: asset.path.split(\"/\").at(-1)!, mediaType: asset.mediaType,\n sha256: asset.contentHash, sizeBytes: asset.sizeBytes, split: task.split, metadata: { portableAsset: asset } };\n }),\n ...(task.requiredOutputs ? { requiredOutputs: task.requiredOutputs.map(output => ({ ...output,\n schemaRef: output.schemaRef?.id ?? null, maxBytes: output.maxBytes ?? undefined })) } : {}),\n }));\n return { tasks, tasksetAssetBytes };\n}\n", "import { contentHash, sha256 } from \"@openpond/harness\";\nimport { z } from \"zod\";\n\nimport type { ModelProject } from \"./model-projects.js\";\nimport { HarnessRunManifestSchema, ResolvedTrainingBundleManifestSchema, type HarnessRunManifest, type ResolvedTrainingBundleManifest } from \"./training-bundle-contracts.js\";\nimport { TRAINING_EVALUATION_SOURCE_PATH, TrainingEvaluationSourceSchema, trainingEvaluationSourceRef, type TrainingEvaluationSource } from \"./training-evaluation-source.js\";\nimport { parseAndVerifyTrainingInputArtifactUpload, parseAndVerifyTrainingJobSubmission, trainingInputArtifactUploadHash, trainingJobSubmissionHash, type TrainingJobSubmission } from \"./training.js\";\n\ntype PolicyJob = Extract<TrainingJobSubmission[\"job\"], { kind: \"policy_optimize\" }>;\nexport type TrainingPreparationFile = TrainingEvaluationSource[\"assets\"][number];\n\nexport interface ManagedTrainingPreparationInput {\n project: ModelProject;\n manifest: HarnessRunManifest;\n recipe: PolicyJob[\"recipe\"];\n taskset: TrainingJobSubmission[\"source\"][\"taskset\"];\n bundleManifest: ResolvedTrainingBundleManifest;\n files: TrainingPreparationFile[];\n evaluationSource: TrainingEvaluationSource;\n rewardSource: PolicyJob[\"rewardSource\"];\n resumeFrom: PolicyJob[\"resumeFrom\"];\n approval: Pick<TrainingJobSubmission[\"approval\"], \"approvalHash\" | \"maximumSpendUsd\" | \"retentionDays\" | \"region\">;\n modelImprovementQualification?: { id: string; contentHash: string } | null;\n /** A durable hosted iteration supplies its dispatch identity here. */\n idempotencyKey?: string;\n}\n\n/** Build the exact staged artifact and public Job without network or compute.\n * Inputs are copied before hashing so an asynchronous caller cannot rewrite the\n * selected bytes while preparation is in progress.\n */\nexport async function prepareManagedTrainingSubmission(raw: ManagedTrainingPreparationInput) {\n const input = structuredClone(raw);\n const { project, recipe, taskset, approval } = input;\n const manifest = HarnessRunManifestSchema.parse(input.manifest);\n const bundle = ResolvedTrainingBundleManifestSchema.parse(input.bundleManifest);\n const { contentHash: manifestHash, ...manifestContent } = manifest;\n const { contentHash: bundleHash, ...bundleContent } = bundle;\n if (contentHash(manifestContent) !== manifestHash || contentHash(bundleContent) !== bundleHash\n || manifest.resolvedBundleHash !== bundleHash || contentHash(manifest.harnessRelease) !== contentHash(bundle.harnessRelease)\n || contentHash(manifest.datasetRelease) !== contentHash(bundle.datasetRelease)\n || contentHash(manifest.evidenceSets) !== contentHash(bundle.evidenceSetRelease ? [bundle.evidenceSetRelease] : [])) {\n throw new Error(\"The managed training manifest or resolved bundle changed.\");\n }\n if (!project.hosted || project.hosted.syncedSourceRevision !== project.revision\n || project.hosted.portableProjectId !== project.id) throw new Error(\"Sync the exact Model Project revision before preparing managed training.\");\n const baseModel = project.trainingSetup.baseModel;\n if (!baseModel || baseModel.modelId !== manifest.model.source || baseModel.revision !== manifest.model.revision\n || baseModel.tokenizerRevision !== manifest.model.tokenizerRevision || baseModel.chatTemplateHash !== manifest.model.chatTemplateHash) {\n throw new Error(\"The synced Model Project base Model does not match the Run manifest.\");\n }\n if (recipe.method !== \"grpo\" || contentHash(recipe) !== manifest.recipe.configHash\n || approval.approvalHash !== manifest.approval.approvalHash || approval.maximumSpendUsd !== manifest.approval.maximumSpendUsd) {\n throw new Error(\"Managed training requires the exact approved GRPO recipe and spend ceiling.\");\n }\n const limits = z.object({ wallTimeMs: z.number().positive() }).parse(recipe.resourceLimits);\n if (input.idempotencyKey !== undefined) z.string().trim().min(16).max(191).parse(input.idempotencyKey);\n const files = verifyFiles(bundle, input.files);\n const evaluationSource = TrainingEvaluationSourceSchema.parse(input.evaluationSource);\n const evaluationFile = files.find(file => file.path === TRAINING_EVALUATION_SOURCE_PATH);\n if (!evaluationFile || contentHash(JSON.parse(Buffer.from(evaluationFile.content, \"base64\").toString(\"utf8\"))) !== contentHash(evaluationSource)) {\n throw new Error(\"The evaluation source differs from the immutable training bundle.\");\n }\n const evaluation = await trainingEvaluationSourceRef(evaluationSource);\n const payload = {\n schemaVersion: \"openpond.managedRlPortableSubmission.v1\" as const,\n sourceRunRef: `openpond:model-run:${manifest.id}`,\n name: `OpenPond Managed \u00B7 ${project.id}`.slice(0, 191),\n idempotencyKey: input.idempotencyKey ?? `openpond-managed:${manifestHash}`.slice(0, 191),\n modelProject: { id: project.hosted.projectId, portableProjectId: project.hosted.portableProjectId },\n manifest, sourceTaskset: taskset,\n modelImprovementQualification: input.modelImprovementQualification ?? null,\n recipe, resolvedBundle: { manifest: bundle, files },\n validationTasks: evaluationSource.tasks, validationAssets: evaluationSource.assets,\n };\n const artifactContent = {\n schemaVersion: \"openpond.trainingInputArtifactUpload.v2\" as const,\n kind: \"portable_training_bundle\" as const,\n idempotencyKey: `stage:${input.idempotencyKey ?? manifestHash}`,\n sourceManifest: { id: manifest.id, contentHash: manifestHash }, payload,\n };\n const artifact = await parseAndVerifyTrainingInputArtifactUpload({ ...artifactContent, contentHash: await trainingInputArtifactUploadHash(artifactContent) });\n const jobContent: Omit<TrainingJobSubmission, \"contentHash\"> = {\n schemaVersion: \"openpond.trainingJobSubmission.v2\",\n idempotencyKey: input.idempotencyKey ?? `openpond-training-v2:${manifestHash}`,\n name: `OpenPond Managed \u00B7 ${project.id}`.slice(0, 200),\n source: {\n modelProject: { id: project.hosted.projectId, portableProjectId: project.hosted.portableProjectId, revision: project.revision, contentHash: project.hosted.etag },\n harnessRunManifest: artifactContent.sourceManifest, harnessRelease: manifest.harnessRelease,\n taskset, tasksetRelease: { id: taskset.id, contentHash: taskset.contentHash },\n dataset: bundle.datasetRelease, evaluation,\n evidenceSets: bundle.evidenceSetRelease ? [bundle.evidenceSetRelease] : [],\n },\n job: { kind: \"policy_optimize\", baseModel, recipe, rewardSource: input.rewardSource, resumeFrom: input.resumeFrom },\n requestedCapabilities: [\n { id: \"managed_rl.policy.grpo\", version: \"1\", required: true },\n { id: `managed_rl.rollouts.${manifest.runtimeTarget.placement}`, version: \"1\", required: true },\n ...(project.trainingSetup.managedGpuRequirement === \"h100_hbm3\" ? [{ id: \"managed_rl.gpu.h100_hbm3\", version: \"1\", required: true }] : []),\n ],\n placementObjective: project.trainingSetup.managedGpuPlacementObjective,\n budget: { maximumSpendUsd: approval.maximumSpendUsd, maximumWallSeconds: Math.ceil(limits.wallTimeMs / 1_000) },\n approval: { ...approval, approvedAt: manifest.approval.approvedAt, exportApproved: true },\n };\n const submission = await parseAndVerifyTrainingJobSubmission({ ...jobContent, contentHash: await trainingJobSubmissionHash(jobContent) });\n return { artifact, submission };\n}\n\nfunction verifyFiles(bundle: ResolvedTrainingBundleManifest, files: TrainingPreparationFile[]) {\n if (files.length !== bundle.files.length || new Set(files.map(file => file.path)).size !== files.length) throw new Error(\"The managed bundle file inventory changed.\");\n const indexed = new Map(files.map(file => [file.path, file]));\n return bundle.files.map(expected => {\n const file = indexed.get(expected.path);\n if (!file || file.path.includes(\"\\\\\") || file.path.includes(\"\\0\") || file.path.split(\"/\").some(part => !part || part === \".\" || part === \"..\")\n || file.path === \"bundle-manifest.json\" || file.encoding !== \"base64\") throw new Error(\"The managed bundle contains an invalid file.\");\n const bytes = Buffer.from(file.content, \"base64\");\n if (bytes.toString(\"base64\") !== file.content || file.sha256 !== expected.sha256 || file.sizeBytes !== expected.sizeBytes\n || bytes.byteLength !== expected.sizeBytes || sha256(bytes) !== expected.sha256) throw new Error(`Managed training bundle file ${file.path} changed before upload.`);\n return file;\n });\n}\n", "import { z } from \"zod\";\nimport { contentHash } from \"@openpond/harness\";\nimport type { Taskset } from \"./taskset-authored-contracts.js\";\n\nexport const AdamwOptimizerConfigSchema = z.object({\n name: z.literal(\"adamw\").default(\"adamw\"),\n weightDecay: z.number().nonnegative().max(1).default(0),\n beta1: z.number().positive().lt(1).default(0.9),\n beta2: z.number().positive().lt(1).default(0.999),\n epsilon: z.number().positive().max(0.01).default(1e-8),\n}).strict().default({\n name: \"adamw\",\n weightDecay: 0,\n beta1: 0.9,\n beta2: 0.999,\n epsilon: 1e-8,\n});\n\nexport function withAuthoritativeRecipeHashes(\n taskset: Taskset,\n recipe: unknown,\n): unknown {\n if (!recipe || typeof recipe !== \"object\" || Array.isArray(recipe)) {\n return recipe;\n }\n const candidate = recipe as Record<string, unknown>;\n if (candidate.method === \"dpo\") {\n const policyModel = record(candidate.policyModel);\n const referenceModel = record(candidate.referenceModel);\n const dataset = record(candidate.dataset);\n const invalidationHash = contentHash({\n tasksetHash: taskset.contentHash,\n preferenceSignals: taskset.learningSignals.preferences.map((signal) => ({\n id: signal.id,\n artifactRef: signal.artifactRef,\n prompt: signal.prompt,\n chosen: signal.chosen,\n rejected: signal.rejected,\n approved: signal.approved,\n })),\n policyModel,\n referenceModel,\n dataset,\n });\n return {\n ...candidate,\n referenceLogprobs: {\n cacheSchemaVersion: \"openpond.dpoReferenceLogprobs.v1\",\n cacheKey: contentHash([\"dpo-reference-logprobs\", invalidationHash]),\n invalidationHash,\n },\n };\n }\n if (candidate.method === \"ppo\") {\n const policyOptimization = record(candidate.policyOptimization);\n const policyModel = record(policyOptimization.policyModel);\n const referenceModel = record(policyOptimization.referenceModel);\n const optimizer = record(policyOptimization.optimizer);\n const valueModel = record(optimizer.valueModel);\n const dataset = record(policyOptimization.dataset);\n const reward = record(policyOptimization.reward);\n const policyHash = contentHash(policyModel);\n const referenceHash = contentHash(referenceModel);\n const valueModelHash = contentHash(valueModel);\n return {\n ...candidate,\n policyOptimization: {\n ...policyOptimization,\n dataset: {\n ...dataset,\n tasksetId: taskset.id,\n tasksetHash: taskset.contentHash,\n },\n reward: {\n ...reward,\n graderHash: contentHash(taskset.graders),\n },\n },\n resume: {\n ...record(candidate.resume),\n policyHash,\n referenceHash,\n valueModelHash,\n },\n };\n }\n if (candidate.method !== \"grpo\") return recipe;\n const reward =\n candidate.reward\n && typeof candidate.reward === \"object\"\n && !Array.isArray(candidate.reward)\n ? candidate.reward as Record<string, unknown>\n : {};\n const metadataToolContractHash =\n taskset.environment.metadata.toolContractHash;\n const authoritativeToolContractHash =\n typeof metadataToolContractHash === \"string\"\n && metadataToolContractHash.trim()\n ? metadataToolContractHash\n : reward.toolContractHash;\n const baseModel = record(candidate.baseModel);\n const dataset = record(candidate.dataset);\n const rollout = record(candidate.rollout);\n const optimizer = record(candidate.optimizer);\n const loss = record(candidate.loss);\n const resourceLimits = record(candidate.resourceLimits);\n const maxExamples = positiveInteger(dataset.maxExamples, 1);\n const groupSize = positiveInteger(rollout.groupSize, 2);\n const maxOutputTokens = positiveInteger(rollout.maxOutputTokens, 1);\n const maxPromptTokens = positiveInteger(dataset.maxPromptTokens, 1);\n const maxSteps = positiveInteger(optimizer.maxSteps, 1);\n const optimizerIterations = positiveInteger(optimizer.iterations, 2);\n return {\n ...candidate,\n resourceLimits: {\n ...resourceLimits,\n maxGpuSeconds: resourceLimits.maxGpuSeconds ?? Math.min(\n 10_800,\n Math.ceil(positiveInteger(resourceLimits.wallTimeMs, 180_000) / 1_000),\n ),\n },\n reward: {\n ...reward,\n graderHash: contentHash(taskset.graders),\n toolContractHash: authoritativeToolContractHash,\n },\n policyOptimization: {\n schemaVersion: \"openpond.policyOptimization.v1\",\n policyModel: baseModel,\n referenceModel: baseModel,\n dataset: {\n tasksetId: taskset.id,\n tasksetHash: taskset.contentHash,\n split: \"train\",\n selectionStrategy: dataset.selectionStrategy,\n selectionSeed: rollout.seed,\n maxExamples,\n },\n sampler: {\n temperature: rollout.temperature,\n topP: rollout.topP,\n maxOutputTokens,\n maxTurns: rollout.maxTurns,\n concurrency: rollout.concurrency,\n },\n environment: {\n id: reward.environmentId,\n version: reward.environmentVersion,\n toolContractHash: authoritativeToolContractHash,\n },\n reward: {\n graderId: reward.graderId,\n graderHash: contentHash(taskset.graders),\n learnedPreference: reward.learnedPreference ?? null,\n },\n kl: {\n coefficient: loss.klBeta ?? null,\n referenceConstraint: \"fixed_reference\",\n },\n budgets: {\n maxRollouts: positiveInteger(resourceLimits.maxRollouts, maxExamples * groupSize),\n maxEnvironmentExecutions: positiveInteger(resourceLimits.maxRollouts, maxExamples * groupSize),\n maxInputTokens: maxExamples * groupSize * maxPromptTokens,\n maxOutputTokens: maxExamples * groupSize * maxOutputTokens,\n maxOptimizerSteps: maxSteps * optimizerIterations,\n wallTimeMs: positiveInteger(resourceLimits.wallTimeMs, 180_000),\n maximumCostUsd: null,\n },\n checkpointEverySteps: 1,\n seed: rollout.seed,\n evaluationSplit: \"frozen_eval\",\n optimizer: {\n method: \"grpo\",\n groupSize,\n normalization: \"group_standardized\",\n advantageEpsilon:\n typeof optimizer.advantageEpsilon === \"number\"\n ? optimizer.advantageEpsilon\n : 1e-8,\n loss: loss.method ?? \"grpo\",\n clipRange: typeof optimizer.clipRange === \"number\" ? optimizer.clipRange : 0.2,\n iterations: optimizerIterations,\n microbatchSize: positiveInteger(optimizer.microbatchSize, 1),\n gradientAccumulationSteps: positiveInteger(\n optimizer.gradientAccumulationSteps,\n 1,\n ),\n adamw: AdamwOptimizerConfigSchema.parse(optimizer.adamw),\n },\n },\n };\n}\n\nfunction record(value: unknown): Record<string, unknown> {\n return value && typeof value === \"object\" && !Array.isArray(value)\n ? value as Record<string, unknown>\n : {};\n}\n\nfunction positiveInteger(value: unknown, fallback: number): number {\n return typeof value === \"number\" && Number.isInteger(value) && value > 0\n ? value\n : fallback;\n}\n\n", "import {\n canonicalJson, contentHash, createAgentSnapshot, createHarnessRelease,\n type AgentSnapshot, type HarnessRelease, type ImmutableAssetRef,\n type ImmutableReleaseRef, type ToolDeclaration,\n} from \"@openpond/harness\";\n\n/** Compile immutable Agent-loop dependencies for local and hosted callers.\n * The protocol and asset identities preserve existing approved training Runs.\n * Taskset environment, tools and graders are bound separately in the bundle.\n * Callers resolve source/assets before entering this pure compilation boundary.\n */\nexport function createPolicyHarnessContext(input: {\n sourceRelease: ImmutableReleaseRef | null;\n profileHead?: string | null;\n skills?: ImmutableAssetRef[];\n agents?: ImmutableAssetRef[];\n}): { agentSnapshot: AgentSnapshot; harnessRelease: HarnessRelease } {\n const sourceRelease = input.sourceRelease;\n const harnessTools: ToolDeclaration[] = [];\n const skills = input.skills ?? [];\n const agents = input.agents ?? [];\n if ([...skills, ...agents].some(entry => entry.visibility !== \"policy\")) {\n throw new Error(\"The portable policy Harness requires policy-visible dependencies.\");\n }\n const dependencyLock = asset({\n id: \"desktop-dependency-lock\",\n path: \".openpond/harness/dependency-lock.json\",\n hashInput: {\n profileHead: input.profileHead ?? null,\n sourceRelease,\n tools: harnessTools,\n skills: skills.map(({ id, contentHash: assetHash }) => ({ id, contentHash: assetHash })),\n agents: agents.map(({ id, contentHash: assetHash }) => ({ id, contentHash: assetHash })),\n },\n mediaType: \"application/json\",\n visibility: \"policy\",\n });\n const agentSnapshot = createAgentSnapshot({\n schemaVersion: \"openpond.agentSnapshot.v2\",\n id: `agent-snapshot-${contentHash([sourceRelease, harnessTools, dependencyLock.contentHash]).slice(0, 24)}`,\n sourceRelease,\n instructions: [],\n skills,\n agents,\n toolDeclarations: harnessTools,\n capabilityRequirements: [],\n dependencyLock,\n portability: {\n portable: true,\n blockers: [],\n localOnlyAssetRefs: [],\n hostPrivateAssetRefs: [],\n },\n metadata: { sourceReleaseId: sourceRelease?.id ?? null },\n });\n const program = asset({\n id: \"desktop-harness-program\",\n path: \".openpond/harness/program.json\",\n hashInput: { program: \"openpond.desktop-agent-loop.v1\" },\n mediaType: \"application/json\",\n visibility: \"policy\",\n });\n const harnessRelease = createHarnessRelease({\n schemaVersion: \"openpond.harnessRelease.v2\",\n id: `harness-${contentHash([agentSnapshot.contentHash, program.contentHash, harnessTools]).slice(0, 24)}`,\n agentSnapshot: { id: agentSnapshot.id, contentHash: agentSnapshot.contentHash },\n program,\n tools: harnessTools,\n lifecycle: {\n create: true,\n reset: true,\n step: true,\n collect: true,\n destroy: true,\n resetScope: \"attempt\",\n },\n graderInterface: {\n visibleEvidence: [\"output\", \"runtime_events\", \"artifacts\"],\n privilegedEvidence: [\"expected_output\", \"private_verifier\"],\n privateVerifierIsolation: true,\n },\n files: [...skills, ...agents],\n metadata: { runtimeProtocol: \"openpond.desktop-agent-loop.v1\" },\n });\n return { agentSnapshot, harnessRelease };\n}\n\nfunction asset(input: {\n id: string;\n path: string;\n hashInput: unknown;\n mediaType: string;\n visibility: ImmutableAssetRef[\"visibility\"];\n}): ImmutableAssetRef {\n const bytes = canonicalJson(input.hashInput);\n return {\n id: input.id,\n path: input.path,\n contentHash: contentHash(input.hashInput),\n sizeBytes: new TextEncoder().encode(bytes).byteLength,\n mediaType: input.mediaType,\n visibility: input.visibility,\n };\n}\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,SAAS,2BAA2B;AACpC,SAAS,2BAAAA,gCAAuD;;;ACFhE,SAAS,SAAS;AAGX,IAAM,gCAAgC,EAC1C,OAAO;AAAA,EACN,IAAI;AAAA,EACJ,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG;AAAA,EACzC,UAAU,EAAE,KAAK;AAAA,IACf;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAAA,EACD,UAAU,EAAE,QAAQ;AAAA,EACpB,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,KAAM;AAAA,EAClD,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,EAAE,QAAQ,CAAC,CAAC;AACxE,CAAC,EACA,OAAO;AAEH,IAAM,6BAA6B,EACvC,OAAO;AAAA,EACN,eAAe;AAAA,EACf,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,GAAK;AAAA,EAC5C,UAAU,8BAA8B,MAAM;AAAA,EAC9C,WAAW;AACb,CAAC,EACA,OAAO;AAOH,IAAM,oCAAoC,EAC9C,OAAO;AAAA,EACN,WAAW;AAAA,EACX,WAAW,EAAE,KAAK,CAAC,SAAS,UAAU,aAAa,iBAAiB,CAAC;AAAA,EACrE,mBAAmB;AAAA,EACnB,gBAAgB,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG;AAAA,EAChD,WAAW,EACR,OAAO;AAAA,IACN,UAAU;AAAA,IACV,aAAa;AAAA,IACb,QAAQ;AAAA,IACR,cAAc;AAAA,IACd,oBAAoB,EAAE,OAAO,EAAE,MAAM,uBAAuB;AAAA,IAC5D,mBAAmB;AAAA,EACrB,CAAC,EACA,OAAO,EACP,SAAS;AACd,CAAC,EACA,OAAO;AAEH,IAAM,6BAA6B,EACvC,OAAO;AAAA,EACN,WAAW;AAAA,EACX,MAAM,EAAE,KAAK,CAAC,SAAS,OAAO,WAAW,QAAQ,CAAC;AAAA,EAClD,cAAc,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,GAAK;AAAA,EAChD,mBAAmB;AAAA,EACnB,UAAU,gBAAgB,SAAS;AACrC,CAAC,EACA,OAAO;AAEH,IAAM,8BAA8B,EACxC,OAAO;AAAA,EACN,WAAW;AAAA,EACX,eAAe,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG;AAAA,EAC/C,mBAAmB,EAChB,OAAO,EACP,MAAM,uBAAuB,EAC7B,SAAS;AAAA,EACZ,kBAAkB,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG;AAAA,EAClD,mBAAmB;AACrB,CAAC,EACA,OAAO;AAEH,IAAM,kCAAkC,EAC5C,OAAO;AAAA,EACN,eAAe,EAAE,QAAQ,gCAAgC;AAAA,EACzD,IAAI;AAAA,EACJ,gBAAgB;AAAA,EAChB,gBAAgB;AAAA,EAChB,cAAc,EAAE,MAAM,yBAAyB,EAAE,IAAI,GAAM;AAAA,EAC3D,OAAO,EACJ,OAAO;AAAA,IACN,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG;AAAA,IACxC,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG;AAAA,IAC1C,cAAc,kBAAkB,SAAS;AAAA,IACzC,mBAAmB,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG;AAAA,IACnD,kBAAkB;AAAA,EACpB,CAAC,EACA,OAAO;AAAA,EACV,QAAQ,EACL,OAAO;AAAA,IACN,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG;AAAA,IACxC,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG;AAAA,IACzC,YAAY;AAAA,EACd,CAAC,EACA,OAAO;AAAA,EACV,eAAe;AAAA,EACf,eAAe;AAAA,EACf,QAAQ;AAAA,EACR,oBAAoB;AAAA,EACpB,iBAAiB,EAAE,MAAM,0BAA0B,EAAE,IAAI,GAAK;AAAA,EAC9D,UAAU,EACP,OAAO;AAAA,IACN,cAAc;AAAA,IACd,YAAY;AAAA,IACZ,iBAAiB,EAAE,OAAO,EAAE,YAAY,EAAE,SAAS;AAAA,EACrD,CAAC,EACA,OAAO;AAAA,EACV,WAAW;AACb,CAAC,EACA,OAAO;AAEH,IAAM,2BAA2B,gCAAgC,OAAO;AAAA,EAC7E,aAAa;AACf,CAAC,EAAE,OAAO;AAEH,IAAM,sCAAsC,EAChD,OAAO;AAAA,EACN,eAAe,EAAE,QAAQ,oCAAoC;AAAA,EAC7D,YAAY,EAAE,QAAQ,SAAS;AAAA,EAC/B,gBAAgB;AAAA,EAChB,gBAAgB;AAAA,EAChB,oBAAoB,0BAA0B,SAAS;AAAA,EACvD,OAAO,EACJ;AAAA,IACC,EACG,OAAO;AAAA,MACN,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,GAAK;AAAA,MACxC,QAAQ;AAAA,MACR,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY;AAAA,IAC1C,CAAC,EACA,OAAO;AAAA,EACZ,EACC,IAAI,GAAO;AAChB,CAAC,EACA,OAAO;AAEH,IAAM,uCACX,oCAAoC,OAAO;AAAA,EACzC,aAAa;AACf,CAAC,EAAE,OAAO;;;AChJZ,IAAM,kBAA6D;AAAA,EACjE,EAAE,OAAO,wBAAwB,SAAS,6BAA6B;AAAA,EACvE,EAAE,OAAO,oBAAoB,SAAS,8BAA8B;AAAA,EACpE,EAAE,OAAO,eAAe,SAAS,qDAAqD;AAAA,EACtF,EAAE,OAAO,yBAAyB,SAAS,sEAAsE;AACnH;AACA,IAAM,gBAAgB;AACtB,IAAM,gBAAgB;AASf,SAAS,sBAAsB,MAAmC;AACvE,QAAM,WAAqB,CAAC;AAC5B,MAAI,WAAW;AACf,aAAW,QAAQ,iBAAiB;AAClC,SAAK,QAAQ,YAAY;AACzB,QAAI,KAAK,QAAQ,KAAK,QAAQ,EAAG,UAAS,KAAK,KAAK,KAAK;AACzD,SAAK,QAAQ,YAAY;AACzB,eAAW,SAAS,QAAQ,KAAK,SAAS,aAAa,KAAK,KAAK,GAAG;AAAA,EACtE;AACA,gBAAc,YAAY;AAC1B,QAAM,WAAW,cAAc,KAAK,QAAQ;AAC5C,gBAAc,YAAY;AAC1B,MAAI,SAAU,UAAS,KAAK,eAAe;AAC3C,aAAW,SAAS,QAAQ,eAAe,kBAAkB;AAC7D,gBAAc,YAAY;AAC1B,QAAM,WAAW,cAAc,KAAK,QAAQ;AAC5C,gBAAc,YAAY;AAC1B,MAAI,SAAU,UAAS,KAAK,cAAc;AAC1C,aAAW,SAAS,QAAQ,eAAe,kBAAkB;AAC7D,SAAO;AAAA,IACL,cAAc,SAAS,KAAK,CAAC,YAAY,CAAC,QAAQ,SAAS,OAAO,KAAK,CAAC,QAAQ,SAAS,OAAO,CAAC,IAAI,YAAY;AAAA,IACjH,WAAW,YAAY,WAAW,WAAW;AAAA,IAC7C;AAAA,IACA;AAAA,EACF;AACF;;;ACrCA,SAAS,kBAAkB,aAAa,0BAA0B,2BAAAC,gCAA2M;;;ACH7Q,SAAS,+BAAuD;AAIzD,SAAS,+BAA+B,OAG5C;AACD,QAAM,oBAAoB,oBAAI,IAAwB;AACtD,QAAM,QAAQ,MAAM,MAAM,IAAI,CAAC,EAAE,cAAc,GAAG,KAAK,OAAO;AAAA,IAC5D,GAAG;AAAA,IACH,QAAQ,aAAa,IAAI,CAAAC,WAAS;AAChC,UAAIA,OAAM,eAAe,SAAU,OAAM,IAAI,MAAM,qDAAqD;AACxG,YAAM,SAAS,MAAM,QAAQ,KAAK,WAAS,MAAM,OAAOA,OAAM,EAAE;AAChE,YAAMC,SAAQ,MAAM,YAAY,IAAID,OAAM,EAAE,MACtC,SAAS,IAAI,YAAY,EAAE,OAAO,wBAAwB,QAAQA,MAAK,CAAC,IAAI;AAClF,UAAI,CAACC,UAASA,OAAM,eAAeD,OAAM,aAAa,OAAOC,MAAK,MAAMD,OAAM,YAAa,OAAM,IAAI,MAAM,qDAAqDA,OAAM,EAAE,GAAG;AAC3K,YAAM,cAAc,mBAAmB,YAAY,EAAE,MAAM,KAAK,IAAI,OAAOA,OAAM,GAAG,CAAC,EAAE,MAAM,GAAG,EAAE,CAAC,IAAIA,OAAM,IAAI;AACjH,wBAAkB,IAAI,aAAa,IAAI,WAAWC,MAAK,CAAC;AACxD,aAAO;AAAA,QAAE,IAAID,OAAM;AAAA,QAAI,aAAa,MAAM;AAAA,QAAU;AAAA,QAClD,UAAUA,OAAM,KAAK,MAAM,GAAG,EAAE,GAAG,EAAE;AAAA,QAAI,WAAWA,OAAM;AAAA,QAC1D,QAAQA,OAAM;AAAA,QAAa,WAAWA,OAAM;AAAA,QAAW,OAAO,KAAK;AAAA,QAAO,UAAU,EAAE,eAAeA,OAAM;AAAA,MAAE;AAAA,IACjH,CAAC;AAAA,IACD,GAAI,KAAK,kBAAkB,EAAE,iBAAiB,KAAK,gBAAgB,IAAI,aAAW;AAAA,MAAE,GAAG;AAAA,MACrF,WAAW,OAAO,WAAW,MAAM;AAAA,MAAM,UAAU,OAAO,YAAY;AAAA,IAAU,EAAE,EAAE,IAAI,CAAC;AAAA,EAC7F,EAAE;AACF,SAAO,EAAE,OAAO,kBAAkB;AACpC;;;ADfO,SAAS,gCAAgC,OAM7C;AACD,QAAM,UAAU,iBAAiB,KAAK;AACtC,QAAM,WAAW,yBAAyB,OAAO;AACjD,QAAM,OAAO,QAAQ,YAAY,SAAS;AAC1C,MAAK,CAAC,SAAS,QAAQ,YAAY,SAAS,UAAU,QAAQ,MAAM,UAAU,QAAQ,MAAM,KAAK,UAAQ,KAAK,aAAa,MAAM,MAC3H,QAAQ,QAAQ,MAAM,KAAK,UAAQ,CAAC,KAAK,iBAAiB,MAAM,EAAI,OAAM,IAAI,MAAM,0FAA0F;AACpL,QAAM,WAAW,MAAM,OAAO;AAC9B,QAAM,eAAe,+BAA+B,EAAE,OAAO,QAAQ,OAAO,UAAU,QAAQ,MAAM,QAAQ,YAAY,MAAM,WAAW,CAAC;AAC1I,QAAM,UAAmC,EAAE,gBAAgB,CAAC,GAAG,aAAa,CAAC,GAAG,aAAa,CAAC,GAAG,UAAU,CAAC,GAAG,SAAS,CAAC,GAAG,QAAQ,CAAC,EAAE;AACvI,QAAM,WAA4B,CAAC;AACnC,aAAW,aAAa,SAAS,YAAY;AAC3C,UAAM,WAAW,MAAM,SAAS,KAAK,CAAC,SAAS,KAAK,OAAO,UAAU,SAAS,EAAE;AAChF,UAAM,WAAW,MAAM,UAAU,KAAK,CAAC,SAAS,KAAK,OAAO,UAAU,SAAS,EAAE;AACjF,QAAI,MAAM,MAAM,YAAY,qBAAqB,SAAS,OAAO,SAAS,WAAW,SAAU,SAAQ,QAAQ,KAAK;AAAA,MAClH,IAAI,UAAU,UAAU,MAAM;AAAA,MAAI,QAAQ,UAAU;AAAA,MAAQ,MAAM;AAAA,MAAU,MAAM,MAAM,WAAW;AAAA,MACnG,OAAO,CAAC,EAAE,IAAI,MAAM,QAAQ,IAAI,QAAQ,GAAG,WAAW,0FAA0F,CAAC;AAAA,MACjJ,iBAAiB;AAAA,MAAG,YAAY;AAAA,MAAM,UAAU;AAAA,MAAM,YAAY;AAAA,MAAG,YAAY,CAAC,QAAQ;AAAA,MAAG,aAAa,MAAM,QAAQ;AAAA,MACxH,UAAU,EAAE,eAAe,YAAY,MAAM,OAAO,GAAG,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS;AAAA,IACpH,CAAC;AACD,QAAI,UAAU,qBAAqB,KAAM,SAAQ,eAAe,KAAK,EAAE,MAAM,iBAAiB,IAAI,QAAQ,UAAU,MAAM,IAAI,QAAQ,UAAU,QAAQ,YAAY,CAAC,QAAQ,GAAG,aAAa,UAAU,SAAS,IAAI,UAAU,MAAM,YAAY,GAAG,QAAQ,MAAM,UAAU,KAAK,UAAU,UAAU,gBAAgB,GAAG,UAAU,EAAE,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,iBAAiB,SAAS,aAAa,YAAY,EAAE,CAAC;AACrb,eAAW,CAAC,MAAM,QAAQ,KAAK,KAAK,CAAC,CAAC,YAAY,SAAS,WAAW,gBAAgB,SAAS,KAAK,GAAG,CAAC,UAAU,SAAS,gBAAgB,SAAS,WAAW,CAAC,GAAY;AAC1K,YAAM,UAAU,eAAe,KAAK;AACpC,UAAI,WAAW,QAAQ,YAAY,KAAM;AACzC,eAAS,KAAK,EAAE,IAAI,WAAW,IAAI,IAAI,UAAU,MAAM,IAAI,QAAQ,UAAU,QAAQ,OAAO,QAAQ,SAAS,aAAa,YAAY,QAAQ,qBAAqB,MAAM,gBAAgB,QAAQ,QAAQ,wBAAwB,QAAQ,gBAAgB,UAAU,EAAE,kBAAkB,MAAO,aAAa,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,EAAE,CAAC;AAAA,IAC3W;AAAA,EACF;AACA,MAAI,CAAC,SAAS,OAAQ,OAAM,IAAI,MAAM,mHAAmH;AACzJ,QAAM,UAAU,4BAA4B,MAAM,SAAS,MAAM,SAAS,MAAM,MAAM;AACtF,QAAM,iBAAsC,CAAC;AAC7C,aAAW,UAAU,QAAQ,SAAS;AACpC,QAAI,OAAO,SAAS,kBAAmB;AACvC,UAAME,SAAQ,MAAM,QAAQ,KAAK,CAACA,WAAUA,OAAM,OAAO,OAAO,YAAY,EAAE;AAC9E,QAAI,CAACA,OAAO,OAAM,IAAI,MAAM,UAAU,OAAO,EAAE,4CAA4C;AAC3F,UAAM,SAAS,uBAAuB,OAAO,YAAY,WAAW;AACpE,QAAI,CAAC,eAAe,KAAK,CAAC,SAAS,KAAK,SAAS,MAAM,EAAG,gBAAe,KAAK,EAAE,MAAM,QAAQ,MAAM,YAAY,SAASC,yBAAwBD,QAAO,OAAO,WAAW,EAAE,CAAC;AAAA,EAC/K;AACA,QAAM,UAAU,cAAc,MAAM;AAAA,IAClC,eAAe;AAAA,IAAuB,IAAI,YAAY,YAAY,CAAC,MAAM,WAAW,MAAM,MAAM,WAAW,CAAC,EAAE,MAAM,GAAG,EAAE,CAAC;AAAA,IAAI,UAAU;AAAA,IACxI,WAAW,MAAM;AAAA,IAAW,gBAAgB;AAAA,IAAM,oBAAoB;AAAA,IAAM,MAAM,GAAG,MAAM,WAAW,IAAI,SAAM,MAAM,MAAM,SAAS,MAAM;AAAA,IAAsB,WAAW,MAAM,WAAW;AAAA,IAC7L,SAAS;AAAA,IAAW,WAAW;AAAA,IAAM,QAAQ;AAAA,IAAgB,YAAY,CAAC,MAAM,MAAM;AAAA,IAAG,iBAAiB;AAAA,IAC1G,QAAQ,QAAQ;AAAA,IAChB,aAAa,EAAE,iBAAiB,+BAA+B,MAAM,OAAO,SAAS,QAAQ,YAAY,QAAQ,YAAY,YAAY,UAAU,QAAQ,YAAY,UAAU,oBAAoB,QAAQ,YAAY,oBAAoB,WAAW,QAAQ,MAAM,IAAI,UAAQ,KAAK,IAAI,GAAG,WAAW,CAAC,UAAU,SAAS,QAAQ,SAAS,SAAS,GAAG,kBAAkB,QAAQ,YAAY,kBAAkB,eAAe,QAAQ,YAAY,eAAe,UAAU,EAAE,qBAAqB,QAAQ,aAAa,eAAe,QAAQ,MAAM,EAAE;AAAA,IACzhB,cAAc,EAAE,eAAe,mCAAmC,UAAU,OAAO,iBAAiB,QAAQ,kBAAkB,QAAQ,eAAe,SAAS,CAAC,iBAAiB,QAAQ,IAAI,CAAC,QAAQ,GAAG,mBAAmB,MAAM,MAAM,YAAY,wBAAwB,CAAC,KAAK,IAAI,MAAM,MAAM,YAAY,oBAAoB,CAAC,QAAQ,KAAK,IAAI,CAAC,MAAM,GAAG,aAAa,CAAC,eAAe,GAAG,eAAe,QAAQ,MAAM,SAAS,GAAG,eAAe,QAAQ,YAAY,UAAU,2BAA2B,MAAM,uBAAuB,CAAC,SAAS,QAAQ,GAAG,YAAY,MAAM,qBAAqB,CAAC,EAAE;AAAA,IAC1kB,OAAO,aAAa,MAAM,IAAI,WAAS,EAAE,GAAG,MAAM,eAAe,wBAAwB,YAAY,CAAC,QAAQ,GAAG,UAAU,EAAE,WAAW,SAAS,WAAW,KAAK,CAAC,UAAU,MAAM,WAAW,KAAK,EAAE,GAAG,eAAe,MAAM,SAAS,KAAK,CAAC,aAAa,SAAS,OAAO,KAAK,EAAE,GAAG,uBAAuB,cAAc,YAAY,EAAE,EAAE;AAAA,IACvU;AAAA,IAAS,gBAAgB;AAAA,IAAU,iBAAiB;AAAA,IACpD,qBAAqB,EAAE,eAAe,uCAAuC,OAAO,MAAM,aAAa,CAAC,GAAG,WAAW,YAAY,4BAA4B,GAAG,uBAAuB,qBAAqB,aAAa,MAAM,MAAM,YAAY,wBAAwB,mBAAmB,qBAAqB,oBAAoB,MAAM,gBAAgB,MAAM,MAAM,SAAS,IAAI,CAAC,UAAU,MAAM,SAAS,WAAW,GAAG,mBAAmB,qBAAqB,cAAc,MAAM,eAAe,CAAC,GAAG,WAAW,MAAM,MAAM,SAAS;AAAA,IAC5gB,WAAW;AAAA,IAAM,aAAa;AAAA,IAAY,WAAW,MAAM,MAAM;AAAA,IAAU,WAAW,MAAM,MAAM;AAAA,IAClG,UAAU,EAAE,UAAU,UAAU,iBAAiB,YAAY,OAAO,GAAG,gBAAgB,MAAM,MAAM,YAAY,wBAAwB,QAAQ,MAAM,MAAM,YAAY,oBAAoB,SAAS,QAAQ,uBAAuB,OAAO,EAAE,MAAM,aAAa,sBAAsB,uBAAuB,IAAI,EAAE,MAAM,mBAAmB,YAAY,MAAM,WAAW,cAAc,UAAU,KAAK,EAAE;AAAA,EACzY,CAAC;AACD,SAAO,EAAE,SAAS,cAAc,MAAM,EAAE,GAAG,SAAS,aAAa,mBAAmB,OAAO,EAAE,CAAC,GAAG,SAAS,gBAAgB,mBAAmB,aAAa,kBAAkB;AAC9K;AAEA,SAAS,eAAe,OAAiC;AACvD,MAAI,CAAC,MAAO,QAAO;AACnB,QAAM,UAAU,MAAM,SAAS,WAAW,mBAAmB,MAAM,aAAa,MAAM;AACtF,MAAI,QAAQ,WAAW,SAAU,QAAO;AACxC,SAAO,EAAE,QAAQ,QAAQ,WAAW,MAAM,gBAAgB,MAAM,SAAS,WAAW,SAAS;AAC/F;AAKO,SAAS,6BAA6B,OAE1C;AACD,QAAM,iBAA2B,CAAC;AAClC,MAAI,iBAAiB;AACrB,aAAW,OAAO,IAAI,IAAI,MAAM,SAAS,QAAQ,UAAQ,KAAK,WAAW,OAAO,IAAI,CAAAE,SAAO,CAACA,KAAI,IAAIA,IAAG,CAAU,CAAC,CAAC,EAAE,OAAO,GAAG;AAC7H,UAAMC,SAAQ,MAAM,YAAY,IAAI,IAAI,EAAE;AAC1C,UAAM,SAAS,MAAM,QAAQ,KAAK,CAAAH,WAASA,OAAM,OAAO,IAAI,EAAE;AAC9D,UAAM,OAAOG,QAAO,eAAe,SAAS,IAAI,YAAY,EAAE,OAAO,OAAO,IAAI,EAAE,aAAa;AAC/F,sBAAkB;AAClB,QAAI,iBAAiB,0BAA2B,OAAM,IAAI,MAAM,0DAA0D;AAC1H,QAAIA,OAAO,gBAAe,KAAK,IAAI,YAAY,EAAE,OAAOA,MAAK,CAAC;AAAA,aACrD,OAAQ,gBAAe,KAAK,OAAO,IAAI;AAAA,EAClD;AACA,QAAM,OAAO,sBAAsB,KAAK,UAAU;AAAA,IAChD,OAAO,MAAM,SAAS,IAAI,UAAQ,KAAK,UAAU;AAAA,IAAG,SAAS,MAAM,UAAU,IAAI,UAAQ,KAAK,cAAc;AAAA,IAAG,YAAY,MAAM;AAAA,IACjI,aAAa;AAAA,EACf,CAAC,CAAC;AACF,MAAI,KAAK,iBAAiB,YAAY,KAAK,cAAc,SAAU,OAAM,IAAI,MAAM,qDAAqD,KAAK,SAAS,KAAK,IAAI,CAAC,0EAA0E;AAC1O,QAAM,SAAS,oCAAoC,MAAM;AAAA,IACvD,eAAe;AAAA,IAA0C,MAAM;AAAA,IAC/D,IAAI,gBAAgB,MAAM,MAAM,YAAY,MAAM,GAAG,EAAE,CAAC;AAAA,IAAI,WAAW,MAAM;AAAA,IAC7E,OAAO,MAAM,WAAW;AAAA,IAAM,YAAY,MAAM,MAAM;AAAA,IAAa,YAAY,MAAM,MAAM;AAAA,IAC3F,OAAO,YAAY,MAAM,KAAK;AAAA,IAAG,gBAAgB,MAAM,MAAM;AAAA,IAAgB,YAAY,MAAM,MAAM;AAAA,IACrG,iBAAiB;AAAA,IAAY,kBAAkB,KAAK;AAAA,IAAc,eAAe,KAAK;AAAA,IACtF,UAAU,EAAE,WAAW,MAAM,oBAAoB,+BAA+B,gBAAgB,wBAAwB,UAAU,KAAK,SAAS;AAAA,EAClJ,CAAC;AACD,SAAO,gCAAgC,EAAE,GAAG,OAAO,OAAO,CAAC;AAC7D;;;AE5GA,SAAS,KAAAC,UAAS;AA8BlB,eAAsB,iCAAiC,KAAsC;AAC3F,QAAM,QAAQ,gBAAgB,GAAG;AACjC,QAAM,EAAE,SAAS,QAAQ,SAAS,SAAS,IAAI;AAC/C,QAAM,WAAW,yBAAyB,MAAM,MAAM,QAAQ;AAC9D,QAAM,SAAS,qCAAqC,MAAM,MAAM,cAAc;AAC9E,QAAM,EAAE,aAAa,cAAc,GAAG,gBAAgB,IAAI;AAC1D,QAAM,EAAE,aAAa,YAAY,GAAG,cAAc,IAAI;AACtD,MAAI,YAAY,eAAe,MAAM,gBAAgB,YAAY,aAAa,MAAM,cAC/E,SAAS,uBAAuB,cAAc,YAAY,SAAS,cAAc,MAAM,YAAY,OAAO,cAAc,KACxH,YAAY,SAAS,cAAc,MAAM,YAAY,OAAO,cAAc,KAC1E,YAAY,SAAS,YAAY,MAAM,YAAY,OAAO,qBAAqB,CAAC,OAAO,kBAAkB,IAAI,CAAC,CAAC,GAAG;AACrH,UAAM,IAAI,MAAM,2DAA2D;AAAA,EAC7E;AACA,MAAI,CAAC,QAAQ,UAAU,QAAQ,OAAO,yBAAyB,QAAQ,YAClE,QAAQ,OAAO,sBAAsB,QAAQ,GAAI,OAAM,IAAI,MAAM,0EAA0E;AAChJ,QAAM,YAAY,QAAQ,cAAc;AACxC,MAAI,CAAC,aAAa,UAAU,YAAY,SAAS,MAAM,UAAU,UAAU,aAAa,SAAS,MAAM,YAClG,UAAU,sBAAsB,SAAS,MAAM,qBAAqB,UAAU,qBAAqB,SAAS,MAAM,kBAAkB;AACvI,UAAM,IAAI,MAAM,sEAAsE;AAAA,EACxF;AACA,MAAI,OAAO,WAAW,UAAU,YAAY,MAAM,MAAM,SAAS,OAAO,cACnE,SAAS,iBAAiB,SAAS,SAAS,gBAAgB,SAAS,oBAAoB,SAAS,SAAS,iBAAiB;AAC/H,UAAM,IAAI,MAAM,6EAA6E;AAAA,EAC/F;AACA,QAAM,SAASC,GAAE,OAAO,EAAE,YAAYA,GAAE,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,OAAO,cAAc;AAC1F,MAAI,MAAM,mBAAmB,OAAW,CAAAA,GAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,IAAI,GAAG,EAAE,MAAM,MAAM,cAAc;AACrG,QAAM,QAAQ,YAAY,QAAQ,MAAM,KAAK;AAC7C,QAAM,mBAAmB,+BAA+B,MAAM,MAAM,gBAAgB;AACpF,QAAM,iBAAiB,MAAM,KAAK,UAAQ,KAAK,SAAS,+BAA+B;AACvF,MAAI,CAAC,kBAAkB,YAAY,KAAK,MAAM,OAAO,KAAK,eAAe,SAAS,QAAQ,EAAE,SAAS,MAAM,CAAC,CAAC,MAAM,YAAY,gBAAgB,GAAG;AAChJ,UAAM,IAAI,MAAM,mEAAmE;AAAA,EACrF;AACA,QAAM,aAAa,MAAM,4BAA4B,gBAAgB;AACrE,QAAM,UAAU;AAAA,IACd,eAAe;AAAA,IACf,cAAc,sBAAsB,SAAS,EAAE;AAAA,IAC/C,MAAM,yBAAsB,QAAQ,EAAE,GAAG,MAAM,GAAG,GAAG;AAAA,IACrD,gBAAgB,MAAM,kBAAkB,oBAAoB,YAAY,GAAG,MAAM,GAAG,GAAG;AAAA,IACvF,cAAc,EAAE,IAAI,QAAQ,OAAO,WAAW,mBAAmB,QAAQ,OAAO,kBAAkB;AAAA,IAClG;AAAA,IAAU,eAAe;AAAA,IACzB,+BAA+B,MAAM,iCAAiC;AAAA,IACtE;AAAA,IAAQ,gBAAgB,EAAE,UAAU,QAAQ,MAAM;AAAA,IAClD,iBAAiB,iBAAiB;AAAA,IAAO,kBAAkB,iBAAiB;AAAA,EAC9E;AACA,QAAM,kBAAkB;AAAA,IACtB,eAAe;AAAA,IACf,MAAM;AAAA,IACN,gBAAgB,SAAS,MAAM,kBAAkB,YAAY;AAAA,IAC7D,gBAAgB,EAAE,IAAI,SAAS,IAAI,aAAa,aAAa;AAAA,IAAG;AAAA,EAClE;AACA,QAAM,WAAW,MAAM,0CAA0C,EAAE,GAAG,iBAAiB,aAAa,MAAM,gCAAgC,eAAe,EAAE,CAAC;AAC5J,QAAM,aAAyD;AAAA,IAC7D,eAAe;AAAA,IACf,gBAAgB,MAAM,kBAAkB,wBAAwB,YAAY;AAAA,IAC5E,MAAM,yBAAsB,QAAQ,EAAE,GAAG,MAAM,GAAG,GAAG;AAAA,IACrD,QAAQ;AAAA,MACN,cAAc,EAAE,IAAI,QAAQ,OAAO,WAAW,mBAAmB,QAAQ,OAAO,mBAAmB,UAAU,QAAQ,UAAU,aAAa,QAAQ,OAAO,KAAK;AAAA,MAChK,oBAAoB,gBAAgB;AAAA,MAAgB,gBAAgB,SAAS;AAAA,MAC7E;AAAA,MAAS,gBAAgB,EAAE,IAAI,QAAQ,IAAI,aAAa,QAAQ,YAAY;AAAA,MAC5E,SAAS,OAAO;AAAA,MAAgB;AAAA,MAChC,cAAc,OAAO,qBAAqB,CAAC,OAAO,kBAAkB,IAAI,CAAC;AAAA,IAC3E;AAAA,IACA,KAAK,EAAE,MAAM,mBAAmB,WAAW,QAAQ,cAAc,MAAM,cAAc,YAAY,MAAM,WAAW;AAAA,IAClH,uBAAuB;AAAA,MACrB,EAAE,IAAI,0BAA0B,SAAS,KAAK,UAAU,KAAK;AAAA,MAC7D,EAAE,IAAI,uBAAuB,SAAS,cAAc,SAAS,IAAI,SAAS,KAAK,UAAU,KAAK;AAAA,MAC9F,GAAI,QAAQ,cAAc,0BAA0B,cAAc,CAAC,EAAE,IAAI,4BAA4B,SAAS,KAAK,UAAU,KAAK,CAAC,IAAI,CAAC;AAAA,IAC1I;AAAA,IACA,oBAAoB,QAAQ,cAAc;AAAA,IAC1C,QAAQ,EAAE,iBAAiB,SAAS,iBAAiB,oBAAoB,KAAK,KAAK,OAAO,aAAa,GAAK,EAAE;AAAA,IAC9G,UAAU,EAAE,GAAG,UAAU,YAAY,SAAS,SAAS,YAAY,gBAAgB,KAAK;AAAA,EAC1F;AACA,QAAM,aAAa,MAAM,oCAAoC,EAAE,GAAG,YAAY,aAAa,MAAM,0BAA0B,UAAU,EAAE,CAAC;AACxI,SAAO,EAAE,UAAU,WAAW;AAChC;AAEA,SAAS,YAAY,QAAwC,OAAkC;AAC7F,MAAI,MAAM,WAAW,OAAO,MAAM,UAAU,IAAI,IAAI,MAAM,IAAI,UAAQ,KAAK,IAAI,CAAC,EAAE,SAAS,MAAM,OAAQ,OAAM,IAAI,MAAM,4CAA4C;AACrK,QAAM,UAAU,IAAI,IAAI,MAAM,IAAI,UAAQ,CAAC,KAAK,MAAM,IAAI,CAAC,CAAC;AAC5D,SAAO,OAAO,MAAM,IAAI,cAAY;AAClC,UAAM,OAAO,QAAQ,IAAI,SAAS,IAAI;AACtC,QAAI,CAAC,QAAQ,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,KAAK,MAAM,GAAG,EAAE,KAAK,UAAQ,CAAC,QAAQ,SAAS,OAAO,SAAS,IAAI,KACxI,KAAK,SAAS,0BAA0B,KAAK,aAAa,SAAU,OAAM,IAAI,MAAM,8CAA8C;AACvI,UAAMC,SAAQ,OAAO,KAAK,KAAK,SAAS,QAAQ;AAChD,QAAIA,OAAM,SAAS,QAAQ,MAAM,KAAK,WAAW,KAAK,WAAW,SAAS,UAAU,KAAK,cAAc,SAAS,aAC3GA,OAAM,eAAe,SAAS,aAAa,OAAOA,MAAK,MAAM,SAAS,OAAQ,OAAM,IAAI,MAAM,gCAAgC,KAAK,IAAI,yBAAyB;AACrK,WAAO;AAAA,EACT,CAAC;AACH;;;ACvHA,SAAS,KAAAC,UAAS;AAIX,IAAM,6BAA6BC,GAAE,OAAO;AAAA,EACjD,MAAMA,GAAE,QAAQ,OAAO,EAAE,QAAQ,OAAO;AAAA,EACxC,aAAaA,GAAE,OAAO,EAAE,YAAY,EAAE,IAAI,CAAC,EAAE,QAAQ,CAAC;AAAA,EACtD,OAAOA,GAAE,OAAO,EAAE,SAAS,EAAE,GAAG,CAAC,EAAE,QAAQ,GAAG;AAAA,EAC9C,OAAOA,GAAE,OAAO,EAAE,SAAS,EAAE,GAAG,CAAC,EAAE,QAAQ,KAAK;AAAA,EAChD,SAASA,GAAE,OAAO,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,QAAQ,IAAI;AACvD,CAAC,EAAE,OAAO,EAAE,QAAQ;AAAA,EAClB,MAAM;AAAA,EACN,aAAa;AAAA,EACb,OAAO;AAAA,EACP,OAAO;AAAA,EACP,SAAS;AACX,CAAC;AAEM,SAAS,8BACd,SACA,QACS;AACT,MAAI,CAAC,UAAU,OAAO,WAAW,YAAY,MAAM,QAAQ,MAAM,GAAG;AAClE,WAAO;AAAA,EACT;AACA,QAAM,YAAY;AAClB,MAAI,UAAU,WAAW,OAAO;AAC9B,UAAM,cAAc,OAAO,UAAU,WAAW;AAChD,UAAM,iBAAiB,OAAO,UAAU,cAAc;AACtD,UAAMC,WAAU,OAAO,UAAU,OAAO;AACxC,UAAM,mBAAmB,YAAY;AAAA,MACnC,aAAa,QAAQ;AAAA,MACrB,mBAAmB,QAAQ,gBAAgB,YAAY,IAAI,CAAC,YAAY;AAAA,QACtE,IAAI,OAAO;AAAA,QACX,aAAa,OAAO;AAAA,QACpB,QAAQ,OAAO;AAAA,QACf,QAAQ,OAAO;AAAA,QACf,UAAU,OAAO;AAAA,QACjB,UAAU,OAAO;AAAA,MACnB,EAAE;AAAA,MACF;AAAA,MACA;AAAA,MACA,SAAAA;AAAA,IACF,CAAC;AACD,WAAO;AAAA,MACL,GAAG;AAAA,MACH,mBAAmB;AAAA,QACjB,oBAAoB;AAAA,QACpB,UAAU,YAAY,CAAC,0BAA0B,gBAAgB,CAAC;AAAA,QAClE;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,MAAI,UAAU,WAAW,OAAO;AAC9B,UAAM,qBAAqB,OAAO,UAAU,kBAAkB;AAC9D,UAAM,cAAc,OAAO,mBAAmB,WAAW;AACzD,UAAM,iBAAiB,OAAO,mBAAmB,cAAc;AAC/D,UAAMC,aAAY,OAAO,mBAAmB,SAAS;AACrD,UAAM,aAAa,OAAOA,WAAU,UAAU;AAC9C,UAAMD,WAAU,OAAO,mBAAmB,OAAO;AACjD,UAAME,UAAS,OAAO,mBAAmB,MAAM;AAC/C,UAAM,aAAa,YAAY,WAAW;AAC1C,UAAM,gBAAgB,YAAY,cAAc;AAChD,UAAM,iBAAiB,YAAY,UAAU;AAC7C,WAAO;AAAA,MACL,GAAG;AAAA,MACH,oBAAoB;AAAA,QAClB,GAAG;AAAA,QACH,SAAS;AAAA,UACP,GAAGF;AAAA,UACH,WAAW,QAAQ;AAAA,UACnB,aAAa,QAAQ;AAAA,QACvB;AAAA,QACA,QAAQ;AAAA,UACN,GAAGE;AAAA,UACH,YAAY,YAAY,QAAQ,OAAO;AAAA,QACzC;AAAA,MACF;AAAA,MACA,QAAQ;AAAA,QACN,GAAG,OAAO,UAAU,MAAM;AAAA,QAC1B;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,MAAI,UAAU,WAAW,OAAQ,QAAO;AACxC,QAAM,SACJ,UAAU,UACP,OAAO,UAAU,WAAW,YAC5B,CAAC,MAAM,QAAQ,UAAU,MAAM,IAC9B,UAAU,SACV,CAAC;AACP,QAAM,2BACJ,QAAQ,YAAY,SAAS;AAC/B,QAAM,gCACJ,OAAO,6BAA6B,YACjC,yBAAyB,KAAK,IAC7B,2BACA,OAAO;AACb,QAAM,YAAY,OAAO,UAAU,SAAS;AAC5C,QAAM,UAAU,OAAO,UAAU,OAAO;AACxC,QAAM,UAAU,OAAO,UAAU,OAAO;AACxC,QAAM,YAAY,OAAO,UAAU,SAAS;AAC5C,QAAM,OAAO,OAAO,UAAU,IAAI;AAClC,QAAM,iBAAiB,OAAO,UAAU,cAAc;AACtD,QAAM,cAAc,gBAAgB,QAAQ,aAAa,CAAC;AAC1D,QAAM,YAAY,gBAAgB,QAAQ,WAAW,CAAC;AACtD,QAAM,kBAAkB,gBAAgB,QAAQ,iBAAiB,CAAC;AAClE,QAAM,kBAAkB,gBAAgB,QAAQ,iBAAiB,CAAC;AAClE,QAAM,WAAW,gBAAgB,UAAU,UAAU,CAAC;AACtD,QAAM,sBAAsB,gBAAgB,UAAU,YAAY,CAAC;AACnE,SAAO;AAAA,IACL,GAAG;AAAA,IACH,gBAAgB;AAAA,MACd,GAAG;AAAA,MACH,eAAe,eAAe,iBAAiB,KAAK;AAAA,QAClD;AAAA,QACA,KAAK,KAAK,gBAAgB,eAAe,YAAY,IAAO,IAAI,GAAK;AAAA,MACvE;AAAA,IACF;AAAA,IACA,QAAQ;AAAA,MACN,GAAG;AAAA,MACH,YAAY,YAAY,QAAQ,OAAO;AAAA,MACvC,kBAAkB;AAAA,IACpB;AAAA,IACA,oBAAoB;AAAA,MAClB,eAAe;AAAA,MACf,aAAa;AAAA,MACb,gBAAgB;AAAA,MAChB,SAAS;AAAA,QACP,WAAW,QAAQ;AAAA,QACnB,aAAa,QAAQ;AAAA,QACrB,OAAO;AAAA,QACP,mBAAmB,QAAQ;AAAA,QAC3B,eAAe,QAAQ;AAAA,QACvB;AAAA,MACF;AAAA,MACA,SAAS;AAAA,QACP,aAAa,QAAQ;AAAA,QACrB,MAAM,QAAQ;AAAA,QACd;AAAA,QACA,UAAU,QAAQ;AAAA,QAClB,aAAa,QAAQ;AAAA,MACvB;AAAA,MACA,aAAa;AAAA,QACX,IAAI,OAAO;AAAA,QACX,SAAS,OAAO;AAAA,QAChB,kBAAkB;AAAA,MACpB;AAAA,MACA,QAAQ;AAAA,QACN,UAAU,OAAO;AAAA,QACjB,YAAY,YAAY,QAAQ,OAAO;AAAA,QACvC,mBAAmB,OAAO,qBAAqB;AAAA,MACjD;AAAA,MACA,IAAI;AAAA,QACF,aAAa,KAAK,UAAU;AAAA,QAC5B,qBAAqB;AAAA,MACvB;AAAA,MACA,SAAS;AAAA,QACP,aAAa,gBAAgB,eAAe,aAAa,cAAc,SAAS;AAAA,QAChF,0BAA0B,gBAAgB,eAAe,aAAa,cAAc,SAAS;AAAA,QAC7F,gBAAgB,cAAc,YAAY;AAAA,QAC1C,iBAAiB,cAAc,YAAY;AAAA,QAC3C,mBAAmB,WAAW;AAAA,QAC9B,YAAY,gBAAgB,eAAe,YAAY,IAAO;AAAA,QAC9D,gBAAgB;AAAA,MAClB;AAAA,MACA,sBAAsB;AAAA,MACtB,MAAM,QAAQ;AAAA,MACd,iBAAiB;AAAA,MACjB,WAAW;AAAA,QACT,QAAQ;AAAA,QACR;AAAA,QACA,eAAe;AAAA,QACf,kBACE,OAAO,UAAU,qBAAqB,WAClC,UAAU,mBACV;AAAA,QACN,MAAM,KAAK,UAAU;AAAA,QACrB,WAAW,OAAO,UAAU,cAAc,WAAW,UAAU,YAAY;AAAA,QAC3E,YAAY;AAAA,QACZ,gBAAgB,gBAAgB,UAAU,gBAAgB,CAAC;AAAA,QAC3D,2BAA2B;AAAA,UACzB,UAAU;AAAA,UACV;AAAA,QACF;AAAA,QACA,OAAO,2BAA2B,MAAM,UAAU,KAAK;AAAA,MACzD;AAAA,IACF;AAAA,EACF;AACF;AAEA,SAAS,OAAO,OAAyC;AACvD,SAAO,SAAS,OAAO,UAAU,YAAY,CAAC,MAAM,QAAQ,KAAK,IAC7D,QACA,CAAC;AACP;AAEA,SAAS,gBAAgB,OAAgB,UAA0B;AACjE,SAAO,OAAO,UAAU,YAAY,OAAO,UAAU,KAAK,KAAK,QAAQ,IACnE,QACA;AACN;;;AChMO,SAAS,2BAA2B,OAK0B;AACnE,QAAM,gBAAgB,MAAM;AAC5B,QAAM,eAAkC,CAAC;AACzC,QAAM,SAAS,MAAM,UAAU,CAAC;AAChC,QAAM,SAAS,MAAM,UAAU,CAAC;AAChC,MAAI,CAAC,GAAG,QAAQ,GAAG,MAAM,EAAE,KAAK,WAAS,MAAM,eAAe,QAAQ,GAAG;AACvE,UAAM,IAAI,MAAM,mEAAmE;AAAA,EACrF;AACA,QAAM,iBAAiB,MAAM;AAAA,IAC3B,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,WAAW;AAAA,MACT,aAAa,MAAM,eAAe;AAAA,MAClC;AAAA,MACA,OAAO;AAAA,MACP,QAAQ,OAAO,IAAI,CAAC,EAAE,IAAI,aAAa,UAAU,OAAO,EAAE,IAAI,aAAa,UAAU,EAAE;AAAA,MACvF,QAAQ,OAAO,IAAI,CAAC,EAAE,IAAI,aAAa,UAAU,OAAO,EAAE,IAAI,aAAa,UAAU,EAAE;AAAA,IACzF;AAAA,IACA,WAAW;AAAA,IACX,YAAY;AAAA,EACd,CAAC;AACD,QAAM,gBAAgB,oBAAoB;AAAA,IACxC,eAAe;AAAA,IACf,IAAI,kBAAkB,YAAY,CAAC,eAAe,cAAc,eAAe,WAAW,CAAC,EAAE,MAAM,GAAG,EAAE,CAAC;AAAA,IACzG;AAAA,IACA,cAAc,CAAC;AAAA,IACf;AAAA,IACA;AAAA,IACA,kBAAkB;AAAA,IAClB,wBAAwB,CAAC;AAAA,IACzB;AAAA,IACA,aAAa;AAAA,MACX,UAAU;AAAA,MACV,UAAU,CAAC;AAAA,MACX,oBAAoB,CAAC;AAAA,MACrB,sBAAsB,CAAC;AAAA,IACzB;AAAA,IACA,UAAU,EAAE,iBAAiB,eAAe,MAAM,KAAK;AAAA,EACzD,CAAC;AACD,QAAM,UAAU,MAAM;AAAA,IACpB,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,WAAW,EAAE,SAAS,iCAAiC;AAAA,IACvD,WAAW;AAAA,IACX,YAAY;AAAA,EACd,CAAC;AACD,QAAM,iBAAiB,qBAAqB;AAAA,IAC1C,eAAe;AAAA,IACf,IAAI,WAAW,YAAY,CAAC,cAAc,aAAa,QAAQ,aAAa,YAAY,CAAC,EAAE,MAAM,GAAG,EAAE,CAAC;AAAA,IACvG,eAAe,EAAE,IAAI,cAAc,IAAI,aAAa,cAAc,YAAY;AAAA,IAC9E;AAAA,IACA,OAAO;AAAA,IACP,WAAW;AAAA,MACT,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,MAAM;AAAA,MACN,SAAS;AAAA,MACT,SAAS;AAAA,MACT,YAAY;AAAA,IACd;AAAA,IACA,iBAAiB;AAAA,MACf,iBAAiB,CAAC,UAAU,kBAAkB,WAAW;AAAA,MACzD,oBAAoB,CAAC,mBAAmB,kBAAkB;AAAA,MAC1D,0BAA0B;AAAA,IAC5B;AAAA,IACA,OAAO,CAAC,GAAG,QAAQ,GAAG,MAAM;AAAA,IAC5B,UAAU,EAAE,iBAAiB,iCAAiC;AAAA,EAChE,CAAC;AACD,SAAO,EAAE,eAAe,eAAe;AACzC;AAEA,SAAS,MAAM,OAMO;AACpB,QAAMC,SAAQ,cAAc,MAAM,SAAS;AAC3C,SAAO;AAAA,IACL,IAAI,MAAM;AAAA,IACV,MAAM,MAAM;AAAA,IACZ,aAAa,YAAY,MAAM,SAAS;AAAA,IACxC,WAAW,IAAI,YAAY,EAAE,OAAOA,MAAK,EAAE;AAAA,IAC3C,WAAW,MAAM;AAAA,IACjB,YAAY,MAAM;AAAA,EACpB;AACF;;;APxEO,SAAS,2BAA2B,OAsBjB;AACxB,QAAM,EAAE,SAAS,cAAc,gBAAgB,eAAe,IAAI;AAClE,QAAM,QAAQ,aAAa;AAC3B,QAAM,kBAAkB,0BAA0B,MAAM,cAAc;AACtE,QAAM,kBAAkB,0BAA0B,MAAM,cAAc;AAItE,OAAK,MAAM;AACX,OAAK,MAAM;AACX,QAAM,oBAAoB,mBAAmB,OAAO;AACpD,MAAI,sBAAsB,QAAQ,aAAa;AAC7C,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACA,MACE,CAAC,MAAM,WAAW,YAClB,CAAC,MAAM,UAAU,qBACjB,CAAC,MAAM,UAAU,oBACjB,CAAC,MAAM,UACP,CAAC,MAAM,cACP,MAAM,WAAW,OAAO,QAAQ,MAChC,MAAM,WAAW,gBAAgB,QAAQ,aACzC;AACA,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAEA,QAAM,iBAAiB,QAAQ,kBAAkB;AAAA,IAC/C,IAAI,WAAW,QAAQ,SAAS;AAAA,IAChC,UAAU,QAAQ;AAAA,IAClB,aAAa,YAAY;AAAA,MACvB,WAAW,QAAQ;AAAA,MACnB,cAAc,QAAQ,oBAAoB;AAAA,MAC1C,WAAW,QAAQ,oBAAoB;AAAA,IACzC,CAAC;AAAA,EACH;AACA,QAAM,SAAS,oBAAI,IAAwB;AAC3C,MAAI,MAAM,kBAAkB;AAC1B,UAAM,aAAa,+BAA+B,MAAM,MAAM,gBAAgB;AAC9E,QAAI,YAAY,WAAW,OAAO,MAAM,YAAY,MAAM,oBAAoB,GAAG;AAC/E,YAAM,IAAI,MAAM,sEAAsE;AAAA,IACxF;AACA,sCAAkC,QAAQ,MAAM,OAAO,UAAQ,KAAK,UAAU,OAAO,GAAG,WAAW,KAAK;AACxG,WAAO,IAAI,iCAAiC,IAAI,YAAY,EAAE,OAAO,cAAc,UAAU,CAAC,CAAC;AAAA,EACjG,WAAW,MAAM,sBAAsB;AACrC,UAAM,IAAI,MAAM,iEAAiE;AAAA,EACnF;AACA,QAAM,gBAAgB,MAAM,gBACxB,6BAA6B,MAAM,eAAe,eAAe,IACjE;AACJ,MAAI,MAAM,kBAAkB,CAAC,eAAe;AAC1C,UAAM,IAAI,MAAM,oEAAoE;AAAA,EACtF;AACA,MAAI,kBAAkB,CAAC,MAAM,kBACxB,MAAM,eAAe,OAAO,gBAAgB,MAC5C,MAAM,eAAe,gBAAgB,gBAAgB,cAAc;AACtE,UAAM,IAAI,MAAM,6DAA6D;AAAA,EAC/E;AACA,MAAI,eAAe;AACjB,UAAM,kBAAkB,MAAM,QAAQ,cAAc,WAAW,MAAM,QAAQ,SAAS;AACtF,QAAI,oBAAoB,CAAC,cAAc,cAAc,YAAY,YAC5D,cAAc,eAAe,MAAM,KAAK,UAAQ,KAAK,eAAe,cAAc,IAAI;AACzF,YAAM,IAAI,MAAM,wEAAwE;AAAA,IAC1F;AACA,iBAAa,QAAQ,+BAA+B,aAAa;AAAA,EACnE;AACA,eAAa,QAAQ,0BAA0B,6BAA6B,MAAM;AAAA,IAChF,eAAe;AAAA,IACf,MAAM,gBAAgB,qBAAqB;AAAA,IAC3C,gBAAgB;AAAA,IAChB,mBAAmB,eAAe,eAAe;AAAA,EACnD,CAAC,CAAC;AACF,QAAM,kBAAkB,sCAAsC,SAAS,MAAM,eAAe;AAC5F,MAAI,iBAAiB;AACnB,UAAM,iBAAiB,MAAM,kBAAkB,CAAC;AAChD,UAAM,aAAa,oBAAoB,gBAAgB,SAAS,gBAAgB,OAAO,EACpF,QAAQ,YAAU,OAAO,SAAS,oBAAoB,CAAC,OAAO,WAAW,IAAI,CAAC,CAAC;AAClF,UAAM,WAAW,IAAI,IAAI,WAAW,IAAI,eAAa,UAAU,EAAE,CAAC;AAClE,QAAI,IAAI,IAAI,eAAe,IAAI,CAAAC,WAASA,OAAM,EAAE,CAAC,EAAE,SAAS,eAAe,UACtE,eAAe,KAAK,CAAAA,WAAS,CAAC,SAAS,IAAIA,OAAM,EAAE,CAAC,EAAG,OAAM,IAAI,MAAM,iDAAiD;AAC7H,eAAW,aAAa,YAAY;AAClC,YAAMA,SAAQ,eAAe,KAAK,CAAAA,WAASA,OAAM,OAAO,UAAU,EAAE;AACpE,UAAI,CAACA,UAAS,UAAU,eAAe,WAAY,OAAM,IAAI,MAAM,sDAAsD;AACzH,MAAAC,yBAAwBD,QAAO,SAAS;AAAA,IAC1C;AACA,iBAAa,QAAQ,uBAAuB,EAAE,MAAM,qBAAqB,SAAS,gBAAgB,SAAS,SAAS,gBAAgB,SAAS,QAAQ,eAAe,CAAC;AAAA,EACvK,WAAW,MAAM,gBAAgB,QAAQ;AACvC,UAAM,IAAI,MAAM,6DAA6D;AAAA,EAC/E;AACA,eAAa,QAAQ,oBAAoB;AAAA,IACvC,eAAe;AAAA,IACf,aAAa,QAAQ;AAAA,IACrB,cAAc,QAAQ;AAAA,IACtB,QAAQ,QAAQ;AAAA,IAChB,gBACG,QAAQ,SAAS,uBACd,SAAS,SACT,OACA,QAAQ,SAAS,yBAAyB;AAAA,EAClD,CAAC;AACD,eAAa,QAAQ,gBAAgB;AAAA,IACnC,eAAe;AAAA,IACf,SAAS,QAAQ;AAAA,IACjB,UAAU,QAAQ;AAAA,EACpB,CAAC;AACD,eAAa,QAAQ,sBAAsB;AAAA,IACzC,eAAe;AAAA,IACf,WAAW,QAAQ,YAAY;AAAA,IAC/B,gBAAgB,QAAQ,YAAY,kBAAkB,CAAC;AAAA,IACvD,cAAc,QAAQ;AAAA,IACtB,oBAAoB,QAAQ,OAAO;AAAA,EACrC,CAAC;AACD,QAAM,aAAa,QAAQ,MAAM,OAAO,CAAC,SAAS,KAAK,UAAU,OAAO;AACxE,MAAI,WAAW,SAAS,GAAG;AACzB,iBAAa,QAAQ,sBAAsB;AAAA,MACzC,eAAe;AAAA,MACf,OAAO;AAAA,MACP,OAAO;AAAA,IACT,CAAC;AACD,qBAAiB;AAAA,MACf;AAAA,MACA,OAAO;AAAA,MACP,mBAAmB,MAAM,qBAAqB,oBAAI,IAAI;AAAA,IACxD,CAAC;AAAA,EACH,WAAW,QAAQ,iBAAiB;AAClC,iBAAa,QAAQ,yBAAyB,QAAQ,eAAe;AAAA,EACvE,OAAO;AACL,UAAM,IAAI,MAAM,kCAAkC;AAAA,EACpD;AAEA,QAAM,kBAAkB,OAAO,OAAO,QAAQ,eAAe,EAC1D,KAAK,EACL,OAAO,CAAC,WAAW,OAAO,QAAQ;AACrC,aAAW,UAAU,iBAAiB;AACpC,UAAM,QAAQ,MAAM,MAAM;AAC1B,WAAO,IAAI,oBAAoB,OAAO,KAAK,CAAC,SAAS,KAAK;AAAA,EAC5D;AAEA,QAAM,iBAAiB;AAAA,IACrB,IAAI,WAAW,QAAQ,EAAE,KAAK,QAAQ,QAAQ;AAAA,IAC9C,aAAa,YAAY;AAAA,MACvB,SAAS;AAAA,MACT,YAAY,QAAQ;AAAA,MACpB,iBAAiB,QAAQ,mBAAmB;AAAA,MAC5C;AAAA,IACF,CAAC;AAAA,EACH;AACA,QAAM,qBACJ,gBAAgB,SAAS,IACrB;AAAA,IACE,IAAI,YAAY,QAAQ,EAAE,KAAK,QAAQ,QAAQ;AAAA,IAC/C,aAAa,YAAY;AAAA,MACvB,SAAS;AAAA,MACT,gBAAgB;AAAA,MAChB;AAAA,MACA;AAAA,MACA,SAAS;AAAA,IACX,CAAC;AAAA,EACH,IACA;AAEN,QAAM,gBAAgB,oCAAoC,MAAM;AAAA,IAC9D,eAAe;AAAA,IACf,YAAY;AAAA,IACZ,gBAAgB;AAAA,IAChB;AAAA,IACA;AAAA,IACA,OAAO,CAAC,GAAG,OAAO,QAAQ,CAAC,EACxB,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,MAAM,KAAK,cAAc,KAAK,CAAC,EACnD,IAAI,CAAC,CAAC,WAAW,KAAK,OAAO;AAAA,MAC5B,MAAM;AAAA,MACN,QAAQ,OAAO,KAAK;AAAA,MACpB,WAAW,MAAM;AAAA,IACnB,EAAE;AAAA,EACN,CAAC;AACD,QAAM,yBAAyB,qCAAqC,MAAM;AAAA,IACxE,GAAG;AAAA,IACH,aAAa,YAAY,aAAa;AAAA,EACxC,CAAC;AACD,QAAM,kBAAkB,gCAAgC,MAAM;AAAA,IAC5D,eAAe;AAAA,IACf,IAAI,YAAY,MAAM,UAAU,IAAI,MAAM,SAAS,aAAa,MAAM,GAAG,EAAE,CAAC;AAAA,IAC5E;AAAA,IACA;AAAA,IACA,cAAc,qBAAqB,CAAC,kBAAkB,IAAI,CAAC;AAAA,IAC3D,OAAO;AAAA,MACL,QAAQ,MAAM,UAAU;AAAA,MACxB,UAAU,MAAM,UAAU;AAAA,MAC1B,cAAc;AAAA,MACd,mBAAmB,MAAM,UAAU;AAAA,MACnC,kBAAkB,MAAM,UAAU;AAAA,IACpC;AAAA,IACA,QAAQ;AAAA,MACN,QAAQ,MAAM,OAAO;AAAA,MACrB,SAAS;AAAA,MACT,YAAY,YAAY,MAAM,MAAM;AAAA,IACtC;AAAA,IACA,eAAe,MAAM;AAAA,IACrB,eAAe,MAAM;AAAA,IACrB,QAAQ,MAAM;AAAA,IACd,oBAAoB,uBAAuB;AAAA,IAC3C,iBAAiB,MAAM,mBAAmB,CAAC;AAAA,IAC3C,UAAU,MAAM;AAAA,IAChB,WAAW,aAAa;AAAA,EAC1B,CAAC;AACD,QAAM,WAAW,yBAAyB,MAAM;AAAA,IAC9C,GAAG;AAAA,IACH,aAAa,YAAY,eAAe;AAAA,EAC1C,CAAC;AACD,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,gBAAgB;AAAA,IAChB,gBAAgB;AAAA,IAChB;AAAA,IACA;AAAA,EACF;AACF;AAEA,SAAS,iBAAiB,OAIjB;AACP,QAAM,WAAW,oBAAI,IAAY;AACjC,aAAW,QAAQ,MAAM,OAAO;AAC9B,eAAWA,UAAS,KAAK,UAAU,CAAC,GAAG;AACrC,UAAI,SAAS,IAAIA,OAAM,WAAW,GAAG;AACnC,cAAM,IAAI;AAAA,UACR,uBAAuBA,OAAM,WAAW;AAAA,QAC1C;AAAA,MACF;AACA,eAAS,IAAIA,OAAM,WAAW;AAC9B,YAAM,QAAQ,MAAM,kBAAkB,IAAIA,OAAM,WAAW;AAC3D,UAAI,CAAC,OAAO;AACV,cAAM,IAAI;AAAA,UACR,kDAAkDA,OAAM,WAAW;AAAA,QACrE;AAAA,MACF;AACA,UAAI,MAAM,eAAeA,OAAM,aAAa,OAAO,KAAK,MAAMA,OAAM,QAAQ;AAC1E,cAAM,IAAI;AAAA,UACR,uCAAuCA,OAAM,WAAW;AAAA,QAC1D;AAAA,MACF;AACA,YAAM,OAAO,IAAIA,OAAM,aAAa,KAAK;AAAA,IAC3C;AAAA,EACF;AACA,aAAW,aAAa,MAAM,kBAAkB,KAAK,GAAG;AACtD,QAAI,CAAC,SAAS,IAAI,SAAS,GAAG;AAC5B,YAAM,IAAI;AAAA,QACR,2DAA2D,SAAS;AAAA,MACtE;AAAA,IACF;AAAA,EACF;AACF;AAEA,SAAS,aACP,QACA,WACA,OACM;AACN,SAAO,IAAI,WAAW,MAAM,KAAK,CAAC;AACpC;AAEA,SAAS,MAAM,OAA4B;AACzC,SAAO,OAAO,KAAK,cAAc,KAAK,GAAG,MAAM;AACjD;",
|
|
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, prepareReviewedLearningBatch } from \"./training-learning-batch.js\";\nexport { prepareManagedTrainingSubmission, type ManagedTrainingPreparationInput, type TrainingPreparationFile } from \"./managed-training-preparation.js\";\nexport { scanAndRedactEvidence, type EvidencePrivacyScan } from \"./training-privacy.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 : grader.kind === \"model_judge\" ? [grader.rubricRef] : []);\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\nexport { withAuthoritativeRecipeHashes, AdamwOptimizerConfigSchema } from \"./training-recipe-binding.js\";\n\nexport { createPolicyHarnessContext } from \"./training-policy-harness.js\";\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", "const SECRET_PATTERNS: Array<{ label: string; pattern: RegExp }> = [\n { label: \"OpenAI-style API key\", pattern: /\\bsk-[A-Za-z0-9_-]{16,}\\b/g },\n { label: \"OpenPond API key\", pattern: /\\bopk_[A-Za-z0-9_-]{12,}\\b/g },\n { label: \"private key\", pattern: /-----BEGIN (?:RSA |EC |OPENSSH )?PRIVATE KEY-----/g },\n { label: \"credential assignment\", pattern: /\\b(?:api[_-]?key|password|secret|token)\\s*[:=]\\s*[\"']?[^\\s\"']{8,}/gi },\n];\nconst EMAIL_PATTERN = /\\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,}\\b/gi;\nconst PHONE_PATTERN = /\\b(?:\\+?1[-.\\s]?)?\\(?\\d{3}\\)?[-.\\s]\\d{3}[-.\\s]\\d{4}\\b/g;\n\nexport type EvidencePrivacyScan = {\n secretStatus: \"passed\" | \"blocked\";\n piiStatus: \"passed\" | \"review\";\n findings: string[];\n redacted: string;\n};\n\nexport function scanAndRedactEvidence(text: string): EvidencePrivacyScan {\n const findings: string[] = [];\n let redacted = text;\n for (const item of SECRET_PATTERNS) {\n item.pattern.lastIndex = 0;\n if (item.pattern.test(redacted)) findings.push(item.label);\n item.pattern.lastIndex = 0;\n redacted = redacted.replace(item.pattern, `[REDACTED ${item.label}]`);\n }\n EMAIL_PATTERN.lastIndex = 0;\n const hasEmail = EMAIL_PATTERN.test(redacted);\n EMAIL_PATTERN.lastIndex = 0;\n if (hasEmail) findings.push(\"email address\");\n redacted = redacted.replace(EMAIL_PATTERN, \"[REDACTED email]\");\n PHONE_PATTERN.lastIndex = 0;\n const hasPhone = PHONE_PATTERN.test(redacted);\n PHONE_PATTERN.lastIndex = 0;\n if (hasPhone) findings.push(\"phone number\");\n redacted = redacted.replace(PHONE_PATTERN, \"[REDACTED phone]\");\n return {\n secretStatus: findings.some((finding) => !finding.includes(\"email\") && !finding.includes(\"phone\")) ? \"blocked\" : \"passed\",\n piiStatus: hasEmail || hasPhone ? \"review\" : \"passed\",\n findings,\n redacted,\n };\n}\n", "import { TasksetSchema, type GeneratedTaskFile } from \"./taskset-authored-contracts.js\";\nimport type { GraderFixture, LearningSignalInventory, TasksetSourceRef } from \"./taskset-draft-core.js\";\nimport { LearningBatchDatasetSourceRefSchema } from \"./taskset-draft-dataset-sources.js\";\nimport { scanAndRedactEvidence } from \"./training-privacy.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\";\nimport { materializeLearningBatchAssets } from \"./learning-batch-assets.js\";\nimport { MAX_TASKSET_PACKAGE_BYTES } from \"./taskset-package-files.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 assetBytes?: ReadonlyMap<string, Uint8Array>;\n}) {\n const release = compileTaskBatch(input);\n const metadata = taskBatchPackageMetadata(release);\n const work = release.environment.kind === \"work\";\n if ((!work && (release.environment.kind !== \"text\" || release.tools.length || release.tasks.some(task => task.artifactRefs.length)))\n || (work && release.tasks.some(task => !task.requiredOutputs?.length))) throw new Error(\"This learning batch requires a supported text or Work environment with declared outputs.\");\n const sourceId = input.source.id;\n const materialized = materializeLearningBatchAssets({ tasks: release.tasks, sourceId, assets: input.assets, assetBytes: input.assetBytes });\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: work ? \"work\" : \"chat\", entrypoint: release.environment.entrypoint, stateful: release.environment.stateful, deterministicSeeds: release.environment.deterministicSeeds, toolNames: release.tools.map(tool => tool.name), lifecycle: [\"create\", \"reset\", \"step\", \"grade\", \"cleanup\"], defaultTimeoutMs: release.environment.defaultTimeoutMs, networkPolicy: release.environment.networkPolicy, metadata: { portableEnvironment: release.environment, portableTools: release.tools } },\n capabilities: { schemaVersion: \"openpond.tasksetCapabilities.v1\", taskKind: work ? \"single_agent\" : \"chat\", supportedSignals: signals.demonstrations.length ? [\"demonstration\", \"reward\"] : [\"reward\"], compatibleMethods: input.batch.purpose === \"supervised_training\" ? [\"sft\"] : input.batch.purpose === \"reward_training\" ? [\"grpo\", \"ppo\"] : [\"none\"], rewardKinds: [...new Set(release.graders.map(grader => grader.kind === \"human\" ? \"human\" : grader.kind === \"model_judge\" ? \"model_judge\" : \"deterministic\"))], requiresTools: release.tools.length > 0, requiresState: release.environment.stateful, requiresPrivilegedGrading: true, environmentPlacements: [\"local\", \"remote\"], exportable: true, portabilityBlockers: [] },\n tasks: materialized.tasks.map(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: work ? { mode: \"artifacts\", requiredOutputSource: \"task.requiredOutputs\" } : { mode: \"structured_json\", jsonSchema: input.definition.outputSchema, renderer: null } },\n });\n return { taskset: TasksetSchema.parse({ ...taskset, contentHash: computeTasksetHash(taskset) }), release, generatedFiles, tasksetAssetBytes: materialized.tasksetAssetBytes };\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\n/** Shared admission-to-training preparation. No caller may claim a passed\n * privacy scan without executing the same checks over the pinned evidence.\n */\nexport function prepareReviewedLearningBatch(input: Omit<Parameters<typeof materializeLearningBatchTaskset>[0], \"source\"> & {\n admissionContext?: \"explicit_local_batch_review\" | \"explicit_hosted_batch_review\";\n}) {\n const inputAssetText: string[] = [];\n let inputAssetSize = 0;\n for (const ref of new Map(input.evidence.flatMap(item => item.submission.assets.map(ref => [ref.id, ref] as const))).values()) {\n const bytes = input.assetBytes?.get(ref.id);\n const stored = input.assets?.find(asset => asset.id === ref.id);\n const size = bytes?.byteLength ?? (stored ? new TextEncoder().encode(stored.text).byteLength : 0);\n inputAssetSize += size;\n if (inputAssetSize > MAX_TASKSET_PACKAGE_BYTES) throw new Error(\"Learning input assets exceed the training package limit.\");\n if (bytes) inputAssetText.push(new TextDecoder().decode(bytes));\n else if (stored) inputAssetText.push(stored.text);\n }\n const scan = scanAndRedactEvidence(JSON.stringify({\n tasks: input.evidence.map(item => item.submission), targets: input.decisions.map(item => item.approvedTarget), definition: input.definition,\n inputAssets: inputAssetText,\n }));\n if (scan.secretStatus !== \"passed\" || scan.piiStatus !== \"passed\") throw new Error(`Learning batch contains unresolved data findings (${scan.findings.join(\", \")}). Correct the source examples and seal a revised batch before training.`);\n const source = LearningBatchDatasetSourceRefSchema.parse({\n schemaVersion: \"openpond.learningBatchDatasetSource.v1\", kind: \"learning_batch\",\n id: `batch-source-${input.batch.contentHash.slice(0, 40)}`, profileId: input.profileId,\n title: input.definition.name, sourceHash: input.batch.contentHash, occurredAt: input.batch.sealedAt,\n batch: learningRef(input.batch), taskDefinition: input.batch.taskDefinition, admittedBy: input.batch.sealedBy,\n licensingStatus: \"approved\", secretScanStatus: scan.secretStatus, piiScanStatus: scan.piiStatus,\n metadata: { admission: input.admissionContext ?? \"explicit_local_batch_review\", privacyScanner: \"openpond-evidence-v1\", findings: scan.findings },\n });\n return materializeLearningBatchTaskset({ ...input, source });\n}\n", "import { contentHash, sha256 } from \"@openpond/harness\";\nimport { verifyLearningTextAsset, type LearningTextAsset } from \"@openpond/evals/learning\";\nimport type { TaskRecord } from \"@openpond/evals/tasksets\";\n\n/** Capture exact admitted input bytes under task-specific materialization paths. */\nexport function materializeLearningBatchAssets(input: {\n tasks: TaskRecord[]; sourceId: string; assets?: LearningTextAsset[];\n assetBytes?: ReadonlyMap<string, Uint8Array>;\n}) {\n const tasksetAssetBytes = new Map<string, Uint8Array>();\n const tasks = input.tasks.map(({ artifactRefs, ...task }) => ({\n ...task,\n assets: artifactRefs.map(asset => {\n if (asset.visibility !== \"policy\") throw new Error(\"Learning task inputs must be policy-visible assets.\");\n const stored = input.assets?.find(value => value.id === asset.id);\n const bytes = input.assetBytes?.get(asset.id)\n ?? (stored ? new TextEncoder().encode(verifyLearningTextAsset(stored, asset)) : undefined);\n if (!bytes || bytes.byteLength !== asset.sizeBytes || sha256(bytes) !== asset.contentHash) throw new Error(`Learning task input bytes are missing or changed: ${asset.id}.`);\n const artifactRef = `learning/assets/${contentHash({ task: task.id, asset: asset.id }).slice(0, 40)}/${asset.path}`;\n tasksetAssetBytes.set(artifactRef, new Uint8Array(bytes));\n return { id: asset.id, sourceRefId: input.sourceId, artifactRef,\n fileName: asset.path.split(\"/\").at(-1)!, mediaType: asset.mediaType,\n sha256: asset.contentHash, sizeBytes: asset.sizeBytes, split: task.split, metadata: { portableAsset: asset } };\n }),\n ...(task.requiredOutputs ? { requiredOutputs: task.requiredOutputs.map(output => ({ ...output,\n schemaRef: output.schemaRef?.id ?? null, maxBytes: output.maxBytes ?? undefined })) } : {}),\n }));\n return { tasks, tasksetAssetBytes };\n}\n", "import { contentHash, sha256 } from \"@openpond/harness\";\nimport { z } from \"zod\";\n\nimport type { ModelProject } from \"./model-projects.js\";\nimport { HarnessRunManifestSchema, ResolvedTrainingBundleManifestSchema, type HarnessRunManifest, type ResolvedTrainingBundleManifest } from \"./training-bundle-contracts.js\";\nimport { TRAINING_EVALUATION_SOURCE_PATH, TrainingEvaluationSourceSchema, trainingEvaluationSourceRef, type TrainingEvaluationSource } from \"./training-evaluation-source.js\";\nimport { parseAndVerifyTrainingInputArtifactUpload, parseAndVerifyTrainingJobSubmission, trainingInputArtifactUploadHash, trainingJobSubmissionHash, type TrainingJobSubmission } from \"./training.js\";\n\ntype PolicyJob = Extract<TrainingJobSubmission[\"job\"], { kind: \"policy_optimize\" }>;\nexport type TrainingPreparationFile = TrainingEvaluationSource[\"assets\"][number];\n\nexport interface ManagedTrainingPreparationInput {\n project: ModelProject;\n manifest: HarnessRunManifest;\n recipe: PolicyJob[\"recipe\"];\n taskset: TrainingJobSubmission[\"source\"][\"taskset\"];\n bundleManifest: ResolvedTrainingBundleManifest;\n files: TrainingPreparationFile[];\n evaluationSource: TrainingEvaluationSource;\n rewardSource: PolicyJob[\"rewardSource\"];\n resumeFrom: PolicyJob[\"resumeFrom\"];\n approval: Pick<TrainingJobSubmission[\"approval\"], \"approvalHash\" | \"maximumSpendUsd\" | \"retentionDays\" | \"region\">;\n modelImprovementQualification?: { id: string; contentHash: string } | null;\n /** A durable hosted iteration supplies its dispatch identity here. */\n idempotencyKey?: string;\n}\n\n/** Build the exact staged artifact and public Job without network or compute.\n * Inputs are copied before hashing so an asynchronous caller cannot rewrite the\n * selected bytes while preparation is in progress.\n */\nexport async function prepareManagedTrainingSubmission(raw: ManagedTrainingPreparationInput) {\n const input = structuredClone(raw);\n const { project, recipe, taskset, approval } = input;\n const manifest = HarnessRunManifestSchema.parse(input.manifest);\n const bundle = ResolvedTrainingBundleManifestSchema.parse(input.bundleManifest);\n const { contentHash: manifestHash, ...manifestContent } = manifest;\n const { contentHash: bundleHash, ...bundleContent } = bundle;\n if (contentHash(manifestContent) !== manifestHash || contentHash(bundleContent) !== bundleHash\n || manifest.resolvedBundleHash !== bundleHash || contentHash(manifest.harnessRelease) !== contentHash(bundle.harnessRelease)\n || contentHash(manifest.datasetRelease) !== contentHash(bundle.datasetRelease)\n || contentHash(manifest.evidenceSets) !== contentHash(bundle.evidenceSetRelease ? [bundle.evidenceSetRelease] : [])) {\n throw new Error(\"The managed training manifest or resolved bundle changed.\");\n }\n if (!project.hosted || project.hosted.syncedSourceRevision !== project.revision\n || project.hosted.portableProjectId !== project.id) throw new Error(\"Sync the exact Model Project revision before preparing managed training.\");\n const baseModel = project.trainingSetup.baseModel;\n if (!baseModel || baseModel.modelId !== manifest.model.source || baseModel.revision !== manifest.model.revision\n || baseModel.tokenizerRevision !== manifest.model.tokenizerRevision || baseModel.chatTemplateHash !== manifest.model.chatTemplateHash) {\n throw new Error(\"The synced Model Project base Model does not match the Run manifest.\");\n }\n if (recipe.method !== \"grpo\" || contentHash(recipe) !== manifest.recipe.configHash\n || approval.approvalHash !== manifest.approval.approvalHash || approval.maximumSpendUsd !== manifest.approval.maximumSpendUsd) {\n throw new Error(\"Managed training requires the exact approved GRPO recipe and spend ceiling.\");\n }\n const limits = z.object({ wallTimeMs: z.number().positive() }).parse(recipe.resourceLimits);\n if (input.idempotencyKey !== undefined) z.string().trim().min(16).max(191).parse(input.idempotencyKey);\n const files = verifyFiles(bundle, input.files);\n const evaluationSource = TrainingEvaluationSourceSchema.parse(input.evaluationSource);\n const evaluationFile = files.find(file => file.path === TRAINING_EVALUATION_SOURCE_PATH);\n if (!evaluationFile || contentHash(JSON.parse(Buffer.from(evaluationFile.content, \"base64\").toString(\"utf8\"))) !== contentHash(evaluationSource)) {\n throw new Error(\"The evaluation source differs from the immutable training bundle.\");\n }\n const evaluation = await trainingEvaluationSourceRef(evaluationSource);\n const payload = {\n schemaVersion: \"openpond.managedRlPortableSubmission.v1\" as const,\n sourceRunRef: `openpond:model-run:${manifest.id}`,\n name: `OpenPond Managed \u00B7 ${project.id}`.slice(0, 191),\n idempotencyKey: input.idempotencyKey ?? `openpond-managed:${manifestHash}`.slice(0, 191),\n modelProject: { id: project.hosted.projectId, portableProjectId: project.hosted.portableProjectId },\n manifest, sourceTaskset: taskset,\n modelImprovementQualification: input.modelImprovementQualification ?? null,\n recipe, resolvedBundle: { manifest: bundle, files },\n validationTasks: evaluationSource.tasks, validationAssets: evaluationSource.assets,\n };\n const artifactContent = {\n schemaVersion: \"openpond.trainingInputArtifactUpload.v2\" as const,\n kind: \"portable_training_bundle\" as const,\n idempotencyKey: `stage:${input.idempotencyKey ?? manifestHash}`,\n sourceManifest: { id: manifest.id, contentHash: manifestHash }, payload,\n };\n const artifact = await parseAndVerifyTrainingInputArtifactUpload({ ...artifactContent, contentHash: await trainingInputArtifactUploadHash(artifactContent) });\n const jobContent: Omit<TrainingJobSubmission, \"contentHash\"> = {\n schemaVersion: \"openpond.trainingJobSubmission.v2\",\n idempotencyKey: input.idempotencyKey ?? `openpond-training-v2:${manifestHash}`,\n name: `OpenPond Managed \u00B7 ${project.id}`.slice(0, 200),\n source: {\n modelProject: { id: project.hosted.projectId, portableProjectId: project.hosted.portableProjectId, revision: project.revision, contentHash: project.hosted.etag },\n harnessRunManifest: artifactContent.sourceManifest, harnessRelease: manifest.harnessRelease,\n taskset, tasksetRelease: { id: taskset.id, contentHash: taskset.contentHash },\n dataset: bundle.datasetRelease, evaluation,\n evidenceSets: bundle.evidenceSetRelease ? [bundle.evidenceSetRelease] : [],\n },\n job: { kind: \"policy_optimize\", baseModel, recipe, rewardSource: input.rewardSource, resumeFrom: input.resumeFrom },\n requestedCapabilities: [\n { id: \"managed_rl.policy.grpo\", version: \"1\", required: true },\n { id: `managed_rl.rollouts.${manifest.runtimeTarget.placement}`, version: \"1\", required: true },\n ...(project.trainingSetup.managedGpuRequirement === \"h100_hbm3\" ? [{ id: \"managed_rl.gpu.h100_hbm3\", version: \"1\", required: true }] : []),\n ],\n placementObjective: project.trainingSetup.managedGpuPlacementObjective,\n budget: { maximumSpendUsd: approval.maximumSpendUsd, maximumWallSeconds: Math.ceil(limits.wallTimeMs / 1_000) },\n approval: { ...approval, approvedAt: manifest.approval.approvedAt, exportApproved: true },\n };\n const submission = await parseAndVerifyTrainingJobSubmission({ ...jobContent, contentHash: await trainingJobSubmissionHash(jobContent) });\n return { artifact, submission };\n}\n\nfunction verifyFiles(bundle: ResolvedTrainingBundleManifest, files: TrainingPreparationFile[]) {\n if (files.length !== bundle.files.length || new Set(files.map(file => file.path)).size !== files.length) throw new Error(\"The managed bundle file inventory changed.\");\n const indexed = new Map(files.map(file => [file.path, file]));\n return bundle.files.map(expected => {\n const file = indexed.get(expected.path);\n if (!file || file.path.includes(\"\\\\\") || file.path.includes(\"\\0\") || file.path.split(\"/\").some(part => !part || part === \".\" || part === \"..\")\n || file.path === \"bundle-manifest.json\" || file.encoding !== \"base64\") throw new Error(\"The managed bundle contains an invalid file.\");\n const bytes = Buffer.from(file.content, \"base64\");\n if (bytes.toString(\"base64\") !== file.content || file.sha256 !== expected.sha256 || file.sizeBytes !== expected.sizeBytes\n || bytes.byteLength !== expected.sizeBytes || sha256(bytes) !== expected.sha256) throw new Error(`Managed training bundle file ${file.path} changed before upload.`);\n return file;\n });\n}\n", "import { z } from \"zod\";\nimport { contentHash } from \"@openpond/harness\";\nimport type { Taskset } from \"./taskset-authored-contracts.js\";\n\nexport const AdamwOptimizerConfigSchema = z.object({\n name: z.literal(\"adamw\").default(\"adamw\"),\n weightDecay: z.number().nonnegative().max(1).default(0),\n beta1: z.number().positive().lt(1).default(0.9),\n beta2: z.number().positive().lt(1).default(0.999),\n epsilon: z.number().positive().max(0.01).default(1e-8),\n}).strict().default({\n name: \"adamw\",\n weightDecay: 0,\n beta1: 0.9,\n beta2: 0.999,\n epsilon: 1e-8,\n});\n\nexport function withAuthoritativeRecipeHashes(\n taskset: Taskset,\n recipe: unknown,\n): unknown {\n if (!recipe || typeof recipe !== \"object\" || Array.isArray(recipe)) {\n return recipe;\n }\n const candidate = recipe as Record<string, unknown>;\n if (candidate.method === \"dpo\") {\n const policyModel = record(candidate.policyModel);\n const referenceModel = record(candidate.referenceModel);\n const dataset = record(candidate.dataset);\n const invalidationHash = contentHash({\n tasksetHash: taskset.contentHash,\n preferenceSignals: taskset.learningSignals.preferences.map((signal) => ({\n id: signal.id,\n artifactRef: signal.artifactRef,\n prompt: signal.prompt,\n chosen: signal.chosen,\n rejected: signal.rejected,\n approved: signal.approved,\n })),\n policyModel,\n referenceModel,\n dataset,\n });\n return {\n ...candidate,\n referenceLogprobs: {\n cacheSchemaVersion: \"openpond.dpoReferenceLogprobs.v1\",\n cacheKey: contentHash([\"dpo-reference-logprobs\", invalidationHash]),\n invalidationHash,\n },\n };\n }\n if (candidate.method === \"ppo\") {\n const policyOptimization = record(candidate.policyOptimization);\n const policyModel = record(policyOptimization.policyModel);\n const referenceModel = record(policyOptimization.referenceModel);\n const optimizer = record(policyOptimization.optimizer);\n const valueModel = record(optimizer.valueModel);\n const dataset = record(policyOptimization.dataset);\n const reward = record(policyOptimization.reward);\n const policyHash = contentHash(policyModel);\n const referenceHash = contentHash(referenceModel);\n const valueModelHash = contentHash(valueModel);\n return {\n ...candidate,\n policyOptimization: {\n ...policyOptimization,\n dataset: {\n ...dataset,\n tasksetId: taskset.id,\n tasksetHash: taskset.contentHash,\n },\n reward: {\n ...reward,\n graderHash: contentHash(taskset.graders),\n },\n },\n resume: {\n ...record(candidate.resume),\n policyHash,\n referenceHash,\n valueModelHash,\n },\n };\n }\n if (candidate.method !== \"grpo\") return recipe;\n const reward =\n candidate.reward\n && typeof candidate.reward === \"object\"\n && !Array.isArray(candidate.reward)\n ? candidate.reward as Record<string, unknown>\n : {};\n const metadataToolContractHash =\n taskset.environment.metadata.toolContractHash;\n const authoritativeToolContractHash =\n typeof metadataToolContractHash === \"string\"\n && metadataToolContractHash.trim()\n ? metadataToolContractHash\n : reward.toolContractHash;\n const baseModel = record(candidate.baseModel);\n const dataset = record(candidate.dataset);\n const rollout = record(candidate.rollout);\n const optimizer = record(candidate.optimizer);\n const loss = record(candidate.loss);\n const resourceLimits = record(candidate.resourceLimits);\n const maxExamples = positiveInteger(dataset.maxExamples, 1);\n const groupSize = positiveInteger(rollout.groupSize, 2);\n const maxOutputTokens = positiveInteger(rollout.maxOutputTokens, 1);\n const maxPromptTokens = positiveInteger(dataset.maxPromptTokens, 1);\n const maxSteps = positiveInteger(optimizer.maxSteps, 1);\n const optimizerIterations = positiveInteger(optimizer.iterations, 2);\n return {\n ...candidate,\n resourceLimits: {\n ...resourceLimits,\n maxGpuSeconds: resourceLimits.maxGpuSeconds ?? Math.min(\n 10_800,\n Math.ceil(positiveInteger(resourceLimits.wallTimeMs, 180_000) / 1_000),\n ),\n },\n reward: {\n ...reward,\n graderHash: contentHash(taskset.graders),\n toolContractHash: authoritativeToolContractHash,\n },\n policyOptimization: {\n schemaVersion: \"openpond.policyOptimization.v1\",\n policyModel: baseModel,\n referenceModel: baseModel,\n dataset: {\n tasksetId: taskset.id,\n tasksetHash: taskset.contentHash,\n split: \"train\",\n selectionStrategy: dataset.selectionStrategy,\n selectionSeed: rollout.seed,\n maxExamples,\n },\n sampler: {\n temperature: rollout.temperature,\n topP: rollout.topP,\n maxOutputTokens,\n maxTurns: rollout.maxTurns,\n concurrency: rollout.concurrency,\n },\n environment: {\n id: reward.environmentId,\n version: reward.environmentVersion,\n toolContractHash: authoritativeToolContractHash,\n },\n reward: {\n graderId: reward.graderId,\n graderHash: contentHash(taskset.graders),\n learnedPreference: reward.learnedPreference ?? null,\n },\n kl: {\n coefficient: loss.klBeta ?? null,\n referenceConstraint: \"fixed_reference\",\n },\n budgets: {\n maxRollouts: positiveInteger(resourceLimits.maxRollouts, maxExamples * groupSize),\n maxEnvironmentExecutions: positiveInteger(resourceLimits.maxRollouts, maxExamples * groupSize),\n maxInputTokens: maxExamples * groupSize * maxPromptTokens,\n maxOutputTokens: maxExamples * groupSize * maxOutputTokens,\n maxOptimizerSteps: maxSteps * optimizerIterations,\n wallTimeMs: positiveInteger(resourceLimits.wallTimeMs, 180_000),\n maximumCostUsd: null,\n },\n checkpointEverySteps: 1,\n seed: rollout.seed,\n evaluationSplit: \"frozen_eval\",\n optimizer: {\n method: \"grpo\",\n groupSize,\n normalization: \"group_standardized\",\n advantageEpsilon:\n typeof optimizer.advantageEpsilon === \"number\"\n ? optimizer.advantageEpsilon\n : 1e-8,\n loss: loss.method ?? \"grpo\",\n clipRange: typeof optimizer.clipRange === \"number\" ? optimizer.clipRange : 0.2,\n iterations: optimizerIterations,\n microbatchSize: positiveInteger(optimizer.microbatchSize, 1),\n gradientAccumulationSteps: positiveInteger(\n optimizer.gradientAccumulationSteps,\n 1,\n ),\n adamw: AdamwOptimizerConfigSchema.parse(optimizer.adamw),\n },\n },\n };\n}\n\nfunction record(value: unknown): Record<string, unknown> {\n return value && typeof value === \"object\" && !Array.isArray(value)\n ? value as Record<string, unknown>\n : {};\n}\n\nfunction positiveInteger(value: unknown, fallback: number): number {\n return typeof value === \"number\" && Number.isInteger(value) && value > 0\n ? value\n : fallback;\n}\n\n", "import {\n canonicalJson, contentHash, createAgentSnapshot, createHarnessRelease,\n type AgentSnapshot, type HarnessRelease, type ImmutableAssetRef,\n type ImmutableReleaseRef, type ToolDeclaration,\n} from \"@openpond/harness\";\n\n/** Compile immutable Agent-loop dependencies for local and hosted callers.\n * The protocol and asset identities preserve existing approved training Runs.\n * Taskset environment, tools and graders are bound separately in the bundle.\n * Callers resolve source/assets before entering this pure compilation boundary.\n */\nexport function createPolicyHarnessContext(input: {\n sourceRelease: ImmutableReleaseRef | null;\n profileHead?: string | null;\n skills?: ImmutableAssetRef[];\n agents?: ImmutableAssetRef[];\n}): { agentSnapshot: AgentSnapshot; harnessRelease: HarnessRelease } {\n const sourceRelease = input.sourceRelease;\n const harnessTools: ToolDeclaration[] = [];\n const skills = input.skills ?? [];\n const agents = input.agents ?? [];\n if ([...skills, ...agents].some(entry => entry.visibility !== \"policy\")) {\n throw new Error(\"The portable policy Harness requires policy-visible dependencies.\");\n }\n const dependencyLock = asset({\n id: \"desktop-dependency-lock\",\n path: \".openpond/harness/dependency-lock.json\",\n hashInput: {\n profileHead: input.profileHead ?? null,\n sourceRelease,\n tools: harnessTools,\n skills: skills.map(({ id, contentHash: assetHash }) => ({ id, contentHash: assetHash })),\n agents: agents.map(({ id, contentHash: assetHash }) => ({ id, contentHash: assetHash })),\n },\n mediaType: \"application/json\",\n visibility: \"policy\",\n });\n const agentSnapshot = createAgentSnapshot({\n schemaVersion: \"openpond.agentSnapshot.v2\",\n id: `agent-snapshot-${contentHash([sourceRelease, harnessTools, dependencyLock.contentHash]).slice(0, 24)}`,\n sourceRelease,\n instructions: [],\n skills,\n agents,\n toolDeclarations: harnessTools,\n capabilityRequirements: [],\n dependencyLock,\n portability: {\n portable: true,\n blockers: [],\n localOnlyAssetRefs: [],\n hostPrivateAssetRefs: [],\n },\n metadata: { sourceReleaseId: sourceRelease?.id ?? null },\n });\n const program = asset({\n id: \"desktop-harness-program\",\n path: \".openpond/harness/program.json\",\n hashInput: { program: \"openpond.desktop-agent-loop.v1\" },\n mediaType: \"application/json\",\n visibility: \"policy\",\n });\n const harnessRelease = createHarnessRelease({\n schemaVersion: \"openpond.harnessRelease.v2\",\n id: `harness-${contentHash([agentSnapshot.contentHash, program.contentHash, harnessTools]).slice(0, 24)}`,\n agentSnapshot: { id: agentSnapshot.id, contentHash: agentSnapshot.contentHash },\n program,\n tools: harnessTools,\n lifecycle: {\n create: true,\n reset: true,\n step: true,\n collect: true,\n destroy: true,\n resetScope: \"attempt\",\n },\n graderInterface: {\n visibleEvidence: [\"output\", \"runtime_events\", \"artifacts\"],\n privilegedEvidence: [\"expected_output\", \"private_verifier\"],\n privateVerifierIsolation: true,\n },\n files: [...skills, ...agents],\n metadata: { runtimeProtocol: \"openpond.desktop-agent-loop.v1\" },\n });\n return { agentSnapshot, harnessRelease };\n}\n\nfunction asset(input: {\n id: string;\n path: string;\n hashInput: unknown;\n mediaType: string;\n visibility: ImmutableAssetRef[\"visibility\"];\n}): ImmutableAssetRef {\n const bytes = canonicalJson(input.hashInput);\n return {\n id: input.id,\n path: input.path,\n contentHash: contentHash(input.hashInput),\n sizeBytes: new TextEncoder().encode(bytes).byteLength,\n mediaType: input.mediaType,\n visibility: input.visibility,\n };\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["verifyLearningTextAsset", "verifyLearningTextAsset", "asset", "bytes", "asset", "verifyLearningTextAsset", "ref", "bytes", "z", "z", "bytes", "z", "z", "dataset", "optimizer", "reward", "bytes", "asset", "verifyLearningTextAsset"]
|
|
7
7
|
}
|
|
@@ -2,6 +2,7 @@ import { z } from "zod";
|
|
|
2
2
|
export { ModelStarterExecutionSchema, ModelStarterEnvironmentAttemptSchema, verifyModelStarterEnvironmentAttempt, ModelStarterToolFixtureScriptSchema, createModelStarterExecutionAsset, modelStarterExecutionAssetId, resolveModelStarterExecutionAsset, type ModelStarterExecution, type ModelStarterExecutionContext } from "./model-starter-execution.js";
|
|
3
3
|
export { ModelTasksetDerivationSchema, ModelTasksetPackageSchema, deriveModelTaskset, validateModelTasksetPackage, type ModelTasksetPackage } from "./model-taskset-derivation.js";
|
|
4
4
|
export { ModelTasksetExecutionResourcesSchema, createModelTasksetExecutionResourcesAsset, modelTasksetExecutionResourcesAssetId, resolveModelTasksetExecutionResourcesAsset } from "./model-taskset-resources.js";
|
|
5
|
+
export { prepareModelTrainingDefaults } from "./model-training-defaults.js";
|
|
5
6
|
/** Catalog records contain references and previews, never the private task rows. */
|
|
6
7
|
export declare const ModelStarterContentSchema: z.ZodObject<{
|
|
7
8
|
schemaVersion: z.ZodLiteral<"openpond.modelStarter.v1">;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-starters.d.ts","sourceRoot":"","sources":["../../../../../src/model-starters.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAUxB,OAAO,EAAE,2BAA2B,EAAE,oCAAoC,EAAE,oCAAoC,EAAE,mCAAmC,EAAE,gCAAgC,EAAE,4BAA4B,EAAE,iCAAiC,EAAE,KAAK,qBAAqB,EAAE,KAAK,4BAA4B,EAAE,MAAM,8BAA8B,CAAC;AAC9V,OAAO,EAAE,4BAA4B,EAAE,yBAAyB,EAAE,kBAAkB,EAAE,2BAA2B,EAAE,KAAK,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACnL,OAAO,EAAE,oCAAoC,EAAE,yCAAyC,EAAE,qCAAqC,EAAE,0CAA0C,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"model-starters.d.ts","sourceRoot":"","sources":["../../../../../src/model-starters.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type ModelProjectTrainingSetup } from "./model-projects.js";
|
|
2
|
+
/** Saved defaults do not authorize execution. The Run review still owns the
|
|
3
|
+
* budget, runtime admission and exact training/evaluation population checks. */
|
|
4
|
+
export declare function prepareModelTrainingDefaults(input: {
|
|
5
|
+
setup: ModelProjectTrainingSetup;
|
|
6
|
+
package: unknown;
|
|
7
|
+
}): ModelProjectTrainingSetup;
|
|
8
|
+
//# sourceMappingURL=model-training-defaults.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-training-defaults.d.ts","sourceRoot":"","sources":["../../../../../src/model-training-defaults.ts"],"names":[],"mappings":"AAGA,OAAO,EAAmC,KAAK,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAEtG;gFACgF;AAChF,wBAAgB,4BAA4B,CAAC,KAAK,EAAE;IAClD,KAAK,EAAE,yBAAyB,CAAC;IACjC,OAAO,EAAE,OAAO,CAAC;CAClB,GAAG,yBAAyB,CAwC5B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taskset-package-grader-projection.d.ts","sourceRoot":"","sources":["../../../../../src/taskset-package-grader-projection.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4C,KAAK,aAAa,EAAE,KAAK,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC3H,OAAO,
|
|
1
|
+
{"version":3,"file":"taskset-package-grader-projection.d.ts","sourceRoot":"","sources":["../../../../../src/taskset-package-grader-projection.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4C,KAAK,aAAa,EAAE,KAAK,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC3H,OAAO,EAA4E,KAAK,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC5I,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAE1D,OAAO,EAA4B,KAAK,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAG/F,+EAA+E;AAC/E,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAqB3D;AAED,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,aAAa,EAAE,EAAE,MAAM,GAAE,iBAAiB,EAAO,GAAG,UAAU,EAAE,CA4B5I;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,UAAyC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"training-bundle.d.ts","sourceRoot":"","sources":["../../../../../src/training-bundle.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6H,KAAK,oBAAoB,EAAE,KAAK,mBAAmB,EAAE,KAAK,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAE7O,OAAO,EAA2B,KAAK,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC3F,OAAO,EAAwI,KAAK,oBAAoB,EAAE,KAAK,kBAAkB,EAAE,KAAK,2BAA2B,EAAE,KAAK,oBAAoB,EAAE,KAAK,8BAA8B,EAAE,KAAK,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AACxW,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iCAAiC,CAAC;AAE/D,OAAO,EAAyC,KAAK,sBAAsB,EAAE,MAAM,wCAAwC,CAAC;AAC5H,OAAO,EAAsG,KAAK,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAEpL,cAAc,gCAAgC,CAAC;AAC/C,OAAO,EAAE,+BAA+B,EAAE,4BAA4B,EAAE,MAAM,8BAA8B,CAAC;AAC7G,OAAO,EAAE,gCAAgC,EAAE,KAAK,+BAA+B,EAAE,KAAK,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AACzJ,OAAO,EAAE,qBAAqB,EAAE,KAAK,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAExF,MAAM,MAAM,qBAAqB,GAAG;IAClC,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,sBAAsB,EAAE,8BAA8B,CAAC;IACvD,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACxC,cAAc,EAAE,mBAAmB,CAAC;IACpC,cAAc,EAAE,mBAAmB,CAAC;IACpC,cAAc,EAAE,mBAAmB,CAAC;IACpC,cAAc,EAAE,mBAAmB,CAAC;IACpC,kBAAkB,EAAE,mBAAmB,GAAG,IAAI,CAAC;CAChD,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE;IAChD,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,YAAY,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,2BAA2B,CAAC;IACrC,OAAO,EAAE,oBAAoB,CAAC;IAC9B,MAAM,EAAE,qBAAqB,CAAC;IAC9B,QAAQ,EAAE;QACR,YAAY,EAAE,MAAM,CAAC;QACrB,UAAU,EAAE,MAAM,CAAC;QACnB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;KAChC,CAAC;IACF,eAAe,CAAC,EAAE,oBAAoB,EAAE,CAAC;IACzC,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,mBAAmB,CAAC;IACpC,cAAc,EAAE,mBAAmB,CAAC;IACpC,aAAa,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAC5C,iBAAiB,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACpD,eAAe,CAAC,EAAE,sBAAsB,CAAC;IACzC,cAAc,CAAC,EAAE,iBAAiB,EAAE,CAAC;IACrC,gBAAgB,CAAC,EAAE,wBAAwB,CAAC;CAC7C,GAAG,qBAAqB,
|
|
1
|
+
{"version":3,"file":"training-bundle.d.ts","sourceRoot":"","sources":["../../../../../src/training-bundle.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6H,KAAK,oBAAoB,EAAE,KAAK,mBAAmB,EAAE,KAAK,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAE7O,OAAO,EAA2B,KAAK,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC3F,OAAO,EAAwI,KAAK,oBAAoB,EAAE,KAAK,kBAAkB,EAAE,KAAK,2BAA2B,EAAE,KAAK,oBAAoB,EAAE,KAAK,8BAA8B,EAAE,KAAK,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AACxW,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iCAAiC,CAAC;AAE/D,OAAO,EAAyC,KAAK,sBAAsB,EAAE,MAAM,wCAAwC,CAAC;AAC5H,OAAO,EAAsG,KAAK,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAEpL,cAAc,gCAAgC,CAAC;AAC/C,OAAO,EAAE,+BAA+B,EAAE,4BAA4B,EAAE,MAAM,8BAA8B,CAAC;AAC7G,OAAO,EAAE,gCAAgC,EAAE,KAAK,+BAA+B,EAAE,KAAK,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AACzJ,OAAO,EAAE,qBAAqB,EAAE,KAAK,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAExF,MAAM,MAAM,qBAAqB,GAAG;IAClC,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,sBAAsB,EAAE,8BAA8B,CAAC;IACvD,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACxC,cAAc,EAAE,mBAAmB,CAAC;IACpC,cAAc,EAAE,mBAAmB,CAAC;IACpC,cAAc,EAAE,mBAAmB,CAAC;IACpC,cAAc,EAAE,mBAAmB,CAAC;IACpC,kBAAkB,EAAE,mBAAmB,GAAG,IAAI,CAAC;CAChD,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE;IAChD,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,YAAY,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,2BAA2B,CAAC;IACrC,OAAO,EAAE,oBAAoB,CAAC;IAC9B,MAAM,EAAE,qBAAqB,CAAC;IAC9B,QAAQ,EAAE;QACR,YAAY,EAAE,MAAM,CAAC;QACrB,UAAU,EAAE,MAAM,CAAC;QACnB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;KAChC,CAAC;IACF,eAAe,CAAC,EAAE,oBAAoB,EAAE,CAAC;IACzC,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,mBAAmB,CAAC;IACpC,cAAc,EAAE,mBAAmB,CAAC;IACpC,aAAa,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAC5C,iBAAiB,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACpD,eAAe,CAAC,EAAE,sBAAsB,CAAC;IACzC,cAAc,CAAC,EAAE,iBAAiB,EAAE,CAAC;IACrC,gBAAgB,CAAC,EAAE,wBAAwB,CAAC;CAC7C,GAAG,qBAAqB,CA+NxB;AAmDD,OAAO,EAAE,6BAA6B,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAEzG,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../src/model-starters.ts"],
|
|
4
|
-
"sourcesContent": ["import { z } from \"zod\";\nimport { TasksetReleaseSchema, assertTasksetRelease } from \"@openpond/evals/tasksets\";\nimport { LearningTextAssetSchema, TaskDefinitionSchema, learningRef, sameLearningRef, sealLearningContent } from \"@openpond/evals/learning\";\nimport { RewardBindingSchema, RewardReleaseSchema, compileBoundGraders } from \"@openpond/evals/rewards\";\nimport { assertBoundedTaskJson, validateTaskValue } from \"@openpond/evals/task-schema\";\n\nimport { ModelProjectBaseModelSchema, ModelProjectTrainingMethodSchema, ModelProjectVersionedRefSchema } from \"./model-projects.js\";\nimport { canonicalSha256 } from \"./protocol.js\";\nimport { ModelStarterExecutionSchema, validateModelStarterExecution } from \"./model-starter-execution.js\";\n\nexport { ModelStarterExecutionSchema, ModelStarterEnvironmentAttemptSchema, verifyModelStarterEnvironmentAttempt, ModelStarterToolFixtureScriptSchema, createModelStarterExecutionAsset, modelStarterExecutionAssetId, resolveModelStarterExecutionAsset, type ModelStarterExecution, type ModelStarterExecutionContext } from \"./model-starter-execution.js\";\nexport { ModelTasksetDerivationSchema, ModelTasksetPackageSchema, deriveModelTaskset, validateModelTasksetPackage, type ModelTasksetPackage } from \"./model-taskset-derivation.js\";\nexport { ModelTasksetExecutionResourcesSchema, createModelTasksetExecutionResourcesAsset, modelTasksetExecutionResourcesAssetId, resolveModelTasksetExecutionResourcesAsset } from \"./model-taskset-resources.js\";\n\nconst IdSchema = z.string().trim().min(1).max(500);\nconst RefSchema = ModelProjectVersionedRefSchema;\n\n/** Catalog records contain references and previews, never the private task rows. */\nexport const ModelStarterContentSchema = z.object({\n schemaVersion: z.literal(\"openpond.modelStarter.v1\"),\n id: IdSchema,\n revision: z.number().int().positive(),\n name: z.string().trim().min(1).max(200),\n description: z.string().trim().min(1).max(2_000),\n category: z.enum([\"extraction\", \"support\", \"operations\", \"knowledge\", \"coding\", \"writing\", \"classification\"]),\n taskset: RefSchema,\n taskDefinition: RefSchema,\n rewardBinding: RefSchema,\n rewards: z.array(RefSchema).min(1).max(100),\n assets: z.array(RefSchema).max(1_000),\n previewTaskIds: z.array(IdSchema).min(1).max(8),\n startingModel: ModelProjectBaseModelSchema,\n supportedMethods: z.array(ModelProjectTrainingMethodSchema).min(1).max(8),\n defaultMethod: ModelProjectTrainingMethodSchema,\n provenance: z.object({ author: z.string().min(1).max(200), license: z.string().min(1).max(200), sourceDescription: z.string().min(1).max(2_000) }).strict(),\n // These are references to real results. Package publication does not create\n // evidence, qualify a starter, or enable continuous learning.\n evidence: z.object({ verifierFixtures: RefSchema.nullable(), baseline: RefSchema.nullable(), training: RefSchema.nullable(), evaluation: RefSchema.nullable() }).strict(),\n}).strict().superRefine((starter, context) => {\n if (!starter.supportedMethods.includes(starter.defaultMethod)) context.addIssue({ code: \"custom\", path: [\"defaultMethod\"], message: \"The default method must be supported by the package.\" });\n for (const field of [\"rewards\", \"assets\"] as const) {\n if (new Set(starter[field].map(ref => ref.id)).size !== starter[field].length) context.addIssue({ code: \"custom\", path: [field], message: \"Dependency identities must be unique.\" });\n }\n if (new Set(starter.previewTaskIds).size !== starter.previewTaskIds.length) context.addIssue({ code: \"custom\", path: [\"previewTaskIds\"], message: \"Preview tasks must be unique.\" });\n});\nexport const ModelStarterSchema = ModelStarterContentSchema.safeExtend({ contentHash: z.string().regex(/^[a-f0-9]{64}$/) });\nexport type ModelStarter = z.infer<typeof ModelStarterSchema>;\n\n/** A resolved small package, obtained separately from catalog discovery.\n * Large Tasksets remain manifest/shard resources; they are not list payloads. */\nexport const ResolvedModelStarterSchema = z.object({\n starter: ModelStarterSchema,\n taskset: TasksetReleaseSchema,\n taskDefinition: TaskDefinitionSchema,\n rewardBinding: RewardBindingSchema,\n rewards: z.array(RewardReleaseSchema).min(1).max(100),\n assets: z.array(LearningTextAssetSchema).max(1_000),\n execution: ModelStarterExecutionSchema.optional(),\n}).strict();\nexport type ResolvedModelStarter = z.infer<typeof ResolvedModelStarterSchema>;\n\n/** Publisher attestation for original synthetic contact data, never a caller\n * override for arbitrary imports or for a failed secret scan. */\nexport const ModelStarterPrivacyReviewSchema = z.object({\n schemaVersion: z.literal(\"openpond.modelStarterPrivacyReview.v1\"),\n disposition: z.literal(\"synthetic_only\"),\n reviewedBy: z.string().trim().min(1).max(500), reviewedAt: z.iso.datetime(),\n reviewedContentHash: z.string().regex(/^[a-f0-9]{64}$/),\n note: z.string().trim().min(1).max(2_000),\n}).strict();\nexport function modelStarterPrivacyContentHash(value: ResolvedModelStarter): string {\n const { contentHash: _starterHash, ...starter } = value.starter;\n const { contentHash: _tasksetHash, ...taskset } = value.taskset;\n const { contentHash: _referenceHash, ...tasksetRef } = starter.taskset;\n const metadata = { ...taskset.metadata };\n const authoring = metadata.starterAuthoring;\n if (authoring && typeof authoring === \"object\" && !Array.isArray(authoring)) {\n const { privacyReview: _review, ...content } = authoring as Record<string, unknown>;\n metadata.starterAuthoring = content;\n }\n // Exclude only the attestation and hashes that contain that attestation.\n return sealLearningContent({ ...value, starter: { ...starter, taskset: tasksetRef }, taskset: { ...taskset, metadata } }).contentHash;\n}\n\n/** Final creation intent. The server resolves package bytes from its catalog;\n * callers cannot supply executable resources or qualification receipts here. */\nexport const ModelStarterCreationIntentSchema = z.object({\n profileId: IdSchema,\n modelId: IdSchema,\n name: z.string().trim().min(1).max(200),\n starter: RefSchema,\n startingModel: ModelProjectBaseModelSchema,\n method: ModelProjectTrainingMethodSchema,\n rewardBindingRef: RefSchema.nullable().optional(),\n}).strict();\nexport const ModelStarterCreationRequestSchema = ModelStarterCreationIntentSchema.extend({\n schemaVersion: z.literal(\"openpond.modelStarterCreation.v1\"),\n operationId: IdSchema,\n}).strict();\nexport type ModelStarterCreationRequest = z.infer<typeof ModelStarterCreationRequestSchema>;\n\nexport function parseModelStarterCreationRequest(value: unknown): ModelStarterCreationRequest {\n assertBoundedTaskJson(value, 64 * 1024);\n return ModelStarterCreationRequestSchema.parse(value);\n}\n\n/** Prepare once on final confirmation and retain across uncertain transport\n * outcomes. The server must bind operationId to the complete original intent\n * and atomically commit resources, model configuration and the retry receipt. */\nexport async function createModelStarterCreationRequest(\n value: z.input<typeof ModelStarterCreationIntentSchema>,\n): Promise<ModelStarterCreationRequest> {\n assertBoundedTaskJson(value, 64 * 1024);\n const intent = ModelStarterCreationIntentSchema.parse(value);\n return parseModelStarterCreationRequest({\n ...intent,\n schemaVersion: \"openpond.modelStarterCreation.v1\",\n operationId: `model-starter:${await canonicalSha256(intent)}`,\n });\n}\n\n/** Scope authorization belongs to the API. This validates the final intent\n * against the exact trusted package before any user resources are written. */\nexport function validateModelStarterCreation(value: unknown, packageValue: unknown) {\n const request = parseModelStarterCreationRequest(value);\n const resolved = validateResolvedModelStarter(packageValue);\n if (!sameLearningRef(request.starter, learningRef(resolved.starter))) throw new Error(\"Starter creation references a different package revision.\");\n if (!resolved.starter.supportedMethods.includes(request.method)) throw new Error(\"The selected training method is not supported by this starter.\");\n return { request, resolved };\n}\n\n/** Explicit projection keeps frozen examples, expected outputs, privileged\n * context and verifier source out of read-only model-facing previews. */\nexport function previewModelStarter(value: unknown) {\n const { starter, taskset, taskDefinition, rewardBinding, rewards } = validateResolvedModelStarter(value);\n return {\n starter,\n inputSchema: taskDefinition.inputSchema,\n outputSchema: taskDefinition.outputSchema,\n reward: {\n name: rewardBinding.name,\n description: rewardBinding.description,\n checks: rewardBinding.sources.map(source => {\n const reward = rewards.find(reward => sameLearningRef(source.reward, learningRef(reward)))!;\n return { name: reward.name, description: reward.description, kind: reward.implementation.kind, role: source.role, weight: source.weight, required: source.required, hardGate: source.hardGate };\n }),\n },\n tasks: starter.previewTaskIds.map(id => {\n const task = taskset.tasks.find(task => task.id === id)!;\n return { id: task.id, input: task.input, policyVisibleContext: task.policyVisibleContext };\n }),\n counts: {\n train: taskset.tasks.filter(task => task.split === \"train\").length,\n validation: taskset.tasks.filter(task => task.split === \"validation\").length,\n frozenEvaluation: taskset.tasks.filter(task => task.split === \"frozen_eval\").length,\n },\n };\n}\n\n/** Verify the dependency graph before creating user-owned configuration.\n * A matching outer hash alone cannot authorize substituted private graders. */\nexport function validateResolvedModelStarter(value: unknown): ResolvedModelStarter {\n assertBoundedTaskJson(value, 16 * 1024 * 1024);\n const resolved = ResolvedModelStarterSchema.parse(value);\n const { starter, taskset, taskDefinition, rewardBinding, rewards, assets } = resolved;\n const authoring = taskset.metadata.starterAuthoring;\n if (authoring && typeof authoring === \"object\" && !Array.isArray(authoring) && \"privacyReview\" in authoring) {\n const review = ModelStarterPrivacyReviewSchema.parse(authoring.privacyReview);\n if (review.reviewedContentHash !== modelStarterPrivacyContentHash(resolved)) throw new Error(\"Starter privacy review differs from the published contents.\");\n }\n const resources = [starter, taskset, taskDefinition, rewardBinding, ...rewards, ...assets];\n for (const resource of resources) {\n const { contentHash, ...content } = resource;\n if (sealLearningContent(content).contentHash !== contentHash) throw new Error(`Starter resource integrity failed: ${resource.id}.`);\n }\n assertTasksetRelease(taskset);\n validateModelStarterExecution(resolved.execution, taskset, assets);\n function exact(expected: z.infer<typeof RefSchema>, resource: { id: string; revision: number; contentHash: string }) {\n if (!sameLearningRef(expected, learningRef(resource))) throw new Error(`Starter dependency mismatch: ${expected.id}.`);\n }\n exact(starter.taskset, taskset);\n exact(starter.taskDefinition, taskDefinition);\n exact(starter.rewardBinding, rewardBinding);\n exact(taskDefinition.rewardBinding, rewardBinding);\n if (rewardBinding.recipeRef) throw new Error(\"Starter binding recipes must be resolved into a standalone binding before publication.\");\n const { policy, environment, environmentRelease, tools, capabilities, verifierSetRelease } = taskset;\n const execution = { policy, environment, ...(environmentRelease ? { environmentRelease } : {}), tools, capabilities, ...(verifierSetRelease ? { verifierSetRelease } : {}) };\n if (sealLearningContent(execution).contentHash !== sealLearningContent(taskDefinition.execution).contentHash) throw new Error(\"Starter execution context differs from its task format.\");\n if (sealLearningContent({ graders: taskset.graders }).contentHash !== sealLearningContent({ graders: compileBoundGraders(rewardBinding, rewards) }).contentHash) throw new Error(\"Starter executable graders differ from its Reward binding.\");\n for (const [references, values] of [[starter.rewards, rewards], [starter.assets, assets]] as const) {\n if (references.length !== values.length || new Set(values.map(resource => resource.id)).size !== values.length) throw new Error(\"Starter dependency inventory mismatch.\");\n for (const ref of references) {\n const resource = values.find(value => value.id === ref.id);\n if (!resource) throw new Error(`Starter dependency is missing: ${ref.id}.`);\n exact(ref, resource);\n }\n }\n for (const source of rewardBinding.sources) {\n const reward = rewards.find(reward => reward.id === source.reward.id);\n if (!reward) throw new Error(`Starter Reward is missing: ${source.reward.id}.`);\n exact(source.reward, reward);\n }\n for (const reward of rewards) {\n const implementation = reward.implementation;\n const references = [...reward.assets,\n ...(\"verifierRef\" in implementation ? [implementation.verifierRef] : []),\n ...(\"rubricRef\" in implementation ? [implementation.rubricRef] : []),\n ...(\"inputContract\" in implementation ? [implementation.inputContract] : []),\n ];\n for (const ref of references) {\n const asset = assets.find(asset => asset.id === ref.id);\n if (!asset || sealLearningContent(asset.asset).contentHash !== sealLearningContent(ref).contentHash) throw new Error(`Starter Reward source is missing or changed: ${ref.id}.`);\n if (ref.visibility === \"policy\") throw new Error(`Starter Reward source must remain private to its evaluator: ${ref.id}.`);\n }\n }\n if (new Set(taskset.tasks.map(task => task.id)).size !== taskset.tasks.length) throw new Error(\"Starter task identities must be unique.\");\n const inputSplits = new Map<string, string>();\n for (const task of taskset.tasks) {\n if (task.policyVisibleContext.instructions !== taskDefinition.instructions) throw new Error(`Starter task does not carry its declared model instructions: ${task.id}.`);\n const inputHash = sealLearningContent({ input: task.input, context: task.policyVisibleContext }).contentHash;\n const priorSplit = inputSplits.get(inputHash);\n if (priorSplit && priorSplit !== task.split) throw new Error(\"Starter policy input appears in multiple splits.\");\n inputSplits.set(inputHash, task.split);\n if (!validateTaskValue(taskDefinition.inputSchema, task.input).valid) throw new Error(`Starter task input does not match its format: ${task.id}.`);\n if (task.expectedOutput !== null && !validateTaskValue(taskDefinition.outputSchema, task.expectedOutput).valid) throw new Error(`Starter expected output does not match its format: ${task.id}.`);\n }\n for (const id of starter.previewTaskIds) {\n const task = taskset.tasks.find(task => task.id === id);\n if (!task || task.split === \"frozen_eval\") throw new Error(`Starter preview task is unavailable: ${id}.`);\n }\n return resolved;\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["reward", "task", "value", "asset"]
|
|
7
|
-
}
|