openpond-sdk 0.12.26 → 0.12.27
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/PRODUCT_INTEGRATION.md +13 -6
- package/README.md +2 -10
- package/SERVERLESS_SERVING.md +52 -35
- package/TASK_INGESTION.md +0 -4
- package/dist/advanced-refiner-evaluations.js +7 -7
- package/dist/ai-sdk.js +20 -83
- package/dist/ai-sdk.js.map +1 -1
- package/dist/candidate-evaluations.js +6 -6
- package/dist/{chunk-UZAVG2WK.js → chunk-3HOGOWKU.js} +8 -6
- package/dist/chunk-3HOGOWKU.js.map +1 -0
- package/dist/{chunk-YV6PPDXZ.js → chunk-3Z5IK2UK.js} +27 -2
- package/dist/chunk-3Z5IK2UK.js.map +1 -0
- package/dist/{chunk-4REK5TTE.js → chunk-4D4QSQC3.js} +2 -2
- package/dist/{chunk-AMZ2SWHR.js → chunk-534W2O2S.js} +2 -2
- package/dist/{chunk-6LVLWRBJ.js → chunk-54BJJL7G.js} +2 -2
- package/dist/{chunk-XWUTYFOU.js → chunk-5KJY44FB.js} +3 -3
- package/dist/{chunk-QKLZZOZD.js → chunk-7MLFWVDI.js} +29 -10
- package/dist/chunk-7MLFWVDI.js.map +1 -0
- package/dist/{chunk-4A4FNG4R.js → chunk-7ZV626YS.js} +2 -2
- package/dist/{chunk-57ROW3XF.js → chunk-ABOZV47D.js} +2 -2
- package/dist/{chunk-3BILL33A.js → chunk-BIQ5TG3T.js} +4 -4
- package/dist/{chunk-JINWKUKR.js → chunk-BT6CC6QB.js} +3 -3
- package/dist/{chunk-4PEK3YOW.js → chunk-CNFN6GHY.js} +2 -2
- package/dist/{chunk-X5AT253K.js → chunk-CVYGJUWM.js} +2 -2
- package/dist/{chunk-D26RJQU7.js → chunk-CX7ETU2F.js} +2 -2
- package/dist/{chunk-4CDLPMJK.js → chunk-D7LV3USE.js} +2 -2
- package/dist/{chunk-WZKKQNYY.js → chunk-GA7OSSEA.js} +2 -2
- package/dist/{chunk-EL6KZO43.js → chunk-GFWXDWEE.js} +3 -3
- package/dist/{chunk-XYK3MAIC.js → chunk-JYWIKBGD.js} +122 -112
- package/dist/chunk-JYWIKBGD.js.map +1 -0
- package/dist/{chunk-AQV7RQZH.js → chunk-K4WU4JOP.js} +2 -2
- package/dist/{chunk-CAOMKM55.js → chunk-L7MVGGBH.js} +2 -2
- package/dist/{chunk-P56JWQYV.js → chunk-LRFVISLA.js} +3 -3
- package/dist/{chunk-2U6BQ5C4.js → chunk-MJHQMQEW.js} +3 -3
- package/dist/chunk-ON3KSXWR.js +639 -0
- package/dist/chunk-ON3KSXWR.js.map +1 -0
- package/dist/{chunk-PMVSO23F.js → chunk-RMXZISHK.js} +10 -1
- package/dist/chunk-RMXZISHK.js.map +1 -0
- package/dist/{chunk-JWEIAEQ6.js → chunk-TMNEDWA7.js} +10 -3
- package/dist/chunk-TMNEDWA7.js.map +1 -0
- package/dist/{chunk-C7I4ZG6Q.js → chunk-TX552FQG.js} +3 -3
- package/dist/{chunk-4CRLQMJ2.js → chunk-VIDRZCPQ.js} +6 -6
- package/dist/{chunk-MN4FE52A.js → chunk-VRUAIMM3.js} +7 -7
- package/dist/chunk-VRUAIMM3.js.map +1 -0
- package/dist/{chunk-H5KHLBC5.js → chunk-WJZHSIGD.js} +6 -8
- package/dist/{chunk-H5KHLBC5.js.map → chunk-WJZHSIGD.js.map} +1 -1
- package/dist/{chunk-HCUZYGUK.js → chunk-WPTFJZ4L.js} +3 -3
- package/dist/connected-evidence.js +7 -7
- package/dist/dataset-workspaces.js +10 -10
- package/dist/errors.js +1 -1
- package/dist/experiment-evaluation-schedules.js +16 -16
- package/dist/experiment-improvements.js +7 -7
- package/dist/experiments.js +15 -15
- package/dist/index.js +23 -23
- package/dist/learning.js +15 -4
- package/dist/learning.js.map +1 -1
- package/dist/model-projects.js +1 -1
- package/dist/model-starter-attempts.js +2 -2
- package/dist/model-starter-catalog.js +4 -4
- package/dist/model-starters.js +4 -4
- package/dist/model-taskset-runs.js +3 -3
- package/dist/post-training.js +6 -6
- package/dist/taskset-drafts.js +6 -6
- package/dist/taskset-packages.js +12 -10
- package/dist/training-bundle.js +46 -20
- package/dist/training-bundle.js.map +1 -1
- package/dist/training-hardware.js +2 -2
- package/dist/training.js +5620 -4342
- package/dist/training.js.map +1 -1
- package/dist/types/packages/sdk/src/ai-sdk.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/alphaedit-model-serving.d.ts +8 -4
- package/dist/types/packages/sdk/src/alphaedit-model-serving.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/candidate-evaluation-client.d.ts +162 -162
- package/dist/types/packages/sdk/src/decision-model-serving.d.ts +4 -2
- package/dist/types/packages/sdk/src/decision-model-serving.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/engram-model-serving.d.ts +3 -1
- package/dist/types/packages/sdk/src/engram-model-serving.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/experiment-client.d.ts +699 -691
- package/dist/types/packages/sdk/src/experiment-client.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/experiment-draft-storage.d.ts +34 -28
- package/dist/types/packages/sdk/src/experiment-draft-storage.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/experiment-improvement-client.d.ts +1889 -1889
- package/dist/types/packages/sdk/src/experiment-run-details.d.ts +7 -7
- package/dist/types/packages/sdk/src/experiment-scoring-contracts.d.ts +21 -3
- package/dist/types/packages/sdk/src/experiment-scoring-contracts.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/learning.d.ts +1 -0
- package/dist/types/packages/sdk/src/learning.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/managed-alphaedit-executions.d.ts +272 -16
- package/dist/types/packages/sdk/src/managed-alphaedit-executions.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/managed-compute-price.d.ts +53 -1
- package/dist/types/packages/sdk/src/managed-compute-price.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/managed-decision-executions.d.ts +612 -356
- package/dist/types/packages/sdk/src/managed-decision-executions.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/managed-engram-executions.d.ts +272 -16
- package/dist/types/packages/sdk/src/managed-engram-executions.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/managed-modification-executions.d.ts +208 -16
- package/dist/types/packages/sdk/src/managed-modification-executions.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/managed-neuron-training-executions.d.ts +272 -16
- package/dist/types/packages/sdk/src/managed-neuron-training-executions.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/managed-serving-usage.d.ts +3 -0
- package/dist/types/packages/sdk/src/managed-serving-usage.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/managed-training-preparation.d.ts +25 -25
- package/dist/types/packages/sdk/src/managed-training-preparation.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/model-learning-capabilities.d.ts +4 -0
- package/dist/types/packages/sdk/src/model-learning-capabilities.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/model-learning-policy.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/model-supervised-training-defaults.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/model-training-defaults.d.ts +5 -2
- package/dist/types/packages/sdk/src/model-training-defaults.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/neuron-training-model-serving.d.ts +8 -4
- package/dist/types/packages/sdk/src/neuron-training-model-serving.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/post-training.d.ts +7 -7
- package/dist/types/packages/sdk/src/product-model-response.d.ts +6 -2
- package/dist/types/packages/sdk/src/product-model-response.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/product-model-transport.d.ts +99 -0
- package/dist/types/packages/sdk/src/product-model-transport.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/product-model-wire.d.ts +104 -0
- package/dist/types/packages/sdk/src/product-model-wire.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/product-models.d.ts +18 -15
- package/dist/types/packages/sdk/src/product-models.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/serverless-serving.d.ts +416 -9
- package/dist/types/packages/sdk/src/serverless-serving.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/steering-model-serving.d.ts +2144 -703
- package/dist/types/packages/sdk/src/steering-model-serving.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/steering-profile-publication.d.ts +631 -0
- package/dist/types/packages/sdk/src/steering-profile-publication.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/taskset-draft-client.d.ts +120 -120
- package/dist/types/packages/sdk/src/taskset-package-projection.d.ts +20 -20
- package/dist/types/packages/sdk/src/taskset-packages.d.ts +1 -0
- package/dist/types/packages/sdk/src/taskset-packages.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/taskset-text-policy.d.ts +11 -0
- package/dist/types/packages/sdk/src/taskset-text-policy.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/training-compute-selection.d.ts +6 -19
- package/dist/types/packages/sdk/src/training-compute-selection.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/training-estimates.d.ts +1 -1
- package/dist/types/packages/sdk/src/training-experiment-setup.d.ts +4 -1
- package/dist/types/packages/sdk/src/training-experiment-setup.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/training-harness-sources.d.ts +2 -2
- package/dist/types/packages/sdk/src/training-learning-batch.d.ts +40 -40
- package/dist/types/packages/sdk/src/training-model-serving-control.d.ts +406 -8
- package/dist/types/packages/sdk/src/training-model-serving-control.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/training-model-serving.d.ts +1136 -30
- package/dist/types/packages/sdk/src/training-model-serving.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/training-operations.d.ts +11197 -0
- package/dist/types/packages/sdk/src/training-operations.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/training-qualification-preparation.d.ts +25 -25
- package/dist/types/packages/sdk/src/training-supervised.d.ts +13 -0
- package/dist/types/packages/sdk/src/training-supervised.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/training-transport.d.ts +4 -1
- package/dist/types/packages/sdk/src/training-transport.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/training.d.ts +15885 -4662
- package/dist/types/packages/sdk/src/training.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/weight-inference.d.ts +8 -5
- package/dist/types/packages/sdk/src/weight-inference.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/weight-model-versions.d.ts +2089 -398
- package/dist/types/packages/sdk/src/weight-model-versions.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/weight-space-artifact.d.ts +433 -0
- package/dist/types/packages/sdk/src/weight-space-artifact.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/weight-space-evaluation.d.ts +1437 -0
- package/dist/types/packages/sdk/src/weight-space-evaluation.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/weight-space-model-serving.d.ts +2910 -0
- package/dist/types/packages/sdk/src/weight-space-model-serving.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/weight-space-programming.d.ts +845 -0
- package/dist/types/packages/sdk/src/weight-space-programming.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/weight-space-sessions.d.ts +4600 -0
- package/dist/types/packages/sdk/src/weight-space-sessions.d.ts.map +1 -0
- package/fixtures/python-foundation/operation-matrix.json +369 -0
- package/fixtures/python-foundation/schemas.json +34304 -27905
- package/fixtures/python-foundation/training-estimate-http-workflow.json +1 -1
- package/package.json +2 -2
- package/dist/chunk-JWEIAEQ6.js.map +0 -1
- package/dist/chunk-MN4FE52A.js.map +0 -1
- package/dist/chunk-PMVSO23F.js.map +0 -1
- package/dist/chunk-QKLZZOZD.js.map +0 -1
- package/dist/chunk-UZAVG2WK.js.map +0 -1
- package/dist/chunk-XYK3MAIC.js.map +0 -1
- package/dist/chunk-YV6PPDXZ.js.map +0 -1
- package/dist/chunk-ZG4HVCJB.js +0 -248
- package/dist/chunk-ZG4HVCJB.js.map +0 -1
- /package/dist/{chunk-4REK5TTE.js.map → chunk-4D4QSQC3.js.map} +0 -0
- /package/dist/{chunk-AMZ2SWHR.js.map → chunk-534W2O2S.js.map} +0 -0
- /package/dist/{chunk-6LVLWRBJ.js.map → chunk-54BJJL7G.js.map} +0 -0
- /package/dist/{chunk-XWUTYFOU.js.map → chunk-5KJY44FB.js.map} +0 -0
- /package/dist/{chunk-4A4FNG4R.js.map → chunk-7ZV626YS.js.map} +0 -0
- /package/dist/{chunk-57ROW3XF.js.map → chunk-ABOZV47D.js.map} +0 -0
- /package/dist/{chunk-3BILL33A.js.map → chunk-BIQ5TG3T.js.map} +0 -0
- /package/dist/{chunk-JINWKUKR.js.map → chunk-BT6CC6QB.js.map} +0 -0
- /package/dist/{chunk-4PEK3YOW.js.map → chunk-CNFN6GHY.js.map} +0 -0
- /package/dist/{chunk-X5AT253K.js.map → chunk-CVYGJUWM.js.map} +0 -0
- /package/dist/{chunk-D26RJQU7.js.map → chunk-CX7ETU2F.js.map} +0 -0
- /package/dist/{chunk-4CDLPMJK.js.map → chunk-D7LV3USE.js.map} +0 -0
- /package/dist/{chunk-WZKKQNYY.js.map → chunk-GA7OSSEA.js.map} +0 -0
- /package/dist/{chunk-EL6KZO43.js.map → chunk-GFWXDWEE.js.map} +0 -0
- /package/dist/{chunk-AQV7RQZH.js.map → chunk-K4WU4JOP.js.map} +0 -0
- /package/dist/{chunk-CAOMKM55.js.map → chunk-L7MVGGBH.js.map} +0 -0
- /package/dist/{chunk-P56JWQYV.js.map → chunk-LRFVISLA.js.map} +0 -0
- /package/dist/{chunk-2U6BQ5C4.js.map → chunk-MJHQMQEW.js.map} +0 -0
- /package/dist/{chunk-C7I4ZG6Q.js.map → chunk-TX552FQG.js.map} +0 -0
- /package/dist/{chunk-4CRLQMJ2.js.map → chunk-VIDRZCPQ.js.map} +0 -0
- /package/dist/{chunk-HCUZYGUK.js.map → chunk-WPTFJZ4L.js.map} +0 -0
|
@@ -15,6 +15,8 @@ var SftRecipeSchema = z.object({
|
|
|
15
15
|
dataset: z.object({
|
|
16
16
|
trainSplit: z.literal("train"),
|
|
17
17
|
validationSplit: z.enum(["validation", "frozen_eval"]),
|
|
18
|
+
/** Exact bounded optimizer evaluation membership in the pinned held-out source. */
|
|
19
|
+
validationTaskIds: z.array(Id).min(1).max(1e3).refine((ids) => new Set(ids).size === ids.length, "Validation task IDs must be unique.").optional(),
|
|
18
20
|
completionOnly: z.boolean(),
|
|
19
21
|
maxSequenceLength: z.number().int().positive().max(32768),
|
|
20
22
|
maxExamples: z.number().int().positive().max(1e5).default(1e3),
|
|
@@ -35,12 +37,30 @@ var SftRecipeSchema = z.object({
|
|
|
35
37
|
gradientAccumulationSteps: z.number().int().positive().max(1e4),
|
|
36
38
|
seed: z.number().int()
|
|
37
39
|
}),
|
|
40
|
+
/** Explicit held-out generation horizon, separately reviewed from fitting. */
|
|
41
|
+
evaluation: z.object({ maxOutputTokens: z.number().int().positive().max(8192) }).strict().optional(),
|
|
38
42
|
resourceLimits: z.object({
|
|
39
43
|
cpuThreads: z.number().int().positive().max(256),
|
|
40
44
|
memoryBytes: z.number().int().positive(),
|
|
41
45
|
wallTimeMs: z.number().int().positive()
|
|
42
46
|
})
|
|
43
47
|
});
|
|
48
|
+
function selectSftValidationTasks(tasks, selection) {
|
|
49
|
+
const candidates = tasks.filter((task) => task.split === selection.validationSplit);
|
|
50
|
+
if (selection.validationTaskIds === void 0) return candidates;
|
|
51
|
+
const ids = SftRecipeSchema.shape.dataset.shape.validationTaskIds.parse(
|
|
52
|
+
selection.validationTaskIds
|
|
53
|
+
);
|
|
54
|
+
const byId = new Map(candidates.map((task) => [task.id, task]));
|
|
55
|
+
if (byId.size !== candidates.length)
|
|
56
|
+
throw new Error("Validation task identities must be unique.");
|
|
57
|
+
return ids.map((id) => {
|
|
58
|
+
const task = byId.get(id);
|
|
59
|
+
if (!task)
|
|
60
|
+
throw new Error("A selected validation task is absent from the pinned held-out split.");
|
|
61
|
+
return task;
|
|
62
|
+
});
|
|
63
|
+
}
|
|
44
64
|
var ManagedSftRecipeSchema = SftRecipeSchema.safeExtend({
|
|
45
65
|
dataset: SftRecipeSchema.shape.dataset.safeExtend({
|
|
46
66
|
completionOnly: z.literal(true),
|
|
@@ -91,7 +111,11 @@ var TrainingSftImageCapabilitiesSchema = z.object({
|
|
|
91
111
|
evidenceSha256: z.string().regex(/^[a-f0-9]{64}$/)
|
|
92
112
|
}).strict().superRefine((value, context) => {
|
|
93
113
|
if (new Set(value.supportedRanks).size !== value.supportedRanks.length)
|
|
94
|
-
context.addIssue({
|
|
114
|
+
context.addIssue({
|
|
115
|
+
code: "custom",
|
|
116
|
+
path: ["supportedRanks"],
|
|
117
|
+
message: "Supported ranks must be unique."
|
|
118
|
+
});
|
|
95
119
|
});
|
|
96
120
|
function supportsTrainingSftRecipe(image, recipe) {
|
|
97
121
|
return image.baseModel.id === recipe.baseModel.id && image.baseModel.revision === recipe.baseModel.revision && image.baseModel.tokenizerRevision === recipe.baseModel.tokenizerRevision && image.baseModel.chatTemplateHash === recipe.baseModel.chatTemplateHash && image.supportedRanks.includes(recipe.lora.rank) && recipe.dataset.maxSequenceLength <= image.maxSequenceLength && recipe.optimizer.epochs <= image.maxEpochs && recipe.optimizer.maxSteps <= image.maxOptimizerSteps;
|
|
@@ -99,8 +123,9 @@ function supportsTrainingSftRecipe(image, recipe) {
|
|
|
99
123
|
|
|
100
124
|
export {
|
|
101
125
|
SftRecipeSchema,
|
|
126
|
+
selectSftValidationTasks,
|
|
102
127
|
ManagedSftRecipeSchema,
|
|
103
128
|
TrainingSftImageCapabilitiesSchema,
|
|
104
129
|
supportsTrainingSftRecipe
|
|
105
130
|
};
|
|
106
|
-
//# sourceMappingURL=chunk-
|
|
131
|
+
//# sourceMappingURL=chunk-3Z5IK2UK.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/training-supervised.ts"],"sourcesContent":["import { z } from \"zod\";\n\nconst Id = z.string().trim().min(1).max(240);\nconst Hash = z.string().trim().min(8).max(256);\n\n/** Shared recipe for the public API, local workbench, and managed executor.\n * Supervised training has no rollout-group, reward, or relative-loss settings.\n */\nexport const SftRecipeSchema = z.object({\n schemaVersion: z.literal(\"openpond.sftRecipe.v1\"),\n method: z.literal(\"sft\"),\n parameterization: z.literal(\"lora\"),\n baseModel: z.object({\n id: Id,\n revision: z.string().trim().min(1).max(256),\n tokenizerRevision: z.string().trim().min(1).max(256),\n chatTemplateHash: Hash,\n }),\n dataset: z.object({\n trainSplit: z.literal(\"train\"),\n validationSplit: z.enum([\"validation\", \"frozen_eval\"]),\n /** Exact bounded optimizer evaluation membership in the pinned held-out source. */\n validationTaskIds: z\n .array(Id)\n .min(1)\n .max(1000)\n .refine((ids) => new Set(ids).size === ids.length, \"Validation task IDs must be unique.\")\n .optional(),\n completionOnly: z.boolean(),\n maxSequenceLength: z.number().int().positive().max(32_768),\n maxExamples: z.number().int().positive().max(100_000).default(1_000),\n selectionStrategy: z.literal(\"stable_hash_top_n\").default(\"stable_hash_top_n\"),\n selectionSeed: z.number().int().default(17),\n }),\n lora: z.object({\n rank: z.number().int().positive().max(256),\n alpha: z.number().positive().max(1_024),\n dropout: z.number().min(0).max(1),\n targetModules: z.array(Id).min(1).max(100),\n }),\n optimizer: z.object({\n learningRate: z.number().positive(),\n epochs: z.number().positive().max(100),\n maxSteps: z.number().int().positive().max(1_000_000),\n batchSize: z.number().int().positive().max(10_000),\n gradientAccumulationSteps: z.number().int().positive().max(10_000),\n seed: z.number().int(),\n }),\n /** Explicit held-out generation horizon, separately reviewed from fitting. */\n evaluation: z.object({ maxOutputTokens: z.number().int().positive().max(8192) }).strict().optional(),\n resourceLimits: z.object({\n cpuThreads: z.number().int().positive().max(256),\n memoryBytes: z.number().int().positive(),\n wallTimeMs: z.number().int().positive(),\n }),\n});\nexport type SftRecipe = z.infer<typeof SftRecipeSchema>;\n\n/** Membership is explicit; missing, duplicate or wrong-split tasks never widen to all held-out rows. */\nexport function selectSftValidationTasks<T extends { id: string; split: string }>(\n tasks: readonly T[],\n selection: Pick<SftRecipe[\"dataset\"], \"validationSplit\" | \"validationTaskIds\">,\n): T[] {\n const candidates = tasks.filter((task) => task.split === selection.validationSplit);\n if (selection.validationTaskIds === undefined) return candidates;\n const ids = SftRecipeSchema.shape.dataset.shape.validationTaskIds.parse(\n selection.validationTaskIds,\n )!;\n const byId = new Map(candidates.map((task) => [task.id, task]));\n if (byId.size !== candidates.length)\n throw new Error(\"Validation task identities must be unique.\");\n return ids.map((id) => {\n const task = byId.get(id);\n if (!task)\n throw new Error(\"A selected validation task is absent from the pinned held-out split.\");\n return task;\n });\n}\n\n/** Managed authoring ceiling. An immutable worker's advertised SFT envelope\n * may be smaller and must also admit the recipe before paid execution.\n */\nexport const ManagedSftRecipeSchema = SftRecipeSchema.safeExtend({\n dataset: SftRecipeSchema.shape.dataset.safeExtend({\n completionOnly: z.literal(true),\n maxSequenceLength: z.number().int().min(2).max(8192),\n maxExamples: z.number().int().min(1).max(1000).default(1000),\n }),\n lora: SftRecipeSchema.shape.lora.safeExtend({\n rank: z.number().int().min(1).max(64),\n dropout: z.number().min(0).lt(1),\n targetModules: z\n .array(z.enum([\"q_proj\", \"k_proj\", \"v_proj\", \"o_proj\", \"gate_proj\", \"up_proj\", \"down_proj\"]))\n .min(1)\n .max(7),\n }),\n optimizer: SftRecipeSchema.shape.optimizer.safeExtend({\n learningRate: z.number().positive().max(0.001),\n epochs: z.number().positive().max(20),\n maxSteps: z.number().int().min(1).max(400),\n batchSize: z.number().int().min(1).max(32),\n gradientAccumulationSteps: z.number().int().min(1).max(32),\n seed: z\n .number()\n .int()\n .min(-(2 ** 31))\n .max(2 ** 31 - 1),\n }),\n resourceLimits: SftRecipeSchema.shape.resourceLimits.safeExtend({\n wallTimeMs: z.number().int().min(1000).max(21_600_000),\n }),\n}).superRefine((recipe, context) => {\n if (recipe.optimizer.batchSize * recipe.optimizer.gradientAccumulationSteps > 32)\n context.addIssue({\n code: \"custom\",\n path: [\"optimizer\"],\n message: \"Managed SFT supports at most 32 accumulated examples.\",\n });\n if (new Set(recipe.lora.targetModules).size !== recipe.lora.targetModules.length)\n context.addIssue({\n code: \"custom\",\n path: [\"lora\", \"targetModules\"],\n message: \"Adapter target modules must be unique.\",\n });\n});\n\n/** Image-specific support, rather than the broad managed authoring ceiling.\n * Receipt identity belongs to the server's reviewed immutable-image registry.\n */\nexport const TrainingSftImageCapabilitiesSchema = z\n .object({\n schemaVersion: z.literal(\"openpond.managedSftImageSupport.v2\"),\n workerImageDigest: z.string().regex(/^sha256:[a-f0-9]{64}$/),\n workerSourceReleaseSha256: z.string().regex(/^[a-f0-9]{64}$/),\n baseModel: SftRecipeSchema.shape.baseModel,\n gpuCount: z.literal(1),\n supportedRanks: z.array(z.number().int().min(1).max(64)).min(1).max(64),\n maxSequenceLength: z.number().int().min(2).max(8192),\n maxEpochs: z.number().positive().max(20),\n maxOptimizerSteps: z.number().int().min(1).max(400),\n evidenceRef: z.string().trim().min(1).max(2048),\n evidenceSha256: z.string().regex(/^[a-f0-9]{64}$/),\n })\n .strict()\n .superRefine((value, context) => {\n if (new Set(value.supportedRanks).size !== value.supportedRanks.length)\n context.addIssue({\n code: \"custom\",\n path: [\"supportedRanks\"],\n message: \"Supported ranks must be unique.\",\n });\n });\nexport type TrainingSftImageCapabilities = z.infer<typeof TrainingSftImageCapabilitiesSchema>;\n\nexport function supportsTrainingSftRecipe(\n image: TrainingSftImageCapabilities,\n recipe: SftRecipe,\n): boolean {\n return (\n image.baseModel.id === recipe.baseModel.id &&\n image.baseModel.revision === recipe.baseModel.revision &&\n image.baseModel.tokenizerRevision === recipe.baseModel.tokenizerRevision &&\n image.baseModel.chatTemplateHash === recipe.baseModel.chatTemplateHash &&\n image.supportedRanks.includes(recipe.lora.rank) &&\n recipe.dataset.maxSequenceLength <= image.maxSequenceLength &&\n recipe.optimizer.epochs <= image.maxEpochs &&\n recipe.optimizer.maxSteps <= image.maxOptimizerSteps\n );\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
HarnessExperimentPolicySchema,
|
|
3
3
|
ModelTasksetRunRequestSchema
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-5KJY44FB.js";
|
|
5
5
|
import {
|
|
6
6
|
contentHash
|
|
7
7
|
} from "./chunk-H3JZ3P5T.js";
|
|
@@ -172,4 +172,4 @@ export {
|
|
|
172
172
|
verifyExperimentDefinition,
|
|
173
173
|
experimentDefinitionRef
|
|
174
174
|
};
|
|
175
|
-
//# sourceMappingURL=chunk-
|
|
175
|
+
//# sourceMappingURL=chunk-4D4QSQC3.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
RunExperimentSchema
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-MJHQMQEW.js";
|
|
4
4
|
import {
|
|
5
5
|
contentHash
|
|
6
6
|
} from "./chunk-H3JZ3P5T.js";
|
|
@@ -136,4 +136,4 @@ export {
|
|
|
136
136
|
CandidateEvaluationPreparationSchema,
|
|
137
137
|
CandidateEvaluationControlSchema
|
|
138
138
|
};
|
|
139
|
-
//# sourceMappingURL=chunk-
|
|
139
|
+
//# sourceMappingURL=chunk-534W2O2S.js.map
|
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
ConnectedStartingAssetsRequestSchema,
|
|
12
12
|
DatasetWorkspaceReceiptSchema,
|
|
13
13
|
verifyConnectedStartingAssetsReceipt
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-ABOZV47D.js";
|
|
15
15
|
import {
|
|
16
16
|
ImmutableReleaseRefSchema,
|
|
17
17
|
contentHash
|
|
@@ -653,4 +653,4 @@ export {
|
|
|
653
653
|
summarizeCollectorCoverage2 as summarizeCollectorCoverage,
|
|
654
654
|
hashCollectorEligibleBoundaries
|
|
655
655
|
};
|
|
656
|
-
//# sourceMappingURL=chunk-
|
|
656
|
+
//# sourceMappingURL=chunk-54BJJL7G.js.map
|
|
@@ -3,10 +3,10 @@ import {
|
|
|
3
3
|
EvaluationProjectContextSchema,
|
|
4
4
|
ModelStarterAttemptPolicySchema,
|
|
5
5
|
ModelStarterAttemptSummarySchema
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-L7MVGGBH.js";
|
|
7
7
|
import {
|
|
8
8
|
ModelProjectVersionedRefSchema
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-WJZHSIGD.js";
|
|
10
10
|
import {
|
|
11
11
|
canonicalJson,
|
|
12
12
|
canonicalSha256
|
|
@@ -179,4 +179,4 @@ export {
|
|
|
179
179
|
verifyModelTasksetRunDetails,
|
|
180
180
|
verifyModelTasksetRunResult
|
|
181
181
|
};
|
|
182
|
-
//# sourceMappingURL=chunk-
|
|
182
|
+
//# sourceMappingURL=chunk-5KJY44FB.js.map
|
|
@@ -24,7 +24,8 @@ var OpenPondTrainingApiError = class extends Error {
|
|
|
24
24
|
retryable;
|
|
25
25
|
requestId;
|
|
26
26
|
details;
|
|
27
|
-
|
|
27
|
+
responseMediaType;
|
|
28
|
+
constructor(status, error, responseMediaType2) {
|
|
28
29
|
super(error.message);
|
|
29
30
|
this.name = "OpenPondTrainingApiError";
|
|
30
31
|
this.status = status;
|
|
@@ -32,8 +33,17 @@ var OpenPondTrainingApiError = class extends Error {
|
|
|
32
33
|
this.retryable = error.retryable;
|
|
33
34
|
this.requestId = error.requestId;
|
|
34
35
|
this.details = error.details;
|
|
36
|
+
this.responseMediaType = responseMediaType2;
|
|
35
37
|
}
|
|
36
38
|
};
|
|
39
|
+
function responseMediaType(response) {
|
|
40
|
+
const type = response.headers.get("content-type")?.split(";", 1)[0]?.trim().toLowerCase();
|
|
41
|
+
if (!type) return "missing";
|
|
42
|
+
if (type === "application/json" || type.endsWith("+json")) return "json";
|
|
43
|
+
if (type === "text/html" || type === "application/xhtml+xml") return "html";
|
|
44
|
+
if (type.startsWith("text/")) return "text";
|
|
45
|
+
return "other";
|
|
46
|
+
}
|
|
37
47
|
function headersRecord(headers) {
|
|
38
48
|
const result = {};
|
|
39
49
|
new Headers(headers).forEach((value, key) => {
|
|
@@ -67,10 +77,15 @@ function createTrainingRequest(input) {
|
|
|
67
77
|
await new Promise((resolve) => setTimeout(resolve, 250 * 2 ** (attempt - 1)));
|
|
68
78
|
continue;
|
|
69
79
|
}
|
|
70
|
-
|
|
80
|
+
let body;
|
|
81
|
+
try {
|
|
82
|
+
body = await readBoundedJsonResponse(response, responseLimit, "Training API response");
|
|
83
|
+
} catch (error2) {
|
|
84
|
+
if (response.ok || !(error2 instanceof OpenPondProtocolError) || error2.code !== "invalid_json") throw error2;
|
|
85
|
+
}
|
|
71
86
|
if (response.ok) return body;
|
|
72
|
-
const error = trainingApiError(body, response.status);
|
|
73
|
-
if (attempt === maximumAttempts || !trainingReadFailureIsRetryable(response.status, error)) {
|
|
87
|
+
const error = trainingApiError(body, response.status, responseMediaType(response));
|
|
88
|
+
if (attempt === maximumAttempts || init?.signal?.aborted || !trainingReadFailureIsRetryable(response.status, error)) {
|
|
74
89
|
throw error;
|
|
75
90
|
}
|
|
76
91
|
await new Promise((resolve) => setTimeout(resolve, 250 * 2 ** (attempt - 1)));
|
|
@@ -92,15 +107,19 @@ function trainingReadFailureIsRetryable(status, error) {
|
|
|
92
107
|
}
|
|
93
108
|
return error instanceof TypeError;
|
|
94
109
|
}
|
|
95
|
-
function trainingApiError(value, status) {
|
|
110
|
+
function trainingApiError(value, status, mediaType) {
|
|
96
111
|
const parsed = TrainingApiErrorSchema.safeParse(value);
|
|
97
112
|
if (parsed.success) {
|
|
98
113
|
return new OpenPondTrainingApiError(status, parsed.data);
|
|
99
114
|
}
|
|
100
|
-
return new
|
|
101
|
-
"
|
|
102
|
-
|
|
103
|
-
|
|
115
|
+
return new OpenPondTrainingApiError(status, {
|
|
116
|
+
schemaVersion: "openpond.trainingApiError.v2",
|
|
117
|
+
code: "invalid_error_response",
|
|
118
|
+
message: `Training request failed with HTTP ${status} and an invalid error envelope (${mediaType} response).`,
|
|
119
|
+
retryable: trainingReadFailureIsRetryable(status, null),
|
|
120
|
+
requestId: null,
|
|
121
|
+
details: {}
|
|
122
|
+
}, mediaType);
|
|
104
123
|
}
|
|
105
124
|
|
|
106
125
|
export {
|
|
@@ -108,4 +127,4 @@ export {
|
|
|
108
127
|
OpenPondTrainingApiError,
|
|
109
128
|
createTrainingRequest
|
|
110
129
|
};
|
|
111
|
-
//# sourceMappingURL=chunk-
|
|
130
|
+
//# sourceMappingURL=chunk-7MLFWVDI.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/training-transport.ts"],"sourcesContent":["import { DEFAULT_API_BASE_URL } from \"./endpoints.js\";\nimport { z } from \"zod\";\nimport {\n OPENPOND_TRAINING_MEDIA_TYPE,\n TRAINING_API_RESPONSE_MAX_BYTES,\n OpenPondProtocolError,\n readBoundedJsonResponse,\n} from \"./protocol.js\";\n\nexport const TrainingApiErrorSchema = z\n .object({\n schemaVersion: z.literal(\"openpond.trainingApiError.v2\"),\n code: z.string().trim().min(1).max(200),\n message: z.string().trim().min(1).max(5_000),\n retryable: z.boolean().default(false),\n requestId: z.string().trim().min(1).max(500).nullable().default(null),\n details: z.record(z.string(), z.unknown()).default({}),\n })\n .strict();\n\nexport class OpenPondTrainingApiError extends Error {\n readonly status: number;\n readonly code: string;\n readonly retryable: boolean;\n readonly requestId: string | null;\n readonly details: Record<string, unknown>;\n readonly responseMediaType?: TrainingResponseMediaType;\n\n constructor(status: number, error: z.infer<typeof TrainingApiErrorSchema>, responseMediaType?: TrainingResponseMediaType) {\n super(error.message);\n this.name = \"OpenPondTrainingApiError\";\n this.status = status;\n this.code = error.code;\n this.retryable = error.retryable;\n this.requestId = error.requestId;\n this.details = error.details;\n this.responseMediaType = responseMediaType;\n }\n}\n\ntype TrainingResponseMediaType = \"json\" | \"html\" | \"text\" | \"other\" | \"missing\";\n\n// Classify a header without exposing arbitrary upstream values or response bodies.\nfunction responseMediaType(response: Response): TrainingResponseMediaType {\n const type = response.headers.get(\"content-type\")?.split(\";\", 1)[0]?.trim().toLowerCase();\n if (!type) return \"missing\";\n if (type === \"application/json\" || type.endsWith(\"+json\")) return \"json\";\n if (type === \"text/html\" || type === \"application/xhtml+xml\") return \"html\";\n if (type.startsWith(\"text/\")) return \"text\";\n return \"other\";\n}\n\nfunction headersRecord(headers: HeadersInit | undefined): Record<string, string> {\n const result: Record<string, string> = {};\n new Headers(headers).forEach((value, key) => {\n result[key] = value;\n });\n return result;\n}\n\nexport type TrainingTransportOptions = {\n baseUrl?: string;\n fetch?: typeof fetch;\n headers?: HeadersInit | (() => HeadersInit | Promise<HeadersInit>);\n};\nexport function createTrainingRequest(input: TrainingTransportOptions) {\n const fetchImpl = input.fetch ?? fetch;\n const baseUrl = (input.baseUrl ?? DEFAULT_API_BASE_URL).replace(/\\/$/, \"\");\n\n async function request(\n pathname: string,\n init?: RequestInit,\n responseLimit = TRAINING_API_RESPONSE_MAX_BYTES,\n ): Promise<unknown> {\n const readOnly = init?.method === undefined || init.method.toUpperCase() === \"GET\";\n const maximumAttempts = readOnly ? 3 : 1;\n for (let attempt = 1; attempt <= maximumAttempts; attempt += 1) {\n let response: Response;\n try {\n const configuredHeaders =\n typeof input.headers === \"function\" ? await input.headers() : (input.headers ?? {});\n response = await fetchImpl(`${baseUrl}${pathname}`, {\n ...init,\n headers: {\n accept: OPENPOND_TRAINING_MEDIA_TYPE,\n ...(init?.body ? { \"content-type\": OPENPOND_TRAINING_MEDIA_TYPE } : {}),\n ...headersRecord(configuredHeaders),\n ...headersRecord(init?.headers),\n },\n });\n } catch (error) {\n if (\n attempt === maximumAttempts ||\n init?.signal?.aborted ||\n !trainingReadFailureIsRetryable(null, error)\n ) {\n throw error;\n }\n await new Promise((resolve) => setTimeout(resolve, 250 * 2 ** (attempt - 1)));\n continue;\n }\n let body: unknown;\n try {\n body = await readBoundedJsonResponse(response, responseLimit, \"Training API response\");\n } catch (error) {\n // Keep successful-response validation, size limits, and stream/abort failures intact.\n if (response.ok || !(error instanceof OpenPondProtocolError) || error.code !== \"invalid_json\") throw error;\n }\n if (response.ok) return body;\n const error = trainingApiError(body, response.status, responseMediaType(response));\n if (attempt === maximumAttempts || init?.signal?.aborted || !trainingReadFailureIsRetryable(response.status, error)) {\n throw error;\n }\n await new Promise((resolve) => setTimeout(resolve, 250 * 2 ** (attempt - 1)));\n }\n throw new OpenPondProtocolError(\n \"training_read_retry_exhausted\",\n \"Training read retry loop exhausted without a response.\",\n );\n }\n\n return request;\n}\n\nfunction trainingReadFailureIsRetryable(status: number | null, error: unknown): boolean {\n if (status !== null) {\n return status === 408 || status === 429 || status >= 500;\n }\n if (error instanceof OpenPondTrainingApiError) return error.retryable;\n if (error instanceof OpenPondProtocolError) {\n return error.code === \"invalid_error_response\";\n }\n return error instanceof TypeError;\n}\n\nfunction trainingApiError(value: unknown, status: number, mediaType: TrainingResponseMediaType): OpenPondTrainingApiError {\n const parsed = TrainingApiErrorSchema.safeParse(value);\n if (parsed.success) {\n return new OpenPondTrainingApiError(status, parsed.data);\n }\n return new OpenPondTrainingApiError(status, {\n schemaVersion: \"openpond.trainingApiError.v2\",\n code: \"invalid_error_response\",\n message: `Training request failed with HTTP ${status} and an invalid error envelope (${mediaType} response).`,\n retryable: trainingReadFailureIsRetryable(status, null),\n requestId: null,\n details: {},\n }, mediaType);\n}\n"],"mappings":"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","names":["responseMediaType","error"]}
|
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
TasksetPreferenceComparisonBindingSchema,
|
|
12
12
|
TasksetPurposeSchema,
|
|
13
13
|
TasksetSourceRefSchema
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-K4WU4JOP.js";
|
|
15
15
|
import {
|
|
16
16
|
ModelTasksetDraftPreparationSchema
|
|
17
17
|
} from "./chunk-TK3DXH7A.js";
|
|
@@ -910,4 +910,4 @@ export {
|
|
|
910
910
|
computeTasksetHash,
|
|
911
911
|
validatePortability
|
|
912
912
|
};
|
|
913
|
-
//# sourceMappingURL=chunk-
|
|
913
|
+
//# sourceMappingURL=chunk-7ZV626YS.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
TasksetDraftWorkspaceSchema
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-BT6CC6QB.js";
|
|
4
4
|
import {
|
|
5
5
|
TasksetCatalogReleaseRefSchema
|
|
6
6
|
} from "./chunk-VE5JD5FN.js";
|
|
@@ -178,4 +178,4 @@ export {
|
|
|
178
178
|
ConnectedStartingAssetsReceiptSchema,
|
|
179
179
|
verifyConnectedStartingAssetsReceipt
|
|
180
180
|
};
|
|
181
|
-
//# sourceMappingURL=chunk-
|
|
181
|
+
//# sourceMappingURL=chunk-ABOZV47D.js.map
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
publishTasksetDraft,
|
|
5
5
|
renderTasksetDraftManifests,
|
|
6
6
|
validateTasksetDraftWorkspace
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-BT6CC6QB.js";
|
|
8
8
|
import {
|
|
9
9
|
materializePortableTasksetRelease,
|
|
10
10
|
portableTasksetEnvironment,
|
|
@@ -13,7 +13,7 @@ import {
|
|
|
13
13
|
import {
|
|
14
14
|
TasksetSchema,
|
|
15
15
|
computeTasksetHash
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-7ZV626YS.js";
|
|
17
17
|
import {
|
|
18
18
|
MAX_TASKSET_PACKAGE_BYTES,
|
|
19
19
|
ModelStarterExecutionSchema,
|
|
@@ -32,7 +32,7 @@ import {
|
|
|
32
32
|
resolveTasksetPackageInstructions,
|
|
33
33
|
structuredSamplingSchemaDeclaration,
|
|
34
34
|
validateTasksetPackage
|
|
35
|
-
} from "./chunk-
|
|
35
|
+
} from "./chunk-K4WU4JOP.js";
|
|
36
36
|
import {
|
|
37
37
|
ModelTasksetAuthoringOwnerSchema,
|
|
38
38
|
ModelTasksetDraftPreparationSchema,
|
|
@@ -471,4 +471,4 @@ export {
|
|
|
471
471
|
compileTasksetDraftWorkspace,
|
|
472
472
|
compileModelTasksetDraftWorkspace
|
|
473
473
|
};
|
|
474
|
-
//# sourceMappingURL=chunk-
|
|
474
|
+
//# sourceMappingURL=chunk-BIQ5TG3T.js.map
|
|
@@ -5,10 +5,10 @@ import {
|
|
|
5
5
|
computeTasksetHash,
|
|
6
6
|
draftPublishIssues,
|
|
7
7
|
validateTaskset
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-7ZV626YS.js";
|
|
9
9
|
import {
|
|
10
10
|
TaskDataRecordSchema
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-K4WU4JOP.js";
|
|
12
12
|
import {
|
|
13
13
|
TasksetDraftFileContentSchema,
|
|
14
14
|
TasksetDraftFileMutationSchema,
|
|
@@ -487,4 +487,4 @@ export {
|
|
|
487
487
|
tasksetDraftFromTaskset,
|
|
488
488
|
publishTasksetDraft
|
|
489
489
|
};
|
|
490
|
-
//# sourceMappingURL=chunk-
|
|
490
|
+
//# sourceMappingURL=chunk-BT6CC6QB.js.map
|
|
@@ -10,7 +10,7 @@ import {
|
|
|
10
10
|
ExperimentImprovementTestRecipeSchema,
|
|
11
11
|
verifyExperimentImprovementHumanOptions,
|
|
12
12
|
verifyExperimentImprovementState
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-CX7ETU2F.js";
|
|
14
14
|
import {
|
|
15
15
|
fetchConnectedJson
|
|
16
16
|
} from "./chunk-O6FKHAWN.js";
|
|
@@ -160,4 +160,4 @@ export {
|
|
|
160
160
|
HostedProfileCandidateCommandSchema,
|
|
161
161
|
ExperimentImprovementClient
|
|
162
162
|
};
|
|
163
|
-
//# sourceMappingURL=chunk-
|
|
163
|
+
//# sourceMappingURL=chunk-CNFN6GHY.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
ExperimentImprovementOptionsSchema
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-CX7ETU2F.js";
|
|
4
4
|
import {
|
|
5
5
|
EvaluationCoordinationTransport
|
|
6
6
|
} from "./chunk-456F3BXD.js";
|
|
@@ -264,4 +264,4 @@ export {
|
|
|
264
264
|
AdvancedRefinerEvaluationAccountingSchema,
|
|
265
265
|
OpenPondAdvancedRefinerEvaluationClient
|
|
266
266
|
};
|
|
267
|
-
//# sourceMappingURL=chunk-
|
|
267
|
+
//# sourceMappingURL=chunk-CVYGJUWM.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
ExperimentScoringRequestSchema
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-TMNEDWA7.js";
|
|
4
4
|
import {
|
|
5
5
|
ImmutableReleaseRefSchema,
|
|
6
6
|
contentHash
|
|
@@ -141,4 +141,4 @@ export {
|
|
|
141
141
|
verifyExperimentImprovementHumanOptions,
|
|
142
142
|
sealExperimentImprovementHumanOptions
|
|
143
143
|
};
|
|
144
|
-
//# sourceMappingURL=chunk-
|
|
144
|
+
//# sourceMappingURL=chunk-CX7ETU2F.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
createTrainingRequest
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-7MLFWVDI.js";
|
|
4
4
|
import {
|
|
5
5
|
OpenPondProtocolError
|
|
6
6
|
} from "./chunk-B3ZHJ2KK.js";
|
|
@@ -158,4 +158,4 @@ export {
|
|
|
158
158
|
createTrainingHardwareClient,
|
|
159
159
|
createHardwareObservationClient
|
|
160
160
|
};
|
|
161
|
-
//# sourceMappingURL=chunk-
|
|
161
|
+
//# sourceMappingURL=chunk-D7LV3USE.js.map
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
} from "./chunk-456F3BXD.js";
|
|
4
4
|
import {
|
|
5
5
|
RunExperimentSchema
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-MJHQMQEW.js";
|
|
7
7
|
import {
|
|
8
8
|
ImmutableReleaseRefSchema,
|
|
9
9
|
assertContentHash,
|
|
@@ -171,4 +171,4 @@ export {
|
|
|
171
171
|
ExperimentEvaluationScheduleCommandSchema,
|
|
172
172
|
OpenPondExperimentEvaluationScheduleClient
|
|
173
173
|
};
|
|
174
|
-
//# sourceMappingURL=chunk-
|
|
174
|
+
//# sourceMappingURL=chunk-GA7OSSEA.js.map
|
|
@@ -2,7 +2,7 @@ import {
|
|
|
2
2
|
TasksetSchema,
|
|
3
3
|
computeTasksetHash,
|
|
4
4
|
createTasksetDraft
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-7ZV626YS.js";
|
|
6
6
|
import {
|
|
7
7
|
GraderFixtureSchema,
|
|
8
8
|
GraderSpecSchema,
|
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
decodeTasksetPackageFile,
|
|
12
12
|
resolveTasksetPackageInstructions,
|
|
13
13
|
validateTasksetPackage
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-K4WU4JOP.js";
|
|
15
15
|
import {
|
|
16
16
|
contentHash
|
|
17
17
|
} from "./chunk-H3JZ3P5T.js";
|
|
@@ -266,4 +266,4 @@ export {
|
|
|
266
266
|
prepareImportedTasksetPackage,
|
|
267
267
|
tasksetPackageSourceId
|
|
268
268
|
};
|
|
269
|
-
//# sourceMappingURL=chunk-
|
|
269
|
+
//# sourceMappingURL=chunk-GFWXDWEE.js.map
|