@camstack/addon-pipeline-orchestrator 1.1.27 → 1.1.28

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.
package/dist/index.mjs CHANGED
@@ -4627,7 +4627,7 @@ function _instanceof(cls, params = {}) {
4627
4627
  return inst;
4628
4628
  }
4629
4629
  //#endregion
4630
- //#region ../types/dist/sleep-BiDFW0E7.mjs
4630
+ //#region ../types/dist/sleep-CZDdRBua.mjs
4631
4631
  var EventCategory = /* @__PURE__ */ function(EventCategory) {
4632
4632
  EventCategory["SystemBoot"] = "system.boot";
4633
4633
  EventCategory["SystemAddonsReady"] = "system.addons-ready";
@@ -7634,7 +7634,16 @@ var DecoderStatsSchema = object({
7634
7634
  inputFps: number(),
7635
7635
  outputFps: number(),
7636
7636
  avgDecodeTimeMs: number(),
7637
- droppedFrames: number()
7637
+ droppedFrames: number(),
7638
+ /**
7639
+ * Pull-mode adaptive-fps telemetry (optional — only pull sessions run the
7640
+ * lag-driven controller; push sessions omit these). `lagMs` is the EWMA of
7641
+ * the decoder's real-time drift (rising = falling behind live); `adaptiveFps`
7642
+ * is the current lag-throttled emit rate (≤ `effectiveFps` ceiling).
7643
+ */
7644
+ lagMs: number().optional(),
7645
+ effectiveFps: number().optional(),
7646
+ adaptiveFps: number().optional()
7638
7647
  });
7639
7648
  var DecoderSessionConfigSchema = object({
7640
7649
  codec: string(),
@@ -7675,7 +7684,15 @@ var DecoderSessionConfigSchema = object({
7675
7684
  * other — `pullFrames` returns nothing for an `'shm'` session and
7676
7685
  * `pullHandles` returns nothing for a `'callback'` session.
7677
7686
  */
7678
- frameSink: _enum(["callback", "shm"]).default("callback")
7687
+ frameSink: _enum(["callback", "shm"]).default("callback"),
7688
+ /**
7689
+ * Per-camera decoder DEBUG facility. When `true`, a pull-mode session emits
7690
+ * a throttled (~1Hz) structured `decoder debug` line (effective/adaptive fps,
7691
+ * real-time lag, dropped-frame delta, avg decode time, hwaccel). Mirrors the
7692
+ * stream-broker's `streamingDebug` gate — off by default so production logs
7693
+ * stay quiet and the emit path pays zero per-frame cost when disabled.
7694
+ */
7695
+ debug: boolean().optional()
7679
7696
  });
7680
7697
  var EncodeProfileSchema = object({
7681
7698
  video: object({
@@ -9894,6 +9911,75 @@ DeviceType.Cover, method(object({ deviceId: number().int().nonnegative() }), _vo
9894
9911
  auth: "admin"
9895
9912
  });
9896
9913
  /**
9914
+ * Vendor-neutral day/night (IR-cut) control — the per-camera config cap
9915
+ * shared by reolink / hikvision / amcrest. Models the common firmware
9916
+ * surface: the IR-cut switching MODE plus the two knobs that gate it
9917
+ * (photocell `sensitivity` + `switchDelaySec`). Each vendor maps these
9918
+ * onto its own ISAPI / Baichuan / Dahua-CGI fields; the cap standardises
9919
+ * the shape so ONE derived-form renders every camera.
9920
+ *
9921
+ * Follows the D14 `deviceConfig` archetype (see `stream-params.cap.ts`):
9922
+ * `getOptions` advertises per-camera availability, `getStatus` (auto-
9923
+ * injected from `status`) reports the live values, and a single
9924
+ * `setSettings` mutation applies a partial change. No hand-written
9925
+ * settings-contribution methods — the framework derives the UI + save
9926
+ * routing from this surface.
9927
+ */
9928
+ /** IR-cut switching mode. `schedule` = time-of-day table configured on the camera. */
9929
+ var DayNightModeSchema = _enum([
9930
+ "auto",
9931
+ "day",
9932
+ "night",
9933
+ "schedule"
9934
+ ]);
9935
+ /** Normalized numeric range descriptor — `{ min, max, step }` per the
9936
+ * getOptions availability convention. Normalized values are 0–100. */
9937
+ var NormalizedRangeSchema$1 = object({
9938
+ min: number(),
9939
+ max: number(),
9940
+ step: number()
9941
+ });
9942
+ object({
9943
+ mode: DayNightModeSchema,
9944
+ /** IR-cut trigger sensitivity, NORMALIZED 0–100 (higher = switches to night sooner). */
9945
+ sensitivity: number().optional(),
9946
+ /** Delay before the IR-cut filter flips, in seconds. */
9947
+ switchDelaySec: number().optional(),
9948
+ lastFetchedAt: number()
9949
+ });
9950
+ /**
9951
+ * Per-camera availability descriptor — drives which controls the admin UI
9952
+ * renders. Booleans as `supportsX`; numeric ranges as `{ min, max, step }`
9953
+ * (normalized 0–100); the mode choice-set as an array. A provider returns
9954
+ * honest, camera-probed values — never hardcoded.
9955
+ */
9956
+ var DayNightOptionsSchema = object({
9957
+ /** Modes this camera accepts. Empty → the camera has no configurable day/night mode. */
9958
+ modes: array(DayNightModeSchema),
9959
+ supportsSensitivity: boolean(),
9960
+ /** Present when `supportsSensitivity` — the normalized 0–100 range. */
9961
+ sensitivity: NormalizedRangeSchema$1.optional(),
9962
+ supportsSwitchDelay: boolean(),
9963
+ /** Present when `supportsSwitchDelay` — the allowed delay range in seconds. */
9964
+ switchDelaySec: NormalizedRangeSchema$1.optional()
9965
+ });
9966
+ /**
9967
+ * Partial change to the day/night config — every field optional. A
9968
+ * provider ignores fields it does not support.
9969
+ */
9970
+ var DayNightSettingsPatchSchema = object({
9971
+ mode: DayNightModeSchema.optional(),
9972
+ sensitivity: number().optional(),
9973
+ switchDelaySec: number().optional()
9974
+ });
9975
+ DeviceType.Camera, method(object({ deviceId: number() }), DayNightOptionsSchema), method(object({
9976
+ deviceId: number(),
9977
+ settings: DayNightSettingsPatchSchema
9978
+ }), _void(), {
9979
+ kind: "mutation",
9980
+ auth: "admin"
9981
+ });
9982
+ /**
9897
9983
  * Identity envelope for a device's upstream-system metadata.
9898
9984
  *
9899
9985
  * Two jobs:
@@ -10249,6 +10335,130 @@ object({
10249
10335
  });
10250
10336
  DeviceType.Image;
10251
10337
  /**
10338
+ * Vendor-neutral image / picture-adjustment cap — the per-camera config
10339
+ * cap shared by reolink / hikvision / amcrest. Models the common ISP
10340
+ * surface: the four picture sliders (brightness / contrast / saturation /
10341
+ * sharpness), orientation (mirror / flip / rotate), white-balance,
10342
+ * exposure and backlight-compensation modes.
10343
+ *
10344
+ * NORMALIZATION: every slider is a normalized int 0–100. Vendors expose
10345
+ * these natively as 0–100 or 0–255 (or other ranges); each provider maps
10346
+ * its native range to/from this normalized 0–100 space so the cap surface
10347
+ * (and the derived form) is identical across cameras. `warmth` (manual
10348
+ * white-balance) is likewise normalized 0–100.
10349
+ *
10350
+ * Follows the D14 `deviceConfig` archetype (see `stream-params.cap.ts`):
10351
+ * `getOptions` advertises per-camera availability, `getStatus` (auto-
10352
+ * injected from `status`) reports the live values, and a single
10353
+ * `setSettings` mutation applies a partial change. No hand-written
10354
+ * settings-contribution methods — the framework derives the UI + save
10355
+ * routing from this surface.
10356
+ */
10357
+ /** Sensor/image rotation, degrees clockwise. */
10358
+ var ImageRotateSchema = _enum([
10359
+ "0",
10360
+ "90",
10361
+ "180",
10362
+ "270"
10363
+ ]);
10364
+ /** White-balance mode. `manual` unlocks the normalized `warmth` knob. */
10365
+ var WhiteBalanceModeSchema = _enum(["auto", "manual"]);
10366
+ /** Exposure mode. */
10367
+ var ExposureModeSchema = _enum(["auto", "manual"]);
10368
+ /**
10369
+ * Backlight-compensation mode:
10370
+ * - `off` — disabled
10371
+ * - `blc` — backlight compensation
10372
+ * - `wdr` — wide dynamic range
10373
+ * - `hlc` — highlight compensation
10374
+ */
10375
+ var BacklightModeSchema = _enum([
10376
+ "off",
10377
+ "blc",
10378
+ "wdr",
10379
+ "hlc"
10380
+ ]);
10381
+ /** Normalized numeric range descriptor — `{ min, max, step }` per the
10382
+ * getOptions availability convention. Slider values are normalized 0–100. */
10383
+ var NormalizedRangeSchema = object({
10384
+ min: number(),
10385
+ max: number(),
10386
+ step: number()
10387
+ });
10388
+ object({
10389
+ /** Normalized 0–100. */
10390
+ brightness: number().optional(),
10391
+ /** Normalized 0–100. */
10392
+ contrast: number().optional(),
10393
+ /** Normalized 0–100. */
10394
+ saturation: number().optional(),
10395
+ /** Normalized 0–100. */
10396
+ sharpness: number().optional(),
10397
+ mirror: boolean().optional(),
10398
+ flip: boolean().optional(),
10399
+ rotate: ImageRotateSchema.optional(),
10400
+ whiteBalance: WhiteBalanceModeSchema.optional(),
10401
+ /** Manual white-balance warmth, NORMALIZED 0–100. Meaningful only when `whiteBalance === 'manual'`. */
10402
+ warmth: number().optional(),
10403
+ exposureMode: ExposureModeSchema.optional(),
10404
+ backlightMode: BacklightModeSchema.optional(),
10405
+ lastFetchedAt: number()
10406
+ });
10407
+ /**
10408
+ * Per-camera availability descriptor — drives which controls the admin UI
10409
+ * renders. Booleans as `supportsX`; numeric ranges as `{ min, max, step }`
10410
+ * (the normalized 0–100 range); enums as arrays of supported values (empty
10411
+ * array → control hidden). A provider returns honest, camera-probed values
10412
+ * — never hardcoded.
10413
+ */
10414
+ var ImageSettingsOptionsSchema = object({
10415
+ supportsBrightness: boolean(),
10416
+ brightness: NormalizedRangeSchema.optional(),
10417
+ supportsContrast: boolean(),
10418
+ contrast: NormalizedRangeSchema.optional(),
10419
+ supportsSaturation: boolean(),
10420
+ saturation: NormalizedRangeSchema.optional(),
10421
+ supportsSharpness: boolean(),
10422
+ sharpness: NormalizedRangeSchema.optional(),
10423
+ supportsMirror: boolean(),
10424
+ supportsFlip: boolean(),
10425
+ /** Supported rotation values. Empty → rotation not configurable. */
10426
+ rotateOptions: array(ImageRotateSchema),
10427
+ /** Supported white-balance modes. Empty → white-balance not configurable. */
10428
+ whiteBalanceModes: array(WhiteBalanceModeSchema),
10429
+ supportsWarmth: boolean(),
10430
+ /** Present when `supportsWarmth` — the normalized 0–100 range. */
10431
+ warmth: NormalizedRangeSchema.optional(),
10432
+ /** Supported exposure modes. Empty → exposure not configurable. */
10433
+ exposureModes: array(ExposureModeSchema),
10434
+ /** Supported backlight modes. Empty → backlight-compensation not configurable. */
10435
+ backlightModes: array(BacklightModeSchema)
10436
+ });
10437
+ /**
10438
+ * Partial change to the image config — every field optional. Slider values
10439
+ * are normalized 0–100. A provider ignores fields it does not support.
10440
+ */
10441
+ var ImageSettingsPatchSchema = object({
10442
+ brightness: number().optional(),
10443
+ contrast: number().optional(),
10444
+ saturation: number().optional(),
10445
+ sharpness: number().optional(),
10446
+ mirror: boolean().optional(),
10447
+ flip: boolean().optional(),
10448
+ rotate: ImageRotateSchema.optional(),
10449
+ whiteBalance: WhiteBalanceModeSchema.optional(),
10450
+ warmth: number().optional(),
10451
+ exposureMode: ExposureModeSchema.optional(),
10452
+ backlightMode: BacklightModeSchema.optional()
10453
+ });
10454
+ DeviceType.Camera, method(object({ deviceId: number() }), ImageSettingsOptionsSchema), method(object({
10455
+ deviceId: number(),
10456
+ settings: ImageSettingsPatchSchema
10457
+ }), _void(), {
10458
+ kind: "mutation",
10459
+ auth: "admin"
10460
+ });
10461
+ /**
10252
10462
  * Robotic lawn-mower cap. Models HA `lawn_mower.*` entities — anything
10253
10463
  * with a mowing lifecycle plus a dock action.
10254
10464
  *
@@ -11311,6 +11521,16 @@ var RunnerCameraConfigSchema = object({
11311
11521
  * this gate is bypassed.
11312
11522
  */
11313
11523
  onboardMotionDrivesAnalyzer: boolean().default(true),
11524
+ /**
11525
+ * Master toggle for the occupancy re-check. When `false` (DEFAULT) the runner
11526
+ * never arms the periodic recheck timer, regardless of `occupancyRecheckSec` —
11527
+ * this is off by default because the recheck re-subscribes a detection session
11528
+ * every N seconds while `watching`, a major source of pull-decoder re-dial
11529
+ * churn (each cycle creates+tears a session → RTSP re-dial → latency). The
11530
+ * `occupancyRecheckSec` / `occupancyRecheckFrames` sliders only take effect
11531
+ * (and only render) when this is enabled.
11532
+ */
11533
+ occupancyRecheckEnabled: boolean().default(false),
11314
11534
  occupancyRecheckSec: number().min(occupancyRecheckSecField.min).max(occupancyRecheckSecField.max).default(occupancyRecheckSecField.default),
11315
11535
  occupancyRecheckFrames: number().min(occupancyRecheckFramesField.min).max(occupancyRecheckFramesField.max).default(occupancyRecheckFramesField.default),
11316
11536
  /**
@@ -11361,6 +11581,8 @@ var RunnerCameraDeviceUIFields = [
11361
11581
  default: motionFpsField.default,
11362
11582
  showValue: true,
11363
11583
  unit: "fps",
11584
+ nullable: true,
11585
+ nullLabel: "Default",
11364
11586
  showWhen: {
11365
11587
  field: "motionSources",
11366
11588
  includes: "analyzer"
@@ -11375,7 +11597,9 @@ var RunnerCameraDeviceUIFields = [
11375
11597
  step: detectionFpsField.step,
11376
11598
  default: detectionFpsField.default,
11377
11599
  showValue: true,
11378
- unit: "fps"
11600
+ unit: "fps",
11601
+ nullable: true,
11602
+ nullLabel: "Default"
11379
11603
  },
11380
11604
  {
11381
11605
  key: "motionCooldownMs",
@@ -11388,7 +11612,9 @@ var RunnerCameraDeviceUIFields = [
11388
11612
  default: motionCooldownMsField.default,
11389
11613
  showValue: true,
11390
11614
  unit: "s",
11391
- displayScale: 1e3
11615
+ displayScale: 1e3,
11616
+ nullable: true,
11617
+ nullLabel: "Default"
11392
11618
  },
11393
11619
  {
11394
11620
  key: "onboardMotionDrivesAnalyzer",
@@ -11401,17 +11627,29 @@ var RunnerCameraDeviceUIFields = [
11401
11627
  includes: "onboard"
11402
11628
  }
11403
11629
  },
11630
+ {
11631
+ key: "occupancyRecheckEnabled",
11632
+ type: "boolean",
11633
+ style: "checkbox",
11634
+ label: "Occupancy re-check",
11635
+ description: "Periodically re-sample a few frames during the watching phase to confirm the scene is truly empty (catches stationary objects motion-gating would miss). Off by default — it adds decoder re-dial churn.",
11636
+ default: false
11637
+ },
11404
11638
  {
11405
11639
  key: "occupancyRecheckSec",
11406
11640
  type: "slider",
11407
11641
  label: "Occupancy re-check interval",
11408
- description: "How often (in seconds) the runner re-samples a few frames to confirm the scene is truly empty during the watching phase. 0 = disabled.",
11642
+ description: "How often (in seconds) the runner re-samples a few frames to confirm the scene is truly empty during the watching phase.",
11409
11643
  min: occupancyRecheckSecField.min,
11410
11644
  max: occupancyRecheckSecField.max,
11411
11645
  step: occupancyRecheckSecField.step,
11412
11646
  default: occupancyRecheckSecField.default,
11413
11647
  showValue: true,
11414
- unit: "s"
11648
+ unit: "s",
11649
+ showWhen: {
11650
+ field: "occupancyRecheckEnabled",
11651
+ equals: true
11652
+ }
11415
11653
  },
11416
11654
  {
11417
11655
  key: "occupancyRecheckFrames",
@@ -11422,7 +11660,11 @@ var RunnerCameraDeviceUIFields = [
11422
11660
  max: occupancyRecheckFramesField.max,
11423
11661
  step: occupancyRecheckFramesField.step,
11424
11662
  default: occupancyRecheckFramesField.default,
11425
- showValue: true
11663
+ showValue: true,
11664
+ showWhen: {
11665
+ field: "occupancyRecheckEnabled",
11666
+ equals: true
11667
+ }
11426
11668
  }
11427
11669
  ];
11428
11670
  /**
@@ -20001,6 +20243,18 @@ Object.freeze({
20001
20243
  addonId: null,
20002
20244
  access: "view"
20003
20245
  },
20246
+ "dayNight.getOptions": {
20247
+ capName: "day-night",
20248
+ capScope: "device",
20249
+ addonId: null,
20250
+ access: "view"
20251
+ },
20252
+ "dayNight.setSettings": {
20253
+ capName: "day-night",
20254
+ capScope: "device",
20255
+ addonId: null,
20256
+ access: "create"
20257
+ },
20004
20258
  "decoder.createSession": {
20005
20259
  capName: "decoder",
20006
20260
  capScope: "system",
@@ -20931,6 +21185,18 @@ Object.freeze({
20931
21185
  addonId: null,
20932
21186
  access: "create"
20933
21187
  },
21188
+ "imageSettings.getOptions": {
21189
+ capName: "image-settings",
21190
+ capScope: "device",
21191
+ addonId: null,
21192
+ access: "view"
21193
+ },
21194
+ "imageSettings.setSettings": {
21195
+ capName: "image-settings",
21196
+ capScope: "device",
21197
+ addonId: null,
21198
+ access: "create"
21199
+ },
20934
21200
  "integrations.create": {
20935
21201
  capName: "integrations",
20936
21202
  capScope: "system",
@@ -24510,7 +24776,8 @@ var DEFAULT_WATCHDOG_THRESHOLDS = {
24510
24776
  audioMs: 9e4,
24511
24777
  motionMs: 3e4,
24512
24778
  detectionMs: 6e4,
24513
- maxRecoveryAttempts: 3
24779
+ maxRecoveryAttempts: 3,
24780
+ exhaustedRetryMs: 6e4
24514
24781
  };
24515
24782
  var STAGE_THRESHOLD_KEY = {
24516
24783
  audio: "audioMs",
@@ -24531,7 +24798,8 @@ var PipelineWatchdog = class {
24531
24798
  const stages = /* @__PURE__ */ new Map();
24532
24799
  for (const [stage] of cam.continuousStages) stages.set(stage, {
24533
24800
  lastSeenMs: now,
24534
- attempts: 0
24801
+ attempts: 0,
24802
+ lastAttemptMs: 0
24535
24803
  });
24536
24804
  this.state.set(cam.deviceId, stages);
24537
24805
  }
@@ -24554,7 +24822,10 @@ var PipelineWatchdog = class {
24554
24822
  else this.deps.logger.info(line);
24555
24823
  for (const r of recoveries) {
24556
24824
  const rt = this.state.get(cam.deviceId)?.get(r.stage);
24557
- if (rt) rt.attempts += 1;
24825
+ if (rt) {
24826
+ if (rt.attempts < this.deps.thresholds.maxRecoveryAttempts) rt.attempts += 1;
24827
+ rt.lastAttemptMs = now;
24828
+ }
24558
24829
  this.deps.recover(cam.deviceId, r.stage, r.streamId);
24559
24830
  }
24560
24831
  }
@@ -24598,7 +24869,13 @@ var PipelineWatchdog = class {
24598
24869
  if (staleness <= thresholdMs) parts.push(`${stage}=${stageMode[stage]}@${streamId}(OK ${sSec}s)`);
24599
24870
  else if (rt.attempts >= this.deps.thresholds.maxRecoveryAttempts) {
24600
24871
  stalled = true;
24601
- parts.push(`${stage}=${stageMode[stage]}@${streamId}(STALLED ${sSec}s · exhausted ${rt.attempts})`);
24872
+ if (now - rt.lastAttemptMs >= this.deps.thresholds.exhaustedRetryMs) {
24873
+ recoveries.push({
24874
+ stage,
24875
+ streamId
24876
+ });
24877
+ parts.push(`${stage}=${stageMode[stage]}@${streamId}(STALLED ${sSec}s · exhausted ${rt.attempts} · retrying)`);
24878
+ } else parts.push(`${stage}=${stageMode[stage]}@${streamId}(STALLED ${sSec}s · exhausted ${rt.attempts})`);
24602
24879
  } else {
24603
24880
  stalled = true;
24604
24881
  recoveries.push({
@@ -24950,6 +25227,24 @@ function isPipelinePhaseMode(v) {
24950
25227
  var PREFERRED_AGENT_SETTING = "preferredAgent";
24951
25228
  /** Key under which the orchestrator stores the per-device audio node pin. */
24952
25229
  var AUDIO_NODE_SETTING = "audioNodeId";
25230
+ /**
25231
+ * Target PCM window duration, in ms, for audio classification.
25232
+ *
25233
+ * Sized for the ~1 s inference window the downstream classifiers expect —
25234
+ * YAMNet consumes a 0.975 s frame and Apple SoundAnalysis a ~1 s frame.
25235
+ * The broker's `AudioCodecSession` no longer batches (its 500 ms
25236
+ * accumulator was removed for WebRTC latency), so decoded codec chunks now
25237
+ * arrive at ~21–64 ms each — ~16–48 chunks per second per camera. Feeding
25238
+ * each tiny chunk to the analyzer meant one cross-process `analyseChunk`
25239
+ * RPC + one `PipelineAudioInferenceResult` event PER chunk for a classifier
25240
+ * that (a) throttles to ~2 Hz internally anyway and (b) needs a ~1 s window
25241
+ * for accurate inference. We instead accumulate raw PCM per device and flush
25242
+ * ONE classify + ONE event per ~1 s window: ~1 RPC/event/s/camera and a
25243
+ * correctly-sized inference frame.
25244
+ */
25245
+ var AUDIO_WINDOW_TARGET_MS = 1e3;
25246
+ /** f32le PCM = 4 bytes per sample. */
25247
+ var F32_BYTES_PER_SAMPLE = 4;
24953
25248
  var DEFAULT_BROKER_CALL_TIMEOUT_MS = 5e3;
24954
25249
  /** Debounce window for `scheduleReconcile` — coalesces bursts of topology/slot-change signals. */
24955
25250
  var RECONCILE_DEBOUNCE_MS = 200;
@@ -28858,6 +29153,13 @@ var PipelineOrchestratorAddon = class PipelineOrchestratorAddon extends BaseAddo
28858
29153
  if (typeof v !== "number") throw new Error(`orchestrator schema missing required number '${key}' for device ${deviceId}`);
28859
29154
  return v;
28860
29155
  };
29156
+ const numberOrDefault = (key) => {
29157
+ const v = flat[key];
29158
+ if (typeof v === "number") return v;
29159
+ const uiField = RunnerCameraDeviceUIFields.find((f) => f.key === key);
29160
+ const dflt = uiField && "default" in uiField ? uiField.default : void 0;
29161
+ return typeof dflt === "number" ? dflt : 0;
29162
+ };
28861
29163
  try {
28862
29164
  const features = await this.lookupDeviceFeatures(deviceId);
28863
29165
  const profile = resolveDeviceProfile(features);
@@ -28875,6 +29177,8 @@ var PipelineOrchestratorAddon = class PipelineOrchestratorAddon extends BaseAddo
28875
29177
  const audioMode = typeof userAudioMode === "string" && isPipelinePhaseMode(userAudioMode) ? userAudioMode : profile?.defaults.audioMode ?? "always-on";
28876
29178
  const userOnboardMotionDrivesAnalyzer = raw["onboardMotionDrivesAnalyzer"];
28877
29179
  const onboardMotionDrivesAnalyzer = typeof userOnboardMotionDrivesAnalyzer === "boolean" ? userOnboardMotionDrivesAnalyzer : true;
29180
+ const userOccupancyRecheckEnabled = raw["occupancyRecheckEnabled"];
29181
+ const occupancyRecheckEnabled = typeof userOccupancyRecheckEnabled === "boolean" ? userOccupancyRecheckEnabled : false;
28878
29182
  const occupancyRecheckSec = mustNumber("occupancyRecheckSec");
28879
29183
  const occupancyRecheckFrames = mustNumber("occupancyRecheckFrames");
28880
29184
  return {
@@ -28883,12 +29187,13 @@ var PipelineOrchestratorAddon = class PipelineOrchestratorAddon extends BaseAddo
28883
29187
  motionSources,
28884
29188
  motionStreamProfile: mustString("motionStreamProfile"),
28885
29189
  detectionStreamProfile: mustString("detectionStreamProfile"),
28886
- motionFps: mustNumber("motionFps"),
28887
- detectionFps: mustNumber("detectionFps"),
28888
- motionCooldownMs: mustNumber("motionCooldownMs"),
29190
+ motionFps: numberOrDefault("motionFps"),
29191
+ detectionFps: numberOrDefault("detectionFps"),
29192
+ motionCooldownMs: numberOrDefault("motionCooldownMs"),
28889
29193
  detectionMode,
28890
29194
  audioMode,
28891
29195
  onboardMotionDrivesAnalyzer,
29196
+ occupancyRecheckEnabled,
28892
29197
  occupancyRecheckSec,
28893
29198
  occupancyRecheckFrames
28894
29199
  };
@@ -28999,6 +29304,7 @@ var PipelineOrchestratorAddon = class PipelineOrchestratorAddon extends BaseAddo
28999
29304
  detectionMode: resolved.detectionMode,
29000
29305
  audioMode: resolved.audioMode,
29001
29306
  onboardMotionDrivesAnalyzer: resolved.onboardMotionDrivesAnalyzer,
29307
+ occupancyRecheckEnabled: resolved.occupancyRecheckEnabled,
29002
29308
  occupancyRecheckSec: resolved.occupancyRecheckSec,
29003
29309
  occupancyRecheckFrames: resolved.occupancyRecheckFrames
29004
29310
  };
@@ -29033,6 +29339,7 @@ var PipelineOrchestratorAddon = class PipelineOrchestratorAddon extends BaseAddo
29033
29339
  detectionMode: config.detectionMode,
29034
29340
  audioMode: config.audioMode,
29035
29341
  onboardMotionDrivesAnalyzer: config.onboardMotionDrivesAnalyzer,
29342
+ occupancyRecheckEnabled: config.occupancyRecheckEnabled,
29036
29343
  occupancyRecheckSec: config.occupancyRecheckSec,
29037
29344
  occupancyRecheckFrames: config.occupancyRecheckFrames
29038
29345
  };
@@ -29198,6 +29505,7 @@ var PipelineOrchestratorAddon = class PipelineOrchestratorAddon extends BaseAddo
29198
29505
  if (a.motionCooldownMs !== b.motionCooldownMs) return false;
29199
29506
  if (a.audioStreamId !== b.audioStreamId) return false;
29200
29507
  if (a.onboardMotionDrivesAnalyzer !== b.onboardMotionDrivesAnalyzer) return false;
29508
+ if (a.occupancyRecheckEnabled !== b.occupancyRecheckEnabled) return false;
29201
29509
  if (a.occupancyRecheckSec !== b.occupancyRecheckSec) return false;
29202
29510
  if (a.occupancyRecheckFrames !== b.occupancyRecheckFrames) return false;
29203
29511
  if (a.motionSources.length !== b.motionSources.length) return false;
@@ -29727,6 +30035,19 @@ var PipelineOrchestratorAddon = class PipelineOrchestratorAddon extends BaseAddo
29727
30035
  isRemote: isRemoteAudio
29728
30036
  }
29729
30037
  });
30038
+ let pcmParts = [];
30039
+ let accumulatedBytes = 0;
30040
+ let accumulatedMs = 0;
30041
+ let windowSampleRate = 0;
30042
+ let windowChannels = 0;
30043
+ let windowTimestamp = 0;
30044
+ let windowOpen = false;
30045
+ const resetWindow = () => {
30046
+ pcmParts = [];
30047
+ accumulatedBytes = 0;
30048
+ accumulatedMs = 0;
30049
+ windowOpen = false;
30050
+ };
29730
30051
  const teardown = startAudioChunkPoller({
29731
30052
  api,
29732
30053
  brokerId: audioBrokerId,
@@ -29736,13 +30057,35 @@ var PipelineOrchestratorAddon = class PipelineOrchestratorAddon extends BaseAddo
29736
30057
  this.pipelineWatchdog?.noteSignal(deviceId, "audio");
29737
30058
  try {
29738
30059
  const byteLength = chunk.data.byteLength;
29739
- const data = new Uint8Array(byteLength);
29740
- data.set(new Uint8Array(chunk.data.buffer, chunk.data.byteOffset, byteLength));
30060
+ const bytes = new Uint8Array(byteLength);
30061
+ bytes.set(new Uint8Array(chunk.data.buffer, chunk.data.byteOffset, byteLength));
30062
+ if (!windowOpen) {
30063
+ windowSampleRate = chunk.sampleRate;
30064
+ windowChannels = chunk.channels;
30065
+ windowTimestamp = chunk.timestamp;
30066
+ windowOpen = true;
30067
+ }
30068
+ pcmParts.push(bytes);
30069
+ accumulatedBytes += byteLength;
30070
+ const channels = chunk.channels > 0 ? chunk.channels : 1;
30071
+ const framesPerChannel = byteLength / F32_BYTES_PER_SAMPLE / channels;
30072
+ accumulatedMs += framesPerChannel / chunk.sampleRate * 1e3;
30073
+ if (accumulatedMs < AUDIO_WINDOW_TARGET_MS) return;
30074
+ const windowData = new Uint8Array(accumulatedBytes);
30075
+ let offset = 0;
30076
+ for (const part of pcmParts) {
30077
+ windowData.set(part, offset);
30078
+ offset += part.byteLength;
30079
+ }
30080
+ const flushSampleRate = windowSampleRate;
30081
+ const flushChannels = windowChannels;
30082
+ const flushTimestamp = windowTimestamp;
30083
+ resetWindow();
29741
30084
  const audioChunkInput = {
29742
- data,
29743
- sampleRate: chunk.sampleRate,
29744
- channels: chunk.channels,
29745
- timestamp: chunk.timestamp,
30085
+ data: windowData,
30086
+ sampleRate: flushSampleRate,
30087
+ channels: flushChannels,
30088
+ timestamp: flushTimestamp,
29746
30089
  deviceId
29747
30090
  };
29748
30091
  const result = await api.audioAnalyzer.analyseChunk.mutate({
@@ -29819,6 +30162,7 @@ var PipelineOrchestratorAddon = class PipelineOrchestratorAddon extends BaseAddo
29819
30162
  this.ctx.logger.info("Audio stream subscribed", { tags: { deviceId } });
29820
30163
  return () => {
29821
30164
  teardown();
30165
+ resetWindow();
29822
30166
  };
29823
30167
  }
29824
30168
  };
@@ -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_orchestrator_widgets-NVcZ0pFA.mjs")).catch((e) => {
33
+ return l ||= d(() => import("./_virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_orchestrator_widgets-DaBzEEJK.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-pipeline-orchestrator",
3
- "version": "1.1.27",
3
+ "version": "1.1.28",
4
4
  "description": "Hub-side camera-to-agent load balancer — tracks runner capacity and dispatches attachCamera calls to the optimal pipeline-runner instance",
5
5
  "keywords": [
6
6
  "camstack",
@@ -1,26 +0,0 @@
1
- //#region \0virtual:mf:__mfe_internal__addon_pipeline_orchestrator_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js
2
- var e = "__mf_init__virtual:mf:__mfe_internal__addon_pipeline_orchestrator_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 = (e) => {
19
- e.ACCESSORY_LABEL, e.ALL_CAPABILITY_DEFINITIONS, e.APPLE_SA_TO_MACRO, e.AUDIO_BACKEND_CHOICES, e.AUDIO_MACRO_LABELS, e.AccessoriesStatusSchema, e.AccessoryKind, e.AddBrokerInputSchema, e.AddonAutoUpdateSchema, e.AddonListItemSchema, e.AddonPageDeclarationSchema, e.AddonPageInfoSchema, e.AdoptionAdoptInputSchema, e.AdoptionAdoptResultSchema, e.AdoptionFilterSchema, e.AdoptionGetCandidateInputSchema, e.AdoptionListCandidatesInputSchema, e.AdoptionListCandidatesOutputSchema, e.AdoptionReleaseInputSchema, e.AdoptionStatusSchema, e.AgentLoadSummarySchema, e.AirQualitySensorStatusSchema, e.AlarmArmModeSchema, e.AlarmPanelStatusSchema, e.AlarmStateSchema, e.AlertSchema, e.AlertSeveritySchema, e.AlertSourceSchema, e.AlertStatusSchema, e.AmbientLightSensorStatusSchema, e.ApiKeyRecordSchema, e.ApiKeySummarySchema, e.ArchiveEntrySchema, e.ArchiveManifestSchema, e.AttachmentMediaTypeSchema, e.AttachmentSchema, e.AudioAnalysisResultSchema, e.AudioAnalysisSettingsSchema, e.AudioChunkInputSchema, e.AudioClassSummarySchema, e.AudioClassificationLabelSchema, e.AudioClassificationResultSchema, e.AudioCodecInfoSchema, e.AudioDecodeSessionConfigSchema, e.AudioEncodeSchema, e.AudioEncodeSessionConfigSchema, e.AudioEncodedChunkSchema, e.AudioEventSchema, e.AudioLevelSchema, e.AudioMetricsHistoryPointSchema, e.AudioMetricsHistorySchema, e.AudioMetricsSnapshotSchema, e.AudioPcmChunkSchema, e.AuthResultSchema, e.AutoUpdateSettingsSchema, e.AutomationControlStatusSchema, e.AvailableIntegrationTypeSchema, e.BACKEND_TO_FORMAT, e.BATTERY_DEVICE_PROFILE, e.BackupDestinationInfoSchema, e.BackupEntrySchema, e.BaseAddon, e.BaseDevice, e.BaseDeviceProvider, e.BatteryStatusSchema, e.BinaryStatusSchema, e.BoundingBoxSchema, e.BrightnessStatusSchema, e.BrokerAddInputSchema, e.BrokerAudioClientSchema, e.BrokerClientsSchema, e.BrokerConnectionDetailsSchema, e.BrokerConsumerAttributionSchema, e.BrokerConsumerKindSchema, e.BrokerDecodedClientSchema, e.BrokerEncodedClientSchema, e.BrokerGetStateInputSchema, e.BrokerInfoSchema, e.BrokerProviderInfoSchema, e.BrokerPublishInputSchema, e.BrokerRegistryStatusSchema, e.BrokerRtspClientSchema, e.BrokerStatsSchema, e.BrokerStatusEnum, e.BrokerStatusSchema, e.BrokerSubscribeInputSchema, e.BrokerSubscribeResultSchema, e.BrokerTestConnectionResultSchema, e.BrokerUnsubscribeInputSchema, e.CAM_PROFILE_ORDER, e.CAPABILITY_NAMES, e.CAPABILITY_ROUTER_KEYS, e.CAP_NAMES_WITH_STATUS, e.CAP_NODE_PIN_CONTEXT_KEY, e.CAP_PROVIDER_KIND_MAP, e.COCO_80_LABELS, e.COCO_TO_MACRO, e.CamProfileSchema, e.CamStreamDescriptorSchema, e.CamStreamKindSchema, e.CamStreamResolutionSchema, e.CameraAssignmentStatusSchema, e.CameraAudioStatusSchema, e.CameraBrokerProfileSchema, e.CameraBrokerStatusSchema, e.CameraCredentialsSchema, e.CameraCredentialsStatusSchema, e.CameraDecoderShmSchema, e.CameraDecoderStatusSchema, e.CameraDetectionPhaseSchema, e.CameraDetectionProvisioningSchema, e.CameraDetectionProvisioningStateSchema, e.CameraDetectionStatusSchema, e.CameraMetricsSchema, e.CameraMetricsWithDeviceIdSchema, e.CameraMotionStatusSchema, e.CameraRecordingModeSchema, e.CameraRecordingStatusSchema, e.CameraSourceStatusSchema, e.CameraSourceStreamSchema, e.CameraStatusSchema, e.CameraStreamSchema, e.CandidateQueryFilterSchema, e.CapScopeSchema, e.CapabilityBindingsSchema, e.CarbonMonoxideStatusSchema, e.ChargingStatus, e.ClientNetworkStatsSchema, e.ClimateControlStatusSchema, e.ClipPlaybackSchema, e.ClipSchema, e.ClusterAddonNodeDeploymentSchema, e.ClusterAddonStatusEntrySchema, e.CollectionColumnSchema, e.CollectionIndexSchema, e.ColorStatusSchema, e.ConfigEntrySchema, e.ConfigSectionWithValuesSchema, e.ConfigTabDeclarationSchema, e.ConnectivityStatusSchema, e.ConsumableItemSchema, e.ConsumablesStatusSchema, e.ContactStatusSchema, e.ControlKindSchema, e.ControlStatusSchema, e.ConvertArtifactSchema, e.ConvertResultSchema, e.ConvertTargetSchema, e.CoverStateSchema, e.CoverStatusSchema, e.CreateApiKeyInputSchema, e.CreateApiKeyResultSchema, e.CreateIntegrationInputSchema, e.CreateScopedTokenInputSchema, e.CreateScopedTokenResultSchema, e.CreateUserInputSchema, e.CustomActionInputSchema, e.CustomModelDescriptorSchema, e.DATAPLANE_SECRET_HEADER, e.DEFAULT_ADDON_PLACEMENT, e.DEFAULT_AUDIO_ANALYZER_CONFIG, e.DEFAULT_DECODER_HWACCEL_CONFIG, e.DEFAULT_FEATURES, e.DEFAULT_RETENTION, e.DEVICE_CAP_NAMES, e.DEVICE_PROFILES, e.DEVICE_SETTINGS_CONTRIBUTION_METHODS, e.DEVICE_STATUS_METHOD, e.DEVICE_TYPE_INFO, e.DecodedAudioChunkSchema, e.DecodedFrameSchema, e.DecoderAssignmentSchema, e.DecoderSessionConfigSchema, e.DecoderStatsSchema, e.DeleteIntegrationResultSchema, e.DetectionSourceSchema, e.DetectorOutputSchema, e.DeviceCodeSeveritySchema, e.DeviceConfig, e.DeviceDiscoveryStatusSchema, e.DeviceExportExposeInputSchema, e.DeviceExportStatusSchema, e.DeviceExportUnexposeInputSchema, e.DeviceFeature, e.DeviceInfoSchema, e.DeviceNetworkStatsSchema, e.DeviceRole, e.DeviceRuntimeState, e.DeviceStatusSchema, e.DeviceType, e.DiscoveredChildDeviceSchema, e.DiscoveredChildStatusSchema, e.DiscoveredDeviceSchema, e.DiscoveredTargetSchema, e.DisposerChain, e.DoorbellPressEventSchema, e.DoorbellStatusSchema, e.EVENT_PAD_MS, e.EXPRESSION_BUILTINS, e.EXPRESSION_BUILTIN_NAMES, e.EXPRESSION_COMPILE_CACHE_CAPACITY, e.EXPRESSION_IDENTIFIER_RE, e.EXPRESSION_INJECTED_NOW, e.ElementConfigStore, e.EmbeddingInfoSchema, e.EmbeddingResultSchema, e.EncodeProfileSchema, e.EncodedPacketSchema, e.EnrichedWidgetMetadataSchema, e.EnumSensorDateTimeFormatSchema, e.EnumSensorStatusSchema, e.EventCategory, e.EventEmitterStatusSchema, e.EventFireSchema, e.EventItemSchema, e.EventKindSchema, e.EventSourceType, e.ExportSetupFieldSchema, e.ExportSetupSchema, e.ExposedDeviceSchema, e.ExposedResourceSchema, e.ExpressionEvalError, e.ExpressionParseError, e.FanControlStatusSchema, e.FanDirectionSchema, e.FeatureManifestSchema, e.FeatureProbeStatusSchema, e.FloodStatusSchema, e.FrameHandleFormatSchema, e.FrameHandleSchema, e.FrameInputSchema, e.GasStatusSchema, e.GetStreamWithCodecInputSchema, e.GlobalMetricsSchema, e.HF_BASE_URL, e.HF_REPO, e.HWACCEL_OPTIONS, e.HealthStatusSchema, e.HistoryPointSchema, e.HistoryResolutionEnum, e.HumidifierStatusSchema, e.HumiditySensorStatusSchema, e.HvacModeSchema, e.ImageStatusSchema, e.InstalledPackageSchema, e.IntegrationLiteSchema, e.IntegrationWithStateSchema, e.IntercomAbilitySchema, e.IntercomStatusSchema, e.KNOWN_CAP_NAMES, e.LabelDefinitionSchema, e.LawnMowerActivitySchema, e.LawnMowerControlStatusSchema, e.LocateSegmentResultSchema, e.LocationStatSchema, e.LockControlStatusSchema, e.LockStateSchema, e.LogEntrySchema, e.LogLevelSchema, e.LogStreamEntrySchema, a = e.MACRO_LABELS, e.MAX_EXPRESSION_AST_NODES, e.MAX_EXPRESSION_BINDINGS, e.MAX_EXPRESSION_CALL_ARGS, e.MAX_EXPRESSION_EVAL_STEPS, e.MAX_EXPRESSION_SOURCE_LENGTH, e.METHOD_ACCESS_MAP, e.MODEL_FORMATS, e.MaskGridDimsSchema, e.MaskGridShapeSchema, e.MaskLineShapeSchema, e.MaskPointSchema, e.MaskPolygonShapeSchema, e.MaskPolygonVerticesSchema, e.MaskRectShapeSchema, e.MaskShapeKindSchema, e.MaskShapeSchema, e.MediaFileSchema, e.MediaPlayerRepeatSchema, e.MediaPlayerStateSchema, e.MediaPlayerStatusSchema, e.MeshPeerSchema, e.MeshStatusSchema, e.MethodAccessSchema, e.ModelCatalogEntrySchema, e.ModelConvertInputSchema, e.ModelConvertMetadataSchema, e.ModelDistributeInputSchema, e.ModelDistributeResultSchema, e.ModelExtraFileSchema, e.ModelFormatEntrySchema, e.ModelFormatsSchema, e.MotionAnalysisResultSchema, e.MotionEventSchema, e.MotionOnMotionChangedDataSchema, e.MotionRegionSchema, e.MotionSourceEnum, e.MotionSourcesSchema, e.MotionStatusSchema, e.MotionTriggerRuntimeStateSchema, e.MotionTriggerStatusSchema, e.MotionZoneOptionsSchema, e.MotionZonePatchSchema, e.MotionZoneRegionSchema, e.MotionZoneStatusSchema, e.MqttBrokerStatusSchema, e.NativeDetectionSchema, e.NativeObjectClassEnum, e.NativeObjectDetectionRuntimeStateSchema, e.NativeObjectDetectionStatusSchema, e.NetworkAccessStatusSchema, e.NetworkAddressSchema, e.NetworkEndpointSchema, e.NotificationActionSchema, e.NotificationFormatSchema, e.NotificationHistoryEntrySchema, e.NotificationRuleSchema, e.NotificationSchema, e.NotifierStatusSchema, e.NumericSensorStatusSchema, e.OauthIntegrationDescriptorSchema, e.ObjectEventSchema, e.OrchestratorMetricsSchema, e.OsdOverlayKindEnum, e.OsdOverlayPatchSchema, e.OsdOverlaySchema, e.OsdPositionEnum, e.OsdStatusSchema, e.PET_FEEDER_MANUAL_FEED_MAX, e.PET_FEEDER_MANUAL_FEED_MIN, e.PIPELINE_FLOW_CAPABILITY_NAMES, e.PIPELINE_OWNER_CAPABILITY_NAMES, e.PROVIDER_KIND_CAP_NAMES, e.PYTHON_SCRIPT, e.PackageUpdateSchema, e.PackageVersionInfoSchema, e.PasskeySummarySchema, e.PcmSampleFormatSchema, e.PerScopeBreakdownSchema, e.PetFeederStatusSchema, e.PickStreamPreferencesSchema, e.PickStreamRequirementsSchema, e.PickedCamStreamSchema, e.PipelineAssignmentSchema, e.PipelineDefaultStepSchema, e.PipelineEngineChoiceSchema, e.PipelineRunResultBridge, e.PipelineStepInputSchema, e.PlaceholderReasonSchema, e.PolygonPointSchema, e.PowerMeterStatusSchema, e.PresenceStatusSchema, e.PressureSensorStatusSchema, e.PrivacyMaskOptionsSchema, e.PrivacyMaskPatchSchema, e.PrivacyMaskRegionSchema, e.PrivacyMaskShapeSchema, e.PrivacyMaskStatusSchema, e.ProfileRtspEntrySchema, e.ProfileSlotSchema, e.ProfileSlotStatusSchema, e.ProviderStatusSchema, e.PtzAutotrackRuntimeStateSchema, e.PtzAutotrackSettingsSchema, e.PtzAutotrackStatusSchema, e.PtzAutotrackTargetOptionSchema, e.PtzMoveCommandSchema, e.PtzPositionSchema, e.PtzPresetSchema, e.PtzStatusSchema, e.QueryFilterSchema, e.RECOGNITION_TYPES, e.RESERVED_BINDING_NAMES, e.RUNTIME_DEFAULTS, e.RUNTIME_TO_FORMAT, e.RawStateResultSchema, e.ReadSegmentBytesResultSchema, e.ReadinessRegistry, e.ReadinessTimeoutError, e.RecordingAvailabilitySchema, e.RecordingBandModeSchema, e.RecordingBandSchema, e.RecordingBandTriggersSchema, e.RecordingConfigSchema, e.RecordingDaysSchema, e.RecordingDeviceUsageSchema, e.RecordingLocationUsageSchema, e.RecordingManifestSchema, e.RecordingModeSchema, e.RecordingRangeSchema, e.RecordingRetentionSchema, e.RecordingRuleSchema, e.RecordingScheduleSchema, e.RecordingStatusSchema, e.RecordingStorageModeSchema, e.RecordingStorageUsageSchema, e.RecordingTriggersSchema, e.RecordingWeekdaySchema, e.RegisteredStreamSchema, e.RenderedAsSchema, e.ReportMotionInputSchema, e.RingBuffer, e.RtpSourceSchema, e.RtspRestreamEntrySchema, e.RunnerCameraConfigSchema, e.RunnerCameraDeviceUIFields, e.RunnerFrameSourceSchema, e.RunnerLocalLoadSchema, e.RunnerLocalMetricsSchema, e.SCOPE_PRESETS, e.SOURCE_INFO_METADATA_KEY, e.STREAM_PROFILE_META, e.STREAM_QUALITY_LABELS, e.SUB_DETECTION_TYPES, e.SYSTEM_CAP_NAMES, e.ScopedTokenSchema, e.ScopedTokenSummarySchema, e.ScoredObjectEventSchema, e.ScriptRunnerStatusSchema, e.SearchResultSchema, e.SendEmailInputSchema, e.SendEmailResultSchema, e.SendResultSchema, e.SettingsPatchSchema, e.SettingsRecordSchema, e.SettingsSchemaWithValuesSchema, e.SettingsUpdateResultSchema, e.ShmRingStatsSchema, e.SmokeStatusSchema, e.SmtpStatusSchema, e.SnapshotImageSchema, e.SourceInfoSchema, e.SpatialDetectionSchema, e.SsoBridgeClaimsSchema, e.StartEmbeddedInputSchema, e.StorageAbortUploadInputSchema, e.StorageBeginDownloadInputSchema, e.StorageBeginDownloadResultSchema, e.StorageBeginUploadInputSchema, e.StorageBeginUploadResultSchema, e.StorageEndDownloadInputSchema, e.StorageFinalizeUploadInputSchema, e.StorageLocationDeclarationSchema, e.StorageLocationRefSchema, e.StorageLocationSchema, e.StorageLocationTypeSchema, e.StorageProviderInfoSchema, e.StorageReadChunkInputSchema, e.StorageTestLocationResultSchema, e.StorageWriteChunkInputSchema, e.StreamCodecSchema, e.StreamFormatSchema, e.StreamInfoSchema, e.StreamNetworkStatsSchema, e.StreamParamsOptionsSchema, e.StreamParamsStatusSchema, e.StreamProfileConfigSchema, e.StreamProfileOptionsSchema, e.StreamProfilePatchSchema, e.StreamProfileSchema, e.StreamSourceEntrySchema, e.StreamSourceSchema, e.SubscribeAudioChunksInputSchema, e.SubscribeAudioChunksResultSchema, e.SubscribeFramesInputSchema, e.SubscribeFramesResultSchema, e.SwitchStatusSchema, e.SystemMetricsSchema, e.SystemMirror, e.TIMEZONES, e.TamperStatusSchema, e.TankStatusSchema, e.TargetKindCapsSchema, e.TargetKindLevelSchema, e.TargetKindSchema, e.TargetSchema, e.TemperatureSensorStatusSchema, e.TestConnectionResultSchema, e.TestResultSchema, e.ToastSchema, e.TokenScopeSchema, e.TopologyNodeSchema, e.TopologyProcessSchema, e.TopologyServiceSchema, e.TrackSchema, e.TrackStateSchema, e.TrackedDetectionSchema, e.TurnServerSchema, e.UNIT_TABLE, e.UnifiedBrokerInfoSchema, e.UnitConversionError, e.UpdateIntegrationInputSchema, e.UpdateStatusSchema, e.UpdateUserInputSchema, e.UserRecordSchema, e.UserSummarySchema, e.VacuumControlStatusSchema, e.VacuumStateSchema, e.ValveStateSchema, e.ValveStatusSchema, e.VibrationStatusSchema, e.VideoEncodeSchema, e.WELL_KNOWN_TABS, e.WELL_KNOWN_TAB_MAP, e.WaterHeaterStatusSchema, e.WeatherStatusSchema, e.WebrtcStreamChoiceSchema, e.WebrtcStreamTargetSchema, e.WidgetHostEnum, e.WidgetMetadataSchema, e.WidgetRemoteSchema, e.WidgetSizeEnum, e.YAMNET_TO_MACRO, e.ZoneKindEnum, e.ZoneRuleModeEnum, e.ZoneRuleSchema, e.ZoneRuleStageEnum, e.ZoneRulesArraySchema, e.ZoneSchema, e.ZoneScopeBreakdownSchema, e.accessoriesCapability, e.accessoryStableId, e.addonPagesCapability, e.addonPagesSourceCapability, e.addonRoutesCapability, e.addonSettingsCapability, e.addonWidgetsCapability, e.addonWidgetsSourceCapability, e.addonsCapability, e.adminUiCapability, e.advancedNotifierCapability, e.airQualitySensorCapability, e.alarmPanelCapability, e.alertsCapability, e.ambientLightSensorCapability, e.applyTransform, e.asBoolean, e.asJsonArray, e.asJsonObject, e.asNumber, e.asString, e.audioAnalysisCapability, e.audioAnalyzerCapability, e.audioCodecCapability, e.audioMetricsCapability, e.authProviderCapability, e.autoAssignProfiles, e.automationControlCapability, e.backupCapability, e.batteryCapability, e.bestLocationMatch, e.binaryCapability, e.bindAddonActions, e.brightnessCapability, e.brokerCapability, e.buildAddonRouteProvider, e.buildStreamParamsConfigSchema, e.buttonCapability, e.cameraCredentialsCapability, e.cameraPipelineConfigCapability, e.cameraStreamsCapability, e.canConvertUnit, e.carbonMonoxideCapability, e.cellsToRects, e.classifyStream, e.classifyStreams, e.climateControlCapability, e.colorCapability, e.compileExpression, e.compileExpressionSafe, e.connectivityCapability, e.consumablesCapability, e.contactCapability, e.controlCapability, e.convertUnit, e.cosineSimilarity, e.coverCapability, e.createDeviceProxy, e.createDurableState, e.createEvent, e.createExpressionScope, e.createLazyTrpcSource, e.createMirrorSource, e.createRuntimeStateBridge, e.createSliceHandle, e.createSystemProxy, e.customAction, e.customModelRegistryCapability, e.decoderCapability, e.defaultDeviceFor, e.defineCustomActions, e.detectionPipelineCapability, e.deviceAdoptionCapability, e.deviceCustomAction, e.deviceDiscoveryCapability, e.deviceExportCapability, e.deviceManagerCapability, e.deviceMatchesProfile, e.deviceOpsCapability, e.deviceProviderCapability, e.deviceStateCapability, e.deviceStatusCapability, e.doorbellCapability, e.embeddingEncoderCapability, e.emitDownForOwnedCaps, e.emitReadiness, e.encodeProfileFromStreamShape, e.enumSensorCapability, e.enumerateItemArrayFields, e.enumerateSchemaFields, e.errMsg, e.evaluateAst, e.evaluateLinkExpression, e.evaluateZoneRules, e.event, e.eventEmitterCapability, e.eventsCapability, e.expandCapMethods, e.extractSourceInfoFromMetadata, e.faceGalleryCapability, e.fanControlCapability, e.featureProbeCapability, e.filesystemBrowseCapability, e.findTimezone, e.floodCapability, e.formatForBackend, e.formatForRuntime, e.frameworkSwapConfirmSchema, e.frameworkSwapPackageSchema, e.gasCapability, e.getAudioMacroClassIds, e.getByPath, e.getCapsByProviderKind, e.hfModelUrl, e.htmlToText, e.humidifierCapability, e.humiditySensorCapability, e.hydrateSchema, e.imageCapability, e.integrationsCapability, e.intercomCapability, e.isAgentOnlyPlacement, e.isDeployableToAgent, e.isDeviceConfigCap, e.isEvent, e.jobKindSchema, e.lawnMowerControlCapability, e.lifecycleJobSchema, e.lifecycleJobScopeSchema, e.lifecycleJobStateSchema, e.lifecycleTaskSchema, e.localNetworkCapability, e.locationSimilarity, e.lockControlCapability, e.logDestinationCapability, e.makeProfileBrokerId, e.makeSourceBrokerId, e.mapAudioLabelToMacro, e.markdownToHtmlLite, e.markdownToText, e.maskUrlCredentials, e.mediaPlayerCapability, e.mergeSourceInfo, e.meshNetworkCapability, e.method, e.metricsProviderCapability, e.migrateConfigToBands, e.modelConvertCapability, e.modelDistributorCapability, e.modelFormatForRuntime, e.motionCapability, e.motionDetectionCapability, e.motionTriggerCapability, e.motionZonesCapability, e.mqttBrokerCapability, e.nativeObjectDetectionCapability, e.networkAccessCapability, e.networkQualityCapability, e.nodePin, e.nodesCapability, e.normalizeAddonInitResult, e.normalizeUnit, e.notificationOutputCapability, e.notifierCapability, e.numericSensorCapability, e.oauthIntegrationCapability, e.osdCapability, e.parseCameraStreamConfig, e.parseExpression, e.parseJsonArray, e.parseJsonObject, e.parseJsonUnknown, e.parseProfileBrokerId, e.parseStreamParamsFormPatch, e.pendingFrameworkSwapSchema, e.petFeederCapability, e.pickPreferredRtspEntry, e.pipelineAnalyticsCapability, e.pipelineExecutorCapability, e.pipelineOrchestratorCapability, e.pipelineRunnerCapability, e.plateGalleryCapability, e.platformProbeCapability, e.powerMeterCapability, e.prepareNotification, e.presenceCapability, e.pressureSensorCapability, e.privacyMaskCapability, e.ptzAutotrackCapability, e.ptzCapability, e.pythonScriptForBackend, e.readNodePin, e.readinessKey, e.rebootCapability, e.recordingCapability, e.rectsToCells, e.requiresPython, e.resolveAddonExecution, e.resolveAddonGroup, e.resolveAddonPlacement, e.resolveAddonRuntime, e.resolveCapMount, e.resolveDetectionRuntime, e.resolveDeviceProfile, e.resolveFormat, e.resolveModelFormat, e.resolveRunnerId, e.restreamerCapability, e.runInferenceStep, e.runtimeDevices, e.scopeKey, e.scoreRuntimes, e.scriptRunnerCapability, e.selectAssignedProfileSlots, e.setByPath, e.settingsStoreCapability, e.sleep, e.sleepCancellable, e.smokeCapability, e.smtpProviderCapability, e.snapshotCapability, e.snapshotProviderCapability, e.ssoBridgeCapability, e.storageCapability, e.storageEvictableCapability, e.storageProviderCapability, e.streamBrokerCapability, e.streamCatalogCapability, e.streamParamsCapability, e.streamPixels, e.streamQualityLabel, e.streamingEngineCapability, e.supportedRuntimes, e.switchCapability, e.synthesizeSourceInfo, e.systemCapability, e.tamperCapability, e.taskLogEntrySchema, e.taskPhaseSchema, e.taskTargetSchema, e.temperatureSensorCapability, e.textToHtml, e.toDeviceSummary, e.toExpressionValue, e.toStreamSourceEntry, e.toastCapability, e.tokenize, e.transcodeBody, e.tryConvertUnit, e.turnProviderCapability, e.unitDimension, e.unitsForDimension, e.updateCapability, e.userManagementCapability, e.userPasskeysCapability, e.vacuumControlCapability, e.validateExpressionSource, e.valveCapability, e.vibrationCapability, e.videoclipsCapability, e.waterHeaterCapability, e.weatherCapability, e.webrtcCapability, e.webrtcClientHintsSchema, e.webrtcSessionCapability, e.wiringAddonHealthSchema, e.wiringHealthSnapshotSchema, e.wiringNodeHealthSchema, e.wiringProbeKindSchema, e.wiringProbeResultSchema, e.zodEntriesToConfigUI, e.zoneAnalyticsCapability, e.zoneRulesCapability, e.zonesCapability, e.default;
20
- }, s = i.share["default:@camstack/types"];
21
- s === void 0 ? n.then(() => {
22
- if (s = i.share["default:@camstack/types"], s === void 0) throw Error("[Module Federation] Shared module @camstack/types was imported before federation bootstrap finished.");
23
- o(s);
24
- }) : o(s);
25
- //#endregion
26
- export { a as t };