openpond-sdk 0.11.6 → 0.12.1
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/TASKSETS.md +13 -0
- package/dist/{chunk-A3ZYHREX.js → chunk-6Q4I33CH.js} +2 -2
- package/dist/{chunk-IS3P4OOW.js → chunk-7AZDNZP6.js} +9 -6
- package/dist/{chunk-IS3P4OOW.js.map → chunk-7AZDNZP6.js.map} +2 -2
- package/dist/{chunk-ILXO64IV.js → chunk-7GYXC2AI.js} +58 -3
- package/dist/chunk-7GYXC2AI.js.map +7 -0
- package/dist/{chunk-KV6JXPQH.js → chunk-DUKW3R7O.js} +1 -1
- package/dist/chunk-DUKW3R7O.js.map +7 -0
- package/dist/{chunk-64HOO3TO.js → chunk-ENLQCKY6.js} +2 -2
- package/dist/{chunk-OLHLJ2X3.js → chunk-FHCSDXIA.js} +10 -2
- package/dist/chunk-FHCSDXIA.js.map +7 -0
- package/dist/{chunk-PL3ETQYC.js → chunk-HKWX624G.js} +2 -2
- package/dist/{chunk-7GA57BEJ.js → chunk-MLFKQ7E7.js} +19 -3
- package/dist/chunk-MLFKQ7E7.js.map +7 -0
- package/dist/{chunk-UVREOAMH.js → chunk-O5ARJVT5.js} +2 -2
- package/dist/{chunk-JPPOMXMY.js → chunk-PGBFI5HC.js} +4 -4
- package/dist/chunk-PGBFI5HC.js.map +7 -0
- package/dist/{chunk-IPWCUGDN.js → chunk-ROBAX5TN.js} +11 -4
- package/dist/chunk-ROBAX5TN.js.map +7 -0
- package/dist/{chunk-I3QQEXDY.js → chunk-VOL3WES2.js} +13 -11
- package/dist/chunk-VOL3WES2.js.map +7 -0
- package/dist/{chunk-NFLEPINR.js → chunk-VSRTJDVB.js} +5 -5
- package/dist/{chunk-NA7PNRQZ.js → chunk-WNH4DOEC.js} +3 -3
- package/dist/{chunk-2NBI5UOK.js → chunk-WVISXXIL.js} +3 -3
- package/dist/{chunk-TTAFUUHZ.js → chunk-YVFERCUC.js} +9 -5
- package/dist/chunk-YVFERCUC.js.map +7 -0
- package/dist/connected-evidence.js +19 -11
- package/dist/dataset-workspaces.js +295 -19
- package/dist/dataset-workspaces.js.map +4 -4
- package/dist/experiment-evaluation-schedules.js +11 -11
- package/dist/experiment-improvements.js +2 -2
- package/dist/experiments.js +11 -11
- package/dist/index.js +23 -15
- package/dist/index.js.map +1 -1
- package/dist/model-starter-catalog.js +4 -4
- package/dist/model-starters.js +4 -4
- package/dist/taskset-drafts.js +8 -8
- package/dist/taskset-drafts.js.map +2 -2
- package/dist/taskset-packages.js +10 -10
- package/dist/training-bundle.js +8 -13
- package/dist/training-bundle.js.map +2 -2
- package/dist/training.js +2 -2
- package/dist/types/packages/sdk/src/connected-dataset-source.d.ts +1 -0
- package/dist/types/packages/sdk/src/connected-dataset-source.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/connected-evidence-client.d.ts +71 -0
- package/dist/types/packages/sdk/src/connected-evidence-client.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/connected-evidence.d.ts +1 -0
- package/dist/types/packages/sdk/src/connected-evidence.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/connected-starting-assets.d.ts +98 -0
- package/dist/types/packages/sdk/src/connected-starting-assets.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/dataset-preparation-assembly.d.ts +11 -0
- package/dist/types/packages/sdk/src/dataset-preparation-assembly.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/dataset-preparation-authoring-contracts.d.ts +11 -0
- package/dist/types/packages/sdk/src/dataset-preparation-authoring-contracts.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/dataset-preparation-client.d.ts +21 -0
- package/dist/types/packages/sdk/src/dataset-preparation-client.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/dataset-preparation-contracts.d.ts +18 -0
- package/dist/types/packages/sdk/src/dataset-preparation-contracts.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/dataset-preparation-qualification-contracts.d.ts +89 -0
- package/dist/types/packages/sdk/src/dataset-preparation-qualification-contracts.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/dataset-preparation-starting-state.d.ts +76 -0
- package/dist/types/packages/sdk/src/dataset-preparation-starting-state.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/dataset-preparation-workspace.d.ts +10 -0
- package/dist/types/packages/sdk/src/dataset-preparation-workspace.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/dataset-workspace-client.d.ts +42 -0
- package/dist/types/packages/sdk/src/dataset-workspace-client.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/dataset-workspace-contracts.d.ts +12 -0
- package/dist/types/packages/sdk/src/dataset-workspace-contracts.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/dataset-workspace-operations.d.ts +12 -0
- package/dist/types/packages/sdk/src/dataset-workspace-operations.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/dataset-workspaces.d.ts +3 -0
- package/dist/types/packages/sdk/src/dataset-workspaces.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/learning-batch-assets.d.ts +1 -0
- package/dist/types/packages/sdk/src/learning-batch-assets.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/model-batch-review-contracts.d.ts +5 -0
- package/dist/types/packages/sdk/src/model-batch-review-contracts.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/model-batch-review-preparation.d.ts +1 -0
- package/dist/types/packages/sdk/src/model-batch-review-preparation.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/model-batch-review.d.ts +5 -2
- package/dist/types/packages/sdk/src/model-batch-review.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/model-starter-attempts.d.ts +4 -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 +9 -0
- package/dist/types/packages/sdk/src/model-starter-catalog.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/model-starter-execution.d.ts +4 -0
- package/dist/types/packages/sdk/src/model-starter-execution.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/model-starters.d.ts +18 -0
- package/dist/types/packages/sdk/src/model-starters.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/model-taskset-derivation.d.ts +13 -0
- package/dist/types/packages/sdk/src/model-taskset-derivation.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/model-taskset-resources.d.ts +4 -0
- package/dist/types/packages/sdk/src/model-taskset-resources.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/profile-external-dataset-package.d.ts +17 -2
- package/dist/types/packages/sdk/src/profile-external-dataset-package.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/task-design-contracts.d.ts +4 -0
- package/dist/types/packages/sdk/src/task-design-contracts.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/taskset-authored-contracts.d.ts +6 -0
- package/dist/types/packages/sdk/src/taskset-authored-contracts.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/taskset-authored-files.d.ts +6 -0
- package/dist/types/packages/sdk/src/taskset-authored-files.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/taskset-authored-portable-release.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/taskset-calibration-fixtures.d.ts +5 -0
- package/dist/types/packages/sdk/src/taskset-calibration-fixtures.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/taskset-draft-api-contracts.d.ts +12 -0
- package/dist/types/packages/sdk/src/taskset-draft-api-contracts.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/taskset-draft-client.d.ts +36 -0
- package/dist/types/packages/sdk/src/taskset-draft-client.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/taskset-draft-core.d.ts +11 -0
- package/dist/types/packages/sdk/src/taskset-draft-core.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/taskset-draft-document.d.ts +7 -0
- package/dist/types/packages/sdk/src/taskset-draft-document.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/taskset-draft-package-compiler.d.ts +34 -4
- package/dist/types/packages/sdk/src/taskset-draft-package-compiler.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/taskset-draft-source.d.ts +12 -0
- package/dist/types/packages/sdk/src/taskset-draft-source.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/taskset-draft-workspace.d.ts +12 -0
- package/dist/types/packages/sdk/src/taskset-draft-workspace.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/taskset-package-client.d.ts +68 -0
- package/dist/types/packages/sdk/src/taskset-package-client.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/taskset-package-contracts.d.ts +35 -0
- package/dist/types/packages/sdk/src/taskset-package-contracts.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/taskset-package-grader-projection.d.ts +4 -0
- package/dist/types/packages/sdk/src/taskset-package-grader-projection.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/taskset-package-learning.d.ts +8 -2
- package/dist/types/packages/sdk/src/taskset-package-learning.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/taskset-package-projection.d.ts +29 -7
- package/dist/types/packages/sdk/src/taskset-package-projection.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/training-bundle.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/training-harness-sources.d.ts +118 -2
- package/dist/types/packages/sdk/src/training-harness-sources.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/training-learning-batch.d.ts +20 -0
- package/dist/types/packages/sdk/src/training-learning-batch.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/training.d.ts +117 -1
- package/dist/types/packages/sdk/src/training.d.ts.map +1 -1
- package/package.json +3 -3
- package/dist/chunk-7GA57BEJ.js.map +0 -7
- package/dist/chunk-I3QQEXDY.js.map +0 -7
- package/dist/chunk-ILXO64IV.js.map +0 -7
- package/dist/chunk-IPWCUGDN.js.map +0 -7
- package/dist/chunk-JPPOMXMY.js.map +0 -7
- package/dist/chunk-KV6JXPQH.js.map +0 -7
- package/dist/chunk-OLHLJ2X3.js.map +0 -7
- package/dist/chunk-TTAFUUHZ.js.map +0 -7
- /package/dist/{chunk-A3ZYHREX.js.map → chunk-6Q4I33CH.js.map} +0 -0
- /package/dist/{chunk-64HOO3TO.js.map → chunk-ENLQCKY6.js.map} +0 -0
- /package/dist/{chunk-PL3ETQYC.js.map → chunk-HKWX624G.js.map} +0 -0
- /package/dist/{chunk-UVREOAMH.js.map → chunk-O5ARJVT5.js.map} +0 -0
- /package/dist/{chunk-NFLEPINR.js.map → chunk-VSRTJDVB.js.map} +0 -0
- /package/dist/{chunk-NA7PNRQZ.js.map → chunk-WNH4DOEC.js.map} +0 -0
- /package/dist/{chunk-2NBI5UOK.js.map → chunk-WVISXXIL.js.map} +0 -0
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
TaskDesignProposalSchema
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-WVISXXIL.js";
|
|
4
4
|
import {
|
|
5
5
|
ConnectedCaseRefSchema,
|
|
6
|
+
ConnectedStartingAssetSchema,
|
|
6
7
|
DatasetWorkspaceBeginVersionSchema,
|
|
7
8
|
DatasetWorkspaceListQuerySchema,
|
|
8
9
|
DatasetWorkspaceListSchema,
|
|
@@ -11,32 +12,35 @@ import {
|
|
|
11
12
|
DatasetWorkspaceValidationSchema,
|
|
12
13
|
DatasetWorkspaceVersionsSchema,
|
|
13
14
|
DatasetWorkspaceWriteSchema
|
|
14
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-7GYXC2AI.js";
|
|
15
16
|
import {
|
|
16
17
|
compileTasksetDraftWorkspace
|
|
17
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-VSRTJDVB.js";
|
|
18
19
|
import {
|
|
19
20
|
TasksetDraftSchema,
|
|
20
21
|
createTasksetDraft,
|
|
21
22
|
createTasksetDraftFile,
|
|
22
23
|
createTasksetDraftWorkspace,
|
|
23
24
|
decodeTasksetDraftFileContent,
|
|
25
|
+
decodeTasksetDraftWorkspaceFile,
|
|
24
26
|
validateTasksetDraftWorkspace
|
|
25
|
-
} from "./chunk-
|
|
27
|
+
} from "./chunk-WNH4DOEC.js";
|
|
26
28
|
import {
|
|
27
29
|
TasksetCatalogReleaseRefSchema
|
|
28
30
|
} from "./chunk-K3JCP4FO.js";
|
|
29
|
-
import "./chunk-
|
|
30
|
-
import "./chunk-
|
|
31
|
+
import "./chunk-ROBAX5TN.js";
|
|
32
|
+
import "./chunk-7AZDNZP6.js";
|
|
31
33
|
import {
|
|
32
34
|
TaskDataRecordSchema,
|
|
35
|
+
TaskRequiredOutputSchema,
|
|
36
|
+
TasksetEnvironmentContractSchema,
|
|
33
37
|
TasksetSourceRefSchema
|
|
34
|
-
} from "./chunk-
|
|
38
|
+
} from "./chunk-FHCSDXIA.js";
|
|
35
39
|
import "./chunk-2U54EOXJ.js";
|
|
36
|
-
import "./chunk-
|
|
40
|
+
import "./chunk-YVFERCUC.js";
|
|
37
41
|
import "./chunk-OEPYLZXK.js";
|
|
38
42
|
import "./chunk-YSKUXQ2N.js";
|
|
39
|
-
import "./chunk-
|
|
43
|
+
import "./chunk-DUKW3R7O.js";
|
|
40
44
|
import "./chunk-KAE7AMYE.js";
|
|
41
45
|
import {
|
|
42
46
|
ExperimentGraderPinSchema
|
|
@@ -156,6 +160,7 @@ var DatasetPreparationPolicySchema = z2.object({
|
|
|
156
160
|
modelId: Id,
|
|
157
161
|
maximumOutputTokens: z2.number().int().min(1).max(32768)
|
|
158
162
|
}).strict(),
|
|
163
|
+
adjudicator: z2.object({ modelId: Id, maximumOutputTokens: z2.number().int().min(1).max(32768) }).strict(),
|
|
159
164
|
grading: z2.discriminatedUnion("mode", [
|
|
160
165
|
z2.object({ mode: z2.literal("auto") }).strict(),
|
|
161
166
|
z2.object({ mode: z2.literal("existing_only") }).strict(),
|
|
@@ -372,6 +377,7 @@ var PreparedTaskProvenanceSchema = z2.object({
|
|
|
372
377
|
firstAvailableAt: Timestamp,
|
|
373
378
|
initialInputHash: Hash,
|
|
374
379
|
initialEnvironmentHash: Hash,
|
|
380
|
+
initialAssetsHash: Hash.nullable(),
|
|
375
381
|
sourceScopeHash: Hash
|
|
376
382
|
}).strict().superRefine((value, ctx) => {
|
|
377
383
|
if (!value.sourceSpans.some((span) => span.role === "requirement"))
|
|
@@ -953,15 +959,104 @@ var DatasetPreparationResearchDecisionSchema = z5.object({
|
|
|
953
959
|
contextSummary: z5.string().max(2e4)
|
|
954
960
|
}).strict();
|
|
955
961
|
|
|
962
|
+
// src/dataset-preparation-starting-state.ts
|
|
963
|
+
import { z as z6 } from "zod";
|
|
964
|
+
var Hash3 = z6.string().regex(/^[a-f0-9]{64}$/);
|
|
965
|
+
function connectedStartingAssetReference(receiptId, path) {
|
|
966
|
+
if (!/^starting-assets-[a-f0-9]{40}$/.test(receiptId)) throw new Error("Invalid starting asset receipt.");
|
|
967
|
+
ConnectedStartingAssetSchema.shape.path.parse(path);
|
|
968
|
+
return `starting-assets:${receiptId}#${encodeURIComponent(path)}`;
|
|
969
|
+
}
|
|
970
|
+
function parseConnectedStartingAssetReference(reference) {
|
|
971
|
+
const match = /^starting-assets:(starting-assets-[a-f0-9]{40})#(.+)$/.exec(reference);
|
|
972
|
+
if (!match) throw new Error("Invalid starting asset reference.");
|
|
973
|
+
const path = decodeURIComponent(match[2]);
|
|
974
|
+
if (connectedStartingAssetReference(match[1], path) !== reference) throw new Error("Noncanonical starting asset reference.");
|
|
975
|
+
return { receiptId: match[1], path };
|
|
976
|
+
}
|
|
977
|
+
var PreparedRepositoryStartingStateSchema = z6.object({
|
|
978
|
+
schemaVersion: z6.literal("openpond.preparedRepositoryStartingState.v1"),
|
|
979
|
+
dependencyClosureQualified: z6.literal(false),
|
|
980
|
+
assets: z6.array(ConnectedStartingAssetSchema.extend({
|
|
981
|
+
receiptId: z6.string().regex(/^starting-assets-[a-f0-9]{40}$/),
|
|
982
|
+
receiptHash: Hash3,
|
|
983
|
+
source: ConnectedCaseRefSchema
|
|
984
|
+
}).strict()).min(1).max(100)
|
|
985
|
+
}).strict().superRefine((value, ctx) => {
|
|
986
|
+
if (new Set(value.assets.map((asset) => asset.path)).size !== value.assets.length)
|
|
987
|
+
ctx.addIssue({ code: "custom", message: "Starting paths must be distinct." });
|
|
988
|
+
if (value.assets.some((asset) => asset.commitHash !== value.assets[0].commitHash || contentHash(asset.source) !== contentHash(value.assets[0].source)))
|
|
989
|
+
ctx.addIssue({ code: "custom", message: "Starting assets must belong to one original task boundary and commit." });
|
|
990
|
+
});
|
|
991
|
+
function preparedRepositoryEnvironment() {
|
|
992
|
+
return TasksetEnvironmentContractSchema.parse({
|
|
993
|
+
protocolVersion: "openpond.taskEnvironment.v1",
|
|
994
|
+
kind: "work",
|
|
995
|
+
entrypoint: "openpond-work-v1",
|
|
996
|
+
stateful: true,
|
|
997
|
+
deterministicSeeds: true,
|
|
998
|
+
toolNames: ["work_exec", "work_save_output"],
|
|
999
|
+
lifecycle: ["create", "reset", "step", "grade", "cleanup"],
|
|
1000
|
+
defaultTimeoutMs: 3e5,
|
|
1001
|
+
networkPolicy: "none",
|
|
1002
|
+
resources: [],
|
|
1003
|
+
metadata: {
|
|
1004
|
+
requiredOutputs: [{
|
|
1005
|
+
path: "changes.patch",
|
|
1006
|
+
mediaType: "text/x-diff",
|
|
1007
|
+
maxBytes: 5e6,
|
|
1008
|
+
metadata: {
|
|
1009
|
+
protocol: "openpond.preparedRepositoryPatch.v1",
|
|
1010
|
+
baseDirectory: "starting-state",
|
|
1011
|
+
description: "Save a unified diff against the retained starting files, with original repository-relative paths."
|
|
1012
|
+
}
|
|
1013
|
+
}],
|
|
1014
|
+
maxInputBytes: 15 * 1024 * 1024
|
|
1015
|
+
}
|
|
1016
|
+
});
|
|
1017
|
+
}
|
|
1018
|
+
|
|
956
1019
|
// src/dataset-preparation-workspace.ts
|
|
957
1020
|
function createPreparedTaskAuthoringWorkspace(input) {
|
|
958
1021
|
const provenance = PreparedTaskProvenanceSchema.parse(input.provenance);
|
|
959
1022
|
const proposal = TaskDesignProposalSchema.parse(input.proposal);
|
|
960
|
-
|
|
1023
|
+
let sources = input.sources.map((source) => TasksetSourceRefSchema.parse(source));
|
|
961
1024
|
const environment = TasksetDraftSchema.shape.environment.parse(input.initialEnvironment);
|
|
1025
|
+
const startingFiles = input.startingFiles ?? [];
|
|
1026
|
+
let workAssets;
|
|
1027
|
+
let retainedFiles = startingFiles;
|
|
962
1028
|
if (contentHash(input.initialInput) !== provenance.initialInputHash || contentHash(environment) !== provenance.initialEnvironmentHash)
|
|
963
1029
|
throw new Error("Prepared Taskset input or starting environment differs from its reconstruction.");
|
|
964
|
-
if (environment.kind
|
|
1030
|
+
if (environment.kind === "work") {
|
|
1031
|
+
const state = PreparedRepositoryStartingStateSchema.parse(input.startingAssets);
|
|
1032
|
+
if (contentHash(state) !== provenance.initialAssetsHash) throw new Error("Prepared starting assets differ from their reconstruction.");
|
|
1033
|
+
if (contentHash(preparedRepositoryEnvironment()) !== contentHash(environment) || proposal.taskKind !== "single_agent" || proposal.diagnosis.requiredTools.some((tool) => !environment.toolNames.includes(tool)))
|
|
1034
|
+
throw new Error("Repository preparation requires its fixed isolated Work protocol.");
|
|
1035
|
+
if (startingFiles.length !== state.assets.length || new Set(startingFiles.map((file) => file.path)).size !== startingFiles.length)
|
|
1036
|
+
throw new Error("Prepared starting files differ from the retained inventory.");
|
|
1037
|
+
for (const asset of state.assets) {
|
|
1038
|
+
const file = startingFiles.find((file2) => file2.path === `assets/starting-state/${asset.path}`);
|
|
1039
|
+
if (!file || file.contentHash !== asset.sha256 || file.sizeBytes !== asset.sizeBytes)
|
|
1040
|
+
throw new Error("Prepared starting files differ from the retained inventory.");
|
|
1041
|
+
decodeTasksetDraftWorkspaceFile(file);
|
|
1042
|
+
}
|
|
1043
|
+
for (const asset of state.assets) if (!sources.some((source) => "kind" in source && source.kind === "connected_activity" && source.id === asset.source.id && source.sourceHash === asset.source.snapshotHash))
|
|
1044
|
+
throw new Error("Prepared starting files require their exact connected source revision.");
|
|
1045
|
+
sources = sources.map((source) => "kind" in source && source.kind === "connected_activity" ? { ...source, sourceFileHashes: [...new Set(state.assets.filter((asset) => asset.source.id === source.id).map((asset) => asset.sha256))] } : source);
|
|
1046
|
+
workAssets = state.assets.map((asset) => ({
|
|
1047
|
+
id: `starting-file-${contentHash(asset.path).slice(0, 40)}`,
|
|
1048
|
+
sourceRefId: asset.source.id,
|
|
1049
|
+
artifactRef: `assets/${provenance.candidateId}/starting-state/${asset.path}`,
|
|
1050
|
+
fileName: asset.path.split("/").at(-1),
|
|
1051
|
+
stagingPath: `starting-state/${asset.path}`,
|
|
1052
|
+
mediaType: "application/octet-stream",
|
|
1053
|
+
sha256: asset.sha256,
|
|
1054
|
+
sizeBytes: asset.sizeBytes,
|
|
1055
|
+
split: "validation",
|
|
1056
|
+
metadata: { receiptId: asset.receiptId, receiptHash: asset.receiptHash, originalPath: asset.path, mode: asset.mode }
|
|
1057
|
+
}));
|
|
1058
|
+
retainedFiles = startingFiles.map((file) => ({ ...file, path: file.path.replace("assets/starting-state/", `assets/${provenance.candidateId}/starting-state/`) }));
|
|
1059
|
+
} else if (environment.kind !== "chat" || environment.stateful || environment.toolNames.length || (environment.resources?.length ?? 0) || proposal.taskKind !== "chat" || proposal.diagnosis.requiredTools.length || startingFiles.length || input.startingAssets || provenance.initialAssetsHash !== null)
|
|
965
1060
|
throw new Error("Text preparation cannot silently add tools, state or starting assets.");
|
|
966
1061
|
const sourceIds = new Set(sources.map((source) => source.id));
|
|
967
1062
|
if (!sources.length || sourceIds.size !== sources.length || proposal.sourceIds.some((id) => !sourceIds.has(id)) || proposal.proposedExamples.length !== 1 || proposal.proposedExamples.some((example) => !sourceIds.has(example.sourceId)))
|
|
@@ -970,8 +1065,8 @@ function createPreparedTaskAuthoringWorkspace(input) {
|
|
|
970
1065
|
throw new Error("Prepared Taskset authoring provenance is invalid.");
|
|
971
1066
|
if (!proposal.proposedGraders.length || new Set(proposal.proposedGraders.map((grader) => grader.id)).size !== proposal.proposedGraders.length)
|
|
972
1067
|
throw new Error("Prepared Taskset needs distinct outcome graders.");
|
|
973
|
-
if (proposal.generatedFiles.some((file) => file.role === "environment"))
|
|
974
|
-
throw new Error("Generated code cannot replace the fixed initial
|
|
1068
|
+
if (proposal.generatedFiles.some((file) => file.role === "environment" || file.path === "assets" || file.path.startsWith("assets/")))
|
|
1069
|
+
throw new Error("Generated code cannot replace the fixed initial environment or starting files.");
|
|
975
1070
|
if (proposal.graderFixtures.some((fixture) => fixture.taskIndex !== 0 || fixture.metadata.substituteExpectedOutput === true))
|
|
976
1071
|
throw new Error("Prepared fixtures cannot refer to another task or substitute a historical answer.");
|
|
977
1072
|
const draft = createTasksetDraft({
|
|
@@ -985,12 +1080,13 @@ function createPreparedTaskAuthoringWorkspace(input) {
|
|
|
985
1080
|
draft.environment = environment;
|
|
986
1081
|
draft.graders = proposal.proposedGraders.map((grader) => ({
|
|
987
1082
|
...grader,
|
|
1083
|
+
taskIds: [provenance.candidateId],
|
|
988
1084
|
privileged: true,
|
|
989
1085
|
...grader.kind === "model_judge" ? { rewardEligible: false, calibrationStatus: "pending" } : {},
|
|
990
|
-
metadata: { ...grader.metadata, preparedTask: provenance.candidateId, authoringSkillHash: input.skillHash }
|
|
1086
|
+
metadata: { ...grader.metadata, preparedRewardEligible: grader.rewardEligible, preparedTask: provenance.candidateId, authoringSkillHash: input.skillHash }
|
|
991
1087
|
}));
|
|
992
1088
|
draft.policy = {
|
|
993
|
-
policyVisibleFields: ["input"],
|
|
1089
|
+
policyVisibleFields: environment.kind === "work" ? ["input", "requiredOutputs"] : ["input"],
|
|
994
1090
|
privilegedFields: ["expectedOutput"],
|
|
995
1091
|
hiddenGraderRefs: draft.graders.map((grader) => grader.id),
|
|
996
1092
|
connectedAppScopes: []
|
|
@@ -1005,8 +1101,33 @@ function createPreparedTaskAuthoringWorkspace(input) {
|
|
|
1005
1101
|
policyVisibleContext: {},
|
|
1006
1102
|
privilegedContextRef: null,
|
|
1007
1103
|
sourceRefs: [...sourceIds],
|
|
1104
|
+
...environment.kind === "work" ? {
|
|
1105
|
+
assets: workAssets,
|
|
1106
|
+
requiredOutputs: TaskRequiredOutputSchema.array().min(1).max(100).parse(environment.metadata.requiredOutputs)
|
|
1107
|
+
} : {},
|
|
1008
1108
|
tags: ["prepared-task", "development-exposed"],
|
|
1009
|
-
metadata: {
|
|
1109
|
+
metadata: {
|
|
1110
|
+
preparedTask: provenance,
|
|
1111
|
+
qualificationStatus: "pending",
|
|
1112
|
+
...workAssets ? { portableTaskRecord: {
|
|
1113
|
+
id: provenance.candidateId,
|
|
1114
|
+
clusterKey: provenance.familyKey,
|
|
1115
|
+
split: "validation",
|
|
1116
|
+
input: input.initialInput,
|
|
1117
|
+
expectedOutput: null,
|
|
1118
|
+
policyVisibleContext: {},
|
|
1119
|
+
privilegedContextRef: null,
|
|
1120
|
+
artifactRefs: workAssets.map((asset) => ({
|
|
1121
|
+
id: asset.id,
|
|
1122
|
+
path: asset.artifactRef,
|
|
1123
|
+
contentHash: asset.sha256,
|
|
1124
|
+
sizeBytes: asset.sizeBytes,
|
|
1125
|
+
mediaType: asset.mediaType,
|
|
1126
|
+
visibility: "policy"
|
|
1127
|
+
})),
|
|
1128
|
+
tags: ["prepared-task", "development-exposed"]
|
|
1129
|
+
} } : {}
|
|
1130
|
+
}
|
|
1010
1131
|
})];
|
|
1011
1132
|
draft.graderFixtures = proposal.graderFixtures.map(({ taskIndex: _index, ...fixture }) => ({
|
|
1012
1133
|
...fixture,
|
|
@@ -1026,7 +1147,7 @@ function createPreparedTaskAuthoringWorkspace(input) {
|
|
|
1026
1147
|
return createTasksetDraftWorkspace({
|
|
1027
1148
|
schemaVersion: "openpond.tasksetDraftWorkspace.v1",
|
|
1028
1149
|
draft,
|
|
1029
|
-
files: proposal.generatedFiles.map((generated) => {
|
|
1150
|
+
files: [...retainedFiles, ...proposal.generatedFiles.map((generated) => {
|
|
1030
1151
|
const file = createTasksetDraftFile(generated.path, new TextEncoder().encode(generated.content));
|
|
1031
1152
|
return {
|
|
1032
1153
|
path: file.path,
|
|
@@ -1034,7 +1155,153 @@ function createPreparedTaskAuthoringWorkspace(input) {
|
|
|
1034
1155
|
sizeBytes: file.sizeBytes,
|
|
1035
1156
|
base64: Buffer.from(decodeTasksetDraftFileContent(file.content)).toString("base64")
|
|
1036
1157
|
};
|
|
1037
|
-
})
|
|
1158
|
+
})]
|
|
1159
|
+
});
|
|
1160
|
+
}
|
|
1161
|
+
|
|
1162
|
+
// src/dataset-preparation-qualification-contracts.ts
|
|
1163
|
+
import { z as z7 } from "zod";
|
|
1164
|
+
var Id5 = z7.string().trim().min(1).max(240);
|
|
1165
|
+
var Text2 = z7.string().trim().min(1).max(2e4);
|
|
1166
|
+
var PreparedQualificationWitnessSchema = z7.object({
|
|
1167
|
+
id: Id5,
|
|
1168
|
+
label: z7.enum(["positive", "incorrect", "incomplete", "adversarial"]),
|
|
1169
|
+
output: z7.record(z7.string(), z7.unknown()),
|
|
1170
|
+
artifacts: z7.array(z7.object({
|
|
1171
|
+
path: TaskRequiredOutputSchema.shape.path,
|
|
1172
|
+
mediaType: TaskRequiredOutputSchema.shape.mediaType,
|
|
1173
|
+
base64: z7.string().max(8 * 1024 * 1024)
|
|
1174
|
+
}).strict()).max(100)
|
|
1175
|
+
}).strict().superRefine((value, ctx) => {
|
|
1176
|
+
if (new Set(value.artifacts.map((artifact) => artifact.path)).size !== value.artifacts.length)
|
|
1177
|
+
ctx.addIssue({ code: "custom", message: "Qualification artifacts must have distinct paths." });
|
|
1178
|
+
});
|
|
1179
|
+
var PreparedQualificationPlanSchema = z7.object({
|
|
1180
|
+
schemaVersion: z7.literal("openpond.preparedQualificationPlan.v1"),
|
|
1181
|
+
requirementRefs: z7.array(Id5).min(1).max(100),
|
|
1182
|
+
supported: z7.boolean(),
|
|
1183
|
+
limitations: z7.array(Text2).max(20),
|
|
1184
|
+
independentVerifier: z7.object({
|
|
1185
|
+
runtime: z7.enum(["isolated_javascript", "sandbox_process"]),
|
|
1186
|
+
source: z7.string().trim().min(1).max(2e5),
|
|
1187
|
+
exportName: z7.literal("verify"),
|
|
1188
|
+
timeoutMs: z7.number().int().min(1).max(6e4)
|
|
1189
|
+
}).strict().nullable(),
|
|
1190
|
+
witnesses: z7.array(PreparedQualificationWitnessSchema).max(20)
|
|
1191
|
+
}).strict().superRefine((value, ctx) => {
|
|
1192
|
+
if (new Set(value.requirementRefs).size !== value.requirementRefs.length || new Set(value.witnesses.map((item) => item.id)).size !== value.witnesses.length)
|
|
1193
|
+
ctx.addIssue({ code: "custom", message: "Qualification evidence identities must be distinct." });
|
|
1194
|
+
if (value.supported && (!value.independentVerifier || value.limitations.length || ["positive", "incorrect", "incomplete", "adversarial"].some((label) => !value.witnesses.some((witness) => witness.label === label))))
|
|
1195
|
+
ctx.addIssue({ code: "custom", message: "Supported qualification needs a complete verifier and witness population without unresolved evidence gaps." });
|
|
1196
|
+
});
|
|
1197
|
+
var PreparedWitnessAdjudicationSchema = z7.object({
|
|
1198
|
+
schemaVersion: z7.literal("openpond.preparedWitnessAdjudication.v1"),
|
|
1199
|
+
witnesses: z7.array(z7.object({
|
|
1200
|
+
id: Id5,
|
|
1201
|
+
failureMode: z7.enum(["none", "incorrect", "incomplete", "adversarial", "unverifiable"]),
|
|
1202
|
+
requirements: z7.array(z7.object({ reference: Id5, status: z7.enum(["satisfied", "violated", "unverifiable"]), reason: Text2 }).strict()).min(1).max(100)
|
|
1203
|
+
}).strict()).min(4).max(20)
|
|
1204
|
+
}).strict();
|
|
1205
|
+
var PreparedCheckerAuditSchema = z7.object({
|
|
1206
|
+
schemaVersion: z7.literal("openpond.preparedCheckerAudit.v1"),
|
|
1207
|
+
requirements: z7.array(z7.object({ reference: Id5, adequatelyChecked: z7.boolean(), oracleAdequatelyChecked: z7.boolean(), reason: Text2 }).strict()).min(1).max(100),
|
|
1208
|
+
executionIsolationPassed: z7.boolean(),
|
|
1209
|
+
futureEvidenceLeak: z7.boolean(),
|
|
1210
|
+
unresolvedLimitations: z7.array(Text2).max(20),
|
|
1211
|
+
passed: z7.boolean()
|
|
1212
|
+
}).strict();
|
|
1213
|
+
|
|
1214
|
+
// src/dataset-preparation-assembly.ts
|
|
1215
|
+
function assemblePreparedTaskWorkspaces(input) {
|
|
1216
|
+
const base = validateTasksetDraftWorkspace(input.base);
|
|
1217
|
+
const candidates = input.candidates.map(validateTasksetDraftWorkspace);
|
|
1218
|
+
if (!candidates.length || base.draft.status !== "draft" || candidates.some((workspace) => workspace.draft.profileId !== base.draft.profileId || workspace.draft.tasks.length !== 1))
|
|
1219
|
+
throw new Error("Prepared assembly requires owned individual task workspaces and an editable destination.");
|
|
1220
|
+
const environment = base.draft.tasks.length ? base.draft.environment : candidates[0].draft.environment;
|
|
1221
|
+
if (candidates.some((workspace) => contentHash(workspace.draft.environment) !== contentHash(environment)))
|
|
1222
|
+
throw new Error("Prepared tasks require separate versions for incompatible execution environments.");
|
|
1223
|
+
const tasks = [...base.draft.tasks], files = [...base.files], graders = base.draft.graders.map((grader) => ({
|
|
1224
|
+
...grader,
|
|
1225
|
+
...grader.taskIds ? {} : { taskIds: base.draft.tasks.map((task) => task.id) }
|
|
1226
|
+
}));
|
|
1227
|
+
if (!base.draft.tasks.length && graders.length) throw new Error("Destination graders require their original task population.");
|
|
1228
|
+
const sources = new Map(base.draft.sourceRefs.map((source) => [source.id, source]));
|
|
1229
|
+
const fixtures = [...base.draft.graderFixtures];
|
|
1230
|
+
const inventory = [...base.draft.metadata.portableFileInventory ?? []];
|
|
1231
|
+
const candidateIds = [];
|
|
1232
|
+
for (const workspace of candidates) {
|
|
1233
|
+
const task = workspace.draft.tasks[0];
|
|
1234
|
+
if (tasks.some((existing) => existing.id === task.id)) throw new Error("Prepared assembly repeats a task identity.");
|
|
1235
|
+
const provenance = task.metadata.preparedTask;
|
|
1236
|
+
if (provenance?.preparationId !== input.preparationId) throw new Error("Prepared task belongs to another run.");
|
|
1237
|
+
const sourceIds = new Map(workspace.draft.sourceRefs.map((source) => [source.id, `prepared-source-${contentHash([task.id, source.id]).slice(0, 40)}`]));
|
|
1238
|
+
candidateIds.push(task.id);
|
|
1239
|
+
tasks.push({
|
|
1240
|
+
...task,
|
|
1241
|
+
sourceRefs: task.sourceRefs.map((id) => sourceIds.get(id)),
|
|
1242
|
+
...task.assets ? { assets: task.assets.map((asset) => ({ ...asset, sourceRefId: sourceIds.get(asset.sourceRefId) })) } : {}
|
|
1243
|
+
});
|
|
1244
|
+
const namespace = `graders/${task.id}/`;
|
|
1245
|
+
for (const file of workspace.files) files.push({ ...file, path: file.path.startsWith("assets/") ? file.path : namespace + file.path });
|
|
1246
|
+
const graderIds = new Map(workspace.draft.graders.map((grader) => [grader.id, `prepared-grader-${contentHash([task.id, grader.id]).slice(0, 40)}`]));
|
|
1247
|
+
for (const grader of workspace.draft.graders) {
|
|
1248
|
+
const id = graderIds.get(grader.id);
|
|
1249
|
+
graders.push({
|
|
1250
|
+
...grader,
|
|
1251
|
+
id,
|
|
1252
|
+
taskIds: [task.id],
|
|
1253
|
+
...grader.kind === "custom_verifier" ? { module: namespace + grader.module } : {},
|
|
1254
|
+
metadata: { ...grader.metadata, preparedTask: task.id, composedFrom: { id: grader.id, contentHash: contentHash(grader) } }
|
|
1255
|
+
});
|
|
1256
|
+
}
|
|
1257
|
+
for (const fixture of workspace.draft.graderFixtures) {
|
|
1258
|
+
const projection = fixture.metadata.rewardCalibration;
|
|
1259
|
+
if (projection) fixtures.push({ ...fixture, metadata: { ...fixture.metadata, rewardCalibration: {
|
|
1260
|
+
...projection,
|
|
1261
|
+
graderId: graderIds.get(projection.graderId ?? projection.sourceReward.id)
|
|
1262
|
+
} } });
|
|
1263
|
+
else fixtures.push({ ...fixture, id: `prepared-fixture-${contentHash([task.id, fixture.id]).slice(0, 40)}` });
|
|
1264
|
+
}
|
|
1265
|
+
for (const entry of workspace.draft.metadata.portableFileInventory ?? []) inventory.push({
|
|
1266
|
+
...entry,
|
|
1267
|
+
sourcePath: entry.sourcePath.startsWith("assets/") ? entry.sourcePath : namespace + entry.sourcePath
|
|
1268
|
+
});
|
|
1269
|
+
for (const source of workspace.draft.sourceRefs) sources.set(sourceIds.get(source.id), {
|
|
1270
|
+
...source,
|
|
1271
|
+
id: sourceIds.get(source.id),
|
|
1272
|
+
metadata: { ...source.metadata, assemblyOriginalSourceId: source.id }
|
|
1273
|
+
});
|
|
1274
|
+
}
|
|
1275
|
+
const policyVisibleFields = [...new Set(candidates.flatMap((workspace) => workspace.draft.policy.policyVisibleFields).concat(base.draft.tasks.length ? base.draft.policy.policyVisibleFields : []))];
|
|
1276
|
+
return createTasksetDraftWorkspace({
|
|
1277
|
+
schemaVersion: base.schemaVersion,
|
|
1278
|
+
files,
|
|
1279
|
+
draft: {
|
|
1280
|
+
...base.draft,
|
|
1281
|
+
name: base.draft.name.trim() || `Prepared ${candidates.length} tasks`,
|
|
1282
|
+
objective: base.draft.objective.trim() || candidates.map((workspace) => workspace.draft.objective).join("\n").slice(0, 5e4),
|
|
1283
|
+
revision: input.revision,
|
|
1284
|
+
updatedAt: input.now,
|
|
1285
|
+
environment,
|
|
1286
|
+
tasks,
|
|
1287
|
+
graders,
|
|
1288
|
+
graderFixtures: fixtures,
|
|
1289
|
+
sourceRefs: [...sources.values()],
|
|
1290
|
+
policy: {
|
|
1291
|
+
...base.draft.policy,
|
|
1292
|
+
policyVisibleFields,
|
|
1293
|
+
privilegedFields: [.../* @__PURE__ */ new Set(["expectedOutput", ...base.draft.policy.privilegedFields])],
|
|
1294
|
+
hiddenGraderRefs: graders.map((grader) => grader.id)
|
|
1295
|
+
},
|
|
1296
|
+
metadata: { ...base.draft.metadata, portableFileInventory: inventory, datasetPreparation: {
|
|
1297
|
+
schemaVersion: "openpond.datasetPreparationAssembly.v1",
|
|
1298
|
+
preparationId: input.preparationId,
|
|
1299
|
+
candidateIds,
|
|
1300
|
+
baseWorkspaceHash: base.contentHash,
|
|
1301
|
+
authoredWorkspaceHashes: candidates.map((workspace) => workspace.contentHash),
|
|
1302
|
+
qualification: "pending"
|
|
1303
|
+
} }
|
|
1304
|
+
}
|
|
1038
1305
|
});
|
|
1039
1306
|
}
|
|
1040
1307
|
export {
|
|
@@ -1071,10 +1338,19 @@ export {
|
|
|
1071
1338
|
OpenPondDatasetPopulationClient,
|
|
1072
1339
|
OpenPondDatasetPreparationClient,
|
|
1073
1340
|
OpenPondDatasetWorkspaceClient,
|
|
1341
|
+
PreparedCheckerAuditSchema,
|
|
1342
|
+
PreparedQualificationPlanSchema,
|
|
1343
|
+
PreparedQualificationWitnessSchema,
|
|
1344
|
+
PreparedRepositoryStartingStateSchema,
|
|
1074
1345
|
PreparedTaskEvidenceSpanSchema,
|
|
1075
1346
|
PreparedTaskProvenanceSchema,
|
|
1076
1347
|
PreparedTaskQualificationSchema,
|
|
1348
|
+
PreparedWitnessAdjudicationSchema,
|
|
1349
|
+
assemblePreparedTaskWorkspaces,
|
|
1077
1350
|
compileTasksetDraftWorkspace,
|
|
1078
|
-
|
|
1351
|
+
connectedStartingAssetReference,
|
|
1352
|
+
createPreparedTaskAuthoringWorkspace,
|
|
1353
|
+
parseConnectedStartingAssetReference,
|
|
1354
|
+
preparedRepositoryEnvironment
|
|
1079
1355
|
};
|
|
1080
1356
|
//# sourceMappingURL=dataset-workspaces.js.map
|