openpond-sdk 0.10.0 → 0.11.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (263) hide show
  1. package/dist/advanced-refiner-evaluations.js +42 -0
  2. package/dist/advanced-refiner-evaluations.js.map +7 -0
  3. package/dist/candidate-evaluations.js +25 -0
  4. package/dist/candidate-evaluations.js.map +7 -0
  5. package/dist/{chunk-W5TXWVFS.js → chunk-2JKV5OJO.js} +88 -59
  6. package/dist/chunk-2JKV5OJO.js.map +7 -0
  7. package/dist/{chunk-2ZJRG3KL.js → chunk-2NSNBED7.js} +7 -3
  8. package/dist/chunk-2NSNBED7.js.map +7 -0
  9. package/dist/{chunk-Y4NGWGTA.js → chunk-4NZW4LFB.js} +268 -264
  10. package/dist/chunk-4NZW4LFB.js.map +7 -0
  11. package/dist/{chunk-DSGGM2ME.js → chunk-4SZKRRTO.js} +2 -2
  12. package/dist/chunk-6FQKRY5K.js +445 -0
  13. package/dist/chunk-6FQKRY5K.js.map +7 -0
  14. package/dist/chunk-7Q7I6FAT.js +139 -0
  15. package/dist/chunk-7Q7I6FAT.js.map +7 -0
  16. package/dist/chunk-CPEOFPPF.js +632 -0
  17. package/dist/chunk-CPEOFPPF.js.map +7 -0
  18. package/dist/chunk-G3FWDZMZ.js +267 -0
  19. package/dist/chunk-G3FWDZMZ.js.map +7 -0
  20. package/dist/chunk-GDJRGRHA.js +144 -0
  21. package/dist/chunk-GDJRGRHA.js.map +7 -0
  22. package/dist/chunk-HKAR3VPB.js +65 -0
  23. package/dist/chunk-HKAR3VPB.js.map +7 -0
  24. package/dist/{chunk-32H2EJRA.js → chunk-JEUHIQWF.js} +10 -7
  25. package/dist/chunk-JEUHIQWF.js.map +7 -0
  26. package/dist/chunk-KQWCXW3A.js +294 -0
  27. package/dist/chunk-KQWCXW3A.js.map +7 -0
  28. package/dist/chunk-LFH4EKWH.js +1408 -0
  29. package/dist/chunk-LFH4EKWH.js.map +7 -0
  30. package/dist/{chunk-DT7FRNIZ.js → chunk-MW2N3BX5.js} +4 -3
  31. package/dist/{chunk-DT7FRNIZ.js.map → chunk-MW2N3BX5.js.map} +2 -2
  32. package/dist/{chunk-I3TQTXKB.js → chunk-QVCMFQKA.js} +6 -6
  33. package/dist/{chunk-I3TQTXKB.js.map → chunk-QVCMFQKA.js.map} +1 -1
  34. package/dist/{chunk-I2YM3UY4.js → chunk-RIX56CJL.js} +9 -6
  35. package/dist/chunk-RIX56CJL.js.map +7 -0
  36. package/dist/{chunk-PJ2VLNJF.js → chunk-SGRYMU4C.js} +2 -2
  37. package/dist/chunk-SLS3GFPG.js +125 -0
  38. package/dist/chunk-SLS3GFPG.js.map +7 -0
  39. package/dist/chunk-SVU4RZ4K.js +70 -0
  40. package/dist/chunk-SVU4RZ4K.js.map +7 -0
  41. package/dist/chunk-SXTC2GT6.js +160 -0
  42. package/dist/chunk-SXTC2GT6.js.map +7 -0
  43. package/dist/chunk-T4APHDES.js +74 -0
  44. package/dist/chunk-T4APHDES.js.map +7 -0
  45. package/dist/chunk-UNMOEI2K.js +587 -0
  46. package/dist/chunk-UNMOEI2K.js.map +7 -0
  47. package/dist/chunk-VC5OV5AS.js +174 -0
  48. package/dist/chunk-VC5OV5AS.js.map +7 -0
  49. package/dist/{chunk-7B44TQZD.js → chunk-WX22WN33.js} +13 -7
  50. package/dist/chunk-WX22WN33.js.map +7 -0
  51. package/dist/{chunk-JCPLAIZL.js → chunk-XCH27NHJ.js} +106 -76
  52. package/dist/chunk-XCH27NHJ.js.map +7 -0
  53. package/dist/chunk-XEUOJ5WF.js +31 -0
  54. package/dist/chunk-XEUOJ5WF.js.map +7 -0
  55. package/dist/chunk-YCQVVFE5.js +37 -0
  56. package/dist/chunk-YCQVVFE5.js.map +7 -0
  57. package/dist/chunk-YTGRET2L.js +604 -0
  58. package/dist/chunk-YTGRET2L.js.map +7 -0
  59. package/dist/connected-evidence.js +97 -0
  60. package/dist/connected-evidence.js.map +7 -0
  61. package/dist/dataset-commerce.js +773 -0
  62. package/dist/dataset-commerce.js.map +7 -0
  63. package/dist/dataset-workspaces.js +45 -80
  64. package/dist/dataset-workspaces.js.map +4 -4
  65. package/dist/experiment-evaluation-schedules.js +48 -0
  66. package/dist/experiment-evaluation-schedules.js.map +7 -0
  67. package/dist/experiment-improvements.js +52 -0
  68. package/dist/experiment-improvements.js.map +7 -0
  69. package/dist/experiments.js +48 -90
  70. package/dist/experiments.js.map +3 -3
  71. package/dist/human-review.js +13 -0
  72. package/dist/human-review.js.map +7 -0
  73. package/dist/index.js +221 -14
  74. package/dist/index.js.map +2 -2
  75. package/dist/learning.js +1 -1
  76. package/dist/model-starter-attempts.js +2 -2
  77. package/dist/model-starter-catalog.js +9 -4
  78. package/dist/model-starter-catalog.js.map +1 -1
  79. package/dist/model-starters.js +9 -4
  80. package/dist/model-taskset-runs.js +3 -3
  81. package/dist/post-training.js +47 -0
  82. package/dist/post-training.js.map +7 -0
  83. package/dist/taskset-drafts.js +33 -21
  84. package/dist/taskset-drafts.js.map +2 -2
  85. package/dist/taskset-packages.js +28 -558
  86. package/dist/taskset-packages.js.map +4 -4
  87. package/dist/training-bundle.js +61 -20
  88. package/dist/training-bundle.js.map +2 -2
  89. package/dist/training-projects.js +1 -1
  90. package/dist/training.js +7 -2
  91. package/dist/types/packages/sdk/src/advanced-refiner-evaluations.d.ts +2682 -0
  92. package/dist/types/packages/sdk/src/advanced-refiner-evaluations.d.ts.map +1 -0
  93. package/dist/types/packages/sdk/src/candidate-evaluation-client.d.ts +1079 -0
  94. package/dist/types/packages/sdk/src/candidate-evaluation-client.d.ts.map +1 -0
  95. package/dist/types/packages/sdk/src/candidate-evaluations.d.ts +845 -0
  96. package/dist/types/packages/sdk/src/candidate-evaluations.d.ts.map +1 -0
  97. package/dist/types/packages/sdk/src/claude-code-runtime.d.ts +51 -0
  98. package/dist/types/packages/sdk/src/claude-code-runtime.d.ts.map +1 -0
  99. package/dist/types/packages/sdk/src/connected-collection-status.d.ts +47 -0
  100. package/dist/types/packages/sdk/src/connected-collection-status.d.ts.map +1 -0
  101. package/dist/types/packages/sdk/src/connected-dataset-publication.d.ts +15 -0
  102. package/dist/types/packages/sdk/src/connected-dataset-publication.d.ts.map +1 -0
  103. package/dist/types/packages/sdk/src/connected-dataset-source.d.ts +52 -0
  104. package/dist/types/packages/sdk/src/connected-dataset-source.d.ts.map +1 -0
  105. package/dist/types/packages/sdk/src/connected-evidence-client.d.ts +2502 -0
  106. package/dist/types/packages/sdk/src/connected-evidence-client.d.ts.map +1 -0
  107. package/dist/types/packages/sdk/src/connected-evidence-contracts.d.ts +235 -0
  108. package/dist/types/packages/sdk/src/connected-evidence-contracts.d.ts.map +1 -0
  109. package/dist/types/packages/sdk/src/connected-evidence-http.d.ts +6 -0
  110. package/dist/types/packages/sdk/src/connected-evidence-http.d.ts.map +1 -0
  111. package/dist/types/packages/sdk/src/connected-evidence.d.ts +8 -0
  112. package/dist/types/packages/sdk/src/connected-evidence.d.ts.map +1 -0
  113. package/dist/types/packages/sdk/src/connected-recorded-execution.d.ts +690 -0
  114. package/dist/types/packages/sdk/src/connected-recorded-execution.d.ts.map +1 -0
  115. package/dist/types/packages/sdk/src/connected-sync.d.ts +282 -0
  116. package/dist/types/packages/sdk/src/connected-sync.d.ts.map +1 -0
  117. package/dist/types/packages/sdk/src/dataset-commerce-contracts.d.ts +230 -0
  118. package/dist/types/packages/sdk/src/dataset-commerce-contracts.d.ts.map +1 -0
  119. package/dist/types/packages/sdk/src/dataset-commerce-files.d.ts +114 -0
  120. package/dist/types/packages/sdk/src/dataset-commerce-files.d.ts.map +1 -0
  121. package/dist/types/packages/sdk/src/dataset-commerce-responses.d.ts +608 -0
  122. package/dist/types/packages/sdk/src/dataset-commerce-responses.d.ts.map +1 -0
  123. package/dist/types/packages/sdk/src/dataset-commerce.d.ts +575 -0
  124. package/dist/types/packages/sdk/src/dataset-commerce.d.ts.map +1 -0
  125. package/dist/types/packages/sdk/src/dataset-workspace-client.d.ts +772 -120
  126. package/dist/types/packages/sdk/src/dataset-workspace-client.d.ts.map +1 -1
  127. package/dist/types/packages/sdk/src/dataset-workspace-contracts.d.ts +293 -38
  128. package/dist/types/packages/sdk/src/dataset-workspace-contracts.d.ts.map +1 -1
  129. package/dist/types/packages/sdk/src/dataset-workspace-operations.d.ts +294 -40
  130. package/dist/types/packages/sdk/src/dataset-workspace-operations.d.ts.map +1 -1
  131. package/dist/types/packages/sdk/src/evaluation-coordination-http.d.ts +17 -0
  132. package/dist/types/packages/sdk/src/evaluation-coordination-http.d.ts.map +1 -0
  133. package/dist/types/packages/sdk/src/experiment-client.d.ts +3513 -52
  134. package/dist/types/packages/sdk/src/experiment-client.d.ts.map +1 -1
  135. package/dist/types/packages/sdk/src/experiment-contracts.d.ts +1017 -1
  136. package/dist/types/packages/sdk/src/experiment-contracts.d.ts.map +1 -1
  137. package/dist/types/packages/sdk/src/experiment-evaluation-schedules.d.ts +2780 -0
  138. package/dist/types/packages/sdk/src/experiment-evaluation-schedules.d.ts.map +1 -0
  139. package/dist/types/packages/sdk/src/experiment-grading-contracts.d.ts +24 -0
  140. package/dist/types/packages/sdk/src/experiment-grading-contracts.d.ts.map +1 -1
  141. package/dist/types/packages/sdk/src/experiment-improvement-client.d.ts +5724 -0
  142. package/dist/types/packages/sdk/src/experiment-improvement-client.d.ts.map +1 -0
  143. package/dist/types/packages/sdk/src/experiment-improvement-contracts.d.ts +13024 -0
  144. package/dist/types/packages/sdk/src/experiment-improvement-contracts.d.ts.map +1 -0
  145. package/dist/types/packages/sdk/src/experiment-improvement-hosted-adoption.d.ts +1361 -0
  146. package/dist/types/packages/sdk/src/experiment-improvement-hosted-adoption.d.ts.map +1 -0
  147. package/dist/types/packages/sdk/src/experiment-improvements.d.ts +4 -0
  148. package/dist/types/packages/sdk/src/experiment-improvements.d.ts.map +1 -0
  149. package/dist/types/packages/sdk/src/experiment-run-contracts.d.ts +262 -0
  150. package/dist/types/packages/sdk/src/experiment-run-contracts.d.ts.map +1 -1
  151. package/dist/types/packages/sdk/src/experiment-run-details.d.ts +1388 -1
  152. package/dist/types/packages/sdk/src/experiment-run-details.d.ts.map +1 -1
  153. package/dist/types/packages/sdk/src/experiment-scoring-contracts.d.ts +5 -2
  154. package/dist/types/packages/sdk/src/experiment-scoring-contracts.d.ts.map +1 -1
  155. package/dist/types/packages/sdk/src/experiments.d.ts +3 -0
  156. package/dist/types/packages/sdk/src/experiments.d.ts.map +1 -1
  157. package/dist/types/packages/sdk/src/grader-inspection.d.ts +307 -5
  158. package/dist/types/packages/sdk/src/grader-inspection.d.ts.map +1 -1
  159. package/dist/types/packages/sdk/src/harness-experiment-policy.d.ts +238 -0
  160. package/dist/types/packages/sdk/src/harness-experiment-policy.d.ts.map +1 -1
  161. package/dist/types/packages/sdk/src/human-review-client.d.ts +1267 -0
  162. package/dist/types/packages/sdk/src/human-review-client.d.ts.map +1 -0
  163. package/dist/types/packages/sdk/src/human-review.d.ts +3 -0
  164. package/dist/types/packages/sdk/src/human-review.d.ts.map +1 -0
  165. package/dist/types/packages/sdk/src/index.d.ts +10 -0
  166. package/dist/types/packages/sdk/src/index.d.ts.map +1 -1
  167. package/dist/types/packages/sdk/src/managed-training-preparation.d.ts +181 -0
  168. package/dist/types/packages/sdk/src/managed-training-preparation.d.ts.map +1 -1
  169. package/dist/types/packages/sdk/src/model-batch-review-contracts.d.ts +63 -4
  170. package/dist/types/packages/sdk/src/model-batch-review-contracts.d.ts.map +1 -1
  171. package/dist/types/packages/sdk/src/model-batch-review-preparation.d.ts +90 -5
  172. package/dist/types/packages/sdk/src/model-batch-review-preparation.d.ts.map +1 -1
  173. package/dist/types/packages/sdk/src/model-batch-review.d.ts +55 -13
  174. package/dist/types/packages/sdk/src/model-batch-review.d.ts.map +1 -1
  175. package/dist/types/packages/sdk/src/model-learning-policy.d.ts +370 -1
  176. package/dist/types/packages/sdk/src/model-learning-policy.d.ts.map +1 -1
  177. package/dist/types/packages/sdk/src/model-starter-attempts.d.ts +363 -19
  178. package/dist/types/packages/sdk/src/model-starter-attempts.d.ts.map +1 -1
  179. package/dist/types/packages/sdk/src/model-starter-catalog.d.ts +234 -12
  180. package/dist/types/packages/sdk/src/model-starter-catalog.d.ts.map +1 -1
  181. package/dist/types/packages/sdk/src/model-starter-execution.d.ts +78 -1
  182. package/dist/types/packages/sdk/src/model-starter-execution.d.ts.map +1 -1
  183. package/dist/types/packages/sdk/src/model-starters.d.ts +466 -13
  184. package/dist/types/packages/sdk/src/model-starters.d.ts.map +1 -1
  185. package/dist/types/packages/sdk/src/model-taskset-derivation.d.ts +312 -4
  186. package/dist/types/packages/sdk/src/model-taskset-derivation.d.ts.map +1 -1
  187. package/dist/types/packages/sdk/src/model-taskset-resources.d.ts +78 -1
  188. package/dist/types/packages/sdk/src/model-taskset-resources.d.ts.map +1 -1
  189. package/dist/types/packages/sdk/src/model-taskset-runs-contracts.d.ts +1282 -4
  190. package/dist/types/packages/sdk/src/model-taskset-runs-contracts.d.ts.map +1 -1
  191. package/dist/types/packages/sdk/src/model-taskset-runs.d.ts +1285 -5
  192. package/dist/types/packages/sdk/src/model-taskset-runs.d.ts.map +1 -1
  193. package/dist/types/packages/sdk/src/post-training.d.ts +3529 -0
  194. package/dist/types/packages/sdk/src/post-training.d.ts.map +1 -0
  195. package/dist/types/packages/sdk/src/profile-evaluation-discovery.d.ts +1127 -0
  196. package/dist/types/packages/sdk/src/profile-evaluation-discovery.d.ts.map +1 -0
  197. package/dist/types/packages/sdk/src/profile-external-dataset-package.d.ts +1398 -0
  198. package/dist/types/packages/sdk/src/profile-external-dataset-package.d.ts.map +1 -0
  199. package/dist/types/packages/sdk/src/taskset-authored-contracts.d.ts +157 -24
  200. package/dist/types/packages/sdk/src/taskset-authored-contracts.d.ts.map +1 -1
  201. package/dist/types/packages/sdk/src/taskset-authored-files.d.ts +111 -18
  202. package/dist/types/packages/sdk/src/taskset-authored-files.d.ts.map +1 -1
  203. package/dist/types/packages/sdk/src/taskset-authored-validation.d.ts.map +1 -1
  204. package/dist/types/packages/sdk/src/taskset-calibration-fixtures.d.ts +438 -0
  205. package/dist/types/packages/sdk/src/taskset-calibration-fixtures.d.ts.map +1 -0
  206. package/dist/types/packages/sdk/src/taskset-draft-api-contracts.d.ts +292 -38
  207. package/dist/types/packages/sdk/src/taskset-draft-api-contracts.d.ts.map +1 -1
  208. package/dist/types/packages/sdk/src/taskset-draft-authoring.d.ts.map +1 -1
  209. package/dist/types/packages/sdk/src/taskset-draft-client.d.ts +661 -103
  210. package/dist/types/packages/sdk/src/taskset-draft-client.d.ts.map +1 -1
  211. package/dist/types/packages/sdk/src/taskset-draft-core.d.ts +227 -20
  212. package/dist/types/packages/sdk/src/taskset-draft-core.d.ts.map +1 -1
  213. package/dist/types/packages/sdk/src/taskset-draft-dataset-artifacts.d.ts +14 -14
  214. package/dist/types/packages/sdk/src/taskset-draft-dataset-sources.d.ts +17 -17
  215. package/dist/types/packages/sdk/src/taskset-draft-document.d.ts +147 -20
  216. package/dist/types/packages/sdk/src/taskset-draft-document.d.ts.map +1 -1
  217. package/dist/types/packages/sdk/src/taskset-draft-package-compiler.d.ts +696 -42
  218. package/dist/types/packages/sdk/src/taskset-draft-package-compiler.d.ts.map +1 -1
  219. package/dist/types/packages/sdk/src/taskset-draft-source.d.ts +256 -36
  220. package/dist/types/packages/sdk/src/taskset-draft-source.d.ts.map +1 -1
  221. package/dist/types/packages/sdk/src/taskset-draft-workspace.d.ts +292 -38
  222. package/dist/types/packages/sdk/src/taskset-draft-workspace.d.ts.map +1 -1
  223. package/dist/types/packages/sdk/src/taskset-drafts.d.ts +2 -0
  224. package/dist/types/packages/sdk/src/taskset-drafts.d.ts.map +1 -1
  225. package/dist/types/packages/sdk/src/taskset-package-client.d.ts +1494 -26
  226. package/dist/types/packages/sdk/src/taskset-package-client.d.ts.map +1 -1
  227. package/dist/types/packages/sdk/src/taskset-package-contracts.d.ts +746 -12
  228. package/dist/types/packages/sdk/src/taskset-package-contracts.d.ts.map +1 -1
  229. package/dist/types/packages/sdk/src/taskset-package-grader-projection.d.ts +77 -3
  230. package/dist/types/packages/sdk/src/taskset-package-grader-projection.d.ts.map +1 -1
  231. package/dist/types/packages/sdk/src/taskset-package-learning.d.ts +101 -11
  232. package/dist/types/packages/sdk/src/taskset-package-learning.d.ts.map +1 -1
  233. package/dist/types/packages/sdk/src/taskset-package-projection.d.ts +459 -39
  234. package/dist/types/packages/sdk/src/taskset-package-projection.d.ts.map +1 -1
  235. package/dist/types/packages/sdk/src/training-acceptance.d.ts +10 -10
  236. package/dist/types/packages/sdk/src/training-candidate-decisions.d.ts +2 -2
  237. package/dist/types/packages/sdk/src/training-evaluation-results.d.ts +1 -1
  238. package/dist/types/packages/sdk/src/training-learning-batch.d.ts +376 -42
  239. package/dist/types/packages/sdk/src/training-learning-batch.d.ts.map +1 -1
  240. package/dist/types/packages/sdk/src/training-preparations.d.ts +3930 -0
  241. package/dist/types/packages/sdk/src/training-preparations.d.ts.map +1 -1
  242. package/dist/types/packages/sdk/src/training-project-client.d.ts +776 -8
  243. package/dist/types/packages/sdk/src/training-project-client.d.ts.map +1 -1
  244. package/dist/types/packages/sdk/src/training-project-contracts.d.ts +1161 -11
  245. package/dist/types/packages/sdk/src/training-project-contracts.d.ts.map +1 -1
  246. package/dist/types/packages/sdk/src/training.d.ts +2655 -24
  247. package/dist/types/packages/sdk/src/training.d.ts.map +1 -1
  248. package/package.json +35 -3
  249. package/dist/chunk-2ZJRG3KL.js.map +0 -7
  250. package/dist/chunk-32H2EJRA.js.map +0 -7
  251. package/dist/chunk-7B44TQZD.js.map +0 -7
  252. package/dist/chunk-I2YM3UY4.js.map +0 -7
  253. package/dist/chunk-JA3KFK3U.js +0 -580
  254. package/dist/chunk-JA3KFK3U.js.map +0 -7
  255. package/dist/chunk-JCPLAIZL.js.map +0 -7
  256. package/dist/chunk-LGEF4S5I.js +0 -1229
  257. package/dist/chunk-LGEF4S5I.js.map +0 -7
  258. package/dist/chunk-PRRUBH2B.js +0 -314
  259. package/dist/chunk-PRRUBH2B.js.map +0 -7
  260. package/dist/chunk-W5TXWVFS.js.map +0 -7
  261. package/dist/chunk-Y4NGWGTA.js.map +0 -7
  262. /package/dist/{chunk-DSGGM2ME.js.map → chunk-4SZKRRTO.js.map} +0 -0
  263. /package/dist/{chunk-PJ2VLNJF.js.map → chunk-SGRYMU4C.js.map} +0 -0
@@ -1,1229 +0,0 @@
1
- import {
2
- ChatModelRefSchema
3
- } from "./chunk-Y4NGWGTA.js";
4
- import {
5
- ImmutableReleaseRefSchema,
6
- ReleaseHashSchema,
7
- ReleaseIdSchema,
8
- VersionedReleaseRefSchema,
9
- contentHash
10
- } from "./chunk-QUOW6URQ.js";
11
-
12
- // src/taskset-draft-dataset-artifacts.ts
13
- import { z } from "zod";
14
- var IdSchema = z.string().trim().min(1).max(240);
15
- var TimestampSchema = z.string().trim().min(1);
16
- var HashSchema = z.string().trim().min(8).max(256);
17
- var RelativePathSchema = z.string().trim().min(1).max(1e3).refine(
18
- (value) => !value.startsWith("/") && !value.startsWith("\\") && !value.split(/[\\/]/).includes(".."),
19
- "Artifact paths must be relative and stay inside the Dataset."
20
- );
21
- var DatasetSplitSchema = z.enum([
22
- "train",
23
- "validation",
24
- "test",
25
- "frozen_eval"
26
- ]);
27
- var DatasetSemanticFieldSchema = z.object({
28
- name: z.string().trim().min(1).max(500),
29
- semanticRole: z.enum([
30
- "row_id",
31
- "cluster_id",
32
- "prompt",
33
- "messages",
34
- "demonstration",
35
- "chosen",
36
- "rejected",
37
- "expected_output",
38
- "privileged_context",
39
- "reward",
40
- "feedback",
41
- "tag",
42
- "metadata"
43
- ]),
44
- logicalType: z.enum([
45
- "string",
46
- "integer",
47
- "float",
48
- "boolean",
49
- "json",
50
- "messages"
51
- ]),
52
- nullable: z.boolean(),
53
- policy: z.enum(["visible", "privileged", "metadata"])
54
- });
55
- var DatasetSemanticSchemaSchema = z.object({
56
- schemaVersion: z.literal("openpond.datasetSemanticSchema.v1"),
57
- fields: z.array(DatasetSemanticFieldSchema).min(1).max(1e4),
58
- schemaHash: HashSchema
59
- });
60
- var DatasetShardRefSchema = z.object({
61
- id: IdSchema,
62
- split: DatasetSplitSchema,
63
- path: RelativePathSchema,
64
- contentHash: HashSchema,
65
- schemaHash: HashSchema,
66
- sizeBytes: z.number().int().nonnegative(),
67
- rowCount: z.number().int().positive(),
68
- rowGroupCount: z.number().int().positive()
69
- });
70
- var DatasetArtifactManifestSchema = z.object({
71
- schemaVersion: z.literal("openpond.datasetArtifact.v1"),
72
- id: IdSchema,
73
- tasksetId: IdSchema,
74
- tasksetRevision: z.number().int().positive(),
75
- contentHash: HashSchema,
76
- format: z.literal("parquet"),
77
- schema: DatasetSemanticSchemaSchema,
78
- shards: z.array(DatasetShardRefSchema).min(1).max(1e5),
79
- rowCount: z.number().int().positive(),
80
- splitCounts: z.record(DatasetSplitSchema, z.number().int().nonnegative()),
81
- sourceReceiptRefs: z.array(IdSchema).min(1).max(1e5),
82
- mappingHash: HashSchema,
83
- qualityReportHash: HashSchema,
84
- createdAt: TimestampSchema
85
- });
86
- var DatasetArtifactSummarySchema = z.object({
87
- schemaVersion: z.literal("openpond.datasetArtifactSummary.v1"),
88
- artifactId: IdSchema,
89
- tasksetId: IdSchema,
90
- tasksetRevision: z.number().int().positive(),
91
- format: z.literal("parquet"),
92
- rowCount: z.number().int().positive(),
93
- splitCounts: z.record(DatasetSplitSchema, z.number().int().nonnegative()),
94
- sizeBytes: z.number().int().nonnegative(),
95
- contentHash: HashSchema,
96
- available: z.boolean(),
97
- unavailableReason: z.string().trim().min(1).max(2e3).nullable(),
98
- createdAt: TimestampSchema
99
- });
100
- var DatasetCatalogItemSchema = z.object({
101
- schemaVersion: z.literal("openpond.datasetCatalogItem.v1"),
102
- tasksetId: IdSchema,
103
- tasksetRevision: z.number().int().positive(),
104
- artifactId: IdSchema.nullable(),
105
- name: z.string().trim().min(1).max(500),
106
- status: z.enum([
107
- "draft",
108
- "awaiting_disclosure_approval",
109
- "awaiting_materialization_approval",
110
- "materializing",
111
- "validating",
112
- "needs_review",
113
- "baselining",
114
- "ready",
115
- "blocked",
116
- "failed",
117
- "archived"
118
- ]),
119
- storageKind: z.enum(["inline", "parquet"]),
120
- rowCount: z.number().int().nonnegative(),
121
- splitCounts: z.record(DatasetSplitSchema, z.number().int().nonnegative()),
122
- sizeBytes: z.number().int().nonnegative().nullable(),
123
- available: z.boolean(),
124
- unavailableReason: z.string().trim().min(1).max(2e3).nullable(),
125
- createdAt: TimestampSchema,
126
- updatedAt: TimestampSchema
127
- });
128
- var DatasetCatalogResponseSchema = z.object({
129
- schemaVersion: z.literal("openpond.datasetCatalog.v1"),
130
- profileId: IdSchema,
131
- datasets: z.array(DatasetCatalogItemSchema),
132
- generatedAt: TimestampSchema
133
- });
134
- var DatasetArtifactRegistryEntrySchema = z.object({
135
- schemaVersion: z.literal("openpond.datasetArtifactRegistry.v1"),
136
- manifest: DatasetArtifactManifestSchema,
137
- profileId: IdSchema,
138
- storageRoot: z.string().trim().min(1).max(4e3),
139
- relativeManifestPath: RelativePathSchema,
140
- available: z.boolean(),
141
- unavailableReason: z.string().trim().min(1).max(2e3).nullable(),
142
- verifiedAt: TimestampSchema.nullable(),
143
- createdAt: TimestampSchema,
144
- updatedAt: TimestampSchema
145
- });
146
- var DatasetRowPageRequestSchema = z.object({
147
- split: DatasetSplitSchema.nullable().default(null),
148
- cursor: z.string().trim().min(1).max(2e3).nullable().default(null),
149
- limit: z.number().int().min(1).max(100).default(25),
150
- columns: z.array(z.string().trim().min(1).max(500)).max(100).default([])
151
- });
152
- var DatasetRowPageSchema = z.object({
153
- schemaVersion: z.literal("openpond.datasetRowPage.v1"),
154
- tasksetId: IdSchema,
155
- tasksetRevision: z.number().int().positive(),
156
- artifactHash: HashSchema,
157
- split: DatasetSplitSchema.nullable(),
158
- rows: z.array(z.record(z.string(), z.unknown())).max(100),
159
- nextCursor: z.string().max(2e3).nullable(),
160
- totalRows: z.number().int().nonnegative(),
161
- returnedRows: z.number().int().nonnegative()
162
- });
163
- var DatasetStorageSettingsSchema = z.object({
164
- schemaVersion: z.literal("openpond.datasetStorageSettings.v1"),
165
- datasetStorePath: z.string().trim().min(1).max(4e3),
166
- updatedAt: TimestampSchema
167
- });
168
- var DatasetStorageRootSchema = z.object({
169
- id: IdSchema,
170
- label: z.string().trim().min(1).max(500),
171
- path: z.string().trim().min(1).max(4e3),
172
- datasetStorePath: z.string().trim().min(1).max(4e3),
173
- kind: z.enum(["local", "network", "removable", "cache"]),
174
- configured: z.boolean(),
175
- mounted: z.boolean(),
176
- writable: z.boolean(),
177
- totalBytes: z.number().int().nonnegative().nullable(),
178
- freeBytes: z.number().int().nonnegative().nullable()
179
- });
180
- var DatasetStorageStateSchema = z.object({
181
- schemaVersion: z.literal("openpond.datasetStorageState.v1"),
182
- settings: DatasetStorageSettingsSchema,
183
- storageRoots: z.array(DatasetStorageRootSchema)
184
- });
185
- var UpdateDatasetStorageSettingsRequestSchema = z.object({
186
- datasetStorePath: z.string().trim().min(1).max(4e3)
187
- });
188
-
189
- // src/taskset-draft-dataset-sources.ts
190
- import { z as z2 } from "zod";
191
- var IdSchema2 = z2.string().trim().min(1).max(240);
192
- var TimestampSchema2 = z2.string().trim().min(1);
193
- var HashSchema2 = z2.string().trim().min(8).max(256);
194
- var MetadataSchema = z2.record(z2.string(), z2.unknown()).default({});
195
- var RevisionSchema = z2.string().trim().min(7).max(256);
196
- var DatasetSourceReviewStatusSchema = z2.enum([
197
- "pending",
198
- "approved",
199
- "review",
200
- "blocked"
201
- ]);
202
- var ExternalDatasetSourceBaseSchema = z2.object({
203
- id: IdSchema2,
204
- profileId: IdSchema2,
205
- title: z2.string().trim().min(1).max(500),
206
- sourceHash: HashSchema2,
207
- occurredAt: TimestampSchema2,
208
- licensingStatus: DatasetSourceReviewStatusSchema,
209
- secretScanStatus: z2.enum(["pending", "passed", "blocked"]),
210
- piiScanStatus: z2.enum(["pending", "passed", "review", "blocked"]),
211
- metadata: MetadataSchema
212
- });
213
- var HuggingFaceDatasetSourceRefSchema = ExternalDatasetSourceBaseSchema.extend({
214
- schemaVersion: z2.literal("openpond.huggingFaceDatasetSource.v1"),
215
- kind: z2.literal("huggingface"),
216
- repositoryId: z2.string().trim().regex(/^[^/\s]+\/[^/\s]+$/).max(500),
217
- repositoryUrl: z2.string().url().max(2e3),
218
- revision: RevisionSchema,
219
- configuration: z2.string().trim().min(1).max(500),
220
- upstreamSplits: z2.array(z2.string().trim().min(1).max(500)).min(1).max(1e3),
221
- gated: z2.boolean(),
222
- private: z2.boolean(),
223
- declaredLicense: z2.string().trim().min(1).max(500).nullable(),
224
- sourceFileHashes: z2.array(HashSchema2).min(1).max(1e5)
225
- });
226
- var UploadedFileDatasetSourceRefSchema = ExternalDatasetSourceBaseSchema.extend({
227
- schemaVersion: z2.literal("openpond.uploadedFileDatasetSource.v1"),
228
- kind: z2.literal("uploaded_file"),
229
- originalFileNames: z2.array(z2.string().trim().min(1).max(500)).min(1).max(1e3),
230
- mediaTypes: z2.array(z2.string().trim().min(1).max(200)).min(1).max(1e3),
231
- sourceFileHashes: z2.array(HashSchema2).min(1).max(1e3),
232
- totalBytes: z2.number().int().nonnegative(),
233
- parserVersion: z2.string().trim().min(1).max(200)
234
- });
235
- var GeneratedDatasetSourceRefSchema = ExternalDatasetSourceBaseSchema.extend({
236
- schemaVersion: z2.literal("openpond.generatedDatasetSource.v1"),
237
- kind: z2.literal("generated"),
238
- generatorId: IdSchema2,
239
- generatorVersion: z2.string().trim().min(1).max(200),
240
- seed: z2.number().int(),
241
- generatorHash: HashSchema2
242
- });
243
- var LearningBatchDatasetSourceRefSchema = ExternalDatasetSourceBaseSchema.extend({
244
- schemaVersion: z2.literal("openpond.learningBatchDatasetSource.v1"),
245
- kind: z2.literal("learning_batch"),
246
- batch: z2.object({ id: IdSchema2, revision: z2.number().int().positive(), contentHash: HashSchema2 }).strict(),
247
- taskDefinition: z2.object({ id: IdSchema2, revision: z2.number().int().positive(), contentHash: HashSchema2 }).strict(),
248
- admittedBy: IdSchema2
249
- });
250
- var ExternalDatasetSourceRefSchema = z2.discriminatedUnion("kind", [
251
- HuggingFaceDatasetSourceRefSchema,
252
- UploadedFileDatasetSourceRefSchema,
253
- GeneratedDatasetSourceRefSchema,
254
- LearningBatchDatasetSourceRefSchema
255
- ]);
256
-
257
- // src/taskset-draft-harness-actions.ts
258
- import { z as z3 } from "zod";
259
- var HarnessActionBindingSchema = z3.object({
260
- schemaVersion: z3.literal("openpond.harnessActionBinding.v1"),
261
- actionId: ReleaseIdSchema,
262
- modelToolName: z3.string().trim().min(1).max(64).regex(/^[a-zA-Z][a-zA-Z0-9_-]*$/),
263
- description: z3.string().trim().min(1).max(1e3),
264
- inputSchema: z3.record(z3.string(), z3.unknown()),
265
- actionSchemaHash: ReleaseHashSchema,
266
- agentRelease: ImmutableReleaseRefSchema,
267
- implementationHash: ReleaseHashSchema,
268
- runtimeBindingId: ReleaseIdSchema,
269
- capabilityReceiptHash: ReleaseHashSchema,
270
- sideEffect: z3.enum(["read", "write"]),
271
- studentVisible: z3.boolean(),
272
- timeoutMs: z3.number().int().positive().max(36e5),
273
- episodeArgumentBindings: z3.array(
274
- z3.object({
275
- argument: ReleaseIdSchema,
276
- source: z3.literal("case_id")
277
- }).strict()
278
- ).max(20).default([])
279
- }).strict();
280
-
281
- // src/taskset-draft-core.ts
282
- import { z as z4 } from "zod";
283
- import { CustomVerifierRuntimeSchema } from "@openpond/evals/tasksets";
284
- var IdSchema3 = z4.string().trim().min(1).max(240);
285
- var TimestampSchema3 = z4.string().trim().min(1);
286
- var HashSchema3 = z4.string().trim().min(8).max(256);
287
- var Sha256Schema = z4.string().trim().regex(/^[a-f0-9]{64}$/);
288
- var CodeIdentifierSchema = z4.string().trim().regex(/^[A-Za-z_$][A-Za-z0-9_$]*$/);
289
- var MetadataSchema2 = z4.record(z4.string(), z4.unknown()).default({});
290
- var NullableIdSchema = IdSchema3.nullable();
291
- function safeRelativeFilePath(value) {
292
- const normalized = value.trim().replaceAll("\\", "/");
293
- if (!normalized || normalized.startsWith("/") || normalized === "." || normalized === "..") {
294
- return false;
295
- }
296
- return !normalized.split("/").some(
297
- (segment) => !segment || segment === "." || segment === ".."
298
- );
299
- }
300
- function safeFileName(value) {
301
- const normalized = value.trim();
302
- return normalized.length > 0 && normalized !== "." && normalized !== ".." && !normalized.includes("/") && !normalized.includes("\\") && !normalized.includes("\0");
303
- }
304
- var TasksetSplitSchema = DatasetSplitSchema;
305
- var TasksetPurposeSchema = z4.enum(["general", "benchmark"]);
306
- var TasksetBenchmarkBindingSchema = z4.object({
307
- schemaVersion: z4.literal("openpond.tasksetBenchmark.v1"),
308
- definitionId: IdSchema3,
309
- releaseId: IdSchema3,
310
- releaseHash: Sha256Schema,
311
- managedReleasePath: z4.string().trim().min(1).max(1e3).refine(safeRelativeFilePath, "Benchmark release paths must remain relative."),
312
- adaptationSplit: TasksetSplitSchema,
313
- evaluationSplit: TasksetSplitSchema,
314
- primaryMetric: z4.enum([
315
- "foreground_tokens",
316
- "success_rate",
317
- "latency_ms",
318
- "cost_usd"
319
- ]),
320
- qualityGate: z4.enum(["none", "non_regression", "all_pass"]),
321
- source: z4.enum(["builtin", "imported"]),
322
- metadata: MetadataSchema2
323
- });
324
- var TasksetPreferenceComparisonBindingSchema = z4.object({
325
- schemaVersion: z4.literal("openpond.tasksetPreferenceComparisonBinding.v1"),
326
- releaseId: IdSchema3,
327
- releaseHash: Sha256Schema,
328
- publishedAt: TimestampSchema3,
329
- metadata: MetadataSchema2
330
- });
331
- var TrainingSourceConsentSchema = z4.object({
332
- status: z4.enum(["pending", "granted", "denied", "revoked"]),
333
- scope: z4.enum(["metadata_only", "selected_turns", "full_session"]),
334
- grantedBy: NullableIdSchema,
335
- grantedAt: TimestampSchema3.nullable(),
336
- purpose: z4.literal("task_authoring_and_evaluation")
337
- });
338
- var TrainingSourceRefSchema = z4.object({
339
- schemaVersion: z4.literal("openpond.trainingSource.v1"),
340
- id: IdSchema3,
341
- profileId: IdSchema3,
342
- sessionId: IdSchema3,
343
- turnIds: z4.array(IdSchema3).max(1e3).default([]),
344
- workspaceId: NullableIdSchema,
345
- sourceHash: HashSchema3,
346
- clusterKey: IdSchema3,
347
- title: z4.string().trim().min(1).max(500),
348
- occurredAt: TimestampSchema3,
349
- consent: TrainingSourceConsentSchema,
350
- connectedAppIds: z4.array(IdSchema3).max(100).default([]),
351
- secretScanStatus: z4.enum(["pending", "passed", "blocked"]),
352
- piiScanStatus: z4.enum(["pending", "passed", "review", "blocked"]),
353
- licensingStatus: z4.enum(["pending", "approved", "review", "blocked"]),
354
- metadata: MetadataSchema2
355
- });
356
- var TasksetSourceRefSchema = z4.union([
357
- TrainingSourceRefSchema,
358
- ExternalDatasetSourceRefSchema
359
- ]);
360
- var TaskPolicyBoundarySchema = z4.object({
361
- policyVisibleFields: z4.array(IdSchema3).max(1e3).default([]),
362
- privilegedFields: z4.array(IdSchema3).max(1e3).default([]),
363
- hiddenGraderRefs: z4.array(IdSchema3).max(100).default([]),
364
- connectedAppScopes: z4.array(IdSchema3).max(100).default([])
365
- });
366
- var TaskAssetRefSchema = z4.object({
367
- id: IdSchema3,
368
- sourceRefId: IdSchema3,
369
- artifactRef: z4.string().trim().min(1).max(4e3).refine(safeRelativeFilePath, "Task asset references must be safe relative paths."),
370
- fileName: z4.string().trim().min(1).max(500).refine(safeFileName, "Task asset file names must not contain path separators."),
371
- mediaType: z4.string().trim().min(1).max(200),
372
- sha256: Sha256Schema,
373
- sizeBytes: z4.number().int().nonnegative().max(25e7),
374
- split: TasksetSplitSchema,
375
- metadata: MetadataSchema2
376
- });
377
- var TaskRequiredOutputSchema = z4.object({
378
- path: z4.string().trim().min(1).max(1e3).refine(safeRelativeFilePath, "Required output paths must stay inside the Work output directory."),
379
- mediaType: z4.string().trim().min(1).max(200),
380
- schemaRef: IdSchema3.nullable().optional(),
381
- maxBytes: z4.number().int().positive().max(1e7).optional(),
382
- metadata: MetadataSchema2
383
- });
384
- var TaskDataRecordSchema = z4.object({
385
- schemaVersion: z4.literal("openpond.taskData.v1"),
386
- id: IdSchema3,
387
- clusterKey: IdSchema3,
388
- split: TasksetSplitSchema,
389
- input: z4.record(z4.string(), z4.unknown()),
390
- expectedOutput: z4.record(z4.string(), z4.unknown()).nullable(),
391
- policyVisibleContext: z4.record(z4.string(), z4.unknown()).default({}),
392
- privilegedContextRef: NullableIdSchema,
393
- sourceRefs: z4.array(IdSchema3).min(1).max(100),
394
- assets: z4.array(TaskAssetRefSchema).max(1e3).optional(),
395
- resourceRefs: z4.array(IdSchema3).max(1e3).optional(),
396
- requiredOutputs: z4.array(TaskRequiredOutputSchema).max(100).optional(),
397
- tags: z4.array(IdSchema3).max(100).default([]),
398
- metadata: MetadataSchema2
399
- });
400
- var TasksetEnvironmentResourceSchema = z4.object({
401
- id: IdSchema3,
402
- kind: z4.enum(["file", "catalog", "configuration", "code_module"]),
403
- path: z4.string().trim().min(1).max(1e3).refine(safeRelativeFilePath, "Environment resource paths must remain relative."),
404
- mediaType: z4.string().trim().min(1).max(200).nullable().optional(),
405
- visibility: z4.enum(["policy_visible", "policy_hidden", "privileged"]),
406
- required: z4.boolean(),
407
- metadata: MetadataSchema2
408
- });
409
- var LearningSignalBaseSchema = z4.object({
410
- id: IdSchema3,
411
- taskId: NullableIdSchema,
412
- sourceRefs: z4.array(IdSchema3).min(1).max(100),
413
- artifactRef: IdSchema3,
414
- approved: z4.boolean(),
415
- confidence: z4.number().min(0).max(1),
416
- metadata: MetadataSchema2
417
- });
418
- var DemonstrationSignalSchema = LearningSignalBaseSchema.extend({
419
- kind: z4.literal("demonstration"),
420
- prompt: z4.string().max(1e5).nullable().default(null),
421
- response: z4.string().max(2e5).nullable().default(null)
422
- });
423
- var PreferenceSignalSchema = LearningSignalBaseSchema.extend({
424
- kind: z4.literal("preference"),
425
- prompt: z4.string().max(1e5),
426
- chosen: z4.string().max(2e5),
427
- rejected: z4.string().max(2e5),
428
- rationale: z4.string().max(1e5).nullable().default(null)
429
- });
430
- var CorrectionSignalSchema = LearningSignalBaseSchema.extend({
431
- kind: z4.literal("correction"),
432
- original: z4.string().max(2e5),
433
- corrected: z4.string().max(2e5),
434
- rationale: z4.string().max(1e5).nullable().default(null)
435
- });
436
- var FeedbackSignalSchema = LearningSignalBaseSchema.extend({
437
- kind: z4.literal("feedback"),
438
- feedback: z4.string().max(1e5),
439
- polarity: z4.enum(["positive", "negative", "mixed", "neutral"])
440
- });
441
- var RewardSignalSchema = LearningSignalBaseSchema.extend({
442
- kind: z4.literal("reward"),
443
- task: z4.string().max(1e5),
444
- rules: z4.array(z4.object({
445
- id: IdSchema3,
446
- points: z4.number().finite(),
447
- condition: z4.string().trim().min(1).max(1e5)
448
- })).min(1).max(1e3),
449
- otherwisePoints: z4.number().finite(),
450
- executable: z4.boolean()
451
- });
452
- var LabelSignalSchema = LearningSignalBaseSchema.extend({
453
- kind: z4.literal("label"),
454
- labelKind: z4.literal("rubric"),
455
- task: z4.string().max(1e5),
456
- criteria: z4.array(z4.object({
457
- id: IdSchema3,
458
- label: z4.string().trim().min(1).max(500),
459
- description: z4.string().trim().min(1).max(1e5)
460
- })).min(1).max(1e3),
461
- calibrationExamples: z4.object({
462
- positive: z4.string().trim().min(1).max(2e5),
463
- negative: z4.string().trim().min(1).max(2e5),
464
- boundary: z4.string().trim().min(1).max(2e5)
465
- })
466
- });
467
- var LearningSignalRefSchema = z4.discriminatedUnion("kind", [
468
- DemonstrationSignalSchema,
469
- PreferenceSignalSchema,
470
- CorrectionSignalSchema,
471
- FeedbackSignalSchema,
472
- RewardSignalSchema,
473
- LabelSignalSchema
474
- ]);
475
- var LearningSignalInventorySchema = z4.object({
476
- demonstrations: z4.array(DemonstrationSignalSchema).max(1e5).default([]),
477
- preferences: z4.array(PreferenceSignalSchema).max(1e5).default([]),
478
- corrections: z4.array(CorrectionSignalSchema).max(1e5).default([]),
479
- feedback: z4.array(FeedbackSignalSchema).max(1e5).default([]),
480
- rewards: z4.array(RewardSignalSchema).max(1e5).default([]),
481
- labels: z4.array(LabelSignalSchema).max(1e5).default([])
482
- });
483
- var TasksetEnvironmentContractSchema = z4.object({
484
- protocolVersion: z4.literal("openpond.taskEnvironment.v1"),
485
- kind: z4.enum(["chat", "agent", "program", "stateful_harness", "work"]),
486
- entrypoint: z4.string().trim().min(1).max(1e3),
487
- stateful: z4.boolean(),
488
- deterministicSeeds: z4.boolean(),
489
- toolNames: z4.array(IdSchema3).max(200).default([]),
490
- actionBindings: z4.array(HarnessActionBindingSchema).max(200).optional(),
491
- lifecycle: z4.array(z4.enum(["create", "reset", "step", "grade", "cleanup"])).min(1),
492
- defaultTimeoutMs: z4.number().int().positive().max(36e5),
493
- networkPolicy: z4.enum(["none", "declared_read_only", "declared_scoped"]),
494
- resources: z4.array(TasksetEnvironmentResourceSchema).max(1e4).optional(),
495
- metadata: MetadataSchema2
496
- });
497
- var TasksetCapabilityManifestSchema = z4.object({
498
- schemaVersion: z4.literal("openpond.tasksetCapabilities.v1"),
499
- taskKind: z4.enum(["chat", "single_agent", "multi_agent", "custom_program"]),
500
- supportedSignals: z4.array(z4.enum(["demonstration", "preference", "correction", "feedback", "reward", "label"])),
501
- compatibleMethods: z4.array(z4.enum(["none", "retrieval", "sft", "dpo", "grpo", "ppo", "sdft", "opd", "opsd", "sdpo"])),
502
- rewardKinds: z4.array(z4.enum(["none", "exact", "deterministic", "model_judge", "human"])),
503
- requiresTools: z4.boolean(),
504
- requiresState: z4.boolean(),
505
- requiresPrivilegedGrading: z4.boolean(),
506
- environmentPlacements: z4.array(z4.enum(["local", "remote", "colocated", "provider_native"])),
507
- exportable: z4.boolean(),
508
- portabilityBlockers: z4.array(z4.string().trim().min(1).max(2e3)).default([])
509
- });
510
- var GraderBaseSchema = z4.object({
511
- id: IdSchema3,
512
- version: z4.string().trim().min(1).max(100),
513
- label: z4.string().trim().min(1).max(500),
514
- weight: z4.number().min(0).max(1e3).default(1),
515
- hardGate: z4.boolean().default(false),
516
- rewardEligible: z4.boolean().default(false),
517
- privileged: z4.boolean().default(false),
518
- metadata: MetadataSchema2
519
- });
520
- var DeterministicGraderSpecSchema = GraderBaseSchema.extend({
521
- kind: z4.enum(["content", "schema", "file", "diff", "test", "runtime_event", "state"]),
522
- config: z4.record(z4.string(), z4.unknown())
523
- });
524
- var RubricGraderSpecSchema = GraderBaseSchema.extend({
525
- kind: z4.literal("model_judge"),
526
- rubric: z4.string().trim().min(1).max(5e4),
527
- judge: ChatModelRefSchema,
528
- calibrationFixtureRefs: z4.array(IdSchema3).min(1).max(500),
529
- calibrationStatus: z4.enum(["pending", "passed", "failed"]),
530
- temperature: z4.number().min(0).max(2).default(0)
531
- });
532
- var HumanGraderSpecSchema = GraderBaseSchema.extend({
533
- kind: z4.literal("human"),
534
- rubric: z4.string().trim().min(1).max(5e4),
535
- reviewerRole: z4.string().trim().min(1).max(500)
536
- });
537
- var CustomVerifierGraderSpecSchema = GraderBaseSchema.extend({
538
- kind: z4.literal("custom_verifier"),
539
- runtime: CustomVerifierRuntimeSchema.optional(),
540
- module: z4.string().trim().min(1).max(1e3).refine(safeRelativeFilePath, "Custom verifier modules must use a safe relative path."),
541
- exportName: CodeIdentifierSchema,
542
- timeoutMs: z4.number().int().positive().max(3e5),
543
- networkPolicy: z4.literal("none")
544
- });
545
- var GraderSpecSchema = z4.union([
546
- DeterministicGraderSpecSchema,
547
- RubricGraderSpecSchema,
548
- HumanGraderSpecSchema,
549
- CustomVerifierGraderSpecSchema
550
- ]);
551
- var GraderFixtureLabelSchema = z4.enum([
552
- "positive",
553
- "negative",
554
- "boundary",
555
- "adversarial",
556
- "prompt_injection",
557
- "infrastructure_failure"
558
- ]);
559
- var GraderFixtureSchema = z4.object({
560
- id: IdSchema3,
561
- taskId: IdSchema3,
562
- label: GraderFixtureLabelSchema,
563
- output: z4.record(z4.string(), z4.unknown()),
564
- infrastructureError: z4.string().trim().min(1).max(1e4).nullable(),
565
- expectedPassed: z4.boolean(),
566
- expectedRewardEligible: z4.boolean(),
567
- metadata: MetadataSchema2
568
- });
569
-
570
- // src/taskset-authored-contracts.ts
571
- import { z as z5 } from "zod";
572
- import { TasksetMetricPolicySchema } from "@openpond/evals/metrics";
573
- var IdSchema4 = z5.string().trim().min(1).max(240);
574
- var TimestampSchema4 = z5.string().trim().min(1);
575
- var HashSchema4 = z5.string().trim().min(8).max(256);
576
- var MetadataSchema3 = z5.record(z5.string(), z5.unknown()).default({});
577
- var NullableIdSchema2 = IdSchema4.nullable();
578
- var TASKSET_WORK_TOOL_NAMES = [
579
- "work_capabilities",
580
- "work_environment",
581
- "work_list_files",
582
- "work_read_file",
583
- "work_read_document",
584
- "work_write_file",
585
- "work_write_docx",
586
- "work_edit_file",
587
- "work_delete_file",
588
- "work_exec",
589
- "work_save_output",
590
- "work_stop"
591
- ];
592
- var TasksetStatusSchema = z5.enum([
593
- "draft",
594
- "awaiting_disclosure_approval",
595
- "awaiting_materialization_approval",
596
- "materializing",
597
- "validating",
598
- "needs_review",
599
- "baselining",
600
- "ready",
601
- "blocked",
602
- "failed",
603
- "archived"
604
- ]);
605
- var DatasetBuildIntentSchema = z5.enum([
606
- "demonstrations",
607
- "preferences",
608
- "verifiable_reward",
609
- "rubric",
610
- "discovery"
611
- ]);
612
- var DatasetEvidenceTextSchema = z5.string().trim().max(1e5);
613
- var DatasetBuildSpecificationSchema = z5.discriminatedUnion("kind", [
614
- z5.object({
615
- kind: z5.literal("demonstrations"),
616
- behavior: DatasetEvidenceTextSchema,
617
- examples: z5.array(z5.object({
618
- id: IdSchema4,
619
- prompt: DatasetEvidenceTextSchema,
620
- response: DatasetEvidenceTextSchema
621
- })).max(1e3).default([])
622
- }),
623
- z5.object({
624
- kind: z5.literal("preferences"),
625
- preference: DatasetEvidenceTextSchema,
626
- pairs: z5.array(z5.object({
627
- id: IdSchema4,
628
- prompt: DatasetEvidenceTextSchema,
629
- chosen: DatasetEvidenceTextSchema,
630
- rejected: DatasetEvidenceTextSchema,
631
- rationale: DatasetEvidenceTextSchema
632
- })).max(1e3).default([])
633
- }),
634
- z5.object({
635
- kind: z5.literal("verifiable_reward"),
636
- task: DatasetEvidenceTextSchema,
637
- rules: z5.array(z5.object({
638
- id: IdSchema4,
639
- points: z5.number().finite(),
640
- condition: DatasetEvidenceTextSchema
641
- })).max(1e3).default([]),
642
- otherwisePoints: z5.number().finite().default(0)
643
- }),
644
- z5.object({
645
- kind: z5.literal("rubric"),
646
- task: DatasetEvidenceTextSchema,
647
- criteria: z5.array(z5.object({
648
- id: IdSchema4,
649
- label: z5.string().trim().max(500),
650
- description: DatasetEvidenceTextSchema
651
- })).max(1e3).default([]),
652
- positiveExample: DatasetEvidenceTextSchema,
653
- negativeExample: DatasetEvidenceTextSchema,
654
- boundaryExample: DatasetEvidenceTextSchema
655
- })
656
- ]);
657
- var GeneratedTaskFileSchema = z5.object({
658
- path: z5.string().trim().min(1).max(1e3),
659
- role: z5.enum(["environment", "verifier", "fixture"]),
660
- content: z5.string().max(25e4)
661
- });
662
- var TrainingPathRecommendationSchema = z5.object({
663
- primaryMethod: z5.enum(["sft", "dpo", "grpo", "ppo", "sdft", "opsd", "sdpo"]),
664
- bootstrap: z5.object({
665
- method: z5.literal("sft"),
666
- purpose: z5.literal("trajectory_bootstrap"),
667
- demonstrationRefs: z5.array(IdSchema4).min(1).max(1e5),
668
- limitations: z5.array(z5.string().trim().min(1).max(5e3)).min(1).max(100)
669
- }).nullable()
670
- });
671
- var TrainingMethodReadinessReasonCodeSchema = z5.enum([
672
- "taskset_not_ready",
673
- "demonstrations_missing",
674
- "preference_pairs_missing",
675
- "preference_pairs_invalid",
676
- "executable_reward_missing",
677
- "reward_not_calibrated",
678
- "reward_model_missing",
679
- "value_model_required",
680
- "frozen_eval_missing"
681
- ]);
682
- var TrainingMethodReadinessSchema = z5.object({
683
- method: z5.enum(["sft", "dpo", "grpo", "ppo"]),
684
- status: z5.enum(["recommended", "compatible", "needs_dataset_work"]),
685
- reasonCodes: z5.array(TrainingMethodReadinessReasonCodeSchema).default([]),
686
- reasons: z5.array(z5.string().trim().min(1).max(5e3)).default([])
687
- });
688
- var TasksetReadinessFindingSchema = z5.object({
689
- code: IdSchema4,
690
- message: z5.string().trim().min(1).max(5e3),
691
- path: z5.string().trim().max(2e3).nullable()
692
- });
693
- var TasksetReadinessReportSchema = z5.object({
694
- schemaVersion: z5.literal("openpond.tasksetReadiness.v1"),
695
- tasksetId: IdSchema4,
696
- tasksetHash: HashSchema4,
697
- ready: z5.boolean(),
698
- recommendedMethod: z5.enum(["none", "retrieval", "sft", "dpo", "grpo", "ppo", "sdft", "opd", "opsd", "sdpo"]),
699
- trainingPath: TrainingPathRecommendationSchema.nullable().default(null),
700
- methodReadiness: z5.array(TrainingMethodReadinessSchema).default([]),
701
- compatibleDestinationClasses: z5.array(
702
- z5.enum(["export", "custom", "hosted_managed"])
703
- ),
704
- blockers: z5.array(TasksetReadinessFindingSchema).default([]),
705
- advisories: z5.array(TasksetReadinessFindingSchema).default([]),
706
- warnings: z5.array(z5.string().trim().min(1).max(5e3)).default([]),
707
- generatedAt: TimestampSchema4
708
- });
709
- var AuthoringRepairSchema = z5.object({ attempt: z5.number().int().positive(), summary: z5.string().trim().min(1).max(5e3), createdAt: TimestampSchema4 });
710
- var AuthoringProvenanceSchema = z5.object({
711
- schemaVersion: z5.literal("openpond.taskAuthoringProvenance.v1"),
712
- model: ChatModelRefSchema.nullable(),
713
- modelConfig: MetadataSchema3,
714
- skillHash: HashSchema4,
715
- promptTemplateVersion: z5.string().trim().min(1).max(200),
716
- buildIntent: DatasetBuildIntentSchema.default("demonstrations"),
717
- buildSpecification: DatasetBuildSpecificationSchema.nullable().default(null),
718
- evidenceHashes: z5.array(HashSchema4).max(1e5),
719
- tasksetSdkVersion: z5.string().trim().min(1).max(100),
720
- sourceCommit: z5.string().trim().min(1).max(256).nullable(),
721
- repairHistory: z5.array(AuthoringRepairSchema).max(1e3),
722
- createdAt: TimestampSchema4
723
- });
724
- var TasksetSchema = z5.object({
725
- schemaVersion: z5.literal("openpond.taskset.v1"),
726
- id: IdSchema4,
727
- revision: z5.number().int().positive().default(1),
728
- profileId: IdSchema4,
729
- profileRelease: VersionedReleaseRefSchema.nullable().optional(),
730
- createImproveRunId: NullableIdSchema2.default(null),
731
- name: z5.string().trim().min(1).max(500),
732
- // Portable tasks may carry all instructions in their individual inputs.
733
- // Preserve an absent package prompt; draft publication validates its objective.
734
- objective: z5.string().trim().max(2e4),
735
- purpose: TasksetPurposeSchema.default("general"),
736
- benchmark: TasksetBenchmarkBindingSchema.nullable().default(null),
737
- preferenceComparison: TasksetPreferenceComparisonBindingSchema.nullable().default(null),
738
- status: TasksetStatusSchema,
739
- sourceRefs: z5.array(TasksetSourceRefSchema).min(1).max(1e5),
740
- datasetArtifact: DatasetArtifactManifestSchema.nullable().optional(),
741
- policy: TaskPolicyBoundarySchema,
742
- environment: TasksetEnvironmentContractSchema,
743
- capabilities: TasksetCapabilityManifestSchema,
744
- metrics: TasksetMetricPolicySchema.optional(),
745
- tasks: z5.array(TaskDataRecordSchema).max(1e6),
746
- graders: z5.array(GraderSpecSchema).min(1).max(1e3),
747
- // Imported releases are inspectable before local calibration. Admission
748
- // requires real fixtures separately in validateTaskset.
749
- graderFixtures: z5.array(GraderFixtureSchema).max(1e5),
750
- learningSignals: LearningSignalInventorySchema,
751
- authoringProvenance: AuthoringProvenanceSchema,
752
- readiness: TasksetReadinessReportSchema.nullable(),
753
- contentHash: HashSchema4,
754
- createdAt: TimestampSchema4,
755
- updatedAt: TimestampSchema4,
756
- metadata: MetadataSchema3
757
- }).superRefine((taskset, context) => {
758
- if (taskset.purpose === "benchmark" && !taskset.benchmark) {
759
- context.addIssue({
760
- code: "custom",
761
- message: "Benchmark Tasksets require an immutable benchmark binding.",
762
- path: ["benchmark"]
763
- });
764
- }
765
- if (taskset.purpose !== "benchmark" && taskset.benchmark) {
766
- context.addIssue({
767
- code: "custom",
768
- message: "Only benchmark Tasksets may carry a benchmark binding.",
769
- path: ["benchmark"]
770
- });
771
- }
772
- if (taskset.datasetArtifact && taskset.tasks.length > 0) {
773
- context.addIssue({
774
- code: "custom",
775
- message: "Artifact-backed Tasksets may not duplicate canonical rows inline.",
776
- path: ["tasks"]
777
- });
778
- }
779
- if (!taskset.datasetArtifact && taskset.tasks.length === 0) {
780
- context.addIssue({
781
- code: "custom",
782
- message: "A Taskset requires inline tasks or a Dataset artifact manifest.",
783
- path: ["tasks"]
784
- });
785
- }
786
- });
787
- function isTrainingSourceRef(source) {
788
- return source.schemaVersion === "openpond.trainingSource.v1";
789
- }
790
-
791
- // src/taskset-authored-validation.ts
792
- function validateTaskset(input, options = {}) {
793
- const parsed = TasksetSchema.safeParse(input);
794
- if (!parsed.success) {
795
- return {
796
- valid: false,
797
- taskset: null,
798
- computedHash: null,
799
- issues: parsed.error.issues.map((issue) => ({
800
- code: "schema_invalid",
801
- severity: "error",
802
- message: issue.message,
803
- path: issue.path.join(".")
804
- }))
805
- };
806
- }
807
- const taskset = parsed.data;
808
- const issues = [];
809
- validateSourceConsent(taskset, issues);
810
- validateDatasetArtifact(taskset, issues);
811
- validateSplitIsolation(taskset, issues);
812
- validatePolicyBoundary(taskset, issues);
813
- validateGraders(taskset, issues);
814
- validateGraderFixtures(taskset, issues, options);
815
- validateLearningSignals(taskset, issues);
816
- validateCapabilities(taskset.capabilities, issues, taskset);
817
- validateWorkExecution(taskset, issues);
818
- const computedHash = tasksetContentHash(taskset);
819
- if (taskset.contentHash !== computedHash) {
820
- issues.push({
821
- code: "content_hash_mismatch",
822
- severity: "error",
823
- message: `Taskset contentHash is ${taskset.contentHash}, expected ${computedHash}.`,
824
- path: "contentHash"
825
- });
826
- }
827
- return {
828
- valid: !issues.some((issue) => issue.severity === "error"),
829
- taskset,
830
- computedHash,
831
- issues
832
- };
833
- }
834
- function validateGraderFixtures(taskset, issues, options) {
835
- if (!taskset.graderFixtures.length && !(options.allowUnscoredOnlineRewardBatch && taskset.metadata.trainingMethod === "grpo" && taskset.metadata.learning)) {
836
- issues.push({ code: "grader_fixtures_required", severity: "error", message: "Taskset admission requires authored grader fixtures.", path: "graderFixtures" });
837
- }
838
- const taskIds = new Set(taskset.tasks.map((task) => task.id));
839
- const required = /* @__PURE__ */ new Set(["positive", "negative", "boundary", "adversarial", "prompt_injection", "infrastructure_failure"]);
840
- for (const fixture of taskset.graderFixtures) {
841
- if (!taskset.datasetArtifact && !taskIds.has(fixture.taskId)) issues.push({ code: "grader_fixture_task_missing", severity: "warning", message: `Fixture ${fixture.id} references a task outside this Taskset revision (${fixture.taskId}).`, path: `graderFixtures.${fixture.id}.taskId` });
842
- required.delete(fixture.label);
843
- if (fixture.label === "infrastructure_failure" && !fixture.infrastructureError) issues.push({ code: "infrastructure_fixture_error_missing", severity: "error", message: `Infrastructure fixture ${fixture.id} must declare an infrastructure error.`, path: `graderFixtures.${fixture.id}.infrastructureError` });
844
- }
845
- for (const label of required) issues.push({ code: "grader_fixture_missing", severity: "warning", message: `Taskset does not include the optional ${label} grader calibration fixture.`, path: "graderFixtures" });
846
- }
847
- function validateDatasetArtifact(taskset, issues) {
848
- const artifact = taskset.datasetArtifact;
849
- if (!artifact) return;
850
- if (artifact.tasksetId !== taskset.id || artifact.tasksetRevision !== taskset.revision) {
851
- issues.push({
852
- code: "dataset_artifact_taskset_mismatch",
853
- severity: "error",
854
- message: "Dataset artifact identity does not match its Taskset revision.",
855
- path: "datasetArtifact"
856
- });
857
- }
858
- const splitTotal = Object.values(artifact.splitCounts).reduce((total, count) => total + count, 0);
859
- const shardTotal = artifact.shards.reduce((total, shard) => total + shard.rowCount, 0);
860
- if (splitTotal !== artifact.rowCount || shardTotal !== artifact.rowCount) {
861
- issues.push({
862
- code: "dataset_artifact_row_count_mismatch",
863
- severity: "error",
864
- message: "Dataset artifact row, split, and shard counts do not agree.",
865
- path: "datasetArtifact.rowCount"
866
- });
867
- }
868
- const shardSplitCounts = /* @__PURE__ */ new Map();
869
- for (const shard of artifact.shards) {
870
- shardSplitCounts.set(
871
- shard.split,
872
- (shardSplitCounts.get(shard.split) ?? 0) + shard.rowCount
873
- );
874
- }
875
- for (const [split, count] of Object.entries(artifact.splitCounts)) {
876
- if ((shardSplitCounts.get(split) ?? 0) !== count) {
877
- issues.push({
878
- code: "dataset_artifact_split_count_mismatch",
879
- severity: "error",
880
- message: `Dataset artifact ${split} shard counts do not match its manifest.`,
881
- path: `datasetArtifact.splitCounts.${split}`
882
- });
883
- }
884
- }
885
- const { contentHash: _contentHash, ...hashable } = artifact;
886
- if (contentHash(hashable) !== artifact.contentHash) {
887
- issues.push({
888
- code: "dataset_artifact_hash_mismatch",
889
- severity: "error",
890
- message: "Dataset artifact manifest content hash is invalid.",
891
- path: "datasetArtifact.contentHash"
892
- });
893
- }
894
- }
895
- function computeTasksetHash(taskset) {
896
- return tasksetContentHash(taskset);
897
- }
898
- function tasksetContentHash(taskset) {
899
- const { contentHash: _contentHash, status: _status, readiness: _readiness, updatedAt: _updatedAt, ...source } = taskset;
900
- return contentHash(source);
901
- }
902
- function validatePortability(capabilities) {
903
- const issues = [];
904
- validateCapabilities(capabilities, issues, null);
905
- return issues;
906
- }
907
- function validateSourceConsent(taskset, issues) {
908
- for (const [index, source] of taskset.sourceRefs.entries()) {
909
- if (isTrainingSourceRef(source) && source.consent.status !== "granted") {
910
- issues.push({ code: "source_consent_missing", severity: "error", message: `Source ${source.id} is not consented.`, path: `sourceRefs.${index}.consent.status` });
911
- }
912
- if (source.secretScanStatus !== "passed") {
913
- issues.push({ code: "source_secret_scan", severity: "error", message: `Source ${source.id} did not pass secret scanning.`, path: `sourceRefs.${index}.secretScanStatus` });
914
- }
915
- if (source.piiScanStatus !== "passed") {
916
- issues.push({ code: "source_pii_scan", severity: "error", message: `Source ${source.id} has unresolved PII policy.`, path: `sourceRefs.${index}.piiScanStatus` });
917
- }
918
- if (source.licensingStatus !== "approved") {
919
- issues.push({ code: "source_license", severity: "error", message: `Source ${source.id} has unresolved licensing policy.`, path: `sourceRefs.${index}.licensingStatus` });
920
- }
921
- }
922
- }
923
- function validateSplitIsolation(taskset, issues) {
924
- const clusterSplits = /* @__PURE__ */ new Map();
925
- for (const task of taskset.tasks) {
926
- const splits = clusterSplits.get(task.clusterKey) ?? /* @__PURE__ */ new Set();
927
- splits.add(task.split);
928
- clusterSplits.set(task.clusterKey, splits);
929
- }
930
- for (const [cluster, splits] of clusterSplits) {
931
- if (splits.size > 1) {
932
- issues.push({ code: "split_cluster_contamination", severity: "error", message: `Source cluster ${cluster} appears in multiple splits: ${[...splits].join(", ")}.`, path: "tasks" });
933
- }
934
- }
935
- const frozenCount = taskset.datasetArtifact ? taskset.datasetArtifact.splitCounts.frozen_eval ?? 0 : taskset.tasks.filter((task) => task.split === "frozen_eval").length;
936
- if (frozenCount === 0) issues.push({ code: "frozen_eval_missing", severity: "warning", message: "Add an independent test example before training.", path: "tasks" });
937
- }
938
- function validateWorkExecution(taskset, issues) {
939
- if (taskset.environment.kind !== "work") return;
940
- if (taskset.environment.entrypoint !== "openpond-work-v1") {
941
- issues.push({
942
- code: "work_entrypoint_invalid",
943
- severity: "error",
944
- message: "Work Tasksets must use the openpond-work-v1 entrypoint.",
945
- path: "environment.entrypoint"
946
- });
947
- }
948
- if (!taskset.environment.lifecycle.includes("reset") || !taskset.environment.lifecycle.includes("cleanup")) {
949
- issues.push({
950
- code: "work_reset_lifecycle_missing",
951
- severity: "error",
952
- message: "Work attempts require reset and cleanup; filesystem state belongs to one attempt.",
953
- path: "environment.lifecycle"
954
- });
955
- }
956
- const allowedTools = new Set(TASKSET_WORK_TOOL_NAMES);
957
- const unknownTools = taskset.environment.toolNames.filter(
958
- (name) => !allowedTools.has(name)
959
- );
960
- if (unknownTools.length) {
961
- issues.push({
962
- code: "work_tool_unknown",
963
- severity: "error",
964
- message: `Work Taskset declares unknown tools: ${unknownTools.join(", ")}.`,
965
- path: "environment.toolNames"
966
- });
967
- }
968
- if (!taskset.environment.toolNames.includes("work_save_output")) {
969
- issues.push({
970
- code: "work_output_tool_missing",
971
- severity: "error",
972
- message: "Work Tasksets must declare work_save_output.",
973
- path: "environment.toolNames"
974
- });
975
- }
976
- for (const lifecycle of ["create", "reset", "step", "grade", "cleanup"]) {
977
- if (!taskset.environment.lifecycle.includes(lifecycle)) {
978
- issues.push({
979
- code: "work_lifecycle_incomplete",
980
- severity: "error",
981
- message: `Work Tasksets require the ${lifecycle} lifecycle stage.`,
982
- path: "environment.lifecycle"
983
- });
984
- }
985
- }
986
- const sourceById = new Map(
987
- taskset.sourceRefs.map((source) => [source.id, source])
988
- );
989
- for (const [taskIndex, task] of taskset.tasks.entries()) {
990
- const assetIds = /* @__PURE__ */ new Set();
991
- const fileNames = /* @__PURE__ */ new Set();
992
- for (const [assetIndex, asset] of (task.assets ?? []).entries()) {
993
- const path = `tasks.${taskIndex}.assets.${assetIndex}`;
994
- if (assetIds.has(asset.id)) {
995
- issues.push({
996
- code: "work_asset_duplicate_id",
997
- severity: "error",
998
- message: `Task ${task.id} repeats asset id ${asset.id}.`,
999
- path: `${path}.id`
1000
- });
1001
- }
1002
- if (fileNames.has(asset.fileName)) {
1003
- issues.push({
1004
- code: "work_asset_duplicate_name",
1005
- severity: "error",
1006
- message: `Task ${task.id} repeats staged file name ${asset.fileName}.`,
1007
- path: `${path}.fileName`
1008
- });
1009
- }
1010
- assetIds.add(asset.id);
1011
- fileNames.add(asset.fileName);
1012
- if (!task.sourceRefs.includes(asset.sourceRefId)) {
1013
- issues.push({
1014
- code: "work_asset_task_source_missing",
1015
- severity: "error",
1016
- message: `Asset ${asset.id} references source ${asset.sourceRefId} outside task ${task.id}.`,
1017
- path: `${path}.sourceRefId`
1018
- });
1019
- }
1020
- const source = sourceById.get(asset.sourceRefId);
1021
- if (!source) {
1022
- issues.push({
1023
- code: "work_asset_source_missing",
1024
- severity: "error",
1025
- message: `Asset ${asset.id} references missing source ${asset.sourceRefId}.`,
1026
- path: `${path}.sourceRefId`
1027
- });
1028
- } else if ("sourceFileHashes" in source && !source.sourceFileHashes.includes(asset.sha256)) {
1029
- issues.push({
1030
- code: "work_asset_hash_unregistered",
1031
- severity: "error",
1032
- message: `Asset ${asset.id} hash is not registered by source ${asset.sourceRefId}.`,
1033
- path: `${path}.sha256`
1034
- });
1035
- }
1036
- if (source && "kind" in source && source.kind === "uploaded_file" && !source.originalFileNames.includes(asset.fileName)) {
1037
- issues.push({
1038
- code: "work_asset_name_unregistered",
1039
- severity: "error",
1040
- message: `Asset ${asset.id} file name is not registered by source ${asset.sourceRefId}.`,
1041
- path: `${path}.fileName`
1042
- });
1043
- }
1044
- if (source && "kind" in source && source.kind === "uploaded_file" && !source.mediaTypes.includes(asset.mediaType)) {
1045
- issues.push({
1046
- code: "work_asset_media_type_unregistered",
1047
- severity: "error",
1048
- message: `Asset ${asset.id} media type is not registered by source ${asset.sourceRefId}.`,
1049
- path: `${path}.mediaType`
1050
- });
1051
- }
1052
- if (asset.split !== task.split) {
1053
- issues.push({
1054
- code: "work_asset_split_mismatch",
1055
- severity: "error",
1056
- message: `Asset ${asset.id} is assigned to ${asset.split}, not task split ${task.split}.`,
1057
- path: `${path}.split`
1058
- });
1059
- }
1060
- }
1061
- const outputPaths = /* @__PURE__ */ new Set();
1062
- for (const [outputIndex, output] of (task.requiredOutputs ?? []).entries()) {
1063
- const normalized = output.path.replaceAll("\\", "/");
1064
- const path = `tasks.${taskIndex}.requiredOutputs.${outputIndex}.path`;
1065
- if (outputPaths.has(normalized)) {
1066
- issues.push({
1067
- code: "work_output_duplicate_path",
1068
- severity: "error",
1069
- message: `Task ${task.id} repeats required output path ${normalized}.`,
1070
- path
1071
- });
1072
- }
1073
- outputPaths.add(normalized);
1074
- }
1075
- if ((task.requiredOutputs ?? []).length === 0) {
1076
- issues.push({
1077
- code: "work_output_missing",
1078
- severity: "error",
1079
- message: `Work task ${task.id} must declare at least one required output.`,
1080
- path: `tasks.${taskIndex}.requiredOutputs`
1081
- });
1082
- }
1083
- }
1084
- }
1085
- function validatePolicyBoundary(taskset, issues) {
1086
- const visible = new Set(taskset.policy.policyVisibleFields);
1087
- for (const field of taskset.policy.privilegedFields) {
1088
- if (visible.has(field)) issues.push({ code: "privileged_field_visible", severity: "error", message: `Field ${field} is both policy-visible and privileged.`, path: "policy" });
1089
- }
1090
- for (const task of taskset.tasks) {
1091
- if (task.privilegedContextRef && Object.keys(task.policyVisibleContext).includes(task.privilegedContextRef)) {
1092
- issues.push({ code: "privileged_context_leak", severity: "error", message: `Task ${task.id} exposes its privileged context reference.`, path: `tasks.${task.id}.policyVisibleContext` });
1093
- }
1094
- }
1095
- }
1096
- function validateGraders(taskset, issues) {
1097
- const ids = /* @__PURE__ */ new Set();
1098
- for (const grader of taskset.graders) {
1099
- if (ids.has(grader.id)) issues.push({ code: "grader_duplicate", severity: "error", message: `Duplicate grader id ${grader.id}.`, path: "graders" });
1100
- ids.add(grader.id);
1101
- if (grader.kind === "model_judge" && grader.rewardEligible && grader.calibrationStatus !== "passed") {
1102
- issues.push({ code: "judge_calibration_pending", severity: "warning", message: `Model judge ${grader.id} is selected for reward without a passing advisory calibration report.`, path: `graders.${grader.id}` });
1103
- }
1104
- if (grader.kind === "model_judge" && grader.calibrationStatus === "passed" && typeof grader.metadata.calibrationEvidenceHash !== "string") {
1105
- issues.push({ code: "judge_calibration_evidence_missing", severity: "warning", message: `Model judge ${grader.id} declares calibration without an OpenPond fixture evidence hash.`, path: `graders.${grader.id}.metadata.calibrationEvidenceHash` });
1106
- }
1107
- if (grader.kind === "human" && grader.rewardEligible) {
1108
- issues.push({ code: "human_online_reward", severity: "error", message: `Human grader ${grader.id} cannot be an online optimizer reward.`, path: `graders.${grader.id}` });
1109
- }
1110
- }
1111
- }
1112
- function validateLearningSignals(taskset, issues) {
1113
- const taskIds = new Set(taskset.tasks.map((task) => task.id));
1114
- const sourceIds = new Set(taskset.sourceRefs.map((source) => source.id));
1115
- for (const signal of [
1116
- ...taskset.learningSignals.demonstrations,
1117
- ...taskset.learningSignals.preferences,
1118
- ...taskset.learningSignals.corrections,
1119
- ...taskset.learningSignals.feedback,
1120
- ...taskset.learningSignals.rewards,
1121
- ...taskset.learningSignals.labels
1122
- ]) {
1123
- if (signal.taskId && !taskset.datasetArtifact && !taskIds.has(signal.taskId)) {
1124
- issues.push({ code: "learning_signal_task_missing", severity: "error", message: `Signal ${signal.id} references missing task ${signal.taskId}.`, path: `learningSignals.${signal.kind}.${signal.id}.taskId` });
1125
- }
1126
- if (signal.sourceRefs.some((sourceId) => !sourceIds.has(sourceId))) {
1127
- issues.push({ code: "learning_signal_source_missing", severity: "error", message: `Signal ${signal.id} references a source outside the Dataset.`, path: `learningSignals.${signal.kind}.${signal.id}.sourceRefs` });
1128
- }
1129
- }
1130
- for (const preference of taskset.learningSignals.preferences) {
1131
- if (preference.chosen.trim() === preference.rejected.trim()) {
1132
- issues.push({ code: "preference_pair_identical", severity: "error", message: `Preference ${preference.id} has identical chosen and rejected responses.`, path: `learningSignals.preferences.${preference.id}` });
1133
- }
1134
- }
1135
- for (const reward of taskset.learningSignals.rewards) {
1136
- if (!reward.executable) {
1137
- issues.push({ code: "reward_not_executable", severity: "warning", message: `Reward ${reward.id} is a reviewed specification but has no executable verifier yet.`, path: `learningSignals.rewards.${reward.id}.executable` });
1138
- }
1139
- }
1140
- }
1141
- function validateCapabilities(capabilities, issues, taskset) {
1142
- if (!capabilities.exportable && capabilities.portabilityBlockers.length === 0) {
1143
- issues.push({ code: "portability_reason_missing", severity: "error", message: "Non-exportable Tasksets must declare a portability blocker.", path: "capabilities.portabilityBlockers" });
1144
- }
1145
- if (capabilities.compatibleMethods.includes("grpo") && !capabilities.rewardKinds.some((kind) => kind === "exact" || kind === "deterministic" || kind === "model_judge")) {
1146
- issues.push({ code: "grpo_reward_missing", severity: "error", message: "GRPO compatibility requires a scalar reward kind.", path: "capabilities.rewardKinds" });
1147
- }
1148
- if (taskset?.capabilities.compatibleMethods.includes("sft") && taskset.learningSignals.demonstrations.length === 0) {
1149
- issues.push({ code: "sft_demonstrations_missing", severity: "error", message: "SFT compatibility requires approved demonstrations.", path: "learningSignals.demonstrations" });
1150
- }
1151
- if (taskset?.capabilities.compatibleMethods.includes("dpo") && taskset.learningSignals.preferences.length === 0) {
1152
- issues.push({ code: "dpo_preferences_missing", severity: "error", message: "DPO compatibility requires chosen and rejected response pairs.", path: "learningSignals.preferences" });
1153
- }
1154
- if (taskset && (taskset.capabilities.compatibleMethods.includes("grpo") || taskset.capabilities.compatibleMethods.includes("ppo")) && !taskset.learningSignals.rewards.some((reward) => reward.executable) && !taskset.graders.some((grader) => grader.rewardEligible && grader.weight > 0 && grader.kind !== "human")) {
1155
- issues.push({ code: "online_reward_not_executable", severity: "error", message: "GRPO/PPO compatibility requires an executable scalar reward.", path: "learningSignals.rewards" });
1156
- }
1157
- }
1158
-
1159
- export {
1160
- DatasetSplitSchema,
1161
- DatasetSemanticFieldSchema,
1162
- DatasetSemanticSchemaSchema,
1163
- DatasetShardRefSchema,
1164
- DatasetArtifactManifestSchema,
1165
- DatasetArtifactSummarySchema,
1166
- DatasetCatalogItemSchema,
1167
- DatasetCatalogResponseSchema,
1168
- DatasetArtifactRegistryEntrySchema,
1169
- DatasetRowPageRequestSchema,
1170
- DatasetRowPageSchema,
1171
- DatasetStorageSettingsSchema,
1172
- DatasetStorageRootSchema,
1173
- DatasetStorageStateSchema,
1174
- UpdateDatasetStorageSettingsRequestSchema,
1175
- DatasetSourceReviewStatusSchema,
1176
- HuggingFaceDatasetSourceRefSchema,
1177
- UploadedFileDatasetSourceRefSchema,
1178
- GeneratedDatasetSourceRefSchema,
1179
- LearningBatchDatasetSourceRefSchema,
1180
- ExternalDatasetSourceRefSchema,
1181
- HarnessActionBindingSchema,
1182
- TasksetSplitSchema,
1183
- TasksetPurposeSchema,
1184
- TasksetBenchmarkBindingSchema,
1185
- TasksetPreferenceComparisonBindingSchema,
1186
- TrainingSourceConsentSchema,
1187
- TrainingSourceRefSchema,
1188
- TasksetSourceRefSchema,
1189
- TaskPolicyBoundarySchema,
1190
- TaskAssetRefSchema,
1191
- TaskRequiredOutputSchema,
1192
- TaskDataRecordSchema,
1193
- TasksetEnvironmentResourceSchema,
1194
- DemonstrationSignalSchema,
1195
- PreferenceSignalSchema,
1196
- CorrectionSignalSchema,
1197
- FeedbackSignalSchema,
1198
- RewardSignalSchema,
1199
- LabelSignalSchema,
1200
- LearningSignalRefSchema,
1201
- LearningSignalInventorySchema,
1202
- TasksetEnvironmentContractSchema,
1203
- TasksetCapabilityManifestSchema,
1204
- DeterministicGraderSpecSchema,
1205
- RubricGraderSpecSchema,
1206
- HumanGraderSpecSchema,
1207
- CustomVerifierGraderSpecSchema,
1208
- GraderSpecSchema,
1209
- GraderFixtureLabelSchema,
1210
- GraderFixtureSchema,
1211
- TASKSET_WORK_TOOL_NAMES,
1212
- TasksetStatusSchema,
1213
- DatasetBuildIntentSchema,
1214
- DatasetBuildSpecificationSchema,
1215
- GeneratedTaskFileSchema,
1216
- TrainingPathRecommendationSchema,
1217
- TrainingMethodReadinessReasonCodeSchema,
1218
- TrainingMethodReadinessSchema,
1219
- TasksetReadinessFindingSchema,
1220
- TasksetReadinessReportSchema,
1221
- AuthoringRepairSchema,
1222
- AuthoringProvenanceSchema,
1223
- TasksetSchema,
1224
- isTrainingSourceRef,
1225
- validateTaskset,
1226
- computeTasksetHash,
1227
- validatePortability
1228
- };
1229
- //# sourceMappingURL=chunk-LGEF4S5I.js.map