openpond-sdk 0.12.10 → 0.12.12

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 (91) hide show
  1. package/LEARNING.md +11 -0
  2. package/README.md +2 -0
  3. package/dist/advanced-refiner-evaluations.js +8 -8
  4. package/dist/candidate-evaluations.js +7 -7
  5. package/dist/{chunk-QQ444G6A.js → chunk-2LVR24GU.js} +2 -2
  6. package/dist/{chunk-5QMREXMU.js → chunk-7BYLH47N.js} +3 -3
  7. package/dist/{chunk-RYDUAY52.js → chunk-C3TS766N.js} +21 -74
  8. package/dist/chunk-C3TS766N.js.map +1 -0
  9. package/dist/{chunk-HDKP6KE2.js → chunk-C4W2MEFP.js} +2 -2
  10. package/dist/{chunk-XJKGCU2K.js → chunk-CNREFTAV.js} +2 -2
  11. package/dist/{chunk-UAYXORU5.js → chunk-GHPCQXG5.js} +2 -2
  12. package/dist/{chunk-WOD72SFI.js → chunk-GJRXJL6G.js} +3 -3
  13. package/dist/{chunk-GRQWKATA.js → chunk-HAQPGTQ4.js} +2 -2
  14. package/dist/{chunk-7WKCQ4V5.js → chunk-IFBCLRBM.js} +2 -2
  15. package/dist/chunk-IZ26ZCGU.js +65 -0
  16. package/dist/chunk-IZ26ZCGU.js.map +1 -0
  17. package/dist/{chunk-ICFFZ4WC.js → chunk-JBYFD3QS.js} +3 -3
  18. package/dist/{chunk-4L556MYM.js → chunk-JDQVAG3R.js} +3 -3
  19. package/dist/{chunk-7FYPFHCQ.js → chunk-K54BDIKL.js} +3 -3
  20. package/dist/{chunk-ESW25WSD.js → chunk-KOJC3TH4.js} +6 -6
  21. package/dist/{chunk-GIEST52U.js → chunk-LHHHJIDR.js} +2 -2
  22. package/dist/{chunk-FC56EMHT.js → chunk-NKF5NIML.js} +6 -6
  23. package/dist/{chunk-LKKKTBLL.js → chunk-O3NOGKMT.js} +2 -2
  24. package/dist/{chunk-XNRM3QGR.js → chunk-ORYA2G7S.js} +3 -3
  25. package/dist/{chunk-PT72OARU.js → chunk-RIN6Z56W.js} +5 -5
  26. package/dist/{chunk-LT2YQCZI.js → chunk-RLW4Y5ZV.js} +2 -2
  27. package/dist/{chunk-PKW3II5M.js → chunk-TLSP5JKG.js} +2 -2
  28. package/dist/{chunk-BQ2C2Y54.js → chunk-UOV2LEXS.js} +4 -4
  29. package/dist/{chunk-ZZZU6XER.js → chunk-UWY5PUHR.js} +2 -2
  30. package/dist/{chunk-DMN6EF3R.js → chunk-XMVSQIK4.js} +2 -2
  31. package/dist/{chunk-WEL535AI.js → chunk-XRBM6PBD.js} +4 -4
  32. package/dist/{chunk-2DK7UBAG.js → chunk-YIGFQWZV.js} +3 -3
  33. package/dist/{chunk-IIQENUOK.js → chunk-ZYDDHHZZ.js} +3 -3
  34. package/dist/connected-evidence.js +14 -14
  35. package/dist/dataset-workspaces.js +14 -14
  36. package/dist/experiment-evaluation-schedules.js +18 -18
  37. package/dist/experiment-improvements.js +8 -8
  38. package/dist/experiments.js +17 -17
  39. package/dist/index.js +26 -25
  40. package/dist/index.js.map +1 -1
  41. package/dist/learning.js +9 -7
  42. package/dist/learning.js.map +1 -1
  43. package/dist/model-projects.js +4 -4
  44. package/dist/model-starter-attempts.js +3 -3
  45. package/dist/model-starter-catalog.js +10 -10
  46. package/dist/model-starters.js +10 -10
  47. package/dist/model-taskset-runs.js +4 -4
  48. package/dist/post-training.js +7 -7
  49. package/dist/taskset-drafts.js +13 -13
  50. package/dist/taskset-packages.js +15 -15
  51. package/dist/tool-learning-local-store.js +160 -7
  52. package/dist/tool-learning-local-store.js.map +1 -1
  53. package/dist/tool-learning.js +519 -0
  54. package/dist/tool-learning.js.map +1 -1
  55. package/dist/training-bundle.js +11 -11
  56. package/dist/training.js +8 -8
  57. package/dist/types/packages/sdk/src/tool-learning-client.d.ts +1236 -0
  58. package/dist/types/packages/sdk/src/tool-learning-client.d.ts.map +1 -0
  59. package/dist/types/packages/sdk/src/tool-learning-episodes.d.ts +58 -0
  60. package/dist/types/packages/sdk/src/tool-learning-episodes.d.ts.map +1 -0
  61. package/dist/types/packages/sdk/src/tool-learning-local-store.d.ts +70 -2
  62. package/dist/types/packages/sdk/src/tool-learning-local-store.d.ts.map +1 -1
  63. package/dist/types/packages/sdk/src/tool-learning.d.ts +2 -0
  64. package/dist/types/packages/sdk/src/tool-learning.d.ts.map +1 -1
  65. package/package.json +1 -1
  66. package/dist/chunk-RYDUAY52.js.map +0 -1
  67. /package/dist/{chunk-QQ444G6A.js.map → chunk-2LVR24GU.js.map} +0 -0
  68. /package/dist/{chunk-5QMREXMU.js.map → chunk-7BYLH47N.js.map} +0 -0
  69. /package/dist/{chunk-HDKP6KE2.js.map → chunk-C4W2MEFP.js.map} +0 -0
  70. /package/dist/{chunk-XJKGCU2K.js.map → chunk-CNREFTAV.js.map} +0 -0
  71. /package/dist/{chunk-UAYXORU5.js.map → chunk-GHPCQXG5.js.map} +0 -0
  72. /package/dist/{chunk-WOD72SFI.js.map → chunk-GJRXJL6G.js.map} +0 -0
  73. /package/dist/{chunk-GRQWKATA.js.map → chunk-HAQPGTQ4.js.map} +0 -0
  74. /package/dist/{chunk-7WKCQ4V5.js.map → chunk-IFBCLRBM.js.map} +0 -0
  75. /package/dist/{chunk-ICFFZ4WC.js.map → chunk-JBYFD3QS.js.map} +0 -0
  76. /package/dist/{chunk-4L556MYM.js.map → chunk-JDQVAG3R.js.map} +0 -0
  77. /package/dist/{chunk-7FYPFHCQ.js.map → chunk-K54BDIKL.js.map} +0 -0
  78. /package/dist/{chunk-ESW25WSD.js.map → chunk-KOJC3TH4.js.map} +0 -0
  79. /package/dist/{chunk-GIEST52U.js.map → chunk-LHHHJIDR.js.map} +0 -0
  80. /package/dist/{chunk-FC56EMHT.js.map → chunk-NKF5NIML.js.map} +0 -0
  81. /package/dist/{chunk-LKKKTBLL.js.map → chunk-O3NOGKMT.js.map} +0 -0
  82. /package/dist/{chunk-XNRM3QGR.js.map → chunk-ORYA2G7S.js.map} +0 -0
  83. /package/dist/{chunk-PT72OARU.js.map → chunk-RIN6Z56W.js.map} +0 -0
  84. /package/dist/{chunk-LT2YQCZI.js.map → chunk-RLW4Y5ZV.js.map} +0 -0
  85. /package/dist/{chunk-PKW3II5M.js.map → chunk-TLSP5JKG.js.map} +0 -0
  86. /package/dist/{chunk-BQ2C2Y54.js.map → chunk-UOV2LEXS.js.map} +0 -0
  87. /package/dist/{chunk-ZZZU6XER.js.map → chunk-UWY5PUHR.js.map} +0 -0
  88. /package/dist/{chunk-DMN6EF3R.js.map → chunk-XMVSQIK4.js.map} +0 -0
  89. /package/dist/{chunk-WEL535AI.js.map → chunk-XRBM6PBD.js.map} +0 -0
  90. /package/dist/{chunk-2DK7UBAG.js.map → chunk-YIGFQWZV.js.map} +0 -0
  91. /package/dist/{chunk-IIQENUOK.js.map → chunk-ZYDDHHZZ.js.map} +0 -0
package/dist/learning.js CHANGED
@@ -1,6 +1,13 @@
1
1
  import {
2
2
  LearningBatchPublicationResultSchema,
3
3
  LearningBatchPublicationSchema,
4
+ OpenPondLearningClient,
5
+ readBoundedLearningResponse
6
+ } from "./chunk-C3TS766N.js";
7
+ import {
8
+ OpenPondLearningError
9
+ } from "./chunk-U2KGUAIS.js";
10
+ import {
4
11
  LearningSourceConfigurationRequestSchema,
5
12
  LearningSourceConfigurationSchema,
6
13
  LearningSourceCredentialCreatedSchema,
@@ -8,14 +15,9 @@ import {
8
15
  LearningSourceCredentialRequestSchema,
9
16
  LearningSourceCredentialSchema,
10
17
  LearningSourceCredentialSecretSchema,
11
- OpenPondLearningClient,
12
18
  assertLearningCredentialExpiry,
13
- createSourceCredentialRequest,
14
- readBoundedLearningResponse
15
- } from "./chunk-RYDUAY52.js";
16
- import {
17
- OpenPondLearningError
18
- } from "./chunk-U2KGUAIS.js";
19
+ createSourceCredentialRequest
20
+ } from "./chunk-IZ26ZCGU.js";
19
21
  import {
20
22
  ModelInitialLearningSchema
21
23
  } from "./chunk-CL3IOOVL.js";
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/learning.ts","../src/model-learning-policy.ts","../src/grader-inspection.ts","../src/grader-feedback-key.ts","../src/learning-correction-metrics.ts"],"sourcesContent":["export * from \"@openpond/evals/learning\";\nexport * from \"@openpond/evals/rewards\";\nexport * from \"./learning-credentials.js\";\nexport * from \"./learning-client.js\";\nexport * from \"./model-learning-policy.js\";\n\nexport * from \"./grader-inspection.js\";\n\nexport * from \"./grader-feedback-key.js\";\nexport * from \"./learning-correction-metrics.js\";\n","import { LearningDomainError, LearningPolicyContentSchema, LearningSourceContentSchema, learningRef, sameLearningRef, sealLearningContent, type TaskDefinition, type LearningPolicy, type LearningRevisionRef } from \"@openpond/evals/learning\";\nimport { contentHash } from \"@openpond/harness\";\n\nimport type { HostedModelProjectSummary } from \"./model-projects.js\";\nimport { ModelInitialLearningSchema, type ModelInitialLearning } from \"./model-learning-intent.js\";\n\n/** Compile the simple creation choice into exact source and policy releases.\n * Hosts commit these with the new Model and its idempotency receipt. */\nexport function initialHostedModelLearning(input: { project: HostedModelProjectSummary; definition: TaskDefinition; learning: ModelInitialLearning }) {\n const learning = ModelInitialLearningSchema.parse(input.learning);\n const { project, definition } = input;\n if (!project.trainingSetup.rewardBindingRef || !sameLearningRef(definition.rewardBinding, project.trainingSetup.rewardBindingRef)) throw new LearningDomainError(\"learning_policy_binding_mismatch\", 422, \"The task format must use the Model's selected grader.\");\n const source = LearningSourceContentSchema.parse({ schemaVersion: \"openpond.learningSource.v1\", id: `model-source-${contentHash([project.portableProjectId, learningRef(definition)])}`,\n revision: 1, name: `${project.name} tasks`, kind: \"direct\", taskDefinition: learningRef(definition), enabled: true,\n allowedSplits: [\"train\", \"validation\", \"test\", \"frozen_eval\"], mapping: null, adapterVersion: null });\n const policy = createHostedLearningPolicyContent({ project, previous: null, policyId: `model-policy-${contentHash(project.portableProjectId)}`,\n applyModelConfiguration: true, sources: [learningRef(sealLearningContent(source))], taskDefinition: learningRef(definition),\n settings: { ...hostedLearningPolicyDefaults(project, null), enabled: true, scheduled: true,\n trigger: learning.mode === \"nightly\" ? { kind: \"nightly\", localTime: learning.localTime, timeZone: learning.timeZone } : { kind: \"approved_count\" },\n minimumApprovedExamples: learning.minimumTasks, maxBatchExamples: learning.minimumTasks,\n maxIterationSpendUsd: learning.maximumSpendUsd, maxDailySpendUsd: learning.maximumDailySpendUsd,\n cooldownSeconds: 0, maxBacklogExamples: Math.max(1_000, learning.minimumTasks * 10),\n } });\n return { source, policy };\n}\n\n/** Shared starting values for both Model clients. Existing policies retain\n * their exact limits; opening settings must never silently increase spending. */\nexport function hostedLearningPolicyDefaults(project: HostedModelProjectSummary, policy: LearningPolicy | null) {\n const maximumSpend = policy?.limits.maxIterationSpendUsd ?? project.trainingSetup.preferredMaximumSpendUsd ?? 1;\n return {\n enabled: policy?.enabled ?? false,\n scheduled: Boolean(policy && [\"schedule\", \"nightly\", \"approved_count\"].includes(policy.trigger.kind)),\n intervalSeconds: policy?.trigger.kind === \"schedule\" ? policy.trigger.intervalSeconds : 86_400,\n humanReviewRequired: policy?.admission.mode !== \"qualified_automatic\",\n minimumApprovedExamples: policy?.admission.minimumApprovedExamples ?? 10,\n maxBatchExamples: policy?.limits.maxBatchExamples ?? 10,\n maxIterationSpendUsd: maximumSpend,\n maxDailySpendUsd: policy?.limits.maxDailySpendUsd ?? maximumSpend,\n cooldownSeconds: policy?.limits.cooldownSeconds ?? 3_600,\n maxRetries: policy?.limits.maxRetries ?? 0,\n maxBacklogExamples: policy?.limits.maxBacklogExamples ?? 1_000,\n };\n}\n\nexport interface HostedLearningPolicySettings {\n enabled: boolean;\n scheduled: boolean;\n intervalSeconds: number;\n trigger?: Exclude<LearningPolicy[\"trigger\"], { kind: \"upstream_accepted\" }>;\n humanReviewRequired: boolean;\n minimumApprovedExamples: number;\n maxBatchExamples: number;\n maxIterationSpendUsd: number;\n maxDailySpendUsd: number;\n cooldownSeconds: number;\n maxRetries: number;\n maxBacklogExamples: number;\n}\n\n/** Compile reviewed settings without following mutable Model configuration\n * unless the caller explicitly chooses to apply it. Publication still owns\n * authorization, revision comparison and source/qualification validation. */\nexport function createHostedLearningPolicyContent(input: {\n project: HostedModelProjectSummary;\n previous: LearningPolicy | null;\n policyId: string;\n applyModelConfiguration: boolean;\n sources: LearningRevisionRef[];\n taskDefinition: LearningRevisionRef;\n settings: HostedLearningPolicySettings;\n}) {\n const { project, previous, settings } = input;\n if (previous && (previous.id !== input.policyId || previous.modelProjectId !== project.portableProjectId || previous.executionOwner !== \"hosted\")) {\n throw new LearningDomainError(\"learning_policy_model_mismatch\", 422, \"Learning settings must belong to this hosted Model.\");\n }\n const applyModel = input.applyModelConfiguration || !previous;\n const refs = applyModel ? hostedLearningPolicyReferences(project) : null;\n const method = applyModel ? project.trainingSetup.recipe?.method : previous?.training.method;\n const trigger = settings.trigger ?? (settings.scheduled ? { kind: \"schedule\" as const, intervalSeconds: settings.intervalSeconds } : { kind: \"manual\" as const });\n if (settings.enabled && method !== \"grpo\") {\n throw new LearningDomainError(\"learning_training_method_unsupported\", 422, \"Hosted continual learning currently supports GRPO.\");\n }\n return LearningPolicyContentSchema.parse({\n schemaVersion: \"openpond.learningPolicy.v1\", id: input.policyId, revision: (previous?.revision ?? 0) + 1,\n modelProjectId: project.portableProjectId, executionOwner: \"hosted\", enabled: settings.enabled,\n sources: input.sources, taskDefinition: input.taskDefinition,\n rewardBinding: applyModel ? project.trainingSetup.rewardBindingRef : previous?.rewardBinding,\n admission: { mode: settings.humanReviewRequired ? \"human\" : \"qualified_automatic\",\n qualification: settings.humanReviewRequired ? null : previous?.admission.qualification ?? null,\n minimumApprovedExamples: settings.minimumApprovedExamples },\n trigger,\n trainingParent: refs?.trainingParent ?? previous?.trainingParent,\n teacher: previous?.teacher ?? null,\n training: { method, recipe: refs?.recipe ?? previous?.training.recipe,\n retentionEvaluation: refs?.retentionEvaluation ?? previous?.training.retentionEvaluation,\n replayBatches: previous?.training.replayBatches ?? [] },\n limits: { maxIterationSpendUsd: settings.maxIterationSpendUsd, maxDailySpendUsd: settings.maxDailySpendUsd,\n cooldownSeconds: settings.cooldownSeconds, maxRetries: settings.maxRetries,\n maxBatchExamples: settings.maxBatchExamples, maxBacklogExamples: settings.maxBacklogExamples },\n automation: { collect: false, train: trigger.kind !== \"manual\", accept: false, serve: false },\n acceptance: previous?.acceptance ?? { minimumScore: 0, maximumRetentionRegression: 0, requireImprovement: true, rollbackVersion: null },\n });\n}\n\n/** Bind a reviewed hosted Model configuration before asynchronous preparation.\n * Keep the established recipe identity: its id binds the whole Model revision,\n * including Harness and retention selections, while its hash binds the recipe.\n * Callers must obtain the summary from the authenticated Model API. */\nexport function hostedLearningPolicyReferences(project: HostedModelProjectSummary) {\n const setup = project.trainingSetup;\n const base = setup.baseModel ?? project.defaultBaseModel;\n if (!setup.recipe || !base || !setup.evaluationTasksetRef) {\n throw new LearningDomainError(\"learning_model_configuration_incomplete\", 422,\n \"Select a training recipe, starting model and retained evaluation before enabling hosted learning.\");\n }\n return {\n recipe: { id: `model-recipe-${project.etag}`, contentHash: contentHash(setup.recipe) },\n trainingParent: { id: base.modelId, contentHash: contentHash(base) },\n retentionEvaluation: { id: setup.evaluationTasksetRef.id, contentHash: setup.evaluationTasksetRef.contentHash },\n };\n}\n","import { z } from \"zod\";\nimport { RewardReleaseSchema } from \"@openpond/evals/rewards\";\nconst Id = z.string().trim().min(1).max(240);\nexport const GraderCatalogQuerySchema = z.object({ projectId: Id.optional(), search: z.string().max(300).optional(), kind: z.string().max(100).optional(), sort: z.enum([\"name\", \"type\", \"version\", \"projects\", \"datasets\", \"runs\"]).optional(), direction: z.enum([\"asc\", \"desc\"]).optional(), after: z.string().max(3000).optional(), limit: z.number().int().min(1).max(100).default(30) }).strict();\nexport const GraderCatalogPageSchema = z.object({ teamId: Id, items: z.array(z.object({ reward: RewardReleaseSchema, projects: z.number().int().nonnegative(), datasets: z.number().int().nonnegative(), runs: z.number().int().nonnegative() }).strict()).max(100), nextCursor: z.string().nullable() }).strict();\nexport const GraderVersionsPageSchema = z.object({ teamId: Id, id: Id, items: z.array(RewardReleaseSchema).max(100), nextRevision: z.number().int().positive().nullable() }).strict();\nexport const GraderUsageQuerySchema = z.object({ section: z.enum([\"projects\", \"datasets\", \"runs\"]), after: Id.optional(), limit: z.number().int().min(1).max(100).default(25) }).strict();\nexport const GraderUsagePageSchema = z.object({ teamId: Id, id: Id, section: GraderUsageQuerySchema.shape.section, items: z.array(z.union([\n z.object({ id: Id, name: z.string(), graderRevisions: z.array(z.number().int().positive()), archived: z.boolean() }).strict(),\n z.object({ id: Id, name: z.string(), revision: z.number().int().positive(), graderRevisions: z.array(z.number().int().positive()) }).strict(),\n z.object({ id: Id, name: z.string(), status: z.string() }).strict(),\n])).max(100), nextCursor: Id.nullable() }).strict();\nexport class OpenPondGraderInspectionClient {\n private readonly baseUrl: string;\n constructor(private readonly options: { baseUrl: string; apiKey: string; teamId: string; fetch?: typeof fetch }) {\n const url = new URL(options.baseUrl);\n if (![\"http:\", \"https:\"].includes(url.protocol) || url.username || url.password || url.search || url.hash || !options.apiKey.trim() || !options.teamId.trim()) throw new Error(\"A clean API origin and workspace credentials are required.\");\n this.baseUrl = url.toString().replace(/\\/+$/, \"\");\n }\n async catalog(value: z.input<typeof GraderCatalogQuerySchema> = {}, signal?: AbortSignal) {\n const query = GraderCatalogQuerySchema.parse(value);\n const page = GraderCatalogPageSchema.parse(await this.read(\"\", query, signal));\n if (page.teamId !== this.options.teamId || page.items.length > query.limit || new Set(page.items.map(item => item.reward.id)).size !== page.items.length) throw new Error(\"Grader catalog differs from its requested workspace or bounds.\");\n return page;\n }\n async versions(id: string, query: { beforeRevision?: number; limit?: number } = {}, signal?: AbortSignal) {\n const options = z.object({ beforeRevision: z.number().int().positive().optional(), limit: z.number().int().min(1).max(100).default(25) }).strict().parse(query);\n const page = GraderVersionsPageSchema.parse(await this.read(`/${encodeURIComponent(Id.parse(id))}/versions`, options, signal));\n if (page.teamId !== this.options.teamId || page.id !== id || page.items.length > options.limit || page.items.some((item, index) => item.id !== id || options.beforeRevision && item.revision >= options.beforeRevision || index > 0 && item.revision >= page.items[index - 1]!.revision)) throw new Error(\"Grader versions differ from their requested identity or revision order.\");\n return page;\n }\n async usage(id: string, value: z.input<typeof GraderUsageQuerySchema>, signal?: AbortSignal) {\n const query = GraderUsageQuerySchema.parse(value);\n const page = GraderUsagePageSchema.parse(await this.read(`/${encodeURIComponent(Id.parse(id))}/usage`, query, signal));\n if (page.teamId !== this.options.teamId || page.id !== id || page.section !== query.section || page.items.length > query.limit) throw new Error(\"Grader usage differs from its requested workspace, identity or bounds.\");\n return page;\n }\n private async read(path: string, query: Record<string, unknown>, signal?: AbortSignal) {\n const params = new URLSearchParams(Object.entries(query).filter(([, value]) => value !== undefined).map(([key, value]) => [key, String(value)]));\n const response = await (this.options.fetch ?? fetch)(`${this.baseUrl}/v1/learning/read/graders${path}?${params}`, { signal, redirect: \"error\", headers: { Authorization: `Bearer ${this.options.apiKey}`, \"X-OpenPond-Team-Id\": this.options.teamId, Accept: \"application/json\" } });\n const value: unknown = await response.json();\n if (!response.ok) throw new Error(z.object({ error: z.string() }).parse(value).error);\n return value;\n }\n}\n","import { contentHash } from \"@openpond/harness\";\n\n/** Draft presentation default. Published keys must retain their released value. */\nexport function graderFeedbackKeyFromName(name: string, rewardId: string): string {\n const slug = name.normalize(\"NFKD\").toLowerCase().replace(/[^a-z0-9]+/g, \"_\").replace(/^_+|_+$/g, \"\");\n const prefix = /^[a-z]/.test(slug) ? slug : `grader_${slug}`;\n return `${(prefix || \"grader\").slice(0, 55).replace(/_+$/g, \"\")}_${contentHash(rewardId).slice(0, 24)}`;\n}\n","import { z } from \"zod\";\nimport { CorrectionVerificationPlanContentSchema, CorrectionVerificationPlanSchema, CorrectionOpportunitySchema, CorrectionMetricSummarySchema, CorrectionMetricObservationSchema, assertLearningRequestJson } from \"@openpond/evals/learning\";\nimport { OpenPondLearningError, readBoundedLearningResponse, type LearningRequestOptions } from \"./learning-client.js\";\nexport { CorrectionVerificationPlanSchema, CorrectionMetricSummarySchema, CorrectionMetricObservationSchema } from \"@openpond/evals/learning\";\nexport type { CorrectionVerificationPlan, CorrectionMetricSummary, CorrectionMetricObservation } from \"@openpond/evals/learning\";\nconst id = z.string().trim().min(1).max(500);\nconst ref = z.object({ id, contentHash: z.string().regex(/^[a-f0-9]{64}$/) }).strict();\nexport const CorrectionMetricsReadSchema = z.object({ teamId: id, modelId: id, runId: id.optional(), from: z.string().datetime().optional(), to: z.string().datetime().optional() }).strict();\nexport const CorrectionMetricsCommandSchema = z.discriminatedUnion(\"action\", [\n z.object({ action: z.literal(\"declare_verification\"), teamId: id, operationId: id,\n plan: z.object({\n modelId: CorrectionVerificationPlanContentSchema.shape.modelId,\n classification: CorrectionVerificationPlanContentSchema.shape.classification,\n feedback: CorrectionVerificationPlanContentSchema.shape.feedback,\n evidence: CorrectionVerificationPlanContentSchema.shape.evidence,\n trainingJobId: CorrectionVerificationPlanContentSchema.shape.trainingJobId,\n checkpoint: CorrectionVerificationPlanContentSchema.shape.checkpoint,\n artifact: CorrectionVerificationPlanContentSchema.shape.artifact,\n taskset: CorrectionVerificationPlanContentSchema.shape.taskset,\n checks: CorrectionVerificationPlanContentSchema.shape.checks,\n baselineOperationId: CorrectionVerificationPlanContentSchema.shape.baselineOperationId,\n candidateOperationId: CorrectionVerificationPlanContentSchema.shape.candidateOperationId,\n criterion: CorrectionVerificationPlanContentSchema.shape.criterion,\n }).strict() }).strict(),\n z.object({ action: z.literal(\"link_live_opportunity\"), teamId: id, operationId: id, correction: ref, inferenceRequestId: id,\n grade: z.object({ id, revision: z.number().int().positive() }).strict(), checkIds: z.array(id).min(1).max(1000) }).strict(),\n]);\nexport const CorrectionMetricsDetailSchema = z.object({ summary: CorrectionMetricSummarySchema.nullable(), observations: z.array(CorrectionMetricObservationSchema).max(1000) }).strict();\nexport type CorrectionMetricsRead = z.infer<typeof CorrectionMetricsReadSchema>;\nexport type CorrectionMetricsCommand = z.infer<typeof CorrectionMetricsCommandSchema>;\nexport class OpenPondCorrectionMetricsClient {\n private readonly options: { baseUrl: string; apiKey: string; fetch?: typeof globalThis.fetch };\n constructor(options: { baseUrl: string; apiKey: string; fetch?: typeof globalThis.fetch }) {\n if (!options.apiKey.trim()) throw new Error(\"Learning API key is required.\");\n const url = new URL(options.baseUrl);\n if (![\"http:\", \"https:\"].includes(url.protocol) || url.username || url.password || url.search || url.hash)\n throw new Error(\"Learning base URL must be an HTTP(S) endpoint without credentials, query, or fragment.\");\n this.options = { ...options, baseUrl: url.toString().replace(/\\/+$/, \"\") };\n }\n private async request(path: string, teamId: string, init: RequestInit) {\n const response = await (this.options.fetch ?? globalThis.fetch)(`${this.options.baseUrl}${path}`, {\n ...init, redirect: \"error\", headers: { Authorization: `Bearer ${this.options.apiKey}`, \"Content-Type\": \"application/json\", Accept: \"application/json\", \"X-OpenPond-Team-Id\": teamId },\n });\n let payload: unknown;\n try { payload = await readBoundedLearningResponse(response); }\n catch (error) {\n if (error instanceof OpenPondLearningError) throw error;\n throw new OpenPondLearningError(response.ok ? 502 : response.status, \"invalid_response\", \"Correction metrics returned an invalid response.\", null);\n }\n if (!response.ok) {\n const error = z.object({ code: z.string().optional(), error: z.string().optional() }).passthrough().safeParse(payload);\n throw new OpenPondLearningError(response.status, error.success ? error.data.code ?? \"correction_request_failed\" : \"correction_request_failed\",\n error.success ? error.data.error ?? `Correction metrics request failed (${response.status}).` : `Correction metrics request failed (${response.status}).`, payload);\n }\n return payload;\n }\n async read(input: CorrectionMetricsRead, options: LearningRequestOptions = {}) {\n const query = CorrectionMetricsReadSchema.parse(input);\n const result = CorrectionMetricsDetailSchema.parse(await this.request(`/v1/learning/corrections?query=${encodeURIComponent(JSON.stringify(query))}`, query.teamId, { method: \"GET\", signal: options.signal }));\n if (result.summary && (result.summary.scope.teamId !== query.teamId || result.summary.scope.modelId !== query.modelId || query.runId && result.summary.scope.runId !== query.runId)\n || result.observations.some(observation => observation.modelId !== query.modelId || query.runId && observation.trainingJobId !== query.runId))\n throw new OpenPondLearningError(502, \"correction_scope_mismatch\", \"Correction metrics did not match the requested workspace, Model or run.\", null);\n return result;\n }\n async command(input: CorrectionMetricsCommand, options: LearningRequestOptions = {}) {\n const command = CorrectionMetricsCommandSchema.parse(input);\n assertLearningRequestJson(command);\n const payload = await this.request(\"/v1/learning/corrections\", command.teamId, { method: \"POST\", body: JSON.stringify(command), signal: options.signal });\n if (command.action === \"declare_verification\") {\n const result = CorrectionVerificationPlanSchema.parse(payload);\n if (result.teamId !== command.teamId || result.modelId !== command.plan.modelId || result.trainingJobId !== command.plan.trainingJobId)\n throw new OpenPondLearningError(502, \"correction_scope_mismatch\", \"Correction declaration did not match the requested workspace, Model or run.\", null);\n return result;\n }\n const result = CorrectionOpportunitySchema.parse(payload);\n if (result.correction.id !== command.correction.id || result.correction.contentHash !== command.correction.contentHash || result.attempt.id !== command.inferenceRequestId)\n throw new OpenPondLearningError(502, \"correction_scope_mismatch\", \"Correction opportunity did not match the declared correction and serving request.\", null);\n return result;\n }\n}\n"],"mappings":"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","names":["id","value","z","CorrectionVerificationPlanSchema","CorrectionMetricSummarySchema","CorrectionMetricObservationSchema","z","result"]}
1
+ {"version":3,"sources":["../src/learning.ts","../src/model-learning-policy.ts","../src/grader-inspection.ts","../src/grader-feedback-key.ts","../src/learning-correction-metrics.ts"],"sourcesContent":["export * from \"@openpond/evals/learning\";\nexport * from \"@openpond/evals/rewards\";\nexport * from \"./learning-credentials.js\";\nexport * from \"./learning-client.js\";\nexport * from \"./model-learning-policy.js\";\n\nexport * from \"./grader-inspection.js\";\n\nexport * from \"./grader-feedback-key.js\";\nexport * from \"./learning-correction-metrics.js\";\n","import { LearningDomainError, LearningPolicyContentSchema, LearningSourceContentSchema, learningRef, sameLearningRef, sealLearningContent, type TaskDefinition, type LearningPolicy, type LearningRevisionRef } from \"@openpond/evals/learning\";\nimport { contentHash } from \"@openpond/harness\";\n\nimport type { HostedModelProjectSummary } from \"./model-projects.js\";\nimport { ModelInitialLearningSchema, type ModelInitialLearning } from \"./model-learning-intent.js\";\n\n/** Compile the simple creation choice into exact source and policy releases.\n * Hosts commit these with the new Model and its idempotency receipt. */\nexport function initialHostedModelLearning(input: { project: HostedModelProjectSummary; definition: TaskDefinition; learning: ModelInitialLearning }) {\n const learning = ModelInitialLearningSchema.parse(input.learning);\n const { project, definition } = input;\n if (!project.trainingSetup.rewardBindingRef || !sameLearningRef(definition.rewardBinding, project.trainingSetup.rewardBindingRef)) throw new LearningDomainError(\"learning_policy_binding_mismatch\", 422, \"The task format must use the Model's selected grader.\");\n const source = LearningSourceContentSchema.parse({ schemaVersion: \"openpond.learningSource.v1\", id: `model-source-${contentHash([project.portableProjectId, learningRef(definition)])}`,\n revision: 1, name: `${project.name} tasks`, kind: \"direct\", taskDefinition: learningRef(definition), enabled: true,\n allowedSplits: [\"train\", \"validation\", \"test\", \"frozen_eval\"], mapping: null, adapterVersion: null });\n const policy = createHostedLearningPolicyContent({ project, previous: null, policyId: `model-policy-${contentHash(project.portableProjectId)}`,\n applyModelConfiguration: true, sources: [learningRef(sealLearningContent(source))], taskDefinition: learningRef(definition),\n settings: { ...hostedLearningPolicyDefaults(project, null), enabled: true, scheduled: true,\n trigger: learning.mode === \"nightly\" ? { kind: \"nightly\", localTime: learning.localTime, timeZone: learning.timeZone } : { kind: \"approved_count\" },\n minimumApprovedExamples: learning.minimumTasks, maxBatchExamples: learning.minimumTasks,\n maxIterationSpendUsd: learning.maximumSpendUsd, maxDailySpendUsd: learning.maximumDailySpendUsd,\n cooldownSeconds: 0, maxBacklogExamples: Math.max(1_000, learning.minimumTasks * 10),\n } });\n return { source, policy };\n}\n\n/** Shared starting values for both Model clients. Existing policies retain\n * their exact limits; opening settings must never silently increase spending. */\nexport function hostedLearningPolicyDefaults(project: HostedModelProjectSummary, policy: LearningPolicy | null) {\n const maximumSpend = policy?.limits.maxIterationSpendUsd ?? project.trainingSetup.preferredMaximumSpendUsd ?? 1;\n return {\n enabled: policy?.enabled ?? false,\n scheduled: Boolean(policy && [\"schedule\", \"nightly\", \"approved_count\"].includes(policy.trigger.kind)),\n intervalSeconds: policy?.trigger.kind === \"schedule\" ? policy.trigger.intervalSeconds : 86_400,\n humanReviewRequired: policy?.admission.mode !== \"qualified_automatic\",\n minimumApprovedExamples: policy?.admission.minimumApprovedExamples ?? 10,\n maxBatchExamples: policy?.limits.maxBatchExamples ?? 10,\n maxIterationSpendUsd: maximumSpend,\n maxDailySpendUsd: policy?.limits.maxDailySpendUsd ?? maximumSpend,\n cooldownSeconds: policy?.limits.cooldownSeconds ?? 3_600,\n maxRetries: policy?.limits.maxRetries ?? 0,\n maxBacklogExamples: policy?.limits.maxBacklogExamples ?? 1_000,\n };\n}\n\nexport interface HostedLearningPolicySettings {\n enabled: boolean;\n scheduled: boolean;\n intervalSeconds: number;\n trigger?: Exclude<LearningPolicy[\"trigger\"], { kind: \"upstream_accepted\" }>;\n humanReviewRequired: boolean;\n minimumApprovedExamples: number;\n maxBatchExamples: number;\n maxIterationSpendUsd: number;\n maxDailySpendUsd: number;\n cooldownSeconds: number;\n maxRetries: number;\n maxBacklogExamples: number;\n}\n\n/** Compile reviewed settings without following mutable Model configuration\n * unless the caller explicitly chooses to apply it. Publication still owns\n * authorization, revision comparison and source/qualification validation. */\nexport function createHostedLearningPolicyContent(input: {\n project: HostedModelProjectSummary;\n previous: LearningPolicy | null;\n policyId: string;\n applyModelConfiguration: boolean;\n sources: LearningRevisionRef[];\n taskDefinition: LearningRevisionRef;\n settings: HostedLearningPolicySettings;\n}) {\n const { project, previous, settings } = input;\n if (previous && (previous.id !== input.policyId || previous.modelProjectId !== project.portableProjectId || previous.executionOwner !== \"hosted\")) {\n throw new LearningDomainError(\"learning_policy_model_mismatch\", 422, \"Learning settings must belong to this hosted Model.\");\n }\n const applyModel = input.applyModelConfiguration || !previous;\n const refs = applyModel ? hostedLearningPolicyReferences(project) : null;\n const method = applyModel ? project.trainingSetup.recipe?.method : previous?.training.method;\n const trigger = settings.trigger ?? (settings.scheduled ? { kind: \"schedule\" as const, intervalSeconds: settings.intervalSeconds } : { kind: \"manual\" as const });\n if (settings.enabled && method !== \"grpo\") {\n throw new LearningDomainError(\"learning_training_method_unsupported\", 422, \"Hosted continual learning currently supports GRPO.\");\n }\n return LearningPolicyContentSchema.parse({\n schemaVersion: \"openpond.learningPolicy.v1\", id: input.policyId, revision: (previous?.revision ?? 0) + 1,\n modelProjectId: project.portableProjectId, executionOwner: \"hosted\", enabled: settings.enabled,\n sources: input.sources, taskDefinition: input.taskDefinition,\n rewardBinding: applyModel ? project.trainingSetup.rewardBindingRef : previous?.rewardBinding,\n admission: { mode: settings.humanReviewRequired ? \"human\" : \"qualified_automatic\",\n qualification: settings.humanReviewRequired ? null : previous?.admission.qualification ?? null,\n minimumApprovedExamples: settings.minimumApprovedExamples },\n trigger,\n trainingParent: refs?.trainingParent ?? previous?.trainingParent,\n teacher: previous?.teacher ?? null,\n training: { method, recipe: refs?.recipe ?? previous?.training.recipe,\n retentionEvaluation: refs?.retentionEvaluation ?? previous?.training.retentionEvaluation,\n replayBatches: previous?.training.replayBatches ?? [] },\n limits: { maxIterationSpendUsd: settings.maxIterationSpendUsd, maxDailySpendUsd: settings.maxDailySpendUsd,\n cooldownSeconds: settings.cooldownSeconds, maxRetries: settings.maxRetries,\n maxBatchExamples: settings.maxBatchExamples, maxBacklogExamples: settings.maxBacklogExamples },\n automation: { collect: false, train: trigger.kind !== \"manual\", accept: false, serve: false },\n acceptance: previous?.acceptance ?? { minimumScore: 0, maximumRetentionRegression: 0, requireImprovement: true, rollbackVersion: null },\n });\n}\n\n/** Bind a reviewed hosted Model configuration before asynchronous preparation.\n * Keep the established recipe identity: its id binds the whole Model revision,\n * including Harness and retention selections, while its hash binds the recipe.\n * Callers must obtain the summary from the authenticated Model API. */\nexport function hostedLearningPolicyReferences(project: HostedModelProjectSummary) {\n const setup = project.trainingSetup;\n const base = setup.baseModel ?? project.defaultBaseModel;\n if (!setup.recipe || !base || !setup.evaluationTasksetRef) {\n throw new LearningDomainError(\"learning_model_configuration_incomplete\", 422,\n \"Select a training recipe, starting model and retained evaluation before enabling hosted learning.\");\n }\n return {\n recipe: { id: `model-recipe-${project.etag}`, contentHash: contentHash(setup.recipe) },\n trainingParent: { id: base.modelId, contentHash: contentHash(base) },\n retentionEvaluation: { id: setup.evaluationTasksetRef.id, contentHash: setup.evaluationTasksetRef.contentHash },\n };\n}\n","import { z } from \"zod\";\nimport { RewardReleaseSchema } from \"@openpond/evals/rewards\";\nconst Id = z.string().trim().min(1).max(240);\nexport const GraderCatalogQuerySchema = z.object({ projectId: Id.optional(), search: z.string().max(300).optional(), kind: z.string().max(100).optional(), sort: z.enum([\"name\", \"type\", \"version\", \"projects\", \"datasets\", \"runs\"]).optional(), direction: z.enum([\"asc\", \"desc\"]).optional(), after: z.string().max(3000).optional(), limit: z.number().int().min(1).max(100).default(30) }).strict();\nexport const GraderCatalogPageSchema = z.object({ teamId: Id, items: z.array(z.object({ reward: RewardReleaseSchema, projects: z.number().int().nonnegative(), datasets: z.number().int().nonnegative(), runs: z.number().int().nonnegative() }).strict()).max(100), nextCursor: z.string().nullable() }).strict();\nexport const GraderVersionsPageSchema = z.object({ teamId: Id, id: Id, items: z.array(RewardReleaseSchema).max(100), nextRevision: z.number().int().positive().nullable() }).strict();\nexport const GraderUsageQuerySchema = z.object({ section: z.enum([\"projects\", \"datasets\", \"runs\"]), after: Id.optional(), limit: z.number().int().min(1).max(100).default(25) }).strict();\nexport const GraderUsagePageSchema = z.object({ teamId: Id, id: Id, section: GraderUsageQuerySchema.shape.section, items: z.array(z.union([\n z.object({ id: Id, name: z.string(), graderRevisions: z.array(z.number().int().positive()), archived: z.boolean() }).strict(),\n z.object({ id: Id, name: z.string(), revision: z.number().int().positive(), graderRevisions: z.array(z.number().int().positive()) }).strict(),\n z.object({ id: Id, name: z.string(), status: z.string() }).strict(),\n])).max(100), nextCursor: Id.nullable() }).strict();\nexport class OpenPondGraderInspectionClient {\n private readonly baseUrl: string;\n constructor(private readonly options: { baseUrl: string; apiKey: string; teamId: string; fetch?: typeof fetch }) {\n const url = new URL(options.baseUrl);\n if (![\"http:\", \"https:\"].includes(url.protocol) || url.username || url.password || url.search || url.hash || !options.apiKey.trim() || !options.teamId.trim()) throw new Error(\"A clean API origin and workspace credentials are required.\");\n this.baseUrl = url.toString().replace(/\\/+$/, \"\");\n }\n async catalog(value: z.input<typeof GraderCatalogQuerySchema> = {}, signal?: AbortSignal) {\n const query = GraderCatalogQuerySchema.parse(value);\n const page = GraderCatalogPageSchema.parse(await this.read(\"\", query, signal));\n if (page.teamId !== this.options.teamId || page.items.length > query.limit || new Set(page.items.map(item => item.reward.id)).size !== page.items.length) throw new Error(\"Grader catalog differs from its requested workspace or bounds.\");\n return page;\n }\n async versions(id: string, query: { beforeRevision?: number; limit?: number } = {}, signal?: AbortSignal) {\n const options = z.object({ beforeRevision: z.number().int().positive().optional(), limit: z.number().int().min(1).max(100).default(25) }).strict().parse(query);\n const page = GraderVersionsPageSchema.parse(await this.read(`/${encodeURIComponent(Id.parse(id))}/versions`, options, signal));\n if (page.teamId !== this.options.teamId || page.id !== id || page.items.length > options.limit || page.items.some((item, index) => item.id !== id || options.beforeRevision && item.revision >= options.beforeRevision || index > 0 && item.revision >= page.items[index - 1]!.revision)) throw new Error(\"Grader versions differ from their requested identity or revision order.\");\n return page;\n }\n async usage(id: string, value: z.input<typeof GraderUsageQuerySchema>, signal?: AbortSignal) {\n const query = GraderUsageQuerySchema.parse(value);\n const page = GraderUsagePageSchema.parse(await this.read(`/${encodeURIComponent(Id.parse(id))}/usage`, query, signal));\n if (page.teamId !== this.options.teamId || page.id !== id || page.section !== query.section || page.items.length > query.limit) throw new Error(\"Grader usage differs from its requested workspace, identity or bounds.\");\n return page;\n }\n private async read(path: string, query: Record<string, unknown>, signal?: AbortSignal) {\n const params = new URLSearchParams(Object.entries(query).filter(([, value]) => value !== undefined).map(([key, value]) => [key, String(value)]));\n const response = await (this.options.fetch ?? fetch)(`${this.baseUrl}/v1/learning/read/graders${path}?${params}`, { signal, redirect: \"error\", headers: { Authorization: `Bearer ${this.options.apiKey}`, \"X-OpenPond-Team-Id\": this.options.teamId, Accept: \"application/json\" } });\n const value: unknown = await response.json();\n if (!response.ok) throw new Error(z.object({ error: z.string() }).parse(value).error);\n return value;\n }\n}\n","import { contentHash } from \"@openpond/harness\";\n\n/** Draft presentation default. Published keys must retain their released value. */\nexport function graderFeedbackKeyFromName(name: string, rewardId: string): string {\n const slug = name.normalize(\"NFKD\").toLowerCase().replace(/[^a-z0-9]+/g, \"_\").replace(/^_+|_+$/g, \"\");\n const prefix = /^[a-z]/.test(slug) ? slug : `grader_${slug}`;\n return `${(prefix || \"grader\").slice(0, 55).replace(/_+$/g, \"\")}_${contentHash(rewardId).slice(0, 24)}`;\n}\n","import { z } from \"zod\";\nimport { CorrectionVerificationPlanContentSchema, CorrectionVerificationPlanSchema, CorrectionOpportunitySchema, CorrectionMetricSummarySchema, CorrectionMetricObservationSchema, assertLearningRequestJson } from \"@openpond/evals/learning\";\nimport { OpenPondLearningError, readBoundedLearningResponse, type LearningRequestOptions } from \"./learning-client.js\";\nexport { CorrectionVerificationPlanSchema, CorrectionMetricSummarySchema, CorrectionMetricObservationSchema } from \"@openpond/evals/learning\";\nexport type { CorrectionVerificationPlan, CorrectionMetricSummary, CorrectionMetricObservation } from \"@openpond/evals/learning\";\nconst id = z.string().trim().min(1).max(500);\nconst ref = z.object({ id, contentHash: z.string().regex(/^[a-f0-9]{64}$/) }).strict();\nexport const CorrectionMetricsReadSchema = z.object({ teamId: id, modelId: id, runId: id.optional(), from: z.string().datetime().optional(), to: z.string().datetime().optional() }).strict();\nexport const CorrectionMetricsCommandSchema = z.discriminatedUnion(\"action\", [\n z.object({ action: z.literal(\"declare_verification\"), teamId: id, operationId: id,\n plan: z.object({\n modelId: CorrectionVerificationPlanContentSchema.shape.modelId,\n classification: CorrectionVerificationPlanContentSchema.shape.classification,\n feedback: CorrectionVerificationPlanContentSchema.shape.feedback,\n evidence: CorrectionVerificationPlanContentSchema.shape.evidence,\n trainingJobId: CorrectionVerificationPlanContentSchema.shape.trainingJobId,\n checkpoint: CorrectionVerificationPlanContentSchema.shape.checkpoint,\n artifact: CorrectionVerificationPlanContentSchema.shape.artifact,\n taskset: CorrectionVerificationPlanContentSchema.shape.taskset,\n checks: CorrectionVerificationPlanContentSchema.shape.checks,\n baselineOperationId: CorrectionVerificationPlanContentSchema.shape.baselineOperationId,\n candidateOperationId: CorrectionVerificationPlanContentSchema.shape.candidateOperationId,\n criterion: CorrectionVerificationPlanContentSchema.shape.criterion,\n }).strict() }).strict(),\n z.object({ action: z.literal(\"link_live_opportunity\"), teamId: id, operationId: id, correction: ref, inferenceRequestId: id,\n grade: z.object({ id, revision: z.number().int().positive() }).strict(), checkIds: z.array(id).min(1).max(1000) }).strict(),\n]);\nexport const CorrectionMetricsDetailSchema = z.object({ summary: CorrectionMetricSummarySchema.nullable(), observations: z.array(CorrectionMetricObservationSchema).max(1000) }).strict();\nexport type CorrectionMetricsRead = z.infer<typeof CorrectionMetricsReadSchema>;\nexport type CorrectionMetricsCommand = z.infer<typeof CorrectionMetricsCommandSchema>;\nexport class OpenPondCorrectionMetricsClient {\n private readonly options: { baseUrl: string; apiKey: string; fetch?: typeof globalThis.fetch };\n constructor(options: { baseUrl: string; apiKey: string; fetch?: typeof globalThis.fetch }) {\n if (!options.apiKey.trim()) throw new Error(\"Learning API key is required.\");\n const url = new URL(options.baseUrl);\n if (![\"http:\", \"https:\"].includes(url.protocol) || url.username || url.password || url.search || url.hash)\n throw new Error(\"Learning base URL must be an HTTP(S) endpoint without credentials, query, or fragment.\");\n this.options = { ...options, baseUrl: url.toString().replace(/\\/+$/, \"\") };\n }\n private async request(path: string, teamId: string, init: RequestInit) {\n const response = await (this.options.fetch ?? globalThis.fetch)(`${this.options.baseUrl}${path}`, {\n ...init, redirect: \"error\", headers: { Authorization: `Bearer ${this.options.apiKey}`, \"Content-Type\": \"application/json\", Accept: \"application/json\", \"X-OpenPond-Team-Id\": teamId },\n });\n let payload: unknown;\n try { payload = await readBoundedLearningResponse(response); }\n catch (error) {\n if (error instanceof OpenPondLearningError) throw error;\n throw new OpenPondLearningError(response.ok ? 502 : response.status, \"invalid_response\", \"Correction metrics returned an invalid response.\", null);\n }\n if (!response.ok) {\n const error = z.object({ code: z.string().optional(), error: z.string().optional() }).passthrough().safeParse(payload);\n throw new OpenPondLearningError(response.status, error.success ? error.data.code ?? \"correction_request_failed\" : \"correction_request_failed\",\n error.success ? error.data.error ?? `Correction metrics request failed (${response.status}).` : `Correction metrics request failed (${response.status}).`, payload);\n }\n return payload;\n }\n async read(input: CorrectionMetricsRead, options: LearningRequestOptions = {}) {\n const query = CorrectionMetricsReadSchema.parse(input);\n const result = CorrectionMetricsDetailSchema.parse(await this.request(`/v1/learning/corrections?query=${encodeURIComponent(JSON.stringify(query))}`, query.teamId, { method: \"GET\", signal: options.signal }));\n if (result.summary && (result.summary.scope.teamId !== query.teamId || result.summary.scope.modelId !== query.modelId || query.runId && result.summary.scope.runId !== query.runId)\n || result.observations.some(observation => observation.modelId !== query.modelId || query.runId && observation.trainingJobId !== query.runId))\n throw new OpenPondLearningError(502, \"correction_scope_mismatch\", \"Correction metrics did not match the requested workspace, Model or run.\", null);\n return result;\n }\n async command(input: CorrectionMetricsCommand, options: LearningRequestOptions = {}) {\n const command = CorrectionMetricsCommandSchema.parse(input);\n assertLearningRequestJson(command);\n const payload = await this.request(\"/v1/learning/corrections\", command.teamId, { method: \"POST\", body: JSON.stringify(command), signal: options.signal });\n if (command.action === \"declare_verification\") {\n const result = CorrectionVerificationPlanSchema.parse(payload);\n if (result.teamId !== command.teamId || result.modelId !== command.plan.modelId || result.trainingJobId !== command.plan.trainingJobId)\n throw new OpenPondLearningError(502, \"correction_scope_mismatch\", \"Correction declaration did not match the requested workspace, Model or run.\", null);\n return result;\n }\n const result = CorrectionOpportunitySchema.parse(payload);\n if (result.correction.id !== command.correction.id || result.correction.contentHash !== command.correction.contentHash || result.attempt.id !== command.inferenceRequestId)\n throw new OpenPondLearningError(502, \"correction_scope_mismatch\", \"Correction opportunity did not match the declared correction and serving request.\", null);\n return result;\n }\n}\n"],"mappings":"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","names":["id","value","z","CorrectionVerificationPlanSchema","CorrectionMetricSummarySchema","CorrectionMetricObservationSchema","z","result"]}
@@ -25,15 +25,15 @@ import {
25
25
  createModelProjectsClient,
26
26
  modelProjectConfigurationHash,
27
27
  parseModelProjectSaveRequest
28
- } from "./chunk-BQ2C2Y54.js";
28
+ } from "./chunk-UOV2LEXS.js";
29
+ import {
30
+ ModelInitialLearningSchema
31
+ } from "./chunk-CL3IOOVL.js";
29
32
  import {
30
33
  MODEL_PROJECT_API_RESPONSE_MAX_BYTES,
31
34
  MODEL_PROJECT_SYNC_MAX_BYTES,
32
35
  OPENPOND_MODEL_PROJECT_MEDIA_TYPE
33
36
  } from "./chunk-B3ZHJ2KK.js";
34
- import {
35
- ModelInitialLearningSchema
36
- } from "./chunk-CL3IOOVL.js";
37
37
  import "./chunk-YLJ4XMA6.js";
38
38
  export {
39
39
  HostedModelProjectDetailSchema,
@@ -11,10 +11,10 @@ import {
11
11
  ModelStarterAttemptSummarySchema,
12
12
  OpenPondModelStarterAttemptError,
13
13
  OpenPondModelStarterAttemptsClient
14
- } from "./chunk-LT2YQCZI.js";
15
- import "./chunk-BQ2C2Y54.js";
16
- import "./chunk-B3ZHJ2KK.js";
14
+ } from "./chunk-RLW4Y5ZV.js";
15
+ import "./chunk-UOV2LEXS.js";
17
16
  import "./chunk-CL3IOOVL.js";
17
+ import "./chunk-B3ZHJ2KK.js";
18
18
  import "./chunk-H3JZ3P5T.js";
19
19
  import "./chunk-YLJ4XMA6.js";
20
20
  export {
@@ -1,24 +1,24 @@
1
1
  import {
2
2
  ModelStarterSchema,
3
3
  validateResolvedModelStarter
4
- } from "./chunk-FC56EMHT.js";
5
- import "./chunk-7WKCQ4V5.js";
6
- import "./chunk-WOD72SFI.js";
4
+ } from "./chunk-NKF5NIML.js";
5
+ import "./chunk-IFBCLRBM.js";
6
+ import "./chunk-GJRXJL6G.js";
7
7
  import "./chunk-EZME7DV4.js";
8
8
  import "./chunk-GX6KMHW2.js";
9
9
  import "./chunk-TK3DXH7A.js";
10
10
  import "./chunk-H3367ISL.js";
11
- import "./chunk-5QMREXMU.js";
12
- import "./chunk-7FYPFHCQ.js";
11
+ import "./chunk-7BYLH47N.js";
12
+ import "./chunk-K54BDIKL.js";
13
13
  import "./chunk-Q4TKI2MV.js";
14
- import "./chunk-HDKP6KE2.js";
15
- import "./chunk-IIQENUOK.js";
16
- import "./chunk-LT2YQCZI.js";
14
+ import "./chunk-C4W2MEFP.js";
15
+ import "./chunk-ZYDDHHZZ.js";
16
+ import "./chunk-RLW4Y5ZV.js";
17
17
  import {
18
18
  ModelProjectVersionedRefSchema
19
- } from "./chunk-BQ2C2Y54.js";
20
- import "./chunk-B3ZHJ2KK.js";
19
+ } from "./chunk-UOV2LEXS.js";
21
20
  import "./chunk-CL3IOOVL.js";
21
+ import "./chunk-B3ZHJ2KK.js";
22
22
  import "./chunk-H3JZ3P5T.js";
23
23
  import "./chunk-YLJ4XMA6.js";
24
24
 
@@ -14,7 +14,7 @@ import {
14
14
  rebindModelTrainingRecipe,
15
15
  validateModelStarterCreation,
16
16
  validateResolvedModelStarter
17
- } from "./chunk-FC56EMHT.js";
17
+ } from "./chunk-NKF5NIML.js";
18
18
  import {
19
19
  ModelStarterEnvironmentAttemptSchema,
20
20
  ModelStarterExecutionSchema,
@@ -33,21 +33,21 @@ import {
33
33
  validateModelTasksetPackage,
34
34
  verifyModelStarterEnvironmentAttempt,
35
35
  verifyNativeHarnessExperimentAttempt
36
- } from "./chunk-7WKCQ4V5.js";
37
- import "./chunk-WOD72SFI.js";
36
+ } from "./chunk-IFBCLRBM.js";
37
+ import "./chunk-GJRXJL6G.js";
38
38
  import "./chunk-EZME7DV4.js";
39
39
  import "./chunk-GX6KMHW2.js";
40
40
  import "./chunk-TK3DXH7A.js";
41
41
  import "./chunk-H3367ISL.js";
42
- import "./chunk-5QMREXMU.js";
43
- import "./chunk-7FYPFHCQ.js";
42
+ import "./chunk-7BYLH47N.js";
43
+ import "./chunk-K54BDIKL.js";
44
44
  import "./chunk-Q4TKI2MV.js";
45
- import "./chunk-HDKP6KE2.js";
46
- import "./chunk-IIQENUOK.js";
47
- import "./chunk-LT2YQCZI.js";
48
- import "./chunk-BQ2C2Y54.js";
49
- import "./chunk-B3ZHJ2KK.js";
45
+ import "./chunk-C4W2MEFP.js";
46
+ import "./chunk-ZYDDHHZZ.js";
47
+ import "./chunk-RLW4Y5ZV.js";
48
+ import "./chunk-UOV2LEXS.js";
50
49
  import "./chunk-CL3IOOVL.js";
50
+ import "./chunk-B3ZHJ2KK.js";
51
51
  import "./chunk-H3JZ3P5T.js";
52
52
  import "./chunk-YLJ4XMA6.js";
53
53
  export {
@@ -10,13 +10,13 @@ import {
10
10
  verifyHarnessExperimentManifest,
11
11
  verifyModelTasksetRunDetails,
12
12
  verifyModelTasksetRunResult
13
- } from "./chunk-IIQENUOK.js";
14
- import "./chunk-LT2YQCZI.js";
15
- import "./chunk-BQ2C2Y54.js";
13
+ } from "./chunk-ZYDDHHZZ.js";
14
+ import "./chunk-RLW4Y5ZV.js";
15
+ import "./chunk-UOV2LEXS.js";
16
+ import "./chunk-CL3IOOVL.js";
16
17
  import {
17
18
  canonicalJson
18
19
  } from "./chunk-B3ZHJ2KK.js";
19
- import "./chunk-CL3IOOVL.js";
20
20
  import "./chunk-H3JZ3P5T.js";
21
21
  import "./chunk-YLJ4XMA6.js";
22
22
 
@@ -16,14 +16,14 @@ import {
16
16
  postTrainingActive,
17
17
  postTrainingRecipe,
18
18
  verifyPostTrainingPlan
19
- } from "./chunk-5QMREXMU.js";
20
- import "./chunk-7FYPFHCQ.js";
21
- import "./chunk-HDKP6KE2.js";
22
- import "./chunk-IIQENUOK.js";
23
- import "./chunk-LT2YQCZI.js";
24
- import "./chunk-BQ2C2Y54.js";
25
- import "./chunk-B3ZHJ2KK.js";
19
+ } from "./chunk-7BYLH47N.js";
20
+ import "./chunk-K54BDIKL.js";
21
+ import "./chunk-C4W2MEFP.js";
22
+ import "./chunk-ZYDDHHZZ.js";
23
+ import "./chunk-RLW4Y5ZV.js";
24
+ import "./chunk-UOV2LEXS.js";
26
25
  import "./chunk-CL3IOOVL.js";
26
+ import "./chunk-B3ZHJ2KK.js";
27
27
  import "./chunk-H3JZ3P5T.js";
28
28
  import "./chunk-YLJ4XMA6.js";
29
29
  export {
@@ -4,10 +4,10 @@ import {
4
4
  TaskDesignProposalSchema,
5
5
  TaskExampleProposalSchema,
6
6
  TrainingTacticSchema
7
- } from "./chunk-2DK7UBAG.js";
7
+ } from "./chunk-YIGFQWZV.js";
8
8
  import {
9
9
  TasksetPackageReceiptSchema
10
- } from "./chunk-XNRM3QGR.js";
10
+ } from "./chunk-ORYA2G7S.js";
11
11
  import {
12
12
  MAX_TASKSET_DRAFT_EDIT_FILE_BYTES,
13
13
  MAX_TASKSET_DRAFT_WORKSPACE_BYTES,
@@ -28,7 +28,7 @@ import {
28
28
  saveTasksetDraftWorkspaceFile,
29
29
  tasksetDraftFromTaskset,
30
30
  validateTasksetDraftWorkspace
31
- } from "./chunk-4L556MYM.js";
31
+ } from "./chunk-JDQVAG3R.js";
32
32
  import {
33
33
  AuthoringProvenanceSchema,
34
34
  AuthoringRepairSchema,
@@ -55,7 +55,7 @@ import {
55
55
  isTrainingSourceRef,
56
56
  validatePortability,
57
57
  validateTaskset
58
- } from "./chunk-UAYXORU5.js";
58
+ } from "./chunk-GHPCQXG5.js";
59
59
  import {
60
60
  ConnectedDatasetSourceRefSchema,
61
61
  CorrectionSignalSchema,
@@ -111,8 +111,8 @@ import {
111
111
  UploadedFileDatasetSourceRefSchema,
112
112
  assertTasksetCalibrationClosures,
113
113
  resolveTasksetCalibrationFixture
114
- } from "./chunk-7WKCQ4V5.js";
115
- import "./chunk-WOD72SFI.js";
114
+ } from "./chunk-IFBCLRBM.js";
115
+ import "./chunk-GJRXJL6G.js";
116
116
  import "./chunk-EZME7DV4.js";
117
117
  import "./chunk-GX6KMHW2.js";
118
118
  import "./chunk-Z252BNAZ.js";
@@ -124,15 +124,15 @@ import {
124
124
  TasksetDraftFileSchema
125
125
  } from "./chunk-TK3DXH7A.js";
126
126
  import "./chunk-H3367ISL.js";
127
- import "./chunk-5QMREXMU.js";
128
- import "./chunk-7FYPFHCQ.js";
127
+ import "./chunk-7BYLH47N.js";
128
+ import "./chunk-K54BDIKL.js";
129
129
  import "./chunk-Q4TKI2MV.js";
130
- import "./chunk-HDKP6KE2.js";
131
- import "./chunk-IIQENUOK.js";
132
- import "./chunk-LT2YQCZI.js";
133
- import "./chunk-BQ2C2Y54.js";
134
- import "./chunk-B3ZHJ2KK.js";
130
+ import "./chunk-C4W2MEFP.js";
131
+ import "./chunk-ZYDDHHZZ.js";
132
+ import "./chunk-RLW4Y5ZV.js";
133
+ import "./chunk-UOV2LEXS.js";
135
134
  import "./chunk-CL3IOOVL.js";
135
+ import "./chunk-B3ZHJ2KK.js";
136
136
  import {
137
137
  contentHash,
138
138
  sha256
@@ -7,13 +7,13 @@ import {
7
7
  inspectModelBatchPackage,
8
8
  materializeTasksetDraftWorkspace,
9
9
  prepareTasksetDraftSource
10
- } from "./chunk-PT72OARU.js";
10
+ } from "./chunk-RIN6Z56W.js";
11
11
  import {
12
12
  learningVerifierModule,
13
13
  prepareImportedTasksetPackage,
14
14
  projectLearningBatchGraders,
15
15
  tasksetPackageSourceId
16
- } from "./chunk-ICFFZ4WC.js";
16
+ } from "./chunk-JBYFD3QS.js";
17
17
  import {
18
18
  OpenPondTasksetPackageClient,
19
19
  OpenPondTasksetPackageError,
@@ -22,7 +22,7 @@ import {
22
22
  TasksetPackageReadbackSchema,
23
23
  TasksetPackageReceiptSchema,
24
24
  TasksetReleasePackageReadbackSchema
25
- } from "./chunk-XNRM3QGR.js";
25
+ } from "./chunk-ORYA2G7S.js";
26
26
  import {
27
27
  ModelBatchReviewInspectionSchema,
28
28
  ModelBatchReviewReceiptSchema,
@@ -35,7 +35,7 @@ import {
35
35
  prepareAuthoredTasksetSource,
36
36
  prepareModelTasksetDraft,
37
37
  publishModelTasksetDraftPackage
38
- } from "./chunk-WEL535AI.js";
38
+ } from "./chunk-XRBM6PBD.js";
39
39
  import {
40
40
  materializePortableTasksetRelease,
41
41
  portableTasksetEnvironment,
@@ -44,8 +44,8 @@ import {
44
44
  projectPreferenceComparisonRelease,
45
45
  resolvePortableTasksetRewardExecution
46
46
  } from "./chunk-ATVQQCYN.js";
47
- import "./chunk-4L556MYM.js";
48
- import "./chunk-UAYXORU5.js";
47
+ import "./chunk-JDQVAG3R.js";
48
+ import "./chunk-GHPCQXG5.js";
49
49
  import {
50
50
  MAX_TASKSET_PACKAGE_BYTES,
51
51
  TasksetPackageContentSchema,
@@ -62,8 +62,8 @@ import {
62
62
  tasksetPackageRewardBinding,
63
63
  validateTasksetLearningResources,
64
64
  validateTasksetPackage
65
- } from "./chunk-7WKCQ4V5.js";
66
- import "./chunk-WOD72SFI.js";
65
+ } from "./chunk-IFBCLRBM.js";
66
+ import "./chunk-GJRXJL6G.js";
67
67
  import "./chunk-EZME7DV4.js";
68
68
  import "./chunk-GX6KMHW2.js";
69
69
  import "./chunk-Z252BNAZ.js";
@@ -79,15 +79,15 @@ import {
79
79
  TasksetDraftFileSchema
80
80
  } from "./chunk-TK3DXH7A.js";
81
81
  import "./chunk-H3367ISL.js";
82
- import "./chunk-5QMREXMU.js";
83
- import "./chunk-7FYPFHCQ.js";
82
+ import "./chunk-7BYLH47N.js";
83
+ import "./chunk-K54BDIKL.js";
84
84
  import "./chunk-Q4TKI2MV.js";
85
- import "./chunk-HDKP6KE2.js";
86
- import "./chunk-IIQENUOK.js";
87
- import "./chunk-LT2YQCZI.js";
88
- import "./chunk-BQ2C2Y54.js";
89
- import "./chunk-B3ZHJ2KK.js";
85
+ import "./chunk-C4W2MEFP.js";
86
+ import "./chunk-ZYDDHHZZ.js";
87
+ import "./chunk-RLW4Y5ZV.js";
88
+ import "./chunk-UOV2LEXS.js";
90
89
  import "./chunk-CL3IOOVL.js";
90
+ import "./chunk-B3ZHJ2KK.js";
91
91
  import "./chunk-H3JZ3P5T.js";
92
92
  import "./chunk-YLJ4XMA6.js";
93
93
  export {