@camstack/addon-provider-onvif 1.2.10 → 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 +357 -30
  2. package/dist/addon.mjs +357 -30
  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",
16033
16113
  auth: "admin"
16034
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
16114
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
16115
+ kind: "mutation",
16116
+ auth: "admin"
16117
+ }), method(StorageMigrationMediaMoveInputSchema, object({ jobId: string() }), {
16118
+ kind: "mutation",
16119
+ auth: "admin"
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,7 +18495,67 @@ var TerminalProfileInfoSchema = object({
18396
18495
  label: string(),
18397
18496
  description: string().optional()
18398
18497
  });
18399
- method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
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
+ });
18520
+ var TerminalOutputEventSchema = discriminatedUnion("kind", [object({
18521
+ seq: number().int().positive(),
18522
+ kind: literal("data"),
18523
+ data: string()
18524
+ }), object({
18525
+ seq: number().int().positive(),
18526
+ kind: literal("exit"),
18527
+ exitCode: number().int(),
18528
+ signal: number().int().optional()
18529
+ })]);
18530
+ var TerminalOutputBatchSchema = object({
18531
+ cursor: number().int().nonnegative(),
18532
+ reset: boolean(),
18533
+ snapshot: string().optional(),
18534
+ events: array(TerminalOutputEventSchema).readonly()
18535
+ });
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({
18400
18559
  profileId: string(),
18401
18560
  cols: number().int().positive(),
18402
18561
  rows: number().int().positive()
@@ -18410,6 +18569,26 @@ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }),
18410
18569
  }), _void(), {
18411
18570
  kind: "mutation",
18412
18571
  auth: "admin"
18572
+ }), method(object({
18573
+ sessionId: string(),
18574
+ afterSeq: number().int().nonnegative(),
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()
18582
+ }), TerminalOutputBatchSchema, {
18583
+ kind: "mutation",
18584
+ auth: "admin",
18585
+ timeoutMs: 15e3
18586
+ }), method(object({
18587
+ sessionId: string(),
18588
+ data: string().max(64 * 1024)
18589
+ }), _void(), {
18590
+ kind: "mutation",
18591
+ auth: "admin"
18413
18592
  }), method(object({ sessionId: string() }), _void(), {
18414
18593
  kind: "mutation",
18415
18594
  auth: "admin"
@@ -20340,6 +20519,7 @@ var FaceInfoSchema = object({
20340
20519
  var FaceFilterEnum = _enum([
20341
20520
  "unassigned",
20342
20521
  "recognized",
20522
+ "identified",
20343
20523
  "all"
20344
20524
  ]);
20345
20525
  var MediaFileLiteSchema$1 = object({
@@ -20368,6 +20548,8 @@ method(_void(), array(IdentitySchema).readonly()), method(object({ name: string(
20368
20548
  kind: "mutation",
20369
20549
  auth: "admin"
20370
20550
  }), method(object({
20551
+ /** Restrict to one camera. Absent keeps the cluster-wide gallery view. */
20552
+ deviceId: number().int().optional(),
20371
20553
  limit: number().int().positive().optional(),
20372
20554
  filter: FaceFilterEnum.optional(),
20373
20555
  /**
@@ -22133,6 +22315,10 @@ var OsdSourceSchema = discriminatedUnion("kind", [
22133
22315
  capName: string().min(1).max(64),
22134
22316
  /** Dot path inside the slice, e.g. `detected`, `value`, `mode`. */
22135
22317
  valuePath: string().min(1).max(64)
22318
+ }),
22319
+ object({
22320
+ kind: literal("latest-recognition"),
22321
+ recognition: _enum(["person", "plate"])
22136
22322
  })
22137
22323
  ]);
22138
22324
  var OsdSlotBindingSchema = object({
@@ -22238,6 +22424,15 @@ method(object({ deviceId: number().int() }), object({
22238
22424
  }), object({ success: literal(true) }), {
22239
22425
  kind: "mutation",
22240
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"
22241
22436
  }), method(object({
22242
22437
  deviceId: number().int(),
22243
22438
  slotId: string().min(1),
@@ -23165,13 +23360,19 @@ method(object({
23165
23360
  }), {
23166
23361
  kind: "mutation",
23167
23362
  auth: "admin"
23168
- }), method(RelocateFootageInputSchema, object({ jobId: string() }), {
23363
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
23169
23364
  kind: "mutation",
23170
23365
  auth: "admin"
23171
- }), method(object({}), array(RelocateJobSchema).readonly(), {
23172
- kind: "query",
23366
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
23367
+ kind: "mutation",
23173
23368
  auth: "admin"
23174
- }), 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() }), {
23175
23376
  kind: "mutation",
23176
23377
  auth: "admin"
23177
23378
  });
@@ -27702,6 +27903,12 @@ Object.freeze({
27702
27903
  addonId: null,
27703
27904
  access: "delete"
27704
27905
  },
27906
+ "osdManager.copyDeviceConfiguration": {
27907
+ capName: "osd-manager",
27908
+ capScope: "system",
27909
+ addonId: null,
27910
+ access: "create"
27911
+ },
27705
27912
  "osdManager.getConditionSupport": {
27706
27913
  capName: "osd-manager",
27707
27914
  capScope: "system",
@@ -27798,7 +28005,7 @@ Object.freeze({
27798
28005
  addonId: null,
27799
28006
  access: "create"
27800
28007
  },
27801
- "pipelineAnalytics.cancelMediaRelocate": {
28008
+ "pipelineAnalytics.cancelStorageMigrationMove": {
27802
28009
  capName: "pipeline-analytics",
27803
28010
  capScope: "device",
27804
28011
  addonId: null,
@@ -27870,12 +28077,6 @@ Object.freeze({
27870
28077
  addonId: null,
27871
28078
  access: "view"
27872
28079
  },
27873
- "pipelineAnalytics.getMediaRelocateStatus": {
27874
- capName: "pipeline-analytics",
27875
- capScope: "device",
27876
- addonId: null,
27877
- access: "view"
27878
- },
27879
28080
  "pipelineAnalytics.getMotionEvents": {
27880
28081
  capName: "pipeline-analytics",
27881
28082
  capScope: "device",
@@ -27912,6 +28113,12 @@ Object.freeze({
27912
28113
  addonId: null,
27913
28114
  access: "view"
27914
28115
  },
28116
+ "pipelineAnalytics.getStorageMigrationMoveStatus": {
28117
+ capName: "pipeline-analytics",
28118
+ capScope: "device",
28119
+ addonId: null,
28120
+ access: "view"
28121
+ },
27915
28122
  "pipelineAnalytics.getTrack": {
27916
28123
  capName: "pipeline-analytics",
27917
28124
  capScope: "device",
@@ -27990,6 +28197,12 @@ Object.freeze({
27990
28197
  addonId: null,
27991
28198
  access: "view"
27992
28199
  },
28200
+ "pipelineAnalytics.pauseForStorageMigration": {
28201
+ capName: "pipeline-analytics",
28202
+ capScope: "device",
28203
+ addonId: null,
28204
+ access: "create"
28205
+ },
27993
28206
  "pipelineAnalytics.proposeRetrainAnnotations": {
27994
28207
  capName: "pipeline-analytics",
27995
28208
  capScope: "device",
@@ -28020,7 +28233,7 @@ Object.freeze({
28020
28233
  addonId: null,
28021
28234
  access: "create"
28022
28235
  },
28023
- "pipelineAnalytics.relocateMedia": {
28236
+ "pipelineAnalytics.refreshStorageLocationsForMigration": {
28024
28237
  capName: "pipeline-analytics",
28025
28238
  capScope: "device",
28026
28239
  addonId: null,
@@ -28032,6 +28245,12 @@ Object.freeze({
28032
28245
  addonId: null,
28033
28246
  access: "create"
28034
28247
  },
28248
+ "pipelineAnalytics.resumeForStorageMigration": {
28249
+ capName: "pipeline-analytics",
28250
+ capScope: "device",
28251
+ addonId: null,
28252
+ access: "create"
28253
+ },
28035
28254
  "pipelineAnalytics.saveRetrainAnnotations": {
28036
28255
  capName: "pipeline-analytics",
28037
28256
  capScope: "device",
@@ -28056,6 +28275,12 @@ Object.freeze({
28056
28275
  addonId: null,
28057
28276
  access: "create"
28058
28277
  },
28278
+ "pipelineAnalytics.startStorageMigrationMove": {
28279
+ capName: "pipeline-analytics",
28280
+ capScope: "device",
28281
+ addonId: null,
28282
+ access: "create"
28283
+ },
28059
28284
  "pipelineAnalytics.wipeAllAnalytics": {
28060
28285
  capName: "pipeline-analytics",
28061
28286
  capScope: "device",
@@ -28422,6 +28647,12 @@ Object.freeze({
28422
28647
  addonId: null,
28423
28648
  access: "view"
28424
28649
  },
28650
+ "pipelineOrchestrator.pauseForStorageMigration": {
28651
+ capName: "pipeline-orchestrator",
28652
+ capScope: "system",
28653
+ addonId: null,
28654
+ access: "create"
28655
+ },
28425
28656
  "pipelineOrchestrator.rebalance": {
28426
28657
  capName: "pipeline-orchestrator",
28427
28658
  capScope: "system",
@@ -28446,6 +28677,12 @@ Object.freeze({
28446
28677
  addonId: null,
28447
28678
  access: "view"
28448
28679
  },
28680
+ "pipelineOrchestrator.resumeForStorageMigration": {
28681
+ capName: "pipeline-orchestrator",
28682
+ capScope: "system",
28683
+ addonId: null,
28684
+ access: "create"
28685
+ },
28449
28686
  "pipelineOrchestrator.saveTemplate": {
28450
28687
  capName: "pipeline-orchestrator",
28451
28688
  capScope: "system",
@@ -28842,7 +29079,7 @@ Object.freeze({
28842
29079
  addonId: null,
28843
29080
  access: "create"
28844
29081
  },
28845
- "recording.cancelRelocate": {
29082
+ "recording.cancelStorageMigrationMove": {
28846
29083
  capName: "recording",
28847
29084
  capScope: "system",
28848
29085
  addonId: null,
@@ -28878,7 +29115,7 @@ Object.freeze({
28878
29115
  addonId: null,
28879
29116
  access: "view"
28880
29117
  },
28881
- "recording.getRelocateStatus": {
29118
+ "recording.getStorageMigrationMoveStatus": {
28882
29119
  capName: "recording",
28883
29120
  capScope: "system",
28884
29121
  addonId: null,
@@ -28902,6 +29139,12 @@ Object.freeze({
28902
29139
  addonId: null,
28903
29140
  access: "view"
28904
29141
  },
29142
+ "recording.pauseForStorageMigration": {
29143
+ capName: "recording",
29144
+ capScope: "system",
29145
+ addonId: null,
29146
+ access: "create"
29147
+ },
28905
29148
  "recording.pruneFootage": {
28906
29149
  capName: "recording",
28907
29150
  capScope: "system",
@@ -28920,7 +29163,7 @@ Object.freeze({
28920
29163
  addonId: null,
28921
29164
  access: "view"
28922
29165
  },
28923
- "recording.relocateFootage": {
29166
+ "recording.refreshStorageLocationsForMigration": {
28924
29167
  capName: "recording",
28925
29168
  capScope: "system",
28926
29169
  addonId: null,
@@ -28944,12 +29187,24 @@ Object.freeze({
28944
29187
  addonId: null,
28945
29188
  access: "create"
28946
29189
  },
29190
+ "recording.resumeForStorageMigration": {
29191
+ capName: "recording",
29192
+ capScope: "system",
29193
+ addonId: null,
29194
+ access: "create"
29195
+ },
28947
29196
  "recording.setDeviceConfig": {
28948
29197
  capName: "recording",
28949
29198
  capScope: "system",
28950
29199
  addonId: null,
28951
29200
  access: "create"
28952
29201
  },
29202
+ "recording.startStorageMigrationMove": {
29203
+ capName: "recording",
29204
+ capScope: "system",
29205
+ addonId: null,
29206
+ access: "create"
29207
+ },
28953
29208
  "recordingExport.cancelExport": {
28954
29209
  capName: "recordingExport",
28955
29210
  capScope: "system",
@@ -29340,6 +29595,30 @@ Object.freeze({
29340
29595
  addonId: null,
29341
29596
  access: "view"
29342
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
+ },
29343
29622
  "storageProvider.abortUpload": {
29344
29623
  capName: "storage-provider",
29345
29624
  capScope: "system",
@@ -29718,12 +29997,42 @@ Object.freeze({
29718
29997
  addonId: null,
29719
29998
  access: "create"
29720
29999
  },
30000
+ "terminalSession.adoptLegacyMonitor": {
30001
+ capName: "terminal-session",
30002
+ capScope: "system",
30003
+ addonId: null,
30004
+ access: "create"
30005
+ },
29721
30006
  "terminalSession.close": {
29722
30007
  capName: "terminal-session",
29723
30008
  capScope: "system",
29724
30009
  addonId: null,
29725
30010
  access: "create"
29726
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
+ },
29727
30036
  "terminalSession.listProfiles": {
29728
30037
  capName: "terminal-session",
29729
30038
  capScope: "system",
@@ -29742,12 +30051,30 @@ Object.freeze({
29742
30051
  addonId: null,
29743
30052
  access: "create"
29744
30053
  },
30054
+ "terminalSession.pullOutput": {
30055
+ capName: "terminal-session",
30056
+ capScope: "system",
30057
+ addonId: null,
30058
+ access: "create"
30059
+ },
29745
30060
  "terminalSession.resize": {
29746
30061
  capName: "terminal-session",
29747
30062
  capScope: "system",
29748
30063
  addonId: null,
29749
30064
  access: "create"
29750
30065
  },
30066
+ "terminalSession.setInstanceEnabled": {
30067
+ capName: "terminal-session",
30068
+ capScope: "system",
30069
+ addonId: null,
30070
+ access: "create"
30071
+ },
30072
+ "terminalSession.writeInput": {
30073
+ capName: "terminal-session",
30074
+ capScope: "system",
30075
+ addonId: null,
30076
+ access: "create"
30077
+ },
29751
30078
  "toast.onToast": {
29752
30079
  capName: "toast",
29753
30080
  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",
16034
16114
  auth: "admin"
16035
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
16115
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
16116
+ kind: "mutation",
16117
+ auth: "admin"
16118
+ }), method(StorageMigrationMediaMoveInputSchema, object({ jobId: string() }), {
16119
+ kind: "mutation",
16120
+ auth: "admin"
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,7 +18496,67 @@ var TerminalProfileInfoSchema = object({
18397
18496
  label: string(),
18398
18497
  description: string().optional()
18399
18498
  });
18400
- method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
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
+ });
18521
+ var TerminalOutputEventSchema = discriminatedUnion("kind", [object({
18522
+ seq: number().int().positive(),
18523
+ kind: literal("data"),
18524
+ data: string()
18525
+ }), object({
18526
+ seq: number().int().positive(),
18527
+ kind: literal("exit"),
18528
+ exitCode: number().int(),
18529
+ signal: number().int().optional()
18530
+ })]);
18531
+ var TerminalOutputBatchSchema = object({
18532
+ cursor: number().int().nonnegative(),
18533
+ reset: boolean(),
18534
+ snapshot: string().optional(),
18535
+ events: array(TerminalOutputEventSchema).readonly()
18536
+ });
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({
18401
18560
  profileId: string(),
18402
18561
  cols: number().int().positive(),
18403
18562
  rows: number().int().positive()
@@ -18411,6 +18570,26 @@ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }),
18411
18570
  }), _void(), {
18412
18571
  kind: "mutation",
18413
18572
  auth: "admin"
18573
+ }), method(object({
18574
+ sessionId: string(),
18575
+ afterSeq: number().int().nonnegative(),
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()
18583
+ }), TerminalOutputBatchSchema, {
18584
+ kind: "mutation",
18585
+ auth: "admin",
18586
+ timeoutMs: 15e3
18587
+ }), method(object({
18588
+ sessionId: string(),
18589
+ data: string().max(64 * 1024)
18590
+ }), _void(), {
18591
+ kind: "mutation",
18592
+ auth: "admin"
18414
18593
  }), method(object({ sessionId: string() }), _void(), {
18415
18594
  kind: "mutation",
18416
18595
  auth: "admin"
@@ -20341,6 +20520,7 @@ var FaceInfoSchema = object({
20341
20520
  var FaceFilterEnum = _enum([
20342
20521
  "unassigned",
20343
20522
  "recognized",
20523
+ "identified",
20344
20524
  "all"
20345
20525
  ]);
20346
20526
  var MediaFileLiteSchema$1 = object({
@@ -20369,6 +20549,8 @@ method(_void(), array(IdentitySchema).readonly()), method(object({ name: string(
20369
20549
  kind: "mutation",
20370
20550
  auth: "admin"
20371
20551
  }), method(object({
20552
+ /** Restrict to one camera. Absent keeps the cluster-wide gallery view. */
20553
+ deviceId: number().int().optional(),
20372
20554
  limit: number().int().positive().optional(),
20373
20555
  filter: FaceFilterEnum.optional(),
20374
20556
  /**
@@ -22134,6 +22316,10 @@ var OsdSourceSchema = discriminatedUnion("kind", [
22134
22316
  capName: string().min(1).max(64),
22135
22317
  /** Dot path inside the slice, e.g. `detected`, `value`, `mode`. */
22136
22318
  valuePath: string().min(1).max(64)
22319
+ }),
22320
+ object({
22321
+ kind: literal("latest-recognition"),
22322
+ recognition: _enum(["person", "plate"])
22137
22323
  })
22138
22324
  ]);
22139
22325
  var OsdSlotBindingSchema = object({
@@ -22239,6 +22425,15 @@ method(object({ deviceId: number().int() }), object({
22239
22425
  }), object({ success: literal(true) }), {
22240
22426
  kind: "mutation",
22241
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"
22242
22437
  }), method(object({
22243
22438
  deviceId: number().int(),
22244
22439
  slotId: string().min(1),
@@ -23166,13 +23361,19 @@ method(object({
23166
23361
  }), {
23167
23362
  kind: "mutation",
23168
23363
  auth: "admin"
23169
- }), method(RelocateFootageInputSchema, object({ jobId: string() }), {
23364
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
23170
23365
  kind: "mutation",
23171
23366
  auth: "admin"
23172
- }), method(object({}), array(RelocateJobSchema).readonly(), {
23173
- kind: "query",
23367
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
23368
+ kind: "mutation",
23174
23369
  auth: "admin"
23175
- }), 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() }), {
23176
23377
  kind: "mutation",
23177
23378
  auth: "admin"
23178
23379
  });
@@ -27703,6 +27904,12 @@ Object.freeze({
27703
27904
  addonId: null,
27704
27905
  access: "delete"
27705
27906
  },
27907
+ "osdManager.copyDeviceConfiguration": {
27908
+ capName: "osd-manager",
27909
+ capScope: "system",
27910
+ addonId: null,
27911
+ access: "create"
27912
+ },
27706
27913
  "osdManager.getConditionSupport": {
27707
27914
  capName: "osd-manager",
27708
27915
  capScope: "system",
@@ -27799,7 +28006,7 @@ Object.freeze({
27799
28006
  addonId: null,
27800
28007
  access: "create"
27801
28008
  },
27802
- "pipelineAnalytics.cancelMediaRelocate": {
28009
+ "pipelineAnalytics.cancelStorageMigrationMove": {
27803
28010
  capName: "pipeline-analytics",
27804
28011
  capScope: "device",
27805
28012
  addonId: null,
@@ -27871,12 +28078,6 @@ Object.freeze({
27871
28078
  addonId: null,
27872
28079
  access: "view"
27873
28080
  },
27874
- "pipelineAnalytics.getMediaRelocateStatus": {
27875
- capName: "pipeline-analytics",
27876
- capScope: "device",
27877
- addonId: null,
27878
- access: "view"
27879
- },
27880
28081
  "pipelineAnalytics.getMotionEvents": {
27881
28082
  capName: "pipeline-analytics",
27882
28083
  capScope: "device",
@@ -27913,6 +28114,12 @@ Object.freeze({
27913
28114
  addonId: null,
27914
28115
  access: "view"
27915
28116
  },
28117
+ "pipelineAnalytics.getStorageMigrationMoveStatus": {
28118
+ capName: "pipeline-analytics",
28119
+ capScope: "device",
28120
+ addonId: null,
28121
+ access: "view"
28122
+ },
27916
28123
  "pipelineAnalytics.getTrack": {
27917
28124
  capName: "pipeline-analytics",
27918
28125
  capScope: "device",
@@ -27991,6 +28198,12 @@ Object.freeze({
27991
28198
  addonId: null,
27992
28199
  access: "view"
27993
28200
  },
28201
+ "pipelineAnalytics.pauseForStorageMigration": {
28202
+ capName: "pipeline-analytics",
28203
+ capScope: "device",
28204
+ addonId: null,
28205
+ access: "create"
28206
+ },
27994
28207
  "pipelineAnalytics.proposeRetrainAnnotations": {
27995
28208
  capName: "pipeline-analytics",
27996
28209
  capScope: "device",
@@ -28021,7 +28234,7 @@ Object.freeze({
28021
28234
  addonId: null,
28022
28235
  access: "create"
28023
28236
  },
28024
- "pipelineAnalytics.relocateMedia": {
28237
+ "pipelineAnalytics.refreshStorageLocationsForMigration": {
28025
28238
  capName: "pipeline-analytics",
28026
28239
  capScope: "device",
28027
28240
  addonId: null,
@@ -28033,6 +28246,12 @@ Object.freeze({
28033
28246
  addonId: null,
28034
28247
  access: "create"
28035
28248
  },
28249
+ "pipelineAnalytics.resumeForStorageMigration": {
28250
+ capName: "pipeline-analytics",
28251
+ capScope: "device",
28252
+ addonId: null,
28253
+ access: "create"
28254
+ },
28036
28255
  "pipelineAnalytics.saveRetrainAnnotations": {
28037
28256
  capName: "pipeline-analytics",
28038
28257
  capScope: "device",
@@ -28057,6 +28276,12 @@ Object.freeze({
28057
28276
  addonId: null,
28058
28277
  access: "create"
28059
28278
  },
28279
+ "pipelineAnalytics.startStorageMigrationMove": {
28280
+ capName: "pipeline-analytics",
28281
+ capScope: "device",
28282
+ addonId: null,
28283
+ access: "create"
28284
+ },
28060
28285
  "pipelineAnalytics.wipeAllAnalytics": {
28061
28286
  capName: "pipeline-analytics",
28062
28287
  capScope: "device",
@@ -28423,6 +28648,12 @@ Object.freeze({
28423
28648
  addonId: null,
28424
28649
  access: "view"
28425
28650
  },
28651
+ "pipelineOrchestrator.pauseForStorageMigration": {
28652
+ capName: "pipeline-orchestrator",
28653
+ capScope: "system",
28654
+ addonId: null,
28655
+ access: "create"
28656
+ },
28426
28657
  "pipelineOrchestrator.rebalance": {
28427
28658
  capName: "pipeline-orchestrator",
28428
28659
  capScope: "system",
@@ -28447,6 +28678,12 @@ Object.freeze({
28447
28678
  addonId: null,
28448
28679
  access: "view"
28449
28680
  },
28681
+ "pipelineOrchestrator.resumeForStorageMigration": {
28682
+ capName: "pipeline-orchestrator",
28683
+ capScope: "system",
28684
+ addonId: null,
28685
+ access: "create"
28686
+ },
28450
28687
  "pipelineOrchestrator.saveTemplate": {
28451
28688
  capName: "pipeline-orchestrator",
28452
28689
  capScope: "system",
@@ -28843,7 +29080,7 @@ Object.freeze({
28843
29080
  addonId: null,
28844
29081
  access: "create"
28845
29082
  },
28846
- "recording.cancelRelocate": {
29083
+ "recording.cancelStorageMigrationMove": {
28847
29084
  capName: "recording",
28848
29085
  capScope: "system",
28849
29086
  addonId: null,
@@ -28879,7 +29116,7 @@ Object.freeze({
28879
29116
  addonId: null,
28880
29117
  access: "view"
28881
29118
  },
28882
- "recording.getRelocateStatus": {
29119
+ "recording.getStorageMigrationMoveStatus": {
28883
29120
  capName: "recording",
28884
29121
  capScope: "system",
28885
29122
  addonId: null,
@@ -28903,6 +29140,12 @@ Object.freeze({
28903
29140
  addonId: null,
28904
29141
  access: "view"
28905
29142
  },
29143
+ "recording.pauseForStorageMigration": {
29144
+ capName: "recording",
29145
+ capScope: "system",
29146
+ addonId: null,
29147
+ access: "create"
29148
+ },
28906
29149
  "recording.pruneFootage": {
28907
29150
  capName: "recording",
28908
29151
  capScope: "system",
@@ -28921,7 +29164,7 @@ Object.freeze({
28921
29164
  addonId: null,
28922
29165
  access: "view"
28923
29166
  },
28924
- "recording.relocateFootage": {
29167
+ "recording.refreshStorageLocationsForMigration": {
28925
29168
  capName: "recording",
28926
29169
  capScope: "system",
28927
29170
  addonId: null,
@@ -28945,12 +29188,24 @@ Object.freeze({
28945
29188
  addonId: null,
28946
29189
  access: "create"
28947
29190
  },
29191
+ "recording.resumeForStorageMigration": {
29192
+ capName: "recording",
29193
+ capScope: "system",
29194
+ addonId: null,
29195
+ access: "create"
29196
+ },
28948
29197
  "recording.setDeviceConfig": {
28949
29198
  capName: "recording",
28950
29199
  capScope: "system",
28951
29200
  addonId: null,
28952
29201
  access: "create"
28953
29202
  },
29203
+ "recording.startStorageMigrationMove": {
29204
+ capName: "recording",
29205
+ capScope: "system",
29206
+ addonId: null,
29207
+ access: "create"
29208
+ },
28954
29209
  "recordingExport.cancelExport": {
28955
29210
  capName: "recordingExport",
28956
29211
  capScope: "system",
@@ -29341,6 +29596,30 @@ Object.freeze({
29341
29596
  addonId: null,
29342
29597
  access: "view"
29343
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
+ },
29344
29623
  "storageProvider.abortUpload": {
29345
29624
  capName: "storage-provider",
29346
29625
  capScope: "system",
@@ -29719,12 +29998,42 @@ Object.freeze({
29719
29998
  addonId: null,
29720
29999
  access: "create"
29721
30000
  },
30001
+ "terminalSession.adoptLegacyMonitor": {
30002
+ capName: "terminal-session",
30003
+ capScope: "system",
30004
+ addonId: null,
30005
+ access: "create"
30006
+ },
29722
30007
  "terminalSession.close": {
29723
30008
  capName: "terminal-session",
29724
30009
  capScope: "system",
29725
30010
  addonId: null,
29726
30011
  access: "create"
29727
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
+ },
29728
30037
  "terminalSession.listProfiles": {
29729
30038
  capName: "terminal-session",
29730
30039
  capScope: "system",
@@ -29743,12 +30052,30 @@ Object.freeze({
29743
30052
  addonId: null,
29744
30053
  access: "create"
29745
30054
  },
30055
+ "terminalSession.pullOutput": {
30056
+ capName: "terminal-session",
30057
+ capScope: "system",
30058
+ addonId: null,
30059
+ access: "create"
30060
+ },
29746
30061
  "terminalSession.resize": {
29747
30062
  capName: "terminal-session",
29748
30063
  capScope: "system",
29749
30064
  addonId: null,
29750
30065
  access: "create"
29751
30066
  },
30067
+ "terminalSession.setInstanceEnabled": {
30068
+ capName: "terminal-session",
30069
+ capScope: "system",
30070
+ addonId: null,
30071
+ access: "create"
30072
+ },
30073
+ "terminalSession.writeInput": {
30074
+ capName: "terminal-session",
30075
+ capScope: "system",
30076
+ addonId: null,
30077
+ access: "create"
30078
+ },
29752
30079
  "toast.onToast": {
29753
30080
  capName: "toast",
29754
30081
  capScope: "system",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-provider-onvif",
3
- "version": "1.2.10",
3
+ "version": "1.2.12",
4
4
  "description": "ONVIF camera device provider addon for CamStack",
5
5
  "keywords": [
6
6
  "camstack",