@camstack/addon-post-analysis 1.2.316 → 1.2.320
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/{clip-model-registry-Dkv8MUCO.mjs → clip-model-registry-C-IEAIQQ.mjs} +232 -51
- package/dist/{clip-model-registry-D-zzCBKK.js → clip-model-registry-C_aKxHpy.js} +261 -50
- package/dist/embedding-encoder/index.js +1 -1
- package/dist/embedding-encoder/index.mjs +1 -1
- package/dist/pipeline-analytics/_stub.js +2 -2
- package/dist/pipeline-analytics/{_virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_analytics_widgets-BNvVKYGi.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_analytics_widgets-D553qWb_.mjs} +2 -2
- package/dist/pipeline-analytics/_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-7e_3hsiC.mjs +26 -0
- package/dist/pipeline-analytics/_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-C1V_UEyk.mjs +26 -0
- package/dist/pipeline-analytics/{hostInit-Cpm1aEUE.mjs → hostInit-ByDyL2zi.mjs} +2 -2
- package/dist/pipeline-analytics/index.js +692 -95
- package/dist/pipeline-analytics/index.mjs +692 -95
- package/dist/pipeline-analytics/remoteEntry.js +1 -1
- package/package.json +1 -1
- package/dist/pipeline-analytics/_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-BAqKeExF.mjs +0 -26
- package/dist/pipeline-analytics/_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-B_KS96RA.mjs +0 -26
|
@@ -7741,7 +7741,7 @@ function errMsg(err) {
|
|
|
7741
7741
|
return String(err);
|
|
7742
7742
|
}
|
|
7743
7743
|
//#endregion
|
|
7744
|
-
//#region ../types/dist/composition-
|
|
7744
|
+
//#region ../types/dist/composition-Bzr7GwgP.mjs
|
|
7745
7745
|
/**
|
|
7746
7746
|
* Deterministic SHA-256 hash of an arbitrary serialisable value. The
|
|
7747
7747
|
* canonical form sorts object keys alphabetically at every depth so two
|
|
@@ -7884,6 +7884,8 @@ var SOURCE_CAP_CHANGED_AT_FIELD = {
|
|
|
7884
7884
|
vibration: "lastChangedAt",
|
|
7885
7885
|
tamper: "lastChangedAt"
|
|
7886
7886
|
};
|
|
7887
|
+
/** Cap names whose presence in a device's bindings qualify it as a source. */
|
|
7888
|
+
var SOURCE_CAPS = Object.keys(SOURCE_CAP_ACTIVE_FIELD);
|
|
7887
7889
|
/** True when a cap is a recognised binary/switch source. */
|
|
7888
7890
|
function isSourceCap(capName) {
|
|
7889
7891
|
return Object.prototype.hasOwnProperty.call(SOURCE_CAP_ACTIVE_FIELD, capName);
|
|
@@ -13015,7 +13017,7 @@ var BrokerStatusEnum = _enum([
|
|
|
13015
13017
|
"unreachable",
|
|
13016
13018
|
"error"
|
|
13017
13019
|
]);
|
|
13018
|
-
var BrokerInfoSchema
|
|
13020
|
+
var BrokerInfoSchema = object({
|
|
13019
13021
|
/** Stable broker id. Persisted; survives addon restarts. */
|
|
13020
13022
|
id: string(),
|
|
13021
13023
|
/** Addon id of the provider that OWNS this broker.
|
|
@@ -13148,7 +13150,7 @@ var GetStateInputSchema = object({
|
|
|
13148
13150
|
* HA: entity_id (returns the cached entity state). */
|
|
13149
13151
|
key: string()
|
|
13150
13152
|
});
|
|
13151
|
-
method(ListInputSchema, array(BrokerInfoSchema
|
|
13153
|
+
method(ListInputSchema, array(BrokerInfoSchema)), method(GetInputSchema, BrokerInfoSchema.nullable()), method(_void(), array(BrokerProviderInfoSchema), { auth: "admin" }), method(AddInputSchema, AddResultSchema, {
|
|
13152
13154
|
kind: "mutation",
|
|
13153
13155
|
auth: "admin"
|
|
13154
13156
|
}), method(RemoveInputSchema, _void(), {
|
|
@@ -18338,7 +18340,7 @@ var BrokerStatusSchema$1 = _enum([
|
|
|
18338
18340
|
"unreachable",
|
|
18339
18341
|
"tls-error"
|
|
18340
18342
|
]);
|
|
18341
|
-
var BrokerInfoSchema = object({
|
|
18343
|
+
var BrokerInfoSchema$1 = object({
|
|
18342
18344
|
id: string(),
|
|
18343
18345
|
name: string(),
|
|
18344
18346
|
url: string(),
|
|
@@ -18401,7 +18403,7 @@ var StatusSchema = object({
|
|
|
18401
18403
|
brokerCount: number(),
|
|
18402
18404
|
embeddedRunning: boolean()
|
|
18403
18405
|
});
|
|
18404
|
-
method(_void(), array(BrokerInfoSchema)), method(IdInputSchema, BrokerConnectionDetailsSchema, { auth: "admin" }), method(AddBrokerInputSchema, AddBrokerResultSchema, {
|
|
18406
|
+
method(_void(), array(BrokerInfoSchema$1)), method(IdInputSchema, BrokerConnectionDetailsSchema, { auth: "admin" }), method(AddBrokerInputSchema, AddBrokerResultSchema, {
|
|
18405
18407
|
kind: "mutation",
|
|
18406
18408
|
auth: "admin"
|
|
18407
18409
|
}), method(IdInputSchema, _void(), {
|
|
@@ -21841,14 +21843,52 @@ var NcAlarmNonBlockingEditSchema = object({
|
|
|
21841
21843
|
nonBlocking: boolean()
|
|
21842
21844
|
});
|
|
21843
21845
|
/**
|
|
21846
|
+
* Controllable openings: opt IN to blocking (default is do not block). Contacts
|
|
21847
|
+
* keep using {@link NcAlarmNonBlockingEditSchema}.
|
|
21848
|
+
*/
|
|
21849
|
+
var NcAlarmBlockingEditSchema = object({
|
|
21850
|
+
mode: AlarmArmModeSchema,
|
|
21851
|
+
deviceId: number().int().positive(),
|
|
21852
|
+
/** true = on the list (blocks when open); false = off the list (default). */
|
|
21853
|
+
blocking: boolean()
|
|
21854
|
+
});
|
|
21855
|
+
/**
|
|
21856
|
+
* Controllable openings: opt OUT of secure-on-arm (default is secure ON —
|
|
21857
|
+
* close / lock / turn off when this mode arms).
|
|
21858
|
+
*/
|
|
21859
|
+
var NcAlarmSecureOnArmEditSchema = object({
|
|
21860
|
+
mode: AlarmArmModeSchema,
|
|
21861
|
+
deviceId: number().int().positive(),
|
|
21862
|
+
/** true = secure on arm (default); false = do not actuate on arm. */
|
|
21863
|
+
secureOnArm: boolean()
|
|
21864
|
+
});
|
|
21865
|
+
/**
|
|
21866
|
+
* One arm mode's device-id list (non-blocking, blocking, or secure-on-arm-off).
|
|
21867
|
+
*/
|
|
21868
|
+
var NcAlarmModeDeviceListSchema = object({
|
|
21869
|
+
mode: AlarmArmModeSchema,
|
|
21870
|
+
deviceIds: array(number().int()).max(200)
|
|
21871
|
+
});
|
|
21872
|
+
/**
|
|
21873
|
+
* One arm mode's non-blocking list: devices that may be open when that mode
|
|
21874
|
+
* arms, without the arm being refused.
|
|
21875
|
+
*/
|
|
21876
|
+
var NcAlarmNonBlockingSchema = NcAlarmModeDeviceListSchema;
|
|
21877
|
+
/** Controllable devices that DO block when open (opt-in; default empty). */
|
|
21878
|
+
var NcAlarmBlockingSchema = NcAlarmModeDeviceListSchema;
|
|
21879
|
+
/**
|
|
21880
|
+
* Controllable devices that do NOT secure on arm (opt-out; default empty =
|
|
21881
|
+
* every controllable secures).
|
|
21882
|
+
*/
|
|
21883
|
+
var NcAlarmSecureOnArmOffSchema = NcAlarmModeDeviceListSchema;
|
|
21884
|
+
/**
|
|
21844
21885
|
* The per-mode lists, at most one per mode. Two lists for one mode have no
|
|
21845
21886
|
* meaning a reader could agree on (union? the last one?), so they are refused
|
|
21846
21887
|
* at the boundary rather than interpreted.
|
|
21847
21888
|
*/
|
|
21848
|
-
var NcAlarmNonBlockingListSchema = array(
|
|
21849
|
-
|
|
21850
|
-
|
|
21851
|
-
})).max(8).refine(uniqueModes, { message: "nonBlocking: at most one list per arm mode" });
|
|
21889
|
+
var NcAlarmNonBlockingListSchema = array(NcAlarmNonBlockingSchema).max(8).refine(uniqueModes, { message: "nonBlocking: at most one list per arm mode" });
|
|
21890
|
+
var NcAlarmBlockingListSchema = array(NcAlarmBlockingSchema).max(8).refine(uniqueModes, { message: "blocking: at most one list per arm mode" });
|
|
21891
|
+
var NcAlarmSecureOnArmOffListSchema = array(NcAlarmSecureOnArmOffSchema).max(8).refine(uniqueModes, { message: "secureOnArmOff: at most one list per arm mode" });
|
|
21852
21892
|
/**
|
|
21853
21893
|
* The three durations — global, and per mode since D697 — the panel's state
|
|
21854
21894
|
* machine runs on, who hears about its transitions, and which openings each mode tolerates.
|
|
@@ -21891,9 +21931,23 @@ var NcAlarmSettingsSchema = object({
|
|
|
21891
21931
|
* arm (a window left ajar for the cat under `home`, say). At most one entry
|
|
21892
21932
|
* per mode is meaningful. Defaulted to `[]` so a blob stored before D630
|
|
21893
21933
|
* parses as "every opening blocks" — the behaviour it was written under.
|
|
21934
|
+
* Contacts use this list; controllable openings use {@link blocking} instead
|
|
21935
|
+
* (default: do not block).
|
|
21894
21936
|
*/
|
|
21895
21937
|
nonBlocking: NcAlarmNonBlockingListSchema.default([]),
|
|
21896
21938
|
/**
|
|
21939
|
+
* Per arm mode, controllable openings that DO refuse the arm when open.
|
|
21940
|
+
* Default `[]` = none block (secure-on-arm closes them instead). Absent on a
|
|
21941
|
+
* blob older than this field — read as empty.
|
|
21942
|
+
*/
|
|
21943
|
+
blocking: NcAlarmBlockingListSchema.default([]),
|
|
21944
|
+
/**
|
|
21945
|
+
* Per arm mode, controllable openings that must NOT be actuated on arm.
|
|
21946
|
+
* Default `[]` = every controllable secures (close / lock / off). Absent on
|
|
21947
|
+
* an older blob — read as empty (secure ON).
|
|
21948
|
+
*/
|
|
21949
|
+
secureOnArmOff: NcAlarmSecureOnArmOffListSchema.default([]),
|
|
21950
|
+
/**
|
|
21897
21951
|
* Per arm mode, the delays that mode OVERRIDES (D697). A mode with no entry, or an entry
|
|
21898
21952
|
* without a field, uses the global value above — so `[]`, the default, is exactly the
|
|
21899
21953
|
* behaviour of a blob stored before this field existed. Read through `resolveModeDelays`.
|
|
@@ -21903,7 +21957,7 @@ var NcAlarmSettingsSchema = object({
|
|
|
21903
21957
|
/**
|
|
21904
21958
|
* Every field optional — a tab edits one control at a time.
|
|
21905
21959
|
*
|
|
21906
|
-
*
|
|
21960
|
+
* List fields and `modeDelays` are re-declared WITHOUT their defaults:
|
|
21907
21961
|
* `.partial()` does not remove an inner `.default()`, so a patch that never
|
|
21908
21962
|
* named the field would parse to `[]` and wipe every mode's list on an
|
|
21909
21963
|
* unrelated edit (the same trap {@link NcRulePatchSchema} documents). Here
|
|
@@ -21911,11 +21965,15 @@ var NcAlarmSettingsSchema = object({
|
|
|
21911
21965
|
*/
|
|
21912
21966
|
var NcAlarmSettingsPatchSchema = NcAlarmSettingsSchema.extend({
|
|
21913
21967
|
nonBlocking: NcAlarmNonBlockingListSchema,
|
|
21968
|
+
blocking: NcAlarmBlockingListSchema,
|
|
21969
|
+
secureOnArmOff: NcAlarmSecureOnArmOffListSchema,
|
|
21914
21970
|
/** Per-mode, per-field edits — NOT the whole list (see NcAlarmModeDelaysEditSchema). */
|
|
21915
21971
|
modeDelays: NcAlarmModeDelaysEditListSchema,
|
|
21916
21972
|
/** ONE membership change; the panel applies it to the list it holds at its turn. */
|
|
21917
|
-
nonBlockingEdit: NcAlarmNonBlockingEditSchema
|
|
21918
|
-
|
|
21973
|
+
nonBlockingEdit: NcAlarmNonBlockingEditSchema,
|
|
21974
|
+
blockingEdit: NcAlarmBlockingEditSchema,
|
|
21975
|
+
secureOnArmEdit: NcAlarmSecureOnArmEditSchema
|
|
21976
|
+
}).partial().refine((p) => p.nonBlocking === void 0 || p.nonBlockingEdit === void 0, { message: "nonBlocking and nonBlockingEdit are exclusive — send the whole lists or one edit" }).refine((p) => p.blocking === void 0 || p.blockingEdit === void 0, { message: "blocking and blockingEdit are exclusive — send the whole lists or one edit" }).refine((p) => p.secureOnArmOff === void 0 || p.secureOnArmEdit === void 0, { message: "secureOnArmOff and secureOnArmEdit are exclusive — send the whole lists or one edit" });
|
|
21919
21977
|
/**
|
|
21920
21978
|
* What one arm mode actually arms, DERIVED from the enabled rules gated on it.
|
|
21921
21979
|
* Never authored, never stored — see `alarm-mode-coverage.ts` for why a stored
|
|
@@ -22030,7 +22088,13 @@ var NcAlarmSensorStateSchema = object({
|
|
|
22030
22088
|
/** Why `unknown`: the read failed, or the slice holds no word its cap defines (a placeholder included). */
|
|
22031
22089
|
unknownWhy: _enum(["read-failed", "unknown-word"]).nullable(),
|
|
22032
22090
|
/** The device manager's liveness as the centre mirrors it; null = not known. */
|
|
22033
|
-
online: boolean().nullable()
|
|
22091
|
+
online: boolean().nullable(),
|
|
22092
|
+
/**
|
|
22093
|
+
* True when the opening is a cover / lock / switch — the table shows the
|
|
22094
|
+
* Secure-on-arm switch and uses the controllable defaults. False for contacts
|
|
22095
|
+
* and for non-openings. Defaulted so an older hub answer still parses.
|
|
22096
|
+
*/
|
|
22097
|
+
controllable: boolean().default(false)
|
|
22034
22098
|
});
|
|
22035
22099
|
var NcAlarmSensorsInputSchema = object({ deviceIds: array(number().int().positive()).max(500) });
|
|
22036
22100
|
var NcAlarmSensorsSchema = object({
|
|
@@ -24173,6 +24237,7 @@ var KeyEventSchema = object({
|
|
|
24173
24237
|
bestEventId: string(),
|
|
24174
24238
|
/** Track lifetime in ms (lastSeen - firstSeen). */
|
|
24175
24239
|
windowMs: number().optional(),
|
|
24240
|
+
audioLabels: array(TrackAudioLabelSchema).readonly().optional(),
|
|
24176
24241
|
...TrackFlagFields,
|
|
24177
24242
|
...TrackRetrainFields
|
|
24178
24243
|
});
|
|
@@ -36126,38 +36191,52 @@ DeviceType.Camera, method(object({
|
|
|
36126
36191
|
deviceId: number(),
|
|
36127
36192
|
status: OsdStatusSchema
|
|
36128
36193
|
});
|
|
36194
|
+
_enum([
|
|
36195
|
+
"value",
|
|
36196
|
+
"unit",
|
|
36197
|
+
"full"
|
|
36198
|
+
]);
|
|
36199
|
+
_enum([
|
|
36200
|
+
"value+unit",
|
|
36201
|
+
"value",
|
|
36202
|
+
"unit"
|
|
36203
|
+
]);
|
|
36204
|
+
/**
|
|
36205
|
+
* How the operator reached the leaf device. `deviceId` is ALWAYS the
|
|
36206
|
+
* OSD-supported leaf that is read; `containerId` is set when the pick
|
|
36207
|
+
* went through a container (gateway) first.
|
|
36208
|
+
*/
|
|
36209
|
+
var OsdTemplatePickSchema = object({
|
|
36210
|
+
containerId: number().int().optional(),
|
|
36211
|
+
deviceId: number().int()
|
|
36212
|
+
});
|
|
36213
|
+
/**
|
|
36214
|
+
* One named binding inside a multi-device template: device path + unit
|
|
36215
|
+
* selection + precision. The parser expands `{alias}`, `{alias.value}`,
|
|
36216
|
+
* `{alias.unit}`, or `{alias.full}` from the same binding — there is no
|
|
36217
|
+
* per-binding format lock.
|
|
36218
|
+
*/
|
|
36219
|
+
var OsdTemplateBindingSchema = object({
|
|
36220
|
+
/** Token stem in the parser, e.g. `t` → `{t}` / `{t.value}`. Unique within the template. */
|
|
36221
|
+
alias: string().min(1).max(32).regex(/^[A-Za-z][A-Za-z0-9_-]*$/, "alias must start with a letter"),
|
|
36222
|
+
pick: OsdTemplatePickSchema,
|
|
36223
|
+
capName: string().min(1).max(64),
|
|
36224
|
+
valuePath: string().min(1).max(64),
|
|
36225
|
+
/** Convert TO this unit at render (`tryConvertUnit`). Absent = source unit. */
|
|
36226
|
+
displayUnit: string().max(16).optional(),
|
|
36227
|
+
maxDecimals: number().int().min(0).max(4).default(1)
|
|
36228
|
+
});
|
|
36129
36229
|
/**
|
|
36130
|
-
*
|
|
36131
|
-
*
|
|
36132
|
-
* The `osd` cap is the firmware contract: it probes a camera's overlay
|
|
36133
|
-
* SLOTS and writes literal text into one. It has no idea WHERE that text
|
|
36134
|
-
* comes from, and it must not — a driver that grew a "show the temperature
|
|
36135
|
-
* here" feature would grow it once per vendor.
|
|
36136
|
-
*
|
|
36137
|
-
* This cap owns the other half: a per-(camera, slot) BINDING that says
|
|
36138
|
-
* which value feeds the slot, how it is formatted, and under which
|
|
36139
|
-
* conditions it is shown at all. One addon renders every binding on every
|
|
36140
|
-
* camera, so a new source costs zero driver code.
|
|
36141
|
-
*
|
|
36142
|
-
* Three deliberate choices, each with a rejected alternative:
|
|
36143
|
-
*
|
|
36144
|
-
* 1. A source is `(capName, valuePath)` over the kernel's device
|
|
36145
|
-
* runtime-state mirror — NOT a closed enum of source kinds. Every
|
|
36146
|
-
* cap-keyed slice a device publishes is bindable the day the cap
|
|
36147
|
-
* ships. The rejected alternative (one enum member per source, with
|
|
36148
|
-
* a resolver branch each) is what makes "add the humidity too" a
|
|
36149
|
-
* code change.
|
|
36150
|
-
* 2. The display gate reuses `NcConditionsSchema` verbatim — the
|
|
36151
|
-
* notification centre's condition vocabulary — rather than a parallel
|
|
36152
|
-
* model. An operator who has learned one condition editor has learned
|
|
36153
|
-
* both.
|
|
36154
|
-
* 3. Because the renderer's facts are device STATE and not a detection
|
|
36155
|
-
* record, only a SUBSET of that vocabulary can be answered here.
|
|
36156
|
-
* `setSlotBinding` REJECTS the rest at write time (see
|
|
36157
|
-
* `getConditionSupport`). It does not accept-then-fail-closed: a
|
|
36158
|
-
* condition that can never be true renders a permanently blank
|
|
36159
|
-
* overlay, and a blank overlay looks exactly like a broken camera.
|
|
36230
|
+
* A named template: bindings (alias → leaf field) + a parser that
|
|
36231
|
+
* references `{alias}` / `{alias.value}` / `{alias.unit}` / `{alias.full}`.
|
|
36160
36232
|
*/
|
|
36233
|
+
var OsdNamedTemplateSchema = object({
|
|
36234
|
+
id: string().min(1).max(64),
|
|
36235
|
+
name: string().min(1).max(64),
|
|
36236
|
+
bindings: array(OsdTemplateBindingSchema).max(32).default([]),
|
|
36237
|
+
/** Parser with alias placeholders, e.g. `{t.value} {t.unit} / {h}`. */
|
|
36238
|
+
parser: string().max(256).default("")
|
|
36239
|
+
});
|
|
36161
36240
|
/** Where a slot's value comes from. */
|
|
36162
36241
|
var OsdSourceSchema = discriminatedUnion("kind", [
|
|
36163
36242
|
object({
|
|
@@ -36176,11 +36255,17 @@ var OsdSourceSchema = discriminatedUnion("kind", [
|
|
|
36176
36255
|
deviceId: number().int().optional(),
|
|
36177
36256
|
capName: string().min(1).max(64),
|
|
36178
36257
|
/** Dot path inside the slice, e.g. `detected`, `value`, `mode`. */
|
|
36179
|
-
valuePath: string().min(1).max(64)
|
|
36258
|
+
valuePath: string().min(1).max(64),
|
|
36259
|
+
/** Convert TO this unit at render. Absent = no conversion. */
|
|
36260
|
+
displayUnit: string().max(16).optional()
|
|
36180
36261
|
}),
|
|
36181
36262
|
object({
|
|
36182
36263
|
kind: literal("latest-recognition"),
|
|
36183
36264
|
recognition: _enum(["person", "plate"])
|
|
36265
|
+
}),
|
|
36266
|
+
object({
|
|
36267
|
+
kind: literal("template"),
|
|
36268
|
+
templateId: string().min(1).max(64)
|
|
36184
36269
|
})
|
|
36185
36270
|
]);
|
|
36186
36271
|
var OsdSlotBindingSchema = object({
|
|
@@ -36196,7 +36281,10 @@ var OsdSlotBindingSchema = object({
|
|
|
36196
36281
|
* documented workaround for firmwares that reject `.` in overlay text.
|
|
36197
36282
|
*/
|
|
36198
36283
|
maxDecimals: number().int().min(0).max(4).default(1),
|
|
36199
|
-
/**
|
|
36284
|
+
/**
|
|
36285
|
+
* Appended via `${unit}` when no unit conversion produces a label.
|
|
36286
|
+
* Prefer `source.displayUnit` for converted device-state values.
|
|
36287
|
+
*/
|
|
36200
36288
|
unitLabel: string().max(8).optional(),
|
|
36201
36289
|
/** Raw value → display text, e.g. `{"true":"MOTION","false":""}`. */
|
|
36202
36290
|
valueMap: record(string(), string()).optional(),
|
|
@@ -36305,6 +36393,12 @@ method(object({ deviceId: number().int() }), object({
|
|
|
36305
36393
|
}), method(object({ deviceId: number().int() }), object({ results: array(OsdRenderResultSchema) }), {
|
|
36306
36394
|
kind: "mutation",
|
|
36307
36395
|
auth: "admin"
|
|
36396
|
+
}), method(object({}), object({ templates: array(OsdNamedTemplateSchema) }), { auth: "admin" }), method(object({ template: OsdNamedTemplateSchema }), object({ template: OsdNamedTemplateSchema }), {
|
|
36397
|
+
kind: "mutation",
|
|
36398
|
+
auth: "admin"
|
|
36399
|
+
}), method(object({ templateId: string().min(1).max(64) }), object({ success: literal(true) }), {
|
|
36400
|
+
kind: "mutation",
|
|
36401
|
+
auth: "admin"
|
|
36308
36402
|
});
|
|
36309
36403
|
/**
|
|
36310
36404
|
* Feeder connectivity / power status — mirrors the HA petkit device-status
|
|
@@ -41512,6 +41606,7 @@ var zoneRulesCapability = {
|
|
|
41512
41606
|
*/
|
|
41513
41607
|
durability: "restored"
|
|
41514
41608
|
};
|
|
41609
|
+
SOURCE_CAPS.filter((cap) => cap !== "switch" && cap !== "motion");
|
|
41515
41610
|
/**
|
|
41516
41611
|
* Most specific first. Extending this list is how a new device kind becomes
|
|
41517
41612
|
* gateable; nothing else needs to change.
|
|
@@ -47752,6 +47847,12 @@ Object.freeze({
|
|
|
47752
47847
|
addonId: null,
|
|
47753
47848
|
access: "create"
|
|
47754
47849
|
},
|
|
47850
|
+
"osdManager.deleteTemplate": {
|
|
47851
|
+
capName: "osd-manager",
|
|
47852
|
+
capScope: "system",
|
|
47853
|
+
addonId: null,
|
|
47854
|
+
access: "delete"
|
|
47855
|
+
},
|
|
47755
47856
|
"osdManager.getConditionSupport": {
|
|
47756
47857
|
capName: "osd-manager",
|
|
47757
47858
|
capScope: "system",
|
|
@@ -47770,6 +47871,12 @@ Object.freeze({
|
|
|
47770
47871
|
addonId: null,
|
|
47771
47872
|
access: "view"
|
|
47772
47873
|
},
|
|
47874
|
+
"osdManager.listTemplates": {
|
|
47875
|
+
capName: "osd-manager",
|
|
47876
|
+
capScope: "system",
|
|
47877
|
+
addonId: null,
|
|
47878
|
+
access: "view"
|
|
47879
|
+
},
|
|
47773
47880
|
"osdManager.previewSlot": {
|
|
47774
47881
|
capName: "osd-manager",
|
|
47775
47882
|
capScope: "system",
|
|
@@ -47788,6 +47895,12 @@ Object.freeze({
|
|
|
47788
47895
|
addonId: null,
|
|
47789
47896
|
access: "create"
|
|
47790
47897
|
},
|
|
47898
|
+
"osdManager.upsertTemplate": {
|
|
47899
|
+
capName: "osd-manager",
|
|
47900
|
+
capScope: "system",
|
|
47901
|
+
addonId: null,
|
|
47902
|
+
access: "create"
|
|
47903
|
+
},
|
|
47791
47904
|
"petFeeder.callPet": {
|
|
47792
47905
|
capName: "pet-feeder",
|
|
47793
47906
|
capScope: "device",
|
|
@@ -54368,6 +54481,18 @@ var ARMED_WORD_PREFIX = "armed_";
|
|
|
54368
54481
|
var ALARM_PANEL_CAP = "alarm-panel";
|
|
54369
54482
|
var ALARM_PANEL_TRIGGER_METHOD = "trigger";
|
|
54370
54483
|
/**
|
|
54484
|
+
* Opening caps that can be ACTUATED to a secure state on arm (close / lock /
|
|
54485
|
+
* off). Contacts are openings but not controllable — they only block.
|
|
54486
|
+
*/
|
|
54487
|
+
var NC_ALARM_CONTROLLABLE_CAPS = [
|
|
54488
|
+
"cover",
|
|
54489
|
+
"lock-control",
|
|
54490
|
+
"switch"
|
|
54491
|
+
];
|
|
54492
|
+
function isAlarmControllableCap(cap) {
|
|
54493
|
+
return NC_ALARM_CONTROLLABLE_CAPS.includes(cap);
|
|
54494
|
+
}
|
|
54495
|
+
/**
|
|
54371
54496
|
* A rule belongs to the alarm when its `deviceState` gate names ANY device's
|
|
54372
54497
|
* `armed_*` word, or an ENABLED `onTrigger` sequence pulls the alarm panel's
|
|
54373
54498
|
* trigger (D630).
|
|
@@ -54376,6 +54501,32 @@ function ruleBelongsToAlarm(rule) {
|
|
|
54376
54501
|
if ((rule.conditions.deviceState?.states ?? []).some((s) => s.trim().toLowerCase().startsWith(ARMED_WORD_PREFIX))) return true;
|
|
54377
54502
|
return (rule.onTrigger ?? []).some((sequence) => sequence.enabled && sequence.actions.some((step) => step.kind === "cap" && step.cap === ALARM_PANEL_CAP && step.method === ALARM_PANEL_TRIGGER_METHOD));
|
|
54378
54503
|
}
|
|
54504
|
+
/** Whether this controllable should be closed/locked/turned off on arm. */
|
|
54505
|
+
function alarmDeviceSecureOnArm(input) {
|
|
54506
|
+
if (!input.controllable) return false;
|
|
54507
|
+
return !input.secureOnArmOff.includes(input.deviceId);
|
|
54508
|
+
}
|
|
54509
|
+
/** The one secure command for a controllable opening cap, or null for contacts. */
|
|
54510
|
+
function secureActuationFor(cap) {
|
|
54511
|
+
if (!isAlarmControllableCap(cap)) return null;
|
|
54512
|
+
switch (cap) {
|
|
54513
|
+
case "cover": return {
|
|
54514
|
+
cap,
|
|
54515
|
+
method: "close",
|
|
54516
|
+
args: {}
|
|
54517
|
+
};
|
|
54518
|
+
case "lock-control": return {
|
|
54519
|
+
cap,
|
|
54520
|
+
method: "lock",
|
|
54521
|
+
args: {}
|
|
54522
|
+
};
|
|
54523
|
+
case "switch": return {
|
|
54524
|
+
cap,
|
|
54525
|
+
method: "setState",
|
|
54526
|
+
args: { on: false }
|
|
54527
|
+
};
|
|
54528
|
+
}
|
|
54529
|
+
}
|
|
54379
54530
|
var NC_ALARM_DELAY_FIELDS = [
|
|
54380
54531
|
"exitDelaySec",
|
|
54381
54532
|
"entryDelaySec",
|
|
@@ -54435,10 +54586,11 @@ function applyModeDelaysEdits(current, edits) {
|
|
|
54435
54586
|
return out.filter((e) => e.exitDelaySec !== void 0 || e.entryDelaySec !== void 0 || e.triggeredDurationSec !== void 0);
|
|
54436
54587
|
}
|
|
54437
54588
|
/**
|
|
54438
|
-
* Put ONE device on, or take it off, ONE mode's list. A no-op answers
|
|
54439
|
-
* to a full list is REFUSED by reason (never silently
|
|
54589
|
+
* Put ONE device on, or take it off, ONE mode's device-id list. A no-op answers
|
|
54590
|
+
* `changed: false`; an add to a full list is REFUSED by reason (never silently
|
|
54591
|
+
* dropped); an emptied list drops its entry.
|
|
54440
54592
|
*/
|
|
54441
|
-
function
|
|
54593
|
+
function applyModeDeviceListEdit(lists, edit) {
|
|
54442
54594
|
const copy = lists.map((l) => ({
|
|
54443
54595
|
mode: l.mode,
|
|
54444
54596
|
deviceIds: [...l.deviceIds]
|
|
@@ -54446,12 +54598,12 @@ function applyNonBlockingEdit(lists, edit) {
|
|
|
54446
54598
|
const at = copy.findIndex((l) => l.mode === edit.mode);
|
|
54447
54599
|
const held = at >= 0 ? copy[at]?.deviceIds ?? [] : [];
|
|
54448
54600
|
const present = held.includes(edit.deviceId);
|
|
54449
|
-
if (edit.
|
|
54601
|
+
if (edit.present === present) return {
|
|
54450
54602
|
kind: "applied",
|
|
54451
54603
|
lists: copy,
|
|
54452
54604
|
changed: false
|
|
54453
54605
|
};
|
|
54454
|
-
if (edit.
|
|
54606
|
+
if (edit.present) {
|
|
54455
54607
|
if (held.length >= 200) return {
|
|
54456
54608
|
kind: "refused",
|
|
54457
54609
|
reason: "list-full",
|
|
@@ -54478,6 +54630,35 @@ function applyNonBlockingEdit(lists, edit) {
|
|
|
54478
54630
|
};
|
|
54479
54631
|
}
|
|
54480
54632
|
/**
|
|
54633
|
+
* Put ONE device on, or take it off, ONE mode's non-blocking list.
|
|
54634
|
+
*/
|
|
54635
|
+
function applyNonBlockingEdit(lists, edit) {
|
|
54636
|
+
return applyModeDeviceListEdit(lists, {
|
|
54637
|
+
mode: edit.mode,
|
|
54638
|
+
deviceId: edit.deviceId,
|
|
54639
|
+
present: edit.nonBlocking
|
|
54640
|
+
});
|
|
54641
|
+
}
|
|
54642
|
+
/** Controllable opt-in to blocking. */
|
|
54643
|
+
function applyBlockingEdit(lists, edit) {
|
|
54644
|
+
return applyModeDeviceListEdit(lists, {
|
|
54645
|
+
mode: edit.mode,
|
|
54646
|
+
deviceId: edit.deviceId,
|
|
54647
|
+
present: edit.blocking
|
|
54648
|
+
});
|
|
54649
|
+
}
|
|
54650
|
+
/**
|
|
54651
|
+
* Controllable secure-on-arm: `secureOnArm: true` removes from the opt-out list;
|
|
54652
|
+
* `false` adds to it.
|
|
54653
|
+
*/
|
|
54654
|
+
function applySecureOnArmEdit(lists, edit) {
|
|
54655
|
+
return applyModeDeviceListEdit(lists, {
|
|
54656
|
+
mode: edit.mode,
|
|
54657
|
+
deviceId: edit.deviceId,
|
|
54658
|
+
present: !edit.secureOnArm
|
|
54659
|
+
});
|
|
54660
|
+
}
|
|
54661
|
+
/**
|
|
54481
54662
|
* WHICH WAY A BOOLEAN SENSOR MOVED — read off the one slice a sensor event
|
|
54482
54663
|
* persists (D640 "a sensor rule fires on the raise, the clear, or both").
|
|
54483
54664
|
*
|
|
@@ -57680,12 +57861,24 @@ Object.defineProperty(exports, "addonWidgetsSourceCapability", {
|
|
|
57680
57861
|
return addonWidgetsSourceCapability;
|
|
57681
57862
|
}
|
|
57682
57863
|
});
|
|
57864
|
+
Object.defineProperty(exports, "alarmDeviceSecureOnArm", {
|
|
57865
|
+
enumerable: true,
|
|
57866
|
+
get: function() {
|
|
57867
|
+
return alarmDeviceSecureOnArm;
|
|
57868
|
+
}
|
|
57869
|
+
});
|
|
57683
57870
|
Object.defineProperty(exports, "alarmPanelCapability", {
|
|
57684
57871
|
enumerable: true,
|
|
57685
57872
|
get: function() {
|
|
57686
57873
|
return alarmPanelCapability;
|
|
57687
57874
|
}
|
|
57688
57875
|
});
|
|
57876
|
+
Object.defineProperty(exports, "applyBlockingEdit", {
|
|
57877
|
+
enumerable: true,
|
|
57878
|
+
get: function() {
|
|
57879
|
+
return applyBlockingEdit;
|
|
57880
|
+
}
|
|
57881
|
+
});
|
|
57689
57882
|
Object.defineProperty(exports, "applyModeDelaysEdits", {
|
|
57690
57883
|
enumerable: true,
|
|
57691
57884
|
get: function() {
|
|
@@ -57698,6 +57891,12 @@ Object.defineProperty(exports, "applyNonBlockingEdit", {
|
|
|
57698
57891
|
return applyNonBlockingEdit;
|
|
57699
57892
|
}
|
|
57700
57893
|
});
|
|
57894
|
+
Object.defineProperty(exports, "applySecureOnArmEdit", {
|
|
57895
|
+
enumerable: true,
|
|
57896
|
+
get: function() {
|
|
57897
|
+
return applySecureOnArmEdit;
|
|
57898
|
+
}
|
|
57899
|
+
});
|
|
57701
57900
|
Object.defineProperty(exports, "array", {
|
|
57702
57901
|
enumerable: true,
|
|
57703
57902
|
get: function() {
|
|
@@ -57878,6 +58077,12 @@ Object.defineProperty(exports, "hydrateSchema", {
|
|
|
57878
58077
|
return hydrateSchema;
|
|
57879
58078
|
}
|
|
57880
58079
|
});
|
|
58080
|
+
Object.defineProperty(exports, "isAlarmControllableCap", {
|
|
58081
|
+
enumerable: true,
|
|
58082
|
+
get: function() {
|
|
58083
|
+
return isAlarmControllableCap;
|
|
58084
|
+
}
|
|
58085
|
+
});
|
|
57881
58086
|
Object.defineProperty(exports, "isAudioClassName", {
|
|
57882
58087
|
enumerable: true,
|
|
57883
58088
|
get: function() {
|
|
@@ -58130,6 +58335,12 @@ Object.defineProperty(exports, "sceneMonitorCapability", {
|
|
|
58130
58335
|
return sceneMonitorCapability;
|
|
58131
58336
|
}
|
|
58132
58337
|
});
|
|
58338
|
+
Object.defineProperty(exports, "secureActuationFor", {
|
|
58339
|
+
enumerable: true,
|
|
58340
|
+
get: function() {
|
|
58341
|
+
return secureActuationFor;
|
|
58342
|
+
}
|
|
58343
|
+
});
|
|
58133
58344
|
Object.defineProperty(exports, "sensorRaisedOf", {
|
|
58134
58345
|
enumerable: true,
|
|
58135
58346
|
get: function() {
|
|
@@ -2,7 +2,7 @@ Object.defineProperties(exports, {
|
|
|
2
2
|
__esModule: { value: true },
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
|
-
const require_clip_model_registry = require("../clip-model-registry-
|
|
5
|
+
const require_clip_model_registry = require("../clip-model-registry-C_aKxHpy.js");
|
|
6
6
|
let node_fs = require("node:fs");
|
|
7
7
|
node_fs = require_clip_model_registry.__toESM(node_fs);
|
|
8
8
|
let node_path = require("node:path");
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Br as BaseAddon, Fn as embeddingRequirementsFailedError, Ht as PoolMemoryWatchdog, In as embeddingRequirementsUnavailableError, Jr as normalizeNodeId, Mn as embeddingEncoderCapability, Nn as embeddingModelFailedError, a as CLIP_EMBEDDING_STEP_ID, ar as parseProcStatus, c as resolveClusterModelPin, i as CLIP_TEXT_MODELS, mr as resolvePoolMemoryPolicy, n as DEFAULT_CLIP_MODEL, r as CLIP_IMAGE_MODELS, t as BUILTIN_CLIP_MODELS } from "../clip-model-registry-C-IEAIQQ.mjs";
|
|
2
2
|
import { createRequire } from "node:module";
|
|
3
3
|
import * as fs from "node:fs";
|
|
4
4
|
import * as path$1 from "node:path";
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { a as e, i as t, n, o as r, r as i, t as a } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare__react__loadShare__.js-C0AuF9av.mjs";
|
|
2
2
|
import { t as o } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_tanstack_mf_1_react_mf_2_query__loadShare__.js-B3Wx5J80.mjs";
|
|
3
|
-
import { a as s, i as c, n as l, o as u, r as d, s as f, t as p } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-
|
|
3
|
+
import { a as s, i as c, n as l, o as u, r as d, s as f, t as p } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-C1V_UEyk.mjs";
|
|
4
4
|
import { n as m, r as h, t as g } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare__react_mf_1_jsx_mf_2_runtime__loadShare__.js-Bm-iyjmq.mjs";
|
|
5
|
-
import { t as _ } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-
|
|
5
|
+
import { t as _ } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-7e_3hsiC.mjs";
|
|
6
6
|
//#region ../../node_modules/lucide-react/dist/esm/shared/src/utils/mergeClasses.js
|
|
7
7
|
var v = (...e) => e.filter((e, t, n) => !!e && e.trim() !== "" && n.indexOf(e) === t).join(" ").trim(), y = (e) => e.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase(), b = (e) => e.replace(/^([A-Z])|[\s-_]+(\w)/g, (e, t, n) => n ? n.toUpperCase() : t.toLowerCase()), x = (e) => {
|
|
8
8
|
let t = b(e);
|
|
@@ -18,7 +18,7 @@ var e = {
|
|
|
18
18
|
},
|
|
19
19
|
"@camstack/types": {
|
|
20
20
|
name: "@camstack/types",
|
|
21
|
-
version: "1.2.
|
|
21
|
+
version: "1.2.296",
|
|
22
22
|
scope: ["default"],
|
|
23
23
|
loaded: !1,
|
|
24
24
|
from: "addon_pipeline_analytics_widgets",
|
|
@@ -33,7 +33,7 @@ var e = {
|
|
|
33
33
|
},
|
|
34
34
|
"@camstack/ui-library": {
|
|
35
35
|
name: "@camstack/ui-library",
|
|
36
|
-
version: "1.2.
|
|
36
|
+
version: "1.2.223",
|
|
37
37
|
scope: ["default"],
|
|
38
38
|
loaded: !1,
|
|
39
39
|
from: "addon_pipeline_analytics_widgets",
|