@camstack/addon-static-turn 1.2.11 → 1.2.12

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.
@@ -7535,12 +7535,11 @@ var RecordingConfigSchema = object({
7535
7535
  /**
7536
7536
  * Entity-relocation job state (storage entity-routing spec, Phase 4).
7537
7537
  *
7538
- * One shape shared by the recorder's `relocateFootage` (segments) and
7539
- * pipeline-analytics' `relocateMedia` (event media blobs) so the admin Data
7540
- * page renders both movers with one component. Jobs are in-RAM (a restart
7541
- * forgets them re-running is safe by construction: copy-if-absent, delete
7542
- * after verify) and each completed/failed run also lands one durable ops-log
7543
- * row on the owning addon's surface.
7538
+ * One shape shared by the recorder and pipeline-analytics internal movers.
7539
+ * The public admin surface is `storage-migration`; child jobs remain in RAM
7540
+ * because copy-if-absent, verify, delete and index/row repoint are resumable.
7541
+ * Each completed/failed run also lands one durable ops-log row on its owning
7542
+ * addon surface.
7544
7543
  */
7545
7544
  var RelocateJobStateSchema = _enum([
7546
7545
  "running",
@@ -7567,19 +7566,100 @@ var RelocateJobSchema = object({
7567
7566
  finishedAt: number().nullable(),
7568
7567
  error: string().nullable()
7569
7568
  });
7569
+ /** Profile-derived footage selection used only by the migration coordinator:
7570
+ * `recordings` owns high+mid; `recordingsLow` owns low. */
7571
+ var RelocateFootageClassSchema = _enum(["recordings", "recordingsLow"]);
7570
7572
  var RelocateFootageInputSchema = object({
7571
- deviceId: number().optional(),
7572
7573
  fromLocationId: string(),
7573
7574
  toLocationId: string(),
7574
7575
  entities: array(_enum(["segments"])).optional(),
7576
+ /** Limits relocation to the logical profile class. Omit only for the
7577
+ * pre-orchestration compatibility path. */
7578
+ footageClass: RelocateFootageClassSchema.optional(),
7575
7579
  /** Copy throttle in MB/s (default 40) — the drain is a background chore,
7576
7580
  * never allowed to starve live writers. */
7577
7581
  throttleMbps: number().min(1).max(1e3).optional()
7578
7582
  });
7579
- var RelocateMediaInputSchema = object({
7580
- deviceId: number().optional(),
7583
+ /** Internal, lease-scoped participant operation. It is intentionally separate
7584
+ * from persistent recording settings: a migration never changes
7585
+ * `RecordingConfig.enabled` or camera wrapper bindings. */
7586
+ var StorageMigrationLeaseInputSchema = object({ leaseId: string().min(1) });
7587
+ var StorageMigrationFootageMoveInputSchema = RelocateFootageInputSchema.extend({ leaseId: string().min(1) });
7588
+ var StorageMigrationMediaMoveInputSchema = object({
7581
7589
  toLocationId: string(),
7582
7590
  throttleMbps: number().min(1).max(1e3).optional()
7591
+ }).extend({ leaseId: string().min(1) });
7592
+ /** The independently selectable logical storage classes. `recordings`
7593
+ * encompasses the high and mid segment profiles; `recordingsLow` is low
7594
+ * segments; `eventMedia` is post-analysis blobs. */
7595
+ var StorageMigrationClassSchema = _enum([
7596
+ "recordings",
7597
+ "recordingsLow",
7598
+ "eventMedia"
7599
+ ]);
7600
+ /** A destination is always an existing, fully-qualified location id. The
7601
+ * migration API intentionally never changes a source location's `basePath`:
7602
+ * callers create a new `<type>:<slug>` location, then select it here. */
7603
+ var StorageMigrationDestinationsSchema = object({
7604
+ recordings: string().min(1).optional(),
7605
+ recordingsLow: string().min(1).optional(),
7606
+ eventMedia: string().min(1).optional()
7607
+ }).refine((value) => Object.keys(value).length > 0, { message: "select at least one storage class" });
7608
+ /** Shared input for planning and starting an orchestrated storage migration. */
7609
+ var StorageMigrationInputSchema = object({
7610
+ destinations: StorageMigrationDestinationsSchema,
7611
+ throttleMbps: number().min(1).max(1e3).optional()
7612
+ });
7613
+ /** The durable coordinator state machine. The only phase that changes default
7614
+ * locations is `repointing`, after every selected mover has completed and been
7615
+ * verified. */
7616
+ var StorageMigrationPhaseSchema = _enum([
7617
+ "planning",
7618
+ "pausing",
7619
+ "moving",
7620
+ "verifying",
7621
+ "repointing",
7622
+ "refreshing",
7623
+ "resuming",
7624
+ "done",
7625
+ "failed",
7626
+ "cancelled"
7627
+ ]);
7628
+ var StorageMigrationParticipantSchema = _enum([
7629
+ "pipeline",
7630
+ "recorder",
7631
+ "analytics"
7632
+ ]);
7633
+ var StorageMigrationMoveSchema = object({
7634
+ storageClass: StorageMigrationClassSchema,
7635
+ fromLocationId: string(),
7636
+ toLocationId: string(),
7637
+ moverJobId: string().nullable(),
7638
+ state: RelocateJobStateSchema.nullable(),
7639
+ error: string().nullable()
7640
+ });
7641
+ var StorageMigrationJobSchema = object({
7642
+ jobId: string(),
7643
+ phase: StorageMigrationPhaseSchema,
7644
+ destinations: StorageMigrationDestinationsSchema,
7645
+ throttleMbps: number(),
7646
+ moves: array(StorageMigrationMoveSchema),
7647
+ pauseLeaseId: string().nullable(),
7648
+ pausedParticipants: array(StorageMigrationParticipantSchema),
7649
+ repointed: boolean(),
7650
+ cancelRequested: boolean(),
7651
+ startedAt: number(),
7652
+ updatedAt: number(),
7653
+ finishedAt: number().nullable(),
7654
+ error: string().nullable()
7655
+ });
7656
+ var StorageMigrationPlanSchema = object({
7657
+ destinations: StorageMigrationDestinationsSchema,
7658
+ moves: array(object({
7659
+ storageClass: StorageMigrationClassSchema,
7660
+ fromLocationId: string(),
7661
+ toLocationId: string()
7662
+ }))
7583
7663
  });
7584
7664
  /**
7585
7665
  * `StorageLocationType` — an addon-declared id that identifies the *kind* of
@@ -15955,13 +16035,19 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
15955
16035
  }), method(object({ deviceId: number() }), EventPruneCountsSchema, {
15956
16036
  kind: "mutation",
15957
16037
  auth: "admin"
15958
- }), method(RelocateMediaInputSchema, object({ jobId: string() }), {
16038
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
15959
16039
  kind: "mutation",
15960
16040
  auth: "admin"
15961
- }), method(object({}), array(RelocateJobSchema).readonly(), {
15962
- kind: "query",
16041
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
16042
+ kind: "mutation",
16043
+ auth: "admin"
16044
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
16045
+ kind: "mutation",
16046
+ auth: "admin"
16047
+ }), method(StorageMigrationMediaMoveInputSchema, object({ jobId: string() }), {
16048
+ kind: "mutation",
15963
16049
  auth: "admin"
15964
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
16050
+ }), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
15965
16051
  kind: "mutation",
15966
16052
  auth: "admin"
15967
16053
  }), method(OpsLogQueryInputSchema, array(OpsLogEntrySchema).readonly(), {
@@ -17458,7 +17544,13 @@ var NodeInferenceDevicesSchema = object({
17458
17544
  reachable: boolean(),
17459
17545
  devices: array(NodeInferenceDeviceSchema).readonly()
17460
17546
  });
17461
- method(object({
17547
+ method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
17548
+ kind: "mutation",
17549
+ auth: "admin"
17550
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
17551
+ kind: "mutation",
17552
+ auth: "admin"
17553
+ }), method(object({
17462
17554
  deviceId: number(),
17463
17555
  agentNodeId: string()
17464
17556
  }), object({ success: literal(true) }), {
@@ -18132,6 +18224,13 @@ method(object({ locationId: string() }), EvictableUsageSchema), method(object({
18132
18224
  locationId: string(),
18133
18225
  targetBytes: number().int().positive()
18134
18226
  }), EvictResultSchema, { kind: "mutation" });
18227
+ method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin" }), method(StorageMigrationInputSchema, object({ jobId: string() }), {
18228
+ kind: "mutation",
18229
+ auth: "admin"
18230
+ }), method(object({ jobId: string().optional() }), StorageMigrationJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
18231
+ kind: "mutation",
18232
+ auth: "admin"
18233
+ });
18135
18234
  var ProviderInfoSchema = discriminatedUnion("shouldSaveDiskSpace", [object({
18136
18235
  providerId: string().min(1),
18137
18236
  displayName: string().min(1),
@@ -18235,6 +18334,28 @@ var TerminalProfileInfoSchema = object({
18235
18334
  label: string(),
18236
18335
  description: string().optional()
18237
18336
  });
18337
+ /**
18338
+ * A durable operator-created Terminal instance. Profiles are templates; only
18339
+ * an instance declares a camera.
18340
+ */
18341
+ var TerminalInstanceInfoSchema = object({
18342
+ instanceId: string(),
18343
+ cameraStableId: string(),
18344
+ nodeId: string(),
18345
+ profileId: string(),
18346
+ profileLabel: string(),
18347
+ name: string(),
18348
+ enabled: boolean()
18349
+ });
18350
+ var TerminalLegacyCameraSchema = object({
18351
+ stableId: string(),
18352
+ nodeId: string(),
18353
+ profileId: string(),
18354
+ profileLabel: string(),
18355
+ name: string(),
18356
+ /** Only legacy monitor cameras can retain their historic stable identity. */
18357
+ adoptable: boolean()
18358
+ });
18238
18359
  var TerminalOutputEventSchema = discriminatedUnion("kind", [object({
18239
18360
  seq: number().int().positive(),
18240
18361
  kind: literal("data"),
@@ -18251,7 +18372,29 @@ var TerminalOutputBatchSchema = object({
18251
18372
  snapshot: string().optional(),
18252
18373
  events: array(TerminalOutputEventSchema).readonly()
18253
18374
  });
18254
- method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
18375
+ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalInstanceInfoSchema).readonly(), { auth: "admin" }), method(object({
18376
+ targetNodeId: string().min(1),
18377
+ profileId: string().min(1),
18378
+ name: string().trim().min(1).max(160).optional()
18379
+ }), TerminalInstanceInfoSchema, {
18380
+ kind: "mutation",
18381
+ auth: "admin"
18382
+ }), method(object({ instanceId: string().min(1) }), _void(), {
18383
+ kind: "mutation",
18384
+ auth: "admin"
18385
+ }), method(object({
18386
+ instanceId: string().min(1),
18387
+ enabled: boolean()
18388
+ }), TerminalInstanceInfoSchema, {
18389
+ kind: "mutation",
18390
+ auth: "admin"
18391
+ }), method(_void(), array(TerminalLegacyCameraSchema).readonly(), { auth: "admin" }), method(object({
18392
+ stableId: string().min(1),
18393
+ name: string().trim().min(1).max(160).optional()
18394
+ }), TerminalInstanceInfoSchema, {
18395
+ kind: "mutation",
18396
+ auth: "admin"
18397
+ }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
18255
18398
  profileId: string(),
18256
18399
  cols: number().int().positive(),
18257
18400
  rows: number().int().positive()
@@ -18268,7 +18411,13 @@ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }),
18268
18411
  }), method(object({
18269
18412
  sessionId: string(),
18270
18413
  afterSeq: number().int().nonnegative(),
18271
- waitMs: number().int().min(0).max(2e3).default(0)
18414
+ waitMs: number().int().min(0).max(2e3).default(0),
18415
+ /**
18416
+ * Wait when a just-opened session has no output yet. Kept opt-in so a
18417
+ * browser's initial repaint remains immediate; the camera snapshot
18418
+ * relay uses it to avoid encoding a blank startup frame.
18419
+ */
18420
+ waitForOutput: boolean().optional()
18272
18421
  }), TerminalOutputBatchSchema, {
18273
18422
  kind: "mutation",
18274
18423
  auth: "admin",
@@ -20232,6 +20381,7 @@ var FaceInfoSchema = object({
20232
20381
  var FaceFilterEnum = _enum([
20233
20382
  "unassigned",
20234
20383
  "recognized",
20384
+ "identified",
20235
20385
  "all"
20236
20386
  ]);
20237
20387
  var MediaFileLiteSchema$1 = object({
@@ -20260,6 +20410,8 @@ method(_void(), array(IdentitySchema).readonly()), method(object({ name: string(
20260
20410
  kind: "mutation",
20261
20411
  auth: "admin"
20262
20412
  }), method(object({
20413
+ /** Restrict to one camera. Absent keeps the cluster-wide gallery view. */
20414
+ deviceId: number().int().optional(),
20263
20415
  limit: number().int().positive().optional(),
20264
20416
  filter: FaceFilterEnum.optional(),
20265
20417
  /**
@@ -22025,6 +22177,10 @@ var OsdSourceSchema = discriminatedUnion("kind", [
22025
22177
  capName: string().min(1).max(64),
22026
22178
  /** Dot path inside the slice, e.g. `detected`, `value`, `mode`. */
22027
22179
  valuePath: string().min(1).max(64)
22180
+ }),
22181
+ object({
22182
+ kind: literal("latest-recognition"),
22183
+ recognition: _enum(["person", "plate"])
22028
22184
  })
22029
22185
  ]);
22030
22186
  var OsdSlotBindingSchema = object({
@@ -22130,6 +22286,15 @@ method(object({ deviceId: number().int() }), object({
22130
22286
  }), object({ success: literal(true) }), {
22131
22287
  kind: "mutation",
22132
22288
  auth: "admin"
22289
+ }), method(object({
22290
+ sourceDeviceId: number().int(),
22291
+ targetDeviceId: number().int()
22292
+ }), object({
22293
+ copied: number().int().nonnegative(),
22294
+ skipped: number().int().nonnegative()
22295
+ }), {
22296
+ kind: "mutation",
22297
+ auth: "admin"
22133
22298
  }), method(object({
22134
22299
  deviceId: number().int(),
22135
22300
  slotId: string().min(1),
@@ -23015,13 +23180,19 @@ method(object({
23015
23180
  }), {
23016
23181
  kind: "mutation",
23017
23182
  auth: "admin"
23018
- }), method(RelocateFootageInputSchema, object({ jobId: string() }), {
23183
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
23019
23184
  kind: "mutation",
23020
23185
  auth: "admin"
23021
- }), method(object({}), array(RelocateJobSchema).readonly(), {
23022
- kind: "query",
23186
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
23187
+ kind: "mutation",
23023
23188
  auth: "admin"
23024
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
23189
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
23190
+ kind: "mutation",
23191
+ auth: "admin"
23192
+ }), method(StorageMigrationFootageMoveInputSchema, object({ jobId: string() }), {
23193
+ kind: "mutation",
23194
+ auth: "admin"
23195
+ }), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
23025
23196
  kind: "mutation",
23026
23197
  auth: "admin"
23027
23198
  });
@@ -27143,6 +27314,12 @@ Object.freeze({
27143
27314
  addonId: null,
27144
27315
  access: "delete"
27145
27316
  },
27317
+ "osdManager.copyDeviceConfiguration": {
27318
+ capName: "osd-manager",
27319
+ capScope: "system",
27320
+ addonId: null,
27321
+ access: "create"
27322
+ },
27146
27323
  "osdManager.getConditionSupport": {
27147
27324
  capName: "osd-manager",
27148
27325
  capScope: "system",
@@ -27239,7 +27416,7 @@ Object.freeze({
27239
27416
  addonId: null,
27240
27417
  access: "create"
27241
27418
  },
27242
- "pipelineAnalytics.cancelMediaRelocate": {
27419
+ "pipelineAnalytics.cancelStorageMigrationMove": {
27243
27420
  capName: "pipeline-analytics",
27244
27421
  capScope: "device",
27245
27422
  addonId: null,
@@ -27311,12 +27488,6 @@ Object.freeze({
27311
27488
  addonId: null,
27312
27489
  access: "view"
27313
27490
  },
27314
- "pipelineAnalytics.getMediaRelocateStatus": {
27315
- capName: "pipeline-analytics",
27316
- capScope: "device",
27317
- addonId: null,
27318
- access: "view"
27319
- },
27320
27491
  "pipelineAnalytics.getMotionEvents": {
27321
27492
  capName: "pipeline-analytics",
27322
27493
  capScope: "device",
@@ -27353,6 +27524,12 @@ Object.freeze({
27353
27524
  addonId: null,
27354
27525
  access: "view"
27355
27526
  },
27527
+ "pipelineAnalytics.getStorageMigrationMoveStatus": {
27528
+ capName: "pipeline-analytics",
27529
+ capScope: "device",
27530
+ addonId: null,
27531
+ access: "view"
27532
+ },
27356
27533
  "pipelineAnalytics.getTrack": {
27357
27534
  capName: "pipeline-analytics",
27358
27535
  capScope: "device",
@@ -27431,6 +27608,12 @@ Object.freeze({
27431
27608
  addonId: null,
27432
27609
  access: "view"
27433
27610
  },
27611
+ "pipelineAnalytics.pauseForStorageMigration": {
27612
+ capName: "pipeline-analytics",
27613
+ capScope: "device",
27614
+ addonId: null,
27615
+ access: "create"
27616
+ },
27434
27617
  "pipelineAnalytics.proposeRetrainAnnotations": {
27435
27618
  capName: "pipeline-analytics",
27436
27619
  capScope: "device",
@@ -27461,7 +27644,7 @@ Object.freeze({
27461
27644
  addonId: null,
27462
27645
  access: "create"
27463
27646
  },
27464
- "pipelineAnalytics.relocateMedia": {
27647
+ "pipelineAnalytics.refreshStorageLocationsForMigration": {
27465
27648
  capName: "pipeline-analytics",
27466
27649
  capScope: "device",
27467
27650
  addonId: null,
@@ -27473,6 +27656,12 @@ Object.freeze({
27473
27656
  addonId: null,
27474
27657
  access: "create"
27475
27658
  },
27659
+ "pipelineAnalytics.resumeForStorageMigration": {
27660
+ capName: "pipeline-analytics",
27661
+ capScope: "device",
27662
+ addonId: null,
27663
+ access: "create"
27664
+ },
27476
27665
  "pipelineAnalytics.saveRetrainAnnotations": {
27477
27666
  capName: "pipeline-analytics",
27478
27667
  capScope: "device",
@@ -27497,6 +27686,12 @@ Object.freeze({
27497
27686
  addonId: null,
27498
27687
  access: "create"
27499
27688
  },
27689
+ "pipelineAnalytics.startStorageMigrationMove": {
27690
+ capName: "pipeline-analytics",
27691
+ capScope: "device",
27692
+ addonId: null,
27693
+ access: "create"
27694
+ },
27500
27695
  "pipelineAnalytics.wipeAllAnalytics": {
27501
27696
  capName: "pipeline-analytics",
27502
27697
  capScope: "device",
@@ -27863,6 +28058,12 @@ Object.freeze({
27863
28058
  addonId: null,
27864
28059
  access: "view"
27865
28060
  },
28061
+ "pipelineOrchestrator.pauseForStorageMigration": {
28062
+ capName: "pipeline-orchestrator",
28063
+ capScope: "system",
28064
+ addonId: null,
28065
+ access: "create"
28066
+ },
27866
28067
  "pipelineOrchestrator.rebalance": {
27867
28068
  capName: "pipeline-orchestrator",
27868
28069
  capScope: "system",
@@ -27887,6 +28088,12 @@ Object.freeze({
27887
28088
  addonId: null,
27888
28089
  access: "view"
27889
28090
  },
28091
+ "pipelineOrchestrator.resumeForStorageMigration": {
28092
+ capName: "pipeline-orchestrator",
28093
+ capScope: "system",
28094
+ addonId: null,
28095
+ access: "create"
28096
+ },
27890
28097
  "pipelineOrchestrator.saveTemplate": {
27891
28098
  capName: "pipeline-orchestrator",
27892
28099
  capScope: "system",
@@ -28283,7 +28490,7 @@ Object.freeze({
28283
28490
  addonId: null,
28284
28491
  access: "create"
28285
28492
  },
28286
- "recording.cancelRelocate": {
28493
+ "recording.cancelStorageMigrationMove": {
28287
28494
  capName: "recording",
28288
28495
  capScope: "system",
28289
28496
  addonId: null,
@@ -28319,7 +28526,7 @@ Object.freeze({
28319
28526
  addonId: null,
28320
28527
  access: "view"
28321
28528
  },
28322
- "recording.getRelocateStatus": {
28529
+ "recording.getStorageMigrationMoveStatus": {
28323
28530
  capName: "recording",
28324
28531
  capScope: "system",
28325
28532
  addonId: null,
@@ -28343,6 +28550,12 @@ Object.freeze({
28343
28550
  addonId: null,
28344
28551
  access: "view"
28345
28552
  },
28553
+ "recording.pauseForStorageMigration": {
28554
+ capName: "recording",
28555
+ capScope: "system",
28556
+ addonId: null,
28557
+ access: "create"
28558
+ },
28346
28559
  "recording.pruneFootage": {
28347
28560
  capName: "recording",
28348
28561
  capScope: "system",
@@ -28361,7 +28574,7 @@ Object.freeze({
28361
28574
  addonId: null,
28362
28575
  access: "view"
28363
28576
  },
28364
- "recording.relocateFootage": {
28577
+ "recording.refreshStorageLocationsForMigration": {
28365
28578
  capName: "recording",
28366
28579
  capScope: "system",
28367
28580
  addonId: null,
@@ -28385,12 +28598,24 @@ Object.freeze({
28385
28598
  addonId: null,
28386
28599
  access: "create"
28387
28600
  },
28601
+ "recording.resumeForStorageMigration": {
28602
+ capName: "recording",
28603
+ capScope: "system",
28604
+ addonId: null,
28605
+ access: "create"
28606
+ },
28388
28607
  "recording.setDeviceConfig": {
28389
28608
  capName: "recording",
28390
28609
  capScope: "system",
28391
28610
  addonId: null,
28392
28611
  access: "create"
28393
28612
  },
28613
+ "recording.startStorageMigrationMove": {
28614
+ capName: "recording",
28615
+ capScope: "system",
28616
+ addonId: null,
28617
+ access: "create"
28618
+ },
28394
28619
  "recordingExport.cancelExport": {
28395
28620
  capName: "recordingExport",
28396
28621
  capScope: "system",
@@ -28781,6 +29006,30 @@ Object.freeze({
28781
29006
  addonId: null,
28782
29007
  access: "view"
28783
29008
  },
29009
+ "storageMigration.cancel": {
29010
+ capName: "storage-migration",
29011
+ capScope: "system",
29012
+ addonId: null,
29013
+ access: "create"
29014
+ },
29015
+ "storageMigration.plan": {
29016
+ capName: "storage-migration",
29017
+ capScope: "system",
29018
+ addonId: null,
29019
+ access: "view"
29020
+ },
29021
+ "storageMigration.start": {
29022
+ capName: "storage-migration",
29023
+ capScope: "system",
29024
+ addonId: null,
29025
+ access: "create"
29026
+ },
29027
+ "storageMigration.status": {
29028
+ capName: "storage-migration",
29029
+ capScope: "system",
29030
+ addonId: null,
29031
+ access: "view"
29032
+ },
28784
29033
  "storageProvider.abortUpload": {
28785
29034
  capName: "storage-provider",
28786
29035
  capScope: "system",
@@ -29159,12 +29408,42 @@ Object.freeze({
29159
29408
  addonId: null,
29160
29409
  access: "create"
29161
29410
  },
29411
+ "terminalSession.adoptLegacyMonitor": {
29412
+ capName: "terminal-session",
29413
+ capScope: "system",
29414
+ addonId: null,
29415
+ access: "create"
29416
+ },
29162
29417
  "terminalSession.close": {
29163
29418
  capName: "terminal-session",
29164
29419
  capScope: "system",
29165
29420
  addonId: null,
29166
29421
  access: "create"
29167
29422
  },
29423
+ "terminalSession.createInstance": {
29424
+ capName: "terminal-session",
29425
+ capScope: "system",
29426
+ addonId: null,
29427
+ access: "create"
29428
+ },
29429
+ "terminalSession.deleteInstance": {
29430
+ capName: "terminal-session",
29431
+ capScope: "system",
29432
+ addonId: null,
29433
+ access: "delete"
29434
+ },
29435
+ "terminalSession.listInstances": {
29436
+ capName: "terminal-session",
29437
+ capScope: "system",
29438
+ addonId: null,
29439
+ access: "view"
29440
+ },
29441
+ "terminalSession.listLegacyCameras": {
29442
+ capName: "terminal-session",
29443
+ capScope: "system",
29444
+ addonId: null,
29445
+ access: "view"
29446
+ },
29168
29447
  "terminalSession.listProfiles": {
29169
29448
  capName: "terminal-session",
29170
29449
  capScope: "system",
@@ -29195,6 +29474,12 @@ Object.freeze({
29195
29474
  addonId: null,
29196
29475
  access: "create"
29197
29476
  },
29477
+ "terminalSession.setInstanceEnabled": {
29478
+ capName: "terminal-session",
29479
+ capScope: "system",
29480
+ addonId: null,
29481
+ access: "create"
29482
+ },
29198
29483
  "terminalSession.writeInput": {
29199
29484
  capName: "terminal-session",
29200
29485
  capScope: "system",
@@ -7534,12 +7534,11 @@ var RecordingConfigSchema = object({
7534
7534
  /**
7535
7535
  * Entity-relocation job state (storage entity-routing spec, Phase 4).
7536
7536
  *
7537
- * One shape shared by the recorder's `relocateFootage` (segments) and
7538
- * pipeline-analytics' `relocateMedia` (event media blobs) so the admin Data
7539
- * page renders both movers with one component. Jobs are in-RAM (a restart
7540
- * forgets them re-running is safe by construction: copy-if-absent, delete
7541
- * after verify) and each completed/failed run also lands one durable ops-log
7542
- * row on the owning addon's surface.
7537
+ * One shape shared by the recorder and pipeline-analytics internal movers.
7538
+ * The public admin surface is `storage-migration`; child jobs remain in RAM
7539
+ * because copy-if-absent, verify, delete and index/row repoint are resumable.
7540
+ * Each completed/failed run also lands one durable ops-log row on its owning
7541
+ * addon surface.
7543
7542
  */
7544
7543
  var RelocateJobStateSchema = _enum([
7545
7544
  "running",
@@ -7566,19 +7565,100 @@ var RelocateJobSchema = object({
7566
7565
  finishedAt: number().nullable(),
7567
7566
  error: string().nullable()
7568
7567
  });
7568
+ /** Profile-derived footage selection used only by the migration coordinator:
7569
+ * `recordings` owns high+mid; `recordingsLow` owns low. */
7570
+ var RelocateFootageClassSchema = _enum(["recordings", "recordingsLow"]);
7569
7571
  var RelocateFootageInputSchema = object({
7570
- deviceId: number().optional(),
7571
7572
  fromLocationId: string(),
7572
7573
  toLocationId: string(),
7573
7574
  entities: array(_enum(["segments"])).optional(),
7575
+ /** Limits relocation to the logical profile class. Omit only for the
7576
+ * pre-orchestration compatibility path. */
7577
+ footageClass: RelocateFootageClassSchema.optional(),
7574
7578
  /** Copy throttle in MB/s (default 40) — the drain is a background chore,
7575
7579
  * never allowed to starve live writers. */
7576
7580
  throttleMbps: number().min(1).max(1e3).optional()
7577
7581
  });
7578
- var RelocateMediaInputSchema = object({
7579
- deviceId: number().optional(),
7582
+ /** Internal, lease-scoped participant operation. It is intentionally separate
7583
+ * from persistent recording settings: a migration never changes
7584
+ * `RecordingConfig.enabled` or camera wrapper bindings. */
7585
+ var StorageMigrationLeaseInputSchema = object({ leaseId: string().min(1) });
7586
+ var StorageMigrationFootageMoveInputSchema = RelocateFootageInputSchema.extend({ leaseId: string().min(1) });
7587
+ var StorageMigrationMediaMoveInputSchema = object({
7580
7588
  toLocationId: string(),
7581
7589
  throttleMbps: number().min(1).max(1e3).optional()
7590
+ }).extend({ leaseId: string().min(1) });
7591
+ /** The independently selectable logical storage classes. `recordings`
7592
+ * encompasses the high and mid segment profiles; `recordingsLow` is low
7593
+ * segments; `eventMedia` is post-analysis blobs. */
7594
+ var StorageMigrationClassSchema = _enum([
7595
+ "recordings",
7596
+ "recordingsLow",
7597
+ "eventMedia"
7598
+ ]);
7599
+ /** A destination is always an existing, fully-qualified location id. The
7600
+ * migration API intentionally never changes a source location's `basePath`:
7601
+ * callers create a new `<type>:<slug>` location, then select it here. */
7602
+ var StorageMigrationDestinationsSchema = object({
7603
+ recordings: string().min(1).optional(),
7604
+ recordingsLow: string().min(1).optional(),
7605
+ eventMedia: string().min(1).optional()
7606
+ }).refine((value) => Object.keys(value).length > 0, { message: "select at least one storage class" });
7607
+ /** Shared input for planning and starting an orchestrated storage migration. */
7608
+ var StorageMigrationInputSchema = object({
7609
+ destinations: StorageMigrationDestinationsSchema,
7610
+ throttleMbps: number().min(1).max(1e3).optional()
7611
+ });
7612
+ /** The durable coordinator state machine. The only phase that changes default
7613
+ * locations is `repointing`, after every selected mover has completed and been
7614
+ * verified. */
7615
+ var StorageMigrationPhaseSchema = _enum([
7616
+ "planning",
7617
+ "pausing",
7618
+ "moving",
7619
+ "verifying",
7620
+ "repointing",
7621
+ "refreshing",
7622
+ "resuming",
7623
+ "done",
7624
+ "failed",
7625
+ "cancelled"
7626
+ ]);
7627
+ var StorageMigrationParticipantSchema = _enum([
7628
+ "pipeline",
7629
+ "recorder",
7630
+ "analytics"
7631
+ ]);
7632
+ var StorageMigrationMoveSchema = object({
7633
+ storageClass: StorageMigrationClassSchema,
7634
+ fromLocationId: string(),
7635
+ toLocationId: string(),
7636
+ moverJobId: string().nullable(),
7637
+ state: RelocateJobStateSchema.nullable(),
7638
+ error: string().nullable()
7639
+ });
7640
+ var StorageMigrationJobSchema = object({
7641
+ jobId: string(),
7642
+ phase: StorageMigrationPhaseSchema,
7643
+ destinations: StorageMigrationDestinationsSchema,
7644
+ throttleMbps: number(),
7645
+ moves: array(StorageMigrationMoveSchema),
7646
+ pauseLeaseId: string().nullable(),
7647
+ pausedParticipants: array(StorageMigrationParticipantSchema),
7648
+ repointed: boolean(),
7649
+ cancelRequested: boolean(),
7650
+ startedAt: number(),
7651
+ updatedAt: number(),
7652
+ finishedAt: number().nullable(),
7653
+ error: string().nullable()
7654
+ });
7655
+ var StorageMigrationPlanSchema = object({
7656
+ destinations: StorageMigrationDestinationsSchema,
7657
+ moves: array(object({
7658
+ storageClass: StorageMigrationClassSchema,
7659
+ fromLocationId: string(),
7660
+ toLocationId: string()
7661
+ }))
7582
7662
  });
7583
7663
  /**
7584
7664
  * `StorageLocationType` — an addon-declared id that identifies the *kind* of
@@ -15954,13 +16034,19 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
15954
16034
  }), method(object({ deviceId: number() }), EventPruneCountsSchema, {
15955
16035
  kind: "mutation",
15956
16036
  auth: "admin"
15957
- }), method(RelocateMediaInputSchema, object({ jobId: string() }), {
16037
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
15958
16038
  kind: "mutation",
15959
16039
  auth: "admin"
15960
- }), method(object({}), array(RelocateJobSchema).readonly(), {
15961
- kind: "query",
16040
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
16041
+ kind: "mutation",
16042
+ auth: "admin"
16043
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
16044
+ kind: "mutation",
16045
+ auth: "admin"
16046
+ }), method(StorageMigrationMediaMoveInputSchema, object({ jobId: string() }), {
16047
+ kind: "mutation",
15962
16048
  auth: "admin"
15963
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
16049
+ }), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
15964
16050
  kind: "mutation",
15965
16051
  auth: "admin"
15966
16052
  }), method(OpsLogQueryInputSchema, array(OpsLogEntrySchema).readonly(), {
@@ -17457,7 +17543,13 @@ var NodeInferenceDevicesSchema = object({
17457
17543
  reachable: boolean(),
17458
17544
  devices: array(NodeInferenceDeviceSchema).readonly()
17459
17545
  });
17460
- method(object({
17546
+ method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
17547
+ kind: "mutation",
17548
+ auth: "admin"
17549
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
17550
+ kind: "mutation",
17551
+ auth: "admin"
17552
+ }), method(object({
17461
17553
  deviceId: number(),
17462
17554
  agentNodeId: string()
17463
17555
  }), object({ success: literal(true) }), {
@@ -18131,6 +18223,13 @@ method(object({ locationId: string() }), EvictableUsageSchema), method(object({
18131
18223
  locationId: string(),
18132
18224
  targetBytes: number().int().positive()
18133
18225
  }), EvictResultSchema, { kind: "mutation" });
18226
+ method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin" }), method(StorageMigrationInputSchema, object({ jobId: string() }), {
18227
+ kind: "mutation",
18228
+ auth: "admin"
18229
+ }), method(object({ jobId: string().optional() }), StorageMigrationJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
18230
+ kind: "mutation",
18231
+ auth: "admin"
18232
+ });
18134
18233
  var ProviderInfoSchema = discriminatedUnion("shouldSaveDiskSpace", [object({
18135
18234
  providerId: string().min(1),
18136
18235
  displayName: string().min(1),
@@ -18234,6 +18333,28 @@ var TerminalProfileInfoSchema = object({
18234
18333
  label: string(),
18235
18334
  description: string().optional()
18236
18335
  });
18336
+ /**
18337
+ * A durable operator-created Terminal instance. Profiles are templates; only
18338
+ * an instance declares a camera.
18339
+ */
18340
+ var TerminalInstanceInfoSchema = object({
18341
+ instanceId: string(),
18342
+ cameraStableId: string(),
18343
+ nodeId: string(),
18344
+ profileId: string(),
18345
+ profileLabel: string(),
18346
+ name: string(),
18347
+ enabled: boolean()
18348
+ });
18349
+ var TerminalLegacyCameraSchema = object({
18350
+ stableId: string(),
18351
+ nodeId: string(),
18352
+ profileId: string(),
18353
+ profileLabel: string(),
18354
+ name: string(),
18355
+ /** Only legacy monitor cameras can retain their historic stable identity. */
18356
+ adoptable: boolean()
18357
+ });
18237
18358
  var TerminalOutputEventSchema = discriminatedUnion("kind", [object({
18238
18359
  seq: number().int().positive(),
18239
18360
  kind: literal("data"),
@@ -18250,7 +18371,29 @@ var TerminalOutputBatchSchema = object({
18250
18371
  snapshot: string().optional(),
18251
18372
  events: array(TerminalOutputEventSchema).readonly()
18252
18373
  });
18253
- method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
18374
+ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalInstanceInfoSchema).readonly(), { auth: "admin" }), method(object({
18375
+ targetNodeId: string().min(1),
18376
+ profileId: string().min(1),
18377
+ name: string().trim().min(1).max(160).optional()
18378
+ }), TerminalInstanceInfoSchema, {
18379
+ kind: "mutation",
18380
+ auth: "admin"
18381
+ }), method(object({ instanceId: string().min(1) }), _void(), {
18382
+ kind: "mutation",
18383
+ auth: "admin"
18384
+ }), method(object({
18385
+ instanceId: string().min(1),
18386
+ enabled: boolean()
18387
+ }), TerminalInstanceInfoSchema, {
18388
+ kind: "mutation",
18389
+ auth: "admin"
18390
+ }), method(_void(), array(TerminalLegacyCameraSchema).readonly(), { auth: "admin" }), method(object({
18391
+ stableId: string().min(1),
18392
+ name: string().trim().min(1).max(160).optional()
18393
+ }), TerminalInstanceInfoSchema, {
18394
+ kind: "mutation",
18395
+ auth: "admin"
18396
+ }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
18254
18397
  profileId: string(),
18255
18398
  cols: number().int().positive(),
18256
18399
  rows: number().int().positive()
@@ -18267,7 +18410,13 @@ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }),
18267
18410
  }), method(object({
18268
18411
  sessionId: string(),
18269
18412
  afterSeq: number().int().nonnegative(),
18270
- waitMs: number().int().min(0).max(2e3).default(0)
18413
+ waitMs: number().int().min(0).max(2e3).default(0),
18414
+ /**
18415
+ * Wait when a just-opened session has no output yet. Kept opt-in so a
18416
+ * browser's initial repaint remains immediate; the camera snapshot
18417
+ * relay uses it to avoid encoding a blank startup frame.
18418
+ */
18419
+ waitForOutput: boolean().optional()
18271
18420
  }), TerminalOutputBatchSchema, {
18272
18421
  kind: "mutation",
18273
18422
  auth: "admin",
@@ -20231,6 +20380,7 @@ var FaceInfoSchema = object({
20231
20380
  var FaceFilterEnum = _enum([
20232
20381
  "unassigned",
20233
20382
  "recognized",
20383
+ "identified",
20234
20384
  "all"
20235
20385
  ]);
20236
20386
  var MediaFileLiteSchema$1 = object({
@@ -20259,6 +20409,8 @@ method(_void(), array(IdentitySchema).readonly()), method(object({ name: string(
20259
20409
  kind: "mutation",
20260
20410
  auth: "admin"
20261
20411
  }), method(object({
20412
+ /** Restrict to one camera. Absent keeps the cluster-wide gallery view. */
20413
+ deviceId: number().int().optional(),
20262
20414
  limit: number().int().positive().optional(),
20263
20415
  filter: FaceFilterEnum.optional(),
20264
20416
  /**
@@ -22024,6 +22176,10 @@ var OsdSourceSchema = discriminatedUnion("kind", [
22024
22176
  capName: string().min(1).max(64),
22025
22177
  /** Dot path inside the slice, e.g. `detected`, `value`, `mode`. */
22026
22178
  valuePath: string().min(1).max(64)
22179
+ }),
22180
+ object({
22181
+ kind: literal("latest-recognition"),
22182
+ recognition: _enum(["person", "plate"])
22027
22183
  })
22028
22184
  ]);
22029
22185
  var OsdSlotBindingSchema = object({
@@ -22129,6 +22285,15 @@ method(object({ deviceId: number().int() }), object({
22129
22285
  }), object({ success: literal(true) }), {
22130
22286
  kind: "mutation",
22131
22287
  auth: "admin"
22288
+ }), method(object({
22289
+ sourceDeviceId: number().int(),
22290
+ targetDeviceId: number().int()
22291
+ }), object({
22292
+ copied: number().int().nonnegative(),
22293
+ skipped: number().int().nonnegative()
22294
+ }), {
22295
+ kind: "mutation",
22296
+ auth: "admin"
22132
22297
  }), method(object({
22133
22298
  deviceId: number().int(),
22134
22299
  slotId: string().min(1),
@@ -23014,13 +23179,19 @@ method(object({
23014
23179
  }), {
23015
23180
  kind: "mutation",
23016
23181
  auth: "admin"
23017
- }), method(RelocateFootageInputSchema, object({ jobId: string() }), {
23182
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
23018
23183
  kind: "mutation",
23019
23184
  auth: "admin"
23020
- }), method(object({}), array(RelocateJobSchema).readonly(), {
23021
- kind: "query",
23185
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
23186
+ kind: "mutation",
23022
23187
  auth: "admin"
23023
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
23188
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
23189
+ kind: "mutation",
23190
+ auth: "admin"
23191
+ }), method(StorageMigrationFootageMoveInputSchema, object({ jobId: string() }), {
23192
+ kind: "mutation",
23193
+ auth: "admin"
23194
+ }), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
23024
23195
  kind: "mutation",
23025
23196
  auth: "admin"
23026
23197
  });
@@ -27142,6 +27313,12 @@ Object.freeze({
27142
27313
  addonId: null,
27143
27314
  access: "delete"
27144
27315
  },
27316
+ "osdManager.copyDeviceConfiguration": {
27317
+ capName: "osd-manager",
27318
+ capScope: "system",
27319
+ addonId: null,
27320
+ access: "create"
27321
+ },
27145
27322
  "osdManager.getConditionSupport": {
27146
27323
  capName: "osd-manager",
27147
27324
  capScope: "system",
@@ -27238,7 +27415,7 @@ Object.freeze({
27238
27415
  addonId: null,
27239
27416
  access: "create"
27240
27417
  },
27241
- "pipelineAnalytics.cancelMediaRelocate": {
27418
+ "pipelineAnalytics.cancelStorageMigrationMove": {
27242
27419
  capName: "pipeline-analytics",
27243
27420
  capScope: "device",
27244
27421
  addonId: null,
@@ -27310,12 +27487,6 @@ Object.freeze({
27310
27487
  addonId: null,
27311
27488
  access: "view"
27312
27489
  },
27313
- "pipelineAnalytics.getMediaRelocateStatus": {
27314
- capName: "pipeline-analytics",
27315
- capScope: "device",
27316
- addonId: null,
27317
- access: "view"
27318
- },
27319
27490
  "pipelineAnalytics.getMotionEvents": {
27320
27491
  capName: "pipeline-analytics",
27321
27492
  capScope: "device",
@@ -27352,6 +27523,12 @@ Object.freeze({
27352
27523
  addonId: null,
27353
27524
  access: "view"
27354
27525
  },
27526
+ "pipelineAnalytics.getStorageMigrationMoveStatus": {
27527
+ capName: "pipeline-analytics",
27528
+ capScope: "device",
27529
+ addonId: null,
27530
+ access: "view"
27531
+ },
27355
27532
  "pipelineAnalytics.getTrack": {
27356
27533
  capName: "pipeline-analytics",
27357
27534
  capScope: "device",
@@ -27430,6 +27607,12 @@ Object.freeze({
27430
27607
  addonId: null,
27431
27608
  access: "view"
27432
27609
  },
27610
+ "pipelineAnalytics.pauseForStorageMigration": {
27611
+ capName: "pipeline-analytics",
27612
+ capScope: "device",
27613
+ addonId: null,
27614
+ access: "create"
27615
+ },
27433
27616
  "pipelineAnalytics.proposeRetrainAnnotations": {
27434
27617
  capName: "pipeline-analytics",
27435
27618
  capScope: "device",
@@ -27460,7 +27643,7 @@ Object.freeze({
27460
27643
  addonId: null,
27461
27644
  access: "create"
27462
27645
  },
27463
- "pipelineAnalytics.relocateMedia": {
27646
+ "pipelineAnalytics.refreshStorageLocationsForMigration": {
27464
27647
  capName: "pipeline-analytics",
27465
27648
  capScope: "device",
27466
27649
  addonId: null,
@@ -27472,6 +27655,12 @@ Object.freeze({
27472
27655
  addonId: null,
27473
27656
  access: "create"
27474
27657
  },
27658
+ "pipelineAnalytics.resumeForStorageMigration": {
27659
+ capName: "pipeline-analytics",
27660
+ capScope: "device",
27661
+ addonId: null,
27662
+ access: "create"
27663
+ },
27475
27664
  "pipelineAnalytics.saveRetrainAnnotations": {
27476
27665
  capName: "pipeline-analytics",
27477
27666
  capScope: "device",
@@ -27496,6 +27685,12 @@ Object.freeze({
27496
27685
  addonId: null,
27497
27686
  access: "create"
27498
27687
  },
27688
+ "pipelineAnalytics.startStorageMigrationMove": {
27689
+ capName: "pipeline-analytics",
27690
+ capScope: "device",
27691
+ addonId: null,
27692
+ access: "create"
27693
+ },
27499
27694
  "pipelineAnalytics.wipeAllAnalytics": {
27500
27695
  capName: "pipeline-analytics",
27501
27696
  capScope: "device",
@@ -27862,6 +28057,12 @@ Object.freeze({
27862
28057
  addonId: null,
27863
28058
  access: "view"
27864
28059
  },
28060
+ "pipelineOrchestrator.pauseForStorageMigration": {
28061
+ capName: "pipeline-orchestrator",
28062
+ capScope: "system",
28063
+ addonId: null,
28064
+ access: "create"
28065
+ },
27865
28066
  "pipelineOrchestrator.rebalance": {
27866
28067
  capName: "pipeline-orchestrator",
27867
28068
  capScope: "system",
@@ -27886,6 +28087,12 @@ Object.freeze({
27886
28087
  addonId: null,
27887
28088
  access: "view"
27888
28089
  },
28090
+ "pipelineOrchestrator.resumeForStorageMigration": {
28091
+ capName: "pipeline-orchestrator",
28092
+ capScope: "system",
28093
+ addonId: null,
28094
+ access: "create"
28095
+ },
27889
28096
  "pipelineOrchestrator.saveTemplate": {
27890
28097
  capName: "pipeline-orchestrator",
27891
28098
  capScope: "system",
@@ -28282,7 +28489,7 @@ Object.freeze({
28282
28489
  addonId: null,
28283
28490
  access: "create"
28284
28491
  },
28285
- "recording.cancelRelocate": {
28492
+ "recording.cancelStorageMigrationMove": {
28286
28493
  capName: "recording",
28287
28494
  capScope: "system",
28288
28495
  addonId: null,
@@ -28318,7 +28525,7 @@ Object.freeze({
28318
28525
  addonId: null,
28319
28526
  access: "view"
28320
28527
  },
28321
- "recording.getRelocateStatus": {
28528
+ "recording.getStorageMigrationMoveStatus": {
28322
28529
  capName: "recording",
28323
28530
  capScope: "system",
28324
28531
  addonId: null,
@@ -28342,6 +28549,12 @@ Object.freeze({
28342
28549
  addonId: null,
28343
28550
  access: "view"
28344
28551
  },
28552
+ "recording.pauseForStorageMigration": {
28553
+ capName: "recording",
28554
+ capScope: "system",
28555
+ addonId: null,
28556
+ access: "create"
28557
+ },
28345
28558
  "recording.pruneFootage": {
28346
28559
  capName: "recording",
28347
28560
  capScope: "system",
@@ -28360,7 +28573,7 @@ Object.freeze({
28360
28573
  addonId: null,
28361
28574
  access: "view"
28362
28575
  },
28363
- "recording.relocateFootage": {
28576
+ "recording.refreshStorageLocationsForMigration": {
28364
28577
  capName: "recording",
28365
28578
  capScope: "system",
28366
28579
  addonId: null,
@@ -28384,12 +28597,24 @@ Object.freeze({
28384
28597
  addonId: null,
28385
28598
  access: "create"
28386
28599
  },
28600
+ "recording.resumeForStorageMigration": {
28601
+ capName: "recording",
28602
+ capScope: "system",
28603
+ addonId: null,
28604
+ access: "create"
28605
+ },
28387
28606
  "recording.setDeviceConfig": {
28388
28607
  capName: "recording",
28389
28608
  capScope: "system",
28390
28609
  addonId: null,
28391
28610
  access: "create"
28392
28611
  },
28612
+ "recording.startStorageMigrationMove": {
28613
+ capName: "recording",
28614
+ capScope: "system",
28615
+ addonId: null,
28616
+ access: "create"
28617
+ },
28393
28618
  "recordingExport.cancelExport": {
28394
28619
  capName: "recordingExport",
28395
28620
  capScope: "system",
@@ -28780,6 +29005,30 @@ Object.freeze({
28780
29005
  addonId: null,
28781
29006
  access: "view"
28782
29007
  },
29008
+ "storageMigration.cancel": {
29009
+ capName: "storage-migration",
29010
+ capScope: "system",
29011
+ addonId: null,
29012
+ access: "create"
29013
+ },
29014
+ "storageMigration.plan": {
29015
+ capName: "storage-migration",
29016
+ capScope: "system",
29017
+ addonId: null,
29018
+ access: "view"
29019
+ },
29020
+ "storageMigration.start": {
29021
+ capName: "storage-migration",
29022
+ capScope: "system",
29023
+ addonId: null,
29024
+ access: "create"
29025
+ },
29026
+ "storageMigration.status": {
29027
+ capName: "storage-migration",
29028
+ capScope: "system",
29029
+ addonId: null,
29030
+ access: "view"
29031
+ },
28783
29032
  "storageProvider.abortUpload": {
28784
29033
  capName: "storage-provider",
28785
29034
  capScope: "system",
@@ -29158,12 +29407,42 @@ Object.freeze({
29158
29407
  addonId: null,
29159
29408
  access: "create"
29160
29409
  },
29410
+ "terminalSession.adoptLegacyMonitor": {
29411
+ capName: "terminal-session",
29412
+ capScope: "system",
29413
+ addonId: null,
29414
+ access: "create"
29415
+ },
29161
29416
  "terminalSession.close": {
29162
29417
  capName: "terminal-session",
29163
29418
  capScope: "system",
29164
29419
  addonId: null,
29165
29420
  access: "create"
29166
29421
  },
29422
+ "terminalSession.createInstance": {
29423
+ capName: "terminal-session",
29424
+ capScope: "system",
29425
+ addonId: null,
29426
+ access: "create"
29427
+ },
29428
+ "terminalSession.deleteInstance": {
29429
+ capName: "terminal-session",
29430
+ capScope: "system",
29431
+ addonId: null,
29432
+ access: "delete"
29433
+ },
29434
+ "terminalSession.listInstances": {
29435
+ capName: "terminal-session",
29436
+ capScope: "system",
29437
+ addonId: null,
29438
+ access: "view"
29439
+ },
29440
+ "terminalSession.listLegacyCameras": {
29441
+ capName: "terminal-session",
29442
+ capScope: "system",
29443
+ addonId: null,
29444
+ access: "view"
29445
+ },
29167
29446
  "terminalSession.listProfiles": {
29168
29447
  capName: "terminal-session",
29169
29448
  capScope: "system",
@@ -29194,6 +29473,12 @@ Object.freeze({
29194
29473
  addonId: null,
29195
29474
  access: "create"
29196
29475
  },
29476
+ "terminalSession.setInstanceEnabled": {
29477
+ capName: "terminal-session",
29478
+ capScope: "system",
29479
+ addonId: null,
29480
+ access: "create"
29481
+ },
29197
29482
  "terminalSession.writeInput": {
29198
29483
  capName: "terminal-session",
29199
29484
  capScope: "system",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-static-turn",
3
- "version": "1.2.11",
3
+ "version": "1.2.12",
4
4
  "description": "Static / self-hosted (coturn) TURN provider for CamStack",
5
5
  "keywords": [
6
6
  "camstack",