@camstack/addon-export-alexa 1.2.130 → 1.2.131
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/export-alexa.addon.js +846 -97
- package/dist/export-alexa.addon.mjs +846 -97
- package/package.json +1 -1
|
@@ -5406,7 +5406,7 @@ var ZodIssueCode = {
|
|
|
5406
5406
|
var ZodFirstPartyTypeKind;
|
|
5407
5407
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5408
5408
|
//#endregion
|
|
5409
|
-
//#region ../types/dist/sleep-
|
|
5409
|
+
//#region ../types/dist/sleep-C16NCZR2.mjs
|
|
5410
5410
|
/**
|
|
5411
5411
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5412
5412
|
* window to float samples (D455).
|
|
@@ -10767,57 +10767,26 @@ var ClipSearchStrictnessSchema = _enum([
|
|
|
10767
10767
|
"balanced",
|
|
10768
10768
|
"strict"
|
|
10769
10769
|
]);
|
|
10770
|
-
|
|
10771
|
-
|
|
10772
|
-
id: "person",
|
|
10773
|
-
name: "Person"
|
|
10774
|
-
},
|
|
10775
|
-
{
|
|
10776
|
-
id: "vehicle",
|
|
10777
|
-
name: "Vehicle"
|
|
10778
|
-
},
|
|
10779
|
-
{
|
|
10780
|
-
id: "animal",
|
|
10781
|
-
name: "Animal"
|
|
10782
|
-
},
|
|
10783
|
-
{
|
|
10784
|
-
id: "package",
|
|
10785
|
-
name: "Package"
|
|
10786
|
-
}
|
|
10787
|
-
].map((l) => l.id));
|
|
10788
|
-
var COCO_TO_MACRO = {
|
|
10789
|
-
mapping: {
|
|
10790
|
-
person: "person",
|
|
10791
|
-
bicycle: "vehicle",
|
|
10792
|
-
car: "vehicle",
|
|
10793
|
-
motorcycle: "vehicle",
|
|
10794
|
-
airplane: "vehicle",
|
|
10795
|
-
bus: "vehicle",
|
|
10796
|
-
train: "vehicle",
|
|
10797
|
-
truck: "vehicle",
|
|
10798
|
-
boat: "vehicle",
|
|
10799
|
-
bird: "animal",
|
|
10800
|
-
cat: "animal",
|
|
10801
|
-
dog: "animal",
|
|
10802
|
-
horse: "animal",
|
|
10803
|
-
sheep: "animal",
|
|
10804
|
-
cow: "animal",
|
|
10805
|
-
elephant: "animal",
|
|
10806
|
-
bear: "animal",
|
|
10807
|
-
zebra: "animal",
|
|
10808
|
-
giraffe: "animal",
|
|
10809
|
-
suitcase: "package",
|
|
10810
|
-
backpack: "package",
|
|
10811
|
-
handbag: "package"
|
|
10812
|
-
},
|
|
10813
|
-
preserveOriginal: false
|
|
10814
|
-
};
|
|
10815
|
-
/** Steps a root detector may declare it fills. */
|
|
10816
|
-
var FILLABLE_STEP_IDS = [
|
|
10770
|
+
/** Steps whose effect a root label can BE. */
|
|
10771
|
+
var LABEL_SUPPLY_STEP_IDS = [
|
|
10817
10772
|
"animal-classifier",
|
|
10818
10773
|
"vehicle-classifier",
|
|
10819
10774
|
"package-detection"
|
|
10820
10775
|
];
|
|
10776
|
+
/** Steps whose box a root detection can BE. */
|
|
10777
|
+
var CROP_SUPPLY_STEP_IDS = ["plate-detection", "face-detection"];
|
|
10778
|
+
/**
|
|
10779
|
+
* Steps whose per-detection MASK a root detection can carry (D737). The live
|
|
10780
|
+
* mask step is `segmentation` — a frame-plane refiner that runs its own model
|
|
10781
|
+
* once per detection crop. (`instance-segmentation` is a dormant step id that
|
|
10782
|
+
* no camera tree carries.)
|
|
10783
|
+
*/
|
|
10784
|
+
var MASK_SUPPLY_STEP_IDS = ["segmentation"];
|
|
10785
|
+
[
|
|
10786
|
+
...LABEL_SUPPLY_STEP_IDS,
|
|
10787
|
+
...CROP_SUPPLY_STEP_IDS,
|
|
10788
|
+
...MASK_SUPPLY_STEP_IDS
|
|
10789
|
+
];
|
|
10821
10790
|
var MODEL_FORMATS = [
|
|
10822
10791
|
"onnx",
|
|
10823
10792
|
"coreml",
|
|
@@ -10846,7 +10815,53 @@ var ModelFormatEntrySchema = object({
|
|
|
10846
10815
|
/** Multi-file payload (directory members or sibling files). */
|
|
10847
10816
|
files: array(string()).readonly().optional(),
|
|
10848
10817
|
/** Runtime(s) that can use this format. If omitted, inferred from ModelFormat key */
|
|
10849
|
-
runtimes: array(_enum(["python"])).readonly().optional()
|
|
10818
|
+
runtimes: array(_enum(["python"])).readonly().optional(),
|
|
10819
|
+
/**
|
|
10820
|
+
* Content revision of the artefact, for one hosted OFF the CamStack mirror.
|
|
10821
|
+
* A format on the mirror leaves it unset: its revision (the sha256 of its
|
|
10822
|
+
* weight file) comes from the downloader's generated table, kept in step
|
|
10823
|
+
* with the mirror by `scripts/check-hosted-model-revisions.ts` (D744). A
|
|
10824
|
+
* node records the revision it downloaded next to the file
|
|
10825
|
+
* (`<file>.revision`); a copy with no record or a different one is stale
|
|
10826
|
+
* unless its weight file hashes to the revision, and a stale copy is
|
|
10827
|
+
* downloaded again, the old one serving until the new one is complete. No
|
|
10828
|
+
* revision at all ⇒ a file on disk is current, whatever it holds (D743).
|
|
10829
|
+
*/
|
|
10830
|
+
revision: string().min(1).optional()
|
|
10831
|
+
});
|
|
10832
|
+
/**
|
|
10833
|
+
* What a node holds for one (model, format) (D746). `current` is a complete
|
|
10834
|
+
* copy at its catalog revision — exactly what `downloaded: true` means.
|
|
10835
|
+
* `stale` is bytes on disk that are not (yet) proven current under D743/D744:
|
|
10836
|
+
* no or a different revision record, or a missing sibling. `missing` is no
|
|
10837
|
+
* copy. `downloaded` alone folds `stale` into "not downloaded", which hid
|
|
10838
|
+
* reclaimable bytes and a copy about to be replaced.
|
|
10839
|
+
*/
|
|
10840
|
+
var ModelOnDiskStateSchema = _enum([
|
|
10841
|
+
"current",
|
|
10842
|
+
"stale",
|
|
10843
|
+
"missing"
|
|
10844
|
+
]);
|
|
10845
|
+
/**
|
|
10846
|
+
* The numeric precision of one format's BUILD (D746) — reported only when the
|
|
10847
|
+
* build states it (file-name token, an INT8 variant, an EdgeTPU compile, a
|
|
10848
|
+
* CamStack Core ML export). Absent means "not stated", never "fp32".
|
|
10849
|
+
*/
|
|
10850
|
+
var ModelFormatPrecisionSchema = _enum([
|
|
10851
|
+
"fp32",
|
|
10852
|
+
"fp16",
|
|
10853
|
+
"int8"
|
|
10854
|
+
]);
|
|
10855
|
+
/**
|
|
10856
|
+
* One format of one model as a node's `pipelineExecutor.getSchema` reports it.
|
|
10857
|
+
* `onDisk` / `precision` are optional for version skew: a runner that predates
|
|
10858
|
+
* them omits them, and a reader falls back to `downloaded`.
|
|
10859
|
+
*/
|
|
10860
|
+
var PipelineModelFormatStatusSchema = object({
|
|
10861
|
+
downloaded: boolean(),
|
|
10862
|
+
sizeMB: number(),
|
|
10863
|
+
onDisk: ModelOnDiskStateSchema.optional(),
|
|
10864
|
+
precision: ModelFormatPrecisionSchema.optional()
|
|
10850
10865
|
});
|
|
10851
10866
|
/**
|
|
10852
10867
|
* Extra file that must be downloaded alongside the model (e.g., labels JSON, dict.txt).
|
|
@@ -10950,12 +10965,46 @@ var ModelLicenseSchema = preprocess((value) => typeof value === "string" ? { wei
|
|
|
10950
10965
|
/** True when the weights or their data forbid commercial use. */
|
|
10951
10966
|
nonCommercial: boolean().optional()
|
|
10952
10967
|
}));
|
|
10953
|
-
/**
|
|
10954
|
-
|
|
10955
|
-
|
|
10956
|
-
|
|
10957
|
-
|
|
10958
|
-
|
|
10968
|
+
/**
|
|
10969
|
+
* One step a ROOT detector can supply from its own output (D730) — see
|
|
10970
|
+
* `ModelCatalogEntry.suppliesSteps`.
|
|
10971
|
+
*
|
|
10972
|
+
* - `label`: the root's raw class IS the step's answer. `labelToEffect` maps
|
|
10973
|
+
* the root's label to the step's vocabulary; `uncovered` is the vocabulary
|
|
10974
|
+
* the root cannot produce (shown as unavailable, never a blocker).
|
|
10975
|
+
* - `crop`: the root draws the box the step would have found (`license_plate`
|
|
10976
|
+
* for plate-detection, `face` for face-detection). The box becomes a detail
|
|
10977
|
+
* child of the `parentMacro` detection that contains it — never a track.
|
|
10978
|
+
* - `mask`: the root's decode emits an instance mask with every detection (a
|
|
10979
|
+
* YOLO26-seg root, D737) — the `segmentation` step's result, carried on the
|
|
10980
|
+
* detection in the shape that step produces. Derived from the model's
|
|
10981
|
+
* postprocessor on read, never stored by an import.
|
|
10982
|
+
*/
|
|
10983
|
+
var RootStepSupplySchema = discriminatedUnion("kind", [
|
|
10984
|
+
object({
|
|
10985
|
+
kind: literal("label"),
|
|
10986
|
+
stepId: _enum(LABEL_SUPPLY_STEP_IDS),
|
|
10987
|
+
labelToEffect: record(string(), string()),
|
|
10988
|
+
uncovered: array(string()).readonly()
|
|
10989
|
+
}),
|
|
10990
|
+
object({
|
|
10991
|
+
kind: literal("crop"),
|
|
10992
|
+
stepId: _enum(CROP_SUPPLY_STEP_IDS),
|
|
10993
|
+
rootLabels: array(string()).readonly(),
|
|
10994
|
+
parentMacro: _enum(["vehicle", "person"]),
|
|
10995
|
+
childClass: _enum(["plate", "face"]),
|
|
10996
|
+
/**
|
|
10997
|
+
* The root's smaller input side, stamped on read by `rootSuppliesOf` from
|
|
10998
|
+
* the model entry — what a step's `minRootInputPx` gate judges. Never
|
|
10999
|
+
* stored by an import.
|
|
11000
|
+
*/
|
|
11001
|
+
rootInputPx: number().int().positive().optional()
|
|
11002
|
+
}),
|
|
11003
|
+
object({
|
|
11004
|
+
kind: literal("mask"),
|
|
11005
|
+
stepId: _enum(MASK_SUPPLY_STEP_IDS)
|
|
11006
|
+
})
|
|
11007
|
+
]);
|
|
10959
11008
|
var ModelCatalogEntrySchema = object({
|
|
10960
11009
|
id: string(),
|
|
10961
11010
|
name: string(),
|
|
@@ -11021,6 +11070,35 @@ var ModelCatalogEntrySchema = object({
|
|
|
11021
11070
|
*/
|
|
11022
11071
|
defaultConfidence: number().min(0).max(1).optional(),
|
|
11023
11072
|
/**
|
|
11073
|
+
* Per-MODEL default of the per-class confidence floors (`minConfidence<Macro>`
|
|
11074
|
+
* on a detector step), keyed by macro class: `{ person: 0.45 }`. A class
|
|
11075
|
+
* absent here runs at the step slider's global default. The same row shape
|
|
11076
|
+
* the floor measurement produces (`model-floors.json`: modelId → floors), so
|
|
11077
|
+
* a measured table is copied in as-is. An operator override is bound to the
|
|
11078
|
+
* model it was made for and does not survive a model change (D738). A custom
|
|
11079
|
+
* / imported model may declare it; without it, the global defaults apply.
|
|
11080
|
+
*/
|
|
11081
|
+
defaultClassFloors: record(string(), number().min(0).max(1)).optional(),
|
|
11082
|
+
/**
|
|
11083
|
+
* The inference precision this model's OpenVINO IR needs on an Intel GPU.
|
|
11084
|
+
* Absent ⇒ the device default (f16 on a GPU). Set to `'f32'` for an FP32 IR
|
|
11085
|
+
* that produces invalid output at f16 — measured 2026-10-07 for YOLO26
|
|
11086
|
+
* base IRs (`yolo26s`: 0 true / 146 false positives; `yolo26m*`: NaN
|
|
11087
|
+
* scores) on the Core Ultra iGPU and the N100. Threaded to the pool as
|
|
11088
|
+
* `PoolModelConfig.gpuInferencePrecision`; the pool sets
|
|
11089
|
+
* INFERENCE_PRECISION_HINT on a GPU only. Costs ~60% latency on the GPU.
|
|
11090
|
+
*/
|
|
11091
|
+
gpuInferencePrecision: _enum(["f32", "f16"]).optional(),
|
|
11092
|
+
/**
|
|
11093
|
+
* ROOT detectors only: per supplied step (`animal-classifier`, …), the
|
|
11094
|
+
* minimum DETECTION score from which this root's own fine label (species,
|
|
11095
|
+
* vehicle type — D736 root supply) is taken (D741). Below it the detection
|
|
11096
|
+
* keeps its macro class without the fine label. `1` = never take it from
|
|
11097
|
+
* this root. Absent ⇒ no floor beyond the macro floor. The supplied step's
|
|
11098
|
+
* `minConfidence` slider, bound to the ROOT model, overrides it.
|
|
11099
|
+
*/
|
|
11100
|
+
suppliedLabelFloors: record(string(), number().min(0).max(1)).optional(),
|
|
11101
|
+
/**
|
|
11024
11102
|
* When true, the executor produces a landmark-aligned crop (similarity warp
|
|
11025
11103
|
* onto the canonical template) before this step runs, instead of a plain
|
|
11026
11104
|
* axis-aligned bbox crop. Required for face-recognition embedders (ArcFace):
|
|
@@ -11082,15 +11160,15 @@ var ModelCatalogEntrySchema = object({
|
|
|
11082
11160
|
*/
|
|
11083
11161
|
classMap: DetectionCatalogClassMapSchema.optional(),
|
|
11084
11162
|
/**
|
|
11085
|
-
* The pipeline steps this ROOT detector
|
|
11086
|
-
* its labels name
|
|
11087
|
-
*
|
|
11088
|
-
* labelmap by `
|
|
11089
|
-
*
|
|
11090
|
-
*
|
|
11091
|
-
* `
|
|
11163
|
+
* The pipeline steps this ROOT detector can supply from its own output
|
|
11164
|
+
* (D730): its labels name a step's effect (`deer` for `animal-classifier`)
|
|
11165
|
+
* or draw a step's box (`license_plate` for `plate-detection`). Computed at
|
|
11166
|
+
* import from THIS model's labelmap by `deriveRootSupplies`, never written
|
|
11167
|
+
* by hand and never assumed per family; a row without it is derived on read
|
|
11168
|
+
* (`rootSuppliesOf`). Whether a camera uses it is the step's own
|
|
11169
|
+
* `useRootModel` flag (`resolveRootSupply`).
|
|
11092
11170
|
*/
|
|
11093
|
-
|
|
11171
|
+
suppliesSteps: array(RootStepSupplySchema).readonly().optional(),
|
|
11094
11172
|
/**
|
|
11095
11173
|
* The model's CLIP feature-space contract (text encoder, dimension, vector
|
|
11096
11174
|
* index, token window, search floor) — see `clip-model.ts`. Present ONLY on a
|
|
@@ -16301,6 +16379,12 @@ method(_void(), array(string()).readonly(), { auth: "admin" }), method(object({
|
|
|
16301
16379
|
kind: "mutation",
|
|
16302
16380
|
auth: "admin"
|
|
16303
16381
|
});
|
|
16382
|
+
var HUB_ADDRESS_ROLES = [
|
|
16383
|
+
"appConnections",
|
|
16384
|
+
"notificationTaps",
|
|
16385
|
+
"internal",
|
|
16386
|
+
"publicEndpoint"
|
|
16387
|
+
];
|
|
16304
16388
|
/**
|
|
16305
16389
|
* Transport bounds for AI capability methods.
|
|
16306
16390
|
*
|
|
@@ -18063,6 +18147,51 @@ method(object({}), array(TargetKindSchema)), method(object({}), array(TargetSche
|
|
|
18063
18147
|
kind: "mutation",
|
|
18064
18148
|
auth: "admin"
|
|
18065
18149
|
});
|
|
18150
|
+
new Set([
|
|
18151
|
+
{
|
|
18152
|
+
id: "person",
|
|
18153
|
+
name: "Person"
|
|
18154
|
+
},
|
|
18155
|
+
{
|
|
18156
|
+
id: "vehicle",
|
|
18157
|
+
name: "Vehicle"
|
|
18158
|
+
},
|
|
18159
|
+
{
|
|
18160
|
+
id: "animal",
|
|
18161
|
+
name: "Animal"
|
|
18162
|
+
},
|
|
18163
|
+
{
|
|
18164
|
+
id: "package",
|
|
18165
|
+
name: "Package"
|
|
18166
|
+
}
|
|
18167
|
+
].map((l) => l.id));
|
|
18168
|
+
var COCO_TO_MACRO = {
|
|
18169
|
+
mapping: {
|
|
18170
|
+
person: "person",
|
|
18171
|
+
bicycle: "vehicle",
|
|
18172
|
+
car: "vehicle",
|
|
18173
|
+
motorcycle: "vehicle",
|
|
18174
|
+
airplane: "vehicle",
|
|
18175
|
+
bus: "vehicle",
|
|
18176
|
+
train: "vehicle",
|
|
18177
|
+
truck: "vehicle",
|
|
18178
|
+
boat: "vehicle",
|
|
18179
|
+
bird: "animal",
|
|
18180
|
+
cat: "animal",
|
|
18181
|
+
dog: "animal",
|
|
18182
|
+
horse: "animal",
|
|
18183
|
+
sheep: "animal",
|
|
18184
|
+
cow: "animal",
|
|
18185
|
+
elephant: "animal",
|
|
18186
|
+
bear: "animal",
|
|
18187
|
+
zebra: "animal",
|
|
18188
|
+
giraffe: "animal",
|
|
18189
|
+
suitcase: "package",
|
|
18190
|
+
backpack: "package",
|
|
18191
|
+
handbag: "package"
|
|
18192
|
+
},
|
|
18193
|
+
preserveOriginal: false
|
|
18194
|
+
};
|
|
18066
18195
|
var AUDIO_MACRO_LABELS = [
|
|
18067
18196
|
{
|
|
18068
18197
|
id: "speech",
|
|
@@ -18820,6 +18949,8 @@ var NcSystemEventKindSchema = _enum([
|
|
|
18820
18949
|
"stream-offline",
|
|
18821
18950
|
"node-online",
|
|
18822
18951
|
"node-offline",
|
|
18952
|
+
"node-restarting",
|
|
18953
|
+
"node-updating",
|
|
18823
18954
|
"node-inference-unavailable",
|
|
18824
18955
|
"detection-blind",
|
|
18825
18956
|
"addon-crash-loop",
|
|
@@ -20425,7 +20556,13 @@ var NcAlarmModeDelaysListSchema = array(object({
|
|
|
20425
20556
|
* Absent = false (logged, not sent). Even when true it is not sent when that same sensor
|
|
20426
20557
|
* is the one that starts the entry delay — the entry-delay notification already names it.
|
|
20427
20558
|
*/
|
|
20428
|
-
notifySensorRewatched: boolean().optional()
|
|
20559
|
+
notifySensorRewatched: boolean().optional(),
|
|
20560
|
+
/**
|
|
20561
|
+
* D735: notify "ignored" when a sensor this arm bypassed really MOVED while armed (its own
|
|
20562
|
+
* change time is after the arm) and set nothing off. Absent = false (logged, not sent). A
|
|
20563
|
+
* re-sync, a recovery from `unavailable` or a duplicate is never announced, switch or not.
|
|
20564
|
+
*/
|
|
20565
|
+
notifySensorIgnored: boolean().optional()
|
|
20429
20566
|
})).max(8).refine(uniqueModes, { message: "modeDelays: at most one entry per arm mode" });
|
|
20430
20567
|
var NcAlarmModeDelaysEditListSchema = array(object({
|
|
20431
20568
|
mode: AlarmArmModeSchema,
|
|
@@ -20438,7 +20575,9 @@ var NcAlarmModeDelaysEditListSchema = array(object({
|
|
|
20438
20575
|
/** D706: set the switch, or `null` to clear it (back to the default, false). */
|
|
20439
20576
|
notifyDuringEntryDelay: boolean().nullable().optional(),
|
|
20440
20577
|
/** D706: set the switch, or `null` to clear it (back to the default, false). */
|
|
20441
|
-
notifySensorRewatched: boolean().nullable().optional()
|
|
20578
|
+
notifySensorRewatched: boolean().nullable().optional(),
|
|
20579
|
+
/** D735: set the switch, or `null` to clear it (back to the default, false). */
|
|
20580
|
+
notifySensorIgnored: boolean().nullable().optional()
|
|
20442
20581
|
})).max(8).refine(uniqueModes, { message: "modeDelays: at most one edit per arm mode" });
|
|
20443
20582
|
/** One switch of the alarm table: put ONE device on, or take it off, ONE mode's list. */
|
|
20444
20583
|
var NcAlarmNonBlockingEditSchema = object({
|
|
@@ -23353,6 +23492,34 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
23353
23492
|
timestamp: number()
|
|
23354
23493
|
});
|
|
23355
23494
|
/**
|
|
23495
|
+
* A root model's boxes standing in for one crop-kind step's own inference
|
|
23496
|
+
* (D730) — see `runPipeline.suppliedRoot`.
|
|
23497
|
+
*/
|
|
23498
|
+
var SuppliedRootOutputSchema = object({
|
|
23499
|
+
stepId: string(),
|
|
23500
|
+
/** The root model that drew the boxes — stamped on the result. */
|
|
23501
|
+
modelId: string(),
|
|
23502
|
+
detections: array(object({
|
|
23503
|
+
/** `[x1, y1, x2, y2]` in the pixels of the call's image. */
|
|
23504
|
+
bbox: tuple([
|
|
23505
|
+
number(),
|
|
23506
|
+
number(),
|
|
23507
|
+
number(),
|
|
23508
|
+
number()
|
|
23509
|
+
]),
|
|
23510
|
+
score: number(),
|
|
23511
|
+
/**
|
|
23512
|
+
* Five facial landmarks in the same pixels — a face the step's own
|
|
23513
|
+
* detector already re-found inside a root face box (D730), so its
|
|
23514
|
+
* embedder child aligns it exactly as it aligns any detected face.
|
|
23515
|
+
*/
|
|
23516
|
+
landmarks: array(object({
|
|
23517
|
+
x: number(),
|
|
23518
|
+
y: number()
|
|
23519
|
+
})).optional()
|
|
23520
|
+
})).min(1)
|
|
23521
|
+
});
|
|
23522
|
+
/**
|
|
23356
23523
|
* Reference to the frame's retained NATIVE surface + the parent crop's placement
|
|
23357
23524
|
* within the frame, so the executor can re-cut a leaf child ROI at native
|
|
23358
23525
|
* resolution on the detail plane. See the `runPipeline` `nativeCropRef` field.
|
|
@@ -23400,7 +23567,7 @@ var FrameRefSchema = object({
|
|
|
23400
23567
|
timestamp: number(),
|
|
23401
23568
|
capturedAt: number().optional()
|
|
23402
23569
|
});
|
|
23403
|
-
var ModelFormatSchema$
|
|
23570
|
+
var ModelFormatSchema$2 = _enum([
|
|
23404
23571
|
"onnx",
|
|
23405
23572
|
"coreml",
|
|
23406
23573
|
"openvino",
|
|
@@ -23418,7 +23585,7 @@ var PipelineSlotSchema = _enum([
|
|
|
23418
23585
|
var PipelineEngineChoiceSchema = object({
|
|
23419
23586
|
runtime: literal("python"),
|
|
23420
23587
|
backend: string(),
|
|
23421
|
-
format: ModelFormatSchema$
|
|
23588
|
+
format: ModelFormatSchema$2,
|
|
23422
23589
|
device: string().optional()
|
|
23423
23590
|
});
|
|
23424
23591
|
/**
|
|
@@ -23475,15 +23642,12 @@ var PipelineTemplateSchema$1 = object({
|
|
|
23475
23642
|
var PipelineModelOptionSchema = object({
|
|
23476
23643
|
id: string(),
|
|
23477
23644
|
name: string(),
|
|
23478
|
-
formats: record(string(),
|
|
23479
|
-
downloaded: boolean(),
|
|
23480
|
-
sizeMB: number()
|
|
23481
|
-
})),
|
|
23645
|
+
formats: record(string(), PipelineModelFormatStatusSchema),
|
|
23482
23646
|
group: ModelVariantGroupSchema.optional(),
|
|
23483
23647
|
legacy: boolean().optional(),
|
|
23484
23648
|
provider: ModelProviderIdSchema.optional(),
|
|
23485
23649
|
defaultConfidence: number().optional(),
|
|
23486
|
-
|
|
23650
|
+
suppliesSteps: array(RootStepSupplySchema).readonly().optional()
|
|
23487
23651
|
});
|
|
23488
23652
|
var ConfigFieldBridge = custom();
|
|
23489
23653
|
var PipelineAddonSchemaSchema = object({
|
|
@@ -23645,6 +23809,22 @@ method(_void(), array(PipelineEngineChoiceSchema)), method(_void(), PipelineEngi
|
|
|
23645
23809
|
}), {
|
|
23646
23810
|
kind: "mutation",
|
|
23647
23811
|
auth: "admin"
|
|
23812
|
+
}), method(object({
|
|
23813
|
+
nodeId: string(),
|
|
23814
|
+
deviceIds: array(number()).readonly().optional(),
|
|
23815
|
+
dryRun: boolean()
|
|
23816
|
+
}), object({
|
|
23817
|
+
entries: array(object({
|
|
23818
|
+
deviceId: number(),
|
|
23819
|
+
keys: array(string()).readonly()
|
|
23820
|
+
})).readonly(),
|
|
23821
|
+
refused: array(object({
|
|
23822
|
+
deviceId: number(),
|
|
23823
|
+
reason: string()
|
|
23824
|
+
})).readonly()
|
|
23825
|
+
}), {
|
|
23826
|
+
kind: "mutation",
|
|
23827
|
+
auth: "admin"
|
|
23648
23828
|
}), method(object({ nodeId: string() }), object({ unhealthy: array(object({
|
|
23649
23829
|
/** `<backend>:<device>`, e.g. `openvino:gpu`. */
|
|
23650
23830
|
deviceKey: string(),
|
|
@@ -23681,11 +23861,11 @@ method(_void(), array(PipelineEngineChoiceSchema)), method(_void(), PipelineEngi
|
|
|
23681
23861
|
}), PipelineTemplateSchema$1, { kind: "mutation" }), method(object({ id: string() }), _void(), { kind: "mutation" }), method(_void(), InferenceCapabilitiesBridge), method(object({ addonId: string() }), ModelAvailabilityListBridge), method(object({
|
|
23682
23862
|
addonId: string(),
|
|
23683
23863
|
modelId: string(),
|
|
23684
|
-
format: ModelFormatSchema$
|
|
23864
|
+
format: ModelFormatSchema$2
|
|
23685
23865
|
}), DownloadModelResultSchema, { kind: "mutation" }), method(object({
|
|
23686
23866
|
addonId: string(),
|
|
23687
23867
|
modelId: string(),
|
|
23688
|
-
format: ModelFormatSchema$
|
|
23868
|
+
format: ModelFormatSchema$2
|
|
23689
23869
|
}), object({ success: literal(true) }), { kind: "mutation" }), method(object({
|
|
23690
23870
|
steps: array(PipelineStepInputSchema).min(1),
|
|
23691
23871
|
frame: FrameInputSchema.optional(),
|
|
@@ -23751,7 +23931,16 @@ method(_void(), array(PipelineEngineChoiceSchema)), method(_void(), PipelineEngi
|
|
|
23751
23931
|
* `device-not-servable`), and nothing reaches the camera's live
|
|
23752
23932
|
* trace stream. Absent ⇒ unchanged behaviour.
|
|
23753
23933
|
*/
|
|
23754
|
-
replay: literal(true).optional()
|
|
23934
|
+
replay: literal(true).optional(),
|
|
23935
|
+
/**
|
|
23936
|
+
* Root-supplied detections for the tree's ROOT step (D730). Set by
|
|
23937
|
+
* `runDetailSubtree` when the camera's root model supplies a crop-kind
|
|
23938
|
+
* step (a Frigate+ `license_plate` for `plate-detection`): the step is
|
|
23939
|
+
* NOT inferred, these boxes are its output, and its children (the plate
|
|
23940
|
+
* reader) run on them through their own crop policy. Boxes are in the
|
|
23941
|
+
* PIXELS of the image this call carries. Absent ⇒ the root step runs.
|
|
23942
|
+
*/
|
|
23943
|
+
suppliedRoot: SuppliedRootOutputSchema.optional()
|
|
23755
23944
|
}), PipelineRunResultBridge, { kind: "mutation" }), method(object({
|
|
23756
23945
|
steps: array(PipelineStepInputSchema).min(1),
|
|
23757
23946
|
frames: array(FrameInputSchema).min(1).max(255),
|
|
@@ -23833,6 +24022,352 @@ method(_void(), array(PipelineEngineChoiceSchema)), method(_void(), PipelineEngi
|
|
|
23833
24022
|
filename: string().optional(),
|
|
23834
24023
|
settings: record(string(), unknown()).optional()
|
|
23835
24024
|
}), AudioTestResultSchema, { kind: "mutation" }), method(_void(), ConfigUISchemaNullableBridge);
|
|
24025
|
+
/**
|
|
24026
|
+
* Wire shapes of the Load balancing surface (D748): the session placement
|
|
24027
|
+
* policy, the atomic share write, the observed placement statistics, the
|
|
24028
|
+
* hardware share suggestion and the stale device pins.
|
|
24029
|
+
*/
|
|
24030
|
+
/**
|
|
24031
|
+
* How a new detection session picks its node and device.
|
|
24032
|
+
* - `least-loaded` — the historical rule: lowest `attached / weight`, a
|
|
24033
|
+
* constant node order at a tie (D37). An idle node always ties at 0, so a
|
|
24034
|
+
* weight only bites once a node already holds a session.
|
|
24035
|
+
* - `share` — the share of PARALLEL sessions is held to the weights, and a
|
|
24036
|
+
* full or drowning node yields to a free one (D748).
|
|
24037
|
+
*/
|
|
24038
|
+
var SessionPlacementPolicySchema = _enum(["least-loaded", "share"]);
|
|
24039
|
+
var LoadBalancingSharesInputSchema = object({
|
|
24040
|
+
/** nodeId → share (> 0). A node left out keeps its weight. */
|
|
24041
|
+
nodes: record(string(), number().positive()).default({}),
|
|
24042
|
+
/** nodeId → deviceKey → share (> 0). A device left out keeps its weight. */
|
|
24043
|
+
devices: record(string(), record(string(), number().positive())).default({})
|
|
24044
|
+
});
|
|
24045
|
+
var PlacementStatsInputSchema = object({
|
|
24046
|
+
/** Window the observed shares are averaged over (default 1 h, max 24 h). */
|
|
24047
|
+
windowMs: number().int().min(6e4).max(1440 * 60 * 1e3).default(3600 * 1e3) });
|
|
24048
|
+
var PlacementDeviceStatsSchema = object({
|
|
24049
|
+
deviceKey: string(),
|
|
24050
|
+
/** Sessions running on this device now. */
|
|
24051
|
+
sessionsNow: number(),
|
|
24052
|
+
/** Sessions started on this device inside the window. */
|
|
24053
|
+
sessionsStarted: number(),
|
|
24054
|
+
/** Time-weighted share of the node's parallel sessions over the window (0–1); null = no session ran. */
|
|
24055
|
+
observedShare: number().nullable()
|
|
24056
|
+
});
|
|
24057
|
+
var PlacementNodeStatsSchema = object({
|
|
24058
|
+
nodeId: string(),
|
|
24059
|
+
sessionsNow: number(),
|
|
24060
|
+
sessionsStarted: number(),
|
|
24061
|
+
/** Time-weighted share of the cluster's parallel sessions over the window (0–1); null = none ran. */
|
|
24062
|
+
observedShare: number().nullable(),
|
|
24063
|
+
/** Most sessions this node ran at once inside the window. */
|
|
24064
|
+
peakSessions: number(),
|
|
24065
|
+
/** Sessions a share election handed elsewhere because this node was full or drowning. */
|
|
24066
|
+
yieldsAway: number(),
|
|
24067
|
+
devices: array(PlacementDeviceStatsSchema).readonly()
|
|
24068
|
+
});
|
|
24069
|
+
/** A camera's device pin that the session path cannot honour. */
|
|
24070
|
+
var StaleDevicePinSchema = object({
|
|
24071
|
+
deviceId: number(),
|
|
24072
|
+
deviceKey: string(),
|
|
24073
|
+
/** `disabled` — the key exists on some node but is not enabled anywhere; `absent` — no node has it. */
|
|
24074
|
+
reason: _enum(["disabled", "absent"])
|
|
24075
|
+
});
|
|
24076
|
+
var PlacementStatsSchema = object({
|
|
24077
|
+
policy: SessionPlacementPolicySchema,
|
|
24078
|
+
windowMs: number(),
|
|
24079
|
+
/** How much of the window was actually observed (the hub keeps it in memory). */
|
|
24080
|
+
observedForMs: number(),
|
|
24081
|
+
sessionsNow: number(),
|
|
24082
|
+
/** Most parallel sessions across the cluster inside the window. */
|
|
24083
|
+
clusterPeakSessions: number(),
|
|
24084
|
+
nodes: array(PlacementNodeStatsSchema).readonly(),
|
|
24085
|
+
stalePins: array(StaleDevicePinSchema).readonly()
|
|
24086
|
+
});
|
|
24087
|
+
var SuggestSharesInputSchema = object({ headroom: number().min(.3).max(.5).default(.4) });
|
|
24088
|
+
var SuggestedDeviceShareSchema = object({
|
|
24089
|
+
deviceKey: string(),
|
|
24090
|
+
/** Share of the node (0–100, rounded). */
|
|
24091
|
+
share: number(),
|
|
24092
|
+
modelId: string().nullable(),
|
|
24093
|
+
/** Inferences per second at that model, from the measured table. */
|
|
24094
|
+
fps: number().nullable(),
|
|
24095
|
+
measured: boolean(),
|
|
24096
|
+
/** Advisory session cap: ⌊fps × (1 − headroom) / camera fps⌋. Never enforced. */
|
|
24097
|
+
suggestedMaxSessions: number().nullable()
|
|
24098
|
+
});
|
|
24099
|
+
var SuggestedNodeShareSchema = object({
|
|
24100
|
+
nodeId: string(),
|
|
24101
|
+
/** Share of the cluster (0–100, rounded); null = node skipped (offline, unknown hardware). */
|
|
24102
|
+
share: number().nullable(),
|
|
24103
|
+
/** Parallel sessions the node sustains at the suggested models with the headroom kept free. */
|
|
24104
|
+
capacitySessions: number(),
|
|
24105
|
+
devices: array(SuggestedDeviceShareSchema).readonly(),
|
|
24106
|
+
skippedReason: string().nullable()
|
|
24107
|
+
});
|
|
24108
|
+
var SuggestSharesResultSchema = object({
|
|
24109
|
+
headroom: number(),
|
|
24110
|
+
/** Camera detection rate the capacity is counted in (the fastest camera's fps). */
|
|
24111
|
+
cameraFps: number(),
|
|
24112
|
+
/** How many share → model → capacity rounds ran before the shares stopped moving (≤ 3). */
|
|
24113
|
+
iterations: number(),
|
|
24114
|
+
nodes: array(SuggestedNodeShareSchema).readonly()
|
|
24115
|
+
});
|
|
24116
|
+
/**
|
|
24117
|
+
* Where the node and device shares come from (D750).
|
|
24118
|
+
* - `auto` — computed by the system from the cluster's measured capacity at
|
|
24119
|
+
* the Auto tune models, and recomputed whenever a node or device joins,
|
|
24120
|
+
* leaves, is switched on or off, or changes model.
|
|
24121
|
+
* - `manual` — the operator's stored sliders. A node or device that cannot
|
|
24122
|
+
* take sessions gives its share to the others in proportion; the stored
|
|
24123
|
+
* values are never rewritten for that.
|
|
24124
|
+
*/
|
|
24125
|
+
var ShareSourceSchema = _enum(["auto", "manual"]);
|
|
24126
|
+
var SetShareSourceInputSchema = object({ source: ShareSourceSchema });
|
|
24127
|
+
object({
|
|
24128
|
+
nodes: record(string(), number()),
|
|
24129
|
+
devices: record(string(), record(string(), number()))
|
|
24130
|
+
});
|
|
24131
|
+
var EffectiveDeviceShareSchema = object({
|
|
24132
|
+
deviceKey: string(),
|
|
24133
|
+
/** Can take sessions now (enabled, available, can run the root). */
|
|
24134
|
+
eligible: boolean(),
|
|
24135
|
+
/** The share the source assigns, as a percentage of the node's devices. */
|
|
24136
|
+
configuredPct: number(),
|
|
24137
|
+
/** The share actually used, after an ineligible device's share went to the others. */
|
|
24138
|
+
effectivePct: number()
|
|
24139
|
+
});
|
|
24140
|
+
var EffectiveNodeShareSchema = object({
|
|
24141
|
+
nodeId: string(),
|
|
24142
|
+
eligible: boolean(),
|
|
24143
|
+
configuredPct: number(),
|
|
24144
|
+
effectivePct: number(),
|
|
24145
|
+
devices: array(EffectiveDeviceShareSchema).readonly()
|
|
24146
|
+
});
|
|
24147
|
+
var EffectiveSharesSchema = object({
|
|
24148
|
+
source: ShareSourceSchema,
|
|
24149
|
+
policy: SessionPlacementPolicySchema,
|
|
24150
|
+
/** `auto` with no computed answer yet: the stored sliders are used meanwhile. */
|
|
24151
|
+
autoPending: boolean(),
|
|
24152
|
+
/** When the automatic shares were last computed (ms epoch); null = never. */
|
|
24153
|
+
computedAt: number().nullable(),
|
|
24154
|
+
/** What made the system recompute them last. */
|
|
24155
|
+
trigger: string().nullable(),
|
|
24156
|
+
nodes: array(EffectiveNodeShareSchema).readonly(),
|
|
24157
|
+
/** The relative weights the election reads (before eligibility). */
|
|
24158
|
+
nodeWeights: record(string(), number()),
|
|
24159
|
+
deviceWeights: record(string(), record(string(), number()))
|
|
24160
|
+
});
|
|
24161
|
+
/**
|
|
24162
|
+
* The wire shapes of the Auto tune plan and apply (D745), used by the
|
|
24163
|
+
* `pipeline-orchestrator` cap. The recommender's own types
|
|
24164
|
+
* (`recommend.ts`, `demand.ts`) are the TS face of the same data; these
|
|
24165
|
+
* schemas are what crosses the cap boundary.
|
|
24166
|
+
*/
|
|
24167
|
+
var ModelFormatSchema$1 = _enum(MODEL_FORMATS);
|
|
24168
|
+
var HardwareClassIdSchema = _enum([
|
|
24169
|
+
"intel-core-ultra",
|
|
24170
|
+
"intel-n-series",
|
|
24171
|
+
"apple-m-base",
|
|
24172
|
+
"apple-m-pro",
|
|
24173
|
+
"unknown"
|
|
24174
|
+
]);
|
|
24175
|
+
var AcceleratorKindSchema = _enum([
|
|
24176
|
+
"intel-npu",
|
|
24177
|
+
"intel-igpu",
|
|
24178
|
+
"x86-cpu",
|
|
24179
|
+
"arm-cpu",
|
|
24180
|
+
"apple-ane",
|
|
24181
|
+
"coral"
|
|
24182
|
+
]);
|
|
24183
|
+
var RecommendationReasonSchema = discriminatedUnion("kind", [
|
|
24184
|
+
object({
|
|
24185
|
+
kind: literal("fits"),
|
|
24186
|
+
utilisation: number()
|
|
24187
|
+
}),
|
|
24188
|
+
object({
|
|
24189
|
+
kind: literal("tie-faster"),
|
|
24190
|
+
over: string(),
|
|
24191
|
+
recallDelta: number()
|
|
24192
|
+
}),
|
|
24193
|
+
object({
|
|
24194
|
+
kind: literal("stepped-down"),
|
|
24195
|
+
from: string(),
|
|
24196
|
+
to: string(),
|
|
24197
|
+
limitedBy: string()
|
|
24198
|
+
}),
|
|
24199
|
+
object({
|
|
24200
|
+
kind: literal("no-fit-lightest"),
|
|
24201
|
+
utilisation: number()
|
|
24202
|
+
}),
|
|
24203
|
+
object({
|
|
24204
|
+
kind: literal("derived-latency"),
|
|
24205
|
+
modelId: string()
|
|
24206
|
+
}),
|
|
24207
|
+
object({
|
|
24208
|
+
kind: literal("estimated-load"),
|
|
24209
|
+
observedForMs: number().nullable()
|
|
24210
|
+
}),
|
|
24211
|
+
object({ kind: literal("cpu-device") }),
|
|
24212
|
+
object({ kind: literal("coral-untouched") }),
|
|
24213
|
+
object({ kind: literal("device-disabled") }),
|
|
24214
|
+
object({ kind: literal("device-unavailable") }),
|
|
24215
|
+
object({ kind: literal("node-offline") }),
|
|
24216
|
+
object({ kind: literal("no-hardware-facts") }),
|
|
24217
|
+
object({
|
|
24218
|
+
kind: literal("no-measured-data"),
|
|
24219
|
+
hardwareClass: HardwareClassIdSchema
|
|
24220
|
+
}),
|
|
24221
|
+
object({
|
|
24222
|
+
kind: literal("no-family-build"),
|
|
24223
|
+
format: ModelFormatSchema$1
|
|
24224
|
+
})
|
|
24225
|
+
]);
|
|
24226
|
+
var DeviceDemandSchema = object({
|
|
24227
|
+
nodeId: string(),
|
|
24228
|
+
deviceKey: string(),
|
|
24229
|
+
demandFps: number(),
|
|
24230
|
+
maxCameraFps: number(),
|
|
24231
|
+
alwaysOnCameras: number(),
|
|
24232
|
+
onMotionSessions: number(),
|
|
24233
|
+
onMotionSource: _enum([
|
|
24234
|
+
"observed-24h",
|
|
24235
|
+
"estimate",
|
|
24236
|
+
"none"
|
|
24237
|
+
]),
|
|
24238
|
+
observedForMs: number().nullable(),
|
|
24239
|
+
/** How on-motion sessions were charged: per-device observation, or split by share (D748). */
|
|
24240
|
+
placement: SessionPlacementPolicySchema
|
|
24241
|
+
});
|
|
24242
|
+
var DeviceModelChoiceSchema = object({
|
|
24243
|
+
modelId: string(),
|
|
24244
|
+
p50Ms: number(),
|
|
24245
|
+
fps: number(),
|
|
24246
|
+
measured: boolean(),
|
|
24247
|
+
utilisation: number(),
|
|
24248
|
+
personRecall: number()
|
|
24249
|
+
});
|
|
24250
|
+
var DeviceRecommendationSchema = object({
|
|
24251
|
+
deviceKey: string(),
|
|
24252
|
+
accelerator: AcceleratorKindSchema.nullable(),
|
|
24253
|
+
enabled: boolean(),
|
|
24254
|
+
available: boolean(),
|
|
24255
|
+
demand: DeviceDemandSchema.nullable(),
|
|
24256
|
+
chosen: DeviceModelChoiceSchema.nullable(),
|
|
24257
|
+
reasons: array(RecommendationReasonSchema).readonly()
|
|
24258
|
+
});
|
|
24259
|
+
var NodeRecommendationSchema = object({
|
|
24260
|
+
nodeId: string(),
|
|
24261
|
+
reachable: boolean(),
|
|
24262
|
+
hardwareClass: HardwareClassIdSchema.nullable(),
|
|
24263
|
+
cpuModel: string().nullable(),
|
|
24264
|
+
skipped: boolean(),
|
|
24265
|
+
acceleratorModelId: string().nullable(),
|
|
24266
|
+
devices: array(DeviceRecommendationSchema).readonly(),
|
|
24267
|
+
reasons: array(RecommendationReasonSchema).readonly()
|
|
24268
|
+
});
|
|
24269
|
+
var ModelPinChangeSchema = object({
|
|
24270
|
+
stepId: string(),
|
|
24271
|
+
before: string().nullable(),
|
|
24272
|
+
after: string().nullable()
|
|
24273
|
+
});
|
|
24274
|
+
var NodeDeviceChangeSchema = object({
|
|
24275
|
+
nodeId: string(),
|
|
24276
|
+
deviceKey: string(),
|
|
24277
|
+
madeExplicit: boolean(),
|
|
24278
|
+
modelPins: array(ModelPinChangeSchema).readonly(),
|
|
24279
|
+
thresholds: array(object({
|
|
24280
|
+
stepId: string(),
|
|
24281
|
+
keys: array(string()).readonly()
|
|
24282
|
+
})).readonly()
|
|
24283
|
+
});
|
|
24284
|
+
var CameraOverrideClearSchema = object({
|
|
24285
|
+
deviceId: number(),
|
|
24286
|
+
source: _enum(["step-override", "wholesale"]),
|
|
24287
|
+
nodeId: string(),
|
|
24288
|
+
deviceKey: string().nullable(),
|
|
24289
|
+
stepId: string(),
|
|
24290
|
+
modelIdBefore: string().nullable(),
|
|
24291
|
+
keys: array(string()).readonly()
|
|
24292
|
+
});
|
|
24293
|
+
var DetectorStoreClearSchema = object({
|
|
24294
|
+
deviceId: number(),
|
|
24295
|
+
keys: array(string()).readonly()
|
|
24296
|
+
});
|
|
24297
|
+
var AutoTuneWarningSchema = discriminatedUnion("kind", [
|
|
24298
|
+
object({
|
|
24299
|
+
kind: literal("detector-store-cluster-wide"),
|
|
24300
|
+
skippedNodes: array(string()).readonly()
|
|
24301
|
+
}),
|
|
24302
|
+
object({
|
|
24303
|
+
kind: literal("detector-store-unreadable"),
|
|
24304
|
+
error: string()
|
|
24305
|
+
}),
|
|
24306
|
+
object({
|
|
24307
|
+
kind: literal("coral-enabled"),
|
|
24308
|
+
nodeId: string(),
|
|
24309
|
+
deviceKey: string()
|
|
24310
|
+
})
|
|
24311
|
+
]);
|
|
24312
|
+
var AutoTuneOptionsSchema = object({
|
|
24313
|
+
/** Share of each accelerator's throughput kept free (0.3–0.5). */
|
|
24314
|
+
headroom: number().min(.3).max(.5).default(.4),
|
|
24315
|
+
/**
|
|
24316
|
+
* What-if shares (D748): plan as if these node/device shares were stored
|
|
24317
|
+
* and the policy were `share`. Absent = the stored shares under the stored
|
|
24318
|
+
* policy. A what-if plan is for display; apply always re-plans from what
|
|
24319
|
+
* is stored.
|
|
24320
|
+
*/
|
|
24321
|
+
shares: LoadBalancingSharesInputSchema.optional()
|
|
24322
|
+
});
|
|
24323
|
+
var AutoTunePlanSchema = object({
|
|
24324
|
+
/** Hash of everything the apply will write — the apply refuses a different one. */
|
|
24325
|
+
planHash: string(),
|
|
24326
|
+
family: literal("yolov9"),
|
|
24327
|
+
headroom: number(),
|
|
24328
|
+
/** Planned under what-if shares (D748): for display — apply refuses it as stale. */
|
|
24329
|
+
whatIf: boolean(),
|
|
24330
|
+
generatedAt: number(),
|
|
24331
|
+
nodes: array(NodeRecommendationSchema).readonly(),
|
|
24332
|
+
nodeChanges: array(NodeDeviceChangeSchema).readonly(),
|
|
24333
|
+
cameraClears: array(CameraOverrideClearSchema).readonly(),
|
|
24334
|
+
detectorStoreClears: array(DetectorStoreClearSchema).readonly(),
|
|
24335
|
+
warnings: array(AutoTuneWarningSchema).readonly()
|
|
24336
|
+
});
|
|
24337
|
+
var AutoTuneApplyInputSchema = object({
|
|
24338
|
+
planHash: string(),
|
|
24339
|
+
headroom: number().min(.3).max(.5).default(.4)
|
|
24340
|
+
});
|
|
24341
|
+
var AutoTunePhaseResultSchema = object({
|
|
24342
|
+
phase: _enum([
|
|
24343
|
+
"download",
|
|
24344
|
+
"camera-overrides",
|
|
24345
|
+
"detector-thresholds",
|
|
24346
|
+
"node-models",
|
|
24347
|
+
"redispatch"
|
|
24348
|
+
]),
|
|
24349
|
+
ok: boolean(),
|
|
24350
|
+
detail: string()
|
|
24351
|
+
});
|
|
24352
|
+
var AutoTuneApplyResultSchema = discriminatedUnion("kind", [
|
|
24353
|
+
object({
|
|
24354
|
+
kind: literal("applied"),
|
|
24355
|
+
planHash: string(),
|
|
24356
|
+
phases: array(AutoTunePhaseResultSchema).readonly()
|
|
24357
|
+
}),
|
|
24358
|
+
object({
|
|
24359
|
+
kind: literal("aborted"),
|
|
24360
|
+
phases: array(AutoTunePhaseResultSchema).readonly()
|
|
24361
|
+
}),
|
|
24362
|
+
object({
|
|
24363
|
+
kind: literal("stale"),
|
|
24364
|
+
plan: AutoTunePlanSchema
|
|
24365
|
+
}),
|
|
24366
|
+
object({
|
|
24367
|
+
kind: literal("refused"),
|
|
24368
|
+
reason: _enum(["apply-in-progress"])
|
|
24369
|
+
})
|
|
24370
|
+
]);
|
|
23836
24371
|
object({
|
|
23837
24372
|
activeCameras: number(),
|
|
23838
24373
|
throttledCameras: number(),
|
|
@@ -24853,7 +25388,22 @@ method(RunnerCameraConfigSchema, object({ success: literal(true) }), { kind: "mu
|
|
|
24853
25388
|
*/
|
|
24854
25389
|
cropJpeg: string().optional(),
|
|
24855
25390
|
parent: DetailParentSchema,
|
|
24856
|
-
steps: array(string()).optional()
|
|
25391
|
+
steps: array(string()).optional(),
|
|
25392
|
+
/**
|
|
25393
|
+
* The camera's root model already drew this step's boxes (D730): a
|
|
25394
|
+
* `license_plate` inside the parent vehicle. The named step is NOT
|
|
25395
|
+
* inferred — these FRAME-space boxes are its output — and its
|
|
25396
|
+
* requested children (the plate reader) run on them. Absent ⇒ every
|
|
25397
|
+
* requested step infers as before.
|
|
25398
|
+
*/
|
|
25399
|
+
supplied: object({
|
|
25400
|
+
stepId: string(),
|
|
25401
|
+
modelId: string(),
|
|
25402
|
+
boxes: array(object({
|
|
25403
|
+
bbox: NativeCropBboxSchema,
|
|
25404
|
+
score: number()
|
|
25405
|
+
})).min(1)
|
|
25406
|
+
}).optional()
|
|
24857
25407
|
}), object({ details: array(DetailResultSchema) }).nullable(), { kind: "mutation" }), method(object({
|
|
24858
25408
|
/** Catalog step id, e.g. `clip-embedding`. */
|
|
24859
25409
|
stepId: string(),
|
|
@@ -24998,7 +25548,6 @@ var CameraStepOverridePatchSchema = object({
|
|
|
24998
25548
|
settings: record(string(), unknown()).readonly().optional()
|
|
24999
25549
|
});
|
|
25000
25550
|
var CameraPipelineSettingsSchema = object({
|
|
25001
|
-
pinnedAgentNodeId: string().optional(),
|
|
25002
25551
|
stepToggles: record(string(), boolean()).optional(),
|
|
25003
25552
|
stepOverridesByDevice: record(string(), record(string(), record(string(), CameraStepOverridePatchSchema))).optional(),
|
|
25004
25553
|
pipelineByAgent: record(string(), CameraPipelineForAgentSchema).optional()
|
|
@@ -25497,12 +26046,6 @@ method(object({
|
|
|
25497
26046
|
}), object({ success: literal(true) }), {
|
|
25498
26047
|
kind: "mutation",
|
|
25499
26048
|
auth: "admin"
|
|
25500
|
-
}), method(object({
|
|
25501
|
-
agentNodeId: string(),
|
|
25502
|
-
detectWeight: number().positive().nullable()
|
|
25503
|
-
}), object({ success: literal(true) }), {
|
|
25504
|
-
kind: "mutation",
|
|
25505
|
-
auth: "admin"
|
|
25506
26049
|
}), method(object({
|
|
25507
26050
|
agentNodeId: string(),
|
|
25508
26051
|
detect: boolean().nullable().optional(),
|
|
@@ -25544,6 +26087,15 @@ method(object({
|
|
|
25544
26087
|
}), {
|
|
25545
26088
|
kind: "mutation",
|
|
25546
26089
|
auth: "admin"
|
|
26090
|
+
}), method(AutoTuneOptionsSchema, AutoTunePlanSchema, { auth: "admin" }), method(AutoTuneApplyInputSchema, AutoTuneApplyResultSchema, {
|
|
26091
|
+
kind: "mutation",
|
|
26092
|
+
auth: "admin"
|
|
26093
|
+
}), method(LoadBalancingSharesInputSchema, object({ success: literal(true) }), {
|
|
26094
|
+
kind: "mutation",
|
|
26095
|
+
auth: "admin"
|
|
26096
|
+
}), method(PlacementStatsInputSchema, PlacementStatsSchema, { auth: "admin" }), method(SuggestSharesInputSchema, SuggestSharesResultSchema, { auth: "admin" }), method(_void(), EffectiveSharesSchema, { auth: "admin" }), method(SetShareSourceInputSchema, object({ success: literal(true) }), {
|
|
26097
|
+
kind: "mutation",
|
|
26098
|
+
auth: "admin"
|
|
25547
26099
|
}), method(object({ deviceId: number() }), CameraPipelineSettingsSchema.nullable()), method(object({
|
|
25548
26100
|
deviceId: number(),
|
|
25549
26101
|
addonId: string(),
|
|
@@ -28154,6 +28706,14 @@ DeviceType.Camera, method(object({ deviceId: number().int().nonnegative() }), ar
|
|
|
28154
28706
|
*/
|
|
28155
28707
|
alive: boolean()
|
|
28156
28708
|
})), method(object({
|
|
28709
|
+
deviceId: number().int().nonnegative(),
|
|
28710
|
+
sessionId: string(),
|
|
28711
|
+
downlinkMbps: number().nonnegative()
|
|
28712
|
+
}), object({
|
|
28713
|
+
outcome: _enum(["switching", "held"]),
|
|
28714
|
+
tier: CamProfileSchema.nullable(),
|
|
28715
|
+
reason: string()
|
|
28716
|
+
}), { kind: "mutation" }), method(object({
|
|
28157
28717
|
deviceId: number().int().nonnegative(),
|
|
28158
28718
|
sessionId: string()
|
|
28159
28719
|
}), WebrtcSessionDebugSchema, { kind: "query" });
|
|
@@ -30829,7 +31389,8 @@ var ConnectionEndpointSchema = object({
|
|
|
30829
31389
|
"lan-ipv6",
|
|
30830
31390
|
"public",
|
|
30831
31391
|
"loopback",
|
|
30832
|
-
"app-link"
|
|
31392
|
+
"app-link",
|
|
31393
|
+
"custom"
|
|
30833
31394
|
]),
|
|
30834
31395
|
/**
|
|
30835
31396
|
* Originating-interface kind — `lan`/`wifi`/`docker`/`vpn`/`other`/
|
|
@@ -30898,7 +31459,7 @@ var GetConnectionEndpointsResultSchema = object({
|
|
|
30898
31459
|
localPort: AdvertisedLocalPortSchema
|
|
30899
31460
|
});
|
|
30900
31461
|
/**
|
|
30901
|
-
* The address flagged for notification
|
|
31462
|
+
* The address flagged for notification taps (`notificationTaps`). `baseUrl: null` = AUTO, which
|
|
30902
31463
|
* since D709 is the CamStack app link; `resolved` reports the effective value,
|
|
30903
31464
|
* so the UI can show it either way.
|
|
30904
31465
|
*/
|
|
@@ -30931,6 +31492,72 @@ var ViewerEndpointsSchema = object({
|
|
|
30931
31492
|
/** What the ranking currently resolves to (may be empty if nothing is up). */
|
|
30932
31493
|
resolved: array(string()).readonly()
|
|
30933
31494
|
});
|
|
31495
|
+
/**
|
|
31496
|
+
* DEPRECATED compatibility shape of `getHubAddresses` (D729 amendment, kept
|
|
31497
|
+
* for addons built against it): `cluster` is the `internal` role, `browser`
|
|
31498
|
+
* the `publicEndpoint` role; `override` is the flagged address.
|
|
31499
|
+
*/
|
|
31500
|
+
var HubAddressSnapshotSchema = object({
|
|
31501
|
+
override: string().nullable(),
|
|
31502
|
+
resolved: string().nullable(),
|
|
31503
|
+
source: _enum([
|
|
31504
|
+
"override",
|
|
31505
|
+
"auto",
|
|
31506
|
+
"none"
|
|
31507
|
+
])
|
|
31508
|
+
});
|
|
31509
|
+
var HubAddressesSchema = object({
|
|
31510
|
+
cluster: HubAddressSnapshotSchema,
|
|
31511
|
+
browser: HubAddressSnapshotSchema
|
|
31512
|
+
});
|
|
31513
|
+
/**
|
|
31514
|
+
* What an address is used for (`hub-address.ts`, D734). `appConnections` is
|
|
31515
|
+
* many-valued; `notificationTaps`, `publicEndpoint` and `internal` are carried
|
|
31516
|
+
* by at most one address.
|
|
31517
|
+
*/
|
|
31518
|
+
var HubAddressRoleSchema = _enum(HUB_ADDRESS_ROLES);
|
|
31519
|
+
var RoleSourceSchema = _enum([
|
|
31520
|
+
"flagged",
|
|
31521
|
+
"auto",
|
|
31522
|
+
"none"
|
|
31523
|
+
]);
|
|
31524
|
+
/** One single-valued role: the flagged address, the one in use, and why. */
|
|
31525
|
+
var HubAddressRoleResolutionSchema = object({
|
|
31526
|
+
/** The address carrying the flag, or null = automatic. */
|
|
31527
|
+
flagged: string().nullable(),
|
|
31528
|
+
/** The address in use, or null when nothing qualifies (never loopback). */
|
|
31529
|
+
resolved: string().nullable(),
|
|
31530
|
+
source: RoleSourceSchema
|
|
31531
|
+
});
|
|
31532
|
+
var HubAppConnectionsResolutionSchema = object({
|
|
31533
|
+
/** The addresses flagged `appConnections`, or empty = automatic. */
|
|
31534
|
+
flagged: array(string()).readonly(),
|
|
31535
|
+
/** What the apps race right now. */
|
|
31536
|
+
resolved: array(string()).readonly(),
|
|
31537
|
+
source: RoleSourceSchema
|
|
31538
|
+
});
|
|
31539
|
+
var HubAddressBookSchema = object({
|
|
31540
|
+
rows: array(ConnectionEndpointSchema.extend({
|
|
31541
|
+
/** In the hub's detected palette right now. */
|
|
31542
|
+
detected: boolean(),
|
|
31543
|
+
/** Entered by the operator (removable). */
|
|
31544
|
+
custom: boolean(),
|
|
31545
|
+
/** The roles explicitly flagged on this address. */
|
|
31546
|
+
flags: array(HubAddressRoleSchema).readonly(),
|
|
31547
|
+
/** The roles this address serves right now — flagged or automatic. */
|
|
31548
|
+
inUse: array(HubAddressRoleSchema).readonly(),
|
|
31549
|
+
/** The roles this address may be flagged with. */
|
|
31550
|
+
eligible: array(HubAddressRoleSchema).readonly()
|
|
31551
|
+
})).readonly(),
|
|
31552
|
+
roles: object({
|
|
31553
|
+
appConnections: HubAppConnectionsResolutionSchema,
|
|
31554
|
+
notificationTaps: HubAddressRoleResolutionSchema,
|
|
31555
|
+
internal: HubAddressRoleResolutionSchema,
|
|
31556
|
+
publicEndpoint: HubAddressRoleResolutionSchema
|
|
31557
|
+
}),
|
|
31558
|
+
/** The `hub=` an app link carries (D709), or null. */
|
|
31559
|
+
appLinkHub: string().nullable()
|
|
31560
|
+
});
|
|
30934
31561
|
var AllowedAddressesSchema = object({
|
|
30935
31562
|
/**
|
|
30936
31563
|
* Allowlist of interface addresses operators have explicitly opted
|
|
@@ -30974,10 +31601,27 @@ method(_void(), ListResultSchema), method(_void(), PreferredSchema), method(obje
|
|
|
30974
31601
|
* tunnel always emits `https://` regardless. */
|
|
30975
31602
|
scheme: _enum(["http", "https"]).optional(),
|
|
30976
31603
|
/** Append the CamStack app link entry (`kind: 'app-link'`, D709) —
|
|
30977
|
-
* an address notification
|
|
31604
|
+
* an address notification taps can be flagged with, not a hub
|
|
30978
31605
|
* route. Default `false`: racers and rankers never see it. */
|
|
30979
31606
|
includeAppLink: boolean().optional()
|
|
30980
|
-
}), GetConnectionEndpointsResultSchema), method(_void(), NotificationEndpointSchema), method(object({ baseUrl: string().nullable() }), NotificationEndpointSchema, { kind: "mutation" }), method(_void(), ViewerEndpointsSchema), method(object({ baseUrls: array(string()).readonly() }), ViewerEndpointsSchema, { kind: "mutation" }), method(
|
|
31607
|
+
}), GetConnectionEndpointsResultSchema), method(_void(), NotificationEndpointSchema), method(object({ baseUrl: string().nullable() }), NotificationEndpointSchema, { kind: "mutation" }), method(_void(), ViewerEndpointsSchema), method(object({ baseUrls: array(string()).readonly() }), ViewerEndpointsSchema, { kind: "mutation" }), method(object({ scheme: _enum(["http", "https"]).optional() }).optional(), HubAddressBookSchema), method(object({
|
|
31608
|
+
baseUrl: string(),
|
|
31609
|
+
label: string().max(80)
|
|
31610
|
+
}), HubAddressBookSchema, {
|
|
31611
|
+
kind: "mutation",
|
|
31612
|
+
auth: "admin"
|
|
31613
|
+
}), method(object({ baseUrl: string() }), HubAddressBookSchema, {
|
|
31614
|
+
kind: "mutation",
|
|
31615
|
+
auth: "admin"
|
|
31616
|
+
}), method(object({
|
|
31617
|
+
role: HubAddressRoleSchema,
|
|
31618
|
+
baseUrl: string().nullable(),
|
|
31619
|
+
enabled: boolean(),
|
|
31620
|
+
acceptInsecureHttp: boolean().optional()
|
|
31621
|
+
}), HubAddressBookSchema, {
|
|
31622
|
+
kind: "mutation",
|
|
31623
|
+
auth: "admin"
|
|
31624
|
+
}), method(_void(), HubAddressesSchema), method(_void(), AllowedAddressesSchema), method(AllowedAddressesSchema, object({ success: literal(true) }), { kind: "mutation" }), method(_void(), AllowedAddressesSchema, { kind: "mutation" }), method(_void(), TlsStatusSchema), method(object({ reason: string().optional() }), TlsStatusSchema, {
|
|
30981
31625
|
kind: "mutation",
|
|
30982
31626
|
auth: "admin"
|
|
30983
31627
|
}), method(object({
|
|
@@ -31367,7 +32011,8 @@ object({
|
|
|
31367
32011
|
* writes this slice (not even a boot seed), and neither does the runner's
|
|
31368
32012
|
* phase machine: its phase is "a session is attached" for every on-motion
|
|
31369
32013
|
* session, not motion, and it now has its own `DetectionPhaseTransition`.
|
|
31370
|
-
* A provider's `isDetected`
|
|
32014
|
+
* A provider's `isDetected` and `getStatus` answer from the hub's slice
|
|
32015
|
+
* (`hubMotionNativeProvider`).
|
|
31371
32016
|
* - **Sensors** (Home Assistant binary sensors, Homematic, Matter, Alexa
|
|
31372
32017
|
* imports) — the provider pushes both edges itself, from the upstream
|
|
31373
32018
|
* system's own state change. That is the sensor's own fact.
|
|
@@ -36498,6 +37143,16 @@ DeviceType.Camera, method(object({
|
|
|
36498
37143
|
package: array(ZoneRuleSchema).readonly()
|
|
36499
37144
|
});
|
|
36500
37145
|
SOURCE_CAPS.filter((cap) => cap !== "switch" && cap !== "motion");
|
|
37146
|
+
Object.freeze({
|
|
37147
|
+
person: .5,
|
|
37148
|
+
vehicle: .5,
|
|
37149
|
+
animal: .5
|
|
37150
|
+
});
|
|
37151
|
+
Object.freeze({
|
|
37152
|
+
person: .65,
|
|
37153
|
+
vehicle: .65,
|
|
37154
|
+
animal: .65
|
|
37155
|
+
});
|
|
36501
37156
|
/**
|
|
36502
37157
|
* Accessory device helpers — shared across drivers.
|
|
36503
37158
|
*
|
|
@@ -39426,12 +40081,24 @@ Object.freeze({
|
|
|
39426
40081
|
addonId: null,
|
|
39427
40082
|
access: "view"
|
|
39428
40083
|
},
|
|
40084
|
+
"localNetwork.addCustomAddress": {
|
|
40085
|
+
capName: "local-network",
|
|
40086
|
+
capScope: "system",
|
|
40087
|
+
addonId: null,
|
|
40088
|
+
access: "create"
|
|
40089
|
+
},
|
|
39429
40090
|
"localNetwork.downloadCa": {
|
|
39430
40091
|
capName: "local-network",
|
|
39431
40092
|
capScope: "system",
|
|
39432
40093
|
addonId: null,
|
|
39433
40094
|
access: "view"
|
|
39434
40095
|
},
|
|
40096
|
+
"localNetwork.getAddresses": {
|
|
40097
|
+
capName: "local-network",
|
|
40098
|
+
capScope: "system",
|
|
40099
|
+
addonId: null,
|
|
40100
|
+
access: "view"
|
|
40101
|
+
},
|
|
39435
40102
|
"localNetwork.getAllowedAddresses": {
|
|
39436
40103
|
capName: "local-network",
|
|
39437
40104
|
capScope: "system",
|
|
@@ -39444,6 +40111,12 @@ Object.freeze({
|
|
|
39444
40111
|
addonId: null,
|
|
39445
40112
|
access: "view"
|
|
39446
40113
|
},
|
|
40114
|
+
"localNetwork.getHubAddresses": {
|
|
40115
|
+
capName: "local-network",
|
|
40116
|
+
capScope: "system",
|
|
40117
|
+
addonId: null,
|
|
40118
|
+
access: "view"
|
|
40119
|
+
},
|
|
39447
40120
|
"localNetwork.getNotificationEndpoint": {
|
|
39448
40121
|
capName: "local-network",
|
|
39449
40122
|
capScope: "system",
|
|
@@ -39480,6 +40153,12 @@ Object.freeze({
|
|
|
39480
40153
|
addonId: null,
|
|
39481
40154
|
access: "create"
|
|
39482
40155
|
},
|
|
40156
|
+
"localNetwork.removeCustomAddress": {
|
|
40157
|
+
capName: "local-network",
|
|
40158
|
+
capScope: "system",
|
|
40159
|
+
addonId: null,
|
|
40160
|
+
access: "delete"
|
|
40161
|
+
},
|
|
39483
40162
|
"localNetwork.resetAllowlistToBestMatch": {
|
|
39484
40163
|
capName: "local-network",
|
|
39485
40164
|
capScope: "system",
|
|
@@ -39492,6 +40171,12 @@ Object.freeze({
|
|
|
39492
40171
|
addonId: null,
|
|
39493
40172
|
access: "create"
|
|
39494
40173
|
},
|
|
40174
|
+
"localNetwork.setAddressRole": {
|
|
40175
|
+
capName: "local-network",
|
|
40176
|
+
capScope: "system",
|
|
40177
|
+
addonId: null,
|
|
40178
|
+
access: "create"
|
|
40179
|
+
},
|
|
39495
40180
|
"localNetwork.setAllowedAddresses": {
|
|
39496
40181
|
capName: "local-network",
|
|
39497
40182
|
capScope: "system",
|
|
@@ -40986,6 +41671,12 @@ Object.freeze({
|
|
|
40986
41671
|
addonId: null,
|
|
40987
41672
|
access: "delete"
|
|
40988
41673
|
},
|
|
41674
|
+
"pipelineExecutor.clearModelBoundDeviceOverrides": {
|
|
41675
|
+
capName: "pipeline-executor",
|
|
41676
|
+
capScope: "system",
|
|
41677
|
+
addonId: null,
|
|
41678
|
+
access: "delete"
|
|
41679
|
+
},
|
|
40989
41680
|
"pipelineExecutor.deleteModel": {
|
|
40990
41681
|
capName: "pipeline-executor",
|
|
40991
41682
|
capScope: "system",
|
|
@@ -41202,6 +41893,12 @@ Object.freeze({
|
|
|
41202
41893
|
addonId: null,
|
|
41203
41894
|
access: "view"
|
|
41204
41895
|
},
|
|
41896
|
+
"pipelineOrchestrator.applyAutoTune": {
|
|
41897
|
+
capName: "pipeline-orchestrator",
|
|
41898
|
+
capScope: "system",
|
|
41899
|
+
addonId: null,
|
|
41900
|
+
access: "create"
|
|
41901
|
+
},
|
|
41205
41902
|
"pipelineOrchestrator.applyDeviceSettingsPatch": {
|
|
41206
41903
|
capName: "pipeline-orchestrator",
|
|
41207
41904
|
capScope: "system",
|
|
@@ -41316,6 +42013,12 @@ Object.freeze({
|
|
|
41316
42013
|
addonId: null,
|
|
41317
42014
|
access: "view"
|
|
41318
42015
|
},
|
|
42016
|
+
"pipelineOrchestrator.getEffectiveShares": {
|
|
42017
|
+
capName: "pipeline-orchestrator",
|
|
42018
|
+
capScope: "system",
|
|
42019
|
+
addonId: null,
|
|
42020
|
+
access: "view"
|
|
42021
|
+
},
|
|
41319
42022
|
"pipelineOrchestrator.getGlobalMetrics": {
|
|
41320
42023
|
capName: "pipeline-orchestrator",
|
|
41321
42024
|
capScope: "system",
|
|
@@ -41352,6 +42055,12 @@ Object.freeze({
|
|
|
41352
42055
|
addonId: null,
|
|
41353
42056
|
access: "view"
|
|
41354
42057
|
},
|
|
42058
|
+
"pipelineOrchestrator.getPlacementStats": {
|
|
42059
|
+
capName: "pipeline-orchestrator",
|
|
42060
|
+
capScope: "system",
|
|
42061
|
+
addonId: null,
|
|
42062
|
+
access: "view"
|
|
42063
|
+
},
|
|
41355
42064
|
"pipelineOrchestrator.getReconcileFromDiskStatus": {
|
|
41356
42065
|
capName: "pipeline-orchestrator",
|
|
41357
42066
|
capScope: "system",
|
|
@@ -41376,6 +42085,12 @@ Object.freeze({
|
|
|
41376
42085
|
addonId: null,
|
|
41377
42086
|
access: "create"
|
|
41378
42087
|
},
|
|
42088
|
+
"pipelineOrchestrator.planAutoTune": {
|
|
42089
|
+
capName: "pipeline-orchestrator",
|
|
42090
|
+
capScope: "system",
|
|
42091
|
+
addonId: null,
|
|
42092
|
+
access: "view"
|
|
42093
|
+
},
|
|
41379
42094
|
"pipelineOrchestrator.rebalance": {
|
|
41380
42095
|
capName: "pipeline-orchestrator",
|
|
41381
42096
|
capScope: "system",
|
|
@@ -41436,12 +42151,6 @@ Object.freeze({
|
|
|
41436
42151
|
addonId: null,
|
|
41437
42152
|
access: "create"
|
|
41438
42153
|
},
|
|
41439
|
-
"pipelineOrchestrator.setAgentDetectWeight": {
|
|
41440
|
-
capName: "pipeline-orchestrator",
|
|
41441
|
-
capScope: "system",
|
|
41442
|
-
addonId: null,
|
|
41443
|
-
access: "create"
|
|
41444
|
-
},
|
|
41445
42154
|
"pipelineOrchestrator.setAgentInferenceDevices": {
|
|
41446
42155
|
capName: "pipeline-orchestrator",
|
|
41447
42156
|
capScope: "system",
|
|
@@ -41496,12 +42205,30 @@ Object.freeze({
|
|
|
41496
42205
|
addonId: null,
|
|
41497
42206
|
access: "create"
|
|
41498
42207
|
},
|
|
42208
|
+
"pipelineOrchestrator.setLoadBalancingShares": {
|
|
42209
|
+
capName: "pipeline-orchestrator",
|
|
42210
|
+
capScope: "system",
|
|
42211
|
+
addonId: null,
|
|
42212
|
+
access: "create"
|
|
42213
|
+
},
|
|
41499
42214
|
"pipelineOrchestrator.setPipelineDevicePin": {
|
|
41500
42215
|
capName: "pipeline-orchestrator",
|
|
41501
42216
|
capScope: "system",
|
|
41502
42217
|
addonId: null,
|
|
41503
42218
|
access: "create"
|
|
41504
42219
|
},
|
|
42220
|
+
"pipelineOrchestrator.setShareSource": {
|
|
42221
|
+
capName: "pipeline-orchestrator",
|
|
42222
|
+
capScope: "system",
|
|
42223
|
+
addonId: null,
|
|
42224
|
+
access: "create"
|
|
42225
|
+
},
|
|
42226
|
+
"pipelineOrchestrator.suggestShares": {
|
|
42227
|
+
capName: "pipeline-orchestrator",
|
|
42228
|
+
capScope: "system",
|
|
42229
|
+
addonId: null,
|
|
42230
|
+
access: "view"
|
|
42231
|
+
},
|
|
41505
42232
|
"pipelineOrchestrator.unassignAudio": {
|
|
41506
42233
|
capName: "pipeline-orchestrator",
|
|
41507
42234
|
capScope: "system",
|
|
@@ -43746,6 +44473,12 @@ Object.freeze({
|
|
|
43746
44473
|
addonId: null,
|
|
43747
44474
|
access: "create"
|
|
43748
44475
|
},
|
|
44476
|
+
"webrtcSession.applyDownlinkProbe": {
|
|
44477
|
+
capName: "webrtc-session",
|
|
44478
|
+
capScope: "device",
|
|
44479
|
+
addonId: null,
|
|
44480
|
+
access: "create"
|
|
44481
|
+
},
|
|
43749
44482
|
"webrtcSession.closeSession": {
|
|
43750
44483
|
capName: "webrtc-session",
|
|
43751
44484
|
capScope: "device",
|
|
@@ -46792,6 +47525,11 @@ Object.freeze({
|
|
|
46792
47525
|
form: "single",
|
|
46793
47526
|
optional: false
|
|
46794
47527
|
}],
|
|
47528
|
+
"pipelineExecutor.clearModelBoundDeviceOverrides": [{
|
|
47529
|
+
name: "deviceIds",
|
|
47530
|
+
form: "array",
|
|
47531
|
+
optional: true
|
|
47532
|
+
}],
|
|
46795
47533
|
"pipelineExecutor.runPipeline": [{
|
|
46796
47534
|
name: "deviceId",
|
|
46797
47535
|
form: "single",
|
|
@@ -47668,6 +48406,11 @@ Object.freeze({
|
|
|
47668
48406
|
form: "single",
|
|
47669
48407
|
optional: false
|
|
47670
48408
|
}],
|
|
48409
|
+
"webrtcSession.applyDownlinkProbe": [{
|
|
48410
|
+
name: "deviceId",
|
|
48411
|
+
form: "single",
|
|
48412
|
+
optional: false
|
|
48413
|
+
}],
|
|
47671
48414
|
"webrtcSession.closeSession": [{
|
|
47672
48415
|
name: "deviceId",
|
|
47673
48416
|
form: "single",
|
|
@@ -47897,6 +48640,8 @@ new Map(Object.entries({
|
|
|
47897
48640
|
"detection-blind": "device-events",
|
|
47898
48641
|
"node-online": "system",
|
|
47899
48642
|
"node-offline": "system",
|
|
48643
|
+
"node-restarting": "system",
|
|
48644
|
+
"node-updating": "system",
|
|
47900
48645
|
"node-inference-unavailable": "system",
|
|
47901
48646
|
"addon-crash-loop": "system",
|
|
47902
48647
|
"addon-update-available": "system",
|
|
@@ -47974,6 +48719,7 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
|
|
|
47974
48719
|
kinds: [
|
|
47975
48720
|
"node-offline",
|
|
47976
48721
|
"node-online",
|
|
48722
|
+
"node-restarting",
|
|
47977
48723
|
"node-inference-unavailable"
|
|
47978
48724
|
]
|
|
47979
48725
|
},
|
|
@@ -47995,6 +48741,7 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
|
|
|
47995
48741
|
label: "Server & container updates",
|
|
47996
48742
|
kinds: [
|
|
47997
48743
|
"server-update-available",
|
|
48744
|
+
"node-updating",
|
|
47998
48745
|
"server-updated",
|
|
47999
48746
|
"wrapper-update-available"
|
|
48000
48747
|
]
|
|
@@ -48142,6 +48889,7 @@ var STATE_SUMMARY_SECTION_VARS = [
|
|
|
48142
48889
|
kinds: [
|
|
48143
48890
|
"node-offline",
|
|
48144
48891
|
"node-online",
|
|
48892
|
+
"node-restarting",
|
|
48145
48893
|
"node-inference-unavailable"
|
|
48146
48894
|
]
|
|
48147
48895
|
},
|
|
@@ -48163,6 +48911,7 @@ var STATE_SUMMARY_SECTION_VARS = [
|
|
|
48163
48911
|
example: "server 1.2.377 → 1.2.378",
|
|
48164
48912
|
kinds: [
|
|
48165
48913
|
"server-update-available",
|
|
48914
|
+
"node-updating",
|
|
48166
48915
|
"server-updated",
|
|
48167
48916
|
"wrapper-update-available"
|
|
48168
48917
|
]
|
|
@@ -48195,7 +48944,7 @@ var STATE_SUMMARY_VARS = [
|
|
|
48195
48944
|
{
|
|
48196
48945
|
name: "summarySection",
|
|
48197
48946
|
label: "Summary: this section",
|
|
48198
|
-
description: "The section a per-section summary row is about
|
|
48947
|
+
description: "The section a per-section summary row is about; on a summary sent as one message, every section it reports, comma-separated.",
|
|
48199
48948
|
example: "Batterie scariche",
|
|
48200
48949
|
group: "system",
|
|
48201
48950
|
families: ["rule"],
|
|
@@ -53254,7 +54003,7 @@ var ExportAlexaAddon = class extends BaseAddon {
|
|
|
53254
54003
|
type: "select",
|
|
53255
54004
|
key: "region",
|
|
53256
54005
|
label: "Skill region",
|
|
53257
|
-
description: "
|
|
54006
|
+
description: "The Alexa Event Gateway this hub posts to: doorbell presses, motion, battery level, and the device-list updates sent when you expose or unexpose a camera. Pick the region your Amazon account is in — events sent to another region are rejected.",
|
|
53258
54007
|
options: [
|
|
53259
54008
|
{
|
|
53260
54009
|
value: "NA",
|
|
@@ -53283,7 +54032,7 @@ var ExportAlexaAddon = class extends BaseAddon {
|
|
|
53283
54032
|
type: "text",
|
|
53284
54033
|
key: "lwaClientId",
|
|
53285
54034
|
label: "LWA client id (proactive events)",
|
|
53286
|
-
description: "From the skill's Permissions → \"Send Alexa Events\" panel. Required for
|
|
54035
|
+
description: "From the skill's Permissions → \"Send Alexa Events\" panel. Required for everything the hub pushes to Alexa: doorbell presses, motion, battery level and device-list updates.",
|
|
53287
54036
|
default: DEFAULT_CONFIG.lwaClientId
|
|
53288
54037
|
}),
|
|
53289
54038
|
this.field({
|