openpond-sdk 0.12.9 → 0.12.11
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/README.md +2 -0
- package/TRAINING_PROTOCOL.md +40 -0
- package/dist/advanced-refiner-evaluations.js +8 -7
- package/dist/candidate-evaluations.js +7 -6
- package/dist/{chunk-TWJYL5YF.js → chunk-2LVR24GU.js} +5 -5
- package/dist/{chunk-MRUDFIB6.js → chunk-7BYLH47N.js} +6 -4
- package/dist/{chunk-MRUDFIB6.js.map → chunk-7BYLH47N.js.map} +1 -1
- package/dist/chunk-B3ZHJ2KK.js +152 -0
- package/dist/chunk-B3ZHJ2KK.js.map +1 -0
- package/dist/{chunk-D3WOJTUY.js → chunk-C3TS766N.js} +24 -87
- package/dist/chunk-C3TS766N.js.map +1 -0
- package/dist/{chunk-WYR3MZHU.js → chunk-C4W2MEFP.js} +2 -2
- package/dist/{chunk-GGG6H4MK.js → chunk-CNREFTAV.js} +2 -2
- package/dist/chunk-EZME7DV4.js +161 -0
- package/dist/chunk-EZME7DV4.js.map +1 -0
- package/dist/{chunk-IOZCYSJ6.js → chunk-GHPCQXG5.js} +2 -2
- package/dist/{chunk-EYMZQML2.js → chunk-GJRXJL6G.js} +525 -484
- package/dist/chunk-GJRXJL6G.js.map +1 -0
- package/dist/chunk-GX6KMHW2.js +108 -0
- package/dist/chunk-GX6KMHW2.js.map +1 -0
- package/dist/{chunk-BWFG46HX.js → chunk-HAQPGTQ4.js} +2 -2
- package/dist/{chunk-RFKZSSLB.js → chunk-IFBCLRBM.js} +5 -3
- package/dist/{chunk-RFKZSSLB.js.map → chunk-IFBCLRBM.js.map} +1 -1
- package/dist/chunk-IZ26ZCGU.js +65 -0
- package/dist/chunk-IZ26ZCGU.js.map +1 -0
- package/dist/{chunk-EEZ5YHJQ.js → chunk-JBYFD3QS.js} +3 -3
- package/dist/{chunk-U4QIGSP5.js → chunk-JDQVAG3R.js} +3 -3
- package/dist/{chunk-UWM2ZPGS.js → chunk-K54BDIKL.js} +3 -3
- package/dist/{chunk-QVLJFJBU.js → chunk-KOJC3TH4.js} +6 -6
- package/dist/{chunk-YP5DXGGC.js → chunk-LHHHJIDR.js} +2 -2
- package/dist/{chunk-UMK6DH75.js → chunk-NKF5NIML.js} +7 -5
- package/dist/{chunk-UMK6DH75.js.map → chunk-NKF5NIML.js.map} +1 -1
- package/dist/{chunk-LUFOAMN5.js → chunk-O3NOGKMT.js} +2 -2
- package/dist/{chunk-GZSQIOAH.js → chunk-ORYA2G7S.js} +6 -6
- package/dist/{chunk-XL44IXBO.js → chunk-RIN6Z56W.js} +5 -5
- package/dist/{chunk-CJDEVI3T.js → chunk-RLW4Y5ZV.js} +5 -3
- package/dist/{chunk-CJDEVI3T.js.map → chunk-RLW4Y5ZV.js.map} +1 -1
- package/dist/{chunk-QHCY4MBG.js → chunk-TLSP5JKG.js} +2 -2
- package/dist/chunk-U2KGUAIS.js +18 -0
- package/dist/chunk-U2KGUAIS.js.map +1 -0
- package/dist/{chunk-YSEYPMQ3.js → chunk-UOV2LEXS.js} +12 -154
- package/dist/chunk-UOV2LEXS.js.map +1 -0
- package/dist/{chunk-CZXN63A4.js → chunk-UWY5PUHR.js} +2 -2
- package/dist/{chunk-HYCHLMP7.js → chunk-XMVSQIK4.js} +2 -2
- package/dist/{chunk-TZREEZ4C.js → chunk-XRBM6PBD.js} +9 -9
- package/dist/{chunk-MGFI4226.js → chunk-YIGFQWZV.js} +3 -3
- package/dist/{chunk-EWRWGFKD.js → chunk-ZYDDHHZZ.js} +6 -4
- package/dist/{chunk-EWRWGFKD.js.map → chunk-ZYDDHHZZ.js.map} +1 -1
- package/dist/connected-evidence.js +18 -15
- package/dist/dataset-workspaces.js +21 -18
- package/dist/dataset-workspaces.js.map +1 -1
- package/dist/errors.js +13 -0
- package/dist/errors.js.map +1 -0
- package/dist/experiment-evaluation-schedules.js +22 -19
- package/dist/experiment-improvements.js +9 -8
- package/dist/experiments.js +22 -19
- package/dist/index.js +64 -58
- package/dist/index.js.map +1 -1
- package/dist/learning.js +9 -5
- package/dist/learning.js.map +1 -1
- package/dist/model-projects.js +6 -4
- package/dist/model-starter-attempts.js +3 -2
- package/dist/model-starter-catalog.js +13 -10
- package/dist/model-starter-catalog.js.map +1 -1
- package/dist/model-starters.js +13 -10
- package/dist/model-taskset-runs.js +5 -4
- package/dist/model-taskset-runs.js.map +1 -1
- package/dist/post-training.js +7 -6
- package/dist/taskset-drafts.js +17 -14
- package/dist/taskset-drafts.js.map +1 -1
- package/dist/taskset-packages.js +24 -21
- package/dist/tool-learning-local-store.js +355 -0
- package/dist/tool-learning-local-store.js.map +1 -0
- package/dist/tool-learning.js +414 -0
- package/dist/tool-learning.js.map +1 -0
- package/dist/training-bundle.js +31 -16
- package/dist/training-bundle.js.map +1 -1
- package/dist/training-hardware.js +23 -0
- package/dist/training-hardware.js.map +1 -0
- package/dist/training.js +31 -13
- package/dist/types/packages/sdk/src/connected-evidence-client.d.ts +40 -40
- package/dist/types/packages/sdk/src/dataset-preparation-workspace.d.ts +20 -20
- package/dist/types/packages/sdk/src/errors.d.ts +3 -0
- package/dist/types/packages/sdk/src/errors.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/experiment-client.d.ts +636 -636
- package/dist/types/packages/sdk/src/experiment-improvement-client.d.ts +1622 -1622
- package/dist/types/packages/sdk/src/experiment-run-details.d.ts +54 -54
- package/dist/types/packages/sdk/src/learning-client.d.ts +1 -6
- package/dist/types/packages/sdk/src/learning-client.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/learning-error.d.ts +7 -0
- package/dist/types/packages/sdk/src/learning-error.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/managed-training-preparation.d.ts +2 -0
- package/dist/types/packages/sdk/src/managed-training-preparation.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/model-projects.d.ts +24 -0
- package/dist/types/packages/sdk/src/model-projects.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/model-starters.d.ts +6 -0
- package/dist/types/packages/sdk/src/model-starters.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/post-training.d.ts +58 -54
- package/dist/types/packages/sdk/src/post-training.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/taskset-authored-files.d.ts +20 -20
- package/dist/types/packages/sdk/src/taskset-draft-client.d.ts +2 -0
- 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 +6 -0
- 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/tool-learning-client.d.ts +1217 -0
- package/dist/types/packages/sdk/src/tool-learning-client.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/tool-learning-local-store.d.ts +140 -0
- package/dist/types/packages/sdk/src/tool-learning-local-store.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/tool-learning.d.ts +4 -0
- package/dist/types/packages/sdk/src/tool-learning.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/training-compute-selection.d.ts +2 -0
- package/dist/types/packages/sdk/src/training-compute-selection.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/training-estimates.d.ts +9 -1
- package/dist/types/packages/sdk/src/training-estimates.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/training-hardware.d.ts +886 -0
- package/dist/types/packages/sdk/src/training-hardware.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/training-learning-batch.d.ts +40 -40
- package/dist/types/packages/sdk/src/training-preparations.d.ts +22 -0
- package/dist/types/packages/sdk/src/training-preparations.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/training-qualification-preparation.d.ts +2 -0
- package/dist/types/packages/sdk/src/training-qualification-preparation.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/training-supervised.d.ts +101 -0
- package/dist/types/packages/sdk/src/training-supervised.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/training-transport.d.ts +24 -0
- package/dist/types/packages/sdk/src/training-transport.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/training.d.ts +34 -16
- package/dist/types/packages/sdk/src/training.d.ts.map +1 -1
- package/package.json +18 -2
- package/dist/chunk-D3WOJTUY.js.map +0 -1
- package/dist/chunk-EYMZQML2.js.map +0 -1
- package/dist/chunk-YSEYPMQ3.js.map +0 -1
- /package/dist/{chunk-TWJYL5YF.js.map → chunk-2LVR24GU.js.map} +0 -0
- /package/dist/{chunk-WYR3MZHU.js.map → chunk-C4W2MEFP.js.map} +0 -0
- /package/dist/{chunk-GGG6H4MK.js.map → chunk-CNREFTAV.js.map} +0 -0
- /package/dist/{chunk-IOZCYSJ6.js.map → chunk-GHPCQXG5.js.map} +0 -0
- /package/dist/{chunk-BWFG46HX.js.map → chunk-HAQPGTQ4.js.map} +0 -0
- /package/dist/{chunk-EEZ5YHJQ.js.map → chunk-JBYFD3QS.js.map} +0 -0
- /package/dist/{chunk-U4QIGSP5.js.map → chunk-JDQVAG3R.js.map} +0 -0
- /package/dist/{chunk-UWM2ZPGS.js.map → chunk-K54BDIKL.js.map} +0 -0
- /package/dist/{chunk-QVLJFJBU.js.map → chunk-KOJC3TH4.js.map} +0 -0
- /package/dist/{chunk-YP5DXGGC.js.map → chunk-LHHHJIDR.js.map} +0 -0
- /package/dist/{chunk-LUFOAMN5.js.map → chunk-O3NOGKMT.js.map} +0 -0
- /package/dist/{chunk-GZSQIOAH.js.map → chunk-ORYA2G7S.js.map} +0 -0
- /package/dist/{chunk-XL44IXBO.js.map → chunk-RIN6Z56W.js.map} +0 -0
- /package/dist/{chunk-QHCY4MBG.js.map → chunk-TLSP5JKG.js.map} +0 -0
- /package/dist/{chunk-CZXN63A4.js.map → chunk-UWY5PUHR.js.map} +0 -0
- /package/dist/{chunk-HYCHLMP7.js.map → chunk-XMVSQIK4.js.map} +0 -0
- /package/dist/{chunk-TZREEZ4C.js.map → chunk-XRBM6PBD.js.map} +0 -0
- /package/dist/{chunk-MGFI4226.js.map → chunk-YIGFQWZV.js.map} +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
RunExperimentSchema
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-K54BDIKL.js";
|
|
4
4
|
import {
|
|
5
5
|
contentHash
|
|
6
6
|
} from "./chunk-H3JZ3P5T.js";
|
|
@@ -136,4 +136,4 @@ export {
|
|
|
136
136
|
CandidateEvaluationPreparationSchema,
|
|
137
137
|
CandidateEvaluationControlSchema
|
|
138
138
|
};
|
|
139
|
-
//# sourceMappingURL=chunk-
|
|
139
|
+
//# sourceMappingURL=chunk-CNREFTAV.js.map
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
import {
|
|
2
|
+
createTrainingRequest
|
|
3
|
+
} from "./chunk-GX6KMHW2.js";
|
|
4
|
+
import {
|
|
5
|
+
OpenPondProtocolError
|
|
6
|
+
} from "./chunk-B3ZHJ2KK.js";
|
|
7
|
+
|
|
8
|
+
// src/training-hardware.ts
|
|
9
|
+
import { z } from "zod";
|
|
10
|
+
var Id = z.string().min(1).max(191);
|
|
11
|
+
var Timestamp = z.string().datetime({ offset: true });
|
|
12
|
+
var Text = z.string().min(1).max(512);
|
|
13
|
+
var Counter = z.number().finite().min(0).max(Number.MAX_SAFE_INTEGER);
|
|
14
|
+
var MissingMetric = z.object({
|
|
15
|
+
status: z.enum(["unavailable", "unsupported", "permissionDenied", "error"]),
|
|
16
|
+
reason: Text
|
|
17
|
+
}).strict();
|
|
18
|
+
var metric = (value) => z.union([z.object({ status: z.literal("available"), value }).strict(), MissingMetric]);
|
|
19
|
+
var NumberMetric = metric(Counter);
|
|
20
|
+
var PercentMetric = metric(z.number().finite().min(0).max(100));
|
|
21
|
+
var StringMetric = metric(Text);
|
|
22
|
+
var HardwareAvailabilitySchema = z.union([
|
|
23
|
+
z.object({ status: z.literal("available") }).strict(),
|
|
24
|
+
MissingMetric
|
|
25
|
+
]);
|
|
26
|
+
var HardwareGpuObservationSchema = z.object({
|
|
27
|
+
index: z.number().int().min(0).max(4294967295),
|
|
28
|
+
uuid: StringMetric,
|
|
29
|
+
name: StringMetric,
|
|
30
|
+
pciBusId: StringMetric,
|
|
31
|
+
memoryTotalBytes: NumberMetric,
|
|
32
|
+
memoryUsedBytes: NumberMetric,
|
|
33
|
+
utilizationPercent: PercentMetric,
|
|
34
|
+
memoryUtilizationPercent: PercentMetric,
|
|
35
|
+
temperatureCelsius: NumberMetric,
|
|
36
|
+
powerWatts: NumberMetric,
|
|
37
|
+
powerLimitWatts: NumberMetric,
|
|
38
|
+
graphicsClockMhz: NumberMetric,
|
|
39
|
+
memoryClockMhz: NumberMetric,
|
|
40
|
+
eccCorrectedErrors: NumberMetric,
|
|
41
|
+
eccUncorrectedErrors: NumberMetric
|
|
42
|
+
}).strict();
|
|
43
|
+
var HardwareObservationSchema = z.object({
|
|
44
|
+
schemaVersion: z.literal(1),
|
|
45
|
+
collectorVersion: Text,
|
|
46
|
+
sessionId: z.string().uuid(),
|
|
47
|
+
sequence: Counter.int().min(1),
|
|
48
|
+
observedAt: Timestamp,
|
|
49
|
+
monotonicMs: Counter.int(),
|
|
50
|
+
sampleIntervalMs: z.number().int().min(100).max(6e4),
|
|
51
|
+
scope: z.enum(["container", "host", "guest", "unknown"]),
|
|
52
|
+
cpu: z.object({
|
|
53
|
+
logicalCores: NumberMetric,
|
|
54
|
+
utilizationPercent: PercentMetric,
|
|
55
|
+
cgroupCpuLimitCores: NumberMetric,
|
|
56
|
+
cgroupUsageUsec: NumberMetric
|
|
57
|
+
}).strict(),
|
|
58
|
+
memory: z.object({
|
|
59
|
+
hostTotalBytes: NumberMetric,
|
|
60
|
+
hostAvailableBytes: NumberMetric,
|
|
61
|
+
cgroupLimitBytes: NumberMetric,
|
|
62
|
+
cgroupCurrentBytes: NumberMetric
|
|
63
|
+
}).strict(),
|
|
64
|
+
driverVersion: StringMetric,
|
|
65
|
+
gpus: z.array(HardwareGpuObservationSchema).max(32),
|
|
66
|
+
capabilities: z.object({
|
|
67
|
+
cpu: HardwareAvailabilitySchema,
|
|
68
|
+
memory: HardwareAvailabilitySchema,
|
|
69
|
+
nvml: HardwareAvailabilitySchema
|
|
70
|
+
}).strict()
|
|
71
|
+
}).strict().superRefine((value, context) => {
|
|
72
|
+
const indices = /* @__PURE__ */ new Set();
|
|
73
|
+
const uuids = /* @__PURE__ */ new Set();
|
|
74
|
+
value.gpus.forEach((gpu, index) => {
|
|
75
|
+
if (indices.has(gpu.index) || gpu.uuid.status === "available" && uuids.has(gpu.uuid.value)) {
|
|
76
|
+
context.addIssue({
|
|
77
|
+
code: "custom",
|
|
78
|
+
path: ["gpus", index],
|
|
79
|
+
message: "GPU identity must be unique within an observation."
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
indices.add(gpu.index);
|
|
83
|
+
if (gpu.uuid.status === "available") uuids.add(gpu.uuid.value);
|
|
84
|
+
});
|
|
85
|
+
});
|
|
86
|
+
var HardwareFleetSnapshotSchema = z.object({
|
|
87
|
+
schemaVersion: z.literal(1),
|
|
88
|
+
teamId: Id,
|
|
89
|
+
observedAt: Timestamp,
|
|
90
|
+
nextCursor: Id.nullable(),
|
|
91
|
+
workers: z.array(
|
|
92
|
+
z.object({
|
|
93
|
+
workerId: Id,
|
|
94
|
+
provider: Id,
|
|
95
|
+
state: Id,
|
|
96
|
+
jobIds: z.array(Id).max(128),
|
|
97
|
+
receivedAt: Timestamp.nullable(),
|
|
98
|
+
observation: HardwareObservationSchema.nullable(),
|
|
99
|
+
freshness: z.enum(["missing", "fresh", "stale"])
|
|
100
|
+
}).strict()
|
|
101
|
+
).max(50)
|
|
102
|
+
}).strict().superRefine((value, context) => {
|
|
103
|
+
const workers = /* @__PURE__ */ new Set();
|
|
104
|
+
value.workers.forEach((worker, index) => {
|
|
105
|
+
if (workers.has(worker.workerId))
|
|
106
|
+
context.addIssue({
|
|
107
|
+
code: "custom",
|
|
108
|
+
path: ["workers", index, "workerId"],
|
|
109
|
+
message: "Duplicate worker identity."
|
|
110
|
+
});
|
|
111
|
+
workers.add(worker.workerId);
|
|
112
|
+
if (worker.observation === null !== (worker.receivedAt === null) || worker.observation === null !== (worker.freshness === "missing")) {
|
|
113
|
+
context.addIssue({
|
|
114
|
+
code: "custom",
|
|
115
|
+
path: ["workers", index],
|
|
116
|
+
message: "Observation, receive time and freshness must describe the same evidence."
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
});
|
|
121
|
+
function createTrainingHardwareClient(request) {
|
|
122
|
+
return {
|
|
123
|
+
async hardwareObservations(query) {
|
|
124
|
+
const teamId = Id.parse(query.teamId);
|
|
125
|
+
const params = new URLSearchParams();
|
|
126
|
+
if (query.workerId !== void 0) params.set("workerId", Id.parse(query.workerId));
|
|
127
|
+
if (query.jobId !== void 0) params.set("jobId", Id.parse(query.jobId));
|
|
128
|
+
if (query.cursor !== void 0) params.set("cursor", Id.parse(query.cursor));
|
|
129
|
+
const limit = z.number().int().min(1).max(50).parse(query.limit ?? 25);
|
|
130
|
+
params.set("limit", String(limit));
|
|
131
|
+
const suffix = params.size ? `?${params}` : "";
|
|
132
|
+
const snapshot = HardwareFleetSnapshotSchema.parse(
|
|
133
|
+
await request(`/v1/managed-rl/hardware-observations${suffix}`, {
|
|
134
|
+
headers: { "x-openpond-team-id": teamId }
|
|
135
|
+
})
|
|
136
|
+
);
|
|
137
|
+
if (snapshot.teamId !== teamId || snapshot.workers.length > limit || snapshot.workers.some(
|
|
138
|
+
(worker) => query.workerId !== void 0 && worker.workerId !== query.workerId || query.jobId !== void 0 && !worker.jobIds.includes(query.jobId) || query.cursor !== void 0 && worker.workerId <= query.cursor
|
|
139
|
+
) || snapshot.nextCursor !== null && snapshot.nextCursor !== snapshot.workers.at(-1)?.workerId) {
|
|
140
|
+
throw new OpenPondProtocolError(
|
|
141
|
+
"hardware_observation_scope_mismatch",
|
|
142
|
+
"Hardware observations do not match the requested workspace, worker or job."
|
|
143
|
+
);
|
|
144
|
+
}
|
|
145
|
+
return snapshot;
|
|
146
|
+
}
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
function createHardwareObservationClient(input) {
|
|
150
|
+
return createTrainingHardwareClient(createTrainingRequest(input));
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
export {
|
|
154
|
+
HardwareAvailabilitySchema,
|
|
155
|
+
HardwareGpuObservationSchema,
|
|
156
|
+
HardwareObservationSchema,
|
|
157
|
+
HardwareFleetSnapshotSchema,
|
|
158
|
+
createTrainingHardwareClient,
|
|
159
|
+
createHardwareObservationClient
|
|
160
|
+
};
|
|
161
|
+
//# sourceMappingURL=chunk-EZME7DV4.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/training-hardware.ts"],"sourcesContent":["import { createTrainingRequest, type TrainingTransportOptions } from \"./training-transport.js\";\nexport { OpenPondTrainingApiError } from \"./training-transport.js\";\nimport { z } from \"zod\";\nimport { OpenPondProtocolError } from \"./protocol.js\";\n\n// Read-only hardware observation wire contract. The producer and ingestion\n// service supply bounded, explicitly scoped observations;\n// observation freshness never establishes worker liveness or scheduling readiness.\nconst Id = z.string().min(1).max(191);\nconst Timestamp = z.string().datetime({ offset: true });\nconst Text = z.string().min(1).max(512);\nconst Counter = z.number().finite().min(0).max(Number.MAX_SAFE_INTEGER);\nconst MissingMetric = z\n .object({\n status: z.enum([\"unavailable\", \"unsupported\", \"permissionDenied\", \"error\"]),\n reason: Text,\n })\n .strict();\nconst metric = <T extends z.ZodType>(value: T) =>\n z.union([z.object({ status: z.literal(\"available\"), value }).strict(), MissingMetric]);\nconst NumberMetric = metric(Counter);\nconst PercentMetric = metric(z.number().finite().min(0).max(100));\nconst StringMetric = metric(Text);\nexport const HardwareAvailabilitySchema = z.union([\n z.object({ status: z.literal(\"available\") }).strict(),\n MissingMetric,\n]);\nexport const HardwareGpuObservationSchema = z\n .object({\n index: z.number().int().min(0).max(4_294_967_295),\n uuid: StringMetric,\n name: StringMetric,\n pciBusId: StringMetric,\n memoryTotalBytes: NumberMetric,\n memoryUsedBytes: NumberMetric,\n utilizationPercent: PercentMetric,\n memoryUtilizationPercent: PercentMetric,\n temperatureCelsius: NumberMetric,\n powerWatts: NumberMetric,\n powerLimitWatts: NumberMetric,\n graphicsClockMhz: NumberMetric,\n memoryClockMhz: NumberMetric,\n eccCorrectedErrors: NumberMetric,\n eccUncorrectedErrors: NumberMetric,\n })\n .strict();\nexport const HardwareObservationSchema = z\n .object({\n schemaVersion: z.literal(1),\n collectorVersion: Text,\n sessionId: z.string().uuid(),\n sequence: Counter.int().min(1),\n observedAt: Timestamp,\n monotonicMs: Counter.int(),\n sampleIntervalMs: z.number().int().min(100).max(60_000),\n scope: z.enum([\"container\", \"host\", \"guest\", \"unknown\"]),\n cpu: z\n .object({\n logicalCores: NumberMetric,\n utilizationPercent: PercentMetric,\n cgroupCpuLimitCores: NumberMetric,\n cgroupUsageUsec: NumberMetric,\n })\n .strict(),\n memory: z\n .object({\n hostTotalBytes: NumberMetric,\n hostAvailableBytes: NumberMetric,\n cgroupLimitBytes: NumberMetric,\n cgroupCurrentBytes: NumberMetric,\n })\n .strict(),\n driverVersion: StringMetric,\n gpus: z.array(HardwareGpuObservationSchema).max(32),\n capabilities: z\n .object({\n cpu: HardwareAvailabilitySchema,\n memory: HardwareAvailabilitySchema,\n nvml: HardwareAvailabilitySchema,\n })\n .strict(),\n })\n .strict()\n .superRefine((value, context) => {\n const indices = new Set<number>();\n const uuids = new Set<string>();\n value.gpus.forEach((gpu, index) => {\n if (\n indices.has(gpu.index) ||\n (gpu.uuid.status === \"available\" && uuids.has(gpu.uuid.value))\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"gpus\", index],\n message: \"GPU identity must be unique within an observation.\",\n });\n }\n indices.add(gpu.index);\n if (gpu.uuid.status === \"available\") uuids.add(gpu.uuid.value);\n });\n });\nexport const HardwareFleetSnapshotSchema = z\n .object({\n schemaVersion: z.literal(1),\n teamId: Id,\n observedAt: Timestamp,\n nextCursor: Id.nullable(),\n workers: z\n .array(\n z\n .object({\n workerId: Id,\n provider: Id,\n state: Id,\n jobIds: z.array(Id).max(128),\n receivedAt: Timestamp.nullable(),\n observation: HardwareObservationSchema.nullable(),\n freshness: z.enum([\"missing\", \"fresh\", \"stale\"]),\n })\n .strict(),\n )\n .max(50),\n })\n .strict()\n .superRefine((value, context) => {\n const workers = new Set<string>();\n value.workers.forEach((worker, index) => {\n if (workers.has(worker.workerId))\n context.addIssue({\n code: \"custom\",\n path: [\"workers\", index, \"workerId\"],\n message: \"Duplicate worker identity.\",\n });\n workers.add(worker.workerId);\n if (\n (worker.observation === null) !== (worker.receivedAt === null) ||\n (worker.observation === null) !== (worker.freshness === \"missing\")\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"workers\", index],\n message: \"Observation, receive time and freshness must describe the same evidence.\",\n });\n }\n });\n });\nexport type HardwareObservation = z.infer<typeof HardwareObservationSchema>;\nexport type HardwareFleetSnapshot = z.infer<typeof HardwareFleetSnapshotSchema>;\nexport type HardwareObservationQuery = {\n teamId: string;\n workerId?: string;\n jobId?: string;\n cursor?: string;\n limit?: number;\n};\n\nexport function createTrainingHardwareClient(\n request: (path: string, init?: RequestInit) => Promise<unknown>,\n) {\n return {\n async hardwareObservations(query: HardwareObservationQuery): Promise<HardwareFleetSnapshot> {\n const teamId = Id.parse(query.teamId);\n const params = new URLSearchParams();\n if (query.workerId !== undefined) params.set(\"workerId\", Id.parse(query.workerId));\n if (query.jobId !== undefined) params.set(\"jobId\", Id.parse(query.jobId));\n if (query.cursor !== undefined) params.set(\"cursor\", Id.parse(query.cursor));\n const limit = z\n .number()\n .int()\n .min(1)\n .max(50)\n .parse(query.limit ?? 25);\n params.set(\"limit\", String(limit));\n const suffix = params.size ? `?${params}` : \"\";\n const snapshot = HardwareFleetSnapshotSchema.parse(\n await request(`/v1/managed-rl/hardware-observations${suffix}`, {\n headers: { \"x-openpond-team-id\": teamId },\n }),\n );\n if (\n snapshot.teamId !== teamId ||\n snapshot.workers.length > limit ||\n snapshot.workers.some(\n (worker) =>\n (query.workerId !== undefined && worker.workerId !== query.workerId) ||\n (query.jobId !== undefined && !worker.jobIds.includes(query.jobId)) ||\n (query.cursor !== undefined && worker.workerId <= query.cursor),\n ) ||\n (snapshot.nextCursor !== null && snapshot.nextCursor !== snapshot.workers.at(-1)?.workerId)\n ) {\n throw new OpenPondProtocolError(\n \"hardware_observation_scope_mismatch\",\n \"Hardware observations do not match the requested workspace, worker or job.\",\n );\n }\n return snapshot;\n },\n };\n}\n\n/** Focused read-only client; avoids loading unrelated training contracts. */\nexport function createHardwareObservationClient(input: TrainingTransportOptions) {\n return createTrainingHardwareClient(createTrainingRequest(input));\n}\n"],"mappings":"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","names":[]}
|
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
TasksetPreferenceComparisonBindingSchema,
|
|
12
12
|
TasksetPurposeSchema,
|
|
13
13
|
TasksetSourceRefSchema
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-IFBCLRBM.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-
|
|
913
|
+
//# sourceMappingURL=chunk-GHPCQXG5.js.map
|