@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.
Files changed (15) hide show
  1. package/dist/{clip-model-registry-CshjlVTF.mjs → clip-model-registry-CGaaUvAD.mjs} +198 -20
  2. package/dist/{clip-model-registry-BFLeI0dr.js → clip-model-registry-DQmmIYXS.js} +215 -19
  3. package/dist/embedding-encoder/index.js +1 -1
  4. package/dist/embedding-encoder/index.mjs +1 -1
  5. package/dist/pipeline-analytics/_stub.js +2 -2
  6. 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
  7. 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
  8. 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
  9. package/dist/pipeline-analytics/{hostInit-D0L1yv82.mjs → hostInit-Bj7szOak.mjs} +3 -3
  10. package/dist/pipeline-analytics/index.js +460 -141
  11. package/dist/pipeline-analytics/index.mjs +460 -141
  12. package/dist/pipeline-analytics/remoteEntry.js +1 -1
  13. package/package.json +1 -1
  14. 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
  15. 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-CDCONfkt.mjs
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
- deviceId: union([number().int(), object({ $var: string().min(1) })]),
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.50.139/` is a URL a browser accepts. The
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
- method(object({}), array(TargetKindSchema)), method(object({}), array(TargetSchema), { auth: "admin" }), method(object({
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({ target: TargetSchema }), TargetSchema, {
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
- triggeredDurationSec: NcAlarmTriggeredSecSchema.optional()
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 the panel re-arms itself.
21992
- * **0 = until an operator disarms it** — the behaviour before this field
21993
- * existed, and therefore what an untouched install keeps doing.
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.1.10/24`). Empty when OS doesn't expose. */
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.1.0/24"]`). */
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.conditions.deviceState?.states ?? []).some((s) => s.trim().toLowerCase().startsWith(ARMED_WORD_PREFIX))) return true;
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 — same numbers the panel shipped with before any editor existed. */
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: 0
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) => ({ ...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 $, gifFromMp4Args as $n, DeviceType as $r, SCENE_CONFIRM_DEFAULT_TIMEOUT_MS as $t, EMBEDDING_REQUIREMENTS_FAILED as A, audioMetricsCapability as An, ruleDeviceCompatCapQueries as Ar, NcRulePatchSchema as At, ListTrackRelationsInputSchema as B, describeSystemEventFamilyProblem as Bn, systemEventDeliveryProblems as Br, NcSystemEventKindSchema as Bt, DEFAULT_EVENT_COLOR as C, string as Ci, alarmDeviceSecureOnArm as Cn, readTimelapseGeneratedAt as Cr, NcAlarmSettingsPatchSchema as Ct, DeclaredDevices as D, unknown as Di, applyNonBlockingEdit as Dn, resolveModeDelays as Dr, NcRuleActionSchema as Dt, DETECTION_PIPELINE_CAP_NAME as E, union as Ei, applyModeDelaysEdits as En, resolveLocationMode as Er, NcLegacyRuleActionSequenceSchema as Et, EXPORT_DENSE_MAX_RANGES as F, cosineSimilarity as Fn, sensorRaisedOf as Fr, NcSharedSequenceSchema as Ft, MAX_BIRTH_LATENCY_PROXY_MS as G, embeddingRequirementsUnavailableError as Gn, templateCarriesSummary as Gr, OPS_LOG_DEFAULT_LIMIT as Gt, LockStateSchema as H, embeddingModelFailedError as Hn, systemEventFilterApplies as Hr, NcTemplatePreviewInputSchema as Ht, FIRST_LEVEL_MACRO_CLASSES as I, createAlarmProfile as In, servedTemplateVars as Ir, NcSnoozeInputSchema as It, MOTION_CLOSE_AFTER_MS as J, eventKindLabel as Jn, zoneAnalyticsCapability as Jr, RECORDING_EXPORT_MAX_READ_BYTES as Jt, MAX_TRACK_PURITIES as K, encodeVectorBase64 as Kn, templateVarsFor as Kr, OpsLogEntrySchema as Kt, FULL_IMAGE_BBOX as L, deleteAlarmProfile as Ln, storageOccupancyCapability as Lr, NcSnoozeSchema as Lt, EVENT_DENSITY_BATCH_MAX as M, buildEventKindDescriptor as Mn, ruleKindOf as Mr, NcRuleTargetSchema as Mt, EVENT_KIND_BY_CAP as N, cloneAlarmSettings as Nn, sceneMonitorCapability as Nr, NcRuleUpdateInputSchema as Nt, DetectionSourceSchema as O, EventCategory as Oi, applySecureOnArmEdit as On, resolvePoolMemoryPolicy as Or, NcRuleActionsSchema as Ot, EVENT_OWNER_TYPES as P, consumableLowPercentOf as Pn, secureActuationFor as Pr, NcScheduleSchema as Pt, NC_ALARM_DELAY_FIELDS as Q, gifDeriveSpeed as Qn, isSourceCap as Qr, SCENE_CONFIRM_DEFAULT_MAX_IMAGE_PX as Qt, FailureCounters as R, deriveRecordingMode as Rn, subKindsOf as Rr, NcSnoozeSuppressedSchema as Rt, CoverStateSchema as S, strictObject as Si, addonWidgetsSourceCapability as Sn, readMotionTriggeredBy as Sr, NcAlarmSensorsSchema as St, DETECTION_MACRO_CLASSES as T, tuple as Ti, applyBlockingEdit as Tn, resolveClipSearchMinScore as Tr, NcConditionsSchema as Tt, MAX_ARCHIVED_DEBUG_NOTES as U, embeddingRefusalOf as Un, systemEventSummaryScheduleOf as Ur, NcTemplatePreviewSchema as Ut, ListTrackRelationsResultSchema as V, embeddingEncoderCapability as Vn, systemEventFamilyProblems as Vr, NcTaxonomySchema as Vt, MAX_BIRTH_DECISION_RECORDS as W, embeddingRequirementsFailedError as Wn, systemEventSummarySplitOf as Wr, NcTemplateVarDescriptorSchema as Wt, MotionTriggeredBySchema as X, faceGalleryCapability as Xn, canonicalHash as Xr, RebuildObjectEmbeddingsRefusalSchema as Xt, MediaFileKindEnum as Y, evictionPolicyOfLocation as Yn, DEFAULT_FIRST_SIGHTING_FRESHNESS_MS as Yr, RECORDING_SOURCE_CAMSTACK_ADDON as Yt, NC_ALARM_DEFAULT_PROFILE_ID as Z, failureContributionCapability as Zn, evaluateSensorEdge as Zr, RetrainStatusSchema as Zt, BaseDevice as _, looseObject as _i, TrackRelationKindSchema as _n, occupancyScope as _r, NC_TANK_SYSTEM_EVENT_KINDS as _t, CLIP_EMBEDDING_STEP_ID as a, defineCustomActions as ai, SCENE_DIVERGED as an, isEventOwnerType as ar, NC_CLIP_PRE_ROLL_DEFAULT_SEC as at, ClearTrackRelationInputSchema as b, partialRecord as bi, TrackSourceSchema as bn, plateGalleryCapability as br, NcAlarmConfigSchema as bt, resolveClusterModelPin as c, nodePin as ci, SetTrackPurityInputSchema as cn, isRetiredClearKey as cr, NC_CONSUMABLE_LOW_PERCENT_DEFAULT as ct, APPEARANCE_RESOLVES_AMBIGUITY_DEFAULT as d, ZodObject as di, TIMELAPSE_DENSE_FLOOR_SEC as dn, isSystemEventSummaryRule as dr, NC_GROUPING_DEFAULT_SEC as dt, errMsg as ei, SCENE_DEFAULT_ANCHOR_THRESHOLD as en, isAlarmControllableCap as er, NC_ALARM_SYSTEM_EVENT_KINDS as et, ARCHIVED_DEBUG_NOTES_DEFAULT_LIMIT as f, _enum as fi, TRACK_RELATIONS_DEFAULT_LIMIT as fn, isVectorIndexDimConflict as fr, NC_GROUPING_MAX_SEC as ft, BIRTH_DECISION_DEFAULT_LIMIT as g, literal as gi, TrackPuritySchema as gn, notificationRulesCapability as gr, NC_SYSTEM_EVENT_KIND_GROUP_SPECS as gt, ArchivedDebugNoteSchema as h, discriminatedUnion as hi, TimelapseRuleSchema as hn, memoizePinnedFfmpeg as hr, NC_SNOOZE_MAX_MINUTES as ht, CLIP_TEXT_MODELS as i, customAction as ii, SCENE_DEFAULT_UNCOVERED_POLICY as in, isEventKindLabelKey as ir, NC_CLIP_POST_ROLL_DEFAULT_SEC as it, EMBEDDING_REQUIREMENTS_UNAVAILABLE as j, audioModeOf as jn, ruleGroupingApplies as jr, NcRuleSchema as jt, EMBEDDING_MODEL_FAILED as k, assertTimelapseCadences as kn, ruleBelongsToAlarm as kr, NcRuleInputSchema as kt, APPEARANCE_BIN_COUNT as l, normalizeNodeId as li, SetTrackPurityResultSchema as ln, isScheduleActive as lr, NC_CONSUMABLE_SYSTEM_EVENT_KINDS as lt, AlarmArmModeSchema as m, boolean as mi, TimelapseRulePatchSchema as mn, mayWriteToLocation as mr, NC_SENSOR_TRANSITION_KINDS as mt, DEFAULT_CLIP_MODEL as n, CamProfileSchema as ni, SCENE_DEFAULT_OBSERVATION_SPACING_SEC as nn, isDefaultAlarmProfileId as nr, NC_AUDIO_CONFIRM_HITS_DEFAULT as nt, FACE_EMBEDDING_STEP_ID as o, hydrateSchema as oi, SCENE_RESET_RECAPTURES as on, isKnownTemplateVar as or, NC_CLIP_RETENTION_MAX_SEC as ot, AUDIO_MACRO_LABELS as p, array as pi, TimelapseRuleInputSchema as pn, kebabToCamel as pr, NC_GROUPING_MIN_SEC as pt, MAX_TRACK_RELATIONS as q, ensureAlarmProfiles as qn, vectorDimFromBase64 as qr, PoolMemoryWatchdog as qt, CLIP_IMAGE_MODELS as r, createEvent as ri, SCENE_DEFAULT_QUIET_SECONDS as rn, isDetectionMacroClass as rr, NC_AUDIO_CONFIRM_WINDOW_SEC_DEFAULT as rt, readClusterModelPinStrict as s, isDeviceScopedCap as si, SceneMonitorSchema as sn, isMediaOwnerType as sr, NC_CONDITION_CATALOG as st, BUILTIN_CLIP_MODELS as t, BaseAddon as ti, SCENE_DEFAULT_CHECK_INTERVAL_SEC as tn, isAudioClassName as tr, NC_ALARM_TRIGGERED_MAX_SEC as tt, APPEARANCE_BLOCKS as u, sleep as ui, SetTrackRelationInputSchema as un, isSystemDelivery as ur, NC_DEFAULT_SNOOZE_MINUTES as ut, BirthDecisionRecordSchema as v, number as vi, TrackRelationSchema as vn, parseProcStatus as vr, NC_TAXONOMY as vt, DEFAULT_TIMELAPSE_PREVIEW_TEXT as w, templateLiteral as wi, alarmPanelCapability as wn, renameAlarmProfile as wr, NcConditionDescriptorSchema as wt, ClearTrackRelationResultSchema as x, record as xi, activateAlarmProfile as xn, readDeviceStateFrom as xr, NcAlarmSensorsInputSchema as xt, COCO_TO_MACRO as y, object as yi, TrackSideSchema as yn, pipelineAnalyticsCapability as yr, NC_TEMPLATE_VARS as yt, LabelAttributionSchema as z, describeSystemEventDeliveryProblem as zn, syncActiveAlarmProfileSettings as zr, NcStateSummarySectionIdSchema as zt };
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 };