@camstack/types 1.2.327 → 1.2.329

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 (72) hide show
  1. package/dist/addon/base-addon.d.ts +58 -0
  2. package/dist/addon/secret-aware-context.d.ts +27 -0
  3. package/dist/addon/secret-paths.d.ts +48 -0
  4. package/dist/addon/secret-settings-view.d.ts +80 -0
  5. package/dist/addon.d.ts +1 -0
  6. package/dist/addon.js +52 -4
  7. package/dist/addon.mjs +27 -5
  8. package/dist/capabilities/addons.cap.d.ts +4 -4
  9. package/dist/capabilities/alarm-panel.cap.d.ts +8 -8
  10. package/dist/capabilities/alerts.cap.d.ts +5 -5
  11. package/dist/capabilities/control.cap.d.ts +11 -11
  12. package/dist/capabilities/day-night.cap.d.ts +16 -16
  13. package/dist/capabilities/device-manager.cap.d.ts +2 -0
  14. package/dist/capabilities/enum-sensor.cap.d.ts +4 -4
  15. package/dist/capabilities/index.d.ts +6 -2
  16. package/dist/capabilities/integrations.cap.d.ts +6 -3
  17. package/dist/capabilities/keychain-admin.cap.d.ts +312 -0
  18. package/dist/capabilities/keychain.cap.d.ts +180 -0
  19. package/dist/capabilities/lawn-mower-control.cap.d.ts +4 -4
  20. package/dist/capabilities/log-channels.cap.d.ts +1 -1
  21. package/dist/capabilities/log-destination.cap.d.ts +5 -5
  22. package/dist/capabilities/notification-rules.cap.d.ts +118 -118
  23. package/dist/capabilities/osd-manager.cap.d.ts +11 -11
  24. package/dist/capabilities/osd.cap.d.ts +5 -5
  25. package/dist/capabilities/pipeline-analytics.cap.d.ts +1291 -118
  26. package/dist/capabilities/pipeline-orchestrator.cap.d.ts +384 -0
  27. package/dist/capabilities/pipeline-runner.cap.d.ts +145 -2
  28. package/dist/capabilities/storage.cap.d.ts +1 -1
  29. package/dist/capabilities/system.cap.d.ts +16 -16
  30. package/dist/capabilities/webrtc-session.cap.d.ts +3 -3
  31. package/dist/client.js +37 -1
  32. package/dist/client.mjs +37 -1
  33. package/dist/device/device-context.d.ts +11 -1
  34. package/dist/device/index.d.ts +1 -1
  35. package/dist/enums/event-category.d.ts +7 -0
  36. package/dist/enums.js +1 -1
  37. package/dist/enums.mjs +1 -1
  38. package/dist/{event-category-CtBAl88K.js → event-category-CHduMGvg.js} +7 -0
  39. package/dist/{event-category-B_0XEcLF.mjs → event-category-DaIZi00R.mjs} +7 -0
  40. package/dist/generated/addon-api.d.ts +289 -0
  41. package/dist/generated/cap-input-defaults.d.ts +1 -1
  42. package/dist/generated/capability-router-map.d.ts +8 -2
  43. package/dist/generated/method-access-map.d.ts +1 -1
  44. package/dist/generated/method-device-selectors.d.ts +1 -1
  45. package/dist/generated/system-proxy.d.ts +4 -2
  46. package/dist/health/wiring-health.d.ts +8 -8
  47. package/dist/index.d.ts +6 -2
  48. package/dist/index.js +1881 -101
  49. package/dist/index.mjs +1766 -98
  50. package/dist/interfaces/addon.d.ts +25 -0
  51. package/dist/interfaces/config-ui-secrets.d.ts +12 -0
  52. package/dist/interfaces/config-ui.d.ts +29 -1
  53. package/dist/interfaces/event-bus.d.ts +11 -0
  54. package/dist/interfaces/pipeline-runner-capability.d.ts +18 -0
  55. package/dist/keychain/index.d.ts +5 -0
  56. package/dist/keychain/known-secrets.d.ts +31 -0
  57. package/dist/keychain/resolve-secret-views.d.ts +2 -0
  58. package/dist/keychain/secret-marker.d.ts +52 -0
  59. package/dist/keychain/secret-ref.d.ts +62 -0
  60. package/dist/keychain/secrets-access.d.ts +77 -0
  61. package/dist/logging/log-channel.d.ts +2 -2
  62. package/dist/pipeline/auto-tune/plan-schemas.d.ts +123 -0
  63. package/dist/pipeline/auto-tune/recommend.d.ts +26 -1
  64. package/dist/pipeline/load-balancing/schemas.d.ts +8 -7
  65. package/dist/pipeline/node-benchmark/benchmark-mode.d.ts +57 -0
  66. package/dist/pipeline/node-benchmark/index.d.ts +9 -0
  67. package/dist/pipeline/node-benchmark/results.d.ts +52 -0
  68. package/dist/pipeline/node-benchmark/schemas.d.ts +848 -0
  69. package/dist/pipeline/node-benchmark/step-tree.d.ts +23 -0
  70. package/dist/{sleep-az1qiFzK.js → sleep-ClNXPpWR.js} +1580 -121
  71. package/dist/{sleep-B0JG7-_F.mjs → sleep-DujUvOcb.mjs} +1340 -121
  72. package/package.json +1 -1
@@ -0,0 +1,848 @@
1
+ /**
2
+ * Wire shapes of the node benchmark (D791): the operator's plan, the
3
+ * preflight the confirmation shows, the run the orchestrator owns, what the
4
+ * measuring runner reports, and the result rows Auto tune and the automatic
5
+ * shares read.
6
+ *
7
+ * ONE node at a time, owned by the pipeline orchestrator. While a run is
8
+ * active the cluster is in BENCHMARK MODE for that node: it is not a
9
+ * detection candidate, camera pins naming it are ignored so its sessions move
10
+ * elsewhere, and both come back when the mode ends — after a crash or a hub
11
+ * restart too (a persisted manifest, reconciled against the registry).
12
+ *
13
+ * Two measurements, both on the node, driven by its own runner (frames never
14
+ * cross a process at frame rate, D9):
15
+ * - `device` — one accelerator × one candidate detector, root only, open
16
+ * loop: how many streams at the camera rate it carries inside the frame
17
+ * interval;
18
+ * - `pipeline` — the chosen detector plus the operator's detail steps
19
+ * (faces, plates, classifiers, CLIP…), on varied frames from the bench
20
+ * clip: how many parallel sessions the node carries before latency, drops,
21
+ * CPU, RAM or the event loop give out.
22
+ */
23
+ import { z } from 'zod';
24
+ /** Defaults and bounds, one place. */
25
+ export declare const NODE_BENCHMARK_DEFAULTS: {
26
+ readonly fpsPerStream: 10;
27
+ readonly budgetMinutes: 45;
28
+ readonly minBudgetMinutes: 10;
29
+ readonly maxBudgetMinutes: 120;
30
+ /** A result older than this no longer beats the table. */
31
+ readonly staleAfterDays: 30;
32
+ /** Warm-in per ramp step (not accounted). */
33
+ readonly settleSec: 5;
34
+ /** Accounted window per ramp step. */
35
+ readonly measureSec: 20;
36
+ /** Longest the drain may take before the run is refused. */
37
+ readonly drainTimeoutSec: 120;
38
+ /** Candidate models per device in one run. */
39
+ readonly maxModelsPerDevice: 6;
40
+ };
41
+ /** The two measurements a run can make. */
42
+ export declare const NodeBenchmarkPhaseSchema: z.ZodEnum<{
43
+ pipeline: "pipeline";
44
+ device: "device";
45
+ }>;
46
+ export type NodeBenchmarkPhase = z.infer<typeof NodeBenchmarkPhaseSchema>;
47
+ export declare const NodeBenchmarkDevicePlanSchema: z.ZodObject<{
48
+ deviceKey: z.ZodString;
49
+ modelIds: z.ZodArray<z.ZodString>;
50
+ }, z.core.$strip>;
51
+ export type NodeBenchmarkDevicePlan = z.infer<typeof NodeBenchmarkDevicePlanSchema>;
52
+ /** What the operator confirmed. */
53
+ export declare const NodeBenchmarkPlanSchema: z.ZodObject<{
54
+ nodeId: z.ZodString;
55
+ devices: z.ZodArray<z.ZodObject<{
56
+ deviceKey: z.ZodString;
57
+ modelIds: z.ZodArray<z.ZodString>;
58
+ }, z.core.$strip>>;
59
+ phases: z.ZodDefault<z.ZodArray<z.ZodEnum<{
60
+ pipeline: "pipeline";
61
+ device: "device";
62
+ }>>>;
63
+ steps: z.ZodDefault<z.ZodArray<z.ZodString>>;
64
+ fpsPerStream: z.ZodDefault<z.ZodNumber>;
65
+ budgetMinutes: z.ZodDefault<z.ZodNumber>;
66
+ keepDownloadedModels: z.ZodDefault<z.ZodBoolean>;
67
+ acceptInsufficientHeadroom: z.ZodDefault<z.ZodBoolean>;
68
+ }, z.core.$strip>;
69
+ export type NodeBenchmarkPlan = z.infer<typeof NodeBenchmarkPlanSchema>;
70
+ export type NodeBenchmarkPlanInput = z.input<typeof NodeBenchmarkPlanSchema>;
71
+ /** Why a run cannot start. `overridable` ones are lifted by a plan flag. */
72
+ export declare const NodeBenchmarkRefusalKindSchema: z.ZodEnum<{
73
+ "unknown-device": "unknown-device";
74
+ "benchmark-active": "benchmark-active";
75
+ "node-offline": "node-offline";
76
+ "no-phase": "no-phase";
77
+ "insufficient-headroom": "insufficient-headroom";
78
+ }>;
79
+ export type NodeBenchmarkRefusalKind = z.infer<typeof NodeBenchmarkRefusalKindSchema>;
80
+ export declare const NodeBenchmarkRefusalSchema: z.ZodObject<{
81
+ kind: z.ZodEnum<{
82
+ "unknown-device": "unknown-device";
83
+ "benchmark-active": "benchmark-active";
84
+ "node-offline": "node-offline";
85
+ "no-phase": "no-phase";
86
+ "insufficient-headroom": "insufficient-headroom";
87
+ }>;
88
+ detail: z.ZodString;
89
+ overridable: z.ZodBoolean;
90
+ }, z.core.$strip>;
91
+ export type NodeBenchmarkRefusal = z.infer<typeof NodeBenchmarkRefusalSchema>;
92
+ /** A camera whose detection leaves the node for the run. */
93
+ export declare const NodeBenchmarkMovingCameraSchema: z.ZodObject<{
94
+ deviceId: z.ZodNumber;
95
+ placedOnNode: z.ZodBoolean;
96
+ pinnedToNode: z.ZodBoolean;
97
+ }, z.core.$strip>;
98
+ export type NodeBenchmarkMovingCamera = z.infer<typeof NodeBenchmarkMovingCameraSchema>;
99
+ /** A camera that cannot leave: no other node can obtain its frames. */
100
+ export declare const NodeBenchmarkStayingCameraSchema: z.ZodObject<{
101
+ deviceId: z.ZodNumber;
102
+ reason: z.ZodLiteral<"only-frame-source">;
103
+ }, z.core.$strip>;
104
+ export type NodeBenchmarkStayingCamera = z.infer<typeof NodeBenchmarkStayingCameraSchema>;
105
+ export declare const NodeBenchmarkPreflightSchema: z.ZodObject<{
106
+ nodeId: z.ZodString;
107
+ online: z.ZodBoolean;
108
+ moving: z.ZodReadonly<z.ZodArray<z.ZodObject<{
109
+ deviceId: z.ZodNumber;
110
+ placedOnNode: z.ZodBoolean;
111
+ pinnedToNode: z.ZodBoolean;
112
+ }, z.core.$strip>>>;
113
+ staying: z.ZodReadonly<z.ZodArray<z.ZodObject<{
114
+ deviceId: z.ZodNumber;
115
+ reason: z.ZodLiteral<"only-frame-source">;
116
+ }, z.core.$strip>>>;
117
+ estimatedDurationMs: z.ZodNumber;
118
+ budgetMs: z.ZodNumber;
119
+ phases: z.ZodReadonly<z.ZodArray<z.ZodEnum<{
120
+ pipeline: "pipeline";
121
+ device: "device";
122
+ }>>>;
123
+ steps: z.ZodReadonly<z.ZodArray<z.ZodString>>;
124
+ devices: z.ZodReadonly<z.ZodArray<z.ZodObject<{
125
+ deviceKey: z.ZodString;
126
+ modelIds: z.ZodArray<z.ZodString>;
127
+ }, z.core.$strip>>>;
128
+ headroom: z.ZodObject<{
129
+ sessionsNow: z.ZodNumber;
130
+ otherNodesCapacitySessions: z.ZodNullable<z.ZodNumber>;
131
+ }, z.core.$strip>;
132
+ refusals: z.ZodReadonly<z.ZodArray<z.ZodObject<{
133
+ kind: z.ZodEnum<{
134
+ "unknown-device": "unknown-device";
135
+ "benchmark-active": "benchmark-active";
136
+ "node-offline": "node-offline";
137
+ "no-phase": "no-phase";
138
+ "insufficient-headroom": "insufficient-headroom";
139
+ }>;
140
+ detail: z.ZodString;
141
+ overridable: z.ZodBoolean;
142
+ }, z.core.$strip>>>;
143
+ canStart: z.ZodBoolean;
144
+ }, z.core.$strip>;
145
+ export type NodeBenchmarkPreflight = z.infer<typeof NodeBenchmarkPreflightSchema>;
146
+ /** Where the measuring runner is. */
147
+ export declare const NodeBenchProgressSchema: z.ZodObject<{
148
+ phase: z.ZodEnum<{
149
+ pipeline: "pipeline";
150
+ device: "device";
151
+ preparing: "preparing";
152
+ cleanup: "cleanup";
153
+ }>;
154
+ deviceKey: z.ZodNullable<z.ZodString>;
155
+ modelId: z.ZodNullable<z.ZodString>;
156
+ load: z.ZodNullable<z.ZodNumber>;
157
+ cellsDone: z.ZodNumber;
158
+ cellsTotal: z.ZodNumber;
159
+ message: z.ZodString;
160
+ }, z.core.$strip>;
161
+ export type NodeBenchProgress = z.infer<typeof NodeBenchProgressSchema>;
162
+ /** What limited a ramp. `none` = the ramp ran out of steps still passing. */
163
+ export declare const NodeBenchLimitSchema: z.ZodEnum<{
164
+ errors: "errors";
165
+ none: "none";
166
+ cpu: "cpu";
167
+ p95: "p95";
168
+ drops: "drops";
169
+ stall: "stall";
170
+ ram: "ram";
171
+ }>;
172
+ export type NodeBenchLimit = z.infer<typeof NodeBenchLimitSchema>;
173
+ export declare const NodeBenchRampStepSchema: z.ZodObject<{
174
+ load: z.ZodNumber;
175
+ pass: z.ZodBoolean;
176
+ p95Ms: z.ZodNumber;
177
+ dropRatio: z.ZodNumber;
178
+ fps: z.ZodNumber;
179
+ cpuPct: z.ZodNullable<z.ZodNumber>;
180
+ ramFreePct: z.ZodNullable<z.ZodNumber>;
181
+ failReasons: z.ZodReadonly<z.ZodArray<z.ZodString>>;
182
+ }, z.core.$strip>;
183
+ export type NodeBenchRampStep = z.infer<typeof NodeBenchRampStepSchema>;
184
+ /** One measured device × detector (the `device` measurement). */
185
+ export declare const NodeBenchDeviceCellSchema: z.ZodObject<{
186
+ phase: z.ZodLiteral<"device">;
187
+ deviceKey: z.ZodString;
188
+ modelId: z.ZodString;
189
+ p50Ms: z.ZodNumber;
190
+ p95Ms: z.ZodNumber;
191
+ p99Ms: z.ZodNumber;
192
+ fps: z.ZodNumber;
193
+ kMax: z.ZodNumber;
194
+ limitedBy: z.ZodEnum<{
195
+ errors: "errors";
196
+ none: "none";
197
+ cpu: "cpu";
198
+ p95: "p95";
199
+ drops: "drops";
200
+ stall: "stall";
201
+ ram: "ram";
202
+ }>;
203
+ warmupMs: z.ZodNumber;
204
+ ramp: z.ZodReadonly<z.ZodArray<z.ZodObject<{
205
+ load: z.ZodNumber;
206
+ pass: z.ZodBoolean;
207
+ p95Ms: z.ZodNumber;
208
+ dropRatio: z.ZodNumber;
209
+ fps: z.ZodNumber;
210
+ cpuPct: z.ZodNullable<z.ZodNumber>;
211
+ ramFreePct: z.ZodNullable<z.ZodNumber>;
212
+ failReasons: z.ZodReadonly<z.ZodArray<z.ZodString>>;
213
+ }, z.core.$strip>>>;
214
+ }, z.core.$strip>;
215
+ export type NodeBenchDeviceCell = z.infer<typeof NodeBenchDeviceCellSchema>;
216
+ /** One measured pipeline (the `pipeline` measurement) on a device. */
217
+ export declare const NodeBenchPipelineCellSchema: z.ZodObject<{
218
+ phase: z.ZodLiteral<"pipeline">;
219
+ deviceKey: z.ZodString;
220
+ modelId: z.ZodString;
221
+ steps: z.ZodReadonly<z.ZodArray<z.ZodString>>;
222
+ maxSessions: z.ZodNumber;
223
+ limitedBy: z.ZodEnum<{
224
+ errors: "errors";
225
+ none: "none";
226
+ cpu: "cpu";
227
+ p95: "p95";
228
+ drops: "drops";
229
+ stall: "stall";
230
+ ram: "ram";
231
+ }>;
232
+ stepsFired: z.ZodReadonly<z.ZodArray<z.ZodString>>;
233
+ warmupMs: z.ZodNumber;
234
+ ramp: z.ZodReadonly<z.ZodArray<z.ZodObject<{
235
+ load: z.ZodNumber;
236
+ pass: z.ZodBoolean;
237
+ p95Ms: z.ZodNumber;
238
+ dropRatio: z.ZodNumber;
239
+ fps: z.ZodNumber;
240
+ cpuPct: z.ZodNullable<z.ZodNumber>;
241
+ ramFreePct: z.ZodNullable<z.ZodNumber>;
242
+ failReasons: z.ZodReadonly<z.ZodArray<z.ZodString>>;
243
+ }, z.core.$strip>>>;
244
+ }, z.core.$strip>;
245
+ export type NodeBenchPipelineCell = z.infer<typeof NodeBenchPipelineCellSchema>;
246
+ export declare const NodeBenchCellSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
247
+ phase: z.ZodLiteral<"device">;
248
+ deviceKey: z.ZodString;
249
+ modelId: z.ZodString;
250
+ p50Ms: z.ZodNumber;
251
+ p95Ms: z.ZodNumber;
252
+ p99Ms: z.ZodNumber;
253
+ fps: z.ZodNumber;
254
+ kMax: z.ZodNumber;
255
+ limitedBy: z.ZodEnum<{
256
+ errors: "errors";
257
+ none: "none";
258
+ cpu: "cpu";
259
+ p95: "p95";
260
+ drops: "drops";
261
+ stall: "stall";
262
+ ram: "ram";
263
+ }>;
264
+ warmupMs: z.ZodNumber;
265
+ ramp: z.ZodReadonly<z.ZodArray<z.ZodObject<{
266
+ load: z.ZodNumber;
267
+ pass: z.ZodBoolean;
268
+ p95Ms: z.ZodNumber;
269
+ dropRatio: z.ZodNumber;
270
+ fps: z.ZodNumber;
271
+ cpuPct: z.ZodNullable<z.ZodNumber>;
272
+ ramFreePct: z.ZodNullable<z.ZodNumber>;
273
+ failReasons: z.ZodReadonly<z.ZodArray<z.ZodString>>;
274
+ }, z.core.$strip>>>;
275
+ }, z.core.$strip>, z.ZodObject<{
276
+ phase: z.ZodLiteral<"pipeline">;
277
+ deviceKey: z.ZodString;
278
+ modelId: z.ZodString;
279
+ steps: z.ZodReadonly<z.ZodArray<z.ZodString>>;
280
+ maxSessions: z.ZodNumber;
281
+ limitedBy: z.ZodEnum<{
282
+ errors: "errors";
283
+ none: "none";
284
+ cpu: "cpu";
285
+ p95: "p95";
286
+ drops: "drops";
287
+ stall: "stall";
288
+ ram: "ram";
289
+ }>;
290
+ stepsFired: z.ZodReadonly<z.ZodArray<z.ZodString>>;
291
+ warmupMs: z.ZodNumber;
292
+ ramp: z.ZodReadonly<z.ZodArray<z.ZodObject<{
293
+ load: z.ZodNumber;
294
+ pass: z.ZodBoolean;
295
+ p95Ms: z.ZodNumber;
296
+ dropRatio: z.ZodNumber;
297
+ fps: z.ZodNumber;
298
+ cpuPct: z.ZodNullable<z.ZodNumber>;
299
+ ramFreePct: z.ZodNullable<z.ZodNumber>;
300
+ failReasons: z.ZodReadonly<z.ZodArray<z.ZodString>>;
301
+ }, z.core.$strip>>>;
302
+ }, z.core.$strip>], "phase">;
303
+ export type NodeBenchCell = z.infer<typeof NodeBenchCellSchema>;
304
+ /**
305
+ * What a result was measured ON. A result whose fingerprint no longer matches
306
+ * the node no longer beats the table.
307
+ */
308
+ export declare const NodeBenchFingerprintSchema: z.ZodObject<{
309
+ pipelineVersion: z.ZodNullable<z.ZodString>;
310
+ cpuModel: z.ZodNullable<z.ZodString>;
311
+ ramGb: z.ZodNullable<z.ZodNumber>;
312
+ os: z.ZodNullable<z.ZodString>;
313
+ pools: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
314
+ runtime: z.ZodString;
315
+ numWorkers: z.ZodNumber;
316
+ concurrency: z.ZodNumber;
317
+ batchMode: z.ZodString;
318
+ }, z.core.$strip>>>;
319
+ }, z.core.$strip>;
320
+ export type NodeBenchFingerprint = z.infer<typeof NodeBenchFingerprintSchema>;
321
+ /** The frames the run used. */
322
+ export declare const NodeBenchClipSchema: z.ZodObject<{
323
+ id: z.ZodString;
324
+ revision: z.ZodNullable<z.ZodString>;
325
+ frames: z.ZodNumber;
326
+ width: z.ZodNumber;
327
+ height: z.ZodNumber;
328
+ }, z.core.$strip>;
329
+ export type NodeBenchClip = z.infer<typeof NodeBenchClipSchema>;
330
+ export declare const NodeBenchRunnerInputSchema: z.ZodObject<{
331
+ runId: z.ZodString;
332
+ devices: z.ZodArray<z.ZodObject<{
333
+ deviceKey: z.ZodString;
334
+ modelIds: z.ZodArray<z.ZodString>;
335
+ }, z.core.$strip>>;
336
+ phases: z.ZodArray<z.ZodEnum<{
337
+ pipeline: "pipeline";
338
+ device: "device";
339
+ }>>;
340
+ steps: z.ZodDefault<z.ZodArray<z.ZodString>>;
341
+ fpsPerStream: z.ZodNumber;
342
+ deadlineAtMs: z.ZodNumber;
343
+ settleSec: z.ZodDefault<z.ZodNumber>;
344
+ measureSec: z.ZodDefault<z.ZodNumber>;
345
+ keepDownloadedModels: z.ZodDefault<z.ZodBoolean>;
346
+ }, z.core.$strip>;
347
+ export type NodeBenchRunnerInput = z.infer<typeof NodeBenchRunnerInputSchema>;
348
+ export type NodeBenchRunnerInputRaw = z.input<typeof NodeBenchRunnerInputSchema>;
349
+ export declare const NodeBenchRunnerStateSchema: z.ZodEnum<{
350
+ running: "running";
351
+ done: "done";
352
+ failed: "failed";
353
+ aborted: "aborted";
354
+ }>;
355
+ export type NodeBenchRunnerState = z.infer<typeof NodeBenchRunnerStateSchema>;
356
+ export declare const NodeBenchRunnerStatusSchema: z.ZodObject<{
357
+ runId: z.ZodString;
358
+ nodeId: z.ZodString;
359
+ state: z.ZodEnum<{
360
+ running: "running";
361
+ done: "done";
362
+ failed: "failed";
363
+ aborted: "aborted";
364
+ }>;
365
+ progress: z.ZodNullable<z.ZodObject<{
366
+ phase: z.ZodEnum<{
367
+ pipeline: "pipeline";
368
+ device: "device";
369
+ preparing: "preparing";
370
+ cleanup: "cleanup";
371
+ }>;
372
+ deviceKey: z.ZodNullable<z.ZodString>;
373
+ modelId: z.ZodNullable<z.ZodString>;
374
+ load: z.ZodNullable<z.ZodNumber>;
375
+ cellsDone: z.ZodNumber;
376
+ cellsTotal: z.ZodNumber;
377
+ message: z.ZodString;
378
+ }, z.core.$strip>>;
379
+ cells: z.ZodReadonly<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
380
+ phase: z.ZodLiteral<"device">;
381
+ deviceKey: z.ZodString;
382
+ modelId: z.ZodString;
383
+ p50Ms: z.ZodNumber;
384
+ p95Ms: z.ZodNumber;
385
+ p99Ms: z.ZodNumber;
386
+ fps: z.ZodNumber;
387
+ kMax: z.ZodNumber;
388
+ limitedBy: z.ZodEnum<{
389
+ errors: "errors";
390
+ none: "none";
391
+ cpu: "cpu";
392
+ p95: "p95";
393
+ drops: "drops";
394
+ stall: "stall";
395
+ ram: "ram";
396
+ }>;
397
+ warmupMs: z.ZodNumber;
398
+ ramp: z.ZodReadonly<z.ZodArray<z.ZodObject<{
399
+ load: z.ZodNumber;
400
+ pass: z.ZodBoolean;
401
+ p95Ms: z.ZodNumber;
402
+ dropRatio: z.ZodNumber;
403
+ fps: z.ZodNumber;
404
+ cpuPct: z.ZodNullable<z.ZodNumber>;
405
+ ramFreePct: z.ZodNullable<z.ZodNumber>;
406
+ failReasons: z.ZodReadonly<z.ZodArray<z.ZodString>>;
407
+ }, z.core.$strip>>>;
408
+ }, z.core.$strip>, z.ZodObject<{
409
+ phase: z.ZodLiteral<"pipeline">;
410
+ deviceKey: z.ZodString;
411
+ modelId: z.ZodString;
412
+ steps: z.ZodReadonly<z.ZodArray<z.ZodString>>;
413
+ maxSessions: z.ZodNumber;
414
+ limitedBy: z.ZodEnum<{
415
+ errors: "errors";
416
+ none: "none";
417
+ cpu: "cpu";
418
+ p95: "p95";
419
+ drops: "drops";
420
+ stall: "stall";
421
+ ram: "ram";
422
+ }>;
423
+ stepsFired: z.ZodReadonly<z.ZodArray<z.ZodString>>;
424
+ warmupMs: z.ZodNumber;
425
+ ramp: z.ZodReadonly<z.ZodArray<z.ZodObject<{
426
+ load: z.ZodNumber;
427
+ pass: z.ZodBoolean;
428
+ p95Ms: z.ZodNumber;
429
+ dropRatio: z.ZodNumber;
430
+ fps: z.ZodNumber;
431
+ cpuPct: z.ZodNullable<z.ZodNumber>;
432
+ ramFreePct: z.ZodNullable<z.ZodNumber>;
433
+ failReasons: z.ZodReadonly<z.ZodArray<z.ZodString>>;
434
+ }, z.core.$strip>>>;
435
+ }, z.core.$strip>], "phase">>>;
436
+ fingerprint: z.ZodNullable<z.ZodObject<{
437
+ pipelineVersion: z.ZodNullable<z.ZodString>;
438
+ cpuModel: z.ZodNullable<z.ZodString>;
439
+ ramGb: z.ZodNullable<z.ZodNumber>;
440
+ os: z.ZodNullable<z.ZodString>;
441
+ pools: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
442
+ runtime: z.ZodString;
443
+ numWorkers: z.ZodNumber;
444
+ concurrency: z.ZodNumber;
445
+ batchMode: z.ZodString;
446
+ }, z.core.$strip>>>;
447
+ }, z.core.$strip>>;
448
+ clip: z.ZodNullable<z.ZodObject<{
449
+ id: z.ZodString;
450
+ revision: z.ZodNullable<z.ZodString>;
451
+ frames: z.ZodNumber;
452
+ width: z.ZodNumber;
453
+ height: z.ZodNumber;
454
+ }, z.core.$strip>>;
455
+ activeCameraIds: z.ZodReadonly<z.ZodArray<z.ZodNumber>>;
456
+ deletedModels: z.ZodReadonly<z.ZodArray<z.ZodString>>;
457
+ error: z.ZodNullable<z.ZodString>;
458
+ startedAtMs: z.ZodNumber;
459
+ finishedAtMs: z.ZodNullable<z.ZodNumber>;
460
+ }, z.core.$strip>;
461
+ export type NodeBenchRunnerStatus = z.infer<typeof NodeBenchRunnerStatusSchema>;
462
+ export declare const NodeBenchmarkStateSchema: z.ZodEnum<{
463
+ done: "done";
464
+ failed: "failed";
465
+ draining: "draining";
466
+ aborted: "aborted";
467
+ measuring: "measuring";
468
+ restoring: "restoring";
469
+ }>;
470
+ export type NodeBenchmarkState = z.infer<typeof NodeBenchmarkStateSchema>;
471
+ /** Why a run ended. */
472
+ export declare const NodeBenchmarkEndReasonSchema: z.ZodEnum<{
473
+ failed: "failed";
474
+ completed: "completed";
475
+ "operator-abort": "operator-abort";
476
+ deadline: "deadline";
477
+ "node-lost": "node-lost";
478
+ "runner-lost": "runner-lost";
479
+ "hub-restart": "hub-restart";
480
+ "drain-timeout": "drain-timeout";
481
+ }>;
482
+ export type NodeBenchmarkEndReason = z.infer<typeof NodeBenchmarkEndReasonSchema>;
483
+ export declare const NodeBenchmarkRunSchema: z.ZodObject<{
484
+ runId: z.ZodString;
485
+ nodeId: z.ZodString;
486
+ state: z.ZodEnum<{
487
+ done: "done";
488
+ failed: "failed";
489
+ draining: "draining";
490
+ aborted: "aborted";
491
+ measuring: "measuring";
492
+ restoring: "restoring";
493
+ }>;
494
+ plan: z.ZodObject<{
495
+ nodeId: z.ZodString;
496
+ devices: z.ZodArray<z.ZodObject<{
497
+ deviceKey: z.ZodString;
498
+ modelIds: z.ZodArray<z.ZodString>;
499
+ }, z.core.$strip>>;
500
+ phases: z.ZodDefault<z.ZodArray<z.ZodEnum<{
501
+ pipeline: "pipeline";
502
+ device: "device";
503
+ }>>>;
504
+ steps: z.ZodDefault<z.ZodArray<z.ZodString>>;
505
+ fpsPerStream: z.ZodDefault<z.ZodNumber>;
506
+ budgetMinutes: z.ZodDefault<z.ZodNumber>;
507
+ keepDownloadedModels: z.ZodDefault<z.ZodBoolean>;
508
+ acceptInsufficientHeadroom: z.ZodDefault<z.ZodBoolean>;
509
+ }, z.core.$strip>;
510
+ startedAtMs: z.ZodNumber;
511
+ deadlineAtMs: z.ZodNumber;
512
+ finishedAtMs: z.ZodNullable<z.ZodNumber>;
513
+ endReason: z.ZodNullable<z.ZodEnum<{
514
+ failed: "failed";
515
+ completed: "completed";
516
+ "operator-abort": "operator-abort";
517
+ deadline: "deadline";
518
+ "node-lost": "node-lost";
519
+ "runner-lost": "runner-lost";
520
+ "hub-restart": "hub-restart";
521
+ "drain-timeout": "drain-timeout";
522
+ }>>;
523
+ error: z.ZodNullable<z.ZodString>;
524
+ moved: z.ZodReadonly<z.ZodArray<z.ZodNumber>>;
525
+ staying: z.ZodReadonly<z.ZodArray<z.ZodNumber>>;
526
+ contaminated: z.ZodBoolean;
527
+ progress: z.ZodNullable<z.ZodObject<{
528
+ phase: z.ZodEnum<{
529
+ pipeline: "pipeline";
530
+ device: "device";
531
+ preparing: "preparing";
532
+ cleanup: "cleanup";
533
+ }>;
534
+ deviceKey: z.ZodNullable<z.ZodString>;
535
+ modelId: z.ZodNullable<z.ZodString>;
536
+ load: z.ZodNullable<z.ZodNumber>;
537
+ cellsDone: z.ZodNumber;
538
+ cellsTotal: z.ZodNumber;
539
+ message: z.ZodString;
540
+ }, z.core.$strip>>;
541
+ resultIds: z.ZodReadonly<z.ZodArray<z.ZodString>>;
542
+ }, z.core.$strip>;
543
+ export type NodeBenchmarkRun = z.infer<typeof NodeBenchmarkRunSchema>;
544
+ /** `getNodeBenchmarkStatus`: the active run (or the last one), and whether benchmark mode is on. */
545
+ export declare const NodeBenchmarkStatusSchema: z.ZodObject<{
546
+ modeNodeId: z.ZodNullable<z.ZodString>;
547
+ run: z.ZodNullable<z.ZodObject<{
548
+ runId: z.ZodString;
549
+ nodeId: z.ZodString;
550
+ state: z.ZodEnum<{
551
+ done: "done";
552
+ failed: "failed";
553
+ draining: "draining";
554
+ aborted: "aborted";
555
+ measuring: "measuring";
556
+ restoring: "restoring";
557
+ }>;
558
+ plan: z.ZodObject<{
559
+ nodeId: z.ZodString;
560
+ devices: z.ZodArray<z.ZodObject<{
561
+ deviceKey: z.ZodString;
562
+ modelIds: z.ZodArray<z.ZodString>;
563
+ }, z.core.$strip>>;
564
+ phases: z.ZodDefault<z.ZodArray<z.ZodEnum<{
565
+ pipeline: "pipeline";
566
+ device: "device";
567
+ }>>>;
568
+ steps: z.ZodDefault<z.ZodArray<z.ZodString>>;
569
+ fpsPerStream: z.ZodDefault<z.ZodNumber>;
570
+ budgetMinutes: z.ZodDefault<z.ZodNumber>;
571
+ keepDownloadedModels: z.ZodDefault<z.ZodBoolean>;
572
+ acceptInsufficientHeadroom: z.ZodDefault<z.ZodBoolean>;
573
+ }, z.core.$strip>;
574
+ startedAtMs: z.ZodNumber;
575
+ deadlineAtMs: z.ZodNumber;
576
+ finishedAtMs: z.ZodNullable<z.ZodNumber>;
577
+ endReason: z.ZodNullable<z.ZodEnum<{
578
+ failed: "failed";
579
+ completed: "completed";
580
+ "operator-abort": "operator-abort";
581
+ deadline: "deadline";
582
+ "node-lost": "node-lost";
583
+ "runner-lost": "runner-lost";
584
+ "hub-restart": "hub-restart";
585
+ "drain-timeout": "drain-timeout";
586
+ }>>;
587
+ error: z.ZodNullable<z.ZodString>;
588
+ moved: z.ZodReadonly<z.ZodArray<z.ZodNumber>>;
589
+ staying: z.ZodReadonly<z.ZodArray<z.ZodNumber>>;
590
+ contaminated: z.ZodBoolean;
591
+ progress: z.ZodNullable<z.ZodObject<{
592
+ phase: z.ZodEnum<{
593
+ pipeline: "pipeline";
594
+ device: "device";
595
+ preparing: "preparing";
596
+ cleanup: "cleanup";
597
+ }>;
598
+ deviceKey: z.ZodNullable<z.ZodString>;
599
+ modelId: z.ZodNullable<z.ZodString>;
600
+ load: z.ZodNullable<z.ZodNumber>;
601
+ cellsDone: z.ZodNumber;
602
+ cellsTotal: z.ZodNumber;
603
+ message: z.ZodString;
604
+ }, z.core.$strip>>;
605
+ resultIds: z.ZodReadonly<z.ZodArray<z.ZodString>>;
606
+ }, z.core.$strip>>;
607
+ }, z.core.$strip>;
608
+ export type NodeBenchmarkStatus = z.infer<typeof NodeBenchmarkStatusSchema>;
609
+ /**
610
+ * One stored measurement — the only authority Auto tune and the automatic
611
+ * shares read measured capacity from. Written by the orchestrator when a run
612
+ * ends, never by anyone else.
613
+ */
614
+ export declare const NodeBenchmarkResultSchema: z.ZodObject<{
615
+ id: z.ZodString;
616
+ runId: z.ZodString;
617
+ nodeId: z.ZodString;
618
+ cell: z.ZodDiscriminatedUnion<[z.ZodObject<{
619
+ phase: z.ZodLiteral<"device">;
620
+ deviceKey: z.ZodString;
621
+ modelId: z.ZodString;
622
+ p50Ms: z.ZodNumber;
623
+ p95Ms: z.ZodNumber;
624
+ p99Ms: z.ZodNumber;
625
+ fps: z.ZodNumber;
626
+ kMax: z.ZodNumber;
627
+ limitedBy: z.ZodEnum<{
628
+ errors: "errors";
629
+ none: "none";
630
+ cpu: "cpu";
631
+ p95: "p95";
632
+ drops: "drops";
633
+ stall: "stall";
634
+ ram: "ram";
635
+ }>;
636
+ warmupMs: z.ZodNumber;
637
+ ramp: z.ZodReadonly<z.ZodArray<z.ZodObject<{
638
+ load: z.ZodNumber;
639
+ pass: z.ZodBoolean;
640
+ p95Ms: z.ZodNumber;
641
+ dropRatio: z.ZodNumber;
642
+ fps: z.ZodNumber;
643
+ cpuPct: z.ZodNullable<z.ZodNumber>;
644
+ ramFreePct: z.ZodNullable<z.ZodNumber>;
645
+ failReasons: z.ZodReadonly<z.ZodArray<z.ZodString>>;
646
+ }, z.core.$strip>>>;
647
+ }, z.core.$strip>, z.ZodObject<{
648
+ phase: z.ZodLiteral<"pipeline">;
649
+ deviceKey: z.ZodString;
650
+ modelId: z.ZodString;
651
+ steps: z.ZodReadonly<z.ZodArray<z.ZodString>>;
652
+ maxSessions: z.ZodNumber;
653
+ limitedBy: z.ZodEnum<{
654
+ errors: "errors";
655
+ none: "none";
656
+ cpu: "cpu";
657
+ p95: "p95";
658
+ drops: "drops";
659
+ stall: "stall";
660
+ ram: "ram";
661
+ }>;
662
+ stepsFired: z.ZodReadonly<z.ZodArray<z.ZodString>>;
663
+ warmupMs: z.ZodNumber;
664
+ ramp: z.ZodReadonly<z.ZodArray<z.ZodObject<{
665
+ load: z.ZodNumber;
666
+ pass: z.ZodBoolean;
667
+ p95Ms: z.ZodNumber;
668
+ dropRatio: z.ZodNumber;
669
+ fps: z.ZodNumber;
670
+ cpuPct: z.ZodNullable<z.ZodNumber>;
671
+ ramFreePct: z.ZodNullable<z.ZodNumber>;
672
+ failReasons: z.ZodReadonly<z.ZodArray<z.ZodString>>;
673
+ }, z.core.$strip>>>;
674
+ }, z.core.$strip>], "phase">;
675
+ fpsPerStream: z.ZodNumber;
676
+ fingerprint: z.ZodNullable<z.ZodObject<{
677
+ pipelineVersion: z.ZodNullable<z.ZodString>;
678
+ cpuModel: z.ZodNullable<z.ZodString>;
679
+ ramGb: z.ZodNullable<z.ZodNumber>;
680
+ os: z.ZodNullable<z.ZodString>;
681
+ pools: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
682
+ runtime: z.ZodString;
683
+ numWorkers: z.ZodNumber;
684
+ concurrency: z.ZodNumber;
685
+ batchMode: z.ZodString;
686
+ }, z.core.$strip>>>;
687
+ }, z.core.$strip>>;
688
+ clip: z.ZodNullable<z.ZodObject<{
689
+ id: z.ZodString;
690
+ revision: z.ZodNullable<z.ZodString>;
691
+ frames: z.ZodNumber;
692
+ width: z.ZodNumber;
693
+ height: z.ZodNumber;
694
+ }, z.core.$strip>>;
695
+ contaminated: z.ZodBoolean;
696
+ stayingCameras: z.ZodReadonly<z.ZodArray<z.ZodNumber>>;
697
+ partialRun: z.ZodBoolean;
698
+ measuredAtMs: z.ZodNumber;
699
+ }, z.core.$strip>;
700
+ export type NodeBenchmarkResult = z.infer<typeof NodeBenchmarkResultSchema>;
701
+ export declare const ListNodeBenchmarkResultsInputSchema: z.ZodObject<{
702
+ nodeId: z.ZodOptional<z.ZodString>;
703
+ deviceKey: z.ZodOptional<z.ZodString>;
704
+ }, z.core.$strip>;
705
+ export type ListNodeBenchmarkResultsInput = z.infer<typeof ListNodeBenchmarkResultsInputSchema>;
706
+ /** A result with its standing today: does it still beat the table? */
707
+ export declare const NodeBenchmarkResultViewSchema: z.ZodObject<{
708
+ id: z.ZodString;
709
+ runId: z.ZodString;
710
+ nodeId: z.ZodString;
711
+ cell: z.ZodDiscriminatedUnion<[z.ZodObject<{
712
+ phase: z.ZodLiteral<"device">;
713
+ deviceKey: z.ZodString;
714
+ modelId: z.ZodString;
715
+ p50Ms: z.ZodNumber;
716
+ p95Ms: z.ZodNumber;
717
+ p99Ms: z.ZodNumber;
718
+ fps: z.ZodNumber;
719
+ kMax: z.ZodNumber;
720
+ limitedBy: z.ZodEnum<{
721
+ errors: "errors";
722
+ none: "none";
723
+ cpu: "cpu";
724
+ p95: "p95";
725
+ drops: "drops";
726
+ stall: "stall";
727
+ ram: "ram";
728
+ }>;
729
+ warmupMs: z.ZodNumber;
730
+ ramp: z.ZodReadonly<z.ZodArray<z.ZodObject<{
731
+ load: z.ZodNumber;
732
+ pass: z.ZodBoolean;
733
+ p95Ms: z.ZodNumber;
734
+ dropRatio: z.ZodNumber;
735
+ fps: z.ZodNumber;
736
+ cpuPct: z.ZodNullable<z.ZodNumber>;
737
+ ramFreePct: z.ZodNullable<z.ZodNumber>;
738
+ failReasons: z.ZodReadonly<z.ZodArray<z.ZodString>>;
739
+ }, z.core.$strip>>>;
740
+ }, z.core.$strip>, z.ZodObject<{
741
+ phase: z.ZodLiteral<"pipeline">;
742
+ deviceKey: z.ZodString;
743
+ modelId: z.ZodString;
744
+ steps: z.ZodReadonly<z.ZodArray<z.ZodString>>;
745
+ maxSessions: z.ZodNumber;
746
+ limitedBy: z.ZodEnum<{
747
+ errors: "errors";
748
+ none: "none";
749
+ cpu: "cpu";
750
+ p95: "p95";
751
+ drops: "drops";
752
+ stall: "stall";
753
+ ram: "ram";
754
+ }>;
755
+ stepsFired: z.ZodReadonly<z.ZodArray<z.ZodString>>;
756
+ warmupMs: z.ZodNumber;
757
+ ramp: z.ZodReadonly<z.ZodArray<z.ZodObject<{
758
+ load: z.ZodNumber;
759
+ pass: z.ZodBoolean;
760
+ p95Ms: z.ZodNumber;
761
+ dropRatio: z.ZodNumber;
762
+ fps: z.ZodNumber;
763
+ cpuPct: z.ZodNullable<z.ZodNumber>;
764
+ ramFreePct: z.ZodNullable<z.ZodNumber>;
765
+ failReasons: z.ZodReadonly<z.ZodArray<z.ZodString>>;
766
+ }, z.core.$strip>>>;
767
+ }, z.core.$strip>], "phase">;
768
+ fpsPerStream: z.ZodNumber;
769
+ fingerprint: z.ZodNullable<z.ZodObject<{
770
+ pipelineVersion: z.ZodNullable<z.ZodString>;
771
+ cpuModel: z.ZodNullable<z.ZodString>;
772
+ ramGb: z.ZodNullable<z.ZodNumber>;
773
+ os: z.ZodNullable<z.ZodString>;
774
+ pools: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
775
+ runtime: z.ZodString;
776
+ numWorkers: z.ZodNumber;
777
+ concurrency: z.ZodNumber;
778
+ batchMode: z.ZodString;
779
+ }, z.core.$strip>>>;
780
+ }, z.core.$strip>>;
781
+ clip: z.ZodNullable<z.ZodObject<{
782
+ id: z.ZodString;
783
+ revision: z.ZodNullable<z.ZodString>;
784
+ frames: z.ZodNumber;
785
+ width: z.ZodNumber;
786
+ height: z.ZodNumber;
787
+ }, z.core.$strip>>;
788
+ contaminated: z.ZodBoolean;
789
+ stayingCameras: z.ZodReadonly<z.ZodArray<z.ZodNumber>>;
790
+ partialRun: z.ZodBoolean;
791
+ measuredAtMs: z.ZodNumber;
792
+ standing: z.ZodEnum<{
793
+ superseded: "superseded";
794
+ stale: "stale";
795
+ fresh: "fresh";
796
+ }>;
797
+ staleWhy: z.ZodNullable<z.ZodEnum<{
798
+ runtime: "runtime";
799
+ age: "age";
800
+ "pool-tuning": "pool-tuning";
801
+ }>>;
802
+ }, z.core.$strip>;
803
+ export type NodeBenchmarkResultView = z.infer<typeof NodeBenchmarkResultViewSchema>;
804
+ /** The manifest persisted BEFORE benchmark mode changes anything; its presence means "restore". */
805
+ export declare const NodeBenchmarkManifestSchema: z.ZodObject<{
806
+ runId: z.ZodString;
807
+ nodeId: z.ZodString;
808
+ startedAtMs: z.ZodNumber;
809
+ deadlineAtMs: z.ZodNumber;
810
+ plan: z.ZodObject<{
811
+ nodeId: z.ZodString;
812
+ devices: z.ZodArray<z.ZodObject<{
813
+ deviceKey: z.ZodString;
814
+ modelIds: z.ZodArray<z.ZodString>;
815
+ }, z.core.$strip>>;
816
+ phases: z.ZodDefault<z.ZodArray<z.ZodEnum<{
817
+ pipeline: "pipeline";
818
+ device: "device";
819
+ }>>>;
820
+ steps: z.ZodDefault<z.ZodArray<z.ZodString>>;
821
+ fpsPerStream: z.ZodDefault<z.ZodNumber>;
822
+ budgetMinutes: z.ZodDefault<z.ZodNumber>;
823
+ keepDownloadedModels: z.ZodDefault<z.ZodBoolean>;
824
+ acceptInsufficientHeadroom: z.ZodDefault<z.ZodBoolean>;
825
+ }, z.core.$strip>;
826
+ moved: z.ZodReadonly<z.ZodArray<z.ZodNumber>>;
827
+ staying: z.ZodReadonly<z.ZodArray<z.ZodNumber>>;
828
+ }, z.core.$strip>;
829
+ export type NodeBenchmarkManifest = z.infer<typeof NodeBenchmarkManifestSchema>;
830
+ /** Candidate detectors per device, for the plan editor. */
831
+ export declare const NodeBenchmarkCandidatesSchema: z.ZodObject<{
832
+ nodeId: z.ZodString;
833
+ reachable: z.ZodBoolean;
834
+ devices: z.ZodReadonly<z.ZodArray<z.ZodObject<{
835
+ deviceKey: z.ZodString;
836
+ enabled: z.ZodBoolean;
837
+ available: z.ZodBoolean;
838
+ suggested: z.ZodReadonly<z.ZodArray<z.ZodString>>;
839
+ all: z.ZodReadonly<z.ZodArray<z.ZodString>>;
840
+ currentModelId: z.ZodNullable<z.ZodString>;
841
+ }, z.core.$strip>>>;
842
+ steps: z.ZodReadonly<z.ZodArray<z.ZodObject<{
843
+ id: z.ZodString;
844
+ name: z.ZodString;
845
+ slot: z.ZodString;
846
+ }, z.core.$strip>>>;
847
+ }, z.core.$strip>;
848
+ export type NodeBenchmarkCandidates = z.infer<typeof NodeBenchmarkCandidatesSchema>;