openpond-sdk 0.12.13 → 0.12.15

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 (301) hide show
  1. package/TRAINING_WORKFLOWS.md +497 -4
  2. package/dist/advanced-refiner-evaluations.js +7 -7
  3. package/dist/candidate-evaluations.js +6 -6
  4. package/dist/{chunk-TLSP5JKG.js → chunk-3BYFS4RO.js} +2 -2
  5. package/dist/{chunk-XRBM6PBD.js → chunk-3MDNVNBM.js} +5 -5
  6. package/dist/{chunk-CNREFTAV.js → chunk-3VUF5H3B.js} +2 -2
  7. package/dist/{chunk-LHHHJIDR.js → chunk-626JLH4D.js} +2 -2
  8. package/dist/{chunk-Q4TKI2MV.js → chunk-774OWTCD.js} +63 -80
  9. package/dist/chunk-774OWTCD.js.map +1 -0
  10. package/dist/{chunk-HAQPGTQ4.js → chunk-7F43U2NC.js} +2 -2
  11. package/dist/{chunk-ORYA2G7S.js → chunk-7G47YXQT.js} +3 -3
  12. package/dist/{chunk-XMVSQIK4.js → chunk-AG6UJ3DI.js} +2 -2
  13. package/dist/chunk-EBB36D5X.js +866 -0
  14. package/dist/chunk-EBB36D5X.js.map +1 -0
  15. package/dist/{chunk-JBYFD3QS.js → chunk-GBDBKGXW.js} +3 -3
  16. package/dist/{chunk-GHPCQXG5.js → chunk-GCUWJUUM.js} +2 -2
  17. package/dist/{chunk-C4W2MEFP.js → chunk-GS5HEE4M.js} +2 -2
  18. package/dist/{chunk-ATVQQCYN.js → chunk-GWXJSBWR.js} +2 -2
  19. package/dist/{chunk-RLW4Y5ZV.js → chunk-JMFYNIYZ.js} +4 -3
  20. package/dist/chunk-JMFYNIYZ.js.map +1 -0
  21. package/dist/{chunk-UOV2LEXS.js → chunk-MVAEE5EI.js} +60 -3
  22. package/dist/chunk-MVAEE5EI.js.map +1 -0
  23. package/dist/{chunk-KOJC3TH4.js → chunk-OBI2MQYU.js} +6 -6
  24. package/dist/chunk-PMVSO23F.js +65 -0
  25. package/dist/chunk-PMVSO23F.js.map +1 -0
  26. package/dist/{chunk-JDQVAG3R.js → chunk-Q4RGCEOI.js} +3 -3
  27. package/dist/{chunk-YIGFQWZV.js → chunk-QIGMNB6M.js} +3 -3
  28. package/dist/{chunk-O3NOGKMT.js → chunk-QNOCM5JX.js} +2 -2
  29. package/dist/{chunk-2LVR24GU.js → chunk-QOX57Y27.js} +6 -6
  30. package/dist/chunk-QTNYXOJW.js +27 -0
  31. package/dist/chunk-QTNYXOJW.js.map +1 -0
  32. package/dist/{chunk-UWY5PUHR.js → chunk-RN5MK7NH.js} +2 -2
  33. package/dist/{chunk-47I6LT4X.js → chunk-RT7SQHO4.js} +271 -7
  34. package/dist/chunk-RT7SQHO4.js.map +1 -0
  35. package/dist/chunk-UVQENVTW.js +85 -0
  36. package/dist/chunk-UVQENVTW.js.map +1 -0
  37. package/dist/{chunk-7BYLH47N.js → chunk-VPK3SM45.js} +15 -3
  38. package/dist/{chunk-7BYLH47N.js.map → chunk-VPK3SM45.js.map} +1 -1
  39. package/dist/{chunk-RN5G3DQN.js → chunk-WM3U4RPZ.js} +6 -6
  40. package/dist/{chunk-IFBCLRBM.js → chunk-ZQ6QTYRE.js} +2 -2
  41. package/dist/{chunk-IFBCLRBM.js.map → chunk-ZQ6QTYRE.js.map} +1 -1
  42. package/dist/{chunk-K54BDIKL.js → chunk-ZQFROKKS.js} +3 -3
  43. package/dist/{chunk-ZYDDHHZZ.js → chunk-ZRTNR4U7.js} +3 -3
  44. package/dist/connected-evidence.js +9 -17
  45. package/dist/dataset-workspaces.js +12 -17
  46. package/dist/dataset-workspaces.js.map +1 -1
  47. package/dist/errors.js +3 -3
  48. package/dist/experiment-evaluation-schedules.js +18 -21
  49. package/dist/experiment-improvements.js +9 -8
  50. package/dist/experiments.js +17 -20
  51. package/dist/index.js +25 -27
  52. package/dist/index.js.map +1 -1
  53. package/dist/model-projects.js +1 -1
  54. package/dist/model-starter-attempts.js +2 -2
  55. package/dist/model-starter-catalog.js +4 -12
  56. package/dist/model-starter-catalog.js.map +1 -1
  57. package/dist/model-starters.js +4 -12
  58. package/dist/model-taskset-runs.js +3 -3
  59. package/dist/post-training.js +6 -6
  60. package/dist/taskset-drafts.js +6 -15
  61. package/dist/taskset-drafts.js.map +1 -1
  62. package/dist/taskset-packages.js +28 -18
  63. package/dist/tool-learning-local-store.js +2 -1
  64. package/dist/tool-learning-local-store.js.map +1 -1
  65. package/dist/training-bundle.js +33 -32
  66. package/dist/training-bundle.js.map +1 -1
  67. package/dist/training.js +8483 -49
  68. package/dist/training.js.map +1 -1
  69. package/dist/types/packages/cloud/src/sandbox/types/billing.d.ts +87 -6
  70. package/dist/types/packages/cloud/src/sandbox/types/billing.d.ts.map +1 -1
  71. package/dist/types/packages/cloud/src/sandbox/types/io.d.ts +3 -0
  72. package/dist/types/packages/cloud/src/sandbox/types/io.d.ts.map +1 -1
  73. package/dist/types/packages/sdk/src/activation-experiment-draft.d.ts +70 -0
  74. package/dist/types/packages/sdk/src/activation-experiment-draft.d.ts.map +1 -0
  75. package/dist/types/packages/sdk/src/activation-form-compiler.d.ts +25 -0
  76. package/dist/types/packages/sdk/src/activation-form-compiler.d.ts.map +1 -0
  77. package/dist/types/packages/sdk/src/activation-reference.d.ts +347 -0
  78. package/dist/types/packages/sdk/src/activation-reference.d.ts.map +1 -0
  79. package/dist/types/packages/sdk/src/activation-result-comparison.d.ts +185 -0
  80. package/dist/types/packages/sdk/src/activation-result-comparison.d.ts.map +1 -0
  81. package/dist/types/packages/sdk/src/alphaedit-artifact.d.ts +872 -0
  82. package/dist/types/packages/sdk/src/alphaedit-artifact.d.ts.map +1 -0
  83. package/dist/types/packages/sdk/src/alphaedit-experiment-draft.d.ts +123 -0
  84. package/dist/types/packages/sdk/src/alphaedit-experiment-draft.d.ts.map +1 -0
  85. package/dist/types/packages/sdk/src/alphaedit-model-serving.d.ts +3218 -0
  86. package/dist/types/packages/sdk/src/alphaedit-model-serving.d.ts.map +1 -0
  87. package/dist/types/packages/sdk/src/alphaedit.d.ts +258 -0
  88. package/dist/types/packages/sdk/src/alphaedit.d.ts.map +1 -0
  89. package/dist/types/packages/sdk/src/dataset-training-review-contracts.d.ts +181 -0
  90. package/dist/types/packages/sdk/src/dataset-training-review-contracts.d.ts.map +1 -0
  91. package/dist/types/packages/sdk/src/dataset-training-review-files.d.ts +17 -0
  92. package/dist/types/packages/sdk/src/dataset-training-review-files.d.ts.map +1 -0
  93. package/dist/types/packages/sdk/src/dataset-training-review-preparation.d.ts +541 -0
  94. package/dist/types/packages/sdk/src/dataset-training-review-preparation.d.ts.map +1 -0
  95. package/dist/types/packages/sdk/src/dataset-training-review-source.d.ts +41 -0
  96. package/dist/types/packages/sdk/src/dataset-training-review-source.d.ts.map +1 -0
  97. package/dist/types/packages/sdk/src/dataset-training-review.d.ts +79 -0
  98. package/dist/types/packages/sdk/src/dataset-training-review.d.ts.map +1 -0
  99. package/dist/types/packages/sdk/src/decision-experiment-authoring.d.ts +11 -0
  100. package/dist/types/packages/sdk/src/decision-experiment-authoring.d.ts.map +1 -0
  101. package/dist/types/packages/sdk/src/decision-experiment-draft.d.ts +150 -0
  102. package/dist/types/packages/sdk/src/decision-experiment-draft.d.ts.map +1 -0
  103. package/dist/types/packages/sdk/src/decision-model-artifact.d.ts +541 -0
  104. package/dist/types/packages/sdk/src/decision-model-artifact.d.ts.map +1 -0
  105. package/dist/types/packages/sdk/src/decision-model-data.d.ts +588 -0
  106. package/dist/types/packages/sdk/src/decision-model-data.d.ts.map +1 -0
  107. package/dist/types/packages/sdk/src/decision-model-scoring.d.ts +1587 -0
  108. package/dist/types/packages/sdk/src/decision-model-scoring.d.ts.map +1 -0
  109. package/dist/types/packages/sdk/src/decision-model-serving.d.ts +5328 -0
  110. package/dist/types/packages/sdk/src/decision-model-serving.d.ts.map +1 -0
  111. package/dist/types/packages/sdk/src/decision-model-training.d.ts +871 -0
  112. package/dist/types/packages/sdk/src/decision-model-training.d.ts.map +1 -0
  113. package/dist/types/packages/sdk/src/decision-model-version.d.ts +2971 -0
  114. package/dist/types/packages/sdk/src/decision-model-version.d.ts.map +1 -0
  115. package/dist/types/packages/sdk/src/decision-model.d.ts +241 -0
  116. package/dist/types/packages/sdk/src/decision-model.d.ts.map +1 -0
  117. package/dist/types/packages/sdk/src/engram-adapter.d.ts +788 -0
  118. package/dist/types/packages/sdk/src/engram-adapter.d.ts.map +1 -0
  119. package/dist/types/packages/sdk/src/engram-experiment-authoring.d.ts +14 -0
  120. package/dist/types/packages/sdk/src/engram-experiment-authoring.d.ts.map +1 -0
  121. package/dist/types/packages/sdk/src/engram-experiment-draft.d.ts +92 -0
  122. package/dist/types/packages/sdk/src/engram-experiment-draft.d.ts.map +1 -0
  123. package/dist/types/packages/sdk/src/engram-inference.d.ts +180 -0
  124. package/dist/types/packages/sdk/src/engram-inference.d.ts.map +1 -0
  125. package/dist/types/packages/sdk/src/engram-model-serving.d.ts +2183 -0
  126. package/dist/types/packages/sdk/src/engram-model-serving.d.ts.map +1 -0
  127. package/dist/types/packages/sdk/src/engram-model-version.d.ts +1335 -0
  128. package/dist/types/packages/sdk/src/engram-model-version.d.ts.map +1 -0
  129. package/dist/types/packages/sdk/src/evaluation-experiment-draft.d.ts +1009 -0
  130. package/dist/types/packages/sdk/src/evaluation-experiment-draft.d.ts.map +1 -0
  131. package/dist/types/packages/sdk/src/experiment-client.d.ts +686 -686
  132. package/dist/types/packages/sdk/src/experiment-draft-storage.d.ts +11638 -0
  133. package/dist/types/packages/sdk/src/experiment-draft-storage.d.ts.map +1 -0
  134. package/dist/types/packages/sdk/src/experiment-result-reference.d.ts +288 -0
  135. package/dist/types/packages/sdk/src/experiment-result-reference.d.ts.map +1 -0
  136. package/dist/types/packages/sdk/src/experiment-run-details.d.ts +7 -7
  137. package/dist/types/packages/sdk/src/experiment-starting-model.d.ts +911 -0
  138. package/dist/types/packages/sdk/src/experiment-starting-model.d.ts.map +1 -0
  139. package/dist/types/packages/sdk/src/hosted-evaluation-experiment-draft.d.ts +693 -0
  140. package/dist/types/packages/sdk/src/hosted-evaluation-experiment-draft.d.ts.map +1 -0
  141. package/dist/types/packages/sdk/src/managed-alphaedit-executions.d.ts +3152 -0
  142. package/dist/types/packages/sdk/src/managed-alphaedit-executions.d.ts.map +1 -0
  143. package/dist/types/packages/sdk/src/managed-compute-price.d.ts +50 -0
  144. package/dist/types/packages/sdk/src/managed-compute-price.d.ts.map +1 -0
  145. package/dist/types/packages/sdk/src/managed-decision-executions.d.ts +6755 -0
  146. package/dist/types/packages/sdk/src/managed-decision-executions.d.ts.map +1 -0
  147. package/dist/types/packages/sdk/src/managed-engram-executions.d.ts +2774 -0
  148. package/dist/types/packages/sdk/src/managed-engram-executions.d.ts.map +1 -0
  149. package/dist/types/packages/sdk/src/managed-modification-compilation.d.ts +523 -0
  150. package/dist/types/packages/sdk/src/managed-modification-compilation.d.ts.map +1 -0
  151. package/dist/types/packages/sdk/src/managed-modification-executions.d.ts +1470 -0
  152. package/dist/types/packages/sdk/src/managed-modification-executions.d.ts.map +1 -0
  153. package/dist/types/packages/sdk/src/managed-neuron-training-executions.d.ts +3447 -0
  154. package/dist/types/packages/sdk/src/managed-neuron-training-executions.d.ts.map +1 -0
  155. package/dist/types/packages/sdk/src/managed-serving-usage.d.ts +228 -0
  156. package/dist/types/packages/sdk/src/managed-serving-usage.d.ts.map +1 -0
  157. package/dist/types/packages/sdk/src/managed-training-preparation.d.ts +26 -26
  158. package/dist/types/packages/sdk/src/managed-training-preparation.d.ts.map +1 -1
  159. package/dist/types/packages/sdk/src/model-batch-review-contracts.d.ts +11 -0
  160. package/dist/types/packages/sdk/src/model-batch-review-contracts.d.ts.map +1 -1
  161. package/dist/types/packages/sdk/src/model-batch-review-preparation.d.ts +10 -0
  162. package/dist/types/packages/sdk/src/model-batch-review-preparation.d.ts.map +1 -1
  163. package/dist/types/packages/sdk/src/model-batch-review.d.ts +21 -0
  164. package/dist/types/packages/sdk/src/model-batch-review.d.ts.map +1 -1
  165. package/dist/types/packages/sdk/src/model-learning-policy.d.ts +9 -0
  166. package/dist/types/packages/sdk/src/model-learning-policy.d.ts.map +1 -1
  167. package/dist/types/packages/sdk/src/model-modification-capabilities.d.ts +323 -0
  168. package/dist/types/packages/sdk/src/model-modification-capabilities.d.ts.map +1 -0
  169. package/dist/types/packages/sdk/src/model-serving-pool.d.ts +28 -0
  170. package/dist/types/packages/sdk/src/model-serving-pool.d.ts.map +1 -0
  171. package/dist/types/packages/sdk/src/model-starter-attempts.d.ts +22 -0
  172. package/dist/types/packages/sdk/src/model-starter-attempts.d.ts.map +1 -1
  173. package/dist/types/packages/sdk/src/model-taskset-runs.d.ts +216 -216
  174. package/dist/types/packages/sdk/src/modification-recordings.d.ts +1303 -0
  175. package/dist/types/packages/sdk/src/modification-recordings.d.ts.map +1 -0
  176. package/dist/types/packages/sdk/src/neuron-calibration-records.d.ts +816 -0
  177. package/dist/types/packages/sdk/src/neuron-calibration-records.d.ts.map +1 -0
  178. package/dist/types/packages/sdk/src/neuron-residual-calibration.d.ts +189 -0
  179. package/dist/types/packages/sdk/src/neuron-residual-calibration.d.ts.map +1 -0
  180. package/dist/types/packages/sdk/src/neuron-steering.d.ts +260 -0
  181. package/dist/types/packages/sdk/src/neuron-steering.d.ts.map +1 -0
  182. package/dist/types/packages/sdk/src/neuron-training-artifact.d.ts +517 -0
  183. package/dist/types/packages/sdk/src/neuron-training-artifact.d.ts.map +1 -0
  184. package/dist/types/packages/sdk/src/neuron-training-experiment-draft.d.ts +172 -0
  185. package/dist/types/packages/sdk/src/neuron-training-experiment-draft.d.ts.map +1 -0
  186. package/dist/types/packages/sdk/src/neuron-training-model-serving.d.ts +3502 -0
  187. package/dist/types/packages/sdk/src/neuron-training-model-serving.d.ts.map +1 -0
  188. package/dist/types/packages/sdk/src/neuron-training-result.d.ts +590 -0
  189. package/dist/types/packages/sdk/src/neuron-training-result.d.ts.map +1 -0
  190. package/dist/types/packages/sdk/src/neuron-training.d.ts +260 -0
  191. package/dist/types/packages/sdk/src/neuron-training.d.ts.map +1 -0
  192. package/dist/types/packages/sdk/src/post-training.d.ts +21 -0
  193. package/dist/types/packages/sdk/src/post-training.d.ts.map +1 -1
  194. package/dist/types/packages/sdk/src/profile-external-dataset-package.d.ts +10 -0
  195. package/dist/types/packages/sdk/src/profile-external-dataset-package.d.ts.map +1 -1
  196. package/dist/types/packages/sdk/src/steering-experiment-authoring.d.ts +15 -0
  197. package/dist/types/packages/sdk/src/steering-experiment-authoring.d.ts.map +1 -0
  198. package/dist/types/packages/sdk/src/steering-experiment-source-verification.d.ts +97 -0
  199. package/dist/types/packages/sdk/src/steering-experiment-source-verification.d.ts.map +1 -0
  200. package/dist/types/packages/sdk/src/steering-experiment-source.d.ts +29 -0
  201. package/dist/types/packages/sdk/src/steering-experiment-source.d.ts.map +1 -0
  202. package/dist/types/packages/sdk/src/steering-inference.d.ts +224 -0
  203. package/dist/types/packages/sdk/src/steering-inference.d.ts.map +1 -0
  204. package/dist/types/packages/sdk/src/steering-model-selection.d.ts +15 -0
  205. package/dist/types/packages/sdk/src/steering-model-selection.d.ts.map +1 -0
  206. package/dist/types/packages/sdk/src/steering-model-serving.d.ts +8759 -0
  207. package/dist/types/packages/sdk/src/steering-model-serving.d.ts.map +1 -0
  208. package/dist/types/packages/sdk/src/steering-profile-publication.d.ts +7892 -0
  209. package/dist/types/packages/sdk/src/steering-profile-publication.d.ts.map +1 -0
  210. package/dist/types/packages/sdk/src/taskset-draft-package-compiler.d.ts +20 -0
  211. package/dist/types/packages/sdk/src/taskset-draft-package-compiler.d.ts.map +1 -1
  212. package/dist/types/packages/sdk/src/taskset-package-client.d.ts +40 -0
  213. package/dist/types/packages/sdk/src/taskset-package-client.d.ts.map +1 -1
  214. package/dist/types/packages/sdk/src/taskset-package-contracts.d.ts +20 -0
  215. package/dist/types/packages/sdk/src/taskset-package-contracts.d.ts.map +1 -1
  216. package/dist/types/packages/sdk/src/taskset-package-learning.d.ts +20 -0
  217. package/dist/types/packages/sdk/src/taskset-package-learning.d.ts.map +1 -1
  218. package/dist/types/packages/sdk/src/taskset-package-projection.d.ts +10 -0
  219. package/dist/types/packages/sdk/src/taskset-package-projection.d.ts.map +1 -1
  220. package/dist/types/packages/sdk/src/taskset-packages.d.ts +4 -0
  221. package/dist/types/packages/sdk/src/taskset-packages.d.ts.map +1 -1
  222. package/dist/types/packages/sdk/src/tool-learning-local-store.d.ts +2 -0
  223. package/dist/types/packages/sdk/src/tool-learning-local-store.d.ts.map +1 -1
  224. package/dist/types/packages/sdk/src/training-compute-selection.d.ts +186 -1
  225. package/dist/types/packages/sdk/src/training-compute-selection.d.ts.map +1 -1
  226. package/dist/types/packages/sdk/src/training-estimate-workload.d.ts +185 -0
  227. package/dist/types/packages/sdk/src/training-estimate-workload.d.ts.map +1 -0
  228. package/dist/types/packages/sdk/src/training-estimates.d.ts +185 -0
  229. package/dist/types/packages/sdk/src/training-estimates.d.ts.map +1 -1
  230. package/dist/types/packages/sdk/src/training-executions.d.ts +275 -0
  231. package/dist/types/packages/sdk/src/training-executions.d.ts.map +1 -0
  232. package/dist/types/packages/sdk/src/training-experiment-setup.d.ts +5957 -0
  233. package/dist/types/packages/sdk/src/training-experiment-setup.d.ts.map +1 -0
  234. package/dist/types/packages/sdk/src/training-funding.d.ts +153 -0
  235. package/dist/types/packages/sdk/src/training-funding.d.ts.map +1 -0
  236. package/dist/types/packages/sdk/src/training-hardware-catalog.d.ts +155 -0
  237. package/dist/types/packages/sdk/src/training-hardware-catalog.d.ts.map +1 -0
  238. package/dist/types/packages/sdk/src/training-job-contracts.d.ts +1535 -0
  239. package/dist/types/packages/sdk/src/training-job-contracts.d.ts.map +1 -0
  240. package/dist/types/packages/sdk/src/training-learning-batch.d.ts +40 -40
  241. package/dist/types/packages/sdk/src/training-model-save.d.ts +2466 -0
  242. package/dist/types/packages/sdk/src/training-model-save.d.ts.map +1 -0
  243. package/dist/types/packages/sdk/src/training-model-serving-control.d.ts +397 -0
  244. package/dist/types/packages/sdk/src/training-model-serving-control.d.ts.map +1 -0
  245. package/dist/types/packages/sdk/src/training-model-serving.d.ts +2662 -0
  246. package/dist/types/packages/sdk/src/training-model-serving.d.ts.map +1 -0
  247. package/dist/types/packages/sdk/src/training-preparations.d.ts +1001 -0
  248. package/dist/types/packages/sdk/src/training-preparations.d.ts.map +1 -1
  249. package/dist/types/packages/sdk/src/training-qualification-preparation.d.ts +1 -1
  250. package/dist/types/packages/sdk/src/training-qualification-preparation.d.ts.map +1 -1
  251. package/dist/types/packages/sdk/src/training-result.d.ts +4577 -0
  252. package/dist/types/packages/sdk/src/training-result.d.ts.map +1 -0
  253. package/dist/types/packages/sdk/src/training-usage-funding.d.ts +273 -0
  254. package/dist/types/packages/sdk/src/training-usage-funding.d.ts.map +1 -0
  255. package/dist/types/packages/sdk/src/training-usage-status.d.ts +27 -0
  256. package/dist/types/packages/sdk/src/training-usage-status.d.ts.map +1 -0
  257. package/dist/types/packages/sdk/src/training.d.ts +18309 -3682
  258. package/dist/types/packages/sdk/src/training.d.ts.map +1 -1
  259. package/dist/types/packages/sdk/src/weight-experiment-authoring.d.ts +23 -0
  260. package/dist/types/packages/sdk/src/weight-experiment-authoring.d.ts.map +1 -0
  261. package/dist/types/packages/sdk/src/weight-inference.d.ts +155 -0
  262. package/dist/types/packages/sdk/src/weight-inference.d.ts.map +1 -0
  263. package/dist/types/packages/sdk/src/weight-model-versions.d.ts +4578 -0
  264. package/dist/types/packages/sdk/src/weight-model-versions.d.ts.map +1 -0
  265. package/fixtures/python-foundation/activation-reference-workflow.json +6403 -0
  266. package/fixtures/python-foundation/dataset-training-review-http-workflow.json +62 -0
  267. package/fixtures/python-foundation/operation-matrix.json +1410 -220
  268. package/fixtures/python-foundation/schemas.json +59491 -25928
  269. package/fixtures/python-foundation/training-estimate-http-workflow.json +100 -0
  270. package/fixtures/python-foundation/training-funding-http-workflow.json +61 -0
  271. package/fixtures/python-foundation/training-model-save-http-workflow.json +302 -0
  272. package/fixtures/python-foundation/training-model-serving-control-http-workflow.json +1633 -0
  273. package/fixtures/python-foundation/training-model-serving-http-workflow.json +1181 -0
  274. package/fixtures/python-foundation/training-result-http-workflow.json +230 -0
  275. package/package.json +3 -3
  276. package/dist/chunk-47I6LT4X.js.map +0 -1
  277. package/dist/chunk-GJRXJL6G.js +0 -1528
  278. package/dist/chunk-GJRXJL6G.js.map +0 -1
  279. package/dist/chunk-Q4TKI2MV.js.map +0 -1
  280. package/dist/chunk-RLW4Y5ZV.js.map +0 -1
  281. package/dist/chunk-UOV2LEXS.js.map +0 -1
  282. /package/dist/{chunk-TLSP5JKG.js.map → chunk-3BYFS4RO.js.map} +0 -0
  283. /package/dist/{chunk-XRBM6PBD.js.map → chunk-3MDNVNBM.js.map} +0 -0
  284. /package/dist/{chunk-CNREFTAV.js.map → chunk-3VUF5H3B.js.map} +0 -0
  285. /package/dist/{chunk-LHHHJIDR.js.map → chunk-626JLH4D.js.map} +0 -0
  286. /package/dist/{chunk-HAQPGTQ4.js.map → chunk-7F43U2NC.js.map} +0 -0
  287. /package/dist/{chunk-ORYA2G7S.js.map → chunk-7G47YXQT.js.map} +0 -0
  288. /package/dist/{chunk-XMVSQIK4.js.map → chunk-AG6UJ3DI.js.map} +0 -0
  289. /package/dist/{chunk-JBYFD3QS.js.map → chunk-GBDBKGXW.js.map} +0 -0
  290. /package/dist/{chunk-GHPCQXG5.js.map → chunk-GCUWJUUM.js.map} +0 -0
  291. /package/dist/{chunk-C4W2MEFP.js.map → chunk-GS5HEE4M.js.map} +0 -0
  292. /package/dist/{chunk-ATVQQCYN.js.map → chunk-GWXJSBWR.js.map} +0 -0
  293. /package/dist/{chunk-KOJC3TH4.js.map → chunk-OBI2MQYU.js.map} +0 -0
  294. /package/dist/{chunk-JDQVAG3R.js.map → chunk-Q4RGCEOI.js.map} +0 -0
  295. /package/dist/{chunk-YIGFQWZV.js.map → chunk-QIGMNB6M.js.map} +0 -0
  296. /package/dist/{chunk-O3NOGKMT.js.map → chunk-QNOCM5JX.js.map} +0 -0
  297. /package/dist/{chunk-2LVR24GU.js.map → chunk-QOX57Y27.js.map} +0 -0
  298. /package/dist/{chunk-UWY5PUHR.js.map → chunk-RN5MK7NH.js.map} +0 -0
  299. /package/dist/{chunk-RN5G3DQN.js.map → chunk-WM3U4RPZ.js.map} +0 -0
  300. /package/dist/{chunk-K54BDIKL.js.map → chunk-ZQFROKKS.js.map} +0 -0
  301. /package/dist/{chunk-ZYDDHHZZ.js.map → chunk-ZRTNR4U7.js.map} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/model-ordinary-taskset-reward.ts","../src/model-batch-review.ts","../src/model-batch-review-preparation.ts","../src/dataset-training-review-files.ts","../src/dataset-training-review-source.ts","../src/dataset-training-review-preparation.ts","../src/taskset-draft-source.ts"],"sourcesContent":["import { LearningTextAssetSchema, TaskDefinitionSchema, learningRef, sealLearningContent, type LearningTextAsset } from \"@openpond/evals/learning\";\nimport type { RewardBinding, RewardRelease } from \"@openpond/evals/rewards\";\nimport { compileModelTasksetReward } from \"./model-taskset-derivation.js\";\nimport { createTasksetPackage, resolveTasksetPackageInstructions, validateTasksetPackage, type TasksetPackage } from \"./taskset-package-contracts.js\";\nimport { decodeTasksetPackageFile } from \"./taskset-package-files.js\";\nimport { resolveTasksetPackageExecution } from \"./taskset-package-execution.js\";\n\n/** Bind a saved Reward without rewriting task envelopes, private context, tools\n * or arbitrary binary files. Compatibility is admission, not qualification. */\nexport function bindOrdinaryModelTasksetReward(input: {\n owner: { scopeId: string; modelId: string };\n source: TasksetPackage;\n rewardBinding: RewardBinding;\n rewards: RewardRelease[];\n assets: LearningTextAsset[];\n}): TasksetPackage {\n const source = validateTasksetPackage(input.source);\n if (source.modelResources || source.learningResources) throw new Error(\"Binding an ordinary Reward requires an ordinary source package.\");\n const instructions = resolveTasksetPackageInstructions(source);\n if (!instructions.trim()) throw new Error(\"Add collection instructions before selecting a saved Reward.\");\n const assets = new Map<string, LearningTextAsset>();\n const execution = resolveTasksetPackageExecution(source);\n for (const asset of execution?.assets ?? []) assets.set(asset.id, asset);\n const contextIds = new Set([\n ...source.taskset.tasks.flatMap(task => task.privilegedContextRef ? [task.privilegedContextRef] : []),\n ...[source.environment.actionSchemaRef, source.environment.observationSchemaRef, source.environment.stateSchemaRef].flatMap(ref => ref ? [ref.id] : []),\n ]);\n for (const id of contextIds) {\n if (assets.has(id)) continue;\n const file = source.files.find(file => file.asset.id === id);\n if (!file) throw new Error(`Source Taskset context is missing: ${id}.`);\n const text = new TextDecoder(\"utf-8\", { fatal: true }).decode(decodeTasksetPackageFile(file));\n assets.set(id, LearningTextAssetSchema.parse(sealLearningContent({ schemaVersion: \"openpond.learningTextAsset.v1\", id, revision: 1, asset: file.asset, text })));\n }\n for (const asset of input.assets) {\n const original = source.files.find(file => file.asset.id === asset.id);\n if (original && sealLearningContent({ asset: original.asset }).contentHash !== sealLearningContent({ asset: asset.asset }).contentHash) throw new Error(`Selected Reward conflicts with a source asset: ${asset.id}.`);\n assets.set(asset.id, asset);\n }\n const { policy, environment, environmentRelease, tools, capabilities, verifierSetRelease } = source.taskset;\n const outputContract = source.taskset.metadata.tasksetOutputContract;\n const outputSchema = outputContract && typeof outputContract === \"object\" && !Array.isArray(outputContract)\n && \"mode\" in outputContract && outputContract.mode === \"structured_json\"\n ? (\"jsonSchema\" in outputContract ? outputContract.jsonSchema : null) : { type: \"object\" };\n const taskDefinition = TaskDefinitionSchema.parse(sealLearningContent({\n schemaVersion: \"openpond.taskDefinition.v1\", id: `${source.taskset.id}-definition`, revision: 1,\n name: source.taskset.id, description: \"\", instructions, category: \"custom\", familyNamespace: source.taskset.id,\n inputSchema: { type: \"object\" }, outputSchema,\n rewardBinding: learningRef(input.rewardBinding), harness: null,\n execution: { policy, environment, environmentRelease, tools, capabilities, verifierSetRelease },\n }));\n const derived = compileModelTasksetReward({ ...input, assets: [...assets.values()], source: {\n taskset: source.taskset, taskDefinition, instructionMode: \"per_task\",\n executionResources: { environment: source.environment, verifierSet: source.verifierSet },\n ...(execution ? { execution: execution.execution } : {}),\n } });\n const files = new Map(source.files.map(file => [file.asset.id, file]));\n for (const asset of derived.assets) {\n let raw = \"\";\n for (const byte of new TextEncoder().encode(asset.text)) raw += String.fromCharCode(byte);\n files.set(asset.id, { asset: asset.asset, base64: btoa(raw) });\n }\n const { taskset, executionResources, ...modelResources } = derived;\n return createTasksetPackage({ schemaVersion: \"openpond.tasksetPackage.v1\", taskset, ...executionResources!, modelResources, files: [...files.values()] });\n}\n","import { contentHash } from \"@openpond/harness\";\nimport { LearningDomainError, learningRef, sameLearningRef, requireLearningRelease, requireLearningResource, taskBatchPackageMetadata,\n type LearningResourcePointer, type LearningTransaction } from \"@openpond/evals/learning\";\nimport { validateTasksetPackage, type TasksetPackage } from \"./taskset-package-contracts.js\";\nimport { ModelBatchReviewInspectionSchema, ModelBatchReviewReceiptSchema, ModelBatchReviewRequestSchema, type ModelBatchReviewRequest } from \"./model-batch-review-contracts.js\";\nimport { prepareModelBatchReview } from \"./model-batch-review-preparation.js\";\n\nexport * from \"./model-batch-review-contracts.js\";\nexport { LearningDomainError as ModelBatchReviewError } from \"@openpond/evals/learning\";\n\nconst operation = (request: ModelBatchReviewRequest) => `model-batch-review-${contentHash([request.modelId, request.operationId])}`;\n\nexport function inspectModelBatchPackage(raw: unknown) {\n const value = validateTasksetPackage(raw);\n if (!value.learningResources) throw new LearningDomainError(\"model_review_batch_required\", 422);\n const metadata = taskBatchPackageMetadata(value.taskset);\n return ModelBatchReviewInspectionSchema.parse({ schemaVersion: \"openpond.modelBatchReviewInspection.v1\", packageHash: value.contentHash,\n definition: metadata.definition, binding: metadata.binding, evidence: value.learningResources.evidence, decisions: value.learningResources.decisions });\n}\n\nexport async function findModelBatchReview(transaction: LearningTransaction, raw: ModelBatchReviewRequest) {\n const request = ModelBatchReviewRequestSchema.parse(raw);\n const prior = await transaction.operation(operation(request));\n if (!prior) return null;\n if (prior.requestHash !== contentHash(request)) throw new LearningDomainError(\"learning_idempotency_conflict\", 409);\n return readReceipt(transaction, request, prior.resources);\n}\n\n/** Run inside the host's scope/Model revision transaction after verifying the\n * selected source package. This publishes new editable evidence, never a Model\n * attachment, admission, source credential, grade, or training job. */\nexport async function beginModelBatchReview(transaction: LearningTransaction, input: {\n scope: string; request: ModelBatchReviewRequest; package: TasksetPackage; now: string;\n}) {\n const request = ModelBatchReviewRequestSchema.parse(input.request);\n const prior = await findModelBatchReview(transaction, request);\n if (prior) return prior;\n const value = validateTasksetPackage(input.package);\n if (!value.learningResources) throw new LearningDomainError(\"model_review_batch_required\", 422);\n const metadata = taskBatchPackageMetadata(value.taskset);\n const selected = request.rewardBindingRef;\n const retained = !selected || sameLearningRef(selected, learningRef(metadata.binding));\n const binding = retained ? metadata.binding : await requireLearningRelease(transaction, \"binding\", selected);\n const rewards = retained ? metadata.rewards : await Promise.all(binding.sources.map(source => requireLearningRelease(transaction, \"reward\", source.reward)));\n const assetIds = new Set(rewards.flatMap(reward => [...reward.assets,\n ...(\"verifierRef\" in reward.implementation ? [reward.implementation.verifierRef] : []),\n ...(\"rubricRef\" in reward.implementation ? [reward.implementation.rubricRef] : []),\n ...(\"inputContract\" in reward.implementation ? [reward.implementation.inputContract] : []),\n ]).map(asset => asset.id));\n const assets = retained ? value.learningResources.assets : await Promise.all([...assetIds].map(id => requireLearningResource(transaction, \"asset\", id, 1)));\n const prepared = prepareModelBatchReview({ ...input, request, package: value, binding, rewards, assets });\n const pointers: LearningResourcePointer[] = [];\n for (const asset of prepared.assets) {\n const existing = await transaction.get(\"asset\", asset.id, 1);\n if (existing && existing.contentHash !== asset.contentHash) throw new LearningDomainError(\"model_review_asset_conflict\", 409);\n if (!existing) await transaction.put(\"asset\", asset, 0);\n }\n for (const reward of prepared.rewards) await transaction.put(\"reward\", reward, 0);\n await transaction.put(\"binding\", prepared.binding, 0);\n await transaction.put(\"definition\", prepared.definition, 0);\n await transaction.put(\"source\", prepared.source, 0, { parentId: request.modelId });\n pointers.push({ kind: \"source\", id: prepared.source.id, revision: 1 });\n for (const evidence of prepared.evidence) {\n await transaction.put(\"evidence\", evidence, 0, { parentId: prepared.source.id });\n pointers.push({ kind: \"evidence\", id: evidence.id, revision: 1 });\n }\n for (const proposal of prepared.proposals) {\n await transaction.put(\"feedback\", proposal, 0, { parentId: proposal.evidence!.id, status: proposal.status });\n pointers.push({ kind: \"feedback\", id: proposal.id, revision: 1 });\n }\n await transaction.saveOperation(operation(request), { requestHash: contentHash(request), resources: pointers });\n return readReceipt(transaction, request, pointers);\n}\n\nasync function readReceipt(transaction: LearningTransaction, request: ModelBatchReviewRequest, pointers: LearningResourcePointer[]) {\n const resources = await Promise.all(pointers.map(pointer => requireLearningResource(transaction, pointer.kind, pointer.id, pointer.revision)));\n return ModelBatchReviewReceiptSchema.parse({ schemaVersion: \"openpond.modelBatchReviewReceipt.v1\", operationId: request.operationId,\n modelId: request.modelId, source: resources.find(resource => resource.schemaVersion === \"openpond.learningSource.v1\"),\n evidence: resources.filter(resource => resource.schemaVersion === \"openpond.taskEvidence.v1\"),\n proposals: resources.filter(resource => resource.schemaVersion === \"openpond.taskFeedbackRecord.v1\"),\n });\n}\n","import { contentHash } from \"@openpond/harness\";\nimport { LearningDomainError, LearningSourceSchema, TaskDefinitionSchema, TaskEvidenceSchema, TaskFeedbackSchema,\n assertLearningContentHash, learningEvidenceId, learningRef, sameLearningRef, sealLearningContent,\n taskBatchPackageMetadata, verifyLearningTextAsset, type LearningTextAsset } from \"@openpond/evals/learning\";\nimport { compileBoundGraders, createRewardBinding, createRewardRelease, resolveBoundRewards, type RewardBinding, type RewardRelease } from \"@openpond/evals/rewards\";\nimport type { TasksetPackage } from \"./taskset-package-contracts.js\";\nimport type { ModelBatchReviewRequest } from \"./model-batch-review-contracts.js\";\n\n/** Hosts supply the authorized package and selected Reward graph. Only this\n * new namespace becomes editable; parent sources and decisions are not copied. */\nexport function prepareModelBatchReview(input: {\n scope: string; request: ModelBatchReviewRequest; package: TasksetPackage; now: string;\n binding: RewardBinding; rewards: RewardRelease[]; assets: LearningTextAsset[];\n}) {\n const { request, package: value } = input;\n const learning = value.learningResources;\n if (!learning) throw new LearningDomainError(\"model_review_batch_required\", 422);\n const metadata = taskBatchPackageMetadata(value.taskset);\n const id = `model-review-${contentHash([input.scope, request.modelId, request.operationId])}`;\n const edits = new Map(request.examples.map(edit => [contentHash(edit.evidence), edit]));\n const parentRefs = new Set(learning.evidence.map(evidence => contentHash(learningRef(evidence))));\n const decisions = new Map(learning.decisions.map(decision => [contentHash(decision.evidence), decision]));\n if (edits.size !== request.examples.length || request.examples.some(edit => !parentRefs.has(contentHash(edit.evidence)))) {\n throw new LearningDomainError(\"model_review_evidence_mismatch\", 409);\n }\n for (const resource of [input.binding, ...input.rewards, ...input.assets]) assertLearningContentHash(resource);\n resolveBoundRewards(input.binding, input.rewards);\n const rewardByHash = new Map<string, RewardRelease>();\n for (const source of input.binding.sources) {\n const original = input.rewards.find(reward => sameLearningRef(learningRef(reward), source.reward))!;\n const { contentHash: _hash, ...content } = original;\n rewardByHash.set(original.contentHash, createRewardRelease({ ...content, id: `${id}-reward-${original.contentHash}`, revision: 1 }));\n }\n const rewards = [...rewardByHash.values()];\n const { contentHash: _bindingHash, recipeRef: _recipe, ...bindingContent } = input.binding;\n const binding = createRewardBinding({ ...bindingContent, id: `${id}-binding`, revision: 1,\n sources: input.binding.sources.map(source => ({ ...source, reward: learningRef(rewardByHash.get(source.reward.contentHash)!) })),\n }, rewards);\n const assetRefs = rewards.flatMap(reward => [...reward.assets,\n ...(\"verifierRef\" in reward.implementation ? [reward.implementation.verifierRef] : []),\n ...(\"rubricRef\" in reward.implementation ? [reward.implementation.rubricRef] : []),\n ...(\"inputContract\" in reward.implementation ? [reward.implementation.inputContract] : []),\n ]);\n const assets = [...new Map(assetRefs.map(ref => {\n const asset = input.assets.find(asset => asset.id === ref.id);\n if (!asset) throw new LearningDomainError(\"model_review_reward_asset_missing\", 422);\n verifyLearningTextAsset(asset, ref);\n if (ref.visibility === \"policy\") throw new LearningDomainError(\"reward_asset_visibility_invalid\", 422);\n return [asset.id, asset] as const;\n })).values()];\n // New graders invalidate the parent's verifier-set identity. Preparation of\n // the newly sealed batch will bind its own exact execution releases.\n const { environmentRelease: _environment, verifierSetRelease: _verifiers, ...execution } = metadata.definition.execution;\n const { contentHash: _definitionHash, ...definitionContent } = metadata.definition;\n const definition = TaskDefinitionSchema.parse(sealLearningContent({ ...definitionContent, ...request.definition,\n id: `${id}-definition`, revision: 1, rewardBinding: learningRef(binding), execution: { ...execution,\n policy: { ...execution.policy, hiddenGraderRefs: compileBoundGraders(binding, rewards).filter(grader => grader.privileged).map(grader => grader.id) },\n },\n }));\n const source = LearningSourceSchema.parse(sealLearningContent({\n schemaVersion: \"openpond.learningSource.v1\", id, revision: 1, name: `${definition.name} review`, kind: \"direct\",\n taskDefinition: learningRef(definition), enabled: true, allowedSplits: [...new Set(learning.evidence.map(item => item.submission.split))],\n mapping: null, adapterVersion: null, reviewOrigin: { modelId: request.modelId, packageHash: value.contentHash,\n taskset: learningRef(value.taskset), batch: learningRef(learning.batch), rewardBinding: learningRef(input.binding) },\n }));\n const evidence = learning.evidence.map(parent => {\n const edit = edits.get(contentHash(learningRef(parent)));\n // Example/attempt IDs are unique within the original source, not across\n // all sources in a batch. Preserve both parents when merging namespaces.\n const attemptId = `review-${parent.contentHash}`;\n const policyChanged = contentHash({ instructions: definition.instructions, inputSchema: definition.inputSchema, outputSchema: definition.outputSchema, requiredOutputs: definition.requiredOutputs ?? [],\n input: edit?.input ?? parent.submission.input }) !== contentHash({ instructions: metadata.definition.instructions,\n inputSchema: metadata.definition.inputSchema, outputSchema: metadata.definition.outputSchema, requiredOutputs: metadata.definition.requiredOutputs ?? [], input: parent.submission.input });\n return TaskEvidenceSchema.parse(sealLearningContent({\n schemaVersion: \"openpond.taskEvidence.v1\", id: learningEvidenceId(source.id, parent.submission.exampleId, attemptId), revision: 1,\n source: learningRef(source), submission: { ...parent.submission, sourceId: source.id, taskDefinition: learningRef(definition),\n attemptId,\n // The old response was observed under the old policy-visible task. Its\n // parent snapshot remains available, but it is not a run of new inputs.\n observedOutput: policyChanged ? null : parent.submission.observedOutput,\n idempotencyKey: `${id}-${parent.contentHash}`, ...(edit?.input === undefined ? {} : { input: edit.input }),\n ...(edit?.expected === undefined ? {} : { expected: edit.expected }),\n ...(edit?.evaluatorContext === undefined ? {} : { evaluatorContext: edit.evaluatorContext }),\n }, supersedes: learningRef(parent), correctionFeedbackId: null, receivedAt: input.now,\n }));\n });\n const proposals = evidence.flatMap(item => {\n const edit = edits.get(contentHash(item.supersedes));\n const decision = decisions.get(contentHash(item.supersedes))!;\n const target = edit?.proposedTarget === undefined ? decision.approvedTarget : edit.proposedTarget;\n return target === null ? [] : [TaskFeedbackSchema.parse({\n schemaVersion: \"openpond.taskFeedbackRecord.v1\", id: `feedback-${contentHash([id, item.id])}`, revision: 1,\n submission: { schemaVersion: \"openpond.taskFeedback.v1\", sourceId: source.id, idempotencyKey: `${id}-${item.id}`,\n exampleId: item.submission.exampleId, attemptId: item.submission.attemptId, expectedEvidenceHash: item.contentHash,\n occurredAt: input.now, kind: \"target_correction\", value: target, note: \"Proposed target for the revised task. Grade and review before admission.\" },\n status: \"pending_review\", evidence: learningRef(item), createdAt: input.now, review: null,\n })];\n });\n return { source, definition, binding, rewards, assets, evidence, proposals };\n}\n","import { contentHash } from \"@openpond/harness\";\nimport { LearningDomainError } from \"@openpond/evals/learning\";\nimport { validateTasksetPackage, type TasksetPackage } from \"./taskset-package-contracts.js\";\nimport { resolveTasksetPackageExecution } from \"./taskset-package-execution.js\";\n\n/** The original package stays private. Share only selected task inputs/output\n * schemas and declared environment dependencies. New evidence gets regenerated\n * evaluator context; other tasks' context and the old declaration stay private.\n * Reward assets are imported through their own graph. */\nexport function datasetTrainingReviewFiles(value: TasksetPackage, taskIds: string[] | null) {\n const parent = validateTasksetPackage(value);\n const selected = taskIds ? new Set(taskIds) : null;\n const tasks = parent.taskset.tasks.filter(task => !selected || selected.has(task.id));\n if (!tasks.length || selected && tasks.length !== selected.size)\n throw new LearningDomainError(\"dataset_review_selection_mismatch\", 409);\n const references = tasks.flatMap(task => [...task.artifactRefs,\n ...(task.requiredOutputs ?? []).flatMap(output => output.schemaRef ? [output.schemaRef] : []),\n ]);\n const execution = resolveTasksetPackageExecution(parent);\n references.push(...[parent.environment.actionSchemaRef, parent.environment.observationSchemaRef,\n parent.environment.stateSchemaRef, execution?.execution.javascript.module].flatMap(ref => ref ? [ref] : []));\n const files = new Map<string, TasksetPackage[\"files\"][number]>();\n for (const ref of references) {\n const file = parent.files.find(item => item.asset.id === ref.id);\n if (!file || contentHash(file.asset) !== contentHash(ref))\n throw new LearningDomainError(\"dataset_review_asset_mismatch\", 409);\n files.set(file.asset.id, file);\n }\n for (const declarations of [parent.taskset.metadata.environmentResources, parent.environment.metadata.resources]) {\n if (declarations === undefined) continue;\n if (!Array.isArray(declarations)) throw new LearningDomainError(\"dataset_review_environment_resources_invalid\", 422);\n for (const declaration of declarations) {\n if (!declaration || typeof declaration !== \"object\" || !(\"path\" in declaration))\n throw new LearningDomainError(\"dataset_review_environment_resources_invalid\", 422);\n const matches = parent.files.filter(file => file.asset.path === declaration.path);\n if (matches.length !== 1) throw new LearningDomainError(\"dataset_review_environment_resource_ambiguous\", 422);\n files.set(matches[0]!.asset.id, matches[0]!);\n }\n }\n return [...files.values()];\n}\n","import { learningRef, LearningJsonObjectSchema, taskBatchPackageMetadata } from \"@openpond/evals/learning\";\nimport { DatasetTrainingReviewSourceSchema } from \"./dataset-training-review-contracts.js\";\nimport { resolveTasksetPackageInstructions, validateTasksetPackage, type TasksetPackage } from \"./taskset-package-contracts.js\";\n\n/** Pure inspection after the caller obtains an authorized immutable package.\n * This is not execution admission or authorization to share it. */\nexport function inspectDatasetTrainingReviewPackage(raw: TasksetPackage) {\n const value = validateTasksetPackage(raw);\n const parent = value.learningResources ? taskBatchPackageMetadata(value.taskset) : null;\n const definition = parent?.definition ?? value.modelResources?.taskDefinition;\n const binding = parent?.binding ?? value.modelResources?.rewardBinding;\n const instructions = definition?.instructions ?? resolveTasksetPackageInstructions(value);\n const contract = value.taskset.metadata.tasksetOutputContract;\n const ordinaryOutput = contract && typeof contract === \"object\" && !Array.isArray(contract)\n && \"mode\" in contract && contract.mode === \"structured_json\" && \"jsonSchema\" in contract\n ? LearningJsonObjectSchema.parse(contract.jsonSchema) : null;\n const outputSchema = definition?.outputSchema ?? ordinaryOutput;\n return DatasetTrainingReviewSourceSchema.parse({\n schemaVersion: \"openpond.datasetTrainingReviewSource.v1\", dataset: learningRef(value.taskset),\n packageHash: value.contentHash, taskCount: value.taskset.tasks.length,\n definition: { name: definition?.name ?? value.taskset.id,\n ...(instructions?.trim() ? { instructions } : {}),\n ...(definition ? { inputSchema: definition.inputSchema } : {}),\n ...(outputSchema ? { outputSchema } : {}),\n ...(definition?.requiredOutputs ? { requiredOutputs: definition.requiredOutputs } : {}),\n },\n rewardBinding: binding ? learningRef(binding) : null,\n hasParentTargets: value.learningResources?.decisions.some(decision => decision.approvedTarget !== null) ?? false,\n });\n}\n","import { contentHash } from \"@openpond/harness\";\nimport { LearningDomainError, LearningJsonObjectSchema, LearningSourceSchema, TaskDefinitionSchema,\n TaskEvidenceSchema, TaskFeedbackSchema, assertLearningContentHash, learningEvidenceId, learningRef,\n sameLearningRef, sealLearningContent, taskBatchPackageMetadata, verifyLearningTextAsset,\n type LearningTextAsset } from \"@openpond/evals/learning\";\nimport { resolveBoundRewards, compileBoundGraders, type RewardBinding, type RewardRelease } from \"@openpond/evals/rewards\";\nimport { validateTaskValue } from \"@openpond/evals/task-schema\";\nimport { DatasetTrainingReviewRequestSchema, type DatasetTrainingReviewRequest } from \"./dataset-training-review-contracts.js\";\nimport { validateTasksetPackage, resolveTasksetPackageInstructions, decodeTasksetPackageFile, type TasksetPackage } from \"./taskset-package-contracts.js\";\n\nexport function datasetTrainingReviewIdentity(teamId: string, actorId: string, operationId: string) {\n return `dataset-review-${contentHash([teamId, actorId, operationId])}`;\n}\n\n/** Pure conversion, never authorization or admission. The host authorizes the\n * exact source, retains its immutable bytes and sharing receipt, then commits\n * new evidence with this graph. It must not expose the retained parent package\n * or unrelated files merely because selected examples become workspace-shared. */\nexport function prepareDatasetTrainingReview(input: {\n request: DatasetTrainingReviewRequest;\n actorId: string;\n package: TasksetPackage;\n now: string;\n /** For ordinary packages the host derives a stable namespace from the\n * authorized Dataset family, shared by all its published versions. */\n familyNamespace?: string;\n /** A selected saved Reward graph is required for an ordinary package. */\n graph?: { binding: RewardBinding; rewards: RewardRelease[]; assets: LearningTextAsset[] };\n}) {\n const request = DatasetTrainingReviewRequestSchema.parse(input.request);\n const value = validateTasksetPackage(input.package);\n if (value.contentHash !== request.packageHash || !sameLearningRef(learningRef(value.taskset), request.dataset))\n throw new LearningDomainError(\"dataset_review_source_mismatch\", 409);\n const id = datasetTrainingReviewIdentity(request.teamId, input.actorId, request.operationId);\n const parent = value.learningResources ? taskBatchPackageMetadata(value.taskset) : null;\n const parentDefinition = parent?.definition ?? value.modelResources?.taskDefinition;\n const retainedGraph = parent ? { binding: parent.binding, rewards: parent.rewards, assets: value.learningResources!.assets }\n : value.modelResources ? { binding: value.modelResources.rewardBinding, rewards: value.modelResources.rewards, assets: value.modelResources.assets } : null;\n const graph = input.graph ?? retainedGraph;\n if (!graph) throw new LearningDomainError(\"dataset_review_reward_required\", 422, \"Select an exact saved Reward binding before importing this Dataset for review.\");\n const requestedBinding = request.rewardBindingRef ?? retainedGraph?.binding;\n if (!requestedBinding || !sameLearningRef(learningRef(graph.binding), requestedBinding))\n throw new LearningDomainError(\"dataset_review_reward_mismatch\", 409);\n for (const resource of [graph.binding, ...graph.rewards, ...graph.assets]) assertLearningContentHash(resource);\n resolveBoundRewards(graph.binding, graph.rewards);\n const assetRefs = graph.rewards.flatMap(reward => [...reward.assets,\n ...(\"verifierRef\" in reward.implementation ? [reward.implementation.verifierRef] : []),\n ...(\"rubricRef\" in reward.implementation ? [reward.implementation.rubricRef] : []),\n ...(\"inputContract\" in reward.implementation ? [reward.implementation.inputContract] : []),\n ]);\n const assets = [...new Map(assetRefs.map(ref => {\n const asset = graph.assets.find(item => item.id === ref.id);\n if (!asset || ref.visibility === \"policy\") throw new LearningDomainError(\"dataset_review_reward_asset_missing\", 422);\n verifyLearningTextAsset(asset, ref);\n const original = value.files.find(file => file.asset.id === ref.id);\n if (original && contentHash(original.asset) !== contentHash(ref))\n throw new LearningDomainError(\"dataset_review_asset_conflict\", 409);\n return [asset.id, asset] as const;\n })).values()];\n const selected = request.taskIds ? new Set(request.taskIds) : null;\n const tasks = value.taskset.tasks.filter(task => !selected || selected.has(task.id));\n if (!tasks.length || tasks.length > 10_000 || selected && tasks.length !== selected.size)\n throw new LearningDomainError(\"dataset_review_selection_mismatch\", 409);\n if (request.targetSource === \"approved_parent\" && !value.learningResources)\n throw new LearningDomainError(\"dataset_review_parent_targets_unavailable\", 422);\n const familyNamespace = parentDefinition?.familyNamespace ?? input.familyNamespace;\n if (!familyNamespace)\n throw new LearningDomainError(\"dataset_review_family_required\", 422, \"Resolve the Dataset's stable family before importing its versions.\");\n const instructions = request.definition.instructions ?? parentDefinition?.instructions ?? resolveTasksetPackageInstructions(value);\n if (!instructions.trim())\n throw new LearningDomainError(\"dataset_review_instructions_required\", 422, \"Provide the task instructions before importing this Dataset.\");\n const outputContract = value.taskset.metadata.tasksetOutputContract;\n const ordinaryOutput = outputContract && typeof outputContract === \"object\" && !Array.isArray(outputContract)\n && \"mode\" in outputContract && outputContract.mode === \"structured_json\" && \"jsonSchema\" in outputContract\n ? LearningJsonObjectSchema.parse(outputContract.jsonSchema) : null;\n const outputSchema = request.definition.outputSchema ?? parentDefinition?.outputSchema ?? ordinaryOutput;\n if (!outputSchema)\n throw new LearningDomainError(\"dataset_review_output_contract_required\", 422, \"Provide the actual output contract for this Dataset; importing does not infer a target schema.\");\n // Parent verifier-set qualifications describe different evidence. The batch\n // exporter later binds its own exact execution releases, as in Model review.\n const { environmentRelease: _environment, verifierSetRelease: _verifiers, ...execution } = value.taskset;\n const definition = TaskDefinitionSchema.parse(sealLearningContent({\n schemaVersion: \"openpond.taskDefinition.v1\", id: `${id}-definition`, revision: 1,\n name: request.definition.name ?? parentDefinition?.name ?? value.taskset.id,\n description: parentDefinition?.description ?? \"\", instructions,\n category: parentDefinition?.category ?? \"custom\", familyNamespace,\n inputSchema: request.definition.inputSchema ?? parentDefinition?.inputSchema ?? { type: \"object\" }, outputSchema,\n ...(request.definition.requiredOutputs ?? parentDefinition?.requiredOutputs\n ? { requiredOutputs: request.definition.requiredOutputs ?? parentDefinition?.requiredOutputs } : {}),\n ...(parentDefinition?.contextRequirements ? { contextRequirements: parentDefinition.contextRequirements } : {}),\n harness: parentDefinition?.harness ?? null, rewardBinding: learningRef(graph.binding),\n execution: { policy: { ...execution.policy, hiddenGraderRefs: compileBoundGraders(graph.binding, graph.rewards).filter(grader => grader.privileged).map(grader => grader.id) },\n environment: execution.environment, tools: execution.tools, capabilities: execution.capabilities },\n }));\n const source = LearningSourceSchema.parse(sealLearningContent({\n schemaVersion: \"openpond.learningSource.v1\", id, revision: 1, name: `${definition.name.slice(0, 480)} review`,\n kind: \"direct\", taskDefinition: learningRef(definition), enabled: true,\n allowedSplits: [...new Set(tasks.map(task => task.split))], mapping: null, adapterVersion: null,\n datasetOrigin: { receiptId: id, packageHash: value.contentHash, taskset: learningRef(value.taskset) },\n }));\n const parents = new Map(value.learningResources?.evidence.map(item => [item.id, item]) ?? []);\n const decisions = new Map(value.learningResources?.decisions.map(item => [contentHash(item.evidence), item]) ?? []);\n const evidence = tasks.map(task => {\n const original = parents.get(task.id);\n const evaluatorContext = original?.submission.evaluatorContext ?? readPrivateContext(value, task.privilegedContextRef);\n const policyVisibleContext = { ...task.policyVisibleContext,\n ...(request.definition.instructions === undefined ? {} : { instructions: definition.instructions }) };\n const changedPolicy = request.definition.instructions !== undefined\n && request.definition.instructions !== parentDefinition?.instructions;\n return TaskEvidenceSchema.parse(sealLearningContent({\n schemaVersion: \"openpond.taskEvidence.v1\",\n id: learningEvidenceId(source.id, task.id, `dataset-${value.contentHash}`), revision: 1,\n source: learningRef(source), supersedes: original ? learningRef(original) : null,\n correctionFeedbackId: null, receivedAt: input.now,\n submission: { schemaVersion: \"openpond.taskExample.v1\", sourceId: source.id,\n idempotencyKey: `${id}-${contentHash(task.id)}`, taskDefinition: learningRef(definition),\n exampleId: task.id, attemptId: `dataset-${value.contentHash}`,\n occurredAt: original?.submission.occurredAt ?? input.now, familyKey: task.clusterKey,\n split: task.split, input: task.input, policyVisibleContext,\n observedOutput: !changedPolicy && original ? original.submission.observedOutput : null,\n expected: task.expectedOutput, evaluatorContext, assets: task.artifactRefs,\n ...(task.requiredOutputs ? { requiredOutputs: task.requiredOutputs } : {}),\n provenance: { sourceRecordRef: JSON.stringify({ dataset: request.dataset, taskId: task.id }),\n mappingHash: contentHash({ schemaVersion: \"openpond.datasetTrainingReviewMapping.v1\", dataset: request.dataset, packageHash: value.contentHash }) },\n },\n }));\n });\n const proposals = evidence.flatMap(item => {\n const original = parents.get(item.submission.exampleId);\n const target = request.targetSource === \"expected_output\" ? item.submission.expected\n : request.targetSource === \"approved_parent\" && original ? decisions.get(contentHash(learningRef(original)))?.approvedTarget ?? null : null;\n if (target === null) return [];\n if (!validateTaskValue(definition.outputSchema, target).valid)\n throw new LearningDomainError(\"dataset_review_target_schema_mismatch\", 422, \"A proposed Dataset target differs from the selected output contract. Import without proposals or provide the matching contract.\");\n return [TaskFeedbackSchema.parse({\n schemaVersion: \"openpond.taskFeedbackRecord.v1\", id: `feedback-${contentHash([source.id, item.id])}`, revision: 1,\n submission: { schemaVersion: \"openpond.taskFeedback.v1\", sourceId: source.id,\n idempotencyKey: `${source.id}-${contentHash(item.id)}`, exampleId: item.submission.exampleId,\n attemptId: item.submission.attemptId, expectedEvidenceHash: item.contentHash,\n occurredAt: input.now, kind: \"target_correction\", value: target,\n note: \"Dataset target proposal. Grade and review this exact evidence before admission.\" },\n status: \"pending_review\", evidence: learningRef(item), createdAt: input.now, review: null,\n })];\n });\n return { id, request, source, definition, binding: graph.binding, rewards: graph.rewards, assets, evidence, proposals };\n}\n\nfunction readPrivateContext(value: TasksetPackage, id: string | null) {\n if (!id) return null;\n const file = value.files.find(item => item.asset.id === id);\n if (!file || file.asset.visibility !== \"host_private\") throw new LearningDomainError(\"dataset_review_private_context_missing\", 422);\n try {\n return LearningJsonObjectSchema.parse(JSON.parse(new TextDecoder(\"utf-8\", { fatal: true }).decode(decodeTasksetPackageFile(file))));\n } catch {\n throw new LearningDomainError(\"dataset_review_private_context_unsupported\", 422, \"This Dataset's private context is not an object envelope supported by the review engine.\");\n }\n}\n","import { z } from \"zod\";\nimport { contentHash, sha256 } from \"@openpond/harness\";\nimport { learningRef, sameLearningRef } from \"@openpond/evals/learning\";\nimport { ModelTasksetDraftPreparationSchema, TasksetDraftFilePathSchema, type ModelTasksetDraftPreparation } from \"./model-taskset-authoring-contracts.js\";\nimport { TasksetDraftSchema, type TasksetDraft } from \"./taskset-draft-document.js\";\nimport { AuthoredTasksetFileInventorySchema } from \"./taskset-authored-files.js\";\nimport { validateTasksetPackage, type TasksetPackage } from \"./taskset-package-contracts.js\";\nimport { isManagedTasksetDraftFilePath } from \"./taskset-draft-files.js\";\nimport { configuredTasksetDraftFiles } from \"./taskset-draft-manifests.js\";\nimport { createTasksetDraftWorkspace, decodeTasksetDraftWorkspaceFile, type TasksetDraftWorkspaceFile } from \"./taskset-draft-workspace.js\";\n\nexport const TasksetDraftSourceInitializationSchema = z.object({\n draft: TasksetDraftSchema,\n filePaths: z.array(z.object({ assetId: z.string().min(1), paths: z.array(TasksetDraftFilePathSchema).min(1).max(10_000) }).strict()).max(10_000),\n}).strict();\nexport type TasksetDraftSourceInitialization = z.infer<typeof TasksetDraftSourceInitializationSchema>;\n\n/** Hosts authorize the source projection and retain this result before writes.\n * Ownership comes from preparation, never from editable projection metadata. */\nexport function prepareTasksetDraftSource(input: { sourceDraft: TasksetDraft; source: TasksetPackage; preparation: ModelTasksetDraftPreparation; expectedModelRevision: number }): TasksetDraftSourceInitialization {\n const source = validateTasksetPackage(input.source);\n const original = TasksetDraftSchema.parse(input.sourceDraft);\n const preparation = ModelTasksetDraftPreparationSchema.parse(input.preparation);\n if (source.contentHash !== preparation.sourcePackageHash || !sameLearningRef(learningRef(source.taskset), preparation.sourceTasksetRef)) throw new Error(\"Taskset draft preparation differs from its source package.\");\n if (source.learningResources) throw new Error(\"Reviewed Tasksets require their reviewed authoring workflow.\");\n if (Boolean(source.modelResources) !== (preparation.authoringGraph === \"bound\")) throw new Error(\"Taskset draft authoring graph differs from its source.\");\n const inventory = AuthoredTasksetFileInventorySchema.parse(original.metadata.portableFileInventory ?? []);\n const sourcePath = (relative: string) => isManagedTasksetDraftFilePath(relative)\n ? `source-artifacts/${source.contentHash}/${contentHash(relative)}/${relative.split(\"/\").at(-1)!}` : relative;\n const references = [...original.tasks.flatMap(task => (task.assets ?? []).map(asset => asset.artifactRef)),\n ...(original.environment.resources ?? []).map(resource => resource.path),\n ...source.taskset.tasks.flatMap(task => (task.requiredOutputs ?? []).flatMap(output => output.schemaRef ? [output.schemaRef.path] : [])),\n ...(original.metrics.customAggregator ? [original.metrics.customAggregator.module] : []),\n ...original.graders.flatMap(grader => grader.kind === \"custom_verifier\" ? [grader.module] : [])];\n if (references.some(isManagedTasksetDraftFilePath)) throw new Error(\"A referenced source asset occupies a reserved Taskset authoring path.\");\n const filePaths = source.files.map(file => {\n const paths = new Set([file.asset.path]);\n for (const entry of inventory) if (entry.asset.id === file.asset.id) paths.add(entry.sourcePath);\n for (const task of original.tasks) for (const asset of task.assets ?? []) if (asset.id === file.asset.id) paths.add(asset.artifactRef);\n for (const grader of source.taskset.graders) if (grader.kind === \"custom_verifier\" && grader.verifierRef.id === file.asset.id) {\n const projected = original.graders.find(candidate => candidate.id === grader.id);\n if (projected?.kind === \"custom_verifier\") paths.add(projected.module);\n }\n return { assetId: file.asset.id, paths: [...paths].map(sourcePath) };\n });\n const metadata = { ...original.metadata };\n if (source.modelResources) for (const key of [\"taskDefinition\", \"rewardBinding\", \"rewardExecution\", \"derivedPortableMetadata\", \"modelTasksetDerivation\", \"importedPackageHash\"]) delete metadata[key];\n const draft = TasksetDraftSchema.parse({ ...original, id: preparation.draftId, revision: 1, status: \"draft\",\n graders: original.graders.map(grader => ({ ...grader, metadata: { ...grader.metadata,\n portableGrader: source.taskset.graders.find(candidate => candidate.id === grader.id) } })),\n environment: { ...original.environment, metadata: { ...original.environment.metadata, portableExecutionResources: { environment: source.environment } } },\n modelScope: { modelId: preparation.lineage.owner.modelId, expectedModelRevision: input.expectedModelRevision, source: preparation },\n publishedTasksetRef: preparation.tasksetRevision > 1 ? preparation.sourceTasksetRef : null,\n metadata: { ...metadata, modelTasksetAuthoring: preparation.lineage,\n portableFileInventory: inventory.map(entry => ({ ...entry, sourcePath: sourcePath(entry.sourcePath), asset: { ...entry.asset,\n id: isManagedTasksetDraftFilePath(entry.sourcePath) ? `source-artifact-${contentHash({ packageHash: source.contentHash, assetId: entry.asset.id })}` : entry.asset.id,\n path: sourcePath(entry.asset.path) } })) },\n });\n return TasksetDraftSourceInitializationSchema.parse({ draft, filePaths });\n}\n\n/** Materialize the retained source into an immutable draft snapshot. Callers\n * must never replace a newer saved snapshot with this initial population. */\nexport function materializeTasksetDraftWorkspace(input: { initialized: TasksetDraftSourceInitialization; source: TasksetPackage }) {\n const initialized = TasksetDraftSourceInitializationSchema.parse(input.initialized);\n const source = validateTasksetPackage(input.source);\n if (initialized.draft.modelScope?.source?.sourcePackageHash !== source.contentHash) throw new Error(\"Taskset draft lost its source preparation.\");\n const files = new Map<string, TasksetDraftWorkspaceFile>();\n for (const mapping of initialized.filePaths) {\n const file = source.files.find(candidate => candidate.asset.id === mapping.assetId);\n if (!file) throw new Error(\"Taskset draft source asset is missing.\");\n for (const path of mapping.paths) {\n const previous = files.get(path);\n if (previous && previous.contentHash !== file.asset.contentHash) throw new Error(\"Taskset draft source paths conflict.\");\n files.set(path, { path, contentHash: file.asset.contentHash, sizeBytes: file.asset.sizeBytes, base64: file.base64 });\n }\n }\n for (const configured of configuredTasksetDraftFiles(initialized.draft)) if (!files.has(configured.relativePath)) {\n const bytes = new TextEncoder().encode(configured.source);\n files.set(configured.relativePath, { path: configured.relativePath, contentHash: sha256(bytes), sizeBytes: bytes.byteLength, base64: Buffer.from(bytes).toString(\"base64\") });\n }\n let draft = initialized.draft;\n if (draft.metrics.customAggregator) {\n const file = files.get(draft.metrics.customAggregator.module);\n if (!file) throw new Error(\"Declared Taskset metric module is missing.\");\n decodeTasksetDraftWorkspaceFile(file);\n draft = TasksetDraftSchema.parse({ ...draft, metrics: { ...draft.metrics, customAggregator: { ...draft.metrics.customAggregator, contentHash: file.contentHash } } });\n }\n return createTasksetDraftWorkspace({ schemaVersion: \"openpond.tasksetDraftWorkspace.v1\", draft, files: [...files.values()] });\n}\n"],"mappings":"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","names":["file","LearningDomainError","learningRef","sameLearningRef","taskBatchPackageMetadata","TaskDefinitionSchema","learningRef","sealLearningContent","evidence","source","asset","LearningDomainError","taskBatchPackageMetadata","sameLearningRef","learningRef","LearningDomainError","LearningDomainError","learningRef","taskBatchPackageMetadata","taskBatchPackageMetadata","learningRef","LearningDomainError","LearningJsonObjectSchema","LearningSourceSchema","TaskDefinitionSchema","TaskEvidenceSchema","TaskFeedbackSchema","assertLearningContentHash","learningEvidenceId","learningRef","sameLearningRef","sealLearningContent","taskBatchPackageMetadata","verifyLearningTextAsset","resolveBoundRewards","compileBoundGraders","sameLearningRef","learningRef","LearningDomainError","taskBatchPackageMetadata","assertLearningContentHash","resolveBoundRewards","verifyLearningTextAsset","LearningJsonObjectSchema","TaskDefinitionSchema","sealLearningContent","compileBoundGraders","LearningSourceSchema","TaskEvidenceSchema","learningEvidenceId","TaskFeedbackSchema","learningRef","sameLearningRef","sameLearningRef","learningRef"]}
@@ -0,0 +1,85 @@
1
+ // src/training-supervised.ts
2
+ import { z } from "zod";
3
+ var Id = z.string().trim().min(1).max(240);
4
+ var Hash = z.string().trim().min(8).max(256);
5
+ var SftRecipeSchema = z.object({
6
+ schemaVersion: z.literal("openpond.sftRecipe.v1"),
7
+ method: z.literal("sft"),
8
+ parameterization: z.literal("lora"),
9
+ baseModel: z.object({
10
+ id: Id,
11
+ revision: z.string().trim().min(1).max(256),
12
+ tokenizerRevision: z.string().trim().min(1).max(256),
13
+ chatTemplateHash: Hash
14
+ }),
15
+ dataset: z.object({
16
+ trainSplit: z.literal("train"),
17
+ validationSplit: z.enum(["validation", "frozen_eval"]),
18
+ completionOnly: z.boolean(),
19
+ maxSequenceLength: z.number().int().positive().max(32768),
20
+ maxExamples: z.number().int().positive().max(1e5).default(1e3),
21
+ selectionStrategy: z.literal("stable_hash_top_n").default("stable_hash_top_n"),
22
+ selectionSeed: z.number().int().default(17)
23
+ }),
24
+ lora: z.object({
25
+ rank: z.number().int().positive().max(256),
26
+ alpha: z.number().positive().max(1024),
27
+ dropout: z.number().min(0).max(1),
28
+ targetModules: z.array(Id).min(1).max(100)
29
+ }),
30
+ optimizer: z.object({
31
+ learningRate: z.number().positive(),
32
+ epochs: z.number().positive().max(100),
33
+ maxSteps: z.number().int().positive().max(1e6),
34
+ batchSize: z.number().int().positive().max(1e4),
35
+ gradientAccumulationSteps: z.number().int().positive().max(1e4),
36
+ seed: z.number().int()
37
+ }),
38
+ resourceLimits: z.object({
39
+ cpuThreads: z.number().int().positive().max(256),
40
+ memoryBytes: z.number().int().positive(),
41
+ wallTimeMs: z.number().int().positive()
42
+ })
43
+ });
44
+ var ManagedSftRecipeSchema = SftRecipeSchema.safeExtend({
45
+ dataset: SftRecipeSchema.shape.dataset.safeExtend({
46
+ completionOnly: z.literal(true),
47
+ maxSequenceLength: z.number().int().min(2).max(8192),
48
+ maxExamples: z.number().int().min(1).max(1e3).default(1e3)
49
+ }),
50
+ lora: SftRecipeSchema.shape.lora.safeExtend({
51
+ rank: z.number().int().min(1).max(64),
52
+ dropout: z.number().min(0).lt(1),
53
+ targetModules: z.array(z.enum(["q_proj", "k_proj", "v_proj", "o_proj", "gate_proj", "up_proj", "down_proj"])).min(1).max(7)
54
+ }),
55
+ optimizer: SftRecipeSchema.shape.optimizer.safeExtend({
56
+ learningRate: z.number().positive().max(1e-3),
57
+ epochs: z.number().positive().max(10),
58
+ maxSteps: z.number().int().min(1).max(128),
59
+ batchSize: z.number().int().min(1).max(32),
60
+ gradientAccumulationSteps: z.number().int().min(1).max(32),
61
+ seed: z.number().int().min(-(2 ** 31)).max(2 ** 31 - 1)
62
+ }),
63
+ resourceLimits: SftRecipeSchema.shape.resourceLimits.safeExtend({
64
+ wallTimeMs: z.number().int().min(1e3).max(216e5)
65
+ })
66
+ }).superRefine((recipe, context) => {
67
+ if (recipe.optimizer.batchSize * recipe.optimizer.gradientAccumulationSteps > 32)
68
+ context.addIssue({
69
+ code: "custom",
70
+ path: ["optimizer"],
71
+ message: "Managed SFT supports at most 32 accumulated examples."
72
+ });
73
+ if (new Set(recipe.lora.targetModules).size !== recipe.lora.targetModules.length)
74
+ context.addIssue({
75
+ code: "custom",
76
+ path: ["lora", "targetModules"],
77
+ message: "Adapter target modules must be unique."
78
+ });
79
+ });
80
+
81
+ export {
82
+ SftRecipeSchema,
83
+ ManagedSftRecipeSchema
84
+ };
85
+ //# sourceMappingURL=chunk-UVQENVTW.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/training-supervised.ts"],"sourcesContent":["import { z } from \"zod\";\n\nconst Id = z.string().trim().min(1).max(240);\nconst Hash = z.string().trim().min(8).max(256);\n\n/** Shared recipe for the public API, local workbench, and managed executor.\n * Supervised training has no rollout-group, reward, or relative-loss settings.\n */\nexport const SftRecipeSchema = z.object({\n schemaVersion: z.literal(\"openpond.sftRecipe.v1\"),\n method: z.literal(\"sft\"),\n parameterization: z.literal(\"lora\"),\n baseModel: z.object({\n id: Id,\n revision: z.string().trim().min(1).max(256),\n tokenizerRevision: z.string().trim().min(1).max(256),\n chatTemplateHash: Hash,\n }),\n dataset: z.object({\n trainSplit: z.literal(\"train\"),\n validationSplit: z.enum([\"validation\", \"frozen_eval\"]),\n completionOnly: z.boolean(),\n maxSequenceLength: z.number().int().positive().max(32_768),\n maxExamples: z.number().int().positive().max(100_000).default(1_000),\n selectionStrategy: z.literal(\"stable_hash_top_n\").default(\"stable_hash_top_n\"),\n selectionSeed: z.number().int().default(17),\n }),\n lora: z.object({\n rank: z.number().int().positive().max(256),\n alpha: z.number().positive().max(1_024),\n dropout: z.number().min(0).max(1),\n targetModules: z.array(Id).min(1).max(100),\n }),\n optimizer: z.object({\n learningRate: z.number().positive(),\n epochs: z.number().positive().max(100),\n maxSteps: z.number().int().positive().max(1_000_000),\n batchSize: z.number().int().positive().max(10_000),\n gradientAccumulationSteps: z.number().int().positive().max(10_000),\n seed: z.number().int(),\n }),\n resourceLimits: z.object({\n cpuThreads: z.number().int().positive().max(256),\n memoryBytes: z.number().int().positive(),\n wallTimeMs: z.number().int().positive(),\n }),\n});\nexport type SftRecipe = z.infer<typeof SftRecipeSchema>;\n\n/** The first managed SFT worker has a deliberately bounded execution surface.\n * This is an executable requirement, not an advertised fleet capability.\n */\nexport const ManagedSftRecipeSchema = SftRecipeSchema.safeExtend({\n dataset: SftRecipeSchema.shape.dataset.safeExtend({\n completionOnly: z.literal(true),\n maxSequenceLength: z.number().int().min(2).max(8192),\n maxExamples: z.number().int().min(1).max(1000).default(1000),\n }),\n lora: SftRecipeSchema.shape.lora.safeExtend({\n rank: z.number().int().min(1).max(64),\n dropout: z.number().min(0).lt(1),\n targetModules: z\n .array(z.enum([\"q_proj\", \"k_proj\", \"v_proj\", \"o_proj\", \"gate_proj\", \"up_proj\", \"down_proj\"]))\n .min(1)\n .max(7),\n }),\n optimizer: SftRecipeSchema.shape.optimizer.safeExtend({\n learningRate: z.number().positive().max(0.001),\n epochs: z.number().positive().max(10),\n maxSteps: z.number().int().min(1).max(128),\n batchSize: z.number().int().min(1).max(32),\n gradientAccumulationSteps: z.number().int().min(1).max(32),\n seed: z\n .number()\n .int()\n .min(-(2 ** 31))\n .max(2 ** 31 - 1),\n }),\n resourceLimits: SftRecipeSchema.shape.resourceLimits.safeExtend({\n wallTimeMs: z.number().int().min(1000).max(21_600_000),\n }),\n}).superRefine((recipe, context) => {\n if (recipe.optimizer.batchSize * recipe.optimizer.gradientAccumulationSteps > 32)\n context.addIssue({\n code: \"custom\",\n path: [\"optimizer\"],\n message: \"Managed SFT supports at most 32 accumulated examples.\",\n });\n if (new Set(recipe.lora.targetModules).size !== recipe.lora.targetModules.length)\n context.addIssue({\n code: \"custom\",\n path: [\"lora\", \"targetModules\"],\n message: \"Adapter target modules must be unique.\",\n });\n});\n"],"mappings":";AAAA,SAAS,SAAS;AAElB,IAAM,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG;AAC3C,IAAM,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG;AAKtC,IAAM,kBAAkB,EAAE,OAAO;AAAA,EACtC,eAAe,EAAE,QAAQ,uBAAuB;AAAA,EAChD,QAAQ,EAAE,QAAQ,KAAK;AAAA,EACvB,kBAAkB,EAAE,QAAQ,MAAM;AAAA,EAClC,WAAW,EAAE,OAAO;AAAA,IAClB,IAAI;AAAA,IACJ,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG;AAAA,IAC1C,mBAAmB,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG;AAAA,IACnD,kBAAkB;AAAA,EACpB,CAAC;AAAA,EACD,SAAS,EAAE,OAAO;AAAA,IAChB,YAAY,EAAE,QAAQ,OAAO;AAAA,IAC7B,iBAAiB,EAAE,KAAK,CAAC,cAAc,aAAa,CAAC;AAAA,IACrD,gBAAgB,EAAE,QAAQ;AAAA,IAC1B,mBAAmB,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,KAAM;AAAA,IACzD,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,GAAO,EAAE,QAAQ,GAAK;AAAA,IACnE,mBAAmB,EAAE,QAAQ,mBAAmB,EAAE,QAAQ,mBAAmB;AAAA,IAC7E,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE;AAAA,EAC5C,CAAC;AAAA,EACD,MAAM,EAAE,OAAO;AAAA,IACb,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,GAAG;AAAA,IACzC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,IAAK;AAAA,IACtC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC;AAAA,IAChC,eAAe,EAAE,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG;AAAA,EAC3C,CAAC;AAAA,EACD,WAAW,EAAE,OAAO;AAAA,IAClB,cAAc,EAAE,OAAO,EAAE,SAAS;AAAA,IAClC,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,GAAG;AAAA,IACrC,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,GAAS;AAAA,IACnD,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,GAAM;AAAA,IACjD,2BAA2B,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,GAAM;AAAA,IACjE,MAAM,EAAE,OAAO,EAAE,IAAI;AAAA,EACvB,CAAC;AAAA,EACD,gBAAgB,EAAE,OAAO;AAAA,IACvB,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,GAAG;AAAA,IAC/C,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS;AAAA,IACvC,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS;AAAA,EACxC,CAAC;AACH,CAAC;AAMM,IAAM,yBAAyB,gBAAgB,WAAW;AAAA,EAC/D,SAAS,gBAAgB,MAAM,QAAQ,WAAW;AAAA,IAChD,gBAAgB,EAAE,QAAQ,IAAI;AAAA,IAC9B,mBAAmB,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,IAAI;AAAA,IACnD,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,GAAI,EAAE,QAAQ,GAAI;AAAA,EAC7D,CAAC;AAAA,EACD,MAAM,gBAAgB,MAAM,KAAK,WAAW;AAAA,IAC1C,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE;AAAA,IACpC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC;AAAA,IAC/B,eAAe,EACZ,MAAM,EAAE,KAAK,CAAC,UAAU,UAAU,UAAU,UAAU,aAAa,WAAW,WAAW,CAAC,CAAC,EAC3F,IAAI,CAAC,EACL,IAAI,CAAC;AAAA,EACV,CAAC;AAAA,EACD,WAAW,gBAAgB,MAAM,UAAU,WAAW;AAAA,IACpD,cAAc,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,IAAK;AAAA,IAC7C,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE;AAAA,IACpC,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG;AAAA,IACzC,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE;AAAA,IACzC,2BAA2B,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE;AAAA,IACzD,MAAM,EACH,OAAO,EACP,IAAI,EACJ,IAAI,EAAE,KAAK,GAAG,EACd,IAAI,KAAK,KAAK,CAAC;AAAA,EACpB,CAAC;AAAA,EACD,gBAAgB,gBAAgB,MAAM,eAAe,WAAW;AAAA,IAC9D,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,GAAI,EAAE,IAAI,KAAU;AAAA,EACvD,CAAC;AACH,CAAC,EAAE,YAAY,CAAC,QAAQ,YAAY;AAClC,MAAI,OAAO,UAAU,YAAY,OAAO,UAAU,4BAA4B;AAC5E,YAAQ,SAAS;AAAA,MACf,MAAM;AAAA,MACN,MAAM,CAAC,WAAW;AAAA,MAClB,SAAS;AAAA,IACX,CAAC;AACH,MAAI,IAAI,IAAI,OAAO,KAAK,aAAa,EAAE,SAAS,OAAO,KAAK,cAAc;AACxE,YAAQ,SAAS;AAAA,MACf,MAAM;AAAA,MACN,MAAM,CAAC,QAAQ,eAAe;AAAA,MAC9B,SAAS;AAAA,IACX,CAAC;AACL,CAAC;","names":[]}
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  RunExperimentSchema
3
- } from "./chunk-K54BDIKL.js";
3
+ } from "./chunk-ZQFROKKS.js";
4
4
  import {
5
5
  HostedModelProjectSummarySchema
6
- } from "./chunk-UOV2LEXS.js";
6
+ } from "./chunk-MVAEE5EI.js";
7
7
  import {
8
8
  OpenPondProtocolError,
9
9
  canonicalSha256
@@ -246,7 +246,19 @@ var HostedTrainingSetupCatalogSchema = z.object({
246
246
  ).max(1e4)
247
247
  }).strict();
248
248
  var HostedTrainingSetupActionSchema = z.enum([
249
+ "hardware-catalog",
250
+ "gpu-catalog",
251
+ "modification-capabilities",
252
+ "estimate",
253
+ "funding",
254
+ "funding-handoff",
255
+ "list-drafts",
256
+ "get-draft",
257
+ "save-draft",
258
+ "archive-draft",
249
259
  "prepare",
260
+ "prepare-draft",
261
+ "review-dataset",
250
262
  "start",
251
263
  "cancel",
252
264
  "publish",
@@ -295,4 +307,4 @@ export {
295
307
  HostedTrainingPolicyControlSchema,
296
308
  TrainingHandoffOriginSchema2 as TrainingHandoffOriginSchema
297
309
  };
298
- //# sourceMappingURL=chunk-7BYLH47N.js.map
310
+ //# sourceMappingURL=chunk-VPK3SM45.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/post-training.ts"],"sourcesContent":["import { z } from \"zod\";\nimport { contentHash } from \"@openpond/harness\";\nimport {\n LearningSourceSchema,\n TaskBatchSchema,\n TaskDefinitionSchema,\n LearningPolicySchema,\n LearningPolicyInspectionResultSchema,\n LearningIterationSchema,\n} from \"@openpond/evals/learning\";\nimport { HostedModelProjectSummarySchema } from \"./model-projects.js\";\nimport { AcceptancePlanSchema } from \"@openpond/evals/learning\";\nimport { TrainingHandoffOriginSchema } from \"@openpond/evals/learning\";\nexport { TrainingHandoffOriginSchema, type TrainingHandoffOrigin } from \"@openpond/evals/learning\";\nimport { RunExperimentSchema } from \"./experiment-run-contracts.js\";\nimport { canonicalSha256, OpenPondProtocolError } from \"./protocol.js\";\n\nconst Id = z.string().trim().min(1).max(200);\nconst Hash = z.string().regex(/^[a-f0-9]{64}$/);\nconst Ref = z.object({ id: Id, contentHash: Hash }).strict();\nexport const TrainingHandoffContextSchema = z\n .object({\n available: z.boolean(),\n reason: z.string().max(1000).nullable(),\n origin: TrainingHandoffOriginSchema.nullable(),\n })\n .strict();\nexport type TrainingHandoffContext = z.infer<typeof TrainingHandoffContextSchema>;\nexport const PostTrainingAttachmentSchema = z\n .object({\n schemaVersion: z.literal(\"openpond.postTrainingAttachment.v1\"),\n binding: z\n .object({\n kind: z.enum([\"preparation\", \"policy\"]),\n id: Id,\n revision: z.number().int().positive(),\n contentHash: Hash,\n })\n .strict(),\n projectId: Id.nullable(),\n automatic: z.boolean(),\n maximumSpendUsd: z.number().finite().positive().max(10_000),\n experiments: z\n .array(z.object({ id: Id, configuration: RunExperimentSchema }).strict())\n .min(1)\n .max(20),\n acceptancePlan: AcceptancePlanSchema.nullable(),\n })\n .strict()\n .superRefine((value, ctx) => {\n if (new Set(value.experiments.map((item) => item.id)).size !== value.experiments.length)\n ctx.addIssue({ code: \"custom\", message: \"Attach each evaluation once.\" });\n if (\n value.experiments.reduce((sum, item) => sum + item.configuration.maximumCostUsd, 0) >\n value.maximumSpendUsd + 1e-9\n )\n ctx.addIssue({\n code: \"custom\",\n message: \"Attached evaluation budgets exceed the total approved budget.\",\n });\n if (\n value.experiments.some(\n (item) => (item.configuration.request.project?.id ?? null) !== value.projectId,\n )\n )\n ctx.addIssue({\n code: \"custom\",\n message: \"Attached experiments must use the training Project.\",\n });\n if (value.acceptancePlan) {\n const checked = new Set(value.acceptancePlan.checks.map((c) => c.id));\n if (value.acceptancePlan.checks.some((c) => !value.experiments.some((m) => m.id === c.id)))\n ctx.addIssue({\n code: \"custom\",\n message: \"Select the frozen Experiment for each acceptance check.\",\n });\n const committed =\n value.acceptancePlan.maximumSpendUsd +\n value.experiments\n .filter((m) => !checked.has(m.id))\n .reduce((sum, m) => sum + m.configuration.maximumCostUsd, 0);\n if (committed > value.maximumSpendUsd + 1e-9)\n ctx.addIssue({\n code: \"custom\",\n message:\n \"Paired acceptance and diagnostic ceilings exceed the approved evaluation budget.\",\n });\n }\n });\nexport type PostTrainingAttachment = z.infer<typeof PostTrainingAttachmentSchema>;\n/** Target-independent recipe pins keep the paired baseline/candidate check on\n * the same released data, case order, settings and graders. */\nexport function postTrainingRecipe(\n configuration: PostTrainingAttachment[\"experiments\"][number][\"configuration\"],\n) {\n const {\n modelId: _model,\n candidate: _candidate,\n ...settings\n } = configuration.request.policy.kind === \"fixture\"\n ? { modelId: null, candidate: null, ...configuration.request.policy }\n : configuration.request.policy;\n void _model;\n void _candidate;\n if (\"modelConfigurationHash\" in settings)\n delete (settings as { modelConfigurationHash?: string }).modelConfigurationHash;\n return {\n dataset: {\n id: configuration.request.taskset.id,\n contentHash: configuration.request.taskset.contentHash,\n },\n populationHash: contentHash(\n configuration.request.population.map((m) => ({\n caseId: m.taskId,\n seed: m.seed,\n fixtureId: m.fixtureId,\n })),\n ),\n executionHash: contentHash({ settings, graders: configuration.graders ?? null }),\n };\n}\nexport const PostTrainingQualificationSchema = z\n .object({\n baseline: Ref,\n checks: z\n .array(\n z\n .object({\n id: Id,\n sourceRunId: Id,\n sourceManifestHash: Hash,\n targetConfigurationHash: Hash,\n executionHash: Hash,\n populationHash: Hash,\n evaluator: Ref,\n feedbackKey: Id,\n output: z.enum([\"boolean\", \"score\"]),\n unit: z.string().min(1).max(80),\n })\n .strict(),\n )\n .min(1)\n .max(100),\n })\n .strict();\nexport const PostTrainingStateSchema = z.enum([\n \"waiting_for_training\",\n \"ready\",\n \"preparing\",\n \"queued\",\n \"running\",\n \"cleaning\",\n \"completed\",\n \"failed\",\n \"blocked\",\n \"cancelled\",\n \"budget_exhausted\",\n]);\nexport const PostTrainingSummarySchema = z\n .object({\n schemaVersion: z.literal(\"openpond.postTrainingSummary.v1\"),\n id: Id,\n teamId: Id,\n jobId: Id,\n revision: z.number().int().positive(),\n planHash: Hash,\n automatic: z.boolean(),\n candidate: Ref.nullable(),\n state: PostTrainingStateSchema,\n total: z.number().int().positive(),\n completed: z.number().int().nonnegative(),\n failed: z.number().int().nonnegative(),\n requiredOutcome: z.enum([\"none\", \"pending\", \"passed\", \"failed\", \"blocked\"]),\n reason: z.string().max(500).nullable(),\n groupId: Id.nullable(),\n experimentIds: z.array(Id).max(20),\n updatedAt: z.iso.datetime(),\n })\n .strict()\n .superRefine((value, ctx) => {\n if (value.completed + value.failed > value.total)\n ctx.addIssue({ code: \"custom\", message: \"Evaluation totals are inconsistent.\" });\n if (\n [\"preparing\", \"queued\", \"running\", \"cleaning\", \"completed\"].includes(value.state) &&\n !value.candidate\n )\n ctx.addIssue({\n code: \"custom\",\n message: \"Evaluation execution requires the exact trained candidate.\",\n });\n });\nexport type PostTrainingSummary = z.infer<typeof PostTrainingSummarySchema>;\nexport const PostTrainingControlSchema = z\n .object({ operationId: Id, expectedRevision: z.number().int().positive(), planHash: Hash })\n .strict();\nexport const AttachPostTrainingSchema = z\n .object({ operationId: Id, attachment: PostTrainingAttachmentSchema })\n .strict();\nexport const PostTrainingPlanSchema = z\n .object({\n id: Id,\n teamId: Id,\n ownerUserId: Id,\n attachment: PostTrainingAttachmentSchema,\n qualification: PostTrainingQualificationSchema.nullable(),\n contentHash: Hash,\n createdAt: z.iso.datetime(),\n })\n .strict();\nexport type PostTrainingPlan = z.infer<typeof PostTrainingPlanSchema>;\nexport function verifyPostTrainingPlan(raw: unknown): PostTrainingPlan {\n const plan = PostTrainingPlanSchema.parse(raw);\n if (\n plan.contentHash !==\n contentHash({ attachment: plan.attachment, qualification: plan.qualification })\n )\n throw new Error(\"The retained evaluation attachment or qualification changed.\");\n return plan;\n}\nexport function postTrainingActive(summary: PostTrainingSummary | null | undefined) {\n return Boolean(summary && [\"preparing\", \"queued\", \"running\", \"cleaning\"].includes(summary.state));\n}\n\n/** Read/setup are configuration-only. Manual start authorizes exactly the\n * retained candidate, plan and revision. A retry never launches training. */\nexport function createPostTrainingClient(input: {\n request: (path: string, init?: RequestInit) => Promise<unknown>;\n}) {\n const { request } = input;\n // These public evaluation routes consume ordinary JSON, independently of\n // the versioned Training V2 job routes used by the parent factory.\n const headers = { accept: \"application/json\", \"content-type\": \"application/json\" };\n const path = (jobId: string) =>\n `/v1/training/jobs/${encodeURIComponent(Id.parse(jobId))}/post-training`;\n async function read(raw: unknown, teamId: string, jobId: string) {\n if (raw === null) return null;\n const value = PostTrainingSummarySchema.parse(raw);\n if (value.teamId !== teamId || value.jobId !== jobId)\n throw new OpenPondProtocolError(\n \"post_training_scope_mismatch\",\n \"The evaluation summary belongs to another run or workspace.\",\n );\n return value;\n }\n return {\n async attach(teamId: string, raw: z.input<typeof AttachPostTrainingSchema>) {\n const body = AttachPostTrainingSchema.parse(raw);\n const value = verifyPostTrainingPlan(\n await request(\"/v1/training/post-training-plans\", {\n method: \"POST\",\n headers,\n body: JSON.stringify(body),\n }),\n );\n if (\n value.teamId !== teamId ||\n (await canonicalSha256(value.attachment)) !== (await canonicalSha256(body.attachment))\n )\n throw new OpenPondProtocolError(\n \"post_training_plan_mismatch\",\n \"The retained attachment differs from the reviewed plan.\",\n );\n return value;\n },\n async get(teamId: string, jobId: string) {\n return read(await request(path(jobId), { headers }), teamId, jobId);\n },\n async control(\n teamId: string,\n jobId: string,\n action: \"start\" | \"retry\" | \"cancel\",\n raw: z.input<typeof PostTrainingControlSchema>,\n ) {\n const body = PostTrainingControlSchema.parse(raw);\n const value = await read(\n await request(`${path(jobId)}/${action}`, { method: \"POST\", headers, body: JSON.stringify(body) }),\n teamId,\n jobId,\n );\n if (!value || value.planHash !== body.planHash)\n throw new OpenPondProtocolError(\n \"post_training_control_mismatch\",\n \"Evaluation control did not retain the approved plan.\",\n );\n return value;\n },\n };\n}\n\nexport const HostedTrainingSetupCatalogSchema = z\n .object({\n teamId: Id,\n actorId: Id,\n projectId: Id.nullable(),\n configuration: HostedModelProjectSummarySchema,\n batches: z.array(TaskBatchSchema).max(10_000),\n sources: z.array(LearningSourceSchema).max(10_000),\n definitions: z.array(TaskDefinitionSchema).max(10_000),\n experiments: z\n .array(\n z\n .object({\n id: Id,\n name: z.string().max(500),\n configuration: RunExperimentSchema,\n graders: z\n .array(z.object({ feedbackKey: Id, name: z.string().max(500), ref: Ref }).strict())\n .max(100),\n })\n .strict(),\n )\n .max(10_000),\n })\n .strict();\nexport type HostedTrainingSetupCatalog = z.infer<typeof HostedTrainingSetupCatalogSchema>;\n\nexport const HostedTrainingSetupActionSchema = z.enum([\n \"prepare\",\n \"start\",\n \"cancel\",\n \"publish\",\n \"attach\",\n]);\nexport type HostedTrainingSetupAction = z.infer<typeof HostedTrainingSetupActionSchema>;\n\nexport const HostedTrainingPolicyDetailSchema = z\n .object({\n teamId: Id,\n actorId: Id,\n configuration: HostedModelProjectSummarySchema,\n policy: LearningPolicySchema,\n inspection: LearningPolicyInspectionResultSchema,\n iterations: z\n .array(\n z\n .object({\n iteration: LearningIterationSchema,\n evals: PostTrainingSummarySchema.nullable(),\n })\n .strict(),\n )\n .max(100),\n nextCursor: Id.nullable(),\n })\n .strict();\nexport const HostedTrainingPolicyControlSchema = z\n .object({\n id: Id,\n expectedRevision: z.number().int().positive(),\n policyHash: Hash,\n operationId: Id,\n action: z.enum([\"pause\", \"resume\", \"reserve\", \"cancel-iteration\", \"retry-iteration\"]),\n iterationId: Id.optional(),\n iterationRevision: z.number().int().positive().optional(),\n })\n .strict();\nexport type HostedTrainingPolicyControl = z.infer<typeof HostedTrainingPolicyControlSchema>;\n"],"mappings":"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","names":["TrainingHandoffOriginSchema"]}
1
+ {"version":3,"sources":["../src/post-training.ts"],"sourcesContent":["import { z } from \"zod\";\nimport { contentHash } from \"@openpond/harness\";\nimport {\n LearningSourceSchema,\n TaskBatchSchema,\n TaskDefinitionSchema,\n LearningPolicySchema,\n LearningPolicyInspectionResultSchema,\n LearningIterationSchema,\n} from \"@openpond/evals/learning\";\nimport { HostedModelProjectSummarySchema } from \"./model-projects.js\";\nimport { AcceptancePlanSchema } from \"@openpond/evals/learning\";\nimport { TrainingHandoffOriginSchema } from \"@openpond/evals/learning\";\nexport { TrainingHandoffOriginSchema, type TrainingHandoffOrigin } from \"@openpond/evals/learning\";\nimport { RunExperimentSchema } from \"./experiment-run-contracts.js\";\nimport { canonicalSha256, OpenPondProtocolError } from \"./protocol.js\";\n\nconst Id = z.string().trim().min(1).max(200);\nconst Hash = z.string().regex(/^[a-f0-9]{64}$/);\nconst Ref = z.object({ id: Id, contentHash: Hash }).strict();\nexport const TrainingHandoffContextSchema = z\n .object({\n available: z.boolean(),\n reason: z.string().max(1000).nullable(),\n origin: TrainingHandoffOriginSchema.nullable(),\n })\n .strict();\nexport type TrainingHandoffContext = z.infer<typeof TrainingHandoffContextSchema>;\nexport const PostTrainingAttachmentSchema = z\n .object({\n schemaVersion: z.literal(\"openpond.postTrainingAttachment.v1\"),\n binding: z\n .object({\n kind: z.enum([\"preparation\", \"policy\"]),\n id: Id,\n revision: z.number().int().positive(),\n contentHash: Hash,\n })\n .strict(),\n projectId: Id.nullable(),\n automatic: z.boolean(),\n maximumSpendUsd: z.number().finite().positive().max(10_000),\n experiments: z\n .array(z.object({ id: Id, configuration: RunExperimentSchema }).strict())\n .min(1)\n .max(20),\n acceptancePlan: AcceptancePlanSchema.nullable(),\n })\n .strict()\n .superRefine((value, ctx) => {\n if (new Set(value.experiments.map((item) => item.id)).size !== value.experiments.length)\n ctx.addIssue({ code: \"custom\", message: \"Attach each evaluation once.\" });\n if (\n value.experiments.reduce((sum, item) => sum + item.configuration.maximumCostUsd, 0) >\n value.maximumSpendUsd + 1e-9\n )\n ctx.addIssue({\n code: \"custom\",\n message: \"Attached evaluation budgets exceed the total approved budget.\",\n });\n if (\n value.experiments.some(\n (item) => (item.configuration.request.project?.id ?? null) !== value.projectId,\n )\n )\n ctx.addIssue({\n code: \"custom\",\n message: \"Attached experiments must use the training Project.\",\n });\n if (value.acceptancePlan) {\n const checked = new Set(value.acceptancePlan.checks.map((c) => c.id));\n if (value.acceptancePlan.checks.some((c) => !value.experiments.some((m) => m.id === c.id)))\n ctx.addIssue({\n code: \"custom\",\n message: \"Select the frozen Experiment for each acceptance check.\",\n });\n const committed =\n value.acceptancePlan.maximumSpendUsd +\n value.experiments\n .filter((m) => !checked.has(m.id))\n .reduce((sum, m) => sum + m.configuration.maximumCostUsd, 0);\n if (committed > value.maximumSpendUsd + 1e-9)\n ctx.addIssue({\n code: \"custom\",\n message:\n \"Paired acceptance and diagnostic ceilings exceed the approved evaluation budget.\",\n });\n }\n });\nexport type PostTrainingAttachment = z.infer<typeof PostTrainingAttachmentSchema>;\n/** Target-independent recipe pins keep the paired baseline/candidate check on\n * the same released data, case order, settings and graders. */\nexport function postTrainingRecipe(\n configuration: PostTrainingAttachment[\"experiments\"][number][\"configuration\"],\n) {\n const {\n modelId: _model,\n candidate: _candidate,\n ...settings\n } = configuration.request.policy.kind === \"fixture\"\n ? { modelId: null, candidate: null, ...configuration.request.policy }\n : configuration.request.policy;\n void _model;\n void _candidate;\n if (\"modelConfigurationHash\" in settings)\n delete (settings as { modelConfigurationHash?: string }).modelConfigurationHash;\n return {\n dataset: {\n id: configuration.request.taskset.id,\n contentHash: configuration.request.taskset.contentHash,\n },\n populationHash: contentHash(\n configuration.request.population.map((m) => ({\n caseId: m.taskId,\n seed: m.seed,\n fixtureId: m.fixtureId,\n })),\n ),\n executionHash: contentHash({ settings, graders: configuration.graders ?? null }),\n };\n}\nexport const PostTrainingQualificationSchema = z\n .object({\n baseline: Ref,\n checks: z\n .array(\n z\n .object({\n id: Id,\n sourceRunId: Id,\n sourceManifestHash: Hash,\n targetConfigurationHash: Hash,\n executionHash: Hash,\n populationHash: Hash,\n evaluator: Ref,\n feedbackKey: Id,\n output: z.enum([\"boolean\", \"score\"]),\n unit: z.string().min(1).max(80),\n })\n .strict(),\n )\n .min(1)\n .max(100),\n })\n .strict();\nexport const PostTrainingStateSchema = z.enum([\n \"waiting_for_training\",\n \"ready\",\n \"preparing\",\n \"queued\",\n \"running\",\n \"cleaning\",\n \"completed\",\n \"failed\",\n \"blocked\",\n \"cancelled\",\n \"budget_exhausted\",\n]);\nexport const PostTrainingSummarySchema = z\n .object({\n schemaVersion: z.literal(\"openpond.postTrainingSummary.v1\"),\n id: Id,\n teamId: Id,\n jobId: Id,\n revision: z.number().int().positive(),\n planHash: Hash,\n automatic: z.boolean(),\n candidate: Ref.nullable(),\n state: PostTrainingStateSchema,\n total: z.number().int().positive(),\n completed: z.number().int().nonnegative(),\n failed: z.number().int().nonnegative(),\n requiredOutcome: z.enum([\"none\", \"pending\", \"passed\", \"failed\", \"blocked\"]),\n reason: z.string().max(500).nullable(),\n groupId: Id.nullable(),\n experimentIds: z.array(Id).max(20),\n updatedAt: z.iso.datetime(),\n })\n .strict()\n .superRefine((value, ctx) => {\n if (value.completed + value.failed > value.total)\n ctx.addIssue({ code: \"custom\", message: \"Evaluation totals are inconsistent.\" });\n if (\n [\"preparing\", \"queued\", \"running\", \"cleaning\", \"completed\"].includes(value.state) &&\n !value.candidate\n )\n ctx.addIssue({\n code: \"custom\",\n message: \"Evaluation execution requires the exact trained candidate.\",\n });\n });\nexport type PostTrainingSummary = z.infer<typeof PostTrainingSummarySchema>;\nexport const PostTrainingControlSchema = z\n .object({ operationId: Id, expectedRevision: z.number().int().positive(), planHash: Hash })\n .strict();\nexport const AttachPostTrainingSchema = z\n .object({ operationId: Id, attachment: PostTrainingAttachmentSchema })\n .strict();\nexport const PostTrainingPlanSchema = z\n .object({\n id: Id,\n teamId: Id,\n ownerUserId: Id,\n attachment: PostTrainingAttachmentSchema,\n qualification: PostTrainingQualificationSchema.nullable(),\n contentHash: Hash,\n createdAt: z.iso.datetime(),\n })\n .strict();\nexport type PostTrainingPlan = z.infer<typeof PostTrainingPlanSchema>;\nexport function verifyPostTrainingPlan(raw: unknown): PostTrainingPlan {\n const plan = PostTrainingPlanSchema.parse(raw);\n if (\n plan.contentHash !==\n contentHash({ attachment: plan.attachment, qualification: plan.qualification })\n )\n throw new Error(\"The retained evaluation attachment or qualification changed.\");\n return plan;\n}\nexport function postTrainingActive(summary: PostTrainingSummary | null | undefined) {\n return Boolean(summary && [\"preparing\", \"queued\", \"running\", \"cleaning\"].includes(summary.state));\n}\n\n/** Read/setup are configuration-only. Manual start authorizes exactly the\n * retained candidate, plan and revision. A retry never launches training. */\nexport function createPostTrainingClient(input: {\n request: (path: string, init?: RequestInit) => Promise<unknown>;\n}) {\n const { request } = input;\n // These public evaluation routes consume ordinary JSON, independently of\n // the versioned Training V2 job routes used by the parent factory.\n const headers = { accept: \"application/json\", \"content-type\": \"application/json\" };\n const path = (jobId: string) =>\n `/v1/training/jobs/${encodeURIComponent(Id.parse(jobId))}/post-training`;\n async function read(raw: unknown, teamId: string, jobId: string) {\n if (raw === null) return null;\n const value = PostTrainingSummarySchema.parse(raw);\n if (value.teamId !== teamId || value.jobId !== jobId)\n throw new OpenPondProtocolError(\n \"post_training_scope_mismatch\",\n \"The evaluation summary belongs to another run or workspace.\",\n );\n return value;\n }\n return {\n async attach(teamId: string, raw: z.input<typeof AttachPostTrainingSchema>) {\n const body = AttachPostTrainingSchema.parse(raw);\n const value = verifyPostTrainingPlan(\n await request(\"/v1/training/post-training-plans\", {\n method: \"POST\",\n headers,\n body: JSON.stringify(body),\n }),\n );\n if (\n value.teamId !== teamId ||\n (await canonicalSha256(value.attachment)) !== (await canonicalSha256(body.attachment))\n )\n throw new OpenPondProtocolError(\n \"post_training_plan_mismatch\",\n \"The retained attachment differs from the reviewed plan.\",\n );\n return value;\n },\n async get(teamId: string, jobId: string) {\n return read(await request(path(jobId), { headers }), teamId, jobId);\n },\n async control(\n teamId: string,\n jobId: string,\n action: \"start\" | \"retry\" | \"cancel\",\n raw: z.input<typeof PostTrainingControlSchema>,\n ) {\n const body = PostTrainingControlSchema.parse(raw);\n const value = await read(\n await request(`${path(jobId)}/${action}`, { method: \"POST\", headers, body: JSON.stringify(body) }),\n teamId,\n jobId,\n );\n if (!value || value.planHash !== body.planHash)\n throw new OpenPondProtocolError(\n \"post_training_control_mismatch\",\n \"Evaluation control did not retain the approved plan.\",\n );\n return value;\n },\n };\n}\n\nexport const HostedTrainingSetupCatalogSchema = z\n .object({\n teamId: Id,\n actorId: Id,\n projectId: Id.nullable(),\n configuration: HostedModelProjectSummarySchema,\n batches: z.array(TaskBatchSchema).max(10_000),\n sources: z.array(LearningSourceSchema).max(10_000),\n definitions: z.array(TaskDefinitionSchema).max(10_000),\n experiments: z\n .array(\n z\n .object({\n id: Id,\n name: z.string().max(500),\n configuration: RunExperimentSchema,\n graders: z\n .array(z.object({ feedbackKey: Id, name: z.string().max(500), ref: Ref }).strict())\n .max(100),\n })\n .strict(),\n )\n .max(10_000),\n })\n .strict();\nexport type HostedTrainingSetupCatalog = z.infer<typeof HostedTrainingSetupCatalogSchema>;\n\nexport const HostedTrainingSetupActionSchema = z.enum([\n \"hardware-catalog\",\n \"gpu-catalog\",\n \"modification-capabilities\",\n \"estimate\",\n \"funding\", \"funding-handoff\",\n \"list-drafts\", \"get-draft\", \"save-draft\", \"archive-draft\",\n \"prepare\",\n \"prepare-draft\",\n \"review-dataset\",\n \"start\",\n \"cancel\",\n \"publish\",\n \"attach\",\n]);\nexport type HostedTrainingSetupAction = z.infer<typeof HostedTrainingSetupActionSchema>;\n\nexport const HostedTrainingPolicyDetailSchema = z\n .object({\n teamId: Id,\n actorId: Id,\n configuration: HostedModelProjectSummarySchema,\n policy: LearningPolicySchema,\n inspection: LearningPolicyInspectionResultSchema,\n iterations: z\n .array(\n z\n .object({\n iteration: LearningIterationSchema,\n evals: PostTrainingSummarySchema.nullable(),\n })\n .strict(),\n )\n .max(100),\n nextCursor: Id.nullable(),\n })\n .strict();\nexport const HostedTrainingPolicyControlSchema = z\n .object({\n id: Id,\n expectedRevision: z.number().int().positive(),\n policyHash: Hash,\n operationId: Id,\n action: z.enum([\"pause\", \"resume\", \"reserve\", \"cancel-iteration\", \"retry-iteration\"]),\n iterationId: Id.optional(),\n iterationRevision: z.number().int().positive().optional(),\n })\n .strict();\nexport type HostedTrainingPolicyControl = z.infer<typeof HostedTrainingPolicyControlSchema>;\n"],"mappings":"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","names":["TrainingHandoffOriginSchema"]}
@@ -1,19 +1,19 @@
1
+ import {
2
+ ManagedSftRecipeSchema
3
+ } from "./chunk-UVQENVTW.js";
1
4
  import {
2
5
  ModelStarterExecutionSchema,
3
6
  validateModelStarterExecution,
4
7
  validateModelTasksetPackage,
5
8
  validateTasksetPackage
6
- } from "./chunk-IFBCLRBM.js";
7
- import {
8
- ManagedSftRecipeSchema
9
- } from "./chunk-GJRXJL6G.js";
9
+ } from "./chunk-ZQ6QTYRE.js";
10
10
  import {
11
11
  ModelProjectBaseModelSchema,
12
12
  ModelProjectRecipeDocumentSchema,
13
13
  ModelProjectTrainingMethodSchema,
14
14
  ModelProjectTrainingSetupSchema,
15
15
  ModelProjectVersionedRefSchema
16
- } from "./chunk-UOV2LEXS.js";
16
+ } from "./chunk-MVAEE5EI.js";
17
17
  import {
18
18
  ModelInitialLearningSchema
19
19
  } from "./chunk-CL3IOOVL.js";
@@ -412,4 +412,4 @@ export {
412
412
  previewModelStarter,
413
413
  validateResolvedModelStarter
414
414
  };
415
- //# sourceMappingURL=chunk-RN5G3DQN.js.map
415
+ //# sourceMappingURL=chunk-WM3U4RPZ.js.map
@@ -6,7 +6,7 @@ import {
6
6
  } from "./chunk-H3367ISL.js";
7
7
  import {
8
8
  ModelProjectVersionedRefSchema
9
- } from "./chunk-UOV2LEXS.js";
9
+ } from "./chunk-MVAEE5EI.js";
10
10
  import {
11
11
  canonicalJson as canonicalJson2
12
12
  } from "./chunk-B3ZHJ2KK.js";
@@ -8942,4 +8942,4 @@ export {
8942
8942
  createTasksetPackage,
8943
8943
  resolveTasksetWorkOutputs
8944
8944
  };
8945
- //# sourceMappingURL=chunk-IFBCLRBM.js.map
8945
+ //# sourceMappingURL=chunk-ZQ6QTYRE.js.map