@camstack/addon-pipeline 1.2.131 → 1.2.132

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/dist/{addon-utils-DCQ5AP_v.js → addon-utils-DzCn6z7v.js} +1 -1
  2. package/dist/audio-analyzer/index.js +3 -3
  3. package/dist/audio-analyzer/index.mjs +2 -2
  4. package/dist/detection-pipeline/index.js +5 -5
  5. package/dist/detection-pipeline/index.mjs +3 -3
  6. package/dist/{dist-DO0UVhOk.mjs → dist-BZYUUBUx.mjs} +83 -2
  7. package/dist/{dist-CqoMNE1e.js → dist-DBP47QOz.js} +83 -2
  8. package/dist/{event-loop-stall-monitor-eM7_yYfn.js → event-loop-stall-monitor-CiH_MHfO.js} +1 -1
  9. package/dist/{event-loop-stall-monitor-D0Juf7Dn.mjs → event-loop-stall-monitor-IACE22fK.mjs} +1 -1
  10. package/dist/{lazy-sharp-BGrpS8yi.js → lazy-sharp-B_kETjyQ.js} +1 -1
  11. package/dist/motion-wasm/index.js +2 -2
  12. package/dist/motion-wasm/index.mjs +1 -1
  13. package/dist/pipeline-runner/index.js +4 -4
  14. package/dist/pipeline-runner/index.mjs +3 -3
  15. package/dist/{process-memory-Bac3FuG6.mjs → process-memory-C7rsraCR.mjs} +1 -1
  16. package/dist/{process-memory-xAPjvSw9.js → process-memory-CtXQAA3d.js} +1 -1
  17. package/dist/recorder/index.js +233 -15
  18. package/dist/recorder/index.mjs +232 -14
  19. package/dist/{segment-demux-js-skhsAZx6.mjs → segment-demux-js-BL1UDdiI.mjs} +1 -1
  20. package/dist/{segment-demux-js-Cu0oDMUL.js → segment-demux-js-wTzFi5UW.js} +1 -1
  21. package/dist/session-decode/decode-worker-child.js +2 -2
  22. package/dist/session-decode/decode-worker-child.mjs +1 -1
  23. package/dist/stream-broker/_stub.js +2 -2
  24. package/dist/stream-broker/{_virtual_mf-localSharedImportMap___mfe_internal__addon_stream_broker_widgets-DGQkDEYw.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_stream_broker_widgets-DlKJZ-_M.mjs} +3 -3
  25. package/dist/stream-broker/{_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-Bme2OZQp.mjs → _virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-DXKTNEae.mjs} +1 -1
  26. package/dist/stream-broker/{_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-CQKwHIHI.mjs → _virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-BUw_aTfK.mjs} +1 -1
  27. package/dist/stream-broker/demux-worker-child.js +1 -1
  28. package/dist/stream-broker/demux-worker-child.mjs +1 -1
  29. package/dist/stream-broker/{hostInit-D7FwwZgj.mjs → hostInit-kDKgfUjp.mjs} +3 -3
  30. package/dist/stream-broker/index.js +2 -2
  31. package/dist/stream-broker/index.mjs +2 -2
  32. package/dist/stream-broker/remoteEntry.js +1 -1
  33. package/dist/{worker-protocol-G3HXTY8z.js → worker-protocol-C3zaz0Jv.js} +1 -1
  34. package/dist/{worker-protocol-_Ujvj1hl.mjs → worker-protocol-Cut8984B.mjs} +1 -1
  35. package/package.json +1 -1
@@ -1,4 +1,4 @@
1
- const require_dist = require("./dist-CqoMNE1e.js");
1
+ const require_dist = require("./dist-DBP47QOz.js");
2
2
  require("node:crypto");
3
3
  let node_path = require("node:path");
4
4
  node_path = require_dist.__toESM(node_path, 1);
@@ -2,9 +2,9 @@ Object.defineProperties(exports, {
2
2
  __esModule: { value: true },
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
- const require_dist = require("../dist-CqoMNE1e.js");
6
- const require_process_memory = require("../process-memory-xAPjvSw9.js");
7
- const require_addon_utils = require("../addon-utils-DCQ5AP_v.js");
5
+ const require_dist = require("../dist-DBP47QOz.js");
6
+ const require_process_memory = require("../process-memory-CtXQAA3d.js");
7
+ const require_addon_utils = require("../addon-utils-DzCn6z7v.js");
8
8
  let node_path = require("node:path");
9
9
  node_path = require_dist.__toESM(node_path);
10
10
  let node_fs = require("node:fs");
@@ -1,6 +1,6 @@
1
1
  import { n as __require } from "../chunk-DnnnRqeS.mjs";
2
- import { A as audioAnalyzerCapability, Dt as hydrateSchema, J as mapAudioLabelToMacro, St as BaseAddon, _ as HF_BASE_URL, gt as errMsg, k as audioAnalysisCapability, lt as resolvePoolMemoryPolicy, n as AUDIO_BACKEND_CHOICES, s as DEFAULT_AUDIO_ANALYZER_CONFIG, x as PoolMemoryWatchdog } from "../dist-DO0UVhOk.mjs";
3
- import { n as pickNodePlatformArch, t as readProcessMemory } from "../process-memory-Bac3FuG6.mjs";
2
+ import { A as audioAnalyzerCapability, Dt as hydrateSchema, J as mapAudioLabelToMacro, St as BaseAddon, _ as HF_BASE_URL, gt as errMsg, k as audioAnalysisCapability, lt as resolvePoolMemoryPolicy, n as AUDIO_BACKEND_CHOICES, s as DEFAULT_AUDIO_ANALYZER_CONFIG, x as PoolMemoryWatchdog } from "../dist-BZYUUBUx.mjs";
3
+ import { n as pickNodePlatformArch, t as readProcessMemory } from "../process-memory-C7rsraCR.mjs";
4
4
  import { i as downloadFile } from "../addon-utils-CgBCF-mE.mjs";
5
5
  import * as path$1 from "node:path";
6
6
  import * as fs from "node:fs";
@@ -2,11 +2,11 @@ Object.defineProperties(exports, {
2
2
  __esModule: { value: true },
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
- const require_dist = require("../dist-CqoMNE1e.js");
6
- const require_event_loop_stall_monitor = require("../event-loop-stall-monitor-eM7_yYfn.js");
7
- const require_lazy_sharp = require("../lazy-sharp-BGrpS8yi.js");
8
- const require_process_memory = require("../process-memory-xAPjvSw9.js");
9
- const require_addon_utils = require("../addon-utils-DCQ5AP_v.js");
5
+ const require_dist = require("../dist-DBP47QOz.js");
6
+ const require_event_loop_stall_monitor = require("../event-loop-stall-monitor-CiH_MHfO.js");
7
+ const require_lazy_sharp = require("../lazy-sharp-B_kETjyQ.js");
8
+ const require_process_memory = require("../process-memory-CtXQAA3d.js");
9
+ const require_addon_utils = require("../addon-utils-DzCn6z7v.js");
10
10
  let sharp = require("sharp");
11
11
  sharp = require_dist.__toESM(sharp);
12
12
  let node_child_process = require("node:child_process");
@@ -1,8 +1,8 @@
1
1
  import { n as __require } from "../chunk-DnnnRqeS.mjs";
2
- import { $ as pickClusterStepModels, D as YAMNET_TO_MACRO, Dt as hydrateSchema, Et as createEvent, Ft as sleep, G as evaluateZoneRules, Gt as string, I as defaultDeviceFor$1, Kt as union, Lt as array, Mt as parseJsonUnknown, St as BaseAddon, Ut as object, V as detectionPipelineCapability, W as enumerateInferenceDevices, Z as overlayClusterStepSettings, c as DEFAULT_CLUSTER_STEP_MODELS, dt as runtimeDevices$1, et as pickClusterStepSettings, gt as errMsg, jt as nodePin, l as DEFAULT_CLUSTER_STEP_SETTINGS, lt as resolvePoolMemoryPolicy, mt as supportedRuntimes$1, p as DEVICE_BACKEND_TO_FORMAT, q as inferModelProvider, qt as EventCategory, rt as pipelineExecutorCapability, st as resolveClusterStepModelId, t as APPLE_SA_TO_MACRO, x as PoolMemoryWatchdog } from "../dist-DO0UVhOk.mjs";
3
- import { a as ALL_PIPELINE_STEPS, c as getDefaultModelForFormatFromDef, d as resolveModelForFormat, f as landmarkPrecisionVerdict, l as getStep, n as startEventLoopStallMonitor, o as ALL_STEPS, r as localFrameRegistry, s as getDefaultModelForFormat, u as getStepDefinition } from "../event-loop-stall-monitor-D0Juf7Dn.mjs";
2
+ import { $ as pickClusterStepModels, D as YAMNET_TO_MACRO, Dt as hydrateSchema, Et as createEvent, Ft as sleep, G as evaluateZoneRules, Gt as string, I as defaultDeviceFor$1, Kt as union, Lt as array, Mt as parseJsonUnknown, St as BaseAddon, Ut as object, V as detectionPipelineCapability, W as enumerateInferenceDevices, Z as overlayClusterStepSettings, c as DEFAULT_CLUSTER_STEP_MODELS, dt as runtimeDevices$1, et as pickClusterStepSettings, gt as errMsg, jt as nodePin, l as DEFAULT_CLUSTER_STEP_SETTINGS, lt as resolvePoolMemoryPolicy, mt as supportedRuntimes$1, p as DEVICE_BACKEND_TO_FORMAT, q as inferModelProvider, qt as EventCategory, rt as pipelineExecutorCapability, st as resolveClusterStepModelId, t as APPLE_SA_TO_MACRO, x as PoolMemoryWatchdog } from "../dist-BZYUUBUx.mjs";
3
+ import { a as ALL_PIPELINE_STEPS, c as getDefaultModelForFormatFromDef, d as resolveModelForFormat, f as landmarkPrecisionVerdict, l as getStep, n as startEventLoopStallMonitor, o as ALL_STEPS, r as localFrameRegistry, s as getDefaultModelForFormat, u as getStepDefinition } from "../event-loop-stall-monitor-IACE22fK.mjs";
4
4
  import { t as getSharp } from "../lazy-sharp-BtT5x-qP.mjs";
5
- import { n as pickNodePlatformArch, t as readProcessMemory } from "../process-memory-Bac3FuG6.mjs";
5
+ import { n as pickNodePlatformArch, t as readProcessMemory } from "../process-memory-C7rsraCR.mjs";
6
6
  import { a as ensureModel, o as isModelDownloaded, r as deleteModelFromDisk } from "../addon-utils-CgBCF-mE.mjs";
7
7
  import sharp from "sharp";
8
8
  import { spawn } from "node:child_process";
@@ -17337,7 +17337,23 @@ var NcHistoryEntrySchema = object({
17337
17337
  updatedAt: number(),
17338
17338
  /** Failure detail — present on a `dead` row. */
17339
17339
  error: string().optional(),
17340
- subject: NcHistorySubjectSchema
17340
+ subject: NcHistorySubjectSchema,
17341
+ /**
17342
+ * Ids of the artefacts (still, then gif, then clip) this row's successful
17343
+ * delivery indexed in the artefact library — a REFERENCE, never the bytes
17344
+ * (an artefact is often megabytes; this row is durable JSON rewritten on
17345
+ * every delivery attempt). Absent on a row still pending/dead, a row
17346
+ * delivered before this field shipped, or a wiring with no artefact index.
17347
+ *
17348
+ * Resolve one to a fetchable URL with `resolveArtifactUrl` — an id
17349
+ * outlives any one URL's TTL, so a caller mints a fresh link on demand
17350
+ * rather than trusting one frozen at delivery time. `resolveArtifactUrl`
17351
+ * also answers `null` for an id whose artefact has since expired past the
17352
+ * retained shelf's own age bound — the degrade a caller (the Home
17353
+ * Assistant export) must render as "no image right now", never as a
17354
+ * broken link.
17355
+ */
17356
+ artifactIds: array(string().min(1)).optional()
17341
17357
  });
17342
17358
  /**
17343
17359
  * Query filter for `getHistory` (spec §4.2). Every field is a narrowing
@@ -17564,7 +17580,7 @@ method(object({}), object({ rules: array(NcRuleSchema) }), { auth: "admin" }), m
17564
17580
  }), method(object({}), object({
17565
17581
  catalog: array(NcConditionDescriptorSchema),
17566
17582
  taxonomy: NcTaxonomySchema.optional()
17567
- })), method(object({ filter: NcHistoryFilterSchema.default({ limit: 100 }) }), object({ entries: array(NcHistoryEntrySchema) }), { auth: "admin" }), method(object({}), object({ snoozes: array(NcSnoozeSchema) }), { caller: "required" }), method(object({ snooze: NcSnoozeInputSchema }), object({ snooze: NcSnoozeSchema }), {
17583
+ })), method(object({ filter: NcHistoryFilterSchema.default({ limit: 100 }) }), object({ entries: array(NcHistoryEntrySchema) }), { auth: "admin" }), method(object({ artifactId: string().min(1) }), object({ url: string().nullable() }), { auth: "admin" }), method(object({}), object({ snoozes: array(NcSnoozeSchema) }), { caller: "required" }), method(object({ snooze: NcSnoozeInputSchema }), object({ snooze: NcSnoozeSchema }), {
17568
17584
  kind: "mutation",
17569
17585
  caller: "required"
17570
17586
  }), method(object({ snoozeId: string() }), object({ success: literal(true) }), {
@@ -27351,6 +27367,39 @@ var ReadGopBytesResultSchema = object({
27351
27367
  /** Media ms the returned fragment covers. */
27352
27368
  gopDurMs: number()
27353
27369
  });
27370
+ /**
27371
+ * A time WINDOW of one finalized segment, cut by byte range — the multi-GOP
27372
+ * twin of {@link ReadGopBytesResultSchema}'s single instant. Built for the
27373
+ * replay clip's `recording` source (`docs/design/plans/2026-08-26-replay-clip-su-pipeline.md`):
27374
+ * a replay needs several seconds of native pixels, not one frame.
27375
+ *
27376
+ * `ok.data` is standalone-demuxable, same as a GOP read. `ok.reachesRequestedEnd`
27377
+ * is `false` when the returned bytes were cut short by the read's own safety
27378
+ * byte cap before covering `[fromMs, toMs)` — a truncation, reported, not a
27379
+ * silently shorter answer. `spans-multiple-segments` is a REFUSAL, not a
27380
+ * degradation: a window whose end falls past the covering segment would need
27381
+ * bytes stitched from a second segment file (its own `ftyp`+`moov`), which is
27382
+ * not one standalone-demuxable stream — the caller's answer is to request a
27383
+ * shorter window or one aligned to a single segment, not to receive spliced
27384
+ * bytes nothing has proven decodable.
27385
+ */
27386
+ var ReadWindowBytesResultSchema = discriminatedUnion("kind", [object({
27387
+ kind: literal("ok"),
27388
+ data: _instanceof(Uint8Array),
27389
+ /** Absolute epoch ms of the returned bytes' first sample — at or before
27390
+ * the requested `fromMs` (anchored on the nearest keyframe). */
27391
+ gopStartMs: number(),
27392
+ /** Media ms the returned bytes cover, from `gopStartMs`. */
27393
+ gopDurMs: number(),
27394
+ /** `false` ⇒ the safety byte cap cut the read short before it reached
27395
+ * the requested `toMs`; the caller got fewer frames than asked for. */
27396
+ reachesRequestedEnd: boolean()
27397
+ }), object({
27398
+ kind: literal("spans-multiple-segments"),
27399
+ /** Where the covering segment's own footage runs out — informational,
27400
+ * not a retry hint (retrying the same window would refuse again). */
27401
+ segmentEndMs: number()
27402
+ })]);
27354
27403
  var recordingCapability = {
27355
27404
  name: "recording",
27356
27405
  scope: "system",
@@ -27430,6 +27479,21 @@ var recordingCapability = {
27430
27479
  kind: "query",
27431
27480
  auth: "admin"
27432
27481
  }),
27482
+ /** Read a WINDOW `[fromMs, toMs)` of segment `startMs`, by mfra byte
27483
+ * range — the multi-GOP twin of `readGopBytes`. Refuses (does not
27484
+ * degrade) when the window runs past the covering segment. Used by the
27485
+ * replay clip's `recording` source to fetch several seconds of native
27486
+ * footage for its single ffmpeg decode pass. */
27487
+ readWindowBytes: method(object({
27488
+ deviceId: number(),
27489
+ profile: string(),
27490
+ startMs: number(),
27491
+ fromMs: number(),
27492
+ toMs: number()
27493
+ }), ReadWindowBytesResultSchema, {
27494
+ kind: "query",
27495
+ auth: "admin"
27496
+ }),
27433
27497
  setDeviceConfig: method(object({
27434
27498
  deviceId: number(),
27435
27499
  config: RecordingConfigSchema
@@ -31991,6 +32055,12 @@ Object.freeze({
31991
32055
  addonId: null,
31992
32056
  access: "view"
31993
32057
  },
32058
+ "notificationRules.resolveArtifactUrl": {
32059
+ capName: "notification-rules",
32060
+ capScope: "system",
32061
+ addonId: null,
32062
+ access: "view"
32063
+ },
31994
32064
  "notificationRules.setAlarmConfig": {
31995
32065
  capName: "notification-rules",
31996
32066
  capScope: "system",
@@ -33395,6 +33465,12 @@ Object.freeze({
33395
33465
  addonId: null,
33396
33466
  access: "view"
33397
33467
  },
33468
+ "recording.readWindowBytes": {
33469
+ capName: "recording",
33470
+ capScope: "system",
33471
+ addonId: null,
33472
+ access: "view"
33473
+ },
33398
33474
  "recording.refreshStorageLocationsForMigration": {
33399
33475
  capName: "recording",
33400
33476
  capScope: "system",
@@ -36225,6 +36301,11 @@ Object.freeze({
36225
36301
  form: "single",
36226
36302
  optional: false
36227
36303
  }],
36304
+ "recording.readWindowBytes": [{
36305
+ name: "deviceId",
36306
+ form: "single",
36307
+ optional: false
36308
+ }],
36228
36309
  "recording.relocateFootage": [{
36229
36310
  name: "deviceId",
36230
36311
  form: "single",
@@ -17360,7 +17360,23 @@ var NcHistoryEntrySchema = object({
17360
17360
  updatedAt: number(),
17361
17361
  /** Failure detail — present on a `dead` row. */
17362
17362
  error: string().optional(),
17363
- subject: NcHistorySubjectSchema
17363
+ subject: NcHistorySubjectSchema,
17364
+ /**
17365
+ * Ids of the artefacts (still, then gif, then clip) this row's successful
17366
+ * delivery indexed in the artefact library — a REFERENCE, never the bytes
17367
+ * (an artefact is often megabytes; this row is durable JSON rewritten on
17368
+ * every delivery attempt). Absent on a row still pending/dead, a row
17369
+ * delivered before this field shipped, or a wiring with no artefact index.
17370
+ *
17371
+ * Resolve one to a fetchable URL with `resolveArtifactUrl` — an id
17372
+ * outlives any one URL's TTL, so a caller mints a fresh link on demand
17373
+ * rather than trusting one frozen at delivery time. `resolveArtifactUrl`
17374
+ * also answers `null` for an id whose artefact has since expired past the
17375
+ * retained shelf's own age bound — the degrade a caller (the Home
17376
+ * Assistant export) must render as "no image right now", never as a
17377
+ * broken link.
17378
+ */
17379
+ artifactIds: array(string().min(1)).optional()
17364
17380
  });
17365
17381
  /**
17366
17382
  * Query filter for `getHistory` (spec §4.2). Every field is a narrowing
@@ -17587,7 +17603,7 @@ method(object({}), object({ rules: array(NcRuleSchema) }), { auth: "admin" }), m
17587
17603
  }), method(object({}), object({
17588
17604
  catalog: array(NcConditionDescriptorSchema),
17589
17605
  taxonomy: NcTaxonomySchema.optional()
17590
- })), method(object({ filter: NcHistoryFilterSchema.default({ limit: 100 }) }), object({ entries: array(NcHistoryEntrySchema) }), { auth: "admin" }), method(object({}), object({ snoozes: array(NcSnoozeSchema) }), { caller: "required" }), method(object({ snooze: NcSnoozeInputSchema }), object({ snooze: NcSnoozeSchema }), {
17606
+ })), method(object({ filter: NcHistoryFilterSchema.default({ limit: 100 }) }), object({ entries: array(NcHistoryEntrySchema) }), { auth: "admin" }), method(object({ artifactId: string().min(1) }), object({ url: string().nullable() }), { auth: "admin" }), method(object({}), object({ snoozes: array(NcSnoozeSchema) }), { caller: "required" }), method(object({ snooze: NcSnoozeInputSchema }), object({ snooze: NcSnoozeSchema }), {
17591
17607
  kind: "mutation",
17592
17608
  caller: "required"
17593
17609
  }), method(object({ snoozeId: string() }), object({ success: literal(true) }), {
@@ -27374,6 +27390,39 @@ var ReadGopBytesResultSchema = object({
27374
27390
  /** Media ms the returned fragment covers. */
27375
27391
  gopDurMs: number()
27376
27392
  });
27393
+ /**
27394
+ * A time WINDOW of one finalized segment, cut by byte range — the multi-GOP
27395
+ * twin of {@link ReadGopBytesResultSchema}'s single instant. Built for the
27396
+ * replay clip's `recording` source (`docs/design/plans/2026-08-26-replay-clip-su-pipeline.md`):
27397
+ * a replay needs several seconds of native pixels, not one frame.
27398
+ *
27399
+ * `ok.data` is standalone-demuxable, same as a GOP read. `ok.reachesRequestedEnd`
27400
+ * is `false` when the returned bytes were cut short by the read's own safety
27401
+ * byte cap before covering `[fromMs, toMs)` — a truncation, reported, not a
27402
+ * silently shorter answer. `spans-multiple-segments` is a REFUSAL, not a
27403
+ * degradation: a window whose end falls past the covering segment would need
27404
+ * bytes stitched from a second segment file (its own `ftyp`+`moov`), which is
27405
+ * not one standalone-demuxable stream — the caller's answer is to request a
27406
+ * shorter window or one aligned to a single segment, not to receive spliced
27407
+ * bytes nothing has proven decodable.
27408
+ */
27409
+ var ReadWindowBytesResultSchema = discriminatedUnion("kind", [object({
27410
+ kind: literal("ok"),
27411
+ data: _instanceof(Uint8Array),
27412
+ /** Absolute epoch ms of the returned bytes' first sample — at or before
27413
+ * the requested `fromMs` (anchored on the nearest keyframe). */
27414
+ gopStartMs: number(),
27415
+ /** Media ms the returned bytes cover, from `gopStartMs`. */
27416
+ gopDurMs: number(),
27417
+ /** `false` ⇒ the safety byte cap cut the read short before it reached
27418
+ * the requested `toMs`; the caller got fewer frames than asked for. */
27419
+ reachesRequestedEnd: boolean()
27420
+ }), object({
27421
+ kind: literal("spans-multiple-segments"),
27422
+ /** Where the covering segment's own footage runs out — informational,
27423
+ * not a retry hint (retrying the same window would refuse again). */
27424
+ segmentEndMs: number()
27425
+ })]);
27377
27426
  var recordingCapability = {
27378
27427
  name: "recording",
27379
27428
  scope: "system",
@@ -27453,6 +27502,21 @@ var recordingCapability = {
27453
27502
  kind: "query",
27454
27503
  auth: "admin"
27455
27504
  }),
27505
+ /** Read a WINDOW `[fromMs, toMs)` of segment `startMs`, by mfra byte
27506
+ * range — the multi-GOP twin of `readGopBytes`. Refuses (does not
27507
+ * degrade) when the window runs past the covering segment. Used by the
27508
+ * replay clip's `recording` source to fetch several seconds of native
27509
+ * footage for its single ffmpeg decode pass. */
27510
+ readWindowBytes: method(object({
27511
+ deviceId: number(),
27512
+ profile: string(),
27513
+ startMs: number(),
27514
+ fromMs: number(),
27515
+ toMs: number()
27516
+ }), ReadWindowBytesResultSchema, {
27517
+ kind: "query",
27518
+ auth: "admin"
27519
+ }),
27456
27520
  setDeviceConfig: method(object({
27457
27521
  deviceId: number(),
27458
27522
  config: RecordingConfigSchema
@@ -32014,6 +32078,12 @@ Object.freeze({
32014
32078
  addonId: null,
32015
32079
  access: "view"
32016
32080
  },
32081
+ "notificationRules.resolveArtifactUrl": {
32082
+ capName: "notification-rules",
32083
+ capScope: "system",
32084
+ addonId: null,
32085
+ access: "view"
32086
+ },
32017
32087
  "notificationRules.setAlarmConfig": {
32018
32088
  capName: "notification-rules",
32019
32089
  capScope: "system",
@@ -33418,6 +33488,12 @@ Object.freeze({
33418
33488
  addonId: null,
33419
33489
  access: "view"
33420
33490
  },
33491
+ "recording.readWindowBytes": {
33492
+ capName: "recording",
33493
+ capScope: "system",
33494
+ addonId: null,
33495
+ access: "view"
33496
+ },
33421
33497
  "recording.refreshStorageLocationsForMigration": {
33422
33498
  capName: "recording",
33423
33499
  capScope: "system",
@@ -36248,6 +36324,11 @@ Object.freeze({
36248
36324
  form: "single",
36249
36325
  optional: false
36250
36326
  }],
36327
+ "recording.readWindowBytes": [{
36328
+ name: "deviceId",
36329
+ form: "single",
36330
+ optional: false
36331
+ }],
36251
36332
  "recording.relocateFootage": [{
36252
36333
  name: "deviceId",
36253
36334
  form: "single",
@@ -1,4 +1,4 @@
1
- const require_dist = require("./dist-CqoMNE1e.js");
1
+ const require_dist = require("./dist-DBP47QOz.js");
2
2
  let node_crypto = require("node:crypto");
3
3
  let node_perf_hooks = require("node:perf_hooks");
4
4
  //#region src/detection-pipeline/registry/model-catalogs.ts
@@ -1,4 +1,4 @@
1
- import { K as hfModelUrl, a as COCO_80_LABELS, j as audioKindId, o as COCO_TO_MACRO, r as AUDIO_MACRO_LABELS } from "./dist-DO0UVhOk.mjs";
1
+ import { K as hfModelUrl, a as COCO_80_LABELS, j as audioKindId, o as COCO_TO_MACRO, r as AUDIO_MACRO_LABELS } from "./dist-BZYUUBUx.mjs";
2
2
  import { randomUUID } from "node:crypto";
3
3
  import { PerformanceObserver } from "node:perf_hooks";
4
4
  //#region src/detection-pipeline/registry/model-catalogs.ts
@@ -1,4 +1,4 @@
1
- const require_dist = require("./dist-CqoMNE1e.js");
1
+ const require_dist = require("./dist-DBP47QOz.js");
2
2
  let node_url = require("node:url");
3
3
  let node_module = require("node:module");
4
4
  let node_path = require("node:path");
@@ -2,8 +2,8 @@ Object.defineProperties(exports, {
2
2
  __esModule: { value: true },
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
- const require_dist = require("../dist-CqoMNE1e.js");
6
- const require_lazy_sharp = require("../lazy-sharp-BGrpS8yi.js");
5
+ const require_dist = require("../dist-DBP47QOz.js");
6
+ const require_lazy_sharp = require("../lazy-sharp-B_kETjyQ.js");
7
7
  let node_path = require("node:path");
8
8
  let node_fs = require("node:fs");
9
9
  //#region src/motion-wasm/wasm-motion-detector.ts
@@ -1,4 +1,4 @@
1
- import { Dt as hydrateSchema, G as evaluateZoneRules, St as BaseAddon, Tt as DeviceType, X as motionDetectionCapability } from "../dist-DO0UVhOk.mjs";
1
+ import { Dt as hydrateSchema, G as evaluateZoneRules, St as BaseAddon, Tt as DeviceType, X as motionDetectionCapability } from "../dist-BZYUUBUx.mjs";
2
2
  import { t as getSharp } from "../lazy-sharp-BtT5x-qP.mjs";
3
3
  import { join } from "node:path";
4
4
  import { readFileSync } from "node:fs";
@@ -2,11 +2,11 @@ Object.defineProperties(exports, {
2
2
  __esModule: { value: true },
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
- const require_dist = require("../dist-CqoMNE1e.js");
6
- const require_event_loop_stall_monitor = require("../event-loop-stall-monitor-eM7_yYfn.js");
7
- const require_worker_protocol = require("../worker-protocol-G3HXTY8z.js");
5
+ const require_dist = require("../dist-DBP47QOz.js");
6
+ const require_event_loop_stall_monitor = require("../event-loop-stall-monitor-CiH_MHfO.js");
7
+ const require_worker_protocol = require("../worker-protocol-C3zaz0Jv.js");
8
8
  const require_hub_hostname = require("../hub-hostname-DAJXlOgV.js");
9
- const require_lazy_sharp = require("../lazy-sharp-BGrpS8yi.js");
9
+ const require_lazy_sharp = require("../lazy-sharp-B_kETjyQ.js");
10
10
  const require_restream_intent = require("../restream-intent-Cv9x3jmu.js");
11
11
  const require_remote_restream = require("../remote-restream-CO36Sr30.js");
12
12
  let sharp = require("sharp");
@@ -1,6 +1,6 @@
1
- import { Bt as lazy, Et as createEvent, F as customAction, Gt as string, Ht as number, It as _enum, L as defineCustomActions, Lt as array, Rt as boolean, St as BaseAddon, Ut as object, Vt as literal, f as DEFAULT_NATIVE_LEASE_SETTINGS, gt as errMsg, it as pipelineRunnerCapability, jt as nodePin, nt as pickNativeLeaseOverride, p as DEVICE_BACKEND_TO_FORMAT, qt as EventCategory, tt as pickDetailCropConvention, u as DEFAULT_DETAIL_CROP_CONVENTION, z as deriveDetailCropRect } from "../dist-DO0UVhOk.mjs";
2
- import { i as resolveFrameViewGeometry, r as localFrameRegistry, t as attributeStall, u as getStepDefinition } from "../event-loop-stall-monitor-D0Juf7Dn.mjs";
3
- import { a as nativeLeaseSettingEnv, t as isWorkerReply } from "../worker-protocol-_Ujvj1hl.mjs";
1
+ import { Bt as lazy, Et as createEvent, F as customAction, Gt as string, Ht as number, It as _enum, L as defineCustomActions, Lt as array, Rt as boolean, St as BaseAddon, Ut as object, Vt as literal, f as DEFAULT_NATIVE_LEASE_SETTINGS, gt as errMsg, it as pipelineRunnerCapability, jt as nodePin, nt as pickNativeLeaseOverride, p as DEVICE_BACKEND_TO_FORMAT, qt as EventCategory, tt as pickDetailCropConvention, u as DEFAULT_DETAIL_CROP_CONVENTION, z as deriveDetailCropRect } from "../dist-BZYUUBUx.mjs";
2
+ import { i as resolveFrameViewGeometry, r as localFrameRegistry, t as attributeStall, u as getStepDefinition } from "../event-loop-stall-monitor-IACE22fK.mjs";
3
+ import { a as nativeLeaseSettingEnv, t as isWorkerReply } from "../worker-protocol-Cut8984B.mjs";
4
4
  import { t as resolveHubHostname } from "../hub-hostname-cCknRYKj.mjs";
5
5
  import { t as getSharp } from "../lazy-sharp-BtT5x-qP.mjs";
6
6
  import { n as withDetectionIntent } from "../restream-intent-B4BXZra7.mjs";
@@ -1,4 +1,4 @@
1
- import { Q as parseProcStatus } from "./dist-DO0UVhOk.mjs";
1
+ import { Q as parseProcStatus } from "./dist-BZYUUBUx.mjs";
2
2
  import { execFile } from "node:child_process";
3
3
  import * as fs from "node:fs";
4
4
  //#region src/shared/node-topology-platform.ts
@@ -1,4 +1,4 @@
1
- const require_dist = require("./dist-CqoMNE1e.js");
1
+ const require_dist = require("./dist-DBP47QOz.js");
2
2
  let node_child_process = require("node:child_process");
3
3
  let node_fs = require("node:fs");
4
4
  node_fs = require_dist.__toESM(node_fs);