openpond-sdk 0.12.2 → 0.12.3
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/dist/advanced-refiner-evaluations.js +5 -5
- package/dist/candidate-evaluations.js +4 -4
- package/dist/{chunk-VSRTJDVB.js → chunk-36WJTS5V.js} +3 -3
- package/dist/{chunk-O5ARJVT5.js → chunk-77N3QEIL.js} +2 -2
- package/dist/{chunk-WNH4DOEC.js → chunk-BFR3VC25.js} +16 -285
- package/dist/chunk-BFR3VC25.js.map +7 -0
- package/dist/{chunk-DBRRQASP.js → chunk-BSK3VLM3.js} +2 -2
- package/dist/{chunk-B7VYE7YQ.js → chunk-CTVKI3BV.js} +2 -2
- package/dist/{chunk-7AZDNZP6.js → chunk-CWXM57QR.js} +350 -87
- package/dist/chunk-CWXM57QR.js.map +7 -0
- package/dist/chunk-FY7NHCEH.js +255 -0
- package/dist/chunk-FY7NHCEH.js.map +7 -0
- package/dist/{chunk-YSKUXQ2N.js → chunk-G53MA5XX.js} +3 -3
- package/dist/{chunk-AV5JV26B.js → chunk-G6Y6CQYV.js} +2 -2
- package/dist/{chunk-ENLQCKY6.js → chunk-K5WRVSOL.js} +5 -5
- package/dist/{chunk-OEPYLZXK.js → chunk-MLPPSCDQ.js} +2 -2
- package/dist/{chunk-7GYXC2AI.js → chunk-QEIT5VXJ.js} +2 -2
- package/dist/{chunk-L5PQPAU6.js → chunk-QTJQIHDZ.js} +5 -2
- package/dist/{chunk-L5PQPAU6.js.map → chunk-QTJQIHDZ.js.map} +2 -2
- package/dist/{chunk-YVFERCUC.js → chunk-TMUAKJWX.js} +71 -2
- package/dist/chunk-TMUAKJWX.js.map +7 -0
- package/dist/{chunk-D4WTE6ZA.js → chunk-TSMGMA6R.js} +2 -2
- package/dist/{chunk-VOL3WES2.js → chunk-UPS52OPZ.js} +10 -165
- package/dist/chunk-UPS52OPZ.js.map +7 -0
- package/dist/{chunk-MLFKQ7E7.js → chunk-VY5AFE7A.js} +2 -2
- package/dist/{chunk-WVISXXIL.js → chunk-XYQD4LDI.js} +2 -2
- package/dist/{chunk-DG5CRENU.js → chunk-YUKV7RCD.js} +2 -2
- package/dist/{chunk-7WUJBFCH.js → chunk-ZJ3H3VS7.js} +18 -1
- package/dist/chunk-ZJ3H3VS7.js.map +7 -0
- package/dist/connected-evidence.js +10 -10
- package/dist/dataset-workspaces.js +13 -12
- package/dist/dataset-workspaces.js.map +1 -1
- package/dist/experiment-evaluation-schedules.js +13 -13
- package/dist/experiment-improvements.js +5 -5
- package/dist/experiments.js +17 -13
- package/dist/index.js +19 -19
- package/dist/model-starter-catalog.js +5 -5
- package/dist/model-starters.js +5 -5
- package/dist/model-taskset-runs.js +1 -1
- package/dist/post-training.js +4 -4
- package/dist/taskset-drafts.js +16 -16
- package/dist/taskset-packages.js +14 -14
- package/dist/training-bundle.js +161 -25
- package/dist/training-bundle.js.map +4 -4
- package/dist/training.js +11 -5
- package/dist/types/packages/sdk/src/candidate-evaluation-client.d.ts +9 -0
- package/dist/types/packages/sdk/src/candidate-evaluation-client.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/candidate-evaluations.d.ts +6 -0
- package/dist/types/packages/sdk/src/candidate-evaluations.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/experiment-client.d.ts +33 -0
- package/dist/types/packages/sdk/src/experiment-client.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/experiment-contracts.d.ts +12 -0
- package/dist/types/packages/sdk/src/experiment-contracts.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/experiment-evaluation-schedules.d.ts +21 -0
- package/dist/types/packages/sdk/src/experiment-evaluation-schedules.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/experiment-run-contracts.d.ts +3 -0
- package/dist/types/packages/sdk/src/experiment-run-contracts.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/experiment-run-details.d.ts +15 -0
- package/dist/types/packages/sdk/src/experiment-run-details.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/harness-experiment-policy.d.ts +17 -0
- package/dist/types/packages/sdk/src/harness-experiment-policy.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/managed-training-preparation.d.ts +3 -1
- package/dist/types/packages/sdk/src/managed-training-preparation.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/model-taskset-runs-contracts.d.ts +12 -0
- package/dist/types/packages/sdk/src/model-taskset-runs-contracts.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/model-taskset-runs.d.ts +12 -0
- package/dist/types/packages/sdk/src/model-taskset-runs.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/post-training.d.ts +15 -0
- package/dist/types/packages/sdk/src/post-training.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/training-bundle-contracts.d.ts +4 -0
- package/dist/types/packages/sdk/src/training-bundle-contracts.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/training-bundle.d.ts +4 -0
- package/dist/types/packages/sdk/src/training-bundle.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/training-qualification-preparation.d.ts +364 -0
- package/dist/types/packages/sdk/src/training-qualification-preparation.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/training.d.ts +161 -0
- package/dist/types/packages/sdk/src/training.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/chunk-7AZDNZP6.js.map +0 -7
- package/dist/chunk-7WUJBFCH.js.map +0 -7
- package/dist/chunk-PGBFI5HC.js +0 -98
- package/dist/chunk-PGBFI5HC.js.map +0 -7
- package/dist/chunk-VOL3WES2.js.map +0 -7
- package/dist/chunk-WNH4DOEC.js.map +0 -7
- package/dist/chunk-YVFERCUC.js.map +0 -7
- /package/dist/{chunk-VSRTJDVB.js.map → chunk-36WJTS5V.js.map} +0 -0
- /package/dist/{chunk-O5ARJVT5.js.map → chunk-77N3QEIL.js.map} +0 -0
- /package/dist/{chunk-DBRRQASP.js.map → chunk-BSK3VLM3.js.map} +0 -0
- /package/dist/{chunk-B7VYE7YQ.js.map → chunk-CTVKI3BV.js.map} +0 -0
- /package/dist/{chunk-YSKUXQ2N.js.map → chunk-G53MA5XX.js.map} +0 -0
- /package/dist/{chunk-AV5JV26B.js.map → chunk-G6Y6CQYV.js.map} +0 -0
- /package/dist/{chunk-ENLQCKY6.js.map → chunk-K5WRVSOL.js.map} +0 -0
- /package/dist/{chunk-OEPYLZXK.js.map → chunk-MLPPSCDQ.js.map} +0 -0
- /package/dist/{chunk-7GYXC2AI.js.map → chunk-QEIT5VXJ.js.map} +0 -0
- /package/dist/{chunk-D4WTE6ZA.js.map → chunk-TSMGMA6R.js.map} +0 -0
- /package/dist/{chunk-MLFKQ7E7.js.map → chunk-VY5AFE7A.js.map} +0 -0
- /package/dist/{chunk-WVISXXIL.js.map → chunk-XYQD4LDI.js.map} +0 -0
- /package/dist/{chunk-DG5CRENU.js.map → chunk-YUKV7RCD.js.map} +0 -0
|
@@ -12,6 +12,9 @@ import {
|
|
|
12
12
|
TasksetPurposeSchema,
|
|
13
13
|
TasksetSourceRefSchema
|
|
14
14
|
} from "./chunk-FHCSDXIA.js";
|
|
15
|
+
import {
|
|
16
|
+
ModelTasksetDraftPreparationSchema
|
|
17
|
+
} from "./chunk-2U54EOXJ.js";
|
|
15
18
|
import {
|
|
16
19
|
ChatModelRefSchema
|
|
17
20
|
} from "./chunk-KAE7AMYE.js";
|
|
@@ -20,14 +23,149 @@ import {
|
|
|
20
23
|
contentHash
|
|
21
24
|
} from "./chunk-COPVBJPL.js";
|
|
22
25
|
|
|
23
|
-
// src/taskset-
|
|
26
|
+
// src/taskset-draft-document.ts
|
|
24
27
|
import { z } from "zod";
|
|
25
28
|
import { TasksetMetricPolicySchema } from "@openpond/evals/metrics";
|
|
26
29
|
var IdSchema = z.string().trim().min(1).max(240);
|
|
27
30
|
var TimestampSchema = z.string().trim().min(1);
|
|
28
31
|
var HashSchema = z.string().trim().min(8).max(256);
|
|
32
|
+
var CodeIdentifierSchema = z.string().trim().regex(/^[A-Za-z_$][A-Za-z0-9_$]*$/);
|
|
29
33
|
var MetadataSchema = z.record(z.string(), z.unknown()).default({});
|
|
30
|
-
|
|
34
|
+
function safeRelativeFilePath(value) {
|
|
35
|
+
const normalized = value.trim().replaceAll("\\", "/");
|
|
36
|
+
if (!normalized || normalized.startsWith("/") || normalized === "." || normalized === "..") {
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
return !normalized.split("/").some(
|
|
40
|
+
(segment) => !segment || segment === "." || segment === ".."
|
|
41
|
+
);
|
|
42
|
+
}
|
|
43
|
+
var TaskDataDraftSchema = TaskDataRecordSchema.extend({
|
|
44
|
+
sourceRefs: z.array(IdSchema).max(100).default([])
|
|
45
|
+
});
|
|
46
|
+
var TasksetDraftStatusSchema = z.enum([
|
|
47
|
+
"draft",
|
|
48
|
+
"validating",
|
|
49
|
+
"needs_review",
|
|
50
|
+
"published"
|
|
51
|
+
]);
|
|
52
|
+
var TasksetDraftReviewPolicySchema = z.object({
|
|
53
|
+
enabled: z.boolean(),
|
|
54
|
+
candidateCount: z.number().int().min(2).max(4),
|
|
55
|
+
minimumSamples: z.number().int().min(1).max(1e4).default(100),
|
|
56
|
+
allowTies: z.boolean(),
|
|
57
|
+
allowRejectAll: z.boolean(),
|
|
58
|
+
rubric: z.string().trim().max(5e4),
|
|
59
|
+
criteria: z.array(z.object({
|
|
60
|
+
id: IdSchema,
|
|
61
|
+
label: z.string().trim().min(1).max(500),
|
|
62
|
+
description: z.string().trim().max(1e4),
|
|
63
|
+
weight: z.number().nonnegative().max(1e3)
|
|
64
|
+
})).max(100)
|
|
65
|
+
});
|
|
66
|
+
var TasksetDraftOutputContractSchema = z.object({
|
|
67
|
+
mode: z.enum(["text", "structured_json", "artifacts"]),
|
|
68
|
+
jsonSchema: z.record(z.string(), z.unknown()).nullable(),
|
|
69
|
+
renderer: z.object({
|
|
70
|
+
module: z.string().trim().min(1).max(1e3).refine(safeRelativeFilePath, "Renderer modules must use a safe relative path."),
|
|
71
|
+
exportName: CodeIdentifierSchema,
|
|
72
|
+
configRef: z.string().trim().min(1).max(1e3).refine(safeRelativeFilePath, "Renderer configuration must use a safe relative path.").nullable().default(null)
|
|
73
|
+
}).nullable()
|
|
74
|
+
}).superRefine((output, context) => {
|
|
75
|
+
if (output.mode === "structured_json" && !output.jsonSchema) {
|
|
76
|
+
context.addIssue({
|
|
77
|
+
code: "custom",
|
|
78
|
+
message: "Structured JSON output requires a JSON Schema.",
|
|
79
|
+
path: ["jsonSchema"]
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
if (output.mode === "text" && output.renderer) {
|
|
83
|
+
context.addIssue({
|
|
84
|
+
code: "custom",
|
|
85
|
+
message: "Text output cannot configure an artifact renderer.",
|
|
86
|
+
path: ["renderer"]
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
var TasksetDraftSchema = z.object({
|
|
91
|
+
schemaVersion: z.literal("openpond.tasksetDraft.v1"),
|
|
92
|
+
id: IdSchema,
|
|
93
|
+
revision: z.number().int().positive(),
|
|
94
|
+
profileId: IdSchema,
|
|
95
|
+
modelScope: z.object({
|
|
96
|
+
modelId: IdSchema,
|
|
97
|
+
expectedModelRevision: z.number().int().positive(),
|
|
98
|
+
source: ModelTasksetDraftPreparationSchema.optional()
|
|
99
|
+
}).strict().nullable().default(null),
|
|
100
|
+
name: z.string().trim().max(500),
|
|
101
|
+
objective: z.string().trim().max(2e4),
|
|
102
|
+
purpose: TasksetPurposeSchema.default("general"),
|
|
103
|
+
benchmark: TasksetBenchmarkBindingSchema.nullable().default(null),
|
|
104
|
+
preferenceComparison: TasksetPreferenceComparisonBindingSchema.nullable().default(null),
|
|
105
|
+
status: TasksetDraftStatusSchema,
|
|
106
|
+
sourceRefs: z.array(TasksetSourceRefSchema).max(1e5).default([]),
|
|
107
|
+
datasetArtifact: DatasetArtifactManifestSchema.nullable().optional(),
|
|
108
|
+
policy: TaskPolicyBoundarySchema,
|
|
109
|
+
environment: TasksetEnvironmentContractSchema,
|
|
110
|
+
output: TasksetDraftOutputContractSchema.default({
|
|
111
|
+
mode: "text",
|
|
112
|
+
jsonSchema: null,
|
|
113
|
+
renderer: null
|
|
114
|
+
}),
|
|
115
|
+
capabilities: TasksetCapabilityManifestSchema,
|
|
116
|
+
metrics: TasksetMetricPolicySchema,
|
|
117
|
+
review: TasksetDraftReviewPolicySchema,
|
|
118
|
+
tasks: z.array(TaskDataDraftSchema).max(1e6).default([]),
|
|
119
|
+
graders: z.array(GraderSpecSchema).max(1e3).default([]),
|
|
120
|
+
graderFixtures: z.array(GraderFixtureSchema).max(1e5).default([]),
|
|
121
|
+
learningSignals: LearningSignalInventorySchema,
|
|
122
|
+
publishedTasksetRef: z.object({
|
|
123
|
+
id: IdSchema,
|
|
124
|
+
revision: z.number().int().positive(),
|
|
125
|
+
contentHash: HashSchema
|
|
126
|
+
}).nullable(),
|
|
127
|
+
createdAt: TimestampSchema,
|
|
128
|
+
updatedAt: TimestampSchema,
|
|
129
|
+
metadata: MetadataSchema
|
|
130
|
+
}).superRefine((draft, context) => {
|
|
131
|
+
if (draft.purpose === "benchmark" && !draft.benchmark) {
|
|
132
|
+
context.addIssue({
|
|
133
|
+
code: "custom",
|
|
134
|
+
message: "Benchmark drafts require an immutable benchmark binding.",
|
|
135
|
+
path: ["benchmark"]
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
if (draft.purpose !== "benchmark" && draft.benchmark) {
|
|
139
|
+
context.addIssue({
|
|
140
|
+
code: "custom",
|
|
141
|
+
message: "Only benchmark drafts may carry a benchmark binding.",
|
|
142
|
+
path: ["benchmark"]
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
if (draft.datasetArtifact && draft.tasks.length > 0) {
|
|
146
|
+
context.addIssue({
|
|
147
|
+
code: "custom",
|
|
148
|
+
message: "Artifact-backed drafts may not duplicate canonical rows inline.",
|
|
149
|
+
path: ["tasks"]
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
if (draft.status === "published" && !draft.publishedTasksetRef) {
|
|
153
|
+
context.addIssue({
|
|
154
|
+
code: "custom",
|
|
155
|
+
message: "Published drafts require an immutable Taskset reference.",
|
|
156
|
+
path: ["publishedTasksetRef"]
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
});
|
|
160
|
+
|
|
161
|
+
// src/taskset-authored-contracts.ts
|
|
162
|
+
import { z as z2 } from "zod";
|
|
163
|
+
import { TasksetMetricPolicySchema as TasksetMetricPolicySchema2 } from "@openpond/evals/metrics";
|
|
164
|
+
var IdSchema2 = z2.string().trim().min(1).max(240);
|
|
165
|
+
var TimestampSchema2 = z2.string().trim().min(1);
|
|
166
|
+
var HashSchema2 = z2.string().trim().min(8).max(256);
|
|
167
|
+
var MetadataSchema2 = z2.record(z2.string(), z2.unknown()).default({});
|
|
168
|
+
var NullableIdSchema = IdSchema2.nullable();
|
|
31
169
|
var TASKSET_WORK_TOOL_NAMES = [
|
|
32
170
|
"work_capabilities",
|
|
33
171
|
"work_environment",
|
|
@@ -42,7 +180,7 @@ var TASKSET_WORK_TOOL_NAMES = [
|
|
|
42
180
|
"work_save_output",
|
|
43
181
|
"work_stop"
|
|
44
182
|
];
|
|
45
|
-
var TasksetStatusSchema =
|
|
183
|
+
var TasksetStatusSchema = z2.enum([
|
|
46
184
|
"draft",
|
|
47
185
|
"awaiting_disclosure_approval",
|
|
48
186
|
"awaiting_materialization_approval",
|
|
@@ -55,51 +193,51 @@ var TasksetStatusSchema = z.enum([
|
|
|
55
193
|
"failed",
|
|
56
194
|
"archived"
|
|
57
195
|
]);
|
|
58
|
-
var DatasetBuildIntentSchema =
|
|
196
|
+
var DatasetBuildIntentSchema = z2.enum([
|
|
59
197
|
"demonstrations",
|
|
60
198
|
"preferences",
|
|
61
199
|
"verifiable_reward",
|
|
62
200
|
"rubric",
|
|
63
201
|
"discovery"
|
|
64
202
|
]);
|
|
65
|
-
var DatasetEvidenceTextSchema =
|
|
66
|
-
var DatasetBuildSpecificationSchema =
|
|
67
|
-
|
|
68
|
-
kind:
|
|
203
|
+
var DatasetEvidenceTextSchema = z2.string().trim().max(1e5);
|
|
204
|
+
var DatasetBuildSpecificationSchema = z2.discriminatedUnion("kind", [
|
|
205
|
+
z2.object({
|
|
206
|
+
kind: z2.literal("demonstrations"),
|
|
69
207
|
behavior: DatasetEvidenceTextSchema,
|
|
70
|
-
examples:
|
|
71
|
-
id:
|
|
208
|
+
examples: z2.array(z2.object({
|
|
209
|
+
id: IdSchema2,
|
|
72
210
|
prompt: DatasetEvidenceTextSchema,
|
|
73
211
|
response: DatasetEvidenceTextSchema
|
|
74
212
|
})).max(1e3).default([])
|
|
75
213
|
}),
|
|
76
|
-
|
|
77
|
-
kind:
|
|
214
|
+
z2.object({
|
|
215
|
+
kind: z2.literal("preferences"),
|
|
78
216
|
preference: DatasetEvidenceTextSchema,
|
|
79
|
-
pairs:
|
|
80
|
-
id:
|
|
217
|
+
pairs: z2.array(z2.object({
|
|
218
|
+
id: IdSchema2,
|
|
81
219
|
prompt: DatasetEvidenceTextSchema,
|
|
82
220
|
chosen: DatasetEvidenceTextSchema,
|
|
83
221
|
rejected: DatasetEvidenceTextSchema,
|
|
84
222
|
rationale: DatasetEvidenceTextSchema
|
|
85
223
|
})).max(1e3).default([])
|
|
86
224
|
}),
|
|
87
|
-
|
|
88
|
-
kind:
|
|
225
|
+
z2.object({
|
|
226
|
+
kind: z2.literal("verifiable_reward"),
|
|
89
227
|
task: DatasetEvidenceTextSchema,
|
|
90
|
-
rules:
|
|
91
|
-
id:
|
|
92
|
-
points:
|
|
228
|
+
rules: z2.array(z2.object({
|
|
229
|
+
id: IdSchema2,
|
|
230
|
+
points: z2.number().finite(),
|
|
93
231
|
condition: DatasetEvidenceTextSchema
|
|
94
232
|
})).max(1e3).default([]),
|
|
95
|
-
otherwisePoints:
|
|
233
|
+
otherwisePoints: z2.number().finite().default(0)
|
|
96
234
|
}),
|
|
97
|
-
|
|
98
|
-
kind:
|
|
235
|
+
z2.object({
|
|
236
|
+
kind: z2.literal("rubric"),
|
|
99
237
|
task: DatasetEvidenceTextSchema,
|
|
100
|
-
criteria:
|
|
101
|
-
id:
|
|
102
|
-
label:
|
|
238
|
+
criteria: z2.array(z2.object({
|
|
239
|
+
id: IdSchema2,
|
|
240
|
+
label: z2.string().trim().max(500),
|
|
103
241
|
description: DatasetEvidenceTextSchema
|
|
104
242
|
})).max(1e3).default([]),
|
|
105
243
|
positiveExample: DatasetEvidenceTextSchema,
|
|
@@ -107,21 +245,21 @@ var DatasetBuildSpecificationSchema = z.discriminatedUnion("kind", [
|
|
|
107
245
|
boundaryExample: DatasetEvidenceTextSchema
|
|
108
246
|
})
|
|
109
247
|
]);
|
|
110
|
-
var GeneratedTaskFileSchema =
|
|
111
|
-
path:
|
|
112
|
-
role:
|
|
113
|
-
content:
|
|
248
|
+
var GeneratedTaskFileSchema = z2.object({
|
|
249
|
+
path: z2.string().trim().min(1).max(1e3),
|
|
250
|
+
role: z2.enum(["environment", "verifier", "fixture"]),
|
|
251
|
+
content: z2.string().max(25e4)
|
|
114
252
|
});
|
|
115
|
-
var TrainingPathRecommendationSchema =
|
|
116
|
-
primaryMethod:
|
|
117
|
-
bootstrap:
|
|
118
|
-
method:
|
|
119
|
-
purpose:
|
|
120
|
-
demonstrationRefs:
|
|
121
|
-
limitations:
|
|
253
|
+
var TrainingPathRecommendationSchema = z2.object({
|
|
254
|
+
primaryMethod: z2.enum(["sft", "dpo", "grpo", "ppo", "sdft", "opsd", "sdpo"]),
|
|
255
|
+
bootstrap: z2.object({
|
|
256
|
+
method: z2.literal("sft"),
|
|
257
|
+
purpose: z2.literal("trajectory_bootstrap"),
|
|
258
|
+
demonstrationRefs: z2.array(IdSchema2).min(1).max(1e5),
|
|
259
|
+
limitations: z2.array(z2.string().trim().min(1).max(5e3)).min(1).max(100)
|
|
122
260
|
}).nullable()
|
|
123
261
|
});
|
|
124
|
-
var TrainingMethodReadinessReasonCodeSchema =
|
|
262
|
+
var TrainingMethodReadinessReasonCodeSchema = z2.enum([
|
|
125
263
|
"taskset_not_ready",
|
|
126
264
|
"demonstrations_missing",
|
|
127
265
|
"preference_pairs_missing",
|
|
@@ -132,81 +270,81 @@ var TrainingMethodReadinessReasonCodeSchema = z.enum([
|
|
|
132
270
|
"value_model_required",
|
|
133
271
|
"frozen_eval_missing"
|
|
134
272
|
]);
|
|
135
|
-
var TrainingMethodReadinessSchema =
|
|
136
|
-
method:
|
|
137
|
-
status:
|
|
138
|
-
reasonCodes:
|
|
139
|
-
reasons:
|
|
273
|
+
var TrainingMethodReadinessSchema = z2.object({
|
|
274
|
+
method: z2.enum(["sft", "dpo", "grpo", "ppo"]),
|
|
275
|
+
status: z2.enum(["recommended", "compatible", "needs_dataset_work"]),
|
|
276
|
+
reasonCodes: z2.array(TrainingMethodReadinessReasonCodeSchema).default([]),
|
|
277
|
+
reasons: z2.array(z2.string().trim().min(1).max(5e3)).default([])
|
|
140
278
|
});
|
|
141
|
-
var TasksetReadinessFindingSchema =
|
|
142
|
-
code:
|
|
143
|
-
message:
|
|
144
|
-
path:
|
|
279
|
+
var TasksetReadinessFindingSchema = z2.object({
|
|
280
|
+
code: IdSchema2,
|
|
281
|
+
message: z2.string().trim().min(1).max(5e3),
|
|
282
|
+
path: z2.string().trim().max(2e3).nullable()
|
|
145
283
|
});
|
|
146
|
-
var TasksetReadinessReportSchema =
|
|
147
|
-
schemaVersion:
|
|
148
|
-
tasksetId:
|
|
149
|
-
tasksetHash:
|
|
150
|
-
ready:
|
|
151
|
-
recommendedMethod:
|
|
284
|
+
var TasksetReadinessReportSchema = z2.object({
|
|
285
|
+
schemaVersion: z2.literal("openpond.tasksetReadiness.v1"),
|
|
286
|
+
tasksetId: IdSchema2,
|
|
287
|
+
tasksetHash: HashSchema2,
|
|
288
|
+
ready: z2.boolean(),
|
|
289
|
+
recommendedMethod: z2.enum(["none", "retrieval", "sft", "dpo", "grpo", "ppo", "sdft", "opd", "opsd", "sdpo"]),
|
|
152
290
|
trainingPath: TrainingPathRecommendationSchema.nullable().default(null),
|
|
153
|
-
methodReadiness:
|
|
154
|
-
compatibleDestinationClasses:
|
|
155
|
-
|
|
291
|
+
methodReadiness: z2.array(TrainingMethodReadinessSchema).default([]),
|
|
292
|
+
compatibleDestinationClasses: z2.array(
|
|
293
|
+
z2.enum(["export", "custom", "hosted_managed"])
|
|
156
294
|
),
|
|
157
|
-
blockers:
|
|
158
|
-
advisories:
|
|
159
|
-
warnings:
|
|
160
|
-
generatedAt:
|
|
295
|
+
blockers: z2.array(TasksetReadinessFindingSchema).default([]),
|
|
296
|
+
advisories: z2.array(TasksetReadinessFindingSchema).default([]),
|
|
297
|
+
warnings: z2.array(z2.string().trim().min(1).max(5e3)).default([]),
|
|
298
|
+
generatedAt: TimestampSchema2
|
|
161
299
|
});
|
|
162
|
-
var AuthoringRepairSchema =
|
|
163
|
-
var AuthoringProvenanceSchema =
|
|
164
|
-
schemaVersion:
|
|
300
|
+
var AuthoringRepairSchema = z2.object({ attempt: z2.number().int().positive(), summary: z2.string().trim().min(1).max(5e3), createdAt: TimestampSchema2 });
|
|
301
|
+
var AuthoringProvenanceSchema = z2.object({
|
|
302
|
+
schemaVersion: z2.literal("openpond.taskAuthoringProvenance.v1"),
|
|
165
303
|
model: ChatModelRefSchema.nullable(),
|
|
166
|
-
modelConfig:
|
|
167
|
-
skillHash:
|
|
168
|
-
promptTemplateVersion:
|
|
304
|
+
modelConfig: MetadataSchema2,
|
|
305
|
+
skillHash: HashSchema2,
|
|
306
|
+
promptTemplateVersion: z2.string().trim().min(1).max(200),
|
|
169
307
|
buildIntent: DatasetBuildIntentSchema.default("demonstrations"),
|
|
170
308
|
buildSpecification: DatasetBuildSpecificationSchema.nullable().default(null),
|
|
171
|
-
evidenceHashes:
|
|
172
|
-
tasksetSdkVersion:
|
|
173
|
-
sourceCommit:
|
|
174
|
-
repairHistory:
|
|
175
|
-
createdAt:
|
|
309
|
+
evidenceHashes: z2.array(HashSchema2).max(1e5),
|
|
310
|
+
tasksetSdkVersion: z2.string().trim().min(1).max(100),
|
|
311
|
+
sourceCommit: z2.string().trim().min(1).max(256).nullable(),
|
|
312
|
+
repairHistory: z2.array(AuthoringRepairSchema).max(1e3),
|
|
313
|
+
createdAt: TimestampSchema2
|
|
176
314
|
});
|
|
177
|
-
var TasksetSchema =
|
|
178
|
-
schemaVersion:
|
|
179
|
-
id:
|
|
180
|
-
revision:
|
|
181
|
-
profileId:
|
|
315
|
+
var TasksetSchema = z2.object({
|
|
316
|
+
schemaVersion: z2.literal("openpond.taskset.v1"),
|
|
317
|
+
id: IdSchema2,
|
|
318
|
+
revision: z2.number().int().positive().default(1),
|
|
319
|
+
profileId: IdSchema2,
|
|
182
320
|
profileRelease: VersionedReleaseRefSchema.nullable().optional(),
|
|
183
321
|
createImproveRunId: NullableIdSchema.default(null),
|
|
184
|
-
name:
|
|
322
|
+
name: z2.string().trim().min(1).max(500),
|
|
185
323
|
// Portable tasks may carry all instructions in their individual inputs.
|
|
186
324
|
// Preserve an absent package prompt; draft publication validates its objective.
|
|
187
|
-
objective:
|
|
325
|
+
objective: z2.string().trim().max(2e4),
|
|
188
326
|
purpose: TasksetPurposeSchema.default("general"),
|
|
189
327
|
benchmark: TasksetBenchmarkBindingSchema.nullable().default(null),
|
|
190
328
|
preferenceComparison: TasksetPreferenceComparisonBindingSchema.nullable().default(null),
|
|
191
329
|
status: TasksetStatusSchema,
|
|
192
|
-
sourceRefs:
|
|
330
|
+
sourceRefs: z2.array(TasksetSourceRefSchema).min(1).max(1e5),
|
|
193
331
|
datasetArtifact: DatasetArtifactManifestSchema.nullable().optional(),
|
|
194
332
|
policy: TaskPolicyBoundarySchema,
|
|
195
333
|
environment: TasksetEnvironmentContractSchema,
|
|
196
334
|
capabilities: TasksetCapabilityManifestSchema,
|
|
197
|
-
metrics:
|
|
198
|
-
tasks:
|
|
199
|
-
graders:
|
|
335
|
+
metrics: TasksetMetricPolicySchema2.optional(),
|
|
336
|
+
tasks: z2.array(TaskDataRecordSchema).max(1e6),
|
|
337
|
+
graders: z2.array(GraderSpecSchema).max(1e3),
|
|
200
338
|
// Imported releases are inspectable before local calibration. Admission
|
|
201
339
|
// requires real fixtures separately in validateTaskset.
|
|
202
|
-
graderFixtures:
|
|
340
|
+
graderFixtures: z2.array(GraderFixtureSchema).max(1e5),
|
|
203
341
|
learningSignals: LearningSignalInventorySchema,
|
|
204
342
|
authoringProvenance: AuthoringProvenanceSchema,
|
|
205
343
|
readiness: TasksetReadinessReportSchema.nullable(),
|
|
206
|
-
contentHash:
|
|
207
|
-
createdAt:
|
|
208
|
-
updatedAt:
|
|
209
|
-
metadata:
|
|
344
|
+
contentHash: HashSchema2,
|
|
345
|
+
createdAt: TimestampSchema2,
|
|
346
|
+
updatedAt: TimestampSchema2,
|
|
347
|
+
metadata: MetadataSchema2
|
|
210
348
|
}).superRefine((taskset, context) => {
|
|
211
349
|
if (taskset.purpose === "benchmark" && !taskset.benchmark) {
|
|
212
350
|
context.addIssue({
|
|
@@ -241,6 +379,123 @@ function isTrainingSourceRef(source) {
|
|
|
241
379
|
return source.schemaVersion === "openpond.trainingSource.v1";
|
|
242
380
|
}
|
|
243
381
|
|
|
382
|
+
// src/taskset-draft-authoring.ts
|
|
383
|
+
var TasksetDraftPublishError = class extends Error {
|
|
384
|
+
issues;
|
|
385
|
+
constructor(issues) {
|
|
386
|
+
super(issues.map((issue) => issue.message).join("\n"));
|
|
387
|
+
this.name = "TasksetDraftPublishError";
|
|
388
|
+
this.issues = issues;
|
|
389
|
+
}
|
|
390
|
+
};
|
|
391
|
+
function createTasksetDraft(input) {
|
|
392
|
+
const timestamp = input.now ?? (/* @__PURE__ */ new Date()).toISOString();
|
|
393
|
+
const id = input.id?.trim() || `taskset-draft-${globalThis.crypto.randomUUID()}`;
|
|
394
|
+
return TasksetDraftSchema.parse({
|
|
395
|
+
schemaVersion: "openpond.tasksetDraft.v1",
|
|
396
|
+
id,
|
|
397
|
+
revision: 1,
|
|
398
|
+
profileId: input.profileId,
|
|
399
|
+
modelScope: input.modelScope ?? null,
|
|
400
|
+
name: input.name?.trim() ?? "",
|
|
401
|
+
objective: "",
|
|
402
|
+
purpose: "general",
|
|
403
|
+
benchmark: null,
|
|
404
|
+
preferenceComparison: null,
|
|
405
|
+
status: "draft",
|
|
406
|
+
sourceRefs: [],
|
|
407
|
+
datasetArtifact: null,
|
|
408
|
+
policy: {
|
|
409
|
+
policyVisibleFields: ["input"],
|
|
410
|
+
privilegedFields: ["expectedOutput"],
|
|
411
|
+
hiddenGraderRefs: [],
|
|
412
|
+
connectedAppScopes: []
|
|
413
|
+
},
|
|
414
|
+
environment: {
|
|
415
|
+
protocolVersion: "openpond.taskEnvironment.v1",
|
|
416
|
+
kind: "chat",
|
|
417
|
+
entrypoint: "openpond-chat-v1",
|
|
418
|
+
stateful: false,
|
|
419
|
+
deterministicSeeds: true,
|
|
420
|
+
toolNames: [],
|
|
421
|
+
lifecycle: ["create", "reset", "step", "grade", "cleanup"],
|
|
422
|
+
defaultTimeoutMs: 12e4,
|
|
423
|
+
networkPolicy: "none",
|
|
424
|
+
resources: [],
|
|
425
|
+
metadata: {}
|
|
426
|
+
},
|
|
427
|
+
output: {
|
|
428
|
+
mode: "text",
|
|
429
|
+
jsonSchema: null,
|
|
430
|
+
renderer: null
|
|
431
|
+
},
|
|
432
|
+
capabilities: {
|
|
433
|
+
schemaVersion: "openpond.tasksetCapabilities.v1",
|
|
434
|
+
taskKind: "chat",
|
|
435
|
+
supportedSignals: [
|
|
436
|
+
"demonstration",
|
|
437
|
+
"preference",
|
|
438
|
+
"correction",
|
|
439
|
+
"feedback",
|
|
440
|
+
"reward",
|
|
441
|
+
"label"
|
|
442
|
+
],
|
|
443
|
+
compatibleMethods: ["none"],
|
|
444
|
+
rewardKinds: ["none"],
|
|
445
|
+
requiresTools: false,
|
|
446
|
+
requiresState: false,
|
|
447
|
+
requiresPrivilegedGrading: true,
|
|
448
|
+
environmentPlacements: ["local", "remote", "colocated"],
|
|
449
|
+
exportable: true,
|
|
450
|
+
portabilityBlockers: []
|
|
451
|
+
},
|
|
452
|
+
metrics: {
|
|
453
|
+
schemaVersion: "openpond.tasksetMetricPolicy.v1",
|
|
454
|
+
primaryMetric: "score",
|
|
455
|
+
aggregation: "mean_score",
|
|
456
|
+
missingReward: "zero",
|
|
457
|
+
customAggregator: null
|
|
458
|
+
},
|
|
459
|
+
review: {
|
|
460
|
+
enabled: false,
|
|
461
|
+
candidateCount: 2,
|
|
462
|
+
minimumSamples: 100,
|
|
463
|
+
allowTies: true,
|
|
464
|
+
allowRejectAll: true,
|
|
465
|
+
rubric: "",
|
|
466
|
+
criteria: []
|
|
467
|
+
},
|
|
468
|
+
tasks: [],
|
|
469
|
+
graders: [],
|
|
470
|
+
graderFixtures: [],
|
|
471
|
+
learningSignals: {
|
|
472
|
+
demonstrations: [],
|
|
473
|
+
preferences: [],
|
|
474
|
+
corrections: [],
|
|
475
|
+
feedback: [],
|
|
476
|
+
rewards: [],
|
|
477
|
+
labels: []
|
|
478
|
+
},
|
|
479
|
+
publishedTasksetRef: null,
|
|
480
|
+
createdAt: timestamp,
|
|
481
|
+
updatedAt: timestamp,
|
|
482
|
+
metadata: {}
|
|
483
|
+
});
|
|
484
|
+
}
|
|
485
|
+
function draftPublishIssues(draft) {
|
|
486
|
+
const issues = [];
|
|
487
|
+
if (!draft.name.trim()) issues.push({ code: "name_missing", message: "Name is required.", path: "name" });
|
|
488
|
+
if (!draft.objective.trim()) issues.push({ code: "objective_missing", message: "Objective is required.", path: "objective" });
|
|
489
|
+
if (!draft.datasetArtifact && draft.tasks.length === 0) issues.push({ code: "tasks_missing", message: "Add at least one task or Dataset artifact.", path: "tasks" });
|
|
490
|
+
const sourceIds = new Set(draft.sourceRefs.map((source) => source.id));
|
|
491
|
+
for (const task of draft.tasks) {
|
|
492
|
+
for (const sourceId of task.sourceRefs) {
|
|
493
|
+
if (!sourceIds.has(sourceId)) issues.push({ code: "task_source_missing", message: `Task ${task.id} references missing source ${sourceId}.`, path: `tasks.${task.id}.sourceRefs` });
|
|
494
|
+
}
|
|
495
|
+
}
|
|
496
|
+
return issues;
|
|
497
|
+
}
|
|
498
|
+
|
|
244
499
|
// src/taskset-authored-validation.ts
|
|
245
500
|
function validateTaskset(input, options = {}) {
|
|
246
501
|
const parsed = TasksetSchema.safeParse(input);
|
|
@@ -617,6 +872,11 @@ function validateCapabilities(capabilities, issues, taskset) {
|
|
|
617
872
|
}
|
|
618
873
|
|
|
619
874
|
export {
|
|
875
|
+
TaskDataDraftSchema,
|
|
876
|
+
TasksetDraftStatusSchema,
|
|
877
|
+
TasksetDraftReviewPolicySchema,
|
|
878
|
+
TasksetDraftOutputContractSchema,
|
|
879
|
+
TasksetDraftSchema,
|
|
620
880
|
TASKSET_WORK_TOOL_NAMES,
|
|
621
881
|
TasksetStatusSchema,
|
|
622
882
|
DatasetBuildIntentSchema,
|
|
@@ -631,8 +891,11 @@ export {
|
|
|
631
891
|
AuthoringProvenanceSchema,
|
|
632
892
|
TasksetSchema,
|
|
633
893
|
isTrainingSourceRef,
|
|
894
|
+
TasksetDraftPublishError,
|
|
895
|
+
createTasksetDraft,
|
|
896
|
+
draftPublishIssues,
|
|
634
897
|
validateTaskset,
|
|
635
898
|
computeTasksetHash,
|
|
636
899
|
validatePortability
|
|
637
900
|
};
|
|
638
|
-
//# sourceMappingURL=chunk-
|
|
901
|
+
//# sourceMappingURL=chunk-CWXM57QR.js.map
|