openpond-sdk 0.5.14 → 0.5.16

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 (59) hide show
  1. package/LEARNING.md +12 -0
  2. package/TRAINING_PROTOCOL.md +6 -0
  3. package/dist/{chunk-F5JBFRAH.js → chunk-GZOXT7YE.js} +228 -185
  4. package/dist/chunk-GZOXT7YE.js.map +7 -0
  5. package/dist/{chunk-LV4TDE5S.js → chunk-IIZV2N5F.js} +2 -2
  6. package/dist/{chunk-7VZB24CH.js → chunk-NHMZCVZO.js} +2 -2
  7. package/dist/{chunk-4IDTRFW2.js → chunk-NZ35HEEK.js} +2 -1
  8. package/dist/{chunk-4IDTRFW2.js.map → chunk-NZ35HEEK.js.map} +2 -2
  9. package/dist/{chunk-6QWV5TEJ.js → chunk-SMWHGQ5W.js} +2 -2
  10. package/dist/{chunk-WSTMQGOY.js → chunk-TLXDZ4VG.js} +6 -6
  11. package/dist/{chunk-WSTMQGOY.js.map → chunk-TLXDZ4VG.js.map} +2 -2
  12. package/dist/model-starter-catalog.js +2 -2
  13. package/dist/model-starters.js +2 -2
  14. package/dist/taskset-drafts.js +4 -4
  15. package/dist/taskset-packages.js +5 -5
  16. package/dist/training-bundle.js +66 -15
  17. package/dist/training-bundle.js.map +4 -4
  18. package/dist/training.js +5 -1
  19. package/dist/types/packages/sdk/src/learning-batch-assets.d.ts +62 -0
  20. package/dist/types/packages/sdk/src/learning-batch-assets.d.ts.map +1 -0
  21. package/dist/types/packages/sdk/src/model-batch-review-contracts.d.ts +18 -0
  22. package/dist/types/packages/sdk/src/model-batch-review-contracts.d.ts.map +1 -1
  23. package/dist/types/packages/sdk/src/model-batch-review-preparation.d.ts +14 -0
  24. package/dist/types/packages/sdk/src/model-batch-review-preparation.d.ts.map +1 -1
  25. package/dist/types/packages/sdk/src/model-batch-review.d.ts +14 -0
  26. package/dist/types/packages/sdk/src/model-batch-review.d.ts.map +1 -1
  27. package/dist/types/packages/sdk/src/model-starter-catalog.d.ts +14 -0
  28. package/dist/types/packages/sdk/src/model-starter-catalog.d.ts.map +1 -1
  29. package/dist/types/packages/sdk/src/model-starters.d.ts +32 -0
  30. package/dist/types/packages/sdk/src/model-starters.d.ts.map +1 -1
  31. package/dist/types/packages/sdk/src/model-taskset-derivation.d.ts +18 -0
  32. package/dist/types/packages/sdk/src/model-taskset-derivation.d.ts.map +1 -1
  33. package/dist/types/packages/sdk/src/taskset-authored-contracts.d.ts +1 -1
  34. package/dist/types/packages/sdk/src/taskset-authored-files.d.ts +1 -1
  35. package/dist/types/packages/sdk/src/taskset-draft-api-contracts.d.ts +2 -2
  36. package/dist/types/packages/sdk/src/taskset-draft-client.d.ts +5 -5
  37. package/dist/types/packages/sdk/src/taskset-draft-core.d.ts +1 -1
  38. package/dist/types/packages/sdk/src/taskset-draft-document.d.ts +1 -1
  39. package/dist/types/packages/sdk/src/taskset-draft-package-compiler.d.ts +14 -0
  40. package/dist/types/packages/sdk/src/taskset-draft-package-compiler.d.ts.map +1 -1
  41. package/dist/types/packages/sdk/src/taskset-draft-source.d.ts +2 -2
  42. package/dist/types/packages/sdk/src/taskset-draft-workspace.d.ts +2 -2
  43. package/dist/types/packages/sdk/src/taskset-package-client.d.ts +54 -0
  44. package/dist/types/packages/sdk/src/taskset-package-client.d.ts.map +1 -1
  45. package/dist/types/packages/sdk/src/taskset-package-contracts.d.ts +36 -0
  46. package/dist/types/packages/sdk/src/taskset-package-contracts.d.ts.map +1 -1
  47. package/dist/types/packages/sdk/src/taskset-package-projection.d.ts +15 -1
  48. package/dist/types/packages/sdk/src/taskset-package-projection.d.ts.map +1 -1
  49. package/dist/types/packages/sdk/src/training-harness-sources.d.ts +141 -0
  50. package/dist/types/packages/sdk/src/training-harness-sources.d.ts.map +1 -0
  51. package/dist/types/packages/sdk/src/training-learning-batch.d.ts +5 -2
  52. package/dist/types/packages/sdk/src/training-learning-batch.d.ts.map +1 -1
  53. package/dist/types/packages/sdk/src/training.d.ts +127 -0
  54. package/dist/types/packages/sdk/src/training.d.ts.map +1 -1
  55. package/package.json +2 -2
  56. package/dist/chunk-F5JBFRAH.js.map +0 -7
  57. /package/dist/{chunk-LV4TDE5S.js.map → chunk-IIZV2N5F.js.map} +0 -0
  58. /package/dist/{chunk-7VZB24CH.js.map → chunk-NHMZCVZO.js.map} +0 -0
  59. /package/dist/{chunk-6QWV5TEJ.js.map → chunk-SMWHGQ5W.js.map} +0 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/training.ts", "../src/training-harness-sources.ts", "../src/training-candidate-decisions.ts", "../src/training-evaluation-results.ts", "../src/training-grading-plan.ts", "../src/training-evaluation-source.ts"],
4
+ "sourcesContent": ["import { z } from \"zod\";\nimport { createTrainingHarnessSourceClient } from \"./training-harness-sources.js\";\nexport { TrainingHarnessSourcePublicationSchema } from \"./training-harness-sources.js\";\nimport { createTrainingCandidateDecisionClient } from \"./training-candidate-decisions.js\";\nexport { TrainingCandidateDecisionRequestSchema, TrainingCandidateDecisionSchema, trainingCandidateDecisionHash, parseAndVerifyTrainingCandidateDecision, type TrainingCandidateDecisionRequest, type TrainingCandidateDecision, type TrainingCandidateDecisionTarget } from \"./training-candidate-decisions.js\";\nimport { parseAndVerifyTrainingEvaluationTaskPage } from \"./training-evaluation-results.js\";\n\nexport { deterministicTrainingRewardSource } from \"./training-grading-plan.js\";\nexport { TRAINING_EVALUATION_SOURCE_PATH, TrainingEvaluationSourceSchema, assertTrainingEvaluationIsolation, trainingEvaluationSourceRef, type TrainingEvaluationSource } from \"./training-evaluation-source.js\";\nexport { TrainingEvaluationTaskResultSchema, TrainingEvaluationTaskPageSchema, trainingEvaluationTaskPageHash, parseAndVerifyTrainingEvaluationTaskPage, type TrainingEvaluationTaskResult, type TrainingEvaluationTaskPage } from \"./training-evaluation-results.js\";\n\nimport {\n ModelProjectBaseModelSchema,\n ModelProjectImmutableRefSchema,\n ModelProjectRecipeDocumentSchema,\n ModelProjectVersionedRefSchema,\n} from \"./model-projects.js\";\nimport {\n OPENPOND_TRAINING_MEDIA_TYPE,\n TRAINING_API_RESPONSE_MAX_BYTES,\n TRAINING_INPUT_ARTIFACT_MAX_BYTES,\n TRAINING_JOB_SUBMISSION_MAX_BYTES,\n OpenPondProtocolError,\n assertCanonicalPayloadSize,\n canonicalSha256,\n parseBoundedJson,\n} from \"./protocol.js\";\n\nexport {\n OPENPOND_TRAINING_MEDIA_TYPE,\n OPENPOND_TRAINING_PROTOCOL_MAJOR,\n TRAINING_API_RESPONSE_MAX_BYTES,\n TRAINING_INPUT_ARTIFACT_MAX_BYTES,\n TRAINING_JOB_SUBMISSION_MAX_BYTES,\n OpenPondProtocolError,\n assertCanonicalPayloadSize,\n canonicalJson,\n canonicalJsonByteLength,\n canonicalSha256,\n parseBoundedJson,\n} from \"./protocol.js\";\n\nconst IdSchema = z.string().trim().min(1).max(500);\nconst HashSchema = z.string().regex(/^[a-f0-9]{64}$/);\nconst TimestampSchema = z.string().datetime({ offset: true });\n\n/**\n * Stages a content-addressed immutable input before Job admission. The payload\n * is deliberately opaque to the transport contract: its declared kind owns\n * the executable schema, while the envelope provides bounded bytes,\n * idempotency, and a stable manifest lookup key.\n */\nexport const TrainingInputArtifactUploadSchema = z\n .object({\n schemaVersion: z.literal(\"openpond.trainingInputArtifactUpload.v2\"),\n kind: z.enum([\"portable_training_bundle\", \"reward_model_dataset\"]),\n idempotencyKey: z.string().trim().min(1).max(500),\n sourceManifest: ModelProjectImmutableRefSchema,\n payload: z.unknown(),\n contentHash: HashSchema,\n })\n .strict();\n\nexport const TrainingInputArtifactSchema = z\n .object({\n schemaVersion: z.literal(\"openpond.trainingInputArtifact.v2\"),\n kind: z.enum([\"portable_training_bundle\", \"reward_model_dataset\"]),\n sourceManifest: ModelProjectImmutableRefSchema,\n artifactRef: z.string().trim().min(1).max(2_000),\n contentHash: HashSchema,\n sizeBytes: z.number().int().positive(),\n createdAt: TimestampSchema,\n })\n .strict();\n\nexport async function trainingInputArtifactUploadHash(\n upload: Omit<TrainingInputArtifactUpload, \"contentHash\"> | TrainingInputArtifactUpload,\n): Promise<string> {\n const { contentHash: _contentHash, ...content } = upload as TrainingInputArtifactUpload;\n return canonicalSha256(content);\n}\n\nexport async function parseAndVerifyTrainingInputArtifactUpload(\n value: unknown,\n): Promise<TrainingInputArtifactUpload> {\n assertCanonicalPayloadSize(\n value,\n TRAINING_INPUT_ARTIFACT_MAX_BYTES,\n \"Training input artifact\",\n );\n const parsed = TrainingInputArtifactUploadSchema.parse(value);\n const expectedHash = await trainingInputArtifactUploadHash(parsed);\n if (parsed.contentHash !== expectedHash) {\n throw new OpenPondProtocolError(\n \"content_hash_mismatch\",\n `Training input artifact contentHash ${parsed.contentHash} does not match ${expectedHash}.`,\n );\n }\n return parsed;\n}\n\nexport const TrainingJobKindSchema = z.enum([\n \"reward_model_train\",\n \"policy_optimize\",\n]);\n\nexport const TrainingJobStateSchema = z.enum([\n \"queued\",\n \"admitting\",\n \"provisioning\",\n \"running\",\n \"stopping\",\n \"cancelling\",\n \"succeeded\",\n \"failed\",\n \"cancelled\",\n]);\n\nexport const TrainingCapabilityRequirementSchema = z\n .object({\n id: IdSchema,\n version: z.string().trim().min(1).max(200).nullable().default(null),\n required: z.boolean().default(true),\n })\n .strict();\n\nexport const TrainingJobSourceSchema = z\n .object({\n modelProject: z\n .object({\n id: IdSchema,\n portableProjectId: IdSchema,\n revision: z.number().int().positive(),\n contentHash: HashSchema,\n })\n .strict(),\n harnessRunManifest: ModelProjectImmutableRefSchema,\n harnessRelease: ModelProjectImmutableRefSchema,\n taskset: ModelProjectVersionedRefSchema,\n tasksetRelease: ModelProjectImmutableRefSchema,\n evaluation: z.object({\n taskset: ModelProjectVersionedRefSchema,\n dataset: ModelProjectImmutableRefSchema,\n }).strict().nullable().optional(),\n dataset: ModelProjectImmutableRefSchema,\n evidenceSets: z.array(ModelProjectImmutableRefSchema).max(10_000),\n })\n .strict();\n\nexport const RewardModelTrainingRequestSchema = z\n .object({\n kind: z.literal(\"reward_model_train\"),\n baseModel: ModelProjectBaseModelSchema,\n preferenceDatasetRelease: ModelProjectImmutableRefSchema,\n processorRelease: ModelProjectImmutableRefSchema,\n recipe: z\n .object({\n schemaVersion: z.literal(\"openpond.rewardModelRecipe.v1\"),\n method: z.literal(\"reward_model\"),\n parameterization: z.literal(\"lora_with_scalar_head\"),\n })\n .catchall(z.unknown()),\n })\n .strict();\n\nconst DeterministicRewardSourceSchema = z\n .object({\n kind: z.literal(\"deterministic\"),\n grader: ModelProjectImmutableRefSchema,\n composer: ModelProjectImmutableRefSchema.nullable().default(null),\n })\n .strict();\n\nconst LearnedRewardSourceSchema = z\n .object({\n kind: z.literal(\"learned_reward\"),\n rewardModelVersion: ModelProjectImmutableRefSchema,\n qualificationReport: ModelProjectImmutableRefSchema.nullable().default(null),\n evaluationReferences: z\n .array(ModelProjectImmutableRefSchema)\n .max(1_000)\n .default([]),\n scorerArtifact: z\n .object({\n artifactRef: z.string().trim().min(1).max(2_000),\n contentHash: HashSchema,\n executionReceipt: ModelProjectImmutableRefSchema,\n })\n .strict(),\n processorRelease: ModelProjectImmutableRefSchema,\n rewardComposerRelease: ModelProjectImmutableRefSchema,\n })\n .strict();\n\nexport const PolicyOptimizationRequestSchema = z\n .object({\n kind: z.literal(\"policy_optimize\"),\n baseModel: ModelProjectBaseModelSchema,\n recipe: ModelProjectRecipeDocumentSchema,\n rewardSource: z.discriminatedUnion(\"kind\", [\n DeterministicRewardSourceSchema,\n LearnedRewardSourceSchema,\n ]),\n resumeFrom: ModelProjectImmutableRefSchema.nullable().default(null),\n })\n .strict();\n\nexport const TrainingJobRequestSchema = z.discriminatedUnion(\"kind\", [\n RewardModelTrainingRequestSchema,\n PolicyOptimizationRequestSchema,\n]);\n\nexport const TrainingJobApprovalSchema = z\n .object({\n approvalHash: HashSchema,\n approvedAt: TimestampSchema,\n exportApproved: z.boolean(),\n maximumSpendUsd: z.number().nonnegative(),\n retentionDays: z.number().int().nonnegative().nullable(),\n region: z.string().trim().min(1).max(200).nullable().default(null),\n })\n .strict();\n\nexport const TrainingJobSubmissionSchema = z\n .object({\n schemaVersion: z.literal(\"openpond.trainingJobSubmission.v2\"),\n idempotencyKey: z.string().trim().min(1).max(500),\n name: z.string().trim().min(1).max(200),\n source: TrainingJobSourceSchema,\n job: TrainingJobRequestSchema,\n requestedCapabilities: z\n .array(TrainingCapabilityRequirementSchema)\n .max(1_000),\n placementObjective: z.enum([\"fast\", \"balanced\", \"economical\"]),\n budget: z\n .object({\n maximumSpendUsd: z.number().nonnegative(),\n maximumWallSeconds: z.number().int().positive(),\n })\n .strict(),\n approval: TrainingJobApprovalSchema,\n contentHash: HashSchema,\n })\n .strict()\n .superRefine((submission, context) => {\n if (submission.approval.maximumSpendUsd !== submission.budget.maximumSpendUsd) {\n context.addIssue({\n code: \"custom\",\n path: [\"approval\", \"maximumSpendUsd\"],\n message: \"Approved spend must equal the immutable Job budget.\",\n });\n }\n });\n\nexport async function trainingJobSubmissionHash(\n submission: Omit<TrainingJobSubmission, \"contentHash\"> | TrainingJobSubmission,\n): Promise<string> {\n const { contentHash: _contentHash, ...content } = submission as TrainingJobSubmission;\n return canonicalSha256(content);\n}\n\nexport async function parseAndVerifyTrainingJobSubmission(\n value: unknown,\n): Promise<TrainingJobSubmission> {\n assertCanonicalPayloadSize(\n value,\n TRAINING_JOB_SUBMISSION_MAX_BYTES,\n \"Training Job submission\",\n );\n const parsed = TrainingJobSubmissionSchema.parse(value);\n const expectedHash = await trainingJobSubmissionHash(parsed);\n if (parsed.contentHash !== expectedHash) {\n throw new OpenPondProtocolError(\n \"content_hash_mismatch\",\n `Training Job contentHash ${parsed.contentHash} does not match ${expectedHash}.`,\n );\n }\n return parsed;\n}\n\nexport const TrainingJobSchema = z\n .object({\n schemaVersion: z.literal(\"openpond.trainingJob.v2\"),\n id: IdSchema,\n teamId: IdSchema,\n kind: TrainingJobKindSchema,\n modelProjectId: IdSchema,\n portableProjectId: IdSchema,\n sourceProjectRevision: z.number().int().positive(),\n submissionHash: HashSchema,\n state: TrainingJobStateSchema,\n phase: z.string().trim().min(1).max(200),\n version: z.number().int().nonnegative(),\n progress: z.number().min(0).max(1),\n rolloutProgress: z\n .object({\n groupsCompleted: z.number().int().nonnegative(),\n groupsTarget: z.number().int().nonnegative(),\n optimizerUpdatesApplied: z.number().int().nonnegative(),\n optimizerUpdatesSkipped: z.number().int().nonnegative(),\n })\n .strict(),\n accruedSpendUsd: z.number().nonnegative(),\n terminalReason: z.string().trim().min(1).max(5_000).nullable(),\n createdAt: TimestampSchema,\n updatedAt: TimestampSchema,\n completedAt: TimestampSchema.nullable(),\n })\n .strict();\n\nexport const TrainingJobPageSchema = z\n .object({\n schemaVersion: z.literal(\"openpond.trainingJobPage.v2\"),\n jobs: z.array(TrainingJobSchema).max(1_000),\n nextCursor: z.string().trim().min(1).max(2_000).nullable(),\n })\n .strict();\n\nexport const TrainingJobEventSchema = z\n .object({\n schemaVersion: z.literal(\"openpond.trainingJobEvent.v2\"),\n id: IdSchema,\n jobId: IdSchema,\n sequence: z.number().int().nonnegative(),\n type: IdSchema,\n phase: z.string().trim().min(1).max(200),\n message: z.string().trim().min(1).max(5_000).nullable(),\n data: z.record(z.string(), z.unknown()).default({}),\n createdAt: TimestampSchema,\n })\n .strict();\n\nexport const TrainingJobLogSchema = z\n .object({\n schemaVersion: z.literal(\"openpond.trainingJobLog.v2\"),\n jobId: IdSchema,\n sequence: z.number().int().nonnegative(),\n level: z.enum([\"debug\", \"info\", \"warning\", \"error\"]),\n message: z.string().max(20_000),\n createdAt: TimestampSchema,\n })\n .strict();\n\nexport const TrainingJobControlRequestSchema = z\n .object({ expectedVersion: z.number().int().nonnegative() })\n .strict();\n\nexport const TrainingJobOutputSchema = z\n .object({\n schemaVersion: z.literal(\"openpond.trainingJobOutput.v2\"),\n id: IdSchema,\n jobId: IdSchema,\n kind: z.enum([\n \"checkpoint\",\n \"adapter\",\n \"scorer\",\n \"metrics\",\n \"evaluation\",\n \"trace\",\n \"receipt\",\n ]),\n artifactRef: z.string().trim().min(1).max(2_000),\n contentHash: HashSchema,\n sizeBytes: z.number().int().nonnegative(),\n metadata: z.record(z.string(), z.unknown()).default({}),\n createdAt: TimestampSchema,\n })\n .strict();\n\nexport const TrainingExecutionReceiptSchema = z\n .object({\n schemaVersion: z.literal(\"openpond.trainingExecutionReceipt.v2\"),\n id: IdSchema,\n teamId: IdSchema,\n jobId: IdSchema,\n submissionHash: HashSchema,\n manifestHash: HashSchema,\n recipeHash: HashSchema,\n capabilityHash: HashSchema,\n runtimeRelease: ModelProjectImmutableRefSchema,\n inputs: z.array(ModelProjectImmutableRefSchema).max(10_000),\n outputs: z.array(ModelProjectImmutableRefSchema).max(10_000),\n spendUsd: z.number().nonnegative(),\n durationSeconds: z.number().nonnegative(),\n cleanupComplete: z.boolean(),\n issuer: IdSchema,\n issuedAt: TimestampSchema,\n signature: z.string().trim().min(1).max(10_000).nullable(),\n })\n .strict();\n\nexport async function trainingExecutionReceiptHash(\n receipt: TrainingExecutionReceipt,\n): Promise<string> {\n return canonicalSha256(TrainingExecutionReceiptSchema.parse(receipt));\n}\n\nexport async function parseAndVerifyTrainingExecutionReceipt(\n value: unknown,\n expected: {\n id: string;\n contentHash: string;\n teamId?: string;\n jobId?: string;\n requireCleanup?: boolean;\n },\n): Promise<TrainingExecutionReceipt> {\n const receipt = TrainingExecutionReceiptSchema.parse(value);\n const expectedId = IdSchema.parse(expected.id);\n const expectedHash = HashSchema.parse(expected.contentHash);\n const actualHash = await trainingExecutionReceiptHash(receipt);\n if (receipt.id !== expectedId || actualHash !== expectedHash) {\n throw new OpenPondProtocolError(\n \"execution_receipt_mismatch\",\n \"The execution receipt identity or canonical content hash did not match.\",\n );\n }\n if (expected.teamId !== undefined && receipt.teamId !== IdSchema.parse(expected.teamId)) {\n throw new OpenPondProtocolError(\n \"execution_receipt_team_mismatch\",\n \"The execution receipt belongs to a different team.\",\n );\n }\n if (expected.jobId !== undefined && receipt.jobId !== IdSchema.parse(expected.jobId)) {\n throw new OpenPondProtocolError(\n \"execution_receipt_job_mismatch\",\n \"The execution receipt belongs to a different Training Job.\",\n );\n }\n if ((expected.requireCleanup ?? true) && !receipt.cleanupComplete) {\n throw new OpenPondProtocolError(\n \"execution_cleanup_incomplete\",\n \"The execution receipt does not attest complete terminal cleanup.\",\n );\n }\n return receipt;\n}\n\nexport const TrainingJobOutputsSchema = z\n .object({\n schemaVersion: z.literal(\"openpond.trainingJobOutputs.v2\"),\n outputs: z.array(TrainingJobOutputSchema).max(10_000),\n receipt: TrainingExecutionReceiptSchema.nullable(),\n })\n .strict();\n\nexport const TrainingApiErrorSchema = z\n .object({\n schemaVersion: z.literal(\"openpond.trainingApiError.v2\"),\n code: z.string().trim().min(1).max(200),\n message: z.string().trim().min(1).max(5_000),\n retryable: z.boolean().default(false),\n requestId: z.string().trim().min(1).max(500).nullable().default(null),\n details: z.record(z.string(), z.unknown()).default({}),\n })\n .strict();\n\nexport class OpenPondTrainingApiError extends Error {\n readonly status: number;\n readonly code: string;\n readonly retryable: boolean;\n readonly requestId: string | null;\n readonly details: Record<string, unknown>;\n\n constructor(status: number, error: z.infer<typeof TrainingApiErrorSchema>) {\n super(error.message);\n this.name = \"OpenPondTrainingApiError\";\n this.status = status;\n this.code = error.code;\n this.retryable = error.retryable;\n this.requestId = error.requestId;\n this.details = error.details;\n }\n}\n\nexport const TrainingCapabilitiesSchema = z\n .object({\n schemaVersion: z.literal(\"openpond.trainingCapabilities.v2\"),\n capabilityHash: HashSchema,\n jobKinds: z.array(TrainingJobKindSchema),\n methods: z.array(z.string().trim().min(1).max(200)),\n placements: z.array(\n z.enum([\"local\", \"remote\", \"colocated\", \"provider_native\"]),\n ),\n controls: z\n .object({\n cancel: z.boolean(),\n stopAfterGroup: z.boolean(),\n resumeFromCheckpoint: z.boolean(),\n })\n .strict(),\n limits: z\n .object({\n maximumSpendUsd: z.number().nonnegative(),\n maximumWallSeconds: z.number().int().positive(),\n maximumArtifactBytes: z.number().int().positive(),\n })\n .strict(),\n checkedAt: TimestampSchema,\n expiresAt: TimestampSchema,\n })\n .strict();\n\nexport type TrainingJobSubmission = z.infer<\n typeof TrainingJobSubmissionSchema\n>;\nexport type TrainingInputArtifactUpload = z.infer<\n typeof TrainingInputArtifactUploadSchema\n>;\nexport type TrainingInputArtifact = z.infer<typeof TrainingInputArtifactSchema>;\nexport type TrainingJob = z.infer<typeof TrainingJobSchema>;\nexport type TrainingJobPage = z.infer<typeof TrainingJobPageSchema>;\nexport type TrainingJobEvent = z.infer<typeof TrainingJobEventSchema>;\nexport type TrainingJobLog = z.infer<typeof TrainingJobLogSchema>;\nexport type TrainingJobOutput = z.infer<typeof TrainingJobOutputSchema>;\nexport type TrainingJobOutputs = z.infer<typeof TrainingJobOutputsSchema>;\nexport type TrainingExecutionReceipt = z.infer<\n typeof TrainingExecutionReceiptSchema\n>;\nexport type TrainingCapabilities = z.infer<typeof TrainingCapabilitiesSchema>;\n\nfunction headersRecord(headers: HeadersInit | undefined): Record<string, string> {\n const result: Record<string, string> = {};\n new Headers(headers).forEach((value, key) => {\n result[key] = value;\n });\n return result;\n}\n\nexport function createTrainingClient(input: {\n baseUrl: string;\n fetch?: typeof fetch;\n headers?: HeadersInit | (() => HeadersInit | Promise<HeadersInit>);\n}) {\n const fetchImpl = input.fetch ?? fetch;\n const baseUrl = input.baseUrl.replace(/\\/$/, \"\");\n\n async function request(pathname: string, init?: RequestInit, responseLimit = TRAINING_API_RESPONSE_MAX_BYTES): Promise<unknown> {\n const readOnly = init?.method === undefined || init.method.toUpperCase() === \"GET\";\n const maximumAttempts = readOnly ? 3 : 1;\n for (let attempt = 1; attempt <= maximumAttempts; attempt += 1) {\n let response: Response;\n try {\n const configuredHeaders =\n typeof input.headers === \"function\"\n ? await input.headers()\n : (input.headers ?? {});\n response = await fetchImpl(`${baseUrl}${pathname}`, {\n ...init,\n headers: {\n accept: OPENPOND_TRAINING_MEDIA_TYPE,\n ...(init?.body ? { \"content-type\": OPENPOND_TRAINING_MEDIA_TYPE } : {}),\n ...headersRecord(configuredHeaders),\n ...headersRecord(init?.headers),\n },\n });\n } catch (error) {\n if (\n attempt === maximumAttempts ||\n init?.signal?.aborted ||\n !trainingReadFailureIsRetryable(null, error)\n ) {\n throw error;\n }\n await new Promise((resolve) => setTimeout(resolve, 250 * 2 ** (attempt - 1)));\n continue;\n }\n const body = parseBoundedJson(\n await response.text(),\n responseLimit,\n \"Training API response\",\n );\n if (response.ok) return body;\n const error = trainingApiError(body, response.status);\n if (\n attempt === maximumAttempts ||\n !trainingReadFailureIsRetryable(response.status, error)\n ) {\n throw error;\n }\n await new Promise((resolve) => setTimeout(resolve, 250 * 2 ** (attempt - 1)));\n }\n throw new OpenPondProtocolError(\n \"training_read_retry_exhausted\",\n \"Training read retry loop exhausted without a response.\",\n );\n }\n\n return {\n ...createTrainingHarnessSourceClient(request),\n ...createTrainingCandidateDecisionClient(request),\n async capabilities() {\n return TrainingCapabilitiesSchema.parse(\n unwrapObject(await request(\"/v1/training/capabilities\"), \"capabilities\"),\n );\n },\n async stageArtifact(upload: TrainingInputArtifactUpload) {\n const parsed = await parseAndVerifyTrainingInputArtifactUpload(upload);\n return TrainingInputArtifactSchema.parse(\n unwrapObject(\n await request(\"/v1/training/artifacts\", {\n method: \"POST\",\n body: JSON.stringify(parsed),\n }),\n \"artifact\",\n ),\n );\n },\n async createJob(submission: TrainingJobSubmission) {\n const parsed = await parseAndVerifyTrainingJobSubmission(submission);\n return TrainingJobSchema.parse(\n unwrapObject(\n await request(\"/v1/training/jobs\", {\n method: \"POST\",\n body: JSON.stringify(parsed),\n }),\n \"job\",\n ),\n );\n },\n async listJobs(options: {\n modelProjectId?: string;\n cursor?: string;\n limit?: number;\n } = {}) {\n const parameters = new URLSearchParams();\n if (options.modelProjectId) {\n parameters.set(\"modelProjectId\", IdSchema.parse(options.modelProjectId));\n }\n if (options.cursor) {\n parameters.set(\"cursor\", z.string().trim().min(1).max(2_000).parse(options.cursor));\n }\n if (options.limit !== undefined) {\n parameters.set(\n \"limit\",\n String(z.number().int().min(1).max(1_000).parse(options.limit)),\n );\n }\n const query = parameters.size > 0 ? `?${parameters.toString()}` : \"\";\n return TrainingJobPageSchema.parse(\n await request(`/v1/training/jobs${query}`),\n );\n },\n async getJob(jobId: string) {\n return TrainingJobSchema.parse(\n unwrapObject(\n await request(`/v1/training/jobs/${encodeURIComponent(IdSchema.parse(jobId))}`),\n \"job\",\n ),\n );\n },\n async cancelJob(jobId: string, expectedVersion: number) {\n const control = TrainingJobControlRequestSchema.parse({ expectedVersion });\n return TrainingJobSchema.parse(\n unwrapObject(\n await request(\n `/v1/training/jobs/${encodeURIComponent(IdSchema.parse(jobId))}/cancel`,\n { method: \"POST\", body: JSON.stringify(control) },\n ),\n \"job\",\n ),\n );\n },\n async stopAfterGroup(jobId: string, expectedVersion: number) {\n const control = TrainingJobControlRequestSchema.parse({ expectedVersion });\n return TrainingJobSchema.parse(\n unwrapObject(\n await request(\n `/v1/training/jobs/${encodeURIComponent(IdSchema.parse(jobId))}/stop-after-group`,\n { method: \"POST\", body: JSON.stringify(control) },\n ),\n \"job\",\n ),\n );\n },\n async events(jobId: string) {\n return z\n .array(TrainingJobEventSchema)\n .parse(\n unwrapObject(\n await request(\n `/v1/training/jobs/${encodeURIComponent(IdSchema.parse(jobId))}/events`,\n ),\n \"events\",\n ),\n );\n },\n async outputs(jobId: string) {\n return TrainingJobOutputsSchema.parse(\n await request(\n `/v1/training/jobs/${encodeURIComponent(IdSchema.parse(jobId))}/outputs`,\n ),\n );\n },\n async evaluationTasks(\n jobId: string,\n evaluation: { id: string; contentHash: string },\n options: { cursor?: string; limit?: number } = {},\n ) {\n const id = IdSchema.parse(jobId);\n const reference = ModelProjectImmutableRefSchema.parse(evaluation);\n const parameters = new URLSearchParams();\n const cursor = options.cursor === undefined ? undefined : z.string().regex(/^[1-9]\\d*$/).parse(options.cursor);\n const offset = cursor === undefined ? 0 : z.number().int().min(1).max(9_999).parse(Number(cursor));\n if (cursor !== undefined) parameters.set(\"cursor\", cursor);\n if (options.limit !== undefined) parameters.set(\"limit\", String(z.number().int().min(1).max(100).parse(options.limit)));\n const query = parameters.size ? `?${parameters.toString()}` : \"\";\n return parseAndVerifyTrainingEvaluationTaskPage(\n await request(`/v1/training/jobs/${encodeURIComponent(id)}/evaluations/${encodeURIComponent(reference.id)}/tasks${query}`),\n { jobId: id, evaluation: reference, offset },\n );\n },\n async logs(jobId: string) {\n return z.array(TrainingJobLogSchema).max(100_000).parse(\n unwrapObject(\n await request(\n `/v1/training/jobs/${encodeURIComponent(IdSchema.parse(jobId))}/logs`,\n ),\n \"logs\",\n ),\n );\n },\n };\n}\n\nfunction trainingReadFailureIsRetryable(status: number | null, error: unknown): boolean {\n if (status !== null) {\n return status === 408 || status === 429 || status >= 500;\n }\n if (error instanceof OpenPondTrainingApiError) return error.retryable;\n if (error instanceof OpenPondProtocolError) {\n return error.code === \"invalid_error_response\";\n }\n return error instanceof TypeError;\n}\n\nfunction unwrapObject(value: unknown, key: string): unknown {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) return value;\n return key in value ? (value as Record<string, unknown>)[key] : value;\n}\n\nfunction trainingApiError(value: unknown, status: number): Error {\n const parsed = TrainingApiErrorSchema.safeParse(value);\n if (parsed.success) {\n return new OpenPondTrainingApiError(status, parsed.data);\n }\n return new OpenPondProtocolError(\n \"invalid_error_response\",\n `Training request failed with HTTP ${status} and an invalid error envelope.`,\n );\n}\n", "import { z } from \"zod\";\nimport { ImmutableReleaseRefSchema, validateHarnessSourcePackage, type HarnessSourcePackage, type ImmutableReleaseRef } from \"@openpond/harness\";\nimport { assertCanonicalPayloadSize, TRAINING_INPUT_ARTIFACT_MAX_BYTES } from \"./protocol.js\";\n\nexport const TrainingHarnessSourcePublicationSchema = z.object({\n schemaVersion: z.literal(\"openpond.trainingHarnessSourcePublication.v1\"),\n harnessRelease: ImmutableReleaseRefSchema,\n sourcePackageHash: z.string().regex(/^[a-f0-9]{64}$/),\n sizeBytes: z.number().int().positive().max(TRAINING_INPUT_ARTIFACT_MAX_BYTES),\n}).strict();\n\n/** Publication stores immutable source only; it never starts training. */\nexport function createTrainingHarnessSourceClient(request: (path: string, init?: RequestInit, responseLimit?: number) => Promise<unknown>) {\n const route = (reference: ImmutableReleaseRef) => {\n const ref = ImmutableReleaseRefSchema.parse(reference);\n return `/v1/training/harness-sources/${encodeURIComponent(ref.id)}/${ref.contentHash}`;\n };\n return {\n async publishHarnessSource(value: HarnessSourcePackage) {\n assertCanonicalPayloadSize(value, TRAINING_INPUT_ARTIFACT_MAX_BYTES, \"Training Harness source\");\n const source = validateHarnessSourcePackage(value);\n const portability = source.agentSnapshot.portability;\n if (!portability.portable || portability.blockers.length || portability.localOnlyAssetRefs.length || portability.hostPrivateAssetRefs.length || source.harnessRelease.files.some(file => file.visibility !== \"policy\")) {\n throw new Error(\"Hosted training Harness publication requires portable, policy-visible source.\");\n }\n const result = TrainingHarnessSourcePublicationSchema.parse(await request(route({ id: source.harnessRelease.id, contentHash: source.harnessRelease.contentHash }), { method: \"PUT\", body: JSON.stringify(source) }));\n if (result.harnessRelease.id !== source.harnessRelease.id || result.harnessRelease.contentHash !== source.harnessRelease.contentHash || result.sourcePackageHash !== source.contentHash) {\n throw new Error(\"Published Harness source differs from the selected immutable package.\");\n }\n return result;\n },\n async getHarnessSource(reference: ImmutableReleaseRef) {\n const value = await request(route(reference), undefined, TRAINING_INPUT_ARTIFACT_MAX_BYTES);\n assertCanonicalPayloadSize(value, TRAINING_INPUT_ARTIFACT_MAX_BYTES, \"Training Harness source\");\n return validateHarnessSourcePackage(value, reference);\n },\n };\n}\n", "import { z } from \"zod\";\nimport { ModelProjectImmutableRefSchema } from \"./model-projects.js\";\nimport {\n OpenPondProtocolError,\n assertCanonicalPayloadSize,\n canonicalSha256,\n} from \"./protocol.js\";\n\nconst IdSchema = /* @__PURE__ */ (() => z.string().trim().min(1).max(500))();\nconst HashSchema = /* @__PURE__ */ (() => z.string().regex(/^[a-f0-9]{64}$/))();\n\n/** A reviewed candidate decision never activates serving or alters training evidence. */\nexport const TrainingCandidateDecisionRequestSchema = /* @__PURE__ */ (() => z.object({\n schemaVersion: z.literal(\"openpond.trainingCandidateDecisionRequest.v1\"),\n teamId: IdSchema,\n jobId: IdSchema,\n artifact: ModelProjectImmutableRefSchema,\n evaluation: ModelProjectImmutableRefSchema,\n executionReceipt: ModelProjectImmutableRefSchema,\n decision: z.enum([\"accepted\", \"rejected\"]),\n reason: z.string().trim().min(1).max(5_000),\n idempotencyKey: IdSchema,\n expectedDecision: ModelProjectImmutableRefSchema.nullable(),\n}).strict())();\n\n/** Append-only, authenticated hosted record. Hash verification is not a signature. */\nexport const TrainingCandidateDecisionSchema = /* @__PURE__ */ (() => z.object({\n schemaVersion: z.literal(\"openpond.trainingCandidateDecision.v1\"),\n id: IdSchema,\n request: TrainingCandidateDecisionRequestSchema,\n revision: z.number().int().positive(),\n actor: z.object({ userId: IdSchema, kind: z.enum([\"user\", \"api_key\", \"agent_delegate\"]), id: IdSchema }).strict(),\n decidedAt: z.string().datetime({ offset: true }),\n contentHash: HashSchema,\n}).strict().superRefine((value, context) => {\n if ((value.revision === 1) !== (value.request.expectedDecision === null)) {\n context.addIssue({ code: \"custom\", path: [\"revision\"], message: \"A first decision has no predecessor; later decisions must reference the prior decision.\" });\n }\n if (value.request.expectedDecision?.id === value.id) {\n context.addIssue({ code: \"custom\", path: [\"request\", \"expectedDecision\"], message: \"A decision cannot supersede itself.\" });\n }\n}))();\n\nexport type TrainingCandidateDecisionRequest = z.infer<typeof TrainingCandidateDecisionRequestSchema>;\nexport type TrainingCandidateDecision = z.infer<typeof TrainingCandidateDecisionSchema>;\nexport type TrainingCandidateDecisionTarget = Pick<TrainingCandidateDecisionRequest, \"teamId\" | \"jobId\" | \"artifact\">;\n\nexport async function trainingCandidateDecisionHash(\n value: Omit<TrainingCandidateDecision, \"contentHash\"> | TrainingCandidateDecision,\n): Promise<string> {\n const { contentHash: _contentHash, ...content } = value as TrainingCandidateDecision;\n return canonicalSha256(content);\n}\n\nexport async function parseAndVerifyTrainingCandidateDecision(\n value: unknown,\n expected: TrainingCandidateDecisionTarget & { request?: TrainingCandidateDecisionRequest },\n): Promise<TrainingCandidateDecision> {\n assertCanonicalPayloadSize(value, 32_768, \"Training candidate decision\");\n const parsed = TrainingCandidateDecisionSchema.parse(value);\n if (parsed.contentHash !== await trainingCandidateDecisionHash(parsed)) {\n throw new OpenPondProtocolError(\"content_hash_mismatch\", \"Training candidate decision content hash does not match.\");\n }\n if (parsed.request.teamId !== expected.teamId || parsed.request.jobId !== expected.jobId\n || parsed.request.artifact.id !== expected.artifact.id\n || parsed.request.artifact.contentHash !== expected.artifact.contentHash) {\n throw new OpenPondProtocolError(\"candidate_decision_identity_mismatch\", \"Training candidate decision belongs to a different team, Job or artifact.\");\n }\n if (expected.request && await canonicalSha256(parsed.request) !== await canonicalSha256(TrainingCandidateDecisionRequestSchema.parse(expected.request))) {\n throw new OpenPondProtocolError(\"candidate_decision_request_mismatch\", \"Training candidate decision does not match the submitted review.\");\n }\n return parsed;\n}\n\nexport function createTrainingCandidateDecisionClient(\n request: (path: string, init?: RequestInit) => Promise<unknown>,\n) {\n function route(target: TrainingCandidateDecisionTarget) {\n return `/v1/training/jobs/${encodeURIComponent(IdSchema.parse(target.jobId))}/candidates/${encodeURIComponent(ModelProjectImmutableRefSchema.parse(target.artifact).id)}/decision`;\n }\n return {\n async candidateDecision(\n target: TrainingCandidateDecisionTarget,\n options: { decision?: { id: string; contentHash: string } } = {},\n ): Promise<TrainingCandidateDecision | null> {\n IdSchema.parse(target.teamId);\n const reference = options.decision ? ModelProjectImmutableRefSchema.parse(options.decision) : undefined;\n const query = reference ? `?decisionId=${encodeURIComponent(reference.id)}` : \"\";\n const response = z.object({ decision: z.unknown().nullable() }).strict().parse(await request(`${route(target)}${query}`));\n if (response.decision === null && !reference) return null;\n const decision = await parseAndVerifyTrainingCandidateDecision(response.decision, target);\n if (reference && (decision.id !== reference.id || decision.contentHash !== reference.contentHash)) {\n throw new OpenPondProtocolError(\"candidate_decision_identity_mismatch\", \"Training candidate decision does not match the requested history entry.\");\n }\n return decision;\n },\n async recordCandidateDecision(input: TrainingCandidateDecisionRequest): Promise<TrainingCandidateDecision> {\n const parsed = TrainingCandidateDecisionRequestSchema.parse(input);\n const response = await request(route(parsed), { method: \"POST\", body: JSON.stringify(parsed) });\n return parseAndVerifyTrainingCandidateDecision(response, { ...parsed, request: parsed });\n },\n };\n}\n", "import { z } from \"zod\";\nimport { ModelProjectImmutableRefSchema, ModelProjectVersionedRefSchema } from \"./model-projects.js\";\nimport {\n OpenPondProtocolError,\n TRAINING_API_RESPONSE_MAX_BYTES,\n assertCanonicalPayloadSize,\n canonicalSha256,\n} from \"./protocol.js\";\n\nconst IdSchema = /* @__PURE__ */ (() => z.string().trim().min(1).max(500))();\nconst HashSchema = /* @__PURE__ */ (() => z.string().regex(/^[a-f0-9]{64}$/))();\n\n/** Reviewer-facing evidence only: never a worker response or training sample. */\nexport const TrainingEvaluationTaskResultSchema = /* @__PURE__ */ (() => z.object({\n taskId: IdSchema,\n taskSha256: HashSchema,\n resultSha256: HashSchema,\n input: z.object({\n instruction: z.string().max(1_000_000),\n context: z.record(z.string(), z.unknown()),\n }).strict(),\n output: z.string().max(1_000_000),\n outputSha256: HashSchema,\n score: z.number().finite().min(0).max(1),\n evidence: z.object({\n kind: z.enum([\"worker_command\", \"hosted_trace\", \"local_trace\"]),\n id: IdSchema,\n }).strict(),\n}).strict())();\n\n/** Supplements an existing evaluation; does not replace its terminal receipt. */\nexport const TrainingEvaluationTaskPageSchema = /* @__PURE__ */ (() => z.object({\n schemaVersion: z.literal(\"openpond.trainingEvaluationTaskPage.v1\"),\n jobId: IdSchema,\n teamId: IdSchema,\n evaluation: ModelProjectImmutableRefSchema,\n kind: z.enum([\"baseline\", \"candidate\"]),\n policyVersion: z.number().int().nonnegative(),\n taskset: ModelProjectVersionedRefSchema,\n panelSha256: HashSchema,\n offset: z.number().int().nonnegative(),\n total: z.number().int().min(1).max(10_000),\n tasks: z.array(TrainingEvaluationTaskResultSchema).min(1).max(100),\n nextCursor: z.string().regex(/^[1-9]\\d*$/).nullable(),\n contentHash: HashSchema,\n}).strict().superRefine((page, context) => {\n const end = page.offset + page.tasks.length;\n const expectedCursor = end < page.total ? String(end) : null;\n if (end > page.total || page.nextCursor !== expectedCursor) {\n context.addIssue({ code: \"custom\", path: [\"nextCursor\"], message: \"Evaluation pagination must cover consecutive task positions.\" });\n }\n if (new Set(page.tasks.map((task) => task.taskId)).size !== page.tasks.length) {\n context.addIssue({ code: \"custom\", path: [\"tasks\"], message: \"Evaluation task identities must be unique.\" });\n }\n}))();\n\nexport type TrainingEvaluationTaskResult = z.infer<typeof TrainingEvaluationTaskResultSchema>;\nexport type TrainingEvaluationTaskPage = z.infer<typeof TrainingEvaluationTaskPageSchema>;\n\nexport async function trainingEvaluationTaskPageHash(\n value: Omit<TrainingEvaluationTaskPage, \"contentHash\"> | TrainingEvaluationTaskPage,\n): Promise<string> {\n const { contentHash: _contentHash, ...content } = value as TrainingEvaluationTaskPage;\n return canonicalSha256(content);\n}\n\nexport async function parseAndVerifyTrainingEvaluationTaskPage(\n value: unknown,\n expected: {\n jobId: string;\n evaluation: { id: string; contentHash: string };\n offset?: number;\n teamId?: string;\n },\n): Promise<TrainingEvaluationTaskPage> {\n assertCanonicalPayloadSize(value, TRAINING_API_RESPONSE_MAX_BYTES, \"Training evaluation task page\");\n const page = TrainingEvaluationTaskPageSchema.parse(value);\n const reference = ModelProjectImmutableRefSchema.parse(expected.evaluation);\n if (page.jobId !== IdSchema.parse(expected.jobId)\n || page.evaluation.id !== reference.id\n || page.evaluation.contentHash !== reference.contentHash\n || page.offset !== (expected.offset ?? 0)\n || (expected.teamId !== undefined && page.teamId !== IdSchema.parse(expected.teamId))) {\n throw new OpenPondProtocolError(\"evaluation_page_identity_mismatch\", \"Evaluation results differ from the requested Job, evaluation, or page.\");\n }\n if (await trainingEvaluationTaskPageHash(page) !== page.contentHash) {\n throw new OpenPondProtocolError(\"evaluation_page_hash_mismatch\", \"Evaluation task page content hash did not match.\");\n }\n for (const task of page.tasks) {\n if (await canonicalSha256(task.output) !== task.outputSha256) {\n throw new OpenPondProtocolError(\"evaluation_output_hash_mismatch\", \"A retained evaluation output hash did not match.\");\n }\n }\n return page;\n}\n", "import { z } from \"zod\";\nimport { compileBoundGraders, RewardBindingSchema, RewardReleaseSchema } from \"@openpond/evals/rewards\";\nimport { canonicalSha256 } from \"./protocol.js\";\n\nconst GradersSchema = z.array(z.object({ id: z.string().trim().min(1) }).catchall(z.unknown())).min(1).max(1_000);\nconst RewardExecutionSchema = z.object({\n binding: RewardBindingSchema,\n rewards: z.array(RewardReleaseSchema).min(1).max(100),\n}).strict();\n\n/**\n * The grader reference identifies the entire executed set, including order and\n * configuration. A bound plan additionally identifies its immutable composer,\n * whose sources pin roles, normalization, gates and required-score semantics.\n * Callers must obtain these inputs from their verified immutable bundle.\n */\nexport async function deterministicTrainingRewardSource(input: {\n graders: unknown;\n rewardExecution?: unknown;\n}) {\n const execution = input.rewardExecution ? RewardExecutionSchema.parse(input.rewardExecution) : null;\n const graders = GradersSchema.parse(execution\n ? compileBoundGraders(execution.binding, execution.rewards)\n : input.graders);\n if (new Set(graders.map(grader => grader.id)).size !== graders.length) {\n throw new Error(\"Training grader identities must be unique.\");\n }\n const hash = await canonicalSha256({ schemaVersion: \"openpond.trainingGraderSet.v1\", graders });\n return {\n kind: \"deterministic\" as const,\n grader: { id: `training-graders-${hash.slice(0, 32)}`, contentHash: hash },\n composer: execution ? { id: execution.binding.id, contentHash: execution.binding.contentHash } : null,\n };\n}\n", "import { z } from \"zod\";\nimport { ModelProjectVersionedRefSchema } from \"./model-projects.js\";\nimport { canonicalSha256 } from \"./protocol.js\";\n\nexport const TRAINING_EVALUATION_SOURCE_PATH = \"evaluation-source.json\";\n\nconst TaskIdentitySchema = z.object({\n id: z.string().trim().min(1),\n clusterKey: z.string().trim().min(1),\n split: z.enum([\"train\", \"validation\", \"frozen_eval\"]),\n}).passthrough();\n\n/** Evaluator-only payload. The enclosing resolved bundle pins every byte. */\nexport const TrainingEvaluationSourceSchema = z.object({\n schemaVersion: z.literal(\"openpond.trainingEvaluationSource.v1\"),\n taskset: ModelProjectVersionedRefSchema,\n tasks: z.array(TaskIdentitySchema).min(1).max(10_000),\n assets: z.array(z.object({\n path: z.string().trim().min(1).max(2_000),\n sha256: z.string().regex(/^[a-f0-9]{64}$/),\n sizeBytes: z.number().int().nonnegative(),\n encoding: z.literal(\"base64\"),\n content: z.string().max(32 * 1024 * 1024),\n }).strict()).max(10_000),\n}).strict().superRefine((source, context) => {\n const ids = new Set<string>();\n source.tasks.forEach((task, index) => {\n if (task.split === \"train\") context.addIssue({ code: \"custom\", path: [\"tasks\", index, \"split\"], message: \"Evaluation sources require held-out tasks.\" });\n if (ids.has(task.id)) context.addIssue({ code: \"custom\", path: [\"tasks\", index, \"id\"], message: \"Evaluation task identities must be unique.\" });\n ids.add(task.id);\n });\n});\n\nexport type TrainingEvaluationSource = z.infer<typeof TrainingEvaluationSourceSchema>;\n\nexport function assertTrainingEvaluationIsolation(trainingTasks: unknown, evaluationTasks: unknown): void {\n const training = z.array(TaskIdentitySchema).min(1).max(10_000).parse(trainingTasks);\n const evaluation = z.array(TaskIdentitySchema).min(1).max(10_000).parse(evaluationTasks);\n const trainIds = new Set<string>();\n const trainFamilies = new Set<string>();\n for (const task of training) {\n if (task.split !== \"train\") throw new Error(\"The training population contains a held-out task.\");\n if (trainIds.has(task.id)) throw new Error(\"Training task identities must be unique.\");\n trainIds.add(task.id);\n trainFamilies.add(task.clusterKey);\n }\n const evaluationIds = new Set<string>();\n for (const task of evaluation) {\n if (task.split === \"train\") throw new Error(\"The evaluation population contains a training task.\");\n if (evaluationIds.has(task.id)) throw new Error(\"Evaluation task identities must be unique.\");\n if (trainIds.has(task.id) || trainFamilies.has(task.clusterKey)) {\n throw new Error(\"Training and evaluation tasks or families overlap.\");\n }\n evaluationIds.add(task.id);\n }\n}\n\nexport async function trainingEvaluationSourceRef(input: unknown) {\n const source = TrainingEvaluationSourceSchema.parse(input);\n const hash = await canonicalSha256(source);\n return { taskset: source.taskset, dataset: { id: `training-evaluation-${hash.slice(0, 32)}`, contentHash: hash } };\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["z", "z", "z", "z", "IdSchema", "z", "HashSchema", "z", "z", "z", "z", "IdSchema", "z", "HashSchema", "error"]
7
+ }
@@ -18,7 +18,7 @@ import {
18
18
  tasksetPackageRewardBinding,
19
19
  validateTaskset,
20
20
  validateTasksetPackage
21
- } from "./chunk-WSTMQGOY.js";
21
+ } from "./chunk-TLXDZ4VG.js";
22
22
  import {
23
23
  ModelTasksetDraftPreparationSchema,
24
24
  TasksetDraftFileContentSchema,
@@ -907,4 +907,4 @@ export {
907
907
  saveTasksetDraftWorkspaceFile,
908
908
  decodeTasksetDraftWorkspaceFile
909
909
  };
910
- //# sourceMappingURL=chunk-LV4TDE5S.js.map
910
+ //# sourceMappingURL=chunk-IIZV2N5F.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  GraderSpecSchema,
3
3
  decodeTasksetPackageFile
4
- } from "./chunk-WSTMQGOY.js";
4
+ } from "./chunk-TLXDZ4VG.js";
5
5
  import {
6
6
  CapabilityRequirementSchema,
7
7
  ToolDeclarationSchema
@@ -444,4 +444,4 @@ export {
444
444
  projectLearningBatchGraders,
445
445
  learningVerifierModule
446
446
  };
447
- //# sourceMappingURL=chunk-7VZB24CH.js.map
447
+ //# sourceMappingURL=chunk-NHMZCVZO.js.map
@@ -237,6 +237,7 @@ function validateModelTasksetPackage(value) {
237
237
  verifyLearningTextAsset3(asset, reference);
238
238
  }
239
239
  for (const task of taskset.tasks) {
240
+ if (taskDefinition.requiredOutputs && !same(task.requiredOutputs, taskDefinition.requiredOutputs)) throw new Error(`Taskset outputs differ from its reviewed definition: ${task.id}.`);
240
241
  if (task.policyVisibleContext.instructions !== taskDefinition.instructions || !validateTaskValue(taskDefinition.inputSchema, task.input).valid || task.expectedOutput !== null && !validateTaskValue(taskDefinition.outputSchema, task.expectedOutput).valid) throw new Error(`Taskset task differs from its declared format: ${task.id}.`);
241
242
  if (task.privilegedContextRef && !assets.some((asset) => asset.id === task.privilegedContextRef && asset.asset.visibility === "host_private")) throw new Error(`Taskset private context is missing: ${task.id}.`);
242
243
  }
@@ -270,4 +271,4 @@ export {
270
271
  deriveModelTaskset,
271
272
  validateModelTasksetPackage
272
273
  };
273
- //# sourceMappingURL=chunk-4IDTRFW2.js.map
274
+ //# sourceMappingURL=chunk-NZ35HEEK.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/model-starter-execution.ts", "../src/model-taskset-resources.ts", "../src/model-taskset-derivation.ts"],
4
- "sourcesContent": ["import { z } from \"zod\";\nimport { EnvironmentReleaseSchema, VerifierSetReleaseSchema } from \"@openpond/evals\";\nimport { JavaScriptEnvironmentDefinitionSchema, assertJavaScriptEnvironmentDefinition } from \"@openpond/evals/javascript-environment\";\nimport { createLearningTextAsset, learningRef, sealLearningContent, verifyLearningTextAsset, type LearningTextAsset } from \"@openpond/evals/learning\";\nimport { assertBoundedTaskJson } from \"@openpond/evals/task-schema\";\nimport type { TasksetRelease } from \"@openpond/evals/tasksets\";\nimport { canonicalJson } from \"./protocol.js\";\nimport { ModelProjectVersionedRefSchema } from \"./model-projects.js\";\n\nconst HashSchema = z.string().regex(/^[a-f0-9]{64}$/);\nexport const ModelStarterEnvironmentAttemptSchema = z.object({\n schemaVersion: z.literal(\"openpond.javascriptEnvironmentAttempt.v1\"), taskId: z.string(),\n status: z.enum([\"completed\", \"budget_exhausted\", \"cancelled\", \"timed_out\", \"policy_failure\", \"environment_failure\"]),\n output: z.string().nullable(), collected: z.boolean(), environmentCleanupComplete: z.boolean(),\n snapshot: z.object({ definition: ModelProjectVersionedRefSchema, inputHash: HashSchema, seed: z.number().int(), initialStateHash: HashSchema, finalStateHash: HashSchema, state: z.record(z.string(), z.unknown()), events: z.array(z.record(z.string(), z.unknown())) }).strict().nullable(),\n messages: z.array(z.unknown()), error: z.string().nullable(), contentHash: HashSchema,\n}).strict();\n\n/** Validate an owner-recorded runtime artifact against the admitted task.\n * Provenance/ownership of the artifact remains the execution host's concern. */\nexport function verifyModelStarterEnvironmentAttempt(value: unknown, context: { taskId: string; input: Record<string, unknown>; seed: number; javascript: z.infer<typeof ModelProjectVersionedRefSchema> }) {\n assertBoundedTaskJson(value, 16_777_216);\n const result = ModelStarterEnvironmentAttemptSchema.parse(value);\n const { contentHash, ...content } = result;\n if (sealLearningContent(content).contentHash !== contentHash || result.taskId !== context.taskId || (result.snapshot && (\n !equal(result.snapshot.definition, context.javascript) || result.snapshot.inputHash !== sealLearningContent(context.input).contentHash || result.snapshot.seed !== context.seed || result.snapshot.finalStateHash !== sealLearningContent(result.snapshot.state).contentHash\n ))) throw new Error(\"Starter environment attempt differs from its admitted task or recorded bytes.\");\n return result;\n}\n\nexport const ModelStarterExecutionSchema = z.object({\n environment: EnvironmentReleaseSchema,\n verifierSet: VerifierSetReleaseSchema,\n javascript: JavaScriptEnvironmentDefinitionSchema,\n}).strict();\nexport type ModelStarterExecution = z.infer<typeof ModelStarterExecutionSchema>;\nexport const ModelStarterToolFixtureScriptSchema = z.object({\n actions: z.array(z.object({ name: z.string().min(1).max(64), arguments: z.record(z.string(), z.unknown()) }).strict()).max(1_000),\n}).strict();\nexport type ModelStarterExecutionContext = Pick<TasksetRelease, \"environment\" | \"environmentRelease\" | \"verifierSetRelease\" | \"tools\" | \"capabilities\" | \"policy\" | \"graders\" | \"tasks\">;\n\n/** Derivable from immutable Taskset refs, without putting private code in its metadata. */\nexport function modelStarterExecutionAssetId(context: Pick<ModelStarterExecutionContext, \"environmentRelease\" | \"verifierSetRelease\">): string {\n if (!context.environmentRelease || !context.verifierSetRelease) throw new Error(\"Starter execution release references are missing.\");\n return `starter-execution-${sealLearningContent({ environment: context.environmentRelease, verifiers: context.verifierSetRelease }).contentHash}`;\n}\n\n/** Persist alongside the package's private assets in the same creation transaction.\n * The existing authored-text resource bound also applies to this small closure. */\nexport function createModelStarterExecutionAsset(value: ModelStarterExecution): LearningTextAsset {\n const execution = ModelStarterExecutionSchema.parse(value);\n assertExecutionIntegrity(execution);\n const id = modelStarterExecutionAssetId({ environmentRelease: { id: execution.environment.id, contentHash: execution.environment.contentHash }, verifierSetRelease: { id: execution.verifierSet.id, contentHash: execution.verifierSet.contentHash } });\n const generated = createLearningTextAsset({ text: canonicalJson(execution), path: \"environment/execution.json\", mediaType: \"application/json\", visibility: \"host_private\" });\n const { contentHash: _hash, ...content } = generated;\n return sealLearningContent({ ...content, id, asset: { ...content.asset, id } });\n}\n\n/** The caller owns and verifies the Taskset manifest; this verifies its private\n * resource graph. Passing selected immutable task rows permits bounded hydration. */\nexport function resolveModelStarterExecutionAsset(context: ModelStarterExecutionContext, asset: LearningTextAsset, assets: LearningTextAsset[]): ModelStarterExecution {\n if (asset.id !== modelStarterExecutionAssetId(context) || asset.asset.visibility !== \"host_private\" || asset.asset.mediaType !== \"application/json\") throw new Error(\"Starter execution asset differs from its Taskset references.\");\n const execution = ModelStarterExecutionSchema.parse(JSON.parse(verifyLearningTextAsset(asset, asset.asset)));\n validateModelStarterExecution(execution, context, assets);\n return execution;\n}\n\nfunction equal(left: unknown, right: unknown): boolean {\n return sealLearningContent({ value: left }).contentHash === sealLearningContent({ value: right }).contentHash;\n}\n\nfunction assertExecutionIntegrity(execution: ModelStarterExecution): void {\n assertJavaScriptEnvironmentDefinition(execution.javascript);\n for (const resource of [execution.environment, execution.verifierSet]) {\n const { contentHash, ...content } = resource;\n if (sealLearningContent(content).contentHash !== contentHash) throw new Error(`Starter execution resource integrity failed: ${resource.id}.`);\n }\n if (!equal(execution.environment.metadata.javascriptEnvironment, learningRef(execution.javascript))) throw new Error(\"Starter execution resources differ from its declared task context.\");\n}\n\n/** Close executable dependencies before a host persists or runs a package. */\nexport function validateModelStarterExecution(\n execution: ModelStarterExecution | undefined,\n taskset: ModelStarterExecutionContext,\n assets: LearningTextAsset[],\n): void {\n if (!execution) {\n if (taskset.environment.entrypoint === \"openpond.javascript-environment.v1\") throw new Error(\"Starter JavaScript execution resources are missing.\");\n return;\n }\n const { environment, verifierSet, javascript } = execution;\n assertExecutionIntegrity(execution);\n if (!equal(taskset.environmentRelease, { id: environment.id, contentHash: environment.contentHash }) ||\n !equal(taskset.verifierSetRelease, { id: verifierSet.id, contentHash: verifierSet.contentHash }) ||\n !equal(environment.contract, taskset.environment) || !equal(verifierSet.graders, taskset.graders) ||\n !equal(taskset.tools, javascript.tools) || !equal(environment.metadata.javascriptEnvironment, learningRef(javascript))) {\n throw new Error(\"Starter execution resources differ from its declared task context.\");\n }\n const contract = environment.contract;\n if (contract.entrypoint !== \"openpond.javascript-environment.v1\" || contract.kind !== \"agent\" ||\n !contract.stateful || !contract.deterministicSeeds || contract.networkPolicy !== \"none\" ||\n new Set(contract.lifecycle).size !== 5 || taskset.capabilities.length || taskset.policy.connectedAppScopes.length) {\n throw new Error(\"Starter JavaScript environment declares unsupported host capabilities.\");\n }\n for (const reference of [javascript.module, environment.actionSchemaRef, environment.observationSchemaRef, environment.stateSchemaRef]) {\n if (!reference) continue;\n const asset = assets.find(asset => asset.id === reference.id);\n if (!asset) throw new Error(`Starter environment asset is missing: ${reference.id}.`);\n verifyLearningTextAsset(asset, reference);\n }\n for (const task of taskset.tasks) {\n const asset = assets.find(asset => asset.id === task.privilegedContextRef);\n if (!asset || asset.asset.visibility !== \"host_private\" || asset.asset.mediaType !== \"application/json\") {\n throw new Error(`Starter private initial state is missing: ${task.id}.`);\n }\n const state: unknown = JSON.parse(verifyLearningTextAsset(asset, asset.asset));\n if (!state || typeof state !== \"object\" || Array.isArray(state)) throw new Error(`Starter initial state must be a JSON object: ${task.id}.`);\n assertBoundedTaskJson(state, javascript.maxStateBytes);\n }\n}\n", "import { z } from \"zod\";\nimport { EnvironmentReleaseSchema, VerifierSetReleaseSchema, verifyEnvironmentRelease, verifyVerifierSetRelease } from \"@openpond/evals\";\nimport { createLearningTextAsset, sealLearningContent, verifyLearningTextAsset, type LearningTextAsset } from \"@openpond/evals/learning\";\nimport type { TasksetRelease } from \"@openpond/evals/tasksets\";\nimport { canonicalJson } from \"./protocol.js\";\n\nexport const ModelTasksetExecutionResourcesSchema = z.object({ environment: EnvironmentReleaseSchema, verifierSet: VerifierSetReleaseSchema }).strict();\ntype Resources = z.infer<typeof ModelTasksetExecutionResourcesSchema>;\ntype Context = Pick<TasksetRelease, \"environmentRelease\" | \"verifierSetRelease\" | \"environment\" | \"graders\">;\n\n/** Private resource identity follows the exact published execution references. */\nexport function modelTasksetExecutionResourcesAssetId(context: Pick<Context, \"environmentRelease\" | \"verifierSetRelease\">): string {\n if (!context.environmentRelease || !context.verifierSetRelease) throw new Error(\"Taskset execution references are missing.\");\n return `taskset-execution-${sealLearningContent({ environment: context.environmentRelease, verifiers: context.verifierSetRelease }).contentHash}`;\n}\n\nexport function createModelTasksetExecutionResourcesAsset(value: Resources): LearningTextAsset {\n const resources = ModelTasksetExecutionResourcesSchema.parse({ environment: value.environment, verifierSet: value.verifierSet });\n assertIntegrity(resources);\n const id = modelTasksetExecutionResourcesAssetId({ environmentRelease: { id: resources.environment.id, contentHash: resources.environment.contentHash }, verifierSetRelease: { id: resources.verifierSet.id, contentHash: resources.verifierSet.contentHash } });\n const { contentHash: _hash, ...asset } = createLearningTextAsset({ text: canonicalJson(resources), path: \"environment/resources.json\", mediaType: \"application/json\", visibility: \"host_private\" });\n return sealLearningContent({ ...asset, id, asset: { ...asset.asset, id } });\n}\n\n/** Resolve text or tool execution resources without trusting an asset's ID alone. */\nexport function resolveModelTasksetExecutionResourcesAsset(context: Context, asset: LearningTextAsset): Resources {\n if (asset.id !== modelTasksetExecutionResourcesAssetId(context) || asset.asset.visibility !== \"host_private\" || asset.asset.mediaType !== \"application/json\") throw new Error(\"Taskset execution asset differs from its published references.\");\n const resources = ModelTasksetExecutionResourcesSchema.parse(JSON.parse(verifyLearningTextAsset(asset, asset.asset)));\n assertIntegrity(resources);\n if (asset.id !== createModelTasksetExecutionResourcesAsset(resources).id || canonicalJson(context.environment) !== canonicalJson(resources.environment.contract) || canonicalJson(context.graders) !== canonicalJson(resources.verifierSet.graders)) throw new Error(\"Taskset differs from its execution resources.\");\n return resources;\n}\n\nfunction assertIntegrity(resources: Resources): void {\n if (!verifyEnvironmentRelease(resources.environment) || !verifyVerifierSetRelease(resources.verifierSet)) throw new Error(\"Taskset execution resource integrity failed.\");\n}\n", "import { z } from \"zod\";\nimport { createEnvironmentRelease, createVerifierSetRelease, verifyEnvironmentRelease, verifyVerifierSetRelease } from \"@openpond/evals\";\nimport { LearningTextAssetSchema, TaskDefinitionSchema, assertLearningContentHash, learningRef, sameLearningRef, sealLearningContent, verifyLearningTextAsset } from \"@openpond/evals/learning\";\nimport { RewardBindingSchema, RewardReleaseSchema, compileBoundGraders } from \"@openpond/evals/rewards\";\nimport { TasksetReleaseSchema, assertTasksetRelease } from \"@openpond/evals/tasksets\";\nimport { validateTaskValue } from \"@openpond/evals/task-schema\";\n\nimport { ModelProjectVersionedRefSchema } from \"./model-projects.js\";\nimport { ModelStarterExecutionSchema, validateModelStarterExecution } from \"./model-starter-execution.js\";\nimport { ModelTasksetExecutionResourcesSchema } from \"./model-taskset-resources.js\";\n\nconst OwnerSchema = z.object({ scopeId: z.string().trim().min(1).max(500), modelId: z.string().trim().min(1).max(500) }).strict();\nexport const ModelTasksetDerivationSchema = z.object({\n schemaVersion: z.literal(\"openpond.modelTasksetDerivation.v1\"),\n owner: OwnerSchema,\n root: ModelProjectVersionedRefSchema,\n parent: ModelProjectVersionedRefSchema,\n}).strict();\n\n/** Immutable executable resources, independent of a catalog listing. */\nexport const ModelTasksetPackageSchema = z.object({\n taskset: TasksetReleaseSchema,\n taskDefinition: TaskDefinitionSchema,\n rewardBinding: RewardBindingSchema,\n rewards: z.array(RewardReleaseSchema).min(1).max(100),\n assets: z.array(LearningTextAssetSchema).max(1_000),\n executionResources: ModelTasksetExecutionResourcesSchema.optional(),\n execution: ModelStarterExecutionSchema.optional(),\n}).strict();\nexport type ModelTasksetPackage = z.infer<typeof ModelTasksetPackageSchema>;\n\nconst same = (left: unknown, right: unknown) => sealLearningContent({ value: left }).contentHash === sealLearningContent({ value: right }).contentHash;\nconst identity = (owner: z.infer<typeof OwnerSchema>, root: z.infer<typeof ModelProjectVersionedRefSchema>) => `model-taskset-${sealLearningContent({ owner, root }).contentHash}`;\n\n/** Hosts authorize the source and owner, upload immutable files, then commit\n * this result together with the model CAS and operation receipt. This pure\n * compiler neither allocates a new identity on retry nor changes a consumer. */\nexport function deriveModelTaskset(input: {\n owner: z.input<typeof OwnerSchema>;\n source: ModelTasksetPackage;\n rewardBinding: z.infer<typeof RewardBindingSchema>;\n rewards: z.infer<typeof RewardReleaseSchema>[];\n assets: z.infer<typeof LearningTextAssetSchema>[];\n}): ModelTasksetPackage {\n const owner = OwnerSchema.parse(input.owner);\n const source = validateModelTasksetPackage(input.source);\n const previous = source.taskset.metadata.modelTasksetDerivation === undefined ? null : ModelTasksetDerivationSchema.parse(source.taskset.metadata.modelTasksetDerivation);\n if (previous && source.taskset.id !== identity(previous.owner, previous.root)) throw new Error(\"Derived Taskset identity differs from its ownership lineage.\");\n const owned = previous && same(previous.owner, owner);\n const root = owned ? previous.root : learningRef(source.taskset);\n const id = owned ? source.taskset.id : identity(owner, root);\n const revision = owned ? source.taskset.revision + 1 : 1;\n const rewardBinding = RewardBindingSchema.parse(input.rewardBinding);\n const rewards = input.rewards.map(reward => RewardReleaseSchema.parse(reward));\n const graders = compileBoundGraders(rewardBinding, rewards);\n if (rewardBinding.recipeRef) throw new Error(\"Resolve the Reward recipe into one standalone binding before deriving a Taskset.\");\n const policy = { ...source.taskset.policy, hiddenGraderRefs: graders.filter(grader => grader.privileged).map(grader => grader.id) };\n const previousResources = source.executionResources ?? source.execution;\n const environment = previousResources?.environment ?? createEnvironmentRelease({\n schemaVersion: \"openpond.environmentRelease.v1\", id: `${id}-environment`, revision: 1,\n contract: source.taskset.environment, actionSchemaRef: null, observationSchemaRef: null, stateSchemaRef: null,\n artifactCollection: { maxArtifacts: 100_000, maxTotalBytes: 250_000_000 }, adapterConformanceHashes: {}, metadata: {},\n });\n const verifierSet = createVerifierSetRelease({\n schemaVersion: \"openpond.verifierSetRelease.v1\", id: `${id}-verifiers`, revision, graders,\n isolation: previousResources?.verifierSet.isolation ?? { processBoundary: \"isolated_process\", networkPolicy: \"none\", defaultTimeoutMs: Math.min(source.taskset.environment.defaultTimeoutMs, 300_000) },\n calibrationReceiptRefs: [], metadata: previousResources ? { sourceVerifierSet: learningRef(previousResources.verifierSet) } : {},\n });\n const executionResources = { environment, verifierSet };\n const execution = source.execution ? { ...source.execution, verifierSet } : undefined;\n const { contentHash: _taskHash, ...taskContent } = source.taskset;\n const { contentHash: _definitionHash, ...definitionContent } = source.taskDefinition;\n const taskExecution = { ...definitionContent.execution, policy, environmentRelease: { id: environment.id, contentHash: environment.contentHash }, verifierSetRelease: { id: verifierSet.id, contentHash: verifierSet.contentHash } };\n const taskDefinition = TaskDefinitionSchema.parse(sealLearningContent({ ...definitionContent, id: `${id}-definition`, revision, rewardBinding: learningRef(rewardBinding), execution: taskExecution }));\n const authoring = source.taskset.metadata.starterAuthoring;\n const graderFixtures = authoring && typeof authoring === \"object\" && !Array.isArray(authoring) && \"graderFixtures\" in authoring ? authoring.graderFixtures : undefined;\n // Keep provenance through exact lineage. Source package qualifications and\n // privacy attestations describe different bytes and must not be copied.\n const taskset = TasksetReleaseSchema.parse(sealLearningContent({\n ...taskContent, ...taskExecution, id, revision, graders,\n metadata: {\n starter: { taskDefinition: learningRef(taskDefinition), rewardBinding: learningRef(rewardBinding) },\n rewardExecution: { binding: rewardBinding, rewards },\n ...(graderFixtures === undefined ? {} : { starterAuthoring: { graderFixtures } }),\n modelTasksetDerivation: { schemaVersion: \"openpond.modelTasksetDerivation.v1\", owner, root, parent: learningRef(source.taskset) },\n },\n }));\n return validateModelTasksetPackage({ taskset, taskDefinition, rewardBinding, rewards, assets: input.assets, executionResources, ...(execution ? { execution } : {}) });\n}\n\nexport function validateModelTasksetPackage(value: unknown): ModelTasksetPackage {\n const result = ModelTasksetPackageSchema.parse(value);\n const { taskset, taskDefinition, rewardBinding, rewards, assets, execution } = result;\n for (const resource of [taskset, taskDefinition, rewardBinding, ...rewards, ...assets]) assertLearningContentHash(resource);\n assertTasksetRelease(taskset);\n if (rewardBinding.recipeRef) throw new Error(\"Resolve the Reward recipe into one standalone binding before deriving a Taskset.\");\n if (!sameLearningRef(taskDefinition.rewardBinding, learningRef(rewardBinding))) throw new Error(\"Taskset definition differs from its Reward binding.\");\n const { policy, environment, environmentRelease, tools, capabilities, verifierSetRelease } = taskset;\n if (!same(taskDefinition.execution, { policy, environment, ...(environmentRelease ? { environmentRelease } : {}), tools, capabilities, ...(verifierSetRelease ? { verifierSetRelease } : {}) })) throw new Error(\"Taskset definition differs from its execution resources.\");\n if (!same(taskset.graders, compileBoundGraders(rewardBinding, rewards))) throw new Error(\"Taskset graders differ from its Reward binding.\");\n if (taskset.metadata.starter !== undefined) {\n const metadata = z.object({ taskDefinition: ModelProjectVersionedRefSchema, rewardBinding: ModelProjectVersionedRefSchema }).passthrough().parse(taskset.metadata.starter);\n if (!sameLearningRef(metadata.taskDefinition, learningRef(taskDefinition)) || !sameLearningRef(metadata.rewardBinding, learningRef(rewardBinding))) throw new Error(\"Taskset metadata differs from its immutable grading resources.\");\n }\n if (taskset.metadata.rewardExecution !== undefined && !same(taskset.metadata.rewardExecution, { binding: rewardBinding, rewards })) throw new Error(\"Taskset embedded Rewards differ from its immutable grading resources.\");\n if (taskset.metadata.rewardBinding !== undefined && !sameLearningRef(ModelProjectVersionedRefSchema.parse(taskset.metadata.rewardBinding), learningRef(rewardBinding))) throw new Error(\"Taskset Reward reference differs from its immutable grading resources.\");\n const resources = result.executionResources ?? execution;\n if (taskset.environmentRelease && !resources) throw new Error(\"Deriving a Taskset requires its pinned execution resources.\");\n if (resources && (!verifyEnvironmentRelease(resources.environment) || !verifyVerifierSetRelease(resources.verifierSet) ||\n !same(taskset.environmentRelease, { id: resources.environment.id, contentHash: resources.environment.contentHash }) ||\n !same(taskset.verifierSetRelease, { id: resources.verifierSet.id, contentHash: resources.verifierSet.contentHash }) ||\n !same(taskset.environment, resources.environment.contract) || !same(taskset.graders, resources.verifierSet.graders))) throw new Error(\"Taskset differs from its pinned execution resources.\");\n validateModelStarterExecution(execution, taskset, assets);\n if (new Set(assets.map(asset => asset.id)).size !== assets.length) throw new Error(\"Taskset asset identities must be unique.\");\n for (const asset of assets) verifyLearningTextAsset(asset, asset.asset);\n for (const reference of resources ? [resources.environment.actionSchemaRef, resources.environment.observationSchemaRef, resources.environment.stateSchemaRef] : []) {\n if (!reference) continue;\n const asset = assets.find(asset => asset.id === reference.id);\n if (!asset) throw new Error(`Taskset environment asset is missing: ${reference.id}.`);\n verifyLearningTextAsset(asset, reference);\n }\n for (const task of taskset.tasks) {\n if (task.policyVisibleContext.instructions !== taskDefinition.instructions || !validateTaskValue(taskDefinition.inputSchema, task.input).valid ||\n (task.expectedOutput !== null && !validateTaskValue(taskDefinition.outputSchema, task.expectedOutput).valid)) throw new Error(`Taskset task differs from its declared format: ${task.id}.`);\n if (task.privilegedContextRef && !assets.some(asset => asset.id === task.privilegedContextRef && asset.asset.visibility === \"host_private\")) throw new Error(`Taskset private context is missing: ${task.id}.`);\n }\n for (const reward of rewards) {\n const implementation = reward.implementation;\n const references = [...reward.assets, ...(\"verifierRef\" in implementation ? [implementation.verifierRef] : []), ...(\"rubricRef\" in implementation ? [implementation.rubricRef] : []), ...(\"inputContract\" in implementation ? [implementation.inputContract] : [])];\n for (const reference of references) {\n const asset = assets.find(asset => asset.id === reference.id);\n if (!asset || reference.visibility === \"policy\") throw new Error(`Taskset Reward requires its private asset: ${reference.id}.`);\n verifyLearningTextAsset(asset, reference);\n }\n }\n return result;\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { z } from \"zod\";\nimport { EnvironmentReleaseSchema, VerifierSetReleaseSchema } from \"@openpond/evals\";\nimport { JavaScriptEnvironmentDefinitionSchema, assertJavaScriptEnvironmentDefinition } from \"@openpond/evals/javascript-environment\";\nimport { createLearningTextAsset, learningRef, sealLearningContent, verifyLearningTextAsset, type LearningTextAsset } from \"@openpond/evals/learning\";\nimport { assertBoundedTaskJson } from \"@openpond/evals/task-schema\";\nimport type { TasksetRelease } from \"@openpond/evals/tasksets\";\nimport { canonicalJson } from \"./protocol.js\";\nimport { ModelProjectVersionedRefSchema } from \"./model-projects.js\";\n\nconst HashSchema = z.string().regex(/^[a-f0-9]{64}$/);\nexport const ModelStarterEnvironmentAttemptSchema = z.object({\n schemaVersion: z.literal(\"openpond.javascriptEnvironmentAttempt.v1\"), taskId: z.string(),\n status: z.enum([\"completed\", \"budget_exhausted\", \"cancelled\", \"timed_out\", \"policy_failure\", \"environment_failure\"]),\n output: z.string().nullable(), collected: z.boolean(), environmentCleanupComplete: z.boolean(),\n snapshot: z.object({ definition: ModelProjectVersionedRefSchema, inputHash: HashSchema, seed: z.number().int(), initialStateHash: HashSchema, finalStateHash: HashSchema, state: z.record(z.string(), z.unknown()), events: z.array(z.record(z.string(), z.unknown())) }).strict().nullable(),\n messages: z.array(z.unknown()), error: z.string().nullable(), contentHash: HashSchema,\n}).strict();\n\n/** Validate an owner-recorded runtime artifact against the admitted task.\n * Provenance/ownership of the artifact remains the execution host's concern. */\nexport function verifyModelStarterEnvironmentAttempt(value: unknown, context: { taskId: string; input: Record<string, unknown>; seed: number; javascript: z.infer<typeof ModelProjectVersionedRefSchema> }) {\n assertBoundedTaskJson(value, 16_777_216);\n const result = ModelStarterEnvironmentAttemptSchema.parse(value);\n const { contentHash, ...content } = result;\n if (sealLearningContent(content).contentHash !== contentHash || result.taskId !== context.taskId || (result.snapshot && (\n !equal(result.snapshot.definition, context.javascript) || result.snapshot.inputHash !== sealLearningContent(context.input).contentHash || result.snapshot.seed !== context.seed || result.snapshot.finalStateHash !== sealLearningContent(result.snapshot.state).contentHash\n ))) throw new Error(\"Starter environment attempt differs from its admitted task or recorded bytes.\");\n return result;\n}\n\nexport const ModelStarterExecutionSchema = z.object({\n environment: EnvironmentReleaseSchema,\n verifierSet: VerifierSetReleaseSchema,\n javascript: JavaScriptEnvironmentDefinitionSchema,\n}).strict();\nexport type ModelStarterExecution = z.infer<typeof ModelStarterExecutionSchema>;\nexport const ModelStarterToolFixtureScriptSchema = z.object({\n actions: z.array(z.object({ name: z.string().min(1).max(64), arguments: z.record(z.string(), z.unknown()) }).strict()).max(1_000),\n}).strict();\nexport type ModelStarterExecutionContext = Pick<TasksetRelease, \"environment\" | \"environmentRelease\" | \"verifierSetRelease\" | \"tools\" | \"capabilities\" | \"policy\" | \"graders\" | \"tasks\">;\n\n/** Derivable from immutable Taskset refs, without putting private code in its metadata. */\nexport function modelStarterExecutionAssetId(context: Pick<ModelStarterExecutionContext, \"environmentRelease\" | \"verifierSetRelease\">): string {\n if (!context.environmentRelease || !context.verifierSetRelease) throw new Error(\"Starter execution release references are missing.\");\n return `starter-execution-${sealLearningContent({ environment: context.environmentRelease, verifiers: context.verifierSetRelease }).contentHash}`;\n}\n\n/** Persist alongside the package's private assets in the same creation transaction.\n * The existing authored-text resource bound also applies to this small closure. */\nexport function createModelStarterExecutionAsset(value: ModelStarterExecution): LearningTextAsset {\n const execution = ModelStarterExecutionSchema.parse(value);\n assertExecutionIntegrity(execution);\n const id = modelStarterExecutionAssetId({ environmentRelease: { id: execution.environment.id, contentHash: execution.environment.contentHash }, verifierSetRelease: { id: execution.verifierSet.id, contentHash: execution.verifierSet.contentHash } });\n const generated = createLearningTextAsset({ text: canonicalJson(execution), path: \"environment/execution.json\", mediaType: \"application/json\", visibility: \"host_private\" });\n const { contentHash: _hash, ...content } = generated;\n return sealLearningContent({ ...content, id, asset: { ...content.asset, id } });\n}\n\n/** The caller owns and verifies the Taskset manifest; this verifies its private\n * resource graph. Passing selected immutable task rows permits bounded hydration. */\nexport function resolveModelStarterExecutionAsset(context: ModelStarterExecutionContext, asset: LearningTextAsset, assets: LearningTextAsset[]): ModelStarterExecution {\n if (asset.id !== modelStarterExecutionAssetId(context) || asset.asset.visibility !== \"host_private\" || asset.asset.mediaType !== \"application/json\") throw new Error(\"Starter execution asset differs from its Taskset references.\");\n const execution = ModelStarterExecutionSchema.parse(JSON.parse(verifyLearningTextAsset(asset, asset.asset)));\n validateModelStarterExecution(execution, context, assets);\n return execution;\n}\n\nfunction equal(left: unknown, right: unknown): boolean {\n return sealLearningContent({ value: left }).contentHash === sealLearningContent({ value: right }).contentHash;\n}\n\nfunction assertExecutionIntegrity(execution: ModelStarterExecution): void {\n assertJavaScriptEnvironmentDefinition(execution.javascript);\n for (const resource of [execution.environment, execution.verifierSet]) {\n const { contentHash, ...content } = resource;\n if (sealLearningContent(content).contentHash !== contentHash) throw new Error(`Starter execution resource integrity failed: ${resource.id}.`);\n }\n if (!equal(execution.environment.metadata.javascriptEnvironment, learningRef(execution.javascript))) throw new Error(\"Starter execution resources differ from its declared task context.\");\n}\n\n/** Close executable dependencies before a host persists or runs a package. */\nexport function validateModelStarterExecution(\n execution: ModelStarterExecution | undefined,\n taskset: ModelStarterExecutionContext,\n assets: LearningTextAsset[],\n): void {\n if (!execution) {\n if (taskset.environment.entrypoint === \"openpond.javascript-environment.v1\") throw new Error(\"Starter JavaScript execution resources are missing.\");\n return;\n }\n const { environment, verifierSet, javascript } = execution;\n assertExecutionIntegrity(execution);\n if (!equal(taskset.environmentRelease, { id: environment.id, contentHash: environment.contentHash }) ||\n !equal(taskset.verifierSetRelease, { id: verifierSet.id, contentHash: verifierSet.contentHash }) ||\n !equal(environment.contract, taskset.environment) || !equal(verifierSet.graders, taskset.graders) ||\n !equal(taskset.tools, javascript.tools) || !equal(environment.metadata.javascriptEnvironment, learningRef(javascript))) {\n throw new Error(\"Starter execution resources differ from its declared task context.\");\n }\n const contract = environment.contract;\n if (contract.entrypoint !== \"openpond.javascript-environment.v1\" || contract.kind !== \"agent\" ||\n !contract.stateful || !contract.deterministicSeeds || contract.networkPolicy !== \"none\" ||\n new Set(contract.lifecycle).size !== 5 || taskset.capabilities.length || taskset.policy.connectedAppScopes.length) {\n throw new Error(\"Starter JavaScript environment declares unsupported host capabilities.\");\n }\n for (const reference of [javascript.module, environment.actionSchemaRef, environment.observationSchemaRef, environment.stateSchemaRef]) {\n if (!reference) continue;\n const asset = assets.find(asset => asset.id === reference.id);\n if (!asset) throw new Error(`Starter environment asset is missing: ${reference.id}.`);\n verifyLearningTextAsset(asset, reference);\n }\n for (const task of taskset.tasks) {\n const asset = assets.find(asset => asset.id === task.privilegedContextRef);\n if (!asset || asset.asset.visibility !== \"host_private\" || asset.asset.mediaType !== \"application/json\") {\n throw new Error(`Starter private initial state is missing: ${task.id}.`);\n }\n const state: unknown = JSON.parse(verifyLearningTextAsset(asset, asset.asset));\n if (!state || typeof state !== \"object\" || Array.isArray(state)) throw new Error(`Starter initial state must be a JSON object: ${task.id}.`);\n assertBoundedTaskJson(state, javascript.maxStateBytes);\n }\n}\n", "import { z } from \"zod\";\nimport { EnvironmentReleaseSchema, VerifierSetReleaseSchema, verifyEnvironmentRelease, verifyVerifierSetRelease } from \"@openpond/evals\";\nimport { createLearningTextAsset, sealLearningContent, verifyLearningTextAsset, type LearningTextAsset } from \"@openpond/evals/learning\";\nimport type { TasksetRelease } from \"@openpond/evals/tasksets\";\nimport { canonicalJson } from \"./protocol.js\";\n\nexport const ModelTasksetExecutionResourcesSchema = z.object({ environment: EnvironmentReleaseSchema, verifierSet: VerifierSetReleaseSchema }).strict();\ntype Resources = z.infer<typeof ModelTasksetExecutionResourcesSchema>;\ntype Context = Pick<TasksetRelease, \"environmentRelease\" | \"verifierSetRelease\" | \"environment\" | \"graders\">;\n\n/** Private resource identity follows the exact published execution references. */\nexport function modelTasksetExecutionResourcesAssetId(context: Pick<Context, \"environmentRelease\" | \"verifierSetRelease\">): string {\n if (!context.environmentRelease || !context.verifierSetRelease) throw new Error(\"Taskset execution references are missing.\");\n return `taskset-execution-${sealLearningContent({ environment: context.environmentRelease, verifiers: context.verifierSetRelease }).contentHash}`;\n}\n\nexport function createModelTasksetExecutionResourcesAsset(value: Resources): LearningTextAsset {\n const resources = ModelTasksetExecutionResourcesSchema.parse({ environment: value.environment, verifierSet: value.verifierSet });\n assertIntegrity(resources);\n const id = modelTasksetExecutionResourcesAssetId({ environmentRelease: { id: resources.environment.id, contentHash: resources.environment.contentHash }, verifierSetRelease: { id: resources.verifierSet.id, contentHash: resources.verifierSet.contentHash } });\n const { contentHash: _hash, ...asset } = createLearningTextAsset({ text: canonicalJson(resources), path: \"environment/resources.json\", mediaType: \"application/json\", visibility: \"host_private\" });\n return sealLearningContent({ ...asset, id, asset: { ...asset.asset, id } });\n}\n\n/** Resolve text or tool execution resources without trusting an asset's ID alone. */\nexport function resolveModelTasksetExecutionResourcesAsset(context: Context, asset: LearningTextAsset): Resources {\n if (asset.id !== modelTasksetExecutionResourcesAssetId(context) || asset.asset.visibility !== \"host_private\" || asset.asset.mediaType !== \"application/json\") throw new Error(\"Taskset execution asset differs from its published references.\");\n const resources = ModelTasksetExecutionResourcesSchema.parse(JSON.parse(verifyLearningTextAsset(asset, asset.asset)));\n assertIntegrity(resources);\n if (asset.id !== createModelTasksetExecutionResourcesAsset(resources).id || canonicalJson(context.environment) !== canonicalJson(resources.environment.contract) || canonicalJson(context.graders) !== canonicalJson(resources.verifierSet.graders)) throw new Error(\"Taskset differs from its execution resources.\");\n return resources;\n}\n\nfunction assertIntegrity(resources: Resources): void {\n if (!verifyEnvironmentRelease(resources.environment) || !verifyVerifierSetRelease(resources.verifierSet)) throw new Error(\"Taskset execution resource integrity failed.\");\n}\n", "import { z } from \"zod\";\nimport { createEnvironmentRelease, createVerifierSetRelease, verifyEnvironmentRelease, verifyVerifierSetRelease } from \"@openpond/evals\";\nimport { LearningTextAssetSchema, TaskDefinitionSchema, assertLearningContentHash, learningRef, sameLearningRef, sealLearningContent, verifyLearningTextAsset } from \"@openpond/evals/learning\";\nimport { RewardBindingSchema, RewardReleaseSchema, compileBoundGraders } from \"@openpond/evals/rewards\";\nimport { TasksetReleaseSchema, assertTasksetRelease } from \"@openpond/evals/tasksets\";\nimport { validateTaskValue } from \"@openpond/evals/task-schema\";\n\nimport { ModelProjectVersionedRefSchema } from \"./model-projects.js\";\nimport { ModelStarterExecutionSchema, validateModelStarterExecution } from \"./model-starter-execution.js\";\nimport { ModelTasksetExecutionResourcesSchema } from \"./model-taskset-resources.js\";\n\nconst OwnerSchema = z.object({ scopeId: z.string().trim().min(1).max(500), modelId: z.string().trim().min(1).max(500) }).strict();\nexport const ModelTasksetDerivationSchema = z.object({\n schemaVersion: z.literal(\"openpond.modelTasksetDerivation.v1\"),\n owner: OwnerSchema,\n root: ModelProjectVersionedRefSchema,\n parent: ModelProjectVersionedRefSchema,\n}).strict();\n\n/** Immutable executable resources, independent of a catalog listing. */\nexport const ModelTasksetPackageSchema = z.object({\n taskset: TasksetReleaseSchema,\n taskDefinition: TaskDefinitionSchema,\n rewardBinding: RewardBindingSchema,\n rewards: z.array(RewardReleaseSchema).min(1).max(100),\n assets: z.array(LearningTextAssetSchema).max(1_000),\n executionResources: ModelTasksetExecutionResourcesSchema.optional(),\n execution: ModelStarterExecutionSchema.optional(),\n}).strict();\nexport type ModelTasksetPackage = z.infer<typeof ModelTasksetPackageSchema>;\n\nconst same = (left: unknown, right: unknown) => sealLearningContent({ value: left }).contentHash === sealLearningContent({ value: right }).contentHash;\nconst identity = (owner: z.infer<typeof OwnerSchema>, root: z.infer<typeof ModelProjectVersionedRefSchema>) => `model-taskset-${sealLearningContent({ owner, root }).contentHash}`;\n\n/** Hosts authorize the source and owner, upload immutable files, then commit\n * this result together with the model CAS and operation receipt. This pure\n * compiler neither allocates a new identity on retry nor changes a consumer. */\nexport function deriveModelTaskset(input: {\n owner: z.input<typeof OwnerSchema>;\n source: ModelTasksetPackage;\n rewardBinding: z.infer<typeof RewardBindingSchema>;\n rewards: z.infer<typeof RewardReleaseSchema>[];\n assets: z.infer<typeof LearningTextAssetSchema>[];\n}): ModelTasksetPackage {\n const owner = OwnerSchema.parse(input.owner);\n const source = validateModelTasksetPackage(input.source);\n const previous = source.taskset.metadata.modelTasksetDerivation === undefined ? null : ModelTasksetDerivationSchema.parse(source.taskset.metadata.modelTasksetDerivation);\n if (previous && source.taskset.id !== identity(previous.owner, previous.root)) throw new Error(\"Derived Taskset identity differs from its ownership lineage.\");\n const owned = previous && same(previous.owner, owner);\n const root = owned ? previous.root : learningRef(source.taskset);\n const id = owned ? source.taskset.id : identity(owner, root);\n const revision = owned ? source.taskset.revision + 1 : 1;\n const rewardBinding = RewardBindingSchema.parse(input.rewardBinding);\n const rewards = input.rewards.map(reward => RewardReleaseSchema.parse(reward));\n const graders = compileBoundGraders(rewardBinding, rewards);\n if (rewardBinding.recipeRef) throw new Error(\"Resolve the Reward recipe into one standalone binding before deriving a Taskset.\");\n const policy = { ...source.taskset.policy, hiddenGraderRefs: graders.filter(grader => grader.privileged).map(grader => grader.id) };\n const previousResources = source.executionResources ?? source.execution;\n const environment = previousResources?.environment ?? createEnvironmentRelease({\n schemaVersion: \"openpond.environmentRelease.v1\", id: `${id}-environment`, revision: 1,\n contract: source.taskset.environment, actionSchemaRef: null, observationSchemaRef: null, stateSchemaRef: null,\n artifactCollection: { maxArtifacts: 100_000, maxTotalBytes: 250_000_000 }, adapterConformanceHashes: {}, metadata: {},\n });\n const verifierSet = createVerifierSetRelease({\n schemaVersion: \"openpond.verifierSetRelease.v1\", id: `${id}-verifiers`, revision, graders,\n isolation: previousResources?.verifierSet.isolation ?? { processBoundary: \"isolated_process\", networkPolicy: \"none\", defaultTimeoutMs: Math.min(source.taskset.environment.defaultTimeoutMs, 300_000) },\n calibrationReceiptRefs: [], metadata: previousResources ? { sourceVerifierSet: learningRef(previousResources.verifierSet) } : {},\n });\n const executionResources = { environment, verifierSet };\n const execution = source.execution ? { ...source.execution, verifierSet } : undefined;\n const { contentHash: _taskHash, ...taskContent } = source.taskset;\n const { contentHash: _definitionHash, ...definitionContent } = source.taskDefinition;\n const taskExecution = { ...definitionContent.execution, policy, environmentRelease: { id: environment.id, contentHash: environment.contentHash }, verifierSetRelease: { id: verifierSet.id, contentHash: verifierSet.contentHash } };\n const taskDefinition = TaskDefinitionSchema.parse(sealLearningContent({ ...definitionContent, id: `${id}-definition`, revision, rewardBinding: learningRef(rewardBinding), execution: taskExecution }));\n const authoring = source.taskset.metadata.starterAuthoring;\n const graderFixtures = authoring && typeof authoring === \"object\" && !Array.isArray(authoring) && \"graderFixtures\" in authoring ? authoring.graderFixtures : undefined;\n // Keep provenance through exact lineage. Source package qualifications and\n // privacy attestations describe different bytes and must not be copied.\n const taskset = TasksetReleaseSchema.parse(sealLearningContent({\n ...taskContent, ...taskExecution, id, revision, graders,\n metadata: {\n starter: { taskDefinition: learningRef(taskDefinition), rewardBinding: learningRef(rewardBinding) },\n rewardExecution: { binding: rewardBinding, rewards },\n ...(graderFixtures === undefined ? {} : { starterAuthoring: { graderFixtures } }),\n modelTasksetDerivation: { schemaVersion: \"openpond.modelTasksetDerivation.v1\", owner, root, parent: learningRef(source.taskset) },\n },\n }));\n return validateModelTasksetPackage({ taskset, taskDefinition, rewardBinding, rewards, assets: input.assets, executionResources, ...(execution ? { execution } : {}) });\n}\n\nexport function validateModelTasksetPackage(value: unknown): ModelTasksetPackage {\n const result = ModelTasksetPackageSchema.parse(value);\n const { taskset, taskDefinition, rewardBinding, rewards, assets, execution } = result;\n for (const resource of [taskset, taskDefinition, rewardBinding, ...rewards, ...assets]) assertLearningContentHash(resource);\n assertTasksetRelease(taskset);\n if (rewardBinding.recipeRef) throw new Error(\"Resolve the Reward recipe into one standalone binding before deriving a Taskset.\");\n if (!sameLearningRef(taskDefinition.rewardBinding, learningRef(rewardBinding))) throw new Error(\"Taskset definition differs from its Reward binding.\");\n const { policy, environment, environmentRelease, tools, capabilities, verifierSetRelease } = taskset;\n if (!same(taskDefinition.execution, { policy, environment, ...(environmentRelease ? { environmentRelease } : {}), tools, capabilities, ...(verifierSetRelease ? { verifierSetRelease } : {}) })) throw new Error(\"Taskset definition differs from its execution resources.\");\n if (!same(taskset.graders, compileBoundGraders(rewardBinding, rewards))) throw new Error(\"Taskset graders differ from its Reward binding.\");\n if (taskset.metadata.starter !== undefined) {\n const metadata = z.object({ taskDefinition: ModelProjectVersionedRefSchema, rewardBinding: ModelProjectVersionedRefSchema }).passthrough().parse(taskset.metadata.starter);\n if (!sameLearningRef(metadata.taskDefinition, learningRef(taskDefinition)) || !sameLearningRef(metadata.rewardBinding, learningRef(rewardBinding))) throw new Error(\"Taskset metadata differs from its immutable grading resources.\");\n }\n if (taskset.metadata.rewardExecution !== undefined && !same(taskset.metadata.rewardExecution, { binding: rewardBinding, rewards })) throw new Error(\"Taskset embedded Rewards differ from its immutable grading resources.\");\n if (taskset.metadata.rewardBinding !== undefined && !sameLearningRef(ModelProjectVersionedRefSchema.parse(taskset.metadata.rewardBinding), learningRef(rewardBinding))) throw new Error(\"Taskset Reward reference differs from its immutable grading resources.\");\n const resources = result.executionResources ?? execution;\n if (taskset.environmentRelease && !resources) throw new Error(\"Deriving a Taskset requires its pinned execution resources.\");\n if (resources && (!verifyEnvironmentRelease(resources.environment) || !verifyVerifierSetRelease(resources.verifierSet) ||\n !same(taskset.environmentRelease, { id: resources.environment.id, contentHash: resources.environment.contentHash }) ||\n !same(taskset.verifierSetRelease, { id: resources.verifierSet.id, contentHash: resources.verifierSet.contentHash }) ||\n !same(taskset.environment, resources.environment.contract) || !same(taskset.graders, resources.verifierSet.graders))) throw new Error(\"Taskset differs from its pinned execution resources.\");\n validateModelStarterExecution(execution, taskset, assets);\n if (new Set(assets.map(asset => asset.id)).size !== assets.length) throw new Error(\"Taskset asset identities must be unique.\");\n for (const asset of assets) verifyLearningTextAsset(asset, asset.asset);\n for (const reference of resources ? [resources.environment.actionSchemaRef, resources.environment.observationSchemaRef, resources.environment.stateSchemaRef] : []) {\n if (!reference) continue;\n const asset = assets.find(asset => asset.id === reference.id);\n if (!asset) throw new Error(`Taskset environment asset is missing: ${reference.id}.`);\n verifyLearningTextAsset(asset, reference);\n }\n for (const task of taskset.tasks) {\n if (taskDefinition.requiredOutputs && !same(task.requiredOutputs, taskDefinition.requiredOutputs)) throw new Error(`Taskset outputs differ from its reviewed definition: ${task.id}.`);\n if (task.policyVisibleContext.instructions !== taskDefinition.instructions || !validateTaskValue(taskDefinition.inputSchema, task.input).valid ||\n (task.expectedOutput !== null && !validateTaskValue(taskDefinition.outputSchema, task.expectedOutput).valid)) throw new Error(`Taskset task differs from its declared format: ${task.id}.`);\n if (task.privilegedContextRef && !assets.some(asset => asset.id === task.privilegedContextRef && asset.asset.visibility === \"host_private\")) throw new Error(`Taskset private context is missing: ${task.id}.`);\n }\n for (const reward of rewards) {\n const implementation = reward.implementation;\n const references = [...reward.assets, ...(\"verifierRef\" in implementation ? [implementation.verifierRef] : []), ...(\"rubricRef\" in implementation ? [implementation.rubricRef] : []), ...(\"inputContract\" in implementation ? [implementation.inputContract] : [])];\n for (const reference of references) {\n const asset = assets.find(asset => asset.id === reference.id);\n if (!asset || reference.visibility === \"policy\") throw new Error(`Taskset Reward requires its private asset: ${reference.id}.`);\n verifyLearningTextAsset(asset, reference);\n }\n }\n return result;\n}\n"],
5
+ "mappings": ";;;;;;AAAA,SAAS,SAAS;AAClB,SAAS,0BAA0B,gCAAgC;AACnE,SAAS,uCAAuC,6CAA6C;AAC7F,SAAS,yBAAyB,aAAa,qBAAqB,+BAAuD;AAC3H,SAAS,6BAA6B;AAKtC,IAAM,aAAa,EAAE,OAAO,EAAE,MAAM,gBAAgB;AAC7C,IAAM,uCAAuC,EAAE,OAAO;AAAA,EAC3D,eAAe,EAAE,QAAQ,0CAA0C;AAAA,EAAG,QAAQ,EAAE,OAAO;AAAA,EACvF,QAAQ,EAAE,KAAK,CAAC,aAAa,oBAAoB,aAAa,aAAa,kBAAkB,qBAAqB,CAAC;AAAA,EACnH,QAAQ,EAAE,OAAO,EAAE,SAAS;AAAA,EAAG,WAAW,EAAE,QAAQ;AAAA,EAAG,4BAA4B,EAAE,QAAQ;AAAA,EAC7F,UAAU,EAAE,OAAO,EAAE,YAAY,gCAAgC,WAAW,YAAY,MAAM,EAAE,OAAO,EAAE,IAAI,GAAG,kBAAkB,YAAY,gBAAgB,YAAY,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,EAAE,QAAQ,CAAC,GAAG,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,SAAS;AAAA,EAC5R,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAC;AAAA,EAAG,OAAO,EAAE,OAAO,EAAE,SAAS;AAAA,EAAG,aAAa;AAC7E,CAAC,EAAE,OAAO;AAIH,SAAS,qCAAqC,OAAgB,SAAuI;AAC1M,wBAAsB,OAAO,QAAU;AACvC,QAAM,SAAS,qCAAqC,MAAM,KAAK;AAC/D,QAAM,EAAE,aAAa,GAAG,QAAQ,IAAI;AACpC,MAAI,oBAAoB,OAAO,EAAE,gBAAgB,eAAe,OAAO,WAAW,QAAQ,UAAW,OAAO,aAC1G,CAAC,MAAM,OAAO,SAAS,YAAY,QAAQ,UAAU,KAAK,OAAO,SAAS,cAAc,oBAAoB,QAAQ,KAAK,EAAE,eAAe,OAAO,SAAS,SAAS,QAAQ,QAAQ,OAAO,SAAS,mBAAmB,oBAAoB,OAAO,SAAS,KAAK,EAAE,aAC/P,OAAM,IAAI,MAAM,+EAA+E;AACnG,SAAO;AACT;AAEO,IAAM,8BAA8B,EAAE,OAAO;AAAA,EAClD,aAAa;AAAA,EACb,aAAa;AAAA,EACb,YAAY;AACd,CAAC,EAAE,OAAO;AAEH,IAAM,sCAAsC,EAAE,OAAO;AAAA,EAC1D,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,WAAW,EAAE,OAAO,EAAE,OAAO,GAAG,EAAE,QAAQ,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,IAAI,GAAK;AAClI,CAAC,EAAE,OAAO;AAIH,SAAS,6BAA6B,SAAkG;AAC7I,MAAI,CAAC,QAAQ,sBAAsB,CAAC,QAAQ,mBAAoB,OAAM,IAAI,MAAM,mDAAmD;AACnI,SAAO,qBAAqB,oBAAoB,EAAE,aAAa,QAAQ,oBAAoB,WAAW,QAAQ,mBAAmB,CAAC,EAAE,WAAW;AACjJ;AAIO,SAAS,iCAAiC,OAAiD;AAChG,QAAM,YAAY,4BAA4B,MAAM,KAAK;AACzD,2BAAyB,SAAS;AAClC,QAAM,KAAK,6BAA6B,EAAE,oBAAoB,EAAE,IAAI,UAAU,YAAY,IAAI,aAAa,UAAU,YAAY,YAAY,GAAG,oBAAoB,EAAE,IAAI,UAAU,YAAY,IAAI,aAAa,UAAU,YAAY,YAAY,EAAE,CAAC;AACtP,QAAM,YAAY,wBAAwB,EAAE,MAAM,cAAc,SAAS,GAAG,MAAM,8BAA8B,WAAW,oBAAoB,YAAY,eAAe,CAAC;AAC3K,QAAM,EAAE,aAAa,OAAO,GAAG,QAAQ,IAAI;AAC3C,SAAO,oBAAoB,EAAE,GAAG,SAAS,IAAI,OAAO,EAAE,GAAG,QAAQ,OAAO,GAAG,EAAE,CAAC;AAChF;AAIO,SAAS,kCAAkC,SAAuC,OAA0B,QAAoD;AACrK,MAAI,MAAM,OAAO,6BAA6B,OAAO,KAAK,MAAM,MAAM,eAAe,kBAAkB,MAAM,MAAM,cAAc,mBAAoB,OAAM,IAAI,MAAM,8DAA8D;AACnO,QAAM,YAAY,4BAA4B,MAAM,KAAK,MAAM,wBAAwB,OAAO,MAAM,KAAK,CAAC,CAAC;AAC3G,gCAA8B,WAAW,SAAS,MAAM;AACxD,SAAO;AACT;AAEA,SAAS,MAAM,MAAe,OAAyB;AACrD,SAAO,oBAAoB,EAAE,OAAO,KAAK,CAAC,EAAE,gBAAgB,oBAAoB,EAAE,OAAO,MAAM,CAAC,EAAE;AACpG;AAEA,SAAS,yBAAyB,WAAwC;AACxE,wCAAsC,UAAU,UAAU;AAC1D,aAAW,YAAY,CAAC,UAAU,aAAa,UAAU,WAAW,GAAG;AACrE,UAAM,EAAE,aAAa,GAAG,QAAQ,IAAI;AACpC,QAAI,oBAAoB,OAAO,EAAE,gBAAgB,YAAa,OAAM,IAAI,MAAM,gDAAgD,SAAS,EAAE,GAAG;AAAA,EAC9I;AACA,MAAI,CAAC,MAAM,UAAU,YAAY,SAAS,uBAAuB,YAAY,UAAU,UAAU,CAAC,EAAG,OAAM,IAAI,MAAM,oEAAoE;AAC3L;AAGO,SAAS,8BACd,WACA,SACA,QACM;AACN,MAAI,CAAC,WAAW;AACd,QAAI,QAAQ,YAAY,eAAe,qCAAsC,OAAM,IAAI,MAAM,qDAAqD;AAClJ;AAAA,EACF;AACA,QAAM,EAAE,aAAa,aAAa,WAAW,IAAI;AACjD,2BAAyB,SAAS;AAClC,MAAI,CAAC,MAAM,QAAQ,oBAAoB,EAAE,IAAI,YAAY,IAAI,aAAa,YAAY,YAAY,CAAC,KAC/F,CAAC,MAAM,QAAQ,oBAAoB,EAAE,IAAI,YAAY,IAAI,aAAa,YAAY,YAAY,CAAC,KAC/F,CAAC,MAAM,YAAY,UAAU,QAAQ,WAAW,KAAK,CAAC,MAAM,YAAY,SAAS,QAAQ,OAAO,KAChG,CAAC,MAAM,QAAQ,OAAO,WAAW,KAAK,KAAK,CAAC,MAAM,YAAY,SAAS,uBAAuB,YAAY,UAAU,CAAC,GAAG;AAC1H,UAAM,IAAI,MAAM,oEAAoE;AAAA,EACtF;AACA,QAAM,WAAW,YAAY;AAC7B,MAAI,SAAS,eAAe,wCAAwC,SAAS,SAAS,WAClF,CAAC,SAAS,YAAY,CAAC,SAAS,sBAAsB,SAAS,kBAAkB,UACjF,IAAI,IAAI,SAAS,SAAS,EAAE,SAAS,KAAK,QAAQ,aAAa,UAAU,QAAQ,OAAO,mBAAmB,QAAQ;AACrH,UAAM,IAAI,MAAM,wEAAwE;AAAA,EAC1F;AACA,aAAW,aAAa,CAAC,WAAW,QAAQ,YAAY,iBAAiB,YAAY,sBAAsB,YAAY,cAAc,GAAG;AACtI,QAAI,CAAC,UAAW;AAChB,UAAM,QAAQ,OAAO,KAAK,CAAAA,WAASA,OAAM,OAAO,UAAU,EAAE;AAC5D,QAAI,CAAC,MAAO,OAAM,IAAI,MAAM,yCAAyC,UAAU,EAAE,GAAG;AACpF,4BAAwB,OAAO,SAAS;AAAA,EAC1C;AACA,aAAW,QAAQ,QAAQ,OAAO;AAChC,UAAM,QAAQ,OAAO,KAAK,CAAAA,WAASA,OAAM,OAAO,KAAK,oBAAoB;AACzE,QAAI,CAAC,SAAS,MAAM,MAAM,eAAe,kBAAkB,MAAM,MAAM,cAAc,oBAAoB;AACvG,YAAM,IAAI,MAAM,6CAA6C,KAAK,EAAE,GAAG;AAAA,IACzE;AACA,UAAM,QAAiB,KAAK,MAAM,wBAAwB,OAAO,MAAM,KAAK,CAAC;AAC7E,QAAI,CAAC,SAAS,OAAO,UAAU,YAAY,MAAM,QAAQ,KAAK,EAAG,OAAM,IAAI,MAAM,gDAAgD,KAAK,EAAE,GAAG;AAC3I,0BAAsB,OAAO,WAAW,aAAa;AAAA,EACvD;AACF;;;ACvHA,SAAS,KAAAC,UAAS;AAClB,SAAS,4BAAAC,2BAA0B,4BAAAC,2BAA0B,0BAA0B,gCAAgC;AACvH,SAAS,2BAAAC,0BAAyB,uBAAAC,sBAAqB,2BAAAC,gCAAuD;AAIvG,IAAM,uCAAuCC,GAAE,OAAO,EAAE,aAAaC,2BAA0B,aAAaC,0BAAyB,CAAC,EAAE,OAAO;AAK/I,SAAS,sCAAsC,SAA6E;AACjI,MAAI,CAAC,QAAQ,sBAAsB,CAAC,QAAQ,mBAAoB,OAAM,IAAI,MAAM,2CAA2C;AAC3H,SAAO,qBAAqBC,qBAAoB,EAAE,aAAa,QAAQ,oBAAoB,WAAW,QAAQ,mBAAmB,CAAC,EAAE,WAAW;AACjJ;AAEO,SAAS,0CAA0C,OAAqC;AAC7F,QAAM,YAAY,qCAAqC,MAAM,EAAE,aAAa,MAAM,aAAa,aAAa,MAAM,YAAY,CAAC;AAC/H,kBAAgB,SAAS;AACzB,QAAM,KAAK,sCAAsC,EAAE,oBAAoB,EAAE,IAAI,UAAU,YAAY,IAAI,aAAa,UAAU,YAAY,YAAY,GAAG,oBAAoB,EAAE,IAAI,UAAU,YAAY,IAAI,aAAa,UAAU,YAAY,YAAY,EAAE,CAAC;AAC/P,QAAM,EAAE,aAAa,OAAO,GAAG,MAAM,IAAIC,yBAAwB,EAAE,MAAM,cAAc,SAAS,GAAG,MAAM,8BAA8B,WAAW,oBAAoB,YAAY,eAAe,CAAC;AAClM,SAAOD,qBAAoB,EAAE,GAAG,OAAO,IAAI,OAAO,EAAE,GAAG,MAAM,OAAO,GAAG,EAAE,CAAC;AAC5E;AAGO,SAAS,2CAA2C,SAAkB,OAAqC;AAChH,MAAI,MAAM,OAAO,sCAAsC,OAAO,KAAK,MAAM,MAAM,eAAe,kBAAkB,MAAM,MAAM,cAAc,mBAAoB,OAAM,IAAI,MAAM,gEAAgE;AAC9O,QAAM,YAAY,qCAAqC,MAAM,KAAK,MAAME,yBAAwB,OAAO,MAAM,KAAK,CAAC,CAAC;AACpH,kBAAgB,SAAS;AACzB,MAAI,MAAM,OAAO,0CAA0C,SAAS,EAAE,MAAM,cAAc,QAAQ,WAAW,MAAM,cAAc,UAAU,YAAY,QAAQ,KAAK,cAAc,QAAQ,OAAO,MAAM,cAAc,UAAU,YAAY,OAAO,EAAG,OAAM,IAAI,MAAM,+CAA+C;AACpT,SAAO;AACT;AAEA,SAAS,gBAAgB,WAA4B;AACnD,MAAI,CAAC,yBAAyB,UAAU,WAAW,KAAK,CAAC,yBAAyB,UAAU,WAAW,EAAG,OAAM,IAAI,MAAM,8CAA8C;AAC1K;;;ACnCA,SAAS,KAAAC,UAAS;AAClB,SAAS,0BAA0B,0BAA0B,4BAAAC,2BAA0B,4BAAAC,iCAAgC;AACvH,SAAS,yBAAyB,sBAAsB,2BAA2B,eAAAC,cAAa,iBAAiB,uBAAAC,sBAAqB,2BAAAC,gCAA+B;AACrK,SAAS,qBAAqB,qBAAqB,2BAA2B;AAC9E,SAAS,sBAAsB,4BAA4B;AAC3D,SAAS,yBAAyB;AAMlC,IAAM,cAAcC,GAAE,OAAO,EAAE,SAASA,GAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,GAAG,SAASA,GAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,CAAC,EAAE,OAAO;AACzH,IAAM,+BAA+BA,GAAE,OAAO;AAAA,EACnD,eAAeA,GAAE,QAAQ,oCAAoC;AAAA,EAC7D,OAAO;AAAA,EACP,MAAM;AAAA,EACN,QAAQ;AACV,CAAC,EAAE,OAAO;AAGH,IAAM,4BAA4BA,GAAE,OAAO;AAAA,EAChD,SAAS;AAAA,EACT,gBAAgB;AAAA,EAChB,eAAe;AAAA,EACf,SAASA,GAAE,MAAM,mBAAmB,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG;AAAA,EACpD,QAAQA,GAAE,MAAM,uBAAuB,EAAE,IAAI,GAAK;AAAA,EAClD,oBAAoB,qCAAqC,SAAS;AAAA,EAClE,WAAW,4BAA4B,SAAS;AAClD,CAAC,EAAE,OAAO;AAGV,IAAM,OAAO,CAAC,MAAe,UAAmBC,qBAAoB,EAAE,OAAO,KAAK,CAAC,EAAE,gBAAgBA,qBAAoB,EAAE,OAAO,MAAM,CAAC,EAAE;AAC3I,IAAM,WAAW,CAAC,OAAoC,SAAyD,iBAAiBA,qBAAoB,EAAE,OAAO,KAAK,CAAC,EAAE,WAAW;AAKzK,SAAS,mBAAmB,OAMX;AACtB,QAAM,QAAQ,YAAY,MAAM,MAAM,KAAK;AAC3C,QAAM,SAAS,4BAA4B,MAAM,MAAM;AACvD,QAAM,WAAW,OAAO,QAAQ,SAAS,2BAA2B,SAAY,OAAO,6BAA6B,MAAM,OAAO,QAAQ,SAAS,sBAAsB;AACxK,MAAI,YAAY,OAAO,QAAQ,OAAO,SAAS,SAAS,OAAO,SAAS,IAAI,EAAG,OAAM,IAAI,MAAM,8DAA8D;AAC7J,QAAM,QAAQ,YAAY,KAAK,SAAS,OAAO,KAAK;AACpD,QAAM,OAAO,QAAQ,SAAS,OAAOC,aAAY,OAAO,OAAO;AAC/D,QAAM,KAAK,QAAQ,OAAO,QAAQ,KAAK,SAAS,OAAO,IAAI;AAC3D,QAAM,WAAW,QAAQ,OAAO,QAAQ,WAAW,IAAI;AACvD,QAAM,gBAAgB,oBAAoB,MAAM,MAAM,aAAa;AACnE,QAAM,UAAU,MAAM,QAAQ,IAAI,YAAU,oBAAoB,MAAM,MAAM,CAAC;AAC7E,QAAM,UAAU,oBAAoB,eAAe,OAAO;AAC1D,MAAI,cAAc,UAAW,OAAM,IAAI,MAAM,kFAAkF;AAC/H,QAAM,SAAS,EAAE,GAAG,OAAO,QAAQ,QAAQ,kBAAkB,QAAQ,OAAO,YAAU,OAAO,UAAU,EAAE,IAAI,YAAU,OAAO,EAAE,EAAE;AAClI,QAAM,oBAAoB,OAAO,sBAAsB,OAAO;AAC9D,QAAM,cAAc,mBAAmB,eAAe,yBAAyB;AAAA,IAC7E,eAAe;AAAA,IAAkC,IAAI,GAAG,EAAE;AAAA,IAAgB,UAAU;AAAA,IACpF,UAAU,OAAO,QAAQ;AAAA,IAAa,iBAAiB;AAAA,IAAM,sBAAsB;AAAA,IAAM,gBAAgB;AAAA,IACzG,oBAAoB,EAAE,cAAc,KAAS,eAAe,KAAY;AAAA,IAAG,0BAA0B,CAAC;AAAA,IAAG,UAAU,CAAC;AAAA,EACtH,CAAC;AACD,QAAM,cAAc,yBAAyB;AAAA,IAC3C,eAAe;AAAA,IAAkC,IAAI,GAAG,EAAE;AAAA,IAAc;AAAA,IAAU;AAAA,IAClF,WAAW,mBAAmB,YAAY,aAAa,EAAE,iBAAiB,oBAAoB,eAAe,QAAQ,kBAAkB,KAAK,IAAI,OAAO,QAAQ,YAAY,kBAAkB,GAAO,EAAE;AAAA,IACtM,wBAAwB,CAAC;AAAA,IAAG,UAAU,oBAAoB,EAAE,mBAAmBA,aAAY,kBAAkB,WAAW,EAAE,IAAI,CAAC;AAAA,EACjI,CAAC;AACD,QAAM,qBAAqB,EAAE,aAAa,YAAY;AACtD,QAAM,YAAY,OAAO,YAAY,EAAE,GAAG,OAAO,WAAW,YAAY,IAAI;AAC5E,QAAM,EAAE,aAAa,WAAW,GAAG,YAAY,IAAI,OAAO;AAC1D,QAAM,EAAE,aAAa,iBAAiB,GAAG,kBAAkB,IAAI,OAAO;AACtE,QAAM,gBAAgB,EAAE,GAAG,kBAAkB,WAAW,QAAQ,oBAAoB,EAAE,IAAI,YAAY,IAAI,aAAa,YAAY,YAAY,GAAG,oBAAoB,EAAE,IAAI,YAAY,IAAI,aAAa,YAAY,YAAY,EAAE;AACnO,QAAM,iBAAiB,qBAAqB,MAAMD,qBAAoB,EAAE,GAAG,mBAAmB,IAAI,GAAG,EAAE,eAAe,UAAU,eAAeC,aAAY,aAAa,GAAG,WAAW,cAAc,CAAC,CAAC;AACtM,QAAM,YAAY,OAAO,QAAQ,SAAS;AAC1C,QAAM,iBAAiB,aAAa,OAAO,cAAc,YAAY,CAAC,MAAM,QAAQ,SAAS,KAAK,oBAAoB,YAAY,UAAU,iBAAiB;AAG7J,QAAM,UAAU,qBAAqB,MAAMD,qBAAoB;AAAA,IAC7D,GAAG;AAAA,IAAa,GAAG;AAAA,IAAe;AAAA,IAAI;AAAA,IAAU;AAAA,IAChD,UAAU;AAAA,MACR,SAAS,EAAE,gBAAgBC,aAAY,cAAc,GAAG,eAAeA,aAAY,aAAa,EAAE;AAAA,MAClG,iBAAiB,EAAE,SAAS,eAAe,QAAQ;AAAA,MACnD,GAAI,mBAAmB,SAAY,CAAC,IAAI,EAAE,kBAAkB,EAAE,eAAe,EAAE;AAAA,MAC/E,wBAAwB,EAAE,eAAe,sCAAsC,OAAO,MAAM,QAAQA,aAAY,OAAO,OAAO,EAAE;AAAA,IAClI;AAAA,EACF,CAAC,CAAC;AACF,SAAO,4BAA4B,EAAE,SAAS,gBAAgB,eAAe,SAAS,QAAQ,MAAM,QAAQ,oBAAoB,GAAI,YAAY,EAAE,UAAU,IAAI,CAAC,EAAG,CAAC;AACvK;AAEO,SAAS,4BAA4B,OAAqC;AAC/E,QAAM,SAAS,0BAA0B,MAAM,KAAK;AACpD,QAAM,EAAE,SAAS,gBAAgB,eAAe,SAAS,QAAQ,UAAU,IAAI;AAC/E,aAAW,YAAY,CAAC,SAAS,gBAAgB,eAAe,GAAG,SAAS,GAAG,MAAM,EAAG,2BAA0B,QAAQ;AAC1H,uBAAqB,OAAO;AAC5B,MAAI,cAAc,UAAW,OAAM,IAAI,MAAM,kFAAkF;AAC/H,MAAI,CAAC,gBAAgB,eAAe,eAAeA,aAAY,aAAa,CAAC,EAAG,OAAM,IAAI,MAAM,qDAAqD;AACrJ,QAAM,EAAE,QAAQ,aAAa,oBAAoB,OAAO,cAAc,mBAAmB,IAAI;AAC7F,MAAI,CAAC,KAAK,eAAe,WAAW,EAAE,QAAQ,aAAa,GAAI,qBAAqB,EAAE,mBAAmB,IAAI,CAAC,GAAI,OAAO,cAAc,GAAI,qBAAqB,EAAE,mBAAmB,IAAI,CAAC,EAAG,CAAC,EAAG,OAAM,IAAI,MAAM,0DAA0D;AAC3Q,MAAI,CAAC,KAAK,QAAQ,SAAS,oBAAoB,eAAe,OAAO,CAAC,EAAG,OAAM,IAAI,MAAM,iDAAiD;AAC1I,MAAI,QAAQ,SAAS,YAAY,QAAW;AAC1C,UAAM,WAAWF,GAAE,OAAO,EAAE,gBAAgB,gCAAgC,eAAe,+BAA+B,CAAC,EAAE,YAAY,EAAE,MAAM,QAAQ,SAAS,OAAO;AACzK,QAAI,CAAC,gBAAgB,SAAS,gBAAgBE,aAAY,cAAc,CAAC,KAAK,CAAC,gBAAgB,SAAS,eAAeA,aAAY,aAAa,CAAC,EAAG,OAAM,IAAI,MAAM,gEAAgE;AAAA,EACtO;AACA,MAAI,QAAQ,SAAS,oBAAoB,UAAa,CAAC,KAAK,QAAQ,SAAS,iBAAiB,EAAE,SAAS,eAAe,QAAQ,CAAC,EAAG,OAAM,IAAI,MAAM,uEAAuE;AAC3N,MAAI,QAAQ,SAAS,kBAAkB,UAAa,CAAC,gBAAgB,+BAA+B,MAAM,QAAQ,SAAS,aAAa,GAAGA,aAAY,aAAa,CAAC,EAAG,OAAM,IAAI,MAAM,wEAAwE;AAChQ,QAAM,YAAY,OAAO,sBAAsB;AAC/C,MAAI,QAAQ,sBAAsB,CAAC,UAAW,OAAM,IAAI,MAAM,6DAA6D;AAC3H,MAAI,cAAc,CAACC,0BAAyB,UAAU,WAAW,KAAK,CAACC,0BAAyB,UAAU,WAAW,KACjH,CAAC,KAAK,QAAQ,oBAAoB,EAAE,IAAI,UAAU,YAAY,IAAI,aAAa,UAAU,YAAY,YAAY,CAAC,KAClH,CAAC,KAAK,QAAQ,oBAAoB,EAAE,IAAI,UAAU,YAAY,IAAI,aAAa,UAAU,YAAY,YAAY,CAAC,KAClH,CAAC,KAAK,QAAQ,aAAa,UAAU,YAAY,QAAQ,KAAK,CAAC,KAAK,QAAQ,SAAS,UAAU,YAAY,OAAO,GAAI,OAAM,IAAI,MAAM,sDAAsD;AAChM,gCAA8B,WAAW,SAAS,MAAM;AACxD,MAAI,IAAI,IAAI,OAAO,IAAI,WAAS,MAAM,EAAE,CAAC,EAAE,SAAS,OAAO,OAAQ,OAAM,IAAI,MAAM,0CAA0C;AAC7H,aAAW,SAAS,OAAQ,CAAAC,yBAAwB,OAAO,MAAM,KAAK;AACtE,aAAW,aAAa,YAAY,CAAC,UAAU,YAAY,iBAAiB,UAAU,YAAY,sBAAsB,UAAU,YAAY,cAAc,IAAI,CAAC,GAAG;AAClK,QAAI,CAAC,UAAW;AAChB,UAAM,QAAQ,OAAO,KAAK,CAAAC,WAASA,OAAM,OAAO,UAAU,EAAE;AAC5D,QAAI,CAAC,MAAO,OAAM,IAAI,MAAM,yCAAyC,UAAU,EAAE,GAAG;AACpF,IAAAD,yBAAwB,OAAO,SAAS;AAAA,EAC1C;AACA,aAAW,QAAQ,QAAQ,OAAO;AAChC,QAAI,eAAe,mBAAmB,CAAC,KAAK,KAAK,iBAAiB,eAAe,eAAe,EAAG,OAAM,IAAI,MAAM,wDAAwD,KAAK,EAAE,GAAG;AACrL,QAAI,KAAK,qBAAqB,iBAAiB,eAAe,gBAAgB,CAAC,kBAAkB,eAAe,aAAa,KAAK,KAAK,EAAE,SACpI,KAAK,mBAAmB,QAAQ,CAAC,kBAAkB,eAAe,cAAc,KAAK,cAAc,EAAE,MAAQ,OAAM,IAAI,MAAM,kDAAkD,KAAK,EAAE,GAAG;AAC9L,QAAI,KAAK,wBAAwB,CAAC,OAAO,KAAK,WAAS,MAAM,OAAO,KAAK,wBAAwB,MAAM,MAAM,eAAe,cAAc,EAAG,OAAM,IAAI,MAAM,uCAAuC,KAAK,EAAE,GAAG;AAAA,EAChN;AACA,aAAW,UAAU,SAAS;AAC5B,UAAM,iBAAiB,OAAO;AAC9B,UAAM,aAAa,CAAC,GAAG,OAAO,QAAQ,GAAI,iBAAiB,iBAAiB,CAAC,eAAe,WAAW,IAAI,CAAC,GAAI,GAAI,eAAe,iBAAiB,CAAC,eAAe,SAAS,IAAI,CAAC,GAAI,GAAI,mBAAmB,iBAAiB,CAAC,eAAe,aAAa,IAAI,CAAC,CAAE;AAClQ,eAAW,aAAa,YAAY;AAClC,YAAM,QAAQ,OAAO,KAAK,CAAAC,WAASA,OAAM,OAAO,UAAU,EAAE;AAC5D,UAAI,CAAC,SAAS,UAAU,eAAe,SAAU,OAAM,IAAI,MAAM,8CAA8C,UAAU,EAAE,GAAG;AAC9H,MAAAD,yBAAwB,OAAO,SAAS;AAAA,IAC1C;AAAA,EACF;AACA,SAAO;AACT;",
6
6
  "names": ["asset", "z", "EnvironmentReleaseSchema", "VerifierSetReleaseSchema", "createLearningTextAsset", "sealLearningContent", "verifyLearningTextAsset", "z", "EnvironmentReleaseSchema", "VerifierSetReleaseSchema", "sealLearningContent", "createLearningTextAsset", "verifyLearningTextAsset", "z", "verifyEnvironmentRelease", "verifyVerifierSetRelease", "learningRef", "sealLearningContent", "verifyLearningTextAsset", "z", "sealLearningContent", "learningRef", "verifyEnvironmentRelease", "verifyVerifierSetRelease", "verifyLearningTextAsset", "asset"]
7
7
  }
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  ModelStarterExecutionSchema,
3
3
  validateModelStarterExecution
4
- } from "./chunk-4IDTRFW2.js";
4
+ } from "./chunk-NZ35HEEK.js";
5
5
  import {
6
6
  ModelProjectBaseModelSchema,
7
7
  ModelProjectTrainingMethodSchema,
@@ -219,4 +219,4 @@ export {
219
219
  previewModelStarter,
220
220
  validateResolvedModelStarter
221
221
  };
222
- //# sourceMappingURL=chunk-6QWV5TEJ.js.map
222
+ //# sourceMappingURL=chunk-SMWHGQ5W.js.map
@@ -5,7 +5,7 @@ import {
5
5
  modelStarterExecutionAssetId,
6
6
  validateModelStarterExecution,
7
7
  validateModelTasksetPackage
8
- } from "./chunk-4IDTRFW2.js";
8
+ } from "./chunk-NZ35HEEK.js";
9
9
  import {
10
10
  ModelTasksetAuthoringSchema
11
11
  } from "./chunk-S7I45WJQ.js";
@@ -957,12 +957,12 @@ function validateWorkExecution(taskset, issues) {
957
957
  path: "environment.entrypoint"
958
958
  });
959
959
  }
960
- if (taskset.environment.stateful) {
960
+ if (!taskset.environment.lifecycle.includes("reset") || !taskset.environment.lifecycle.includes("cleanup")) {
961
961
  issues.push({
962
- code: "work_stateful_invalid",
962
+ code: "work_reset_lifecycle_missing",
963
963
  severity: "error",
964
- message: "Automated Work attempts must start from clean state.",
965
- path: "environment.stateful"
964
+ message: "Work attempts require reset and cleanup; filesystem state belongs to one attempt.",
965
+ path: "environment.lifecycle"
966
966
  });
967
967
  }
968
968
  const allowedTools = new Set(TASKSET_WORK_TOOL_NAMES);
@@ -1523,4 +1523,4 @@ export {
1523
1523
  validateTasksetPackage,
1524
1524
  createTasksetPackage
1525
1525
  };
1526
- //# sourceMappingURL=chunk-WSTMQGOY.js.map
1526
+ //# sourceMappingURL=chunk-TLXDZ4VG.js.map