openpond-sdk 0.11.6 → 0.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/TASKSETS.md +13 -0
- package/dist/{chunk-64HOO3TO.js → chunk-32GJS7FV.js} +2 -2
- package/dist/{chunk-OLHLJ2X3.js → chunk-644E3NM2.js} +8 -2
- package/dist/chunk-644E3NM2.js.map +7 -0
- package/dist/{chunk-A3ZYHREX.js → chunk-7L4NIEW2.js} +2 -2
- package/dist/{chunk-JPPOMXMY.js → chunk-7MISLCN2.js} +2 -2
- package/dist/{chunk-NFLEPINR.js → chunk-BDDT6VN6.js} +5 -5
- package/dist/{chunk-7GA57BEJ.js → chunk-FWX7SH7Y.js} +19 -3
- package/dist/chunk-FWX7SH7Y.js.map +7 -0
- package/dist/{chunk-2NBI5UOK.js → chunk-FZYLRL7H.js} +3 -3
- package/dist/{chunk-PL3ETQYC.js → chunk-LHRHB5EJ.js} +2 -2
- package/dist/{chunk-ILXO64IV.js → chunk-SVBV2VEK.js} +58 -3
- package/dist/chunk-SVBV2VEK.js.map +7 -0
- package/dist/{chunk-I3QQEXDY.js → chunk-UK2KWJIQ.js} +12 -9
- package/dist/{chunk-I3QQEXDY.js.map → chunk-UK2KWJIQ.js.map} +3 -3
- package/dist/{chunk-NA7PNRQZ.js → chunk-WYGBGCRO.js} +3 -3
- package/dist/{chunk-IS3P4OOW.js → chunk-X6J3VVYC.js} +9 -6
- package/dist/{chunk-IS3P4OOW.js.map → chunk-X6J3VVYC.js.map} +2 -2
- package/dist/{chunk-IPWCUGDN.js → chunk-YRTA3G6O.js} +10 -3
- package/dist/chunk-YRTA3G6O.js.map +7 -0
- package/dist/connected-evidence.js +17 -9
- package/dist/dataset-workspaces.js +293 -17
- package/dist/dataset-workspaces.js.map +4 -4
- package/dist/experiment-evaluation-schedules.js +9 -9
- package/dist/experiments.js +9 -9
- package/dist/index.js +20 -12
- package/dist/index.js.map +1 -1
- package/dist/model-starter-catalog.js +2 -2
- package/dist/model-starters.js +2 -2
- package/dist/taskset-drafts.js +6 -6
- package/dist/taskset-drafts.js.map +2 -2
- package/dist/taskset-packages.js +8 -8
- package/dist/training-bundle.js +5 -4
- package/dist/training-bundle.js.map +2 -2
- package/dist/types/packages/sdk/src/connected-dataset-source.d.ts +1 -0
- package/dist/types/packages/sdk/src/connected-dataset-source.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/connected-evidence-client.d.ts +71 -0
- package/dist/types/packages/sdk/src/connected-evidence-client.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/connected-evidence.d.ts +1 -0
- package/dist/types/packages/sdk/src/connected-evidence.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/connected-starting-assets.d.ts +98 -0
- package/dist/types/packages/sdk/src/connected-starting-assets.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/dataset-preparation-assembly.d.ts +11 -0
- package/dist/types/packages/sdk/src/dataset-preparation-assembly.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/dataset-preparation-authoring-contracts.d.ts +11 -0
- package/dist/types/packages/sdk/src/dataset-preparation-authoring-contracts.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/dataset-preparation-client.d.ts +21 -0
- package/dist/types/packages/sdk/src/dataset-preparation-client.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/dataset-preparation-contracts.d.ts +18 -0
- package/dist/types/packages/sdk/src/dataset-preparation-contracts.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/dataset-preparation-qualification-contracts.d.ts +89 -0
- package/dist/types/packages/sdk/src/dataset-preparation-qualification-contracts.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/dataset-preparation-starting-state.d.ts +76 -0
- package/dist/types/packages/sdk/src/dataset-preparation-starting-state.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/dataset-preparation-workspace.d.ts +10 -0
- package/dist/types/packages/sdk/src/dataset-preparation-workspace.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/dataset-workspace-client.d.ts +42 -0
- package/dist/types/packages/sdk/src/dataset-workspace-client.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/dataset-workspace-contracts.d.ts +12 -0
- package/dist/types/packages/sdk/src/dataset-workspace-contracts.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/dataset-workspace-operations.d.ts +12 -0
- package/dist/types/packages/sdk/src/dataset-workspace-operations.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/dataset-workspaces.d.ts +3 -0
- package/dist/types/packages/sdk/src/dataset-workspaces.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/learning-batch-assets.d.ts +1 -0
- package/dist/types/packages/sdk/src/learning-batch-assets.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/model-batch-review-contracts.d.ts +5 -0
- package/dist/types/packages/sdk/src/model-batch-review-contracts.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/model-batch-review-preparation.d.ts +1 -0
- package/dist/types/packages/sdk/src/model-batch-review-preparation.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/model-batch-review.d.ts +5 -2
- package/dist/types/packages/sdk/src/model-batch-review.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/model-starter-attempts.d.ts +4 -1
- package/dist/types/packages/sdk/src/model-starter-attempts.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/model-starter-catalog.d.ts +9 -0
- package/dist/types/packages/sdk/src/model-starter-catalog.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/model-starter-execution.d.ts +4 -0
- package/dist/types/packages/sdk/src/model-starter-execution.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/model-starters.d.ts +18 -0
- package/dist/types/packages/sdk/src/model-starters.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/model-taskset-derivation.d.ts +13 -0
- package/dist/types/packages/sdk/src/model-taskset-derivation.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/model-taskset-resources.d.ts +4 -0
- package/dist/types/packages/sdk/src/model-taskset-resources.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/profile-external-dataset-package.d.ts +17 -2
- package/dist/types/packages/sdk/src/profile-external-dataset-package.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/task-design-contracts.d.ts +4 -0
- package/dist/types/packages/sdk/src/task-design-contracts.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/taskset-authored-contracts.d.ts +6 -0
- package/dist/types/packages/sdk/src/taskset-authored-contracts.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/taskset-authored-files.d.ts +6 -0
- package/dist/types/packages/sdk/src/taskset-authored-files.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/taskset-authored-portable-release.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/taskset-calibration-fixtures.d.ts +5 -0
- package/dist/types/packages/sdk/src/taskset-calibration-fixtures.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/taskset-draft-api-contracts.d.ts +12 -0
- package/dist/types/packages/sdk/src/taskset-draft-api-contracts.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/taskset-draft-client.d.ts +36 -0
- package/dist/types/packages/sdk/src/taskset-draft-client.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/taskset-draft-core.d.ts +11 -0
- package/dist/types/packages/sdk/src/taskset-draft-core.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/taskset-draft-document.d.ts +7 -0
- package/dist/types/packages/sdk/src/taskset-draft-document.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/taskset-draft-package-compiler.d.ts +34 -4
- package/dist/types/packages/sdk/src/taskset-draft-package-compiler.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/taskset-draft-source.d.ts +12 -0
- package/dist/types/packages/sdk/src/taskset-draft-source.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/taskset-draft-workspace.d.ts +12 -0
- package/dist/types/packages/sdk/src/taskset-draft-workspace.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/taskset-package-client.d.ts +68 -0
- package/dist/types/packages/sdk/src/taskset-package-client.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/taskset-package-contracts.d.ts +35 -0
- package/dist/types/packages/sdk/src/taskset-package-contracts.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/taskset-package-grader-projection.d.ts +4 -0
- package/dist/types/packages/sdk/src/taskset-package-grader-projection.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/taskset-package-learning.d.ts +8 -2
- package/dist/types/packages/sdk/src/taskset-package-learning.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/taskset-package-projection.d.ts +29 -7
- package/dist/types/packages/sdk/src/taskset-package-projection.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/training-learning-batch.d.ts +20 -0
- package/dist/types/packages/sdk/src/training-learning-batch.d.ts.map +1 -1
- package/package.json +2 -2
- package/dist/chunk-7GA57BEJ.js.map +0 -7
- package/dist/chunk-ILXO64IV.js.map +0 -7
- package/dist/chunk-IPWCUGDN.js.map +0 -7
- package/dist/chunk-OLHLJ2X3.js.map +0 -7
- /package/dist/{chunk-64HOO3TO.js.map → chunk-32GJS7FV.js.map} +0 -0
- /package/dist/{chunk-A3ZYHREX.js.map → chunk-7L4NIEW2.js.map} +0 -0
- /package/dist/{chunk-JPPOMXMY.js.map → chunk-7MISLCN2.js.map} +0 -0
- /package/dist/{chunk-NFLEPINR.js.map → chunk-BDDT6VN6.js.map} +0 -0
- /package/dist/{chunk-2NBI5UOK.js.map → chunk-FZYLRL7H.js.map} +0 -0
- /package/dist/{chunk-PL3ETQYC.js.map → chunk-LHRHB5EJ.js.map} +0 -0
- /package/dist/{chunk-NA7PNRQZ.js.map → chunk-WYGBGCRO.js.map} +0 -0
|
@@ -111,8 +111,14 @@ function materializePortableTasksetRelease(input) {
|
|
|
111
111
|
sourceTasksetHash: input.taskset.contentHash,
|
|
112
112
|
sourcePackageHash: input.taskset.metadata.sourcePackageHash ?? null,
|
|
113
113
|
environmentResources: input.taskset.environment.resources ?? [],
|
|
114
|
+
workAssetStagingPaths: Object.fromEntries(tasks.filter((task) => task.assets?.some((asset) => asset.stagingPath)).map((task) => [task.id, Object.fromEntries((task.assets ?? []).filter((asset) => asset.stagingPath).map((asset) => [asset.id, asset.stagingPath]))])),
|
|
114
115
|
ordinaryAuthoring: {
|
|
115
116
|
instructions: input.taskset.objective,
|
|
117
|
+
graderSourceRewards: Object.fromEntries(input.taskset.graders.filter((grader) => grader.metadata.sourceReward !== void 0).map((grader) => [grader.id, grader.metadata.sourceReward])),
|
|
118
|
+
graderOrigins: Object.fromEntries(input.taskset.graders.map((grader) => [
|
|
119
|
+
grader.id,
|
|
120
|
+
grader.metadata.preparationOrigin === "reused" ? "reused" : grader.metadata.preparationOrigin === "adapted" || grader.metadata.adaptedFromReward ? "adapted" : "authored"
|
|
121
|
+
])),
|
|
116
122
|
graderFixtures: input.taskset.graderFixtures,
|
|
117
123
|
judgeCalibrationFixtures: Object.fromEntries(input.taskset.graders.filter((grader) => grader.kind === "model_judge").map((grader) => [grader.id, grader.calibrationFixtureRefs]))
|
|
118
124
|
},
|
|
@@ -167,7 +173,7 @@ function projectPortableTaskRecord(task) {
|
|
|
167
173
|
const previous = original.artifactRefs.find((item) => item.id === asset.id);
|
|
168
174
|
return {
|
|
169
175
|
id: asset.id,
|
|
170
|
-
path: previous?.path ?? `tasks/${segment(task.id)}/${segment(asset.fileName)}`,
|
|
176
|
+
path: previous?.path ?? `tasks/${segment(task.id)}/${asset.stagingPath ?? segment(asset.fileName)}`,
|
|
171
177
|
contentHash: hash(asset.sha256),
|
|
172
178
|
sizeBytes: asset.sizeBytes,
|
|
173
179
|
mediaType: asset.mediaType,
|
|
@@ -201,7 +207,7 @@ function projectPortableTaskRecord(task) {
|
|
|
201
207
|
privilegedContextRef: task.privilegedContextRef,
|
|
202
208
|
artifactRefs: (task.assets ?? []).map((item) => ({
|
|
203
209
|
id: item.id,
|
|
204
|
-
path: `tasks/${segment(task.id)}/${segment(item.fileName)}`,
|
|
210
|
+
path: `tasks/${segment(task.id)}/${item.stagingPath ?? segment(item.fileName)}`,
|
|
205
211
|
contentHash: hash(item.sha256),
|
|
206
212
|
sizeBytes: item.sizeBytes,
|
|
207
213
|
mediaType: item.mediaType,
|
|
@@ -268,6 +274,7 @@ function portableTools(taskset) {
|
|
|
268
274
|
function portableGrader(grader) {
|
|
269
275
|
const base = {
|
|
270
276
|
id: grader.id,
|
|
277
|
+
...grader.taskIds ? { taskIds: grader.taskIds } : {},
|
|
271
278
|
version: grader.version,
|
|
272
279
|
weight: grader.weight,
|
|
273
280
|
hardGate: grader.hardGate,
|
|
@@ -376,4 +383,4 @@ export {
|
|
|
376
383
|
portableTasksetTools,
|
|
377
384
|
projectPortableTaskRecord
|
|
378
385
|
};
|
|
379
|
-
//# sourceMappingURL=chunk-
|
|
386
|
+
//# sourceMappingURL=chunk-YRTA3G6O.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/taskset-authored-portable-release.ts"],
|
|
4
|
+
"sourcesContent": ["import type { Taskset } from \"./taskset-authored-contracts.js\";\nimport type {\n GraderSpec,\n TaskDataRecord,\n} from \"./taskset-draft-core.js\";\nimport {\n TaskRecordSchema,\n GraderSpecSchema as PortableGraderSpecSchema,\n TasksetReleaseContentSchema,\n TasksetReleaseSchema,\n bindTasksetExecutionReleases,\n createEnvironmentRelease,\n createVerifierSetRelease,\n EnvironmentReleaseSchema,\n VerifierSetReleaseSchema,\n verifyEnvironmentRelease,\n verifyVerifierSetRelease,\n verifyPreferenceComparisonRelease,\n type EnvironmentContract,\n type GraderSpec as PortableGraderSpec,\n type PreferenceComparisonRelease,\n type TasksetRelease,\n} from \"@openpond/evals\";\nimport type {\n ImmutableAssetRef,\n ToolDeclaration,\n} from \"@openpond/harness\";\nimport {\n CapabilityRequirementSchema,\n ImmutableAssetRefSchema,\n ToolDeclarationSchema,\n} from \"@openpond/harness\";\n\nimport { contentHash, sha256 } from \"@openpond/harness\";\nimport { TaskBatchPackageMetadataSchema } from \"@openpond/evals/learning\";\nimport { compileBoundGraders, RewardBindingSchema, RewardReleaseSchema, type RewardBinding, type RewardRelease } from \"@openpond/evals/rewards\";\nimport { portableDeterministicCheck } from \"@openpond/evals/graders\";\n\nexport type TasksetRewardExecution = { binding: RewardBinding; rewards: RewardRelease[] };\n\nexport function resolvePortableTasksetRewardExecution(taskset: Taskset, supplied?: TasksetRewardExecution): TasksetRewardExecution | null {\n const learning = taskset.metadata.learning === undefined ? null : TaskBatchPackageMetadataSchema.parse(taskset.metadata.learning);\n const embedded = taskset.metadata.rewardExecution as { binding?: unknown; rewards?: unknown } | undefined;\n const execution = supplied ?? (embedded ? {\n binding: RewardBindingSchema.parse(embedded.binding),\n rewards: RewardReleaseSchema.array().parse(embedded.rewards),\n } : learning);\n if (taskset.metadata.rewardBinding !== undefined) {\n const reference = taskset.metadata.rewardBinding as Partial<RewardBinding> | null;\n if (!execution || !reference || reference.id !== execution.binding.id\n || reference.revision !== execution.binding.revision || reference.contentHash !== execution.binding.contentHash) {\n throw new Error(\"Portable Taskset requires its exact published Reward binding.\");\n }\n }\n if (execution) compileBoundGraders(execution.binding, execution.rewards);\n return execution ? { binding: execution.binding, rewards: execution.rewards } : null;\n}\n\nexport function materializePortableTasksetRelease(input: {\n taskset: Taskset;\n selectedTasks?: TaskDataRecord[];\n adapterId: string;\n admittedTasksetRelease?: TasksetRelease | null;\n rewardExecution?: TasksetRewardExecution;\n}): {\n environmentRelease: ReturnType<typeof createEnvironmentRelease>;\n verifierSetRelease: ReturnType<typeof createVerifierSetRelease>;\n tasksetRelease: TasksetRelease;\n} {\n const environment = portableEnvironment(input.taskset);\n const tools = portableTools(input.taskset);\n const learning = input.taskset.metadata.learning === undefined ? null : TaskBatchPackageMetadataSchema.parse(input.taskset.metadata.learning);\n const embedded = input.taskset.metadata.rewardExecution;\n const rewardExecution = resolvePortableTasksetRewardExecution(input.taskset, input.rewardExecution);\n const graders = rewardExecution ? compileBoundGraders(rewardExecution.binding, rewardExecution.rewards) : input.taskset.graders.map(portableGrader);\n const tasks = input.selectedTasks?.length\n ? input.selectedTasks\n : input.taskset.tasks;\n if (!tasks.length) throw new Error(\"A portable Taskset release requires at least one task.\");\n const pinned = input.taskset.environment.metadata.portableExecutionResources as { environment?: unknown; verifierSet?: unknown } | undefined;\n if (environment.entrypoint === \"openpond.javascript-environment.v1\" && !pinned) throw new Error(\"Tool Taskset publication requires its pinned execution resources.\");\n const environmentRelease = pinned ? EnvironmentReleaseSchema.parse(pinned.environment) : createEnvironmentRelease({\n schemaVersion: \"openpond.environmentRelease.v1\",\n id: `environment-release-${input.taskset.id}-r${input.taskset.revision}`,\n revision: input.taskset.revision,\n contract: environment,\n actionSchemaRef: null,\n observationSchemaRef: null,\n stateSchemaRef: null,\n artifactCollection: {\n maxArtifacts: 100_000,\n maxTotalBytes: 250_000_000,\n },\n adapterConformanceHashes: {\n [input.adapterId]: contentHash({ adapterId: input.adapterId, environment, tools }),\n },\n metadata: {\n sourceTasksetId: input.taskset.id,\n sourcePackageHash: input.taskset.metadata.sourcePackageHash ?? null,\n resources: input.taskset.environment.resources ?? [],\n },\n });\n const verifierSetRelease = pinned?.verifierSet !== undefined ? VerifierSetReleaseSchema.parse(pinned.verifierSet) : createVerifierSetRelease({\n schemaVersion: \"openpond.verifierSetRelease.v1\",\n id: `verifier-set-release-${input.taskset.id}-r${input.taskset.revision}`,\n revision: input.taskset.revision,\n graders,\n isolation: {\n processBoundary: \"isolated_process\",\n networkPolicy: \"none\",\n defaultTimeoutMs: Math.min(input.taskset.environment.defaultTimeoutMs, 300_000),\n },\n calibrationReceiptRefs: [],\n metadata: { sourceTasksetId: input.taskset.id },\n });\n if (!verifyEnvironmentRelease(environmentRelease) || !verifyVerifierSetRelease(verifierSetRelease) ||\n contentHash(environmentRelease.contract) !== contentHash(environment) || contentHash(verifierSetRelease.graders) !== contentHash(graders)) {\n throw new Error(\"Taskset execution resources differ from its declared environment or graders.\");\n }\n const tasksetContent = TasksetReleaseContentSchema.parse({\n schemaVersion: \"openpond.tasksetRelease.v2\",\n id: input.taskset.metadata.derivedPortableMetadata === undefined ? `taskset-release-${input.taskset.id}-r${input.taskset.revision}` : input.taskset.id,\n revision: input.taskset.revision,\n policy: {\n policyVisibleFields: input.taskset.policy.policyVisibleFields,\n privilegedFields: input.taskset.policy.privilegedFields,\n hiddenGraderRefs: input.taskset.policy.hiddenGraderRefs,\n connectedAppScopes: input.taskset.policy.connectedAppScopes,\n },\n environment,\n tools,\n capabilities: portableCapabilities(input.taskset),\n tasks: tasks.map(projectPortableTaskRecord),\n graders,\n ...(input.taskset.metrics ? { metrics: input.taskset.metrics } : {}),\n metadata: input.taskset.metadata.derivedPortableMetadata ?? {\n sourceTasksetId: input.taskset.id,\n sourceTasksetHash: input.taskset.contentHash,\n sourcePackageHash: input.taskset.metadata.sourcePackageHash ?? null,\n environmentResources: input.taskset.environment.resources ?? [],\n workAssetStagingPaths: Object.fromEntries(tasks.filter(task => task.assets?.some(asset => asset.stagingPath))\n .map(task => [task.id, Object.fromEntries((task.assets ?? []).filter(asset => asset.stagingPath)\n .map(asset => [asset.id, asset.stagingPath]))])),\n ordinaryAuthoring: {\n instructions: input.taskset.objective,\n graderSourceRewards: Object.fromEntries(input.taskset.graders.filter(grader => grader.metadata.sourceReward !== undefined).map(grader => [grader.id, grader.metadata.sourceReward])),\n graderOrigins: Object.fromEntries(input.taskset.graders.map(grader => [grader.id,\n grader.metadata.preparationOrigin === \"reused\" ? \"reused\" : grader.metadata.preparationOrigin === \"adapted\" || grader.metadata.adaptedFromReward ? \"adapted\" : \"authored\"])),\n graderFixtures: input.taskset.graderFixtures,\n judgeCalibrationFixtures: Object.fromEntries(input.taskset.graders\n .filter(grader => grader.kind === \"model_judge\")\n .map(grader => [grader.id, grader.calibrationFixtureRefs])),\n },\n ...(learning ? { learning } : {}),\n // A sealed batch already pins these resources in learning metadata.\n // Resolving that same binding at admission must not change its release.\n ...(rewardExecution && !learning && (input.rewardExecution || embedded) ? { rewardExecution: { binding: rewardExecution.binding, rewards: rewardExecution.rewards } } : {}),\n },\n });\n const draft = input.admittedTasksetRelease\n ? TasksetReleaseSchema.parse(input.admittedTasksetRelease)\n : TasksetReleaseSchema.parse({\n ...tasksetContent,\n contentHash: contentHash(tasksetContent),\n });\n const tasksetRelease = draft.environmentRelease\n ? assertReleaseBindings({ draft, environmentRelease, verifierSetRelease })\n : bindTasksetExecutionReleases({\n taskset: draft,\n environment: environmentRelease,\n verifierSet: verifierSetRelease,\n });\n return { environmentRelease, verifierSetRelease, tasksetRelease };\n}\n\n/**\n * Admits a published comparison policy against the exact portable Taskset\n * release it names. A comparison is deliberately not embedded in that release:\n * doing so would create a content-hash cycle between Taskset and comparison.\n */\nexport function projectPreferenceComparisonRelease(input: {\n tasksetRelease: TasksetRelease;\n preferenceComparison: PreferenceComparisonRelease;\n}): PreferenceComparisonRelease {\n if (!verifyPreferenceComparisonRelease(input.preferenceComparison)) {\n throw new Error(\"Preference comparison release failed immutable content verification.\");\n }\n const release = input.preferenceComparison;\n if (\n release.tasksetRelease.id !== input.tasksetRelease.id\n || release.tasksetRelease.contentHash !== input.tasksetRelease.contentHash\n ) {\n throw new Error(\"Preference comparison release must reference the admitted portable Taskset release.\");\n }\n return release;\n}\n\nexport function portableTasksetEnvironment(taskset: Taskset): EnvironmentContract {\n return portableEnvironment(taskset);\n}\n\nexport function portableTasksetTools(taskset: Taskset): ToolDeclaration[] {\n return portableTools(taskset);\n}\n\n/** Preserve immutable file/schema references while overlaying current edits. */\nexport function projectPortableTaskRecord(task: TaskDataRecord) {\n const admitted = task.metadata.portableTaskRecord;\n if (admitted !== undefined) {\n const original = TaskRecordSchema.parse(admitted);\n const projected = TaskRecordSchema.parse({\n ...original,\n id: task.id,\n clusterKey: task.clusterKey,\n split: task.split,\n input: task.input,\n expectedOutput: portableExpectedOutput(task),\n policyVisibleContext: task.policyVisibleContext,\n privilegedContextRef: task.privilegedContextRef,\n tags: task.tags,\n artifactRefs: task.assets === undefined ? original.artifactRefs : task.assets.map((asset) => {\n const previous = original.artifactRefs.find(item => item.id === asset.id);\n return {\n id: asset.id,\n path: previous?.path ?? `tasks/${segment(task.id)}/${asset.stagingPath ?? segment(asset.fileName)}`,\n contentHash: hash(asset.sha256),\n sizeBytes: asset.sizeBytes,\n mediaType: asset.mediaType,\n visibility: previous?.visibility ?? \"policy\",\n };\n }),\n requiredOutputs: task.requiredOutputs === undefined ? original.requiredOutputs : task.requiredOutputs.map((output) => {\n const previous = original.requiredOutputs?.find(item => item.path === output.path);\n return {\n path: output.path,\n mediaType: output.mediaType,\n schemaRef: previous?.schemaRef && previous.schemaRef.id === output.schemaRef ? previous.schemaRef : null,\n maxBytes: output.maxBytes ?? null,\n metadata: {\n ...output.metadata,\n ...(output.schemaRef && previous?.schemaRef?.id !== output.schemaRef\n ? { legacySchemaRef: output.schemaRef }\n : {}),\n },\n };\n }),\n });\n if (projected.requiredOutputs === undefined) delete projected.requiredOutputs;\n return projected;\n }\n return {\n id: task.id,\n clusterKey: task.clusterKey,\n split: task.split,\n input: task.input,\n expectedOutput: portableExpectedOutput(task),\n policyVisibleContext: task.policyVisibleContext,\n privilegedContextRef: task.privilegedContextRef,\n artifactRefs: (task.assets ?? []).map((item) => ({\n id: item.id,\n path: `tasks/${segment(task.id)}/${item.stagingPath ?? segment(item.fileName)}`,\n contentHash: hash(item.sha256),\n sizeBytes: item.sizeBytes,\n mediaType: item.mediaType,\n visibility: \"policy\" as const,\n })),\n requiredOutputs: (task.requiredOutputs ?? []).map((output) => ({\n path: output.path,\n mediaType: output.mediaType,\n schemaRef: null,\n maxBytes: output.maxBytes ?? null,\n metadata: {\n ...output.metadata,\n legacySchemaRef: output.schemaRef ?? null,\n },\n })),\n tags: task.tags,\n };\n}\n\nfunction portableExpectedOutput(\n task: TaskDataRecord,\n): Record<string, unknown> | null {\n if (!task.expectedOutput) return null;\n if (\"artifactRenderer\" in task.expectedOutput) {\n throw new Error(\n `Task ${task.id} embeds an artifact renderer. Put shared renderer configuration in Environment resources and reference it from the Scenario.`,\n );\n }\n return task.expectedOutput;\n}\n\nfunction portableEnvironment(taskset: Taskset): EnvironmentContract {\n const kind: EnvironmentContract[\"kind\"] = taskset.environment.kind === \"chat\"\n ? \"text\"\n : taskset.environment.kind === \"work\" ? \"work\"\n : taskset.environment.kind === \"program\" ? \"custom_program\" : \"agent\";\n return {\n protocolVersion: \"openpond.environment.v1\",\n kind,\n entrypoint: taskset.environment.entrypoint,\n stateful: taskset.environment.stateful,\n deterministicSeeds: taskset.environment.deterministicSeeds,\n lifecycle: [\"create\", \"reset\", \"step\", \"collect\", \"destroy\"],\n networkPolicy: taskset.environment.networkPolicy,\n defaultTimeoutMs: taskset.environment.defaultTimeoutMs,\n };\n}\n\nfunction portableTools(taskset: Taskset): ToolDeclaration[] {\n const admitted = taskset.environment.metadata.portableTools;\n if (admitted !== undefined) {\n return ToolDeclarationSchema.array().max(200).parse(admitted);\n }\n const bindings = taskset.environment.actionBindings ?? [];\n if (bindings.length) return bindings.map((binding) => ({\n name: binding.modelToolName,\n description: binding.description,\n inputSchema: binding.inputSchema,\n inputSchemaHash: hash(binding.actionSchemaHash),\n sideEffect: binding.sideEffect,\n timeoutMs: binding.timeoutMs,\n }));\n return taskset.environment.toolNames.map((name) => ({\n name,\n description: `Host-provided ${name} tool.`,\n inputSchema: {},\n inputSchemaHash: contentHash({}),\n sideEffect: \"write\" as const,\n timeoutMs: taskset.environment.defaultTimeoutMs,\n }));\n}\n\nfunction portableGrader(grader: GraderSpec): PortableGraderSpec {\n const base = {\n id: grader.id,\n ...(grader.taskIds ? { taskIds: grader.taskIds } : {}),\n version: grader.version,\n weight: grader.weight,\n hardGate: grader.hardGate,\n rewardEligible: grader.rewardEligible,\n privileged: grader.privileged,\n };\n if (grader.kind === \"model_judge\") return {\n ...base,\n kind: \"model_judge\",\n rubricRef: rubricAsset(grader),\n model: modelJudgeRef(grader),\n temperature: grader.temperature,\n calibrationStatus: grader.calibrationStatus,\n };\n if (grader.kind === \"custom_verifier\") {\n if (grader.metadata.portableVerifierRef === undefined) {\n throw new Error(`Custom verifier ${grader.id} requires its immutable executable asset before publication.`);\n }\n const imported = PortableGraderSpecSchema.safeParse(grader.metadata.portableGrader);\n // An omitted portable export means \"verify\". Preserve that encoding on an\n // unchanged import so executing it does not silently replace its release.\n const preserveDefault = imported.success && imported.data.kind === \"custom_verifier\"\n && imported.data.exportName === undefined && grader.exportName === \"verify\";\n return {\n ...base,\n kind: \"custom_verifier\",\n ...(grader.runtime === undefined ? {} : { runtime: grader.runtime }),\n verifierRef: ImmutableAssetRefSchema.parse(grader.metadata.portableVerifierRef),\n timeoutMs: grader.timeoutMs,\n ...(preserveDefault ? {} : { exportName: grader.exportName }),\n networkPolicy: \"none\",\n };\n }\n if (grader.kind === \"human\") return {\n ...base,\n kind: \"human\",\n rubricRef: rubricAsset(grader),\n reviewerRole: grader.reviewerRole,\n ...(grader.form ? { form: grader.form } : {}),\n };\n return {\n ...base,\n ...portableDeterministicCheck(grader),\n };\n}\n\nfunction portableCapabilities(taskset: Taskset) {\n const admitted = taskset.metadata.portableCapabilities;\n if (admitted !== undefined) {\n return CapabilityRequirementSchema.array().max(200).parse(admitted);\n }\n return [\n ...(taskset.capabilities.requiresTools\n ? [{ id: \"tools\", required: true, scopes: taskset.environment.toolNames }]\n : []),\n ...(taskset.capabilities.requiresState\n ? [{ id: \"local-state\", required: true, scopes: [] }]\n : []),\n ...(taskset.capabilities.requiresPrivilegedGrading\n ? [{ id: \"private-verifier\", required: true, scopes: taskset.policy.hiddenGraderRefs }]\n : []),\n ...taskset.policy.connectedAppScopes.map((scope) => ({\n id: `connected-app-${segment(scope)}`,\n required: true,\n scopes: [scope],\n })),\n ].map((requirement) => ({\n ...requirement,\n portability: requirement.id === \"local-state\" ? \"host_adapter\" as const : \"portable\" as const,\n }));\n}\n\nfunction assertReleaseBindings(input: {\n draft: TasksetRelease;\n environmentRelease: ReturnType<typeof createEnvironmentRelease>;\n verifierSetRelease: ReturnType<typeof createVerifierSetRelease>;\n}): TasksetRelease {\n if (\n input.draft.environmentRelease?.id !== input.environmentRelease.id\n || input.draft.environmentRelease.contentHash !== input.environmentRelease.contentHash\n ) {\n throw new Error(\"Admitted Taskset Release binds a different Environment Release.\");\n }\n if (\n input.draft.verifierSetRelease?.id !== input.verifierSetRelease.id\n || input.draft.verifierSetRelease.contentHash !== input.verifierSetRelease.contentHash\n ) {\n throw new Error(\"Admitted Taskset Release binds a different Verifier Set Release.\");\n }\n if (contentHash(input.draft.environment) !== contentHash(input.environmentRelease.contract)) {\n throw new Error(\"Admitted Taskset Environment differs from its bound Environment Release.\");\n }\n if (contentHash(input.draft.graders) !== contentHash(input.verifierSetRelease.graders)) {\n throw new Error(\"Admitted Taskset graders differ from its bound Verifier Set Release.\");\n }\n return input.draft;\n}\n\nfunction modelJudgeRef(grader: Extract<GraderSpec, { kind: \"model_judge\" }>) {\n const previous = grader.metadata.portableGrader === undefined ? null : PortableGraderSpecSchema.parse(grader.metadata.portableGrader);\n const revision = previous?.kind === \"model_judge\" && previous.model?.providerId === grader.judge.providerId && previous.model.modelId === grader.judge.modelId ? previous.model.revision : null;\n return { ...grader.judge, revision };\n}\n\nfunction rubricAsset(grader: Extract<GraderSpec, { kind: \"human\" | \"model_judge\" }>): ImmutableAssetRef {\n const contentHash = sha256(grader.rubric);\n const sizeBytes = new TextEncoder().encode(grader.rubric).byteLength;\n const reference = grader.metadata.portableRubricRef;\n if (reference !== undefined) {\n const asset = ImmutableAssetRefSchema.parse(reference);\n if (asset.contentHash !== contentHash || asset.sizeBytes !== sizeBytes || asset.visibility === \"policy\") throw new Error(\"Taskset rubric differs from its published private source.\");\n return asset;\n }\n return { id: `rubric-${grader.id}`, path: `graders/${segment(grader.id)}/rubric.md`, contentHash, sizeBytes, mediaType: \"text/markdown\", visibility: \"verifier\" };\n}\n\nfunction hash(value: string): string {\n return /^[a-f0-9]{64}$/.test(value) ? value : contentHash(value);\n}\n\nfunction segment(value: string): string {\n const normalized = value.trim().replace(/[^a-zA-Z0-9._-]+/g, \"-\")\n .replace(/^-+|-+$/g, \"\");\n return normalized || \"asset\";\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["contentHash"]
|
|
7
|
+
}
|
|
@@ -31,7 +31,7 @@ import {
|
|
|
31
31
|
hashCollectorEligibleBoundaries,
|
|
32
32
|
summarizeCollectorCoverage,
|
|
33
33
|
verifyConnectedRecordedExecution
|
|
34
|
-
} from "./chunk-
|
|
34
|
+
} from "./chunk-FWX7SH7Y.js";
|
|
35
35
|
import {
|
|
36
36
|
AgentImportCommitRequestSchema,
|
|
37
37
|
AgentImportFileSchema,
|
|
@@ -43,16 +43,20 @@ import {
|
|
|
43
43
|
ConnectedHomeQuerySchema,
|
|
44
44
|
ConnectedHomeSummarySchema,
|
|
45
45
|
ConnectedScopeSchema,
|
|
46
|
-
ConnectedSourceSummarySchema
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
46
|
+
ConnectedSourceSummarySchema,
|
|
47
|
+
ConnectedStartingAssetSchema,
|
|
48
|
+
ConnectedStartingAssetsReceiptSchema,
|
|
49
|
+
ConnectedStartingAssetsRequestSchema,
|
|
50
|
+
verifyConnectedStartingAssetsReceipt
|
|
51
|
+
} from "./chunk-SVBV2VEK.js";
|
|
52
|
+
import "./chunk-BDDT6VN6.js";
|
|
53
|
+
import "./chunk-WYGBGCRO.js";
|
|
50
54
|
import "./chunk-K3JCP4FO.js";
|
|
51
|
-
import "./chunk-
|
|
52
|
-
import "./chunk-
|
|
55
|
+
import "./chunk-YRTA3G6O.js";
|
|
56
|
+
import "./chunk-X6J3VVYC.js";
|
|
53
57
|
import {
|
|
54
58
|
ConnectedDatasetSourceRefSchema
|
|
55
|
-
} from "./chunk-
|
|
59
|
+
} from "./chunk-644E3NM2.js";
|
|
56
60
|
import "./chunk-2U54EOXJ.js";
|
|
57
61
|
import "./chunk-TTAFUUHZ.js";
|
|
58
62
|
import "./chunk-OEPYLZXK.js";
|
|
@@ -97,6 +101,9 @@ export {
|
|
|
97
101
|
ConnectedRecordedSummarySchema,
|
|
98
102
|
ConnectedScopeSchema,
|
|
99
103
|
ConnectedSourceSummarySchema,
|
|
104
|
+
ConnectedStartingAssetSchema,
|
|
105
|
+
ConnectedStartingAssetsReceiptSchema,
|
|
106
|
+
ConnectedStartingAssetsRequestSchema,
|
|
100
107
|
ConnectedSyncClient,
|
|
101
108
|
ConnectedSyncCommitSchema,
|
|
102
109
|
ConnectedSyncConnectionSchema,
|
|
@@ -110,6 +117,7 @@ export {
|
|
|
110
117
|
ConnectedUnmappedEventsSchema,
|
|
111
118
|
hashCollectorEligibleBoundaries,
|
|
112
119
|
summarizeCollectorCoverage,
|
|
113
|
-
verifyConnectedRecordedExecution
|
|
120
|
+
verifyConnectedRecordedExecution,
|
|
121
|
+
verifyConnectedStartingAssetsReceipt
|
|
114
122
|
};
|
|
115
123
|
//# sourceMappingURL=connected-evidence.js.map
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
TaskDesignProposalSchema
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-FZYLRL7H.js";
|
|
4
4
|
import {
|
|
5
5
|
ConnectedCaseRefSchema,
|
|
6
|
+
ConnectedStartingAssetSchema,
|
|
6
7
|
DatasetWorkspaceBeginVersionSchema,
|
|
7
8
|
DatasetWorkspaceListQuerySchema,
|
|
8
9
|
DatasetWorkspaceListSchema,
|
|
@@ -11,27 +12,30 @@ import {
|
|
|
11
12
|
DatasetWorkspaceValidationSchema,
|
|
12
13
|
DatasetWorkspaceVersionsSchema,
|
|
13
14
|
DatasetWorkspaceWriteSchema
|
|
14
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-SVBV2VEK.js";
|
|
15
16
|
import {
|
|
16
17
|
compileTasksetDraftWorkspace
|
|
17
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-BDDT6VN6.js";
|
|
18
19
|
import {
|
|
19
20
|
TasksetDraftSchema,
|
|
20
21
|
createTasksetDraft,
|
|
21
22
|
createTasksetDraftFile,
|
|
22
23
|
createTasksetDraftWorkspace,
|
|
23
24
|
decodeTasksetDraftFileContent,
|
|
25
|
+
decodeTasksetDraftWorkspaceFile,
|
|
24
26
|
validateTasksetDraftWorkspace
|
|
25
|
-
} from "./chunk-
|
|
27
|
+
} from "./chunk-WYGBGCRO.js";
|
|
26
28
|
import {
|
|
27
29
|
TasksetCatalogReleaseRefSchema
|
|
28
30
|
} from "./chunk-K3JCP4FO.js";
|
|
29
|
-
import "./chunk-
|
|
30
|
-
import "./chunk-
|
|
31
|
+
import "./chunk-YRTA3G6O.js";
|
|
32
|
+
import "./chunk-X6J3VVYC.js";
|
|
31
33
|
import {
|
|
32
34
|
TaskDataRecordSchema,
|
|
35
|
+
TaskRequiredOutputSchema,
|
|
36
|
+
TasksetEnvironmentContractSchema,
|
|
33
37
|
TasksetSourceRefSchema
|
|
34
|
-
} from "./chunk-
|
|
38
|
+
} from "./chunk-644E3NM2.js";
|
|
35
39
|
import "./chunk-2U54EOXJ.js";
|
|
36
40
|
import "./chunk-TTAFUUHZ.js";
|
|
37
41
|
import "./chunk-OEPYLZXK.js";
|
|
@@ -156,6 +160,7 @@ var DatasetPreparationPolicySchema = z2.object({
|
|
|
156
160
|
modelId: Id,
|
|
157
161
|
maximumOutputTokens: z2.number().int().min(1).max(32768)
|
|
158
162
|
}).strict(),
|
|
163
|
+
adjudicator: z2.object({ modelId: Id, maximumOutputTokens: z2.number().int().min(1).max(32768) }).strict(),
|
|
159
164
|
grading: z2.discriminatedUnion("mode", [
|
|
160
165
|
z2.object({ mode: z2.literal("auto") }).strict(),
|
|
161
166
|
z2.object({ mode: z2.literal("existing_only") }).strict(),
|
|
@@ -372,6 +377,7 @@ var PreparedTaskProvenanceSchema = z2.object({
|
|
|
372
377
|
firstAvailableAt: Timestamp,
|
|
373
378
|
initialInputHash: Hash,
|
|
374
379
|
initialEnvironmentHash: Hash,
|
|
380
|
+
initialAssetsHash: Hash.nullable(),
|
|
375
381
|
sourceScopeHash: Hash
|
|
376
382
|
}).strict().superRefine((value, ctx) => {
|
|
377
383
|
if (!value.sourceSpans.some((span) => span.role === "requirement"))
|
|
@@ -953,15 +959,104 @@ var DatasetPreparationResearchDecisionSchema = z5.object({
|
|
|
953
959
|
contextSummary: z5.string().max(2e4)
|
|
954
960
|
}).strict();
|
|
955
961
|
|
|
962
|
+
// src/dataset-preparation-starting-state.ts
|
|
963
|
+
import { z as z6 } from "zod";
|
|
964
|
+
var Hash3 = z6.string().regex(/^[a-f0-9]{64}$/);
|
|
965
|
+
function connectedStartingAssetReference(receiptId, path) {
|
|
966
|
+
if (!/^starting-assets-[a-f0-9]{40}$/.test(receiptId)) throw new Error("Invalid starting asset receipt.");
|
|
967
|
+
ConnectedStartingAssetSchema.shape.path.parse(path);
|
|
968
|
+
return `starting-assets:${receiptId}#${encodeURIComponent(path)}`;
|
|
969
|
+
}
|
|
970
|
+
function parseConnectedStartingAssetReference(reference) {
|
|
971
|
+
const match = /^starting-assets:(starting-assets-[a-f0-9]{40})#(.+)$/.exec(reference);
|
|
972
|
+
if (!match) throw new Error("Invalid starting asset reference.");
|
|
973
|
+
const path = decodeURIComponent(match[2]);
|
|
974
|
+
if (connectedStartingAssetReference(match[1], path) !== reference) throw new Error("Noncanonical starting asset reference.");
|
|
975
|
+
return { receiptId: match[1], path };
|
|
976
|
+
}
|
|
977
|
+
var PreparedRepositoryStartingStateSchema = z6.object({
|
|
978
|
+
schemaVersion: z6.literal("openpond.preparedRepositoryStartingState.v1"),
|
|
979
|
+
dependencyClosureQualified: z6.literal(false),
|
|
980
|
+
assets: z6.array(ConnectedStartingAssetSchema.extend({
|
|
981
|
+
receiptId: z6.string().regex(/^starting-assets-[a-f0-9]{40}$/),
|
|
982
|
+
receiptHash: Hash3,
|
|
983
|
+
source: ConnectedCaseRefSchema
|
|
984
|
+
}).strict()).min(1).max(100)
|
|
985
|
+
}).strict().superRefine((value, ctx) => {
|
|
986
|
+
if (new Set(value.assets.map((asset) => asset.path)).size !== value.assets.length)
|
|
987
|
+
ctx.addIssue({ code: "custom", message: "Starting paths must be distinct." });
|
|
988
|
+
if (value.assets.some((asset) => asset.commitHash !== value.assets[0].commitHash || contentHash(asset.source) !== contentHash(value.assets[0].source)))
|
|
989
|
+
ctx.addIssue({ code: "custom", message: "Starting assets must belong to one original task boundary and commit." });
|
|
990
|
+
});
|
|
991
|
+
function preparedRepositoryEnvironment() {
|
|
992
|
+
return TasksetEnvironmentContractSchema.parse({
|
|
993
|
+
protocolVersion: "openpond.taskEnvironment.v1",
|
|
994
|
+
kind: "work",
|
|
995
|
+
entrypoint: "openpond-work-v1",
|
|
996
|
+
stateful: true,
|
|
997
|
+
deterministicSeeds: true,
|
|
998
|
+
toolNames: ["work_exec", "work_save_output"],
|
|
999
|
+
lifecycle: ["create", "reset", "step", "grade", "cleanup"],
|
|
1000
|
+
defaultTimeoutMs: 3e5,
|
|
1001
|
+
networkPolicy: "none",
|
|
1002
|
+
resources: [],
|
|
1003
|
+
metadata: {
|
|
1004
|
+
requiredOutputs: [{
|
|
1005
|
+
path: "changes.patch",
|
|
1006
|
+
mediaType: "text/x-diff",
|
|
1007
|
+
maxBytes: 5e6,
|
|
1008
|
+
metadata: {
|
|
1009
|
+
protocol: "openpond.preparedRepositoryPatch.v1",
|
|
1010
|
+
baseDirectory: "starting-state",
|
|
1011
|
+
description: "Save a unified diff against the retained starting files, with original repository-relative paths."
|
|
1012
|
+
}
|
|
1013
|
+
}],
|
|
1014
|
+
maxInputBytes: 15 * 1024 * 1024
|
|
1015
|
+
}
|
|
1016
|
+
});
|
|
1017
|
+
}
|
|
1018
|
+
|
|
956
1019
|
// src/dataset-preparation-workspace.ts
|
|
957
1020
|
function createPreparedTaskAuthoringWorkspace(input) {
|
|
958
1021
|
const provenance = PreparedTaskProvenanceSchema.parse(input.provenance);
|
|
959
1022
|
const proposal = TaskDesignProposalSchema.parse(input.proposal);
|
|
960
|
-
|
|
1023
|
+
let sources = input.sources.map((source) => TasksetSourceRefSchema.parse(source));
|
|
961
1024
|
const environment = TasksetDraftSchema.shape.environment.parse(input.initialEnvironment);
|
|
1025
|
+
const startingFiles = input.startingFiles ?? [];
|
|
1026
|
+
let workAssets;
|
|
1027
|
+
let retainedFiles = startingFiles;
|
|
962
1028
|
if (contentHash(input.initialInput) !== provenance.initialInputHash || contentHash(environment) !== provenance.initialEnvironmentHash)
|
|
963
1029
|
throw new Error("Prepared Taskset input or starting environment differs from its reconstruction.");
|
|
964
|
-
if (environment.kind
|
|
1030
|
+
if (environment.kind === "work") {
|
|
1031
|
+
const state = PreparedRepositoryStartingStateSchema.parse(input.startingAssets);
|
|
1032
|
+
if (contentHash(state) !== provenance.initialAssetsHash) throw new Error("Prepared starting assets differ from their reconstruction.");
|
|
1033
|
+
if (contentHash(preparedRepositoryEnvironment()) !== contentHash(environment) || proposal.taskKind !== "single_agent" || proposal.diagnosis.requiredTools.some((tool) => !environment.toolNames.includes(tool)))
|
|
1034
|
+
throw new Error("Repository preparation requires its fixed isolated Work protocol.");
|
|
1035
|
+
if (startingFiles.length !== state.assets.length || new Set(startingFiles.map((file) => file.path)).size !== startingFiles.length)
|
|
1036
|
+
throw new Error("Prepared starting files differ from the retained inventory.");
|
|
1037
|
+
for (const asset of state.assets) {
|
|
1038
|
+
const file = startingFiles.find((file2) => file2.path === `assets/starting-state/${asset.path}`);
|
|
1039
|
+
if (!file || file.contentHash !== asset.sha256 || file.sizeBytes !== asset.sizeBytes)
|
|
1040
|
+
throw new Error("Prepared starting files differ from the retained inventory.");
|
|
1041
|
+
decodeTasksetDraftWorkspaceFile(file);
|
|
1042
|
+
}
|
|
1043
|
+
for (const asset of state.assets) if (!sources.some((source) => "kind" in source && source.kind === "connected_activity" && source.id === asset.source.id && source.sourceHash === asset.source.snapshotHash))
|
|
1044
|
+
throw new Error("Prepared starting files require their exact connected source revision.");
|
|
1045
|
+
sources = sources.map((source) => "kind" in source && source.kind === "connected_activity" ? { ...source, sourceFileHashes: [...new Set(state.assets.filter((asset) => asset.source.id === source.id).map((asset) => asset.sha256))] } : source);
|
|
1046
|
+
workAssets = state.assets.map((asset) => ({
|
|
1047
|
+
id: `starting-file-${contentHash(asset.path).slice(0, 40)}`,
|
|
1048
|
+
sourceRefId: asset.source.id,
|
|
1049
|
+
artifactRef: `assets/${provenance.candidateId}/starting-state/${asset.path}`,
|
|
1050
|
+
fileName: asset.path.split("/").at(-1),
|
|
1051
|
+
stagingPath: `starting-state/${asset.path}`,
|
|
1052
|
+
mediaType: "application/octet-stream",
|
|
1053
|
+
sha256: asset.sha256,
|
|
1054
|
+
sizeBytes: asset.sizeBytes,
|
|
1055
|
+
split: "validation",
|
|
1056
|
+
metadata: { receiptId: asset.receiptId, receiptHash: asset.receiptHash, originalPath: asset.path, mode: asset.mode }
|
|
1057
|
+
}));
|
|
1058
|
+
retainedFiles = startingFiles.map((file) => ({ ...file, path: file.path.replace("assets/starting-state/", `assets/${provenance.candidateId}/starting-state/`) }));
|
|
1059
|
+
} else if (environment.kind !== "chat" || environment.stateful || environment.toolNames.length || (environment.resources?.length ?? 0) || proposal.taskKind !== "chat" || proposal.diagnosis.requiredTools.length || startingFiles.length || input.startingAssets || provenance.initialAssetsHash !== null)
|
|
965
1060
|
throw new Error("Text preparation cannot silently add tools, state or starting assets.");
|
|
966
1061
|
const sourceIds = new Set(sources.map((source) => source.id));
|
|
967
1062
|
if (!sources.length || sourceIds.size !== sources.length || proposal.sourceIds.some((id) => !sourceIds.has(id)) || proposal.proposedExamples.length !== 1 || proposal.proposedExamples.some((example) => !sourceIds.has(example.sourceId)))
|
|
@@ -970,8 +1065,8 @@ function createPreparedTaskAuthoringWorkspace(input) {
|
|
|
970
1065
|
throw new Error("Prepared Taskset authoring provenance is invalid.");
|
|
971
1066
|
if (!proposal.proposedGraders.length || new Set(proposal.proposedGraders.map((grader) => grader.id)).size !== proposal.proposedGraders.length)
|
|
972
1067
|
throw new Error("Prepared Taskset needs distinct outcome graders.");
|
|
973
|
-
if (proposal.generatedFiles.some((file) => file.role === "environment"))
|
|
974
|
-
throw new Error("Generated code cannot replace the fixed initial
|
|
1068
|
+
if (proposal.generatedFiles.some((file) => file.role === "environment" || file.path === "assets" || file.path.startsWith("assets/")))
|
|
1069
|
+
throw new Error("Generated code cannot replace the fixed initial environment or starting files.");
|
|
975
1070
|
if (proposal.graderFixtures.some((fixture) => fixture.taskIndex !== 0 || fixture.metadata.substituteExpectedOutput === true))
|
|
976
1071
|
throw new Error("Prepared fixtures cannot refer to another task or substitute a historical answer.");
|
|
977
1072
|
const draft = createTasksetDraft({
|
|
@@ -985,12 +1080,13 @@ function createPreparedTaskAuthoringWorkspace(input) {
|
|
|
985
1080
|
draft.environment = environment;
|
|
986
1081
|
draft.graders = proposal.proposedGraders.map((grader) => ({
|
|
987
1082
|
...grader,
|
|
1083
|
+
taskIds: [provenance.candidateId],
|
|
988
1084
|
privileged: true,
|
|
989
1085
|
...grader.kind === "model_judge" ? { rewardEligible: false, calibrationStatus: "pending" } : {},
|
|
990
|
-
metadata: { ...grader.metadata, preparedTask: provenance.candidateId, authoringSkillHash: input.skillHash }
|
|
1086
|
+
metadata: { ...grader.metadata, preparedRewardEligible: grader.rewardEligible, preparedTask: provenance.candidateId, authoringSkillHash: input.skillHash }
|
|
991
1087
|
}));
|
|
992
1088
|
draft.policy = {
|
|
993
|
-
policyVisibleFields: ["input"],
|
|
1089
|
+
policyVisibleFields: environment.kind === "work" ? ["input", "requiredOutputs"] : ["input"],
|
|
994
1090
|
privilegedFields: ["expectedOutput"],
|
|
995
1091
|
hiddenGraderRefs: draft.graders.map((grader) => grader.id),
|
|
996
1092
|
connectedAppScopes: []
|
|
@@ -1005,8 +1101,33 @@ function createPreparedTaskAuthoringWorkspace(input) {
|
|
|
1005
1101
|
policyVisibleContext: {},
|
|
1006
1102
|
privilegedContextRef: null,
|
|
1007
1103
|
sourceRefs: [...sourceIds],
|
|
1104
|
+
...environment.kind === "work" ? {
|
|
1105
|
+
assets: workAssets,
|
|
1106
|
+
requiredOutputs: TaskRequiredOutputSchema.array().min(1).max(100).parse(environment.metadata.requiredOutputs)
|
|
1107
|
+
} : {},
|
|
1008
1108
|
tags: ["prepared-task", "development-exposed"],
|
|
1009
|
-
metadata: {
|
|
1109
|
+
metadata: {
|
|
1110
|
+
preparedTask: provenance,
|
|
1111
|
+
qualificationStatus: "pending",
|
|
1112
|
+
...workAssets ? { portableTaskRecord: {
|
|
1113
|
+
id: provenance.candidateId,
|
|
1114
|
+
clusterKey: provenance.familyKey,
|
|
1115
|
+
split: "validation",
|
|
1116
|
+
input: input.initialInput,
|
|
1117
|
+
expectedOutput: null,
|
|
1118
|
+
policyVisibleContext: {},
|
|
1119
|
+
privilegedContextRef: null,
|
|
1120
|
+
artifactRefs: workAssets.map((asset) => ({
|
|
1121
|
+
id: asset.id,
|
|
1122
|
+
path: asset.artifactRef,
|
|
1123
|
+
contentHash: asset.sha256,
|
|
1124
|
+
sizeBytes: asset.sizeBytes,
|
|
1125
|
+
mediaType: asset.mediaType,
|
|
1126
|
+
visibility: "policy"
|
|
1127
|
+
})),
|
|
1128
|
+
tags: ["prepared-task", "development-exposed"]
|
|
1129
|
+
} } : {}
|
|
1130
|
+
}
|
|
1010
1131
|
})];
|
|
1011
1132
|
draft.graderFixtures = proposal.graderFixtures.map(({ taskIndex: _index, ...fixture }) => ({
|
|
1012
1133
|
...fixture,
|
|
@@ -1026,7 +1147,7 @@ function createPreparedTaskAuthoringWorkspace(input) {
|
|
|
1026
1147
|
return createTasksetDraftWorkspace({
|
|
1027
1148
|
schemaVersion: "openpond.tasksetDraftWorkspace.v1",
|
|
1028
1149
|
draft,
|
|
1029
|
-
files: proposal.generatedFiles.map((generated) => {
|
|
1150
|
+
files: [...retainedFiles, ...proposal.generatedFiles.map((generated) => {
|
|
1030
1151
|
const file = createTasksetDraftFile(generated.path, new TextEncoder().encode(generated.content));
|
|
1031
1152
|
return {
|
|
1032
1153
|
path: file.path,
|
|
@@ -1034,7 +1155,153 @@ function createPreparedTaskAuthoringWorkspace(input) {
|
|
|
1034
1155
|
sizeBytes: file.sizeBytes,
|
|
1035
1156
|
base64: Buffer.from(decodeTasksetDraftFileContent(file.content)).toString("base64")
|
|
1036
1157
|
};
|
|
1037
|
-
})
|
|
1158
|
+
})]
|
|
1159
|
+
});
|
|
1160
|
+
}
|
|
1161
|
+
|
|
1162
|
+
// src/dataset-preparation-qualification-contracts.ts
|
|
1163
|
+
import { z as z7 } from "zod";
|
|
1164
|
+
var Id5 = z7.string().trim().min(1).max(240);
|
|
1165
|
+
var Text2 = z7.string().trim().min(1).max(2e4);
|
|
1166
|
+
var PreparedQualificationWitnessSchema = z7.object({
|
|
1167
|
+
id: Id5,
|
|
1168
|
+
label: z7.enum(["positive", "incorrect", "incomplete", "adversarial"]),
|
|
1169
|
+
output: z7.record(z7.string(), z7.unknown()),
|
|
1170
|
+
artifacts: z7.array(z7.object({
|
|
1171
|
+
path: TaskRequiredOutputSchema.shape.path,
|
|
1172
|
+
mediaType: TaskRequiredOutputSchema.shape.mediaType,
|
|
1173
|
+
base64: z7.string().max(8 * 1024 * 1024)
|
|
1174
|
+
}).strict()).max(100)
|
|
1175
|
+
}).strict().superRefine((value, ctx) => {
|
|
1176
|
+
if (new Set(value.artifacts.map((artifact) => artifact.path)).size !== value.artifacts.length)
|
|
1177
|
+
ctx.addIssue({ code: "custom", message: "Qualification artifacts must have distinct paths." });
|
|
1178
|
+
});
|
|
1179
|
+
var PreparedQualificationPlanSchema = z7.object({
|
|
1180
|
+
schemaVersion: z7.literal("openpond.preparedQualificationPlan.v1"),
|
|
1181
|
+
requirementRefs: z7.array(Id5).min(1).max(100),
|
|
1182
|
+
supported: z7.boolean(),
|
|
1183
|
+
limitations: z7.array(Text2).max(20),
|
|
1184
|
+
independentVerifier: z7.object({
|
|
1185
|
+
runtime: z7.enum(["isolated_javascript", "sandbox_process"]),
|
|
1186
|
+
source: z7.string().trim().min(1).max(2e5),
|
|
1187
|
+
exportName: z7.literal("verify"),
|
|
1188
|
+
timeoutMs: z7.number().int().min(1).max(6e4)
|
|
1189
|
+
}).strict().nullable(),
|
|
1190
|
+
witnesses: z7.array(PreparedQualificationWitnessSchema).max(20)
|
|
1191
|
+
}).strict().superRefine((value, ctx) => {
|
|
1192
|
+
if (new Set(value.requirementRefs).size !== value.requirementRefs.length || new Set(value.witnesses.map((item) => item.id)).size !== value.witnesses.length)
|
|
1193
|
+
ctx.addIssue({ code: "custom", message: "Qualification evidence identities must be distinct." });
|
|
1194
|
+
if (value.supported && (!value.independentVerifier || value.limitations.length || ["positive", "incorrect", "incomplete", "adversarial"].some((label) => !value.witnesses.some((witness) => witness.label === label))))
|
|
1195
|
+
ctx.addIssue({ code: "custom", message: "Supported qualification needs a complete verifier and witness population without unresolved evidence gaps." });
|
|
1196
|
+
});
|
|
1197
|
+
var PreparedWitnessAdjudicationSchema = z7.object({
|
|
1198
|
+
schemaVersion: z7.literal("openpond.preparedWitnessAdjudication.v1"),
|
|
1199
|
+
witnesses: z7.array(z7.object({
|
|
1200
|
+
id: Id5,
|
|
1201
|
+
failureMode: z7.enum(["none", "incorrect", "incomplete", "adversarial", "unverifiable"]),
|
|
1202
|
+
requirements: z7.array(z7.object({ reference: Id5, status: z7.enum(["satisfied", "violated", "unverifiable"]), reason: Text2 }).strict()).min(1).max(100)
|
|
1203
|
+
}).strict()).min(4).max(20)
|
|
1204
|
+
}).strict();
|
|
1205
|
+
var PreparedCheckerAuditSchema = z7.object({
|
|
1206
|
+
schemaVersion: z7.literal("openpond.preparedCheckerAudit.v1"),
|
|
1207
|
+
requirements: z7.array(z7.object({ reference: Id5, adequatelyChecked: z7.boolean(), oracleAdequatelyChecked: z7.boolean(), reason: Text2 }).strict()).min(1).max(100),
|
|
1208
|
+
executionIsolationPassed: z7.boolean(),
|
|
1209
|
+
futureEvidenceLeak: z7.boolean(),
|
|
1210
|
+
unresolvedLimitations: z7.array(Text2).max(20),
|
|
1211
|
+
passed: z7.boolean()
|
|
1212
|
+
}).strict();
|
|
1213
|
+
|
|
1214
|
+
// src/dataset-preparation-assembly.ts
|
|
1215
|
+
function assemblePreparedTaskWorkspaces(input) {
|
|
1216
|
+
const base = validateTasksetDraftWorkspace(input.base);
|
|
1217
|
+
const candidates = input.candidates.map(validateTasksetDraftWorkspace);
|
|
1218
|
+
if (!candidates.length || base.draft.status !== "draft" || candidates.some((workspace) => workspace.draft.profileId !== base.draft.profileId || workspace.draft.tasks.length !== 1))
|
|
1219
|
+
throw new Error("Prepared assembly requires owned individual task workspaces and an editable destination.");
|
|
1220
|
+
const environment = base.draft.tasks.length ? base.draft.environment : candidates[0].draft.environment;
|
|
1221
|
+
if (candidates.some((workspace) => contentHash(workspace.draft.environment) !== contentHash(environment)))
|
|
1222
|
+
throw new Error("Prepared tasks require separate versions for incompatible execution environments.");
|
|
1223
|
+
const tasks = [...base.draft.tasks], files = [...base.files], graders = base.draft.graders.map((grader) => ({
|
|
1224
|
+
...grader,
|
|
1225
|
+
...grader.taskIds ? {} : { taskIds: base.draft.tasks.map((task) => task.id) }
|
|
1226
|
+
}));
|
|
1227
|
+
if (!base.draft.tasks.length && graders.length) throw new Error("Destination graders require their original task population.");
|
|
1228
|
+
const sources = new Map(base.draft.sourceRefs.map((source) => [source.id, source]));
|
|
1229
|
+
const fixtures = [...base.draft.graderFixtures];
|
|
1230
|
+
const inventory = [...base.draft.metadata.portableFileInventory ?? []];
|
|
1231
|
+
const candidateIds = [];
|
|
1232
|
+
for (const workspace of candidates) {
|
|
1233
|
+
const task = workspace.draft.tasks[0];
|
|
1234
|
+
if (tasks.some((existing) => existing.id === task.id)) throw new Error("Prepared assembly repeats a task identity.");
|
|
1235
|
+
const provenance = task.metadata.preparedTask;
|
|
1236
|
+
if (provenance?.preparationId !== input.preparationId) throw new Error("Prepared task belongs to another run.");
|
|
1237
|
+
const sourceIds = new Map(workspace.draft.sourceRefs.map((source) => [source.id, `prepared-source-${contentHash([task.id, source.id]).slice(0, 40)}`]));
|
|
1238
|
+
candidateIds.push(task.id);
|
|
1239
|
+
tasks.push({
|
|
1240
|
+
...task,
|
|
1241
|
+
sourceRefs: task.sourceRefs.map((id) => sourceIds.get(id)),
|
|
1242
|
+
...task.assets ? { assets: task.assets.map((asset) => ({ ...asset, sourceRefId: sourceIds.get(asset.sourceRefId) })) } : {}
|
|
1243
|
+
});
|
|
1244
|
+
const namespace = `graders/${task.id}/`;
|
|
1245
|
+
for (const file of workspace.files) files.push({ ...file, path: file.path.startsWith("assets/") ? file.path : namespace + file.path });
|
|
1246
|
+
const graderIds = new Map(workspace.draft.graders.map((grader) => [grader.id, `prepared-grader-${contentHash([task.id, grader.id]).slice(0, 40)}`]));
|
|
1247
|
+
for (const grader of workspace.draft.graders) {
|
|
1248
|
+
const id = graderIds.get(grader.id);
|
|
1249
|
+
graders.push({
|
|
1250
|
+
...grader,
|
|
1251
|
+
id,
|
|
1252
|
+
taskIds: [task.id],
|
|
1253
|
+
...grader.kind === "custom_verifier" ? { module: namespace + grader.module } : {},
|
|
1254
|
+
metadata: { ...grader.metadata, preparedTask: task.id, composedFrom: { id: grader.id, contentHash: contentHash(grader) } }
|
|
1255
|
+
});
|
|
1256
|
+
}
|
|
1257
|
+
for (const fixture of workspace.draft.graderFixtures) {
|
|
1258
|
+
const projection = fixture.metadata.rewardCalibration;
|
|
1259
|
+
if (projection) fixtures.push({ ...fixture, metadata: { ...fixture.metadata, rewardCalibration: {
|
|
1260
|
+
...projection,
|
|
1261
|
+
graderId: graderIds.get(projection.graderId ?? projection.sourceReward.id)
|
|
1262
|
+
} } });
|
|
1263
|
+
else fixtures.push({ ...fixture, id: `prepared-fixture-${contentHash([task.id, fixture.id]).slice(0, 40)}` });
|
|
1264
|
+
}
|
|
1265
|
+
for (const entry of workspace.draft.metadata.portableFileInventory ?? []) inventory.push({
|
|
1266
|
+
...entry,
|
|
1267
|
+
sourcePath: entry.sourcePath.startsWith("assets/") ? entry.sourcePath : namespace + entry.sourcePath
|
|
1268
|
+
});
|
|
1269
|
+
for (const source of workspace.draft.sourceRefs) sources.set(sourceIds.get(source.id), {
|
|
1270
|
+
...source,
|
|
1271
|
+
id: sourceIds.get(source.id),
|
|
1272
|
+
metadata: { ...source.metadata, assemblyOriginalSourceId: source.id }
|
|
1273
|
+
});
|
|
1274
|
+
}
|
|
1275
|
+
const policyVisibleFields = [...new Set(candidates.flatMap((workspace) => workspace.draft.policy.policyVisibleFields).concat(base.draft.tasks.length ? base.draft.policy.policyVisibleFields : []))];
|
|
1276
|
+
return createTasksetDraftWorkspace({
|
|
1277
|
+
schemaVersion: base.schemaVersion,
|
|
1278
|
+
files,
|
|
1279
|
+
draft: {
|
|
1280
|
+
...base.draft,
|
|
1281
|
+
name: base.draft.name.trim() || `Prepared ${candidates.length} tasks`,
|
|
1282
|
+
objective: base.draft.objective.trim() || candidates.map((workspace) => workspace.draft.objective).join("\n").slice(0, 5e4),
|
|
1283
|
+
revision: input.revision,
|
|
1284
|
+
updatedAt: input.now,
|
|
1285
|
+
environment,
|
|
1286
|
+
tasks,
|
|
1287
|
+
graders,
|
|
1288
|
+
graderFixtures: fixtures,
|
|
1289
|
+
sourceRefs: [...sources.values()],
|
|
1290
|
+
policy: {
|
|
1291
|
+
...base.draft.policy,
|
|
1292
|
+
policyVisibleFields,
|
|
1293
|
+
privilegedFields: [.../* @__PURE__ */ new Set(["expectedOutput", ...base.draft.policy.privilegedFields])],
|
|
1294
|
+
hiddenGraderRefs: graders.map((grader) => grader.id)
|
|
1295
|
+
},
|
|
1296
|
+
metadata: { ...base.draft.metadata, portableFileInventory: inventory, datasetPreparation: {
|
|
1297
|
+
schemaVersion: "openpond.datasetPreparationAssembly.v1",
|
|
1298
|
+
preparationId: input.preparationId,
|
|
1299
|
+
candidateIds,
|
|
1300
|
+
baseWorkspaceHash: base.contentHash,
|
|
1301
|
+
authoredWorkspaceHashes: candidates.map((workspace) => workspace.contentHash),
|
|
1302
|
+
qualification: "pending"
|
|
1303
|
+
} }
|
|
1304
|
+
}
|
|
1038
1305
|
});
|
|
1039
1306
|
}
|
|
1040
1307
|
export {
|
|
@@ -1071,10 +1338,19 @@ export {
|
|
|
1071
1338
|
OpenPondDatasetPopulationClient,
|
|
1072
1339
|
OpenPondDatasetPreparationClient,
|
|
1073
1340
|
OpenPondDatasetWorkspaceClient,
|
|
1341
|
+
PreparedCheckerAuditSchema,
|
|
1342
|
+
PreparedQualificationPlanSchema,
|
|
1343
|
+
PreparedQualificationWitnessSchema,
|
|
1344
|
+
PreparedRepositoryStartingStateSchema,
|
|
1074
1345
|
PreparedTaskEvidenceSpanSchema,
|
|
1075
1346
|
PreparedTaskProvenanceSchema,
|
|
1076
1347
|
PreparedTaskQualificationSchema,
|
|
1348
|
+
PreparedWitnessAdjudicationSchema,
|
|
1349
|
+
assemblePreparedTaskWorkspaces,
|
|
1077
1350
|
compileTasksetDraftWorkspace,
|
|
1078
|
-
|
|
1351
|
+
connectedStartingAssetReference,
|
|
1352
|
+
createPreparedTaskAuthoringWorkspace,
|
|
1353
|
+
parseConnectedStartingAssetReference,
|
|
1354
|
+
preparedRepositoryEnvironment
|
|
1079
1355
|
};
|
|
1080
1356
|
//# sourceMappingURL=dataset-workspaces.js.map
|