@camstack/addon-provider-petkit 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
@@ -8667,12 +8667,11 @@ var RecordingConfigSchema = object({
8667
8667
  /**
8668
8668
  * Entity-relocation job state (storage entity-routing spec, Phase 4).
8669
8669
  *
8670
- * One shape shared by the recorder's `relocateFootage` (segments) and
8671
- * pipeline-analytics' `relocateMedia` (event media blobs) so the admin Data
8672
- * page renders both movers with one component. Jobs are in-RAM (a restart
8673
- * forgets them re-running is safe by construction: copy-if-absent, delete
8674
- * after verify) and each completed/failed run also lands one durable ops-log
8675
- * row on the owning addon's surface.
8670
+ * One shape shared by the recorder and pipeline-analytics internal movers.
8671
+ * The public admin surface is `storage-migration`; child jobs remain in RAM
8672
+ * because copy-if-absent, verify, delete and index/row repoint are resumable.
8673
+ * Each completed/failed run also lands one durable ops-log row on its owning
8674
+ * addon surface.
8676
8675
  */
8677
8676
  var RelocateJobStateSchema = _enum([
8678
8677
  "running",
@@ -8699,19 +8698,100 @@ var RelocateJobSchema = object({
8699
8698
  finishedAt: number().nullable(),
8700
8699
  error: string().nullable()
8701
8700
  });
8701
+ /** Profile-derived footage selection used only by the migration coordinator:
8702
+ * `recordings` owns high+mid; `recordingsLow` owns low. */
8703
+ var RelocateFootageClassSchema = _enum(["recordings", "recordingsLow"]);
8702
8704
  var RelocateFootageInputSchema = object({
8703
- deviceId: number().optional(),
8704
8705
  fromLocationId: string(),
8705
8706
  toLocationId: string(),
8706
8707
  entities: array(_enum(["segments"])).optional(),
8708
+ /** Limits relocation to the logical profile class. Omit only for the
8709
+ * pre-orchestration compatibility path. */
8710
+ footageClass: RelocateFootageClassSchema.optional(),
8707
8711
  /** Copy throttle in MB/s (default 40) — the drain is a background chore,
8708
8712
  * never allowed to starve live writers. */
8709
8713
  throttleMbps: number().min(1).max(1e3).optional()
8710
8714
  });
8711
- var RelocateMediaInputSchema = object({
8712
- deviceId: number().optional(),
8715
+ /** Internal, lease-scoped participant operation. It is intentionally separate
8716
+ * from persistent recording settings: a migration never changes
8717
+ * `RecordingConfig.enabled` or camera wrapper bindings. */
8718
+ var StorageMigrationLeaseInputSchema = object({ leaseId: string().min(1) });
8719
+ var StorageMigrationFootageMoveInputSchema = RelocateFootageInputSchema.extend({ leaseId: string().min(1) });
8720
+ var StorageMigrationMediaMoveInputSchema = object({
8713
8721
  toLocationId: string(),
8714
8722
  throttleMbps: number().min(1).max(1e3).optional()
8723
+ }).extend({ leaseId: string().min(1) });
8724
+ /** The independently selectable logical storage classes. `recordings`
8725
+ * encompasses the high and mid segment profiles; `recordingsLow` is low
8726
+ * segments; `eventMedia` is post-analysis blobs. */
8727
+ var StorageMigrationClassSchema = _enum([
8728
+ "recordings",
8729
+ "recordingsLow",
8730
+ "eventMedia"
8731
+ ]);
8732
+ /** A destination is always an existing, fully-qualified location id. The
8733
+ * migration API intentionally never changes a source location's `basePath`:
8734
+ * callers create a new `<type>:<slug>` location, then select it here. */
8735
+ var StorageMigrationDestinationsSchema = object({
8736
+ recordings: string().min(1).optional(),
8737
+ recordingsLow: string().min(1).optional(),
8738
+ eventMedia: string().min(1).optional()
8739
+ }).refine((value) => Object.keys(value).length > 0, { message: "select at least one storage class" });
8740
+ /** Shared input for planning and starting an orchestrated storage migration. */
8741
+ var StorageMigrationInputSchema = object({
8742
+ destinations: StorageMigrationDestinationsSchema,
8743
+ throttleMbps: number().min(1).max(1e3).optional()
8744
+ });
8745
+ /** The durable coordinator state machine. The only phase that changes default
8746
+ * locations is `repointing`, after every selected mover has completed and been
8747
+ * verified. */
8748
+ var StorageMigrationPhaseSchema = _enum([
8749
+ "planning",
8750
+ "pausing",
8751
+ "moving",
8752
+ "verifying",
8753
+ "repointing",
8754
+ "refreshing",
8755
+ "resuming",
8756
+ "done",
8757
+ "failed",
8758
+ "cancelled"
8759
+ ]);
8760
+ var StorageMigrationParticipantSchema = _enum([
8761
+ "pipeline",
8762
+ "recorder",
8763
+ "analytics"
8764
+ ]);
8765
+ var StorageMigrationMoveSchema = object({
8766
+ storageClass: StorageMigrationClassSchema,
8767
+ fromLocationId: string(),
8768
+ toLocationId: string(),
8769
+ moverJobId: string().nullable(),
8770
+ state: RelocateJobStateSchema.nullable(),
8771
+ error: string().nullable()
8772
+ });
8773
+ var StorageMigrationJobSchema = object({
8774
+ jobId: string(),
8775
+ phase: StorageMigrationPhaseSchema,
8776
+ destinations: StorageMigrationDestinationsSchema,
8777
+ throttleMbps: number(),
8778
+ moves: array(StorageMigrationMoveSchema),
8779
+ pauseLeaseId: string().nullable(),
8780
+ pausedParticipants: array(StorageMigrationParticipantSchema),
8781
+ repointed: boolean(),
8782
+ cancelRequested: boolean(),
8783
+ startedAt: number(),
8784
+ updatedAt: number(),
8785
+ finishedAt: number().nullable(),
8786
+ error: string().nullable()
8787
+ });
8788
+ var StorageMigrationPlanSchema = object({
8789
+ destinations: StorageMigrationDestinationsSchema,
8790
+ moves: array(object({
8791
+ storageClass: StorageMigrationClassSchema,
8792
+ fromLocationId: string(),
8793
+ toLocationId: string()
8794
+ }))
8715
8795
  });
8716
8796
  /**
8717
8797
  * `StorageLocationType` — an addon-declared id that identifies the *kind* of
@@ -17382,13 +17462,19 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
17382
17462
  }), method(object({ deviceId: number() }), EventPruneCountsSchema, {
17383
17463
  kind: "mutation",
17384
17464
  auth: "admin"
17385
- }), method(RelocateMediaInputSchema, object({ jobId: string() }), {
17465
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
17386
17466
  kind: "mutation",
17387
17467
  auth: "admin"
17388
- }), method(object({}), array(RelocateJobSchema).readonly(), {
17389
- kind: "query",
17468
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
17469
+ kind: "mutation",
17470
+ auth: "admin"
17471
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
17472
+ kind: "mutation",
17473
+ auth: "admin"
17474
+ }), method(StorageMigrationMediaMoveInputSchema, object({ jobId: string() }), {
17475
+ kind: "mutation",
17390
17476
  auth: "admin"
17391
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
17477
+ }), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
17392
17478
  kind: "mutation",
17393
17479
  auth: "admin"
17394
17480
  }), method(OpsLogQueryInputSchema, array(OpsLogEntrySchema).readonly(), {
@@ -18918,7 +19004,13 @@ var NodeInferenceDevicesSchema = object({
18918
19004
  reachable: boolean(),
18919
19005
  devices: array(NodeInferenceDeviceSchema).readonly()
18920
19006
  });
18921
- method(object({
19007
+ method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
19008
+ kind: "mutation",
19009
+ auth: "admin"
19010
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
19011
+ kind: "mutation",
19012
+ auth: "admin"
19013
+ }), method(object({
18922
19014
  deviceId: number(),
18923
19015
  agentNodeId: string()
18924
19016
  }), object({ success: literal(true) }), {
@@ -19592,6 +19684,13 @@ method(object({ locationId: string() }), EvictableUsageSchema), method(object({
19592
19684
  locationId: string(),
19593
19685
  targetBytes: number().int().positive()
19594
19686
  }), EvictResultSchema, { kind: "mutation" });
19687
+ method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin" }), method(StorageMigrationInputSchema, object({ jobId: string() }), {
19688
+ kind: "mutation",
19689
+ auth: "admin"
19690
+ }), method(object({ jobId: string().optional() }), StorageMigrationJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
19691
+ kind: "mutation",
19692
+ auth: "admin"
19693
+ });
19595
19694
  var ProviderInfoSchema = discriminatedUnion("shouldSaveDiskSpace", [object({
19596
19695
  providerId: string().min(1),
19597
19696
  displayName: string().min(1),
@@ -19695,6 +19794,28 @@ var TerminalProfileInfoSchema = object({
19695
19794
  label: string(),
19696
19795
  description: string().optional()
19697
19796
  });
19797
+ /**
19798
+ * A durable operator-created Terminal instance. Profiles are templates; only
19799
+ * an instance declares a camera.
19800
+ */
19801
+ var TerminalInstanceInfoSchema = object({
19802
+ instanceId: string(),
19803
+ cameraStableId: string(),
19804
+ nodeId: string(),
19805
+ profileId: string(),
19806
+ profileLabel: string(),
19807
+ name: string(),
19808
+ enabled: boolean()
19809
+ });
19810
+ var TerminalLegacyCameraSchema = object({
19811
+ stableId: string(),
19812
+ nodeId: string(),
19813
+ profileId: string(),
19814
+ profileLabel: string(),
19815
+ name: string(),
19816
+ /** Only legacy monitor cameras can retain their historic stable identity. */
19817
+ adoptable: boolean()
19818
+ });
19698
19819
  var TerminalOutputEventSchema = discriminatedUnion("kind", [object({
19699
19820
  seq: number().int().positive(),
19700
19821
  kind: literal("data"),
@@ -19711,7 +19832,29 @@ var TerminalOutputBatchSchema = object({
19711
19832
  snapshot: string().optional(),
19712
19833
  events: array(TerminalOutputEventSchema).readonly()
19713
19834
  });
19714
- method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
19835
+ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalInstanceInfoSchema).readonly(), { auth: "admin" }), method(object({
19836
+ targetNodeId: string().min(1),
19837
+ profileId: string().min(1),
19838
+ name: string().trim().min(1).max(160).optional()
19839
+ }), TerminalInstanceInfoSchema, {
19840
+ kind: "mutation",
19841
+ auth: "admin"
19842
+ }), method(object({ instanceId: string().min(1) }), _void(), {
19843
+ kind: "mutation",
19844
+ auth: "admin"
19845
+ }), method(object({
19846
+ instanceId: string().min(1),
19847
+ enabled: boolean()
19848
+ }), TerminalInstanceInfoSchema, {
19849
+ kind: "mutation",
19850
+ auth: "admin"
19851
+ }), method(_void(), array(TerminalLegacyCameraSchema).readonly(), { auth: "admin" }), method(object({
19852
+ stableId: string().min(1),
19853
+ name: string().trim().min(1).max(160).optional()
19854
+ }), TerminalInstanceInfoSchema, {
19855
+ kind: "mutation",
19856
+ auth: "admin"
19857
+ }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
19715
19858
  profileId: string(),
19716
19859
  cols: number().int().positive(),
19717
19860
  rows: number().int().positive()
@@ -19728,7 +19871,13 @@ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }),
19728
19871
  }), method(object({
19729
19872
  sessionId: string(),
19730
19873
  afterSeq: number().int().nonnegative(),
19731
- waitMs: number().int().min(0).max(2e3).default(0)
19874
+ waitMs: number().int().min(0).max(2e3).default(0),
19875
+ /**
19876
+ * Wait when a just-opened session has no output yet. Kept opt-in so a
19877
+ * browser's initial repaint remains immediate; the camera snapshot
19878
+ * relay uses it to avoid encoding a blank startup frame.
19879
+ */
19880
+ waitForOutput: boolean().optional()
19732
19881
  }), TerminalOutputBatchSchema, {
19733
19882
  kind: "mutation",
19734
19883
  auth: "admin",
@@ -22234,6 +22383,7 @@ var FaceInfoSchema = object({
22234
22383
  var FaceFilterEnum = _enum([
22235
22384
  "unassigned",
22236
22385
  "recognized",
22386
+ "identified",
22237
22387
  "all"
22238
22388
  ]);
22239
22389
  var MediaFileLiteSchema$1 = object({
@@ -22262,6 +22412,8 @@ method(_void(), array(IdentitySchema).readonly()), method(object({ name: string(
22262
22412
  kind: "mutation",
22263
22413
  auth: "admin"
22264
22414
  }), method(object({
22415
+ /** Restrict to one camera. Absent keeps the cluster-wide gallery view. */
22416
+ deviceId: number().int().optional(),
22265
22417
  limit: number().int().positive().optional(),
22266
22418
  filter: FaceFilterEnum.optional(),
22267
22419
  /**
@@ -24491,6 +24643,10 @@ var OsdSourceSchema = discriminatedUnion("kind", [
24491
24643
  capName: string().min(1).max(64),
24492
24644
  /** Dot path inside the slice, e.g. `detected`, `value`, `mode`. */
24493
24645
  valuePath: string().min(1).max(64)
24646
+ }),
24647
+ object({
24648
+ kind: literal("latest-recognition"),
24649
+ recognition: _enum(["person", "plate"])
24494
24650
  })
24495
24651
  ]);
24496
24652
  var OsdSlotBindingSchema = object({
@@ -24596,6 +24752,15 @@ method(object({ deviceId: number().int() }), object({
24596
24752
  }), object({ success: literal(true) }), {
24597
24753
  kind: "mutation",
24598
24754
  auth: "admin"
24755
+ }), method(object({
24756
+ sourceDeviceId: number().int(),
24757
+ targetDeviceId: number().int()
24758
+ }), object({
24759
+ copied: number().int().nonnegative(),
24760
+ skipped: number().int().nonnegative()
24761
+ }), {
24762
+ kind: "mutation",
24763
+ auth: "admin"
24599
24764
  }), method(object({
24600
24765
  deviceId: number().int(),
24601
24766
  slotId: string().min(1),
@@ -25693,13 +25858,19 @@ method(object({
25693
25858
  }), {
25694
25859
  kind: "mutation",
25695
25860
  auth: "admin"
25696
- }), method(RelocateFootageInputSchema, object({ jobId: string() }), {
25861
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
25697
25862
  kind: "mutation",
25698
25863
  auth: "admin"
25699
- }), method(object({}), array(RelocateJobSchema).readonly(), {
25700
- kind: "query",
25864
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
25865
+ kind: "mutation",
25701
25866
  auth: "admin"
25702
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
25867
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
25868
+ kind: "mutation",
25869
+ auth: "admin"
25870
+ }), method(StorageMigrationFootageMoveInputSchema, object({ jobId: string() }), {
25871
+ kind: "mutation",
25872
+ auth: "admin"
25873
+ }), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
25703
25874
  kind: "mutation",
25704
25875
  auth: "admin"
25705
25876
  });
@@ -31305,6 +31476,12 @@ Object.freeze({
31305
31476
  addonId: null,
31306
31477
  access: "delete"
31307
31478
  },
31479
+ "osdManager.copyDeviceConfiguration": {
31480
+ capName: "osd-manager",
31481
+ capScope: "system",
31482
+ addonId: null,
31483
+ access: "create"
31484
+ },
31308
31485
  "osdManager.getConditionSupport": {
31309
31486
  capName: "osd-manager",
31310
31487
  capScope: "system",
@@ -31401,7 +31578,7 @@ Object.freeze({
31401
31578
  addonId: null,
31402
31579
  access: "create"
31403
31580
  },
31404
- "pipelineAnalytics.cancelMediaRelocate": {
31581
+ "pipelineAnalytics.cancelStorageMigrationMove": {
31405
31582
  capName: "pipeline-analytics",
31406
31583
  capScope: "device",
31407
31584
  addonId: null,
@@ -31473,12 +31650,6 @@ Object.freeze({
31473
31650
  addonId: null,
31474
31651
  access: "view"
31475
31652
  },
31476
- "pipelineAnalytics.getMediaRelocateStatus": {
31477
- capName: "pipeline-analytics",
31478
- capScope: "device",
31479
- addonId: null,
31480
- access: "view"
31481
- },
31482
31653
  "pipelineAnalytics.getMotionEvents": {
31483
31654
  capName: "pipeline-analytics",
31484
31655
  capScope: "device",
@@ -31515,6 +31686,12 @@ Object.freeze({
31515
31686
  addonId: null,
31516
31687
  access: "view"
31517
31688
  },
31689
+ "pipelineAnalytics.getStorageMigrationMoveStatus": {
31690
+ capName: "pipeline-analytics",
31691
+ capScope: "device",
31692
+ addonId: null,
31693
+ access: "view"
31694
+ },
31518
31695
  "pipelineAnalytics.getTrack": {
31519
31696
  capName: "pipeline-analytics",
31520
31697
  capScope: "device",
@@ -31593,6 +31770,12 @@ Object.freeze({
31593
31770
  addonId: null,
31594
31771
  access: "view"
31595
31772
  },
31773
+ "pipelineAnalytics.pauseForStorageMigration": {
31774
+ capName: "pipeline-analytics",
31775
+ capScope: "device",
31776
+ addonId: null,
31777
+ access: "create"
31778
+ },
31596
31779
  "pipelineAnalytics.proposeRetrainAnnotations": {
31597
31780
  capName: "pipeline-analytics",
31598
31781
  capScope: "device",
@@ -31623,7 +31806,7 @@ Object.freeze({
31623
31806
  addonId: null,
31624
31807
  access: "create"
31625
31808
  },
31626
- "pipelineAnalytics.relocateMedia": {
31809
+ "pipelineAnalytics.refreshStorageLocationsForMigration": {
31627
31810
  capName: "pipeline-analytics",
31628
31811
  capScope: "device",
31629
31812
  addonId: null,
@@ -31635,6 +31818,12 @@ Object.freeze({
31635
31818
  addonId: null,
31636
31819
  access: "create"
31637
31820
  },
31821
+ "pipelineAnalytics.resumeForStorageMigration": {
31822
+ capName: "pipeline-analytics",
31823
+ capScope: "device",
31824
+ addonId: null,
31825
+ access: "create"
31826
+ },
31638
31827
  "pipelineAnalytics.saveRetrainAnnotations": {
31639
31828
  capName: "pipeline-analytics",
31640
31829
  capScope: "device",
@@ -31659,6 +31848,12 @@ Object.freeze({
31659
31848
  addonId: null,
31660
31849
  access: "create"
31661
31850
  },
31851
+ "pipelineAnalytics.startStorageMigrationMove": {
31852
+ capName: "pipeline-analytics",
31853
+ capScope: "device",
31854
+ addonId: null,
31855
+ access: "create"
31856
+ },
31662
31857
  "pipelineAnalytics.wipeAllAnalytics": {
31663
31858
  capName: "pipeline-analytics",
31664
31859
  capScope: "device",
@@ -32025,6 +32220,12 @@ Object.freeze({
32025
32220
  addonId: null,
32026
32221
  access: "view"
32027
32222
  },
32223
+ "pipelineOrchestrator.pauseForStorageMigration": {
32224
+ capName: "pipeline-orchestrator",
32225
+ capScope: "system",
32226
+ addonId: null,
32227
+ access: "create"
32228
+ },
32028
32229
  "pipelineOrchestrator.rebalance": {
32029
32230
  capName: "pipeline-orchestrator",
32030
32231
  capScope: "system",
@@ -32049,6 +32250,12 @@ Object.freeze({
32049
32250
  addonId: null,
32050
32251
  access: "view"
32051
32252
  },
32253
+ "pipelineOrchestrator.resumeForStorageMigration": {
32254
+ capName: "pipeline-orchestrator",
32255
+ capScope: "system",
32256
+ addonId: null,
32257
+ access: "create"
32258
+ },
32052
32259
  "pipelineOrchestrator.saveTemplate": {
32053
32260
  capName: "pipeline-orchestrator",
32054
32261
  capScope: "system",
@@ -32445,7 +32652,7 @@ Object.freeze({
32445
32652
  addonId: null,
32446
32653
  access: "create"
32447
32654
  },
32448
- "recording.cancelRelocate": {
32655
+ "recording.cancelStorageMigrationMove": {
32449
32656
  capName: "recording",
32450
32657
  capScope: "system",
32451
32658
  addonId: null,
@@ -32481,7 +32688,7 @@ Object.freeze({
32481
32688
  addonId: null,
32482
32689
  access: "view"
32483
32690
  },
32484
- "recording.getRelocateStatus": {
32691
+ "recording.getStorageMigrationMoveStatus": {
32485
32692
  capName: "recording",
32486
32693
  capScope: "system",
32487
32694
  addonId: null,
@@ -32505,6 +32712,12 @@ Object.freeze({
32505
32712
  addonId: null,
32506
32713
  access: "view"
32507
32714
  },
32715
+ "recording.pauseForStorageMigration": {
32716
+ capName: "recording",
32717
+ capScope: "system",
32718
+ addonId: null,
32719
+ access: "create"
32720
+ },
32508
32721
  "recording.pruneFootage": {
32509
32722
  capName: "recording",
32510
32723
  capScope: "system",
@@ -32523,7 +32736,7 @@ Object.freeze({
32523
32736
  addonId: null,
32524
32737
  access: "view"
32525
32738
  },
32526
- "recording.relocateFootage": {
32739
+ "recording.refreshStorageLocationsForMigration": {
32527
32740
  capName: "recording",
32528
32741
  capScope: "system",
32529
32742
  addonId: null,
@@ -32547,12 +32760,24 @@ Object.freeze({
32547
32760
  addonId: null,
32548
32761
  access: "create"
32549
32762
  },
32763
+ "recording.resumeForStorageMigration": {
32764
+ capName: "recording",
32765
+ capScope: "system",
32766
+ addonId: null,
32767
+ access: "create"
32768
+ },
32550
32769
  "recording.setDeviceConfig": {
32551
32770
  capName: "recording",
32552
32771
  capScope: "system",
32553
32772
  addonId: null,
32554
32773
  access: "create"
32555
32774
  },
32775
+ "recording.startStorageMigrationMove": {
32776
+ capName: "recording",
32777
+ capScope: "system",
32778
+ addonId: null,
32779
+ access: "create"
32780
+ },
32556
32781
  "recordingExport.cancelExport": {
32557
32782
  capName: "recordingExport",
32558
32783
  capScope: "system",
@@ -32943,6 +33168,30 @@ Object.freeze({
32943
33168
  addonId: null,
32944
33169
  access: "view"
32945
33170
  },
33171
+ "storageMigration.cancel": {
33172
+ capName: "storage-migration",
33173
+ capScope: "system",
33174
+ addonId: null,
33175
+ access: "create"
33176
+ },
33177
+ "storageMigration.plan": {
33178
+ capName: "storage-migration",
33179
+ capScope: "system",
33180
+ addonId: null,
33181
+ access: "view"
33182
+ },
33183
+ "storageMigration.start": {
33184
+ capName: "storage-migration",
33185
+ capScope: "system",
33186
+ addonId: null,
33187
+ access: "create"
33188
+ },
33189
+ "storageMigration.status": {
33190
+ capName: "storage-migration",
33191
+ capScope: "system",
33192
+ addonId: null,
33193
+ access: "view"
33194
+ },
32946
33195
  "storageProvider.abortUpload": {
32947
33196
  capName: "storage-provider",
32948
33197
  capScope: "system",
@@ -33321,12 +33570,42 @@ Object.freeze({
33321
33570
  addonId: null,
33322
33571
  access: "create"
33323
33572
  },
33573
+ "terminalSession.adoptLegacyMonitor": {
33574
+ capName: "terminal-session",
33575
+ capScope: "system",
33576
+ addonId: null,
33577
+ access: "create"
33578
+ },
33324
33579
  "terminalSession.close": {
33325
33580
  capName: "terminal-session",
33326
33581
  capScope: "system",
33327
33582
  addonId: null,
33328
33583
  access: "create"
33329
33584
  },
33585
+ "terminalSession.createInstance": {
33586
+ capName: "terminal-session",
33587
+ capScope: "system",
33588
+ addonId: null,
33589
+ access: "create"
33590
+ },
33591
+ "terminalSession.deleteInstance": {
33592
+ capName: "terminal-session",
33593
+ capScope: "system",
33594
+ addonId: null,
33595
+ access: "delete"
33596
+ },
33597
+ "terminalSession.listInstances": {
33598
+ capName: "terminal-session",
33599
+ capScope: "system",
33600
+ addonId: null,
33601
+ access: "view"
33602
+ },
33603
+ "terminalSession.listLegacyCameras": {
33604
+ capName: "terminal-session",
33605
+ capScope: "system",
33606
+ addonId: null,
33607
+ access: "view"
33608
+ },
33330
33609
  "terminalSession.listProfiles": {
33331
33610
  capName: "terminal-session",
33332
33611
  capScope: "system",
@@ -33357,6 +33636,12 @@ Object.freeze({
33357
33636
  addonId: null,
33358
33637
  access: "create"
33359
33638
  },
33639
+ "terminalSession.setInstanceEnabled": {
33640
+ capName: "terminal-session",
33641
+ capScope: "system",
33642
+ addonId: null,
33643
+ access: "create"
33644
+ },
33360
33645
  "terminalSession.writeInput": {
33361
33646
  capName: "terminal-session",
33362
33647
  capScope: "system",
package/dist/addon.mjs CHANGED
@@ -8666,12 +8666,11 @@ var RecordingConfigSchema = object({
8666
8666
  /**
8667
8667
  * Entity-relocation job state (storage entity-routing spec, Phase 4).
8668
8668
  *
8669
- * One shape shared by the recorder's `relocateFootage` (segments) and
8670
- * pipeline-analytics' `relocateMedia` (event media blobs) so the admin Data
8671
- * page renders both movers with one component. Jobs are in-RAM (a restart
8672
- * forgets them re-running is safe by construction: copy-if-absent, delete
8673
- * after verify) and each completed/failed run also lands one durable ops-log
8674
- * row on the owning addon's surface.
8669
+ * One shape shared by the recorder and pipeline-analytics internal movers.
8670
+ * The public admin surface is `storage-migration`; child jobs remain in RAM
8671
+ * because copy-if-absent, verify, delete and index/row repoint are resumable.
8672
+ * Each completed/failed run also lands one durable ops-log row on its owning
8673
+ * addon surface.
8675
8674
  */
8676
8675
  var RelocateJobStateSchema = _enum([
8677
8676
  "running",
@@ -8698,19 +8697,100 @@ var RelocateJobSchema = object({
8698
8697
  finishedAt: number().nullable(),
8699
8698
  error: string().nullable()
8700
8699
  });
8700
+ /** Profile-derived footage selection used only by the migration coordinator:
8701
+ * `recordings` owns high+mid; `recordingsLow` owns low. */
8702
+ var RelocateFootageClassSchema = _enum(["recordings", "recordingsLow"]);
8701
8703
  var RelocateFootageInputSchema = object({
8702
- deviceId: number().optional(),
8703
8704
  fromLocationId: string(),
8704
8705
  toLocationId: string(),
8705
8706
  entities: array(_enum(["segments"])).optional(),
8707
+ /** Limits relocation to the logical profile class. Omit only for the
8708
+ * pre-orchestration compatibility path. */
8709
+ footageClass: RelocateFootageClassSchema.optional(),
8706
8710
  /** Copy throttle in MB/s (default 40) — the drain is a background chore,
8707
8711
  * never allowed to starve live writers. */
8708
8712
  throttleMbps: number().min(1).max(1e3).optional()
8709
8713
  });
8710
- var RelocateMediaInputSchema = object({
8711
- deviceId: number().optional(),
8714
+ /** Internal, lease-scoped participant operation. It is intentionally separate
8715
+ * from persistent recording settings: a migration never changes
8716
+ * `RecordingConfig.enabled` or camera wrapper bindings. */
8717
+ var StorageMigrationLeaseInputSchema = object({ leaseId: string().min(1) });
8718
+ var StorageMigrationFootageMoveInputSchema = RelocateFootageInputSchema.extend({ leaseId: string().min(1) });
8719
+ var StorageMigrationMediaMoveInputSchema = object({
8712
8720
  toLocationId: string(),
8713
8721
  throttleMbps: number().min(1).max(1e3).optional()
8722
+ }).extend({ leaseId: string().min(1) });
8723
+ /** The independently selectable logical storage classes. `recordings`
8724
+ * encompasses the high and mid segment profiles; `recordingsLow` is low
8725
+ * segments; `eventMedia` is post-analysis blobs. */
8726
+ var StorageMigrationClassSchema = _enum([
8727
+ "recordings",
8728
+ "recordingsLow",
8729
+ "eventMedia"
8730
+ ]);
8731
+ /** A destination is always an existing, fully-qualified location id. The
8732
+ * migration API intentionally never changes a source location's `basePath`:
8733
+ * callers create a new `<type>:<slug>` location, then select it here. */
8734
+ var StorageMigrationDestinationsSchema = object({
8735
+ recordings: string().min(1).optional(),
8736
+ recordingsLow: string().min(1).optional(),
8737
+ eventMedia: string().min(1).optional()
8738
+ }).refine((value) => Object.keys(value).length > 0, { message: "select at least one storage class" });
8739
+ /** Shared input for planning and starting an orchestrated storage migration. */
8740
+ var StorageMigrationInputSchema = object({
8741
+ destinations: StorageMigrationDestinationsSchema,
8742
+ throttleMbps: number().min(1).max(1e3).optional()
8743
+ });
8744
+ /** The durable coordinator state machine. The only phase that changes default
8745
+ * locations is `repointing`, after every selected mover has completed and been
8746
+ * verified. */
8747
+ var StorageMigrationPhaseSchema = _enum([
8748
+ "planning",
8749
+ "pausing",
8750
+ "moving",
8751
+ "verifying",
8752
+ "repointing",
8753
+ "refreshing",
8754
+ "resuming",
8755
+ "done",
8756
+ "failed",
8757
+ "cancelled"
8758
+ ]);
8759
+ var StorageMigrationParticipantSchema = _enum([
8760
+ "pipeline",
8761
+ "recorder",
8762
+ "analytics"
8763
+ ]);
8764
+ var StorageMigrationMoveSchema = object({
8765
+ storageClass: StorageMigrationClassSchema,
8766
+ fromLocationId: string(),
8767
+ toLocationId: string(),
8768
+ moverJobId: string().nullable(),
8769
+ state: RelocateJobStateSchema.nullable(),
8770
+ error: string().nullable()
8771
+ });
8772
+ var StorageMigrationJobSchema = object({
8773
+ jobId: string(),
8774
+ phase: StorageMigrationPhaseSchema,
8775
+ destinations: StorageMigrationDestinationsSchema,
8776
+ throttleMbps: number(),
8777
+ moves: array(StorageMigrationMoveSchema),
8778
+ pauseLeaseId: string().nullable(),
8779
+ pausedParticipants: array(StorageMigrationParticipantSchema),
8780
+ repointed: boolean(),
8781
+ cancelRequested: boolean(),
8782
+ startedAt: number(),
8783
+ updatedAt: number(),
8784
+ finishedAt: number().nullable(),
8785
+ error: string().nullable()
8786
+ });
8787
+ var StorageMigrationPlanSchema = object({
8788
+ destinations: StorageMigrationDestinationsSchema,
8789
+ moves: array(object({
8790
+ storageClass: StorageMigrationClassSchema,
8791
+ fromLocationId: string(),
8792
+ toLocationId: string()
8793
+ }))
8714
8794
  });
8715
8795
  /**
8716
8796
  * `StorageLocationType` — an addon-declared id that identifies the *kind* of
@@ -17381,13 +17461,19 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
17381
17461
  }), method(object({ deviceId: number() }), EventPruneCountsSchema, {
17382
17462
  kind: "mutation",
17383
17463
  auth: "admin"
17384
- }), method(RelocateMediaInputSchema, object({ jobId: string() }), {
17464
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
17385
17465
  kind: "mutation",
17386
17466
  auth: "admin"
17387
- }), method(object({}), array(RelocateJobSchema).readonly(), {
17388
- kind: "query",
17467
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
17468
+ kind: "mutation",
17469
+ auth: "admin"
17470
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
17471
+ kind: "mutation",
17472
+ auth: "admin"
17473
+ }), method(StorageMigrationMediaMoveInputSchema, object({ jobId: string() }), {
17474
+ kind: "mutation",
17389
17475
  auth: "admin"
17390
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
17476
+ }), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
17391
17477
  kind: "mutation",
17392
17478
  auth: "admin"
17393
17479
  }), method(OpsLogQueryInputSchema, array(OpsLogEntrySchema).readonly(), {
@@ -18917,7 +19003,13 @@ var NodeInferenceDevicesSchema = object({
18917
19003
  reachable: boolean(),
18918
19004
  devices: array(NodeInferenceDeviceSchema).readonly()
18919
19005
  });
18920
- method(object({
19006
+ method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
19007
+ kind: "mutation",
19008
+ auth: "admin"
19009
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
19010
+ kind: "mutation",
19011
+ auth: "admin"
19012
+ }), method(object({
18921
19013
  deviceId: number(),
18922
19014
  agentNodeId: string()
18923
19015
  }), object({ success: literal(true) }), {
@@ -19591,6 +19683,13 @@ method(object({ locationId: string() }), EvictableUsageSchema), method(object({
19591
19683
  locationId: string(),
19592
19684
  targetBytes: number().int().positive()
19593
19685
  }), EvictResultSchema, { kind: "mutation" });
19686
+ method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin" }), method(StorageMigrationInputSchema, object({ jobId: string() }), {
19687
+ kind: "mutation",
19688
+ auth: "admin"
19689
+ }), method(object({ jobId: string().optional() }), StorageMigrationJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
19690
+ kind: "mutation",
19691
+ auth: "admin"
19692
+ });
19594
19693
  var ProviderInfoSchema = discriminatedUnion("shouldSaveDiskSpace", [object({
19595
19694
  providerId: string().min(1),
19596
19695
  displayName: string().min(1),
@@ -19694,6 +19793,28 @@ var TerminalProfileInfoSchema = object({
19694
19793
  label: string(),
19695
19794
  description: string().optional()
19696
19795
  });
19796
+ /**
19797
+ * A durable operator-created Terminal instance. Profiles are templates; only
19798
+ * an instance declares a camera.
19799
+ */
19800
+ var TerminalInstanceInfoSchema = object({
19801
+ instanceId: string(),
19802
+ cameraStableId: string(),
19803
+ nodeId: string(),
19804
+ profileId: string(),
19805
+ profileLabel: string(),
19806
+ name: string(),
19807
+ enabled: boolean()
19808
+ });
19809
+ var TerminalLegacyCameraSchema = object({
19810
+ stableId: string(),
19811
+ nodeId: string(),
19812
+ profileId: string(),
19813
+ profileLabel: string(),
19814
+ name: string(),
19815
+ /** Only legacy monitor cameras can retain their historic stable identity. */
19816
+ adoptable: boolean()
19817
+ });
19697
19818
  var TerminalOutputEventSchema = discriminatedUnion("kind", [object({
19698
19819
  seq: number().int().positive(),
19699
19820
  kind: literal("data"),
@@ -19710,7 +19831,29 @@ var TerminalOutputBatchSchema = object({
19710
19831
  snapshot: string().optional(),
19711
19832
  events: array(TerminalOutputEventSchema).readonly()
19712
19833
  });
19713
- method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
19834
+ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalInstanceInfoSchema).readonly(), { auth: "admin" }), method(object({
19835
+ targetNodeId: string().min(1),
19836
+ profileId: string().min(1),
19837
+ name: string().trim().min(1).max(160).optional()
19838
+ }), TerminalInstanceInfoSchema, {
19839
+ kind: "mutation",
19840
+ auth: "admin"
19841
+ }), method(object({ instanceId: string().min(1) }), _void(), {
19842
+ kind: "mutation",
19843
+ auth: "admin"
19844
+ }), method(object({
19845
+ instanceId: string().min(1),
19846
+ enabled: boolean()
19847
+ }), TerminalInstanceInfoSchema, {
19848
+ kind: "mutation",
19849
+ auth: "admin"
19850
+ }), method(_void(), array(TerminalLegacyCameraSchema).readonly(), { auth: "admin" }), method(object({
19851
+ stableId: string().min(1),
19852
+ name: string().trim().min(1).max(160).optional()
19853
+ }), TerminalInstanceInfoSchema, {
19854
+ kind: "mutation",
19855
+ auth: "admin"
19856
+ }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
19714
19857
  profileId: string(),
19715
19858
  cols: number().int().positive(),
19716
19859
  rows: number().int().positive()
@@ -19727,7 +19870,13 @@ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }),
19727
19870
  }), method(object({
19728
19871
  sessionId: string(),
19729
19872
  afterSeq: number().int().nonnegative(),
19730
- waitMs: number().int().min(0).max(2e3).default(0)
19873
+ waitMs: number().int().min(0).max(2e3).default(0),
19874
+ /**
19875
+ * Wait when a just-opened session has no output yet. Kept opt-in so a
19876
+ * browser's initial repaint remains immediate; the camera snapshot
19877
+ * relay uses it to avoid encoding a blank startup frame.
19878
+ */
19879
+ waitForOutput: boolean().optional()
19731
19880
  }), TerminalOutputBatchSchema, {
19732
19881
  kind: "mutation",
19733
19882
  auth: "admin",
@@ -22233,6 +22382,7 @@ var FaceInfoSchema = object({
22233
22382
  var FaceFilterEnum = _enum([
22234
22383
  "unassigned",
22235
22384
  "recognized",
22385
+ "identified",
22236
22386
  "all"
22237
22387
  ]);
22238
22388
  var MediaFileLiteSchema$1 = object({
@@ -22261,6 +22411,8 @@ method(_void(), array(IdentitySchema).readonly()), method(object({ name: string(
22261
22411
  kind: "mutation",
22262
22412
  auth: "admin"
22263
22413
  }), method(object({
22414
+ /** Restrict to one camera. Absent keeps the cluster-wide gallery view. */
22415
+ deviceId: number().int().optional(),
22264
22416
  limit: number().int().positive().optional(),
22265
22417
  filter: FaceFilterEnum.optional(),
22266
22418
  /**
@@ -24490,6 +24642,10 @@ var OsdSourceSchema = discriminatedUnion("kind", [
24490
24642
  capName: string().min(1).max(64),
24491
24643
  /** Dot path inside the slice, e.g. `detected`, `value`, `mode`. */
24492
24644
  valuePath: string().min(1).max(64)
24645
+ }),
24646
+ object({
24647
+ kind: literal("latest-recognition"),
24648
+ recognition: _enum(["person", "plate"])
24493
24649
  })
24494
24650
  ]);
24495
24651
  var OsdSlotBindingSchema = object({
@@ -24595,6 +24751,15 @@ method(object({ deviceId: number().int() }), object({
24595
24751
  }), object({ success: literal(true) }), {
24596
24752
  kind: "mutation",
24597
24753
  auth: "admin"
24754
+ }), method(object({
24755
+ sourceDeviceId: number().int(),
24756
+ targetDeviceId: number().int()
24757
+ }), object({
24758
+ copied: number().int().nonnegative(),
24759
+ skipped: number().int().nonnegative()
24760
+ }), {
24761
+ kind: "mutation",
24762
+ auth: "admin"
24598
24763
  }), method(object({
24599
24764
  deviceId: number().int(),
24600
24765
  slotId: string().min(1),
@@ -25692,13 +25857,19 @@ method(object({
25692
25857
  }), {
25693
25858
  kind: "mutation",
25694
25859
  auth: "admin"
25695
- }), method(RelocateFootageInputSchema, object({ jobId: string() }), {
25860
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
25696
25861
  kind: "mutation",
25697
25862
  auth: "admin"
25698
- }), method(object({}), array(RelocateJobSchema).readonly(), {
25699
- kind: "query",
25863
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
25864
+ kind: "mutation",
25700
25865
  auth: "admin"
25701
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
25866
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
25867
+ kind: "mutation",
25868
+ auth: "admin"
25869
+ }), method(StorageMigrationFootageMoveInputSchema, object({ jobId: string() }), {
25870
+ kind: "mutation",
25871
+ auth: "admin"
25872
+ }), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
25702
25873
  kind: "mutation",
25703
25874
  auth: "admin"
25704
25875
  });
@@ -31304,6 +31475,12 @@ Object.freeze({
31304
31475
  addonId: null,
31305
31476
  access: "delete"
31306
31477
  },
31478
+ "osdManager.copyDeviceConfiguration": {
31479
+ capName: "osd-manager",
31480
+ capScope: "system",
31481
+ addonId: null,
31482
+ access: "create"
31483
+ },
31307
31484
  "osdManager.getConditionSupport": {
31308
31485
  capName: "osd-manager",
31309
31486
  capScope: "system",
@@ -31400,7 +31577,7 @@ Object.freeze({
31400
31577
  addonId: null,
31401
31578
  access: "create"
31402
31579
  },
31403
- "pipelineAnalytics.cancelMediaRelocate": {
31580
+ "pipelineAnalytics.cancelStorageMigrationMove": {
31404
31581
  capName: "pipeline-analytics",
31405
31582
  capScope: "device",
31406
31583
  addonId: null,
@@ -31472,12 +31649,6 @@ Object.freeze({
31472
31649
  addonId: null,
31473
31650
  access: "view"
31474
31651
  },
31475
- "pipelineAnalytics.getMediaRelocateStatus": {
31476
- capName: "pipeline-analytics",
31477
- capScope: "device",
31478
- addonId: null,
31479
- access: "view"
31480
- },
31481
31652
  "pipelineAnalytics.getMotionEvents": {
31482
31653
  capName: "pipeline-analytics",
31483
31654
  capScope: "device",
@@ -31514,6 +31685,12 @@ Object.freeze({
31514
31685
  addonId: null,
31515
31686
  access: "view"
31516
31687
  },
31688
+ "pipelineAnalytics.getStorageMigrationMoveStatus": {
31689
+ capName: "pipeline-analytics",
31690
+ capScope: "device",
31691
+ addonId: null,
31692
+ access: "view"
31693
+ },
31517
31694
  "pipelineAnalytics.getTrack": {
31518
31695
  capName: "pipeline-analytics",
31519
31696
  capScope: "device",
@@ -31592,6 +31769,12 @@ Object.freeze({
31592
31769
  addonId: null,
31593
31770
  access: "view"
31594
31771
  },
31772
+ "pipelineAnalytics.pauseForStorageMigration": {
31773
+ capName: "pipeline-analytics",
31774
+ capScope: "device",
31775
+ addonId: null,
31776
+ access: "create"
31777
+ },
31595
31778
  "pipelineAnalytics.proposeRetrainAnnotations": {
31596
31779
  capName: "pipeline-analytics",
31597
31780
  capScope: "device",
@@ -31622,7 +31805,7 @@ Object.freeze({
31622
31805
  addonId: null,
31623
31806
  access: "create"
31624
31807
  },
31625
- "pipelineAnalytics.relocateMedia": {
31808
+ "pipelineAnalytics.refreshStorageLocationsForMigration": {
31626
31809
  capName: "pipeline-analytics",
31627
31810
  capScope: "device",
31628
31811
  addonId: null,
@@ -31634,6 +31817,12 @@ Object.freeze({
31634
31817
  addonId: null,
31635
31818
  access: "create"
31636
31819
  },
31820
+ "pipelineAnalytics.resumeForStorageMigration": {
31821
+ capName: "pipeline-analytics",
31822
+ capScope: "device",
31823
+ addonId: null,
31824
+ access: "create"
31825
+ },
31637
31826
  "pipelineAnalytics.saveRetrainAnnotations": {
31638
31827
  capName: "pipeline-analytics",
31639
31828
  capScope: "device",
@@ -31658,6 +31847,12 @@ Object.freeze({
31658
31847
  addonId: null,
31659
31848
  access: "create"
31660
31849
  },
31850
+ "pipelineAnalytics.startStorageMigrationMove": {
31851
+ capName: "pipeline-analytics",
31852
+ capScope: "device",
31853
+ addonId: null,
31854
+ access: "create"
31855
+ },
31661
31856
  "pipelineAnalytics.wipeAllAnalytics": {
31662
31857
  capName: "pipeline-analytics",
31663
31858
  capScope: "device",
@@ -32024,6 +32219,12 @@ Object.freeze({
32024
32219
  addonId: null,
32025
32220
  access: "view"
32026
32221
  },
32222
+ "pipelineOrchestrator.pauseForStorageMigration": {
32223
+ capName: "pipeline-orchestrator",
32224
+ capScope: "system",
32225
+ addonId: null,
32226
+ access: "create"
32227
+ },
32027
32228
  "pipelineOrchestrator.rebalance": {
32028
32229
  capName: "pipeline-orchestrator",
32029
32230
  capScope: "system",
@@ -32048,6 +32249,12 @@ Object.freeze({
32048
32249
  addonId: null,
32049
32250
  access: "view"
32050
32251
  },
32252
+ "pipelineOrchestrator.resumeForStorageMigration": {
32253
+ capName: "pipeline-orchestrator",
32254
+ capScope: "system",
32255
+ addonId: null,
32256
+ access: "create"
32257
+ },
32051
32258
  "pipelineOrchestrator.saveTemplate": {
32052
32259
  capName: "pipeline-orchestrator",
32053
32260
  capScope: "system",
@@ -32444,7 +32651,7 @@ Object.freeze({
32444
32651
  addonId: null,
32445
32652
  access: "create"
32446
32653
  },
32447
- "recording.cancelRelocate": {
32654
+ "recording.cancelStorageMigrationMove": {
32448
32655
  capName: "recording",
32449
32656
  capScope: "system",
32450
32657
  addonId: null,
@@ -32480,7 +32687,7 @@ Object.freeze({
32480
32687
  addonId: null,
32481
32688
  access: "view"
32482
32689
  },
32483
- "recording.getRelocateStatus": {
32690
+ "recording.getStorageMigrationMoveStatus": {
32484
32691
  capName: "recording",
32485
32692
  capScope: "system",
32486
32693
  addonId: null,
@@ -32504,6 +32711,12 @@ Object.freeze({
32504
32711
  addonId: null,
32505
32712
  access: "view"
32506
32713
  },
32714
+ "recording.pauseForStorageMigration": {
32715
+ capName: "recording",
32716
+ capScope: "system",
32717
+ addonId: null,
32718
+ access: "create"
32719
+ },
32507
32720
  "recording.pruneFootage": {
32508
32721
  capName: "recording",
32509
32722
  capScope: "system",
@@ -32522,7 +32735,7 @@ Object.freeze({
32522
32735
  addonId: null,
32523
32736
  access: "view"
32524
32737
  },
32525
- "recording.relocateFootage": {
32738
+ "recording.refreshStorageLocationsForMigration": {
32526
32739
  capName: "recording",
32527
32740
  capScope: "system",
32528
32741
  addonId: null,
@@ -32546,12 +32759,24 @@ Object.freeze({
32546
32759
  addonId: null,
32547
32760
  access: "create"
32548
32761
  },
32762
+ "recording.resumeForStorageMigration": {
32763
+ capName: "recording",
32764
+ capScope: "system",
32765
+ addonId: null,
32766
+ access: "create"
32767
+ },
32549
32768
  "recording.setDeviceConfig": {
32550
32769
  capName: "recording",
32551
32770
  capScope: "system",
32552
32771
  addonId: null,
32553
32772
  access: "create"
32554
32773
  },
32774
+ "recording.startStorageMigrationMove": {
32775
+ capName: "recording",
32776
+ capScope: "system",
32777
+ addonId: null,
32778
+ access: "create"
32779
+ },
32555
32780
  "recordingExport.cancelExport": {
32556
32781
  capName: "recordingExport",
32557
32782
  capScope: "system",
@@ -32942,6 +33167,30 @@ Object.freeze({
32942
33167
  addonId: null,
32943
33168
  access: "view"
32944
33169
  },
33170
+ "storageMigration.cancel": {
33171
+ capName: "storage-migration",
33172
+ capScope: "system",
33173
+ addonId: null,
33174
+ access: "create"
33175
+ },
33176
+ "storageMigration.plan": {
33177
+ capName: "storage-migration",
33178
+ capScope: "system",
33179
+ addonId: null,
33180
+ access: "view"
33181
+ },
33182
+ "storageMigration.start": {
33183
+ capName: "storage-migration",
33184
+ capScope: "system",
33185
+ addonId: null,
33186
+ access: "create"
33187
+ },
33188
+ "storageMigration.status": {
33189
+ capName: "storage-migration",
33190
+ capScope: "system",
33191
+ addonId: null,
33192
+ access: "view"
33193
+ },
32945
33194
  "storageProvider.abortUpload": {
32946
33195
  capName: "storage-provider",
32947
33196
  capScope: "system",
@@ -33320,12 +33569,42 @@ Object.freeze({
33320
33569
  addonId: null,
33321
33570
  access: "create"
33322
33571
  },
33572
+ "terminalSession.adoptLegacyMonitor": {
33573
+ capName: "terminal-session",
33574
+ capScope: "system",
33575
+ addonId: null,
33576
+ access: "create"
33577
+ },
33323
33578
  "terminalSession.close": {
33324
33579
  capName: "terminal-session",
33325
33580
  capScope: "system",
33326
33581
  addonId: null,
33327
33582
  access: "create"
33328
33583
  },
33584
+ "terminalSession.createInstance": {
33585
+ capName: "terminal-session",
33586
+ capScope: "system",
33587
+ addonId: null,
33588
+ access: "create"
33589
+ },
33590
+ "terminalSession.deleteInstance": {
33591
+ capName: "terminal-session",
33592
+ capScope: "system",
33593
+ addonId: null,
33594
+ access: "delete"
33595
+ },
33596
+ "terminalSession.listInstances": {
33597
+ capName: "terminal-session",
33598
+ capScope: "system",
33599
+ addonId: null,
33600
+ access: "view"
33601
+ },
33602
+ "terminalSession.listLegacyCameras": {
33603
+ capName: "terminal-session",
33604
+ capScope: "system",
33605
+ addonId: null,
33606
+ access: "view"
33607
+ },
33329
33608
  "terminalSession.listProfiles": {
33330
33609
  capName: "terminal-session",
33331
33610
  capScope: "system",
@@ -33356,6 +33635,12 @@ Object.freeze({
33356
33635
  addonId: null,
33357
33636
  access: "create"
33358
33637
  },
33638
+ "terminalSession.setInstanceEnabled": {
33639
+ capName: "terminal-session",
33640
+ capScope: "system",
33641
+ addonId: null,
33642
+ access: "create"
33643
+ },
33359
33644
  "terminalSession.writeInput": {
33360
33645
  capName: "terminal-session",
33361
33646
  capScope: "system",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-provider-petkit",
3
- "version": "0.2.12",
3
+ "version": "0.2.13",
4
4
  "description": "PetKit smart-feeder device-provider addon for CamStack — wraps the @apocaliss92/nodepetkit PetKit cloud client",
5
5
  "keywords": [
6
6
  "camstack",