@camstack/system 1.2.323 → 1.2.324

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-DkVxrXLm.js → composition-sources-BMyxu0Gs.js} +1 -1
  52. package/dist/{composition-sources-CeAPNF5Q.mjs → composition-sources-C7tZE1JO.mjs} +1 -1
  53. package/dist/{dist-Bs6UyVGd.mjs → dist-BjwcGX3O.mjs} +140 -1
  54. package/dist/{dist-Bup0sTZb.js → dist-DZtw79V-.js} +140 -1
  55. package/dist/index.js +1 -1
  56. package/dist/index.mjs +1 -1
  57. package/dist/{retired-settings-keys-LROp1DXx.mjs → retired-settings-keys-B3mGdOSU.mjs} +1 -1
  58. package/dist/{retired-settings-keys-Db0P4Yvn.js → retired-settings-keys-DkLVDf0-.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-Bup0sTZb.js");
6
+ const require_dist = require("../../dist-DZtw79V-.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-Bs6UyVGd.mjs";
1
+ import { Kn as errMsg, R as addonPagesCapability, _r as EventCategory, qn as BaseAddon } from "../../dist-BjwcGX3O.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-Bup0sTZb.js");
6
+ const require_dist = require("../../dist-DZtw79V-.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-Bs6UyVGd.mjs";
1
+ import { B as addonWidgetsCapability, Kn as errMsg, _r as EventCategory, qn as BaseAddon } from "../../dist-BjwcGX3O.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-Bup0sTZb.js");
6
+ const require_dist = require("../../dist-DZtw79V-.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-Bs6UyVGd.mjs";
1
+ import { Kn as errMsg, V as alertsCapability, _r as EventCategory, n as AlertSchema, qn as BaseAddon, rr as createEvent } from "../../dist-BjwcGX3O.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-Bup0sTZb.js");
6
+ const require_dist = require("../../dist-DZtw79V-.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-Bs6UyVGd.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-BjwcGX3O.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-Bup0sTZb.js");
6
+ const require_dist = require("../../dist-DZtw79V-.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-Bs6UyVGd.mjs";
1
+ import { Gt as mayWriteToLocation, U as backupCapability, _r as EventCategory, qn as BaseAddon, vn as storageOccupancyCapability } from "../../dist-BjwcGX3O.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-Bup0sTZb.js");
6
+ const require_dist = require("../../dist-DZtw79V-.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-Bs6UyVGd.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-BjwcGX3O.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-Bup0sTZb.js");
6
+ const require_dist = require("../../dist-DZtw79V-.js");
7
7
  const require_device_state_changed = require("../../device-state-changed-Bk7cvTnz.js");
8
- const require_composition_sources = require("../../composition-sources-DkVxrXLm.js");
8
+ const require_composition_sources = require("../../composition-sources-BMyxu0Gs.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-Bs6UyVGd.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-BjwcGX3O.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-CeAPNF5Q.mjs";
3
+ import { n as normalizedNativeOwner } from "../../composition-sources-C7tZE1JO.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-Bup0sTZb.js");
6
+ const require_dist = require("../../dist-DZtw79V-.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-Bs6UyVGd.mjs";
1
+ import { Vt as logDestinationCapability, qn as BaseAddon } from "../../dist-BjwcGX3O.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-Bup0sTZb.js");
4
- const require_composition_sources = require("../../composition-sources-DkVxrXLm.js");
3
+ const require_dist = require("../../dist-DZtw79V-.js");
4
+ const require_composition_sources = require("../../composition-sources-BMyxu0Gs.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-Bs6UyVGd.mjs";
2
- import { t as describeCompositionSources } from "../../composition-sources-CeAPNF5Q.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-BjwcGX3O.mjs";
2
+ import { t as describeCompositionSources } from "../../composition-sources-C7tZE1JO.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-Bup0sTZb.js");
7
- const require_retired_settings_keys = require("../../retired-settings-keys-Db0P4Yvn.js");
6
+ const require_dist = require("../../dist-DZtw79V-.js");
7
+ const require_retired_settings_keys = require("../../retired-settings-keys-DkLVDf0-.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-Bs6UyVGd.mjs";
2
- import { n as purgeRetiredSettingsRows } from "../../retired-settings-keys-LROp1DXx.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-BjwcGX3O.mjs";
2
+ import { n as purgeRetiredSettingsRows } from "../../retired-settings-keys-B3mGdOSU.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-Bup0sTZb.js");
6
+ const require_dist = require("../../dist-DZtw79V-.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-Bs6UyVGd.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-BjwcGX3O.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-Bup0sTZb.js");
6
+ const require_dist = require("../../dist-DZtw79V-.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-Bs6UyVGd.mjs";
1
+ import { Vt as logDestinationCapability, qn as BaseAddon } from "../../dist-BjwcGX3O.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-Bup0sTZb.js");
3
+ const require_dist = require("../../dist-DZtw79V-.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-Bs6UyVGd.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-BjwcGX3O.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-Bup0sTZb.js");
6
+ const require_dist = require("../../dist-DZtw79V-.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-Bs6UyVGd.mjs";
2
+ import { H as authProviderCapability, L as UserRecordSchema, M as ScopedTokenSchema, Sn as userManagementCapability, qn as BaseAddon, r as ApiKeyRecordSchema } from "../../dist-BjwcGX3O.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-Bup0sTZb.js");
3
+ const require_dist = require("../../dist-DZtw79V-.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-Bs6UyVGd.mjs";
1
+ import { _r as EventCategory, qn as BaseAddon, zt as localNetworkCapability } from "../../dist-BjwcGX3O.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-Bup0sTZb.js");
6
+ const require_dist = require("../../dist-DZtw79V-.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-Bs6UyVGd.mjs";
1
+ import { Vt as logDestinationCapability, qn as BaseAddon } from "../../dist-BjwcGX3O.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-Bup0sTZb.js");
6
+ const require_dist = require("../../dist-DZtw79V-.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-Bs6UyVGd.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-BjwcGX3O.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-Bup0sTZb.js");
6
+ const require_dist = require("../../dist-DZtw79V-.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-Bs6UyVGd.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-BjwcGX3O.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-Bup0sTZb.js");
6
+ const require_dist = require("../../dist-DZtw79V-.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-Bs6UyVGd.mjs";
1
+ import { _r as EventCategory, qn as BaseAddon } from "../../dist-BjwcGX3O.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-Bup0sTZb.js");
6
+ const require_dist = require("../../dist-DZtw79V-.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-Bs6UyVGd.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-BjwcGX3O.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-Bup0sTZb.js");
6
+ const require_dist = require("../../dist-DZtw79V-.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-Bs6UyVGd.mjs";
1
+ import { Tt as filesystemBrowseCapability, qn as BaseAddon, yn as storageProviderCapability } from "../../dist-BjwcGX3O.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-Bup0sTZb.js");
6
+ const require_dist = require("../../dist-DZtw79V-.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-Bs6UyVGd.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-BjwcGX3O.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-Bup0sTZb.js");
6
+ const require_dist = require("../../dist-DZtw79V-.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-Bs6UyVGd.mjs";
1
+ import { Kn as errMsg, qn as BaseAddon, sr as hydrateSchema } from "../../dist-BjwcGX3O.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-Bup0sTZb.js");
6
+ const require_dist = require("../../dist-DZtw79V-.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-Bs6UyVGd.mjs";
1
+ import { Vt as logDestinationCapability, qn as BaseAddon } from "../../dist-BjwcGX3O.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-Bup0sTZb.js");
1
+ const require_dist = require("./dist-DZtw79V-.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-Bs6UyVGd.mjs";
1
+ import { Kn as errMsg, Rn as compositionSourceKey } from "./dist-BjwcGX3O.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
@@ -701,7 +701,7 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
701
701
  return EventCategory;
702
702
  }({});
703
703
  //#endregion
704
- //#region ../types/dist/sleep-C-v96WpE.mjs
704
+ //#region ../types/dist/sleep-gU6hqv4_.mjs
705
705
  /**
706
706
  * The audio chunk plane's byte format, and the ONE expansion from a coded
707
707
  * window to float samples (D455).
@@ -6066,6 +6066,82 @@ var ArchivedDebugNoteQueryInputSchema = z.object({
6066
6066
  /** Max rows returned, newest-first. */
6067
6067
  limit: z.number().int().min(1).max(1e3).optional()
6068
6068
  });
6069
+ var TrackRelationKindSchema = z.enum(["same-subject", "different-subjects"]);
6070
+ var TrackSideSchema = z.enum(["before", "after"]);
6071
+ var TrackPurityValueSchema = z.enum(["mixed", "not-a-subject"]);
6072
+ var TrackRelationSchema = z.object({
6073
+ id: z.string(),
6074
+ deviceId: z.number().int(),
6075
+ leftTrackId: z.string(),
6076
+ rightTrackId: z.string(),
6077
+ leftSide: TrackSideSchema.nullable(),
6078
+ rightSide: TrackSideSchema.nullable(),
6079
+ relation: TrackRelationKindSchema,
6080
+ presence: z.literal("continuous").nullable(),
6081
+ leftStartedAt: z.number().int().nullable(),
6082
+ rightStartedAt: z.number().int().nullable(),
6083
+ createdAt: z.number().int(),
6084
+ updatedAt: z.number().int(),
6085
+ author: z.string().nullable()
6086
+ });
6087
+ var TrackPuritySchema = z.object({
6088
+ id: z.string(),
6089
+ deviceId: z.number().int(),
6090
+ sourceTrackId: z.string(),
6091
+ purity: TrackPurityValueSchema,
6092
+ switchAtMs: z.number().int().nullable(),
6093
+ startedAt: z.number().int().nullable(),
6094
+ createdAt: z.number().int(),
6095
+ updatedAt: z.number().int(),
6096
+ author: z.string().nullable()
6097
+ });
6098
+ var SetTrackRelationInputSchema = z.object({
6099
+ deviceId: z.number().int(),
6100
+ trackId: z.string().min(1),
6101
+ otherTrackId: z.string().min(1),
6102
+ relation: TrackRelationKindSchema,
6103
+ presence: z.literal("continuous").optional(),
6104
+ trackSide: TrackSideSchema.optional(),
6105
+ otherSide: TrackSideSchema.optional()
6106
+ });
6107
+ var ClearTrackRelationInputSchema = z.object({
6108
+ deviceId: z.number().int(),
6109
+ trackId: z.string().min(1),
6110
+ otherTrackId: z.string().min(1)
6111
+ });
6112
+ var ClearTrackRelationResultSchema = z.object({ cleared: z.boolean() });
6113
+ var SetTrackPurityInputSchema = z.object({
6114
+ deviceId: z.number().int(),
6115
+ trackId: z.string().min(1),
6116
+ purity: z.enum([
6117
+ "pure",
6118
+ "mixed",
6119
+ "not-a-subject"
6120
+ ]),
6121
+ switchAtMs: z.number().int().optional()
6122
+ });
6123
+ /** `null` when `pure` cleared the row. */
6124
+ var SetTrackPurityResultSchema = z.object({ purity: TrackPuritySchema.nullable() });
6125
+ var ListTrackRelationsInputSchema = z.object({
6126
+ deviceId: z.number().int(),
6127
+ trackId: z.string().optional(),
6128
+ since: z.number().int().optional(),
6129
+ until: z.number().int().optional(),
6130
+ limit: z.number().int().min(1).max(5e3).optional()
6131
+ });
6132
+ var ListTrackRelationsResultSchema = z.object({
6133
+ relations: z.array(TrackRelationSchema).readonly(),
6134
+ purities: z.array(TrackPuritySchema).readonly(),
6135
+ truncated: z.boolean()
6136
+ });
6137
+ z.enum([
6138
+ "unknown-track",
6139
+ "cross-device",
6140
+ "self-relation",
6141
+ "contradiction",
6142
+ "switch-outside-track",
6143
+ "switch-needs-mixed"
6144
+ ]);
6069
6145
  /** Friendly display labels for stream quality IDs. */
6070
6146
  var STREAM_QUALITY_LABELS = {
6071
6147
  high: "High",
@@ -24063,6 +24139,25 @@ var pipelineAnalyticsCapability = {
24063
24139
  */
24064
24140
  listArchivedDebugNotes: method(ArchivedDebugNoteQueryInputSchema, z.array(ArchivedDebugNoteSchema).readonly(), { kind: "query" }),
24065
24141
  /**
24142
+ * Tracking-bench ground truth (D681): "this track and that one are the
24143
+ * same subject" / "different subjects". One row per unordered pair —
24144
+ * re-marking replaces it — and a mark that contradicts an existing chain
24145
+ * is REFUSED with the chain named. Writing a mark also sets `debug` on
24146
+ * both tracks. `protected`, matching `setTrackFlags`: marking is done from
24147
+ * the viewer's track detail by an authenticated non-admin session.
24148
+ */
24149
+ setTrackRelation: method(SetTrackRelationInputSchema, TrackRelationSchema, { kind: "mutation" }),
24150
+ /** Remove the mark between two tracks. */
24151
+ clearTrackRelation: method(ClearTrackRelationInputSchema, ClearTrackRelationResultSchema, { kind: "mutation" }),
24152
+ /**
24153
+ * A track that is not ONE subject: `mixed` (two subjects, optionally
24154
+ * switching at `switchAtMs`) or `not-a-subject`. `pure` clears the mark
24155
+ * and answers `{ purity: null }` (D681).
24156
+ */
24157
+ setTrackPurity: method(SetTrackPurityInputSchema, SetTrackPurityResultSchema, { kind: "mutation" }),
24158
+ /** A camera's marks, optionally one track's, windowed by track start. */
24159
+ listTrackRelations: method(ListTrackRelationsInputSchema, ListTrackRelationsResultSchema, { kind: "query" }),
24160
+ /**
24066
24161
  * Birth decisions — one row per resolved confirmation-gate verdict (D409).
24067
24162
  *
24068
24163
  * The READ half of a measurement, and only that: it gates nothing and no
@@ -51304,6 +51399,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
51304
51399
  addonId: null,
51305
51400
  access: "create"
51306
51401
  },
51402
+ "pipelineAnalytics.clearTrackRelation": {
51403
+ capName: "pipeline-analytics",
51404
+ capScope: "device",
51405
+ addonId: null,
51406
+ access: "delete"
51407
+ },
51307
51408
  "pipelineAnalytics.clearTracks": {
51308
51409
  capName: "pipeline-analytics",
51309
51410
  capScope: "device",
@@ -51556,6 +51657,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
51556
51657
  addonId: null,
51557
51658
  access: "view"
51558
51659
  },
51660
+ "pipelineAnalytics.listTrackRelations": {
51661
+ capName: "pipeline-analytics",
51662
+ capScope: "device",
51663
+ addonId: null,
51664
+ access: "view"
51665
+ },
51559
51666
  "pipelineAnalytics.listTracks": {
51560
51667
  capName: "pipeline-analytics",
51561
51668
  capScope: "device",
@@ -51670,6 +51777,18 @@ var METHOD_ACCESS_MAP = Object.freeze({
51670
51777
  addonId: null,
51671
51778
  access: "create"
51672
51779
  },
51780
+ "pipelineAnalytics.setTrackPurity": {
51781
+ capName: "pipeline-analytics",
51782
+ capScope: "device",
51783
+ addonId: null,
51784
+ access: "create"
51785
+ },
51786
+ "pipelineAnalytics.setTrackRelation": {
51787
+ capName: "pipeline-analytics",
51788
+ capScope: "device",
51789
+ addonId: null,
51790
+ access: "create"
51791
+ },
51673
51792
  "pipelineAnalytics.startStorageMigrationMove": {
51674
51793
  capName: "pipeline-analytics",
51675
51794
  capScope: "device",
@@ -55590,6 +55709,11 @@ Object.freeze({
55590
55709
  form: "single",
55591
55710
  optional: false
55592
55711
  }],
55712
+ "pipelineAnalytics.clearTrackRelation": [{
55713
+ name: "deviceId",
55714
+ form: "single",
55715
+ optional: false
55716
+ }],
55593
55717
  "pipelineAnalytics.clearTracks": [{
55594
55718
  name: "deviceId",
55595
55719
  form: "single",
@@ -55740,6 +55864,11 @@ Object.freeze({
55740
55864
  form: "single",
55741
55865
  optional: false
55742
55866
  }],
55867
+ "pipelineAnalytics.listTrackRelations": [{
55868
+ name: "deviceId",
55869
+ form: "single",
55870
+ optional: false
55871
+ }],
55743
55872
  "pipelineAnalytics.listTracks": [{
55744
55873
  name: "deviceId",
55745
55874
  form: "single",
@@ -55810,6 +55939,16 @@ Object.freeze({
55810
55939
  form: "single",
55811
55940
  optional: false
55812
55941
  }],
55942
+ "pipelineAnalytics.setTrackPurity": [{
55943
+ name: "deviceId",
55944
+ form: "single",
55945
+ optional: false
55946
+ }],
55947
+ "pipelineAnalytics.setTrackRelation": [{
55948
+ name: "deviceId",
55949
+ form: "single",
55950
+ optional: false
55951
+ }],
55813
55952
  "pipelineAnalytics.wipeAllAnalytics": [{
55814
55953
  name: "deviceId",
55815
55954
  form: "single",
@@ -701,7 +701,7 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
701
701
  return EventCategory;
702
702
  }({});
703
703
  //#endregion
704
- //#region ../types/dist/sleep-C-v96WpE.mjs
704
+ //#region ../types/dist/sleep-gU6hqv4_.mjs
705
705
  /**
706
706
  * The audio chunk plane's byte format, and the ONE expansion from a coded
707
707
  * window to float samples (D455).
@@ -6066,6 +6066,82 @@ var ArchivedDebugNoteQueryInputSchema = zod.z.object({
6066
6066
  /** Max rows returned, newest-first. */
6067
6067
  limit: zod.z.number().int().min(1).max(1e3).optional()
6068
6068
  });
6069
+ var TrackRelationKindSchema = zod.z.enum(["same-subject", "different-subjects"]);
6070
+ var TrackSideSchema = zod.z.enum(["before", "after"]);
6071
+ var TrackPurityValueSchema = zod.z.enum(["mixed", "not-a-subject"]);
6072
+ var TrackRelationSchema = zod.z.object({
6073
+ id: zod.z.string(),
6074
+ deviceId: zod.z.number().int(),
6075
+ leftTrackId: zod.z.string(),
6076
+ rightTrackId: zod.z.string(),
6077
+ leftSide: TrackSideSchema.nullable(),
6078
+ rightSide: TrackSideSchema.nullable(),
6079
+ relation: TrackRelationKindSchema,
6080
+ presence: zod.z.literal("continuous").nullable(),
6081
+ leftStartedAt: zod.z.number().int().nullable(),
6082
+ rightStartedAt: zod.z.number().int().nullable(),
6083
+ createdAt: zod.z.number().int(),
6084
+ updatedAt: zod.z.number().int(),
6085
+ author: zod.z.string().nullable()
6086
+ });
6087
+ var TrackPuritySchema = zod.z.object({
6088
+ id: zod.z.string(),
6089
+ deviceId: zod.z.number().int(),
6090
+ sourceTrackId: zod.z.string(),
6091
+ purity: TrackPurityValueSchema,
6092
+ switchAtMs: zod.z.number().int().nullable(),
6093
+ startedAt: zod.z.number().int().nullable(),
6094
+ createdAt: zod.z.number().int(),
6095
+ updatedAt: zod.z.number().int(),
6096
+ author: zod.z.string().nullable()
6097
+ });
6098
+ var SetTrackRelationInputSchema = zod.z.object({
6099
+ deviceId: zod.z.number().int(),
6100
+ trackId: zod.z.string().min(1),
6101
+ otherTrackId: zod.z.string().min(1),
6102
+ relation: TrackRelationKindSchema,
6103
+ presence: zod.z.literal("continuous").optional(),
6104
+ trackSide: TrackSideSchema.optional(),
6105
+ otherSide: TrackSideSchema.optional()
6106
+ });
6107
+ var ClearTrackRelationInputSchema = zod.z.object({
6108
+ deviceId: zod.z.number().int(),
6109
+ trackId: zod.z.string().min(1),
6110
+ otherTrackId: zod.z.string().min(1)
6111
+ });
6112
+ var ClearTrackRelationResultSchema = zod.z.object({ cleared: zod.z.boolean() });
6113
+ var SetTrackPurityInputSchema = zod.z.object({
6114
+ deviceId: zod.z.number().int(),
6115
+ trackId: zod.z.string().min(1),
6116
+ purity: zod.z.enum([
6117
+ "pure",
6118
+ "mixed",
6119
+ "not-a-subject"
6120
+ ]),
6121
+ switchAtMs: zod.z.number().int().optional()
6122
+ });
6123
+ /** `null` when `pure` cleared the row. */
6124
+ var SetTrackPurityResultSchema = zod.z.object({ purity: TrackPuritySchema.nullable() });
6125
+ var ListTrackRelationsInputSchema = zod.z.object({
6126
+ deviceId: zod.z.number().int(),
6127
+ trackId: zod.z.string().optional(),
6128
+ since: zod.z.number().int().optional(),
6129
+ until: zod.z.number().int().optional(),
6130
+ limit: zod.z.number().int().min(1).max(5e3).optional()
6131
+ });
6132
+ var ListTrackRelationsResultSchema = zod.z.object({
6133
+ relations: zod.z.array(TrackRelationSchema).readonly(),
6134
+ purities: zod.z.array(TrackPuritySchema).readonly(),
6135
+ truncated: zod.z.boolean()
6136
+ });
6137
+ zod.z.enum([
6138
+ "unknown-track",
6139
+ "cross-device",
6140
+ "self-relation",
6141
+ "contradiction",
6142
+ "switch-outside-track",
6143
+ "switch-needs-mixed"
6144
+ ]);
6069
6145
  /** Friendly display labels for stream quality IDs. */
6070
6146
  var STREAM_QUALITY_LABELS = {
6071
6147
  high: "High",
@@ -24063,6 +24139,25 @@ var pipelineAnalyticsCapability = {
24063
24139
  */
24064
24140
  listArchivedDebugNotes: method(ArchivedDebugNoteQueryInputSchema, zod.z.array(ArchivedDebugNoteSchema).readonly(), { kind: "query" }),
24065
24141
  /**
24142
+ * Tracking-bench ground truth (D681): "this track and that one are the
24143
+ * same subject" / "different subjects". One row per unordered pair —
24144
+ * re-marking replaces it — and a mark that contradicts an existing chain
24145
+ * is REFUSED with the chain named. Writing a mark also sets `debug` on
24146
+ * both tracks. `protected`, matching `setTrackFlags`: marking is done from
24147
+ * the viewer's track detail by an authenticated non-admin session.
24148
+ */
24149
+ setTrackRelation: method(SetTrackRelationInputSchema, TrackRelationSchema, { kind: "mutation" }),
24150
+ /** Remove the mark between two tracks. */
24151
+ clearTrackRelation: method(ClearTrackRelationInputSchema, ClearTrackRelationResultSchema, { kind: "mutation" }),
24152
+ /**
24153
+ * A track that is not ONE subject: `mixed` (two subjects, optionally
24154
+ * switching at `switchAtMs`) or `not-a-subject`. `pure` clears the mark
24155
+ * and answers `{ purity: null }` (D681).
24156
+ */
24157
+ setTrackPurity: method(SetTrackPurityInputSchema, SetTrackPurityResultSchema, { kind: "mutation" }),
24158
+ /** A camera's marks, optionally one track's, windowed by track start. */
24159
+ listTrackRelations: method(ListTrackRelationsInputSchema, ListTrackRelationsResultSchema, { kind: "query" }),
24160
+ /**
24066
24161
  * Birth decisions — one row per resolved confirmation-gate verdict (D409).
24067
24162
  *
24068
24163
  * The READ half of a measurement, and only that: it gates nothing and no
@@ -51304,6 +51399,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
51304
51399
  addonId: null,
51305
51400
  access: "create"
51306
51401
  },
51402
+ "pipelineAnalytics.clearTrackRelation": {
51403
+ capName: "pipeline-analytics",
51404
+ capScope: "device",
51405
+ addonId: null,
51406
+ access: "delete"
51407
+ },
51307
51408
  "pipelineAnalytics.clearTracks": {
51308
51409
  capName: "pipeline-analytics",
51309
51410
  capScope: "device",
@@ -51556,6 +51657,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
51556
51657
  addonId: null,
51557
51658
  access: "view"
51558
51659
  },
51660
+ "pipelineAnalytics.listTrackRelations": {
51661
+ capName: "pipeline-analytics",
51662
+ capScope: "device",
51663
+ addonId: null,
51664
+ access: "view"
51665
+ },
51559
51666
  "pipelineAnalytics.listTracks": {
51560
51667
  capName: "pipeline-analytics",
51561
51668
  capScope: "device",
@@ -51670,6 +51777,18 @@ var METHOD_ACCESS_MAP = Object.freeze({
51670
51777
  addonId: null,
51671
51778
  access: "create"
51672
51779
  },
51780
+ "pipelineAnalytics.setTrackPurity": {
51781
+ capName: "pipeline-analytics",
51782
+ capScope: "device",
51783
+ addonId: null,
51784
+ access: "create"
51785
+ },
51786
+ "pipelineAnalytics.setTrackRelation": {
51787
+ capName: "pipeline-analytics",
51788
+ capScope: "device",
51789
+ addonId: null,
51790
+ access: "create"
51791
+ },
51673
51792
  "pipelineAnalytics.startStorageMigrationMove": {
51674
51793
  capName: "pipeline-analytics",
51675
51794
  capScope: "device",
@@ -55590,6 +55709,11 @@ Object.freeze({
55590
55709
  form: "single",
55591
55710
  optional: false
55592
55711
  }],
55712
+ "pipelineAnalytics.clearTrackRelation": [{
55713
+ name: "deviceId",
55714
+ form: "single",
55715
+ optional: false
55716
+ }],
55593
55717
  "pipelineAnalytics.clearTracks": [{
55594
55718
  name: "deviceId",
55595
55719
  form: "single",
@@ -55740,6 +55864,11 @@ Object.freeze({
55740
55864
  form: "single",
55741
55865
  optional: false
55742
55866
  }],
55867
+ "pipelineAnalytics.listTrackRelations": [{
55868
+ name: "deviceId",
55869
+ form: "single",
55870
+ optional: false
55871
+ }],
55743
55872
  "pipelineAnalytics.listTracks": [{
55744
55873
  name: "deviceId",
55745
55874
  form: "single",
@@ -55810,6 +55939,16 @@ Object.freeze({
55810
55939
  form: "single",
55811
55940
  optional: false
55812
55941
  }],
55942
+ "pipelineAnalytics.setTrackPurity": [{
55943
+ name: "deviceId",
55944
+ form: "single",
55945
+ optional: false
55946
+ }],
55947
+ "pipelineAnalytics.setTrackRelation": [{
55948
+ name: "deviceId",
55949
+ form: "single",
55950
+ optional: false
55951
+ }],
55813
55952
  "pipelineAnalytics.wipeAllAnalytics": [{
55814
55953
  name: "deviceId",
55815
55954
  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-Bup0sTZb.js");
3
+ const require_dist = require("./dist-DZtw79V-.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-Bs6UyVGd.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-BjwcGX3O.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-Bs6UyVGd.mjs";
1
+ import { er as asJsonObject } from "./dist-BjwcGX3O.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-Bup0sTZb.js");
1
+ const require_dist = require("./dist-DZtw79V-.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.323",
3
+ "version": "1.2.324",
4
4
  "description": "Core addon for CamStack — builtins, pipeline, process management, auth, logging, events",
5
5
  "keywords": [
6
6
  "camstack",