@camstack/system 1.2.164 → 1.2.166

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 (68) hide show
  1. package/dist/addon-runner.js +1 -1
  2. package/dist/addon-runner.mjs +1 -1
  3. package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.js +1 -1
  4. package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.mjs +1 -1
  5. package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.js +1 -1
  6. package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.mjs +1 -1
  7. package/dist/builtins/alerts/alerts.addon.js +1 -1
  8. package/dist/builtins/alerts/alerts.addon.mjs +1 -1
  9. package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.js +1 -1
  10. package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.mjs +1 -1
  11. package/dist/builtins/console-logging/index.js +1 -1
  12. package/dist/builtins/console-logging/index.mjs +1 -1
  13. package/dist/builtins/core-blocks/core-blocks.addon.js +1 -1
  14. package/dist/builtins/core-blocks/core-blocks.addon.mjs +1 -1
  15. package/dist/builtins/device-manager/device-manager.addon.js +2 -2
  16. package/dist/builtins/device-manager/device-manager.addon.mjs +2 -2
  17. package/dist/builtins/doorbell/virtual-doorbell.addon.js +1 -1
  18. package/dist/builtins/doorbell/virtual-doorbell.addon.mjs +1 -1
  19. package/dist/builtins/hub-forwarder/index.js +1 -1
  20. package/dist/builtins/hub-forwarder/index.mjs +1 -1
  21. package/dist/builtins/liveness-monitor/liveness-monitor.addon.js +1 -1
  22. package/dist/builtins/liveness-monitor/liveness-monitor.addon.mjs +1 -1
  23. package/dist/builtins/local-auth/local-auth.addon.js +1 -1
  24. package/dist/builtins/local-auth/local-auth.addon.mjs +1 -1
  25. package/dist/builtins/local-network/local-network.addon.js +1 -1
  26. package/dist/builtins/local-network/local-network.addon.mjs +1 -1
  27. package/dist/builtins/loki-logging/index.js +1 -1
  28. package/dist/builtins/loki-logging/index.mjs +1 -1
  29. package/dist/builtins/native-metrics/native-metrics.addon.js +1 -1
  30. package/dist/builtins/native-metrics/native-metrics.addon.mjs +1 -1
  31. package/dist/builtins/platform-probe/index.js +1 -1
  32. package/dist/builtins/platform-probe/index.mjs +1 -1
  33. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.js +1 -1
  34. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.mjs +1 -1
  35. package/dist/builtins/snapshot/index.js +1 -1
  36. package/dist/builtins/snapshot/index.mjs +1 -1
  37. package/dist/builtins/sqlite-storage/filesystem-storage.addon.js +1 -1
  38. package/dist/builtins/sqlite-storage/filesystem-storage.addon.mjs +1 -1
  39. package/dist/builtins/sqlite-storage/index.d.ts +1 -1
  40. package/dist/builtins/sqlite-storage/index.js +2 -0
  41. package/dist/builtins/sqlite-storage/index.mjs +2 -2
  42. package/dist/builtins/sqlite-storage/query-profiler.d.ts +21 -0
  43. package/dist/builtins/sqlite-storage/sqlite-settings.addon.js +0 -0
  44. package/dist/builtins/sqlite-storage/sqlite-settings.addon.mjs +0 -0
  45. package/dist/builtins/storage-orchestrator/location-occupancy.d.ts +19 -0
  46. package/dist/builtins/storage-orchestrator/storage-cleanup-coordinator.d.ts +68 -0
  47. package/dist/builtins/storage-orchestrator/storage-migration-coordinator.d.ts +14 -0
  48. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.d.ts +13 -8
  49. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.js +441 -100
  50. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.mjs +443 -100
  51. package/dist/builtins/storage-orchestrator/storage-orchestrator.service.d.ts +11 -13
  52. package/dist/builtins/system-config/system-config.addon.js +1 -1
  53. package/dist/builtins/system-config/system-config.addon.mjs +1 -1
  54. package/dist/builtins/winston-logging/index.js +1 -1
  55. package/dist/builtins/winston-logging/index.mjs +1 -1
  56. package/dist/{dist-BhE8zNfY.js → dist-CFTKQGym.js} +185 -7
  57. package/dist/{dist-BpsHt11f.mjs → dist-Dw9cm1NS.mjs} +180 -8
  58. package/dist/index.js +2 -2
  59. package/dist/index.mjs +2 -2
  60. package/dist/kernel/deps/manifest-system-deps.d.ts +5 -2
  61. package/dist/kernel/deps/system-package-allowlist.d.ts +12 -0
  62. package/dist/kernel/deps/system-package-broker.d.ts +31 -0
  63. package/dist/kernel/deps/system-package-client.d.ts +9 -0
  64. package/dist/{manifest-system-deps-CJLqfJUs.js → manifest-system-deps-BIxY1Y5e.js} +140 -5
  65. package/dist/{manifest-system-deps-Bk_XLYbB.mjs → manifest-system-deps-DTz_zNQf.mjs} +142 -6
  66. package/dist/{retired-settings-keys-CqDbI-vK.js → retired-settings-keys-dehyu2N3.js} +1 -1
  67. package/dist/{retired-settings-keys-DLwieFXR.mjs → retired-settings-keys-diW1NmyP.mjs} +1 -1
  68. package/package.json +1 -1
@@ -165,7 +165,7 @@ export declare class StorageOrchestratorService {
165
165
  * Reconciles both directions so operator edits survive a reboot:
166
166
  * 1. hydrate — DB rows win over any early in-memory seed (restores
167
167
  * operator config like `minFreePercent` that the pre-store boot
168
- * can't see), with the same `isSystem` upgrade as {@link initialize};
168
+ * can't see);
169
169
  * 2. backfill — in-memory locations the DB doesn't have yet (the
170
170
  * pre-store seed defaults on a fresh install) are persisted, so the
171
171
  * store becomes the durable source of truth from here on.
@@ -308,13 +308,12 @@ export declare class StorageOrchestratorService {
308
308
  private refuseIncompatibleProvider;
309
309
  upsertLocation(input: Omit<StorageLocation, 'createdAt' | 'updatedAt'>): StorageLocation;
310
310
  /**
311
- * Remove a location. Refuses to remove the default of a type unless a
312
- * sibling default exists (defensive `upsertLocation` already ensures
313
- * at most one default per type, but the logic guards against future
314
- * bypass paths e.g. SQLite migration that imports two defaults).
315
- *
316
- * Persistence (Task 6) mirrors the delete asynchronously, with errors
317
- * routed to the logger — see `upsertLocation` for the rationale.
311
+ * Remove a location. Refuses the last location of a type and the last
312
+ * enabled location of a type. `isSystem` is informational — a frozen
313
+ * recordings `:default` is deletable once a sibling is live. Deleting
314
+ * the flagged default promotes an enabled sibling. Occupancy still
315
+ * refuses unless `force` is set; force never overrides uniqueness /
316
+ * last-enabled.
318
317
  */
319
318
  deleteLocation(id: string, options?: DeleteLocationOptions): Promise<void>;
320
319
  /**
@@ -323,15 +322,14 @@ export declare class StorageOrchestratorService {
323
322
  */
324
323
  private probeOccupancy;
325
324
  /**
326
- * Remove system-seeded locations whose type is no longer declared by any
327
- * addon (stale defaults from a removed location type). Operator-added
328
- * (non-system) locations of an undeclared type are KEPT but warned — the
329
- * operator owns them. Requires the registry to be set first.
325
+ * Remove seed-shaped locations (`<type>:default`) whose type is no longer
326
+ * declared by any addon (stale defaults from a removed location type).
327
+ * Operator-added locations of an undeclared type are KEPT but warned.
330
328
  *
331
329
  * FAIL-SAFE: if the registry is EMPTY (no addon declared any location), we
332
330
  * refuse to prune anything. An empty registry almost always means
333
331
  * declarations failed to load (boot ordering, a stale install) — pruning
334
- * "everything undeclared" in that state would wipe every system location
332
+ * "everything undeclared" in that state would wipe every seeded location
335
333
  * (data/logs/recordings/…). Better to keep stale rows than destroy live ones.
336
334
  */
337
335
  pruneUndeclaredSystemLocations(): void;
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-BhE8zNfY.js");
6
+ const require_dist = require("../../dist-CFTKQGym.js");
7
7
  //#region src/builtins/system-config/system-config.addon.ts
8
8
  /**
9
9
  * Built-in `system-config` addon — Phase 4 of the settings redesign.
@@ -1,4 +1,4 @@
1
- import { Mt as BaseAddon, Yt as hydrateSchema, jt as errMsg } from "../../dist-BpsHt11f.mjs";
1
+ import { Mt as errMsg, Nt as BaseAddon, Xt as hydrateSchema } from "../../dist-Dw9cm1NS.mjs";
2
2
  //#region src/builtins/system-config/system-config.addon.ts
3
3
  /**
4
4
  * Built-in `system-config` addon — Phase 4 of the settings redesign.
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  const require_chunk = require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-BhE8zNfY.js");
6
+ const require_dist = require("../../dist-CFTKQGym.js");
7
7
  const require_formatter = require("../../formatter-DqAKDlvN.js");
8
8
  let node_path = require("node:path");
9
9
  node_path = require_chunk.__toESM(node_path);
@@ -1,4 +1,4 @@
1
- import { Mt as BaseAddon, ot as logDestinationCapability } from "../../dist-BpsHt11f.mjs";
1
+ import { Nt as BaseAddon, st as logDestinationCapability } from "../../dist-Dw9cm1NS.mjs";
2
2
  import { t as formatLogLine } from "../../formatter-B7qW8bPJ.mjs";
3
3
  import * as path$1 from "node:path";
4
4
  import path from "node:path";
@@ -4270,6 +4270,13 @@ var MediaRelocateModeSchema = zod.z.enum([
4270
4270
  ]);
4271
4271
  var RelocateMediaInputSchema = zod.z.object({
4272
4272
  toLocationId: zod.z.string(),
4273
+ /**
4274
+ * Restrict the pass to rows currently on this location. Omitted / `'*'` =
4275
+ * every row that is not already on `toLocationId` (the historical
4276
+ * behaviour). A named source is what a from→to migration needs: without it
4277
+ * "move events off disk 2" also emptied disk 1.
4278
+ */
4279
+ fromLocationId: zod.z.string().optional(),
4273
4280
  throttleMbps: zod.z.number().min(1).max(1e3).optional(),
4274
4281
  /** Omitted = `move`, the pre-existing behaviour. */
4275
4282
  mode: MediaRelocateModeSchema.optional()
@@ -4337,6 +4344,19 @@ var StorageMigrationDestinationsSchema = zod.z.object({
4337
4344
  galleryMedia: zod.z.string().min(1).optional()
4338
4345
  }).refine((value) => Object.keys(value).length > 0, { message: "select at least one storage class" });
4339
4346
  /**
4347
+ * Optional named source per class. Omitted = the class's current default
4348
+ * (the historical behaviour). A named source that is NOT the default is a
4349
+ * drain of that disk: bytes move, the default stays, and the source is
4350
+ * disabled when the move finishes.
4351
+ */
4352
+ var StorageMigrationSourcesSchema = zod.z.object({
4353
+ recordings: zod.z.string().min(1).optional(),
4354
+ recordingsLow: zod.z.string().min(1).optional(),
4355
+ eventMedia: zod.z.string().min(1).optional(),
4356
+ backups: zod.z.string().min(1).optional(),
4357
+ galleryMedia: zod.z.string().min(1).optional()
4358
+ }).optional();
4359
+ /**
4340
4360
  * How a migration sequences the cutover against the byte move.
4341
4361
  *
4342
4362
  * - `blocking` — the historical order: pause, move every byte, repoint,
@@ -4358,6 +4378,8 @@ var StorageMigrationModeSchema = zod.z.enum(["blocking", "nonBlocking"]);
4358
4378
  /** Shared input for planning and starting an orchestrated storage migration. */
4359
4379
  var StorageMigrationInputSchema = zod.z.object({
4360
4380
  destinations: StorageMigrationDestinationsSchema,
4381
+ /** Omitted = each class's current default. */
4382
+ sources: StorageMigrationSourcesSchema,
4361
4383
  throttleMbps: zod.z.number().min(1).max(1e3).optional(),
4362
4384
  /** Omitted = `blocking`, which stays the default. */
4363
4385
  mode: StorageMigrationModeSchema.optional()
@@ -4437,6 +4459,13 @@ var StorageMigrationMoveSchema = zod.z.object({
4437
4459
  storageClass: StorageMigrationClassSchema,
4438
4460
  fromLocationId: zod.z.string(),
4439
4461
  toLocationId: zod.z.string(),
4462
+ /**
4463
+ * True when `from` was NOT the class default at plan time. The move still
4464
+ * copies bytes, but the default is left alone and the source is disabled
4465
+ * once the copy verifies. Absent on jobs planned before this field existed
4466
+ * — those jobs always repointed, which is `false`.
4467
+ */
4468
+ freezeSource: zod.z.boolean().optional(),
4440
4469
  moverJobId: zod.z.string().nullable(),
4441
4470
  state: RelocateJobStateSchema.nullable(),
4442
4471
  error: zod.z.string().nullable(),
@@ -4450,6 +4479,7 @@ var StorageMigrationJobSchema = zod.z.object({
4450
4479
  * can tell a seconds-long cutover from a thirty-hour one. */
4451
4480
  mode: StorageMigrationModeSchema,
4452
4481
  destinations: StorageMigrationDestinationsSchema,
4482
+ sources: StorageMigrationSourcesSchema,
4453
4483
  throttleMbps: zod.z.number(),
4454
4484
  moves: zod.z.array(StorageMigrationMoveSchema),
4455
4485
  pauseLeaseId: zod.z.string().nullable(),
@@ -4499,6 +4529,7 @@ var StorageMigrationFindingSchema = zod.z.object({
4499
4529
  });
4500
4530
  var StorageMigrationPlanSchema = zod.z.object({
4501
4531
  destinations: StorageMigrationDestinationsSchema,
4532
+ sources: StorageMigrationSourcesSchema,
4502
4533
  /** The mode this plan was built for. A plan is only valid for its mode: the
4503
4534
  * `eventMedia` seal gate and the single-cardinality refusal both depend on
4504
4535
  * it. */
@@ -4506,7 +4537,8 @@ var StorageMigrationPlanSchema = zod.z.object({
4506
4537
  moves: zod.z.array(zod.z.object({
4507
4538
  storageClass: StorageMigrationClassSchema,
4508
4539
  fromLocationId: zod.z.string(),
4509
- toLocationId: zod.z.string()
4540
+ toLocationId: zod.z.string(),
4541
+ freezeSource: zod.z.boolean().optional()
4510
4542
  })),
4511
4543
  findings: zod.z.array(StorageMigrationFindingSchema)
4512
4544
  });
@@ -4692,10 +4724,51 @@ var LedgerWalkReportSchema = zod.z.object({
4692
4724
  var RelocatableMediaCountSchema = zod.z.object({ rows: zod.z.number().int().nonnegative() }).nullable();
4693
4725
  var RelocatableMediaCountInputSchema = zod.z.object({
4694
4726
  toLocationId: zod.z.string().min(1),
4727
+ /** Restrict the count to one source; omitted / `'*'` = every non-target row. */
4728
+ fromLocationId: zod.z.string().optional(),
4695
4729
  /** Omitted = `move`. */
4696
4730
  mode: MediaRelocateModeSchema.optional()
4697
4731
  });
4698
4732
  /**
4733
+ * Operator cleanup of leftover analytics rows, optional debug media, and
4734
+ * ghost ledger entries on frozen footage locations.
4735
+ *
4736
+ * A pass is tens of minutes on a standing backlog. The hub method RETURNS
4737
+ * `{ jobId }` immediately; progress is `cleanupStatus`. Awaiting the work
4738
+ * is how `addons.custom` hit the 60 s UDS deadline while reclaim continued
4739
+ * with no operator-visible status.
4740
+ */
4741
+ var StorageCleanupPhaseSchema = zod.z.enum([
4742
+ "orphans",
4743
+ "debug-media",
4744
+ "ghost-ledger",
4745
+ "done",
4746
+ "failed",
4747
+ "cancelled"
4748
+ ]);
4749
+ var StorageCleanupInputSchema = zod.z.object({
4750
+ /** Also walk motion stills / track filmstrips. Off by default. */
4751
+ includeDebugMedia: zod.z.boolean().optional() });
4752
+ var StorageCleanupJobSchema = zod.z.object({
4753
+ jobId: zod.z.string(),
4754
+ phase: StorageCleanupPhaseSchema,
4755
+ includeDebugMedia: zod.z.boolean(),
4756
+ orphansReclaimed: zod.z.number().int().nonnegative(),
4757
+ orphanBytesReclaimed: zod.z.number().int().nonnegative(),
4758
+ debugMediaReclaimed: zod.z.number().int().nonnegative(),
4759
+ debugMediaBytesReclaimed: zod.z.number().int().nonnegative(),
4760
+ ghostsForgotten: zod.z.number().int().nonnegative(),
4761
+ ghostBytesForgotten: zod.z.number().int().nonnegative(),
4762
+ /** Short operator-facing line: current collection, pass, or location. */
4763
+ detail: zod.z.string().nullable(),
4764
+ cancelRequested: zod.z.boolean(),
4765
+ startedAt: zod.z.number(),
4766
+ updatedAt: zod.z.number(),
4767
+ finishedAt: zod.z.number().nullable(),
4768
+ error: zod.z.string().nullable()
4769
+ });
4770
+ var StorageCleanupStatusInputSchema = zod.z.object({ jobId: zod.z.string().optional() });
4771
+ /**
4699
4772
  * `StorageLocationType` — an addon-declared id that identifies the *kind* of
4700
4773
  * storage a location serves. Defined here (not in `capabilities/storage.cap.ts`)
4701
4774
  * so the persisted record schema and the consumer-facing cap can both consume it
@@ -4723,11 +4796,10 @@ var StorageLocationTypeSchema = zod.z.string().regex(/^[a-z][a-zA-Z0-9-]*$/);
4723
4796
  * The default location for a type uses `id === <type>:default` by
4724
4797
  * convention (the bare type ref like `'backups'` resolves to it).
4725
4798
  *
4726
- * `isSystem: true` marks a location as orchestrator-seeded and
4727
- * undeletable. The bootstrap-installed defaults (one per type) carry
4728
- * this flag; operator-added locations don't. Editing the config of
4729
- * a system location is allowed (path migration, provider swap) but
4730
- * deleting it is rejected at the cap level.
4799
+ * `isSystem` is a legacy persisted flag. Seed still creates the initial
4800
+ * `<type>:default` locations; the flag is no longer a lock, a badge, or a
4801
+ * prune selector. New writes leave it false. Deletion is gated on uniqueness
4802
+ * / last-enabled, not on this bit.
4731
4803
  */
4732
4804
  var StorageLocationSchema = zod.z.object({
4733
4805
  id: zod.z.string().regex(/^[a-z][a-zA-Z0-9-]*:[a-zA-Z0-9-]+$/),
@@ -21633,7 +21705,23 @@ var storageMigrationCapability = {
21633
21705
  drain: method(StorageMigrationDrainInputSchema, zod.z.object({ jobId: zod.z.string() }), {
21634
21706
  kind: "mutation",
21635
21707
  auth: "admin"
21636
- })
21708
+ }),
21709
+ /**
21710
+ * One operator cleanup of leftover analytics (DB + blobs) and ghost
21711
+ * ledger rows on frozen footage locations. Optional debug-media sweep.
21712
+ * Returns immediately; poll {@link cleanupStatus}.
21713
+ */
21714
+ cleanupStart: method(StorageCleanupInputSchema, zod.z.object({ jobId: zod.z.string() }), {
21715
+ kind: "mutation",
21716
+ auth: "admin"
21717
+ }),
21718
+ cleanupStatus: method(StorageCleanupStatusInputSchema, StorageCleanupJobSchema.nullable(), { auth: "admin" }),
21719
+ cleanupCancel: method(zod.z.object({ jobId: zod.z.string() }), zod.z.object({ cancelled: zod.z.boolean() }), {
21720
+ kind: "mutation",
21721
+ auth: "admin"
21722
+ }),
21723
+ /** Recent finished migration jobs, newest first. The live job is `status`. */
21724
+ history: method(zod.z.object({}), zod.z.array(StorageMigrationJobSchema).readonly(), { auth: "admin" })
21637
21725
  }
21638
21726
  };
21639
21727
  var ProviderInfoSchema = zod.z.discriminatedUnion("shouldSaveDiskSpace", [zod.z.object({
@@ -29899,6 +29987,33 @@ var RecordingRebalanceInputSchema = zod.z.object({
29899
29987
  minMoveGb: zod.z.number().min(0).optional()
29900
29988
  });
29901
29989
  /**
29990
+ * Operator-facing placement of one camera onto a recordings location.
29991
+ *
29992
+ * `pinLocationId` is the operator instruction: a location id, or `null` for
29993
+ * Auto (the planner may move this camera). `locationId` is where high/mid
29994
+ * currently write — the plan, which may disagree with the pin when Auto.
29995
+ */
29996
+ var RecordingDevicePlacementSchema = zod.z.object({
29997
+ deviceId: zod.z.number().int(),
29998
+ profile: zod.z.string(),
29999
+ locationId: zod.z.string()
30000
+ });
30001
+ var RecordingDevicePinSchema = zod.z.object({
30002
+ deviceId: zod.z.number().int(),
30003
+ /** Recordings-class location this camera is pinned to. */
30004
+ locationId: zod.z.string()
30005
+ });
30006
+ var RecordingPlacementViewSchema = zod.z.object({
30007
+ assignments: zod.z.array(RecordingDevicePlacementSchema),
30008
+ pins: zod.z.array(RecordingDevicePinSchema),
30009
+ defaultLocations: zod.z.record(zod.z.string(), zod.z.string())
30010
+ });
30011
+ var RecordingSetDevicePlacementInputSchema = zod.z.object({
30012
+ deviceId: zod.z.number().int(),
30013
+ /** `null` = Auto. Otherwise a `recordings:*` location id. */
30014
+ locationId: zod.z.string().nullable()
30015
+ });
30016
+ /**
29902
30017
  * Result of locating footage at a wall-clock instant for one device/profile.
29903
30018
  * `segment` carries the covering segment's window; `gap` reports the forward
29904
30019
  * nearest covered edge (`null` past the end of footage / when none exists)
@@ -30251,6 +30366,22 @@ var recordingCapability = {
30251
30366
  startStorageRebalance: method(RecordingRebalanceInputSchema, RecordingRebalancePlanSchema, {
30252
30367
  kind: "mutation",
30253
30368
  auth: "admin"
30369
+ }),
30370
+ /**
30371
+ * The placement plan in force plus operator pins. Drives the Locations
30372
+ * admin page: Auto vs a named recordings location, per camera.
30373
+ */
30374
+ getPlacement: method(zod.z.object({}), RecordingPlacementViewSchema, {
30375
+ kind: "query",
30376
+ auth: "admin"
30377
+ }),
30378
+ /**
30379
+ * Pin a camera to a recordings location, or clear the pin (Auto). High and
30380
+ * mid follow the pin; low stays with the recordingsLow planner.
30381
+ */
30382
+ setDevicePlacement: method(RecordingSetDevicePlacementInputSchema, zod.z.object({ ok: zod.z.literal(true) }), {
30383
+ kind: "mutation",
30384
+ auth: "admin"
30254
30385
  })
30255
30386
  }
30256
30387
  };
@@ -38325,6 +38456,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
38325
38456
  addonId: null,
38326
38457
  access: "view"
38327
38458
  },
38459
+ "recording.getPlacement": {
38460
+ capName: "recording",
38461
+ capScope: "system",
38462
+ addonId: null,
38463
+ access: "view"
38464
+ },
38328
38465
  "recording.getPlaybackManifest": {
38329
38466
  capName: "recording",
38330
38467
  capScope: "system",
@@ -38451,6 +38588,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
38451
38588
  addonId: null,
38452
38589
  access: "create"
38453
38590
  },
38591
+ "recording.setDevicePlacement": {
38592
+ capName: "recording",
38593
+ capScope: "system",
38594
+ addonId: null,
38595
+ access: "create"
38596
+ },
38454
38597
  "recording.startStorageMigrationMove": {
38455
38598
  capName: "recording",
38456
38599
  capScope: "system",
@@ -38895,12 +39038,36 @@ var METHOD_ACCESS_MAP = Object.freeze({
38895
39038
  addonId: null,
38896
39039
  access: "create"
38897
39040
  },
39041
+ "storageMigration.cleanupCancel": {
39042
+ capName: "storage-migration",
39043
+ capScope: "system",
39044
+ addonId: null,
39045
+ access: "create"
39046
+ },
39047
+ "storageMigration.cleanupStart": {
39048
+ capName: "storage-migration",
39049
+ capScope: "system",
39050
+ addonId: null,
39051
+ access: "create"
39052
+ },
39053
+ "storageMigration.cleanupStatus": {
39054
+ capName: "storage-migration",
39055
+ capScope: "system",
39056
+ addonId: null,
39057
+ access: "view"
39058
+ },
38898
39059
  "storageMigration.drain": {
38899
39060
  capName: "storage-migration",
38900
39061
  capScope: "system",
38901
39062
  addonId: null,
38902
39063
  access: "create"
38903
39064
  },
39065
+ "storageMigration.history": {
39066
+ capName: "storage-migration",
39067
+ capScope: "system",
39068
+ addonId: null,
39069
+ access: "view"
39070
+ },
38904
39071
  "storageMigration.movers": {
38905
39072
  capName: "storage-migration",
38906
39073
  capScope: "system",
@@ -41387,6 +41554,11 @@ Object.freeze({
41387
41554
  form: "single",
41388
41555
  optional: false
41389
41556
  }],
41557
+ "recording.setDevicePlacement": [{
41558
+ name: "deviceId",
41559
+ form: "single",
41560
+ optional: false
41561
+ }],
41390
41562
  "recording.startStorageMigrationMove": [{
41391
41563
  name: "deviceId",
41392
41564
  form: "single",
@@ -42858,6 +43030,12 @@ Object.defineProperty(exports, "ScopedTokenSchema", {
42858
43030
  return ScopedTokenSchema;
42859
43031
  }
42860
43032
  });
43033
+ Object.defineProperty(exports, "StorageCleanupJobSchema", {
43034
+ enumerable: true,
43035
+ get: function() {
43036
+ return StorageCleanupJobSchema;
43037
+ }
43038
+ });
42861
43039
  Object.defineProperty(exports, "StorageLocationTypeSchema", {
42862
43040
  enumerable: true,
42863
43041
  get: function() {