@camstack/addon-provider-amcrest 0.2.13 → 0.2.14

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
@@ -7544,12 +7544,11 @@ var RecordingConfigSchema = object({
7544
7544
  /**
7545
7545
  * Entity-relocation job state (storage entity-routing spec, Phase 4).
7546
7546
  *
7547
- * One shape shared by the recorder's `relocateFootage` (segments) and
7548
- * pipeline-analytics' `relocateMedia` (event media blobs) so the admin Data
7549
- * page renders both movers with one component. Jobs are in-RAM (a restart
7550
- * forgets them re-running is safe by construction: copy-if-absent, delete
7551
- * after verify) and each completed/failed run also lands one durable ops-log
7552
- * row on the owning addon's surface.
7547
+ * One shape shared by the recorder and pipeline-analytics internal movers.
7548
+ * The public admin surface is `storage-migration`; child jobs remain in RAM
7549
+ * because copy-if-absent, verify, delete and index/row repoint are resumable.
7550
+ * Each completed/failed run also lands one durable ops-log row on its owning
7551
+ * addon surface.
7553
7552
  */
7554
7553
  var RelocateJobStateSchema = _enum([
7555
7554
  "running",
@@ -7576,19 +7575,100 @@ var RelocateJobSchema = object({
7576
7575
  finishedAt: number().nullable(),
7577
7576
  error: string().nullable()
7578
7577
  });
7578
+ /** Profile-derived footage selection used only by the migration coordinator:
7579
+ * `recordings` owns high+mid; `recordingsLow` owns low. */
7580
+ var RelocateFootageClassSchema = _enum(["recordings", "recordingsLow"]);
7579
7581
  var RelocateFootageInputSchema = object({
7580
- deviceId: number().optional(),
7581
7582
  fromLocationId: string(),
7582
7583
  toLocationId: string(),
7583
7584
  entities: array(_enum(["segments"])).optional(),
7585
+ /** Limits relocation to the logical profile class. Omit only for the
7586
+ * pre-orchestration compatibility path. */
7587
+ footageClass: RelocateFootageClassSchema.optional(),
7584
7588
  /** Copy throttle in MB/s (default 40) — the drain is a background chore,
7585
7589
  * never allowed to starve live writers. */
7586
7590
  throttleMbps: number().min(1).max(1e3).optional()
7587
7591
  });
7588
- var RelocateMediaInputSchema = object({
7589
- deviceId: number().optional(),
7592
+ /** Internal, lease-scoped participant operation. It is intentionally separate
7593
+ * from persistent recording settings: a migration never changes
7594
+ * `RecordingConfig.enabled` or camera wrapper bindings. */
7595
+ var StorageMigrationLeaseInputSchema = object({ leaseId: string().min(1) });
7596
+ var StorageMigrationFootageMoveInputSchema = RelocateFootageInputSchema.extend({ leaseId: string().min(1) });
7597
+ var StorageMigrationMediaMoveInputSchema = object({
7590
7598
  toLocationId: string(),
7591
7599
  throttleMbps: number().min(1).max(1e3).optional()
7600
+ }).extend({ leaseId: string().min(1) });
7601
+ /** The independently selectable logical storage classes. `recordings`
7602
+ * encompasses the high and mid segment profiles; `recordingsLow` is low
7603
+ * segments; `eventMedia` is post-analysis blobs. */
7604
+ var StorageMigrationClassSchema = _enum([
7605
+ "recordings",
7606
+ "recordingsLow",
7607
+ "eventMedia"
7608
+ ]);
7609
+ /** A destination is always an existing, fully-qualified location id. The
7610
+ * migration API intentionally never changes a source location's `basePath`:
7611
+ * callers create a new `<type>:<slug>` location, then select it here. */
7612
+ var StorageMigrationDestinationsSchema = object({
7613
+ recordings: string().min(1).optional(),
7614
+ recordingsLow: string().min(1).optional(),
7615
+ eventMedia: string().min(1).optional()
7616
+ }).refine((value) => Object.keys(value).length > 0, { message: "select at least one storage class" });
7617
+ /** Shared input for planning and starting an orchestrated storage migration. */
7618
+ var StorageMigrationInputSchema = object({
7619
+ destinations: StorageMigrationDestinationsSchema,
7620
+ throttleMbps: number().min(1).max(1e3).optional()
7621
+ });
7622
+ /** The durable coordinator state machine. The only phase that changes default
7623
+ * locations is `repointing`, after every selected mover has completed and been
7624
+ * verified. */
7625
+ var StorageMigrationPhaseSchema = _enum([
7626
+ "planning",
7627
+ "pausing",
7628
+ "moving",
7629
+ "verifying",
7630
+ "repointing",
7631
+ "refreshing",
7632
+ "resuming",
7633
+ "done",
7634
+ "failed",
7635
+ "cancelled"
7636
+ ]);
7637
+ var StorageMigrationParticipantSchema = _enum([
7638
+ "pipeline",
7639
+ "recorder",
7640
+ "analytics"
7641
+ ]);
7642
+ var StorageMigrationMoveSchema = object({
7643
+ storageClass: StorageMigrationClassSchema,
7644
+ fromLocationId: string(),
7645
+ toLocationId: string(),
7646
+ moverJobId: string().nullable(),
7647
+ state: RelocateJobStateSchema.nullable(),
7648
+ error: string().nullable()
7649
+ });
7650
+ var StorageMigrationJobSchema = object({
7651
+ jobId: string(),
7652
+ phase: StorageMigrationPhaseSchema,
7653
+ destinations: StorageMigrationDestinationsSchema,
7654
+ throttleMbps: number(),
7655
+ moves: array(StorageMigrationMoveSchema),
7656
+ pauseLeaseId: string().nullable(),
7657
+ pausedParticipants: array(StorageMigrationParticipantSchema),
7658
+ repointed: boolean(),
7659
+ cancelRequested: boolean(),
7660
+ startedAt: number(),
7661
+ updatedAt: number(),
7662
+ finishedAt: number().nullable(),
7663
+ error: string().nullable()
7664
+ });
7665
+ var StorageMigrationPlanSchema = object({
7666
+ destinations: StorageMigrationDestinationsSchema,
7667
+ moves: array(object({
7668
+ storageClass: StorageMigrationClassSchema,
7669
+ fromLocationId: string(),
7670
+ toLocationId: string()
7671
+ }))
7592
7672
  });
7593
7673
  /**
7594
7674
  * `StorageLocationType` — an addon-declared id that identifies the *kind* of
@@ -16242,13 +16322,19 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
16242
16322
  }), method(object({ deviceId: number() }), EventPruneCountsSchema, {
16243
16323
  kind: "mutation",
16244
16324
  auth: "admin"
16245
- }), method(RelocateMediaInputSchema, object({ jobId: string() }), {
16325
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
16246
16326
  kind: "mutation",
16247
16327
  auth: "admin"
16248
- }), method(object({}), array(RelocateJobSchema).readonly(), {
16249
- kind: "query",
16328
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
16329
+ kind: "mutation",
16330
+ auth: "admin"
16331
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
16332
+ kind: "mutation",
16333
+ auth: "admin"
16334
+ }), method(StorageMigrationMediaMoveInputSchema, object({ jobId: string() }), {
16335
+ kind: "mutation",
16250
16336
  auth: "admin"
16251
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
16337
+ }), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
16252
16338
  kind: "mutation",
16253
16339
  auth: "admin"
16254
16340
  }), method(OpsLogQueryInputSchema, array(OpsLogEntrySchema).readonly(), {
@@ -17778,7 +17864,13 @@ var NodeInferenceDevicesSchema = object({
17778
17864
  reachable: boolean(),
17779
17865
  devices: array(NodeInferenceDeviceSchema).readonly()
17780
17866
  });
17781
- method(object({
17867
+ method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
17868
+ kind: "mutation",
17869
+ auth: "admin"
17870
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
17871
+ kind: "mutation",
17872
+ auth: "admin"
17873
+ }), method(object({
17782
17874
  deviceId: number(),
17783
17875
  agentNodeId: string()
17784
17876
  }), object({ success: literal(true) }), {
@@ -18543,6 +18635,13 @@ method(object({ locationId: string() }), EvictableUsageSchema), method(object({
18543
18635
  locationId: string(),
18544
18636
  targetBytes: number().int().positive()
18545
18637
  }), EvictResultSchema, { kind: "mutation" });
18638
+ method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin" }), method(StorageMigrationInputSchema, object({ jobId: string() }), {
18639
+ kind: "mutation",
18640
+ auth: "admin"
18641
+ }), method(object({ jobId: string().optional() }), StorageMigrationJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
18642
+ kind: "mutation",
18643
+ auth: "admin"
18644
+ });
18546
18645
  var ProviderInfoSchema = discriminatedUnion("shouldSaveDiskSpace", [object({
18547
18646
  providerId: string().min(1),
18548
18647
  displayName: string().min(1),
@@ -18646,6 +18745,28 @@ var TerminalProfileInfoSchema = object({
18646
18745
  label: string(),
18647
18746
  description: string().optional()
18648
18747
  });
18748
+ /**
18749
+ * A durable operator-created Terminal instance. Profiles are templates; only
18750
+ * an instance declares a camera.
18751
+ */
18752
+ var TerminalInstanceInfoSchema = object({
18753
+ instanceId: string(),
18754
+ cameraStableId: string(),
18755
+ nodeId: string(),
18756
+ profileId: string(),
18757
+ profileLabel: string(),
18758
+ name: string(),
18759
+ enabled: boolean()
18760
+ });
18761
+ var TerminalLegacyCameraSchema = object({
18762
+ stableId: string(),
18763
+ nodeId: string(),
18764
+ profileId: string(),
18765
+ profileLabel: string(),
18766
+ name: string(),
18767
+ /** Only legacy monitor cameras can retain their historic stable identity. */
18768
+ adoptable: boolean()
18769
+ });
18649
18770
  var TerminalOutputEventSchema = discriminatedUnion("kind", [object({
18650
18771
  seq: number().int().positive(),
18651
18772
  kind: literal("data"),
@@ -18662,7 +18783,29 @@ var TerminalOutputBatchSchema = object({
18662
18783
  snapshot: string().optional(),
18663
18784
  events: array(TerminalOutputEventSchema).readonly()
18664
18785
  });
18665
- method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
18786
+ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalInstanceInfoSchema).readonly(), { auth: "admin" }), method(object({
18787
+ targetNodeId: string().min(1),
18788
+ profileId: string().min(1),
18789
+ name: string().trim().min(1).max(160).optional()
18790
+ }), TerminalInstanceInfoSchema, {
18791
+ kind: "mutation",
18792
+ auth: "admin"
18793
+ }), method(object({ instanceId: string().min(1) }), _void(), {
18794
+ kind: "mutation",
18795
+ auth: "admin"
18796
+ }), method(object({
18797
+ instanceId: string().min(1),
18798
+ enabled: boolean()
18799
+ }), TerminalInstanceInfoSchema, {
18800
+ kind: "mutation",
18801
+ auth: "admin"
18802
+ }), method(_void(), array(TerminalLegacyCameraSchema).readonly(), { auth: "admin" }), method(object({
18803
+ stableId: string().min(1),
18804
+ name: string().trim().min(1).max(160).optional()
18805
+ }), TerminalInstanceInfoSchema, {
18806
+ kind: "mutation",
18807
+ auth: "admin"
18808
+ }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
18666
18809
  profileId: string(),
18667
18810
  cols: number().int().positive(),
18668
18811
  rows: number().int().positive()
@@ -18679,7 +18822,13 @@ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }),
18679
18822
  }), method(object({
18680
18823
  sessionId: string(),
18681
18824
  afterSeq: number().int().nonnegative(),
18682
- waitMs: number().int().min(0).max(2e3).default(0)
18825
+ waitMs: number().int().min(0).max(2e3).default(0),
18826
+ /**
18827
+ * Wait when a just-opened session has no output yet. Kept opt-in so a
18828
+ * browser's initial repaint remains immediate; the camera snapshot
18829
+ * relay uses it to avoid encoding a blank startup frame.
18830
+ */
18831
+ waitForOutput: boolean().optional()
18683
18832
  }), TerminalOutputBatchSchema, {
18684
18833
  kind: "mutation",
18685
18834
  auth: "admin",
@@ -21177,6 +21326,7 @@ var FaceInfoSchema = object({
21177
21326
  var FaceFilterEnum = _enum([
21178
21327
  "unassigned",
21179
21328
  "recognized",
21329
+ "identified",
21180
21330
  "all"
21181
21331
  ]);
21182
21332
  var MediaFileLiteSchema$1 = object({
@@ -21205,6 +21355,8 @@ method(_void(), array(IdentitySchema).readonly()), method(object({ name: string(
21205
21355
  kind: "mutation",
21206
21356
  auth: "admin"
21207
21357
  }), method(object({
21358
+ /** Restrict to one camera. Absent keeps the cluster-wide gallery view. */
21359
+ deviceId: number().int().optional(),
21208
21360
  limit: number().int().positive().optional(),
21209
21361
  filter: FaceFilterEnum.optional(),
21210
21362
  /**
@@ -23480,6 +23632,10 @@ var OsdSourceSchema = discriminatedUnion("kind", [
23480
23632
  capName: string().min(1).max(64),
23481
23633
  /** Dot path inside the slice, e.g. `detected`, `value`, `mode`. */
23482
23634
  valuePath: string().min(1).max(64)
23635
+ }),
23636
+ object({
23637
+ kind: literal("latest-recognition"),
23638
+ recognition: _enum(["person", "plate"])
23483
23639
  })
23484
23640
  ]);
23485
23641
  var OsdSlotBindingSchema = object({
@@ -23585,6 +23741,15 @@ method(object({ deviceId: number().int() }), object({
23585
23741
  }), object({ success: literal(true) }), {
23586
23742
  kind: "mutation",
23587
23743
  auth: "admin"
23744
+ }), method(object({
23745
+ sourceDeviceId: number().int(),
23746
+ targetDeviceId: number().int()
23747
+ }), object({
23748
+ copied: number().int().nonnegative(),
23749
+ skipped: number().int().nonnegative()
23750
+ }), {
23751
+ kind: "mutation",
23752
+ auth: "admin"
23588
23753
  }), method(object({
23589
23754
  deviceId: number().int(),
23590
23755
  slotId: string().min(1),
@@ -24724,13 +24889,19 @@ method(object({
24724
24889
  }), {
24725
24890
  kind: "mutation",
24726
24891
  auth: "admin"
24727
- }), method(RelocateFootageInputSchema, object({ jobId: string() }), {
24892
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
24728
24893
  kind: "mutation",
24729
24894
  auth: "admin"
24730
- }), method(object({}), array(RelocateJobSchema).readonly(), {
24731
- kind: "query",
24895
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
24896
+ kind: "mutation",
24732
24897
  auth: "admin"
24733
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
24898
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
24899
+ kind: "mutation",
24900
+ auth: "admin"
24901
+ }), method(StorageMigrationFootageMoveInputSchema, object({ jobId: string() }), {
24902
+ kind: "mutation",
24903
+ auth: "admin"
24904
+ }), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
24734
24905
  kind: "mutation",
24735
24906
  auth: "admin"
24736
24907
  });
@@ -30678,6 +30849,12 @@ Object.freeze({
30678
30849
  addonId: null,
30679
30850
  access: "delete"
30680
30851
  },
30852
+ "osdManager.copyDeviceConfiguration": {
30853
+ capName: "osd-manager",
30854
+ capScope: "system",
30855
+ addonId: null,
30856
+ access: "create"
30857
+ },
30681
30858
  "osdManager.getConditionSupport": {
30682
30859
  capName: "osd-manager",
30683
30860
  capScope: "system",
@@ -30774,7 +30951,7 @@ Object.freeze({
30774
30951
  addonId: null,
30775
30952
  access: "create"
30776
30953
  },
30777
- "pipelineAnalytics.cancelMediaRelocate": {
30954
+ "pipelineAnalytics.cancelStorageMigrationMove": {
30778
30955
  capName: "pipeline-analytics",
30779
30956
  capScope: "device",
30780
30957
  addonId: null,
@@ -30846,12 +31023,6 @@ Object.freeze({
30846
31023
  addonId: null,
30847
31024
  access: "view"
30848
31025
  },
30849
- "pipelineAnalytics.getMediaRelocateStatus": {
30850
- capName: "pipeline-analytics",
30851
- capScope: "device",
30852
- addonId: null,
30853
- access: "view"
30854
- },
30855
31026
  "pipelineAnalytics.getMotionEvents": {
30856
31027
  capName: "pipeline-analytics",
30857
31028
  capScope: "device",
@@ -30888,6 +31059,12 @@ Object.freeze({
30888
31059
  addonId: null,
30889
31060
  access: "view"
30890
31061
  },
31062
+ "pipelineAnalytics.getStorageMigrationMoveStatus": {
31063
+ capName: "pipeline-analytics",
31064
+ capScope: "device",
31065
+ addonId: null,
31066
+ access: "view"
31067
+ },
30891
31068
  "pipelineAnalytics.getTrack": {
30892
31069
  capName: "pipeline-analytics",
30893
31070
  capScope: "device",
@@ -30966,6 +31143,12 @@ Object.freeze({
30966
31143
  addonId: null,
30967
31144
  access: "view"
30968
31145
  },
31146
+ "pipelineAnalytics.pauseForStorageMigration": {
31147
+ capName: "pipeline-analytics",
31148
+ capScope: "device",
31149
+ addonId: null,
31150
+ access: "create"
31151
+ },
30969
31152
  "pipelineAnalytics.proposeRetrainAnnotations": {
30970
31153
  capName: "pipeline-analytics",
30971
31154
  capScope: "device",
@@ -30996,7 +31179,7 @@ Object.freeze({
30996
31179
  addonId: null,
30997
31180
  access: "create"
30998
31181
  },
30999
- "pipelineAnalytics.relocateMedia": {
31182
+ "pipelineAnalytics.refreshStorageLocationsForMigration": {
31000
31183
  capName: "pipeline-analytics",
31001
31184
  capScope: "device",
31002
31185
  addonId: null,
@@ -31008,6 +31191,12 @@ Object.freeze({
31008
31191
  addonId: null,
31009
31192
  access: "create"
31010
31193
  },
31194
+ "pipelineAnalytics.resumeForStorageMigration": {
31195
+ capName: "pipeline-analytics",
31196
+ capScope: "device",
31197
+ addonId: null,
31198
+ access: "create"
31199
+ },
31011
31200
  "pipelineAnalytics.saveRetrainAnnotations": {
31012
31201
  capName: "pipeline-analytics",
31013
31202
  capScope: "device",
@@ -31032,6 +31221,12 @@ Object.freeze({
31032
31221
  addonId: null,
31033
31222
  access: "create"
31034
31223
  },
31224
+ "pipelineAnalytics.startStorageMigrationMove": {
31225
+ capName: "pipeline-analytics",
31226
+ capScope: "device",
31227
+ addonId: null,
31228
+ access: "create"
31229
+ },
31035
31230
  "pipelineAnalytics.wipeAllAnalytics": {
31036
31231
  capName: "pipeline-analytics",
31037
31232
  capScope: "device",
@@ -31398,6 +31593,12 @@ Object.freeze({
31398
31593
  addonId: null,
31399
31594
  access: "view"
31400
31595
  },
31596
+ "pipelineOrchestrator.pauseForStorageMigration": {
31597
+ capName: "pipeline-orchestrator",
31598
+ capScope: "system",
31599
+ addonId: null,
31600
+ access: "create"
31601
+ },
31401
31602
  "pipelineOrchestrator.rebalance": {
31402
31603
  capName: "pipeline-orchestrator",
31403
31604
  capScope: "system",
@@ -31422,6 +31623,12 @@ Object.freeze({
31422
31623
  addonId: null,
31423
31624
  access: "view"
31424
31625
  },
31626
+ "pipelineOrchestrator.resumeForStorageMigration": {
31627
+ capName: "pipeline-orchestrator",
31628
+ capScope: "system",
31629
+ addonId: null,
31630
+ access: "create"
31631
+ },
31425
31632
  "pipelineOrchestrator.saveTemplate": {
31426
31633
  capName: "pipeline-orchestrator",
31427
31634
  capScope: "system",
@@ -31818,7 +32025,7 @@ Object.freeze({
31818
32025
  addonId: null,
31819
32026
  access: "create"
31820
32027
  },
31821
- "recording.cancelRelocate": {
32028
+ "recording.cancelStorageMigrationMove": {
31822
32029
  capName: "recording",
31823
32030
  capScope: "system",
31824
32031
  addonId: null,
@@ -31854,7 +32061,7 @@ Object.freeze({
31854
32061
  addonId: null,
31855
32062
  access: "view"
31856
32063
  },
31857
- "recording.getRelocateStatus": {
32064
+ "recording.getStorageMigrationMoveStatus": {
31858
32065
  capName: "recording",
31859
32066
  capScope: "system",
31860
32067
  addonId: null,
@@ -31878,6 +32085,12 @@ Object.freeze({
31878
32085
  addonId: null,
31879
32086
  access: "view"
31880
32087
  },
32088
+ "recording.pauseForStorageMigration": {
32089
+ capName: "recording",
32090
+ capScope: "system",
32091
+ addonId: null,
32092
+ access: "create"
32093
+ },
31881
32094
  "recording.pruneFootage": {
31882
32095
  capName: "recording",
31883
32096
  capScope: "system",
@@ -31896,7 +32109,7 @@ Object.freeze({
31896
32109
  addonId: null,
31897
32110
  access: "view"
31898
32111
  },
31899
- "recording.relocateFootage": {
32112
+ "recording.refreshStorageLocationsForMigration": {
31900
32113
  capName: "recording",
31901
32114
  capScope: "system",
31902
32115
  addonId: null,
@@ -31920,12 +32133,24 @@ Object.freeze({
31920
32133
  addonId: null,
31921
32134
  access: "create"
31922
32135
  },
32136
+ "recording.resumeForStorageMigration": {
32137
+ capName: "recording",
32138
+ capScope: "system",
32139
+ addonId: null,
32140
+ access: "create"
32141
+ },
31923
32142
  "recording.setDeviceConfig": {
31924
32143
  capName: "recording",
31925
32144
  capScope: "system",
31926
32145
  addonId: null,
31927
32146
  access: "create"
31928
32147
  },
32148
+ "recording.startStorageMigrationMove": {
32149
+ capName: "recording",
32150
+ capScope: "system",
32151
+ addonId: null,
32152
+ access: "create"
32153
+ },
31929
32154
  "recordingExport.cancelExport": {
31930
32155
  capName: "recordingExport",
31931
32156
  capScope: "system",
@@ -32316,6 +32541,30 @@ Object.freeze({
32316
32541
  addonId: null,
32317
32542
  access: "view"
32318
32543
  },
32544
+ "storageMigration.cancel": {
32545
+ capName: "storage-migration",
32546
+ capScope: "system",
32547
+ addonId: null,
32548
+ access: "create"
32549
+ },
32550
+ "storageMigration.plan": {
32551
+ capName: "storage-migration",
32552
+ capScope: "system",
32553
+ addonId: null,
32554
+ access: "view"
32555
+ },
32556
+ "storageMigration.start": {
32557
+ capName: "storage-migration",
32558
+ capScope: "system",
32559
+ addonId: null,
32560
+ access: "create"
32561
+ },
32562
+ "storageMigration.status": {
32563
+ capName: "storage-migration",
32564
+ capScope: "system",
32565
+ addonId: null,
32566
+ access: "view"
32567
+ },
32319
32568
  "storageProvider.abortUpload": {
32320
32569
  capName: "storage-provider",
32321
32570
  capScope: "system",
@@ -32694,12 +32943,42 @@ Object.freeze({
32694
32943
  addonId: null,
32695
32944
  access: "create"
32696
32945
  },
32946
+ "terminalSession.adoptLegacyMonitor": {
32947
+ capName: "terminal-session",
32948
+ capScope: "system",
32949
+ addonId: null,
32950
+ access: "create"
32951
+ },
32697
32952
  "terminalSession.close": {
32698
32953
  capName: "terminal-session",
32699
32954
  capScope: "system",
32700
32955
  addonId: null,
32701
32956
  access: "create"
32702
32957
  },
32958
+ "terminalSession.createInstance": {
32959
+ capName: "terminal-session",
32960
+ capScope: "system",
32961
+ addonId: null,
32962
+ access: "create"
32963
+ },
32964
+ "terminalSession.deleteInstance": {
32965
+ capName: "terminal-session",
32966
+ capScope: "system",
32967
+ addonId: null,
32968
+ access: "delete"
32969
+ },
32970
+ "terminalSession.listInstances": {
32971
+ capName: "terminal-session",
32972
+ capScope: "system",
32973
+ addonId: null,
32974
+ access: "view"
32975
+ },
32976
+ "terminalSession.listLegacyCameras": {
32977
+ capName: "terminal-session",
32978
+ capScope: "system",
32979
+ addonId: null,
32980
+ access: "view"
32981
+ },
32703
32982
  "terminalSession.listProfiles": {
32704
32983
  capName: "terminal-session",
32705
32984
  capScope: "system",
@@ -32730,6 +33009,12 @@ Object.freeze({
32730
33009
  addonId: null,
32731
33010
  access: "create"
32732
33011
  },
33012
+ "terminalSession.setInstanceEnabled": {
33013
+ capName: "terminal-session",
33014
+ capScope: "system",
33015
+ addonId: null,
33016
+ access: "create"
33017
+ },
32733
33018
  "terminalSession.writeInput": {
32734
33019
  capName: "terminal-session",
32735
33020
  capScope: "system",
package/dist/addon.mjs CHANGED
@@ -7545,12 +7545,11 @@ var RecordingConfigSchema = object({
7545
7545
  /**
7546
7546
  * Entity-relocation job state (storage entity-routing spec, Phase 4).
7547
7547
  *
7548
- * One shape shared by the recorder's `relocateFootage` (segments) and
7549
- * pipeline-analytics' `relocateMedia` (event media blobs) so the admin Data
7550
- * page renders both movers with one component. Jobs are in-RAM (a restart
7551
- * forgets them re-running is safe by construction: copy-if-absent, delete
7552
- * after verify) and each completed/failed run also lands one durable ops-log
7553
- * row on the owning addon's surface.
7548
+ * One shape shared by the recorder and pipeline-analytics internal movers.
7549
+ * The public admin surface is `storage-migration`; child jobs remain in RAM
7550
+ * because copy-if-absent, verify, delete and index/row repoint are resumable.
7551
+ * Each completed/failed run also lands one durable ops-log row on its owning
7552
+ * addon surface.
7554
7553
  */
7555
7554
  var RelocateJobStateSchema = _enum([
7556
7555
  "running",
@@ -7577,19 +7576,100 @@ var RelocateJobSchema = object({
7577
7576
  finishedAt: number().nullable(),
7578
7577
  error: string().nullable()
7579
7578
  });
7579
+ /** Profile-derived footage selection used only by the migration coordinator:
7580
+ * `recordings` owns high+mid; `recordingsLow` owns low. */
7581
+ var RelocateFootageClassSchema = _enum(["recordings", "recordingsLow"]);
7580
7582
  var RelocateFootageInputSchema = object({
7581
- deviceId: number().optional(),
7582
7583
  fromLocationId: string(),
7583
7584
  toLocationId: string(),
7584
7585
  entities: array(_enum(["segments"])).optional(),
7586
+ /** Limits relocation to the logical profile class. Omit only for the
7587
+ * pre-orchestration compatibility path. */
7588
+ footageClass: RelocateFootageClassSchema.optional(),
7585
7589
  /** Copy throttle in MB/s (default 40) — the drain is a background chore,
7586
7590
  * never allowed to starve live writers. */
7587
7591
  throttleMbps: number().min(1).max(1e3).optional()
7588
7592
  });
7589
- var RelocateMediaInputSchema = object({
7590
- deviceId: number().optional(),
7593
+ /** Internal, lease-scoped participant operation. It is intentionally separate
7594
+ * from persistent recording settings: a migration never changes
7595
+ * `RecordingConfig.enabled` or camera wrapper bindings. */
7596
+ var StorageMigrationLeaseInputSchema = object({ leaseId: string().min(1) });
7597
+ var StorageMigrationFootageMoveInputSchema = RelocateFootageInputSchema.extend({ leaseId: string().min(1) });
7598
+ var StorageMigrationMediaMoveInputSchema = object({
7591
7599
  toLocationId: string(),
7592
7600
  throttleMbps: number().min(1).max(1e3).optional()
7601
+ }).extend({ leaseId: string().min(1) });
7602
+ /** The independently selectable logical storage classes. `recordings`
7603
+ * encompasses the high and mid segment profiles; `recordingsLow` is low
7604
+ * segments; `eventMedia` is post-analysis blobs. */
7605
+ var StorageMigrationClassSchema = _enum([
7606
+ "recordings",
7607
+ "recordingsLow",
7608
+ "eventMedia"
7609
+ ]);
7610
+ /** A destination is always an existing, fully-qualified location id. The
7611
+ * migration API intentionally never changes a source location's `basePath`:
7612
+ * callers create a new `<type>:<slug>` location, then select it here. */
7613
+ var StorageMigrationDestinationsSchema = object({
7614
+ recordings: string().min(1).optional(),
7615
+ recordingsLow: string().min(1).optional(),
7616
+ eventMedia: string().min(1).optional()
7617
+ }).refine((value) => Object.keys(value).length > 0, { message: "select at least one storage class" });
7618
+ /** Shared input for planning and starting an orchestrated storage migration. */
7619
+ var StorageMigrationInputSchema = object({
7620
+ destinations: StorageMigrationDestinationsSchema,
7621
+ throttleMbps: number().min(1).max(1e3).optional()
7622
+ });
7623
+ /** The durable coordinator state machine. The only phase that changes default
7624
+ * locations is `repointing`, after every selected mover has completed and been
7625
+ * verified. */
7626
+ var StorageMigrationPhaseSchema = _enum([
7627
+ "planning",
7628
+ "pausing",
7629
+ "moving",
7630
+ "verifying",
7631
+ "repointing",
7632
+ "refreshing",
7633
+ "resuming",
7634
+ "done",
7635
+ "failed",
7636
+ "cancelled"
7637
+ ]);
7638
+ var StorageMigrationParticipantSchema = _enum([
7639
+ "pipeline",
7640
+ "recorder",
7641
+ "analytics"
7642
+ ]);
7643
+ var StorageMigrationMoveSchema = object({
7644
+ storageClass: StorageMigrationClassSchema,
7645
+ fromLocationId: string(),
7646
+ toLocationId: string(),
7647
+ moverJobId: string().nullable(),
7648
+ state: RelocateJobStateSchema.nullable(),
7649
+ error: string().nullable()
7650
+ });
7651
+ var StorageMigrationJobSchema = object({
7652
+ jobId: string(),
7653
+ phase: StorageMigrationPhaseSchema,
7654
+ destinations: StorageMigrationDestinationsSchema,
7655
+ throttleMbps: number(),
7656
+ moves: array(StorageMigrationMoveSchema),
7657
+ pauseLeaseId: string().nullable(),
7658
+ pausedParticipants: array(StorageMigrationParticipantSchema),
7659
+ repointed: boolean(),
7660
+ cancelRequested: boolean(),
7661
+ startedAt: number(),
7662
+ updatedAt: number(),
7663
+ finishedAt: number().nullable(),
7664
+ error: string().nullable()
7665
+ });
7666
+ var StorageMigrationPlanSchema = object({
7667
+ destinations: StorageMigrationDestinationsSchema,
7668
+ moves: array(object({
7669
+ storageClass: StorageMigrationClassSchema,
7670
+ fromLocationId: string(),
7671
+ toLocationId: string()
7672
+ }))
7593
7673
  });
7594
7674
  /**
7595
7675
  * `StorageLocationType` — an addon-declared id that identifies the *kind* of
@@ -16243,13 +16323,19 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
16243
16323
  }), method(object({ deviceId: number() }), EventPruneCountsSchema, {
16244
16324
  kind: "mutation",
16245
16325
  auth: "admin"
16246
- }), method(RelocateMediaInputSchema, object({ jobId: string() }), {
16326
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
16247
16327
  kind: "mutation",
16248
16328
  auth: "admin"
16249
- }), method(object({}), array(RelocateJobSchema).readonly(), {
16250
- kind: "query",
16329
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
16330
+ kind: "mutation",
16331
+ auth: "admin"
16332
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
16333
+ kind: "mutation",
16334
+ auth: "admin"
16335
+ }), method(StorageMigrationMediaMoveInputSchema, object({ jobId: string() }), {
16336
+ kind: "mutation",
16251
16337
  auth: "admin"
16252
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
16338
+ }), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
16253
16339
  kind: "mutation",
16254
16340
  auth: "admin"
16255
16341
  }), method(OpsLogQueryInputSchema, array(OpsLogEntrySchema).readonly(), {
@@ -17779,7 +17865,13 @@ var NodeInferenceDevicesSchema = object({
17779
17865
  reachable: boolean(),
17780
17866
  devices: array(NodeInferenceDeviceSchema).readonly()
17781
17867
  });
17782
- method(object({
17868
+ method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
17869
+ kind: "mutation",
17870
+ auth: "admin"
17871
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
17872
+ kind: "mutation",
17873
+ auth: "admin"
17874
+ }), method(object({
17783
17875
  deviceId: number(),
17784
17876
  agentNodeId: string()
17785
17877
  }), object({ success: literal(true) }), {
@@ -18544,6 +18636,13 @@ method(object({ locationId: string() }), EvictableUsageSchema), method(object({
18544
18636
  locationId: string(),
18545
18637
  targetBytes: number().int().positive()
18546
18638
  }), EvictResultSchema, { kind: "mutation" });
18639
+ method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin" }), method(StorageMigrationInputSchema, object({ jobId: string() }), {
18640
+ kind: "mutation",
18641
+ auth: "admin"
18642
+ }), method(object({ jobId: string().optional() }), StorageMigrationJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
18643
+ kind: "mutation",
18644
+ auth: "admin"
18645
+ });
18547
18646
  var ProviderInfoSchema = discriminatedUnion("shouldSaveDiskSpace", [object({
18548
18647
  providerId: string().min(1),
18549
18648
  displayName: string().min(1),
@@ -18647,6 +18746,28 @@ var TerminalProfileInfoSchema = object({
18647
18746
  label: string(),
18648
18747
  description: string().optional()
18649
18748
  });
18749
+ /**
18750
+ * A durable operator-created Terminal instance. Profiles are templates; only
18751
+ * an instance declares a camera.
18752
+ */
18753
+ var TerminalInstanceInfoSchema = object({
18754
+ instanceId: string(),
18755
+ cameraStableId: string(),
18756
+ nodeId: string(),
18757
+ profileId: string(),
18758
+ profileLabel: string(),
18759
+ name: string(),
18760
+ enabled: boolean()
18761
+ });
18762
+ var TerminalLegacyCameraSchema = object({
18763
+ stableId: string(),
18764
+ nodeId: string(),
18765
+ profileId: string(),
18766
+ profileLabel: string(),
18767
+ name: string(),
18768
+ /** Only legacy monitor cameras can retain their historic stable identity. */
18769
+ adoptable: boolean()
18770
+ });
18650
18771
  var TerminalOutputEventSchema = discriminatedUnion("kind", [object({
18651
18772
  seq: number().int().positive(),
18652
18773
  kind: literal("data"),
@@ -18663,7 +18784,29 @@ var TerminalOutputBatchSchema = object({
18663
18784
  snapshot: string().optional(),
18664
18785
  events: array(TerminalOutputEventSchema).readonly()
18665
18786
  });
18666
- method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
18787
+ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalInstanceInfoSchema).readonly(), { auth: "admin" }), method(object({
18788
+ targetNodeId: string().min(1),
18789
+ profileId: string().min(1),
18790
+ name: string().trim().min(1).max(160).optional()
18791
+ }), TerminalInstanceInfoSchema, {
18792
+ kind: "mutation",
18793
+ auth: "admin"
18794
+ }), method(object({ instanceId: string().min(1) }), _void(), {
18795
+ kind: "mutation",
18796
+ auth: "admin"
18797
+ }), method(object({
18798
+ instanceId: string().min(1),
18799
+ enabled: boolean()
18800
+ }), TerminalInstanceInfoSchema, {
18801
+ kind: "mutation",
18802
+ auth: "admin"
18803
+ }), method(_void(), array(TerminalLegacyCameraSchema).readonly(), { auth: "admin" }), method(object({
18804
+ stableId: string().min(1),
18805
+ name: string().trim().min(1).max(160).optional()
18806
+ }), TerminalInstanceInfoSchema, {
18807
+ kind: "mutation",
18808
+ auth: "admin"
18809
+ }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
18667
18810
  profileId: string(),
18668
18811
  cols: number().int().positive(),
18669
18812
  rows: number().int().positive()
@@ -18680,7 +18823,13 @@ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }),
18680
18823
  }), method(object({
18681
18824
  sessionId: string(),
18682
18825
  afterSeq: number().int().nonnegative(),
18683
- waitMs: number().int().min(0).max(2e3).default(0)
18826
+ waitMs: number().int().min(0).max(2e3).default(0),
18827
+ /**
18828
+ * Wait when a just-opened session has no output yet. Kept opt-in so a
18829
+ * browser's initial repaint remains immediate; the camera snapshot
18830
+ * relay uses it to avoid encoding a blank startup frame.
18831
+ */
18832
+ waitForOutput: boolean().optional()
18684
18833
  }), TerminalOutputBatchSchema, {
18685
18834
  kind: "mutation",
18686
18835
  auth: "admin",
@@ -21178,6 +21327,7 @@ var FaceInfoSchema = object({
21178
21327
  var FaceFilterEnum = _enum([
21179
21328
  "unassigned",
21180
21329
  "recognized",
21330
+ "identified",
21181
21331
  "all"
21182
21332
  ]);
21183
21333
  var MediaFileLiteSchema$1 = object({
@@ -21206,6 +21356,8 @@ method(_void(), array(IdentitySchema).readonly()), method(object({ name: string(
21206
21356
  kind: "mutation",
21207
21357
  auth: "admin"
21208
21358
  }), method(object({
21359
+ /** Restrict to one camera. Absent keeps the cluster-wide gallery view. */
21360
+ deviceId: number().int().optional(),
21209
21361
  limit: number().int().positive().optional(),
21210
21362
  filter: FaceFilterEnum.optional(),
21211
21363
  /**
@@ -23481,6 +23633,10 @@ var OsdSourceSchema = discriminatedUnion("kind", [
23481
23633
  capName: string().min(1).max(64),
23482
23634
  /** Dot path inside the slice, e.g. `detected`, `value`, `mode`. */
23483
23635
  valuePath: string().min(1).max(64)
23636
+ }),
23637
+ object({
23638
+ kind: literal("latest-recognition"),
23639
+ recognition: _enum(["person", "plate"])
23484
23640
  })
23485
23641
  ]);
23486
23642
  var OsdSlotBindingSchema = object({
@@ -23586,6 +23742,15 @@ method(object({ deviceId: number().int() }), object({
23586
23742
  }), object({ success: literal(true) }), {
23587
23743
  kind: "mutation",
23588
23744
  auth: "admin"
23745
+ }), method(object({
23746
+ sourceDeviceId: number().int(),
23747
+ targetDeviceId: number().int()
23748
+ }), object({
23749
+ copied: number().int().nonnegative(),
23750
+ skipped: number().int().nonnegative()
23751
+ }), {
23752
+ kind: "mutation",
23753
+ auth: "admin"
23589
23754
  }), method(object({
23590
23755
  deviceId: number().int(),
23591
23756
  slotId: string().min(1),
@@ -24725,13 +24890,19 @@ method(object({
24725
24890
  }), {
24726
24891
  kind: "mutation",
24727
24892
  auth: "admin"
24728
- }), method(RelocateFootageInputSchema, object({ jobId: string() }), {
24893
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
24729
24894
  kind: "mutation",
24730
24895
  auth: "admin"
24731
- }), method(object({}), array(RelocateJobSchema).readonly(), {
24732
- kind: "query",
24896
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
24897
+ kind: "mutation",
24733
24898
  auth: "admin"
24734
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
24899
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
24900
+ kind: "mutation",
24901
+ auth: "admin"
24902
+ }), method(StorageMigrationFootageMoveInputSchema, object({ jobId: string() }), {
24903
+ kind: "mutation",
24904
+ auth: "admin"
24905
+ }), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
24735
24906
  kind: "mutation",
24736
24907
  auth: "admin"
24737
24908
  });
@@ -30679,6 +30850,12 @@ Object.freeze({
30679
30850
  addonId: null,
30680
30851
  access: "delete"
30681
30852
  },
30853
+ "osdManager.copyDeviceConfiguration": {
30854
+ capName: "osd-manager",
30855
+ capScope: "system",
30856
+ addonId: null,
30857
+ access: "create"
30858
+ },
30682
30859
  "osdManager.getConditionSupport": {
30683
30860
  capName: "osd-manager",
30684
30861
  capScope: "system",
@@ -30775,7 +30952,7 @@ Object.freeze({
30775
30952
  addonId: null,
30776
30953
  access: "create"
30777
30954
  },
30778
- "pipelineAnalytics.cancelMediaRelocate": {
30955
+ "pipelineAnalytics.cancelStorageMigrationMove": {
30779
30956
  capName: "pipeline-analytics",
30780
30957
  capScope: "device",
30781
30958
  addonId: null,
@@ -30847,12 +31024,6 @@ Object.freeze({
30847
31024
  addonId: null,
30848
31025
  access: "view"
30849
31026
  },
30850
- "pipelineAnalytics.getMediaRelocateStatus": {
30851
- capName: "pipeline-analytics",
30852
- capScope: "device",
30853
- addonId: null,
30854
- access: "view"
30855
- },
30856
31027
  "pipelineAnalytics.getMotionEvents": {
30857
31028
  capName: "pipeline-analytics",
30858
31029
  capScope: "device",
@@ -30889,6 +31060,12 @@ Object.freeze({
30889
31060
  addonId: null,
30890
31061
  access: "view"
30891
31062
  },
31063
+ "pipelineAnalytics.getStorageMigrationMoveStatus": {
31064
+ capName: "pipeline-analytics",
31065
+ capScope: "device",
31066
+ addonId: null,
31067
+ access: "view"
31068
+ },
30892
31069
  "pipelineAnalytics.getTrack": {
30893
31070
  capName: "pipeline-analytics",
30894
31071
  capScope: "device",
@@ -30967,6 +31144,12 @@ Object.freeze({
30967
31144
  addonId: null,
30968
31145
  access: "view"
30969
31146
  },
31147
+ "pipelineAnalytics.pauseForStorageMigration": {
31148
+ capName: "pipeline-analytics",
31149
+ capScope: "device",
31150
+ addonId: null,
31151
+ access: "create"
31152
+ },
30970
31153
  "pipelineAnalytics.proposeRetrainAnnotations": {
30971
31154
  capName: "pipeline-analytics",
30972
31155
  capScope: "device",
@@ -30997,7 +31180,7 @@ Object.freeze({
30997
31180
  addonId: null,
30998
31181
  access: "create"
30999
31182
  },
31000
- "pipelineAnalytics.relocateMedia": {
31183
+ "pipelineAnalytics.refreshStorageLocationsForMigration": {
31001
31184
  capName: "pipeline-analytics",
31002
31185
  capScope: "device",
31003
31186
  addonId: null,
@@ -31009,6 +31192,12 @@ Object.freeze({
31009
31192
  addonId: null,
31010
31193
  access: "create"
31011
31194
  },
31195
+ "pipelineAnalytics.resumeForStorageMigration": {
31196
+ capName: "pipeline-analytics",
31197
+ capScope: "device",
31198
+ addonId: null,
31199
+ access: "create"
31200
+ },
31012
31201
  "pipelineAnalytics.saveRetrainAnnotations": {
31013
31202
  capName: "pipeline-analytics",
31014
31203
  capScope: "device",
@@ -31033,6 +31222,12 @@ Object.freeze({
31033
31222
  addonId: null,
31034
31223
  access: "create"
31035
31224
  },
31225
+ "pipelineAnalytics.startStorageMigrationMove": {
31226
+ capName: "pipeline-analytics",
31227
+ capScope: "device",
31228
+ addonId: null,
31229
+ access: "create"
31230
+ },
31036
31231
  "pipelineAnalytics.wipeAllAnalytics": {
31037
31232
  capName: "pipeline-analytics",
31038
31233
  capScope: "device",
@@ -31399,6 +31594,12 @@ Object.freeze({
31399
31594
  addonId: null,
31400
31595
  access: "view"
31401
31596
  },
31597
+ "pipelineOrchestrator.pauseForStorageMigration": {
31598
+ capName: "pipeline-orchestrator",
31599
+ capScope: "system",
31600
+ addonId: null,
31601
+ access: "create"
31602
+ },
31402
31603
  "pipelineOrchestrator.rebalance": {
31403
31604
  capName: "pipeline-orchestrator",
31404
31605
  capScope: "system",
@@ -31423,6 +31624,12 @@ Object.freeze({
31423
31624
  addonId: null,
31424
31625
  access: "view"
31425
31626
  },
31627
+ "pipelineOrchestrator.resumeForStorageMigration": {
31628
+ capName: "pipeline-orchestrator",
31629
+ capScope: "system",
31630
+ addonId: null,
31631
+ access: "create"
31632
+ },
31426
31633
  "pipelineOrchestrator.saveTemplate": {
31427
31634
  capName: "pipeline-orchestrator",
31428
31635
  capScope: "system",
@@ -31819,7 +32026,7 @@ Object.freeze({
31819
32026
  addonId: null,
31820
32027
  access: "create"
31821
32028
  },
31822
- "recording.cancelRelocate": {
32029
+ "recording.cancelStorageMigrationMove": {
31823
32030
  capName: "recording",
31824
32031
  capScope: "system",
31825
32032
  addonId: null,
@@ -31855,7 +32062,7 @@ Object.freeze({
31855
32062
  addonId: null,
31856
32063
  access: "view"
31857
32064
  },
31858
- "recording.getRelocateStatus": {
32065
+ "recording.getStorageMigrationMoveStatus": {
31859
32066
  capName: "recording",
31860
32067
  capScope: "system",
31861
32068
  addonId: null,
@@ -31879,6 +32086,12 @@ Object.freeze({
31879
32086
  addonId: null,
31880
32087
  access: "view"
31881
32088
  },
32089
+ "recording.pauseForStorageMigration": {
32090
+ capName: "recording",
32091
+ capScope: "system",
32092
+ addonId: null,
32093
+ access: "create"
32094
+ },
31882
32095
  "recording.pruneFootage": {
31883
32096
  capName: "recording",
31884
32097
  capScope: "system",
@@ -31897,7 +32110,7 @@ Object.freeze({
31897
32110
  addonId: null,
31898
32111
  access: "view"
31899
32112
  },
31900
- "recording.relocateFootage": {
32113
+ "recording.refreshStorageLocationsForMigration": {
31901
32114
  capName: "recording",
31902
32115
  capScope: "system",
31903
32116
  addonId: null,
@@ -31921,12 +32134,24 @@ Object.freeze({
31921
32134
  addonId: null,
31922
32135
  access: "create"
31923
32136
  },
32137
+ "recording.resumeForStorageMigration": {
32138
+ capName: "recording",
32139
+ capScope: "system",
32140
+ addonId: null,
32141
+ access: "create"
32142
+ },
31924
32143
  "recording.setDeviceConfig": {
31925
32144
  capName: "recording",
31926
32145
  capScope: "system",
31927
32146
  addonId: null,
31928
32147
  access: "create"
31929
32148
  },
32149
+ "recording.startStorageMigrationMove": {
32150
+ capName: "recording",
32151
+ capScope: "system",
32152
+ addonId: null,
32153
+ access: "create"
32154
+ },
31930
32155
  "recordingExport.cancelExport": {
31931
32156
  capName: "recordingExport",
31932
32157
  capScope: "system",
@@ -32317,6 +32542,30 @@ Object.freeze({
32317
32542
  addonId: null,
32318
32543
  access: "view"
32319
32544
  },
32545
+ "storageMigration.cancel": {
32546
+ capName: "storage-migration",
32547
+ capScope: "system",
32548
+ addonId: null,
32549
+ access: "create"
32550
+ },
32551
+ "storageMigration.plan": {
32552
+ capName: "storage-migration",
32553
+ capScope: "system",
32554
+ addonId: null,
32555
+ access: "view"
32556
+ },
32557
+ "storageMigration.start": {
32558
+ capName: "storage-migration",
32559
+ capScope: "system",
32560
+ addonId: null,
32561
+ access: "create"
32562
+ },
32563
+ "storageMigration.status": {
32564
+ capName: "storage-migration",
32565
+ capScope: "system",
32566
+ addonId: null,
32567
+ access: "view"
32568
+ },
32320
32569
  "storageProvider.abortUpload": {
32321
32570
  capName: "storage-provider",
32322
32571
  capScope: "system",
@@ -32695,12 +32944,42 @@ Object.freeze({
32695
32944
  addonId: null,
32696
32945
  access: "create"
32697
32946
  },
32947
+ "terminalSession.adoptLegacyMonitor": {
32948
+ capName: "terminal-session",
32949
+ capScope: "system",
32950
+ addonId: null,
32951
+ access: "create"
32952
+ },
32698
32953
  "terminalSession.close": {
32699
32954
  capName: "terminal-session",
32700
32955
  capScope: "system",
32701
32956
  addonId: null,
32702
32957
  access: "create"
32703
32958
  },
32959
+ "terminalSession.createInstance": {
32960
+ capName: "terminal-session",
32961
+ capScope: "system",
32962
+ addonId: null,
32963
+ access: "create"
32964
+ },
32965
+ "terminalSession.deleteInstance": {
32966
+ capName: "terminal-session",
32967
+ capScope: "system",
32968
+ addonId: null,
32969
+ access: "delete"
32970
+ },
32971
+ "terminalSession.listInstances": {
32972
+ capName: "terminal-session",
32973
+ capScope: "system",
32974
+ addonId: null,
32975
+ access: "view"
32976
+ },
32977
+ "terminalSession.listLegacyCameras": {
32978
+ capName: "terminal-session",
32979
+ capScope: "system",
32980
+ addonId: null,
32981
+ access: "view"
32982
+ },
32704
32983
  "terminalSession.listProfiles": {
32705
32984
  capName: "terminal-session",
32706
32985
  capScope: "system",
@@ -32731,6 +33010,12 @@ Object.freeze({
32731
33010
  addonId: null,
32732
33011
  access: "create"
32733
33012
  },
33013
+ "terminalSession.setInstanceEnabled": {
33014
+ capName: "terminal-session",
33015
+ capScope: "system",
33016
+ addonId: null,
33017
+ access: "create"
33018
+ },
32734
33019
  "terminalSession.writeInput": {
32735
33020
  capName: "terminal-session",
32736
33021
  capScope: "system",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-provider-amcrest",
3
- "version": "0.2.13",
3
+ "version": "0.2.14",
4
4
  "description": "Amcrest/Dahua camera device provider addon for CamStack — Dahua CGI over HTTP(S) with digest auth (snapshot, RTSP catalog, PTZ, image/day-night config)",
5
5
  "keywords": [
6
6
  "camstack",