openpond-sdk 0.3.3 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (133) hide show
  1. package/MODEL_STARTERS.md +26 -0
  2. package/TASKSETS.md +55 -0
  3. package/dist/actions-local.js +67 -118
  4. package/dist/actions-local.js.map +4 -4
  5. package/dist/actions.js +4 -92
  6. package/dist/actions.js.map +4 -4
  7. package/dist/chunk-25TBEGXB.js +220 -0
  8. package/dist/chunk-25TBEGXB.js.map +7 -0
  9. package/dist/chunk-27ETSPHQ.js +83 -0
  10. package/dist/chunk-27ETSPHQ.js.map +7 -0
  11. package/dist/chunk-5PRP457R.js +477 -0
  12. package/dist/chunk-5PRP457R.js.map +7 -0
  13. package/dist/chunk-65D4C7HP.js +273 -0
  14. package/dist/chunk-65D4C7HP.js.map +7 -0
  15. package/dist/chunk-6LGGLXAM.js +2395 -0
  16. package/dist/chunk-6LGGLXAM.js.map +7 -0
  17. package/dist/chunk-747CMU2Y.js +222 -0
  18. package/dist/chunk-747CMU2Y.js.map +7 -0
  19. package/dist/chunk-7O5X7DBU.js +80 -0
  20. package/dist/chunk-7O5X7DBU.js.map +7 -0
  21. package/dist/chunk-A4ZDOZKP.js +115 -0
  22. package/dist/chunk-A4ZDOZKP.js.map +7 -0
  23. package/dist/chunk-APHPXQEA.js +155 -0
  24. package/dist/chunk-APHPXQEA.js.map +7 -0
  25. package/dist/chunk-AVW35YOH.js +574 -0
  26. package/dist/chunk-AVW35YOH.js.map +7 -0
  27. package/dist/chunk-EPJM7VEV.js +177 -0
  28. package/dist/chunk-EPJM7VEV.js.map +7 -0
  29. package/dist/chunk-EV4PKJWN.js +1373 -0
  30. package/dist/chunk-EV4PKJWN.js.map +7 -0
  31. package/dist/chunk-K5ZCYOZO.js +49 -0
  32. package/dist/chunk-K5ZCYOZO.js.map +7 -0
  33. package/dist/chunk-LXXQVGQY.js +1 -0
  34. package/dist/chunk-LXXQVGQY.js.map +7 -0
  35. package/dist/chunk-NF63YMOL.js +593 -0
  36. package/dist/chunk-NF63YMOL.js.map +7 -0
  37. package/dist/chunk-P27DQ65Z.js +138 -0
  38. package/dist/chunk-P27DQ65Z.js.map +7 -0
  39. package/dist/chunk-QLEJOCQX.js +72 -0
  40. package/dist/chunk-QLEJOCQX.js.map +7 -0
  41. package/dist/chunk-S7I45WJQ.js +57 -0
  42. package/dist/chunk-S7I45WJQ.js.map +7 -0
  43. package/dist/index.js +33 -2488
  44. package/dist/index.js.map +4 -4
  45. package/dist/learning.js +16 -2042
  46. package/dist/learning.js.map +4 -4
  47. package/dist/model-batch-review.js +5 -42
  48. package/dist/model-batch-review.js.map +3 -3
  49. package/dist/model-projects.js +29 -430
  50. package/dist/model-projects.js.map +3 -3
  51. package/dist/model-starter-attempts.js +13 -420
  52. package/dist/model-starter-attempts.js.map +4 -4
  53. package/dist/model-starter-catalog.js +17 -460
  54. package/dist/model-starter-catalog.js.map +4 -4
  55. package/dist/model-starters.js +32 -709
  56. package/dist/model-starters.js.map +4 -4
  57. package/dist/model-taskset-authoring.js +11 -44
  58. package/dist/model-taskset-authoring.js.map +3 -3
  59. package/dist/model-taskset-runs.js +196 -0
  60. package/dist/model-taskset-runs.js.map +7 -0
  61. package/dist/profile-actions.js +4 -211
  62. package/dist/profile-actions.js.map +3 -3
  63. package/dist/project-actions.js +4 -224
  64. package/dist/project-actions.js.map +3 -3
  65. package/dist/refiner.js +14 -554
  66. package/dist/refiner.js.map +4 -4
  67. package/dist/taskset-catalog.js +9 -104
  68. package/dist/taskset-catalog.js.map +3 -3
  69. package/dist/taskset-drafts.js +465 -0
  70. package/dist/taskset-drafts.js.map +7 -0
  71. package/dist/taskset-packages.js +946 -3089
  72. package/dist/taskset-packages.js.map +4 -4
  73. package/dist/training.js +43 -822
  74. package/dist/training.js.map +4 -4
  75. package/dist/types/packages/sdk/src/index.d.ts +3 -3
  76. package/dist/types/packages/sdk/src/index.d.ts.map +1 -1
  77. package/dist/types/packages/sdk/src/learning-client.d.ts +130 -0
  78. package/dist/types/packages/sdk/src/learning-client.d.ts.map +1 -0
  79. package/dist/types/packages/sdk/src/learning.d.ts +1 -129
  80. package/dist/types/packages/sdk/src/learning.d.ts.map +1 -1
  81. package/dist/types/packages/sdk/src/model-taskset-runs-contracts.d.ts +568 -0
  82. package/dist/types/packages/sdk/src/model-taskset-runs-contracts.d.ts.map +1 -0
  83. package/dist/types/packages/sdk/src/model-taskset-runs.d.ts +722 -0
  84. package/dist/types/packages/sdk/src/model-taskset-runs.d.ts.map +1 -0
  85. package/dist/types/packages/sdk/src/taskset-authored-contracts.d.ts +1170 -0
  86. package/dist/types/packages/sdk/src/taskset-authored-contracts.d.ts.map +1 -0
  87. package/dist/types/packages/sdk/src/taskset-authored-files.d.ts +560 -0
  88. package/dist/types/packages/sdk/src/taskset-authored-files.d.ts.map +1 -0
  89. package/dist/types/packages/sdk/src/taskset-authored-portable-release.d.ts +92 -0
  90. package/dist/types/packages/sdk/src/taskset-authored-portable-release.d.ts.map +1 -0
  91. package/dist/types/packages/sdk/src/taskset-authored-tool-environment.d.ts +15 -0
  92. package/dist/types/packages/sdk/src/taskset-authored-tool-environment.d.ts.map +1 -0
  93. package/dist/types/packages/sdk/src/taskset-authored-validation.d.ts +18 -0
  94. package/dist/types/packages/sdk/src/taskset-authored-validation.d.ts.map +1 -0
  95. package/dist/types/packages/sdk/src/taskset-draft-api-contracts.d.ts +1681 -0
  96. package/dist/types/packages/sdk/src/taskset-draft-api-contracts.d.ts.map +1 -0
  97. package/dist/types/packages/sdk/src/taskset-draft-authoring.d.ts +19 -0
  98. package/dist/types/packages/sdk/src/taskset-draft-authoring.d.ts.map +1 -0
  99. package/dist/types/packages/sdk/src/taskset-draft-client.d.ts +2713 -0
  100. package/dist/types/packages/sdk/src/taskset-draft-client.d.ts.map +1 -0
  101. package/dist/types/packages/sdk/src/taskset-draft-core.d.ts +1000 -0
  102. package/dist/types/packages/sdk/src/taskset-draft-core.d.ts.map +1 -0
  103. package/dist/types/packages/sdk/src/taskset-draft-dataset-artifacts.d.ts +429 -0
  104. package/dist/types/packages/sdk/src/taskset-draft-dataset-artifacts.d.ts.map +1 -0
  105. package/dist/types/packages/sdk/src/taskset-draft-dataset-sources.d.ts +284 -0
  106. package/dist/types/packages/sdk/src/taskset-draft-dataset-sources.d.ts.map +1 -0
  107. package/dist/types/packages/sdk/src/taskset-draft-document.d.ts +846 -0
  108. package/dist/types/packages/sdk/src/taskset-draft-document.d.ts.map +1 -0
  109. package/dist/types/packages/sdk/src/taskset-draft-files.d.ts +8 -0
  110. package/dist/types/packages/sdk/src/taskset-draft-files.d.ts.map +1 -0
  111. package/dist/types/packages/sdk/src/taskset-draft-harness-actions.d.ts +28 -0
  112. package/dist/types/packages/sdk/src/taskset-draft-harness-actions.d.ts.map +1 -0
  113. package/dist/types/packages/sdk/src/taskset-draft-manifests.d.ts +8 -0
  114. package/dist/types/packages/sdk/src/taskset-draft-manifests.d.ts.map +1 -0
  115. package/dist/types/packages/sdk/src/taskset-draft-package-compiler.d.ts +967 -0
  116. package/dist/types/packages/sdk/src/taskset-draft-package-compiler.d.ts.map +1 -0
  117. package/dist/types/packages/sdk/src/taskset-draft-publication.d.ts +10 -0
  118. package/dist/types/packages/sdk/src/taskset-draft-publication.d.ts.map +1 -0
  119. package/dist/types/packages/sdk/src/taskset-draft-source.d.ts +1297 -0
  120. package/dist/types/packages/sdk/src/taskset-draft-source.d.ts.map +1 -0
  121. package/dist/types/packages/sdk/src/taskset-draft-workspace.d.ts +1597 -0
  122. package/dist/types/packages/sdk/src/taskset-draft-workspace.d.ts.map +1 -0
  123. package/dist/types/packages/sdk/src/taskset-drafts.d.ts +16 -0
  124. package/dist/types/packages/sdk/src/taskset-drafts.d.ts.map +1 -0
  125. package/dist/types/packages/sdk/src/taskset-package-grader-projection.d.ts +64 -0
  126. package/dist/types/packages/sdk/src/taskset-package-grader-projection.d.ts.map +1 -0
  127. package/dist/types/packages/sdk/src/taskset-package-projection.d.ts +1514 -0
  128. package/dist/types/packages/sdk/src/taskset-package-projection.d.ts.map +1 -0
  129. package/dist/types/packages/sdk/src/taskset-packages.d.ts +6 -0
  130. package/dist/types/packages/sdk/src/taskset-packages.d.ts.map +1 -1
  131. package/dist/workflows.js +4 -221
  132. package/dist/workflows.js.map +3 -3
  133. package/package.json +11 -3
@@ -1,469 +1,26 @@
1
- // src/model-starter-catalog.ts
2
- import { z as z6 } from "zod";
3
-
4
- // src/model-projects.ts
5
- import { z } from "zod";
6
- import { assertBoundedTaskJson } from "@openpond/evals/task-schema";
7
- var IdSchema = z.string().trim().min(1).max(500);
8
- var HashSchema = z.string().regex(/^[a-f0-9]{64}$/);
9
- var TimestampSchema = z.string().datetime({ offset: true });
10
- var ModelProjectImmutableRefSchema = z.object({
11
- id: IdSchema,
12
- contentHash: HashSchema
13
- }).strict();
14
- var ModelProjectVersionedRefSchema = ModelProjectImmutableRefSchema.extend({
15
- revision: z.number().int().positive()
16
- }).strict();
17
- var ModelProjectBaseModelSchema = z.object({
18
- schemaVersion: z.literal("openpond.baseModelPreference.v1"),
19
- modelId: IdSchema,
20
- revision: z.string().trim().min(1).max(256).nullable(),
21
- tokenizerRevision: z.string().trim().min(1).max(256).nullable(),
22
- chatTemplateHash: z.string().trim().min(8).max(256).nullable(),
23
- modelAssetId: IdSchema.nullable(),
24
- source: z.enum(["managed", "local", "builtin"])
25
- }).strict();
26
- var ModelProjectTrainingMethodSchema = z.enum([
27
- "sft",
28
- "dpo",
29
- "grpo",
30
- "ppo",
31
- "sdft",
32
- "opd",
33
- "opsd",
34
- "sdpo"
35
- ]);
36
- var ModelProjectRecipeDocumentSchema = z.object({
37
- schemaVersion: z.string().regex(/^openpond\.[A-Za-z0-9]+Recipe\.v\d+$/),
38
- method: ModelProjectTrainingMethodSchema,
39
- parameterization: z.enum(["lora", "full"])
40
- }).catchall(z.unknown());
41
- var ModelProjectTrainingSetupSchema = z.object({
42
- tasksetRef: ModelProjectVersionedRefSchema.nullable().default(null),
43
- rewardBindingRef: ModelProjectVersionedRefSchema.nullable().optional(),
44
- tasksetRelease: ModelProjectImmutableRefSchema.nullable().default(null),
45
- harnessRelease: ModelProjectImmutableRefSchema.nullable().default(null),
46
- baseModel: ModelProjectBaseModelSchema.nullable().default(null),
47
- method: ModelProjectTrainingMethodSchema.nullable().default(null),
48
- destinationId: IdSchema.nullable().default(null),
49
- managedRolloutPlacement: z.enum(["local", "remote"]).default("remote"),
50
- managedGpuPlacementObjective: z.enum(["fast", "balanced", "economical"]).default("balanced"),
51
- managedGpuRequirement: z.enum(["any", "h100_hbm3"]).default("any"),
52
- runPreset: z.enum(["small", "standard", "custom", "small_experiment"]).nullable().default(null),
53
- recipe: ModelProjectRecipeDocumentSchema.nullable().default(null),
54
- preferredMaximumSpendUsd: z.number().nonnegative().nullable().default(null),
55
- preferredRetentionDays: z.number().int().nonnegative().nullable().default(null)
56
- }).strict();
57
- var HostedModelProjectTrainingSetupSchema = ModelProjectTrainingSetupSchema.omit({ managedGpuRequirement: true });
58
- var HostedModelProjectLinkSchema = z.object({
59
- schemaVersion: z.literal("openpond.hostedModelProjectLink.v1"),
60
- apiOrigin: z.string().url().refine((value) => new URL(value).origin === value, "Use a canonical API origin.").nullable().default(null),
61
- teamId: IdSchema,
62
- projectId: IdSchema,
63
- portableProjectId: IdSchema,
64
- revision: z.number().int().positive(),
65
- etag: HashSchema,
66
- syncedSourceRevision: z.number().int().positive(),
67
- syncedAt: TimestampSchema,
68
- tasksets: z.array(
69
- z.object({
70
- localTasksetId: IdSchema,
71
- localTasksetHash: HashSchema.nullable().default(null),
72
- releaseId: IdSchema,
73
- releaseRevision: z.number().int().positive(),
74
- releaseHash: HashSchema,
75
- packageHash: HashSchema.nullable().default(null),
76
- hostedTasksetId: IdSchema,
77
- syncedAt: TimestampSchema
78
- }).strict()
79
- ).max(1e4).default([])
80
- }).strict();
81
- var ModelProjectTasksetSyncSchema = z.object({
82
- localTasksetId: IdSchema,
83
- releaseId: IdSchema,
84
- releaseRevision: z.number().int().positive(),
85
- releaseHash: HashSchema,
86
- state: z.enum(["syncing", "synced", "sync_failed"]),
87
- hostedTasksetId: IdSchema.nullable().default(null),
88
- lastAttemptAt: TimestampSchema,
89
- syncedAt: TimestampSchema.nullable().default(null),
90
- lastError: z.string().trim().min(1).max(5e3).nullable().default(null)
91
- }).strict();
92
- var ModelProjectSchema = z.object({
93
- schemaVersion: z.literal("openpond.modelProject.v2"),
94
- id: IdSchema,
95
- profileId: IdSchema,
96
- revision: z.number().int().positive().default(1),
97
- name: z.string().trim().min(1).max(200),
98
- objective: z.string().trim().max(5e3).nullable(),
99
- defaultBaseModel: ModelProjectBaseModelSchema.nullable(),
100
- defaultDestinationId: IdSchema.nullable(),
101
- trainingSetup: ModelProjectTrainingSetupSchema,
102
- hosted: HostedModelProjectLinkSchema.nullable().default(null),
103
- tasksetSyncs: z.array(ModelProjectTasksetSyncSchema).max(1e4).default([]),
104
- createdAt: TimestampSchema,
105
- updatedAt: TimestampSchema
106
- }).strict();
107
- var ModelProjectEditableSchema = ModelProjectSchema.pick({
108
- id: true,
109
- profileId: true,
110
- name: true,
111
- objective: true,
112
- defaultBaseModel: true,
113
- defaultDestinationId: true,
114
- trainingSetup: true
115
- });
116
- var ModelProjectSaveRequestSchema = z.object({
117
- schemaVersion: z.literal("openpond.modelProjectSave.v1"),
118
- operationId: IdSchema,
119
- expectedRevision: z.number().int().nonnegative(),
120
- project: ModelProjectEditableSchema
121
- }).strict();
122
- var ModelProjectConfigurationCheckSchema = z.object({
123
- schemaVersion: z.literal("openpond.modelProjectConfigurationCheck.v1"),
124
- configurationHash: HashSchema,
125
- projectId: IdSchema,
126
- expectedRevision: z.number().int().nonnegative(),
127
- checkedAt: TimestampSchema,
128
- canSave: z.boolean(),
129
- deferred: z.array(z.enum(["base_model", "taskset"])).max(2),
130
- findings: z.array(z.object({
131
- code: IdSchema,
132
- severity: z.enum(["error", "warning"]),
133
- message: z.string().min(1).max(5e3),
134
- field: z.string().min(1).max(500).nullable()
135
- }).strict()).max(100)
136
- }).strict();
137
- var ModelProjectBaseModelCandidateSchema = z.object({
138
- id: IdSchema,
139
- name: z.string().min(1).max(500),
140
- available: z.boolean(),
141
- preference: ModelProjectBaseModelSchema
142
- }).strict();
143
- var HostedModelProjectSyncSchema = z.object({
144
- schemaVersion: z.literal("openpond.hostedModelProjectSync.v2"),
145
- portableProjectId: IdSchema,
146
- name: z.string().trim().min(1).max(200),
147
- objective: z.string().trim().max(5e3).nullable(),
148
- defaultBaseModel: ModelProjectBaseModelSchema.nullable(),
149
- defaultDestinationId: IdSchema.nullable(),
150
- trainingSetup: HostedModelProjectTrainingSetupSchema,
151
- sourceRevision: z.number().int().positive(),
152
- sourceUpdatedAt: TimestampSchema,
153
- expectedEtag: HashSchema.nullable().default(null)
154
- }).strict();
155
- var HostedModelProjectSummarySchema = z.object({
156
- id: IdSchema,
157
- teamId: IdSchema,
158
- portableProjectId: IdSchema,
159
- name: z.string().trim().min(1).max(200),
160
- objective: z.string().trim().max(5e3).nullable(),
161
- defaultBaseModel: ModelProjectBaseModelSchema.nullable(),
162
- defaultDestinationId: IdSchema.nullable(),
163
- trainingSetup: HostedModelProjectTrainingSetupSchema,
164
- sourceRevision: z.number().int().positive(),
165
- sourceUpdatedAt: TimestampSchema,
166
- revision: z.number().int().positive(),
167
- etag: HashSchema,
168
- createdAt: TimestampSchema,
169
- updatedAt: TimestampSchema
170
- }).strict();
171
- var ModelProjectResourceSummarySchema = z.object({
172
- kind: z.enum([
173
- "taskset_release",
174
- "harness_release",
175
- "dataset_release",
176
- "evidence_set",
177
- "model_version",
178
- "reward_model_version",
179
- "evaluation_receipt"
180
- ]),
181
- ref: ModelProjectImmutableRefSchema,
182
- role: z.string().trim().min(1).max(200).nullable().default(null),
183
- updatedAt: TimestampSchema
184
- }).strict();
185
- var HostedModelProjectDetailSchema = z.object({
186
- project: HostedModelProjectSummarySchema,
187
- resources: z.array(ModelProjectResourceSummarySchema).max(1e4),
188
- jobCount: z.number().int().nonnegative(),
189
- latestJobIds: z.array(IdSchema).max(100)
190
- }).strict();
191
- var ModelProjectApiErrorSchema = z.object({
192
- schemaVersion: z.literal("openpond.modelProjectApiError.v2"),
193
- code: z.string().trim().min(1).max(200),
194
- message: z.string().trim().min(1).max(5e3),
195
- retryable: z.boolean().default(false),
196
- requestId: z.string().trim().min(1).max(500).nullable().default(null),
197
- details: z.record(z.string(), z.unknown()).default({})
198
- }).strict();
199
-
200
- // src/model-starters.ts
201
- import { z as z5 } from "zod";
202
- import { TasksetReleaseSchema as TasksetReleaseSchema2, assertTasksetRelease as assertTasksetRelease2 } from "@openpond/evals/tasksets";
203
- import { LearningTextAssetSchema as LearningTextAssetSchema2, TaskDefinitionSchema as TaskDefinitionSchema2, learningRef as learningRef3, sameLearningRef as sameLearningRef2, sealLearningContent as sealLearningContent4 } from "@openpond/evals/learning";
204
- import { RewardBindingSchema as RewardBindingSchema2, RewardReleaseSchema as RewardReleaseSchema2, compileBoundGraders as compileBoundGraders2 } from "@openpond/evals/rewards";
205
- import { assertBoundedTaskJson as assertBoundedTaskJson3, validateTaskValue as validateTaskValue2 } from "@openpond/evals/task-schema";
206
-
207
- // src/model-starter-execution.ts
208
- import { z as z2 } from "zod";
209
- import { EnvironmentReleaseSchema, VerifierSetReleaseSchema } from "@openpond/evals";
210
- import { JavaScriptEnvironmentDefinitionSchema, assertJavaScriptEnvironmentDefinition } from "@openpond/evals/javascript-environment";
211
- import { createLearningTextAsset, learningRef, sealLearningContent, verifyLearningTextAsset } from "@openpond/evals/learning";
212
- import { assertBoundedTaskJson as assertBoundedTaskJson2 } from "@openpond/evals/task-schema";
213
- var HashSchema2 = z2.string().regex(/^[a-f0-9]{64}$/);
214
- var ModelStarterEnvironmentAttemptSchema = z2.object({
215
- schemaVersion: z2.literal("openpond.javascriptEnvironmentAttempt.v1"),
216
- taskId: z2.string(),
217
- status: z2.enum(["completed", "budget_exhausted", "cancelled", "timed_out", "policy_failure", "environment_failure"]),
218
- output: z2.string().nullable(),
219
- collected: z2.boolean(),
220
- environmentCleanupComplete: z2.boolean(),
221
- snapshot: z2.object({ definition: ModelProjectVersionedRefSchema, inputHash: HashSchema2, seed: z2.number().int(), initialStateHash: HashSchema2, finalStateHash: HashSchema2, state: z2.record(z2.string(), z2.unknown()), events: z2.array(z2.record(z2.string(), z2.unknown())) }).strict().nullable(),
222
- messages: z2.array(z2.unknown()),
223
- error: z2.string().nullable(),
224
- contentHash: HashSchema2
225
- }).strict();
226
- var ModelStarterExecutionSchema = z2.object({
227
- environment: EnvironmentReleaseSchema,
228
- verifierSet: VerifierSetReleaseSchema,
229
- javascript: JavaScriptEnvironmentDefinitionSchema
230
- }).strict();
231
- var ModelStarterToolFixtureScriptSchema = z2.object({
232
- actions: z2.array(z2.object({ name: z2.string().min(1).max(64), arguments: z2.record(z2.string(), z2.unknown()) }).strict()).max(1e3)
233
- }).strict();
234
- function equal(left, right) {
235
- return sealLearningContent({ value: left }).contentHash === sealLearningContent({ value: right }).contentHash;
236
- }
237
- function assertExecutionIntegrity(execution) {
238
- assertJavaScriptEnvironmentDefinition(execution.javascript);
239
- for (const resource of [execution.environment, execution.verifierSet]) {
240
- const { contentHash, ...content } = resource;
241
- if (sealLearningContent(content).contentHash !== contentHash) throw new Error(`Starter execution resource integrity failed: ${resource.id}.`);
242
- }
243
- if (!equal(execution.environment.metadata.javascriptEnvironment, learningRef(execution.javascript))) throw new Error("Starter execution resources differ from its declared task context.");
244
- }
245
- function validateModelStarterExecution(execution, taskset, assets) {
246
- if (!execution) {
247
- if (taskset.environment.entrypoint === "openpond.javascript-environment.v1") throw new Error("Starter JavaScript execution resources are missing.");
248
- return;
249
- }
250
- const { environment, verifierSet, javascript } = execution;
251
- assertExecutionIntegrity(execution);
252
- if (!equal(taskset.environmentRelease, { id: environment.id, contentHash: environment.contentHash }) || !equal(taskset.verifierSetRelease, { id: verifierSet.id, contentHash: verifierSet.contentHash }) || !equal(environment.contract, taskset.environment) || !equal(verifierSet.graders, taskset.graders) || !equal(taskset.tools, javascript.tools) || !equal(environment.metadata.javascriptEnvironment, learningRef(javascript))) {
253
- throw new Error("Starter execution resources differ from its declared task context.");
254
- }
255
- const contract = environment.contract;
256
- if (contract.entrypoint !== "openpond.javascript-environment.v1" || contract.kind !== "agent" || !contract.stateful || !contract.deterministicSeeds || contract.networkPolicy !== "none" || new Set(contract.lifecycle).size !== 5 || taskset.capabilities.length || taskset.policy.connectedAppScopes.length) {
257
- throw new Error("Starter JavaScript environment declares unsupported host capabilities.");
258
- }
259
- for (const reference of [javascript.module, environment.actionSchemaRef, environment.observationSchemaRef, environment.stateSchemaRef]) {
260
- if (!reference) continue;
261
- const asset = assets.find((asset2) => asset2.id === reference.id);
262
- if (!asset) throw new Error(`Starter environment asset is missing: ${reference.id}.`);
263
- verifyLearningTextAsset(asset, reference);
264
- }
265
- for (const task of taskset.tasks) {
266
- const asset = assets.find((asset2) => asset2.id === task.privilegedContextRef);
267
- if (!asset || asset.asset.visibility !== "host_private" || asset.asset.mediaType !== "application/json") {
268
- throw new Error(`Starter private initial state is missing: ${task.id}.`);
269
- }
270
- const state = JSON.parse(verifyLearningTextAsset(asset, asset.asset));
271
- if (!state || typeof state !== "object" || Array.isArray(state)) throw new Error(`Starter initial state must be a JSON object: ${task.id}.`);
272
- assertBoundedTaskJson2(state, javascript.maxStateBytes);
273
- }
274
- }
275
-
276
- // src/model-taskset-derivation.ts
277
- import { z as z4 } from "zod";
278
- import { createEnvironmentRelease, createVerifierSetRelease, verifyEnvironmentRelease as verifyEnvironmentRelease2, verifyVerifierSetRelease as verifyVerifierSetRelease2 } from "@openpond/evals";
279
- import { LearningTextAssetSchema, TaskDefinitionSchema, assertLearningContentHash, learningRef as learningRef2, sameLearningRef, sealLearningContent as sealLearningContent3, verifyLearningTextAsset as verifyLearningTextAsset3 } from "@openpond/evals/learning";
280
- import { RewardBindingSchema, RewardReleaseSchema, compileBoundGraders } from "@openpond/evals/rewards";
281
- import { TasksetReleaseSchema, assertTasksetRelease } from "@openpond/evals/tasksets";
282
- import { validateTaskValue } from "@openpond/evals/task-schema";
283
-
284
- // src/model-taskset-resources.ts
285
- import { z as z3 } from "zod";
286
- import { EnvironmentReleaseSchema as EnvironmentReleaseSchema2, VerifierSetReleaseSchema as VerifierSetReleaseSchema2, verifyEnvironmentRelease, verifyVerifierSetRelease } from "@openpond/evals";
287
- import { createLearningTextAsset as createLearningTextAsset2, sealLearningContent as sealLearningContent2, verifyLearningTextAsset as verifyLearningTextAsset2 } from "@openpond/evals/learning";
288
- var ModelTasksetExecutionResourcesSchema = z3.object({ environment: EnvironmentReleaseSchema2, verifierSet: VerifierSetReleaseSchema2 }).strict();
289
-
290
- // src/model-taskset-derivation.ts
291
- var OwnerSchema = z4.object({ scopeId: z4.string().trim().min(1).max(500), modelId: z4.string().trim().min(1).max(500) }).strict();
292
- var ModelTasksetDerivationSchema = z4.object({
293
- schemaVersion: z4.literal("openpond.modelTasksetDerivation.v1"),
294
- owner: OwnerSchema,
295
- root: ModelProjectVersionedRefSchema,
296
- parent: ModelProjectVersionedRefSchema
297
- }).strict();
298
- var ModelTasksetPackageSchema = z4.object({
299
- taskset: TasksetReleaseSchema,
300
- taskDefinition: TaskDefinitionSchema,
301
- rewardBinding: RewardBindingSchema,
302
- rewards: z4.array(RewardReleaseSchema).min(1).max(100),
303
- assets: z4.array(LearningTextAssetSchema).max(1e3),
304
- executionResources: ModelTasksetExecutionResourcesSchema.optional(),
305
- execution: ModelStarterExecutionSchema.optional()
306
- }).strict();
307
-
308
- // src/model-starters.ts
309
- var IdSchema2 = z5.string().trim().min(1).max(500);
310
- var RefSchema = ModelProjectVersionedRefSchema;
311
- var ModelStarterContentSchema = z5.object({
312
- schemaVersion: z5.literal("openpond.modelStarter.v1"),
313
- id: IdSchema2,
314
- revision: z5.number().int().positive(),
315
- name: z5.string().trim().min(1).max(200),
316
- description: z5.string().trim().min(1).max(2e3),
317
- category: z5.enum(["extraction", "support", "operations", "knowledge", "coding", "writing", "classification"]),
318
- taskset: RefSchema,
319
- taskDefinition: RefSchema,
320
- rewardBinding: RefSchema,
321
- rewards: z5.array(RefSchema).min(1).max(100),
322
- assets: z5.array(RefSchema).max(1e3),
323
- previewTaskIds: z5.array(IdSchema2).min(1).max(8),
324
- startingModel: ModelProjectBaseModelSchema,
325
- supportedMethods: z5.array(ModelProjectTrainingMethodSchema).min(1).max(8),
326
- defaultMethod: ModelProjectTrainingMethodSchema,
327
- provenance: z5.object({ author: z5.string().min(1).max(200), license: z5.string().min(1).max(200), sourceDescription: z5.string().min(1).max(2e3) }).strict(),
328
- // These are references to real results. Package publication does not create
329
- // evidence, qualify a starter, or enable continuous learning.
330
- evidence: z5.object({ verifierFixtures: RefSchema.nullable(), baseline: RefSchema.nullable(), training: RefSchema.nullable(), evaluation: RefSchema.nullable() }).strict()
331
- }).strict().superRefine((starter, context) => {
332
- if (!starter.supportedMethods.includes(starter.defaultMethod)) context.addIssue({ code: "custom", path: ["defaultMethod"], message: "The default method must be supported by the package." });
333
- for (const field of ["rewards", "assets"]) {
334
- 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." });
335
- }
336
- if (new Set(starter.previewTaskIds).size !== starter.previewTaskIds.length) context.addIssue({ code: "custom", path: ["previewTaskIds"], message: "Preview tasks must be unique." });
337
- });
338
- var ModelStarterSchema = ModelStarterContentSchema.safeExtend({ contentHash: z5.string().regex(/^[a-f0-9]{64}$/) });
339
- var ResolvedModelStarterSchema = z5.object({
340
- starter: ModelStarterSchema,
341
- taskset: TasksetReleaseSchema2,
342
- taskDefinition: TaskDefinitionSchema2,
343
- rewardBinding: RewardBindingSchema2,
344
- rewards: z5.array(RewardReleaseSchema2).min(1).max(100),
345
- assets: z5.array(LearningTextAssetSchema2).max(1e3),
346
- execution: ModelStarterExecutionSchema.optional()
347
- }).strict();
348
- var ModelStarterPrivacyReviewSchema = z5.object({
349
- schemaVersion: z5.literal("openpond.modelStarterPrivacyReview.v1"),
350
- disposition: z5.literal("synthetic_only"),
351
- reviewedBy: z5.string().trim().min(1).max(500),
352
- reviewedAt: z5.iso.datetime(),
353
- reviewedContentHash: z5.string().regex(/^[a-f0-9]{64}$/),
354
- note: z5.string().trim().min(1).max(2e3)
355
- }).strict();
356
- function modelStarterPrivacyContentHash(value) {
357
- const { contentHash: _starterHash, ...starter } = value.starter;
358
- const { contentHash: _tasksetHash, ...taskset } = value.taskset;
359
- const { contentHash: _referenceHash, ...tasksetRef } = starter.taskset;
360
- const metadata = { ...taskset.metadata };
361
- const authoring = metadata.starterAuthoring;
362
- if (authoring && typeof authoring === "object" && !Array.isArray(authoring)) {
363
- const { privacyReview: _review, ...content } = authoring;
364
- metadata.starterAuthoring = content;
365
- }
366
- return sealLearningContent4({ ...value, starter: { ...starter, taskset: tasksetRef }, taskset: { ...taskset, metadata } }).contentHash;
367
- }
368
- var ModelStarterCreationIntentSchema = z5.object({
369
- profileId: IdSchema2,
370
- modelId: IdSchema2,
371
- name: z5.string().trim().min(1).max(200),
372
- starter: RefSchema,
373
- startingModel: ModelProjectBaseModelSchema,
374
- method: ModelProjectTrainingMethodSchema,
375
- rewardBindingRef: RefSchema.nullable().optional()
376
- }).strict();
377
- var ModelStarterCreationRequestSchema = ModelStarterCreationIntentSchema.extend({
378
- schemaVersion: z5.literal("openpond.modelStarterCreation.v1"),
379
- operationId: IdSchema2
380
- }).strict();
381
- function validateResolvedModelStarter(value) {
382
- assertBoundedTaskJson3(value, 16 * 1024 * 1024);
383
- const resolved = ResolvedModelStarterSchema.parse(value);
384
- const { starter, taskset, taskDefinition, rewardBinding, rewards, assets } = resolved;
385
- const authoring = taskset.metadata.starterAuthoring;
386
- if (authoring && typeof authoring === "object" && !Array.isArray(authoring) && "privacyReview" in authoring) {
387
- const review = ModelStarterPrivacyReviewSchema.parse(authoring.privacyReview);
388
- if (review.reviewedContentHash !== modelStarterPrivacyContentHash(resolved)) throw new Error("Starter privacy review differs from the published contents.");
389
- }
390
- const resources = [starter, taskset, taskDefinition, rewardBinding, ...rewards, ...assets];
391
- for (const resource of resources) {
392
- const { contentHash, ...content } = resource;
393
- if (sealLearningContent4(content).contentHash !== contentHash) throw new Error(`Starter resource integrity failed: ${resource.id}.`);
394
- }
395
- assertTasksetRelease2(taskset);
396
- validateModelStarterExecution(resolved.execution, taskset, assets);
397
- function exact(expected, resource) {
398
- if (!sameLearningRef2(expected, learningRef3(resource))) throw new Error(`Starter dependency mismatch: ${expected.id}.`);
399
- }
400
- exact(starter.taskset, taskset);
401
- exact(starter.taskDefinition, taskDefinition);
402
- exact(starter.rewardBinding, rewardBinding);
403
- exact(taskDefinition.rewardBinding, rewardBinding);
404
- if (rewardBinding.recipeRef) throw new Error("Starter binding recipes must be resolved into a standalone binding before publication.");
405
- const { policy, environment, environmentRelease, tools, capabilities, verifierSetRelease } = taskset;
406
- const execution = { policy, environment, ...environmentRelease ? { environmentRelease } : {}, tools, capabilities, ...verifierSetRelease ? { verifierSetRelease } : {} };
407
- if (sealLearningContent4(execution).contentHash !== sealLearningContent4(taskDefinition.execution).contentHash) throw new Error("Starter execution context differs from its task format.");
408
- if (sealLearningContent4({ graders: taskset.graders }).contentHash !== sealLearningContent4({ graders: compileBoundGraders2(rewardBinding, rewards) }).contentHash) throw new Error("Starter executable graders differ from its Reward binding.");
409
- for (const [references, values] of [[starter.rewards, rewards], [starter.assets, assets]]) {
410
- if (references.length !== values.length || new Set(values.map((resource) => resource.id)).size !== values.length) throw new Error("Starter dependency inventory mismatch.");
411
- for (const ref of references) {
412
- const resource = values.find((value2) => value2.id === ref.id);
413
- if (!resource) throw new Error(`Starter dependency is missing: ${ref.id}.`);
414
- exact(ref, resource);
415
- }
416
- }
417
- for (const source of rewardBinding.sources) {
418
- const reward = rewards.find((reward2) => reward2.id === source.reward.id);
419
- if (!reward) throw new Error(`Starter Reward is missing: ${source.reward.id}.`);
420
- exact(source.reward, reward);
421
- }
422
- for (const reward of rewards) {
423
- const implementation = reward.implementation;
424
- const references = [
425
- ...reward.assets,
426
- ..."verifierRef" in implementation ? [implementation.verifierRef] : [],
427
- ..."rubricRef" in implementation ? [implementation.rubricRef] : [],
428
- ..."inputContract" in implementation ? [implementation.inputContract] : []
429
- ];
430
- for (const ref of references) {
431
- const asset = assets.find((asset2) => asset2.id === ref.id);
432
- if (!asset || sealLearningContent4(asset.asset).contentHash !== sealLearningContent4(ref).contentHash) throw new Error(`Starter Reward source is missing or changed: ${ref.id}.`);
433
- if (ref.visibility === "policy") throw new Error(`Starter Reward source must remain private to its evaluator: ${ref.id}.`);
434
- }
435
- }
436
- if (new Set(taskset.tasks.map((task) => task.id)).size !== taskset.tasks.length) throw new Error("Starter task identities must be unique.");
437
- const inputSplits = /* @__PURE__ */ new Map();
438
- for (const task of taskset.tasks) {
439
- if (task.policyVisibleContext.instructions !== taskDefinition.instructions) throw new Error(`Starter task does not carry its declared model instructions: ${task.id}.`);
440
- const inputHash = sealLearningContent4({ input: task.input, context: task.policyVisibleContext }).contentHash;
441
- const priorSplit = inputSplits.get(inputHash);
442
- if (priorSplit && priorSplit !== task.split) throw new Error("Starter policy input appears in multiple splits.");
443
- inputSplits.set(inputHash, task.split);
444
- if (!validateTaskValue2(taskDefinition.inputSchema, task.input).valid) throw new Error(`Starter task input does not match its format: ${task.id}.`);
445
- if (task.expectedOutput !== null && !validateTaskValue2(taskDefinition.outputSchema, task.expectedOutput).valid) throw new Error(`Starter expected output does not match its format: ${task.id}.`);
446
- }
447
- for (const id of starter.previewTaskIds) {
448
- const task = taskset.tasks.find((task2) => task2.id === id);
449
- if (!task || task.split === "frozen_eval") throw new Error(`Starter preview task is unavailable: ${id}.`);
450
- }
451
- return resolved;
452
- }
1
+ import {
2
+ ModelStarterSchema,
3
+ validateResolvedModelStarter
4
+ } from "./chunk-747CMU2Y.js";
5
+ import "./chunk-65D4C7HP.js";
6
+ import {
7
+ ModelProjectVersionedRefSchema
8
+ } from "./chunk-5PRP457R.js";
453
9
 
454
10
  // src/model-starter-catalog.ts
455
- var ModelStarterCatalogQuerySchema = z6.object({
456
- afterId: z6.string().trim().min(1).max(500).optional(),
457
- limit: z6.number().int().min(1).max(100).default(30)
11
+ import { z } from "zod";
12
+ var ModelStarterCatalogQuerySchema = z.object({
13
+ afterId: z.string().trim().min(1).max(500).optional(),
14
+ limit: z.number().int().min(1).max(100).default(30)
458
15
  }).strict();
459
16
  var ModelStarterCatalogItemSchema = ModelStarterSchema.extend({
460
- rewardSummary: z6.array(z6.object({ name: z6.string().min(1).max(500), kind: z6.enum(["custom_verifier", "model_judge", "human", "learned_model", "content", "schema", "artifact", "runtime_event", "state"]) }).strict()).max(100).optional()
17
+ rewardSummary: z.array(z.object({ name: z.string().min(1).max(500), kind: z.enum(["custom_verifier", "model_judge", "human", "learned_model", "content", "schema", "artifact", "runtime_event", "state"]) }).strict()).max(100).optional()
461
18
  });
462
- var ModelStarterCatalogPageSchema = z6.object({
463
- items: z6.array(ModelStarterCatalogItemSchema).max(100),
464
- nextCursor: z6.string().min(1).max(500).nullable()
19
+ var ModelStarterCatalogPageSchema = z.object({
20
+ items: z.array(ModelStarterCatalogItemSchema).max(100),
21
+ nextCursor: z.string().min(1).max(500).nullable()
465
22
  }).strict();
466
- var ModelStarterCatalogErrorSchema = z6.object({ code: z6.string().min(1).max(200), message: z6.string().min(1).max(5e3) }).strict();
23
+ var ModelStarterCatalogErrorSchema = z.object({ code: z.string().min(1).max(200), message: z.string().min(1).max(5e3) }).strict();
467
24
  var OpenPondModelStarterCatalogError = class extends Error {
468
25
  constructor(status, code, message) {
469
26
  super(message);