openpond-sdk 0.12.3 → 0.12.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/actions-local.js +2 -1
- package/dist/actions-local.js.map +1 -7
- package/dist/actions.js +2 -1
- package/dist/actions.js.map +1 -7
- package/dist/advanced-refiner-evaluations.js +13 -12
- package/dist/advanced-refiner-evaluations.js.map +1 -7
- package/dist/candidate-evaluations.js +9 -8
- package/dist/candidate-evaluations.js.map +1 -7
- package/dist/{chunk-VY5AFE7A.js → chunk-24N6A6SF.js} +4 -4
- package/dist/chunk-24N6A6SF.js.map +1 -0
- package/dist/{chunk-YCQVVFE5.js → chunk-3B5KSH3V.js} +2 -2
- package/dist/chunk-3B5KSH3V.js.map +1 -0
- package/dist/{chunk-2DMYAJLS.js → chunk-3DWPLYFJ.js} +2 -2
- package/dist/chunk-3DWPLYFJ.js.map +1 -0
- package/dist/{chunk-CTVKI3BV.js → chunk-53LLNDXF.js} +3 -3
- package/dist/chunk-53LLNDXF.js.map +1 -0
- package/dist/{chunk-36WJTS5V.js → chunk-B5XTGEBE.js} +25 -13
- package/dist/chunk-B5XTGEBE.js.map +1 -0
- package/dist/{chunk-HKWX624G.js → chunk-BVMR5OFW.js} +5 -5
- package/dist/chunk-BVMR5OFW.js.map +1 -0
- package/dist/{chunk-3KXDH6OB.js → chunk-CL3IOOVL.js} +1 -1
- package/dist/chunk-CL3IOOVL.js.map +1 -0
- package/dist/{chunk-FY7NHCEH.js → chunk-CMWZZZGW.js} +5 -5
- package/dist/chunk-CMWZZZGW.js.map +1 -0
- package/dist/{chunk-UPS52OPZ.js → chunk-DF2QXVZ3.js} +8 -8
- package/dist/chunk-DF2QXVZ3.js.map +1 -0
- package/dist/{chunk-AG5DDL7T.js → chunk-DH6O4JFB.js} +2 -2
- package/dist/chunk-DH6O4JFB.js.map +1 -0
- package/dist/{chunk-QEIT5VXJ.js → chunk-EFUT3XKW.js} +4 -4
- package/dist/chunk-EFUT3XKW.js.map +1 -0
- package/dist/{chunk-BSK3VLM3.js → chunk-ETX25FTB.js} +3 -3
- package/dist/chunk-ETX25FTB.js.map +1 -0
- package/dist/{chunk-MEKWESBF.js → chunk-FBZTDDRC.js} +2 -2
- package/dist/chunk-FBZTDDRC.js.map +1 -0
- package/dist/{chunk-CWXM57QR.js → chunk-GAIDBPFY.js} +5 -5
- package/dist/chunk-GAIDBPFY.js.map +1 -0
- package/dist/{chunk-YVUIHH6Z.js → chunk-GPQLBVQC.js} +1 -1
- package/dist/chunk-GPQLBVQC.js.map +1 -0
- package/dist/{chunk-KAE7AMYE.js → chunk-H3367ISL.js} +2 -2
- package/dist/chunk-H3367ISL.js.map +1 -0
- package/dist/{chunk-COPVBJPL.js → chunk-H3JZ3P5T.js} +2 -1
- package/dist/chunk-H3JZ3P5T.js.map +1 -0
- package/dist/{chunk-3LP7DNLQ.js → chunk-H4NTJFEE.js} +2 -2
- package/dist/chunk-H4NTJFEE.js.map +1 -0
- package/dist/{chunk-TCHAWJMB.js → chunk-HGXVOFCL.js} +2 -2
- package/dist/chunk-HGXVOFCL.js.map +1 -0
- package/dist/{chunk-CEZEVILU.js → chunk-HJ2AIAKX.js} +1 -1
- package/dist/chunk-HJ2AIAKX.js.map +1 -0
- package/dist/{chunk-K5WRVSOL.js → chunk-I54WQBXL.js} +8 -8
- package/dist/chunk-I54WQBXL.js.map +1 -0
- package/dist/{chunk-G6Y6CQYV.js → chunk-K5LWSWV7.js} +4 -4
- package/dist/chunk-K5LWSWV7.js.map +1 -0
- package/dist/{chunk-IWT6JUZD.js → chunk-L6EJX2VQ.js} +2 -2
- package/dist/chunk-L6EJX2VQ.js.map +1 -0
- package/dist/{chunk-XYQD4LDI.js → chunk-LHX7ENKZ.js} +3 -3
- package/dist/chunk-LHX7ENKZ.js.map +1 -0
- package/dist/{chunk-BFR3VC25.js → chunk-LR5CTOC5.js} +18 -18
- package/dist/chunk-LR5CTOC5.js.map +1 -0
- package/dist/chunk-MO4HAJZG.js +8709 -0
- package/dist/chunk-MO4HAJZG.js.map +1 -0
- package/dist/{chunk-T4APHDES.js → chunk-O6FKHAWN.js} +1 -1
- package/dist/chunk-O6FKHAWN.js.map +1 -0
- package/dist/{chunk-77N3QEIL.js → chunk-OR3TMIJN.js} +5 -5
- package/dist/chunk-OR3TMIJN.js.map +1 -0
- package/dist/{chunk-P27DQ65Z.js → chunk-OVGDDKO2.js} +1 -1
- package/dist/chunk-OVGDDKO2.js.map +1 -0
- package/dist/{chunk-O4GE6VTR.js → chunk-PWW5QKZS.js} +2 -2
- package/dist/chunk-PWW5QKZS.js.map +1 -0
- package/dist/{chunk-DUKW3R7O.js → chunk-Q4TKI2MV.js} +2 -2
- package/dist/chunk-Q4TKI2MV.js.map +1 -0
- package/dist/{chunk-QTJQIHDZ.js → chunk-QRS7Y3EM.js} +4 -3
- package/dist/chunk-QRS7Y3EM.js.map +1 -0
- package/dist/{chunk-TMUAKJWX.js → chunk-RRKRA237.js} +14 -5
- package/dist/chunk-RRKRA237.js.map +1 -0
- package/dist/{chunk-2U54EOXJ.js → chunk-TK3DXH7A.js} +1 -1
- package/dist/chunk-TK3DXH7A.js.map +1 -0
- package/dist/{chunk-CK3ONRRC.js → chunk-U7XWIOSB.js} +3 -3
- package/dist/chunk-U7XWIOSB.js.map +1 -0
- package/dist/{chunk-YUKV7RCD.js → chunk-VHGC44HA.js} +5 -5
- package/dist/chunk-VHGC44HA.js.map +1 -0
- package/dist/{chunk-ZJ3H3VS7.js → chunk-VN5V2E2S.js} +7 -5
- package/dist/chunk-VN5V2E2S.js.map +1 -0
- package/dist/{chunk-G53MA5XX.js → chunk-WMIKJGXW.js} +3 -3
- package/dist/chunk-WMIKJGXW.js.map +1 -0
- package/dist/{chunk-ROBAX5TN.js → chunk-WQFU635Q.js} +8 -6
- package/dist/chunk-WQFU635Q.js.map +1 -0
- package/dist/{chunk-TSMGMA6R.js → chunk-XON75UFN.js} +3 -3
- package/dist/chunk-XON75UFN.js.map +1 -0
- package/dist/chunk-YLJ4XMA6.js +35 -0
- package/dist/chunk-YLJ4XMA6.js.map +1 -0
- package/dist/{chunk-K3JCP4FO.js → chunk-Z252BNAZ.js} +1 -1
- package/dist/chunk-Z252BNAZ.js.map +1 -0
- package/dist/{chunk-MLPPSCDQ.js → chunk-ZHQK3MOM.js} +4 -4
- package/dist/chunk-ZHQK3MOM.js.map +1 -0
- package/dist/{chunk-6Q4I33CH.js → chunk-ZIFZFP5I.js} +5 -5
- package/dist/chunk-ZIFZFP5I.js.map +1 -0
- package/dist/connected-evidence.js +22 -21
- package/dist/connected-evidence.js.map +1 -7
- package/dist/dataset-commerce.js +2 -0
- package/dist/dataset-commerce.js.map +1 -7
- package/dist/dataset-marketplace.js +2 -0
- package/dist/dataset-marketplace.js.map +1 -7
- package/dist/dataset-workspaces.js +22 -21
- package/dist/dataset-workspaces.js.map +1 -7
- package/dist/experiment-evaluation-schedules.js +28 -27
- package/dist/experiment-evaluation-schedules.js.map +1 -7
- package/dist/experiment-improvements.js +12 -11
- package/dist/experiment-improvements.js.map +1 -7
- package/dist/experiments.js +26 -25
- package/dist/experiments.js.map +1 -7
- package/dist/human-review.js +3 -2
- package/dist/human-review.js.map +1 -7
- package/dist/index.js +98 -50
- package/dist/index.js.map +1 -7
- package/dist/learning.js +4 -3
- package/dist/learning.js.map +1 -7
- package/dist/model-batch-review.js +2 -1
- package/dist/model-batch-review.js.map +1 -7
- package/dist/model-projects.js +3 -2
- package/dist/model-projects.js.map +1 -7
- package/dist/model-starter-attempts.js +5 -4
- package/dist/model-starter-attempts.js.map +1 -7
- package/dist/model-starter-catalog.js +15 -14
- package/dist/model-starter-catalog.js.map +1 -7
- package/dist/model-starters.js +15 -14
- package/dist/model-starters.js.map +1 -7
- package/dist/model-taskset-authoring.js +2 -1
- package/dist/model-taskset-authoring.js.map +1 -7
- package/dist/model-taskset-runs.js +6 -5
- package/dist/model-taskset-runs.js.map +1 -7
- package/dist/post-training.js +9 -8
- package/dist/post-training.js.map +1 -7
- package/dist/profile-actions.js +3 -2
- package/dist/profile-actions.js.map +1 -7
- package/dist/project-actions.js +3 -2
- package/dist/project-actions.js.map +1 -7
- package/dist/refiner.js +3 -2
- package/dist/refiner.js.map +1 -7
- package/dist/taskset-catalog.js +2 -1
- package/dist/taskset-catalog.js.map +1 -7
- package/dist/taskset-drafts.js +19 -18
- package/dist/taskset-drafts.js.map +1 -7
- package/dist/taskset-packages.js +25 -22
- package/dist/taskset-packages.js.map +1 -7
- package/dist/training-bundle.js +44 -19
- package/dist/training-bundle.js.map +1 -7
- package/dist/training-projects.js +2 -1
- package/dist/training-projects.js.map +1 -7
- package/dist/training.js +11 -10
- package/dist/training.js.map +1 -7
- package/dist/types/packages/cloud/src/api/core.d.ts.map +1 -1
- package/dist/types/packages/cloud/src/sandbox/client-handles.d.ts.map +1 -1
- package/dist/types/packages/cloud/src/sandbox/client.d.ts.map +1 -1
- package/dist/types/packages/cloud/src/sandbox/sandbox-instance-client.d.ts.map +1 -1
- package/dist/types/packages/cloud/src/sandbox/types/runtime-profiles.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/advanced-refiner-evaluations.d.ts +487 -487
- package/dist/types/packages/sdk/src/advanced-refiner-evaluations.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/candidate-evaluation-client.d.ts +375 -351
- package/dist/types/packages/sdk/src/candidate-evaluation-client.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/candidate-evaluations.d.ts +80 -54
- package/dist/types/packages/sdk/src/candidate-evaluations.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/connected-collection-status.d.ts +5 -5
- package/dist/types/packages/sdk/src/connected-dataset-source.d.ts +10 -10
- package/dist/types/packages/sdk/src/connected-evidence-client.d.ts +464 -460
- package/dist/types/packages/sdk/src/connected-evidence-client.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/connected-evidence-contracts.d.ts +23 -23
- package/dist/types/packages/sdk/src/connected-recorded-execution.d.ts +77 -74
- package/dist/types/packages/sdk/src/connected-recorded-execution.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/connected-sync.d.ts +30 -30
- package/dist/types/packages/sdk/src/connected-sync.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/dataset-commerce-contracts.d.ts +14 -14
- package/dist/types/packages/sdk/src/dataset-commerce-files.d.ts +5 -5
- package/dist/types/packages/sdk/src/dataset-commerce-files.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/dataset-commerce-responses.d.ts +82 -82
- package/dist/types/packages/sdk/src/dataset-commerce.d.ts +58 -58
- package/dist/types/packages/sdk/src/dataset-commerce.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/dataset-marketplace.d.ts +4 -4
- package/dist/types/packages/sdk/src/dataset-marketplace.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/dataset-population.d.ts +10 -10
- package/dist/types/packages/sdk/src/dataset-population.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/dataset-preparation-authoring-contracts.d.ts +172 -172
- package/dist/types/packages/sdk/src/dataset-preparation-client.d.ts +47 -47
- package/dist/types/packages/sdk/src/dataset-preparation-client.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/dataset-preparation-contracts.d.ts +90 -90
- package/dist/types/packages/sdk/src/dataset-preparation-qualification-contracts.d.ts +7 -7
- package/dist/types/packages/sdk/src/dataset-preparation-research-contracts.d.ts +26 -26
- package/dist/types/packages/sdk/src/dataset-preparation-starting-state.d.ts +8 -8
- package/dist/types/packages/sdk/src/dataset-preparation-workspace.d.ts +111 -110
- package/dist/types/packages/sdk/src/dataset-preparation-workspace.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/dataset-workspace-client.d.ts +896 -889
- package/dist/types/packages/sdk/src/dataset-workspace-client.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/dataset-workspace-contracts.d.ts +225 -223
- package/dist/types/packages/sdk/src/dataset-workspace-contracts.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/dataset-workspace-operations.d.ts +226 -224
- package/dist/types/packages/sdk/src/dataset-workspace-operations.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/evaluation-coordination-http.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/evaluation-project-context.d.ts +1 -1
- package/dist/types/packages/sdk/src/experiment-client.d.ts +2102 -2014
- package/dist/types/packages/sdk/src/experiment-client.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/experiment-contracts.d.ts +165 -113
- package/dist/types/packages/sdk/src/experiment-contracts.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/experiment-evaluation-schedules.d.ts +587 -516
- package/dist/types/packages/sdk/src/experiment-evaluation-schedules.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/experiment-execution-selection.d.ts +5 -5
- package/dist/types/packages/sdk/src/experiment-execution-selection.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/experiment-field-mappings.d.ts +8 -8
- package/dist/types/packages/sdk/src/experiment-grading-contracts.d.ts +16 -16
- package/dist/types/packages/sdk/src/experiment-improvement-client.d.ts +2524 -2524
- package/dist/types/packages/sdk/src/experiment-improvement-client.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/experiment-improvement-contracts.d.ts +1557 -1557
- package/dist/types/packages/sdk/src/experiment-improvement-hosted-adoption.d.ts +150 -150
- package/dist/types/packages/sdk/src/experiment-inspection.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/experiment-run-contracts.d.ts +38 -25
- package/dist/types/packages/sdk/src/experiment-run-contracts.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/experiment-run-details.d.ts +303 -243
- package/dist/types/packages/sdk/src/experiment-run-details.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/experiment-scoring-contracts.d.ts +21 -21
- package/dist/types/packages/sdk/src/grader-inspection.d.ts +104 -104
- package/dist/types/packages/sdk/src/grader-inspection.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/harness-experiment-policy.d.ts +33 -20
- package/dist/types/packages/sdk/src/harness-experiment-policy.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/human-review-client.d.ts +288 -288
- package/dist/types/packages/sdk/src/human-review-client.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/index.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/learning-batch-assets.d.ts +15 -13
- package/dist/types/packages/sdk/src/learning-batch-assets.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/learning-client.d.ts +5 -5
- package/dist/types/packages/sdk/src/learning-client.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/learning-credentials.d.ts +4 -4
- package/dist/types/packages/sdk/src/learning-credentials.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/managed-training-preparation.d.ts +69 -69
- package/dist/types/packages/sdk/src/managed-training-preparation.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/model-batch-review-contracts.d.ts +65 -61
- package/dist/types/packages/sdk/src/model-batch-review-contracts.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/model-batch-review-preparation.d.ts +74 -72
- package/dist/types/packages/sdk/src/model-batch-review-preparation.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/model-batch-review.d.ts +96 -92
- package/dist/types/packages/sdk/src/model-batch-review.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/model-learning-intent.d.ts +1 -1
- package/dist/types/packages/sdk/src/model-learning-policy.d.ts +247 -247
- package/dist/types/packages/sdk/src/model-learning-policy.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/model-projects.d.ts +324 -324
- package/dist/types/packages/sdk/src/model-projects.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/model-starter-attempts.d.ts +187 -187
- package/dist/types/packages/sdk/src/model-starter-attempts.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/model-starter-catalog.d.ts +181 -179
- package/dist/types/packages/sdk/src/model-starter-catalog.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/model-starter-execution.d.ts +40 -40
- package/dist/types/packages/sdk/src/model-starters.d.ts +291 -287
- package/dist/types/packages/sdk/src/model-starters.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/model-taskset-authoring-contracts.d.ts +3 -3
- package/dist/types/packages/sdk/src/model-taskset-derivation.d.ts +114 -112
- package/dist/types/packages/sdk/src/model-taskset-derivation.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/model-taskset-resources.d.ts +18 -18
- package/dist/types/packages/sdk/src/model-taskset-runs-contracts.d.ts +179 -127
- package/dist/types/packages/sdk/src/model-taskset-runs-contracts.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/model-taskset-runs.d.ts +865 -833
- package/dist/types/packages/sdk/src/model-taskset-runs.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/post-training.d.ts +438 -377
- package/dist/types/packages/sdk/src/post-training.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/profile-actions.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/profile-evaluation-discovery.d.ts +150 -150
- package/dist/types/packages/sdk/src/profile-evaluation-discovery.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/profile-external-dataset-package.d.ts +254 -251
- package/dist/types/packages/sdk/src/profile-external-dataset-package.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/project-actions.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/protocol.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/run-diagnostics.d.ts +3 -3
- package/dist/types/packages/sdk/src/task-design-contracts.d.ts +50 -50
- package/dist/types/packages/sdk/src/task-inventory.d.ts +4 -4
- package/dist/types/packages/sdk/src/task-inventory.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/taskset-authored-contracts.d.ts +190 -189
- package/dist/types/packages/sdk/src/taskset-authored-contracts.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/taskset-authored-files.d.ts +149 -148
- package/dist/types/packages/sdk/src/taskset-authored-files.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/taskset-authored-portable-release.d.ts +15 -6
- package/dist/types/packages/sdk/src/taskset-authored-portable-release.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/taskset-calibration-fixtures.d.ts +64 -63
- package/dist/types/packages/sdk/src/taskset-calibration-fixtures.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/taskset-catalog.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/taskset-draft-api-contracts.d.ts +245 -243
- package/dist/types/packages/sdk/src/taskset-draft-api-contracts.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/taskset-draft-authoring.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/taskset-draft-client.d.ts +744 -738
- package/dist/types/packages/sdk/src/taskset-draft-client.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/taskset-draft-core.d.ts +133 -131
- package/dist/types/packages/sdk/src/taskset-draft-core.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/taskset-draft-dataset-artifacts.d.ts +80 -80
- package/dist/types/packages/sdk/src/taskset-draft-dataset-sources.d.ts +34 -34
- package/dist/types/packages/sdk/src/taskset-draft-document.d.ts +119 -117
- package/dist/types/packages/sdk/src/taskset-draft-document.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/taskset-draft-package-compiler.d.ts +500 -492
- package/dist/types/packages/sdk/src/taskset-draft-package-compiler.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/taskset-draft-source.d.ts +236 -234
- package/dist/types/packages/sdk/src/taskset-draft-source.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/taskset-draft-workspace.d.ts +228 -224
- package/dist/types/packages/sdk/src/taskset-draft-workspace.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/taskset-intake.d.ts +1 -1
- package/dist/types/packages/sdk/src/taskset-package-client.d.ts +4589 -4577
- package/dist/types/packages/sdk/src/taskset-package-client.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/taskset-package-contracts.d.ts +2068 -2054
- package/dist/types/packages/sdk/src/taskset-package-contracts.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/taskset-package-files.d.ts +1 -1
- package/dist/types/packages/sdk/src/taskset-package-grader-projection.d.ts +21 -21
- package/dist/types/packages/sdk/src/taskset-package-learning.d.ts +88 -86
- package/dist/types/packages/sdk/src/taskset-package-learning.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/taskset-package-projection.d.ts +387 -383
- package/dist/types/packages/sdk/src/taskset-package-projection.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/training-acceptance.d.ts +26 -26
- package/dist/types/packages/sdk/src/training-acceptance.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/training-bundle-contracts.d.ts +14 -10
- package/dist/types/packages/sdk/src/training-bundle-contracts.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/training-bundle.d.ts +2 -0
- package/dist/types/packages/sdk/src/training-bundle.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/training-candidate-decisions.d.ts +2 -2
- package/dist/types/packages/sdk/src/training-candidate-decisions.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/training-evaluation-results.d.ts +3 -3
- package/dist/types/packages/sdk/src/training-evaluation-source.d.ts +1 -1
- package/dist/types/packages/sdk/src/training-evaluation-source.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/training-grading-plan.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/training-harness-sources.d.ts +14 -14
- package/dist/types/packages/sdk/src/training-harness-sources.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/training-learning-batch.d.ts +344 -340
- package/dist/types/packages/sdk/src/training-learning-batch.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/training-preparations.d.ts +700 -700
- package/dist/types/packages/sdk/src/training-preparations.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/training-project-client.d.ts +272 -272
- package/dist/types/packages/sdk/src/training-project-client.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/training-project-contracts.d.ts +161 -161
- package/dist/types/packages/sdk/src/training-qualification-preparation.d.ts +75 -71
- package/dist/types/packages/sdk/src/training-qualification-preparation.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/training.d.ts +1442 -1416
- package/dist/types/packages/sdk/src/training.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/work.d.ts +4 -0
- package/dist/types/packages/sdk/src/work.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/workflows.d.ts.map +1 -1
- package/dist/workflows.js +3 -2
- package/dist/workflows.js.map +1 -7
- package/package.json +3 -3
- package/dist/chunk-2DMYAJLS.js.map +0 -7
- package/dist/chunk-2U54EOXJ.js.map +0 -7
- package/dist/chunk-36WJTS5V.js.map +0 -7
- package/dist/chunk-3KXDH6OB.js.map +0 -7
- package/dist/chunk-3LP7DNLQ.js.map +0 -7
- package/dist/chunk-6Q4I33CH.js.map +0 -7
- package/dist/chunk-77N3QEIL.js.map +0 -7
- package/dist/chunk-AG5DDL7T.js.map +0 -7
- package/dist/chunk-BFR3VC25.js.map +0 -7
- package/dist/chunk-BSK3VLM3.js.map +0 -7
- package/dist/chunk-CEZEVILU.js.map +0 -7
- package/dist/chunk-CK3ONRRC.js.map +0 -7
- package/dist/chunk-COPVBJPL.js.map +0 -7
- package/dist/chunk-CTVKI3BV.js.map +0 -7
- package/dist/chunk-CWXM57QR.js.map +0 -7
- package/dist/chunk-DUKW3R7O.js.map +0 -7
- package/dist/chunk-FHCSDXIA.js +0 -1417
- package/dist/chunk-FHCSDXIA.js.map +0 -7
- package/dist/chunk-FY7NHCEH.js.map +0 -7
- package/dist/chunk-G53MA5XX.js.map +0 -7
- package/dist/chunk-G6Y6CQYV.js.map +0 -7
- package/dist/chunk-HKWX624G.js.map +0 -7
- package/dist/chunk-IWT6JUZD.js.map +0 -7
- package/dist/chunk-K3JCP4FO.js.map +0 -7
- package/dist/chunk-K5WRVSOL.js.map +0 -7
- package/dist/chunk-KAE7AMYE.js.map +0 -7
- package/dist/chunk-MEKWESBF.js.map +0 -7
- package/dist/chunk-MLPPSCDQ.js.map +0 -7
- package/dist/chunk-O4GE6VTR.js.map +0 -7
- package/dist/chunk-P27DQ65Z.js.map +0 -7
- package/dist/chunk-QEIT5VXJ.js.map +0 -7
- package/dist/chunk-QTJQIHDZ.js.map +0 -7
- package/dist/chunk-ROBAX5TN.js.map +0 -7
- package/dist/chunk-T4APHDES.js.map +0 -7
- package/dist/chunk-TCHAWJMB.js.map +0 -7
- package/dist/chunk-TMUAKJWX.js.map +0 -7
- package/dist/chunk-TSMGMA6R.js.map +0 -7
- package/dist/chunk-UPS52OPZ.js.map +0 -7
- package/dist/chunk-VY5AFE7A.js.map +0 -7
- package/dist/chunk-XYQD4LDI.js.map +0 -7
- package/dist/chunk-YCQVVFE5.js.map +0 -7
- package/dist/chunk-YUKV7RCD.js.map +0 -7
- package/dist/chunk-YVUIHH6Z.js.map +0 -7
- package/dist/chunk-ZJ3H3VS7.js.map +0 -7
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/model-projects.ts","../src/protocol.ts"],"sourcesContent":["import { z } from \"zod\";\nimport { ModelInitialLearningSchema, type ModelInitialLearning } from \"./model-learning-intent.js\";\nexport { ModelInitialLearningSchema, type ModelInitialLearning } from \"./model-learning-intent.js\";\nimport { assertBoundedTaskJson } from \"@openpond/evals/task-schema\";\n\nimport {\n MODEL_PROJECT_API_RESPONSE_MAX_BYTES,\n MODEL_PROJECT_SYNC_MAX_BYTES,\n OPENPOND_MODEL_PROJECT_MEDIA_TYPE,\n OpenPondProtocolError,\n assertCanonicalPayloadSize,\n canonicalSha256,\n parseBoundedJson,\n} from \"./protocol.js\";\n\nexport {\n MODEL_PROJECT_API_RESPONSE_MAX_BYTES,\n MODEL_PROJECT_SYNC_MAX_BYTES,\n OPENPOND_MODEL_PROJECT_MEDIA_TYPE,\n} from \"./protocol.js\";\n\nconst IdSchema = z.string().trim().min(1).max(500);\nconst HashSchema = z.string().regex(/^[a-f0-9]{64}$/);\nconst TimestampSchema = z.string().datetime({ offset: true });\n\nexport const ModelProjectImmutableRefSchema = z\n .object({\n id: IdSchema,\n contentHash: HashSchema,\n })\n .strict();\n\nexport const ModelProjectVersionedRefSchema =\n ModelProjectImmutableRefSchema.extend({\n revision: z.number().int().positive(),\n }).strict();\n\nexport const ModelProjectBaseModelSchema = z\n .object({\n schemaVersion: z.literal(\"openpond.baseModelPreference.v1\"),\n modelId: IdSchema,\n revision: z.string().trim().min(1).max(256).nullable(),\n tokenizerRevision: z.string().trim().min(1).max(256).nullable(),\n chatTemplateHash: z.string().trim().min(8).max(256).nullable(),\n modelAssetId: IdSchema.nullable(),\n source: z.enum([\"managed\", \"local\", \"builtin\"]),\n })\n .strict();\n\nexport const ModelProjectTrainingMethodSchema = z.enum([\n \"sft\",\n \"dpo\",\n \"grpo\",\n \"ppo\",\n \"sdft\",\n \"opd\",\n \"opsd\",\n \"sdpo\",\n]);\n\n/**\n * A versioned recipe document stored while a Project is still mutable.\n * The training endpoint validates the selected recipe version in full before\n * accepting an immutable Job; Project sync preserves newer recipe fields.\n */\nexport const ModelProjectRecipeDocumentSchema = z\n .object({\n schemaVersion: z.string().regex(/^openpond\\.[A-Za-z0-9]+Recipe\\.v\\d+$/),\n method: ModelProjectTrainingMethodSchema,\n parameterization: z.enum([\"lora\", \"full\"]),\n })\n .catchall(z.unknown());\n\n/** The published Profile source selected for this Model's Harness. */\nexport const ModelProfileSourceSelectionSchema = z.object({\n profileProjectId: IdSchema,\n sourceRevision: z.string().regex(/^[a-f0-9]{40,64}$/),\n harnessRelease: ModelProjectImmutableRefSchema,\n}).strict();\n\n/** A held-out check selected from an exact released Profile catalog. Its\n * Taskset and grader stay in the evaluation runtime, outside training input. */\nexport const ModelProfileEvaluationSelectionSchema = z.object({\n profileProjectId: IdSchema,\n sourceRevision: z.string().regex(/^[a-f0-9]{40,64}$/),\n catalogHash: HashSchema,\n definitionId: IdSchema,\n harnessRelease: ModelProjectImmutableRefSchema,\n tasksetRelease: ModelProjectImmutableRefSchema,\n}).strict();\n\nexport const ModelProjectTrainingSetupSchema = z\n .object({\n tasksetRef: ModelProjectVersionedRefSchema.nullable().default(null),\n evaluationTasksetRef: ModelProjectVersionedRefSchema.nullable().optional(),\n profileSource: ModelProfileSourceSelectionSchema.nullable().optional(),\n profileEvaluation: ModelProfileEvaluationSelectionSchema.nullable().optional(),\n rewardBindingRef: ModelProjectVersionedRefSchema.nullable().optional(),\n tasksetRelease: ModelProjectImmutableRefSchema.nullable().default(null),\n harnessRelease: ModelProjectImmutableRefSchema.nullable().default(null),\n baseModel: ModelProjectBaseModelSchema.nullable().default(null),\n method: ModelProjectTrainingMethodSchema.nullable().default(null),\n destinationId: IdSchema.nullable().default(null),\n managedRolloutPlacement: z\n .enum([\"local\", \"remote\"])\n .default(\"remote\"),\n managedGpuPlacementObjective: z\n .enum([\"fast\", \"balanced\", \"economical\"])\n .default(\"balanced\"),\n managedGpuRequirement: z\n .enum([\"any\", \"h100_hbm3\"])\n .default(\"any\"),\n runPreset: z\n .enum([\"small\", \"standard\", \"custom\", \"small_experiment\"])\n .nullable()\n .default(null),\n recipe: ModelProjectRecipeDocumentSchema.nullable().default(null),\n preferredMaximumSpendUsd: z.number().nonnegative().nullable().default(null),\n preferredRetentionDays: z\n .number()\n .int()\n .nonnegative()\n .nullable()\n .default(null),\n })\n .strict();\n\nexport const HostedModelProjectTrainingSetupSchema =\n ModelProjectTrainingSetupSchema.omit({ managedGpuRequirement: true });\n\nexport const HostedModelProjectLinkSchema = z\n .object({\n schemaVersion: z.literal(\"openpond.hostedModelProjectLink.v1\"),\n apiOrigin: z.string().url().refine(value => new URL(value).origin === value, \"Use a canonical API origin.\").nullable().default(null),\n teamId: IdSchema,\n projectId: IdSchema,\n portableProjectId: IdSchema,\n revision: z.number().int().positive(),\n etag: HashSchema,\n syncedSourceRevision: z.number().int().positive(),\n syncedAt: TimestampSchema,\n tasksets: z\n .array(\n z\n .object({\n localTasksetId: IdSchema,\n localTasksetHash: HashSchema.nullable().default(null),\n releaseId: IdSchema,\n releaseRevision: z.number().int().positive(),\n releaseHash: HashSchema,\n packageHash: HashSchema.nullable().default(null),\n hostedTasksetId: IdSchema,\n syncedAt: TimestampSchema,\n })\n .strict(),\n )\n .max(10_000)\n .default([]),\n })\n .strict();\n\nexport const ModelProjectTasksetSyncSchema = z\n .object({\n localTasksetId: IdSchema,\n releaseId: IdSchema,\n releaseRevision: z.number().int().positive(),\n releaseHash: HashSchema,\n state: z.enum([\"syncing\", \"synced\", \"sync_failed\"]),\n hostedTasksetId: IdSchema.nullable().default(null),\n lastAttemptAt: TimestampSchema,\n syncedAt: TimestampSchema.nullable().default(null),\n lastError: z.string().trim().min(1).max(5_000).nullable().default(null),\n })\n .strict();\n\nexport const ModelProjectSchema = z\n .object({\n schemaVersion: z.literal(\"openpond.modelProject.v2\"),\n id: IdSchema,\n profileId: IdSchema,\n revision: z.number().int().positive().default(1),\n name: z.string().trim().min(1).max(200),\n objective: z.string().trim().max(5_000).nullable(),\n defaultBaseModel: ModelProjectBaseModelSchema.nullable(),\n defaultDestinationId: IdSchema.nullable(),\n trainingSetup: ModelProjectTrainingSetupSchema,\n hosted: HostedModelProjectLinkSchema.nullable().default(null),\n tasksetSyncs: z\n .array(ModelProjectTasksetSyncSchema)\n .max(10_000)\n .default([]),\n createdAt: TimestampSchema,\n updatedAt: TimestampSchema,\n })\n .strict();\n\n/** User-editable configuration. Execution and hosting receipts are server-owned. */\nexport const ModelProjectEditableSchema = ModelProjectSchema.pick({\n id: true,\n profileId: true,\n name: true,\n objective: true,\n defaultBaseModel: true,\n defaultDestinationId: true,\n trainingSetup: true,\n});\n\n/** Zero creates a new Model; a positive revision updates that exact revision. */\nexport const ModelProjectSaveRequestSchema = z.object({\n schemaVersion: z.literal(\"openpond.modelProjectSave.v1\"),\n operationId: IdSchema,\n expectedRevision: z.number().int().nonnegative(),\n project: ModelProjectEditableSchema,\n learning: ModelInitialLearningSchema.optional(),\n}).strict().superRefine((value, context) => {\n if (value.learning && value.expectedRevision !== 0) context.addIssue({ code: \"custom\", path: [\"learning\"], message: \"Use learning settings to edit an existing Model's policy.\" });\n});\n\nexport type ModelProjectSaveRequest = z.infer<typeof ModelProjectSaveRequestSchema>;\n\n/** A read-only configuration check; it does not establish training or grader quality. */\nexport const ModelProjectConfigurationCheckSchema = z.object({\n schemaVersion: z.literal(\"openpond.modelProjectConfigurationCheck.v1\"),\n configurationHash: HashSchema,\n projectId: IdSchema,\n expectedRevision: z.number().int().nonnegative(),\n checkedAt: TimestampSchema,\n canSave: z.boolean(),\n deferred: z.array(z.enum([\"base_model\", \"taskset\"])).max(2),\n findings: z.array(z.object({\n code: IdSchema,\n severity: z.enum([\"error\", \"warning\"]),\n message: z.string().min(1).max(5000),\n field: z.string().min(1).max(500).nullable(),\n }).strict()).max(100),\n}).strict();\n\nexport type ModelProjectConfigurationCheck = z.infer<typeof ModelProjectConfigurationCheckSchema>;\n\nexport const ModelProjectBaseModelCandidateSchema = z.object({\n id: IdSchema, name: z.string().min(1).max(500), available: z.boolean(), preference: ModelProjectBaseModelSchema,\n}).strict();\n\nexport async function modelProjectConfigurationHash(request: ModelProjectSaveRequest): Promise<string> {\n const parsed = parseModelProjectSaveRequest(request);\n return canonicalSha256({ project: parsed.project, expectedRevision: parsed.expectedRevision, ...(parsed.learning ? { learning: parsed.learning } : {}) });\n}\n\nexport function parseModelProjectSaveRequest(value: unknown): ModelProjectSaveRequest {\n try {\n assertBoundedTaskJson(value, MODEL_PROJECT_SYNC_MAX_BYTES);\n } catch {\n throw new OpenPondModelProjectApiError(400, {\n schemaVersion: \"openpond.modelProjectApiError.v2\", code: \"model_configuration_json_invalid\",\n message: \"Model configuration must be bounded JSON data.\", retryable: false, requestId: null, details: {},\n });\n }\n return ModelProjectSaveRequestSchema.parse(value);\n}\n\n/** Stable across transport retries; excludes server-owned revision/timestamps. */\nexport async function createModelProjectSaveRequest(\n project: z.input<typeof ModelProjectEditableSchema>,\n expectedRevision: number,\n learning?: ModelInitialLearning,\n): Promise<ModelProjectSaveRequest> {\n assertBoundedTaskJson(project, MODEL_PROJECT_SYNC_MAX_BYTES);\n const editable = ModelProjectEditableSchema.parse(project);\n assertCanonicalPayloadSize(editable, MODEL_PROJECT_SYNC_MAX_BYTES, \"Model configuration\");\n const initialLearning = learning ? ModelInitialLearningSchema.parse(learning) : undefined;\n const hash = await canonicalSha256({ project: editable, expectedRevision, ...(initialLearning ? { learning: initialLearning } : {}) });\n return parseModelProjectSaveRequest({\n schemaVersion: \"openpond.modelProjectSave.v1\",\n operationId: `model-save:${hash}`,\n expectedRevision,\n project: editable,\n ...(initialLearning ? { learning: initialLearning } : {}),\n });\n}\n\nexport const HostedModelProjectSyncSchema = z\n .object({\n schemaVersion: z.literal(\"openpond.hostedModelProjectSync.v2\"),\n portableProjectId: IdSchema,\n name: z.string().trim().min(1).max(200),\n objective: z.string().trim().max(5_000).nullable(),\n defaultBaseModel: ModelProjectBaseModelSchema.nullable(),\n defaultDestinationId: IdSchema.nullable(),\n trainingSetup: HostedModelProjectTrainingSetupSchema,\n sourceRevision: z.number().int().positive(),\n sourceUpdatedAt: TimestampSchema,\n expectedEtag: HashSchema.nullable().default(null),\n })\n .strict();\n\nexport const HostedModelProjectSummarySchema = z\n .object({\n id: IdSchema,\n teamId: IdSchema,\n portableProjectId: IdSchema,\n name: z.string().trim().min(1).max(200),\n objective: z.string().trim().max(5_000).nullable(),\n defaultBaseModel: ModelProjectBaseModelSchema.nullable(),\n defaultDestinationId: IdSchema.nullable(),\n trainingSetup: HostedModelProjectTrainingSetupSchema,\n sourceRevision: z.number().int().positive(),\n sourceUpdatedAt: TimestampSchema,\n revision: z.number().int().positive(),\n etag: HashSchema,\n createdAt: TimestampSchema,\n updatedAt: TimestampSchema,\n })\n .strict();\n\nexport const ModelProjectResourceSummarySchema = z\n .object({\n kind: z.enum([\n \"taskset_release\",\n \"harness_release\",\n \"dataset_release\",\n \"evidence_set\",\n \"model_version\",\n \"reward_model_version\",\n \"evaluation_receipt\",\n ]),\n ref: ModelProjectImmutableRefSchema,\n role: z.string().trim().min(1).max(200).nullable().default(null),\n updatedAt: TimestampSchema,\n })\n .strict();\n\nexport const HostedModelProjectDetailSchema = z\n .object({\n project: HostedModelProjectSummarySchema,\n resources: z.array(ModelProjectResourceSummarySchema).max(10_000),\n jobCount: z.number().int().nonnegative(),\n latestJobIds: z.array(IdSchema).max(100),\n })\n .strict();\n\nexport const ModelProjectApiErrorSchema = z\n .object({\n schemaVersion: z.literal(\"openpond.modelProjectApiError.v2\"),\n code: z.string().trim().min(1).max(200),\n message: z.string().trim().min(1).max(5_000),\n retryable: z.boolean().default(false),\n requestId: z.string().trim().min(1).max(500).nullable().default(null),\n details: z.record(z.string(), z.unknown()).default({}),\n })\n .strict();\n\nexport class OpenPondModelProjectApiError extends Error {\n readonly status: number;\n readonly code: string;\n readonly retryable: boolean;\n readonly requestId: string | null;\n readonly details: Record<string, unknown>;\n\n constructor(status: number, error: z.infer<typeof ModelProjectApiErrorSchema>) {\n super(error.message);\n this.name = \"OpenPondModelProjectApiError\";\n this.status = status;\n this.code = error.code;\n this.retryable = error.retryable;\n this.requestId = error.requestId;\n this.details = error.details;\n }\n}\n\nexport type ModelProject = z.infer<typeof ModelProjectSchema>;\nexport type ModelProjectTrainingSetup = z.infer<\n typeof ModelProjectTrainingSetupSchema\n>;\nexport type HostedModelProjectSync = z.infer<\n typeof HostedModelProjectSyncSchema\n>;\nexport type HostedModelProjectSummary = z.infer<\n typeof HostedModelProjectSummarySchema\n>;\nexport type HostedModelProjectDetail = z.infer<\n typeof HostedModelProjectDetailSchema\n>;\n\ntype ModelProjectsFetch = typeof fetch;\n\nfunction headersRecord(headers: HeadersInit | undefined): Record<string, string> {\n const result: Record<string, string> = {};\n new Headers(headers).forEach((value, key) => {\n result[key] = value;\n });\n return result;\n}\n\nexport function createModelProjectsClient(input: {\n baseUrl: string;\n fetch?: ModelProjectsFetch;\n headers?: HeadersInit | (() => HeadersInit | Promise<HeadersInit>);\n}) {\n const fetchImpl = input.fetch ?? fetch;\n const baseUrl = input.baseUrl.replace(/\\/$/, \"\");\n\n async function request(pathname: string, init?: RequestInit): Promise<unknown> {\n const configuredHeaders =\n typeof input.headers === \"function\"\n ? await input.headers()\n : (input.headers ?? {});\n const response = await fetchImpl(`${baseUrl}${pathname}`, {\n ...init,\n headers: {\n accept: OPENPOND_MODEL_PROJECT_MEDIA_TYPE,\n ...(init?.body\n ? { \"content-type\": OPENPOND_MODEL_PROJECT_MEDIA_TYPE }\n : {}),\n ...headersRecord(configuredHeaders),\n ...headersRecord(init?.headers),\n },\n });\n const body = parseBoundedJson(\n await response.text(),\n MODEL_PROJECT_API_RESPONSE_MAX_BYTES,\n \"Model Project API response\",\n );\n if (!response.ok) {\n const parsed = ModelProjectApiErrorSchema.safeParse(body);\n if (parsed.success) {\n throw new OpenPondModelProjectApiError(response.status, parsed.data);\n }\n throw new OpenPondProtocolError(\n \"invalid_error_response\",\n `Model Project request failed with HTTP ${response.status} and an invalid error envelope.`,\n );\n }\n return body;\n }\n\n return {\n async configurationCandidates() {\n return z.object({ candidates: z.array(ModelProjectBaseModelCandidateSchema).max(1000) }).strict().parse(\n await request(\"/v1/model-projects/configuration/candidates\", { headers: { accept: \"application/json\" } }),\n ).candidates;\n },\n async checkConfiguration(value: ModelProjectSaveRequest) {\n const parsed = parseModelProjectSaveRequest(value);\n return ModelProjectConfigurationCheckSchema.parse(await request(\"/v1/model-projects/configuration/check\", {\n method: \"POST\", headers: { accept: \"application/json\", \"content-type\": \"application/json\" }, body: JSON.stringify(parsed),\n }));\n },\n async saveConfiguration(value: ModelProjectSaveRequest) {\n const parsed = parseModelProjectSaveRequest(value);\n return HostedModelProjectSummarySchema.parse(await request(\"/v1/model-projects/configuration/save\", {\n method: \"POST\", headers: { accept: \"application/json\", \"content-type\": \"application/json\" }, body: JSON.stringify(parsed),\n }));\n },\n async upsert(project: HostedModelProjectSync) {\n assertCanonicalPayloadSize(\n project,\n MODEL_PROJECT_SYNC_MAX_BYTES,\n \"Model Project sync\",\n );\n const parsed = HostedModelProjectSyncSchema.parse(project);\n const body = await request(\n `/v1/model-projects/${encodeURIComponent(parsed.portableProjectId)}`,\n { method: \"PUT\", body: JSON.stringify(parsed) },\n );\n return HostedModelProjectSummarySchema.parse(\n unwrapObject(body, \"project\"),\n );\n },\n async list() {\n const body = await request(\"/v1/model-projects\");\n return z\n .array(HostedModelProjectSummarySchema)\n .parse(unwrapObject(body, \"projects\"));\n },\n async get(projectId: string) {\n const body = await request(\n `/v1/model-projects/${encodeURIComponent(IdSchema.parse(projectId))}`,\n );\n return HostedModelProjectDetailSchema.parse(body);\n },\n };\n}\n\nfunction unwrapObject(value: unknown, key: string): unknown {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) return value;\n return key in value ? (value as Record<string, unknown>)[key] : value;\n}\n","export type CanonicalJsonValue =\n | null\n | boolean\n | number\n | string\n | CanonicalJsonValue[]\n | { [key: string]: CanonicalJsonValue };\n\nexport const OPENPOND_TRAINING_PROTOCOL_MAJOR = 2 as const;\nexport const OPENPOND_TRAINING_MEDIA_TYPE =\n \"application/vnd.openpond.training+json;version=2\" as const;\nexport const OPENPOND_MODEL_PROJECT_MEDIA_TYPE =\n \"application/vnd.openpond.model-project+json;version=2\" as const;\n\nexport const TRAINING_JOB_SUBMISSION_MAX_BYTES = 1_048_576;\nexport const TRAINING_INPUT_ARTIFACT_MAX_BYTES = 67_108_864;\nexport const TRAINING_API_RESPONSE_MAX_BYTES = 8_388_608;\nexport const MODEL_PROJECT_SYNC_MAX_BYTES = 524_288;\nexport const MODEL_PROJECT_API_RESPONSE_MAX_BYTES = 8_388_608;\n\nexport class OpenPondProtocolError extends Error {\n readonly code: string;\n\n constructor(code: string, message: string) {\n super(message);\n this.name = \"OpenPondProtocolError\";\n this.code = code;\n }\n}\n\n/**\n * Deterministic JSON used for content-addressed OpenPond protocol objects.\n * Object keys are sorted by Unicode code point, arrays retain their authored\n * order, and non-JSON/non-finite values are rejected rather than coerced.\n */\nexport function canonicalJson(value: unknown): string {\n return JSON.stringify(normalizeCanonicalJson(value));\n}\n\nexport function canonicalJsonByteLength(value: unknown): number {\n return new TextEncoder().encode(canonicalJson(value)).byteLength;\n}\n\nexport async function canonicalSha256(value: unknown): Promise<string> {\n const bytes = new TextEncoder().encode(canonicalJson(value));\n const digest = await globalThis.crypto.subtle.digest(\"SHA-256\", bytes);\n return Array.from(new Uint8Array(digest), (byte) =>\n byte.toString(16).padStart(2, \"0\"),\n ).join(\"\");\n}\n\nexport function assertCanonicalPayloadSize(\n value: unknown,\n maximumBytes: number,\n label: string,\n): void {\n const actualBytes = canonicalJsonByteLength(value);\n if (actualBytes > maximumBytes) {\n throw new OpenPondProtocolError(\n \"payload_too_large\",\n `${label} is ${actualBytes} bytes; the maximum is ${maximumBytes} bytes.`,\n );\n }\n}\n\nexport function parseBoundedJson(\n text: string,\n maximumBytes: number,\n label: string,\n): unknown {\n const actualBytes = new TextEncoder().encode(text).byteLength;\n if (actualBytes > maximumBytes) {\n throw new OpenPondProtocolError(\n \"response_too_large\",\n `${label} is ${actualBytes} bytes; the maximum is ${maximumBytes} bytes.`,\n );\n }\n try {\n return JSON.parse(text) as unknown;\n } catch {\n throw new OpenPondProtocolError(\n \"invalid_json\",\n `${label} was not valid JSON.`,\n );\n }\n}\n\nfunction normalizeCanonicalJson(value: unknown): CanonicalJsonValue {\n if (\n value === null ||\n typeof value === \"string\" ||\n typeof value === \"boolean\"\n ) {\n return value;\n }\n if (typeof value === \"number\") {\n if (!Number.isFinite(value)) {\n throw new OpenPondProtocolError(\n \"non_json_value\",\n \"Canonical JSON cannot contain a non-finite number.\",\n );\n }\n return Object.is(value, -0) ? 0 : value;\n }\n if (Array.isArray(value)) {\n return value.map((entry) => normalizeCanonicalJson(entry));\n }\n if (typeof value === \"object\") {\n const prototype = Object.getPrototypeOf(value);\n if (prototype !== Object.prototype && prototype !== null) {\n throw new OpenPondProtocolError(\n \"non_json_value\",\n \"Canonical JSON accepts only plain objects.\",\n );\n }\n const result: Record<string, CanonicalJsonValue> = {};\n for (const key of Object.keys(value as Record<string, unknown>).sort()) {\n const entry = (value as Record<string, unknown>)[key];\n if (entry === undefined || typeof entry === \"function\" || typeof entry === \"symbol\") {\n throw new OpenPondProtocolError(\n \"non_json_value\",\n `Canonical JSON cannot contain ${typeof entry} at ${key}.`,\n );\n }\n result[key] = normalizeCanonicalJson(entry);\n }\n return result;\n }\n throw new OpenPondProtocolError(\n \"non_json_value\",\n `Canonical JSON cannot contain ${typeof value}.`,\n );\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../cloud/src/api/core.ts"],"sourcesContent":["const DEFAULT_API_TIMEOUT_MS = 30_000;\nconst DEFAULT_API_RESPONSE_BYTES = 8 * 1024 * 1024;\nexport const LONG_STREAM_API_OPTIONS = { timeoutMs: 15 * 60 * 1000, maxResponseBytes: 64 * 1024 * 1024 } as const;\n\nexport type ApiFetchOptions = RequestInit & {\n /** Generic services always use their explicit bearer token, regardless of prefix. */\n explicitBearerAuth?: boolean;\n timeoutMs?: number;\n maxResponseBytes?: number;\n};\n\nexport class ApiTimeoutError extends Error {\n readonly code = \"OPENPOND_API_TIMEOUT\";\n\n constructor(readonly timeoutMs: number, readonly requestUrl: string) {\n super(`API request timed out after ${timeoutMs}ms: ${requestUrl}`);\n this.name = \"ApiTimeoutError\";\n }\n}\n\nexport class ApiResponseTooLargeError extends Error {\n readonly code = \"OPENPOND_API_RESPONSE_TOO_LARGE\";\n\n constructor(readonly maximumBytes: number, readonly requestUrl: string) {\n super(`API response exceeded ${maximumBytes} bytes: ${requestUrl}`);\n this.name = \"ApiResponseTooLargeError\";\n }\n}\n\nexport class OpenPondApiError extends Error {\n readonly code: string;\n\n constructor(\n readonly status: number,\n errorCode: string | null,\n label: string,\n readonly apiMessage: string | null = null,\n ) {\n const detail = apiMessage || errorCode;\n super(`${label} failed: ${status}${detail ? ` ${detail}` : \"\"}`);\n this.name = \"OpenPondApiError\";\n this.code = errorCode || \"OPENPOND_API_ERROR\";\n }\n}\n\nexport async function apiFetch(\n baseUrl: string,\n token: string | null,\n requestPath: string,\n options: ApiFetchOptions = {},\n): Promise<Response> {\n const { timeoutMs = DEFAULT_API_TIMEOUT_MS, maxResponseBytes = DEFAULT_API_RESPONSE_BYTES, explicitBearerAuth = false, ...init } = options;\n const requestUrl = `${baseUrl}${requestPath}`;\n const headers = new Headers(init.headers);\n headers.set(\"Content-Type\", \"application/json\");\n const apiKey = !explicitBearerAuth ? process.env.OPENPOND_API_KEY : undefined;\n const trimmedToken = token?.trim() || \"\";\n const tokenIsApiKey = !explicitBearerAuth && trimmedToken.startsWith(\"opk_\");\n const effectiveApiKey = apiKey || (tokenIsApiKey ? trimmedToken : null);\n if (effectiveApiKey && !headers.has(\"openpond-api-key\")) headers.set(\"openpond-api-key\", effectiveApiKey);\n if (token) {\n headers.set(\"Authorization\", tokenIsApiKey ? `ApiKey ${trimmedToken}` : `Bearer ${token}`);\n } else if (apiKey && !headers.has(\"Authorization\")) {\n headers.set(\"Authorization\", `ApiKey ${apiKey}`);\n }\n\n const timeoutController = new AbortController();\n const timeoutError = new ApiTimeoutError(timeoutMs, requestUrl);\n const timer = timeoutMs > 0\n ? setTimeout(() => timeoutController.abort(timeoutError), timeoutMs)\n : null;\n timer?.unref?.();\n const signal = composedSignal(init.signal, timeoutController.signal, timeoutMs);\n const cleanup = () => {\n if (timer) clearTimeout(timer);\n };\n\n try {\n const response = await fetch(requestUrl, { ...init, headers, signal });\n return boundedResponse(response, {\n cleanup,\n maximumBytes: maxResponseBytes,\n requestUrl,\n timeoutController,\n timeoutError,\n });\n } catch (error) {\n cleanup();\n if (timeoutController.signal.aborted) throw timeoutError;\n throw error;\n }\n}\n\nexport async function readApiJson<T>(response: Response, label: string): Promise<T> {\n let payload: T & { error?: unknown; message?: unknown };\n try {\n const text = await response.text();\n payload = (text ? JSON.parse(text) : {}) as T & { error?: unknown; message?: unknown };\n } catch (error) {\n if (error instanceof ApiTimeoutError || error instanceof ApiResponseTooLargeError) throw error;\n payload = {} as T & { error?: unknown; message?: unknown };\n }\n if (!response.ok) {\n const errorCode = typeof payload.error === \"string\" ? payload.error : null;\n const apiMessage =\n typeof payload.message === \"string\" ? payload.message : null;\n throw new OpenPondApiError(response.status, errorCode, label, apiMessage);\n }\n return payload as T;\n}\n\nfunction boundedResponse(\n response: Response,\n input: {\n cleanup: () => void;\n maximumBytes: number;\n requestUrl: string;\n timeoutController: AbortController;\n timeoutError: ApiTimeoutError;\n },\n): Response {\n if (!response.body) {\n input.cleanup();\n return response;\n }\n const contentLength = Number(response.headers.get(\"content-length\"));\n if (input.maximumBytes > 0 && Number.isFinite(contentLength) && contentLength > input.maximumBytes) {\n input.cleanup();\n void response.body.cancel();\n throw new ApiResponseTooLargeError(input.maximumBytes, input.requestUrl);\n }\n\n const reader = response.body.getReader();\n let receivedBytes = 0;\n const body = new ReadableStream<Uint8Array>({\n async pull(controller) {\n try {\n const result = await reader.read();\n if (result.done) {\n input.cleanup();\n controller.close();\n return;\n }\n receivedBytes += result.value.byteLength;\n if (input.maximumBytes > 0 && receivedBytes > input.maximumBytes) {\n input.cleanup();\n await reader.cancel();\n controller.error(new ApiResponseTooLargeError(input.maximumBytes, input.requestUrl));\n return;\n }\n controller.enqueue(result.value);\n } catch (error) {\n input.cleanup();\n controller.error(input.timeoutController.signal.aborted ? input.timeoutError : error);\n }\n },\n async cancel(reason) {\n input.cleanup();\n await reader.cancel(reason);\n },\n });\n return new Response(body, {\n headers: response.headers,\n status: response.status,\n statusText: response.statusText,\n });\n}\n\nfunction composedSignal(\n callerSignal: AbortSignal | null | undefined,\n timeoutSignal: AbortSignal,\n timeoutMs: number,\n): AbortSignal | undefined {\n if (timeoutMs <= 0) return callerSignal ?? undefined;\n return callerSignal ? AbortSignal.any([callerSignal, timeoutSignal]) : timeoutSignal;\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import {
|
|
2
2
|
validateTasksetPackage
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-MO4HAJZG.js";
|
|
4
4
|
import {
|
|
5
5
|
RunExperimentSchema
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-WMIKJGXW.js";
|
|
7
7
|
import {
|
|
8
8
|
ExperimentScoringRequestSchema,
|
|
9
9
|
verifyExperimentScoringPass
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-53LLNDXF.js";
|
|
11
11
|
import {
|
|
12
12
|
fetchConnectedJson
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-O6FKHAWN.js";
|
|
14
14
|
import {
|
|
15
15
|
ExperimentExecutionContextSchema,
|
|
16
16
|
ExperimentFieldMappingsSchema,
|
|
@@ -18,17 +18,17 @@ import {
|
|
|
18
18
|
ExperimentListQuerySchema,
|
|
19
19
|
PrepareHarnessExperimentSchema,
|
|
20
20
|
PreparedHarnessExperimentSchema
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-QRS7Y3EM.js";
|
|
22
22
|
import {
|
|
23
23
|
ModelTasksetRunDetailsSchema,
|
|
24
24
|
ModelTasksetRunRequestSchema,
|
|
25
25
|
verifyHarnessExperimentManifest,
|
|
26
26
|
verifyModelTasksetRunDetails
|
|
27
|
-
} from "./chunk-
|
|
27
|
+
} from "./chunk-VN5V2E2S.js";
|
|
28
28
|
import {
|
|
29
29
|
ImmutableReleaseRefSchema,
|
|
30
30
|
contentHash
|
|
31
|
-
} from "./chunk-
|
|
31
|
+
} from "./chunk-H3JZ3P5T.js";
|
|
32
32
|
|
|
33
33
|
// src/experiment-client.ts
|
|
34
34
|
import { z as z4 } from "zod";
|
|
@@ -652,4 +652,4 @@ export {
|
|
|
652
652
|
ProfileEvaluationDiscoveryRequestSchema,
|
|
653
653
|
OpenPondProfileEvaluationDiscoveryClient
|
|
654
654
|
};
|
|
655
|
-
//# sourceMappingURL=chunk-
|
|
655
|
+
//# sourceMappingURL=chunk-I54WQBXL.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/experiment-client.ts","../src/experiment-run-details.ts","../src/experiment-harness-catalog.ts","../src/run-diagnostics.ts","../src/experiment-inspection.ts","../src/dataset-grader-selection.ts","../src/experiment-execution-selection.ts","../src/profile-external-dataset-package.ts","../src/profile-evaluation-discovery.ts"],"sourcesContent":["import { z } from \"zod\";\nimport { contentHash } from \"@openpond/harness\";\nimport { compareExperiments, verifyExperimentEvidence } from \"@openpond/evals/experiments\";\nimport { ExperimentListQuerySchema } from \"./experiment-contracts.js\";\nimport { RunExperimentSchema } from \"./experiment-run-contracts.js\";\nimport { experimentConfigurationRequest, verifyExperimentRunDetails } from \"./experiment-run-details.js\";\nimport { PrepareHarnessExperimentSchema, PreparedHarnessExperimentSchema } from \"./experiment-contracts.js\";\nimport { verifyHarnessExperimentManifest } from \"./model-taskset-runs-contracts.js\";\nimport { ExperimentScoringRequestSchema, verifyExperimentScoringPass, type ExperimentScoringRequest } from \"./experiment-scoring-contracts.js\";\nimport { ExperimentHarnessCatalogSchema } from \"./experiment-harness-catalog.js\";\nimport { RunDiagnosticsQuerySchema, verifyRunDiagnostics } from \"./run-diagnostics.js\";\n\nconst Id = z.string().trim().min(1).max(200);\nexport class OpenPondExperimentError extends Error {\n constructor(readonly status: number, readonly code: string, message: string) { super(message); this.name = \"OpenPondExperimentError\"; }\n}\n\n/** One Experiment is one run with its immutable configuration and results. */\nexport class OpenPondExperimentsClient {\n private readonly baseUrl: string;\n constructor(private readonly options: { baseUrl: string; apiKey: string; teamId: string; fetch?: typeof fetch }) {\n const url = new URL(options.baseUrl);\n if (![\"http:\", \"https:\"].includes(url.protocol) || url.username || url.password || url.search || url.hash || !options.apiKey.trim() || !options.teamId.trim())\n throw new Error(\"A clean API origin and workspace credentials are required.\");\n this.baseUrl = url.toString().replace(/\\/+$/, \"\");\n }\n async defaults(signal?: AbortSignal) {\n return z.object({ maximumSpendUsd: z.number().finite().min(0.000001).max(10_000), maximumComparisonSpendUsd: z.number().finite().min(0.000001).max(10_000), initialOutputTokens: z.number().int().positive() }).strict()\n .parse(await this.request(\"/defaults\", \"GET\", undefined, signal));\n }\n async createComparisonBudget(value: { id: string; operationIds: string[]; maximumSpendUsd?: number }, signal?: AbortSignal) {\n const request = z.object({ id: Id, operationIds: z.array(Id).min(1).max(100), maximumSpendUsd: z.number().finite().min(0.000001).max(10_000).optional() }).strict().parse(value);\n const result = this.comparisonBudgetResult(await this.request(\"/comparison-budgets\", \"POST\", request, signal), request.id);\n if (contentHash(result.operations.map(item => item.operationId).sort()) !== contentHash([...request.operationIds].sort())\n || request.maximumSpendUsd !== undefined && result.maximumSpendUsd !== request.maximumSpendUsd)\n throw new Error(\"Comparison admission differs from its requested operations or ceiling.\");\n return result;\n }\n async comparisonBudget(id: string, signal?: AbortSignal) {\n return this.comparisonBudgetResult(await this.request(`/comparison-budgets/${encodeURIComponent(Id.parse(id))}`, \"GET\", undefined, signal), id);\n }\n private comparisonBudgetResult(value: unknown, id: string) {\n const result = z.object({ id: Id, teamId: Id, maximumSpendUsd: z.number().finite().positive(), settledUsd: z.number().finite().nonnegative(), reservedUsd: z.number().finite().nonnegative(), remainingUsd: z.number().finite().nonnegative(), operations: z.array(z.object({ operationId: Id, runId: Id.nullable() }).strict()).min(1).max(100) }).strict().parse(value);\n if (result.id !== id || result.teamId !== this.options.teamId) throw new Error(\"Comparison budget scope mismatch.\");\n return result;\n }\n /** Discover released workspace Harnesses independently of Project targets. */\n async harnessSources(options: {cursor?: string; signal?: AbortSignal} = {}) {\n const cursor = options.cursor === undefined ? undefined : z.string().min(1).max(8192).parse(options.cursor);\n const query = new URLSearchParams(cursor ? {cursor} : {});\n const page = ExperimentHarnessCatalogSchema.parse(await this.request(`/harness-sources?${query}`,\"GET\",undefined,options.signal));\n if (page.teamId !== this.options.teamId\n || new Set(page.items.map(item=>contentHash(item.source))).size !== page.items.length\n || page.nextCursor !== null && page.nextCursor === cursor\n || page.items.some(item=>item.ready !== (item.reason === null)))\n throw new Error(\"Harness catalog differs from its workspace, readiness or continuation.\");\n return page;\n }\n /** Resolves a released target without saving a definition or dispatching it. */\n async prepareHarness(value: Omit<z.input<typeof PrepareHarnessExperimentSchema>, \"maximumCostUsd\"> & { maximumCostUsd?: number }, signal?: AbortSignal) {\n const request = PrepareHarnessExperimentSchema.parse({ ...value, maximumCostUsd: value.maximumCostUsd ?? (await this.defaults(signal)).maximumSpendUsd });\n const result = PreparedHarnessExperimentSchema.parse(await this.request(\"/harness-setup\", \"POST\", request, signal));\n verifyHarnessExperimentManifest(result.request, result.manifest);\n const policy = result.request.policy;\n if (result.request.teamId !== this.options.teamId || result.request.operationId !== request.operationId\n || policy.kind !== \"hosted_harness\" || policy.profileRepositoryId !== request.profileRepositoryId\n || policy.source.definitionId !== request.definitionId || policy.modelId !== request.modelId\n || policy.reasoningEffort !== request.reasoningEffort || result.maximumCostUsd !== request.maximumCostUsd\n || result.manifest.limits.maximumSpendUsd !== request.maximumCostUsd)\n throw new Error(\"Harness preparation differs from its requested scope or configuration.\");\n return result;\n }\n async run(value: Omit<z.input<typeof RunExperimentSchema>, \"maximumCostUsd\"> & { maximumCostUsd?: number }, signal?: AbortSignal) {\n const request = RunExperimentSchema.parse({ ...value, maximumCostUsd: value.maximumCostUsd ?? (await this.defaults(signal)).maximumSpendUsd });\n if (request.request.teamId !== this.options.teamId) throw new Error(\"Experiment workspace mismatch.\");\n // Omission is resolved by the server against a retained operation first,\n // so a global default change cannot change a lost-response retry's cap.\n const result = await this.details(await this.request(\"\", \"POST\", { ...request, maximumCostUsd: value.maximumCostUsd }, signal));\n if (value.maximumCostUsd === undefined) request.maximumCostUsd = result.configuration.maximumCostUsd;\n if (contentHash(experimentConfigurationRequest(result.request)) !== contentHash(experimentConfigurationRequest(request.request))\n || result.configuration.maximumCostUsd !== request.maximumCostUsd\n || result.configuration.sourceExperimentId !== request.sourceExperimentId\n || result.configuration.admissionRequestHash !== contentHash(request))\n throw new Error(\"Experiment admission differs from its submitted configuration.\");\n if (request.graders && contentHash(request.graders) !== contentHash(result.configuration.graders.map(grader => ({\n id:grader.id,version:grader.version,contentHash:grader.contentHash,mappings:grader.mappings ?? [],\n })))) throw new Error(\"Experiment admission differs from its selected graders or mappings.\");\n return result;\n }\n async get(id: string, options: {signal?: AbortSignal} = {}) {\n return this.details(await this.request(`/${encodeURIComponent(Id.parse(id))}`, \"GET\", undefined, options.signal), id);\n }\n async diagnostics(id: string, options: { afterSequence?: number; afterCallId?: string; manifestHash?: string; signal?: AbortSignal } = {}) {\n const query = RunDiagnosticsQuerySchema.parse({ afterSequence: options.afterSequence, afterCallId: options.afterCallId });\n const params = new URLSearchParams(Object.entries(query).filter(([,value])=>value!==undefined).map(([key,value])=>[key,String(value)]));\n return verifyRunDiagnostics(await this.request(`/${encodeURIComponent(Id.parse(id))}/diagnostics?${params}`,\"GET\",undefined,options.signal),{teamId:this.options.teamId,runId:id,manifestHash:options.manifestHash,afterSequence:options.afterSequence,afterCallId:options.afterCallId});\n }\n async list(value: z.input<typeof ExperimentListQuerySchema> = {}, signal?: AbortSignal) {\n const query = ExperimentListQuerySchema.parse(value);\n const params = new URLSearchParams(Object.entries(query).filter(([,value])=>value!==undefined).map(([key,value])=>[key,String(value)]));\n const page = z.object({items:z.array(z.unknown()).max(100),nextCursor:Id.nullable()}).strict().parse(await this.request(`?${params}`,\"GET\",undefined,signal));\n const items = await Promise.all(page.items.map(value=>this.details(value)));\n if (items.length > query.limit || new Set(items.map(item=>item.summary.id)).size !== items.length\n || page.nextCursor !== null && page.nextCursor !== items.at(-1)?.summary.id\n || items.some(item => query.projectId && item.request.project?.id !== query.projectId\n || query.datasetHash && item.request.taskset.contentHash !== query.datasetHash\n || query.status && item.summary.status !== query.status))\n throw new Error(\"Experiment page differs from its selected scope.\");\n return {items,nextCursor:page.nextCursor};\n }\n async result(executionId: string, signal?: AbortSignal) {\n const value = z.object({ executionId: Id, passId: Id.nullable(), manifest: z.unknown(), result: z.unknown() }).strict()\n .parse(await this.request(`/${encodeURIComponent(Id.parse(executionId))}/result`, \"GET\", undefined, signal));\n const evidence = verifyExperimentEvidence(value);\n if (value.executionId !== executionId || evidence.manifest.teamId !== this.options.teamId\n || evidence.manifest.lineage?.execution.id !== executionId\n || evidence.manifest.lineage.scoringPassId !== value.passId) throw new Error(\"Experiment result identity mismatch.\");\n return { ...evidence, executionId, passId: value.passId };\n }\n async cancel(id: string, signal?: AbortSignal) {\n return this.details(await this.request(`/${encodeURIComponent(Id.parse(id))}/cancel`, \"POST\", {}, signal), id);\n }\n /** Duplicate uses the original run snapshot; edits are submitted with run(). */\n async duplicate(id: string, operationId: string, signal?: AbortSignal) {\n const result = await this.details(await this.request(`/${encodeURIComponent(Id.parse(id))}/duplicate`, \"POST\", {operationId:Id.parse(operationId)}, signal));\n if (result.request.operationId !== operationId || result.configuration.sourceExperimentId !== id || result.summary.id === id)\n throw new Error(\"Duplicate Experiment admission differs from its source or operation.\");\n return result;\n }\n async score(value: ExperimentScoringRequest, signal?: AbortSignal) {\n const request = ExperimentScoringRequestSchema.parse(value);\n const pass = this.pass(await this.request(`/${encodeURIComponent(request.execution.id)}/scoring-passes`, \"POST\", request, signal));\n if (contentHash(pass.request) !== contentHash(request)) throw new Error(\"Scoring admission differs from its submitted inputs.\");\n return pass;\n }\n async scoringPass(id: string, signal?: AbortSignal) {\n return this.pass(await this.request(`/scoring-passes/${encodeURIComponent(Id.parse(id))}`, \"GET\", undefined, signal), id);\n }\n async scoringPasses(executionId: string, options: { afterId?: string; executionKind?: \"recorded_evidence\"; signal?: AbortSignal } = {}) {\n const params = new URLSearchParams(options.afterId ? { afterId: Id.parse(options.afterId) } : {});\n if (options.executionKind) params.set(\"executionKind\", z.literal(\"recorded_evidence\").parse(options.executionKind));\n const page = z.object({ items: z.array(z.unknown()).max(30), nextCursor: Id.nullable() }).strict().parse(\n await this.request(`/${encodeURIComponent(Id.parse(executionId))}/scoring-passes?${params}`, \"GET\", undefined, options.signal));\n const items = page.items.map(value => this.pass(value));\n if (items.some(item => item.request.execution.id !== executionId || item.request.executionKind !== options.executionKind) || new Set(items.map(item => item.id)).size !== items.length)\n throw new Error(\"Scoring pass page differs from its execution ownership.\");\n return { items, nextCursor: page.nextCursor };\n }\n async cancelScoringPass(id: string, signal?: AbortSignal) {\n return this.pass(await this.request(`/scoring-passes/${encodeURIComponent(Id.parse(id))}/cancel`, \"POST\", {}, signal), id);\n }\n async scoringResult(id: string, signal?: AbortSignal) {\n const value = z.object({ executionId: Id, passId: Id, manifest: z.unknown(), result: z.unknown() }).strict().parse(\n await this.request(`/scoring-passes/${encodeURIComponent(Id.parse(id))}/result`, \"GET\", undefined, signal));\n const evidence = verifyExperimentEvidence(value);\n if (value.passId !== id || evidence.manifest.teamId !== this.options.teamId || evidence.manifest.id !== id\n || evidence.manifest.lineage?.execution.id !== value.executionId || evidence.manifest.lineage.scoringPassId !== id)\n throw new Error(\"Scoring result identity mismatch.\");\n return { ...evidence, executionId: value.executionId, passId: id };\n }\n async compare(baselineId: string, candidateId: string, signal?: AbortSignal) {\n const read = (id: string) => id.startsWith(\"score_\") ? this.scoringResult(id, signal) : this.result(id, signal);\n const [baseline, candidate] = await Promise.all([read(baselineId), read(candidateId)]);\n return { baseline, candidate, comparison: compareExperiments(baseline, candidate) };\n }\n private async details(value: unknown, id?: string) {\n const result = await verifyExperimentRunDetails(value);\n if (result.summary.teamId !== this.options.teamId || id && result.summary.id !== id)\n throw new Error(\"Experiment identity mismatch.\");\n return result;\n }\n private pass(value: unknown, id?: string) {\n const pass = verifyExperimentScoringPass(value);\n if (pass.teamId !== this.options.teamId || id && pass.id !== id) throw new Error(\"Scoring pass identity mismatch.\");\n return pass;\n }\n private async request(path: string, method: string, body?: unknown, signal?: AbortSignal): Promise<unknown> {\n const response = await (this.options.fetch ?? fetch)(`${this.baseUrl}/v1/experiments${path}`, {\n method, signal, redirect: \"error\", headers: { Authorization: `Bearer ${this.options.apiKey}`, \"X-OpenPond-Team-Id\": this.options.teamId, \"Content-Type\": \"application/json\", Accept: \"application/json\" },\n ...(body === undefined ? {} : { body: JSON.stringify(body) }),\n });\n const value = await response.json();\n if (!response.ok) {\n const parsed = z.object({ code: z.string(), message: z.string() }).safeParse(value);\n throw new OpenPondExperimentError(response.status, parsed.success ? parsed.data.code : \"experiment_request_failed\", parsed.success ? parsed.data.message : \"Experiment request failed.\");\n }\n return value;\n }\n}\n","import { z } from \"zod\";\nimport { contentHash } from \"@openpond/harness\";\nimport { ExperimentExecutionContextSchema, ExperimentGraderPinSchema } from \"./experiment-contracts.js\";\nimport { ModelTasksetRunDetailsSchema, ModelTasksetRunRequestSchema, verifyModelTasksetRunDetails, type ModelTasksetRunRequest } from \"./model-taskset-runs-contracts.js\";\n\nconst Hash = z.string().regex(/^[a-f0-9]{64}$/);\nconst ConfigurationContent = z.object({\n request: ModelTasksetRunRequestSchema,\n maximumCostUsd: z.number().finite().positive().max(10_000),\n graders: z.array(ExperimentGraderPinSchema).min(1).max(100),\n admissionRequestHash: Hash.optional(),\n sourceExperimentId: z.string().trim().min(1).max(200).optional(),\n}).strict();\nexport const ExperimentRunConfigurationSchema = ConfigurationContent.extend({configurationHash:Hash}).strict();\nexport type ExperimentRunConfiguration = z.infer<typeof ExperimentRunConfigurationSchema>;\nexport const ExperimentRunDetailsSchema = ModelTasksetRunDetailsSchema.extend({configuration:ExperimentRunConfigurationSchema}).strict();\nexport type ExperimentRunDetails = z.infer<typeof ExperimentRunDetailsSchema>;\n\n/** Native preparation assigns new receipt IDs while retaining the selected\n * task/seed population. Other runtimes seal their submitted IDs exactly. */\nexport function experimentConfigurationRequest(request: ModelTasksetRunRequest) {\n return request.policy.kind === \"hosted_harness\"\n ? {...request,population:request.population.map(({receiptId:_id,...member})=>member)}\n : request;\n}\nexport function experimentRunConfigurationHash(value: z.input<typeof ConfigurationContent>): string {\n const content = ConfigurationContent.parse(value);\n return contentHash({...content,request:experimentConfigurationRequest(content.request)});\n}\nexport async function verifyExperimentRunDetails(value: unknown): Promise<ExperimentRunDetails> {\n const parsed = ExperimentRunDetailsSchema.parse(value);\n const {configuration,...rawDetails} = parsed;\n const details = await verifyModelTasksetRunDetails(rawDetails);\n const {configurationHash,...content} = configuration;\n if (configurationHash !== experimentRunConfigurationHash(content)\n || contentHash(experimentConfigurationRequest(configuration.request)) !== contentHash(experimentConfigurationRequest(details.request))\n || configuration.maximumCostUsd !== details.manifest.limits.maximumSpendUsd)\n throw new Error(\"Experiment configuration differs from its retained run.\");\n if (details.manifest.metadata.experimentDefinition === null) {\n const context = ExperimentExecutionContextSchema.parse({\n definition:null, configurationHash:configuration.configurationHash,\n maximumCostUsd:configuration.maximumCostUsd,graders:configuration.graders,\n ...(configuration.admissionRequestHash ? {admissionRequestHash:configuration.admissionRequestHash} : {}),\n ...(configuration.sourceExperimentId ? {sourceExperimentId:configuration.sourceExperimentId} : {}),\n });\n if (details.manifest.metadata.experimentConfigurationHash !== contentHash(context))\n throw new Error(\"Experiment configuration differs from its admitted manifest.\");\n }\n return {...details,configuration};\n}\n","import { z } from \"zod\";\nimport { StandaloneHarnessExperimentSourceSchema } from \"@openpond/evals/experiments\";\n\n/** Catalog projections carry immutable pins and readiness, never source bytes. */\nexport const ExperimentHarnessCatalogSchema = z\n .object({\n teamId: z.string().trim().min(1).max(240),\n items: z\n .array(\n z\n .object({\n name: z.string().trim().min(1).max(500),\n source: StandaloneHarnessExperimentSourceSchema,\n ready: z.boolean(),\n reason: z.string().min(1).max(2000).nullable(),\n })\n .strict(),\n )\n .max(8),\n nextCursor: z.string().min(1).max(8192).nullable(),\n })\n .strict();\nexport type ExperimentHarnessCatalog = z.infer<typeof ExperimentHarnessCatalogSchema>;\n","import { z } from \"zod\";\nimport { contentHash } from \"@openpond/harness\";\n\nconst Id = z.string().min(1).max(500);\nconst Hash = z.string().regex(/^[a-f0-9]{64}$/);\nconst Time = z.iso.datetime();\nconst Amount = z.number().finite().nonnegative().nullable();\nconst Count = z.number().int().nonnegative().nullable();\nexport const DiagnosticEventSchema = z\n .object({\n id: Id,\n sequence: z.number().int().nonnegative(),\n at: Time.nullable(),\n type: z.string().max(160),\n action: z.string().max(160).nullable(),\n correlationId: Id.nullable(),\n attempt: Count,\n taskId: Id.nullable(),\n status: z.string().max(100).nullable(),\n errorCode: z.string().max(200).nullable(),\n cleanupComplete: z.boolean().nullable(),\n })\n .strict();\nexport const DiagnosticCallSchema = z\n .object({\n id: Id,\n kind: z.string().max(100),\n status: z.string().max(100),\n receiptId: Id.nullable(),\n maximumUsd: Amount,\n settledUsd: Amount,\n model: z.string().max(200).nullable(),\n durationMs: Count,\n inputTokens: Count,\n outputTokens: Count,\n totalTokens: Count,\n })\n .strict();\nconst Content = z\n .object({\n schemaVersion: z.literal(\"openpond.runDiagnostics.v1\"),\n teamId: Id,\n runId: Id,\n location: z.enum([\"local\", \"hosted\"]),\n manifestHash: Hash,\n observedAt: Time,\n status: z.string().max(100),\n startedAt: Time.nullable(),\n completedAt: Time.nullable(),\n error: z.string().max(8192).nullable(),\n resultAvailable: z.boolean(),\n parent: z\n .object({\n id: Id,\n status: z.string().max(100),\n attempt: Count,\n heartbeatAt: Time.nullable(),\n leaseExpiresAt: Time.nullable(),\n releasedAt: Time.nullable(),\n errorCode: z.string().max(200).nullable(),\n })\n .strict()\n .nullable(),\n accounting: z\n .object({\n maximumUsd: Amount,\n settledUsd: Amount,\n outstandingUsd: Amount,\n outstandingCount: Count,\n final: z.boolean(),\n receiptCount: Count,\n })\n .strict(),\n events: z.array(DiagnosticEventSchema).max(100),\n nextEventCursor: z.number().int().nonnegative().nullable(),\n eventCount: z.number().int().nonnegative(),\n calls: z.array(DiagnosticCallSchema).max(100),\n nextCallCursor: Id.nullable(),\n callCount: z.number().int().nonnegative(),\n limitations: z.array(z.string().max(1000)).max(30),\n })\n .strict();\nexport const RunDiagnosticsSchema = Content.extend({ contentHash: Hash }).strict();\nexport type RunDiagnostics = z.infer<typeof RunDiagnosticsSchema>;\nexport type DiagnosticEvent = z.infer<typeof DiagnosticEventSchema>;\nexport type DiagnosticCall = z.infer<typeof DiagnosticCallSchema>;\nexport const RunDiagnosticsQuerySchema = z\n .object({\n afterSequence: z.number().int().nonnegative().optional(),\n afterCallId: Id.optional(),\n })\n .strict();\nexport function sealRunDiagnostics(value: z.input<typeof Content>): RunDiagnostics {\n const content = Content.parse(value);\n return { ...content, contentHash: contentHash(content) };\n}\nexport function verifyRunDiagnostics(\n raw: unknown,\n scope: {\n teamId: string;\n runId: string;\n manifestHash?: string;\n afterSequence?: number;\n afterCallId?: string;\n },\n) {\n const value = RunDiagnosticsSchema.parse(raw);\n const { contentHash: hash, ...content } = value;\n if (\n hash !== contentHash(content) ||\n value.teamId !== scope.teamId ||\n value.runId !== scope.runId ||\n (scope.manifestHash && value.manifestHash !== scope.manifestHash)\n )\n throw new Error(\"Diagnostics differ from the selected workspace, run or retained evidence.\");\n if (\n value.events.length > value.eventCount ||\n value.calls.length > value.callCount ||\n new Set(value.events.map((event) => event.id)).size !== value.events.length ||\n value.events.some(\n (event, index) =>\n event.sequence <= (index ? value.events[index - 1]!.sequence : (scope.afterSequence ?? -1)),\n ) ||\n value.calls.some(\n (call, index) => call.id <= (index ? value.calls[index - 1]!.id : (scope.afterCallId ?? \"\")),\n ) ||\n (value.nextEventCursor !== null && value.nextEventCursor !== value.events.at(-1)?.sequence) ||\n (value.nextCallCursor !== null && value.nextCallCursor !== value.calls.at(-1)?.id) ||\n (value.accounting.final &&\n (value.accounting.outstandingCount !== 0 ||\n value.accounting.settledUsd === null ||\n !value.accounting.receiptCount))\n )\n throw new Error(\"Diagnostic evidence pagination or final accounting is inconsistent.\");\n return value;\n}\n/** Deliberately excludes prompt, output, arguments, messages and arbitrary metadata. */\nexport function diagnosticEvent(input: {\n id: string;\n sequence: number;\n at: string | null;\n type: string;\n payload: unknown;\n}): DiagnosticEvent {\n const record = (raw: unknown): Record<string, unknown> =>\n raw !== null && typeof raw === \"object\" && !Array.isArray(raw)\n ? (raw as Record<string, unknown>)\n : {};\n const payload = record(input.payload),\n data = record(payload.data);\n const token = (raw: unknown, maximum: number) =>\n typeof raw === \"string\" && /^[a-zA-Z0-9_.:/-]+$/.test(raw) ? raw.slice(0, maximum) : null;\n return DiagnosticEventSchema.parse({\n id: input.id,\n sequence: input.sequence,\n at: input.at,\n type: input.type.slice(0, 160),\n action: token(payload.action, 160),\n correlationId: token(data.callId ?? data.toolCallId, 500),\n attempt:\n typeof payload.attempt === \"number\" &&\n Number.isInteger(payload.attempt) &&\n payload.attempt >= 0\n ? payload.attempt\n : null,\n taskId: token(payload.taskId ?? data.taskId, 500),\n status: token(payload.status, 100),\n errorCode: token(payload.errorCode ?? payload.code, 200),\n cleanupComplete:\n typeof payload.complete === \"boolean\" && input.type === \"experiment.harness.cleanup\"\n ? payload.complete\n : null,\n });\n}\nexport type DiagnosticSpan = {\n id: string;\n label: string;\n taskId: string | null;\n startedAt: string | null;\n completedAt: string | null;\n durationMs: number | null;\n status: string;\n evidenceIds: string[];\n};\n/** Partial pages remain partial; unmatched endings are never invented starts. */\nexport function diagnosticSpans(events: DiagnosticEvent[]): DiagnosticSpan[] {\n const spans: DiagnosticSpan[] = [],\n active = new Map<string, DiagnosticSpan>();\n for (const event of [...events].sort((a, b) => a.sequence - b.sequence)) {\n if (event.type.startsWith(\"training.\")) {\n spans.push({\n id: event.id,\n label: event.action ?? event.type,\n taskId: event.taskId,\n startedAt: event.at,\n completedAt: null,\n durationMs: null,\n status: \"observed\",\n evidenceIds: [event.id],\n });\n continue;\n }\n if (![\"tool.started\", \"tool.completed\", \"tool.failed\"].includes(event.type)) continue;\n const key = JSON.stringify([event.correlationId ?? event.action, event.taskId, event.attempt]);\n if (event.type === \"tool.started\") {\n const span: DiagnosticSpan = {\n id: event.id,\n label: event.action ?? \"Operation\",\n taskId: event.taskId,\n startedAt: event.at,\n completedAt: null,\n durationMs: null,\n status: \"running\",\n evidenceIds: [event.id],\n };\n active.set(key, span);\n spans.push(span);\n } else {\n const span = active.get(key);\n if (span) {\n span.completedAt = event.at;\n span.status = event.type === \"tool.failed\" ? \"failed\" : \"completed\";\n span.durationMs =\n span.startedAt && event.at\n ? Math.max(0, Date.parse(event.at) - Date.parse(span.startedAt))\n : null;\n span.evidenceIds.push(event.id);\n active.delete(key);\n } else\n spans.push({\n id: event.id,\n label: event.action ?? \"Operation\",\n taskId: event.taskId,\n startedAt: null,\n completedAt: event.at,\n durationMs: null,\n status: event.type === \"tool.failed\" ? \"failed\" : \"completed\",\n evidenceIds: [event.id],\n });\n }\n }\n return spans;\n}\n\nexport function diagnosticAnalysisPrompt(\n value: RunDiagnostics,\n events = value.events,\n calls = value.calls,\n) {\n const { contentHash: pageHash, ...metadata } = value;\n return `Investigate this OpenPond run using the retained metadata below. Start read-only. Separate observed facts, hypotheses, missing evidence and recommended investigations. Cite event/call IDs. Do not infer zero costs or successful grading from missing evidence; gateway duration is not pure inference. Do not replay, regrade, edit source, change configuration, restart or deploy without a separate user instruction. Never request credentials or private grader content. This snapshot may be partial.\\n\\n${JSON.stringify({ ...metadata, sourcePageHash: pageHash, error: diagnosticFailure(value.error), events: events.slice(0, 100), calls: calls.slice(0, 100), analysisCoverage: { eventCount: events.length, callCount: calls.length, maximumIncluded: 100 } }, null, 2)}`;\n}\n\n/** Export only a stable technical reason; arbitrary exception text is not model context. */\nexport function diagnosticFailure(value: string | null | undefined) {\n if (!value) return null;\n const codes = value.match(/\\b[a-z][a-z0-9]+(?:_[a-z0-9]+){1,12}\\b/g);\n return (\n codes?.slice(0, 6).join(\" / \") ||\n \"Failure recorded. Inspect the authorized run for its exact message.\"\n );\n}\n","import { z } from \"zod\";\nimport { contentHash } from \"@openpond/harness\";\nconst Id = z.string().trim().min(1).max(500);\nconst Hash = z.string().regex(/^[a-f0-9]{64}$/);\nconst Content = z.object({ schemaVersion: z.literal(\"openpond.experimentCaseInspection.v1\"), teamId: Id, executionId: Id, manifestHash: Hash, receiptId: Id, taskId: Id, seed: z.string().min(1), input: z.record(z.string(), z.unknown()).nullable(), output: z.unknown().nullable(), error: z.string().nullable(), events: z.array(z.record(z.string(), z.unknown())).max(25), nextEventCursor: Id.nullable(), eventCount: z.number().int().nonnegative() }).strict();\nexport const ExperimentCaseInspectionSchema = Content.extend({ contentHash: Hash }).strict();\nexport type ExperimentCaseInspection = z.infer<typeof ExperimentCaseInspectionSchema>;\nexport class OpenPondExperimentInspectionClient {\n private readonly baseUrl: string;\n constructor(private readonly options: { baseUrl: string; apiKey: string; teamId: string; fetch?: typeof fetch }) {\n const url = new URL(options.baseUrl);\n if (![\"http:\", \"https:\"].includes(url.protocol) || url.username || url.password || url.search || url.hash || !options.apiKey.trim() || !options.teamId.trim()) throw new Error(\"A clean API origin and workspace credentials are required.\");\n this.baseUrl = url.toString().replace(/\\/+$/, \"\");\n }\n /** Retained, policy-facing evidence only. Reading a page never dispatches. */\n async case(executionId: string, receiptId: string, options: { manifestHash?: string; afterId?: string; signal?: AbortSignal } = {}) {\n const params = new URLSearchParams(options.afterId ? { afterId: Id.parse(options.afterId) } : {});\n const response = await (this.options.fetch ?? fetch)(`${this.baseUrl}/v1/experiments/${encodeURIComponent(Id.parse(executionId))}/cases/${encodeURIComponent(Id.parse(receiptId))}?${params}`, { signal: options.signal, redirect: \"error\", headers: { Authorization: `Bearer ${this.options.apiKey}`, \"X-OpenPond-Team-Id\": this.options.teamId, Accept: \"application/json\" } });\n const value: unknown = await response.json();\n if (!response.ok) throw new Error(z.object({ message: z.string() }).parse(value).message);\n const result = ExperimentCaseInspectionSchema.parse(value);\n const { contentHash: actual, ...content } = result;\n if (contentHash(content) !== actual || result.teamId !== this.options.teamId || result.executionId !== executionId || result.receiptId !== receiptId || options.manifestHash && result.manifestHash !== options.manifestHash || result.events.length > result.eventCount) throw new Error(\"Case inspection differs from its requested workspace, execution or retained content.\");\n return result;\n }\n}\n","/** Package aliases remain provenance; a released Reward is one scoring choice. */\nexport type DatasetGraderPin = {\n id: string;\n version: string;\n contentHash: string;\n feedbackKey: string;\n release?: { id: string; revision: number; contentHash: string } | null;\n};\n\nexport function datasetGraderIdentity(pin: DatasetGraderPin): string {\n return JSON.stringify(pin.release\n ? [\"reward\", pin.release.id, pin.release.revision, pin.release.contentHash, pin.feedbackKey]\n : [\"dataset\", pin.id, pin.version, pin.contentHash, pin.feedbackKey]);\n}\n\nexport function groupDatasetGraders<T extends DatasetGraderPin>(pins: readonly T[]): Array<{ key: string; grader: T; aliases: T[] }> {\n const groups = new Map<string, { key: string; grader: T; aliases: T[] }>();\n for (const pin of pins) {\n const key = datasetGraderIdentity(pin);\n const group = groups.get(key);\n if (group) group.aliases.push(pin);\n else groups.set(key, { key, grader: pin, aliases: [pin] });\n }\n return [...groups.values()];\n}\n\n/** Validate selected choices, rather than silently choosing between different\n * graders that would write the same feedback field. Never modifies package pins. */\nexport function canonicalDatasetGraderSelection<T extends DatasetGraderPin & { mappings?: unknown }>(pins: readonly T[]): T[] {\n const selected = groupDatasetGraders(pins);\n const feedback = new Map<string, string>();\n for (const group of selected) {\n const previous = feedback.get(group.grader.feedbackKey);\n if (previous && previous !== group.key)\n throw new Error(`Different selected grader releases use feedback key \"${group.grader.feedbackKey}\". Select one, or publish graders with distinct feedback keys.`);\n feedback.set(group.grader.feedbackKey, group.key);\n const mappings = JSON.stringify(group.grader.mappings ?? []);\n if (group.aliases.some(alias => JSON.stringify(alias.mappings ?? []) !== mappings))\n throw new Error(`Aliases of grader \"${group.grader.feedbackKey}\" have different field mappings. Select one alias and review its mappings.`);\n }\n return selected.map(group => group.grader);\n}\n","import type { ModelTasksetRunRequest } from \"./model-taskset-runs-contracts.js\";\n\n/** Resolve presentation from the configuration that actually executes. These\n * modes never inherit a selected chat session or a mutable desktop preference. */\nexport function experimentExecutionSelection(policy: ModelTasksetRunRequest[\"policy\"]) {\n if (policy.kind === \"fixture\") return { mode: \"fixture\" as const };\n if (policy.kind === \"hosted_harness\") return {\n mode: \"model_harness_profile\" as const,\n modelId: policy.modelId,\n harnessRelease: policy.source.harnessRelease,\n profile: { repositoryId: policy.profileRepositoryId, id: policy.source.profileId,\n revision: policy.source.sourceRevision, target: policy.source.target },\n };\n return policy.harness ? {\n mode: \"model_harness\" as const, modelId: policy.modelId, harness: policy.harness,\n } : { mode: \"model\" as const, modelId: policy.modelId };\n}\n","import {z} from \"zod\";\nimport {verifyExperimentEvidence} from \"@openpond/evals/experiments\";\nimport {verifyExperimentScoringPass} from \"./experiment-scoring-contracts.js\";\nimport {contentHash} from \"@openpond/harness\";\nimport {verifyProfileExternalDatasetBinding,type ProfileExternalDatasetBinding} from \"@openpond/evals\";\nimport {ExperimentFieldMappingsSchema} from \"./experiment-field-mappings.js\";\nimport {validateTasksetPackage,type TasksetPackage} from \"./taskset-packages.js\";\n\nexport type ExternalDatasetGraderPin={id:string;version:string;contentHash:string;feedbackKey:string;release:{id:string;revision:number|string;contentHash:string}|null};\n/** Recompute admission from actual authorized releases. None of the binding's\n * self-declared hashes grants Dataset or Profile access. */\nexport function verifyExternalDatasetPackage(input:{binding:ProfileExternalDatasetBinding;packageValue:TasksetPackage;graders:ExternalDatasetGraderPin[];actualGrading?:{pass:unknown;evidence:unknown}}) {\n const binding=verifyProfileExternalDatasetBinding(input.binding),value=validateTasksetPackage(input.packageValue),taskset=value.taskset;\n if(taskset.id!==binding.dataset.id||taskset.revision!==binding.dataset.revision||taskset.contentHash!==binding.dataset.contentHash||value.contentHash!==binding.packageHash\n ||contentHash(taskset.environment)!==binding.environmentHash||contentHash(value.files.filter(file=>file.asset.visibility!==\"policy\").map(file=>file.asset))!==binding.privateDatasetClosureHash)\n throw new Error(\"The selected Dataset package, environment or protected closure changed.\");\n if(binding.population.length>500)throw new Error(\"Select at most 500 exact Dataset cases before starting this bounded Profile evaluation.\");\n for(const member of binding.population){const task=taskset.tasks.find(task=>task.id===member.taskId);if(!task||task.split!==binding.split)throw new Error(\"The selected ordered population is outside its exact Dataset split.\");\n if(member.fixtureId!==null)throw new Error(\"This recorded cutoff needs an admitted replay fixture before executing the Profile target.\");}\n if(binding.gradingSource){if(!input.actualGrading)throw new Error(\"The actual selected scoring owner is required for this recipe.\");const pass=verifyExperimentScoringPass(input.actualGrading.pass),evidence=verifyExperimentEvidence(z.object({manifest:z.unknown(),result:z.unknown()}).strict().parse(input.actualGrading.evidence));if(pass.status!==\"completed\"||pass.id!==binding.gradingSource.pass.id||pass.contentHash!==binding.gradingSource.pass.contentHash||evidence.manifest.id!==binding.gradingSource.evidence.id||evidence.result.contentHash!==binding.gradingSource.evidence.contentHash||evidence.manifest.lineage?.scoringPassId!==pass.id||contentHash(evidence.manifest.dataset)!==contentHash(binding.dataset)||contentHash(evidence.manifest.evaluators)!==contentHash(binding.evaluators)||contentHash(binding.fieldMappings)!==contentHash(pass.graders.map(pin=>({graderId:pin.id,fields:pin.mappings??[]}))))throw new Error(\"The selected scoring owner changed its exact Dataset, measurements or mappings.\");const actual=evidence.manifest.population,expected=binding.recordedOrigin?binding.recordedOrigin.members.map(member=>({caseId:member.caseId,seed:member.seed,fixtureId:member.fixtureId})):binding.population.map(member=>({caseId:member.taskId,seed:member.seed,fixtureId:member.fixtureId}));if(actual.length!==expected.length||actual.some((member,index)=>contentHash(member)!==contentHash(expected[index])))throw new Error(\"The selected scoring population differs from the exact ordered original cases and cutoffs.\");}\n else {\n if(binding.fieldMappings.some(row=>!taskset.graders.some(grader=>grader.id===row.graderId)))throw new Error(\"The field mappings name a grader outside the selected release.\");\n for(const row of binding.fieldMappings)ExperimentFieldMappingsSchema.parse(row.fields);\n const selected=binding.evaluators.map(evaluator=>{const pin=input.graders.find(pin=>pin.feedbackKey===evaluator.feedbackKey&&contentHash(pin.release??{id:pin.id,revision:pin.version,contentHash:pin.contentHash})===contentHash(evaluator.release));if(!pin)throw new Error(\"Select an exact released Dataset grader for this external recipe.\");return pin;});\n if(binding.fieldMappings.some(row=>!selected.some(pin=>pin.id===row.graderId)))throw new Error(\"Field mappings refer to an unselected grader.\");\n const evaluators=selected.map(pin=>({release:pin.release??{id:pin.id,revision:pin.version,contentHash:pin.contentHash},feedbackKey:pin.feedbackKey,\n configurationHash:contentHash({graderHash:pin.contentHash,mappings:binding.fieldMappings.find(row=>row.graderId===pin.id)?.fields??[]}),output:\"score\" as const,categories:[]}));\n if(contentHash(evaluators)!==contentHash(binding.evaluators))throw new Error(\"The external recipe's graders or mappings differ from the current exact released grading settings.\");\n for(const pin of input.graders)if(!taskset.graders.some(grader=>grader.id===pin.id&&grader.version===pin.version&&contentHash(grader)===pin.contentHash))throw new Error(\"External grader pins differ from the actual Dataset implementation.\");\n }\n for(const pin of input.graders)if(!taskset.graders.some(grader=>grader.id===pin.id&&grader.version===pin.version&&contentHash(grader)===pin.contentHash))throw new Error(\"Dataset-native grader pins differ from their actual implementation.\");\n return value;\n}\n","import { z } from \"zod\";\nimport { ImmutableReleaseRefSchema } from \"@openpond/harness\";\nimport { ProfileEvaluationDefinitionSchema, ProfileEvaluationSuiteSchema,\n ProfileEvaluationComparisonSchema, ProfileEvaluationSuiteRunSchema, ProfileEvaluationReportSchema,\n TasksetRunManifestSchema, TasksetMetricResultSchema } from \"@openpond/evals\";\nimport { fetchConnectedJson } from \"./connected-evidence-http.js\";\n\nconst Id = z.string().trim().min(1).max(240);\nexport const ProfileEvaluationDiscoverySchema = z.object({\n profileRef:z.object({source:z.enum([\"local\",\"github\",\"openpond_git\"]),repositoryId:Id,profileId:Id}).strict(),\n sourceRevision:z.string().min(1).max(500),harnessRelease:ImmutableReleaseRefSchema,\n catalogHash:z.string().regex(/^[a-f0-9]{64}$/).nullable(),\n definitions:z.array(ProfileEvaluationDefinitionSchema).max(1000),suites:z.array(ProfileEvaluationSuiteSchema).max(100),\n runs:z.array(z.object({profileRef:z.object({source:z.enum([\"local\",\"github\",\"openpond_git\"]),repositoryId:Id,profileId:Id}).strict(),\n manifest:TasksetRunManifestSchema,metric:TasksetMetricResultSchema,gradeRefs:z.array(ImmutableReleaseRefSchema),\n receiptRefs:z.array(ImmutableReleaseRefSchema),passRate:z.number().min(0).max(1),passed:z.boolean(),\n completedAt:z.iso.datetime(),contentHash:z.string().regex(/^[a-f0-9]{64}$/)}).strict()).max(1000),\n comparisons:z.array(ProfileEvaluationComparisonSchema).max(1000),suiteRuns:z.array(ProfileEvaluationSuiteRunSchema).max(1000),\n reports:z.array(ProfileEvaluationReportSchema).max(1000),\n}).strict();\nexport type ProfileEvaluationDiscovery = z.infer<typeof ProfileEvaluationDiscoverySchema>;\nexport const ProfileEvaluationDiscoveryRequestSchema=z.object({teamId:Id,profileRepositoryId:Id,\n trainingProjectId:Id.optional()}).strict();\n\n/** Reads the existing source owner's receipts. No resource is copied and no\n * incomplete execution is turned into a synthetic rerunnable configuration. */\nexport class OpenPondProfileEvaluationDiscoveryClient {\n constructor(private readonly options:{baseUrl:string;apiKey:string;teamId:string;fetch?:typeof fetch}){\n const url=new URL(options.baseUrl);\n if(![\"http:\",\"https:\"].includes(url.protocol)||url.username||url.password||url.search||url.hash||!options.apiKey.trim()||!options.teamId.trim())\n throw new Error(\"Profile discovery requires a scoped HTTP endpoint and owner credential.\");\n }\n async read(input:{profileRepositoryId:string;trainingProjectId?:string},signal?:AbortSignal){\n const body=ProfileEvaluationDiscoveryRequestSchema.parse({...input,teamId:this.options.teamId});\n const {response,value}=await fetchConnectedJson(this.options.fetch??fetch,\n `${this.options.baseUrl.replace(/\\/$/,\"\")}/v1/profile-evaluation-discovery`,\n {method:\"POST\",redirect:\"error\",headers:{Authorization:`Bearer ${this.options.apiKey}`,\"X-OpenPond-Team-Id\":this.options.teamId,\"Content-Type\":\"application/json\"},body:JSON.stringify(body),signal},\n (_status,_code,message)=>new Error(message));\n if(!response.ok)throw new Error(\"The released Profile evaluation owner is unavailable to this account and workspace.\");\n const discovery=ProfileEvaluationDiscoverySchema.parse(value);\n if(discovery.profileRef.repositoryId!==body.profileRepositoryId)throw new Error(\"Profile discovery returned another source owner.\");\n return discovery;\n }\n}\n"],"mappings":"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","names":["z","z","z","z","Hash","Id","z","value","z","Id","z","Hash","Content","z","verifyExperimentEvidence","task","verifyExperimentEvidence","z","pin","z","Id","z"]}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import {
|
|
2
2
|
EvaluationCoordinationTransport
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-3B5KSH3V.js";
|
|
4
4
|
import {
|
|
5
5
|
RunExperimentSchema
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-WMIKJGXW.js";
|
|
7
7
|
import {
|
|
8
8
|
ImmutableReleaseRefSchema,
|
|
9
9
|
assertContentHash,
|
|
10
10
|
contentHash
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-H3JZ3P5T.js";
|
|
12
12
|
|
|
13
13
|
// src/experiment-evaluation-schedules.ts
|
|
14
14
|
import { z } from "zod";
|
|
@@ -171,4 +171,4 @@ export {
|
|
|
171
171
|
ExperimentEvaluationScheduleCommandSchema,
|
|
172
172
|
OpenPondExperimentEvaluationScheduleClient
|
|
173
173
|
};
|
|
174
|
-
//# sourceMappingURL=chunk-
|
|
174
|
+
//# sourceMappingURL=chunk-K5LWSWV7.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/experiment-evaluation-schedules.ts"],"sourcesContent":["import {EvaluationCoordinationTransport,type EvaluationCoordinationAccess} from \"./evaluation-coordination-http.js\";\nimport { z } from \"zod\";\nimport {\n contentHash,\n assertContentHash,\n ImmutableReleaseRefSchema,\n} from \"@openpond/harness\";\nimport { NightlyScheduleSchema } from \"@openpond/evals/learning\";\nimport { RunExperimentSchema } from \"./experiments.js\";\nconst Id = z.string().trim().min(1).max(200),\n Hash = z.string().regex(/^[a-f0-9]{64}$/),\n Time = z.string().datetime();\nexport const ExperimentEvaluationScheduleInputSchema = z\n .object({\n operationId: Id,\n id: Id.optional(),\n expectedRevision: z.number().int().nonnegative(),\n teamId: Id,\n projectId: Id.nullable(),\n enabled: z.boolean(),\n configuration: RunExperimentSchema,\n cadence: z.discriminatedUnion(\"kind\", [\n z\n .object({\n kind: z.literal(\"interval\"),\n seconds: z.number().int().min(60).max(31536000),\n })\n .strict(),\n z\n .object({ kind: z.literal(\"nightly\"), calendar: NightlyScheduleSchema })\n .strict(),\n ]),\n maximumTotalSpendUsd: z.number().finite().positive().max(10000),\n maximumAttempts: z.number().int().min(1).max(20),\n })\n .strict()\n .superRefine((v, c) => {\n if (\n v.configuration.request.teamId !== v.teamId ||\n (v.configuration.request.project?.id ?? null) !== v.projectId\n )\n c.addIssue({\n code: \"custom\",\n message:\n \"The scheduled Experiment must retain its actual workspace and Project.\",\n });\n if (v.configuration.maximumCostUsd > v.maximumTotalSpendUsd)\n c.addIssue({\n code: \"custom\",\n message:\n \"The run ceiling exceeds the approved cumulative schedule ceiling.\",\n });\n });\nexport const ExperimentEvaluationFireSchema = z\n .object({\n id: Id,\n scheduledAt: Time,\n coalescedThroughAt: Time,\n coalescedCount: z.number().int().nonnegative(),\n configurationHash: Hash,\n operationId: Id,\n state: z.enum([\n \"reserved\",\n \"dispatching\",\n \"running\",\n \"cleaning\",\n \"completed\",\n \"failed\",\n \"cancelled\",\n \"uncertain\",\n ]),\n executionId: Id.nullable(),\n attempt: z.number().int().positive(),\n maximumCostUsd: z.number().finite().positive(),\n actualSpendUsd: z.number().finite().nonnegative().nullable(),\n cleanupComplete: z.boolean(),\n error: z.string().max(4000).nullable(),\n })\n .strict();\nexport const ExperimentEvaluationScheduleSchema = z\n .object({\n schemaVersion: z.literal(\"openpond.experimentEvaluationSchedule.v1\"),\n id: Id,\n revision: z.number().int().positive(),\n actorId: Id,\n teamId: Id,\n projectId: Id.nullable(),\n operationId: Id,\n requestHash: Hash,\n configuration: RunExperimentSchema,\n configurationHash: Hash,\n cadence: ExperimentEvaluationScheduleInputSchema.shape.cadence,\n state: z.enum([\"scheduled\", \"disabled\", \"blocked\"]),\n nextRunAt: Time.nullable(),\n maximumTotalSpendUsd: z.number().finite().positive(),\n maximumAttempts: z.number().int().positive(),\n lastEvaluatedConfigurationHash: Hash.nullable(),\n newerUnevaluatedRelease: ImmutableReleaseRefSchema.nullable(),\n fires: z.array(ExperimentEvaluationFireSchema).max(10000),\n reason: z.string().max(4000).nullable(),\n createdAt: Time,\n updatedAt: Time,\n contentHash: Hash,\n })\n .strict();\nexport type ExperimentEvaluationSchedule = z.infer<\n typeof ExperimentEvaluationScheduleSchema\n>;\nexport type ExperimentEvaluationScheduleInput = z.infer<\n typeof ExperimentEvaluationScheduleInputSchema\n>;\nexport type ExperimentEvaluationFire = z.infer<\n typeof ExperimentEvaluationFireSchema\n>;\nexport function scheduledExperimentHash(\n value: z.infer<typeof RunExperimentSchema>,\n) {\n const { operationId: _operation, request, ...rest } = value;\n const { operationId: _requestOperation, ...body } = request;\n void _operation;\n void _requestOperation;\n return contentHash({ ...rest, request: body });\n}\nexport function verifyExperimentEvaluationSchedule(raw: unknown) {\n const v = ExperimentEvaluationScheduleSchema.parse(raw);\n assertContentHash(v, \"Scheduled Experiment\");\n if (\n v.configurationHash !== scheduledExperimentHash(v.configuration) ||\n v.configuration.request.teamId !== v.teamId ||\n (v.configuration.request.project?.id ?? null) !== v.projectId\n )\n throw new Error(\n \"Scheduled Experiment immutable authority differs from its recipe.\",\n );\n return v;\n}\nexport function sealExperimentEvaluationSchedule(\n value: Omit<ExperimentEvaluationSchedule, \"contentHash\">,\n) {\n return verifyExperimentEvaluationSchedule({\n ...value,\n contentHash: contentHash(value),\n });\n}\nexport const ExperimentEvaluationScheduleControlSchema = z\n .object({\n teamId: Id,\n id: Id,\n operationId: Id,\n expectedRevision: z.number().int().positive(),\n action: z.enum([\"cancel_active\", \"retry_active\", \"pause\"]),\n })\n .strict();\n\nexport const ExperimentEvaluationScheduleCommandSchema = z.discriminatedUnion(\n \"operation\",\n [\n z\n .object({\n operation: z.literal(\"publish\"),\n request: ExperimentEvaluationScheduleInputSchema,\n })\n .strict(),\n z\n .object({\n operation: z.literal(\"control\"),\n request: ExperimentEvaluationScheduleControlSchema,\n })\n .strict(),\n z.object({ operation: z.literal(\"read\"), id: Id }).strict(),\n z\n .object({\n operation: z.literal(\"list\"),\n cursor: Id.optional(),\n limit: z.number().int().min(1).max(100).default(50),\n })\n .strict(),\n ],\n);\n\nexport class OpenPondExperimentEvaluationScheduleClient {\n private readonly transport:EvaluationCoordinationTransport;\n constructor(access:EvaluationCoordinationAccess){this.transport=new EvaluationCoordinationTransport(access);}\n async command(raw:z.input<typeof ExperimentEvaluationScheduleCommandSchema>,signal?:AbortSignal){\n const request=ExperimentEvaluationScheduleCommandSchema.parse(raw),access=this.transport.access;\n if((request.operation===\"publish\"&&(request.request.teamId!==access.teamId||request.request.projectId!==access.projectId))||(request.operation===\"control\"&&request.request.teamId!==access.teamId))throw new Error(\"The schedule command belongs to another workspace or Project.\");\n const value=await this.transport.post(\"experiment-evaluation-schedules\",request,signal);\n const page=request.operation===\"list\"?z.object({items:z.array(z.unknown()).max(request.limit),nextCursor:z.string().nullable()}).strict().parse(value):null;\n const items=(page?.items??[value]).map(raw=>{const schedule=verifyExperimentEvaluationSchedule(raw);if(schedule.actorId!==access.actorId||schedule.teamId!==access.teamId||schedule.projectId!==access.projectId||request.operation===\"read\"&&schedule.id!==request.id||request.operation===\"control\"&&schedule.id!==request.request.id||request.operation===\"publish\"&&(schedule.requestHash!==contentHash(request.request)||Boolean(request.request.id&&schedule.id!==request.request.id)))throw new Error(\"Schedule readback differs from its exact owner command.\");return schedule;});\n return page?{items,nextCursor:page.nextCursor}:items[0]!;\n }\n}\n"],"mappings":"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","names":["raw"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
apiFetch,
|
|
3
3
|
readApiJson
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-HJ2AIAKX.js";
|
|
5
5
|
|
|
6
6
|
// src/project-actions.ts
|
|
7
7
|
import { promises as fs } from "node:fs";
|
|
@@ -80,4 +80,4 @@ function projectActionPath(projectId, suffix, teamId) {
|
|
|
80
80
|
export {
|
|
81
81
|
OpenPondProjectActionsClient
|
|
82
82
|
};
|
|
83
|
-
//# sourceMappingURL=chunk-
|
|
83
|
+
//# sourceMappingURL=chunk-L6EJX2VQ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/project-actions.ts"],"sourcesContent":["import { promises as fs } from \"node:fs\";\n\nimport { apiFetch, readApiJson } from \"@openpond/cloud/api/core\";\n\nimport type { ProjectActionBuildResult, ProjectActionRegistry } from \"../../actions/src/types.js\";\n\nexport type ProjectActionRelease = {\n id: string;\n projectId: string;\n sourceCommitSha: string;\n bundleHash: string;\n registryHash: string;\n status: string;\n createdAt: string;\n};\n\nexport type HostedProjectActionCatalog = {\n releaseId: string;\n sourceCommitSha: string;\n bundleHash: string;\n registryHash: string;\n registry: ProjectActionRegistry;\n};\n\nexport type ProjectActionInvocation<TOutput = Record<string, unknown>> = {\n id: string;\n releaseId: string;\n projectId: string;\n actionId: string;\n status: \"running\" | \"succeeded\" | \"failed\";\n resultJson: TOutput;\n traceJson: Record<string, unknown>[];\n outputJson: Record<string, unknown>[];\n failureCode?: string | null;\n failureMessage?: string | null;\n};\n\ntype ProjectActionClientInput = {\n apiKey: string;\n apiBaseUrl: string;\n};\n\nexport class OpenPondProjectActionsClient {\n readonly #apiKey: string;\n readonly #apiBaseUrl: string;\n\n constructor(input: ProjectActionClientInput) {\n this.#apiKey = input.apiKey;\n this.#apiBaseUrl = input.apiBaseUrl.replace(/\\/+$/, \"\");\n }\n\n async list(input: { projectId: string; teamId: string }): Promise<ProjectActionRelease[]> {\n const response = await apiFetch(\n this.#apiBaseUrl,\n this.#apiKey,\n projectActionPath(input.projectId, \"releases\", input.teamId),\n );\n return (await readApiJson<{ releases: ProjectActionRelease[] }>(response, \"List Project Action releases\")).releases;\n }\n\n async catalog(input: { projectId: string; teamId: string }): Promise<HostedProjectActionCatalog> {\n const response = await apiFetch(\n this.#apiBaseUrl,\n this.#apiKey,\n projectActionPath(input.projectId, \"catalog\", input.teamId),\n );\n return (await readApiJson<{ catalog: HostedProjectActionCatalog }>(response, \"Get Project Action catalog\")).catalog;\n }\n\n async publish(input: {\n projectId: string;\n teamId: string;\n sourceRef: string;\n sourceCommitSha: string;\n build: ProjectActionBuildResult;\n metadata?: Record<string, unknown>;\n }): Promise<ProjectActionRelease> {\n const [bundle, runner] = await Promise.all([\n fs.readFile(input.build.bundlePath),\n fs.readFile(input.build.runnerPath),\n ]);\n const response = await apiFetch(\n this.#apiBaseUrl,\n this.#apiKey,\n projectActionPath(input.projectId, \"releases\", input.teamId),\n {\n method: \"POST\",\n body: JSON.stringify({\n sourceRef: input.sourceRef,\n sourceCommitSha: input.sourceCommitSha,\n bundleBase64: bundle.toString(\"base64\"),\n runnerBase64: runner.toString(\"base64\"),\n registry: input.build.registry,\n manifest: input.build.manifest,\n metadata: input.metadata,\n }),\n },\n );\n return (await readApiJson<{ release: ProjectActionRelease }>(response, \"Publish Project Actions\")).release;\n }\n\n async run<TOutput = Record<string, unknown>>(input: {\n projectId: string;\n teamId: string;\n actionId: string;\n value?: Record<string, unknown>;\n releaseId?: string;\n idempotencyKey?: string;\n callerType?: \"sdk\" | \"work\" | \"scheduled_work\" | \"website\" | \"internal\";\n callerId?: string;\n signal?: AbortSignal;\n }): Promise<ProjectActionInvocation<TOutput>> {\n const response = await apiFetch(\n this.#apiBaseUrl,\n this.#apiKey,\n projectActionPath(input.projectId, `actions/${encodeURIComponent(input.actionId)}`, input.teamId),\n {\n method: \"POST\",\n body: JSON.stringify({\n input: input.value ?? {},\n releaseId: input.releaseId,\n idempotencyKey: input.idempotencyKey,\n callerType: input.callerType ?? \"sdk\",\n callerId: input.callerId,\n }),\n signal: input.signal,\n timeoutMs: 15 * 60 * 1000,\n },\n );\n return (await readApiJson<{ invocation: ProjectActionInvocation<TOutput> }>(response, \"Run Project Action\")).invocation;\n }\n}\n\nfunction projectActionPath(projectId: string, suffix: string, teamId: string): string {\n return `/v1/project-actions/${encodeURIComponent(projectId)}/${suffix}?teamId=${encodeURIComponent(teamId)}`;\n}\n"],"mappings":";;;;;;AAAA,SAAS,YAAY,UAAU;AA0CxB,IAAM,+BAAN,MAAmC;AAAA,EAC/B;AAAA,EACA;AAAA,EAET,YAAY,OAAiC;AAC3C,SAAK,UAAU,MAAM;AACrB,SAAK,cAAc,MAAM,WAAW,QAAQ,QAAQ,EAAE;AAAA,EACxD;AAAA,EAEA,MAAM,KAAK,OAA+E;AACxF,UAAM,WAAW,MAAM;AAAA,MACrB,KAAK;AAAA,MACL,KAAK;AAAA,MACL,kBAAkB,MAAM,WAAW,YAAY,MAAM,MAAM;AAAA,IAC7D;AACA,YAAQ,MAAM,YAAkD,UAAU,8BAA8B,GAAG;AAAA,EAC7G;AAAA,EAEA,MAAM,QAAQ,OAAmF;AAC/F,UAAM,WAAW,MAAM;AAAA,MACrB,KAAK;AAAA,MACL,KAAK;AAAA,MACL,kBAAkB,MAAM,WAAW,WAAW,MAAM,MAAM;AAAA,IAC5D;AACA,YAAQ,MAAM,YAAqD,UAAU,4BAA4B,GAAG;AAAA,EAC9G;AAAA,EAEA,MAAM,QAAQ,OAOoB;AAChC,UAAM,CAAC,QAAQ,MAAM,IAAI,MAAM,QAAQ,IAAI;AAAA,MACzC,GAAG,SAAS,MAAM,MAAM,UAAU;AAAA,MAClC,GAAG,SAAS,MAAM,MAAM,UAAU;AAAA,IACpC,CAAC;AACD,UAAM,WAAW,MAAM;AAAA,MACrB,KAAK;AAAA,MACL,KAAK;AAAA,MACL,kBAAkB,MAAM,WAAW,YAAY,MAAM,MAAM;AAAA,MAC3D;AAAA,QACE,QAAQ;AAAA,QACR,MAAM,KAAK,UAAU;AAAA,UACnB,WAAW,MAAM;AAAA,UACjB,iBAAiB,MAAM;AAAA,UACvB,cAAc,OAAO,SAAS,QAAQ;AAAA,UACtC,cAAc,OAAO,SAAS,QAAQ;AAAA,UACtC,UAAU,MAAM,MAAM;AAAA,UACtB,UAAU,MAAM,MAAM;AAAA,UACtB,UAAU,MAAM;AAAA,QAClB,CAAC;AAAA,MACH;AAAA,IACF;AACA,YAAQ,MAAM,YAA+C,UAAU,yBAAyB,GAAG;AAAA,EACrG;AAAA,EAEA,MAAM,IAAuC,OAUC;AAC5C,UAAM,WAAW,MAAM;AAAA,MACrB,KAAK;AAAA,MACL,KAAK;AAAA,MACL,kBAAkB,MAAM,WAAW,WAAW,mBAAmB,MAAM,QAAQ,CAAC,IAAI,MAAM,MAAM;AAAA,MAChG;AAAA,QACE,QAAQ;AAAA,QACR,MAAM,KAAK,UAAU;AAAA,UACnB,OAAO,MAAM,SAAS,CAAC;AAAA,UACvB,WAAW,MAAM;AAAA,UACjB,gBAAgB,MAAM;AAAA,UACtB,YAAY,MAAM,cAAc;AAAA,UAChC,UAAU,MAAM;AAAA,QAClB,CAAC;AAAA,QACD,QAAQ,MAAM;AAAA,QACd,WAAW,KAAK,KAAK;AAAA,MACvB;AAAA,IACF;AACA,YAAQ,MAAM,YAA8D,UAAU,oBAAoB,GAAG;AAAA,EAC/G;AACF;AAEA,SAAS,kBAAkB,WAAmB,QAAgB,QAAwB;AACpF,SAAO,uBAAuB,mBAAmB,SAAS,CAAC,IAAI,MAAM,WAAW,mBAAmB,MAAM,CAAC;AAC5G;","names":[]}
|
|
@@ -2,14 +2,14 @@ import {
|
|
|
2
2
|
GeneratedTaskFileSchema,
|
|
3
3
|
TasksetReadinessReportSchema,
|
|
4
4
|
TrainingPathRecommendationSchema
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-GAIDBPFY.js";
|
|
6
6
|
import {
|
|
7
7
|
GraderFixtureLabelSchema,
|
|
8
8
|
GraderSpecSchema,
|
|
9
9
|
TaskPolicyBoundarySchema,
|
|
10
10
|
TasksetCapabilityManifestSchema,
|
|
11
11
|
TasksetSplitSchema
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-MO4HAJZG.js";
|
|
13
13
|
|
|
14
14
|
// src/task-design-contracts.ts
|
|
15
15
|
import { z } from "zod";
|
|
@@ -97,4 +97,4 @@ export {
|
|
|
97
97
|
TaskExampleProposalSchema,
|
|
98
98
|
TaskDesignProposalSchema
|
|
99
99
|
};
|
|
100
|
-
//# sourceMappingURL=chunk-
|
|
100
|
+
//# sourceMappingURL=chunk-LHX7ENKZ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/task-design-contracts.ts"],"sourcesContent":["import { z } from \"zod\";\nimport {\n TasksetSplitSchema,\n TasksetCapabilityManifestSchema,\n TaskPolicyBoundarySchema,\n GraderSpecSchema,\n GraderFixtureLabelSchema,\n} from \"./taskset-draft-core.js\";\nimport {\n GeneratedTaskFileSchema,\n TasksetReadinessReportSchema,\n TrainingPathRecommendationSchema,\n} from \"./taskset-authored-contracts.js\";\n\nconst Id = z.string().trim().min(1).max(240);\nconst Text = z.string().trim().min(1).max(5_000);\nexport const TrainingTacticSchema = z.enum([\n \"no_training\",\n \"prompting\",\n \"retrieval\",\n \"sft\",\n \"preference\",\n \"grpo_rft\",\n \"sdft_opsd\",\n \"sdpo\",\n \"agentic_rl\",\n]);\nexport const TaskDesignFixtureTemplateSchema = z.object({\n id: Id,\n taskIndex: z.number().int().nonnegative(),\n label: GraderFixtureLabelSchema,\n output: z.record(z.string(), z.unknown()),\n infrastructureError: z.string().trim().min(1).max(10_000).nullable(),\n expectedPassed: z.boolean(),\n expectedRewardEligible: z.boolean(),\n metadata: z.record(z.string(), z.unknown()).default({}),\n});\nexport const CapabilityDiagnosisSchema = z.object({\n schemaVersion: z.literal(\"openpond.capabilityDiagnosis.v1\"),\n summary: z.string().trim().min(1).max(10_000),\n stableBehavior: z.array(Text).max(100).default([]),\n changingKnowledge: z.array(Text).max(100).default([]),\n requiredContext: z.array(Text).max(100).default([]),\n requiredTools: z.array(Id).max(100).default([]),\n intervention: TrainingTacticSchema,\n trainingEligible: z.boolean(),\n rationale: z.array(Text).min(1).max(100),\n confidence: z.number().min(0).max(1),\n});\nexport const TaskExampleProposalSchema = z.object({\n id: Id,\n sourceId: Id,\n sourceTurnId: Id.nullable(),\n split: TasksetSplitSchema,\n origin: z.enum([\"extracted\", \"corrected\", \"synthetic\", \"expert_authored\"]),\n inputPrompt: z.string().trim().min(1).max(100_000),\n expectedOutputText: z.string().trim().min(1).max(200_000).nullable(),\n rationale: Text,\n});\nexport const TaskDesignProposalSchema = z.object({\n schemaVersion: z.literal(\"openpond.taskDesignProposal.v1\"),\n id: Id,\n name: z.string().trim().min(1).max(500),\n objective: z.string().trim().min(1).max(20_000),\n diagnosis: CapabilityDiagnosisSchema.default({\n schemaVersion: \"openpond.capabilityDiagnosis.v1\",\n summary: \"Reproduce the selected approved behavior.\",\n stableBehavior: [],\n changingKnowledge: [],\n requiredContext: [],\n requiredTools: [],\n intervention: \"sft\",\n trainingEligible: true,\n rationale: [\"The selected examples were supplied as demonstrations.\"],\n confidence: 0.5,\n }),\n taskKind: TasksetCapabilityManifestSchema.shape.taskKind,\n sourceIds: z.array(Id).min(1).max(100_000),\n assumptions: z.array(Text).max(1_000),\n successCriteria: z.array(Text).min(1).max(1_000),\n proposedGraders: z.array(GraderSpecSchema).max(1_000).default([]),\n graderFixtures: z.array(TaskDesignFixtureTemplateSchema).max(100_000).default([]),\n generatedFiles: z.array(GeneratedTaskFileSchema).max(1_000).default([]),\n proposedExamples: z.array(TaskExampleProposalSchema).max(100_000).default([]),\n proposedMethod: TasksetReadinessReportSchema.shape.recommendedMethod,\n trainingPath: TrainingPathRecommendationSchema.nullable().default(null),\n policy: TaskPolicyBoundarySchema,\n warnings: z.array(z.string().trim().min(1)).default([]),\n createdAt: z.string().trim().min(1),\n});\nexport type TaskDesignFixtureTemplate = z.infer<typeof TaskDesignFixtureTemplateSchema>;\nexport type CapabilityDiagnosis = z.infer<typeof CapabilityDiagnosisSchema>;\nexport type TaskExampleProposal = z.infer<typeof TaskExampleProposalSchema>;\nexport type TaskDesignProposal = z.infer<typeof TaskDesignProposalSchema>;\nexport type TrainingTactic = z.infer<typeof TrainingTacticSchema>;\n"],"mappings":"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","names":[]}
|
|
@@ -5,20 +5,20 @@ import {
|
|
|
5
5
|
computeTasksetHash,
|
|
6
6
|
draftPublishIssues,
|
|
7
7
|
validateTaskset
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-GAIDBPFY.js";
|
|
9
9
|
import {
|
|
10
10
|
TaskDataRecordSchema
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-MO4HAJZG.js";
|
|
12
12
|
import {
|
|
13
13
|
TasksetDraftFileContentSchema,
|
|
14
14
|
TasksetDraftFileMutationSchema,
|
|
15
15
|
TasksetDraftFilePathSchema
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-TK3DXH7A.js";
|
|
17
17
|
import {
|
|
18
18
|
canonicalJson,
|
|
19
19
|
contentHash,
|
|
20
20
|
sha256
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-H3JZ3P5T.js";
|
|
22
22
|
|
|
23
23
|
// src/taskset-draft-files.ts
|
|
24
24
|
var MAX_TASKSET_DRAFT_EDIT_FILE_BYTES = 6e6;
|
|
@@ -140,8 +140,8 @@ var HashSchema = z.string().regex(/^[a-f0-9]{64}$/);
|
|
|
140
140
|
var TasksetDraftWorkspaceFileSchema = z.object({
|
|
141
141
|
path: TasksetDraftFilePathSchema,
|
|
142
142
|
contentHash: HashSchema,
|
|
143
|
-
sizeBytes: z.number().int().nonnegative()
|
|
144
|
-
base64: z.string()
|
|
143
|
+
sizeBytes: z.number().int().nonnegative(),
|
|
144
|
+
base64: z.string()
|
|
145
145
|
}).strict();
|
|
146
146
|
var WorkspaceContentSchema = z.object({
|
|
147
147
|
schemaVersion: z.literal("openpond.tasksetDraftWorkspace.v1"),
|
|
@@ -149,14 +149,14 @@ var WorkspaceContentSchema = z.object({
|
|
|
149
149
|
files: z.array(TasksetDraftWorkspaceFileSchema).max(1e4)
|
|
150
150
|
}).strict();
|
|
151
151
|
var TasksetDraftWorkspaceSchema = WorkspaceContentSchema.extend({ contentHash: HashSchema }).strict();
|
|
152
|
-
function createTasksetDraftWorkspace(input) {
|
|
153
|
-
assertBoundedTaskJson(input,
|
|
152
|
+
function createTasksetDraftWorkspace(input, maximumBytes = MAX_TASKSET_DRAFT_WORKSPACE_BYTES) {
|
|
153
|
+
assertBoundedTaskJson(input, maximumBytes);
|
|
154
154
|
const content = WorkspaceContentSchema.parse(input);
|
|
155
155
|
content.files.sort((left, right) => left.path < right.path ? -1 : left.path > right.path ? 1 : 0);
|
|
156
|
-
return validateTasksetDraftWorkspace({ ...content, contentHash: contentHash(content) });
|
|
156
|
+
return validateTasksetDraftWorkspace({ ...content, contentHash: contentHash(content) }, maximumBytes);
|
|
157
157
|
}
|
|
158
|
-
function validateTasksetDraftWorkspace(input) {
|
|
159
|
-
assertBoundedTaskJson(input,
|
|
158
|
+
function validateTasksetDraftWorkspace(input, maximumBytes = MAX_TASKSET_DRAFT_WORKSPACE_BYTES) {
|
|
159
|
+
assertBoundedTaskJson(input, maximumBytes);
|
|
160
160
|
const workspace = TasksetDraftWorkspaceSchema.parse(input);
|
|
161
161
|
const { contentHash: expectedHash, ...content } = workspace;
|
|
162
162
|
if (contentHash(content) !== expectedHash) throw new Error("Taskset draft workspace differs from its retained bytes.");
|
|
@@ -193,7 +193,7 @@ function listTasksetDraftWorkspaceFiles(input) {
|
|
|
193
193
|
return { draftRevision: workspace.draft.revision, files: files.sort((left, right) => left.path < right.path ? -1 : left.path > right.path ? 1 : 0) };
|
|
194
194
|
}
|
|
195
195
|
function saveTasksetDraftWorkspaceDocument(input) {
|
|
196
|
-
const workspace = editableWorkspace(input.workspace, input.expectedDraftRevision);
|
|
196
|
+
const workspace = editableWorkspace(input.workspace, input.expectedDraftRevision, input.maximumBytes);
|
|
197
197
|
const draft = TasksetDraftSchema.parse(input.draft);
|
|
198
198
|
const current = workspace.draft;
|
|
199
199
|
if (draft.id !== current.id || draft.profileId !== current.profileId || contentHash(draft.modelScope) !== contentHash(current.modelScope)) throw new Error("Taskset draft Model ownership cannot change.");
|
|
@@ -215,11 +215,11 @@ function saveTasksetDraftWorkspaceDocument(input) {
|
|
|
215
215
|
updatedAt: input.now,
|
|
216
216
|
...aggregator && module ? { metrics: { ...draft.metrics, customAggregator: { ...aggregator, contentHash: module.contentHash } } } : {}
|
|
217
217
|
}
|
|
218
|
-
});
|
|
218
|
+
}, input.maximumBytes);
|
|
219
219
|
}
|
|
220
220
|
function saveTasksetDraftWorkspaceFile(input) {
|
|
221
221
|
const mutation = TasksetDraftFileMutationSchema.parse(input.mutation);
|
|
222
|
-
const workspace = editableWorkspace(input.workspace, mutation.expectedDraftRevision);
|
|
222
|
+
const workspace = editableWorkspace(input.workspace, mutation.expectedDraftRevision, input.maximumBytes);
|
|
223
223
|
if (workspace.draft.id !== mutation.draftId) throw new Error("Taskset draft file belongs to another draft.");
|
|
224
224
|
if (!isWritableTasksetDraftFilePath(mutation.path)) throw new Error("This file is managed by the Taskset forms or retained source history.");
|
|
225
225
|
const previous = workspace.files.find((file) => file.path === mutation.path);
|
|
@@ -234,10 +234,10 @@ function saveTasksetDraftWorkspaceFile(input) {
|
|
|
234
234
|
schemaVersion: workspace.schemaVersion,
|
|
235
235
|
files,
|
|
236
236
|
draft: { ...workspace.draft, revision: workspace.draft.revision + 1, status: "draft", updatedAt: input.now }
|
|
237
|
-
});
|
|
237
|
+
}, input.maximumBytes);
|
|
238
238
|
}
|
|
239
|
-
function editableWorkspace(input, expectedRevision) {
|
|
240
|
-
const workspace = validateTasksetDraftWorkspace(input);
|
|
239
|
+
function editableWorkspace(input, expectedRevision, maximumBytes) {
|
|
240
|
+
const workspace = validateTasksetDraftWorkspace(input, maximumBytes);
|
|
241
241
|
if (workspace.draft.status === "published") throw new Error("Published Taskset drafts are immutable.");
|
|
242
242
|
if (workspace.draft.revision !== expectedRevision) throw new Error("Taskset draft changed. Reload before saving.");
|
|
243
243
|
return workspace;
|
|
@@ -487,4 +487,4 @@ export {
|
|
|
487
487
|
tasksetDraftFromTaskset,
|
|
488
488
|
publishTasksetDraft
|
|
489
489
|
};
|
|
490
|
-
//# sourceMappingURL=chunk-
|
|
490
|
+
//# sourceMappingURL=chunk-LR5CTOC5.js.map
|