@camstack/addon-osd-manager 0.1.171 → 0.1.173
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{MotionZonesSettings-CCNLHmnl.mjs → MotionZonesSettings-Defmk1_y.mjs} +2 -2
- package/dist/{PrivacyMaskSettings-CUsqDja_.mjs → PrivacyMaskSettings-BvoZqvLa.mjs} +4 -4
- package/dist/{SceneMonitorEditor-C8o2i3G6.mjs → SceneMonitorEditor-BpGYI0fJ.mjs} +3 -3
- package/dist/_stub.js +11 -11
- package/dist/{_virtual_mf-localSharedImportMap___mfe_internal__addon_osd_manager_page-Cf3xN1-E.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_osd_manager_page-CDfzrXpG.mjs} +4 -4
- package/dist/_virtual_mf___mfe_internal__addon_osd_manager_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-BS5tM9oN.mjs +26 -0
- package/dist/{hostInit-C1oxS9dH.mjs → hostInit-kFlrSCmy.mjs} +3 -3
- package/dist/index.js +170 -79
- package/dist/index.mjs +170 -79
- package/dist/{player-overlays-Bwe6_9ow.mjs → player-overlays-DyRrf3TB.mjs} +1 -1
- package/dist/remoteEntry.js +1 -1
- package/dist/{responsive-eWIsQGEg.mjs → responsive-DN_ft4Sw.mjs} +1 -1
- package/dist/{scene-monitor-copy-BDpWrVsR.mjs → scene-monitor-copy-oZ4tEpuB.mjs} +1 -1
- package/dist/{square-CzU7Lokp.mjs → square-DDimePix.mjs} +1 -1
- package/dist/{trash-2-DLk6p3tf.mjs → trash-2-BA-4lwFu.mjs} +1 -1
- package/dist/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_osd_manager_page__remoteEntry_js-D-Cxu36Z.mjs → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_osd_manager_page__remoteEntry_js-BOqFnQMX.mjs} +1 -1
- package/package.json +1 -1
- package/dist/_virtual_mf___mfe_internal__addon_osd_manager_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-Bszex2Bz.mjs +0 -26
package/dist/index.js
CHANGED
|
@@ -10566,6 +10566,57 @@ var ClipSearchStrictnessSchema = _enum([
|
|
|
10566
10566
|
"balanced",
|
|
10567
10567
|
"strict"
|
|
10568
10568
|
]);
|
|
10569
|
+
new Set([
|
|
10570
|
+
{
|
|
10571
|
+
id: "person",
|
|
10572
|
+
name: "Person"
|
|
10573
|
+
},
|
|
10574
|
+
{
|
|
10575
|
+
id: "vehicle",
|
|
10576
|
+
name: "Vehicle"
|
|
10577
|
+
},
|
|
10578
|
+
{
|
|
10579
|
+
id: "animal",
|
|
10580
|
+
name: "Animal"
|
|
10581
|
+
},
|
|
10582
|
+
{
|
|
10583
|
+
id: "package",
|
|
10584
|
+
name: "Package"
|
|
10585
|
+
}
|
|
10586
|
+
].map((l) => l.id));
|
|
10587
|
+
var COCO_TO_MACRO = {
|
|
10588
|
+
mapping: {
|
|
10589
|
+
person: "person",
|
|
10590
|
+
bicycle: "vehicle",
|
|
10591
|
+
car: "vehicle",
|
|
10592
|
+
motorcycle: "vehicle",
|
|
10593
|
+
airplane: "vehicle",
|
|
10594
|
+
bus: "vehicle",
|
|
10595
|
+
train: "vehicle",
|
|
10596
|
+
truck: "vehicle",
|
|
10597
|
+
boat: "vehicle",
|
|
10598
|
+
bird: "animal",
|
|
10599
|
+
cat: "animal",
|
|
10600
|
+
dog: "animal",
|
|
10601
|
+
horse: "animal",
|
|
10602
|
+
sheep: "animal",
|
|
10603
|
+
cow: "animal",
|
|
10604
|
+
elephant: "animal",
|
|
10605
|
+
bear: "animal",
|
|
10606
|
+
zebra: "animal",
|
|
10607
|
+
giraffe: "animal",
|
|
10608
|
+
suitcase: "package",
|
|
10609
|
+
backpack: "package",
|
|
10610
|
+
handbag: "package"
|
|
10611
|
+
},
|
|
10612
|
+
preserveOriginal: false
|
|
10613
|
+
};
|
|
10614
|
+
/** Steps a root detector may declare it fills. */
|
|
10615
|
+
var FILLABLE_STEP_IDS = [
|
|
10616
|
+
"animal-classifier",
|
|
10617
|
+
"vehicle-classifier",
|
|
10618
|
+
"package-detection"
|
|
10619
|
+
];
|
|
10569
10620
|
var MODEL_FORMATS = [
|
|
10570
10621
|
"onnx",
|
|
10571
10622
|
"coreml",
|
|
@@ -10698,6 +10749,12 @@ var ModelLicenseSchema = preprocess((value) => typeof value === "string" ? { wei
|
|
|
10698
10749
|
/** True when the weights or their data forbid commercial use. */
|
|
10699
10750
|
nonCommercial: boolean().optional()
|
|
10700
10751
|
}));
|
|
10752
|
+
/** One `fillsClassifierEffects` entry — see `ModelCatalogEntry.fillsClassifierEffects`. */
|
|
10753
|
+
var FillsClassifierEffectSchema = object({
|
|
10754
|
+
stepId: _enum(FILLABLE_STEP_IDS),
|
|
10755
|
+
labelToEffect: record(string(), string()),
|
|
10756
|
+
uncovered: array(string()).readonly()
|
|
10757
|
+
});
|
|
10701
10758
|
var ModelCatalogEntrySchema = object({
|
|
10702
10759
|
id: string(),
|
|
10703
10760
|
name: string(),
|
|
@@ -10824,6 +10881,16 @@ var ModelCatalogEntrySchema = object({
|
|
|
10824
10881
|
*/
|
|
10825
10882
|
classMap: DetectionCatalogClassMapSchema.optional(),
|
|
10826
10883
|
/**
|
|
10884
|
+
* The pipeline steps this ROOT detector already does the work of (D715):
|
|
10885
|
+
* its labels name the effect the step exists to produce (`deer` for
|
|
10886
|
+
* `animal-classifier`, `package` for `package-detection`). Derived from the
|
|
10887
|
+
* labelmap by `deriveClassifierFills`, never hand-written; a COCO model
|
|
10888
|
+
* declares none. Whether a declaration is honoured is the step's own
|
|
10889
|
+
* `labelLink` policy (`resolveLabelLink`). `labelToEffect` values are in
|
|
10890
|
+
* `FILLABLE_STEP_VOCABULARIES` (guard `check-label-link-vocabulary`).
|
|
10891
|
+
*/
|
|
10892
|
+
fillsClassifierEffects: array(FillsClassifierEffectSchema).readonly().optional(),
|
|
10893
|
+
/**
|
|
10827
10894
|
* The model's CLIP feature-space contract (text encoder, dimension, vector
|
|
10828
10895
|
* index, token window, search floor) — see `clip-model.ts`. Present ONLY on a
|
|
10829
10896
|
* CLIP image encoder; its absence is what "not a CLIP model" means to the
|
|
@@ -15482,7 +15549,7 @@ var detectionPipelineCapability = {
|
|
|
15482
15549
|
* This matters here more than anywhere else in the repo, because every provider
|
|
15483
15550
|
* that knows a device's host knows its PASSWORD too: `{ host, port, username,
|
|
15484
15551
|
* password }` sit in one object on Hikvision, Amcrest, Reolink and ONVIF alike,
|
|
15485
|
-
* and `http://admin:hunter2@192.168.
|
|
15552
|
+
* and `http://admin:hunter2@192.168.60.139/` is a URL a browser accepts. The
|
|
15486
15553
|
* camera's own page will ask for its own login. That is correct, and pre-
|
|
15487
15554
|
* filling it is the operator's business, not ours.
|
|
15488
15555
|
*
|
|
@@ -20410,51 +20477,6 @@ var notificationOutputCapability = {
|
|
|
20410
20477
|
})
|
|
20411
20478
|
}
|
|
20412
20479
|
};
|
|
20413
|
-
new Set([
|
|
20414
|
-
{
|
|
20415
|
-
id: "person",
|
|
20416
|
-
name: "Person"
|
|
20417
|
-
},
|
|
20418
|
-
{
|
|
20419
|
-
id: "vehicle",
|
|
20420
|
-
name: "Vehicle"
|
|
20421
|
-
},
|
|
20422
|
-
{
|
|
20423
|
-
id: "animal",
|
|
20424
|
-
name: "Animal"
|
|
20425
|
-
},
|
|
20426
|
-
{
|
|
20427
|
-
id: "package",
|
|
20428
|
-
name: "Package"
|
|
20429
|
-
}
|
|
20430
|
-
].map((l) => l.id));
|
|
20431
|
-
var COCO_TO_MACRO = {
|
|
20432
|
-
mapping: {
|
|
20433
|
-
person: "person",
|
|
20434
|
-
bicycle: "vehicle",
|
|
20435
|
-
car: "vehicle",
|
|
20436
|
-
motorcycle: "vehicle",
|
|
20437
|
-
airplane: "vehicle",
|
|
20438
|
-
bus: "vehicle",
|
|
20439
|
-
train: "vehicle",
|
|
20440
|
-
truck: "vehicle",
|
|
20441
|
-
boat: "vehicle",
|
|
20442
|
-
bird: "animal",
|
|
20443
|
-
cat: "animal",
|
|
20444
|
-
dog: "animal",
|
|
20445
|
-
horse: "animal",
|
|
20446
|
-
sheep: "animal",
|
|
20447
|
-
cow: "animal",
|
|
20448
|
-
elephant: "animal",
|
|
20449
|
-
bear: "animal",
|
|
20450
|
-
zebra: "animal",
|
|
20451
|
-
giraffe: "animal",
|
|
20452
|
-
suitcase: "package",
|
|
20453
|
-
backpack: "package",
|
|
20454
|
-
handbag: "package"
|
|
20455
|
-
},
|
|
20456
|
-
preserveOriginal: false
|
|
20457
|
-
};
|
|
20458
20480
|
var AUDIO_MACRO_LABELS = [
|
|
20459
20481
|
{
|
|
20460
20482
|
id: "speech",
|
|
@@ -22348,8 +22370,9 @@ var NcRuleSchema = NcRuleInputSchema.extend({
|
|
|
22348
22370
|
disabledTargetIds: array(string()).default([])
|
|
22349
22371
|
});
|
|
22350
22372
|
/**
|
|
22351
|
-
* The state-summary SECTIONS (D647 / D698): the D637 kind groups that
|
|
22352
|
-
* still-true state. `
|
|
22373
|
+
* The state-summary SECTIONS (D647 / D698 / D708): the D637 kind groups that
|
|
22374
|
+
* report a still-true state. `addons` is the crash-looped addons only and
|
|
22375
|
+
* `addon-updates` the addons that are behind (D708 split them). `backups-exports` and `alarm` are not sections — a completed
|
|
22353
22376
|
* job is not an open state, and the alarm stays instant.
|
|
22354
22377
|
*/
|
|
22355
22378
|
var NcStateSummarySectionIdSchema = _enum([
|
|
@@ -22361,6 +22384,7 @@ var NcStateSummarySectionIdSchema = _enum([
|
|
|
22361
22384
|
"detection-blind",
|
|
22362
22385
|
"nodes",
|
|
22363
22386
|
"addons",
|
|
22387
|
+
"addon-updates",
|
|
22364
22388
|
"updates"
|
|
22365
22389
|
]);
|
|
22366
22390
|
/** One section of a previewed state summary. `unavailable` = its state could not be read. */
|
|
@@ -23377,7 +23401,19 @@ var NcAlarmModeDelaysListSchema = array(object({
|
|
|
23377
23401
|
* When this mode may be armed. Absent / null = always allowed (same as a
|
|
23378
23402
|
* rule with no `schedule`). Evaluated with {@link isScheduleActive}.
|
|
23379
23403
|
*/
|
|
23380
|
-
schedule: NcScheduleSchema.optional()
|
|
23404
|
+
schedule: NcScheduleSchema.optional(),
|
|
23405
|
+
/**
|
|
23406
|
+
* D706: while this mode's ENTRY DELAY runs, do the alarm rules' own pushes go out (as an
|
|
23407
|
+
* intrusion naming the locations)? Absent = false — the entry-delay notification is the
|
|
23408
|
+
* only one, and the matches ride the triggered notification's mosaic (D705).
|
|
23409
|
+
*/
|
|
23410
|
+
notifyDuringEntryDelay: boolean().optional(),
|
|
23411
|
+
/**
|
|
23412
|
+
* D706: notify "watched again" when a sensor this arm bypassed closes and opens again.
|
|
23413
|
+
* Absent = false (logged, not sent). Even when true it is not sent when that same sensor
|
|
23414
|
+
* is the one that starts the entry delay — the entry-delay notification already names it.
|
|
23415
|
+
*/
|
|
23416
|
+
notifySensorRewatched: boolean().optional()
|
|
23381
23417
|
})).max(8).refine(uniqueModes, { message: "modeDelays: at most one entry per arm mode" });
|
|
23382
23418
|
var NcAlarmModeDelaysEditListSchema = array(object({
|
|
23383
23419
|
mode: AlarmArmModeSchema,
|
|
@@ -23386,7 +23422,11 @@ var NcAlarmModeDelaysEditListSchema = array(object({
|
|
|
23386
23422
|
triggeredDurationSec: NcAlarmTriggeredSecSchema.nullable().optional(),
|
|
23387
23423
|
postTriggeredAction: NcAlarmPostTriggeredActionSchema.nullable().optional(),
|
|
23388
23424
|
/** Set a schedule, or `null` to clear (mode always allowed again). */
|
|
23389
|
-
schedule: NcScheduleSchema.nullable().optional()
|
|
23425
|
+
schedule: NcScheduleSchema.nullable().optional(),
|
|
23426
|
+
/** D706: set the switch, or `null` to clear it (back to the default, false). */
|
|
23427
|
+
notifyDuringEntryDelay: boolean().nullable().optional(),
|
|
23428
|
+
/** D706: set the switch, or `null` to clear it (back to the default, false). */
|
|
23429
|
+
notifySensorRewatched: boolean().nullable().optional()
|
|
23390
23430
|
})).max(8).refine(uniqueModes, { message: "modeDelays: at most one edit per arm mode" });
|
|
23391
23431
|
/** One switch of the alarm table: put ONE device on, or take it off, ONE mode's list. */
|
|
23392
23432
|
var NcAlarmNonBlockingEditSchema = object({
|
|
@@ -27290,7 +27330,8 @@ var PipelineModelOptionSchema = object({
|
|
|
27290
27330
|
group: ModelVariantGroupSchema.optional(),
|
|
27291
27331
|
legacy: boolean().optional(),
|
|
27292
27332
|
provider: ModelProviderIdSchema.optional(),
|
|
27293
|
-
defaultConfidence: number().optional()
|
|
27333
|
+
defaultConfidence: number().optional(),
|
|
27334
|
+
fillsClassifierEffects: array(FillsClassifierEffectSchema).readonly().optional()
|
|
27294
27335
|
});
|
|
27295
27336
|
var ConfigFieldBridge = custom();
|
|
27296
27337
|
var PipelineAddonSchemaSchema = object({
|
|
@@ -28319,6 +28360,22 @@ var MotionSourceEnum = _enum([
|
|
|
28319
28360
|
"device-activity"
|
|
28320
28361
|
]);
|
|
28321
28362
|
/**
|
|
28363
|
+
* What opened an on-motion detection SESSION: the motion source that passed the
|
|
28364
|
+
* camera's `motionSources` gate, and what raised it (the camera itself, or a
|
|
28365
|
+
* sensor the operator attached — D672). `sensorName` is the attached sensor's
|
|
28366
|
+
* device name as the orchestrator's camera-sensors resolution last read it;
|
|
28367
|
+
* absent when unknown or when the camera itself triggered.
|
|
28368
|
+
*
|
|
28369
|
+
* Carried on the session attach ONLY so the runner's `DetectionPhaseTransition`
|
|
28370
|
+
* can say what started the session (D672 rule 11, amended 2026-10-06). The
|
|
28371
|
+
* runner never decides anything on it.
|
|
28372
|
+
*/
|
|
28373
|
+
var SessionTriggerSchema = object({
|
|
28374
|
+
source: MotionSourceEnum,
|
|
28375
|
+
triggeredBy: MotionTriggeredBySchema,
|
|
28376
|
+
sensorName: string().optional()
|
|
28377
|
+
});
|
|
28378
|
+
/**
|
|
28322
28379
|
* List of motion sources active on a camera. Empty array is valid:
|
|
28323
28380
|
* "no source" — happens for battery cams without firmware motion when
|
|
28324
28381
|
* the operator hasn't opted into the SW analyzer (would hold the
|
|
@@ -28570,6 +28627,14 @@ var RunnerCameraConfigSchema = object({
|
|
|
28570
28627
|
*/
|
|
28571
28628
|
motionSources: MotionSourcesSchema.default(["analyzer"]),
|
|
28572
28629
|
/**
|
|
28630
|
+
* What opened this attach, on a SESSION attach only (see
|
|
28631
|
+
* {@link SessionTriggerSchema}). OPTIONAL with no default: absent on a
|
|
28632
|
+
* standing attach, an occupancy burst, a re-dispatch with no motion event
|
|
28633
|
+
* behind it, and every attach from an orchestrator older than the field — the
|
|
28634
|
+
* runner then names no source on the phase event.
|
|
28635
|
+
*/
|
|
28636
|
+
sessionTrigger: SessionTriggerSchema.optional(),
|
|
28637
|
+
/**
|
|
28573
28638
|
* WHICH root detector runs for this camera. The detection counterpart of
|
|
28574
28639
|
* {@link motionSources}, same shape and same discipline: a per-camera list
|
|
28575
28640
|
* of sources the system understands, vendor-agnostic, owned here.
|
|
@@ -37670,7 +37735,7 @@ var LocalInterfaceSchema = object({
|
|
|
37670
37735
|
name: string(),
|
|
37671
37736
|
family: _enum(["IPv4", "IPv6"]),
|
|
37672
37737
|
address: string(),
|
|
37673
|
-
/** CIDR shorthand (e.g. `192.168.
|
|
37738
|
+
/** CIDR shorthand (e.g. `192.168.10.10/24`). Empty when OS doesn't expose. */
|
|
37674
37739
|
cidr: string(),
|
|
37675
37740
|
/** OS netmask. Stable across calls so the SDK can hash on it. */
|
|
37676
37741
|
netmask: string(),
|
|
@@ -37724,7 +37789,8 @@ var ConnectionEndpointSchema = object({
|
|
|
37724
37789
|
"lan-ipv4",
|
|
37725
37790
|
"lan-ipv6",
|
|
37726
37791
|
"public",
|
|
37727
|
-
"loopback"
|
|
37792
|
+
"loopback",
|
|
37793
|
+
"app-link"
|
|
37728
37794
|
]),
|
|
37729
37795
|
/**
|
|
37730
37796
|
* Originating-interface kind — `lan`/`wifi`/`docker`/`vpn`/`other`/
|
|
@@ -37793,15 +37859,27 @@ var GetConnectionEndpointsResultSchema = object({
|
|
|
37793
37859
|
localPort: AdvertisedLocalPortSchema
|
|
37794
37860
|
});
|
|
37795
37861
|
/**
|
|
37796
|
-
* The
|
|
37797
|
-
*
|
|
37798
|
-
*
|
|
37862
|
+
* The address flagged for notification links. `baseUrl: null` = AUTO, which
|
|
37863
|
+
* since D709 is the CamStack app link; `resolved` reports the effective value,
|
|
37864
|
+
* so the UI can show it either way.
|
|
37799
37865
|
*/
|
|
37800
37866
|
var NotificationEndpointSchema = object({
|
|
37801
37867
|
/** The operator's explicit choice, or null for AUTO. */
|
|
37802
37868
|
baseUrl: string().nullable(),
|
|
37803
|
-
/**
|
|
37804
|
-
|
|
37869
|
+
/**
|
|
37870
|
+
* The effective flagged address: the explicit choice, else (AUTO) the
|
|
37871
|
+
* CamStack app link `https://camstack.zentik.app` (D709). A pre-D709 hub
|
|
37872
|
+
* answered the public tunnel / mesh here, or null.
|
|
37873
|
+
*/
|
|
37874
|
+
resolved: string().nullable(),
|
|
37875
|
+
/**
|
|
37876
|
+
* The hub origin an app link carries as `hub=` (D709): the hub's best
|
|
37877
|
+
* public HTTPS address — the tunnel, then the mesh (Tailscale MagicDNS) —
|
|
37878
|
+
* picked from this cap's own palette by `pickAppLinkHub`. `null` when the
|
|
37879
|
+
* hub advertises neither; the app link is then minted without `hub=`.
|
|
37880
|
+
* Absent on a pre-D709 hub.
|
|
37881
|
+
*/
|
|
37882
|
+
appLinkHub: string().nullable()
|
|
37805
37883
|
});
|
|
37806
37884
|
/**
|
|
37807
37885
|
* The URLs the SDK / viewer should race for API access. `baseUrls` empty =
|
|
@@ -37869,7 +37947,7 @@ var localNetworkCapability = {
|
|
|
37869
37947
|
* every client a second authority on a socket only the hub binds. A viewer
|
|
37870
37948
|
* configured with a port-less public URL (`https://camstack.example.top`)
|
|
37871
37949
|
* infers 443 from the scheme, asks with 443, and was handed
|
|
37872
|
-
* `https://192.168.
|
|
37950
|
+
* `https://192.168.10.9:443` for a hub listening on 4443. That candidate
|
|
37873
37951
|
* cannot ever answer, and losing its race reads in the log exactly like
|
|
37874
37952
|
* "the LAN was tried and it was slower" — so an operator sitting on his own
|
|
37875
37953
|
* WiFi stayed on the public tunnel for weeks, with the LAN candidate born
|
|
@@ -37902,13 +37980,21 @@ var localNetworkCapability = {
|
|
|
37902
37980
|
* Pass `'https'` when the caller is itself loaded over HTTPS
|
|
37903
37981
|
* to avoid mixed-content blocks in the browser. The public
|
|
37904
37982
|
* tunnel always emits `https://` regardless. */
|
|
37905
|
-
scheme: _enum(["http", "https"]).optional()
|
|
37983
|
+
scheme: _enum(["http", "https"]).optional(),
|
|
37984
|
+
/** Append the CamStack app link entry (`kind: 'app-link'`, D709) —
|
|
37985
|
+
* an address notification links can be flagged with, not a hub
|
|
37986
|
+
* route. Default `false`: racers and rankers never see it. */
|
|
37987
|
+
includeAppLink: boolean().optional()
|
|
37906
37988
|
}), GetConnectionEndpointsResultSchema),
|
|
37907
37989
|
/**
|
|
37908
|
-
* The
|
|
37909
|
-
*
|
|
37910
|
-
*
|
|
37911
|
-
*
|
|
37990
|
+
* The address notification links are flagged with. `baseUrl: null` means
|
|
37991
|
+
* AUTO, which is the CamStack app link (D709): viewer taps go through
|
|
37992
|
+
* `https://camstack.zentik.app/…?hub=<appLinkHub>` and open the app. Any
|
|
37993
|
+
* hub address the palette lists can be flagged instead; then viewer taps,
|
|
37994
|
+
* attachment links and action buttons all use it. Signed media and
|
|
37995
|
+
* buttons never use the app link — with it flagged (or AUTO) they keep
|
|
37996
|
+
* the ranked hub ladder (a configured origin, a connected tunnel, then
|
|
37997
|
+
* the LAN), never loopback.
|
|
37912
37998
|
*
|
|
37913
37999
|
* Why an explicit marker: the automatic ranking cannot know which of
|
|
37914
38000
|
* several reachable addresses the RECIPIENT can actually open. A link is
|
|
@@ -38301,7 +38387,7 @@ var MeshPeerSchema = object({
|
|
|
38301
38387
|
tags: array(string()).readonly(),
|
|
38302
38388
|
/** True when the peer advertises itself as an exit-node candidate. */
|
|
38303
38389
|
exitNodeOption: boolean(),
|
|
38304
|
-
/** Subnet routes the peer advertises (e.g. `["192.168.
|
|
38390
|
+
/** Subnet routes the peer advertises (e.g. `["192.168.10.0/24"]`). */
|
|
38305
38391
|
advertisedRoutes: array(string()).readonly(),
|
|
38306
38392
|
/** Owner account login (e.g. `foo@example.com`). Null for tagged peers. */
|
|
38307
38393
|
userLogin: string().nullable(),
|
|
@@ -57799,12 +57885,14 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
|
|
|
57799
57885
|
{
|
|
57800
57886
|
id: "addons",
|
|
57801
57887
|
family: "system",
|
|
57802
|
-
label: "Addons",
|
|
57803
|
-
kinds: [
|
|
57804
|
-
|
|
57805
|
-
|
|
57806
|
-
|
|
57807
|
-
|
|
57888
|
+
label: "Addons stopped",
|
|
57889
|
+
kinds: ["addon-crash-loop"]
|
|
57890
|
+
},
|
|
57891
|
+
{
|
|
57892
|
+
id: "addon-updates",
|
|
57893
|
+
family: "system",
|
|
57894
|
+
label: "Addon updates",
|
|
57895
|
+
kinds: ["addon-update-available", "addon-updated"]
|
|
57808
57896
|
},
|
|
57809
57897
|
{
|
|
57810
57898
|
id: "updates",
|
|
@@ -58044,13 +58132,15 @@ var STATE_SUMMARY_SECTION_VARS = [
|
|
|
58044
58132
|
},
|
|
58045
58133
|
{
|
|
58046
58134
|
name: "summaryAddons",
|
|
58047
|
-
label: "Summary: addons",
|
|
58048
|
-
example: "
|
|
58049
|
-
kinds: [
|
|
58050
|
-
|
|
58051
|
-
|
|
58052
|
-
|
|
58053
|
-
|
|
58135
|
+
label: "Summary: addons stopped",
|
|
58136
|
+
example: "hub — recorder stopped after repeated crashes",
|
|
58137
|
+
kinds: ["addon-crash-loop"]
|
|
58138
|
+
},
|
|
58139
|
+
{
|
|
58140
|
+
name: "summaryAddonUpdates",
|
|
58141
|
+
label: "Summary: addon updates",
|
|
58142
|
+
example: "hub:\n• @camstack/addon-recorder 1.2.3 → 1.2.4",
|
|
58143
|
+
kinds: ["addon-update-available", "addon-updated"]
|
|
58054
58144
|
},
|
|
58055
58145
|
{
|
|
58056
58146
|
name: "summaryUpdates",
|
|
@@ -58134,6 +58224,7 @@ var STATE_SUMMARY_VARS = [
|
|
|
58134
58224
|
[...RULE_BODY_ONLY],
|
|
58135
58225
|
[...RULE_TEXT],
|
|
58136
58226
|
([...RULE_TEXT], [...DEVICE_EVENTS]),
|
|
58227
|
+
([...RULE_TEXT], [...COMBINED_ALARM]),
|
|
58137
58228
|
([...RULE_TEXT], [...DEVICE_EVENTS]),
|
|
58138
58229
|
([...RULE_TEXT], [...BATTERY, ...CONSUMABLE]),
|
|
58139
58230
|
([...RULE_TEXT], [...CONSUMABLE]),
|
|
@@ -60289,7 +60380,7 @@ function toOsdPickerDevices(devices) {
|
|
|
60289
60380
|
return devices.map((d) => ({
|
|
60290
60381
|
id: d.id,
|
|
60291
60382
|
name: d.name,
|
|
60292
|
-
type: d.type
|
|
60383
|
+
...typeof d.type === "string" ? { type: d.type } : {},
|
|
60293
60384
|
location: d.location ?? null,
|
|
60294
60385
|
parentDeviceId: d.parentDeviceId ?? null
|
|
60295
60386
|
}));
|