openpond-sdk 0.12.4 → 0.12.6

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 (160) hide show
  1. package/TASKSETS.md +13 -0
  2. package/TRAINING_PROTOCOL.md +25 -0
  3. package/dist/advanced-refiner-evaluations.js +7 -7
  4. package/dist/candidate-evaluations.js +6 -6
  5. package/dist/{chunk-MO4HAJZG.js → chunk-2XLKMZH5.js} +486 -252
  6. package/dist/chunk-2XLKMZH5.js.map +1 -0
  7. package/dist/{chunk-HGXVOFCL.js → chunk-3SIGXGAE.js} +133 -88
  8. package/dist/chunk-3SIGXGAE.js.map +1 -0
  9. package/dist/{chunk-WMIKJGXW.js → chunk-3VGTVZHL.js} +3 -3
  10. package/dist/{chunk-U7XWIOSB.js → chunk-5T76GARR.js} +2 -2
  11. package/dist/{chunk-WQFU635Q.js → chunk-ATVQQCYN.js} +8 -4
  12. package/dist/chunk-ATVQQCYN.js.map +1 -0
  13. package/dist/{chunk-QRS7Y3EM.js → chunk-B2MKB7NB.js} +2 -2
  14. package/dist/{chunk-H4NTJFEE.js → chunk-D3WOJTUY.js} +3 -2
  15. package/dist/{chunk-H4NTJFEE.js.map → chunk-D3WOJTUY.js.map} +1 -1
  16. package/dist/{chunk-EFUT3XKW.js → chunk-ETFWUMEJ.js} +2 -2
  17. package/dist/{chunk-B5XTGEBE.js → chunk-FPA3AVCP.js} +85 -8
  18. package/dist/chunk-FPA3AVCP.js.map +1 -0
  19. package/dist/{chunk-BVMR5OFW.js → chunk-HRJKDHHG.js} +6 -4
  20. package/dist/chunk-HRJKDHHG.js.map +1 -0
  21. package/dist/{chunk-VN5V2E2S.js → chunk-HRZLFJXX.js} +3 -3
  22. package/dist/{chunk-I54WQBXL.js → chunk-KD6MM67B.js} +6 -6
  23. package/dist/{chunk-ZHQK3MOM.js → chunk-LIMTJR3A.js} +3 -3
  24. package/dist/{chunk-GAIDBPFY.js → chunk-ONGOAEY6.js} +14 -2
  25. package/dist/chunk-ONGOAEY6.js.map +1 -0
  26. package/dist/{chunk-CMWZZZGW.js → chunk-QDYHSJT5.js} +22 -8
  27. package/dist/chunk-QDYHSJT5.js.map +1 -0
  28. package/dist/{chunk-VHGC44HA.js → chunk-RDL6QIQO.js} +2 -2
  29. package/dist/{chunk-LHX7ENKZ.js → chunk-S2IASCGW.js} +3 -3
  30. package/dist/{chunk-XON75UFN.js → chunk-SER76PQ7.js} +2 -2
  31. package/dist/{chunk-ETX25FTB.js → chunk-SMHZT6RM.js} +2 -2
  32. package/dist/{chunk-24N6A6SF.js → chunk-SQBYHWZU.js} +2 -2
  33. package/dist/{chunk-DF2QXVZ3.js → chunk-VBVFE33M.js} +5 -5
  34. package/dist/{chunk-53LLNDXF.js → chunk-VQGTYGZH.js} +2 -2
  35. package/dist/{chunk-OR3TMIJN.js → chunk-VTAGUWXH.js} +2 -2
  36. package/dist/{chunk-LR5CTOC5.js → chunk-XF3JR72U.js} +3 -3
  37. package/dist/{chunk-ZIFZFP5I.js → chunk-Y3I7SN5W.js} +61 -35
  38. package/dist/chunk-Y3I7SN5W.js.map +1 -0
  39. package/dist/{chunk-RRKRA237.js → chunk-Z4XGSEKC.js} +577 -249
  40. package/dist/chunk-Z4XGSEKC.js.map +1 -0
  41. package/dist/{chunk-K5LWSWV7.js → chunk-ZGZLN4LH.js} +2 -2
  42. package/dist/connected-evidence.js +14 -14
  43. package/dist/dataset-workspaces.js +14 -14
  44. package/dist/experiment-evaluation-schedules.js +18 -18
  45. package/dist/experiment-improvements.js +7 -7
  46. package/dist/experiments.js +17 -17
  47. package/dist/index.js +90 -45
  48. package/dist/index.js.map +1 -1
  49. package/dist/learning.js +113 -9
  50. package/dist/learning.js.map +1 -1
  51. package/dist/model-projects.js +1 -1
  52. package/dist/model-starter-attempts.js +2 -2
  53. package/dist/model-starter-catalog.js +9 -9
  54. package/dist/model-starters.js +13 -9
  55. package/dist/model-taskset-runs.js +3 -3
  56. package/dist/post-training.js +6 -6
  57. package/dist/taskset-drafts.js +12 -12
  58. package/dist/taskset-packages.js +15 -15
  59. package/dist/training-bundle.js +81 -19
  60. package/dist/training-bundle.js.map +1 -1
  61. package/dist/training.js +39 -7
  62. package/dist/types/packages/cloud/src/hosted-chat.d.ts +28 -0
  63. package/dist/types/packages/cloud/src/hosted-chat.d.ts.map +1 -1
  64. package/dist/types/packages/cloud/src/sandbox/sandbox-instance-client.d.ts.map +1 -1
  65. package/dist/types/packages/cloud/src/sandbox/url.d.ts +3 -1
  66. package/dist/types/packages/cloud/src/sandbox/url.d.ts.map +1 -1
  67. package/dist/types/packages/sdk/src/connected-evidence-client.d.ts +4 -0
  68. package/dist/types/packages/sdk/src/connected-evidence-client.d.ts.map +1 -1
  69. package/dist/types/packages/sdk/src/dataset-preparation-workspace.d.ts +2 -0
  70. package/dist/types/packages/sdk/src/dataset-preparation-workspace.d.ts.map +1 -1
  71. package/dist/types/packages/sdk/src/dataset-workspace-client.d.ts +14 -0
  72. package/dist/types/packages/sdk/src/dataset-workspace-client.d.ts.map +1 -1
  73. package/dist/types/packages/sdk/src/dataset-workspace-contracts.d.ts +4 -0
  74. package/dist/types/packages/sdk/src/dataset-workspace-contracts.d.ts.map +1 -1
  75. package/dist/types/packages/sdk/src/dataset-workspace-operations.d.ts +4 -0
  76. package/dist/types/packages/sdk/src/dataset-workspace-operations.d.ts.map +1 -1
  77. package/dist/types/packages/sdk/src/learning-client.d.ts +1 -0
  78. package/dist/types/packages/sdk/src/learning-client.d.ts.map +1 -1
  79. package/dist/types/packages/sdk/src/learning-correction-metrics.d.ts +358 -0
  80. package/dist/types/packages/sdk/src/learning-correction-metrics.d.ts.map +1 -0
  81. package/dist/types/packages/sdk/src/learning.d.ts +1 -0
  82. package/dist/types/packages/sdk/src/learning.d.ts.map +1 -1
  83. package/dist/types/packages/sdk/src/managed-training-preparation.d.ts +24 -0
  84. package/dist/types/packages/sdk/src/managed-training-preparation.d.ts.map +1 -1
  85. package/dist/types/packages/sdk/src/model-bound-taskset-authoring.d.ts.map +1 -1
  86. package/dist/types/packages/sdk/src/model-learning-policy.d.ts +16 -0
  87. package/dist/types/packages/sdk/src/model-learning-policy.d.ts.map +1 -1
  88. package/dist/types/packages/sdk/src/model-projects.d.ts +192 -0
  89. package/dist/types/packages/sdk/src/model-projects.d.ts.map +1 -1
  90. package/dist/types/packages/sdk/src/model-starters.d.ts +84 -1
  91. package/dist/types/packages/sdk/src/model-starters.d.ts.map +1 -1
  92. package/dist/types/packages/sdk/src/model-taskset-runs.d.ts +28 -28
  93. package/dist/types/packages/sdk/src/model-training-defaults.d.ts +14 -0
  94. package/dist/types/packages/sdk/src/model-training-defaults.d.ts.map +1 -1
  95. package/dist/types/packages/sdk/src/post-training.d.ts +54 -0
  96. package/dist/types/packages/sdk/src/post-training.d.ts.map +1 -1
  97. package/dist/types/packages/sdk/src/taskset-authored-files.d.ts.map +1 -1
  98. package/dist/types/packages/sdk/src/taskset-authored-portable-release.d.ts.map +1 -1
  99. package/dist/types/packages/sdk/src/taskset-draft-api-contracts.d.ts +4 -0
  100. package/dist/types/packages/sdk/src/taskset-draft-api-contracts.d.ts.map +1 -1
  101. package/dist/types/packages/sdk/src/taskset-draft-client.d.ts +142 -120
  102. package/dist/types/packages/sdk/src/taskset-draft-client.d.ts.map +1 -1
  103. package/dist/types/packages/sdk/src/taskset-draft-document.d.ts +4 -0
  104. package/dist/types/packages/sdk/src/taskset-draft-document.d.ts.map +1 -1
  105. package/dist/types/packages/sdk/src/taskset-draft-source.d.ts +4 -0
  106. package/dist/types/packages/sdk/src/taskset-draft-source.d.ts.map +1 -1
  107. package/dist/types/packages/sdk/src/taskset-draft-workspace.d.ts +4 -0
  108. package/dist/types/packages/sdk/src/taskset-draft-workspace.d.ts.map +1 -1
  109. package/dist/types/packages/sdk/src/taskset-package-client.d.ts +63 -0
  110. package/dist/types/packages/sdk/src/taskset-package-client.d.ts.map +1 -1
  111. package/dist/types/packages/sdk/src/taskset-package-contracts.d.ts.map +1 -1
  112. package/dist/types/packages/sdk/src/taskset-package-projection.d.ts.map +1 -1
  113. package/dist/types/packages/sdk/src/training-bundle.d.ts.map +1 -1
  114. package/dist/types/packages/sdk/src/training-compute-selection.d.ts +52 -0
  115. package/dist/types/packages/sdk/src/training-compute-selection.d.ts.map +1 -0
  116. package/dist/types/packages/sdk/src/training-estimates.d.ts +1069 -0
  117. package/dist/types/packages/sdk/src/training-estimates.d.ts.map +1 -0
  118. package/dist/types/packages/sdk/src/training-learning-batch.d.ts +40 -40
  119. package/dist/types/packages/sdk/src/training-physical-placement.d.ts +16 -0
  120. package/dist/types/packages/sdk/src/training-physical-placement.d.ts.map +1 -0
  121. package/dist/types/packages/sdk/src/training-preparations.d.ts +248 -0
  122. package/dist/types/packages/sdk/src/training-preparations.d.ts.map +1 -1
  123. package/dist/types/packages/sdk/src/training-qualification-preparation.d.ts +20 -0
  124. package/dist/types/packages/sdk/src/training-qualification-preparation.d.ts.map +1 -1
  125. package/dist/types/packages/sdk/src/training-queue.d.ts +24 -0
  126. package/dist/types/packages/sdk/src/training-queue.d.ts.map +1 -0
  127. package/dist/types/packages/sdk/src/training-recipe-binding.d.ts.map +1 -1
  128. package/dist/types/packages/sdk/src/training-recovery.d.ts +85 -0
  129. package/dist/types/packages/sdk/src/training-recovery.d.ts.map +1 -0
  130. package/dist/types/packages/sdk/src/training-verifier-assets.d.ts +7 -0
  131. package/dist/types/packages/sdk/src/training-verifier-assets.d.ts.map +1 -0
  132. package/dist/types/packages/sdk/src/training.d.ts +599 -0
  133. package/dist/types/packages/sdk/src/training.d.ts.map +1 -1
  134. package/package.json +3 -3
  135. package/dist/chunk-B5XTGEBE.js.map +0 -1
  136. package/dist/chunk-BVMR5OFW.js.map +0 -1
  137. package/dist/chunk-CMWZZZGW.js.map +0 -1
  138. package/dist/chunk-GAIDBPFY.js.map +0 -1
  139. package/dist/chunk-HGXVOFCL.js.map +0 -1
  140. package/dist/chunk-MO4HAJZG.js.map +0 -1
  141. package/dist/chunk-RRKRA237.js.map +0 -1
  142. package/dist/chunk-WQFU635Q.js.map +0 -1
  143. package/dist/chunk-ZIFZFP5I.js.map +0 -1
  144. /package/dist/{chunk-WMIKJGXW.js.map → chunk-3VGTVZHL.js.map} +0 -0
  145. /package/dist/{chunk-U7XWIOSB.js.map → chunk-5T76GARR.js.map} +0 -0
  146. /package/dist/{chunk-QRS7Y3EM.js.map → chunk-B2MKB7NB.js.map} +0 -0
  147. /package/dist/{chunk-EFUT3XKW.js.map → chunk-ETFWUMEJ.js.map} +0 -0
  148. /package/dist/{chunk-VN5V2E2S.js.map → chunk-HRZLFJXX.js.map} +0 -0
  149. /package/dist/{chunk-I54WQBXL.js.map → chunk-KD6MM67B.js.map} +0 -0
  150. /package/dist/{chunk-ZHQK3MOM.js.map → chunk-LIMTJR3A.js.map} +0 -0
  151. /package/dist/{chunk-VHGC44HA.js.map → chunk-RDL6QIQO.js.map} +0 -0
  152. /package/dist/{chunk-LHX7ENKZ.js.map → chunk-S2IASCGW.js.map} +0 -0
  153. /package/dist/{chunk-XON75UFN.js.map → chunk-SER76PQ7.js.map} +0 -0
  154. /package/dist/{chunk-ETX25FTB.js.map → chunk-SMHZT6RM.js.map} +0 -0
  155. /package/dist/{chunk-24N6A6SF.js.map → chunk-SQBYHWZU.js.map} +0 -0
  156. /package/dist/{chunk-DF2QXVZ3.js.map → chunk-VBVFE33M.js.map} +0 -0
  157. /package/dist/{chunk-53LLNDXF.js.map → chunk-VQGTYGZH.js.map} +0 -0
  158. /package/dist/{chunk-OR3TMIJN.js.map → chunk-VTAGUWXH.js.map} +0 -0
  159. /package/dist/{chunk-LR5CTOC5.js.map → chunk-XF3JR72U.js.map} +0 -0
  160. /package/dist/{chunk-K5LWSWV7.js.map → chunk-ZGZLN4LH.js.map} +0 -0
@@ -3,14 +3,15 @@ import {
3
3
  validateModelStarterExecution,
4
4
  validateModelTasksetPackage,
5
5
  validateTasksetPackage
6
- } from "./chunk-MO4HAJZG.js";
6
+ } from "./chunk-2XLKMZH5.js";
7
7
  import {
8
8
  ModelProjectBaseModelSchema,
9
+ ModelProjectRecipeDocumentSchema,
9
10
  ModelProjectTrainingMethodSchema,
10
11
  ModelProjectTrainingSetupSchema,
11
12
  ModelProjectVersionedRefSchema,
12
13
  canonicalSha256
13
- } from "./chunk-HGXVOFCL.js";
14
+ } from "./chunk-3SIGXGAE.js";
14
15
  import {
15
16
  ModelInitialLearningSchema
16
17
  } from "./chunk-CL3IOOVL.js";
@@ -27,6 +28,49 @@ import { assertBoundedTaskJson, validateTaskValue } from "@openpond/evals/task-s
27
28
 
28
29
  // src/model-training-defaults.ts
29
30
  import { compileBoundGraders } from "@openpond/evals/rewards";
31
+ function fields(value) {
32
+ return value && typeof value === "object" && !Array.isArray(value) ? value : {};
33
+ }
34
+ function createModelTrainingRecipeDefaults(saved) {
35
+ const defaults = {
36
+ schemaVersion: "openpond.rftRecipe.v1",
37
+ method: "grpo",
38
+ parameterization: "lora",
39
+ lora: { rank: 2 },
40
+ rollout: { groupSize: 8, concurrency: 4, maxOutputTokens: 1024, temperature: 0.8, topP: 0.95, seed: 17 },
41
+ optimizer: {
42
+ learningRate: 1e-4,
43
+ maxSteps: 8,
44
+ clipRange: 0.2,
45
+ iterations: 2,
46
+ microbatchSize: 1,
47
+ gradientAccumulationSteps: 8,
48
+ advantageEpsilon: 1e-8,
49
+ adamw: { name: "adamw", weightDecay: 0, beta1: 0.9, beta2: 0.999, epsilon: 1e-8 }
50
+ },
51
+ loss: { method: "grpo", klBeta: 0.01 },
52
+ resourceLimits: { wallTimeMs: 66 * 60 * 1e3, maxRollouts: 64, maxPayloadBytes: 1e6 },
53
+ policyOptimization: null
54
+ };
55
+ return {
56
+ ...defaults,
57
+ ...saved,
58
+ lora: { ...defaults.lora, ...fields(saved?.lora) },
59
+ rollout: { ...defaults.rollout, ...fields(saved?.rollout) },
60
+ optimizer: {
61
+ ...defaults.optimizer,
62
+ ...fields(saved?.optimizer),
63
+ adamw: { ...defaults.optimizer.adamw, ...fields(fields(saved?.optimizer).adamw) }
64
+ },
65
+ loss: { ...defaults.loss, ...fields(saved?.loss) },
66
+ resourceLimits: { ...defaults.resourceLimits, ...fields(saved?.resourceLimits) }
67
+ };
68
+ }
69
+ function rebindModelTrainingRecipe(saved) {
70
+ const { baseModel: _base, reward: _reward, policyOptimization: _compiled, ...recipe } = createModelTrainingRecipeDefaults(saved);
71
+ const { trainSplit: _train, validationSplit: _validation, maxExamples: _population, ...dataset } = fields(recipe.dataset);
72
+ return { ...recipe, dataset, policyOptimization: null };
73
+ }
30
74
  function prepareModelTrainingDefaults(input) {
31
75
  const setup = ModelProjectTrainingSetupSchema.parse(input.setup);
32
76
  const portable = typeof input.package === "object" && input.package !== null && "schemaVersion" in input.package && input.package.schemaVersion === "openpond.tasksetPackage.v1" ? validateTasksetPackage(input.package) : null;
@@ -39,20 +83,18 @@ function prepareModelTrainingDefaults(input) {
39
83
  setup.evaluationTasksetRef = setup.tasksetRef;
40
84
  }
41
85
  const base = setup.baseModel;
42
- if (setup.method !== "grpo" || setup.recipe || !base?.revision || !base.tokenizerRevision || !base.chatTemplateHash) return setup;
86
+ if (setup.method !== "grpo" || setup.recipe && setup.recipe.method !== "grpo" || !base?.revision || !base.tokenizerRevision || !base.chatTemplateHash) return setup;
87
+ if (setup.recipe?.baseModel && setup.recipe.reward && setup.recipe.dataset) return setup;
43
88
  const training = source.taskset.tasks.filter((task) => task.split === "train");
44
89
  const graders = portable ? portable.taskset.graders : compileBoundGraders(bound.rewardBinding, bound.rewards);
45
90
  const grader = graders.find((candidate) => candidate.rewardEligible && candidate.weight > 0);
46
91
  const environment = portable?.environment ?? bound?.executionResources?.environment ?? bound?.execution?.environment;
47
92
  if (!training.length || !grader || !environment) return setup;
48
- const groupSize = 8;
49
- const maxSteps = 8;
93
+ const recipe = createModelTrainingRecipeDefaults(setup.recipe);
50
94
  return ModelProjectTrainingSetupSchema.parse({
51
95
  ...setup,
52
96
  recipe: {
53
- schemaVersion: "openpond.rftRecipe.v1",
54
- method: "grpo",
55
- parameterization: "lora",
97
+ ...recipe,
56
98
  baseModel: {
57
99
  id: base.modelId,
58
100
  revision: base.revision,
@@ -64,39 +106,18 @@ function prepareModelTrainingDefaults(input) {
64
106
  validationSplit: source.taskset.tasks.some((task) => task.split === "frozen_eval") ? "frozen_eval" : "validation",
65
107
  maxPromptTokens: 4096,
66
108
  maxExamples: Math.min(1e3, training.length),
67
- selectionStrategy: "stable_hash_top_n"
68
- },
69
- lora: { rank: 2 },
70
- rollout: {
71
- groupSize,
72
- concurrency: 4,
73
- maxTurns: source.taskset.environment.kind === "text" ? 1 : 15,
74
- maxOutputTokens: 1024,
75
- temperature: 0.8,
76
- topP: 0.95,
77
- seed: 17
109
+ selectionStrategy: "stable_hash_top_n",
110
+ ...fields(recipe.dataset)
78
111
  },
79
- optimizer: {
80
- learningRate: 1e-4,
81
- maxSteps,
82
- clipRange: 0.2,
83
- iterations: 2,
84
- microbatchSize: 1,
85
- gradientAccumulationSteps: groupSize,
86
- advantageEpsilon: 1e-8,
87
- adamw: { name: "adamw", weightDecay: 0, beta1: 0.9, beta2: 0.999, epsilon: 1e-8 }
88
- },
89
- loss: { method: "grpo", klBeta: 0.01 },
112
+ rollout: { maxTurns: source.taskset.environment.kind === "text" ? 1 : 15, ...fields(recipe.rollout) },
90
113
  reward: {
91
114
  graderId: grader.id,
92
115
  graderHash: contentHash(graders),
93
116
  environmentId: environment.id,
94
117
  environmentVersion: String(environment.revision),
95
118
  toolContractHash: contentHash(source.taskset.tools),
96
- learnedPreference: null
97
- },
98
- resourceLimits: { wallTimeMs: 66 * 60 * 1e3, maxRollouts: maxSteps * groupSize, maxPayloadBytes: 1e6 },
99
- policyOptimization: null
119
+ learnedPreference: fields(recipe.reward).learnedPreference ?? null
120
+ }
100
121
  }
101
122
  });
102
123
  }
@@ -169,6 +190,9 @@ var ModelStarterCreationIntentSchema = z.object({
169
190
  startingModel: ModelProjectBaseModelSchema,
170
191
  method: ModelProjectTrainingMethodSchema,
171
192
  rewardBindingRef: RefSchema.nullable().optional(),
193
+ recipe: ModelProjectRecipeDocumentSchema.nullable().optional(),
194
+ managedGpuSelection: ModelProjectTrainingSetupSchema.shape.managedGpuSelection,
195
+ continuationAdapterMode: ModelProjectTrainingSetupSchema.shape.continuationAdapterMode,
172
196
  learning: ModelInitialLearningSchema.optional()
173
197
  }).strict();
174
198
  var ModelStarterCreationRequestSchema = ModelStarterCreationIntentSchema.extend({
@@ -294,6 +318,8 @@ function validateResolvedModelStarter(value) {
294
318
  }
295
319
 
296
320
  export {
321
+ createModelTrainingRecipeDefaults,
322
+ rebindModelTrainingRecipe,
297
323
  prepareModelTrainingDefaults,
298
324
  ModelStarterContentSchema,
299
325
  ModelStarterSchema,
@@ -308,4 +334,4 @@ export {
308
334
  previewModelStarter,
309
335
  validateResolvedModelStarter
310
336
  };
311
- //# sourceMappingURL=chunk-ZIFZFP5I.js.map
337
+ //# sourceMappingURL=chunk-Y3I7SN5W.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/model-starters.ts","../src/model-training-defaults.ts"],"sourcesContent":["import { z } from \"zod\";\nimport { ModelInitialLearningSchema } from \"./model-learning-intent.js\";\nimport { TasksetReleaseSchema, assertTasksetRelease } from \"@openpond/evals/tasksets\";\nimport { LearningTextAssetSchema, TaskDefinitionSchema, learningRef, sameLearningRef, sealLearningContent } from \"@openpond/evals/learning\";\nimport { RewardBindingSchema, RewardReleaseSchema, compileBoundGraders } from \"@openpond/evals/rewards\";\nimport { assertBoundedTaskJson, validateTaskValue } from \"@openpond/evals/task-schema\";\n\nimport { ModelProjectBaseModelSchema, ModelProjectRecipeDocumentSchema, ModelProjectTrainingMethodSchema, ModelProjectVersionedRefSchema, ModelProjectTrainingSetupSchema } from \"./model-projects.js\";\nimport { canonicalSha256 } from \"./protocol.js\";\nimport { ModelStarterExecutionSchema, validateModelStarterExecution } from \"./model-starter-execution.js\";\n\nexport { ModelStarterExecutionSchema, ModelStarterEnvironmentAttemptSchema, verifyModelStarterEnvironmentAttempt, ModelStarterToolFixtureScriptSchema, createModelStarterExecutionAsset, modelStarterExecutionAssetId, resolveModelStarterExecutionAsset, type ModelStarterExecution, type ModelStarterExecutionContext } from \"./model-starter-execution.js\";\nexport { NativeHarnessExperimentAttemptSchema, verifyNativeHarnessExperimentAttempt, type NativeHarnessExperimentAttempt } from \"./model-starter-execution.js\";\nexport { ModelTasksetDerivationSchema, ModelTasksetPackageSchema, deriveModelTaskset, validateModelTasksetPackage, type ModelTasksetPackage } from \"./model-taskset-derivation.js\";\nexport { ModelTasksetExecutionResourcesSchema, createModelTasksetExecutionResourcesAsset, modelTasksetExecutionResourcesAssetId, resolveModelTasksetExecutionResourcesAsset } from \"./model-taskset-resources.js\";\nexport { prepareModelTrainingDefaults, createModelTrainingRecipeDefaults, rebindModelTrainingRecipe } from \"./model-training-defaults.js\";\n\nconst IdSchema = z.string().trim().min(1).max(500);\nconst RefSchema = ModelProjectVersionedRefSchema;\n\n/** Catalog records contain references and previews, never the private task rows. */\nexport const ModelStarterContentSchema = z.object({\n schemaVersion: z.literal(\"openpond.modelStarter.v1\"),\n id: IdSchema,\n revision: z.number().int().positive(),\n name: z.string().trim().min(1).max(200),\n description: z.string().trim().min(1).max(2_000),\n category: z.enum([\"extraction\", \"support\", \"operations\", \"knowledge\", \"coding\", \"writing\", \"classification\"]),\n taskset: RefSchema,\n taskDefinition: RefSchema,\n rewardBinding: RefSchema,\n rewards: z.array(RefSchema).min(1).max(100),\n assets: z.array(RefSchema).max(1_000),\n previewTaskIds: z.array(IdSchema).min(1).max(8),\n startingModel: ModelProjectBaseModelSchema,\n supportedMethods: z.array(ModelProjectTrainingMethodSchema).min(1).max(8),\n defaultMethod: ModelProjectTrainingMethodSchema,\n provenance: z.object({ author: z.string().min(1).max(200), license: z.string().min(1).max(200), sourceDescription: z.string().min(1).max(2_000) }).strict(),\n // These are references to real results. Package publication does not create\n // evidence, qualify a starter, or enable continuous learning.\n evidence: z.object({ verifierFixtures: RefSchema.nullable(), baseline: RefSchema.nullable(), training: RefSchema.nullable(), evaluation: RefSchema.nullable() }).strict(),\n}).strict().superRefine((starter, context) => {\n if (!starter.supportedMethods.includes(starter.defaultMethod)) context.addIssue({ code: \"custom\", path: [\"defaultMethod\"], message: \"The default method must be supported by the package.\" });\n for (const field of [\"rewards\", \"assets\"] as const) {\n if (new Set(starter[field].map(ref => ref.id)).size !== starter[field].length) context.addIssue({ code: \"custom\", path: [field], message: \"Dependency identities must be unique.\" });\n }\n if (new Set(starter.previewTaskIds).size !== starter.previewTaskIds.length) context.addIssue({ code: \"custom\", path: [\"previewTaskIds\"], message: \"Preview tasks must be unique.\" });\n});\nexport const ModelStarterSchema = ModelStarterContentSchema.safeExtend({ contentHash: z.string().regex(/^[a-f0-9]{64}$/) });\nexport type ModelStarter = z.infer<typeof ModelStarterSchema>;\n\n/** A resolved small package, obtained separately from catalog discovery.\n * Large Tasksets remain manifest/shard resources; they are not list payloads. */\nexport const ResolvedModelStarterSchema = z.object({\n starter: ModelStarterSchema,\n taskset: TasksetReleaseSchema,\n taskDefinition: TaskDefinitionSchema,\n rewardBinding: RewardBindingSchema,\n rewards: z.array(RewardReleaseSchema).min(1).max(100),\n assets: z.array(LearningTextAssetSchema).max(1_000),\n execution: ModelStarterExecutionSchema.optional(),\n}).strict();\nexport type ResolvedModelStarter = z.infer<typeof ResolvedModelStarterSchema>;\n\n/** Publisher attestation for original synthetic contact data, never a caller\n * override for arbitrary imports or for a failed secret scan. */\nexport const ModelStarterPrivacyReviewSchema = z.object({\n schemaVersion: z.literal(\"openpond.modelStarterPrivacyReview.v1\"),\n disposition: z.literal(\"synthetic_only\"),\n reviewedBy: z.string().trim().min(1).max(500), reviewedAt: z.iso.datetime(),\n reviewedContentHash: z.string().regex(/^[a-f0-9]{64}$/),\n note: z.string().trim().min(1).max(2_000),\n}).strict();\nexport function modelStarterPrivacyContentHash(value: ResolvedModelStarter): string {\n const { contentHash: _starterHash, ...starter } = value.starter;\n const { contentHash: _tasksetHash, ...taskset } = value.taskset;\n const { contentHash: _referenceHash, ...tasksetRef } = starter.taskset;\n const metadata = { ...taskset.metadata };\n const authoring = metadata.starterAuthoring;\n if (authoring && typeof authoring === \"object\" && !Array.isArray(authoring)) {\n const { privacyReview: _review, ...content } = authoring as Record<string, unknown>;\n metadata.starterAuthoring = content;\n }\n // Exclude only the attestation and hashes that contain that attestation.\n return sealLearningContent({ ...value, starter: { ...starter, taskset: tasksetRef }, taskset: { ...taskset, metadata } }).contentHash;\n}\n\n/** Final creation intent. The server resolves package bytes from its catalog;\n * callers cannot supply executable resources or qualification receipts here. */\nexport const ModelStarterCreationIntentSchema = z.object({\n profileId: IdSchema,\n modelId: IdSchema,\n name: z.string().trim().min(1).max(200),\n starter: RefSchema,\n startingModel: ModelProjectBaseModelSchema,\n method: ModelProjectTrainingMethodSchema,\n rewardBindingRef: RefSchema.nullable().optional(),\n recipe: ModelProjectRecipeDocumentSchema.nullable().optional(),\n managedGpuSelection: ModelProjectTrainingSetupSchema.shape.managedGpuSelection,\n continuationAdapterMode: ModelProjectTrainingSetupSchema.shape.continuationAdapterMode,\n learning: ModelInitialLearningSchema.optional(),\n}).strict();\nexport const ModelStarterCreationRequestSchema = ModelStarterCreationIntentSchema.extend({\n schemaVersion: z.literal(\"openpond.modelStarterCreation.v1\"),\n operationId: IdSchema,\n}).strict();\nexport type ModelStarterCreationRequest = z.infer<typeof ModelStarterCreationRequestSchema>;\n\nexport function parseModelStarterCreationRequest(value: unknown): ModelStarterCreationRequest {\n assertBoundedTaskJson(value, 64 * 1024);\n return ModelStarterCreationRequestSchema.parse(value);\n}\n\n/** Prepare once on final confirmation and retain across uncertain transport\n * outcomes. The server must bind operationId to the complete original intent\n * and atomically commit resources, model configuration and the retry receipt. */\nexport async function createModelStarterCreationRequest(\n value: z.input<typeof ModelStarterCreationIntentSchema>,\n): Promise<ModelStarterCreationRequest> {\n assertBoundedTaskJson(value, 64 * 1024);\n const intent = ModelStarterCreationIntentSchema.parse(value);\n return parseModelStarterCreationRequest({\n ...intent,\n schemaVersion: \"openpond.modelStarterCreation.v1\",\n operationId: `model-starter:${await canonicalSha256(intent)}`,\n });\n}\n\n/** Scope authorization belongs to the API. This validates the final intent\n * against the exact trusted package before any user resources are written. */\nexport function validateModelStarterCreation(value: unknown, packageValue: unknown) {\n const request = parseModelStarterCreationRequest(value);\n const resolved = validateResolvedModelStarter(packageValue);\n if (!sameLearningRef(request.starter, learningRef(resolved.starter))) throw new Error(\"Starter creation references a different package revision.\");\n if (!resolved.starter.supportedMethods.includes(request.method)) throw new Error(\"The selected training method is not supported by this starter.\");\n return { request, resolved };\n}\n\n/** Explicit projection keeps frozen examples, expected outputs, privileged\n * context and verifier source out of read-only model-facing previews. */\nexport function previewModelStarter(value: unknown) {\n const { starter, taskset, taskDefinition, rewardBinding, rewards } = validateResolvedModelStarter(value);\n return {\n starter,\n inputSchema: taskDefinition.inputSchema,\n outputSchema: taskDefinition.outputSchema,\n reward: {\n name: rewardBinding.name,\n description: rewardBinding.description,\n checks: rewardBinding.sources.map(source => {\n const reward = rewards.find(reward => sameLearningRef(source.reward, learningRef(reward)))!;\n return { name: reward.name, description: reward.description, kind: reward.implementation.kind, role: source.role, weight: source.weight, required: source.required, hardGate: source.hardGate };\n }),\n },\n tasks: starter.previewTaskIds.map(id => {\n const task = taskset.tasks.find(task => task.id === id)!;\n return { id: task.id, input: task.input, policyVisibleContext: task.policyVisibleContext };\n }),\n counts: {\n train: taskset.tasks.filter(task => task.split === \"train\").length,\n validation: taskset.tasks.filter(task => task.split === \"validation\").length,\n frozenEvaluation: taskset.tasks.filter(task => task.split === \"frozen_eval\").length,\n },\n };\n}\n\n/** Verify the dependency graph before creating user-owned configuration.\n * A matching outer hash alone cannot authorize substituted private graders. */\nexport function validateResolvedModelStarter(value: unknown): ResolvedModelStarter {\n assertBoundedTaskJson(value, 16 * 1024 * 1024);\n const resolved = ResolvedModelStarterSchema.parse(value);\n const { starter, taskset, taskDefinition, rewardBinding, rewards, assets } = resolved;\n const authoring = taskset.metadata.starterAuthoring;\n if (authoring && typeof authoring === \"object\" && !Array.isArray(authoring) && \"privacyReview\" in authoring) {\n const review = ModelStarterPrivacyReviewSchema.parse(authoring.privacyReview);\n if (review.reviewedContentHash !== modelStarterPrivacyContentHash(resolved)) throw new Error(\"Starter privacy review differs from the published contents.\");\n }\n const resources = [starter, taskset, taskDefinition, rewardBinding, ...rewards, ...assets];\n for (const resource of resources) {\n const { contentHash, ...content } = resource;\n if (sealLearningContent(content).contentHash !== contentHash) throw new Error(`Starter resource integrity failed: ${resource.id}.`);\n }\n assertTasksetRelease(taskset);\n validateModelStarterExecution(resolved.execution, taskset, assets);\n function exact(expected: z.infer<typeof RefSchema>, resource: { id: string; revision: number; contentHash: string }) {\n if (!sameLearningRef(expected, learningRef(resource))) throw new Error(`Starter dependency mismatch: ${expected.id}.`);\n }\n exact(starter.taskset, taskset);\n exact(starter.taskDefinition, taskDefinition);\n exact(starter.rewardBinding, rewardBinding);\n exact(taskDefinition.rewardBinding, rewardBinding);\n if (rewardBinding.recipeRef) throw new Error(\"Starter binding recipes must be resolved into a standalone binding before publication.\");\n const { policy, environment, environmentRelease, tools, capabilities, verifierSetRelease } = taskset;\n const execution = { policy, environment, ...(environmentRelease ? { environmentRelease } : {}), tools, capabilities, ...(verifierSetRelease ? { verifierSetRelease } : {}) };\n if (sealLearningContent(execution).contentHash !== sealLearningContent(taskDefinition.execution).contentHash) throw new Error(\"Starter execution context differs from its task format.\");\n if (sealLearningContent({ graders: taskset.graders }).contentHash !== sealLearningContent({ graders: compileBoundGraders(rewardBinding, rewards) }).contentHash) throw new Error(\"Starter executable graders differ from its Reward binding.\");\n for (const [references, values] of [[starter.rewards, rewards], [starter.assets, assets]] as const) {\n if (references.length !== values.length || new Set(values.map(resource => resource.id)).size !== values.length) throw new Error(\"Starter dependency inventory mismatch.\");\n for (const ref of references) {\n const resource = values.find(value => value.id === ref.id);\n if (!resource) throw new Error(`Starter dependency is missing: ${ref.id}.`);\n exact(ref, resource);\n }\n }\n for (const source of rewardBinding.sources) {\n const reward = rewards.find(reward => reward.id === source.reward.id);\n if (!reward) throw new Error(`Starter Reward is missing: ${source.reward.id}.`);\n exact(source.reward, reward);\n }\n for (const reward of rewards) {\n const implementation = reward.implementation;\n const references = [...reward.assets,\n ...(\"verifierRef\" in implementation ? [implementation.verifierRef] : []),\n ...(\"rubricRef\" in implementation ? [implementation.rubricRef] : []),\n ...(\"inputContract\" in implementation ? [implementation.inputContract] : []),\n ];\n for (const ref of references) {\n const asset = assets.find(asset => asset.id === ref.id);\n if (!asset || sealLearningContent(asset.asset).contentHash !== sealLearningContent(ref).contentHash) throw new Error(`Starter Reward source is missing or changed: ${ref.id}.`);\n if (ref.visibility === \"policy\") throw new Error(`Starter Reward source must remain private to its evaluator: ${ref.id}.`);\n }\n }\n if (new Set(taskset.tasks.map(task => task.id)).size !== taskset.tasks.length) throw new Error(\"Starter task identities must be unique.\");\n const inputSplits = new Map<string, string>();\n for (const task of taskset.tasks) {\n if (task.policyVisibleContext.instructions !== taskDefinition.instructions) throw new Error(`Starter task does not carry its declared model instructions: ${task.id}.`);\n const inputHash = sealLearningContent({ input: task.input, context: task.policyVisibleContext }).contentHash;\n const priorSplit = inputSplits.get(inputHash);\n if (priorSplit && priorSplit !== task.split) throw new Error(\"Starter policy input appears in multiple splits.\");\n inputSplits.set(inputHash, task.split);\n if (!validateTaskValue(taskDefinition.inputSchema, task.input).valid) throw new Error(`Starter task input does not match its format: ${task.id}.`);\n if (task.expectedOutput !== null && !validateTaskValue(taskDefinition.outputSchema, task.expectedOutput).valid) throw new Error(`Starter expected output does not match its format: ${task.id}.`);\n }\n for (const id of starter.previewTaskIds) {\n const task = taskset.tasks.find(task => task.id === id);\n if (!task || task.split === \"frozen_eval\") throw new Error(`Starter preview task is unavailable: ${id}.`);\n }\n return resolved;\n}\n","import { contentHash } from \"@openpond/harness\";\nimport { compileBoundGraders } from \"@openpond/evals/rewards\";\nimport { validateModelTasksetPackage } from \"./model-taskset-derivation.js\";\nimport { ModelProjectTrainingSetupSchema, type ModelProjectTrainingSetup } from \"./model-projects.js\";\n\nfunction fields(value: unknown): Record<string, unknown> {\n return value && typeof value === \"object\" && !Array.isArray(value) ? value as Record<string, unknown> : {};\n}\n\n/** Editable GRPO defaults are available before tasks/base/grader are bound.\n * This draft never authorizes execution; package preparation binds those inputs. */\nexport function createModelTrainingRecipeDefaults(saved?: ModelProjectTrainingSetup[\"recipe\"]): NonNullable<ModelProjectTrainingSetup[\"recipe\"]> {\n const defaults = {\n schemaVersion: \"openpond.rftRecipe.v1\", method: \"grpo\" as const, parameterization: \"lora\" as const,\n lora: { rank: 2 },\n rollout: { groupSize: 8, concurrency: 4, maxOutputTokens: 1_024, temperature: 0.8, topP: 0.95, seed: 17 },\n optimizer: { learningRate: 0.0001, maxSteps: 8, clipRange: 0.2, iterations: 2,\n microbatchSize: 1, gradientAccumulationSteps: 8, advantageEpsilon: 1e-8,\n adamw: { name: \"adamw\", weightDecay: 0, beta1: 0.9, beta2: 0.999, epsilon: 1e-8 } },\n loss: { method: \"grpo\", klBeta: 0.01 },\n resourceLimits: { wallTimeMs: 66 * 60 * 1_000, maxRollouts: 64, maxPayloadBytes: 1_000_000 },\n policyOptimization: null,\n };\n return {\n ...defaults, ...saved,\n lora: { ...defaults.lora, ...fields(saved?.lora) },\n rollout: { ...defaults.rollout, ...fields(saved?.rollout) },\n optimizer: { ...defaults.optimizer, ...fields(saved?.optimizer),\n adamw: { ...defaults.optimizer.adamw, ...fields(fields(saved?.optimizer).adamw) } },\n loss: { ...defaults.loss, ...fields(saved?.loss) },\n resourceLimits: { ...defaults.resourceLimits, ...fields(saved?.resourceLimits) },\n };\n}\n\n/** Changing source inputs invalidates only their bindings, preserving the\n * caller's optimizer, rollout, adapter, loss and budget settings. */\nexport function rebindModelTrainingRecipe(saved: ModelProjectTrainingSetup[\"recipe\"]) {\n const { baseModel: _base, reward: _reward, policyOptimization: _compiled, ...recipe } = createModelTrainingRecipeDefaults(saved);\n // Split names and the derived source population belong to the new package.\n // Retain authoring controls such as prompt length/selection strategy.\n const { trainSplit: _train, validationSplit: _validation, maxExamples: _population, ...dataset } = fields(recipe.dataset);\n return { ...recipe, dataset, policyOptimization: null };\n}\nimport { validateTasksetPackage } from \"./taskset-package-contracts.js\";\n\n/** Saved defaults do not authorize execution. The Run review still owns the\n * budget, runtime admission and exact training/evaluation population checks. */\nexport function prepareModelTrainingDefaults(input: {\n setup: ModelProjectTrainingSetup;\n package: unknown;\n}): ModelProjectTrainingSetup {\n const setup = ModelProjectTrainingSetupSchema.parse(input.setup);\n const portable = typeof input.package === \"object\" && input.package !== null\n && \"schemaVersion\" in input.package && input.package.schemaVersion === \"openpond.tasksetPackage.v1\"\n ? validateTasksetPackage(input.package) : null;\n const bound = portable ? null : validateModelTasksetPackage(input.package);\n const source = portable ?? bound!;\n const ref = setup.tasksetRef;\n const selected = ref && ref.revision === source.taskset.revision && (portable\n ? (ref.id === portable.taskset.id && ref.contentHash === portable.taskset.contentHash)\n || (ref.id === portable.taskset.metadata.sourceTasksetId && ref.contentHash === portable.taskset.metadata.sourceTasksetHash)\n : ref.id === source.taskset.id);\n if (!selected) return setup;\n if (!setup.evaluationTasksetRef && source.taskset.tasks.some(task => task.split === \"frozen_eval\" || task.split === \"validation\")) {\n setup.evaluationTasksetRef = setup.tasksetRef;\n }\n const base = setup.baseModel;\n if (setup.method !== \"grpo\" || (setup.recipe && setup.recipe.method !== \"grpo\") || !base?.revision\n || !base.tokenizerRevision || !base.chatTemplateHash) return setup;\n // Existing bound recipes retain their exact explicit settings and the\n // compiler's absent-field semantics. Only an unbound authoring draft needs\n // package-derived defaults; source changes explicitly invalidate bindings.\n if (setup.recipe?.baseModel && setup.recipe.reward && setup.recipe.dataset) return setup;\n const training = source.taskset.tasks.filter(task => task.split === \"train\");\n const graders = portable ? portable.taskset.graders : compileBoundGraders(bound!.rewardBinding, bound!.rewards);\n const grader = graders.find(candidate => candidate.rewardEligible && candidate.weight > 0);\n const environment = portable?.environment ?? bound?.executionResources?.environment ?? bound?.execution?.environment;\n if (!training.length || !grader || !environment) return setup;\n const recipe = createModelTrainingRecipeDefaults(setup.recipe);\n return ModelProjectTrainingSetupSchema.parse({\n ...setup,\n recipe: {\n ...recipe,\n baseModel: { id: base.modelId, revision: base.revision,\n tokenizerRevision: base.tokenizerRevision, chatTemplateHash: base.chatTemplateHash },\n dataset: { trainSplit: \"train\", validationSplit: source.taskset.tasks.some(task => task.split === \"frozen_eval\") ? \"frozen_eval\" : \"validation\",\n maxPromptTokens: 4_096, maxExamples: Math.min(1_000, training.length), selectionStrategy: \"stable_hash_top_n\", ...fields(recipe.dataset) },\n rollout: { maxTurns: source.taskset.environment.kind === \"text\" ? 1 : 15, ...fields(recipe.rollout) },\n reward: { graderId: grader.id, graderHash: contentHash(graders),\n environmentId: environment.id, environmentVersion: String(environment.revision),\n toolContractHash: contentHash(source.taskset.tools), learnedPreference: fields(recipe.reward).learnedPreference ?? null },\n },\n });\n}\n"],"mappings":"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","names":["compileBoundGraders","reward","task","contentHash","compileBoundGraders","value","asset"]}