@camstack/addon-osd-manager 0.1.42 → 0.1.44

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 (18) hide show
  1. package/dist/{MotionZonesSettings-CdyvFlWR.mjs → MotionZonesSettings-Kfufz0ST.mjs} +2 -2
  2. package/dist/{PrivacyMaskSettings-CUfurhy1.mjs → PrivacyMaskSettings-Dx73Qzix.mjs} +4 -4
  3. package/dist/{SceneMonitorEditor-E_PU8Px7.mjs → SceneMonitorEditor-UB2sy-dH.mjs} +3 -3
  4. package/dist/_stub.js +11 -11
  5. package/dist/{_virtual_mf-localSharedImportMap___mfe_internal__addon_osd_manager_page-BmuIjiOx.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_osd_manager_page-BKO7P9eF.mjs} +4 -4
  6. package/dist/_virtual_mf___mfe_internal__addon_osd_manager_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-8ErlyuY8.mjs +26 -0
  7. package/dist/{hostInit-Bf1t6pHC.mjs → hostInit-_w5nikMn.mjs} +3 -3
  8. package/dist/index.js +276 -79
  9. package/dist/index.mjs +276 -79
  10. package/dist/{player-overlays-9-h959au.mjs → player-overlays-CEeNvQmJ.mjs} +1 -1
  11. package/dist/remoteEntry.js +1 -1
  12. package/dist/{responsive-DuPMoboD.mjs → responsive-Bb0wIt10.mjs} +1 -1
  13. package/dist/{square-CbixHwGb.mjs → square-DqTV-QmK.mjs} +1 -1
  14. package/dist/{trash-2---I9LVPc.mjs → trash-2-NlZ3Kw3u.mjs} +1 -1
  15. package/dist/{use-device-snapshot-DtmjvvAg.mjs → use-device-snapshot-BQz4Wma8.mjs} +1 -1
  16. package/dist/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_osd_manager_page__remoteEntry_js-B5mIR9KJ.mjs → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_osd_manager_page__remoteEntry_js-C_N6ECAC.mjs} +1 -1
  17. package/package.json +1 -1
  18. package/dist/_virtual_mf___mfe_internal__addon_osd_manager_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-BI_yNGG4.mjs +0 -26
package/dist/index.mjs CHANGED
@@ -8191,6 +8191,13 @@ var MediaRelocateModeSchema = _enum([
8191
8191
  ]);
8192
8192
  var RelocateMediaInputSchema = object({
8193
8193
  toLocationId: string(),
8194
+ /**
8195
+ * Restrict the pass to rows currently on this location. Omitted / `'*'` =
8196
+ * every row that is not already on `toLocationId` (the historical
8197
+ * behaviour). A named source is what a from→to migration needs: without it
8198
+ * "move events off disk 2" also emptied disk 1.
8199
+ */
8200
+ fromLocationId: string().optional(),
8194
8201
  throttleMbps: number().min(1).max(1e3).optional(),
8195
8202
  /** Omitted = `move`, the pre-existing behaviour. */
8196
8203
  mode: MediaRelocateModeSchema.optional()
@@ -8258,6 +8265,19 @@ var StorageMigrationDestinationsSchema = object({
8258
8265
  galleryMedia: string().min(1).optional()
8259
8266
  }).refine((value) => Object.keys(value).length > 0, { message: "select at least one storage class" });
8260
8267
  /**
8268
+ * Optional named source per class. Omitted = the class's current default
8269
+ * (the historical behaviour). A named source that is NOT the default is a
8270
+ * drain of that disk: bytes move, the default stays, and the source is
8271
+ * disabled when the move finishes.
8272
+ */
8273
+ var StorageMigrationSourcesSchema = object({
8274
+ recordings: string().min(1).optional(),
8275
+ recordingsLow: string().min(1).optional(),
8276
+ eventMedia: string().min(1).optional(),
8277
+ backups: string().min(1).optional(),
8278
+ galleryMedia: string().min(1).optional()
8279
+ }).optional();
8280
+ /**
8261
8281
  * How a migration sequences the cutover against the byte move.
8262
8282
  *
8263
8283
  * - `blocking` — the historical order: pause, move every byte, repoint,
@@ -8279,6 +8299,8 @@ var StorageMigrationModeSchema = _enum(["blocking", "nonBlocking"]);
8279
8299
  /** Shared input for planning and starting an orchestrated storage migration. */
8280
8300
  var StorageMigrationInputSchema = object({
8281
8301
  destinations: StorageMigrationDestinationsSchema,
8302
+ /** Omitted = each class's current default. */
8303
+ sources: StorageMigrationSourcesSchema,
8282
8304
  throttleMbps: number().min(1).max(1e3).optional(),
8283
8305
  /** Omitted = `blocking`, which stays the default. */
8284
8306
  mode: StorageMigrationModeSchema.optional()
@@ -8358,6 +8380,13 @@ var StorageMigrationMoveSchema = object({
8358
8380
  storageClass: StorageMigrationClassSchema,
8359
8381
  fromLocationId: string(),
8360
8382
  toLocationId: string(),
8383
+ /**
8384
+ * True when `from` was NOT the class default at plan time. The move still
8385
+ * copies bytes, but the default is left alone and the source is disabled
8386
+ * once the copy verifies. Absent on jobs planned before this field existed
8387
+ * — those jobs always repointed, which is `false`.
8388
+ */
8389
+ freezeSource: boolean().optional(),
8361
8390
  moverJobId: string().nullable(),
8362
8391
  state: RelocateJobStateSchema.nullable(),
8363
8392
  error: string().nullable(),
@@ -8371,6 +8400,7 @@ var StorageMigrationJobSchema = object({
8371
8400
  * can tell a seconds-long cutover from a thirty-hour one. */
8372
8401
  mode: StorageMigrationModeSchema,
8373
8402
  destinations: StorageMigrationDestinationsSchema,
8403
+ sources: StorageMigrationSourcesSchema,
8374
8404
  throttleMbps: number(),
8375
8405
  moves: array(StorageMigrationMoveSchema),
8376
8406
  pauseLeaseId: string().nullable(),
@@ -8396,6 +8426,7 @@ var StorageMigrationFindingSchema = object({
8396
8426
  });
8397
8427
  var StorageMigrationPlanSchema = object({
8398
8428
  destinations: StorageMigrationDestinationsSchema,
8429
+ sources: StorageMigrationSourcesSchema,
8399
8430
  /** The mode this plan was built for. A plan is only valid for its mode: the
8400
8431
  * `eventMedia` seal gate and the single-cardinality refusal both depend on
8401
8432
  * it. */
@@ -8403,7 +8434,8 @@ var StorageMigrationPlanSchema = object({
8403
8434
  moves: array(object({
8404
8435
  storageClass: StorageMigrationClassSchema,
8405
8436
  fromLocationId: string(),
8406
- toLocationId: string()
8437
+ toLocationId: string(),
8438
+ freezeSource: boolean().optional()
8407
8439
  })),
8408
8440
  findings: array(StorageMigrationFindingSchema)
8409
8441
  });
@@ -8581,10 +8613,51 @@ var LedgerWalkReportSchema = object({
8581
8613
  var RelocatableMediaCountSchema = object({ rows: number().int().nonnegative() }).nullable();
8582
8614
  var RelocatableMediaCountInputSchema = object({
8583
8615
  toLocationId: string().min(1),
8616
+ /** Restrict the count to one source; omitted / `'*'` = every non-target row. */
8617
+ fromLocationId: string().optional(),
8584
8618
  /** Omitted = `move`. */
8585
8619
  mode: MediaRelocateModeSchema.optional()
8586
8620
  });
8587
8621
  /**
8622
+ * Operator cleanup of leftover analytics rows, optional debug media, and
8623
+ * ghost ledger entries on frozen footage locations.
8624
+ *
8625
+ * A pass is tens of minutes on a standing backlog. The hub method RETURNS
8626
+ * `{ jobId }` immediately; progress is `cleanupStatus`. Awaiting the work
8627
+ * is how `addons.custom` hit the 60 s UDS deadline while reclaim continued
8628
+ * with no operator-visible status.
8629
+ */
8630
+ var StorageCleanupPhaseSchema = _enum([
8631
+ "orphans",
8632
+ "debug-media",
8633
+ "ghost-ledger",
8634
+ "done",
8635
+ "failed",
8636
+ "cancelled"
8637
+ ]);
8638
+ var StorageCleanupInputSchema = object({
8639
+ /** Also walk motion stills / track filmstrips. Off by default. */
8640
+ includeDebugMedia: boolean().optional() });
8641
+ var StorageCleanupJobSchema = object({
8642
+ jobId: string(),
8643
+ phase: StorageCleanupPhaseSchema,
8644
+ includeDebugMedia: boolean(),
8645
+ orphansReclaimed: number().int().nonnegative(),
8646
+ orphanBytesReclaimed: number().int().nonnegative(),
8647
+ debugMediaReclaimed: number().int().nonnegative(),
8648
+ debugMediaBytesReclaimed: number().int().nonnegative(),
8649
+ ghostsForgotten: number().int().nonnegative(),
8650
+ ghostBytesForgotten: number().int().nonnegative(),
8651
+ /** Short operator-facing line: current collection, pass, or location. */
8652
+ detail: string().nullable(),
8653
+ cancelRequested: boolean(),
8654
+ startedAt: number(),
8655
+ updatedAt: number(),
8656
+ finishedAt: number().nullable(),
8657
+ error: string().nullable()
8658
+ });
8659
+ var StorageCleanupStatusInputSchema = object({ jobId: string().optional() });
8660
+ /**
8588
8661
  * `StorageLocationType` — an addon-declared id that identifies the *kind* of
8589
8662
  * storage a location serves. Defined here (not in `capabilities/storage.cap.ts`)
8590
8663
  * so the persisted record schema and the consumer-facing cap can both consume it
@@ -8612,11 +8685,10 @@ var StorageLocationTypeSchema = string().regex(/^[a-z][a-zA-Z0-9-]*$/);
8612
8685
  * The default location for a type uses `id === <type>:default` by
8613
8686
  * convention (the bare type ref like `'backups'` resolves to it).
8614
8687
  *
8615
- * `isSystem: true` marks a location as orchestrator-seeded and
8616
- * undeletable. The bootstrap-installed defaults (one per type) carry
8617
- * this flag; operator-added locations don't. Editing the config of
8618
- * a system location is allowed (path migration, provider swap) but
8619
- * deleting it is rejected at the cap level.
8688
+ * `isSystem` is a legacy persisted flag. Seed still creates the initial
8689
+ * `<type>:default` locations; the flag is no longer a lock, a badge, or a
8690
+ * prune selector. New writes leave it false. Deletion is gated on uniqueness
8691
+ * / last-enabled, not on this bit.
8620
8692
  */
8621
8693
  var StorageLocationSchema = object({
8622
8694
  id: string().regex(/^[a-z][a-zA-Z0-9-]*:[a-zA-Z0-9-]+$/),
@@ -14190,6 +14262,27 @@ var deviceManagerCapability = {
14190
14262
  kind: "mutation",
14191
14263
  auth: "admin"
14192
14264
  }),
14265
+ /** Rename a room: replace the label in the registry IN PLACE and move
14266
+ * every device that carried it, as ONE server operation.
14267
+ *
14268
+ * The admin UI used to do this as `addLocation(to)` → N ×
14269
+ * `setLocation(device, to)` → `removeLocation(from)` from the browser.
14270
+ * Nothing bound those three together, so a closed tab left the fleet
14271
+ * split across two rooms — one of which the operator believed was gone.
14272
+ *
14273
+ * `from` is matched the way the registry matches everywhere else
14274
+ * (trimmed, case-insensitive) and need NOT be registered: the registry is
14275
+ * a suggestion list, and the devices that most need a rename are exactly
14276
+ * the ones carrying a label nobody registered. `to` renames onto an
14277
+ * existing room by MERGING into it, leaving no duplicate label. An empty
14278
+ * `to` throws before anything is written. */
14279
+ renameLocation: method(object({
14280
+ from: string(),
14281
+ to: string()
14282
+ }), object({ moved: number() }), {
14283
+ kind: "mutation",
14284
+ auth: "admin"
14285
+ }),
14193
14286
  /** Soft-disable / re-enable the device. Drivers consult
14194
14287
  * `BaseDevice.disabled` to gate lifecycle hooks. */
14195
14288
  setDisabled: method(object({
@@ -21671,46 +21764,6 @@ var RecentTracksPageSchema = object({
21671
21764
  /** Cursor for the next page, or null when this page is the last. */
21672
21765
  nextCursor: string().nullable()
21673
21766
  });
21674
- var LIST_GROUPS_DEFAULT_LIMIT = 40;
21675
- var LIST_GROUPS_MAX_LIMIT = 100;
21676
- var AnalyticsGroupRecordSchema = object({
21677
- id: string(),
21678
- deviceId: number().int(),
21679
- openedAt: number().int(),
21680
- closedAt: number().int(),
21681
- timestamp: number().int(),
21682
- memberCount: number().int(),
21683
- memberTrackIds: array(string()).readonly(),
21684
- className: string(),
21685
- classes: array(string()).readonly(),
21686
- /** Relative event-media path, or null when the group has no picture yet. */
21687
- mediaUrl: string().nullable(),
21688
- singleton: boolean()
21689
- });
21690
- var AnalyticsGroupMemberSchema = object({
21691
- trackId: string(),
21692
- deviceId: number().int(),
21693
- className: string(),
21694
- firstSeen: number().int(),
21695
- lastSeen: number().int(),
21696
- mediaUrl: string().nullable()
21697
- });
21698
- var AnalyticsGroupDetailSchema = AnalyticsGroupRecordSchema.extend({ members: array(AnalyticsGroupMemberSchema).readonly() });
21699
- var ListGroupsQueryInput = object({
21700
- /** Devices to merge. An empty array yields `{ groups: [], nextCursor: null }`. */
21701
- deviceIds: array(number()),
21702
- /** Window lower bound on `closedAt` (inclusive). */
21703
- since: number().optional(),
21704
- /** Window upper bound on `openedAt` (inclusive). */
21705
- until: number().optional(),
21706
- limit: number().int().min(1).max(LIST_GROUPS_MAX_LIMIT).default(LIST_GROUPS_DEFAULT_LIMIT),
21707
- /** Opaque continuation cursor from a previous page's `nextCursor`. */
21708
- cursor: string().optional()
21709
- });
21710
- var ListGroupsPageSchema = object({
21711
- groups: array(AnalyticsGroupRecordSchema).readonly(),
21712
- nextCursor: string().nullable()
21713
- });
21714
21767
  var KEY_EVENTS_DEFAULT_LIMIT = 50;
21715
21768
  var KEY_EVENTS_MAX_LIMIT = 200;
21716
21769
  var KeyEventQueryInput = object({
@@ -21814,9 +21867,7 @@ var TrackCascadeCountsSchema = object({
21814
21867
  /** Unassigned plate reads removed (best-effort; plate leg deferred to plate-intelligence). */
21815
21868
  plates: number().int(),
21816
21869
  /** Per-track CLIP search vectors removed (best-effort). */
21817
- embeddings: number().int(),
21818
- /** Group membership + group rows removed with their last member (best-effort). */
21819
- groups: number().int()
21870
+ embeddings: number().int()
21820
21871
  });
21821
21872
  /** Disk-wins reconcile: media rows whose blobs are gone, then empty tracks. */
21822
21873
  var DiskReconcileCountsSchema = object({
@@ -21986,6 +22037,47 @@ var RebuildStatusSchema = object({
21986
22037
  /** Present when the pass ended by throwing. */
21987
22038
  error: string().nullable()
21988
22039
  });
22040
+ /**
22041
+ * Acknowledgement that a debug-media reclaim STARTED.
22042
+ *
22043
+ * The pass is paced at ~2 MB/s over a standing 100 GB — tens of minutes — so
22044
+ * it runs detached and this returns immediately. Awaiting it is how the
22045
+ * `addons.custom` door hit the 60 s UDS deadline while the walk carried on
22046
+ * with no status. Poll {@link pipelineAnalyticsCapability.methods.getMediaReclaimStatus}.
22047
+ */
22048
+ var MediaReclaimStartResultSchema = object({
22049
+ started: boolean(),
22050
+ /** True when a pass was already running; the new request is ignored. */
22051
+ alreadyRunning: boolean()
22052
+ });
22053
+ var MediaReclaimInputSchema = object({
22054
+ mode: _enum(["report", "reclaim"]).default("report"),
22055
+ scopes: array(_enum(["motion-still", "track-filmstrip"])).min(1).optional(),
22056
+ deviceIds: array(number().int()).min(1).optional(),
22057
+ restart: boolean().optional(),
22058
+ pageSize: number().int().min(50).max(5e3).optional(),
22059
+ maxRowsPerDevice: number().int().min(1).max(5e5).optional(),
22060
+ maxReclaimPerDevice: number().int().min(1).max(5e5).optional(),
22061
+ maxBytesPerRun: number().int().min(1).optional(),
22062
+ budgetMinutes: number().int().min(1).max(720).optional(),
22063
+ throttleBytesPerSec: number().int().min(64 * 1024).optional(),
22064
+ graceMinutes: number().int().min(1).max(10080).optional()
22065
+ });
22066
+ var MediaReclaimStatusSchema = object({
22067
+ running: boolean(),
22068
+ mode: _enum(["report", "reclaim"]).nullable(),
22069
+ totalExamined: number(),
22070
+ totalEligible: number(),
22071
+ totalReclaimed: number(),
22072
+ totalBytesReclaimed: number(),
22073
+ totalRefused: number(),
22074
+ /** Device+scope windows finished in this pass. */
22075
+ devicesDone: number(),
22076
+ complete: boolean().nullable(),
22077
+ startedAtMs: number().nullable(),
22078
+ finishedAtMs: number().nullable(),
22079
+ error: string().nullable()
22080
+ });
21989
22081
  var ReplayFrameInputSchema = object({
21990
22082
  timestamp: number(),
21991
22083
  frame: PipelineRunResultBridge
@@ -22050,16 +22142,6 @@ var pipelineAnalyticsCapability = {
22050
22142
  * are not included (same contract as `listTracks`).
22051
22143
  */
22052
22144
  listRecentTracks: method(RecentTracksQueryInput, RecentTracksPageSchema),
22053
- /**
22054
- * Batched co-moving group listing — the Groups feed. Same merge/cursor
22055
- * contract as {@link listRecentTracks}. A group is a sealed partition of
22056
- * one session; `getGroup` is the detail with members.
22057
- */
22058
- listGroups: method(ListGroupsQueryInput, ListGroupsPageSchema),
22059
- getGroup: method(object({
22060
- deviceId: number(),
22061
- groupId: string().min(1)
22062
- }), AnalyticsGroupDetailSchema.nullable()),
22063
22145
  clearTracks: method(object({ deviceId: number() }), _void(), {
22064
22146
  kind: "mutation",
22065
22147
  auth: "admin"
@@ -22408,6 +22490,20 @@ var pipelineAnalyticsCapability = {
22408
22490
  auth: "admin"
22409
22491
  }),
22410
22492
  /**
22493
+ * Reclaim the standing debug-media backlog (motion-visit stills + track
22494
+ * filmstrips). DETACHED: returns `{ started }` immediately. The pass is
22495
+ * tens of minutes; awaiting it is a timeout, not a verdict. Dry-run unless
22496
+ * `mode: 'reclaim'`. Poll `getMediaReclaimStatus`.
22497
+ */
22498
+ reclaimDebugMedia: method(MediaReclaimInputSchema, MediaReclaimStartResultSchema, {
22499
+ kind: "mutation",
22500
+ auth: "admin"
22501
+ }),
22502
+ getMediaReclaimStatus: method(object({}), MediaReclaimStatusSchema, {
22503
+ kind: "query",
22504
+ auth: "admin"
22505
+ }),
22506
+ /**
22411
22507
  * The CHEAP QUESTION, asked before any media moves: how big is the dataset
22412
22508
  * the marked (`markForTrain`) tracks would produce?
22413
22509
  *
@@ -25360,7 +25456,23 @@ var storageMigrationCapability = {
25360
25456
  drain: method(StorageMigrationDrainInputSchema, object({ jobId: string() }), {
25361
25457
  kind: "mutation",
25362
25458
  auth: "admin"
25363
- })
25459
+ }),
25460
+ /**
25461
+ * One operator cleanup of leftover analytics (DB + blobs) and ghost
25462
+ * ledger rows on frozen footage locations. Optional debug-media sweep.
25463
+ * Returns immediately; poll {@link cleanupStatus}.
25464
+ */
25465
+ cleanupStart: method(StorageCleanupInputSchema, object({ jobId: string() }), {
25466
+ kind: "mutation",
25467
+ auth: "admin"
25468
+ }),
25469
+ cleanupStatus: method(StorageCleanupStatusInputSchema, StorageCleanupJobSchema.nullable(), { auth: "admin" }),
25470
+ cleanupCancel: method(object({ jobId: string() }), object({ cancelled: boolean() }), {
25471
+ kind: "mutation",
25472
+ auth: "admin"
25473
+ }),
25474
+ /** Recent finished migration jobs, newest first. The live job is `status`. */
25475
+ history: method(object({}), array(StorageMigrationJobSchema).readonly(), { auth: "admin" })
25364
25476
  }
25365
25477
  };
25366
25478
  var ProviderInfoSchema = discriminatedUnion("shouldSaveDiskSpace", [object({
@@ -33513,6 +33625,33 @@ var RecordingRebalanceInputSchema = object({
33513
33625
  minMoveGb: number().min(0).optional()
33514
33626
  });
33515
33627
  /**
33628
+ * Operator-facing placement of one camera onto a recordings location.
33629
+ *
33630
+ * `pinLocationId` is the operator instruction: a location id, or `null` for
33631
+ * Auto (the planner may move this camera). `locationId` is where high/mid
33632
+ * currently write — the plan, which may disagree with the pin when Auto.
33633
+ */
33634
+ var RecordingDevicePlacementSchema = object({
33635
+ deviceId: number().int(),
33636
+ profile: string(),
33637
+ locationId: string()
33638
+ });
33639
+ var RecordingDevicePinSchema = object({
33640
+ deviceId: number().int(),
33641
+ /** Recordings-class location this camera is pinned to. */
33642
+ locationId: string()
33643
+ });
33644
+ var RecordingPlacementViewSchema = object({
33645
+ assignments: array(RecordingDevicePlacementSchema),
33646
+ pins: array(RecordingDevicePinSchema),
33647
+ defaultLocations: record(string(), string())
33648
+ });
33649
+ var RecordingSetDevicePlacementInputSchema = object({
33650
+ deviceId: number().int(),
33651
+ /** `null` = Auto. Otherwise a `recordings:*` location id. */
33652
+ locationId: string().nullable()
33653
+ });
33654
+ /**
33516
33655
  * Result of locating footage at a wall-clock instant for one device/profile.
33517
33656
  * `segment` carries the covering segment's window; `gap` reports the forward
33518
33657
  * nearest covered edge (`null` past the end of footage / when none exists)
@@ -33865,6 +34004,22 @@ var recordingCapability = {
33865
34004
  startStorageRebalance: method(RecordingRebalanceInputSchema, RecordingRebalancePlanSchema, {
33866
34005
  kind: "mutation",
33867
34006
  auth: "admin"
34007
+ }),
34008
+ /**
34009
+ * The placement plan in force plus operator pins. Drives the Locations
34010
+ * admin page: Auto vs a named recordings location, per camera.
34011
+ */
34012
+ getPlacement: method(object({}), RecordingPlacementViewSchema, {
34013
+ kind: "query",
34014
+ auth: "admin"
34015
+ }),
34016
+ /**
34017
+ * Pin a camera to a recordings location, or clear the pin (Auto). High and
34018
+ * mid follow the pin; low stays with the recordingsLow planner.
34019
+ */
34020
+ setDevicePlacement: method(RecordingSetDevicePlacementInputSchema, object({ ok: literal(true) }), {
34021
+ kind: "mutation",
34022
+ auth: "admin"
33868
34023
  })
33869
34024
  }
33870
34025
  };
@@ -38303,6 +38458,12 @@ Object.freeze({
38303
38458
  addonId: null,
38304
38459
  access: "delete"
38305
38460
  },
38461
+ "deviceManager.renameLocation": {
38462
+ capName: "device-manager",
38463
+ capScope: "system",
38464
+ addonId: null,
38465
+ access: "create"
38466
+ },
38306
38467
  "deviceManager.runDeviceAction": {
38307
38468
  capName: "device-manager",
38308
38469
  capScope: "system",
@@ -39995,19 +40156,19 @@ Object.freeze({
39995
40156
  addonId: null,
39996
40157
  access: "view"
39997
40158
  },
39998
- "pipelineAnalytics.getGroup": {
40159
+ "pipelineAnalytics.getKeyEvents": {
39999
40160
  capName: "pipeline-analytics",
40000
40161
  capScope: "device",
40001
40162
  addonId: null,
40002
40163
  access: "view"
40003
40164
  },
40004
- "pipelineAnalytics.getKeyEvents": {
40165
+ "pipelineAnalytics.getKeyEventsBatch": {
40005
40166
  capName: "pipeline-analytics",
40006
40167
  capScope: "device",
40007
40168
  addonId: null,
40008
40169
  access: "view"
40009
40170
  },
40010
- "pipelineAnalytics.getKeyEventsBatch": {
40171
+ "pipelineAnalytics.getMediaReclaimStatus": {
40011
40172
  capName: "pipeline-analytics",
40012
40173
  capScope: "device",
40013
40174
  addonId: null,
@@ -40097,12 +40258,6 @@ Object.freeze({
40097
40258
  addonId: null,
40098
40259
  access: "view"
40099
40260
  },
40100
- "pipelineAnalytics.listGroups": {
40101
- capName: "pipeline-analytics",
40102
- capScope: "device",
40103
- addonId: null,
40104
- access: "view"
40105
- },
40106
40261
  "pipelineAnalytics.listOpsLog": {
40107
40262
  capName: "pipeline-analytics",
40108
40263
  capScope: "device",
@@ -40187,6 +40342,12 @@ Object.freeze({
40187
40342
  addonId: null,
40188
40343
  access: "create"
40189
40344
  },
40345
+ "pipelineAnalytics.reclaimDebugMedia": {
40346
+ capName: "pipeline-analytics",
40347
+ capScope: "device",
40348
+ addonId: null,
40349
+ access: "create"
40350
+ },
40190
40351
  "pipelineAnalytics.reconcileFromDisk": {
40191
40352
  capName: "pipeline-analytics",
40192
40353
  capScope: "device",
@@ -41111,6 +41272,12 @@ Object.freeze({
41111
41272
  addonId: null,
41112
41273
  access: "view"
41113
41274
  },
41275
+ "recording.getPlacement": {
41276
+ capName: "recording",
41277
+ capScope: "system",
41278
+ addonId: null,
41279
+ access: "view"
41280
+ },
41114
41281
  "recording.getPlaybackManifest": {
41115
41282
  capName: "recording",
41116
41283
  capScope: "system",
@@ -41237,6 +41404,12 @@ Object.freeze({
41237
41404
  addonId: null,
41238
41405
  access: "create"
41239
41406
  },
41407
+ "recording.setDevicePlacement": {
41408
+ capName: "recording",
41409
+ capScope: "system",
41410
+ addonId: null,
41411
+ access: "create"
41412
+ },
41240
41413
  "recording.startStorageMigrationMove": {
41241
41414
  capName: "recording",
41242
41415
  capScope: "system",
@@ -41681,12 +41854,36 @@ Object.freeze({
41681
41854
  addonId: null,
41682
41855
  access: "create"
41683
41856
  },
41857
+ "storageMigration.cleanupCancel": {
41858
+ capName: "storage-migration",
41859
+ capScope: "system",
41860
+ addonId: null,
41861
+ access: "create"
41862
+ },
41863
+ "storageMigration.cleanupStart": {
41864
+ capName: "storage-migration",
41865
+ capScope: "system",
41866
+ addonId: null,
41867
+ access: "create"
41868
+ },
41869
+ "storageMigration.cleanupStatus": {
41870
+ capName: "storage-migration",
41871
+ capScope: "system",
41872
+ addonId: null,
41873
+ access: "view"
41874
+ },
41684
41875
  "storageMigration.drain": {
41685
41876
  capName: "storage-migration",
41686
41877
  capScope: "system",
41687
41878
  addonId: null,
41688
41879
  access: "create"
41689
41880
  },
41881
+ "storageMigration.history": {
41882
+ capName: "storage-migration",
41883
+ capScope: "system",
41884
+ addonId: null,
41885
+ access: "view"
41886
+ },
41690
41887
  "storageMigration.movers": {
41691
41888
  capName: "storage-migration",
41692
41889
  capScope: "system",
@@ -43683,11 +43880,6 @@ Object.freeze({
43683
43880
  form: "single",
43684
43881
  optional: true
43685
43882
  }],
43686
- "pipelineAnalytics.getGroup": [{
43687
- name: "deviceId",
43688
- form: "single",
43689
- optional: false
43690
- }],
43691
43883
  "pipelineAnalytics.getKeyEvents": [{
43692
43884
  name: "deviceId",
43693
43885
  form: "single",
@@ -43753,11 +43945,6 @@ Object.freeze({
43753
43945
  form: "single",
43754
43946
  optional: false
43755
43947
  }],
43756
- "pipelineAnalytics.listGroups": [{
43757
- name: "deviceIds",
43758
- form: "array",
43759
- optional: false
43760
- }],
43761
43948
  "pipelineAnalytics.listOpsLog": [{
43762
43949
  name: "deviceId",
43763
43950
  form: "single",
@@ -43803,6 +43990,11 @@ Object.freeze({
43803
43990
  form: "single",
43804
43991
  optional: true
43805
43992
  }],
43993
+ "pipelineAnalytics.reclaimDebugMedia": [{
43994
+ name: "deviceIds",
43995
+ form: "array",
43996
+ optional: true
43997
+ }],
43806
43998
  "pipelineAnalytics.reconcileFromDisk": [{
43807
43999
  name: "deviceId",
43808
44000
  form: "single",
@@ -44168,6 +44360,11 @@ Object.freeze({
44168
44360
  form: "single",
44169
44361
  optional: false
44170
44362
  }],
44363
+ "recording.setDevicePlacement": [{
44364
+ name: "deviceId",
44365
+ form: "single",
44366
+ optional: false
44367
+ }],
44171
44368
  "recording.startStorageMigrationMove": [{
44172
44369
  name: "deviceId",
44173
44370
  form: "single",
@@ -1,5 +1,5 @@
1
1
  import { h as e, l as t, u as n, y as r } from "./_virtual_mf___mfe_internal__addon_osd_manager_page__loadShare__react__loadShare__.js-Bs1t18EM.mjs";
2
- import { o as i, s as a } from "./responsive-DuPMoboD.mjs";
2
+ import { o as i, s as a } from "./responsive-Bb0wIt10.mjs";
3
3
  import { n as o, r as s, t as c } from "./_virtual_mf___mfe_internal__addon_osd_manager_page__loadShare__react_mf_1_jsx_mf_2_runtime__loadShare__.js-DalfdIDw.mjs";
4
4
  var l = a("chevron-down", [["path", {
5
5
  d: "m6 9 6 6 6-6",
@@ -1,2 +1,2 @@
1
- import { n as e, t } from "./virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_osd_manager_page__remoteEntry_js-B5mIR9KJ.mjs";
1
+ import { n as e, t } from "./virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_osd_manager_page__remoteEntry_js-C_N6ECAC.mjs";
2
2
  export { t as get, e as init };
@@ -1,6 +1,6 @@
1
1
  import { c as e, g as t, h as n, l as r, n as i, p as a, r as o, t as s, u as c, y as l } from "./_virtual_mf___mfe_internal__addon_osd_manager_page__loadShare__react__loadShare__.js-Bs1t18EM.mjs";
2
2
  import "./_virtual_mf___mfe_internal__addon_osd_manager_page__loadShare__react_mf_1_jsx_mf_2_runtime__loadShare__.js-DalfdIDw.mjs";
3
- import { n as u } from "./_virtual_mf___mfe_internal__addon_osd_manager_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-BI_yNGG4.mjs";
3
+ import { n as u } from "./_virtual_mf___mfe_internal__addon_osd_manager_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-8ErlyuY8.mjs";
4
4
  //#region ../ui-library/node_modules/lucide-react/dist/esm/shared/src/utils/mergeClasses.js
5
5
  l();
6
6
  var d = (...e) => e.filter((e, t, n) => !!e && e.trim() !== "" && n.indexOf(e) === t).join(" ").trim(), f = (e) => e.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase(), p = (e) => e.replace(/^([A-Z])|[\s-_]+(\w)/g, (e, t, n) => n ? n.toUpperCase() : t.toLowerCase()), m = (e) => {
@@ -1,4 +1,4 @@
1
- import { s as e } from "./responsive-DuPMoboD.mjs";
1
+ import { s as e } from "./responsive-Bb0wIt10.mjs";
2
2
  var t = e("eye-off", [
3
3
  ["path", {
4
4
  d: "M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49",
@@ -1,4 +1,4 @@
1
- import { s as e } from "./responsive-DuPMoboD.mjs";
1
+ import { s as e } from "./responsive-Bb0wIt10.mjs";
2
2
  var t = e("trash-2", [
3
3
  ["path", {
4
4
  d: "M10 11v6",
@@ -1,5 +1,5 @@
1
1
  import { c as e, h as t, p as n, y as r } from "./_virtual_mf___mfe_internal__addon_osd_manager_page__loadShare__react__loadShare__.js-Bs1t18EM.mjs";
2
- import { s as i } from "./responsive-DuPMoboD.mjs";
2
+ import { s as i } from "./responsive-Bb0wIt10.mjs";
3
3
  var a = i("camera", [["path", {
4
4
  d: "M13.997 4a2 2 0 0 1 1.76 1.05l.486.9A2 2 0 0 0 18.003 7H20a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V9a2 2 0 0 1 2-2h1.997a2 2 0 0 0 1.759-1.048l.489-.904A2 2 0 0 1 10.004 4z",
5
5
  key: "18u6gg"
@@ -2753,7 +2753,7 @@ async function rr(e) {
2753
2753
  }
2754
2754
  }
2755
2755
  async function ir() {
2756
- return tr ||= rr(() => import("./_virtual_mf-localSharedImportMap___mfe_internal__addon_osd_manager_page-BmuIjiOx.mjs")).catch((e) => {
2756
+ return tr ||= rr(() => import("./_virtual_mf-localSharedImportMap___mfe_internal__addon_osd_manager_page-BKO7P9eF.mjs")).catch((e) => {
2757
2757
  throw tr = void 0, e;
2758
2758
  }), tr;
2759
2759
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-osd-manager",
3
- "version": "0.1.42",
3
+ "version": "0.1.44",
4
4
  "description": "Binds camera on-screen-display slots to live state and recognitions",
5
5
  "keywords": [
6
6
  "camstack",