@camstack/addon-post-analysis 1.1.32 → 1.1.33

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.
@@ -1,4 +1,4 @@
1
- //#region ../types/dist/event-category-H4AVePnn.mjs
1
+ //#region ../types/dist/event-category-D4HJq7Mw.mjs
2
2
  var EventCategory = /* @__PURE__ */ function(EventCategory) {
3
3
  EventCategory["SystemBoot"] = "system.boot";
4
4
  EventCategory["SystemAddonsReady"] = "system.addons-ready";
@@ -151,6 +151,11 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
151
151
  /** Runner-sampled scrub thumbnail (~1/5 s/camera). Telemetry (D8): a lost
152
152
  * thumb is a scrub gap the recorder's keyframe backfill covers. */
153
153
  EventCategory["RecordingThumbSampled"] = "recording.thumb-sampled";
154
+ /** Export render progress (0–100). Telemetry (D8): a lost tick is a stale
155
+ * progress bar the client reconciles via `recordingExport.getExport`. */
156
+ EventCategory["RecordingExportProgress"] = "recording.export.progress";
157
+ EventCategory["RecordingExportCompleted"] = "recording.export.completed";
158
+ EventCategory["RecordingExportFailed"] = "recording.export.failed";
154
159
  EventCategory["DetectionEvent"] = "detection.event";
155
160
  EventCategory["SessionTrackNew"] = "session.track.new";
156
161
  EventCategory["SessionTrackExpired"] = "session.track.expired";
@@ -440,6 +445,25 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
440
445
  */
441
446
  EventCategory["PipelineAnalyticsStationaryChanged"] = "pipeline-analytics.stationary-changed";
442
447
  /**
448
+ * Fired by `addon-post-analysis` when a package-drop is confirmed inside
449
+ * a package zone — a newly-appeared stationary object of a package class
450
+ * that cleared the class / zone / dwell / size gates. Payload:
451
+ * `PipelineAnalyticsPackageDeliveredPayload` carrying `{ deviceId,
452
+ * entryId, className, zoneIds, keyFrameMediaKey?, bbox, timestamp }`.
453
+ * Telemetry (D8): the durable record is the `package-events` store row;
454
+ * this bus topic drives notifier rules + live UI. See
455
+ * docs/superpowers/specs/2026-07-17-package-zones-design.md §5.1.
456
+ */
457
+ EventCategory["PipelineAnalyticsPackageDelivered"] = "pipeline-analytics.package-delivered";
458
+ /**
459
+ * Fired by `addon-post-analysis` when a previously-delivered package
460
+ * leaves its zone (the stationary entry departed — moved or swept).
461
+ * Payload: `PipelineAnalyticsPackagePickedUpPayload` carrying
462
+ * `{ deviceId, entryId, deliveredEventId, className, timestamp }`.
463
+ * Telemetry (D8). See package-zones-design §5.2.
464
+ */
465
+ EventCategory["PipelineAnalyticsPackagePickedUp"] = "pipeline-analytics.package-picked-up";
466
+ /**
443
467
  * Fired by `addon-post-analysis` whenever a gallery face row changes:
444
468
  * `kind:'buffered'` a new detected face was persisted, `'assigned'` /
445
469
  * `'unassigned'` its identity link changed, `'deleted'` the row was
@@ -5178,6 +5202,25 @@ function _instanceof(cls, params = {}) {
5178
5202
  };
5179
5203
  return inst;
5180
5204
  }
5205
+ //#endregion
5206
+ //#region ../../node_modules/zod/v4/classic/compat.js
5207
+ /** @deprecated Use the raw string literal codes instead, e.g. "invalid_type". */
5208
+ var ZodIssueCode = {
5209
+ invalid_type: "invalid_type",
5210
+ too_big: "too_big",
5211
+ too_small: "too_small",
5212
+ invalid_format: "invalid_format",
5213
+ not_multiple_of: "not_multiple_of",
5214
+ unrecognized_keys: "unrecognized_keys",
5215
+ invalid_union: "invalid_union",
5216
+ invalid_key: "invalid_key",
5217
+ invalid_element: "invalid_element",
5218
+ invalid_value: "invalid_value",
5219
+ custom: "custom"
5220
+ };
5221
+ /** @deprecated Do not use. Stub definition, only included for zod-to-json-schema compatibility. */
5222
+ var ZodFirstPartyTypeKind;
5223
+ ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
5181
5224
  Object.fromEntries([
5182
5225
  {
5183
5226
  id: "overview",
@@ -12689,7 +12732,11 @@ array(ZoneRuleSchema).readonly();
12689
12732
  * Extend the enum here when a new gating consumer comes online (audio
12690
12733
  * gating, alert filtering, …) — no other surface needs to change.
12691
12734
  */
12692
- var ZoneRuleStageEnum = _enum(["motion", "detection"]);
12735
+ var ZoneRuleStageEnum = _enum([
12736
+ "motion",
12737
+ "detection",
12738
+ "package"
12739
+ ]);
12693
12740
  DeviceType.Camera, method(object({
12694
12741
  deviceId: number(),
12695
12742
  stage: ZoneRuleStageEnum
@@ -12702,7 +12749,8 @@ DeviceType.Camera, method(object({
12702
12749
  auth: "admin"
12703
12750
  }), object({
12704
12751
  motion: array(ZoneRuleSchema).readonly(),
12705
- detection: array(ZoneRuleSchema).readonly()
12752
+ detection: array(ZoneRuleSchema).readonly(),
12753
+ package: array(ZoneRuleSchema).readonly()
12706
12754
  });
12707
12755
  var ProviderStatusSchema = object({
12708
12756
  connected: boolean(),
@@ -15901,6 +15949,7 @@ var EventKindIconSchema = _enum([
15901
15949
  "smoke",
15902
15950
  "water",
15903
15951
  "button",
15952
+ "package",
15904
15953
  "generic"
15905
15954
  ]);
15906
15955
  var EventKindCategorySchema = _enum([
@@ -15908,7 +15957,8 @@ var EventKindCategorySchema = _enum([
15908
15957
  "audio",
15909
15958
  "detection",
15910
15959
  "sensor",
15911
- "custom"
15960
+ "custom",
15961
+ "package"
15912
15962
  ]);
15913
15963
  var EventKindDescriptorSchema = object({
15914
15964
  /** Stable kind id (e.g. 'motion', 'person', 'contact'). */
@@ -19799,6 +19849,108 @@ method(object({
19799
19849
  auth: "admin"
19800
19850
  });
19801
19851
  /**
19852
+ * `recordingExport` cap — render a footage time range into a single downloadable
19853
+ * MP4 (regular / accelerated / decelerated / timelapse, ± audio), kept for a
19854
+ * bounded lifetime with a durable history, auto-expiry, and optional
19855
+ * delete-after-download.
19856
+ *
19857
+ * Like `recording` this is a `scope:'system', mode:'singleton'` cap: the
19858
+ * recorder self-gates so exactly ONE node (the designated `recordingNodeId`,
19859
+ * default `hub`) registers it. Device-scoped methods carry `deviceId` in their
19860
+ * input and dispatch to that single provider; the render runs on the node that
19861
+ * owns the footage (no cross-node segment transfer). Download rides the
19862
+ * framework addon data-plane. State persists in a DurableState blob (NOT
19863
+ * SQLite); history rows survive file deletion for audit.
19864
+ */
19865
+ /** Playback-speed multiplier for the render (1 = realtime). */
19866
+ var ExportSpeedSchema = number().min(.25).max(32);
19867
+ /** Timelapse cadence — sample one source frame per `everyMs`, output at `outputFps`. */
19868
+ var ExportTimelapseSchema = object({
19869
+ everyMs: number().int().positive(),
19870
+ outputFps: number().int().min(1).max(60).optional()
19871
+ });
19872
+ /**
19873
+ * Render options. `speed` and `timelapse` are mutually exclusive. `includeAudio`
19874
+ * is honoured only for a realtime-ish speed (0.5–2×); timelapse is always
19875
+ * silent. `maxLifeMs` bounds how long the finished file is kept;
19876
+ * `deleteAfterDownload` removes it shortly after the first complete download.
19877
+ */
19878
+ var ExportOptionsSchema = object({
19879
+ speed: ExportSpeedSchema.optional(),
19880
+ timelapse: ExportTimelapseSchema.optional(),
19881
+ includeAudio: boolean(),
19882
+ maxLifeMs: number().int().positive(),
19883
+ deleteAfterDownload: boolean(),
19884
+ title: string().max(200).optional()
19885
+ }).superRefine((v, ctx) => {
19886
+ if (v.speed !== void 0 && v.timelapse !== void 0) ctx.addIssue({
19887
+ code: ZodIssueCode.custom,
19888
+ message: "speed and timelapse are mutually exclusive",
19889
+ path: ["timelapse"]
19890
+ });
19891
+ });
19892
+ var ExportStateSchema = _enum([
19893
+ "queued",
19894
+ "rendering",
19895
+ "ready",
19896
+ "failed",
19897
+ "expired",
19898
+ "deleted"
19899
+ ]);
19900
+ /** One export job / history row. */
19901
+ var ExportRecordSchema = object({
19902
+ id: string(),
19903
+ deviceId: number(),
19904
+ profile: string(),
19905
+ fromMs: number(),
19906
+ toMs: number(),
19907
+ options: ExportOptionsSchema,
19908
+ state: ExportStateSchema,
19909
+ /** 0–100 while rendering; null otherwise. */
19910
+ progressPct: number().nullable(),
19911
+ /** File size once ready; null before. */
19912
+ fileBytes: number().nullable(),
19913
+ expiresAt: number(),
19914
+ deleteAfterDownload: boolean(),
19915
+ /** Epoch of the first complete download; null until then. */
19916
+ downloadedAt: number().nullable(),
19917
+ createdAt: number(),
19918
+ /** User id/name that requested the export. */
19919
+ createdBy: string(),
19920
+ /** Failure reason when state is 'failed'; null otherwise. */
19921
+ error: string().nullable()
19922
+ });
19923
+ /** Candidate download URLs (LAN first, then operator extra hosts). */
19924
+ var ExportDownloadSchema = object({
19925
+ url: string(),
19926
+ endpoints: array(string())
19927
+ });
19928
+ method(object({
19929
+ deviceId: number(),
19930
+ profile: string(),
19931
+ fromMs: number(),
19932
+ toMs: number(),
19933
+ options: ExportOptionsSchema
19934
+ }), ExportRecordSchema, {
19935
+ kind: "mutation",
19936
+ auth: "protected"
19937
+ }), method(object({ deviceId: number().optional() }), array(ExportRecordSchema), {
19938
+ kind: "query",
19939
+ auth: "protected"
19940
+ }), method(object({ exportId: string() }), ExportRecordSchema, {
19941
+ kind: "query",
19942
+ auth: "protected"
19943
+ }), method(object({ exportId: string() }), ExportRecordSchema, {
19944
+ kind: "mutation",
19945
+ auth: "protected"
19946
+ }), method(object({ exportId: string() }), ExportRecordSchema, {
19947
+ kind: "mutation",
19948
+ auth: "protected"
19949
+ }), method(object({ exportId: string() }), ExportDownloadSchema, {
19950
+ kind: "query",
19951
+ auth: "protected"
19952
+ });
19953
+ /**
19802
19954
  * One publishable camera stream as its OWNING PROVIDER describes it — the same
19803
19955
  * payload the (legacy) push `streamBroker.publishCameraStream` carried, minus
19804
19956
  * `deviceId`.
@@ -23722,6 +23874,42 @@ Object.freeze({
23722
23874
  addonId: null,
23723
23875
  access: "create"
23724
23876
  },
23877
+ "recordingExport.cancelExport": {
23878
+ capName: "recordingExport",
23879
+ capScope: "system",
23880
+ addonId: null,
23881
+ access: "create"
23882
+ },
23883
+ "recordingExport.createExport": {
23884
+ capName: "recordingExport",
23885
+ capScope: "system",
23886
+ addonId: null,
23887
+ access: "create"
23888
+ },
23889
+ "recordingExport.deleteExport": {
23890
+ capName: "recordingExport",
23891
+ capScope: "system",
23892
+ addonId: null,
23893
+ access: "delete"
23894
+ },
23895
+ "recordingExport.getDownloadUrl": {
23896
+ capName: "recordingExport",
23897
+ capScope: "system",
23898
+ addonId: null,
23899
+ access: "view"
23900
+ },
23901
+ "recordingExport.getExport": {
23902
+ capName: "recordingExport",
23903
+ capScope: "system",
23904
+ addonId: null,
23905
+ access: "view"
23906
+ },
23907
+ "recordingExport.listExports": {
23908
+ capName: "recordingExport",
23909
+ capScope: "system",
23910
+ addonId: null,
23911
+ access: "view"
23912
+ },
23725
23913
  "sceneMonitor.captureReference": {
23726
23914
  capName: "scene-monitor",
23727
23915
  capScope: "device",
@@ -24881,4 +25069,4 @@ object({
24881
25069
  schemaVersion: literal(1)
24882
25070
  });
24883
25071
  //#endregion
24884
- export { EventCategory as C, string as S, createEvent as _, cosineSimilarity as a, number as b, hfModelUrl as c, plateGalleryCapability as d, videoclipsCapability as f, DeviceType as g, BaseAddon as h, audioMetricsCapability as i, nodePin as l, errMsg as m, EVENT_PAD_MS as n, embeddingEncoderCapability as o, zoneAnalyticsCapability as p, addonWidgetsSourceCapability as r, faceGalleryCapability as s, EVENT_KIND_BY_CAP as t, pipelineAnalyticsCapability as u, hydrateSchema as v, object as x, boolean as y };
25072
+ export { string as C, object as S, createEvent as _, cosineSimilarity as a, boolean as b, hfModelUrl as c, plateGalleryCapability as d, videoclipsCapability as f, DeviceType as g, BaseAddon as h, audioMetricsCapability as i, nodePin as l, errMsg as m, EVENT_PAD_MS as n, embeddingEncoderCapability as o, zoneAnalyticsCapability as p, addonWidgetsSourceCapability as r, faceGalleryCapability as s, EVENT_KIND_BY_CAP as t, pipelineAnalyticsCapability as u, hydrateSchema as v, EventCategory as w, number as x, array as y };
@@ -20,7 +20,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
20
20
  enumerable: true
21
21
  }) : target, mod));
22
22
  //#endregion
23
- //#region ../types/dist/event-category-H4AVePnn.mjs
23
+ //#region ../types/dist/event-category-D4HJq7Mw.mjs
24
24
  var EventCategory = /* @__PURE__ */ function(EventCategory) {
25
25
  EventCategory["SystemBoot"] = "system.boot";
26
26
  EventCategory["SystemAddonsReady"] = "system.addons-ready";
@@ -173,6 +173,11 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
173
173
  /** Runner-sampled scrub thumbnail (~1/5 s/camera). Telemetry (D8): a lost
174
174
  * thumb is a scrub gap the recorder's keyframe backfill covers. */
175
175
  EventCategory["RecordingThumbSampled"] = "recording.thumb-sampled";
176
+ /** Export render progress (0–100). Telemetry (D8): a lost tick is a stale
177
+ * progress bar the client reconciles via `recordingExport.getExport`. */
178
+ EventCategory["RecordingExportProgress"] = "recording.export.progress";
179
+ EventCategory["RecordingExportCompleted"] = "recording.export.completed";
180
+ EventCategory["RecordingExportFailed"] = "recording.export.failed";
176
181
  EventCategory["DetectionEvent"] = "detection.event";
177
182
  EventCategory["SessionTrackNew"] = "session.track.new";
178
183
  EventCategory["SessionTrackExpired"] = "session.track.expired";
@@ -462,6 +467,25 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
462
467
  */
463
468
  EventCategory["PipelineAnalyticsStationaryChanged"] = "pipeline-analytics.stationary-changed";
464
469
  /**
470
+ * Fired by `addon-post-analysis` when a package-drop is confirmed inside
471
+ * a package zone — a newly-appeared stationary object of a package class
472
+ * that cleared the class / zone / dwell / size gates. Payload:
473
+ * `PipelineAnalyticsPackageDeliveredPayload` carrying `{ deviceId,
474
+ * entryId, className, zoneIds, keyFrameMediaKey?, bbox, timestamp }`.
475
+ * Telemetry (D8): the durable record is the `package-events` store row;
476
+ * this bus topic drives notifier rules + live UI. See
477
+ * docs/superpowers/specs/2026-07-17-package-zones-design.md §5.1.
478
+ */
479
+ EventCategory["PipelineAnalyticsPackageDelivered"] = "pipeline-analytics.package-delivered";
480
+ /**
481
+ * Fired by `addon-post-analysis` when a previously-delivered package
482
+ * leaves its zone (the stationary entry departed — moved or swept).
483
+ * Payload: `PipelineAnalyticsPackagePickedUpPayload` carrying
484
+ * `{ deviceId, entryId, deliveredEventId, className, timestamp }`.
485
+ * Telemetry (D8). See package-zones-design §5.2.
486
+ */
487
+ EventCategory["PipelineAnalyticsPackagePickedUp"] = "pipeline-analytics.package-picked-up";
488
+ /**
465
489
  * Fired by `addon-post-analysis` whenever a gallery face row changes:
466
490
  * `kind:'buffered'` a new detected face was persisted, `'assigned'` /
467
491
  * `'unassigned'` its identity link changed, `'deleted'` the row was
@@ -5200,6 +5224,25 @@ function _instanceof(cls, params = {}) {
5200
5224
  };
5201
5225
  return inst;
5202
5226
  }
5227
+ //#endregion
5228
+ //#region ../../node_modules/zod/v4/classic/compat.js
5229
+ /** @deprecated Use the raw string literal codes instead, e.g. "invalid_type". */
5230
+ var ZodIssueCode = {
5231
+ invalid_type: "invalid_type",
5232
+ too_big: "too_big",
5233
+ too_small: "too_small",
5234
+ invalid_format: "invalid_format",
5235
+ not_multiple_of: "not_multiple_of",
5236
+ unrecognized_keys: "unrecognized_keys",
5237
+ invalid_union: "invalid_union",
5238
+ invalid_key: "invalid_key",
5239
+ invalid_element: "invalid_element",
5240
+ invalid_value: "invalid_value",
5241
+ custom: "custom"
5242
+ };
5243
+ /** @deprecated Do not use. Stub definition, only included for zod-to-json-schema compatibility. */
5244
+ var ZodFirstPartyTypeKind;
5245
+ ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
5203
5246
  Object.fromEntries([
5204
5247
  {
5205
5248
  id: "overview",
@@ -12711,7 +12754,11 @@ array(ZoneRuleSchema).readonly();
12711
12754
  * Extend the enum here when a new gating consumer comes online (audio
12712
12755
  * gating, alert filtering, …) — no other surface needs to change.
12713
12756
  */
12714
- var ZoneRuleStageEnum = _enum(["motion", "detection"]);
12757
+ var ZoneRuleStageEnum = _enum([
12758
+ "motion",
12759
+ "detection",
12760
+ "package"
12761
+ ]);
12715
12762
  DeviceType.Camera, method(object({
12716
12763
  deviceId: number(),
12717
12764
  stage: ZoneRuleStageEnum
@@ -12724,7 +12771,8 @@ DeviceType.Camera, method(object({
12724
12771
  auth: "admin"
12725
12772
  }), object({
12726
12773
  motion: array(ZoneRuleSchema).readonly(),
12727
- detection: array(ZoneRuleSchema).readonly()
12774
+ detection: array(ZoneRuleSchema).readonly(),
12775
+ package: array(ZoneRuleSchema).readonly()
12728
12776
  });
12729
12777
  var ProviderStatusSchema = object({
12730
12778
  connected: boolean(),
@@ -15923,6 +15971,7 @@ var EventKindIconSchema = _enum([
15923
15971
  "smoke",
15924
15972
  "water",
15925
15973
  "button",
15974
+ "package",
15926
15975
  "generic"
15927
15976
  ]);
15928
15977
  var EventKindCategorySchema = _enum([
@@ -15930,7 +15979,8 @@ var EventKindCategorySchema = _enum([
15930
15979
  "audio",
15931
15980
  "detection",
15932
15981
  "sensor",
15933
- "custom"
15982
+ "custom",
15983
+ "package"
15934
15984
  ]);
15935
15985
  var EventKindDescriptorSchema = object({
15936
15986
  /** Stable kind id (e.g. 'motion', 'person', 'contact'). */
@@ -19821,6 +19871,108 @@ method(object({
19821
19871
  auth: "admin"
19822
19872
  });
19823
19873
  /**
19874
+ * `recordingExport` cap — render a footage time range into a single downloadable
19875
+ * MP4 (regular / accelerated / decelerated / timelapse, ± audio), kept for a
19876
+ * bounded lifetime with a durable history, auto-expiry, and optional
19877
+ * delete-after-download.
19878
+ *
19879
+ * Like `recording` this is a `scope:'system', mode:'singleton'` cap: the
19880
+ * recorder self-gates so exactly ONE node (the designated `recordingNodeId`,
19881
+ * default `hub`) registers it. Device-scoped methods carry `deviceId` in their
19882
+ * input and dispatch to that single provider; the render runs on the node that
19883
+ * owns the footage (no cross-node segment transfer). Download rides the
19884
+ * framework addon data-plane. State persists in a DurableState blob (NOT
19885
+ * SQLite); history rows survive file deletion for audit.
19886
+ */
19887
+ /** Playback-speed multiplier for the render (1 = realtime). */
19888
+ var ExportSpeedSchema = number().min(.25).max(32);
19889
+ /** Timelapse cadence — sample one source frame per `everyMs`, output at `outputFps`. */
19890
+ var ExportTimelapseSchema = object({
19891
+ everyMs: number().int().positive(),
19892
+ outputFps: number().int().min(1).max(60).optional()
19893
+ });
19894
+ /**
19895
+ * Render options. `speed` and `timelapse` are mutually exclusive. `includeAudio`
19896
+ * is honoured only for a realtime-ish speed (0.5–2×); timelapse is always
19897
+ * silent. `maxLifeMs` bounds how long the finished file is kept;
19898
+ * `deleteAfterDownload` removes it shortly after the first complete download.
19899
+ */
19900
+ var ExportOptionsSchema = object({
19901
+ speed: ExportSpeedSchema.optional(),
19902
+ timelapse: ExportTimelapseSchema.optional(),
19903
+ includeAudio: boolean(),
19904
+ maxLifeMs: number().int().positive(),
19905
+ deleteAfterDownload: boolean(),
19906
+ title: string().max(200).optional()
19907
+ }).superRefine((v, ctx) => {
19908
+ if (v.speed !== void 0 && v.timelapse !== void 0) ctx.addIssue({
19909
+ code: ZodIssueCode.custom,
19910
+ message: "speed and timelapse are mutually exclusive",
19911
+ path: ["timelapse"]
19912
+ });
19913
+ });
19914
+ var ExportStateSchema = _enum([
19915
+ "queued",
19916
+ "rendering",
19917
+ "ready",
19918
+ "failed",
19919
+ "expired",
19920
+ "deleted"
19921
+ ]);
19922
+ /** One export job / history row. */
19923
+ var ExportRecordSchema = object({
19924
+ id: string(),
19925
+ deviceId: number(),
19926
+ profile: string(),
19927
+ fromMs: number(),
19928
+ toMs: number(),
19929
+ options: ExportOptionsSchema,
19930
+ state: ExportStateSchema,
19931
+ /** 0–100 while rendering; null otherwise. */
19932
+ progressPct: number().nullable(),
19933
+ /** File size once ready; null before. */
19934
+ fileBytes: number().nullable(),
19935
+ expiresAt: number(),
19936
+ deleteAfterDownload: boolean(),
19937
+ /** Epoch of the first complete download; null until then. */
19938
+ downloadedAt: number().nullable(),
19939
+ createdAt: number(),
19940
+ /** User id/name that requested the export. */
19941
+ createdBy: string(),
19942
+ /** Failure reason when state is 'failed'; null otherwise. */
19943
+ error: string().nullable()
19944
+ });
19945
+ /** Candidate download URLs (LAN first, then operator extra hosts). */
19946
+ var ExportDownloadSchema = object({
19947
+ url: string(),
19948
+ endpoints: array(string())
19949
+ });
19950
+ method(object({
19951
+ deviceId: number(),
19952
+ profile: string(),
19953
+ fromMs: number(),
19954
+ toMs: number(),
19955
+ options: ExportOptionsSchema
19956
+ }), ExportRecordSchema, {
19957
+ kind: "mutation",
19958
+ auth: "protected"
19959
+ }), method(object({ deviceId: number().optional() }), array(ExportRecordSchema), {
19960
+ kind: "query",
19961
+ auth: "protected"
19962
+ }), method(object({ exportId: string() }), ExportRecordSchema, {
19963
+ kind: "query",
19964
+ auth: "protected"
19965
+ }), method(object({ exportId: string() }), ExportRecordSchema, {
19966
+ kind: "mutation",
19967
+ auth: "protected"
19968
+ }), method(object({ exportId: string() }), ExportRecordSchema, {
19969
+ kind: "mutation",
19970
+ auth: "protected"
19971
+ }), method(object({ exportId: string() }), ExportDownloadSchema, {
19972
+ kind: "query",
19973
+ auth: "protected"
19974
+ });
19975
+ /**
19824
19976
  * One publishable camera stream as its OWNING PROVIDER describes it — the same
19825
19977
  * payload the (legacy) push `streamBroker.publishCameraStream` carried, minus
19826
19978
  * `deviceId`.
@@ -23744,6 +23896,42 @@ Object.freeze({
23744
23896
  addonId: null,
23745
23897
  access: "create"
23746
23898
  },
23899
+ "recordingExport.cancelExport": {
23900
+ capName: "recordingExport",
23901
+ capScope: "system",
23902
+ addonId: null,
23903
+ access: "create"
23904
+ },
23905
+ "recordingExport.createExport": {
23906
+ capName: "recordingExport",
23907
+ capScope: "system",
23908
+ addonId: null,
23909
+ access: "create"
23910
+ },
23911
+ "recordingExport.deleteExport": {
23912
+ capName: "recordingExport",
23913
+ capScope: "system",
23914
+ addonId: null,
23915
+ access: "delete"
23916
+ },
23917
+ "recordingExport.getDownloadUrl": {
23918
+ capName: "recordingExport",
23919
+ capScope: "system",
23920
+ addonId: null,
23921
+ access: "view"
23922
+ },
23923
+ "recordingExport.getExport": {
23924
+ capName: "recordingExport",
23925
+ capScope: "system",
23926
+ addonId: null,
23927
+ access: "view"
23928
+ },
23929
+ "recordingExport.listExports": {
23930
+ capName: "recordingExport",
23931
+ capScope: "system",
23932
+ addonId: null,
23933
+ access: "view"
23934
+ },
23747
23935
  "sceneMonitor.captureReference": {
23748
23936
  capName: "scene-monitor",
23749
23937
  capScope: "device",
@@ -24945,6 +25133,12 @@ Object.defineProperty(exports, "addonWidgetsSourceCapability", {
24945
25133
  return addonWidgetsSourceCapability;
24946
25134
  }
24947
25135
  });
25136
+ Object.defineProperty(exports, "array", {
25137
+ enumerable: true,
25138
+ get: function() {
25139
+ return array;
25140
+ }
25141
+ });
24948
25142
  Object.defineProperty(exports, "audioMetricsCapability", {
24949
25143
  enumerable: true,
24950
25144
  get: function() {
@@ -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-DU_JRm-j.js");
5
+ const require_dist = require("../dist-V8XOHDoj.js");
6
6
  let node_fs = require("node:fs");
7
7
  let node_fs$1 = require_dist.__toESM(node_fs, 1);
8
8
  node_fs = require_dist.__toESM(node_fs);
@@ -1,4 +1,4 @@
1
- import { c as hfModelUrl, h as BaseAddon, o as embeddingEncoderCapability } from "../dist-CyyCe4TK.mjs";
1
+ import { c as hfModelUrl, h as BaseAddon, o as embeddingEncoderCapability } from "../dist-CA0GikiM.mjs";
2
2
  import { createRequire } from "node:module";
3
3
  import * as fs from "node:fs";
4
4
  import * as path$1 from "node:path";
@@ -1,4 +1,4 @@
1
- const require_dist = require("./dist-DU_JRm-j.js");
1
+ const require_dist = require("./dist-V8XOHDoj.js");
2
2
  let node_fs = require("node:fs");
3
3
  node_fs = require_dist.__toESM(node_fs, 1);
4
4
  let node_path = require("node:path");
@@ -1,6 +1,6 @@
1
1
  import { a as e, i as t, n, o as r, r as i, t as a } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare__react__loadShare__.js-C0AuF9av.mjs";
2
2
  import { t as o } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_tanstack_mf_1_react_mf_2_query__loadShare__.js-B3Wx5J80.mjs";
3
- import { a as s, i as c, n as l, o as u, r as d, s as f, t as p } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-D6C5R_2c.mjs";
3
+ import { a as s, i as c, n as l, o as u, r as d, s as f, t as p } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-ai-NpPOn.mjs";
4
4
  import { n as m, r as h, t as g } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare__react_mf_1_jsx_mf_2_runtime__loadShare__.js-Bm-iyjmq.mjs";
5
5
  //#region ../../node_modules/lucide-react/dist/esm/shared/src/utils.js
6
6
  var _ = (e) => e.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase(), v = (e) => e.replace(/^([A-Z])|[\s-_]+(\w)/g, (e, t, n) => n ? n.toUpperCase() : t.toLowerCase()), y = (e) => {
@@ -3,7 +3,7 @@ import "./dist-CYZr2fwk.mjs";
3
3
  var e = {
4
4
  "@camstack/sdk": {
5
5
  name: "@camstack/sdk",
6
- version: "1.1.27",
6
+ version: "1.1.28",
7
7
  scope: ["default"],
8
8
  loaded: !1,
9
9
  from: "addon_pipeline_analytics_widgets",
@@ -18,7 +18,7 @@ var e = {
18
18
  },
19
19
  "@camstack/types": {
20
20
  name: "@camstack/types",
21
- version: "1.1.48",
21
+ version: "1.1.49",
22
22
  scope: ["default"],
23
23
  loaded: !1,
24
24
  from: "addon_pipeline_analytics_widgets",
@@ -33,7 +33,7 @@ var e = {
33
33
  },
34
34
  "@camstack/ui-library": {
35
35
  name: "@camstack/ui-library",
36
- version: "1.1.39",
36
+ version: "1.1.40",
37
37
  scope: ["default"],
38
38
  loaded: !1,
39
39
  from: "addon_pipeline_analytics_widgets",