@camstack/addon-provider-petkit 0.2.11 → 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 +357 -30
  2. package/dist/addon.mjs +357 -30
  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",
17390
17470
  auth: "admin"
17391
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
17471
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
17472
+ kind: "mutation",
17473
+ auth: "admin"
17474
+ }), method(StorageMigrationMediaMoveInputSchema, object({ jobId: string() }), {
17475
+ kind: "mutation",
17476
+ auth: "admin"
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,7 +19794,67 @@ var TerminalProfileInfoSchema = object({
19695
19794
  label: string(),
19696
19795
  description: string().optional()
19697
19796
  });
19698
- method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
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
+ });
19819
+ var TerminalOutputEventSchema = discriminatedUnion("kind", [object({
19820
+ seq: number().int().positive(),
19821
+ kind: literal("data"),
19822
+ data: string()
19823
+ }), object({
19824
+ seq: number().int().positive(),
19825
+ kind: literal("exit"),
19826
+ exitCode: number().int(),
19827
+ signal: number().int().optional()
19828
+ })]);
19829
+ var TerminalOutputBatchSchema = object({
19830
+ cursor: number().int().nonnegative(),
19831
+ reset: boolean(),
19832
+ snapshot: string().optional(),
19833
+ events: array(TerminalOutputEventSchema).readonly()
19834
+ });
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({
19699
19858
  profileId: string(),
19700
19859
  cols: number().int().positive(),
19701
19860
  rows: number().int().positive()
@@ -19709,6 +19868,26 @@ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }),
19709
19868
  }), _void(), {
19710
19869
  kind: "mutation",
19711
19870
  auth: "admin"
19871
+ }), method(object({
19872
+ sessionId: string(),
19873
+ afterSeq: number().int().nonnegative(),
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()
19881
+ }), TerminalOutputBatchSchema, {
19882
+ kind: "mutation",
19883
+ auth: "admin",
19884
+ timeoutMs: 15e3
19885
+ }), method(object({
19886
+ sessionId: string(),
19887
+ data: string().max(64 * 1024)
19888
+ }), _void(), {
19889
+ kind: "mutation",
19890
+ auth: "admin"
19712
19891
  }), method(object({ sessionId: string() }), _void(), {
19713
19892
  kind: "mutation",
19714
19893
  auth: "admin"
@@ -22204,6 +22383,7 @@ var FaceInfoSchema = object({
22204
22383
  var FaceFilterEnum = _enum([
22205
22384
  "unassigned",
22206
22385
  "recognized",
22386
+ "identified",
22207
22387
  "all"
22208
22388
  ]);
22209
22389
  var MediaFileLiteSchema$1 = object({
@@ -22232,6 +22412,8 @@ method(_void(), array(IdentitySchema).readonly()), method(object({ name: string(
22232
22412
  kind: "mutation",
22233
22413
  auth: "admin"
22234
22414
  }), method(object({
22415
+ /** Restrict to one camera. Absent keeps the cluster-wide gallery view. */
22416
+ deviceId: number().int().optional(),
22235
22417
  limit: number().int().positive().optional(),
22236
22418
  filter: FaceFilterEnum.optional(),
22237
22419
  /**
@@ -24461,6 +24643,10 @@ var OsdSourceSchema = discriminatedUnion("kind", [
24461
24643
  capName: string().min(1).max(64),
24462
24644
  /** Dot path inside the slice, e.g. `detected`, `value`, `mode`. */
24463
24645
  valuePath: string().min(1).max(64)
24646
+ }),
24647
+ object({
24648
+ kind: literal("latest-recognition"),
24649
+ recognition: _enum(["person", "plate"])
24464
24650
  })
24465
24651
  ]);
24466
24652
  var OsdSlotBindingSchema = object({
@@ -24566,6 +24752,15 @@ method(object({ deviceId: number().int() }), object({
24566
24752
  }), object({ success: literal(true) }), {
24567
24753
  kind: "mutation",
24568
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"
24569
24764
  }), method(object({
24570
24765
  deviceId: number().int(),
24571
24766
  slotId: string().min(1),
@@ -25663,13 +25858,19 @@ method(object({
25663
25858
  }), {
25664
25859
  kind: "mutation",
25665
25860
  auth: "admin"
25666
- }), method(RelocateFootageInputSchema, object({ jobId: string() }), {
25861
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
25667
25862
  kind: "mutation",
25668
25863
  auth: "admin"
25669
- }), method(object({}), array(RelocateJobSchema).readonly(), {
25670
- kind: "query",
25864
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
25865
+ kind: "mutation",
25671
25866
  auth: "admin"
25672
- }), 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() }), {
25673
25874
  kind: "mutation",
25674
25875
  auth: "admin"
25675
25876
  });
@@ -31275,6 +31476,12 @@ Object.freeze({
31275
31476
  addonId: null,
31276
31477
  access: "delete"
31277
31478
  },
31479
+ "osdManager.copyDeviceConfiguration": {
31480
+ capName: "osd-manager",
31481
+ capScope: "system",
31482
+ addonId: null,
31483
+ access: "create"
31484
+ },
31278
31485
  "osdManager.getConditionSupport": {
31279
31486
  capName: "osd-manager",
31280
31487
  capScope: "system",
@@ -31371,7 +31578,7 @@ Object.freeze({
31371
31578
  addonId: null,
31372
31579
  access: "create"
31373
31580
  },
31374
- "pipelineAnalytics.cancelMediaRelocate": {
31581
+ "pipelineAnalytics.cancelStorageMigrationMove": {
31375
31582
  capName: "pipeline-analytics",
31376
31583
  capScope: "device",
31377
31584
  addonId: null,
@@ -31443,12 +31650,6 @@ Object.freeze({
31443
31650
  addonId: null,
31444
31651
  access: "view"
31445
31652
  },
31446
- "pipelineAnalytics.getMediaRelocateStatus": {
31447
- capName: "pipeline-analytics",
31448
- capScope: "device",
31449
- addonId: null,
31450
- access: "view"
31451
- },
31452
31653
  "pipelineAnalytics.getMotionEvents": {
31453
31654
  capName: "pipeline-analytics",
31454
31655
  capScope: "device",
@@ -31485,6 +31686,12 @@ Object.freeze({
31485
31686
  addonId: null,
31486
31687
  access: "view"
31487
31688
  },
31689
+ "pipelineAnalytics.getStorageMigrationMoveStatus": {
31690
+ capName: "pipeline-analytics",
31691
+ capScope: "device",
31692
+ addonId: null,
31693
+ access: "view"
31694
+ },
31488
31695
  "pipelineAnalytics.getTrack": {
31489
31696
  capName: "pipeline-analytics",
31490
31697
  capScope: "device",
@@ -31563,6 +31770,12 @@ Object.freeze({
31563
31770
  addonId: null,
31564
31771
  access: "view"
31565
31772
  },
31773
+ "pipelineAnalytics.pauseForStorageMigration": {
31774
+ capName: "pipeline-analytics",
31775
+ capScope: "device",
31776
+ addonId: null,
31777
+ access: "create"
31778
+ },
31566
31779
  "pipelineAnalytics.proposeRetrainAnnotations": {
31567
31780
  capName: "pipeline-analytics",
31568
31781
  capScope: "device",
@@ -31593,7 +31806,7 @@ Object.freeze({
31593
31806
  addonId: null,
31594
31807
  access: "create"
31595
31808
  },
31596
- "pipelineAnalytics.relocateMedia": {
31809
+ "pipelineAnalytics.refreshStorageLocationsForMigration": {
31597
31810
  capName: "pipeline-analytics",
31598
31811
  capScope: "device",
31599
31812
  addonId: null,
@@ -31605,6 +31818,12 @@ Object.freeze({
31605
31818
  addonId: null,
31606
31819
  access: "create"
31607
31820
  },
31821
+ "pipelineAnalytics.resumeForStorageMigration": {
31822
+ capName: "pipeline-analytics",
31823
+ capScope: "device",
31824
+ addonId: null,
31825
+ access: "create"
31826
+ },
31608
31827
  "pipelineAnalytics.saveRetrainAnnotations": {
31609
31828
  capName: "pipeline-analytics",
31610
31829
  capScope: "device",
@@ -31629,6 +31848,12 @@ Object.freeze({
31629
31848
  addonId: null,
31630
31849
  access: "create"
31631
31850
  },
31851
+ "pipelineAnalytics.startStorageMigrationMove": {
31852
+ capName: "pipeline-analytics",
31853
+ capScope: "device",
31854
+ addonId: null,
31855
+ access: "create"
31856
+ },
31632
31857
  "pipelineAnalytics.wipeAllAnalytics": {
31633
31858
  capName: "pipeline-analytics",
31634
31859
  capScope: "device",
@@ -31995,6 +32220,12 @@ Object.freeze({
31995
32220
  addonId: null,
31996
32221
  access: "view"
31997
32222
  },
32223
+ "pipelineOrchestrator.pauseForStorageMigration": {
32224
+ capName: "pipeline-orchestrator",
32225
+ capScope: "system",
32226
+ addonId: null,
32227
+ access: "create"
32228
+ },
31998
32229
  "pipelineOrchestrator.rebalance": {
31999
32230
  capName: "pipeline-orchestrator",
32000
32231
  capScope: "system",
@@ -32019,6 +32250,12 @@ Object.freeze({
32019
32250
  addonId: null,
32020
32251
  access: "view"
32021
32252
  },
32253
+ "pipelineOrchestrator.resumeForStorageMigration": {
32254
+ capName: "pipeline-orchestrator",
32255
+ capScope: "system",
32256
+ addonId: null,
32257
+ access: "create"
32258
+ },
32022
32259
  "pipelineOrchestrator.saveTemplate": {
32023
32260
  capName: "pipeline-orchestrator",
32024
32261
  capScope: "system",
@@ -32415,7 +32652,7 @@ Object.freeze({
32415
32652
  addonId: null,
32416
32653
  access: "create"
32417
32654
  },
32418
- "recording.cancelRelocate": {
32655
+ "recording.cancelStorageMigrationMove": {
32419
32656
  capName: "recording",
32420
32657
  capScope: "system",
32421
32658
  addonId: null,
@@ -32451,7 +32688,7 @@ Object.freeze({
32451
32688
  addonId: null,
32452
32689
  access: "view"
32453
32690
  },
32454
- "recording.getRelocateStatus": {
32691
+ "recording.getStorageMigrationMoveStatus": {
32455
32692
  capName: "recording",
32456
32693
  capScope: "system",
32457
32694
  addonId: null,
@@ -32475,6 +32712,12 @@ Object.freeze({
32475
32712
  addonId: null,
32476
32713
  access: "view"
32477
32714
  },
32715
+ "recording.pauseForStorageMigration": {
32716
+ capName: "recording",
32717
+ capScope: "system",
32718
+ addonId: null,
32719
+ access: "create"
32720
+ },
32478
32721
  "recording.pruneFootage": {
32479
32722
  capName: "recording",
32480
32723
  capScope: "system",
@@ -32493,7 +32736,7 @@ Object.freeze({
32493
32736
  addonId: null,
32494
32737
  access: "view"
32495
32738
  },
32496
- "recording.relocateFootage": {
32739
+ "recording.refreshStorageLocationsForMigration": {
32497
32740
  capName: "recording",
32498
32741
  capScope: "system",
32499
32742
  addonId: null,
@@ -32517,12 +32760,24 @@ Object.freeze({
32517
32760
  addonId: null,
32518
32761
  access: "create"
32519
32762
  },
32763
+ "recording.resumeForStorageMigration": {
32764
+ capName: "recording",
32765
+ capScope: "system",
32766
+ addonId: null,
32767
+ access: "create"
32768
+ },
32520
32769
  "recording.setDeviceConfig": {
32521
32770
  capName: "recording",
32522
32771
  capScope: "system",
32523
32772
  addonId: null,
32524
32773
  access: "create"
32525
32774
  },
32775
+ "recording.startStorageMigrationMove": {
32776
+ capName: "recording",
32777
+ capScope: "system",
32778
+ addonId: null,
32779
+ access: "create"
32780
+ },
32526
32781
  "recordingExport.cancelExport": {
32527
32782
  capName: "recordingExport",
32528
32783
  capScope: "system",
@@ -32913,6 +33168,30 @@ Object.freeze({
32913
33168
  addonId: null,
32914
33169
  access: "view"
32915
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
+ },
32916
33195
  "storageProvider.abortUpload": {
32917
33196
  capName: "storage-provider",
32918
33197
  capScope: "system",
@@ -33291,12 +33570,42 @@ Object.freeze({
33291
33570
  addonId: null,
33292
33571
  access: "create"
33293
33572
  },
33573
+ "terminalSession.adoptLegacyMonitor": {
33574
+ capName: "terminal-session",
33575
+ capScope: "system",
33576
+ addonId: null,
33577
+ access: "create"
33578
+ },
33294
33579
  "terminalSession.close": {
33295
33580
  capName: "terminal-session",
33296
33581
  capScope: "system",
33297
33582
  addonId: null,
33298
33583
  access: "create"
33299
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
+ },
33300
33609
  "terminalSession.listProfiles": {
33301
33610
  capName: "terminal-session",
33302
33611
  capScope: "system",
@@ -33315,12 +33624,30 @@ Object.freeze({
33315
33624
  addonId: null,
33316
33625
  access: "create"
33317
33626
  },
33627
+ "terminalSession.pullOutput": {
33628
+ capName: "terminal-session",
33629
+ capScope: "system",
33630
+ addonId: null,
33631
+ access: "create"
33632
+ },
33318
33633
  "terminalSession.resize": {
33319
33634
  capName: "terminal-session",
33320
33635
  capScope: "system",
33321
33636
  addonId: null,
33322
33637
  access: "create"
33323
33638
  },
33639
+ "terminalSession.setInstanceEnabled": {
33640
+ capName: "terminal-session",
33641
+ capScope: "system",
33642
+ addonId: null,
33643
+ access: "create"
33644
+ },
33645
+ "terminalSession.writeInput": {
33646
+ capName: "terminal-session",
33647
+ capScope: "system",
33648
+ addonId: null,
33649
+ access: "create"
33650
+ },
33324
33651
  "toast.onToast": {
33325
33652
  capName: "toast",
33326
33653
  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",
17389
17469
  auth: "admin"
17390
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
17470
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
17471
+ kind: "mutation",
17472
+ auth: "admin"
17473
+ }), method(StorageMigrationMediaMoveInputSchema, object({ jobId: string() }), {
17474
+ kind: "mutation",
17475
+ auth: "admin"
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,7 +19793,67 @@ var TerminalProfileInfoSchema = object({
19694
19793
  label: string(),
19695
19794
  description: string().optional()
19696
19795
  });
19697
- method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
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
+ });
19818
+ var TerminalOutputEventSchema = discriminatedUnion("kind", [object({
19819
+ seq: number().int().positive(),
19820
+ kind: literal("data"),
19821
+ data: string()
19822
+ }), object({
19823
+ seq: number().int().positive(),
19824
+ kind: literal("exit"),
19825
+ exitCode: number().int(),
19826
+ signal: number().int().optional()
19827
+ })]);
19828
+ var TerminalOutputBatchSchema = object({
19829
+ cursor: number().int().nonnegative(),
19830
+ reset: boolean(),
19831
+ snapshot: string().optional(),
19832
+ events: array(TerminalOutputEventSchema).readonly()
19833
+ });
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({
19698
19857
  profileId: string(),
19699
19858
  cols: number().int().positive(),
19700
19859
  rows: number().int().positive()
@@ -19708,6 +19867,26 @@ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }),
19708
19867
  }), _void(), {
19709
19868
  kind: "mutation",
19710
19869
  auth: "admin"
19870
+ }), method(object({
19871
+ sessionId: string(),
19872
+ afterSeq: number().int().nonnegative(),
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()
19880
+ }), TerminalOutputBatchSchema, {
19881
+ kind: "mutation",
19882
+ auth: "admin",
19883
+ timeoutMs: 15e3
19884
+ }), method(object({
19885
+ sessionId: string(),
19886
+ data: string().max(64 * 1024)
19887
+ }), _void(), {
19888
+ kind: "mutation",
19889
+ auth: "admin"
19711
19890
  }), method(object({ sessionId: string() }), _void(), {
19712
19891
  kind: "mutation",
19713
19892
  auth: "admin"
@@ -22203,6 +22382,7 @@ var FaceInfoSchema = object({
22203
22382
  var FaceFilterEnum = _enum([
22204
22383
  "unassigned",
22205
22384
  "recognized",
22385
+ "identified",
22206
22386
  "all"
22207
22387
  ]);
22208
22388
  var MediaFileLiteSchema$1 = object({
@@ -22231,6 +22411,8 @@ method(_void(), array(IdentitySchema).readonly()), method(object({ name: string(
22231
22411
  kind: "mutation",
22232
22412
  auth: "admin"
22233
22413
  }), method(object({
22414
+ /** Restrict to one camera. Absent keeps the cluster-wide gallery view. */
22415
+ deviceId: number().int().optional(),
22234
22416
  limit: number().int().positive().optional(),
22235
22417
  filter: FaceFilterEnum.optional(),
22236
22418
  /**
@@ -24460,6 +24642,10 @@ var OsdSourceSchema = discriminatedUnion("kind", [
24460
24642
  capName: string().min(1).max(64),
24461
24643
  /** Dot path inside the slice, e.g. `detected`, `value`, `mode`. */
24462
24644
  valuePath: string().min(1).max(64)
24645
+ }),
24646
+ object({
24647
+ kind: literal("latest-recognition"),
24648
+ recognition: _enum(["person", "plate"])
24463
24649
  })
24464
24650
  ]);
24465
24651
  var OsdSlotBindingSchema = object({
@@ -24565,6 +24751,15 @@ method(object({ deviceId: number().int() }), object({
24565
24751
  }), object({ success: literal(true) }), {
24566
24752
  kind: "mutation",
24567
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"
24568
24763
  }), method(object({
24569
24764
  deviceId: number().int(),
24570
24765
  slotId: string().min(1),
@@ -25662,13 +25857,19 @@ method(object({
25662
25857
  }), {
25663
25858
  kind: "mutation",
25664
25859
  auth: "admin"
25665
- }), method(RelocateFootageInputSchema, object({ jobId: string() }), {
25860
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
25666
25861
  kind: "mutation",
25667
25862
  auth: "admin"
25668
- }), method(object({}), array(RelocateJobSchema).readonly(), {
25669
- kind: "query",
25863
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
25864
+ kind: "mutation",
25670
25865
  auth: "admin"
25671
- }), 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() }), {
25672
25873
  kind: "mutation",
25673
25874
  auth: "admin"
25674
25875
  });
@@ -31274,6 +31475,12 @@ Object.freeze({
31274
31475
  addonId: null,
31275
31476
  access: "delete"
31276
31477
  },
31478
+ "osdManager.copyDeviceConfiguration": {
31479
+ capName: "osd-manager",
31480
+ capScope: "system",
31481
+ addonId: null,
31482
+ access: "create"
31483
+ },
31277
31484
  "osdManager.getConditionSupport": {
31278
31485
  capName: "osd-manager",
31279
31486
  capScope: "system",
@@ -31370,7 +31577,7 @@ Object.freeze({
31370
31577
  addonId: null,
31371
31578
  access: "create"
31372
31579
  },
31373
- "pipelineAnalytics.cancelMediaRelocate": {
31580
+ "pipelineAnalytics.cancelStorageMigrationMove": {
31374
31581
  capName: "pipeline-analytics",
31375
31582
  capScope: "device",
31376
31583
  addonId: null,
@@ -31442,12 +31649,6 @@ Object.freeze({
31442
31649
  addonId: null,
31443
31650
  access: "view"
31444
31651
  },
31445
- "pipelineAnalytics.getMediaRelocateStatus": {
31446
- capName: "pipeline-analytics",
31447
- capScope: "device",
31448
- addonId: null,
31449
- access: "view"
31450
- },
31451
31652
  "pipelineAnalytics.getMotionEvents": {
31452
31653
  capName: "pipeline-analytics",
31453
31654
  capScope: "device",
@@ -31484,6 +31685,12 @@ Object.freeze({
31484
31685
  addonId: null,
31485
31686
  access: "view"
31486
31687
  },
31688
+ "pipelineAnalytics.getStorageMigrationMoveStatus": {
31689
+ capName: "pipeline-analytics",
31690
+ capScope: "device",
31691
+ addonId: null,
31692
+ access: "view"
31693
+ },
31487
31694
  "pipelineAnalytics.getTrack": {
31488
31695
  capName: "pipeline-analytics",
31489
31696
  capScope: "device",
@@ -31562,6 +31769,12 @@ Object.freeze({
31562
31769
  addonId: null,
31563
31770
  access: "view"
31564
31771
  },
31772
+ "pipelineAnalytics.pauseForStorageMigration": {
31773
+ capName: "pipeline-analytics",
31774
+ capScope: "device",
31775
+ addonId: null,
31776
+ access: "create"
31777
+ },
31565
31778
  "pipelineAnalytics.proposeRetrainAnnotations": {
31566
31779
  capName: "pipeline-analytics",
31567
31780
  capScope: "device",
@@ -31592,7 +31805,7 @@ Object.freeze({
31592
31805
  addonId: null,
31593
31806
  access: "create"
31594
31807
  },
31595
- "pipelineAnalytics.relocateMedia": {
31808
+ "pipelineAnalytics.refreshStorageLocationsForMigration": {
31596
31809
  capName: "pipeline-analytics",
31597
31810
  capScope: "device",
31598
31811
  addonId: null,
@@ -31604,6 +31817,12 @@ Object.freeze({
31604
31817
  addonId: null,
31605
31818
  access: "create"
31606
31819
  },
31820
+ "pipelineAnalytics.resumeForStorageMigration": {
31821
+ capName: "pipeline-analytics",
31822
+ capScope: "device",
31823
+ addonId: null,
31824
+ access: "create"
31825
+ },
31607
31826
  "pipelineAnalytics.saveRetrainAnnotations": {
31608
31827
  capName: "pipeline-analytics",
31609
31828
  capScope: "device",
@@ -31628,6 +31847,12 @@ Object.freeze({
31628
31847
  addonId: null,
31629
31848
  access: "create"
31630
31849
  },
31850
+ "pipelineAnalytics.startStorageMigrationMove": {
31851
+ capName: "pipeline-analytics",
31852
+ capScope: "device",
31853
+ addonId: null,
31854
+ access: "create"
31855
+ },
31631
31856
  "pipelineAnalytics.wipeAllAnalytics": {
31632
31857
  capName: "pipeline-analytics",
31633
31858
  capScope: "device",
@@ -31994,6 +32219,12 @@ Object.freeze({
31994
32219
  addonId: null,
31995
32220
  access: "view"
31996
32221
  },
32222
+ "pipelineOrchestrator.pauseForStorageMigration": {
32223
+ capName: "pipeline-orchestrator",
32224
+ capScope: "system",
32225
+ addonId: null,
32226
+ access: "create"
32227
+ },
31997
32228
  "pipelineOrchestrator.rebalance": {
31998
32229
  capName: "pipeline-orchestrator",
31999
32230
  capScope: "system",
@@ -32018,6 +32249,12 @@ Object.freeze({
32018
32249
  addonId: null,
32019
32250
  access: "view"
32020
32251
  },
32252
+ "pipelineOrchestrator.resumeForStorageMigration": {
32253
+ capName: "pipeline-orchestrator",
32254
+ capScope: "system",
32255
+ addonId: null,
32256
+ access: "create"
32257
+ },
32021
32258
  "pipelineOrchestrator.saveTemplate": {
32022
32259
  capName: "pipeline-orchestrator",
32023
32260
  capScope: "system",
@@ -32414,7 +32651,7 @@ Object.freeze({
32414
32651
  addonId: null,
32415
32652
  access: "create"
32416
32653
  },
32417
- "recording.cancelRelocate": {
32654
+ "recording.cancelStorageMigrationMove": {
32418
32655
  capName: "recording",
32419
32656
  capScope: "system",
32420
32657
  addonId: null,
@@ -32450,7 +32687,7 @@ Object.freeze({
32450
32687
  addonId: null,
32451
32688
  access: "view"
32452
32689
  },
32453
- "recording.getRelocateStatus": {
32690
+ "recording.getStorageMigrationMoveStatus": {
32454
32691
  capName: "recording",
32455
32692
  capScope: "system",
32456
32693
  addonId: null,
@@ -32474,6 +32711,12 @@ Object.freeze({
32474
32711
  addonId: null,
32475
32712
  access: "view"
32476
32713
  },
32714
+ "recording.pauseForStorageMigration": {
32715
+ capName: "recording",
32716
+ capScope: "system",
32717
+ addonId: null,
32718
+ access: "create"
32719
+ },
32477
32720
  "recording.pruneFootage": {
32478
32721
  capName: "recording",
32479
32722
  capScope: "system",
@@ -32492,7 +32735,7 @@ Object.freeze({
32492
32735
  addonId: null,
32493
32736
  access: "view"
32494
32737
  },
32495
- "recording.relocateFootage": {
32738
+ "recording.refreshStorageLocationsForMigration": {
32496
32739
  capName: "recording",
32497
32740
  capScope: "system",
32498
32741
  addonId: null,
@@ -32516,12 +32759,24 @@ Object.freeze({
32516
32759
  addonId: null,
32517
32760
  access: "create"
32518
32761
  },
32762
+ "recording.resumeForStorageMigration": {
32763
+ capName: "recording",
32764
+ capScope: "system",
32765
+ addonId: null,
32766
+ access: "create"
32767
+ },
32519
32768
  "recording.setDeviceConfig": {
32520
32769
  capName: "recording",
32521
32770
  capScope: "system",
32522
32771
  addonId: null,
32523
32772
  access: "create"
32524
32773
  },
32774
+ "recording.startStorageMigrationMove": {
32775
+ capName: "recording",
32776
+ capScope: "system",
32777
+ addonId: null,
32778
+ access: "create"
32779
+ },
32525
32780
  "recordingExport.cancelExport": {
32526
32781
  capName: "recordingExport",
32527
32782
  capScope: "system",
@@ -32912,6 +33167,30 @@ Object.freeze({
32912
33167
  addonId: null,
32913
33168
  access: "view"
32914
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
+ },
32915
33194
  "storageProvider.abortUpload": {
32916
33195
  capName: "storage-provider",
32917
33196
  capScope: "system",
@@ -33290,12 +33569,42 @@ Object.freeze({
33290
33569
  addonId: null,
33291
33570
  access: "create"
33292
33571
  },
33572
+ "terminalSession.adoptLegacyMonitor": {
33573
+ capName: "terminal-session",
33574
+ capScope: "system",
33575
+ addonId: null,
33576
+ access: "create"
33577
+ },
33293
33578
  "terminalSession.close": {
33294
33579
  capName: "terminal-session",
33295
33580
  capScope: "system",
33296
33581
  addonId: null,
33297
33582
  access: "create"
33298
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
+ },
33299
33608
  "terminalSession.listProfiles": {
33300
33609
  capName: "terminal-session",
33301
33610
  capScope: "system",
@@ -33314,12 +33623,30 @@ Object.freeze({
33314
33623
  addonId: null,
33315
33624
  access: "create"
33316
33625
  },
33626
+ "terminalSession.pullOutput": {
33627
+ capName: "terminal-session",
33628
+ capScope: "system",
33629
+ addonId: null,
33630
+ access: "create"
33631
+ },
33317
33632
  "terminalSession.resize": {
33318
33633
  capName: "terminal-session",
33319
33634
  capScope: "system",
33320
33635
  addonId: null,
33321
33636
  access: "create"
33322
33637
  },
33638
+ "terminalSession.setInstanceEnabled": {
33639
+ capName: "terminal-session",
33640
+ capScope: "system",
33641
+ addonId: null,
33642
+ access: "create"
33643
+ },
33644
+ "terminalSession.writeInput": {
33645
+ capName: "terminal-session",
33646
+ capScope: "system",
33647
+ addonId: null,
33648
+ access: "create"
33649
+ },
33323
33650
  "toast.onToast": {
33324
33651
  capName: "toast",
33325
33652
  capScope: "system",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-provider-petkit",
3
- "version": "0.2.11",
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",