openpond-sdk 0.12.24 → 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 (95) 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/dist/advanced-refiner-evaluations.js +3 -3
  6. package/dist/ai-sdk.js +224 -0
  7. package/dist/ai-sdk.js.map +1 -0
  8. package/dist/{chunk-NZRGRUYG.js → chunk-2OVNKPBZ.js} +17 -6
  9. package/dist/chunk-2OVNKPBZ.js.map +1 -0
  10. package/dist/{chunk-QIGMNB6M.js → chunk-3G3HUA32.js} +3 -3
  11. package/dist/{chunk-7G47YXQT.js → chunk-3MWFN7BA.js} +2 -2
  12. package/dist/{chunk-3BYFS4RO.js → chunk-47THZRUM.js} +5 -5
  13. package/dist/chunk-BRP3EBCR.js +245 -0
  14. package/dist/chunk-BRP3EBCR.js.map +1 -0
  15. package/dist/{chunk-BNBPKCIR.js → chunk-DDCR4KB5.js} +4 -4
  16. package/dist/{chunk-ZQ6QTYRE.js → chunk-GV6DEDBU.js} +10 -10
  17. package/dist/{chunk-ZQ6QTYRE.js.map → chunk-GV6DEDBU.js.map} +1 -1
  18. package/dist/{chunk-QCRNQMN4.js → chunk-IXFUYPGV.js} +2 -2
  19. package/dist/{chunk-Q4RGCEOI.js → chunk-JOMZJXGC.js} +3 -3
  20. package/dist/{chunk-OBI2MQYU.js → chunk-QRYEXPG7.js} +7 -7
  21. package/dist/{chunk-6EZAGTZG.js → chunk-RN5MK7NH.js} +4 -4
  22. package/dist/{chunk-GCUWJUUM.js → chunk-RTLJV4OS.js} +2 -2
  23. package/dist/{chunk-GBDBKGXW.js → chunk-T67LNKAK.js} +3 -3
  24. package/dist/{chunk-SP7DQEQM.js → chunk-XBFOFTK3.js} +5 -5
  25. package/dist/{chunk-AG6UJ3DI.js → chunk-YS7DF76T.js} +2 -2
  26. package/dist/{chunk-KEG5QS7W.js → chunk-Z5APNTZE.js} +192 -192
  27. package/dist/chunk-Z5APNTZE.js.map +1 -0
  28. package/dist/connected-evidence.js +8 -8
  29. package/dist/dataset-workspaces.js +146 -85
  30. package/dist/dataset-workspaces.js.map +1 -1
  31. package/dist/experiment-evaluation-schedules.js +11 -11
  32. package/dist/experiments.js +15 -15
  33. package/dist/index.js +71 -44
  34. package/dist/index.js.map +1 -1
  35. package/dist/model-starter-catalog.js +2 -2
  36. package/dist/model-starters.js +2 -2
  37. package/dist/taskset-drafts.js +7 -7
  38. package/dist/taskset-packages.js +13 -13
  39. package/dist/training-bundle.js +12 -12
  40. package/dist/training.js +1839 -1807
  41. package/dist/training.js.map +1 -1
  42. package/dist/types/packages/sdk/src/ai-sdk.d.ts +6 -0
  43. package/dist/types/packages/sdk/src/ai-sdk.d.ts.map +1 -0
  44. package/dist/types/packages/sdk/src/candidate-evaluation-client.d.ts +21 -21
  45. package/dist/types/packages/sdk/src/dataset-task-ingestion.d.ts +8 -1
  46. package/dist/types/packages/sdk/src/dataset-task-ingestion.d.ts.map +1 -1
  47. package/dist/types/packages/sdk/src/dataset-workspace-client.d.ts +140 -140
  48. package/dist/types/packages/sdk/src/dataset-workspace-client.d.ts.map +1 -1
  49. package/dist/types/packages/sdk/src/dataset-workspace-error.d.ts +28 -0
  50. package/dist/types/packages/sdk/src/dataset-workspace-error.d.ts.map +1 -0
  51. package/dist/types/packages/sdk/src/dataset-workspaces.d.ts +1 -0
  52. package/dist/types/packages/sdk/src/dataset-workspaces.d.ts.map +1 -1
  53. package/dist/types/packages/sdk/src/experiment-client.d.ts +636 -636
  54. package/dist/types/packages/sdk/src/experiment-draft-storage.d.ts +28 -28
  55. package/dist/types/packages/sdk/src/experiment-evaluation-schedules.d.ts +28 -28
  56. package/dist/types/packages/sdk/src/experiment-improvement-client.d.ts +1622 -1622
  57. package/dist/types/packages/sdk/src/experiment-run-details.d.ts +7 -7
  58. package/dist/types/packages/sdk/src/index.d.ts +13 -4
  59. package/dist/types/packages/sdk/src/index.d.ts.map +1 -1
  60. package/dist/types/packages/sdk/src/managed-decision-executions.d.ts +347 -347
  61. package/dist/types/packages/sdk/src/managed-training-preparation.d.ts +25 -25
  62. package/dist/types/packages/sdk/src/model-taskset-runs.d.ts +28 -28
  63. package/dist/types/packages/sdk/src/post-training.d.ts +7 -7
  64. package/dist/types/packages/sdk/src/product-model-response.d.ts +4 -0
  65. package/dist/types/packages/sdk/src/product-model-response.d.ts.map +1 -0
  66. package/dist/types/packages/sdk/src/product-models.d.ts +76 -0
  67. package/dist/types/packages/sdk/src/product-models.d.ts.map +1 -0
  68. package/dist/types/packages/sdk/src/taskset-draft-source.d.ts +20 -20
  69. package/dist/types/packages/sdk/src/taskset-package-projection.d.ts +20 -20
  70. package/dist/types/packages/sdk/src/training-evidence.d.ts +54 -0
  71. package/dist/types/packages/sdk/src/training-evidence.d.ts.map +1 -0
  72. package/dist/types/packages/sdk/src/training-harness-sources.d.ts +2 -2
  73. package/dist/types/packages/sdk/src/training-learning-batch.d.ts +40 -40
  74. package/dist/types/packages/sdk/src/training-qualification-preparation.d.ts +25 -25
  75. package/dist/types/packages/sdk/src/training.d.ts +2537 -2511
  76. package/dist/types/packages/sdk/src/training.d.ts.map +1 -1
  77. package/dist/types/packages/sdk/src/types.d.ts +14 -1
  78. package/dist/types/packages/sdk/src/types.d.ts.map +1 -1
  79. package/fixtures/personalized-inference-request.schema.json +316 -0
  80. package/fixtures/python-foundation/schemas.json +3826 -3784
  81. package/package.json +18 -3
  82. package/dist/chunk-KEG5QS7W.js.map +0 -1
  83. package/dist/chunk-NZRGRUYG.js.map +0 -1
  84. /package/dist/{chunk-QIGMNB6M.js.map → chunk-3G3HUA32.js.map} +0 -0
  85. /package/dist/{chunk-7G47YXQT.js.map → chunk-3MWFN7BA.js.map} +0 -0
  86. /package/dist/{chunk-3BYFS4RO.js.map → chunk-47THZRUM.js.map} +0 -0
  87. /package/dist/{chunk-BNBPKCIR.js.map → chunk-DDCR4KB5.js.map} +0 -0
  88. /package/dist/{chunk-QCRNQMN4.js.map → chunk-IXFUYPGV.js.map} +0 -0
  89. /package/dist/{chunk-Q4RGCEOI.js.map → chunk-JOMZJXGC.js.map} +0 -0
  90. /package/dist/{chunk-OBI2MQYU.js.map → chunk-QRYEXPG7.js.map} +0 -0
  91. /package/dist/{chunk-6EZAGTZG.js.map → chunk-RN5MK7NH.js.map} +0 -0
  92. /package/dist/{chunk-GCUWJUUM.js.map → chunk-RTLJV4OS.js.map} +0 -0
  93. /package/dist/{chunk-GBDBKGXW.js.map → chunk-T67LNKAK.js.map} +0 -0
  94. /package/dist/{chunk-SP7DQEQM.js.map → chunk-XBFOFTK3.js.map} +0 -0
  95. /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,51 +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 TrainingUsageQualificationRefSchema = z2.object({
116
- authorizationId: z2.uuid(),
239
+ var TrainingUsageQualificationRefSchema = z6.object({
240
+ authorizationId: z6.uuid(),
117
241
  operationId: Id,
118
242
  authorizationSha256: Hash2
119
243
  }).strict();
120
- var TrainingUsageQuoteContentSchema = z2.object({
121
- schemaVersion: z2.literal("openpond.trainingUsageQuote.v1"),
244
+ var TrainingUsageQuoteContentSchema = z6.object({
245
+ schemaVersion: z6.literal("openpond.trainingUsageQuote.v1"),
122
246
  teamId: Id,
123
247
  actorUserId: Id,
124
248
  preparationId: Id,
125
249
  submissionHash: Hash2,
126
- workerImageDigest: z2.string().regex(/^sha256:[a-f0-9]{64}$/),
250
+ workerImageDigest: z6.string().regex(/^sha256:[a-f0-9]{64}$/),
127
251
  customerCapUsd: Cap,
128
- maximumWallSeconds: z2.number().int().positive(),
129
- retentionDays: z2.number().int().nonnegative(),
252
+ maximumWallSeconds: z6.number().int().positive(),
253
+ retentionDays: z6.number().int().nonnegative(),
130
254
  qualification: TrainingUsageQualificationRefSchema.optional(),
131
255
  gpu: Price,
132
256
  guests: Guests,
133
257
  judges: Judges,
134
- storage: z2.object({
258
+ storage: z6.object({
135
259
  price: Price,
136
- storageClass: z2.literal("STANDARD"),
137
- quantityBasis: z2.literal("gib_milliseconds"),
138
- 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")
139
263
  }).strict(),
140
- gpuBillingBoundary: z2.literal("active_allocation_until_verified_cleanup"),
141
- storageBillingBoundary: z2.literal("accepted_retention_window"),
142
- startupBillable: z2.literal(true),
143
- postCompletionIdleBillable: z2.literal(false),
144
- minimumBillableSeconds: z2.literal(0),
145
- issuedAt: z2.iso.datetime(),
146
- 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()
147
271
  }).strict();
148
272
  var TrainingUsageQuoteSchema = TrainingUsageQuoteContentSchema.extend({ contentHash: Hash2, signature: Id }).strict();
149
273
  async function verifyTrainingUsageQuote(raw, expected) {
@@ -153,130 +277,6 @@ async function verifyTrainingUsageQuote(raw, expected) {
153
277
  return quote;
154
278
  }
155
279
 
156
- // src/training-recovery.ts
157
- import { z as z3 } from "zod";
158
- var id = z3.string().trim().min(1).max(191);
159
- var hash = z3.string().regex(/^[a-f0-9]{64}$/);
160
- var ApprovalBodySchema = z3.object({
161
- schemaVersion: z3.literal("openpond.checkpointRecoveryResourceApproval.v1"),
162
- ownerUserId: id,
163
- teamId: id,
164
- sourceJobId: id,
165
- sourceJobVersion: z3.number().int().positive(),
166
- sourceInputManifestSha256: hash,
167
- checkpointId: id,
168
- adapterSha256: hash,
169
- resumeSha256: hash,
170
- idempotencyKey: z3.string().trim().min(16).max(191),
171
- approvedAt: z3.iso.datetime({ offset: true }),
172
- maximumSpendUsd: z3.number().positive().finite().max(30).refine(
173
- (value) => Number(value.toFixed(6)) === value,
174
- "Recovery spend must use whole microdollars"
175
- ),
176
- maximumGpuSeconds: z3.number().int().positive().max(21600),
177
- maximumWallSeconds: z3.number().int().positive().max(21600)
178
- }).strict();
179
- var TrainingCheckpointRecoveryResourceApprovalSchema = ApprovalBodySchema.extend({
180
- approvalHash: hash
181
- }).strict().superRefine((value, context) => {
182
- if (value.maximumGpuSeconds > value.maximumWallSeconds)
183
- context.addIssue({
184
- code: "custom",
185
- path: ["maximumGpuSeconds"],
186
- message: "Recovery GPU duration exceeds its wall"
187
- });
188
- });
189
- async function createTrainingCheckpointRecoveryResourceApproval(input) {
190
- const body = ApprovalBodySchema.parse(input);
191
- return TrainingCheckpointRecoveryResourceApprovalSchema.parse({
192
- ...body,
193
- approvalHash: await canonicalSha256(body)
194
- });
195
- }
196
- var TrainingCheckpointRecoveryRequestSchema = z3.object({
197
- resourceApproval: TrainingCheckpointRecoveryResourceApprovalSchema.optional(),
198
- mode: z3.literal("evaluation_only").optional(),
199
- evaluationGpuType: z3.enum(["NVIDIA A100 80GB PCIe", "NVIDIA A100-SXM4-80GB", "NVIDIA H100 80GB HBM3"]).optional(),
200
- expectedVersion: z3.number().int().positive(),
201
- checkpointId: id,
202
- idempotencyKey: z3.string().trim().min(16).max(191),
203
- maximumSpendUsd: z3.number().positive().finite(),
204
- maximumWallSeconds: z3.number().int().positive().max(21600)
205
- }).strict().superRefine((value, context) => {
206
- if (value.evaluationGpuType && value.mode !== "evaluation_only")
207
- context.addIssue({
208
- code: "custom",
209
- path: ["evaluationGpuType"],
210
- message: "GPU substitution requires explicit evaluation-only recovery"
211
- });
212
- const a = value.resourceApproval;
213
- if (a && (a.sourceJobVersion !== value.expectedVersion || a.checkpointId !== value.checkpointId || a.idempotencyKey !== value.idempotencyKey || a.maximumSpendUsd !== value.maximumSpendUsd || a.maximumWallSeconds !== value.maximumWallSeconds))
214
- context.addIssue({
215
- code: "custom",
216
- path: ["resourceApproval"],
217
- message: "Recovery resource approval does not match its request"
218
- });
219
- });
220
-
221
- // src/training-physical-placement.ts
222
- import { z as z4 } from "zod";
223
- var TrainingPhysicalPlacementSchema = z4.object({
224
- mode: z4.literal("reuse_only"),
225
- physicalWorkerId: z4.string().trim().min(1).max(191),
226
- providerPodId: z4.string().trim().min(1).max(191),
227
- workerImageDigest: z4.string().regex(/^sha256:[a-f0-9]{64}$/),
228
- baseProfileSha256: z4.string().regex(/^[a-f0-9]{64}$/),
229
- gpuType: z4.string().trim().min(1).max(200),
230
- sourceJobId: z4.string().trim().min(1).max(191),
231
- sourceInputManifestSha256: z4.string().regex(/^[a-f0-9]{64}$/),
232
- ownerTeamId: z4.string().trim().min(1).max(191),
233
- deadlineAt: z4.string().datetime({ offset: true })
234
- }).strict();
235
-
236
- // src/training-queue.ts
237
- import { z as z5 } from "zod";
238
- var Timestamp = z5.string().datetime({ offset: true });
239
- var TrainingQueueStatusSchema = z5.object({
240
- ticketId: z5.string().trim().min(1).max(191),
241
- ticketNumber: z5.number().int().positive().max(Number.MAX_SAFE_INTEGER),
242
- label: z5.literal("Waiting for resources"),
243
- position: z5.number().int().positive().nullable(),
244
- positionScope: z5.literal("compatible_fair_queue"),
245
- enqueuedAt: Timestamp,
246
- asOf: Timestamp,
247
- estimate: z5.object({
248
- revision: z5.number().int().nonnegative(),
249
- estimatedStartAt: Timestamp,
250
- expiresAt: Timestamp,
251
- evidence: z5.enum(["observed_capacity", "measured_bootstrap", "scheduled_release"])
252
- }).strict().nullable()
253
- }).strict().superRefine((value, context) => {
254
- if (value.estimate && Date.parse(value.estimate.expiresAt) <= Date.parse(value.asOf))
255
- context.addIssue({ code: "custom", path: ["estimate"], message: "An expired queue forecast must be returned as unavailable" });
256
- });
257
-
258
- // src/training-usage-status.ts
259
- import { z as z6 } from "zod";
260
- 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));
261
- var TrainingUsageSnapshotSchema = z6.object({
262
- schemaVersion: z6.literal("openpond.trainingUsageSnapshot.v1"),
263
- asOf: z6.iso.datetime(),
264
- customerCapUsd: Money2.nullable(),
265
- chargedUsd: Money2,
266
- committedUsd: Money2,
267
- outstandingUsd: Money2,
268
- remainingCapUsd: Money2.nullable(),
269
- availableCreditUsd: Money2,
270
- complete: z6.boolean(),
271
- components: z6.array(z6.object({
272
- component: z6.enum(["gpu", "guest", "storage", "judge"]),
273
- chargedUsd: Money2,
274
- committedUsd: Money2,
275
- outstandingUsd: Money2,
276
- openOwners: z6.number().int().nonnegative()
277
- }).strict()).length(4).refine((values) => values.every((value, index) => value.component === ["gpu", "guest", "storage", "judge"][index]))
278
- }).strict();
279
-
280
280
  // src/training-job-contracts.ts
281
281
  import { z as z7 } from "zod";
282
282
  import { TrainingHandoffOriginSchema } from "@openpond/evals/learning";
@@ -817,6 +817,12 @@ async function trainingEvaluationSourceRef(input) {
817
817
  }
818
818
 
819
819
  export {
820
+ TrainingCheckpointRecoveryResourceApprovalSchema,
821
+ createTrainingCheckpointRecoveryResourceApproval,
822
+ TrainingCheckpointRecoveryRequestSchema,
823
+ TrainingPhysicalPlacementSchema,
824
+ TrainingQueueStatusSchema,
825
+ TrainingUsageSnapshotSchema,
820
826
  ComputeAppliedPriceSchema,
821
827
  ManagedModificationPriceSchema,
822
828
  canonicalComputeSpendCap,
@@ -828,12 +834,6 @@ export {
828
834
  TrainingUsageQuoteContentSchema,
829
835
  TrainingUsageQuoteSchema,
830
836
  verifyTrainingUsageQuote,
831
- TrainingCheckpointRecoveryResourceApprovalSchema,
832
- createTrainingCheckpointRecoveryResourceApproval,
833
- TrainingCheckpointRecoveryRequestSchema,
834
- TrainingPhysicalPlacementSchema,
835
- TrainingQueueStatusSchema,
836
- TrainingUsageSnapshotSchema,
837
837
  TrainingInputArtifactUploadSchema,
838
838
  TrainingInputArtifactSchema,
839
839
  trainingInputArtifactUploadHash,
@@ -872,4 +872,4 @@ export {
872
872
  assertTrainingEvaluationIsolation,
873
873
  trainingEvaluationSourceRef
874
874
  };
875
- //# sourceMappingURL=chunk-KEG5QS7W.js.map
875
+ //# sourceMappingURL=chunk-Z5APNTZE.js.map