@camstack/system 1.2.326 → 1.2.328

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 (59) hide show
  1. package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.js +1 -1
  2. package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.mjs +1 -1
  3. package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.js +1 -1
  4. package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.mjs +1 -1
  5. package/dist/builtins/alerts/alerts.addon.js +1 -1
  6. package/dist/builtins/alerts/alerts.addon.mjs +1 -1
  7. package/dist/builtins/autotrack/index.js +1 -1
  8. package/dist/builtins/autotrack/index.mjs +1 -1
  9. package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.js +1 -1
  10. package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.mjs +1 -1
  11. package/dist/builtins/camera-grid/index.js +1 -1
  12. package/dist/builtins/camera-grid/index.mjs +1 -1
  13. package/dist/builtins/composer/composer.addon.js +2 -2
  14. package/dist/builtins/composer/composer.addon.mjs +2 -2
  15. package/dist/builtins/console-logging/index.js +1 -1
  16. package/dist/builtins/console-logging/index.mjs +1 -1
  17. package/dist/builtins/core-blocks/core-blocks.addon.js +2 -2
  18. package/dist/builtins/core-blocks/core-blocks.addon.mjs +2 -2
  19. package/dist/builtins/device-manager/device-manager.addon.js +2 -2
  20. package/dist/builtins/device-manager/device-manager.addon.mjs +2 -2
  21. package/dist/builtins/doorbell/virtual-doorbell.addon.js +1 -1
  22. package/dist/builtins/doorbell/virtual-doorbell.addon.mjs +1 -1
  23. package/dist/builtins/hub-forwarder/index.js +1 -1
  24. package/dist/builtins/hub-forwarder/index.mjs +1 -1
  25. package/dist/builtins/liveness-monitor/liveness-monitor.addon.js +1 -1
  26. package/dist/builtins/liveness-monitor/liveness-monitor.addon.mjs +1 -1
  27. package/dist/builtins/local-auth/local-auth.addon.js +1 -1
  28. package/dist/builtins/local-auth/local-auth.addon.mjs +1 -1
  29. package/dist/builtins/local-network/local-network.addon.js +1 -1
  30. package/dist/builtins/local-network/local-network.addon.mjs +1 -1
  31. package/dist/builtins/loki-logging/index.js +1 -1
  32. package/dist/builtins/loki-logging/index.mjs +1 -1
  33. package/dist/builtins/native-metrics/native-metrics.addon.js +1 -1
  34. package/dist/builtins/native-metrics/native-metrics.addon.mjs +1 -1
  35. package/dist/builtins/platform-probe/index.js +1 -1
  36. package/dist/builtins/platform-probe/index.mjs +1 -1
  37. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.js +1 -1
  38. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.mjs +1 -1
  39. package/dist/builtins/snapshot/index.js +1 -1
  40. package/dist/builtins/snapshot/index.mjs +1 -1
  41. package/dist/builtins/sqlite-storage/filesystem-storage.addon.js +1 -1
  42. package/dist/builtins/sqlite-storage/filesystem-storage.addon.mjs +1 -1
  43. package/dist/builtins/sqlite-storage/sqlite-settings.addon.js +0 -0
  44. package/dist/builtins/sqlite-storage/sqlite-settings.addon.mjs +0 -0
  45. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.js +1 -1
  46. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.mjs +1 -1
  47. package/dist/builtins/system-config/system-config.addon.js +1 -1
  48. package/dist/builtins/system-config/system-config.addon.mjs +1 -1
  49. package/dist/builtins/winston-logging/index.js +1 -1
  50. package/dist/builtins/winston-logging/index.mjs +1 -1
  51. package/dist/{composition-sources-CmxuNDch.js → composition-sources-GkgXF6B9.js} +1 -1
  52. package/dist/{composition-sources-BW7hoZ_9.mjs → composition-sources-I8Rx7woY.mjs} +1 -1
  53. package/dist/{dist-Ctt-04tw.js → dist-BUejKKBm.js} +74 -7
  54. package/dist/{dist-Dgc5PRC9.mjs → dist-DWq17vC8.mjs} +74 -7
  55. package/dist/index.js +1 -1
  56. package/dist/index.mjs +1 -1
  57. package/dist/{retired-settings-keys-DYcQNuVj.mjs → retired-settings-keys-BfHclEyd.mjs} +1 -1
  58. package/dist/{retired-settings-keys-x1JbAv47.js → retired-settings-keys-DBPEzGop.js} +1 -1
  59. package/package.json +1 -1
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  const require_chunk = require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-Ctt-04tw.js");
6
+ const require_dist = require("../../dist-BUejKKBm.js");
7
7
  const require_settle_sources = require("../../settle-sources-Bhsy57y-.js");
8
8
  let node_crypto = require("node:crypto");
9
9
  let node_path = require("node:path");
@@ -1,4 +1,4 @@
1
- import { Kn as errMsg, R as addonPagesCapability, _r as EventCategory, qn as BaseAddon } from "../../dist-Dgc5PRC9.mjs";
1
+ import { Kn as errMsg, R as addonPagesCapability, _r as EventCategory, qn as BaseAddon } from "../../dist-DWq17vC8.mjs";
2
2
  import { t as settleSourcesWithTimeout } from "../../settle-sources-CDtNC8ub.mjs";
3
3
  import { createHash, randomUUID } from "node:crypto";
4
4
  import * as path$1 from "node:path";
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  const require_chunk = require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-Ctt-04tw.js");
6
+ const require_dist = require("../../dist-BUejKKBm.js");
7
7
  const require_settle_sources = require("../../settle-sources-Bhsy57y-.js");
8
8
  let node_crypto = require("node:crypto");
9
9
  let node_path = require("node:path");
@@ -1,4 +1,4 @@
1
- import { B as addonWidgetsCapability, Kn as errMsg, _r as EventCategory, qn as BaseAddon } from "../../dist-Dgc5PRC9.mjs";
1
+ import { B as addonWidgetsCapability, Kn as errMsg, _r as EventCategory, qn as BaseAddon } from "../../dist-DWq17vC8.mjs";
2
2
  import { t as settleSourcesWithTimeout } from "../../settle-sources-CDtNC8ub.mjs";
3
3
  import { createHash, randomUUID } from "node:crypto";
4
4
  import * as path$1 from "node:path";
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-Ctt-04tw.js");
6
+ const require_dist = require("../../dist-BUejKKBm.js");
7
7
  //#region src/builtins/alerts/prune-policy.ts
8
8
  /**
9
9
  * Ids older than `cutoffMs`, oldest first.
@@ -1,4 +1,4 @@
1
- import { Kn as errMsg, V as alertsCapability, _r as EventCategory, n as AlertSchema, qn as BaseAddon, rr as createEvent } from "../../dist-Dgc5PRC9.mjs";
1
+ import { Kn as errMsg, V as alertsCapability, _r as EventCategory, n as AlertSchema, qn as BaseAddon, rr as createEvent } from "../../dist-DWq17vC8.mjs";
2
2
  //#region src/builtins/alerts/prune-policy.ts
3
3
  /**
4
4
  * Ids older than `cutoffMs`, oldest first.
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-Ctt-04tw.js");
6
+ const require_dist = require("../../dist-BUejKKBm.js");
7
7
  //#region src/builtins/autotrack/autotrack-config.ts
8
8
  var DEFAULT_AUTOTRACK_LOOP_CONFIG = {
9
9
  deadZoneFraction: .5,
@@ -1,4 +1,4 @@
1
- import { Kn as errMsg, W as bareAddonId, _ as FIRST_LEVEL_MACRO_CLASSES, _r as EventCategory, lr as isEvent, qn as BaseAddon, rn as ptzAutotrackCapability } from "../../dist-Dgc5PRC9.mjs";
1
+ import { Kn as errMsg, W as bareAddonId, _ as FIRST_LEVEL_MACRO_CLASSES, _r as EventCategory, lr as isEvent, qn as BaseAddon, rn as ptzAutotrackCapability } from "../../dist-DWq17vC8.mjs";
2
2
  //#region src/builtins/autotrack/autotrack-config.ts
3
3
  var DEFAULT_AUTOTRACK_LOOP_CONFIG = {
4
4
  deadZoneFraction: .5,
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  const require_chunk = require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-Ctt-04tw.js");
6
+ const require_dist = require("../../dist-BUejKKBm.js");
7
7
  let node_crypto = require("node:crypto");
8
8
  let buffer = require("buffer");
9
9
  let node_fs_promises = require("node:fs/promises");
@@ -1,4 +1,4 @@
1
- import { Gt as mayWriteToLocation, U as backupCapability, _r as EventCategory, qn as BaseAddon, vn as storageOccupancyCapability } from "../../dist-Dgc5PRC9.mjs";
1
+ import { Gt as mayWriteToLocation, U as backupCapability, _r as EventCategory, qn as BaseAddon, vn as storageOccupancyCapability } from "../../dist-DWq17vC8.mjs";
2
2
  import { randomBytes, randomUUID } from "node:crypto";
3
3
  import { Buffer as Buffer$1 } from "buffer";
4
4
  import * as fsp from "node:fs/promises";
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-Ctt-04tw.js");
6
+ const require_dist = require("../../dist-BUejKKBm.js");
7
7
  let zod = require("zod");
8
8
  let _camstack_types_node = require("@camstack/types/node");
9
9
  let node_path = require("node:path");
@@ -1,4 +1,4 @@
1
- import { Gn as DeviceType, Kn as errMsg, Kt as memoizePinnedFfmpeg, T as MOTION_CLOSE_AFTER_MS, Un as DeviceFeature, Y as cameraGridLayoutCapability, Yt as motionCapability, _r as EventCategory, bn as streamCatalogCapability, h as DeclaredDevices, hn as snapshotCapability, i as BaseDevice, jn as buildFfmpegArgs, m as DERIVED_CAMERA_SILENCED_CAP_NAMES, qn as BaseAddon, rr as createEvent, sr as hydrateSchema, st as declarationOwnerNodeId } from "../../dist-Dgc5PRC9.mjs";
1
+ import { Gn as DeviceType, Kn as errMsg, Kt as memoizePinnedFfmpeg, T as MOTION_CLOSE_AFTER_MS, Un as DeviceFeature, Y as cameraGridLayoutCapability, Yt as motionCapability, _r as EventCategory, bn as streamCatalogCapability, h as DeclaredDevices, hn as snapshotCapability, i as BaseDevice, jn as buildFfmpegArgs, m as DERIVED_CAMERA_SILENCED_CAP_NAMES, qn as BaseAddon, rr as createEvent, sr as hydrateSchema, st as declarationOwnerNodeId } from "../../dist-DWq17vC8.mjs";
2
2
  import { z } from "zod";
3
3
  import { FfmpegProcess } from "@camstack/types/node";
4
4
  import { join } from "node:path";
@@ -3,9 +3,9 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-Ctt-04tw.js");
6
+ const require_dist = require("../../dist-BUejKKBm.js");
7
7
  const require_device_state_changed = require("../../device-state-changed-Bk7cvTnz.js");
8
- const require_composition_sources = require("../../composition-sources-CmxuNDch.js");
8
+ const require_composition_sources = require("../../composition-sources-GkgXF6B9.js");
9
9
  //#region src/builtins/composer/composed-device.ts
10
10
  /**
11
11
  * A composed device: an ordinary `BaseDevice` whose caps are served by the
@@ -1,6 +1,6 @@
1
- import { Fn as compositionFeatureEnabled, Gn as DeviceType, Hn as toExpressionValue, In as compositionItemFieldPath, K as buildCapabilityLookup, Kn as errMsg, Ln as compositionSliceKey, Mn as cloneStatefulExpressionMemory, Nn as composedDeviceRef, On as COMPOSER_ADDON_ID, Pn as composedDeviceStableId, Q as compositionFieldKey, Rn as compositionSourceKey, Z as composerCapability, _r as EventCategory, c as COMPOSED_ITEM_FIXED_FIELDS, en as planComposition, h as DeclaredDevices, i as BaseDevice, qn as BaseAddon, rr as createEvent, t as ALL_CAPABILITY_DEFINITIONS, xt as evaluateCompositionField, zn as createStatefulExpressionMemory } from "../../dist-Dgc5PRC9.mjs";
1
+ import { Fn as compositionFeatureEnabled, Gn as DeviceType, Hn as toExpressionValue, In as compositionItemFieldPath, K as buildCapabilityLookup, Kn as errMsg, Ln as compositionSliceKey, Mn as cloneStatefulExpressionMemory, Nn as composedDeviceRef, On as COMPOSER_ADDON_ID, Pn as composedDeviceStableId, Q as compositionFieldKey, Rn as compositionSourceKey, Z as composerCapability, _r as EventCategory, c as COMPOSED_ITEM_FIXED_FIELDS, en as planComposition, h as DeclaredDevices, i as BaseDevice, qn as BaseAddon, rr as createEvent, t as ALL_CAPABILITY_DEFINITIONS, xt as evaluateCompositionField, zn as createStatefulExpressionMemory } from "../../dist-DWq17vC8.mjs";
2
2
  import { n as parseDeviceStateChanged, t as isRecord$2 } from "../../device-state-changed-DoBbkyEI.mjs";
3
- import { n as normalizedNativeOwner } from "../../composition-sources-BW7hoZ_9.mjs";
3
+ import { n as normalizedNativeOwner } from "../../composition-sources-I8Rx7woY.mjs";
4
4
  import { z } from "zod";
5
5
  //#region src/builtins/composer/composed-device.ts
6
6
  /**
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-Ctt-04tw.js");
6
+ const require_dist = require("../../dist-BUejKKBm.js");
7
7
  const require_formatter = require("../../formatter-DqAKDlvN.js");
8
8
  //#region src/builtins/console-logging/console-destination.ts
9
9
  var LEVEL_RANK = {
@@ -1,4 +1,4 @@
1
- import { Vt as logDestinationCapability, qn as BaseAddon } from "../../dist-Dgc5PRC9.mjs";
1
+ import { Vt as logDestinationCapability, qn as BaseAddon } from "../../dist-DWq17vC8.mjs";
2
2
  import { t as formatLogLine } from "../../formatter-B7qW8bPJ.mjs";
3
3
  //#region src/builtins/console-logging/console-destination.ts
4
4
  var LEVEL_RANK = {
@@ -1,7 +1,7 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_chunk = require("../../chunk-Cek0wNdY.js");
3
- const require_dist = require("../../dist-Ctt-04tw.js");
4
- const require_composition_sources = require("../../composition-sources-CmxuNDch.js");
3
+ const require_dist = require("../../dist-BUejKKBm.js");
4
+ const require_composition_sources = require("../../composition-sources-GkgXF6B9.js");
5
5
  let node_crypto = require("node:crypto");
6
6
  let _camstack_types_node = require("@camstack/types/node");
7
7
  let node_fs_promises = require("node:fs/promises");
@@ -1,5 +1,5 @@
1
- import { $ as compositionSourceRefs, Cn as validateComposition, K as buildCapabilityLookup, Kn as errMsg, Nn as composedDeviceRef, Rn as compositionSourceKey, an as replacedFieldKeys, d as CORE_BLOCK_ADDON_PREFIX, dt as describeComposableCaps, en as planComposition, et as coreBlockAddonId, f as CoreBlockSchema, h as DeclaredDevices, it as coreBlocksCapability, l as COMPOSER_RUNNER_ID, nt as coreBlockIdFromAddonId, qn as BaseAddon, rt as coreBlockSourceKind, t as ALL_CAPABILITY_DEFINITIONS, tt as coreBlockComposition, u as CORE_BLOCKS_ADDON_ID } from "../../dist-Dgc5PRC9.mjs";
2
- import { t as describeCompositionSources } from "../../composition-sources-BW7hoZ_9.mjs";
1
+ import { $ as compositionSourceRefs, Cn as validateComposition, K as buildCapabilityLookup, Kn as errMsg, Nn as composedDeviceRef, Rn as compositionSourceKey, an as replacedFieldKeys, d as CORE_BLOCK_ADDON_PREFIX, dt as describeComposableCaps, en as planComposition, et as coreBlockAddonId, f as CoreBlockSchema, h as DeclaredDevices, it as coreBlocksCapability, l as COMPOSER_RUNNER_ID, nt as coreBlockIdFromAddonId, qn as BaseAddon, rt as coreBlockSourceKind, t as ALL_CAPABILITY_DEFINITIONS, tt as coreBlockComposition, u as CORE_BLOCKS_ADDON_ID } from "../../dist-DWq17vC8.mjs";
2
+ import { t as describeCompositionSources } from "../../composition-sources-I8Rx7woY.mjs";
3
3
  import { randomUUID } from "node:crypto";
4
4
  import { customizationBlockName } from "@camstack/types/node";
5
5
  import * as fs from "node:fs/promises";
@@ -3,8 +3,8 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-Ctt-04tw.js");
7
- const require_retired_settings_keys = require("../../retired-settings-keys-x1JbAv47.js");
6
+ const require_dist = require("../../dist-BUejKKBm.js");
7
+ const require_retired_settings_keys = require("../../retired-settings-keys-DBPEzGop.js");
8
8
  let zod = require("zod");
9
9
  let node_crypto = require("node:crypto");
10
10
  let _camstack_types_node = require("@camstack/types/node");
@@ -1,5 +1,5 @@
1
- import { $n as WELL_KNOWN_TAB_MAP, $t as parseStreamParamsFormPatch, Bt as locationIconKey, Ct as expandContainer, Dt as formatMinutes, Gn as DeviceType, It as legacyAutoLinkIds, J as buildStreamParamsConfigSchema, Kn as errMsg, S as LocationIconIdSchema, Un as DeviceFeature, Wn as DeviceRole, Xt as normalizeUnit, _r as EventCategory, at as createDeviceExtensionProvider, bt as enumerateSchemaFields, cr as isDeviceConfigCap, ft as deviceExtensionCapability, g as DeviceStatusSchema, gr as sleep$1, ht as deviceStatusCapability, j as STREAM_PROFILE_META, ln as runtimeStatePolicyFor, lt as defineExtensionSlotProvider, mn as siteZoneKey, mt as deviceStateCapability, o as CAMERA_SWITCH_ORDER, p as DAY_NAMES, pt as deviceManagerCapability, qn as BaseAddon, s as CAP_NAMES_WITH_STATUS, t as ALL_CAPABILITY_DEFINITIONS, v as FieldClaimModeSchema, w as MINUTES_PER_DAY, y as FieldClaimSchema, yt as enumerateItemArrayFields } from "../../dist-Dgc5PRC9.mjs";
2
- import { n as purgeRetiredSettingsRows } from "../../retired-settings-keys-DYcQNuVj.mjs";
1
+ import { $n as WELL_KNOWN_TAB_MAP, $t as parseStreamParamsFormPatch, Bt as locationIconKey, Ct as expandContainer, Dt as formatMinutes, Gn as DeviceType, It as legacyAutoLinkIds, J as buildStreamParamsConfigSchema, Kn as errMsg, S as LocationIconIdSchema, Un as DeviceFeature, Wn as DeviceRole, Xt as normalizeUnit, _r as EventCategory, at as createDeviceExtensionProvider, bt as enumerateSchemaFields, cr as isDeviceConfigCap, ft as deviceExtensionCapability, g as DeviceStatusSchema, gr as sleep$1, ht as deviceStatusCapability, j as STREAM_PROFILE_META, ln as runtimeStatePolicyFor, lt as defineExtensionSlotProvider, mn as siteZoneKey, mt as deviceStateCapability, o as CAMERA_SWITCH_ORDER, p as DAY_NAMES, pt as deviceManagerCapability, qn as BaseAddon, s as CAP_NAMES_WITH_STATUS, t as ALL_CAPABILITY_DEFINITIONS, v as FieldClaimModeSchema, w as MINUTES_PER_DAY, y as FieldClaimSchema, yt as enumerateItemArrayFields } from "../../dist-DWq17vC8.mjs";
2
+ import { n as purgeRetiredSettingsRows } from "../../retired-settings-keys-BfHclEyd.mjs";
3
3
  import { z } from "zod";
4
4
  import { randomUUID } from "node:crypto";
5
5
  import { canonicalDeviceFingerprint } from "@camstack/types/node";
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-Ctt-04tw.js");
6
+ const require_dist = require("../../dist-BUejKKBm.js");
7
7
  const require_device_state_changed = require("../../device-state-changed-Bk7cvTnz.js");
8
8
  let zod = require("zod");
9
9
  //#region src/builtins/doorbell/trigger-engine.ts
@@ -1,4 +1,4 @@
1
- import { An as SOURCE_CAPS, Bn as evaluateSensorEdge, Gn as DeviceType, Kn as errMsg, Nt as isSameAddonId, Vn as isSourceCap, W as bareAddonId, _r as EventCategory, _t as doorbellFeatureSources, at as createDeviceExtensionProvider, ft as deviceExtensionCapability, gt as doorbellCapability, lt as defineExtensionSlotProvider, q as buildDoorbellCompositionFeature, qn as BaseAddon, rr as createEvent } from "../../dist-Dgc5PRC9.mjs";
1
+ import { An as SOURCE_CAPS, Bn as evaluateSensorEdge, Gn as DeviceType, Kn as errMsg, Nt as isSameAddonId, Vn as isSourceCap, W as bareAddonId, _r as EventCategory, _t as doorbellFeatureSources, at as createDeviceExtensionProvider, ft as deviceExtensionCapability, gt as doorbellCapability, lt as defineExtensionSlotProvider, q as buildDoorbellCompositionFeature, qn as BaseAddon, rr as createEvent } from "../../dist-DWq17vC8.mjs";
2
2
  import { n as parseDeviceStateChanged } from "../../device-state-changed-DoBbkyEI.mjs";
3
3
  import { z } from "zod";
4
4
  //#region src/builtins/doorbell/trigger-engine.ts
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-Ctt-04tw.js");
6
+ const require_dist = require("../../dist-BUejKKBm.js");
7
7
  const require_formatter = require("../../formatter-DqAKDlvN.js");
8
8
  //#region src/builtins/hub-forwarder/hub-forwarder-destination.ts
9
9
  var DEFAULT_OUTBOUND_BUFFER_SIZE = 500;
@@ -1,4 +1,4 @@
1
- import { Vt as logDestinationCapability, qn as BaseAddon } from "../../dist-Dgc5PRC9.mjs";
1
+ import { Vt as logDestinationCapability, qn as BaseAddon } from "../../dist-DWq17vC8.mjs";
2
2
  import { t as formatLogLine } from "../../formatter-B7qW8bPJ.mjs";
3
3
  //#region src/builtins/hub-forwarder/hub-forwarder-destination.ts
4
4
  var DEFAULT_OUTBOUND_BUFFER_SIZE = 500;
@@ -1,6 +1,6 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  require("../../chunk-Cek0wNdY.js");
3
- const require_dist = require("../../dist-Ctt-04tw.js");
3
+ const require_dist = require("../../dist-BUejKKBm.js");
4
4
  //#region src/builtins/liveness-monitor/liveness-checks.ts
5
5
  var NO_DEVICES = "liveness:no-devices";
6
6
  var ALL_OFFLINE = "liveness:all-devices-offline";
@@ -1,4 +1,4 @@
1
- import { E as RECORDING_SOURCE_CAMSTACK_ADDON, Kn as errMsg, _r as EventCategory, k as RecordingStatusSchema, qn as BaseAddon, rr as createEvent } from "../../dist-Dgc5PRC9.mjs";
1
+ import { E as RECORDING_SOURCE_CAMSTACK_ADDON, Kn as errMsg, _r as EventCategory, k as RecordingStatusSchema, qn as BaseAddon, rr as createEvent } from "../../dist-DWq17vC8.mjs";
2
2
  //#region src/builtins/liveness-monitor/liveness-checks.ts
3
3
  var NO_DEVICES = "liveness:no-devices";
4
4
  var ALL_OFFLINE = "liveness:all-devices-offline";
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  const require_chunk = require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-Ctt-04tw.js");
6
+ const require_dist = require("../../dist-BUejKKBm.js");
7
7
  let node_crypto = require("node:crypto");
8
8
  node_crypto = require_chunk.__toESM(node_crypto);
9
9
  let crypto$1 = require("crypto");
@@ -1,5 +1,5 @@
1
1
  import { i as __require, o as __toESM, t as __commonJSMin } from "../../chunk-CNf5ZN-e.mjs";
2
- import { H as authProviderCapability, L as UserRecordSchema, M as ScopedTokenSchema, Sn as userManagementCapability, qn as BaseAddon, r as ApiKeyRecordSchema } from "../../dist-Dgc5PRC9.mjs";
2
+ import { H as authProviderCapability, L as UserRecordSchema, M as ScopedTokenSchema, Sn as userManagementCapability, qn as BaseAddon, r as ApiKeyRecordSchema } from "../../dist-DWq17vC8.mjs";
3
3
  import * as crypto$2 from "node:crypto";
4
4
  import { createHash, randomUUID, timingSafeEqual } from "node:crypto";
5
5
  import nodeCrypto from "crypto";
@@ -1,6 +1,6 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_chunk = require("../../chunk-Cek0wNdY.js");
3
- const require_dist = require("../../dist-Ctt-04tw.js");
3
+ const require_dist = require("../../dist-BUejKKBm.js");
4
4
  const require_tls = require("../../tls-D_wUeOTD.js");
5
5
  let node_fs_promises = require("node:fs/promises");
6
6
  let node_path = require("node:path");
@@ -1,4 +1,4 @@
1
- import { _r as EventCategory, qn as BaseAddon, zt as localNetworkCapability } from "../../dist-Dgc5PRC9.mjs";
1
+ import { _r as EventCategory, qn as BaseAddon, zt as localNetworkCapability } from "../../dist-DWq17vC8.mjs";
2
2
  import { S as readLanHttpState, _ as DEFAULT_LAN_HTTP_PORT, a as writeTlsMode, i as writeExtraSans, l as reissueTlsLeaf, n as readTlsAccessStatus, o as validateUploadedTls, r as readTlsMode, s as ensureTlsCert, t as readExtraSans, y as applyLanHttp } from "../../tls-IM-v7JV4.mjs";
3
3
  import { mkdir, writeFile } from "node:fs/promises";
4
4
  import { join } from "node:path";
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-Ctt-04tw.js");
6
+ const require_dist = require("../../dist-BUejKKBm.js");
7
7
  //#region src/builtins/loki-logging/loki-payload.ts
8
8
  /**
9
9
  * Loki rejects a label name that is not a valid Prometheus label
@@ -1,4 +1,4 @@
1
- import { Vt as logDestinationCapability, qn as BaseAddon } from "../../dist-Dgc5PRC9.mjs";
1
+ import { Vt as logDestinationCapability, qn as BaseAddon } from "../../dist-DWq17vC8.mjs";
2
2
  //#region src/builtins/loki-logging/loki-payload.ts
3
3
  /**
4
4
  * Loki rejects a label name that is not a valid Prometheus label
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  const require_chunk = require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-Ctt-04tw.js");
6
+ const require_dist = require("../../dist-BUejKKBm.js");
7
7
  const require_proc_stat = require("../../proc-stat-DL-WUOhl.js");
8
8
  let node_fs_promises = require("node:fs/promises");
9
9
  let node_fs = require("node:fs");
@@ -1,4 +1,4 @@
1
- import { Et as foldSnapshotByFunction, Kn as errMsg, _r as EventCategory, in as reducePoints, on as resolveBucketMs, qn as BaseAddon, qt as metricsProviderCapability, rr as createEvent } from "../../dist-Dgc5PRC9.mjs";
1
+ import { Et as foldSnapshotByFunction, Kn as errMsg, _r as EventCategory, in as reducePoints, on as resolveBucketMs, qn as BaseAddon, qt as metricsProviderCapability, rr as createEvent } from "../../dist-DWq17vC8.mjs";
2
2
  import { a as parseProcStat, i as nodeProcReader, n as elapsedSecSince, o as parseProcStatusRss, r as lifetimeCpuPercent, t as commandFromCmdline } from "../../proc-stat-CbC55Kqi.mjs";
3
3
  import { access, readFile, readdir } from "node:fs/promises";
4
4
  import * as fs from "node:fs";
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  const require_chunk = require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-Ctt-04tw.js");
6
+ const require_dist = require("../../dist-BUejKKBm.js");
7
7
  let node_fs = require("node:fs");
8
8
  node_fs = require_chunk.__toESM(node_fs);
9
9
  let node_child_process = require("node:child_process");
@@ -1,5 +1,5 @@
1
1
  import { o as __toESM } from "../../chunk-CNf5ZN-e.mjs";
2
- import { Kn as errMsg, _r as EventCategory, ar as emitReadiness, fn as scoreRuntimes, qn as BaseAddon, tn as platformProbeCapability, vt as enumerateInferenceDevices } from "../../dist-Dgc5PRC9.mjs";
2
+ import { Kn as errMsg, _r as EventCategory, ar as emitReadiness, fn as scoreRuntimes, qn as BaseAddon, tn as platformProbeCapability, vt as enumerateInferenceDevices } from "../../dist-DWq17vC8.mjs";
3
3
  import * as fs from "node:fs";
4
4
  import { execFile } from "node:child_process";
5
5
  import * as os from "node:os";
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-Ctt-04tw.js");
6
+ const require_dist = require("../../dist-BUejKKBm.js");
7
7
  //#region src/builtins/remote-access-orchestrator/enabled-providers-reconcile.ts
8
8
  /**
9
9
  * Reconcile the durable `enabledProviders` set against authoritative
@@ -1,4 +1,4 @@
1
- import { _r as EventCategory, qn as BaseAddon } from "../../dist-Dgc5PRC9.mjs";
1
+ import { _r as EventCategory, qn as BaseAddon } from "../../dist-DWq17vC8.mjs";
2
2
  //#region src/builtins/remote-access-orchestrator/enabled-providers-reconcile.ts
3
3
  /**
4
4
  * Reconcile the durable `enabledProviders` set against authoritative
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  const require_chunk = require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-Ctt-04tw.js");
6
+ const require_dist = require("../../dist-BUejKKBm.js");
7
7
  const require_snapshot_courtesy = require("../../snapshot-courtesy-Cqs7GkOV.js");
8
8
  let zod = require("zod");
9
9
  let node_crypto = require("node:crypto");
@@ -1,4 +1,4 @@
1
- import { G as batteryCapability, Gn as DeviceType, Kn as errMsg, Kt as memoizePinnedFfmpeg, Un as DeviceFeature, W as bareAddonId, _r as EventCategory, a as BatteryStatusSchema, hn as snapshotCapability, qn as BaseAddon, ur as nodePin, ut as deriveBatteryPresence, xn as streamQualityLabel } from "../../dist-Dgc5PRC9.mjs";
1
+ import { G as batteryCapability, Gn as DeviceType, Kn as errMsg, Kt as memoizePinnedFfmpeg, Un as DeviceFeature, W as bareAddonId, _r as EventCategory, a as BatteryStatusSchema, hn as snapshotCapability, qn as BaseAddon, ur as nodePin, ut as deriveBatteryPresence, xn as streamQualityLabel } from "../../dist-DWq17vC8.mjs";
2
2
  import { i as renderCourtesyOverlayJpeg, n as courtesyCacheKey, r as renderCourtesyJpeg } from "../../snapshot-courtesy-CZPvteq2.mjs";
3
3
  import { z } from "zod";
4
4
  import { randomUUID } from "node:crypto";
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  const require_chunk = require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-Ctt-04tw.js");
6
+ const require_dist = require("../../dist-BUejKKBm.js");
7
7
  let node_crypto = require("node:crypto");
8
8
  let node_fs_promises = require("node:fs/promises");
9
9
  let node_path = require("node:path");
@@ -1,4 +1,4 @@
1
- import { Tt as filesystemBrowseCapability, qn as BaseAddon, yn as storageProviderCapability } from "../../dist-Dgc5PRC9.mjs";
1
+ import { Tt as filesystemBrowseCapability, qn as BaseAddon, yn as storageProviderCapability } from "../../dist-DWq17vC8.mjs";
2
2
  import { randomUUID } from "node:crypto";
3
3
  import { mkdir, readdir, realpath, statfs } from "node:fs/promises";
4
4
  import * as path$1 from "node:path";
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  const require_chunk = require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-Ctt-04tw.js");
6
+ const require_dist = require("../../dist-BUejKKBm.js");
7
7
  const require_hub_cap_forward = require("../../hub-cap-forward-DmHNjbB0.js");
8
8
  let zod = require("zod");
9
9
  let node_crypto = require("node:crypto");
@@ -1,4 +1,4 @@
1
- import { D as REDACTED_SECRET, Dn as withLocationMode, F as StorageLocationTypeSchema, Gt as mayWriteToLocation, I as StorageMigrationJobSchema, Jt as modeMayWrite, Lt as legacyModeOf, N as StorageCleanupJobSchema, Ot as gbToBytes, P as StorageLocationModeSchema, St as evictionPolicyOfLocation, Wt as mayReadLocation, X as collectSecretConfigKeys, _n as storageMigrationCapability, _r as EventCategory, dr as parseJsonObject, gn as storageCapability, jt as isLocationEnabled, pn as settingsStoreCapability, qn as BaseAddon, sn as resolveLocationMode, x as LegacyStorageLocationDefaultSchema } from "../../dist-Dgc5PRC9.mjs";
1
+ import { D as REDACTED_SECRET, Dn as withLocationMode, F as StorageLocationTypeSchema, Gt as mayWriteToLocation, I as StorageMigrationJobSchema, Jt as modeMayWrite, Lt as legacyModeOf, N as StorageCleanupJobSchema, Ot as gbToBytes, P as StorageLocationModeSchema, St as evictionPolicyOfLocation, Wt as mayReadLocation, X as collectSecretConfigKeys, _n as storageMigrationCapability, _r as EventCategory, dr as parseJsonObject, gn as storageCapability, jt as isLocationEnabled, pn as settingsStoreCapability, qn as BaseAddon, sn as resolveLocationMode, x as LegacyStorageLocationDefaultSchema } from "../../dist-DWq17vC8.mjs";
2
2
  import { t as HUB_CAP_FWD_ACTION } from "../../hub-cap-forward-BdT320dq.mjs";
3
3
  import { z } from "zod";
4
4
  import { randomUUID } from "node:crypto";
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-Ctt-04tw.js");
6
+ const require_dist = require("../../dist-BUejKKBm.js");
7
7
  //#region src/builtins/system-config/system-config.addon.ts
8
8
  /**
9
9
  * Built-in `system-config` addon — Phase 4 of the settings redesign.
@@ -1,4 +1,4 @@
1
- import { Kn as errMsg, qn as BaseAddon, sr as hydrateSchema } from "../../dist-Dgc5PRC9.mjs";
1
+ import { Kn as errMsg, qn as BaseAddon, sr as hydrateSchema } from "../../dist-DWq17vC8.mjs";
2
2
  //#region src/builtins/system-config/system-config.addon.ts
3
3
  /**
4
4
  * Built-in `system-config` addon — Phase 4 of the settings redesign.
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  const require_chunk = require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-Ctt-04tw.js");
6
+ const require_dist = require("../../dist-BUejKKBm.js");
7
7
  const require_formatter = require("../../formatter-DqAKDlvN.js");
8
8
  let node_path = require("node:path");
9
9
  node_path = require_chunk.__toESM(node_path);
@@ -1,4 +1,4 @@
1
- import { Vt as logDestinationCapability, qn as BaseAddon } from "../../dist-Dgc5PRC9.mjs";
1
+ import { Vt as logDestinationCapability, qn as BaseAddon } from "../../dist-DWq17vC8.mjs";
2
2
  import { t as formatLogLine } from "../../formatter-B7qW8bPJ.mjs";
3
3
  import * as path$1 from "node:path";
4
4
  import path from "node:path";
@@ -1,4 +1,4 @@
1
- const require_dist = require("./dist-Ctt-04tw.js");
1
+ const require_dist = require("./dist-BUejKKBm.js");
2
2
  //#region src/builtins/core-blocks/composition-sources.ts
3
3
  /**
4
4
  * Describe what a composition reads and writes for SAVE-time validation
@@ -1,4 +1,4 @@
1
- import { Kn as errMsg, Rn as compositionSourceKey } from "./dist-Dgc5PRC9.mjs";
1
+ import { Kn as errMsg, Rn as compositionSourceKey } from "./dist-DWq17vC8.mjs";
2
2
  //#region src/builtins/core-blocks/composition-sources.ts
3
3
  /**
4
4
  * Describe what a composition reads and writes for SAVE-time validation
@@ -20407,10 +20407,12 @@ var NcMediaPolicySchema = zod.z.object({
20407
20407
  /**
20408
20408
  * Cooldown GRANULARITY over the subject's class — how much a fired
20409
20409
  * notification suppresses.
20410
- * - `shared` (default, and the absent value) — one window for the whole
20411
- * rule/scope: a cat silences the next dog for `cooldownSec`.
20412
- * - `per-class` — an independent window per detected class, so cat→dog fires
20413
- * at once and cat→cat still waits.
20410
+ * - `per-class` (default, and the absent value since 2026-10-01 — D36) — an
20411
+ * independent window per detected class: cat→dog fires at once, cat→cat
20412
+ * still waits.
20413
+ * - `shared` — one window for the whole rule/scope: a cat silences the next
20414
+ * dog for `cooldownSec`. Only written when an operator picks it; it is no
20415
+ * longer what an unset rule means.
20414
20416
  *
20415
20417
  * AUDIO subjects are ALWAYS per-class regardless of this setting: a scream
20416
20418
  * must not be swallowed by a bark's window (the precedent this generalizes —
@@ -20425,8 +20427,11 @@ var NcThrottleSchema = zod.z.object({
20425
20427
  /**
20426
20428
  * Class granularity of the cooldown key. Optional rather than defaulted:
20427
20429
  * a Zod default does NOT run on the addon→addon cap path, so a persisted
20428
- * rule authored before this field simply carries none — and the engine
20429
- * reads absent as `shared`, the pre-existing behaviour.
20430
+ * rule authored before this field simply carries none. The engine used to
20431
+ * read absent as `shared` (D36); since 2026-10-01 it reads absent as
20432
+ * `per-class` — the operator's default — and only an explicit `shared`
20433
+ * still means `shared`. See `cooldownKey` / `keysPerClass` in the rule
20434
+ * engine, and D36's dated note.
20430
20435
  */
20431
20436
  granularity: NcThrottleGranularitySchema.optional()
20432
20437
  });
@@ -24056,13 +24061,19 @@ var pipelineAnalyticsCapability = {
24056
24061
  *
24057
24062
  * Operator-driven from the DI Events page (batch delete). Routes through
24058
24063
  * the same widened track-deletion cascade (design §5.2).
24064
+ *
24065
+ * `sparedMediaIds` (D683 Task 14): media rows the cascade LEFT because a
24066
+ * live stationary entry vouches for them (its key frame, owned by a track
24067
+ * that moved and was kept). Released when the entry retires. Optional:
24068
+ * absent from a provider that predates it.
24059
24069
  */
24060
24070
  deleteTracks: method(zod.z.object({
24061
24071
  deviceId: zod.z.number(),
24062
24072
  trackIds: zod.z.array(zod.z.string()).min(1)
24063
24073
  }), zod.z.object({
24064
24074
  deleted: zod.z.number().int(),
24065
- failed: zod.z.array(zod.z.string()).readonly()
24075
+ failed: zod.z.array(zod.z.string()).readonly(),
24076
+ sparedMediaIds: zod.z.array(zod.z.number().int()).readonly().optional()
24066
24077
  }), {
24067
24078
  kind: "mutation",
24068
24079
  auth: "admin"
@@ -27191,6 +27202,25 @@ var SetCameraSensorsInputSchema = zod.z.object({
27191
27202
  /** `null` removes the attachment: the camera goes back to `not-configured`. */
27192
27203
  config: CameraSensorsConfigSchema.nullable()
27193
27204
  });
27205
+ /**
27206
+ * Why an early occupancy look (D691) was not scheduled.
27207
+ *
27208
+ * - `unknown-camera` — no session was ever dispatched for it, so there is no
27209
+ * node and no config to attach a burst with.
27210
+ * - `out-of-range` — the ask is negative or further out than the orchestrator
27211
+ * will hold a timer for; the parked-object cadence is the answer there.
27212
+ * - `no-burst-producer` — this build has no burst producer at all.
27213
+ * - `already-looked` — this camera's ONE early look since its last session has
27214
+ * been spent. A look's own burst can re-arm a flickering flip, and a look
27215
+ * per arm would chain a burst every ~30 s forever (review H2); the next
27216
+ * real session re-arms the budget.
27217
+ */
27218
+ var OccupancyLookRefusalSchema = zod.z.enum([
27219
+ "unknown-camera",
27220
+ "out-of-range",
27221
+ "no-burst-producer",
27222
+ "already-looked"
27223
+ ]);
27194
27224
  var pipelineOrchestratorCapability = {
27195
27225
  name: "pipeline-orchestrator",
27196
27226
  scope: "system",
@@ -27198,6 +27228,32 @@ var pipelineOrchestratorCapability = {
27198
27228
  nodeIdMode: "data",
27199
27229
  exposesDeviceSettings: true,
27200
27230
  methods: {
27231
+ /**
27232
+ * D691 — an occupancy flip is pending on this camera and can commit
27233
+ * `afterMs` from now: dial ONE occupancy burst at the end of its sustain
27234
+ * window instead of leaving the commit to the 300 s parked-object cadence.
27235
+ * Called by the notification centre, the only component that knows a flip
27236
+ * is pending; the dial is the recheck's own (attach on the last session
27237
+ * node, `requestOccupancyBurst`, detach). One pending look per camera; a
27238
+ * session open at the due time is the look, and no burst is dialled.
27239
+ */
27240
+ requestOccupancyLook: method(zod.z.object({
27241
+ deviceId: zod.z.number().int().nonnegative(),
27242
+ /** How long from NOW until the pending flip's sustain window ends. RELATIVE,
27243
+ * so the caller's clock and the orchestrator's never have to agree. */
27244
+ afterMs: zod.z.number().finite(),
27245
+ /** Why, for the log. */
27246
+ reason: zod.z.string()
27247
+ }), zod.z.object({
27248
+ scheduled: zod.z.boolean(),
27249
+ /** When `scheduled`: how long until the burst is dialled. */
27250
+ dueInMs: zod.z.number().optional(),
27251
+ /** When not `scheduled`: why. */
27252
+ refusedBecause: OccupancyLookRefusalSchema.optional()
27253
+ }), {
27254
+ kind: "mutation",
27255
+ auth: "admin"
27256
+ }),
27201
27257
  /** Internal storage-migration participant lease. While held, dispatch
27202
27258
  * requests are accepted as pending but no new runner attachment starts. */
27203
27259
  pauseForStorageMigration: method(StorageMigrationLeaseInputSchema, zod.z.object({ paused: zod.z.literal(true) }), {
@@ -52233,6 +52289,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
52233
52289
  addonId: null,
52234
52290
  access: "delete"
52235
52291
  },
52292
+ "pipelineOrchestrator.requestOccupancyLook": {
52293
+ capName: "pipeline-orchestrator",
52294
+ capScope: "system",
52295
+ addonId: null,
52296
+ access: "create"
52297
+ },
52236
52298
  "pipelineOrchestrator.resetNodePipelineDefaults": {
52237
52299
  capName: "pipeline-orchestrator",
52238
52300
  capScope: "system",
@@ -56025,6 +56087,11 @@ Object.freeze({
56025
56087
  form: "single",
56026
56088
  optional: false
56027
56089
  }],
56090
+ "pipelineOrchestrator.requestOccupancyLook": [{
56091
+ name: "deviceId",
56092
+ form: "single",
56093
+ optional: false
56094
+ }],
56028
56095
  "pipelineOrchestrator.resolvePipeline": [{
56029
56096
  name: "deviceId",
56030
56097
  form: "single",
@@ -20407,10 +20407,12 @@ var NcMediaPolicySchema = z.object({
20407
20407
  /**
20408
20408
  * Cooldown GRANULARITY over the subject's class — how much a fired
20409
20409
  * notification suppresses.
20410
- * - `shared` (default, and the absent value) — one window for the whole
20411
- * rule/scope: a cat silences the next dog for `cooldownSec`.
20412
- * - `per-class` — an independent window per detected class, so cat→dog fires
20413
- * at once and cat→cat still waits.
20410
+ * - `per-class` (default, and the absent value since 2026-10-01 — D36) — an
20411
+ * independent window per detected class: cat→dog fires at once, cat→cat
20412
+ * still waits.
20413
+ * - `shared` — one window for the whole rule/scope: a cat silences the next
20414
+ * dog for `cooldownSec`. Only written when an operator picks it; it is no
20415
+ * longer what an unset rule means.
20414
20416
  *
20415
20417
  * AUDIO subjects are ALWAYS per-class regardless of this setting: a scream
20416
20418
  * must not be swallowed by a bark's window (the precedent this generalizes —
@@ -20425,8 +20427,11 @@ var NcThrottleSchema = z.object({
20425
20427
  /**
20426
20428
  * Class granularity of the cooldown key. Optional rather than defaulted:
20427
20429
  * a Zod default does NOT run on the addon→addon cap path, so a persisted
20428
- * rule authored before this field simply carries none — and the engine
20429
- * reads absent as `shared`, the pre-existing behaviour.
20430
+ * rule authored before this field simply carries none. The engine used to
20431
+ * read absent as `shared` (D36); since 2026-10-01 it reads absent as
20432
+ * `per-class` — the operator's default — and only an explicit `shared`
20433
+ * still means `shared`. See `cooldownKey` / `keysPerClass` in the rule
20434
+ * engine, and D36's dated note.
20430
20435
  */
20431
20436
  granularity: NcThrottleGranularitySchema.optional()
20432
20437
  });
@@ -24056,13 +24061,19 @@ var pipelineAnalyticsCapability = {
24056
24061
  *
24057
24062
  * Operator-driven from the DI Events page (batch delete). Routes through
24058
24063
  * the same widened track-deletion cascade (design §5.2).
24064
+ *
24065
+ * `sparedMediaIds` (D683 Task 14): media rows the cascade LEFT because a
24066
+ * live stationary entry vouches for them (its key frame, owned by a track
24067
+ * that moved and was kept). Released when the entry retires. Optional:
24068
+ * absent from a provider that predates it.
24059
24069
  */
24060
24070
  deleteTracks: method(z.object({
24061
24071
  deviceId: z.number(),
24062
24072
  trackIds: z.array(z.string()).min(1)
24063
24073
  }), z.object({
24064
24074
  deleted: z.number().int(),
24065
- failed: z.array(z.string()).readonly()
24075
+ failed: z.array(z.string()).readonly(),
24076
+ sparedMediaIds: z.array(z.number().int()).readonly().optional()
24066
24077
  }), {
24067
24078
  kind: "mutation",
24068
24079
  auth: "admin"
@@ -27191,6 +27202,25 @@ var SetCameraSensorsInputSchema = z.object({
27191
27202
  /** `null` removes the attachment: the camera goes back to `not-configured`. */
27192
27203
  config: CameraSensorsConfigSchema.nullable()
27193
27204
  });
27205
+ /**
27206
+ * Why an early occupancy look (D691) was not scheduled.
27207
+ *
27208
+ * - `unknown-camera` — no session was ever dispatched for it, so there is no
27209
+ * node and no config to attach a burst with.
27210
+ * - `out-of-range` — the ask is negative or further out than the orchestrator
27211
+ * will hold a timer for; the parked-object cadence is the answer there.
27212
+ * - `no-burst-producer` — this build has no burst producer at all.
27213
+ * - `already-looked` — this camera's ONE early look since its last session has
27214
+ * been spent. A look's own burst can re-arm a flickering flip, and a look
27215
+ * per arm would chain a burst every ~30 s forever (review H2); the next
27216
+ * real session re-arms the budget.
27217
+ */
27218
+ var OccupancyLookRefusalSchema = z.enum([
27219
+ "unknown-camera",
27220
+ "out-of-range",
27221
+ "no-burst-producer",
27222
+ "already-looked"
27223
+ ]);
27194
27224
  var pipelineOrchestratorCapability = {
27195
27225
  name: "pipeline-orchestrator",
27196
27226
  scope: "system",
@@ -27198,6 +27228,32 @@ var pipelineOrchestratorCapability = {
27198
27228
  nodeIdMode: "data",
27199
27229
  exposesDeviceSettings: true,
27200
27230
  methods: {
27231
+ /**
27232
+ * D691 — an occupancy flip is pending on this camera and can commit
27233
+ * `afterMs` from now: dial ONE occupancy burst at the end of its sustain
27234
+ * window instead of leaving the commit to the 300 s parked-object cadence.
27235
+ * Called by the notification centre, the only component that knows a flip
27236
+ * is pending; the dial is the recheck's own (attach on the last session
27237
+ * node, `requestOccupancyBurst`, detach). One pending look per camera; a
27238
+ * session open at the due time is the look, and no burst is dialled.
27239
+ */
27240
+ requestOccupancyLook: method(z.object({
27241
+ deviceId: z.number().int().nonnegative(),
27242
+ /** How long from NOW until the pending flip's sustain window ends. RELATIVE,
27243
+ * so the caller's clock and the orchestrator's never have to agree. */
27244
+ afterMs: z.number().finite(),
27245
+ /** Why, for the log. */
27246
+ reason: z.string()
27247
+ }), z.object({
27248
+ scheduled: z.boolean(),
27249
+ /** When `scheduled`: how long until the burst is dialled. */
27250
+ dueInMs: z.number().optional(),
27251
+ /** When not `scheduled`: why. */
27252
+ refusedBecause: OccupancyLookRefusalSchema.optional()
27253
+ }), {
27254
+ kind: "mutation",
27255
+ auth: "admin"
27256
+ }),
27201
27257
  /** Internal storage-migration participant lease. While held, dispatch
27202
27258
  * requests are accepted as pending but no new runner attachment starts. */
27203
27259
  pauseForStorageMigration: method(StorageMigrationLeaseInputSchema, z.object({ paused: z.literal(true) }), {
@@ -52233,6 +52289,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
52233
52289
  addonId: null,
52234
52290
  access: "delete"
52235
52291
  },
52292
+ "pipelineOrchestrator.requestOccupancyLook": {
52293
+ capName: "pipeline-orchestrator",
52294
+ capScope: "system",
52295
+ addonId: null,
52296
+ access: "create"
52297
+ },
52236
52298
  "pipelineOrchestrator.resetNodePipelineDefaults": {
52237
52299
  capName: "pipeline-orchestrator",
52238
52300
  capScope: "system",
@@ -56025,6 +56087,11 @@ Object.freeze({
56025
56087
  form: "single",
56026
56088
  optional: false
56027
56089
  }],
56090
+ "pipelineOrchestrator.requestOccupancyLook": [{
56091
+ name: "deviceId",
56092
+ form: "single",
56093
+ optional: false
56094
+ }],
56028
56095
  "pipelineOrchestrator.resolvePipeline": [{
56029
56096
  name: "deviceId",
56030
56097
  form: "single",
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_chunk = require("./chunk-Cek0wNdY.js");
3
- const require_dist = require("./dist-Ctt-04tw.js");
3
+ const require_dist = require("./dist-BUejKKBm.js");
4
4
  const require_builtins_alerts_alerts_addon = require("./builtins/alerts/alerts.addon.js");
5
5
  require("./builtins/alerts/index.js");
6
6
  const require_builtins_composer_composer_addon = require("./builtins/composer/composer.addon.js");
package/dist/index.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  import { a as __toCommonJS, i as __require, n as __esmMin, o as __toESM$1, r as __exportAll, t as __commonJSMin$1 } from "./chunk-CNf5ZN-e.mjs";
2
- import { At as isCollectionArrayMethod, C as METHOD_ACCESS_MAP, Ft as kebabToCamel, Ht as logLevelAtMost, Jn as DATAPLANE_SECRET_HEADER$1, Kn as errMsg$1, Mt as isObjectInput, O as RUNTIME_DEFAULTS, Pt as isVoidInput, Qn as ReadinessTimeoutError, Qt as objectInputDeclaresRequiredDeviceId, Rt as lifecycleJobSchema, Ut as looseSchema, Xn as DEVICE_STATUS_METHOD, Yn as DEVICE_SETTINGS_CONTRIBUTION_METHODS, Zn as ReadinessRegistry, Zt as objectInputDeclaresAddonId, _r as EventCategory$1, b as LOG_LEVEL_RANK, cn as resolveMethodAuth, dn as scopesAllowDeviceCap, dr as parseJsonObject, er as asJsonObject$1, fr as parseJsonUnknown, hr as scopeKey, ir as emitDownForOwnedCaps, kt as isArrayOutputSchema, mr as resolveCapMount, nn as procedureAuthKey, nr as asString$1, or as expandCapMethods, pr as readinessKey, rr as createEvent, t as ALL_CAPABILITY_DEFINITIONS, tr as asNumber, un as scopesAllowAddon, wt as extractNestedAddonId, z as addonSettingsCapability } from "./dist-Dgc5PRC9.mjs";
2
+ import { At as isCollectionArrayMethod, C as METHOD_ACCESS_MAP, Ft as kebabToCamel, Ht as logLevelAtMost, Jn as DATAPLANE_SECRET_HEADER$1, Kn as errMsg$1, Mt as isObjectInput, O as RUNTIME_DEFAULTS, Pt as isVoidInput, Qn as ReadinessTimeoutError, Qt as objectInputDeclaresRequiredDeviceId, Rt as lifecycleJobSchema, Ut as looseSchema, Xn as DEVICE_STATUS_METHOD, Yn as DEVICE_SETTINGS_CONTRIBUTION_METHODS, Zn as ReadinessRegistry, Zt as objectInputDeclaresAddonId, _r as EventCategory$1, b as LOG_LEVEL_RANK, cn as resolveMethodAuth, dn as scopesAllowDeviceCap, dr as parseJsonObject, er as asJsonObject$1, fr as parseJsonUnknown, hr as scopeKey, ir as emitDownForOwnedCaps, kt as isArrayOutputSchema, mr as resolveCapMount, nn as procedureAuthKey, nr as asString$1, or as expandCapMethods, pr as readinessKey, rr as createEvent, t as ALL_CAPABILITY_DEFINITIONS, tr as asNumber, un as scopesAllowAddon, wt as extractNestedAddonId, z as addonSettingsCapability } from "./dist-DWq17vC8.mjs";
3
3
  import { AlertCenterAddon } from "./builtins/alerts/alerts.addon.mjs";
4
4
  import "./builtins/alerts/index.mjs";
5
5
  import { ComposerAddon } from "./builtins/composer/composer.addon.mjs";
@@ -1,4 +1,4 @@
1
- import { er as asJsonObject } from "./dist-Dgc5PRC9.mjs";
1
+ import { er as asJsonObject } from "./dist-DWq17vC8.mjs";
2
2
  //#region src/builtins/sqlite-storage/retired-settings-keys.ts
3
3
  /**
4
4
  * Is THIS node the one whose settings store is the cluster's authority?
@@ -1,4 +1,4 @@
1
- const require_dist = require("./dist-Ctt-04tw.js");
1
+ const require_dist = require("./dist-BUejKKBm.js");
2
2
  //#region src/builtins/sqlite-storage/retired-settings-keys.ts
3
3
  /**
4
4
  * Is THIS node the one whose settings store is the cluster's authority?
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/system",
3
- "version": "1.2.326",
3
+ "version": "1.2.328",
4
4
  "description": "Core addon for CamStack — builtins, pipeline, process management, auth, logging, events",
5
5
  "keywords": [
6
6
  "camstack",