@camstack/addon-provider-homeassistant 1.2.160 → 1.2.162
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/addon.js +61 -12
- package/dist/addon.mjs +61 -12
- package/dist/{dist-H458ct4y.mjs → dist-Cw91Z1Ew.mjs} +305 -71
- package/dist/{dist-l71G4EIk.js → dist-WoiCiuhv.js} +305 -71
- package/dist/ha-export/ha-export.addon.js +306 -304
- package/dist/ha-export/ha-export.addon.mjs +306 -304
- package/package.json +1 -1
|
@@ -5378,7 +5378,7 @@ var ZodIssueCode = {
|
|
|
5378
5378
|
var ZodFirstPartyTypeKind;
|
|
5379
5379
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5380
5380
|
//#endregion
|
|
5381
|
-
//#region ../types/dist/sleep-
|
|
5381
|
+
//#region ../types/dist/sleep-C16NCZR2.mjs
|
|
5382
5382
|
/**
|
|
5383
5383
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5384
5384
|
* window to float samples (D455).
|
|
@@ -10667,57 +10667,15 @@ var ClipSearchStrictnessSchema = _enum([
|
|
|
10667
10667
|
"balanced",
|
|
10668
10668
|
"strict"
|
|
10669
10669
|
]);
|
|
10670
|
-
|
|
10671
|
-
|
|
10672
|
-
id: "person",
|
|
10673
|
-
name: "Person"
|
|
10674
|
-
},
|
|
10675
|
-
{
|
|
10676
|
-
id: "vehicle",
|
|
10677
|
-
name: "Vehicle"
|
|
10678
|
-
},
|
|
10679
|
-
{
|
|
10680
|
-
id: "animal",
|
|
10681
|
-
name: "Animal"
|
|
10682
|
-
},
|
|
10683
|
-
{
|
|
10684
|
-
id: "package",
|
|
10685
|
-
name: "Package"
|
|
10686
|
-
}
|
|
10687
|
-
].map((l) => l.id));
|
|
10688
|
-
var COCO_TO_MACRO = {
|
|
10689
|
-
mapping: {
|
|
10690
|
-
person: "person",
|
|
10691
|
-
bicycle: "vehicle",
|
|
10692
|
-
car: "vehicle",
|
|
10693
|
-
motorcycle: "vehicle",
|
|
10694
|
-
airplane: "vehicle",
|
|
10695
|
-
bus: "vehicle",
|
|
10696
|
-
train: "vehicle",
|
|
10697
|
-
truck: "vehicle",
|
|
10698
|
-
boat: "vehicle",
|
|
10699
|
-
bird: "animal",
|
|
10700
|
-
cat: "animal",
|
|
10701
|
-
dog: "animal",
|
|
10702
|
-
horse: "animal",
|
|
10703
|
-
sheep: "animal",
|
|
10704
|
-
cow: "animal",
|
|
10705
|
-
elephant: "animal",
|
|
10706
|
-
bear: "animal",
|
|
10707
|
-
zebra: "animal",
|
|
10708
|
-
giraffe: "animal",
|
|
10709
|
-
suitcase: "package",
|
|
10710
|
-
backpack: "package",
|
|
10711
|
-
handbag: "package"
|
|
10712
|
-
},
|
|
10713
|
-
preserveOriginal: false
|
|
10714
|
-
};
|
|
10715
|
-
/** Steps a root detector may declare it fills. */
|
|
10716
|
-
var FILLABLE_STEP_IDS = [
|
|
10670
|
+
/** Steps whose effect a root label can BE. */
|
|
10671
|
+
var LABEL_SUPPLY_STEP_IDS = [
|
|
10717
10672
|
"animal-classifier",
|
|
10718
10673
|
"vehicle-classifier",
|
|
10719
10674
|
"package-detection"
|
|
10720
10675
|
];
|
|
10676
|
+
/** Steps whose box a root detection can BE. */
|
|
10677
|
+
var CROP_SUPPLY_STEP_IDS = ["plate-detection", "face-detection"];
|
|
10678
|
+
[...LABEL_SUPPLY_STEP_IDS, ...CROP_SUPPLY_STEP_IDS];
|
|
10721
10679
|
var MODEL_FORMATS = [
|
|
10722
10680
|
"onnx",
|
|
10723
10681
|
"coreml",
|
|
@@ -10850,12 +10808,35 @@ var ModelLicenseSchema = preprocess((value) => typeof value === "string" ? { wei
|
|
|
10850
10808
|
/** True when the weights or their data forbid commercial use. */
|
|
10851
10809
|
nonCommercial: boolean().optional()
|
|
10852
10810
|
}));
|
|
10853
|
-
/**
|
|
10854
|
-
|
|
10855
|
-
|
|
10811
|
+
/**
|
|
10812
|
+
* One step a ROOT detector can supply from its own output (D730) — see
|
|
10813
|
+
* `ModelCatalogEntry.suppliesSteps`.
|
|
10814
|
+
*
|
|
10815
|
+
* - `label`: the root's raw class IS the step's answer. `labelToEffect` maps
|
|
10816
|
+
* the root's label to the step's vocabulary; `uncovered` is the vocabulary
|
|
10817
|
+
* the root cannot produce (shown as unavailable, never a blocker).
|
|
10818
|
+
* - `crop`: the root draws the box the step would have found (`license_plate`
|
|
10819
|
+
* for plate-detection, `face` for face-detection). The box becomes a detail
|
|
10820
|
+
* child of the `parentMacro` detection that contains it — never a track.
|
|
10821
|
+
*/
|
|
10822
|
+
var RootStepSupplySchema = discriminatedUnion("kind", [object({
|
|
10823
|
+
kind: literal("label"),
|
|
10824
|
+
stepId: _enum(LABEL_SUPPLY_STEP_IDS),
|
|
10856
10825
|
labelToEffect: record(string(), string()),
|
|
10857
10826
|
uncovered: array(string()).readonly()
|
|
10858
|
-
})
|
|
10827
|
+
}), object({
|
|
10828
|
+
kind: literal("crop"),
|
|
10829
|
+
stepId: _enum(CROP_SUPPLY_STEP_IDS),
|
|
10830
|
+
rootLabels: array(string()).readonly(),
|
|
10831
|
+
parentMacro: _enum(["vehicle", "person"]),
|
|
10832
|
+
childClass: _enum(["plate", "face"]),
|
|
10833
|
+
/**
|
|
10834
|
+
* The root's smaller input side, stamped on read by `rootSuppliesOf` from
|
|
10835
|
+
* the model entry — what a step's `minRootInputPx` gate judges. Never
|
|
10836
|
+
* stored by an import.
|
|
10837
|
+
*/
|
|
10838
|
+
rootInputPx: number().int().positive().optional()
|
|
10839
|
+
})]);
|
|
10859
10840
|
var ModelCatalogEntrySchema = object({
|
|
10860
10841
|
id: string(),
|
|
10861
10842
|
name: string(),
|
|
@@ -10982,15 +10963,15 @@ var ModelCatalogEntrySchema = object({
|
|
|
10982
10963
|
*/
|
|
10983
10964
|
classMap: DetectionCatalogClassMapSchema.optional(),
|
|
10984
10965
|
/**
|
|
10985
|
-
* The pipeline steps this ROOT detector
|
|
10986
|
-
* its labels name
|
|
10987
|
-
*
|
|
10988
|
-
* labelmap by `
|
|
10989
|
-
*
|
|
10990
|
-
*
|
|
10991
|
-
* `
|
|
10966
|
+
* The pipeline steps this ROOT detector can supply from its own output
|
|
10967
|
+
* (D730): its labels name a step's effect (`deer` for `animal-classifier`)
|
|
10968
|
+
* or draw a step's box (`license_plate` for `plate-detection`). Computed at
|
|
10969
|
+
* import from THIS model's labelmap by `deriveRootSupplies`, never written
|
|
10970
|
+
* by hand and never assumed per family; a row without it is derived on read
|
|
10971
|
+
* (`rootSuppliesOf`). Whether a camera uses it is the step's own
|
|
10972
|
+
* `useRootModel` flag (`resolveRootSupply`).
|
|
10992
10973
|
*/
|
|
10993
|
-
|
|
10974
|
+
suppliesSteps: array(RootStepSupplySchema).readonly().optional(),
|
|
10994
10975
|
/**
|
|
10995
10976
|
* The model's CLIP feature-space contract (text encoder, dimension, vector
|
|
10996
10977
|
* index, token window, search floor) — see `clip-model.ts`. Present ONLY on a
|
|
@@ -16742,6 +16723,12 @@ method(_void(), array(string()).readonly(), { auth: "admin" }), method(object({
|
|
|
16742
16723
|
kind: "mutation",
|
|
16743
16724
|
auth: "admin"
|
|
16744
16725
|
});
|
|
16726
|
+
var HUB_ADDRESS_ROLES = [
|
|
16727
|
+
"appConnections",
|
|
16728
|
+
"notificationTaps",
|
|
16729
|
+
"internal",
|
|
16730
|
+
"publicEndpoint"
|
|
16731
|
+
];
|
|
16745
16732
|
/**
|
|
16746
16733
|
* Transport bounds for AI capability methods.
|
|
16747
16734
|
*
|
|
@@ -18526,6 +18513,51 @@ var notificationOutputCapability = {
|
|
|
18526
18513
|
})
|
|
18527
18514
|
}
|
|
18528
18515
|
};
|
|
18516
|
+
new Set([
|
|
18517
|
+
{
|
|
18518
|
+
id: "person",
|
|
18519
|
+
name: "Person"
|
|
18520
|
+
},
|
|
18521
|
+
{
|
|
18522
|
+
id: "vehicle",
|
|
18523
|
+
name: "Vehicle"
|
|
18524
|
+
},
|
|
18525
|
+
{
|
|
18526
|
+
id: "animal",
|
|
18527
|
+
name: "Animal"
|
|
18528
|
+
},
|
|
18529
|
+
{
|
|
18530
|
+
id: "package",
|
|
18531
|
+
name: "Package"
|
|
18532
|
+
}
|
|
18533
|
+
].map((l) => l.id));
|
|
18534
|
+
var COCO_TO_MACRO = {
|
|
18535
|
+
mapping: {
|
|
18536
|
+
person: "person",
|
|
18537
|
+
bicycle: "vehicle",
|
|
18538
|
+
car: "vehicle",
|
|
18539
|
+
motorcycle: "vehicle",
|
|
18540
|
+
airplane: "vehicle",
|
|
18541
|
+
bus: "vehicle",
|
|
18542
|
+
train: "vehicle",
|
|
18543
|
+
truck: "vehicle",
|
|
18544
|
+
boat: "vehicle",
|
|
18545
|
+
bird: "animal",
|
|
18546
|
+
cat: "animal",
|
|
18547
|
+
dog: "animal",
|
|
18548
|
+
horse: "animal",
|
|
18549
|
+
sheep: "animal",
|
|
18550
|
+
cow: "animal",
|
|
18551
|
+
elephant: "animal",
|
|
18552
|
+
bear: "animal",
|
|
18553
|
+
zebra: "animal",
|
|
18554
|
+
giraffe: "animal",
|
|
18555
|
+
suitcase: "package",
|
|
18556
|
+
backpack: "package",
|
|
18557
|
+
handbag: "package"
|
|
18558
|
+
},
|
|
18559
|
+
preserveOriginal: false
|
|
18560
|
+
};
|
|
18529
18561
|
var AUDIO_MACRO_LABELS = [
|
|
18530
18562
|
{
|
|
18531
18563
|
id: "speech",
|
|
@@ -19321,6 +19353,8 @@ var NcSystemEventKindSchema = _enum([
|
|
|
19321
19353
|
"stream-offline",
|
|
19322
19354
|
"node-online",
|
|
19323
19355
|
"node-offline",
|
|
19356
|
+
"node-restarting",
|
|
19357
|
+
"node-updating",
|
|
19324
19358
|
"node-inference-unavailable",
|
|
19325
19359
|
"detection-blind",
|
|
19326
19360
|
"addon-crash-loop",
|
|
@@ -20926,7 +20960,13 @@ var NcAlarmModeDelaysListSchema = array(object({
|
|
|
20926
20960
|
* Absent = false (logged, not sent). Even when true it is not sent when that same sensor
|
|
20927
20961
|
* is the one that starts the entry delay — the entry-delay notification already names it.
|
|
20928
20962
|
*/
|
|
20929
|
-
notifySensorRewatched: boolean().optional()
|
|
20963
|
+
notifySensorRewatched: boolean().optional(),
|
|
20964
|
+
/**
|
|
20965
|
+
* D735: notify "ignored" when a sensor this arm bypassed really MOVED while armed (its own
|
|
20966
|
+
* change time is after the arm) and set nothing off. Absent = false (logged, not sent). A
|
|
20967
|
+
* re-sync, a recovery from `unavailable` or a duplicate is never announced, switch or not.
|
|
20968
|
+
*/
|
|
20969
|
+
notifySensorIgnored: boolean().optional()
|
|
20930
20970
|
})).max(8).refine(uniqueModes, { message: "modeDelays: at most one entry per arm mode" });
|
|
20931
20971
|
var NcAlarmModeDelaysEditListSchema = array(object({
|
|
20932
20972
|
mode: AlarmArmModeSchema,
|
|
@@ -20939,7 +20979,9 @@ var NcAlarmModeDelaysEditListSchema = array(object({
|
|
|
20939
20979
|
/** D706: set the switch, or `null` to clear it (back to the default, false). */
|
|
20940
20980
|
notifyDuringEntryDelay: boolean().nullable().optional(),
|
|
20941
20981
|
/** D706: set the switch, or `null` to clear it (back to the default, false). */
|
|
20942
|
-
notifySensorRewatched: boolean().nullable().optional()
|
|
20982
|
+
notifySensorRewatched: boolean().nullable().optional(),
|
|
20983
|
+
/** D735: set the switch, or `null` to clear it (back to the default, false). */
|
|
20984
|
+
notifySensorIgnored: boolean().nullable().optional()
|
|
20943
20985
|
})).max(8).refine(uniqueModes, { message: "modeDelays: at most one edit per arm mode" });
|
|
20944
20986
|
/** One switch of the alarm table: put ONE device on, or take it off, ONE mode's list. */
|
|
20945
20987
|
var NcAlarmNonBlockingEditSchema = object({
|
|
@@ -23854,6 +23896,34 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
23854
23896
|
timestamp: number()
|
|
23855
23897
|
});
|
|
23856
23898
|
/**
|
|
23899
|
+
* A root model's boxes standing in for one crop-kind step's own inference
|
|
23900
|
+
* (D730) — see `runPipeline.suppliedRoot`.
|
|
23901
|
+
*/
|
|
23902
|
+
var SuppliedRootOutputSchema = object({
|
|
23903
|
+
stepId: string(),
|
|
23904
|
+
/** The root model that drew the boxes — stamped on the result. */
|
|
23905
|
+
modelId: string(),
|
|
23906
|
+
detections: array(object({
|
|
23907
|
+
/** `[x1, y1, x2, y2]` in the pixels of the call's image. */
|
|
23908
|
+
bbox: tuple([
|
|
23909
|
+
number(),
|
|
23910
|
+
number(),
|
|
23911
|
+
number(),
|
|
23912
|
+
number()
|
|
23913
|
+
]),
|
|
23914
|
+
score: number(),
|
|
23915
|
+
/**
|
|
23916
|
+
* Five facial landmarks in the same pixels — a face the step's own
|
|
23917
|
+
* detector already re-found inside a root face box (D730), so its
|
|
23918
|
+
* embedder child aligns it exactly as it aligns any detected face.
|
|
23919
|
+
*/
|
|
23920
|
+
landmarks: array(object({
|
|
23921
|
+
x: number(),
|
|
23922
|
+
y: number()
|
|
23923
|
+
})).optional()
|
|
23924
|
+
})).min(1)
|
|
23925
|
+
});
|
|
23926
|
+
/**
|
|
23857
23927
|
* Reference to the frame's retained NATIVE surface + the parent crop's placement
|
|
23858
23928
|
* within the frame, so the executor can re-cut a leaf child ROI at native
|
|
23859
23929
|
* resolution on the detail plane. See the `runPipeline` `nativeCropRef` field.
|
|
@@ -23984,7 +24054,7 @@ var PipelineModelOptionSchema = object({
|
|
|
23984
24054
|
legacy: boolean().optional(),
|
|
23985
24055
|
provider: ModelProviderIdSchema.optional(),
|
|
23986
24056
|
defaultConfidence: number().optional(),
|
|
23987
|
-
|
|
24057
|
+
suppliesSteps: array(RootStepSupplySchema).readonly().optional()
|
|
23988
24058
|
});
|
|
23989
24059
|
var ConfigFieldBridge = custom();
|
|
23990
24060
|
var PipelineAddonSchemaSchema = object({
|
|
@@ -24252,7 +24322,16 @@ method(_void(), array(PipelineEngineChoiceSchema)), method(_void(), PipelineEngi
|
|
|
24252
24322
|
* `device-not-servable`), and nothing reaches the camera's live
|
|
24253
24323
|
* trace stream. Absent ⇒ unchanged behaviour.
|
|
24254
24324
|
*/
|
|
24255
|
-
replay: literal(true).optional()
|
|
24325
|
+
replay: literal(true).optional(),
|
|
24326
|
+
/**
|
|
24327
|
+
* Root-supplied detections for the tree's ROOT step (D730). Set by
|
|
24328
|
+
* `runDetailSubtree` when the camera's root model supplies a crop-kind
|
|
24329
|
+
* step (a Frigate+ `license_plate` for `plate-detection`): the step is
|
|
24330
|
+
* NOT inferred, these boxes are its output, and its children (the plate
|
|
24331
|
+
* reader) run on them through their own crop policy. Boxes are in the
|
|
24332
|
+
* PIXELS of the image this call carries. Absent ⇒ the root step runs.
|
|
24333
|
+
*/
|
|
24334
|
+
suppliedRoot: SuppliedRootOutputSchema.optional()
|
|
24256
24335
|
}), PipelineRunResultBridge, { kind: "mutation" }), method(object({
|
|
24257
24336
|
steps: array(PipelineStepInputSchema).min(1),
|
|
24258
24337
|
frames: array(FrameInputSchema).min(1).max(255),
|
|
@@ -25394,7 +25473,22 @@ method(RunnerCameraConfigSchema, object({ success: literal(true) }), { kind: "mu
|
|
|
25394
25473
|
*/
|
|
25395
25474
|
cropJpeg: string().optional(),
|
|
25396
25475
|
parent: DetailParentSchema,
|
|
25397
|
-
steps: array(string()).optional()
|
|
25476
|
+
steps: array(string()).optional(),
|
|
25477
|
+
/**
|
|
25478
|
+
* The camera's root model already drew this step's boxes (D730): a
|
|
25479
|
+
* `license_plate` inside the parent vehicle. The named step is NOT
|
|
25480
|
+
* inferred — these FRAME-space boxes are its output — and its
|
|
25481
|
+
* requested children (the plate reader) run on them. Absent ⇒ every
|
|
25482
|
+
* requested step infers as before.
|
|
25483
|
+
*/
|
|
25484
|
+
supplied: object({
|
|
25485
|
+
stepId: string(),
|
|
25486
|
+
modelId: string(),
|
|
25487
|
+
boxes: array(object({
|
|
25488
|
+
bbox: NativeCropBboxSchema,
|
|
25489
|
+
score: number()
|
|
25490
|
+
})).min(1)
|
|
25491
|
+
}).optional()
|
|
25398
25492
|
}), object({ details: array(DetailResultSchema) }).nullable(), { kind: "mutation" }), method(object({
|
|
25399
25493
|
/** Catalog step id, e.g. `clip-embedding`. */
|
|
25400
25494
|
stepId: string(),
|
|
@@ -28724,6 +28818,14 @@ DeviceType.Camera, method(object({ deviceId: number().int().nonnegative() }), ar
|
|
|
28724
28818
|
*/
|
|
28725
28819
|
alive: boolean()
|
|
28726
28820
|
})), method(object({
|
|
28821
|
+
deviceId: number().int().nonnegative(),
|
|
28822
|
+
sessionId: string(),
|
|
28823
|
+
downlinkMbps: number().nonnegative()
|
|
28824
|
+
}), object({
|
|
28825
|
+
outcome: _enum(["switching", "held"]),
|
|
28826
|
+
tier: CamProfileSchema.nullable(),
|
|
28827
|
+
reason: string()
|
|
28828
|
+
}), { kind: "mutation" }), method(object({
|
|
28727
28829
|
deviceId: number().int().nonnegative(),
|
|
28728
28830
|
sessionId: string()
|
|
28729
28831
|
}), WebrtcSessionDebugSchema, { kind: "query" });
|
|
@@ -32633,7 +32735,8 @@ var ConnectionEndpointSchema = object({
|
|
|
32633
32735
|
"lan-ipv6",
|
|
32634
32736
|
"public",
|
|
32635
32737
|
"loopback",
|
|
32636
|
-
"app-link"
|
|
32738
|
+
"app-link",
|
|
32739
|
+
"custom"
|
|
32637
32740
|
]),
|
|
32638
32741
|
/**
|
|
32639
32742
|
* Originating-interface kind — `lan`/`wifi`/`docker`/`vpn`/`other`/
|
|
@@ -32702,7 +32805,7 @@ var GetConnectionEndpointsResultSchema = object({
|
|
|
32702
32805
|
localPort: AdvertisedLocalPortSchema
|
|
32703
32806
|
});
|
|
32704
32807
|
/**
|
|
32705
|
-
* The address flagged for notification
|
|
32808
|
+
* The address flagged for notification taps (`notificationTaps`). `baseUrl: null` = AUTO, which
|
|
32706
32809
|
* since D709 is the CamStack app link; `resolved` reports the effective value,
|
|
32707
32810
|
* so the UI can show it either way.
|
|
32708
32811
|
*/
|
|
@@ -32735,6 +32838,72 @@ var ViewerEndpointsSchema = object({
|
|
|
32735
32838
|
/** What the ranking currently resolves to (may be empty if nothing is up). */
|
|
32736
32839
|
resolved: array(string()).readonly()
|
|
32737
32840
|
});
|
|
32841
|
+
/**
|
|
32842
|
+
* DEPRECATED compatibility shape of `getHubAddresses` (D729 amendment, kept
|
|
32843
|
+
* for addons built against it): `cluster` is the `internal` role, `browser`
|
|
32844
|
+
* the `publicEndpoint` role; `override` is the flagged address.
|
|
32845
|
+
*/
|
|
32846
|
+
var HubAddressSnapshotSchema = object({
|
|
32847
|
+
override: string().nullable(),
|
|
32848
|
+
resolved: string().nullable(),
|
|
32849
|
+
source: _enum([
|
|
32850
|
+
"override",
|
|
32851
|
+
"auto",
|
|
32852
|
+
"none"
|
|
32853
|
+
])
|
|
32854
|
+
});
|
|
32855
|
+
var HubAddressesSchema = object({
|
|
32856
|
+
cluster: HubAddressSnapshotSchema,
|
|
32857
|
+
browser: HubAddressSnapshotSchema
|
|
32858
|
+
});
|
|
32859
|
+
/**
|
|
32860
|
+
* What an address is used for (`hub-address.ts`, D734). `appConnections` is
|
|
32861
|
+
* many-valued; `notificationTaps`, `publicEndpoint` and `internal` are carried
|
|
32862
|
+
* by at most one address.
|
|
32863
|
+
*/
|
|
32864
|
+
var HubAddressRoleSchema = _enum(HUB_ADDRESS_ROLES);
|
|
32865
|
+
var RoleSourceSchema = _enum([
|
|
32866
|
+
"flagged",
|
|
32867
|
+
"auto",
|
|
32868
|
+
"none"
|
|
32869
|
+
]);
|
|
32870
|
+
/** One single-valued role: the flagged address, the one in use, and why. */
|
|
32871
|
+
var HubAddressRoleResolutionSchema = object({
|
|
32872
|
+
/** The address carrying the flag, or null = automatic. */
|
|
32873
|
+
flagged: string().nullable(),
|
|
32874
|
+
/** The address in use, or null when nothing qualifies (never loopback). */
|
|
32875
|
+
resolved: string().nullable(),
|
|
32876
|
+
source: RoleSourceSchema
|
|
32877
|
+
});
|
|
32878
|
+
var HubAppConnectionsResolutionSchema = object({
|
|
32879
|
+
/** The addresses flagged `appConnections`, or empty = automatic. */
|
|
32880
|
+
flagged: array(string()).readonly(),
|
|
32881
|
+
/** What the apps race right now. */
|
|
32882
|
+
resolved: array(string()).readonly(),
|
|
32883
|
+
source: RoleSourceSchema
|
|
32884
|
+
});
|
|
32885
|
+
var HubAddressBookSchema = object({
|
|
32886
|
+
rows: array(ConnectionEndpointSchema.extend({
|
|
32887
|
+
/** In the hub's detected palette right now. */
|
|
32888
|
+
detected: boolean(),
|
|
32889
|
+
/** Entered by the operator (removable). */
|
|
32890
|
+
custom: boolean(),
|
|
32891
|
+
/** The roles explicitly flagged on this address. */
|
|
32892
|
+
flags: array(HubAddressRoleSchema).readonly(),
|
|
32893
|
+
/** The roles this address serves right now — flagged or automatic. */
|
|
32894
|
+
inUse: array(HubAddressRoleSchema).readonly(),
|
|
32895
|
+
/** The roles this address may be flagged with. */
|
|
32896
|
+
eligible: array(HubAddressRoleSchema).readonly()
|
|
32897
|
+
})).readonly(),
|
|
32898
|
+
roles: object({
|
|
32899
|
+
appConnections: HubAppConnectionsResolutionSchema,
|
|
32900
|
+
notificationTaps: HubAddressRoleResolutionSchema,
|
|
32901
|
+
internal: HubAddressRoleResolutionSchema,
|
|
32902
|
+
publicEndpoint: HubAddressRoleResolutionSchema
|
|
32903
|
+
}),
|
|
32904
|
+
/** The `hub=` an app link carries (D709), or null. */
|
|
32905
|
+
appLinkHub: string().nullable()
|
|
32906
|
+
});
|
|
32738
32907
|
var AllowedAddressesSchema = object({
|
|
32739
32908
|
/**
|
|
32740
32909
|
* Allowlist of interface addresses operators have explicitly opted
|
|
@@ -32778,10 +32947,27 @@ method(_void(), ListResultSchema), method(_void(), PreferredSchema), method(obje
|
|
|
32778
32947
|
* tunnel always emits `https://` regardless. */
|
|
32779
32948
|
scheme: _enum(["http", "https"]).optional(),
|
|
32780
32949
|
/** Append the CamStack app link entry (`kind: 'app-link'`, D709) —
|
|
32781
|
-
* an address notification
|
|
32950
|
+
* an address notification taps can be flagged with, not a hub
|
|
32782
32951
|
* route. Default `false`: racers and rankers never see it. */
|
|
32783
32952
|
includeAppLink: boolean().optional()
|
|
32784
|
-
}), 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(
|
|
32953
|
+
}), 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({
|
|
32954
|
+
baseUrl: string(),
|
|
32955
|
+
label: string().max(80)
|
|
32956
|
+
}), HubAddressBookSchema, {
|
|
32957
|
+
kind: "mutation",
|
|
32958
|
+
auth: "admin"
|
|
32959
|
+
}), method(object({ baseUrl: string() }), HubAddressBookSchema, {
|
|
32960
|
+
kind: "mutation",
|
|
32961
|
+
auth: "admin"
|
|
32962
|
+
}), method(object({
|
|
32963
|
+
role: HubAddressRoleSchema,
|
|
32964
|
+
baseUrl: string().nullable(),
|
|
32965
|
+
enabled: boolean(),
|
|
32966
|
+
acceptInsecureHttp: boolean().optional()
|
|
32967
|
+
}), HubAddressBookSchema, {
|
|
32968
|
+
kind: "mutation",
|
|
32969
|
+
auth: "admin"
|
|
32970
|
+
}), 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, {
|
|
32785
32971
|
kind: "mutation",
|
|
32786
32972
|
auth: "admin"
|
|
32787
32973
|
}), method(object({
|
|
@@ -33239,7 +33425,8 @@ var MotionStatusSchema = object({
|
|
|
33239
33425
|
* writes this slice (not even a boot seed), and neither does the runner's
|
|
33240
33426
|
* phase machine: its phase is "a session is attached" for every on-motion
|
|
33241
33427
|
* session, not motion, and it now has its own `DetectionPhaseTransition`.
|
|
33242
|
-
* A provider's `isDetected`
|
|
33428
|
+
* A provider's `isDetected` and `getStatus` answer from the hub's slice
|
|
33429
|
+
* (`hubMotionNativeProvider`).
|
|
33243
33430
|
* - **Sensors** (Home Assistant binary sensors, Homematic, Matter, Alexa
|
|
33244
33431
|
* imports) — the provider pushes both edges itself, from the upstream
|
|
33245
33432
|
* system's own state change. That is the sensor's own fact.
|
|
@@ -44238,12 +44425,24 @@ Object.freeze({
|
|
|
44238
44425
|
addonId: null,
|
|
44239
44426
|
access: "view"
|
|
44240
44427
|
},
|
|
44428
|
+
"localNetwork.addCustomAddress": {
|
|
44429
|
+
capName: "local-network",
|
|
44430
|
+
capScope: "system",
|
|
44431
|
+
addonId: null,
|
|
44432
|
+
access: "create"
|
|
44433
|
+
},
|
|
44241
44434
|
"localNetwork.downloadCa": {
|
|
44242
44435
|
capName: "local-network",
|
|
44243
44436
|
capScope: "system",
|
|
44244
44437
|
addonId: null,
|
|
44245
44438
|
access: "view"
|
|
44246
44439
|
},
|
|
44440
|
+
"localNetwork.getAddresses": {
|
|
44441
|
+
capName: "local-network",
|
|
44442
|
+
capScope: "system",
|
|
44443
|
+
addonId: null,
|
|
44444
|
+
access: "view"
|
|
44445
|
+
},
|
|
44247
44446
|
"localNetwork.getAllowedAddresses": {
|
|
44248
44447
|
capName: "local-network",
|
|
44249
44448
|
capScope: "system",
|
|
@@ -44256,6 +44455,12 @@ Object.freeze({
|
|
|
44256
44455
|
addonId: null,
|
|
44257
44456
|
access: "view"
|
|
44258
44457
|
},
|
|
44458
|
+
"localNetwork.getHubAddresses": {
|
|
44459
|
+
capName: "local-network",
|
|
44460
|
+
capScope: "system",
|
|
44461
|
+
addonId: null,
|
|
44462
|
+
access: "view"
|
|
44463
|
+
},
|
|
44259
44464
|
"localNetwork.getNotificationEndpoint": {
|
|
44260
44465
|
capName: "local-network",
|
|
44261
44466
|
capScope: "system",
|
|
@@ -44292,6 +44497,12 @@ Object.freeze({
|
|
|
44292
44497
|
addonId: null,
|
|
44293
44498
|
access: "create"
|
|
44294
44499
|
},
|
|
44500
|
+
"localNetwork.removeCustomAddress": {
|
|
44501
|
+
capName: "local-network",
|
|
44502
|
+
capScope: "system",
|
|
44503
|
+
addonId: null,
|
|
44504
|
+
access: "delete"
|
|
44505
|
+
},
|
|
44295
44506
|
"localNetwork.resetAllowlistToBestMatch": {
|
|
44296
44507
|
capName: "local-network",
|
|
44297
44508
|
capScope: "system",
|
|
@@ -44304,6 +44515,12 @@ Object.freeze({
|
|
|
44304
44515
|
addonId: null,
|
|
44305
44516
|
access: "create"
|
|
44306
44517
|
},
|
|
44518
|
+
"localNetwork.setAddressRole": {
|
|
44519
|
+
capName: "local-network",
|
|
44520
|
+
capScope: "system",
|
|
44521
|
+
addonId: null,
|
|
44522
|
+
access: "create"
|
|
44523
|
+
},
|
|
44307
44524
|
"localNetwork.setAllowedAddresses": {
|
|
44308
44525
|
capName: "local-network",
|
|
44309
44526
|
capScope: "system",
|
|
@@ -48558,6 +48775,12 @@ Object.freeze({
|
|
|
48558
48775
|
addonId: null,
|
|
48559
48776
|
access: "create"
|
|
48560
48777
|
},
|
|
48778
|
+
"webrtcSession.applyDownlinkProbe": {
|
|
48779
|
+
capName: "webrtc-session",
|
|
48780
|
+
capScope: "device",
|
|
48781
|
+
addonId: null,
|
|
48782
|
+
access: "create"
|
|
48783
|
+
},
|
|
48561
48784
|
"webrtcSession.closeSession": {
|
|
48562
48785
|
capName: "webrtc-session",
|
|
48563
48786
|
capScope: "device",
|
|
@@ -52480,6 +52703,11 @@ Object.freeze({
|
|
|
52480
52703
|
form: "single",
|
|
52481
52704
|
optional: false
|
|
52482
52705
|
}],
|
|
52706
|
+
"webrtcSession.applyDownlinkProbe": [{
|
|
52707
|
+
name: "deviceId",
|
|
52708
|
+
form: "single",
|
|
52709
|
+
optional: false
|
|
52710
|
+
}],
|
|
52483
52711
|
"webrtcSession.closeSession": [{
|
|
52484
52712
|
name: "deviceId",
|
|
52485
52713
|
form: "single",
|
|
@@ -52916,6 +53144,8 @@ new Map(Object.entries({
|
|
|
52916
53144
|
"detection-blind": "device-events",
|
|
52917
53145
|
"node-online": "system",
|
|
52918
53146
|
"node-offline": "system",
|
|
53147
|
+
"node-restarting": "system",
|
|
53148
|
+
"node-updating": "system",
|
|
52919
53149
|
"node-inference-unavailable": "system",
|
|
52920
53150
|
"addon-crash-loop": "system",
|
|
52921
53151
|
"addon-update-available": "system",
|
|
@@ -52993,6 +53223,7 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
|
|
|
52993
53223
|
kinds: [
|
|
52994
53224
|
"node-offline",
|
|
52995
53225
|
"node-online",
|
|
53226
|
+
"node-restarting",
|
|
52996
53227
|
"node-inference-unavailable"
|
|
52997
53228
|
]
|
|
52998
53229
|
},
|
|
@@ -53014,6 +53245,7 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
|
|
|
53014
53245
|
label: "Server & container updates",
|
|
53015
53246
|
kinds: [
|
|
53016
53247
|
"server-update-available",
|
|
53248
|
+
"node-updating",
|
|
53017
53249
|
"server-updated",
|
|
53018
53250
|
"wrapper-update-available"
|
|
53019
53251
|
]
|
|
@@ -53161,6 +53393,7 @@ var STATE_SUMMARY_SECTION_VARS = [
|
|
|
53161
53393
|
kinds: [
|
|
53162
53394
|
"node-offline",
|
|
53163
53395
|
"node-online",
|
|
53396
|
+
"node-restarting",
|
|
53164
53397
|
"node-inference-unavailable"
|
|
53165
53398
|
]
|
|
53166
53399
|
},
|
|
@@ -53182,6 +53415,7 @@ var STATE_SUMMARY_SECTION_VARS = [
|
|
|
53182
53415
|
example: "server 1.2.377 → 1.2.378",
|
|
53183
53416
|
kinds: [
|
|
53184
53417
|
"server-update-available",
|
|
53418
|
+
"node-updating",
|
|
53185
53419
|
"server-updated",
|
|
53186
53420
|
"wrapper-update-available"
|
|
53187
53421
|
]
|
|
@@ -53214,7 +53448,7 @@ var STATE_SUMMARY_VARS = [
|
|
|
53214
53448
|
{
|
|
53215
53449
|
name: "summarySection",
|
|
53216
53450
|
label: "Summary: this section",
|
|
53217
|
-
description: "The section a per-section summary row is about
|
|
53451
|
+
description: "The section a per-section summary row is about; on a summary sent as one message, every section it reports, comma-separated.",
|
|
53218
53452
|
example: "Batterie scariche",
|
|
53219
53453
|
group: "system",
|
|
53220
53454
|
families: ["rule"],
|