@camstack/system 1.2.305 → 1.2.306
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-Df1NhKxm.mjs → dist-CLfJMMdf.mjs} +40 -68
- package/dist/{dist-BK4iP6ab.js → dist-vecbhDzu.js} +39 -73
- package/dist/index.js +1 -1
- package/dist/index.mjs +1 -1
- package/dist/{retired-settings-keys-DwWMph6F.js → retired-settings-keys-Bm2p0Rot.js} +1 -1
- package/dist/{retired-settings-keys-dC4ckbXJ.mjs → retired-settings-keys-C1ODcdnr.mjs} +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-CLfJMMdf.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).
|
|
@@ -12699,8 +12699,22 @@ var LinkedDeviceSchema = z.object({
|
|
|
12699
12699
|
* The `linked-devices` extension slot's editable value (D648): the operator's
|
|
12700
12700
|
* pick list, exactly what `_linkedDeviceIds` persists. Tree children are NOT
|
|
12701
12701
|
* in it — they are always linked and are not a pick.
|
|
12702
|
+
*
|
|
12703
|
+
* `trackedDeviceIds` (D655) is the tracked-event opt-in, exactly what
|
|
12704
|
+
* `_linkedDeviceTrackedIds` persists: which linked devices materialize a
|
|
12705
|
+
* synthetic tracked event on the camera. A read always carries it AS STORED
|
|
12706
|
+
* (an absent key reads as `[]`, which is what the resolver makes of it —
|
|
12707
|
+
* NONE). On a write it is optional: absent leaves the opt-in untouched, so a
|
|
12708
|
+
* card built before D655 cannot erase it by saving the pick list. A present
|
|
12709
|
+
* list REPLACES the opt-in; each id must be a pick, a device the camera links
|
|
12710
|
+
* by structure (the row's `impliedSources`: tree children, a picked
|
|
12711
|
+
* container's child) or already stored — so what was read can always be
|
|
12712
|
+
* written back unchanged, and a NEW opt-in outside the linked set is refused.
|
|
12702
12713
|
*/
|
|
12703
|
-
var LinkedDevicesSlotValueSchema = z.object({
|
|
12714
|
+
var LinkedDevicesSlotValueSchema = z.object({
|
|
12715
|
+
deviceIds: z.array(z.number().int().positive()),
|
|
12716
|
+
trackedDeviceIds: z.array(z.number().int().positive()).optional()
|
|
12717
|
+
});
|
|
12704
12718
|
/**
|
|
12705
12719
|
* The `linked-devices` slot — a camera's companion devices, owned by the
|
|
12706
12720
|
* device manager over `_linkedDeviceIds` (D648, D356). Any device may be a
|
|
@@ -12867,7 +12881,6 @@ var deviceManagerCapability = {
|
|
|
12867
12881
|
scope: "system",
|
|
12868
12882
|
mode: "singleton",
|
|
12869
12883
|
extensionSlots: [LINKED_DEVICES_SLOT],
|
|
12870
|
-
exposesDeviceSettings: true,
|
|
12871
12884
|
methods: {
|
|
12872
12885
|
/** Reserve (or re-resolve) a progressive numeric id for `(addonId, stableId)`.
|
|
12873
12886
|
* Idempotent: returns the existing id if one is already persisted for the
|
|
@@ -13374,8 +13387,8 @@ var deviceManagerCapability = {
|
|
|
13374
13387
|
* operator's persisted pick list (`mode` is always `manual` since D356:
|
|
13375
13388
|
* same-location devices are suggested by the picker, never linked on
|
|
13376
13389
|
* their own). Excludes the camera itself; deduped. The list is written by
|
|
13377
|
-
* the
|
|
13378
|
-
*
|
|
13390
|
+
* the `linked-devices` extension slot over `_linkedDeviceIds` (see the
|
|
13391
|
+
* module docblock).
|
|
13379
13392
|
*/
|
|
13380
13393
|
getLinkedDevices: method(z.object({ deviceId: z.number() }), z.object({
|
|
13381
13394
|
mode: LinkedDevicesModeSchema,
|
|
@@ -22765,7 +22778,14 @@ var pipelineExecutorCapability = {
|
|
|
22765
22778
|
*/
|
|
22766
22779
|
inferCached: method(z.object({
|
|
22767
22780
|
stepId: z.string(),
|
|
22768
|
-
frameId: z.number().int()
|
|
22781
|
+
frameId: z.number().int(),
|
|
22782
|
+
/**
|
|
22783
|
+
* The model to time — REQUIRED (D658). Without it the pool answered the
|
|
22784
|
+
* step's ACTIVE variant (the first loaded after boot), so a benchmark
|
|
22785
|
+
* of model B silently timed model A. Callers pass the `rootModelId`
|
|
22786
|
+
* their warmup `runPipeline` reported: the model that actually ran.
|
|
22787
|
+
*/
|
|
22788
|
+
modelId: z.string().min(1)
|
|
22769
22789
|
}), z.record(z.string(), z.unknown()), { kind: "mutation" }),
|
|
22770
22790
|
/**
|
|
22771
22791
|
* Release a cached frame from the Python pool's memory.
|
|
@@ -28095,28 +28115,6 @@ var SOURCE_CAP_CHANGED_AT_FIELD = {
|
|
|
28095
28115
|
};
|
|
28096
28116
|
/** Cap names whose presence in a device's bindings qualify it as a source. */
|
|
28097
28117
|
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
28118
|
/** True when a cap is a recognised binary/switch source. */
|
|
28121
28119
|
function isSourceCap(capName) {
|
|
28122
28120
|
return Object.prototype.hasOwnProperty.call(SOURCE_CAP_ACTIVE_FIELD, capName);
|
|
@@ -28262,7 +28260,6 @@ var doorbellCapability = {
|
|
|
28262
28260
|
kind: "wrapper",
|
|
28263
28261
|
defaultActive: false,
|
|
28264
28262
|
deviceTypes: [DeviceType.Button, DeviceType.Camera],
|
|
28265
|
-
exposesDeviceSettings: true,
|
|
28266
28263
|
extensionSlots: [DOORBELL_SOURCE_SLOT],
|
|
28267
28264
|
methods: {},
|
|
28268
28265
|
events: {
|
|
@@ -28371,7 +28368,17 @@ var ExtensionSlotStateSchema = z.object({
|
|
|
28371
28368
|
projects: z.string().nullable(),
|
|
28372
28369
|
activation: ExtensionSlotActivationSchema.nullable(),
|
|
28373
28370
|
value: ExtensionSlotValueSchema,
|
|
28374
|
-
sources: z.array(ExtensionSlotSourceSchema)
|
|
28371
|
+
sources: z.array(ExtensionSlotSourceSchema),
|
|
28372
|
+
/**
|
|
28373
|
+
* Devices the owner links to the host ON ITS OWN, by structure, and that
|
|
28374
|
+
* are therefore not in `value` (D655): a camera's device-tree children, and
|
|
28375
|
+
* the child a picked container stands for (D356 — a container is never a
|
|
28376
|
+
* pick, its children are). Read-only; the editor shows them and may offer
|
|
28377
|
+
* per-device options on them (the linked-devices tracked-event opt-in).
|
|
28378
|
+
* Absent when the owner links nothing beyond the picks, and from an owner
|
|
28379
|
+
* older than D655.
|
|
28380
|
+
*/
|
|
28381
|
+
impliedSources: z.array(ExtensionSlotSourceSchema).optional()
|
|
28375
28382
|
});
|
|
28376
28383
|
/**
|
|
28377
28384
|
* A provider that could not answer `listSlots` at all. It could not name its
|
|
@@ -41567,7 +41574,8 @@ function createDeviceExtensionProvider(options) {
|
|
|
41567
41574
|
projects: EXTENSION_SLOTS[slot.slot].descriptor.projects ?? null,
|
|
41568
41575
|
activation: listing.activation,
|
|
41569
41576
|
value: listing.value,
|
|
41570
|
-
sources: [...listing.sources]
|
|
41577
|
+
sources: [...listing.sources],
|
|
41578
|
+
...listing.impliedSources !== void 0 ? { impliedSources: [...listing.impliedSources] } : {}
|
|
41571
41579
|
});
|
|
41572
41580
|
}
|
|
41573
41581
|
return rows;
|
|
@@ -46126,12 +46134,6 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
46126
46134
|
addonId: null,
|
|
46127
46135
|
access: "create"
|
|
46128
46136
|
},
|
|
46129
|
-
"deviceManager.applyDeviceSettingsPatch": {
|
|
46130
|
-
capName: "device-manager",
|
|
46131
|
-
capScope: "system",
|
|
46132
|
-
addonId: null,
|
|
46133
|
-
access: "create"
|
|
46134
|
-
},
|
|
46135
46137
|
"deviceManager.applyInitialMeta": {
|
|
46136
46138
|
capName: "device-manager",
|
|
46137
46139
|
capScope: "system",
|
|
@@ -46234,12 +46236,6 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
46234
46236
|
addonId: null,
|
|
46235
46237
|
access: "view"
|
|
46236
46238
|
},
|
|
46237
|
-
"deviceManager.getDeviceLiveContribution": {
|
|
46238
|
-
capName: "device-manager",
|
|
46239
|
-
capScope: "system",
|
|
46240
|
-
addonId: null,
|
|
46241
|
-
access: "view"
|
|
46242
|
-
},
|
|
46243
46239
|
"deviceManager.getDeviceLiveInfoAggregate": {
|
|
46244
46240
|
capName: "device-manager",
|
|
46245
46241
|
capScope: "system",
|
|
@@ -46252,12 +46248,6 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
46252
46248
|
addonId: null,
|
|
46253
46249
|
access: "view"
|
|
46254
46250
|
},
|
|
46255
|
-
"deviceManager.getDeviceSettingsContribution": {
|
|
46256
|
-
capName: "device-manager",
|
|
46257
|
-
capScope: "system",
|
|
46258
|
-
addonId: null,
|
|
46259
|
-
access: "view"
|
|
46260
|
-
},
|
|
46261
46251
|
"deviceManager.getDeviceStatusAggregate": {
|
|
46262
46252
|
capName: "device-manager",
|
|
46263
46253
|
capScope: "system",
|
|
@@ -46762,24 +46752,6 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
46762
46752
|
addonId: null,
|
|
46763
46753
|
access: "view"
|
|
46764
46754
|
},
|
|
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
46755
|
"doorbell.getStatus": {
|
|
46784
46756
|
capName: "doorbell",
|
|
46785
46757
|
capScope: "device",
|
|
@@ -55104,4 +55076,4 @@ function enumerateInferenceDevices(hw) {
|
|
|
55104
55076
|
return out;
|
|
55105
55077
|
}
|
|
55106
55078
|
//#endregion
|
|
55107
|
-
export {
|
|
55079
|
+
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 };
|
|
@@ -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).
|
|
@@ -12699,8 +12699,22 @@ var LinkedDeviceSchema = zod.z.object({
|
|
|
12699
12699
|
* The `linked-devices` extension slot's editable value (D648): the operator's
|
|
12700
12700
|
* pick list, exactly what `_linkedDeviceIds` persists. Tree children are NOT
|
|
12701
12701
|
* in it — they are always linked and are not a pick.
|
|
12702
|
+
*
|
|
12703
|
+
* `trackedDeviceIds` (D655) is the tracked-event opt-in, exactly what
|
|
12704
|
+
* `_linkedDeviceTrackedIds` persists: which linked devices materialize a
|
|
12705
|
+
* synthetic tracked event on the camera. A read always carries it AS STORED
|
|
12706
|
+
* (an absent key reads as `[]`, which is what the resolver makes of it —
|
|
12707
|
+
* NONE). On a write it is optional: absent leaves the opt-in untouched, so a
|
|
12708
|
+
* card built before D655 cannot erase it by saving the pick list. A present
|
|
12709
|
+
* list REPLACES the opt-in; each id must be a pick, a device the camera links
|
|
12710
|
+
* by structure (the row's `impliedSources`: tree children, a picked
|
|
12711
|
+
* container's child) or already stored — so what was read can always be
|
|
12712
|
+
* written back unchanged, and a NEW opt-in outside the linked set is refused.
|
|
12702
12713
|
*/
|
|
12703
|
-
var LinkedDevicesSlotValueSchema = zod.z.object({
|
|
12714
|
+
var LinkedDevicesSlotValueSchema = zod.z.object({
|
|
12715
|
+
deviceIds: zod.z.array(zod.z.number().int().positive()),
|
|
12716
|
+
trackedDeviceIds: zod.z.array(zod.z.number().int().positive()).optional()
|
|
12717
|
+
});
|
|
12704
12718
|
/**
|
|
12705
12719
|
* The `linked-devices` slot — a camera's companion devices, owned by the
|
|
12706
12720
|
* device manager over `_linkedDeviceIds` (D648, D356). Any device may be a
|
|
@@ -12867,7 +12881,6 @@ var deviceManagerCapability = {
|
|
|
12867
12881
|
scope: "system",
|
|
12868
12882
|
mode: "singleton",
|
|
12869
12883
|
extensionSlots: [LINKED_DEVICES_SLOT],
|
|
12870
|
-
exposesDeviceSettings: true,
|
|
12871
12884
|
methods: {
|
|
12872
12885
|
/** Reserve (or re-resolve) a progressive numeric id for `(addonId, stableId)`.
|
|
12873
12886
|
* Idempotent: returns the existing id if one is already persisted for the
|
|
@@ -13374,8 +13387,8 @@ var deviceManagerCapability = {
|
|
|
13374
13387
|
* operator's persisted pick list (`mode` is always `manual` since D356:
|
|
13375
13388
|
* same-location devices are suggested by the picker, never linked on
|
|
13376
13389
|
* their own). Excludes the camera itself; deduped. The list is written by
|
|
13377
|
-
* the
|
|
13378
|
-
*
|
|
13390
|
+
* the `linked-devices` extension slot over `_linkedDeviceIds` (see the
|
|
13391
|
+
* module docblock).
|
|
13379
13392
|
*/
|
|
13380
13393
|
getLinkedDevices: method(zod.z.object({ deviceId: zod.z.number() }), zod.z.object({
|
|
13381
13394
|
mode: LinkedDevicesModeSchema,
|
|
@@ -22765,7 +22778,14 @@ var pipelineExecutorCapability = {
|
|
|
22765
22778
|
*/
|
|
22766
22779
|
inferCached: method(zod.z.object({
|
|
22767
22780
|
stepId: zod.z.string(),
|
|
22768
|
-
frameId: zod.z.number().int()
|
|
22781
|
+
frameId: zod.z.number().int(),
|
|
22782
|
+
/**
|
|
22783
|
+
* The model to time — REQUIRED (D658). Without it the pool answered the
|
|
22784
|
+
* step's ACTIVE variant (the first loaded after boot), so a benchmark
|
|
22785
|
+
* of model B silently timed model A. Callers pass the `rootModelId`
|
|
22786
|
+
* their warmup `runPipeline` reported: the model that actually ran.
|
|
22787
|
+
*/
|
|
22788
|
+
modelId: zod.z.string().min(1)
|
|
22769
22789
|
}), zod.z.record(zod.z.string(), zod.z.unknown()), { kind: "mutation" }),
|
|
22770
22790
|
/**
|
|
22771
22791
|
* Release a cached frame from the Python pool's memory.
|
|
@@ -28095,28 +28115,6 @@ var SOURCE_CAP_CHANGED_AT_FIELD = {
|
|
|
28095
28115
|
};
|
|
28096
28116
|
/** Cap names whose presence in a device's bindings qualify it as a source. */
|
|
28097
28117
|
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
28118
|
/** True when a cap is a recognised binary/switch source. */
|
|
28121
28119
|
function isSourceCap(capName) {
|
|
28122
28120
|
return Object.prototype.hasOwnProperty.call(SOURCE_CAP_ACTIVE_FIELD, capName);
|
|
@@ -28262,7 +28260,6 @@ var doorbellCapability = {
|
|
|
28262
28260
|
kind: "wrapper",
|
|
28263
28261
|
defaultActive: false,
|
|
28264
28262
|
deviceTypes: [DeviceType.Button, DeviceType.Camera],
|
|
28265
|
-
exposesDeviceSettings: true,
|
|
28266
28263
|
extensionSlots: [DOORBELL_SOURCE_SLOT],
|
|
28267
28264
|
methods: {},
|
|
28268
28265
|
events: {
|
|
@@ -28371,7 +28368,17 @@ var ExtensionSlotStateSchema = zod.z.object({
|
|
|
28371
28368
|
projects: zod.z.string().nullable(),
|
|
28372
28369
|
activation: ExtensionSlotActivationSchema.nullable(),
|
|
28373
28370
|
value: ExtensionSlotValueSchema,
|
|
28374
|
-
sources: zod.z.array(ExtensionSlotSourceSchema)
|
|
28371
|
+
sources: zod.z.array(ExtensionSlotSourceSchema),
|
|
28372
|
+
/**
|
|
28373
|
+
* Devices the owner links to the host ON ITS OWN, by structure, and that
|
|
28374
|
+
* are therefore not in `value` (D655): a camera's device-tree children, and
|
|
28375
|
+
* the child a picked container stands for (D356 — a container is never a
|
|
28376
|
+
* pick, its children are). Read-only; the editor shows them and may offer
|
|
28377
|
+
* per-device options on them (the linked-devices tracked-event opt-in).
|
|
28378
|
+
* Absent when the owner links nothing beyond the picks, and from an owner
|
|
28379
|
+
* older than D655.
|
|
28380
|
+
*/
|
|
28381
|
+
impliedSources: zod.z.array(ExtensionSlotSourceSchema).optional()
|
|
28375
28382
|
});
|
|
28376
28383
|
/**
|
|
28377
28384
|
* A provider that could not answer `listSlots` at all. It could not name its
|
|
@@ -41567,7 +41574,8 @@ function createDeviceExtensionProvider(options) {
|
|
|
41567
41574
|
projects: EXTENSION_SLOTS[slot.slot].descriptor.projects ?? null,
|
|
41568
41575
|
activation: listing.activation,
|
|
41569
41576
|
value: listing.value,
|
|
41570
|
-
sources: [...listing.sources]
|
|
41577
|
+
sources: [...listing.sources],
|
|
41578
|
+
...listing.impliedSources !== void 0 ? { impliedSources: [...listing.impliedSources] } : {}
|
|
41571
41579
|
});
|
|
41572
41580
|
}
|
|
41573
41581
|
return rows;
|
|
@@ -46126,12 +46134,6 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
46126
46134
|
addonId: null,
|
|
46127
46135
|
access: "create"
|
|
46128
46136
|
},
|
|
46129
|
-
"deviceManager.applyDeviceSettingsPatch": {
|
|
46130
|
-
capName: "device-manager",
|
|
46131
|
-
capScope: "system",
|
|
46132
|
-
addonId: null,
|
|
46133
|
-
access: "create"
|
|
46134
|
-
},
|
|
46135
46137
|
"deviceManager.applyInitialMeta": {
|
|
46136
46138
|
capName: "device-manager",
|
|
46137
46139
|
capScope: "system",
|
|
@@ -46234,12 +46236,6 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
46234
46236
|
addonId: null,
|
|
46235
46237
|
access: "view"
|
|
46236
46238
|
},
|
|
46237
|
-
"deviceManager.getDeviceLiveContribution": {
|
|
46238
|
-
capName: "device-manager",
|
|
46239
|
-
capScope: "system",
|
|
46240
|
-
addonId: null,
|
|
46241
|
-
access: "view"
|
|
46242
|
-
},
|
|
46243
46239
|
"deviceManager.getDeviceLiveInfoAggregate": {
|
|
46244
46240
|
capName: "device-manager",
|
|
46245
46241
|
capScope: "system",
|
|
@@ -46252,12 +46248,6 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
46252
46248
|
addonId: null,
|
|
46253
46249
|
access: "view"
|
|
46254
46250
|
},
|
|
46255
|
-
"deviceManager.getDeviceSettingsContribution": {
|
|
46256
|
-
capName: "device-manager",
|
|
46257
|
-
capScope: "system",
|
|
46258
|
-
addonId: null,
|
|
46259
|
-
access: "view"
|
|
46260
|
-
},
|
|
46261
46251
|
"deviceManager.getDeviceStatusAggregate": {
|
|
46262
46252
|
capName: "device-manager",
|
|
46263
46253
|
capScope: "system",
|
|
@@ -46762,24 +46752,6 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
46762
46752
|
addonId: null,
|
|
46763
46753
|
access: "view"
|
|
46764
46754
|
},
|
|
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
46755
|
"doorbell.getStatus": {
|
|
46784
46756
|
capName: "doorbell",
|
|
46785
46757
|
capScope: "device",
|
|
@@ -55326,12 +55298,6 @@ Object.defineProperty(exports, "SOURCE_CAPS", {
|
|
|
55326
55298
|
return SOURCE_CAPS;
|
|
55327
55299
|
}
|
|
55328
55300
|
});
|
|
55329
|
-
Object.defineProperty(exports, "SOURCE_DEVICE_TYPES", {
|
|
55330
|
-
enumerable: true,
|
|
55331
|
-
get: function() {
|
|
55332
|
-
return SOURCE_DEVICE_TYPES;
|
|
55333
|
-
}
|
|
55334
|
-
});
|
|
55335
55301
|
Object.defineProperty(exports, "STORAGE_ACCESS_FALLBACK", {
|
|
55336
55302
|
enumerable: true,
|
|
55337
55303
|
get: function() {
|
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-vecbhDzu.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-CLfJMMdf.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;
|