@camstack/addon-provider-rademacher 0.2.11 → 0.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.
Files changed (3) hide show
  1. package/dist/addon.js +316 -31
  2. package/dist/addon.mjs +316 -31
  3. package/package.json +1 -1
package/dist/addon.js CHANGED
@@ -8550,12 +8550,11 @@ var RecordingConfigSchema = object({
8550
8550
  /**
8551
8551
  * Entity-relocation job state (storage entity-routing spec, Phase 4).
8552
8552
  *
8553
- * One shape shared by the recorder's `relocateFootage` (segments) and
8554
- * pipeline-analytics' `relocateMedia` (event media blobs) so the admin Data
8555
- * page renders both movers with one component. Jobs are in-RAM (a restart
8556
- * forgets them re-running is safe by construction: copy-if-absent, delete
8557
- * after verify) and each completed/failed run also lands one durable ops-log
8558
- * row on the owning addon's surface.
8553
+ * One shape shared by the recorder and pipeline-analytics internal movers.
8554
+ * The public admin surface is `storage-migration`; child jobs remain in RAM
8555
+ * because copy-if-absent, verify, delete and index/row repoint are resumable.
8556
+ * Each completed/failed run also lands one durable ops-log row on its owning
8557
+ * addon surface.
8559
8558
  */
8560
8559
  var RelocateJobStateSchema = _enum([
8561
8560
  "running",
@@ -8582,19 +8581,100 @@ var RelocateJobSchema = object({
8582
8581
  finishedAt: number().nullable(),
8583
8582
  error: string().nullable()
8584
8583
  });
8584
+ /** Profile-derived footage selection used only by the migration coordinator:
8585
+ * `recordings` owns high+mid; `recordingsLow` owns low. */
8586
+ var RelocateFootageClassSchema = _enum(["recordings", "recordingsLow"]);
8585
8587
  var RelocateFootageInputSchema = object({
8586
- deviceId: number().optional(),
8587
8588
  fromLocationId: string(),
8588
8589
  toLocationId: string(),
8589
8590
  entities: array(_enum(["segments"])).optional(),
8591
+ /** Limits relocation to the logical profile class. Omit only for the
8592
+ * pre-orchestration compatibility path. */
8593
+ footageClass: RelocateFootageClassSchema.optional(),
8590
8594
  /** Copy throttle in MB/s (default 40) — the drain is a background chore,
8591
8595
  * never allowed to starve live writers. */
8592
8596
  throttleMbps: number().min(1).max(1e3).optional()
8593
8597
  });
8594
- var RelocateMediaInputSchema = object({
8595
- deviceId: number().optional(),
8598
+ /** Internal, lease-scoped participant operation. It is intentionally separate
8599
+ * from persistent recording settings: a migration never changes
8600
+ * `RecordingConfig.enabled` or camera wrapper bindings. */
8601
+ var StorageMigrationLeaseInputSchema = object({ leaseId: string().min(1) });
8602
+ var StorageMigrationFootageMoveInputSchema = RelocateFootageInputSchema.extend({ leaseId: string().min(1) });
8603
+ var StorageMigrationMediaMoveInputSchema = object({
8596
8604
  toLocationId: string(),
8597
8605
  throttleMbps: number().min(1).max(1e3).optional()
8606
+ }).extend({ leaseId: string().min(1) });
8607
+ /** The independently selectable logical storage classes. `recordings`
8608
+ * encompasses the high and mid segment profiles; `recordingsLow` is low
8609
+ * segments; `eventMedia` is post-analysis blobs. */
8610
+ var StorageMigrationClassSchema = _enum([
8611
+ "recordings",
8612
+ "recordingsLow",
8613
+ "eventMedia"
8614
+ ]);
8615
+ /** A destination is always an existing, fully-qualified location id. The
8616
+ * migration API intentionally never changes a source location's `basePath`:
8617
+ * callers create a new `<type>:<slug>` location, then select it here. */
8618
+ var StorageMigrationDestinationsSchema = object({
8619
+ recordings: string().min(1).optional(),
8620
+ recordingsLow: string().min(1).optional(),
8621
+ eventMedia: string().min(1).optional()
8622
+ }).refine((value) => Object.keys(value).length > 0, { message: "select at least one storage class" });
8623
+ /** Shared input for planning and starting an orchestrated storage migration. */
8624
+ var StorageMigrationInputSchema = object({
8625
+ destinations: StorageMigrationDestinationsSchema,
8626
+ throttleMbps: number().min(1).max(1e3).optional()
8627
+ });
8628
+ /** The durable coordinator state machine. The only phase that changes default
8629
+ * locations is `repointing`, after every selected mover has completed and been
8630
+ * verified. */
8631
+ var StorageMigrationPhaseSchema = _enum([
8632
+ "planning",
8633
+ "pausing",
8634
+ "moving",
8635
+ "verifying",
8636
+ "repointing",
8637
+ "refreshing",
8638
+ "resuming",
8639
+ "done",
8640
+ "failed",
8641
+ "cancelled"
8642
+ ]);
8643
+ var StorageMigrationParticipantSchema = _enum([
8644
+ "pipeline",
8645
+ "recorder",
8646
+ "analytics"
8647
+ ]);
8648
+ var StorageMigrationMoveSchema = object({
8649
+ storageClass: StorageMigrationClassSchema,
8650
+ fromLocationId: string(),
8651
+ toLocationId: string(),
8652
+ moverJobId: string().nullable(),
8653
+ state: RelocateJobStateSchema.nullable(),
8654
+ error: string().nullable()
8655
+ });
8656
+ var StorageMigrationJobSchema = object({
8657
+ jobId: string(),
8658
+ phase: StorageMigrationPhaseSchema,
8659
+ destinations: StorageMigrationDestinationsSchema,
8660
+ throttleMbps: number(),
8661
+ moves: array(StorageMigrationMoveSchema),
8662
+ pauseLeaseId: string().nullable(),
8663
+ pausedParticipants: array(StorageMigrationParticipantSchema),
8664
+ repointed: boolean(),
8665
+ cancelRequested: boolean(),
8666
+ startedAt: number(),
8667
+ updatedAt: number(),
8668
+ finishedAt: number().nullable(),
8669
+ error: string().nullable()
8670
+ });
8671
+ var StorageMigrationPlanSchema = object({
8672
+ destinations: StorageMigrationDestinationsSchema,
8673
+ moves: array(object({
8674
+ storageClass: StorageMigrationClassSchema,
8675
+ fromLocationId: string(),
8676
+ toLocationId: string()
8677
+ }))
8598
8678
  });
8599
8679
  /**
8600
8680
  * `StorageLocationType` — an addon-declared id that identifies the *kind* of
@@ -17248,13 +17328,19 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
17248
17328
  }), method(object({ deviceId: number() }), EventPruneCountsSchema, {
17249
17329
  kind: "mutation",
17250
17330
  auth: "admin"
17251
- }), method(RelocateMediaInputSchema, object({ jobId: string() }), {
17331
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
17252
17332
  kind: "mutation",
17253
17333
  auth: "admin"
17254
- }), method(object({}), array(RelocateJobSchema).readonly(), {
17255
- kind: "query",
17334
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
17335
+ kind: "mutation",
17336
+ auth: "admin"
17337
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
17338
+ kind: "mutation",
17339
+ auth: "admin"
17340
+ }), method(StorageMigrationMediaMoveInputSchema, object({ jobId: string() }), {
17341
+ kind: "mutation",
17256
17342
  auth: "admin"
17257
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
17343
+ }), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
17258
17344
  kind: "mutation",
17259
17345
  auth: "admin"
17260
17346
  }), method(OpsLogQueryInputSchema, array(OpsLogEntrySchema).readonly(), {
@@ -18784,7 +18870,13 @@ var NodeInferenceDevicesSchema = object({
18784
18870
  reachable: boolean(),
18785
18871
  devices: array(NodeInferenceDeviceSchema).readonly()
18786
18872
  });
18787
- method(object({
18873
+ method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
18874
+ kind: "mutation",
18875
+ auth: "admin"
18876
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
18877
+ kind: "mutation",
18878
+ auth: "admin"
18879
+ }), method(object({
18788
18880
  deviceId: number(),
18789
18881
  agentNodeId: string()
18790
18882
  }), object({ success: literal(true) }), {
@@ -19458,6 +19550,13 @@ method(object({ locationId: string() }), EvictableUsageSchema), method(object({
19458
19550
  locationId: string(),
19459
19551
  targetBytes: number().int().positive()
19460
19552
  }), EvictResultSchema, { kind: "mutation" });
19553
+ method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin" }), method(StorageMigrationInputSchema, object({ jobId: string() }), {
19554
+ kind: "mutation",
19555
+ auth: "admin"
19556
+ }), method(object({ jobId: string().optional() }), StorageMigrationJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
19557
+ kind: "mutation",
19558
+ auth: "admin"
19559
+ });
19461
19560
  var ProviderInfoSchema = discriminatedUnion("shouldSaveDiskSpace", [object({
19462
19561
  providerId: string().min(1),
19463
19562
  displayName: string().min(1),
@@ -19561,6 +19660,28 @@ var TerminalProfileInfoSchema = object({
19561
19660
  label: string(),
19562
19661
  description: string().optional()
19563
19662
  });
19663
+ /**
19664
+ * A durable operator-created Terminal instance. Profiles are templates; only
19665
+ * an instance declares a camera.
19666
+ */
19667
+ var TerminalInstanceInfoSchema = object({
19668
+ instanceId: string(),
19669
+ cameraStableId: string(),
19670
+ nodeId: string(),
19671
+ profileId: string(),
19672
+ profileLabel: string(),
19673
+ name: string(),
19674
+ enabled: boolean()
19675
+ });
19676
+ var TerminalLegacyCameraSchema = object({
19677
+ stableId: string(),
19678
+ nodeId: string(),
19679
+ profileId: string(),
19680
+ profileLabel: string(),
19681
+ name: string(),
19682
+ /** Only legacy monitor cameras can retain their historic stable identity. */
19683
+ adoptable: boolean()
19684
+ });
19564
19685
  var TerminalOutputEventSchema = discriminatedUnion("kind", [object({
19565
19686
  seq: number().int().positive(),
19566
19687
  kind: literal("data"),
@@ -19577,7 +19698,29 @@ var TerminalOutputBatchSchema = object({
19577
19698
  snapshot: string().optional(),
19578
19699
  events: array(TerminalOutputEventSchema).readonly()
19579
19700
  });
19580
- method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
19701
+ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalInstanceInfoSchema).readonly(), { auth: "admin" }), method(object({
19702
+ targetNodeId: string().min(1),
19703
+ profileId: string().min(1),
19704
+ name: string().trim().min(1).max(160).optional()
19705
+ }), TerminalInstanceInfoSchema, {
19706
+ kind: "mutation",
19707
+ auth: "admin"
19708
+ }), method(object({ instanceId: string().min(1) }), _void(), {
19709
+ kind: "mutation",
19710
+ auth: "admin"
19711
+ }), method(object({
19712
+ instanceId: string().min(1),
19713
+ enabled: boolean()
19714
+ }), TerminalInstanceInfoSchema, {
19715
+ kind: "mutation",
19716
+ auth: "admin"
19717
+ }), method(_void(), array(TerminalLegacyCameraSchema).readonly(), { auth: "admin" }), method(object({
19718
+ stableId: string().min(1),
19719
+ name: string().trim().min(1).max(160).optional()
19720
+ }), TerminalInstanceInfoSchema, {
19721
+ kind: "mutation",
19722
+ auth: "admin"
19723
+ }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
19581
19724
  profileId: string(),
19582
19725
  cols: number().int().positive(),
19583
19726
  rows: number().int().positive()
@@ -19594,7 +19737,13 @@ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }),
19594
19737
  }), method(object({
19595
19738
  sessionId: string(),
19596
19739
  afterSeq: number().int().nonnegative(),
19597
- waitMs: number().int().min(0).max(2e3).default(0)
19740
+ waitMs: number().int().min(0).max(2e3).default(0),
19741
+ /**
19742
+ * Wait when a just-opened session has no output yet. Kept opt-in so a
19743
+ * browser's initial repaint remains immediate; the camera snapshot
19744
+ * relay uses it to avoid encoding a blank startup frame.
19745
+ */
19746
+ waitForOutput: boolean().optional()
19598
19747
  }), TerminalOutputBatchSchema, {
19599
19748
  kind: "mutation",
19600
19749
  auth: "admin",
@@ -22092,6 +22241,7 @@ var FaceInfoSchema = object({
22092
22241
  var FaceFilterEnum = _enum([
22093
22242
  "unassigned",
22094
22243
  "recognized",
22244
+ "identified",
22095
22245
  "all"
22096
22246
  ]);
22097
22247
  var MediaFileLiteSchema$1 = object({
@@ -22120,6 +22270,8 @@ method(_void(), array(IdentitySchema).readonly()), method(object({ name: string(
22120
22270
  kind: "mutation",
22121
22271
  auth: "admin"
22122
22272
  }), method(object({
22273
+ /** Restrict to one camera. Absent keeps the cluster-wide gallery view. */
22274
+ deviceId: number().int().optional(),
22123
22275
  limit: number().int().positive().optional(),
22124
22276
  filter: FaceFilterEnum.optional(),
22125
22277
  /**
@@ -24349,6 +24501,10 @@ var OsdSourceSchema = discriminatedUnion("kind", [
24349
24501
  capName: string().min(1).max(64),
24350
24502
  /** Dot path inside the slice, e.g. `detected`, `value`, `mode`. */
24351
24503
  valuePath: string().min(1).max(64)
24504
+ }),
24505
+ object({
24506
+ kind: literal("latest-recognition"),
24507
+ recognition: _enum(["person", "plate"])
24352
24508
  })
24353
24509
  ]);
24354
24510
  var OsdSlotBindingSchema = object({
@@ -24454,6 +24610,15 @@ method(object({ deviceId: number().int() }), object({
24454
24610
  }), object({ success: literal(true) }), {
24455
24611
  kind: "mutation",
24456
24612
  auth: "admin"
24613
+ }), method(object({
24614
+ sourceDeviceId: number().int(),
24615
+ targetDeviceId: number().int()
24616
+ }), object({
24617
+ copied: number().int().nonnegative(),
24618
+ skipped: number().int().nonnegative()
24619
+ }), {
24620
+ kind: "mutation",
24621
+ auth: "admin"
24457
24622
  }), method(object({
24458
24623
  deviceId: number().int(),
24459
24624
  slotId: string().min(1),
@@ -25551,13 +25716,19 @@ method(object({
25551
25716
  }), {
25552
25717
  kind: "mutation",
25553
25718
  auth: "admin"
25554
- }), method(RelocateFootageInputSchema, object({ jobId: string() }), {
25719
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
25555
25720
  kind: "mutation",
25556
25721
  auth: "admin"
25557
- }), method(object({}), array(RelocateJobSchema).readonly(), {
25558
- kind: "query",
25722
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
25723
+ kind: "mutation",
25559
25724
  auth: "admin"
25560
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
25725
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
25726
+ kind: "mutation",
25727
+ auth: "admin"
25728
+ }), method(StorageMigrationFootageMoveInputSchema, object({ jobId: string() }), {
25729
+ kind: "mutation",
25730
+ auth: "admin"
25731
+ }), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
25561
25732
  kind: "mutation",
25562
25733
  auth: "admin"
25563
25734
  });
@@ -31163,6 +31334,12 @@ Object.freeze({
31163
31334
  addonId: null,
31164
31335
  access: "delete"
31165
31336
  },
31337
+ "osdManager.copyDeviceConfiguration": {
31338
+ capName: "osd-manager",
31339
+ capScope: "system",
31340
+ addonId: null,
31341
+ access: "create"
31342
+ },
31166
31343
  "osdManager.getConditionSupport": {
31167
31344
  capName: "osd-manager",
31168
31345
  capScope: "system",
@@ -31259,7 +31436,7 @@ Object.freeze({
31259
31436
  addonId: null,
31260
31437
  access: "create"
31261
31438
  },
31262
- "pipelineAnalytics.cancelMediaRelocate": {
31439
+ "pipelineAnalytics.cancelStorageMigrationMove": {
31263
31440
  capName: "pipeline-analytics",
31264
31441
  capScope: "device",
31265
31442
  addonId: null,
@@ -31331,12 +31508,6 @@ Object.freeze({
31331
31508
  addonId: null,
31332
31509
  access: "view"
31333
31510
  },
31334
- "pipelineAnalytics.getMediaRelocateStatus": {
31335
- capName: "pipeline-analytics",
31336
- capScope: "device",
31337
- addonId: null,
31338
- access: "view"
31339
- },
31340
31511
  "pipelineAnalytics.getMotionEvents": {
31341
31512
  capName: "pipeline-analytics",
31342
31513
  capScope: "device",
@@ -31373,6 +31544,12 @@ Object.freeze({
31373
31544
  addonId: null,
31374
31545
  access: "view"
31375
31546
  },
31547
+ "pipelineAnalytics.getStorageMigrationMoveStatus": {
31548
+ capName: "pipeline-analytics",
31549
+ capScope: "device",
31550
+ addonId: null,
31551
+ access: "view"
31552
+ },
31376
31553
  "pipelineAnalytics.getTrack": {
31377
31554
  capName: "pipeline-analytics",
31378
31555
  capScope: "device",
@@ -31451,6 +31628,12 @@ Object.freeze({
31451
31628
  addonId: null,
31452
31629
  access: "view"
31453
31630
  },
31631
+ "pipelineAnalytics.pauseForStorageMigration": {
31632
+ capName: "pipeline-analytics",
31633
+ capScope: "device",
31634
+ addonId: null,
31635
+ access: "create"
31636
+ },
31454
31637
  "pipelineAnalytics.proposeRetrainAnnotations": {
31455
31638
  capName: "pipeline-analytics",
31456
31639
  capScope: "device",
@@ -31481,7 +31664,7 @@ Object.freeze({
31481
31664
  addonId: null,
31482
31665
  access: "create"
31483
31666
  },
31484
- "pipelineAnalytics.relocateMedia": {
31667
+ "pipelineAnalytics.refreshStorageLocationsForMigration": {
31485
31668
  capName: "pipeline-analytics",
31486
31669
  capScope: "device",
31487
31670
  addonId: null,
@@ -31493,6 +31676,12 @@ Object.freeze({
31493
31676
  addonId: null,
31494
31677
  access: "create"
31495
31678
  },
31679
+ "pipelineAnalytics.resumeForStorageMigration": {
31680
+ capName: "pipeline-analytics",
31681
+ capScope: "device",
31682
+ addonId: null,
31683
+ access: "create"
31684
+ },
31496
31685
  "pipelineAnalytics.saveRetrainAnnotations": {
31497
31686
  capName: "pipeline-analytics",
31498
31687
  capScope: "device",
@@ -31517,6 +31706,12 @@ Object.freeze({
31517
31706
  addonId: null,
31518
31707
  access: "create"
31519
31708
  },
31709
+ "pipelineAnalytics.startStorageMigrationMove": {
31710
+ capName: "pipeline-analytics",
31711
+ capScope: "device",
31712
+ addonId: null,
31713
+ access: "create"
31714
+ },
31520
31715
  "pipelineAnalytics.wipeAllAnalytics": {
31521
31716
  capName: "pipeline-analytics",
31522
31717
  capScope: "device",
@@ -31883,6 +32078,12 @@ Object.freeze({
31883
32078
  addonId: null,
31884
32079
  access: "view"
31885
32080
  },
32081
+ "pipelineOrchestrator.pauseForStorageMigration": {
32082
+ capName: "pipeline-orchestrator",
32083
+ capScope: "system",
32084
+ addonId: null,
32085
+ access: "create"
32086
+ },
31886
32087
  "pipelineOrchestrator.rebalance": {
31887
32088
  capName: "pipeline-orchestrator",
31888
32089
  capScope: "system",
@@ -31907,6 +32108,12 @@ Object.freeze({
31907
32108
  addonId: null,
31908
32109
  access: "view"
31909
32110
  },
32111
+ "pipelineOrchestrator.resumeForStorageMigration": {
32112
+ capName: "pipeline-orchestrator",
32113
+ capScope: "system",
32114
+ addonId: null,
32115
+ access: "create"
32116
+ },
31910
32117
  "pipelineOrchestrator.saveTemplate": {
31911
32118
  capName: "pipeline-orchestrator",
31912
32119
  capScope: "system",
@@ -32303,7 +32510,7 @@ Object.freeze({
32303
32510
  addonId: null,
32304
32511
  access: "create"
32305
32512
  },
32306
- "recording.cancelRelocate": {
32513
+ "recording.cancelStorageMigrationMove": {
32307
32514
  capName: "recording",
32308
32515
  capScope: "system",
32309
32516
  addonId: null,
@@ -32339,7 +32546,7 @@ Object.freeze({
32339
32546
  addonId: null,
32340
32547
  access: "view"
32341
32548
  },
32342
- "recording.getRelocateStatus": {
32549
+ "recording.getStorageMigrationMoveStatus": {
32343
32550
  capName: "recording",
32344
32551
  capScope: "system",
32345
32552
  addonId: null,
@@ -32363,6 +32570,12 @@ Object.freeze({
32363
32570
  addonId: null,
32364
32571
  access: "view"
32365
32572
  },
32573
+ "recording.pauseForStorageMigration": {
32574
+ capName: "recording",
32575
+ capScope: "system",
32576
+ addonId: null,
32577
+ access: "create"
32578
+ },
32366
32579
  "recording.pruneFootage": {
32367
32580
  capName: "recording",
32368
32581
  capScope: "system",
@@ -32381,7 +32594,7 @@ Object.freeze({
32381
32594
  addonId: null,
32382
32595
  access: "view"
32383
32596
  },
32384
- "recording.relocateFootage": {
32597
+ "recording.refreshStorageLocationsForMigration": {
32385
32598
  capName: "recording",
32386
32599
  capScope: "system",
32387
32600
  addonId: null,
@@ -32405,12 +32618,24 @@ Object.freeze({
32405
32618
  addonId: null,
32406
32619
  access: "create"
32407
32620
  },
32621
+ "recording.resumeForStorageMigration": {
32622
+ capName: "recording",
32623
+ capScope: "system",
32624
+ addonId: null,
32625
+ access: "create"
32626
+ },
32408
32627
  "recording.setDeviceConfig": {
32409
32628
  capName: "recording",
32410
32629
  capScope: "system",
32411
32630
  addonId: null,
32412
32631
  access: "create"
32413
32632
  },
32633
+ "recording.startStorageMigrationMove": {
32634
+ capName: "recording",
32635
+ capScope: "system",
32636
+ addonId: null,
32637
+ access: "create"
32638
+ },
32414
32639
  "recordingExport.cancelExport": {
32415
32640
  capName: "recordingExport",
32416
32641
  capScope: "system",
@@ -32801,6 +33026,30 @@ Object.freeze({
32801
33026
  addonId: null,
32802
33027
  access: "view"
32803
33028
  },
33029
+ "storageMigration.cancel": {
33030
+ capName: "storage-migration",
33031
+ capScope: "system",
33032
+ addonId: null,
33033
+ access: "create"
33034
+ },
33035
+ "storageMigration.plan": {
33036
+ capName: "storage-migration",
33037
+ capScope: "system",
33038
+ addonId: null,
33039
+ access: "view"
33040
+ },
33041
+ "storageMigration.start": {
33042
+ capName: "storage-migration",
33043
+ capScope: "system",
33044
+ addonId: null,
33045
+ access: "create"
33046
+ },
33047
+ "storageMigration.status": {
33048
+ capName: "storage-migration",
33049
+ capScope: "system",
33050
+ addonId: null,
33051
+ access: "view"
33052
+ },
32804
33053
  "storageProvider.abortUpload": {
32805
33054
  capName: "storage-provider",
32806
33055
  capScope: "system",
@@ -33179,12 +33428,42 @@ Object.freeze({
33179
33428
  addonId: null,
33180
33429
  access: "create"
33181
33430
  },
33431
+ "terminalSession.adoptLegacyMonitor": {
33432
+ capName: "terminal-session",
33433
+ capScope: "system",
33434
+ addonId: null,
33435
+ access: "create"
33436
+ },
33182
33437
  "terminalSession.close": {
33183
33438
  capName: "terminal-session",
33184
33439
  capScope: "system",
33185
33440
  addonId: null,
33186
33441
  access: "create"
33187
33442
  },
33443
+ "terminalSession.createInstance": {
33444
+ capName: "terminal-session",
33445
+ capScope: "system",
33446
+ addonId: null,
33447
+ access: "create"
33448
+ },
33449
+ "terminalSession.deleteInstance": {
33450
+ capName: "terminal-session",
33451
+ capScope: "system",
33452
+ addonId: null,
33453
+ access: "delete"
33454
+ },
33455
+ "terminalSession.listInstances": {
33456
+ capName: "terminal-session",
33457
+ capScope: "system",
33458
+ addonId: null,
33459
+ access: "view"
33460
+ },
33461
+ "terminalSession.listLegacyCameras": {
33462
+ capName: "terminal-session",
33463
+ capScope: "system",
33464
+ addonId: null,
33465
+ access: "view"
33466
+ },
33188
33467
  "terminalSession.listProfiles": {
33189
33468
  capName: "terminal-session",
33190
33469
  capScope: "system",
@@ -33215,6 +33494,12 @@ Object.freeze({
33215
33494
  addonId: null,
33216
33495
  access: "create"
33217
33496
  },
33497
+ "terminalSession.setInstanceEnabled": {
33498
+ capName: "terminal-session",
33499
+ capScope: "system",
33500
+ addonId: null,
33501
+ access: "create"
33502
+ },
33218
33503
  "terminalSession.writeInput": {
33219
33504
  capName: "terminal-session",
33220
33505
  capScope: "system",
package/dist/addon.mjs CHANGED
@@ -8549,12 +8549,11 @@ var RecordingConfigSchema = object({
8549
8549
  /**
8550
8550
  * Entity-relocation job state (storage entity-routing spec, Phase 4).
8551
8551
  *
8552
- * One shape shared by the recorder's `relocateFootage` (segments) and
8553
- * pipeline-analytics' `relocateMedia` (event media blobs) so the admin Data
8554
- * page renders both movers with one component. Jobs are in-RAM (a restart
8555
- * forgets them re-running is safe by construction: copy-if-absent, delete
8556
- * after verify) and each completed/failed run also lands one durable ops-log
8557
- * row on the owning addon's surface.
8552
+ * One shape shared by the recorder and pipeline-analytics internal movers.
8553
+ * The public admin surface is `storage-migration`; child jobs remain in RAM
8554
+ * because copy-if-absent, verify, delete and index/row repoint are resumable.
8555
+ * Each completed/failed run also lands one durable ops-log row on its owning
8556
+ * addon surface.
8558
8557
  */
8559
8558
  var RelocateJobStateSchema = _enum([
8560
8559
  "running",
@@ -8581,19 +8580,100 @@ var RelocateJobSchema = object({
8581
8580
  finishedAt: number().nullable(),
8582
8581
  error: string().nullable()
8583
8582
  });
8583
+ /** Profile-derived footage selection used only by the migration coordinator:
8584
+ * `recordings` owns high+mid; `recordingsLow` owns low. */
8585
+ var RelocateFootageClassSchema = _enum(["recordings", "recordingsLow"]);
8584
8586
  var RelocateFootageInputSchema = object({
8585
- deviceId: number().optional(),
8586
8587
  fromLocationId: string(),
8587
8588
  toLocationId: string(),
8588
8589
  entities: array(_enum(["segments"])).optional(),
8590
+ /** Limits relocation to the logical profile class. Omit only for the
8591
+ * pre-orchestration compatibility path. */
8592
+ footageClass: RelocateFootageClassSchema.optional(),
8589
8593
  /** Copy throttle in MB/s (default 40) — the drain is a background chore,
8590
8594
  * never allowed to starve live writers. */
8591
8595
  throttleMbps: number().min(1).max(1e3).optional()
8592
8596
  });
8593
- var RelocateMediaInputSchema = object({
8594
- deviceId: number().optional(),
8597
+ /** Internal, lease-scoped participant operation. It is intentionally separate
8598
+ * from persistent recording settings: a migration never changes
8599
+ * `RecordingConfig.enabled` or camera wrapper bindings. */
8600
+ var StorageMigrationLeaseInputSchema = object({ leaseId: string().min(1) });
8601
+ var StorageMigrationFootageMoveInputSchema = RelocateFootageInputSchema.extend({ leaseId: string().min(1) });
8602
+ var StorageMigrationMediaMoveInputSchema = object({
8595
8603
  toLocationId: string(),
8596
8604
  throttleMbps: number().min(1).max(1e3).optional()
8605
+ }).extend({ leaseId: string().min(1) });
8606
+ /** The independently selectable logical storage classes. `recordings`
8607
+ * encompasses the high and mid segment profiles; `recordingsLow` is low
8608
+ * segments; `eventMedia` is post-analysis blobs. */
8609
+ var StorageMigrationClassSchema = _enum([
8610
+ "recordings",
8611
+ "recordingsLow",
8612
+ "eventMedia"
8613
+ ]);
8614
+ /** A destination is always an existing, fully-qualified location id. The
8615
+ * migration API intentionally never changes a source location's `basePath`:
8616
+ * callers create a new `<type>:<slug>` location, then select it here. */
8617
+ var StorageMigrationDestinationsSchema = object({
8618
+ recordings: string().min(1).optional(),
8619
+ recordingsLow: string().min(1).optional(),
8620
+ eventMedia: string().min(1).optional()
8621
+ }).refine((value) => Object.keys(value).length > 0, { message: "select at least one storage class" });
8622
+ /** Shared input for planning and starting an orchestrated storage migration. */
8623
+ var StorageMigrationInputSchema = object({
8624
+ destinations: StorageMigrationDestinationsSchema,
8625
+ throttleMbps: number().min(1).max(1e3).optional()
8626
+ });
8627
+ /** The durable coordinator state machine. The only phase that changes default
8628
+ * locations is `repointing`, after every selected mover has completed and been
8629
+ * verified. */
8630
+ var StorageMigrationPhaseSchema = _enum([
8631
+ "planning",
8632
+ "pausing",
8633
+ "moving",
8634
+ "verifying",
8635
+ "repointing",
8636
+ "refreshing",
8637
+ "resuming",
8638
+ "done",
8639
+ "failed",
8640
+ "cancelled"
8641
+ ]);
8642
+ var StorageMigrationParticipantSchema = _enum([
8643
+ "pipeline",
8644
+ "recorder",
8645
+ "analytics"
8646
+ ]);
8647
+ var StorageMigrationMoveSchema = object({
8648
+ storageClass: StorageMigrationClassSchema,
8649
+ fromLocationId: string(),
8650
+ toLocationId: string(),
8651
+ moverJobId: string().nullable(),
8652
+ state: RelocateJobStateSchema.nullable(),
8653
+ error: string().nullable()
8654
+ });
8655
+ var StorageMigrationJobSchema = object({
8656
+ jobId: string(),
8657
+ phase: StorageMigrationPhaseSchema,
8658
+ destinations: StorageMigrationDestinationsSchema,
8659
+ throttleMbps: number(),
8660
+ moves: array(StorageMigrationMoveSchema),
8661
+ pauseLeaseId: string().nullable(),
8662
+ pausedParticipants: array(StorageMigrationParticipantSchema),
8663
+ repointed: boolean(),
8664
+ cancelRequested: boolean(),
8665
+ startedAt: number(),
8666
+ updatedAt: number(),
8667
+ finishedAt: number().nullable(),
8668
+ error: string().nullable()
8669
+ });
8670
+ var StorageMigrationPlanSchema = object({
8671
+ destinations: StorageMigrationDestinationsSchema,
8672
+ moves: array(object({
8673
+ storageClass: StorageMigrationClassSchema,
8674
+ fromLocationId: string(),
8675
+ toLocationId: string()
8676
+ }))
8597
8677
  });
8598
8678
  /**
8599
8679
  * `StorageLocationType` — an addon-declared id that identifies the *kind* of
@@ -17247,13 +17327,19 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
17247
17327
  }), method(object({ deviceId: number() }), EventPruneCountsSchema, {
17248
17328
  kind: "mutation",
17249
17329
  auth: "admin"
17250
- }), method(RelocateMediaInputSchema, object({ jobId: string() }), {
17330
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
17251
17331
  kind: "mutation",
17252
17332
  auth: "admin"
17253
- }), method(object({}), array(RelocateJobSchema).readonly(), {
17254
- kind: "query",
17333
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
17334
+ kind: "mutation",
17335
+ auth: "admin"
17336
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
17337
+ kind: "mutation",
17338
+ auth: "admin"
17339
+ }), method(StorageMigrationMediaMoveInputSchema, object({ jobId: string() }), {
17340
+ kind: "mutation",
17255
17341
  auth: "admin"
17256
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
17342
+ }), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
17257
17343
  kind: "mutation",
17258
17344
  auth: "admin"
17259
17345
  }), method(OpsLogQueryInputSchema, array(OpsLogEntrySchema).readonly(), {
@@ -18783,7 +18869,13 @@ var NodeInferenceDevicesSchema = object({
18783
18869
  reachable: boolean(),
18784
18870
  devices: array(NodeInferenceDeviceSchema).readonly()
18785
18871
  });
18786
- method(object({
18872
+ method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
18873
+ kind: "mutation",
18874
+ auth: "admin"
18875
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
18876
+ kind: "mutation",
18877
+ auth: "admin"
18878
+ }), method(object({
18787
18879
  deviceId: number(),
18788
18880
  agentNodeId: string()
18789
18881
  }), object({ success: literal(true) }), {
@@ -19457,6 +19549,13 @@ method(object({ locationId: string() }), EvictableUsageSchema), method(object({
19457
19549
  locationId: string(),
19458
19550
  targetBytes: number().int().positive()
19459
19551
  }), EvictResultSchema, { kind: "mutation" });
19552
+ method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin" }), method(StorageMigrationInputSchema, object({ jobId: string() }), {
19553
+ kind: "mutation",
19554
+ auth: "admin"
19555
+ }), method(object({ jobId: string().optional() }), StorageMigrationJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
19556
+ kind: "mutation",
19557
+ auth: "admin"
19558
+ });
19460
19559
  var ProviderInfoSchema = discriminatedUnion("shouldSaveDiskSpace", [object({
19461
19560
  providerId: string().min(1),
19462
19561
  displayName: string().min(1),
@@ -19560,6 +19659,28 @@ var TerminalProfileInfoSchema = object({
19560
19659
  label: string(),
19561
19660
  description: string().optional()
19562
19661
  });
19662
+ /**
19663
+ * A durable operator-created Terminal instance. Profiles are templates; only
19664
+ * an instance declares a camera.
19665
+ */
19666
+ var TerminalInstanceInfoSchema = object({
19667
+ instanceId: string(),
19668
+ cameraStableId: string(),
19669
+ nodeId: string(),
19670
+ profileId: string(),
19671
+ profileLabel: string(),
19672
+ name: string(),
19673
+ enabled: boolean()
19674
+ });
19675
+ var TerminalLegacyCameraSchema = object({
19676
+ stableId: string(),
19677
+ nodeId: string(),
19678
+ profileId: string(),
19679
+ profileLabel: string(),
19680
+ name: string(),
19681
+ /** Only legacy monitor cameras can retain their historic stable identity. */
19682
+ adoptable: boolean()
19683
+ });
19563
19684
  var TerminalOutputEventSchema = discriminatedUnion("kind", [object({
19564
19685
  seq: number().int().positive(),
19565
19686
  kind: literal("data"),
@@ -19576,7 +19697,29 @@ var TerminalOutputBatchSchema = object({
19576
19697
  snapshot: string().optional(),
19577
19698
  events: array(TerminalOutputEventSchema).readonly()
19578
19699
  });
19579
- method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
19700
+ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalInstanceInfoSchema).readonly(), { auth: "admin" }), method(object({
19701
+ targetNodeId: string().min(1),
19702
+ profileId: string().min(1),
19703
+ name: string().trim().min(1).max(160).optional()
19704
+ }), TerminalInstanceInfoSchema, {
19705
+ kind: "mutation",
19706
+ auth: "admin"
19707
+ }), method(object({ instanceId: string().min(1) }), _void(), {
19708
+ kind: "mutation",
19709
+ auth: "admin"
19710
+ }), method(object({
19711
+ instanceId: string().min(1),
19712
+ enabled: boolean()
19713
+ }), TerminalInstanceInfoSchema, {
19714
+ kind: "mutation",
19715
+ auth: "admin"
19716
+ }), method(_void(), array(TerminalLegacyCameraSchema).readonly(), { auth: "admin" }), method(object({
19717
+ stableId: string().min(1),
19718
+ name: string().trim().min(1).max(160).optional()
19719
+ }), TerminalInstanceInfoSchema, {
19720
+ kind: "mutation",
19721
+ auth: "admin"
19722
+ }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
19580
19723
  profileId: string(),
19581
19724
  cols: number().int().positive(),
19582
19725
  rows: number().int().positive()
@@ -19593,7 +19736,13 @@ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }),
19593
19736
  }), method(object({
19594
19737
  sessionId: string(),
19595
19738
  afterSeq: number().int().nonnegative(),
19596
- waitMs: number().int().min(0).max(2e3).default(0)
19739
+ waitMs: number().int().min(0).max(2e3).default(0),
19740
+ /**
19741
+ * Wait when a just-opened session has no output yet. Kept opt-in so a
19742
+ * browser's initial repaint remains immediate; the camera snapshot
19743
+ * relay uses it to avoid encoding a blank startup frame.
19744
+ */
19745
+ waitForOutput: boolean().optional()
19597
19746
  }), TerminalOutputBatchSchema, {
19598
19747
  kind: "mutation",
19599
19748
  auth: "admin",
@@ -22091,6 +22240,7 @@ var FaceInfoSchema = object({
22091
22240
  var FaceFilterEnum = _enum([
22092
22241
  "unassigned",
22093
22242
  "recognized",
22243
+ "identified",
22094
22244
  "all"
22095
22245
  ]);
22096
22246
  var MediaFileLiteSchema$1 = object({
@@ -22119,6 +22269,8 @@ method(_void(), array(IdentitySchema).readonly()), method(object({ name: string(
22119
22269
  kind: "mutation",
22120
22270
  auth: "admin"
22121
22271
  }), method(object({
22272
+ /** Restrict to one camera. Absent keeps the cluster-wide gallery view. */
22273
+ deviceId: number().int().optional(),
22122
22274
  limit: number().int().positive().optional(),
22123
22275
  filter: FaceFilterEnum.optional(),
22124
22276
  /**
@@ -24348,6 +24500,10 @@ var OsdSourceSchema = discriminatedUnion("kind", [
24348
24500
  capName: string().min(1).max(64),
24349
24501
  /** Dot path inside the slice, e.g. `detected`, `value`, `mode`. */
24350
24502
  valuePath: string().min(1).max(64)
24503
+ }),
24504
+ object({
24505
+ kind: literal("latest-recognition"),
24506
+ recognition: _enum(["person", "plate"])
24351
24507
  })
24352
24508
  ]);
24353
24509
  var OsdSlotBindingSchema = object({
@@ -24453,6 +24609,15 @@ method(object({ deviceId: number().int() }), object({
24453
24609
  }), object({ success: literal(true) }), {
24454
24610
  kind: "mutation",
24455
24611
  auth: "admin"
24612
+ }), method(object({
24613
+ sourceDeviceId: number().int(),
24614
+ targetDeviceId: number().int()
24615
+ }), object({
24616
+ copied: number().int().nonnegative(),
24617
+ skipped: number().int().nonnegative()
24618
+ }), {
24619
+ kind: "mutation",
24620
+ auth: "admin"
24456
24621
  }), method(object({
24457
24622
  deviceId: number().int(),
24458
24623
  slotId: string().min(1),
@@ -25550,13 +25715,19 @@ method(object({
25550
25715
  }), {
25551
25716
  kind: "mutation",
25552
25717
  auth: "admin"
25553
- }), method(RelocateFootageInputSchema, object({ jobId: string() }), {
25718
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
25554
25719
  kind: "mutation",
25555
25720
  auth: "admin"
25556
- }), method(object({}), array(RelocateJobSchema).readonly(), {
25557
- kind: "query",
25721
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
25722
+ kind: "mutation",
25558
25723
  auth: "admin"
25559
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
25724
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
25725
+ kind: "mutation",
25726
+ auth: "admin"
25727
+ }), method(StorageMigrationFootageMoveInputSchema, object({ jobId: string() }), {
25728
+ kind: "mutation",
25729
+ auth: "admin"
25730
+ }), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
25560
25731
  kind: "mutation",
25561
25732
  auth: "admin"
25562
25733
  });
@@ -31162,6 +31333,12 @@ Object.freeze({
31162
31333
  addonId: null,
31163
31334
  access: "delete"
31164
31335
  },
31336
+ "osdManager.copyDeviceConfiguration": {
31337
+ capName: "osd-manager",
31338
+ capScope: "system",
31339
+ addonId: null,
31340
+ access: "create"
31341
+ },
31165
31342
  "osdManager.getConditionSupport": {
31166
31343
  capName: "osd-manager",
31167
31344
  capScope: "system",
@@ -31258,7 +31435,7 @@ Object.freeze({
31258
31435
  addonId: null,
31259
31436
  access: "create"
31260
31437
  },
31261
- "pipelineAnalytics.cancelMediaRelocate": {
31438
+ "pipelineAnalytics.cancelStorageMigrationMove": {
31262
31439
  capName: "pipeline-analytics",
31263
31440
  capScope: "device",
31264
31441
  addonId: null,
@@ -31330,12 +31507,6 @@ Object.freeze({
31330
31507
  addonId: null,
31331
31508
  access: "view"
31332
31509
  },
31333
- "pipelineAnalytics.getMediaRelocateStatus": {
31334
- capName: "pipeline-analytics",
31335
- capScope: "device",
31336
- addonId: null,
31337
- access: "view"
31338
- },
31339
31510
  "pipelineAnalytics.getMotionEvents": {
31340
31511
  capName: "pipeline-analytics",
31341
31512
  capScope: "device",
@@ -31372,6 +31543,12 @@ Object.freeze({
31372
31543
  addonId: null,
31373
31544
  access: "view"
31374
31545
  },
31546
+ "pipelineAnalytics.getStorageMigrationMoveStatus": {
31547
+ capName: "pipeline-analytics",
31548
+ capScope: "device",
31549
+ addonId: null,
31550
+ access: "view"
31551
+ },
31375
31552
  "pipelineAnalytics.getTrack": {
31376
31553
  capName: "pipeline-analytics",
31377
31554
  capScope: "device",
@@ -31450,6 +31627,12 @@ Object.freeze({
31450
31627
  addonId: null,
31451
31628
  access: "view"
31452
31629
  },
31630
+ "pipelineAnalytics.pauseForStorageMigration": {
31631
+ capName: "pipeline-analytics",
31632
+ capScope: "device",
31633
+ addonId: null,
31634
+ access: "create"
31635
+ },
31453
31636
  "pipelineAnalytics.proposeRetrainAnnotations": {
31454
31637
  capName: "pipeline-analytics",
31455
31638
  capScope: "device",
@@ -31480,7 +31663,7 @@ Object.freeze({
31480
31663
  addonId: null,
31481
31664
  access: "create"
31482
31665
  },
31483
- "pipelineAnalytics.relocateMedia": {
31666
+ "pipelineAnalytics.refreshStorageLocationsForMigration": {
31484
31667
  capName: "pipeline-analytics",
31485
31668
  capScope: "device",
31486
31669
  addonId: null,
@@ -31492,6 +31675,12 @@ Object.freeze({
31492
31675
  addonId: null,
31493
31676
  access: "create"
31494
31677
  },
31678
+ "pipelineAnalytics.resumeForStorageMigration": {
31679
+ capName: "pipeline-analytics",
31680
+ capScope: "device",
31681
+ addonId: null,
31682
+ access: "create"
31683
+ },
31495
31684
  "pipelineAnalytics.saveRetrainAnnotations": {
31496
31685
  capName: "pipeline-analytics",
31497
31686
  capScope: "device",
@@ -31516,6 +31705,12 @@ Object.freeze({
31516
31705
  addonId: null,
31517
31706
  access: "create"
31518
31707
  },
31708
+ "pipelineAnalytics.startStorageMigrationMove": {
31709
+ capName: "pipeline-analytics",
31710
+ capScope: "device",
31711
+ addonId: null,
31712
+ access: "create"
31713
+ },
31519
31714
  "pipelineAnalytics.wipeAllAnalytics": {
31520
31715
  capName: "pipeline-analytics",
31521
31716
  capScope: "device",
@@ -31882,6 +32077,12 @@ Object.freeze({
31882
32077
  addonId: null,
31883
32078
  access: "view"
31884
32079
  },
32080
+ "pipelineOrchestrator.pauseForStorageMigration": {
32081
+ capName: "pipeline-orchestrator",
32082
+ capScope: "system",
32083
+ addonId: null,
32084
+ access: "create"
32085
+ },
31885
32086
  "pipelineOrchestrator.rebalance": {
31886
32087
  capName: "pipeline-orchestrator",
31887
32088
  capScope: "system",
@@ -31906,6 +32107,12 @@ Object.freeze({
31906
32107
  addonId: null,
31907
32108
  access: "view"
31908
32109
  },
32110
+ "pipelineOrchestrator.resumeForStorageMigration": {
32111
+ capName: "pipeline-orchestrator",
32112
+ capScope: "system",
32113
+ addonId: null,
32114
+ access: "create"
32115
+ },
31909
32116
  "pipelineOrchestrator.saveTemplate": {
31910
32117
  capName: "pipeline-orchestrator",
31911
32118
  capScope: "system",
@@ -32302,7 +32509,7 @@ Object.freeze({
32302
32509
  addonId: null,
32303
32510
  access: "create"
32304
32511
  },
32305
- "recording.cancelRelocate": {
32512
+ "recording.cancelStorageMigrationMove": {
32306
32513
  capName: "recording",
32307
32514
  capScope: "system",
32308
32515
  addonId: null,
@@ -32338,7 +32545,7 @@ Object.freeze({
32338
32545
  addonId: null,
32339
32546
  access: "view"
32340
32547
  },
32341
- "recording.getRelocateStatus": {
32548
+ "recording.getStorageMigrationMoveStatus": {
32342
32549
  capName: "recording",
32343
32550
  capScope: "system",
32344
32551
  addonId: null,
@@ -32362,6 +32569,12 @@ Object.freeze({
32362
32569
  addonId: null,
32363
32570
  access: "view"
32364
32571
  },
32572
+ "recording.pauseForStorageMigration": {
32573
+ capName: "recording",
32574
+ capScope: "system",
32575
+ addonId: null,
32576
+ access: "create"
32577
+ },
32365
32578
  "recording.pruneFootage": {
32366
32579
  capName: "recording",
32367
32580
  capScope: "system",
@@ -32380,7 +32593,7 @@ Object.freeze({
32380
32593
  addonId: null,
32381
32594
  access: "view"
32382
32595
  },
32383
- "recording.relocateFootage": {
32596
+ "recording.refreshStorageLocationsForMigration": {
32384
32597
  capName: "recording",
32385
32598
  capScope: "system",
32386
32599
  addonId: null,
@@ -32404,12 +32617,24 @@ Object.freeze({
32404
32617
  addonId: null,
32405
32618
  access: "create"
32406
32619
  },
32620
+ "recording.resumeForStorageMigration": {
32621
+ capName: "recording",
32622
+ capScope: "system",
32623
+ addonId: null,
32624
+ access: "create"
32625
+ },
32407
32626
  "recording.setDeviceConfig": {
32408
32627
  capName: "recording",
32409
32628
  capScope: "system",
32410
32629
  addonId: null,
32411
32630
  access: "create"
32412
32631
  },
32632
+ "recording.startStorageMigrationMove": {
32633
+ capName: "recording",
32634
+ capScope: "system",
32635
+ addonId: null,
32636
+ access: "create"
32637
+ },
32413
32638
  "recordingExport.cancelExport": {
32414
32639
  capName: "recordingExport",
32415
32640
  capScope: "system",
@@ -32800,6 +33025,30 @@ Object.freeze({
32800
33025
  addonId: null,
32801
33026
  access: "view"
32802
33027
  },
33028
+ "storageMigration.cancel": {
33029
+ capName: "storage-migration",
33030
+ capScope: "system",
33031
+ addonId: null,
33032
+ access: "create"
33033
+ },
33034
+ "storageMigration.plan": {
33035
+ capName: "storage-migration",
33036
+ capScope: "system",
33037
+ addonId: null,
33038
+ access: "view"
33039
+ },
33040
+ "storageMigration.start": {
33041
+ capName: "storage-migration",
33042
+ capScope: "system",
33043
+ addonId: null,
33044
+ access: "create"
33045
+ },
33046
+ "storageMigration.status": {
33047
+ capName: "storage-migration",
33048
+ capScope: "system",
33049
+ addonId: null,
33050
+ access: "view"
33051
+ },
32803
33052
  "storageProvider.abortUpload": {
32804
33053
  capName: "storage-provider",
32805
33054
  capScope: "system",
@@ -33178,12 +33427,42 @@ Object.freeze({
33178
33427
  addonId: null,
33179
33428
  access: "create"
33180
33429
  },
33430
+ "terminalSession.adoptLegacyMonitor": {
33431
+ capName: "terminal-session",
33432
+ capScope: "system",
33433
+ addonId: null,
33434
+ access: "create"
33435
+ },
33181
33436
  "terminalSession.close": {
33182
33437
  capName: "terminal-session",
33183
33438
  capScope: "system",
33184
33439
  addonId: null,
33185
33440
  access: "create"
33186
33441
  },
33442
+ "terminalSession.createInstance": {
33443
+ capName: "terminal-session",
33444
+ capScope: "system",
33445
+ addonId: null,
33446
+ access: "create"
33447
+ },
33448
+ "terminalSession.deleteInstance": {
33449
+ capName: "terminal-session",
33450
+ capScope: "system",
33451
+ addonId: null,
33452
+ access: "delete"
33453
+ },
33454
+ "terminalSession.listInstances": {
33455
+ capName: "terminal-session",
33456
+ capScope: "system",
33457
+ addonId: null,
33458
+ access: "view"
33459
+ },
33460
+ "terminalSession.listLegacyCameras": {
33461
+ capName: "terminal-session",
33462
+ capScope: "system",
33463
+ addonId: null,
33464
+ access: "view"
33465
+ },
33187
33466
  "terminalSession.listProfiles": {
33188
33467
  capName: "terminal-session",
33189
33468
  capScope: "system",
@@ -33214,6 +33493,12 @@ Object.freeze({
33214
33493
  addonId: null,
33215
33494
  access: "create"
33216
33495
  },
33496
+ "terminalSession.setInstanceEnabled": {
33497
+ capName: "terminal-session",
33498
+ capScope: "system",
33499
+ addonId: null,
33500
+ access: "create"
33501
+ },
33217
33502
  "terminalSession.writeInput": {
33218
33503
  capName: "terminal-session",
33219
33504
  capScope: "system",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-provider-rademacher",
3
- "version": "0.2.11",
3
+ "version": "0.2.12",
4
4
  "description": "Rademacher HomePilot device-provider addon for CamStack — wraps the @apocaliss92/noderademacher local-hub client (roller shutters over the cover cap)",
5
5
  "keywords": [
6
6
  "camstack",