openpond-sdk 0.12.9 → 0.12.11
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/README.md +2 -0
- package/TRAINING_PROTOCOL.md +40 -0
- package/dist/advanced-refiner-evaluations.js +8 -7
- package/dist/candidate-evaluations.js +7 -6
- package/dist/{chunk-TWJYL5YF.js → chunk-2LVR24GU.js} +5 -5
- package/dist/{chunk-MRUDFIB6.js → chunk-7BYLH47N.js} +6 -4
- package/dist/{chunk-MRUDFIB6.js.map → chunk-7BYLH47N.js.map} +1 -1
- package/dist/chunk-B3ZHJ2KK.js +152 -0
- package/dist/chunk-B3ZHJ2KK.js.map +1 -0
- package/dist/{chunk-D3WOJTUY.js → chunk-C3TS766N.js} +24 -87
- package/dist/chunk-C3TS766N.js.map +1 -0
- package/dist/{chunk-WYR3MZHU.js → chunk-C4W2MEFP.js} +2 -2
- package/dist/{chunk-GGG6H4MK.js → chunk-CNREFTAV.js} +2 -2
- package/dist/chunk-EZME7DV4.js +161 -0
- package/dist/chunk-EZME7DV4.js.map +1 -0
- package/dist/{chunk-IOZCYSJ6.js → chunk-GHPCQXG5.js} +2 -2
- package/dist/{chunk-EYMZQML2.js → chunk-GJRXJL6G.js} +525 -484
- package/dist/chunk-GJRXJL6G.js.map +1 -0
- package/dist/chunk-GX6KMHW2.js +108 -0
- package/dist/chunk-GX6KMHW2.js.map +1 -0
- package/dist/{chunk-BWFG46HX.js → chunk-HAQPGTQ4.js} +2 -2
- package/dist/{chunk-RFKZSSLB.js → chunk-IFBCLRBM.js} +5 -3
- package/dist/{chunk-RFKZSSLB.js.map → chunk-IFBCLRBM.js.map} +1 -1
- package/dist/chunk-IZ26ZCGU.js +65 -0
- package/dist/chunk-IZ26ZCGU.js.map +1 -0
- package/dist/{chunk-EEZ5YHJQ.js → chunk-JBYFD3QS.js} +3 -3
- package/dist/{chunk-U4QIGSP5.js → chunk-JDQVAG3R.js} +3 -3
- package/dist/{chunk-UWM2ZPGS.js → chunk-K54BDIKL.js} +3 -3
- package/dist/{chunk-QVLJFJBU.js → chunk-KOJC3TH4.js} +6 -6
- package/dist/{chunk-YP5DXGGC.js → chunk-LHHHJIDR.js} +2 -2
- package/dist/{chunk-UMK6DH75.js → chunk-NKF5NIML.js} +7 -5
- package/dist/{chunk-UMK6DH75.js.map → chunk-NKF5NIML.js.map} +1 -1
- package/dist/{chunk-LUFOAMN5.js → chunk-O3NOGKMT.js} +2 -2
- package/dist/{chunk-GZSQIOAH.js → chunk-ORYA2G7S.js} +6 -6
- package/dist/{chunk-XL44IXBO.js → chunk-RIN6Z56W.js} +5 -5
- package/dist/{chunk-CJDEVI3T.js → chunk-RLW4Y5ZV.js} +5 -3
- package/dist/{chunk-CJDEVI3T.js.map → chunk-RLW4Y5ZV.js.map} +1 -1
- package/dist/{chunk-QHCY4MBG.js → chunk-TLSP5JKG.js} +2 -2
- package/dist/chunk-U2KGUAIS.js +18 -0
- package/dist/chunk-U2KGUAIS.js.map +1 -0
- package/dist/{chunk-YSEYPMQ3.js → chunk-UOV2LEXS.js} +12 -154
- package/dist/chunk-UOV2LEXS.js.map +1 -0
- package/dist/{chunk-CZXN63A4.js → chunk-UWY5PUHR.js} +2 -2
- package/dist/{chunk-HYCHLMP7.js → chunk-XMVSQIK4.js} +2 -2
- package/dist/{chunk-TZREEZ4C.js → chunk-XRBM6PBD.js} +9 -9
- package/dist/{chunk-MGFI4226.js → chunk-YIGFQWZV.js} +3 -3
- package/dist/{chunk-EWRWGFKD.js → chunk-ZYDDHHZZ.js} +6 -4
- package/dist/{chunk-EWRWGFKD.js.map → chunk-ZYDDHHZZ.js.map} +1 -1
- package/dist/connected-evidence.js +18 -15
- package/dist/dataset-workspaces.js +21 -18
- package/dist/dataset-workspaces.js.map +1 -1
- package/dist/errors.js +13 -0
- package/dist/errors.js.map +1 -0
- package/dist/experiment-evaluation-schedules.js +22 -19
- package/dist/experiment-improvements.js +9 -8
- package/dist/experiments.js +22 -19
- package/dist/index.js +64 -58
- package/dist/index.js.map +1 -1
- package/dist/learning.js +9 -5
- package/dist/learning.js.map +1 -1
- package/dist/model-projects.js +6 -4
- package/dist/model-starter-attempts.js +3 -2
- package/dist/model-starter-catalog.js +13 -10
- package/dist/model-starter-catalog.js.map +1 -1
- package/dist/model-starters.js +13 -10
- package/dist/model-taskset-runs.js +5 -4
- package/dist/model-taskset-runs.js.map +1 -1
- package/dist/post-training.js +7 -6
- package/dist/taskset-drafts.js +17 -14
- package/dist/taskset-drafts.js.map +1 -1
- package/dist/taskset-packages.js +24 -21
- package/dist/tool-learning-local-store.js +355 -0
- package/dist/tool-learning-local-store.js.map +1 -0
- package/dist/tool-learning.js +414 -0
- package/dist/tool-learning.js.map +1 -0
- package/dist/training-bundle.js +31 -16
- package/dist/training-bundle.js.map +1 -1
- package/dist/training-hardware.js +23 -0
- package/dist/training-hardware.js.map +1 -0
- package/dist/training.js +31 -13
- package/dist/types/packages/sdk/src/connected-evidence-client.d.ts +40 -40
- package/dist/types/packages/sdk/src/dataset-preparation-workspace.d.ts +20 -20
- package/dist/types/packages/sdk/src/errors.d.ts +3 -0
- package/dist/types/packages/sdk/src/errors.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/experiment-client.d.ts +636 -636
- package/dist/types/packages/sdk/src/experiment-improvement-client.d.ts +1622 -1622
- package/dist/types/packages/sdk/src/experiment-run-details.d.ts +54 -54
- package/dist/types/packages/sdk/src/learning-client.d.ts +1 -6
- package/dist/types/packages/sdk/src/learning-client.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/learning-error.d.ts +7 -0
- package/dist/types/packages/sdk/src/learning-error.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/managed-training-preparation.d.ts +2 -0
- package/dist/types/packages/sdk/src/managed-training-preparation.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/model-projects.d.ts +24 -0
- package/dist/types/packages/sdk/src/model-projects.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/model-starters.d.ts +6 -0
- package/dist/types/packages/sdk/src/model-starters.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/post-training.d.ts +58 -54
- package/dist/types/packages/sdk/src/post-training.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/taskset-authored-files.d.ts +20 -20
- package/dist/types/packages/sdk/src/taskset-draft-client.d.ts +2 -0
- package/dist/types/packages/sdk/src/taskset-draft-client.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/taskset-package-client.d.ts +6 -0
- package/dist/types/packages/sdk/src/taskset-package-client.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/taskset-package-projection.d.ts +20 -20
- package/dist/types/packages/sdk/src/tool-learning-client.d.ts +1217 -0
- package/dist/types/packages/sdk/src/tool-learning-client.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/tool-learning-local-store.d.ts +140 -0
- package/dist/types/packages/sdk/src/tool-learning-local-store.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/tool-learning.d.ts +4 -0
- package/dist/types/packages/sdk/src/tool-learning.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/training-compute-selection.d.ts +2 -0
- package/dist/types/packages/sdk/src/training-compute-selection.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/training-estimates.d.ts +9 -1
- package/dist/types/packages/sdk/src/training-estimates.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/training-hardware.d.ts +886 -0
- package/dist/types/packages/sdk/src/training-hardware.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/training-learning-batch.d.ts +40 -40
- package/dist/types/packages/sdk/src/training-preparations.d.ts +22 -0
- package/dist/types/packages/sdk/src/training-preparations.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/training-qualification-preparation.d.ts +2 -0
- package/dist/types/packages/sdk/src/training-qualification-preparation.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/training-supervised.d.ts +101 -0
- package/dist/types/packages/sdk/src/training-supervised.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/training-transport.d.ts +24 -0
- package/dist/types/packages/sdk/src/training-transport.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/training.d.ts +34 -16
- package/dist/types/packages/sdk/src/training.d.ts.map +1 -1
- package/package.json +18 -2
- package/dist/chunk-D3WOJTUY.js.map +0 -1
- package/dist/chunk-EYMZQML2.js.map +0 -1
- package/dist/chunk-YSEYPMQ3.js.map +0 -1
- /package/dist/{chunk-TWJYL5YF.js.map → chunk-2LVR24GU.js.map} +0 -0
- /package/dist/{chunk-WYR3MZHU.js.map → chunk-C4W2MEFP.js.map} +0 -0
- /package/dist/{chunk-GGG6H4MK.js.map → chunk-CNREFTAV.js.map} +0 -0
- /package/dist/{chunk-IOZCYSJ6.js.map → chunk-GHPCQXG5.js.map} +0 -0
- /package/dist/{chunk-BWFG46HX.js.map → chunk-HAQPGTQ4.js.map} +0 -0
- /package/dist/{chunk-EEZ5YHJQ.js.map → chunk-JBYFD3QS.js.map} +0 -0
- /package/dist/{chunk-U4QIGSP5.js.map → chunk-JDQVAG3R.js.map} +0 -0
- /package/dist/{chunk-UWM2ZPGS.js.map → chunk-K54BDIKL.js.map} +0 -0
- /package/dist/{chunk-QVLJFJBU.js.map → chunk-KOJC3TH4.js.map} +0 -0
- /package/dist/{chunk-YP5DXGGC.js.map → chunk-LHHHJIDR.js.map} +0 -0
- /package/dist/{chunk-LUFOAMN5.js.map → chunk-O3NOGKMT.js.map} +0 -0
- /package/dist/{chunk-GZSQIOAH.js.map → chunk-ORYA2G7S.js.map} +0 -0
- /package/dist/{chunk-XL44IXBO.js.map → chunk-RIN6Z56W.js.map} +0 -0
- /package/dist/{chunk-QHCY4MBG.js.map → chunk-TLSP5JKG.js.map} +0 -0
- /package/dist/{chunk-CZXN63A4.js.map → chunk-UWY5PUHR.js.map} +0 -0
- /package/dist/{chunk-HYCHLMP7.js.map → chunk-XMVSQIK4.js.map} +0 -0
- /package/dist/{chunk-TZREEZ4C.js.map → chunk-XRBM6PBD.js.map} +0 -0
- /package/dist/{chunk-MGFI4226.js.map → chunk-YIGFQWZV.js.map} +0 -0
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import {
|
|
2
|
+
ReleaseIdSchema
|
|
3
|
+
} from "./chunk-H3JZ3P5T.js";
|
|
4
|
+
|
|
5
|
+
// src/learning-credentials.ts
|
|
6
|
+
import { z } from "zod";
|
|
7
|
+
import { LearningRevisionRefSchema } from "@openpond/evals/learning";
|
|
8
|
+
import { TaskSplitSchema } from "@openpond/evals/tasksets";
|
|
9
|
+
var LearningSourceCredentialSchema = z.object({
|
|
10
|
+
id: ReleaseIdSchema,
|
|
11
|
+
scope: ReleaseIdSchema,
|
|
12
|
+
sourceId: ReleaseIdSchema,
|
|
13
|
+
name: z.string().trim().min(1).max(100),
|
|
14
|
+
keyPrefix: z.string().min(1).max(100),
|
|
15
|
+
createdAt: z.iso.datetime(),
|
|
16
|
+
expiresAt: z.iso.datetime(),
|
|
17
|
+
revokedAt: z.iso.datetime().nullable()
|
|
18
|
+
}).strict();
|
|
19
|
+
var LearningSourceCredentialSecretSchema = z.string().regex(/^opk_key_[A-Za-z0-9]{16}_[A-Za-z0-9]{48}$/);
|
|
20
|
+
var LearningSourceCredentialRequestSchema = z.discriminatedUnion("action", [
|
|
21
|
+
z.object({ action: z.literal("create"), scope: ReleaseIdSchema, sourceId: ReleaseIdSchema, name: z.string().trim().min(1).max(100), expiresAt: z.iso.datetime(), operationId: ReleaseIdSchema, apiKey: LearningSourceCredentialSecretSchema }).strict(),
|
|
22
|
+
z.object({ action: z.literal("list"), scope: ReleaseIdSchema, sourceId: ReleaseIdSchema, afterId: ReleaseIdSchema.optional(), limit: z.number().int().min(1).max(100).default(30) }).strict(),
|
|
23
|
+
z.object({ action: z.literal("revoke"), scope: ReleaseIdSchema, sourceId: ReleaseIdSchema, id: ReleaseIdSchema }).strict()
|
|
24
|
+
]);
|
|
25
|
+
var LearningSourceCredentialCreatedSchema = z.object({ credential: LearningSourceCredentialSchema, apiKey: LearningSourceCredentialSecretSchema }).strict();
|
|
26
|
+
var LearningSourceCredentialPageSchema = z.object({ items: z.array(LearningSourceCredentialSchema).max(100), nextCursor: ReleaseIdSchema.nullable() }).strict();
|
|
27
|
+
var LearningSourceConfigurationRequestSchema = z.object({ scope: ReleaseIdSchema, sourceId: ReleaseIdSchema }).strict();
|
|
28
|
+
var LearningSourceConfigurationSchema = z.object({
|
|
29
|
+
scope: ReleaseIdSchema,
|
|
30
|
+
source: LearningRevisionRefSchema,
|
|
31
|
+
taskDefinition: LearningRevisionRefSchema,
|
|
32
|
+
enabled: z.boolean(),
|
|
33
|
+
allowedSplits: z.array(TaskSplitSchema).min(1).max(4)
|
|
34
|
+
}).strict();
|
|
35
|
+
function createSourceCredentialRequest(input) {
|
|
36
|
+
return { ...input, operationId: crypto.randomUUID(), apiKey: `opk_key_${randomToken(16)}_${randomToken(48)}` };
|
|
37
|
+
}
|
|
38
|
+
function randomToken(length) {
|
|
39
|
+
const alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
|
|
40
|
+
let value = "";
|
|
41
|
+
while (value.length < length) {
|
|
42
|
+
for (const byte of crypto.getRandomValues(new Uint8Array(64))) {
|
|
43
|
+
if (byte < 248) value += alphabet[byte % 62];
|
|
44
|
+
if (value.length === length) return value;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return value;
|
|
48
|
+
}
|
|
49
|
+
function assertLearningCredentialExpiry(expiresAt, now) {
|
|
50
|
+
const expires = Date.parse(z.iso.datetime().parse(expiresAt));
|
|
51
|
+
if (expires <= now.getTime() || expires > now.getTime() + 90 * 24 * 60 * 60 * 1e3) throw new Error("Source credentials must expire within 90 days.");
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export {
|
|
55
|
+
LearningSourceCredentialSchema,
|
|
56
|
+
LearningSourceCredentialSecretSchema,
|
|
57
|
+
LearningSourceCredentialRequestSchema,
|
|
58
|
+
LearningSourceCredentialCreatedSchema,
|
|
59
|
+
LearningSourceCredentialPageSchema,
|
|
60
|
+
LearningSourceConfigurationRequestSchema,
|
|
61
|
+
LearningSourceConfigurationSchema,
|
|
62
|
+
createSourceCredentialRequest,
|
|
63
|
+
assertLearningCredentialExpiry
|
|
64
|
+
};
|
|
65
|
+
//# sourceMappingURL=chunk-IZ26ZCGU.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/learning-credentials.ts"],"sourcesContent":["import { z } from \"zod\";\nimport { ReleaseIdSchema } from \"@openpond/harness\";\nimport { LearningRevisionRefSchema } from \"@openpond/evals/learning\";\nimport { TaskSplitSchema } from \"@openpond/evals/tasksets\";\n\n/** Source credentials can submit evidence and feedback for one source only. */\nexport const LearningSourceCredentialSchema = z.object({\n id: ReleaseIdSchema,\n scope: ReleaseIdSchema,\n sourceId: ReleaseIdSchema,\n name: z.string().trim().min(1).max(100),\n keyPrefix: z.string().min(1).max(100),\n createdAt: z.iso.datetime(),\n expiresAt: z.iso.datetime(),\n revokedAt: z.iso.datetime().nullable(),\n}).strict();\nexport type LearningSourceCredential = z.infer<typeof LearningSourceCredentialSchema>;\nexport const LearningSourceCredentialSecretSchema = z.string().regex(/^opk_key_[A-Za-z0-9]{16}_[A-Za-z0-9]{48}$/);\n\nexport const LearningSourceCredentialRequestSchema = z.discriminatedUnion(\"action\", [\n z.object({ action: z.literal(\"create\"), scope: ReleaseIdSchema, sourceId: ReleaseIdSchema, name: z.string().trim().min(1).max(100), expiresAt: z.iso.datetime(), operationId: ReleaseIdSchema, apiKey: LearningSourceCredentialSecretSchema }).strict(),\n z.object({ action: z.literal(\"list\"), scope: ReleaseIdSchema, sourceId: ReleaseIdSchema, afterId: ReleaseIdSchema.optional(), limit: z.number().int().min(1).max(100).default(30) }).strict(),\n z.object({ action: z.literal(\"revoke\"), scope: ReleaseIdSchema, sourceId: ReleaseIdSchema, id: ReleaseIdSchema }).strict(),\n]);\nexport type LearningSourceCredentialRequest = z.infer<typeof LearningSourceCredentialRequestSchema>;\nexport const LearningSourceCredentialCreatedSchema = z.object({ credential: LearningSourceCredentialSchema, apiKey: LearningSourceCredentialSecretSchema }).strict();\nexport const LearningSourceCredentialPageSchema = z.object({ items: z.array(LearningSourceCredentialSchema).max(100), nextCursor: ReleaseIdSchema.nullable() }).strict();\nexport const LearningSourceConfigurationRequestSchema = z.object({ scope: ReleaseIdSchema, sourceId: ReleaseIdSchema }).strict();\nexport const LearningSourceConfigurationSchema = z.object({\n scope: ReleaseIdSchema, source: LearningRevisionRefSchema, taskDefinition: LearningRevisionRefSchema,\n enabled: z.boolean(), allowedSplits: z.array(TaskSplitSchema).min(1).max(4),\n}).strict();\n\n/** Keep this request in memory for retries. Hosts persist hashes, never its secret. */\nexport function createSourceCredentialRequest(input: { sourceId: string; name: string; expiresAt: string }) {\n return { ...input, operationId: crypto.randomUUID(), apiKey: `opk_key_${randomToken(16)}_${randomToken(48)}` };\n}\n\nfunction randomToken(length: number): string {\n const alphabet = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n let value = \"\";\n while (value.length < length) {\n for (const byte of crypto.getRandomValues(new Uint8Array(64))) {\n // Rejection sampling avoids modulo bias in the 62-character alphabet.\n if (byte < 248) value += alphabet[byte % 62];\n if (value.length === length) return value;\n }\n }\n return value;\n}\n\n/** Hosts enforce expiry when issuing and authenticating; tokens are never permanent. */\nexport function assertLearningCredentialExpiry(expiresAt: string, now: Date): void {\n const expires = Date.parse(z.iso.datetime().parse(expiresAt));\n if (expires <= now.getTime() || expires > now.getTime() + 90 * 24 * 60 * 60 * 1_000) throw new Error(\"Source credentials must expire within 90 days.\");\n}\n"],"mappings":";;;;;AAAA,SAAS,SAAS;AAElB,SAAS,iCAAiC;AAC1C,SAAS,uBAAuB;AAGzB,IAAM,iCAAiC,EAAE,OAAO;AAAA,EACrD,IAAI;AAAA,EACJ,OAAO;AAAA,EACP,UAAU;AAAA,EACV,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG;AAAA,EACtC,WAAW,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG;AAAA,EACpC,WAAW,EAAE,IAAI,SAAS;AAAA,EAC1B,WAAW,EAAE,IAAI,SAAS;AAAA,EAC1B,WAAW,EAAE,IAAI,SAAS,EAAE,SAAS;AACvC,CAAC,EAAE,OAAO;AAEH,IAAM,uCAAuC,EAAE,OAAO,EAAE,MAAM,2CAA2C;AAEzG,IAAM,wCAAwC,EAAE,mBAAmB,UAAU;AAAA,EAClF,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,QAAQ,GAAG,OAAO,iBAAiB,UAAU,iBAAiB,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,GAAG,WAAW,EAAE,IAAI,SAAS,GAAG,aAAa,iBAAiB,QAAQ,qCAAqC,CAAC,EAAE,OAAO;AAAA,EACtP,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,MAAM,GAAG,OAAO,iBAAiB,UAAU,iBAAiB,SAAS,gBAAgB,SAAS,GAAG,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,QAAQ,EAAE,EAAE,CAAC,EAAE,OAAO;AAAA,EAC5L,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,QAAQ,GAAG,OAAO,iBAAiB,UAAU,iBAAiB,IAAI,gBAAgB,CAAC,EAAE,OAAO;AAC3H,CAAC;AAEM,IAAM,wCAAwC,EAAE,OAAO,EAAE,YAAY,gCAAgC,QAAQ,qCAAqC,CAAC,EAAE,OAAO;AAC5J,IAAM,qCAAqC,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,8BAA8B,EAAE,IAAI,GAAG,GAAG,YAAY,gBAAgB,SAAS,EAAE,CAAC,EAAE,OAAO;AAChK,IAAM,2CAA2C,EAAE,OAAO,EAAE,OAAO,iBAAiB,UAAU,gBAAgB,CAAC,EAAE,OAAO;AACxH,IAAM,oCAAoC,EAAE,OAAO;AAAA,EACxD,OAAO;AAAA,EAAiB,QAAQ;AAAA,EAA2B,gBAAgB;AAAA,EAC3E,SAAS,EAAE,QAAQ;AAAA,EAAG,eAAe,EAAE,MAAM,eAAe,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC;AAC5E,CAAC,EAAE,OAAO;AAGH,SAAS,8BAA8B,OAA8D;AAC1G,SAAO,EAAE,GAAG,OAAO,aAAa,OAAO,WAAW,GAAG,QAAQ,WAAW,YAAY,EAAE,CAAC,IAAI,YAAY,EAAE,CAAC,GAAG;AAC/G;AAEA,SAAS,YAAY,QAAwB;AAC3C,QAAM,WAAW;AACjB,MAAI,QAAQ;AACZ,SAAO,MAAM,SAAS,QAAQ;AAC5B,eAAW,QAAQ,OAAO,gBAAgB,IAAI,WAAW,EAAE,CAAC,GAAG;AAE7D,UAAI,OAAO,IAAK,UAAS,SAAS,OAAO,EAAE;AAC3C,UAAI,MAAM,WAAW,OAAQ,QAAO;AAAA,IACtC;AAAA,EACF;AACA,SAAO;AACT;AAGO,SAAS,+BAA+B,WAAmB,KAAiB;AACjF,QAAM,UAAU,KAAK,MAAM,EAAE,IAAI,SAAS,EAAE,MAAM,SAAS,CAAC;AAC5D,MAAI,WAAW,IAAI,QAAQ,KAAK,UAAU,IAAI,QAAQ,IAAI,KAAK,KAAK,KAAK,KAAK,IAAO,OAAM,IAAI,MAAM,gDAAgD;AACvJ;","names":[]}
|
|
@@ -2,7 +2,7 @@ import {
|
|
|
2
2
|
TasksetSchema,
|
|
3
3
|
computeTasksetHash,
|
|
4
4
|
createTasksetDraft
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-GHPCQXG5.js";
|
|
6
6
|
import {
|
|
7
7
|
GraderFixtureSchema,
|
|
8
8
|
GraderSpecSchema,
|
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
decodeTasksetPackageFile,
|
|
12
12
|
resolveTasksetPackageInstructions,
|
|
13
13
|
validateTasksetPackage
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-IFBCLRBM.js";
|
|
15
15
|
import {
|
|
16
16
|
contentHash
|
|
17
17
|
} from "./chunk-H3JZ3P5T.js";
|
|
@@ -266,4 +266,4 @@ export {
|
|
|
266
266
|
prepareImportedTasksetPackage,
|
|
267
267
|
tasksetPackageSourceId
|
|
268
268
|
};
|
|
269
|
-
//# sourceMappingURL=chunk-
|
|
269
|
+
//# sourceMappingURL=chunk-JBYFD3QS.js.map
|
|
@@ -5,10 +5,10 @@ import {
|
|
|
5
5
|
computeTasksetHash,
|
|
6
6
|
draftPublishIssues,
|
|
7
7
|
validateTaskset
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-GHPCQXG5.js";
|
|
9
9
|
import {
|
|
10
10
|
TaskDataRecordSchema
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-IFBCLRBM.js";
|
|
12
12
|
import {
|
|
13
13
|
TasksetDraftFileContentSchema,
|
|
14
14
|
TasksetDraftFileMutationSchema,
|
|
@@ -487,4 +487,4 @@ export {
|
|
|
487
487
|
tasksetDraftFromTaskset,
|
|
488
488
|
publishTasksetDraft
|
|
489
489
|
};
|
|
490
|
-
//# sourceMappingURL=chunk-
|
|
490
|
+
//# sourceMappingURL=chunk-JDQVAG3R.js.map
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
ExperimentGraderSelectionSchema
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-C4W2MEFP.js";
|
|
4
4
|
import {
|
|
5
5
|
ModelTasksetRunRequestSchema
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-ZYDDHHZZ.js";
|
|
7
7
|
|
|
8
8
|
// src/experiment-run-contracts.ts
|
|
9
9
|
import { z } from "zod";
|
|
@@ -28,4 +28,4 @@ var RunExperimentSchema = z.object({
|
|
|
28
28
|
export {
|
|
29
29
|
RunExperimentSchema
|
|
30
30
|
};
|
|
31
|
-
//# sourceMappingURL=chunk-
|
|
31
|
+
//# sourceMappingURL=chunk-K54BDIKL.js.map
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
2
|
validateTasksetPackage
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-IFBCLRBM.js";
|
|
4
4
|
import {
|
|
5
5
|
RunExperimentSchema
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-K54BDIKL.js";
|
|
7
7
|
import {
|
|
8
8
|
ExperimentScoringRequestSchema,
|
|
9
9
|
verifyExperimentScoringPass
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-LHHHJIDR.js";
|
|
11
11
|
import {
|
|
12
12
|
fetchConnectedJson
|
|
13
13
|
} from "./chunk-O6FKHAWN.js";
|
|
@@ -18,13 +18,13 @@ import {
|
|
|
18
18
|
ExperimentListQuerySchema,
|
|
19
19
|
PrepareHarnessExperimentSchema,
|
|
20
20
|
PreparedHarnessExperimentSchema
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-C4W2MEFP.js";
|
|
22
22
|
import {
|
|
23
23
|
ModelTasksetRunDetailsSchema,
|
|
24
24
|
ModelTasksetRunRequestSchema,
|
|
25
25
|
verifyHarnessExperimentManifest,
|
|
26
26
|
verifyModelTasksetRunDetails
|
|
27
|
-
} from "./chunk-
|
|
27
|
+
} from "./chunk-ZYDDHHZZ.js";
|
|
28
28
|
import {
|
|
29
29
|
ImmutableReleaseRefSchema,
|
|
30
30
|
contentHash
|
|
@@ -652,4 +652,4 @@ export {
|
|
|
652
652
|
ProfileEvaluationDiscoveryRequestSchema,
|
|
653
653
|
OpenPondProfileEvaluationDiscoveryClient
|
|
654
654
|
};
|
|
655
|
-
//# sourceMappingURL=chunk-
|
|
655
|
+
//# sourceMappingURL=chunk-KOJC3TH4.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
ExperimentFieldMappingsSchema,
|
|
3
3
|
ExperimentGraderPinSchema
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-C4W2MEFP.js";
|
|
5
5
|
import {
|
|
6
6
|
ImmutableReleaseRefSchema,
|
|
7
7
|
contentHash
|
|
@@ -67,4 +67,4 @@ export {
|
|
|
67
67
|
ExperimentScoringPassSchema,
|
|
68
68
|
verifyExperimentScoringPass
|
|
69
69
|
};
|
|
70
|
-
//# sourceMappingURL=chunk-
|
|
70
|
+
//# sourceMappingURL=chunk-LHHHJIDR.js.map
|
|
@@ -3,18 +3,20 @@ import {
|
|
|
3
3
|
validateModelStarterExecution,
|
|
4
4
|
validateModelTasksetPackage,
|
|
5
5
|
validateTasksetPackage
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-IFBCLRBM.js";
|
|
7
7
|
import {
|
|
8
8
|
ModelProjectBaseModelSchema,
|
|
9
9
|
ModelProjectRecipeDocumentSchema,
|
|
10
10
|
ModelProjectTrainingMethodSchema,
|
|
11
11
|
ModelProjectTrainingSetupSchema,
|
|
12
|
-
ModelProjectVersionedRefSchema
|
|
13
|
-
|
|
14
|
-
} from "./chunk-YSEYPMQ3.js";
|
|
12
|
+
ModelProjectVersionedRefSchema
|
|
13
|
+
} from "./chunk-UOV2LEXS.js";
|
|
15
14
|
import {
|
|
16
15
|
ModelInitialLearningSchema
|
|
17
16
|
} from "./chunk-CL3IOOVL.js";
|
|
17
|
+
import {
|
|
18
|
+
canonicalSha256
|
|
19
|
+
} from "./chunk-B3ZHJ2KK.js";
|
|
18
20
|
import {
|
|
19
21
|
contentHash
|
|
20
22
|
} from "./chunk-H3JZ3P5T.js";
|
|
@@ -334,4 +336,4 @@ export {
|
|
|
334
336
|
previewModelStarter,
|
|
335
337
|
validateResolvedModelStarter
|
|
336
338
|
};
|
|
337
|
-
//# sourceMappingURL=chunk-
|
|
339
|
+
//# sourceMappingURL=chunk-NKF5NIML.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/model-starters.ts","../src/model-training-defaults.ts"],"sourcesContent":["import { z } from \"zod\";\nimport { ModelInitialLearningSchema } from \"./model-learning-intent.js\";\nimport { TasksetReleaseSchema, assertTasksetRelease } from \"@openpond/evals/tasksets\";\nimport { LearningTextAssetSchema, TaskDefinitionSchema, learningRef, sameLearningRef, sealLearningContent } from \"@openpond/evals/learning\";\nimport { RewardBindingSchema, RewardReleaseSchema, compileBoundGraders } from \"@openpond/evals/rewards\";\nimport { assertBoundedTaskJson, validateTaskValue } from \"@openpond/evals/task-schema\";\n\nimport { ModelProjectBaseModelSchema, ModelProjectRecipeDocumentSchema, ModelProjectTrainingMethodSchema, ModelProjectVersionedRefSchema, ModelProjectTrainingSetupSchema } from \"./model-projects.js\";\nimport { canonicalSha256 } from \"./protocol.js\";\nimport { ModelStarterExecutionSchema, validateModelStarterExecution } from \"./model-starter-execution.js\";\n\nexport { ModelStarterExecutionSchema, ModelStarterEnvironmentAttemptSchema, verifyModelStarterEnvironmentAttempt, ModelStarterToolFixtureScriptSchema, createModelStarterExecutionAsset, modelStarterExecutionAssetId, resolveModelStarterExecutionAsset, type ModelStarterExecution, type ModelStarterExecutionContext } from \"./model-starter-execution.js\";\nexport { NativeHarnessExperimentAttemptSchema, verifyNativeHarnessExperimentAttempt, type NativeHarnessExperimentAttempt } from \"./model-starter-execution.js\";\nexport { ModelTasksetDerivationSchema, ModelTasksetPackageSchema, deriveModelTaskset, validateModelTasksetPackage, type ModelTasksetPackage } from \"./model-taskset-derivation.js\";\nexport { ModelTasksetExecutionResourcesSchema, createModelTasksetExecutionResourcesAsset, modelTasksetExecutionResourcesAssetId, resolveModelTasksetExecutionResourcesAsset } from \"./model-taskset-resources.js\";\nexport { prepareModelTrainingDefaults, createModelTrainingRecipeDefaults, rebindModelTrainingRecipe } from \"./model-training-defaults.js\";\n\nconst IdSchema = z.string().trim().min(1).max(500);\nconst RefSchema = ModelProjectVersionedRefSchema;\n\n/** Catalog records contain references and previews, never the private task rows. */\nexport const ModelStarterContentSchema = z.object({\n schemaVersion: z.literal(\"openpond.modelStarter.v1\"),\n id: IdSchema,\n revision: z.number().int().positive(),\n name: z.string().trim().min(1).max(200),\n description: z.string().trim().min(1).max(2_000),\n category: z.enum([\"extraction\", \"support\", \"operations\", \"knowledge\", \"coding\", \"writing\", \"classification\"]),\n taskset: RefSchema,\n taskDefinition: RefSchema,\n rewardBinding: RefSchema,\n rewards: z.array(RefSchema).min(1).max(100),\n assets: z.array(RefSchema).max(1_000),\n previewTaskIds: z.array(IdSchema).min(1).max(8),\n startingModel: ModelProjectBaseModelSchema,\n supportedMethods: z.array(ModelProjectTrainingMethodSchema).min(1).max(8),\n defaultMethod: ModelProjectTrainingMethodSchema,\n provenance: z.object({ author: z.string().min(1).max(200), license: z.string().min(1).max(200), sourceDescription: z.string().min(1).max(2_000) }).strict(),\n // These are references to real results. Package publication does not create\n // evidence, qualify a starter, or enable continuous learning.\n evidence: z.object({ verifierFixtures: RefSchema.nullable(), baseline: RefSchema.nullable(), training: RefSchema.nullable(), evaluation: RefSchema.nullable() }).strict(),\n}).strict().superRefine((starter, context) => {\n if (!starter.supportedMethods.includes(starter.defaultMethod)) context.addIssue({ code: \"custom\", path: [\"defaultMethod\"], message: \"The default method must be supported by the package.\" });\n for (const field of [\"rewards\", \"assets\"] as const) {\n if (new Set(starter[field].map(ref => ref.id)).size !== starter[field].length) context.addIssue({ code: \"custom\", path: [field], message: \"Dependency identities must be unique.\" });\n }\n if (new Set(starter.previewTaskIds).size !== starter.previewTaskIds.length) context.addIssue({ code: \"custom\", path: [\"previewTaskIds\"], message: \"Preview tasks must be unique.\" });\n});\nexport const ModelStarterSchema = ModelStarterContentSchema.safeExtend({ contentHash: z.string().regex(/^[a-f0-9]{64}$/) });\nexport type ModelStarter = z.infer<typeof ModelStarterSchema>;\n\n/** A resolved small package, obtained separately from catalog discovery.\n * Large Tasksets remain manifest/shard resources; they are not list payloads. */\nexport const ResolvedModelStarterSchema = z.object({\n starter: ModelStarterSchema,\n taskset: TasksetReleaseSchema,\n taskDefinition: TaskDefinitionSchema,\n rewardBinding: RewardBindingSchema,\n rewards: z.array(RewardReleaseSchema).min(1).max(100),\n assets: z.array(LearningTextAssetSchema).max(1_000),\n execution: ModelStarterExecutionSchema.optional(),\n}).strict();\nexport type ResolvedModelStarter = z.infer<typeof ResolvedModelStarterSchema>;\n\n/** Publisher attestation for original synthetic contact data, never a caller\n * override for arbitrary imports or for a failed secret scan. */\nexport const ModelStarterPrivacyReviewSchema = z.object({\n schemaVersion: z.literal(\"openpond.modelStarterPrivacyReview.v1\"),\n disposition: z.literal(\"synthetic_only\"),\n reviewedBy: z.string().trim().min(1).max(500), reviewedAt: z.iso.datetime(),\n reviewedContentHash: z.string().regex(/^[a-f0-9]{64}$/),\n note: z.string().trim().min(1).max(2_000),\n}).strict();\nexport function modelStarterPrivacyContentHash(value: ResolvedModelStarter): string {\n const { contentHash: _starterHash, ...starter } = value.starter;\n const { contentHash: _tasksetHash, ...taskset } = value.taskset;\n const { contentHash: _referenceHash, ...tasksetRef } = starter.taskset;\n const metadata = { ...taskset.metadata };\n const authoring = metadata.starterAuthoring;\n if (authoring && typeof authoring === \"object\" && !Array.isArray(authoring)) {\n const { privacyReview: _review, ...content } = authoring as Record<string, unknown>;\n metadata.starterAuthoring = content;\n }\n // Exclude only the attestation and hashes that contain that attestation.\n return sealLearningContent({ ...value, starter: { ...starter, taskset: tasksetRef }, taskset: { ...taskset, metadata } }).contentHash;\n}\n\n/** Final creation intent. The server resolves package bytes from its catalog;\n * callers cannot supply executable resources or qualification receipts here. */\nexport const ModelStarterCreationIntentSchema = z.object({\n profileId: IdSchema,\n modelId: IdSchema,\n name: z.string().trim().min(1).max(200),\n starter: RefSchema,\n startingModel: ModelProjectBaseModelSchema,\n method: ModelProjectTrainingMethodSchema,\n rewardBindingRef: RefSchema.nullable().optional(),\n recipe: ModelProjectRecipeDocumentSchema.nullable().optional(),\n managedGpuSelection: ModelProjectTrainingSetupSchema.shape.managedGpuSelection,\n continuationAdapterMode: ModelProjectTrainingSetupSchema.shape.continuationAdapterMode,\n learning: ModelInitialLearningSchema.optional(),\n}).strict();\nexport const ModelStarterCreationRequestSchema = ModelStarterCreationIntentSchema.extend({\n schemaVersion: z.literal(\"openpond.modelStarterCreation.v1\"),\n operationId: IdSchema,\n}).strict();\nexport type ModelStarterCreationRequest = z.infer<typeof ModelStarterCreationRequestSchema>;\n\nexport function parseModelStarterCreationRequest(value: unknown): ModelStarterCreationRequest {\n assertBoundedTaskJson(value, 64 * 1024);\n return ModelStarterCreationRequestSchema.parse(value);\n}\n\n/** Prepare once on final confirmation and retain across uncertain transport\n * outcomes. The server must bind operationId to the complete original intent\n * and atomically commit resources, model configuration and the retry receipt. */\nexport async function createModelStarterCreationRequest(\n value: z.input<typeof ModelStarterCreationIntentSchema>,\n): Promise<ModelStarterCreationRequest> {\n assertBoundedTaskJson(value, 64 * 1024);\n const intent = ModelStarterCreationIntentSchema.parse(value);\n return parseModelStarterCreationRequest({\n ...intent,\n schemaVersion: \"openpond.modelStarterCreation.v1\",\n operationId: `model-starter:${await canonicalSha256(intent)}`,\n });\n}\n\n/** Scope authorization belongs to the API. This validates the final intent\n * against the exact trusted package before any user resources are written. */\nexport function validateModelStarterCreation(value: unknown, packageValue: unknown) {\n const request = parseModelStarterCreationRequest(value);\n const resolved = validateResolvedModelStarter(packageValue);\n if (!sameLearningRef(request.starter, learningRef(resolved.starter))) throw new Error(\"Starter creation references a different package revision.\");\n if (!resolved.starter.supportedMethods.includes(request.method)) throw new Error(\"The selected training method is not supported by this starter.\");\n return { request, resolved };\n}\n\n/** Explicit projection keeps frozen examples, expected outputs, privileged\n * context and verifier source out of read-only model-facing previews. */\nexport function previewModelStarter(value: unknown) {\n const { starter, taskset, taskDefinition, rewardBinding, rewards } = validateResolvedModelStarter(value);\n return {\n starter,\n inputSchema: taskDefinition.inputSchema,\n outputSchema: taskDefinition.outputSchema,\n reward: {\n name: rewardBinding.name,\n description: rewardBinding.description,\n checks: rewardBinding.sources.map(source => {\n const reward = rewards.find(reward => sameLearningRef(source.reward, learningRef(reward)))!;\n return { name: reward.name, description: reward.description, kind: reward.implementation.kind, role: source.role, weight: source.weight, required: source.required, hardGate: source.hardGate };\n }),\n },\n tasks: starter.previewTaskIds.map(id => {\n const task = taskset.tasks.find(task => task.id === id)!;\n return { id: task.id, input: task.input, policyVisibleContext: task.policyVisibleContext };\n }),\n counts: {\n train: taskset.tasks.filter(task => task.split === \"train\").length,\n validation: taskset.tasks.filter(task => task.split === \"validation\").length,\n frozenEvaluation: taskset.tasks.filter(task => task.split === \"frozen_eval\").length,\n },\n };\n}\n\n/** Verify the dependency graph before creating user-owned configuration.\n * A matching outer hash alone cannot authorize substituted private graders. */\nexport function validateResolvedModelStarter(value: unknown): ResolvedModelStarter {\n assertBoundedTaskJson(value, 16 * 1024 * 1024);\n const resolved = ResolvedModelStarterSchema.parse(value);\n const { starter, taskset, taskDefinition, rewardBinding, rewards, assets } = resolved;\n const authoring = taskset.metadata.starterAuthoring;\n if (authoring && typeof authoring === \"object\" && !Array.isArray(authoring) && \"privacyReview\" in authoring) {\n const review = ModelStarterPrivacyReviewSchema.parse(authoring.privacyReview);\n if (review.reviewedContentHash !== modelStarterPrivacyContentHash(resolved)) throw new Error(\"Starter privacy review differs from the published contents.\");\n }\n const resources = [starter, taskset, taskDefinition, rewardBinding, ...rewards, ...assets];\n for (const resource of resources) {\n const { contentHash, ...content } = resource;\n if (sealLearningContent(content).contentHash !== contentHash) throw new Error(`Starter resource integrity failed: ${resource.id}.`);\n }\n assertTasksetRelease(taskset);\n validateModelStarterExecution(resolved.execution, taskset, assets);\n function exact(expected: z.infer<typeof RefSchema>, resource: { id: string; revision: number; contentHash: string }) {\n if (!sameLearningRef(expected, learningRef(resource))) throw new Error(`Starter dependency mismatch: ${expected.id}.`);\n }\n exact(starter.taskset, taskset);\n exact(starter.taskDefinition, taskDefinition);\n exact(starter.rewardBinding, rewardBinding);\n exact(taskDefinition.rewardBinding, rewardBinding);\n if (rewardBinding.recipeRef) throw new Error(\"Starter binding recipes must be resolved into a standalone binding before publication.\");\n const { policy, environment, environmentRelease, tools, capabilities, verifierSetRelease } = taskset;\n const execution = { policy, environment, ...(environmentRelease ? { environmentRelease } : {}), tools, capabilities, ...(verifierSetRelease ? { verifierSetRelease } : {}) };\n if (sealLearningContent(execution).contentHash !== sealLearningContent(taskDefinition.execution).contentHash) throw new Error(\"Starter execution context differs from its task format.\");\n if (sealLearningContent({ graders: taskset.graders }).contentHash !== sealLearningContent({ graders: compileBoundGraders(rewardBinding, rewards) }).contentHash) throw new Error(\"Starter executable graders differ from its Reward binding.\");\n for (const [references, values] of [[starter.rewards, rewards], [starter.assets, assets]] as const) {\n if (references.length !== values.length || new Set(values.map(resource => resource.id)).size !== values.length) throw new Error(\"Starter dependency inventory mismatch.\");\n for (const ref of references) {\n const resource = values.find(value => value.id === ref.id);\n if (!resource) throw new Error(`Starter dependency is missing: ${ref.id}.`);\n exact(ref, resource);\n }\n }\n for (const source of rewardBinding.sources) {\n const reward = rewards.find(reward => reward.id === source.reward.id);\n if (!reward) throw new Error(`Starter Reward is missing: ${source.reward.id}.`);\n exact(source.reward, reward);\n }\n for (const reward of rewards) {\n const implementation = reward.implementation;\n const references = [...reward.assets,\n ...(\"verifierRef\" in implementation ? [implementation.verifierRef] : []),\n ...(\"rubricRef\" in implementation ? [implementation.rubricRef] : []),\n ...(\"inputContract\" in implementation ? [implementation.inputContract] : []),\n ];\n for (const ref of references) {\n const asset = assets.find(asset => asset.id === ref.id);\n if (!asset || sealLearningContent(asset.asset).contentHash !== sealLearningContent(ref).contentHash) throw new Error(`Starter Reward source is missing or changed: ${ref.id}.`);\n if (ref.visibility === \"policy\") throw new Error(`Starter Reward source must remain private to its evaluator: ${ref.id}.`);\n }\n }\n if (new Set(taskset.tasks.map(task => task.id)).size !== taskset.tasks.length) throw new Error(\"Starter task identities must be unique.\");\n const inputSplits = new Map<string, string>();\n for (const task of taskset.tasks) {\n if (task.policyVisibleContext.instructions !== taskDefinition.instructions) throw new Error(`Starter task does not carry its declared model instructions: ${task.id}.`);\n const inputHash = sealLearningContent({ input: task.input, context: task.policyVisibleContext }).contentHash;\n const priorSplit = inputSplits.get(inputHash);\n if (priorSplit && priorSplit !== task.split) throw new Error(\"Starter policy input appears in multiple splits.\");\n inputSplits.set(inputHash, task.split);\n if (!validateTaskValue(taskDefinition.inputSchema, task.input).valid) throw new Error(`Starter task input does not match its format: ${task.id}.`);\n if (task.expectedOutput !== null && !validateTaskValue(taskDefinition.outputSchema, task.expectedOutput).valid) throw new Error(`Starter expected output does not match its format: ${task.id}.`);\n }\n for (const id of starter.previewTaskIds) {\n const task = taskset.tasks.find(task => task.id === id);\n if (!task || task.split === \"frozen_eval\") throw new Error(`Starter preview task is unavailable: ${id}.`);\n }\n return resolved;\n}\n","import { contentHash } from \"@openpond/harness\";\nimport { compileBoundGraders } from \"@openpond/evals/rewards\";\nimport { validateModelTasksetPackage } from \"./model-taskset-derivation.js\";\nimport { ModelProjectTrainingSetupSchema, type ModelProjectTrainingSetup } from \"./model-projects.js\";\n\nfunction fields(value: unknown): Record<string, unknown> {\n return value && typeof value === \"object\" && !Array.isArray(value) ? value as Record<string, unknown> : {};\n}\n\n/** Editable GRPO defaults are available before tasks/base/grader are bound.\n * This draft never authorizes execution; package preparation binds those inputs. */\nexport function createModelTrainingRecipeDefaults(saved?: ModelProjectTrainingSetup[\"recipe\"]): NonNullable<ModelProjectTrainingSetup[\"recipe\"]> {\n const defaults = {\n schemaVersion: \"openpond.rftRecipe.v1\", method: \"grpo\" as const, parameterization: \"lora\" as const,\n lora: { rank: 2 },\n rollout: { groupSize: 8, concurrency: 4, maxOutputTokens: 1_024, temperature: 0.8, topP: 0.95, seed: 17 },\n optimizer: { learningRate: 0.0001, maxSteps: 8, clipRange: 0.2, iterations: 2,\n microbatchSize: 1, gradientAccumulationSteps: 8, advantageEpsilon: 1e-8,\n adamw: { name: \"adamw\", weightDecay: 0, beta1: 0.9, beta2: 0.999, epsilon: 1e-8 } },\n loss: { method: \"grpo\", klBeta: 0.01 },\n resourceLimits: { wallTimeMs: 66 * 60 * 1_000, maxRollouts: 64, maxPayloadBytes: 1_000_000 },\n policyOptimization: null,\n };\n return {\n ...defaults, ...saved,\n lora: { ...defaults.lora, ...fields(saved?.lora) },\n rollout: { ...defaults.rollout, ...fields(saved?.rollout) },\n optimizer: { ...defaults.optimizer, ...fields(saved?.optimizer),\n adamw: { ...defaults.optimizer.adamw, ...fields(fields(saved?.optimizer).adamw) } },\n loss: { ...defaults.loss, ...fields(saved?.loss) },\n resourceLimits: { ...defaults.resourceLimits, ...fields(saved?.resourceLimits) },\n };\n}\n\n/** Changing source inputs invalidates only their bindings, preserving the\n * caller's optimizer, rollout, adapter, loss and budget settings. */\nexport function rebindModelTrainingRecipe(saved: ModelProjectTrainingSetup[\"recipe\"]) {\n const { baseModel: _base, reward: _reward, policyOptimization: _compiled, ...recipe } = createModelTrainingRecipeDefaults(saved);\n // Split names and the derived source population belong to the new package.\n // Retain authoring controls such as prompt length/selection strategy.\n const { trainSplit: _train, validationSplit: _validation, maxExamples: _population, ...dataset } = fields(recipe.dataset);\n return { ...recipe, dataset, policyOptimization: null };\n}\nimport { validateTasksetPackage } from \"./taskset-package-contracts.js\";\n\n/** Saved defaults do not authorize execution. The Run review still owns the\n * budget, runtime admission and exact training/evaluation population checks. */\nexport function prepareModelTrainingDefaults(input: {\n setup: ModelProjectTrainingSetup;\n package: unknown;\n}): ModelProjectTrainingSetup {\n const setup = ModelProjectTrainingSetupSchema.parse(input.setup);\n const portable = typeof input.package === \"object\" && input.package !== null\n && \"schemaVersion\" in input.package && input.package.schemaVersion === \"openpond.tasksetPackage.v1\"\n ? validateTasksetPackage(input.package) : null;\n const bound = portable ? null : validateModelTasksetPackage(input.package);\n const source = portable ?? bound!;\n const ref = setup.tasksetRef;\n const selected = ref && ref.revision === source.taskset.revision && (portable\n ? (ref.id === portable.taskset.id && ref.contentHash === portable.taskset.contentHash)\n || (ref.id === portable.taskset.metadata.sourceTasksetId && ref.contentHash === portable.taskset.metadata.sourceTasksetHash)\n : ref.id === source.taskset.id);\n if (!selected) return setup;\n if (!setup.evaluationTasksetRef && source.taskset.tasks.some(task => task.split === \"frozen_eval\" || task.split === \"validation\")) {\n setup.evaluationTasksetRef = setup.tasksetRef;\n }\n const base = setup.baseModel;\n if (setup.method !== \"grpo\" || (setup.recipe && setup.recipe.method !== \"grpo\") || !base?.revision\n || !base.tokenizerRevision || !base.chatTemplateHash) return setup;\n // Existing bound recipes retain their exact explicit settings and the\n // compiler's absent-field semantics. Only an unbound authoring draft needs\n // package-derived defaults; source changes explicitly invalidate bindings.\n if (setup.recipe?.baseModel && setup.recipe.reward && setup.recipe.dataset) return setup;\n const training = source.taskset.tasks.filter(task => task.split === \"train\");\n const graders = portable ? portable.taskset.graders : compileBoundGraders(bound!.rewardBinding, bound!.rewards);\n const grader = graders.find(candidate => candidate.rewardEligible && candidate.weight > 0);\n const environment = portable?.environment ?? bound?.executionResources?.environment ?? bound?.execution?.environment;\n if (!training.length || !grader || !environment) return setup;\n const recipe = createModelTrainingRecipeDefaults(setup.recipe);\n return ModelProjectTrainingSetupSchema.parse({\n ...setup,\n recipe: {\n ...recipe,\n baseModel: { id: base.modelId, revision: base.revision,\n tokenizerRevision: base.tokenizerRevision, chatTemplateHash: base.chatTemplateHash },\n dataset: { trainSplit: \"train\", validationSplit: source.taskset.tasks.some(task => task.split === \"frozen_eval\") ? \"frozen_eval\" : \"validation\",\n maxPromptTokens: 4_096, maxExamples: Math.min(1_000, training.length), selectionStrategy: \"stable_hash_top_n\", ...fields(recipe.dataset) },\n rollout: { maxTurns: source.taskset.environment.kind === \"text\" ? 1 : 15, ...fields(recipe.rollout) },\n reward: { graderId: grader.id, graderHash: contentHash(graders),\n environmentId: environment.id, environmentVersion: String(environment.revision),\n toolContractHash: contentHash(source.taskset.tools), learnedPreference: fields(recipe.reward).learnedPreference ?? null },\n },\n });\n}\n"],"mappings":"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","names":["compileBoundGraders","reward","task","contentHash","compileBoundGraders","value","asset"]}
|
|
1
|
+
{"version":3,"sources":["../src/model-starters.ts","../src/model-training-defaults.ts"],"sourcesContent":["import { z } from \"zod\";\nimport { ModelInitialLearningSchema } from \"./model-learning-intent.js\";\nimport { TasksetReleaseSchema, assertTasksetRelease } from \"@openpond/evals/tasksets\";\nimport { LearningTextAssetSchema, TaskDefinitionSchema, learningRef, sameLearningRef, sealLearningContent } from \"@openpond/evals/learning\";\nimport { RewardBindingSchema, RewardReleaseSchema, compileBoundGraders } from \"@openpond/evals/rewards\";\nimport { assertBoundedTaskJson, validateTaskValue } from \"@openpond/evals/task-schema\";\n\nimport { ModelProjectBaseModelSchema, ModelProjectRecipeDocumentSchema, ModelProjectTrainingMethodSchema, ModelProjectVersionedRefSchema, ModelProjectTrainingSetupSchema } from \"./model-projects.js\";\nimport { canonicalSha256 } from \"./protocol.js\";\nimport { ModelStarterExecutionSchema, validateModelStarterExecution } from \"./model-starter-execution.js\";\n\nexport { ModelStarterExecutionSchema, ModelStarterEnvironmentAttemptSchema, verifyModelStarterEnvironmentAttempt, ModelStarterToolFixtureScriptSchema, createModelStarterExecutionAsset, modelStarterExecutionAssetId, resolveModelStarterExecutionAsset, type ModelStarterExecution, type ModelStarterExecutionContext } from \"./model-starter-execution.js\";\nexport { NativeHarnessExperimentAttemptSchema, verifyNativeHarnessExperimentAttempt, type NativeHarnessExperimentAttempt } from \"./model-starter-execution.js\";\nexport { ModelTasksetDerivationSchema, ModelTasksetPackageSchema, deriveModelTaskset, validateModelTasksetPackage, type ModelTasksetPackage } from \"./model-taskset-derivation.js\";\nexport { ModelTasksetExecutionResourcesSchema, createModelTasksetExecutionResourcesAsset, modelTasksetExecutionResourcesAssetId, resolveModelTasksetExecutionResourcesAsset } from \"./model-taskset-resources.js\";\nexport { prepareModelTrainingDefaults, createModelTrainingRecipeDefaults, rebindModelTrainingRecipe } from \"./model-training-defaults.js\";\n\nconst IdSchema = z.string().trim().min(1).max(500);\nconst RefSchema = ModelProjectVersionedRefSchema;\n\n/** Catalog records contain references and previews, never the private task rows. */\nexport const ModelStarterContentSchema = z.object({\n schemaVersion: z.literal(\"openpond.modelStarter.v1\"),\n id: IdSchema,\n revision: z.number().int().positive(),\n name: z.string().trim().min(1).max(200),\n description: z.string().trim().min(1).max(2_000),\n category: z.enum([\"extraction\", \"support\", \"operations\", \"knowledge\", \"coding\", \"writing\", \"classification\"]),\n taskset: RefSchema,\n taskDefinition: RefSchema,\n rewardBinding: RefSchema,\n rewards: z.array(RefSchema).min(1).max(100),\n assets: z.array(RefSchema).max(1_000),\n previewTaskIds: z.array(IdSchema).min(1).max(8),\n startingModel: ModelProjectBaseModelSchema,\n supportedMethods: z.array(ModelProjectTrainingMethodSchema).min(1).max(8),\n defaultMethod: ModelProjectTrainingMethodSchema,\n provenance: z.object({ author: z.string().min(1).max(200), license: z.string().min(1).max(200), sourceDescription: z.string().min(1).max(2_000) }).strict(),\n // These are references to real results. Package publication does not create\n // evidence, qualify a starter, or enable continuous learning.\n evidence: z.object({ verifierFixtures: RefSchema.nullable(), baseline: RefSchema.nullable(), training: RefSchema.nullable(), evaluation: RefSchema.nullable() }).strict(),\n}).strict().superRefine((starter, context) => {\n if (!starter.supportedMethods.includes(starter.defaultMethod)) context.addIssue({ code: \"custom\", path: [\"defaultMethod\"], message: \"The default method must be supported by the package.\" });\n for (const field of [\"rewards\", \"assets\"] as const) {\n if (new Set(starter[field].map(ref => ref.id)).size !== starter[field].length) context.addIssue({ code: \"custom\", path: [field], message: \"Dependency identities must be unique.\" });\n }\n if (new Set(starter.previewTaskIds).size !== starter.previewTaskIds.length) context.addIssue({ code: \"custom\", path: [\"previewTaskIds\"], message: \"Preview tasks must be unique.\" });\n});\nexport const ModelStarterSchema = ModelStarterContentSchema.safeExtend({ contentHash: z.string().regex(/^[a-f0-9]{64}$/) });\nexport type ModelStarter = z.infer<typeof ModelStarterSchema>;\n\n/** A resolved small package, obtained separately from catalog discovery.\n * Large Tasksets remain manifest/shard resources; they are not list payloads. */\nexport const ResolvedModelStarterSchema = z.object({\n starter: ModelStarterSchema,\n taskset: TasksetReleaseSchema,\n taskDefinition: TaskDefinitionSchema,\n rewardBinding: RewardBindingSchema,\n rewards: z.array(RewardReleaseSchema).min(1).max(100),\n assets: z.array(LearningTextAssetSchema).max(1_000),\n execution: ModelStarterExecutionSchema.optional(),\n}).strict();\nexport type ResolvedModelStarter = z.infer<typeof ResolvedModelStarterSchema>;\n\n/** Publisher attestation for original synthetic contact data, never a caller\n * override for arbitrary imports or for a failed secret scan. */\nexport const ModelStarterPrivacyReviewSchema = z.object({\n schemaVersion: z.literal(\"openpond.modelStarterPrivacyReview.v1\"),\n disposition: z.literal(\"synthetic_only\"),\n reviewedBy: z.string().trim().min(1).max(500), reviewedAt: z.iso.datetime(),\n reviewedContentHash: z.string().regex(/^[a-f0-9]{64}$/),\n note: z.string().trim().min(1).max(2_000),\n}).strict();\nexport function modelStarterPrivacyContentHash(value: ResolvedModelStarter): string {\n const { contentHash: _starterHash, ...starter } = value.starter;\n const { contentHash: _tasksetHash, ...taskset } = value.taskset;\n const { contentHash: _referenceHash, ...tasksetRef } = starter.taskset;\n const metadata = { ...taskset.metadata };\n const authoring = metadata.starterAuthoring;\n if (authoring && typeof authoring === \"object\" && !Array.isArray(authoring)) {\n const { privacyReview: _review, ...content } = authoring as Record<string, unknown>;\n metadata.starterAuthoring = content;\n }\n // Exclude only the attestation and hashes that contain that attestation.\n return sealLearningContent({ ...value, starter: { ...starter, taskset: tasksetRef }, taskset: { ...taskset, metadata } }).contentHash;\n}\n\n/** Final creation intent. The server resolves package bytes from its catalog;\n * callers cannot supply executable resources or qualification receipts here. */\nexport const ModelStarterCreationIntentSchema = z.object({\n profileId: IdSchema,\n modelId: IdSchema,\n name: z.string().trim().min(1).max(200),\n starter: RefSchema,\n startingModel: ModelProjectBaseModelSchema,\n method: ModelProjectTrainingMethodSchema,\n rewardBindingRef: RefSchema.nullable().optional(),\n recipe: ModelProjectRecipeDocumentSchema.nullable().optional(),\n managedGpuSelection: ModelProjectTrainingSetupSchema.shape.managedGpuSelection,\n continuationAdapterMode: ModelProjectTrainingSetupSchema.shape.continuationAdapterMode,\n learning: ModelInitialLearningSchema.optional(),\n}).strict();\nexport const ModelStarterCreationRequestSchema = ModelStarterCreationIntentSchema.extend({\n schemaVersion: z.literal(\"openpond.modelStarterCreation.v1\"),\n operationId: IdSchema,\n}).strict();\nexport type ModelStarterCreationRequest = z.infer<typeof ModelStarterCreationRequestSchema>;\n\nexport function parseModelStarterCreationRequest(value: unknown): ModelStarterCreationRequest {\n assertBoundedTaskJson(value, 64 * 1024);\n return ModelStarterCreationRequestSchema.parse(value);\n}\n\n/** Prepare once on final confirmation and retain across uncertain transport\n * outcomes. The server must bind operationId to the complete original intent\n * and atomically commit resources, model configuration and the retry receipt. */\nexport async function createModelStarterCreationRequest(\n value: z.input<typeof ModelStarterCreationIntentSchema>,\n): Promise<ModelStarterCreationRequest> {\n assertBoundedTaskJson(value, 64 * 1024);\n const intent = ModelStarterCreationIntentSchema.parse(value);\n return parseModelStarterCreationRequest({\n ...intent,\n schemaVersion: \"openpond.modelStarterCreation.v1\",\n operationId: `model-starter:${await canonicalSha256(intent)}`,\n });\n}\n\n/** Scope authorization belongs to the API. This validates the final intent\n * against the exact trusted package before any user resources are written. */\nexport function validateModelStarterCreation(value: unknown, packageValue: unknown) {\n const request = parseModelStarterCreationRequest(value);\n const resolved = validateResolvedModelStarter(packageValue);\n if (!sameLearningRef(request.starter, learningRef(resolved.starter))) throw new Error(\"Starter creation references a different package revision.\");\n if (!resolved.starter.supportedMethods.includes(request.method)) throw new Error(\"The selected training method is not supported by this starter.\");\n return { request, resolved };\n}\n\n/** Explicit projection keeps frozen examples, expected outputs, privileged\n * context and verifier source out of read-only model-facing previews. */\nexport function previewModelStarter(value: unknown) {\n const { starter, taskset, taskDefinition, rewardBinding, rewards } = validateResolvedModelStarter(value);\n return {\n starter,\n inputSchema: taskDefinition.inputSchema,\n outputSchema: taskDefinition.outputSchema,\n reward: {\n name: rewardBinding.name,\n description: rewardBinding.description,\n checks: rewardBinding.sources.map(source => {\n const reward = rewards.find(reward => sameLearningRef(source.reward, learningRef(reward)))!;\n return { name: reward.name, description: reward.description, kind: reward.implementation.kind, role: source.role, weight: source.weight, required: source.required, hardGate: source.hardGate };\n }),\n },\n tasks: starter.previewTaskIds.map(id => {\n const task = taskset.tasks.find(task => task.id === id)!;\n return { id: task.id, input: task.input, policyVisibleContext: task.policyVisibleContext };\n }),\n counts: {\n train: taskset.tasks.filter(task => task.split === \"train\").length,\n validation: taskset.tasks.filter(task => task.split === \"validation\").length,\n frozenEvaluation: taskset.tasks.filter(task => task.split === \"frozen_eval\").length,\n },\n };\n}\n\n/** Verify the dependency graph before creating user-owned configuration.\n * A matching outer hash alone cannot authorize substituted private graders. */\nexport function validateResolvedModelStarter(value: unknown): ResolvedModelStarter {\n assertBoundedTaskJson(value, 16 * 1024 * 1024);\n const resolved = ResolvedModelStarterSchema.parse(value);\n const { starter, taskset, taskDefinition, rewardBinding, rewards, assets } = resolved;\n const authoring = taskset.metadata.starterAuthoring;\n if (authoring && typeof authoring === \"object\" && !Array.isArray(authoring) && \"privacyReview\" in authoring) {\n const review = ModelStarterPrivacyReviewSchema.parse(authoring.privacyReview);\n if (review.reviewedContentHash !== modelStarterPrivacyContentHash(resolved)) throw new Error(\"Starter privacy review differs from the published contents.\");\n }\n const resources = [starter, taskset, taskDefinition, rewardBinding, ...rewards, ...assets];\n for (const resource of resources) {\n const { contentHash, ...content } = resource;\n if (sealLearningContent(content).contentHash !== contentHash) throw new Error(`Starter resource integrity failed: ${resource.id}.`);\n }\n assertTasksetRelease(taskset);\n validateModelStarterExecution(resolved.execution, taskset, assets);\n function exact(expected: z.infer<typeof RefSchema>, resource: { id: string; revision: number; contentHash: string }) {\n if (!sameLearningRef(expected, learningRef(resource))) throw new Error(`Starter dependency mismatch: ${expected.id}.`);\n }\n exact(starter.taskset, taskset);\n exact(starter.taskDefinition, taskDefinition);\n exact(starter.rewardBinding, rewardBinding);\n exact(taskDefinition.rewardBinding, rewardBinding);\n if (rewardBinding.recipeRef) throw new Error(\"Starter binding recipes must be resolved into a standalone binding before publication.\");\n const { policy, environment, environmentRelease, tools, capabilities, verifierSetRelease } = taskset;\n const execution = { policy, environment, ...(environmentRelease ? { environmentRelease } : {}), tools, capabilities, ...(verifierSetRelease ? { verifierSetRelease } : {}) };\n if (sealLearningContent(execution).contentHash !== sealLearningContent(taskDefinition.execution).contentHash) throw new Error(\"Starter execution context differs from its task format.\");\n if (sealLearningContent({ graders: taskset.graders }).contentHash !== sealLearningContent({ graders: compileBoundGraders(rewardBinding, rewards) }).contentHash) throw new Error(\"Starter executable graders differ from its Reward binding.\");\n for (const [references, values] of [[starter.rewards, rewards], [starter.assets, assets]] as const) {\n if (references.length !== values.length || new Set(values.map(resource => resource.id)).size !== values.length) throw new Error(\"Starter dependency inventory mismatch.\");\n for (const ref of references) {\n const resource = values.find(value => value.id === ref.id);\n if (!resource) throw new Error(`Starter dependency is missing: ${ref.id}.`);\n exact(ref, resource);\n }\n }\n for (const source of rewardBinding.sources) {\n const reward = rewards.find(reward => reward.id === source.reward.id);\n if (!reward) throw new Error(`Starter Reward is missing: ${source.reward.id}.`);\n exact(source.reward, reward);\n }\n for (const reward of rewards) {\n const implementation = reward.implementation;\n const references = [...reward.assets,\n ...(\"verifierRef\" in implementation ? [implementation.verifierRef] : []),\n ...(\"rubricRef\" in implementation ? [implementation.rubricRef] : []),\n ...(\"inputContract\" in implementation ? [implementation.inputContract] : []),\n ];\n for (const ref of references) {\n const asset = assets.find(asset => asset.id === ref.id);\n if (!asset || sealLearningContent(asset.asset).contentHash !== sealLearningContent(ref).contentHash) throw new Error(`Starter Reward source is missing or changed: ${ref.id}.`);\n if (ref.visibility === \"policy\") throw new Error(`Starter Reward source must remain private to its evaluator: ${ref.id}.`);\n }\n }\n if (new Set(taskset.tasks.map(task => task.id)).size !== taskset.tasks.length) throw new Error(\"Starter task identities must be unique.\");\n const inputSplits = new Map<string, string>();\n for (const task of taskset.tasks) {\n if (task.policyVisibleContext.instructions !== taskDefinition.instructions) throw new Error(`Starter task does not carry its declared model instructions: ${task.id}.`);\n const inputHash = sealLearningContent({ input: task.input, context: task.policyVisibleContext }).contentHash;\n const priorSplit = inputSplits.get(inputHash);\n if (priorSplit && priorSplit !== task.split) throw new Error(\"Starter policy input appears in multiple splits.\");\n inputSplits.set(inputHash, task.split);\n if (!validateTaskValue(taskDefinition.inputSchema, task.input).valid) throw new Error(`Starter task input does not match its format: ${task.id}.`);\n if (task.expectedOutput !== null && !validateTaskValue(taskDefinition.outputSchema, task.expectedOutput).valid) throw new Error(`Starter expected output does not match its format: ${task.id}.`);\n }\n for (const id of starter.previewTaskIds) {\n const task = taskset.tasks.find(task => task.id === id);\n if (!task || task.split === \"frozen_eval\") throw new Error(`Starter preview task is unavailable: ${id}.`);\n }\n return resolved;\n}\n","import { contentHash } from \"@openpond/harness\";\nimport { compileBoundGraders } from \"@openpond/evals/rewards\";\nimport { validateModelTasksetPackage } from \"./model-taskset-derivation.js\";\nimport { ModelProjectTrainingSetupSchema, type ModelProjectTrainingSetup } from \"./model-projects.js\";\n\nfunction fields(value: unknown): Record<string, unknown> {\n return value && typeof value === \"object\" && !Array.isArray(value) ? value as Record<string, unknown> : {};\n}\n\n/** Editable GRPO defaults are available before tasks/base/grader are bound.\n * This draft never authorizes execution; package preparation binds those inputs. */\nexport function createModelTrainingRecipeDefaults(saved?: ModelProjectTrainingSetup[\"recipe\"]): NonNullable<ModelProjectTrainingSetup[\"recipe\"]> {\n const defaults = {\n schemaVersion: \"openpond.rftRecipe.v1\", method: \"grpo\" as const, parameterization: \"lora\" as const,\n lora: { rank: 2 },\n rollout: { groupSize: 8, concurrency: 4, maxOutputTokens: 1_024, temperature: 0.8, topP: 0.95, seed: 17 },\n optimizer: { learningRate: 0.0001, maxSteps: 8, clipRange: 0.2, iterations: 2,\n microbatchSize: 1, gradientAccumulationSteps: 8, advantageEpsilon: 1e-8,\n adamw: { name: \"adamw\", weightDecay: 0, beta1: 0.9, beta2: 0.999, epsilon: 1e-8 } },\n loss: { method: \"grpo\", klBeta: 0.01 },\n resourceLimits: { wallTimeMs: 66 * 60 * 1_000, maxRollouts: 64, maxPayloadBytes: 1_000_000 },\n policyOptimization: null,\n };\n return {\n ...defaults, ...saved,\n lora: { ...defaults.lora, ...fields(saved?.lora) },\n rollout: { ...defaults.rollout, ...fields(saved?.rollout) },\n optimizer: { ...defaults.optimizer, ...fields(saved?.optimizer),\n adamw: { ...defaults.optimizer.adamw, ...fields(fields(saved?.optimizer).adamw) } },\n loss: { ...defaults.loss, ...fields(saved?.loss) },\n resourceLimits: { ...defaults.resourceLimits, ...fields(saved?.resourceLimits) },\n };\n}\n\n/** Changing source inputs invalidates only their bindings, preserving the\n * caller's optimizer, rollout, adapter, loss and budget settings. */\nexport function rebindModelTrainingRecipe(saved: ModelProjectTrainingSetup[\"recipe\"]) {\n const { baseModel: _base, reward: _reward, policyOptimization: _compiled, ...recipe } = createModelTrainingRecipeDefaults(saved);\n // Split names and the derived source population belong to the new package.\n // Retain authoring controls such as prompt length/selection strategy.\n const { trainSplit: _train, validationSplit: _validation, maxExamples: _population, ...dataset } = fields(recipe.dataset);\n return { ...recipe, dataset, policyOptimization: null };\n}\nimport { validateTasksetPackage } from \"./taskset-package-contracts.js\";\n\n/** Saved defaults do not authorize execution. The Run review still owns the\n * budget, runtime admission and exact training/evaluation population checks. */\nexport function prepareModelTrainingDefaults(input: {\n setup: ModelProjectTrainingSetup;\n package: unknown;\n}): ModelProjectTrainingSetup {\n const setup = ModelProjectTrainingSetupSchema.parse(input.setup);\n const portable = typeof input.package === \"object\" && input.package !== null\n && \"schemaVersion\" in input.package && input.package.schemaVersion === \"openpond.tasksetPackage.v1\"\n ? validateTasksetPackage(input.package) : null;\n const bound = portable ? null : validateModelTasksetPackage(input.package);\n const source = portable ?? bound!;\n const ref = setup.tasksetRef;\n const selected = ref && ref.revision === source.taskset.revision && (portable\n ? (ref.id === portable.taskset.id && ref.contentHash === portable.taskset.contentHash)\n || (ref.id === portable.taskset.metadata.sourceTasksetId && ref.contentHash === portable.taskset.metadata.sourceTasksetHash)\n : ref.id === source.taskset.id);\n if (!selected) return setup;\n if (!setup.evaluationTasksetRef && source.taskset.tasks.some(task => task.split === \"frozen_eval\" || task.split === \"validation\")) {\n setup.evaluationTasksetRef = setup.tasksetRef;\n }\n const base = setup.baseModel;\n if (setup.method !== \"grpo\" || (setup.recipe && setup.recipe.method !== \"grpo\") || !base?.revision\n || !base.tokenizerRevision || !base.chatTemplateHash) return setup;\n // Existing bound recipes retain their exact explicit settings and the\n // compiler's absent-field semantics. Only an unbound authoring draft needs\n // package-derived defaults; source changes explicitly invalidate bindings.\n if (setup.recipe?.baseModel && setup.recipe.reward && setup.recipe.dataset) return setup;\n const training = source.taskset.tasks.filter(task => task.split === \"train\");\n const graders = portable ? portable.taskset.graders : compileBoundGraders(bound!.rewardBinding, bound!.rewards);\n const grader = graders.find(candidate => candidate.rewardEligible && candidate.weight > 0);\n const environment = portable?.environment ?? bound?.executionResources?.environment ?? bound?.execution?.environment;\n if (!training.length || !grader || !environment) return setup;\n const recipe = createModelTrainingRecipeDefaults(setup.recipe);\n return ModelProjectTrainingSetupSchema.parse({\n ...setup,\n recipe: {\n ...recipe,\n baseModel: { id: base.modelId, revision: base.revision,\n tokenizerRevision: base.tokenizerRevision, chatTemplateHash: base.chatTemplateHash },\n dataset: { trainSplit: \"train\", validationSplit: source.taskset.tasks.some(task => task.split === \"frozen_eval\") ? \"frozen_eval\" : \"validation\",\n maxPromptTokens: 4_096, maxExamples: Math.min(1_000, training.length), selectionStrategy: \"stable_hash_top_n\", ...fields(recipe.dataset) },\n rollout: { maxTurns: source.taskset.environment.kind === \"text\" ? 1 : 15, ...fields(recipe.rollout) },\n reward: { graderId: grader.id, graderHash: contentHash(graders),\n environmentId: environment.id, environmentVersion: String(environment.revision),\n toolContractHash: contentHash(source.taskset.tools), learnedPreference: fields(recipe.reward).learnedPreference ?? null },\n },\n });\n}\n"],"mappings":"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","names":["compileBoundGraders","reward","task","contentHash","compileBoundGraders","value","asset"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
ExperimentScoringRequestSchema
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-LHHHJIDR.js";
|
|
4
4
|
import {
|
|
5
5
|
ImmutableReleaseRefSchema,
|
|
6
6
|
contentHash
|
|
@@ -141,4 +141,4 @@ export {
|
|
|
141
141
|
verifyExperimentImprovementHumanOptions,
|
|
142
142
|
sealExperimentImprovementHumanOptions
|
|
143
143
|
};
|
|
144
|
-
//# sourceMappingURL=chunk-
|
|
144
|
+
//# sourceMappingURL=chunk-O3NOGKMT.js.map
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
import {
|
|
2
|
-
TasksetCatalogReleaseRefSchema
|
|
3
|
-
} from "./chunk-Z252BNAZ.js";
|
|
4
1
|
import {
|
|
5
2
|
MAX_TASKSET_PACKAGE_BYTES,
|
|
6
3
|
TasksetPackageSchema,
|
|
7
4
|
tasksetPackageRewardBinding,
|
|
8
5
|
validateTasksetPackage
|
|
9
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-IFBCLRBM.js";
|
|
7
|
+
import {
|
|
8
|
+
TasksetCatalogReleaseRefSchema
|
|
9
|
+
} from "./chunk-Z252BNAZ.js";
|
|
10
10
|
import {
|
|
11
11
|
HostedModelProjectSummarySchema,
|
|
12
12
|
HostedModelProjectSyncSchema,
|
|
13
13
|
HostedModelProjectTrainingSetupSchema
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-UOV2LEXS.js";
|
|
15
15
|
import {
|
|
16
16
|
contentHash
|
|
17
17
|
} from "./chunk-H3JZ3P5T.js";
|
|
@@ -188,4 +188,4 @@ export {
|
|
|
188
188
|
OpenPondTasksetPackageError,
|
|
189
189
|
OpenPondTasksetPackageClient
|
|
190
190
|
};
|
|
191
|
-
//# sourceMappingURL=chunk-
|
|
191
|
+
//# sourceMappingURL=chunk-ORYA2G7S.js.map
|
|
@@ -5,16 +5,16 @@ import {
|
|
|
5
5
|
} from "./chunk-GPQLBVQC.js";
|
|
6
6
|
import {
|
|
7
7
|
AuthoredTasksetFileInventorySchema
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-XRBM6PBD.js";
|
|
9
9
|
import {
|
|
10
10
|
configuredTasksetDraftFiles,
|
|
11
11
|
createTasksetDraftWorkspace,
|
|
12
12
|
decodeTasksetDraftWorkspaceFile,
|
|
13
13
|
isManagedTasksetDraftFilePath
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-JDQVAG3R.js";
|
|
15
15
|
import {
|
|
16
16
|
TasksetDraftSchema
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-GHPCQXG5.js";
|
|
18
18
|
import {
|
|
19
19
|
compileModelTasksetReward,
|
|
20
20
|
createTasksetPackage,
|
|
@@ -22,7 +22,7 @@ import {
|
|
|
22
22
|
resolveTasksetPackageExecution,
|
|
23
23
|
resolveTasksetPackageInstructions,
|
|
24
24
|
validateTasksetPackage
|
|
25
|
-
} from "./chunk-
|
|
25
|
+
} from "./chunk-IFBCLRBM.js";
|
|
26
26
|
import {
|
|
27
27
|
ModelTasksetDraftPreparationSchema,
|
|
28
28
|
TasksetDraftFilePathSchema
|
|
@@ -432,4 +432,4 @@ export {
|
|
|
432
432
|
prepareTasksetDraftSource,
|
|
433
433
|
materializeTasksetDraftWorkspace
|
|
434
434
|
};
|
|
435
|
-
//# sourceMappingURL=chunk-
|
|
435
|
+
//# sourceMappingURL=chunk-RIN6Z56W.js.map
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
|
-
ModelProjectVersionedRefSchema
|
|
2
|
+
ModelProjectVersionedRefSchema
|
|
3
|
+
} from "./chunk-UOV2LEXS.js";
|
|
4
|
+
import {
|
|
3
5
|
canonicalJson,
|
|
4
6
|
canonicalSha256
|
|
5
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-B3ZHJ2KK.js";
|
|
6
8
|
import {
|
|
7
9
|
FailureClassSchema,
|
|
8
10
|
contentHash
|
|
@@ -286,4 +288,4 @@ export {
|
|
|
286
288
|
OpenPondModelStarterAttemptError,
|
|
287
289
|
OpenPondModelStarterAttemptsClient
|
|
288
290
|
};
|
|
289
|
-
//# sourceMappingURL=chunk-
|
|
291
|
+
//# sourceMappingURL=chunk-RLW4Y5ZV.js.map
|