@camstack/addon-provider-onvif 1.2.11 → 1.2.12

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
@@ -7550,12 +7550,11 @@ var RecordingConfigSchema = object({
7550
7550
  /**
7551
7551
  * Entity-relocation job state (storage entity-routing spec, Phase 4).
7552
7552
  *
7553
- * One shape shared by the recorder's `relocateFootage` (segments) and
7554
- * pipeline-analytics' `relocateMedia` (event media blobs) so the admin Data
7555
- * page renders both movers with one component. Jobs are in-RAM (a restart
7556
- * forgets them re-running is safe by construction: copy-if-absent, delete
7557
- * after verify) and each completed/failed run also lands one durable ops-log
7558
- * row on the owning addon's surface.
7553
+ * One shape shared by the recorder and pipeline-analytics internal movers.
7554
+ * The public admin surface is `storage-migration`; child jobs remain in RAM
7555
+ * because copy-if-absent, verify, delete and index/row repoint are resumable.
7556
+ * Each completed/failed run also lands one durable ops-log row on its owning
7557
+ * addon surface.
7559
7558
  */
7560
7559
  var RelocateJobStateSchema = _enum([
7561
7560
  "running",
@@ -7582,19 +7581,100 @@ var RelocateJobSchema = object({
7582
7581
  finishedAt: number().nullable(),
7583
7582
  error: string().nullable()
7584
7583
  });
7584
+ /** Profile-derived footage selection used only by the migration coordinator:
7585
+ * `recordings` owns high+mid; `recordingsLow` owns low. */
7586
+ var RelocateFootageClassSchema = _enum(["recordings", "recordingsLow"]);
7585
7587
  var RelocateFootageInputSchema = object({
7586
- deviceId: number().optional(),
7587
7588
  fromLocationId: string(),
7588
7589
  toLocationId: string(),
7589
7590
  entities: array(_enum(["segments"])).optional(),
7591
+ /** Limits relocation to the logical profile class. Omit only for the
7592
+ * pre-orchestration compatibility path. */
7593
+ footageClass: RelocateFootageClassSchema.optional(),
7590
7594
  /** Copy throttle in MB/s (default 40) — the drain is a background chore,
7591
7595
  * never allowed to starve live writers. */
7592
7596
  throttleMbps: number().min(1).max(1e3).optional()
7593
7597
  });
7594
- var RelocateMediaInputSchema = object({
7595
- deviceId: number().optional(),
7598
+ /** Internal, lease-scoped participant operation. It is intentionally separate
7599
+ * from persistent recording settings: a migration never changes
7600
+ * `RecordingConfig.enabled` or camera wrapper bindings. */
7601
+ var StorageMigrationLeaseInputSchema = object({ leaseId: string().min(1) });
7602
+ var StorageMigrationFootageMoveInputSchema = RelocateFootageInputSchema.extend({ leaseId: string().min(1) });
7603
+ var StorageMigrationMediaMoveInputSchema = object({
7596
7604
  toLocationId: string(),
7597
7605
  throttleMbps: number().min(1).max(1e3).optional()
7606
+ }).extend({ leaseId: string().min(1) });
7607
+ /** The independently selectable logical storage classes. `recordings`
7608
+ * encompasses the high and mid segment profiles; `recordingsLow` is low
7609
+ * segments; `eventMedia` is post-analysis blobs. */
7610
+ var StorageMigrationClassSchema = _enum([
7611
+ "recordings",
7612
+ "recordingsLow",
7613
+ "eventMedia"
7614
+ ]);
7615
+ /** A destination is always an existing, fully-qualified location id. The
7616
+ * migration API intentionally never changes a source location's `basePath`:
7617
+ * callers create a new `<type>:<slug>` location, then select it here. */
7618
+ var StorageMigrationDestinationsSchema = object({
7619
+ recordings: string().min(1).optional(),
7620
+ recordingsLow: string().min(1).optional(),
7621
+ eventMedia: string().min(1).optional()
7622
+ }).refine((value) => Object.keys(value).length > 0, { message: "select at least one storage class" });
7623
+ /** Shared input for planning and starting an orchestrated storage migration. */
7624
+ var StorageMigrationInputSchema = object({
7625
+ destinations: StorageMigrationDestinationsSchema,
7626
+ throttleMbps: number().min(1).max(1e3).optional()
7627
+ });
7628
+ /** The durable coordinator state machine. The only phase that changes default
7629
+ * locations is `repointing`, after every selected mover has completed and been
7630
+ * verified. */
7631
+ var StorageMigrationPhaseSchema = _enum([
7632
+ "planning",
7633
+ "pausing",
7634
+ "moving",
7635
+ "verifying",
7636
+ "repointing",
7637
+ "refreshing",
7638
+ "resuming",
7639
+ "done",
7640
+ "failed",
7641
+ "cancelled"
7642
+ ]);
7643
+ var StorageMigrationParticipantSchema = _enum([
7644
+ "pipeline",
7645
+ "recorder",
7646
+ "analytics"
7647
+ ]);
7648
+ var StorageMigrationMoveSchema = object({
7649
+ storageClass: StorageMigrationClassSchema,
7650
+ fromLocationId: string(),
7651
+ toLocationId: string(),
7652
+ moverJobId: string().nullable(),
7653
+ state: RelocateJobStateSchema.nullable(),
7654
+ error: string().nullable()
7655
+ });
7656
+ var StorageMigrationJobSchema = object({
7657
+ jobId: string(),
7658
+ phase: StorageMigrationPhaseSchema,
7659
+ destinations: StorageMigrationDestinationsSchema,
7660
+ throttleMbps: number(),
7661
+ moves: array(StorageMigrationMoveSchema),
7662
+ pauseLeaseId: string().nullable(),
7663
+ pausedParticipants: array(StorageMigrationParticipantSchema),
7664
+ repointed: boolean(),
7665
+ cancelRequested: boolean(),
7666
+ startedAt: number(),
7667
+ updatedAt: number(),
7668
+ finishedAt: number().nullable(),
7669
+ error: string().nullable()
7670
+ });
7671
+ var StorageMigrationPlanSchema = object({
7672
+ destinations: StorageMigrationDestinationsSchema,
7673
+ moves: array(object({
7674
+ storageClass: StorageMigrationClassSchema,
7675
+ fromLocationId: string(),
7676
+ toLocationId: string()
7677
+ }))
7598
7678
  });
7599
7679
  /**
7600
7680
  * `StorageLocationType` — an addon-declared id that identifies the *kind* of
@@ -16025,13 +16105,19 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
16025
16105
  }), method(object({ deviceId: number() }), EventPruneCountsSchema, {
16026
16106
  kind: "mutation",
16027
16107
  auth: "admin"
16028
- }), method(RelocateMediaInputSchema, object({ jobId: string() }), {
16108
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
16029
16109
  kind: "mutation",
16030
16110
  auth: "admin"
16031
- }), method(object({}), array(RelocateJobSchema).readonly(), {
16032
- kind: "query",
16111
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
16112
+ kind: "mutation",
16113
+ auth: "admin"
16114
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
16115
+ kind: "mutation",
16116
+ auth: "admin"
16117
+ }), method(StorageMigrationMediaMoveInputSchema, object({ jobId: string() }), {
16118
+ kind: "mutation",
16033
16119
  auth: "admin"
16034
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
16120
+ }), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
16035
16121
  kind: "mutation",
16036
16122
  auth: "admin"
16037
16123
  }), method(OpsLogQueryInputSchema, array(OpsLogEntrySchema).readonly(), {
@@ -17528,7 +17614,13 @@ var NodeInferenceDevicesSchema = object({
17528
17614
  reachable: boolean(),
17529
17615
  devices: array(NodeInferenceDeviceSchema).readonly()
17530
17616
  });
17531
- method(object({
17617
+ method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
17618
+ kind: "mutation",
17619
+ auth: "admin"
17620
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
17621
+ kind: "mutation",
17622
+ auth: "admin"
17623
+ }), method(object({
17532
17624
  deviceId: number(),
17533
17625
  agentNodeId: string()
17534
17626
  }), object({ success: literal(true) }), {
@@ -18293,6 +18385,13 @@ method(object({ locationId: string() }), EvictableUsageSchema), method(object({
18293
18385
  locationId: string(),
18294
18386
  targetBytes: number().int().positive()
18295
18387
  }), EvictResultSchema, { kind: "mutation" });
18388
+ method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin" }), method(StorageMigrationInputSchema, object({ jobId: string() }), {
18389
+ kind: "mutation",
18390
+ auth: "admin"
18391
+ }), method(object({ jobId: string().optional() }), StorageMigrationJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
18392
+ kind: "mutation",
18393
+ auth: "admin"
18394
+ });
18296
18395
  var ProviderInfoSchema = discriminatedUnion("shouldSaveDiskSpace", [object({
18297
18396
  providerId: string().min(1),
18298
18397
  displayName: string().min(1),
@@ -18396,6 +18495,28 @@ var TerminalProfileInfoSchema = object({
18396
18495
  label: string(),
18397
18496
  description: string().optional()
18398
18497
  });
18498
+ /**
18499
+ * A durable operator-created Terminal instance. Profiles are templates; only
18500
+ * an instance declares a camera.
18501
+ */
18502
+ var TerminalInstanceInfoSchema = object({
18503
+ instanceId: string(),
18504
+ cameraStableId: string(),
18505
+ nodeId: string(),
18506
+ profileId: string(),
18507
+ profileLabel: string(),
18508
+ name: string(),
18509
+ enabled: boolean()
18510
+ });
18511
+ var TerminalLegacyCameraSchema = object({
18512
+ stableId: string(),
18513
+ nodeId: string(),
18514
+ profileId: string(),
18515
+ profileLabel: string(),
18516
+ name: string(),
18517
+ /** Only legacy monitor cameras can retain their historic stable identity. */
18518
+ adoptable: boolean()
18519
+ });
18399
18520
  var TerminalOutputEventSchema = discriminatedUnion("kind", [object({
18400
18521
  seq: number().int().positive(),
18401
18522
  kind: literal("data"),
@@ -18412,7 +18533,29 @@ var TerminalOutputBatchSchema = object({
18412
18533
  snapshot: string().optional(),
18413
18534
  events: array(TerminalOutputEventSchema).readonly()
18414
18535
  });
18415
- method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
18536
+ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalInstanceInfoSchema).readonly(), { auth: "admin" }), method(object({
18537
+ targetNodeId: string().min(1),
18538
+ profileId: string().min(1),
18539
+ name: string().trim().min(1).max(160).optional()
18540
+ }), TerminalInstanceInfoSchema, {
18541
+ kind: "mutation",
18542
+ auth: "admin"
18543
+ }), method(object({ instanceId: string().min(1) }), _void(), {
18544
+ kind: "mutation",
18545
+ auth: "admin"
18546
+ }), method(object({
18547
+ instanceId: string().min(1),
18548
+ enabled: boolean()
18549
+ }), TerminalInstanceInfoSchema, {
18550
+ kind: "mutation",
18551
+ auth: "admin"
18552
+ }), method(_void(), array(TerminalLegacyCameraSchema).readonly(), { auth: "admin" }), method(object({
18553
+ stableId: string().min(1),
18554
+ name: string().trim().min(1).max(160).optional()
18555
+ }), TerminalInstanceInfoSchema, {
18556
+ kind: "mutation",
18557
+ auth: "admin"
18558
+ }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
18416
18559
  profileId: string(),
18417
18560
  cols: number().int().positive(),
18418
18561
  rows: number().int().positive()
@@ -18429,7 +18572,13 @@ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }),
18429
18572
  }), method(object({
18430
18573
  sessionId: string(),
18431
18574
  afterSeq: number().int().nonnegative(),
18432
- waitMs: number().int().min(0).max(2e3).default(0)
18575
+ waitMs: number().int().min(0).max(2e3).default(0),
18576
+ /**
18577
+ * Wait when a just-opened session has no output yet. Kept opt-in so a
18578
+ * browser's initial repaint remains immediate; the camera snapshot
18579
+ * relay uses it to avoid encoding a blank startup frame.
18580
+ */
18581
+ waitForOutput: boolean().optional()
18433
18582
  }), TerminalOutputBatchSchema, {
18434
18583
  kind: "mutation",
18435
18584
  auth: "admin",
@@ -20370,6 +20519,7 @@ var FaceInfoSchema = object({
20370
20519
  var FaceFilterEnum = _enum([
20371
20520
  "unassigned",
20372
20521
  "recognized",
20522
+ "identified",
20373
20523
  "all"
20374
20524
  ]);
20375
20525
  var MediaFileLiteSchema$1 = object({
@@ -20398,6 +20548,8 @@ method(_void(), array(IdentitySchema).readonly()), method(object({ name: string(
20398
20548
  kind: "mutation",
20399
20549
  auth: "admin"
20400
20550
  }), method(object({
20551
+ /** Restrict to one camera. Absent keeps the cluster-wide gallery view. */
20552
+ deviceId: number().int().optional(),
20401
20553
  limit: number().int().positive().optional(),
20402
20554
  filter: FaceFilterEnum.optional(),
20403
20555
  /**
@@ -22163,6 +22315,10 @@ var OsdSourceSchema = discriminatedUnion("kind", [
22163
22315
  capName: string().min(1).max(64),
22164
22316
  /** Dot path inside the slice, e.g. `detected`, `value`, `mode`. */
22165
22317
  valuePath: string().min(1).max(64)
22318
+ }),
22319
+ object({
22320
+ kind: literal("latest-recognition"),
22321
+ recognition: _enum(["person", "plate"])
22166
22322
  })
22167
22323
  ]);
22168
22324
  var OsdSlotBindingSchema = object({
@@ -22268,6 +22424,15 @@ method(object({ deviceId: number().int() }), object({
22268
22424
  }), object({ success: literal(true) }), {
22269
22425
  kind: "mutation",
22270
22426
  auth: "admin"
22427
+ }), method(object({
22428
+ sourceDeviceId: number().int(),
22429
+ targetDeviceId: number().int()
22430
+ }), object({
22431
+ copied: number().int().nonnegative(),
22432
+ skipped: number().int().nonnegative()
22433
+ }), {
22434
+ kind: "mutation",
22435
+ auth: "admin"
22271
22436
  }), method(object({
22272
22437
  deviceId: number().int(),
22273
22438
  slotId: string().min(1),
@@ -23195,13 +23360,19 @@ method(object({
23195
23360
  }), {
23196
23361
  kind: "mutation",
23197
23362
  auth: "admin"
23198
- }), method(RelocateFootageInputSchema, object({ jobId: string() }), {
23363
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
23199
23364
  kind: "mutation",
23200
23365
  auth: "admin"
23201
- }), method(object({}), array(RelocateJobSchema).readonly(), {
23202
- kind: "query",
23366
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
23367
+ kind: "mutation",
23203
23368
  auth: "admin"
23204
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
23369
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
23370
+ kind: "mutation",
23371
+ auth: "admin"
23372
+ }), method(StorageMigrationFootageMoveInputSchema, object({ jobId: string() }), {
23373
+ kind: "mutation",
23374
+ auth: "admin"
23375
+ }), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
23205
23376
  kind: "mutation",
23206
23377
  auth: "admin"
23207
23378
  });
@@ -27732,6 +27903,12 @@ Object.freeze({
27732
27903
  addonId: null,
27733
27904
  access: "delete"
27734
27905
  },
27906
+ "osdManager.copyDeviceConfiguration": {
27907
+ capName: "osd-manager",
27908
+ capScope: "system",
27909
+ addonId: null,
27910
+ access: "create"
27911
+ },
27735
27912
  "osdManager.getConditionSupport": {
27736
27913
  capName: "osd-manager",
27737
27914
  capScope: "system",
@@ -27828,7 +28005,7 @@ Object.freeze({
27828
28005
  addonId: null,
27829
28006
  access: "create"
27830
28007
  },
27831
- "pipelineAnalytics.cancelMediaRelocate": {
28008
+ "pipelineAnalytics.cancelStorageMigrationMove": {
27832
28009
  capName: "pipeline-analytics",
27833
28010
  capScope: "device",
27834
28011
  addonId: null,
@@ -27900,12 +28077,6 @@ Object.freeze({
27900
28077
  addonId: null,
27901
28078
  access: "view"
27902
28079
  },
27903
- "pipelineAnalytics.getMediaRelocateStatus": {
27904
- capName: "pipeline-analytics",
27905
- capScope: "device",
27906
- addonId: null,
27907
- access: "view"
27908
- },
27909
28080
  "pipelineAnalytics.getMotionEvents": {
27910
28081
  capName: "pipeline-analytics",
27911
28082
  capScope: "device",
@@ -27942,6 +28113,12 @@ Object.freeze({
27942
28113
  addonId: null,
27943
28114
  access: "view"
27944
28115
  },
28116
+ "pipelineAnalytics.getStorageMigrationMoveStatus": {
28117
+ capName: "pipeline-analytics",
28118
+ capScope: "device",
28119
+ addonId: null,
28120
+ access: "view"
28121
+ },
27945
28122
  "pipelineAnalytics.getTrack": {
27946
28123
  capName: "pipeline-analytics",
27947
28124
  capScope: "device",
@@ -28020,6 +28197,12 @@ Object.freeze({
28020
28197
  addonId: null,
28021
28198
  access: "view"
28022
28199
  },
28200
+ "pipelineAnalytics.pauseForStorageMigration": {
28201
+ capName: "pipeline-analytics",
28202
+ capScope: "device",
28203
+ addonId: null,
28204
+ access: "create"
28205
+ },
28023
28206
  "pipelineAnalytics.proposeRetrainAnnotations": {
28024
28207
  capName: "pipeline-analytics",
28025
28208
  capScope: "device",
@@ -28050,7 +28233,7 @@ Object.freeze({
28050
28233
  addonId: null,
28051
28234
  access: "create"
28052
28235
  },
28053
- "pipelineAnalytics.relocateMedia": {
28236
+ "pipelineAnalytics.refreshStorageLocationsForMigration": {
28054
28237
  capName: "pipeline-analytics",
28055
28238
  capScope: "device",
28056
28239
  addonId: null,
@@ -28062,6 +28245,12 @@ Object.freeze({
28062
28245
  addonId: null,
28063
28246
  access: "create"
28064
28247
  },
28248
+ "pipelineAnalytics.resumeForStorageMigration": {
28249
+ capName: "pipeline-analytics",
28250
+ capScope: "device",
28251
+ addonId: null,
28252
+ access: "create"
28253
+ },
28065
28254
  "pipelineAnalytics.saveRetrainAnnotations": {
28066
28255
  capName: "pipeline-analytics",
28067
28256
  capScope: "device",
@@ -28086,6 +28275,12 @@ Object.freeze({
28086
28275
  addonId: null,
28087
28276
  access: "create"
28088
28277
  },
28278
+ "pipelineAnalytics.startStorageMigrationMove": {
28279
+ capName: "pipeline-analytics",
28280
+ capScope: "device",
28281
+ addonId: null,
28282
+ access: "create"
28283
+ },
28089
28284
  "pipelineAnalytics.wipeAllAnalytics": {
28090
28285
  capName: "pipeline-analytics",
28091
28286
  capScope: "device",
@@ -28452,6 +28647,12 @@ Object.freeze({
28452
28647
  addonId: null,
28453
28648
  access: "view"
28454
28649
  },
28650
+ "pipelineOrchestrator.pauseForStorageMigration": {
28651
+ capName: "pipeline-orchestrator",
28652
+ capScope: "system",
28653
+ addonId: null,
28654
+ access: "create"
28655
+ },
28455
28656
  "pipelineOrchestrator.rebalance": {
28456
28657
  capName: "pipeline-orchestrator",
28457
28658
  capScope: "system",
@@ -28476,6 +28677,12 @@ Object.freeze({
28476
28677
  addonId: null,
28477
28678
  access: "view"
28478
28679
  },
28680
+ "pipelineOrchestrator.resumeForStorageMigration": {
28681
+ capName: "pipeline-orchestrator",
28682
+ capScope: "system",
28683
+ addonId: null,
28684
+ access: "create"
28685
+ },
28479
28686
  "pipelineOrchestrator.saveTemplate": {
28480
28687
  capName: "pipeline-orchestrator",
28481
28688
  capScope: "system",
@@ -28872,7 +29079,7 @@ Object.freeze({
28872
29079
  addonId: null,
28873
29080
  access: "create"
28874
29081
  },
28875
- "recording.cancelRelocate": {
29082
+ "recording.cancelStorageMigrationMove": {
28876
29083
  capName: "recording",
28877
29084
  capScope: "system",
28878
29085
  addonId: null,
@@ -28908,7 +29115,7 @@ Object.freeze({
28908
29115
  addonId: null,
28909
29116
  access: "view"
28910
29117
  },
28911
- "recording.getRelocateStatus": {
29118
+ "recording.getStorageMigrationMoveStatus": {
28912
29119
  capName: "recording",
28913
29120
  capScope: "system",
28914
29121
  addonId: null,
@@ -28932,6 +29139,12 @@ Object.freeze({
28932
29139
  addonId: null,
28933
29140
  access: "view"
28934
29141
  },
29142
+ "recording.pauseForStorageMigration": {
29143
+ capName: "recording",
29144
+ capScope: "system",
29145
+ addonId: null,
29146
+ access: "create"
29147
+ },
28935
29148
  "recording.pruneFootage": {
28936
29149
  capName: "recording",
28937
29150
  capScope: "system",
@@ -28950,7 +29163,7 @@ Object.freeze({
28950
29163
  addonId: null,
28951
29164
  access: "view"
28952
29165
  },
28953
- "recording.relocateFootage": {
29166
+ "recording.refreshStorageLocationsForMigration": {
28954
29167
  capName: "recording",
28955
29168
  capScope: "system",
28956
29169
  addonId: null,
@@ -28974,12 +29187,24 @@ Object.freeze({
28974
29187
  addonId: null,
28975
29188
  access: "create"
28976
29189
  },
29190
+ "recording.resumeForStorageMigration": {
29191
+ capName: "recording",
29192
+ capScope: "system",
29193
+ addonId: null,
29194
+ access: "create"
29195
+ },
28977
29196
  "recording.setDeviceConfig": {
28978
29197
  capName: "recording",
28979
29198
  capScope: "system",
28980
29199
  addonId: null,
28981
29200
  access: "create"
28982
29201
  },
29202
+ "recording.startStorageMigrationMove": {
29203
+ capName: "recording",
29204
+ capScope: "system",
29205
+ addonId: null,
29206
+ access: "create"
29207
+ },
28983
29208
  "recordingExport.cancelExport": {
28984
29209
  capName: "recordingExport",
28985
29210
  capScope: "system",
@@ -29370,6 +29595,30 @@ Object.freeze({
29370
29595
  addonId: null,
29371
29596
  access: "view"
29372
29597
  },
29598
+ "storageMigration.cancel": {
29599
+ capName: "storage-migration",
29600
+ capScope: "system",
29601
+ addonId: null,
29602
+ access: "create"
29603
+ },
29604
+ "storageMigration.plan": {
29605
+ capName: "storage-migration",
29606
+ capScope: "system",
29607
+ addonId: null,
29608
+ access: "view"
29609
+ },
29610
+ "storageMigration.start": {
29611
+ capName: "storage-migration",
29612
+ capScope: "system",
29613
+ addonId: null,
29614
+ access: "create"
29615
+ },
29616
+ "storageMigration.status": {
29617
+ capName: "storage-migration",
29618
+ capScope: "system",
29619
+ addonId: null,
29620
+ access: "view"
29621
+ },
29373
29622
  "storageProvider.abortUpload": {
29374
29623
  capName: "storage-provider",
29375
29624
  capScope: "system",
@@ -29748,12 +29997,42 @@ Object.freeze({
29748
29997
  addonId: null,
29749
29998
  access: "create"
29750
29999
  },
30000
+ "terminalSession.adoptLegacyMonitor": {
30001
+ capName: "terminal-session",
30002
+ capScope: "system",
30003
+ addonId: null,
30004
+ access: "create"
30005
+ },
29751
30006
  "terminalSession.close": {
29752
30007
  capName: "terminal-session",
29753
30008
  capScope: "system",
29754
30009
  addonId: null,
29755
30010
  access: "create"
29756
30011
  },
30012
+ "terminalSession.createInstance": {
30013
+ capName: "terminal-session",
30014
+ capScope: "system",
30015
+ addonId: null,
30016
+ access: "create"
30017
+ },
30018
+ "terminalSession.deleteInstance": {
30019
+ capName: "terminal-session",
30020
+ capScope: "system",
30021
+ addonId: null,
30022
+ access: "delete"
30023
+ },
30024
+ "terminalSession.listInstances": {
30025
+ capName: "terminal-session",
30026
+ capScope: "system",
30027
+ addonId: null,
30028
+ access: "view"
30029
+ },
30030
+ "terminalSession.listLegacyCameras": {
30031
+ capName: "terminal-session",
30032
+ capScope: "system",
30033
+ addonId: null,
30034
+ access: "view"
30035
+ },
29757
30036
  "terminalSession.listProfiles": {
29758
30037
  capName: "terminal-session",
29759
30038
  capScope: "system",
@@ -29784,6 +30063,12 @@ Object.freeze({
29784
30063
  addonId: null,
29785
30064
  access: "create"
29786
30065
  },
30066
+ "terminalSession.setInstanceEnabled": {
30067
+ capName: "terminal-session",
30068
+ capScope: "system",
30069
+ addonId: null,
30070
+ access: "create"
30071
+ },
29787
30072
  "terminalSession.writeInput": {
29788
30073
  capName: "terminal-session",
29789
30074
  capScope: "system",
package/dist/addon.mjs CHANGED
@@ -7551,12 +7551,11 @@ var RecordingConfigSchema = object({
7551
7551
  /**
7552
7552
  * Entity-relocation job state (storage entity-routing spec, Phase 4).
7553
7553
  *
7554
- * One shape shared by the recorder's `relocateFootage` (segments) and
7555
- * pipeline-analytics' `relocateMedia` (event media blobs) so the admin Data
7556
- * page renders both movers with one component. Jobs are in-RAM (a restart
7557
- * forgets them re-running is safe by construction: copy-if-absent, delete
7558
- * after verify) and each completed/failed run also lands one durable ops-log
7559
- * row on the owning addon's surface.
7554
+ * One shape shared by the recorder and pipeline-analytics internal movers.
7555
+ * The public admin surface is `storage-migration`; child jobs remain in RAM
7556
+ * because copy-if-absent, verify, delete and index/row repoint are resumable.
7557
+ * Each completed/failed run also lands one durable ops-log row on its owning
7558
+ * addon surface.
7560
7559
  */
7561
7560
  var RelocateJobStateSchema = _enum([
7562
7561
  "running",
@@ -7583,19 +7582,100 @@ var RelocateJobSchema = object({
7583
7582
  finishedAt: number().nullable(),
7584
7583
  error: string().nullable()
7585
7584
  });
7585
+ /** Profile-derived footage selection used only by the migration coordinator:
7586
+ * `recordings` owns high+mid; `recordingsLow` owns low. */
7587
+ var RelocateFootageClassSchema = _enum(["recordings", "recordingsLow"]);
7586
7588
  var RelocateFootageInputSchema = object({
7587
- deviceId: number().optional(),
7588
7589
  fromLocationId: string(),
7589
7590
  toLocationId: string(),
7590
7591
  entities: array(_enum(["segments"])).optional(),
7592
+ /** Limits relocation to the logical profile class. Omit only for the
7593
+ * pre-orchestration compatibility path. */
7594
+ footageClass: RelocateFootageClassSchema.optional(),
7591
7595
  /** Copy throttle in MB/s (default 40) — the drain is a background chore,
7592
7596
  * never allowed to starve live writers. */
7593
7597
  throttleMbps: number().min(1).max(1e3).optional()
7594
7598
  });
7595
- var RelocateMediaInputSchema = object({
7596
- deviceId: number().optional(),
7599
+ /** Internal, lease-scoped participant operation. It is intentionally separate
7600
+ * from persistent recording settings: a migration never changes
7601
+ * `RecordingConfig.enabled` or camera wrapper bindings. */
7602
+ var StorageMigrationLeaseInputSchema = object({ leaseId: string().min(1) });
7603
+ var StorageMigrationFootageMoveInputSchema = RelocateFootageInputSchema.extend({ leaseId: string().min(1) });
7604
+ var StorageMigrationMediaMoveInputSchema = object({
7597
7605
  toLocationId: string(),
7598
7606
  throttleMbps: number().min(1).max(1e3).optional()
7607
+ }).extend({ leaseId: string().min(1) });
7608
+ /** The independently selectable logical storage classes. `recordings`
7609
+ * encompasses the high and mid segment profiles; `recordingsLow` is low
7610
+ * segments; `eventMedia` is post-analysis blobs. */
7611
+ var StorageMigrationClassSchema = _enum([
7612
+ "recordings",
7613
+ "recordingsLow",
7614
+ "eventMedia"
7615
+ ]);
7616
+ /** A destination is always an existing, fully-qualified location id. The
7617
+ * migration API intentionally never changes a source location's `basePath`:
7618
+ * callers create a new `<type>:<slug>` location, then select it here. */
7619
+ var StorageMigrationDestinationsSchema = object({
7620
+ recordings: string().min(1).optional(),
7621
+ recordingsLow: string().min(1).optional(),
7622
+ eventMedia: string().min(1).optional()
7623
+ }).refine((value) => Object.keys(value).length > 0, { message: "select at least one storage class" });
7624
+ /** Shared input for planning and starting an orchestrated storage migration. */
7625
+ var StorageMigrationInputSchema = object({
7626
+ destinations: StorageMigrationDestinationsSchema,
7627
+ throttleMbps: number().min(1).max(1e3).optional()
7628
+ });
7629
+ /** The durable coordinator state machine. The only phase that changes default
7630
+ * locations is `repointing`, after every selected mover has completed and been
7631
+ * verified. */
7632
+ var StorageMigrationPhaseSchema = _enum([
7633
+ "planning",
7634
+ "pausing",
7635
+ "moving",
7636
+ "verifying",
7637
+ "repointing",
7638
+ "refreshing",
7639
+ "resuming",
7640
+ "done",
7641
+ "failed",
7642
+ "cancelled"
7643
+ ]);
7644
+ var StorageMigrationParticipantSchema = _enum([
7645
+ "pipeline",
7646
+ "recorder",
7647
+ "analytics"
7648
+ ]);
7649
+ var StorageMigrationMoveSchema = object({
7650
+ storageClass: StorageMigrationClassSchema,
7651
+ fromLocationId: string(),
7652
+ toLocationId: string(),
7653
+ moverJobId: string().nullable(),
7654
+ state: RelocateJobStateSchema.nullable(),
7655
+ error: string().nullable()
7656
+ });
7657
+ var StorageMigrationJobSchema = object({
7658
+ jobId: string(),
7659
+ phase: StorageMigrationPhaseSchema,
7660
+ destinations: StorageMigrationDestinationsSchema,
7661
+ throttleMbps: number(),
7662
+ moves: array(StorageMigrationMoveSchema),
7663
+ pauseLeaseId: string().nullable(),
7664
+ pausedParticipants: array(StorageMigrationParticipantSchema),
7665
+ repointed: boolean(),
7666
+ cancelRequested: boolean(),
7667
+ startedAt: number(),
7668
+ updatedAt: number(),
7669
+ finishedAt: number().nullable(),
7670
+ error: string().nullable()
7671
+ });
7672
+ var StorageMigrationPlanSchema = object({
7673
+ destinations: StorageMigrationDestinationsSchema,
7674
+ moves: array(object({
7675
+ storageClass: StorageMigrationClassSchema,
7676
+ fromLocationId: string(),
7677
+ toLocationId: string()
7678
+ }))
7599
7679
  });
7600
7680
  /**
7601
7681
  * `StorageLocationType` — an addon-declared id that identifies the *kind* of
@@ -16026,13 +16106,19 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
16026
16106
  }), method(object({ deviceId: number() }), EventPruneCountsSchema, {
16027
16107
  kind: "mutation",
16028
16108
  auth: "admin"
16029
- }), method(RelocateMediaInputSchema, object({ jobId: string() }), {
16109
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
16030
16110
  kind: "mutation",
16031
16111
  auth: "admin"
16032
- }), method(object({}), array(RelocateJobSchema).readonly(), {
16033
- kind: "query",
16112
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
16113
+ kind: "mutation",
16114
+ auth: "admin"
16115
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
16116
+ kind: "mutation",
16117
+ auth: "admin"
16118
+ }), method(StorageMigrationMediaMoveInputSchema, object({ jobId: string() }), {
16119
+ kind: "mutation",
16034
16120
  auth: "admin"
16035
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
16121
+ }), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
16036
16122
  kind: "mutation",
16037
16123
  auth: "admin"
16038
16124
  }), method(OpsLogQueryInputSchema, array(OpsLogEntrySchema).readonly(), {
@@ -17529,7 +17615,13 @@ var NodeInferenceDevicesSchema = object({
17529
17615
  reachable: boolean(),
17530
17616
  devices: array(NodeInferenceDeviceSchema).readonly()
17531
17617
  });
17532
- method(object({
17618
+ method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
17619
+ kind: "mutation",
17620
+ auth: "admin"
17621
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
17622
+ kind: "mutation",
17623
+ auth: "admin"
17624
+ }), method(object({
17533
17625
  deviceId: number(),
17534
17626
  agentNodeId: string()
17535
17627
  }), object({ success: literal(true) }), {
@@ -18294,6 +18386,13 @@ method(object({ locationId: string() }), EvictableUsageSchema), method(object({
18294
18386
  locationId: string(),
18295
18387
  targetBytes: number().int().positive()
18296
18388
  }), EvictResultSchema, { kind: "mutation" });
18389
+ method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin" }), method(StorageMigrationInputSchema, object({ jobId: string() }), {
18390
+ kind: "mutation",
18391
+ auth: "admin"
18392
+ }), method(object({ jobId: string().optional() }), StorageMigrationJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
18393
+ kind: "mutation",
18394
+ auth: "admin"
18395
+ });
18297
18396
  var ProviderInfoSchema = discriminatedUnion("shouldSaveDiskSpace", [object({
18298
18397
  providerId: string().min(1),
18299
18398
  displayName: string().min(1),
@@ -18397,6 +18496,28 @@ var TerminalProfileInfoSchema = object({
18397
18496
  label: string(),
18398
18497
  description: string().optional()
18399
18498
  });
18499
+ /**
18500
+ * A durable operator-created Terminal instance. Profiles are templates; only
18501
+ * an instance declares a camera.
18502
+ */
18503
+ var TerminalInstanceInfoSchema = object({
18504
+ instanceId: string(),
18505
+ cameraStableId: string(),
18506
+ nodeId: string(),
18507
+ profileId: string(),
18508
+ profileLabel: string(),
18509
+ name: string(),
18510
+ enabled: boolean()
18511
+ });
18512
+ var TerminalLegacyCameraSchema = object({
18513
+ stableId: string(),
18514
+ nodeId: string(),
18515
+ profileId: string(),
18516
+ profileLabel: string(),
18517
+ name: string(),
18518
+ /** Only legacy monitor cameras can retain their historic stable identity. */
18519
+ adoptable: boolean()
18520
+ });
18400
18521
  var TerminalOutputEventSchema = discriminatedUnion("kind", [object({
18401
18522
  seq: number().int().positive(),
18402
18523
  kind: literal("data"),
@@ -18413,7 +18534,29 @@ var TerminalOutputBatchSchema = object({
18413
18534
  snapshot: string().optional(),
18414
18535
  events: array(TerminalOutputEventSchema).readonly()
18415
18536
  });
18416
- method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
18537
+ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalInstanceInfoSchema).readonly(), { auth: "admin" }), method(object({
18538
+ targetNodeId: string().min(1),
18539
+ profileId: string().min(1),
18540
+ name: string().trim().min(1).max(160).optional()
18541
+ }), TerminalInstanceInfoSchema, {
18542
+ kind: "mutation",
18543
+ auth: "admin"
18544
+ }), method(object({ instanceId: string().min(1) }), _void(), {
18545
+ kind: "mutation",
18546
+ auth: "admin"
18547
+ }), method(object({
18548
+ instanceId: string().min(1),
18549
+ enabled: boolean()
18550
+ }), TerminalInstanceInfoSchema, {
18551
+ kind: "mutation",
18552
+ auth: "admin"
18553
+ }), method(_void(), array(TerminalLegacyCameraSchema).readonly(), { auth: "admin" }), method(object({
18554
+ stableId: string().min(1),
18555
+ name: string().trim().min(1).max(160).optional()
18556
+ }), TerminalInstanceInfoSchema, {
18557
+ kind: "mutation",
18558
+ auth: "admin"
18559
+ }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
18417
18560
  profileId: string(),
18418
18561
  cols: number().int().positive(),
18419
18562
  rows: number().int().positive()
@@ -18430,7 +18573,13 @@ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }),
18430
18573
  }), method(object({
18431
18574
  sessionId: string(),
18432
18575
  afterSeq: number().int().nonnegative(),
18433
- waitMs: number().int().min(0).max(2e3).default(0)
18576
+ waitMs: number().int().min(0).max(2e3).default(0),
18577
+ /**
18578
+ * Wait when a just-opened session has no output yet. Kept opt-in so a
18579
+ * browser's initial repaint remains immediate; the camera snapshot
18580
+ * relay uses it to avoid encoding a blank startup frame.
18581
+ */
18582
+ waitForOutput: boolean().optional()
18434
18583
  }), TerminalOutputBatchSchema, {
18435
18584
  kind: "mutation",
18436
18585
  auth: "admin",
@@ -20371,6 +20520,7 @@ var FaceInfoSchema = object({
20371
20520
  var FaceFilterEnum = _enum([
20372
20521
  "unassigned",
20373
20522
  "recognized",
20523
+ "identified",
20374
20524
  "all"
20375
20525
  ]);
20376
20526
  var MediaFileLiteSchema$1 = object({
@@ -20399,6 +20549,8 @@ method(_void(), array(IdentitySchema).readonly()), method(object({ name: string(
20399
20549
  kind: "mutation",
20400
20550
  auth: "admin"
20401
20551
  }), method(object({
20552
+ /** Restrict to one camera. Absent keeps the cluster-wide gallery view. */
20553
+ deviceId: number().int().optional(),
20402
20554
  limit: number().int().positive().optional(),
20403
20555
  filter: FaceFilterEnum.optional(),
20404
20556
  /**
@@ -22164,6 +22316,10 @@ var OsdSourceSchema = discriminatedUnion("kind", [
22164
22316
  capName: string().min(1).max(64),
22165
22317
  /** Dot path inside the slice, e.g. `detected`, `value`, `mode`. */
22166
22318
  valuePath: string().min(1).max(64)
22319
+ }),
22320
+ object({
22321
+ kind: literal("latest-recognition"),
22322
+ recognition: _enum(["person", "plate"])
22167
22323
  })
22168
22324
  ]);
22169
22325
  var OsdSlotBindingSchema = object({
@@ -22269,6 +22425,15 @@ method(object({ deviceId: number().int() }), object({
22269
22425
  }), object({ success: literal(true) }), {
22270
22426
  kind: "mutation",
22271
22427
  auth: "admin"
22428
+ }), method(object({
22429
+ sourceDeviceId: number().int(),
22430
+ targetDeviceId: number().int()
22431
+ }), object({
22432
+ copied: number().int().nonnegative(),
22433
+ skipped: number().int().nonnegative()
22434
+ }), {
22435
+ kind: "mutation",
22436
+ auth: "admin"
22272
22437
  }), method(object({
22273
22438
  deviceId: number().int(),
22274
22439
  slotId: string().min(1),
@@ -23196,13 +23361,19 @@ method(object({
23196
23361
  }), {
23197
23362
  kind: "mutation",
23198
23363
  auth: "admin"
23199
- }), method(RelocateFootageInputSchema, object({ jobId: string() }), {
23364
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
23200
23365
  kind: "mutation",
23201
23366
  auth: "admin"
23202
- }), method(object({}), array(RelocateJobSchema).readonly(), {
23203
- kind: "query",
23367
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
23368
+ kind: "mutation",
23204
23369
  auth: "admin"
23205
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
23370
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
23371
+ kind: "mutation",
23372
+ auth: "admin"
23373
+ }), method(StorageMigrationFootageMoveInputSchema, object({ jobId: string() }), {
23374
+ kind: "mutation",
23375
+ auth: "admin"
23376
+ }), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
23206
23377
  kind: "mutation",
23207
23378
  auth: "admin"
23208
23379
  });
@@ -27733,6 +27904,12 @@ Object.freeze({
27733
27904
  addonId: null,
27734
27905
  access: "delete"
27735
27906
  },
27907
+ "osdManager.copyDeviceConfiguration": {
27908
+ capName: "osd-manager",
27909
+ capScope: "system",
27910
+ addonId: null,
27911
+ access: "create"
27912
+ },
27736
27913
  "osdManager.getConditionSupport": {
27737
27914
  capName: "osd-manager",
27738
27915
  capScope: "system",
@@ -27829,7 +28006,7 @@ Object.freeze({
27829
28006
  addonId: null,
27830
28007
  access: "create"
27831
28008
  },
27832
- "pipelineAnalytics.cancelMediaRelocate": {
28009
+ "pipelineAnalytics.cancelStorageMigrationMove": {
27833
28010
  capName: "pipeline-analytics",
27834
28011
  capScope: "device",
27835
28012
  addonId: null,
@@ -27901,12 +28078,6 @@ Object.freeze({
27901
28078
  addonId: null,
27902
28079
  access: "view"
27903
28080
  },
27904
- "pipelineAnalytics.getMediaRelocateStatus": {
27905
- capName: "pipeline-analytics",
27906
- capScope: "device",
27907
- addonId: null,
27908
- access: "view"
27909
- },
27910
28081
  "pipelineAnalytics.getMotionEvents": {
27911
28082
  capName: "pipeline-analytics",
27912
28083
  capScope: "device",
@@ -27943,6 +28114,12 @@ Object.freeze({
27943
28114
  addonId: null,
27944
28115
  access: "view"
27945
28116
  },
28117
+ "pipelineAnalytics.getStorageMigrationMoveStatus": {
28118
+ capName: "pipeline-analytics",
28119
+ capScope: "device",
28120
+ addonId: null,
28121
+ access: "view"
28122
+ },
27946
28123
  "pipelineAnalytics.getTrack": {
27947
28124
  capName: "pipeline-analytics",
27948
28125
  capScope: "device",
@@ -28021,6 +28198,12 @@ Object.freeze({
28021
28198
  addonId: null,
28022
28199
  access: "view"
28023
28200
  },
28201
+ "pipelineAnalytics.pauseForStorageMigration": {
28202
+ capName: "pipeline-analytics",
28203
+ capScope: "device",
28204
+ addonId: null,
28205
+ access: "create"
28206
+ },
28024
28207
  "pipelineAnalytics.proposeRetrainAnnotations": {
28025
28208
  capName: "pipeline-analytics",
28026
28209
  capScope: "device",
@@ -28051,7 +28234,7 @@ Object.freeze({
28051
28234
  addonId: null,
28052
28235
  access: "create"
28053
28236
  },
28054
- "pipelineAnalytics.relocateMedia": {
28237
+ "pipelineAnalytics.refreshStorageLocationsForMigration": {
28055
28238
  capName: "pipeline-analytics",
28056
28239
  capScope: "device",
28057
28240
  addonId: null,
@@ -28063,6 +28246,12 @@ Object.freeze({
28063
28246
  addonId: null,
28064
28247
  access: "create"
28065
28248
  },
28249
+ "pipelineAnalytics.resumeForStorageMigration": {
28250
+ capName: "pipeline-analytics",
28251
+ capScope: "device",
28252
+ addonId: null,
28253
+ access: "create"
28254
+ },
28066
28255
  "pipelineAnalytics.saveRetrainAnnotations": {
28067
28256
  capName: "pipeline-analytics",
28068
28257
  capScope: "device",
@@ -28087,6 +28276,12 @@ Object.freeze({
28087
28276
  addonId: null,
28088
28277
  access: "create"
28089
28278
  },
28279
+ "pipelineAnalytics.startStorageMigrationMove": {
28280
+ capName: "pipeline-analytics",
28281
+ capScope: "device",
28282
+ addonId: null,
28283
+ access: "create"
28284
+ },
28090
28285
  "pipelineAnalytics.wipeAllAnalytics": {
28091
28286
  capName: "pipeline-analytics",
28092
28287
  capScope: "device",
@@ -28453,6 +28648,12 @@ Object.freeze({
28453
28648
  addonId: null,
28454
28649
  access: "view"
28455
28650
  },
28651
+ "pipelineOrchestrator.pauseForStorageMigration": {
28652
+ capName: "pipeline-orchestrator",
28653
+ capScope: "system",
28654
+ addonId: null,
28655
+ access: "create"
28656
+ },
28456
28657
  "pipelineOrchestrator.rebalance": {
28457
28658
  capName: "pipeline-orchestrator",
28458
28659
  capScope: "system",
@@ -28477,6 +28678,12 @@ Object.freeze({
28477
28678
  addonId: null,
28478
28679
  access: "view"
28479
28680
  },
28681
+ "pipelineOrchestrator.resumeForStorageMigration": {
28682
+ capName: "pipeline-orchestrator",
28683
+ capScope: "system",
28684
+ addonId: null,
28685
+ access: "create"
28686
+ },
28480
28687
  "pipelineOrchestrator.saveTemplate": {
28481
28688
  capName: "pipeline-orchestrator",
28482
28689
  capScope: "system",
@@ -28873,7 +29080,7 @@ Object.freeze({
28873
29080
  addonId: null,
28874
29081
  access: "create"
28875
29082
  },
28876
- "recording.cancelRelocate": {
29083
+ "recording.cancelStorageMigrationMove": {
28877
29084
  capName: "recording",
28878
29085
  capScope: "system",
28879
29086
  addonId: null,
@@ -28909,7 +29116,7 @@ Object.freeze({
28909
29116
  addonId: null,
28910
29117
  access: "view"
28911
29118
  },
28912
- "recording.getRelocateStatus": {
29119
+ "recording.getStorageMigrationMoveStatus": {
28913
29120
  capName: "recording",
28914
29121
  capScope: "system",
28915
29122
  addonId: null,
@@ -28933,6 +29140,12 @@ Object.freeze({
28933
29140
  addonId: null,
28934
29141
  access: "view"
28935
29142
  },
29143
+ "recording.pauseForStorageMigration": {
29144
+ capName: "recording",
29145
+ capScope: "system",
29146
+ addonId: null,
29147
+ access: "create"
29148
+ },
28936
29149
  "recording.pruneFootage": {
28937
29150
  capName: "recording",
28938
29151
  capScope: "system",
@@ -28951,7 +29164,7 @@ Object.freeze({
28951
29164
  addonId: null,
28952
29165
  access: "view"
28953
29166
  },
28954
- "recording.relocateFootage": {
29167
+ "recording.refreshStorageLocationsForMigration": {
28955
29168
  capName: "recording",
28956
29169
  capScope: "system",
28957
29170
  addonId: null,
@@ -28975,12 +29188,24 @@ Object.freeze({
28975
29188
  addonId: null,
28976
29189
  access: "create"
28977
29190
  },
29191
+ "recording.resumeForStorageMigration": {
29192
+ capName: "recording",
29193
+ capScope: "system",
29194
+ addonId: null,
29195
+ access: "create"
29196
+ },
28978
29197
  "recording.setDeviceConfig": {
28979
29198
  capName: "recording",
28980
29199
  capScope: "system",
28981
29200
  addonId: null,
28982
29201
  access: "create"
28983
29202
  },
29203
+ "recording.startStorageMigrationMove": {
29204
+ capName: "recording",
29205
+ capScope: "system",
29206
+ addonId: null,
29207
+ access: "create"
29208
+ },
28984
29209
  "recordingExport.cancelExport": {
28985
29210
  capName: "recordingExport",
28986
29211
  capScope: "system",
@@ -29371,6 +29596,30 @@ Object.freeze({
29371
29596
  addonId: null,
29372
29597
  access: "view"
29373
29598
  },
29599
+ "storageMigration.cancel": {
29600
+ capName: "storage-migration",
29601
+ capScope: "system",
29602
+ addonId: null,
29603
+ access: "create"
29604
+ },
29605
+ "storageMigration.plan": {
29606
+ capName: "storage-migration",
29607
+ capScope: "system",
29608
+ addonId: null,
29609
+ access: "view"
29610
+ },
29611
+ "storageMigration.start": {
29612
+ capName: "storage-migration",
29613
+ capScope: "system",
29614
+ addonId: null,
29615
+ access: "create"
29616
+ },
29617
+ "storageMigration.status": {
29618
+ capName: "storage-migration",
29619
+ capScope: "system",
29620
+ addonId: null,
29621
+ access: "view"
29622
+ },
29374
29623
  "storageProvider.abortUpload": {
29375
29624
  capName: "storage-provider",
29376
29625
  capScope: "system",
@@ -29749,12 +29998,42 @@ Object.freeze({
29749
29998
  addonId: null,
29750
29999
  access: "create"
29751
30000
  },
30001
+ "terminalSession.adoptLegacyMonitor": {
30002
+ capName: "terminal-session",
30003
+ capScope: "system",
30004
+ addonId: null,
30005
+ access: "create"
30006
+ },
29752
30007
  "terminalSession.close": {
29753
30008
  capName: "terminal-session",
29754
30009
  capScope: "system",
29755
30010
  addonId: null,
29756
30011
  access: "create"
29757
30012
  },
30013
+ "terminalSession.createInstance": {
30014
+ capName: "terminal-session",
30015
+ capScope: "system",
30016
+ addonId: null,
30017
+ access: "create"
30018
+ },
30019
+ "terminalSession.deleteInstance": {
30020
+ capName: "terminal-session",
30021
+ capScope: "system",
30022
+ addonId: null,
30023
+ access: "delete"
30024
+ },
30025
+ "terminalSession.listInstances": {
30026
+ capName: "terminal-session",
30027
+ capScope: "system",
30028
+ addonId: null,
30029
+ access: "view"
30030
+ },
30031
+ "terminalSession.listLegacyCameras": {
30032
+ capName: "terminal-session",
30033
+ capScope: "system",
30034
+ addonId: null,
30035
+ access: "view"
30036
+ },
29758
30037
  "terminalSession.listProfiles": {
29759
30038
  capName: "terminal-session",
29760
30039
  capScope: "system",
@@ -29785,6 +30064,12 @@ Object.freeze({
29785
30064
  addonId: null,
29786
30065
  access: "create"
29787
30066
  },
30067
+ "terminalSession.setInstanceEnabled": {
30068
+ capName: "terminal-session",
30069
+ capScope: "system",
30070
+ addonId: null,
30071
+ access: "create"
30072
+ },
29788
30073
  "terminalSession.writeInput": {
29789
30074
  capName: "terminal-session",
29790
30075
  capScope: "system",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-provider-onvif",
3
- "version": "1.2.11",
3
+ "version": "1.2.12",
4
4
  "description": "ONVIF camera device provider addon for CamStack",
5
5
  "keywords": [
6
6
  "camstack",