openpond-sdk 0.12.25 → 0.12.26
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/LEARNING.md +5 -7
- package/OPENTELEMETRY.md +1 -1
- package/PRODUCT_INTEGRATION.md +5 -10
- package/README.md +3 -4
- package/SERVERLESS_SERVING.md +37 -0
- package/TASKSETS.md +1 -2
- package/TASK_INGESTION.md +3 -4
- package/TRAINING_PROTOCOL.md +1 -1
- package/TRAINING_WORKFLOWS.md +11 -6
- package/dist/advanced-refiner-evaluations.js +9 -8
- package/dist/ai-sdk.js +2 -1
- package/dist/ai-sdk.js.map +1 -1
- package/dist/candidate-evaluations.js +7 -6
- package/dist/{chunk-ZQFROKKS.js → chunk-2U6BQ5C4.js} +3 -3
- package/dist/{chunk-DDCR4KB5.js → chunk-3BILL33A.js} +4 -4
- package/dist/{chunk-3B5KSH3V.js → chunk-456F3BXD.js} +5 -2
- package/dist/chunk-456F3BXD.js.map +1 -0
- package/dist/{chunk-RTLJV4OS.js → chunk-4A4FNG4R.js} +2 -2
- package/dist/{chunk-EZME7DV4.js → chunk-4CDLPMJK.js} +2 -2
- package/dist/{chunk-XBFOFTK3.js → chunk-4CRLQMJ2.js} +5 -5
- package/dist/{chunk-QOX57Y27.js → chunk-4PEK3YOW.js} +6 -3
- package/dist/chunk-4PEK3YOW.js.map +1 -0
- package/dist/{chunk-GS5HEE4M.js → chunk-4REK5TTE.js} +2 -2
- package/dist/{chunk-YS7DF76T.js → chunk-57ROW3XF.js} +3 -3
- package/dist/{chunk-47THZRUM.js → chunk-6LVLWRBJ.js} +8 -5
- package/dist/chunk-6LVLWRBJ.js.map +1 -0
- package/dist/{chunk-3VUF5H3B.js → chunk-AMZ2SWHR.js} +2 -2
- package/dist/{chunk-GV6DEDBU.js → chunk-AQV7RQZH.js} +2 -2
- package/dist/{chunk-BJMENXR4.js → chunk-C7I4ZG6Q.js} +3 -3
- package/dist/{chunk-JMFYNIYZ.js → chunk-CAOMKM55.js} +6 -3
- package/dist/chunk-CAOMKM55.js.map +1 -0
- package/dist/{chunk-QNOCM5JX.js → chunk-D26RJQU7.js} +2 -2
- package/dist/{chunk-T67LNKAK.js → chunk-EL6KZO43.js} +3 -3
- package/dist/{chunk-MVAEE5EI.js → chunk-H5KHLBC5.js} +5 -2
- package/dist/chunk-H5KHLBC5.js.map +1 -0
- package/dist/{chunk-3MWFN7BA.js → chunk-HCUZYGUK.js} +8 -5
- package/dist/chunk-HCUZYGUK.js.map +1 -0
- package/dist/{chunk-JOMZJXGC.js → chunk-JINWKUKR.js} +3 -3
- package/dist/{chunk-626JLH4D.js → chunk-JWEIAEQ6.js} +2 -2
- package/dist/{chunk-DH6O4JFB.js → chunk-KJTX4A27.js} +5 -2
- package/dist/chunk-KJTX4A27.js.map +1 -0
- package/dist/{chunk-QRYEXPG7.js → chunk-MN4FE52A.js} +13 -10
- package/dist/chunk-MN4FE52A.js.map +1 -0
- package/dist/{chunk-2OVNKPBZ.js → chunk-MUG4OQKL.js} +5 -2
- package/dist/chunk-MUG4OQKL.js.map +1 -0
- package/dist/{chunk-C3TS766N.js → chunk-N6LGT7NT.js} +5 -2
- package/dist/chunk-N6LGT7NT.js.map +1 -0
- package/dist/{chunk-3G3HUA32.js → chunk-P56JWQYV.js} +3 -3
- package/dist/{chunk-GX6KMHW2.js → chunk-QKLZZOZD.js} +5 -2
- package/dist/chunk-QKLZZOZD.js.map +1 -0
- package/dist/chunk-QYWPNNP3.js +9 -0
- package/dist/chunk-QYWPNNP3.js.map +1 -0
- package/dist/{chunk-IXFUYPGV.js → chunk-UZAVG2WK.js} +5 -5
- package/dist/chunk-UZAVG2WK.js.map +1 -0
- package/dist/{chunk-Z252BNAZ.js → chunk-VE5JD5FN.js} +6 -2
- package/dist/chunk-VE5JD5FN.js.map +1 -0
- package/dist/{chunk-7F43U2NC.js → chunk-WZKKQNYY.js} +3 -3
- package/dist/{chunk-RN5MK7NH.js → chunk-X5AT253K.js} +3 -3
- package/dist/{chunk-ZRTNR4U7.js → chunk-XWUTYFOU.js} +3 -3
- package/dist/{chunk-Z5APNTZE.js → chunk-XYK3MAIC.js} +2 -2
- package/dist/{chunk-BRP3EBCR.js → chunk-ZG4HVCJB.js} +7 -4
- package/dist/chunk-ZG4HVCJB.js.map +1 -0
- package/dist/connected-evidence.js +9 -8
- package/dist/dataset-commerce.js +4 -1
- package/dist/dataset-commerce.js.map +1 -1
- package/dist/dataset-marketplace.js +4 -1
- package/dist/dataset-marketplace.js.map +1 -1
- package/dist/dataset-workspaces.js +18 -15
- package/dist/dataset-workspaces.js.map +1 -1
- package/dist/errors.js +2 -1
- package/dist/experiment-evaluation-schedules.js +18 -17
- package/dist/experiment-improvements.js +8 -7
- package/dist/experiments.js +16 -15
- package/dist/human-review.js +2 -1
- package/dist/index.js +32 -28
- package/dist/index.js.map +1 -1
- package/dist/learning.js +6 -3
- package/dist/learning.js.map +1 -1
- package/dist/model-projects.js +2 -1
- package/dist/model-starter-attempts.js +3 -2
- package/dist/model-starter-catalog.js +7 -4
- package/dist/model-starter-catalog.js.map +1 -1
- package/dist/model-starters.js +4 -3
- package/dist/model-taskset-runs.js +7 -4
- package/dist/model-taskset-runs.js.map +1 -1
- package/dist/post-training.js +7 -6
- package/dist/taskset-catalog.js +2 -1
- package/dist/taskset-drafts.js +11 -8
- package/dist/taskset-drafts.js.map +1 -1
- package/dist/taskset-packages.js +10 -9
- package/dist/tool-learning.js +4 -1
- package/dist/tool-learning.js.map +1 -1
- package/dist/training-bundle.js +11 -10
- package/dist/training-bundle.js.map +1 -1
- package/dist/training-hardware.js +3 -2
- package/dist/training-projects.js +4 -1
- package/dist/training-projects.js.map +1 -1
- package/dist/training.js +2677 -2574
- package/dist/training.js.map +1 -1
- package/dist/types/packages/sdk/src/connected-evidence-client.d.ts +1 -1
- package/dist/types/packages/sdk/src/connected-evidence-client.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/connected-sync.d.ts +1 -1
- package/dist/types/packages/sdk/src/connected-sync.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/dataset-commerce.d.ts +1 -1
- package/dist/types/packages/sdk/src/dataset-commerce.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/dataset-marketplace.d.ts +1 -1
- package/dist/types/packages/sdk/src/dataset-marketplace.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/dataset-population.d.ts +1 -1
- package/dist/types/packages/sdk/src/dataset-population.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/dataset-preparation-client.d.ts +1 -1
- package/dist/types/packages/sdk/src/dataset-preparation-client.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/dataset-task-ingestion.d.ts +1 -1
- package/dist/types/packages/sdk/src/dataset-task-ingestion.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/dataset-workspace-client.d.ts +1 -1
- package/dist/types/packages/sdk/src/dataset-workspace-client.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/endpoints.d.ts +4 -0
- package/dist/types/packages/sdk/src/endpoints.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/evaluation-coordination-http.d.ts +1 -1
- package/dist/types/packages/sdk/src/evaluation-coordination-http.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/experiment-client.d.ts +1 -1
- package/dist/types/packages/sdk/src/experiment-client.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/experiment-improvement-client.d.ts +1 -1
- package/dist/types/packages/sdk/src/experiment-improvement-client.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/experiment-inspection.d.ts +1 -1
- package/dist/types/packages/sdk/src/experiment-inspection.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/grader-inspection.d.ts +1 -1
- package/dist/types/packages/sdk/src/grader-inspection.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/human-review-client.d.ts +1 -1
- package/dist/types/packages/sdk/src/human-review-client.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/index.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/learning-client.d.ts +1 -1
- package/dist/types/packages/sdk/src/learning-client.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/learning-correction-metrics.d.ts +1 -1
- package/dist/types/packages/sdk/src/learning-correction-metrics.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/model-projects.d.ts +1 -1
- package/dist/types/packages/sdk/src/model-projects.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/model-starter-attempts.d.ts +1 -1
- package/dist/types/packages/sdk/src/model-starter-attempts.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/model-starter-catalog.d.ts +1 -1
- package/dist/types/packages/sdk/src/model-starter-catalog.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/model-taskset-runs.d.ts +1 -1
- package/dist/types/packages/sdk/src/model-taskset-runs.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/product-models.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/profile-evaluation-discovery.d.ts +1 -1
- package/dist/types/packages/sdk/src/profile-evaluation-discovery.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/serverless-serving.d.ts +157 -0
- package/dist/types/packages/sdk/src/serverless-serving.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/steering-model-serving.d.ts +276 -0
- package/dist/types/packages/sdk/src/steering-model-serving.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/taskset-catalog.d.ts +1 -1
- package/dist/types/packages/sdk/src/taskset-catalog.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/taskset-draft-client.d.ts +121 -121
- package/dist/types/packages/sdk/src/taskset-draft-client.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/taskset-package-client.d.ts +1 -1
- package/dist/types/packages/sdk/src/taskset-package-client.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/tool-learning-client.d.ts +1 -1
- package/dist/types/packages/sdk/src/tool-learning-client.d.ts.map +1 -1
- 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 +232 -0
- 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 +552 -0
- package/dist/types/packages/sdk/src/training-model-serving.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/training-project-client.d.ts +1 -1
- package/dist/types/packages/sdk/src/training-project-client.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/training-qualification-preparation.d.ts +25 -25
- package/dist/types/packages/sdk/src/training-transport.d.ts +1 -1
- package/dist/types/packages/sdk/src/training-transport.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/training.d.ts +1336 -1021
- package/dist/types/packages/sdk/src/training.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/types.d.ts +2 -2
- package/dist/types/packages/sdk/src/types.d.ts.map +1 -1
- package/examples/learning/submit.py +1 -1
- package/examples/learning/submit.ts +2 -2
- package/examples/training/continual.ts +4 -4
- package/examples/training/manual.ts +1 -3
- package/fixtures/python-foundation/schemas.json +4830 -4483
- package/package.json +2 -1
- package/dist/chunk-2OVNKPBZ.js.map +0 -1
- package/dist/chunk-3B5KSH3V.js.map +0 -1
- package/dist/chunk-3MWFN7BA.js.map +0 -1
- package/dist/chunk-47THZRUM.js.map +0 -1
- package/dist/chunk-BRP3EBCR.js.map +0 -1
- package/dist/chunk-C3TS766N.js.map +0 -1
- package/dist/chunk-DH6O4JFB.js.map +0 -1
- package/dist/chunk-GX6KMHW2.js.map +0 -1
- package/dist/chunk-IXFUYPGV.js.map +0 -1
- package/dist/chunk-JMFYNIYZ.js.map +0 -1
- package/dist/chunk-MVAEE5EI.js.map +0 -1
- package/dist/chunk-QOX57Y27.js.map +0 -1
- package/dist/chunk-QRYEXPG7.js.map +0 -1
- package/dist/chunk-Z252BNAZ.js.map +0 -1
- /package/dist/{chunk-ZQFROKKS.js.map → chunk-2U6BQ5C4.js.map} +0 -0
- /package/dist/{chunk-DDCR4KB5.js.map → chunk-3BILL33A.js.map} +0 -0
- /package/dist/{chunk-RTLJV4OS.js.map → chunk-4A4FNG4R.js.map} +0 -0
- /package/dist/{chunk-EZME7DV4.js.map → chunk-4CDLPMJK.js.map} +0 -0
- /package/dist/{chunk-XBFOFTK3.js.map → chunk-4CRLQMJ2.js.map} +0 -0
- /package/dist/{chunk-GS5HEE4M.js.map → chunk-4REK5TTE.js.map} +0 -0
- /package/dist/{chunk-YS7DF76T.js.map → chunk-57ROW3XF.js.map} +0 -0
- /package/dist/{chunk-3VUF5H3B.js.map → chunk-AMZ2SWHR.js.map} +0 -0
- /package/dist/{chunk-GV6DEDBU.js.map → chunk-AQV7RQZH.js.map} +0 -0
- /package/dist/{chunk-BJMENXR4.js.map → chunk-C7I4ZG6Q.js.map} +0 -0
- /package/dist/{chunk-QNOCM5JX.js.map → chunk-D26RJQU7.js.map} +0 -0
- /package/dist/{chunk-T67LNKAK.js.map → chunk-EL6KZO43.js.map} +0 -0
- /package/dist/{chunk-JOMZJXGC.js.map → chunk-JINWKUKR.js.map} +0 -0
- /package/dist/{chunk-626JLH4D.js.map → chunk-JWEIAEQ6.js.map} +0 -0
- /package/dist/{chunk-3G3HUA32.js.map → chunk-P56JWQYV.js.map} +0 -0
- /package/dist/{chunk-7F43U2NC.js.map → chunk-WZKKQNYY.js.map} +0 -0
- /package/dist/{chunk-RN5MK7NH.js.map → chunk-X5AT253K.js.map} +0 -0
- /package/dist/{chunk-ZRTNR4U7.js.map → chunk-XWUTYFOU.js.map} +0 -0
- /package/dist/{chunk-Z5APNTZE.js.map → chunk-XYK3MAIC.js.map} +0 -0
|
@@ -6,14 +6,14 @@ import {
|
|
|
6
6
|
validateModelStarterExecution,
|
|
7
7
|
validateModelTasksetPackage,
|
|
8
8
|
validateTasksetPackage
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-AQV7RQZH.js";
|
|
10
10
|
import {
|
|
11
11
|
ModelProjectBaseModelSchema,
|
|
12
12
|
ModelProjectRecipeDocumentSchema,
|
|
13
13
|
ModelProjectTrainingMethodSchema,
|
|
14
14
|
ModelProjectTrainingSetupSchema,
|
|
15
15
|
ModelProjectVersionedRefSchema
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-H5KHLBC5.js";
|
|
17
17
|
import {
|
|
18
18
|
ModelInitialLearningSchema
|
|
19
19
|
} from "./chunk-CL3IOOVL.js";
|
|
@@ -118,7 +118,7 @@ function createModelTrainingRecipeDefaults(saved, method = saved?.method === "sf
|
|
|
118
118
|
method: "grpo",
|
|
119
119
|
parameterization: "lora",
|
|
120
120
|
lora: { rank: 2 },
|
|
121
|
-
rollout: { groupSize: 8, concurrency: 4, maxOutputTokens: 1024, temperature: 0.8, topP:
|
|
121
|
+
rollout: { groupSize: 8, concurrency: 4, maxOutputTokens: 1024, temperature: 0.8, topP: 1, seed: 17 },
|
|
122
122
|
optimizer: {
|
|
123
123
|
learningRate: 1e-4,
|
|
124
124
|
maxSteps: 8,
|
|
@@ -172,7 +172,7 @@ function prepareModelTrainingDefaults(input) {
|
|
|
172
172
|
const dataset = fields2(recipe2.dataset);
|
|
173
173
|
const sameEvaluation = setup.evaluationTasksetRef?.id === setup.tasksetRef?.id && setup.evaluationTasksetRef?.contentHash === setup.tasksetRef?.contentHash;
|
|
174
174
|
if (!dataset.validationSplit && !sameEvaluation)
|
|
175
|
-
throw new Error("Choose the
|
|
175
|
+
throw new Error("Choose the held-out split from the selected evaluation dataset.");
|
|
176
176
|
return ModelProjectTrainingSetupSchema.parse({
|
|
177
177
|
...setup,
|
|
178
178
|
recipe: ManagedSftRecipeSchema.parse({
|
|
@@ -443,4 +443,4 @@ export {
|
|
|
443
443
|
previewModelStarter,
|
|
444
444
|
validateResolvedModelStarter
|
|
445
445
|
};
|
|
446
|
-
//# sourceMappingURL=chunk-
|
|
446
|
+
//# sourceMappingURL=chunk-UZAVG2WK.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/model-starters.ts","../src/model-training-defaults.ts","../src/model-supervised-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\";\nimport { createSupervisedTrainingRecipeDefaults } from \"./model-supervised-training-defaults.js\";\nimport { ManagedSftRecipeSchema } from \"./training-supervised.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 method-specific defaults exist before tasks/base/grader are bound.\n * This draft never authorizes execution; package preparation binds those inputs. */\nexport function createModelTrainingRecipeDefaults(\n saved?: ModelProjectTrainingSetup[\"recipe\"],\n method: \"grpo\" | \"sft\" = saved?.method === \"sft\" ? \"sft\" : \"grpo\",\n baseModel?: ModelProjectTrainingSetup[\"baseModel\"],\n): NonNullable<ModelProjectTrainingSetup[\"recipe\"]> {\n if (method === \"sft\") return createSupervisedTrainingRecipeDefaults(saved, baseModel);\n const grpo = saved?.method === \"grpo\" ? saved : undefined;\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: 1, 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, ...grpo,\n lora: { ...defaults.lora, ...fields(grpo?.lora) },\n rollout: { ...defaults.rollout, ...fields(grpo?.rollout) },\n optimizer: { ...defaults.optimizer, ...fields(grpo?.optimizer),\n adamw: { ...defaults.optimizer.adamw, ...fields(fields(grpo?.optimizer).adamw) } },\n loss: { ...defaults.loss, ...fields(grpo?.loss) },\n resourceLimits: { ...defaults.resourceLimits, ...fields(grpo?.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.method === \"sft\"\n ? { ...recipe, dataset: { ...dataset, ...(_validation ? { validationSplit: _validation } : {}) } }\n : { ...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 === \"sft\") {\n if ((setup.recipe && setup.recipe.method !== \"sft\") || !base?.revision\n || !base.tokenizerRevision || !base.chatTemplateHash) return setup;\n const training = source.taskset.tasks.filter(task => task.split === \"train\");\n if (!training.length) return setup;\n const recipe = createSupervisedTrainingRecipeDefaults(setup.recipe, base);\n const dataset = fields(recipe.dataset);\n const sameEvaluation = setup.evaluationTasksetRef?.id === setup.tasksetRef?.id\n && setup.evaluationTasksetRef?.contentHash === setup.tasksetRef?.contentHash;\n if (!dataset.validationSplit && !sameEvaluation)\n throw new Error(\"Choose the held-out split from the selected evaluation dataset.\");\n return ModelProjectTrainingSetupSchema.parse({\n ...setup,\n recipe: ManagedSftRecipeSchema.parse({\n ...recipe,\n baseModel: { id: base.modelId, revision: base.revision,\n tokenizerRevision: base.tokenizerRevision, chatTemplateHash: base.chatTemplateHash },\n dataset: { ...dataset, trainSplit: \"train\",\n validationSplit: dataset.validationSplit ?? (source.taskset.tasks.some(task => task.split === \"frozen_eval\") ? \"frozen_eval\" : \"validation\"),\n maxExamples: typeof dataset.maxExamples === \"number\" ? Math.min(dataset.maxExamples, training.length) : Math.min(1_000, training.length) },\n }),\n });\n }\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","import type { ModelProjectTrainingSetup } from \"./model-projects.js\";\n\ntype Recipe = NonNullable<ModelProjectTrainingSetup[\"recipe\"]>;\nconst fields = (value: unknown): Record<string, unknown> =>\n value && typeof value === \"object\" && !Array.isArray(value)\n ? value as Record<string, unknown> : {};\n\n// Exact-source authoring settings only. Availability is determined by the\n// connected service when preparing a run, never by these editable defaults.\nconst denseSources = [\n { id: \"Qwen/Qwen3.5-4B\", revision: \"851bf6e806efd8d0a36b00ddf55e13ccb7b8cd0a\",\n chatTemplateHash: \"a4aee8afcf2e0711942cf848899be66016f8d14a889ff9ede07bca099c28f715\", rank: 16, memoryBytes: 24_000_000_000 },\n { id: \"Qwen/Qwen3.5-9B\", revision: \"c202236235762e1c871ad0ccb60c8ee5ba337b9a\",\n chatTemplateHash: \"a4aee8afcf2e0711942cf848899be66016f8d14a889ff9ede07bca099c28f715\", rank: 16, memoryBytes: 48_000_000_000 },\n { id: \"Qwen/Qwen3.8-27B\", revision: \"1d4bf0f2ff6012fd82039f2fa52739d0dd7c60c0\",\n chatTemplateHash: \"c3cf9e34abf4f9e36c2d72165aa9c132d3e2a725b6c2586aaa3a8af9d7a81041\", rank: 8, memoryBytes: 80_000_000_000 },\n] as const;\n\n/** An editable draft, without invented model or dataset bindings. Execution\n * still requires ManagedSftRecipeSchema and authoritative supervised admission. */\nexport function createSupervisedTrainingRecipeDefaults(\n saved?: ModelProjectTrainingSetup[\"recipe\"],\n baseModel?: ModelProjectTrainingSetup[\"baseModel\"],\n): Recipe {\n const source = saved?.method === \"sft\" ? saved : undefined;\n const base = baseModel ? { id: baseModel.modelId, revision: baseModel.revision,\n tokenizerRevision: baseModel.tokenizerRevision, chatTemplateHash: baseModel.chatTemplateHash } : fields(source?.baseModel);\n const dense = denseSources.find(candidate => candidate.id === base.id && candidate.revision === base.revision\n && candidate.revision === base.tokenizerRevision && candidate.chatTemplateHash === base.chatTemplateHash);\n const rank = dense?.rank ?? 16;\n return {\n schemaVersion: \"openpond.sftRecipe.v1\", method: \"sft\", parameterization: \"lora\",\n ...(source?.baseModel ? { baseModel: source.baseModel } : {}),\n dataset: {\n completionOnly: true, maxSequenceLength: 8_192,\n selectionStrategy: \"stable_hash_top_n\", selectionSeed: 17,\n ...fields(source?.dataset),\n },\n lora: {\n rank, alpha: rank * 2, dropout: 0,\n targetModules: dense ? [\"down_proj\", \"gate_proj\", \"up_proj\"]\n : [\"q_proj\", \"k_proj\", \"v_proj\", \"o_proj\", \"gate_proj\", \"up_proj\", \"down_proj\"],\n ...fields(source?.lora),\n },\n optimizer: {\n learningRate: 0.0001, epochs: 3, maxSteps: 30,\n batchSize: 1, gradientAccumulationSteps: 1, seed: 17,\n ...fields(source?.optimizer),\n },\n resourceLimits: {\n cpuThreads: 4, memoryBytes: dense?.memoryBytes ?? 48 * 1024 ** 3, wallTimeMs: 60 * 60 * 1_000,\n ...fields(source?.resourceLimits),\n },\n };\n}\n"],"mappings":"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","names":["compileBoundGraders","fields","training","recipe","reward","task","contentHash","compileBoundGraders","value","asset"]}
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
import {
|
|
2
|
+
DEFAULT_API_BASE_URL
|
|
3
|
+
} from "./chunk-QYWPNNP3.js";
|
|
4
|
+
|
|
1
5
|
// src/taskset-catalog.ts
|
|
2
6
|
import { z } from "zod";
|
|
3
7
|
var IdSchema = z.string().trim().min(1).max(500);
|
|
@@ -47,7 +51,7 @@ var OpenPondTasksetCatalogClient = class {
|
|
|
47
51
|
#options;
|
|
48
52
|
constructor(options) {
|
|
49
53
|
if (!options.apiKey.trim() || !options.teamId.trim()) throw new Error("Taskset API key and workspace are required.");
|
|
50
|
-
const url = new URL(options.baseUrl);
|
|
54
|
+
const url = new URL(options.baseUrl ?? DEFAULT_API_BASE_URL);
|
|
51
55
|
if (!["http:", "https:"].includes(url.protocol) || url.username || url.password || url.search || url.hash) throw new Error("Taskset base URL must be an HTTP(S) endpoint without credentials, query, or fragment.");
|
|
52
56
|
this.#options = { ...options, baseUrl: url.toString().replace(/\/+$/, "") };
|
|
53
57
|
}
|
|
@@ -118,4 +122,4 @@ export {
|
|
|
118
122
|
OpenPondTasksetCatalogError,
|
|
119
123
|
OpenPondTasksetCatalogClient
|
|
120
124
|
};
|
|
121
|
-
//# sourceMappingURL=chunk-
|
|
125
|
+
//# sourceMappingURL=chunk-VE5JD5FN.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/taskset-catalog.ts"],"sourcesContent":["import { DEFAULT_API_BASE_URL } from \"./endpoints.js\";\nimport { z } from \"zod\";\n\nconst IdSchema = z.string().trim().min(1).max(500);\nconst HashSchema = z.string().regex(/^[a-f0-9]{64}$/);\nexport const TasksetCatalogReleaseRefSchema = z.object({ id: IdSchema, revision: z.number().int().positive(), contentHash: HashSchema }).strict();\n\n/** Inventory metadata only. Task rows, evaluator source, and object locations\n * are resolved separately by an authorized package operation. */\nexport const HostedTasksetSummarySchema = z.object({\n schemaVersion: z.literal(\"openpond.hostedTasksetSummary.v1\"),\n id: IdSchema,\n teamId: IdSchema,\n release: TasksetCatalogReleaseRefSchema,\n name: z.string().min(1).max(500),\n description: z.string().max(20_000),\n taskCount: z.number().int().nonnegative(),\n buildIntent: z.string().min(1).max(100),\n methodHint: z.string().min(1).max(100).nullable(),\n packageBytes: z.number().int().nonnegative().nullable(),\n storedBytes: z.number().int().nonnegative().nullable(),\n createdAt: z.string().datetime({ offset: true }),\n}).strict();\nexport const TasksetCatalogQuerySchema = z.object({\n afterId: z.string().trim().min(1).max(2_000).optional(),\n limit: z.number().int().min(1).max(100).default(30),\n modelProjectId: IdSchema.optional(),\n projectId: IdSchema.optional(),\n search: z.string().trim().max(100).optional(),\n sort: z.enum([\"id\", \"name\", \"updated\"]).default(\"id\"),\n}).strict();\nexport const TasksetCatalogPageSchema = z.object({\n items: z.array(HostedTasksetSummarySchema).max(100),\n nextCursor: z.string().trim().min(1).max(2_000).nullable(),\n}).strict();\nexport const TasksetCatalogErrorSchema = z.object({\n code: z.string().min(1),\n message: z.string().min(1),\n}).strict();\nexport type HostedTasksetSummary = z.infer<typeof HostedTasksetSummarySchema>;\nexport type TasksetCatalogPage = z.infer<typeof TasksetCatalogPageSchema>;\n\nexport class OpenPondTasksetCatalogError extends Error {\n constructor(readonly status: number, readonly code: string, message: string) {\n super(message);\n this.name = \"OpenPondTasksetCatalogError\";\n }\n}\n\nexport interface TasksetCatalogClientOptions {\n baseUrl?: string;\n apiKey: string;\n teamId: string;\n fetch?: typeof globalThis.fetch;\n}\n\nexport class OpenPondTasksetCatalogClient {\n readonly #options: TasksetCatalogClientOptions;\n constructor(options: TasksetCatalogClientOptions) {\n if (!options.apiKey.trim() || !options.teamId.trim()) throw new Error(\"Taskset API key and workspace are required.\");\n const url = new URL(options.baseUrl ?? DEFAULT_API_BASE_URL);\n if (![\"http:\", \"https:\"].includes(url.protocol) || url.username || url.password || url.search || url.hash) throw new Error(\"Taskset base URL must be an HTTP(S) endpoint without credentials, query, or fragment.\");\n this.#options = { ...options, baseUrl: url.toString().replace(/\\/+$/, \"\") };\n }\n\n async list(query: z.input<typeof TasksetCatalogQuerySchema> = {}, options: { signal?: AbortSignal } = {}): Promise<TasksetCatalogPage> {\n const parsed = TasksetCatalogQuerySchema.parse(query);\n const search = new URLSearchParams({ limit: String(parsed.limit) });\n if (parsed.afterId) search.set(\"afterId\", parsed.afterId);\n if (parsed.modelProjectId) search.set(\"modelProjectId\", parsed.modelProjectId);\n if (parsed.projectId) search.set(\"projectId\", parsed.projectId);\n if (parsed.search !== undefined) search.set(\"search\", parsed.search);\n search.set(\"sort\", parsed.sort);\n const page = TasksetCatalogPageSchema.parse(await this.#request(`?${search}`, options.signal));\n if (page.items.length > parsed.limit || new Set(page.items.map(item => item.id)).size !== page.items.length || page.items.some((item) => item.teamId !== this.#options.teamId)) throw new OpenPondTasksetCatalogError(502, \"catalog_scope_mismatch\", \"Taskset inventory did not match the requested workspace or page size.\");\n return page;\n }\n\n async get(id: string, options: { signal?: AbortSignal } = {}): Promise<HostedTasksetSummary> {\n const parsed = IdSchema.parse(id);\n const item = HostedTasksetSummarySchema.parse(await this.#request(`/${encodeURIComponent(parsed)}`, options.signal));\n if (item.id !== parsed || item.teamId !== this.#options.teamId) throw new OpenPondTasksetCatalogError(502, \"catalog_identity_mismatch\", \"Taskset metadata did not match the requested identity.\");\n return item;\n }\n\n /** Resolve a saved portable reference without scanning inventory pages. */\n async resolve(release: z.infer<typeof TasksetCatalogReleaseRefSchema>, options: { signal?: AbortSignal } = {}): Promise<HostedTasksetSummary> {\n const parsed = TasksetCatalogReleaseRefSchema.parse(release);\n const item = HostedTasksetSummarySchema.parse(await this.#request(`/releases/${encodeURIComponent(parsed.id)}/${parsed.revision}/${parsed.contentHash}`, options.signal));\n if (item.teamId !== this.#options.teamId || item.release.id !== parsed.id || item.release.revision !== parsed.revision || item.release.contentHash !== parsed.contentHash) throw new OpenPondTasksetCatalogError(502, \"catalog_release_mismatch\", \"Taskset metadata did not match the requested immutable release.\");\n return item;\n }\n\n async #request(path: string, signal?: AbortSignal): Promise<unknown> {\n const response = await (this.#options.fetch ?? globalThis.fetch)(`${this.#options.baseUrl}/v1/taskset-catalog${path}`, {\n headers: { Authorization: `Bearer ${this.#options.apiKey}`, \"X-OpenPond-Team-Id\": this.#options.teamId, Accept: \"application/json\" },\n signal, redirect: \"error\",\n });\n const reader = response.body?.getReader();\n if (!reader) throw new OpenPondTasksetCatalogError(response.status, \"empty_response\", \"Taskset catalog response was empty.\");\n const decoder = new TextDecoder();\n let bytes = 0;\n let text = \"\";\n try {\n while (true) {\n const chunk = await reader.read();\n if (chunk.done) break;\n bytes += chunk.value.byteLength;\n if (bytes > 4_194_304) throw new OpenPondTasksetCatalogError(response.status, \"response_too_large\", \"Taskset catalog response exceeded 4 MiB.\");\n text += decoder.decode(chunk.value, { stream: true });\n }\n text += decoder.decode();\n } finally { await reader.cancel(); reader.releaseLock(); }\n const payload: unknown = JSON.parse(text);\n if (!response.ok) {\n const error = TasksetCatalogErrorSchema.safeParse(payload);\n throw new OpenPondTasksetCatalogError(response.status, error.success ? error.data.code : \"invalid_error_response\", error.success ? error.data.message : `Taskset catalog request failed (${response.status}).`);\n }\n return payload;\n }\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
EvaluationCoordinationTransport
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-456F3BXD.js";
|
|
4
4
|
import {
|
|
5
5
|
RunExperimentSchema
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-2U6BQ5C4.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-WZKKQNYY.js.map
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
ExperimentImprovementOptionsSchema
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-D26RJQU7.js";
|
|
4
4
|
import {
|
|
5
5
|
EvaluationCoordinationTransport
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-456F3BXD.js";
|
|
7
7
|
import {
|
|
8
8
|
ChatModelRefSchema
|
|
9
9
|
} from "./chunk-H3367ISL.js";
|
|
@@ -264,4 +264,4 @@ export {
|
|
|
264
264
|
AdvancedRefinerEvaluationAccountingSchema,
|
|
265
265
|
OpenPondAdvancedRefinerEvaluationClient
|
|
266
266
|
};
|
|
267
|
-
//# sourceMappingURL=chunk-
|
|
267
|
+
//# sourceMappingURL=chunk-X5AT253K.js.map
|
|
@@ -3,10 +3,10 @@ import {
|
|
|
3
3
|
EvaluationProjectContextSchema,
|
|
4
4
|
ModelStarterAttemptPolicySchema,
|
|
5
5
|
ModelStarterAttemptSummarySchema
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-CAOMKM55.js";
|
|
7
7
|
import {
|
|
8
8
|
ModelProjectVersionedRefSchema
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-H5KHLBC5.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-XWUTYFOU.js.map
|
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
ModelProjectRecipeDocumentSchema,
|
|
9
9
|
ModelProjectVersionedRefSchema,
|
|
10
10
|
TrainingGpuSelectionSchema
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-H5KHLBC5.js";
|
|
12
12
|
import {
|
|
13
13
|
OpenPondProtocolError,
|
|
14
14
|
TRAINING_INPUT_ARTIFACT_MAX_BYTES,
|
|
@@ -872,4 +872,4 @@ export {
|
|
|
872
872
|
assertTrainingEvaluationIsolation,
|
|
873
873
|
trainingEvaluationSourceRef
|
|
874
874
|
};
|
|
875
|
-
//# sourceMappingURL=chunk-
|
|
875
|
+
//# sourceMappingURL=chunk-XYK3MAIC.js.map
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
readBoundedJsonResponse
|
|
3
3
|
} from "./chunk-B3ZHJ2KK.js";
|
|
4
|
+
import {
|
|
5
|
+
DEFAULT_MODEL_BASE_URL
|
|
6
|
+
} from "./chunk-QYWPNNP3.js";
|
|
4
7
|
|
|
5
8
|
// src/product-models.ts
|
|
6
9
|
import { z } from "zod";
|
|
@@ -64,9 +67,9 @@ var ProductModel = class {
|
|
|
64
67
|
structuredOutput: false,
|
|
65
68
|
...typeof binding === "string" ? {} : binding.capabilities
|
|
66
69
|
};
|
|
67
|
-
if (!connection.
|
|
68
|
-
throw new Error("Named models require an
|
|
69
|
-
productModelEndpoint(connection.baseUrl);
|
|
70
|
+
if (!connection.apiKey.trim())
|
|
71
|
+
throw new Error("Named models require an API key.");
|
|
72
|
+
this.connection = { ...connection, baseUrl: productModelEndpoint(connection.baseUrl ?? DEFAULT_MODEL_BASE_URL) };
|
|
70
73
|
if (connection.timeoutMs !== void 0 && (!Number.isFinite(connection.timeoutMs) || connection.timeoutMs <= 0 || connection.timeoutMs > 3e5))
|
|
71
74
|
throw new Error("Serving timeoutMs must be greater than zero and at most 300000.");
|
|
72
75
|
}
|
|
@@ -242,4 +245,4 @@ export {
|
|
|
242
245
|
ProductModel,
|
|
243
246
|
createProductModels
|
|
244
247
|
};
|
|
245
|
-
//# sourceMappingURL=chunk-
|
|
248
|
+
//# sourceMappingURL=chunk-ZG4HVCJB.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/product-models.ts"],"sourcesContent":["import { DEFAULT_MODEL_BASE_URL } from \"./endpoints.js\";\nimport { z } from \"zod\";\nimport { readBoundedJsonResponse } from \"./protocol.js\";\n\nexport type ProductModelBinding = {\n id: string;\n capabilities?: { streaming?: boolean; tools?: boolean; structuredOutput?: false };\n};\nexport type ProductModelMessage = { role: \"system\" | \"user\" | \"assistant\"; content: string };\nexport type ProductModelInput = {\n prompt?: string;\n messages?: ProductModelMessage[];\n temperature?: number;\n maxTokens?: number;\n signal?: AbortSignal;\n};\nexport type ProductModelUsage = { inputTokens: number; outputTokens: number; totalTokens: number };\nexport type ProductModelResult = {\n text: string;\n requestId: string;\n modelId: string;\n resolvedModelId: string;\n finishReason: string | null;\n usage: ProductModelUsage | null;\n systemFingerprint: string | null;\n /** Retained server evidence; presence alone is not client-side verification. */\n evidence: Record<string, unknown> | null;\n};\nexport type ProductModelEvent =\n | { type: \"text\"; text: string }\n | { type: \"finish\"; result: ProductModelResult };\nexport type ProductModelConnection = {\n baseUrl?: string;\n teamId?: string;\n apiKey: string;\n timeoutMs?: number;\n fetch?: typeof fetch;\n};\nexport type ProductModels<Models> = { readonly [Name in keyof Models]: ProductModel };\n\nexport class ProductModelError extends Error {\n constructor(\n readonly code: string,\n readonly status: number,\n readonly outcomeUnknown: boolean,\n readonly requestId?: string,\n ) {\n super(`OpenPond model request failed (${code}).`);\n this.name = \"ProductModelError\";\n }\n}\nconst Message = z\n .object({ role: z.enum([\"system\", \"user\", \"assistant\"]), content: z.string().max(200_000) })\n .strict();\nconst Input = z\n .object({\n prompt: z.string().max(200_000).optional(),\n messages: z.array(Message).min(1).max(128).optional(),\n temperature: z.number().min(0).max(2).optional(),\n maxTokens: z.number().int().min(1).max(4096).optional(),\n })\n .strict()\n .refine(\n (v) => (v.prompt !== undefined) !== (v.messages !== undefined),\n \"Supply prompt or messages, exclusively.\",\n );\nconst Usage = z.object({\n prompt_tokens: z.number().int().nonnegative(),\n completion_tokens: z.number().int().nonnegative(),\n total_tokens: z.number().int().nonnegative(),\n});\nconst Chunk = z.object({\n id: z.string(),\n model: z.string(),\n system_fingerprint: z.string().nullable().optional(),\n openpond: z.record(z.string(), z.json()).optional(),\n usage: Usage.nullable().optional(),\n choices: z\n .array(\n z.object({\n index: z.number().int(),\n finish_reason: z.string().nullable().optional(),\n delta: z\n .object({ content: z.string().nullable().optional(), tool_calls: z.unknown().optional() })\n .passthrough()\n .optional(),\n message: z\n .object({ content: z.string().nullable(), tool_calls: z.unknown().optional() })\n .passthrough()\n .optional(),\n }),\n )\n .max(1),\n});\n\nexport function productModelEndpoint(value: string): string {\n const url = new URL(value);\n if (\n ![\"http:\", \"https:\"].includes(url.protocol) ||\n url.username ||\n url.password ||\n url.search ||\n url.hash\n )\n throw new Error(\"A clean serving base URL is required.\");\n return url.href.replace(/\\/$/, \"\");\n}\n\n/** A named text model. This never resolves a catalogue default or activates serving. */\nexport class ProductModel {\n readonly id: string;\n readonly capabilities: Required<NonNullable<ProductModelBinding[\"capabilities\"]>>;\n constructor(\n binding: string | ProductModelBinding,\n private readonly connection: ProductModelConnection,\n ) {\n this.id = z\n .string()\n .trim()\n .regex(/^[a-z0-9][a-z0-9._:-]{2,127}$/)\n .parse(typeof binding === \"string\" ? binding : binding.id);\n this.capabilities = {\n streaming: true,\n tools: false,\n structuredOutput: false,\n ...(typeof binding === \"string\" ? {} : binding.capabilities),\n };\n if (!connection.apiKey.trim())\n throw new Error(\"Named models require an API key.\");\n this.connection = { ...connection, baseUrl: productModelEndpoint(connection.baseUrl ?? DEFAULT_MODEL_BASE_URL) };\n if (\n connection.timeoutMs !== undefined &&\n (!Number.isFinite(connection.timeoutMs) ||\n connection.timeoutMs <= 0 ||\n connection.timeoutMs > 300_000)\n )\n throw new Error(\"Serving timeoutMs must be greater than zero and at most 300000.\");\n }\n /** Provider integrations use the same exact destination and transport. */\n providerConnection(): Readonly<ProductModelConnection> {\n return { ...this.connection };\n }\n private async request(input: ProductModelInput, stream: boolean): Promise<Response> {\n if (stream && !this.capabilities.streaming)\n throw new ProductModelError(\"streaming_unsupported\", 0, false);\n const { signal, ...raw } = input;\n const parsed = Input.parse(raw);\n const body = JSON.stringify({\n model: this.id,\n messages: parsed.messages ?? [{ role: \"user\", content: parsed.prompt }],\n ...(parsed.temperature === undefined ? {} : { temperature: parsed.temperature }),\n ...(parsed.maxTokens === undefined ? {} : { max_tokens: parsed.maxTokens }),\n stream,\n });\n if (new TextEncoder().encode(body).length > 1024 * 1024)\n throw new ProductModelError(\"payload_too_large\", 0, false);\n const deadline = AbortSignal.timeout(this.connection.timeoutMs ?? 60_000);\n let response: Response;\n try {\n response = await (this.connection.fetch ?? fetch)(\n `${productModelEndpoint(this.connection.baseUrl!)}/chat/completions`,\n {\n method: \"POST\",\n redirect: \"error\",\n headers: {\n Authorization: `Bearer ${this.connection.apiKey}`,\n ...(this.connection.teamId ? { \"X-OpenPond-Team-Id\": this.connection.teamId } : {}),\n \"Content-Type\": \"application/json\",\n Accept: stream ? \"text/event-stream\" : \"application/json\",\n },\n body,\n signal: signal ? AbortSignal.any([signal, deadline]) : deadline,\n },\n );\n } catch {\n throw new ProductModelError(\"model_outcome_unknown\", 0, true);\n }\n if (!response.ok) {\n await response.body?.cancel();\n throw new ProductModelError(\n \"model_request_rejected\",\n response.status,\n response.status >= 500,\n response.headers.get(\"x-openpond-request-id\") ??\n response.headers.get(\"x-request-id\") ??\n undefined,\n );\n }\n return response;\n }\n async generate(input: ProductModelInput): Promise<ProductModelResult> {\n const response = await this.request(input, false);\n try {\n const chunk = Chunk.parse(\n await readBoundedJsonResponse(response, 8 * 1024 * 1024, \"Model result\"),\n );\n if (\n chunk.choices.length !== 1 ||\n !chunk.choices[0].message ||\n chunk.choices[0].message.tool_calls\n )\n throw new Error(\"Unsupported response\");\n return this.result(\n chunk,\n chunk.choices[0].message.content ?? \"\",\n chunk.choices[0].finish_reason ?? null,\n response,\n );\n } catch {\n throw new ProductModelError(\n \"model_response_invalid\",\n response.status,\n true,\n response.headers.get(\"x-openpond-request-id\") ??\n response.headers.get(\"x-request-id\") ??\n undefined,\n );\n }\n }\n private result(\n chunk: z.infer<typeof Chunk>,\n text: string,\n finishReason: string | null,\n response: Response,\n ): ProductModelResult {\n return {\n text,\n requestId:\n response.headers.get(\"x-openpond-request-id\") ??\n response.headers.get(\"x-request-id\") ??\n chunk.id,\n modelId: this.id,\n resolvedModelId: chunk.model,\n finishReason,\n usage: chunk.usage\n ? {\n inputTokens: chunk.usage.prompt_tokens,\n outputTokens: chunk.usage.completion_tokens,\n totalTokens: chunk.usage.total_tokens,\n }\n : null,\n systemFingerprint: chunk.system_fingerprint ?? null,\n evidence: chunk.openpond ?? null,\n };\n }\n /** Breaking iteration cancels the HTTP body. A truncated stream never produces finish. */\n async *stream(input: ProductModelInput): AsyncGenerator<ProductModelEvent> {\n const response = await this.request(input, true);\n if (!response.headers.get(\"content-type\")?.includes(\"text/event-stream\") || !response.body) {\n await response.body?.cancel();\n throw new ProductModelError(\"model_stream_invalid\", response.status, true);\n }\n const reader = response.body.getReader();\n const decoder = new TextDecoder();\n let buffer = \"\",\n text = \"\",\n finish: string | null = null,\n last: z.infer<typeof Chunk> | undefined;\n let usage: z.infer<typeof Usage> | null = null;\n let outputBytes = 0;\n try {\n for (;;) {\n const { done, value } = await reader.read();\n buffer = (buffer + decoder.decode(value, { stream: !done })).replace(/\\r\\n/g, \"\\n\");\n if (new TextEncoder().encode(buffer).length > 1024 * 1024)\n throw new Error(\"Stream frame too large\");\n let boundary: number;\n while ((boundary = buffer.indexOf(\"\\n\\n\")) >= 0) {\n const frame = buffer.slice(0, boundary);\n buffer = buffer.slice(boundary + 2);\n const data = frame\n .split(\"\\n\")\n .filter((line) => line.startsWith(\"data:\"))\n .map((line) => line.slice(5).trimStart())\n .join(\"\\n\");\n if (!data) continue;\n if (data === \"[DONE]\") {\n if (!last || !finish) throw new Error(\"Incomplete stream\");\n yield {\n type: \"finish\",\n result: this.result({ ...last, usage }, text, finish, response),\n };\n return;\n }\n const chunk = Chunk.parse(JSON.parse(data));\n if (last && (last.id !== chunk.id || last.model !== chunk.model))\n throw new Error(\"Stream identity changed\");\n last = chunk;\n if (chunk.usage) usage = chunk.usage;\n const choice = chunk.choices[0];\n if (choice?.delta?.tool_calls) throw new Error(\"Tool output unsupported by text API\");\n if (choice?.finish_reason) finish = choice.finish_reason;\n const delta = choice?.delta?.content;\n if (delta) {\n text += delta;\n outputBytes += new TextEncoder().encode(delta).length;\n if (outputBytes > 8 * 1024 * 1024) throw new Error(\"Model output too large\");\n yield { type: \"text\", text: delta };\n }\n }\n if (done) throw new Error(\"Stream ended before DONE\");\n }\n } catch (error) {\n if (error instanceof ProductModelError) throw error;\n throw new ProductModelError(\n \"model_stream_interrupted\",\n response.status,\n true,\n response.headers.get(\"x-openpond-request-id\") ??\n response.headers.get(\"x-request-id\") ??\n undefined,\n );\n } finally {\n await reader.cancel().catch(() => {});\n reader.releaseLock();\n }\n }\n}\nexport function createProductModels<\n const Models extends Record<string, string | ProductModelBinding>,\n>(bindings: Models, connection: ProductModelConnection): ProductModels<Models> {\n return Object.fromEntries(\n Object.entries(bindings).map(([name, binding]) => [\n name,\n new ProductModel(binding, connection),\n ]),\n ) as ProductModels<Models>;\n}\n"],"mappings":"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","names":[]}
|
|
@@ -31,7 +31,7 @@ import {
|
|
|
31
31
|
hashCollectorEligibleBoundaries,
|
|
32
32
|
summarizeCollectorCoverage,
|
|
33
33
|
verifyConnectedRecordedExecution
|
|
34
|
-
} from "./chunk-
|
|
34
|
+
} from "./chunk-6LVLWRBJ.js";
|
|
35
35
|
import "./chunk-O6FKHAWN.js";
|
|
36
36
|
import {
|
|
37
37
|
AgentImportCommitRequestSchema,
|
|
@@ -49,22 +49,23 @@ import {
|
|
|
49
49
|
ConnectedStartingAssetsReceiptSchema,
|
|
50
50
|
ConnectedStartingAssetsRequestSchema,
|
|
51
51
|
verifyConnectedStartingAssetsReceipt
|
|
52
|
-
} from "./chunk-
|
|
53
|
-
import "./chunk-
|
|
54
|
-
import "./chunk-
|
|
52
|
+
} from "./chunk-57ROW3XF.js";
|
|
53
|
+
import "./chunk-3BILL33A.js";
|
|
54
|
+
import "./chunk-JINWKUKR.js";
|
|
55
55
|
import "./chunk-GWXJSBWR.js";
|
|
56
|
-
import "./chunk-
|
|
56
|
+
import "./chunk-4A4FNG4R.js";
|
|
57
57
|
import {
|
|
58
58
|
ConnectedDatasetSourceRefSchema
|
|
59
|
-
} from "./chunk-
|
|
59
|
+
} from "./chunk-AQV7RQZH.js";
|
|
60
60
|
import "./chunk-TK3DXH7A.js";
|
|
61
|
-
import "./chunk-
|
|
61
|
+
import "./chunk-VE5JD5FN.js";
|
|
62
62
|
import "./chunk-QTNYXOJW.js";
|
|
63
63
|
import "./chunk-H3367ISL.js";
|
|
64
|
-
import "./chunk-
|
|
64
|
+
import "./chunk-H5KHLBC5.js";
|
|
65
65
|
import "./chunk-CL3IOOVL.js";
|
|
66
66
|
import "./chunk-B3ZHJ2KK.js";
|
|
67
67
|
import "./chunk-H3JZ3P5T.js";
|
|
68
|
+
import "./chunk-QYWPNNP3.js";
|
|
68
69
|
import "./chunk-YLJ4XMA6.js";
|
|
69
70
|
export {
|
|
70
71
|
AgentImportCommitRequestSchema,
|
package/dist/dataset-commerce.js
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import {
|
|
2
|
+
DEFAULT_API_BASE_URL
|
|
3
|
+
} from "./chunk-QYWPNNP3.js";
|
|
1
4
|
import "./chunk-YLJ4XMA6.js";
|
|
2
5
|
|
|
3
6
|
// src/dataset-commerce-files.ts
|
|
@@ -414,7 +417,7 @@ var OpenPondDatasetCommerceClient = class {
|
|
|
414
417
|
#options;
|
|
415
418
|
files;
|
|
416
419
|
constructor(options) {
|
|
417
|
-
const url = new URL(options.baseUrl);
|
|
420
|
+
const url = new URL(options.baseUrl ?? DEFAULT_API_BASE_URL);
|
|
418
421
|
if (!["https:", "http:"].includes(url.protocol) || url.username || url.password || url.search || url.hash)
|
|
419
422
|
throw new Error(
|
|
420
423
|
"Dataset commerce base URL must be an HTTP(S) endpoint without credentials, query, or fragment."
|