@camstack/addon-pipeline 1.2.120 → 1.2.122

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 (35) hide show
  1. package/dist/{addon-utils-MH-YN_oH.js → addon-utils-DjiHGIRF.js} +1 -1
  2. package/dist/audio-analyzer/index.js +3 -3
  3. package/dist/audio-analyzer/index.mjs +2 -2
  4. package/dist/detection-pipeline/index.js +5 -5
  5. package/dist/detection-pipeline/index.mjs +3 -3
  6. package/dist/{dist-CmqBKO-v.mjs → dist-B7rIp5qQ.mjs} +76 -22
  7. package/dist/{dist-CvpyuIHg.js → dist-DomdkRKL.js} +76 -22
  8. package/dist/{event-loop-stall-monitor-BOHxP7W6.js → event-loop-stall-monitor-ChA4AQ1D.js} +1 -1
  9. package/dist/{event-loop-stall-monitor-kh4gmJ-6.mjs → event-loop-stall-monitor-mvxKgrNV.mjs} +1 -1
  10. package/dist/{lazy-sharp-BzJLgOw9.js → lazy-sharp-BSeW3qY5.js} +1 -1
  11. package/dist/motion-wasm/index.js +2 -2
  12. package/dist/motion-wasm/index.mjs +1 -1
  13. package/dist/pipeline-runner/index.js +4 -4
  14. package/dist/pipeline-runner/index.mjs +3 -3
  15. package/dist/{process-memory-U6kkHBR7.js → process-memory-BtpLNnXq.js} +1 -1
  16. package/dist/{process-memory-C2vefk7-.mjs → process-memory-XHs-umae.mjs} +1 -1
  17. package/dist/recorder/index.js +125 -27
  18. package/dist/recorder/index.mjs +124 -26
  19. package/dist/{segment-demux-js-CTgNaQTI.js → segment-demux-js-CFIIJsfc.js} +1 -1
  20. package/dist/{segment-demux-js-xjK1LW_t.mjs → segment-demux-js-Cc5Jubdu.mjs} +1 -1
  21. package/dist/session-decode/decode-worker-child.js +2 -2
  22. package/dist/session-decode/decode-worker-child.mjs +1 -1
  23. package/dist/stream-broker/_stub.js +1 -1
  24. package/dist/stream-broker/{_virtual_mf-localSharedImportMap___mfe_internal__addon_stream_broker_widgets-BdP-MWLF.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_stream_broker_widgets-P-WP2KSi.mjs} +3 -3
  25. package/dist/stream-broker/_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-Do2DEtRt.mjs +26 -0
  26. package/dist/stream-broker/demux-worker-child.js +1 -1
  27. package/dist/stream-broker/demux-worker-child.mjs +1 -1
  28. package/dist/stream-broker/{hostInit-zKdlTmuo.mjs → hostInit-D6O20fld.mjs} +3 -3
  29. package/dist/stream-broker/index.js +35 -5
  30. package/dist/stream-broker/index.mjs +35 -5
  31. package/dist/stream-broker/remoteEntry.js +1 -1
  32. package/dist/{worker-protocol-CElzXfEW.mjs → worker-protocol-CrHJXGHV.mjs} +1 -1
  33. package/dist/{worker-protocol-DGYGCx9K.js → worker-protocol-DQ5DPOFD.js} +1 -1
  34. package/package.json +1 -1
  35. package/dist/stream-broker/_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-D-NFPV_g.mjs +0 -26
@@ -1,7 +1,7 @@
1
- const require_dist = require("../dist-CvpyuIHg.js");
1
+ const require_dist = require("../dist-DomdkRKL.js");
2
2
  const require_hub_hostname = require("../hub-hostname-DAJXlOgV.js");
3
3
  const require_restream_intent = require("../restream-intent-Cv9x3jmu.js");
4
- const require_addon_utils = require("../addon-utils-MH-YN_oH.js");
4
+ const require_addon_utils = require("../addon-utils-DjiHGIRF.js");
5
5
  const require_retire_root_keys = require("../retire-root-keys-KE6D6Xh_.js");
6
6
  let node_crypto = require("node:crypto");
7
7
  let node_child_process = require("node:child_process");
@@ -539,12 +539,38 @@ function segmentRelPath(deviceId, profile, startMs, durMs, bytes) {
539
539
  return `${deviceId}/${profile}/${d.getUTCFullYear()}/${p2(d.getUTCMonth() + 1)}/${p2(d.getUTCDate())}/${p2(d.getUTCHours())}/${startMs}-${durMs}-${bytes}.m4s`;
540
540
  }
541
541
  var SEG_RE = /^(\d+)\/([^/]+)\/\d{4}\/\d{2}\/\d{2}\/\d{2}\/(\d+)-(\d+)-(\d+)\.m4s$/;
542
+ /**
543
+ * The profile names the recorder writes. Used ONLY to hand back a shared string
544
+ * instead of a fresh one — never to reject a name.
545
+ *
546
+ * `SEG_RE`'s second group is a slice of the path, so V8 materialises a new
547
+ * string for it on every parse. The whole fleet has three profile names and the
548
+ * index holds one row per segment, so that is one redundant string per segment
549
+ * held for the segment's whole life. Measured on the production shape (17
550
+ * cameras x 2 profiles x 12 days of 10 s segments = 3.53 M rows): 798 MB
551
+ * without this, 717 MB with it — 80.7 MB, 24 B/row, ~10% of the index.
552
+ *
553
+ * A name outside this set falls through to the parsed slice unchanged, so an
554
+ * unrecognised profile is never renamed, never dropped, and costs exactly what
555
+ * it costs today. That fall-through is the property the tests pin.
556
+ */
557
+ var CANONICAL_PROFILES = [
558
+ "high",
559
+ "mid",
560
+ "low"
561
+ ];
562
+ /** The shared instance of `profile` when it is one of {@link CANONICAL_PROFILES},
563
+ * otherwise `profile` itself. */
564
+ function canonicalProfile(profile) {
565
+ for (const known of CANONICAL_PROFILES) if (known === profile) return known;
566
+ return profile;
567
+ }
542
568
  function parseSegmentPath(relPath) {
543
569
  const m = SEG_RE.exec(relPath);
544
570
  if (!m) return null;
545
571
  return {
546
572
  deviceId: Number(m[1]),
547
- profile: m[2],
573
+ profile: canonicalProfile(m[2]),
548
574
  startMs: Number(m[3]),
549
575
  durMs: Number(m[4]),
550
576
  bytes: Number(m[5])
@@ -590,6 +616,9 @@ var RecordingIndex = class {
590
616
  sortedByDevice = /* @__PURE__ */ new Map();
591
617
  fullRebuilds = 0;
592
618
  incrementalInserts = 0;
619
+ /** See {@link HydrateReuseStats}. */
620
+ rowsReused = 0;
621
+ rowsAllocated = 0;
593
622
  /** Hour buckets this device has been walked for; `ALL_HOURS` after a full
594
623
  * hydrate. Empty = nothing has been looked at, which is NOT the same as
595
624
  * "there is nothing" — see {@link hydrationOf}. */
@@ -628,6 +657,13 @@ var RecordingIndex = class {
628
657
  incrementalInserts: this.incrementalInserts
629
658
  };
630
659
  }
660
+ /** See {@link HydrateReuseStats}. Cumulative over the process. */
661
+ hydrateReuseStats() {
662
+ return {
663
+ rowsReused: this.rowsReused,
664
+ rowsAllocated: this.rowsAllocated
665
+ };
666
+ }
631
667
  /**
632
668
  * Ordered insert of ONE NEW row into every live view it belongs to (the
633
669
  * all-profiles view and its own profile's view). Views not yet materialised
@@ -645,25 +681,70 @@ var RecordingIndex = class {
645
681
  }
646
682
  }
647
683
  /**
684
+ * The row to index for `path` at `locationId`, REUSING the held one when the
685
+ * index already has it.
686
+ *
687
+ * ## Why a re-walk must not re-allocate (the second copy of every path)
688
+ *
689
+ * Every field of a `SegmentRow` except `locationId` is derived from `path`,
690
+ * so a held row at the same location is not merely EQUAL to a rebuilt one —
691
+ * it is the same fact. Rebuilding it allocates a second byte-identical path
692
+ * string, and that second string does not stay a garbage-collectable
693
+ * duplicate: `SegmentHourLedger`'s mirror still holds the FIRST one, because
694
+ * `reconcileFromIndex` skips its `ledger.put` exactly when the contents
695
+ * match. The archive walk (`roots.ts`) composes a fresh `${deviceId}/${entry}`
696
+ * for every file it reads, so before this reuse existed the first walk after
697
+ * every boot doubled the retained path strings of the whole archive,
698
+ * permanently.
699
+ *
700
+ * Measured on the production shape (26 cameras x 2 profiles x 12 days of
701
+ * 10 s segments = 5.39 M rows): 1218 MB held before the walk, 1591 MB after
702
+ * — +373 MB, 69 B/row, one extra `SeqOneByteString` per segment.
703
+ *
704
+ * Interning the strings instead was measured and is WORSE (+597 MB): the
705
+ * intern table costs more than the duplicate it removes. Not allocating is
706
+ * the only cheap answer.
707
+ *
708
+ * `null` = not a segment path, or another device's.
709
+ */
710
+ rowFor(held, path, deviceId, locationId) {
711
+ const prev = held.get(path);
712
+ if (prev !== void 0 && prev.locationId === locationId) {
713
+ this.rowsReused += 1;
714
+ return prev;
715
+ }
716
+ const p = parseSegmentPath(path);
717
+ if (!p || p.deviceId !== deviceId) return null;
718
+ this.rowsAllocated += 1;
719
+ return {
720
+ deviceId: p.deviceId,
721
+ profile: p.profile,
722
+ startMs: p.startMs,
723
+ durMs: p.durMs,
724
+ bytes: p.bytes,
725
+ path,
726
+ locationId
727
+ };
728
+ }
729
+ /**
648
730
  * Replace a device's segments FOR ONE LOCATION from a `storage.list` result (paths relative to that
649
731
  * location root). Rows on other locations are preserved. Non-segment paths and other devices are ignored.
732
+ *
733
+ * Deliberately NOT delete-all-then-reinsert: the archive walk re-reports rows
734
+ * this index already holds, with freshly built path strings, and dropping the
735
+ * held rows first would make those fresh strings the permanent ones — a
736
+ * second copy of the whole archive's paths. See {@link retainedPathStrings}.
650
737
  */
651
738
  hydrateDevice(deviceId, locationId, relPaths) {
652
739
  const m = this.mapFor(deviceId);
653
- for (const [path, existing] of m) if (existing.locationId === locationId) m.delete(path);
740
+ const seen = /* @__PURE__ */ new Set();
654
741
  for (const path of relPaths) {
655
- const p = parseSegmentPath(path);
656
- if (!p || p.deviceId !== deviceId) continue;
657
- m.set(path, {
658
- deviceId: p.deviceId,
659
- profile: p.profile,
660
- startMs: p.startMs,
661
- durMs: p.durMs,
662
- bytes: p.bytes,
663
- path,
664
- locationId
665
- });
742
+ const row = this.rowFor(m, path, deviceId, locationId);
743
+ if (row === null) continue;
744
+ if (row.path !== path || m.get(path) !== row) m.set(path, row);
745
+ seen.add(path);
666
746
  }
747
+ for (const [path, existing] of m) if (existing.locationId === locationId && !seen.has(path)) m.delete(path);
667
748
  this.invalidateSorted(deviceId);
668
749
  }
669
750
  /**
@@ -708,20 +789,15 @@ var RecordingIndex = class {
708
789
  */
709
790
  hydrateHour(deviceId, locationId, hourStartMs, relPaths) {
710
791
  const m = this.mapFor(deviceId);
792
+ let changed = false;
711
793
  for (const path of relPaths) {
712
- const p = parseSegmentPath(path);
713
- if (!p || p.deviceId !== deviceId) continue;
714
- m.set(path, {
715
- deviceId: p.deviceId,
716
- profile: p.profile,
717
- startMs: p.startMs,
718
- durMs: p.durMs,
719
- bytes: p.bytes,
720
- path,
721
- locationId
722
- });
794
+ const row = this.rowFor(m, path, deviceId, locationId);
795
+ if (row === null) continue;
796
+ if (m.get(path) === row) continue;
797
+ m.set(path, row);
798
+ changed = true;
723
799
  }
724
- this.invalidateSorted(deviceId);
800
+ if (changed) this.invalidateSorted(deviceId);
725
801
  this.markHydrated(deviceId, hourStartMs, hourStartMs + HOUR_MS$5);
726
802
  }
727
803
  /**
@@ -5847,16 +5923,22 @@ async function hydrateDeviceFromStorage(_api, index, deviceId, locations, logger
5847
5923
  }
5848
5924
  for (const location of aliases) if (!pathsByLocation.has(location.id)) pathsByLocation.set(location.id, []);
5849
5925
  let indexed = 0;
5926
+ const reuseBefore = index.hydrateReuseStats();
5850
5927
  for (const [locationId, relPaths] of pathsByLocation) {
5851
5928
  index.hydrateDevice(deviceId, locationId, relPaths);
5852
5929
  indexed += relPaths.length;
5853
5930
  }
5931
+ const reuseAfter = index.hydrateReuseStats();
5932
+ const reused = reuseAfter.rowsReused - reuseBefore.rowsReused;
5933
+ const allocated = reuseAfter.rowsAllocated - reuseBefore.rowsAllocated;
5854
5934
  logger.info("recorder: hydrated a device from one recordings root", {
5855
5935
  tags: { deviceId },
5856
5936
  meta: {
5857
5937
  root,
5858
5938
  entries: entries.length,
5859
5939
  indexed,
5940
+ reused,
5941
+ allocated,
5860
5942
  locationIds: [...pathsByLocation.keys()],
5861
5943
  walkMs: walkedMs - startedMs,
5862
5944
  ms: Date.now() - startedMs
@@ -5966,6 +6048,8 @@ async function hydrateWindowFromStorage(index, deviceId, fromMs, toMs, locations
5966
6048
  continue;
5967
6049
  }
5968
6050
  const first = Math.floor(fromMs / HOUR_MS$2) * HOUR_MS$2;
6051
+ const reuseBefore = index.hydrateReuseStats();
6052
+ let hoursRead = 0;
5969
6053
  for (let hour = first; hour < toMs; hour += HOUR_MS$2) for (const profile of profiles) {
5970
6054
  const rel = hourDirRelPath(deviceId, profile, hour);
5971
6055
  let files;
@@ -5974,9 +6058,23 @@ async function hydrateWindowFromStorage(index, deviceId, fromMs, toMs, locations
5974
6058
  } catch {
5975
6059
  continue;
5976
6060
  }
6061
+ hoursRead += 1;
5977
6062
  index.hydrateHour(deviceId, locationForHydratedProfile(aliases, profile).id, hour, files.filter((f) => f.endsWith(".m4s")).map((f) => `${rel}/${f}`));
5978
6063
  }
5979
6064
  index.markHydrated(deviceId, fromMs, toMs);
6065
+ if (hoursRead === 0) continue;
6066
+ const reuseAfter = index.hydrateReuseStats();
6067
+ const reused = reuseAfter.rowsReused - reuseBefore.rowsReused;
6068
+ const allocated = reuseAfter.rowsAllocated - reuseBefore.rowsAllocated;
6069
+ logger.info("recorder: hydrated a window from one recordings root", {
6070
+ tags: { deviceId },
6071
+ meta: {
6072
+ root,
6073
+ hoursRead,
6074
+ reused,
6075
+ allocated
6076
+ }
6077
+ });
5980
6078
  }
5981
6079
  }
5982
6080
  //#endregion
@@ -1,4 +1,4 @@
1
- import { B as deriveRecordingMode, Dt as hydrateSchema, Gt as string, Ht as number, M as batteryCapability, Pt as selectAssignedProfileSlots, R as deriveBatteryPresence, St as BaseAddon, T as RecordingConfigSchema, Tt as DeviceType, Ut as object, Wt as record, at as recordingCapability, b as OpsLogEntrySchema, d as DEFAULT_EVENTS_BAND_BUFFER_SEC, ft as storageEvictableCapability, g as ExportRecordSchema, gt as errMsg, i as BatteryStatusSchema, jt as nodePin, m as EVENT_PAD_MS, ot as recordingExportCapability, qt as EventCategory, ut as resolveRecordingProfiles, w as RECORDING_EXPORT_MAX_READ_BYTES, wt as DeviceFeature } from "../dist-CmqBKO-v.mjs";
1
+ import { B as deriveRecordingMode, Dt as hydrateSchema, Gt as string, Ht as number, M as batteryCapability, Pt as selectAssignedProfileSlots, R as deriveBatteryPresence, St as BaseAddon, T as RecordingConfigSchema, Tt as DeviceType, Ut as object, Wt as record, at as recordingCapability, b as OpsLogEntrySchema, d as DEFAULT_EVENTS_BAND_BUFFER_SEC, ft as storageEvictableCapability, g as ExportRecordSchema, gt as errMsg, i as BatteryStatusSchema, jt as nodePin, m as EVENT_PAD_MS, ot as recordingExportCapability, qt as EventCategory, ut as resolveRecordingProfiles, w as RECORDING_EXPORT_MAX_READ_BYTES, wt as DeviceFeature } from "../dist-B7rIp5qQ.mjs";
2
2
  import { t as resolveHubHostname } from "../hub-hostname-cCknRYKj.mjs";
3
3
  import { r as withRecordingIntent } from "../restream-intent-B4BXZra7.mjs";
4
4
  import { n as createFileDataPlaneHandler, s as parseRangeHeader, t as contentTypeFor } from "../addon-utils-CgBCF-mE.mjs";
@@ -538,12 +538,38 @@ function segmentRelPath(deviceId, profile, startMs, durMs, bytes) {
538
538
  return `${deviceId}/${profile}/${d.getUTCFullYear()}/${p2(d.getUTCMonth() + 1)}/${p2(d.getUTCDate())}/${p2(d.getUTCHours())}/${startMs}-${durMs}-${bytes}.m4s`;
539
539
  }
540
540
  var SEG_RE = /^(\d+)\/([^/]+)\/\d{4}\/\d{2}\/\d{2}\/\d{2}\/(\d+)-(\d+)-(\d+)\.m4s$/;
541
+ /**
542
+ * The profile names the recorder writes. Used ONLY to hand back a shared string
543
+ * instead of a fresh one — never to reject a name.
544
+ *
545
+ * `SEG_RE`'s second group is a slice of the path, so V8 materialises a new
546
+ * string for it on every parse. The whole fleet has three profile names and the
547
+ * index holds one row per segment, so that is one redundant string per segment
548
+ * held for the segment's whole life. Measured on the production shape (17
549
+ * cameras x 2 profiles x 12 days of 10 s segments = 3.53 M rows): 798 MB
550
+ * without this, 717 MB with it — 80.7 MB, 24 B/row, ~10% of the index.
551
+ *
552
+ * A name outside this set falls through to the parsed slice unchanged, so an
553
+ * unrecognised profile is never renamed, never dropped, and costs exactly what
554
+ * it costs today. That fall-through is the property the tests pin.
555
+ */
556
+ var CANONICAL_PROFILES = [
557
+ "high",
558
+ "mid",
559
+ "low"
560
+ ];
561
+ /** The shared instance of `profile` when it is one of {@link CANONICAL_PROFILES},
562
+ * otherwise `profile` itself. */
563
+ function canonicalProfile(profile) {
564
+ for (const known of CANONICAL_PROFILES) if (known === profile) return known;
565
+ return profile;
566
+ }
541
567
  function parseSegmentPath(relPath) {
542
568
  const m = SEG_RE.exec(relPath);
543
569
  if (!m) return null;
544
570
  return {
545
571
  deviceId: Number(m[1]),
546
- profile: m[2],
572
+ profile: canonicalProfile(m[2]),
547
573
  startMs: Number(m[3]),
548
574
  durMs: Number(m[4]),
549
575
  bytes: Number(m[5])
@@ -589,6 +615,9 @@ var RecordingIndex = class {
589
615
  sortedByDevice = /* @__PURE__ */ new Map();
590
616
  fullRebuilds = 0;
591
617
  incrementalInserts = 0;
618
+ /** See {@link HydrateReuseStats}. */
619
+ rowsReused = 0;
620
+ rowsAllocated = 0;
592
621
  /** Hour buckets this device has been walked for; `ALL_HOURS` after a full
593
622
  * hydrate. Empty = nothing has been looked at, which is NOT the same as
594
623
  * "there is nothing" — see {@link hydrationOf}. */
@@ -627,6 +656,13 @@ var RecordingIndex = class {
627
656
  incrementalInserts: this.incrementalInserts
628
657
  };
629
658
  }
659
+ /** See {@link HydrateReuseStats}. Cumulative over the process. */
660
+ hydrateReuseStats() {
661
+ return {
662
+ rowsReused: this.rowsReused,
663
+ rowsAllocated: this.rowsAllocated
664
+ };
665
+ }
630
666
  /**
631
667
  * Ordered insert of ONE NEW row into every live view it belongs to (the
632
668
  * all-profiles view and its own profile's view). Views not yet materialised
@@ -644,25 +680,70 @@ var RecordingIndex = class {
644
680
  }
645
681
  }
646
682
  /**
683
+ * The row to index for `path` at `locationId`, REUSING the held one when the
684
+ * index already has it.
685
+ *
686
+ * ## Why a re-walk must not re-allocate (the second copy of every path)
687
+ *
688
+ * Every field of a `SegmentRow` except `locationId` is derived from `path`,
689
+ * so a held row at the same location is not merely EQUAL to a rebuilt one —
690
+ * it is the same fact. Rebuilding it allocates a second byte-identical path
691
+ * string, and that second string does not stay a garbage-collectable
692
+ * duplicate: `SegmentHourLedger`'s mirror still holds the FIRST one, because
693
+ * `reconcileFromIndex` skips its `ledger.put` exactly when the contents
694
+ * match. The archive walk (`roots.ts`) composes a fresh `${deviceId}/${entry}`
695
+ * for every file it reads, so before this reuse existed the first walk after
696
+ * every boot doubled the retained path strings of the whole archive,
697
+ * permanently.
698
+ *
699
+ * Measured on the production shape (26 cameras x 2 profiles x 12 days of
700
+ * 10 s segments = 5.39 M rows): 1218 MB held before the walk, 1591 MB after
701
+ * — +373 MB, 69 B/row, one extra `SeqOneByteString` per segment.
702
+ *
703
+ * Interning the strings instead was measured and is WORSE (+597 MB): the
704
+ * intern table costs more than the duplicate it removes. Not allocating is
705
+ * the only cheap answer.
706
+ *
707
+ * `null` = not a segment path, or another device's.
708
+ */
709
+ rowFor(held, path, deviceId, locationId) {
710
+ const prev = held.get(path);
711
+ if (prev !== void 0 && prev.locationId === locationId) {
712
+ this.rowsReused += 1;
713
+ return prev;
714
+ }
715
+ const p = parseSegmentPath(path);
716
+ if (!p || p.deviceId !== deviceId) return null;
717
+ this.rowsAllocated += 1;
718
+ return {
719
+ deviceId: p.deviceId,
720
+ profile: p.profile,
721
+ startMs: p.startMs,
722
+ durMs: p.durMs,
723
+ bytes: p.bytes,
724
+ path,
725
+ locationId
726
+ };
727
+ }
728
+ /**
647
729
  * Replace a device's segments FOR ONE LOCATION from a `storage.list` result (paths relative to that
648
730
  * location root). Rows on other locations are preserved. Non-segment paths and other devices are ignored.
731
+ *
732
+ * Deliberately NOT delete-all-then-reinsert: the archive walk re-reports rows
733
+ * this index already holds, with freshly built path strings, and dropping the
734
+ * held rows first would make those fresh strings the permanent ones — a
735
+ * second copy of the whole archive's paths. See {@link retainedPathStrings}.
649
736
  */
650
737
  hydrateDevice(deviceId, locationId, relPaths) {
651
738
  const m = this.mapFor(deviceId);
652
- for (const [path, existing] of m) if (existing.locationId === locationId) m.delete(path);
739
+ const seen = /* @__PURE__ */ new Set();
653
740
  for (const path of relPaths) {
654
- const p = parseSegmentPath(path);
655
- if (!p || p.deviceId !== deviceId) continue;
656
- m.set(path, {
657
- deviceId: p.deviceId,
658
- profile: p.profile,
659
- startMs: p.startMs,
660
- durMs: p.durMs,
661
- bytes: p.bytes,
662
- path,
663
- locationId
664
- });
741
+ const row = this.rowFor(m, path, deviceId, locationId);
742
+ if (row === null) continue;
743
+ if (row.path !== path || m.get(path) !== row) m.set(path, row);
744
+ seen.add(path);
665
745
  }
746
+ for (const [path, existing] of m) if (existing.locationId === locationId && !seen.has(path)) m.delete(path);
666
747
  this.invalidateSorted(deviceId);
667
748
  }
668
749
  /**
@@ -707,20 +788,15 @@ var RecordingIndex = class {
707
788
  */
708
789
  hydrateHour(deviceId, locationId, hourStartMs, relPaths) {
709
790
  const m = this.mapFor(deviceId);
791
+ let changed = false;
710
792
  for (const path of relPaths) {
711
- const p = parseSegmentPath(path);
712
- if (!p || p.deviceId !== deviceId) continue;
713
- m.set(path, {
714
- deviceId: p.deviceId,
715
- profile: p.profile,
716
- startMs: p.startMs,
717
- durMs: p.durMs,
718
- bytes: p.bytes,
719
- path,
720
- locationId
721
- });
793
+ const row = this.rowFor(m, path, deviceId, locationId);
794
+ if (row === null) continue;
795
+ if (m.get(path) === row) continue;
796
+ m.set(path, row);
797
+ changed = true;
722
798
  }
723
- this.invalidateSorted(deviceId);
799
+ if (changed) this.invalidateSorted(deviceId);
724
800
  this.markHydrated(deviceId, hourStartMs, hourStartMs + HOUR_MS$5);
725
801
  }
726
802
  /**
@@ -5846,16 +5922,22 @@ async function hydrateDeviceFromStorage(_api, index, deviceId, locations, logger
5846
5922
  }
5847
5923
  for (const location of aliases) if (!pathsByLocation.has(location.id)) pathsByLocation.set(location.id, []);
5848
5924
  let indexed = 0;
5925
+ const reuseBefore = index.hydrateReuseStats();
5849
5926
  for (const [locationId, relPaths] of pathsByLocation) {
5850
5927
  index.hydrateDevice(deviceId, locationId, relPaths);
5851
5928
  indexed += relPaths.length;
5852
5929
  }
5930
+ const reuseAfter = index.hydrateReuseStats();
5931
+ const reused = reuseAfter.rowsReused - reuseBefore.rowsReused;
5932
+ const allocated = reuseAfter.rowsAllocated - reuseBefore.rowsAllocated;
5853
5933
  logger.info("recorder: hydrated a device from one recordings root", {
5854
5934
  tags: { deviceId },
5855
5935
  meta: {
5856
5936
  root,
5857
5937
  entries: entries.length,
5858
5938
  indexed,
5939
+ reused,
5940
+ allocated,
5859
5941
  locationIds: [...pathsByLocation.keys()],
5860
5942
  walkMs: walkedMs - startedMs,
5861
5943
  ms: Date.now() - startedMs
@@ -5965,6 +6047,8 @@ async function hydrateWindowFromStorage(index, deviceId, fromMs, toMs, locations
5965
6047
  continue;
5966
6048
  }
5967
6049
  const first = Math.floor(fromMs / HOUR_MS$2) * HOUR_MS$2;
6050
+ const reuseBefore = index.hydrateReuseStats();
6051
+ let hoursRead = 0;
5968
6052
  for (let hour = first; hour < toMs; hour += HOUR_MS$2) for (const profile of profiles) {
5969
6053
  const rel = hourDirRelPath(deviceId, profile, hour);
5970
6054
  let files;
@@ -5973,9 +6057,23 @@ async function hydrateWindowFromStorage(index, deviceId, fromMs, toMs, locations
5973
6057
  } catch {
5974
6058
  continue;
5975
6059
  }
6060
+ hoursRead += 1;
5976
6061
  index.hydrateHour(deviceId, locationForHydratedProfile(aliases, profile).id, hour, files.filter((f) => f.endsWith(".m4s")).map((f) => `${rel}/${f}`));
5977
6062
  }
5978
6063
  index.markHydrated(deviceId, fromMs, toMs);
6064
+ if (hoursRead === 0) continue;
6065
+ const reuseAfter = index.hydrateReuseStats();
6066
+ const reused = reuseAfter.rowsReused - reuseBefore.rowsReused;
6067
+ const allocated = reuseAfter.rowsAllocated - reuseBefore.rowsAllocated;
6068
+ logger.info("recorder: hydrated a window from one recordings root", {
6069
+ tags: { deviceId },
6070
+ meta: {
6071
+ root,
6072
+ hoursRead,
6073
+ reused,
6074
+ allocated
6075
+ }
6076
+ });
5979
6077
  }
5980
6078
  }
5981
6079
  //#endregion
@@ -1,4 +1,4 @@
1
- const require_dist = require("./dist-CvpyuIHg.js");
1
+ const require_dist = require("./dist-DomdkRKL.js");
2
2
  let node_child_process = require("node:child_process");
3
3
  //#region ../../node_modules/mp4box/dist/mp4box.all.js
4
4
  var require_mp4box_all = /* @__PURE__ */ require_dist.__commonJSMin(((exports) => {
@@ -1,5 +1,5 @@
1
1
  import { r as __toESM, t as __commonJSMin } from "./chunk-DnnnRqeS.mjs";
2
- import { gt as errMsg } from "./dist-CmqBKO-v.mjs";
2
+ import { gt as errMsg } from "./dist-B7rIp5qQ.mjs";
3
3
  import { spawn } from "node:child_process";
4
4
  //#region ../../node_modules/mp4box/dist/mp4box.all.js
5
5
  var require_mp4box_all = /* @__PURE__ */ __commonJSMin(((exports) => {
@@ -1,6 +1,6 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_worker_protocol = require("../worker-protocol-DGYGCx9K.js");
3
- const require_lazy_sharp = require("../lazy-sharp-BzJLgOw9.js");
2
+ const require_worker_protocol = require("../worker-protocol-DQ5DPOFD.js");
3
+ const require_lazy_sharp = require("../lazy-sharp-BSeW3qY5.js");
4
4
  //#region src/session-decode/color-conversion.ts
5
5
  /**
6
6
  * Explicit YUV→RGB colorspace/range resolution for the session-decode worker.
@@ -1,4 +1,4 @@
1
- import { i as formatNativeLeaseKnobs, n as isWorkerRequest, o as resolveNativeLeaseKnobs, r as logLevelForLine } from "../worker-protocol-CElzXfEW.mjs";
1
+ import { i as formatNativeLeaseKnobs, n as isWorkerRequest, o as resolveNativeLeaseKnobs, r as logLevelForLine } from "../worker-protocol-CrHJXGHV.mjs";
2
2
  import { n as setSharpWarnSink, r as hostExternalEntryUrls, t as getSharp } from "../lazy-sharp-6oymT_yf.mjs";
3
3
  //#region src/session-decode/color-conversion.ts
4
4
  /**
@@ -1,4 +1,4 @@
1
- import { a as e, c as t, d as n, f as r, i, l as a, n as o, o as s, p as c, r as l, s as u, t as d, u as f } from "./_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-D-NFPV_g.mjs";
1
+ import { a as e, c as t, d as n, f as r, i, l as a, n as o, o as s, p as c, r as l, s as u, t as d, u as f } from "./_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-Do2DEtRt.mjs";
2
2
  import { a as p, i as m, n as h, o as g, r as _, t as v } from "./_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare__react__loadShare__.js-C9j-2lBe.mjs";
3
3
  import { n as y, r as b, t as x } from "./_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare__react_mf_1_jsx_mf_2_runtime__loadShare__.js-XO0-Pyu6.mjs";
4
4
  import { t as S } from "./_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-Cs8bmrWP.mjs";
@@ -3,7 +3,7 @@ import "./dist-CYZr2fwk.mjs";
3
3
  var e = {
4
4
  "@camstack/sdk": {
5
5
  name: "@camstack/sdk",
6
- version: "1.2.30",
6
+ version: "1.2.31",
7
7
  scope: ["default"],
8
8
  loaded: !1,
9
9
  from: "addon_stream_broker_widgets",
@@ -18,7 +18,7 @@ var e = {
18
18
  },
19
19
  "@camstack/types": {
20
20
  name: "@camstack/types",
21
- version: "1.2.102",
21
+ version: "1.2.104",
22
22
  scope: ["default"],
23
23
  loaded: !1,
24
24
  from: "addon_stream_broker_widgets",
@@ -33,7 +33,7 @@ var e = {
33
33
  },
34
34
  "@camstack/ui-library": {
35
35
  name: "@camstack/ui-library",
36
- version: "1.2.70",
36
+ version: "1.2.71",
37
37
  scope: ["default"],
38
38
  loaded: !1,
39
39
  from: "addon_stream_broker_widgets",
@@ -0,0 +1,26 @@
1
+ //#region \0virtual:mf:__mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js
2
+ var e = "__mf_init__virtual:mf:__mfe_internal__addon_stream_broker_widgets__mf_v__runtimeInit__mf_v__.js__", t = globalThis[e];
3
+ if (!t) {
4
+ let n, r, i = new Promise((e, t) => {
5
+ n = e, r = t;
6
+ });
7
+ t = globalThis[e] = {
8
+ initPromise: i,
9
+ initResolve: n,
10
+ initReject: r
11
+ };
12
+ }
13
+ var n = t.initPromise, r = "__mf_module_cache__";
14
+ globalThis[r] ||= {
15
+ share: {},
16
+ remote: {}
17
+ }, globalThis[r].share ||= {}, globalThis[r].remote ||= {};
18
+ var i = globalThis[r], a, o, s, c, l, u, d, f, p, m, h, g, _, v = (e) => {
19
+ e.AddonGlobalSettingsForm, e.AgentStepEditor, e.AlarmHeroCard, e.AlarmPanelInlineControl, e.AppShell, e.ArcKnob, e.AudioClassificationList, e.AudioLevelWaveform, e.AudioWaveform, e.AutomationHeroCard, e.AutomationInlineControl, e.AutotrackSection, e.BTN_COMPACT, e.BTN_COMPACT_DANGER, e.BTN_COMPACT_PRIMARY, e.BTN_COMPACT_WARNING, e.Badge, e.BatteryBadge, e.BottomSheet, e.Breadcrumb, e.BrightnessPanel, e.Button, e.ButtonControl, e.ButtonHeroCard, e.CARD_MODE_MIN_COLUMNS, e.CENTER, e.CHIP_ACTIVE, e.CHIP_BASE, e.CHIP_INACTIVE, e.CLASS_COLORS, e.COLUMN_BREAKPOINT_CLASS, e.COLUMN_PRIORITY, e.COMMIT_DEDUPE_TOLERANCE_MS, e.COMMIT_DEDUPE_WINDOW_MS, e.CONTROL_CAP_NAMES, e.CONTROL_FILLS, e.Camera, e.CameraStreamPlayer, e.Card, e.Checkbox, e.ChildSectionAccordion, e.ClimatePanel, e.CodeBlock, e.CollapsibleCard, e.ConfigFormBuilder, e.ConfigFormField, e.ConfigSchemaField, e.ConfirmActionButton, e.ConfirmDialogProvider, e.ConsumablesPanel, e.ContainerChildrenProvider, e.ContainerPrimaryHero, e.ControlColumn, e.ControlHeroCard, e.ControlInlineControl, e.ControlPanel, e.CopyButton, e.CoverHeroCard, e.CoverInlineControl, e.CoverPanel, e.CustomFieldRenderersProvider, e.DEFAULT_COLOR, e.DEVICE_COLUMNS, e.DEVICE_LIST_PAGE_SIZE_KEY, e.DEVICE_LIST_PAGE_SIZE_OPTIONS, e.DEVICE_ROLE_META, e.DEVICE_TYPE_CONTROL, e.DEVICE_TYPE_META, e.DISPLAY_ICON_REGISTRY, e.DataTable, e.DetectionCanvas, e.DetectionOverlay, e.DetectionResultTree, e.DevShell, e.DeviceActivityPanel, e.DeviceBatchToolbar, e.DeviceCard, e.DeviceContextProvider, e.DeviceExportPanel, e.DeviceGrid, e.DeviceItem, e.DeviceList, e.DeviceMultiSelectField, e.DeviceSelectField, e.DeviceSelectorPicker, e.DeviceStepMatrix, e.Dialog, e.DialogBody, e.DialogContent, e.DialogDescription, e.DialogFooter, e.DialogHeader, e.DialogTitle, e.DialogTrigger, e.DiscoveryPanel, e.DoorbellRecentPanel, e.Dropdown, e.DropdownContent, e.DropdownItem, e.DropdownTrigger, e.DummyHeroCard, e.DummyInline, e.EVENT_KIND_ICONS, e.EmptyState, e.ErrorBox, e.EventKindGlyph, e.EventStream, e.EyeOff, e.FILL, e.FanHeroCard, e.FanInlineControl, e.FanPanel, e.FilterBar, e.FloatingEventStream, e.FloatingLogStream, e.FloatingPanel, e.FormField, e.GRID_GAP, e.GRID_PAIRED, e.GRID_QUICK_STATS, e.GripTrack, e.GroupedModelSelector, e.HOST_WIDGETS, e.HlsVideo, e.HoverZoomImage, e.HumidifierHeroCard, e.HumidifierInlineControl, e.INPUT_COMPACT, e.IconAction, e.IconButton, e.ImageHeroCard, e.ImageInlineControl, e.ImageOff, e.ImageSelector, e.InferenceConfigSelector, e.Input, e.KebabMenu, e.KeyValueList, e.LIST_ROW, e.Label, e.LawnMowerHeroCard, e.LawnMowerInlineControl, e.LightHeroCard, e.LightInlineControl, e.LockHeroCard, e.LockInlineControl, e.LockPanel, e.LogStream, e.LoginForm, e.MODE_COLOR, e.MaskShapeCanvas, e.MediaPlayerHeroCard, e.MediaPlayerInlineControl, e.MediaPlayerPanel, e.Mic, e.MobileDrawer, e.ModelPicker, e.MotionZonesSettings, e.NodeMultiSelectField, e.NodePicker, e.NodeSelectField, e.OfflineBadge, e.PHASE_CONFIG, e.PRIORITY, e.PTZOverlay, e.PageHeader, e.PhaseIcon, e.PipelineBuilder, e.PipelineRuntimeSelector, e.PipelineStep, e.PipelineTreeMatrix, e.PlayerOverlaysProvider, e.Popover, e.PopoverContent, e.PopoverRowAction, e.PopoverTrigger, e.PrimaryChildPicker, e.PrivacyMaskSettings, e.ProviderBadge, e.PtzPanel, e.QrCode, e.RECONNECT_POLICY, e.RECORDED_PLAYBACK_MODES, e.RIGHT, e.ROI_AREA_WARN_FRACTION, e.ROLE_DESCRIPTOR, e.RadialGauge, e.RecordedPlaybackProvider, e.RecordingPanel, e.ResponseLog, e.RotateCcw, e.SCENE_CAPTURE_VARIANTS, e.SCENE_CAPTURE_VARIANTS$1, e.SECTION_BODY, e.SECTION_CARD, e.SECTION_HEADER, e.SETTING_ROW, e.SETTING_ROW_LABEL, e.SETTING_ROW_STACK_BREAKPOINT, e.SETTING_ROW_VALUE, e.SETTING_ROW_VALUE_TEXT, e.SPLIT_PANEL_OUTER, e.SPLIT_PANEL_SIDE, e.STACK_GAP, e.STATE_COLOR, e.SceneMonitorEditor, e.ScopePicker, e.ScriptHeroCard, e.ScriptInlineControl, e.ScrollArea, e.Select, e.SemanticBadge, e.SensorHeroCard, e.SensorInlineControl, e.SensorValueAtom, e.Separator, e.SettingRow, e.Sidebar, e.SidebarItem, e.Skeleton, e.SlideOverPanel, e.SlideToggle, e.SnapshotButton, e.Square, e.StatCard, e.StateValuesStream, e.StatusBadge, e.StepTimings, e.StepTreeMaster, e.Stepper, e.StreamBrokerSelector, e.StreamPanel, e.Switch, e.SwitchHeroCard, e.SwitchInlineControl, e.SwitchPanel, e.SystemProvider, e.TABLE_SCROLL_MAX_H, e.TEXT_FIELD_LABEL, e.TEXT_HINT, e.TEXT_METRIC, e.TEXT_SECTION_LABEL, e.TEXT_VALUE, e.TIMEZONES, e.Tabs, e.TabsContent, e.TabsList, e.TabsTrigger, e.TapToggle, e.ThemeProvider, e.ThermostatHeroCard, e.ThermostatInlineControl, e.TimezoneSelector, e.Tooltip, e.TooltipContent, e.TooltipTrigger, e.Trash2, e.VacuumHeroCard, e.VacuumInlineControl, e.ValueReadout, e.ValveHeroCard, e.ValveInlineControl, e.VersionBadge, e.VodPlaybackProvider, e.WaterHeaterHeroCard, e.WaterHeaterInlineControl, e.WeatherHeroCard, e.WeatherInlineControl, e.WidgetMetricCard, e.WidgetPanel, e.WidgetRegistryProvider, e.WidgetSlot, e.ZoneEditingProvider, e.agentColumnKey, e.allDeviceTypeFilterOptions, e.badgeFor, e.badgeFor$1, e.buildStepTreeFromSchema, e.childEntityId, e.childListName, e.cn, e.columnsForContext, e.containerChildToRef, e.countableDevices, e.coverHighlight, e.coverageLine, e.coverageLine$1, e.createLucideIcon, e.createSharedContext, e.createTheme, e.cursorFractionFor, e.darkColors, e.defaultTheme, e.deriveDeviceKind, e.describeDeviceSelector, e.deviceMatchesFilter, e.deviceOptionLabel, e.deviceRoleMeta, e.deviceRoleMetaOf, e.deviceTypeLabel, e.deviceTypeMeta, e.deviceTypeMetaOf, e.devicesToOptions, e.ensureMfHostInit, e.eventKindLabel, e.filterDeviceOptions, e.findTimezone, e.formatControlDateTime, e.formatLastSeen, e.formatNumeric, e.fuzzyMatch, e.getClassColor, e.getPhaseVisual, e.groupAgentColumns, e.groupChildrenByLayout, e.hardwareLabel, e.humanDuration, e.humidifierTint, e.initialScrubState, e.isAbsentProvider, e.isAbsentProvider$1, e.isFieldVisible, e.lawnMowerActivityMeta, e.lightColors, e.loadRemoteBundle, e.makeScrubBridge, e.metadataEntries, e.metadataString, e.mirror, e.mountAddonPage, e.nextReconnectAction, e.nextSort, e.normalizeForSearch, e.overrideEntityIdFromLink, e.parseRecordedServerMessage, e.providerIcons, e.resolveContainerPrimary, e.resolveControlAlign, e.resolveDeviceControl, e.resolveDisplayIcon, e.resolveEffectiveDefaultModel, e.resolveEffectiveStepModel, e.resolveEventKindIcon, e.resolvePrimaryChild, e.resolveSensorDisplay, e.resolveStepDefaultModel, e.resolveTableLayout, e.roiTooLarge, e.roiTooLarge$1, e.scrubReducer, e.selectedDeviceOptions, e.serializeRecordedCommand, e.shouldCommit, e.shouldEmit, e.shouldUseSingleNode, e.sortRows, e.statusIcons, e.statusLine, e.statusLine$1, e.stepHasModelForFormat, e.stepModelOptions, e.stripParentNamePrefix, e.tabForSelector, e.tankAlert, e.themeToCss, e.trpc, e.useAccessoriesGetStatus, e.useAccessoriesSetChildHidden, e.useAddonPagesListPages, e.useAddonSettingsGetDeviceSettings, e.useAddonSettingsGetGlobalSettings, e.useAddonSettingsUpdateDeviceSettings, e.useAddonSettingsUpdateGlobalSettings, e.useAddonWidgetsListWidgets, e.useAddonsApplyAutoUpdateToAll, e.useAddonsCancelJob, e.useAddonsCustom, e.useAddonsForceRefresh, e.useAddonsGetAddonAutoUpdate, e.useAddonsGetAutoUpdateSettings, e.useAddonsGetJob, e.useAddonsGetLastRestart, e.useAddonsGetLogs, e.useAddonsGetVersions, e.useAddonsInstallFromWorkspace, e.useAddonsInstallPackage, e.useAddonsIsWorkspaceAvailable, e.useAddonsList, e.useAddonsListCapabilityProviders, e.useAddonsListFrameworkPackages, e.useAddonsListJobs, e.useAddonsListPackages, e.useAddonsListUpdates, e.useAddonsListWorkspacePackages, e.useAddonsOnAddonLogs, e.useAddonsReloadPackages, e.useAddonsRestartAddon, e.useAddonsRestartServer, e.useAddonsRetryLoad, e.useAddonsRollbackPackage, e.useAddonsSearchAvailable, e.useAddonsSetAddonAutoUpdate, e.useAddonsSetAutoUpdateSettings, e.useAddonsSetCapabilityProviderEnabled, e.useAddonsStartJob, e.useAddonsUninstallPackage, e.useAddonsUpdatePackage, e.useAirQualitySensorGetStatus, e.useAlarmPanelArm, e.useAlarmPanelDisarm, e.useAlarmPanelGetStatus, e.useAlarmPanelTrigger, e.useAlertsDismiss, e.useAlertsEmit, e.useAlertsGetUnreadCount, e.useAlertsList, e.useAlertsMarkAllRead, e.useAlertsMarkRead, e.useAlertsUpdate, e.useAllWidgets, e.useAmbientLightSensorGetStatus, e.useAudioAnalysisApplyDeviceSettingsPatch, e.useAudioAnalysisGetDeviceLiveContribution, e.useAudioAnalysisGetDeviceSettingsContribution, e.useAudioAnalysisResolveDeviceSettings, e.useAudioAnalyzerAnalyseChunk, e.useAudioAnalyzerClassify, e.useAudioAnalyzerDispose, e.useAudioAnalyzerIsReady, e.useAudioAnalyzerReprobeAudioEngine, e.useAudioCodecCanHandle, e.useAudioCodecCloseSession, e.useAudioCodecCreateDecodeSession, e.useAudioCodecCreateEncodeSession, e.useAudioCodecFlushEncode, e.useAudioCodecListActiveSessions, e.useAudioCodecListSupportedCodecs, e.useAudioCodecPullEncoded, e.useAudioCodecPullPcm, e.useAudioCodecPushEncodedFrame, e.useAudioCodecPushPcm, e.useAudioMetricsGetCurrentSnapshot, e.useAudioMetricsGetHistory, e.useAutomationControlDisable, e.useAutomationControlEnable, e.useAutomationControlGetStatus, e.useAutomationControlTrigger, e.useBackupDelete, e.useBackupDeleteSchedule, e.useBackupGetEntries, e.useBackupList, e.useBackupListArchives, e.useBackupListDestinations, e.useBackupListLocations, e.useBackupListSchedules, e.useBackupPreviewSchedule, e.useBackupRestore, e.useBackupTrigger, e.useBackupUpsertDestinationPolicy, e.useBackupUpsertSchedule, e.useBatteryGetStatus, e.useBatteryWakeForStream, e.useBinaryGetStatus, e.useBrightnessGetStatus, e.useBrightnessSetBrightness, e.useBrokerAdd, e.useBrokerGet, e.useBrokerGetBrokerConfig, e.useBrokerGetSettings, e.useBrokerGetSettingsSchema, e.useBrokerGetState, e.useBrokerGetStatus, e.useBrokerList, e.useBrokerListProviders, e.useBrokerPublish, e.useBrokerRemove, e.useBrokerSetSettings, e.useBrokerSubscribe, e.useBrokerTestConnection, e.useBrokerTestSettings, e.useBrokerUnsubscribe, e.useButtonPress, e.useCameraCredentialsGetCredentials, e.useCameraCredentialsGetStatus, e.useCameraPipelineConfigApplyDeviceSettingsPatch, e.useCameraPipelineConfigGetDeviceLiveContribution, e.useCameraPipelineConfigGetDeviceSettingsContribution, e.useCameraStreamsGetBrokerStreams, e.useCameraStreamsGetCameraStreams, e.useCameraStreamsGetProfileRtspEntries, e.useCameraStreamsGetRtspEntries, e.useCameraStreamsPickStream, e.useCarbonMonoxideGetStatus, e.useClimateControlGetStatus, e.useClimateControlSetFanMode, e.useClimateControlSetMode, e.useClimateControlSetPreset, e.useClimateControlSetSwingHorizontal, e.useClimateControlSetSwingVertical, e.useClimateControlSetTarget, e.useClimateControlSetTargetHumidity, e.useClimateControlSetTargetRange, e.useClusterNodes, e.useColorGetStatus, e.useColorSetColor, e.useConfirm, e.useConnectionTestDescribeTest, e.useConnectionTestTestSettings, e.useConnectivityGetStatus, e.useConsumablesGetStatus, e.useConsumablesReset, e.useContactGetStatus, e.useContainerChildren, e.useControlGetStatus, e.useControlSetValue, e.useCoreBlocksCompile, e.useCoreBlocksCreate, e.useCoreBlocksDelete, e.useCoreBlocksGet, e.useCoreBlocksGetTypeDefs, e.useCoreBlocksList, e.useCoreBlocksRestart, e.useCoreBlocksSetEnabled, e.useCoreBlocksUpdate, e.useCoverClose, e.useCoverGetStatus, e.useCoverOpen, e.useCoverSetPosition, e.useCoverSetTiltPosition, e.useCoverStop, e.useCustomFieldRenderer, e.useDayNightGetOptions, e.useDayNightGetStatus, e.useDayNightSetSettings, e.useDebouncedString, e.useDecoderCreateSession, e.useDecoderDestroySession, e.useDecoderGetFrame, e.useDecoderGetInfo, e.useDecoderGetShmStats, e.useDecoderGetStats, e.useDecoderListActiveSessions, e.useDecoderOpenStream, e.useDecoderPullFrames, e.useDecoderPullHandles, e.useDecoderPushPacket, e.useDecoderReprobeHwaccel, e.useDecoderSupportsCodec, e.useDecoderUpdateConfig, e.useDetectionPipelineApplyDeviceSettingsPatch, e.useDetectionPipelineGetDeviceLiveContribution, e.useDetectionPipelineGetDeviceSettingsContribution, e.useDevShell, e.useDevice, e.useDeviceAdoptionAdopt, e.useDeviceAdoptionGetCandidate, e.useDeviceAdoptionGetStatus, e.useDeviceAdoptionListCandidateFilters, e.useDeviceAdoptionListCandidates, e.useDeviceAdoptionRefresh, e.useDeviceAdoptionRelease, e.useDeviceAdoptionResync, e.useDeviceAutotrack, e.useDeviceBattery, e.useDeviceCapSlice, e.useDeviceCapability, e.useDeviceDetections, e.useDeviceDiscoveryAdoptDevice, e.useDeviceDiscoveryGetStatus, e.useDeviceDiscoveryListDiscovered, e.useDeviceDiscoveryRefreshDiscovery, e.useDeviceDiscoveryReleaseDevice, e.useDeviceExportApplyDeviceSettingsPatch, e.useDeviceExportExposeDevice, e.useDeviceExportGetDeviceLiveContribution, e.useDeviceExportGetDeviceSettingsContribution, e.useDeviceExportGetStatus, e.useDeviceExportListExposedDevices, e.useDeviceExportListSupportedDeviceKinds, e.useDeviceExportUnexposeDevice, e.useDeviceId, e.useDeviceListPageSize, e.useDeviceManagerAddLocation, e.useDeviceManagerAdoptDevice, e.useDeviceManagerAdoptionAdopt, e.useDeviceManagerAdoptionCancelJob, e.useDeviceManagerAdoptionListCandidateFilters, e.useDeviceManagerAdoptionListCandidates, e.useDeviceManagerAdoptionListJobs, e.useDeviceManagerAdoptionRefresh, e.useDeviceManagerAdoptionRelease, e.useDeviceManagerAdoptionResync, e.useDeviceManagerAdoptionStartJob, e.useDeviceManagerAllocateDeviceId, e.useDeviceManagerApplyDeviceSettingsPatch, e.useDeviceManagerApplyInitialMeta, e.useDeviceManagerCreateDevice, e.useDeviceManagerDisable, e.useDeviceManagerDiscoverAllProviders, e.useDeviceManagerDiscoverDevices, e.useDeviceManagerDiscoverProvider, e.useDeviceManagerDiscoveryProviders, e.useDeviceManagerEnable, e.useDeviceManagerGetAllBindings, e.useDeviceManagerGetBindings, e.useDeviceManagerGetBindingsBatch, e.useDeviceManagerGetChildren, e.useDeviceManagerGetConfigSchema, e.useDeviceManagerGetCreationSchema, e.useDeviceManagerGetDevice, e.useDeviceManagerGetDeviceAggregate, e.useDeviceManagerGetDeviceLiveContribution, e.useDeviceManagerGetDeviceLiveInfoAggregate, e.useDeviceManagerGetDeviceSettingsAggregate, e.useDeviceManagerGetDeviceSettingsContribution, e.useDeviceManagerGetDeviceStatusAggregate, e.useDeviceManagerGetDeviceStatusAggregateBatch, e.useDeviceManagerGetLinkedDevices, e.useDeviceManagerGetLinkedDevicesBatch, e.useDeviceManagerGetRoleDisplayDefaults, e.useDeviceManagerGetSettingsSchema, e.useDeviceManagerGetStreamProfileMap, e.useDeviceManagerGetStreamSources, e.useDeviceManagerGetWireableFields, e.useDeviceManagerListAll, e.useDeviceManagerListBindableCapsForDeviceType, e.useDeviceManagerListLocations, e.useDeviceManagerListPersistedByAddon, e.useDeviceManagerListWrappersForCap, e.useDeviceManagerLoadConfig, e.useDeviceManagerLoadMeta, e.useDeviceManagerLoadRuntimeState, e.useDeviceManagerPersistConfig, e.useDeviceManagerProbeStreams, e.useDeviceManagerProviderCreationType, e.useDeviceManagerProviderDiscoveryParamsSchema, e.useDeviceManagerRegisterDevice, e.useDeviceManagerRemove, e.useDeviceManagerRemoveByIntegration, e.useDeviceManagerRemoveDevice, e.useDeviceManagerRemoveLocation, e.useDeviceManagerRunDeviceAction, e.useDeviceManagerSetChildLayout, e.useDeviceManagerSetDisabled, e.useDeviceManagerSetDisplay, e.useDeviceManagerSetIntegrationId, e.useDeviceManagerSetLinkDeviceId, e.useDeviceManagerSetLocation, e.useDeviceManagerSetMetadata, e.useDeviceManagerSetName, e.useDeviceManagerSetPrimaryChildEntityId, e.useDeviceManagerSetRole, e.useDeviceManagerSetRoleDisplayDefaults, e.useDeviceManagerSetStreamProfileMap, e.useDeviceManagerSetType, e.useDeviceManagerSetWrapperActive, e.useDeviceManagerTestCreationField, e.useDeviceManagerTestField, e.useDeviceManagerUpdateConfig, a = e.useDeviceManagerUpdateDeviceField, e.useDeviceManagerUpdateDeviceFieldsBatch, e.useDeviceOpsGetConfigEntries, e.useDeviceOpsGetRawState, e.useDeviceOpsGetSettingsSchema, e.useDeviceOpsGetStreamSources, e.useDeviceOpsRemoveDevice, e.useDeviceOpsRunAction, e.useDeviceOpsSetConfig, e.useDeviceProviderAdoptDiscoveredDevice, e.useDeviceProviderCreateDevice, e.useDeviceProviderDiscoverDevices, e.useDeviceProviderGetChildCreationSchema, e.useDeviceProviderGetDevices, e.useDeviceProviderGetDiscoveryParamsSchema, e.useDeviceProviderGetManualCreationType, e.useDeviceProviderGetStatus, e.useDeviceProviderStart, e.useDeviceProviderStop, e.useDeviceProviderSupportsDiscovery, e.useDeviceProviderSupportsManualCreation, e.useDeviceProviderTestCreationField, o = e.useDeviceProxy, e.useDeviceProxy$1, e.useDeviceSnapshot, e.useDeviceSnapshotImage, e.useDeviceSnapshotImage$1, e.useDeviceState, e.useDeviceStateGetAllSnapshots, e.useDeviceStateGetCapSlice, e.useDeviceStateGetSnapshot, e.useDeviceStateSetCapSlice, e.useDeviceStateSlice, e.useDeviceStateSlice$1, e.useDeviceStatusGetStatus, e.useDeviceWebrtc, e.useDevices, e.useDoorbellApplyDeviceSettingsPatch, e.useDoorbellEvents, e.useDoorbellGetDeviceLiveContribution, e.useDoorbellGetDeviceSettingsContribution, e.useDoorbellGetStatus, e.useEnumSensorGetStatus, e.useEventEmitterGetStatus, s = e.useEventInvalidation, c = e.useEventStreamLatest, e.useEventStreamMap, e.useEventsGetEventClipUrl, e.useEventsGetEventThumbnail, e.useEventsGetEvents, e.useFaceGalleryAssignFace, e.useFaceGalleryAssignFaces, e.useFaceGalleryCreateIdentity, e.useFaceGalleryDeleteFace, e.useFaceGalleryDeleteIdentity, e.useFaceGalleryGetFaceByTrack, e.useFaceGalleryGetFaceMedia, e.useFaceGalleryListIdentities, e.useFaceGalleryListIdentitySamples, e.useFaceGalleryListRecentFaces, e.useFaceGalleryRemoveSample, e.useFaceGalleryRenameIdentity, e.useFaceGallerySuggestFaceClusters, e.useFaceGalleryUnassignFace, e.useFaceGalleryUnassignFaces, e.useFanControlGetStatus, e.useFanControlSetDirection, e.useFanControlSetOscillating, e.useFanControlSetPercentage, e.useFanControlSetPreset, e.useFeatureProbeGetStatus, e.useFloodGetStatus, e.useGasGetStatus, e.useHumidifierGetStatus, e.useHumidifierSetMode, e.useHumidifierSetOn, e.useHumidifierSetTargetHumidity, e.useHumiditySensorGetStatus, e.useImageGetStatus, e.useImageSettingsGetOptions, e.useImageSettingsGetStatus, e.useImageSettingsSetSettings, e.useIntegrationsCreate, e.useIntegrationsDelete, e.useIntegrationsGet, e.useIntegrationsGetAvailableTypes, e.useIntegrationsGetByAddonId, e.useIntegrationsGetSettings, e.useIntegrationsList, e.useIntegrationsSetSettings, e.useIntegrationsTestConnection, e.useIntegrationsUpdate, e.useIntercomEndTalkSession, e.useIntercomGetStatus, e.useIntercomHandleAnswer, e.useIntercomPushTalkAudio, e.useIntercomStartSession, e.useIntercomStartTalkSession, e.useIntercomStopSession, e.useIsMidWidth, e.useIsMobile, e.useLawnMowerControlDock, e.useLawnMowerControlGetStatus, e.useLawnMowerControlPause, e.useLawnMowerControlStartMowing, e.useLiveBuffer, e.useLiveEvent, e.useLlmCancel, e.useLlmDeleteModel, e.useLlmDeleteProfile, e.useLlmGenerate, e.useLlmGenerateVision, e.useLlmGetDefaults, e.useLlmGetRuntimeStatus, e.useLlmGetUsage, e.useLlmInstallModel, e.useLlmListModelCatalog, e.useLlmListModels, e.useLlmListNodeModels, e.useLlmListProfileKinds, e.useLlmListProfiles, e.useLlmListRuntimeNodes, e.useLlmResolveModelRef, e.useLlmSetDefault, e.useLlmStartRuntime, e.useLlmStopRuntime, e.useLlmTestProfile, e.useLlmUpsertProfile, e.useLocalNetworkDownloadCa, e.useLocalNetworkGetAllowedAddresses, e.useLocalNetworkGetConnectionEndpoints, e.useLocalNetworkGetNotificationEndpoint, e.useLocalNetworkGetPreferred, e.useLocalNetworkGetTlsStatus, e.useLocalNetworkGetViewerEndpoints, e.useLocalNetworkList, e.useLocalNetworkRegenerateCertificate, e.useLocalNetworkResetAllowlistToBestMatch, e.useLocalNetworkRevertToGeneratedCertificate, e.useLocalNetworkSetAllowedAddresses, e.useLocalNetworkSetNotificationEndpoint, e.useLocalNetworkSetViewerEndpoints, e.useLocalNetworkUploadCertificate, e.useLockControlGetStatus, e.useLockControlLock, e.useLockControlOpen, e.useLockControlUnlock, e.useMediaPlayerGetStatus, e.useMediaPlayerNext, e.useMediaPlayerPause, e.useMediaPlayerPlay, e.useMediaPlayerPlayMedia, e.useMediaPlayerPrevious, e.useMediaPlayerSeek, e.useMediaPlayerSelectSource, e.useMediaPlayerSetMute, e.useMediaPlayerSetRepeat, e.useMediaPlayerSetShuffle, e.useMediaPlayerSetVolume, e.useMediaPlayerStop, e.useMeshNetworkGetStatus, e.useMeshNetworkJoin, e.useMeshNetworkLeave, e.useMeshNetworkListPeers, e.useMeshNetworkLogout, e.useMeshNetworkStartLogin, e.useMeshNetworkTestConnection, e.useMetricsProviderCollectSnapshot, e.useMetricsProviderDumpHeapSnapshot, e.useMetricsProviderGetAddonStats, e.useMetricsProviderGetCached, e.useMetricsProviderGetCpuTemperature, e.useMetricsProviderGetCurrent, e.useMetricsProviderGetDiskSpace, e.useMetricsProviderGetGpuInfo, e.useMetricsProviderGetProcessStats, e.useMetricsProviderKillProcess, e.useMetricsProviderListAddonInstances, e.useMetricsProviderListNodeProcesses, e.useMotionDetectionAnalyze, e.useMotionDetectionApplyDeviceSettingsPatch, e.useMotionDetectionGetDeviceLiveContribution, e.useMotionDetectionGetDeviceSettingsContribution, e.useMotionDetectionRemoveCamera, e.useMotionDetectionReset, e.useMotionGetStatus, e.useMotionIsDetected, e.useMotionTriggerGetStatus, e.useMotionTriggerSetMotionTrigger, e.useMotionZonesGetOptions, e.useMotionZonesGetStatus, e.useMotionZonesSetZone, e.useMqttBrokerAddBroker, e.useMqttBrokerGetBrokerConfig, e.useMqttBrokerGetStatus, e.useMqttBrokerListBrokers, e.useMqttBrokerRemoveBroker, e.useMqttBrokerStartEmbeddedBroker, e.useMqttBrokerStopEmbeddedBroker, e.useMqttBrokerTestConnection, e.useNativeObjectDetectionGetStatus, e.useNativeObjectDetectionSetEnabled, e.useNetworkAccessGetEndpoint, e.useNetworkAccessGetStatus, e.useNetworkAccessListEndpoints, e.useNetworkAccessStart, e.useNetworkAccessStop, e.useNetworkQualityGetAllStats, e.useNetworkQualityGetDeviceStats, e.useNetworkQualityReportClientStats, e.useNodesClusterAddonStatus, e.useNodesDeployAddon, e.useNodesExecuteQuery, e.useNodesGetCapUsageGraph, e.useNodesGetNodeAddons, e.useNodesRenameNode, e.useNodesRestartAddon, e.useNodesRestartNode, e.useNodesRestartProcess, e.useNodesSetProcessLogLevel, e.useNodesShutdownNode, e.useNodesTopology, e.useNodesUndeployAddon, e.useNotificationOutputDeleteTarget, e.useNotificationOutputDiscoverTargets, e.useNotificationOutputListTargetKinds, e.useNotificationOutputListTargets, e.useNotificationOutputSend, e.useNotificationOutputSetTargetEnabled, e.useNotificationOutputTestTarget, e.useNotificationOutputUpsertTarget, e.useNotificationRulesCancelSnooze, e.useNotificationRulesCreateRule, e.useNotificationRulesCreateSnooze, e.useNotificationRulesDeleteRule, e.useNotificationRulesGetAlarmConfig, e.useNotificationRulesGetConditionCatalog, e.useNotificationRulesGetHistory, e.useNotificationRulesGetRule, e.useNotificationRulesListDeviceMutes, e.useNotificationRulesListRules, e.useNotificationRulesListSnoozes, e.useNotificationRulesSetAlarmConfig, e.useNotificationRulesSetDeviceMuted, e.useNotificationRulesSetRuleEnabled, e.useNotificationRulesTestRule, e.useNotificationRulesUpdateRule, e.useNotifierCancel, e.useNotifierGetStatus, e.useNotifierSend, e.useNumericSensorGetStatus, e.useOptimisticSlice, e.useOptionalSystem, e.useOptionalWidgetRegistry, e.useOsdGetStatus, e.useOsdManagerClearSlotBinding, e.useOsdManagerCopyDeviceConfiguration, e.useOsdManagerGetConditionSupport, e.useOsdManagerGetDeviceOsd, e.useOsdManagerGetSourceCatalog, e.useOsdManagerPreviewSlot, e.useOsdManagerRenderDevice, e.useOsdManagerSetSlotBinding, e.useOsdSetOverlay, e.usePTZ, e.usePetFeederCallPet, e.usePetFeederCancelFeed, e.usePetFeederFeed, e.usePetFeederGetStatus, e.usePetFeederMarkFoodReplenished, e.usePetFeederPlaySound, e.usePetFeederResetDesiccant, e.usePetFeederSetChildLock, e.usePetFeederSetFeedSound, e.usePetFeederSetIndicatorLight, e.usePetFeederSetVolume, e.usePipelineAnalyticsApplyDeviceSettingsPatch, e.usePipelineAnalyticsCancelStorageMigrationMove, e.usePipelineAnalyticsClearTracks, e.usePipelineAnalyticsCompleteRetrainTrack, e.usePipelineAnalyticsDeleteDeviceEvents, e.usePipelineAnalyticsDeleteTracks, e.usePipelineAnalyticsDeselectRetrainFrame, e.usePipelineAnalyticsGetActiveTracks, e.usePipelineAnalyticsGetAudioEvents, e.usePipelineAnalyticsGetDeviceLiveContribution, e.usePipelineAnalyticsGetDeviceSettingsContribution, e.usePipelineAnalyticsGetEventDensity, e.usePipelineAnalyticsGetEventMedia, e.usePipelineAnalyticsGetEventStoreFootprint, e.usePipelineAnalyticsGetGroup, e.usePipelineAnalyticsGetKeyEvents, e.usePipelineAnalyticsGetMotionEvents, e.usePipelineAnalyticsGetObjectEmbeddingRebuildStatus, e.usePipelineAnalyticsGetObjectEvents, e.usePipelineAnalyticsGetRetrainExportUrl, e.usePipelineAnalyticsGetRetrainFrameImage, e.usePipelineAnalyticsGetSensorEvents, e.usePipelineAnalyticsGetStorageMigrationMoveStatus, e.usePipelineAnalyticsGetTrack, e.usePipelineAnalyticsGetTrackMedia, e.usePipelineAnalyticsGetTrainingExportSummary, e.usePipelineAnalyticsGetTrainingExportUrl, e.usePipelineAnalyticsListEventKinds, e.usePipelineAnalyticsListEventKindsBatch, e.usePipelineAnalyticsListGroups, e.usePipelineAnalyticsListOpsLog, e.usePipelineAnalyticsListRecentTracks, e.usePipelineAnalyticsListRetrainAnnotations, e.usePipelineAnalyticsListRetrainFrames, e.usePipelineAnalyticsListRetrainStaging, e.usePipelineAnalyticsListTrackMedia, e.usePipelineAnalyticsListTracks, e.usePipelineAnalyticsPauseForStorageMigration, e.usePipelineAnalyticsProposeRetrainAnnotations, e.usePipelineAnalyticsPruneEvents, e.usePipelineAnalyticsPruneEventsBefore, e.usePipelineAnalyticsPruneTracksBefore, e.usePipelineAnalyticsRebuildObjectEmbeddings, e.usePipelineAnalyticsReconcileFromDisk, e.usePipelineAnalyticsRefreshStorageLocationsForMigration, e.usePipelineAnalyticsRestageRetrainTrack, e.usePipelineAnalyticsResumeForStorageMigration, e.usePipelineAnalyticsSaveRetrainAnnotations, e.usePipelineAnalyticsSearchObjectEvents, e.usePipelineAnalyticsSelectRetrainFrames, e.usePipelineAnalyticsSetTrackFlags, e.usePipelineAnalyticsStartStorageMigrationMove, e.usePipelineAnalyticsWipeAllAnalytics, e.usePipelineAnalyticsWipeObjectEmbeddings, e.usePipelineExecutorCacheFrameInPool, e.usePipelineExecutorClearDeviceOverrides, e.usePipelineExecutorDeleteModel, e.usePipelineExecutorDeleteTemplate, e.usePipelineExecutorDownloadModel, e.usePipelineExecutorGetAddonModels, e.usePipelineExecutorGetAudioCapabilities, e.usePipelineExecutorGetAvailableEngines, e.usePipelineExecutorGetCapabilities, e.usePipelineExecutorGetDefaultSteps, e.usePipelineExecutorGetDetectionConfigSchema, e.usePipelineExecutorGetEffectiveTuning, e.usePipelineExecutorGetEngineProvisioning, e.usePipelineExecutorGetGlobalPipelineConfig, e.usePipelineExecutorGetGlobalSteps, e.usePipelineExecutorGetOrchestratorConfigSchema, e.usePipelineExecutorGetReferenceAudio, e.usePipelineExecutorGetReferenceAudioFiles, e.usePipelineExecutorGetReferenceImage, e.usePipelineExecutorGetSchema, e.usePipelineExecutorGetSelectedEngine, e.usePipelineExecutorGetVideoPipelineSteps, e.usePipelineExecutorInferCached, e.usePipelineExecutorKillEngine, e.usePipelineExecutorListLoadedEngines, e.usePipelineExecutorListReferenceImages, e.usePipelineExecutorListTemplates, e.usePipelineExecutorRunAudioTest, e.usePipelineExecutorRunPipeline, e.usePipelineExecutorRunPipelineBatch, e.usePipelineExecutorSaveTemplate, e.usePipelineExecutorSetVideoPipelineSteps, e.usePipelineExecutorSpinEngine, e.usePipelineExecutorUncacheFrame, e.usePipelineExecutorUpdateTemplate, e.usePipelineExecutorValidatePipeline, e.usePipelineOrchestratorApplyDeviceSettingsPatch, e.usePipelineOrchestratorAssignAudio, e.usePipelineOrchestratorAssignPipeline, e.usePipelineOrchestratorDeleteTemplate, e.usePipelineOrchestratorGetAgentLoad, e.usePipelineOrchestratorGetAgentSettings, e.usePipelineOrchestratorGetAudioAssignment, e.usePipelineOrchestratorGetAudioAssignments, e.usePipelineOrchestratorGetAudioNodeLoad, e.usePipelineOrchestratorGetCameraMetrics, e.usePipelineOrchestratorGetCameraSettings, l = e.usePipelineOrchestratorGetCameraStatus, e.usePipelineOrchestratorGetCameraStatuses, e.usePipelineOrchestratorGetCameraStepOverrides, e.usePipelineOrchestratorGetCameraSwitches, e.usePipelineOrchestratorGetCapabilityBindings, e.usePipelineOrchestratorGetDeviceLiveContribution, e.usePipelineOrchestratorGetDeviceSettingsContribution, e.usePipelineOrchestratorGetGlobalMetrics, e.usePipelineOrchestratorGetIngestOwner, e.usePipelineOrchestratorGetNodeInferenceDevices, e.usePipelineOrchestratorGetPipelineAssignment, e.usePipelineOrchestratorGetPipelineAssignments, e.usePipelineOrchestratorGetPipelineDevicePin, e.usePipelineOrchestratorGetReconcileFromDiskStatus, e.usePipelineOrchestratorListAgentSettings, e.usePipelineOrchestratorListTemplates, e.usePipelineOrchestratorPauseForStorageMigration, e.usePipelineOrchestratorRebalance, e.usePipelineOrchestratorReconcileFromDisk, e.usePipelineOrchestratorRemoveAgentSettings, e.usePipelineOrchestratorResetNodePipelineDefaults, e.usePipelineOrchestratorResolvePipeline, e.usePipelineOrchestratorResumeForStorageMigration, e.usePipelineOrchestratorSaveTemplate, e.usePipelineOrchestratorSetAgentCapabilities, e.usePipelineOrchestratorSetAgentDetectWeight, e.usePipelineOrchestratorSetAgentInferenceDevices, e.usePipelineOrchestratorSetAgentMaxCameras, e.usePipelineOrchestratorSetAgentReachableHost, e.usePipelineOrchestratorSetCameraPipelineForAgent, e.usePipelineOrchestratorSetCameraStepOverride, e.usePipelineOrchestratorSetCameraStepToggle, e.usePipelineOrchestratorSetCameraSwitch, e.usePipelineOrchestratorSetCapabilityBinding, e.usePipelineOrchestratorSetPipelineDevicePin, e.usePipelineOrchestratorUnassignAudio, e.usePipelineOrchestratorUnassignPipeline, e.usePipelineOrchestratorUpdateTemplate, e.usePipelineRunnerAttachCamera, e.usePipelineRunnerDetachCamera, e.usePipelineRunnerGetAllCameraMetrics, e.usePipelineRunnerGetCameraMetrics, e.usePipelineRunnerGetLocalCameras, e.usePipelineRunnerGetLocalLoad, e.usePipelineRunnerGetLocalMetrics, e.usePipelineRunnerGetNativeCrop, e.usePipelineRunnerReportMotion, e.usePipelineRunnerRunDetailSubtree, e.usePipelineRunnerRunStatelessStep, e.usePlateGalleryAssignPlate, e.usePlateGalleryAssignPlates, e.usePlateGalleryCorrectPlateText, e.usePlateGalleryCreateVehicle, e.usePlateGalleryDeletePlate, e.usePlateGalleryDeleteVehicle, e.usePlateGalleryGetPlateByTrack, e.usePlateGalleryGetPlateMedia, e.usePlateGalleryListPlates, e.usePlateGalleryListVehicleSamples, e.usePlateGalleryListVehicles, e.usePlateGalleryRemoveVehicleSample, e.usePlateGalleryRenameVehicle, e.usePlateGallerySearchPlates, e.usePlateGallerySuggestPlateClusters, e.usePlateGalleryUnassignPlate, e.usePlateGalleryUnassignPlates, e.usePlayerOverlayLayer, e.usePlayerOverlayLayers, e.usePlayerToolbarButton, e.usePlayerToolbarButtons, e.usePowerMeterGetStatus, e.usePresenceGetStatus, e.usePressureSensorGetStatus, e.usePrivacyMaskGetOptions, e.usePrivacyMaskGetStatus, e.usePrivacyMaskSetAudioEnabled, e.usePrivacyMaskSetMask, e.usePtzAutotrackGetSettings, e.usePtzAutotrackGetStatus, e.usePtzAutotrackSetEnabled, e.usePtzAutotrackSetSettings, e.usePtzContinuousMove, e.usePtzDeletePreset, e.usePtzGetOptions, e.usePtzGetPosition, e.usePtzGetPresets, e.usePtzGetStatus, e.usePtzGoHome, e.usePtzGoToPreset, e.usePtzMove, e.usePtzSavePreset, e.usePtzSetAutofocus, e.usePtzStop, e.useRebootReboot, e.useRecordedPlayback, e.useRecordingApplyDeviceSettingsPatch, e.useRecordingCancelRelocateJob, e.useRecordingCancelStorageMigrationMove, e.useRecordingDeleteFootprint, e.useRecordingExportCancelExport, e.useRecordingExportCreateExport, e.useRecordingExportDeleteExport, e.useRecordingExportGetDownloadUrl, e.useRecordingExportGetExport, e.useRecordingExportListExports, e.useRecordingExportReadExportBytes, e.useRecordingGetAvailability, e.useRecordingGetDaysWithRecordings, e.useRecordingGetDeviceConfig, e.useRecordingGetDeviceLiveContribution, e.useRecordingGetDeviceSettingsContribution, e.useRecordingGetPlaybackManifest, e.useRecordingGetStatus, e.useRecordingGetStorageMigrationMoveStatus, e.useRecordingGetStorageUsage, e.useRecordingListOpsLog, e.useRecordingListRelocateJobs, e.useRecordingLocateSegment, e.useRecordingPauseForStorageMigration, e.useRecordingPlanStorageRebalance, e.useRecordingPruneFootage, e.useRecordingReadGopBytes, e.useRecordingReadSegmentBytes, e.useRecordingRefreshStorageLocationsForMigration, e.useRecordingRelocateFootage, e.useRecordingRenderClip, e.useRecordingRenderGif, e.useRecordingRescanStorage, e.useRecordingResumeForStorageMigration, e.useRecordingSetDeviceConfig, e.useRecordingStartStorageMigrationMove, e.useRecordingStartStorageRebalance, e.useRemoteComponent, e.useSceneMonitorCaptureReference, e.useSceneMonitorCreateScene, e.useSceneMonitorDeleteReference, e.useSceneMonitorDeleteScene, e.useSceneMonitorGetStatus, e.useSceneMonitorListScenes, e.useSceneMonitorRecheckNow, e.useSceneMonitorResetScene, e.useSceneMonitorUpdateScene, e.useScriptRunnerGetStatus, e.useScriptRunnerRun, e.useScriptRunnerStop, e.useScrubController, e.useServerManagementApplyServerUpdate, e.useServerManagementCheckServerUpdate, e.useServerManagementGetServerPackageStatus, e.useServerManagementRestartServer, e.useServerManagementRollbackServerUpdate, e.useSettingsStoreCount, e.useSettingsStoreDeclareCollection, e.useSettingsStoreDelete, e.useSettingsStoreDeleteWhere, e.useSettingsStoreGet, e.useSettingsStoreHistogram, e.useSettingsStoreInsert, e.useSettingsStoreIsEmpty, e.useSettingsStoreQuery, e.useSettingsStoreSet, e.useSettingsStoreUpdate, e.useSettingsStoreUpdateWhere, e.useSmokeGetStatus, e.useSnapshotApplyDeviceSettingsPatch, e.useSnapshotGetDebugState, e.useSnapshotGetDeviceLiveContribution, e.useSnapshotGetDeviceSettingsContribution, e.useSnapshotGetSnapshot, e.useSnapshotGetSnapshotLinks, e.useSnapshotGetSnapshotOverview, e.useSnapshotGetStatus, e.useSnapshotInvalidateCache, e.useStorageAbortUpload, e.useStorageBeginDownload, e.useStorageBeginUpload, e.useStorageDelete, e.useStorageDeleteLocation, e.useStorageEndDownload, e.useStorageExists, e.useStorageFinalizeUpload, e.useStorageGetAvailableSpace, e.useStorageGetDefaultLocation, e.useStorageList, e.useStorageListLocationDeclarations, e.useStorageListLocations, e.useStorageListProviders, e.useStorageMigrationCancel, e.useStorageMigrationPlan, e.useStorageMigrationStart, e.useStorageMigrationStatus, e.useStorageRead, e.useStorageReadChunk, e.useStorageResolve, e.useStorageTestConfig, e.useStorageTestLocation, e.useStorageUpsertLocation, e.useStorageWrite, e.useStorageWriteChunk, e.useStreamBrokerAcquireEgressTranscode, u = e.useStreamBrokerApplyDeviceSettingsPatch, e.useStreamBrokerAssignProfile, e.useStreamBrokerFetchEventMedia, e.useStreamBrokerGetAllRtspEntries, e.useStreamBrokerGetBrokerStats, d = e.useStreamBrokerGetDeviceAudioMute, e.useStreamBrokerGetDeviceLiveContribution, f = e.useStreamBrokerGetDeviceSettingsContribution, e.useStreamBrokerGetPreBufferInfo, e.useStreamBrokerGetRtspEntry, e.useStreamBrokerGetRtspPort, e.useStreamBrokerGetStreamUrl, e.useStreamBrokerGetStreamWithCodec, e.useStreamBrokerIsRtspEnabled, p = e.useStreamBrokerKillClient, e.useStreamBrokerListAllCameraStreams, m = e.useStreamBrokerListAllProfileSlots, h = e.useStreamBrokerListClients, e.useStreamBrokerProbeStream, e.useStreamBrokerProduceEventMedia, e.useStreamBrokerPublishCameraStream, e.useStreamBrokerPullAudioChunks, e.useStreamBrokerPullFrameHandles, e.useStreamBrokerRegenerateRtspToken, e.useStreamBrokerReleaseEgressTranscode, e.useStreamBrokerReleaseStreamWithCodec, e.useStreamBrokerRenderPreBufferClip, e.useStreamBrokerRestartProfile, e.useStreamBrokerRetractCameraStream, g = e.useStreamBrokerSetDeviceAudioMute, e.useStreamBrokerSetPreBufferDuration, e.useStreamBrokerSetRtspEnabled, e.useStreamBrokerSubscribeAudioChunks, e.useStreamBrokerSubscribeFrames, e.useStreamBrokerUnassignProfile, e.useStreamBrokerUnsubscribeAudioChunks, e.useStreamBrokerUnsubscribeFrames, e.useStreamCatalogGetCatalog, e.useStreamParamsGetConfigSchema, e.useStreamParamsGetOptions, e.useStreamParamsGetStatus, e.useStreamParamsSetProfile, e.useSwitchGetStatus, e.useSwitchSetState, _ = e.useSystem, e.useSystem$1, e.useSystemDetectSiteLocation, e.useSystemFeatureFlags, e.useSystemForceRetentionCleanup, e.useSystemGetRetentionConfig, e.useSystemGetSiteLocation, e.useSystemHealth, e.useSystemInfo, e.useSystemMutation, e.useSystemNetworkAddresses, e.useSystemQuery, e.useSystemSetRetentionConfig, e.useSystemSetSiteLocation, e.useTamperGetStatus, e.useTemperatureSensorGetStatus, e.useTerminalSessionAdoptLegacyMonitor, e.useTerminalSessionClose, e.useTerminalSessionCreateInstance, e.useTerminalSessionDeleteInstance, e.useTerminalSessionListInstances, e.useTerminalSessionListLegacyCameras, e.useTerminalSessionListProfiles, e.useTerminalSessionListSessions, e.useTerminalSessionOpenSession, e.useTerminalSessionPullOutput, e.useTerminalSessionResize, e.useTerminalSessionSetInstanceEnabled, e.useTerminalSessionUpdateInstance, e.useTerminalSessionWriteInput, e.useThemeMode, e.useToastOnToast, e.useTurnProviderGetTurnServers, e.useUpdateGetStatus, e.useUpdateInstallUpdate, e.useUserManagementConfirmTotp, e.useUserManagementCreateApiKey, e.useUserManagementCreateScopedToken, e.useUserManagementCreateUser, e.useUserManagementDeleteUser, e.useUserManagementDisableTotp, e.useUserManagementGetTotpStatus, e.useUserManagementListApiKeys, e.useUserManagementListOauthSessions, e.useUserManagementListScopedTokens, e.useUserManagementListUsers, e.useUserManagementOauthExchangeCode, e.useUserManagementOauthIssueCode, e.useUserManagementOauthRefresh, e.useUserManagementOauthVerifyAccessToken, e.useUserManagementResetPassword, e.useUserManagementRevokeApiKey, e.useUserManagementRevokeOauthSession, e.useUserManagementRevokeScopedToken, e.useUserManagementSetUserScopes, e.useUserManagementSetupTotp, e.useUserManagementUpdateUser, e.useUserManagementValidateApiKey, e.useUserManagementValidateCredentials, e.useUserManagementValidateScopedToken, e.useUserManagementVerifyTotp, e.useVacuumControlGetStatus, e.useVacuumControlLocate, e.useVacuumControlPause, e.useVacuumControlReturnToBase, e.useVacuumControlSetFanSpeed, e.useVacuumControlStart, e.useVacuumControlStop, e.useValveClose, e.useValveGetStatus, e.useValveOpen, e.useValveSetPosition, e.useValveStop, e.useVibrationGetStatus, e.useVideoclipsGetClipPlayback, e.useVideoclipsListClips, e.useVodPlayback, e.useWaterHeaterGetStatus, e.useWaterHeaterSetAway, e.useWaterHeaterSetOperationMode, e.useWaterHeaterSetTargetTemp, e.useWeatherGetStatus, e.useWebrtcSessionAddIceCandidate, e.useWebrtcSessionCloseSession, e.useWebrtcSessionCreateSession, e.useWebrtcSessionGetIceCandidates, e.useWebrtcSessionGetSessionState, e.useWebrtcSessionHandleAnswer, e.useWebrtcSessionHandleOffer, e.useWebrtcSessionHasAdaptiveBitrate, e.useWebrtcSessionListStreams, e.useWidget, e.useWidgetMetadata, e.useWidgetRegistry, e.useZoneAnalyticsGetCameraHistory, e.useZoneAnalyticsGetCurrentSnapshot, e.useZoneAnalyticsGetUnzonedHistory, e.useZoneAnalyticsGetZoneHistory, e.useZoneEditing, e.useZoneRulesListRules, e.useZoneRulesSetRules, e.useZonesAddZone, e.useZonesListZones, e.useZonesRemoveZone, e.useZonesUpdateZone, e.vacuumStateMeta, e.validateScopes, e.valveStateMeta, e.variantLabel, e.variantLabel$1, e.waterHeaterPhase, e.waterHeaterTint, e.weatherConditionMeta, e.weatherTint, e.default;
20
+ }, y = i.share["default:@camstack/ui-library"];
21
+ y === void 0 ? n.then(() => {
22
+ if (y = i.share["default:@camstack/ui-library"], y === void 0) throw Error("[Module Federation] Shared module @camstack/ui-library was imported before federation bootstrap finished.");
23
+ v(y);
24
+ }) : v(y);
25
+ //#endregion
26
+ export { p as a, g as c, o as d, s as f, f as i, _ as l, u as n, m as o, c as p, d as r, h as s, l as t, a as u };