openpond-sdk 0.12.26 → 0.12.27

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 (200) hide show
  1. package/PRODUCT_INTEGRATION.md +13 -6
  2. package/README.md +2 -10
  3. package/SERVERLESS_SERVING.md +52 -35
  4. package/TASK_INGESTION.md +0 -4
  5. package/dist/advanced-refiner-evaluations.js +7 -7
  6. package/dist/ai-sdk.js +20 -83
  7. package/dist/ai-sdk.js.map +1 -1
  8. package/dist/candidate-evaluations.js +6 -6
  9. package/dist/{chunk-UZAVG2WK.js → chunk-3HOGOWKU.js} +8 -6
  10. package/dist/chunk-3HOGOWKU.js.map +1 -0
  11. package/dist/{chunk-YV6PPDXZ.js → chunk-3Z5IK2UK.js} +27 -2
  12. package/dist/chunk-3Z5IK2UK.js.map +1 -0
  13. package/dist/{chunk-4REK5TTE.js → chunk-4D4QSQC3.js} +2 -2
  14. package/dist/{chunk-AMZ2SWHR.js → chunk-534W2O2S.js} +2 -2
  15. package/dist/{chunk-6LVLWRBJ.js → chunk-54BJJL7G.js} +2 -2
  16. package/dist/{chunk-XWUTYFOU.js → chunk-5KJY44FB.js} +3 -3
  17. package/dist/{chunk-QKLZZOZD.js → chunk-7MLFWVDI.js} +29 -10
  18. package/dist/chunk-7MLFWVDI.js.map +1 -0
  19. package/dist/{chunk-4A4FNG4R.js → chunk-7ZV626YS.js} +2 -2
  20. package/dist/{chunk-57ROW3XF.js → chunk-ABOZV47D.js} +2 -2
  21. package/dist/{chunk-3BILL33A.js → chunk-BIQ5TG3T.js} +4 -4
  22. package/dist/{chunk-JINWKUKR.js → chunk-BT6CC6QB.js} +3 -3
  23. package/dist/{chunk-4PEK3YOW.js → chunk-CNFN6GHY.js} +2 -2
  24. package/dist/{chunk-X5AT253K.js → chunk-CVYGJUWM.js} +2 -2
  25. package/dist/{chunk-D26RJQU7.js → chunk-CX7ETU2F.js} +2 -2
  26. package/dist/{chunk-4CDLPMJK.js → chunk-D7LV3USE.js} +2 -2
  27. package/dist/{chunk-WZKKQNYY.js → chunk-GA7OSSEA.js} +2 -2
  28. package/dist/{chunk-EL6KZO43.js → chunk-GFWXDWEE.js} +3 -3
  29. package/dist/{chunk-XYK3MAIC.js → chunk-JYWIKBGD.js} +122 -112
  30. package/dist/chunk-JYWIKBGD.js.map +1 -0
  31. package/dist/{chunk-AQV7RQZH.js → chunk-K4WU4JOP.js} +2 -2
  32. package/dist/{chunk-CAOMKM55.js → chunk-L7MVGGBH.js} +2 -2
  33. package/dist/{chunk-P56JWQYV.js → chunk-LRFVISLA.js} +3 -3
  34. package/dist/{chunk-2U6BQ5C4.js → chunk-MJHQMQEW.js} +3 -3
  35. package/dist/chunk-ON3KSXWR.js +639 -0
  36. package/dist/chunk-ON3KSXWR.js.map +1 -0
  37. package/dist/{chunk-PMVSO23F.js → chunk-RMXZISHK.js} +10 -1
  38. package/dist/chunk-RMXZISHK.js.map +1 -0
  39. package/dist/{chunk-JWEIAEQ6.js → chunk-TMNEDWA7.js} +10 -3
  40. package/dist/chunk-TMNEDWA7.js.map +1 -0
  41. package/dist/{chunk-C7I4ZG6Q.js → chunk-TX552FQG.js} +3 -3
  42. package/dist/{chunk-4CRLQMJ2.js → chunk-VIDRZCPQ.js} +6 -6
  43. package/dist/{chunk-MN4FE52A.js → chunk-VRUAIMM3.js} +7 -7
  44. package/dist/chunk-VRUAIMM3.js.map +1 -0
  45. package/dist/{chunk-H5KHLBC5.js → chunk-WJZHSIGD.js} +6 -8
  46. package/dist/{chunk-H5KHLBC5.js.map → chunk-WJZHSIGD.js.map} +1 -1
  47. package/dist/{chunk-HCUZYGUK.js → chunk-WPTFJZ4L.js} +3 -3
  48. package/dist/connected-evidence.js +7 -7
  49. package/dist/dataset-workspaces.js +10 -10
  50. package/dist/errors.js +1 -1
  51. package/dist/experiment-evaluation-schedules.js +16 -16
  52. package/dist/experiment-improvements.js +7 -7
  53. package/dist/experiments.js +15 -15
  54. package/dist/index.js +23 -23
  55. package/dist/learning.js +15 -4
  56. package/dist/learning.js.map +1 -1
  57. package/dist/model-projects.js +1 -1
  58. package/dist/model-starter-attempts.js +2 -2
  59. package/dist/model-starter-catalog.js +4 -4
  60. package/dist/model-starters.js +4 -4
  61. package/dist/model-taskset-runs.js +3 -3
  62. package/dist/post-training.js +6 -6
  63. package/dist/taskset-drafts.js +6 -6
  64. package/dist/taskset-packages.js +12 -10
  65. package/dist/training-bundle.js +46 -20
  66. package/dist/training-bundle.js.map +1 -1
  67. package/dist/training-hardware.js +2 -2
  68. package/dist/training.js +5620 -4342
  69. package/dist/training.js.map +1 -1
  70. package/dist/types/packages/sdk/src/ai-sdk.d.ts.map +1 -1
  71. package/dist/types/packages/sdk/src/alphaedit-model-serving.d.ts +8 -4
  72. package/dist/types/packages/sdk/src/alphaedit-model-serving.d.ts.map +1 -1
  73. package/dist/types/packages/sdk/src/candidate-evaluation-client.d.ts +162 -162
  74. package/dist/types/packages/sdk/src/decision-model-serving.d.ts +4 -2
  75. package/dist/types/packages/sdk/src/decision-model-serving.d.ts.map +1 -1
  76. package/dist/types/packages/sdk/src/engram-model-serving.d.ts +3 -1
  77. package/dist/types/packages/sdk/src/engram-model-serving.d.ts.map +1 -1
  78. package/dist/types/packages/sdk/src/experiment-client.d.ts +699 -691
  79. package/dist/types/packages/sdk/src/experiment-client.d.ts.map +1 -1
  80. package/dist/types/packages/sdk/src/experiment-draft-storage.d.ts +34 -28
  81. package/dist/types/packages/sdk/src/experiment-draft-storage.d.ts.map +1 -1
  82. package/dist/types/packages/sdk/src/experiment-improvement-client.d.ts +1889 -1889
  83. package/dist/types/packages/sdk/src/experiment-run-details.d.ts +7 -7
  84. package/dist/types/packages/sdk/src/experiment-scoring-contracts.d.ts +21 -3
  85. package/dist/types/packages/sdk/src/experiment-scoring-contracts.d.ts.map +1 -1
  86. package/dist/types/packages/sdk/src/learning.d.ts +1 -0
  87. package/dist/types/packages/sdk/src/learning.d.ts.map +1 -1
  88. package/dist/types/packages/sdk/src/managed-alphaedit-executions.d.ts +272 -16
  89. package/dist/types/packages/sdk/src/managed-alphaedit-executions.d.ts.map +1 -1
  90. package/dist/types/packages/sdk/src/managed-compute-price.d.ts +53 -1
  91. package/dist/types/packages/sdk/src/managed-compute-price.d.ts.map +1 -1
  92. package/dist/types/packages/sdk/src/managed-decision-executions.d.ts +612 -356
  93. package/dist/types/packages/sdk/src/managed-decision-executions.d.ts.map +1 -1
  94. package/dist/types/packages/sdk/src/managed-engram-executions.d.ts +272 -16
  95. package/dist/types/packages/sdk/src/managed-engram-executions.d.ts.map +1 -1
  96. package/dist/types/packages/sdk/src/managed-modification-executions.d.ts +208 -16
  97. package/dist/types/packages/sdk/src/managed-modification-executions.d.ts.map +1 -1
  98. package/dist/types/packages/sdk/src/managed-neuron-training-executions.d.ts +272 -16
  99. package/dist/types/packages/sdk/src/managed-neuron-training-executions.d.ts.map +1 -1
  100. package/dist/types/packages/sdk/src/managed-serving-usage.d.ts +3 -0
  101. package/dist/types/packages/sdk/src/managed-serving-usage.d.ts.map +1 -1
  102. package/dist/types/packages/sdk/src/managed-training-preparation.d.ts +25 -25
  103. package/dist/types/packages/sdk/src/managed-training-preparation.d.ts.map +1 -1
  104. package/dist/types/packages/sdk/src/model-learning-capabilities.d.ts +4 -0
  105. package/dist/types/packages/sdk/src/model-learning-capabilities.d.ts.map +1 -0
  106. package/dist/types/packages/sdk/src/model-learning-policy.d.ts.map +1 -1
  107. package/dist/types/packages/sdk/src/model-supervised-training-defaults.d.ts.map +1 -1
  108. package/dist/types/packages/sdk/src/model-training-defaults.d.ts +5 -2
  109. package/dist/types/packages/sdk/src/model-training-defaults.d.ts.map +1 -1
  110. package/dist/types/packages/sdk/src/neuron-training-model-serving.d.ts +8 -4
  111. package/dist/types/packages/sdk/src/neuron-training-model-serving.d.ts.map +1 -1
  112. package/dist/types/packages/sdk/src/post-training.d.ts +7 -7
  113. package/dist/types/packages/sdk/src/product-model-response.d.ts +6 -2
  114. package/dist/types/packages/sdk/src/product-model-response.d.ts.map +1 -1
  115. package/dist/types/packages/sdk/src/product-model-transport.d.ts +99 -0
  116. package/dist/types/packages/sdk/src/product-model-transport.d.ts.map +1 -0
  117. package/dist/types/packages/sdk/src/product-model-wire.d.ts +104 -0
  118. package/dist/types/packages/sdk/src/product-model-wire.d.ts.map +1 -0
  119. package/dist/types/packages/sdk/src/product-models.d.ts +18 -15
  120. package/dist/types/packages/sdk/src/product-models.d.ts.map +1 -1
  121. package/dist/types/packages/sdk/src/serverless-serving.d.ts +416 -9
  122. package/dist/types/packages/sdk/src/serverless-serving.d.ts.map +1 -1
  123. package/dist/types/packages/sdk/src/steering-model-serving.d.ts +2144 -703
  124. package/dist/types/packages/sdk/src/steering-model-serving.d.ts.map +1 -1
  125. package/dist/types/packages/sdk/src/steering-profile-publication.d.ts +631 -0
  126. package/dist/types/packages/sdk/src/steering-profile-publication.d.ts.map +1 -1
  127. package/dist/types/packages/sdk/src/taskset-draft-client.d.ts +120 -120
  128. package/dist/types/packages/sdk/src/taskset-package-projection.d.ts +20 -20
  129. package/dist/types/packages/sdk/src/taskset-packages.d.ts +1 -0
  130. package/dist/types/packages/sdk/src/taskset-packages.d.ts.map +1 -1
  131. package/dist/types/packages/sdk/src/taskset-text-policy.d.ts +11 -0
  132. package/dist/types/packages/sdk/src/taskset-text-policy.d.ts.map +1 -0
  133. package/dist/types/packages/sdk/src/training-compute-selection.d.ts +6 -19
  134. package/dist/types/packages/sdk/src/training-compute-selection.d.ts.map +1 -1
  135. package/dist/types/packages/sdk/src/training-estimates.d.ts +1 -1
  136. package/dist/types/packages/sdk/src/training-experiment-setup.d.ts +4 -1
  137. package/dist/types/packages/sdk/src/training-experiment-setup.d.ts.map +1 -1
  138. package/dist/types/packages/sdk/src/training-harness-sources.d.ts +2 -2
  139. package/dist/types/packages/sdk/src/training-learning-batch.d.ts +40 -40
  140. package/dist/types/packages/sdk/src/training-model-serving-control.d.ts +406 -8
  141. package/dist/types/packages/sdk/src/training-model-serving-control.d.ts.map +1 -1
  142. package/dist/types/packages/sdk/src/training-model-serving.d.ts +1136 -30
  143. package/dist/types/packages/sdk/src/training-model-serving.d.ts.map +1 -1
  144. package/dist/types/packages/sdk/src/training-operations.d.ts +11197 -0
  145. package/dist/types/packages/sdk/src/training-operations.d.ts.map +1 -0
  146. package/dist/types/packages/sdk/src/training-qualification-preparation.d.ts +25 -25
  147. package/dist/types/packages/sdk/src/training-supervised.d.ts +13 -0
  148. package/dist/types/packages/sdk/src/training-supervised.d.ts.map +1 -1
  149. package/dist/types/packages/sdk/src/training-transport.d.ts +4 -1
  150. package/dist/types/packages/sdk/src/training-transport.d.ts.map +1 -1
  151. package/dist/types/packages/sdk/src/training.d.ts +15885 -4662
  152. package/dist/types/packages/sdk/src/training.d.ts.map +1 -1
  153. package/dist/types/packages/sdk/src/weight-inference.d.ts +8 -5
  154. package/dist/types/packages/sdk/src/weight-inference.d.ts.map +1 -1
  155. package/dist/types/packages/sdk/src/weight-model-versions.d.ts +2089 -398
  156. package/dist/types/packages/sdk/src/weight-model-versions.d.ts.map +1 -1
  157. package/dist/types/packages/sdk/src/weight-space-artifact.d.ts +433 -0
  158. package/dist/types/packages/sdk/src/weight-space-artifact.d.ts.map +1 -0
  159. package/dist/types/packages/sdk/src/weight-space-evaluation.d.ts +1437 -0
  160. package/dist/types/packages/sdk/src/weight-space-evaluation.d.ts.map +1 -0
  161. package/dist/types/packages/sdk/src/weight-space-model-serving.d.ts +2910 -0
  162. package/dist/types/packages/sdk/src/weight-space-model-serving.d.ts.map +1 -0
  163. package/dist/types/packages/sdk/src/weight-space-programming.d.ts +845 -0
  164. package/dist/types/packages/sdk/src/weight-space-programming.d.ts.map +1 -0
  165. package/dist/types/packages/sdk/src/weight-space-sessions.d.ts +4600 -0
  166. package/dist/types/packages/sdk/src/weight-space-sessions.d.ts.map +1 -0
  167. package/fixtures/python-foundation/operation-matrix.json +369 -0
  168. package/fixtures/python-foundation/schemas.json +34304 -27905
  169. package/fixtures/python-foundation/training-estimate-http-workflow.json +1 -1
  170. package/package.json +2 -2
  171. package/dist/chunk-JWEIAEQ6.js.map +0 -1
  172. package/dist/chunk-MN4FE52A.js.map +0 -1
  173. package/dist/chunk-PMVSO23F.js.map +0 -1
  174. package/dist/chunk-QKLZZOZD.js.map +0 -1
  175. package/dist/chunk-UZAVG2WK.js.map +0 -1
  176. package/dist/chunk-XYK3MAIC.js.map +0 -1
  177. package/dist/chunk-YV6PPDXZ.js.map +0 -1
  178. package/dist/chunk-ZG4HVCJB.js +0 -248
  179. package/dist/chunk-ZG4HVCJB.js.map +0 -1
  180. /package/dist/{chunk-4REK5TTE.js.map → chunk-4D4QSQC3.js.map} +0 -0
  181. /package/dist/{chunk-AMZ2SWHR.js.map → chunk-534W2O2S.js.map} +0 -0
  182. /package/dist/{chunk-6LVLWRBJ.js.map → chunk-54BJJL7G.js.map} +0 -0
  183. /package/dist/{chunk-XWUTYFOU.js.map → chunk-5KJY44FB.js.map} +0 -0
  184. /package/dist/{chunk-4A4FNG4R.js.map → chunk-7ZV626YS.js.map} +0 -0
  185. /package/dist/{chunk-57ROW3XF.js.map → chunk-ABOZV47D.js.map} +0 -0
  186. /package/dist/{chunk-3BILL33A.js.map → chunk-BIQ5TG3T.js.map} +0 -0
  187. /package/dist/{chunk-JINWKUKR.js.map → chunk-BT6CC6QB.js.map} +0 -0
  188. /package/dist/{chunk-4PEK3YOW.js.map → chunk-CNFN6GHY.js.map} +0 -0
  189. /package/dist/{chunk-X5AT253K.js.map → chunk-CVYGJUWM.js.map} +0 -0
  190. /package/dist/{chunk-D26RJQU7.js.map → chunk-CX7ETU2F.js.map} +0 -0
  191. /package/dist/{chunk-4CDLPMJK.js.map → chunk-D7LV3USE.js.map} +0 -0
  192. /package/dist/{chunk-WZKKQNYY.js.map → chunk-GA7OSSEA.js.map} +0 -0
  193. /package/dist/{chunk-EL6KZO43.js.map → chunk-GFWXDWEE.js.map} +0 -0
  194. /package/dist/{chunk-AQV7RQZH.js.map → chunk-K4WU4JOP.js.map} +0 -0
  195. /package/dist/{chunk-CAOMKM55.js.map → chunk-L7MVGGBH.js.map} +0 -0
  196. /package/dist/{chunk-P56JWQYV.js.map → chunk-LRFVISLA.js.map} +0 -0
  197. /package/dist/{chunk-2U6BQ5C4.js.map → chunk-MJHQMQEW.js.map} +0 -0
  198. /package/dist/{chunk-C7I4ZG6Q.js.map → chunk-TX552FQG.js.map} +0 -0
  199. /package/dist/{chunk-4CRLQMJ2.js.map → chunk-VIDRZCPQ.js.map} +0 -0
  200. /package/dist/{chunk-HCUZYGUK.js.map → chunk-WPTFJZ4L.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/model-projects.ts","../src/training-compute-selection.ts"],"sourcesContent":["import { DEFAULT_API_BASE_URL } from \"./endpoints.js\";\nimport { z } from \"zod\";\nimport { TrainingGpuSelectionSchema } from \"./training-compute-selection.js\";\nimport { ModelInitialLearningSchema, type ModelInitialLearning } from \"./model-learning-intent.js\";\nexport { ModelInitialLearningSchema, type ModelInitialLearning } from \"./model-learning-intent.js\";\nimport { assertBoundedTaskJson } from \"@openpond/evals/task-schema\";\n\nimport {\n MODEL_PROJECT_API_RESPONSE_MAX_BYTES,\n MODEL_PROJECT_SYNC_MAX_BYTES,\n OPENPOND_MODEL_PROJECT_MEDIA_TYPE,\n OpenPondProtocolError,\n assertCanonicalPayloadSize,\n canonicalSha256,\n readBoundedJsonResponse,\n} from \"./protocol.js\";\n\nexport {\n MODEL_PROJECT_API_RESPONSE_MAX_BYTES,\n MODEL_PROJECT_SYNC_MAX_BYTES,\n OPENPOND_MODEL_PROJECT_MEDIA_TYPE,\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\nexport const ModelProjectImmutableRefSchema = z\n .object({\n id: IdSchema,\n contentHash: HashSchema,\n })\n .strict();\n\nexport const ModelProjectVersionedRefSchema =\n ModelProjectImmutableRefSchema.extend({\n revision: z.number().int().positive(),\n }).strict();\n\nexport const ModelProjectBaseModelSchema = z\n .object({\n schemaVersion: z.literal(\"openpond.baseModelPreference.v1\"),\n modelId: IdSchema,\n revision: z.string().trim().min(1).max(256).nullable(),\n tokenizerRevision: z.string().trim().min(1).max(256).nullable(),\n chatTemplateHash: z.string().trim().min(8).max(256).nullable(),\n modelAssetId: IdSchema.nullable(),\n source: z.enum([\"managed\", \"local\", \"builtin\"]),\n })\n .strict();\n\nexport const ModelProjectTrainingMethodSchema = z.enum([\n \"sft\",\n \"dpo\",\n \"grpo\",\n \"ppo\",\n \"sdft\",\n \"opd\",\n \"opsd\",\n \"sdpo\",\n]);\n\n/**\n * A versioned recipe document stored while a Project is still mutable.\n * The training endpoint validates the selected recipe version in full before\n * accepting an immutable Job; Project sync preserves newer recipe fields.\n */\nexport const ModelProjectRecipeDocumentSchema = z\n .object({\n schemaVersion: z.string().regex(/^openpond\\.[A-Za-z0-9]+Recipe\\.v\\d+$/),\n method: ModelProjectTrainingMethodSchema,\n parameterization: z.enum([\"lora\", \"full\"]),\n })\n .catchall(z.unknown());\n\n/** The published Profile source selected for this Model's Harness. */\nexport const ModelProfileSourceSelectionSchema = z.object({\n profileProjectId: IdSchema,\n sourceRevision: z.string().regex(/^[a-f0-9]{40,64}$/),\n harnessRelease: ModelProjectImmutableRefSchema,\n}).strict();\n\n/** A held-out check selected from an exact released Profile catalog. Its\n * Taskset and grader stay in the evaluation runtime, outside training input. */\nexport const ModelProfileEvaluationSelectionSchema = z.object({\n profileProjectId: IdSchema,\n sourceRevision: z.string().regex(/^[a-f0-9]{40,64}$/),\n catalogHash: HashSchema,\n definitionId: IdSchema,\n harnessRelease: ModelProjectImmutableRefSchema,\n tasksetRelease: ModelProjectImmutableRefSchema,\n}).strict();\n\nexport const ModelProjectTrainingSetupSchema = z\n .object({\n tasksetRef: ModelProjectVersionedRefSchema.nullable().default(null),\n evaluationTasksetRef: ModelProjectVersionedRefSchema.nullable().optional(),\n profileSource: ModelProfileSourceSelectionSchema.nullable().optional(),\n profileEvaluation: ModelProfileEvaluationSelectionSchema.nullable().optional(),\n rewardBindingRef: ModelProjectVersionedRefSchema.nullable().optional(),\n tasksetRelease: ModelProjectImmutableRefSchema.nullable().default(null),\n harnessRelease: ModelProjectImmutableRefSchema.nullable().default(null),\n baseModel: ModelProjectBaseModelSchema.nullable().default(null),\n method: ModelProjectTrainingMethodSchema.nullable().default(null),\n destinationId: IdSchema.nullable().default(null),\n managedRolloutPlacement: z\n .enum([\"local\", \"remote\"])\n .default(\"remote\"),\n managedGpuPlacementObjective: z\n .enum([\"fast\", \"balanced\", \"economical\"])\n .default(\"balanced\"),\n managedGpuSelection: TrainingGpuSelectionSchema.optional(),\n continuationAdapterMode: z.enum([\"residual_append\", \"shared\", \"sequential_merge\"]).optional(),\n managedGpuRequirement: z\n .enum([\"any\", \"h100_hbm3\"])\n .default(\"any\"),\n runPreset: z\n .enum([\"small\", \"standard\", \"custom\", \"small_experiment\"])\n .nullable()\n .default(null),\n recipe: ModelProjectRecipeDocumentSchema.nullable().default(null),\n preferredMaximumSpendUsd: z.number().nonnegative().nullable().default(null),\n preferredRetentionDays: z\n .number()\n .int()\n .nonnegative()\n .nullable()\n .default(null),\n })\n .strict();\n\nexport const HostedModelProjectTrainingSetupSchema =\n ModelProjectTrainingSetupSchema;\n\nexport const HostedModelProjectLinkSchema = z\n .object({\n schemaVersion: z.literal(\"openpond.hostedModelProjectLink.v1\"),\n apiOrigin: z.string().url().refine(value => new URL(value).origin === value, \"Use a canonical API origin.\").nullable().default(null),\n teamId: IdSchema,\n projectId: IdSchema,\n portableProjectId: IdSchema,\n revision: z.number().int().positive(),\n etag: HashSchema,\n syncedSourceRevision: z.number().int().positive(),\n syncedAt: TimestampSchema,\n tasksets: z\n .array(\n z\n .object({\n localTasksetId: IdSchema,\n localTasksetHash: HashSchema.nullable().default(null),\n releaseId: IdSchema,\n releaseRevision: z.number().int().positive(),\n releaseHash: HashSchema,\n packageHash: HashSchema.nullable().default(null),\n hostedTasksetId: IdSchema,\n syncedAt: TimestampSchema,\n })\n .strict(),\n )\n .max(10_000)\n .default([]),\n })\n .strict();\n\nexport const ModelProjectTasksetSyncSchema = z\n .object({\n localTasksetId: IdSchema,\n releaseId: IdSchema,\n releaseRevision: z.number().int().positive(),\n releaseHash: HashSchema,\n state: z.enum([\"syncing\", \"synced\", \"sync_failed\"]),\n hostedTasksetId: IdSchema.nullable().default(null),\n lastAttemptAt: TimestampSchema,\n syncedAt: TimestampSchema.nullable().default(null),\n lastError: z.string().trim().min(1).max(5_000).nullable().default(null),\n })\n .strict();\n\nexport const ModelProjectSchema = z\n .object({\n schemaVersion: z.literal(\"openpond.modelProject.v2\"),\n id: IdSchema,\n profileId: IdSchema,\n revision: z.number().int().positive().default(1),\n name: z.string().trim().min(1).max(200),\n objective: z.string().trim().max(5_000).nullable(),\n defaultBaseModel: ModelProjectBaseModelSchema.nullable(),\n defaultDestinationId: IdSchema.nullable(),\n trainingSetup: ModelProjectTrainingSetupSchema,\n hosted: HostedModelProjectLinkSchema.nullable().default(null),\n tasksetSyncs: z\n .array(ModelProjectTasksetSyncSchema)\n .max(10_000)\n .default([]),\n createdAt: TimestampSchema,\n updatedAt: TimestampSchema,\n })\n .strict();\n\n/** User-editable configuration. Execution and hosting receipts are server-owned. */\nexport const ModelProjectEditableSchema = ModelProjectSchema.pick({\n id: true,\n profileId: true,\n name: true,\n objective: true,\n defaultBaseModel: true,\n defaultDestinationId: true,\n trainingSetup: true,\n});\n\n/** Zero creates a new Model; a positive revision updates that exact revision. */\nexport const ModelProjectSaveRequestSchema = z.object({\n schemaVersion: z.literal(\"openpond.modelProjectSave.v1\"),\n operationId: IdSchema,\n expectedRevision: z.number().int().nonnegative(),\n project: ModelProjectEditableSchema,\n learning: ModelInitialLearningSchema.optional(),\n}).strict().superRefine((value, context) => {\n if (value.learning && value.expectedRevision !== 0) context.addIssue({ code: \"custom\", path: [\"learning\"], message: \"Use learning settings to edit an existing Model's policy.\" });\n});\n\nexport type ModelProjectSaveRequest = z.infer<typeof ModelProjectSaveRequestSchema>;\n\n/** A read-only configuration check; it does not establish training or grader quality. */\nexport const ModelProjectConfigurationCheckSchema = z.object({\n schemaVersion: z.literal(\"openpond.modelProjectConfigurationCheck.v1\"),\n configurationHash: HashSchema,\n projectId: IdSchema,\n expectedRevision: z.number().int().nonnegative(),\n checkedAt: TimestampSchema,\n canSave: z.boolean(),\n deferred: z.array(z.enum([\"base_model\", \"taskset\"])).max(2),\n findings: z.array(z.object({\n code: IdSchema,\n severity: z.enum([\"error\", \"warning\"]),\n message: z.string().min(1).max(5000),\n field: z.string().min(1).max(500).nullable(),\n }).strict()).max(100),\n}).strict();\n\nexport type ModelProjectConfigurationCheck = z.infer<typeof ModelProjectConfigurationCheckSchema>;\n\nexport const ModelProjectBaseModelCandidateSchema = z.object({\n id: IdSchema, name: z.string().min(1).max(500), available: z.boolean(), preference: ModelProjectBaseModelSchema,\n}).strict();\n\nexport async function modelProjectConfigurationHash(request: ModelProjectSaveRequest): Promise<string> {\n const parsed = parseModelProjectSaveRequest(request);\n return canonicalSha256({ project: parsed.project, expectedRevision: parsed.expectedRevision, ...(parsed.learning ? { learning: parsed.learning } : {}) });\n}\n\nexport function parseModelProjectSaveRequest(value: unknown): ModelProjectSaveRequest {\n try {\n assertBoundedTaskJson(value, MODEL_PROJECT_SYNC_MAX_BYTES);\n } catch {\n throw new OpenPondModelProjectApiError(400, {\n schemaVersion: \"openpond.modelProjectApiError.v2\", code: \"model_configuration_json_invalid\",\n message: \"Model configuration must be bounded JSON data.\", retryable: false, requestId: null, details: {},\n });\n }\n return ModelProjectSaveRequestSchema.parse(value);\n}\n\n/** Stable across transport retries; excludes server-owned revision/timestamps. */\nexport async function createModelProjectSaveRequest(\n project: z.input<typeof ModelProjectEditableSchema>,\n expectedRevision: number,\n learning?: ModelInitialLearning,\n): Promise<ModelProjectSaveRequest> {\n assertBoundedTaskJson(project, MODEL_PROJECT_SYNC_MAX_BYTES);\n const editable = ModelProjectEditableSchema.parse(project);\n assertCanonicalPayloadSize(editable, MODEL_PROJECT_SYNC_MAX_BYTES, \"Model configuration\");\n const initialLearning = learning ? ModelInitialLearningSchema.parse(learning) : undefined;\n const hash = await canonicalSha256({ project: editable, expectedRevision, ...(initialLearning ? { learning: initialLearning } : {}) });\n return parseModelProjectSaveRequest({\n schemaVersion: \"openpond.modelProjectSave.v1\",\n operationId: `model-save:${hash}`,\n expectedRevision,\n project: editable,\n ...(initialLearning ? { learning: initialLearning } : {}),\n });\n}\n\nexport const HostedModelProjectSyncSchema = z\n .object({\n schemaVersion: z.literal(\"openpond.hostedModelProjectSync.v2\"),\n portableProjectId: IdSchema,\n name: z.string().trim().min(1).max(200),\n objective: z.string().trim().max(5_000).nullable(),\n defaultBaseModel: ModelProjectBaseModelSchema.nullable(),\n defaultDestinationId: IdSchema.nullable(),\n trainingSetup: HostedModelProjectTrainingSetupSchema,\n sourceRevision: z.number().int().positive(),\n sourceUpdatedAt: TimestampSchema,\n expectedEtag: HashSchema.nullable().default(null),\n })\n .strict();\n\nexport const HostedModelProjectSummarySchema = z\n .object({\n id: IdSchema,\n teamId: IdSchema,\n portableProjectId: IdSchema,\n name: z.string().trim().min(1).max(200),\n objective: z.string().trim().max(5_000).nullable(),\n defaultBaseModel: ModelProjectBaseModelSchema.nullable(),\n defaultDestinationId: IdSchema.nullable(),\n trainingSetup: HostedModelProjectTrainingSetupSchema,\n sourceRevision: z.number().int().positive(),\n sourceUpdatedAt: TimestampSchema,\n revision: z.number().int().positive(),\n etag: HashSchema,\n createdAt: TimestampSchema,\n updatedAt: TimestampSchema,\n })\n .strict();\n\nexport const ModelProjectResourceSummarySchema = z\n .object({\n kind: z.enum([\n \"taskset_release\",\n \"harness_release\",\n \"dataset_release\",\n \"evidence_set\",\n \"model_version\",\n \"reward_model_version\",\n \"evaluation_receipt\",\n ]),\n ref: ModelProjectImmutableRefSchema,\n role: z.string().trim().min(1).max(200).nullable().default(null),\n updatedAt: TimestampSchema,\n })\n .strict();\n\nexport const HostedModelProjectDetailSchema = z\n .object({\n project: HostedModelProjectSummarySchema,\n resources: z.array(ModelProjectResourceSummarySchema).max(10_000),\n jobCount: z.number().int().nonnegative(),\n latestJobIds: z.array(IdSchema).max(100),\n })\n .strict();\n\nexport const ModelProjectApiErrorSchema = z\n .object({\n schemaVersion: z.literal(\"openpond.modelProjectApiError.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 OpenPondModelProjectApiError 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 ModelProjectApiErrorSchema>) {\n super(error.message);\n this.name = \"OpenPondModelProjectApiError\";\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 type ModelProject = z.infer<typeof ModelProjectSchema>;\nexport type ModelProjectTrainingSetup = z.infer<\n typeof ModelProjectTrainingSetupSchema\n>;\nexport type HostedModelProjectSync = z.infer<\n typeof HostedModelProjectSyncSchema\n>;\nexport type HostedModelProjectSummary = z.infer<\n typeof HostedModelProjectSummarySchema\n>;\nexport type HostedModelProjectDetail = z.infer<\n typeof HostedModelProjectDetailSchema\n>;\n\ntype ModelProjectsFetch = typeof fetch;\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 createModelProjectsClient(input: {\n baseUrl?: string;\n fetch?: ModelProjectsFetch;\n headers?: HeadersInit | (() => HeadersInit | Promise<HeadersInit>);\n}) {\n const fetchImpl = input.fetch ?? fetch;\n const baseUrl = (input.baseUrl ?? DEFAULT_API_BASE_URL).replace(/\\/$/, \"\");\n\n async function request(pathname: string, init?: RequestInit): Promise<unknown> {\n const configuredHeaders =\n typeof input.headers === \"function\"\n ? await input.headers()\n : (input.headers ?? {});\n const response = await fetchImpl(`${baseUrl}${pathname}`, {\n ...init,\n headers: {\n accept: OPENPOND_MODEL_PROJECT_MEDIA_TYPE,\n ...(init?.body\n ? { \"content-type\": OPENPOND_MODEL_PROJECT_MEDIA_TYPE }\n : {}),\n ...headersRecord(configuredHeaders),\n ...headersRecord(init?.headers),\n },\n });\n const body = await readBoundedJsonResponse(\n response,\n MODEL_PROJECT_API_RESPONSE_MAX_BYTES,\n \"Model Project API response\",\n );\n if (!response.ok) {\n const parsed = ModelProjectApiErrorSchema.safeParse(body);\n if (parsed.success) {\n throw new OpenPondModelProjectApiError(response.status, parsed.data);\n }\n throw new OpenPondProtocolError(\n \"invalid_error_response\",\n `Model Project request failed with HTTP ${response.status} and an invalid error envelope.`,\n );\n }\n return body;\n }\n\n return {\n async configurationCandidates() {\n return z.object({ candidates: z.array(ModelProjectBaseModelCandidateSchema).max(1000) }).strict().parse(\n await request(\"/v1/model-projects/configuration/candidates\", { headers: { accept: \"application/json\" } }),\n ).candidates;\n },\n async checkConfiguration(value: ModelProjectSaveRequest) {\n const parsed = parseModelProjectSaveRequest(value);\n return ModelProjectConfigurationCheckSchema.parse(await request(\"/v1/model-projects/configuration/check\", {\n method: \"POST\", headers: { accept: \"application/json\", \"content-type\": \"application/json\" }, body: JSON.stringify(parsed),\n }));\n },\n async saveConfiguration(value: ModelProjectSaveRequest) {\n const parsed = parseModelProjectSaveRequest(value);\n return HostedModelProjectSummarySchema.parse(await request(\"/v1/model-projects/configuration/save\", {\n method: \"POST\", headers: { accept: \"application/json\", \"content-type\": \"application/json\" }, body: JSON.stringify(parsed),\n }));\n },\n async upsert(project: HostedModelProjectSync) {\n assertCanonicalPayloadSize(\n project,\n MODEL_PROJECT_SYNC_MAX_BYTES,\n \"Model Project sync\",\n );\n const parsed = HostedModelProjectSyncSchema.parse(project);\n const body = await request(\n `/v1/model-projects/${encodeURIComponent(parsed.portableProjectId)}`,\n { method: \"PUT\", body: JSON.stringify(parsed) },\n );\n return HostedModelProjectSummarySchema.parse(\n unwrapObject(body, \"project\"),\n );\n },\n async list() {\n const body = await request(\"/v1/model-projects\");\n return z\n .array(HostedModelProjectSummarySchema)\n .parse(unwrapObject(body, \"projects\"));\n },\n async get(projectId: string) {\n const body = await request(\n `/v1/model-projects/${encodeURIComponent(IdSchema.parse(projectId))}`,\n );\n return HostedModelProjectDetailSchema.parse(body);\n },\n };\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","import { z } from \"zod\";\nimport { canonicalJson, canonicalSha256, OpenPondProtocolError } from \"./protocol.js\";\n\nconst Id = z.string().trim().min(1).max(191);\nconst Hash = z.string().regex(/^[a-f0-9]{64}$/);\nconst OpaqueProvider = z.string().min(1).max(191).regex(/^[A-Za-z0-9][A-Za-z0-9._:/-]*$/);\n\nexport const TrainingGpuSelectionSchema = z.discriminatedUnion(\"mode\", [\n z.object({ mode: z.literal(\"automatic\"), objective: z.enum([\"balanced\", \"fast\", \"economical\"]), gpuCount: z.union([z.literal(1), z.literal(2)]).optional() }).strict(),\n z.object({ mode: z.literal(\"manual\"), availabilityId: Id, gpuType: z.string().trim().min(1).max(256), gpuCount: z.union([z.literal(1), z.literal(2)]).optional() }).strict(),\n]);\n\n/** This token binds a reviewed workload and price, without reserving resources\n * or approving the estimate's recommended budget. */\nexport const TrainingEstimateReviewSchema = z.object({\n estimateId: Id,\n inputHash: Hash,\n requestHash: Hash,\n pricingVersion: Id,\n expiresAt: z.string().datetime({ offset: true }),\n token: z.string().min(1).max(8192),\n}).strict();\n\nexport type TrainingGpuSelection = z.infer<typeof TrainingGpuSelectionSchema>;\nexport type TrainingEstimateReview = z.infer<typeof TrainingEstimateReviewSchema>;\n\n/** A live catalog query is an eligibility read, never a training approval. */\nexport const TrainingGpuCatalogQuerySchema = z.object({\n teamId: Id,\n modelId: z.string().trim().min(1).max(256),\n modelRevision: z.string().trim().min(1).max(256),\n tokenizerRevision: z.string().trim().min(1).max(256),\n chatTemplateHash: Hash,\n method: z.enum([\"sft\", \"grpo\"]),\n loraRank: z.number().int().min(1).max(256),\n gpuCount: z.union([z.literal(1), z.literal(2)]),\n}).strict();\nexport type TrainingGpuCatalogQuery = z.infer<typeof TrainingGpuCatalogQuerySchema>;\n\nexport const TrainingGpuCatalogScopeSchema = z.object({\n query: TrainingGpuCatalogQuerySchema,\n requestHash: Hash,\n qualification: z.enum([\"requires_preparation\", \"unsupported\"]),\n reason: z.enum([\"model_not_supported\", \"lora_rank_not_supported\", \"gpu_count_not_qualified\", \"provider_not_supported\"]).nullable(),\n provider: z.object({\n accountScopeId: Id,\n product: z.literal(\"POD\"), cloud: z.literal(\"SECURE\"),\n countryCodes: z.array(z.string().regex(/^[A-Z]{2}$/)).min(1).max(300),\n cudaVersions: z.array(z.string().regex(/^\\d+\\.\\d+$/)).min(1).max(100),\n dataCenterId: Id.nullable(),\n minimumDiskGb: z.number().int().positive(),\n priceBasis: z.literal(\"provider_catalog_per_gpu_rate_times_count\"),\n }).strict().nullable(),\n}).strict();\nexport type TrainingGpuCatalogScope = z.infer<typeof TrainingGpuCatalogScopeSchema>;\n\nexport const TrainingGpuCatalogSchema = z.object({\n schemaVersion: z.literal(\"openpond.trainingGpuCatalog.v1\"),\n observedAt: z.string().datetime({ offset: true }),\n expiresAt: z.string().datetime({ offset: true }),\n workerImageDigest: z.string().regex(/^sha256:[a-f0-9]{64}$/),\n supportedLoraRanks: z.array(z.number().int().positive()),\n pricingBasis: z.enum([\"accepted_compute_and_disk_hourly_before_credits\", \"provider_catalog_compute_and_disk_before_credits\"]),\n scope: TrainingGpuCatalogScopeSchema.optional(),\n offerings: z.array(z.object({\n availabilityId: Id, gpuType: z.string().min(1).max(256), provider: OpaqueProvider,\n region: z.string().min(1), dataCenterId: z.string().nullable(),\n gpuCount: z.number().int().positive(), gpuMemoryGb: z.number().positive(),\n stockStatus: z.enum([\"High\", \"Medium\", \"Low\"]),\n computeHourlyUsd: z.number().nonnegative(), diskHourlyUsd: z.number().nonnegative(), totalHourlyUsd: z.number().nonnegative(),\n }).strict()).max(1000),\n}).strict();\nexport type TrainingGpuCatalog = z.infer<typeof TrainingGpuCatalogSchema>;\n\nexport async function parseAndVerifyTrainingGpuCatalog(raw: unknown, query?: TrainingGpuCatalogQuery) {\n const catalog = TrainingGpuCatalogSchema.parse(raw);\n if (Date.parse(catalog.expiresAt) <= Date.parse(catalog.observedAt) ||\n Date.parse(catalog.expiresAt) <= Date.now())\n throw new OpenPondProtocolError(\"training_gpu_catalog_expired\", \"Refresh GPU availability before reviewing this run.\");\n if (!query) {\n if (catalog.scope) throw new OpenPondProtocolError(\"training_gpu_catalog_scope_mismatch\", \"An overview read returned an unrequested workload.\");\n return catalog;\n }\n const scope = catalog.scope;\n if (!scope || catalog.pricingBasis !== \"provider_catalog_compute_and_disk_before_credits\" ||\n canonicalJson(scope.query) !== canonicalJson(query) ||\n scope.requestHash !== await canonicalSha256(query) ||\n (scope.qualification === \"unsupported\") !== (scope.reason !== null) ||\n (scope.qualification === \"unsupported\" ? scope.provider !== null || catalog.offerings.length > 0 : !scope.provider) ||\n new Set(catalog.offerings.map(item => item.provider)).size > 1 ||\n catalog.offerings.some(item => item.gpuCount !== query.gpuCount ||\n item.dataCenterId !== scope.provider?.dataCenterId) ||\n new Set(catalog.offerings.map(item => item.availabilityId)).size !== catalog.offerings.length)\n throw new OpenPondProtocolError(\"training_gpu_catalog_scope_mismatch\", \"The GPU offers do not match this workspace and workload.\");\n return catalog;\n}\n\nexport function createTrainingGpuCatalogClient(request: (path: string, init?: RequestInit) => Promise<unknown>) {\n return {\n async gpuCatalog(raw?: TrainingGpuCatalogQuery) {\n const query = raw === undefined ? undefined : TrainingGpuCatalogQuerySchema.parse(raw);\n const params = query ? new URLSearchParams(Object.entries(query).map(([key, value]) => [key, String(value)])) : null;\n const response = await request(`/v1/training/gpu-catalog${params ? `?${params}` : \"\"}`);\n const value = response && typeof response === \"object\" && \"catalog\" in response ? response.catalog : response;\n return parseAndVerifyTrainingGpuCatalog(value, query);\n },\n };\n}\n"],"mappings":"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","names":["z","value","z"]}
1
+ {"version":3,"sources":["../src/model-projects.ts","../src/training-compute-selection.ts"],"sourcesContent":["import { DEFAULT_API_BASE_URL } from \"./endpoints.js\";\nimport { z } from \"zod\";\nimport { TrainingGpuSelectionSchema } from \"./training-compute-selection.js\";\nimport { ModelInitialLearningSchema, type ModelInitialLearning } from \"./model-learning-intent.js\";\nexport { ModelInitialLearningSchema, type ModelInitialLearning } from \"./model-learning-intent.js\";\nimport { assertBoundedTaskJson } from \"@openpond/evals/task-schema\";\n\nimport {\n MODEL_PROJECT_API_RESPONSE_MAX_BYTES,\n MODEL_PROJECT_SYNC_MAX_BYTES,\n OPENPOND_MODEL_PROJECT_MEDIA_TYPE,\n OpenPondProtocolError,\n assertCanonicalPayloadSize,\n canonicalSha256,\n readBoundedJsonResponse,\n} from \"./protocol.js\";\n\nexport {\n MODEL_PROJECT_API_RESPONSE_MAX_BYTES,\n MODEL_PROJECT_SYNC_MAX_BYTES,\n OPENPOND_MODEL_PROJECT_MEDIA_TYPE,\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\nexport const ModelProjectImmutableRefSchema = z\n .object({\n id: IdSchema,\n contentHash: HashSchema,\n })\n .strict();\n\nexport const ModelProjectVersionedRefSchema =\n ModelProjectImmutableRefSchema.extend({\n revision: z.number().int().positive(),\n }).strict();\n\nexport const ModelProjectBaseModelSchema = z\n .object({\n schemaVersion: z.literal(\"openpond.baseModelPreference.v1\"),\n modelId: IdSchema,\n revision: z.string().trim().min(1).max(256).nullable(),\n tokenizerRevision: z.string().trim().min(1).max(256).nullable(),\n chatTemplateHash: z.string().trim().min(8).max(256).nullable(),\n modelAssetId: IdSchema.nullable(),\n source: z.enum([\"managed\", \"local\", \"builtin\"]),\n })\n .strict();\n\nexport const ModelProjectTrainingMethodSchema = z.enum([\n \"sft\",\n \"dpo\",\n \"grpo\",\n \"ppo\",\n \"sdft\",\n \"opd\",\n \"opsd\",\n \"sdpo\",\n]);\n\n/**\n * A versioned recipe document stored while a Project is still mutable.\n * The training endpoint validates the selected recipe version in full before\n * accepting an immutable Job; Project sync preserves newer recipe fields.\n */\nexport const ModelProjectRecipeDocumentSchema = z\n .object({\n schemaVersion: z.string().regex(/^openpond\\.[A-Za-z0-9]+Recipe\\.v\\d+$/),\n method: ModelProjectTrainingMethodSchema,\n parameterization: z.enum([\"lora\", \"full\"]),\n })\n .catchall(z.unknown());\n\n/** The published Profile source selected for this Model's Harness. */\nexport const ModelProfileSourceSelectionSchema = z.object({\n profileProjectId: IdSchema,\n sourceRevision: z.string().regex(/^[a-f0-9]{40,64}$/),\n harnessRelease: ModelProjectImmutableRefSchema,\n}).strict();\n\n/** A held-out check selected from an exact released Profile catalog. Its\n * Taskset and grader stay in the evaluation runtime, outside training input. */\nexport const ModelProfileEvaluationSelectionSchema = z.object({\n profileProjectId: IdSchema,\n sourceRevision: z.string().regex(/^[a-f0-9]{40,64}$/),\n catalogHash: HashSchema,\n definitionId: IdSchema,\n harnessRelease: ModelProjectImmutableRefSchema,\n tasksetRelease: ModelProjectImmutableRefSchema,\n}).strict();\n\nexport const ModelProjectTrainingSetupSchema = z\n .object({\n tasksetRef: ModelProjectVersionedRefSchema.nullable().default(null),\n evaluationTasksetRef: ModelProjectVersionedRefSchema.nullable().optional(),\n profileSource: ModelProfileSourceSelectionSchema.nullable().optional(),\n profileEvaluation: ModelProfileEvaluationSelectionSchema.nullable().optional(),\n rewardBindingRef: ModelProjectVersionedRefSchema.nullable().optional(),\n tasksetRelease: ModelProjectImmutableRefSchema.nullable().default(null),\n harnessRelease: ModelProjectImmutableRefSchema.nullable().default(null),\n baseModel: ModelProjectBaseModelSchema.nullable().default(null),\n method: ModelProjectTrainingMethodSchema.nullable().default(null),\n destinationId: IdSchema.nullable().default(null),\n managedRolloutPlacement: z\n .enum([\"local\", \"remote\"])\n .default(\"remote\"),\n managedGpuPlacementObjective: z\n .enum([\"fast\", \"balanced\", \"economical\"])\n .default(\"balanced\"),\n managedGpuSelection: TrainingGpuSelectionSchema.optional(),\n continuationAdapterMode: z.enum([\"residual_append\", \"shared\", \"sequential_merge\"]).optional(),\n managedGpuRequirement: z\n .enum([\"any\", \"h100_hbm3\"])\n .default(\"any\"),\n runPreset: z\n .enum([\"small\", \"standard\", \"custom\", \"small_experiment\"])\n .nullable()\n .default(null),\n recipe: ModelProjectRecipeDocumentSchema.nullable().default(null),\n preferredMaximumSpendUsd: z.number().nonnegative().nullable().default(null),\n preferredRetentionDays: z\n .number()\n .int()\n .nonnegative()\n .nullable()\n .default(null),\n })\n .strict();\n\nexport const HostedModelProjectTrainingSetupSchema =\n ModelProjectTrainingSetupSchema;\n\nexport const HostedModelProjectLinkSchema = z\n .object({\n schemaVersion: z.literal(\"openpond.hostedModelProjectLink.v1\"),\n apiOrigin: z.string().url().refine(value => new URL(value).origin === value, \"Use a canonical API origin.\").nullable().default(null),\n teamId: IdSchema,\n projectId: IdSchema,\n portableProjectId: IdSchema,\n revision: z.number().int().positive(),\n etag: HashSchema,\n syncedSourceRevision: z.number().int().positive(),\n syncedAt: TimestampSchema,\n tasksets: z\n .array(\n z\n .object({\n localTasksetId: IdSchema,\n localTasksetHash: HashSchema.nullable().default(null),\n releaseId: IdSchema,\n releaseRevision: z.number().int().positive(),\n releaseHash: HashSchema,\n packageHash: HashSchema.nullable().default(null),\n hostedTasksetId: IdSchema,\n syncedAt: TimestampSchema,\n })\n .strict(),\n )\n .max(10_000)\n .default([]),\n })\n .strict();\n\nexport const ModelProjectTasksetSyncSchema = z\n .object({\n localTasksetId: IdSchema,\n releaseId: IdSchema,\n releaseRevision: z.number().int().positive(),\n releaseHash: HashSchema,\n state: z.enum([\"syncing\", \"synced\", \"sync_failed\"]),\n hostedTasksetId: IdSchema.nullable().default(null),\n lastAttemptAt: TimestampSchema,\n syncedAt: TimestampSchema.nullable().default(null),\n lastError: z.string().trim().min(1).max(5_000).nullable().default(null),\n })\n .strict();\n\nexport const ModelProjectSchema = z\n .object({\n schemaVersion: z.literal(\"openpond.modelProject.v2\"),\n id: IdSchema,\n profileId: IdSchema,\n revision: z.number().int().positive().default(1),\n name: z.string().trim().min(1).max(200),\n objective: z.string().trim().max(5_000).nullable(),\n defaultBaseModel: ModelProjectBaseModelSchema.nullable(),\n defaultDestinationId: IdSchema.nullable(),\n trainingSetup: ModelProjectTrainingSetupSchema,\n hosted: HostedModelProjectLinkSchema.nullable().default(null),\n tasksetSyncs: z\n .array(ModelProjectTasksetSyncSchema)\n .max(10_000)\n .default([]),\n createdAt: TimestampSchema,\n updatedAt: TimestampSchema,\n })\n .strict();\n\n/** User-editable configuration. Execution and hosting receipts are server-owned. */\nexport const ModelProjectEditableSchema = ModelProjectSchema.pick({\n id: true,\n profileId: true,\n name: true,\n objective: true,\n defaultBaseModel: true,\n defaultDestinationId: true,\n trainingSetup: true,\n});\n\n/** Zero creates a new Model; a positive revision updates that exact revision. */\nexport const ModelProjectSaveRequestSchema = z.object({\n schemaVersion: z.literal(\"openpond.modelProjectSave.v1\"),\n operationId: IdSchema,\n expectedRevision: z.number().int().nonnegative(),\n project: ModelProjectEditableSchema,\n learning: ModelInitialLearningSchema.optional(),\n}).strict().superRefine((value, context) => {\n if (value.learning && value.expectedRevision !== 0) context.addIssue({ code: \"custom\", path: [\"learning\"], message: \"Use learning settings to edit an existing Model's policy.\" });\n});\n\nexport type ModelProjectSaveRequest = z.infer<typeof ModelProjectSaveRequestSchema>;\n\n/** A read-only configuration check; it does not establish training or grader quality. */\nexport const ModelProjectConfigurationCheckSchema = z.object({\n schemaVersion: z.literal(\"openpond.modelProjectConfigurationCheck.v1\"),\n configurationHash: HashSchema,\n projectId: IdSchema,\n expectedRevision: z.number().int().nonnegative(),\n checkedAt: TimestampSchema,\n canSave: z.boolean(),\n deferred: z.array(z.enum([\"base_model\", \"taskset\"])).max(2),\n findings: z.array(z.object({\n code: IdSchema,\n severity: z.enum([\"error\", \"warning\"]),\n message: z.string().min(1).max(5000),\n field: z.string().min(1).max(500).nullable(),\n }).strict()).max(100),\n}).strict();\n\nexport type ModelProjectConfigurationCheck = z.infer<typeof ModelProjectConfigurationCheckSchema>;\n\nexport const ModelProjectBaseModelCandidateSchema = z.object({\n id: IdSchema, name: z.string().min(1).max(500), available: z.boolean(), preference: ModelProjectBaseModelSchema,\n}).strict();\n\nexport async function modelProjectConfigurationHash(request: ModelProjectSaveRequest): Promise<string> {\n const parsed = parseModelProjectSaveRequest(request);\n return canonicalSha256({ project: parsed.project, expectedRevision: parsed.expectedRevision, ...(parsed.learning ? { learning: parsed.learning } : {}) });\n}\n\nexport function parseModelProjectSaveRequest(value: unknown): ModelProjectSaveRequest {\n try {\n assertBoundedTaskJson(value, MODEL_PROJECT_SYNC_MAX_BYTES);\n } catch {\n throw new OpenPondModelProjectApiError(400, {\n schemaVersion: \"openpond.modelProjectApiError.v2\", code: \"model_configuration_json_invalid\",\n message: \"Model configuration must be bounded JSON data.\", retryable: false, requestId: null, details: {},\n });\n }\n return ModelProjectSaveRequestSchema.parse(value);\n}\n\n/** Stable across transport retries; excludes server-owned revision/timestamps. */\nexport async function createModelProjectSaveRequest(\n project: z.input<typeof ModelProjectEditableSchema>,\n expectedRevision: number,\n learning?: ModelInitialLearning,\n): Promise<ModelProjectSaveRequest> {\n assertBoundedTaskJson(project, MODEL_PROJECT_SYNC_MAX_BYTES);\n const editable = ModelProjectEditableSchema.parse(project);\n assertCanonicalPayloadSize(editable, MODEL_PROJECT_SYNC_MAX_BYTES, \"Model configuration\");\n const initialLearning = learning ? ModelInitialLearningSchema.parse(learning) : undefined;\n const hash = await canonicalSha256({ project: editable, expectedRevision, ...(initialLearning ? { learning: initialLearning } : {}) });\n return parseModelProjectSaveRequest({\n schemaVersion: \"openpond.modelProjectSave.v1\",\n operationId: `model-save:${hash}`,\n expectedRevision,\n project: editable,\n ...(initialLearning ? { learning: initialLearning } : {}),\n });\n}\n\nexport const HostedModelProjectSyncSchema = z\n .object({\n schemaVersion: z.literal(\"openpond.hostedModelProjectSync.v2\"),\n portableProjectId: IdSchema,\n name: z.string().trim().min(1).max(200),\n objective: z.string().trim().max(5_000).nullable(),\n defaultBaseModel: ModelProjectBaseModelSchema.nullable(),\n defaultDestinationId: IdSchema.nullable(),\n trainingSetup: HostedModelProjectTrainingSetupSchema,\n sourceRevision: z.number().int().positive(),\n sourceUpdatedAt: TimestampSchema,\n expectedEtag: HashSchema.nullable().default(null),\n })\n .strict();\n\nexport const HostedModelProjectSummarySchema = z\n .object({\n id: IdSchema,\n teamId: IdSchema,\n portableProjectId: IdSchema,\n name: z.string().trim().min(1).max(200),\n objective: z.string().trim().max(5_000).nullable(),\n defaultBaseModel: ModelProjectBaseModelSchema.nullable(),\n defaultDestinationId: IdSchema.nullable(),\n trainingSetup: HostedModelProjectTrainingSetupSchema,\n sourceRevision: z.number().int().positive(),\n sourceUpdatedAt: TimestampSchema,\n revision: z.number().int().positive(),\n etag: HashSchema,\n createdAt: TimestampSchema,\n updatedAt: TimestampSchema,\n })\n .strict();\n\nexport const ModelProjectResourceSummarySchema = z\n .object({\n kind: z.enum([\n \"taskset_release\",\n \"harness_release\",\n \"dataset_release\",\n \"evidence_set\",\n \"model_version\",\n \"reward_model_version\",\n \"evaluation_receipt\",\n ]),\n ref: ModelProjectImmutableRefSchema,\n role: z.string().trim().min(1).max(200).nullable().default(null),\n updatedAt: TimestampSchema,\n })\n .strict();\n\nexport const HostedModelProjectDetailSchema = z\n .object({\n project: HostedModelProjectSummarySchema,\n resources: z.array(ModelProjectResourceSummarySchema).max(10_000),\n jobCount: z.number().int().nonnegative(),\n latestJobIds: z.array(IdSchema).max(100),\n })\n .strict();\n\nexport const ModelProjectApiErrorSchema = z\n .object({\n schemaVersion: z.literal(\"openpond.modelProjectApiError.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 OpenPondModelProjectApiError 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 ModelProjectApiErrorSchema>) {\n super(error.message);\n this.name = \"OpenPondModelProjectApiError\";\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 type ModelProject = z.infer<typeof ModelProjectSchema>;\nexport type ModelProjectTrainingSetup = z.infer<\n typeof ModelProjectTrainingSetupSchema\n>;\nexport type HostedModelProjectSync = z.infer<\n typeof HostedModelProjectSyncSchema\n>;\nexport type HostedModelProjectSummary = z.infer<\n typeof HostedModelProjectSummarySchema\n>;\nexport type HostedModelProjectDetail = z.infer<\n typeof HostedModelProjectDetailSchema\n>;\n\ntype ModelProjectsFetch = typeof fetch;\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 createModelProjectsClient(input: {\n baseUrl?: string;\n fetch?: ModelProjectsFetch;\n headers?: HeadersInit | (() => HeadersInit | Promise<HeadersInit>);\n}) {\n const fetchImpl = input.fetch ?? fetch;\n const baseUrl = (input.baseUrl ?? DEFAULT_API_BASE_URL).replace(/\\/$/, \"\");\n\n async function request(pathname: string, init?: RequestInit): Promise<unknown> {\n const configuredHeaders =\n typeof input.headers === \"function\"\n ? await input.headers()\n : (input.headers ?? {});\n const response = await fetchImpl(`${baseUrl}${pathname}`, {\n ...init,\n headers: {\n accept: OPENPOND_MODEL_PROJECT_MEDIA_TYPE,\n ...(init?.body\n ? { \"content-type\": OPENPOND_MODEL_PROJECT_MEDIA_TYPE }\n : {}),\n ...headersRecord(configuredHeaders),\n ...headersRecord(init?.headers),\n },\n });\n const body = await readBoundedJsonResponse(\n response,\n MODEL_PROJECT_API_RESPONSE_MAX_BYTES,\n \"Model Project API response\",\n );\n if (!response.ok) {\n const parsed = ModelProjectApiErrorSchema.safeParse(body);\n if (parsed.success) {\n throw new OpenPondModelProjectApiError(response.status, parsed.data);\n }\n throw new OpenPondProtocolError(\n \"invalid_error_response\",\n `Model Project request failed with HTTP ${response.status} and an invalid error envelope.`,\n );\n }\n return body;\n }\n\n return {\n async configurationCandidates() {\n return z.object({ candidates: z.array(ModelProjectBaseModelCandidateSchema).max(1000) }).strict().parse(\n await request(\"/v1/model-projects/configuration/candidates\", { headers: { accept: \"application/json\" } }),\n ).candidates;\n },\n async checkConfiguration(value: ModelProjectSaveRequest) {\n const parsed = parseModelProjectSaveRequest(value);\n return ModelProjectConfigurationCheckSchema.parse(await request(\"/v1/model-projects/configuration/check\", {\n method: \"POST\", headers: { accept: \"application/json\", \"content-type\": \"application/json\" }, body: JSON.stringify(parsed),\n }));\n },\n async saveConfiguration(value: ModelProjectSaveRequest) {\n const parsed = parseModelProjectSaveRequest(value);\n return HostedModelProjectSummarySchema.parse(await request(\"/v1/model-projects/configuration/save\", {\n method: \"POST\", headers: { accept: \"application/json\", \"content-type\": \"application/json\" }, body: JSON.stringify(parsed),\n }));\n },\n async upsert(project: HostedModelProjectSync) {\n assertCanonicalPayloadSize(\n project,\n MODEL_PROJECT_SYNC_MAX_BYTES,\n \"Model Project sync\",\n );\n const parsed = HostedModelProjectSyncSchema.parse(project);\n const body = await request(\n `/v1/model-projects/${encodeURIComponent(parsed.portableProjectId)}`,\n { method: \"PUT\", body: JSON.stringify(parsed) },\n );\n return HostedModelProjectSummarySchema.parse(\n unwrapObject(body, \"project\"),\n );\n },\n async list() {\n const body = await request(\"/v1/model-projects\");\n return z\n .array(HostedModelProjectSummarySchema)\n .parse(unwrapObject(body, \"projects\"));\n },\n async get(projectId: string) {\n const body = await request(\n `/v1/model-projects/${encodeURIComponent(IdSchema.parse(projectId))}`,\n );\n return HostedModelProjectDetailSchema.parse(body);\n },\n };\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","import { z } from \"zod\";\nimport { canonicalJson, canonicalSha256, OpenPondProtocolError } from \"./protocol.js\";\n\nconst Id = z.string().trim().min(1).max(191);\nconst Hash = z.string().regex(/^[a-f0-9]{64}$/);\nconst OpaqueProvider = z.string().min(1).max(191).regex(/^[A-Za-z0-9][A-Za-z0-9._:/-]*$/);\n\nexport const TrainingGpuSelectionSchema = z.discriminatedUnion(\"mode\", [\n z.object({ mode: z.literal(\"automatic\"), objective: z.enum([\"balanced\", \"fast\", \"economical\"]), gpuCount: z.union([z.literal(1), z.literal(2)]).optional() }).strict(),\n z.object({ mode: z.literal(\"manual\"), availabilityId: Id, gpuType: z.string().trim().min(1).max(256), gpuCount: z.union([z.literal(1), z.literal(2)]).optional() }).strict(),\n]);\n\n/** This token binds a reviewed workload and price, without reserving resources\n * or approving the estimate's recommended budget. */\nexport const TrainingEstimateReviewSchema = z.object({\n estimateId: Id,\n inputHash: Hash,\n requestHash: Hash,\n pricingVersion: Id,\n expiresAt: z.string().datetime({ offset: true }),\n token: z.string().min(1).max(8192),\n}).strict();\n\nexport type TrainingGpuSelection = z.infer<typeof TrainingGpuSelectionSchema>;\nexport type TrainingEstimateReview = z.infer<typeof TrainingEstimateReviewSchema>;\n\n/** A live catalog query is an eligibility read, never a training approval. */\nexport const TrainingGpuCatalogQuerySchema = z.object({\n teamId: Id,\n modelId: z.string().trim().min(1).max(256),\n modelRevision: z.string().trim().min(1).max(256),\n tokenizerRevision: z.string().trim().min(1).max(256),\n chatTemplateHash: Hash,\n method: z.enum([\"sft\", \"grpo\"]),\n loraRank: z.number().int().min(1).max(256),\n gpuCount: z.union([z.literal(1), z.literal(2)]),\n}).strict();\nexport type TrainingGpuCatalogQuery = z.infer<typeof TrainingGpuCatalogQuerySchema>;\n\nexport const TrainingGpuCatalogScopeSchema = z.object({\n query: TrainingGpuCatalogQuerySchema,\n requestHash: Hash,\n qualification: z.enum([\"requires_preparation\", \"unsupported\"]),\n reason: z.enum([\"model_not_supported\", \"lora_rank_not_supported\", \"gpu_count_not_qualified\", \"provider_not_supported\"]).nullable(),\n provider: z.object({\n accountScopeId: Id,\n product: z.literal(\"POD\"), cloud: z.literal(\"SECURE\"),\n countryCodes: z.array(z.string().regex(/^[A-Z]{2}$/)).min(1).max(300),\n cudaVersions: z.array(z.string().regex(/^\\d+\\.\\d+$/)).min(1).max(100),\n dataCenterId: Id.nullable(),\n minimumDiskGb: z.number().int().positive(),\n }).strict().nullable(),\n}).strict();\nexport type TrainingGpuCatalogScope = z.infer<typeof TrainingGpuCatalogScopeSchema>;\n\nexport const TrainingGpuCatalogSchema = z.object({\n schemaVersion: z.literal(\"openpond.trainingGpuCatalog.v1\"),\n observedAt: z.string().datetime({ offset: true }),\n expiresAt: z.string().datetime({ offset: true }),\n workerImageDigest: z.string().regex(/^sha256:[a-f0-9]{64}$/),\n supportedLoraRanks: z.array(z.number().int().positive()),\n pricingBasis: z.literal(\"retail_allocation_hourly_before_credits\"),\n scope: TrainingGpuCatalogScopeSchema.optional(),\n offerings: z.array(z.object({\n availabilityId: Id, gpuType: z.string().min(1).max(256), provider: OpaqueProvider,\n region: z.string().min(1), dataCenterId: z.string().nullable(),\n gpuCount: z.number().int().positive(), gpuMemoryGb: z.number().positive(),\n stockStatus: z.enum([\"High\", \"Medium\", \"Low\"]),\n /** Whole-allocation retail rate, including attached disk. Null means unpriced. */\n hourlyUsd: z.number().finite().nonnegative().nullable(),\n }).strict()).max(1000),\n}).strict();\nexport type TrainingGpuCatalog = z.infer<typeof TrainingGpuCatalogSchema>;\n\nexport async function parseAndVerifyTrainingGpuCatalog(raw: unknown, query?: TrainingGpuCatalogQuery) {\n const catalog = TrainingGpuCatalogSchema.parse(raw);\n if (Date.parse(catalog.expiresAt) <= Date.parse(catalog.observedAt) ||\n Date.parse(catalog.expiresAt) <= Date.now())\n throw new OpenPondProtocolError(\"training_gpu_catalog_expired\", \"Refresh GPU availability before reviewing this run.\");\n if (!query) {\n if (catalog.scope) throw new OpenPondProtocolError(\"training_gpu_catalog_scope_mismatch\", \"An overview read returned an unrequested workload.\");\n return catalog;\n }\n const scope = catalog.scope;\n if (!scope ||\n canonicalJson(scope.query) !== canonicalJson(query) ||\n scope.requestHash !== await canonicalSha256(query) ||\n (scope.qualification === \"unsupported\") !== (scope.reason !== null) ||\n (scope.qualification === \"unsupported\" ? scope.provider !== null || catalog.offerings.length > 0 : !scope.provider) ||\n new Set(catalog.offerings.map(item => item.provider)).size > 1 ||\n catalog.offerings.some(item => item.gpuCount !== query.gpuCount ||\n item.dataCenterId !== scope.provider?.dataCenterId) ||\n new Set(catalog.offerings.map(item => item.availabilityId)).size !== catalog.offerings.length)\n throw new OpenPondProtocolError(\"training_gpu_catalog_scope_mismatch\", \"The GPU offers do not match this workspace and workload.\");\n return catalog;\n}\n\nexport function createTrainingGpuCatalogClient(request: (path: string, init?: RequestInit) => Promise<unknown>) {\n return {\n async gpuCatalog(raw?: TrainingGpuCatalogQuery) {\n const query = raw === undefined ? undefined : TrainingGpuCatalogQuerySchema.parse(raw);\n const params = query ? new URLSearchParams(Object.entries(query).map(([key, value]) => [key, String(value)])) : null;\n const response = await request(`/v1/training/gpu-catalog${params ? `?${params}` : \"\"}`);\n const value = response && typeof response === \"object\" && \"catalog\" in response ? response.catalog : response;\n return parseAndVerifyTrainingGpuCatalog(value, query);\n },\n };\n}\n"],"mappings":"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","names":["z","value","z"]}
@@ -3,7 +3,7 @@ import {
3
3
  TasksetPackageSchema,
4
4
  tasksetPackageRewardBinding,
5
5
  validateTasksetPackage
6
- } from "./chunk-AQV7RQZH.js";
6
+ } from "./chunk-K4WU4JOP.js";
7
7
  import {
8
8
  TasksetCatalogReleaseRefSchema
9
9
  } from "./chunk-VE5JD5FN.js";
@@ -11,7 +11,7 @@ import {
11
11
  HostedModelProjectSummarySchema,
12
12
  HostedModelProjectSyncSchema,
13
13
  HostedModelProjectTrainingSetupSchema
14
- } from "./chunk-H5KHLBC5.js";
14
+ } from "./chunk-WJZHSIGD.js";
15
15
  import {
16
16
  contentHash
17
17
  } from "./chunk-H3JZ3P5T.js";
@@ -191,4 +191,4 @@ export {
191
191
  OpenPondTasksetPackageError,
192
192
  OpenPondTasksetPackageClient
193
193
  };
194
- //# sourceMappingURL=chunk-HCUZYGUK.js.map
194
+ //# sourceMappingURL=chunk-WPTFJZ4L.js.map
@@ -31,7 +31,7 @@ import {
31
31
  hashCollectorEligibleBoundaries,
32
32
  summarizeCollectorCoverage,
33
33
  verifyConnectedRecordedExecution
34
- } from "./chunk-6LVLWRBJ.js";
34
+ } from "./chunk-54BJJL7G.js";
35
35
  import "./chunk-O6FKHAWN.js";
36
36
  import {
37
37
  AgentImportCommitRequestSchema,
@@ -49,19 +49,19 @@ import {
49
49
  ConnectedStartingAssetsReceiptSchema,
50
50
  ConnectedStartingAssetsRequestSchema,
51
51
  verifyConnectedStartingAssetsReceipt
52
- } from "./chunk-57ROW3XF.js";
53
- import "./chunk-3BILL33A.js";
54
- import "./chunk-JINWKUKR.js";
52
+ } from "./chunk-ABOZV47D.js";
53
+ import "./chunk-BIQ5TG3T.js";
54
+ import "./chunk-BT6CC6QB.js";
55
55
  import "./chunk-GWXJSBWR.js";
56
- import "./chunk-4A4FNG4R.js";
56
+ import "./chunk-7ZV626YS.js";
57
57
  import {
58
58
  ConnectedDatasetSourceRefSchema
59
- } from "./chunk-AQV7RQZH.js";
59
+ } from "./chunk-K4WU4JOP.js";
60
60
  import "./chunk-TK3DXH7A.js";
61
61
  import "./chunk-VE5JD5FN.js";
62
62
  import "./chunk-QTNYXOJW.js";
63
63
  import "./chunk-H3367ISL.js";
64
- import "./chunk-H5KHLBC5.js";
64
+ import "./chunk-WJZHSIGD.js";
65
65
  import "./chunk-CL3IOOVL.js";
66
66
  import "./chunk-B3ZHJ2KK.js";
67
67
  import "./chunk-H3JZ3P5T.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  TaskDesignProposalSchema
3
- } from "./chunk-P56JWQYV.js";
3
+ } from "./chunk-LRFVISLA.js";
4
4
  import {
5
5
  DatasetTaskAppendReceiptSchema,
6
6
  DatasetTaskAppendRequestSchema,
@@ -20,28 +20,28 @@ import {
20
20
  DatasetWorkspaceValidationSchema,
21
21
  DatasetWorkspaceVersionsSchema,
22
22
  DatasetWorkspaceWriteSchema
23
- } from "./chunk-57ROW3XF.js";
23
+ } from "./chunk-ABOZV47D.js";
24
24
  import {
25
25
  compileTasksetDraftWorkspace
26
- } from "./chunk-3BILL33A.js";
26
+ } from "./chunk-BIQ5TG3T.js";
27
27
  import {
28
28
  createTasksetDraftFile,
29
29
  createTasksetDraftWorkspace,
30
30
  decodeTasksetDraftFileContent,
31
31
  decodeTasksetDraftWorkspaceFile,
32
32
  validateTasksetDraftWorkspace
33
- } from "./chunk-JINWKUKR.js";
33
+ } from "./chunk-BT6CC6QB.js";
34
34
  import "./chunk-GWXJSBWR.js";
35
35
  import {
36
36
  TasksetDraftSchema,
37
37
  createTasksetDraft
38
- } from "./chunk-4A4FNG4R.js";
38
+ } from "./chunk-7ZV626YS.js";
39
39
  import {
40
40
  TaskDataRecordSchema,
41
41
  TaskRequiredOutputSchema,
42
42
  TasksetEnvironmentContractSchema,
43
43
  TasksetSourceRefSchema
44
- } from "./chunk-AQV7RQZH.js";
44
+ } from "./chunk-K4WU4JOP.js";
45
45
  import "./chunk-TK3DXH7A.js";
46
46
  import {
47
47
  TasksetCatalogReleaseRefSchema
@@ -50,10 +50,10 @@ import "./chunk-QTNYXOJW.js";
50
50
  import "./chunk-H3367ISL.js";
51
51
  import {
52
52
  ExperimentGraderPinSchema
53
- } from "./chunk-4REK5TTE.js";
54
- import "./chunk-XWUTYFOU.js";
55
- import "./chunk-CAOMKM55.js";
56
- import "./chunk-H5KHLBC5.js";
53
+ } from "./chunk-4D4QSQC3.js";
54
+ import "./chunk-5KJY44FB.js";
55
+ import "./chunk-L7MVGGBH.js";
56
+ import "./chunk-WJZHSIGD.js";
57
57
  import "./chunk-CL3IOOVL.js";
58
58
  import {
59
59
  readBoundedJsonResponse
package/dist/errors.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  OpenPondTrainingApiError
3
- } from "./chunk-QKLZZOZD.js";
3
+ } from "./chunk-7MLFWVDI.js";
4
4
  import {
5
5
  OpenPondLearningError
6
6
  } from "./chunk-U2KGUAIS.js";
@@ -8,30 +8,30 @@ import {
8
8
  scheduledExperimentHash,
9
9
  sealExperimentEvaluationSchedule,
10
10
  verifyExperimentEvaluationSchedule
11
- } from "./chunk-WZKKQNYY.js";
11
+ } from "./chunk-GA7OSSEA.js";
12
12
  import "./chunk-456F3BXD.js";
13
- import "./chunk-MN4FE52A.js";
14
- import "./chunk-4CRLQMJ2.js";
15
- import "./chunk-HCUZYGUK.js";
16
- import "./chunk-PMVSO23F.js";
13
+ import "./chunk-VRUAIMM3.js";
14
+ import "./chunk-VIDRZCPQ.js";
15
+ import "./chunk-WPTFJZ4L.js";
16
+ import "./chunk-RMXZISHK.js";
17
17
  import "./chunk-GPQLBVQC.js";
18
- import "./chunk-EL6KZO43.js";
19
- import "./chunk-JWEIAEQ6.js";
18
+ import "./chunk-GFWXDWEE.js";
19
+ import "./chunk-TMNEDWA7.js";
20
20
  import "./chunk-O6FKHAWN.js";
21
- import "./chunk-3BILL33A.js";
22
- import "./chunk-JINWKUKR.js";
21
+ import "./chunk-BIQ5TG3T.js";
22
+ import "./chunk-BT6CC6QB.js";
23
23
  import "./chunk-GWXJSBWR.js";
24
- import "./chunk-4A4FNG4R.js";
25
- import "./chunk-AQV7RQZH.js";
24
+ import "./chunk-7ZV626YS.js";
25
+ import "./chunk-K4WU4JOP.js";
26
26
  import "./chunk-TK3DXH7A.js";
27
27
  import "./chunk-VE5JD5FN.js";
28
28
  import "./chunk-QTNYXOJW.js";
29
29
  import "./chunk-H3367ISL.js";
30
- import "./chunk-2U6BQ5C4.js";
31
- import "./chunk-4REK5TTE.js";
32
- import "./chunk-XWUTYFOU.js";
33
- import "./chunk-CAOMKM55.js";
34
- import "./chunk-H5KHLBC5.js";
30
+ import "./chunk-MJHQMQEW.js";
31
+ import "./chunk-4D4QSQC3.js";
32
+ import "./chunk-5KJY44FB.js";
33
+ import "./chunk-L7MVGGBH.js";
34
+ import "./chunk-WJZHSIGD.js";
35
35
  import "./chunk-CL3IOOVL.js";
36
36
  import "./chunk-B3ZHJ2KK.js";
37
37
  import "./chunk-H3JZ3P5T.js";
@@ -5,7 +5,7 @@ import {
5
5
  HostedProfileCandidateReceiptSchema,
6
6
  verifyHostedProfileCandidateExport,
7
7
  verifyHostedProfileCandidateReceipt
8
- } from "./chunk-4PEK3YOW.js";
8
+ } from "./chunk-CNFN6GHY.js";
9
9
  import "./chunk-774OWTCD.js";
10
10
  import {
11
11
  ExperimentImprovementCommandSchema,
@@ -20,14 +20,14 @@ import {
20
20
  sealExperimentImprovementState,
21
21
  verifyExperimentImprovementHumanOptions,
22
22
  verifyExperimentImprovementState
23
- } from "./chunk-D26RJQU7.js";
24
- import "./chunk-JWEIAEQ6.js";
23
+ } from "./chunk-CX7ETU2F.js";
24
+ import "./chunk-TMNEDWA7.js";
25
25
  import "./chunk-O6FKHAWN.js";
26
26
  import "./chunk-QTNYXOJW.js";
27
- import "./chunk-4REK5TTE.js";
28
- import "./chunk-XWUTYFOU.js";
29
- import "./chunk-CAOMKM55.js";
30
- import "./chunk-H5KHLBC5.js";
27
+ import "./chunk-4D4QSQC3.js";
28
+ import "./chunk-5KJY44FB.js";
29
+ import "./chunk-L7MVGGBH.js";
30
+ import "./chunk-WJZHSIGD.js";
31
31
  import "./chunk-CL3IOOVL.js";
32
32
  import "./chunk-B3ZHJ2KK.js";
33
33
  import "./chunk-H3JZ3P5T.js";
@@ -27,30 +27,30 @@ import {
27
27
  verifyExperimentRunDetails,
28
28
  verifyExternalDatasetPackage,
29
29
  verifyRunDiagnostics
30
- } from "./chunk-MN4FE52A.js";
31
- import "./chunk-4CRLQMJ2.js";
32
- import "./chunk-HCUZYGUK.js";
33
- import "./chunk-PMVSO23F.js";
30
+ } from "./chunk-VRUAIMM3.js";
31
+ import "./chunk-VIDRZCPQ.js";
32
+ import "./chunk-WPTFJZ4L.js";
33
+ import "./chunk-RMXZISHK.js";
34
34
  import "./chunk-GPQLBVQC.js";
35
- import "./chunk-EL6KZO43.js";
35
+ import "./chunk-GFWXDWEE.js";
36
36
  import {
37
37
  ExperimentScoringPassSchema,
38
38
  ExperimentScoringRequestSchema,
39
39
  verifyExperimentScoringPass
40
- } from "./chunk-JWEIAEQ6.js";
40
+ } from "./chunk-TMNEDWA7.js";
41
41
  import "./chunk-O6FKHAWN.js";
42
- import "./chunk-3BILL33A.js";
43
- import "./chunk-JINWKUKR.js";
42
+ import "./chunk-BIQ5TG3T.js";
43
+ import "./chunk-BT6CC6QB.js";
44
44
  import "./chunk-GWXJSBWR.js";
45
- import "./chunk-4A4FNG4R.js";
46
- import "./chunk-AQV7RQZH.js";
45
+ import "./chunk-7ZV626YS.js";
46
+ import "./chunk-K4WU4JOP.js";
47
47
  import "./chunk-TK3DXH7A.js";
48
48
  import "./chunk-VE5JD5FN.js";
49
49
  import "./chunk-QTNYXOJW.js";
50
50
  import "./chunk-H3367ISL.js";
51
51
  import {
52
52
  RunExperimentSchema
53
- } from "./chunk-2U6BQ5C4.js";
53
+ } from "./chunk-MJHQMQEW.js";
54
54
  import {
55
55
  ExperimentDefinitionRefSchema,
56
56
  ExperimentDefinitionSchema,
@@ -67,20 +67,20 @@ import {
67
67
  experimentDefinitionRef,
68
68
  mapExperimentGradingFields,
69
69
  verifyExperimentDefinition
70
- } from "./chunk-4REK5TTE.js";
70
+ } from "./chunk-4D4QSQC3.js";
71
71
  import {
72
72
  HarnessExperimentPolicySchema,
73
73
  HarnessExperimentSamplingSchema,
74
74
  resolveHarnessExperimentSampling
75
- } from "./chunk-XWUTYFOU.js";
75
+ } from "./chunk-5KJY44FB.js";
76
76
  import {
77
77
  ClaudeCodeControlSchema,
78
78
  ClaudeCodeRuntimeSchema,
79
79
  ClaudeProcessEvidenceSchema,
80
80
  CodexExperimentRuntimeSchema,
81
81
  ExperimentAttemptGradeSchema
82
- } from "./chunk-CAOMKM55.js";
83
- import "./chunk-H5KHLBC5.js";
82
+ } from "./chunk-L7MVGGBH.js";
83
+ import "./chunk-WJZHSIGD.js";
84
84
  import "./chunk-CL3IOOVL.js";
85
85
  import "./chunk-B3ZHJ2KK.js";
86
86
  import "./chunk-H3JZ3P5T.js";
package/dist/index.js CHANGED
@@ -38,7 +38,7 @@ import {
38
38
  HostedProfileCandidateReceiptSchema,
39
39
  verifyHostedProfileCandidateExport,
40
40
  verifyHostedProfileCandidateReceipt
41
- } from "./chunk-4PEK3YOW.js";
41
+ } from "./chunk-CNFN6GHY.js";
42
42
  import "./chunk-774OWTCD.js";
43
43
  import {
44
44
  ExperimentEvaluationFireSchema,
@@ -50,7 +50,7 @@ import {
50
50
  scheduledExperimentHash,
51
51
  sealExperimentEvaluationSchedule,
52
52
  verifyExperimentEvaluationSchedule
53
- } from "./chunk-WZKKQNYY.js";
53
+ } from "./chunk-GA7OSSEA.js";
54
54
  import {
55
55
  AdvancedRefinerEvaluationAccountingSchema,
56
56
  AdvancedRefinerEvaluationCommandSchema,
@@ -65,7 +65,7 @@ import {
65
65
  sealAdvancedRefinerEvaluationPin,
66
66
  sealAdvancedRefinerReviewReceipt,
67
67
  verifyAdvancedRefinerEvaluationPin
68
- } from "./chunk-X5AT253K.js";
68
+ } from "./chunk-CVYGJUWM.js";
69
69
  import {
70
70
  ExperimentImprovementCommandSchema,
71
71
  ExperimentImprovementHumanOptionsSchema,
@@ -79,17 +79,17 @@ import {
79
79
  sealExperimentImprovementState,
80
80
  verifyExperimentImprovementHumanOptions,
81
81
  verifyExperimentImprovementState
82
- } from "./chunk-D26RJQU7.js";
82
+ } from "./chunk-CX7ETU2F.js";
83
83
  import "./chunk-456F3BXD.js";
84
84
  import {
85
85
  OpenPondExperimentsClient
86
- } from "./chunk-MN4FE52A.js";
87
- import "./chunk-4CRLQMJ2.js";
88
- import "./chunk-HCUZYGUK.js";
89
- import "./chunk-PMVSO23F.js";
86
+ } from "./chunk-VRUAIMM3.js";
87
+ import "./chunk-VIDRZCPQ.js";
88
+ import "./chunk-WPTFJZ4L.js";
89
+ import "./chunk-RMXZISHK.js";
90
90
  import "./chunk-GPQLBVQC.js";
91
- import "./chunk-EL6KZO43.js";
92
- import "./chunk-JWEIAEQ6.js";
91
+ import "./chunk-GFWXDWEE.js";
92
+ import "./chunk-TMNEDWA7.js";
93
93
  import {
94
94
  DatasetTaskIngestionError,
95
95
  addDatasetTask,
@@ -100,7 +100,7 @@ import {
100
100
  ProductModelError,
101
101
  createProductModels,
102
102
  productModelEndpoint
103
- } from "./chunk-ZG4HVCJB.js";
103
+ } from "./chunk-ON3KSXWR.js";
104
104
  import "./chunk-IZ26ZCGU.js";
105
105
  import {
106
106
  HumanReviewClientError,
@@ -139,7 +139,7 @@ import {
139
139
  hashCollectorEligibleBoundaries,
140
140
  summarizeCollectorCoverage,
141
141
  verifyConnectedRecordedExecution
142
- } from "./chunk-6LVLWRBJ.js";
142
+ } from "./chunk-54BJJL7G.js";
143
143
  import "./chunk-O6FKHAWN.js";
144
144
  import {
145
145
  AgentImportCommitRequestSchema,
@@ -157,18 +157,18 @@ import {
157
157
  ConnectedStartingAssetsReceiptSchema,
158
158
  ConnectedStartingAssetsRequestSchema,
159
159
  verifyConnectedStartingAssetsReceipt
160
- } from "./chunk-57ROW3XF.js";
161
- import "./chunk-3BILL33A.js";
162
- import "./chunk-JINWKUKR.js";
160
+ } from "./chunk-ABOZV47D.js";
161
+ import "./chunk-BIQ5TG3T.js";
162
+ import "./chunk-BT6CC6QB.js";
163
163
  import "./chunk-GWXJSBWR.js";
164
- import "./chunk-4A4FNG4R.js";
164
+ import "./chunk-7ZV626YS.js";
165
165
  import {
166
166
  ConnectedDatasetSourceRefSchema,
167
167
  serializeStructuredOutput,
168
168
  structuredOutputTools,
169
169
  structuredToolOutput,
170
170
  validateOutputBytes
171
- } from "./chunk-AQV7RQZH.js";
171
+ } from "./chunk-K4WU4JOP.js";
172
172
  import "./chunk-TK3DXH7A.js";
173
173
  import "./chunk-VE5JD5FN.js";
174
174
  import "./chunk-QTNYXOJW.js";
@@ -180,12 +180,12 @@ import {
180
180
  CandidateEvaluationPreparationSchema,
181
181
  CandidateEvaluationRequestSchema,
182
182
  createCandidateEvaluationClient
183
- } from "./chunk-AMZ2SWHR.js";
184
- import "./chunk-2U6BQ5C4.js";
185
- import "./chunk-4REK5TTE.js";
186
- import "./chunk-XWUTYFOU.js";
187
- import "./chunk-CAOMKM55.js";
188
- import "./chunk-H5KHLBC5.js";
183
+ } from "./chunk-534W2O2S.js";
184
+ import "./chunk-MJHQMQEW.js";
185
+ import "./chunk-4D4QSQC3.js";
186
+ import "./chunk-5KJY44FB.js";
187
+ import "./chunk-L7MVGGBH.js";
188
+ import "./chunk-WJZHSIGD.js";
189
189
  import "./chunk-CL3IOOVL.js";
190
190
  import "./chunk-B3ZHJ2KK.js";
191
191
  import "./chunk-H3JZ3P5T.js";
package/dist/learning.js CHANGED
@@ -35,6 +35,13 @@ export * from "@openpond/evals/rewards";
35
35
 
36
36
  // src/model-learning-policy.ts
37
37
  import { LearningDomainError, LearningPolicyContentSchema, LearningSourceContentSchema, learningRef, sameLearningRef, sealLearningContent } from "@openpond/evals/learning";
38
+
39
+ // src/model-learning-capabilities.ts
40
+ function supportsRecurringModelTraining(method) {
41
+ return method === "sft" || method === "grpo";
42
+ }
43
+
44
+ // src/model-learning-policy.ts
38
45
  function initialHostedModelLearning(input) {
39
46
  const learning = ModelInitialLearningSchema.parse(input.learning);
40
47
  const { project, definition } = input;
@@ -97,8 +104,9 @@ function createHostedLearningPolicyContent(input) {
97
104
  const applyModel = input.applyModelConfiguration || !previous;
98
105
  const refs = applyModel ? hostedLearningPolicyReferences(project) : null;
99
106
  const method = applyModel ? project.trainingSetup.recipe?.method : previous?.training.method;
100
- const trigger = settings.trigger ?? (settings.scheduled ? { kind: "schedule", intervalSeconds: settings.intervalSeconds } : { kind: "manual" });
101
- if (settings.enabled && method !== "grpo" && method !== "sft") {
107
+ const retainedTrigger = previous && ["nightly", "approved_count"].includes(previous.trigger.kind) && settings.intervalSeconds === hostedLearningPolicyDefaults(project, previous).intervalSeconds ? previous.trigger : null;
108
+ const trigger = settings.trigger ?? (settings.scheduled ? retainedTrigger ?? { kind: "schedule", intervalSeconds: settings.intervalSeconds } : { kind: "manual" });
109
+ if (settings.enabled && !supportsRecurringModelTraining(method)) {
102
110
  throw new LearningDomainError("learning_training_method_unsupported", 422, "Hosted continual learning supports reviewed SFT and GRPO.");
103
111
  }
104
112
  return LearningPolicyContentSchema.parse({
@@ -108,6 +116,7 @@ function createHostedLearningPolicyContent(input) {
108
116
  modelProjectId: project.portableProjectId,
109
117
  executionOwner: "hosted",
110
118
  enabled: settings.enabled,
119
+ ...previous?.origin ? { origin: previous.origin } : {},
111
120
  sources: input.sources,
112
121
  taskDefinition: input.taskDefinition,
113
122
  rewardBinding: applyModel ? project.trainingSetup.rewardBindingRef : previous?.rewardBinding,
@@ -123,7 +132,8 @@ function createHostedLearningPolicyContent(input) {
123
132
  method,
124
133
  recipe: refs?.recipe ?? previous?.training.recipe,
125
134
  retentionEvaluation: refs?.retentionEvaluation ?? previous?.training.retentionEvaluation,
126
- replayBatches: previous?.training.replayBatches ?? []
135
+ replayBatches: previous?.training.replayBatches ?? [],
136
+ ...!applyModel && previous?.training.continuationMode ? { continuationMode: previous.training.continuationMode } : {}
127
137
  },
128
138
  limits: {
129
139
  maxIterationSpendUsd: settings.maxIterationSpendUsd,
@@ -336,6 +346,7 @@ export {
336
346
  hostedLearningPolicyDefaults,
337
347
  hostedLearningPolicyReferences,
338
348
  initialHostedModelLearning,
339
- readBoundedLearningResponse
349
+ readBoundedLearningResponse,
350
+ supportsRecurringModelTraining
340
351
  };
341
352
  //# sourceMappingURL=learning.js.map