@camstack/addon-decoder-ffmpeg 1.1.17 → 1.1.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -7345,6 +7345,62 @@ var RecordingConfigSchema = object({
7345
7345
  scrubThumbnails: ScrubThumbnailPresetSchema.optional()
7346
7346
  });
7347
7347
  /**
7348
+ * Ops-log — the durable, append-only operations audit shared by the
7349
+ * recordings and events management surfaces.
7350
+ *
7351
+ * ONE row shape is reused for both domains so a single "Activity" view can
7352
+ * merge the recorder's DurableState ring (recordings ops-log) and the
7353
+ * pipeline-analytics SQLite collection (events ops-log). Each row records a
7354
+ * management operation, WHY it ran (reason), and its measurable effect
7355
+ * (itemsAffected + bytesReclaimed). Writes are best-effort — a failed log must
7356
+ * never fail the operation it records.
7357
+ */
7358
+ /** Which management domain the operation belongs to. */
7359
+ var OpsLogDomainSchema = _enum(["recording", "events"]);
7360
+ /** The kind of management operation performed. */
7361
+ var OpsLogOpSchema = _enum([
7362
+ "prune",
7363
+ "manual-delete",
7364
+ "rescan",
7365
+ "retention-run"
7366
+ ]);
7367
+ /** Why the operation ran. */
7368
+ var OpsLogReasonSchema = _enum([
7369
+ "retention",
7370
+ "quota",
7371
+ "manual",
7372
+ "operator"
7373
+ ]);
7374
+ /** One audit row, shared verbatim by both domains. */
7375
+ var OpsLogEntrySchema = object({
7376
+ /** Unique row id. */
7377
+ id: string(),
7378
+ /** Epoch ms the operation completed. */
7379
+ at: number(),
7380
+ domain: OpsLogDomainSchema,
7381
+ op: OpsLogOpSchema,
7382
+ reason: OpsLogReasonSchema,
7383
+ /** The camera the op targeted; null for a cluster/global op. */
7384
+ deviceId: number().nullable(),
7385
+ /** Node that performed the op (the log carries nodeId — no cross-node aggregation). */
7386
+ nodeId: string(),
7387
+ /** Buckets / rows deleted (op-specific unit). */
7388
+ itemsAffected: number(),
7389
+ /** Bytes reclaimed by the op (0 when not measurable). */
7390
+ bytesReclaimed: number(),
7391
+ /** Free-text detail (e.g. "floor moved to <ts>"); null when none. */
7392
+ detail: string().nullable(),
7393
+ /** Who/what triggered the op. */
7394
+ actor: string()
7395
+ });
7396
+ /** Shared query input for the per-domain `listOpsLog` cap methods. */
7397
+ var OpsLogQueryInputSchema = object({
7398
+ /** Restrict to a single camera; omit for every row. */
7399
+ deviceId: number().optional(),
7400
+ /** Max rows returned, newest-first. */
7401
+ limit: number().int().min(1).max(1e3).optional()
7402
+ });
7403
+ /**
7348
7404
  * `StorageLocationType` — an addon-declared id that identifies the *kind* of
7349
7405
  * storage a location serves. Defined here (not in `capabilities/storage.cap.ts`)
7350
7406
  * so the persisted record schema and the consumer-facing cap can both consume it
@@ -16275,6 +16331,26 @@ var TrackCascadeCountsSchema = object({
16275
16331
  /** Per-track CLIP search vectors removed (best-effort). */
16276
16332
  embeddings: number().int()
16277
16333
  });
16334
+ /** Event-store footprint for one camera. */
16335
+ var EventStoreDeviceFootprintSchema = object({
16336
+ deviceId: number(),
16337
+ /** Persisted event rows (motion + object + audio) for the camera. */
16338
+ rows: number().int(),
16339
+ /** Event-owned media bytes on disk for the camera. */
16340
+ bytes: number().int()
16341
+ });
16342
+ /** Aggregate event-store footprint: global totals + per-camera breakdown. */
16343
+ var EventStoreFootprintSchema = object({
16344
+ totalRows: number().int(),
16345
+ totalBytes: number().int(),
16346
+ devices: array(EventStoreDeviceFootprintSchema).readonly()
16347
+ });
16348
+ /** Per-kind counts returned by the event-prune / device-delete mutations. */
16349
+ var EventPruneCountsSchema = object({
16350
+ motion: number().int(),
16351
+ object: number().int(),
16352
+ audio: number().int()
16353
+ });
16278
16354
  DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).readonly()), method(object({
16279
16355
  deviceId: number(),
16280
16356
  trackId: string()
@@ -16338,6 +16414,21 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
16338
16414
  }), {
16339
16415
  kind: "mutation",
16340
16416
  auth: "admin"
16417
+ }), method(object({}), EventStoreFootprintSchema, {
16418
+ kind: "query",
16419
+ auth: "admin"
16420
+ }), method(object({
16421
+ olderThanMs: number(),
16422
+ reason: OpsLogReasonSchema.optional()
16423
+ }), EventPruneCountsSchema, {
16424
+ kind: "mutation",
16425
+ auth: "admin"
16426
+ }), method(object({ deviceId: number() }), EventPruneCountsSchema, {
16427
+ kind: "mutation",
16428
+ auth: "admin"
16429
+ }), method(OpsLogQueryInputSchema, array(OpsLogEntrySchema).readonly(), {
16430
+ kind: "query",
16431
+ auth: "admin"
16341
16432
  }), method(object({
16342
16433
  eventId: string(),
16343
16434
  kind: MediaFileKindEnum.optional()
@@ -19571,13 +19662,29 @@ method(object({
19571
19662
  }), method(object({ deviceId: number() }), RecordingStatusSchema, {
19572
19663
  kind: "mutation",
19573
19664
  auth: "admin"
19574
- }), method(object({ deviceId: number() }), object({
19665
+ }), method(object({
19666
+ deviceId: number(),
19667
+ reason: OpsLogReasonSchema.optional()
19668
+ }), object({
19575
19669
  floorMs: number().nullable(),
19576
19670
  deletedBuckets: number().int(),
19577
19671
  reclaimedBytes: number().int()
19578
19672
  }), {
19579
19673
  kind: "mutation",
19580
19674
  auth: "admin"
19675
+ }), method(object({
19676
+ deviceId: number(),
19677
+ fromMs: number().optional(),
19678
+ toMs: number().optional()
19679
+ }), object({
19680
+ deletedBuckets: number().int(),
19681
+ reclaimedBytes: number().int()
19682
+ }), {
19683
+ kind: "mutation",
19684
+ auth: "admin"
19685
+ }), method(OpsLogQueryInputSchema, array(OpsLogEntrySchema).readonly(), {
19686
+ kind: "query",
19687
+ auth: "admin"
19581
19688
  });
19582
19689
  /**
19583
19690
  * `recordingExport` cap — render a footage time range into a single downloadable
@@ -22699,6 +22806,12 @@ Object.freeze({
22699
22806
  addonId: null,
22700
22807
  access: "delete"
22701
22808
  },
22809
+ "pipelineAnalytics.deleteDeviceEvents": {
22810
+ capName: "pipeline-analytics",
22811
+ capScope: "device",
22812
+ addonId: null,
22813
+ access: "delete"
22814
+ },
22702
22815
  "pipelineAnalytics.deleteTracks": {
22703
22816
  capName: "pipeline-analytics",
22704
22817
  capScope: "device",
@@ -22729,6 +22842,12 @@ Object.freeze({
22729
22842
  addonId: null,
22730
22843
  access: "view"
22731
22844
  },
22845
+ "pipelineAnalytics.getEventStoreFootprint": {
22846
+ capName: "pipeline-analytics",
22847
+ capScope: "device",
22848
+ addonId: null,
22849
+ access: "view"
22850
+ },
22732
22851
  "pipelineAnalytics.getKeyEvents": {
22733
22852
  capName: "pipeline-analytics",
22734
22853
  capScope: "device",
@@ -22771,6 +22890,12 @@ Object.freeze({
22771
22890
  addonId: null,
22772
22891
  access: "view"
22773
22892
  },
22893
+ "pipelineAnalytics.listOpsLog": {
22894
+ capName: "pipeline-analytics",
22895
+ capScope: "device",
22896
+ addonId: null,
22897
+ access: "view"
22898
+ },
22774
22899
  "pipelineAnalytics.listRecentTracks": {
22775
22900
  capName: "pipeline-analytics",
22776
22901
  capScope: "device",
@@ -22783,6 +22908,12 @@ Object.freeze({
22783
22908
  addonId: null,
22784
22909
  access: "view"
22785
22910
  },
22911
+ "pipelineAnalytics.pruneEvents": {
22912
+ capName: "pipeline-analytics",
22913
+ capScope: "device",
22914
+ addonId: null,
22915
+ access: "create"
22916
+ },
22786
22917
  "pipelineAnalytics.pruneEventsBefore": {
22787
22918
  capName: "pipeline-analytics",
22788
22919
  capScope: "device",
@@ -23545,6 +23676,12 @@ Object.freeze({
23545
23676
  addonId: null,
23546
23677
  access: "create"
23547
23678
  },
23679
+ "recording.deleteFootprint": {
23680
+ capName: "recording",
23681
+ capScope: "system",
23682
+ addonId: null,
23683
+ access: "delete"
23684
+ },
23548
23685
  "recording.getAvailability": {
23549
23686
  capName: "recording",
23550
23687
  capScope: "system",
@@ -23575,6 +23712,12 @@ Object.freeze({
23575
23712
  addonId: null,
23576
23713
  access: "view"
23577
23714
  },
23715
+ "recording.listOpsLog": {
23716
+ capName: "recording",
23717
+ capScope: "system",
23718
+ addonId: null,
23719
+ access: "view"
23720
+ },
23578
23721
  "recording.locateSegment": {
23579
23722
  capName: "recording",
23580
23723
  capScope: "system",
package/dist/index.mjs CHANGED
@@ -7341,6 +7341,62 @@ var RecordingConfigSchema = object({
7341
7341
  scrubThumbnails: ScrubThumbnailPresetSchema.optional()
7342
7342
  });
7343
7343
  /**
7344
+ * Ops-log — the durable, append-only operations audit shared by the
7345
+ * recordings and events management surfaces.
7346
+ *
7347
+ * ONE row shape is reused for both domains so a single "Activity" view can
7348
+ * merge the recorder's DurableState ring (recordings ops-log) and the
7349
+ * pipeline-analytics SQLite collection (events ops-log). Each row records a
7350
+ * management operation, WHY it ran (reason), and its measurable effect
7351
+ * (itemsAffected + bytesReclaimed). Writes are best-effort — a failed log must
7352
+ * never fail the operation it records.
7353
+ */
7354
+ /** Which management domain the operation belongs to. */
7355
+ var OpsLogDomainSchema = _enum(["recording", "events"]);
7356
+ /** The kind of management operation performed. */
7357
+ var OpsLogOpSchema = _enum([
7358
+ "prune",
7359
+ "manual-delete",
7360
+ "rescan",
7361
+ "retention-run"
7362
+ ]);
7363
+ /** Why the operation ran. */
7364
+ var OpsLogReasonSchema = _enum([
7365
+ "retention",
7366
+ "quota",
7367
+ "manual",
7368
+ "operator"
7369
+ ]);
7370
+ /** One audit row, shared verbatim by both domains. */
7371
+ var OpsLogEntrySchema = object({
7372
+ /** Unique row id. */
7373
+ id: string(),
7374
+ /** Epoch ms the operation completed. */
7375
+ at: number(),
7376
+ domain: OpsLogDomainSchema,
7377
+ op: OpsLogOpSchema,
7378
+ reason: OpsLogReasonSchema,
7379
+ /** The camera the op targeted; null for a cluster/global op. */
7380
+ deviceId: number().nullable(),
7381
+ /** Node that performed the op (the log carries nodeId — no cross-node aggregation). */
7382
+ nodeId: string(),
7383
+ /** Buckets / rows deleted (op-specific unit). */
7384
+ itemsAffected: number(),
7385
+ /** Bytes reclaimed by the op (0 when not measurable). */
7386
+ bytesReclaimed: number(),
7387
+ /** Free-text detail (e.g. "floor moved to <ts>"); null when none. */
7388
+ detail: string().nullable(),
7389
+ /** Who/what triggered the op. */
7390
+ actor: string()
7391
+ });
7392
+ /** Shared query input for the per-domain `listOpsLog` cap methods. */
7393
+ var OpsLogQueryInputSchema = object({
7394
+ /** Restrict to a single camera; omit for every row. */
7395
+ deviceId: number().optional(),
7396
+ /** Max rows returned, newest-first. */
7397
+ limit: number().int().min(1).max(1e3).optional()
7398
+ });
7399
+ /**
7344
7400
  * `StorageLocationType` — an addon-declared id that identifies the *kind* of
7345
7401
  * storage a location serves. Defined here (not in `capabilities/storage.cap.ts`)
7346
7402
  * so the persisted record schema and the consumer-facing cap can both consume it
@@ -16271,6 +16327,26 @@ var TrackCascadeCountsSchema = object({
16271
16327
  /** Per-track CLIP search vectors removed (best-effort). */
16272
16328
  embeddings: number().int()
16273
16329
  });
16330
+ /** Event-store footprint for one camera. */
16331
+ var EventStoreDeviceFootprintSchema = object({
16332
+ deviceId: number(),
16333
+ /** Persisted event rows (motion + object + audio) for the camera. */
16334
+ rows: number().int(),
16335
+ /** Event-owned media bytes on disk for the camera. */
16336
+ bytes: number().int()
16337
+ });
16338
+ /** Aggregate event-store footprint: global totals + per-camera breakdown. */
16339
+ var EventStoreFootprintSchema = object({
16340
+ totalRows: number().int(),
16341
+ totalBytes: number().int(),
16342
+ devices: array(EventStoreDeviceFootprintSchema).readonly()
16343
+ });
16344
+ /** Per-kind counts returned by the event-prune / device-delete mutations. */
16345
+ var EventPruneCountsSchema = object({
16346
+ motion: number().int(),
16347
+ object: number().int(),
16348
+ audio: number().int()
16349
+ });
16274
16350
  DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).readonly()), method(object({
16275
16351
  deviceId: number(),
16276
16352
  trackId: string()
@@ -16334,6 +16410,21 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
16334
16410
  }), {
16335
16411
  kind: "mutation",
16336
16412
  auth: "admin"
16413
+ }), method(object({}), EventStoreFootprintSchema, {
16414
+ kind: "query",
16415
+ auth: "admin"
16416
+ }), method(object({
16417
+ olderThanMs: number(),
16418
+ reason: OpsLogReasonSchema.optional()
16419
+ }), EventPruneCountsSchema, {
16420
+ kind: "mutation",
16421
+ auth: "admin"
16422
+ }), method(object({ deviceId: number() }), EventPruneCountsSchema, {
16423
+ kind: "mutation",
16424
+ auth: "admin"
16425
+ }), method(OpsLogQueryInputSchema, array(OpsLogEntrySchema).readonly(), {
16426
+ kind: "query",
16427
+ auth: "admin"
16337
16428
  }), method(object({
16338
16429
  eventId: string(),
16339
16430
  kind: MediaFileKindEnum.optional()
@@ -19567,13 +19658,29 @@ method(object({
19567
19658
  }), method(object({ deviceId: number() }), RecordingStatusSchema, {
19568
19659
  kind: "mutation",
19569
19660
  auth: "admin"
19570
- }), method(object({ deviceId: number() }), object({
19661
+ }), method(object({
19662
+ deviceId: number(),
19663
+ reason: OpsLogReasonSchema.optional()
19664
+ }), object({
19571
19665
  floorMs: number().nullable(),
19572
19666
  deletedBuckets: number().int(),
19573
19667
  reclaimedBytes: number().int()
19574
19668
  }), {
19575
19669
  kind: "mutation",
19576
19670
  auth: "admin"
19671
+ }), method(object({
19672
+ deviceId: number(),
19673
+ fromMs: number().optional(),
19674
+ toMs: number().optional()
19675
+ }), object({
19676
+ deletedBuckets: number().int(),
19677
+ reclaimedBytes: number().int()
19678
+ }), {
19679
+ kind: "mutation",
19680
+ auth: "admin"
19681
+ }), method(OpsLogQueryInputSchema, array(OpsLogEntrySchema).readonly(), {
19682
+ kind: "query",
19683
+ auth: "admin"
19577
19684
  });
19578
19685
  /**
19579
19686
  * `recordingExport` cap — render a footage time range into a single downloadable
@@ -22695,6 +22802,12 @@ Object.freeze({
22695
22802
  addonId: null,
22696
22803
  access: "delete"
22697
22804
  },
22805
+ "pipelineAnalytics.deleteDeviceEvents": {
22806
+ capName: "pipeline-analytics",
22807
+ capScope: "device",
22808
+ addonId: null,
22809
+ access: "delete"
22810
+ },
22698
22811
  "pipelineAnalytics.deleteTracks": {
22699
22812
  capName: "pipeline-analytics",
22700
22813
  capScope: "device",
@@ -22725,6 +22838,12 @@ Object.freeze({
22725
22838
  addonId: null,
22726
22839
  access: "view"
22727
22840
  },
22841
+ "pipelineAnalytics.getEventStoreFootprint": {
22842
+ capName: "pipeline-analytics",
22843
+ capScope: "device",
22844
+ addonId: null,
22845
+ access: "view"
22846
+ },
22728
22847
  "pipelineAnalytics.getKeyEvents": {
22729
22848
  capName: "pipeline-analytics",
22730
22849
  capScope: "device",
@@ -22767,6 +22886,12 @@ Object.freeze({
22767
22886
  addonId: null,
22768
22887
  access: "view"
22769
22888
  },
22889
+ "pipelineAnalytics.listOpsLog": {
22890
+ capName: "pipeline-analytics",
22891
+ capScope: "device",
22892
+ addonId: null,
22893
+ access: "view"
22894
+ },
22770
22895
  "pipelineAnalytics.listRecentTracks": {
22771
22896
  capName: "pipeline-analytics",
22772
22897
  capScope: "device",
@@ -22779,6 +22904,12 @@ Object.freeze({
22779
22904
  addonId: null,
22780
22905
  access: "view"
22781
22906
  },
22907
+ "pipelineAnalytics.pruneEvents": {
22908
+ capName: "pipeline-analytics",
22909
+ capScope: "device",
22910
+ addonId: null,
22911
+ access: "create"
22912
+ },
22782
22913
  "pipelineAnalytics.pruneEventsBefore": {
22783
22914
  capName: "pipeline-analytics",
22784
22915
  capScope: "device",
@@ -23541,6 +23672,12 @@ Object.freeze({
23541
23672
  addonId: null,
23542
23673
  access: "create"
23543
23674
  },
23675
+ "recording.deleteFootprint": {
23676
+ capName: "recording",
23677
+ capScope: "system",
23678
+ addonId: null,
23679
+ access: "delete"
23680
+ },
23544
23681
  "recording.getAvailability": {
23545
23682
  capName: "recording",
23546
23683
  capScope: "system",
@@ -23571,6 +23708,12 @@ Object.freeze({
23571
23708
  addonId: null,
23572
23709
  access: "view"
23573
23710
  },
23711
+ "recording.listOpsLog": {
23712
+ capName: "recording",
23713
+ capScope: "system",
23714
+ addonId: null,
23715
+ access: "view"
23716
+ },
23574
23717
  "recording.locateSegment": {
23575
23718
  capName: "recording",
23576
23719
  capScope: "system",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-decoder-ffmpeg",
3
- "version": "1.1.17",
3
+ "version": "1.1.18",
4
4
  "description": "Standalone ffmpeg-subprocess decoder fallback addon for CamStack",
5
5
  "keywords": [
6
6
  "camstack",