@camstack/addon-post-analysis 1.2.325 → 1.2.330
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-CshjlVTF.mjs → clip-model-registry-CGaaUvAD.mjs} +198 -20
- package/dist/{clip-model-registry-BFLeI0dr.js → clip-model-registry-DQmmIYXS.js} +215 -19
- 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-BiD7k7AM.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_analytics_widgets-BNJdXVq8.mjs} +3 -3
- package/dist/pipeline-analytics/_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-BdFzCOK8.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-n9xCtjjZ.mjs +26 -0
- package/dist/pipeline-analytics/{hostInit-D0L1yv82.mjs → hostInit-Bj7szOak.mjs} +3 -3
- package/dist/pipeline-analytics/index.js +460 -141
- package/dist/pipeline-analytics/index.mjs +460 -141
- 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-CBG_lEGV.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-Bnb-yu_h.mjs +0 -26
|
@@ -5451,7 +5451,7 @@ var ZodIssueCode = {
|
|
|
5451
5451
|
var ZodFirstPartyTypeKind;
|
|
5452
5452
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5453
5453
|
//#endregion
|
|
5454
|
-
//#region ../types/dist/sleep-
|
|
5454
|
+
//#region ../types/dist/sleep-DXKLNFvA.mjs
|
|
5455
5455
|
/**
|
|
5456
5456
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5457
5457
|
* window to float samples (D455).
|
|
@@ -5759,6 +5759,43 @@ function hydrateField(field, values) {
|
|
|
5759
5759
|
}
|
|
5760
5760
|
const rawValue = storedValue !== void 0 ? storedValue : defaultValue !== void 0 ? defaultValue : null;
|
|
5761
5761
|
const value = field.type === "textarea" && field.isJson && rawValue !== null && typeof rawValue === "object" ? JSON.stringify(rawValue, null, 2) : rawValue;
|
|
5762
|
+
if (field.type === "tags" && typeof field.suggestionsFrom === "string") {
|
|
5763
|
+
const from = values[field.suggestionsFrom];
|
|
5764
|
+
const extra = Array.isArray(from) ? from.filter((s) => typeof s === "string" && s.length > 0) : [];
|
|
5765
|
+
const merged = [...new Set([...field.suggestions ?? [], ...extra])];
|
|
5766
|
+
return {
|
|
5767
|
+
...field,
|
|
5768
|
+
suggestions: merged,
|
|
5769
|
+
value
|
|
5770
|
+
};
|
|
5771
|
+
}
|
|
5772
|
+
if ((field.type === "select" || field.type === "multiselect") && typeof field.optionsFrom === "string") {
|
|
5773
|
+
const from = values[field.optionsFrom];
|
|
5774
|
+
const byValue = /* @__PURE__ */ new Map();
|
|
5775
|
+
for (const opt of field.options) byValue.set(opt.value, opt);
|
|
5776
|
+
if (Array.isArray(from)) for (const entry of from) {
|
|
5777
|
+
if (typeof entry === "string" && entry.length > 0) {
|
|
5778
|
+
if (!byValue.has(entry)) byValue.set(entry, {
|
|
5779
|
+
value: entry,
|
|
5780
|
+
label: entry
|
|
5781
|
+
});
|
|
5782
|
+
continue;
|
|
5783
|
+
}
|
|
5784
|
+
if (entry === null || typeof entry !== "object") continue;
|
|
5785
|
+
const v = Reflect.get(entry, "value");
|
|
5786
|
+
const lbl = Reflect.get(entry, "label");
|
|
5787
|
+
if (typeof v !== "string" || v.length === 0) continue;
|
|
5788
|
+
if (!byValue.has(v)) byValue.set(v, {
|
|
5789
|
+
value: v,
|
|
5790
|
+
label: typeof lbl === "string" && lbl.length > 0 ? lbl : v
|
|
5791
|
+
});
|
|
5792
|
+
}
|
|
5793
|
+
return {
|
|
5794
|
+
...field,
|
|
5795
|
+
options: [...byValue.values()],
|
|
5796
|
+
value
|
|
5797
|
+
};
|
|
5798
|
+
}
|
|
5762
5799
|
return {
|
|
5763
5800
|
...field,
|
|
5764
5801
|
value
|
|
@@ -11849,7 +11886,16 @@ var AutomationActionSchema = discriminatedUnion("kind", [
|
|
|
11849
11886
|
}),
|
|
11850
11887
|
object({
|
|
11851
11888
|
kind: literal("cap"),
|
|
11852
|
-
|
|
11889
|
+
/**
|
|
11890
|
+
* One device, several same-family devices (locks / climate family / …),
|
|
11891
|
+
* or `{ $var }` for the device that triggered the run. An array is
|
|
11892
|
+
* fan-out at codegen — each id gets the same cap.method call.
|
|
11893
|
+
*/
|
|
11894
|
+
deviceId: union([
|
|
11895
|
+
number().int(),
|
|
11896
|
+
array(number().int()).min(1),
|
|
11897
|
+
object({ $var: string().min(1) })
|
|
11898
|
+
]),
|
|
11853
11899
|
cap: string().min(1),
|
|
11854
11900
|
method: string().min(1),
|
|
11855
11901
|
/** Values may carry `{{vars.x}}` slots, which SUBSTITUTE and do not
|
|
@@ -15127,7 +15173,7 @@ DeviceType.Camera;
|
|
|
15127
15173
|
* This matters here more than anywhere else in the repo, because every provider
|
|
15128
15174
|
* that knows a device's host knows its PASSWORD too: `{ host, port, username,
|
|
15129
15175
|
* password }` sit in one object on Hikvision, Amcrest, Reolink and ONVIF alike,
|
|
15130
|
-
* and `http://admin:hunter2@192.168.
|
|
15176
|
+
* and `http://admin:hunter2@192.168.x.x/` is a URL a browser accepts. The
|
|
15131
15177
|
* camera's own page will ask for its own login. That is correct, and pre-
|
|
15132
15178
|
* filling it is the operator's business, not ours.
|
|
15133
15179
|
*
|
|
@@ -18812,10 +18858,35 @@ var SendResultSchema = object({
|
|
|
18812
18858
|
});
|
|
18813
18859
|
/** Same shape as SendResult — kept as a distinct name for the test panel. */
|
|
18814
18860
|
var TestResultSchema = SendResultSchema;
|
|
18815
|
-
|
|
18861
|
+
/**
|
|
18862
|
+
* Pre-save credential probe against a partial (unsaved) target config.
|
|
18863
|
+
* `resolvedUrl` never includes secrets (token stripped from path).
|
|
18864
|
+
*/
|
|
18865
|
+
var ProbeTargetConfigResultSchema = object({
|
|
18866
|
+
ok: boolean(),
|
|
18867
|
+
resolvedUrl: string(),
|
|
18868
|
+
httpStatus: number().int().optional(),
|
|
18869
|
+
stateInstance: string().optional(),
|
|
18870
|
+
error: string().optional()
|
|
18871
|
+
});
|
|
18872
|
+
method(object({}), array(TargetKindSchema)), method(object({}), array(TargetSchema), { auth: "admin" }), method(object({ targetId: string() }), TargetSchema, { auth: "admin" }), method(object({
|
|
18816
18873
|
kind: string(),
|
|
18817
|
-
config: record(string(), unknown()).optional()
|
|
18874
|
+
config: record(string(), unknown()).optional(),
|
|
18875
|
+
/**
|
|
18876
|
+
* When editing / duplicating, the blank password field never round-trips
|
|
18877
|
+
* the stored token. Pass the source target id so the provider can restore
|
|
18878
|
+
* secrets server-side before dialling (same merge as upsert).
|
|
18879
|
+
*/
|
|
18880
|
+
targetId: string().optional()
|
|
18818
18881
|
}), array(DiscoveredTargetSchema), { auth: "admin" }), method(object({
|
|
18882
|
+
kind: string(),
|
|
18883
|
+
config: record(string(), unknown()),
|
|
18884
|
+
/** See `discoverTargets.targetId` — restore stored secrets for a blank password. */
|
|
18885
|
+
targetId: string().optional()
|
|
18886
|
+
}), ProbeTargetConfigResultSchema, {
|
|
18887
|
+
kind: "mutation",
|
|
18888
|
+
auth: "admin"
|
|
18889
|
+
}), method(object({
|
|
18819
18890
|
targetId: string(),
|
|
18820
18891
|
notification: NotificationSchema
|
|
18821
18892
|
}), SendResultSchema, {
|
|
@@ -18827,7 +18898,16 @@ method(object({}), array(TargetKindSchema)), method(object({}), array(TargetSche
|
|
|
18827
18898
|
}), TestResultSchema, {
|
|
18828
18899
|
kind: "mutation",
|
|
18829
18900
|
auth: "admin"
|
|
18830
|
-
}), method(object({
|
|
18901
|
+
}), method(object({
|
|
18902
|
+
target: TargetSchema,
|
|
18903
|
+
/**
|
|
18904
|
+
* Duplicate flow: create a NEW target id while copying secrets from an
|
|
18905
|
+
* existing row. The UI never holds the stored token; blank / redacted
|
|
18906
|
+
* password fields are restored from this source (D634 still applies if
|
|
18907
|
+
* destinations diverge without a re-typed secret).
|
|
18908
|
+
*/
|
|
18909
|
+
cloneSecretsFrom: string().optional()
|
|
18910
|
+
}), TargetSchema, {
|
|
18831
18911
|
kind: "mutation",
|
|
18832
18912
|
auth: "admin"
|
|
18833
18913
|
}), method(object({ targetId: string() }), _void(), {
|
|
@@ -21906,17 +21986,41 @@ var NC_ALARM_TRIGGERED_MAX_SEC = 3600;
|
|
|
21906
21986
|
var NcAlarmDelaySecSchema = number().int().min(0).max(600);
|
|
21907
21987
|
var NcAlarmTriggeredSecSchema = number().int().min(0).max(NC_ALARM_TRIGGERED_MAX_SEC);
|
|
21908
21988
|
var uniqueModes = (entries) => new Set(entries.map((e) => e.mode)).size === entries.length;
|
|
21989
|
+
/**
|
|
21990
|
+
* What the panel does when a bounded triggered window ends.
|
|
21991
|
+
* - `rearmAfter` — return to the armed mode
|
|
21992
|
+
* - `disableAfter` — auto-disarm
|
|
21993
|
+
* - `doNothing` — stay triggered until a human disarms
|
|
21994
|
+
*/
|
|
21995
|
+
var NcAlarmPostTriggeredActionSchema = _enum([
|
|
21996
|
+
"rearmAfter",
|
|
21997
|
+
"disableAfter",
|
|
21998
|
+
"doNothing"
|
|
21999
|
+
]);
|
|
21909
22000
|
var NcAlarmModeDelaysListSchema = array(object({
|
|
21910
22001
|
mode: AlarmArmModeSchema,
|
|
21911
22002
|
exitDelaySec: NcAlarmDelaySecSchema.optional(),
|
|
21912
22003
|
entryDelaySec: NcAlarmDelaySecSchema.optional(),
|
|
21913
|
-
|
|
22004
|
+
/**
|
|
22005
|
+
* Duration of `triggered` before {@link postTriggeredAction}. Kept as the
|
|
22006
|
+
* historical field name so older clients still read/write a number.
|
|
22007
|
+
*/
|
|
22008
|
+
triggeredDurationSec: NcAlarmTriggeredSecSchema.optional(),
|
|
22009
|
+
postTriggeredAction: NcAlarmPostTriggeredActionSchema.optional(),
|
|
22010
|
+
/**
|
|
22011
|
+
* When this mode may be armed. Absent / null = always allowed (same as a
|
|
22012
|
+
* rule with no `schedule`). Evaluated with {@link isScheduleActive}.
|
|
22013
|
+
*/
|
|
22014
|
+
schedule: NcScheduleSchema.optional()
|
|
21914
22015
|
})).max(8).refine(uniqueModes, { message: "modeDelays: at most one entry per arm mode" });
|
|
21915
22016
|
var NcAlarmModeDelaysEditListSchema = array(object({
|
|
21916
22017
|
mode: AlarmArmModeSchema,
|
|
21917
22018
|
exitDelaySec: NcAlarmDelaySecSchema.nullable().optional(),
|
|
21918
22019
|
entryDelaySec: NcAlarmDelaySecSchema.nullable().optional(),
|
|
21919
|
-
triggeredDurationSec: NcAlarmTriggeredSecSchema.nullable().optional()
|
|
22020
|
+
triggeredDurationSec: NcAlarmTriggeredSecSchema.nullable().optional(),
|
|
22021
|
+
postTriggeredAction: NcAlarmPostTriggeredActionSchema.nullable().optional(),
|
|
22022
|
+
/** Set a schedule, or `null` to clear (mode always allowed again). */
|
|
22023
|
+
schedule: NcScheduleSchema.nullable().optional()
|
|
21920
22024
|
})).max(8).refine(uniqueModes, { message: "modeDelays: at most one edit per arm mode" });
|
|
21921
22025
|
/** One switch of the alarm table: put ONE device on, or take it off, ONE mode's list. */
|
|
21922
22026
|
var NcAlarmNonBlockingEditSchema = object({
|
|
@@ -21988,12 +22092,18 @@ var NcAlarmSettingsSchema = object({
|
|
|
21988
22092
|
/** Grace period between a trigger and the alarm firing. 0 = immediate. */
|
|
21989
22093
|
entryDelaySec: NcAlarmDelaySecSchema,
|
|
21990
22094
|
/**
|
|
21991
|
-
* How long `triggered` lasts before
|
|
21992
|
-
*
|
|
21993
|
-
*
|
|
22095
|
+
* How long `triggered` lasts before {@link postTriggeredAction} runs.
|
|
22096
|
+
* Ignored when the action is `doNothing`. Historical name kept so older
|
|
22097
|
+
* clients still round-trip a number.
|
|
21994
22098
|
*/
|
|
21995
22099
|
triggeredDurationSec: NcAlarmTriggeredSecSchema,
|
|
21996
22100
|
/**
|
|
22101
|
+
* What happens when the triggered window ends. Absent on a blob older than
|
|
22102
|
+
* this field → derived from {@link triggeredDurationSec} (`>0` ⇒ rearmAfter,
|
|
22103
|
+
* else doNothing).
|
|
22104
|
+
*/
|
|
22105
|
+
postTriggeredAction: NcAlarmPostTriggeredActionSchema.optional(),
|
|
22106
|
+
/**
|
|
21997
22107
|
* Deprecated by D630 — every transition is announced. Parsed, never read;
|
|
21998
22108
|
* remove after one release. Optional so an older admin's patch (which still
|
|
21999
22109
|
* sends it) parses rather than failing the whole save.
|
|
@@ -34547,7 +34657,7 @@ var LocalInterfaceSchema = object({
|
|
|
34547
34657
|
name: string(),
|
|
34548
34658
|
family: _enum(["IPv4", "IPv6"]),
|
|
34549
34659
|
address: string(),
|
|
34550
|
-
/** CIDR shorthand (e.g. `192.168.
|
|
34660
|
+
/** CIDR shorthand (e.g. `192.168.x.x/24`). Empty when OS doesn't expose. */
|
|
34551
34661
|
cidr: string(),
|
|
34552
34662
|
/** OS netmask. Stable across calls so the SDK can hash on it. */
|
|
34553
34663
|
netmask: string(),
|
|
@@ -35082,7 +35192,7 @@ var MeshPeerSchema = object({
|
|
|
35082
35192
|
tags: array(string()).readonly(),
|
|
35083
35193
|
/** True when the peer advertises itself as an exit-node candidate. */
|
|
35084
35194
|
exitNodeOption: boolean(),
|
|
35085
|
-
/** Subnet routes the peer advertises (e.g. `["192.168.
|
|
35195
|
+
/** Subnet routes the peer advertises (e.g. `["192.168.x.x/24"]`). */
|
|
35086
35196
|
advertisedRoutes: array(string()).readonly(),
|
|
35087
35197
|
/** Owner account login (e.g. `foo@example.com`). Null for tagged peers. */
|
|
35088
35198
|
userLogin: string().nullable(),
|
|
@@ -46605,6 +46715,12 @@ Object.freeze({
|
|
|
46605
46715
|
addonId: null,
|
|
46606
46716
|
access: "view"
|
|
46607
46717
|
},
|
|
46718
|
+
"notificationOutput.getTarget": {
|
|
46719
|
+
capName: "notification-output",
|
|
46720
|
+
capScope: "system",
|
|
46721
|
+
addonId: null,
|
|
46722
|
+
access: "view"
|
|
46723
|
+
},
|
|
46608
46724
|
"notificationOutput.listTargetKinds": {
|
|
46609
46725
|
capName: "notification-output",
|
|
46610
46726
|
capScope: "system",
|
|
@@ -46617,6 +46733,12 @@ Object.freeze({
|
|
|
46617
46733
|
addonId: null,
|
|
46618
46734
|
access: "view"
|
|
46619
46735
|
},
|
|
46736
|
+
"notificationOutput.probeTargetConfig": {
|
|
46737
|
+
capName: "notification-output",
|
|
46738
|
+
capScope: "system",
|
|
46739
|
+
addonId: null,
|
|
46740
|
+
access: "create"
|
|
46741
|
+
},
|
|
46620
46742
|
"notificationOutput.send": {
|
|
46621
46743
|
capName: "notification-output",
|
|
46622
46744
|
capScope: "system",
|
|
@@ -50326,6 +50448,7 @@ Object.freeze({
|
|
|
50326
50448
|
access: "create"
|
|
50327
50449
|
}
|
|
50328
50450
|
});
|
|
50451
|
+
DeviceType.Camera, DeviceType.Hub, DeviceType.Light, DeviceType.Siren, DeviceType.Switch, DeviceType.Sensor, DeviceType.Thermostat, DeviceType.Climate, DeviceType.Button, DeviceType.EventEmitter, DeviceType.Update, DeviceType.Generic, DeviceType.Notifier, DeviceType.Script, DeviceType.Automation, DeviceType.Lock, DeviceType.Cover, DeviceType.Valve, DeviceType.Humidifier, DeviceType.WaterHeater, DeviceType.Fan, DeviceType.MediaPlayer, DeviceType.AlarmPanel, DeviceType.Control, DeviceType.Presence, DeviceType.Weather, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.Container, DeviceType.Image, DeviceType.PetFeeder;
|
|
50329
50452
|
DeviceFeature.BatteryOperated;
|
|
50330
50453
|
/**
|
|
50331
50454
|
* The vocabulary, in the order a picker offers it.
|
|
@@ -54865,6 +54988,10 @@ function bindingPullsAlarmTrigger(binding, sequenceActionsOf) {
|
|
|
54865
54988
|
if (steps === void 0) return false;
|
|
54866
54989
|
return steps.some((step) => step.kind === "cap" && step.cap === ALARM_PANEL_CAP && step.method === ALARM_PANEL_TRIGGER_METHOD);
|
|
54867
54990
|
}
|
|
54991
|
+
/** True when the rule's deviceState gate names any `armed_*` word. */
|
|
54992
|
+
function ruleGatedOnArmedState(rule) {
|
|
54993
|
+
return (rule.conditions.deviceState?.states ?? []).some((s) => s.trim().toLowerCase().startsWith(ARMED_WORD_PREFIX));
|
|
54994
|
+
}
|
|
54868
54995
|
/**
|
|
54869
54996
|
* A rule belongs to the alarm when its `deviceState` gate names ANY device's
|
|
54870
54997
|
* `armed_*` word, or an on-match binding pulls the alarm panel's trigger
|
|
@@ -54872,10 +54999,19 @@ function bindingPullsAlarmTrigger(binding, sequenceActionsOf) {
|
|
|
54872
54999
|
* escalation.
|
|
54873
55000
|
*/
|
|
54874
55001
|
function ruleBelongsToAlarm(rule) {
|
|
54875
|
-
if ((rule
|
|
55002
|
+
if (ruleGatedOnArmedState(rule)) return true;
|
|
54876
55003
|
for (const binding of rule.actions?.onTrigger ?? []) if (bindingPullsAlarmTrigger(binding, rule.sequenceActionsOf)) return true;
|
|
54877
55004
|
return false;
|
|
54878
55005
|
}
|
|
55006
|
+
/**
|
|
55007
|
+
* A rule gated on `armed_*` auto-triggers the CamStack `alarm-panel` on match
|
|
55008
|
+
* — no `onTrigger` sequence required. Sirens are never part of this path.
|
|
55009
|
+
* An explicit `alarm-panel.trigger` binding without an armed gate stays
|
|
55010
|
+
* explicit actuation only ({@link ruleBelongsToAlarm}).
|
|
55011
|
+
*/
|
|
55012
|
+
function ruleAutoTriggersAlarm(rule) {
|
|
55013
|
+
return ruleGatedOnArmedState(rule);
|
|
55014
|
+
}
|
|
54879
55015
|
/** Whether this controllable should be closed/locked/turned off on arm. */
|
|
54880
55016
|
function alarmDeviceSecureOnArm(input) {
|
|
54881
55017
|
if (!input.controllable) return false;
|
|
@@ -54907,6 +55043,14 @@ var NC_ALARM_DELAY_FIELDS = [
|
|
|
54907
55043
|
"entryDelaySec",
|
|
54908
55044
|
"triggeredDurationSec"
|
|
54909
55045
|
];
|
|
55046
|
+
/**
|
|
55047
|
+
* Derive the post-triggered action from a stored blob that may predate the field:
|
|
55048
|
+
* a positive duration meant re-arm; zero/absent meant stay triggered.
|
|
55049
|
+
*/
|
|
55050
|
+
function derivePostTriggeredAction(action, triggeredDurationSec) {
|
|
55051
|
+
if (action !== void 0) return action;
|
|
55052
|
+
return triggeredDurationSec > 0 ? "rearmAfter" : "doNothing";
|
|
55053
|
+
}
|
|
54910
55054
|
/** The mode's value when it overrides the field, else the global one. */
|
|
54911
55055
|
function pick(override, global) {
|
|
54912
55056
|
return override === void 0 ? {
|
|
@@ -54923,14 +55067,19 @@ function resolveModeDelays(settings, mode) {
|
|
|
54923
55067
|
const exit = pick(entry?.exitDelaySec, settings.exitDelaySec);
|
|
54924
55068
|
const entryDelay = pick(entry?.entryDelaySec, settings.entryDelaySec);
|
|
54925
55069
|
const triggered = pick(entry?.triggeredDurationSec, settings.triggeredDurationSec);
|
|
55070
|
+
const actionOverride = entry?.postTriggeredAction;
|
|
55071
|
+
const actionSource = actionOverride !== void 0 ? "mode" : "default";
|
|
55072
|
+
const postTriggeredAction = derivePostTriggeredAction(actionOverride ?? settings.postTriggeredAction, triggered.value);
|
|
54926
55073
|
return {
|
|
54927
55074
|
exitDelaySec: exit.value,
|
|
54928
55075
|
entryDelaySec: entryDelay.value,
|
|
54929
55076
|
triggeredDurationSec: triggered.value,
|
|
55077
|
+
postTriggeredAction,
|
|
54930
55078
|
source: {
|
|
54931
55079
|
exitDelaySec: exit.source,
|
|
54932
55080
|
entryDelaySec: entryDelay.source,
|
|
54933
|
-
triggeredDurationSec: triggered.source
|
|
55081
|
+
triggeredDurationSec: triggered.source,
|
|
55082
|
+
postTriggeredAction: actionSource
|
|
54934
55083
|
}
|
|
54935
55084
|
};
|
|
54936
55085
|
}
|
|
@@ -54939,6 +55088,14 @@ function edited(current, edit) {
|
|
|
54939
55088
|
if (edit === void 0) return current;
|
|
54940
55089
|
return edit === null ? void 0 : edit;
|
|
54941
55090
|
}
|
|
55091
|
+
function editedAction(current, edit) {
|
|
55092
|
+
if (edit === void 0) return current;
|
|
55093
|
+
return edit === null ? void 0 : edit;
|
|
55094
|
+
}
|
|
55095
|
+
function editedSchedule(current, edit) {
|
|
55096
|
+
if (edit === void 0) return current;
|
|
55097
|
+
return edit === null ? void 0 : edit;
|
|
55098
|
+
}
|
|
54942
55099
|
/**
|
|
54943
55100
|
* Apply per-field edits to the stored overrides. Returns new arrays, never mutates the input;
|
|
54944
55101
|
* an entry with no field left is dropped (the mode inherits everything again).
|
|
@@ -54952,13 +55109,17 @@ function applyModeDelaysEdits(current, edits) {
|
|
|
54952
55109
|
const exit = edited(base.exitDelaySec, edit.exitDelaySec);
|
|
54953
55110
|
const entry = edited(base.entryDelaySec, edit.entryDelaySec);
|
|
54954
55111
|
const triggered = edited(base.triggeredDurationSec, edit.triggeredDurationSec);
|
|
55112
|
+
const action = editedAction(base.postTriggeredAction, edit.postTriggeredAction);
|
|
55113
|
+
const schedule = editedSchedule(base.schedule, edit.schedule);
|
|
54955
55114
|
if (exit !== void 0) next.exitDelaySec = exit;
|
|
54956
55115
|
if (entry !== void 0) next.entryDelaySec = entry;
|
|
54957
55116
|
if (triggered !== void 0) next.triggeredDurationSec = triggered;
|
|
55117
|
+
if (action !== void 0) next.postTriggeredAction = action;
|
|
55118
|
+
if (schedule !== void 0) next.schedule = schedule;
|
|
54958
55119
|
if (at >= 0) out[at] = next;
|
|
54959
55120
|
else out.push(next);
|
|
54960
55121
|
}
|
|
54961
|
-
return out.filter((e) => e.exitDelaySec !== void 0 || e.entryDelaySec !== void 0 || e.triggeredDurationSec !== void 0);
|
|
55122
|
+
return out.filter((e) => e.exitDelaySec !== void 0 || e.entryDelaySec !== void 0 || e.triggeredDurationSec !== void 0 || e.postTriggeredAction !== void 0 || e.schedule !== void 0);
|
|
54962
55123
|
}
|
|
54963
55124
|
/**
|
|
54964
55125
|
* Put ONE device on, or take it off, ONE mode's device-id list. A no-op answers
|
|
@@ -55036,11 +55197,12 @@ function applySecureOnArmEdit(lists, edit) {
|
|
|
55036
55197
|
/** Stable id of the always-present Default profile (migrated from flat settings). */
|
|
55037
55198
|
var NC_ALARM_DEFAULT_PROFILE_ID = "default";
|
|
55038
55199
|
var NC_ALARM_DEFAULT_PROFILE_NAME = "Default";
|
|
55039
|
-
/** Stock delays —
|
|
55200
|
+
/** Stock delays — re-arm 10 s after trigger (inherited by every mode). */
|
|
55040
55201
|
var NC_ALARM_SYSTEM_DEFAULT_DELAYS = {
|
|
55041
55202
|
exitDelaySec: 30,
|
|
55042
55203
|
entryDelaySec: 20,
|
|
55043
|
-
triggeredDurationSec:
|
|
55204
|
+
triggeredDurationSec: 10,
|
|
55205
|
+
postTriggeredAction: "rearmAfter"
|
|
55044
55206
|
};
|
|
55045
55207
|
/** Empty memberships + stock delays + no announce targets. */
|
|
55046
55208
|
function ncAlarmSystemDefaultSettings() {
|
|
@@ -55062,6 +55224,7 @@ function cloneAlarmSettings(settings) {
|
|
|
55062
55224
|
exitDelaySec: settings.exitDelaySec,
|
|
55063
55225
|
entryDelaySec: settings.entryDelaySec,
|
|
55064
55226
|
triggeredDurationSec: settings.triggeredDurationSec,
|
|
55227
|
+
...settings.postTriggeredAction !== void 0 ? { postTriggeredAction: settings.postTriggeredAction } : {},
|
|
55065
55228
|
...settings.announceArm !== void 0 ? { announceArm: settings.announceArm } : {},
|
|
55066
55229
|
announceTargets: [...settings.announceTargets],
|
|
55067
55230
|
nonBlocking: settings.nonBlocking.map((l) => ({
|
|
@@ -55076,7 +55239,22 @@ function cloneAlarmSettings(settings) {
|
|
|
55076
55239
|
mode: l.mode,
|
|
55077
55240
|
deviceIds: [...l.deviceIds]
|
|
55078
55241
|
})),
|
|
55079
|
-
modeDelays: settings.modeDelays.map((e) => ({
|
|
55242
|
+
modeDelays: settings.modeDelays.map((e) => ({
|
|
55243
|
+
mode: e.mode,
|
|
55244
|
+
...e.exitDelaySec !== void 0 ? { exitDelaySec: e.exitDelaySec } : {},
|
|
55245
|
+
...e.entryDelaySec !== void 0 ? { entryDelaySec: e.entryDelaySec } : {},
|
|
55246
|
+
...e.triggeredDurationSec !== void 0 ? { triggeredDurationSec: e.triggeredDurationSec } : {},
|
|
55247
|
+
...e.postTriggeredAction !== void 0 ? { postTriggeredAction: e.postTriggeredAction } : {},
|
|
55248
|
+
...e.schedule !== void 0 ? { schedule: {
|
|
55249
|
+
windows: e.schedule.windows.map((w) => ({
|
|
55250
|
+
days: [...w.days],
|
|
55251
|
+
startMinute: w.startMinute,
|
|
55252
|
+
endMinute: w.endMinute
|
|
55253
|
+
})),
|
|
55254
|
+
...e.schedule.timezone !== void 0 ? { timezone: e.schedule.timezone } : {},
|
|
55255
|
+
...e.schedule.invert === true ? { invert: true } : {}
|
|
55256
|
+
} } : {}
|
|
55257
|
+
}))
|
|
55080
55258
|
};
|
|
55081
55259
|
}
|
|
55082
55260
|
/**
|
|
@@ -58032,4 +58210,4 @@ function buildClipModelRegistry(entries) {
|
|
|
58032
58210
|
/** The built-in catalog's registry. */
|
|
58033
58211
|
var BUILTIN_CLIP_MODELS = buildClipModelRegistry(CLIP_IMAGE_MODELS);
|
|
58034
58212
|
//#endregion
|
|
58035
|
-
export { NC_ALARM_DELAY_MAX_SEC as $,
|
|
58213
|
+
export { NC_ALARM_DELAY_MAX_SEC as $, failureContributionCapability as $n, canonicalHash as $r, SCENE_CONFIRM_DEFAULT_MAX_IMAGE_PX as $t, EMBEDDING_REQUIREMENTS_FAILED as A, unknown as Ai, assertTimelapseCadences as An, resolvePoolMemoryPolicy as Ar, NcRuleInputSchema as At, ListTrackRelationsInputSchema as B, deriveRecordingMode as Bn, storageOccupancyCapability as Br, NcStateSummarySectionIdSchema as Bt, DEFAULT_EVENT_COLOR as C, partialRecord as Ci, addonWidgetsSourceCapability as Cn, readDeviceStateFrom as Cr, NcAlarmSensorsSchema as Ct, DeclaredDevices as D, templateLiteral as Di, applyModeDelaysEdits as Dn, resolveClipSearchMinScore as Dr, NcLegacyRuleActionSequenceSchema as Dt, DETECTION_PIPELINE_CAP_NAME as E, string as Ei, applyBlockingEdit as En, renameAlarmProfile as Er, NcConditionsSchema as Et, EXPORT_DENSE_MAX_RANGES as F, consumableLowPercentOf as Fn, ruleKindOf as Fr, NcScheduleSchema as Ft, MAX_BIRTH_LATENCY_PROXY_MS as G, embeddingRefusalOf as Gn, systemEventFilterApplies as Gr, NcTemplateVarDescriptorSchema as Gt, LockStateSchema as H, describeSystemEventFamilyProblem as Hn, syncActiveAlarmProfileSettings as Hr, NcTaxonomySchema as Ht, FIRST_LEVEL_MACRO_CLASSES as I, cosineSimilarity as In, sceneMonitorCapability as Ir, NcSharedSequenceSchema as It, MOTION_CLOSE_AFTER_MS as J, encodeVectorBase64 as Jn, templateCarriesSummary as Jr, PoolMemoryWatchdog as Jt, MAX_TRACK_PURITIES as K, embeddingRequirementsFailedError as Kn, systemEventSummaryScheduleOf as Kr, OPS_LOG_DEFAULT_LIMIT as Kt, FULL_IMAGE_BBOX as L, createAlarmProfile as Ln, secureActuationFor as Lr, NcSnoozeInputSchema as Lt, EVENT_DENSITY_BATCH_MAX as M, audioModeOf as Mn, ruleBelongsToAlarm as Mr, NcRuleSchema as Mt, EVENT_KIND_BY_CAP as N, buildEventKindDescriptor as Nn, ruleDeviceCompatCapQueries as Nr, NcRuleTargetSchema as Nt, DetectionSourceSchema as O, tuple as Oi, applyNonBlockingEdit as On, resolveLocationMode as Or, NcRuleActionSchema as Ot, EVENT_OWNER_TYPES as P, cloneAlarmSettings as Pn, ruleGroupingApplies as Pr, NcRuleUpdateInputSchema as Pt, NC_ALARM_DELAY_FIELDS as Q, faceGalleryCapability as Qn, DEFAULT_FIRST_SIGHTING_FRESHNESS_MS as Qr, RetrainStatusSchema as Qt, FailureCounters as R, deleteAlarmProfile as Rn, sensorRaisedOf as Rr, NcSnoozeSchema as Rt, CoverStateSchema as S, object as Si, activateAlarmProfile as Sn, plateGalleryCapability as Sr, NcAlarmSensorsInputSchema as St, DETECTION_MACRO_CLASSES as T, strictObject as Ti, alarmPanelCapability as Tn, readTimelapseGeneratedAt as Tr, NcConditionDescriptorSchema as Tt, MAX_ARCHIVED_DEBUG_NOTES as U, embeddingEncoderCapability as Un, systemEventDeliveryProblems as Ur, NcTemplatePreviewInputSchema as Ut, ListTrackRelationsResultSchema as V, describeSystemEventDeliveryProblem as Vn, subKindsOf as Vr, NcSystemEventKindSchema as Vt, MAX_BIRTH_DECISION_RECORDS as W, embeddingModelFailedError as Wn, systemEventFamilyProblems as Wr, NcTemplatePreviewSchema as Wt, MotionTriggeredBySchema as X, eventKindLabel as Xn, vectorDimFromBase64 as Xr, RECORDING_SOURCE_CAMSTACK_ADDON as Xt, MediaFileKindEnum as Y, ensureAlarmProfiles as Yn, templateVarsFor as Yr, RECORDING_EXPORT_MAX_READ_BYTES as Yt, NC_ALARM_DEFAULT_PROFILE_ID as Z, evictionPolicyOfLocation as Zn, zoneAnalyticsCapability as Zr, RebuildObjectEmbeddingsRefusalSchema as Zt, BaseDevice as _, boolean as _i, TrackPuritySchema as _n, memoizePinnedFfmpeg as _r, NC_TANK_SYSTEM_EVENT_KINDS as _t, CLIP_EMBEDDING_STEP_ID as a, CamProfileSchema as ai, SCENE_DEFAULT_UNCOVERED_POLICY as an, isDetectionMacroClass as ar, NC_CLIP_PRE_ROLL_DEFAULT_SEC as at, ClearTrackRelationInputSchema as b, looseObject as bi, TrackSideSchema as bn, parseProcStatus as br, NcAlarmConfigSchema as bt, resolveClusterModelPin as c, defineCustomActions as ci, SceneMonitorSchema as cn, isKnownTemplateVar as cr, NC_CONSUMABLE_LOW_PERCENT_DEFAULT as ct, APPEARANCE_RESOLVES_AMBIGUITY_DEFAULT as d, nodePin as di, SetTrackRelationInputSchema as dn, isScheduleActive as dr, NC_GROUPING_DEFAULT_SEC as dt, evaluateSensorEdge as ei, SCENE_CONFIRM_DEFAULT_TIMEOUT_MS as en, gifDeriveSpeed as er, NC_ALARM_SYSTEM_EVENT_KINDS as et, ARCHIVED_DEBUG_NOTES_DEFAULT_LIMIT as f, normalizeNodeId as fi, TIMELAPSE_DENSE_FLOOR_SEC as fn, isSystemDelivery as fr, NC_GROUPING_MAX_SEC as ft, BIRTH_DECISION_DEFAULT_LIMIT as g, array as gi, TimelapseRuleSchema as gn, mayWriteToLocation as gr, NC_SYSTEM_EVENT_KIND_GROUP_SPECS as gt, ArchivedDebugNoteSchema as h, _enum as hi, TimelapseRulePatchSchema as hn, kebabToCamel as hr, NC_SNOOZE_MAX_MINUTES as ht, CLIP_TEXT_MODELS as i, BaseAddon as ii, SCENE_DEFAULT_QUIET_SECONDS as in, isDefaultAlarmProfileId as ir, NC_CLIP_POST_ROLL_DEFAULT_SEC as it, EMBEDDING_REQUIREMENTS_UNAVAILABLE as j, EventCategory as ji, audioMetricsCapability as jn, ruleAutoTriggersAlarm as jr, NcRulePatchSchema as jt, EMBEDDING_MODEL_FAILED as k, union as ki, applySecureOnArmEdit as kn, resolveModeDelays as kr, NcRuleActionsSchema as kt, APPEARANCE_BIN_COUNT as l, hydrateSchema as li, SetTrackPurityInputSchema as ln, isMediaOwnerType as lr, NC_CONSUMABLE_SYSTEM_EVENT_KINDS as lt, AlarmArmModeSchema as m, ZodObject as mi, TimelapseRuleInputSchema as mn, isVectorIndexDimConflict as mr, NC_SENSOR_TRANSITION_KINDS as mt, DEFAULT_CLIP_MODEL as n, DeviceType as ni, SCENE_DEFAULT_CHECK_INTERVAL_SEC as nn, isAlarmControllableCap as nr, NC_AUDIO_CONFIRM_HITS_DEFAULT as nt, FACE_EMBEDDING_STEP_ID as o, createEvent as oi, SCENE_DIVERGED as on, isEventKindLabelKey as or, NC_CLIP_RETENTION_MAX_SEC as ot, AUDIO_MACRO_LABELS as p, sleep as pi, TRACK_RELATIONS_DEFAULT_LIMIT as pn, isSystemEventSummaryRule as pr, NC_GROUPING_MIN_SEC as pt, MAX_TRACK_RELATIONS as q, embeddingRequirementsUnavailableError as qn, systemEventSummarySplitOf as qr, OpsLogEntrySchema as qt, CLIP_IMAGE_MODELS as r, errMsg as ri, SCENE_DEFAULT_OBSERVATION_SPACING_SEC as rn, isAudioClassName as rr, NC_AUDIO_CONFIRM_WINDOW_SEC_DEFAULT as rt, readClusterModelPinStrict as s, customAction as si, SCENE_RESET_RECAPTURES as sn, isEventOwnerType as sr, NC_CONDITION_CATALOG as st, BUILTIN_CLIP_MODELS as t, isSourceCap as ti, SCENE_DEFAULT_ANCHOR_THRESHOLD as tn, gifFromMp4Args as tr, NC_ALARM_TRIGGERED_MAX_SEC as tt, APPEARANCE_BLOCKS as u, isDeviceScopedCap as ui, SetTrackPurityResultSchema as un, isRetiredClearKey as ur, NC_DEFAULT_SNOOZE_MINUTES as ut, BirthDecisionRecordSchema as v, discriminatedUnion as vi, TrackRelationKindSchema as vn, notificationRulesCapability as vr, NC_TAXONOMY as vt, DEFAULT_TIMELAPSE_PREVIEW_TEXT as w, record as wi, alarmDeviceSecureOnArm as wn, readMotionTriggeredBy as wr, NcAlarmSettingsPatchSchema as wt, ClearTrackRelationResultSchema as x, number as xi, TrackSourceSchema as xn, pipelineAnalyticsCapability as xr, NcAlarmPostTriggeredActionSchema as xt, COCO_TO_MACRO as y, literal as yi, TrackRelationSchema as yn, occupancyScope as yr, NC_TEMPLATE_VARS as yt, LabelAttributionSchema as z, derivePostTriggeredAction as zn, servedTemplateVars as zr, NcSnoozeSuppressedSchema as zt };
|