@camstack/addon-provider-homematic 1.2.13 → 1.2.14

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
@@ -7574,12 +7574,11 @@ var RecordingConfigSchema = object({
7574
7574
  /**
7575
7575
  * Entity-relocation job state (storage entity-routing spec, Phase 4).
7576
7576
  *
7577
- * One shape shared by the recorder's `relocateFootage` (segments) and
7578
- * pipeline-analytics' `relocateMedia` (event media blobs) so the admin Data
7579
- * page renders both movers with one component. Jobs are in-RAM (a restart
7580
- * forgets them — re-running is safe by construction: copy-if-absent, delete
7581
- * after verify) and each completed/failed run also lands one durable ops-log
7582
- * row on the owning addon's surface.
7577
+ * One shape shared by the recorder and pipeline-analytics internal movers.
7578
+ * The public admin surface is `storage-migration`; child jobs remain in RAM
7579
+ * because copy-if-absent, verify, delete and index/row repoint are resumable.
7580
+ * Each completed/failed run also lands one durable ops-log row on its owning
7581
+ * addon surface.
7583
7582
  */
7584
7583
  var RelocateJobStateSchema = _enum([
7585
7584
  "running",
@@ -7606,19 +7605,100 @@ var RelocateJobSchema = object({
7606
7605
  finishedAt: number().nullable(),
7607
7606
  error: string().nullable()
7608
7607
  });
7608
+ /** Profile-derived footage selection used only by the migration coordinator:
7609
+ * `recordings` owns high+mid; `recordingsLow` owns low. */
7610
+ var RelocateFootageClassSchema = _enum(["recordings", "recordingsLow"]);
7609
7611
  var RelocateFootageInputSchema = object({
7610
- deviceId: number().optional(),
7611
7612
  fromLocationId: string(),
7612
7613
  toLocationId: string(),
7613
7614
  entities: array(_enum(["segments"])).optional(),
7615
+ /** Limits relocation to the logical profile class. Omit only for the
7616
+ * pre-orchestration compatibility path. */
7617
+ footageClass: RelocateFootageClassSchema.optional(),
7614
7618
  /** Copy throttle in MB/s (default 40) — the drain is a background chore,
7615
7619
  * never allowed to starve live writers. */
7616
7620
  throttleMbps: number().min(1).max(1e3).optional()
7617
7621
  });
7618
- var RelocateMediaInputSchema = object({
7619
- deviceId: number().optional(),
7622
+ /** Internal, lease-scoped participant operation. It is intentionally separate
7623
+ * from persistent recording settings: a migration never changes
7624
+ * `RecordingConfig.enabled` or camera wrapper bindings. */
7625
+ var StorageMigrationLeaseInputSchema = object({ leaseId: string().min(1) });
7626
+ var StorageMigrationFootageMoveInputSchema = RelocateFootageInputSchema.extend({ leaseId: string().min(1) });
7627
+ var StorageMigrationMediaMoveInputSchema = object({
7620
7628
  toLocationId: string(),
7621
7629
  throttleMbps: number().min(1).max(1e3).optional()
7630
+ }).extend({ leaseId: string().min(1) });
7631
+ /** The independently selectable logical storage classes. `recordings`
7632
+ * encompasses the high and mid segment profiles; `recordingsLow` is low
7633
+ * segments; `eventMedia` is post-analysis blobs. */
7634
+ var StorageMigrationClassSchema = _enum([
7635
+ "recordings",
7636
+ "recordingsLow",
7637
+ "eventMedia"
7638
+ ]);
7639
+ /** A destination is always an existing, fully-qualified location id. The
7640
+ * migration API intentionally never changes a source location's `basePath`:
7641
+ * callers create a new `<type>:<slug>` location, then select it here. */
7642
+ var StorageMigrationDestinationsSchema = object({
7643
+ recordings: string().min(1).optional(),
7644
+ recordingsLow: string().min(1).optional(),
7645
+ eventMedia: string().min(1).optional()
7646
+ }).refine((value) => Object.keys(value).length > 0, { message: "select at least one storage class" });
7647
+ /** Shared input for planning and starting an orchestrated storage migration. */
7648
+ var StorageMigrationInputSchema = object({
7649
+ destinations: StorageMigrationDestinationsSchema,
7650
+ throttleMbps: number().min(1).max(1e3).optional()
7651
+ });
7652
+ /** The durable coordinator state machine. The only phase that changes default
7653
+ * locations is `repointing`, after every selected mover has completed and been
7654
+ * verified. */
7655
+ var StorageMigrationPhaseSchema = _enum([
7656
+ "planning",
7657
+ "pausing",
7658
+ "moving",
7659
+ "verifying",
7660
+ "repointing",
7661
+ "refreshing",
7662
+ "resuming",
7663
+ "done",
7664
+ "failed",
7665
+ "cancelled"
7666
+ ]);
7667
+ var StorageMigrationParticipantSchema = _enum([
7668
+ "pipeline",
7669
+ "recorder",
7670
+ "analytics"
7671
+ ]);
7672
+ var StorageMigrationMoveSchema = object({
7673
+ storageClass: StorageMigrationClassSchema,
7674
+ fromLocationId: string(),
7675
+ toLocationId: string(),
7676
+ moverJobId: string().nullable(),
7677
+ state: RelocateJobStateSchema.nullable(),
7678
+ error: string().nullable()
7679
+ });
7680
+ var StorageMigrationJobSchema = object({
7681
+ jobId: string(),
7682
+ phase: StorageMigrationPhaseSchema,
7683
+ destinations: StorageMigrationDestinationsSchema,
7684
+ throttleMbps: number(),
7685
+ moves: array(StorageMigrationMoveSchema),
7686
+ pauseLeaseId: string().nullable(),
7687
+ pausedParticipants: array(StorageMigrationParticipantSchema),
7688
+ repointed: boolean(),
7689
+ cancelRequested: boolean(),
7690
+ startedAt: number(),
7691
+ updatedAt: number(),
7692
+ finishedAt: number().nullable(),
7693
+ error: string().nullable()
7694
+ });
7695
+ var StorageMigrationPlanSchema = object({
7696
+ destinations: StorageMigrationDestinationsSchema,
7697
+ moves: array(object({
7698
+ storageClass: StorageMigrationClassSchema,
7699
+ fromLocationId: string(),
7700
+ toLocationId: string()
7701
+ }))
7622
7702
  });
7623
7703
  /**
7624
7704
  * `StorageLocationType` — an addon-declared id that identifies the *kind* of
@@ -16338,13 +16418,19 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
16338
16418
  }), method(object({ deviceId: number() }), EventPruneCountsSchema, {
16339
16419
  kind: "mutation",
16340
16420
  auth: "admin"
16341
- }), method(RelocateMediaInputSchema, object({ jobId: string() }), {
16421
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
16342
16422
  kind: "mutation",
16343
16423
  auth: "admin"
16344
- }), method(object({}), array(RelocateJobSchema).readonly(), {
16345
- kind: "query",
16424
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
16425
+ kind: "mutation",
16426
+ auth: "admin"
16427
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
16428
+ kind: "mutation",
16429
+ auth: "admin"
16430
+ }), method(StorageMigrationMediaMoveInputSchema, object({ jobId: string() }), {
16431
+ kind: "mutation",
16346
16432
  auth: "admin"
16347
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
16433
+ }), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
16348
16434
  kind: "mutation",
16349
16435
  auth: "admin"
16350
16436
  }), method(OpsLogQueryInputSchema, array(OpsLogEntrySchema).readonly(), {
@@ -17874,7 +17960,13 @@ var NodeInferenceDevicesSchema = object({
17874
17960
  reachable: boolean(),
17875
17961
  devices: array(NodeInferenceDeviceSchema).readonly()
17876
17962
  });
17877
- method(object({
17963
+ method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
17964
+ kind: "mutation",
17965
+ auth: "admin"
17966
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
17967
+ kind: "mutation",
17968
+ auth: "admin"
17969
+ }), method(object({
17878
17970
  deviceId: number(),
17879
17971
  agentNodeId: string()
17880
17972
  }), object({ success: literal(true) }), {
@@ -18548,6 +18640,13 @@ method(object({ locationId: string() }), EvictableUsageSchema), method(object({
18548
18640
  locationId: string(),
18549
18641
  targetBytes: number().int().positive()
18550
18642
  }), EvictResultSchema, { kind: "mutation" });
18643
+ method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin" }), method(StorageMigrationInputSchema, object({ jobId: string() }), {
18644
+ kind: "mutation",
18645
+ auth: "admin"
18646
+ }), method(object({ jobId: string().optional() }), StorageMigrationJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
18647
+ kind: "mutation",
18648
+ auth: "admin"
18649
+ });
18551
18650
  var ProviderInfoSchema = discriminatedUnion("shouldSaveDiskSpace", [object({
18552
18651
  providerId: string().min(1),
18553
18652
  displayName: string().min(1),
@@ -18651,6 +18750,28 @@ var TerminalProfileInfoSchema = object({
18651
18750
  label: string(),
18652
18751
  description: string().optional()
18653
18752
  });
18753
+ /**
18754
+ * A durable operator-created Terminal instance. Profiles are templates; only
18755
+ * an instance declares a camera.
18756
+ */
18757
+ var TerminalInstanceInfoSchema = object({
18758
+ instanceId: string(),
18759
+ cameraStableId: string(),
18760
+ nodeId: string(),
18761
+ profileId: string(),
18762
+ profileLabel: string(),
18763
+ name: string(),
18764
+ enabled: boolean()
18765
+ });
18766
+ var TerminalLegacyCameraSchema = object({
18767
+ stableId: string(),
18768
+ nodeId: string(),
18769
+ profileId: string(),
18770
+ profileLabel: string(),
18771
+ name: string(),
18772
+ /** Only legacy monitor cameras can retain their historic stable identity. */
18773
+ adoptable: boolean()
18774
+ });
18654
18775
  var TerminalOutputEventSchema = discriminatedUnion("kind", [object({
18655
18776
  seq: number().int().positive(),
18656
18777
  kind: literal("data"),
@@ -18667,7 +18788,29 @@ var TerminalOutputBatchSchema = object({
18667
18788
  snapshot: string().optional(),
18668
18789
  events: array(TerminalOutputEventSchema).readonly()
18669
18790
  });
18670
- method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
18791
+ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalInstanceInfoSchema).readonly(), { auth: "admin" }), method(object({
18792
+ targetNodeId: string().min(1),
18793
+ profileId: string().min(1),
18794
+ name: string().trim().min(1).max(160).optional()
18795
+ }), TerminalInstanceInfoSchema, {
18796
+ kind: "mutation",
18797
+ auth: "admin"
18798
+ }), method(object({ instanceId: string().min(1) }), _void(), {
18799
+ kind: "mutation",
18800
+ auth: "admin"
18801
+ }), method(object({
18802
+ instanceId: string().min(1),
18803
+ enabled: boolean()
18804
+ }), TerminalInstanceInfoSchema, {
18805
+ kind: "mutation",
18806
+ auth: "admin"
18807
+ }), method(_void(), array(TerminalLegacyCameraSchema).readonly(), { auth: "admin" }), method(object({
18808
+ stableId: string().min(1),
18809
+ name: string().trim().min(1).max(160).optional()
18810
+ }), TerminalInstanceInfoSchema, {
18811
+ kind: "mutation",
18812
+ auth: "admin"
18813
+ }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
18671
18814
  profileId: string(),
18672
18815
  cols: number().int().positive(),
18673
18816
  rows: number().int().positive()
@@ -18684,7 +18827,13 @@ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }),
18684
18827
  }), method(object({
18685
18828
  sessionId: string(),
18686
18829
  afterSeq: number().int().nonnegative(),
18687
- waitMs: number().int().min(0).max(2e3).default(0)
18830
+ waitMs: number().int().min(0).max(2e3).default(0),
18831
+ /**
18832
+ * Wait when a just-opened session has no output yet. Kept opt-in so a
18833
+ * browser's initial repaint remains immediate; the camera snapshot
18834
+ * relay uses it to avoid encoding a blank startup frame.
18835
+ */
18836
+ waitForOutput: boolean().optional()
18688
18837
  }), TerminalOutputBatchSchema, {
18689
18838
  kind: "mutation",
18690
18839
  auth: "admin",
@@ -21182,6 +21331,7 @@ var FaceInfoSchema = object({
21182
21331
  var FaceFilterEnum = _enum([
21183
21332
  "unassigned",
21184
21333
  "recognized",
21334
+ "identified",
21185
21335
  "all"
21186
21336
  ]);
21187
21337
  var MediaFileLiteSchema$1 = object({
@@ -21210,6 +21360,8 @@ method(_void(), array(IdentitySchema).readonly()), method(object({ name: string(
21210
21360
  kind: "mutation",
21211
21361
  auth: "admin"
21212
21362
  }), method(object({
21363
+ /** Restrict to one camera. Absent keeps the cluster-wide gallery view. */
21364
+ deviceId: number().int().optional(),
21213
21365
  limit: number().int().positive().optional(),
21214
21366
  filter: FaceFilterEnum.optional(),
21215
21367
  /**
@@ -23439,6 +23591,10 @@ var OsdSourceSchema = discriminatedUnion("kind", [
23439
23591
  capName: string().min(1).max(64),
23440
23592
  /** Dot path inside the slice, e.g. `detected`, `value`, `mode`. */
23441
23593
  valuePath: string().min(1).max(64)
23594
+ }),
23595
+ object({
23596
+ kind: literal("latest-recognition"),
23597
+ recognition: _enum(["person", "plate"])
23442
23598
  })
23443
23599
  ]);
23444
23600
  var OsdSlotBindingSchema = object({
@@ -23544,6 +23700,15 @@ method(object({ deviceId: number().int() }), object({
23544
23700
  }), object({ success: literal(true) }), {
23545
23701
  kind: "mutation",
23546
23702
  auth: "admin"
23703
+ }), method(object({
23704
+ sourceDeviceId: number().int(),
23705
+ targetDeviceId: number().int()
23706
+ }), object({
23707
+ copied: number().int().nonnegative(),
23708
+ skipped: number().int().nonnegative()
23709
+ }), {
23710
+ kind: "mutation",
23711
+ auth: "admin"
23547
23712
  }), method(object({
23548
23713
  deviceId: number().int(),
23549
23714
  slotId: string().min(1),
@@ -24641,13 +24806,19 @@ method(object({
24641
24806
  }), {
24642
24807
  kind: "mutation",
24643
24808
  auth: "admin"
24644
- }), method(RelocateFootageInputSchema, object({ jobId: string() }), {
24809
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
24645
24810
  kind: "mutation",
24646
24811
  auth: "admin"
24647
- }), method(object({}), array(RelocateJobSchema).readonly(), {
24648
- kind: "query",
24812
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
24813
+ kind: "mutation",
24649
24814
  auth: "admin"
24650
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
24815
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
24816
+ kind: "mutation",
24817
+ auth: "admin"
24818
+ }), method(StorageMigrationFootageMoveInputSchema, object({ jobId: string() }), {
24819
+ kind: "mutation",
24820
+ auth: "admin"
24821
+ }), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
24651
24822
  kind: "mutation",
24652
24823
  auth: "admin"
24653
24824
  });
@@ -30253,6 +30424,12 @@ Object.freeze({
30253
30424
  addonId: null,
30254
30425
  access: "delete"
30255
30426
  },
30427
+ "osdManager.copyDeviceConfiguration": {
30428
+ capName: "osd-manager",
30429
+ capScope: "system",
30430
+ addonId: null,
30431
+ access: "create"
30432
+ },
30256
30433
  "osdManager.getConditionSupport": {
30257
30434
  capName: "osd-manager",
30258
30435
  capScope: "system",
@@ -30349,7 +30526,7 @@ Object.freeze({
30349
30526
  addonId: null,
30350
30527
  access: "create"
30351
30528
  },
30352
- "pipelineAnalytics.cancelMediaRelocate": {
30529
+ "pipelineAnalytics.cancelStorageMigrationMove": {
30353
30530
  capName: "pipeline-analytics",
30354
30531
  capScope: "device",
30355
30532
  addonId: null,
@@ -30421,12 +30598,6 @@ Object.freeze({
30421
30598
  addonId: null,
30422
30599
  access: "view"
30423
30600
  },
30424
- "pipelineAnalytics.getMediaRelocateStatus": {
30425
- capName: "pipeline-analytics",
30426
- capScope: "device",
30427
- addonId: null,
30428
- access: "view"
30429
- },
30430
30601
  "pipelineAnalytics.getMotionEvents": {
30431
30602
  capName: "pipeline-analytics",
30432
30603
  capScope: "device",
@@ -30463,6 +30634,12 @@ Object.freeze({
30463
30634
  addonId: null,
30464
30635
  access: "view"
30465
30636
  },
30637
+ "pipelineAnalytics.getStorageMigrationMoveStatus": {
30638
+ capName: "pipeline-analytics",
30639
+ capScope: "device",
30640
+ addonId: null,
30641
+ access: "view"
30642
+ },
30466
30643
  "pipelineAnalytics.getTrack": {
30467
30644
  capName: "pipeline-analytics",
30468
30645
  capScope: "device",
@@ -30541,6 +30718,12 @@ Object.freeze({
30541
30718
  addonId: null,
30542
30719
  access: "view"
30543
30720
  },
30721
+ "pipelineAnalytics.pauseForStorageMigration": {
30722
+ capName: "pipeline-analytics",
30723
+ capScope: "device",
30724
+ addonId: null,
30725
+ access: "create"
30726
+ },
30544
30727
  "pipelineAnalytics.proposeRetrainAnnotations": {
30545
30728
  capName: "pipeline-analytics",
30546
30729
  capScope: "device",
@@ -30571,7 +30754,7 @@ Object.freeze({
30571
30754
  addonId: null,
30572
30755
  access: "create"
30573
30756
  },
30574
- "pipelineAnalytics.relocateMedia": {
30757
+ "pipelineAnalytics.refreshStorageLocationsForMigration": {
30575
30758
  capName: "pipeline-analytics",
30576
30759
  capScope: "device",
30577
30760
  addonId: null,
@@ -30583,6 +30766,12 @@ Object.freeze({
30583
30766
  addonId: null,
30584
30767
  access: "create"
30585
30768
  },
30769
+ "pipelineAnalytics.resumeForStorageMigration": {
30770
+ capName: "pipeline-analytics",
30771
+ capScope: "device",
30772
+ addonId: null,
30773
+ access: "create"
30774
+ },
30586
30775
  "pipelineAnalytics.saveRetrainAnnotations": {
30587
30776
  capName: "pipeline-analytics",
30588
30777
  capScope: "device",
@@ -30607,6 +30796,12 @@ Object.freeze({
30607
30796
  addonId: null,
30608
30797
  access: "create"
30609
30798
  },
30799
+ "pipelineAnalytics.startStorageMigrationMove": {
30800
+ capName: "pipeline-analytics",
30801
+ capScope: "device",
30802
+ addonId: null,
30803
+ access: "create"
30804
+ },
30610
30805
  "pipelineAnalytics.wipeAllAnalytics": {
30611
30806
  capName: "pipeline-analytics",
30612
30807
  capScope: "device",
@@ -30973,6 +31168,12 @@ Object.freeze({
30973
31168
  addonId: null,
30974
31169
  access: "view"
30975
31170
  },
31171
+ "pipelineOrchestrator.pauseForStorageMigration": {
31172
+ capName: "pipeline-orchestrator",
31173
+ capScope: "system",
31174
+ addonId: null,
31175
+ access: "create"
31176
+ },
30976
31177
  "pipelineOrchestrator.rebalance": {
30977
31178
  capName: "pipeline-orchestrator",
30978
31179
  capScope: "system",
@@ -30997,6 +31198,12 @@ Object.freeze({
30997
31198
  addonId: null,
30998
31199
  access: "view"
30999
31200
  },
31201
+ "pipelineOrchestrator.resumeForStorageMigration": {
31202
+ capName: "pipeline-orchestrator",
31203
+ capScope: "system",
31204
+ addonId: null,
31205
+ access: "create"
31206
+ },
31000
31207
  "pipelineOrchestrator.saveTemplate": {
31001
31208
  capName: "pipeline-orchestrator",
31002
31209
  capScope: "system",
@@ -31393,7 +31600,7 @@ Object.freeze({
31393
31600
  addonId: null,
31394
31601
  access: "create"
31395
31602
  },
31396
- "recording.cancelRelocate": {
31603
+ "recording.cancelStorageMigrationMove": {
31397
31604
  capName: "recording",
31398
31605
  capScope: "system",
31399
31606
  addonId: null,
@@ -31429,7 +31636,7 @@ Object.freeze({
31429
31636
  addonId: null,
31430
31637
  access: "view"
31431
31638
  },
31432
- "recording.getRelocateStatus": {
31639
+ "recording.getStorageMigrationMoveStatus": {
31433
31640
  capName: "recording",
31434
31641
  capScope: "system",
31435
31642
  addonId: null,
@@ -31453,6 +31660,12 @@ Object.freeze({
31453
31660
  addonId: null,
31454
31661
  access: "view"
31455
31662
  },
31663
+ "recording.pauseForStorageMigration": {
31664
+ capName: "recording",
31665
+ capScope: "system",
31666
+ addonId: null,
31667
+ access: "create"
31668
+ },
31456
31669
  "recording.pruneFootage": {
31457
31670
  capName: "recording",
31458
31671
  capScope: "system",
@@ -31471,7 +31684,7 @@ Object.freeze({
31471
31684
  addonId: null,
31472
31685
  access: "view"
31473
31686
  },
31474
- "recording.relocateFootage": {
31687
+ "recording.refreshStorageLocationsForMigration": {
31475
31688
  capName: "recording",
31476
31689
  capScope: "system",
31477
31690
  addonId: null,
@@ -31495,12 +31708,24 @@ Object.freeze({
31495
31708
  addonId: null,
31496
31709
  access: "create"
31497
31710
  },
31711
+ "recording.resumeForStorageMigration": {
31712
+ capName: "recording",
31713
+ capScope: "system",
31714
+ addonId: null,
31715
+ access: "create"
31716
+ },
31498
31717
  "recording.setDeviceConfig": {
31499
31718
  capName: "recording",
31500
31719
  capScope: "system",
31501
31720
  addonId: null,
31502
31721
  access: "create"
31503
31722
  },
31723
+ "recording.startStorageMigrationMove": {
31724
+ capName: "recording",
31725
+ capScope: "system",
31726
+ addonId: null,
31727
+ access: "create"
31728
+ },
31504
31729
  "recordingExport.cancelExport": {
31505
31730
  capName: "recordingExport",
31506
31731
  capScope: "system",
@@ -31891,6 +32116,30 @@ Object.freeze({
31891
32116
  addonId: null,
31892
32117
  access: "view"
31893
32118
  },
32119
+ "storageMigration.cancel": {
32120
+ capName: "storage-migration",
32121
+ capScope: "system",
32122
+ addonId: null,
32123
+ access: "create"
32124
+ },
32125
+ "storageMigration.plan": {
32126
+ capName: "storage-migration",
32127
+ capScope: "system",
32128
+ addonId: null,
32129
+ access: "view"
32130
+ },
32131
+ "storageMigration.start": {
32132
+ capName: "storage-migration",
32133
+ capScope: "system",
32134
+ addonId: null,
32135
+ access: "create"
32136
+ },
32137
+ "storageMigration.status": {
32138
+ capName: "storage-migration",
32139
+ capScope: "system",
32140
+ addonId: null,
32141
+ access: "view"
32142
+ },
31894
32143
  "storageProvider.abortUpload": {
31895
32144
  capName: "storage-provider",
31896
32145
  capScope: "system",
@@ -32269,12 +32518,42 @@ Object.freeze({
32269
32518
  addonId: null,
32270
32519
  access: "create"
32271
32520
  },
32521
+ "terminalSession.adoptLegacyMonitor": {
32522
+ capName: "terminal-session",
32523
+ capScope: "system",
32524
+ addonId: null,
32525
+ access: "create"
32526
+ },
32272
32527
  "terminalSession.close": {
32273
32528
  capName: "terminal-session",
32274
32529
  capScope: "system",
32275
32530
  addonId: null,
32276
32531
  access: "create"
32277
32532
  },
32533
+ "terminalSession.createInstance": {
32534
+ capName: "terminal-session",
32535
+ capScope: "system",
32536
+ addonId: null,
32537
+ access: "create"
32538
+ },
32539
+ "terminalSession.deleteInstance": {
32540
+ capName: "terminal-session",
32541
+ capScope: "system",
32542
+ addonId: null,
32543
+ access: "delete"
32544
+ },
32545
+ "terminalSession.listInstances": {
32546
+ capName: "terminal-session",
32547
+ capScope: "system",
32548
+ addonId: null,
32549
+ access: "view"
32550
+ },
32551
+ "terminalSession.listLegacyCameras": {
32552
+ capName: "terminal-session",
32553
+ capScope: "system",
32554
+ addonId: null,
32555
+ access: "view"
32556
+ },
32278
32557
  "terminalSession.listProfiles": {
32279
32558
  capName: "terminal-session",
32280
32559
  capScope: "system",
@@ -32305,6 +32584,12 @@ Object.freeze({
32305
32584
  addonId: null,
32306
32585
  access: "create"
32307
32586
  },
32587
+ "terminalSession.setInstanceEnabled": {
32588
+ capName: "terminal-session",
32589
+ capScope: "system",
32590
+ addonId: null,
32591
+ access: "create"
32592
+ },
32308
32593
  "terminalSession.writeInput": {
32309
32594
  capName: "terminal-session",
32310
32595
  capScope: "system",
package/dist/addon.mjs CHANGED
@@ -7575,12 +7575,11 @@ var RecordingConfigSchema = object({
7575
7575
  /**
7576
7576
  * Entity-relocation job state (storage entity-routing spec, Phase 4).
7577
7577
  *
7578
- * One shape shared by the recorder's `relocateFootage` (segments) and
7579
- * pipeline-analytics' `relocateMedia` (event media blobs) so the admin Data
7580
- * page renders both movers with one component. Jobs are in-RAM (a restart
7581
- * forgets them — re-running is safe by construction: copy-if-absent, delete
7582
- * after verify) and each completed/failed run also lands one durable ops-log
7583
- * row on the owning addon's surface.
7578
+ * One shape shared by the recorder and pipeline-analytics internal movers.
7579
+ * The public admin surface is `storage-migration`; child jobs remain in RAM
7580
+ * because copy-if-absent, verify, delete and index/row repoint are resumable.
7581
+ * Each completed/failed run also lands one durable ops-log row on its owning
7582
+ * addon surface.
7584
7583
  */
7585
7584
  var RelocateJobStateSchema = _enum([
7586
7585
  "running",
@@ -7607,19 +7606,100 @@ var RelocateJobSchema = object({
7607
7606
  finishedAt: number().nullable(),
7608
7607
  error: string().nullable()
7609
7608
  });
7609
+ /** Profile-derived footage selection used only by the migration coordinator:
7610
+ * `recordings` owns high+mid; `recordingsLow` owns low. */
7611
+ var RelocateFootageClassSchema = _enum(["recordings", "recordingsLow"]);
7610
7612
  var RelocateFootageInputSchema = object({
7611
- deviceId: number().optional(),
7612
7613
  fromLocationId: string(),
7613
7614
  toLocationId: string(),
7614
7615
  entities: array(_enum(["segments"])).optional(),
7616
+ /** Limits relocation to the logical profile class. Omit only for the
7617
+ * pre-orchestration compatibility path. */
7618
+ footageClass: RelocateFootageClassSchema.optional(),
7615
7619
  /** Copy throttle in MB/s (default 40) — the drain is a background chore,
7616
7620
  * never allowed to starve live writers. */
7617
7621
  throttleMbps: number().min(1).max(1e3).optional()
7618
7622
  });
7619
- var RelocateMediaInputSchema = object({
7620
- deviceId: number().optional(),
7623
+ /** Internal, lease-scoped participant operation. It is intentionally separate
7624
+ * from persistent recording settings: a migration never changes
7625
+ * `RecordingConfig.enabled` or camera wrapper bindings. */
7626
+ var StorageMigrationLeaseInputSchema = object({ leaseId: string().min(1) });
7627
+ var StorageMigrationFootageMoveInputSchema = RelocateFootageInputSchema.extend({ leaseId: string().min(1) });
7628
+ var StorageMigrationMediaMoveInputSchema = object({
7621
7629
  toLocationId: string(),
7622
7630
  throttleMbps: number().min(1).max(1e3).optional()
7631
+ }).extend({ leaseId: string().min(1) });
7632
+ /** The independently selectable logical storage classes. `recordings`
7633
+ * encompasses the high and mid segment profiles; `recordingsLow` is low
7634
+ * segments; `eventMedia` is post-analysis blobs. */
7635
+ var StorageMigrationClassSchema = _enum([
7636
+ "recordings",
7637
+ "recordingsLow",
7638
+ "eventMedia"
7639
+ ]);
7640
+ /** A destination is always an existing, fully-qualified location id. The
7641
+ * migration API intentionally never changes a source location's `basePath`:
7642
+ * callers create a new `<type>:<slug>` location, then select it here. */
7643
+ var StorageMigrationDestinationsSchema = object({
7644
+ recordings: string().min(1).optional(),
7645
+ recordingsLow: string().min(1).optional(),
7646
+ eventMedia: string().min(1).optional()
7647
+ }).refine((value) => Object.keys(value).length > 0, { message: "select at least one storage class" });
7648
+ /** Shared input for planning and starting an orchestrated storage migration. */
7649
+ var StorageMigrationInputSchema = object({
7650
+ destinations: StorageMigrationDestinationsSchema,
7651
+ throttleMbps: number().min(1).max(1e3).optional()
7652
+ });
7653
+ /** The durable coordinator state machine. The only phase that changes default
7654
+ * locations is `repointing`, after every selected mover has completed and been
7655
+ * verified. */
7656
+ var StorageMigrationPhaseSchema = _enum([
7657
+ "planning",
7658
+ "pausing",
7659
+ "moving",
7660
+ "verifying",
7661
+ "repointing",
7662
+ "refreshing",
7663
+ "resuming",
7664
+ "done",
7665
+ "failed",
7666
+ "cancelled"
7667
+ ]);
7668
+ var StorageMigrationParticipantSchema = _enum([
7669
+ "pipeline",
7670
+ "recorder",
7671
+ "analytics"
7672
+ ]);
7673
+ var StorageMigrationMoveSchema = object({
7674
+ storageClass: StorageMigrationClassSchema,
7675
+ fromLocationId: string(),
7676
+ toLocationId: string(),
7677
+ moverJobId: string().nullable(),
7678
+ state: RelocateJobStateSchema.nullable(),
7679
+ error: string().nullable()
7680
+ });
7681
+ var StorageMigrationJobSchema = object({
7682
+ jobId: string(),
7683
+ phase: StorageMigrationPhaseSchema,
7684
+ destinations: StorageMigrationDestinationsSchema,
7685
+ throttleMbps: number(),
7686
+ moves: array(StorageMigrationMoveSchema),
7687
+ pauseLeaseId: string().nullable(),
7688
+ pausedParticipants: array(StorageMigrationParticipantSchema),
7689
+ repointed: boolean(),
7690
+ cancelRequested: boolean(),
7691
+ startedAt: number(),
7692
+ updatedAt: number(),
7693
+ finishedAt: number().nullable(),
7694
+ error: string().nullable()
7695
+ });
7696
+ var StorageMigrationPlanSchema = object({
7697
+ destinations: StorageMigrationDestinationsSchema,
7698
+ moves: array(object({
7699
+ storageClass: StorageMigrationClassSchema,
7700
+ fromLocationId: string(),
7701
+ toLocationId: string()
7702
+ }))
7623
7703
  });
7624
7704
  /**
7625
7705
  * `StorageLocationType` — an addon-declared id that identifies the *kind* of
@@ -16339,13 +16419,19 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
16339
16419
  }), method(object({ deviceId: number() }), EventPruneCountsSchema, {
16340
16420
  kind: "mutation",
16341
16421
  auth: "admin"
16342
- }), method(RelocateMediaInputSchema, object({ jobId: string() }), {
16422
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
16343
16423
  kind: "mutation",
16344
16424
  auth: "admin"
16345
- }), method(object({}), array(RelocateJobSchema).readonly(), {
16346
- kind: "query",
16425
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
16426
+ kind: "mutation",
16427
+ auth: "admin"
16428
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
16429
+ kind: "mutation",
16430
+ auth: "admin"
16431
+ }), method(StorageMigrationMediaMoveInputSchema, object({ jobId: string() }), {
16432
+ kind: "mutation",
16347
16433
  auth: "admin"
16348
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
16434
+ }), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
16349
16435
  kind: "mutation",
16350
16436
  auth: "admin"
16351
16437
  }), method(OpsLogQueryInputSchema, array(OpsLogEntrySchema).readonly(), {
@@ -17875,7 +17961,13 @@ var NodeInferenceDevicesSchema = object({
17875
17961
  reachable: boolean(),
17876
17962
  devices: array(NodeInferenceDeviceSchema).readonly()
17877
17963
  });
17878
- method(object({
17964
+ method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
17965
+ kind: "mutation",
17966
+ auth: "admin"
17967
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
17968
+ kind: "mutation",
17969
+ auth: "admin"
17970
+ }), method(object({
17879
17971
  deviceId: number(),
17880
17972
  agentNodeId: string()
17881
17973
  }), object({ success: literal(true) }), {
@@ -18549,6 +18641,13 @@ method(object({ locationId: string() }), EvictableUsageSchema), method(object({
18549
18641
  locationId: string(),
18550
18642
  targetBytes: number().int().positive()
18551
18643
  }), EvictResultSchema, { kind: "mutation" });
18644
+ method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin" }), method(StorageMigrationInputSchema, object({ jobId: string() }), {
18645
+ kind: "mutation",
18646
+ auth: "admin"
18647
+ }), method(object({ jobId: string().optional() }), StorageMigrationJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
18648
+ kind: "mutation",
18649
+ auth: "admin"
18650
+ });
18552
18651
  var ProviderInfoSchema = discriminatedUnion("shouldSaveDiskSpace", [object({
18553
18652
  providerId: string().min(1),
18554
18653
  displayName: string().min(1),
@@ -18652,6 +18751,28 @@ var TerminalProfileInfoSchema = object({
18652
18751
  label: string(),
18653
18752
  description: string().optional()
18654
18753
  });
18754
+ /**
18755
+ * A durable operator-created Terminal instance. Profiles are templates; only
18756
+ * an instance declares a camera.
18757
+ */
18758
+ var TerminalInstanceInfoSchema = object({
18759
+ instanceId: string(),
18760
+ cameraStableId: string(),
18761
+ nodeId: string(),
18762
+ profileId: string(),
18763
+ profileLabel: string(),
18764
+ name: string(),
18765
+ enabled: boolean()
18766
+ });
18767
+ var TerminalLegacyCameraSchema = object({
18768
+ stableId: string(),
18769
+ nodeId: string(),
18770
+ profileId: string(),
18771
+ profileLabel: string(),
18772
+ name: string(),
18773
+ /** Only legacy monitor cameras can retain their historic stable identity. */
18774
+ adoptable: boolean()
18775
+ });
18655
18776
  var TerminalOutputEventSchema = discriminatedUnion("kind", [object({
18656
18777
  seq: number().int().positive(),
18657
18778
  kind: literal("data"),
@@ -18668,7 +18789,29 @@ var TerminalOutputBatchSchema = object({
18668
18789
  snapshot: string().optional(),
18669
18790
  events: array(TerminalOutputEventSchema).readonly()
18670
18791
  });
18671
- method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
18792
+ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalInstanceInfoSchema).readonly(), { auth: "admin" }), method(object({
18793
+ targetNodeId: string().min(1),
18794
+ profileId: string().min(1),
18795
+ name: string().trim().min(1).max(160).optional()
18796
+ }), TerminalInstanceInfoSchema, {
18797
+ kind: "mutation",
18798
+ auth: "admin"
18799
+ }), method(object({ instanceId: string().min(1) }), _void(), {
18800
+ kind: "mutation",
18801
+ auth: "admin"
18802
+ }), method(object({
18803
+ instanceId: string().min(1),
18804
+ enabled: boolean()
18805
+ }), TerminalInstanceInfoSchema, {
18806
+ kind: "mutation",
18807
+ auth: "admin"
18808
+ }), method(_void(), array(TerminalLegacyCameraSchema).readonly(), { auth: "admin" }), method(object({
18809
+ stableId: string().min(1),
18810
+ name: string().trim().min(1).max(160).optional()
18811
+ }), TerminalInstanceInfoSchema, {
18812
+ kind: "mutation",
18813
+ auth: "admin"
18814
+ }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
18672
18815
  profileId: string(),
18673
18816
  cols: number().int().positive(),
18674
18817
  rows: number().int().positive()
@@ -18685,7 +18828,13 @@ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }),
18685
18828
  }), method(object({
18686
18829
  sessionId: string(),
18687
18830
  afterSeq: number().int().nonnegative(),
18688
- waitMs: number().int().min(0).max(2e3).default(0)
18831
+ waitMs: number().int().min(0).max(2e3).default(0),
18832
+ /**
18833
+ * Wait when a just-opened session has no output yet. Kept opt-in so a
18834
+ * browser's initial repaint remains immediate; the camera snapshot
18835
+ * relay uses it to avoid encoding a blank startup frame.
18836
+ */
18837
+ waitForOutput: boolean().optional()
18689
18838
  }), TerminalOutputBatchSchema, {
18690
18839
  kind: "mutation",
18691
18840
  auth: "admin",
@@ -21183,6 +21332,7 @@ var FaceInfoSchema = object({
21183
21332
  var FaceFilterEnum = _enum([
21184
21333
  "unassigned",
21185
21334
  "recognized",
21335
+ "identified",
21186
21336
  "all"
21187
21337
  ]);
21188
21338
  var MediaFileLiteSchema$1 = object({
@@ -21211,6 +21361,8 @@ method(_void(), array(IdentitySchema).readonly()), method(object({ name: string(
21211
21361
  kind: "mutation",
21212
21362
  auth: "admin"
21213
21363
  }), method(object({
21364
+ /** Restrict to one camera. Absent keeps the cluster-wide gallery view. */
21365
+ deviceId: number().int().optional(),
21214
21366
  limit: number().int().positive().optional(),
21215
21367
  filter: FaceFilterEnum.optional(),
21216
21368
  /**
@@ -23440,6 +23592,10 @@ var OsdSourceSchema = discriminatedUnion("kind", [
23440
23592
  capName: string().min(1).max(64),
23441
23593
  /** Dot path inside the slice, e.g. `detected`, `value`, `mode`. */
23442
23594
  valuePath: string().min(1).max(64)
23595
+ }),
23596
+ object({
23597
+ kind: literal("latest-recognition"),
23598
+ recognition: _enum(["person", "plate"])
23443
23599
  })
23444
23600
  ]);
23445
23601
  var OsdSlotBindingSchema = object({
@@ -23545,6 +23701,15 @@ method(object({ deviceId: number().int() }), object({
23545
23701
  }), object({ success: literal(true) }), {
23546
23702
  kind: "mutation",
23547
23703
  auth: "admin"
23704
+ }), method(object({
23705
+ sourceDeviceId: number().int(),
23706
+ targetDeviceId: number().int()
23707
+ }), object({
23708
+ copied: number().int().nonnegative(),
23709
+ skipped: number().int().nonnegative()
23710
+ }), {
23711
+ kind: "mutation",
23712
+ auth: "admin"
23548
23713
  }), method(object({
23549
23714
  deviceId: number().int(),
23550
23715
  slotId: string().min(1),
@@ -24642,13 +24807,19 @@ method(object({
24642
24807
  }), {
24643
24808
  kind: "mutation",
24644
24809
  auth: "admin"
24645
- }), method(RelocateFootageInputSchema, object({ jobId: string() }), {
24810
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
24646
24811
  kind: "mutation",
24647
24812
  auth: "admin"
24648
- }), method(object({}), array(RelocateJobSchema).readonly(), {
24649
- kind: "query",
24813
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
24814
+ kind: "mutation",
24650
24815
  auth: "admin"
24651
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
24816
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
24817
+ kind: "mutation",
24818
+ auth: "admin"
24819
+ }), method(StorageMigrationFootageMoveInputSchema, object({ jobId: string() }), {
24820
+ kind: "mutation",
24821
+ auth: "admin"
24822
+ }), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
24652
24823
  kind: "mutation",
24653
24824
  auth: "admin"
24654
24825
  });
@@ -30254,6 +30425,12 @@ Object.freeze({
30254
30425
  addonId: null,
30255
30426
  access: "delete"
30256
30427
  },
30428
+ "osdManager.copyDeviceConfiguration": {
30429
+ capName: "osd-manager",
30430
+ capScope: "system",
30431
+ addonId: null,
30432
+ access: "create"
30433
+ },
30257
30434
  "osdManager.getConditionSupport": {
30258
30435
  capName: "osd-manager",
30259
30436
  capScope: "system",
@@ -30350,7 +30527,7 @@ Object.freeze({
30350
30527
  addonId: null,
30351
30528
  access: "create"
30352
30529
  },
30353
- "pipelineAnalytics.cancelMediaRelocate": {
30530
+ "pipelineAnalytics.cancelStorageMigrationMove": {
30354
30531
  capName: "pipeline-analytics",
30355
30532
  capScope: "device",
30356
30533
  addonId: null,
@@ -30422,12 +30599,6 @@ Object.freeze({
30422
30599
  addonId: null,
30423
30600
  access: "view"
30424
30601
  },
30425
- "pipelineAnalytics.getMediaRelocateStatus": {
30426
- capName: "pipeline-analytics",
30427
- capScope: "device",
30428
- addonId: null,
30429
- access: "view"
30430
- },
30431
30602
  "pipelineAnalytics.getMotionEvents": {
30432
30603
  capName: "pipeline-analytics",
30433
30604
  capScope: "device",
@@ -30464,6 +30635,12 @@ Object.freeze({
30464
30635
  addonId: null,
30465
30636
  access: "view"
30466
30637
  },
30638
+ "pipelineAnalytics.getStorageMigrationMoveStatus": {
30639
+ capName: "pipeline-analytics",
30640
+ capScope: "device",
30641
+ addonId: null,
30642
+ access: "view"
30643
+ },
30467
30644
  "pipelineAnalytics.getTrack": {
30468
30645
  capName: "pipeline-analytics",
30469
30646
  capScope: "device",
@@ -30542,6 +30719,12 @@ Object.freeze({
30542
30719
  addonId: null,
30543
30720
  access: "view"
30544
30721
  },
30722
+ "pipelineAnalytics.pauseForStorageMigration": {
30723
+ capName: "pipeline-analytics",
30724
+ capScope: "device",
30725
+ addonId: null,
30726
+ access: "create"
30727
+ },
30545
30728
  "pipelineAnalytics.proposeRetrainAnnotations": {
30546
30729
  capName: "pipeline-analytics",
30547
30730
  capScope: "device",
@@ -30572,7 +30755,7 @@ Object.freeze({
30572
30755
  addonId: null,
30573
30756
  access: "create"
30574
30757
  },
30575
- "pipelineAnalytics.relocateMedia": {
30758
+ "pipelineAnalytics.refreshStorageLocationsForMigration": {
30576
30759
  capName: "pipeline-analytics",
30577
30760
  capScope: "device",
30578
30761
  addonId: null,
@@ -30584,6 +30767,12 @@ Object.freeze({
30584
30767
  addonId: null,
30585
30768
  access: "create"
30586
30769
  },
30770
+ "pipelineAnalytics.resumeForStorageMigration": {
30771
+ capName: "pipeline-analytics",
30772
+ capScope: "device",
30773
+ addonId: null,
30774
+ access: "create"
30775
+ },
30587
30776
  "pipelineAnalytics.saveRetrainAnnotations": {
30588
30777
  capName: "pipeline-analytics",
30589
30778
  capScope: "device",
@@ -30608,6 +30797,12 @@ Object.freeze({
30608
30797
  addonId: null,
30609
30798
  access: "create"
30610
30799
  },
30800
+ "pipelineAnalytics.startStorageMigrationMove": {
30801
+ capName: "pipeline-analytics",
30802
+ capScope: "device",
30803
+ addonId: null,
30804
+ access: "create"
30805
+ },
30611
30806
  "pipelineAnalytics.wipeAllAnalytics": {
30612
30807
  capName: "pipeline-analytics",
30613
30808
  capScope: "device",
@@ -30974,6 +31169,12 @@ Object.freeze({
30974
31169
  addonId: null,
30975
31170
  access: "view"
30976
31171
  },
31172
+ "pipelineOrchestrator.pauseForStorageMigration": {
31173
+ capName: "pipeline-orchestrator",
31174
+ capScope: "system",
31175
+ addonId: null,
31176
+ access: "create"
31177
+ },
30977
31178
  "pipelineOrchestrator.rebalance": {
30978
31179
  capName: "pipeline-orchestrator",
30979
31180
  capScope: "system",
@@ -30998,6 +31199,12 @@ Object.freeze({
30998
31199
  addonId: null,
30999
31200
  access: "view"
31000
31201
  },
31202
+ "pipelineOrchestrator.resumeForStorageMigration": {
31203
+ capName: "pipeline-orchestrator",
31204
+ capScope: "system",
31205
+ addonId: null,
31206
+ access: "create"
31207
+ },
31001
31208
  "pipelineOrchestrator.saveTemplate": {
31002
31209
  capName: "pipeline-orchestrator",
31003
31210
  capScope: "system",
@@ -31394,7 +31601,7 @@ Object.freeze({
31394
31601
  addonId: null,
31395
31602
  access: "create"
31396
31603
  },
31397
- "recording.cancelRelocate": {
31604
+ "recording.cancelStorageMigrationMove": {
31398
31605
  capName: "recording",
31399
31606
  capScope: "system",
31400
31607
  addonId: null,
@@ -31430,7 +31637,7 @@ Object.freeze({
31430
31637
  addonId: null,
31431
31638
  access: "view"
31432
31639
  },
31433
- "recording.getRelocateStatus": {
31640
+ "recording.getStorageMigrationMoveStatus": {
31434
31641
  capName: "recording",
31435
31642
  capScope: "system",
31436
31643
  addonId: null,
@@ -31454,6 +31661,12 @@ Object.freeze({
31454
31661
  addonId: null,
31455
31662
  access: "view"
31456
31663
  },
31664
+ "recording.pauseForStorageMigration": {
31665
+ capName: "recording",
31666
+ capScope: "system",
31667
+ addonId: null,
31668
+ access: "create"
31669
+ },
31457
31670
  "recording.pruneFootage": {
31458
31671
  capName: "recording",
31459
31672
  capScope: "system",
@@ -31472,7 +31685,7 @@ Object.freeze({
31472
31685
  addonId: null,
31473
31686
  access: "view"
31474
31687
  },
31475
- "recording.relocateFootage": {
31688
+ "recording.refreshStorageLocationsForMigration": {
31476
31689
  capName: "recording",
31477
31690
  capScope: "system",
31478
31691
  addonId: null,
@@ -31496,12 +31709,24 @@ Object.freeze({
31496
31709
  addonId: null,
31497
31710
  access: "create"
31498
31711
  },
31712
+ "recording.resumeForStorageMigration": {
31713
+ capName: "recording",
31714
+ capScope: "system",
31715
+ addonId: null,
31716
+ access: "create"
31717
+ },
31499
31718
  "recording.setDeviceConfig": {
31500
31719
  capName: "recording",
31501
31720
  capScope: "system",
31502
31721
  addonId: null,
31503
31722
  access: "create"
31504
31723
  },
31724
+ "recording.startStorageMigrationMove": {
31725
+ capName: "recording",
31726
+ capScope: "system",
31727
+ addonId: null,
31728
+ access: "create"
31729
+ },
31505
31730
  "recordingExport.cancelExport": {
31506
31731
  capName: "recordingExport",
31507
31732
  capScope: "system",
@@ -31892,6 +32117,30 @@ Object.freeze({
31892
32117
  addonId: null,
31893
32118
  access: "view"
31894
32119
  },
32120
+ "storageMigration.cancel": {
32121
+ capName: "storage-migration",
32122
+ capScope: "system",
32123
+ addonId: null,
32124
+ access: "create"
32125
+ },
32126
+ "storageMigration.plan": {
32127
+ capName: "storage-migration",
32128
+ capScope: "system",
32129
+ addonId: null,
32130
+ access: "view"
32131
+ },
32132
+ "storageMigration.start": {
32133
+ capName: "storage-migration",
32134
+ capScope: "system",
32135
+ addonId: null,
32136
+ access: "create"
32137
+ },
32138
+ "storageMigration.status": {
32139
+ capName: "storage-migration",
32140
+ capScope: "system",
32141
+ addonId: null,
32142
+ access: "view"
32143
+ },
31895
32144
  "storageProvider.abortUpload": {
31896
32145
  capName: "storage-provider",
31897
32146
  capScope: "system",
@@ -32270,12 +32519,42 @@ Object.freeze({
32270
32519
  addonId: null,
32271
32520
  access: "create"
32272
32521
  },
32522
+ "terminalSession.adoptLegacyMonitor": {
32523
+ capName: "terminal-session",
32524
+ capScope: "system",
32525
+ addonId: null,
32526
+ access: "create"
32527
+ },
32273
32528
  "terminalSession.close": {
32274
32529
  capName: "terminal-session",
32275
32530
  capScope: "system",
32276
32531
  addonId: null,
32277
32532
  access: "create"
32278
32533
  },
32534
+ "terminalSession.createInstance": {
32535
+ capName: "terminal-session",
32536
+ capScope: "system",
32537
+ addonId: null,
32538
+ access: "create"
32539
+ },
32540
+ "terminalSession.deleteInstance": {
32541
+ capName: "terminal-session",
32542
+ capScope: "system",
32543
+ addonId: null,
32544
+ access: "delete"
32545
+ },
32546
+ "terminalSession.listInstances": {
32547
+ capName: "terminal-session",
32548
+ capScope: "system",
32549
+ addonId: null,
32550
+ access: "view"
32551
+ },
32552
+ "terminalSession.listLegacyCameras": {
32553
+ capName: "terminal-session",
32554
+ capScope: "system",
32555
+ addonId: null,
32556
+ access: "view"
32557
+ },
32279
32558
  "terminalSession.listProfiles": {
32280
32559
  capName: "terminal-session",
32281
32560
  capScope: "system",
@@ -32306,6 +32585,12 @@ Object.freeze({
32306
32585
  addonId: null,
32307
32586
  access: "create"
32308
32587
  },
32588
+ "terminalSession.setInstanceEnabled": {
32589
+ capName: "terminal-session",
32590
+ capScope: "system",
32591
+ addonId: null,
32592
+ access: "create"
32593
+ },
32309
32594
  "terminalSession.writeInput": {
32310
32595
  capName: "terminal-session",
32311
32596
  capScope: "system",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-provider-homematic",
3
- "version": "1.2.13",
3
+ "version": "1.2.14",
4
4
  "description": "Homematic / HomematicIP (CCU3 / RaspberryMatic) device-provider addon for CamStack — wraps the nodehomematic library",
5
5
  "keywords": [
6
6
  "camstack",