openpond-sdk 0.12.1 → 0.12.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (107) hide show
  1. package/LEARNING.md +16 -0
  2. package/dist/advanced-refiner-evaluations.js +5 -5
  3. package/dist/candidate-evaluations.js +4 -4
  4. package/dist/{chunk-VSRTJDVB.js → chunk-36WJTS5V.js} +3 -3
  5. package/dist/{chunk-O5ARJVT5.js → chunk-77N3QEIL.js} +2 -2
  6. package/dist/{chunk-WNH4DOEC.js → chunk-BFR3VC25.js} +16 -285
  7. package/dist/chunk-BFR3VC25.js.map +7 -0
  8. package/dist/{chunk-DBRRQASP.js → chunk-BSK3VLM3.js} +2 -2
  9. package/dist/{chunk-B7VYE7YQ.js → chunk-CTVKI3BV.js} +2 -2
  10. package/dist/{chunk-7AZDNZP6.js → chunk-CWXM57QR.js} +350 -87
  11. package/dist/chunk-CWXM57QR.js.map +7 -0
  12. package/dist/chunk-FY7NHCEH.js +255 -0
  13. package/dist/chunk-FY7NHCEH.js.map +7 -0
  14. package/dist/{chunk-YSKUXQ2N.js → chunk-G53MA5XX.js} +3 -3
  15. package/dist/{chunk-AV5JV26B.js → chunk-G6Y6CQYV.js} +2 -2
  16. package/dist/{chunk-ENLQCKY6.js → chunk-K5WRVSOL.js} +5 -5
  17. package/dist/{chunk-OEPYLZXK.js → chunk-MLPPSCDQ.js} +2 -2
  18. package/dist/{chunk-7GYXC2AI.js → chunk-QEIT5VXJ.js} +2 -2
  19. package/dist/{chunk-L5PQPAU6.js → chunk-QTJQIHDZ.js} +5 -2
  20. package/dist/{chunk-L5PQPAU6.js.map → chunk-QTJQIHDZ.js.map} +2 -2
  21. package/dist/{chunk-YVFERCUC.js → chunk-TMUAKJWX.js} +71 -2
  22. package/dist/chunk-TMUAKJWX.js.map +7 -0
  23. package/dist/{chunk-D4WTE6ZA.js → chunk-TSMGMA6R.js} +2 -2
  24. package/dist/{chunk-VOL3WES2.js → chunk-UPS52OPZ.js} +10 -165
  25. package/dist/chunk-UPS52OPZ.js.map +7 -0
  26. package/dist/{chunk-MLFKQ7E7.js → chunk-VY5AFE7A.js} +2 -2
  27. package/dist/{chunk-WVISXXIL.js → chunk-XYQD4LDI.js} +2 -2
  28. package/dist/{chunk-DG5CRENU.js → chunk-YUKV7RCD.js} +2 -2
  29. package/dist/{chunk-7WUJBFCH.js → chunk-ZJ3H3VS7.js} +18 -1
  30. package/dist/chunk-ZJ3H3VS7.js.map +7 -0
  31. package/dist/connected-evidence.js +10 -10
  32. package/dist/dataset-workspaces.js +51 -14
  33. package/dist/dataset-workspaces.js.map +3 -3
  34. package/dist/experiment-evaluation-schedules.js +13 -13
  35. package/dist/experiment-improvements.js +5 -5
  36. package/dist/experiments.js +17 -13
  37. package/dist/index.js +19 -19
  38. package/dist/model-starter-catalog.js +5 -5
  39. package/dist/model-starters.js +5 -5
  40. package/dist/model-taskset-runs.js +1 -1
  41. package/dist/post-training.js +4 -4
  42. package/dist/taskset-drafts.js +16 -16
  43. package/dist/taskset-packages.js +14 -14
  44. package/dist/training-bundle.js +161 -25
  45. package/dist/training-bundle.js.map +4 -4
  46. package/dist/training.js +11 -5
  47. package/dist/types/packages/sdk/src/candidate-evaluation-client.d.ts +9 -0
  48. package/dist/types/packages/sdk/src/candidate-evaluation-client.d.ts.map +1 -1
  49. package/dist/types/packages/sdk/src/candidate-evaluations.d.ts +6 -0
  50. package/dist/types/packages/sdk/src/candidate-evaluations.d.ts.map +1 -1
  51. package/dist/types/packages/sdk/src/dataset-preparation-client.d.ts +45 -0
  52. package/dist/types/packages/sdk/src/dataset-preparation-client.d.ts.map +1 -1
  53. package/dist/types/packages/sdk/src/dataset-preparation-contracts.d.ts +56 -0
  54. package/dist/types/packages/sdk/src/dataset-preparation-contracts.d.ts.map +1 -1
  55. package/dist/types/packages/sdk/src/dataset-preparation-source-coverage.d.ts +31 -0
  56. package/dist/types/packages/sdk/src/dataset-preparation-source-coverage.d.ts.map +1 -0
  57. package/dist/types/packages/sdk/src/dataset-workspaces.d.ts +1 -0
  58. package/dist/types/packages/sdk/src/dataset-workspaces.d.ts.map +1 -1
  59. package/dist/types/packages/sdk/src/experiment-client.d.ts +33 -0
  60. package/dist/types/packages/sdk/src/experiment-client.d.ts.map +1 -1
  61. package/dist/types/packages/sdk/src/experiment-contracts.d.ts +12 -0
  62. package/dist/types/packages/sdk/src/experiment-contracts.d.ts.map +1 -1
  63. package/dist/types/packages/sdk/src/experiment-evaluation-schedules.d.ts +21 -0
  64. package/dist/types/packages/sdk/src/experiment-evaluation-schedules.d.ts.map +1 -1
  65. package/dist/types/packages/sdk/src/experiment-run-contracts.d.ts +3 -0
  66. package/dist/types/packages/sdk/src/experiment-run-contracts.d.ts.map +1 -1
  67. package/dist/types/packages/sdk/src/experiment-run-details.d.ts +15 -0
  68. package/dist/types/packages/sdk/src/experiment-run-details.d.ts.map +1 -1
  69. package/dist/types/packages/sdk/src/harness-experiment-policy.d.ts +17 -0
  70. package/dist/types/packages/sdk/src/harness-experiment-policy.d.ts.map +1 -1
  71. package/dist/types/packages/sdk/src/managed-training-preparation.d.ts +3 -1
  72. package/dist/types/packages/sdk/src/managed-training-preparation.d.ts.map +1 -1
  73. package/dist/types/packages/sdk/src/model-taskset-runs-contracts.d.ts +12 -0
  74. package/dist/types/packages/sdk/src/model-taskset-runs-contracts.d.ts.map +1 -1
  75. package/dist/types/packages/sdk/src/model-taskset-runs.d.ts +12 -0
  76. package/dist/types/packages/sdk/src/model-taskset-runs.d.ts.map +1 -1
  77. package/dist/types/packages/sdk/src/post-training.d.ts +15 -0
  78. package/dist/types/packages/sdk/src/post-training.d.ts.map +1 -1
  79. package/dist/types/packages/sdk/src/training-bundle-contracts.d.ts +4 -0
  80. package/dist/types/packages/sdk/src/training-bundle-contracts.d.ts.map +1 -1
  81. package/dist/types/packages/sdk/src/training-bundle.d.ts +4 -0
  82. package/dist/types/packages/sdk/src/training-bundle.d.ts.map +1 -1
  83. package/dist/types/packages/sdk/src/training-qualification-preparation.d.ts +364 -0
  84. package/dist/types/packages/sdk/src/training-qualification-preparation.d.ts.map +1 -0
  85. package/dist/types/packages/sdk/src/training.d.ts +161 -0
  86. package/dist/types/packages/sdk/src/training.d.ts.map +1 -1
  87. package/package.json +1 -1
  88. package/dist/chunk-7AZDNZP6.js.map +0 -7
  89. package/dist/chunk-7WUJBFCH.js.map +0 -7
  90. package/dist/chunk-PGBFI5HC.js +0 -98
  91. package/dist/chunk-PGBFI5HC.js.map +0 -7
  92. package/dist/chunk-VOL3WES2.js.map +0 -7
  93. package/dist/chunk-WNH4DOEC.js.map +0 -7
  94. package/dist/chunk-YVFERCUC.js.map +0 -7
  95. /package/dist/{chunk-VSRTJDVB.js.map → chunk-36WJTS5V.js.map} +0 -0
  96. /package/dist/{chunk-O5ARJVT5.js.map → chunk-77N3QEIL.js.map} +0 -0
  97. /package/dist/{chunk-DBRRQASP.js.map → chunk-BSK3VLM3.js.map} +0 -0
  98. /package/dist/{chunk-B7VYE7YQ.js.map → chunk-CTVKI3BV.js.map} +0 -0
  99. /package/dist/{chunk-YSKUXQ2N.js.map → chunk-G53MA5XX.js.map} +0 -0
  100. /package/dist/{chunk-AV5JV26B.js.map → chunk-G6Y6CQYV.js.map} +0 -0
  101. /package/dist/{chunk-ENLQCKY6.js.map → chunk-K5WRVSOL.js.map} +0 -0
  102. /package/dist/{chunk-OEPYLZXK.js.map → chunk-MLPPSCDQ.js.map} +0 -0
  103. /package/dist/{chunk-7GYXC2AI.js.map → chunk-QEIT5VXJ.js.map} +0 -0
  104. /package/dist/{chunk-D4WTE6ZA.js.map → chunk-TSMGMA6R.js.map} +0 -0
  105. /package/dist/{chunk-MLFKQ7E7.js.map → chunk-VY5AFE7A.js.map} +0 -0
  106. /package/dist/{chunk-WVISXXIL.js.map → chunk-XYQD4LDI.js.map} +0 -0
  107. /package/dist/{chunk-DG5CRENU.js.map → chunk-YUKV7RCD.js.map} +0 -0
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 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, validateHarnessPolicySourcePackage, validateHarnessSourcePackage, type HarnessPolicySourcePackage, 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 | HarnessPolicySourcePackage | 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 ? input.harnessSource.schemaVersion === \"openpond.harnessPolicySourcePackage.v1\"\n ? validateHarnessPolicySourcePackage(input.harnessSource, releasedHarness)\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.schemaVersion === \"openpond.harnessSourcePackage.v1\"\n && harnessSource.harnessRelease.files.some(file => file.visibility !== \"policy\")))) {\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 = [...rewardExecution.rewards.flatMap(reward => reward.assets),\n ...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 || new Set(verifierAssets.map(asset => asset.asset.path)).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 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 { 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 // Online reward training grades fresh rollouts. A task-only reviewed batch\n // has no prior response receipt, so do not invent a calibration fixture.\n if (!fixtures.length && input.batch.purpose !== \"reward_training\") 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 = grader.verifierRef.path;\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)!, stagingPath: asset.path, 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 { TrainingHandoffOriginSchema, type TrainingHandoffOrigin } from \"./post-training.js\";\nimport { z } from \"zod\";\n\nimport type { ModelProject } from \"./model-projects.js\";\nimport {\n HarnessRunManifestSchema,\n ResolvedTrainingBundleManifestSchema,\n type HarnessRunManifest,\n type ResolvedTrainingBundleManifest,\n} from \"./training-bundle-contracts.js\";\nimport {\n TRAINING_EVALUATION_SOURCE_PATH,\n TrainingEvaluationSourceSchema,\n trainingEvaluationSourceRef,\n type TrainingEvaluationSource,\n} from \"./training-evaluation-source.js\";\nimport {\n parseAndVerifyTrainingInputArtifactUpload,\n parseAndVerifyTrainingJobSubmission,\n trainingInputArtifactUploadHash,\n trainingJobSubmissionHash,\n type TrainingJobSubmission,\n} from \"./training.js\";\n\ntype PolicyJob = Extract<TrainingJobSubmission[\"job\"], { kind: \"policy_optimize\" }>;\nexport type TrainingPreparationFile = TrainingEvaluationSource[\"assets\"][number];\n\nexport interface ManagedTrainingPreparationInput {\n origin?: TrainingHandoffOrigin;\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<\n TrainingJobSubmission[\"approval\"],\n \"approvalHash\" | \"maximumSpendUsd\" | \"retentionDays\" | \"region\"\n >;\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 (\n contentHash(manifestContent) !== manifestHash ||\n contentHash(bundleContent) !== bundleHash ||\n manifest.resolvedBundleHash !== bundleHash ||\n contentHash(manifest.harnessRelease) !== contentHash(bundle.harnessRelease) ||\n contentHash(manifest.datasetRelease) !== contentHash(bundle.datasetRelease) ||\n contentHash(manifest.evidenceSets) !==\n contentHash(bundle.evidenceSetRelease ? [bundle.evidenceSetRelease] : [])\n ) {\n throw new Error(\"The managed training manifest or resolved bundle changed.\");\n }\n if (\n !project.hosted ||\n project.hosted.syncedSourceRevision !== project.revision ||\n project.hosted.portableProjectId !== project.id\n )\n throw new Error(\"Sync the exact Model Project revision before preparing managed training.\");\n const baseModel = project.trainingSetup.baseModel;\n if (\n !baseModel ||\n baseModel.modelId !== manifest.model.source ||\n baseModel.revision !== manifest.model.revision ||\n baseModel.tokenizerRevision !== manifest.model.tokenizerRevision ||\n baseModel.chatTemplateHash !== manifest.model.chatTemplateHash\n ) {\n throw new Error(\"The synced Model Project base Model does not match the Run manifest.\");\n }\n if (\n recipe.method !== \"grpo\" ||\n contentHash(recipe) !== manifest.recipe.configHash ||\n approval.approvalHash !== manifest.approval.approvalHash ||\n approval.maximumSpendUsd !== manifest.approval.maximumSpendUsd\n ) {\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)\n 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 (\n !evaluationFile ||\n contentHash(JSON.parse(Buffer.from(evaluationFile.content, \"base64\").toString(\"utf8\"))) !==\n contentHash(evaluationSource)\n ) {\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 ...(input.origin ? { origin: TrainingHandoffOriginSchema.parse(input.origin) } : {}),\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: {\n id: project.hosted.projectId,\n portableProjectId: project.hosted.portableProjectId,\n },\n manifest,\n sourceTaskset: taskset,\n modelImprovementQualification: input.modelImprovementQualification ?? null,\n recipe,\n resolvedBundle: { manifest: bundle, files },\n validationTasks: evaluationSource.tasks,\n 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 },\n payload,\n };\n const artifact = await parseAndVerifyTrainingInputArtifactUpload({\n ...artifactContent,\n contentHash: await trainingInputArtifactUploadHash(artifactContent),\n });\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 ...(input.origin ? { origin: TrainingHandoffOriginSchema.parse(input.origin) } : {}),\n modelProject: {\n id: project.hosted.projectId,\n portableProjectId: project.hosted.portableProjectId,\n revision: project.revision,\n contentHash: project.hosted.etag,\n },\n harnessRunManifest: artifactContent.sourceManifest,\n harnessRelease: manifest.harnessRelease,\n taskset,\n tasksetRelease: { id: taskset.id, contentHash: taskset.contentHash },\n dataset: bundle.datasetRelease,\n evaluation,\n evidenceSets: bundle.evidenceSetRelease ? [bundle.evidenceSetRelease] : [],\n },\n job: {\n kind: \"policy_optimize\",\n baseModel,\n recipe,\n rewardSource: input.rewardSource,\n resumeFrom: input.resumeFrom,\n },\n requestedCapabilities: [\n { id: \"managed_rl.policy.grpo\", version: \"1\", required: true },\n {\n id: `managed_rl.rollouts.${manifest.runtimeTarget.placement}`,\n version: \"1\",\n required: true,\n },\n ...(project.trainingSetup.managedGpuRequirement === \"h100_hbm3\"\n ? [{ id: \"managed_rl.gpu.h100_hbm3\", version: \"1\", required: true }]\n : []),\n ],\n placementObjective: project.trainingSetup.managedGpuPlacementObjective,\n budget: {\n maximumSpendUsd: approval.maximumSpendUsd,\n maximumWallSeconds: Math.ceil(limits.wallTimeMs / 1_000),\n },\n approval: { ...approval, approvedAt: manifest.approval.approvedAt, exportApproved: true },\n };\n const submission = await parseAndVerifyTrainingJobSubmission({\n ...jobContent,\n contentHash: await trainingJobSubmissionHash(jobContent),\n });\n return { artifact, submission };\n}\n\nfunction verifyFiles(bundle: ResolvedTrainingBundleManifest, files: TrainingPreparationFile[]) {\n if (\n files.length !== bundle.files.length ||\n new Set(files.map((file) => file.path)).size !== files.length\n )\n 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 (\n !file ||\n file.path.includes(\"\\\\\") ||\n file.path.includes(\"\\0\") ||\n file.path.split(\"/\").some((part) => !part || part === \".\" || part === \"..\") ||\n file.path === \"bundle-manifest.json\" ||\n file.encoding !== \"base64\"\n )\n throw new Error(\"The managed bundle contains an invalid file.\");\n const bytes = Buffer.from(file.content, \"base64\");\n if (\n bytes.toString(\"base64\") !== file.content ||\n file.sha256 !== expected.sha256 ||\n file.sizeBytes !== expected.sizeBytes ||\n bytes.byteLength !== expected.sizeBytes ||\n sha256(bytes) !== expected.sha256\n )\n 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
- "names": ["verifyLearningTextAsset", "verifyLearningTextAsset", "asset", "bytes", "asset", "verifyLearningTextAsset", "ref", "bytes", "z", "z", "bytes", "z", "z", "dataset", "optimizer", "reward", "bytes", "asset", "verifyLearningTextAsset"]
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", "../src/training-qualification-preparation.ts"],
4
+ "sourcesContent": ["import { validateTasksetPackage, type TasksetPackage } from \"./taskset-package-contracts.js\";\nimport { projectPortableTaskRecord } from \"./taskset-authored-portable-release.js\";\nimport { canonicalJson, contentHash, sha256, ImmutableReleaseRefSchema, HarnessSourceSelectionSchema, validateHarnessPolicySourcePackage, validateHarnessSourcePackage, type HarnessPolicySourcePackage, 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 executionMode?: \"qualification\";\n qualificationSource?: TasksetPackage;\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 | HarnessPolicySourcePackage | 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 qualification = input.executionMode === \"qualification\";\n if (qualification && input.evaluationSource) throw new Error(\"Qualification does not consume an independent evaluation source.\");\n const qualificationSource = qualification ? validateTasksetPackage(input.qualificationSource) : null;\n if (!qualification && input.qualificationSource) throw new Error(\"Qualification sources cannot be used for training.\");\n if (qualificationSource && (qualificationSource.modelResources || qualificationSource.learningResources\n || contentHash(taskset.tasks.map(projectPortableTaskRecord)) !== contentHash(qualificationSource.taskset.tasks)\n || releasedRefHash(input.tasksetRelease) !== releasedRefHash(qualificationSource.taskset))) {\n throw new Error(\"Qualification must preserve its ordinary source release and complete task population.\");\n }\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 !== (qualification ? tasksetRelease.id : taskset.id) ||\n setup.tasksetRef.contentHash !== (qualification ? tasksetRelease.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 (qualificationSource) addJsonAsset(assets, \"qualification-source.json\", qualificationSource);\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 (!qualification && setup.evaluationTasksetRef) {\n throw new Error(\"The prepared Model requires its pinned evaluation source bytes.\");\n }\n const harnessSource = input.harnessSource\n ? input.harnessSource.schemaVersion === \"openpond.harnessPolicySourcePackage.v1\"\n ? validateHarnessPolicySourcePackage(input.harnessSource, releasedHarness)\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.schemaVersion === \"openpond.harnessSourcePackage.v1\"\n && harnessSource.harnessRelease.files.some(file => file.visibility !== \"policy\")))) {\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 (qualificationSource && (!rewardExecution\n || contentHash(compileBoundGraders(rewardExecution.binding, rewardExecution.rewards)) !== contentHash(qualificationSource.taskset.graders)\n || qualificationSource.taskset.graders.some(grader => grader.kind === \"model_judge\" || grader.kind === \"human\"))) {\n throw new Error(\"Qualification requires the source package's exact deterministic graders.\");\n }\n if (rewardExecution) {\n const verifierAssets = input.verifierAssets ?? [];\n const references = [...rewardExecution.rewards.flatMap(reward => reward.assets),\n ...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 || new Set(verifierAssets.map(asset => asset.asset.path)).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: qualification ? { ...taskset.environment, metadata: { ...taskset.environment.metadata, policySystemPrompt: taskset.objective } } : 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 = qualification ? taskset.tasks : taskset.tasks.filter((task) => task.split === \"train\");\n if (trainTasks.length > 0) {\n addJsonAsset(assets, qualification ? \"dataset/qualification.json\" : \"dataset/train.json\", {\n schemaVersion: qualification ? \"openpond.qualificationDataset.v1\" : \"openpond.datasetSplit.v1\",\n ...(qualification ? {} : { 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 ...(qualification ? { executionMode: \"qualification\", tasks: trainTasks } : { 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 ...(qualification ? { executionMode: \"qualification\" } : {}),\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 ...(qualification ? { executionMode: \"qualification\" } : {}),\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 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\nexport { prepareOrdinaryTasksetQualification, type OrdinaryTasksetQualificationInput } from \"./training-qualification-preparation.js\";\n\nfunction releasedRefHash(value: { id: string; contentHash: string }) { return contentHash({ id: value.id, contentHash: value.contentHash }); }\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 executionMode: z.literal(\"qualification\").optional(),\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 executionMode: z.literal(\"qualification\").optional(),\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 { 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 // Online reward training grades fresh rollouts. A task-only reviewed batch\n // has no prior response receipt, so do not invent a calibration fixture.\n if (!fixtures.length && input.batch.purpose !== \"reward_training\") 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 = grader.verifierRef.path;\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)!, stagingPath: asset.path, 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 { TrainingHandoffOriginSchema, type TrainingHandoffOrigin } from \"./post-training.js\";\nimport { z } from \"zod\";\n\nimport type { ModelProject } from \"./model-projects.js\";\nimport {\n HarnessRunManifestSchema,\n ResolvedTrainingBundleManifestSchema,\n type HarnessRunManifest,\n type ResolvedTrainingBundleManifest,\n} from \"./training-bundle-contracts.js\";\nimport {\n TRAINING_EVALUATION_SOURCE_PATH,\n TrainingEvaluationSourceSchema,\n trainingEvaluationSourceRef,\n type TrainingEvaluationSource,\n} from \"./training-evaluation-source.js\";\nimport {\n parseAndVerifyTrainingInputArtifactUpload,\n parseAndVerifyTrainingJobSubmission,\n trainingInputArtifactUploadHash,\n trainingJobSubmissionHash,\n type TrainingJobSubmission,\n} from \"./training.js\";\n\ntype PolicyJob = Extract<TrainingJobSubmission[\"job\"], { kind: \"policy_optimize\" }>;\nexport type TrainingPreparationFile = TrainingEvaluationSource[\"assets\"][number];\n\nexport interface ManagedTrainingPreparationInput {\n origin?: TrainingHandoffOrigin;\n executionMode?: \"qualification\";\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<\n TrainingJobSubmission[\"approval\"],\n \"approvalHash\" | \"maximumSpendUsd\" | \"retentionDays\" | \"region\"\n >;\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 qualification = input.executionMode === \"qualification\";\n if (manifest.executionMode !== input.executionMode || bundle.executionMode !== input.executionMode) {\n throw new Error(\"Managed submission execution mode differs from its immutable bundle.\");\n }\n if (qualification && (input.evaluationSource || input.resumeFrom || input.rewardSource.kind !== \"deterministic\")) {\n throw new Error(\"Qualification requires the original learner, deterministic rewards, and no evaluation source.\");\n }\n const { contentHash: manifestHash, ...manifestContent } = manifest;\n const { contentHash: bundleHash, ...bundleContent } = bundle;\n if (\n contentHash(manifestContent) !== manifestHash ||\n contentHash(bundleContent) !== bundleHash ||\n manifest.resolvedBundleHash !== bundleHash ||\n contentHash(manifest.harnessRelease) !== contentHash(bundle.harnessRelease) ||\n contentHash(manifest.datasetRelease) !== contentHash(bundle.datasetRelease) ||\n contentHash(manifest.evidenceSets) !==\n contentHash(bundle.evidenceSetRelease ? [bundle.evidenceSetRelease] : [])\n ) {\n throw new Error(\"The managed training manifest or resolved bundle changed.\");\n }\n if (\n !project.hosted ||\n project.hosted.syncedSourceRevision !== project.revision ||\n project.hosted.portableProjectId !== project.id\n )\n throw new Error(\"Sync the exact Model Project revision before preparing managed training.\");\n const baseModel = project.trainingSetup.baseModel;\n if (\n !baseModel ||\n baseModel.modelId !== manifest.model.source ||\n baseModel.revision !== manifest.model.revision ||\n baseModel.tokenizerRevision !== manifest.model.tokenizerRevision ||\n baseModel.chatTemplateHash !== manifest.model.chatTemplateHash\n ) {\n throw new Error(\"The synced Model Project base Model does not match the Run manifest.\");\n }\n if (\n recipe.method !== \"grpo\" ||\n contentHash(recipe) !== manifest.recipe.configHash ||\n approval.approvalHash !== manifest.approval.approvalHash ||\n approval.maximumSpendUsd !== manifest.approval.maximumSpendUsd\n ) {\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)\n z.string().trim().min(16).max(191).parse(input.idempotencyKey);\n const files = verifyFiles(bundle, input.files);\n const evaluationSource = qualification ? null : TrainingEvaluationSourceSchema.parse(input.evaluationSource);\n const evaluationFile = files.find((file) => file.path === TRAINING_EVALUATION_SOURCE_PATH);\n if (\n evaluationSource && (!evaluationFile ||\n contentHash(JSON.parse(Buffer.from(evaluationFile.content, \"base64\").toString(\"utf8\"))) !==\n contentHash(evaluationSource))\n ) {\n throw new Error(\"The evaluation source differs from the immutable training bundle.\");\n }\n if (qualification && (evaluationFile || files.some(file => file.path === \"dataset/train.json\") || !files.some(file => file.path === \"dataset/qualification.json\") || !files.some(file => file.path === \"qualification-source.json\"))) {\n throw new Error(\"Qualification requires its dedicated dataset and no training/evaluation datasets.\");\n }\n if (!qualification && files.some(file => file.path === \"dataset/qualification.json\" || file.path === \"qualification-source.json\")) {\n throw new Error(\"Qualification datasets cannot be prepared as training.\");\n }\n const evaluation = evaluationSource ? await trainingEvaluationSourceRef(evaluationSource) : null;\n const payload = {\n schemaVersion: \"openpond.managedRlPortableSubmission.v1\" as const,\n ...(qualification ? { executionMode: \"qualification\" as const } : {}),\n ...(input.origin ? { origin: TrainingHandoffOriginSchema.parse(input.origin) } : {}),\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: {\n id: project.hosted.projectId,\n portableProjectId: project.hosted.portableProjectId,\n },\n manifest,\n sourceTaskset: taskset,\n modelImprovementQualification: input.modelImprovementQualification ?? null,\n recipe,\n resolvedBundle: { manifest: bundle, files },\n validationTasks: evaluationSource?.tasks ?? [],\n 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 },\n payload,\n };\n const artifact = await parseAndVerifyTrainingInputArtifactUpload({\n ...artifactContent,\n contentHash: await trainingInputArtifactUploadHash(artifactContent),\n });\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 ...(input.origin ? { origin: TrainingHandoffOriginSchema.parse(input.origin) } : {}),\n modelProject: {\n id: project.hosted.projectId,\n portableProjectId: project.hosted.portableProjectId,\n revision: project.revision,\n contentHash: project.hosted.etag,\n },\n harnessRunManifest: artifactContent.sourceManifest,\n harnessRelease: manifest.harnessRelease,\n taskset,\n tasksetRelease: { id: taskset.id, contentHash: taskset.contentHash },\n dataset: bundle.datasetRelease,\n ...(evaluation ? { evaluation } : {}),\n evidenceSets: bundle.evidenceSetRelease ? [bundle.evidenceSetRelease] : [],\n },\n job: {\n kind: \"policy_optimize\",\n ...(qualification ? { executionMode: \"qualification\" as const } : {}),\n baseModel,\n recipe,\n rewardSource: input.rewardSource,\n resumeFrom: input.resumeFrom,\n },\n requestedCapabilities: [\n { id: qualification ? \"managed_rl.policy.qualification\" : \"managed_rl.policy.grpo\", version: \"1\", required: true },\n {\n id: `managed_rl.rollouts.${manifest.runtimeTarget.placement}`,\n version: \"1\",\n required: true,\n },\n ...(project.trainingSetup.managedGpuRequirement === \"h100_hbm3\"\n ? [{ id: \"managed_rl.gpu.h100_hbm3\", version: \"1\", required: true }]\n : []),\n ],\n placementObjective: project.trainingSetup.managedGpuPlacementObjective,\n budget: {\n maximumSpendUsd: approval.maximumSpendUsd,\n maximumWallSeconds: Math.ceil(limits.wallTimeMs / 1_000),\n },\n approval: { ...approval, approvedAt: manifest.approval.approvedAt, exportApproved: true },\n };\n const submission = await parseAndVerifyTrainingJobSubmission({\n ...jobContent,\n contentHash: await trainingJobSubmissionHash(jobContent),\n });\n return { artifact, submission };\n}\n\nfunction verifyFiles(bundle: ResolvedTrainingBundleManifest, files: TrainingPreparationFile[]) {\n if (\n files.length !== bundle.files.length ||\n new Set(files.map((file) => file.path)).size !== files.length\n )\n 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 (\n !file ||\n file.path.includes(\"\\\\\") ||\n file.path.includes(\"\\0\") ||\n file.path.split(\"/\").some((part) => !part || part === \".\" || part === \"..\") ||\n file.path === \"bundle-manifest.json\" ||\n file.encoding !== \"base64\"\n )\n throw new Error(\"The managed bundle contains an invalid file.\");\n const bytes = Buffer.from(file.content, \"base64\");\n if (\n bytes.toString(\"base64\") !== file.content ||\n file.sha256 !== expected.sha256 ||\n file.sizeBytes !== expected.sizeBytes ||\n bytes.byteLength !== expected.sizeBytes ||\n sha256(bytes) !== expected.sha256\n )\n 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", "import { contentHash } from \"@openpond/harness\";\nimport { createRewardBinding, createRewardRelease, compileBoundGraders } from \"@openpond/evals/rewards\";\nimport { LearningTextAssetSchema, sealLearningContent } from \"@openpond/evals/learning\";\nimport { validateTasksetPackage, decodeTasksetPackageFile, type TasksetPackage } from \"./taskset-package-contracts.js\";\nimport { prepareImportedTasksetPackage } from \"./taskset-package-projection.js\";\nimport { buildTasksetTrainingBundle } from \"./training-bundle.js\";\nimport { prepareManagedTrainingSubmission, type ManagedTrainingPreparationInput } from \"./managed-training-preparation.js\";\nimport { deterministicTrainingRewardSource } from \"./training-grading-plan.js\";\n\nexport type OrdinaryTasksetQualificationInput = Omit<Parameters<typeof buildTasksetTrainingBundle>[0],\n \"taskset\" | \"executionMode\" | \"qualificationSource\" | \"tasksetRelease\" | \"rewardExecution\" | \"verifierAssets\" | \"tasksetAssetBytes\" | \"evaluationSource\" | \"approval\"> & {\n package: TasksetPackage;\n approval: ManagedTrainingPreparationInput[\"approval\"] & { approvedAt: string };\n idempotencyKey?: string;\n};\n\n/** Prepare a no-update original-learner run from the exact published ordinary\n * package. Splits, families, task IDs and private grader bytes are preserved;\n * this function does not create train/held-out data or approve any source. */\nexport async function prepareOrdinaryTasksetQualification(input: OrdinaryTasksetQualificationInput) {\n const source = validateTasksetPackage(input.package);\n if (source.modelResources || source.learningResources || !source.taskset.tasks.length) {\n throw new Error(\"Qualification requires a nonempty ordinary Taskset package.\");\n }\n if (source.taskset.tasks.some(task => task.privilegedContextRef !== null || task.artifactRefs.some(asset => asset.visibility !== \"policy\"))) {\n throw new Error(\"Qualification runtime requires private targets in expectedOutput and policy-only task assets.\");\n }\n const rewards = source.taskset.graders.map(grader => {\n const { id, version, weight: _weight, hardGate: _gate, rewardEligible: _eligible, privileged: _private, taskIds: _tasks, ...implementation } = grader;\n const revision = Number(version);\n if (!Number.isSafeInteger(revision) || revision < 1 || String(revision) !== version\n || implementation.kind === \"model_judge\" || implementation.kind === \"human\") {\n throw new Error(\"Qualification requires deterministic graders with canonical integer versions.\");\n }\n return createRewardRelease({ schemaVersion: \"openpond.rewardRelease.v1\", id: `qualification-${contentHash({ source: source.contentHash, id }).slice(0, 40)}`,\n revision, name: id, description: \"Exact ordinary package grader for no-update qualification.\", implementation,\n rawScore: { minimum: 0, maximum: 1 }, assets: implementation.kind === \"custom_verifier\" ? [implementation.verifierRef] : [] });\n });\n const binding = createRewardBinding({ schemaVersion: \"openpond.rewardBinding.v1\", id: `qualification-${source.contentHash.slice(0, 40)}`, revision: 1,\n sources: source.taskset.graders.map((grader, index) => ({ graderId: grader.id, ...(grader.taskIds ? { taskIds: grader.taskIds } : {}),\n reward: { id: rewards[index]!.id, revision: rewards[index]!.revision, contentHash: rewards[index]!.contentHash },\n role: grader.rewardEligible ? \"training\" : \"evaluation\", normalization: { kind: \"identity\" }, weight: grader.weight,\n required: true, hardGate: grader.hardGate, privileged: grader.privileged, fixtureRefs: [] })),\n aggregation: \"weighted_mean\", unscorable: \"exclude_optional_require_all_required\" }, rewards);\n if (!binding.sources.some(item => item.role === \"training\" && item.weight > 0)\n || contentHash(compileBoundGraders(binding, rewards)) !== contentHash(source.taskset.graders)) {\n throw new Error(\"Qualification must preserve an executable positively weighted source grader set.\");\n }\n const verifierIds = new Set(rewards.flatMap(reward => reward.assets.map(asset => asset.id)));\n const verifierAssets = source.files.filter(file => verifierIds.has(file.asset.id)).map(file => LearningTextAssetSchema.parse(sealLearningContent({\n schemaVersion: \"openpond.learningTextAsset.v1\", id: file.asset.id, revision: 1, asset: file.asset,\n text: new TextDecoder(\"utf-8\", { fatal: true }).decode(decodeTasksetPackageFile(file)),\n })));\n const { taskset } = prepareImportedTasksetPackage({ package: source, profileId: input.modelProject.id,\n name: source.taskset.id, createdAt: input.modelProject.updatedAt });\n const taskAssets = new Set(taskset.tasks.flatMap(task => (task.assets ?? []).map(asset => asset.artifactRef)));\n const tasksetAssetBytes = new Map(source.files.filter(file => taskAssets.has(file.asset.path)).map(file => [file.asset.path, decodeTasksetPackageFile(file)]));\n const tasksetRef = { id: source.taskset.id, revision: source.taskset.revision, contentHash: source.taskset.contentHash };\n const rewardExecution = { binding, rewards };\n const bundle = buildTasksetTrainingBundle({ ...input, taskset, executionMode: \"qualification\", qualificationSource: source,\n tasksetRelease: { id: tasksetRef.id, contentHash: tasksetRef.contentHash }, rewardExecution, verifierAssets, tasksetAssetBytes,\n approval: { approvalHash: input.approval.approvalHash, approvedAt: input.approval.approvedAt, maximumSpendUsd: input.approval.maximumSpendUsd } });\n const recipe = input.modelProject.trainingSetup.recipe;\n if (!recipe || recipe.method !== \"grpo\") throw new Error(\"Qualification requires a pinned GRPO rollout recipe.\");\n const prepared = await prepareManagedTrainingSubmission({ executionMode: \"qualification\", project: input.modelProject,\n manifest: bundle.manifest, bundleManifest: bundle.resolvedBundleManifest, taskset: tasksetRef, recipe,\n files: [...bundle.assets].map(([path, bytes]) => ({ ...bundle.resolvedBundleManifest.files.find(file => file.path === path)!, encoding: \"base64\" as const, content: Buffer.from(bytes).toString(\"base64\") })),\n rewardSource: await deterministicTrainingRewardSource({ graders: source.taskset.graders, rewardExecution }),\n resumeFrom: null, approval: { approvalHash: input.approval.approvalHash, maximumSpendUsd: input.approval.maximumSpendUsd, retentionDays: input.approval.retentionDays, region: input.approval.region }, ...(input.idempotencyKey ? { idempotencyKey: input.idempotencyKey } : {}) });\n return { ...prepared, bundle };\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["compileBoundGraders", "verifyLearningTextAsset", "verifyLearningTextAsset", "asset", "bytes", "asset", "verifyLearningTextAsset", "ref", "bytes", "z", "z", "bytes", "z", "z", "dataset", "optimizer", "reward", "bytes", "asset", "bytes", "compileBoundGraders", "asset", "verifyLearningTextAsset"]
7
7
  }
package/dist/training.js CHANGED
@@ -39,7 +39,10 @@ import {
39
39
  TrainingPreparationPlanSchema,
40
40
  TrainingPreparationReceiptSchema,
41
41
  TrainingPreparationRequestSchema,
42
+ TrainingQualificationBaseModelSchema,
43
+ TrainingQualificationEvidenceSchema,
42
44
  assertTrainingEvaluationIsolation,
45
+ assertTrainingQualificationReceipt,
43
46
  createTrainingClient,
44
47
  deterministicTrainingRewardSource,
45
48
  parseAndVerifyTrainingCandidateDecision,
@@ -54,12 +57,12 @@ import {
54
57
  trainingExecutionReceiptHash,
55
58
  trainingInputArtifactUploadHash,
56
59
  trainingJobSubmissionHash
57
- } from "./chunk-YVFERCUC.js";
58
- import "./chunk-OEPYLZXK.js";
59
- import "./chunk-YSKUXQ2N.js";
60
+ } from "./chunk-TMUAKJWX.js";
61
+ import "./chunk-MLPPSCDQ.js";
62
+ import "./chunk-G53MA5XX.js";
60
63
  import "./chunk-DUKW3R7O.js";
61
- import "./chunk-L5PQPAU6.js";
62
- import "./chunk-7WUJBFCH.js";
64
+ import "./chunk-QTJQIHDZ.js";
65
+ import "./chunk-ZJ3H3VS7.js";
63
66
  import "./chunk-CK3ONRRC.js";
64
67
  import {
65
68
  OPENPOND_TRAINING_MEDIA_TYPE,
@@ -123,8 +126,11 @@ export {
123
126
  TrainingPreparationPlanSchema,
124
127
  TrainingPreparationReceiptSchema,
125
128
  TrainingPreparationRequestSchema,
129
+ TrainingQualificationBaseModelSchema,
130
+ TrainingQualificationEvidenceSchema,
126
131
  assertCanonicalPayloadSize,
127
132
  assertTrainingEvaluationIsolation,
133
+ assertTrainingQualificationReceipt,
128
134
  canonicalJson,
129
135
  canonicalJsonByteLength,
130
136
  canonicalSha256,
@@ -223,6 +223,9 @@ export declare function createCandidateEvaluationClient(request: (path: string,
223
223
  };
224
224
  modelConfigurationHash: string;
225
225
  packageHash: string;
226
+ maxOutputTokens?: number | undefined;
227
+ temperature?: number | undefined;
228
+ topP?: number | undefined;
226
229
  candidate?: {
227
230
  artifactId: string;
228
231
  contentHash: string;
@@ -582,6 +585,9 @@ export declare function createCandidateEvaluationClient(request: (path: string,
582
585
  };
583
586
  modelConfigurationHash: string;
584
587
  packageHash: string;
588
+ maxOutputTokens?: number | undefined;
589
+ temperature?: number | undefined;
590
+ topP?: number | undefined;
585
591
  candidate?: {
586
592
  artifactId: string;
587
593
  contentHash: string;
@@ -941,6 +947,9 @@ export declare function createCandidateEvaluationClient(request: (path: string,
941
947
  };
942
948
  modelConfigurationHash: string;
943
949
  packageHash: string;
950
+ maxOutputTokens?: number | undefined;
951
+ temperature?: number | undefined;
952
+ topP?: number | undefined;
944
953
  candidate?: {
945
954
  artifactId: string;
946
955
  contentHash: string;
@@ -1 +1 @@
1
- {"version":3,"file":"candidate-evaluation-client.d.ts","sourceRoot":"","sources":["../../../../../src/candidate-evaluation-client.ts"],"names":[],"mappings":"AACA,OAAO,EAKL,KAAK,0BAA0B,EAChC,MAAM,4BAA4B,CAAC;AACpC,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,OAAO,CAAC;oBAUvC,MAAM,UAAS;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE;;;;;;;;;;;;;;;;cAS7D,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gBAexB,MAAM,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBAGd,MAAM,MAAM,MAAM,UAAU,SAAS,GAAG,KAAK,GAAG,QAAQ,OAAO,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAe/F"}
1
+ {"version":3,"file":"candidate-evaluation-client.d.ts","sourceRoot":"","sources":["../../../../../src/candidate-evaluation-client.ts"],"names":[],"mappings":"AACA,OAAO,EAKL,KAAK,0BAA0B,EAChC,MAAM,4BAA4B,CAAC;AACpC,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,OAAO,CAAC;oBAUvC,MAAM,UAAS;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE;;;;;;;;;;;;;;;;cAS7D,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gBAexB,MAAM,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBAGd,MAAM,MAAM,MAAM,UAAU,SAAS,GAAG,KAAK,GAAG,QAAQ,OAAO,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAe/F"}
@@ -118,6 +118,9 @@ export declare const CandidateEvaluationRequestSchema: z.ZodObject<{
118
118
  }, z.core.$strict>, z.ZodObject<{
119
119
  kind: z.ZodLiteral<"hosted_harness">;
120
120
  modelId: z.ZodString;
121
+ maxOutputTokens: z.ZodOptional<z.ZodNumber>;
122
+ temperature: z.ZodOptional<z.ZodNumber>;
123
+ topP: z.ZodOptional<z.ZodNumber>;
121
124
  candidate: z.ZodOptional<z.ZodObject<{
122
125
  artifactId: z.ZodString;
123
126
  contentHash: z.ZodString;
@@ -523,6 +526,9 @@ export declare const CandidateEvaluationPreparationSchema: z.ZodObject<{
523
526
  }, z.core.$strict>, z.ZodObject<{
524
527
  kind: z.ZodLiteral<"hosted_harness">;
525
528
  modelId: z.ZodString;
529
+ maxOutputTokens: z.ZodOptional<z.ZodNumber>;
530
+ temperature: z.ZodOptional<z.ZodNumber>;
531
+ topP: z.ZodOptional<z.ZodNumber>;
526
532
  candidate: z.ZodOptional<z.ZodObject<{
527
533
  artifactId: z.ZodString;
528
534
  contentHash: z.ZodString;
@@ -1 +1 @@
1
- {"version":3,"file":"candidate-evaluations.d.ts","sourceRoot":"","sources":["../../../../../src/candidate-evaluations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,eAAO,MAAM,+BAA+B;;;;;;;;;;kBASjC,CAAC;AACZ,eAAO,MAAM,gCAAgC;;;;;;;;;;;;;;;kBAOlC,CAAC;AACZ,eAAO,MAAM,gCAAgC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAazC,CAAC;AACL,eAAO,MAAM,oCAAoC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAkD7C,CAAC;AACL,eAAO,MAAM,gCAAgC;;;;kBAElC,CAAC;AACZ,MAAM,MAAM,8BAA8B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oCAAoC,CAAC,CAAC;AAClG,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gCAAgC,CAAC,CAAC;AAC1F,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,+BAA+B,CAAC,CAAC;AACxF,OAAO,EAAE,+BAA+B,EAAE,MAAM,kCAAkC,CAAC"}
1
+ {"version":3,"file":"candidate-evaluations.d.ts","sourceRoot":"","sources":["../../../../../src/candidate-evaluations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,eAAO,MAAM,+BAA+B;;;;;;;;;;kBASjC,CAAC;AACZ,eAAO,MAAM,gCAAgC;;;;;;;;;;;;;;;kBAOlC,CAAC;AACZ,eAAO,MAAM,gCAAgC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAazC,CAAC;AACL,eAAO,MAAM,oCAAoC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAkD7C,CAAC;AACL,eAAO,MAAM,gCAAgC;;;;kBAElC,CAAC;AACZ,MAAM,MAAM,8BAA8B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oCAAoC,CAAC,CAAC;AAClG,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gCAAgC,CAAC,CAAC;AAC1F,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,+BAA+B,CAAC,CAAC;AACxF,OAAO,EAAE,+BAA+B,EAAE,MAAM,kCAAkC,CAAC"}