openpond-sdk 0.6.7 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (86) hide show
  1. package/dist/{chunk-EJYSXE4V.js → chunk-32H2EJRA.js} +292 -456
  2. package/dist/chunk-32H2EJRA.js.map +7 -0
  3. package/dist/chunk-3HV3G6DG.js +95 -0
  4. package/dist/chunk-3HV3G6DG.js.map +7 -0
  5. package/dist/{chunk-FPOW5PU7.js → chunk-CGIMLZE5.js} +7 -7
  6. package/dist/chunk-DNBAJUVR.js +380 -0
  7. package/dist/chunk-DNBAJUVR.js.map +7 -0
  8. package/dist/{chunk-YGCHXNPI.js → chunk-DT7FRNIZ.js} +3 -94
  9. package/dist/{chunk-YGCHXNPI.js.map → chunk-DT7FRNIZ.js.map} +4 -4
  10. package/dist/{chunk-DNEPLQXN.js → chunk-KYCQ7LZ4.js} +5 -5
  11. package/dist/{chunk-TXQHWOFM.js → chunk-LGEF4S5I.js} +2 -2
  12. package/dist/chunk-QABCKPW6.js +171 -0
  13. package/dist/chunk-QABCKPW6.js.map +7 -0
  14. package/dist/{chunk-42YOB36J.js → chunk-WOPM32SE.js} +7 -7
  15. package/dist/{chunk-EAEYAU4R.js → chunk-Y4NGWGTA.js} +23 -2
  16. package/dist/{chunk-EAEYAU4R.js.map → chunk-Y4NGWGTA.js.map} +4 -4
  17. package/dist/dataset-workspaces.js +118 -0
  18. package/dist/dataset-workspaces.js.map +7 -0
  19. package/dist/index.js +20 -15
  20. package/dist/index.js.map +2 -2
  21. package/dist/learning.js +4 -4
  22. package/dist/model-starter-catalog.js +5 -5
  23. package/dist/model-starters.js +5 -5
  24. package/dist/model-taskset-runs.js +4 -4
  25. package/dist/taskset-drafts.js +10 -8
  26. package/dist/taskset-drafts.js.map +1 -1
  27. package/dist/taskset-packages.js +42 -364
  28. package/dist/taskset-packages.js.map +4 -4
  29. package/dist/training-bundle.js +10 -8
  30. package/dist/training-bundle.js.map +1 -1
  31. package/dist/training-projects.js +134 -0
  32. package/dist/training-projects.js.map +7 -0
  33. package/dist/training.js +3 -3
  34. package/dist/types/packages/cloud/src/hosted-chat.d.ts +1 -0
  35. package/dist/types/packages/cloud/src/hosted-chat.d.ts.map +1 -1
  36. package/dist/types/packages/sdk/src/dataset-workspace-client.d.ts +1627 -0
  37. package/dist/types/packages/sdk/src/dataset-workspace-client.d.ts.map +1 -0
  38. package/dist/types/packages/sdk/src/dataset-workspace-contracts.d.ts +1622 -0
  39. package/dist/types/packages/sdk/src/dataset-workspace-contracts.d.ts.map +1 -0
  40. package/dist/types/packages/sdk/src/dataset-workspaces.d.ts +3 -0
  41. package/dist/types/packages/sdk/src/dataset-workspaces.d.ts.map +1 -0
  42. package/dist/types/packages/sdk/src/managed-training-preparation.d.ts +2 -2
  43. package/dist/types/packages/sdk/src/model-batch-review-preparation.d.ts +3 -3
  44. package/dist/types/packages/sdk/src/model-batch-review.d.ts +7 -7
  45. package/dist/types/packages/sdk/src/model-learning-intent.d.ts +1 -1
  46. package/dist/types/packages/sdk/src/model-learning-policy.d.ts +1 -1
  47. package/dist/types/packages/sdk/src/model-projects.d.ts +122 -122
  48. package/dist/types/packages/sdk/src/model-starter-attempts.d.ts +17 -17
  49. package/dist/types/packages/sdk/src/model-starter-catalog.d.ts +23 -23
  50. package/dist/types/packages/sdk/src/model-starter-execution.d.ts +3 -3
  51. package/dist/types/packages/sdk/src/model-starters.d.ts +22 -22
  52. package/dist/types/packages/sdk/src/model-taskset-runs-contracts.d.ts +8 -8
  53. package/dist/types/packages/sdk/src/model-taskset-runs.d.ts +6 -6
  54. package/dist/types/packages/sdk/src/task-inventory.d.ts +3 -3
  55. package/dist/types/packages/sdk/src/taskset-authored-contracts.d.ts +51 -51
  56. package/dist/types/packages/sdk/src/taskset-authored-files.d.ts +30 -30
  57. package/dist/types/packages/sdk/src/taskset-draft-api-contracts.d.ts +86 -86
  58. package/dist/types/packages/sdk/src/taskset-draft-client.d.ts +183 -183
  59. package/dist/types/packages/sdk/src/taskset-draft-core.d.ts +42 -42
  60. package/dist/types/packages/sdk/src/taskset-draft-dataset-artifacts.d.ts +36 -36
  61. package/dist/types/packages/sdk/src/taskset-draft-dataset-sources.d.ts +34 -34
  62. package/dist/types/packages/sdk/src/taskset-draft-document.d.ts +43 -43
  63. package/dist/types/packages/sdk/src/taskset-draft-package-compiler.d.ts +1094 -48
  64. package/dist/types/packages/sdk/src/taskset-draft-package-compiler.d.ts.map +1 -1
  65. package/dist/types/packages/sdk/src/taskset-draft-source.d.ts +71 -71
  66. package/dist/types/packages/sdk/src/taskset-draft-workspace.d.ts +84 -84
  67. package/dist/types/packages/sdk/src/taskset-package-client.d.ts +671 -671
  68. package/dist/types/packages/sdk/src/taskset-package-contracts.d.ts +371 -371
  69. package/dist/types/packages/sdk/src/taskset-package-grader-projection.d.ts +1 -1
  70. package/dist/types/packages/sdk/src/taskset-package-learning.d.ts +5 -5
  71. package/dist/types/packages/sdk/src/taskset-package-projection.d.ts +87 -87
  72. package/dist/types/packages/sdk/src/training-evaluation-results.d.ts +1 -1
  73. package/dist/types/packages/sdk/src/training-learning-batch.d.ts +64 -64
  74. package/dist/types/packages/sdk/src/training-project-client.d.ts +401 -0
  75. package/dist/types/packages/sdk/src/training-project-client.d.ts.map +1 -0
  76. package/dist/types/packages/sdk/src/training-project-contracts.d.ts +617 -0
  77. package/dist/types/packages/sdk/src/training-project-contracts.d.ts.map +1 -0
  78. package/dist/types/packages/sdk/src/training-projects.d.ts +3 -0
  79. package/dist/types/packages/sdk/src/training-projects.d.ts.map +1 -0
  80. package/dist/types/packages/sdk/src/training.d.ts +24 -24
  81. package/package.json +10 -1
  82. package/dist/chunk-EJYSXE4V.js.map +0 -7
  83. /package/dist/{chunk-FPOW5PU7.js.map → chunk-CGIMLZE5.js.map} +0 -0
  84. /package/dist/{chunk-DNEPLQXN.js.map → chunk-KYCQ7LZ4.js.map} +0 -0
  85. /package/dist/{chunk-TXQHWOFM.js.map → chunk-LGEF4S5I.js.map} +0 -0
  86. /package/dist/{chunk-42YOB36J.js.map → chunk-WOPM32SE.js.map} +0 -0
@@ -1,3 +1,11 @@
1
+ import {
2
+ OpenPondTasksetPackageClient,
3
+ OpenPondTasksetPackageError,
4
+ TasksetPackageModelConfigurationSchema,
5
+ TasksetPackagePublicationSchema,
6
+ TasksetPackageReadbackSchema,
7
+ TasksetPackageReceiptSchema
8
+ } from "./chunk-QABCKPW6.js";
1
9
  import {
2
10
  ModelBatchReviewInspectionSchema,
3
11
  ModelBatchReviewReceiptSchema,
@@ -6,61 +14,56 @@ import {
6
14
  import {
7
15
  importedPackageGraders,
8
16
  learningVerifierModule,
9
- materializePortableTasksetRelease,
10
- portableTasksetEnvironment,
11
- portableTasksetTools,
12
- projectLearningBatchGraders,
13
- projectPortableTaskRecord,
14
- projectPreferenceComparisonRelease,
15
- resolvePortableTasksetRewardExecution
16
- } from "./chunk-YGCHXNPI.js";
17
+ projectLearningBatchGraders
18
+ } from "./chunk-3HV3G6DG.js";
19
+ import {
20
+ AuthoredTasksetFileInventorySchema,
21
+ compileModelTasksetDraftWorkspace,
22
+ isGeneratedTasksetPublicationFilePath,
23
+ prepareAuthoredTasksetSource,
24
+ prepareModelTasksetDraft,
25
+ publishModelTasksetDraftPackage
26
+ } from "./chunk-DNBAJUVR.js";
17
27
  import {
18
- OpenPondTasksetPackageClient,
19
- OpenPondTasksetPackageError,
20
28
  TasksetDraftSchema,
21
- TasksetPackageModelConfigurationSchema,
22
- TasksetPackagePublicationSchema,
23
- TasksetPackageReadbackSchema,
24
- TasksetPackageReceiptSchema,
25
29
  configuredTasksetDraftFiles,
26
30
  createTasksetDraft,
27
31
  createTasksetDraftWorkspace,
28
32
  decodeTasksetDraftWorkspaceFile,
29
- isManagedTasksetDraftFilePath,
30
- publishTasksetDraft,
31
- renderTasksetDraftManifests,
32
- validateTasksetDraftWorkspace
33
- } from "./chunk-EJYSXE4V.js";
33
+ isManagedTasksetDraftFilePath
34
+ } from "./chunk-32H2EJRA.js";
35
+ import {
36
+ materializePortableTasksetRelease,
37
+ portableTasksetEnvironment,
38
+ portableTasksetTools,
39
+ projectPortableTaskRecord,
40
+ projectPreferenceComparisonRelease,
41
+ resolvePortableTasksetRewardExecution
42
+ } from "./chunk-DT7FRNIZ.js";
34
43
  import {
35
44
  GraderFixtureSchema,
36
45
  TasksetEnvironmentResourceSchema,
37
46
  TasksetSchema,
38
47
  TasksetSourceRefSchema,
39
48
  computeTasksetHash
40
- } from "./chunk-TXQHWOFM.js";
49
+ } from "./chunk-LGEF4S5I.js";
41
50
  import {
42
51
  MAX_TASKSET_PACKAGE_BYTES,
43
- ModelStarterExecutionSchema,
44
- ModelTasksetDerivationSchema,
45
52
  TasksetPackageContentSchema,
46
53
  TasksetPackageFileSchema,
47
54
  TasksetPackageLearningResourcesSchema,
48
55
  TasksetPackageSchema,
49
- assertModelTasksetAuthoring,
50
56
  compileModelTasksetReward,
51
57
  createTasksetPackage,
52
58
  createTasksetPackageExecutionFile,
53
59
  decodeTasksetPackageFile,
54
- deriveModelTaskset,
55
60
  learningPackageContextFiles,
56
- modelAuthoredTasksetId,
57
- modelStarterExecutionAssetId,
58
61
  resolveTasksetPackageExecution,
59
62
  resolveTasksetPackageInstructions,
60
63
  tasksetPackageRewardBinding,
61
64
  validateTasksetLearningResources,
62
65
  validateTasksetPackage
63
- } from "./chunk-42YOB36J.js";
66
+ } from "./chunk-WOPM32SE.js";
64
67
  import {
65
68
  ModelTasksetAuthoringOwnerSchema,
66
69
  ModelTasksetAuthoringSchema,
@@ -72,16 +75,15 @@ import {
72
75
  TasksetDraftFilePathSchema,
73
76
  TasksetDraftFileSchema
74
77
  } from "./chunk-2U54EOXJ.js";
75
- import "./chunk-FPOW5PU7.js";
78
+ import "./chunk-CGIMLZE5.js";
79
+ import "./chunk-TCHAWJMB.js";
80
+ import "./chunk-3KXDH6OB.js";
76
81
  import "./chunk-A4ZDOZKP.js";
77
- import "./chunk-EAEYAU4R.js";
82
+ import "./chunk-Y4NGWGTA.js";
78
83
  import {
79
- ImmutableAssetRefSchema,
80
84
  contentHash,
81
85
  sha256
82
86
  } from "./chunk-QUOW6URQ.js";
83
- import "./chunk-TCHAWJMB.js";
84
- import "./chunk-3KXDH6OB.js";
85
87
 
86
88
  // src/model-ordinary-taskset-reward.ts
87
89
  import { LearningTextAssetSchema, TaskDefinitionSchema, learningRef, sealLearningContent } from "@openpond/evals/learning";
@@ -385,161 +387,8 @@ async function readReceipt(transaction, request, pointers) {
385
387
  });
386
388
  }
387
389
 
388
- // src/model-taskset-authoring.ts
389
- import { createVerifierSetRelease } from "@openpond/evals";
390
- import { learningRef as learningRef5, sameLearningRef as sameLearningRef4, sealLearningContent as sealLearningContent4 } from "@openpond/evals/learning";
391
- import { TasksetReleaseSchema as TasksetReleaseSchema2 } from "@openpond/evals/tasksets";
392
-
393
- // src/model-bound-taskset-authoring.ts
394
- import { LearningTextAssetSchema as LearningTextAssetSchema2, TaskDefinitionSchema as TaskDefinitionSchema3, learningRef as learningRef4, sameLearningRef as sameLearningRef3, sealLearningContent as sealLearningContent3 } from "@openpond/evals/learning";
395
- import { TasksetReleaseSchema } from "@openpond/evals/tasksets";
396
- function publishBoundModelTasksetDraftPackage(input) {
397
- const source = validateTasksetPackage(input.source);
398
- const edited = validateTasksetPackage(input.edited);
399
- const prepared = input.preparation;
400
- if (prepared.authoringGraph !== "bound" || !source.modelResources || source.learningResources || edited.modelResources || edited.learningResources) throw new Error("Bound task editing requires its source Reward and an ordinary edited workspace.");
401
- if (source.contentHash !== prepared.sourcePackageHash || !sameLearningRef3(learningRef4(source.taskset), prepared.sourceTasksetRef)) throw new Error("Bound draft differs from its retained source package.");
402
- const normalizedGraders = (value) => value.taskset.graders.map((grader) => grader.kind === "custom_verifier" ? { ...grader, exportName: grader.exportName ?? "verify" } : grader);
403
- if (contentHash(normalizedGraders(source)) !== contentHash(normalizedGraders(edited))) throw new Error("Edit the saved Reward in Rewards before changing this Taskset's graders.");
404
- const resources = source.modelResources;
405
- const assets = new Map(resources.assets.map((asset) => [asset.id, asset]));
406
- const execution = resolveTasksetPackageExecution(edited);
407
- const sourceExecution = resolveTasksetPackageExecution(source);
408
- const environmentContent = (value) => {
409
- const { id: _id, revision: _revision, contentHash: _hash, metadata, ...contract } = value;
410
- const { javascriptEnvironment: _javascript, ...retained } = metadata;
411
- return { ...contract, metadata: { ...retained, resources: retained.resources ?? [] } };
412
- };
413
- const javascriptContent = (value) => {
414
- if (!value) return null;
415
- const { id: _id, revision: _revision, contentHash: _hash, ...contract } = value.execution.javascript;
416
- return contract;
417
- };
418
- const unchangedEnvironment = contentHash(environmentContent(source.environment)) === contentHash(environmentContent(edited.environment)) && contentHash(javascriptContent(sourceExecution)) === contentHash(javascriptContent(execution));
419
- const selectedEnvironment = unchangedEnvironment ? source.environment : edited.environment;
420
- const selectedExecution = unchangedEnvironment ? sourceExecution : execution;
421
- const requiredIds = /* @__PURE__ */ new Set([
422
- ...resources.assets.map((asset) => asset.id),
423
- ...edited.taskset.tasks.flatMap((task) => task.privilegedContextRef ? [task.privilegedContextRef] : []),
424
- ...[edited.environment.actionSchemaRef, edited.environment.observationSchemaRef, edited.environment.stateSchemaRef].flatMap((ref) => ref ? [ref.id] : []),
425
- ...execution?.assets.map((asset) => asset.id) ?? []
426
- ]);
427
- for (const id of requiredIds) {
428
- const file = edited.files.find((file2) => file2.asset.id === id);
429
- if (!file) throw new Error(`Bound Taskset asset is missing: ${id}.`);
430
- const text = new TextDecoder("utf-8", { fatal: true }).decode(decodeTasksetPackageFile(file));
431
- assets.set(id, LearningTextAssetSchema2.parse(sealLearningContent3({ schemaVersion: "openpond.learningTextAsset.v1", id, revision: 1, asset: file.asset, text })));
432
- }
433
- const instructions = resolveTasksetPackageInstructions(edited);
434
- const { contentHash: _definitionHash, ...definitionContent } = resources.taskDefinition;
435
- const { policy, environment, environmentRelease, tools, capabilities, verifierSetRelease } = edited.taskset;
436
- const taskDefinition = TaskDefinitionSchema3.parse(sealLearningContent3({
437
- ...definitionContent,
438
- instructions,
439
- execution: { policy, environment, environmentRelease, tools, capabilities, verifierSetRelease }
440
- }));
441
- const { contentHash: _taskHash, ...taskContent } = edited.taskset;
442
- const taskset = TasksetReleaseSchema.parse(sealLearningContent3({ ...taskContent, tasks: edited.taskset.tasks.map((task) => resources.instructionMode === "per_task" ? task : { ...task, policyVisibleContext: { ...task.policyVisibleContext, instructions } }) }));
443
- const derived = compileModelTasksetReward({
444
- owner: prepared.lineage.owner,
445
- source: { ...resources, taskset: source.taskset, executionResources: { environment: source.environment, verifierSet: source.verifierSet } },
446
- rewardBinding: resources.rewardBinding,
447
- rewards: resources.rewards,
448
- assets: [...assets.values()],
449
- edits: { taskset, taskDefinition, executionResources: { environment: selectedEnvironment, verifierSet: edited.verifierSet }, ...selectedExecution ? { execution: selectedExecution.execution } : {} }
450
- });
451
- const lineage = ModelTasksetDerivationSchema.parse(derived.taskset.metadata.modelTasksetDerivation);
452
- if (derived.taskset.id !== prepared.tasksetId || derived.taskset.revision !== prepared.tasksetRevision || contentHash({ ...lineage, schemaVersion: prepared.lineage.schemaVersion }) !== contentHash(prepared.lineage)) throw new Error("Bound draft differs from its retained ownership lineage.");
453
- const { taskset: published, executionResources, ...modelResources } = derived;
454
- return createTasksetPackage({ schemaVersion: "openpond.tasksetPackage.v1", taskset: published, ...executionResources, modelResources, files: edited.files });
455
- }
456
-
457
- // src/model-taskset-authoring.ts
458
- function prepareModelTasksetDraft(input) {
459
- const request = ModelTasksetDraftRequestSchema.parse(input.request);
460
- const owner = ModelTasksetAuthoringOwnerSchema.parse(input.owner);
461
- const source = validateTasksetPackage(input.source);
462
- if (source.learningResources) throw new Error("Reviewed Tasksets require their reviewed authoring workflow.");
463
- if (source.contentHash !== request.sourcePackageHash) throw new Error("Taskset draft source package changed.");
464
- if (source.modelResources) {
465
- const derived = deriveModelTaskset({
466
- owner,
467
- source: { ...source.modelResources, taskset: source.taskset, executionResources: { environment: source.environment, verifierSet: source.verifierSet } },
468
- rewardBinding: source.modelResources.rewardBinding,
469
- rewards: source.modelResources.rewards,
470
- assets: source.modelResources.assets
471
- });
472
- const lineage2 = derived.taskset.metadata.modelTasksetDerivation;
473
- return ModelTasksetDraftPreparationSchema.parse({
474
- schemaVersion: "openpond.modelTasksetDraftPreparation.v1",
475
- draftId: `model-taskset-draft-${contentHash({ owner, operationId: request.operationId })}`,
476
- requestHash: contentHash(request),
477
- sourcePackageHash: source.contentHash,
478
- sourceTasksetRef: learningRef5(source.taskset),
479
- tasksetId: derived.taskset.id,
480
- tasksetRevision: derived.taskset.revision,
481
- lineage: { ...lineage2, schemaVersion: "openpond.modelTasksetAuthoring.v1" },
482
- authoringGraph: "bound"
483
- });
484
- }
485
- const previous = assertModelTasksetAuthoring(source.taskset);
486
- const owned = previous && contentHash(previous.owner) === contentHash(owner);
487
- const root = owned ? previous.root : learningRef5(source.taskset);
488
- const lineage = { schemaVersion: "openpond.modelTasksetAuthoring.v1", owner, root, parent: learningRef5(source.taskset) };
489
- return ModelTasksetDraftPreparationSchema.parse({
490
- schemaVersion: "openpond.modelTasksetDraftPreparation.v1",
491
- draftId: `model-taskset-draft-${contentHash({ owner, operationId: request.operationId })}`,
492
- requestHash: contentHash(request),
493
- sourcePackageHash: source.contentHash,
494
- sourceTasksetRef: learningRef5(source.taskset),
495
- tasksetId: modelAuthoredTasksetId(lineage),
496
- tasksetRevision: owned ? source.taskset.revision + 1 : 1,
497
- lineage
498
- });
499
- }
500
- function publishModelTasksetDraftPackage(input) {
501
- const prepared = ModelTasksetDraftPreparationSchema.parse(input.preparation);
502
- if (!sameLearningRef4(prepared.sourceTasksetRef, prepared.lineage.parent)) throw new Error("Taskset draft preparation differs from its source lineage.");
503
- if (prepared.authoringGraph === "bound") {
504
- if (!input.source) throw new Error("Bound Taskset authoring requires its retained source package.");
505
- return publishBoundModelTasksetDraftPackage({ preparation: prepared, source: input.source, edited: input.edited });
506
- }
507
- const edited = requireOrdinaryPackage(input.edited);
508
- const { contentHash: _verifierHash, ...verifierContent } = edited.verifierSet;
509
- const verifierSet = createVerifierSetRelease({
510
- ...verifierContent,
511
- id: `${prepared.tasksetId}-verifiers`,
512
- revision: prepared.tasksetRevision,
513
- calibrationReceiptRefs: [],
514
- metadata: { sourceVerifierSet: learningRef5(edited.verifierSet) }
515
- });
516
- const { contentHash: _hash, ...content } = edited.taskset;
517
- const taskset = TasksetReleaseSchema2.parse(sealLearningContent4({
518
- ...content,
519
- id: prepared.tasksetId,
520
- revision: prepared.tasksetRevision,
521
- verifierSetRelease: { id: verifierSet.id, contentHash: verifierSet.contentHash },
522
- metadata: {
523
- modelTasksetAuthoring: prepared.lineage,
524
- ...edited.taskset.metadata.environmentResources === void 0 ? {} : { environmentResources: edited.taskset.metadata.environmentResources },
525
- ...edited.taskset.metadata.ordinaryAuthoring === void 0 ? {} : { ordinaryAuthoring: edited.taskset.metadata.ordinaryAuthoring }
526
- }
527
- }));
528
- const resolved = resolveTasksetPackageExecution(edited);
529
- const files = resolved ? [
530
- ...edited.files.filter((file) => file.asset.id !== modelStarterExecutionAssetId(edited.taskset)),
531
- createTasksetPackageExecutionFile({ ...resolved.execution, verifierSet })
532
- ] : edited.files;
533
- return createTasksetPackage({ schemaVersion: "openpond.tasksetPackage.v1", taskset, environment: edited.environment, verifierSet, files });
534
- }
535
- function requireOrdinaryPackage(value) {
536
- const result = validateTasksetPackage(value);
537
- if (result.modelResources || result.learningResources) throw new Error("This Taskset requires its bound or reviewed authoring workflow.");
538
- return result;
539
- }
540
-
541
390
  // src/taskset-package-projection.ts
542
- import { learningRef as learningRef6, taskBatchPackageMetadata as taskBatchPackageMetadata3, verifyLearningTextAsset as verifyLearningTextAsset2 } from "@openpond/evals/learning";
391
+ import { learningRef as learningRef4, taskBatchPackageMetadata as taskBatchPackageMetadata3, verifyLearningTextAsset as verifyLearningTextAsset2 } from "@openpond/evals/learning";
543
392
  function prepareImportedTasksetPackage(input) {
544
393
  const value = validateTasksetPackage(input.package);
545
394
  const release = value.taskset;
@@ -662,8 +511,8 @@ function prepareImportedTasksetPackage(input) {
662
511
  ...learning ? { learning } : {},
663
512
  portableFileInventory: value.files.map((file) => ({ asset: file.asset, sourcePath: file.asset.path })),
664
513
  ...resources ? {
665
- taskDefinition: learningRef6(resources.taskDefinition),
666
- rewardBinding: learningRef6(resources.rewardBinding),
514
+ taskDefinition: learningRef4(resources.taskDefinition),
515
+ rewardBinding: learningRef4(resources.rewardBinding),
667
516
  rewardExecution: { binding: resources.rewardBinding, rewards: resources.rewards }
668
517
  } : {},
669
518
  portableCapabilities: release.capabilities,
@@ -677,189 +526,18 @@ function tasksetPackageSourceId(profileId, packageHash) {
677
526
  return `package-${contentHash({ profileId, packageHash })}`;
678
527
  }
679
528
 
680
- // src/taskset-authored-files.ts
681
- import { z } from "zod";
682
-
683
- // src/taskset-authored-tool-environment.ts
684
- import { createEnvironmentRelease } from "@openpond/evals";
685
- import { JavaScriptEnvironmentDefinitionSchema } from "@openpond/evals/javascript-environment";
686
- import { learningRef as learningRef7, sealLearningContent as sealLearningContent5 } from "@openpond/evals/learning";
687
- function prepareAuthoredToolEnvironment(taskset, bytes, inventory, adapterId) {
688
- if (taskset.environment.entrypoint !== "openpond.javascript-environment.v1") return { taskset, inventory, generatedFiles: [] };
689
- const declarationPath = "environment/execution.json";
690
- const declaration = bytes.get(declarationPath);
691
- if (!declaration || declaration.length > 524288) throw new Error("Authored tool environment requires its bounded private execution declaration.");
692
- const previous = ModelStarterExecutionSchema.parse(JSON.parse(new TextDecoder("utf-8", { fatal: true }).decode(declaration)));
693
- const repin = (ref) => {
694
- if (!ref) return null;
695
- const file2 = inventory.find((file3) => file3.asset.id === ref.id && file3.asset.path === ref.path);
696
- if (!file2) throw new Error(`Authored environment dependency is missing: ${ref.id}.`);
697
- return file2.asset;
698
- };
699
- const { contentHash: _javascriptHash, ...javascriptContent } = previous.javascript;
700
- const javascript = JavaScriptEnvironmentDefinitionSchema.parse(sealLearningContent5({
701
- ...javascriptContent,
702
- id: `javascript-${taskset.id}`,
703
- revision: taskset.revision,
704
- module: repin(previous.javascript.module)
705
- }));
706
- if (contentHash(javascript.tools) !== contentHash(taskset.environment.metadata.portableTools) || contentHash(javascript.tools.map((tool) => tool.name)) !== contentHash(taskset.environment.toolNames)) throw new Error("Authored environment tools differ from the Taskset's declared tools.");
707
- const environment = createEnvironmentRelease({
708
- schemaVersion: "openpond.environmentRelease.v1",
709
- id: `environment-${taskset.id}`,
710
- revision: taskset.revision,
711
- contract: portableTasksetEnvironment(taskset),
712
- actionSchemaRef: repin(previous.environment.actionSchemaRef),
713
- observationSchemaRef: repin(previous.environment.observationSchemaRef),
714
- stateSchemaRef: repin(previous.environment.stateSchemaRef),
715
- artifactCollection: previous.environment.artifactCollection,
716
- adapterConformanceHashes: {},
717
- metadata: { javascriptEnvironment: learningRef7(javascript), resources: taskset.environment.resources ?? [] }
718
- });
719
- const prepared = TasksetSchema.parse({ ...taskset, environment: {
720
- ...taskset.environment,
721
- metadata: { ...taskset.environment.metadata, portableExecutionResources: { environment } }
722
- } });
723
- const releases = materializePortableTasksetRelease({ taskset: prepared, adapterId });
724
- const file = createTasksetPackageExecutionFile({ javascript, environment, verifierSet: releases.verifierSetRelease });
725
- const nextInventory = [...inventory.filter((entry) => entry.sourcePath !== declarationPath), { asset: file.asset, sourcePath: declarationPath }];
726
- const finalized = TasksetSchema.parse({ ...prepared, metadata: { ...prepared.metadata, portableFileInventory: nextInventory } });
727
- return {
728
- taskset: TasksetSchema.parse({ ...finalized, contentHash: computeTasksetHash(finalized) }),
729
- inventory: nextInventory,
730
- generatedFiles: [{ path: declarationPath, role: "environment", content: new TextDecoder().decode(decodeTasksetPackageFile(file)) }]
731
- };
732
- }
733
-
734
- // src/taskset-authored-files.ts
735
- var AuthoredTasksetFileInventorySchema = z.array(z.object({
736
- asset: ImmutableAssetRefSchema,
737
- sourcePath: z.string().min(1)
738
- }).strict()).max(1e4);
739
- var GENERATED_MANIFESTS = /* @__PURE__ */ new Set(["taskset.json", "capabilities.json", "data/tasks.jsonl", "graders/graders.json", "fixtures/grader-fixtures.json", "environment/taskset.ts"]);
740
- function isGeneratedTasksetPublicationFilePath(path) {
741
- return GENERATED_MANIFESTS.has(path);
742
- }
743
- function prepareAuthoredTasksetSource(tasksetInput, sourceFiles, adapterId) {
744
- const taskset = TasksetSchema.parse(tasksetInput);
745
- if (taskset.metadata.taskDefinition !== void 0 || taskset.metadata.rewardBinding !== void 0) return { taskset, generatedFiles: [] };
746
- const bytes = /* @__PURE__ */ new Map();
747
- let total = 0;
748
- for (const [name, data] of sourceFiles) {
749
- TasksetDraftFilePathSchema.parse(name);
750
- total += data.byteLength;
751
- if (bytes.size >= 1e4 || total > MAX_TASKSET_PACKAGE_BYTES * 3 / 4) throw new Error("Taskset source exceeds the package byte limit.");
752
- bytes.set(name, data.slice());
753
- }
754
- const aggregator = taskset.metrics?.customAggregator;
755
- const aggregatorBytes = aggregator ? bytes.get(aggregator.module) : void 0;
756
- if (aggregator && !aggregatorBytes) throw new Error("Declared Taskset metric module is missing.");
757
- const metrics = aggregator && aggregatorBytes ? { ...taskset.metrics, customAggregator: { ...aggregator, contentHash: sha256(aggregatorBytes) } } : taskset.metrics;
758
- const inventory = /* @__PURE__ */ new Map();
759
- const declaredPaths = /* @__PURE__ */ new Set();
760
- const generatedFiles = [];
761
- const ref = (id, sourcePath, mediaType, visibility) => {
762
- const source = bytes.get(sourcePath);
763
- if (!source) throw new Error(`Declared Taskset file is missing: ${sourcePath}.`);
764
- return { id, path: sourcePath, contentHash: sha256(source), sizeBytes: source.byteLength, mediaType, visibility };
765
- };
766
- const add = (asset, sourcePath = asset.path) => {
767
- const previous = inventory.get(asset.id);
768
- if (previous && contentHash(previous) !== contentHash({ asset, sourcePath })) throw new Error(`Conflicting Taskset file identity: ${asset.id}.`);
769
- const source = bytes.get(sourcePath);
770
- if (!source || source.length !== asset.sizeBytes || sha256(source) !== asset.contentHash) throw new Error(`Taskset file differs from its declared bytes: ${asset.id}.`);
771
- inventory.set(asset.id, { asset, sourcePath });
772
- declaredPaths.add(sourcePath);
773
- };
774
- for (const task of taskset.tasks) {
775
- const portable = projectPortableTaskRecord(task);
776
- for (const asset of portable.artifactRefs) add(asset, task.assets?.find((candidate) => candidate.id === asset.id)?.artifactRef ?? asset.path);
777
- for (const output of portable.requiredOutputs ?? []) if (output.schemaRef) add(output.schemaRef);
778
- }
779
- for (const resource of taskset.environment.resources ?? []) add(ref(resource.id, resource.path, resource.mediaType ?? "application/octet-stream", resource.visibility === "policy_visible" ? "policy" : "host_private"));
780
- const graders = taskset.graders.map((grader) => {
781
- if (grader.kind === "custom_verifier") {
782
- let asset = ref(`verifier-${grader.id}`, grader.module, "application/javascript", "host_private");
783
- const previous = ImmutableAssetRefSchema.safeParse(grader.metadata.portableVerifierRef);
784
- if (previous.success && previous.data.contentHash === asset.contentHash && previous.data.sizeBytes === asset.sizeBytes) asset = previous.data;
785
- add(asset, grader.module);
786
- return { ...grader, metadata: { ...grader.metadata, portableVerifierRef: asset } };
787
- }
788
- if (grader.kind === "human" || grader.kind === "model_judge") {
789
- const content = new TextEncoder().encode(grader.rubric);
790
- const sourcePath = `graders/rubric-${sha256(content)}.md`;
791
- bytes.set(sourcePath, content);
792
- const asset = ref(`rubric-${grader.id}`, sourcePath, "text/markdown", "verifier");
793
- add(asset);
794
- generatedFiles.push({ path: sourcePath, role: "verifier", content: grader.rubric });
795
- return { ...grader, metadata: { ...grader.metadata, portableRubricRef: asset } };
796
- }
797
- return grader;
798
- });
799
- if (aggregator && ![...inventory.values()].some((file) => file.asset.path === aggregator.module && file.sourcePath === aggregator.module && file.asset.visibility !== "policy")) {
800
- add(ref(`metric-${contentHash(aggregator.module)}`, aggregator.module, "application/javascript", "host_private"));
801
- }
802
- const previousInventory = AuthoredTasksetFileInventorySchema.parse(taskset.metadata.portableFileInventory ?? []);
803
- for (const name of [...bytes.keys()].sort()) if (!declaredPaths.has(name)) {
804
- const previous = previousInventory.find((file) => file.sourcePath === name && !inventory.has(file.asset.id));
805
- add(previous ? { ...ref(previous.asset.id, name, previous.asset.mediaType, previous.asset.visibility), path: previous.asset.path } : ref(`taskset-file-${contentHash(name)}`, name, "application/octet-stream", "host_private"), name);
806
- }
807
- const { importedPackageHash, derivedPortableMetadata: _derived, ...metadata } = taskset.metadata;
808
- const environmentMetadata = { ...taskset.environment.metadata };
809
- if (environmentMetadata.portableExecutionResources !== void 0) {
810
- const resources = z.object({ environment: z.unknown(), verifierSet: z.unknown().optional() }).parse(environmentMetadata.portableExecutionResources);
811
- environmentMetadata.portableExecutionResources = { environment: resources.environment };
812
- }
813
- const prepared = TasksetSchema.parse({
814
- ...taskset,
815
- graders,
816
- metrics,
817
- environment: { ...taskset.environment, metadata: environmentMetadata },
818
- metadata: { ...metadata, ...importedPackageHash === void 0 ? {} : { sourceImportedPackageHash: importedPackageHash }, portableFileInventory: AuthoredTasksetFileInventorySchema.parse([...inventory.values()].sort((left, right) => left.asset.id.localeCompare(right.asset.id))) }
819
- });
820
- const executable = prepareAuthoredToolEnvironment(prepared, bytes, [...inventory.values()], adapterId);
821
- return { taskset: TasksetSchema.parse({ ...executable.taskset, contentHash: computeTasksetHash(executable.taskset) }), generatedFiles: [...generatedFiles, ...executable.generatedFiles] };
822
- }
823
-
824
- // src/taskset-draft-package-compiler.ts
825
- function compileModelTasksetDraftWorkspace(input) {
826
- const workspace = validateTasksetDraftWorkspace(input.workspace);
827
- const preparation = input.preparation === null ? null : ModelTasksetDraftPreparationSchema.parse(input.preparation);
828
- if (!workspace.draft.modelScope) throw new Error("Taskset draft requires a Model owner.");
829
- if (preparation ? workspace.draft.id !== preparation.draftId || workspace.draft.modelScope.modelId !== preparation.lineage.owner.modelId || workspace.draft.profileId !== preparation.lineage.owner.scopeId || contentHash(workspace.draft.modelScope.source ?? null) !== contentHash(preparation) : workspace.draft.modelScope.source !== void 0) throw new Error("Taskset draft differs from its retained source preparation.");
830
- const taskset = publishTasksetDraft({ draft: workspace.draft, now: workspace.draft.updatedAt, sourcePackageHash: workspace.contentHash });
831
- const files = new Map(workspace.files.map((file) => [file.path, decodeTasksetDraftWorkspaceFile(file)]));
832
- for (const [path, source] of renderTasksetDraftManifests(workspace.draft)) if (!isGeneratedTasksetPublicationFilePath(path)) files.set(path, new TextEncoder().encode(source));
833
- const authored = prepareAuthoredTasksetSource(taskset, files, input.adapterId);
834
- for (const file of authored.generatedFiles) files.set(file.path, new TextEncoder().encode(file.content));
835
- const releases = materializePortableTasksetRelease({ taskset: authored.taskset, adapterId: input.adapterId });
836
- const inventory = AuthoredTasksetFileInventorySchema.parse(authored.taskset.metadata.portableFileInventory);
837
- const edited = createTasksetPackage({
838
- schemaVersion: "openpond.tasksetPackage.v1",
839
- taskset: releases.tasksetRelease,
840
- environment: releases.environmentRelease,
841
- verifierSet: releases.verifierSetRelease,
842
- files: inventory.map((entry) => {
843
- const bytes = files.get(entry.sourcePath);
844
- if (!bytes) throw new Error(`Captured Taskset file is missing: ${entry.sourcePath}.`);
845
- return { asset: entry.asset, base64: Buffer.from(bytes).toString("base64") };
846
- })
847
- });
848
- return preparation ? publishModelTasksetDraftPackage({ preparation, edited, source: input.source }) : edited;
849
- }
850
-
851
529
  // src/taskset-draft-source.ts
852
- import { z as z2 } from "zod";
853
- import { learningRef as learningRef8, sameLearningRef as sameLearningRef5 } from "@openpond/evals/learning";
854
- var TasksetDraftSourceInitializationSchema = z2.object({
530
+ import { z } from "zod";
531
+ import { learningRef as learningRef5, sameLearningRef as sameLearningRef3 } from "@openpond/evals/learning";
532
+ var TasksetDraftSourceInitializationSchema = z.object({
855
533
  draft: TasksetDraftSchema,
856
- filePaths: z2.array(z2.object({ assetId: z2.string().min(1), paths: z2.array(TasksetDraftFilePathSchema).min(1).max(1e4) }).strict()).max(1e4)
534
+ filePaths: z.array(z.object({ assetId: z.string().min(1), paths: z.array(TasksetDraftFilePathSchema).min(1).max(1e4) }).strict()).max(1e4)
857
535
  }).strict();
858
536
  function prepareTasksetDraftSource(input) {
859
537
  const source = validateTasksetPackage(input.source);
860
538
  const original = TasksetDraftSchema.parse(input.sourceDraft);
861
539
  const preparation = ModelTasksetDraftPreparationSchema.parse(input.preparation);
862
- if (source.contentHash !== preparation.sourcePackageHash || !sameLearningRef5(learningRef8(source.taskset), preparation.sourceTasksetRef)) throw new Error("Taskset draft preparation differs from its source package.");
540
+ if (source.contentHash !== preparation.sourcePackageHash || !sameLearningRef3(learningRef5(source.taskset), preparation.sourceTasksetRef)) throw new Error("Taskset draft preparation differs from its source package.");
863
541
  if (source.learningResources) throw new Error("Reviewed Tasksets require their reviewed authoring workflow.");
864
542
  if (Boolean(source.modelResources) !== (preparation.authoringGraph === "bound")) throw new Error("Taskset draft authoring graph differs from its source.");
865
543
  const inventory = AuthoredTasksetFileInventorySchema.parse(original.metadata.portableFileInventory ?? []);