@camstack/system 1.2.481 → 1.2.483

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 (109) hide show
  1. package/dist/addon-runner.js +2 -2
  2. package/dist/addon-runner.mjs +2 -2
  3. package/dist/{agent-https-o3X-jkS7.js → agent-https-CHZpVx3I.js} +1 -1
  4. package/dist/{agent-https-doVPSeiy.mjs → agent-https-NP141VCW.mjs} +1 -1
  5. package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.js +1 -1
  6. package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.mjs +1 -1
  7. package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.js +1 -1
  8. package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.mjs +1 -1
  9. package/dist/builtins/alerts/alerts.addon.js +3 -3
  10. package/dist/builtins/alerts/alerts.addon.mjs +3 -3
  11. package/dist/builtins/alerts/device-label.d.ts +2 -2
  12. package/dist/builtins/autotrack/index.js +1 -1
  13. package/dist/builtins/autotrack/index.mjs +1 -1
  14. package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.js +2 -2
  15. package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.mjs +2 -2
  16. package/dist/builtins/calendars/calendars.addon.js +1 -1
  17. package/dist/builtins/calendars/calendars.addon.mjs +1 -1
  18. package/dist/builtins/camera-grid/acquire-retry.d.ts +1 -1
  19. package/dist/builtins/camera-grid/addon.d.ts +2 -2
  20. package/dist/builtins/camera-grid/grid-profiles.d.ts +1 -1
  21. package/dist/builtins/camera-grid/grid-sentry-sources.d.ts +1 -1
  22. package/dist/builtins/camera-grid/index.js +3 -3
  23. package/dist/builtins/camera-grid/index.mjs +3 -3
  24. package/dist/builtins/composer/composer.addon.js +4 -4
  25. package/dist/builtins/composer/composer.addon.mjs +4 -4
  26. package/dist/builtins/composer/existing-target.d.ts +1 -1
  27. package/dist/builtins/composer/own-field-reads.d.ts +1 -1
  28. package/dist/builtins/console-logging/index.js +2 -2
  29. package/dist/builtins/console-logging/index.mjs +2 -2
  30. package/dist/builtins/core-blocks/core-blocks.addon.js +2 -2
  31. package/dist/builtins/core-blocks/core-blocks.addon.mjs +2 -2
  32. package/dist/builtins/device-history/device-history.addon.js +2 -2
  33. package/dist/builtins/device-history/device-history.addon.mjs +2 -2
  34. package/dist/builtins/device-manager/device-aggregation.d.ts +1 -1
  35. package/dist/builtins/device-manager/device-bindings-store.d.ts +3 -3
  36. package/dist/builtins/device-manager/device-manager.addon.js +9 -9
  37. package/dist/builtins/device-manager/device-manager.addon.mjs +9 -9
  38. package/dist/builtins/device-manager/device-meta-types.d.ts +2 -2
  39. package/dist/builtins/device-manager/device-online-fallback.d.ts +1 -1
  40. package/dist/builtins/hub-forwarder/index.js +2 -2
  41. package/dist/builtins/hub-forwarder/index.mjs +2 -2
  42. package/dist/builtins/keychain/index.js +3 -3
  43. package/dist/builtins/keychain/index.mjs +3 -3
  44. package/dist/builtins/liveness-monitor/liveness-monitor.addon.js +1 -1
  45. package/dist/builtins/liveness-monitor/liveness-monitor.addon.mjs +1 -1
  46. package/dist/builtins/local-auth/local-auth.addon.js +2 -2
  47. package/dist/builtins/local-auth/local-auth.addon.mjs +2 -2
  48. package/dist/builtins/local-network/local-network.addon.js +2 -2
  49. package/dist/builtins/local-network/local-network.addon.mjs +2 -2
  50. package/dist/builtins/loki-logging/index.js +1 -1
  51. package/dist/builtins/loki-logging/index.mjs +1 -1
  52. package/dist/builtins/native-metrics/native-metrics.addon.d.ts +1 -1
  53. package/dist/builtins/native-metrics/native-metrics.addon.js +3 -3
  54. package/dist/builtins/native-metrics/native-metrics.addon.mjs +3 -3
  55. package/dist/builtins/native-metrics/thread-cpu-sampler.d.ts +1 -1
  56. package/dist/builtins/platform-probe/index.js +1 -1
  57. package/dist/builtins/platform-probe/index.mjs +1 -1
  58. package/dist/builtins/record-entries/index.js +1 -1
  59. package/dist/builtins/record-entries/index.mjs +1 -1
  60. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.js +1 -1
  61. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.mjs +1 -1
  62. package/dist/builtins/snapshot/index.js +1 -1
  63. package/dist/builtins/snapshot/index.mjs +1 -1
  64. package/dist/builtins/snapshot/snapshot-fatigue.d.ts +1 -1
  65. package/dist/builtins/snapshot/snapshot-link-url.d.ts +1 -1
  66. package/dist/builtins/sqlite-storage/filesystem-storage.addon.js +1 -1
  67. package/dist/builtins/sqlite-storage/filesystem-storage.addon.mjs +1 -1
  68. package/dist/builtins/sqlite-storage/filter-compiler.d.ts +1 -1
  69. package/dist/builtins/sqlite-storage/index.js +1 -1
  70. package/dist/builtins/sqlite-storage/index.mjs +1 -1
  71. package/dist/builtins/sqlite-storage/prefix-range.d.ts +2 -2
  72. package/dist/builtins/sqlite-storage/sqlite-settings.addon.js +2 -2
  73. package/dist/builtins/sqlite-storage/sqlite-settings.addon.mjs +2 -2
  74. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.js +1 -1
  75. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.mjs +1 -1
  76. package/dist/builtins/system-config/system-config.addon.js +3 -3
  77. package/dist/builtins/system-config/system-config.addon.mjs +280 -280
  78. package/dist/builtins/winston-logging/index.js +2 -2
  79. package/dist/builtins/winston-logging/index.mjs +2 -2
  80. package/dist/{composition-sources-BrDtOpfE.mjs → composition-sources-CC13wGKL.mjs} +1 -1
  81. package/dist/{composition-sources-BmhhDWIc.js → composition-sources-CQxrCexr.js} +1 -1
  82. package/dist/{constants-BVJrLycr.js → constants-Bt0NFXDm.js} +1 -1
  83. package/dist/{constants-xuLNi4a2.mjs → constants-DMB-ex5z.mjs} +1 -1
  84. package/dist/{device-ca-DgLZPn5R.js → device-ca-CSLMfr4Q.js} +1 -1
  85. package/dist/{device-ca-DKOZSFED.mjs → device-ca-HQKcvofS.mjs} +1 -1
  86. package/dist/{dist--v3KMKa1.js → dist-2gZWO597.js} +2215 -241
  87. package/dist/{dist-BIJXQo_j.mjs → dist-DvKEKSap.mjs} +2215 -241
  88. package/dist/file-host-worker.js +1 -1
  89. package/dist/file-host-worker.mjs +1 -1
  90. package/dist/{formatter-B7qW8bPJ.mjs → formatter-DkYZ4LXp.mjs} +1 -1
  91. package/dist/{formatter-DqAKDlvN.js → formatter-xbxeV4GD.js} +1 -1
  92. package/dist/{hub-mdns-ciao-C3NJsOvK.js → hub-mdns-ciao-Bs3cn9C1.js} +2 -2
  93. package/dist/{hub-mdns-ciao-DMFXIlMY.mjs → hub-mdns-ciao-CVf6mxIZ.mjs} +2 -2
  94. package/dist/index.js +131 -17
  95. package/dist/index.mjs +129 -18
  96. package/dist/kernel/addon-installer.d.ts +25 -5
  97. package/dist/kernel/addon-version-policy.d.ts +26 -0
  98. package/dist/kernel/heap-watch.d.ts +1 -1
  99. package/dist/kernel/index.d.ts +2 -0
  100. package/dist/kernel/moleculer/trpc-links.d.ts +1 -1
  101. package/dist/kernel/transport/socket-channel.d.ts +1 -1
  102. package/dist/logging/formatter.d.ts +1 -1
  103. package/dist/{restore-archive-DAEsvFY6.mjs → restore-archive-EFYeCdrG.mjs} +78 -78
  104. package/dist/{restore-archive-DpkdAuFf.js → restore-archive-_mgadWlk.js} +1 -1
  105. package/dist/{retention-DbunrLR4.mjs → retention-FFJW3-3P.mjs} +1 -1
  106. package/dist/{retention-C71dNCIh.js → retention-qugQGYuY.js} +1 -1
  107. package/dist/{wal-maintenance-CsGk4kYn.js → wal-maintenance-DbUC_wdC.js} +0 -0
  108. package/dist/{wal-maintenance-DYAJwPWu.mjs → wal-maintenance-TCW_esAc.mjs} +0 -0
  109. package/package.json +1 -1
@@ -4448,7 +4448,7 @@ var SocketChannel = class {
4448
4448
  * `res` frame, or the socket's `close` (which drains `pending`) — so a peer
4449
4449
  * that receives the request and then neither answers nor closes leaves the
4450
4450
  * caller pending forever. That is a wedged handler, or a half-open socket
4451
- * after a child died without a clean teardown, and it is how camera 615 spent
4451
+ * after a child died without a clean teardown, and it is how camera 101 spent
4452
4452
  * 30+ minutes with every inference permit held by a call that was never
4453
4453
  * coming back.
4454
4454
  */
@@ -8098,7 +8098,7 @@ var nodeCoralFs = {
8098
8098
  /**
8099
8099
  * Can libva initialise the VA driver on this node's render node? (D926)
8100
8100
  *
8101
- * Measured 2026-10-23 (intel-1.2.509, hub + little-unraid): Intel's iHD 25.2.4
8101
+ * Measured 2026-10-23 (intel-1.2.509, hub + agent-a): Intel's iHD 25.2.4
8102
8102
  * exports only `__vaDriverInit_1_22`, the container's Ubuntu libva 2.20 looks
8103
8103
  * for `_1_20`, and `vaInitialize` failed — while the resolver kept offering
8104
8104
  * `qsv, vaapi`. Every session tried, failed and fell back to software: 722
@@ -4424,7 +4424,7 @@ var SocketChannel = class {
4424
4424
  * `res` frame, or the socket's `close` (which drains `pending`) — so a peer
4425
4425
  * that receives the request and then neither answers nor closes leaves the
4426
4426
  * caller pending forever. That is a wedged handler, or a half-open socket
4427
- * after a child died without a clean teardown, and it is how camera 615 spent
4427
+ * after a child died without a clean teardown, and it is how camera 101 spent
4428
4428
  * 30+ minutes with every inference permit held by a call that was never
4429
4429
  * coming back.
4430
4430
  */
@@ -8074,7 +8074,7 @@ var nodeCoralFs = {
8074
8074
  /**
8075
8075
  * Can libva initialise the VA driver on this node's render node? (D926)
8076
8076
  *
8077
- * Measured 2026-10-23 (intel-1.2.509, hub + little-unraid): Intel's iHD 25.2.4
8077
+ * Measured 2026-10-23 (intel-1.2.509, hub + agent-a): Intel's iHD 25.2.4
8078
8078
  * exports only `__vaDriverInit_1_22`, the container's Ubuntu libva 2.20 looks
8079
8079
  * for `_1_20`, and `vaInitialize` failed — while the resolver kept offering
8080
8080
  * `qsv, vaapi`. Every session tried, failed and fell back to software: 722
@@ -1,5 +1,5 @@
1
1
  const require_chunk = require("./chunk-Cek0wNdY.js");
2
- const require_dist = require("./dist--v3KMKa1.js");
2
+ const require_dist = require("./dist-2gZWO597.js");
3
3
  const require_x509_es = require("./x509.es-WtnRNyYS.js");
4
4
  let zod = require("zod");
5
5
  let node_crypto = require("node:crypto");
@@ -1,4 +1,4 @@
1
- import { Ji as defineRecordKinds } from "./dist-BIJXQo_j.mjs";
1
+ import { Ji as defineRecordKinds } from "./dist-DvKEKSap.mjs";
2
2
  import { C as backdatedNotBefore, S as withUtcTimeEncoding, _ as NameConstraints, a as KeyUsageFlags, c as Pkcs10CertificateRequest, d as SubjectKeyIdentifierExtension, f as X509Certificate$1, g as GeneralSubtrees, h as GeneralSubtree, i as Extension, l as Pkcs10CertificateRequestGenerator, m as cryptoProvider, n as BasicConstraintsExtension, o as KeyUsagesExtension, p as X509CertificateGenerator, r as ExtendedKeyUsageExtension, s as PemConverter, t as AuthorityKeyIdentifierExtension, u as SubjectAlternativeNameExtension, v as GeneralName, x as AsnConvert } from "./x509.es-BRiJgOvu.mjs";
3
3
  import { z } from "zod";
4
4
  import { X509Certificate, createHash, createPrivateKey, randomBytes, webcrypto } 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--v3KMKa1.js");
6
+ const require_dist = require("../../dist-2gZWO597.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 { _t as addonPagesCapability, ka as EventCategory, ni as BaseAddon, ti as errMsg } from "../../dist-BIJXQo_j.mjs";
1
+ import { _t as addonPagesCapability, ka as EventCategory, ni as BaseAddon, ti as errMsg } from "../../dist-DvKEKSap.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--v3KMKa1.js");
6
+ const require_dist = require("../../dist-2gZWO597.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 { ka as EventCategory, ni as BaseAddon, ti as errMsg, yt as addonWidgetsCapability } from "../../dist-BIJXQo_j.mjs";
1
+ import { ka as EventCategory, ni as BaseAddon, ti as errMsg, yt as addonWidgetsCapability } from "../../dist-DvKEKSap.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--v3KMKa1.js");
6
+ const require_dist = require("../../dist-2gZWO597.js");
7
7
  const require_read_all_rows$1 = require("../../read-all-rows-CVoO1ONM.js");
8
8
  //#region src/builtins/alerts/alert-episode-policy.ts
9
9
  /**
@@ -76,8 +76,8 @@ function mergeEmitAlert(input) {
76
76
  * Operator-facing device label for alert messages.
77
77
  *
78
78
  * Prefer a real name; fall back to `Camera <id>` only when nothing else is
79
- * known. Never prefer the bare id when a name is present — "Camera 618"
80
- * next to a named "Cucina" is how the Recording-stopped alerts used to read.
79
+ * known. Never prefer the bare id when a name is present — "Camera 108"
80
+ * next to a named "Kitchen" is how the Recording-stopped alerts used to read.
81
81
  */
82
82
  function deviceLabelFromEventData(data) {
83
83
  const name = stringNonEmpty(data["name"]) ?? stringNonEmpty(data["deviceName"]);
@@ -1,4 +1,4 @@
1
- import { Gi as createEvent, Ji as defineRecordKinds, St as alertsCapability, bn as isAlertEpisodeSeverity, bt as alertEpisodeId, i as AlertSchema, ka as EventCategory, ni as BaseAddon, ti as errMsg, xt as alertEpisodePayload, yn as isAlertEpisodeOpen } from "../../dist-BIJXQo_j.mjs";
1
+ import { Gi as createEvent, Ji as defineRecordKinds, St as alertsCapability, bn as isAlertEpisodeSeverity, bt as alertEpisodeId, i as AlertSchema, ka as EventCategory, ni as BaseAddon, ti as errMsg, xt as alertEpisodePayload, yn as isAlertEpisodeOpen } from "../../dist-DvKEKSap.mjs";
2
2
  import { t as require_read_all_rows } from "../../read-all-rows-TaPqdWNF.mjs";
3
3
  //#region src/builtins/alerts/alert-episode-policy.ts
4
4
  /**
@@ -71,8 +71,8 @@ function mergeEmitAlert(input) {
71
71
  * Operator-facing device label for alert messages.
72
72
  *
73
73
  * Prefer a real name; fall back to `Camera <id>` only when nothing else is
74
- * known. Never prefer the bare id when a name is present — "Camera 618"
75
- * next to a named "Cucina" is how the Recording-stopped alerts used to read.
74
+ * known. Never prefer the bare id when a name is present — "Camera 108"
75
+ * next to a named "Kitchen" is how the Recording-stopped alerts used to read.
76
76
  */
77
77
  function deviceLabelFromEventData(data) {
78
78
  const name = stringNonEmpty(data["name"]) ?? stringNonEmpty(data["deviceName"]);
@@ -2,7 +2,7 @@
2
2
  * Operator-facing device label for alert messages.
3
3
  *
4
4
  * Prefer a real name; fall back to `Camera <id>` only when nothing else is
5
- * known. Never prefer the bare id when a name is present — "Camera 618"
6
- * next to a named "Cucina" is how the Recording-stopped alerts used to read.
5
+ * known. Never prefer the bare id when a name is present — "Camera 108"
6
+ * next to a named "Kitchen" is how the Recording-stopped alerts used to read.
7
7
  */
8
8
  export declare function deviceLabelFromEventData(data: Readonly<Record<string, unknown>>): string;
@@ -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--v3KMKa1.js");
6
+ const require_dist = require("../../dist-2gZWO597.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 { Et as bareAddonId, I as FIRST_LEVEL_MACRO_CLASSES, ka as EventCategory, na as isEvent, ni as BaseAddon, rr as ptzAutotrackCapability, ti as errMsg } from "../../dist-BIJXQo_j.mjs";
1
+ import { Et as bareAddonId, I as FIRST_LEVEL_MACRO_CLASSES, ka as EventCategory, na as isEvent, ni as BaseAddon, rr as ptzAutotrackCapability, ti as errMsg } from "../../dist-DvKEKSap.mjs";
2
2
  //#region src/builtins/autotrack/autotrack-config.ts
3
3
  var DEFAULT_AUTOTRACK_LOOP_CONFIG = {
4
4
  deadZoneFraction: .5,
@@ -3,9 +3,9 @@ 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--v3KMKa1.js");
6
+ const require_dist = require("../../dist-2gZWO597.js");
7
7
  const require_read_all_rows$1 = require("../../read-all-rows-CVoO1ONM.js");
8
- const require_restore_archive = require("../../restore-archive-DpkdAuFf.js");
8
+ const require_restore_archive = require("../../restore-archive-_mgadWlk.js");
9
9
  let node_crypto = require("node:crypto");
10
10
  let node_fs_promises = require("node:fs/promises");
11
11
  node_fs_promises = require_chunk.__toESM(node_fs_promises);
@@ -1,6 +1,6 @@
1
- import { Or as storageOccupancyCapability, Tt as backupCapability, Vn as mayWriteToLocation, ka as EventCategory, ni as BaseAddon, ua as nodePin, wa as toNodeId } from "../../dist-BIJXQo_j.mjs";
1
+ import { Or as storageOccupancyCapability, Tt as backupCapability, Vn as mayWriteToLocation, ka as EventCategory, ni as BaseAddon, ua as nodePin, wa as toNodeId } from "../../dist-DvKEKSap.mjs";
2
2
  import { t as require_read_all_rows } from "../../read-all-rows-TaPqdWNF.mjs";
3
- import { _ as backupRecordStoresOf, a as BackupSnapshotRefusedError, d as ENCRYPTED_BACKUP_SUFFIX, f as generateBackupKeyPair, g as backupOrchestratorRecordKinds, i as BackupCancelledError, l as BackupKeyFormatError, m as parseBackupSecretKey, n as precheckRestoreKey, o as DEFAULT_BACKUP_DATABASES, p as parseBackupPublicKey, r as prepareRestoreArchive, s as SystemBackupService } from "../../restore-archive-DAEsvFY6.mjs";
3
+ import { _ as backupRecordStoresOf, a as BackupSnapshotRefusedError, d as ENCRYPTED_BACKUP_SUFFIX, f as generateBackupKeyPair, g as backupOrchestratorRecordKinds, i as BackupCancelledError, l as BackupKeyFormatError, m as parseBackupSecretKey, n as precheckRestoreKey, o as DEFAULT_BACKUP_DATABASES, p as parseBackupPublicKey, r as prepareRestoreArchive, s as SystemBackupService } from "../../restore-archive-EFYeCdrG.mjs";
4
4
  import { randomUUID } from "node:crypto";
5
5
  import * as fsp from "node:fs/promises";
6
6
  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--v3KMKa1.js");
6
+ const require_dist = require("../../dist-2gZWO597.js");
7
7
  const require_settle_sources = require("../../settle-sources-Bhsy57y-.js");
8
8
  let zod = require("zod");
9
9
  //#region src/builtins/calendars/calendar-color.ts
@@ -1,4 +1,4 @@
1
- import { Ji as defineRecordKinds, Mt as calendarsCapability, g as CalendarPreferencesSchema, ni as BaseAddon } from "../../dist-BIJXQo_j.mjs";
1
+ import { Ji as defineRecordKinds, Mt as calendarsCapability, g as CalendarPreferencesSchema, ni as BaseAddon } from "../../dist-DvKEKSap.mjs";
2
2
  import { t as settleSourcesWithTimeout } from "../../settle-sources-CDtNC8ub.mjs";
3
3
  import { z } from "zod";
4
4
  //#region src/builtins/calendars/calendar-color.ts
@@ -7,7 +7,7 @@
7
7
  * ```
8
8
  * camera grid: could not acquire every source — releasing the ones already taken
9
9
  * {acquired=0 error="getStreamWithCodec: profile \"low\" source \"native:sub\"
10
- * not published for device 592"}
10
+ * not published for device 107"}
11
11
  * ```
12
12
  *
13
13
  * Observed twice on the hub at 12:02 on 2026-09-18 and gone by the next attempt.
@@ -45,7 +45,7 @@ export declare class CameraGridAddon extends BaseAddon<CameraGridAddonConfig> {
45
45
  * throws rather than answering an empty catalog, because an empty catalog
46
46
  * retracts every stream the broker holds for the grid. It is refreshed on
47
47
  * every reconcile and on every layout save; the window belongs to the READER
48
- * (D224), and 60 s is the window for a fact — "does 615 have a low assigned"
48
+ * (D224), and 60 s is the window for a fact — "does 101 have a low assigned"
49
49
  * — that only changes when an operator changes it.
50
50
  */
51
51
  private readonly plansByInstanceId;
@@ -98,7 +98,7 @@ export declare class CameraGridAddon extends BaseAddon<CameraGridAddonConfig> {
98
98
  /**
99
99
  * Which stream each grid reads each of its sources at, asked of the BROKER.
100
100
  *
101
- * `listAllProfileSlots` is the one authority on "does 615 have a low
101
+ * `listAllProfileSlots` is the one authority on "does 101 have a low
102
102
  * assigned", and `sourceCamStreamId === null` is its way of saying no. A read
103
103
  * that FAILS leaves the previous answer in place and says so — it is not an
104
104
  * empty catalog, and turning it into one would retract the streams of every
@@ -36,7 +36,7 @@
36
36
  * hole reads to an operator as a broken camera, not as an unassigned profile
37
37
  * three cameras away. An UNKNOWN answer is a refusal, never an offer (D315).
38
38
  * The refusal names the sources, because "the grid has no low" is not a finding
39
- * — "615 has no low" is.
39
+ * — "101 has no low" is.
40
40
  */
41
41
  import type { CamProfile } from "@camstack/types";
42
42
  import type { PixelSize } from "./grid-canvas.js";
@@ -41,7 +41,7 @@
41
41
  * as long as it sleeps — visible, legible, and obviously not moving. The two
42
42
  * alternatives are the ones D519 and the sentry both exist to refuse: dropping
43
43
  * the cell (a hole an operator files as a broken grid) and dialling the camera
44
- * (eleven seconds of battery for five seconds of video, measured on device 640).
44
+ * (eleven seconds of battery for five seconds of video, measured on device 106).
45
45
  */
46
46
  /** What `streamBroker.getStreamWithCodec` handed back for one source. */
47
47
  export interface GridSourceAcquisition {
@@ -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--v3KMKa1.js");
6
+ const require_dist = require("../../dist-2gZWO597.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");
@@ -2989,7 +2989,7 @@ var CameraGridAddon = class extends require_dist.BaseAddon {
2989
2989
  * throws rather than answering an empty catalog, because an empty catalog
2990
2990
  * retracts every stream the broker holds for the grid. It is refreshed on
2991
2991
  * every reconcile and on every layout save; the window belongs to the READER
2992
- * (D224), and 60 s is the window for a fact — "does 615 have a low assigned"
2992
+ * (D224), and 60 s is the window for a fact — "does 101 have a low assigned"
2993
2993
  * — that only changes when an operator changes it.
2994
2994
  */
2995
2995
  plansByInstanceId = /* @__PURE__ */ new Map();
@@ -3246,7 +3246,7 @@ var CameraGridAddon = class extends require_dist.BaseAddon {
3246
3246
  /**
3247
3247
  * Which stream each grid reads each of its sources at, asked of the BROKER.
3248
3248
  *
3249
- * `listAllProfileSlots` is the one authority on "does 615 have a low
3249
+ * `listAllProfileSlots` is the one authority on "does 101 have a low
3250
3250
  * assigned", and `sourceCamStreamId === null` is its way of saying no. A read
3251
3251
  * that FAILS leaves the previous answer in place and says so — it is not an
3252
3252
  * empty catalog, and turning it into one would retract the streams of every
@@ -1,4 +1,4 @@
1
- import { Ar as streamCatalogCapability, Cr as snapshotCapability, Gi as createEvent, Gn as motionCapability, Hn as memoizePinnedFfmpeg, N as DeclaredDevices, Nt as cameraGridLayoutCapability, Qr as DeviceFeature, T as DERIVED_CAMERA_SILENCED_CAP_NAMES, Vr as buildFfmpegArgs, X as MOTION_CLOSE_AFTER_MS, a as BaseDevice, ea as hydrateSchema, ei as DeviceType, ka as EventCategory, ni as BaseAddon, qt as declarationOwnerNodeId, ti as errMsg } from "../../dist-BIJXQo_j.mjs";
1
+ import { Ar as streamCatalogCapability, Cr as snapshotCapability, Gi as createEvent, Gn as motionCapability, Hn as memoizePinnedFfmpeg, N as DeclaredDevices, Nt as cameraGridLayoutCapability, Qr as DeviceFeature, T as DERIVED_CAMERA_SILENCED_CAP_NAMES, Vr as buildFfmpegArgs, X as MOTION_CLOSE_AFTER_MS, a as BaseDevice, ea as hydrateSchema, ei as DeviceType, ka as EventCategory, ni as BaseAddon, qt as declarationOwnerNodeId, ti as errMsg } from "../../dist-DvKEKSap.mjs";
2
2
  import { z } from "zod";
3
3
  import { FfmpegProcess } from "@camstack/types/node";
4
4
  import { join } from "node:path";
@@ -2984,7 +2984,7 @@ var CameraGridAddon = class extends BaseAddon {
2984
2984
  * throws rather than answering an empty catalog, because an empty catalog
2985
2985
  * retracts every stream the broker holds for the grid. It is refreshed on
2986
2986
  * every reconcile and on every layout save; the window belongs to the READER
2987
- * (D224), and 60 s is the window for a fact — "does 615 have a low assigned"
2987
+ * (D224), and 60 s is the window for a fact — "does 101 have a low assigned"
2988
2988
  * — that only changes when an operator changes it.
2989
2989
  */
2990
2990
  plansByInstanceId = /* @__PURE__ */ new Map();
@@ -3241,7 +3241,7 @@ var CameraGridAddon = class extends BaseAddon {
3241
3241
  /**
3242
3242
  * Which stream each grid reads each of its sources at, asked of the BROKER.
3243
3243
  *
3244
- * `listAllProfileSlots` is the one authority on "does 615 have a low
3244
+ * `listAllProfileSlots` is the one authority on "does 101 have a low
3245
3245
  * assigned", and `sourceCamStreamId === null` is its way of saying no. A read
3246
3246
  * that FAILS leaves the previous answer in place and says so — it is not an
3247
3247
  * empty catalog, and turning it into one would retract the streams of every
@@ -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--v3KMKa1.js");
7
- const require_composition_sources = require("../../composition-sources-BmhhDWIc.js");
8
- const require_retention = require("../../retention-C71dNCIh.js");
6
+ const require_dist = require("../../dist-2gZWO597.js");
7
+ const require_composition_sources = require("../../composition-sources-CQxrCexr.js");
8
+ const require_retention = require("../../retention-qugQGYuY.js");
9
9
  let zod = require("zod");
10
10
  //#region src/builtins/shared/device-state-changed.ts
11
11
  /** Structural narrowing helper for untrusted bus payloads. */
@@ -396,7 +396,7 @@ function waitingResult(blockIds, reason) {
396
396
  /**
397
397
  * Review M3: an ADDED `restored` cap seeded from NOTHING says so, once per
398
398
  * runtime build, on its device. After a restart its state comes from the
399
- * target's runtime-state row; a row that lost the slice (D677: 615's doorbell,
399
+ * target's runtime-state row; a row that lost the slice (D677: 101's doorbell,
400
400
  * dropped at a hub boot) used to surface as "not seeded yet" and now seeds a
401
401
  * clean `{ null, 0 }` — a lifetime count silently reset unless this line
402
402
  * names it. A first composition of a device that never had the slice logs it
@@ -1,6 +1,6 @@
1
- import { $n as planComposition, Br as COMPOSER_ADDON_ID, Gi as createEvent, Gr as compositionFeatureEnabled, Hr as cloneStatefulExpressionMemory, It as composerCapability, Jr as compositionSourceKey, Kr as compositionItemFieldPath, Lt as compositionFieldKey, N as DeclaredDevices, Ot as buildCapabilityLookup, Ur as composedDeviceRef, Wr as composedDeviceStableId, Xr as disarmRoseMemory, Yr as createStatefulExpressionMemory, Zr as toExpressionValue, a as BaseDevice, cn as evaluateCompositionField, d as COMPOSED_ITEM_FIXED_FIELDS, dn as expressionContainsBuiltinCall, ei as DeviceType, ka as EventCategory, ni as BaseAddon, qr as compositionSliceKey, r as ALL_CAPABILITY_DEFINITIONS, ti as errMsg } from "../../dist-BIJXQo_j.mjs";
2
- import { n as normalizedNativeOwner } from "../../composition-sources-BrDtOpfE.mjs";
3
- import { i as DAY_MS, m as capSeriesKey, t as DEFAULT_RETENTION } from "../../retention-DbunrLR4.mjs";
1
+ import { $n as planComposition, Br as COMPOSER_ADDON_ID, Gi as createEvent, Gr as compositionFeatureEnabled, Hr as cloneStatefulExpressionMemory, It as composerCapability, Jr as compositionSourceKey, Kr as compositionItemFieldPath, Lt as compositionFieldKey, N as DeclaredDevices, Ot as buildCapabilityLookup, Ur as composedDeviceRef, Wr as composedDeviceStableId, Xr as disarmRoseMemory, Yr as createStatefulExpressionMemory, Zr as toExpressionValue, a as BaseDevice, cn as evaluateCompositionField, d as COMPOSED_ITEM_FIXED_FIELDS, dn as expressionContainsBuiltinCall, ei as DeviceType, ka as EventCategory, ni as BaseAddon, qr as compositionSliceKey, r as ALL_CAPABILITY_DEFINITIONS, ti as errMsg } from "../../dist-DvKEKSap.mjs";
2
+ import { n as normalizedNativeOwner } from "../../composition-sources-CC13wGKL.mjs";
3
+ import { i as DAY_MS, m as capSeriesKey, t as DEFAULT_RETENTION } from "../../retention-FFJW3-3P.mjs";
4
4
  import { z } from "zod";
5
5
  //#region src/builtins/shared/device-state-changed.ts
6
6
  /** Structural narrowing helper for untrusted bus payloads. */
@@ -391,7 +391,7 @@ function waitingResult(blockIds, reason) {
391
391
  /**
392
392
  * Review M3: an ADDED `restored` cap seeded from NOTHING says so, once per
393
393
  * runtime build, on its device. After a restart its state comes from the
394
- * target's runtime-state row; a row that lost the slice (D677: 615's doorbell,
394
+ * target's runtime-state row; a row that lost the slice (D677: 101's doorbell,
395
395
  * dropped at a hub boot) used to surface as "not seeded yet" and now seeds a
396
396
  * clean `{ null, 0 }` — a lifetime count silently reset unless this line
397
397
  * names it. A first composition of a device that never had the slice logs it
@@ -40,7 +40,7 @@ export interface SeedlessRestoredCapsInput {
40
40
  /**
41
41
  * Review M3: an ADDED `restored` cap seeded from NOTHING says so, once per
42
42
  * runtime build, on its device. After a restart its state comes from the
43
- * target's runtime-state row; a row that lost the slice (D677: 615's doorbell,
43
+ * target's runtime-state row; a row that lost the slice (D677: 101's doorbell,
44
44
  * dropped at a hub boot) used to surface as "not seeded yet" and now seeds a
45
45
  * clean `{ null, 0 }` — a lifetime count silently reset unless this line
46
46
  * names it. A first composition of a device that never had the slice logs it
@@ -5,7 +5,7 @@
5
5
  *
6
6
  * Through the hub such a read was circular: the effective slice of an ADDED cap
7
7
  * exists only once the composer's claim lands, and the claim lands only once
8
- * every required field has a value — camera 615's `pressCountSinceStart =
8
+ * every required field has a value — camera 101's `pressCountSinceStart =
9
9
  * count(lastPressedAt)` was one of them, and nothing served its doorbell for
10
10
  * 12 h.
11
11
  */
@@ -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--v3KMKa1.js");
7
- const require_formatter = require("../../formatter-DqAKDlvN.js");
6
+ const require_dist = require("../../dist-2gZWO597.js");
7
+ const require_formatter = require("../../formatter-xbxeV4GD.js");
8
8
  //#region src/builtins/console-logging/console-destination.ts
9
9
  var LEVEL_RANK = {
10
10
  debug: 0,
@@ -1,5 +1,5 @@
1
- import { Ln as logDestinationCapability, ni as BaseAddon } from "../../dist-BIJXQo_j.mjs";
2
- import { t as formatLogLine } from "../../formatter-B7qW8bPJ.mjs";
1
+ import { Ln as logDestinationCapability, ni as BaseAddon } from "../../dist-DvKEKSap.mjs";
2
+ import { t as formatLogLine } from "../../formatter-DkYZ4LXp.mjs";
3
3
  //#region src/builtins/console-logging/console-destination.ts
4
4
  var LEVEL_RANK = {
5
5
  debug: 0,
@@ -1,8 +1,8 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_chunk = require("../../chunk-Cek0wNdY.js");
3
- const require_dist = require("../../dist--v3KMKa1.js");
3
+ const require_dist = require("../../dist-2gZWO597.js");
4
4
  const require_read_all_rows$1 = require("../../read-all-rows-CVoO1ONM.js");
5
- const require_composition_sources = require("../../composition-sources-BmhhDWIc.js");
5
+ const require_composition_sources = require("../../composition-sources-CQxrCexr.js");
6
6
  const require_prefix_range = require("../../prefix-range-D_KueXbQ.js");
7
7
  const require_prefix_walk = require("../../prefix-walk-Dv6MLZlM.js");
8
8
  let zod = require("zod");
@@ -1,6 +1,6 @@
1
- import { $n as planComposition, Bt as coreBlockComposition, Ea as transformSecretWrite, Ht as coreBlockSourceKind, Ji as defineRecordKinds, Jr as compositionSourceKey, Kn as normalizeCoreBlockWrite, N as DeclaredDevices, Ot as buildCapabilityLookup, Pr as validateComposition, Rt as compositionSourceRefs, Sa as secretTreeFromSchema, Ui as collectSecretMarkerRefs, Ur as composedDeviceRef, Ut as coreBlocksCapability, Vt as coreBlockIdFromAddonId, Zt as describeComposableCaps, aa as isSecretMarker, dr as resolveCoreBlockFiles, ea as hydrateSchema, f as COMPOSER_RUNNER_ID, m as CORE_BLOCK_ADDON_PREFIX, ni as BaseAddon, p as CORE_BLOCKS_ADDON_ID, r as ALL_CAPABILITY_DEFINITIONS, sa as isSecretRefOwnedBy, sr as replacedFieldKeys, ti as errMsg, tr as problemsBlockSave, ur as resolveCoreBlockEntry, v as CoreBlockSchema, ya as resolveSecretMarkers, zt as coreBlockAddonId } from "../../dist-BIJXQo_j.mjs";
1
+ import { $n as planComposition, Bt as coreBlockComposition, Ea as transformSecretWrite, Ht as coreBlockSourceKind, Ji as defineRecordKinds, Jr as compositionSourceKey, Kn as normalizeCoreBlockWrite, N as DeclaredDevices, Ot as buildCapabilityLookup, Pr as validateComposition, Rt as compositionSourceRefs, Sa as secretTreeFromSchema, Ui as collectSecretMarkerRefs, Ur as composedDeviceRef, Ut as coreBlocksCapability, Vt as coreBlockIdFromAddonId, Zt as describeComposableCaps, aa as isSecretMarker, dr as resolveCoreBlockFiles, ea as hydrateSchema, f as COMPOSER_RUNNER_ID, m as CORE_BLOCK_ADDON_PREFIX, ni as BaseAddon, p as CORE_BLOCKS_ADDON_ID, r as ALL_CAPABILITY_DEFINITIONS, sa as isSecretRefOwnedBy, sr as replacedFieldKeys, ti as errMsg, tr as problemsBlockSave, ur as resolveCoreBlockEntry, v as CoreBlockSchema, ya as resolveSecretMarkers, zt as coreBlockAddonId } from "../../dist-DvKEKSap.mjs";
2
2
  import { t as require_read_all_rows } from "../../read-all-rows-TaPqdWNF.mjs";
3
- import { t as describeCompositionSources } from "../../composition-sources-BrDtOpfE.mjs";
3
+ import { t as describeCompositionSources } from "../../composition-sources-CC13wGKL.mjs";
4
4
  import { t as prefixRange } from "../../prefix-range-Dl0znowN.mjs";
5
5
  import { n as unwrapStoredValue, t as loadPrefixed } from "../../prefix-walk-DAOBSyH1.mjs";
6
6
  import { createRequire } from "node:module";
@@ -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--v3KMKa1.js");
7
- const require_retention = require("../../retention-C71dNCIh.js");
6
+ const require_dist = require("../../dist-2gZWO597.js");
7
+ const require_retention = require("../../retention-qugQGYuY.js");
8
8
  //#region src/builtins/device-history/capture/point-writer.ts
9
9
  var FLUSH_INTERVAL_MS = 1e4;
10
10
  var MAX_BUFFER_AGE_MS = 6e4;
@@ -1,5 +1,5 @@
1
- import { B as HISTORY_ITEM_CATALOG, Ct as armRemovalReconcile, D as DEVICE_HISTORY_ENERGY_KEY, Xi as emitReadiness, en as deviceHistoryCapability, ka as EventCategory, ni as BaseAddon, nn as deviceRemovalHookCapability, z as HISTORY_CATALOG } from "../../dist-BIJXQo_j.mjs";
2
- import { S as subjectIdOf, _ as readUnit, a as FIVE_MINUTES_MS, b as SeriesRegistry, c as bucketEndOf, d as CAP_KEY_PREFIX, f as CaptureEngine, g as readPath, h as catalogMetrics, i as DAY_MS, l as bucketStartOf, m as capSeriesKey, n as RetentionJob, o as HOUR_MS, p as capItemSeriesKey, r as DepartureTracker, s as ROLLUP_GRACE_MS, t as DEFAULT_RETENTION, u as floorTo, v as DeviceDirectory, x as identityOf, y as isRealDeviceType } from "../../retention-DbunrLR4.mjs";
1
+ import { B as HISTORY_ITEM_CATALOG, Ct as armRemovalReconcile, D as DEVICE_HISTORY_ENERGY_KEY, Xi as emitReadiness, en as deviceHistoryCapability, ka as EventCategory, ni as BaseAddon, nn as deviceRemovalHookCapability, z as HISTORY_CATALOG } from "../../dist-DvKEKSap.mjs";
2
+ import { S as subjectIdOf, _ as readUnit, a as FIVE_MINUTES_MS, b as SeriesRegistry, c as bucketEndOf, d as CAP_KEY_PREFIX, f as CaptureEngine, g as readPath, h as catalogMetrics, i as DAY_MS, l as bucketStartOf, m as capSeriesKey, n as RetentionJob, o as HOUR_MS, p as capItemSeriesKey, r as DepartureTracker, s as ROLLUP_GRACE_MS, t as DEFAULT_RETENTION, u as floorTo, v as DeviceDirectory, x as identityOf, y as isRealDeviceType } from "../../retention-FFJW3-3P.mjs";
3
3
  //#region src/builtins/device-history/capture/point-writer.ts
4
4
  var FLUSH_INTERVAL_MS = 1e4;
5
5
  var MAX_BUFFER_AGE_MS = 6e4;
@@ -138,7 +138,7 @@ export declare function resolveNativeDeviceOwner(deps: AggregationDeps, deviceId
138
138
  * into `null` in microseconds. It is a node that is FLAPPING: a crash-looping
139
139
  * agent re-registers every few seconds, so the registry believes it is online,
140
140
  * the call is routed, and the peer dies mid-flight. Then nothing throws and
141
- * nothing resolves. On 2026-08-08 little-unraid did exactly that for 22
141
+ * nothing resolves. On 2026-08-08 agent-a did exactly that for 22
142
142
  * minutes and the viewer showed a loading skeleton the whole time.
143
143
  *
144
144
  * 3s is chosen against what a HEALTHY remote cap costs (a same-LAN cap call is
@@ -38,7 +38,7 @@ export interface BindingsDeps {
38
38
  * and `roleDisplayDefaults`.
39
39
  *
40
40
  * `deviceBindings` is ONE fleet-wide blob keyed by device, so a writer that
41
- * only means to touch camera 615 rewrites every camera's row. Nothing
41
+ * only means to touch camera 101 rewrites every camera's row. Nothing
42
42
  * ordered those writers, and the window between the read and the write is a
43
43
  * settings-door round trip — an RPC to the isolated `sqlite-settings` child,
44
44
  * measured at 2.9 s on the live hub mid-drain (D181). Two toggles on
@@ -184,9 +184,9 @@ export declare function capAppliesToDeviceType(def: CapabilityDefinition | undef
184
184
  * An addon's identity, with the node it happens to run on stripped.
185
185
  *
186
186
  * A capability registered on an agent arrives under `<addonId>@<nodeId>` —
187
- * `pipeline-analytics@little-unraid`. That is the same ADDON as the hub-local
187
+ * `pipeline-analytics@agent-a`. That is the same ADDON as the hub-local
188
188
  * `pipeline-analytics`, and treating the two as different providers is what
189
- * put `analytics` in device 592's clip picker three times (D554 amended).
189
+ * put `analytics` in device 107's clip picker three times (D554 amended).
190
190
  * Where a provider RUNS is a routing fact; it is not part of who it is.
191
191
  */
192
192
  export declare function addonIdentityOf(addonId: string): string;
@@ -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--v3KMKa1.js");
6
+ const require_dist = require("../../dist-2gZWO597.js");
7
7
  const require_read_all_rows$1 = require("../../read-all-rows-CVoO1ONM.js");
8
8
  const require_prefix_range = require("../../prefix-range-D_KueXbQ.js");
9
9
  const require_prefix_walk = require("../../prefix-walk-Dv6MLZlM.js");
@@ -1495,9 +1495,9 @@ function capAppliesToDeviceType(def, deviceType) {
1495
1495
  * An addon's identity, with the node it happens to run on stripped.
1496
1496
  *
1497
1497
  * A capability registered on an agent arrives under `<addonId>@<nodeId>` —
1498
- * `pipeline-analytics@little-unraid`. That is the same ADDON as the hub-local
1498
+ * `pipeline-analytics@agent-a`. That is the same ADDON as the hub-local
1499
1499
  * `pipeline-analytics`, and treating the two as different providers is what
1500
- * put `analytics` in device 592's clip picker three times (D554 amended).
1500
+ * put `analytics` in device 107's clip picker three times (D554 amended).
1501
1501
  * Where a provider RUNS is a routing fact; it is not part of who it is.
1502
1502
  */
1503
1503
  function addonIdentityOf(addonId) {
@@ -5288,7 +5288,7 @@ async function reloadMigratedDevices(pctx, targets) {
5288
5288
  * the hardware — but the per-device CONFIG blob and the runtime-state blob are
5289
5289
  * keyed by the number in a separate store, and until 2026-09-01 they simply
5290
5290
  * stayed put. Measured on the live hub after replacing a Hikvision (id 618)
5291
- * with a Reolink: device 618 — Reolink hardware — was dialled at
5291
+ * with a Reolink: device 108 — Reolink hardware — was dialled at
5292
5292
  * `192.168.10.245:80` with `deviceCache.model="DS-2DE2A404IW-DE3/W"`, the
5293
5293
  * Hikvision's address, credentials and cached model, and never came online.
5294
5294
  * Device 4362 wore the Reolink's config on Hikvision hardware. The two devices
@@ -5539,7 +5539,7 @@ async function loadDeviceConfigWithSecrets(ctx, input) {
5539
5539
  * cascade carried 373 children at `location: null` — every one of those
5540
5540
  * containers invisible to auto-mode linking-by-location (the container itself
5541
5541
  * is deliberately never a link; its children never matched), and not one log
5542
- * line said so. Camera 615 showed one siren where four appliances belonged.
5542
+ * line said so. Camera 101 showed one siren where four appliances belonged.
5543
5543
  *
5544
5544
  * Two mechanisms close it, both WRITE-time — read-time inheritance stays
5545
5545
  * rejected (D252's context: a live-resolved location is invisible everywhere
@@ -7423,8 +7423,8 @@ function renameLocationZone(membership, fromKey, toKey) {
7423
7423
  * Move a location's description from one key to another, for `renameLocation`.
7424
7424
  *
7425
7425
  * Identical rule to {@link renameLocationIcon}, deliberately: a merge keeps the
7426
- * TARGET's description, because renaming "Sala" into "Salone" moves devices
7427
- * into Salone and does not re-describe it. Split from the icon mover only
7426
+ * TARGET's description, because renaming "Sala" into "Hall" moves devices
7427
+ * into Hall and does not re-describe it. Split from the icon mover only
7428
7428
  * because the value types differ; if one ever changes, the other must.
7429
7429
  */
7430
7430
  function renameLocationDescription(descriptions, fromKey, toKey) {
@@ -7444,8 +7444,8 @@ function renameLocationDescription(descriptions, fromKey, toKey) {
7444
7444
  * its `writeAddonStore` patch instead of re-writing an identical map.
7445
7445
  *
7446
7446
  * A rename onto a room that already has an icon is a MERGE, and the surviving
7447
- * room keeps its own: the operator renaming "Sala" into "Salone" is moving
7448
- * devices into Salone, not restyling it. The source key is dropped either way.
7447
+ * room keeps its own: the operator renaming "Sala" into "Hall" is moving
7448
+ * devices into Hall, not restyling it. The source key is dropped either way.
7449
7449
  * Pure — builds a new record, mutates nothing.
7450
7450
  */
7451
7451
  function renameLocationIcon(icons, fromKey, toKey) {
@@ -1,4 +1,4 @@
1
- import { $r as DeviceRole, $t as deviceExtensionCapability, Ca as sleep$1, Da as userError, Ea as transformSecretWrite, F as DeviceTombstoneSchema, In as locationIconKey, Ji as defineRecordKinds, L as FieldClaimModeSchema, Mn as legacyAutoLinkIds, P as DeviceStatusSchema, Pi as WELL_KNOWN_TAB_MAP, Pt as canonicalIconKey, Qr as DeviceFeature, R as FieldClaimSchema, Sr as siteZoneKey, Ta as toSecretFieldView, Wi as collectZodSecretPaths, Wt as createDeviceExtensionProvider, Y as MINUTES_PER_DAY, Yt as defineExtensionSlotProvider, Zn as parseStreamParamsFormPatch, aa as isSecretMarker, ei as DeviceType, gn as formatMinutes, gr as runtimeStatePolicyFor, ia as isSecretClear, in as deviceStatusCapability, jt as buildStreamParamsConfigSchema, ka as EventCategory, ki as SECRET_CLEAR, l as CAP_NAMES_WITH_STATUS, ni as BaseAddon, oa as isSecretMarkerLike, on as enumerateItemArrayFields, ot as STREAM_PROFILE_META, qn as normalizeUnit, r as ALL_CAPABILITY_DEFINITIONS, ra as isKeychainStoredField, rn as deviceStateCapability, s as CAMERA_SWITCH_ORDER, sn as enumerateSchemaFields, ta as isDeviceConfigCap, ti as errMsg, tn as deviceManagerCapability, un as expandContainer, w as DAY_NAMES, xa as secretTreeFromPaths, ya as resolveSecretMarkers } from "../../dist-BIJXQo_j.mjs";
1
+ import { $r as DeviceRole, $t as deviceExtensionCapability, Ca as sleep$1, Da as userError, Ea as transformSecretWrite, F as DeviceTombstoneSchema, In as locationIconKey, Ji as defineRecordKinds, L as FieldClaimModeSchema, Mn as legacyAutoLinkIds, P as DeviceStatusSchema, Pi as WELL_KNOWN_TAB_MAP, Pt as canonicalIconKey, Qr as DeviceFeature, R as FieldClaimSchema, Sr as siteZoneKey, Ta as toSecretFieldView, Wi as collectZodSecretPaths, Wt as createDeviceExtensionProvider, Y as MINUTES_PER_DAY, Yt as defineExtensionSlotProvider, Zn as parseStreamParamsFormPatch, aa as isSecretMarker, ei as DeviceType, gn as formatMinutes, gr as runtimeStatePolicyFor, ia as isSecretClear, in as deviceStatusCapability, jt as buildStreamParamsConfigSchema, ka as EventCategory, ki as SECRET_CLEAR, l as CAP_NAMES_WITH_STATUS, ni as BaseAddon, oa as isSecretMarkerLike, on as enumerateItemArrayFields, ot as STREAM_PROFILE_META, qn as normalizeUnit, r as ALL_CAPABILITY_DEFINITIONS, ra as isKeychainStoredField, rn as deviceStateCapability, s as CAMERA_SWITCH_ORDER, sn as enumerateSchemaFields, ta as isDeviceConfigCap, ti as errMsg, tn as deviceManagerCapability, un as expandContainer, w as DAY_NAMES, xa as secretTreeFromPaths, ya as resolveSecretMarkers } from "../../dist-DvKEKSap.mjs";
2
2
  import { t as require_read_all_rows } from "../../read-all-rows-TaPqdWNF.mjs";
3
3
  import { t as prefixRange } from "../../prefix-range-Dl0znowN.mjs";
4
4
  import { t as loadPrefixed } from "../../prefix-walk-DAOBSyH1.mjs";
@@ -1490,9 +1490,9 @@ function capAppliesToDeviceType(def, deviceType) {
1490
1490
  * An addon's identity, with the node it happens to run on stripped.
1491
1491
  *
1492
1492
  * A capability registered on an agent arrives under `<addonId>@<nodeId>` —
1493
- * `pipeline-analytics@little-unraid`. That is the same ADDON as the hub-local
1493
+ * `pipeline-analytics@agent-a`. That is the same ADDON as the hub-local
1494
1494
  * `pipeline-analytics`, and treating the two as different providers is what
1495
- * put `analytics` in device 592's clip picker three times (D554 amended).
1495
+ * put `analytics` in device 107's clip picker three times (D554 amended).
1496
1496
  * Where a provider RUNS is a routing fact; it is not part of who it is.
1497
1497
  */
1498
1498
  function addonIdentityOf(addonId) {
@@ -5283,7 +5283,7 @@ async function reloadMigratedDevices(pctx, targets) {
5283
5283
  * the hardware — but the per-device CONFIG blob and the runtime-state blob are
5284
5284
  * keyed by the number in a separate store, and until 2026-09-01 they simply
5285
5285
  * stayed put. Measured on the live hub after replacing a Hikvision (id 618)
5286
- * with a Reolink: device 618 — Reolink hardware — was dialled at
5286
+ * with a Reolink: device 108 — Reolink hardware — was dialled at
5287
5287
  * `192.168.10.245:80` with `deviceCache.model="DS-2DE2A404IW-DE3/W"`, the
5288
5288
  * Hikvision's address, credentials and cached model, and never came online.
5289
5289
  * Device 4362 wore the Reolink's config on Hikvision hardware. The two devices
@@ -5534,7 +5534,7 @@ async function loadDeviceConfigWithSecrets(ctx, input) {
5534
5534
  * cascade carried 373 children at `location: null` — every one of those
5535
5535
  * containers invisible to auto-mode linking-by-location (the container itself
5536
5536
  * is deliberately never a link; its children never matched), and not one log
5537
- * line said so. Camera 615 showed one siren where four appliances belonged.
5537
+ * line said so. Camera 101 showed one siren where four appliances belonged.
5538
5538
  *
5539
5539
  * Two mechanisms close it, both WRITE-time — read-time inheritance stays
5540
5540
  * rejected (D252's context: a live-resolved location is invisible everywhere
@@ -7418,8 +7418,8 @@ function renameLocationZone(membership, fromKey, toKey) {
7418
7418
  * Move a location's description from one key to another, for `renameLocation`.
7419
7419
  *
7420
7420
  * Identical rule to {@link renameLocationIcon}, deliberately: a merge keeps the
7421
- * TARGET's description, because renaming "Sala" into "Salone" moves devices
7422
- * into Salone and does not re-describe it. Split from the icon mover only
7421
+ * TARGET's description, because renaming "Sala" into "Hall" moves devices
7422
+ * into Hall and does not re-describe it. Split from the icon mover only
7423
7423
  * because the value types differ; if one ever changes, the other must.
7424
7424
  */
7425
7425
  function renameLocationDescription(descriptions, fromKey, toKey) {
@@ -7439,8 +7439,8 @@ function renameLocationDescription(descriptions, fromKey, toKey) {
7439
7439
  * its `writeAddonStore` patch instead of re-writing an identical map.
7440
7440
  *
7441
7441
  * A rename onto a room that already has an icon is a MERGE, and the surviving
7442
- * room keeps its own: the operator renaming "Sala" into "Salone" is moving
7443
- * devices into Salone, not restyling it. The source key is dropped either way.
7442
+ * room keeps its own: the operator renaming "Sala" into "Hall" is moving
7443
+ * devices into Hall, not restyling it. The source key is dropped either way.
7444
7444
  * Pure — builds a new record, mutates nothing.
7445
7445
  */
7446
7446
  function renameLocationIcon(icons, fromKey, toKey) {