@camstack/addon-training 0.1.46 → 0.1.48
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{MaskShapeCanvas-Kfg9dl6B.mjs → MaskShapeCanvas-HNL0xNpy.mjs} +229 -228
- package/dist/MotionZonesSettings-B1g6IUfQ.mjs +291 -0
- package/dist/PrivacyMaskSettings-D4WRZZeD.mjs +339 -0
- package/dist/{ReactKonva-DGuYUN0L.mjs → ReactKonva-DzGysLZQ.mjs} +28 -28
- package/dist/SceneMonitorEditor-pYZfyXtn.mjs +825 -0
- package/dist/_stub.js +11524 -10177
- package/dist/{_virtual_mf-localSharedImportMap___mfe_internal__addon_training_page-BaP91ViK.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_training_page-BclY1R96.mjs} +4 -4
- package/dist/_virtual_mf___mfe_internal__addon_training_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-BVsoOuTM.mjs +26 -0
- package/dist/{_virtual_mf___mfe_internal__addon_training_page__loadShare__react__loadShare__.js-DeDbF7NI.mjs → _virtual_mf___mfe_internal__addon_training_page__loadShare__react__loadShare__.js-CEvdvp1T.mjs} +1 -1
- package/dist/addon-training.css +1 -1
- package/dist/{chevron-right-D3StkdcR.mjs → chevron-right-cA8Hucbi.mjs} +1 -1
- package/dist/{createLucideIcon-CPP1Jzoz.mjs → createLucideIcon-C0bBNRpC.mjs} +8 -8
- package/dist/{dist-BkEnS7-I.js → dist-DxTjO9kC.js} +198 -5
- package/dist/{dist-CcO4XtoH.mjs → dist-GI2KEl-e.mjs} +198 -5
- package/dist/{grid-2x2-Yngdckwo.mjs → grid-2x2-CHuMzRxF.mjs} +1 -1
- package/dist/{hostInit-wQjEMX_J.mjs → hostInit-BHX8oN7K.mjs} +3 -3
- package/dist/{icons-C4_Ji5S0.mjs → icons-BwkaMam3.mjs} +9 -9
- package/dist/index.js +1 -1
- package/dist/{mic-off-DPNSd6G7.mjs → mic-off-2uHAsVtR.mjs} +1 -1
- package/dist/orchestrator/training.addon.js +1 -1
- package/dist/orchestrator/training.addon.mjs +1 -1
- package/dist/{player-overlays-D14TtzYY.mjs → player-overlays-B4V_uIvb.mjs} +25 -25
- package/dist/providers/modal/training-modal.addon.js +1 -1
- package/dist/providers/modal/training-modal.addon.mjs +1 -1
- package/dist/remoteEntry.js +1 -1
- package/dist/{responsive-BLkfTned.mjs → responsive-1iwc-rj2.mjs} +26 -26
- package/dist/{rotate-ccw-Dak-lXgZ.mjs → rotate-ccw-Cu6tGrgG.mjs} +1 -1
- package/dist/scene-monitor-copy-Cqfs4Vng.mjs +176 -0
- package/dist/{settings-2-Cgiv3kQb.mjs → settings-2-xV0I5Y5U.mjs} +1 -1
- package/dist/{square-B_679zIX.mjs → square-ZPUterXM.mjs} +1 -1
- package/dist/{trash-2-DC8LDYlI.mjs → trash-2-BKfuhsgY.mjs} +1 -1
- package/dist/ui-text-CqJgUCKX.mjs +34 -0
- package/dist/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_training_page__remoteEntry_js-DNOZs2VX.mjs → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_training_page__remoteEntry_js-D5OhZIRm.mjs} +1 -1
- package/dist/{zoom-out-BJoVDYa3.mjs → zoom-out-DDZCsqkQ.mjs} +1 -1
- package/package.json +1 -1
- package/dist/MotionZonesSettings-D6Lcv5P6.mjs +0 -292
- package/dist/PrivacyMaskSettings-BoMc1LXD.mjs +0 -348
- package/dist/SceneMonitorEditor-BiLUxNnT.mjs +0 -810
- package/dist/_virtual_mf___mfe_internal__addon_training_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-CyW0FqIn.mjs +0 -26
- package/dist/scene-monitor-copy-DX2u-htD.mjs +0 -136
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { i as e, r as t, w as n } from "./_virtual_mf___mfe_internal__addon_training_page__loadShare__react__loadShare__.js-CEvdvp1T.mjs";
|
|
2
2
|
//#region ../../node_modules/lucide-react/dist/esm/shared/src/utils/mergeClasses.js
|
|
3
|
-
|
|
3
|
+
n();
|
|
4
4
|
var r = (...e) => e.filter((e, t, n) => !!e && e.trim() !== "" && n.indexOf(e) === t).join(" ").trim(), i = (e) => e.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase(), a = (e) => e.replace(/^([A-Z])|[\s-_]+(\w)/g, (e, t, n) => n ? n.toUpperCase() : t.toLowerCase()), o = (e) => {
|
|
5
5
|
let t = a(e);
|
|
6
6
|
return t.charAt(0).toUpperCase() + t.slice(1);
|
|
@@ -17,7 +17,7 @@ var r = (...e) => e.filter((e, t, n) => !!e && e.trim() !== "" && n.indexOf(e) =
|
|
|
17
17
|
}, c = (e) => {
|
|
18
18
|
for (let t in e) if (t.startsWith("aria-") || t === "role" || t === "title") return !0;
|
|
19
19
|
return !1;
|
|
20
|
-
}, l =
|
|
20
|
+
}, l = e(({ color: e = "currentColor", size: n = 24, strokeWidth: i = 2, absoluteStrokeWidth: a, className: o = "", children: l, iconNode: u, ...d }, f) => t("svg", {
|
|
21
21
|
ref: f,
|
|
22
22
|
...s,
|
|
23
23
|
width: n,
|
|
@@ -30,15 +30,15 @@ var r = (...e) => e.filter((e, t, n) => !!e && e.trim() !== "" && n.indexOf(e) =
|
|
|
30
30
|
}, [...u.map(([e, n]) => t(e, n)), ...Array.isArray(l) ? l : [l]]));
|
|
31
31
|
//#endregion
|
|
32
32
|
//#region ../../node_modules/lucide-react/dist/esm/createLucideIcon.js
|
|
33
|
-
|
|
34
|
-
var u = (
|
|
35
|
-
let s =
|
|
33
|
+
n();
|
|
34
|
+
var u = (n, a) => {
|
|
35
|
+
let s = e(({ className: e, ...s }, c) => t(l, {
|
|
36
36
|
ref: c,
|
|
37
37
|
iconNode: a,
|
|
38
|
-
className: r(`lucide-${i(o(
|
|
38
|
+
className: r(`lucide-${i(o(n))}`, `lucide-${n}`, e),
|
|
39
39
|
...s
|
|
40
40
|
}));
|
|
41
|
-
return s.displayName = o(
|
|
41
|
+
return s.displayName = o(n), s;
|
|
42
42
|
};
|
|
43
43
|
//#endregion
|
|
44
44
|
export { u as t };
|
|
@@ -5420,7 +5420,7 @@ var ZodIssueCode = {
|
|
|
5420
5420
|
var ZodFirstPartyTypeKind;
|
|
5421
5421
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5422
5422
|
//#endregion
|
|
5423
|
-
//#region ../types/dist/sleep-
|
|
5423
|
+
//#region ../types/dist/sleep-DRqxtc0C.mjs
|
|
5424
5424
|
/**
|
|
5425
5425
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5426
5426
|
* window to float samples (D455).
|
|
@@ -8188,8 +8188,12 @@ method(object({ deviceId: number() }), array(StreamSourceEntrySchema)), method(o
|
|
|
8188
8188
|
kind: "mutation",
|
|
8189
8189
|
auth: "admin"
|
|
8190
8190
|
}), method(object({ deviceId: number() }), unknown().nullable()), method(object({ deviceId: number() }), RawStateResultSchema.nullable(), { auth: "protected" });
|
|
8191
|
+
object({
|
|
8192
|
+
code: string().regex(/^[a-z][a-z0-9-]*(\.[a-z0-9-]+)+$/),
|
|
8193
|
+
params: record(string(), union([string(), number()])).optional()
|
|
8194
|
+
});
|
|
8191
8195
|
//#endregion
|
|
8192
|
-
//#region ../types/dist/err-msg-
|
|
8196
|
+
//#region ../types/dist/err-msg-DLerKiVO.mjs
|
|
8193
8197
|
var DeviceType = /* @__PURE__ */ function(DeviceType) {
|
|
8194
8198
|
DeviceType["Camera"] = "camera";
|
|
8195
8199
|
DeviceType["Hub"] = "hub";
|
|
@@ -8439,6 +8443,22 @@ var DeviceRole = /* @__PURE__ */ function(DeviceRole) {
|
|
|
8439
8443
|
DeviceRole["Nightvision"] = "nightvision";
|
|
8440
8444
|
DeviceRole["PrivacyMask"] = "privacy-mask";
|
|
8441
8445
|
DeviceRole["Doorbell"] = "doorbell";
|
|
8446
|
+
/** Interior blind / shade / roller blind. HA `device_class: blind|shade`. */
|
|
8447
|
+
DeviceRole["CoverBlind"] = "cover-blind";
|
|
8448
|
+
/** Exterior roller shutter. HA `device_class: shutter`; Homematic BROLL. */
|
|
8449
|
+
DeviceRole["CoverShutter"] = "cover-shutter";
|
|
8450
|
+
/** Exterior awning. HA `device_class: awning`. */
|
|
8451
|
+
DeviceRole["CoverAwning"] = "cover-awning";
|
|
8452
|
+
/** Curtain / drape. HA `device_class: curtain`. */
|
|
8453
|
+
DeviceRole["CoverCurtain"] = "cover-curtain";
|
|
8454
|
+
/** Garage door. HA `device_class: garage`. A security actuator: exports gate it. */
|
|
8455
|
+
DeviceRole["CoverGarage"] = "cover-garage";
|
|
8456
|
+
/** Gate. HA `device_class: gate`. A security actuator: exports gate it. */
|
|
8457
|
+
DeviceRole["CoverGate"] = "cover-gate";
|
|
8458
|
+
/** Door. HA `device_class: door`. A security actuator: exports gate it. */
|
|
8459
|
+
DeviceRole["CoverDoor"] = "cover-door";
|
|
8460
|
+
/** Window. HA `device_class: window`. */
|
|
8461
|
+
DeviceRole["CoverWindow"] = "cover-window";
|
|
8442
8462
|
/** Virtual HA toggle (input_boolean.*) — distinguishable from a
|
|
8443
8463
|
* real Switch device for UI rendering / export adapters. */
|
|
8444
8464
|
DeviceRole["BinaryHelper"] = "binary-helper";
|
|
@@ -8509,7 +8529,7 @@ var DeviceRole = /* @__PURE__ */ function(DeviceRole) {
|
|
|
8509
8529
|
return DeviceRole;
|
|
8510
8530
|
}({});
|
|
8511
8531
|
//#endregion
|
|
8512
|
-
//#region ../types/dist/composition-
|
|
8532
|
+
//#region ../types/dist/composition-EQ9Ok0Ee.mjs
|
|
8513
8533
|
/**
|
|
8514
8534
|
* The ffmpeg build every CamStack node downloads, per platform and arch.
|
|
8515
8535
|
*
|
|
@@ -12204,6 +12224,8 @@ var ConvertResultSchema = object({
|
|
|
12204
12224
|
})).readonly()
|
|
12205
12225
|
});
|
|
12206
12226
|
_enum(["new-session", "step-up"]);
|
|
12227
|
+
/** The languages the hub's app landing pages are written in (D858). */
|
|
12228
|
+
var AppPageLangSchema = _enum(["en", "it"]);
|
|
12207
12229
|
/** How a native app starts one login method (D858), as `auth.listLoginMethods` reports it. */
|
|
12208
12230
|
var AppLoginPathSchema = discriminatedUnion("kind", [object({ kind: literal("native") }), object({
|
|
12209
12231
|
kind: literal("browser"),
|
|
@@ -12717,7 +12739,9 @@ var ConfigTabDeclarationSchema = object({
|
|
|
12717
12739
|
var ConfigSectionWithValuesSchema = object({
|
|
12718
12740
|
id: string(),
|
|
12719
12741
|
title: string(),
|
|
12742
|
+
titleKey: string().optional(),
|
|
12720
12743
|
description: string().optional(),
|
|
12744
|
+
descriptionKey: string().optional(),
|
|
12721
12745
|
style: _enum(["card", "accordion"]).optional(),
|
|
12722
12746
|
defaultCollapsed: boolean().optional(),
|
|
12723
12747
|
columns: union([
|
|
@@ -15943,6 +15967,9 @@ method(object({
|
|
|
15943
15967
|
}), method(object({ refs: RefListSchema }), KeychainResolveResultSchema, { auth: "admin" }), method(object({ refs: RefListSchema }), object({ deleted: number().int() }), {
|
|
15944
15968
|
kind: "mutation",
|
|
15945
15969
|
auth: "admin"
|
|
15970
|
+
}), method(object({ deviceId: number().int() }), object({ refs: array(string()).readonly() }), {
|
|
15971
|
+
kind: "mutation",
|
|
15972
|
+
auth: "admin"
|
|
15946
15973
|
}), method(object({}), array(KeychainSecretMetaSchema).readonly(), { auth: "admin" }), method(object({}), KeychainStateSchema, { auth: "admin" });
|
|
15947
15974
|
/**
|
|
15948
15975
|
* device-history — the ONE mechanism for numeric history (D850).
|
|
@@ -37346,6 +37373,38 @@ var DeviceRegisterPayloadSchema = object({
|
|
|
37346
37373
|
* omits it and the keyword backstop applies. */
|
|
37347
37374
|
secretConfigPaths: array(string()).optional()
|
|
37348
37375
|
});
|
|
37376
|
+
/** One deleted device, kept by device-manager so an addon that missed the
|
|
37377
|
+
* deletion can still learn of it (D865). Written by the delete path ONLY. */
|
|
37378
|
+
var DeviceTombstoneSchema = object({
|
|
37379
|
+
deviceId: number().int().positive(),
|
|
37380
|
+
/** Epoch ms the device was deleted. */
|
|
37381
|
+
deletedAt: number(),
|
|
37382
|
+
/** The addon that owned the device when it was deleted. */
|
|
37383
|
+
providerAddonId: string()
|
|
37384
|
+
});
|
|
37385
|
+
/** Data held for one device that device-manager no longer knows. */
|
|
37386
|
+
var OrphanDeviceDataSchema = object({
|
|
37387
|
+
deviceId: number().int().positive(),
|
|
37388
|
+
/** Rows/files per store (`<addonId>:<store>`). */
|
|
37389
|
+
stores: record(string(), number().int().nonnegative())
|
|
37390
|
+
});
|
|
37391
|
+
var CleanupDeletedDevicesResultSchema = object({
|
|
37392
|
+
/**
|
|
37393
|
+
* `skipped` — the absence check could not be trusted (a device-list read
|
|
37394
|
+
* failed or the two reads disagreed); nothing was listed or deleted.
|
|
37395
|
+
* `dry-run` — `devices` is what a confirmed run would delete.
|
|
37396
|
+
* `cleaned` — `devices` is what was deleted.
|
|
37397
|
+
*/
|
|
37398
|
+
status: _enum([
|
|
37399
|
+
"skipped",
|
|
37400
|
+
"dry-run",
|
|
37401
|
+
"cleaned"
|
|
37402
|
+
]),
|
|
37403
|
+
reason: string().nullable(),
|
|
37404
|
+
devices: array(OrphanDeviceDataSchema),
|
|
37405
|
+
/** Implementers that could not be asked (their stores are not in `devices`). */
|
|
37406
|
+
unreachable: array(string())
|
|
37407
|
+
});
|
|
37349
37408
|
var DeviceRemovePayloadSchema = object({ deviceId: number() });
|
|
37350
37409
|
var DevicePersistConfigPayloadSchema = object({
|
|
37351
37410
|
deviceId: number(),
|
|
@@ -37584,6 +37643,9 @@ method(object({
|
|
|
37584
37643
|
}), method(object({ deviceId: number() }), object({ success: literal(true) }), {
|
|
37585
37644
|
kind: "mutation",
|
|
37586
37645
|
auth: "admin"
|
|
37646
|
+
}), method(object({ sinceMs: number() }), array(DeviceTombstoneSchema).readonly(), { auth: "admin" }), method(object({ confirm: boolean() }), CleanupDeletedDevicesResultSchema, {
|
|
37647
|
+
kind: "mutation",
|
|
37648
|
+
auth: "admin"
|
|
37587
37649
|
}), method(object({ integrationId: string() }), object({ removed: number() }), {
|
|
37588
37650
|
kind: "mutation",
|
|
37589
37651
|
auth: "admin"
|
|
@@ -38046,6 +38108,72 @@ method(object({
|
|
|
38046
38108
|
auth: "admin"
|
|
38047
38109
|
});
|
|
38048
38110
|
/**
|
|
38111
|
+
* `device-removal-hook` — the reliable way an addon learns a device was DELETED,
|
|
38112
|
+
* so it can delete what it keeps for that device (D865).
|
|
38113
|
+
*
|
|
38114
|
+
* ## Why an event was not enough
|
|
38115
|
+
*
|
|
38116
|
+
* `DeviceUnregistered` is telemetry and may be dropped (D8, D11). An addon that
|
|
38117
|
+
* hung its per-device clean-up on it left durable garbage whenever the event was
|
|
38118
|
+
* lost, the addon was down, or it was restarting at that moment — footage,
|
|
38119
|
+
* analytics rows and settings of device 4483 outlived the device. Loss of this
|
|
38120
|
+
* signal corrupts durable state, so it travels by RPC with a recorded fact
|
|
38121
|
+
* behind it (D8: "if loss would corrupt durable state, use RPC plus a reconcile").
|
|
38122
|
+
*
|
|
38123
|
+
* ## The three pieces
|
|
38124
|
+
*
|
|
38125
|
+
* 1. device-manager records a TOMBSTONE per deleted device
|
|
38126
|
+
* (`deviceManager.listDeletedSince`). The tombstone is written by the delete
|
|
38127
|
+
* path only — a device that is unregistered, offline or whose provider is
|
|
38128
|
+
* restarting is NOT deleted and gets none.
|
|
38129
|
+
* 2. After a delete, device-manager calls `onDeviceRemoved` on EVERY provider of
|
|
38130
|
+
* this collection, one by one, with bounded retries, logged.
|
|
38131
|
+
* 3. An implementer that was down asks `deviceManager.listDeletedSince` at start
|
|
38132
|
+
* (and periodically) and runs its own `onDeviceRemoved` for each tombstone it
|
|
38133
|
+
* may have missed. Reconcile is driven by tombstones, never by "the device is
|
|
38134
|
+
* not in the current list": a failed or partial list read must not destroy data.
|
|
38135
|
+
*
|
|
38136
|
+
* ## Contract for an implementer
|
|
38137
|
+
*
|
|
38138
|
+
* - **Idempotent.** It is called again by a retry, by a reconcile and by the
|
|
38139
|
+
* admin cleanup of data that predates tombstones. A device with nothing left
|
|
38140
|
+
* answers zero counts.
|
|
38141
|
+
* - **One key per store** in `counts`, deleted rows/files per store, so the log
|
|
38142
|
+
* line and the admin dry run can say where the data was.
|
|
38143
|
+
* - **Training datasets are NOT device data** and are never deleted by a hook.
|
|
38144
|
+
* - **Per-device SETTINGS are not hooked.** Configuration lives in the standard
|
|
38145
|
+
* per-device store (`ctx.settings.*DeviceStore`), which device-manager clears
|
|
38146
|
+
* for every addon centrally at delete time. This hook is for device DATA
|
|
38147
|
+
* that is not settings: footage, event media, analytics rows, history.
|
|
38148
|
+
* - A provider that cannot tell is allowed to throw; the caller retries it.
|
|
38149
|
+
*
|
|
38150
|
+
* `listDeviceData` is the read side of the admin "Clean data of deleted devices"
|
|
38151
|
+
* action: which device ids this addon holds data for, and how much per store. It
|
|
38152
|
+
* never deletes. device-manager decides which of those ids are absent from the
|
|
38153
|
+
* fleet, from TWO consistent reads of the device list (D49).
|
|
38154
|
+
*/
|
|
38155
|
+
/** What a hook is told about the deletion. */
|
|
38156
|
+
var DeviceRemovedInputSchema = object({
|
|
38157
|
+
deviceId: number().int().positive(),
|
|
38158
|
+
/** Epoch ms the device was deleted (the tombstone's `deletedAt`). */
|
|
38159
|
+
deletedAt: number(),
|
|
38160
|
+
/** The addon that owned the device, as device-manager last knew it. */
|
|
38161
|
+
providerAddonId: string()
|
|
38162
|
+
});
|
|
38163
|
+
/** Rows/files/refs deleted, per store this implementer owns. */
|
|
38164
|
+
var DeviceRemovedResultSchema = object({ counts: record(string(), number().int().nonnegative()) });
|
|
38165
|
+
/** One (store, device) pair an implementer holds data for. */
|
|
38166
|
+
var DeviceDataEntrySchema = object({
|
|
38167
|
+
store: string(),
|
|
38168
|
+
deviceId: number().int().positive(),
|
|
38169
|
+
/** Rows (or files) held for the device in the store. */
|
|
38170
|
+
count: number().int().nonnegative()
|
|
38171
|
+
});
|
|
38172
|
+
method(DeviceRemovedInputSchema, DeviceRemovedResultSchema, {
|
|
38173
|
+
kind: "mutation",
|
|
38174
|
+
auth: "admin"
|
|
38175
|
+
}), method(_void(), array(DeviceDataEntrySchema).readonly(), { auth: "admin" });
|
|
38176
|
+
/**
|
|
38049
38177
|
* `failure-contribution` — the capability an addon reports its OWN losses
|
|
38050
38178
|
* through, per camera, with the denominator attached. It stores nothing.
|
|
38051
38179
|
*
|
|
@@ -49606,7 +49734,9 @@ var SsoBridgeClaimsSchema = object({
|
|
|
49606
49734
|
codeChallenge: string(),
|
|
49607
49735
|
state: string(),
|
|
49608
49736
|
purpose: _enum(["new-session", "step-up"]),
|
|
49609
|
-
redirect: string()
|
|
49737
|
+
redirect: string(),
|
|
49738
|
+
/** The page language the app asked for (D858); the confirm page speaks it. */
|
|
49739
|
+
lang: _enum(["en", "it"]).optional()
|
|
49610
49740
|
}).optional()
|
|
49611
49741
|
});
|
|
49612
49742
|
method(object({
|
|
@@ -58970,6 +59100,21 @@ DeviceType.Switch, DeviceType.Siren, DeviceType.Light, method(object({
|
|
|
58970
59100
|
on: boolean(),
|
|
58971
59101
|
lastChangedAt: number()
|
|
58972
59102
|
});
|
|
59103
|
+
/** C0 controls, DEL and the C1 range: none of them belongs in a name. */
|
|
59104
|
+
function hasControlCharacter(value) {
|
|
59105
|
+
for (const char of value) {
|
|
59106
|
+
const code = char.codePointAt(0) ?? 0;
|
|
59107
|
+
if (code <= 31 || code >= 127 && code <= 159) return true;
|
|
59108
|
+
}
|
|
59109
|
+
return false;
|
|
59110
|
+
}
|
|
59111
|
+
string().transform((value) => value.trim()).pipe(string().min(1, "The server name cannot be empty").max(48, `The server name is at most 48 characters`).refine((value) => !hasControlCharacter(value), { message: "The server name cannot contain control characters" }));
|
|
59112
|
+
/** What every reader gets: the name to show, and whether the hub chose it itself. */
|
|
59113
|
+
var ServerNameInfoSchema = object({
|
|
59114
|
+
name: string(),
|
|
59115
|
+
/** `true` when nobody named the hub: `name` is the machine hostname. */
|
|
59116
|
+
isDefault: boolean()
|
|
59117
|
+
});
|
|
58973
59118
|
/**
|
|
58974
59119
|
* system — system-scoped singleton capability exposing hub-level
|
|
58975
59120
|
* health, feature flags, network interface enumeration, and the
|
|
@@ -58999,6 +59144,12 @@ var FeatureManifestSchema = object({
|
|
|
58999
59144
|
backup: boolean(),
|
|
59000
59145
|
repl: boolean()
|
|
59001
59146
|
});
|
|
59147
|
+
/**
|
|
59148
|
+
* `system.info`: the feature flags plus the hub's human name (D861). The name is
|
|
59149
|
+
* `{ name, isDefault }` — `isDefault: true` means nobody named the hub and `name`
|
|
59150
|
+
* is the machine hostname.
|
|
59151
|
+
*/
|
|
59152
|
+
var SystemInfoSchema = FeatureManifestSchema.extend({ serverName: ServerNameInfoSchema });
|
|
59002
59153
|
var HealthStatusSchema = object({
|
|
59003
59154
|
status: literal("ok"),
|
|
59004
59155
|
uptime: number()
|
|
@@ -59471,7 +59622,7 @@ var LoggingSettingsStateSchema = object({
|
|
|
59471
59622
|
opsLogRetentionDays: number().int().min(0),
|
|
59472
59623
|
persisted: boolean()
|
|
59473
59624
|
});
|
|
59474
|
-
method(_void(),
|
|
59625
|
+
method(_void(), SystemInfoSchema), method(_void(), HealthStatusSchema), method(_void(), FeatureManifestSchema), method(_void(), array(NetworkAddressSchema).readonly()), method(_void(), unknown().nullable(), { auth: "admin" }), method(record(string(), unknown()), _null(), {
|
|
59475
59626
|
kind: "mutation",
|
|
59476
59627
|
auth: "admin"
|
|
59477
59628
|
}), method(_void(), _void(), {
|
|
@@ -62622,6 +62773,12 @@ Object.freeze({
|
|
|
62622
62773
|
addonId: null,
|
|
62623
62774
|
access: "create"
|
|
62624
62775
|
},
|
|
62776
|
+
"deviceManager.cleanupDeletedDevicesData": {
|
|
62777
|
+
capName: "device-manager",
|
|
62778
|
+
capScope: "system",
|
|
62779
|
+
addonId: null,
|
|
62780
|
+
access: "create"
|
|
62781
|
+
},
|
|
62625
62782
|
"deviceManager.createDevice": {
|
|
62626
62783
|
capName: "device-manager",
|
|
62627
62784
|
capScope: "system",
|
|
@@ -62802,6 +62959,12 @@ Object.freeze({
|
|
|
62802
62959
|
addonId: null,
|
|
62803
62960
|
access: "view"
|
|
62804
62961
|
},
|
|
62962
|
+
"deviceManager.listDeletedSince": {
|
|
62963
|
+
capName: "device-manager",
|
|
62964
|
+
capScope: "system",
|
|
62965
|
+
addonId: null,
|
|
62966
|
+
access: "view"
|
|
62967
|
+
},
|
|
62805
62968
|
"deviceManager.listDeviceIdsByCaps": {
|
|
62806
62969
|
capName: "device-manager",
|
|
62807
62970
|
capScope: "system",
|
|
@@ -63210,6 +63373,18 @@ Object.freeze({
|
|
|
63210
63373
|
addonId: null,
|
|
63211
63374
|
access: "create"
|
|
63212
63375
|
},
|
|
63376
|
+
"deviceRemovalHook.listDeviceData": {
|
|
63377
|
+
capName: "device-removal-hook",
|
|
63378
|
+
capScope: "system",
|
|
63379
|
+
addonId: null,
|
|
63380
|
+
access: "view"
|
|
63381
|
+
},
|
|
63382
|
+
"deviceRemovalHook.onDeviceRemoved": {
|
|
63383
|
+
capName: "device-removal-hook",
|
|
63384
|
+
capScope: "system",
|
|
63385
|
+
addonId: null,
|
|
63386
|
+
access: "create"
|
|
63387
|
+
},
|
|
63213
63388
|
"deviceState.claimFields": {
|
|
63214
63389
|
capName: "device-state",
|
|
63215
63390
|
capScope: "system",
|
|
@@ -63642,6 +63817,12 @@ Object.freeze({
|
|
|
63642
63817
|
addonId: null,
|
|
63643
63818
|
access: "delete"
|
|
63644
63819
|
},
|
|
63820
|
+
"keychain.deleteDeviceScope": {
|
|
63821
|
+
capName: "keychain",
|
|
63822
|
+
capScope: "system",
|
|
63823
|
+
addonId: null,
|
|
63824
|
+
access: "delete"
|
|
63825
|
+
},
|
|
63645
63826
|
"keychain.getState": {
|
|
63646
63827
|
capName: "keychain",
|
|
63647
63828
|
capScope: "system",
|
|
@@ -69654,6 +69835,11 @@ Object.freeze({
|
|
|
69654
69835
|
form: "single",
|
|
69655
69836
|
optional: false
|
|
69656
69837
|
}],
|
|
69838
|
+
"deviceRemovalHook.onDeviceRemoved": [{
|
|
69839
|
+
name: "deviceId",
|
|
69840
|
+
form: "single",
|
|
69841
|
+
optional: false
|
|
69842
|
+
}],
|
|
69657
69843
|
"deviceState.claimFields": [{
|
|
69658
69844
|
name: "deviceId",
|
|
69659
69845
|
form: "single",
|
|
@@ -69843,6 +70029,11 @@ Object.freeze({
|
|
|
69843
70029
|
form: "single",
|
|
69844
70030
|
optional: false
|
|
69845
70031
|
}],
|
|
70032
|
+
"keychain.deleteDeviceScope": [{
|
|
70033
|
+
name: "deviceId",
|
|
70034
|
+
form: "single",
|
|
70035
|
+
optional: false
|
|
70036
|
+
}],
|
|
69846
70037
|
"lawnMowerControl.dock": [{
|
|
69847
70038
|
name: "deviceId",
|
|
69848
70039
|
form: "single",
|
|
@@ -72191,6 +72382,8 @@ new Set([
|
|
|
72191
72382
|
"audio-tools",
|
|
72192
72383
|
"audio-silence"
|
|
72193
72384
|
]);
|
|
72385
|
+
AppPageLangSchema.options;
|
|
72386
|
+
record(string().min(1), string());
|
|
72194
72387
|
/**
|
|
72195
72388
|
* TimelapseRule — the STANDALONE scheduled timelapse producer's rule model.
|
|
72196
72389
|
*
|