@camstack/addon-mqtt-broker 1.2.12 → 1.2.13

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.
@@ -7580,12 +7580,11 @@ var RecordingConfigSchema = object({
7580
7580
  /**
7581
7581
  * Entity-relocation job state (storage entity-routing spec, Phase 4).
7582
7582
  *
7583
- * One shape shared by the recorder's `relocateFootage` (segments) and
7584
- * pipeline-analytics' `relocateMedia` (event media blobs) so the admin Data
7585
- * page renders both movers with one component. Jobs are in-RAM (a restart
7586
- * forgets them re-running is safe by construction: copy-if-absent, delete
7587
- * after verify) and each completed/failed run also lands one durable ops-log
7588
- * row on the owning addon's surface.
7583
+ * One shape shared by the recorder and pipeline-analytics internal movers.
7584
+ * The public admin surface is `storage-migration`; child jobs remain in RAM
7585
+ * because copy-if-absent, verify, delete and index/row repoint are resumable.
7586
+ * Each completed/failed run also lands one durable ops-log row on its owning
7587
+ * addon surface.
7589
7588
  */
7590
7589
  var RelocateJobStateSchema = _enum([
7591
7590
  "running",
@@ -7612,19 +7611,100 @@ var RelocateJobSchema = object({
7612
7611
  finishedAt: number().nullable(),
7613
7612
  error: string().nullable()
7614
7613
  });
7614
+ /** Profile-derived footage selection used only by the migration coordinator:
7615
+ * `recordings` owns high+mid; `recordingsLow` owns low. */
7616
+ var RelocateFootageClassSchema = _enum(["recordings", "recordingsLow"]);
7615
7617
  var RelocateFootageInputSchema = object({
7616
- deviceId: number().optional(),
7617
7618
  fromLocationId: string(),
7618
7619
  toLocationId: string(),
7619
7620
  entities: array(_enum(["segments"])).optional(),
7621
+ /** Limits relocation to the logical profile class. Omit only for the
7622
+ * pre-orchestration compatibility path. */
7623
+ footageClass: RelocateFootageClassSchema.optional(),
7620
7624
  /** Copy throttle in MB/s (default 40) — the drain is a background chore,
7621
7625
  * never allowed to starve live writers. */
7622
7626
  throttleMbps: number().min(1).max(1e3).optional()
7623
7627
  });
7624
- var RelocateMediaInputSchema = object({
7625
- deviceId: number().optional(),
7628
+ /** Internal, lease-scoped participant operation. It is intentionally separate
7629
+ * from persistent recording settings: a migration never changes
7630
+ * `RecordingConfig.enabled` or camera wrapper bindings. */
7631
+ var StorageMigrationLeaseInputSchema = object({ leaseId: string().min(1) });
7632
+ var StorageMigrationFootageMoveInputSchema = RelocateFootageInputSchema.extend({ leaseId: string().min(1) });
7633
+ var StorageMigrationMediaMoveInputSchema = object({
7626
7634
  toLocationId: string(),
7627
7635
  throttleMbps: number().min(1).max(1e3).optional()
7636
+ }).extend({ leaseId: string().min(1) });
7637
+ /** The independently selectable logical storage classes. `recordings`
7638
+ * encompasses the high and mid segment profiles; `recordingsLow` is low
7639
+ * segments; `eventMedia` is post-analysis blobs. */
7640
+ var StorageMigrationClassSchema = _enum([
7641
+ "recordings",
7642
+ "recordingsLow",
7643
+ "eventMedia"
7644
+ ]);
7645
+ /** A destination is always an existing, fully-qualified location id. The
7646
+ * migration API intentionally never changes a source location's `basePath`:
7647
+ * callers create a new `<type>:<slug>` location, then select it here. */
7648
+ var StorageMigrationDestinationsSchema = object({
7649
+ recordings: string().min(1).optional(),
7650
+ recordingsLow: string().min(1).optional(),
7651
+ eventMedia: string().min(1).optional()
7652
+ }).refine((value) => Object.keys(value).length > 0, { message: "select at least one storage class" });
7653
+ /** Shared input for planning and starting an orchestrated storage migration. */
7654
+ var StorageMigrationInputSchema = object({
7655
+ destinations: StorageMigrationDestinationsSchema,
7656
+ throttleMbps: number().min(1).max(1e3).optional()
7657
+ });
7658
+ /** The durable coordinator state machine. The only phase that changes default
7659
+ * locations is `repointing`, after every selected mover has completed and been
7660
+ * verified. */
7661
+ var StorageMigrationPhaseSchema = _enum([
7662
+ "planning",
7663
+ "pausing",
7664
+ "moving",
7665
+ "verifying",
7666
+ "repointing",
7667
+ "refreshing",
7668
+ "resuming",
7669
+ "done",
7670
+ "failed",
7671
+ "cancelled"
7672
+ ]);
7673
+ var StorageMigrationParticipantSchema = _enum([
7674
+ "pipeline",
7675
+ "recorder",
7676
+ "analytics"
7677
+ ]);
7678
+ var StorageMigrationMoveSchema = object({
7679
+ storageClass: StorageMigrationClassSchema,
7680
+ fromLocationId: string(),
7681
+ toLocationId: string(),
7682
+ moverJobId: string().nullable(),
7683
+ state: RelocateJobStateSchema.nullable(),
7684
+ error: string().nullable()
7685
+ });
7686
+ var StorageMigrationJobSchema = object({
7687
+ jobId: string(),
7688
+ phase: StorageMigrationPhaseSchema,
7689
+ destinations: StorageMigrationDestinationsSchema,
7690
+ throttleMbps: number(),
7691
+ moves: array(StorageMigrationMoveSchema),
7692
+ pauseLeaseId: string().nullable(),
7693
+ pausedParticipants: array(StorageMigrationParticipantSchema),
7694
+ repointed: boolean(),
7695
+ cancelRequested: boolean(),
7696
+ startedAt: number(),
7697
+ updatedAt: number(),
7698
+ finishedAt: number().nullable(),
7699
+ error: string().nullable()
7700
+ });
7701
+ var StorageMigrationPlanSchema = object({
7702
+ destinations: StorageMigrationDestinationsSchema,
7703
+ moves: array(object({
7704
+ storageClass: StorageMigrationClassSchema,
7705
+ fromLocationId: string(),
7706
+ toLocationId: string()
7707
+ }))
7628
7708
  });
7629
7709
  /**
7630
7710
  * `StorageLocationType` — an addon-declared id that identifies the *kind* of
@@ -16068,13 +16148,19 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
16068
16148
  }), method(object({ deviceId: number() }), EventPruneCountsSchema, {
16069
16149
  kind: "mutation",
16070
16150
  auth: "admin"
16071
- }), method(RelocateMediaInputSchema, object({ jobId: string() }), {
16151
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
16072
16152
  kind: "mutation",
16073
16153
  auth: "admin"
16074
- }), method(object({}), array(RelocateJobSchema).readonly(), {
16075
- kind: "query",
16154
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
16155
+ kind: "mutation",
16156
+ auth: "admin"
16157
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
16158
+ kind: "mutation",
16159
+ auth: "admin"
16160
+ }), method(StorageMigrationMediaMoveInputSchema, object({ jobId: string() }), {
16161
+ kind: "mutation",
16076
16162
  auth: "admin"
16077
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
16163
+ }), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
16078
16164
  kind: "mutation",
16079
16165
  auth: "admin"
16080
16166
  }), method(OpsLogQueryInputSchema, array(OpsLogEntrySchema).readonly(), {
@@ -17571,7 +17657,13 @@ var NodeInferenceDevicesSchema = object({
17571
17657
  reachable: boolean(),
17572
17658
  devices: array(NodeInferenceDeviceSchema).readonly()
17573
17659
  });
17574
- method(object({
17660
+ method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
17661
+ kind: "mutation",
17662
+ auth: "admin"
17663
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
17664
+ kind: "mutation",
17665
+ auth: "admin"
17666
+ }), method(object({
17575
17667
  deviceId: number(),
17576
17668
  agentNodeId: string()
17577
17669
  }), object({ success: literal(true) }), {
@@ -18245,6 +18337,13 @@ method(object({ locationId: string() }), EvictableUsageSchema), method(object({
18245
18337
  locationId: string(),
18246
18338
  targetBytes: number().int().positive()
18247
18339
  }), EvictResultSchema, { kind: "mutation" });
18340
+ method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin" }), method(StorageMigrationInputSchema, object({ jobId: string() }), {
18341
+ kind: "mutation",
18342
+ auth: "admin"
18343
+ }), method(object({ jobId: string().optional() }), StorageMigrationJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
18344
+ kind: "mutation",
18345
+ auth: "admin"
18346
+ });
18248
18347
  var ProviderInfoSchema = discriminatedUnion("shouldSaveDiskSpace", [object({
18249
18348
  providerId: string().min(1),
18250
18349
  displayName: string().min(1),
@@ -18348,6 +18447,28 @@ var TerminalProfileInfoSchema = object({
18348
18447
  label: string(),
18349
18448
  description: string().optional()
18350
18449
  });
18450
+ /**
18451
+ * A durable operator-created Terminal instance. Profiles are templates; only
18452
+ * an instance declares a camera.
18453
+ */
18454
+ var TerminalInstanceInfoSchema = object({
18455
+ instanceId: string(),
18456
+ cameraStableId: string(),
18457
+ nodeId: string(),
18458
+ profileId: string(),
18459
+ profileLabel: string(),
18460
+ name: string(),
18461
+ enabled: boolean()
18462
+ });
18463
+ var TerminalLegacyCameraSchema = object({
18464
+ stableId: string(),
18465
+ nodeId: string(),
18466
+ profileId: string(),
18467
+ profileLabel: string(),
18468
+ name: string(),
18469
+ /** Only legacy monitor cameras can retain their historic stable identity. */
18470
+ adoptable: boolean()
18471
+ });
18351
18472
  var TerminalOutputEventSchema = discriminatedUnion("kind", [object({
18352
18473
  seq: number().int().positive(),
18353
18474
  kind: literal("data"),
@@ -18364,7 +18485,29 @@ var TerminalOutputBatchSchema = object({
18364
18485
  snapshot: string().optional(),
18365
18486
  events: array(TerminalOutputEventSchema).readonly()
18366
18487
  });
18367
- method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
18488
+ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalInstanceInfoSchema).readonly(), { auth: "admin" }), method(object({
18489
+ targetNodeId: string().min(1),
18490
+ profileId: string().min(1),
18491
+ name: string().trim().min(1).max(160).optional()
18492
+ }), TerminalInstanceInfoSchema, {
18493
+ kind: "mutation",
18494
+ auth: "admin"
18495
+ }), method(object({ instanceId: string().min(1) }), _void(), {
18496
+ kind: "mutation",
18497
+ auth: "admin"
18498
+ }), method(object({
18499
+ instanceId: string().min(1),
18500
+ enabled: boolean()
18501
+ }), TerminalInstanceInfoSchema, {
18502
+ kind: "mutation",
18503
+ auth: "admin"
18504
+ }), method(_void(), array(TerminalLegacyCameraSchema).readonly(), { auth: "admin" }), method(object({
18505
+ stableId: string().min(1),
18506
+ name: string().trim().min(1).max(160).optional()
18507
+ }), TerminalInstanceInfoSchema, {
18508
+ kind: "mutation",
18509
+ auth: "admin"
18510
+ }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
18368
18511
  profileId: string(),
18369
18512
  cols: number().int().positive(),
18370
18513
  rows: number().int().positive()
@@ -18381,7 +18524,13 @@ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }),
18381
18524
  }), method(object({
18382
18525
  sessionId: string(),
18383
18526
  afterSeq: number().int().nonnegative(),
18384
- waitMs: number().int().min(0).max(2e3).default(0)
18527
+ waitMs: number().int().min(0).max(2e3).default(0),
18528
+ /**
18529
+ * Wait when a just-opened session has no output yet. Kept opt-in so a
18530
+ * browser's initial repaint remains immediate; the camera snapshot
18531
+ * relay uses it to avoid encoding a blank startup frame.
18532
+ */
18533
+ waitForOutput: boolean().optional()
18385
18534
  }), TerminalOutputBatchSchema, {
18386
18535
  kind: "mutation",
18387
18536
  auth: "admin",
@@ -20322,6 +20471,7 @@ var FaceInfoSchema = object({
20322
20471
  var FaceFilterEnum = _enum([
20323
20472
  "unassigned",
20324
20473
  "recognized",
20474
+ "identified",
20325
20475
  "all"
20326
20476
  ]);
20327
20477
  var MediaFileLiteSchema$1 = object({
@@ -20350,6 +20500,8 @@ method(_void(), array(IdentitySchema).readonly()), method(object({ name: string(
20350
20500
  kind: "mutation",
20351
20501
  auth: "admin"
20352
20502
  }), method(object({
20503
+ /** Restrict to one camera. Absent keeps the cluster-wide gallery view. */
20504
+ deviceId: number().int().optional(),
20353
20505
  limit: number().int().positive().optional(),
20354
20506
  filter: FaceFilterEnum.optional(),
20355
20507
  /**
@@ -22115,6 +22267,10 @@ var OsdSourceSchema = discriminatedUnion("kind", [
22115
22267
  capName: string().min(1).max(64),
22116
22268
  /** Dot path inside the slice, e.g. `detected`, `value`, `mode`. */
22117
22269
  valuePath: string().min(1).max(64)
22270
+ }),
22271
+ object({
22272
+ kind: literal("latest-recognition"),
22273
+ recognition: _enum(["person", "plate"])
22118
22274
  })
22119
22275
  ]);
22120
22276
  var OsdSlotBindingSchema = object({
@@ -22220,6 +22376,15 @@ method(object({ deviceId: number().int() }), object({
22220
22376
  }), object({ success: literal(true) }), {
22221
22377
  kind: "mutation",
22222
22378
  auth: "admin"
22379
+ }), method(object({
22380
+ sourceDeviceId: number().int(),
22381
+ targetDeviceId: number().int()
22382
+ }), object({
22383
+ copied: number().int().nonnegative(),
22384
+ skipped: number().int().nonnegative()
22385
+ }), {
22386
+ kind: "mutation",
22387
+ auth: "admin"
22223
22388
  }), method(object({
22224
22389
  deviceId: number().int(),
22225
22390
  slotId: string().min(1),
@@ -23105,13 +23270,19 @@ method(object({
23105
23270
  }), {
23106
23271
  kind: "mutation",
23107
23272
  auth: "admin"
23108
- }), method(RelocateFootageInputSchema, object({ jobId: string() }), {
23273
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
23109
23274
  kind: "mutation",
23110
23275
  auth: "admin"
23111
- }), method(object({}), array(RelocateJobSchema).readonly(), {
23112
- kind: "query",
23276
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
23277
+ kind: "mutation",
23113
23278
  auth: "admin"
23114
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
23279
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
23280
+ kind: "mutation",
23281
+ auth: "admin"
23282
+ }), method(StorageMigrationFootageMoveInputSchema, object({ jobId: string() }), {
23283
+ kind: "mutation",
23284
+ auth: "admin"
23285
+ }), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
23115
23286
  kind: "mutation",
23116
23287
  auth: "admin"
23117
23288
  });
@@ -27233,6 +27404,12 @@ Object.freeze({
27233
27404
  addonId: null,
27234
27405
  access: "delete"
27235
27406
  },
27407
+ "osdManager.copyDeviceConfiguration": {
27408
+ capName: "osd-manager",
27409
+ capScope: "system",
27410
+ addonId: null,
27411
+ access: "create"
27412
+ },
27236
27413
  "osdManager.getConditionSupport": {
27237
27414
  capName: "osd-manager",
27238
27415
  capScope: "system",
@@ -27329,7 +27506,7 @@ Object.freeze({
27329
27506
  addonId: null,
27330
27507
  access: "create"
27331
27508
  },
27332
- "pipelineAnalytics.cancelMediaRelocate": {
27509
+ "pipelineAnalytics.cancelStorageMigrationMove": {
27333
27510
  capName: "pipeline-analytics",
27334
27511
  capScope: "device",
27335
27512
  addonId: null,
@@ -27401,12 +27578,6 @@ Object.freeze({
27401
27578
  addonId: null,
27402
27579
  access: "view"
27403
27580
  },
27404
- "pipelineAnalytics.getMediaRelocateStatus": {
27405
- capName: "pipeline-analytics",
27406
- capScope: "device",
27407
- addonId: null,
27408
- access: "view"
27409
- },
27410
27581
  "pipelineAnalytics.getMotionEvents": {
27411
27582
  capName: "pipeline-analytics",
27412
27583
  capScope: "device",
@@ -27443,6 +27614,12 @@ Object.freeze({
27443
27614
  addonId: null,
27444
27615
  access: "view"
27445
27616
  },
27617
+ "pipelineAnalytics.getStorageMigrationMoveStatus": {
27618
+ capName: "pipeline-analytics",
27619
+ capScope: "device",
27620
+ addonId: null,
27621
+ access: "view"
27622
+ },
27446
27623
  "pipelineAnalytics.getTrack": {
27447
27624
  capName: "pipeline-analytics",
27448
27625
  capScope: "device",
@@ -27521,6 +27698,12 @@ Object.freeze({
27521
27698
  addonId: null,
27522
27699
  access: "view"
27523
27700
  },
27701
+ "pipelineAnalytics.pauseForStorageMigration": {
27702
+ capName: "pipeline-analytics",
27703
+ capScope: "device",
27704
+ addonId: null,
27705
+ access: "create"
27706
+ },
27524
27707
  "pipelineAnalytics.proposeRetrainAnnotations": {
27525
27708
  capName: "pipeline-analytics",
27526
27709
  capScope: "device",
@@ -27551,7 +27734,7 @@ Object.freeze({
27551
27734
  addonId: null,
27552
27735
  access: "create"
27553
27736
  },
27554
- "pipelineAnalytics.relocateMedia": {
27737
+ "pipelineAnalytics.refreshStorageLocationsForMigration": {
27555
27738
  capName: "pipeline-analytics",
27556
27739
  capScope: "device",
27557
27740
  addonId: null,
@@ -27563,6 +27746,12 @@ Object.freeze({
27563
27746
  addonId: null,
27564
27747
  access: "create"
27565
27748
  },
27749
+ "pipelineAnalytics.resumeForStorageMigration": {
27750
+ capName: "pipeline-analytics",
27751
+ capScope: "device",
27752
+ addonId: null,
27753
+ access: "create"
27754
+ },
27566
27755
  "pipelineAnalytics.saveRetrainAnnotations": {
27567
27756
  capName: "pipeline-analytics",
27568
27757
  capScope: "device",
@@ -27587,6 +27776,12 @@ Object.freeze({
27587
27776
  addonId: null,
27588
27777
  access: "create"
27589
27778
  },
27779
+ "pipelineAnalytics.startStorageMigrationMove": {
27780
+ capName: "pipeline-analytics",
27781
+ capScope: "device",
27782
+ addonId: null,
27783
+ access: "create"
27784
+ },
27590
27785
  "pipelineAnalytics.wipeAllAnalytics": {
27591
27786
  capName: "pipeline-analytics",
27592
27787
  capScope: "device",
@@ -27953,6 +28148,12 @@ Object.freeze({
27953
28148
  addonId: null,
27954
28149
  access: "view"
27955
28150
  },
28151
+ "pipelineOrchestrator.pauseForStorageMigration": {
28152
+ capName: "pipeline-orchestrator",
28153
+ capScope: "system",
28154
+ addonId: null,
28155
+ access: "create"
28156
+ },
27956
28157
  "pipelineOrchestrator.rebalance": {
27957
28158
  capName: "pipeline-orchestrator",
27958
28159
  capScope: "system",
@@ -27977,6 +28178,12 @@ Object.freeze({
27977
28178
  addonId: null,
27978
28179
  access: "view"
27979
28180
  },
28181
+ "pipelineOrchestrator.resumeForStorageMigration": {
28182
+ capName: "pipeline-orchestrator",
28183
+ capScope: "system",
28184
+ addonId: null,
28185
+ access: "create"
28186
+ },
27980
28187
  "pipelineOrchestrator.saveTemplate": {
27981
28188
  capName: "pipeline-orchestrator",
27982
28189
  capScope: "system",
@@ -28373,7 +28580,7 @@ Object.freeze({
28373
28580
  addonId: null,
28374
28581
  access: "create"
28375
28582
  },
28376
- "recording.cancelRelocate": {
28583
+ "recording.cancelStorageMigrationMove": {
28377
28584
  capName: "recording",
28378
28585
  capScope: "system",
28379
28586
  addonId: null,
@@ -28409,7 +28616,7 @@ Object.freeze({
28409
28616
  addonId: null,
28410
28617
  access: "view"
28411
28618
  },
28412
- "recording.getRelocateStatus": {
28619
+ "recording.getStorageMigrationMoveStatus": {
28413
28620
  capName: "recording",
28414
28621
  capScope: "system",
28415
28622
  addonId: null,
@@ -28433,6 +28640,12 @@ Object.freeze({
28433
28640
  addonId: null,
28434
28641
  access: "view"
28435
28642
  },
28643
+ "recording.pauseForStorageMigration": {
28644
+ capName: "recording",
28645
+ capScope: "system",
28646
+ addonId: null,
28647
+ access: "create"
28648
+ },
28436
28649
  "recording.pruneFootage": {
28437
28650
  capName: "recording",
28438
28651
  capScope: "system",
@@ -28451,7 +28664,7 @@ Object.freeze({
28451
28664
  addonId: null,
28452
28665
  access: "view"
28453
28666
  },
28454
- "recording.relocateFootage": {
28667
+ "recording.refreshStorageLocationsForMigration": {
28455
28668
  capName: "recording",
28456
28669
  capScope: "system",
28457
28670
  addonId: null,
@@ -28475,12 +28688,24 @@ Object.freeze({
28475
28688
  addonId: null,
28476
28689
  access: "create"
28477
28690
  },
28691
+ "recording.resumeForStorageMigration": {
28692
+ capName: "recording",
28693
+ capScope: "system",
28694
+ addonId: null,
28695
+ access: "create"
28696
+ },
28478
28697
  "recording.setDeviceConfig": {
28479
28698
  capName: "recording",
28480
28699
  capScope: "system",
28481
28700
  addonId: null,
28482
28701
  access: "create"
28483
28702
  },
28703
+ "recording.startStorageMigrationMove": {
28704
+ capName: "recording",
28705
+ capScope: "system",
28706
+ addonId: null,
28707
+ access: "create"
28708
+ },
28484
28709
  "recordingExport.cancelExport": {
28485
28710
  capName: "recordingExport",
28486
28711
  capScope: "system",
@@ -28871,6 +29096,30 @@ Object.freeze({
28871
29096
  addonId: null,
28872
29097
  access: "view"
28873
29098
  },
29099
+ "storageMigration.cancel": {
29100
+ capName: "storage-migration",
29101
+ capScope: "system",
29102
+ addonId: null,
29103
+ access: "create"
29104
+ },
29105
+ "storageMigration.plan": {
29106
+ capName: "storage-migration",
29107
+ capScope: "system",
29108
+ addonId: null,
29109
+ access: "view"
29110
+ },
29111
+ "storageMigration.start": {
29112
+ capName: "storage-migration",
29113
+ capScope: "system",
29114
+ addonId: null,
29115
+ access: "create"
29116
+ },
29117
+ "storageMigration.status": {
29118
+ capName: "storage-migration",
29119
+ capScope: "system",
29120
+ addonId: null,
29121
+ access: "view"
29122
+ },
28874
29123
  "storageProvider.abortUpload": {
28875
29124
  capName: "storage-provider",
28876
29125
  capScope: "system",
@@ -29249,12 +29498,42 @@ Object.freeze({
29249
29498
  addonId: null,
29250
29499
  access: "create"
29251
29500
  },
29501
+ "terminalSession.adoptLegacyMonitor": {
29502
+ capName: "terminal-session",
29503
+ capScope: "system",
29504
+ addonId: null,
29505
+ access: "create"
29506
+ },
29252
29507
  "terminalSession.close": {
29253
29508
  capName: "terminal-session",
29254
29509
  capScope: "system",
29255
29510
  addonId: null,
29256
29511
  access: "create"
29257
29512
  },
29513
+ "terminalSession.createInstance": {
29514
+ capName: "terminal-session",
29515
+ capScope: "system",
29516
+ addonId: null,
29517
+ access: "create"
29518
+ },
29519
+ "terminalSession.deleteInstance": {
29520
+ capName: "terminal-session",
29521
+ capScope: "system",
29522
+ addonId: null,
29523
+ access: "delete"
29524
+ },
29525
+ "terminalSession.listInstances": {
29526
+ capName: "terminal-session",
29527
+ capScope: "system",
29528
+ addonId: null,
29529
+ access: "view"
29530
+ },
29531
+ "terminalSession.listLegacyCameras": {
29532
+ capName: "terminal-session",
29533
+ capScope: "system",
29534
+ addonId: null,
29535
+ access: "view"
29536
+ },
29258
29537
  "terminalSession.listProfiles": {
29259
29538
  capName: "terminal-session",
29260
29539
  capScope: "system",
@@ -29285,6 +29564,12 @@ Object.freeze({
29285
29564
  addonId: null,
29286
29565
  access: "create"
29287
29566
  },
29567
+ "terminalSession.setInstanceEnabled": {
29568
+ capName: "terminal-session",
29569
+ capScope: "system",
29570
+ addonId: null,
29571
+ access: "create"
29572
+ },
29288
29573
  "terminalSession.writeInput": {
29289
29574
  capName: "terminal-session",
29290
29575
  capScope: "system",
@@ -7575,12 +7575,11 @@ var RecordingConfigSchema = object({
7575
7575
  /**
7576
7576
  * Entity-relocation job state (storage entity-routing spec, Phase 4).
7577
7577
  *
7578
- * One shape shared by the recorder's `relocateFootage` (segments) and
7579
- * pipeline-analytics' `relocateMedia` (event media blobs) so the admin Data
7580
- * page renders both movers with one component. Jobs are in-RAM (a restart
7581
- * forgets them re-running is safe by construction: copy-if-absent, delete
7582
- * after verify) and each completed/failed run also lands one durable ops-log
7583
- * row on the owning addon's surface.
7578
+ * One shape shared by the recorder and pipeline-analytics internal movers.
7579
+ * The public admin surface is `storage-migration`; child jobs remain in RAM
7580
+ * because copy-if-absent, verify, delete and index/row repoint are resumable.
7581
+ * Each completed/failed run also lands one durable ops-log row on its owning
7582
+ * addon surface.
7584
7583
  */
7585
7584
  var RelocateJobStateSchema = _enum([
7586
7585
  "running",
@@ -7607,19 +7606,100 @@ var RelocateJobSchema = object({
7607
7606
  finishedAt: number().nullable(),
7608
7607
  error: string().nullable()
7609
7608
  });
7609
+ /** Profile-derived footage selection used only by the migration coordinator:
7610
+ * `recordings` owns high+mid; `recordingsLow` owns low. */
7611
+ var RelocateFootageClassSchema = _enum(["recordings", "recordingsLow"]);
7610
7612
  var RelocateFootageInputSchema = object({
7611
- deviceId: number().optional(),
7612
7613
  fromLocationId: string(),
7613
7614
  toLocationId: string(),
7614
7615
  entities: array(_enum(["segments"])).optional(),
7616
+ /** Limits relocation to the logical profile class. Omit only for the
7617
+ * pre-orchestration compatibility path. */
7618
+ footageClass: RelocateFootageClassSchema.optional(),
7615
7619
  /** Copy throttle in MB/s (default 40) — the drain is a background chore,
7616
7620
  * never allowed to starve live writers. */
7617
7621
  throttleMbps: number().min(1).max(1e3).optional()
7618
7622
  });
7619
- var RelocateMediaInputSchema = object({
7620
- deviceId: number().optional(),
7623
+ /** Internal, lease-scoped participant operation. It is intentionally separate
7624
+ * from persistent recording settings: a migration never changes
7625
+ * `RecordingConfig.enabled` or camera wrapper bindings. */
7626
+ var StorageMigrationLeaseInputSchema = object({ leaseId: string().min(1) });
7627
+ var StorageMigrationFootageMoveInputSchema = RelocateFootageInputSchema.extend({ leaseId: string().min(1) });
7628
+ var StorageMigrationMediaMoveInputSchema = object({
7621
7629
  toLocationId: string(),
7622
7630
  throttleMbps: number().min(1).max(1e3).optional()
7631
+ }).extend({ leaseId: string().min(1) });
7632
+ /** The independently selectable logical storage classes. `recordings`
7633
+ * encompasses the high and mid segment profiles; `recordingsLow` is low
7634
+ * segments; `eventMedia` is post-analysis blobs. */
7635
+ var StorageMigrationClassSchema = _enum([
7636
+ "recordings",
7637
+ "recordingsLow",
7638
+ "eventMedia"
7639
+ ]);
7640
+ /** A destination is always an existing, fully-qualified location id. The
7641
+ * migration API intentionally never changes a source location's `basePath`:
7642
+ * callers create a new `<type>:<slug>` location, then select it here. */
7643
+ var StorageMigrationDestinationsSchema = object({
7644
+ recordings: string().min(1).optional(),
7645
+ recordingsLow: string().min(1).optional(),
7646
+ eventMedia: string().min(1).optional()
7647
+ }).refine((value) => Object.keys(value).length > 0, { message: "select at least one storage class" });
7648
+ /** Shared input for planning and starting an orchestrated storage migration. */
7649
+ var StorageMigrationInputSchema = object({
7650
+ destinations: StorageMigrationDestinationsSchema,
7651
+ throttleMbps: number().min(1).max(1e3).optional()
7652
+ });
7653
+ /** The durable coordinator state machine. The only phase that changes default
7654
+ * locations is `repointing`, after every selected mover has completed and been
7655
+ * verified. */
7656
+ var StorageMigrationPhaseSchema = _enum([
7657
+ "planning",
7658
+ "pausing",
7659
+ "moving",
7660
+ "verifying",
7661
+ "repointing",
7662
+ "refreshing",
7663
+ "resuming",
7664
+ "done",
7665
+ "failed",
7666
+ "cancelled"
7667
+ ]);
7668
+ var StorageMigrationParticipantSchema = _enum([
7669
+ "pipeline",
7670
+ "recorder",
7671
+ "analytics"
7672
+ ]);
7673
+ var StorageMigrationMoveSchema = object({
7674
+ storageClass: StorageMigrationClassSchema,
7675
+ fromLocationId: string(),
7676
+ toLocationId: string(),
7677
+ moverJobId: string().nullable(),
7678
+ state: RelocateJobStateSchema.nullable(),
7679
+ error: string().nullable()
7680
+ });
7681
+ var StorageMigrationJobSchema = object({
7682
+ jobId: string(),
7683
+ phase: StorageMigrationPhaseSchema,
7684
+ destinations: StorageMigrationDestinationsSchema,
7685
+ throttleMbps: number(),
7686
+ moves: array(StorageMigrationMoveSchema),
7687
+ pauseLeaseId: string().nullable(),
7688
+ pausedParticipants: array(StorageMigrationParticipantSchema),
7689
+ repointed: boolean(),
7690
+ cancelRequested: boolean(),
7691
+ startedAt: number(),
7692
+ updatedAt: number(),
7693
+ finishedAt: number().nullable(),
7694
+ error: string().nullable()
7695
+ });
7696
+ var StorageMigrationPlanSchema = object({
7697
+ destinations: StorageMigrationDestinationsSchema,
7698
+ moves: array(object({
7699
+ storageClass: StorageMigrationClassSchema,
7700
+ fromLocationId: string(),
7701
+ toLocationId: string()
7702
+ }))
7623
7703
  });
7624
7704
  /**
7625
7705
  * `StorageLocationType` — an addon-declared id that identifies the *kind* of
@@ -16063,13 +16143,19 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
16063
16143
  }), method(object({ deviceId: number() }), EventPruneCountsSchema, {
16064
16144
  kind: "mutation",
16065
16145
  auth: "admin"
16066
- }), method(RelocateMediaInputSchema, object({ jobId: string() }), {
16146
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
16067
16147
  kind: "mutation",
16068
16148
  auth: "admin"
16069
- }), method(object({}), array(RelocateJobSchema).readonly(), {
16070
- kind: "query",
16149
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
16150
+ kind: "mutation",
16151
+ auth: "admin"
16152
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
16153
+ kind: "mutation",
16154
+ auth: "admin"
16155
+ }), method(StorageMigrationMediaMoveInputSchema, object({ jobId: string() }), {
16156
+ kind: "mutation",
16071
16157
  auth: "admin"
16072
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
16158
+ }), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
16073
16159
  kind: "mutation",
16074
16160
  auth: "admin"
16075
16161
  }), method(OpsLogQueryInputSchema, array(OpsLogEntrySchema).readonly(), {
@@ -17566,7 +17652,13 @@ var NodeInferenceDevicesSchema = object({
17566
17652
  reachable: boolean(),
17567
17653
  devices: array(NodeInferenceDeviceSchema).readonly()
17568
17654
  });
17569
- method(object({
17655
+ method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
17656
+ kind: "mutation",
17657
+ auth: "admin"
17658
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
17659
+ kind: "mutation",
17660
+ auth: "admin"
17661
+ }), method(object({
17570
17662
  deviceId: number(),
17571
17663
  agentNodeId: string()
17572
17664
  }), object({ success: literal(true) }), {
@@ -18240,6 +18332,13 @@ method(object({ locationId: string() }), EvictableUsageSchema), method(object({
18240
18332
  locationId: string(),
18241
18333
  targetBytes: number().int().positive()
18242
18334
  }), EvictResultSchema, { kind: "mutation" });
18335
+ method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin" }), method(StorageMigrationInputSchema, object({ jobId: string() }), {
18336
+ kind: "mutation",
18337
+ auth: "admin"
18338
+ }), method(object({ jobId: string().optional() }), StorageMigrationJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
18339
+ kind: "mutation",
18340
+ auth: "admin"
18341
+ });
18243
18342
  var ProviderInfoSchema = discriminatedUnion("shouldSaveDiskSpace", [object({
18244
18343
  providerId: string().min(1),
18245
18344
  displayName: string().min(1),
@@ -18343,6 +18442,28 @@ var TerminalProfileInfoSchema = object({
18343
18442
  label: string(),
18344
18443
  description: string().optional()
18345
18444
  });
18445
+ /**
18446
+ * A durable operator-created Terminal instance. Profiles are templates; only
18447
+ * an instance declares a camera.
18448
+ */
18449
+ var TerminalInstanceInfoSchema = object({
18450
+ instanceId: string(),
18451
+ cameraStableId: string(),
18452
+ nodeId: string(),
18453
+ profileId: string(),
18454
+ profileLabel: string(),
18455
+ name: string(),
18456
+ enabled: boolean()
18457
+ });
18458
+ var TerminalLegacyCameraSchema = object({
18459
+ stableId: string(),
18460
+ nodeId: string(),
18461
+ profileId: string(),
18462
+ profileLabel: string(),
18463
+ name: string(),
18464
+ /** Only legacy monitor cameras can retain their historic stable identity. */
18465
+ adoptable: boolean()
18466
+ });
18346
18467
  var TerminalOutputEventSchema = discriminatedUnion("kind", [object({
18347
18468
  seq: number().int().positive(),
18348
18469
  kind: literal("data"),
@@ -18359,7 +18480,29 @@ var TerminalOutputBatchSchema = object({
18359
18480
  snapshot: string().optional(),
18360
18481
  events: array(TerminalOutputEventSchema).readonly()
18361
18482
  });
18362
- method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
18483
+ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalInstanceInfoSchema).readonly(), { auth: "admin" }), method(object({
18484
+ targetNodeId: string().min(1),
18485
+ profileId: string().min(1),
18486
+ name: string().trim().min(1).max(160).optional()
18487
+ }), TerminalInstanceInfoSchema, {
18488
+ kind: "mutation",
18489
+ auth: "admin"
18490
+ }), method(object({ instanceId: string().min(1) }), _void(), {
18491
+ kind: "mutation",
18492
+ auth: "admin"
18493
+ }), method(object({
18494
+ instanceId: string().min(1),
18495
+ enabled: boolean()
18496
+ }), TerminalInstanceInfoSchema, {
18497
+ kind: "mutation",
18498
+ auth: "admin"
18499
+ }), method(_void(), array(TerminalLegacyCameraSchema).readonly(), { auth: "admin" }), method(object({
18500
+ stableId: string().min(1),
18501
+ name: string().trim().min(1).max(160).optional()
18502
+ }), TerminalInstanceInfoSchema, {
18503
+ kind: "mutation",
18504
+ auth: "admin"
18505
+ }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
18363
18506
  profileId: string(),
18364
18507
  cols: number().int().positive(),
18365
18508
  rows: number().int().positive()
@@ -18376,7 +18519,13 @@ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }),
18376
18519
  }), method(object({
18377
18520
  sessionId: string(),
18378
18521
  afterSeq: number().int().nonnegative(),
18379
- waitMs: number().int().min(0).max(2e3).default(0)
18522
+ waitMs: number().int().min(0).max(2e3).default(0),
18523
+ /**
18524
+ * Wait when a just-opened session has no output yet. Kept opt-in so a
18525
+ * browser's initial repaint remains immediate; the camera snapshot
18526
+ * relay uses it to avoid encoding a blank startup frame.
18527
+ */
18528
+ waitForOutput: boolean().optional()
18380
18529
  }), TerminalOutputBatchSchema, {
18381
18530
  kind: "mutation",
18382
18531
  auth: "admin",
@@ -20317,6 +20466,7 @@ var FaceInfoSchema = object({
20317
20466
  var FaceFilterEnum = _enum([
20318
20467
  "unassigned",
20319
20468
  "recognized",
20469
+ "identified",
20320
20470
  "all"
20321
20471
  ]);
20322
20472
  var MediaFileLiteSchema$1 = object({
@@ -20345,6 +20495,8 @@ method(_void(), array(IdentitySchema).readonly()), method(object({ name: string(
20345
20495
  kind: "mutation",
20346
20496
  auth: "admin"
20347
20497
  }), method(object({
20498
+ /** Restrict to one camera. Absent keeps the cluster-wide gallery view. */
20499
+ deviceId: number().int().optional(),
20348
20500
  limit: number().int().positive().optional(),
20349
20501
  filter: FaceFilterEnum.optional(),
20350
20502
  /**
@@ -22110,6 +22262,10 @@ var OsdSourceSchema = discriminatedUnion("kind", [
22110
22262
  capName: string().min(1).max(64),
22111
22263
  /** Dot path inside the slice, e.g. `detected`, `value`, `mode`. */
22112
22264
  valuePath: string().min(1).max(64)
22265
+ }),
22266
+ object({
22267
+ kind: literal("latest-recognition"),
22268
+ recognition: _enum(["person", "plate"])
22113
22269
  })
22114
22270
  ]);
22115
22271
  var OsdSlotBindingSchema = object({
@@ -22215,6 +22371,15 @@ method(object({ deviceId: number().int() }), object({
22215
22371
  }), object({ success: literal(true) }), {
22216
22372
  kind: "mutation",
22217
22373
  auth: "admin"
22374
+ }), method(object({
22375
+ sourceDeviceId: number().int(),
22376
+ targetDeviceId: number().int()
22377
+ }), object({
22378
+ copied: number().int().nonnegative(),
22379
+ skipped: number().int().nonnegative()
22380
+ }), {
22381
+ kind: "mutation",
22382
+ auth: "admin"
22218
22383
  }), method(object({
22219
22384
  deviceId: number().int(),
22220
22385
  slotId: string().min(1),
@@ -23100,13 +23265,19 @@ method(object({
23100
23265
  }), {
23101
23266
  kind: "mutation",
23102
23267
  auth: "admin"
23103
- }), method(RelocateFootageInputSchema, object({ jobId: string() }), {
23268
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
23104
23269
  kind: "mutation",
23105
23270
  auth: "admin"
23106
- }), method(object({}), array(RelocateJobSchema).readonly(), {
23107
- kind: "query",
23271
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
23272
+ kind: "mutation",
23108
23273
  auth: "admin"
23109
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
23274
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
23275
+ kind: "mutation",
23276
+ auth: "admin"
23277
+ }), method(StorageMigrationFootageMoveInputSchema, object({ jobId: string() }), {
23278
+ kind: "mutation",
23279
+ auth: "admin"
23280
+ }), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
23110
23281
  kind: "mutation",
23111
23282
  auth: "admin"
23112
23283
  });
@@ -27228,6 +27399,12 @@ Object.freeze({
27228
27399
  addonId: null,
27229
27400
  access: "delete"
27230
27401
  },
27402
+ "osdManager.copyDeviceConfiguration": {
27403
+ capName: "osd-manager",
27404
+ capScope: "system",
27405
+ addonId: null,
27406
+ access: "create"
27407
+ },
27231
27408
  "osdManager.getConditionSupport": {
27232
27409
  capName: "osd-manager",
27233
27410
  capScope: "system",
@@ -27324,7 +27501,7 @@ Object.freeze({
27324
27501
  addonId: null,
27325
27502
  access: "create"
27326
27503
  },
27327
- "pipelineAnalytics.cancelMediaRelocate": {
27504
+ "pipelineAnalytics.cancelStorageMigrationMove": {
27328
27505
  capName: "pipeline-analytics",
27329
27506
  capScope: "device",
27330
27507
  addonId: null,
@@ -27396,12 +27573,6 @@ Object.freeze({
27396
27573
  addonId: null,
27397
27574
  access: "view"
27398
27575
  },
27399
- "pipelineAnalytics.getMediaRelocateStatus": {
27400
- capName: "pipeline-analytics",
27401
- capScope: "device",
27402
- addonId: null,
27403
- access: "view"
27404
- },
27405
27576
  "pipelineAnalytics.getMotionEvents": {
27406
27577
  capName: "pipeline-analytics",
27407
27578
  capScope: "device",
@@ -27438,6 +27609,12 @@ Object.freeze({
27438
27609
  addonId: null,
27439
27610
  access: "view"
27440
27611
  },
27612
+ "pipelineAnalytics.getStorageMigrationMoveStatus": {
27613
+ capName: "pipeline-analytics",
27614
+ capScope: "device",
27615
+ addonId: null,
27616
+ access: "view"
27617
+ },
27441
27618
  "pipelineAnalytics.getTrack": {
27442
27619
  capName: "pipeline-analytics",
27443
27620
  capScope: "device",
@@ -27516,6 +27693,12 @@ Object.freeze({
27516
27693
  addonId: null,
27517
27694
  access: "view"
27518
27695
  },
27696
+ "pipelineAnalytics.pauseForStorageMigration": {
27697
+ capName: "pipeline-analytics",
27698
+ capScope: "device",
27699
+ addonId: null,
27700
+ access: "create"
27701
+ },
27519
27702
  "pipelineAnalytics.proposeRetrainAnnotations": {
27520
27703
  capName: "pipeline-analytics",
27521
27704
  capScope: "device",
@@ -27546,7 +27729,7 @@ Object.freeze({
27546
27729
  addonId: null,
27547
27730
  access: "create"
27548
27731
  },
27549
- "pipelineAnalytics.relocateMedia": {
27732
+ "pipelineAnalytics.refreshStorageLocationsForMigration": {
27550
27733
  capName: "pipeline-analytics",
27551
27734
  capScope: "device",
27552
27735
  addonId: null,
@@ -27558,6 +27741,12 @@ Object.freeze({
27558
27741
  addonId: null,
27559
27742
  access: "create"
27560
27743
  },
27744
+ "pipelineAnalytics.resumeForStorageMigration": {
27745
+ capName: "pipeline-analytics",
27746
+ capScope: "device",
27747
+ addonId: null,
27748
+ access: "create"
27749
+ },
27561
27750
  "pipelineAnalytics.saveRetrainAnnotations": {
27562
27751
  capName: "pipeline-analytics",
27563
27752
  capScope: "device",
@@ -27582,6 +27771,12 @@ Object.freeze({
27582
27771
  addonId: null,
27583
27772
  access: "create"
27584
27773
  },
27774
+ "pipelineAnalytics.startStorageMigrationMove": {
27775
+ capName: "pipeline-analytics",
27776
+ capScope: "device",
27777
+ addonId: null,
27778
+ access: "create"
27779
+ },
27585
27780
  "pipelineAnalytics.wipeAllAnalytics": {
27586
27781
  capName: "pipeline-analytics",
27587
27782
  capScope: "device",
@@ -27948,6 +28143,12 @@ Object.freeze({
27948
28143
  addonId: null,
27949
28144
  access: "view"
27950
28145
  },
28146
+ "pipelineOrchestrator.pauseForStorageMigration": {
28147
+ capName: "pipeline-orchestrator",
28148
+ capScope: "system",
28149
+ addonId: null,
28150
+ access: "create"
28151
+ },
27951
28152
  "pipelineOrchestrator.rebalance": {
27952
28153
  capName: "pipeline-orchestrator",
27953
28154
  capScope: "system",
@@ -27972,6 +28173,12 @@ Object.freeze({
27972
28173
  addonId: null,
27973
28174
  access: "view"
27974
28175
  },
28176
+ "pipelineOrchestrator.resumeForStorageMigration": {
28177
+ capName: "pipeline-orchestrator",
28178
+ capScope: "system",
28179
+ addonId: null,
28180
+ access: "create"
28181
+ },
27975
28182
  "pipelineOrchestrator.saveTemplate": {
27976
28183
  capName: "pipeline-orchestrator",
27977
28184
  capScope: "system",
@@ -28368,7 +28575,7 @@ Object.freeze({
28368
28575
  addonId: null,
28369
28576
  access: "create"
28370
28577
  },
28371
- "recording.cancelRelocate": {
28578
+ "recording.cancelStorageMigrationMove": {
28372
28579
  capName: "recording",
28373
28580
  capScope: "system",
28374
28581
  addonId: null,
@@ -28404,7 +28611,7 @@ Object.freeze({
28404
28611
  addonId: null,
28405
28612
  access: "view"
28406
28613
  },
28407
- "recording.getRelocateStatus": {
28614
+ "recording.getStorageMigrationMoveStatus": {
28408
28615
  capName: "recording",
28409
28616
  capScope: "system",
28410
28617
  addonId: null,
@@ -28428,6 +28635,12 @@ Object.freeze({
28428
28635
  addonId: null,
28429
28636
  access: "view"
28430
28637
  },
28638
+ "recording.pauseForStorageMigration": {
28639
+ capName: "recording",
28640
+ capScope: "system",
28641
+ addonId: null,
28642
+ access: "create"
28643
+ },
28431
28644
  "recording.pruneFootage": {
28432
28645
  capName: "recording",
28433
28646
  capScope: "system",
@@ -28446,7 +28659,7 @@ Object.freeze({
28446
28659
  addonId: null,
28447
28660
  access: "view"
28448
28661
  },
28449
- "recording.relocateFootage": {
28662
+ "recording.refreshStorageLocationsForMigration": {
28450
28663
  capName: "recording",
28451
28664
  capScope: "system",
28452
28665
  addonId: null,
@@ -28470,12 +28683,24 @@ Object.freeze({
28470
28683
  addonId: null,
28471
28684
  access: "create"
28472
28685
  },
28686
+ "recording.resumeForStorageMigration": {
28687
+ capName: "recording",
28688
+ capScope: "system",
28689
+ addonId: null,
28690
+ access: "create"
28691
+ },
28473
28692
  "recording.setDeviceConfig": {
28474
28693
  capName: "recording",
28475
28694
  capScope: "system",
28476
28695
  addonId: null,
28477
28696
  access: "create"
28478
28697
  },
28698
+ "recording.startStorageMigrationMove": {
28699
+ capName: "recording",
28700
+ capScope: "system",
28701
+ addonId: null,
28702
+ access: "create"
28703
+ },
28479
28704
  "recordingExport.cancelExport": {
28480
28705
  capName: "recordingExport",
28481
28706
  capScope: "system",
@@ -28866,6 +29091,30 @@ Object.freeze({
28866
29091
  addonId: null,
28867
29092
  access: "view"
28868
29093
  },
29094
+ "storageMigration.cancel": {
29095
+ capName: "storage-migration",
29096
+ capScope: "system",
29097
+ addonId: null,
29098
+ access: "create"
29099
+ },
29100
+ "storageMigration.plan": {
29101
+ capName: "storage-migration",
29102
+ capScope: "system",
29103
+ addonId: null,
29104
+ access: "view"
29105
+ },
29106
+ "storageMigration.start": {
29107
+ capName: "storage-migration",
29108
+ capScope: "system",
29109
+ addonId: null,
29110
+ access: "create"
29111
+ },
29112
+ "storageMigration.status": {
29113
+ capName: "storage-migration",
29114
+ capScope: "system",
29115
+ addonId: null,
29116
+ access: "view"
29117
+ },
28869
29118
  "storageProvider.abortUpload": {
28870
29119
  capName: "storage-provider",
28871
29120
  capScope: "system",
@@ -29244,12 +29493,42 @@ Object.freeze({
29244
29493
  addonId: null,
29245
29494
  access: "create"
29246
29495
  },
29496
+ "terminalSession.adoptLegacyMonitor": {
29497
+ capName: "terminal-session",
29498
+ capScope: "system",
29499
+ addonId: null,
29500
+ access: "create"
29501
+ },
29247
29502
  "terminalSession.close": {
29248
29503
  capName: "terminal-session",
29249
29504
  capScope: "system",
29250
29505
  addonId: null,
29251
29506
  access: "create"
29252
29507
  },
29508
+ "terminalSession.createInstance": {
29509
+ capName: "terminal-session",
29510
+ capScope: "system",
29511
+ addonId: null,
29512
+ access: "create"
29513
+ },
29514
+ "terminalSession.deleteInstance": {
29515
+ capName: "terminal-session",
29516
+ capScope: "system",
29517
+ addonId: null,
29518
+ access: "delete"
29519
+ },
29520
+ "terminalSession.listInstances": {
29521
+ capName: "terminal-session",
29522
+ capScope: "system",
29523
+ addonId: null,
29524
+ access: "view"
29525
+ },
29526
+ "terminalSession.listLegacyCameras": {
29527
+ capName: "terminal-session",
29528
+ capScope: "system",
29529
+ addonId: null,
29530
+ access: "view"
29531
+ },
29253
29532
  "terminalSession.listProfiles": {
29254
29533
  capName: "terminal-session",
29255
29534
  capScope: "system",
@@ -29280,6 +29559,12 @@ Object.freeze({
29280
29559
  addonId: null,
29281
29560
  access: "create"
29282
29561
  },
29562
+ "terminalSession.setInstanceEnabled": {
29563
+ capName: "terminal-session",
29564
+ capScope: "system",
29565
+ addonId: null,
29566
+ access: "create"
29567
+ },
29283
29568
  "terminalSession.writeInput": {
29284
29569
  capName: "terminal-session",
29285
29570
  capScope: "system",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-mqtt-broker",
3
- "version": "1.2.12",
3
+ "version": "1.2.13",
4
4
  "description": "MQTT broker registry addon for CamStack — manages external broker entries + an optional embedded aedes broker. Consumers spin up their own `mqtt.js` clients via the `mqtt-broker` cap.",
5
5
  "keywords": [
6
6
  "camstack",