openpond-sdk 0.12.18 → 0.12.19

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.
@@ -623,3 +623,18 @@ This read returns the owned execution's exact request, lifecycle phase and any r
623
623
  On a compatible host, `compileModificationExecution(input)` compiles a bounded raw form with the exact registered tokenizer. `prepareModificationExecution(input)` retains the compiled request, Project, name and maximum spend without starting compute. After explicit review, `startModificationExecution(input)` uses the returned execution ID, revision, plan hash, approved cap and a stable operation ID. `cancelModificationExecution(input)` retains that exact execution identity while cleanup proceeds.
624
624
 
625
625
  The CLI equivalents are `training hosted-compile-modification`, `hosted-prepare-modification`, `hosted-start-modification --yes` and `hosted-cancel-modification`, each taking `<input.json> --team-id <id>`. Native Python provides corresponding snake_case methods in both clients. Use the exported input schemas or installed help; preserve the original command and operation ID after an uncertain reply. Start is the funded execution boundary. An unavailable capability never grants permission to start an unsupported model.
626
+
627
+ ## Continual-learning grader selection
628
+
629
+ An experiment draft's `trainingForm.learningIntent.graders` optionally stores
630
+ exact learning revision references for recurring tasks. Omitting the field uses
631
+ the reviewed batch's whole grader pool. An explicit subset must retain required
632
+ gates and the training/evaluation roles needed by the hosted loop. Hosts validate
633
+ these references against the exact reviewed batch before publishing the policy.
634
+
635
+ The learning save hashes this selection and retains it in the immutable policy;
636
+ it does not rewrite the manual experiment's batch or grader binding. The retained
637
+ evaluation remains an independent candidate check. A nightly schedule uses the
638
+ authored time and timezone, waits for approved unused examples, and respects the
639
+ saved task threshold and spend limits. It does not itself enable conversation
640
+ collection, automatic data approval, or automatic serving.
package/dist/training.js CHANGED
@@ -3401,12 +3401,16 @@ var EngramExperimentFormDraftSchema = z33.object({
3401
3401
  }).strict();
3402
3402
 
3403
3403
  // src/training-experiment-setup.ts
3404
- import { LearningRevisionRefSchema } from "@openpond/evals/learning";
3404
+ import { LearningRevisionRefSchema as LearningRevisionRefSchema2 } from "@openpond/evals/learning";
3405
3405
 
3406
3406
  // src/training-experiment-learning-intent.ts
3407
3407
  import { z as z34 } from "zod";
3408
+ import { LearningRevisionRefSchema } from "@openpond/evals/learning";
3408
3409
  var TrainingExperimentLearningIntentSchema = z34.object({
3409
3410
  enabled: z34.boolean(),
3411
+ /** Applies only after an accepted compatible GRPO checkpoint exists. */
3412
+ continuationAdapterMode: z34.enum(["shared", "residual_append", "sequential_merge"]).optional(),
3413
+ graders: z34.array(LearningRevisionRefSchema).max(100).optional(),
3410
3414
  mode: z34.enum(["nightly", "approved_count"]),
3411
3415
  minimumTasks: z34.string().max(100),
3412
3416
  localTime: z34.string().max(100),
@@ -3501,7 +3505,7 @@ async function parseAndVerifyExperimentStartingModel(raw, expected = {}) {
3501
3505
  // src/training-experiment-setup.ts
3502
3506
  var ExperimentOperationTypeSchema = z36.enum(["evaluate", "sft", "grpo", "neuron_steering", "inspect_activations", "engram_adapter", "decision_model", "alphaedit", "selective_neuron_training"]);
3503
3507
  function experimentOperationLabel(type) {
3504
- return { evaluate: "Evaluate", sft: "SFT + LoRA", grpo: "RL (GRPO) + LoRA", neuron_steering: "Neuron steering", inspect_activations: "Inspect activations", engram_adapter: "Engram memory", decision_model: "Decision model", alphaedit: "AlphaEdit", selective_neuron_training: "Neuron training" }[type];
3508
+ return { evaluate: "Evaluate", sft: "SFT", grpo: "RL", neuron_steering: "Neuron steering", inspect_activations: "Inspect activations", engram_adapter: "Engram memory", decision_model: "Decision model", alphaedit: "AlphaEdit", selective_neuron_training: "Neuron training" }[type];
3505
3509
  }
3506
3510
  var TrainingExperimentSetupRequestSchema = TrainingPreparationRequestSchema.omit({ configuration: true, origin: true }).extend({
3507
3511
  schemaVersion: z36.literal("openpond.trainingExperimentSetupRequest.v1"),
@@ -3585,7 +3589,7 @@ var TrainingExperimentFormDraftSchema = z36.object({
3585
3589
  inputHash: z36.string().regex(/^[a-f0-9]{64}$/),
3586
3590
  trainingInputHash: z36.string().regex(/^[a-f0-9]{64}$/),
3587
3591
  configuration: HostedModelProjectSummarySchema,
3588
- policy: LearningRevisionRefSchema
3592
+ policy: LearningRevisionRefSchema2
3589
3593
  }).strict().optional()
3590
3594
  }).strict();
3591
3595
  var ExperimentDraftSchema = z36.object({
@@ -5985,7 +5989,7 @@ import { z as z67 } from "zod";
5985
5989
 
5986
5990
  // src/training-experiment-learning.ts
5987
5991
  import { z as z51 } from "zod";
5988
- import { LearningRevisionRefSchema as LearningRevisionRefSchema2 } from "@openpond/evals/learning";
5992
+ import { LearningRevisionRefSchema as LearningRevisionRefSchema3 } from "@openpond/evals/learning";
5989
5993
  var TrainingExperimentLearningRequestSchema = z51.object({
5990
5994
  schemaVersion: z51.literal("openpond.trainingExperimentLearning.v1"),
5991
5995
  teamId: z51.string().min(1).max(191),
@@ -5993,13 +5997,13 @@ var TrainingExperimentLearningRequestSchema = z51.object({
5993
5997
  draftId: z51.string().min(1).max(191),
5994
5998
  form: TrainingExperimentFormDraftSchema.omit({ learningConfiguration: true }),
5995
5999
  expectedConfiguration: TrainingPreparationRequestSchema.shape.configuration.optional(),
5996
- expectedPolicy: LearningRevisionRefSchema2.optional()
6000
+ expectedPolicy: LearningRevisionRefSchema3.optional()
5997
6001
  }).strict();
5998
6002
  var TrainingExperimentLearningReceiptSchema = z51.object({
5999
6003
  schemaVersion: z51.literal("openpond.trainingExperimentLearningReceipt.v1"),
6000
6004
  inputHash: z51.string().regex(/^[a-f0-9]{64}$/),
6001
6005
  configuration: HostedModelProjectSummarySchema,
6002
- policy: LearningRevisionRefSchema2
6006
+ policy: LearningRevisionRefSchema3
6003
6007
  }).strict();
6004
6008
  function trainingExperimentLearningRequest(input) {
6005
6009
  const { learningConfiguration, ...form } = input.form;
@@ -6054,7 +6058,8 @@ function trainingExperimentLearningSettings(form) {
6054
6058
  baseModel: form.baseModel,
6055
6059
  recipe: { ...form.recipe, dataset: { ...form.recipe.dataset && typeof form.recipe.dataset === "object" ? form.recipe.dataset : {}, validationSplit: form.validationSplit } },
6056
6060
  evaluationTasksetRef: form.evaluation,
6057
- managedRolloutPlacement: "remote"
6061
+ managedRolloutPlacement: "remote",
6062
+ ...form.recipe.method === "grpo" && form.learningIntent?.continuationAdapterMode ? { continuationAdapterMode: form.learningIntent.continuationAdapterMode } : {}
6058
6063
  });
6059
6064
  }
6060
6065
  function createTrainingExperimentLearningClient(request) {