openpond-sdk 0.12.25 → 0.12.27
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/LEARNING.md +5 -7
- package/OPENTELEMETRY.md +1 -1
- package/PRODUCT_INTEGRATION.md +18 -16
- package/README.md +5 -14
- package/SERVERLESS_SERVING.md +54 -0
- package/TASKSETS.md +1 -2
- package/TASK_INGESTION.md +3 -8
- package/TRAINING_PROTOCOL.md +1 -1
- package/TRAINING_WORKFLOWS.md +11 -6
- package/dist/advanced-refiner-evaluations.js +9 -8
- package/dist/ai-sdk.js +21 -83
- package/dist/ai-sdk.js.map +1 -1
- package/dist/candidate-evaluations.js +7 -6
- package/dist/{chunk-IXFUYPGV.js → chunk-3HOGOWKU.js} +10 -8
- package/dist/chunk-3HOGOWKU.js.map +1 -0
- package/dist/{chunk-YV6PPDXZ.js → chunk-3Z5IK2UK.js} +27 -2
- package/dist/chunk-3Z5IK2UK.js.map +1 -0
- package/dist/{chunk-3B5KSH3V.js → chunk-456F3BXD.js} +5 -2
- package/dist/chunk-456F3BXD.js.map +1 -0
- package/dist/{chunk-GS5HEE4M.js → chunk-4D4QSQC3.js} +2 -2
- package/dist/{chunk-3VUF5H3B.js → chunk-534W2O2S.js} +2 -2
- package/dist/{chunk-47THZRUM.js → chunk-54BJJL7G.js} +8 -5
- package/dist/chunk-54BJJL7G.js.map +1 -0
- package/dist/{chunk-ZRTNR4U7.js → chunk-5KJY44FB.js} +3 -3
- package/dist/{chunk-GX6KMHW2.js → chunk-7MLFWVDI.js} +33 -11
- package/dist/chunk-7MLFWVDI.js.map +1 -0
- package/dist/{chunk-RTLJV4OS.js → chunk-7ZV626YS.js} +2 -2
- package/dist/{chunk-YS7DF76T.js → chunk-ABOZV47D.js} +3 -3
- package/dist/{chunk-DDCR4KB5.js → chunk-BIQ5TG3T.js} +4 -4
- package/dist/{chunk-JOMZJXGC.js → chunk-BT6CC6QB.js} +3 -3
- package/dist/{chunk-QOX57Y27.js → chunk-CNFN6GHY.js} +6 -3
- package/dist/chunk-CNFN6GHY.js.map +1 -0
- package/dist/{chunk-RN5MK7NH.js → chunk-CVYGJUWM.js} +3 -3
- package/dist/{chunk-QNOCM5JX.js → chunk-CX7ETU2F.js} +2 -2
- package/dist/{chunk-EZME7DV4.js → chunk-D7LV3USE.js} +2 -2
- package/dist/{chunk-7F43U2NC.js → chunk-GA7OSSEA.js} +3 -3
- package/dist/{chunk-T67LNKAK.js → chunk-GFWXDWEE.js} +3 -3
- package/dist/{chunk-Z5APNTZE.js → chunk-JYWIKBGD.js} +122 -112
- package/dist/chunk-JYWIKBGD.js.map +1 -0
- package/dist/{chunk-GV6DEDBU.js → chunk-K4WU4JOP.js} +2 -2
- package/dist/{chunk-DH6O4JFB.js → chunk-KJTX4A27.js} +5 -2
- package/dist/chunk-KJTX4A27.js.map +1 -0
- package/dist/{chunk-JMFYNIYZ.js → chunk-L7MVGGBH.js} +6 -3
- package/dist/chunk-L7MVGGBH.js.map +1 -0
- package/dist/{chunk-3G3HUA32.js → chunk-LRFVISLA.js} +3 -3
- package/dist/{chunk-ZQFROKKS.js → chunk-MJHQMQEW.js} +3 -3
- package/dist/{chunk-2OVNKPBZ.js → chunk-MUG4OQKL.js} +5 -2
- package/dist/chunk-MUG4OQKL.js.map +1 -0
- package/dist/{chunk-C3TS766N.js → chunk-N6LGT7NT.js} +5 -2
- package/dist/chunk-N6LGT7NT.js.map +1 -0
- package/dist/chunk-ON3KSXWR.js +639 -0
- package/dist/chunk-ON3KSXWR.js.map +1 -0
- package/dist/chunk-QYWPNNP3.js +9 -0
- package/dist/chunk-QYWPNNP3.js.map +1 -0
- package/dist/{chunk-PMVSO23F.js → chunk-RMXZISHK.js} +10 -1
- package/dist/chunk-RMXZISHK.js.map +1 -0
- package/dist/{chunk-626JLH4D.js → chunk-TMNEDWA7.js} +10 -3
- package/dist/chunk-TMNEDWA7.js.map +1 -0
- package/dist/{chunk-BJMENXR4.js → chunk-TX552FQG.js} +3 -3
- package/dist/{chunk-Z252BNAZ.js → chunk-VE5JD5FN.js} +6 -2
- package/dist/chunk-VE5JD5FN.js.map +1 -0
- package/dist/{chunk-XBFOFTK3.js → chunk-VIDRZCPQ.js} +6 -6
- package/dist/{chunk-QRYEXPG7.js → chunk-VRUAIMM3.js} +14 -11
- package/dist/chunk-VRUAIMM3.js.map +1 -0
- package/dist/{chunk-MVAEE5EI.js → chunk-WJZHSIGD.js} +10 -9
- package/dist/chunk-WJZHSIGD.js.map +1 -0
- package/dist/{chunk-3MWFN7BA.js → chunk-WPTFJZ4L.js} +8 -5
- package/dist/chunk-WPTFJZ4L.js.map +1 -0
- package/dist/connected-evidence.js +9 -8
- package/dist/dataset-commerce.js +4 -1
- package/dist/dataset-commerce.js.map +1 -1
- package/dist/dataset-marketplace.js +4 -1
- package/dist/dataset-marketplace.js.map +1 -1
- package/dist/dataset-workspaces.js +18 -15
- package/dist/dataset-workspaces.js.map +1 -1
- package/dist/errors.js +2 -1
- package/dist/experiment-evaluation-schedules.js +19 -18
- package/dist/experiment-improvements.js +8 -7
- package/dist/experiments.js +17 -16
- package/dist/human-review.js +2 -1
- package/dist/index.js +33 -29
- package/dist/index.js.map +1 -1
- package/dist/learning.js +21 -7
- package/dist/learning.js.map +1 -1
- package/dist/model-projects.js +2 -1
- package/dist/model-starter-attempts.js +3 -2
- package/dist/model-starter-catalog.js +8 -5
- package/dist/model-starter-catalog.js.map +1 -1
- package/dist/model-starters.js +5 -4
- package/dist/model-taskset-runs.js +7 -4
- package/dist/model-taskset-runs.js.map +1 -1
- package/dist/post-training.js +7 -6
- package/dist/taskset-catalog.js +2 -1
- package/dist/taskset-drafts.js +11 -8
- package/dist/taskset-drafts.js.map +1 -1
- package/dist/taskset-packages.js +14 -11
- package/dist/tool-learning.js +4 -1
- package/dist/tool-learning.js.map +1 -1
- package/dist/training-bundle.js +47 -20
- package/dist/training-bundle.js.map +1 -1
- package/dist/training-hardware.js +3 -2
- package/dist/training-projects.js +4 -1
- package/dist/training-projects.js.map +1 -1
- package/dist/training.js +5718 -4337
- package/dist/training.js.map +1 -1
- package/dist/types/packages/sdk/src/ai-sdk.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/alphaedit-model-serving.d.ts +8 -4
- package/dist/types/packages/sdk/src/alphaedit-model-serving.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/candidate-evaluation-client.d.ts +162 -162
- package/dist/types/packages/sdk/src/connected-evidence-client.d.ts +1 -1
- package/dist/types/packages/sdk/src/connected-evidence-client.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/connected-sync.d.ts +1 -1
- package/dist/types/packages/sdk/src/connected-sync.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/dataset-commerce.d.ts +1 -1
- package/dist/types/packages/sdk/src/dataset-commerce.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/dataset-marketplace.d.ts +1 -1
- package/dist/types/packages/sdk/src/dataset-marketplace.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/dataset-population.d.ts +1 -1
- package/dist/types/packages/sdk/src/dataset-population.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/dataset-preparation-client.d.ts +1 -1
- package/dist/types/packages/sdk/src/dataset-preparation-client.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/dataset-task-ingestion.d.ts +1 -1
- package/dist/types/packages/sdk/src/dataset-task-ingestion.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/dataset-workspace-client.d.ts +1 -1
- package/dist/types/packages/sdk/src/dataset-workspace-client.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/decision-model-serving.d.ts +4 -2
- package/dist/types/packages/sdk/src/decision-model-serving.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/endpoints.d.ts +4 -0
- package/dist/types/packages/sdk/src/endpoints.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/engram-model-serving.d.ts +3 -1
- package/dist/types/packages/sdk/src/engram-model-serving.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/evaluation-coordination-http.d.ts +1 -1
- package/dist/types/packages/sdk/src/evaluation-coordination-http.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/experiment-client.d.ts +700 -692
- package/dist/types/packages/sdk/src/experiment-client.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/experiment-draft-storage.d.ts +34 -28
- package/dist/types/packages/sdk/src/experiment-draft-storage.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/experiment-improvement-client.d.ts +1890 -1890
- package/dist/types/packages/sdk/src/experiment-improvement-client.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/experiment-inspection.d.ts +1 -1
- package/dist/types/packages/sdk/src/experiment-inspection.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/experiment-run-details.d.ts +7 -7
- package/dist/types/packages/sdk/src/experiment-scoring-contracts.d.ts +21 -3
- package/dist/types/packages/sdk/src/experiment-scoring-contracts.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/grader-inspection.d.ts +1 -1
- package/dist/types/packages/sdk/src/grader-inspection.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/human-review-client.d.ts +1 -1
- 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-client.d.ts +1 -1
- package/dist/types/packages/sdk/src/learning-client.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/learning-correction-metrics.d.ts +1 -1
- package/dist/types/packages/sdk/src/learning-correction-metrics.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/learning.d.ts +1 -0
- package/dist/types/packages/sdk/src/learning.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/managed-alphaedit-executions.d.ts +272 -16
- package/dist/types/packages/sdk/src/managed-alphaedit-executions.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/managed-compute-price.d.ts +53 -1
- package/dist/types/packages/sdk/src/managed-compute-price.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/managed-decision-executions.d.ts +612 -356
- package/dist/types/packages/sdk/src/managed-decision-executions.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/managed-engram-executions.d.ts +272 -16
- package/dist/types/packages/sdk/src/managed-engram-executions.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/managed-modification-executions.d.ts +208 -16
- package/dist/types/packages/sdk/src/managed-modification-executions.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/managed-neuron-training-executions.d.ts +272 -16
- package/dist/types/packages/sdk/src/managed-neuron-training-executions.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/managed-serving-usage.d.ts +3 -0
- package/dist/types/packages/sdk/src/managed-serving-usage.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/managed-training-preparation.d.ts +25 -25
- package/dist/types/packages/sdk/src/managed-training-preparation.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/model-learning-capabilities.d.ts +4 -0
- package/dist/types/packages/sdk/src/model-learning-capabilities.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/model-learning-policy.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/model-projects.d.ts +1 -1
- package/dist/types/packages/sdk/src/model-projects.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/model-starter-attempts.d.ts +1 -1
- package/dist/types/packages/sdk/src/model-starter-attempts.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/model-starter-catalog.d.ts +1 -1
- package/dist/types/packages/sdk/src/model-starter-catalog.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/model-supervised-training-defaults.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/model-taskset-runs.d.ts +1 -1
- package/dist/types/packages/sdk/src/model-taskset-runs.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/model-training-defaults.d.ts +5 -2
- package/dist/types/packages/sdk/src/model-training-defaults.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/neuron-training-model-serving.d.ts +8 -4
- package/dist/types/packages/sdk/src/neuron-training-model-serving.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/post-training.d.ts +7 -7
- package/dist/types/packages/sdk/src/product-model-response.d.ts +6 -2
- package/dist/types/packages/sdk/src/product-model-response.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/product-model-transport.d.ts +99 -0
- package/dist/types/packages/sdk/src/product-model-transport.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/product-model-wire.d.ts +104 -0
- package/dist/types/packages/sdk/src/product-model-wire.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/product-models.d.ts +18 -15
- package/dist/types/packages/sdk/src/product-models.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/profile-evaluation-discovery.d.ts +1 -1
- package/dist/types/packages/sdk/src/profile-evaluation-discovery.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/serverless-serving.d.ts +564 -0
- package/dist/types/packages/sdk/src/serverless-serving.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/steering-model-serving.d.ts +2211 -494
- package/dist/types/packages/sdk/src/steering-model-serving.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/steering-profile-publication.d.ts +631 -0
- package/dist/types/packages/sdk/src/steering-profile-publication.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/taskset-catalog.d.ts +1 -1
- package/dist/types/packages/sdk/src/taskset-catalog.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/taskset-draft-client.d.ts +1 -1
- package/dist/types/packages/sdk/src/taskset-draft-client.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/taskset-package-client.d.ts +1 -1
- package/dist/types/packages/sdk/src/taskset-package-client.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/taskset-package-projection.d.ts +20 -20
- package/dist/types/packages/sdk/src/taskset-packages.d.ts +1 -0
- package/dist/types/packages/sdk/src/taskset-packages.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/taskset-text-policy.d.ts +11 -0
- package/dist/types/packages/sdk/src/taskset-text-policy.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/tool-learning-client.d.ts +1 -1
- package/dist/types/packages/sdk/src/tool-learning-client.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/training-compute-selection.d.ts +6 -19
- package/dist/types/packages/sdk/src/training-compute-selection.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/training-estimates.d.ts +1 -1
- package/dist/types/packages/sdk/src/training-experiment-setup.d.ts +4 -1
- package/dist/types/packages/sdk/src/training-experiment-setup.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/training-harness-sources.d.ts +2 -2
- package/dist/types/packages/sdk/src/training-model-serving-control.d.ts +630 -0
- package/dist/types/packages/sdk/src/training-model-serving-control.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/training-model-serving.d.ts +1665 -7
- package/dist/types/packages/sdk/src/training-model-serving.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/training-operations.d.ts +11197 -0
- package/dist/types/packages/sdk/src/training-operations.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/training-project-client.d.ts +1 -1
- package/dist/types/packages/sdk/src/training-project-client.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/training-supervised.d.ts +13 -0
- package/dist/types/packages/sdk/src/training-supervised.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/training-transport.d.ts +5 -2
- package/dist/types/packages/sdk/src/training-transport.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/training.d.ts +16869 -5331
- package/dist/types/packages/sdk/src/training.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/types.d.ts +2 -2
- package/dist/types/packages/sdk/src/types.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/weight-inference.d.ts +8 -5
- package/dist/types/packages/sdk/src/weight-inference.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/weight-model-versions.d.ts +2089 -398
- package/dist/types/packages/sdk/src/weight-model-versions.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/weight-space-artifact.d.ts +433 -0
- package/dist/types/packages/sdk/src/weight-space-artifact.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/weight-space-evaluation.d.ts +1437 -0
- package/dist/types/packages/sdk/src/weight-space-evaluation.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/weight-space-model-serving.d.ts +2910 -0
- package/dist/types/packages/sdk/src/weight-space-model-serving.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/weight-space-programming.d.ts +845 -0
- package/dist/types/packages/sdk/src/weight-space-programming.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/weight-space-sessions.d.ts +4600 -0
- package/dist/types/packages/sdk/src/weight-space-sessions.d.ts.map +1 -0
- package/examples/learning/submit.py +1 -1
- package/examples/learning/submit.ts +2 -2
- package/examples/training/continual.ts +4 -4
- package/examples/training/manual.ts +1 -3
- package/fixtures/python-foundation/operation-matrix.json +369 -0
- package/fixtures/python-foundation/schemas.json +37612 -30866
- package/fixtures/python-foundation/training-estimate-http-workflow.json +1 -1
- package/package.json +3 -2
- package/dist/chunk-2OVNKPBZ.js.map +0 -1
- package/dist/chunk-3B5KSH3V.js.map +0 -1
- package/dist/chunk-3MWFN7BA.js.map +0 -1
- package/dist/chunk-47THZRUM.js.map +0 -1
- package/dist/chunk-626JLH4D.js.map +0 -1
- package/dist/chunk-BRP3EBCR.js +0 -245
- package/dist/chunk-BRP3EBCR.js.map +0 -1
- package/dist/chunk-C3TS766N.js.map +0 -1
- package/dist/chunk-DH6O4JFB.js.map +0 -1
- package/dist/chunk-GX6KMHW2.js.map +0 -1
- package/dist/chunk-IXFUYPGV.js.map +0 -1
- package/dist/chunk-JMFYNIYZ.js.map +0 -1
- package/dist/chunk-MVAEE5EI.js.map +0 -1
- package/dist/chunk-PMVSO23F.js.map +0 -1
- package/dist/chunk-QOX57Y27.js.map +0 -1
- package/dist/chunk-QRYEXPG7.js.map +0 -1
- package/dist/chunk-YV6PPDXZ.js.map +0 -1
- package/dist/chunk-Z252BNAZ.js.map +0 -1
- package/dist/chunk-Z5APNTZE.js.map +0 -1
- /package/dist/{chunk-GS5HEE4M.js.map → chunk-4D4QSQC3.js.map} +0 -0
- /package/dist/{chunk-3VUF5H3B.js.map → chunk-534W2O2S.js.map} +0 -0
- /package/dist/{chunk-ZRTNR4U7.js.map → chunk-5KJY44FB.js.map} +0 -0
- /package/dist/{chunk-RTLJV4OS.js.map → chunk-7ZV626YS.js.map} +0 -0
- /package/dist/{chunk-YS7DF76T.js.map → chunk-ABOZV47D.js.map} +0 -0
- /package/dist/{chunk-DDCR4KB5.js.map → chunk-BIQ5TG3T.js.map} +0 -0
- /package/dist/{chunk-JOMZJXGC.js.map → chunk-BT6CC6QB.js.map} +0 -0
- /package/dist/{chunk-RN5MK7NH.js.map → chunk-CVYGJUWM.js.map} +0 -0
- /package/dist/{chunk-QNOCM5JX.js.map → chunk-CX7ETU2F.js.map} +0 -0
- /package/dist/{chunk-EZME7DV4.js.map → chunk-D7LV3USE.js.map} +0 -0
- /package/dist/{chunk-7F43U2NC.js.map → chunk-GA7OSSEA.js.map} +0 -0
- /package/dist/{chunk-T67LNKAK.js.map → chunk-GFWXDWEE.js.map} +0 -0
- /package/dist/{chunk-GV6DEDBU.js.map → chunk-K4WU4JOP.js.map} +0 -0
- /package/dist/{chunk-3G3HUA32.js.map → chunk-LRFVISLA.js.map} +0 -0
- /package/dist/{chunk-ZQFROKKS.js.map → chunk-MJHQMQEW.js.map} +0 -0
- /package/dist/{chunk-BJMENXR4.js.map → chunk-TX552FQG.js.map} +0 -0
- /package/dist/{chunk-XBFOFTK3.js.map → chunk-VIDRZCPQ.js.map} +0 -0
|
@@ -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 { DEFAULT_API_BASE_URL } from \"./endpoints.js\";\nimport { 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 ?? DEFAULT_API_BASE_URL);\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\" | \"weight_space\"; signal?: AbortSignal } = {}) {\n const params = new URLSearchParams(options.afterId ? { afterId: Id.parse(options.afterId) } : {});\n if (options.executionKind) params.set(\"executionKind\", z.enum([\"recorded_evidence\", \"weight_space\"]).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 { DEFAULT_API_BASE_URL } from \"./endpoints.js\";\nimport { 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 ?? DEFAULT_API_BASE_URL);\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 { DEFAULT_API_BASE_URL } from \"./endpoints.js\";\nimport { 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 ?? DEFAULT_API_BASE_URL);\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 ?? DEFAULT_API_BASE_URL).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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,SAAS,KAAAA,UAAS;AAElB,SAAS,oBAAoB,gCAAgC;;;ACH7D,SAAS,SAAS;AAKlB,IAAM,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB;AAC9C,IAAM,uBAAuB,EAAE,OAAO;AAAA,EACpC,SAAS;AAAA,EACT,gBAAgB,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,GAAM;AAAA,EACzD,SAAS,EAAE,MAAM,yBAAyB,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG;AAAA,EAC1D,sBAAsB,KAAK,SAAS;AAAA,EACpC,oBAAoB,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,SAAS;AACjE,CAAC,EAAE,OAAO;AACH,IAAM,mCAAmC,qBAAqB,OAAO,EAAC,mBAAkB,KAAI,CAAC,EAAE,OAAO;AAEtG,IAAM,6BAA6B,6BAA6B,OAAO,EAAC,eAAc,iCAAgC,CAAC,EAAE,OAAO;AAKhI,SAAS,+BAA+B,SAAiC;AAC9E,SAAO,QAAQ,OAAO,SAAS,mBAC3B,EAAC,GAAG,SAAQ,YAAW,QAAQ,WAAW,IAAI,CAAC,EAAC,WAAU,KAAI,GAAG,OAAM,MAAI,MAAM,EAAC,IAClF;AACN;AACO,SAAS,+BAA+B,OAAqD;AAClG,QAAM,UAAU,qBAAqB,MAAM,KAAK;AAChD,SAAO,YAAY,EAAC,GAAG,SAAQ,SAAQ,+BAA+B,QAAQ,OAAO,EAAC,CAAC;AACzF;AACA,eAAsB,2BAA2B,OAA+C;AAC9F,QAAM,SAAS,2BAA2B,MAAM,KAAK;AACrD,QAAM,EAAC,eAAc,GAAG,WAAU,IAAI;AACtC,QAAM,UAAU,MAAM,6BAA6B,UAAU;AAC7D,QAAM,EAAC,mBAAkB,GAAG,QAAO,IAAI;AACvC,MAAI,sBAAsB,+BAA+B,OAAO,KAC3D,YAAY,+BAA+B,cAAc,OAAO,CAAC,MAAM,YAAY,+BAA+B,QAAQ,OAAO,CAAC,KAClI,cAAc,mBAAmB,QAAQ,SAAS,OAAO;AAC5D,UAAM,IAAI,MAAM,yDAAyD;AAC3E,MAAI,QAAQ,SAAS,SAAS,yBAAyB,MAAM;AAC3D,UAAM,UAAU,iCAAiC,MAAM;AAAA,MACrD,YAAW;AAAA,MAAM,mBAAkB,cAAc;AAAA,MACjD,gBAAe,cAAc;AAAA,MAAe,SAAQ,cAAc;AAAA,MAClE,GAAI,cAAc,uBAAuB,EAAC,sBAAqB,cAAc,qBAAoB,IAAI,CAAC;AAAA,MACtG,GAAI,cAAc,qBAAqB,EAAC,oBAAmB,cAAc,mBAAkB,IAAI,CAAC;AAAA,IAClG,CAAC;AACD,QAAI,QAAQ,SAAS,SAAS,gCAAgC,YAAY,OAAO;AAC/E,YAAM,IAAI,MAAM,8DAA8D;AAAA,EAClF;AACA,SAAO,EAAC,GAAG,SAAQ,cAAa;AAClC;;;ACjDA,SAAS,KAAAC,UAAS;AAClB,SAAS,+CAA+C;AAGjD,IAAM,iCAAiCA,GAC3C,OAAO;AAAA,EACN,QAAQA,GAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG;AAAA,EACxC,OAAOA,GACJ;AAAA,IACCA,GACG,OAAO;AAAA,MACN,MAAMA,GAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG;AAAA,MACtC,QAAQ;AAAA,MACR,OAAOA,GAAE,QAAQ;AAAA,MACjB,QAAQA,GAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,GAAI,EAAE,SAAS;AAAA,IAC/C,CAAC,EACA,OAAO;AAAA,EACZ,EACC,IAAI,CAAC;AAAA,EACR,YAAYA,GAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,SAAS;AACnD,CAAC,EACA,OAAO;;;ACrBV,SAAS,KAAAC,UAAS;AAGlB,IAAM,KAAKC,GAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG;AACpC,IAAMC,QAAOD,GAAE,OAAO,EAAE,MAAM,gBAAgB;AAC9C,IAAM,OAAOA,GAAE,IAAI,SAAS;AAC5B,IAAM,SAASA,GAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,SAAS;AAC1D,IAAM,QAAQA,GAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS;AAC/C,IAAM,wBAAwBA,GAClC,OAAO;AAAA,EACN,IAAI;AAAA,EACJ,UAAUA,GAAE,OAAO,EAAE,IAAI,EAAE,YAAY;AAAA,EACvC,IAAI,KAAK,SAAS;AAAA,EAClB,MAAMA,GAAE,OAAO,EAAE,IAAI,GAAG;AAAA,EACxB,QAAQA,GAAE,OAAO,EAAE,IAAI,GAAG,EAAE,SAAS;AAAA,EACrC,eAAe,GAAG,SAAS;AAAA,EAC3B,SAAS;AAAA,EACT,QAAQ,GAAG,SAAS;AAAA,EACpB,QAAQA,GAAE,OAAO,EAAE,IAAI,GAAG,EAAE,SAAS;AAAA,EACrC,WAAWA,GAAE,OAAO,EAAE,IAAI,GAAG,EAAE,SAAS;AAAA,EACxC,iBAAiBA,GAAE,QAAQ,EAAE,SAAS;AACxC,CAAC,EACA,OAAO;AACH,IAAM,uBAAuBA,GACjC,OAAO;AAAA,EACN,IAAI;AAAA,EACJ,MAAMA,GAAE,OAAO,EAAE,IAAI,GAAG;AAAA,EACxB,QAAQA,GAAE,OAAO,EAAE,IAAI,GAAG;AAAA,EAC1B,WAAW,GAAG,SAAS;AAAA,EACvB,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,OAAOA,GAAE,OAAO,EAAE,IAAI,GAAG,EAAE,SAAS;AAAA,EACpC,YAAY;AAAA,EACZ,aAAa;AAAA,EACb,cAAc;AAAA,EACd,aAAa;AACf,CAAC,EACA,OAAO;AACV,IAAM,UAAUA,GACb,OAAO;AAAA,EACN,eAAeA,GAAE,QAAQ,4BAA4B;AAAA,EACrD,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,UAAUA,GAAE,KAAK,CAAC,SAAS,QAAQ,CAAC;AAAA,EACpC,cAAcC;AAAA,EACd,YAAY;AAAA,EACZ,QAAQD,GAAE,OAAO,EAAE,IAAI,GAAG;AAAA,EAC1B,WAAW,KAAK,SAAS;AAAA,EACzB,aAAa,KAAK,SAAS;AAAA,EAC3B,OAAOA,GAAE,OAAO,EAAE,IAAI,IAAI,EAAE,SAAS;AAAA,EACrC,iBAAiBA,GAAE,QAAQ;AAAA,EAC3B,QAAQA,GACL,OAAO;AAAA,IACN,IAAI;AAAA,IACJ,QAAQA,GAAE,OAAO,EAAE,IAAI,GAAG;AAAA,IAC1B,SAAS;AAAA,IACT,aAAa,KAAK,SAAS;AAAA,IAC3B,gBAAgB,KAAK,SAAS;AAAA,IAC9B,YAAY,KAAK,SAAS;AAAA,IAC1B,WAAWA,GAAE,OAAO,EAAE,IAAI,GAAG,EAAE,SAAS;AAAA,EAC1C,CAAC,EACA,OAAO,EACP,SAAS;AAAA,EACZ,YAAYA,GACT,OAAO;AAAA,IACN,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,gBAAgB;AAAA,IAChB,kBAAkB;AAAA,IAClB,OAAOA,GAAE,QAAQ;AAAA,IACjB,cAAc;AAAA,EAChB,CAAC,EACA,OAAO;AAAA,EACV,QAAQA,GAAE,MAAM,qBAAqB,EAAE,IAAI,GAAG;AAAA,EAC9C,iBAAiBA,GAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS;AAAA,EACzD,YAAYA,GAAE,OAAO,EAAE,IAAI,EAAE,YAAY;AAAA,EACzC,OAAOA,GAAE,MAAM,oBAAoB,EAAE,IAAI,GAAG;AAAA,EAC5C,gBAAgB,GAAG,SAAS;AAAA,EAC5B,WAAWA,GAAE,OAAO,EAAE,IAAI,EAAE,YAAY;AAAA,EACxC,aAAaA,GAAE,MAAMA,GAAE,OAAO,EAAE,IAAI,GAAI,CAAC,EAAE,IAAI,EAAE;AACnD,CAAC,EACA,OAAO;AACH,IAAM,uBAAuB,QAAQ,OAAO,EAAE,aAAaC,MAAK,CAAC,EAAE,OAAO;AAI1E,IAAM,4BAA4BD,GACtC,OAAO;AAAA,EACN,eAAeA,GAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS;AAAA,EACvD,aAAa,GAAG,SAAS;AAC3B,CAAC,EACA,OAAO;AACH,SAAS,mBAAmB,OAAgD;AACjF,QAAM,UAAU,QAAQ,MAAM,KAAK;AACnC,SAAO,EAAE,GAAG,SAAS,aAAa,YAAY,OAAO,EAAE;AACzD;AACO,SAAS,qBACd,KACA,OAOA;AACA,QAAM,QAAQ,qBAAqB,MAAM,GAAG;AAC5C,QAAM,EAAE,aAAa,MAAM,GAAG,QAAQ,IAAI;AAC1C,MACE,SAAS,YAAY,OAAO,KAC5B,MAAM,WAAW,MAAM,UACvB,MAAM,UAAU,MAAM,SACrB,MAAM,gBAAgB,MAAM,iBAAiB,MAAM;AAEpD,UAAM,IAAI,MAAM,2EAA2E;AAC7F,MACE,MAAM,OAAO,SAAS,MAAM,cAC5B,MAAM,MAAM,SAAS,MAAM,aAC3B,IAAI,IAAI,MAAM,OAAO,IAAI,CAAC,UAAU,MAAM,EAAE,CAAC,EAAE,SAAS,MAAM,OAAO,UACrE,MAAM,OAAO;AAAA,IACX,CAAC,OAAO,UACN,MAAM,aAAa,QAAQ,MAAM,OAAO,QAAQ,CAAC,EAAG,WAAY,MAAM,iBAAiB;AAAA,EAC3F,KACA,MAAM,MAAM;AAAA,IACV,CAAC,MAAM,UAAU,KAAK,OAAO,QAAQ,MAAM,MAAM,QAAQ,CAAC,EAAG,KAAM,MAAM,eAAe;AAAA,EAC1F,KACC,MAAM,oBAAoB,QAAQ,MAAM,oBAAoB,MAAM,OAAO,GAAG,EAAE,GAAG,YACjF,MAAM,mBAAmB,QAAQ,MAAM,mBAAmB,MAAM,MAAM,GAAG,EAAE,GAAG,MAC9E,MAAM,WAAW,UACf,MAAM,WAAW,qBAAqB,KACrC,MAAM,WAAW,eAAe,QAChC,CAAC,MAAM,WAAW;AAEtB,UAAM,IAAI,MAAM,qEAAqE;AACvF,SAAO;AACT;AAEO,SAAS,gBAAgB,OAMZ;AAClB,QAAM,SAAS,CAAC,QACd,QAAQ,QAAQ,OAAO,QAAQ,YAAY,CAAC,MAAM,QAAQ,GAAG,IACxD,MACD,CAAC;AACP,QAAM,UAAU,OAAO,MAAM,OAAO,GAClC,OAAO,OAAO,QAAQ,IAAI;AAC5B,QAAM,QAAQ,CAAC,KAAc,YAC3B,OAAO,QAAQ,YAAY,sBAAsB,KAAK,GAAG,IAAI,IAAI,MAAM,GAAG,OAAO,IAAI;AACvF,SAAO,sBAAsB,MAAM;AAAA,IACjC,IAAI,MAAM;AAAA,IACV,UAAU,MAAM;AAAA,IAChB,IAAI,MAAM;AAAA,IACV,MAAM,MAAM,KAAK,MAAM,GAAG,GAAG;AAAA,IAC7B,QAAQ,MAAM,QAAQ,QAAQ,GAAG;AAAA,IACjC,eAAe,MAAM,KAAK,UAAU,KAAK,YAAY,GAAG;AAAA,IACxD,SACE,OAAO,QAAQ,YAAY,YAC3B,OAAO,UAAU,QAAQ,OAAO,KAChC,QAAQ,WAAW,IACf,QAAQ,UACR;AAAA,IACN,QAAQ,MAAM,QAAQ,UAAU,KAAK,QAAQ,GAAG;AAAA,IAChD,QAAQ,MAAM,QAAQ,QAAQ,GAAG;AAAA,IACjC,WAAW,MAAM,QAAQ,aAAa,QAAQ,MAAM,GAAG;AAAA,IACvD,iBACE,OAAO,QAAQ,aAAa,aAAa,MAAM,SAAS,+BACpD,QAAQ,WACR;AAAA,EACR,CAAC;AACH;AAYO,SAAS,gBAAgB,QAA6C;AAC3E,QAAM,QAA0B,CAAC,GAC/B,SAAS,oBAAI,IAA4B;AAC3C,aAAW,SAAS,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,GAAG,MAAM,EAAE,WAAW,EAAE,QAAQ,GAAG;AACvE,QAAI,MAAM,KAAK,WAAW,WAAW,GAAG;AACtC,YAAM,KAAK;AAAA,QACT,IAAI,MAAM;AAAA,QACV,OAAO,MAAM,UAAU,MAAM;AAAA,QAC7B,QAAQ,MAAM;AAAA,QACd,WAAW,MAAM;AAAA,QACjB,aAAa;AAAA,QACb,YAAY;AAAA,QACZ,QAAQ;AAAA,QACR,aAAa,CAAC,MAAM,EAAE;AAAA,MACxB,CAAC;AACD;AAAA,IACF;AACA,QAAI,CAAC,CAAC,gBAAgB,kBAAkB,aAAa,EAAE,SAAS,MAAM,IAAI,EAAG;AAC7E,UAAM,MAAM,KAAK,UAAU,CAAC,MAAM,iBAAiB,MAAM,QAAQ,MAAM,QAAQ,MAAM,OAAO,CAAC;AAC7F,QAAI,MAAM,SAAS,gBAAgB;AACjC,YAAM,OAAuB;AAAA,QAC3B,IAAI,MAAM;AAAA,QACV,OAAO,MAAM,UAAU;AAAA,QACvB,QAAQ,MAAM;AAAA,QACd,WAAW,MAAM;AAAA,QACjB,aAAa;AAAA,QACb,YAAY;AAAA,QACZ,QAAQ;AAAA,QACR,aAAa,CAAC,MAAM,EAAE;AAAA,MACxB;AACA,aAAO,IAAI,KAAK,IAAI;AACpB,YAAM,KAAK,IAAI;AAAA,IACjB,OAAO;AACL,YAAM,OAAO,OAAO,IAAI,GAAG;AAC3B,UAAI,MAAM;AACR,aAAK,cAAc,MAAM;AACzB,aAAK,SAAS,MAAM,SAAS,gBAAgB,WAAW;AACxD,aAAK,aACH,KAAK,aAAa,MAAM,KACpB,KAAK,IAAI,GAAG,KAAK,MAAM,MAAM,EAAE,IAAI,KAAK,MAAM,KAAK,SAAS,CAAC,IAC7D;AACN,aAAK,YAAY,KAAK,MAAM,EAAE;AAC9B,eAAO,OAAO,GAAG;AAAA,MACnB;AACE,cAAM,KAAK;AAAA,UACT,IAAI,MAAM;AAAA,UACV,OAAO,MAAM,UAAU;AAAA,UACvB,QAAQ,MAAM;AAAA,UACd,WAAW;AAAA,UACX,aAAa,MAAM;AAAA,UACnB,YAAY;AAAA,UACZ,QAAQ,MAAM,SAAS,gBAAgB,WAAW;AAAA,UAClD,aAAa,CAAC,MAAM,EAAE;AAAA,QACxB,CAAC;AAAA,IACL;AAAA,EACF;AACA,SAAO;AACT;AAEO,SAAS,yBACd,OACA,SAAS,MAAM,QACf,QAAQ,MAAM,OACd;AACA,QAAM,EAAE,aAAa,UAAU,GAAG,SAAS,IAAI;AAC/C,SAAO;AAAA;AAAA,EAAqf,KAAK,UAAU,EAAE,GAAG,UAAU,gBAAgB,UAAU,OAAO,kBAAkB,MAAM,KAAK,GAAG,QAAQ,OAAO,MAAM,GAAG,GAAG,GAAG,OAAO,MAAM,MAAM,GAAG,GAAG,GAAG,kBAAkB,EAAE,YAAY,OAAO,QAAQ,WAAW,MAAM,QAAQ,iBAAiB,IAAI,EAAE,GAAG,MAAM,CAAC,CAAC;AACjwB;AAGO,SAAS,kBAAkB,OAAkC;AAClE,MAAI,CAAC,MAAO,QAAO;AACnB,QAAM,QAAQ,MAAM,MAAM,yCAAyC;AACnE,SACE,OAAO,MAAM,GAAG,CAAC,EAAE,KAAK,KAAK,KAC7B;AAEJ;;;AHxPA,IAAME,MAAKC,GAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG;AACpC,IAAM,0BAAN,cAAsC,MAAM;AAAA,EACjD,YAAqB,QAAyB,MAAc,SAAiB;AAAE,UAAM,OAAO;AAAvE;AAAyB;AAAiD,SAAK,OAAO;AAAA,EAA2B;AAAA,EAAjH;AAAA,EAAyB;AAChD;AAGO,IAAM,4BAAN,MAAgC;AAAA,EAErC,YAA6B,SAAqF;AAArF;AAC3B,UAAM,MAAM,IAAI,IAAI,QAAQ,WAAW,oBAAoB;AAC3D,QAAI,CAAC,CAAC,SAAS,QAAQ,EAAE,SAAS,IAAI,QAAQ,KAAK,IAAI,YAAY,IAAI,YAAY,IAAI,UAAU,IAAI,QAAQ,CAAC,QAAQ,OAAO,KAAK,KAAK,CAAC,QAAQ,OAAO,KAAK;AAC1J,YAAM,IAAI,MAAM,4DAA4D;AAC9E,SAAK,UAAU,IAAI,SAAS,EAAE,QAAQ,QAAQ,EAAE;AAAA,EAClD;AAAA,EAL6B;AAAA,EADZ;AAAA,EAOjB,MAAM,SAAS,QAAsB;AACnC,WAAOA,GAAE,OAAO,EAAE,iBAAiBA,GAAE,OAAO,EAAE,OAAO,EAAE,IAAI,IAAQ,EAAE,IAAI,GAAM,GAAG,2BAA2BA,GAAE,OAAO,EAAE,OAAO,EAAE,IAAI,IAAQ,EAAE,IAAI,GAAM,GAAG,qBAAqBA,GAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,EACpN,MAAM,MAAM,KAAK,QAAQ,aAAa,OAAO,QAAW,MAAM,CAAC;AAAA,EACpE;AAAA,EACA,MAAM,uBAAuB,OAAyE,QAAsB;AAC1H,UAAM,UAAUA,GAAE,OAAO,EAAE,IAAID,KAAI,cAAcC,GAAE,MAAMD,GAAE,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,GAAG,iBAAiBC,GAAE,OAAO,EAAE,OAAO,EAAE,IAAI,IAAQ,EAAE,IAAI,GAAM,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,KAAK;AAC/K,UAAM,SAAS,KAAK,uBAAuB,MAAM,KAAK,QAAQ,uBAAuB,QAAQ,SAAS,MAAM,GAAG,QAAQ,EAAE;AACzH,QAAI,YAAY,OAAO,WAAW,IAAI,UAAQ,KAAK,WAAW,EAAE,KAAK,CAAC,MAAM,YAAY,CAAC,GAAG,QAAQ,YAAY,EAAE,KAAK,CAAC,KACnH,QAAQ,oBAAoB,UAAa,OAAO,oBAAoB,QAAQ;AAC/E,YAAM,IAAI,MAAM,wEAAwE;AAC1F,WAAO;AAAA,EACT;AAAA,EACA,MAAM,iBAAiB,IAAY,QAAsB;AACvD,WAAO,KAAK,uBAAuB,MAAM,KAAK,QAAQ,uBAAuB,mBAAmBD,IAAG,MAAM,EAAE,CAAC,CAAC,IAAI,OAAO,QAAW,MAAM,GAAG,EAAE;AAAA,EAChJ;AAAA,EACQ,uBAAuB,OAAgB,IAAY;AACzD,UAAM,SAASC,GAAE,OAAO,EAAE,IAAID,KAAI,QAAQA,KAAI,iBAAiBC,GAAE,OAAO,EAAE,OAAO,EAAE,SAAS,GAAG,YAAYA,GAAE,OAAO,EAAE,OAAO,EAAE,YAAY,GAAG,aAAaA,GAAE,OAAO,EAAE,OAAO,EAAE,YAAY,GAAG,cAAcA,GAAE,OAAO,EAAE,OAAO,EAAE,YAAY,GAAG,YAAYA,GAAE,MAAMA,GAAE,OAAO,EAAE,aAAaD,KAAI,OAAOA,IAAG,SAAS,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,KAAK;AACxW,QAAI,OAAO,OAAO,MAAM,OAAO,WAAW,KAAK,QAAQ,OAAQ,OAAM,IAAI,MAAM,mCAAmC;AAClH,WAAO;AAAA,EACT;AAAA;AAAA,EAEA,MAAM,eAAe,UAAmD,CAAC,GAAG;AAC1E,UAAM,SAAS,QAAQ,WAAW,SAAY,SAAYC,GAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,MAAM,QAAQ,MAAM;AAC1G,UAAM,QAAQ,IAAI,gBAAgB,SAAS,EAAC,OAAM,IAAI,CAAC,CAAC;AACxD,UAAM,OAAO,+BAA+B,MAAM,MAAM,KAAK,QAAQ,oBAAoB,KAAK,IAAG,OAAM,QAAU,QAAQ,MAAM,CAAC;AAChI,QAAI,KAAK,WAAW,KAAK,QAAQ,UAC5B,IAAI,IAAI,KAAK,MAAM,IAAI,UAAM,YAAY,KAAK,MAAM,CAAC,CAAC,EAAE,SAAS,KAAK,MAAM,UAC5E,KAAK,eAAe,QAAQ,KAAK,eAAe,UAChD,KAAK,MAAM,KAAK,UAAM,KAAK,WAAW,KAAK,WAAW,KAAK;AAC9D,YAAM,IAAI,MAAM,wEAAwE;AAC1F,WAAO;AAAA,EACT;AAAA;AAAA,EAEA,MAAM,eAAe,OAA6G,QAAsB;AACtJ,UAAM,UAAU,+BAA+B,MAAM,EAAE,GAAG,OAAO,gBAAgB,MAAM,mBAAmB,MAAM,KAAK,SAAS,MAAM,GAAG,gBAAgB,CAAC;AACxJ,UAAM,SAAS,gCAAgC,MAAM,MAAM,KAAK,QAAQ,kBAAkB,QAAQ,SAAS,MAAM,CAAC;AAClH,oCAAgC,OAAO,SAAS,OAAO,QAAQ;AAC/D,UAAM,SAAS,OAAO,QAAQ;AAC9B,QAAI,OAAO,QAAQ,WAAW,KAAK,QAAQ,UAAU,OAAO,QAAQ,gBAAgB,QAAQ,eACvF,OAAO,SAAS,oBAAoB,OAAO,wBAAwB,QAAQ,uBAC3E,OAAO,OAAO,iBAAiB,QAAQ,gBAAgB,OAAO,YAAY,QAAQ,WAClF,OAAO,oBAAoB,QAAQ,mBAAmB,OAAO,mBAAmB,QAAQ,kBACxF,OAAO,SAAS,OAAO,oBAAoB,QAAQ;AACtD,YAAM,IAAI,MAAM,wEAAwE;AAC1F,WAAO;AAAA,EACT;AAAA,EACA,MAAM,IAAI,OAAkG,QAAsB;AAChI,UAAM,UAAU,oBAAoB,MAAM,EAAE,GAAG,OAAO,gBAAgB,MAAM,mBAAmB,MAAM,KAAK,SAAS,MAAM,GAAG,gBAAgB,CAAC;AAC7I,QAAI,QAAQ,QAAQ,WAAW,KAAK,QAAQ,OAAQ,OAAM,IAAI,MAAM,gCAAgC;AAGpG,UAAM,SAAS,MAAM,KAAK,QAAQ,MAAM,KAAK,QAAQ,IAAI,QAAQ,EAAE,GAAG,SAAS,gBAAgB,MAAM,eAAe,GAAG,MAAM,CAAC;AAC9H,QAAI,MAAM,mBAAmB,OAAW,SAAQ,iBAAiB,OAAO,cAAc;AACtF,QAAI,YAAY,+BAA+B,OAAO,OAAO,CAAC,MAAM,YAAY,+BAA+B,QAAQ,OAAO,CAAC,KAC1H,OAAO,cAAc,mBAAmB,QAAQ,kBAChD,OAAO,cAAc,uBAAuB,QAAQ,sBACpD,OAAO,cAAc,yBAAyB,YAAY,OAAO;AACpE,YAAM,IAAI,MAAM,gEAAgE;AAClF,QAAI,QAAQ,WAAW,YAAY,QAAQ,OAAO,MAAM,YAAY,OAAO,cAAc,QAAQ,IAAI,aAAW;AAAA,MAC9G,IAAG,OAAO;AAAA,MAAG,SAAQ,OAAO;AAAA,MAAQ,aAAY,OAAO;AAAA,MAAY,UAAS,OAAO,YAAY,CAAC;AAAA,IAClG,EAAE,CAAC,EAAG,OAAM,IAAI,MAAM,qEAAqE;AAC3F,WAAO;AAAA,EACT;AAAA,EACA,MAAM,IAAI,IAAY,UAAkC,CAAC,GAAG;AAC1D,WAAO,KAAK,QAAQ,MAAM,KAAK,QAAQ,IAAI,mBAAmBD,IAAG,MAAM,EAAE,CAAC,CAAC,IAAI,OAAO,QAAW,QAAQ,MAAM,GAAG,EAAE;AAAA,EACtH;AAAA,EACA,MAAM,YAAY,IAAY,UAAyG,CAAC,GAAG;AACzI,UAAM,QAAQ,0BAA0B,MAAM,EAAE,eAAe,QAAQ,eAAe,aAAa,QAAQ,YAAY,CAAC;AACxH,UAAM,SAAS,IAAI,gBAAgB,OAAO,QAAQ,KAAK,EAAE,OAAO,CAAC,CAAC,EAAC,KAAK,MAAI,UAAQ,MAAS,EAAE,IAAI,CAAC,CAAC,KAAI,KAAK,MAAI,CAAC,KAAI,OAAO,KAAK,CAAC,CAAC,CAAC;AACtI,WAAO,qBAAqB,MAAM,KAAK,QAAQ,IAAI,mBAAmBA,IAAG,MAAM,EAAE,CAAC,CAAC,gBAAgB,MAAM,IAAG,OAAM,QAAU,QAAQ,MAAM,GAAE,EAAC,QAAO,KAAK,QAAQ,QAAO,OAAM,IAAG,cAAa,QAAQ,cAAa,eAAc,QAAQ,eAAc,aAAY,QAAQ,YAAW,CAAC;AAAA,EACzR;AAAA,EACA,MAAM,KAAK,QAAmD,CAAC,GAAG,QAAsB;AACtF,UAAM,QAAQ,0BAA0B,MAAM,KAAK;AACnD,UAAM,SAAS,IAAI,gBAAgB,OAAO,QAAQ,KAAK,EAAE,OAAO,CAAC,CAAC,EAACE,MAAK,MAAIA,WAAQ,MAAS,EAAE,IAAI,CAAC,CAAC,KAAIA,MAAK,MAAI,CAAC,KAAI,OAAOA,MAAK,CAAC,CAAC,CAAC;AACtI,UAAM,OAAOD,GAAE,OAAO,EAAC,OAAMA,GAAE,MAAMA,GAAE,QAAQ,CAAC,EAAE,IAAI,GAAG,GAAE,YAAWD,IAAG,SAAS,EAAC,CAAC,EAAE,OAAO,EAAE,MAAM,MAAM,KAAK,QAAQ,IAAI,MAAM,IAAG,OAAM,QAAU,MAAM,CAAC;AAC5J,UAAM,QAAQ,MAAM,QAAQ,IAAI,KAAK,MAAM,IAAI,CAAAE,WAAO,KAAK,QAAQA,MAAK,CAAC,CAAC;AAC1E,QAAI,MAAM,SAAS,MAAM,SAAS,IAAI,IAAI,MAAM,IAAI,UAAM,KAAK,QAAQ,EAAE,CAAC,EAAE,SAAS,MAAM,UACtF,KAAK,eAAe,QAAQ,KAAK,eAAe,MAAM,GAAG,EAAE,GAAG,QAAQ,MACtE,MAAM,KAAK,UAAQ,MAAM,aAAa,KAAK,QAAQ,SAAS,OAAO,MAAM,aACvE,MAAM,eAAe,KAAK,QAAQ,QAAQ,gBAAgB,MAAM,eAChE,MAAM,UAAU,KAAK,QAAQ,WAAW,MAAM,MAAM;AACzD,YAAM,IAAI,MAAM,kDAAkD;AACpE,WAAO,EAAC,OAAM,YAAW,KAAK,WAAU;AAAA,EAC1C;AAAA,EACA,MAAM,OAAO,aAAqB,QAAsB;AACtD,UAAM,QAAQD,GAAE,OAAO,EAAE,aAAaD,KAAI,QAAQA,IAAG,SAAS,GAAG,UAAUC,GAAE,QAAQ,GAAG,QAAQA,GAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EACnH,MAAM,MAAM,KAAK,QAAQ,IAAI,mBAAmBD,IAAG,MAAM,WAAW,CAAC,CAAC,WAAW,OAAO,QAAW,MAAM,CAAC;AAC7G,UAAM,WAAW,yBAAyB,KAAK;AAC/C,QAAI,MAAM,gBAAgB,eAAe,SAAS,SAAS,WAAW,KAAK,QAAQ,UAC9E,SAAS,SAAS,SAAS,UAAU,OAAO,eAC5C,SAAS,SAAS,QAAQ,kBAAkB,MAAM,OAAQ,OAAM,IAAI,MAAM,sCAAsC;AACrH,WAAO,EAAE,GAAG,UAAU,aAAa,QAAQ,MAAM,OAAO;AAAA,EAC1D;AAAA,EACA,MAAM,OAAO,IAAY,QAAsB;AAC7C,WAAO,KAAK,QAAQ,MAAM,KAAK,QAAQ,IAAI,mBAAmBA,IAAG,MAAM,EAAE,CAAC,CAAC,WAAW,QAAQ,CAAC,GAAG,MAAM,GAAG,EAAE;AAAA,EAC/G;AAAA;AAAA,EAEA,MAAM,UAAU,IAAY,aAAqB,QAAsB;AACrE,UAAM,SAAS,MAAM,KAAK,QAAQ,MAAM,KAAK,QAAQ,IAAI,mBAAmBA,IAAG,MAAM,EAAE,CAAC,CAAC,cAAc,QAAQ,EAAC,aAAYA,IAAG,MAAM,WAAW,EAAC,GAAG,MAAM,CAAC;AAC3J,QAAI,OAAO,QAAQ,gBAAgB,eAAe,OAAO,cAAc,uBAAuB,MAAM,OAAO,QAAQ,OAAO;AACxH,YAAM,IAAI,MAAM,sEAAsE;AACxF,WAAO;AAAA,EACT;AAAA,EACA,MAAM,MAAM,OAAiC,QAAsB;AACjE,UAAM,UAAU,+BAA+B,MAAM,KAAK;AAC1D,UAAM,OAAO,KAAK,KAAK,MAAM,KAAK,QAAQ,IAAI,mBAAmB,QAAQ,UAAU,EAAE,CAAC,mBAAmB,QAAQ,SAAS,MAAM,CAAC;AACjI,QAAI,YAAY,KAAK,OAAO,MAAM,YAAY,OAAO,EAAG,OAAM,IAAI,MAAM,sDAAsD;AAC9H,WAAO;AAAA,EACT;AAAA,EACA,MAAM,YAAY,IAAY,QAAsB;AAClD,WAAO,KAAK,KAAK,MAAM,KAAK,QAAQ,mBAAmB,mBAAmBA,IAAG,MAAM,EAAE,CAAC,CAAC,IAAI,OAAO,QAAW,MAAM,GAAG,EAAE;AAAA,EAC1H;AAAA,EACA,MAAM,cAAc,aAAqB,UAA4G,CAAC,GAAG;AACvJ,UAAM,SAAS,IAAI,gBAAgB,QAAQ,UAAU,EAAE,SAASA,IAAG,MAAM,QAAQ,OAAO,EAAE,IAAI,CAAC,CAAC;AAChG,QAAI,QAAQ,cAAe,QAAO,IAAI,iBAAiBC,GAAE,KAAK,CAAC,qBAAqB,cAAc,CAAC,EAAE,MAAM,QAAQ,aAAa,CAAC;AACjI,UAAM,OAAOA,GAAE,OAAO,EAAE,OAAOA,GAAE,MAAMA,GAAE,QAAQ,CAAC,EAAE,IAAI,EAAE,GAAG,YAAYD,IAAG,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE;AAAA,MACjG,MAAM,KAAK,QAAQ,IAAI,mBAAmBA,IAAG,MAAM,WAAW,CAAC,CAAC,mBAAmB,MAAM,IAAI,OAAO,QAAW,QAAQ,MAAM;AAAA,IAAC;AAChI,UAAM,QAAQ,KAAK,MAAM,IAAI,WAAS,KAAK,KAAK,KAAK,CAAC;AACtD,QAAI,MAAM,KAAK,UAAQ,KAAK,QAAQ,UAAU,OAAO,eAAe,KAAK,QAAQ,kBAAkB,QAAQ,aAAa,KAAK,IAAI,IAAI,MAAM,IAAI,UAAQ,KAAK,EAAE,CAAC,EAAE,SAAS,MAAM;AAC9K,YAAM,IAAI,MAAM,yDAAyD;AAC3E,WAAO,EAAE,OAAO,YAAY,KAAK,WAAW;AAAA,EAC9C;AAAA,EACA,MAAM,kBAAkB,IAAY,QAAsB;AACxD,WAAO,KAAK,KAAK,MAAM,KAAK,QAAQ,mBAAmB,mBAAmBA,IAAG,MAAM,EAAE,CAAC,CAAC,WAAW,QAAQ,CAAC,GAAG,MAAM,GAAG,EAAE;AAAA,EAC3H;AAAA,EACA,MAAM,cAAc,IAAY,QAAsB;AACpD,UAAM,QAAQC,GAAE,OAAO,EAAE,aAAaD,KAAI,QAAQA,KAAI,UAAUC,GAAE,QAAQ,GAAG,QAAQA,GAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE;AAAA,MAC3G,MAAM,KAAK,QAAQ,mBAAmB,mBAAmBD,IAAG,MAAM,EAAE,CAAC,CAAC,WAAW,OAAO,QAAW,MAAM;AAAA,IAAC;AAC5G,UAAM,WAAW,yBAAyB,KAAK;AAC/C,QAAI,MAAM,WAAW,MAAM,SAAS,SAAS,WAAW,KAAK,QAAQ,UAAU,SAAS,SAAS,OAAO,MACnG,SAAS,SAAS,SAAS,UAAU,OAAO,MAAM,eAAe,SAAS,SAAS,QAAQ,kBAAkB;AAChH,YAAM,IAAI,MAAM,mCAAmC;AACrD,WAAO,EAAE,GAAG,UAAU,aAAa,MAAM,aAAa,QAAQ,GAAG;AAAA,EACnE;AAAA,EACA,MAAM,QAAQ,YAAoB,aAAqB,QAAsB;AAC3E,UAAM,OAAO,CAAC,OAAe,GAAG,WAAW,QAAQ,IAAI,KAAK,cAAc,IAAI,MAAM,IAAI,KAAK,OAAO,IAAI,MAAM;AAC9G,UAAM,CAAC,UAAU,SAAS,IAAI,MAAM,QAAQ,IAAI,CAAC,KAAK,UAAU,GAAG,KAAK,WAAW,CAAC,CAAC;AACrF,WAAO,EAAE,UAAU,WAAW,YAAY,mBAAmB,UAAU,SAAS,EAAE;AAAA,EACpF;AAAA,EACA,MAAc,QAAQ,OAAgB,IAAa;AACjD,UAAM,SAAS,MAAM,2BAA2B,KAAK;AACrD,QAAI,OAAO,QAAQ,WAAW,KAAK,QAAQ,UAAU,MAAM,OAAO,QAAQ,OAAO;AAC/E,YAAM,IAAI,MAAM,+BAA+B;AACjD,WAAO;AAAA,EACT;AAAA,EACQ,KAAK,OAAgB,IAAa;AACxC,UAAM,OAAO,4BAA4B,KAAK;AAC9C,QAAI,KAAK,WAAW,KAAK,QAAQ,UAAU,MAAM,KAAK,OAAO,GAAI,OAAM,IAAI,MAAM,iCAAiC;AAClH,WAAO;AAAA,EACT;AAAA,EACA,MAAc,QAAQ,MAAc,QAAgB,MAAgB,QAAwC;AAC1G,UAAM,WAAW,OAAO,KAAK,QAAQ,SAAS,OAAO,GAAG,KAAK,OAAO,kBAAkB,IAAI,IAAI;AAAA,MAC5F;AAAA,MAAQ;AAAA,MAAQ,UAAU;AAAA,MAAS,SAAS,EAAE,eAAe,UAAU,KAAK,QAAQ,MAAM,IAAI,sBAAsB,KAAK,QAAQ,QAAQ,gBAAgB,oBAAoB,QAAQ,mBAAmB;AAAA,MACxM,GAAI,SAAS,SAAY,CAAC,IAAI,EAAE,MAAM,KAAK,UAAU,IAAI,EAAE;AAAA,IAC7D,CAAC;AACD,UAAM,QAAQ,MAAM,SAAS,KAAK;AAClC,QAAI,CAAC,SAAS,IAAI;AAChB,YAAM,SAASC,GAAE,OAAO,EAAE,MAAMA,GAAE,OAAO,GAAG,SAASA,GAAE,OAAO,EAAE,CAAC,EAAE,UAAU,KAAK;AAClF,YAAM,IAAI,wBAAwB,SAAS,QAAQ,OAAO,UAAU,OAAO,KAAK,OAAO,6BAA6B,OAAO,UAAU,OAAO,KAAK,UAAU,4BAA4B;AAAA,IACzL;AACA,WAAO;AAAA,EACT;AACF;;;AI5LA,SAAS,KAAAE,UAAS;AAElB,IAAMC,MAAKC,GAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG;AAC3C,IAAMC,QAAOD,GAAE,OAAO,EAAE,MAAM,gBAAgB;AAC9C,IAAME,WAAUF,GAAE,OAAO,EAAE,eAAeA,GAAE,QAAQ,sCAAsC,GAAG,QAAQD,KAAI,aAAaA,KAAI,cAAcE,OAAM,WAAWF,KAAI,QAAQA,KAAI,MAAMC,GAAE,OAAO,EAAE,IAAI,CAAC,GAAG,OAAOA,GAAE,OAAOA,GAAE,OAAO,GAAGA,GAAE,QAAQ,CAAC,EAAE,SAAS,GAAG,QAAQA,GAAE,QAAQ,EAAE,SAAS,GAAG,OAAOA,GAAE,OAAO,EAAE,SAAS,GAAG,QAAQA,GAAE,MAAMA,GAAE,OAAOA,GAAE,OAAO,GAAGA,GAAE,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,iBAAiBD,IAAG,SAAS,GAAG,YAAYC,GAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,EAAE,OAAO;AAC/b,IAAM,iCAAiCE,SAAQ,OAAO,EAAE,aAAaD,MAAK,CAAC,EAAE,OAAO;AAEpF,IAAM,qCAAN,MAAyC;AAAA,EAE9C,YAA6B,SAAqF;AAArF;AAC3B,UAAM,MAAM,IAAI,IAAI,QAAQ,WAAW,oBAAoB;AAC3D,QAAI,CAAC,CAAC,SAAS,QAAQ,EAAE,SAAS,IAAI,QAAQ,KAAK,IAAI,YAAY,IAAI,YAAY,IAAI,UAAU,IAAI,QAAQ,CAAC,QAAQ,OAAO,KAAK,KAAK,CAAC,QAAQ,OAAO,KAAK,EAAG,OAAM,IAAI,MAAM,4DAA4D;AAC3O,SAAK,UAAU,IAAI,SAAS,EAAE,QAAQ,QAAQ,EAAE;AAAA,EAClD;AAAA,EAJ6B;AAAA,EADZ;AAAA;AAAA,EAOjB,MAAM,KAAK,aAAqB,WAAmB,UAA6E,CAAC,GAAG;AAClI,UAAM,SAAS,IAAI,gBAAgB,QAAQ,UAAU,EAAE,SAASF,IAAG,MAAM,QAAQ,OAAO,EAAE,IAAI,CAAC,CAAC;AAChG,UAAM,WAAW,OAAO,KAAK,QAAQ,SAAS,OAAO,GAAG,KAAK,OAAO,mBAAmB,mBAAmBA,IAAG,MAAM,WAAW,CAAC,CAAC,UAAU,mBAAmBA,IAAG,MAAM,SAAS,CAAC,CAAC,IAAI,MAAM,IAAI,EAAE,QAAQ,QAAQ,QAAQ,UAAU,SAAS,SAAS,EAAE,eAAe,UAAU,KAAK,QAAQ,MAAM,IAAI,sBAAsB,KAAK,QAAQ,QAAQ,QAAQ,mBAAmB,EAAE,CAAC;AAChX,UAAM,QAAiB,MAAM,SAAS,KAAK;AAC3C,QAAI,CAAC,SAAS,GAAI,OAAM,IAAI,MAAMC,GAAE,OAAO,EAAE,SAASA,GAAE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,EAAE,OAAO;AACxF,UAAM,SAAS,+BAA+B,MAAM,KAAK;AACzD,UAAM,EAAE,aAAa,QAAQ,GAAG,QAAQ,IAAI;AAC5C,QAAI,YAAY,OAAO,MAAM,UAAU,OAAO,WAAW,KAAK,QAAQ,UAAU,OAAO,gBAAgB,eAAe,OAAO,cAAc,aAAa,QAAQ,gBAAgB,OAAO,iBAAiB,QAAQ,gBAAgB,OAAO,OAAO,SAAS,OAAO,WAAY,OAAM,IAAI,MAAM,sFAAsF;AAChX,WAAO;AAAA,EACT;AACF;;;ACjBO,SAAS,sBAAsB,KAA+B;AACnE,SAAO,KAAK,UAAU,IAAI,UACtB,CAAC,UAAU,IAAI,QAAQ,IAAI,IAAI,QAAQ,UAAU,IAAI,QAAQ,aAAa,IAAI,WAAW,IACzF,CAAC,WAAW,IAAI,IAAI,IAAI,SAAS,IAAI,aAAa,IAAI,WAAW,CAAC;AACxE;AAEO,SAAS,oBAAgD,MAAqE;AACnI,QAAM,SAAS,oBAAI,IAAsD;AACzE,aAAW,OAAO,MAAM;AACtB,UAAM,MAAM,sBAAsB,GAAG;AACrC,UAAM,QAAQ,OAAO,IAAI,GAAG;AAC5B,QAAI,MAAO,OAAM,QAAQ,KAAK,GAAG;AAAA,QAC5B,QAAO,IAAI,KAAK,EAAE,KAAK,QAAQ,KAAK,SAAS,CAAC,GAAG,EAAE,CAAC;AAAA,EAC3D;AACA,SAAO,CAAC,GAAG,OAAO,OAAO,CAAC;AAC5B;AAIO,SAAS,gCAAqF,MAAyB;AAC5H,QAAM,WAAW,oBAAoB,IAAI;AACzC,QAAM,WAAW,oBAAI,IAAoB;AACzC,aAAW,SAAS,UAAU;AAC5B,UAAM,WAAW,SAAS,IAAI,MAAM,OAAO,WAAW;AACtD,QAAI,YAAY,aAAa,MAAM;AACjC,YAAM,IAAI,MAAM,wDAAwD,MAAM,OAAO,WAAW,gEAAgE;AAClK,aAAS,IAAI,MAAM,OAAO,aAAa,MAAM,GAAG;AAChD,UAAM,WAAW,KAAK,UAAU,MAAM,OAAO,YAAY,CAAC,CAAC;AAC3D,QAAI,MAAM,QAAQ,KAAK,WAAS,KAAK,UAAU,MAAM,YAAY,CAAC,CAAC,MAAM,QAAQ;AAC/E,YAAM,IAAI,MAAM,sBAAsB,MAAM,OAAO,WAAW,4EAA4E;AAAA,EAC9I;AACA,SAAO,SAAS,IAAI,WAAS,MAAM,MAAM;AAC3C;;;ACrCO,SAAS,6BAA6B,QAA0C;AACrF,MAAI,OAAO,SAAS,UAAW,QAAO,EAAE,MAAM,UAAmB;AACjE,MAAI,OAAO,SAAS,iBAAkB,QAAO;AAAA,IAC3C,MAAM;AAAA,IACN,SAAS,OAAO;AAAA,IAChB,gBAAgB,OAAO,OAAO;AAAA,IAC9B,SAAS;AAAA,MAAE,cAAc,OAAO;AAAA,MAAqB,IAAI,OAAO,OAAO;AAAA,MACrE,UAAU,OAAO,OAAO;AAAA,MAAgB,QAAQ,OAAO,OAAO;AAAA,IAAO;AAAA,EACzE;AACA,SAAO,OAAO,UAAU;AAAA,IACtB,MAAM;AAAA,IAA0B,SAAS,OAAO;AAAA,IAAS,SAAS,OAAO;AAAA,EAC3E,IAAI,EAAE,MAAM,SAAkB,SAAS,OAAO,QAAQ;AACxD;;;AChBA,SAAQ,KAAAG,UAAQ;AAChB,SAAQ,4BAAAC,iCAA+B;AAGvC,SAAQ,2CAA6E;AAO9E,SAAS,6BAA6B,OAA6J;AACxM,QAAM,UAAQ,oCAAoC,MAAM,OAAO,GAAE,QAAM,uBAAuB,MAAM,YAAY,GAAE,UAAQ,MAAM;AAChI,MAAG,QAAQ,OAAK,QAAQ,QAAQ,MAAI,QAAQ,aAAW,QAAQ,QAAQ,YAAU,QAAQ,gBAAc,QAAQ,QAAQ,eAAa,MAAM,gBAAc,QAAQ,eAC5J,YAAY,QAAQ,WAAW,MAAI,QAAQ,mBAAiB,YAAY,MAAM,MAAM,OAAO,UAAM,KAAK,MAAM,eAAa,QAAQ,EAAE,IAAI,UAAM,KAAK,KAAK,CAAC,MAAI,QAAQ;AACtK,UAAM,IAAI,MAAM,yEAAyE;AAC3F,MAAG,QAAQ,WAAW,SAAO,IAAI,OAAM,IAAI,MAAM,yFAAyF;AAC1I,aAAU,UAAU,QAAQ,YAAW;AAAC,UAAM,OAAK,QAAQ,MAAM,KAAK,CAAAC,UAAMA,MAAK,OAAK,OAAO,MAAM;AAAE,QAAG,CAAC,QAAM,KAAK,UAAQ,QAAQ,MAAM,OAAM,IAAI,MAAM,qEAAqE;AAC7N,QAAG,OAAO,cAAY,KAAK,OAAM,IAAI,MAAM,4FAA4F;AAAA,EAAE;AAC3I,MAAG,QAAQ,eAAc;AAAC,QAAG,CAAC,MAAM,cAAc,OAAM,IAAI,MAAM,gEAAgE;AAAE,UAAM,OAAK,4BAA4B,MAAM,cAAc,IAAI,GAAE,WAASC,0BAAyBC,GAAE,OAAO,EAAC,UAASA,GAAE,QAAQ,GAAE,QAAOA,GAAE,QAAQ,EAAC,CAAC,EAAE,OAAO,EAAE,MAAM,MAAM,cAAc,QAAQ,CAAC;AAAE,QAAG,KAAK,WAAS,eAAa,KAAK,OAAK,QAAQ,cAAc,KAAK,MAAI,KAAK,gBAAc,QAAQ,cAAc,KAAK,eAAa,SAAS,SAAS,OAAK,QAAQ,cAAc,SAAS,MAAI,SAAS,OAAO,gBAAc,QAAQ,cAAc,SAAS,eAAa,SAAS,SAAS,SAAS,kBAAgB,KAAK,MAAI,YAAY,SAAS,SAAS,OAAO,MAAI,YAAY,QAAQ,OAAO,KAAG,YAAY,SAAS,SAAS,UAAU,MAAI,YAAY,QAAQ,UAAU,KAAG,YAAY,QAAQ,aAAa,MAAI,YAAY,KAAK,QAAQ,IAAI,UAAM,EAAC,UAAS,IAAI,IAAG,QAAO,IAAI,YAAU,CAAC,EAAC,EAAE,CAAC,EAAE,OAAM,IAAI,MAAM,iFAAiF;AAAE,UAAM,SAAO,SAAS,SAAS,YAAW,WAAS,QAAQ,iBAAe,QAAQ,eAAe,QAAQ,IAAI,aAAS,EAAC,QAAO,OAAO,QAAO,MAAK,OAAO,MAAK,WAAU,OAAO,UAAS,EAAE,IAAE,QAAQ,WAAW,IAAI,aAAS,EAAC,QAAO,OAAO,QAAO,MAAK,OAAO,MAAK,WAAU,OAAO,UAAS,EAAE;AAAE,QAAG,OAAO,WAAS,SAAS,UAAQ,OAAO,KAAK,CAAC,QAAO,UAAQ,YAAY,MAAM,MAAI,YAAY,SAAS,KAAK,CAAC,CAAC,EAAE,OAAM,IAAI,MAAM,4FAA4F;AAAA,EAAE,OAC5+C;AACL,QAAG,QAAQ,cAAc,KAAK,SAAK,CAAC,QAAQ,QAAQ,KAAK,YAAQ,OAAO,OAAK,IAAI,QAAQ,CAAC,EAAE,OAAM,IAAI,MAAM,gEAAgE;AAC5K,eAAU,OAAO,QAAQ,cAAc,+BAA8B,MAAM,IAAI,MAAM;AACrF,UAAM,WAAS,QAAQ,WAAW,IAAI,eAAW;AAAC,YAAM,MAAI,MAAM,QAAQ,KAAK,CAAAC,SAAKA,KAAI,gBAAc,UAAU,eAAa,YAAYA,KAAI,WAAS,EAAC,IAAGA,KAAI,IAAG,UAASA,KAAI,SAAQ,aAAYA,KAAI,YAAW,CAAC,MAAI,YAAY,UAAU,OAAO,CAAC;AAAE,UAAG,CAAC,IAAI,OAAM,IAAI,MAAM,mEAAmE;AAAE,aAAO;AAAA,IAAI,CAAC;AAC/V,QAAG,QAAQ,cAAc,KAAK,SAAK,CAAC,SAAS,KAAK,SAAK,IAAI,OAAK,IAAI,QAAQ,CAAC,EAAE,OAAM,IAAI,MAAM,+CAA+C;AAC9I,UAAM,aAAW,SAAS,IAAI,UAAM;AAAA,MAAC,SAAQ,IAAI,WAAS,EAAC,IAAG,IAAI,IAAG,UAAS,IAAI,SAAQ,aAAY,IAAI,YAAW;AAAA,MAAE,aAAY,IAAI;AAAA,MACrI,mBAAkB,YAAY,EAAC,YAAW,IAAI,aAAY,UAAS,QAAQ,cAAc,KAAK,SAAK,IAAI,aAAW,IAAI,EAAE,GAAG,UAAQ,CAAC,EAAC,CAAC;AAAA,MAAE,QAAO;AAAA,MAAiB,YAAW,CAAC;AAAA,IAAC,EAAE;AACjL,QAAG,YAAY,UAAU,MAAI,YAAY,QAAQ,UAAU,EAAE,OAAM,IAAI,MAAM,oGAAoG;AACjL,eAAU,OAAO,MAAM,QAAQ,KAAG,CAAC,QAAQ,QAAQ,KAAK,YAAQ,OAAO,OAAK,IAAI,MAAI,OAAO,YAAU,IAAI,WAAS,YAAY,MAAM,MAAI,IAAI,WAAW,EAAE,OAAM,IAAI,MAAM,qEAAqE;AAAA,EAC9O;AACA,aAAU,OAAO,MAAM,QAAQ,KAAG,CAAC,QAAQ,QAAQ,KAAK,YAAQ,OAAO,OAAK,IAAI,MAAI,OAAO,YAAU,IAAI,WAAS,YAAY,MAAM,MAAI,IAAI,WAAW,EAAE,OAAM,IAAI,MAAM,qEAAqE;AAC9O,SAAO;AACT;;;AC/BA,SAAS,KAAAC,UAAS;AAElB;AAAA,EAAS;AAAA,EAAmC;AAAA,EAC1C;AAAA,EAAmC;AAAA,EAAiC;AAAA,EACpE;AAAA,EAA0B;AAAA,OAAiC;AAG7D,IAAMC,MAAKC,GAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG;AACpC,IAAM,mCAAmCA,GAAE,OAAO;AAAA,EACvD,YAAWA,GAAE,OAAO,EAAC,QAAOA,GAAE,KAAK,CAAC,SAAQ,UAAS,cAAc,CAAC,GAAE,cAAaD,KAAG,WAAUA,IAAE,CAAC,EAAE,OAAO;AAAA,EAC5G,gBAAeC,GAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG;AAAA,EAAE,gBAAe;AAAA,EACzD,aAAYA,GAAE,OAAO,EAAE,MAAM,gBAAgB,EAAE,SAAS;AAAA,EACxD,aAAYA,GAAE,MAAM,iCAAiC,EAAE,IAAI,GAAI;AAAA,EAAE,QAAOA,GAAE,MAAM,4BAA4B,EAAE,IAAI,GAAG;AAAA,EACrH,MAAKA,GAAE,MAAMA,GAAE,OAAO;AAAA,IAAC,YAAWA,GAAE,OAAO,EAAC,QAAOA,GAAE,KAAK,CAAC,SAAQ,UAAS,cAAc,CAAC,GAAE,cAAaD,KAAG,WAAUA,IAAE,CAAC,EAAE,OAAO;AAAA,IACjI,UAAS;AAAA,IAAyB,QAAO;AAAA,IAA0B,WAAUC,GAAE,MAAM,yBAAyB;AAAA,IAC9G,aAAYA,GAAE,MAAM,yBAAyB;AAAA,IAAE,UAASA,GAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC;AAAA,IAAE,QAAOA,GAAE,QAAQ;AAAA,IAClG,aAAYA,GAAE,IAAI,SAAS;AAAA,IAAE,aAAYA,GAAE,OAAO,EAAE,MAAM,gBAAgB;AAAA,EAAC,CAAC,EAAE,OAAO,CAAC,EAAE,IAAI,GAAI;AAAA,EAClG,aAAYA,GAAE,MAAM,iCAAiC,EAAE,IAAI,GAAI;AAAA,EAAE,WAAUA,GAAE,MAAM,+BAA+B,EAAE,IAAI,GAAI;AAAA,EAC5H,SAAQA,GAAE,MAAM,6BAA6B,EAAE,IAAI,GAAI;AACzD,CAAC,EAAE,OAAO;AAEH,IAAM,0CAAwCA,GAAE,OAAO;AAAA,EAAC,QAAOD;AAAA,EAAG,qBAAoBA;AAAA,EAC3F,mBAAkBA,IAAG,SAAS;AAAC,CAAC,EAAE,OAAO;AAIpC,IAAM,2CAAN,MAA+C;AAAA,EACpD,YAA6B,SAA0E;AAA1E;AAC3B,UAAM,MAAI,IAAI,IAAI,QAAQ,WAAW,oBAAoB;AACzD,QAAG,CAAC,CAAC,SAAQ,QAAQ,EAAE,SAAS,IAAI,QAAQ,KAAG,IAAI,YAAU,IAAI,YAAU,IAAI,UAAQ,IAAI,QAAM,CAAC,QAAQ,OAAO,KAAK,KAAG,CAAC,QAAQ,OAAO,KAAK;AAC5I,YAAM,IAAI,MAAM,yEAAyE;AAAA,EAC7F;AAAA,EAJ6B;AAAA,EAK7B,MAAM,KAAK,OAA6D,QAAoB;AAC1F,UAAM,OAAK,wCAAwC,MAAM,EAAC,GAAG,OAAM,QAAO,KAAK,QAAQ,OAAM,CAAC;AAC9F,UAAM,EAAC,UAAS,MAAK,IAAE,MAAM;AAAA,MAAmB,KAAK,QAAQ,SAAO;AAAA,MAClE,IAAI,KAAK,QAAQ,WAAW,sBAAsB,QAAQ,OAAM,EAAE,CAAC;AAAA,MACnE,EAAC,QAAO,QAAO,UAAS,SAAQ,SAAQ,EAAC,eAAc,UAAU,KAAK,QAAQ,MAAM,IAAG,sBAAqB,KAAK,QAAQ,QAAO,gBAAe,mBAAkB,GAAE,MAAK,KAAK,UAAU,IAAI,GAAE,OAAM;AAAA,MACnM,CAAC,SAAQ,OAAM,YAAU,IAAI,MAAM,OAAO;AAAA,IAAC;AAC7C,QAAG,CAAC,SAAS,GAAG,OAAM,IAAI,MAAM,qFAAqF;AACrH,UAAM,YAAU,iCAAiC,MAAM,KAAK;AAC5D,QAAG,UAAU,WAAW,iBAAe,KAAK,oBAAoB,OAAM,IAAI,MAAM,kDAAkD;AAClI,WAAO;AAAA,EACT;AACF;","names":["z","z","z","z","Hash","Id","z","value","z","Id","z","Hash","Content","z","verifyExperimentEvidence","task","verifyExperimentEvidence","z","pin","z","Id","z"]}
|
|
@@ -11,6 +11,9 @@ import {
|
|
|
11
11
|
canonicalSha256,
|
|
12
12
|
readBoundedJsonResponse
|
|
13
13
|
} from "./chunk-B3ZHJ2KK.js";
|
|
14
|
+
import {
|
|
15
|
+
DEFAULT_API_BASE_URL
|
|
16
|
+
} from "./chunk-QYWPNNP3.js";
|
|
14
17
|
|
|
15
18
|
// src/model-projects.ts
|
|
16
19
|
import { z as z2 } from "zod";
|
|
@@ -54,8 +57,7 @@ var TrainingGpuCatalogScopeSchema = z.object({
|
|
|
54
57
|
countryCodes: z.array(z.string().regex(/^[A-Z]{2}$/)).min(1).max(300),
|
|
55
58
|
cudaVersions: z.array(z.string().regex(/^\d+\.\d+$/)).min(1).max(100),
|
|
56
59
|
dataCenterId: Id.nullable(),
|
|
57
|
-
minimumDiskGb: z.number().int().positive()
|
|
58
|
-
priceBasis: z.literal("provider_catalog_per_gpu_rate_times_count")
|
|
60
|
+
minimumDiskGb: z.number().int().positive()
|
|
59
61
|
}).strict().nullable()
|
|
60
62
|
}).strict();
|
|
61
63
|
var TrainingGpuCatalogSchema = z.object({
|
|
@@ -64,7 +66,7 @@ var TrainingGpuCatalogSchema = z.object({
|
|
|
64
66
|
expiresAt: z.string().datetime({ offset: true }),
|
|
65
67
|
workerImageDigest: z.string().regex(/^sha256:[a-f0-9]{64}$/),
|
|
66
68
|
supportedLoraRanks: z.array(z.number().int().positive()),
|
|
67
|
-
pricingBasis: z.
|
|
69
|
+
pricingBasis: z.literal("retail_allocation_hourly_before_credits"),
|
|
68
70
|
scope: TrainingGpuCatalogScopeSchema.optional(),
|
|
69
71
|
offerings: z.array(z.object({
|
|
70
72
|
availabilityId: Id,
|
|
@@ -75,9 +77,8 @@ var TrainingGpuCatalogSchema = z.object({
|
|
|
75
77
|
gpuCount: z.number().int().positive(),
|
|
76
78
|
gpuMemoryGb: z.number().positive(),
|
|
77
79
|
stockStatus: z.enum(["High", "Medium", "Low"]),
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
totalHourlyUsd: z.number().nonnegative()
|
|
80
|
+
/** Whole-allocation retail rate, including attached disk. Null means unpriced. */
|
|
81
|
+
hourlyUsd: z.number().finite().nonnegative().nullable()
|
|
81
82
|
}).strict()).max(1e3)
|
|
82
83
|
}).strict();
|
|
83
84
|
async function parseAndVerifyTrainingGpuCatalog(raw, query) {
|
|
@@ -89,7 +90,7 @@ async function parseAndVerifyTrainingGpuCatalog(raw, query) {
|
|
|
89
90
|
return catalog;
|
|
90
91
|
}
|
|
91
92
|
const scope = catalog.scope;
|
|
92
|
-
if (!scope ||
|
|
93
|
+
if (!scope || canonicalJson(scope.query) !== canonicalJson(query) || scope.requestHash !== await canonicalSha256(query) || scope.qualification === "unsupported" !== (scope.reason !== null) || (scope.qualification === "unsupported" ? scope.provider !== null || catalog.offerings.length > 0 : !scope.provider) || new Set(catalog.offerings.map((item) => item.provider)).size > 1 || catalog.offerings.some((item) => item.gpuCount !== query.gpuCount || item.dataCenterId !== scope.provider?.dataCenterId) || new Set(catalog.offerings.map((item) => item.availabilityId)).size !== catalog.offerings.length)
|
|
93
94
|
throw new OpenPondProtocolError("training_gpu_catalog_scope_mismatch", "The GPU offers do not match this workspace and workload.");
|
|
94
95
|
return catalog;
|
|
95
96
|
}
|
|
@@ -378,7 +379,7 @@ function headersRecord(headers) {
|
|
|
378
379
|
}
|
|
379
380
|
function createModelProjectsClient(input) {
|
|
380
381
|
const fetchImpl = input.fetch ?? fetch;
|
|
381
|
-
const baseUrl = input.baseUrl.replace(/\/$/, "");
|
|
382
|
+
const baseUrl = (input.baseUrl ?? DEFAULT_API_BASE_URL).replace(/\/$/, "");
|
|
382
383
|
async function request(pathname, init) {
|
|
383
384
|
const configuredHeaders = typeof input.headers === "function" ? await input.headers() : input.headers ?? {};
|
|
384
385
|
const response = await fetchImpl(`${baseUrl}${pathname}`, {
|
|
@@ -496,4 +497,4 @@ export {
|
|
|
496
497
|
OpenPondModelProjectApiError,
|
|
497
498
|
createModelProjectsClient
|
|
498
499
|
};
|
|
499
|
-
//# sourceMappingURL=chunk-
|
|
500
|
+
//# sourceMappingURL=chunk-WJZHSIGD.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/model-projects.ts","../src/training-compute-selection.ts"],"sourcesContent":["import { DEFAULT_API_BASE_URL } from \"./endpoints.js\";\nimport { z } from \"zod\";\nimport { TrainingGpuSelectionSchema } from \"./training-compute-selection.js\";\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 readBoundedJsonResponse,\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 managedGpuSelection: TrainingGpuSelectionSchema.optional(),\n continuationAdapterMode: z.enum([\"residual_append\", \"shared\", \"sequential_merge\"]).optional(),\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;\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 ?? DEFAULT_API_BASE_URL).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 = await readBoundedJsonResponse(\n response,\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","import { z } from \"zod\";\nimport { canonicalJson, canonicalSha256, OpenPondProtocolError } from \"./protocol.js\";\n\nconst Id = z.string().trim().min(1).max(191);\nconst Hash = z.string().regex(/^[a-f0-9]{64}$/);\nconst OpaqueProvider = z.string().min(1).max(191).regex(/^[A-Za-z0-9][A-Za-z0-9._:/-]*$/);\n\nexport const TrainingGpuSelectionSchema = z.discriminatedUnion(\"mode\", [\n z.object({ mode: z.literal(\"automatic\"), objective: z.enum([\"balanced\", \"fast\", \"economical\"]), gpuCount: z.union([z.literal(1), z.literal(2)]).optional() }).strict(),\n z.object({ mode: z.literal(\"manual\"), availabilityId: Id, gpuType: z.string().trim().min(1).max(256), gpuCount: z.union([z.literal(1), z.literal(2)]).optional() }).strict(),\n]);\n\n/** This token binds a reviewed workload and price, without reserving resources\n * or approving the estimate's recommended budget. */\nexport const TrainingEstimateReviewSchema = z.object({\n estimateId: Id,\n inputHash: Hash,\n requestHash: Hash,\n pricingVersion: Id,\n expiresAt: z.string().datetime({ offset: true }),\n token: z.string().min(1).max(8192),\n}).strict();\n\nexport type TrainingGpuSelection = z.infer<typeof TrainingGpuSelectionSchema>;\nexport type TrainingEstimateReview = z.infer<typeof TrainingEstimateReviewSchema>;\n\n/** A live catalog query is an eligibility read, never a training approval. */\nexport const TrainingGpuCatalogQuerySchema = z.object({\n teamId: Id,\n modelId: z.string().trim().min(1).max(256),\n modelRevision: z.string().trim().min(1).max(256),\n tokenizerRevision: z.string().trim().min(1).max(256),\n chatTemplateHash: Hash,\n method: z.enum([\"sft\", \"grpo\"]),\n loraRank: z.number().int().min(1).max(256),\n gpuCount: z.union([z.literal(1), z.literal(2)]),\n}).strict();\nexport type TrainingGpuCatalogQuery = z.infer<typeof TrainingGpuCatalogQuerySchema>;\n\nexport const TrainingGpuCatalogScopeSchema = z.object({\n query: TrainingGpuCatalogQuerySchema,\n requestHash: Hash,\n qualification: z.enum([\"requires_preparation\", \"unsupported\"]),\n reason: z.enum([\"model_not_supported\", \"lora_rank_not_supported\", \"gpu_count_not_qualified\", \"provider_not_supported\"]).nullable(),\n provider: z.object({\n accountScopeId: Id,\n product: z.literal(\"POD\"), cloud: z.literal(\"SECURE\"),\n countryCodes: z.array(z.string().regex(/^[A-Z]{2}$/)).min(1).max(300),\n cudaVersions: z.array(z.string().regex(/^\\d+\\.\\d+$/)).min(1).max(100),\n dataCenterId: Id.nullable(),\n minimumDiskGb: z.number().int().positive(),\n }).strict().nullable(),\n}).strict();\nexport type TrainingGpuCatalogScope = z.infer<typeof TrainingGpuCatalogScopeSchema>;\n\nexport const TrainingGpuCatalogSchema = z.object({\n schemaVersion: z.literal(\"openpond.trainingGpuCatalog.v1\"),\n observedAt: z.string().datetime({ offset: true }),\n expiresAt: z.string().datetime({ offset: true }),\n workerImageDigest: z.string().regex(/^sha256:[a-f0-9]{64}$/),\n supportedLoraRanks: z.array(z.number().int().positive()),\n pricingBasis: z.literal(\"retail_allocation_hourly_before_credits\"),\n scope: TrainingGpuCatalogScopeSchema.optional(),\n offerings: z.array(z.object({\n availabilityId: Id, gpuType: z.string().min(1).max(256), provider: OpaqueProvider,\n region: z.string().min(1), dataCenterId: z.string().nullable(),\n gpuCount: z.number().int().positive(), gpuMemoryGb: z.number().positive(),\n stockStatus: z.enum([\"High\", \"Medium\", \"Low\"]),\n /** Whole-allocation retail rate, including attached disk. Null means unpriced. */\n hourlyUsd: z.number().finite().nonnegative().nullable(),\n }).strict()).max(1000),\n}).strict();\nexport type TrainingGpuCatalog = z.infer<typeof TrainingGpuCatalogSchema>;\n\nexport async function parseAndVerifyTrainingGpuCatalog(raw: unknown, query?: TrainingGpuCatalogQuery) {\n const catalog = TrainingGpuCatalogSchema.parse(raw);\n if (Date.parse(catalog.expiresAt) <= Date.parse(catalog.observedAt) ||\n Date.parse(catalog.expiresAt) <= Date.now())\n throw new OpenPondProtocolError(\"training_gpu_catalog_expired\", \"Refresh GPU availability before reviewing this run.\");\n if (!query) {\n if (catalog.scope) throw new OpenPondProtocolError(\"training_gpu_catalog_scope_mismatch\", \"An overview read returned an unrequested workload.\");\n return catalog;\n }\n const scope = catalog.scope;\n if (!scope ||\n canonicalJson(scope.query) !== canonicalJson(query) ||\n scope.requestHash !== await canonicalSha256(query) ||\n (scope.qualification === \"unsupported\") !== (scope.reason !== null) ||\n (scope.qualification === \"unsupported\" ? scope.provider !== null || catalog.offerings.length > 0 : !scope.provider) ||\n new Set(catalog.offerings.map(item => item.provider)).size > 1 ||\n catalog.offerings.some(item => item.gpuCount !== query.gpuCount ||\n item.dataCenterId !== scope.provider?.dataCenterId) ||\n new Set(catalog.offerings.map(item => item.availabilityId)).size !== catalog.offerings.length)\n throw new OpenPondProtocolError(\"training_gpu_catalog_scope_mismatch\", \"The GPU offers do not match this workspace and workload.\");\n return catalog;\n}\n\nexport function createTrainingGpuCatalogClient(request: (path: string, init?: RequestInit) => Promise<unknown>) {\n return {\n async gpuCatalog(raw?: TrainingGpuCatalogQuery) {\n const query = raw === undefined ? undefined : TrainingGpuCatalogQuerySchema.parse(raw);\n const params = query ? new URLSearchParams(Object.entries(query).map(([key, value]) => [key, String(value)])) : null;\n const response = await request(`/v1/training/gpu-catalog${params ? `?${params}` : \"\"}`);\n const value = response && typeof response === \"object\" && \"catalog\" in response ? response.catalog : response;\n return parseAndVerifyTrainingGpuCatalog(value, query);\n },\n };\n}\n"],"mappings":"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","names":["z","value","z"]}
|
|
@@ -3,18 +3,21 @@ import {
|
|
|
3
3
|
TasksetPackageSchema,
|
|
4
4
|
tasksetPackageRewardBinding,
|
|
5
5
|
validateTasksetPackage
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-K4WU4JOP.js";
|
|
7
7
|
import {
|
|
8
8
|
TasksetCatalogReleaseRefSchema
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-VE5JD5FN.js";
|
|
10
10
|
import {
|
|
11
11
|
HostedModelProjectSummarySchema,
|
|
12
12
|
HostedModelProjectSyncSchema,
|
|
13
13
|
HostedModelProjectTrainingSetupSchema
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-WJZHSIGD.js";
|
|
15
15
|
import {
|
|
16
16
|
contentHash
|
|
17
17
|
} from "./chunk-H3JZ3P5T.js";
|
|
18
|
+
import {
|
|
19
|
+
DEFAULT_API_BASE_URL
|
|
20
|
+
} from "./chunk-QYWPNNP3.js";
|
|
18
21
|
|
|
19
22
|
// src/taskset-package-client.ts
|
|
20
23
|
import { z } from "zod";
|
|
@@ -85,7 +88,7 @@ var OpenPondTasksetPackageError = class extends Error {
|
|
|
85
88
|
var OpenPondTasksetPackageClient = class {
|
|
86
89
|
#options;
|
|
87
90
|
constructor(options) {
|
|
88
|
-
const url = new URL(options.baseUrl);
|
|
91
|
+
const url = new URL(options.baseUrl ?? DEFAULT_API_BASE_URL);
|
|
89
92
|
if (!["http:", "https:"].includes(url.protocol) || url.username || url.password || url.search || url.hash || !options.apiKey.trim() || !options.teamId.trim()) throw new Error("Taskset package client requires a clean HTTP(S) endpoint and workspace credentials.");
|
|
90
93
|
this.#options = { ...options, baseUrl: url.toString().replace(/\/+$/, "") };
|
|
91
94
|
}
|
|
@@ -188,4 +191,4 @@ export {
|
|
|
188
191
|
OpenPondTasksetPackageError,
|
|
189
192
|
OpenPondTasksetPackageClient
|
|
190
193
|
};
|
|
191
|
-
//# sourceMappingURL=chunk-
|
|
194
|
+
//# sourceMappingURL=chunk-WPTFJZ4L.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/taskset-package-client.ts"],"sourcesContent":["import { DEFAULT_API_BASE_URL } from \"./endpoints.js\";\nimport { z } from \"zod\";\nimport { TasksetCatalogReleaseRefSchema } from \"./taskset-catalog.js\";\nimport { MAX_TASKSET_PACKAGE_BYTES, TasksetPackageSchema, tasksetPackageRewardBinding, validateTasksetPackage, type TasksetPackage } from \"./taskset-package-contracts.js\";\nimport { HostedModelProjectSummarySchema, HostedModelProjectSyncSchema, HostedModelProjectTrainingSetupSchema } from \"./model-projects.js\";\nimport { contentHash } from \"@openpond/harness\";\nimport { learningRef } from \"@openpond/evals/learning\";\n\nconst IdSchema = z.string().trim().min(1).max(500);\nconst HashSchema = z.string().regex(/^[a-f0-9]{64}$/);\n/** Configuration and package selection share one hosted commit. Package-owned\n * references cannot accidentally contain a Desktop-local content hash. */\nexport const TasksetPackageModelConfigurationSchema = HostedModelProjectSyncSchema.pick({\n portableProjectId: true, name: true, objective: true, defaultBaseModel: true, defaultDestinationId: true,\n sourceRevision: true, sourceUpdatedAt: true,\n}).extend({ trainingSetup: HostedModelProjectTrainingSetupSchema.omit({ tasksetRef: true, rewardBindingRef: true, tasksetRelease: true }) }).strict();\nexport const TasksetPackagePublicationSchema = z.object({\n schemaVersion: z.literal(\"openpond.tasksetPackagePublication.v1\"),\n operationId: IdSchema, modelProjectId: IdSchema, expectedProjectEtag: HashSchema.nullable(),\n name: z.string().trim().min(1).max(200), description: z.string().max(5_000),\n buildIntent: z.enum([\"demonstrations\", \"preferences\", \"verifiable_reward\", \"rubric\", \"discovery\"]),\n methodHint: z.enum([\"sft\", \"dpo\", \"grpo\", \"ppo\"]).nullable(), package: TasksetPackageSchema,\n modelConfiguration: TasksetPackageModelConfigurationSchema.optional(),\n evaluationPackage: TasksetPackageSchema.optional(),\n selection: z.enum([\"select\", \"attach\"]).optional(),\n}).strict().refine(value => value.selection !== \"attach\" || value.modelConfiguration === undefined, \"Attachment-only publication cannot replace Model configuration.\")\n .refine(value => !value.evaluationPackage || (value.modelConfiguration !== undefined\n && value.modelConfiguration.trainingSetup.evaluationTasksetRef != null\n && contentHash(value.modelConfiguration.trainingSetup.evaluationTasksetRef) === contentHash(learningRef(value.evaluationPackage.taskset))),\n \"Evaluation package must match the selected immutable evaluation in Model configuration.\");\nexport const TasksetPackageReceiptSchema = z.object({\n schemaVersion: z.literal(\"openpond.tasksetPackageReceipt.v1\"),\n teamId: IdSchema, modelProjectId: IdSchema, operationId: IdSchema,\n taskset: TasksetCatalogReleaseRefSchema, packageHash: HashSchema,\n hostedTasksetId: IdSchema, projectEtag: HashSchema,\n project: HostedModelProjectSummarySchema.optional(),\n selection: z.enum([\"select\", \"attach\"]).optional(),\n evaluation: z.object({ taskset: TasksetCatalogReleaseRefSchema, packageHash: HashSchema, hostedTasksetId: IdSchema }).strict().optional(),\n}).strict();\nexport const TasksetPackageReadbackSchema = z.object({\n schemaVersion: z.literal(\"openpond.tasksetPackageReadback.v1\"),\n teamId: IdSchema, modelProjectId: IdSchema, package: TasksetPackageSchema,\n}).strict();\nexport const TasksetReleasePackageReadbackSchema=z.object({\n schemaVersion:z.literal(\"openpond.tasksetReleasePackageReadback.v1\"),\n teamId:IdSchema,release:TasksetCatalogReleaseRefSchema,package:TasksetPackageSchema,\n}).strict();\nexport type TasksetPackagePublication = z.infer<typeof TasksetPackagePublicationSchema>;\nexport type TasksetPackageReceipt = z.infer<typeof TasksetPackageReceiptSchema>;\nexport type TasksetPackageModelConfiguration = z.infer<typeof TasksetPackageModelConfigurationSchema>;\n\nexport class OpenPondTasksetPackageError extends Error {\n constructor(readonly status: number, readonly code: string, message: string) { super(message); this.name = \"OpenPondTasksetPackageError\"; }\n}\n\n/** Private package operations are explicitly scoped to an authorized Model.\n * Catalog inventory remains metadata-only and never calls this client itself. */\nexport class OpenPondTasksetPackageClient {\n readonly #options: { baseUrl: string; apiKey: string; teamId: string; fetch?: typeof globalThis.fetch };\n constructor(options: { baseUrl?: string; apiKey: string; teamId: string; fetch?: typeof globalThis.fetch }) {\n const url = new URL(options.baseUrl ?? DEFAULT_API_BASE_URL);\n if (![\"http:\", \"https:\"].includes(url.protocol) || url.username || url.password || url.search || url.hash || !options.apiKey.trim() || !options.teamId.trim()) throw new Error(\"Taskset package client requires a clean HTTP(S) endpoint and workspace credentials.\");\n this.#options = { ...options, baseUrl: url.toString().replace(/\\/+$/, \"\") };\n }\n\n async publish(input: TasksetPackagePublication, options: { signal?: AbortSignal } = {}): Promise<TasksetPackageReceipt> {\n const request = TasksetPackagePublicationSchema.parse(input);\n validateTasksetPackage(request.package);\n if (request.evaluationPackage) validateTasksetPackage(request.evaluationPackage);\n // A shared training/evaluation release needs one complete byte graph. Keep\n // the original request for exact evaluation receipt validation; the server\n // resolves an identical selected evaluation from the training package.\n const { evaluationPackage, ...trainingPublication } = request;\n const transport = evaluationPackage?.contentHash === request.package.contentHash\n ? trainingPublication : request;\n const receipt = TasksetPackageReceiptSchema.parse(await this.#request(\"\", \"POST\", transport, options.signal));\n const release = request.package.taskset;\n if (receipt.teamId !== this.#options.teamId || receipt.modelProjectId !== request.modelProjectId || receipt.operationId !== request.operationId\n || receipt.packageHash !== request.package.contentHash || receipt.taskset.id !== release.id || receipt.taskset.revision !== release.revision || receipt.taskset.contentHash !== release.contentHash) {\n throw new OpenPondTasksetPackageError(502, \"package_receipt_mismatch\", \"Taskset publication receipt did not match the requested package and owner.\");\n }\n if (request.selection !== undefined && receipt.selection !== request.selection) throw new OpenPondTasksetPackageError(502, \"package_receipt_mismatch\", \"Taskset publication did not retain its selection mode.\");\n if (request.evaluationPackage && (!receipt.evaluation\n || receipt.evaluation.packageHash !== request.evaluationPackage.contentHash\n || contentHash(receipt.evaluation.taskset) !== contentHash(learningRef(request.evaluationPackage.taskset)))) {\n throw new OpenPondTasksetPackageError(502, \"package_receipt_mismatch\", \"Taskset publication did not retain the complete selected evaluation package.\");\n }\n if (request.selection === \"attach\" && receipt.projectEtag !== request.expectedProjectEtag) throw new OpenPondTasksetPackageError(502, \"package_receipt_mismatch\", \"Attaching a historical Taskset changed the Model configuration.\");\n if (request.modelConfiguration) {\n const expected = request.modelConfiguration;\n const project = receipt.project;\n const binding = tasksetPackageRewardBinding(request.package);\n const setup = HostedModelProjectTrainingSetupSchema.parse({ ...expected.trainingSetup, tasksetRef: learningRef(release),\n rewardBindingRef: binding ? learningRef(binding) : null,\n tasksetRelease: null });\n if (!project || project.teamId !== this.#options.teamId || project.etag !== receipt.projectEtag\n || ![project.id, project.portableProjectId].includes(request.modelProjectId)\n || project.portableProjectId !== expected.portableProjectId || project.name !== expected.name || project.objective !== expected.objective\n || project.sourceRevision !== expected.sourceRevision || Date.parse(project.sourceUpdatedAt) !== Date.parse(expected.sourceUpdatedAt)\n || contentHash(project.defaultBaseModel) !== contentHash(expected.defaultBaseModel) || project.defaultDestinationId !== expected.defaultDestinationId\n || contentHash(project.trainingSetup) !== contentHash(setup)) {\n throw new OpenPondTasksetPackageError(502, \"package_receipt_mismatch\", \"Taskset publication did not retain the requested Model configuration.\");\n }\n }\n return receipt;\n }\n\n /** Owner-authorized independent Dataset transfer. Callers retain private\n * bytes at the evaluator/server boundary, never in a policy-facing picker. */\n async getByRelease(reference:z.infer<typeof TasksetCatalogReleaseRefSchema>,options:{signal?:AbortSignal;expectedPackageHash?:string}={}):Promise<TasksetPackage> {\n const ref=TasksetCatalogReleaseRefSchema.parse(reference);\n const expectedPackageHash=options.expectedPackageHash===undefined?undefined:HashSchema.parse(options.expectedPackageHash);\n const response=TasksetReleasePackageReadbackSchema.parse(await this.#request(`/releases/${encodeURIComponent(ref.id)}/${ref.revision}/${ref.contentHash}/package`,\"GET\",undefined,options.signal));\n const value=validateTasksetPackage(response.package),release={id:value.taskset.id,revision:value.taskset.revision,contentHash:value.taskset.contentHash};\n if(response.teamId!==this.#options.teamId||contentHash(response.release)!==contentHash(ref)||contentHash(release)!==contentHash(ref)\n ||expectedPackageHash!==undefined&&value.contentHash!==expectedPackageHash)\n throw new OpenPondTasksetPackageError(502,\"package_readback_mismatch\",\"Independent Dataset package differs from the requested workspace or exact release.\");\n return value;\n }\n\n async get(modelProjectId: string, reference: z.infer<typeof TasksetCatalogReleaseRefSchema>, options: { signal?: AbortSignal; expectedPackageHash?: string } = {}): Promise<TasksetPackage> {\n const project = IdSchema.parse(modelProjectId);\n const ref = TasksetCatalogReleaseRefSchema.parse(reference);\n const expectedPackageHash = options.expectedPackageHash === undefined ? undefined : HashSchema.parse(options.expectedPackageHash);\n const response = TasksetPackageReadbackSchema.parse(await this.#request(`/${encodeURIComponent(project)}/${encodeURIComponent(ref.id)}/${ref.revision}/${ref.contentHash}`, \"GET\", undefined, options.signal));\n const taskset = response.package.taskset;\n if (response.teamId !== this.#options.teamId || response.modelProjectId !== project || taskset.id !== ref.id || taskset.revision !== ref.revision || taskset.contentHash !== ref.contentHash) throw new OpenPondTasksetPackageError(502, \"package_readback_mismatch\", \"Taskset package did not match the requested release and owner.\");\n if (expectedPackageHash !== undefined && response.package.contentHash !== expectedPackageHash) throw new OpenPondTasksetPackageError(502, \"package_readback_mismatch\", \"Taskset package did not match the saved publication receipt.\");\n return validateTasksetPackage(response.package);\n }\n\n async #request(path: string, method: string, body: unknown, signal?: AbortSignal): Promise<unknown> {\n const serialized = body === undefined ? undefined : JSON.stringify(body);\n if (serialized && new TextEncoder().encode(serialized).byteLength > MAX_TASKSET_PACKAGE_BYTES) throw new OpenPondTasksetPackageError(413, \"package_too_large\", \"Taskset publication exceeds the 64 MiB envelope.\");\n const response = await (this.#options.fetch ?? globalThis.fetch)(`${this.#options.baseUrl}/v1/taskset-packages${path}`, {\n method, headers: { Authorization: `Bearer ${this.#options.apiKey}`, \"X-OpenPond-Team-Id\": this.#options.teamId, Accept: \"application/json\", ...(serialized ? { \"Content-Type\": \"application/json\" } : {}) },\n body: serialized, signal, redirect: \"error\",\n });\n const reader = response.body?.getReader();\n if (!reader) throw new OpenPondTasksetPackageError(response.status, \"empty_response\", \"Taskset package response was empty.\");\n const decoder = new TextDecoder(\"utf-8\", { fatal: true });\n let bytes = 0;\n let text = \"\";\n try {\n while (true) {\n const chunk = await reader.read();\n if (chunk.done) break;\n bytes += chunk.value.byteLength;\n if (bytes > MAX_TASKSET_PACKAGE_BYTES) throw new OpenPondTasksetPackageError(413, \"package_too_large\", \"Taskset response exceeds the 64 MiB envelope.\");\n text += decoder.decode(chunk.value, { stream: true });\n }\n text += decoder.decode();\n } finally { await reader.cancel(); reader.releaseLock(); }\n const payload: unknown = JSON.parse(text);\n if (!response.ok) {\n const error = z.object({ code: z.string(), message: z.string() }).safeParse(payload);\n throw new OpenPondTasksetPackageError(response.status, error.success ? error.data.code : \"package_request_failed\", error.success ? error.data.message : `Taskset package request failed (${response.status}).`);\n }\n return payload;\n }\n}\n"],"mappings":"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","names":[]}
|
|
@@ -31,7 +31,7 @@ import {
|
|
|
31
31
|
hashCollectorEligibleBoundaries,
|
|
32
32
|
summarizeCollectorCoverage,
|
|
33
33
|
verifyConnectedRecordedExecution
|
|
34
|
-
} from "./chunk-
|
|
34
|
+
} from "./chunk-54BJJL7G.js";
|
|
35
35
|
import "./chunk-O6FKHAWN.js";
|
|
36
36
|
import {
|
|
37
37
|
AgentImportCommitRequestSchema,
|
|
@@ -49,22 +49,23 @@ import {
|
|
|
49
49
|
ConnectedStartingAssetsReceiptSchema,
|
|
50
50
|
ConnectedStartingAssetsRequestSchema,
|
|
51
51
|
verifyConnectedStartingAssetsReceipt
|
|
52
|
-
} from "./chunk-
|
|
53
|
-
import "./chunk-
|
|
54
|
-
import "./chunk-
|
|
52
|
+
} from "./chunk-ABOZV47D.js";
|
|
53
|
+
import "./chunk-BIQ5TG3T.js";
|
|
54
|
+
import "./chunk-BT6CC6QB.js";
|
|
55
55
|
import "./chunk-GWXJSBWR.js";
|
|
56
|
-
import "./chunk-
|
|
56
|
+
import "./chunk-7ZV626YS.js";
|
|
57
57
|
import {
|
|
58
58
|
ConnectedDatasetSourceRefSchema
|
|
59
|
-
} from "./chunk-
|
|
59
|
+
} from "./chunk-K4WU4JOP.js";
|
|
60
60
|
import "./chunk-TK3DXH7A.js";
|
|
61
|
-
import "./chunk-
|
|
61
|
+
import "./chunk-VE5JD5FN.js";
|
|
62
62
|
import "./chunk-QTNYXOJW.js";
|
|
63
63
|
import "./chunk-H3367ISL.js";
|
|
64
|
-
import "./chunk-
|
|
64
|
+
import "./chunk-WJZHSIGD.js";
|
|
65
65
|
import "./chunk-CL3IOOVL.js";
|
|
66
66
|
import "./chunk-B3ZHJ2KK.js";
|
|
67
67
|
import "./chunk-H3JZ3P5T.js";
|
|
68
|
+
import "./chunk-QYWPNNP3.js";
|
|
68
69
|
import "./chunk-YLJ4XMA6.js";
|
|
69
70
|
export {
|
|
70
71
|
AgentImportCommitRequestSchema,
|
package/dist/dataset-commerce.js
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import {
|
|
2
|
+
DEFAULT_API_BASE_URL
|
|
3
|
+
} from "./chunk-QYWPNNP3.js";
|
|
1
4
|
import "./chunk-YLJ4XMA6.js";
|
|
2
5
|
|
|
3
6
|
// src/dataset-commerce-files.ts
|
|
@@ -414,7 +417,7 @@ var OpenPondDatasetCommerceClient = class {
|
|
|
414
417
|
#options;
|
|
415
418
|
files;
|
|
416
419
|
constructor(options) {
|
|
417
|
-
const url = new URL(options.baseUrl);
|
|
420
|
+
const url = new URL(options.baseUrl ?? DEFAULT_API_BASE_URL);
|
|
418
421
|
if (!["https:", "http:"].includes(url.protocol) || url.username || url.password || url.search || url.hash)
|
|
419
422
|
throw new Error(
|
|
420
423
|
"Dataset commerce base URL must be an HTTP(S) endpoint without credentials, query, or fragment."
|