@camstack/addon-provider-hikvision 1.2.14 → 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 +357 -30
  2. package/dist/addon.mjs +357 -30
  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",
16439
16519
  auth: "admin"
16440
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
16520
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
16521
+ kind: "mutation",
16522
+ auth: "admin"
16523
+ }), method(StorageMigrationMediaMoveInputSchema, object({ jobId: string() }), {
16524
+ kind: "mutation",
16525
+ auth: "admin"
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,7 +18934,67 @@ var TerminalProfileInfoSchema = object({
18835
18934
  label: string(),
18836
18935
  description: string().optional()
18837
18936
  });
18838
- method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
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
+ });
18959
+ var TerminalOutputEventSchema = discriminatedUnion("kind", [object({
18960
+ seq: number().int().positive(),
18961
+ kind: literal("data"),
18962
+ data: string()
18963
+ }), object({
18964
+ seq: number().int().positive(),
18965
+ kind: literal("exit"),
18966
+ exitCode: number().int(),
18967
+ signal: number().int().optional()
18968
+ })]);
18969
+ var TerminalOutputBatchSchema = object({
18970
+ cursor: number().int().nonnegative(),
18971
+ reset: boolean(),
18972
+ snapshot: string().optional(),
18973
+ events: array(TerminalOutputEventSchema).readonly()
18974
+ });
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({
18839
18998
  profileId: string(),
18840
18999
  cols: number().int().positive(),
18841
19000
  rows: number().int().positive()
@@ -18849,6 +19008,26 @@ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }),
18849
19008
  }), _void(), {
18850
19009
  kind: "mutation",
18851
19010
  auth: "admin"
19011
+ }), method(object({
19012
+ sessionId: string(),
19013
+ afterSeq: number().int().nonnegative(),
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()
19021
+ }), TerminalOutputBatchSchema, {
19022
+ kind: "mutation",
19023
+ auth: "admin",
19024
+ timeoutMs: 15e3
19025
+ }), method(object({
19026
+ sessionId: string(),
19027
+ data: string().max(64 * 1024)
19028
+ }), _void(), {
19029
+ kind: "mutation",
19030
+ auth: "admin"
18852
19031
  }), method(object({ sessionId: string() }), _void(), {
18853
19032
  kind: "mutation",
18854
19033
  auth: "admin"
@@ -21336,6 +21515,7 @@ var FaceInfoSchema = object({
21336
21515
  var FaceFilterEnum = _enum([
21337
21516
  "unassigned",
21338
21517
  "recognized",
21518
+ "identified",
21339
21519
  "all"
21340
21520
  ]);
21341
21521
  var MediaFileLiteSchema$1 = object({
@@ -21364,6 +21544,8 @@ method(_void(), array(IdentitySchema).readonly()), method(object({ name: string(
21364
21544
  kind: "mutation",
21365
21545
  auth: "admin"
21366
21546
  }), method(object({
21547
+ /** Restrict to one camera. Absent keeps the cluster-wide gallery view. */
21548
+ deviceId: number().int().optional(),
21367
21549
  limit: number().int().positive().optional(),
21368
21550
  filter: FaceFilterEnum.optional(),
21369
21551
  /**
@@ -23690,6 +23872,10 @@ var OsdSourceSchema = discriminatedUnion("kind", [
23690
23872
  capName: string().min(1).max(64),
23691
23873
  /** Dot path inside the slice, e.g. `detected`, `value`, `mode`. */
23692
23874
  valuePath: string().min(1).max(64)
23875
+ }),
23876
+ object({
23877
+ kind: literal("latest-recognition"),
23878
+ recognition: _enum(["person", "plate"])
23693
23879
  })
23694
23880
  ]);
23695
23881
  var OsdSlotBindingSchema = object({
@@ -23795,6 +23981,15 @@ method(object({ deviceId: number().int() }), object({
23795
23981
  }), object({ success: literal(true) }), {
23796
23982
  kind: "mutation",
23797
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"
23798
23993
  }), method(object({
23799
23994
  deviceId: number().int(),
23800
23995
  slotId: string().min(1),
@@ -24979,13 +25174,19 @@ method(object({
24979
25174
  }), {
24980
25175
  kind: "mutation",
24981
25176
  auth: "admin"
24982
- }), method(RelocateFootageInputSchema, object({ jobId: string() }), {
25177
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
24983
25178
  kind: "mutation",
24984
25179
  auth: "admin"
24985
- }), method(object({}), array(RelocateJobSchema).readonly(), {
24986
- kind: "query",
25180
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
25181
+ kind: "mutation",
24987
25182
  auth: "admin"
24988
- }), 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() }), {
24989
25190
  kind: "mutation",
24990
25191
  auth: "admin"
24991
25192
  });
@@ -30948,6 +31149,12 @@ Object.freeze({
30948
31149
  addonId: null,
30949
31150
  access: "delete"
30950
31151
  },
31152
+ "osdManager.copyDeviceConfiguration": {
31153
+ capName: "osd-manager",
31154
+ capScope: "system",
31155
+ addonId: null,
31156
+ access: "create"
31157
+ },
30951
31158
  "osdManager.getConditionSupport": {
30952
31159
  capName: "osd-manager",
30953
31160
  capScope: "system",
@@ -31044,7 +31251,7 @@ Object.freeze({
31044
31251
  addonId: null,
31045
31252
  access: "create"
31046
31253
  },
31047
- "pipelineAnalytics.cancelMediaRelocate": {
31254
+ "pipelineAnalytics.cancelStorageMigrationMove": {
31048
31255
  capName: "pipeline-analytics",
31049
31256
  capScope: "device",
31050
31257
  addonId: null,
@@ -31116,12 +31323,6 @@ Object.freeze({
31116
31323
  addonId: null,
31117
31324
  access: "view"
31118
31325
  },
31119
- "pipelineAnalytics.getMediaRelocateStatus": {
31120
- capName: "pipeline-analytics",
31121
- capScope: "device",
31122
- addonId: null,
31123
- access: "view"
31124
- },
31125
31326
  "pipelineAnalytics.getMotionEvents": {
31126
31327
  capName: "pipeline-analytics",
31127
31328
  capScope: "device",
@@ -31158,6 +31359,12 @@ Object.freeze({
31158
31359
  addonId: null,
31159
31360
  access: "view"
31160
31361
  },
31362
+ "pipelineAnalytics.getStorageMigrationMoveStatus": {
31363
+ capName: "pipeline-analytics",
31364
+ capScope: "device",
31365
+ addonId: null,
31366
+ access: "view"
31367
+ },
31161
31368
  "pipelineAnalytics.getTrack": {
31162
31369
  capName: "pipeline-analytics",
31163
31370
  capScope: "device",
@@ -31236,6 +31443,12 @@ Object.freeze({
31236
31443
  addonId: null,
31237
31444
  access: "view"
31238
31445
  },
31446
+ "pipelineAnalytics.pauseForStorageMigration": {
31447
+ capName: "pipeline-analytics",
31448
+ capScope: "device",
31449
+ addonId: null,
31450
+ access: "create"
31451
+ },
31239
31452
  "pipelineAnalytics.proposeRetrainAnnotations": {
31240
31453
  capName: "pipeline-analytics",
31241
31454
  capScope: "device",
@@ -31266,7 +31479,7 @@ Object.freeze({
31266
31479
  addonId: null,
31267
31480
  access: "create"
31268
31481
  },
31269
- "pipelineAnalytics.relocateMedia": {
31482
+ "pipelineAnalytics.refreshStorageLocationsForMigration": {
31270
31483
  capName: "pipeline-analytics",
31271
31484
  capScope: "device",
31272
31485
  addonId: null,
@@ -31278,6 +31491,12 @@ Object.freeze({
31278
31491
  addonId: null,
31279
31492
  access: "create"
31280
31493
  },
31494
+ "pipelineAnalytics.resumeForStorageMigration": {
31495
+ capName: "pipeline-analytics",
31496
+ capScope: "device",
31497
+ addonId: null,
31498
+ access: "create"
31499
+ },
31281
31500
  "pipelineAnalytics.saveRetrainAnnotations": {
31282
31501
  capName: "pipeline-analytics",
31283
31502
  capScope: "device",
@@ -31302,6 +31521,12 @@ Object.freeze({
31302
31521
  addonId: null,
31303
31522
  access: "create"
31304
31523
  },
31524
+ "pipelineAnalytics.startStorageMigrationMove": {
31525
+ capName: "pipeline-analytics",
31526
+ capScope: "device",
31527
+ addonId: null,
31528
+ access: "create"
31529
+ },
31305
31530
  "pipelineAnalytics.wipeAllAnalytics": {
31306
31531
  capName: "pipeline-analytics",
31307
31532
  capScope: "device",
@@ -31668,6 +31893,12 @@ Object.freeze({
31668
31893
  addonId: null,
31669
31894
  access: "view"
31670
31895
  },
31896
+ "pipelineOrchestrator.pauseForStorageMigration": {
31897
+ capName: "pipeline-orchestrator",
31898
+ capScope: "system",
31899
+ addonId: null,
31900
+ access: "create"
31901
+ },
31671
31902
  "pipelineOrchestrator.rebalance": {
31672
31903
  capName: "pipeline-orchestrator",
31673
31904
  capScope: "system",
@@ -31692,6 +31923,12 @@ Object.freeze({
31692
31923
  addonId: null,
31693
31924
  access: "view"
31694
31925
  },
31926
+ "pipelineOrchestrator.resumeForStorageMigration": {
31927
+ capName: "pipeline-orchestrator",
31928
+ capScope: "system",
31929
+ addonId: null,
31930
+ access: "create"
31931
+ },
31695
31932
  "pipelineOrchestrator.saveTemplate": {
31696
31933
  capName: "pipeline-orchestrator",
31697
31934
  capScope: "system",
@@ -32088,7 +32325,7 @@ Object.freeze({
32088
32325
  addonId: null,
32089
32326
  access: "create"
32090
32327
  },
32091
- "recording.cancelRelocate": {
32328
+ "recording.cancelStorageMigrationMove": {
32092
32329
  capName: "recording",
32093
32330
  capScope: "system",
32094
32331
  addonId: null,
@@ -32124,7 +32361,7 @@ Object.freeze({
32124
32361
  addonId: null,
32125
32362
  access: "view"
32126
32363
  },
32127
- "recording.getRelocateStatus": {
32364
+ "recording.getStorageMigrationMoveStatus": {
32128
32365
  capName: "recording",
32129
32366
  capScope: "system",
32130
32367
  addonId: null,
@@ -32148,6 +32385,12 @@ Object.freeze({
32148
32385
  addonId: null,
32149
32386
  access: "view"
32150
32387
  },
32388
+ "recording.pauseForStorageMigration": {
32389
+ capName: "recording",
32390
+ capScope: "system",
32391
+ addonId: null,
32392
+ access: "create"
32393
+ },
32151
32394
  "recording.pruneFootage": {
32152
32395
  capName: "recording",
32153
32396
  capScope: "system",
@@ -32166,7 +32409,7 @@ Object.freeze({
32166
32409
  addonId: null,
32167
32410
  access: "view"
32168
32411
  },
32169
- "recording.relocateFootage": {
32412
+ "recording.refreshStorageLocationsForMigration": {
32170
32413
  capName: "recording",
32171
32414
  capScope: "system",
32172
32415
  addonId: null,
@@ -32190,12 +32433,24 @@ Object.freeze({
32190
32433
  addonId: null,
32191
32434
  access: "create"
32192
32435
  },
32436
+ "recording.resumeForStorageMigration": {
32437
+ capName: "recording",
32438
+ capScope: "system",
32439
+ addonId: null,
32440
+ access: "create"
32441
+ },
32193
32442
  "recording.setDeviceConfig": {
32194
32443
  capName: "recording",
32195
32444
  capScope: "system",
32196
32445
  addonId: null,
32197
32446
  access: "create"
32198
32447
  },
32448
+ "recording.startStorageMigrationMove": {
32449
+ capName: "recording",
32450
+ capScope: "system",
32451
+ addonId: null,
32452
+ access: "create"
32453
+ },
32199
32454
  "recordingExport.cancelExport": {
32200
32455
  capName: "recordingExport",
32201
32456
  capScope: "system",
@@ -32586,6 +32841,30 @@ Object.freeze({
32586
32841
  addonId: null,
32587
32842
  access: "view"
32588
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
+ },
32589
32868
  "storageProvider.abortUpload": {
32590
32869
  capName: "storage-provider",
32591
32870
  capScope: "system",
@@ -32964,12 +33243,42 @@ Object.freeze({
32964
33243
  addonId: null,
32965
33244
  access: "create"
32966
33245
  },
33246
+ "terminalSession.adoptLegacyMonitor": {
33247
+ capName: "terminal-session",
33248
+ capScope: "system",
33249
+ addonId: null,
33250
+ access: "create"
33251
+ },
32967
33252
  "terminalSession.close": {
32968
33253
  capName: "terminal-session",
32969
33254
  capScope: "system",
32970
33255
  addonId: null,
32971
33256
  access: "create"
32972
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
+ },
32973
33282
  "terminalSession.listProfiles": {
32974
33283
  capName: "terminal-session",
32975
33284
  capScope: "system",
@@ -32988,12 +33297,30 @@ Object.freeze({
32988
33297
  addonId: null,
32989
33298
  access: "create"
32990
33299
  },
33300
+ "terminalSession.pullOutput": {
33301
+ capName: "terminal-session",
33302
+ capScope: "system",
33303
+ addonId: null,
33304
+ access: "create"
33305
+ },
32991
33306
  "terminalSession.resize": {
32992
33307
  capName: "terminal-session",
32993
33308
  capScope: "system",
32994
33309
  addonId: null,
32995
33310
  access: "create"
32996
33311
  },
33312
+ "terminalSession.setInstanceEnabled": {
33313
+ capName: "terminal-session",
33314
+ capScope: "system",
33315
+ addonId: null,
33316
+ access: "create"
33317
+ },
33318
+ "terminalSession.writeInput": {
33319
+ capName: "terminal-session",
33320
+ capScope: "system",
33321
+ addonId: null,
33322
+ access: "create"
33323
+ },
32997
33324
  "toast.onToast": {
32998
33325
  capName: "toast",
32999
33326
  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",
16440
16520
  auth: "admin"
16441
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
16521
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
16522
+ kind: "mutation",
16523
+ auth: "admin"
16524
+ }), method(StorageMigrationMediaMoveInputSchema, object({ jobId: string() }), {
16525
+ kind: "mutation",
16526
+ auth: "admin"
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,7 +18935,67 @@ var TerminalProfileInfoSchema = object({
18836
18935
  label: string(),
18837
18936
  description: string().optional()
18838
18937
  });
18839
- method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
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
+ });
18960
+ var TerminalOutputEventSchema = discriminatedUnion("kind", [object({
18961
+ seq: number().int().positive(),
18962
+ kind: literal("data"),
18963
+ data: string()
18964
+ }), object({
18965
+ seq: number().int().positive(),
18966
+ kind: literal("exit"),
18967
+ exitCode: number().int(),
18968
+ signal: number().int().optional()
18969
+ })]);
18970
+ var TerminalOutputBatchSchema = object({
18971
+ cursor: number().int().nonnegative(),
18972
+ reset: boolean(),
18973
+ snapshot: string().optional(),
18974
+ events: array(TerminalOutputEventSchema).readonly()
18975
+ });
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({
18840
18999
  profileId: string(),
18841
19000
  cols: number().int().positive(),
18842
19001
  rows: number().int().positive()
@@ -18850,6 +19009,26 @@ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }),
18850
19009
  }), _void(), {
18851
19010
  kind: "mutation",
18852
19011
  auth: "admin"
19012
+ }), method(object({
19013
+ sessionId: string(),
19014
+ afterSeq: number().int().nonnegative(),
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()
19022
+ }), TerminalOutputBatchSchema, {
19023
+ kind: "mutation",
19024
+ auth: "admin",
19025
+ timeoutMs: 15e3
19026
+ }), method(object({
19027
+ sessionId: string(),
19028
+ data: string().max(64 * 1024)
19029
+ }), _void(), {
19030
+ kind: "mutation",
19031
+ auth: "admin"
18853
19032
  }), method(object({ sessionId: string() }), _void(), {
18854
19033
  kind: "mutation",
18855
19034
  auth: "admin"
@@ -21337,6 +21516,7 @@ var FaceInfoSchema = object({
21337
21516
  var FaceFilterEnum = _enum([
21338
21517
  "unassigned",
21339
21518
  "recognized",
21519
+ "identified",
21340
21520
  "all"
21341
21521
  ]);
21342
21522
  var MediaFileLiteSchema$1 = object({
@@ -21365,6 +21545,8 @@ method(_void(), array(IdentitySchema).readonly()), method(object({ name: string(
21365
21545
  kind: "mutation",
21366
21546
  auth: "admin"
21367
21547
  }), method(object({
21548
+ /** Restrict to one camera. Absent keeps the cluster-wide gallery view. */
21549
+ deviceId: number().int().optional(),
21368
21550
  limit: number().int().positive().optional(),
21369
21551
  filter: FaceFilterEnum.optional(),
21370
21552
  /**
@@ -23691,6 +23873,10 @@ var OsdSourceSchema = discriminatedUnion("kind", [
23691
23873
  capName: string().min(1).max(64),
23692
23874
  /** Dot path inside the slice, e.g. `detected`, `value`, `mode`. */
23693
23875
  valuePath: string().min(1).max(64)
23876
+ }),
23877
+ object({
23878
+ kind: literal("latest-recognition"),
23879
+ recognition: _enum(["person", "plate"])
23694
23880
  })
23695
23881
  ]);
23696
23882
  var OsdSlotBindingSchema = object({
@@ -23796,6 +23982,15 @@ method(object({ deviceId: number().int() }), object({
23796
23982
  }), object({ success: literal(true) }), {
23797
23983
  kind: "mutation",
23798
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"
23799
23994
  }), method(object({
23800
23995
  deviceId: number().int(),
23801
23996
  slotId: string().min(1),
@@ -24980,13 +25175,19 @@ method(object({
24980
25175
  }), {
24981
25176
  kind: "mutation",
24982
25177
  auth: "admin"
24983
- }), method(RelocateFootageInputSchema, object({ jobId: string() }), {
25178
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
24984
25179
  kind: "mutation",
24985
25180
  auth: "admin"
24986
- }), method(object({}), array(RelocateJobSchema).readonly(), {
24987
- kind: "query",
25181
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
25182
+ kind: "mutation",
24988
25183
  auth: "admin"
24989
- }), 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() }), {
24990
25191
  kind: "mutation",
24991
25192
  auth: "admin"
24992
25193
  });
@@ -30949,6 +31150,12 @@ Object.freeze({
30949
31150
  addonId: null,
30950
31151
  access: "delete"
30951
31152
  },
31153
+ "osdManager.copyDeviceConfiguration": {
31154
+ capName: "osd-manager",
31155
+ capScope: "system",
31156
+ addonId: null,
31157
+ access: "create"
31158
+ },
30952
31159
  "osdManager.getConditionSupport": {
30953
31160
  capName: "osd-manager",
30954
31161
  capScope: "system",
@@ -31045,7 +31252,7 @@ Object.freeze({
31045
31252
  addonId: null,
31046
31253
  access: "create"
31047
31254
  },
31048
- "pipelineAnalytics.cancelMediaRelocate": {
31255
+ "pipelineAnalytics.cancelStorageMigrationMove": {
31049
31256
  capName: "pipeline-analytics",
31050
31257
  capScope: "device",
31051
31258
  addonId: null,
@@ -31117,12 +31324,6 @@ Object.freeze({
31117
31324
  addonId: null,
31118
31325
  access: "view"
31119
31326
  },
31120
- "pipelineAnalytics.getMediaRelocateStatus": {
31121
- capName: "pipeline-analytics",
31122
- capScope: "device",
31123
- addonId: null,
31124
- access: "view"
31125
- },
31126
31327
  "pipelineAnalytics.getMotionEvents": {
31127
31328
  capName: "pipeline-analytics",
31128
31329
  capScope: "device",
@@ -31159,6 +31360,12 @@ Object.freeze({
31159
31360
  addonId: null,
31160
31361
  access: "view"
31161
31362
  },
31363
+ "pipelineAnalytics.getStorageMigrationMoveStatus": {
31364
+ capName: "pipeline-analytics",
31365
+ capScope: "device",
31366
+ addonId: null,
31367
+ access: "view"
31368
+ },
31162
31369
  "pipelineAnalytics.getTrack": {
31163
31370
  capName: "pipeline-analytics",
31164
31371
  capScope: "device",
@@ -31237,6 +31444,12 @@ Object.freeze({
31237
31444
  addonId: null,
31238
31445
  access: "view"
31239
31446
  },
31447
+ "pipelineAnalytics.pauseForStorageMigration": {
31448
+ capName: "pipeline-analytics",
31449
+ capScope: "device",
31450
+ addonId: null,
31451
+ access: "create"
31452
+ },
31240
31453
  "pipelineAnalytics.proposeRetrainAnnotations": {
31241
31454
  capName: "pipeline-analytics",
31242
31455
  capScope: "device",
@@ -31267,7 +31480,7 @@ Object.freeze({
31267
31480
  addonId: null,
31268
31481
  access: "create"
31269
31482
  },
31270
- "pipelineAnalytics.relocateMedia": {
31483
+ "pipelineAnalytics.refreshStorageLocationsForMigration": {
31271
31484
  capName: "pipeline-analytics",
31272
31485
  capScope: "device",
31273
31486
  addonId: null,
@@ -31279,6 +31492,12 @@ Object.freeze({
31279
31492
  addonId: null,
31280
31493
  access: "create"
31281
31494
  },
31495
+ "pipelineAnalytics.resumeForStorageMigration": {
31496
+ capName: "pipeline-analytics",
31497
+ capScope: "device",
31498
+ addonId: null,
31499
+ access: "create"
31500
+ },
31282
31501
  "pipelineAnalytics.saveRetrainAnnotations": {
31283
31502
  capName: "pipeline-analytics",
31284
31503
  capScope: "device",
@@ -31303,6 +31522,12 @@ Object.freeze({
31303
31522
  addonId: null,
31304
31523
  access: "create"
31305
31524
  },
31525
+ "pipelineAnalytics.startStorageMigrationMove": {
31526
+ capName: "pipeline-analytics",
31527
+ capScope: "device",
31528
+ addonId: null,
31529
+ access: "create"
31530
+ },
31306
31531
  "pipelineAnalytics.wipeAllAnalytics": {
31307
31532
  capName: "pipeline-analytics",
31308
31533
  capScope: "device",
@@ -31669,6 +31894,12 @@ Object.freeze({
31669
31894
  addonId: null,
31670
31895
  access: "view"
31671
31896
  },
31897
+ "pipelineOrchestrator.pauseForStorageMigration": {
31898
+ capName: "pipeline-orchestrator",
31899
+ capScope: "system",
31900
+ addonId: null,
31901
+ access: "create"
31902
+ },
31672
31903
  "pipelineOrchestrator.rebalance": {
31673
31904
  capName: "pipeline-orchestrator",
31674
31905
  capScope: "system",
@@ -31693,6 +31924,12 @@ Object.freeze({
31693
31924
  addonId: null,
31694
31925
  access: "view"
31695
31926
  },
31927
+ "pipelineOrchestrator.resumeForStorageMigration": {
31928
+ capName: "pipeline-orchestrator",
31929
+ capScope: "system",
31930
+ addonId: null,
31931
+ access: "create"
31932
+ },
31696
31933
  "pipelineOrchestrator.saveTemplate": {
31697
31934
  capName: "pipeline-orchestrator",
31698
31935
  capScope: "system",
@@ -32089,7 +32326,7 @@ Object.freeze({
32089
32326
  addonId: null,
32090
32327
  access: "create"
32091
32328
  },
32092
- "recording.cancelRelocate": {
32329
+ "recording.cancelStorageMigrationMove": {
32093
32330
  capName: "recording",
32094
32331
  capScope: "system",
32095
32332
  addonId: null,
@@ -32125,7 +32362,7 @@ Object.freeze({
32125
32362
  addonId: null,
32126
32363
  access: "view"
32127
32364
  },
32128
- "recording.getRelocateStatus": {
32365
+ "recording.getStorageMigrationMoveStatus": {
32129
32366
  capName: "recording",
32130
32367
  capScope: "system",
32131
32368
  addonId: null,
@@ -32149,6 +32386,12 @@ Object.freeze({
32149
32386
  addonId: null,
32150
32387
  access: "view"
32151
32388
  },
32389
+ "recording.pauseForStorageMigration": {
32390
+ capName: "recording",
32391
+ capScope: "system",
32392
+ addonId: null,
32393
+ access: "create"
32394
+ },
32152
32395
  "recording.pruneFootage": {
32153
32396
  capName: "recording",
32154
32397
  capScope: "system",
@@ -32167,7 +32410,7 @@ Object.freeze({
32167
32410
  addonId: null,
32168
32411
  access: "view"
32169
32412
  },
32170
- "recording.relocateFootage": {
32413
+ "recording.refreshStorageLocationsForMigration": {
32171
32414
  capName: "recording",
32172
32415
  capScope: "system",
32173
32416
  addonId: null,
@@ -32191,12 +32434,24 @@ Object.freeze({
32191
32434
  addonId: null,
32192
32435
  access: "create"
32193
32436
  },
32437
+ "recording.resumeForStorageMigration": {
32438
+ capName: "recording",
32439
+ capScope: "system",
32440
+ addonId: null,
32441
+ access: "create"
32442
+ },
32194
32443
  "recording.setDeviceConfig": {
32195
32444
  capName: "recording",
32196
32445
  capScope: "system",
32197
32446
  addonId: null,
32198
32447
  access: "create"
32199
32448
  },
32449
+ "recording.startStorageMigrationMove": {
32450
+ capName: "recording",
32451
+ capScope: "system",
32452
+ addonId: null,
32453
+ access: "create"
32454
+ },
32200
32455
  "recordingExport.cancelExport": {
32201
32456
  capName: "recordingExport",
32202
32457
  capScope: "system",
@@ -32587,6 +32842,30 @@ Object.freeze({
32587
32842
  addonId: null,
32588
32843
  access: "view"
32589
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
+ },
32590
32869
  "storageProvider.abortUpload": {
32591
32870
  capName: "storage-provider",
32592
32871
  capScope: "system",
@@ -32965,12 +33244,42 @@ Object.freeze({
32965
33244
  addonId: null,
32966
33245
  access: "create"
32967
33246
  },
33247
+ "terminalSession.adoptLegacyMonitor": {
33248
+ capName: "terminal-session",
33249
+ capScope: "system",
33250
+ addonId: null,
33251
+ access: "create"
33252
+ },
32968
33253
  "terminalSession.close": {
32969
33254
  capName: "terminal-session",
32970
33255
  capScope: "system",
32971
33256
  addonId: null,
32972
33257
  access: "create"
32973
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
+ },
32974
33283
  "terminalSession.listProfiles": {
32975
33284
  capName: "terminal-session",
32976
33285
  capScope: "system",
@@ -32989,12 +33298,30 @@ Object.freeze({
32989
33298
  addonId: null,
32990
33299
  access: "create"
32991
33300
  },
33301
+ "terminalSession.pullOutput": {
33302
+ capName: "terminal-session",
33303
+ capScope: "system",
33304
+ addonId: null,
33305
+ access: "create"
33306
+ },
32992
33307
  "terminalSession.resize": {
32993
33308
  capName: "terminal-session",
32994
33309
  capScope: "system",
32995
33310
  addonId: null,
32996
33311
  access: "create"
32997
33312
  },
33313
+ "terminalSession.setInstanceEnabled": {
33314
+ capName: "terminal-session",
33315
+ capScope: "system",
33316
+ addonId: null,
33317
+ access: "create"
33318
+ },
33319
+ "terminalSession.writeInput": {
33320
+ capName: "terminal-session",
33321
+ capScope: "system",
33322
+ addonId: null,
33323
+ access: "create"
33324
+ },
32998
33325
  "toast.onToast": {
32999
33326
  capName: "toast",
33000
33327
  capScope: "system",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-provider-hikvision",
3
- "version": "1.2.14",
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",