@camstack/system 1.2.305 → 1.2.307
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/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.js +1 -1
- package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.mjs +1 -1
- package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.js +1 -1
- package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.mjs +1 -1
- package/dist/builtins/alerts/alerts.addon.js +1 -1
- package/dist/builtins/alerts/alerts.addon.mjs +1 -1
- package/dist/builtins/autotrack/index.js +1 -1
- package/dist/builtins/autotrack/index.mjs +1 -1
- package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.js +1 -1
- package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.mjs +1 -1
- package/dist/builtins/camera-grid/index.js +1 -1
- package/dist/builtins/camera-grid/index.mjs +1 -1
- package/dist/builtins/console-logging/index.js +1 -1
- package/dist/builtins/console-logging/index.mjs +1 -1
- package/dist/builtins/core-blocks/core-blocks.addon.js +1 -1
- package/dist/builtins/core-blocks/core-blocks.addon.mjs +1 -1
- package/dist/builtins/device-manager/device-extension-linked-slot.d.ts +19 -0
- package/dist/builtins/device-manager/device-linked-devices.d.ts +26 -18
- package/dist/builtins/device-manager/device-manager.addon.js +157 -135
- package/dist/builtins/device-manager/device-manager.addon.mjs +157 -135
- package/dist/builtins/doorbell/binding-mirror.d.ts +13 -7
- package/dist/builtins/doorbell/virtual-doorbell.addon.d.ts +12 -45
- package/dist/builtins/doorbell/virtual-doorbell.addon.js +29 -102
- package/dist/builtins/doorbell/virtual-doorbell.addon.mjs +29 -102
- package/dist/builtins/hub-forwarder/index.js +1 -1
- package/dist/builtins/hub-forwarder/index.mjs +1 -1
- package/dist/builtins/liveness-monitor/liveness-monitor.addon.js +1 -1
- package/dist/builtins/liveness-monitor/liveness-monitor.addon.mjs +1 -1
- package/dist/builtins/local-auth/local-auth.addon.js +1 -1
- package/dist/builtins/local-auth/local-auth.addon.mjs +1 -1
- package/dist/builtins/local-network/local-network.addon.js +1 -1
- package/dist/builtins/local-network/local-network.addon.mjs +1 -1
- package/dist/builtins/loki-logging/index.js +1 -1
- package/dist/builtins/loki-logging/index.mjs +1 -1
- package/dist/builtins/native-metrics/native-metrics.addon.js +1 -1
- package/dist/builtins/native-metrics/native-metrics.addon.mjs +1 -1
- package/dist/builtins/platform-probe/index.js +1 -1
- package/dist/builtins/platform-probe/index.mjs +1 -1
- package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.js +1 -1
- package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.mjs +1 -1
- package/dist/builtins/snapshot/index.js +1 -1
- package/dist/builtins/snapshot/index.mjs +1 -1
- package/dist/builtins/sqlite-storage/filesystem-storage.addon.js +1 -1
- package/dist/builtins/sqlite-storage/filesystem-storage.addon.mjs +1 -1
- package/dist/builtins/sqlite-storage/sqlite-settings.addon.js +0 -0
- package/dist/builtins/sqlite-storage/sqlite-settings.addon.mjs +0 -0
- package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.js +1 -1
- package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.mjs +1 -1
- package/dist/builtins/system-config/system-config.addon.js +1 -1
- package/dist/builtins/system-config/system-config.addon.mjs +1 -1
- package/dist/builtins/winston-logging/index.js +1 -1
- package/dist/builtins/winston-logging/index.mjs +1 -1
- package/dist/{dist-BK4iP6ab.js → dist-D3ch99WD.js} +66 -73
- package/dist/{dist-Df1NhKxm.mjs → dist-DdfJa8Zn.mjs} +67 -68
- package/dist/index.js +1 -1
- package/dist/index.mjs +1 -1
- package/dist/{retired-settings-keys-dC4ckbXJ.mjs → retired-settings-keys-BJNhhXap.mjs} +1 -1
- package/dist/{retired-settings-keys-DwWMph6F.js → retired-settings-keys-DG_LEPqC.js} +1 -1
- package/package.json +1 -1
- package/dist/builtins/device-manager/device-store-sections.d.ts +0 -26
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { gn as BaseAddon, jt as logDestinationCapability } from "../../dist-DdfJa8Zn.mjs";
|
|
2
2
|
import { t as formatLogLine } from "../../formatter-B7qW8bPJ.mjs";
|
|
3
3
|
import * as path$1 from "node:path";
|
|
4
4
|
import path from "node:path";
|
|
@@ -691,7 +691,7 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
691
691
|
return EventCategory;
|
|
692
692
|
}({});
|
|
693
693
|
//#endregion
|
|
694
|
-
//#region ../types/dist/sleep-
|
|
694
|
+
//#region ../types/dist/sleep-DC-wdyeS.mjs
|
|
695
695
|
/**
|
|
696
696
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
697
697
|
* window to float samples (D455).
|
|
@@ -8144,12 +8144,32 @@ var AudioClassificationLabelSchema = zod.z.object({
|
|
|
8144
8144
|
originalClass: zod.z.string().optional(),
|
|
8145
8145
|
score: zod.z.number()
|
|
8146
8146
|
});
|
|
8147
|
+
/**
|
|
8148
|
+
* Did the classifier RUN on this window? (D660)
|
|
8149
|
+
*
|
|
8150
|
+
* `classified` with no labels means the model heard nothing above the
|
|
8151
|
+
* camera's floor. `not-classified` means nobody listened — and until D660 the
|
|
8152
|
+
* two were the same shape (`classification` absent), so a window the global
|
|
8153
|
+
* busy gate threw away read downstream exactly like a quiet one (D393).
|
|
8154
|
+
*/
|
|
8155
|
+
var AudioClassifyOutcomeSchema = zod.z.discriminatedUnion("state", [zod.z.object({ state: zod.z.literal("classified") }), zod.z.object({
|
|
8156
|
+
state: zod.z.literal("not-classified"),
|
|
8157
|
+
reason: zod.z.enum([
|
|
8158
|
+
"superseded",
|
|
8159
|
+
"error",
|
|
8160
|
+
"timeout",
|
|
8161
|
+
"disposed"
|
|
8162
|
+
])
|
|
8163
|
+
})]);
|
|
8147
8164
|
var AudioAnalysisResultSchema = zod.z.object({
|
|
8148
8165
|
level: AudioLevelSchema,
|
|
8166
|
+
/** Labels at or above the camera's floor. Absent = none — read `classifyOutcome` to know whether the model ran at all. */
|
|
8149
8167
|
classification: zod.z.object({
|
|
8150
8168
|
labels: zod.z.array(AudioClassificationLabelSchema).readonly(),
|
|
8151
8169
|
inferenceMs: zod.z.number()
|
|
8152
8170
|
}).optional(),
|
|
8171
|
+
/** Whether the classifier ran on this window (D660). */
|
|
8172
|
+
classifyOutcome: AudioClassifyOutcomeSchema,
|
|
8153
8173
|
timestamp: zod.z.number()
|
|
8154
8174
|
});
|
|
8155
8175
|
var AudioAnalysisSettingsSchema = zod.z.object({
|
|
@@ -12699,8 +12719,22 @@ var LinkedDeviceSchema = zod.z.object({
|
|
|
12699
12719
|
* The `linked-devices` extension slot's editable value (D648): the operator's
|
|
12700
12720
|
* pick list, exactly what `_linkedDeviceIds` persists. Tree children are NOT
|
|
12701
12721
|
* in it — they are always linked and are not a pick.
|
|
12722
|
+
*
|
|
12723
|
+
* `trackedDeviceIds` (D655) is the tracked-event opt-in, exactly what
|
|
12724
|
+
* `_linkedDeviceTrackedIds` persists: which linked devices materialize a
|
|
12725
|
+
* synthetic tracked event on the camera. A read always carries it AS STORED
|
|
12726
|
+
* (an absent key reads as `[]`, which is what the resolver makes of it —
|
|
12727
|
+
* NONE). On a write it is optional: absent leaves the opt-in untouched, so a
|
|
12728
|
+
* card built before D655 cannot erase it by saving the pick list. A present
|
|
12729
|
+
* list REPLACES the opt-in; each id must be a pick, a device the camera links
|
|
12730
|
+
* by structure (the row's `impliedSources`: tree children, a picked
|
|
12731
|
+
* container's child) or already stored — so what was read can always be
|
|
12732
|
+
* written back unchanged, and a NEW opt-in outside the linked set is refused.
|
|
12702
12733
|
*/
|
|
12703
|
-
var LinkedDevicesSlotValueSchema = zod.z.object({
|
|
12734
|
+
var LinkedDevicesSlotValueSchema = zod.z.object({
|
|
12735
|
+
deviceIds: zod.z.array(zod.z.number().int().positive()),
|
|
12736
|
+
trackedDeviceIds: zod.z.array(zod.z.number().int().positive()).optional()
|
|
12737
|
+
});
|
|
12704
12738
|
/**
|
|
12705
12739
|
* The `linked-devices` slot — a camera's companion devices, owned by the
|
|
12706
12740
|
* device manager over `_linkedDeviceIds` (D648, D356). Any device may be a
|
|
@@ -12867,7 +12901,6 @@ var deviceManagerCapability = {
|
|
|
12867
12901
|
scope: "system",
|
|
12868
12902
|
mode: "singleton",
|
|
12869
12903
|
extensionSlots: [LINKED_DEVICES_SLOT],
|
|
12870
|
-
exposesDeviceSettings: true,
|
|
12871
12904
|
methods: {
|
|
12872
12905
|
/** Reserve (or re-resolve) a progressive numeric id for `(addonId, stableId)`.
|
|
12873
12906
|
* Idempotent: returns the existing id if one is already persisted for the
|
|
@@ -13374,8 +13407,8 @@ var deviceManagerCapability = {
|
|
|
13374
13407
|
* operator's persisted pick list (`mode` is always `manual` since D356:
|
|
13375
13408
|
* same-location devices are suggested by the picker, never linked on
|
|
13376
13409
|
* their own). Excludes the camera itself; deduped. The list is written by
|
|
13377
|
-
* the
|
|
13378
|
-
*
|
|
13410
|
+
* the `linked-devices` extension slot over `_linkedDeviceIds` (see the
|
|
13411
|
+
* module docblock).
|
|
13379
13412
|
*/
|
|
13380
13413
|
getLinkedDevices: method(zod.z.object({ deviceId: zod.z.number() }), zod.z.object({
|
|
13381
13414
|
mode: LinkedDevicesModeSchema,
|
|
@@ -20357,6 +20390,13 @@ var AudioEventSchema = zod.z.object({
|
|
|
20357
20390
|
originalClass: zod.z.string().optional(),
|
|
20358
20391
|
score: zod.z.number()
|
|
20359
20392
|
}).optional(),
|
|
20393
|
+
/**
|
|
20394
|
+
* Whether the classifier RAN on the window behind this row (D660). Absent
|
|
20395
|
+
* on rows written before D660 — unknown, NOT classified: until then a
|
|
20396
|
+
* window the analyzer's busy gate threw away was stored exactly like one
|
|
20397
|
+
* that heard nothing above the floor.
|
|
20398
|
+
*/
|
|
20399
|
+
classifyOutcome: AudioClassifyOutcomeSchema.optional(),
|
|
20360
20400
|
/** Populated by B5 (recording playback URL for this event). */
|
|
20361
20401
|
mediaUrl: zod.z.string().optional()
|
|
20362
20402
|
});
|
|
@@ -22765,7 +22805,14 @@ var pipelineExecutorCapability = {
|
|
|
22765
22805
|
*/
|
|
22766
22806
|
inferCached: method(zod.z.object({
|
|
22767
22807
|
stepId: zod.z.string(),
|
|
22768
|
-
frameId: zod.z.number().int()
|
|
22808
|
+
frameId: zod.z.number().int(),
|
|
22809
|
+
/**
|
|
22810
|
+
* The model to time — REQUIRED (D658). Without it the pool answered the
|
|
22811
|
+
* step's ACTIVE variant (the first loaded after boot), so a benchmark
|
|
22812
|
+
* of model B silently timed model A. Callers pass the `rootModelId`
|
|
22813
|
+
* their warmup `runPipeline` reported: the model that actually ran.
|
|
22814
|
+
*/
|
|
22815
|
+
modelId: zod.z.string().min(1)
|
|
22769
22816
|
}), zod.z.record(zod.z.string(), zod.z.unknown()), { kind: "mutation" }),
|
|
22770
22817
|
/**
|
|
22771
22818
|
* Release a cached frame from the Python pool's memory.
|
|
@@ -28095,28 +28142,6 @@ var SOURCE_CAP_CHANGED_AT_FIELD = {
|
|
|
28095
28142
|
};
|
|
28096
28143
|
/** Cap names whose presence in a device's bindings qualify it as a source. */
|
|
28097
28144
|
var SOURCE_CAPS = Object.keys(SOURCE_CAP_ACTIVE_FIELD);
|
|
28098
|
-
/**
|
|
28099
|
-
* Device `type` values (from `DeviceType`) that can host a binary/switch
|
|
28100
|
-
* source cap. Used by the camera's `device-multiselect` picker as the
|
|
28101
|
-
* CLIENT-SIDE filter, alongside `SOURCE_CAPS`.
|
|
28102
|
-
*
|
|
28103
|
-
* Why types and not caps alone: the shared picker filters
|
|
28104
|
-
* `deviceManager.listAll` rows client-side, and those rows carry only the
|
|
28105
|
-
* device's advertised `features` — NOT its registered cap list. On the live
|
|
28106
|
-
* cluster binary sensors and switches advertise EMPTY features (features
|
|
28107
|
-
* mirror only a handful of caps like `motion-trigger`), so a caps-only
|
|
28108
|
-
* filter matched against `features` would list nothing (the very bug this
|
|
28109
|
-
* replaced, which relied on the now-empty `getAllBindings`). Matching by
|
|
28110
|
-
* `type` is the reliable client-side signal; the union with `SOURCE_CAPS`
|
|
28111
|
-
* still captures any device that DOES advertise a source-cap feature.
|
|
28112
|
-
* `sensor` covers contact/motion/flood/gas/smoke/CO/vibration/tamper,
|
|
28113
|
-
* `switch` covers switches, `control` covers generic binary actuators.
|
|
28114
|
-
*/
|
|
28115
|
-
var SOURCE_DEVICE_TYPES = [
|
|
28116
|
-
"sensor",
|
|
28117
|
-
"switch",
|
|
28118
|
-
"control"
|
|
28119
|
-
];
|
|
28120
28145
|
/** True when a cap is a recognised binary/switch source. */
|
|
28121
28146
|
function isSourceCap(capName) {
|
|
28122
28147
|
return Object.prototype.hasOwnProperty.call(SOURCE_CAP_ACTIVE_FIELD, capName);
|
|
@@ -28262,7 +28287,6 @@ var doorbellCapability = {
|
|
|
28262
28287
|
kind: "wrapper",
|
|
28263
28288
|
defaultActive: false,
|
|
28264
28289
|
deviceTypes: [DeviceType.Button, DeviceType.Camera],
|
|
28265
|
-
exposesDeviceSettings: true,
|
|
28266
28290
|
extensionSlots: [DOORBELL_SOURCE_SLOT],
|
|
28267
28291
|
methods: {},
|
|
28268
28292
|
events: {
|
|
@@ -28371,7 +28395,17 @@ var ExtensionSlotStateSchema = zod.z.object({
|
|
|
28371
28395
|
projects: zod.z.string().nullable(),
|
|
28372
28396
|
activation: ExtensionSlotActivationSchema.nullable(),
|
|
28373
28397
|
value: ExtensionSlotValueSchema,
|
|
28374
|
-
sources: zod.z.array(ExtensionSlotSourceSchema)
|
|
28398
|
+
sources: zod.z.array(ExtensionSlotSourceSchema),
|
|
28399
|
+
/**
|
|
28400
|
+
* Devices the owner links to the host ON ITS OWN, by structure, and that
|
|
28401
|
+
* are therefore not in `value` (D655): a camera's device-tree children, and
|
|
28402
|
+
* the child a picked container stands for (D356 — a container is never a
|
|
28403
|
+
* pick, its children are). Read-only; the editor shows them and may offer
|
|
28404
|
+
* per-device options on them (the linked-devices tracked-event opt-in).
|
|
28405
|
+
* Absent when the owner links nothing beyond the picks, and from an owner
|
|
28406
|
+
* older than D655.
|
|
28407
|
+
*/
|
|
28408
|
+
impliedSources: zod.z.array(ExtensionSlotSourceSchema).optional()
|
|
28375
28409
|
});
|
|
28376
28410
|
/**
|
|
28377
28411
|
* A provider that could not answer `listSlots` at all. It could not name its
|
|
@@ -41567,7 +41601,8 @@ function createDeviceExtensionProvider(options) {
|
|
|
41567
41601
|
projects: EXTENSION_SLOTS[slot.slot].descriptor.projects ?? null,
|
|
41568
41602
|
activation: listing.activation,
|
|
41569
41603
|
value: listing.value,
|
|
41570
|
-
sources: [...listing.sources]
|
|
41604
|
+
sources: [...listing.sources],
|
|
41605
|
+
...listing.impliedSources !== void 0 ? { impliedSources: [...listing.impliedSources] } : {}
|
|
41571
41606
|
});
|
|
41572
41607
|
}
|
|
41573
41608
|
return rows;
|
|
@@ -46126,12 +46161,6 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
46126
46161
|
addonId: null,
|
|
46127
46162
|
access: "create"
|
|
46128
46163
|
},
|
|
46129
|
-
"deviceManager.applyDeviceSettingsPatch": {
|
|
46130
|
-
capName: "device-manager",
|
|
46131
|
-
capScope: "system",
|
|
46132
|
-
addonId: null,
|
|
46133
|
-
access: "create"
|
|
46134
|
-
},
|
|
46135
46164
|
"deviceManager.applyInitialMeta": {
|
|
46136
46165
|
capName: "device-manager",
|
|
46137
46166
|
capScope: "system",
|
|
@@ -46234,12 +46263,6 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
46234
46263
|
addonId: null,
|
|
46235
46264
|
access: "view"
|
|
46236
46265
|
},
|
|
46237
|
-
"deviceManager.getDeviceLiveContribution": {
|
|
46238
|
-
capName: "device-manager",
|
|
46239
|
-
capScope: "system",
|
|
46240
|
-
addonId: null,
|
|
46241
|
-
access: "view"
|
|
46242
|
-
},
|
|
46243
46266
|
"deviceManager.getDeviceLiveInfoAggregate": {
|
|
46244
46267
|
capName: "device-manager",
|
|
46245
46268
|
capScope: "system",
|
|
@@ -46252,12 +46275,6 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
46252
46275
|
addonId: null,
|
|
46253
46276
|
access: "view"
|
|
46254
46277
|
},
|
|
46255
|
-
"deviceManager.getDeviceSettingsContribution": {
|
|
46256
|
-
capName: "device-manager",
|
|
46257
|
-
capScope: "system",
|
|
46258
|
-
addonId: null,
|
|
46259
|
-
access: "view"
|
|
46260
|
-
},
|
|
46261
46278
|
"deviceManager.getDeviceStatusAggregate": {
|
|
46262
46279
|
capName: "device-manager",
|
|
46263
46280
|
capScope: "system",
|
|
@@ -46762,24 +46779,6 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
46762
46779
|
addonId: null,
|
|
46763
46780
|
access: "view"
|
|
46764
46781
|
},
|
|
46765
|
-
"doorbell.applyDeviceSettingsPatch": {
|
|
46766
|
-
capName: "doorbell",
|
|
46767
|
-
capScope: "device",
|
|
46768
|
-
addonId: null,
|
|
46769
|
-
access: "create"
|
|
46770
|
-
},
|
|
46771
|
-
"doorbell.getDeviceLiveContribution": {
|
|
46772
|
-
capName: "doorbell",
|
|
46773
|
-
capScope: "device",
|
|
46774
|
-
addonId: null,
|
|
46775
|
-
access: "view"
|
|
46776
|
-
},
|
|
46777
|
-
"doorbell.getDeviceSettingsContribution": {
|
|
46778
|
-
capName: "doorbell",
|
|
46779
|
-
capScope: "device",
|
|
46780
|
-
addonId: null,
|
|
46781
|
-
access: "view"
|
|
46782
|
-
},
|
|
46783
46782
|
"doorbell.getStatus": {
|
|
46784
46783
|
capName: "doorbell",
|
|
46785
46784
|
capScope: "device",
|
|
@@ -55326,12 +55325,6 @@ Object.defineProperty(exports, "SOURCE_CAPS", {
|
|
|
55326
55325
|
return SOURCE_CAPS;
|
|
55327
55326
|
}
|
|
55328
55327
|
});
|
|
55329
|
-
Object.defineProperty(exports, "SOURCE_DEVICE_TYPES", {
|
|
55330
|
-
enumerable: true,
|
|
55331
|
-
get: function() {
|
|
55332
|
-
return SOURCE_DEVICE_TYPES;
|
|
55333
|
-
}
|
|
55334
|
-
});
|
|
55335
55328
|
Object.defineProperty(exports, "STORAGE_ACCESS_FALLBACK", {
|
|
55336
55329
|
enumerable: true,
|
|
55337
55330
|
get: function() {
|
|
@@ -691,7 +691,7 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
691
691
|
return EventCategory;
|
|
692
692
|
}({});
|
|
693
693
|
//#endregion
|
|
694
|
-
//#region ../types/dist/sleep-
|
|
694
|
+
//#region ../types/dist/sleep-DC-wdyeS.mjs
|
|
695
695
|
/**
|
|
696
696
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
697
697
|
* window to float samples (D455).
|
|
@@ -8144,12 +8144,32 @@ var AudioClassificationLabelSchema = z.object({
|
|
|
8144
8144
|
originalClass: z.string().optional(),
|
|
8145
8145
|
score: z.number()
|
|
8146
8146
|
});
|
|
8147
|
+
/**
|
|
8148
|
+
* Did the classifier RUN on this window? (D660)
|
|
8149
|
+
*
|
|
8150
|
+
* `classified` with no labels means the model heard nothing above the
|
|
8151
|
+
* camera's floor. `not-classified` means nobody listened — and until D660 the
|
|
8152
|
+
* two were the same shape (`classification` absent), so a window the global
|
|
8153
|
+
* busy gate threw away read downstream exactly like a quiet one (D393).
|
|
8154
|
+
*/
|
|
8155
|
+
var AudioClassifyOutcomeSchema = z.discriminatedUnion("state", [z.object({ state: z.literal("classified") }), z.object({
|
|
8156
|
+
state: z.literal("not-classified"),
|
|
8157
|
+
reason: z.enum([
|
|
8158
|
+
"superseded",
|
|
8159
|
+
"error",
|
|
8160
|
+
"timeout",
|
|
8161
|
+
"disposed"
|
|
8162
|
+
])
|
|
8163
|
+
})]);
|
|
8147
8164
|
var AudioAnalysisResultSchema = z.object({
|
|
8148
8165
|
level: AudioLevelSchema,
|
|
8166
|
+
/** Labels at or above the camera's floor. Absent = none — read `classifyOutcome` to know whether the model ran at all. */
|
|
8149
8167
|
classification: z.object({
|
|
8150
8168
|
labels: z.array(AudioClassificationLabelSchema).readonly(),
|
|
8151
8169
|
inferenceMs: z.number()
|
|
8152
8170
|
}).optional(),
|
|
8171
|
+
/** Whether the classifier ran on this window (D660). */
|
|
8172
|
+
classifyOutcome: AudioClassifyOutcomeSchema,
|
|
8153
8173
|
timestamp: z.number()
|
|
8154
8174
|
});
|
|
8155
8175
|
var AudioAnalysisSettingsSchema = z.object({
|
|
@@ -12699,8 +12719,22 @@ var LinkedDeviceSchema = z.object({
|
|
|
12699
12719
|
* The `linked-devices` extension slot's editable value (D648): the operator's
|
|
12700
12720
|
* pick list, exactly what `_linkedDeviceIds` persists. Tree children are NOT
|
|
12701
12721
|
* in it — they are always linked and are not a pick.
|
|
12722
|
+
*
|
|
12723
|
+
* `trackedDeviceIds` (D655) is the tracked-event opt-in, exactly what
|
|
12724
|
+
* `_linkedDeviceTrackedIds` persists: which linked devices materialize a
|
|
12725
|
+
* synthetic tracked event on the camera. A read always carries it AS STORED
|
|
12726
|
+
* (an absent key reads as `[]`, which is what the resolver makes of it —
|
|
12727
|
+
* NONE). On a write it is optional: absent leaves the opt-in untouched, so a
|
|
12728
|
+
* card built before D655 cannot erase it by saving the pick list. A present
|
|
12729
|
+
* list REPLACES the opt-in; each id must be a pick, a device the camera links
|
|
12730
|
+
* by structure (the row's `impliedSources`: tree children, a picked
|
|
12731
|
+
* container's child) or already stored — so what was read can always be
|
|
12732
|
+
* written back unchanged, and a NEW opt-in outside the linked set is refused.
|
|
12702
12733
|
*/
|
|
12703
|
-
var LinkedDevicesSlotValueSchema = z.object({
|
|
12734
|
+
var LinkedDevicesSlotValueSchema = z.object({
|
|
12735
|
+
deviceIds: z.array(z.number().int().positive()),
|
|
12736
|
+
trackedDeviceIds: z.array(z.number().int().positive()).optional()
|
|
12737
|
+
});
|
|
12704
12738
|
/**
|
|
12705
12739
|
* The `linked-devices` slot — a camera's companion devices, owned by the
|
|
12706
12740
|
* device manager over `_linkedDeviceIds` (D648, D356). Any device may be a
|
|
@@ -12867,7 +12901,6 @@ var deviceManagerCapability = {
|
|
|
12867
12901
|
scope: "system",
|
|
12868
12902
|
mode: "singleton",
|
|
12869
12903
|
extensionSlots: [LINKED_DEVICES_SLOT],
|
|
12870
|
-
exposesDeviceSettings: true,
|
|
12871
12904
|
methods: {
|
|
12872
12905
|
/** Reserve (or re-resolve) a progressive numeric id for `(addonId, stableId)`.
|
|
12873
12906
|
* Idempotent: returns the existing id if one is already persisted for the
|
|
@@ -13374,8 +13407,8 @@ var deviceManagerCapability = {
|
|
|
13374
13407
|
* operator's persisted pick list (`mode` is always `manual` since D356:
|
|
13375
13408
|
* same-location devices are suggested by the picker, never linked on
|
|
13376
13409
|
* their own). Excludes the camera itself; deduped. The list is written by
|
|
13377
|
-
* the
|
|
13378
|
-
*
|
|
13410
|
+
* the `linked-devices` extension slot over `_linkedDeviceIds` (see the
|
|
13411
|
+
* module docblock).
|
|
13379
13412
|
*/
|
|
13380
13413
|
getLinkedDevices: method(z.object({ deviceId: z.number() }), z.object({
|
|
13381
13414
|
mode: LinkedDevicesModeSchema,
|
|
@@ -20357,6 +20390,13 @@ var AudioEventSchema = z.object({
|
|
|
20357
20390
|
originalClass: z.string().optional(),
|
|
20358
20391
|
score: z.number()
|
|
20359
20392
|
}).optional(),
|
|
20393
|
+
/**
|
|
20394
|
+
* Whether the classifier RAN on the window behind this row (D660). Absent
|
|
20395
|
+
* on rows written before D660 — unknown, NOT classified: until then a
|
|
20396
|
+
* window the analyzer's busy gate threw away was stored exactly like one
|
|
20397
|
+
* that heard nothing above the floor.
|
|
20398
|
+
*/
|
|
20399
|
+
classifyOutcome: AudioClassifyOutcomeSchema.optional(),
|
|
20360
20400
|
/** Populated by B5 (recording playback URL for this event). */
|
|
20361
20401
|
mediaUrl: z.string().optional()
|
|
20362
20402
|
});
|
|
@@ -22765,7 +22805,14 @@ var pipelineExecutorCapability = {
|
|
|
22765
22805
|
*/
|
|
22766
22806
|
inferCached: method(z.object({
|
|
22767
22807
|
stepId: z.string(),
|
|
22768
|
-
frameId: z.number().int()
|
|
22808
|
+
frameId: z.number().int(),
|
|
22809
|
+
/**
|
|
22810
|
+
* The model to time — REQUIRED (D658). Without it the pool answered the
|
|
22811
|
+
* step's ACTIVE variant (the first loaded after boot), so a benchmark
|
|
22812
|
+
* of model B silently timed model A. Callers pass the `rootModelId`
|
|
22813
|
+
* their warmup `runPipeline` reported: the model that actually ran.
|
|
22814
|
+
*/
|
|
22815
|
+
modelId: z.string().min(1)
|
|
22769
22816
|
}), z.record(z.string(), z.unknown()), { kind: "mutation" }),
|
|
22770
22817
|
/**
|
|
22771
22818
|
* Release a cached frame from the Python pool's memory.
|
|
@@ -28095,28 +28142,6 @@ var SOURCE_CAP_CHANGED_AT_FIELD = {
|
|
|
28095
28142
|
};
|
|
28096
28143
|
/** Cap names whose presence in a device's bindings qualify it as a source. */
|
|
28097
28144
|
var SOURCE_CAPS = Object.keys(SOURCE_CAP_ACTIVE_FIELD);
|
|
28098
|
-
/**
|
|
28099
|
-
* Device `type` values (from `DeviceType`) that can host a binary/switch
|
|
28100
|
-
* source cap. Used by the camera's `device-multiselect` picker as the
|
|
28101
|
-
* CLIENT-SIDE filter, alongside `SOURCE_CAPS`.
|
|
28102
|
-
*
|
|
28103
|
-
* Why types and not caps alone: the shared picker filters
|
|
28104
|
-
* `deviceManager.listAll` rows client-side, and those rows carry only the
|
|
28105
|
-
* device's advertised `features` — NOT its registered cap list. On the live
|
|
28106
|
-
* cluster binary sensors and switches advertise EMPTY features (features
|
|
28107
|
-
* mirror only a handful of caps like `motion-trigger`), so a caps-only
|
|
28108
|
-
* filter matched against `features` would list nothing (the very bug this
|
|
28109
|
-
* replaced, which relied on the now-empty `getAllBindings`). Matching by
|
|
28110
|
-
* `type` is the reliable client-side signal; the union with `SOURCE_CAPS`
|
|
28111
|
-
* still captures any device that DOES advertise a source-cap feature.
|
|
28112
|
-
* `sensor` covers contact/motion/flood/gas/smoke/CO/vibration/tamper,
|
|
28113
|
-
* `switch` covers switches, `control` covers generic binary actuators.
|
|
28114
|
-
*/
|
|
28115
|
-
var SOURCE_DEVICE_TYPES = [
|
|
28116
|
-
"sensor",
|
|
28117
|
-
"switch",
|
|
28118
|
-
"control"
|
|
28119
|
-
];
|
|
28120
28145
|
/** True when a cap is a recognised binary/switch source. */
|
|
28121
28146
|
function isSourceCap(capName) {
|
|
28122
28147
|
return Object.prototype.hasOwnProperty.call(SOURCE_CAP_ACTIVE_FIELD, capName);
|
|
@@ -28262,7 +28287,6 @@ var doorbellCapability = {
|
|
|
28262
28287
|
kind: "wrapper",
|
|
28263
28288
|
defaultActive: false,
|
|
28264
28289
|
deviceTypes: [DeviceType.Button, DeviceType.Camera],
|
|
28265
|
-
exposesDeviceSettings: true,
|
|
28266
28290
|
extensionSlots: [DOORBELL_SOURCE_SLOT],
|
|
28267
28291
|
methods: {},
|
|
28268
28292
|
events: {
|
|
@@ -28371,7 +28395,17 @@ var ExtensionSlotStateSchema = z.object({
|
|
|
28371
28395
|
projects: z.string().nullable(),
|
|
28372
28396
|
activation: ExtensionSlotActivationSchema.nullable(),
|
|
28373
28397
|
value: ExtensionSlotValueSchema,
|
|
28374
|
-
sources: z.array(ExtensionSlotSourceSchema)
|
|
28398
|
+
sources: z.array(ExtensionSlotSourceSchema),
|
|
28399
|
+
/**
|
|
28400
|
+
* Devices the owner links to the host ON ITS OWN, by structure, and that
|
|
28401
|
+
* are therefore not in `value` (D655): a camera's device-tree children, and
|
|
28402
|
+
* the child a picked container stands for (D356 — a container is never a
|
|
28403
|
+
* pick, its children are). Read-only; the editor shows them and may offer
|
|
28404
|
+
* per-device options on them (the linked-devices tracked-event opt-in).
|
|
28405
|
+
* Absent when the owner links nothing beyond the picks, and from an owner
|
|
28406
|
+
* older than D655.
|
|
28407
|
+
*/
|
|
28408
|
+
impliedSources: z.array(ExtensionSlotSourceSchema).optional()
|
|
28375
28409
|
});
|
|
28376
28410
|
/**
|
|
28377
28411
|
* A provider that could not answer `listSlots` at all. It could not name its
|
|
@@ -41567,7 +41601,8 @@ function createDeviceExtensionProvider(options) {
|
|
|
41567
41601
|
projects: EXTENSION_SLOTS[slot.slot].descriptor.projects ?? null,
|
|
41568
41602
|
activation: listing.activation,
|
|
41569
41603
|
value: listing.value,
|
|
41570
|
-
sources: [...listing.sources]
|
|
41604
|
+
sources: [...listing.sources],
|
|
41605
|
+
...listing.impliedSources !== void 0 ? { impliedSources: [...listing.impliedSources] } : {}
|
|
41571
41606
|
});
|
|
41572
41607
|
}
|
|
41573
41608
|
return rows;
|
|
@@ -46126,12 +46161,6 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
46126
46161
|
addonId: null,
|
|
46127
46162
|
access: "create"
|
|
46128
46163
|
},
|
|
46129
|
-
"deviceManager.applyDeviceSettingsPatch": {
|
|
46130
|
-
capName: "device-manager",
|
|
46131
|
-
capScope: "system",
|
|
46132
|
-
addonId: null,
|
|
46133
|
-
access: "create"
|
|
46134
|
-
},
|
|
46135
46164
|
"deviceManager.applyInitialMeta": {
|
|
46136
46165
|
capName: "device-manager",
|
|
46137
46166
|
capScope: "system",
|
|
@@ -46234,12 +46263,6 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
46234
46263
|
addonId: null,
|
|
46235
46264
|
access: "view"
|
|
46236
46265
|
},
|
|
46237
|
-
"deviceManager.getDeviceLiveContribution": {
|
|
46238
|
-
capName: "device-manager",
|
|
46239
|
-
capScope: "system",
|
|
46240
|
-
addonId: null,
|
|
46241
|
-
access: "view"
|
|
46242
|
-
},
|
|
46243
46266
|
"deviceManager.getDeviceLiveInfoAggregate": {
|
|
46244
46267
|
capName: "device-manager",
|
|
46245
46268
|
capScope: "system",
|
|
@@ -46252,12 +46275,6 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
46252
46275
|
addonId: null,
|
|
46253
46276
|
access: "view"
|
|
46254
46277
|
},
|
|
46255
|
-
"deviceManager.getDeviceSettingsContribution": {
|
|
46256
|
-
capName: "device-manager",
|
|
46257
|
-
capScope: "system",
|
|
46258
|
-
addonId: null,
|
|
46259
|
-
access: "view"
|
|
46260
|
-
},
|
|
46261
46278
|
"deviceManager.getDeviceStatusAggregate": {
|
|
46262
46279
|
capName: "device-manager",
|
|
46263
46280
|
capScope: "system",
|
|
@@ -46762,24 +46779,6 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
46762
46779
|
addonId: null,
|
|
46763
46780
|
access: "view"
|
|
46764
46781
|
},
|
|
46765
|
-
"doorbell.applyDeviceSettingsPatch": {
|
|
46766
|
-
capName: "doorbell",
|
|
46767
|
-
capScope: "device",
|
|
46768
|
-
addonId: null,
|
|
46769
|
-
access: "create"
|
|
46770
|
-
},
|
|
46771
|
-
"doorbell.getDeviceLiveContribution": {
|
|
46772
|
-
capName: "doorbell",
|
|
46773
|
-
capScope: "device",
|
|
46774
|
-
addonId: null,
|
|
46775
|
-
access: "view"
|
|
46776
|
-
},
|
|
46777
|
-
"doorbell.getDeviceSettingsContribution": {
|
|
46778
|
-
capName: "doorbell",
|
|
46779
|
-
capScope: "device",
|
|
46780
|
-
addonId: null,
|
|
46781
|
-
access: "view"
|
|
46782
|
-
},
|
|
46783
46782
|
"doorbell.getStatus": {
|
|
46784
46783
|
capName: "doorbell",
|
|
46785
46784
|
capScope: "device",
|
|
@@ -55104,4 +55103,4 @@ function enumerateInferenceDevices(hw) {
|
|
|
55104
55103
|
return out;
|
|
55105
55104
|
}
|
|
55106
55105
|
//#endregion
|
|
55107
|
-
export {
|
|
55106
|
+
export { decodeVectorBase64 as $, scoreRuntimes as $t, ScopedTokenSchema as A, emitDownForOwnedCaps as An, locationIconKey as At, authProviderCapability as B, resolveCapMount as Bn, objectInputDeclaresAddonId as Bt, RECORDING_SOURCE_CAMSTACK_ADDON as C, ReadinessRegistry as Cn, isSourceCap as Ct, SOURCE_CAPS as D, asNumber as Dn, legacyModeOf as Dt, RecordingStatusSchema as E, asJsonObject as En, legacyAutoLinkIds as Et, UserRecordSchema as F, isEvent as Fn, mayWriteToLocation as Ft, cameraGridLayoutCapability as G, ptzAutotrackCapability as Gt, bareAddonId as H, sleep as Hn, parseStreamParamsFormPatch as Ht, addonPagesCapability as I, nodePin as In, metricsProviderCapability as It, coreBlockIdFromAddonId as J, resolveLocationMode as Jt, collectSecretConfigKeys as K, reducePoints as Kt, addonSettingsCapability as L, parseJsonObject as Ln, modeMayWrite as Lt, StorageLocationModeSchema as M, expandCapMethods as Mn, logLevelAtMost as Mt, StorageLocationTypeSchema as N, hydrateSchema as Nn, looseSchema as Nt, STORAGE_ACCESS_FALLBACK as O, asString as On, lifecycleJobSchema as Ot, StorageMigrationJobSchema as P, isDeviceConfigCap as Pn, mayReadLocation as Pt, declarationOwnerNodeId as Q, scopesAllowDeviceCap as Qt, addonWidgetsCapability as R, parseJsonUnknown as Rn, motionCapability as Rt, MOTION_CLOSE_AFTER_MS as S, DeviceType as Sn, isSameAddonId as St, RUNTIME_DEFAULTS as T, WELL_KNOWN_TAB_MAP as Tn, kebabToCamel as Tt, batteryCapability as U, EventCategory as Un, platformProbeCapability as Ut, backupCapability as V, scopeKey as Vn, objectInputDeclaresRequiredDeviceId as Vt, buildStreamParamsConfigSchema as W, procedureAuthKey as Wt, createDeviceExtensionProvider as X, runtimeStatePolicyFor as Xt, coreBlocksCapability as Y, resolveMethodAuth as Yt, dataStoreProviderCapability as Z, scopesAllowAddon as Zt, LOG_LEVEL_RANK as _, DATAPLANE_SECRET_HEADER as _n, gbToBytes as _t, BatteryStatusSchema as a, storageOccupancyCapability as an, deviceStatusCapability as at, METHOD_ACCESS_MAP as b, DeviceFeature as bn, isLocationEnabled as bt, CORE_BLOCKS_ADDON_ID as c, streamQualityLabel as cn, enumerateItemArrayFields as ct, DAY_NAMES as d, vectorIndexDimConflictError as dn, evictionPolicyOfLocation as dt, settingsStoreCapability as en, defineExtensionSlotProvider as et, DEFAULT_FIRST_SIGHTING_FRESHNESS_MS as f, vectorStoreCapability as fn, expandContainer as ft, FIRST_LEVEL_MACRO_CLASSES as g, BaseAddon as gn, formatMinutes as gt, DeviceStatusSchema as h, buildFfmpegArgs as hn, foldSnapshotByFunction as ht, BaseDevice as i, storageMigrationCapability as in, deviceStateCapability as it, StorageCleanupJobSchema as j, emitReadiness as jn, logDestinationCapability as jt, STREAM_PROFILE_META as k, createEvent as kn, localNetworkCapability as kt, CORE_BLOCK_ADDON_PREFIX as l, userManagementCapability as ln, enumerateSchemaFields as lt, DeclaredDevices as m, errMsg as mn, filesystemBrowseCapability as mt, AlertSchema as n, snapshotCapability as nn, deviceExtensionCapability as nt, CAMERA_SWITCH_ORDER as o, storageProviderCapability as on, doorbellCapability as ot, DERIVED_CAMERA_SILENCED_CAP_NAMES as p, withLocationMode as pn, extractNestedAddonId as pt, coreBlockAddonId as q, resolveBucketMs as qt, ApiKeyRecordSchema as r, storageCapability as rn, deviceManagerCapability as rt, CAP_NAMES_WITH_STATUS as s, streamCatalogCapability as sn, enumerateInferenceDevices as st, ALL_CAPABILITY_DEFINITIONS as t, siteZoneKey as tn, deriveBatteryPresence as tt, CoreBlockSchema as u, vectorDimFromBase64 as un, evaluateSensorEdge as ut, LegacyStorageLocationDefaultSchema as v, DEVICE_SETTINGS_CONTRIBUTION_METHODS as vn, isArrayOutputSchema as vt, REDACTED_SECRET as w, ReadinessTimeoutError as wn, isVoidInput as wt, MINUTES_PER_DAY as x, DeviceRole as xn, isObjectInput as xt, LocationIconIdSchema as y, DEVICE_STATUS_METHOD as yn, isCollectionArrayMethod as yt, alertsCapability as z, readinessKey as zn, normalizeUnit as zt };
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
2
|
const require_chunk = require("./chunk-Cek0wNdY.js");
|
|
3
|
-
const require_dist = require("./dist-
|
|
3
|
+
const require_dist = require("./dist-D3ch99WD.js");
|
|
4
4
|
const require_builtins_alerts_alerts_addon = require("./builtins/alerts/alerts.addon.js");
|
|
5
5
|
require("./builtins/alerts/index.js");
|
|
6
6
|
const require_formatter = require("./formatter-DqAKDlvN.js");
|
package/dist/index.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { a as __toCommonJS, i as __require, n as __esmMin, o as __toESM$1, r as __exportAll, t as __commonJSMin$1 } from "./chunk-CNf5ZN-e.mjs";
|
|
2
|
-
import {
|
|
2
|
+
import { An as emitDownForOwnedCaps, Bn as resolveCapMount, Bt as objectInputDeclaresAddonId, Cn as ReadinessRegistry, Dn as asNumber, En as asJsonObject$1, L as addonSettingsCapability, Ln as parseJsonObject, Mn as expandCapMethods, Mt as logLevelAtMost, Nt as looseSchema, On as asString$1, Ot as lifecycleJobSchema, Qt as scopesAllowDeviceCap, Rn as parseJsonUnknown, T as RUNTIME_DEFAULTS, Tt as kebabToCamel, Un as EventCategory$1, Vn as scopeKey, Vt as objectInputDeclaresRequiredDeviceId, Wt as procedureAuthKey, Yt as resolveMethodAuth, Zt as scopesAllowAddon, _ as LOG_LEVEL_RANK, _n as DATAPLANE_SECRET_HEADER$1, b as METHOD_ACCESS_MAP, kn as createEvent, mn as errMsg$1, pt as extractNestedAddonId, t as ALL_CAPABILITY_DEFINITIONS, vn as DEVICE_SETTINGS_CONTRIBUTION_METHODS, vt as isArrayOutputSchema, wn as ReadinessTimeoutError, wt as isVoidInput, xt as isObjectInput, yn as DEVICE_STATUS_METHOD, yt as isCollectionArrayMethod, zn as readinessKey } from "./dist-DdfJa8Zn.mjs";
|
|
3
3
|
import { AlertCenterAddon } from "./builtins/alerts/alerts.addon.mjs";
|
|
4
4
|
import "./builtins/alerts/index.mjs";
|
|
5
5
|
import { t as formatLogLine } from "./formatter-B7qW8bPJ.mjs";
|
package/package.json
CHANGED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { ProviderContext } from './device-provider-context.js';
|
|
2
|
-
/** One device-store-backed section: the keys it owns + how to persist them. */
|
|
3
|
-
export interface DeviceStoreSection {
|
|
4
|
-
/** Reserved config keys this section owns (must not reach the driver). */
|
|
5
|
-
readonly keys: readonly string[];
|
|
6
|
-
/** Persist this section's slice of a save into the device-store blob. */
|
|
7
|
-
apply(pctx: Pick<ProviderContext, 'settings'>, deviceId: number, patch: Record<string, unknown>): Promise<unknown>;
|
|
8
|
-
}
|
|
9
|
-
/** The device-manager's device-store-backed sections. Add an entry to extend. */
|
|
10
|
-
export declare const DEVICE_STORE_SECTIONS: readonly DeviceStoreSection[];
|
|
11
|
-
/** Result of splitting a `device-manager`-writer patch by persistence target. */
|
|
12
|
-
export interface DeviceStoreSplit {
|
|
13
|
-
/** Per-section slices that persist to the device-store blob. */
|
|
14
|
-
readonly storeGroups: ReadonlyArray<{
|
|
15
|
-
section: DeviceStoreSection;
|
|
16
|
-
patch: Record<string, unknown>;
|
|
17
|
-
}>;
|
|
18
|
-
/** The remaining keys, destined for the device driver's own config. */
|
|
19
|
-
readonly driverPatch: Record<string, unknown>;
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* Split a `writerCapName: 'device-manager'` patch into device-store slices
|
|
23
|
-
* (one per matching registered section) and the leftover driver patch.
|
|
24
|
-
* Generic — consults {@link DEVICE_STORE_SECTIONS}, no hardcoded key list.
|
|
25
|
-
*/
|
|
26
|
-
export declare function splitDeviceStoreKeys(patch: Record<string, unknown>): DeviceStoreSplit;
|