@camstack/addon-model-studio 1.1.208 → 1.1.210
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/MotionZonesSettings-BLaYYr6d.mjs +310 -0
- package/dist/{PrivacyMaskSettings-BR1W0Jdz.mjs → PrivacyMaskSettings-B4oPm8qu.mjs} +5 -5
- package/dist/{SceneMonitorEditor-C2hv7m4b.mjs → SceneMonitorEditor-CcIjo0eV.mjs} +285 -285
- package/dist/_stub.js +6463 -5786
- package/dist/{_virtual_mf-localSharedImportMap___mfe_internal__addon_model_studio_page-BXiGIO9F.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_model_studio_page-D1rfSf3r.mjs} +3 -3
- package/dist/_virtual_mf___mfe_internal__addon_model_studio_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-AVR0uSTS.mjs +26 -0
- package/dist/addon-model-studio.css +1 -1
- package/dist/{hostInit-BjI6ZGeQ.mjs → hostInit-BQhrSAl4.mjs} +2 -2
- package/dist/model-studio.addon.js +417 -23
- package/dist/model-studio.addon.mjs +417 -23
- package/dist/{player-overlays-DyvbN32a.mjs → player-overlays-BNudDM5z.mjs} +5 -5
- package/dist/remoteEntry.js +1 -1
- package/dist/{responsive-B85nuotM.mjs → responsive-DBGZzpZ7.mjs} +3 -3
- package/dist/{scene-monitor-copy-DY98vLAG.mjs → scene-monitor-copy-dhKSDV9I.mjs} +1 -1
- package/dist/{square-CqTd_dbN.mjs → square-D-YyUKDq.mjs} +1 -1
- package/dist/{trash-2-CwTAu8_U.mjs → trash-2-DZs2uO6z.mjs} +1 -1
- package/dist/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_model_studio_page__remoteEntry_js-CejkP6cN.mjs → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_model_studio_page__remoteEntry_js-BP6zmpFK.mjs} +1 -1
- package/package.json +1 -1
- package/dist/MotionZonesSettings-CfPlD9DG.mjs +0 -310
- package/dist/_virtual_mf___mfe_internal__addon_model_studio_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-CVVm4Mi7.mjs +0 -26
|
@@ -11099,7 +11099,53 @@ var ModelFormatEntrySchema = object({
|
|
|
11099
11099
|
/** Multi-file payload (directory members or sibling files). */
|
|
11100
11100
|
files: array(string()).readonly().optional(),
|
|
11101
11101
|
/** Runtime(s) that can use this format. If omitted, inferred from ModelFormat key */
|
|
11102
|
-
runtimes: array(_enum(["python"])).readonly().optional()
|
|
11102
|
+
runtimes: array(_enum(["python"])).readonly().optional(),
|
|
11103
|
+
/**
|
|
11104
|
+
* Content revision of the artefact, for one hosted OFF the CamStack mirror.
|
|
11105
|
+
* A format on the mirror leaves it unset: its revision (the sha256 of its
|
|
11106
|
+
* weight file) comes from the downloader's generated table, kept in step
|
|
11107
|
+
* with the mirror by `scripts/check-hosted-model-revisions.ts` (D744). A
|
|
11108
|
+
* node records the revision it downloaded next to the file
|
|
11109
|
+
* (`<file>.revision`); a copy with no record or a different one is stale
|
|
11110
|
+
* unless its weight file hashes to the revision, and a stale copy is
|
|
11111
|
+
* downloaded again, the old one serving until the new one is complete. No
|
|
11112
|
+
* revision at all ⇒ a file on disk is current, whatever it holds (D743).
|
|
11113
|
+
*/
|
|
11114
|
+
revision: string().min(1).optional()
|
|
11115
|
+
});
|
|
11116
|
+
/**
|
|
11117
|
+
* What a node holds for one (model, format) (D746). `current` is a complete
|
|
11118
|
+
* copy at its catalog revision — exactly what `downloaded: true` means.
|
|
11119
|
+
* `stale` is bytes on disk that are not (yet) proven current under D743/D744:
|
|
11120
|
+
* no or a different revision record, or a missing sibling. `missing` is no
|
|
11121
|
+
* copy. `downloaded` alone folds `stale` into "not downloaded", which hid
|
|
11122
|
+
* reclaimable bytes and a copy about to be replaced.
|
|
11123
|
+
*/
|
|
11124
|
+
var ModelOnDiskStateSchema = _enum([
|
|
11125
|
+
"current",
|
|
11126
|
+
"stale",
|
|
11127
|
+
"missing"
|
|
11128
|
+
]);
|
|
11129
|
+
/**
|
|
11130
|
+
* The numeric precision of one format's BUILD (D746) — reported only when the
|
|
11131
|
+
* build states it (file-name token, an INT8 variant, an EdgeTPU compile, a
|
|
11132
|
+
* CamStack Core ML export). Absent means "not stated", never "fp32".
|
|
11133
|
+
*/
|
|
11134
|
+
var ModelFormatPrecisionSchema = _enum([
|
|
11135
|
+
"fp32",
|
|
11136
|
+
"fp16",
|
|
11137
|
+
"int8"
|
|
11138
|
+
]);
|
|
11139
|
+
/**
|
|
11140
|
+
* One format of one model as a node's `pipelineExecutor.getSchema` reports it.
|
|
11141
|
+
* `onDisk` / `precision` are optional for version skew: a runner that predates
|
|
11142
|
+
* them omits them, and a reader falls back to `downloaded`.
|
|
11143
|
+
*/
|
|
11144
|
+
var PipelineModelFormatStatusSchema = object({
|
|
11145
|
+
downloaded: boolean(),
|
|
11146
|
+
sizeMB: number(),
|
|
11147
|
+
onDisk: ModelOnDiskStateSchema.optional(),
|
|
11148
|
+
precision: ModelFormatPrecisionSchema.optional()
|
|
11103
11149
|
});
|
|
11104
11150
|
/**
|
|
11105
11151
|
* Extra file that must be downloaded alongside the model (e.g., labels JSON, dict.txt).
|
|
@@ -23791,7 +23837,7 @@ var FrameRefSchema = object({
|
|
|
23791
23837
|
timestamp: number(),
|
|
23792
23838
|
capturedAt: number().optional()
|
|
23793
23839
|
});
|
|
23794
|
-
var ModelFormatSchema$
|
|
23840
|
+
var ModelFormatSchema$2 = _enum([
|
|
23795
23841
|
"onnx",
|
|
23796
23842
|
"coreml",
|
|
23797
23843
|
"openvino",
|
|
@@ -23809,7 +23855,7 @@ var PipelineSlotSchema = _enum([
|
|
|
23809
23855
|
var PipelineEngineChoiceSchema = object({
|
|
23810
23856
|
runtime: literal("python"),
|
|
23811
23857
|
backend: string(),
|
|
23812
|
-
format: ModelFormatSchema$
|
|
23858
|
+
format: ModelFormatSchema$2,
|
|
23813
23859
|
device: string().optional()
|
|
23814
23860
|
});
|
|
23815
23861
|
/**
|
|
@@ -23866,10 +23912,7 @@ var PipelineTemplateSchema$1 = object({
|
|
|
23866
23912
|
var PipelineModelOptionSchema = object({
|
|
23867
23913
|
id: string(),
|
|
23868
23914
|
name: string(),
|
|
23869
|
-
formats: record(string(),
|
|
23870
|
-
downloaded: boolean(),
|
|
23871
|
-
sizeMB: number()
|
|
23872
|
-
})),
|
|
23915
|
+
formats: record(string(), PipelineModelFormatStatusSchema),
|
|
23873
23916
|
group: ModelVariantGroupSchema.optional(),
|
|
23874
23917
|
legacy: boolean().optional(),
|
|
23875
23918
|
provider: ModelProviderIdSchema.optional(),
|
|
@@ -24036,6 +24079,22 @@ method(_void(), array(PipelineEngineChoiceSchema)), method(_void(), PipelineEngi
|
|
|
24036
24079
|
}), {
|
|
24037
24080
|
kind: "mutation",
|
|
24038
24081
|
auth: "admin"
|
|
24082
|
+
}), method(object({
|
|
24083
|
+
nodeId: string(),
|
|
24084
|
+
deviceIds: array(number()).readonly().optional(),
|
|
24085
|
+
dryRun: boolean()
|
|
24086
|
+
}), object({
|
|
24087
|
+
entries: array(object({
|
|
24088
|
+
deviceId: number(),
|
|
24089
|
+
keys: array(string()).readonly()
|
|
24090
|
+
})).readonly(),
|
|
24091
|
+
refused: array(object({
|
|
24092
|
+
deviceId: number(),
|
|
24093
|
+
reason: string()
|
|
24094
|
+
})).readonly()
|
|
24095
|
+
}), {
|
|
24096
|
+
kind: "mutation",
|
|
24097
|
+
auth: "admin"
|
|
24039
24098
|
}), method(object({ nodeId: string() }), object({ unhealthy: array(object({
|
|
24040
24099
|
/** `<backend>:<device>`, e.g. `openvino:gpu`. */
|
|
24041
24100
|
deviceKey: string(),
|
|
@@ -24072,11 +24131,11 @@ method(_void(), array(PipelineEngineChoiceSchema)), method(_void(), PipelineEngi
|
|
|
24072
24131
|
}), PipelineTemplateSchema$1, { kind: "mutation" }), method(object({ id: string() }), _void(), { kind: "mutation" }), method(_void(), InferenceCapabilitiesBridge), method(object({ addonId: string() }), ModelAvailabilityListBridge), method(object({
|
|
24073
24132
|
addonId: string(),
|
|
24074
24133
|
modelId: string(),
|
|
24075
|
-
format: ModelFormatSchema$
|
|
24134
|
+
format: ModelFormatSchema$2
|
|
24076
24135
|
}), DownloadModelResultSchema, { kind: "mutation" }), method(object({
|
|
24077
24136
|
addonId: string(),
|
|
24078
24137
|
modelId: string(),
|
|
24079
|
-
format: ModelFormatSchema$
|
|
24138
|
+
format: ModelFormatSchema$2
|
|
24080
24139
|
}), object({ success: literal(true) }), { kind: "mutation" }), method(object({
|
|
24081
24140
|
steps: array(PipelineStepInputSchema).min(1),
|
|
24082
24141
|
frame: FrameInputSchema.optional(),
|
|
@@ -24233,6 +24292,307 @@ method(_void(), array(PipelineEngineChoiceSchema)), method(_void(), PipelineEngi
|
|
|
24233
24292
|
filename: string().optional(),
|
|
24234
24293
|
settings: record(string(), unknown()).optional()
|
|
24235
24294
|
}), AudioTestResultSchema, { kind: "mutation" }), method(_void(), ConfigUISchemaNullableBridge);
|
|
24295
|
+
/**
|
|
24296
|
+
* Wire shapes of the Load balancing surface (D748): the session placement
|
|
24297
|
+
* policy, the atomic share write, the observed placement statistics, the
|
|
24298
|
+
* hardware share suggestion and the stale device pins.
|
|
24299
|
+
*/
|
|
24300
|
+
/**
|
|
24301
|
+
* How a new detection session picks its node and device.
|
|
24302
|
+
* - `least-loaded` — the historical rule: lowest `attached / weight`, a
|
|
24303
|
+
* constant node order at a tie (D37). An idle node always ties at 0, so a
|
|
24304
|
+
* weight only bites once a node already holds a session.
|
|
24305
|
+
* - `share` — the share of PARALLEL sessions is held to the weights, and a
|
|
24306
|
+
* full or drowning node yields to a free one (D748).
|
|
24307
|
+
*/
|
|
24308
|
+
var SessionPlacementPolicySchema = _enum(["least-loaded", "share"]);
|
|
24309
|
+
var LoadBalancingSharesInputSchema = object({
|
|
24310
|
+
/** nodeId → share (> 0). A node left out keeps its weight. */
|
|
24311
|
+
nodes: record(string(), number().positive()).default({}),
|
|
24312
|
+
/** nodeId → deviceKey → share (> 0). A device left out keeps its weight. */
|
|
24313
|
+
devices: record(string(), record(string(), number().positive())).default({})
|
|
24314
|
+
});
|
|
24315
|
+
var PlacementStatsInputSchema = object({
|
|
24316
|
+
/** Window the observed shares are averaged over (default 1 h, max 24 h). */
|
|
24317
|
+
windowMs: number().int().min(6e4).max(1440 * 60 * 1e3).default(3600 * 1e3) });
|
|
24318
|
+
var PlacementDeviceStatsSchema = object({
|
|
24319
|
+
deviceKey: string(),
|
|
24320
|
+
/** Sessions running on this device now. */
|
|
24321
|
+
sessionsNow: number(),
|
|
24322
|
+
/** Sessions started on this device inside the window. */
|
|
24323
|
+
sessionsStarted: number(),
|
|
24324
|
+
/** Time-weighted share of the node's parallel sessions over the window (0–1); null = no session ran. */
|
|
24325
|
+
observedShare: number().nullable()
|
|
24326
|
+
});
|
|
24327
|
+
var PlacementNodeStatsSchema = object({
|
|
24328
|
+
nodeId: string(),
|
|
24329
|
+
sessionsNow: number(),
|
|
24330
|
+
sessionsStarted: number(),
|
|
24331
|
+
/** Time-weighted share of the cluster's parallel sessions over the window (0–1); null = none ran. */
|
|
24332
|
+
observedShare: number().nullable(),
|
|
24333
|
+
/** Most sessions this node ran at once inside the window. */
|
|
24334
|
+
peakSessions: number(),
|
|
24335
|
+
/** Sessions a share election handed elsewhere because this node was full or drowning. */
|
|
24336
|
+
yieldsAway: number(),
|
|
24337
|
+
devices: array(PlacementDeviceStatsSchema).readonly()
|
|
24338
|
+
});
|
|
24339
|
+
/** A camera's device pin that the session path cannot honour. */
|
|
24340
|
+
var StaleDevicePinSchema = object({
|
|
24341
|
+
deviceId: number(),
|
|
24342
|
+
deviceKey: string(),
|
|
24343
|
+
/** `disabled` — the key exists on some node but is not enabled anywhere; `absent` — no node has it. */
|
|
24344
|
+
reason: _enum(["disabled", "absent"])
|
|
24345
|
+
});
|
|
24346
|
+
var PlacementStatsSchema = object({
|
|
24347
|
+
policy: SessionPlacementPolicySchema,
|
|
24348
|
+
windowMs: number(),
|
|
24349
|
+
/** How much of the window was actually observed (the hub keeps it in memory). */
|
|
24350
|
+
observedForMs: number(),
|
|
24351
|
+
sessionsNow: number(),
|
|
24352
|
+
/** Most parallel sessions across the cluster inside the window. */
|
|
24353
|
+
clusterPeakSessions: number(),
|
|
24354
|
+
nodes: array(PlacementNodeStatsSchema).readonly(),
|
|
24355
|
+
stalePins: array(StaleDevicePinSchema).readonly()
|
|
24356
|
+
});
|
|
24357
|
+
var SuggestSharesInputSchema = object({ headroom: number().min(.3).max(.5).default(.4) });
|
|
24358
|
+
var SuggestedDeviceShareSchema = object({
|
|
24359
|
+
deviceKey: string(),
|
|
24360
|
+
/** Share of the node (0–100, rounded). */
|
|
24361
|
+
share: number(),
|
|
24362
|
+
modelId: string().nullable(),
|
|
24363
|
+
/** Inferences per second at that model, from the measured table. */
|
|
24364
|
+
fps: number().nullable(),
|
|
24365
|
+
measured: boolean(),
|
|
24366
|
+
/** Advisory session cap: ⌊fps × (1 − headroom) / camera fps⌋. Never enforced. */
|
|
24367
|
+
suggestedMaxSessions: number().nullable()
|
|
24368
|
+
});
|
|
24369
|
+
var SuggestedNodeShareSchema = object({
|
|
24370
|
+
nodeId: string(),
|
|
24371
|
+
/** Share of the cluster (0–100, rounded); null = node skipped (offline, unknown hardware). */
|
|
24372
|
+
share: number().nullable(),
|
|
24373
|
+
/** Parallel sessions the node sustains at the suggested models with the headroom kept free. */
|
|
24374
|
+
capacitySessions: number(),
|
|
24375
|
+
devices: array(SuggestedDeviceShareSchema).readonly(),
|
|
24376
|
+
skippedReason: string().nullable()
|
|
24377
|
+
});
|
|
24378
|
+
var SuggestSharesResultSchema = object({
|
|
24379
|
+
headroom: number(),
|
|
24380
|
+
/** Camera detection rate the capacity is counted in (the fastest camera's fps). */
|
|
24381
|
+
cameraFps: number(),
|
|
24382
|
+
/** How many share → model → capacity rounds ran before the shares stopped moving (≤ 3). */
|
|
24383
|
+
iterations: number(),
|
|
24384
|
+
nodes: array(SuggestedNodeShareSchema).readonly()
|
|
24385
|
+
});
|
|
24386
|
+
/**
|
|
24387
|
+
* The wire shapes of the Best settings plan and apply (D745), used by the
|
|
24388
|
+
* `pipeline-orchestrator` cap. The recommender's own types
|
|
24389
|
+
* (`recommend.ts`, `demand.ts`) are the TS face of the same data; these
|
|
24390
|
+
* schemas are what crosses the cap boundary.
|
|
24391
|
+
*/
|
|
24392
|
+
var ModelFormatSchema$1 = _enum(MODEL_FORMATS);
|
|
24393
|
+
var HardwareClassIdSchema = _enum([
|
|
24394
|
+
"intel-core-ultra",
|
|
24395
|
+
"intel-n-series",
|
|
24396
|
+
"apple-m-base",
|
|
24397
|
+
"apple-m-pro",
|
|
24398
|
+
"unknown"
|
|
24399
|
+
]);
|
|
24400
|
+
var AcceleratorKindSchema = _enum([
|
|
24401
|
+
"intel-npu",
|
|
24402
|
+
"intel-igpu",
|
|
24403
|
+
"x86-cpu",
|
|
24404
|
+
"arm-cpu",
|
|
24405
|
+
"apple-ane",
|
|
24406
|
+
"coral"
|
|
24407
|
+
]);
|
|
24408
|
+
var RecommendationReasonSchema = discriminatedUnion("kind", [
|
|
24409
|
+
object({
|
|
24410
|
+
kind: literal("fits"),
|
|
24411
|
+
utilisation: number()
|
|
24412
|
+
}),
|
|
24413
|
+
object({
|
|
24414
|
+
kind: literal("tie-faster"),
|
|
24415
|
+
over: string(),
|
|
24416
|
+
recallDelta: number()
|
|
24417
|
+
}),
|
|
24418
|
+
object({
|
|
24419
|
+
kind: literal("stepped-down"),
|
|
24420
|
+
from: string(),
|
|
24421
|
+
to: string(),
|
|
24422
|
+
limitedBy: string()
|
|
24423
|
+
}),
|
|
24424
|
+
object({
|
|
24425
|
+
kind: literal("no-fit-lightest"),
|
|
24426
|
+
utilisation: number()
|
|
24427
|
+
}),
|
|
24428
|
+
object({
|
|
24429
|
+
kind: literal("derived-latency"),
|
|
24430
|
+
modelId: string()
|
|
24431
|
+
}),
|
|
24432
|
+
object({
|
|
24433
|
+
kind: literal("estimated-load"),
|
|
24434
|
+
observedForMs: number().nullable()
|
|
24435
|
+
}),
|
|
24436
|
+
object({ kind: literal("cpu-device") }),
|
|
24437
|
+
object({ kind: literal("coral-untouched") }),
|
|
24438
|
+
object({ kind: literal("device-disabled") }),
|
|
24439
|
+
object({ kind: literal("device-unavailable") }),
|
|
24440
|
+
object({ kind: literal("node-offline") }),
|
|
24441
|
+
object({ kind: literal("no-hardware-facts") }),
|
|
24442
|
+
object({
|
|
24443
|
+
kind: literal("no-measured-data"),
|
|
24444
|
+
hardwareClass: HardwareClassIdSchema
|
|
24445
|
+
}),
|
|
24446
|
+
object({
|
|
24447
|
+
kind: literal("no-family-build"),
|
|
24448
|
+
format: ModelFormatSchema$1
|
|
24449
|
+
})
|
|
24450
|
+
]);
|
|
24451
|
+
var DeviceDemandSchema = object({
|
|
24452
|
+
nodeId: string(),
|
|
24453
|
+
deviceKey: string(),
|
|
24454
|
+
demandFps: number(),
|
|
24455
|
+
maxCameraFps: number(),
|
|
24456
|
+
alwaysOnCameras: number(),
|
|
24457
|
+
onMotionSessions: number(),
|
|
24458
|
+
onMotionSource: _enum([
|
|
24459
|
+
"observed-24h",
|
|
24460
|
+
"estimate",
|
|
24461
|
+
"none"
|
|
24462
|
+
]),
|
|
24463
|
+
observedForMs: number().nullable(),
|
|
24464
|
+
/** How on-motion sessions were charged: per-device observation, or split by share (D748). */
|
|
24465
|
+
placement: SessionPlacementPolicySchema
|
|
24466
|
+
});
|
|
24467
|
+
var DeviceModelChoiceSchema = object({
|
|
24468
|
+
modelId: string(),
|
|
24469
|
+
p50Ms: number(),
|
|
24470
|
+
fps: number(),
|
|
24471
|
+
measured: boolean(),
|
|
24472
|
+
utilisation: number(),
|
|
24473
|
+
personRecall: number()
|
|
24474
|
+
});
|
|
24475
|
+
var DeviceRecommendationSchema = object({
|
|
24476
|
+
deviceKey: string(),
|
|
24477
|
+
accelerator: AcceleratorKindSchema.nullable(),
|
|
24478
|
+
enabled: boolean(),
|
|
24479
|
+
available: boolean(),
|
|
24480
|
+
demand: DeviceDemandSchema.nullable(),
|
|
24481
|
+
chosen: DeviceModelChoiceSchema.nullable(),
|
|
24482
|
+
reasons: array(RecommendationReasonSchema).readonly()
|
|
24483
|
+
});
|
|
24484
|
+
var NodeRecommendationSchema = object({
|
|
24485
|
+
nodeId: string(),
|
|
24486
|
+
reachable: boolean(),
|
|
24487
|
+
hardwareClass: HardwareClassIdSchema.nullable(),
|
|
24488
|
+
cpuModel: string().nullable(),
|
|
24489
|
+
skipped: boolean(),
|
|
24490
|
+
acceleratorModelId: string().nullable(),
|
|
24491
|
+
devices: array(DeviceRecommendationSchema).readonly(),
|
|
24492
|
+
reasons: array(RecommendationReasonSchema).readonly()
|
|
24493
|
+
});
|
|
24494
|
+
var ModelPinChangeSchema = object({
|
|
24495
|
+
stepId: string(),
|
|
24496
|
+
before: string().nullable(),
|
|
24497
|
+
after: string().nullable()
|
|
24498
|
+
});
|
|
24499
|
+
var NodeDeviceChangeSchema = object({
|
|
24500
|
+
nodeId: string(),
|
|
24501
|
+
deviceKey: string(),
|
|
24502
|
+
madeExplicit: boolean(),
|
|
24503
|
+
modelPins: array(ModelPinChangeSchema).readonly(),
|
|
24504
|
+
thresholds: array(object({
|
|
24505
|
+
stepId: string(),
|
|
24506
|
+
keys: array(string()).readonly()
|
|
24507
|
+
})).readonly()
|
|
24508
|
+
});
|
|
24509
|
+
var CameraOverrideClearSchema = object({
|
|
24510
|
+
deviceId: number(),
|
|
24511
|
+
source: _enum(["step-override", "wholesale"]),
|
|
24512
|
+
nodeId: string(),
|
|
24513
|
+
deviceKey: string().nullable(),
|
|
24514
|
+
stepId: string(),
|
|
24515
|
+
modelIdBefore: string().nullable(),
|
|
24516
|
+
keys: array(string()).readonly()
|
|
24517
|
+
});
|
|
24518
|
+
var DetectorStoreClearSchema = object({
|
|
24519
|
+
deviceId: number(),
|
|
24520
|
+
keys: array(string()).readonly()
|
|
24521
|
+
});
|
|
24522
|
+
var BestSettingsWarningSchema = discriminatedUnion("kind", [
|
|
24523
|
+
object({
|
|
24524
|
+
kind: literal("detector-store-cluster-wide"),
|
|
24525
|
+
skippedNodes: array(string()).readonly()
|
|
24526
|
+
}),
|
|
24527
|
+
object({
|
|
24528
|
+
kind: literal("detector-store-unreadable"),
|
|
24529
|
+
error: string()
|
|
24530
|
+
}),
|
|
24531
|
+
object({
|
|
24532
|
+
kind: literal("coral-enabled"),
|
|
24533
|
+
nodeId: string(),
|
|
24534
|
+
deviceKey: string()
|
|
24535
|
+
})
|
|
24536
|
+
]);
|
|
24537
|
+
var BestSettingsOptionsSchema = object({
|
|
24538
|
+
/** Share of each accelerator's throughput kept free (0.3–0.5). */
|
|
24539
|
+
headroom: number().min(.3).max(.5).default(.4),
|
|
24540
|
+
/**
|
|
24541
|
+
* What-if shares (D748): plan as if these node/device shares were stored
|
|
24542
|
+
* and the policy were `share`. Absent = the stored shares under the stored
|
|
24543
|
+
* policy. A what-if plan is for display; apply always re-plans from what
|
|
24544
|
+
* is stored.
|
|
24545
|
+
*/
|
|
24546
|
+
shares: LoadBalancingSharesInputSchema.optional()
|
|
24547
|
+
});
|
|
24548
|
+
var BestSettingsPlanSchema = object({
|
|
24549
|
+
/** Hash of everything the apply will write — the apply refuses a different one. */
|
|
24550
|
+
planHash: string(),
|
|
24551
|
+
family: literal("yolov9"),
|
|
24552
|
+
headroom: number(),
|
|
24553
|
+
/** Planned under what-if shares (D748): for display — apply refuses it as stale. */
|
|
24554
|
+
whatIf: boolean(),
|
|
24555
|
+
generatedAt: number(),
|
|
24556
|
+
nodes: array(NodeRecommendationSchema).readonly(),
|
|
24557
|
+
nodeChanges: array(NodeDeviceChangeSchema).readonly(),
|
|
24558
|
+
cameraClears: array(CameraOverrideClearSchema).readonly(),
|
|
24559
|
+
detectorStoreClears: array(DetectorStoreClearSchema).readonly(),
|
|
24560
|
+
warnings: array(BestSettingsWarningSchema).readonly()
|
|
24561
|
+
});
|
|
24562
|
+
var BestSettingsApplyInputSchema = object({
|
|
24563
|
+
planHash: string(),
|
|
24564
|
+
headroom: number().min(.3).max(.5).default(.4)
|
|
24565
|
+
});
|
|
24566
|
+
var BestSettingsPhaseResultSchema = object({
|
|
24567
|
+
phase: _enum([
|
|
24568
|
+
"download",
|
|
24569
|
+
"camera-overrides",
|
|
24570
|
+
"detector-thresholds",
|
|
24571
|
+
"node-models",
|
|
24572
|
+
"redispatch"
|
|
24573
|
+
]),
|
|
24574
|
+
ok: boolean(),
|
|
24575
|
+
detail: string()
|
|
24576
|
+
});
|
|
24577
|
+
var BestSettingsApplyResultSchema = discriminatedUnion("kind", [
|
|
24578
|
+
object({
|
|
24579
|
+
kind: literal("applied"),
|
|
24580
|
+
planHash: string(),
|
|
24581
|
+
phases: array(BestSettingsPhaseResultSchema).readonly()
|
|
24582
|
+
}),
|
|
24583
|
+
object({
|
|
24584
|
+
kind: literal("aborted"),
|
|
24585
|
+
phases: array(BestSettingsPhaseResultSchema).readonly()
|
|
24586
|
+
}),
|
|
24587
|
+
object({
|
|
24588
|
+
kind: literal("stale"),
|
|
24589
|
+
plan: BestSettingsPlanSchema
|
|
24590
|
+
}),
|
|
24591
|
+
object({
|
|
24592
|
+
kind: literal("refused"),
|
|
24593
|
+
reason: _enum(["apply-in-progress"])
|
|
24594
|
+
})
|
|
24595
|
+
]);
|
|
24236
24596
|
object({
|
|
24237
24597
|
activeCameras: number(),
|
|
24238
24598
|
throttledCameras: number(),
|
|
@@ -25413,7 +25773,6 @@ var CameraStepOverridePatchSchema = object({
|
|
|
25413
25773
|
settings: record(string(), unknown()).readonly().optional()
|
|
25414
25774
|
});
|
|
25415
25775
|
var CameraPipelineSettingsSchema = object({
|
|
25416
|
-
pinnedAgentNodeId: string().optional(),
|
|
25417
25776
|
stepToggles: record(string(), boolean()).optional(),
|
|
25418
25777
|
stepOverridesByDevice: record(string(), record(string(), record(string(), CameraStepOverridePatchSchema))).optional(),
|
|
25419
25778
|
pipelineByAgent: record(string(), CameraPipelineForAgentSchema).optional()
|
|
@@ -25912,12 +26271,6 @@ method(object({
|
|
|
25912
26271
|
}), object({ success: literal(true) }), {
|
|
25913
26272
|
kind: "mutation",
|
|
25914
26273
|
auth: "admin"
|
|
25915
|
-
}), method(object({
|
|
25916
|
-
agentNodeId: string(),
|
|
25917
|
-
detectWeight: number().positive().nullable()
|
|
25918
|
-
}), object({ success: literal(true) }), {
|
|
25919
|
-
kind: "mutation",
|
|
25920
|
-
auth: "admin"
|
|
25921
26274
|
}), method(object({
|
|
25922
26275
|
agentNodeId: string(),
|
|
25923
26276
|
detect: boolean().nullable().optional(),
|
|
@@ -25959,7 +26312,13 @@ method(object({
|
|
|
25959
26312
|
}), {
|
|
25960
26313
|
kind: "mutation",
|
|
25961
26314
|
auth: "admin"
|
|
25962
|
-
}), method(
|
|
26315
|
+
}), method(BestSettingsOptionsSchema, BestSettingsPlanSchema, { auth: "admin" }), method(BestSettingsApplyInputSchema, BestSettingsApplyResultSchema, {
|
|
26316
|
+
kind: "mutation",
|
|
26317
|
+
auth: "admin"
|
|
26318
|
+
}), method(LoadBalancingSharesInputSchema, object({ success: literal(true) }), {
|
|
26319
|
+
kind: "mutation",
|
|
26320
|
+
auth: "admin"
|
|
26321
|
+
}), method(PlacementStatsInputSchema, PlacementStatsSchema, { auth: "admin" }), method(SuggestSharesInputSchema, SuggestSharesResultSchema, { auth: "admin" }), method(object({ deviceId: number() }), CameraPipelineSettingsSchema.nullable()), method(object({
|
|
25963
26322
|
deviceId: number(),
|
|
25964
26323
|
addonId: string(),
|
|
25965
26324
|
enabled: boolean().nullable()
|
|
@@ -41632,6 +41991,12 @@ Object.freeze({
|
|
|
41632
41991
|
addonId: null,
|
|
41633
41992
|
access: "delete"
|
|
41634
41993
|
},
|
|
41994
|
+
"pipelineExecutor.clearModelBoundDeviceOverrides": {
|
|
41995
|
+
capName: "pipeline-executor",
|
|
41996
|
+
capScope: "system",
|
|
41997
|
+
addonId: null,
|
|
41998
|
+
access: "delete"
|
|
41999
|
+
},
|
|
41635
42000
|
"pipelineExecutor.deleteModel": {
|
|
41636
42001
|
capName: "pipeline-executor",
|
|
41637
42002
|
capScope: "system",
|
|
@@ -41848,6 +42213,12 @@ Object.freeze({
|
|
|
41848
42213
|
addonId: null,
|
|
41849
42214
|
access: "view"
|
|
41850
42215
|
},
|
|
42216
|
+
"pipelineOrchestrator.applyBestSettings": {
|
|
42217
|
+
capName: "pipeline-orchestrator",
|
|
42218
|
+
capScope: "system",
|
|
42219
|
+
addonId: null,
|
|
42220
|
+
access: "create"
|
|
42221
|
+
},
|
|
41851
42222
|
"pipelineOrchestrator.applyDeviceSettingsPatch": {
|
|
41852
42223
|
capName: "pipeline-orchestrator",
|
|
41853
42224
|
capScope: "system",
|
|
@@ -41998,6 +42369,12 @@ Object.freeze({
|
|
|
41998
42369
|
addonId: null,
|
|
41999
42370
|
access: "view"
|
|
42000
42371
|
},
|
|
42372
|
+
"pipelineOrchestrator.getPlacementStats": {
|
|
42373
|
+
capName: "pipeline-orchestrator",
|
|
42374
|
+
capScope: "system",
|
|
42375
|
+
addonId: null,
|
|
42376
|
+
access: "view"
|
|
42377
|
+
},
|
|
42001
42378
|
"pipelineOrchestrator.getReconcileFromDiskStatus": {
|
|
42002
42379
|
capName: "pipeline-orchestrator",
|
|
42003
42380
|
capScope: "system",
|
|
@@ -42022,6 +42399,12 @@ Object.freeze({
|
|
|
42022
42399
|
addonId: null,
|
|
42023
42400
|
access: "create"
|
|
42024
42401
|
},
|
|
42402
|
+
"pipelineOrchestrator.planBestSettings": {
|
|
42403
|
+
capName: "pipeline-orchestrator",
|
|
42404
|
+
capScope: "system",
|
|
42405
|
+
addonId: null,
|
|
42406
|
+
access: "view"
|
|
42407
|
+
},
|
|
42025
42408
|
"pipelineOrchestrator.rebalance": {
|
|
42026
42409
|
capName: "pipeline-orchestrator",
|
|
42027
42410
|
capScope: "system",
|
|
@@ -42082,12 +42465,6 @@ Object.freeze({
|
|
|
42082
42465
|
addonId: null,
|
|
42083
42466
|
access: "create"
|
|
42084
42467
|
},
|
|
42085
|
-
"pipelineOrchestrator.setAgentDetectWeight": {
|
|
42086
|
-
capName: "pipeline-orchestrator",
|
|
42087
|
-
capScope: "system",
|
|
42088
|
-
addonId: null,
|
|
42089
|
-
access: "create"
|
|
42090
|
-
},
|
|
42091
42468
|
"pipelineOrchestrator.setAgentInferenceDevices": {
|
|
42092
42469
|
capName: "pipeline-orchestrator",
|
|
42093
42470
|
capScope: "system",
|
|
@@ -42142,12 +42519,24 @@ Object.freeze({
|
|
|
42142
42519
|
addonId: null,
|
|
42143
42520
|
access: "create"
|
|
42144
42521
|
},
|
|
42522
|
+
"pipelineOrchestrator.setLoadBalancingShares": {
|
|
42523
|
+
capName: "pipeline-orchestrator",
|
|
42524
|
+
capScope: "system",
|
|
42525
|
+
addonId: null,
|
|
42526
|
+
access: "create"
|
|
42527
|
+
},
|
|
42145
42528
|
"pipelineOrchestrator.setPipelineDevicePin": {
|
|
42146
42529
|
capName: "pipeline-orchestrator",
|
|
42147
42530
|
capScope: "system",
|
|
42148
42531
|
addonId: null,
|
|
42149
42532
|
access: "create"
|
|
42150
42533
|
},
|
|
42534
|
+
"pipelineOrchestrator.suggestShares": {
|
|
42535
|
+
capName: "pipeline-orchestrator",
|
|
42536
|
+
capScope: "system",
|
|
42537
|
+
addonId: null,
|
|
42538
|
+
access: "view"
|
|
42539
|
+
},
|
|
42151
42540
|
"pipelineOrchestrator.unassignAudio": {
|
|
42152
42541
|
capName: "pipeline-orchestrator",
|
|
42153
42542
|
capScope: "system",
|
|
@@ -47444,6 +47833,11 @@ Object.freeze({
|
|
|
47444
47833
|
form: "single",
|
|
47445
47834
|
optional: false
|
|
47446
47835
|
}],
|
|
47836
|
+
"pipelineExecutor.clearModelBoundDeviceOverrides": [{
|
|
47837
|
+
name: "deviceIds",
|
|
47838
|
+
form: "array",
|
|
47839
|
+
optional: true
|
|
47840
|
+
}],
|
|
47447
47841
|
"pipelineExecutor.runPipeline": [{
|
|
47448
47842
|
name: "deviceId",
|
|
47449
47843
|
form: "single",
|