@camstack/addon-provider-hikvision 1.2.15 → 1.2.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/dist/addon.js +316 -31
  2. package/dist/addon.mjs +316 -31
  3. package/package.json +1 -1
package/dist/addon.js CHANGED
@@ -7546,12 +7546,11 @@ var RecordingConfigSchema = object({
7546
7546
  /**
7547
7547
  * Entity-relocation job state (storage entity-routing spec, Phase 4).
7548
7548
  *
7549
- * One shape shared by the recorder's `relocateFootage` (segments) and
7550
- * pipeline-analytics' `relocateMedia` (event media blobs) so the admin Data
7551
- * page renders both movers with one component. Jobs are in-RAM (a restart
7552
- * forgets them re-running is safe by construction: copy-if-absent, delete
7553
- * after verify) and each completed/failed run also lands one durable ops-log
7554
- * row on the owning addon's surface.
7549
+ * One shape shared by the recorder and pipeline-analytics internal movers.
7550
+ * The public admin surface is `storage-migration`; child jobs remain in RAM
7551
+ * because copy-if-absent, verify, delete and index/row repoint are resumable.
7552
+ * Each completed/failed run also lands one durable ops-log row on its owning
7553
+ * addon surface.
7555
7554
  */
7556
7555
  var RelocateJobStateSchema = _enum([
7557
7556
  "running",
@@ -7578,19 +7577,100 @@ var RelocateJobSchema = object({
7578
7577
  finishedAt: number().nullable(),
7579
7578
  error: string().nullable()
7580
7579
  });
7580
+ /** Profile-derived footage selection used only by the migration coordinator:
7581
+ * `recordings` owns high+mid; `recordingsLow` owns low. */
7582
+ var RelocateFootageClassSchema = _enum(["recordings", "recordingsLow"]);
7581
7583
  var RelocateFootageInputSchema = object({
7582
- deviceId: number().optional(),
7583
7584
  fromLocationId: string(),
7584
7585
  toLocationId: string(),
7585
7586
  entities: array(_enum(["segments"])).optional(),
7587
+ /** Limits relocation to the logical profile class. Omit only for the
7588
+ * pre-orchestration compatibility path. */
7589
+ footageClass: RelocateFootageClassSchema.optional(),
7586
7590
  /** Copy throttle in MB/s (default 40) — the drain is a background chore,
7587
7591
  * never allowed to starve live writers. */
7588
7592
  throttleMbps: number().min(1).max(1e3).optional()
7589
7593
  });
7590
- var RelocateMediaInputSchema = object({
7591
- deviceId: number().optional(),
7594
+ /** Internal, lease-scoped participant operation. It is intentionally separate
7595
+ * from persistent recording settings: a migration never changes
7596
+ * `RecordingConfig.enabled` or camera wrapper bindings. */
7597
+ var StorageMigrationLeaseInputSchema = object({ leaseId: string().min(1) });
7598
+ var StorageMigrationFootageMoveInputSchema = RelocateFootageInputSchema.extend({ leaseId: string().min(1) });
7599
+ var StorageMigrationMediaMoveInputSchema = object({
7592
7600
  toLocationId: string(),
7593
7601
  throttleMbps: number().min(1).max(1e3).optional()
7602
+ }).extend({ leaseId: string().min(1) });
7603
+ /** The independently selectable logical storage classes. `recordings`
7604
+ * encompasses the high and mid segment profiles; `recordingsLow` is low
7605
+ * segments; `eventMedia` is post-analysis blobs. */
7606
+ var StorageMigrationClassSchema = _enum([
7607
+ "recordings",
7608
+ "recordingsLow",
7609
+ "eventMedia"
7610
+ ]);
7611
+ /** A destination is always an existing, fully-qualified location id. The
7612
+ * migration API intentionally never changes a source location's `basePath`:
7613
+ * callers create a new `<type>:<slug>` location, then select it here. */
7614
+ var StorageMigrationDestinationsSchema = object({
7615
+ recordings: string().min(1).optional(),
7616
+ recordingsLow: string().min(1).optional(),
7617
+ eventMedia: string().min(1).optional()
7618
+ }).refine((value) => Object.keys(value).length > 0, { message: "select at least one storage class" });
7619
+ /** Shared input for planning and starting an orchestrated storage migration. */
7620
+ var StorageMigrationInputSchema = object({
7621
+ destinations: StorageMigrationDestinationsSchema,
7622
+ throttleMbps: number().min(1).max(1e3).optional()
7623
+ });
7624
+ /** The durable coordinator state machine. The only phase that changes default
7625
+ * locations is `repointing`, after every selected mover has completed and been
7626
+ * verified. */
7627
+ var StorageMigrationPhaseSchema = _enum([
7628
+ "planning",
7629
+ "pausing",
7630
+ "moving",
7631
+ "verifying",
7632
+ "repointing",
7633
+ "refreshing",
7634
+ "resuming",
7635
+ "done",
7636
+ "failed",
7637
+ "cancelled"
7638
+ ]);
7639
+ var StorageMigrationParticipantSchema = _enum([
7640
+ "pipeline",
7641
+ "recorder",
7642
+ "analytics"
7643
+ ]);
7644
+ var StorageMigrationMoveSchema = object({
7645
+ storageClass: StorageMigrationClassSchema,
7646
+ fromLocationId: string(),
7647
+ toLocationId: string(),
7648
+ moverJobId: string().nullable(),
7649
+ state: RelocateJobStateSchema.nullable(),
7650
+ error: string().nullable()
7651
+ });
7652
+ var StorageMigrationJobSchema = object({
7653
+ jobId: string(),
7654
+ phase: StorageMigrationPhaseSchema,
7655
+ destinations: StorageMigrationDestinationsSchema,
7656
+ throttleMbps: number(),
7657
+ moves: array(StorageMigrationMoveSchema),
7658
+ pauseLeaseId: string().nullable(),
7659
+ pausedParticipants: array(StorageMigrationParticipantSchema),
7660
+ repointed: boolean(),
7661
+ cancelRequested: boolean(),
7662
+ startedAt: number(),
7663
+ updatedAt: number(),
7664
+ finishedAt: number().nullable(),
7665
+ error: string().nullable()
7666
+ });
7667
+ var StorageMigrationPlanSchema = object({
7668
+ destinations: StorageMigrationDestinationsSchema,
7669
+ moves: array(object({
7670
+ storageClass: StorageMigrationClassSchema,
7671
+ fromLocationId: string(),
7672
+ toLocationId: string()
7673
+ }))
7594
7674
  });
7595
7675
  /**
7596
7676
  * `StorageLocationType` — an addon-declared id that identifies the *kind* of
@@ -16431,13 +16511,19 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
16431
16511
  }), method(object({ deviceId: number() }), EventPruneCountsSchema, {
16432
16512
  kind: "mutation",
16433
16513
  auth: "admin"
16434
- }), method(RelocateMediaInputSchema, object({ jobId: string() }), {
16514
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
16435
16515
  kind: "mutation",
16436
16516
  auth: "admin"
16437
- }), method(object({}), array(RelocateJobSchema).readonly(), {
16438
- kind: "query",
16517
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
16518
+ kind: "mutation",
16519
+ auth: "admin"
16520
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
16521
+ kind: "mutation",
16522
+ auth: "admin"
16523
+ }), method(StorageMigrationMediaMoveInputSchema, object({ jobId: string() }), {
16524
+ kind: "mutation",
16439
16525
  auth: "admin"
16440
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
16526
+ }), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
16441
16527
  kind: "mutation",
16442
16528
  auth: "admin"
16443
16529
  }), method(OpsLogQueryInputSchema, array(OpsLogEntrySchema).readonly(), {
@@ -17967,7 +18053,13 @@ var NodeInferenceDevicesSchema = object({
17967
18053
  reachable: boolean(),
17968
18054
  devices: array(NodeInferenceDeviceSchema).readonly()
17969
18055
  });
17970
- method(object({
18056
+ method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
18057
+ kind: "mutation",
18058
+ auth: "admin"
18059
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
18060
+ kind: "mutation",
18061
+ auth: "admin"
18062
+ }), method(object({
17971
18063
  deviceId: number(),
17972
18064
  agentNodeId: string()
17973
18065
  }), object({ success: literal(true) }), {
@@ -18732,6 +18824,13 @@ method(object({ locationId: string() }), EvictableUsageSchema), method(object({
18732
18824
  locationId: string(),
18733
18825
  targetBytes: number().int().positive()
18734
18826
  }), EvictResultSchema, { kind: "mutation" });
18827
+ method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin" }), method(StorageMigrationInputSchema, object({ jobId: string() }), {
18828
+ kind: "mutation",
18829
+ auth: "admin"
18830
+ }), method(object({ jobId: string().optional() }), StorageMigrationJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
18831
+ kind: "mutation",
18832
+ auth: "admin"
18833
+ });
18735
18834
  var ProviderInfoSchema = discriminatedUnion("shouldSaveDiskSpace", [object({
18736
18835
  providerId: string().min(1),
18737
18836
  displayName: string().min(1),
@@ -18835,6 +18934,28 @@ var TerminalProfileInfoSchema = object({
18835
18934
  label: string(),
18836
18935
  description: string().optional()
18837
18936
  });
18937
+ /**
18938
+ * A durable operator-created Terminal instance. Profiles are templates; only
18939
+ * an instance declares a camera.
18940
+ */
18941
+ var TerminalInstanceInfoSchema = object({
18942
+ instanceId: string(),
18943
+ cameraStableId: string(),
18944
+ nodeId: string(),
18945
+ profileId: string(),
18946
+ profileLabel: string(),
18947
+ name: string(),
18948
+ enabled: boolean()
18949
+ });
18950
+ var TerminalLegacyCameraSchema = object({
18951
+ stableId: string(),
18952
+ nodeId: string(),
18953
+ profileId: string(),
18954
+ profileLabel: string(),
18955
+ name: string(),
18956
+ /** Only legacy monitor cameras can retain their historic stable identity. */
18957
+ adoptable: boolean()
18958
+ });
18838
18959
  var TerminalOutputEventSchema = discriminatedUnion("kind", [object({
18839
18960
  seq: number().int().positive(),
18840
18961
  kind: literal("data"),
@@ -18851,7 +18972,29 @@ var TerminalOutputBatchSchema = object({
18851
18972
  snapshot: string().optional(),
18852
18973
  events: array(TerminalOutputEventSchema).readonly()
18853
18974
  });
18854
- method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
18975
+ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalInstanceInfoSchema).readonly(), { auth: "admin" }), method(object({
18976
+ targetNodeId: string().min(1),
18977
+ profileId: string().min(1),
18978
+ name: string().trim().min(1).max(160).optional()
18979
+ }), TerminalInstanceInfoSchema, {
18980
+ kind: "mutation",
18981
+ auth: "admin"
18982
+ }), method(object({ instanceId: string().min(1) }), _void(), {
18983
+ kind: "mutation",
18984
+ auth: "admin"
18985
+ }), method(object({
18986
+ instanceId: string().min(1),
18987
+ enabled: boolean()
18988
+ }), TerminalInstanceInfoSchema, {
18989
+ kind: "mutation",
18990
+ auth: "admin"
18991
+ }), method(_void(), array(TerminalLegacyCameraSchema).readonly(), { auth: "admin" }), method(object({
18992
+ stableId: string().min(1),
18993
+ name: string().trim().min(1).max(160).optional()
18994
+ }), TerminalInstanceInfoSchema, {
18995
+ kind: "mutation",
18996
+ auth: "admin"
18997
+ }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
18855
18998
  profileId: string(),
18856
18999
  cols: number().int().positive(),
18857
19000
  rows: number().int().positive()
@@ -18868,7 +19011,13 @@ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }),
18868
19011
  }), method(object({
18869
19012
  sessionId: string(),
18870
19013
  afterSeq: number().int().nonnegative(),
18871
- waitMs: number().int().min(0).max(2e3).default(0)
19014
+ waitMs: number().int().min(0).max(2e3).default(0),
19015
+ /**
19016
+ * Wait when a just-opened session has no output yet. Kept opt-in so a
19017
+ * browser's initial repaint remains immediate; the camera snapshot
19018
+ * relay uses it to avoid encoding a blank startup frame.
19019
+ */
19020
+ waitForOutput: boolean().optional()
18872
19021
  }), TerminalOutputBatchSchema, {
18873
19022
  kind: "mutation",
18874
19023
  auth: "admin",
@@ -21366,6 +21515,7 @@ var FaceInfoSchema = object({
21366
21515
  var FaceFilterEnum = _enum([
21367
21516
  "unassigned",
21368
21517
  "recognized",
21518
+ "identified",
21369
21519
  "all"
21370
21520
  ]);
21371
21521
  var MediaFileLiteSchema$1 = object({
@@ -21394,6 +21544,8 @@ method(_void(), array(IdentitySchema).readonly()), method(object({ name: string(
21394
21544
  kind: "mutation",
21395
21545
  auth: "admin"
21396
21546
  }), method(object({
21547
+ /** Restrict to one camera. Absent keeps the cluster-wide gallery view. */
21548
+ deviceId: number().int().optional(),
21397
21549
  limit: number().int().positive().optional(),
21398
21550
  filter: FaceFilterEnum.optional(),
21399
21551
  /**
@@ -23720,6 +23872,10 @@ var OsdSourceSchema = discriminatedUnion("kind", [
23720
23872
  capName: string().min(1).max(64),
23721
23873
  /** Dot path inside the slice, e.g. `detected`, `value`, `mode`. */
23722
23874
  valuePath: string().min(1).max(64)
23875
+ }),
23876
+ object({
23877
+ kind: literal("latest-recognition"),
23878
+ recognition: _enum(["person", "plate"])
23723
23879
  })
23724
23880
  ]);
23725
23881
  var OsdSlotBindingSchema = object({
@@ -23825,6 +23981,15 @@ method(object({ deviceId: number().int() }), object({
23825
23981
  }), object({ success: literal(true) }), {
23826
23982
  kind: "mutation",
23827
23983
  auth: "admin"
23984
+ }), method(object({
23985
+ sourceDeviceId: number().int(),
23986
+ targetDeviceId: number().int()
23987
+ }), object({
23988
+ copied: number().int().nonnegative(),
23989
+ skipped: number().int().nonnegative()
23990
+ }), {
23991
+ kind: "mutation",
23992
+ auth: "admin"
23828
23993
  }), method(object({
23829
23994
  deviceId: number().int(),
23830
23995
  slotId: string().min(1),
@@ -25009,13 +25174,19 @@ method(object({
25009
25174
  }), {
25010
25175
  kind: "mutation",
25011
25176
  auth: "admin"
25012
- }), method(RelocateFootageInputSchema, object({ jobId: string() }), {
25177
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
25013
25178
  kind: "mutation",
25014
25179
  auth: "admin"
25015
- }), method(object({}), array(RelocateJobSchema).readonly(), {
25016
- kind: "query",
25180
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
25181
+ kind: "mutation",
25017
25182
  auth: "admin"
25018
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
25183
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
25184
+ kind: "mutation",
25185
+ auth: "admin"
25186
+ }), method(StorageMigrationFootageMoveInputSchema, object({ jobId: string() }), {
25187
+ kind: "mutation",
25188
+ auth: "admin"
25189
+ }), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
25019
25190
  kind: "mutation",
25020
25191
  auth: "admin"
25021
25192
  });
@@ -30978,6 +31149,12 @@ Object.freeze({
30978
31149
  addonId: null,
30979
31150
  access: "delete"
30980
31151
  },
31152
+ "osdManager.copyDeviceConfiguration": {
31153
+ capName: "osd-manager",
31154
+ capScope: "system",
31155
+ addonId: null,
31156
+ access: "create"
31157
+ },
30981
31158
  "osdManager.getConditionSupport": {
30982
31159
  capName: "osd-manager",
30983
31160
  capScope: "system",
@@ -31074,7 +31251,7 @@ Object.freeze({
31074
31251
  addonId: null,
31075
31252
  access: "create"
31076
31253
  },
31077
- "pipelineAnalytics.cancelMediaRelocate": {
31254
+ "pipelineAnalytics.cancelStorageMigrationMove": {
31078
31255
  capName: "pipeline-analytics",
31079
31256
  capScope: "device",
31080
31257
  addonId: null,
@@ -31146,12 +31323,6 @@ Object.freeze({
31146
31323
  addonId: null,
31147
31324
  access: "view"
31148
31325
  },
31149
- "pipelineAnalytics.getMediaRelocateStatus": {
31150
- capName: "pipeline-analytics",
31151
- capScope: "device",
31152
- addonId: null,
31153
- access: "view"
31154
- },
31155
31326
  "pipelineAnalytics.getMotionEvents": {
31156
31327
  capName: "pipeline-analytics",
31157
31328
  capScope: "device",
@@ -31188,6 +31359,12 @@ Object.freeze({
31188
31359
  addonId: null,
31189
31360
  access: "view"
31190
31361
  },
31362
+ "pipelineAnalytics.getStorageMigrationMoveStatus": {
31363
+ capName: "pipeline-analytics",
31364
+ capScope: "device",
31365
+ addonId: null,
31366
+ access: "view"
31367
+ },
31191
31368
  "pipelineAnalytics.getTrack": {
31192
31369
  capName: "pipeline-analytics",
31193
31370
  capScope: "device",
@@ -31266,6 +31443,12 @@ Object.freeze({
31266
31443
  addonId: null,
31267
31444
  access: "view"
31268
31445
  },
31446
+ "pipelineAnalytics.pauseForStorageMigration": {
31447
+ capName: "pipeline-analytics",
31448
+ capScope: "device",
31449
+ addonId: null,
31450
+ access: "create"
31451
+ },
31269
31452
  "pipelineAnalytics.proposeRetrainAnnotations": {
31270
31453
  capName: "pipeline-analytics",
31271
31454
  capScope: "device",
@@ -31296,7 +31479,7 @@ Object.freeze({
31296
31479
  addonId: null,
31297
31480
  access: "create"
31298
31481
  },
31299
- "pipelineAnalytics.relocateMedia": {
31482
+ "pipelineAnalytics.refreshStorageLocationsForMigration": {
31300
31483
  capName: "pipeline-analytics",
31301
31484
  capScope: "device",
31302
31485
  addonId: null,
@@ -31308,6 +31491,12 @@ Object.freeze({
31308
31491
  addonId: null,
31309
31492
  access: "create"
31310
31493
  },
31494
+ "pipelineAnalytics.resumeForStorageMigration": {
31495
+ capName: "pipeline-analytics",
31496
+ capScope: "device",
31497
+ addonId: null,
31498
+ access: "create"
31499
+ },
31311
31500
  "pipelineAnalytics.saveRetrainAnnotations": {
31312
31501
  capName: "pipeline-analytics",
31313
31502
  capScope: "device",
@@ -31332,6 +31521,12 @@ Object.freeze({
31332
31521
  addonId: null,
31333
31522
  access: "create"
31334
31523
  },
31524
+ "pipelineAnalytics.startStorageMigrationMove": {
31525
+ capName: "pipeline-analytics",
31526
+ capScope: "device",
31527
+ addonId: null,
31528
+ access: "create"
31529
+ },
31335
31530
  "pipelineAnalytics.wipeAllAnalytics": {
31336
31531
  capName: "pipeline-analytics",
31337
31532
  capScope: "device",
@@ -31698,6 +31893,12 @@ Object.freeze({
31698
31893
  addonId: null,
31699
31894
  access: "view"
31700
31895
  },
31896
+ "pipelineOrchestrator.pauseForStorageMigration": {
31897
+ capName: "pipeline-orchestrator",
31898
+ capScope: "system",
31899
+ addonId: null,
31900
+ access: "create"
31901
+ },
31701
31902
  "pipelineOrchestrator.rebalance": {
31702
31903
  capName: "pipeline-orchestrator",
31703
31904
  capScope: "system",
@@ -31722,6 +31923,12 @@ Object.freeze({
31722
31923
  addonId: null,
31723
31924
  access: "view"
31724
31925
  },
31926
+ "pipelineOrchestrator.resumeForStorageMigration": {
31927
+ capName: "pipeline-orchestrator",
31928
+ capScope: "system",
31929
+ addonId: null,
31930
+ access: "create"
31931
+ },
31725
31932
  "pipelineOrchestrator.saveTemplate": {
31726
31933
  capName: "pipeline-orchestrator",
31727
31934
  capScope: "system",
@@ -32118,7 +32325,7 @@ Object.freeze({
32118
32325
  addonId: null,
32119
32326
  access: "create"
32120
32327
  },
32121
- "recording.cancelRelocate": {
32328
+ "recording.cancelStorageMigrationMove": {
32122
32329
  capName: "recording",
32123
32330
  capScope: "system",
32124
32331
  addonId: null,
@@ -32154,7 +32361,7 @@ Object.freeze({
32154
32361
  addonId: null,
32155
32362
  access: "view"
32156
32363
  },
32157
- "recording.getRelocateStatus": {
32364
+ "recording.getStorageMigrationMoveStatus": {
32158
32365
  capName: "recording",
32159
32366
  capScope: "system",
32160
32367
  addonId: null,
@@ -32178,6 +32385,12 @@ Object.freeze({
32178
32385
  addonId: null,
32179
32386
  access: "view"
32180
32387
  },
32388
+ "recording.pauseForStorageMigration": {
32389
+ capName: "recording",
32390
+ capScope: "system",
32391
+ addonId: null,
32392
+ access: "create"
32393
+ },
32181
32394
  "recording.pruneFootage": {
32182
32395
  capName: "recording",
32183
32396
  capScope: "system",
@@ -32196,7 +32409,7 @@ Object.freeze({
32196
32409
  addonId: null,
32197
32410
  access: "view"
32198
32411
  },
32199
- "recording.relocateFootage": {
32412
+ "recording.refreshStorageLocationsForMigration": {
32200
32413
  capName: "recording",
32201
32414
  capScope: "system",
32202
32415
  addonId: null,
@@ -32220,12 +32433,24 @@ Object.freeze({
32220
32433
  addonId: null,
32221
32434
  access: "create"
32222
32435
  },
32436
+ "recording.resumeForStorageMigration": {
32437
+ capName: "recording",
32438
+ capScope: "system",
32439
+ addonId: null,
32440
+ access: "create"
32441
+ },
32223
32442
  "recording.setDeviceConfig": {
32224
32443
  capName: "recording",
32225
32444
  capScope: "system",
32226
32445
  addonId: null,
32227
32446
  access: "create"
32228
32447
  },
32448
+ "recording.startStorageMigrationMove": {
32449
+ capName: "recording",
32450
+ capScope: "system",
32451
+ addonId: null,
32452
+ access: "create"
32453
+ },
32229
32454
  "recordingExport.cancelExport": {
32230
32455
  capName: "recordingExport",
32231
32456
  capScope: "system",
@@ -32616,6 +32841,30 @@ Object.freeze({
32616
32841
  addonId: null,
32617
32842
  access: "view"
32618
32843
  },
32844
+ "storageMigration.cancel": {
32845
+ capName: "storage-migration",
32846
+ capScope: "system",
32847
+ addonId: null,
32848
+ access: "create"
32849
+ },
32850
+ "storageMigration.plan": {
32851
+ capName: "storage-migration",
32852
+ capScope: "system",
32853
+ addonId: null,
32854
+ access: "view"
32855
+ },
32856
+ "storageMigration.start": {
32857
+ capName: "storage-migration",
32858
+ capScope: "system",
32859
+ addonId: null,
32860
+ access: "create"
32861
+ },
32862
+ "storageMigration.status": {
32863
+ capName: "storage-migration",
32864
+ capScope: "system",
32865
+ addonId: null,
32866
+ access: "view"
32867
+ },
32619
32868
  "storageProvider.abortUpload": {
32620
32869
  capName: "storage-provider",
32621
32870
  capScope: "system",
@@ -32994,12 +33243,42 @@ Object.freeze({
32994
33243
  addonId: null,
32995
33244
  access: "create"
32996
33245
  },
33246
+ "terminalSession.adoptLegacyMonitor": {
33247
+ capName: "terminal-session",
33248
+ capScope: "system",
33249
+ addonId: null,
33250
+ access: "create"
33251
+ },
32997
33252
  "terminalSession.close": {
32998
33253
  capName: "terminal-session",
32999
33254
  capScope: "system",
33000
33255
  addonId: null,
33001
33256
  access: "create"
33002
33257
  },
33258
+ "terminalSession.createInstance": {
33259
+ capName: "terminal-session",
33260
+ capScope: "system",
33261
+ addonId: null,
33262
+ access: "create"
33263
+ },
33264
+ "terminalSession.deleteInstance": {
33265
+ capName: "terminal-session",
33266
+ capScope: "system",
33267
+ addonId: null,
33268
+ access: "delete"
33269
+ },
33270
+ "terminalSession.listInstances": {
33271
+ capName: "terminal-session",
33272
+ capScope: "system",
33273
+ addonId: null,
33274
+ access: "view"
33275
+ },
33276
+ "terminalSession.listLegacyCameras": {
33277
+ capName: "terminal-session",
33278
+ capScope: "system",
33279
+ addonId: null,
33280
+ access: "view"
33281
+ },
33003
33282
  "terminalSession.listProfiles": {
33004
33283
  capName: "terminal-session",
33005
33284
  capScope: "system",
@@ -33030,6 +33309,12 @@ Object.freeze({
33030
33309
  addonId: null,
33031
33310
  access: "create"
33032
33311
  },
33312
+ "terminalSession.setInstanceEnabled": {
33313
+ capName: "terminal-session",
33314
+ capScope: "system",
33315
+ addonId: null,
33316
+ access: "create"
33317
+ },
33033
33318
  "terminalSession.writeInput": {
33034
33319
  capName: "terminal-session",
33035
33320
  capScope: "system",
package/dist/addon.mjs CHANGED
@@ -7547,12 +7547,11 @@ var RecordingConfigSchema = object({
7547
7547
  /**
7548
7548
  * Entity-relocation job state (storage entity-routing spec, Phase 4).
7549
7549
  *
7550
- * One shape shared by the recorder's `relocateFootage` (segments) and
7551
- * pipeline-analytics' `relocateMedia` (event media blobs) so the admin Data
7552
- * page renders both movers with one component. Jobs are in-RAM (a restart
7553
- * forgets them re-running is safe by construction: copy-if-absent, delete
7554
- * after verify) and each completed/failed run also lands one durable ops-log
7555
- * row on the owning addon's surface.
7550
+ * One shape shared by the recorder and pipeline-analytics internal movers.
7551
+ * The public admin surface is `storage-migration`; child jobs remain in RAM
7552
+ * because copy-if-absent, verify, delete and index/row repoint are resumable.
7553
+ * Each completed/failed run also lands one durable ops-log row on its owning
7554
+ * addon surface.
7556
7555
  */
7557
7556
  var RelocateJobStateSchema = _enum([
7558
7557
  "running",
@@ -7579,19 +7578,100 @@ var RelocateJobSchema = object({
7579
7578
  finishedAt: number().nullable(),
7580
7579
  error: string().nullable()
7581
7580
  });
7581
+ /** Profile-derived footage selection used only by the migration coordinator:
7582
+ * `recordings` owns high+mid; `recordingsLow` owns low. */
7583
+ var RelocateFootageClassSchema = _enum(["recordings", "recordingsLow"]);
7582
7584
  var RelocateFootageInputSchema = object({
7583
- deviceId: number().optional(),
7584
7585
  fromLocationId: string(),
7585
7586
  toLocationId: string(),
7586
7587
  entities: array(_enum(["segments"])).optional(),
7588
+ /** Limits relocation to the logical profile class. Omit only for the
7589
+ * pre-orchestration compatibility path. */
7590
+ footageClass: RelocateFootageClassSchema.optional(),
7587
7591
  /** Copy throttle in MB/s (default 40) — the drain is a background chore,
7588
7592
  * never allowed to starve live writers. */
7589
7593
  throttleMbps: number().min(1).max(1e3).optional()
7590
7594
  });
7591
- var RelocateMediaInputSchema = object({
7592
- deviceId: number().optional(),
7595
+ /** Internal, lease-scoped participant operation. It is intentionally separate
7596
+ * from persistent recording settings: a migration never changes
7597
+ * `RecordingConfig.enabled` or camera wrapper bindings. */
7598
+ var StorageMigrationLeaseInputSchema = object({ leaseId: string().min(1) });
7599
+ var StorageMigrationFootageMoveInputSchema = RelocateFootageInputSchema.extend({ leaseId: string().min(1) });
7600
+ var StorageMigrationMediaMoveInputSchema = object({
7593
7601
  toLocationId: string(),
7594
7602
  throttleMbps: number().min(1).max(1e3).optional()
7603
+ }).extend({ leaseId: string().min(1) });
7604
+ /** The independently selectable logical storage classes. `recordings`
7605
+ * encompasses the high and mid segment profiles; `recordingsLow` is low
7606
+ * segments; `eventMedia` is post-analysis blobs. */
7607
+ var StorageMigrationClassSchema = _enum([
7608
+ "recordings",
7609
+ "recordingsLow",
7610
+ "eventMedia"
7611
+ ]);
7612
+ /** A destination is always an existing, fully-qualified location id. The
7613
+ * migration API intentionally never changes a source location's `basePath`:
7614
+ * callers create a new `<type>:<slug>` location, then select it here. */
7615
+ var StorageMigrationDestinationsSchema = object({
7616
+ recordings: string().min(1).optional(),
7617
+ recordingsLow: string().min(1).optional(),
7618
+ eventMedia: string().min(1).optional()
7619
+ }).refine((value) => Object.keys(value).length > 0, { message: "select at least one storage class" });
7620
+ /** Shared input for planning and starting an orchestrated storage migration. */
7621
+ var StorageMigrationInputSchema = object({
7622
+ destinations: StorageMigrationDestinationsSchema,
7623
+ throttleMbps: number().min(1).max(1e3).optional()
7624
+ });
7625
+ /** The durable coordinator state machine. The only phase that changes default
7626
+ * locations is `repointing`, after every selected mover has completed and been
7627
+ * verified. */
7628
+ var StorageMigrationPhaseSchema = _enum([
7629
+ "planning",
7630
+ "pausing",
7631
+ "moving",
7632
+ "verifying",
7633
+ "repointing",
7634
+ "refreshing",
7635
+ "resuming",
7636
+ "done",
7637
+ "failed",
7638
+ "cancelled"
7639
+ ]);
7640
+ var StorageMigrationParticipantSchema = _enum([
7641
+ "pipeline",
7642
+ "recorder",
7643
+ "analytics"
7644
+ ]);
7645
+ var StorageMigrationMoveSchema = object({
7646
+ storageClass: StorageMigrationClassSchema,
7647
+ fromLocationId: string(),
7648
+ toLocationId: string(),
7649
+ moverJobId: string().nullable(),
7650
+ state: RelocateJobStateSchema.nullable(),
7651
+ error: string().nullable()
7652
+ });
7653
+ var StorageMigrationJobSchema = object({
7654
+ jobId: string(),
7655
+ phase: StorageMigrationPhaseSchema,
7656
+ destinations: StorageMigrationDestinationsSchema,
7657
+ throttleMbps: number(),
7658
+ moves: array(StorageMigrationMoveSchema),
7659
+ pauseLeaseId: string().nullable(),
7660
+ pausedParticipants: array(StorageMigrationParticipantSchema),
7661
+ repointed: boolean(),
7662
+ cancelRequested: boolean(),
7663
+ startedAt: number(),
7664
+ updatedAt: number(),
7665
+ finishedAt: number().nullable(),
7666
+ error: string().nullable()
7667
+ });
7668
+ var StorageMigrationPlanSchema = object({
7669
+ destinations: StorageMigrationDestinationsSchema,
7670
+ moves: array(object({
7671
+ storageClass: StorageMigrationClassSchema,
7672
+ fromLocationId: string(),
7673
+ toLocationId: string()
7674
+ }))
7595
7675
  });
7596
7676
  /**
7597
7677
  * `StorageLocationType` — an addon-declared id that identifies the *kind* of
@@ -16432,13 +16512,19 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
16432
16512
  }), method(object({ deviceId: number() }), EventPruneCountsSchema, {
16433
16513
  kind: "mutation",
16434
16514
  auth: "admin"
16435
- }), method(RelocateMediaInputSchema, object({ jobId: string() }), {
16515
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
16436
16516
  kind: "mutation",
16437
16517
  auth: "admin"
16438
- }), method(object({}), array(RelocateJobSchema).readonly(), {
16439
- kind: "query",
16518
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
16519
+ kind: "mutation",
16520
+ auth: "admin"
16521
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
16522
+ kind: "mutation",
16523
+ auth: "admin"
16524
+ }), method(StorageMigrationMediaMoveInputSchema, object({ jobId: string() }), {
16525
+ kind: "mutation",
16440
16526
  auth: "admin"
16441
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
16527
+ }), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
16442
16528
  kind: "mutation",
16443
16529
  auth: "admin"
16444
16530
  }), method(OpsLogQueryInputSchema, array(OpsLogEntrySchema).readonly(), {
@@ -17968,7 +18054,13 @@ var NodeInferenceDevicesSchema = object({
17968
18054
  reachable: boolean(),
17969
18055
  devices: array(NodeInferenceDeviceSchema).readonly()
17970
18056
  });
17971
- method(object({
18057
+ method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
18058
+ kind: "mutation",
18059
+ auth: "admin"
18060
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
18061
+ kind: "mutation",
18062
+ auth: "admin"
18063
+ }), method(object({
17972
18064
  deviceId: number(),
17973
18065
  agentNodeId: string()
17974
18066
  }), object({ success: literal(true) }), {
@@ -18733,6 +18825,13 @@ method(object({ locationId: string() }), EvictableUsageSchema), method(object({
18733
18825
  locationId: string(),
18734
18826
  targetBytes: number().int().positive()
18735
18827
  }), EvictResultSchema, { kind: "mutation" });
18828
+ method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin" }), method(StorageMigrationInputSchema, object({ jobId: string() }), {
18829
+ kind: "mutation",
18830
+ auth: "admin"
18831
+ }), method(object({ jobId: string().optional() }), StorageMigrationJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
18832
+ kind: "mutation",
18833
+ auth: "admin"
18834
+ });
18736
18835
  var ProviderInfoSchema = discriminatedUnion("shouldSaveDiskSpace", [object({
18737
18836
  providerId: string().min(1),
18738
18837
  displayName: string().min(1),
@@ -18836,6 +18935,28 @@ var TerminalProfileInfoSchema = object({
18836
18935
  label: string(),
18837
18936
  description: string().optional()
18838
18937
  });
18938
+ /**
18939
+ * A durable operator-created Terminal instance. Profiles are templates; only
18940
+ * an instance declares a camera.
18941
+ */
18942
+ var TerminalInstanceInfoSchema = object({
18943
+ instanceId: string(),
18944
+ cameraStableId: string(),
18945
+ nodeId: string(),
18946
+ profileId: string(),
18947
+ profileLabel: string(),
18948
+ name: string(),
18949
+ enabled: boolean()
18950
+ });
18951
+ var TerminalLegacyCameraSchema = object({
18952
+ stableId: string(),
18953
+ nodeId: string(),
18954
+ profileId: string(),
18955
+ profileLabel: string(),
18956
+ name: string(),
18957
+ /** Only legacy monitor cameras can retain their historic stable identity. */
18958
+ adoptable: boolean()
18959
+ });
18839
18960
  var TerminalOutputEventSchema = discriminatedUnion("kind", [object({
18840
18961
  seq: number().int().positive(),
18841
18962
  kind: literal("data"),
@@ -18852,7 +18973,29 @@ var TerminalOutputBatchSchema = object({
18852
18973
  snapshot: string().optional(),
18853
18974
  events: array(TerminalOutputEventSchema).readonly()
18854
18975
  });
18855
- method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
18976
+ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalInstanceInfoSchema).readonly(), { auth: "admin" }), method(object({
18977
+ targetNodeId: string().min(1),
18978
+ profileId: string().min(1),
18979
+ name: string().trim().min(1).max(160).optional()
18980
+ }), TerminalInstanceInfoSchema, {
18981
+ kind: "mutation",
18982
+ auth: "admin"
18983
+ }), method(object({ instanceId: string().min(1) }), _void(), {
18984
+ kind: "mutation",
18985
+ auth: "admin"
18986
+ }), method(object({
18987
+ instanceId: string().min(1),
18988
+ enabled: boolean()
18989
+ }), TerminalInstanceInfoSchema, {
18990
+ kind: "mutation",
18991
+ auth: "admin"
18992
+ }), method(_void(), array(TerminalLegacyCameraSchema).readonly(), { auth: "admin" }), method(object({
18993
+ stableId: string().min(1),
18994
+ name: string().trim().min(1).max(160).optional()
18995
+ }), TerminalInstanceInfoSchema, {
18996
+ kind: "mutation",
18997
+ auth: "admin"
18998
+ }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
18856
18999
  profileId: string(),
18857
19000
  cols: number().int().positive(),
18858
19001
  rows: number().int().positive()
@@ -18869,7 +19012,13 @@ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }),
18869
19012
  }), method(object({
18870
19013
  sessionId: string(),
18871
19014
  afterSeq: number().int().nonnegative(),
18872
- waitMs: number().int().min(0).max(2e3).default(0)
19015
+ waitMs: number().int().min(0).max(2e3).default(0),
19016
+ /**
19017
+ * Wait when a just-opened session has no output yet. Kept opt-in so a
19018
+ * browser's initial repaint remains immediate; the camera snapshot
19019
+ * relay uses it to avoid encoding a blank startup frame.
19020
+ */
19021
+ waitForOutput: boolean().optional()
18873
19022
  }), TerminalOutputBatchSchema, {
18874
19023
  kind: "mutation",
18875
19024
  auth: "admin",
@@ -21367,6 +21516,7 @@ var FaceInfoSchema = object({
21367
21516
  var FaceFilterEnum = _enum([
21368
21517
  "unassigned",
21369
21518
  "recognized",
21519
+ "identified",
21370
21520
  "all"
21371
21521
  ]);
21372
21522
  var MediaFileLiteSchema$1 = object({
@@ -21395,6 +21545,8 @@ method(_void(), array(IdentitySchema).readonly()), method(object({ name: string(
21395
21545
  kind: "mutation",
21396
21546
  auth: "admin"
21397
21547
  }), method(object({
21548
+ /** Restrict to one camera. Absent keeps the cluster-wide gallery view. */
21549
+ deviceId: number().int().optional(),
21398
21550
  limit: number().int().positive().optional(),
21399
21551
  filter: FaceFilterEnum.optional(),
21400
21552
  /**
@@ -23721,6 +23873,10 @@ var OsdSourceSchema = discriminatedUnion("kind", [
23721
23873
  capName: string().min(1).max(64),
23722
23874
  /** Dot path inside the slice, e.g. `detected`, `value`, `mode`. */
23723
23875
  valuePath: string().min(1).max(64)
23876
+ }),
23877
+ object({
23878
+ kind: literal("latest-recognition"),
23879
+ recognition: _enum(["person", "plate"])
23724
23880
  })
23725
23881
  ]);
23726
23882
  var OsdSlotBindingSchema = object({
@@ -23826,6 +23982,15 @@ method(object({ deviceId: number().int() }), object({
23826
23982
  }), object({ success: literal(true) }), {
23827
23983
  kind: "mutation",
23828
23984
  auth: "admin"
23985
+ }), method(object({
23986
+ sourceDeviceId: number().int(),
23987
+ targetDeviceId: number().int()
23988
+ }), object({
23989
+ copied: number().int().nonnegative(),
23990
+ skipped: number().int().nonnegative()
23991
+ }), {
23992
+ kind: "mutation",
23993
+ auth: "admin"
23829
23994
  }), method(object({
23830
23995
  deviceId: number().int(),
23831
23996
  slotId: string().min(1),
@@ -25010,13 +25175,19 @@ method(object({
25010
25175
  }), {
25011
25176
  kind: "mutation",
25012
25177
  auth: "admin"
25013
- }), method(RelocateFootageInputSchema, object({ jobId: string() }), {
25178
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
25014
25179
  kind: "mutation",
25015
25180
  auth: "admin"
25016
- }), method(object({}), array(RelocateJobSchema).readonly(), {
25017
- kind: "query",
25181
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
25182
+ kind: "mutation",
25018
25183
  auth: "admin"
25019
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
25184
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
25185
+ kind: "mutation",
25186
+ auth: "admin"
25187
+ }), method(StorageMigrationFootageMoveInputSchema, object({ jobId: string() }), {
25188
+ kind: "mutation",
25189
+ auth: "admin"
25190
+ }), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
25020
25191
  kind: "mutation",
25021
25192
  auth: "admin"
25022
25193
  });
@@ -30979,6 +31150,12 @@ Object.freeze({
30979
31150
  addonId: null,
30980
31151
  access: "delete"
30981
31152
  },
31153
+ "osdManager.copyDeviceConfiguration": {
31154
+ capName: "osd-manager",
31155
+ capScope: "system",
31156
+ addonId: null,
31157
+ access: "create"
31158
+ },
30982
31159
  "osdManager.getConditionSupport": {
30983
31160
  capName: "osd-manager",
30984
31161
  capScope: "system",
@@ -31075,7 +31252,7 @@ Object.freeze({
31075
31252
  addonId: null,
31076
31253
  access: "create"
31077
31254
  },
31078
- "pipelineAnalytics.cancelMediaRelocate": {
31255
+ "pipelineAnalytics.cancelStorageMigrationMove": {
31079
31256
  capName: "pipeline-analytics",
31080
31257
  capScope: "device",
31081
31258
  addonId: null,
@@ -31147,12 +31324,6 @@ Object.freeze({
31147
31324
  addonId: null,
31148
31325
  access: "view"
31149
31326
  },
31150
- "pipelineAnalytics.getMediaRelocateStatus": {
31151
- capName: "pipeline-analytics",
31152
- capScope: "device",
31153
- addonId: null,
31154
- access: "view"
31155
- },
31156
31327
  "pipelineAnalytics.getMotionEvents": {
31157
31328
  capName: "pipeline-analytics",
31158
31329
  capScope: "device",
@@ -31189,6 +31360,12 @@ Object.freeze({
31189
31360
  addonId: null,
31190
31361
  access: "view"
31191
31362
  },
31363
+ "pipelineAnalytics.getStorageMigrationMoveStatus": {
31364
+ capName: "pipeline-analytics",
31365
+ capScope: "device",
31366
+ addonId: null,
31367
+ access: "view"
31368
+ },
31192
31369
  "pipelineAnalytics.getTrack": {
31193
31370
  capName: "pipeline-analytics",
31194
31371
  capScope: "device",
@@ -31267,6 +31444,12 @@ Object.freeze({
31267
31444
  addonId: null,
31268
31445
  access: "view"
31269
31446
  },
31447
+ "pipelineAnalytics.pauseForStorageMigration": {
31448
+ capName: "pipeline-analytics",
31449
+ capScope: "device",
31450
+ addonId: null,
31451
+ access: "create"
31452
+ },
31270
31453
  "pipelineAnalytics.proposeRetrainAnnotations": {
31271
31454
  capName: "pipeline-analytics",
31272
31455
  capScope: "device",
@@ -31297,7 +31480,7 @@ Object.freeze({
31297
31480
  addonId: null,
31298
31481
  access: "create"
31299
31482
  },
31300
- "pipelineAnalytics.relocateMedia": {
31483
+ "pipelineAnalytics.refreshStorageLocationsForMigration": {
31301
31484
  capName: "pipeline-analytics",
31302
31485
  capScope: "device",
31303
31486
  addonId: null,
@@ -31309,6 +31492,12 @@ Object.freeze({
31309
31492
  addonId: null,
31310
31493
  access: "create"
31311
31494
  },
31495
+ "pipelineAnalytics.resumeForStorageMigration": {
31496
+ capName: "pipeline-analytics",
31497
+ capScope: "device",
31498
+ addonId: null,
31499
+ access: "create"
31500
+ },
31312
31501
  "pipelineAnalytics.saveRetrainAnnotations": {
31313
31502
  capName: "pipeline-analytics",
31314
31503
  capScope: "device",
@@ -31333,6 +31522,12 @@ Object.freeze({
31333
31522
  addonId: null,
31334
31523
  access: "create"
31335
31524
  },
31525
+ "pipelineAnalytics.startStorageMigrationMove": {
31526
+ capName: "pipeline-analytics",
31527
+ capScope: "device",
31528
+ addonId: null,
31529
+ access: "create"
31530
+ },
31336
31531
  "pipelineAnalytics.wipeAllAnalytics": {
31337
31532
  capName: "pipeline-analytics",
31338
31533
  capScope: "device",
@@ -31699,6 +31894,12 @@ Object.freeze({
31699
31894
  addonId: null,
31700
31895
  access: "view"
31701
31896
  },
31897
+ "pipelineOrchestrator.pauseForStorageMigration": {
31898
+ capName: "pipeline-orchestrator",
31899
+ capScope: "system",
31900
+ addonId: null,
31901
+ access: "create"
31902
+ },
31702
31903
  "pipelineOrchestrator.rebalance": {
31703
31904
  capName: "pipeline-orchestrator",
31704
31905
  capScope: "system",
@@ -31723,6 +31924,12 @@ Object.freeze({
31723
31924
  addonId: null,
31724
31925
  access: "view"
31725
31926
  },
31927
+ "pipelineOrchestrator.resumeForStorageMigration": {
31928
+ capName: "pipeline-orchestrator",
31929
+ capScope: "system",
31930
+ addonId: null,
31931
+ access: "create"
31932
+ },
31726
31933
  "pipelineOrchestrator.saveTemplate": {
31727
31934
  capName: "pipeline-orchestrator",
31728
31935
  capScope: "system",
@@ -32119,7 +32326,7 @@ Object.freeze({
32119
32326
  addonId: null,
32120
32327
  access: "create"
32121
32328
  },
32122
- "recording.cancelRelocate": {
32329
+ "recording.cancelStorageMigrationMove": {
32123
32330
  capName: "recording",
32124
32331
  capScope: "system",
32125
32332
  addonId: null,
@@ -32155,7 +32362,7 @@ Object.freeze({
32155
32362
  addonId: null,
32156
32363
  access: "view"
32157
32364
  },
32158
- "recording.getRelocateStatus": {
32365
+ "recording.getStorageMigrationMoveStatus": {
32159
32366
  capName: "recording",
32160
32367
  capScope: "system",
32161
32368
  addonId: null,
@@ -32179,6 +32386,12 @@ Object.freeze({
32179
32386
  addonId: null,
32180
32387
  access: "view"
32181
32388
  },
32389
+ "recording.pauseForStorageMigration": {
32390
+ capName: "recording",
32391
+ capScope: "system",
32392
+ addonId: null,
32393
+ access: "create"
32394
+ },
32182
32395
  "recording.pruneFootage": {
32183
32396
  capName: "recording",
32184
32397
  capScope: "system",
@@ -32197,7 +32410,7 @@ Object.freeze({
32197
32410
  addonId: null,
32198
32411
  access: "view"
32199
32412
  },
32200
- "recording.relocateFootage": {
32413
+ "recording.refreshStorageLocationsForMigration": {
32201
32414
  capName: "recording",
32202
32415
  capScope: "system",
32203
32416
  addonId: null,
@@ -32221,12 +32434,24 @@ Object.freeze({
32221
32434
  addonId: null,
32222
32435
  access: "create"
32223
32436
  },
32437
+ "recording.resumeForStorageMigration": {
32438
+ capName: "recording",
32439
+ capScope: "system",
32440
+ addonId: null,
32441
+ access: "create"
32442
+ },
32224
32443
  "recording.setDeviceConfig": {
32225
32444
  capName: "recording",
32226
32445
  capScope: "system",
32227
32446
  addonId: null,
32228
32447
  access: "create"
32229
32448
  },
32449
+ "recording.startStorageMigrationMove": {
32450
+ capName: "recording",
32451
+ capScope: "system",
32452
+ addonId: null,
32453
+ access: "create"
32454
+ },
32230
32455
  "recordingExport.cancelExport": {
32231
32456
  capName: "recordingExport",
32232
32457
  capScope: "system",
@@ -32617,6 +32842,30 @@ Object.freeze({
32617
32842
  addonId: null,
32618
32843
  access: "view"
32619
32844
  },
32845
+ "storageMigration.cancel": {
32846
+ capName: "storage-migration",
32847
+ capScope: "system",
32848
+ addonId: null,
32849
+ access: "create"
32850
+ },
32851
+ "storageMigration.plan": {
32852
+ capName: "storage-migration",
32853
+ capScope: "system",
32854
+ addonId: null,
32855
+ access: "view"
32856
+ },
32857
+ "storageMigration.start": {
32858
+ capName: "storage-migration",
32859
+ capScope: "system",
32860
+ addonId: null,
32861
+ access: "create"
32862
+ },
32863
+ "storageMigration.status": {
32864
+ capName: "storage-migration",
32865
+ capScope: "system",
32866
+ addonId: null,
32867
+ access: "view"
32868
+ },
32620
32869
  "storageProvider.abortUpload": {
32621
32870
  capName: "storage-provider",
32622
32871
  capScope: "system",
@@ -32995,12 +33244,42 @@ Object.freeze({
32995
33244
  addonId: null,
32996
33245
  access: "create"
32997
33246
  },
33247
+ "terminalSession.adoptLegacyMonitor": {
33248
+ capName: "terminal-session",
33249
+ capScope: "system",
33250
+ addonId: null,
33251
+ access: "create"
33252
+ },
32998
33253
  "terminalSession.close": {
32999
33254
  capName: "terminal-session",
33000
33255
  capScope: "system",
33001
33256
  addonId: null,
33002
33257
  access: "create"
33003
33258
  },
33259
+ "terminalSession.createInstance": {
33260
+ capName: "terminal-session",
33261
+ capScope: "system",
33262
+ addonId: null,
33263
+ access: "create"
33264
+ },
33265
+ "terminalSession.deleteInstance": {
33266
+ capName: "terminal-session",
33267
+ capScope: "system",
33268
+ addonId: null,
33269
+ access: "delete"
33270
+ },
33271
+ "terminalSession.listInstances": {
33272
+ capName: "terminal-session",
33273
+ capScope: "system",
33274
+ addonId: null,
33275
+ access: "view"
33276
+ },
33277
+ "terminalSession.listLegacyCameras": {
33278
+ capName: "terminal-session",
33279
+ capScope: "system",
33280
+ addonId: null,
33281
+ access: "view"
33282
+ },
33004
33283
  "terminalSession.listProfiles": {
33005
33284
  capName: "terminal-session",
33006
33285
  capScope: "system",
@@ -33031,6 +33310,12 @@ Object.freeze({
33031
33310
  addonId: null,
33032
33311
  access: "create"
33033
33312
  },
33313
+ "terminalSession.setInstanceEnabled": {
33314
+ capName: "terminal-session",
33315
+ capScope: "system",
33316
+ addonId: null,
33317
+ access: "create"
33318
+ },
33034
33319
  "terminalSession.writeInput": {
33035
33320
  capName: "terminal-session",
33036
33321
  capScope: "system",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-provider-hikvision",
3
- "version": "1.2.15",
3
+ "version": "1.2.16",
4
4
  "description": "Hikvision camera device provider addon for CamStack — ISAPI over HTTP(S) with digest auth (snapshot, alarm stream, RTSP discovery)",
5
5
  "keywords": [
6
6
  "camstack",