openpond-sdk 0.9.0 → 0.9.2

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 (40) hide show
  1. package/MODEL_STARTERS.md +2 -0
  2. package/README.md +17 -0
  3. package/dist/{chunk-KIBRMKJQ.js → chunk-JCPLAIZL.js} +284 -227
  4. package/dist/chunk-JCPLAIZL.js.map +7 -0
  5. package/dist/dataset-workspaces.js +1 -1
  6. package/dist/model-starter-catalog.js +1 -1
  7. package/dist/model-starters.js +1 -1
  8. package/dist/model-taskset-runs.js +5 -3
  9. package/dist/model-taskset-runs.js.map +2 -2
  10. package/dist/taskset-drafts.js +1 -1
  11. package/dist/taskset-packages.js +1 -1
  12. package/dist/training-bundle.js +1 -1
  13. package/dist/training.js +9 -1
  14. package/dist/types/packages/sdk/src/model-batch-review-preparation.d.ts +1 -0
  15. package/dist/types/packages/sdk/src/model-batch-review-preparation.d.ts.map +1 -1
  16. package/dist/types/packages/sdk/src/model-starter-attempts.d.ts +8 -8
  17. package/dist/types/packages/sdk/src/model-starter-catalog.d.ts +1 -0
  18. package/dist/types/packages/sdk/src/model-starter-catalog.d.ts.map +1 -1
  19. package/dist/types/packages/sdk/src/model-starters.d.ts +2 -0
  20. package/dist/types/packages/sdk/src/model-starters.d.ts.map +1 -1
  21. package/dist/types/packages/sdk/src/model-taskset-derivation.d.ts +1 -0
  22. package/dist/types/packages/sdk/src/model-taskset-derivation.d.ts.map +1 -1
  23. package/dist/types/packages/sdk/src/model-taskset-runs-contracts.d.ts +11 -4
  24. package/dist/types/packages/sdk/src/model-taskset-runs-contracts.d.ts.map +1 -1
  25. package/dist/types/packages/sdk/src/model-taskset-runs.d.ts +14 -5
  26. package/dist/types/packages/sdk/src/model-taskset-runs.d.ts.map +1 -1
  27. package/dist/types/packages/sdk/src/taskset-draft-package-compiler.d.ts +2 -0
  28. package/dist/types/packages/sdk/src/taskset-draft-package-compiler.d.ts.map +1 -1
  29. package/dist/types/packages/sdk/src/taskset-package-client.d.ts +3 -0
  30. package/dist/types/packages/sdk/src/taskset-package-client.d.ts.map +1 -1
  31. package/dist/types/packages/sdk/src/taskset-package-contracts.d.ts +2 -0
  32. package/dist/types/packages/sdk/src/taskset-package-contracts.d.ts.map +1 -1
  33. package/dist/types/packages/sdk/src/taskset-package-projection.d.ts +1 -0
  34. package/dist/types/packages/sdk/src/taskset-package-projection.d.ts.map +1 -1
  35. package/dist/types/packages/sdk/src/training-acceptance.d.ts +234 -0
  36. package/dist/types/packages/sdk/src/training-acceptance.d.ts.map +1 -0
  37. package/dist/types/packages/sdk/src/training.d.ts +156 -11
  38. package/dist/types/packages/sdk/src/training.d.ts.map +1 -1
  39. package/package.json +2 -2
  40. package/dist/chunk-KIBRMKJQ.js.map +0 -7
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/training-acceptance.ts", "../src/training.ts", "../src/training-preparations.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 { assertAcceptanceGroupSnapshot, AcceptanceGroupSnapshotSchema } from \"@openpond/evals/learning\";\nimport { ModelProjectImmutableRefSchema } from \"./model-projects.js\";\nimport { OpenPondProtocolError } from \"./protocol.js\";\n\nconst Id = z.string().trim().min(1).max(240);\nexport const TrainingAcceptanceGroupReferenceSchema = ModelProjectImmutableRefSchema.extend({ revision: z.number().int().positive() }).strict();\nexport const TrainingAcceptanceGroupSummarySchema = TrainingAcceptanceGroupReferenceSchema.extend({\n teamId: Id, jobId: Id,\n plan: ModelProjectImmutableRefSchema,\n baseline: ModelProjectImmutableRefSchema,\n candidate: ModelProjectImmutableRefSchema,\n state: AcceptanceGroupSnapshotSchema.shape.state,\n updatedAt: z.string().datetime(),\n}).strict();\nexport const TrainingAcceptanceGroupPageSchema = z.object({\n schemaVersion: z.literal(\"openpond.trainingAcceptanceGroupPage.v1\"),\n teamId: Id, jobId: Id, groups: z.array(TrainingAcceptanceGroupSummarySchema).max(100), nextCursor: Id.nullable(),\n}).strict();\nexport const TrainingAcceptanceGroupQuerySchema = z.object({\n cursor: Id.optional(), limit: z.number().int().min(1).max(100).default(25),\n}).strict();\nexport type TrainingAcceptanceGroupReference = z.infer<typeof TrainingAcceptanceGroupReferenceSchema>;\nexport type TrainingAcceptanceGroupSummary = z.infer<typeof TrainingAcceptanceGroupSummarySchema>;\nexport type TrainingAcceptanceGroupPage = z.infer<typeof TrainingAcceptanceGroupPageSchema>;\nexport type TrainingAcceptanceGroupQuery = z.input<typeof TrainingAcceptanceGroupQuerySchema>;\nexport type TrainingAcceptanceTarget = { teamId: string; jobId: string };\n\n/** Read retained evidence. These operations do not create, retry or dispatch checks. */\nexport function createTrainingAcceptanceClient(request: (path: string, init?: RequestInit) => Promise<unknown>) {\n const route = (target: TrainingAcceptanceTarget) => {\n Id.parse(target.teamId);\n return `/v1/training/jobs/${encodeURIComponent(Id.parse(target.jobId))}/acceptance-groups`;\n };\n return {\n async acceptanceGroups(target: TrainingAcceptanceTarget, input: TrainingAcceptanceGroupQuery = {}) {\n const query = TrainingAcceptanceGroupQuerySchema.parse(input);\n const params = new URLSearchParams({ limit: String(query.limit) });\n if (query.cursor) params.set(\"cursor\", query.cursor);\n const page = TrainingAcceptanceGroupPageSchema.parse(await request(`${route(target)}?${params}`));\n if (page.teamId !== target.teamId || page.jobId !== target.jobId || page.groups.length > query.limit ||\n page.groups.some(group => group.teamId !== target.teamId || group.jobId !== target.jobId || (query.cursor && group.id <= query.cursor)) ||\n new Set(page.groups.map(group => group.id)).size !== page.groups.length ||\n (page.nextCursor !== null && page.nextCursor !== page.groups.at(-1)?.id))\n throw new OpenPondProtocolError(\"acceptance_group_scope_mismatch\", \"Acceptance groups do not match the requested workspace, job or cursor.\");\n return page;\n },\n async acceptanceGroup(target: TrainingAcceptanceTarget, groupId: string, expected?: TrainingAcceptanceGroupReference) {\n const reference = expected ? TrainingAcceptanceGroupReferenceSchema.parse({ id: expected.id, revision: expected.revision, contentHash: expected.contentHash }) : null;\n if (reference && reference.id !== groupId) throw new OpenPondProtocolError(\"acceptance_group_identity_mismatch\", \"The retained group reference differs from the requested group.\");\n const suffix = reference ? `?revision=${reference.revision}` : \"\";\n const snapshot = assertAcceptanceGroupSnapshot(await request(`${route(target)}/${encodeURIComponent(Id.parse(groupId))}${suffix}`));\n if (snapshot.manifest.teamId !== target.teamId || snapshot.manifest.trainingJob.id !== target.jobId || snapshot.manifest.id !== groupId ||\n (reference && (snapshot.revision !== reference.revision || snapshot.contentHash !== reference.contentHash)))\n throw new OpenPondProtocolError(\"acceptance_group_identity_mismatch\", \"Acceptance evidence does not match the requested workspace, job or retained revision.\");\n return snapshot;\n },\n };\n}\n", "import { createTrainingAcceptanceClient } from \"./training-acceptance.js\";\nexport { TrainingAcceptanceGroupReferenceSchema, TrainingAcceptanceGroupSummarySchema, TrainingAcceptanceGroupPageSchema, TrainingAcceptanceGroupQuerySchema, type TrainingAcceptanceGroupReference, type TrainingAcceptanceGroupSummary, type TrainingAcceptanceGroupPage, type TrainingAcceptanceGroupQuery, type TrainingAcceptanceTarget } from \"./training-acceptance.js\";\nimport { z } from \"zod\";\nimport { createTrainingPreparationClient } from \"./training-preparations.js\";\nexport { TrainingPreparationRequestSchema, TrainingPreparationPlanContentSchema, TrainingPreparationPlanSchema, TrainingPreparationReceiptSchema, TrainingPreparationControlSchema, parseAndVerifyTrainingPreparationReceipt, type TrainingPreparationRequest, type TrainingPreparationPlan, type TrainingPreparationReceipt, type TrainingPreparationControl } from \"./training-preparations.js\";\nexport { TrainingPreparationListQuerySchema, TrainingPreparationPageSchema, type TrainingPreparationListQuery, type TrainingPreparationPage } from \"./training-preparations.js\";\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 ...createTrainingPreparationClient(request),\n ...createTrainingAcceptanceClient(request),\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 { ModelProjectVersionedRefSchema } from \"./model-projects.js\";\nimport { TrainingJobSourceSchema } from \"./training.js\";\nimport { canonicalSha256, OpenPondProtocolError } from \"./protocol.js\";\n\nconst Id = z.string().trim().min(1).max(191);\nconst Hash = z.string().regex(/^[a-f0-9]{64}$/);\n\n/** Manual training compiles an already reviewed batch. It creates no recurring policy. */\nexport const TrainingPreparationRequestSchema = z.object({\n schemaVersion: z.literal(\"openpond.trainingPreparationRequest.v1\"),\n teamId: Id,\n operationId: Id,\n projectId: Id.nullable(),\n configuration: z.object({ id: Id, expectedRevision: z.number().int().positive(), expectedEtag: Hash }).strict(),\n batch: ModelProjectVersionedRefSchema,\n name: z.string().trim().min(1).max(191),\n maximumSpendUsd: z.number().finite().positive().max(1_000_000),\n}).strict();\nexport const TrainingPreparationPlanContentSchema = z.object({\n schemaVersion: z.literal(\"openpond.trainingPreparationPlan.v1\"),\n id: Id,\n creatorUserId: Id,\n request: TrainingPreparationRequestSchema,\n requestHash: Hash,\n source: z.lazy(() => TrainingJobSourceSchema),\n submissionHash: Hash,\n createdAt: z.string().datetime({ offset: true }),\n}).strict();\nexport const TrainingPreparationPlanSchema = TrainingPreparationPlanContentSchema.extend({ contentHash: Hash }).strict();\nexport const TrainingPreparationReceiptSchema = z.object({\n schemaVersion: z.literal(\"openpond.trainingPreparationReceipt.v1\"),\n plan: TrainingPreparationPlanSchema,\n revision: z.number().int().positive(),\n state: z.enum([\"prepared\", \"submitted\", \"cancelled\"]),\n jobId: Id.nullable(),\n}).strict().superRefine((value, context) => {\n if ((value.state === \"submitted\") !== Boolean(value.jobId)) context.addIssue({ code: \"custom\", path: [\"jobId\"], message: \"Only submitted preparations identify a job.\" });\n});\nexport const TrainingPreparationControlSchema = z.object({\n teamId: Id, planHash: Hash, expectedRevision: z.number().int().positive(),\n}).strict();\nexport const TrainingPreparationListQuerySchema = z.object({\n projectId: Id.optional(),\n state: z.enum([\"prepared\", \"submitted\", \"cancelled\"]).optional(),\n afterId: Id.optional(),\n limit: z.number().int().min(1).max(100).default(25),\n}).strict();\nexport const TrainingPreparationPageSchema = z.object({\n schemaVersion: z.literal(\"openpond.trainingPreparationPage.v1\"),\n teamId: Id,\n items: z.array(TrainingPreparationReceiptSchema).max(100),\n nextCursor: Id.nullable(),\n}).strict();\nexport type TrainingPreparationRequest = z.infer<typeof TrainingPreparationRequestSchema>;\nexport type TrainingPreparationPlan = z.infer<typeof TrainingPreparationPlanSchema>;\nexport type TrainingPreparationReceipt = z.infer<typeof TrainingPreparationReceiptSchema>;\nexport type TrainingPreparationControl = z.infer<typeof TrainingPreparationControlSchema>;\nexport type TrainingPreparationListQuery = z.input<typeof TrainingPreparationListQuerySchema>;\nexport type TrainingPreparationPage = z.infer<typeof TrainingPreparationPageSchema>;\n\nexport async function parseAndVerifyTrainingPreparationReceipt(value: unknown) {\n const receipt = TrainingPreparationReceiptSchema.parse(value);\n const { contentHash, ...plan } = receipt.plan;\n if (await canonicalSha256(plan) !== contentHash || await canonicalSha256(plan.request) !== plan.requestHash\n || plan.source.modelProject.id !== plan.request.configuration.id) {\n throw new OpenPondProtocolError(\"training_preparation_mismatch\", \"The prepared training inputs changed.\");\n }\n return receipt;\n}\n\nexport function createTrainingPreparationClient(request: (path: string, init?: RequestInit) => Promise<unknown>) {\n async function read(value: unknown, teamId: string, id?: string) {\n const receipt = await parseAndVerifyTrainingPreparationReceipt(value);\n if (receipt.plan.request.teamId !== teamId || (id && receipt.plan.id !== id))\n throw new OpenPondProtocolError(\"training_preparation_scope_mismatch\", \"The training preparation belongs to a different workspace or request.\");\n return receipt;\n }\n return {\n /** Discover the authenticated user's retained preparations without creating jobs. */\n async listPreparations(teamId: string, input: TrainingPreparationListQuery = {}) {\n const scope = Id.parse(teamId);\n const query = TrainingPreparationListQuerySchema.parse(input);\n const params = new URLSearchParams();\n for (const [key, value] of Object.entries(query)) params.set(key, String(value));\n const page = TrainingPreparationPageSchema.parse(await request(`/v1/training/preparations?${params}`));\n if (page.teamId !== scope || page.items.length > query.limit\n || new Set(page.items.map(item => item.plan.id)).size !== page.items.length\n || (page.nextCursor !== null && (page.nextCursor !== page.items.at(-1)?.plan.id || page.nextCursor === query.afterId))) {\n throw new OpenPondProtocolError(\"training_preparation_page_mismatch\", \"The preparation page does not match its workspace or cursor.\");\n }\n const items = await Promise.all(page.items.map(async item => {\n const receipt = await read(item, scope);\n if ((query.projectId && receipt.plan.request.projectId !== query.projectId)\n || (query.state && receipt.state !== query.state)) {\n throw new OpenPondProtocolError(\"training_preparation_page_mismatch\", \"A preparation does not match the requested Project or state.\");\n }\n return receipt;\n }));\n return { ...page, items };\n },\n async prepareRun(input: TrainingPreparationRequest) {\n const parsed = TrainingPreparationRequestSchema.parse(input);\n const receipt = await read(await request(\"/v1/training/preparations\", { method: \"POST\", body: JSON.stringify(parsed) }), parsed.teamId);\n if (receipt.plan.requestHash !== await canonicalSha256(parsed))\n throw new OpenPondProtocolError(\"training_preparation_request_mismatch\", \"The preparation does not match the requested run.\");\n return receipt;\n },\n async getPreparation(teamId: string, id: string) {\n return read(await request(`/v1/training/preparations/${encodeURIComponent(Id.parse(id))}`), Id.parse(teamId), id);\n },\n async startPreparation(id: string, input: TrainingPreparationControl) {\n const parsed = TrainingPreparationControlSchema.parse(input);\n const receipt = await read(await request(`/v1/training/preparations/${encodeURIComponent(Id.parse(id))}/start`, { method: \"POST\", body: JSON.stringify(parsed) }), parsed.teamId, id);\n if (receipt.plan.contentHash !== parsed.planHash || receipt.state !== \"submitted\")\n throw new OpenPondProtocolError(\"training_preparation_start_mismatch\", \"The submitted run does not match the approved preparation.\");\n return receipt;\n },\n async cancelPreparation(id: string, input: TrainingPreparationControl) {\n const parsed = TrainingPreparationControlSchema.parse(input);\n const receipt = await read(await request(`/v1/training/preparations/${encodeURIComponent(Id.parse(id))}/cancel`, { method: \"POST\", body: JSON.stringify(parsed) }), parsed.teamId, id);\n if (receipt.plan.contentHash !== parsed.planHash || receipt.state !== \"cancelled\")\n throw new OpenPondProtocolError(\"training_preparation_cancel_mismatch\", \"The preparation cancellation could not be verified.\");\n return receipt;\n },\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", "Id", "z", "z", "z", "z", "z", "z", "IdSchema", "z", "HashSchema", "z", "z", "z", "z", "IdSchema", "z", "HashSchema", "error"]
7
+ }
@@ -9,7 +9,7 @@ import "./chunk-DT7FRNIZ.js";
9
9
  import "./chunk-LGEF4S5I.js";
10
10
  import "./chunk-WOPM32SE.js";
11
11
  import "./chunk-2U54EOXJ.js";
12
- import "./chunk-KIBRMKJQ.js";
12
+ import "./chunk-JCPLAIZL.js";
13
13
  import "./chunk-TCHAWJMB.js";
14
14
  import "./chunk-3KXDH6OB.js";
15
15
  import {
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-KYCQ7LZ4.js";
5
5
  import "./chunk-WOPM32SE.js";
6
6
  import "./chunk-2U54EOXJ.js";
7
- import "./chunk-KIBRMKJQ.js";
7
+ import "./chunk-JCPLAIZL.js";
8
8
  import {
9
9
  ModelProjectVersionedRefSchema
10
10
  } from "./chunk-TCHAWJMB.js";
@@ -31,7 +31,7 @@ import {
31
31
  verifyModelStarterEnvironmentAttempt
32
32
  } from "./chunk-WOPM32SE.js";
33
33
  import "./chunk-2U54EOXJ.js";
34
- import "./chunk-KIBRMKJQ.js";
34
+ import "./chunk-JCPLAIZL.js";
35
35
  import "./chunk-TCHAWJMB.js";
36
36
  import "./chunk-3KXDH6OB.js";
37
37
  import "./chunk-Y4NGWGTA.js";
@@ -32,6 +32,7 @@ var ModelTasksetRunRequestSchema = z.object({
32
32
  operationId: IdSchema,
33
33
  teamId: IdSchema,
34
34
  modelProjectId: IdSchema.nullable(),
35
+ name: z.string().trim().min(1).max(200).optional(),
35
36
  project: EvaluationProjectContextSchema.optional(),
36
37
  taskset: ModelProjectVersionedRefSchema,
37
38
  policy: ModelTasksetRunPolicySchema,
@@ -47,6 +48,7 @@ var ModelTasksetRunSummarySchema = z.object({
47
48
  revision: z.number().int().positive(),
48
49
  teamId: IdSchema,
49
50
  modelProjectId: IdSchema.nullable(),
51
+ name: z.string().trim().min(1).max(200).optional(),
50
52
  project: EvaluationProjectContextSchema.optional(),
51
53
  operationId: IdSchema,
52
54
  taskset: ModelProjectVersionedRefSchema,
@@ -90,7 +92,7 @@ async function verifyModelTasksetRunDetails(value) {
90
92
  const result = ModelTasksetRunDetailsSchema.parse(value);
91
93
  const { summary, request, manifest, policySnapshot } = result;
92
94
  assertContentHash(manifest, "Taskset run manifest");
93
- if (manifest.contentHash !== summary.manifestHash || manifest.id !== summary.id || manifest.createdAt !== summary.createdAt || summary.teamId !== request.teamId || summary.modelProjectId !== request.modelProjectId || canonicalJson(summary.project ?? null) !== canonicalJson(request.project ?? null) || canonicalJson(manifest.metadata.project ?? null) !== canonicalJson(request.project ?? null) || summary.operationId !== request.operationId || summary.policyKind !== request.policy.kind || summary.totalCount !== request.population.length || summary.metricName !== manifest.metricPolicy.primaryMetric || canonicalJson(summary.taskset) !== canonicalJson(request.taskset) || manifest.tasksetRelease.id !== request.taskset.id || manifest.tasksetRelease.contentHash !== request.taskset.contentHash || canonicalJson(manifest.population) !== canonicalJson(request.population)) throw new Error("Evaluation run differs from its admitted request or manifest.");
95
+ if (manifest.contentHash !== summary.manifestHash || manifest.id !== summary.id || manifest.createdAt !== summary.createdAt || summary.teamId !== request.teamId || summary.modelProjectId !== request.modelProjectId || canonicalJson(summary.project ?? null) !== canonicalJson(request.project ?? null) || canonicalJson(manifest.metadata.project ?? null) !== canonicalJson(request.project ?? null) || (summary.name ?? null) !== (request.name ?? null) || summary.operationId !== request.operationId || summary.policyKind !== request.policy.kind || summary.totalCount !== request.population.length || summary.metricName !== manifest.metricPolicy.primaryMetric || canonicalJson(summary.taskset) !== canonicalJson(request.taskset) || manifest.tasksetRelease.id !== request.taskset.id || manifest.tasksetRelease.contentHash !== request.taskset.contentHash || canonicalJson(manifest.population) !== canonicalJson(request.population)) throw new Error("Evaluation run differs from its admitted request or manifest.");
94
96
  if (request.policy.kind === "fixture") {
95
97
  if (manifest.policy.kind !== "fixture" || policySnapshot !== null) throw new Error("Fixture checks cannot claim a model identity.");
96
98
  } else if (manifest.policy.kind !== "model" || !policySnapshot || policySnapshot.modelId !== request.policy.modelId || manifest.policy.model.provider !== policySnapshot.provider || manifest.policy.model.model !== policySnapshot.upstreamModelId || manifest.policy.model.revision !== null || manifest.policy.model.artifactHash !== null || manifest.policy.model.tokenizerRevision !== null || manifest.policy.model.chatTemplateHash !== null || manifest.policy.configurationHash !== await canonicalSha256({ policy: request.policy, snapshot: policySnapshot })) throw new Error("Evaluation model differs from its admitted policy.");
@@ -161,8 +163,8 @@ var OpenPondModelTasksetRunsClient = class {
161
163
  const result = ModelTasksetRunPageSchema.parse(await this.#request(`?${params}`, "GET", void 0, options.signal));
162
164
  if (result.items.length > query.limit || new Set(result.items.map((item) => item.id)).size !== result.items.length || result.items.some((item) => {
163
165
  this.#scope(item);
164
- return query.modelProjectId !== void 0 && item.modelProjectId !== query.modelProjectId || query.projectId !== void 0 && item.project?.id !== query.projectId;
165
- })) throw new OpenPondModelTasksetRunError(502, "evaluation_page_mismatch", "Evaluation page differs from the selected model.");
166
+ return query.modelProjectId !== void 0 && item.modelProjectId !== query.modelProjectId;
167
+ })) throw new OpenPondModelTasksetRunError(502, "evaluation_page_mismatch", "Evaluation page differs from the selected scope.");
166
168
  return result;
167
169
  }
168
170
  #scope(summary, id) {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/model-taskset-runs.ts", "../src/model-taskset-runs-contracts.ts"],
4
- "sourcesContent": ["import { z } from \"zod\";\nimport { canonicalJson } from \"./protocol.js\";\nimport { ModelTasksetRunRequestSchema, ModelTasksetRunListQuerySchema, ModelTasksetRunPageSchema, verifyModelTasksetRunDetails, verifyModelTasksetRunResult, type ModelTasksetRunSummary } from \"./model-taskset-runs-contracts.js\";\nexport * from \"./model-taskset-runs-contracts.js\";\n\nconst IdSchema = z.string().trim().min(1).max(200);\nexport class OpenPondModelTasksetRunError extends Error {\n constructor(readonly status: number, readonly code: string, message: string) { super(message); this.name = \"OpenPondModelTasksetRunError\"; }\n}\n\nexport class OpenPondModelTasksetRunsClient {\n readonly #options: { baseUrl: string; apiKey: string; teamId: string; fetch?: typeof globalThis.fetch };\n constructor(options: { baseUrl: string; apiKey: string; teamId: string; fetch?: typeof globalThis.fetch }) {\n const url = new URL(options.baseUrl);\n if (!options.apiKey.trim() || !options.teamId.trim() || ![\"https:\", \"http:\"].includes(url.protocol) || url.username || url.password || url.search || url.hash) throw new Error(\"Evaluation runs require an HTTP(S) endpoint and workspace credentials.\");\n this.#options = { ...options, baseUrl: url.toString().replace(/\\/+$/, \"\") };\n }\n async create(value: z.input<typeof ModelTasksetRunRequestSchema>, options: { signal?: AbortSignal } = {}) {\n const request = ModelTasksetRunRequestSchema.parse(value);\n if (request.teamId !== this.#options.teamId) throw new Error(\"Evaluation belongs to another workspace.\");\n const result = await verifyModelTasksetRunDetails(await this.#request(\"\", \"POST\", request, options.signal));\n this.#scope(result.summary);\n if (canonicalJson(result.request) !== canonicalJson(request)) throw new OpenPondModelTasksetRunError(502, \"evaluation_request_mismatch\", \"Evaluation differs from the submitted request.\");\n return result;\n }\n async get(id: string, options: { signal?: AbortSignal } = {}) {\n const result = await verifyModelTasksetRunDetails(await this.#request(`/${encodeURIComponent(IdSchema.parse(id))}`, \"GET\", undefined, options.signal));\n this.#scope(result.summary, id);\n return result;\n }\n async cancel(id: string, options: { signal?: AbortSignal } = {}) {\n const result = await verifyModelTasksetRunDetails(await this.#request(`/${encodeURIComponent(IdSchema.parse(id))}/cancel`, \"POST\", undefined, options.signal));\n this.#scope(result.summary, id);\n return result;\n }\n async result(id: string, options: { signal?: AbortSignal } = {}) {\n const result = await verifyModelTasksetRunResult(await this.#request(`/${encodeURIComponent(IdSchema.parse(id))}/result`, \"GET\", undefined, options.signal));\n this.#scope(result.run.summary, id);\n return result;\n }\n async list(value: z.input<typeof ModelTasksetRunListQuerySchema>, options: { signal?: AbortSignal } = {}) {\n const query = ModelTasksetRunListQuerySchema.parse(value);\n const params = new URLSearchParams({ ...(query.modelProjectId ? { modelProjectId: query.modelProjectId } : {}), ...(query.projectId ? { projectId: query.projectId } : {}), limit: String(query.limit) });\n if (query.afterId) params.set(\"afterId\", query.afterId);\n const result = ModelTasksetRunPageSchema.parse(await this.#request(`?${params}`, \"GET\", undefined, options.signal));\n if (result.items.length > query.limit || new Set(result.items.map(item => item.id)).size !== result.items.length || result.items.some(item => { this.#scope(item); return (query.modelProjectId !== undefined && item.modelProjectId !== query.modelProjectId) || (query.projectId !== undefined && item.project?.id !== query.projectId); })) throw new OpenPondModelTasksetRunError(502, \"evaluation_page_mismatch\", \"Evaluation page differs from the selected model.\");\n return result;\n }\n #scope(summary: ModelTasksetRunSummary, id?: string) {\n if (summary.teamId !== this.#options.teamId || (id && summary.id !== id)) throw new OpenPondModelTasksetRunError(502, \"evaluation_identity_mismatch\", \"Evaluation belongs to another identity or workspace.\");\n }\n async #request(path: string, method: string, body: unknown, signal?: AbortSignal): Promise<unknown> {\n const response = await (this.#options.fetch ?? globalThis.fetch)(`${this.#options.baseUrl}/v1/model-taskset-runs${path}`, {\n method, headers: { Authorization: `Bearer ${this.#options.apiKey}`, \"X-OpenPond-Team-Id\": this.#options.teamId, \"Content-Type\": \"application/json\", Accept: \"application/json\" },\n ...(body === undefined ? {} : { body: JSON.stringify(body) }), signal, redirect: \"error\",\n });\n const value = await response.json();\n if (!response.ok) {\n const error = z.object({ code: z.string(), message: z.string() }).safeParse(value);\n throw new OpenPondModelTasksetRunError(response.status, error.success ? error.data.code : \"evaluation_request_failed\", error.success ? error.data.message : \"Evaluation request failed.\");\n }\n return value;\n }\n}\n", "import { z } from \"zod\";\nimport { EvaluationProjectContextSchema } from \"./evaluation-project-context.js\";\nimport { assertContentHash } from \"@openpond/harness\";\nimport { TasksetRunManifestSchema, TasksetRunMemberSchema, TasksetMetricResultSchema, assertTasksetMetricResult, orderTasksetRunReceipts } from \"@openpond/evals/metrics\";\nimport { AttemptReceiptSchema } from \"@openpond/evals/runs\";\nimport { ModelProjectVersionedRefSchema } from \"./model-projects.js\";\nimport { ModelStarterAttemptPolicySchema, ModelStarterAttemptSummarySchema } from \"./model-starter-attempts.js\";\nimport { canonicalJson, canonicalSha256 } from \"./protocol.js\";\n\nconst IdSchema = z.string().trim().min(1).max(200);\nconst HashSchema = z.string().regex(/^[a-f0-9]{64}$/);\nexport const ModelTasksetRunPolicySchema = z.discriminatedUnion(\"kind\", [\n ModelStarterAttemptPolicySchema.options[0],\n z.object({ kind: z.literal(\"fixture\") }).strict(),\n]);\nexport const ModelTasksetRunRequestSchema = z.object({\n schemaVersion: z.literal(\"openpond.modelTasksetRunRequest.v1\"),\n operationId: IdSchema, teamId: IdSchema, modelProjectId: IdSchema.nullable(),\n project: EvaluationProjectContextSchema.optional(),\n taskset: ModelProjectVersionedRefSchema, policy: ModelTasksetRunPolicySchema,\n population: z.array(TasksetRunMemberSchema).min(1).max(10_000),\n}).strict().superRefine((value, context) => {\n if (new Set(value.population.map(member => member.receiptId)).size !== value.population.length) context.addIssue({ code: \"custom\", path: [\"population\"], message: \"Run receipt identities must be unique.\" });\n if (value.population.some(member => (member.fixtureId !== null) !== (value.policy.kind === \"fixture\"))) context.addIssue({ code: \"custom\", path: [\"population\"], message: \"Only fixture runs require a fixture identity for every member.\" });\n if (value.population.some(member => !/^(0|[1-9][0-9]*)$/.test(member.seed) || Number(member.seed) > 2_147_483_647)) context.addIssue({ code: \"custom\", path: [\"population\"], message: \"Hosted environment seeds must be integers from 0 to 2147483647.\" });\n});\nexport type ModelTasksetRunRequest = z.infer<typeof ModelTasksetRunRequestSchema>;\nexport const ModelTasksetRunSummarySchema = z.object({\n schemaVersion: z.literal(\"openpond.modelTasksetRunSummary.v1\"),\n id: IdSchema, revision: z.number().int().positive(), teamId: IdSchema, modelProjectId: IdSchema.nullable(),\n project: EvaluationProjectContextSchema.optional(),\n operationId: IdSchema, taskset: ModelProjectVersionedRefSchema, policyKind: z.enum([\"hosted_chat\", \"fixture\"]),\n manifestHash: HashSchema,\n status: z.enum([\"queued\", \"running\", \"cancelling\", \"completed\", \"failed\", \"cancelled\"]),\n totalCount: z.number().int().min(1).max(10_000),\n counts: z.object({ pending: z.number().int().nonnegative(), running: z.number().int().nonnegative(), completed: z.number().int().nonnegative(), failed: z.number().int().nonnegative(), cancelled: z.number().int().nonnegative() }).strict(),\n createdAt: z.iso.datetime(), startedAt: z.iso.datetime().nullable(), completedAt: z.iso.datetime().nullable(),\n cleanupComplete: z.boolean(), resultAvailable: z.boolean(), score: z.number().min(0).max(1).nullable(),\n metricName: z.string().min(1).max(240),\n error: z.object({ code: IdSchema, message: z.string().max(2_000) }).strict().nullable(),\n}).strict().superRefine((value, context) => {\n if (Object.values(value.counts).reduce((sum, count) => sum + count, 0) !== value.totalCount) context.addIssue({ code: \"custom\", path: [\"counts\"], message: \"Run counts must account for the complete population.\" });\n if (value.status !== \"completed\" && value.score !== null) context.addIssue({ code: \"custom\", path: [\"score\"], message: \"Only completed evaluations publish a metric value.\" });\n if ([\"completed\", \"failed\", \"cancelled\"].includes(value.status) && (!value.completedAt || value.counts.pending || value.counts.running)) context.addIssue({ code: \"custom\", message: \"Terminal runs require complete population accounting.\" });\n if (value.status === \"cancelled\" && !value.cleanupComplete) context.addIssue({ code: \"custom\", message: \"Cancelled runs require confirmed cleanup.\" });\n if (value.resultAvailable && ![\"completed\", \"failed\", \"cancelled\"].includes(value.status)) context.addIssue({ code: \"custom\", message: \"Run results require terminal population accounting.\" });\n if (value.status === \"completed\" && (!value.cleanupComplete || !value.resultAvailable)) context.addIssue({ code: \"custom\", message: \"Completed evaluations require retained results and confirmed cleanup.\" });\n});\nexport type ModelTasksetRunSummary = z.infer<typeof ModelTasksetRunSummarySchema>;\nexport const ModelTasksetRunDetailsSchema = z.object({\n summary: ModelTasksetRunSummarySchema,\n request: ModelTasksetRunRequestSchema,\n manifest: TasksetRunManifestSchema,\n policySnapshot: ModelStarterAttemptSummarySchema.shape.policySnapshot,\n}).strict();\nexport type ModelTasksetRunDetails = z.infer<typeof ModelTasksetRunDetailsSchema>;\nexport const ModelTasksetRunListQuerySchema = z.object({ modelProjectId: IdSchema.optional(), projectId: EvaluationProjectContextSchema.shape.id.optional(), afterId: IdSchema.optional(), limit: z.number().int().min(1).max(100).default(25) }).strict();\nexport const ModelTasksetRunPageSchema = z.object({ items: z.array(ModelTasksetRunSummarySchema).max(100), nextCursor: IdSchema.nullable() }).strict();\nexport const ModelTasksetRunResultSchema = z.object({\n schemaVersion: z.literal(\"openpond.modelTasksetRunResult.v1\"),\n run: ModelTasksetRunDetailsSchema,\n receipts: z.array(AttemptReceiptSchema).min(1).max(10_000),\n metric: TasksetMetricResultSchema.nullable(),\n contentHash: HashSchema,\n}).strict();\nexport type ModelTasksetRunResult = z.infer<typeof ModelTasksetRunResultSchema>;\n\n/** Server artifact ownership authenticates the producer. These checks bind all\n * portable projections to the admitted request, population and policy. */\nexport async function verifyModelTasksetRunDetails(value: unknown): Promise<ModelTasksetRunDetails> {\n const result = ModelTasksetRunDetailsSchema.parse(value);\n const { summary, request, manifest, policySnapshot } = result;\n assertContentHash(manifest, \"Taskset run manifest\");\n if (manifest.contentHash !== summary.manifestHash\n || manifest.id !== summary.id || manifest.createdAt !== summary.createdAt || summary.teamId !== request.teamId || summary.modelProjectId !== request.modelProjectId\n || canonicalJson(summary.project ?? null) !== canonicalJson(request.project ?? null)\n || canonicalJson(manifest.metadata.project ?? null) !== canonicalJson(request.project ?? null)\n || summary.operationId !== request.operationId || summary.policyKind !== request.policy.kind\n || summary.totalCount !== request.population.length || summary.metricName !== manifest.metricPolicy.primaryMetric\n || canonicalJson(summary.taskset) !== canonicalJson(request.taskset)\n || manifest.tasksetRelease.id !== request.taskset.id || manifest.tasksetRelease.contentHash !== request.taskset.contentHash\n || canonicalJson(manifest.population) !== canonicalJson(request.population)) throw new Error(\"Evaluation run differs from its admitted request or manifest.\");\n if (request.policy.kind === \"fixture\") {\n if (manifest.policy.kind !== \"fixture\" || policySnapshot !== null) throw new Error(\"Fixture checks cannot claim a model identity.\");\n } else if (manifest.policy.kind !== \"model\" || !policySnapshot || policySnapshot.modelId !== request.policy.modelId\n || manifest.policy.model.provider !== policySnapshot.provider || manifest.policy.model.model !== policySnapshot.upstreamModelId\n || manifest.policy.model.revision !== null || manifest.policy.model.artifactHash !== null || manifest.policy.model.tokenizerRevision !== null || manifest.policy.model.chatTemplateHash !== null\n || manifest.policy.configurationHash !== await canonicalSha256({ policy: request.policy, snapshot: policySnapshot })) throw new Error(\"Evaluation model differs from its admitted policy.\");\n return result;\n}\n\nexport async function verifyModelTasksetRunResult(value: unknown): Promise<ModelTasksetRunResult> {\n const result = ModelTasksetRunResultSchema.parse(value);\n const { contentHash: actual, ...content } = result;\n if (await canonicalSha256(content) !== actual) throw new Error(\"Evaluation result integrity failed.\");\n const { summary, manifest } = await verifyModelTasksetRunDetails(result.run);\n if (!summary.resultAvailable || ![\"completed\", \"failed\", \"cancelled\"].includes(summary.status)) throw new Error(\"Evaluation result is not terminal.\");\n const ordered = orderTasksetRunReceipts(manifest, result.receipts);\n if (canonicalJson(ordered) !== canonicalJson(result.receipts)) throw new Error(\"Evaluation receipts differ from the admitted order.\");\n if ((summary.status === \"completed\") !== (result.metric !== null)) throw new Error(\"Only completed evaluations retain a metric.\");\n if (result.metric) {\n assertTasksetMetricResult(result.metric);\n if (result.metric.runManifest.id !== manifest.id || result.metric.runManifest.contentHash !== manifest.contentHash\n || canonicalJson(result.metric.tasksetRelease) !== canonicalJson(manifest.tasksetRelease)\n || canonicalJson(result.metric.policy) !== canonicalJson(manifest.metricPolicy)\n || canonicalJson(result.metric.receiptRefs) !== canonicalJson(result.receipts.map(({ id, contentHash }) => ({ id, contentHash })))\n || result.metric.value !== summary.score) throw new Error(\"Evaluation metric differs from its admitted run or receipt population.\");\n }\n return result;\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { z } from \"zod\";\nimport { canonicalJson } from \"./protocol.js\";\nimport { ModelTasksetRunRequestSchema, ModelTasksetRunListQuerySchema, ModelTasksetRunPageSchema, verifyModelTasksetRunDetails, verifyModelTasksetRunResult, type ModelTasksetRunSummary } from \"./model-taskset-runs-contracts.js\";\nexport * from \"./model-taskset-runs-contracts.js\";\n\nconst IdSchema = z.string().trim().min(1).max(200);\nexport class OpenPondModelTasksetRunError extends Error {\n constructor(readonly status: number, readonly code: string, message: string) { super(message); this.name = \"OpenPondModelTasksetRunError\"; }\n}\n\nexport class OpenPondModelTasksetRunsClient {\n readonly #options: { baseUrl: string; apiKey: string; teamId: string; fetch?: typeof globalThis.fetch };\n constructor(options: { baseUrl: string; apiKey: string; teamId: string; fetch?: typeof globalThis.fetch }) {\n const url = new URL(options.baseUrl);\n if (!options.apiKey.trim() || !options.teamId.trim() || ![\"https:\", \"http:\"].includes(url.protocol) || url.username || url.password || url.search || url.hash) throw new Error(\"Evaluation runs require an HTTP(S) endpoint and workspace credentials.\");\n this.#options = { ...options, baseUrl: url.toString().replace(/\\/+$/, \"\") };\n }\n async create(value: z.input<typeof ModelTasksetRunRequestSchema>, options: { signal?: AbortSignal } = {}) {\n const request = ModelTasksetRunRequestSchema.parse(value);\n if (request.teamId !== this.#options.teamId) throw new Error(\"Evaluation belongs to another workspace.\");\n const result = await verifyModelTasksetRunDetails(await this.#request(\"\", \"POST\", request, options.signal));\n this.#scope(result.summary);\n if (canonicalJson(result.request) !== canonicalJson(request)) throw new OpenPondModelTasksetRunError(502, \"evaluation_request_mismatch\", \"Evaluation differs from the submitted request.\");\n return result;\n }\n async get(id: string, options: { signal?: AbortSignal } = {}) {\n const result = await verifyModelTasksetRunDetails(await this.#request(`/${encodeURIComponent(IdSchema.parse(id))}`, \"GET\", undefined, options.signal));\n this.#scope(result.summary, id);\n return result;\n }\n async cancel(id: string, options: { signal?: AbortSignal } = {}) {\n const result = await verifyModelTasksetRunDetails(await this.#request(`/${encodeURIComponent(IdSchema.parse(id))}/cancel`, \"POST\", undefined, options.signal));\n this.#scope(result.summary, id);\n return result;\n }\n async result(id: string, options: { signal?: AbortSignal } = {}) {\n const result = await verifyModelTasksetRunResult(await this.#request(`/${encodeURIComponent(IdSchema.parse(id))}/result`, \"GET\", undefined, options.signal));\n this.#scope(result.run.summary, id);\n return result;\n }\n async list(value: z.input<typeof ModelTasksetRunListQuerySchema>, options: { signal?: AbortSignal } = {}) {\n const query = ModelTasksetRunListQuerySchema.parse(value);\n const params = new URLSearchParams({ ...(query.modelProjectId ? { modelProjectId: query.modelProjectId } : {}), ...(query.projectId ? { projectId: query.projectId } : {}), limit: String(query.limit) });\n if (query.afterId) params.set(\"afterId\", query.afterId);\n const result = ModelTasksetRunPageSchema.parse(await this.#request(`?${params}`, \"GET\", undefined, options.signal));\n // Project membership may be an explicit run link or a linked model\n // configuration. Only the host can verify those associations; the SDK\n // still enforces workspace identity and an exact model filter here.\n if (result.items.length > query.limit || new Set(result.items.map(item => item.id)).size !== result.items.length || result.items.some(item => { this.#scope(item); return query.modelProjectId !== undefined && item.modelProjectId !== query.modelProjectId; })) throw new OpenPondModelTasksetRunError(502, \"evaluation_page_mismatch\", \"Evaluation page differs from the selected scope.\");\n return result;\n }\n #scope(summary: ModelTasksetRunSummary, id?: string) {\n if (summary.teamId !== this.#options.teamId || (id && summary.id !== id)) throw new OpenPondModelTasksetRunError(502, \"evaluation_identity_mismatch\", \"Evaluation belongs to another identity or workspace.\");\n }\n async #request(path: string, method: string, body: unknown, signal?: AbortSignal): Promise<unknown> {\n const response = await (this.#options.fetch ?? globalThis.fetch)(`${this.#options.baseUrl}/v1/model-taskset-runs${path}`, {\n method, headers: { Authorization: `Bearer ${this.#options.apiKey}`, \"X-OpenPond-Team-Id\": this.#options.teamId, \"Content-Type\": \"application/json\", Accept: \"application/json\" },\n ...(body === undefined ? {} : { body: JSON.stringify(body) }), signal, redirect: \"error\",\n });\n const value = await response.json();\n if (!response.ok) {\n const error = z.object({ code: z.string(), message: z.string() }).safeParse(value);\n throw new OpenPondModelTasksetRunError(response.status, error.success ? error.data.code : \"evaluation_request_failed\", error.success ? error.data.message : \"Evaluation request failed.\");\n }\n return value;\n }\n}\n", "import { z } from \"zod\";\nimport { EvaluationProjectContextSchema } from \"./evaluation-project-context.js\";\nimport { assertContentHash } from \"@openpond/harness\";\nimport { TasksetRunManifestSchema, TasksetRunMemberSchema, TasksetMetricResultSchema, assertTasksetMetricResult, orderTasksetRunReceipts } from \"@openpond/evals/metrics\";\nimport { AttemptReceiptSchema } from \"@openpond/evals/runs\";\nimport { ModelProjectVersionedRefSchema } from \"./model-projects.js\";\nimport { ModelStarterAttemptPolicySchema, ModelStarterAttemptSummarySchema } from \"./model-starter-attempts.js\";\nimport { canonicalJson, canonicalSha256 } from \"./protocol.js\";\n\nconst IdSchema = z.string().trim().min(1).max(200);\nconst HashSchema = z.string().regex(/^[a-f0-9]{64}$/);\nexport const ModelTasksetRunPolicySchema = z.discriminatedUnion(\"kind\", [\n ModelStarterAttemptPolicySchema.options[0],\n z.object({ kind: z.literal(\"fixture\") }).strict(),\n]);\nexport const ModelTasksetRunRequestSchema = z.object({\n schemaVersion: z.literal(\"openpond.modelTasksetRunRequest.v1\"),\n operationId: IdSchema, teamId: IdSchema, modelProjectId: IdSchema.nullable(),\n name: z.string().trim().min(1).max(200).optional(),\n project: EvaluationProjectContextSchema.optional(),\n taskset: ModelProjectVersionedRefSchema, policy: ModelTasksetRunPolicySchema,\n population: z.array(TasksetRunMemberSchema).min(1).max(10_000),\n}).strict().superRefine((value, context) => {\n if (new Set(value.population.map(member => member.receiptId)).size !== value.population.length) context.addIssue({ code: \"custom\", path: [\"population\"], message: \"Run receipt identities must be unique.\" });\n if (value.population.some(member => (member.fixtureId !== null) !== (value.policy.kind === \"fixture\"))) context.addIssue({ code: \"custom\", path: [\"population\"], message: \"Only fixture runs require a fixture identity for every member.\" });\n if (value.population.some(member => !/^(0|[1-9][0-9]*)$/.test(member.seed) || Number(member.seed) > 2_147_483_647)) context.addIssue({ code: \"custom\", path: [\"population\"], message: \"Hosted environment seeds must be integers from 0 to 2147483647.\" });\n});\nexport type ModelTasksetRunRequest = z.infer<typeof ModelTasksetRunRequestSchema>;\nexport const ModelTasksetRunSummarySchema = z.object({\n schemaVersion: z.literal(\"openpond.modelTasksetRunSummary.v1\"),\n id: IdSchema, revision: z.number().int().positive(), teamId: IdSchema, modelProjectId: IdSchema.nullable(),\n name: z.string().trim().min(1).max(200).optional(),\n project: EvaluationProjectContextSchema.optional(),\n operationId: IdSchema, taskset: ModelProjectVersionedRefSchema, policyKind: z.enum([\"hosted_chat\", \"fixture\"]),\n manifestHash: HashSchema,\n status: z.enum([\"queued\", \"running\", \"cancelling\", \"completed\", \"failed\", \"cancelled\"]),\n totalCount: z.number().int().min(1).max(10_000),\n counts: z.object({ pending: z.number().int().nonnegative(), running: z.number().int().nonnegative(), completed: z.number().int().nonnegative(), failed: z.number().int().nonnegative(), cancelled: z.number().int().nonnegative() }).strict(),\n createdAt: z.iso.datetime(), startedAt: z.iso.datetime().nullable(), completedAt: z.iso.datetime().nullable(),\n cleanupComplete: z.boolean(), resultAvailable: z.boolean(), score: z.number().min(0).max(1).nullable(),\n metricName: z.string().min(1).max(240),\n error: z.object({ code: IdSchema, message: z.string().max(2_000) }).strict().nullable(),\n}).strict().superRefine((value, context) => {\n if (Object.values(value.counts).reduce((sum, count) => sum + count, 0) !== value.totalCount) context.addIssue({ code: \"custom\", path: [\"counts\"], message: \"Run counts must account for the complete population.\" });\n if (value.status !== \"completed\" && value.score !== null) context.addIssue({ code: \"custom\", path: [\"score\"], message: \"Only completed evaluations publish a metric value.\" });\n if ([\"completed\", \"failed\", \"cancelled\"].includes(value.status) && (!value.completedAt || value.counts.pending || value.counts.running)) context.addIssue({ code: \"custom\", message: \"Terminal runs require complete population accounting.\" });\n if (value.status === \"cancelled\" && !value.cleanupComplete) context.addIssue({ code: \"custom\", message: \"Cancelled runs require confirmed cleanup.\" });\n if (value.resultAvailable && ![\"completed\", \"failed\", \"cancelled\"].includes(value.status)) context.addIssue({ code: \"custom\", message: \"Run results require terminal population accounting.\" });\n if (value.status === \"completed\" && (!value.cleanupComplete || !value.resultAvailable)) context.addIssue({ code: \"custom\", message: \"Completed evaluations require retained results and confirmed cleanup.\" });\n});\nexport type ModelTasksetRunSummary = z.infer<typeof ModelTasksetRunSummarySchema>;\nexport const ModelTasksetRunDetailsSchema = z.object({\n summary: ModelTasksetRunSummarySchema,\n request: ModelTasksetRunRequestSchema,\n manifest: TasksetRunManifestSchema,\n policySnapshot: ModelStarterAttemptSummarySchema.shape.policySnapshot,\n}).strict();\nexport type ModelTasksetRunDetails = z.infer<typeof ModelTasksetRunDetailsSchema>;\nexport const ModelTasksetRunListQuerySchema = z.object({ modelProjectId: IdSchema.optional(), projectId: EvaluationProjectContextSchema.shape.id.optional(), afterId: IdSchema.optional(), limit: z.number().int().min(1).max(100).default(25) }).strict();\nexport const ModelTasksetRunPageSchema = z.object({ items: z.array(ModelTasksetRunSummarySchema).max(100), nextCursor: IdSchema.nullable() }).strict();\nexport const ModelTasksetRunResultSchema = z.object({\n schemaVersion: z.literal(\"openpond.modelTasksetRunResult.v1\"),\n run: ModelTasksetRunDetailsSchema,\n receipts: z.array(AttemptReceiptSchema).min(1).max(10_000),\n metric: TasksetMetricResultSchema.nullable(),\n contentHash: HashSchema,\n}).strict();\nexport type ModelTasksetRunResult = z.infer<typeof ModelTasksetRunResultSchema>;\n\n/** Server artifact ownership authenticates the producer. These checks bind all\n * portable projections to the admitted request, population and policy. */\nexport async function verifyModelTasksetRunDetails(value: unknown): Promise<ModelTasksetRunDetails> {\n const result = ModelTasksetRunDetailsSchema.parse(value);\n const { summary, request, manifest, policySnapshot } = result;\n assertContentHash(manifest, \"Taskset run manifest\");\n if (manifest.contentHash !== summary.manifestHash\n || manifest.id !== summary.id || manifest.createdAt !== summary.createdAt || summary.teamId !== request.teamId || summary.modelProjectId !== request.modelProjectId\n || canonicalJson(summary.project ?? null) !== canonicalJson(request.project ?? null)\n || canonicalJson(manifest.metadata.project ?? null) !== canonicalJson(request.project ?? null)\n || (summary.name ?? null) !== (request.name ?? null)\n || summary.operationId !== request.operationId || summary.policyKind !== request.policy.kind\n || summary.totalCount !== request.population.length || summary.metricName !== manifest.metricPolicy.primaryMetric\n || canonicalJson(summary.taskset) !== canonicalJson(request.taskset)\n || manifest.tasksetRelease.id !== request.taskset.id || manifest.tasksetRelease.contentHash !== request.taskset.contentHash\n || canonicalJson(manifest.population) !== canonicalJson(request.population)) throw new Error(\"Evaluation run differs from its admitted request or manifest.\");\n if (request.policy.kind === \"fixture\") {\n if (manifest.policy.kind !== \"fixture\" || policySnapshot !== null) throw new Error(\"Fixture checks cannot claim a model identity.\");\n } else if (manifest.policy.kind !== \"model\" || !policySnapshot || policySnapshot.modelId !== request.policy.modelId\n || manifest.policy.model.provider !== policySnapshot.provider || manifest.policy.model.model !== policySnapshot.upstreamModelId\n || manifest.policy.model.revision !== null || manifest.policy.model.artifactHash !== null || manifest.policy.model.tokenizerRevision !== null || manifest.policy.model.chatTemplateHash !== null\n || manifest.policy.configurationHash !== await canonicalSha256({ policy: request.policy, snapshot: policySnapshot })) throw new Error(\"Evaluation model differs from its admitted policy.\");\n return result;\n}\n\nexport async function verifyModelTasksetRunResult(value: unknown): Promise<ModelTasksetRunResult> {\n const result = ModelTasksetRunResultSchema.parse(value);\n const { contentHash: actual, ...content } = result;\n if (await canonicalSha256(content) !== actual) throw new Error(\"Evaluation result integrity failed.\");\n const { summary, manifest } = await verifyModelTasksetRunDetails(result.run);\n if (!summary.resultAvailable || ![\"completed\", \"failed\", \"cancelled\"].includes(summary.status)) throw new Error(\"Evaluation result is not terminal.\");\n const ordered = orderTasksetRunReceipts(manifest, result.receipts);\n if (canonicalJson(ordered) !== canonicalJson(result.receipts)) throw new Error(\"Evaluation receipts differ from the admitted order.\");\n if ((summary.status === \"completed\") !== (result.metric !== null)) throw new Error(\"Only completed evaluations retain a metric.\");\n if (result.metric) {\n assertTasksetMetricResult(result.metric);\n if (result.metric.runManifest.id !== manifest.id || result.metric.runManifest.contentHash !== manifest.contentHash\n || canonicalJson(result.metric.tasksetRelease) !== canonicalJson(manifest.tasksetRelease)\n || canonicalJson(result.metric.policy) !== canonicalJson(manifest.metricPolicy)\n || canonicalJson(result.metric.receiptRefs) !== canonicalJson(result.receipts.map(({ id, contentHash }) => ({ id, contentHash })))\n || result.metric.value !== summary.score) throw new Error(\"Evaluation metric differs from its admitted run or receipt population.\");\n }\n return result;\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["z", "IdSchema", "z"]
7
7
  }
@@ -108,7 +108,7 @@ import {
108
108
  TasksetDraftFilePathSchema,
109
109
  TasksetDraftFileSchema
110
110
  } from "./chunk-2U54EOXJ.js";
111
- import "./chunk-KIBRMKJQ.js";
111
+ import "./chunk-JCPLAIZL.js";
112
112
  import "./chunk-TCHAWJMB.js";
113
113
  import "./chunk-3KXDH6OB.js";
114
114
  import "./chunk-A4ZDOZKP.js";
@@ -75,7 +75,7 @@ import {
75
75
  TasksetDraftFilePathSchema,
76
76
  TasksetDraftFileSchema
77
77
  } from "./chunk-2U54EOXJ.js";
78
- import "./chunk-KIBRMKJQ.js";
78
+ import "./chunk-JCPLAIZL.js";
79
79
  import "./chunk-TCHAWJMB.js";
80
80
  import "./chunk-3KXDH6OB.js";
81
81
  import "./chunk-A4ZDOZKP.js";
@@ -23,7 +23,7 @@ import {
23
23
  trainingEvaluationSourceRef,
24
24
  trainingInputArtifactUploadHash,
25
25
  trainingJobSubmissionHash
26
- } from "./chunk-KIBRMKJQ.js";
26
+ } from "./chunk-JCPLAIZL.js";
27
27
  import "./chunk-TCHAWJMB.js";
28
28
  import "./chunk-3KXDH6OB.js";
29
29
  import {
package/dist/training.js CHANGED
@@ -3,6 +3,10 @@ import {
3
3
  PolicyOptimizationRequestSchema,
4
4
  RewardModelTrainingRequestSchema,
5
5
  TRAINING_EVALUATION_SOURCE_PATH,
6
+ TrainingAcceptanceGroupPageSchema,
7
+ TrainingAcceptanceGroupQuerySchema,
8
+ TrainingAcceptanceGroupReferenceSchema,
9
+ TrainingAcceptanceGroupSummarySchema,
6
10
  TrainingApiErrorSchema,
7
11
  TrainingCandidateDecisionRequestSchema,
8
12
  TrainingCandidateDecisionSchema,
@@ -50,7 +54,7 @@ import {
50
54
  trainingExecutionReceiptHash,
51
55
  trainingInputArtifactUploadHash,
52
56
  trainingJobSubmissionHash
53
- } from "./chunk-KIBRMKJQ.js";
57
+ } from "./chunk-JCPLAIZL.js";
54
58
  import {
55
59
  OPENPOND_TRAINING_MEDIA_TYPE,
56
60
  OPENPOND_TRAINING_PROTOCOL_MAJOR,
@@ -78,6 +82,10 @@ export {
78
82
  TRAINING_EVALUATION_SOURCE_PATH,
79
83
  TRAINING_INPUT_ARTIFACT_MAX_BYTES,
80
84
  TRAINING_JOB_SUBMISSION_MAX_BYTES,
85
+ TrainingAcceptanceGroupPageSchema,
86
+ TrainingAcceptanceGroupQuerySchema,
87
+ TrainingAcceptanceGroupReferenceSchema,
88
+ TrainingAcceptanceGroupSummarySchema,
81
89
  TrainingApiErrorSchema,
82
90
  TrainingCandidateDecisionRequestSchema,
83
91
  TrainingCandidateDecisionSchema,
@@ -256,6 +256,7 @@ export declare function prepareModelBatchReview(input: {
256
256
  visibility: "policy" | "verifier" | "host_private";
257
257
  }[];
258
258
  contentHash: string;
259
+ feedbackKey?: string | undefined;
259
260
  fixtureSetRef?: {
260
261
  id: string;
261
262
  path: string;
@@ -1 +1 @@
1
- {"version":3,"file":"model-batch-review-preparation.d.ts","sourceRoot":"","sources":["../../../../../src/model-batch-review-preparation.ts"],"names":[],"mappings":"AACA,OAAO,EAE8C,KAAK,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC9G,OAAO,EAAsF,KAAK,aAAa,EAAE,KAAK,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACrK,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AAEjF;kFACkF;AAClF,wBAAgB,uBAAuB,CAAC,KAAK,EAAE;IAC7C,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,uBAAuB,CAAC;IAAC,OAAO,EAAE,cAAc,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IACtF,OAAO,EAAE,aAAa,CAAC;IAAC,OAAO,EAAE,aAAa,EAAE,CAAC;IAAC,MAAM,EAAE,iBAAiB,EAAE,CAAC;CAC/E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsFA"}
1
+ {"version":3,"file":"model-batch-review-preparation.d.ts","sourceRoot":"","sources":["../../../../../src/model-batch-review-preparation.ts"],"names":[],"mappings":"AACA,OAAO,EAE8C,KAAK,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC9G,OAAO,EAAsF,KAAK,aAAa,EAAE,KAAK,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACrK,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AAEjF;kFACkF;AAClF,wBAAgB,uBAAuB,CAAC,KAAK,EAAE;IAC7C,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,uBAAuB,CAAC;IAAC,OAAO,EAAE,cAAc,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IACtF,OAAO,EAAE,aAAa,CAAC;IAAC,OAAO,EAAE,aAAa,EAAE,CAAC;IAAC,MAAM,EAAE,iBAAiB,EAAE,CAAC;CAC/E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsFA"}
@@ -141,9 +141,9 @@ export declare const ModelStarterAttemptSummarySchema: z.ZodObject<{
141
141
  failed: "failed";
142
142
  completed: "completed";
143
143
  cancelled: "cancelled";
144
- queued: "queued";
145
144
  running: "running";
146
145
  cancelling: "cancelling";
146
+ queued: "queued";
147
147
  }>;
148
148
  policySnapshot: z.ZodNullable<z.ZodObject<{
149
149
  modelId: z.ZodString;
@@ -222,9 +222,9 @@ export declare const ModelStarterAttemptPageSchema: z.ZodObject<{
222
222
  failed: "failed";
223
223
  completed: "completed";
224
224
  cancelled: "cancelled";
225
- queued: "queued";
226
225
  running: "running";
227
226
  cancelling: "cancelling";
227
+ queued: "queued";
228
228
  }>;
229
229
  policySnapshot: z.ZodNullable<z.ZodObject<{
230
230
  modelId: z.ZodString;
@@ -300,9 +300,9 @@ export declare const ModelStarterAttemptResultSchema: z.ZodObject<{
300
300
  failed: "failed";
301
301
  completed: "completed";
302
302
  cancelled: "cancelled";
303
- queued: "queued";
304
303
  running: "running";
305
304
  cancelling: "cancelling";
305
+ queued: "queued";
306
306
  }>;
307
307
  policySnapshot: z.ZodNullable<z.ZodObject<{
308
308
  modelId: z.ZodString;
@@ -545,7 +545,7 @@ export declare class OpenPondModelStarterAttemptsClient {
545
545
  targetId: string | null;
546
546
  } | undefined;
547
547
  };
548
- status: "failed" | "completed" | "cancelled" | "queued" | "running" | "cancelling";
548
+ status: "failed" | "completed" | "cancelled" | "running" | "cancelling" | "queued";
549
549
  policySnapshot: {
550
550
  modelId: string;
551
551
  provider: string;
@@ -605,7 +605,7 @@ export declare class OpenPondModelStarterAttemptsClient {
605
605
  targetId: string | null;
606
606
  } | undefined;
607
607
  };
608
- status: "failed" | "completed" | "cancelled" | "queued" | "running" | "cancelling";
608
+ status: "failed" | "completed" | "cancelled" | "running" | "cancelling" | "queued";
609
609
  policySnapshot: {
610
610
  modelId: string;
611
611
  provider: string;
@@ -691,7 +691,7 @@ export declare class OpenPondModelStarterAttemptsClient {
691
691
  targetId: string | null;
692
692
  } | undefined;
693
693
  };
694
- status: "failed" | "completed" | "cancelled" | "queued" | "running" | "cancelling";
694
+ status: "failed" | "completed" | "cancelled" | "running" | "cancelling" | "queued";
695
695
  policySnapshot: {
696
696
  modelId: string;
697
697
  provider: string;
@@ -753,7 +753,7 @@ export declare class OpenPondModelStarterAttemptsClient {
753
753
  targetId: string | null;
754
754
  } | undefined;
755
755
  };
756
- status: "failed" | "completed" | "cancelled" | "queued" | "running" | "cancelling";
756
+ status: "failed" | "completed" | "cancelled" | "running" | "cancelling" | "queued";
757
757
  policySnapshot: {
758
758
  modelId: string;
759
759
  provider: string;
@@ -929,7 +929,7 @@ export declare class OpenPondModelStarterAttemptsClient {
929
929
  targetId: string | null;
930
930
  } | undefined;
931
931
  };
932
- status: "failed" | "completed" | "cancelled" | "queued" | "running" | "cancelling";
932
+ status: "failed" | "completed" | "cancelled" | "running" | "cancelling" | "queued";
933
933
  policySnapshot: {
934
934
  modelId: string;
935
935
  provider: string;
@@ -776,6 +776,7 @@ export declare class OpenPondModelStarterCatalogClient {
776
776
  visibility: "policy" | "verifier" | "host_private";
777
777
  }[];
778
778
  contentHash: string;
779
+ feedbackKey?: string | undefined;
779
780
  fixtureSetRef?: {
780
781
  id: string;
781
782
  path: string;
@@ -1 +1 @@
1
- {"version":3,"file":"model-starter-catalog.d.ts","sourceRoot":"","sources":["../../../../../src/model-starter-catalog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,8BAA8B,EAAE,MAAM,qBAAqB,CAAC;AAGrE,eAAO,MAAM,8BAA8B;;;kBAGhC,CAAC;AACZ,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAExC,CAAC;AACH,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAC;AACpF,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAG/B,CAAC;AACZ,eAAO,MAAM,8BAA8B;;;kBAAiG,CAAC;AAE7I,qBAAa,gCAAiC,SAAQ,KAAK;IAC7C,QAAQ,CAAC,MAAM,EAAE,MAAM;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM;gBAArC,MAAM,EAAE,MAAM,EAAW,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAC5E;AAED;+EAC+E;AAC/E,qBAAa,iCAAiC;;gBAEhC,OAAO,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAA;KAAE;IAOnG,IAAI,CAAC,KAAK,GAAE,CAAC,CAAC,KAAK,CAAC,OAAO,8BAA8B,CAAM,EAAE,OAAO,GAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IASvG,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,8BAA8B,CAAC,EAAE,OAAO,GAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiChH"}
1
+ {"version":3,"file":"model-starter-catalog.d.ts","sourceRoot":"","sources":["../../../../../src/model-starter-catalog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,8BAA8B,EAAE,MAAM,qBAAqB,CAAC;AAGrE,eAAO,MAAM,8BAA8B;;;kBAGhC,CAAC;AACZ,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAExC,CAAC;AACH,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAC;AACpF,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAG/B,CAAC;AACZ,eAAO,MAAM,8BAA8B;;;kBAAiG,CAAC;AAE7I,qBAAa,gCAAiC,SAAQ,KAAK;IAC7C,QAAQ,CAAC,MAAM,EAAE,MAAM;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM;gBAArC,MAAM,EAAE,MAAM,EAAW,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAC5E;AAED;+EAC+E;AAC/E,qBAAa,iCAAiC;;gBAEhC,OAAO,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAA;KAAE;IAOnG,IAAI,CAAC,KAAK,GAAE,CAAC,CAAC,KAAK,CAAC,OAAO,8BAA8B,CAAM,EAAE,OAAO,GAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IASvG,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,8BAA8B,CAAC,EAAE,OAAO,GAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiChH"}
@@ -708,6 +708,7 @@ export declare const ResolvedModelStarterSchema: z.ZodObject<{
708
708
  revision: z.ZodNumber;
709
709
  name: z.ZodString;
710
710
  description: z.ZodString;
711
+ feedbackKey: z.ZodOptional<z.ZodString>;
711
712
  implementation: z.ZodUnion<readonly [z.ZodObject<{
712
713
  kind: z.ZodEnum<{
713
714
  content: "content";
@@ -1724,6 +1725,7 @@ export declare function validateModelStarterCreation(value: unknown, packageValu
1724
1725
  visibility: "policy" | "verifier" | "host_private";
1725
1726
  }[];
1726
1727
  contentHash: string;
1728
+ feedbackKey?: string | undefined;
1727
1729
  fixtureSetRef?: {
1728
1730
  id: string;
1729
1731
  path: string;