openpond-sdk 0.12.23 → 0.12.25

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (123) hide show
  1. package/PRODUCT_INTEGRATION.md +134 -0
  2. package/README.md +12 -1
  3. package/TASK_INGESTION.md +88 -86
  4. package/TRAINING_PROTOCOL.md +6 -2
  5. package/TRAINING_WORKFLOWS.md +16 -0
  6. package/dist/advanced-refiner-evaluations.js +3 -3
  7. package/dist/ai-sdk.js +224 -0
  8. package/dist/ai-sdk.js.map +1 -0
  9. package/dist/{chunk-NZRGRUYG.js → chunk-2OVNKPBZ.js} +17 -6
  10. package/dist/chunk-2OVNKPBZ.js.map +1 -0
  11. package/dist/{chunk-QIGMNB6M.js → chunk-3G3HUA32.js} +3 -3
  12. package/dist/{chunk-7G47YXQT.js → chunk-3MWFN7BA.js} +2 -2
  13. package/dist/{chunk-3BYFS4RO.js → chunk-47THZRUM.js} +5 -5
  14. package/dist/chunk-BRP3EBCR.js +245 -0
  15. package/dist/chunk-BRP3EBCR.js.map +1 -0
  16. package/dist/{chunk-BNBPKCIR.js → chunk-DDCR4KB5.js} +4 -4
  17. package/dist/{chunk-ZQ6QTYRE.js → chunk-GV6DEDBU.js} +10 -10
  18. package/dist/{chunk-ZQ6QTYRE.js.map → chunk-GV6DEDBU.js.map} +1 -1
  19. package/dist/{chunk-QCRNQMN4.js → chunk-IXFUYPGV.js} +2 -2
  20. package/dist/{chunk-Q4RGCEOI.js → chunk-JOMZJXGC.js} +3 -3
  21. package/dist/{chunk-OBI2MQYU.js → chunk-QRYEXPG7.js} +7 -7
  22. package/dist/{chunk-6EZAGTZG.js → chunk-RN5MK7NH.js} +4 -4
  23. package/dist/{chunk-GCUWJUUM.js → chunk-RTLJV4OS.js} +2 -2
  24. package/dist/{chunk-GBDBKGXW.js → chunk-T67LNKAK.js} +3 -3
  25. package/dist/{chunk-SP7DQEQM.js → chunk-XBFOFTK3.js} +5 -5
  26. package/dist/{chunk-AG6UJ3DI.js → chunk-YS7DF76T.js} +2 -2
  27. package/dist/{chunk-LEVXD73U.js → chunk-Z5APNTZE.js} +197 -190
  28. package/dist/chunk-Z5APNTZE.js.map +1 -0
  29. package/dist/connected-evidence.js +8 -8
  30. package/dist/dataset-workspaces.js +146 -85
  31. package/dist/dataset-workspaces.js.map +1 -1
  32. package/dist/experiment-evaluation-schedules.js +11 -11
  33. package/dist/experiments.js +15 -15
  34. package/dist/index.js +71 -44
  35. package/dist/index.js.map +1 -1
  36. package/dist/model-starter-catalog.js +2 -2
  37. package/dist/model-starters.js +2 -2
  38. package/dist/taskset-drafts.js +7 -7
  39. package/dist/taskset-packages.js +13 -13
  40. package/dist/training-bundle.js +12 -12
  41. package/dist/training.js +1936 -1809
  42. package/dist/training.js.map +1 -1
  43. package/dist/types/packages/sdk/src/ai-sdk.d.ts +6 -0
  44. package/dist/types/packages/sdk/src/ai-sdk.d.ts.map +1 -0
  45. package/dist/types/packages/sdk/src/candidate-evaluation-client.d.ts +21 -21
  46. package/dist/types/packages/sdk/src/dataset-task-ingestion.d.ts +8 -1
  47. package/dist/types/packages/sdk/src/dataset-task-ingestion.d.ts.map +1 -1
  48. package/dist/types/packages/sdk/src/dataset-workspace-client.d.ts +140 -140
  49. package/dist/types/packages/sdk/src/dataset-workspace-client.d.ts.map +1 -1
  50. package/dist/types/packages/sdk/src/dataset-workspace-error.d.ts +28 -0
  51. package/dist/types/packages/sdk/src/dataset-workspace-error.d.ts.map +1 -0
  52. package/dist/types/packages/sdk/src/dataset-workspaces.d.ts +1 -0
  53. package/dist/types/packages/sdk/src/dataset-workspaces.d.ts.map +1 -1
  54. package/dist/types/packages/sdk/src/experiment-client.d.ts +636 -636
  55. package/dist/types/packages/sdk/src/experiment-draft-storage.d.ts +124 -34
  56. package/dist/types/packages/sdk/src/experiment-draft-storage.d.ts.map +1 -1
  57. package/dist/types/packages/sdk/src/experiment-evaluation-schedules.d.ts +28 -28
  58. package/dist/types/packages/sdk/src/experiment-improvement-client.d.ts +1622 -1622
  59. package/dist/types/packages/sdk/src/experiment-run-details.d.ts +7 -7
  60. package/dist/types/packages/sdk/src/index.d.ts +13 -4
  61. package/dist/types/packages/sdk/src/index.d.ts.map +1 -1
  62. package/dist/types/packages/sdk/src/managed-decision-executions.d.ts +347 -347
  63. package/dist/types/packages/sdk/src/managed-neuron-training-executions.d.ts +242 -21
  64. package/dist/types/packages/sdk/src/managed-neuron-training-executions.d.ts.map +1 -1
  65. package/dist/types/packages/sdk/src/managed-training-preparation.d.ts +25 -25
  66. package/dist/types/packages/sdk/src/model-taskset-runs.d.ts +28 -28
  67. package/dist/types/packages/sdk/src/neuron-training-artifact.d.ts +42 -3
  68. package/dist/types/packages/sdk/src/neuron-training-artifact.d.ts.map +1 -1
  69. package/dist/types/packages/sdk/src/neuron-training-experiment-draft.d.ts +16 -1
  70. package/dist/types/packages/sdk/src/neuron-training-experiment-draft.d.ts.map +1 -1
  71. package/dist/types/packages/sdk/src/neuron-training-model-serving.d.ts +168 -16
  72. package/dist/types/packages/sdk/src/neuron-training-model-serving.d.ts.map +1 -1
  73. package/dist/types/packages/sdk/src/neuron-training-result.d.ts +42 -3
  74. package/dist/types/packages/sdk/src/neuron-training-result.d.ts.map +1 -1
  75. package/dist/types/packages/sdk/src/neuron-training.d.ts +23 -2
  76. package/dist/types/packages/sdk/src/neuron-training.d.ts.map +1 -1
  77. package/dist/types/packages/sdk/src/post-training.d.ts +7 -7
  78. package/dist/types/packages/sdk/src/product-model-response.d.ts +4 -0
  79. package/dist/types/packages/sdk/src/product-model-response.d.ts.map +1 -0
  80. package/dist/types/packages/sdk/src/product-models.d.ts +76 -0
  81. package/dist/types/packages/sdk/src/product-models.d.ts.map +1 -0
  82. package/dist/types/packages/sdk/src/steering-model-serving.d.ts +42 -4
  83. package/dist/types/packages/sdk/src/steering-model-serving.d.ts.map +1 -1
  84. package/dist/types/packages/sdk/src/steering-profile-publication.d.ts +84 -8
  85. package/dist/types/packages/sdk/src/steering-profile-publication.d.ts.map +1 -1
  86. package/dist/types/packages/sdk/src/taskset-draft-source.d.ts +20 -20
  87. package/dist/types/packages/sdk/src/taskset-package-projection.d.ts +20 -20
  88. package/dist/types/packages/sdk/src/training-evidence.d.ts +54 -0
  89. package/dist/types/packages/sdk/src/training-evidence.d.ts.map +1 -0
  90. package/dist/types/packages/sdk/src/training-experiment-setup.d.ts +42 -2
  91. package/dist/types/packages/sdk/src/training-experiment-setup.d.ts.map +1 -1
  92. package/dist/types/packages/sdk/src/training-harness-sources.d.ts +2 -2
  93. package/dist/types/packages/sdk/src/training-learning-batch.d.ts +40 -40
  94. package/dist/types/packages/sdk/src/training-preparations.d.ts +1770 -485
  95. package/dist/types/packages/sdk/src/training-preparations.d.ts.map +1 -1
  96. package/dist/types/packages/sdk/src/training-qualification-preparation.d.ts +25 -25
  97. package/dist/types/packages/sdk/src/training-usage-funding.d.ts +23 -0
  98. package/dist/types/packages/sdk/src/training-usage-funding.d.ts.map +1 -1
  99. package/dist/types/packages/sdk/src/training.d.ts +5189 -4445
  100. package/dist/types/packages/sdk/src/training.d.ts.map +1 -1
  101. package/dist/types/packages/sdk/src/types.d.ts +14 -1
  102. package/dist/types/packages/sdk/src/types.d.ts.map +1 -1
  103. package/dist/types/packages/sdk/src/weight-experiment-authoring.d.ts +5 -2
  104. package/dist/types/packages/sdk/src/weight-experiment-authoring.d.ts.map +1 -1
  105. package/dist/types/packages/sdk/src/weight-model-versions.d.ts +168 -16
  106. package/dist/types/packages/sdk/src/weight-model-versions.d.ts.map +1 -1
  107. package/fixtures/personalized-inference-request.schema.json +316 -0
  108. package/fixtures/python-foundation/schemas.json +8750 -8351
  109. package/package.json +18 -3
  110. package/dist/chunk-LEVXD73U.js.map +0 -1
  111. package/dist/chunk-NZRGRUYG.js.map +0 -1
  112. /package/dist/{chunk-QIGMNB6M.js.map → chunk-3G3HUA32.js.map} +0 -0
  113. /package/dist/{chunk-7G47YXQT.js.map → chunk-3MWFN7BA.js.map} +0 -0
  114. /package/dist/{chunk-3BYFS4RO.js.map → chunk-47THZRUM.js.map} +0 -0
  115. /package/dist/{chunk-BNBPKCIR.js.map → chunk-DDCR4KB5.js.map} +0 -0
  116. /package/dist/{chunk-QCRNQMN4.js.map → chunk-IXFUYPGV.js.map} +0 -0
  117. /package/dist/{chunk-Q4RGCEOI.js.map → chunk-JOMZJXGC.js.map} +0 -0
  118. /package/dist/{chunk-OBI2MQYU.js.map → chunk-QRYEXPG7.js.map} +0 -0
  119. /package/dist/{chunk-6EZAGTZG.js.map → chunk-RN5MK7NH.js.map} +0 -0
  120. /package/dist/{chunk-GCUWJUUM.js.map → chunk-RTLJV4OS.js.map} +0 -0
  121. /package/dist/{chunk-GBDBKGXW.js.map → chunk-T67LNKAK.js.map} +0 -0
  122. /package/dist/{chunk-SP7DQEQM.js.map → chunk-XBFOFTK3.js.map} +0 -0
  123. /package/dist/{chunk-AG6UJ3DI.js.map → chunk-YS7DF76T.js.map} +0 -0
@@ -6,7 +6,7 @@ import {
6
6
  validateModelStarterExecution,
7
7
  validateModelTasksetPackage,
8
8
  validateTasksetPackage
9
- } from "./chunk-ZQ6QTYRE.js";
9
+ } from "./chunk-GV6DEDBU.js";
10
10
  import {
11
11
  ModelProjectBaseModelSchema,
12
12
  ModelProjectRecipeDocumentSchema,
@@ -443,4 +443,4 @@ export {
443
443
  previewModelStarter,
444
444
  validateResolvedModelStarter
445
445
  };
446
- //# sourceMappingURL=chunk-QCRNQMN4.js.map
446
+ //# sourceMappingURL=chunk-IXFUYPGV.js.map
@@ -5,10 +5,10 @@ import {
5
5
  computeTasksetHash,
6
6
  draftPublishIssues,
7
7
  validateTaskset
8
- } from "./chunk-GCUWJUUM.js";
8
+ } from "./chunk-RTLJV4OS.js";
9
9
  import {
10
10
  TaskDataRecordSchema
11
- } from "./chunk-ZQ6QTYRE.js";
11
+ } from "./chunk-GV6DEDBU.js";
12
12
  import {
13
13
  TasksetDraftFileContentSchema,
14
14
  TasksetDraftFileMutationSchema,
@@ -487,4 +487,4 @@ export {
487
487
  tasksetDraftFromTaskset,
488
488
  publishTasksetDraft
489
489
  };
490
- //# sourceMappingURL=chunk-Q4RGCEOI.js.map
490
+ //# sourceMappingURL=chunk-JOMZJXGC.js.map
@@ -1,9 +1,3 @@
1
- import {
2
- validateTasksetPackage
3
- } from "./chunk-ZQ6QTYRE.js";
4
- import {
5
- RunExperimentSchema
6
- } from "./chunk-ZQFROKKS.js";
7
1
  import {
8
2
  ExperimentScoringRequestSchema,
9
3
  verifyExperimentScoringPass
@@ -11,6 +5,12 @@ import {
11
5
  import {
12
6
  fetchConnectedJson
13
7
  } from "./chunk-O6FKHAWN.js";
8
+ import {
9
+ validateTasksetPackage
10
+ } from "./chunk-GV6DEDBU.js";
11
+ import {
12
+ RunExperimentSchema
13
+ } from "./chunk-ZQFROKKS.js";
14
14
  import {
15
15
  ExperimentExecutionContextSchema,
16
16
  ExperimentFieldMappingsSchema,
@@ -652,4 +652,4 @@ export {
652
652
  ProfileEvaluationDiscoveryRequestSchema,
653
653
  OpenPondProfileEvaluationDiscoveryClient
654
654
  };
655
- //# sourceMappingURL=chunk-OBI2MQYU.js.map
655
+ //# sourceMappingURL=chunk-QRYEXPG7.js.map
@@ -1,12 +1,12 @@
1
+ import {
2
+ ExperimentImprovementOptionsSchema
3
+ } from "./chunk-QNOCM5JX.js";
1
4
  import {
2
5
  EvaluationCoordinationTransport
3
6
  } from "./chunk-3B5KSH3V.js";
4
7
  import {
5
8
  ChatModelRefSchema
6
9
  } from "./chunk-H3367ISL.js";
7
- import {
8
- ExperimentImprovementOptionsSchema
9
- } from "./chunk-QNOCM5JX.js";
10
10
  import {
11
11
  ImmutableReleaseRefSchema,
12
12
  contentHash
@@ -264,4 +264,4 @@ export {
264
264
  AdvancedRefinerEvaluationAccountingSchema,
265
265
  OpenPondAdvancedRefinerEvaluationClient
266
266
  };
267
- //# sourceMappingURL=chunk-6EZAGTZG.js.map
267
+ //# sourceMappingURL=chunk-RN5MK7NH.js.map
@@ -11,7 +11,7 @@ import {
11
11
  TasksetPreferenceComparisonBindingSchema,
12
12
  TasksetPurposeSchema,
13
13
  TasksetSourceRefSchema
14
- } from "./chunk-ZQ6QTYRE.js";
14
+ } from "./chunk-GV6DEDBU.js";
15
15
  import {
16
16
  ModelTasksetDraftPreparationSchema
17
17
  } from "./chunk-TK3DXH7A.js";
@@ -910,4 +910,4 @@ export {
910
910
  computeTasksetHash,
911
911
  validatePortability
912
912
  };
913
- //# sourceMappingURL=chunk-GCUWJUUM.js.map
913
+ //# sourceMappingURL=chunk-RTLJV4OS.js.map
@@ -2,7 +2,7 @@ import {
2
2
  TasksetSchema,
3
3
  computeTasksetHash,
4
4
  createTasksetDraft
5
- } from "./chunk-GCUWJUUM.js";
5
+ } from "./chunk-RTLJV4OS.js";
6
6
  import {
7
7
  GraderFixtureSchema,
8
8
  GraderSpecSchema,
@@ -11,7 +11,7 @@ import {
11
11
  decodeTasksetPackageFile,
12
12
  resolveTasksetPackageInstructions,
13
13
  validateTasksetPackage
14
- } from "./chunk-ZQ6QTYRE.js";
14
+ } from "./chunk-GV6DEDBU.js";
15
15
  import {
16
16
  contentHash
17
17
  } from "./chunk-H3JZ3P5T.js";
@@ -266,4 +266,4 @@ export {
266
266
  prepareImportedTasksetPackage,
267
267
  tasksetPackageSourceId
268
268
  };
269
- //# sourceMappingURL=chunk-GBDBKGXW.js.map
269
+ //# sourceMappingURL=chunk-T67LNKAK.js.map
@@ -9,16 +9,16 @@ import {
9
9
  } from "./chunk-GPQLBVQC.js";
10
10
  import {
11
11
  AuthoredTasksetFileInventorySchema
12
- } from "./chunk-BNBPKCIR.js";
12
+ } from "./chunk-DDCR4KB5.js";
13
13
  import {
14
14
  configuredTasksetDraftFiles,
15
15
  createTasksetDraftWorkspace,
16
16
  decodeTasksetDraftWorkspaceFile,
17
17
  isManagedTasksetDraftFilePath
18
- } from "./chunk-Q4RGCEOI.js";
18
+ } from "./chunk-JOMZJXGC.js";
19
19
  import {
20
20
  TasksetDraftSchema
21
- } from "./chunk-GCUWJUUM.js";
21
+ } from "./chunk-RTLJV4OS.js";
22
22
  import {
23
23
  compileModelTasksetReward,
24
24
  createTasksetPackage,
@@ -26,7 +26,7 @@ import {
26
26
  resolveTasksetPackageExecution,
27
27
  resolveTasksetPackageInstructions,
28
28
  validateTasksetPackage
29
- } from "./chunk-ZQ6QTYRE.js";
29
+ } from "./chunk-GV6DEDBU.js";
30
30
  import {
31
31
  ModelTasksetDraftPreparationSchema,
32
32
  TasksetDraftFilePathSchema
@@ -698,4 +698,4 @@ export {
698
698
  prepareTasksetDraftSource,
699
699
  materializeTasksetDraftWorkspace
700
700
  };
701
- //# sourceMappingURL=chunk-SP7DQEQM.js.map
701
+ //# sourceMappingURL=chunk-XBFOFTK3.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  TasksetDraftWorkspaceSchema
3
- } from "./chunk-Q4RGCEOI.js";
3
+ } from "./chunk-JOMZJXGC.js";
4
4
  import {
5
5
  TasksetCatalogReleaseRefSchema
6
6
  } from "./chunk-Z252BNAZ.js";
@@ -178,4 +178,4 @@ export {
178
178
  ConnectedStartingAssetsReceiptSchema,
179
179
  verifyConnectedStartingAssetsReceipt
180
180
  };
181
- //# sourceMappingURL=chunk-AG6UJ3DI.js.map
181
+ //# sourceMappingURL=chunk-YS7DF76T.js.map
@@ -17,35 +17,159 @@ import {
17
17
  canonicalSha256
18
18
  } from "./chunk-B3ZHJ2KK.js";
19
19
 
20
- // src/managed-compute-price.ts
20
+ // src/training-recovery.ts
21
21
  import { z } from "zod";
22
- var Hash = z.string().regex(/^[a-f0-9]{64}$/);
23
- var Money = z.string().regex(/^(0|[1-9]\d*)(\.\d{1,6})?$/).max(24);
22
+ var id = z.string().trim().min(1).max(191);
23
+ var hash = z.string().regex(/^[a-f0-9]{64}$/);
24
+ var ApprovalBodySchema = z.object({
25
+ schemaVersion: z.literal("openpond.checkpointRecoveryResourceApproval.v1"),
26
+ ownerUserId: id,
27
+ teamId: id,
28
+ sourceJobId: id,
29
+ sourceJobVersion: z.number().int().positive(),
30
+ sourceInputManifestSha256: hash,
31
+ checkpointId: id,
32
+ adapterSha256: hash,
33
+ resumeSha256: hash,
34
+ idempotencyKey: z.string().trim().min(16).max(191),
35
+ approvedAt: z.iso.datetime({ offset: true }),
36
+ maximumSpendUsd: z.number().positive().finite().max(30).refine(
37
+ (value) => Number(value.toFixed(6)) === value,
38
+ "Recovery spend must use whole microdollars"
39
+ ),
40
+ maximumGpuSeconds: z.number().int().positive().max(21600),
41
+ maximumWallSeconds: z.number().int().positive().max(21600)
42
+ }).strict();
43
+ var TrainingCheckpointRecoveryResourceApprovalSchema = ApprovalBodySchema.extend({
44
+ approvalHash: hash
45
+ }).strict().superRefine((value, context) => {
46
+ if (value.maximumGpuSeconds > value.maximumWallSeconds)
47
+ context.addIssue({
48
+ code: "custom",
49
+ path: ["maximumGpuSeconds"],
50
+ message: "Recovery GPU duration exceeds its wall"
51
+ });
52
+ });
53
+ async function createTrainingCheckpointRecoveryResourceApproval(input) {
54
+ const body = ApprovalBodySchema.parse(input);
55
+ return TrainingCheckpointRecoveryResourceApprovalSchema.parse({
56
+ ...body,
57
+ approvalHash: await canonicalSha256(body)
58
+ });
59
+ }
60
+ var TrainingCheckpointRecoveryRequestSchema = z.object({
61
+ resourceApproval: TrainingCheckpointRecoveryResourceApprovalSchema.optional(),
62
+ mode: z.literal("evaluation_only").optional(),
63
+ evaluationGpuType: z.enum(["NVIDIA A100 80GB PCIe", "NVIDIA A100-SXM4-80GB", "NVIDIA H100 80GB HBM3"]).optional(),
64
+ expectedVersion: z.number().int().positive(),
65
+ checkpointId: id,
66
+ idempotencyKey: z.string().trim().min(16).max(191),
67
+ maximumSpendUsd: z.number().positive().finite(),
68
+ maximumWallSeconds: z.number().int().positive().max(21600)
69
+ }).strict().superRefine((value, context) => {
70
+ if (value.evaluationGpuType && value.mode !== "evaluation_only")
71
+ context.addIssue({
72
+ code: "custom",
73
+ path: ["evaluationGpuType"],
74
+ message: "GPU substitution requires explicit evaluation-only recovery"
75
+ });
76
+ const a = value.resourceApproval;
77
+ if (a && (a.sourceJobVersion !== value.expectedVersion || a.checkpointId !== value.checkpointId || a.idempotencyKey !== value.idempotencyKey || a.maximumSpendUsd !== value.maximumSpendUsd || a.maximumWallSeconds !== value.maximumWallSeconds))
78
+ context.addIssue({
79
+ code: "custom",
80
+ path: ["resourceApproval"],
81
+ message: "Recovery resource approval does not match its request"
82
+ });
83
+ });
84
+
85
+ // src/training-physical-placement.ts
86
+ import { z as z2 } from "zod";
87
+ var TrainingPhysicalPlacementSchema = z2.object({
88
+ mode: z2.literal("reuse_only"),
89
+ physicalWorkerId: z2.string().trim().min(1).max(191),
90
+ providerPodId: z2.string().trim().min(1).max(191),
91
+ workerImageDigest: z2.string().regex(/^sha256:[a-f0-9]{64}$/),
92
+ baseProfileSha256: z2.string().regex(/^[a-f0-9]{64}$/),
93
+ gpuType: z2.string().trim().min(1).max(200),
94
+ sourceJobId: z2.string().trim().min(1).max(191),
95
+ sourceInputManifestSha256: z2.string().regex(/^[a-f0-9]{64}$/),
96
+ ownerTeamId: z2.string().trim().min(1).max(191),
97
+ deadlineAt: z2.string().datetime({ offset: true })
98
+ }).strict();
99
+
100
+ // src/training-queue.ts
101
+ import { z as z3 } from "zod";
102
+ var Timestamp = z3.string().datetime({ offset: true });
103
+ var TrainingQueueStatusSchema = z3.object({
104
+ ticketId: z3.string().trim().min(1).max(191),
105
+ ticketNumber: z3.number().int().positive().max(Number.MAX_SAFE_INTEGER),
106
+ label: z3.literal("Waiting for resources"),
107
+ position: z3.number().int().positive().nullable(),
108
+ positionScope: z3.literal("compatible_fair_queue"),
109
+ enqueuedAt: Timestamp,
110
+ asOf: Timestamp,
111
+ estimate: z3.object({
112
+ revision: z3.number().int().nonnegative(),
113
+ estimatedStartAt: Timestamp,
114
+ expiresAt: Timestamp,
115
+ evidence: z3.enum(["observed_capacity", "measured_bootstrap", "scheduled_release"])
116
+ }).strict().nullable()
117
+ }).strict().superRefine((value, context) => {
118
+ if (value.estimate && Date.parse(value.estimate.expiresAt) <= Date.parse(value.asOf))
119
+ context.addIssue({ code: "custom", path: ["estimate"], message: "An expired queue forecast must be returned as unavailable" });
120
+ });
121
+
122
+ // src/training-usage-status.ts
123
+ import { z as z4 } from "zod";
124
+ var Money = z4.string().regex(/^(0|[1-9]\d*)\.\d{6}$/).max(24).refine((value) => /^(0|[1-9]\d*)\.\d{6}$/.test(value) && value.length <= 24 && BigInt(value.replace(".", "")) <= BigInt(Number.MAX_SAFE_INTEGER));
125
+ var TrainingUsageSnapshotSchema = z4.object({
126
+ schemaVersion: z4.literal("openpond.trainingUsageSnapshot.v1"),
127
+ asOf: z4.iso.datetime(),
128
+ customerCapUsd: Money.nullable(),
129
+ chargedUsd: Money,
130
+ committedUsd: Money,
131
+ outstandingUsd: Money,
132
+ remainingCapUsd: Money.nullable(),
133
+ availableCreditUsd: Money,
134
+ complete: z4.boolean(),
135
+ components: z4.array(z4.object({
136
+ component: z4.enum(["gpu", "guest", "storage", "judge"]),
137
+ chargedUsd: Money,
138
+ committedUsd: Money,
139
+ outstandingUsd: Money,
140
+ openOwners: z4.number().int().nonnegative()
141
+ }).strict()).length(4).refine((values) => values.every((value, index) => value.component === ["gpu", "guest", "storage", "judge"][index]))
142
+ }).strict();
143
+
144
+ // src/managed-compute-price.ts
145
+ import { z as z5 } from "zod";
146
+ var Hash = z5.string().regex(/^[a-f0-9]{64}$/);
147
+ var Money2 = z5.string().regex(/^(0|[1-9]\d*)(\.\d{1,6})?$/).max(24);
24
148
  var micros = (value) => {
25
- const [whole, fraction = ""] = Money.parse(value).split(".");
149
+ const [whole, fraction = ""] = Money2.parse(value).split(".");
26
150
  return BigInt(whole) * 1000000n + BigInt(fraction.padEnd(6, "0"));
27
151
  };
28
- var ComputeAppliedPriceSchema = z.object({
29
- schemaVersion: z.literal("openpond.computeAppliedPrice.v1"),
30
- version: z.string().min(1).max(500),
31
- service: z.enum(["managed_rl", "model_modification", "model_serving", "sandbox"]),
152
+ var ComputeAppliedPriceSchema = z5.object({
153
+ schemaVersion: z5.literal("openpond.computeAppliedPrice.v1"),
154
+ version: z5.string().min(1).max(500),
155
+ service: z5.enum(["managed_rl", "model_modification", "model_serving", "sandbox"]),
32
156
  profileHash: Hash,
33
- currency: z.literal("USD"),
34
- unit: z.literal("resource_hour"),
35
- hourlyUsd: Money.refine((value) => {
36
- if (!Money.safeParse(value).success) return false;
157
+ currency: z5.literal("USD"),
158
+ unit: z5.literal("resource_hour"),
159
+ hourlyUsd: Money2.refine((value) => {
160
+ if (!Money2.safeParse(value).success) return false;
37
161
  const amount = micros(value);
38
162
  return amount > 0n && amount <= BigInt(Number.MAX_SAFE_INTEGER);
39
163
  })
40
164
  }).strict();
41
- var ManagedModificationPriceSchema = z.object({
42
- schemaVersion: z.literal("openpond.modificationPrice.v1"),
43
- appliedPrice: ComputeAppliedPriceSchema.extend({ service: z.literal("model_modification") }),
44
- billingBoundary: z.literal("active_allocation_until_verified_cleanup"),
45
- startupBillable: z.literal(true),
46
- postCompletionIdleBillable: z.literal(false),
47
- minimumBillableSeconds: z.literal(0),
48
- warmReuseSeconds: z.literal(300)
165
+ var ManagedModificationPriceSchema = z5.object({
166
+ schemaVersion: z5.literal("openpond.modificationPrice.v1"),
167
+ appliedPrice: ComputeAppliedPriceSchema.extend({ service: z5.literal("model_modification") }),
168
+ billingBoundary: z5.literal("active_allocation_until_verified_cleanup"),
169
+ startupBillable: z5.literal(true),
170
+ postCompletionIdleBillable: z5.literal(false),
171
+ minimumBillableSeconds: z5.literal(0),
172
+ warmReuseSeconds: z5.literal(300)
49
173
  }).strict();
50
174
  function canonicalComputeSpendCap(value) {
51
175
  if (value == null || value.trim() === "") return null;
@@ -63,25 +187,25 @@ async function managedModificationPriceApprovalMatches(plan, command) {
63
187
  }
64
188
 
65
189
  // src/training-usage-funding.ts
66
- import { z as z2 } from "zod";
67
- var Id = z2.string().min(1).max(500);
68
- var Hash2 = z2.string().regex(/^[a-f0-9]{64}$/);
69
- var Price = ComputeAppliedPriceSchema.extend({ service: z2.literal("managed_rl") });
70
- var Cap = z2.string().regex(/^(0|[1-9]\d*)\.\d{6}$/).max(24).refine((value) => {
190
+ import { z as z6 } from "zod";
191
+ var Id = z6.string().min(1).max(500);
192
+ var Hash2 = z6.string().regex(/^[a-f0-9]{64}$/);
193
+ var Price = ComputeAppliedPriceSchema.extend({ service: z6.literal("managed_rl") });
194
+ var Cap = z6.string().regex(/^(0|[1-9]\d*)\.\d{6}$/).max(24).refine((value) => {
71
195
  if (!/^(0|[1-9]\d*)\.\d{6}$/.test(value) || value.length > 24) return false;
72
196
  const micros2 = BigInt(value.replace(".", ""));
73
197
  return micros2 > 0n && micros2 <= BigInt(Number.MAX_SAFE_INTEGER);
74
198
  }).nullable();
75
- var Guests = z2.array(z2.object({
199
+ var Guests = z6.array(z6.object({
76
200
  profileHash: Hash2,
77
201
  price: Price,
78
- resources: z2.object({ cpu: z2.number().positive(), memoryGb: z2.number().positive(), diskGb: z2.number().nonnegative() }).strict()
202
+ resources: z6.object({ cpu: z6.number().positive(), memoryGb: z6.number().positive(), diskGb: z6.number().nonnegative() }).strict()
79
203
  }).strict()).max(32);
80
- var Rate = z2.string().regex(/^(0|[1-9]\d*)\.\d{6}$/).max(24).refine((value) => /^(0|[1-9]\d*)\.\d{6}$/.test(value) && value.length <= 24 && BigInt(value.replace(".", "")) <= BigInt(Number.MAX_SAFE_INTEGER));
81
- var Judges = z2.object({
82
- billing: z2.literal("existing_retail_child_captures"),
83
- acceptedPricingHashes: z2.array(Hash2).max(64),
84
- prices: z2.array(z2.object({
204
+ var Rate = z6.string().regex(/^(0|[1-9]\d*)\.\d{6}$/).max(24).refine((value) => /^(0|[1-9]\d*)\.\d{6}$/.test(value) && value.length <= 24 && BigInt(value.replace(".", "")) <= BigInt(Number.MAX_SAFE_INTEGER));
205
+ var Judges = z6.object({
206
+ billing: z6.literal("existing_retail_child_captures"),
207
+ acceptedPricingHashes: z6.array(Hash2).max(64),
208
+ prices: z6.array(z6.object({
85
209
  modelId: Id,
86
210
  displayName: Id,
87
211
  acceptedPricingHash: Hash2,
@@ -90,8 +214,8 @@ var Judges = z2.object({
90
214
  outputUsdPerMillionTokens: Rate,
91
215
  cacheWriteUsdPerMillionTokens: Rate.nullable(),
92
216
  cacheWriteOneHourUsdPerMillionTokens: Rate.nullable(),
93
- longContextThresholdTokens: z2.number().int().positive().nullable(),
94
- longContext: z2.object({
217
+ longContextThresholdTokens: z6.number().int().positive().nullable(),
218
+ longContext: z6.object({
95
219
  inputUsdPerMillionTokens: Rate,
96
220
  cachedInputUsdPerMillionTokens: Rate,
97
221
  outputUsdPerMillionTokens: Rate,
@@ -99,45 +223,51 @@ var Judges = z2.object({
99
223
  }).strict().nullable()
100
224
  }).strict()).max(64)
101
225
  }).strict();
102
- var TrainingBillingModesSchema = z2.tuple([
103
- z2.object({ mode: z2.literal("prepaid_only"), availability: z2.literal("available"), reason: z2.null() }).strict(),
104
- z2.object({
105
- mode: z2.literal("actual_usage"),
106
- availability: z2.enum(["unavailable", "requires_preparation"]),
107
- reason: z2.string().min(1).max(500).nullable()
226
+ var TrainingBillingModesSchema = z6.tuple([
227
+ z6.object({ mode: z6.literal("prepaid_only"), availability: z6.literal("available"), reason: z6.null() }).strict(),
228
+ z6.object({
229
+ mode: z6.literal("actual_usage"),
230
+ availability: z6.enum(["unavailable", "requires_preparation"]),
231
+ reason: z6.string().min(1).max(500).nullable()
108
232
  }).strict()
109
233
  ]);
110
- var TrainingUsageFundingRequestSchema = z2.object({
111
- schemaVersion: z2.literal("openpond.trainingUsageFundingRequest.v1"),
112
- billingMode: z2.literal("actual_usage"),
234
+ var TrainingUsageFundingRequestSchema = z6.object({
235
+ schemaVersion: z6.literal("openpond.trainingUsageFundingRequest.v1"),
236
+ billingMode: z6.literal("actual_usage"),
113
237
  customerCapUsd: Cap
114
238
  }).strict();
115
- var TrainingUsageQuoteContentSchema = z2.object({
116
- schemaVersion: z2.literal("openpond.trainingUsageQuote.v1"),
239
+ var TrainingUsageQualificationRefSchema = z6.object({
240
+ authorizationId: z6.uuid(),
241
+ operationId: Id,
242
+ authorizationSha256: Hash2
243
+ }).strict();
244
+ var TrainingUsageQuoteContentSchema = z6.object({
245
+ schemaVersion: z6.literal("openpond.trainingUsageQuote.v1"),
117
246
  teamId: Id,
118
247
  actorUserId: Id,
119
248
  preparationId: Id,
120
249
  submissionHash: Hash2,
121
- workerImageDigest: z2.string().regex(/^sha256:[a-f0-9]{64}$/),
250
+ workerImageDigest: z6.string().regex(/^sha256:[a-f0-9]{64}$/),
122
251
  customerCapUsd: Cap,
123
- maximumWallSeconds: z2.number().int().positive(),
124
- retentionDays: z2.number().int().nonnegative(),
252
+ maximumWallSeconds: z6.number().int().positive(),
253
+ retentionDays: z6.number().int().nonnegative(),
254
+ qualification: TrainingUsageQualificationRefSchema.optional(),
125
255
  gpu: Price,
126
256
  guests: Guests,
127
257
  judges: Judges,
128
- storage: z2.object({
258
+ storage: z6.object({
129
259
  price: Price,
130
- storageClass: z2.literal("STANDARD"),
131
- quantityBasis: z2.literal("gib_milliseconds"),
132
- onCreditExhaustion: z2.literal("retain_objects_and_stop_new_storage")
260
+ storageClass: z6.literal("STANDARD"),
261
+ quantityBasis: z6.literal("gib_milliseconds"),
262
+ onCreditExhaustion: z6.literal("retain_objects_and_stop_new_storage")
133
263
  }).strict(),
134
- gpuBillingBoundary: z2.literal("active_allocation_until_verified_cleanup"),
135
- storageBillingBoundary: z2.literal("accepted_retention_window"),
136
- startupBillable: z2.literal(true),
137
- postCompletionIdleBillable: z2.literal(false),
138
- minimumBillableSeconds: z2.literal(0),
139
- issuedAt: z2.iso.datetime(),
140
- expiresAt: z2.iso.datetime()
264
+ gpuBillingBoundary: z6.literal("active_allocation_until_verified_cleanup"),
265
+ storageBillingBoundary: z6.literal("accepted_retention_window"),
266
+ startupBillable: z6.literal(true),
267
+ postCompletionIdleBillable: z6.literal(false),
268
+ minimumBillableSeconds: z6.literal(0),
269
+ issuedAt: z6.iso.datetime(),
270
+ expiresAt: z6.iso.datetime()
141
271
  }).strict();
142
272
  var TrainingUsageQuoteSchema = TrainingUsageQuoteContentSchema.extend({ contentHash: Hash2, signature: Id }).strict();
143
273
  async function verifyTrainingUsageQuote(raw, expected) {
@@ -147,130 +277,6 @@ async function verifyTrainingUsageQuote(raw, expected) {
147
277
  return quote;
148
278
  }
149
279
 
150
- // src/training-recovery.ts
151
- import { z as z3 } from "zod";
152
- var id = z3.string().trim().min(1).max(191);
153
- var hash = z3.string().regex(/^[a-f0-9]{64}$/);
154
- var ApprovalBodySchema = z3.object({
155
- schemaVersion: z3.literal("openpond.checkpointRecoveryResourceApproval.v1"),
156
- ownerUserId: id,
157
- teamId: id,
158
- sourceJobId: id,
159
- sourceJobVersion: z3.number().int().positive(),
160
- sourceInputManifestSha256: hash,
161
- checkpointId: id,
162
- adapterSha256: hash,
163
- resumeSha256: hash,
164
- idempotencyKey: z3.string().trim().min(16).max(191),
165
- approvedAt: z3.iso.datetime({ offset: true }),
166
- maximumSpendUsd: z3.number().positive().finite().max(30).refine(
167
- (value) => Number(value.toFixed(6)) === value,
168
- "Recovery spend must use whole microdollars"
169
- ),
170
- maximumGpuSeconds: z3.number().int().positive().max(21600),
171
- maximumWallSeconds: z3.number().int().positive().max(21600)
172
- }).strict();
173
- var TrainingCheckpointRecoveryResourceApprovalSchema = ApprovalBodySchema.extend({
174
- approvalHash: hash
175
- }).strict().superRefine((value, context) => {
176
- if (value.maximumGpuSeconds > value.maximumWallSeconds)
177
- context.addIssue({
178
- code: "custom",
179
- path: ["maximumGpuSeconds"],
180
- message: "Recovery GPU duration exceeds its wall"
181
- });
182
- });
183
- async function createTrainingCheckpointRecoveryResourceApproval(input) {
184
- const body = ApprovalBodySchema.parse(input);
185
- return TrainingCheckpointRecoveryResourceApprovalSchema.parse({
186
- ...body,
187
- approvalHash: await canonicalSha256(body)
188
- });
189
- }
190
- var TrainingCheckpointRecoveryRequestSchema = z3.object({
191
- resourceApproval: TrainingCheckpointRecoveryResourceApprovalSchema.optional(),
192
- mode: z3.literal("evaluation_only").optional(),
193
- evaluationGpuType: z3.enum(["NVIDIA A100 80GB PCIe", "NVIDIA A100-SXM4-80GB", "NVIDIA H100 80GB HBM3"]).optional(),
194
- expectedVersion: z3.number().int().positive(),
195
- checkpointId: id,
196
- idempotencyKey: z3.string().trim().min(16).max(191),
197
- maximumSpendUsd: z3.number().positive().finite(),
198
- maximumWallSeconds: z3.number().int().positive().max(21600)
199
- }).strict().superRefine((value, context) => {
200
- if (value.evaluationGpuType && value.mode !== "evaluation_only")
201
- context.addIssue({
202
- code: "custom",
203
- path: ["evaluationGpuType"],
204
- message: "GPU substitution requires explicit evaluation-only recovery"
205
- });
206
- const a = value.resourceApproval;
207
- if (a && (a.sourceJobVersion !== value.expectedVersion || a.checkpointId !== value.checkpointId || a.idempotencyKey !== value.idempotencyKey || a.maximumSpendUsd !== value.maximumSpendUsd || a.maximumWallSeconds !== value.maximumWallSeconds))
208
- context.addIssue({
209
- code: "custom",
210
- path: ["resourceApproval"],
211
- message: "Recovery resource approval does not match its request"
212
- });
213
- });
214
-
215
- // src/training-physical-placement.ts
216
- import { z as z4 } from "zod";
217
- var TrainingPhysicalPlacementSchema = z4.object({
218
- mode: z4.literal("reuse_only"),
219
- physicalWorkerId: z4.string().trim().min(1).max(191),
220
- providerPodId: z4.string().trim().min(1).max(191),
221
- workerImageDigest: z4.string().regex(/^sha256:[a-f0-9]{64}$/),
222
- baseProfileSha256: z4.string().regex(/^[a-f0-9]{64}$/),
223
- gpuType: z4.string().trim().min(1).max(200),
224
- sourceJobId: z4.string().trim().min(1).max(191),
225
- sourceInputManifestSha256: z4.string().regex(/^[a-f0-9]{64}$/),
226
- ownerTeamId: z4.string().trim().min(1).max(191),
227
- deadlineAt: z4.string().datetime({ offset: true })
228
- }).strict();
229
-
230
- // src/training-queue.ts
231
- import { z as z5 } from "zod";
232
- var Timestamp = z5.string().datetime({ offset: true });
233
- var TrainingQueueStatusSchema = z5.object({
234
- ticketId: z5.string().trim().min(1).max(191),
235
- ticketNumber: z5.number().int().positive().max(Number.MAX_SAFE_INTEGER),
236
- label: z5.literal("Waiting for resources"),
237
- position: z5.number().int().positive().nullable(),
238
- positionScope: z5.literal("compatible_fair_queue"),
239
- enqueuedAt: Timestamp,
240
- asOf: Timestamp,
241
- estimate: z5.object({
242
- revision: z5.number().int().nonnegative(),
243
- estimatedStartAt: Timestamp,
244
- expiresAt: Timestamp,
245
- evidence: z5.enum(["observed_capacity", "measured_bootstrap", "scheduled_release"])
246
- }).strict().nullable()
247
- }).strict().superRefine((value, context) => {
248
- if (value.estimate && Date.parse(value.estimate.expiresAt) <= Date.parse(value.asOf))
249
- context.addIssue({ code: "custom", path: ["estimate"], message: "An expired queue forecast must be returned as unavailable" });
250
- });
251
-
252
- // src/training-usage-status.ts
253
- import { z as z6 } from "zod";
254
- var Money2 = z6.string().regex(/^(0|[1-9]\d*)\.\d{6}$/).max(24).refine((value) => /^(0|[1-9]\d*)\.\d{6}$/.test(value) && value.length <= 24 && BigInt(value.replace(".", "")) <= BigInt(Number.MAX_SAFE_INTEGER));
255
- var TrainingUsageSnapshotSchema = z6.object({
256
- schemaVersion: z6.literal("openpond.trainingUsageSnapshot.v1"),
257
- asOf: z6.iso.datetime(),
258
- customerCapUsd: Money2.nullable(),
259
- chargedUsd: Money2,
260
- committedUsd: Money2,
261
- outstandingUsd: Money2,
262
- remainingCapUsd: Money2.nullable(),
263
- availableCreditUsd: Money2,
264
- complete: z6.boolean(),
265
- components: z6.array(z6.object({
266
- component: z6.enum(["gpu", "guest", "storage", "judge"]),
267
- chargedUsd: Money2,
268
- committedUsd: Money2,
269
- outstandingUsd: Money2,
270
- openOwners: z6.number().int().nonnegative()
271
- }).strict()).length(4).refine((values) => values.every((value, index) => value.component === ["gpu", "guest", "storage", "judge"][index]))
272
- }).strict();
273
-
274
280
  // src/training-job-contracts.ts
275
281
  import { z as z7 } from "zod";
276
282
  import { TrainingHandoffOriginSchema } from "@openpond/evals/learning";
@@ -811,6 +817,12 @@ async function trainingEvaluationSourceRef(input) {
811
817
  }
812
818
 
813
819
  export {
820
+ TrainingCheckpointRecoveryResourceApprovalSchema,
821
+ createTrainingCheckpointRecoveryResourceApproval,
822
+ TrainingCheckpointRecoveryRequestSchema,
823
+ TrainingPhysicalPlacementSchema,
824
+ TrainingQueueStatusSchema,
825
+ TrainingUsageSnapshotSchema,
814
826
  ComputeAppliedPriceSchema,
815
827
  ManagedModificationPriceSchema,
816
828
  canonicalComputeSpendCap,
@@ -818,15 +830,10 @@ export {
818
830
  managedModificationPriceApprovalMatches,
819
831
  TrainingBillingModesSchema,
820
832
  TrainingUsageFundingRequestSchema,
833
+ TrainingUsageQualificationRefSchema,
821
834
  TrainingUsageQuoteContentSchema,
822
835
  TrainingUsageQuoteSchema,
823
836
  verifyTrainingUsageQuote,
824
- TrainingCheckpointRecoveryResourceApprovalSchema,
825
- createTrainingCheckpointRecoveryResourceApproval,
826
- TrainingCheckpointRecoveryRequestSchema,
827
- TrainingPhysicalPlacementSchema,
828
- TrainingQueueStatusSchema,
829
- TrainingUsageSnapshotSchema,
830
837
  TrainingInputArtifactUploadSchema,
831
838
  TrainingInputArtifactSchema,
832
839
  trainingInputArtifactUploadHash,
@@ -865,4 +872,4 @@ export {
865
872
  assertTrainingEvaluationIsolation,
866
873
  trainingEvaluationSourceRef
867
874
  };
868
- //# sourceMappingURL=chunk-LEVXD73U.js.map
875
+ //# sourceMappingURL=chunk-Z5APNTZE.js.map