@camstack/addon-provider-dreo 0.2.12 → 0.2.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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
@@ -7587,12 +7587,11 @@ var RecordingConfigSchema = object({
7587
7587
  /**
7588
7588
  * Entity-relocation job state (storage entity-routing spec, Phase 4).
7589
7589
  *
7590
- * One shape shared by the recorder's `relocateFootage` (segments) and
7591
- * pipeline-analytics' `relocateMedia` (event media blobs) so the admin Data
7592
- * page renders both movers with one component. Jobs are in-RAM (a restart
7593
- * forgets them re-running is safe by construction: copy-if-absent, delete
7594
- * after verify) and each completed/failed run also lands one durable ops-log
7595
- * row on the owning addon's surface.
7590
+ * One shape shared by the recorder and pipeline-analytics internal movers.
7591
+ * The public admin surface is `storage-migration`; child jobs remain in RAM
7592
+ * because copy-if-absent, verify, delete and index/row repoint are resumable.
7593
+ * Each completed/failed run also lands one durable ops-log row on its owning
7594
+ * addon surface.
7596
7595
  */
7597
7596
  var RelocateJobStateSchema = _enum([
7598
7597
  "running",
@@ -7619,19 +7618,100 @@ var RelocateJobSchema = object({
7619
7618
  finishedAt: number().nullable(),
7620
7619
  error: string().nullable()
7621
7620
  });
7621
+ /** Profile-derived footage selection used only by the migration coordinator:
7622
+ * `recordings` owns high+mid; `recordingsLow` owns low. */
7623
+ var RelocateFootageClassSchema = _enum(["recordings", "recordingsLow"]);
7622
7624
  var RelocateFootageInputSchema = object({
7623
- deviceId: number().optional(),
7624
7625
  fromLocationId: string(),
7625
7626
  toLocationId: string(),
7626
7627
  entities: array(_enum(["segments"])).optional(),
7628
+ /** Limits relocation to the logical profile class. Omit only for the
7629
+ * pre-orchestration compatibility path. */
7630
+ footageClass: RelocateFootageClassSchema.optional(),
7627
7631
  /** Copy throttle in MB/s (default 40) — the drain is a background chore,
7628
7632
  * never allowed to starve live writers. */
7629
7633
  throttleMbps: number().min(1).max(1e3).optional()
7630
7634
  });
7631
- var RelocateMediaInputSchema = object({
7632
- deviceId: number().optional(),
7635
+ /** Internal, lease-scoped participant operation. It is intentionally separate
7636
+ * from persistent recording settings: a migration never changes
7637
+ * `RecordingConfig.enabled` or camera wrapper bindings. */
7638
+ var StorageMigrationLeaseInputSchema = object({ leaseId: string().min(1) });
7639
+ var StorageMigrationFootageMoveInputSchema = RelocateFootageInputSchema.extend({ leaseId: string().min(1) });
7640
+ var StorageMigrationMediaMoveInputSchema = object({
7633
7641
  toLocationId: string(),
7634
7642
  throttleMbps: number().min(1).max(1e3).optional()
7643
+ }).extend({ leaseId: string().min(1) });
7644
+ /** The independently selectable logical storage classes. `recordings`
7645
+ * encompasses the high and mid segment profiles; `recordingsLow` is low
7646
+ * segments; `eventMedia` is post-analysis blobs. */
7647
+ var StorageMigrationClassSchema = _enum([
7648
+ "recordings",
7649
+ "recordingsLow",
7650
+ "eventMedia"
7651
+ ]);
7652
+ /** A destination is always an existing, fully-qualified location id. The
7653
+ * migration API intentionally never changes a source location's `basePath`:
7654
+ * callers create a new `<type>:<slug>` location, then select it here. */
7655
+ var StorageMigrationDestinationsSchema = object({
7656
+ recordings: string().min(1).optional(),
7657
+ recordingsLow: string().min(1).optional(),
7658
+ eventMedia: string().min(1).optional()
7659
+ }).refine((value) => Object.keys(value).length > 0, { message: "select at least one storage class" });
7660
+ /** Shared input for planning and starting an orchestrated storage migration. */
7661
+ var StorageMigrationInputSchema = object({
7662
+ destinations: StorageMigrationDestinationsSchema,
7663
+ throttleMbps: number().min(1).max(1e3).optional()
7664
+ });
7665
+ /** The durable coordinator state machine. The only phase that changes default
7666
+ * locations is `repointing`, after every selected mover has completed and been
7667
+ * verified. */
7668
+ var StorageMigrationPhaseSchema = _enum([
7669
+ "planning",
7670
+ "pausing",
7671
+ "moving",
7672
+ "verifying",
7673
+ "repointing",
7674
+ "refreshing",
7675
+ "resuming",
7676
+ "done",
7677
+ "failed",
7678
+ "cancelled"
7679
+ ]);
7680
+ var StorageMigrationParticipantSchema = _enum([
7681
+ "pipeline",
7682
+ "recorder",
7683
+ "analytics"
7684
+ ]);
7685
+ var StorageMigrationMoveSchema = object({
7686
+ storageClass: StorageMigrationClassSchema,
7687
+ fromLocationId: string(),
7688
+ toLocationId: string(),
7689
+ moverJobId: string().nullable(),
7690
+ state: RelocateJobStateSchema.nullable(),
7691
+ error: string().nullable()
7692
+ });
7693
+ var StorageMigrationJobSchema = object({
7694
+ jobId: string(),
7695
+ phase: StorageMigrationPhaseSchema,
7696
+ destinations: StorageMigrationDestinationsSchema,
7697
+ throttleMbps: number(),
7698
+ moves: array(StorageMigrationMoveSchema),
7699
+ pauseLeaseId: string().nullable(),
7700
+ pausedParticipants: array(StorageMigrationParticipantSchema),
7701
+ repointed: boolean(),
7702
+ cancelRequested: boolean(),
7703
+ startedAt: number(),
7704
+ updatedAt: number(),
7705
+ finishedAt: number().nullable(),
7706
+ error: string().nullable()
7707
+ });
7708
+ var StorageMigrationPlanSchema = object({
7709
+ destinations: StorageMigrationDestinationsSchema,
7710
+ moves: array(object({
7711
+ storageClass: StorageMigrationClassSchema,
7712
+ fromLocationId: string(),
7713
+ toLocationId: string()
7714
+ }))
7635
7715
  });
7636
7716
  /**
7637
7717
  * `StorageLocationType` — an addon-declared id that identifies the *kind* of
@@ -16302,13 +16382,19 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
16302
16382
  }), method(object({ deviceId: number() }), EventPruneCountsSchema, {
16303
16383
  kind: "mutation",
16304
16384
  auth: "admin"
16305
- }), method(RelocateMediaInputSchema, object({ jobId: string() }), {
16385
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
16306
16386
  kind: "mutation",
16307
16387
  auth: "admin"
16308
- }), method(object({}), array(RelocateJobSchema).readonly(), {
16309
- kind: "query",
16388
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
16389
+ kind: "mutation",
16390
+ auth: "admin"
16391
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
16392
+ kind: "mutation",
16393
+ auth: "admin"
16394
+ }), method(StorageMigrationMediaMoveInputSchema, object({ jobId: string() }), {
16395
+ kind: "mutation",
16310
16396
  auth: "admin"
16311
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
16397
+ }), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
16312
16398
  kind: "mutation",
16313
16399
  auth: "admin"
16314
16400
  }), method(OpsLogQueryInputSchema, array(OpsLogEntrySchema).readonly(), {
@@ -17838,7 +17924,13 @@ var NodeInferenceDevicesSchema = object({
17838
17924
  reachable: boolean(),
17839
17925
  devices: array(NodeInferenceDeviceSchema).readonly()
17840
17926
  });
17841
- method(object({
17927
+ method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
17928
+ kind: "mutation",
17929
+ auth: "admin"
17930
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
17931
+ kind: "mutation",
17932
+ auth: "admin"
17933
+ }), method(object({
17842
17934
  deviceId: number(),
17843
17935
  agentNodeId: string()
17844
17936
  }), object({ success: literal(true) }), {
@@ -18512,6 +18604,13 @@ method(object({ locationId: string() }), EvictableUsageSchema), method(object({
18512
18604
  locationId: string(),
18513
18605
  targetBytes: number().int().positive()
18514
18606
  }), EvictResultSchema, { kind: "mutation" });
18607
+ method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin" }), method(StorageMigrationInputSchema, object({ jobId: string() }), {
18608
+ kind: "mutation",
18609
+ auth: "admin"
18610
+ }), method(object({ jobId: string().optional() }), StorageMigrationJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
18611
+ kind: "mutation",
18612
+ auth: "admin"
18613
+ });
18515
18614
  var ProviderInfoSchema = discriminatedUnion("shouldSaveDiskSpace", [object({
18516
18615
  providerId: string().min(1),
18517
18616
  displayName: string().min(1),
@@ -18615,6 +18714,28 @@ var TerminalProfileInfoSchema = object({
18615
18714
  label: string(),
18616
18715
  description: string().optional()
18617
18716
  });
18717
+ /**
18718
+ * A durable operator-created Terminal instance. Profiles are templates; only
18719
+ * an instance declares a camera.
18720
+ */
18721
+ var TerminalInstanceInfoSchema = object({
18722
+ instanceId: string(),
18723
+ cameraStableId: string(),
18724
+ nodeId: string(),
18725
+ profileId: string(),
18726
+ profileLabel: string(),
18727
+ name: string(),
18728
+ enabled: boolean()
18729
+ });
18730
+ var TerminalLegacyCameraSchema = object({
18731
+ stableId: string(),
18732
+ nodeId: string(),
18733
+ profileId: string(),
18734
+ profileLabel: string(),
18735
+ name: string(),
18736
+ /** Only legacy monitor cameras can retain their historic stable identity. */
18737
+ adoptable: boolean()
18738
+ });
18618
18739
  var TerminalOutputEventSchema = discriminatedUnion("kind", [object({
18619
18740
  seq: number().int().positive(),
18620
18741
  kind: literal("data"),
@@ -18631,7 +18752,29 @@ var TerminalOutputBatchSchema = object({
18631
18752
  snapshot: string().optional(),
18632
18753
  events: array(TerminalOutputEventSchema).readonly()
18633
18754
  });
18634
- method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
18755
+ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalInstanceInfoSchema).readonly(), { auth: "admin" }), method(object({
18756
+ targetNodeId: string().min(1),
18757
+ profileId: string().min(1),
18758
+ name: string().trim().min(1).max(160).optional()
18759
+ }), TerminalInstanceInfoSchema, {
18760
+ kind: "mutation",
18761
+ auth: "admin"
18762
+ }), method(object({ instanceId: string().min(1) }), _void(), {
18763
+ kind: "mutation",
18764
+ auth: "admin"
18765
+ }), method(object({
18766
+ instanceId: string().min(1),
18767
+ enabled: boolean()
18768
+ }), TerminalInstanceInfoSchema, {
18769
+ kind: "mutation",
18770
+ auth: "admin"
18771
+ }), method(_void(), array(TerminalLegacyCameraSchema).readonly(), { auth: "admin" }), method(object({
18772
+ stableId: string().min(1),
18773
+ name: string().trim().min(1).max(160).optional()
18774
+ }), TerminalInstanceInfoSchema, {
18775
+ kind: "mutation",
18776
+ auth: "admin"
18777
+ }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
18635
18778
  profileId: string(),
18636
18779
  cols: number().int().positive(),
18637
18780
  rows: number().int().positive()
@@ -18648,7 +18791,13 @@ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }),
18648
18791
  }), method(object({
18649
18792
  sessionId: string(),
18650
18793
  afterSeq: number().int().nonnegative(),
18651
- waitMs: number().int().min(0).max(2e3).default(0)
18794
+ waitMs: number().int().min(0).max(2e3).default(0),
18795
+ /**
18796
+ * Wait when a just-opened session has no output yet. Kept opt-in so a
18797
+ * browser's initial repaint remains immediate; the camera snapshot
18798
+ * relay uses it to avoid encoding a blank startup frame.
18799
+ */
18800
+ waitForOutput: boolean().optional()
18652
18801
  }), TerminalOutputBatchSchema, {
18653
18802
  kind: "mutation",
18654
18803
  auth: "admin",
@@ -21154,6 +21303,7 @@ var FaceInfoSchema = object({
21154
21303
  var FaceFilterEnum = _enum([
21155
21304
  "unassigned",
21156
21305
  "recognized",
21306
+ "identified",
21157
21307
  "all"
21158
21308
  ]);
21159
21309
  var MediaFileLiteSchema$1 = object({
@@ -21182,6 +21332,8 @@ method(_void(), array(IdentitySchema).readonly()), method(object({ name: string(
21182
21332
  kind: "mutation",
21183
21333
  auth: "admin"
21184
21334
  }), method(object({
21335
+ /** Restrict to one camera. Absent keeps the cluster-wide gallery view. */
21336
+ deviceId: number().int().optional(),
21185
21337
  limit: number().int().positive().optional(),
21186
21338
  filter: FaceFilterEnum.optional(),
21187
21339
  /**
@@ -23411,6 +23563,10 @@ var OsdSourceSchema = discriminatedUnion("kind", [
23411
23563
  capName: string().min(1).max(64),
23412
23564
  /** Dot path inside the slice, e.g. `detected`, `value`, `mode`. */
23413
23565
  valuePath: string().min(1).max(64)
23566
+ }),
23567
+ object({
23568
+ kind: literal("latest-recognition"),
23569
+ recognition: _enum(["person", "plate"])
23414
23570
  })
23415
23571
  ]);
23416
23572
  var OsdSlotBindingSchema = object({
@@ -23516,6 +23672,15 @@ method(object({ deviceId: number().int() }), object({
23516
23672
  }), object({ success: literal(true) }), {
23517
23673
  kind: "mutation",
23518
23674
  auth: "admin"
23675
+ }), method(object({
23676
+ sourceDeviceId: number().int(),
23677
+ targetDeviceId: number().int()
23678
+ }), object({
23679
+ copied: number().int().nonnegative(),
23680
+ skipped: number().int().nonnegative()
23681
+ }), {
23682
+ kind: "mutation",
23683
+ auth: "admin"
23519
23684
  }), method(object({
23520
23685
  deviceId: number().int(),
23521
23686
  slotId: string().min(1),
@@ -24613,13 +24778,19 @@ method(object({
24613
24778
  }), {
24614
24779
  kind: "mutation",
24615
24780
  auth: "admin"
24616
- }), method(RelocateFootageInputSchema, object({ jobId: string() }), {
24781
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
24617
24782
  kind: "mutation",
24618
24783
  auth: "admin"
24619
- }), method(object({}), array(RelocateJobSchema).readonly(), {
24620
- kind: "query",
24784
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
24785
+ kind: "mutation",
24621
24786
  auth: "admin"
24622
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
24787
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
24788
+ kind: "mutation",
24789
+ auth: "admin"
24790
+ }), method(StorageMigrationFootageMoveInputSchema, object({ jobId: string() }), {
24791
+ kind: "mutation",
24792
+ auth: "admin"
24793
+ }), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
24623
24794
  kind: "mutation",
24624
24795
  auth: "admin"
24625
24796
  });
@@ -30225,6 +30396,12 @@ Object.freeze({
30225
30396
  addonId: null,
30226
30397
  access: "delete"
30227
30398
  },
30399
+ "osdManager.copyDeviceConfiguration": {
30400
+ capName: "osd-manager",
30401
+ capScope: "system",
30402
+ addonId: null,
30403
+ access: "create"
30404
+ },
30228
30405
  "osdManager.getConditionSupport": {
30229
30406
  capName: "osd-manager",
30230
30407
  capScope: "system",
@@ -30321,7 +30498,7 @@ Object.freeze({
30321
30498
  addonId: null,
30322
30499
  access: "create"
30323
30500
  },
30324
- "pipelineAnalytics.cancelMediaRelocate": {
30501
+ "pipelineAnalytics.cancelStorageMigrationMove": {
30325
30502
  capName: "pipeline-analytics",
30326
30503
  capScope: "device",
30327
30504
  addonId: null,
@@ -30393,12 +30570,6 @@ Object.freeze({
30393
30570
  addonId: null,
30394
30571
  access: "view"
30395
30572
  },
30396
- "pipelineAnalytics.getMediaRelocateStatus": {
30397
- capName: "pipeline-analytics",
30398
- capScope: "device",
30399
- addonId: null,
30400
- access: "view"
30401
- },
30402
30573
  "pipelineAnalytics.getMotionEvents": {
30403
30574
  capName: "pipeline-analytics",
30404
30575
  capScope: "device",
@@ -30435,6 +30606,12 @@ Object.freeze({
30435
30606
  addonId: null,
30436
30607
  access: "view"
30437
30608
  },
30609
+ "pipelineAnalytics.getStorageMigrationMoveStatus": {
30610
+ capName: "pipeline-analytics",
30611
+ capScope: "device",
30612
+ addonId: null,
30613
+ access: "view"
30614
+ },
30438
30615
  "pipelineAnalytics.getTrack": {
30439
30616
  capName: "pipeline-analytics",
30440
30617
  capScope: "device",
@@ -30513,6 +30690,12 @@ Object.freeze({
30513
30690
  addonId: null,
30514
30691
  access: "view"
30515
30692
  },
30693
+ "pipelineAnalytics.pauseForStorageMigration": {
30694
+ capName: "pipeline-analytics",
30695
+ capScope: "device",
30696
+ addonId: null,
30697
+ access: "create"
30698
+ },
30516
30699
  "pipelineAnalytics.proposeRetrainAnnotations": {
30517
30700
  capName: "pipeline-analytics",
30518
30701
  capScope: "device",
@@ -30543,7 +30726,7 @@ Object.freeze({
30543
30726
  addonId: null,
30544
30727
  access: "create"
30545
30728
  },
30546
- "pipelineAnalytics.relocateMedia": {
30729
+ "pipelineAnalytics.refreshStorageLocationsForMigration": {
30547
30730
  capName: "pipeline-analytics",
30548
30731
  capScope: "device",
30549
30732
  addonId: null,
@@ -30555,6 +30738,12 @@ Object.freeze({
30555
30738
  addonId: null,
30556
30739
  access: "create"
30557
30740
  },
30741
+ "pipelineAnalytics.resumeForStorageMigration": {
30742
+ capName: "pipeline-analytics",
30743
+ capScope: "device",
30744
+ addonId: null,
30745
+ access: "create"
30746
+ },
30558
30747
  "pipelineAnalytics.saveRetrainAnnotations": {
30559
30748
  capName: "pipeline-analytics",
30560
30749
  capScope: "device",
@@ -30579,6 +30768,12 @@ Object.freeze({
30579
30768
  addonId: null,
30580
30769
  access: "create"
30581
30770
  },
30771
+ "pipelineAnalytics.startStorageMigrationMove": {
30772
+ capName: "pipeline-analytics",
30773
+ capScope: "device",
30774
+ addonId: null,
30775
+ access: "create"
30776
+ },
30582
30777
  "pipelineAnalytics.wipeAllAnalytics": {
30583
30778
  capName: "pipeline-analytics",
30584
30779
  capScope: "device",
@@ -30945,6 +31140,12 @@ Object.freeze({
30945
31140
  addonId: null,
30946
31141
  access: "view"
30947
31142
  },
31143
+ "pipelineOrchestrator.pauseForStorageMigration": {
31144
+ capName: "pipeline-orchestrator",
31145
+ capScope: "system",
31146
+ addonId: null,
31147
+ access: "create"
31148
+ },
30948
31149
  "pipelineOrchestrator.rebalance": {
30949
31150
  capName: "pipeline-orchestrator",
30950
31151
  capScope: "system",
@@ -30969,6 +31170,12 @@ Object.freeze({
30969
31170
  addonId: null,
30970
31171
  access: "view"
30971
31172
  },
31173
+ "pipelineOrchestrator.resumeForStorageMigration": {
31174
+ capName: "pipeline-orchestrator",
31175
+ capScope: "system",
31176
+ addonId: null,
31177
+ access: "create"
31178
+ },
30972
31179
  "pipelineOrchestrator.saveTemplate": {
30973
31180
  capName: "pipeline-orchestrator",
30974
31181
  capScope: "system",
@@ -31365,7 +31572,7 @@ Object.freeze({
31365
31572
  addonId: null,
31366
31573
  access: "create"
31367
31574
  },
31368
- "recording.cancelRelocate": {
31575
+ "recording.cancelStorageMigrationMove": {
31369
31576
  capName: "recording",
31370
31577
  capScope: "system",
31371
31578
  addonId: null,
@@ -31401,7 +31608,7 @@ Object.freeze({
31401
31608
  addonId: null,
31402
31609
  access: "view"
31403
31610
  },
31404
- "recording.getRelocateStatus": {
31611
+ "recording.getStorageMigrationMoveStatus": {
31405
31612
  capName: "recording",
31406
31613
  capScope: "system",
31407
31614
  addonId: null,
@@ -31425,6 +31632,12 @@ Object.freeze({
31425
31632
  addonId: null,
31426
31633
  access: "view"
31427
31634
  },
31635
+ "recording.pauseForStorageMigration": {
31636
+ capName: "recording",
31637
+ capScope: "system",
31638
+ addonId: null,
31639
+ access: "create"
31640
+ },
31428
31641
  "recording.pruneFootage": {
31429
31642
  capName: "recording",
31430
31643
  capScope: "system",
@@ -31443,7 +31656,7 @@ Object.freeze({
31443
31656
  addonId: null,
31444
31657
  access: "view"
31445
31658
  },
31446
- "recording.relocateFootage": {
31659
+ "recording.refreshStorageLocationsForMigration": {
31447
31660
  capName: "recording",
31448
31661
  capScope: "system",
31449
31662
  addonId: null,
@@ -31467,12 +31680,24 @@ Object.freeze({
31467
31680
  addonId: null,
31468
31681
  access: "create"
31469
31682
  },
31683
+ "recording.resumeForStorageMigration": {
31684
+ capName: "recording",
31685
+ capScope: "system",
31686
+ addonId: null,
31687
+ access: "create"
31688
+ },
31470
31689
  "recording.setDeviceConfig": {
31471
31690
  capName: "recording",
31472
31691
  capScope: "system",
31473
31692
  addonId: null,
31474
31693
  access: "create"
31475
31694
  },
31695
+ "recording.startStorageMigrationMove": {
31696
+ capName: "recording",
31697
+ capScope: "system",
31698
+ addonId: null,
31699
+ access: "create"
31700
+ },
31476
31701
  "recordingExport.cancelExport": {
31477
31702
  capName: "recordingExport",
31478
31703
  capScope: "system",
@@ -31863,6 +32088,30 @@ Object.freeze({
31863
32088
  addonId: null,
31864
32089
  access: "view"
31865
32090
  },
32091
+ "storageMigration.cancel": {
32092
+ capName: "storage-migration",
32093
+ capScope: "system",
32094
+ addonId: null,
32095
+ access: "create"
32096
+ },
32097
+ "storageMigration.plan": {
32098
+ capName: "storage-migration",
32099
+ capScope: "system",
32100
+ addonId: null,
32101
+ access: "view"
32102
+ },
32103
+ "storageMigration.start": {
32104
+ capName: "storage-migration",
32105
+ capScope: "system",
32106
+ addonId: null,
32107
+ access: "create"
32108
+ },
32109
+ "storageMigration.status": {
32110
+ capName: "storage-migration",
32111
+ capScope: "system",
32112
+ addonId: null,
32113
+ access: "view"
32114
+ },
31866
32115
  "storageProvider.abortUpload": {
31867
32116
  capName: "storage-provider",
31868
32117
  capScope: "system",
@@ -32241,12 +32490,42 @@ Object.freeze({
32241
32490
  addonId: null,
32242
32491
  access: "create"
32243
32492
  },
32493
+ "terminalSession.adoptLegacyMonitor": {
32494
+ capName: "terminal-session",
32495
+ capScope: "system",
32496
+ addonId: null,
32497
+ access: "create"
32498
+ },
32244
32499
  "terminalSession.close": {
32245
32500
  capName: "terminal-session",
32246
32501
  capScope: "system",
32247
32502
  addonId: null,
32248
32503
  access: "create"
32249
32504
  },
32505
+ "terminalSession.createInstance": {
32506
+ capName: "terminal-session",
32507
+ capScope: "system",
32508
+ addonId: null,
32509
+ access: "create"
32510
+ },
32511
+ "terminalSession.deleteInstance": {
32512
+ capName: "terminal-session",
32513
+ capScope: "system",
32514
+ addonId: null,
32515
+ access: "delete"
32516
+ },
32517
+ "terminalSession.listInstances": {
32518
+ capName: "terminal-session",
32519
+ capScope: "system",
32520
+ addonId: null,
32521
+ access: "view"
32522
+ },
32523
+ "terminalSession.listLegacyCameras": {
32524
+ capName: "terminal-session",
32525
+ capScope: "system",
32526
+ addonId: null,
32527
+ access: "view"
32528
+ },
32250
32529
  "terminalSession.listProfiles": {
32251
32530
  capName: "terminal-session",
32252
32531
  capScope: "system",
@@ -32277,6 +32556,12 @@ Object.freeze({
32277
32556
  addonId: null,
32278
32557
  access: "create"
32279
32558
  },
32559
+ "terminalSession.setInstanceEnabled": {
32560
+ capName: "terminal-session",
32561
+ capScope: "system",
32562
+ addonId: null,
32563
+ access: "create"
32564
+ },
32280
32565
  "terminalSession.writeInput": {
32281
32566
  capName: "terminal-session",
32282
32567
  capScope: "system",
package/dist/addon.mjs CHANGED
@@ -7588,12 +7588,11 @@ var RecordingConfigSchema = object({
7588
7588
  /**
7589
7589
  * Entity-relocation job state (storage entity-routing spec, Phase 4).
7590
7590
  *
7591
- * One shape shared by the recorder's `relocateFootage` (segments) and
7592
- * pipeline-analytics' `relocateMedia` (event media blobs) so the admin Data
7593
- * page renders both movers with one component. Jobs are in-RAM (a restart
7594
- * forgets them re-running is safe by construction: copy-if-absent, delete
7595
- * after verify) and each completed/failed run also lands one durable ops-log
7596
- * row on the owning addon's surface.
7591
+ * One shape shared by the recorder and pipeline-analytics internal movers.
7592
+ * The public admin surface is `storage-migration`; child jobs remain in RAM
7593
+ * because copy-if-absent, verify, delete and index/row repoint are resumable.
7594
+ * Each completed/failed run also lands one durable ops-log row on its owning
7595
+ * addon surface.
7597
7596
  */
7598
7597
  var RelocateJobStateSchema = _enum([
7599
7598
  "running",
@@ -7620,19 +7619,100 @@ var RelocateJobSchema = object({
7620
7619
  finishedAt: number().nullable(),
7621
7620
  error: string().nullable()
7622
7621
  });
7622
+ /** Profile-derived footage selection used only by the migration coordinator:
7623
+ * `recordings` owns high+mid; `recordingsLow` owns low. */
7624
+ var RelocateFootageClassSchema = _enum(["recordings", "recordingsLow"]);
7623
7625
  var RelocateFootageInputSchema = object({
7624
- deviceId: number().optional(),
7625
7626
  fromLocationId: string(),
7626
7627
  toLocationId: string(),
7627
7628
  entities: array(_enum(["segments"])).optional(),
7629
+ /** Limits relocation to the logical profile class. Omit only for the
7630
+ * pre-orchestration compatibility path. */
7631
+ footageClass: RelocateFootageClassSchema.optional(),
7628
7632
  /** Copy throttle in MB/s (default 40) — the drain is a background chore,
7629
7633
  * never allowed to starve live writers. */
7630
7634
  throttleMbps: number().min(1).max(1e3).optional()
7631
7635
  });
7632
- var RelocateMediaInputSchema = object({
7633
- deviceId: number().optional(),
7636
+ /** Internal, lease-scoped participant operation. It is intentionally separate
7637
+ * from persistent recording settings: a migration never changes
7638
+ * `RecordingConfig.enabled` or camera wrapper bindings. */
7639
+ var StorageMigrationLeaseInputSchema = object({ leaseId: string().min(1) });
7640
+ var StorageMigrationFootageMoveInputSchema = RelocateFootageInputSchema.extend({ leaseId: string().min(1) });
7641
+ var StorageMigrationMediaMoveInputSchema = object({
7634
7642
  toLocationId: string(),
7635
7643
  throttleMbps: number().min(1).max(1e3).optional()
7644
+ }).extend({ leaseId: string().min(1) });
7645
+ /** The independently selectable logical storage classes. `recordings`
7646
+ * encompasses the high and mid segment profiles; `recordingsLow` is low
7647
+ * segments; `eventMedia` is post-analysis blobs. */
7648
+ var StorageMigrationClassSchema = _enum([
7649
+ "recordings",
7650
+ "recordingsLow",
7651
+ "eventMedia"
7652
+ ]);
7653
+ /** A destination is always an existing, fully-qualified location id. The
7654
+ * migration API intentionally never changes a source location's `basePath`:
7655
+ * callers create a new `<type>:<slug>` location, then select it here. */
7656
+ var StorageMigrationDestinationsSchema = object({
7657
+ recordings: string().min(1).optional(),
7658
+ recordingsLow: string().min(1).optional(),
7659
+ eventMedia: string().min(1).optional()
7660
+ }).refine((value) => Object.keys(value).length > 0, { message: "select at least one storage class" });
7661
+ /** Shared input for planning and starting an orchestrated storage migration. */
7662
+ var StorageMigrationInputSchema = object({
7663
+ destinations: StorageMigrationDestinationsSchema,
7664
+ throttleMbps: number().min(1).max(1e3).optional()
7665
+ });
7666
+ /** The durable coordinator state machine. The only phase that changes default
7667
+ * locations is `repointing`, after every selected mover has completed and been
7668
+ * verified. */
7669
+ var StorageMigrationPhaseSchema = _enum([
7670
+ "planning",
7671
+ "pausing",
7672
+ "moving",
7673
+ "verifying",
7674
+ "repointing",
7675
+ "refreshing",
7676
+ "resuming",
7677
+ "done",
7678
+ "failed",
7679
+ "cancelled"
7680
+ ]);
7681
+ var StorageMigrationParticipantSchema = _enum([
7682
+ "pipeline",
7683
+ "recorder",
7684
+ "analytics"
7685
+ ]);
7686
+ var StorageMigrationMoveSchema = object({
7687
+ storageClass: StorageMigrationClassSchema,
7688
+ fromLocationId: string(),
7689
+ toLocationId: string(),
7690
+ moverJobId: string().nullable(),
7691
+ state: RelocateJobStateSchema.nullable(),
7692
+ error: string().nullable()
7693
+ });
7694
+ var StorageMigrationJobSchema = object({
7695
+ jobId: string(),
7696
+ phase: StorageMigrationPhaseSchema,
7697
+ destinations: StorageMigrationDestinationsSchema,
7698
+ throttleMbps: number(),
7699
+ moves: array(StorageMigrationMoveSchema),
7700
+ pauseLeaseId: string().nullable(),
7701
+ pausedParticipants: array(StorageMigrationParticipantSchema),
7702
+ repointed: boolean(),
7703
+ cancelRequested: boolean(),
7704
+ startedAt: number(),
7705
+ updatedAt: number(),
7706
+ finishedAt: number().nullable(),
7707
+ error: string().nullable()
7708
+ });
7709
+ var StorageMigrationPlanSchema = object({
7710
+ destinations: StorageMigrationDestinationsSchema,
7711
+ moves: array(object({
7712
+ storageClass: StorageMigrationClassSchema,
7713
+ fromLocationId: string(),
7714
+ toLocationId: string()
7715
+ }))
7636
7716
  });
7637
7717
  /**
7638
7718
  * `StorageLocationType` — an addon-declared id that identifies the *kind* of
@@ -16303,13 +16383,19 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
16303
16383
  }), method(object({ deviceId: number() }), EventPruneCountsSchema, {
16304
16384
  kind: "mutation",
16305
16385
  auth: "admin"
16306
- }), method(RelocateMediaInputSchema, object({ jobId: string() }), {
16386
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
16307
16387
  kind: "mutation",
16308
16388
  auth: "admin"
16309
- }), method(object({}), array(RelocateJobSchema).readonly(), {
16310
- kind: "query",
16389
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
16390
+ kind: "mutation",
16391
+ auth: "admin"
16392
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
16393
+ kind: "mutation",
16394
+ auth: "admin"
16395
+ }), method(StorageMigrationMediaMoveInputSchema, object({ jobId: string() }), {
16396
+ kind: "mutation",
16311
16397
  auth: "admin"
16312
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
16398
+ }), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
16313
16399
  kind: "mutation",
16314
16400
  auth: "admin"
16315
16401
  }), method(OpsLogQueryInputSchema, array(OpsLogEntrySchema).readonly(), {
@@ -17839,7 +17925,13 @@ var NodeInferenceDevicesSchema = object({
17839
17925
  reachable: boolean(),
17840
17926
  devices: array(NodeInferenceDeviceSchema).readonly()
17841
17927
  });
17842
- method(object({
17928
+ method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
17929
+ kind: "mutation",
17930
+ auth: "admin"
17931
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
17932
+ kind: "mutation",
17933
+ auth: "admin"
17934
+ }), method(object({
17843
17935
  deviceId: number(),
17844
17936
  agentNodeId: string()
17845
17937
  }), object({ success: literal(true) }), {
@@ -18513,6 +18605,13 @@ method(object({ locationId: string() }), EvictableUsageSchema), method(object({
18513
18605
  locationId: string(),
18514
18606
  targetBytes: number().int().positive()
18515
18607
  }), EvictResultSchema, { kind: "mutation" });
18608
+ method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin" }), method(StorageMigrationInputSchema, object({ jobId: string() }), {
18609
+ kind: "mutation",
18610
+ auth: "admin"
18611
+ }), method(object({ jobId: string().optional() }), StorageMigrationJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
18612
+ kind: "mutation",
18613
+ auth: "admin"
18614
+ });
18516
18615
  var ProviderInfoSchema = discriminatedUnion("shouldSaveDiskSpace", [object({
18517
18616
  providerId: string().min(1),
18518
18617
  displayName: string().min(1),
@@ -18616,6 +18715,28 @@ var TerminalProfileInfoSchema = object({
18616
18715
  label: string(),
18617
18716
  description: string().optional()
18618
18717
  });
18718
+ /**
18719
+ * A durable operator-created Terminal instance. Profiles are templates; only
18720
+ * an instance declares a camera.
18721
+ */
18722
+ var TerminalInstanceInfoSchema = object({
18723
+ instanceId: string(),
18724
+ cameraStableId: string(),
18725
+ nodeId: string(),
18726
+ profileId: string(),
18727
+ profileLabel: string(),
18728
+ name: string(),
18729
+ enabled: boolean()
18730
+ });
18731
+ var TerminalLegacyCameraSchema = object({
18732
+ stableId: string(),
18733
+ nodeId: string(),
18734
+ profileId: string(),
18735
+ profileLabel: string(),
18736
+ name: string(),
18737
+ /** Only legacy monitor cameras can retain their historic stable identity. */
18738
+ adoptable: boolean()
18739
+ });
18619
18740
  var TerminalOutputEventSchema = discriminatedUnion("kind", [object({
18620
18741
  seq: number().int().positive(),
18621
18742
  kind: literal("data"),
@@ -18632,7 +18753,29 @@ var TerminalOutputBatchSchema = object({
18632
18753
  snapshot: string().optional(),
18633
18754
  events: array(TerminalOutputEventSchema).readonly()
18634
18755
  });
18635
- method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
18756
+ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalInstanceInfoSchema).readonly(), { auth: "admin" }), method(object({
18757
+ targetNodeId: string().min(1),
18758
+ profileId: string().min(1),
18759
+ name: string().trim().min(1).max(160).optional()
18760
+ }), TerminalInstanceInfoSchema, {
18761
+ kind: "mutation",
18762
+ auth: "admin"
18763
+ }), method(object({ instanceId: string().min(1) }), _void(), {
18764
+ kind: "mutation",
18765
+ auth: "admin"
18766
+ }), method(object({
18767
+ instanceId: string().min(1),
18768
+ enabled: boolean()
18769
+ }), TerminalInstanceInfoSchema, {
18770
+ kind: "mutation",
18771
+ auth: "admin"
18772
+ }), method(_void(), array(TerminalLegacyCameraSchema).readonly(), { auth: "admin" }), method(object({
18773
+ stableId: string().min(1),
18774
+ name: string().trim().min(1).max(160).optional()
18775
+ }), TerminalInstanceInfoSchema, {
18776
+ kind: "mutation",
18777
+ auth: "admin"
18778
+ }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
18636
18779
  profileId: string(),
18637
18780
  cols: number().int().positive(),
18638
18781
  rows: number().int().positive()
@@ -18649,7 +18792,13 @@ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }),
18649
18792
  }), method(object({
18650
18793
  sessionId: string(),
18651
18794
  afterSeq: number().int().nonnegative(),
18652
- waitMs: number().int().min(0).max(2e3).default(0)
18795
+ waitMs: number().int().min(0).max(2e3).default(0),
18796
+ /**
18797
+ * Wait when a just-opened session has no output yet. Kept opt-in so a
18798
+ * browser's initial repaint remains immediate; the camera snapshot
18799
+ * relay uses it to avoid encoding a blank startup frame.
18800
+ */
18801
+ waitForOutput: boolean().optional()
18653
18802
  }), TerminalOutputBatchSchema, {
18654
18803
  kind: "mutation",
18655
18804
  auth: "admin",
@@ -21155,6 +21304,7 @@ var FaceInfoSchema = object({
21155
21304
  var FaceFilterEnum = _enum([
21156
21305
  "unassigned",
21157
21306
  "recognized",
21307
+ "identified",
21158
21308
  "all"
21159
21309
  ]);
21160
21310
  var MediaFileLiteSchema$1 = object({
@@ -21183,6 +21333,8 @@ method(_void(), array(IdentitySchema).readonly()), method(object({ name: string(
21183
21333
  kind: "mutation",
21184
21334
  auth: "admin"
21185
21335
  }), method(object({
21336
+ /** Restrict to one camera. Absent keeps the cluster-wide gallery view. */
21337
+ deviceId: number().int().optional(),
21186
21338
  limit: number().int().positive().optional(),
21187
21339
  filter: FaceFilterEnum.optional(),
21188
21340
  /**
@@ -23412,6 +23564,10 @@ var OsdSourceSchema = discriminatedUnion("kind", [
23412
23564
  capName: string().min(1).max(64),
23413
23565
  /** Dot path inside the slice, e.g. `detected`, `value`, `mode`. */
23414
23566
  valuePath: string().min(1).max(64)
23567
+ }),
23568
+ object({
23569
+ kind: literal("latest-recognition"),
23570
+ recognition: _enum(["person", "plate"])
23415
23571
  })
23416
23572
  ]);
23417
23573
  var OsdSlotBindingSchema = object({
@@ -23517,6 +23673,15 @@ method(object({ deviceId: number().int() }), object({
23517
23673
  }), object({ success: literal(true) }), {
23518
23674
  kind: "mutation",
23519
23675
  auth: "admin"
23676
+ }), method(object({
23677
+ sourceDeviceId: number().int(),
23678
+ targetDeviceId: number().int()
23679
+ }), object({
23680
+ copied: number().int().nonnegative(),
23681
+ skipped: number().int().nonnegative()
23682
+ }), {
23683
+ kind: "mutation",
23684
+ auth: "admin"
23520
23685
  }), method(object({
23521
23686
  deviceId: number().int(),
23522
23687
  slotId: string().min(1),
@@ -24614,13 +24779,19 @@ method(object({
24614
24779
  }), {
24615
24780
  kind: "mutation",
24616
24781
  auth: "admin"
24617
- }), method(RelocateFootageInputSchema, object({ jobId: string() }), {
24782
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
24618
24783
  kind: "mutation",
24619
24784
  auth: "admin"
24620
- }), method(object({}), array(RelocateJobSchema).readonly(), {
24621
- kind: "query",
24785
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
24786
+ kind: "mutation",
24622
24787
  auth: "admin"
24623
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
24788
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
24789
+ kind: "mutation",
24790
+ auth: "admin"
24791
+ }), method(StorageMigrationFootageMoveInputSchema, object({ jobId: string() }), {
24792
+ kind: "mutation",
24793
+ auth: "admin"
24794
+ }), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
24624
24795
  kind: "mutation",
24625
24796
  auth: "admin"
24626
24797
  });
@@ -30226,6 +30397,12 @@ Object.freeze({
30226
30397
  addonId: null,
30227
30398
  access: "delete"
30228
30399
  },
30400
+ "osdManager.copyDeviceConfiguration": {
30401
+ capName: "osd-manager",
30402
+ capScope: "system",
30403
+ addonId: null,
30404
+ access: "create"
30405
+ },
30229
30406
  "osdManager.getConditionSupport": {
30230
30407
  capName: "osd-manager",
30231
30408
  capScope: "system",
@@ -30322,7 +30499,7 @@ Object.freeze({
30322
30499
  addonId: null,
30323
30500
  access: "create"
30324
30501
  },
30325
- "pipelineAnalytics.cancelMediaRelocate": {
30502
+ "pipelineAnalytics.cancelStorageMigrationMove": {
30326
30503
  capName: "pipeline-analytics",
30327
30504
  capScope: "device",
30328
30505
  addonId: null,
@@ -30394,12 +30571,6 @@ Object.freeze({
30394
30571
  addonId: null,
30395
30572
  access: "view"
30396
30573
  },
30397
- "pipelineAnalytics.getMediaRelocateStatus": {
30398
- capName: "pipeline-analytics",
30399
- capScope: "device",
30400
- addonId: null,
30401
- access: "view"
30402
- },
30403
30574
  "pipelineAnalytics.getMotionEvents": {
30404
30575
  capName: "pipeline-analytics",
30405
30576
  capScope: "device",
@@ -30436,6 +30607,12 @@ Object.freeze({
30436
30607
  addonId: null,
30437
30608
  access: "view"
30438
30609
  },
30610
+ "pipelineAnalytics.getStorageMigrationMoveStatus": {
30611
+ capName: "pipeline-analytics",
30612
+ capScope: "device",
30613
+ addonId: null,
30614
+ access: "view"
30615
+ },
30439
30616
  "pipelineAnalytics.getTrack": {
30440
30617
  capName: "pipeline-analytics",
30441
30618
  capScope: "device",
@@ -30514,6 +30691,12 @@ Object.freeze({
30514
30691
  addonId: null,
30515
30692
  access: "view"
30516
30693
  },
30694
+ "pipelineAnalytics.pauseForStorageMigration": {
30695
+ capName: "pipeline-analytics",
30696
+ capScope: "device",
30697
+ addonId: null,
30698
+ access: "create"
30699
+ },
30517
30700
  "pipelineAnalytics.proposeRetrainAnnotations": {
30518
30701
  capName: "pipeline-analytics",
30519
30702
  capScope: "device",
@@ -30544,7 +30727,7 @@ Object.freeze({
30544
30727
  addonId: null,
30545
30728
  access: "create"
30546
30729
  },
30547
- "pipelineAnalytics.relocateMedia": {
30730
+ "pipelineAnalytics.refreshStorageLocationsForMigration": {
30548
30731
  capName: "pipeline-analytics",
30549
30732
  capScope: "device",
30550
30733
  addonId: null,
@@ -30556,6 +30739,12 @@ Object.freeze({
30556
30739
  addonId: null,
30557
30740
  access: "create"
30558
30741
  },
30742
+ "pipelineAnalytics.resumeForStorageMigration": {
30743
+ capName: "pipeline-analytics",
30744
+ capScope: "device",
30745
+ addonId: null,
30746
+ access: "create"
30747
+ },
30559
30748
  "pipelineAnalytics.saveRetrainAnnotations": {
30560
30749
  capName: "pipeline-analytics",
30561
30750
  capScope: "device",
@@ -30580,6 +30769,12 @@ Object.freeze({
30580
30769
  addonId: null,
30581
30770
  access: "create"
30582
30771
  },
30772
+ "pipelineAnalytics.startStorageMigrationMove": {
30773
+ capName: "pipeline-analytics",
30774
+ capScope: "device",
30775
+ addonId: null,
30776
+ access: "create"
30777
+ },
30583
30778
  "pipelineAnalytics.wipeAllAnalytics": {
30584
30779
  capName: "pipeline-analytics",
30585
30780
  capScope: "device",
@@ -30946,6 +31141,12 @@ Object.freeze({
30946
31141
  addonId: null,
30947
31142
  access: "view"
30948
31143
  },
31144
+ "pipelineOrchestrator.pauseForStorageMigration": {
31145
+ capName: "pipeline-orchestrator",
31146
+ capScope: "system",
31147
+ addonId: null,
31148
+ access: "create"
31149
+ },
30949
31150
  "pipelineOrchestrator.rebalance": {
30950
31151
  capName: "pipeline-orchestrator",
30951
31152
  capScope: "system",
@@ -30970,6 +31171,12 @@ Object.freeze({
30970
31171
  addonId: null,
30971
31172
  access: "view"
30972
31173
  },
31174
+ "pipelineOrchestrator.resumeForStorageMigration": {
31175
+ capName: "pipeline-orchestrator",
31176
+ capScope: "system",
31177
+ addonId: null,
31178
+ access: "create"
31179
+ },
30973
31180
  "pipelineOrchestrator.saveTemplate": {
30974
31181
  capName: "pipeline-orchestrator",
30975
31182
  capScope: "system",
@@ -31366,7 +31573,7 @@ Object.freeze({
31366
31573
  addonId: null,
31367
31574
  access: "create"
31368
31575
  },
31369
- "recording.cancelRelocate": {
31576
+ "recording.cancelStorageMigrationMove": {
31370
31577
  capName: "recording",
31371
31578
  capScope: "system",
31372
31579
  addonId: null,
@@ -31402,7 +31609,7 @@ Object.freeze({
31402
31609
  addonId: null,
31403
31610
  access: "view"
31404
31611
  },
31405
- "recording.getRelocateStatus": {
31612
+ "recording.getStorageMigrationMoveStatus": {
31406
31613
  capName: "recording",
31407
31614
  capScope: "system",
31408
31615
  addonId: null,
@@ -31426,6 +31633,12 @@ Object.freeze({
31426
31633
  addonId: null,
31427
31634
  access: "view"
31428
31635
  },
31636
+ "recording.pauseForStorageMigration": {
31637
+ capName: "recording",
31638
+ capScope: "system",
31639
+ addonId: null,
31640
+ access: "create"
31641
+ },
31429
31642
  "recording.pruneFootage": {
31430
31643
  capName: "recording",
31431
31644
  capScope: "system",
@@ -31444,7 +31657,7 @@ Object.freeze({
31444
31657
  addonId: null,
31445
31658
  access: "view"
31446
31659
  },
31447
- "recording.relocateFootage": {
31660
+ "recording.refreshStorageLocationsForMigration": {
31448
31661
  capName: "recording",
31449
31662
  capScope: "system",
31450
31663
  addonId: null,
@@ -31468,12 +31681,24 @@ Object.freeze({
31468
31681
  addonId: null,
31469
31682
  access: "create"
31470
31683
  },
31684
+ "recording.resumeForStorageMigration": {
31685
+ capName: "recording",
31686
+ capScope: "system",
31687
+ addonId: null,
31688
+ access: "create"
31689
+ },
31471
31690
  "recording.setDeviceConfig": {
31472
31691
  capName: "recording",
31473
31692
  capScope: "system",
31474
31693
  addonId: null,
31475
31694
  access: "create"
31476
31695
  },
31696
+ "recording.startStorageMigrationMove": {
31697
+ capName: "recording",
31698
+ capScope: "system",
31699
+ addonId: null,
31700
+ access: "create"
31701
+ },
31477
31702
  "recordingExport.cancelExport": {
31478
31703
  capName: "recordingExport",
31479
31704
  capScope: "system",
@@ -31864,6 +32089,30 @@ Object.freeze({
31864
32089
  addonId: null,
31865
32090
  access: "view"
31866
32091
  },
32092
+ "storageMigration.cancel": {
32093
+ capName: "storage-migration",
32094
+ capScope: "system",
32095
+ addonId: null,
32096
+ access: "create"
32097
+ },
32098
+ "storageMigration.plan": {
32099
+ capName: "storage-migration",
32100
+ capScope: "system",
32101
+ addonId: null,
32102
+ access: "view"
32103
+ },
32104
+ "storageMigration.start": {
32105
+ capName: "storage-migration",
32106
+ capScope: "system",
32107
+ addonId: null,
32108
+ access: "create"
32109
+ },
32110
+ "storageMigration.status": {
32111
+ capName: "storage-migration",
32112
+ capScope: "system",
32113
+ addonId: null,
32114
+ access: "view"
32115
+ },
31867
32116
  "storageProvider.abortUpload": {
31868
32117
  capName: "storage-provider",
31869
32118
  capScope: "system",
@@ -32242,12 +32491,42 @@ Object.freeze({
32242
32491
  addonId: null,
32243
32492
  access: "create"
32244
32493
  },
32494
+ "terminalSession.adoptLegacyMonitor": {
32495
+ capName: "terminal-session",
32496
+ capScope: "system",
32497
+ addonId: null,
32498
+ access: "create"
32499
+ },
32245
32500
  "terminalSession.close": {
32246
32501
  capName: "terminal-session",
32247
32502
  capScope: "system",
32248
32503
  addonId: null,
32249
32504
  access: "create"
32250
32505
  },
32506
+ "terminalSession.createInstance": {
32507
+ capName: "terminal-session",
32508
+ capScope: "system",
32509
+ addonId: null,
32510
+ access: "create"
32511
+ },
32512
+ "terminalSession.deleteInstance": {
32513
+ capName: "terminal-session",
32514
+ capScope: "system",
32515
+ addonId: null,
32516
+ access: "delete"
32517
+ },
32518
+ "terminalSession.listInstances": {
32519
+ capName: "terminal-session",
32520
+ capScope: "system",
32521
+ addonId: null,
32522
+ access: "view"
32523
+ },
32524
+ "terminalSession.listLegacyCameras": {
32525
+ capName: "terminal-session",
32526
+ capScope: "system",
32527
+ addonId: null,
32528
+ access: "view"
32529
+ },
32251
32530
  "terminalSession.listProfiles": {
32252
32531
  capName: "terminal-session",
32253
32532
  capScope: "system",
@@ -32278,6 +32557,12 @@ Object.freeze({
32278
32557
  addonId: null,
32279
32558
  access: "create"
32280
32559
  },
32560
+ "terminalSession.setInstanceEnabled": {
32561
+ capName: "terminal-session",
32562
+ capScope: "system",
32563
+ addonId: null,
32564
+ access: "create"
32565
+ },
32281
32566
  "terminalSession.writeInput": {
32282
32567
  capName: "terminal-session",
32283
32568
  capScope: "system",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-provider-dreo",
3
- "version": "0.2.12",
3
+ "version": "0.2.13",
4
4
  "description": "Dreo smart-device (fan / air-circulator / purifier / heater / humidifier) device-provider addon for CamStack — wraps the @apocaliss92/nodedreo Dreo cloud client (REST + WebSocket)",
5
5
  "keywords": [
6
6
  "camstack",