@camstack/addon-provider-reolink 1.2.20 → 1.2.22

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
@@ -7590,12 +7590,11 @@ var RecordingConfigSchema = object({
7590
7590
  /**
7591
7591
  * Entity-relocation job state (storage entity-routing spec, Phase 4).
7592
7592
  *
7593
- * One shape shared by the recorder's `relocateFootage` (segments) and
7594
- * pipeline-analytics' `relocateMedia` (event media blobs) so the admin Data
7595
- * page renders both movers with one component. Jobs are in-RAM (a restart
7596
- * forgets them re-running is safe by construction: copy-if-absent, delete
7597
- * after verify) and each completed/failed run also lands one durable ops-log
7598
- * row on the owning addon's surface.
7593
+ * One shape shared by the recorder and pipeline-analytics internal movers.
7594
+ * The public admin surface is `storage-migration`; child jobs remain in RAM
7595
+ * because copy-if-absent, verify, delete and index/row repoint are resumable.
7596
+ * Each completed/failed run also lands one durable ops-log row on its owning
7597
+ * addon surface.
7599
7598
  */
7600
7599
  var RelocateJobStateSchema = _enum([
7601
7600
  "running",
@@ -7622,19 +7621,100 @@ var RelocateJobSchema = object({
7622
7621
  finishedAt: number().nullable(),
7623
7622
  error: string().nullable()
7624
7623
  });
7624
+ /** Profile-derived footage selection used only by the migration coordinator:
7625
+ * `recordings` owns high+mid; `recordingsLow` owns low. */
7626
+ var RelocateFootageClassSchema = _enum(["recordings", "recordingsLow"]);
7625
7627
  var RelocateFootageInputSchema = object({
7626
- deviceId: number().optional(),
7627
7628
  fromLocationId: string(),
7628
7629
  toLocationId: string(),
7629
7630
  entities: array(_enum(["segments"])).optional(),
7631
+ /** Limits relocation to the logical profile class. Omit only for the
7632
+ * pre-orchestration compatibility path. */
7633
+ footageClass: RelocateFootageClassSchema.optional(),
7630
7634
  /** Copy throttle in MB/s (default 40) — the drain is a background chore,
7631
7635
  * never allowed to starve live writers. */
7632
7636
  throttleMbps: number().min(1).max(1e3).optional()
7633
7637
  });
7634
- var RelocateMediaInputSchema = object({
7635
- deviceId: number().optional(),
7638
+ /** Internal, lease-scoped participant operation. It is intentionally separate
7639
+ * from persistent recording settings: a migration never changes
7640
+ * `RecordingConfig.enabled` or camera wrapper bindings. */
7641
+ var StorageMigrationLeaseInputSchema = object({ leaseId: string().min(1) });
7642
+ var StorageMigrationFootageMoveInputSchema = RelocateFootageInputSchema.extend({ leaseId: string().min(1) });
7643
+ var StorageMigrationMediaMoveInputSchema = object({
7636
7644
  toLocationId: string(),
7637
7645
  throttleMbps: number().min(1).max(1e3).optional()
7646
+ }).extend({ leaseId: string().min(1) });
7647
+ /** The independently selectable logical storage classes. `recordings`
7648
+ * encompasses the high and mid segment profiles; `recordingsLow` is low
7649
+ * segments; `eventMedia` is post-analysis blobs. */
7650
+ var StorageMigrationClassSchema = _enum([
7651
+ "recordings",
7652
+ "recordingsLow",
7653
+ "eventMedia"
7654
+ ]);
7655
+ /** A destination is always an existing, fully-qualified location id. The
7656
+ * migration API intentionally never changes a source location's `basePath`:
7657
+ * callers create a new `<type>:<slug>` location, then select it here. */
7658
+ var StorageMigrationDestinationsSchema = object({
7659
+ recordings: string().min(1).optional(),
7660
+ recordingsLow: string().min(1).optional(),
7661
+ eventMedia: string().min(1).optional()
7662
+ }).refine((value) => Object.keys(value).length > 0, { message: "select at least one storage class" });
7663
+ /** Shared input for planning and starting an orchestrated storage migration. */
7664
+ var StorageMigrationInputSchema = object({
7665
+ destinations: StorageMigrationDestinationsSchema,
7666
+ throttleMbps: number().min(1).max(1e3).optional()
7667
+ });
7668
+ /** The durable coordinator state machine. The only phase that changes default
7669
+ * locations is `repointing`, after every selected mover has completed and been
7670
+ * verified. */
7671
+ var StorageMigrationPhaseSchema = _enum([
7672
+ "planning",
7673
+ "pausing",
7674
+ "moving",
7675
+ "verifying",
7676
+ "repointing",
7677
+ "refreshing",
7678
+ "resuming",
7679
+ "done",
7680
+ "failed",
7681
+ "cancelled"
7682
+ ]);
7683
+ var StorageMigrationParticipantSchema = _enum([
7684
+ "pipeline",
7685
+ "recorder",
7686
+ "analytics"
7687
+ ]);
7688
+ var StorageMigrationMoveSchema = object({
7689
+ storageClass: StorageMigrationClassSchema,
7690
+ fromLocationId: string(),
7691
+ toLocationId: string(),
7692
+ moverJobId: string().nullable(),
7693
+ state: RelocateJobStateSchema.nullable(),
7694
+ error: string().nullable()
7695
+ });
7696
+ var StorageMigrationJobSchema = object({
7697
+ jobId: string(),
7698
+ phase: StorageMigrationPhaseSchema,
7699
+ destinations: StorageMigrationDestinationsSchema,
7700
+ throttleMbps: number(),
7701
+ moves: array(StorageMigrationMoveSchema),
7702
+ pauseLeaseId: string().nullable(),
7703
+ pausedParticipants: array(StorageMigrationParticipantSchema),
7704
+ repointed: boolean(),
7705
+ cancelRequested: boolean(),
7706
+ startedAt: number(),
7707
+ updatedAt: number(),
7708
+ finishedAt: number().nullable(),
7709
+ error: string().nullable()
7710
+ });
7711
+ var StorageMigrationPlanSchema = object({
7712
+ destinations: StorageMigrationDestinationsSchema,
7713
+ moves: array(object({
7714
+ storageClass: StorageMigrationClassSchema,
7715
+ fromLocationId: string(),
7716
+ toLocationId: string()
7717
+ }))
7638
7718
  });
7639
7719
  /**
7640
7720
  * `StorageLocationType` — an addon-declared id that identifies the *kind* of
@@ -16475,13 +16555,19 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
16475
16555
  }), method(object({ deviceId: number() }), EventPruneCountsSchema, {
16476
16556
  kind: "mutation",
16477
16557
  auth: "admin"
16478
- }), method(RelocateMediaInputSchema, object({ jobId: string() }), {
16558
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
16479
16559
  kind: "mutation",
16480
16560
  auth: "admin"
16481
- }), method(object({}), array(RelocateJobSchema).readonly(), {
16482
- kind: "query",
16561
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
16562
+ kind: "mutation",
16483
16563
  auth: "admin"
16484
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
16564
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
16565
+ kind: "mutation",
16566
+ auth: "admin"
16567
+ }), method(StorageMigrationMediaMoveInputSchema, object({ jobId: string() }), {
16568
+ kind: "mutation",
16569
+ auth: "admin"
16570
+ }), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
16485
16571
  kind: "mutation",
16486
16572
  auth: "admin"
16487
16573
  }), method(OpsLogQueryInputSchema, array(OpsLogEntrySchema).readonly(), {
@@ -18011,7 +18097,13 @@ var NodeInferenceDevicesSchema = object({
18011
18097
  reachable: boolean(),
18012
18098
  devices: array(NodeInferenceDeviceSchema).readonly()
18013
18099
  });
18014
- method(object({
18100
+ method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
18101
+ kind: "mutation",
18102
+ auth: "admin"
18103
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
18104
+ kind: "mutation",
18105
+ auth: "admin"
18106
+ }), method(object({
18015
18107
  deviceId: number(),
18016
18108
  agentNodeId: string()
18017
18109
  }), object({ success: literal(true) }), {
@@ -18776,6 +18868,13 @@ method(object({ locationId: string() }), EvictableUsageSchema), method(object({
18776
18868
  locationId: string(),
18777
18869
  targetBytes: number().int().positive()
18778
18870
  }), EvictResultSchema, { kind: "mutation" });
18871
+ method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin" }), method(StorageMigrationInputSchema, object({ jobId: string() }), {
18872
+ kind: "mutation",
18873
+ auth: "admin"
18874
+ }), method(object({ jobId: string().optional() }), StorageMigrationJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
18875
+ kind: "mutation",
18876
+ auth: "admin"
18877
+ });
18779
18878
  var ProviderInfoSchema = discriminatedUnion("shouldSaveDiskSpace", [object({
18780
18879
  providerId: string().min(1),
18781
18880
  displayName: string().min(1),
@@ -18879,7 +18978,67 @@ var TerminalProfileInfoSchema = object({
18879
18978
  label: string(),
18880
18979
  description: string().optional()
18881
18980
  });
18882
- method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
18981
+ /**
18982
+ * A durable operator-created Terminal instance. Profiles are templates; only
18983
+ * an instance declares a camera.
18984
+ */
18985
+ var TerminalInstanceInfoSchema = object({
18986
+ instanceId: string(),
18987
+ cameraStableId: string(),
18988
+ nodeId: string(),
18989
+ profileId: string(),
18990
+ profileLabel: string(),
18991
+ name: string(),
18992
+ enabled: boolean()
18993
+ });
18994
+ var TerminalLegacyCameraSchema = object({
18995
+ stableId: string(),
18996
+ nodeId: string(),
18997
+ profileId: string(),
18998
+ profileLabel: string(),
18999
+ name: string(),
19000
+ /** Only legacy monitor cameras can retain their historic stable identity. */
19001
+ adoptable: boolean()
19002
+ });
19003
+ var TerminalOutputEventSchema = discriminatedUnion("kind", [object({
19004
+ seq: number().int().positive(),
19005
+ kind: literal("data"),
19006
+ data: string()
19007
+ }), object({
19008
+ seq: number().int().positive(),
19009
+ kind: literal("exit"),
19010
+ exitCode: number().int(),
19011
+ signal: number().int().optional()
19012
+ })]);
19013
+ var TerminalOutputBatchSchema = object({
19014
+ cursor: number().int().nonnegative(),
19015
+ reset: boolean(),
19016
+ snapshot: string().optional(),
19017
+ events: array(TerminalOutputEventSchema).readonly()
19018
+ });
19019
+ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalInstanceInfoSchema).readonly(), { auth: "admin" }), method(object({
19020
+ targetNodeId: string().min(1),
19021
+ profileId: string().min(1),
19022
+ name: string().trim().min(1).max(160).optional()
19023
+ }), TerminalInstanceInfoSchema, {
19024
+ kind: "mutation",
19025
+ auth: "admin"
19026
+ }), method(object({ instanceId: string().min(1) }), _void(), {
19027
+ kind: "mutation",
19028
+ auth: "admin"
19029
+ }), method(object({
19030
+ instanceId: string().min(1),
19031
+ enabled: boolean()
19032
+ }), TerminalInstanceInfoSchema, {
19033
+ kind: "mutation",
19034
+ auth: "admin"
19035
+ }), method(_void(), array(TerminalLegacyCameraSchema).readonly(), { auth: "admin" }), method(object({
19036
+ stableId: string().min(1),
19037
+ name: string().trim().min(1).max(160).optional()
19038
+ }), TerminalInstanceInfoSchema, {
19039
+ kind: "mutation",
19040
+ auth: "admin"
19041
+ }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
18883
19042
  profileId: string(),
18884
19043
  cols: number().int().positive(),
18885
19044
  rows: number().int().positive()
@@ -18893,6 +19052,26 @@ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }),
18893
19052
  }), _void(), {
18894
19053
  kind: "mutation",
18895
19054
  auth: "admin"
19055
+ }), method(object({
19056
+ sessionId: string(),
19057
+ afterSeq: number().int().nonnegative(),
19058
+ waitMs: number().int().min(0).max(2e3).default(0),
19059
+ /**
19060
+ * Wait when a just-opened session has no output yet. Kept opt-in so a
19061
+ * browser's initial repaint remains immediate; the camera snapshot
19062
+ * relay uses it to avoid encoding a blank startup frame.
19063
+ */
19064
+ waitForOutput: boolean().optional()
19065
+ }), TerminalOutputBatchSchema, {
19066
+ kind: "mutation",
19067
+ auth: "admin",
19068
+ timeoutMs: 15e3
19069
+ }), method(object({
19070
+ sessionId: string(),
19071
+ data: string().max(64 * 1024)
19072
+ }), _void(), {
19073
+ kind: "mutation",
19074
+ auth: "admin"
18896
19075
  }), method(object({ sessionId: string() }), _void(), {
18897
19076
  kind: "mutation",
18898
19077
  auth: "admin"
@@ -21380,6 +21559,7 @@ var FaceInfoSchema = object({
21380
21559
  var FaceFilterEnum = _enum([
21381
21560
  "unassigned",
21382
21561
  "recognized",
21562
+ "identified",
21383
21563
  "all"
21384
21564
  ]);
21385
21565
  var MediaFileLiteSchema$1 = object({
@@ -21408,6 +21588,8 @@ method(_void(), array(IdentitySchema).readonly()), method(object({ name: string(
21408
21588
  kind: "mutation",
21409
21589
  auth: "admin"
21410
21590
  }), method(object({
21591
+ /** Restrict to one camera. Absent keeps the cluster-wide gallery view. */
21592
+ deviceId: number().int().optional(),
21411
21593
  limit: number().int().positive().optional(),
21412
21594
  filter: FaceFilterEnum.optional(),
21413
21595
  /**
@@ -23688,6 +23870,10 @@ var OsdSourceSchema = discriminatedUnion("kind", [
23688
23870
  capName: string().min(1).max(64),
23689
23871
  /** Dot path inside the slice, e.g. `detected`, `value`, `mode`. */
23690
23872
  valuePath: string().min(1).max(64)
23873
+ }),
23874
+ object({
23875
+ kind: literal("latest-recognition"),
23876
+ recognition: _enum(["person", "plate"])
23691
23877
  })
23692
23878
  ]);
23693
23879
  var OsdSlotBindingSchema = object({
@@ -23793,6 +23979,15 @@ method(object({ deviceId: number().int() }), object({
23793
23979
  }), object({ success: literal(true) }), {
23794
23980
  kind: "mutation",
23795
23981
  auth: "admin"
23982
+ }), method(object({
23983
+ sourceDeviceId: number().int(),
23984
+ targetDeviceId: number().int()
23985
+ }), object({
23986
+ copied: number().int().nonnegative(),
23987
+ skipped: number().int().nonnegative()
23988
+ }), {
23989
+ kind: "mutation",
23990
+ auth: "admin"
23796
23991
  }), method(object({
23797
23992
  deviceId: number().int(),
23798
23993
  slotId: string().min(1),
@@ -24977,13 +25172,19 @@ method(object({
24977
25172
  }), {
24978
25173
  kind: "mutation",
24979
25174
  auth: "admin"
24980
- }), method(RelocateFootageInputSchema, object({ jobId: string() }), {
25175
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
24981
25176
  kind: "mutation",
24982
25177
  auth: "admin"
24983
- }), method(object({}), array(RelocateJobSchema).readonly(), {
24984
- kind: "query",
25178
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
25179
+ kind: "mutation",
24985
25180
  auth: "admin"
24986
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
25181
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
25182
+ kind: "mutation",
25183
+ auth: "admin"
25184
+ }), method(StorageMigrationFootageMoveInputSchema, object({ jobId: string() }), {
25185
+ kind: "mutation",
25186
+ auth: "admin"
25187
+ }), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
24987
25188
  kind: "mutation",
24988
25189
  auth: "admin"
24989
25190
  });
@@ -30880,6 +31081,12 @@ Object.freeze({
30880
31081
  addonId: null,
30881
31082
  access: "delete"
30882
31083
  },
31084
+ "osdManager.copyDeviceConfiguration": {
31085
+ capName: "osd-manager",
31086
+ capScope: "system",
31087
+ addonId: null,
31088
+ access: "create"
31089
+ },
30883
31090
  "osdManager.getConditionSupport": {
30884
31091
  capName: "osd-manager",
30885
31092
  capScope: "system",
@@ -30976,7 +31183,7 @@ Object.freeze({
30976
31183
  addonId: null,
30977
31184
  access: "create"
30978
31185
  },
30979
- "pipelineAnalytics.cancelMediaRelocate": {
31186
+ "pipelineAnalytics.cancelStorageMigrationMove": {
30980
31187
  capName: "pipeline-analytics",
30981
31188
  capScope: "device",
30982
31189
  addonId: null,
@@ -31048,12 +31255,6 @@ Object.freeze({
31048
31255
  addonId: null,
31049
31256
  access: "view"
31050
31257
  },
31051
- "pipelineAnalytics.getMediaRelocateStatus": {
31052
- capName: "pipeline-analytics",
31053
- capScope: "device",
31054
- addonId: null,
31055
- access: "view"
31056
- },
31057
31258
  "pipelineAnalytics.getMotionEvents": {
31058
31259
  capName: "pipeline-analytics",
31059
31260
  capScope: "device",
@@ -31090,6 +31291,12 @@ Object.freeze({
31090
31291
  addonId: null,
31091
31292
  access: "view"
31092
31293
  },
31294
+ "pipelineAnalytics.getStorageMigrationMoveStatus": {
31295
+ capName: "pipeline-analytics",
31296
+ capScope: "device",
31297
+ addonId: null,
31298
+ access: "view"
31299
+ },
31093
31300
  "pipelineAnalytics.getTrack": {
31094
31301
  capName: "pipeline-analytics",
31095
31302
  capScope: "device",
@@ -31168,6 +31375,12 @@ Object.freeze({
31168
31375
  addonId: null,
31169
31376
  access: "view"
31170
31377
  },
31378
+ "pipelineAnalytics.pauseForStorageMigration": {
31379
+ capName: "pipeline-analytics",
31380
+ capScope: "device",
31381
+ addonId: null,
31382
+ access: "create"
31383
+ },
31171
31384
  "pipelineAnalytics.proposeRetrainAnnotations": {
31172
31385
  capName: "pipeline-analytics",
31173
31386
  capScope: "device",
@@ -31198,7 +31411,7 @@ Object.freeze({
31198
31411
  addonId: null,
31199
31412
  access: "create"
31200
31413
  },
31201
- "pipelineAnalytics.relocateMedia": {
31414
+ "pipelineAnalytics.refreshStorageLocationsForMigration": {
31202
31415
  capName: "pipeline-analytics",
31203
31416
  capScope: "device",
31204
31417
  addonId: null,
@@ -31210,6 +31423,12 @@ Object.freeze({
31210
31423
  addonId: null,
31211
31424
  access: "create"
31212
31425
  },
31426
+ "pipelineAnalytics.resumeForStorageMigration": {
31427
+ capName: "pipeline-analytics",
31428
+ capScope: "device",
31429
+ addonId: null,
31430
+ access: "create"
31431
+ },
31213
31432
  "pipelineAnalytics.saveRetrainAnnotations": {
31214
31433
  capName: "pipeline-analytics",
31215
31434
  capScope: "device",
@@ -31234,6 +31453,12 @@ Object.freeze({
31234
31453
  addonId: null,
31235
31454
  access: "create"
31236
31455
  },
31456
+ "pipelineAnalytics.startStorageMigrationMove": {
31457
+ capName: "pipeline-analytics",
31458
+ capScope: "device",
31459
+ addonId: null,
31460
+ access: "create"
31461
+ },
31237
31462
  "pipelineAnalytics.wipeAllAnalytics": {
31238
31463
  capName: "pipeline-analytics",
31239
31464
  capScope: "device",
@@ -31600,6 +31825,12 @@ Object.freeze({
31600
31825
  addonId: null,
31601
31826
  access: "view"
31602
31827
  },
31828
+ "pipelineOrchestrator.pauseForStorageMigration": {
31829
+ capName: "pipeline-orchestrator",
31830
+ capScope: "system",
31831
+ addonId: null,
31832
+ access: "create"
31833
+ },
31603
31834
  "pipelineOrchestrator.rebalance": {
31604
31835
  capName: "pipeline-orchestrator",
31605
31836
  capScope: "system",
@@ -31624,6 +31855,12 @@ Object.freeze({
31624
31855
  addonId: null,
31625
31856
  access: "view"
31626
31857
  },
31858
+ "pipelineOrchestrator.resumeForStorageMigration": {
31859
+ capName: "pipeline-orchestrator",
31860
+ capScope: "system",
31861
+ addonId: null,
31862
+ access: "create"
31863
+ },
31627
31864
  "pipelineOrchestrator.saveTemplate": {
31628
31865
  capName: "pipeline-orchestrator",
31629
31866
  capScope: "system",
@@ -32020,7 +32257,7 @@ Object.freeze({
32020
32257
  addonId: null,
32021
32258
  access: "create"
32022
32259
  },
32023
- "recording.cancelRelocate": {
32260
+ "recording.cancelStorageMigrationMove": {
32024
32261
  capName: "recording",
32025
32262
  capScope: "system",
32026
32263
  addonId: null,
@@ -32056,7 +32293,7 @@ Object.freeze({
32056
32293
  addonId: null,
32057
32294
  access: "view"
32058
32295
  },
32059
- "recording.getRelocateStatus": {
32296
+ "recording.getStorageMigrationMoveStatus": {
32060
32297
  capName: "recording",
32061
32298
  capScope: "system",
32062
32299
  addonId: null,
@@ -32080,6 +32317,12 @@ Object.freeze({
32080
32317
  addonId: null,
32081
32318
  access: "view"
32082
32319
  },
32320
+ "recording.pauseForStorageMigration": {
32321
+ capName: "recording",
32322
+ capScope: "system",
32323
+ addonId: null,
32324
+ access: "create"
32325
+ },
32083
32326
  "recording.pruneFootage": {
32084
32327
  capName: "recording",
32085
32328
  capScope: "system",
@@ -32098,7 +32341,7 @@ Object.freeze({
32098
32341
  addonId: null,
32099
32342
  access: "view"
32100
32343
  },
32101
- "recording.relocateFootage": {
32344
+ "recording.refreshStorageLocationsForMigration": {
32102
32345
  capName: "recording",
32103
32346
  capScope: "system",
32104
32347
  addonId: null,
@@ -32122,12 +32365,24 @@ Object.freeze({
32122
32365
  addonId: null,
32123
32366
  access: "create"
32124
32367
  },
32368
+ "recording.resumeForStorageMigration": {
32369
+ capName: "recording",
32370
+ capScope: "system",
32371
+ addonId: null,
32372
+ access: "create"
32373
+ },
32125
32374
  "recording.setDeviceConfig": {
32126
32375
  capName: "recording",
32127
32376
  capScope: "system",
32128
32377
  addonId: null,
32129
32378
  access: "create"
32130
32379
  },
32380
+ "recording.startStorageMigrationMove": {
32381
+ capName: "recording",
32382
+ capScope: "system",
32383
+ addonId: null,
32384
+ access: "create"
32385
+ },
32131
32386
  "recordingExport.cancelExport": {
32132
32387
  capName: "recordingExport",
32133
32388
  capScope: "system",
@@ -32518,6 +32773,30 @@ Object.freeze({
32518
32773
  addonId: null,
32519
32774
  access: "view"
32520
32775
  },
32776
+ "storageMigration.cancel": {
32777
+ capName: "storage-migration",
32778
+ capScope: "system",
32779
+ addonId: null,
32780
+ access: "create"
32781
+ },
32782
+ "storageMigration.plan": {
32783
+ capName: "storage-migration",
32784
+ capScope: "system",
32785
+ addonId: null,
32786
+ access: "view"
32787
+ },
32788
+ "storageMigration.start": {
32789
+ capName: "storage-migration",
32790
+ capScope: "system",
32791
+ addonId: null,
32792
+ access: "create"
32793
+ },
32794
+ "storageMigration.status": {
32795
+ capName: "storage-migration",
32796
+ capScope: "system",
32797
+ addonId: null,
32798
+ access: "view"
32799
+ },
32521
32800
  "storageProvider.abortUpload": {
32522
32801
  capName: "storage-provider",
32523
32802
  capScope: "system",
@@ -32896,12 +33175,42 @@ Object.freeze({
32896
33175
  addonId: null,
32897
33176
  access: "create"
32898
33177
  },
33178
+ "terminalSession.adoptLegacyMonitor": {
33179
+ capName: "terminal-session",
33180
+ capScope: "system",
33181
+ addonId: null,
33182
+ access: "create"
33183
+ },
32899
33184
  "terminalSession.close": {
32900
33185
  capName: "terminal-session",
32901
33186
  capScope: "system",
32902
33187
  addonId: null,
32903
33188
  access: "create"
32904
33189
  },
33190
+ "terminalSession.createInstance": {
33191
+ capName: "terminal-session",
33192
+ capScope: "system",
33193
+ addonId: null,
33194
+ access: "create"
33195
+ },
33196
+ "terminalSession.deleteInstance": {
33197
+ capName: "terminal-session",
33198
+ capScope: "system",
33199
+ addonId: null,
33200
+ access: "delete"
33201
+ },
33202
+ "terminalSession.listInstances": {
33203
+ capName: "terminal-session",
33204
+ capScope: "system",
33205
+ addonId: null,
33206
+ access: "view"
33207
+ },
33208
+ "terminalSession.listLegacyCameras": {
33209
+ capName: "terminal-session",
33210
+ capScope: "system",
33211
+ addonId: null,
33212
+ access: "view"
33213
+ },
32905
33214
  "terminalSession.listProfiles": {
32906
33215
  capName: "terminal-session",
32907
33216
  capScope: "system",
@@ -32920,12 +33229,30 @@ Object.freeze({
32920
33229
  addonId: null,
32921
33230
  access: "create"
32922
33231
  },
33232
+ "terminalSession.pullOutput": {
33233
+ capName: "terminal-session",
33234
+ capScope: "system",
33235
+ addonId: null,
33236
+ access: "create"
33237
+ },
32923
33238
  "terminalSession.resize": {
32924
33239
  capName: "terminal-session",
32925
33240
  capScope: "system",
32926
33241
  addonId: null,
32927
33242
  access: "create"
32928
33243
  },
33244
+ "terminalSession.setInstanceEnabled": {
33245
+ capName: "terminal-session",
33246
+ capScope: "system",
33247
+ addonId: null,
33248
+ access: "create"
33249
+ },
33250
+ "terminalSession.writeInput": {
33251
+ capName: "terminal-session",
33252
+ capScope: "system",
33253
+ addonId: null,
33254
+ access: "create"
33255
+ },
32929
33256
  "toast.onToast": {
32930
33257
  capName: "toast",
32931
33258
  capScope: "system",
package/dist/addon.mjs CHANGED
@@ -7585,12 +7585,11 @@ var RecordingConfigSchema = object({
7585
7585
  /**
7586
7586
  * Entity-relocation job state (storage entity-routing spec, Phase 4).
7587
7587
  *
7588
- * One shape shared by the recorder's `relocateFootage` (segments) and
7589
- * pipeline-analytics' `relocateMedia` (event media blobs) so the admin Data
7590
- * page renders both movers with one component. Jobs are in-RAM (a restart
7591
- * forgets them re-running is safe by construction: copy-if-absent, delete
7592
- * after verify) and each completed/failed run also lands one durable ops-log
7593
- * row on the owning addon's surface.
7588
+ * One shape shared by the recorder and pipeline-analytics internal movers.
7589
+ * The public admin surface is `storage-migration`; child jobs remain in RAM
7590
+ * because copy-if-absent, verify, delete and index/row repoint are resumable.
7591
+ * Each completed/failed run also lands one durable ops-log row on its owning
7592
+ * addon surface.
7594
7593
  */
7595
7594
  var RelocateJobStateSchema = _enum([
7596
7595
  "running",
@@ -7617,19 +7616,100 @@ var RelocateJobSchema = object({
7617
7616
  finishedAt: number().nullable(),
7618
7617
  error: string().nullable()
7619
7618
  });
7619
+ /** Profile-derived footage selection used only by the migration coordinator:
7620
+ * `recordings` owns high+mid; `recordingsLow` owns low. */
7621
+ var RelocateFootageClassSchema = _enum(["recordings", "recordingsLow"]);
7620
7622
  var RelocateFootageInputSchema = object({
7621
- deviceId: number().optional(),
7622
7623
  fromLocationId: string(),
7623
7624
  toLocationId: string(),
7624
7625
  entities: array(_enum(["segments"])).optional(),
7626
+ /** Limits relocation to the logical profile class. Omit only for the
7627
+ * pre-orchestration compatibility path. */
7628
+ footageClass: RelocateFootageClassSchema.optional(),
7625
7629
  /** Copy throttle in MB/s (default 40) — the drain is a background chore,
7626
7630
  * never allowed to starve live writers. */
7627
7631
  throttleMbps: number().min(1).max(1e3).optional()
7628
7632
  });
7629
- var RelocateMediaInputSchema = object({
7630
- deviceId: number().optional(),
7633
+ /** Internal, lease-scoped participant operation. It is intentionally separate
7634
+ * from persistent recording settings: a migration never changes
7635
+ * `RecordingConfig.enabled` or camera wrapper bindings. */
7636
+ var StorageMigrationLeaseInputSchema = object({ leaseId: string().min(1) });
7637
+ var StorageMigrationFootageMoveInputSchema = RelocateFootageInputSchema.extend({ leaseId: string().min(1) });
7638
+ var StorageMigrationMediaMoveInputSchema = object({
7631
7639
  toLocationId: string(),
7632
7640
  throttleMbps: number().min(1).max(1e3).optional()
7641
+ }).extend({ leaseId: string().min(1) });
7642
+ /** The independently selectable logical storage classes. `recordings`
7643
+ * encompasses the high and mid segment profiles; `recordingsLow` is low
7644
+ * segments; `eventMedia` is post-analysis blobs. */
7645
+ var StorageMigrationClassSchema = _enum([
7646
+ "recordings",
7647
+ "recordingsLow",
7648
+ "eventMedia"
7649
+ ]);
7650
+ /** A destination is always an existing, fully-qualified location id. The
7651
+ * migration API intentionally never changes a source location's `basePath`:
7652
+ * callers create a new `<type>:<slug>` location, then select it here. */
7653
+ var StorageMigrationDestinationsSchema = object({
7654
+ recordings: string().min(1).optional(),
7655
+ recordingsLow: string().min(1).optional(),
7656
+ eventMedia: string().min(1).optional()
7657
+ }).refine((value) => Object.keys(value).length > 0, { message: "select at least one storage class" });
7658
+ /** Shared input for planning and starting an orchestrated storage migration. */
7659
+ var StorageMigrationInputSchema = object({
7660
+ destinations: StorageMigrationDestinationsSchema,
7661
+ throttleMbps: number().min(1).max(1e3).optional()
7662
+ });
7663
+ /** The durable coordinator state machine. The only phase that changes default
7664
+ * locations is `repointing`, after every selected mover has completed and been
7665
+ * verified. */
7666
+ var StorageMigrationPhaseSchema = _enum([
7667
+ "planning",
7668
+ "pausing",
7669
+ "moving",
7670
+ "verifying",
7671
+ "repointing",
7672
+ "refreshing",
7673
+ "resuming",
7674
+ "done",
7675
+ "failed",
7676
+ "cancelled"
7677
+ ]);
7678
+ var StorageMigrationParticipantSchema = _enum([
7679
+ "pipeline",
7680
+ "recorder",
7681
+ "analytics"
7682
+ ]);
7683
+ var StorageMigrationMoveSchema = object({
7684
+ storageClass: StorageMigrationClassSchema,
7685
+ fromLocationId: string(),
7686
+ toLocationId: string(),
7687
+ moverJobId: string().nullable(),
7688
+ state: RelocateJobStateSchema.nullable(),
7689
+ error: string().nullable()
7690
+ });
7691
+ var StorageMigrationJobSchema = object({
7692
+ jobId: string(),
7693
+ phase: StorageMigrationPhaseSchema,
7694
+ destinations: StorageMigrationDestinationsSchema,
7695
+ throttleMbps: number(),
7696
+ moves: array(StorageMigrationMoveSchema),
7697
+ pauseLeaseId: string().nullable(),
7698
+ pausedParticipants: array(StorageMigrationParticipantSchema),
7699
+ repointed: boolean(),
7700
+ cancelRequested: boolean(),
7701
+ startedAt: number(),
7702
+ updatedAt: number(),
7703
+ finishedAt: number().nullable(),
7704
+ error: string().nullable()
7705
+ });
7706
+ var StorageMigrationPlanSchema = object({
7707
+ destinations: StorageMigrationDestinationsSchema,
7708
+ moves: array(object({
7709
+ storageClass: StorageMigrationClassSchema,
7710
+ fromLocationId: string(),
7711
+ toLocationId: string()
7712
+ }))
7633
7713
  });
7634
7714
  /**
7635
7715
  * `StorageLocationType` — an addon-declared id that identifies the *kind* of
@@ -16470,13 +16550,19 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
16470
16550
  }), method(object({ deviceId: number() }), EventPruneCountsSchema, {
16471
16551
  kind: "mutation",
16472
16552
  auth: "admin"
16473
- }), method(RelocateMediaInputSchema, object({ jobId: string() }), {
16553
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
16474
16554
  kind: "mutation",
16475
16555
  auth: "admin"
16476
- }), method(object({}), array(RelocateJobSchema).readonly(), {
16477
- kind: "query",
16556
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
16557
+ kind: "mutation",
16478
16558
  auth: "admin"
16479
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
16559
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
16560
+ kind: "mutation",
16561
+ auth: "admin"
16562
+ }), method(StorageMigrationMediaMoveInputSchema, object({ jobId: string() }), {
16563
+ kind: "mutation",
16564
+ auth: "admin"
16565
+ }), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
16480
16566
  kind: "mutation",
16481
16567
  auth: "admin"
16482
16568
  }), method(OpsLogQueryInputSchema, array(OpsLogEntrySchema).readonly(), {
@@ -18006,7 +18092,13 @@ var NodeInferenceDevicesSchema = object({
18006
18092
  reachable: boolean(),
18007
18093
  devices: array(NodeInferenceDeviceSchema).readonly()
18008
18094
  });
18009
- method(object({
18095
+ method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
18096
+ kind: "mutation",
18097
+ auth: "admin"
18098
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
18099
+ kind: "mutation",
18100
+ auth: "admin"
18101
+ }), method(object({
18010
18102
  deviceId: number(),
18011
18103
  agentNodeId: string()
18012
18104
  }), object({ success: literal(true) }), {
@@ -18771,6 +18863,13 @@ method(object({ locationId: string() }), EvictableUsageSchema), method(object({
18771
18863
  locationId: string(),
18772
18864
  targetBytes: number().int().positive()
18773
18865
  }), EvictResultSchema, { kind: "mutation" });
18866
+ method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin" }), method(StorageMigrationInputSchema, object({ jobId: string() }), {
18867
+ kind: "mutation",
18868
+ auth: "admin"
18869
+ }), method(object({ jobId: string().optional() }), StorageMigrationJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
18870
+ kind: "mutation",
18871
+ auth: "admin"
18872
+ });
18774
18873
  var ProviderInfoSchema = discriminatedUnion("shouldSaveDiskSpace", [object({
18775
18874
  providerId: string().min(1),
18776
18875
  displayName: string().min(1),
@@ -18874,7 +18973,67 @@ var TerminalProfileInfoSchema = object({
18874
18973
  label: string(),
18875
18974
  description: string().optional()
18876
18975
  });
18877
- method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
18976
+ /**
18977
+ * A durable operator-created Terminal instance. Profiles are templates; only
18978
+ * an instance declares a camera.
18979
+ */
18980
+ var TerminalInstanceInfoSchema = object({
18981
+ instanceId: string(),
18982
+ cameraStableId: string(),
18983
+ nodeId: string(),
18984
+ profileId: string(),
18985
+ profileLabel: string(),
18986
+ name: string(),
18987
+ enabled: boolean()
18988
+ });
18989
+ var TerminalLegacyCameraSchema = object({
18990
+ stableId: string(),
18991
+ nodeId: string(),
18992
+ profileId: string(),
18993
+ profileLabel: string(),
18994
+ name: string(),
18995
+ /** Only legacy monitor cameras can retain their historic stable identity. */
18996
+ adoptable: boolean()
18997
+ });
18998
+ var TerminalOutputEventSchema = discriminatedUnion("kind", [object({
18999
+ seq: number().int().positive(),
19000
+ kind: literal("data"),
19001
+ data: string()
19002
+ }), object({
19003
+ seq: number().int().positive(),
19004
+ kind: literal("exit"),
19005
+ exitCode: number().int(),
19006
+ signal: number().int().optional()
19007
+ })]);
19008
+ var TerminalOutputBatchSchema = object({
19009
+ cursor: number().int().nonnegative(),
19010
+ reset: boolean(),
19011
+ snapshot: string().optional(),
19012
+ events: array(TerminalOutputEventSchema).readonly()
19013
+ });
19014
+ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalInstanceInfoSchema).readonly(), { auth: "admin" }), method(object({
19015
+ targetNodeId: string().min(1),
19016
+ profileId: string().min(1),
19017
+ name: string().trim().min(1).max(160).optional()
19018
+ }), TerminalInstanceInfoSchema, {
19019
+ kind: "mutation",
19020
+ auth: "admin"
19021
+ }), method(object({ instanceId: string().min(1) }), _void(), {
19022
+ kind: "mutation",
19023
+ auth: "admin"
19024
+ }), method(object({
19025
+ instanceId: string().min(1),
19026
+ enabled: boolean()
19027
+ }), TerminalInstanceInfoSchema, {
19028
+ kind: "mutation",
19029
+ auth: "admin"
19030
+ }), method(_void(), array(TerminalLegacyCameraSchema).readonly(), { auth: "admin" }), method(object({
19031
+ stableId: string().min(1),
19032
+ name: string().trim().min(1).max(160).optional()
19033
+ }), TerminalInstanceInfoSchema, {
19034
+ kind: "mutation",
19035
+ auth: "admin"
19036
+ }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
18878
19037
  profileId: string(),
18879
19038
  cols: number().int().positive(),
18880
19039
  rows: number().int().positive()
@@ -18888,6 +19047,26 @@ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }),
18888
19047
  }), _void(), {
18889
19048
  kind: "mutation",
18890
19049
  auth: "admin"
19050
+ }), method(object({
19051
+ sessionId: string(),
19052
+ afterSeq: number().int().nonnegative(),
19053
+ waitMs: number().int().min(0).max(2e3).default(0),
19054
+ /**
19055
+ * Wait when a just-opened session has no output yet. Kept opt-in so a
19056
+ * browser's initial repaint remains immediate; the camera snapshot
19057
+ * relay uses it to avoid encoding a blank startup frame.
19058
+ */
19059
+ waitForOutput: boolean().optional()
19060
+ }), TerminalOutputBatchSchema, {
19061
+ kind: "mutation",
19062
+ auth: "admin",
19063
+ timeoutMs: 15e3
19064
+ }), method(object({
19065
+ sessionId: string(),
19066
+ data: string().max(64 * 1024)
19067
+ }), _void(), {
19068
+ kind: "mutation",
19069
+ auth: "admin"
18891
19070
  }), method(object({ sessionId: string() }), _void(), {
18892
19071
  kind: "mutation",
18893
19072
  auth: "admin"
@@ -21375,6 +21554,7 @@ var FaceInfoSchema = object({
21375
21554
  var FaceFilterEnum = _enum([
21376
21555
  "unassigned",
21377
21556
  "recognized",
21557
+ "identified",
21378
21558
  "all"
21379
21559
  ]);
21380
21560
  var MediaFileLiteSchema$1 = object({
@@ -21403,6 +21583,8 @@ method(_void(), array(IdentitySchema).readonly()), method(object({ name: string(
21403
21583
  kind: "mutation",
21404
21584
  auth: "admin"
21405
21585
  }), method(object({
21586
+ /** Restrict to one camera. Absent keeps the cluster-wide gallery view. */
21587
+ deviceId: number().int().optional(),
21406
21588
  limit: number().int().positive().optional(),
21407
21589
  filter: FaceFilterEnum.optional(),
21408
21590
  /**
@@ -23683,6 +23865,10 @@ var OsdSourceSchema = discriminatedUnion("kind", [
23683
23865
  capName: string().min(1).max(64),
23684
23866
  /** Dot path inside the slice, e.g. `detected`, `value`, `mode`. */
23685
23867
  valuePath: string().min(1).max(64)
23868
+ }),
23869
+ object({
23870
+ kind: literal("latest-recognition"),
23871
+ recognition: _enum(["person", "plate"])
23686
23872
  })
23687
23873
  ]);
23688
23874
  var OsdSlotBindingSchema = object({
@@ -23788,6 +23974,15 @@ method(object({ deviceId: number().int() }), object({
23788
23974
  }), object({ success: literal(true) }), {
23789
23975
  kind: "mutation",
23790
23976
  auth: "admin"
23977
+ }), method(object({
23978
+ sourceDeviceId: number().int(),
23979
+ targetDeviceId: number().int()
23980
+ }), object({
23981
+ copied: number().int().nonnegative(),
23982
+ skipped: number().int().nonnegative()
23983
+ }), {
23984
+ kind: "mutation",
23985
+ auth: "admin"
23791
23986
  }), method(object({
23792
23987
  deviceId: number().int(),
23793
23988
  slotId: string().min(1),
@@ -24972,13 +25167,19 @@ method(object({
24972
25167
  }), {
24973
25168
  kind: "mutation",
24974
25169
  auth: "admin"
24975
- }), method(RelocateFootageInputSchema, object({ jobId: string() }), {
25170
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
24976
25171
  kind: "mutation",
24977
25172
  auth: "admin"
24978
- }), method(object({}), array(RelocateJobSchema).readonly(), {
24979
- kind: "query",
25173
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
25174
+ kind: "mutation",
24980
25175
  auth: "admin"
24981
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
25176
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
25177
+ kind: "mutation",
25178
+ auth: "admin"
25179
+ }), method(StorageMigrationFootageMoveInputSchema, object({ jobId: string() }), {
25180
+ kind: "mutation",
25181
+ auth: "admin"
25182
+ }), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
24982
25183
  kind: "mutation",
24983
25184
  auth: "admin"
24984
25185
  });
@@ -30875,6 +31076,12 @@ Object.freeze({
30875
31076
  addonId: null,
30876
31077
  access: "delete"
30877
31078
  },
31079
+ "osdManager.copyDeviceConfiguration": {
31080
+ capName: "osd-manager",
31081
+ capScope: "system",
31082
+ addonId: null,
31083
+ access: "create"
31084
+ },
30878
31085
  "osdManager.getConditionSupport": {
30879
31086
  capName: "osd-manager",
30880
31087
  capScope: "system",
@@ -30971,7 +31178,7 @@ Object.freeze({
30971
31178
  addonId: null,
30972
31179
  access: "create"
30973
31180
  },
30974
- "pipelineAnalytics.cancelMediaRelocate": {
31181
+ "pipelineAnalytics.cancelStorageMigrationMove": {
30975
31182
  capName: "pipeline-analytics",
30976
31183
  capScope: "device",
30977
31184
  addonId: null,
@@ -31043,12 +31250,6 @@ Object.freeze({
31043
31250
  addonId: null,
31044
31251
  access: "view"
31045
31252
  },
31046
- "pipelineAnalytics.getMediaRelocateStatus": {
31047
- capName: "pipeline-analytics",
31048
- capScope: "device",
31049
- addonId: null,
31050
- access: "view"
31051
- },
31052
31253
  "pipelineAnalytics.getMotionEvents": {
31053
31254
  capName: "pipeline-analytics",
31054
31255
  capScope: "device",
@@ -31085,6 +31286,12 @@ Object.freeze({
31085
31286
  addonId: null,
31086
31287
  access: "view"
31087
31288
  },
31289
+ "pipelineAnalytics.getStorageMigrationMoveStatus": {
31290
+ capName: "pipeline-analytics",
31291
+ capScope: "device",
31292
+ addonId: null,
31293
+ access: "view"
31294
+ },
31088
31295
  "pipelineAnalytics.getTrack": {
31089
31296
  capName: "pipeline-analytics",
31090
31297
  capScope: "device",
@@ -31163,6 +31370,12 @@ Object.freeze({
31163
31370
  addonId: null,
31164
31371
  access: "view"
31165
31372
  },
31373
+ "pipelineAnalytics.pauseForStorageMigration": {
31374
+ capName: "pipeline-analytics",
31375
+ capScope: "device",
31376
+ addonId: null,
31377
+ access: "create"
31378
+ },
31166
31379
  "pipelineAnalytics.proposeRetrainAnnotations": {
31167
31380
  capName: "pipeline-analytics",
31168
31381
  capScope: "device",
@@ -31193,7 +31406,7 @@ Object.freeze({
31193
31406
  addonId: null,
31194
31407
  access: "create"
31195
31408
  },
31196
- "pipelineAnalytics.relocateMedia": {
31409
+ "pipelineAnalytics.refreshStorageLocationsForMigration": {
31197
31410
  capName: "pipeline-analytics",
31198
31411
  capScope: "device",
31199
31412
  addonId: null,
@@ -31205,6 +31418,12 @@ Object.freeze({
31205
31418
  addonId: null,
31206
31419
  access: "create"
31207
31420
  },
31421
+ "pipelineAnalytics.resumeForStorageMigration": {
31422
+ capName: "pipeline-analytics",
31423
+ capScope: "device",
31424
+ addonId: null,
31425
+ access: "create"
31426
+ },
31208
31427
  "pipelineAnalytics.saveRetrainAnnotations": {
31209
31428
  capName: "pipeline-analytics",
31210
31429
  capScope: "device",
@@ -31229,6 +31448,12 @@ Object.freeze({
31229
31448
  addonId: null,
31230
31449
  access: "create"
31231
31450
  },
31451
+ "pipelineAnalytics.startStorageMigrationMove": {
31452
+ capName: "pipeline-analytics",
31453
+ capScope: "device",
31454
+ addonId: null,
31455
+ access: "create"
31456
+ },
31232
31457
  "pipelineAnalytics.wipeAllAnalytics": {
31233
31458
  capName: "pipeline-analytics",
31234
31459
  capScope: "device",
@@ -31595,6 +31820,12 @@ Object.freeze({
31595
31820
  addonId: null,
31596
31821
  access: "view"
31597
31822
  },
31823
+ "pipelineOrchestrator.pauseForStorageMigration": {
31824
+ capName: "pipeline-orchestrator",
31825
+ capScope: "system",
31826
+ addonId: null,
31827
+ access: "create"
31828
+ },
31598
31829
  "pipelineOrchestrator.rebalance": {
31599
31830
  capName: "pipeline-orchestrator",
31600
31831
  capScope: "system",
@@ -31619,6 +31850,12 @@ Object.freeze({
31619
31850
  addonId: null,
31620
31851
  access: "view"
31621
31852
  },
31853
+ "pipelineOrchestrator.resumeForStorageMigration": {
31854
+ capName: "pipeline-orchestrator",
31855
+ capScope: "system",
31856
+ addonId: null,
31857
+ access: "create"
31858
+ },
31622
31859
  "pipelineOrchestrator.saveTemplate": {
31623
31860
  capName: "pipeline-orchestrator",
31624
31861
  capScope: "system",
@@ -32015,7 +32252,7 @@ Object.freeze({
32015
32252
  addonId: null,
32016
32253
  access: "create"
32017
32254
  },
32018
- "recording.cancelRelocate": {
32255
+ "recording.cancelStorageMigrationMove": {
32019
32256
  capName: "recording",
32020
32257
  capScope: "system",
32021
32258
  addonId: null,
@@ -32051,7 +32288,7 @@ Object.freeze({
32051
32288
  addonId: null,
32052
32289
  access: "view"
32053
32290
  },
32054
- "recording.getRelocateStatus": {
32291
+ "recording.getStorageMigrationMoveStatus": {
32055
32292
  capName: "recording",
32056
32293
  capScope: "system",
32057
32294
  addonId: null,
@@ -32075,6 +32312,12 @@ Object.freeze({
32075
32312
  addonId: null,
32076
32313
  access: "view"
32077
32314
  },
32315
+ "recording.pauseForStorageMigration": {
32316
+ capName: "recording",
32317
+ capScope: "system",
32318
+ addonId: null,
32319
+ access: "create"
32320
+ },
32078
32321
  "recording.pruneFootage": {
32079
32322
  capName: "recording",
32080
32323
  capScope: "system",
@@ -32093,7 +32336,7 @@ Object.freeze({
32093
32336
  addonId: null,
32094
32337
  access: "view"
32095
32338
  },
32096
- "recording.relocateFootage": {
32339
+ "recording.refreshStorageLocationsForMigration": {
32097
32340
  capName: "recording",
32098
32341
  capScope: "system",
32099
32342
  addonId: null,
@@ -32117,12 +32360,24 @@ Object.freeze({
32117
32360
  addonId: null,
32118
32361
  access: "create"
32119
32362
  },
32363
+ "recording.resumeForStorageMigration": {
32364
+ capName: "recording",
32365
+ capScope: "system",
32366
+ addonId: null,
32367
+ access: "create"
32368
+ },
32120
32369
  "recording.setDeviceConfig": {
32121
32370
  capName: "recording",
32122
32371
  capScope: "system",
32123
32372
  addonId: null,
32124
32373
  access: "create"
32125
32374
  },
32375
+ "recording.startStorageMigrationMove": {
32376
+ capName: "recording",
32377
+ capScope: "system",
32378
+ addonId: null,
32379
+ access: "create"
32380
+ },
32126
32381
  "recordingExport.cancelExport": {
32127
32382
  capName: "recordingExport",
32128
32383
  capScope: "system",
@@ -32513,6 +32768,30 @@ Object.freeze({
32513
32768
  addonId: null,
32514
32769
  access: "view"
32515
32770
  },
32771
+ "storageMigration.cancel": {
32772
+ capName: "storage-migration",
32773
+ capScope: "system",
32774
+ addonId: null,
32775
+ access: "create"
32776
+ },
32777
+ "storageMigration.plan": {
32778
+ capName: "storage-migration",
32779
+ capScope: "system",
32780
+ addonId: null,
32781
+ access: "view"
32782
+ },
32783
+ "storageMigration.start": {
32784
+ capName: "storage-migration",
32785
+ capScope: "system",
32786
+ addonId: null,
32787
+ access: "create"
32788
+ },
32789
+ "storageMigration.status": {
32790
+ capName: "storage-migration",
32791
+ capScope: "system",
32792
+ addonId: null,
32793
+ access: "view"
32794
+ },
32516
32795
  "storageProvider.abortUpload": {
32517
32796
  capName: "storage-provider",
32518
32797
  capScope: "system",
@@ -32891,12 +33170,42 @@ Object.freeze({
32891
33170
  addonId: null,
32892
33171
  access: "create"
32893
33172
  },
33173
+ "terminalSession.adoptLegacyMonitor": {
33174
+ capName: "terminal-session",
33175
+ capScope: "system",
33176
+ addonId: null,
33177
+ access: "create"
33178
+ },
32894
33179
  "terminalSession.close": {
32895
33180
  capName: "terminal-session",
32896
33181
  capScope: "system",
32897
33182
  addonId: null,
32898
33183
  access: "create"
32899
33184
  },
33185
+ "terminalSession.createInstance": {
33186
+ capName: "terminal-session",
33187
+ capScope: "system",
33188
+ addonId: null,
33189
+ access: "create"
33190
+ },
33191
+ "terminalSession.deleteInstance": {
33192
+ capName: "terminal-session",
33193
+ capScope: "system",
33194
+ addonId: null,
33195
+ access: "delete"
33196
+ },
33197
+ "terminalSession.listInstances": {
33198
+ capName: "terminal-session",
33199
+ capScope: "system",
33200
+ addonId: null,
33201
+ access: "view"
33202
+ },
33203
+ "terminalSession.listLegacyCameras": {
33204
+ capName: "terminal-session",
33205
+ capScope: "system",
33206
+ addonId: null,
33207
+ access: "view"
33208
+ },
32900
33209
  "terminalSession.listProfiles": {
32901
33210
  capName: "terminal-session",
32902
33211
  capScope: "system",
@@ -32915,12 +33224,30 @@ Object.freeze({
32915
33224
  addonId: null,
32916
33225
  access: "create"
32917
33226
  },
33227
+ "terminalSession.pullOutput": {
33228
+ capName: "terminal-session",
33229
+ capScope: "system",
33230
+ addonId: null,
33231
+ access: "create"
33232
+ },
32918
33233
  "terminalSession.resize": {
32919
33234
  capName: "terminal-session",
32920
33235
  capScope: "system",
32921
33236
  addonId: null,
32922
33237
  access: "create"
32923
33238
  },
33239
+ "terminalSession.setInstanceEnabled": {
33240
+ capName: "terminal-session",
33241
+ capScope: "system",
33242
+ addonId: null,
33243
+ access: "create"
33244
+ },
33245
+ "terminalSession.writeInput": {
33246
+ capName: "terminal-session",
33247
+ capScope: "system",
33248
+ addonId: null,
33249
+ access: "create"
33250
+ },
32924
33251
  "toast.onToast": {
32925
33252
  capName: "toast",
32926
33253
  capScope: "system",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-provider-reolink",
3
- "version": "1.2.20",
3
+ "version": "1.2.22",
4
4
  "description": "Reolink camera device provider addon for CamStack — native Baichuan protocol",
5
5
  "keywords": [
6
6
  "camstack",