@camstack/addon-post-analysis 1.2.4 → 1.2.5

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.
@@ -11522,6 +11522,12 @@ var motionCooldownMsField = {
11522
11522
  default: 3e4,
11523
11523
  step: 500
11524
11524
  };
11525
+ var maxSessionHoldMsField = {
11526
+ min: 0,
11527
+ max: 6e5,
11528
+ default: 12e4,
11529
+ step: 5e3
11530
+ };
11525
11531
  var motionFpsField = {
11526
11532
  min: 1,
11527
11533
  max: 30,
@@ -11669,6 +11675,19 @@ var RunnerCameraConfigSchema = object({
11669
11675
  "on-motion"
11670
11676
  ]).default("always-on"),
11671
11677
  motionCooldownMs: number().min(motionCooldownMsField.min).default(motionCooldownMsField.default),
11678
+ /**
11679
+ * Orchestrator-side on-motion session-hold cap (ms). While an on-motion
11680
+ * detection session is active and ≥1 confirmed non-stationary track is
11681
+ * still live, the orchestrator keeps the session open past
11682
+ * `motionCooldownMs` (a slowly-moving subject can stop re-triggering the
11683
+ * camera's VMD yet is still being tracked frame-to-frame) — up to this many
11684
+ * ms since the session opened, after which it closes regardless. `0`
11685
+ * disables the hold (legacy cooldown-only teardown). Not consumed by the
11686
+ * runner itself — carried here so it shares the per-camera device-settings
11687
+ * surface with `motionCooldownMs`; the orchestrator reads it off the
11688
+ * resolved `CameraDetectionConfig`.
11689
+ */
11690
+ maxSessionHoldMs: number().min(maxSessionHoldMsField.min).max(maxSessionHoldMsField.max).optional(),
11672
11691
  motionFps: number().min(motionFpsField.min).max(motionFpsField.max).default(motionFpsField.default),
11673
11692
  detectionFps: number().min(detectionFpsField.min).max(detectionFpsField.max).default(detectionFpsField.default),
11674
11693
  motionStreamId: string(),
@@ -11758,7 +11777,7 @@ var RunnerCameraConfigSchema = object({
11758
11777
  */
11759
11778
  inferenceDevices: array(RunnerInferenceDeviceSchema).readonly().optional()
11760
11779
  });
11761
- motionFpsField.min, motionFpsField.max, motionFpsField.step, motionFpsField.default, detectionFpsField.min, detectionFpsField.max, detectionFpsField.step, detectionFpsField.default, motionCooldownMsField.min, motionCooldownMsField.max, motionCooldownMsField.step, motionCooldownMsField.default, occupancyRecheckSecField.min, occupancyRecheckSecField.max, occupancyRecheckSecField.step, occupancyRecheckSecField.default, occupancyRecheckFramesField.min, occupancyRecheckFramesField.max, occupancyRecheckFramesField.step, occupancyRecheckFramesField.default;
11780
+ motionFpsField.min, motionFpsField.max, motionFpsField.step, motionFpsField.default, detectionFpsField.min, detectionFpsField.max, detectionFpsField.step, detectionFpsField.default, motionCooldownMsField.min, motionCooldownMsField.max, motionCooldownMsField.step, motionCooldownMsField.default, maxSessionHoldMsField.min, maxSessionHoldMsField.max, maxSessionHoldMsField.step, maxSessionHoldMsField.default, occupancyRecheckSecField.min, occupancyRecheckSecField.max, occupancyRecheckSecField.step, occupancyRecheckSecField.default, occupancyRecheckFramesField.min, occupancyRecheckFramesField.max, occupancyRecheckFramesField.step, occupancyRecheckFramesField.default;
11762
11781
  /**
11763
11782
  * Runtime load summary returned by `getLocalLoad`. Used by the orchestrator's
11764
11783
  * load-balancing levels (L2 capacity-based, L3 hardware-aware) to decide
@@ -17030,7 +17049,14 @@ var pipelineAnalyticsCapability = {
17030
17049
  eventId: string(),
17031
17050
  kind: MediaFileKindEnum.optional()
17032
17051
  }), array(MediaFileSchema).readonly()),
17033
- getTrackMedia: method(object({ trackId: string() }), array(MediaFileSchema).readonly()),
17052
+ /** All media rows owned by a track. `kinds` narrows to a kind subset so a
17053
+ * client can fetch the SMALL display variants on open and pull the
17054
+ * multi-MB native variants only on demand (mirrors `getEventMedia.kind`).
17055
+ * Absent ⇒ every kind (back-compat). */
17056
+ getTrackMedia: method(object({
17057
+ trackId: string(),
17058
+ kinds: array(MediaFileKindEnum).optional()
17059
+ }), array(MediaFileSchema).readonly()),
17034
17060
  /**
17035
17061
  * Search object events by text query using CLIP cosine similarity.
17036
17062
  * Encodes `text` via the `embedding-encoder` cap, queries the
@@ -11544,6 +11544,12 @@ var motionCooldownMsField = {
11544
11544
  default: 3e4,
11545
11545
  step: 500
11546
11546
  };
11547
+ var maxSessionHoldMsField = {
11548
+ min: 0,
11549
+ max: 6e5,
11550
+ default: 12e4,
11551
+ step: 5e3
11552
+ };
11547
11553
  var motionFpsField = {
11548
11554
  min: 1,
11549
11555
  max: 30,
@@ -11691,6 +11697,19 @@ var RunnerCameraConfigSchema = object({
11691
11697
  "on-motion"
11692
11698
  ]).default("always-on"),
11693
11699
  motionCooldownMs: number().min(motionCooldownMsField.min).default(motionCooldownMsField.default),
11700
+ /**
11701
+ * Orchestrator-side on-motion session-hold cap (ms). While an on-motion
11702
+ * detection session is active and ≥1 confirmed non-stationary track is
11703
+ * still live, the orchestrator keeps the session open past
11704
+ * `motionCooldownMs` (a slowly-moving subject can stop re-triggering the
11705
+ * camera's VMD yet is still being tracked frame-to-frame) — up to this many
11706
+ * ms since the session opened, after which it closes regardless. `0`
11707
+ * disables the hold (legacy cooldown-only teardown). Not consumed by the
11708
+ * runner itself — carried here so it shares the per-camera device-settings
11709
+ * surface with `motionCooldownMs`; the orchestrator reads it off the
11710
+ * resolved `CameraDetectionConfig`.
11711
+ */
11712
+ maxSessionHoldMs: number().min(maxSessionHoldMsField.min).max(maxSessionHoldMsField.max).optional(),
11694
11713
  motionFps: number().min(motionFpsField.min).max(motionFpsField.max).default(motionFpsField.default),
11695
11714
  detectionFps: number().min(detectionFpsField.min).max(detectionFpsField.max).default(detectionFpsField.default),
11696
11715
  motionStreamId: string(),
@@ -11780,7 +11799,7 @@ var RunnerCameraConfigSchema = object({
11780
11799
  */
11781
11800
  inferenceDevices: array(RunnerInferenceDeviceSchema).readonly().optional()
11782
11801
  });
11783
- motionFpsField.min, motionFpsField.max, motionFpsField.step, motionFpsField.default, detectionFpsField.min, detectionFpsField.max, detectionFpsField.step, detectionFpsField.default, motionCooldownMsField.min, motionCooldownMsField.max, motionCooldownMsField.step, motionCooldownMsField.default, occupancyRecheckSecField.min, occupancyRecheckSecField.max, occupancyRecheckSecField.step, occupancyRecheckSecField.default, occupancyRecheckFramesField.min, occupancyRecheckFramesField.max, occupancyRecheckFramesField.step, occupancyRecheckFramesField.default;
11802
+ motionFpsField.min, motionFpsField.max, motionFpsField.step, motionFpsField.default, detectionFpsField.min, detectionFpsField.max, detectionFpsField.step, detectionFpsField.default, motionCooldownMsField.min, motionCooldownMsField.max, motionCooldownMsField.step, motionCooldownMsField.default, maxSessionHoldMsField.min, maxSessionHoldMsField.max, maxSessionHoldMsField.step, maxSessionHoldMsField.default, occupancyRecheckSecField.min, occupancyRecheckSecField.max, occupancyRecheckSecField.step, occupancyRecheckSecField.default, occupancyRecheckFramesField.min, occupancyRecheckFramesField.max, occupancyRecheckFramesField.step, occupancyRecheckFramesField.default;
11784
11803
  /**
11785
11804
  * Runtime load summary returned by `getLocalLoad`. Used by the orchestrator's
11786
11805
  * load-balancing levels (L2 capacity-based, L3 hardware-aware) to decide
@@ -17052,7 +17071,14 @@ var pipelineAnalyticsCapability = {
17052
17071
  eventId: string(),
17053
17072
  kind: MediaFileKindEnum.optional()
17054
17073
  }), array(MediaFileSchema).readonly()),
17055
- getTrackMedia: method(object({ trackId: string() }), array(MediaFileSchema).readonly()),
17074
+ /** All media rows owned by a track. `kinds` narrows to a kind subset so a
17075
+ * client can fetch the SMALL display variants on open and pull the
17076
+ * multi-MB native variants only on demand (mirrors `getEventMedia.kind`).
17077
+ * Absent ⇒ every kind (back-compat). */
17078
+ getTrackMedia: method(object({
17079
+ trackId: string(),
17080
+ kinds: array(MediaFileKindEnum).optional()
17081
+ }), array(MediaFileSchema).readonly()),
17056
17082
  /**
17057
17083
  * Search object events by text query using CLIP cosine similarity.
17058
17084
  * Encodes `text` via the `embedding-encoder` cap, queries the
@@ -2,7 +2,7 @@ Object.defineProperties(exports, {
2
2
  __esModule: { value: true },
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
- const require_dist = require("../dist-Ck79MtSp.js");
5
+ const require_dist = require("../dist-Dlb4YrCt.js");
6
6
  let node_fs = require("node:fs");
7
7
  let node_fs$1 = require_dist.__toESM(node_fs, 1);
8
8
  node_fs = require_dist.__toESM(node_fs);
@@ -1,4 +1,4 @@
1
- import { b as BaseAddon, f as hfModelUrl, u as embeddingEncoderCapability } from "../dist-gQ5DHTYd.mjs";
1
+ import { b as BaseAddon, f as hfModelUrl, u as embeddingEncoderCapability } from "../dist-Db0CsDGK.mjs";
2
2
  import { createRequire } from "node:module";
3
3
  import * as fs from "node:fs";
4
4
  import * as path$1 from "node:path";
@@ -1,4 +1,4 @@
1
- const require_dist = require("./dist-Ck79MtSp.js");
1
+ const require_dist = require("./dist-Dlb4YrCt.js");
2
2
  let node_fs = require("node:fs");
3
3
  node_fs = require_dist.__toESM(node_fs, 1);
4
4
  let node_path = require("node:path");
@@ -1,6 +1,6 @@
1
1
  import { a as e, i as t, n, o as r, r as i, t as a } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare__react__loadShare__.js-C0AuF9av.mjs";
2
2
  import { t as o } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_tanstack_mf_1_react_mf_2_query__loadShare__.js-B3Wx5J80.mjs";
3
- import { a as s, i as c, n as l, o as u, r as d, s as f, t as p } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-CUKChUeW.mjs";
3
+ import { a as s, i as c, n as l, o as u, r as d, s as f, t as p } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-CDgDsFf_.mjs";
4
4
  import { n as m, r as h, t as g } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare__react_mf_1_jsx_mf_2_runtime__loadShare__.js-Bm-iyjmq.mjs";
5
5
  //#region ../../node_modules/lucide-react/dist/esm/shared/src/utils.js
6
6
  var _ = (e) => e.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase(), v = (e) => e.replace(/^([A-Z])|[\s-_]+(\w)/g, (e, t, n) => n ? n.toUpperCase() : t.toLowerCase()), y = (e) => {
@@ -18,7 +18,7 @@ var e = {
18
18
  },
19
19
  "@camstack/types": {
20
20
  name: "@camstack/types",
21
- version: "1.2.4",
21
+ version: "1.2.5",
22
22
  scope: ["default"],
23
23
  loaded: !1,
24
24
  from: "addon_pipeline_analytics_widgets",
@@ -33,7 +33,7 @@ var e = {
33
33
  },
34
34
  "@camstack/ui-library": {
35
35
  name: "@camstack/ui-library",
36
- version: "1.2.4",
36
+ version: "1.2.5",
37
37
  scope: ["default"],
38
38
  loaded: !1,
39
39
  from: "addon_pipeline_analytics_widgets",
@@ -0,0 +1,26 @@
1
+ //#region \0virtual:mf:__mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js
2
+ var e = "__mf_init__virtual:mf:__mfe_internal__addon_pipeline_analytics_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 = (e) => {
19
+ e.AddonGlobalSettingsForm, e.AgentStepEditor, e.AlarmHeroCard, e.AlarmPanelInlineControl, e.AppShell, e.ArcKnob, e.AudioClassificationList, e.AudioLevelWaveform, e.AudioWaveform, 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.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.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.DeviceStepMatrix, e.Dialog, 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, a = 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.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.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.RECORDED_PLAYBACK_MODES, e.RIGHT, e.ROLE_DESCRIPTOR, e.RadialGauge, e.RecordedPlaybackProvider, e.RecordingPanel, e.ResponseLog, e.SECTION_BODY, e.SECTION_CARD, e.SECTION_HEADER, e.SPLIT_PANEL_OUTER, e.SPLIT_PANEL_SIDE, o = e.STACK_GAP, e.STATE_COLOR, e.ScopePicker, e.ScrollArea, e.Select, e.SemanticBadge, e.SensorHeroCard, e.SensorInlineControl, e.SensorValueAtom, e.Separator, 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.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, s = e.WidgetSlot, e.ZoneEditingProvider, e.agentColumnKey, e.allDeviceTypeFilterOptions, e.buildStepTreeFromSchema, e.childEntityId, e.childListName, e.cn, e.columnsForContext, e.containerChildToRef, e.countableDevices, e.coverHighlight, e.createLucideIcon, e.createSharedContext, e.createTheme, e.cursorFractionFor, e.darkColors, e.defaultTheme, e.deriveDeviceKind, e.deviceMatchesFilter, e.deviceOptionLabel, e.deviceRoleMeta, e.deviceRoleMetaOf, 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.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.nextSort, e.normalizeForSearch, e.overrideEntityIdFromLink, e.parseRecordedServerMessage, e.providerIcons, e.resolveContainerPrimary, e.resolveControlAlign, e.resolveDeviceControl, e.resolveDisplayIcon, e.resolveEventKindIcon, e.resolvePrimaryChild, e.resolveSensorDisplay, e.resolveStepDefaultModel, e.scrubReducer, e.selectedDeviceOptions, e.serializeRecordedCommand, e.shouldCommit, e.shouldEmit, e.shouldUseSingleNode, e.sortRows, e.statusIcons, e.stripParentNamePrefix, 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.useBackupGetEntries, e.useBackupList, e.useBackupListArchives, e.useBackupListDestinations, e.useBackupListLocations, e.useBackupPreviewSchedule, e.useBackupRestore, e.useBackupTrigger, e.useBackupUpsertDestinationPolicy, 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.useConnectivityGetStatus, e.useConsumablesGetStatus, e.useConsumablesReset, e.useContactGetStatus, e.useContainerChildren, e.useControlGetStatus, e.useControlSetValue, 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.useDeviceManagerAdoptionListCandidateFilters, e.useDeviceManagerAdoptionListCandidates, e.useDeviceManagerAdoptionRefresh, e.useDeviceManagerAdoptionRelease, e.useDeviceManagerAdoptionResync, 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.useDeviceManagerGetChildren, e.useDeviceManagerGetConfigSchema, e.useDeviceManagerGetCreationSchema, e.useDeviceManagerGetDevice, e.useDeviceManagerGetDeviceAggregate, e.useDeviceManagerGetDeviceLiveContribution, e.useDeviceManagerGetDeviceLiveInfoAggregate, e.useDeviceManagerGetDeviceSettingsAggregate, e.useDeviceManagerGetDeviceSettingsContribution, e.useDeviceManagerGetDeviceStatusAggregate, e.useDeviceManagerGetLinkedDevices, 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.useDeviceManagerSetDeviceLinks, 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, 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, c = e.useDeviceProxy, e.useDeviceProxy$1, e.useDeviceSnapshot, e.useDeviceSnapshotImage, l = e.useDeviceState, e.useDeviceStateGetAllSnapshots, e.useDeviceStateGetCapSlice, e.useDeviceStateGetSnapshot, e.useDeviceStateSetCapSlice, u = e.useDeviceStateSlice, e.useDeviceStatusGetStatus, e.useDeviceWebrtc, e.useDevices, e.useDoorbellApplyDeviceSettingsPatch, e.useDoorbellEvents, e.useDoorbellGetDeviceLiveContribution, e.useDoorbellGetDeviceSettingsContribution, e.useDoorbellGetStatus, e.useEnumSensorGetStatus, e.useEventEmitterGetStatus, e.useEventInvalidation, 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.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.useLlmSetDefault, e.useLlmStartRuntime, e.useLlmStopRuntime, e.useLlmTestProfile, e.useLlmUpsertProfile, e.useLocalNetworkGetAllowedAddresses, e.useLocalNetworkGetConnectionEndpoints, e.useLocalNetworkGetPreferred, e.useLocalNetworkList, e.useLocalNetworkResetAllowlistToBestMatch, e.useLocalNetworkSetAllowedAddresses, 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.useNotifierCancel, e.useNotifierGetStatus, e.useNotifierSend, e.useNumericSensorGetStatus, e.useOptimisticSlice, e.useOptionalSystem, e.useOptionalWidgetRegistry, e.useOsdGetStatus, 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.usePipelineAnalyticsClearTracks, e.usePipelineAnalyticsDeleteDeviceEvents, e.usePipelineAnalyticsDeleteTracks, e.usePipelineAnalyticsGetActiveTracks, e.usePipelineAnalyticsGetAudioEvents, e.usePipelineAnalyticsGetDeviceLiveContribution, e.usePipelineAnalyticsGetDeviceSettingsContribution, e.usePipelineAnalyticsGetEventDensity, e.usePipelineAnalyticsGetEventMedia, e.usePipelineAnalyticsGetEventStoreFootprint, e.usePipelineAnalyticsGetKeyEvents, e.usePipelineAnalyticsGetMotionEvents, e.usePipelineAnalyticsGetObjectEvents, e.usePipelineAnalyticsGetSensorEvents, e.usePipelineAnalyticsGetTrack, e.usePipelineAnalyticsGetTrackMedia, e.usePipelineAnalyticsListEventKinds, e.usePipelineAnalyticsListOpsLog, e.usePipelineAnalyticsListRecentTracks, e.usePipelineAnalyticsListTracks, e.usePipelineAnalyticsPruneEvents, e.usePipelineAnalyticsPruneEventsBefore, e.usePipelineAnalyticsPruneTracksBefore, e.usePipelineAnalyticsSearchObjectEvents, e.usePipelineAnalyticsWipeAllAnalytics, 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, e.usePipelineOrchestratorGetCameraStatus, e.usePipelineOrchestratorGetCameraStatuses, e.usePipelineOrchestratorGetCameraStepOverrides, e.usePipelineOrchestratorGetCapabilityBindings, e.usePipelineOrchestratorGetDeviceLiveContribution, e.usePipelineOrchestratorGetDeviceSettingsContribution, e.usePipelineOrchestratorGetGlobalMetrics, e.usePipelineOrchestratorGetIngestOwner, e.usePipelineOrchestratorGetNodeInferenceDevices, e.usePipelineOrchestratorGetPipelineAssignment, e.usePipelineOrchestratorGetPipelineAssignments, e.usePipelineOrchestratorGetPipelineDevicePin, e.usePipelineOrchestratorListAgentSettings, e.usePipelineOrchestratorListTemplates, e.usePipelineOrchestratorRebalance, e.usePipelineOrchestratorRemoveAgentSettings, e.usePipelineOrchestratorResetNodePipelineDefaults, e.usePipelineOrchestratorResolvePipeline, e.usePipelineOrchestratorSaveTemplate, e.usePipelineOrchestratorSetAgentCapabilities, e.usePipelineOrchestratorSetAgentDetectWeight, e.usePipelineOrchestratorSetAgentInferenceDevices, e.usePipelineOrchestratorSetAgentMaxCameras, e.usePipelineOrchestratorSetAgentReachableHost, e.usePipelineOrchestratorSetCameraPipelineForAgent, e.usePipelineOrchestratorSetCameraStepOverride, e.usePipelineOrchestratorSetCameraStepToggle, 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.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.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.useRecordingDeleteFootprint, e.useRecordingExportCancelExport, e.useRecordingExportCreateExport, e.useRecordingExportDeleteExport, e.useRecordingExportGetDownloadUrl, e.useRecordingExportGetExport, e.useRecordingExportListExports, e.useRecordingGetAvailability, e.useRecordingGetDaysWithRecordings, e.useRecordingGetDeviceConfig, e.useRecordingGetDeviceLiveContribution, e.useRecordingGetDeviceSettingsContribution, e.useRecordingGetPlaybackManifest, e.useRecordingGetStatus, e.useRecordingGetStorageUsage, e.useRecordingListOpsLog, e.useRecordingLocateSegment, e.useRecordingPruneFootage, e.useRecordingReadSegmentBytes, e.useRecordingRescanStorage, e.useRecordingSetDeviceConfig, e.useRemoteComponent, e.useSceneMonitorCaptureReference, e.useSceneMonitorCreateScene, e.useSceneMonitorDeleteReference, e.useSceneMonitorDeleteScene, e.useSceneMonitorGetStatus, e.useSceneMonitorListScenes, e.useSceneMonitorRecheckNow, 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.useSettingsStoreGet, e.useSettingsStoreHistogram, e.useSettingsStoreInsert, e.useSettingsStoreIsEmpty, e.useSettingsStoreQuery, e.useSettingsStoreSet, e.useSettingsStoreUpdate, e.useSmokeGetStatus, e.useSnapshotApplyDeviceSettingsPatch, e.useSnapshotGetDeviceLiveContribution, e.useSnapshotGetDeviceSettingsContribution, e.useSnapshotGetSnapshot, 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.useStorageRead, e.useStorageReadChunk, e.useStorageResolve, e.useStorageTestConfig, e.useStorageTestLocation, e.useStorageUpsertLocation, e.useStorageWrite, e.useStorageWriteChunk, e.useStreamBrokerApplyDeviceSettingsPatch, e.useStreamBrokerAssignProfile, e.useStreamBrokerGetAllRtspEntries, e.useStreamBrokerGetBrokerStats, e.useStreamBrokerGetDeviceLiveContribution, e.useStreamBrokerGetDeviceSettingsContribution, e.useStreamBrokerGetPreBufferInfo, e.useStreamBrokerGetRtspEntry, e.useStreamBrokerGetRtspPort, e.useStreamBrokerGetStreamUrl, e.useStreamBrokerGetStreamWithCodec, e.useStreamBrokerIsRtspEnabled, e.useStreamBrokerKillClient, e.useStreamBrokerListAllCameraStreams, e.useStreamBrokerListAllProfileSlots, e.useStreamBrokerListClients, e.useStreamBrokerProbeStream, e.useStreamBrokerPublishCameraStream, e.useStreamBrokerPullAudioChunks, e.useStreamBrokerPullFrameHandles, e.useStreamBrokerRegenerateRtspToken, e.useStreamBrokerReleaseStreamWithCodec, e.useStreamBrokerRestartProfile, e.useStreamBrokerRetractCameraStream, 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, d = e.useSystem, e.useSystem$1, e.useSystemFeatureFlags, e.useSystemForceRetentionCleanup, e.useSystemGetRetentionConfig, e.useSystemHealth, e.useSystemInfo, e.useSystemMutation, e.useSystemNetworkAddresses, e.useSystemQuery, e.useSystemSetRetentionConfig, e.useTamperGetStatus, e.useTemperatureSensorGetStatus, 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.waterHeaterPhase, e.waterHeaterTint, e.weatherConditionMeta, e.weatherTint, e.default;
20
+ }, p = i.share["default:@camstack/ui-library"];
21
+ p === void 0 ? n.then(() => {
22
+ if (p = i.share["default:@camstack/ui-library"], p === void 0) throw Error("[Module Federation] Shared module @camstack/ui-library was imported before federation bootstrap finished.");
23
+ f(p);
24
+ }) : f(p);
25
+ //#endregion
26
+ export { c as a, s as i, d as n, l as o, o as r, u as s, a as t };
@@ -36,7 +36,7 @@ async function r() {
36
36
  }
37
37
  },
38
38
  "@camstack/types": {
39
- version: "1.2.4",
39
+ version: "1.2.5",
40
40
  scope: "default",
41
41
  shareConfig: {
42
42
  singleton: !0,
@@ -81,7 +81,7 @@ async function r() {
81
81
  }
82
82
  },
83
83
  "@camstack/ui-library": {
84
- version: "1.2.4",
84
+ version: "1.2.5",
85
85
  scope: "default",
86
86
  shareConfig: {
87
87
  singleton: !0,
@@ -2,7 +2,7 @@ Object.defineProperties(exports, {
2
2
  __esModule: { value: true },
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
- const require_dist = require("../dist-Ck79MtSp.js");
5
+ const require_dist = require("../dist-Dlb4YrCt.js");
6
6
  let node_crypto = require("node:crypto");
7
7
  let sharp = require("sharp");
8
8
  sharp = require_dist.__toESM(sharp);
@@ -6765,9 +6765,12 @@ var EventMediaDispatcher = class {
6765
6765
  const empty = {
6766
6766
  storedSnapshots: [],
6767
6767
  thumbnailTrackIds: [],
6768
+ firstFrameTrackIds: [],
6769
+ lastFrameTrackIds: [],
6768
6770
  rasterFallbacks: []
6769
6771
  };
6770
- if (events.length === 0 && trackFrames.length === 0 && snapshots.length === 0) return empty;
6772
+ const extraCandidateCount = input.rasterFallbackCandidates?.length ?? 0;
6773
+ if (events.length === 0 && trackFrames.length === 0 && snapshots.length === 0 && extraCandidateCount === 0) return empty;
6771
6774
  let decoded;
6772
6775
  try {
6773
6776
  decoded = await resolveFrame(frameHandle, { getRemoteFrame: this.deps.getRemoteFrame });
@@ -6817,44 +6820,59 @@ var EventMediaDispatcher = class {
6817
6820
  });
6818
6821
  return empty;
6819
6822
  }
6820
- const rasterFallbacks = await this.collectRasterFallbacks(frameData, fw, fh, trackFrames, snapshots, input.cropPadding, input.rasterFallbackWantedTrackIds);
6823
+ const rasterFallbacks = await this.collectRasterFallbacks(frameData, fw, fh, trackFrames, snapshots, input.cropPadding, input.rasterFallbackWantedTrackIds, input.rasterFallbackCandidates);
6821
6824
  for (const ev of events) await this.writeEventMedia(deviceId, frameHandle, fw, fh, ev, input.cropPadding);
6822
- for (const tf of trackFrames) await this.writeTrackFrame(deviceId, frameHandle, frameData, fw, fh, tf);
6825
+ const firstFrameTrackIds = [];
6826
+ for (const tf of trackFrames) if (await this.writeTrackFrame(deviceId, frameHandle, frameData, fw, fh, tf)) firstFrameTrackIds.push(tf.trackId);
6823
6827
  const storedSnapshots = [];
6824
6828
  const thumbnailTrackIds = [];
6829
+ const lastFrameTrackIds = [];
6825
6830
  for (const sn of snapshots) {
6826
6831
  const res = await this.writeTrackSnapshot(deviceId, frameHandle, frameData, fw, fh, sn);
6827
6832
  if (res.storedSnapshot) storedSnapshots.push(res.storedSnapshot);
6828
6833
  if (res.thumbnailWritten) thumbnailTrackIds.push(sn.trackId);
6834
+ if (res.lastFrameWritten) lastFrameTrackIds.push(sn.trackId);
6829
6835
  }
6830
6836
  return {
6831
6837
  storedSnapshots,
6832
6838
  thumbnailTrackIds,
6839
+ firstFrameTrackIds,
6840
+ lastFrameTrackIds,
6833
6841
  rasterFallbacks
6834
6842
  };
6835
6843
  }
6836
6844
  /**
6837
- * Cut ONE clean detection-raster subject crop per WANTED track that has a
6838
- * target (firstFrame or snapshot) in this frame the "first available
6839
- * detection-raster frame" of the zero-media fallback. Cropped from the
6840
- * already-resolved `frameData` at its REAL resolution via {@link extractCrop}
6841
- * (extract-only NEVER upscaled). Deduped per trackId (first target wins).
6842
- * A per-track encode failure is skipped (logged) a missing fallback simply
6845
+ * Cut ONE clean detection-raster subject crop per WANTED track observed this
6846
+ * frame the "first available detection-raster frame" of the zero-media
6847
+ * fallback. Candidate bboxes come from this frame's firstFrame/snapshot targets
6848
+ * AND (widened) the explicit `extraCandidates` (confirmed tracks with no such
6849
+ * target). Cropped from the already-resolved `frameData` at its REAL resolution
6850
+ * via {@link extractCrop} (extract-only NEVER upscaled). Deduped per trackId
6851
+ * (first candidate wins; target-derived candidates precede the extras). A
6852
+ * per-track encode failure is skipped (logged) — a missing fallback simply
6843
6853
  * leaves the track with no last-resort preview, never an error.
6844
6854
  */
6845
- async collectRasterFallbacks(frameData, fw, fh, trackFrames, snapshots, cropPadding, wanted) {
6855
+ async collectRasterFallbacks(frameData, fw, fh, trackFrames, snapshots, cropPadding, wanted, extraCandidates) {
6846
6856
  if (!wanted || wanted.size === 0) return [];
6847
6857
  const seen = /* @__PURE__ */ new Set();
6848
6858
  const out = [];
6849
- const candidates = [...trackFrames.map((t) => ({
6850
- trackId: t.trackId,
6851
- timestamp: t.timestamp,
6852
- bbox: t.bbox
6853
- })), ...snapshots.map((s) => ({
6854
- trackId: s.trackId,
6855
- timestamp: s.timestamp,
6856
- bbox: s.bbox
6857
- }))];
6859
+ const candidates = [
6860
+ ...trackFrames.map((t) => ({
6861
+ trackId: t.trackId,
6862
+ timestamp: t.timestamp,
6863
+ bbox: t.bbox
6864
+ })),
6865
+ ...snapshots.map((s) => ({
6866
+ trackId: s.trackId,
6867
+ timestamp: s.timestamp,
6868
+ bbox: s.bbox
6869
+ })),
6870
+ ...(extraCandidates ?? []).map((c) => ({
6871
+ trackId: c.trackId,
6872
+ timestamp: c.timestamp,
6873
+ bbox: c.bbox
6874
+ }))
6875
+ ];
6858
6876
  for (const c of candidates) {
6859
6877
  if (!wanted.has(c.trackId) || seen.has(c.trackId)) continue;
6860
6878
  seen.add(c.trackId);
@@ -6888,11 +6906,15 @@ var EventMediaDispatcher = class {
6888
6906
  * TrackStore wiring (null when `appendSnapshot` is false or the encode
6889
6907
  * failed). `thumbnailWritten` reports whether a best `thumbnail` actually
6890
6908
  * landed this frame (#27-A) so the caller can stop forcing retries.
6909
+ * `lastFrameWritten` reports whether the rolling `lastFrame` actually landed
6910
+ * (DEFECT B) so the caller advances its `lastFrameAt` clock ONLY on a real
6911
+ * write — a dropped roll leaves the clock put and retries next frame.
6891
6912
  */
6892
6913
  async writeTrackSnapshot(deviceId, frameHandle, frameData, fw, fh, sn) {
6893
6914
  if (!sn.appendSnapshot && !sn.rollingLastFrame && !sn.bestThumbnail) return {
6894
6915
  storedSnapshot: null,
6895
- thumbnailWritten: false
6916
+ thumbnailWritten: false,
6917
+ lastFrameWritten: false
6896
6918
  };
6897
6919
  let boxed = null;
6898
6920
  if (sn.appendSnapshot || sn.rollingLastFrame) boxed = await this.boxedTimelineFrame(deviceId, frameHandle, frameData, fw, fh, sn.trackId, sn.bbox, sn.label);
@@ -6913,7 +6935,8 @@ var EventMediaDispatcher = class {
6913
6935
  bbox: sn.bbox
6914
6936
  };
6915
6937
  } catch {}
6916
- if (sn.rollingLastFrame && boxed) await this.replaceKind(deviceId, sn.trackId, "lastFrame", sn.timestamp, boxed);
6938
+ let lastFrameWritten = false;
6939
+ if (sn.rollingLastFrame && boxed) lastFrameWritten = await this.replaceKind(deviceId, sn.trackId, "lastFrame", sn.timestamp, boxed);
6917
6940
  let thumbnailWritten = false;
6918
6941
  if (sn.bestThumbnail) {
6919
6942
  const variants = await this.cropSubjectVariants(frameHandle, fw, fh, sn.bbox);
@@ -6924,7 +6947,8 @@ var EventMediaDispatcher = class {
6924
6947
  }
6925
6948
  return {
6926
6949
  storedSnapshot: stored,
6927
- thumbnailWritten
6950
+ thumbnailWritten,
6951
+ lastFrameWritten
6928
6952
  };
6929
6953
  }
6930
6954
  /**
@@ -7121,7 +7145,7 @@ var EventMediaDispatcher = class {
7121
7145
  }
7122
7146
  async writeTrackFrame(deviceId, frameHandle, frameData, fw, fh, tf) {
7123
7147
  const boxed = await this.boxedTimelineFrame(deviceId, frameHandle, frameData, fw, fh, tf.trackId, tf.bbox, tf.label);
7124
- if (!boxed) return;
7148
+ if (!boxed) return false;
7125
7149
  try {
7126
7150
  await this.deps.mediaStore.put({
7127
7151
  deviceId,
@@ -7131,6 +7155,7 @@ var EventMediaDispatcher = class {
7131
7155
  timestamp: tf.timestamp,
7132
7156
  data: boxed
7133
7157
  });
7158
+ return true;
7134
7159
  } catch (err) {
7135
7160
  this.deps.logger.warn("event media: track frame failed", {
7136
7161
  tags: { deviceId },
@@ -7140,6 +7165,7 @@ var EventMediaDispatcher = class {
7140
7165
  error: err instanceof Error ? err.message : String(err)
7141
7166
  }
7142
7167
  });
7168
+ return false;
7143
7169
  }
7144
7170
  }
7145
7171
  };
@@ -12549,6 +12575,32 @@ var PipelineAnalyticsAddon = class extends require_dist.BaseAddon {
12549
12575
  * where no `snapshot` is appended, so it is never byte-identical to a stored
12550
12576
  * `snapshot` (kills the end-of-track duplicate). Cleared on track end. */
12551
12577
  lastFrameAtByTrack = /* @__PURE__ */ new Map();
12578
+ /** Tracks with a rolling-`lastFrame` capture CURRENTLY in flight (RC-1,
12579
+ * DEFECT B). The `lastFrameAt` clock now advances ONLY when the write lands
12580
+ * (dispatcher completion), not synchronously at plan time — so a dropped roll
12581
+ * (recycled/blank frame) leaves the clock put and re-rolls next frame. Without
12582
+ * an in-flight guard that re-roll would fire EVERY frame while the first
12583
+ * capture is still resolving (0.1–3s under the native path), stacking N
12584
+ * overlapping captures. While a track sits here `buildSnapshotTargets`
12585
+ * suppresses a new rolling-`lastFrame` request; the pending dispatch clears it
12586
+ * (and, if it landed, advances `lastFrameAtByTrack`). Cleared on track end +
12587
+ * reset. */
12588
+ lastFrameInFlight = /* @__PURE__ */ new Set();
12589
+ /** Confirmed-birth tracks whose `firstFrame` has NOT yet actually persisted
12590
+ * (DEFECT A). Seeded on a confirmed birth (alongside the birth firstFrame
12591
+ * target) and removed the moment the write lands. While a track sits here and
12592
+ * is matched this frame, `collectFirstFrameRetries` re-schedules a firstFrame
12593
+ * target so a birth capture dropped by a recycled/blank live frame is retried
12594
+ * on a later frame (earliest available view still beats none). Scoped to
12595
+ * confirmed births ONLY — a suppressed false-positive birth or resurrection
12596
+ * never enters, so it never gets a retro firstFrame. Cleared on track end +
12597
+ * reset. */
12598
+ firstFramePendingTracks = /* @__PURE__ */ new Set();
12599
+ /** Tracks with a `firstFrame` capture CURRENTLY in flight (RC-1, DEFECT A).
12600
+ * Mirrors `thumbnailInFlight`: while a firstFrame capture is resolving the
12601
+ * per-frame retry is suppressed so at most one capture is outstanding per
12602
+ * track. Cleared on dispatch settle (+ track end / reset). */
12603
+ firstFrameInFlight = /* @__PURE__ */ new Set();
12552
12604
  /** Track ids whose best `thumbnail` has ACTUALLY been persisted (#27-A). A
12553
12605
  * track absent here keeps forcing a best-thumbnail capture every frame until
12554
12606
  * one lands, so a short / high-churn track whose first capture was dropped
@@ -12639,7 +12691,7 @@ var PipelineAnalyticsAddon = class extends require_dist.BaseAddon {
12639
12691
  let storage = this.ctx.kernel.storage;
12640
12692
  const mediaRoot = process.env.CAMSTACK_MEDIA_ROOT?.trim();
12641
12693
  if (mediaRoot) {
12642
- const { FilesystemStorageProvider } = await Promise.resolve().then(() => require("../node-C4bKtLou.js"));
12694
+ const { FilesystemStorageProvider } = await Promise.resolve().then(() => require("../node-DWX3J7jh.js"));
12643
12695
  storage = new FilesystemStorageProvider(mediaRoot);
12644
12696
  logger.info("pipeline-analytics: event media rooted at CAMSTACK_MEDIA_ROOT", { meta: { mediaRoot } });
12645
12697
  }
@@ -13443,6 +13495,9 @@ var PipelineAnalyticsAddon = class extends require_dist.BaseAddon {
13443
13495
  this.dropoutSkipsByKey.clear();
13444
13496
  this.bestFrameTracker.clear();
13445
13497
  this.lastFrameAtByTrack.clear();
13498
+ this.lastFrameInFlight.clear();
13499
+ this.firstFramePendingTracks.clear();
13500
+ this.firstFrameInFlight.clear();
13446
13501
  this.thumbnailLandedTracks.clear();
13447
13502
  this.thumbnailInFlight.clear();
13448
13503
  this.keyFrameInFlight.clear();
@@ -13614,15 +13669,16 @@ var PipelineAnalyticsAddon = class extends require_dist.BaseAddon {
13614
13669
  className: t.className,
13615
13670
  source
13616
13671
  } });
13617
- if (this.eventMediaDispatcher && frameHandle) {
13618
- firstFrameTargets.push({
13672
+ if (this.eventMediaDispatcher) {
13673
+ this.firstFramePendingTracks.add(id);
13674
+ this.trackStore.seedSnapshotClock(id, result.timestamp, t.bbox);
13675
+ this.lastFrameAtByTrack.set(id, result.timestamp);
13676
+ if (frameHandle) firstFrameTargets.push({
13619
13677
  trackId: id,
13620
13678
  timestamp: result.timestamp,
13621
13679
  bbox: { ...t.bbox },
13622
13680
  ...t.label ? { label: t.label } : {}
13623
13681
  });
13624
- this.trackStore.seedSnapshotClock(id, result.timestamp, t.bbox);
13625
- this.lastFrameAtByTrack.set(id, result.timestamp);
13626
13682
  }
13627
13683
  this.ctx.eventBus.emit({
13628
13684
  id: `pa-${(0, node_crypto.randomUUID)()}`,
@@ -13771,6 +13827,7 @@ var PipelineAnalyticsAddon = class extends require_dist.BaseAddon {
13771
13827
  for (const crops of childCropsByEvent.values()) for (const c of crops) if (c.kind === "faceCrop") faceCrops += 1;
13772
13828
  else plateCrops += 1;
13773
13829
  const snapshotTargets = this.buildSnapshotTargets(deviceId, result.tracked, result.timestamp, mediaSettings, result.frameWidth, result.frameHeight);
13830
+ for (const retry of this.collectFirstFrameRetries(result.tracked, result.timestamp, firstFrameTargets)) firstFrameTargets.push(retry);
13774
13831
  const keyFrameTrackIds = selectKeyFrameTrackIds(snapshotTargets);
13775
13832
  if (keyFrameTrackIds.length > 0) this.persistKeyFrames(deviceId, result.timestamp, keyFrameTrackIds, frameHandle);
13776
13833
  if (eventTargets.length > 0 || firstFrameTargets.length > 0 || snapshotTargets.length > 0) {
@@ -13794,9 +13851,29 @@ var PipelineAnalyticsAddon = class extends require_dist.BaseAddon {
13794
13851
  } });
13795
13852
  const thumbInFlightTrackIds = snapshotTargets.filter((t) => t.bestThumbnail).map((t) => t.trackId);
13796
13853
  for (const trackId of thumbInFlightTrackIds) this.thumbnailInFlight.add(trackId);
13854
+ const firstFrameInFlightTrackIds = firstFrameTargets.map((t) => t.trackId);
13855
+ for (const trackId of firstFrameInFlightTrackIds) this.firstFrameInFlight.add(trackId);
13856
+ const lastFrameInFlightTrackIds = snapshotTargets.filter((t) => t.rollingLastFrame).map((t) => t.trackId);
13857
+ for (const trackId of lastFrameInFlightTrackIds) this.lastFrameInFlight.add(trackId);
13858
+ const dispatchTimestamp = result.timestamp;
13797
13859
  const rasterFallbackWantedTrackIds = /* @__PURE__ */ new Set();
13798
13860
  for (const t of firstFrameTargets) if (!this.trackClosureState.get(t.trackId)?.rasterFallback) rasterFallbackWantedTrackIds.add(t.trackId);
13799
13861
  for (const s of snapshotTargets) if (!this.trackClosureState.get(s.trackId)?.rasterFallback) rasterFallbackWantedTrackIds.add(s.trackId);
13862
+ const targetedThisFrame = new Set([...firstFrameTargets.map((t) => t.trackId), ...snapshotTargets.map((s) => s.trackId)]);
13863
+ const rasterFallbackCandidates = [];
13864
+ for (const t of result.tracked) {
13865
+ if (t.matchedThisFrame === false) continue;
13866
+ const closure = this.trackClosureState.get(t.trackId);
13867
+ if (!closure?.confirmed) continue;
13868
+ if (closure.rasterFallback) continue;
13869
+ if (targetedThisFrame.has(t.trackId)) continue;
13870
+ rasterFallbackWantedTrackIds.add(t.trackId);
13871
+ rasterFallbackCandidates.push({
13872
+ trackId: t.trackId,
13873
+ timestamp: result.timestamp,
13874
+ bbox: { ...t.bbox }
13875
+ });
13876
+ }
13800
13877
  this.eventMediaDispatcher.captureForFrame({
13801
13878
  deviceId,
13802
13879
  frameHandle,
@@ -13804,7 +13881,8 @@ var PipelineAnalyticsAddon = class extends require_dist.BaseAddon {
13804
13881
  trackFrames: firstFrameTargets,
13805
13882
  snapshots: snapshotTargets,
13806
13883
  cropPadding: mediaSettings.cropPadding,
13807
- rasterFallbackWantedTrackIds
13884
+ rasterFallbackWantedTrackIds,
13885
+ rasterFallbackCandidates
13808
13886
  }).then((res) => {
13809
13887
  for (const rf of res.rasterFallbacks) {
13810
13888
  const st = this.ensureTrackClosureState(deviceId, rf.trackId);
@@ -13824,8 +13902,12 @@ var PipelineAnalyticsAddon = class extends require_dist.BaseAddon {
13824
13902
  mediaKey: s.mediaKey
13825
13903
  });
13826
13904
  for (const trackId of res.thumbnailTrackIds) this.thumbnailLandedTracks.add(trackId);
13905
+ for (const trackId of res.firstFrameTrackIds) this.firstFramePendingTracks.delete(trackId);
13906
+ for (const trackId of res.lastFrameTrackIds) this.lastFrameAtByTrack.set(trackId, dispatchTimestamp);
13827
13907
  }).catch(() => {}).finally(() => {
13828
13908
  for (const trackId of thumbInFlightTrackIds) this.thumbnailInFlight.delete(trackId);
13909
+ for (const trackId of firstFrameInFlightTrackIds) this.firstFrameInFlight.delete(trackId);
13910
+ for (const trackId of lastFrameInFlightTrackIds) this.lastFrameInFlight.delete(trackId);
13829
13911
  });
13830
13912
  }
13831
13913
  }
@@ -13889,6 +13971,7 @@ var PipelineAnalyticsAddon = class extends require_dist.BaseAddon {
13889
13971
  }
13890
13972
  overlayDetections = frame.detections;
13891
13973
  }
13974
+ const hasMovingTrack = result.tracked.some((t) => t.state === "moving" || t.state === "entered" || t.state === "left");
13892
13975
  this.ctx.eventBus.emit({
13893
13976
  id: `pa-${(0, node_crypto.randomUUID)()}`,
13894
13977
  timestamp: new Date(result.timestamp),
@@ -13903,7 +13986,8 @@ var PipelineAnalyticsAddon = class extends require_dist.BaseAddon {
13903
13986
  timestamp: result.timestamp,
13904
13987
  frameWidth: result.frameWidth,
13905
13988
  frameHeight: result.frameHeight,
13906
- detections: overlayDetections
13989
+ detections: overlayDetections,
13990
+ hasMovingTrack
13907
13991
  }
13908
13992
  });
13909
13993
  }
@@ -14527,6 +14611,34 @@ var PipelineAnalyticsAddon = class extends require_dist.BaseAddon {
14527
14611
  });
14528
14612
  this.emitTrackLifecycle(payload, timestamp);
14529
14613
  }
14614
+ /**
14615
+ * DEFECT A: build `firstFrame` RETRY targets for confirmed-birth tracks whose
14616
+ * birth capture never landed. A track qualifies when it is still pending
14617
+ * (`firstFramePendingTracks`), is OBSERVED this frame (`matchedThisFrame` — a
14618
+ * coasted/stale box would crop the empty scene), is NOT already targeted this
14619
+ * frame (its birth target), and has no capture in flight (RC-1). Each target is
14620
+ * stamped with the CURRENT frame timestamp so the media carries the real
14621
+ * capture instant, not the birth ts — the earliest AVAILABLE view still beats
14622
+ * no firstFrame at all.
14623
+ */
14624
+ collectFirstFrameRetries(tracked, timestamp, alreadyTargeted) {
14625
+ if (this.firstFramePendingTracks.size === 0) return [];
14626
+ const bornThisFrame = new Set(alreadyTargeted.map((t) => t.trackId));
14627
+ const retries = [];
14628
+ for (const t of tracked) {
14629
+ if (t.matchedThisFrame === false) continue;
14630
+ if (!this.firstFramePendingTracks.has(t.trackId)) continue;
14631
+ if (bornThisFrame.has(t.trackId)) continue;
14632
+ if (this.firstFrameInFlight.has(t.trackId)) continue;
14633
+ retries.push({
14634
+ trackId: t.trackId,
14635
+ timestamp,
14636
+ bbox: { ...t.bbox },
14637
+ ...t.label ? { label: t.label } : {}
14638
+ });
14639
+ }
14640
+ return retries;
14641
+ }
14530
14642
  buildSnapshotTargets(deviceId, tracked, timestamp, media, frameWidth, frameHeight) {
14531
14643
  const targets = [];
14532
14644
  for (const t of tracked) {
@@ -14560,19 +14672,19 @@ var PipelineAnalyticsAddon = class extends require_dist.BaseAddon {
14560
14672
  now: timestamp,
14561
14673
  intervalMs: media.snapshotIntervalMs
14562
14674
  });
14563
- if (plan.rollingLastFrame) this.lastFrameAtByTrack.set(t.trackId, timestamp);
14675
+ const rollingLastFrame = plan.rollingLastFrame && !this.lastFrameInFlight.has(t.trackId);
14564
14676
  if (plan.appendSnapshot) this.trackStore.markSnapshotPending(t.trackId, timestamp, t.bbox);
14565
14677
  const plausibleBox = isPlausibleThumbnailBox(t.bbox, frameWidth, frameHeight);
14566
14678
  const bestThumbnail = plan.bestThumbnail && plausibleBox && !this.thumbnailInFlight.has(t.trackId);
14567
14679
  const keyFrame = isNewBest && plausibleBox;
14568
- if (!plan.appendSnapshot && !plan.rollingLastFrame && !bestThumbnail && !keyFrame) continue;
14680
+ if (!plan.appendSnapshot && !rollingLastFrame && !bestThumbnail && !keyFrame) continue;
14569
14681
  targets.push({
14570
14682
  trackId: t.trackId,
14571
14683
  timestamp,
14572
14684
  bbox: { ...t.bbox },
14573
14685
  ...t.label ? { label: t.label } : {},
14574
14686
  appendSnapshot: plan.appendSnapshot,
14575
- rollingLastFrame: plan.rollingLastFrame,
14687
+ rollingLastFrame,
14576
14688
  bestThumbnail,
14577
14689
  keyFrame
14578
14690
  });
@@ -14918,6 +15030,9 @@ var PipelineAnalyticsAddon = class extends require_dist.BaseAddon {
14918
15030
  this.bestFrameTracker.delete(t.trackId);
14919
15031
  this.objectEmbeddingBestSelector.delete(t.trackId);
14920
15032
  this.lastFrameAtByTrack.delete(t.trackId);
15033
+ this.lastFrameInFlight.delete(t.trackId);
15034
+ this.firstFramePendingTracks.delete(t.trackId);
15035
+ this.firstFrameInFlight.delete(t.trackId);
14921
15036
  this.thumbnailLandedTracks.delete(t.trackId);
14922
15037
  this.thumbnailInFlight.delete(t.trackId);
14923
15038
  this.keyFrameInFlight.delete(t.trackId);
@@ -14995,6 +15110,9 @@ var PipelineAnalyticsAddon = class extends require_dist.BaseAddon {
14995
15110
  this.bestFrameTracker.delete(trackId);
14996
15111
  this.objectEmbeddingBestSelector.delete(trackId);
14997
15112
  this.lastFrameAtByTrack.delete(trackId);
15113
+ this.lastFrameInFlight.delete(trackId);
15114
+ this.firstFramePendingTracks.delete(trackId);
15115
+ this.firstFrameInFlight.delete(trackId);
14998
15116
  this.thumbnailLandedTracks.delete(trackId);
14999
15117
  this.thumbnailInFlight.delete(trackId);
15000
15118
  this.keyFrameInFlight.delete(trackId);
@@ -15223,6 +15341,9 @@ var PipelineAnalyticsAddon = class extends require_dist.BaseAddon {
15223
15341
  this.bestFrameTracker.delete(track.trackId);
15224
15342
  this.objectEmbeddingBestSelector.delete(track.trackId);
15225
15343
  this.lastFrameAtByTrack.delete(track.trackId);
15344
+ this.lastFrameInFlight.delete(track.trackId);
15345
+ this.firstFramePendingTracks.delete(track.trackId);
15346
+ this.firstFrameInFlight.delete(track.trackId);
15226
15347
  this.thumbnailLandedTracks.delete(track.trackId);
15227
15348
  this.thumbnailInFlight.delete(track.trackId);
15228
15349
  this.keyFrameInFlight.delete(track.trackId);
@@ -15582,7 +15703,9 @@ var PipelineAnalyticsAddon = class extends require_dist.BaseAddon {
15582
15703
  return input.kind ? all.filter((m) => m.kind === input.kind) : all;
15583
15704
  }
15584
15705
  async getTrackMedia(input) {
15585
- return this.mediaStore?.listByOwner("track", input.trackId) ?? [];
15706
+ const all = await (this.mediaStore?.listByOwner("track", input.trackId) ?? Promise.resolve([]));
15707
+ const kinds = input.kinds;
15708
+ return kinds && kinds.length > 0 ? all.filter((m) => kinds.includes(m.kind)) : all;
15586
15709
  }
15587
15710
  /**
15588
15711
  * Search object events by text using CLIP cosine similarity.
@@ -1,4 +1,4 @@
1
- import { C as hydrateSchema, D as object, E as number, O as string, S as createEvent, T as boolean, _ as videoclipsCapability, a as OpsLogEntrySchema, b as BaseAddon, c as buildEventKindDescriptor, d as faceGalleryCapability, g as subKindsOf, h as plateGalleryCapability, i as MACRO_LABELS, k as EventCategory, l as cosineSimilarity, m as pipelineAnalyticsCapability, n as EVENT_KIND_BY_CAP, o as addonWidgetsSourceCapability, p as nodePin, r as EVENT_PAD_MS, s as audioMetricsCapability, t as DEFAULT_EVENT_COLOR, v as zoneAnalyticsCapability, w as array, x as DeviceType, y as errMsg } from "../dist-gQ5DHTYd.mjs";
1
+ import { C as hydrateSchema, D as object, E as number, O as string, S as createEvent, T as boolean, _ as videoclipsCapability, a as OpsLogEntrySchema, b as BaseAddon, c as buildEventKindDescriptor, d as faceGalleryCapability, g as subKindsOf, h as plateGalleryCapability, i as MACRO_LABELS, k as EventCategory, l as cosineSimilarity, m as pipelineAnalyticsCapability, n as EVENT_KIND_BY_CAP, o as addonWidgetsSourceCapability, p as nodePin, r as EVENT_PAD_MS, s as audioMetricsCapability, t as DEFAULT_EVENT_COLOR, v as zoneAnalyticsCapability, w as array, x as DeviceType, y as errMsg } from "../dist-Db0CsDGK.mjs";
2
2
  import { randomUUID } from "node:crypto";
3
3
  import sharp from "sharp";
4
4
  //#region src/pipeline-analytics/videoclips-provider.ts
@@ -6760,9 +6760,12 @@ var EventMediaDispatcher = class {
6760
6760
  const empty = {
6761
6761
  storedSnapshots: [],
6762
6762
  thumbnailTrackIds: [],
6763
+ firstFrameTrackIds: [],
6764
+ lastFrameTrackIds: [],
6763
6765
  rasterFallbacks: []
6764
6766
  };
6765
- if (events.length === 0 && trackFrames.length === 0 && snapshots.length === 0) return empty;
6767
+ const extraCandidateCount = input.rasterFallbackCandidates?.length ?? 0;
6768
+ if (events.length === 0 && trackFrames.length === 0 && snapshots.length === 0 && extraCandidateCount === 0) return empty;
6766
6769
  let decoded;
6767
6770
  try {
6768
6771
  decoded = await resolveFrame(frameHandle, { getRemoteFrame: this.deps.getRemoteFrame });
@@ -6812,44 +6815,59 @@ var EventMediaDispatcher = class {
6812
6815
  });
6813
6816
  return empty;
6814
6817
  }
6815
- const rasterFallbacks = await this.collectRasterFallbacks(frameData, fw, fh, trackFrames, snapshots, input.cropPadding, input.rasterFallbackWantedTrackIds);
6818
+ const rasterFallbacks = await this.collectRasterFallbacks(frameData, fw, fh, trackFrames, snapshots, input.cropPadding, input.rasterFallbackWantedTrackIds, input.rasterFallbackCandidates);
6816
6819
  for (const ev of events) await this.writeEventMedia(deviceId, frameHandle, fw, fh, ev, input.cropPadding);
6817
- for (const tf of trackFrames) await this.writeTrackFrame(deviceId, frameHandle, frameData, fw, fh, tf);
6820
+ const firstFrameTrackIds = [];
6821
+ for (const tf of trackFrames) if (await this.writeTrackFrame(deviceId, frameHandle, frameData, fw, fh, tf)) firstFrameTrackIds.push(tf.trackId);
6818
6822
  const storedSnapshots = [];
6819
6823
  const thumbnailTrackIds = [];
6824
+ const lastFrameTrackIds = [];
6820
6825
  for (const sn of snapshots) {
6821
6826
  const res = await this.writeTrackSnapshot(deviceId, frameHandle, frameData, fw, fh, sn);
6822
6827
  if (res.storedSnapshot) storedSnapshots.push(res.storedSnapshot);
6823
6828
  if (res.thumbnailWritten) thumbnailTrackIds.push(sn.trackId);
6829
+ if (res.lastFrameWritten) lastFrameTrackIds.push(sn.trackId);
6824
6830
  }
6825
6831
  return {
6826
6832
  storedSnapshots,
6827
6833
  thumbnailTrackIds,
6834
+ firstFrameTrackIds,
6835
+ lastFrameTrackIds,
6828
6836
  rasterFallbacks
6829
6837
  };
6830
6838
  }
6831
6839
  /**
6832
- * Cut ONE clean detection-raster subject crop per WANTED track that has a
6833
- * target (firstFrame or snapshot) in this frame the "first available
6834
- * detection-raster frame" of the zero-media fallback. Cropped from the
6835
- * already-resolved `frameData` at its REAL resolution via {@link extractCrop}
6836
- * (extract-only NEVER upscaled). Deduped per trackId (first target wins).
6837
- * A per-track encode failure is skipped (logged) a missing fallback simply
6840
+ * Cut ONE clean detection-raster subject crop per WANTED track observed this
6841
+ * frame the "first available detection-raster frame" of the zero-media
6842
+ * fallback. Candidate bboxes come from this frame's firstFrame/snapshot targets
6843
+ * AND (widened) the explicit `extraCandidates` (confirmed tracks with no such
6844
+ * target). Cropped from the already-resolved `frameData` at its REAL resolution
6845
+ * via {@link extractCrop} (extract-only NEVER upscaled). Deduped per trackId
6846
+ * (first candidate wins; target-derived candidates precede the extras). A
6847
+ * per-track encode failure is skipped (logged) — a missing fallback simply
6838
6848
  * leaves the track with no last-resort preview, never an error.
6839
6849
  */
6840
- async collectRasterFallbacks(frameData, fw, fh, trackFrames, snapshots, cropPadding, wanted) {
6850
+ async collectRasterFallbacks(frameData, fw, fh, trackFrames, snapshots, cropPadding, wanted, extraCandidates) {
6841
6851
  if (!wanted || wanted.size === 0) return [];
6842
6852
  const seen = /* @__PURE__ */ new Set();
6843
6853
  const out = [];
6844
- const candidates = [...trackFrames.map((t) => ({
6845
- trackId: t.trackId,
6846
- timestamp: t.timestamp,
6847
- bbox: t.bbox
6848
- })), ...snapshots.map((s) => ({
6849
- trackId: s.trackId,
6850
- timestamp: s.timestamp,
6851
- bbox: s.bbox
6852
- }))];
6854
+ const candidates = [
6855
+ ...trackFrames.map((t) => ({
6856
+ trackId: t.trackId,
6857
+ timestamp: t.timestamp,
6858
+ bbox: t.bbox
6859
+ })),
6860
+ ...snapshots.map((s) => ({
6861
+ trackId: s.trackId,
6862
+ timestamp: s.timestamp,
6863
+ bbox: s.bbox
6864
+ })),
6865
+ ...(extraCandidates ?? []).map((c) => ({
6866
+ trackId: c.trackId,
6867
+ timestamp: c.timestamp,
6868
+ bbox: c.bbox
6869
+ }))
6870
+ ];
6853
6871
  for (const c of candidates) {
6854
6872
  if (!wanted.has(c.trackId) || seen.has(c.trackId)) continue;
6855
6873
  seen.add(c.trackId);
@@ -6883,11 +6901,15 @@ var EventMediaDispatcher = class {
6883
6901
  * TrackStore wiring (null when `appendSnapshot` is false or the encode
6884
6902
  * failed). `thumbnailWritten` reports whether a best `thumbnail` actually
6885
6903
  * landed this frame (#27-A) so the caller can stop forcing retries.
6904
+ * `lastFrameWritten` reports whether the rolling `lastFrame` actually landed
6905
+ * (DEFECT B) so the caller advances its `lastFrameAt` clock ONLY on a real
6906
+ * write — a dropped roll leaves the clock put and retries next frame.
6886
6907
  */
6887
6908
  async writeTrackSnapshot(deviceId, frameHandle, frameData, fw, fh, sn) {
6888
6909
  if (!sn.appendSnapshot && !sn.rollingLastFrame && !sn.bestThumbnail) return {
6889
6910
  storedSnapshot: null,
6890
- thumbnailWritten: false
6911
+ thumbnailWritten: false,
6912
+ lastFrameWritten: false
6891
6913
  };
6892
6914
  let boxed = null;
6893
6915
  if (sn.appendSnapshot || sn.rollingLastFrame) boxed = await this.boxedTimelineFrame(deviceId, frameHandle, frameData, fw, fh, sn.trackId, sn.bbox, sn.label);
@@ -6908,7 +6930,8 @@ var EventMediaDispatcher = class {
6908
6930
  bbox: sn.bbox
6909
6931
  };
6910
6932
  } catch {}
6911
- if (sn.rollingLastFrame && boxed) await this.replaceKind(deviceId, sn.trackId, "lastFrame", sn.timestamp, boxed);
6933
+ let lastFrameWritten = false;
6934
+ if (sn.rollingLastFrame && boxed) lastFrameWritten = await this.replaceKind(deviceId, sn.trackId, "lastFrame", sn.timestamp, boxed);
6912
6935
  let thumbnailWritten = false;
6913
6936
  if (sn.bestThumbnail) {
6914
6937
  const variants = await this.cropSubjectVariants(frameHandle, fw, fh, sn.bbox);
@@ -6919,7 +6942,8 @@ var EventMediaDispatcher = class {
6919
6942
  }
6920
6943
  return {
6921
6944
  storedSnapshot: stored,
6922
- thumbnailWritten
6945
+ thumbnailWritten,
6946
+ lastFrameWritten
6923
6947
  };
6924
6948
  }
6925
6949
  /**
@@ -7116,7 +7140,7 @@ var EventMediaDispatcher = class {
7116
7140
  }
7117
7141
  async writeTrackFrame(deviceId, frameHandle, frameData, fw, fh, tf) {
7118
7142
  const boxed = await this.boxedTimelineFrame(deviceId, frameHandle, frameData, fw, fh, tf.trackId, tf.bbox, tf.label);
7119
- if (!boxed) return;
7143
+ if (!boxed) return false;
7120
7144
  try {
7121
7145
  await this.deps.mediaStore.put({
7122
7146
  deviceId,
@@ -7126,6 +7150,7 @@ var EventMediaDispatcher = class {
7126
7150
  timestamp: tf.timestamp,
7127
7151
  data: boxed
7128
7152
  });
7153
+ return true;
7129
7154
  } catch (err) {
7130
7155
  this.deps.logger.warn("event media: track frame failed", {
7131
7156
  tags: { deviceId },
@@ -7135,6 +7160,7 @@ var EventMediaDispatcher = class {
7135
7160
  error: err instanceof Error ? err.message : String(err)
7136
7161
  }
7137
7162
  });
7163
+ return false;
7138
7164
  }
7139
7165
  }
7140
7166
  };
@@ -12544,6 +12570,32 @@ var PipelineAnalyticsAddon = class extends BaseAddon {
12544
12570
  * where no `snapshot` is appended, so it is never byte-identical to a stored
12545
12571
  * `snapshot` (kills the end-of-track duplicate). Cleared on track end. */
12546
12572
  lastFrameAtByTrack = /* @__PURE__ */ new Map();
12573
+ /** Tracks with a rolling-`lastFrame` capture CURRENTLY in flight (RC-1,
12574
+ * DEFECT B). The `lastFrameAt` clock now advances ONLY when the write lands
12575
+ * (dispatcher completion), not synchronously at plan time — so a dropped roll
12576
+ * (recycled/blank frame) leaves the clock put and re-rolls next frame. Without
12577
+ * an in-flight guard that re-roll would fire EVERY frame while the first
12578
+ * capture is still resolving (0.1–3s under the native path), stacking N
12579
+ * overlapping captures. While a track sits here `buildSnapshotTargets`
12580
+ * suppresses a new rolling-`lastFrame` request; the pending dispatch clears it
12581
+ * (and, if it landed, advances `lastFrameAtByTrack`). Cleared on track end +
12582
+ * reset. */
12583
+ lastFrameInFlight = /* @__PURE__ */ new Set();
12584
+ /** Confirmed-birth tracks whose `firstFrame` has NOT yet actually persisted
12585
+ * (DEFECT A). Seeded on a confirmed birth (alongside the birth firstFrame
12586
+ * target) and removed the moment the write lands. While a track sits here and
12587
+ * is matched this frame, `collectFirstFrameRetries` re-schedules a firstFrame
12588
+ * target so a birth capture dropped by a recycled/blank live frame is retried
12589
+ * on a later frame (earliest available view still beats none). Scoped to
12590
+ * confirmed births ONLY — a suppressed false-positive birth or resurrection
12591
+ * never enters, so it never gets a retro firstFrame. Cleared on track end +
12592
+ * reset. */
12593
+ firstFramePendingTracks = /* @__PURE__ */ new Set();
12594
+ /** Tracks with a `firstFrame` capture CURRENTLY in flight (RC-1, DEFECT A).
12595
+ * Mirrors `thumbnailInFlight`: while a firstFrame capture is resolving the
12596
+ * per-frame retry is suppressed so at most one capture is outstanding per
12597
+ * track. Cleared on dispatch settle (+ track end / reset). */
12598
+ firstFrameInFlight = /* @__PURE__ */ new Set();
12547
12599
  /** Track ids whose best `thumbnail` has ACTUALLY been persisted (#27-A). A
12548
12600
  * track absent here keeps forcing a best-thumbnail capture every frame until
12549
12601
  * one lands, so a short / high-churn track whose first capture was dropped
@@ -13438,6 +13490,9 @@ var PipelineAnalyticsAddon = class extends BaseAddon {
13438
13490
  this.dropoutSkipsByKey.clear();
13439
13491
  this.bestFrameTracker.clear();
13440
13492
  this.lastFrameAtByTrack.clear();
13493
+ this.lastFrameInFlight.clear();
13494
+ this.firstFramePendingTracks.clear();
13495
+ this.firstFrameInFlight.clear();
13441
13496
  this.thumbnailLandedTracks.clear();
13442
13497
  this.thumbnailInFlight.clear();
13443
13498
  this.keyFrameInFlight.clear();
@@ -13609,15 +13664,16 @@ var PipelineAnalyticsAddon = class extends BaseAddon {
13609
13664
  className: t.className,
13610
13665
  source
13611
13666
  } });
13612
- if (this.eventMediaDispatcher && frameHandle) {
13613
- firstFrameTargets.push({
13667
+ if (this.eventMediaDispatcher) {
13668
+ this.firstFramePendingTracks.add(id);
13669
+ this.trackStore.seedSnapshotClock(id, result.timestamp, t.bbox);
13670
+ this.lastFrameAtByTrack.set(id, result.timestamp);
13671
+ if (frameHandle) firstFrameTargets.push({
13614
13672
  trackId: id,
13615
13673
  timestamp: result.timestamp,
13616
13674
  bbox: { ...t.bbox },
13617
13675
  ...t.label ? { label: t.label } : {}
13618
13676
  });
13619
- this.trackStore.seedSnapshotClock(id, result.timestamp, t.bbox);
13620
- this.lastFrameAtByTrack.set(id, result.timestamp);
13621
13677
  }
13622
13678
  this.ctx.eventBus.emit({
13623
13679
  id: `pa-${randomUUID()}`,
@@ -13766,6 +13822,7 @@ var PipelineAnalyticsAddon = class extends BaseAddon {
13766
13822
  for (const crops of childCropsByEvent.values()) for (const c of crops) if (c.kind === "faceCrop") faceCrops += 1;
13767
13823
  else plateCrops += 1;
13768
13824
  const snapshotTargets = this.buildSnapshotTargets(deviceId, result.tracked, result.timestamp, mediaSettings, result.frameWidth, result.frameHeight);
13825
+ for (const retry of this.collectFirstFrameRetries(result.tracked, result.timestamp, firstFrameTargets)) firstFrameTargets.push(retry);
13769
13826
  const keyFrameTrackIds = selectKeyFrameTrackIds(snapshotTargets);
13770
13827
  if (keyFrameTrackIds.length > 0) this.persistKeyFrames(deviceId, result.timestamp, keyFrameTrackIds, frameHandle);
13771
13828
  if (eventTargets.length > 0 || firstFrameTargets.length > 0 || snapshotTargets.length > 0) {
@@ -13789,9 +13846,29 @@ var PipelineAnalyticsAddon = class extends BaseAddon {
13789
13846
  } });
13790
13847
  const thumbInFlightTrackIds = snapshotTargets.filter((t) => t.bestThumbnail).map((t) => t.trackId);
13791
13848
  for (const trackId of thumbInFlightTrackIds) this.thumbnailInFlight.add(trackId);
13849
+ const firstFrameInFlightTrackIds = firstFrameTargets.map((t) => t.trackId);
13850
+ for (const trackId of firstFrameInFlightTrackIds) this.firstFrameInFlight.add(trackId);
13851
+ const lastFrameInFlightTrackIds = snapshotTargets.filter((t) => t.rollingLastFrame).map((t) => t.trackId);
13852
+ for (const trackId of lastFrameInFlightTrackIds) this.lastFrameInFlight.add(trackId);
13853
+ const dispatchTimestamp = result.timestamp;
13792
13854
  const rasterFallbackWantedTrackIds = /* @__PURE__ */ new Set();
13793
13855
  for (const t of firstFrameTargets) if (!this.trackClosureState.get(t.trackId)?.rasterFallback) rasterFallbackWantedTrackIds.add(t.trackId);
13794
13856
  for (const s of snapshotTargets) if (!this.trackClosureState.get(s.trackId)?.rasterFallback) rasterFallbackWantedTrackIds.add(s.trackId);
13857
+ const targetedThisFrame = new Set([...firstFrameTargets.map((t) => t.trackId), ...snapshotTargets.map((s) => s.trackId)]);
13858
+ const rasterFallbackCandidates = [];
13859
+ for (const t of result.tracked) {
13860
+ if (t.matchedThisFrame === false) continue;
13861
+ const closure = this.trackClosureState.get(t.trackId);
13862
+ if (!closure?.confirmed) continue;
13863
+ if (closure.rasterFallback) continue;
13864
+ if (targetedThisFrame.has(t.trackId)) continue;
13865
+ rasterFallbackWantedTrackIds.add(t.trackId);
13866
+ rasterFallbackCandidates.push({
13867
+ trackId: t.trackId,
13868
+ timestamp: result.timestamp,
13869
+ bbox: { ...t.bbox }
13870
+ });
13871
+ }
13795
13872
  this.eventMediaDispatcher.captureForFrame({
13796
13873
  deviceId,
13797
13874
  frameHandle,
@@ -13799,7 +13876,8 @@ var PipelineAnalyticsAddon = class extends BaseAddon {
13799
13876
  trackFrames: firstFrameTargets,
13800
13877
  snapshots: snapshotTargets,
13801
13878
  cropPadding: mediaSettings.cropPadding,
13802
- rasterFallbackWantedTrackIds
13879
+ rasterFallbackWantedTrackIds,
13880
+ rasterFallbackCandidates
13803
13881
  }).then((res) => {
13804
13882
  for (const rf of res.rasterFallbacks) {
13805
13883
  const st = this.ensureTrackClosureState(deviceId, rf.trackId);
@@ -13819,8 +13897,12 @@ var PipelineAnalyticsAddon = class extends BaseAddon {
13819
13897
  mediaKey: s.mediaKey
13820
13898
  });
13821
13899
  for (const trackId of res.thumbnailTrackIds) this.thumbnailLandedTracks.add(trackId);
13900
+ for (const trackId of res.firstFrameTrackIds) this.firstFramePendingTracks.delete(trackId);
13901
+ for (const trackId of res.lastFrameTrackIds) this.lastFrameAtByTrack.set(trackId, dispatchTimestamp);
13822
13902
  }).catch(() => {}).finally(() => {
13823
13903
  for (const trackId of thumbInFlightTrackIds) this.thumbnailInFlight.delete(trackId);
13904
+ for (const trackId of firstFrameInFlightTrackIds) this.firstFrameInFlight.delete(trackId);
13905
+ for (const trackId of lastFrameInFlightTrackIds) this.lastFrameInFlight.delete(trackId);
13824
13906
  });
13825
13907
  }
13826
13908
  }
@@ -13884,6 +13966,7 @@ var PipelineAnalyticsAddon = class extends BaseAddon {
13884
13966
  }
13885
13967
  overlayDetections = frame.detections;
13886
13968
  }
13969
+ const hasMovingTrack = result.tracked.some((t) => t.state === "moving" || t.state === "entered" || t.state === "left");
13887
13970
  this.ctx.eventBus.emit({
13888
13971
  id: `pa-${randomUUID()}`,
13889
13972
  timestamp: new Date(result.timestamp),
@@ -13898,7 +13981,8 @@ var PipelineAnalyticsAddon = class extends BaseAddon {
13898
13981
  timestamp: result.timestamp,
13899
13982
  frameWidth: result.frameWidth,
13900
13983
  frameHeight: result.frameHeight,
13901
- detections: overlayDetections
13984
+ detections: overlayDetections,
13985
+ hasMovingTrack
13902
13986
  }
13903
13987
  });
13904
13988
  }
@@ -14522,6 +14606,34 @@ var PipelineAnalyticsAddon = class extends BaseAddon {
14522
14606
  });
14523
14607
  this.emitTrackLifecycle(payload, timestamp);
14524
14608
  }
14609
+ /**
14610
+ * DEFECT A: build `firstFrame` RETRY targets for confirmed-birth tracks whose
14611
+ * birth capture never landed. A track qualifies when it is still pending
14612
+ * (`firstFramePendingTracks`), is OBSERVED this frame (`matchedThisFrame` — a
14613
+ * coasted/stale box would crop the empty scene), is NOT already targeted this
14614
+ * frame (its birth target), and has no capture in flight (RC-1). Each target is
14615
+ * stamped with the CURRENT frame timestamp so the media carries the real
14616
+ * capture instant, not the birth ts — the earliest AVAILABLE view still beats
14617
+ * no firstFrame at all.
14618
+ */
14619
+ collectFirstFrameRetries(tracked, timestamp, alreadyTargeted) {
14620
+ if (this.firstFramePendingTracks.size === 0) return [];
14621
+ const bornThisFrame = new Set(alreadyTargeted.map((t) => t.trackId));
14622
+ const retries = [];
14623
+ for (const t of tracked) {
14624
+ if (t.matchedThisFrame === false) continue;
14625
+ if (!this.firstFramePendingTracks.has(t.trackId)) continue;
14626
+ if (bornThisFrame.has(t.trackId)) continue;
14627
+ if (this.firstFrameInFlight.has(t.trackId)) continue;
14628
+ retries.push({
14629
+ trackId: t.trackId,
14630
+ timestamp,
14631
+ bbox: { ...t.bbox },
14632
+ ...t.label ? { label: t.label } : {}
14633
+ });
14634
+ }
14635
+ return retries;
14636
+ }
14525
14637
  buildSnapshotTargets(deviceId, tracked, timestamp, media, frameWidth, frameHeight) {
14526
14638
  const targets = [];
14527
14639
  for (const t of tracked) {
@@ -14555,19 +14667,19 @@ var PipelineAnalyticsAddon = class extends BaseAddon {
14555
14667
  now: timestamp,
14556
14668
  intervalMs: media.snapshotIntervalMs
14557
14669
  });
14558
- if (plan.rollingLastFrame) this.lastFrameAtByTrack.set(t.trackId, timestamp);
14670
+ const rollingLastFrame = plan.rollingLastFrame && !this.lastFrameInFlight.has(t.trackId);
14559
14671
  if (plan.appendSnapshot) this.trackStore.markSnapshotPending(t.trackId, timestamp, t.bbox);
14560
14672
  const plausibleBox = isPlausibleThumbnailBox(t.bbox, frameWidth, frameHeight);
14561
14673
  const bestThumbnail = plan.bestThumbnail && plausibleBox && !this.thumbnailInFlight.has(t.trackId);
14562
14674
  const keyFrame = isNewBest && plausibleBox;
14563
- if (!plan.appendSnapshot && !plan.rollingLastFrame && !bestThumbnail && !keyFrame) continue;
14675
+ if (!plan.appendSnapshot && !rollingLastFrame && !bestThumbnail && !keyFrame) continue;
14564
14676
  targets.push({
14565
14677
  trackId: t.trackId,
14566
14678
  timestamp,
14567
14679
  bbox: { ...t.bbox },
14568
14680
  ...t.label ? { label: t.label } : {},
14569
14681
  appendSnapshot: plan.appendSnapshot,
14570
- rollingLastFrame: plan.rollingLastFrame,
14682
+ rollingLastFrame,
14571
14683
  bestThumbnail,
14572
14684
  keyFrame
14573
14685
  });
@@ -14913,6 +15025,9 @@ var PipelineAnalyticsAddon = class extends BaseAddon {
14913
15025
  this.bestFrameTracker.delete(t.trackId);
14914
15026
  this.objectEmbeddingBestSelector.delete(t.trackId);
14915
15027
  this.lastFrameAtByTrack.delete(t.trackId);
15028
+ this.lastFrameInFlight.delete(t.trackId);
15029
+ this.firstFramePendingTracks.delete(t.trackId);
15030
+ this.firstFrameInFlight.delete(t.trackId);
14916
15031
  this.thumbnailLandedTracks.delete(t.trackId);
14917
15032
  this.thumbnailInFlight.delete(t.trackId);
14918
15033
  this.keyFrameInFlight.delete(t.trackId);
@@ -14990,6 +15105,9 @@ var PipelineAnalyticsAddon = class extends BaseAddon {
14990
15105
  this.bestFrameTracker.delete(trackId);
14991
15106
  this.objectEmbeddingBestSelector.delete(trackId);
14992
15107
  this.lastFrameAtByTrack.delete(trackId);
15108
+ this.lastFrameInFlight.delete(trackId);
15109
+ this.firstFramePendingTracks.delete(trackId);
15110
+ this.firstFrameInFlight.delete(trackId);
14993
15111
  this.thumbnailLandedTracks.delete(trackId);
14994
15112
  this.thumbnailInFlight.delete(trackId);
14995
15113
  this.keyFrameInFlight.delete(trackId);
@@ -15218,6 +15336,9 @@ var PipelineAnalyticsAddon = class extends BaseAddon {
15218
15336
  this.bestFrameTracker.delete(track.trackId);
15219
15337
  this.objectEmbeddingBestSelector.delete(track.trackId);
15220
15338
  this.lastFrameAtByTrack.delete(track.trackId);
15339
+ this.lastFrameInFlight.delete(track.trackId);
15340
+ this.firstFramePendingTracks.delete(track.trackId);
15341
+ this.firstFrameInFlight.delete(track.trackId);
15221
15342
  this.thumbnailLandedTracks.delete(track.trackId);
15222
15343
  this.thumbnailInFlight.delete(track.trackId);
15223
15344
  this.keyFrameInFlight.delete(track.trackId);
@@ -15577,7 +15698,9 @@ var PipelineAnalyticsAddon = class extends BaseAddon {
15577
15698
  return input.kind ? all.filter((m) => m.kind === input.kind) : all;
15578
15699
  }
15579
15700
  async getTrackMedia(input) {
15580
- return this.mediaStore?.listByOwner("track", input.trackId) ?? [];
15701
+ const all = await (this.mediaStore?.listByOwner("track", input.trackId) ?? Promise.resolve([]));
15702
+ const kinds = input.kinds;
15703
+ return kinds && kinds.length > 0 ? all.filter((m) => kinds.includes(m.kind)) : all;
15581
15704
  }
15582
15705
  /**
15583
15706
  * Search object events by text using CLIP cosine similarity.
@@ -30,7 +30,7 @@ async function d(e) {
30
30
  }
31
31
  }
32
32
  async function f() {
33
- return l ||= d(() => import("./_virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_analytics_widgets-ChHurWQz.mjs")).catch((e) => {
33
+ return l ||= d(() => import("./_virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_analytics_widgets-ACzsl3tP.mjs")).catch((e) => {
34
34
  throw l = void 0, e;
35
35
  }), l;
36
36
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-post-analysis",
3
- "version": "1.2.4",
3
+ "version": "1.2.5",
4
4
  "description": "CamStack Post-Analysis bundle — enrichment, embedding-encoder, pipeline-analytics. Multi-entry npm package shipping addons that consume pipeline output.",
5
5
  "keywords": [
6
6
  "camstack",
@@ -1,26 +0,0 @@
1
- //#region \0virtual:mf:__mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js
2
- var e = "__mf_init__virtual:mf:__mfe_internal__addon_pipeline_analytics_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 = (e) => {
19
- e.AddonGlobalSettingsForm, e.AgentStepEditor, e.AlarmHeroCard, e.AlarmPanelInlineControl, e.AppShell, e.ArcKnob, e.AudioClassificationList, e.AudioLevelWaveform, e.AudioWaveform, 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.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.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.DeviceStepMatrix, e.Dialog, 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, a = 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.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.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.RECORDED_PLAYBACK_MODES, e.RIGHT, e.ROLE_DESCRIPTOR, e.RadialGauge, e.RecordedPlaybackProvider, e.RecordingPanel, e.ResponseLog, e.SECTION_BODY, e.SECTION_CARD, e.SECTION_HEADER, e.SPLIT_PANEL_OUTER, e.SPLIT_PANEL_SIDE, o = e.STACK_GAP, e.STATE_COLOR, e.ScopePicker, e.ScrollArea, e.Select, e.SemanticBadge, e.SensorHeroCard, e.SensorInlineControl, e.SensorValueAtom, e.Separator, 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.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, s = e.WidgetSlot, e.ZoneEditingProvider, e.agentColumnKey, e.allDeviceTypeFilterOptions, e.buildStepTreeFromSchema, e.childEntityId, e.childListName, e.cn, e.columnsForContext, e.containerChildToRef, e.countableDevices, e.coverHighlight, e.createLucideIcon, e.createSharedContext, e.createTheme, e.cursorFractionFor, e.darkColors, e.defaultTheme, e.deriveDeviceKind, e.deviceMatchesFilter, e.deviceOptionLabel, e.deviceRoleMeta, e.deviceRoleMetaOf, 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.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.nextSort, e.normalizeForSearch, e.overrideEntityIdFromLink, e.parseRecordedServerMessage, e.providerIcons, e.resolveContainerPrimary, e.resolveControlAlign, e.resolveDeviceControl, e.resolveDisplayIcon, e.resolveEventKindIcon, e.resolvePrimaryChild, e.resolveSensorDisplay, e.scrubReducer, e.selectedDeviceOptions, e.serializeRecordedCommand, e.shouldCommit, e.shouldEmit, e.shouldUseSingleNode, e.sortRows, e.statusIcons, e.stripParentNamePrefix, 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.useBackupGetEntries, e.useBackupList, e.useBackupListArchives, e.useBackupListDestinations, e.useBackupListLocations, e.useBackupPreviewSchedule, e.useBackupRestore, e.useBackupTrigger, e.useBackupUpsertDestinationPolicy, 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.useConnectivityGetStatus, e.useConsumablesGetStatus, e.useConsumablesReset, e.useContactGetStatus, e.useContainerChildren, e.useControlGetStatus, e.useControlSetValue, 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.useDeviceManagerAdoptionListCandidateFilters, e.useDeviceManagerAdoptionListCandidates, e.useDeviceManagerAdoptionRefresh, e.useDeviceManagerAdoptionRelease, e.useDeviceManagerAdoptionResync, 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.useDeviceManagerGetChildren, e.useDeviceManagerGetConfigSchema, e.useDeviceManagerGetCreationSchema, e.useDeviceManagerGetDevice, e.useDeviceManagerGetDeviceAggregate, e.useDeviceManagerGetDeviceLiveContribution, e.useDeviceManagerGetDeviceLiveInfoAggregate, e.useDeviceManagerGetDeviceSettingsAggregate, e.useDeviceManagerGetDeviceSettingsContribution, e.useDeviceManagerGetDeviceStatusAggregate, e.useDeviceManagerGetLinkedDevices, 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.useDeviceManagerSetDeviceLinks, 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, 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, c = e.useDeviceProxy, e.useDeviceProxy$1, e.useDeviceSnapshot, e.useDeviceSnapshotImage, l = e.useDeviceState, e.useDeviceStateGetAllSnapshots, e.useDeviceStateGetCapSlice, e.useDeviceStateGetSnapshot, e.useDeviceStateSetCapSlice, u = e.useDeviceStateSlice, e.useDeviceStatusGetStatus, e.useDeviceWebrtc, e.useDevices, e.useDoorbellApplyDeviceSettingsPatch, e.useDoorbellEvents, e.useDoorbellGetDeviceLiveContribution, e.useDoorbellGetDeviceSettingsContribution, e.useDoorbellGetStatus, e.useEnumSensorGetStatus, e.useEventEmitterGetStatus, e.useEventInvalidation, 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.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.useLlmSetDefault, e.useLlmStartRuntime, e.useLlmStopRuntime, e.useLlmTestProfile, e.useLlmUpsertProfile, e.useLocalNetworkGetAllowedAddresses, e.useLocalNetworkGetConnectionEndpoints, e.useLocalNetworkGetPreferred, e.useLocalNetworkList, e.useLocalNetworkResetAllowlistToBestMatch, e.useLocalNetworkSetAllowedAddresses, 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.useNotifierCancel, e.useNotifierGetStatus, e.useNotifierSend, e.useNumericSensorGetStatus, e.useOptimisticSlice, e.useOptionalSystem, e.useOptionalWidgetRegistry, e.useOsdGetStatus, 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.usePipelineAnalyticsClearTracks, e.usePipelineAnalyticsDeleteDeviceEvents, e.usePipelineAnalyticsDeleteTracks, e.usePipelineAnalyticsGetActiveTracks, e.usePipelineAnalyticsGetAudioEvents, e.usePipelineAnalyticsGetDeviceLiveContribution, e.usePipelineAnalyticsGetDeviceSettingsContribution, e.usePipelineAnalyticsGetEventDensity, e.usePipelineAnalyticsGetEventMedia, e.usePipelineAnalyticsGetEventStoreFootprint, e.usePipelineAnalyticsGetKeyEvents, e.usePipelineAnalyticsGetMotionEvents, e.usePipelineAnalyticsGetObjectEvents, e.usePipelineAnalyticsGetSensorEvents, e.usePipelineAnalyticsGetTrack, e.usePipelineAnalyticsGetTrackMedia, e.usePipelineAnalyticsListEventKinds, e.usePipelineAnalyticsListOpsLog, e.usePipelineAnalyticsListRecentTracks, e.usePipelineAnalyticsListTracks, e.usePipelineAnalyticsPruneEvents, e.usePipelineAnalyticsPruneEventsBefore, e.usePipelineAnalyticsPruneTracksBefore, e.usePipelineAnalyticsSearchObjectEvents, e.usePipelineAnalyticsWipeAllAnalytics, 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, e.usePipelineOrchestratorGetCameraStatus, e.usePipelineOrchestratorGetCameraStatuses, e.usePipelineOrchestratorGetCameraStepOverrides, e.usePipelineOrchestratorGetCapabilityBindings, e.usePipelineOrchestratorGetDeviceLiveContribution, e.usePipelineOrchestratorGetDeviceSettingsContribution, e.usePipelineOrchestratorGetGlobalMetrics, e.usePipelineOrchestratorGetIngestOwner, e.usePipelineOrchestratorGetNodeInferenceDevices, e.usePipelineOrchestratorGetPipelineAssignment, e.usePipelineOrchestratorGetPipelineAssignments, e.usePipelineOrchestratorGetPipelineDevicePin, e.usePipelineOrchestratorListAgentSettings, e.usePipelineOrchestratorListTemplates, e.usePipelineOrchestratorRebalance, e.usePipelineOrchestratorRemoveAgentSettings, e.usePipelineOrchestratorResetNodePipelineDefaults, e.usePipelineOrchestratorResolvePipeline, e.usePipelineOrchestratorSaveTemplate, e.usePipelineOrchestratorSetAgentCapabilities, e.usePipelineOrchestratorSetAgentDetectWeight, e.usePipelineOrchestratorSetAgentInferenceDevices, e.usePipelineOrchestratorSetAgentMaxCameras, e.usePipelineOrchestratorSetAgentReachableHost, e.usePipelineOrchestratorSetCameraPipelineForAgent, e.usePipelineOrchestratorSetCameraStepOverride, e.usePipelineOrchestratorSetCameraStepToggle, 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.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.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.useRecordingDeleteFootprint, e.useRecordingExportCancelExport, e.useRecordingExportCreateExport, e.useRecordingExportDeleteExport, e.useRecordingExportGetDownloadUrl, e.useRecordingExportGetExport, e.useRecordingExportListExports, e.useRecordingGetAvailability, e.useRecordingGetDaysWithRecordings, e.useRecordingGetDeviceConfig, e.useRecordingGetDeviceLiveContribution, e.useRecordingGetDeviceSettingsContribution, e.useRecordingGetPlaybackManifest, e.useRecordingGetStatus, e.useRecordingGetStorageUsage, e.useRecordingListOpsLog, e.useRecordingLocateSegment, e.useRecordingPruneFootage, e.useRecordingReadSegmentBytes, e.useRecordingRescanStorage, e.useRecordingSetDeviceConfig, e.useRemoteComponent, e.useSceneMonitorCaptureReference, e.useSceneMonitorCreateScene, e.useSceneMonitorDeleteReference, e.useSceneMonitorDeleteScene, e.useSceneMonitorGetStatus, e.useSceneMonitorListScenes, e.useSceneMonitorRecheckNow, 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.useSettingsStoreGet, e.useSettingsStoreHistogram, e.useSettingsStoreInsert, e.useSettingsStoreIsEmpty, e.useSettingsStoreQuery, e.useSettingsStoreSet, e.useSettingsStoreUpdate, e.useSmokeGetStatus, e.useSnapshotApplyDeviceSettingsPatch, e.useSnapshotGetDeviceLiveContribution, e.useSnapshotGetDeviceSettingsContribution, e.useSnapshotGetSnapshot, 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.useStorageRead, e.useStorageReadChunk, e.useStorageResolve, e.useStorageTestConfig, e.useStorageTestLocation, e.useStorageUpsertLocation, e.useStorageWrite, e.useStorageWriteChunk, e.useStreamBrokerApplyDeviceSettingsPatch, e.useStreamBrokerAssignProfile, e.useStreamBrokerGetAllRtspEntries, e.useStreamBrokerGetBrokerStats, e.useStreamBrokerGetDeviceLiveContribution, e.useStreamBrokerGetDeviceSettingsContribution, e.useStreamBrokerGetPreBufferInfo, e.useStreamBrokerGetRtspEntry, e.useStreamBrokerGetRtspPort, e.useStreamBrokerGetStreamUrl, e.useStreamBrokerGetStreamWithCodec, e.useStreamBrokerIsRtspEnabled, e.useStreamBrokerKillClient, e.useStreamBrokerListAllCameraStreams, e.useStreamBrokerListAllProfileSlots, e.useStreamBrokerListClients, e.useStreamBrokerProbeStream, e.useStreamBrokerPublishCameraStream, e.useStreamBrokerPullAudioChunks, e.useStreamBrokerPullFrameHandles, e.useStreamBrokerRegenerateRtspToken, e.useStreamBrokerReleaseStreamWithCodec, e.useStreamBrokerRestartProfile, e.useStreamBrokerRetractCameraStream, 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, d = e.useSystem, e.useSystem$1, e.useSystemFeatureFlags, e.useSystemForceRetentionCleanup, e.useSystemGetRetentionConfig, e.useSystemHealth, e.useSystemInfo, e.useSystemMutation, e.useSystemNetworkAddresses, e.useSystemQuery, e.useSystemSetRetentionConfig, e.useTamperGetStatus, e.useTemperatureSensorGetStatus, 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.waterHeaterPhase, e.waterHeaterTint, e.weatherConditionMeta, e.weatherTint, e.default;
20
- }, p = i.share["default:@camstack/ui-library"];
21
- p === void 0 ? n.then(() => {
22
- if (p = i.share["default:@camstack/ui-library"], p === void 0) throw Error("[Module Federation] Shared module @camstack/ui-library was imported before federation bootstrap finished.");
23
- f(p);
24
- }) : f(p);
25
- //#endregion
26
- export { c as a, s as i, d as n, l as o, o as r, u as s, a as t };