@camstack/addon-pipeline 1.2.67 → 1.2.68

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 (24) hide show
  1. package/dist/audio-analyzer/index.js +1 -1
  2. package/dist/audio-analyzer/index.mjs +1 -1
  3. package/dist/detection-pipeline/index.js +2 -2
  4. package/dist/detection-pipeline/index.mjs +2 -2
  5. package/dist/{dist-B6GWr9am.js → dist-Bv9CqUAF.js} +9 -9
  6. package/dist/{dist-BEbyhqoG.mjs → dist-CwUPxdAB.mjs} +9 -9
  7. package/dist/{event-loop-stall-monitor-BHOEgVnP.js → event-loop-stall-monitor-Bz3lx_aY.js} +1 -1
  8. package/dist/{event-loop-stall-monitor-BNyf5yEt.mjs → event-loop-stall-monitor-D2dL-_bE.mjs} +1 -1
  9. package/dist/motion-wasm/index.js +1 -1
  10. package/dist/motion-wasm/index.mjs +1 -1
  11. package/dist/pipeline-runner/index.js +3 -3
  12. package/dist/pipeline-runner/index.mjs +3 -3
  13. package/dist/recorder/index.js +8 -8
  14. package/dist/recorder/index.mjs +8 -8
  15. package/dist/session-decode/decode-worker-child.js +1 -1
  16. package/dist/session-decode/decode-worker-child.mjs +1 -1
  17. package/dist/stream-broker/{_virtual_mf-localSharedImportMap___mfe_internal__addon_stream_broker_widgets-BkKnIpb0.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_stream_broker_widgets-Cl4eU4eN.mjs} +1 -1
  18. package/dist/stream-broker/{hostInit-y3zWHWoe.mjs → hostInit-_NJ0GBOO.mjs} +1 -1
  19. package/dist/stream-broker/index.js +1 -1
  20. package/dist/stream-broker/index.mjs +1 -1
  21. package/dist/stream-broker/remoteEntry.js +1 -1
  22. package/dist/{worker-protocol-CBg9bqCs.mjs → worker-protocol-0uQE5Lfd.mjs} +1 -1
  23. package/dist/{worker-protocol-qzaozj7t.js → worker-protocol-D8M43suz.js} +1 -1
  24. package/package.json +2 -2
@@ -3,7 +3,7 @@ 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-B6GWr9am.js");
6
+ const require_dist = require("../dist-Bv9CqUAF.js");
7
7
  const require_node_topology_platform = require("../node-topology-platform-CFZ7F4xW.js");
8
8
  const require_addon_utils = require("../addon-utils-CQs-AjTJ.js");
9
9
  let node_fs = require("node:fs");
@@ -1,5 +1,5 @@
1
1
  import { n as __require } from "../chunk-DnnnRqeS.mjs";
2
- import { B as mapAudioLabelToMacro, E as audioAnalyzerCapability, T as audioAnalysisCapability, ft as hydrateSchema, m as HF_BASE_URL, n as AUDIO_BACKEND_CHOICES, o as DEFAULT_AUDIO_ANALYZER_CONFIG, st as BaseAddon, tt as errMsg } from "../dist-BEbyhqoG.mjs";
2
+ import { B as mapAudioLabelToMacro, E as audioAnalyzerCapability, T as audioAnalysisCapability, ft as hydrateSchema, m as HF_BASE_URL, n as AUDIO_BACKEND_CHOICES, o as DEFAULT_AUDIO_ANALYZER_CONFIG, st as BaseAddon, tt as errMsg } from "../dist-CwUPxdAB.mjs";
3
3
  import { t as pickNodePlatformArch } from "../node-topology-platform-BkR_k6WT.mjs";
4
4
  import { i as downloadFile } from "../addon-utils-CZ2xo67g.mjs";
5
5
  import * as fs from "node:fs";
@@ -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-B6GWr9am.js");
7
- const require_event_loop_stall_monitor = require("../event-loop-stall-monitor-BHOEgVnP.js");
6
+ const require_dist = require("../dist-Bv9CqUAF.js");
7
+ const require_event_loop_stall_monitor = require("../event-loop-stall-monitor-Bz3lx_aY.js");
8
8
  const require_lazy_sharp = require("../lazy-sharp-CcYuXtsa.js");
9
9
  const require_node_topology_platform = require("../node-topology-platform-CFZ7F4xW.js");
10
10
  const require_addon_utils = require("../addon-utils-CQs-AjTJ.js");
@@ -1,6 +1,6 @@
1
1
  import { n as __require } from "../chunk-DnnnRqeS.mjs";
2
- import { $ as supportedRuntimes$1, A as defaultDeviceFor$1, At as string, C as YAMNET_TO_MACRO, G as pipelineExecutorCapability, L as enumerateInferenceDevices, Mt as EventCategory, Ot as object, P as detectionPipelineCapability, R as evaluateZoneRules, St as array, X as runtimeDevices$1, _t as parseJsonUnknown, bt as sleep, dt as createEvent, ft as hydrateSchema, gt as nodePin, jt as union, st as BaseAddon, t as APPLE_SA_TO_MACRO, tt as errMsg, u as DEVICE_BACKEND_TO_FORMAT } from "../dist-BEbyhqoG.mjs";
3
- import { a as getDefaultModelForFormat, c as getStepDefinition, i as ALL_STEPS, l as resolveModelForFormat, n as startEventLoopStallMonitor, o as getDefaultModelForFormatFromDef, r as ALL_PIPELINE_STEPS, s as getStep } from "../event-loop-stall-monitor-BNyf5yEt.mjs";
2
+ import { $ as supportedRuntimes$1, A as defaultDeviceFor$1, At as string, C as YAMNET_TO_MACRO, G as pipelineExecutorCapability, L as enumerateInferenceDevices, Mt as EventCategory, Ot as object, P as detectionPipelineCapability, R as evaluateZoneRules, St as array, X as runtimeDevices$1, _t as parseJsonUnknown, bt as sleep, dt as createEvent, ft as hydrateSchema, gt as nodePin, jt as union, st as BaseAddon, t as APPLE_SA_TO_MACRO, tt as errMsg, u as DEVICE_BACKEND_TO_FORMAT } from "../dist-CwUPxdAB.mjs";
3
+ import { a as getDefaultModelForFormat, c as getStepDefinition, i as ALL_STEPS, l as resolveModelForFormat, n as startEventLoopStallMonitor, o as getDefaultModelForFormatFromDef, r as ALL_PIPELINE_STEPS, s as getStep } from "../event-loop-stall-monitor-D2dL-_bE.mjs";
4
4
  import { t as getSharp } from "../lazy-sharp-B-mb8uWx.mjs";
5
5
  import { t as pickNodePlatformArch } from "../node-topology-platform-BkR_k6WT.mjs";
6
6
  import { a as ensureModel, o as isModelDownloaded, r as deleteModelFromDisk } from "../addon-utils-CZ2xo67g.mjs";
@@ -25482,7 +25482,7 @@ var recordingCapability = {
25482
25482
  }
25483
25483
  };
25484
25484
  /**
25485
- * `recordingExport` cap — render a footage time range into a single downloadable
25485
+ * `recording-export` cap — render a footage time range into a single downloadable
25486
25486
  * MP4 (regular / accelerated / decelerated / timelapse, ± audio), kept for a
25487
25487
  * bounded lifetime with a durable history, auto-expiry, and optional
25488
25488
  * delete-after-download.
@@ -25623,7 +25623,7 @@ var ExportBytesSchema = object({
25623
25623
  bytes: number().int().nonnegative()
25624
25624
  });
25625
25625
  var recordingExportCapability = {
25626
- name: "recordingExport",
25626
+ name: "recording-export",
25627
25627
  scope: "system",
25628
25628
  mode: "singleton",
25629
25629
  methods: {
@@ -31005,43 +31005,43 @@ Object.freeze({
31005
31005
  access: "create"
31006
31006
  },
31007
31007
  "recordingExport.cancelExport": {
31008
- capName: "recordingExport",
31008
+ capName: "recording-export",
31009
31009
  capScope: "system",
31010
31010
  addonId: null,
31011
31011
  access: "create"
31012
31012
  },
31013
31013
  "recordingExport.createExport": {
31014
- capName: "recordingExport",
31014
+ capName: "recording-export",
31015
31015
  capScope: "system",
31016
31016
  addonId: null,
31017
31017
  access: "create"
31018
31018
  },
31019
31019
  "recordingExport.deleteExport": {
31020
- capName: "recordingExport",
31020
+ capName: "recording-export",
31021
31021
  capScope: "system",
31022
31022
  addonId: null,
31023
31023
  access: "delete"
31024
31024
  },
31025
31025
  "recordingExport.getDownloadUrl": {
31026
- capName: "recordingExport",
31026
+ capName: "recording-export",
31027
31027
  capScope: "system",
31028
31028
  addonId: null,
31029
31029
  access: "view"
31030
31030
  },
31031
31031
  "recordingExport.getExport": {
31032
- capName: "recordingExport",
31032
+ capName: "recording-export",
31033
31033
  capScope: "system",
31034
31034
  addonId: null,
31035
31035
  access: "view"
31036
31036
  },
31037
31037
  "recordingExport.listExports": {
31038
- capName: "recordingExport",
31038
+ capName: "recording-export",
31039
31039
  capScope: "system",
31040
31040
  addonId: null,
31041
31041
  access: "view"
31042
31042
  },
31043
31043
  "recordingExport.readExportBytes": {
31044
- capName: "recordingExport",
31044
+ capName: "recording-export",
31045
31045
  capScope: "system",
31046
31046
  addonId: null,
31047
31047
  access: "view"
@@ -25482,7 +25482,7 @@ var recordingCapability = {
25482
25482
  }
25483
25483
  };
25484
25484
  /**
25485
- * `recordingExport` cap — render a footage time range into a single downloadable
25485
+ * `recording-export` cap — render a footage time range into a single downloadable
25486
25486
  * MP4 (regular / accelerated / decelerated / timelapse, ± audio), kept for a
25487
25487
  * bounded lifetime with a durable history, auto-expiry, and optional
25488
25488
  * delete-after-download.
@@ -25623,7 +25623,7 @@ var ExportBytesSchema = object({
25623
25623
  bytes: number().int().nonnegative()
25624
25624
  });
25625
25625
  var recordingExportCapability = {
25626
- name: "recordingExport",
25626
+ name: "recording-export",
25627
25627
  scope: "system",
25628
25628
  mode: "singleton",
25629
25629
  methods: {
@@ -31005,43 +31005,43 @@ Object.freeze({
31005
31005
  access: "create"
31006
31006
  },
31007
31007
  "recordingExport.cancelExport": {
31008
- capName: "recordingExport",
31008
+ capName: "recording-export",
31009
31009
  capScope: "system",
31010
31010
  addonId: null,
31011
31011
  access: "create"
31012
31012
  },
31013
31013
  "recordingExport.createExport": {
31014
- capName: "recordingExport",
31014
+ capName: "recording-export",
31015
31015
  capScope: "system",
31016
31016
  addonId: null,
31017
31017
  access: "create"
31018
31018
  },
31019
31019
  "recordingExport.deleteExport": {
31020
- capName: "recordingExport",
31020
+ capName: "recording-export",
31021
31021
  capScope: "system",
31022
31022
  addonId: null,
31023
31023
  access: "delete"
31024
31024
  },
31025
31025
  "recordingExport.getDownloadUrl": {
31026
- capName: "recordingExport",
31026
+ capName: "recording-export",
31027
31027
  capScope: "system",
31028
31028
  addonId: null,
31029
31029
  access: "view"
31030
31030
  },
31031
31031
  "recordingExport.getExport": {
31032
- capName: "recordingExport",
31032
+ capName: "recording-export",
31033
31033
  capScope: "system",
31034
31034
  addonId: null,
31035
31035
  access: "view"
31036
31036
  },
31037
31037
  "recordingExport.listExports": {
31038
- capName: "recordingExport",
31038
+ capName: "recording-export",
31039
31039
  capScope: "system",
31040
31040
  addonId: null,
31041
31041
  access: "view"
31042
31042
  },
31043
31043
  "recordingExport.readExportBytes": {
31044
- capName: "recordingExport",
31044
+ capName: "recording-export",
31045
31045
  capScope: "system",
31046
31046
  addonId: null,
31047
31047
  access: "view"
@@ -1,4 +1,4 @@
1
- const require_dist = require("./dist-B6GWr9am.js");
1
+ const require_dist = require("./dist-Bv9CqUAF.js");
2
2
  let node_perf_hooks = require("node:perf_hooks");
3
3
  //#region src/detection-pipeline/registry/model-catalogs.ts
4
4
  var HF_REPO = "camstack/camstack-models";
@@ -1,4 +1,4 @@
1
- import { a as COCO_TO_MACRO, i as COCO_80_LABELS, r as AUDIO_MACRO_LABELS, z as hfModelUrl } from "./dist-BEbyhqoG.mjs";
1
+ import { a as COCO_TO_MACRO, i as COCO_80_LABELS, r as AUDIO_MACRO_LABELS, z as hfModelUrl } from "./dist-CwUPxdAB.mjs";
2
2
  import { PerformanceObserver } from "node:perf_hooks";
3
3
  //#region src/detection-pipeline/registry/model-catalogs.ts
4
4
  var HF_REPO = "camstack/camstack-models";
@@ -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-B6GWr9am.js");
5
+ const require_dist = require("../dist-Bv9CqUAF.js");
6
6
  const require_lazy_sharp = require("../lazy-sharp-CcYuXtsa.js");
7
7
  let node_fs = require("node:fs");
8
8
  let node_path = require("node:path");
@@ -1,4 +1,4 @@
1
- import { H as motionDetectionCapability, R as evaluateZoneRules, ft as hydrateSchema, st as BaseAddon, ut as DeviceType } from "../dist-BEbyhqoG.mjs";
1
+ import { H as motionDetectionCapability, R as evaluateZoneRules, ft as hydrateSchema, st as BaseAddon, ut as DeviceType } from "../dist-CwUPxdAB.mjs";
2
2
  import { t as getSharp } from "../lazy-sharp-B-mb8uWx.mjs";
3
3
  import { readFileSync } from "node:fs";
4
4
  import { join } 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-B6GWr9am.js");
7
- const require_event_loop_stall_monitor = require("../event-loop-stall-monitor-BHOEgVnP.js");
8
- const require_worker_protocol = require("../worker-protocol-qzaozj7t.js");
6
+ const require_dist = require("../dist-Bv9CqUAF.js");
7
+ const require_event_loop_stall_monitor = require("../event-loop-stall-monitor-Bz3lx_aY.js");
8
+ const require_worker_protocol = require("../worker-protocol-D8M43suz.js");
9
9
  const require_hub_hostname = require("../hub-hostname-DAJXlOgV.js");
10
10
  const require_lazy_sharp = require("../lazy-sharp-CcYuXtsa.js");
11
11
  const require_remote_restream = require("../remote-restream-BYbAsgUf.js");
@@ -1,6 +1,6 @@
1
- import { At as string, Ct as boolean, Dt as number, Et as literal, K as pipelineRunnerCapability, M as deriveDetailCropRect, Mt as EventCategory, Ot as object, St as array, Tt as lazy, U as pickDetailCropConvention, W as pickNativeLeaseOverride, dt as createEvent, gt as nodePin, j as defineCustomActions, k as customAction, s as DEFAULT_DETAIL_CROP_CONVENTION, st as BaseAddon, tt as errMsg, u as DEVICE_BACKEND_TO_FORMAT, xt as _enum } from "../dist-BEbyhqoG.mjs";
2
- import { c as getStepDefinition, t as attributeStall } from "../event-loop-stall-monitor-BNyf5yEt.mjs";
3
- import { a as nativeLeaseSettingEnv, t as isWorkerReply } from "../worker-protocol-CBg9bqCs.mjs";
1
+ import { At as string, Ct as boolean, Dt as number, Et as literal, K as pipelineRunnerCapability, M as deriveDetailCropRect, Mt as EventCategory, Ot as object, St as array, Tt as lazy, U as pickDetailCropConvention, W as pickNativeLeaseOverride, dt as createEvent, gt as nodePin, j as defineCustomActions, k as customAction, s as DEFAULT_DETAIL_CROP_CONVENTION, st as BaseAddon, tt as errMsg, u as DEVICE_BACKEND_TO_FORMAT, xt as _enum } from "../dist-CwUPxdAB.mjs";
2
+ import { c as getStepDefinition, t as attributeStall } from "../event-loop-stall-monitor-D2dL-_bE.mjs";
3
+ import { a as nativeLeaseSettingEnv, t as isWorkerReply } from "../worker-protocol-0uQE5Lfd.mjs";
4
4
  import { t as resolveHubHostname } from "../hub-hostname-cCknRYKj.mjs";
5
5
  import { t as getSharp } from "../lazy-sharp-B-mb8uWx.mjs";
6
6
  import { i as withDetectionIntent, n as profileForStreamId, t as isRemoteRestream } from "../remote-restream-Ci7RXNGb.mjs";
@@ -1,5 +1,5 @@
1
1
  const require_chunk = require("../chunk-emK7D4bc.js");
2
- const require_dist = require("../dist-B6GWr9am.js");
2
+ const require_dist = require("../dist-Bv9CqUAF.js");
3
3
  const require_hub_hostname = require("../hub-hostname-DAJXlOgV.js");
4
4
  const require_addon_utils = require("../addon-utils-CQs-AjTJ.js");
5
5
  let node_crypto = require("node:crypto");
@@ -3320,15 +3320,15 @@ function hasFootage(index, deviceId, profile, fromMs, toMs) {
3320
3320
  /** Load a record or throw a clear NOT_FOUND-style error. */
3321
3321
  async function requireRecord(state, exportId) {
3322
3322
  const rec = await getExportRecord(state, exportId);
3323
- if (!rec) throw new Error(`recordingExport: unknown export "${exportId}"`);
3323
+ if (!rec) throw new Error(`recording-export: unknown export "${exportId}"`);
3324
3324
  return rec;
3325
3325
  }
3326
3326
  /** Build the `recordingExport` provider over the injected deps. */
3327
3327
  function buildRecordingExportProvider(deps) {
3328
3328
  return {
3329
3329
  createExport: async ({ deviceId, profile, fromMs, toMs, options }) => {
3330
- if (!(fromMs < toMs)) throw new Error(`recordingExport: invalid range ${fromMs}..${toMs}`);
3331
- if (!hasFootage(deps.index, deviceId, profile, fromMs, toMs)) throw new Error(`recordingExport: no footage for ${deviceId}/${profile} in ${fromMs}..${toMs}`);
3330
+ if (!(fromMs < toMs)) throw new Error(`recording-export: invalid range ${fromMs}..${toMs}`);
3331
+ if (!hasFootage(deps.index, deviceId, profile, fromMs, toMs)) throw new Error(`recording-export: no footage for ${deviceId}/${profile} in ${fromMs}..${toMs}`);
3332
3332
  const now = deps.now();
3333
3333
  const record = {
3334
3334
  id: deps.newId(),
@@ -3385,7 +3385,7 @@ function buildRecordingExportProvider(deps) {
3385
3385
  state: rec.state
3386
3386
  }
3387
3387
  });
3388
- throw new Error(`recordingExport: export "${exportId}" is not ready (${rec.state})`);
3388
+ throw new Error(`recording-export: export "${exportId}" is not ready (${rec.state})`);
3389
3389
  }
3390
3390
  if (deps.now() >= rec.expiresAt) {
3391
3391
  deps.logger.warn("export byte read refused: export has expired", {
@@ -3395,7 +3395,7 @@ function buildRecordingExportProvider(deps) {
3395
3395
  expiresAt: rec.expiresAt
3396
3396
  }
3397
3397
  });
3398
- throw new Error(`recordingExport: export "${exportId}" has expired`);
3398
+ throw new Error(`recording-export: export "${exportId}" has expired`);
3399
3399
  }
3400
3400
  const file = deps.outPath(rec);
3401
3401
  let size;
@@ -3409,7 +3409,7 @@ function buildRecordingExportProvider(deps) {
3409
3409
  error: String(err)
3410
3410
  }
3411
3411
  });
3412
- throw new Error(`recordingExport: export "${exportId}" has no file on disk`, { cause: err });
3412
+ throw new Error(`recording-export: export "${exportId}" has no file on disk`, { cause: err });
3413
3413
  }
3414
3414
  if (size > 52428800) {
3415
3415
  deps.logger.warn("export byte read refused: file is too large to inline", {
@@ -3420,7 +3420,7 @@ function buildRecordingExportProvider(deps) {
3420
3420
  maxBytes: require_dist.RECORDING_EXPORT_MAX_READ_BYTES
3421
3421
  }
3422
3422
  });
3423
- throw new Error(`recordingExport: export "${exportId}" is too large to read inline (${size} > ${require_dist.RECORDING_EXPORT_MAX_READ_BYTES} bytes)`);
3423
+ throw new Error(`recording-export: export "${exportId}" is too large to read inline (${size} > ${require_dist.RECORDING_EXPORT_MAX_READ_BYTES} bytes)`);
3424
3424
  }
3425
3425
  const bytes = await deps.readFile(file);
3426
3426
  return {
@@ -1,4 +1,4 @@
1
- import { At as string, J as recordingExportCapability, Mt as EventCategory, N as deriveRecordingMode, St as array, Z as storageEvictableCapability, _ as OpsLogEntrySchema, b as RECORDING_EXPORT_MAX_READ_BYTES, c as DEFAULT_EVENTS_BAND_BUFFER_SEC, d as EVENT_PAD_MS, ft as hydrateSchema, gt as nodePin, kt as record, p as ExportRecordSchema, q as recordingCapability, st as BaseAddon, tt as errMsg, ut as DeviceType, x as RecordingConfigSchema, yt as selectAssignedProfileSlots } from "../dist-BEbyhqoG.mjs";
1
+ import { At as string, J as recordingExportCapability, Mt as EventCategory, N as deriveRecordingMode, St as array, Z as storageEvictableCapability, _ as OpsLogEntrySchema, b as RECORDING_EXPORT_MAX_READ_BYTES, c as DEFAULT_EVENTS_BAND_BUFFER_SEC, d as EVENT_PAD_MS, ft as hydrateSchema, gt as nodePin, kt as record, p as ExportRecordSchema, q as recordingCapability, st as BaseAddon, tt as errMsg, ut as DeviceType, x as RecordingConfigSchema, yt as selectAssignedProfileSlots } from "../dist-CwUPxdAB.mjs";
2
2
  import { t as resolveHubHostname } from "../hub-hostname-cCknRYKj.mjs";
3
3
  import { n as createFileDataPlaneHandler, s as parseRangeHeader, t as contentTypeFor } from "../addon-utils-CZ2xo67g.mjs";
4
4
  import { randomUUID } from "node:crypto";
@@ -3318,15 +3318,15 @@ function hasFootage(index, deviceId, profile, fromMs, toMs) {
3318
3318
  /** Load a record or throw a clear NOT_FOUND-style error. */
3319
3319
  async function requireRecord(state, exportId) {
3320
3320
  const rec = await getExportRecord(state, exportId);
3321
- if (!rec) throw new Error(`recordingExport: unknown export "${exportId}"`);
3321
+ if (!rec) throw new Error(`recording-export: unknown export "${exportId}"`);
3322
3322
  return rec;
3323
3323
  }
3324
3324
  /** Build the `recordingExport` provider over the injected deps. */
3325
3325
  function buildRecordingExportProvider(deps) {
3326
3326
  return {
3327
3327
  createExport: async ({ deviceId, profile, fromMs, toMs, options }) => {
3328
- if (!(fromMs < toMs)) throw new Error(`recordingExport: invalid range ${fromMs}..${toMs}`);
3329
- if (!hasFootage(deps.index, deviceId, profile, fromMs, toMs)) throw new Error(`recordingExport: no footage for ${deviceId}/${profile} in ${fromMs}..${toMs}`);
3328
+ if (!(fromMs < toMs)) throw new Error(`recording-export: invalid range ${fromMs}..${toMs}`);
3329
+ if (!hasFootage(deps.index, deviceId, profile, fromMs, toMs)) throw new Error(`recording-export: no footage for ${deviceId}/${profile} in ${fromMs}..${toMs}`);
3330
3330
  const now = deps.now();
3331
3331
  const record = {
3332
3332
  id: deps.newId(),
@@ -3383,7 +3383,7 @@ function buildRecordingExportProvider(deps) {
3383
3383
  state: rec.state
3384
3384
  }
3385
3385
  });
3386
- throw new Error(`recordingExport: export "${exportId}" is not ready (${rec.state})`);
3386
+ throw new Error(`recording-export: export "${exportId}" is not ready (${rec.state})`);
3387
3387
  }
3388
3388
  if (deps.now() >= rec.expiresAt) {
3389
3389
  deps.logger.warn("export byte read refused: export has expired", {
@@ -3393,7 +3393,7 @@ function buildRecordingExportProvider(deps) {
3393
3393
  expiresAt: rec.expiresAt
3394
3394
  }
3395
3395
  });
3396
- throw new Error(`recordingExport: export "${exportId}" has expired`);
3396
+ throw new Error(`recording-export: export "${exportId}" has expired`);
3397
3397
  }
3398
3398
  const file = deps.outPath(rec);
3399
3399
  let size;
@@ -3407,7 +3407,7 @@ function buildRecordingExportProvider(deps) {
3407
3407
  error: String(err)
3408
3408
  }
3409
3409
  });
3410
- throw new Error(`recordingExport: export "${exportId}" has no file on disk`, { cause: err });
3410
+ throw new Error(`recording-export: export "${exportId}" has no file on disk`, { cause: err });
3411
3411
  }
3412
3412
  if (size > 52428800) {
3413
3413
  deps.logger.warn("export byte read refused: file is too large to inline", {
@@ -3418,7 +3418,7 @@ function buildRecordingExportProvider(deps) {
3418
3418
  maxBytes: RECORDING_EXPORT_MAX_READ_BYTES
3419
3419
  }
3420
3420
  });
3421
- throw new Error(`recordingExport: export "${exportId}" is too large to read inline (${size} > ${RECORDING_EXPORT_MAX_READ_BYTES} bytes)`);
3421
+ throw new Error(`recording-export: export "${exportId}" is too large to read inline (${size} > ${RECORDING_EXPORT_MAX_READ_BYTES} bytes)`);
3422
3422
  }
3423
3423
  const bytes = await deps.readFile(file);
3424
3424
  return {
@@ -1,6 +1,6 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_chunk = require("../chunk-emK7D4bc.js");
3
- const require_worker_protocol = require("../worker-protocol-qzaozj7t.js");
3
+ const require_worker_protocol = require("../worker-protocol-D8M43suz.js");
4
4
  let node_url = require("node:url");
5
5
  let node_fs = require("node:fs");
6
6
  node_fs = require_chunk.__toESM(node_fs);
@@ -1,4 +1,4 @@
1
- import { i as formatNativeLeaseKnobs, n as isWorkerRequest, o as resolveNativeLeaseKnobs, r as logLevelForLine } from "../worker-protocol-CBg9bqCs.mjs";
1
+ import { i as formatNativeLeaseKnobs, n as isWorkerRequest, o as resolveNativeLeaseKnobs, r as logLevelForLine } from "../worker-protocol-0uQE5Lfd.mjs";
2
2
  import { pathToFileURL } from "node:url";
3
3
  import * as fs from "node:fs";
4
4
  import * as path$1 from "node:path";
@@ -18,7 +18,7 @@ var e = {
18
18
  },
19
19
  "@camstack/types": {
20
20
  name: "@camstack/types",
21
- version: "1.2.61",
21
+ version: "1.2.62",
22
22
  scope: ["default"],
23
23
  loaded: !1,
24
24
  from: "addon_stream_broker_widgets",
@@ -36,7 +36,7 @@ async function r() {
36
36
  }
37
37
  },
38
38
  "@camstack/types": {
39
- version: "1.2.61",
39
+ version: "1.2.62",
40
40
  scope: "default",
41
41
  shareConfig: {
42
42
  singleton: !0,
@@ -3,7 +3,7 @@ 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-B6GWr9am.js");
6
+ const require_dist = require("../dist-Bv9CqUAF.js");
7
7
  const require_remote_restream = require("../remote-restream-BYbAsgUf.js");
8
8
  let node_crypto = require("node:crypto");
9
9
  node_crypto = require_chunk.__toESM(node_crypto, 1);
@@ -1,5 +1,5 @@
1
1
  import { r as __toESM, t as __commonJSMin } from "../chunk-DnnnRqeS.mjs";
2
- import { At as string, Ct as boolean, D as cameraStreamsCapability, Dt as number, Et as literal, F as egressTranscodeSharingKey, I as egressTransportFromRequest, Mt as EventCategory, O as createHwAccelCache, Ot as object, Q as streamBrokerCapability, S as RingBuffer, St as array, V as maskUrlCredentials, Y as resolveEgressDecodeHwAccel, at as invocationFromEncodeProfile, ct as CAM_PROFILE_ORDER, dt as createEvent, et as webrtcSessionCapability, f as EncodeProfileSchema, gt as nodePin, ht as makeSourceBrokerId, it as buildFfmpegArgs$1, jt as union, kt as record, lt as DeviceFeature, mt as makeProfileBrokerId, nt as AUDIO_PRESETS, ot as isSoftwareDecode, pt as isEvent, rt as Fmp4BoxSplitter, st as BaseAddon, tt as errMsg, ut as DeviceType, v as RATE_CONTROL_RELAXED, vt as parseProfileBrokerId, w as addonWidgetsSourceCapability, wt as discriminatedUnion, xt as _enum, y as RATE_CONTROL_TIGHT } from "../dist-BEbyhqoG.mjs";
2
+ import { At as string, Ct as boolean, D as cameraStreamsCapability, Dt as number, Et as literal, F as egressTranscodeSharingKey, I as egressTransportFromRequest, Mt as EventCategory, O as createHwAccelCache, Ot as object, Q as streamBrokerCapability, S as RingBuffer, St as array, V as maskUrlCredentials, Y as resolveEgressDecodeHwAccel, at as invocationFromEncodeProfile, ct as CAM_PROFILE_ORDER, dt as createEvent, et as webrtcSessionCapability, f as EncodeProfileSchema, gt as nodePin, ht as makeSourceBrokerId, it as buildFfmpegArgs$1, jt as union, kt as record, lt as DeviceFeature, mt as makeProfileBrokerId, nt as AUDIO_PRESETS, ot as isSoftwareDecode, pt as isEvent, rt as Fmp4BoxSplitter, st as BaseAddon, tt as errMsg, ut as DeviceType, v as RATE_CONTROL_RELAXED, vt as parseProfileBrokerId, w as addonWidgetsSourceCapability, wt as discriminatedUnion, xt as _enum, y as RATE_CONTROL_TIGHT } from "../dist-CwUPxdAB.mjs";
3
3
  import { n as profileForStreamId, r as parseRestreamPath } from "../remote-restream-Ci7RXNGb.mjs";
4
4
  import { createRequire } from "node:module";
5
5
  import * as crypto$1 from "node:crypto";
@@ -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-BkKnIpb0.mjs")).catch((e) => {
33
+ return l ||= d(() => import("./_virtual_mf-localSharedImportMap___mfe_internal__addon_stream_broker_widgets-Cl4eU4eN.mjs")).catch((e) => {
34
34
  throw l = void 0, e;
35
35
  }), l;
36
36
  }
@@ -1,4 +1,4 @@
1
- import { g as NativeLeaseSettingsSchema, h as NativeLeaseAdmissionSchema, l as DEFAULT_NATIVE_LEASE_SETTINGS } from "./dist-BEbyhqoG.mjs";
1
+ import { g as NativeLeaseSettingsSchema, h as NativeLeaseAdmissionSchema, l as DEFAULT_NATIVE_LEASE_SETTINGS } from "./dist-CwUPxdAB.mjs";
2
2
  //#region src/session-decode/native-lease-config.ts
3
3
  /**
4
4
  * Resolution of the native-frame lease knobs for one decode worker.
@@ -1,4 +1,4 @@
1
- const require_dist = require("./dist-B6GWr9am.js");
1
+ const require_dist = require("./dist-Bv9CqUAF.js");
2
2
  //#region src/session-decode/native-lease-config.ts
3
3
  /**
4
4
  * Resolution of the native-frame lease knobs for one decode worker.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-pipeline",
3
- "version": "1.2.67",
3
+ "version": "1.2.68",
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",
@@ -205,7 +205,7 @@
205
205
  "optional": true
206
206
  },
207
207
  {
208
- "name": "recordingExport",
208
+ "name": "recording-export",
209
209
  "optional": true
210
210
  },
211
211
  {