@camstack/addon-pipeline 1.2.238 → 1.2.240

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. package/dist/audio-analyzer/index.js +2 -2
  2. package/dist/audio-analyzer/index.mjs +2 -2
  3. package/dist/{default-detection-model-CDhXxOJQ.js → default-detection-model-DJkeAz6C.js} +1 -1
  4. package/dist/{default-detection-model-I8kuDTEi.mjs → default-detection-model-Dv2g-8oh.mjs} +1 -1
  5. package/dist/detection-pipeline/index.js +4 -4
  6. package/dist/detection-pipeline/index.mjs +4 -4
  7. package/dist/{dist-NX0e_oWp.js → dist-B9P1Ya2y.js} +23 -23
  8. package/dist/{dist-But4XMDJ.mjs → dist-DIsGbdn1.mjs} +24 -24
  9. package/dist/motion-wasm/index.js +1 -1
  10. package/dist/motion-wasm/index.mjs +1 -1
  11. package/dist/{node-BgM4n8D4.js → node-CLBXrI84.js} +1 -1
  12. package/dist/{node-BHxRrsoX.mjs → node-CiInWOoF.mjs} +1 -1
  13. package/dist/pipeline-runner/index.js +19 -15
  14. package/dist/pipeline-runner/index.mjs +19 -15
  15. package/dist/{process-memory-C3-EOjjf.mjs → process-memory-C-7H0mfd.mjs} +1 -1
  16. package/dist/{process-memory-C5_Mo9TI.js → process-memory-Cj9Baww4.js} +1 -1
  17. package/dist/recorder/index.js +2 -2
  18. package/dist/recorder/index.mjs +2 -2
  19. package/dist/{segment-demux-js-CVZACSOh.mjs → segment-demux-js-BB9vb34n.mjs} +1 -1
  20. package/dist/{segment-demux-js-BAD7i9RI.js → segment-demux-js-BiLMVPQy.js} +1 -1
  21. package/dist/session-decode/decode-worker-child.js +148 -3
  22. package/dist/session-decode/decode-worker-child.mjs +148 -3
  23. package/dist/stream-broker/{_virtual_mf-localSharedImportMap___mfe_internal__addon_stream_broker_widgets-DXlbqJea.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_stream_broker_widgets-Bi1AlQGX.mjs} +2 -2
  24. package/dist/stream-broker/demux-worker-child.js +1 -1
  25. package/dist/stream-broker/demux-worker-child.mjs +1 -1
  26. package/dist/stream-broker/{hostInit-hjR1kp3m.mjs → hostInit-dGR5o3xR.mjs} +2 -2
  27. package/dist/stream-broker/index.js +3 -3
  28. package/dist/stream-broker/index.mjs +3 -3
  29. package/dist/stream-broker/remoteEntry.js +1 -1
  30. package/package.json +1 -1
@@ -3,8 +3,8 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  const require_chunk = require("../chunk-emK7D4bc.js");
6
- const require_dist = require("../dist-NX0e_oWp.js");
7
- const require_process_memory = require("../process-memory-C5_Mo9TI.js");
6
+ const require_dist = require("../dist-B9P1Ya2y.js");
7
+ const require_process_memory = require("../process-memory-Cj9Baww4.js");
8
8
  let node_fs = require("node:fs");
9
9
  node_fs = require_chunk.__toESM(node_fs);
10
10
  let node_path = require("node:path");
@@ -1,6 +1,6 @@
1
1
  import { n as __require } from "../chunk-DnnnRqeS.mjs";
2
- import { $t as hydrateSchema, At as resolvePoolMemoryPolicy, Kt as BaseAddon, N as audioAnalysisCapability, P as audioAnalyzerCapability, Qt as expandAudioChunkToF32le, Xt as audioChunkBytesPerSample, bn as EventCategory, ct as mapAudioLabelToMacro, n as AUDIO_BACKEND_CHOICES, rn as nodePin, s as DEFAULT_AUDIO_ANALYZER_CONFIG, w as PoolMemoryWatchdog, y as HF_BASE_URL, zt as errMsg } from "../dist-But4XMDJ.mjs";
3
- import { n as pickNodePlatformArch, t as readProcessMemory } from "../process-memory-C3-EOjjf.mjs";
2
+ import { $t as hydrateSchema, Jt as audioChunkBytesPerSample, Lt as errMsg, N as audioAnalysisCapability, Ot as resolvePoolMemoryPolicy, P as audioAnalyzerCapability, Qt as expandAudioChunkToF32le, Wt as BaseAddon, bn as EventCategory, n as AUDIO_BACKEND_CHOICES, ot as mapAudioLabelToMacro, rn as nodePin, s as DEFAULT_AUDIO_ANALYZER_CONFIG, w as PoolMemoryWatchdog, y as HF_BASE_URL } from "../dist-DIsGbdn1.mjs";
3
+ import { n as pickNodePlatformArch, t as readProcessMemory } from "../process-memory-C-7H0mfd.mjs";
4
4
  import * as fs from "node:fs";
5
5
  import * as path$1 from "node:path";
6
6
  import { downloadFile } from "@camstack/system/addon-utils";
@@ -1,4 +1,4 @@
1
- const require_dist = require("./dist-NX0e_oWp.js");
1
+ const require_dist = require("./dist-B9P1Ya2y.js");
2
2
  let node_crypto = require("node:crypto");
3
3
  //#region src/detection-pipeline/pipeline/landmark-precision-gate.ts
4
4
  /**
@@ -1,4 +1,4 @@
1
- import { F as audioKindId, a as COCO_80_LABELS, o as COCO_TO_MACRO, r as AUDIO_MACRO_LABELS, rt as hfModelUrl } from "./dist-But4XMDJ.mjs";
1
+ import { F as audioKindId, a as COCO_80_LABELS, o as COCO_TO_MACRO, r as AUDIO_MACRO_LABELS, tt as hfModelUrl } from "./dist-DIsGbdn1.mjs";
2
2
  import { randomUUID } from "node:crypto";
3
3
  //#region src/detection-pipeline/pipeline/landmark-precision-gate.ts
4
4
  /**
@@ -3,11 +3,11 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  const require_chunk = require("../chunk-emK7D4bc.js");
6
- const require_dist = require("../dist-NX0e_oWp.js");
7
- const require_node = require("../node-BgM4n8D4.js");
8
- const require_default_detection_model = require("../default-detection-model-CDhXxOJQ.js");
6
+ const require_dist = require("../dist-B9P1Ya2y.js");
7
+ const require_node = require("../node-CLBXrI84.js");
8
+ const require_default_detection_model = require("../default-detection-model-DJkeAz6C.js");
9
9
  const require_lazy_sharp = require("../lazy-sharp-BuwKlQLR.js");
10
- const require_process_memory = require("../process-memory-C5_Mo9TI.js");
10
+ const require_process_memory = require("../process-memory-Cj9Baww4.js");
11
11
  let node_os = require("node:os");
12
12
  node_os = require_chunk.__toESM(node_os);
13
13
  let node_fs = require("node:fs");
@@ -1,9 +1,9 @@
1
1
  import { n as __require } from "../chunk-DnnnRqeS.mjs";
2
- import { $t as hydrateSchema, At as resolvePoolMemoryPolicy, Dt as resolveClusterStepModelId, H as defaultDeviceFor$1, Kt as BaseAddon, Lt as supportedRuntimes$1, Mt as runtimeDevices$1, Q as evaluateZoneRules, X as enumerateInferenceDevices, Zt as createEvent, _t as pickClusterStepModels, bn as EventCategory, c as DEFAULT_CLUSTER_STEP_MODELS, hn as object, ht as overlayClusterStepSettings, in as parseJsonUnknown, it as inferModelProvider, j as YAMNET_TO_MACRO, l as DEFAULT_CLUSTER_STEP_SETTINGS, ln as array, m as DEVICE_BACKEND_TO_FORMAT, ot as loadContributionCapability, q as detectionPipelineCapability, rn as nodePin, sn as sleep, t as APPLE_SA_TO_MACRO, vn as string, vt as pickClusterStepSettings, w as PoolMemoryWatchdog, xt as pipelineExecutorCapability, yn as union, zt as errMsg } from "../dist-But4XMDJ.mjs";
3
- import { o as readProcessCost } from "../node-BHxRrsoX.mjs";
4
- import { a as ALL_PIPELINE_STEPS, c as getStep, d as landmarkPrecisionVerdict, l as getStepDefinition, n as resolveDefaultDetectionModel, o as ALL_STEPS, r as localFrameRegistry, s as getDefaultModelForFormat, u as resolveModelForFormat } from "../default-detection-model-I8kuDTEi.mjs";
2
+ import { $t as hydrateSchema, At as runtimeDevices$1, Ft as supportedRuntimes$1, G as detectionPipelineCapability, J as enumerateInferenceDevices, Lt as errMsg, Ot as resolvePoolMemoryPolicy, Tt as resolveClusterStepModelId, V as defaultDeviceFor$1, Wt as BaseAddon, X as evaluateZoneRules, Yt as createEvent, bn as EventCategory, c as DEFAULT_CLUSTER_STEP_MODELS, gt as pickClusterStepSettings, hn as object, ht as pickClusterStepModels, in as parseJsonUnknown, it as loadContributionCapability, j as YAMNET_TO_MACRO, l as DEFAULT_CLUSTER_STEP_SETTINGS, ln as array, m as DEVICE_BACKEND_TO_FORMAT, nt as inferModelProvider, pt as overlayClusterStepSettings, rn as nodePin, sn as sleep, t as APPLE_SA_TO_MACRO, vn as string, w as PoolMemoryWatchdog, yn as union, yt as pipelineExecutorCapability } from "../dist-DIsGbdn1.mjs";
3
+ import { o as readProcessCost } from "../node-CiInWOoF.mjs";
4
+ import { a as ALL_PIPELINE_STEPS, c as getStep, d as landmarkPrecisionVerdict, l as getStepDefinition, n as resolveDefaultDetectionModel, o as ALL_STEPS, r as localFrameRegistry, s as getDefaultModelForFormat, u as resolveModelForFormat } from "../default-detection-model-Dv2g-8oh.mjs";
5
5
  import { t as getSharp } from "../lazy-sharp-DXsqwpph.mjs";
6
- import { n as pickNodePlatformArch, t as readProcessMemory } from "../process-memory-C3-EOjjf.mjs";
6
+ import { n as pickNodePlatformArch, t as readProcessMemory } from "../process-memory-C-7H0mfd.mjs";
7
7
  import * as os from "node:os";
8
8
  import * as fs from "node:fs";
9
9
  import * as path$1 from "node:path";
@@ -5360,7 +5360,7 @@ var ZodIssueCode = {
5360
5360
  var ZodFirstPartyTypeKind;
5361
5361
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
5362
5362
  //#endregion
5363
- //#region ../types/dist/sleep-BEyvfshj.mjs
5363
+ //#region ../types/dist/sleep-B9qx0cEV.mjs
5364
5364
  /**
5365
5365
  * The audio chunk plane's byte format, and the ONE expansion from a coded
5366
5366
  * window to float samples (D455).
@@ -7416,6 +7416,28 @@ var DeviceRole = /* @__PURE__ */ function(DeviceRole) {
7416
7416
  DeviceRole["GenericNotifier"] = "generic-notifier";
7417
7417
  return DeviceRole;
7418
7418
  }({});
7419
+ /**
7420
+ * Identity — preserves literal types for downstream inference.
7421
+ *
7422
+ * The constraint is `Record<string, unknown>` (not `CustomActionsSpec`) so
7423
+ * TypeScript does not widen each entry's literal `kind`/`auth` fields to
7424
+ * the broader unions declared on `CustomActionSpec`'s default generics.
7425
+ * Shape validity is enforced separately by the `customAction(...)` helper
7426
+ * whose return type is already a `CustomActionSpec<...>`.
7427
+ */
7428
+ function defineCustomActions(spec) {
7429
+ return spec;
7430
+ }
7431
+ function customAction(input, output, options) {
7432
+ return {
7433
+ input,
7434
+ output,
7435
+ kind: options?.kind ?? "query",
7436
+ auth: options?.auth ?? "protected",
7437
+ scope: options?.scope ?? { kind: "system" },
7438
+ ...options?.caller ? { caller: "required" } : {}
7439
+ };
7440
+ }
7419
7441
  var StaticDirOutputSchema = object({ staticDir: string() });
7420
7442
  var VersionOutputSchema = object({ version: string() });
7421
7443
  method(_void(), StaticDirOutputSchema, { auth: "admin" }), method(_void(), VersionOutputSchema, { auth: "admin" });
@@ -14650,28 +14672,6 @@ method(object({}), object({ blocks: array(CoreBlockSchema) }), { auth: "admin" }
14650
14672
  content: string()
14651
14673
  })) }), { auth: "admin" });
14652
14674
  /**
14653
- * Identity — preserves literal types for downstream inference.
14654
- *
14655
- * The constraint is `Record<string, unknown>` (not `CustomActionsSpec`) so
14656
- * TypeScript does not widen each entry's literal `kind`/`auth` fields to
14657
- * the broader unions declared on `CustomActionSpec`'s default generics.
14658
- * Shape validity is enforced separately by the `customAction(...)` helper
14659
- * whose return type is already a `CustomActionSpec<...>`.
14660
- */
14661
- function defineCustomActions(spec) {
14662
- return spec;
14663
- }
14664
- function customAction(input, output, options) {
14665
- return {
14666
- input,
14667
- output,
14668
- kind: options?.kind ?? "query",
14669
- auth: options?.auth ?? "protected",
14670
- scope: options?.scope ?? { kind: "system" },
14671
- ...options?.caller ? { caller: "required" } : {}
14672
- };
14673
- }
14674
- /**
14675
14675
  * `custom-model-registry` — collection cap exposing operator-registered
14676
14676
  * custom detection models. Each provider (today: `addon-model-studio`)
14677
14677
  * contributes a list of `CustomModelDescriptor`s; the hub auto-concatenates
@@ -5360,7 +5360,7 @@ var ZodIssueCode = {
5360
5360
  var ZodFirstPartyTypeKind;
5361
5361
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
5362
5362
  //#endregion
5363
- //#region ../types/dist/sleep-BEyvfshj.mjs
5363
+ //#region ../types/dist/sleep-B9qx0cEV.mjs
5364
5364
  /**
5365
5365
  * The audio chunk plane's byte format, and the ONE expansion from a coded
5366
5366
  * window to float samples (D455).
@@ -7416,6 +7416,28 @@ var DeviceRole = /* @__PURE__ */ function(DeviceRole) {
7416
7416
  DeviceRole["GenericNotifier"] = "generic-notifier";
7417
7417
  return DeviceRole;
7418
7418
  }({});
7419
+ /**
7420
+ * Identity — preserves literal types for downstream inference.
7421
+ *
7422
+ * The constraint is `Record<string, unknown>` (not `CustomActionsSpec`) so
7423
+ * TypeScript does not widen each entry's literal `kind`/`auth` fields to
7424
+ * the broader unions declared on `CustomActionSpec`'s default generics.
7425
+ * Shape validity is enforced separately by the `customAction(...)` helper
7426
+ * whose return type is already a `CustomActionSpec<...>`.
7427
+ */
7428
+ function defineCustomActions(spec) {
7429
+ return spec;
7430
+ }
7431
+ function customAction(input, output, options) {
7432
+ return {
7433
+ input,
7434
+ output,
7435
+ kind: options?.kind ?? "query",
7436
+ auth: options?.auth ?? "protected",
7437
+ scope: options?.scope ?? { kind: "system" },
7438
+ ...options?.caller ? { caller: "required" } : {}
7439
+ };
7440
+ }
7419
7441
  var StaticDirOutputSchema = object({ staticDir: string() });
7420
7442
  var VersionOutputSchema = object({ version: string() });
7421
7443
  method(_void(), StaticDirOutputSchema, { auth: "admin" }), method(_void(), VersionOutputSchema, { auth: "admin" });
@@ -14650,28 +14672,6 @@ method(object({}), object({ blocks: array(CoreBlockSchema) }), { auth: "admin" }
14650
14672
  content: string()
14651
14673
  })) }), { auth: "admin" });
14652
14674
  /**
14653
- * Identity — preserves literal types for downstream inference.
14654
- *
14655
- * The constraint is `Record<string, unknown>` (not `CustomActionsSpec`) so
14656
- * TypeScript does not widen each entry's literal `kind`/`auth` fields to
14657
- * the broader unions declared on `CustomActionSpec`'s default generics.
14658
- * Shape validity is enforced separately by the `customAction(...)` helper
14659
- * whose return type is already a `CustomActionSpec<...>`.
14660
- */
14661
- function defineCustomActions(spec) {
14662
- return spec;
14663
- }
14664
- function customAction(input, output, options) {
14665
- return {
14666
- input,
14667
- output,
14668
- kind: options?.kind ?? "query",
14669
- auth: options?.auth ?? "protected",
14670
- scope: options?.scope ?? { kind: "system" },
14671
- ...options?.caller ? { caller: "required" } : {}
14672
- };
14673
- }
14674
- /**
14675
14675
  * `custom-model-registry` — collection cap exposing operator-registered
14676
14676
  * custom detection models. Each provider (today: `addon-model-studio`)
14677
14677
  * contributes a list of `CustomModelDescriptor`s; the hub auto-concatenates
@@ -44379,4 +44379,4 @@ function enumerateInferenceDevices(hw) {
44379
44379
  return out;
44380
44380
  }
44381
44381
  //#endregion
44382
- export { evictionPolicyForMode as $, hydrateSchema as $t, RingBuffer as A, resolvePoolMemoryPolicy as At, customAction as B, AUDIO_PRESETS as Bt, OpsLogEntrySchema as C, rankStreams as Ct, RECORDING_EXPORT_MAX_READ_BYTES as D, resolveClusterStepModelId as Dt, RATE_CONTROL_TIGHT as E, recordingSignalCapability as Et, audioKindId as F, streamBrokerCapability as Ft, deriveDetailCropRect as G, BOOT_RECOVERY_BACKOFF_MS as Gt, defaultDeviceFor as H, buildFfmpegArgs as Ht, batteryCapability as I, stripRetiredBandPreBufferSec as It, egressTranscodeSharingKey as J, DeviceFeature as Jt, deriveRecordingMode as K, BaseAddon as Kt, cameraStreamsCapability as L, supportedRuntimes as Lt, addonWidgetsSourceCapability as M, runtimeDevices as Mt, audioAnalysisCapability as N, storageEvictableCapability as Nt, RecordingConfigSchema as O, resolveEgressDecodeHwAccel as Ot, audioAnalyzerCapability as P, storageOccupancyCapability as Pt, evaluateZoneRules as Q, expandAudioChunkToF32le as Qt, createHwAccelCache as R, webrtcSessionCapability as Rt, NativeLeaseSettingsSchema as S, pipelineRunnerCapability as St, RATE_CONTROL_RELAXED as T, recordingExportCapability as Tt, defineCustomActions as U, invocationFromEncodeProfile as Ut, declareLogChannel as V, Fmp4BoxSplitter as Vt, deriveBatteryPresence as W, isSoftwareDecode as Wt, enumerateInferenceDevices as X, audioChunkBytesPerSample as Xt, egressTransportFromRequest as Y, DeviceType as Yt, evaluateSensorEdge as Z, createEvent as Zt, FailureCounters as _, record as _n, pickClusterStepModels as _t, COCO_80_LABELS as a, parseProfileBrokerId as an, isFirstLevelMacroClass as at, MOTION_CLOSE_AFTER_MS as b, EventCategory as bn, pickNativeLeaseOverride as bt, DEFAULT_CLUSTER_STEP_MODELS as c, _enum as cn, mapAudioLabelToMacro as ct, DEFAULT_EVENTS_BAND_BUFFER_SEC as d, discriminatedUnion as dn, mayWriteToLocation as dt, isEvent as en, evictionPolicyOfLocation as et, DEFAULT_FIRST_SIGHTING_FRESHNESS_MS as f, lazy as fn, migrateLegacyDeviceSignalConfig as ft, ExportRecordSchema as g, preprocess as gn, parseProcStatus as gt, EncodeProfileSchema as h, object as hn, overlayClusterStepSettings as ht, BatteryStatusSchema as i, parseJsonUnknown as in, inferModelProvider as it, YAMNET_TO_MACRO as j, resolveRecordingProfiles as jt, RecordingSignalStatusSchema as k, resolveLocationMode as kt, DEFAULT_CLUSTER_STEP_SETTINGS as l, array as ln, maskUrlCredentials as lt, DEVICE_BACKEND_TO_FORMAT as m, number as mn, motionDetectionCapability as mt, AUDIO_BACKEND_CHOICES as n, makeSourceBrokerId as nn, gbToBytes as nt, COCO_TO_MACRO as o, selectAssignedProfileSlots as on, loadContributionCapability as ot, DEFAULT_NATIVE_LEASE_SETTINGS as p, literal as pn, modeMayWrite as pt, detectionPipelineCapability as q, CAM_PROFILE_ORDER as qt, AUDIO_MACRO_LABELS as r, nodePin as rn, hfModelUrl as rt, DEFAULT_AUDIO_ANALYZER_CONFIG as s, sleep as sn, logChannelsCapability as st, APPLE_SA_TO_MACRO as t, makeProfileBrokerId as tn, failureContributionCapability as tt, DEFAULT_DETAIL_CROP_CONVENTION as u, boolean as un, mayReadLocation as ut, G711_SCALE_CORRECTION_DB as v, string as vn, pickClusterStepSettings as vt, PoolMemoryWatchdog as w, recordingCapability as wt, NativeLeaseAdmissionSchema as x, pipelineExecutorCapability as xt, HF_BASE_URL as y, union as yn, pickDetailCropConvention as yt, createLogChannelsProvider as z, errMsg as zt };
44382
+ export { failureContributionCapability as $, hydrateSchema as $t, RingBuffer as A, runtimeDevices as At, declareLogChannel as B, buildFfmpegArgs as Bt, OpsLogEntrySchema as C, recordingExportCapability as Ct, RECORDING_EXPORT_MAX_READ_BYTES as D, resolveLocationMode as Dt, RATE_CONTROL_TIGHT as E, resolveEgressDecodeHwAccel as Et, audioKindId as F, supportedRuntimes as Ft, detectionPipelineCapability as G, CAM_PROFILE_ORDER as Gt, deriveBatteryPresence as H, isSoftwareDecode as Ht, batteryCapability as I, webrtcSessionCapability as It, enumerateInferenceDevices as J, audioChunkBytesPerSample as Jt, egressTranscodeSharingKey as K, DeviceFeature as Kt, cameraStreamsCapability as L, errMsg as Lt, addonWidgetsSourceCapability as M, storageOccupancyCapability as Mt, audioAnalysisCapability as N, streamBrokerCapability as Nt, RecordingConfigSchema as O, resolvePoolMemoryPolicy as Ot, audioAnalyzerCapability as P, stripRetiredBandPreBufferSec as Pt, evictionPolicyOfLocation as Q, expandAudioChunkToF32le as Qt, createHwAccelCache as R, AUDIO_PRESETS as Rt, NativeLeaseSettingsSchema as S, recordingCapability as St, RATE_CONTROL_RELAXED as T, resolveClusterStepModelId as Tt, deriveDetailCropRect as U, BOOT_RECOVERY_BACKOFF_MS as Ut, defaultDeviceFor as V, invocationFromEncodeProfile as Vt, deriveRecordingMode as W, BaseAddon as Wt, evaluateZoneRules as X, customAction as Xt, evaluateSensorEdge as Y, createEvent as Yt, evictionPolicyForMode as Z, defineCustomActions as Zt, FailureCounters as _, record as _n, pickDetailCropConvention as _t, COCO_80_LABELS as a, parseProfileBrokerId as an, logChannelsCapability as at, MOTION_CLOSE_AFTER_MS as b, EventCategory as bn, pipelineRunnerCapability as bt, DEFAULT_CLUSTER_STEP_MODELS as c, _enum as cn, mayReadLocation as ct, DEFAULT_EVENTS_BAND_BUFFER_SEC as d, discriminatedUnion as dn, modeMayWrite as dt, isEvent as en, gbToBytes as et, DEFAULT_FIRST_SIGHTING_FRESHNESS_MS as f, lazy as fn, motionDetectionCapability as ft, ExportRecordSchema as g, preprocess as gn, pickClusterStepSettings as gt, EncodeProfileSchema as h, object as hn, pickClusterStepModels as ht, BatteryStatusSchema as i, parseJsonUnknown as in, loadContributionCapability as it, YAMNET_TO_MACRO as j, storageEvictableCapability as jt, RecordingSignalStatusSchema as k, resolveRecordingProfiles as kt, DEFAULT_CLUSTER_STEP_SETTINGS as l, array as ln, mayWriteToLocation as lt, DEVICE_BACKEND_TO_FORMAT as m, number as mn, parseProcStatus as mt, AUDIO_BACKEND_CHOICES as n, makeSourceBrokerId as nn, inferModelProvider as nt, COCO_TO_MACRO as o, selectAssignedProfileSlots as on, mapAudioLabelToMacro as ot, DEFAULT_NATIVE_LEASE_SETTINGS as p, literal as pn, overlayClusterStepSettings as pt, egressTransportFromRequest as q, DeviceType as qt, AUDIO_MACRO_LABELS as r, nodePin as rn, isFirstLevelMacroClass as rt, DEFAULT_AUDIO_ANALYZER_CONFIG as s, sleep as sn, maskUrlCredentials as st, APPLE_SA_TO_MACRO as t, makeProfileBrokerId as tn, hfModelUrl as tt, DEFAULT_DETAIL_CROP_CONVENTION as u, boolean as un, migrateLegacyDeviceSignalConfig as ut, G711_SCALE_CORRECTION_DB as v, string as vn, pickNativeLeaseOverride as vt, PoolMemoryWatchdog as w, recordingSignalCapability as wt, NativeLeaseAdmissionSchema as x, rankStreams as xt, HF_BASE_URL as y, union as yn, pipelineExecutorCapability as yt, createLogChannelsProvider as z, Fmp4BoxSplitter as zt };
@@ -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-NX0e_oWp.js");
5
+ const require_dist = require("../dist-B9P1Ya2y.js");
6
6
  const require_lazy_sharp = require("../lazy-sharp-BuwKlQLR.js");
7
7
  let node_fs = require("node:fs");
8
8
  let node_path = require("node:path");
@@ -1,4 +1,4 @@
1
- import { $t as hydrateSchema, Kt as BaseAddon, Q as evaluateZoneRules, Yt as DeviceType, mt as motionDetectionCapability } from "../dist-But4XMDJ.mjs";
1
+ import { $t as hydrateSchema, Wt as BaseAddon, X as evaluateZoneRules, ft as motionDetectionCapability, qt as DeviceType } from "../dist-DIsGbdn1.mjs";
2
2
  import { t as getSharp } from "../lazy-sharp-DXsqwpph.mjs";
3
3
  import { readFileSync } from "node:fs";
4
4
  import { join } from "node:path";
@@ -1,5 +1,5 @@
1
1
  const require_chunk = require("./chunk-emK7D4bc.js");
2
- const require_dist = require("./dist-NX0e_oWp.js");
2
+ const require_dist = require("./dist-B9P1Ya2y.js");
3
3
  let node_crypto = require("node:crypto");
4
4
  let node_fs = require("node:fs");
5
5
  node_fs = require_chunk.__toESM(node_fs, 1);
@@ -1,4 +1,4 @@
1
- import { Ht as buildFfmpegArgs, Vt as Fmp4BoxSplitter, Wt as isSoftwareDecode, zt as errMsg } from "./dist-But4XMDJ.mjs";
1
+ import { Bt as buildFfmpegArgs, Ht as isSoftwareDecode, Lt as errMsg, zt as Fmp4BoxSplitter } from "./dist-DIsGbdn1.mjs";
2
2
  import { randomUUID } from "node:crypto";
3
3
  import { realpathSync } from "node:fs";
4
4
  import path from "node:path";
@@ -3,9 +3,9 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  const require_chunk = require("../chunk-emK7D4bc.js");
6
- const require_dist = require("../dist-NX0e_oWp.js");
7
- const require_node = require("../node-BgM4n8D4.js");
8
- const require_default_detection_model = require("../default-detection-model-CDhXxOJQ.js");
6
+ const require_dist = require("../dist-B9P1Ya2y.js");
7
+ const require_node = require("../node-CLBXrI84.js");
8
+ const require_default_detection_model = require("../default-detection-model-DJkeAz6C.js");
9
9
  const require_worker_protocol = require("../worker-protocol-B2MfQLlu.js");
10
10
  const require_hub_hostname = require("../hub-hostname-DAJXlOgV.js");
11
11
  const require_lazy_sharp = require("../lazy-sharp-BuwKlQLR.js");
@@ -5644,7 +5644,8 @@ var TIMED_OUT = Symbol("inference-timed-out");
5644
5644
  function ownDetectionEntry(entry) {
5645
5645
  return {
5646
5646
  frame: ownFrame(entry.frame),
5647
- handle: entry.handle
5647
+ handle: entry.handle,
5648
+ ...entry.occasion !== void 0 ? { occasion: entry.occasion } : {}
5648
5649
  };
5649
5650
  }
5650
5651
  /**
@@ -5824,7 +5825,7 @@ var PipelineRunner = class {
5824
5825
  occupancyTimer: null,
5825
5826
  motionInFlight: false,
5826
5827
  lastResultDetections: 0,
5827
- occupancyArmed: false,
5828
+ occupancyArmed: true,
5828
5829
  emptyBurstStreak: 0
5829
5830
  };
5830
5831
  this.cameras.set(deviceId, state);
@@ -5999,7 +6000,8 @@ var PipelineRunner = class {
5999
6000
  frame._enqueuedAt = Date.now();
6000
6001
  state.detectionQueue.enqueue({
6001
6002
  frame,
6002
- handle
6003
+ handle,
6004
+ occasion: "burst"
6003
6005
  });
6004
6006
  return true;
6005
6007
  }
@@ -6018,7 +6020,8 @@ var PipelineRunner = class {
6018
6020
  frame._enqueuedAt = Date.now();
6019
6021
  state.detectionQueue.enqueue({
6020
6022
  frame,
6021
- handle
6023
+ handle,
6024
+ occasion: "burst"
6022
6025
  });
6023
6026
  return true;
6024
6027
  }
@@ -6310,7 +6313,7 @@ var PipelineRunner = class {
6310
6313
  state.processedCount++;
6311
6314
  if (result) {
6312
6315
  if (result.shed === true) state.shedFrames++;
6313
- await this.notifyCallbacks(deviceId, frame, plan.runsOnboard ? this.mergeOnboardDetections(state, result, frame) : result, streamType, handle, "pipeline");
6316
+ await this.notifyCallbacks(deviceId, frame, plan.runsOnboard ? this.mergeOnboardDetections(state, result, frame) : result, streamType, handle, "pipeline", entry.occasion ?? "session");
6314
6317
  frameReleaseReason = "success";
6315
6318
  const emittedAt = Date.now();
6316
6319
  const capturedAt = frame.capturedAt;
@@ -6403,7 +6406,7 @@ var PipelineRunner = class {
6403
6406
  detections: pairing.detections
6404
6407
  };
6405
6408
  state.lastResultDetections = pairing.detections.length;
6406
- await this.notifyCallbacks(deviceId, frame, result, streamType, handle, "onboard");
6409
+ await this.notifyCallbacks(deviceId, frame, result, streamType, handle, "onboard", entry.occasion ?? "session");
6407
6410
  frameReleaseReason = "success";
6408
6411
  } catch {
6409
6412
  frameReleaseReason = "error";
@@ -6532,9 +6535,9 @@ var PipelineRunner = class {
6532
6535
  });
6533
6536
  }
6534
6537
  }
6535
- async notifyCallbacks(deviceId, frame, result, streamType, handle, source) {
6538
+ async notifyCallbacks(deviceId, frame, result, streamType, handle, source, occasion) {
6536
6539
  for (const callback of this.resultCallbacks) try {
6537
- await callback(deviceId, frame, result, streamType, handle, source);
6540
+ await callback(deviceId, frame, result, streamType, handle, source, occasion);
6538
6541
  } catch {}
6539
6542
  }
6540
6543
  pickNextDetectionFrame() {
@@ -7615,11 +7618,11 @@ var PipelineRunnerAddon = class PipelineRunnerAddon extends require_dist.BaseAdd
7615
7618
  this.runner.onDetectionStreamChange((deviceId, action) => {
7616
7619
  this.handleDetectionStreamChange(deviceId, action);
7617
7620
  });
7618
- this.runner.onResult(async (deviceId, frame, result, _streamType, handle, source) => {
7621
+ this.runner.onResult(async (deviceId, frame, result, _streamType, handle, source, occasion) => {
7619
7622
  this.retention?.noteInferenceResult(deviceId, handle, result);
7620
7623
  this.cutSubjectTiles(deviceId, result, handle);
7621
7624
  const carried = await this.attachBirthEvidence(deviceId, frame, result);
7622
- this.emitInferenceResult(deviceId, frame, carried, handle, source);
7625
+ this.emitInferenceResult(deviceId, frame, carried, handle, source, occasion);
7623
7626
  const detectionCount = result.detections?.length ?? 0;
7624
7627
  this.runner?.noteDetectionResult(deviceId, detectionCount);
7625
7628
  if (detectionCount > 0 && this.occupancyBurstInFlight.has(deviceId)) this.occupancyBurstFound.add(deviceId);
@@ -10828,7 +10831,7 @@ var PipelineRunnerAddon = class PipelineRunnerAddon extends require_dist.BaseAdd
10828
10831
  teardown();
10829
10832
  }
10830
10833
  }
10831
- emitInferenceResult(deviceId, frame, result, handle, source) {
10834
+ emitInferenceResult(deviceId, frame, result, handle, source, occasion) {
10832
10835
  if (!this.ctx?.eventBus) return;
10833
10836
  const capturedAt = frame.capturedAt;
10834
10837
  const detailSteps = this.attached.get(deviceId)?.detailSteps;
@@ -10840,7 +10843,8 @@ var PipelineRunnerAddon = class PipelineRunnerAddon extends require_dist.BaseAdd
10840
10843
  emittedAt: Date.now(),
10841
10844
  ...typeof capturedAt === "number" && capturedAt > 0 ? { capturedAt } : {},
10842
10845
  ...detailSteps && detailSteps.length > 0 ? { detailSteps } : {},
10843
- source
10846
+ source,
10847
+ occasion
10844
10848
  };
10845
10849
  this.ctx.eventBus.emit(require_dist.createEvent(require_dist.EventCategory.PipelineInferenceResult, {
10846
10850
  type: "device",
@@ -1,6 +1,6 @@
1
- import { B as customAction, G as deriveDetailCropRect, Kt as BaseAddon, S as NativeLeaseSettingsSchema, St as pipelineRunnerCapability, U as defineCustomActions, Zt as createEvent, _ as FailureCounters, b as MOTION_CLOSE_AFTER_MS, bn as EventCategory, bt as pickNativeLeaseOverride, cn as _enum, fn as lazy, hn as object, ln as array, m as DEVICE_BACKEND_TO_FORMAT, mn as number, ot as loadContributionCapability, p as DEFAULT_NATIVE_LEASE_SETTINGS, pn as literal, rn as nodePin, tt as failureContributionCapability, u as DEFAULT_DETAIL_CROP_CONVENTION, un as boolean, vn as string, x as NativeLeaseAdmissionSchema, yt as pickDetailCropConvention, zt as errMsg } from "../dist-But4XMDJ.mjs";
2
- import { i as NO_COST_CLAIM, t as ChildCostRegistry } from "../node-BHxRrsoX.mjs";
3
- import { i as resolveFrameViewGeometry, l as getStepDefinition, r as localFrameRegistry } from "../default-detection-model-I8kuDTEi.mjs";
1
+ import { $ as failureContributionCapability, Lt as errMsg, S as NativeLeaseSettingsSchema, U as deriveDetailCropRect, Wt as BaseAddon, Xt as customAction, Yt as createEvent, Zt as defineCustomActions, _ as FailureCounters, _t as pickDetailCropConvention, b as MOTION_CLOSE_AFTER_MS, bn as EventCategory, bt as pipelineRunnerCapability, cn as _enum, fn as lazy, hn as object, it as loadContributionCapability, ln as array, m as DEVICE_BACKEND_TO_FORMAT, mn as number, p as DEFAULT_NATIVE_LEASE_SETTINGS, pn as literal, rn as nodePin, u as DEFAULT_DETAIL_CROP_CONVENTION, un as boolean, vn as string, vt as pickNativeLeaseOverride, x as NativeLeaseAdmissionSchema } from "../dist-DIsGbdn1.mjs";
2
+ import { i as NO_COST_CLAIM, t as ChildCostRegistry } from "../node-CiInWOoF.mjs";
3
+ import { i as resolveFrameViewGeometry, l as getStepDefinition, r as localFrameRegistry } from "../default-detection-model-Dv2g-8oh.mjs";
4
4
  import { t as isWorkerReply } from "../worker-protocol-C_W-P_g-.mjs";
5
5
  import { t as resolveHubHostname } from "../hub-hostname-cCknRYKj.mjs";
6
6
  import { t as getSharp } from "../lazy-sharp-DXsqwpph.mjs";
@@ -5636,7 +5636,8 @@ var TIMED_OUT = Symbol("inference-timed-out");
5636
5636
  function ownDetectionEntry(entry) {
5637
5637
  return {
5638
5638
  frame: ownFrame(entry.frame),
5639
- handle: entry.handle
5639
+ handle: entry.handle,
5640
+ ...entry.occasion !== void 0 ? { occasion: entry.occasion } : {}
5640
5641
  };
5641
5642
  }
5642
5643
  /**
@@ -5816,7 +5817,7 @@ var PipelineRunner = class {
5816
5817
  occupancyTimer: null,
5817
5818
  motionInFlight: false,
5818
5819
  lastResultDetections: 0,
5819
- occupancyArmed: false,
5820
+ occupancyArmed: true,
5820
5821
  emptyBurstStreak: 0
5821
5822
  };
5822
5823
  this.cameras.set(deviceId, state);
@@ -5991,7 +5992,8 @@ var PipelineRunner = class {
5991
5992
  frame._enqueuedAt = Date.now();
5992
5993
  state.detectionQueue.enqueue({
5993
5994
  frame,
5994
- handle
5995
+ handle,
5996
+ occasion: "burst"
5995
5997
  });
5996
5998
  return true;
5997
5999
  }
@@ -6010,7 +6012,8 @@ var PipelineRunner = class {
6010
6012
  frame._enqueuedAt = Date.now();
6011
6013
  state.detectionQueue.enqueue({
6012
6014
  frame,
6013
- handle
6015
+ handle,
6016
+ occasion: "burst"
6014
6017
  });
6015
6018
  return true;
6016
6019
  }
@@ -6302,7 +6305,7 @@ var PipelineRunner = class {
6302
6305
  state.processedCount++;
6303
6306
  if (result) {
6304
6307
  if (result.shed === true) state.shedFrames++;
6305
- await this.notifyCallbacks(deviceId, frame, plan.runsOnboard ? this.mergeOnboardDetections(state, result, frame) : result, streamType, handle, "pipeline");
6308
+ await this.notifyCallbacks(deviceId, frame, plan.runsOnboard ? this.mergeOnboardDetections(state, result, frame) : result, streamType, handle, "pipeline", entry.occasion ?? "session");
6306
6309
  frameReleaseReason = "success";
6307
6310
  const emittedAt = Date.now();
6308
6311
  const capturedAt = frame.capturedAt;
@@ -6395,7 +6398,7 @@ var PipelineRunner = class {
6395
6398
  detections: pairing.detections
6396
6399
  };
6397
6400
  state.lastResultDetections = pairing.detections.length;
6398
- await this.notifyCallbacks(deviceId, frame, result, streamType, handle, "onboard");
6401
+ await this.notifyCallbacks(deviceId, frame, result, streamType, handle, "onboard", entry.occasion ?? "session");
6399
6402
  frameReleaseReason = "success";
6400
6403
  } catch {
6401
6404
  frameReleaseReason = "error";
@@ -6524,9 +6527,9 @@ var PipelineRunner = class {
6524
6527
  });
6525
6528
  }
6526
6529
  }
6527
- async notifyCallbacks(deviceId, frame, result, streamType, handle, source) {
6530
+ async notifyCallbacks(deviceId, frame, result, streamType, handle, source, occasion) {
6528
6531
  for (const callback of this.resultCallbacks) try {
6529
- await callback(deviceId, frame, result, streamType, handle, source);
6532
+ await callback(deviceId, frame, result, streamType, handle, source, occasion);
6530
6533
  } catch {}
6531
6534
  }
6532
6535
  pickNextDetectionFrame() {
@@ -7607,11 +7610,11 @@ var PipelineRunnerAddon = class PipelineRunnerAddon extends BaseAddon {
7607
7610
  this.runner.onDetectionStreamChange((deviceId, action) => {
7608
7611
  this.handleDetectionStreamChange(deviceId, action);
7609
7612
  });
7610
- this.runner.onResult(async (deviceId, frame, result, _streamType, handle, source) => {
7613
+ this.runner.onResult(async (deviceId, frame, result, _streamType, handle, source, occasion) => {
7611
7614
  this.retention?.noteInferenceResult(deviceId, handle, result);
7612
7615
  this.cutSubjectTiles(deviceId, result, handle);
7613
7616
  const carried = await this.attachBirthEvidence(deviceId, frame, result);
7614
- this.emitInferenceResult(deviceId, frame, carried, handle, source);
7617
+ this.emitInferenceResult(deviceId, frame, carried, handle, source, occasion);
7615
7618
  const detectionCount = result.detections?.length ?? 0;
7616
7619
  this.runner?.noteDetectionResult(deviceId, detectionCount);
7617
7620
  if (detectionCount > 0 && this.occupancyBurstInFlight.has(deviceId)) this.occupancyBurstFound.add(deviceId);
@@ -10820,7 +10823,7 @@ var PipelineRunnerAddon = class PipelineRunnerAddon extends BaseAddon {
10820
10823
  teardown();
10821
10824
  }
10822
10825
  }
10823
- emitInferenceResult(deviceId, frame, result, handle, source) {
10826
+ emitInferenceResult(deviceId, frame, result, handle, source, occasion) {
10824
10827
  if (!this.ctx?.eventBus) return;
10825
10828
  const capturedAt = frame.capturedAt;
10826
10829
  const detailSteps = this.attached.get(deviceId)?.detailSteps;
@@ -10832,7 +10835,8 @@ var PipelineRunnerAddon = class PipelineRunnerAddon extends BaseAddon {
10832
10835
  emittedAt: Date.now(),
10833
10836
  ...typeof capturedAt === "number" && capturedAt > 0 ? { capturedAt } : {},
10834
10837
  ...detailSteps && detailSteps.length > 0 ? { detailSteps } : {},
10835
- source
10838
+ source,
10839
+ occasion
10836
10840
  };
10837
10841
  this.ctx.eventBus.emit(createEvent(EventCategory.PipelineInferenceResult, {
10838
10842
  type: "device",
@@ -1,4 +1,4 @@
1
- import { gt as parseProcStatus } from "./dist-But4XMDJ.mjs";
1
+ import { mt as parseProcStatus } from "./dist-DIsGbdn1.mjs";
2
2
  import * as fs from "node:fs";
3
3
  import { execFile } from "node:child_process";
4
4
  //#region src/shared/node-topology-platform.ts
@@ -1,5 +1,5 @@
1
1
  const require_chunk = require("./chunk-emK7D4bc.js");
2
- const require_dist = require("./dist-NX0e_oWp.js");
2
+ const require_dist = require("./dist-B9P1Ya2y.js");
3
3
  let node_fs = require("node:fs");
4
4
  node_fs = require_chunk.__toESM(node_fs);
5
5
  let node_child_process = require("node:child_process");
@@ -3,8 +3,8 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  const require_chunk = require("../chunk-emK7D4bc.js");
6
- const require_dist = require("../dist-NX0e_oWp.js");
7
- const require_node = require("../node-BgM4n8D4.js");
6
+ const require_dist = require("../dist-B9P1Ya2y.js");
7
+ const require_node = require("../node-CLBXrI84.js");
8
8
  const require_hub_hostname = require("../hub-hostname-DAJXlOgV.js");
9
9
  const require_restream_intent = require("../restream-intent-C4adO0P8.js");
10
10
  const require_retire_root_keys = require("../retire-root-keys-Csb8z2f3.js");
@@ -1,5 +1,5 @@
1
- import { $ as evictionPolicyForMode, $t as hydrateSchema, B as customAction, C as OpsLogEntrySchema, D as RECORDING_EXPORT_MAX_READ_BYTES, Et as recordingSignalCapability, I as batteryCapability, It as stripRetiredBandPreBufferSec, Jt as DeviceFeature, K as deriveRecordingMode, Kt as BaseAddon, Nt as storageEvictableCapability, O as RecordingConfigSchema, Pt as storageOccupancyCapability, Tt as recordingExportCapability, U as defineCustomActions, W as deriveBatteryPresence, Yt as DeviceType, Z as evaluateSensorEdge, _n as record, at as isFirstLevelMacroClass, bn as EventCategory, cn as _enum, d as DEFAULT_EVENTS_BAND_BUFFER_SEC, dt as mayWriteToLocation, et as evictionPolicyOfLocation, ft as migrateLegacyDeviceSignalConfig, g as ExportRecordSchema, gn as preprocess, hn as object, i as BatteryStatusSchema, jt as resolveRecordingProfiles, k as RecordingSignalStatusSchema, kt as resolveLocationMode, ln as array, mn as number, nt as gbToBytes, on as selectAssignedProfileSlots, ot as loadContributionCapability, pt as modeMayWrite, rn as nodePin, sn as sleep$1, un as boolean, ut as mayReadLocation, vn as string, wt as recordingCapability, zt as errMsg } from "../dist-But4XMDJ.mjs";
2
- import { a as physicalRootOf, i as NO_COST_CLAIM, t as ChildCostRegistry } from "../node-BHxRrsoX.mjs";
1
+ import { $t as hydrateSchema, C as OpsLogEntrySchema, Ct as recordingExportCapability, D as RECORDING_EXPORT_MAX_READ_BYTES, Dt as resolveLocationMode, H as deriveBatteryPresence, I as batteryCapability, Kt as DeviceFeature, Lt as errMsg, Mt as storageOccupancyCapability, O as RecordingConfigSchema, Pt as stripRetiredBandPreBufferSec, Q as evictionPolicyOfLocation, St as recordingCapability, W as deriveRecordingMode, Wt as BaseAddon, Xt as customAction, Y as evaluateSensorEdge, Z as evictionPolicyForMode, Zt as defineCustomActions, _n as record, bn as EventCategory, cn as _enum, ct as mayReadLocation, d as DEFAULT_EVENTS_BAND_BUFFER_SEC, dt as modeMayWrite, et as gbToBytes, g as ExportRecordSchema, gn as preprocess, hn as object, i as BatteryStatusSchema, it as loadContributionCapability, jt as storageEvictableCapability, k as RecordingSignalStatusSchema, kt as resolveRecordingProfiles, ln as array, lt as mayWriteToLocation, mn as number, on as selectAssignedProfileSlots, qt as DeviceType, rn as nodePin, rt as isFirstLevelMacroClass, sn as sleep$1, un as boolean, ut as migrateLegacyDeviceSignalConfig, vn as string, wt as recordingSignalCapability } from "../dist-DIsGbdn1.mjs";
2
+ import { a as physicalRootOf, i as NO_COST_CLAIM, t as ChildCostRegistry } from "../node-CiInWOoF.mjs";
3
3
  import { t as resolveHubHostname } from "../hub-hostname-cCknRYKj.mjs";
4
4
  import { c as PREBUFFER_MAX_MS, r as RECORDING_PRE_ROLL_REQUEST_MS, s as withRecordingIntent } from "../restream-intent-MeJhGCK9.mjs";
5
5
  import { n as RowMapStore, t as retireRootKeys } from "../retire-root-keys-DZvlso2l.mjs";
@@ -1,5 +1,5 @@
1
1
  import { r as __toESM, t as __commonJSMin } from "./chunk-DnnnRqeS.mjs";
2
- import { zt as errMsg } from "./dist-But4XMDJ.mjs";
2
+ import { Lt as errMsg } from "./dist-DIsGbdn1.mjs";
3
3
  import { spawn } from "node:child_process";
4
4
  //#region ../../node_modules/mp4box/dist/mp4box.all.js
5
5
  var require_mp4box_all = /* @__PURE__ */ __commonJSMin(((exports) => {
@@ -1,5 +1,5 @@
1
1
  const require_chunk = require("./chunk-emK7D4bc.js");
2
- const require_dist = require("./dist-NX0e_oWp.js");
2
+ const require_dist = require("./dist-B9P1Ya2y.js");
3
3
  let node_child_process = require("node:child_process");
4
4
  //#region ../../node_modules/mp4box/dist/mp4box.all.js
5
5
  var require_mp4box_all = /* @__PURE__ */ require_chunk.__commonJSMin(((exports) => {
@@ -1323,6 +1323,126 @@ function resolveRgbCropSource(plane, planeStride, region) {
1323
1323
  stride: tightStride
1324
1324
  };
1325
1325
  }
1326
+ var ADMITTED = { admitted: true };
1327
+ /**
1328
+ * Choose the media stride for one burst.
1329
+ *
1330
+ * `plannedFrames` is what the stride actually yields, so a caller can log the
1331
+ * intent next to the outcome — a budget that is never reached and a budget that
1332
+ * is always hit are different problems and used to read the same.
1333
+ */
1334
+ function planPreRollBurst(input) {
1335
+ const span = Number.isFinite(input.spanMs) && input.spanMs > 0 ? input.spanMs : 0;
1336
+ const fps = Number.isFinite(input.detectionFps) && input.detectionFps > 0 ? input.detectionFps : 1;
1337
+ const maxFrames = Number.isFinite(input.maxFrames) && input.maxFrames > 0 ? input.maxFrames : 0;
1338
+ if (span === 0 || maxFrames === 0) return {
1339
+ strideMs: Number.POSITIVE_INFINITY,
1340
+ plannedFrames: 0,
1341
+ subsampled: false
1342
+ };
1343
+ const cadenceMs = 1e3 / fps;
1344
+ const budgetStrideMs = span / maxFrames;
1345
+ const subsampled = budgetStrideMs > cadenceMs;
1346
+ const strideMs = subsampled ? budgetStrideMs : cadenceMs;
1347
+ return {
1348
+ strideMs,
1349
+ plannedFrames: Math.min(maxFrames, Math.max(1, Math.floor(span / strideMs))),
1350
+ subsampled
1351
+ };
1352
+ }
1353
+ /**
1354
+ * The live, per-session budget. Stateful by necessity — a stride is a decision
1355
+ * about the PREVIOUS admission — and deliberately free of any clock of its own:
1356
+ * both times are passed in, so a test can drive a catch-up burst without
1357
+ * pretending 4 s of media takes 4 s to decode.
1358
+ */
1359
+ var PreRollBurst = class {
1360
+ budget;
1361
+ plan;
1362
+ startedAtWall;
1363
+ /** Widest lead a frame's moment took over the wall clock — the SERVED span. */
1364
+ maxLeadMs = 0;
1365
+ lastAdmittedMediaWall = null;
1366
+ offered = 0;
1367
+ inferred = 0;
1368
+ done = false;
1369
+ drops = {
1370
+ stride: 0,
1371
+ "budget-frames": 0,
1372
+ "budget-wall-ms": 0,
1373
+ "live-edge": 0
1374
+ };
1375
+ constructor(input) {
1376
+ this.budget = input.budget;
1377
+ this.plan = input.plan;
1378
+ this.startedAtWall = input.startedAtWall;
1379
+ }
1380
+ /**
1381
+ * How much history this burst actually carried, in ms of media — the number
1382
+ * the broker knows as `preRollSpanMs` and that never reached this process.
1383
+ *
1384
+ * `null` until a frame has led the wall clock: a burst that saw none did not
1385
+ * measure a short span, it measured NOTHING, and the difference is the whole
1386
+ * reason the anchor was left alone rather than fabricated (D393).
1387
+ */
1388
+ servedSpanMs() {
1389
+ return this.maxLeadMs > 0 ? this.maxLeadMs : null;
1390
+ }
1391
+ /** True once the burst has ended — by budget, or by reaching the live edge. */
1392
+ get finished() {
1393
+ return this.done;
1394
+ }
1395
+ /**
1396
+ * Offer one decoded history frame.
1397
+ *
1398
+ * `mediaWall` is the frame's OWN moment (see `media-clock.ts`); `nowWall` is
1399
+ * the wall clock of the offer. The two are different by construction during
1400
+ * catch-up, which is the whole reason this class exists.
1401
+ */
1402
+ offer(mediaWall, nowWall) {
1403
+ this.offered++;
1404
+ if (this.done) return this.drop("budget-frames");
1405
+ const leadMs = mediaWall - nowWall;
1406
+ if (this.maxLeadMs > 0 && leadMs <= 100) {
1407
+ this.done = true;
1408
+ return this.drop("live-edge");
1409
+ }
1410
+ if (leadMs > this.maxLeadMs) this.maxLeadMs = leadMs;
1411
+ if (nowWall - this.startedAtWall >= this.budget.maxWallMs) {
1412
+ this.done = true;
1413
+ return this.drop("budget-wall-ms");
1414
+ }
1415
+ if (this.inferred >= this.budget.maxFrames) {
1416
+ this.done = true;
1417
+ return this.drop("budget-frames");
1418
+ }
1419
+ if (this.lastAdmittedMediaWall !== null && mediaWall - this.lastAdmittedMediaWall < this.plan.strideMs) return this.drop("stride");
1420
+ this.lastAdmittedMediaWall = mediaWall;
1421
+ this.inferred++;
1422
+ return ADMITTED;
1423
+ }
1424
+ /** End the burst without offering a frame (session torn down, decode ended). */
1425
+ finish() {
1426
+ this.done = true;
1427
+ }
1428
+ report() {
1429
+ return {
1430
+ offered: this.offered,
1431
+ inferred: this.inferred,
1432
+ dropped: this.offered - this.inferred,
1433
+ droppedByReason: { ...this.drops },
1434
+ strideMs: Math.round(this.plan.strideMs),
1435
+ subsampled: this.plan.subsampled
1436
+ };
1437
+ }
1438
+ drop(reason) {
1439
+ this.drops[reason]++;
1440
+ return {
1441
+ admitted: false,
1442
+ reason
1443
+ };
1444
+ }
1445
+ };
1326
1446
  //#endregion
1327
1447
  //#region src/session-decode/pull-demuxer-open.ts
1328
1448
  /**
@@ -1577,6 +1697,18 @@ var REDIAL_MS = 3e3;
1577
1697
  /** How often the worker emits its `framesDecoded/framesSkipped/deliveredFps` line. */
1578
1698
  var METRICS_INTERVAL_MS = 1e4;
1579
1699
  /**
1700
+ * Wall-clock ceiling on one pre-roll catch-up burst.
1701
+ *
1702
+ * A burst is a race against the live edge it is trying to get ahead of. Two
1703
+ * seconds in, the decoder has either caught up (the burst ended on its own) or
1704
+ * something is wrong — a cold GPU, a node under load, a camera whose GOP is
1705
+ * longer than its history — and continuing to spend inference on footage that
1706
+ * is now three or four seconds stale buys an operator nothing while a live
1707
+ * frame waits. The frame budget bounds the WORK; this bounds the WINDOW in
1708
+ * which that work is still worth doing.
1709
+ */
1710
+ var PRE_ROLL_BURST_MAX_WALL_MS = 2e3;
1711
+ /**
1580
1712
  * Hard cap on the native-frame retention ring (native-res crop feature). Kept
1581
1713
  * DELIBERATELY TINY — its only job is to cover the detection→crop latency
1582
1714
  * (typically 1-4 frames), NOT the full shm ring depth. On the HW path every
@@ -3290,13 +3422,26 @@ var DecodeWorkerChild = class {
3290
3422
  const ptsMs = this.frameMediaPtsMs(frame);
3291
3423
  if (ptsMs === null) return now;
3292
3424
  if (this.mediaClock === null || this.mediaClock.dialSeq !== this.dialSeq) {
3293
- const servedPreRollMs = 0;
3294
- if (this.preRollMs > 0) this.emitStderr(`[decode] pre-roll requested ${this.preRollMs}ms but the SERVED span does not reach this worker — burst suppressed, clock anchored at now (D411 follow-up)`);
3295
3425
  this.mediaClock = mediaClockForDial(this.mediaClock, this.dialSeq, {
3296
3426
  firstPtsMs: ptsMs,
3297
- preRollMs: servedPreRollMs,
3427
+ preRollMs: 0,
3298
3428
  nowWall: now
3299
3429
  });
3430
+ if (this.preRollMs > 0 && this.preRollMaxFrames > 0) {
3431
+ const preRollCadenceMs = this.minIntervalMs > 0 ? this.minIntervalMs : 1e3;
3432
+ this.preRollBurst = new PreRollBurst({
3433
+ budget: {
3434
+ maxFrames: this.preRollMaxFrames,
3435
+ maxWallMs: PRE_ROLL_BURST_MAX_WALL_MS
3436
+ },
3437
+ plan: planPreRollBurst({
3438
+ spanMs: this.preRollMaxFrames * preRollCadenceMs,
3439
+ detectionFps: 1e3 / preRollCadenceMs,
3440
+ maxFrames: this.preRollMaxFrames
3441
+ }),
3442
+ startedAtWall: now
3443
+ });
3444
+ }
3300
3445
  }
3301
3446
  return mediaWallClockOf(this.mediaClock.anchor, ptsMs, now);
3302
3447
  }
@@ -1322,6 +1322,126 @@ function resolveRgbCropSource(plane, planeStride, region) {
1322
1322
  stride: tightStride
1323
1323
  };
1324
1324
  }
1325
+ var ADMITTED = { admitted: true };
1326
+ /**
1327
+ * Choose the media stride for one burst.
1328
+ *
1329
+ * `plannedFrames` is what the stride actually yields, so a caller can log the
1330
+ * intent next to the outcome — a budget that is never reached and a budget that
1331
+ * is always hit are different problems and used to read the same.
1332
+ */
1333
+ function planPreRollBurst(input) {
1334
+ const span = Number.isFinite(input.spanMs) && input.spanMs > 0 ? input.spanMs : 0;
1335
+ const fps = Number.isFinite(input.detectionFps) && input.detectionFps > 0 ? input.detectionFps : 1;
1336
+ const maxFrames = Number.isFinite(input.maxFrames) && input.maxFrames > 0 ? input.maxFrames : 0;
1337
+ if (span === 0 || maxFrames === 0) return {
1338
+ strideMs: Number.POSITIVE_INFINITY,
1339
+ plannedFrames: 0,
1340
+ subsampled: false
1341
+ };
1342
+ const cadenceMs = 1e3 / fps;
1343
+ const budgetStrideMs = span / maxFrames;
1344
+ const subsampled = budgetStrideMs > cadenceMs;
1345
+ const strideMs = subsampled ? budgetStrideMs : cadenceMs;
1346
+ return {
1347
+ strideMs,
1348
+ plannedFrames: Math.min(maxFrames, Math.max(1, Math.floor(span / strideMs))),
1349
+ subsampled
1350
+ };
1351
+ }
1352
+ /**
1353
+ * The live, per-session budget. Stateful by necessity — a stride is a decision
1354
+ * about the PREVIOUS admission — and deliberately free of any clock of its own:
1355
+ * both times are passed in, so a test can drive a catch-up burst without
1356
+ * pretending 4 s of media takes 4 s to decode.
1357
+ */
1358
+ var PreRollBurst = class {
1359
+ budget;
1360
+ plan;
1361
+ startedAtWall;
1362
+ /** Widest lead a frame's moment took over the wall clock — the SERVED span. */
1363
+ maxLeadMs = 0;
1364
+ lastAdmittedMediaWall = null;
1365
+ offered = 0;
1366
+ inferred = 0;
1367
+ done = false;
1368
+ drops = {
1369
+ stride: 0,
1370
+ "budget-frames": 0,
1371
+ "budget-wall-ms": 0,
1372
+ "live-edge": 0
1373
+ };
1374
+ constructor(input) {
1375
+ this.budget = input.budget;
1376
+ this.plan = input.plan;
1377
+ this.startedAtWall = input.startedAtWall;
1378
+ }
1379
+ /**
1380
+ * How much history this burst actually carried, in ms of media — the number
1381
+ * the broker knows as `preRollSpanMs` and that never reached this process.
1382
+ *
1383
+ * `null` until a frame has led the wall clock: a burst that saw none did not
1384
+ * measure a short span, it measured NOTHING, and the difference is the whole
1385
+ * reason the anchor was left alone rather than fabricated (D393).
1386
+ */
1387
+ servedSpanMs() {
1388
+ return this.maxLeadMs > 0 ? this.maxLeadMs : null;
1389
+ }
1390
+ /** True once the burst has ended — by budget, or by reaching the live edge. */
1391
+ get finished() {
1392
+ return this.done;
1393
+ }
1394
+ /**
1395
+ * Offer one decoded history frame.
1396
+ *
1397
+ * `mediaWall` is the frame's OWN moment (see `media-clock.ts`); `nowWall` is
1398
+ * the wall clock of the offer. The two are different by construction during
1399
+ * catch-up, which is the whole reason this class exists.
1400
+ */
1401
+ offer(mediaWall, nowWall) {
1402
+ this.offered++;
1403
+ if (this.done) return this.drop("budget-frames");
1404
+ const leadMs = mediaWall - nowWall;
1405
+ if (this.maxLeadMs > 0 && leadMs <= 100) {
1406
+ this.done = true;
1407
+ return this.drop("live-edge");
1408
+ }
1409
+ if (leadMs > this.maxLeadMs) this.maxLeadMs = leadMs;
1410
+ if (nowWall - this.startedAtWall >= this.budget.maxWallMs) {
1411
+ this.done = true;
1412
+ return this.drop("budget-wall-ms");
1413
+ }
1414
+ if (this.inferred >= this.budget.maxFrames) {
1415
+ this.done = true;
1416
+ return this.drop("budget-frames");
1417
+ }
1418
+ if (this.lastAdmittedMediaWall !== null && mediaWall - this.lastAdmittedMediaWall < this.plan.strideMs) return this.drop("stride");
1419
+ this.lastAdmittedMediaWall = mediaWall;
1420
+ this.inferred++;
1421
+ return ADMITTED;
1422
+ }
1423
+ /** End the burst without offering a frame (session torn down, decode ended). */
1424
+ finish() {
1425
+ this.done = true;
1426
+ }
1427
+ report() {
1428
+ return {
1429
+ offered: this.offered,
1430
+ inferred: this.inferred,
1431
+ dropped: this.offered - this.inferred,
1432
+ droppedByReason: { ...this.drops },
1433
+ strideMs: Math.round(this.plan.strideMs),
1434
+ subsampled: this.plan.subsampled
1435
+ };
1436
+ }
1437
+ drop(reason) {
1438
+ this.drops[reason]++;
1439
+ return {
1440
+ admitted: false,
1441
+ reason
1442
+ };
1443
+ }
1444
+ };
1325
1445
  //#endregion
1326
1446
  //#region src/session-decode/pull-demuxer-open.ts
1327
1447
  /**
@@ -1576,6 +1696,18 @@ var REDIAL_MS = 3e3;
1576
1696
  /** How often the worker emits its `framesDecoded/framesSkipped/deliveredFps` line. */
1577
1697
  var METRICS_INTERVAL_MS = 1e4;
1578
1698
  /**
1699
+ * Wall-clock ceiling on one pre-roll catch-up burst.
1700
+ *
1701
+ * A burst is a race against the live edge it is trying to get ahead of. Two
1702
+ * seconds in, the decoder has either caught up (the burst ended on its own) or
1703
+ * something is wrong — a cold GPU, a node under load, a camera whose GOP is
1704
+ * longer than its history — and continuing to spend inference on footage that
1705
+ * is now three or four seconds stale buys an operator nothing while a live
1706
+ * frame waits. The frame budget bounds the WORK; this bounds the WINDOW in
1707
+ * which that work is still worth doing.
1708
+ */
1709
+ var PRE_ROLL_BURST_MAX_WALL_MS = 2e3;
1710
+ /**
1579
1711
  * Hard cap on the native-frame retention ring (native-res crop feature). Kept
1580
1712
  * DELIBERATELY TINY — its only job is to cover the detection→crop latency
1581
1713
  * (typically 1-4 frames), NOT the full shm ring depth. On the HW path every
@@ -3289,13 +3421,26 @@ var DecodeWorkerChild = class {
3289
3421
  const ptsMs = this.frameMediaPtsMs(frame);
3290
3422
  if (ptsMs === null) return now;
3291
3423
  if (this.mediaClock === null || this.mediaClock.dialSeq !== this.dialSeq) {
3292
- const servedPreRollMs = 0;
3293
- if (this.preRollMs > 0) this.emitStderr(`[decode] pre-roll requested ${this.preRollMs}ms but the SERVED span does not reach this worker — burst suppressed, clock anchored at now (D411 follow-up)`);
3294
3424
  this.mediaClock = mediaClockForDial(this.mediaClock, this.dialSeq, {
3295
3425
  firstPtsMs: ptsMs,
3296
- preRollMs: servedPreRollMs,
3426
+ preRollMs: 0,
3297
3427
  nowWall: now
3298
3428
  });
3429
+ if (this.preRollMs > 0 && this.preRollMaxFrames > 0) {
3430
+ const preRollCadenceMs = this.minIntervalMs > 0 ? this.minIntervalMs : 1e3;
3431
+ this.preRollBurst = new PreRollBurst({
3432
+ budget: {
3433
+ maxFrames: this.preRollMaxFrames,
3434
+ maxWallMs: PRE_ROLL_BURST_MAX_WALL_MS
3435
+ },
3436
+ plan: planPreRollBurst({
3437
+ spanMs: this.preRollMaxFrames * preRollCadenceMs,
3438
+ detectionFps: 1e3 / preRollCadenceMs,
3439
+ maxFrames: this.preRollMaxFrames
3440
+ }),
3441
+ startedAtWall: now
3442
+ });
3443
+ }
3299
3444
  }
3300
3445
  return mediaWallClockOf(this.mediaClock.anchor, ptsMs, now);
3301
3446
  }
@@ -18,7 +18,7 @@ var e = {
18
18
  },
19
19
  "@camstack/types": {
20
20
  name: "@camstack/types",
21
- version: "1.2.194",
21
+ version: "1.2.195",
22
22
  scope: ["default"],
23
23
  loaded: !1,
24
24
  from: "addon_stream_broker_widgets",
@@ -33,7 +33,7 @@ var e = {
33
33
  },
34
34
  "@camstack/ui-library": {
35
35
  name: "@camstack/ui-library",
36
- version: "1.2.159",
36
+ version: "1.2.160",
37
37
  scope: ["default"],
38
38
  loaded: !1,
39
39
  from: "addon_stream_broker_widgets",
@@ -1,4 +1,4 @@
1
- const require_segment_demux_js = require("../segment-demux-js-BAD7i9RI.js");
1
+ const require_segment_demux_js = require("../segment-demux-js-BiLMVPQy.js");
2
2
  let node_worker_threads = require("node:worker_threads");
3
3
  //#region src/stream-broker/recorded/demux-worker-child.ts
4
4
  /**
@@ -1,4 +1,4 @@
1
- import { t as demuxSegmentFullJs } from "../segment-demux-js-CVZACSOh.mjs";
1
+ import { t as demuxSegmentFullJs } from "../segment-demux-js-BB9vb34n.mjs";
2
2
  import { parentPort } from "node:worker_threads";
3
3
  //#region src/stream-broker/recorded/demux-worker-child.ts
4
4
  /**
@@ -36,7 +36,7 @@ async function r() {
36
36
  }
37
37
  },
38
38
  "@camstack/types": {
39
- version: "1.2.194",
39
+ version: "1.2.195",
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.159",
84
+ version: "1.2.160",
85
85
  scope: "default",
86
86
  shareConfig: {
87
87
  singleton: !0,
@@ -3,12 +3,12 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  const require_chunk = require("../chunk-emK7D4bc.js");
6
- const require_dist = require("../dist-NX0e_oWp.js");
7
- const require_node = require("../node-BgM4n8D4.js");
6
+ const require_dist = require("../dist-B9P1Ya2y.js");
7
+ const require_node = require("../node-CLBXrI84.js");
8
8
  const require_restream_intent = require("../restream-intent-C4adO0P8.js");
9
9
  const require_remote_restream = require("../remote-restream-CO36Sr30.js");
10
10
  const require_retire_root_keys = require("../retire-root-keys-Csb8z2f3.js");
11
- const require_segment_demux_js = require("../segment-demux-js-BAD7i9RI.js");
11
+ const require_segment_demux_js = require("../segment-demux-js-BiLMVPQy.js");
12
12
  let node_os = require("node:os");
13
13
  node_os = require_chunk.__toESM(node_os);
14
14
  let node_crypto = require("node:crypto");
@@ -1,10 +1,10 @@
1
1
  import { r as __toESM } from "../chunk-DnnnRqeS.mjs";
2
- import { A as RingBuffer, Bt as AUDIO_PRESETS, Ct as rankStreams, E as RATE_CONTROL_TIGHT, Ft as streamBrokerCapability, Gt as BOOT_RECOVERY_BACKOFF_MS, Ht as buildFfmpegArgs$1, I as batteryCapability, J as egressTranscodeSharingKey, Jt as DeviceFeature, Kt as BaseAddon, L as cameraStreamsCapability, M as addonWidgetsSourceCapability, Ot as resolveEgressDecodeHwAccel, Qt as expandAudioChunkToF32le, R as createHwAccelCache, Rt as webrtcSessionCapability, T as RATE_CONTROL_RELAXED, Ut as invocationFromEncodeProfile, V as declareLogChannel, W as deriveBatteryPresence, Wt as isSoftwareDecode, Y as egressTransportFromRequest, Yt as DeviceType, Zt as createEvent, _n as record, an as parseProfileBrokerId, bn as EventCategory, cn as _enum, dn as discriminatedUnion, en as isEvent, h as EncodeProfileSchema, hn as object, i as BatteryStatusSchema, ln as array, lt as maskUrlCredentials, mn as number, nn as makeSourceBrokerId, ot as loadContributionCapability, pn as literal, qt as CAM_PROFILE_ORDER, rn as nodePin, st as logChannelsCapability, tn as makeProfileBrokerId, un as boolean, v as G711_SCALE_CORRECTION_DB, vn as string, yn as union, z as createLogChannelsProvider, zt as errMsg } from "../dist-But4XMDJ.mjs";
3
- import { i as NO_COST_CLAIM, n as Fmp4FragmentChild, r as Fmp4FragmentPlane, t as ChildCostRegistry } from "../node-BHxRrsoX.mjs";
2
+ import { A as RingBuffer, B as declareLogChannel, Bt as buildFfmpegArgs$1, E as RATE_CONTROL_TIGHT, Et as resolveEgressDecodeHwAccel, Gt as CAM_PROFILE_ORDER, H as deriveBatteryPresence, Ht as isSoftwareDecode, I as batteryCapability, It as webrtcSessionCapability, K as egressTranscodeSharingKey, Kt as DeviceFeature, L as cameraStreamsCapability, Lt as errMsg, M as addonWidgetsSourceCapability, Nt as streamBrokerCapability, Qt as expandAudioChunkToF32le, R as createHwAccelCache, Rt as AUDIO_PRESETS, T as RATE_CONTROL_RELAXED, Ut as BOOT_RECOVERY_BACKOFF_MS, Vt as invocationFromEncodeProfile, Wt as BaseAddon, Yt as createEvent, _n as record, an as parseProfileBrokerId, at as logChannelsCapability, bn as EventCategory, cn as _enum, dn as discriminatedUnion, en as isEvent, h as EncodeProfileSchema, hn as object, i as BatteryStatusSchema, it as loadContributionCapability, ln as array, mn as number, nn as makeSourceBrokerId, pn as literal, q as egressTransportFromRequest, qt as DeviceType, rn as nodePin, st as maskUrlCredentials, tn as makeProfileBrokerId, un as boolean, v as G711_SCALE_CORRECTION_DB, vn as string, xt as rankStreams, yn as union, z as createLogChannelsProvider } from "../dist-DIsGbdn1.mjs";
3
+ import { i as NO_COST_CLAIM, n as Fmp4FragmentChild, r as Fmp4FragmentPlane, t as ChildCostRegistry } from "../node-CiInWOoF.mjs";
4
4
  import { c as PREBUFFER_MAX_MS, d as resolvePrebuffer, i as parseRestreamPath, l as capPreRollRequestMs, n as NO_DECLARATION, u as prebufferRetentionMs } from "../restream-intent-MeJhGCK9.mjs";
5
5
  import { n as profileForStreamId } from "../remote-restream-BeHi78PZ.mjs";
6
6
  import { n as RowMapStore, t as retireRootKeys } from "../retire-root-keys-DZvlso2l.mjs";
7
- import { i as require_mp4box_all, n as demuxSegmentPreferJs, r as runFfmpegOnce, t as demuxSegmentFullJs } from "../segment-demux-js-CVZACSOh.mjs";
7
+ import { i as require_mp4box_all, n as demuxSegmentPreferJs, r as runFfmpegOnce, t as demuxSegmentFullJs } from "../segment-demux-js-BB9vb34n.mjs";
8
8
  import { createRequire } from "node:module";
9
9
  import * as os from "node:os";
10
10
  import { networkInterfaces, tmpdir } from "node:os";
@@ -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_stream_broker_widgets-DXlbqJea.mjs")).catch((e) => {
33
+ return l ||= d(() => import("./_virtual_mf-localSharedImportMap___mfe_internal__addon_stream_broker_widgets-Bi1AlQGX.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",
3
- "version": "1.2.238",
3
+ "version": "1.2.240",
4
4
  "description": "Pipeline bundle — runner, detection, motion, audio + stream broker. Multi-entry npm package shipping pipeline addons under a single bundle.",
5
5
  "keywords": [
6
6
  "camstack",