@camstack/addon-osd-manager 0.1.183 → 0.1.185
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/dist/{MaskShapeCanvas-BT714ljC.mjs → MaskShapeCanvas-mrxtKs_l.mjs} +85 -85
- package/dist/MotionZonesSettings-DBooRvoC.mjs +310 -0
- package/dist/{PrivacyMaskSettings-MfIH7-Fl.mjs → PrivacyMaskSettings-BOI23HW8.mjs} +14 -14
- package/dist/{SceneMonitorEditor-B9fe5VoP.mjs → SceneMonitorEditor-Bh3b6fEU.mjs} +314 -314
- package/dist/_stub.js +4571 -4328
- package/dist/{_virtual_mf-localSharedImportMap___mfe_internal__addon_osd_manager_page-ChI8RP64.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_osd_manager_page-CKsdRf-b.mjs} +4 -4
- package/dist/_virtual_mf___mfe_internal__addon_osd_manager_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-CTH5s3ZX.mjs +26 -0
- package/dist/{_virtual_mf___mfe_internal__addon_osd_manager_page__loadShare__react__loadShare__.js-C5jUMd7X.mjs → _virtual_mf___mfe_internal__addon_osd_manager_page__loadShare__react__loadShare__.js-D7xZfSHZ.mjs} +1 -1
- package/dist/addon-osd-manager.css +1 -1
- package/dist/{hostInit-BRdQ6lL_.mjs → hostInit-CBABPQis.mjs} +3 -3
- package/dist/index.js +239 -181
- package/dist/index.mjs +239 -181
- package/dist/{player-overlays-DBos84dy.mjs → player-overlays-Do8k8gA2.mjs} +11 -11
- package/dist/remoteEntry.js +1 -1
- package/dist/{responsive-CSrcORLE.mjs → responsive-yiWJoiT1.mjs} +36 -36
- package/dist/{scene-monitor-copy-DvcsgzM2.mjs → scene-monitor-copy-6bTPHwxW.mjs} +12 -12
- package/dist/{square-BALj2dYA.mjs → square-ClXZfZgc.mjs} +1 -1
- package/dist/{trash-2-BMJXCVQ3.mjs → trash-2-Cm-45fYx.mjs} +1 -1
- package/dist/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_osd_manager_page__remoteEntry_js-2kWEtYV7.mjs → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_osd_manager_page__remoteEntry_js-BfGWacqv.mjs} +1 -1
- package/package.json +1 -1
- package/dist/MotionZonesSettings-zw2RZO3c.mjs +0 -310
- package/dist/_virtual_mf___mfe_internal__addon_osd_manager_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-CWgx3QDa.mjs +0 -26
package/dist/index.js
CHANGED
|
@@ -5382,7 +5382,7 @@ var ZodIssueCode = {
|
|
|
5382
5382
|
var ZodFirstPartyTypeKind;
|
|
5383
5383
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5384
5384
|
//#endregion
|
|
5385
|
-
//#region ../types/dist/sleep-
|
|
5385
|
+
//#region ../types/dist/sleep-DAJ9Er57.mjs
|
|
5386
5386
|
/**
|
|
5387
5387
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5388
5388
|
* window to float samples (D455).
|
|
@@ -28085,148 +28085,17 @@ var pipelineExecutorCapability = {
|
|
|
28085
28085
|
}
|
|
28086
28086
|
};
|
|
28087
28087
|
/**
|
|
28088
|
-
* Wire shapes of the Load balancing surface (D748): the session placement
|
|
28089
|
-
* policy, the atomic share write, the observed placement statistics, the
|
|
28090
|
-
* hardware share suggestion and the stale device pins.
|
|
28091
|
-
*/
|
|
28092
|
-
/**
|
|
28093
|
-
* How a new detection session picks its node and device.
|
|
28094
|
-
* - `least-loaded` — the historical rule: lowest `attached / weight`, a
|
|
28095
|
-
* constant node order at a tie (D37). An idle node always ties at 0, so a
|
|
28096
|
-
* weight only bites once a node already holds a session.
|
|
28097
|
-
* - `share` — the share of PARALLEL sessions is held to the weights, and a
|
|
28098
|
-
* full or drowning node yields to a free one (D748).
|
|
28099
|
-
*/
|
|
28100
|
-
var SessionPlacementPolicySchema = _enum(["least-loaded", "share"]);
|
|
28101
|
-
var LoadBalancingSharesInputSchema = object({
|
|
28102
|
-
/** nodeId → share (> 0). A node left out keeps its weight. */
|
|
28103
|
-
nodes: record(string(), number().positive()).default({}),
|
|
28104
|
-
/** nodeId → deviceKey → share (> 0). A device left out keeps its weight. */
|
|
28105
|
-
devices: record(string(), record(string(), number().positive())).default({})
|
|
28106
|
-
});
|
|
28107
|
-
var PlacementStatsInputSchema = object({
|
|
28108
|
-
/** Window the observed shares are averaged over (default 1 h, max 24 h). */
|
|
28109
|
-
windowMs: number().int().min(6e4).max(1440 * 60 * 1e3).default(3600 * 1e3) });
|
|
28110
|
-
var PlacementDeviceStatsSchema = object({
|
|
28111
|
-
deviceKey: string(),
|
|
28112
|
-
/** Sessions running on this device now. */
|
|
28113
|
-
sessionsNow: number(),
|
|
28114
|
-
/** Sessions started on this device inside the window. */
|
|
28115
|
-
sessionsStarted: number(),
|
|
28116
|
-
/** Time-weighted share of the node's parallel sessions over the window (0–1); null = no session ran. */
|
|
28117
|
-
observedShare: number().nullable()
|
|
28118
|
-
});
|
|
28119
|
-
var PlacementNodeStatsSchema = object({
|
|
28120
|
-
nodeId: string(),
|
|
28121
|
-
sessionsNow: number(),
|
|
28122
|
-
sessionsStarted: number(),
|
|
28123
|
-
/** Time-weighted share of the cluster's parallel sessions over the window (0–1); null = none ran. */
|
|
28124
|
-
observedShare: number().nullable(),
|
|
28125
|
-
/** Most sessions this node ran at once inside the window. */
|
|
28126
|
-
peakSessions: number(),
|
|
28127
|
-
/** Sessions a share election handed elsewhere because this node was full or drowning. */
|
|
28128
|
-
yieldsAway: number(),
|
|
28129
|
-
devices: array(PlacementDeviceStatsSchema).readonly()
|
|
28130
|
-
});
|
|
28131
|
-
/** A camera's device pin that the session path cannot honour. */
|
|
28132
|
-
var StaleDevicePinSchema = object({
|
|
28133
|
-
deviceId: number(),
|
|
28134
|
-
deviceKey: string(),
|
|
28135
|
-
/** `disabled` — the key exists on some node but is not enabled anywhere; `absent` — no node has it. */
|
|
28136
|
-
reason: _enum(["disabled", "absent"])
|
|
28137
|
-
});
|
|
28138
|
-
var PlacementStatsSchema = object({
|
|
28139
|
-
policy: SessionPlacementPolicySchema,
|
|
28140
|
-
windowMs: number(),
|
|
28141
|
-
/** How much of the window was actually observed (the hub keeps it in memory). */
|
|
28142
|
-
observedForMs: number(),
|
|
28143
|
-
sessionsNow: number(),
|
|
28144
|
-
/** Most parallel sessions across the cluster inside the window. */
|
|
28145
|
-
clusterPeakSessions: number(),
|
|
28146
|
-
nodes: array(PlacementNodeStatsSchema).readonly(),
|
|
28147
|
-
stalePins: array(StaleDevicePinSchema).readonly()
|
|
28148
|
-
});
|
|
28149
|
-
var SuggestSharesInputSchema = object({ headroom: number().min(.3).max(.5).default(.4) });
|
|
28150
|
-
var SuggestedDeviceShareSchema = object({
|
|
28151
|
-
deviceKey: string(),
|
|
28152
|
-
/** Share of the node (0–100, rounded). */
|
|
28153
|
-
share: number(),
|
|
28154
|
-
modelId: string().nullable(),
|
|
28155
|
-
/** Inferences per second at that model, from the measured table. */
|
|
28156
|
-
fps: number().nullable(),
|
|
28157
|
-
measured: boolean(),
|
|
28158
|
-
/** Advisory session cap: ⌊fps × (1 − headroom) / camera fps⌋. Never enforced. */
|
|
28159
|
-
suggestedMaxSessions: number().nullable()
|
|
28160
|
-
});
|
|
28161
|
-
var SuggestedNodeShareSchema = object({
|
|
28162
|
-
nodeId: string(),
|
|
28163
|
-
/** Share of the cluster (0–100, rounded); null = node skipped (offline, unknown hardware). */
|
|
28164
|
-
share: number().nullable(),
|
|
28165
|
-
/** Parallel sessions the node sustains at the suggested models with the headroom kept free. */
|
|
28166
|
-
capacitySessions: number(),
|
|
28167
|
-
devices: array(SuggestedDeviceShareSchema).readonly(),
|
|
28168
|
-
skippedReason: string().nullable()
|
|
28169
|
-
});
|
|
28170
|
-
var SuggestSharesResultSchema = object({
|
|
28171
|
-
headroom: number(),
|
|
28172
|
-
/** Camera detection rate the capacity is counted in (the fastest camera's fps). */
|
|
28173
|
-
cameraFps: number(),
|
|
28174
|
-
/** How many share → model → capacity rounds ran before the shares stopped moving (≤ 3). */
|
|
28175
|
-
iterations: number(),
|
|
28176
|
-
nodes: array(SuggestedNodeShareSchema).readonly()
|
|
28177
|
-
});
|
|
28178
|
-
/**
|
|
28179
|
-
* Where the node and device shares come from (D750).
|
|
28180
|
-
* - `auto` — computed by the system from the cluster's measured capacity at
|
|
28181
|
-
* the Auto tune models, and recomputed whenever a node or device joins,
|
|
28182
|
-
* leaves, is switched on or off, or changes model.
|
|
28183
|
-
* - `manual` — the operator's stored sliders. A node or device that cannot
|
|
28184
|
-
* take sessions gives its share to the others in proportion; the stored
|
|
28185
|
-
* values are never rewritten for that.
|
|
28186
|
-
*/
|
|
28187
|
-
var ShareSourceSchema = _enum(["auto", "manual"]);
|
|
28188
|
-
var SetShareSourceInputSchema = object({ source: ShareSourceSchema });
|
|
28189
|
-
object({
|
|
28190
|
-
nodes: record(string(), number()),
|
|
28191
|
-
devices: record(string(), record(string(), number()))
|
|
28192
|
-
});
|
|
28193
|
-
var EffectiveDeviceShareSchema = object({
|
|
28194
|
-
deviceKey: string(),
|
|
28195
|
-
/** Can take sessions now (enabled, available, can run the root). */
|
|
28196
|
-
eligible: boolean(),
|
|
28197
|
-
/** The share the source assigns, as a percentage of the node's devices. */
|
|
28198
|
-
configuredPct: number(),
|
|
28199
|
-
/** The share actually used, after an ineligible device's share went to the others. */
|
|
28200
|
-
effectivePct: number()
|
|
28201
|
-
});
|
|
28202
|
-
var EffectiveNodeShareSchema = object({
|
|
28203
|
-
nodeId: string(),
|
|
28204
|
-
eligible: boolean(),
|
|
28205
|
-
configuredPct: number(),
|
|
28206
|
-
effectivePct: number(),
|
|
28207
|
-
devices: array(EffectiveDeviceShareSchema).readonly()
|
|
28208
|
-
});
|
|
28209
|
-
var EffectiveSharesSchema = object({
|
|
28210
|
-
source: ShareSourceSchema,
|
|
28211
|
-
policy: SessionPlacementPolicySchema,
|
|
28212
|
-
/** `auto` with no computed answer yet: the stored sliders are used meanwhile. */
|
|
28213
|
-
autoPending: boolean(),
|
|
28214
|
-
/** When the automatic shares were last computed (ms epoch); null = never. */
|
|
28215
|
-
computedAt: number().nullable(),
|
|
28216
|
-
/** What made the system recompute them last. */
|
|
28217
|
-
trigger: string().nullable(),
|
|
28218
|
-
nodes: array(EffectiveNodeShareSchema).readonly(),
|
|
28219
|
-
/** The relative weights the election reads (before eligibility). */
|
|
28220
|
-
nodeWeights: record(string(), number()),
|
|
28221
|
-
deviceWeights: record(string(), record(string(), number()))
|
|
28222
|
-
});
|
|
28223
|
-
/**
|
|
28224
28088
|
* The wire shapes of the Auto tune plan and apply (D745), used by the
|
|
28225
28089
|
* `pipeline-orchestrator` cap. The recommender's own types
|
|
28226
|
-
* (`recommend.ts
|
|
28090
|
+
* (`recommend.ts`) are the TS face of the same data; these
|
|
28227
28091
|
* schemas are what crosses the cap boundary.
|
|
28228
28092
|
*/
|
|
28229
28093
|
var ModelFormatSchema$1 = _enum(MODEL_FORMATS);
|
|
28094
|
+
/** The operator's range for it. */
|
|
28095
|
+
var MIN_SESSIONS_PER_DEVICE_RANGE = {
|
|
28096
|
+
min: 1,
|
|
28097
|
+
max: 8
|
|
28098
|
+
};
|
|
28230
28099
|
var HardwareClassIdSchema = _enum([
|
|
28231
28100
|
"intel-core-ultra",
|
|
28232
28101
|
"intel-n-series",
|
|
@@ -28244,8 +28113,9 @@ var AcceleratorKindSchema = _enum([
|
|
|
28244
28113
|
]);
|
|
28245
28114
|
var RecommendationReasonSchema = discriminatedUnion("kind", [
|
|
28246
28115
|
object({
|
|
28247
|
-
kind: literal("
|
|
28248
|
-
|
|
28116
|
+
kind: literal("capacity"),
|
|
28117
|
+
sessions: number(),
|
|
28118
|
+
minSessions: number()
|
|
28249
28119
|
}),
|
|
28250
28120
|
object({
|
|
28251
28121
|
kind: literal("tie-faster"),
|
|
@@ -28260,16 +28130,13 @@ var RecommendationReasonSchema = discriminatedUnion("kind", [
|
|
|
28260
28130
|
}),
|
|
28261
28131
|
object({
|
|
28262
28132
|
kind: literal("no-fit-lightest"),
|
|
28263
|
-
|
|
28133
|
+
sessions: number(),
|
|
28134
|
+
minSessions: number()
|
|
28264
28135
|
}),
|
|
28265
28136
|
object({
|
|
28266
28137
|
kind: literal("derived-latency"),
|
|
28267
28138
|
modelId: string()
|
|
28268
28139
|
}),
|
|
28269
|
-
object({
|
|
28270
|
-
kind: literal("estimated-load"),
|
|
28271
|
-
observedForMs: number().nullable()
|
|
28272
|
-
}),
|
|
28273
28140
|
object({ kind: literal("cpu-device") }),
|
|
28274
28141
|
object({ kind: literal("coral-untouched") }),
|
|
28275
28142
|
object({ kind: literal("device-disabled") }),
|
|
@@ -28285,28 +28152,13 @@ var RecommendationReasonSchema = discriminatedUnion("kind", [
|
|
|
28285
28152
|
format: ModelFormatSchema$1
|
|
28286
28153
|
})
|
|
28287
28154
|
]);
|
|
28288
|
-
var DeviceDemandSchema = object({
|
|
28289
|
-
nodeId: string(),
|
|
28290
|
-
deviceKey: string(),
|
|
28291
|
-
demandFps: number(),
|
|
28292
|
-
maxCameraFps: number(),
|
|
28293
|
-
alwaysOnCameras: number(),
|
|
28294
|
-
onMotionSessions: number(),
|
|
28295
|
-
onMotionSource: _enum([
|
|
28296
|
-
"observed-24h",
|
|
28297
|
-
"estimate",
|
|
28298
|
-
"none"
|
|
28299
|
-
]),
|
|
28300
|
-
observedForMs: number().nullable(),
|
|
28301
|
-
/** How on-motion sessions were charged: per-device observation, or split by share (D748). */
|
|
28302
|
-
placement: SessionPlacementPolicySchema
|
|
28303
|
-
});
|
|
28304
28155
|
var DeviceModelChoiceSchema = object({
|
|
28305
28156
|
modelId: string(),
|
|
28306
28157
|
p50Ms: number(),
|
|
28307
28158
|
fps: number(),
|
|
28308
28159
|
measured: boolean(),
|
|
28309
|
-
|
|
28160
|
+
/** Parallel sessions at the camera rate with the headroom kept free: ⌊fps × (1 − headroom) / camera fps⌋. */
|
|
28161
|
+
capacitySessions: number(),
|
|
28310
28162
|
personRecall: number()
|
|
28311
28163
|
});
|
|
28312
28164
|
var DeviceRecommendationSchema = object({
|
|
@@ -28314,7 +28166,6 @@ var DeviceRecommendationSchema = object({
|
|
|
28314
28166
|
accelerator: AcceleratorKindSchema.nullable(),
|
|
28315
28167
|
enabled: boolean(),
|
|
28316
28168
|
available: boolean(),
|
|
28317
|
-
demand: DeviceDemandSchema.nullable(),
|
|
28318
28169
|
chosen: DeviceModelChoiceSchema.nullable(),
|
|
28319
28170
|
reasons: array(RecommendationReasonSchema).readonly()
|
|
28320
28171
|
});
|
|
@@ -28375,20 +28226,20 @@ var AutoTuneOptionsSchema = object({
|
|
|
28375
28226
|
/** Share of each accelerator's throughput kept free (0.3–0.5). */
|
|
28376
28227
|
headroom: number().min(.3).max(.5).default(.4),
|
|
28377
28228
|
/**
|
|
28378
|
-
*
|
|
28379
|
-
*
|
|
28380
|
-
*
|
|
28381
|
-
* is stored.
|
|
28229
|
+
* The least number of parallel sessions every device must sustain at the
|
|
28230
|
+
* camera rate with the headroom kept free (D755). The most accurate model
|
|
28231
|
+
* that reaches it wins.
|
|
28382
28232
|
*/
|
|
28383
|
-
|
|
28233
|
+
minSessionsPerDevice: number().int().min(MIN_SESSIONS_PER_DEVICE_RANGE.min).max(MIN_SESSIONS_PER_DEVICE_RANGE.max).default(2)
|
|
28384
28234
|
});
|
|
28385
28235
|
var AutoTunePlanSchema = object({
|
|
28386
28236
|
/** Hash of everything the apply will write — the apply refuses a different one. */
|
|
28387
28237
|
planHash: string(),
|
|
28388
28238
|
family: literal("yolov9"),
|
|
28389
28239
|
headroom: number(),
|
|
28390
|
-
|
|
28391
|
-
|
|
28240
|
+
minSessionsPerDevice: number(),
|
|
28241
|
+
/** The detection rate a session is counted at (the fastest camera running the pipeline root). */
|
|
28242
|
+
cameraFps: number(),
|
|
28392
28243
|
generatedAt: number(),
|
|
28393
28244
|
nodes: array(NodeRecommendationSchema).readonly(),
|
|
28394
28245
|
nodeChanges: array(NodeDeviceChangeSchema).readonly(),
|
|
@@ -28398,7 +28249,8 @@ var AutoTunePlanSchema = object({
|
|
|
28398
28249
|
});
|
|
28399
28250
|
var AutoTuneApplyInputSchema = object({
|
|
28400
28251
|
planHash: string(),
|
|
28401
|
-
headroom: number().min(.3).max(.5).default(.4)
|
|
28252
|
+
headroom: number().min(.3).max(.5).default(.4),
|
|
28253
|
+
minSessionsPerDevice: number().int().min(MIN_SESSIONS_PER_DEVICE_RANGE.min).max(MIN_SESSIONS_PER_DEVICE_RANGE.max).default(2)
|
|
28402
28254
|
});
|
|
28403
28255
|
var AutoTunePhaseResultSchema = object({
|
|
28404
28256
|
phase: _enum([
|
|
@@ -28430,6 +28282,177 @@ var AutoTuneApplyResultSchema = discriminatedUnion("kind", [
|
|
|
28430
28282
|
reason: _enum(["apply-in-progress"])
|
|
28431
28283
|
})
|
|
28432
28284
|
]);
|
|
28285
|
+
/**
|
|
28286
|
+
* Wire shapes of the Load balancing surface (D748): the session placement
|
|
28287
|
+
* policy, the atomic share write, the observed placement statistics, the
|
|
28288
|
+
* hardware share suggestion and the stale device pins.
|
|
28289
|
+
*/
|
|
28290
|
+
/**
|
|
28291
|
+
* How a new detection session picks its node and device.
|
|
28292
|
+
* - `least-loaded` — the historical rule: lowest `attached / weight`, a
|
|
28293
|
+
* constant node order at a tie (D37). An idle node always ties at 0, so a
|
|
28294
|
+
* weight only bites once a node already holds a session.
|
|
28295
|
+
* - `share` — the share of PARALLEL sessions is held to the weights, and a
|
|
28296
|
+
* full or drowning node yields to a free one (D748).
|
|
28297
|
+
*/
|
|
28298
|
+
var SessionPlacementPolicySchema = _enum(["least-loaded", "share"]);
|
|
28299
|
+
var LoadBalancingSharesInputSchema = object({
|
|
28300
|
+
/** nodeId → share (> 0). A node left out keeps its weight. */
|
|
28301
|
+
nodes: record(string(), number().positive()).default({}),
|
|
28302
|
+
/** nodeId → deviceKey → share (> 0). A device left out keeps its weight. */
|
|
28303
|
+
devices: record(string(), record(string(), number().positive())).default({})
|
|
28304
|
+
});
|
|
28305
|
+
var PlacementStatsInputSchema = object({
|
|
28306
|
+
/** Window the observed shares are averaged over (default 1 h, max 24 h). */
|
|
28307
|
+
windowMs: number().int().min(6e4).max(1440 * 60 * 1e3).default(3600 * 1e3) });
|
|
28308
|
+
var PlacementDeviceStatsSchema = object({
|
|
28309
|
+
deviceKey: string(),
|
|
28310
|
+
/** Sessions running on this device now. */
|
|
28311
|
+
sessionsNow: number(),
|
|
28312
|
+
/** Sessions started on this device inside the window. */
|
|
28313
|
+
sessionsStarted: number(),
|
|
28314
|
+
/** Time-weighted share of the node's parallel sessions over the window (0–1); null = no session ran. */
|
|
28315
|
+
observedShare: number().nullable()
|
|
28316
|
+
});
|
|
28317
|
+
var PlacementNodeStatsSchema = object({
|
|
28318
|
+
nodeId: string(),
|
|
28319
|
+
sessionsNow: number(),
|
|
28320
|
+
sessionsStarted: number(),
|
|
28321
|
+
/** Time-weighted share of the cluster's parallel sessions over the window (0–1); null = none ran. */
|
|
28322
|
+
observedShare: number().nullable(),
|
|
28323
|
+
/** Most sessions this node ran at once inside the window. */
|
|
28324
|
+
peakSessions: number(),
|
|
28325
|
+
/** Sessions a share election handed elsewhere because this node was full or drowning. */
|
|
28326
|
+
yieldsAway: number(),
|
|
28327
|
+
devices: array(PlacementDeviceStatsSchema).readonly()
|
|
28328
|
+
});
|
|
28329
|
+
/** A camera's device pin that the session path cannot honour. */
|
|
28330
|
+
var StaleDevicePinSchema = object({
|
|
28331
|
+
deviceId: number(),
|
|
28332
|
+
deviceKey: string(),
|
|
28333
|
+
/** `disabled` — the key exists on some node but is not enabled anywhere; `absent` — no node has it. */
|
|
28334
|
+
reason: _enum(["disabled", "absent"])
|
|
28335
|
+
});
|
|
28336
|
+
var PlacementStatsSchema = object({
|
|
28337
|
+
policy: SessionPlacementPolicySchema,
|
|
28338
|
+
windowMs: number(),
|
|
28339
|
+
/** How much of the window was actually observed (the hub keeps it in memory). */
|
|
28340
|
+
observedForMs: number(),
|
|
28341
|
+
sessionsNow: number(),
|
|
28342
|
+
/** Most parallel sessions across the cluster inside the window. */
|
|
28343
|
+
clusterPeakSessions: number(),
|
|
28344
|
+
nodes: array(PlacementNodeStatsSchema).readonly(),
|
|
28345
|
+
stalePins: array(StaleDevicePinSchema).readonly()
|
|
28346
|
+
});
|
|
28347
|
+
/**
|
|
28348
|
+
* Where an automatic share's capacity comes from (D755).
|
|
28349
|
+
* - `hardware` — the static capacity of each device at its Auto tune model:
|
|
28350
|
+
* the measured latency table for the node's hardware class.
|
|
28351
|
+
* - `benchmark` — the node's own measured capacity (node benchmark results).
|
|
28352
|
+
* A node with no results falls back to `hardware`, and says so.
|
|
28353
|
+
*/
|
|
28354
|
+
var CapacitySourceSchema = _enum(["hardware", "benchmark"]);
|
|
28355
|
+
/** Why a node under the `benchmark` source was sized from hardware instead. */
|
|
28356
|
+
var CapacityFallbackSchema = _enum(["no-benchmark-results", "partial-benchmark-results"]);
|
|
28357
|
+
var SuggestSharesInputSchema = object({
|
|
28358
|
+
headroom: number().min(.3).max(.5).default(.4),
|
|
28359
|
+
/** Default `hardware`. */
|
|
28360
|
+
source: CapacitySourceSchema.default("hardware")
|
|
28361
|
+
});
|
|
28362
|
+
var SuggestedDeviceShareSchema = object({
|
|
28363
|
+
deviceKey: string(),
|
|
28364
|
+
/** Share of the node (0–100, rounded). */
|
|
28365
|
+
share: number(),
|
|
28366
|
+
modelId: string().nullable(),
|
|
28367
|
+
/** Inferences per second at that model, from the measured table; null when sized by a benchmark. */
|
|
28368
|
+
fps: number().nullable(),
|
|
28369
|
+
/** False for a table cell derived from another chip; true for a measured cell or a benchmark. */
|
|
28370
|
+
measured: boolean(),
|
|
28371
|
+
/**
|
|
28372
|
+
* Advisory session cap: ⌊fps × (1 − headroom) / camera fps⌋ from the table,
|
|
28373
|
+
* or the benchmark's measured max sessions. Never enforced.
|
|
28374
|
+
*/
|
|
28375
|
+
suggestedMaxSessions: number().nullable()
|
|
28376
|
+
});
|
|
28377
|
+
var SuggestedNodeShareSchema = object({
|
|
28378
|
+
nodeId: string(),
|
|
28379
|
+
/** Share of the cluster (0–100, rounded); null = node skipped (offline, unknown hardware). */
|
|
28380
|
+
share: number().nullable(),
|
|
28381
|
+
/** Parallel sessions the node sustains at the suggested models with the headroom kept free. */
|
|
28382
|
+
capacitySessions: number(),
|
|
28383
|
+
devices: array(SuggestedDeviceShareSchema).readonly(),
|
|
28384
|
+
skippedReason: string().nullable(),
|
|
28385
|
+
/** What this node's capacity was read from; null when the node is skipped. */
|
|
28386
|
+
capacitySource: CapacitySourceSchema.nullable(),
|
|
28387
|
+
/** Set when the `benchmark` source was asked for and this node used `hardware`. */
|
|
28388
|
+
capacityFallback: CapacityFallbackSchema.nullable()
|
|
28389
|
+
});
|
|
28390
|
+
var SuggestSharesResultSchema = object({
|
|
28391
|
+
headroom: number(),
|
|
28392
|
+
/** The source asked for; each node says what it actually used. */
|
|
28393
|
+
source: CapacitySourceSchema,
|
|
28394
|
+
/** Camera detection rate the capacity is counted in (the fastest camera's fps). */
|
|
28395
|
+
cameraFps: number(),
|
|
28396
|
+
/** The Auto tune capacity floor the models were picked at. */
|
|
28397
|
+
minSessionsPerDevice: number(),
|
|
28398
|
+
nodes: array(SuggestedNodeShareSchema).readonly()
|
|
28399
|
+
});
|
|
28400
|
+
/**
|
|
28401
|
+
* Where the node and device shares come from (D750, D755).
|
|
28402
|
+
* - `hardware` (default) — computed by the system from each node's static
|
|
28403
|
+
* capacity (its accelerators at their Auto tune models, from the measured
|
|
28404
|
+
* latency table), recomputed whenever a node or device joins, leaves, is
|
|
28405
|
+
* switched on or off, or changes model. No load input.
|
|
28406
|
+
* - `benchmark` — the same, from each node's measured capacity (node
|
|
28407
|
+
* benchmark results); a node without results falls back to `hardware`.
|
|
28408
|
+
* - `manual` — the operator's stored sliders.
|
|
28409
|
+
* Either way a node or device that cannot take sessions gives its share to
|
|
28410
|
+
* the others in proportion; the stored values are never rewritten for that.
|
|
28411
|
+
*/
|
|
28412
|
+
var ShareSourceSchema = _enum([
|
|
28413
|
+
"hardware",
|
|
28414
|
+
"benchmark",
|
|
28415
|
+
"manual"
|
|
28416
|
+
]);
|
|
28417
|
+
var SetShareSourceInputSchema = object({ source: ShareSourceSchema });
|
|
28418
|
+
object({
|
|
28419
|
+
nodes: record(string(), number()),
|
|
28420
|
+
devices: record(string(), record(string(), number()))
|
|
28421
|
+
});
|
|
28422
|
+
var EffectiveDeviceShareSchema = object({
|
|
28423
|
+
deviceKey: string(),
|
|
28424
|
+
/** Can take sessions now (enabled, available, can run the root). */
|
|
28425
|
+
eligible: boolean(),
|
|
28426
|
+
/** The share the source assigns, as a percentage of the node's devices. */
|
|
28427
|
+
configuredPct: number(),
|
|
28428
|
+
/** The share actually used, after an ineligible device's share went to the others. */
|
|
28429
|
+
effectivePct: number()
|
|
28430
|
+
});
|
|
28431
|
+
var EffectiveNodeShareSchema = object({
|
|
28432
|
+
nodeId: string(),
|
|
28433
|
+
eligible: boolean(),
|
|
28434
|
+
configuredPct: number(),
|
|
28435
|
+
effectivePct: number(),
|
|
28436
|
+
/** Automatic sources: what this node's share was computed from; null under `manual` or before the first answer. */
|
|
28437
|
+
capacitySource: CapacitySourceSchema.nullable(),
|
|
28438
|
+
/** Automatic `benchmark`: why this node used `hardware` instead. */
|
|
28439
|
+
capacityFallback: CapacityFallbackSchema.nullable(),
|
|
28440
|
+
devices: array(EffectiveDeviceShareSchema).readonly()
|
|
28441
|
+
});
|
|
28442
|
+
var EffectiveSharesSchema = object({
|
|
28443
|
+
source: ShareSourceSchema,
|
|
28444
|
+
policy: SessionPlacementPolicySchema,
|
|
28445
|
+
/** An automatic source with no computed answer yet: the stored sliders are used meanwhile. */
|
|
28446
|
+
autoPending: boolean(),
|
|
28447
|
+
/** When the automatic shares were last computed (ms epoch); null = never. */
|
|
28448
|
+
computedAt: number().nullable(),
|
|
28449
|
+
/** What made the system recompute them last. */
|
|
28450
|
+
trigger: string().nullable(),
|
|
28451
|
+
nodes: array(EffectiveNodeShareSchema).readonly(),
|
|
28452
|
+
/** The relative weights the election reads (before eligibility). */
|
|
28453
|
+
nodeWeights: record(string(), number()),
|
|
28454
|
+
deviceWeights: record(string(), record(string(), number()))
|
|
28455
|
+
});
|
|
28433
28456
|
object({
|
|
28434
28457
|
activeCameras: number(),
|
|
28435
28458
|
throttledCameras: number(),
|
|
@@ -29841,8 +29864,10 @@ var CameraStepOverridePatchSchema = object({
|
|
|
29841
29864
|
modelId: string().optional(),
|
|
29842
29865
|
settings: record(string(), unknown()).readonly().optional()
|
|
29843
29866
|
});
|
|
29867
|
+
var CameraStepSettingsSchema = record(string(), record(string(), unknown()).readonly());
|
|
29844
29868
|
var CameraPipelineSettingsSchema = object({
|
|
29845
29869
|
stepToggles: record(string(), boolean()).optional(),
|
|
29870
|
+
stepSettings: CameraStepSettingsSchema.optional(),
|
|
29846
29871
|
stepOverridesByDevice: record(string(), record(string(), record(string(), CameraStepOverridePatchSchema))).optional(),
|
|
29847
29872
|
pipelineByAgent: record(string(), CameraPipelineForAgentSchema).optional()
|
|
29848
29873
|
});
|
|
@@ -30608,9 +30633,11 @@ var pipelineOrchestratorCapability = {
|
|
|
30608
30633
|
auth: "admin"
|
|
30609
30634
|
}),
|
|
30610
30635
|
/**
|
|
30611
|
-
* Auto tune (D745) — DRY RUN. Recommends ONE detector family
|
|
30612
|
-
* for the whole cluster from each node's static hardware class
|
|
30613
|
-
* measured latency table
|
|
30636
|
+
* Auto tune (D745, D755) — DRY RUN. Recommends ONE detector family
|
|
30637
|
+
* (YOLOv9) for the whole cluster from each node's static hardware class
|
|
30638
|
+
* and the measured latency table: per device, the most accurate model
|
|
30639
|
+
* that sustains at least `minSessionsPerDevice` parallel sessions at the
|
|
30640
|
+
* camera rate with the headroom kept free (no load input), and lists every write
|
|
30614
30641
|
* the apply would make: the node model pins set, the enrichment pins and
|
|
30615
30642
|
* model-bound thresholds removed (node level and per camera), and the
|
|
30616
30643
|
* per-camera detector thresholds cleared. Writes nothing. Step
|
|
@@ -30649,10 +30676,12 @@ var pipelineOrchestratorCapability = {
|
|
|
30649
30676
|
*/
|
|
30650
30677
|
getPlacementStats: method(PlacementStatsInputSchema, PlacementStatsSchema, { auth: "admin" }),
|
|
30651
30678
|
/**
|
|
30652
|
-
* Load balancing (D748) — shares proportional to each node's
|
|
30653
|
-
* capacity
|
|
30654
|
-
*
|
|
30655
|
-
*
|
|
30679
|
+
* Load balancing (D748, D755) — shares proportional to each node's
|
|
30680
|
+
* capacity in parallel sessions: from the latency table at the models
|
|
30681
|
+
* Auto tune picks (`hardware`), or from node benchmark results
|
|
30682
|
+
* (`benchmark`, each node without results falling back to `hardware` and
|
|
30683
|
+
* saying so). The automatic shares are exactly this answer. Per device,
|
|
30684
|
+
* an ADVISORY session cap. Writes nothing.
|
|
30656
30685
|
*/
|
|
30657
30686
|
suggestShares: method(SuggestSharesInputSchema, SuggestSharesResultSchema, { auth: "admin" }),
|
|
30658
30687
|
/**
|
|
@@ -30663,9 +30692,11 @@ var pipelineOrchestratorCapability = {
|
|
|
30663
30692
|
*/
|
|
30664
30693
|
getEffectiveShares: method(_void(), EffectiveSharesSchema, { auth: "admin" }),
|
|
30665
30694
|
/**
|
|
30666
|
-
* Load balancing (D750) — switch
|
|
30667
|
-
*
|
|
30668
|
-
*
|
|
30695
|
+
* Load balancing (D750, D755) — switch the share source: `hardware`
|
|
30696
|
+
* (automatic, from static capacity), `benchmark` (automatic, from node
|
|
30697
|
+
* benchmark results) or `manual`. Going manual seeds the sliders with the
|
|
30698
|
+
* current automatic shares (one atomic write), so nothing jumps; going
|
|
30699
|
+
* to an automatic source recomputes at once.
|
|
30669
30700
|
*/
|
|
30670
30701
|
setShareSource: method(SetShareSourceInputSchema, object({ success: literal(true) }), {
|
|
30671
30702
|
kind: "mutation",
|
|
@@ -30700,6 +30731,22 @@ var pipelineOrchestratorCapability = {
|
|
|
30700
30731
|
kind: "mutation",
|
|
30701
30732
|
auth: "admin"
|
|
30702
30733
|
}),
|
|
30734
|
+
/**
|
|
30735
|
+
* Write or clear one step's CAMERA-WIDE settings (D754) — the fields this
|
|
30736
|
+
* camera overrides on every accelerator it runs on. `settings` is the
|
|
30737
|
+
* whole field-level bag for that step (only the overridden keys; a
|
|
30738
|
+
* model-bound field travels with its binding key); `null` or `{}` clears
|
|
30739
|
+
* it. Merged at dispatch between the node base and the per-(node,device)
|
|
30740
|
+
* override, key by key.
|
|
30741
|
+
*/
|
|
30742
|
+
setCameraStepSettings: method(object({
|
|
30743
|
+
deviceId: number(),
|
|
30744
|
+
addonId: string(),
|
|
30745
|
+
settings: record(string(), unknown()).nullable()
|
|
30746
|
+
}), object({ success: literal(true) }), {
|
|
30747
|
+
kind: "mutation",
|
|
30748
|
+
auth: "admin"
|
|
30749
|
+
}),
|
|
30703
30750
|
/** Write or clear the wholesale per-agent pipeline override. Pass `pipeline: null` to drop the override. */
|
|
30704
30751
|
setCameraPipelineForAgent: method(object({
|
|
30705
30752
|
deviceId: number(),
|
|
@@ -52040,6 +52087,12 @@ Object.freeze({
|
|
|
52040
52087
|
addonId: null,
|
|
52041
52088
|
access: "create"
|
|
52042
52089
|
},
|
|
52090
|
+
"pipelineOrchestrator.setCameraStepSettings": {
|
|
52091
|
+
capName: "pipeline-orchestrator",
|
|
52092
|
+
capScope: "system",
|
|
52093
|
+
addonId: null,
|
|
52094
|
+
access: "create"
|
|
52095
|
+
},
|
|
52043
52096
|
"pipelineOrchestrator.setCameraStepToggle": {
|
|
52044
52097
|
capName: "pipeline-orchestrator",
|
|
52045
52098
|
capScope: "system",
|
|
@@ -57664,6 +57717,11 @@ Object.freeze({
|
|
|
57664
57717
|
form: "single",
|
|
57665
57718
|
optional: false
|
|
57666
57719
|
}],
|
|
57720
|
+
"pipelineOrchestrator.setCameraStepSettings": [{
|
|
57721
|
+
name: "deviceId",
|
|
57722
|
+
form: "single",
|
|
57723
|
+
optional: false
|
|
57724
|
+
}],
|
|
57667
57725
|
"pipelineOrchestrator.setCameraStepToggle": [{
|
|
57668
57726
|
name: "deviceId",
|
|
57669
57727
|
form: "single",
|