@camstack/addon-provider-amcrest 0.2.12 → 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 +357 -30
  2. package/dist/addon.mjs +357 -30
  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",
16250
16330
  auth: "admin"
16251
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
16331
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
16332
+ kind: "mutation",
16333
+ auth: "admin"
16334
+ }), method(StorageMigrationMediaMoveInputSchema, object({ jobId: string() }), {
16335
+ kind: "mutation",
16336
+ auth: "admin"
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,7 +18745,67 @@ var TerminalProfileInfoSchema = object({
18646
18745
  label: string(),
18647
18746
  description: string().optional()
18648
18747
  });
18649
- method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
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
+ });
18770
+ var TerminalOutputEventSchema = discriminatedUnion("kind", [object({
18771
+ seq: number().int().positive(),
18772
+ kind: literal("data"),
18773
+ data: string()
18774
+ }), object({
18775
+ seq: number().int().positive(),
18776
+ kind: literal("exit"),
18777
+ exitCode: number().int(),
18778
+ signal: number().int().optional()
18779
+ })]);
18780
+ var TerminalOutputBatchSchema = object({
18781
+ cursor: number().int().nonnegative(),
18782
+ reset: boolean(),
18783
+ snapshot: string().optional(),
18784
+ events: array(TerminalOutputEventSchema).readonly()
18785
+ });
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({
18650
18809
  profileId: string(),
18651
18810
  cols: number().int().positive(),
18652
18811
  rows: number().int().positive()
@@ -18660,6 +18819,26 @@ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }),
18660
18819
  }), _void(), {
18661
18820
  kind: "mutation",
18662
18821
  auth: "admin"
18822
+ }), method(object({
18823
+ sessionId: string(),
18824
+ afterSeq: number().int().nonnegative(),
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()
18832
+ }), TerminalOutputBatchSchema, {
18833
+ kind: "mutation",
18834
+ auth: "admin",
18835
+ timeoutMs: 15e3
18836
+ }), method(object({
18837
+ sessionId: string(),
18838
+ data: string().max(64 * 1024)
18839
+ }), _void(), {
18840
+ kind: "mutation",
18841
+ auth: "admin"
18663
18842
  }), method(object({ sessionId: string() }), _void(), {
18664
18843
  kind: "mutation",
18665
18844
  auth: "admin"
@@ -21147,6 +21326,7 @@ var FaceInfoSchema = object({
21147
21326
  var FaceFilterEnum = _enum([
21148
21327
  "unassigned",
21149
21328
  "recognized",
21329
+ "identified",
21150
21330
  "all"
21151
21331
  ]);
21152
21332
  var MediaFileLiteSchema$1 = object({
@@ -21175,6 +21355,8 @@ method(_void(), array(IdentitySchema).readonly()), method(object({ name: string(
21175
21355
  kind: "mutation",
21176
21356
  auth: "admin"
21177
21357
  }), method(object({
21358
+ /** Restrict to one camera. Absent keeps the cluster-wide gallery view. */
21359
+ deviceId: number().int().optional(),
21178
21360
  limit: number().int().positive().optional(),
21179
21361
  filter: FaceFilterEnum.optional(),
21180
21362
  /**
@@ -23450,6 +23632,10 @@ var OsdSourceSchema = discriminatedUnion("kind", [
23450
23632
  capName: string().min(1).max(64),
23451
23633
  /** Dot path inside the slice, e.g. `detected`, `value`, `mode`. */
23452
23634
  valuePath: string().min(1).max(64)
23635
+ }),
23636
+ object({
23637
+ kind: literal("latest-recognition"),
23638
+ recognition: _enum(["person", "plate"])
23453
23639
  })
23454
23640
  ]);
23455
23641
  var OsdSlotBindingSchema = object({
@@ -23555,6 +23741,15 @@ method(object({ deviceId: number().int() }), object({
23555
23741
  }), object({ success: literal(true) }), {
23556
23742
  kind: "mutation",
23557
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"
23558
23753
  }), method(object({
23559
23754
  deviceId: number().int(),
23560
23755
  slotId: string().min(1),
@@ -24694,13 +24889,19 @@ method(object({
24694
24889
  }), {
24695
24890
  kind: "mutation",
24696
24891
  auth: "admin"
24697
- }), method(RelocateFootageInputSchema, object({ jobId: string() }), {
24892
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
24698
24893
  kind: "mutation",
24699
24894
  auth: "admin"
24700
- }), method(object({}), array(RelocateJobSchema).readonly(), {
24701
- kind: "query",
24895
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
24896
+ kind: "mutation",
24702
24897
  auth: "admin"
24703
- }), 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() }), {
24704
24905
  kind: "mutation",
24705
24906
  auth: "admin"
24706
24907
  });
@@ -30648,6 +30849,12 @@ Object.freeze({
30648
30849
  addonId: null,
30649
30850
  access: "delete"
30650
30851
  },
30852
+ "osdManager.copyDeviceConfiguration": {
30853
+ capName: "osd-manager",
30854
+ capScope: "system",
30855
+ addonId: null,
30856
+ access: "create"
30857
+ },
30651
30858
  "osdManager.getConditionSupport": {
30652
30859
  capName: "osd-manager",
30653
30860
  capScope: "system",
@@ -30744,7 +30951,7 @@ Object.freeze({
30744
30951
  addonId: null,
30745
30952
  access: "create"
30746
30953
  },
30747
- "pipelineAnalytics.cancelMediaRelocate": {
30954
+ "pipelineAnalytics.cancelStorageMigrationMove": {
30748
30955
  capName: "pipeline-analytics",
30749
30956
  capScope: "device",
30750
30957
  addonId: null,
@@ -30816,12 +31023,6 @@ Object.freeze({
30816
31023
  addonId: null,
30817
31024
  access: "view"
30818
31025
  },
30819
- "pipelineAnalytics.getMediaRelocateStatus": {
30820
- capName: "pipeline-analytics",
30821
- capScope: "device",
30822
- addonId: null,
30823
- access: "view"
30824
- },
30825
31026
  "pipelineAnalytics.getMotionEvents": {
30826
31027
  capName: "pipeline-analytics",
30827
31028
  capScope: "device",
@@ -30858,6 +31059,12 @@ Object.freeze({
30858
31059
  addonId: null,
30859
31060
  access: "view"
30860
31061
  },
31062
+ "pipelineAnalytics.getStorageMigrationMoveStatus": {
31063
+ capName: "pipeline-analytics",
31064
+ capScope: "device",
31065
+ addonId: null,
31066
+ access: "view"
31067
+ },
30861
31068
  "pipelineAnalytics.getTrack": {
30862
31069
  capName: "pipeline-analytics",
30863
31070
  capScope: "device",
@@ -30936,6 +31143,12 @@ Object.freeze({
30936
31143
  addonId: null,
30937
31144
  access: "view"
30938
31145
  },
31146
+ "pipelineAnalytics.pauseForStorageMigration": {
31147
+ capName: "pipeline-analytics",
31148
+ capScope: "device",
31149
+ addonId: null,
31150
+ access: "create"
31151
+ },
30939
31152
  "pipelineAnalytics.proposeRetrainAnnotations": {
30940
31153
  capName: "pipeline-analytics",
30941
31154
  capScope: "device",
@@ -30966,7 +31179,7 @@ Object.freeze({
30966
31179
  addonId: null,
30967
31180
  access: "create"
30968
31181
  },
30969
- "pipelineAnalytics.relocateMedia": {
31182
+ "pipelineAnalytics.refreshStorageLocationsForMigration": {
30970
31183
  capName: "pipeline-analytics",
30971
31184
  capScope: "device",
30972
31185
  addonId: null,
@@ -30978,6 +31191,12 @@ Object.freeze({
30978
31191
  addonId: null,
30979
31192
  access: "create"
30980
31193
  },
31194
+ "pipelineAnalytics.resumeForStorageMigration": {
31195
+ capName: "pipeline-analytics",
31196
+ capScope: "device",
31197
+ addonId: null,
31198
+ access: "create"
31199
+ },
30981
31200
  "pipelineAnalytics.saveRetrainAnnotations": {
30982
31201
  capName: "pipeline-analytics",
30983
31202
  capScope: "device",
@@ -31002,6 +31221,12 @@ Object.freeze({
31002
31221
  addonId: null,
31003
31222
  access: "create"
31004
31223
  },
31224
+ "pipelineAnalytics.startStorageMigrationMove": {
31225
+ capName: "pipeline-analytics",
31226
+ capScope: "device",
31227
+ addonId: null,
31228
+ access: "create"
31229
+ },
31005
31230
  "pipelineAnalytics.wipeAllAnalytics": {
31006
31231
  capName: "pipeline-analytics",
31007
31232
  capScope: "device",
@@ -31368,6 +31593,12 @@ Object.freeze({
31368
31593
  addonId: null,
31369
31594
  access: "view"
31370
31595
  },
31596
+ "pipelineOrchestrator.pauseForStorageMigration": {
31597
+ capName: "pipeline-orchestrator",
31598
+ capScope: "system",
31599
+ addonId: null,
31600
+ access: "create"
31601
+ },
31371
31602
  "pipelineOrchestrator.rebalance": {
31372
31603
  capName: "pipeline-orchestrator",
31373
31604
  capScope: "system",
@@ -31392,6 +31623,12 @@ Object.freeze({
31392
31623
  addonId: null,
31393
31624
  access: "view"
31394
31625
  },
31626
+ "pipelineOrchestrator.resumeForStorageMigration": {
31627
+ capName: "pipeline-orchestrator",
31628
+ capScope: "system",
31629
+ addonId: null,
31630
+ access: "create"
31631
+ },
31395
31632
  "pipelineOrchestrator.saveTemplate": {
31396
31633
  capName: "pipeline-orchestrator",
31397
31634
  capScope: "system",
@@ -31788,7 +32025,7 @@ Object.freeze({
31788
32025
  addonId: null,
31789
32026
  access: "create"
31790
32027
  },
31791
- "recording.cancelRelocate": {
32028
+ "recording.cancelStorageMigrationMove": {
31792
32029
  capName: "recording",
31793
32030
  capScope: "system",
31794
32031
  addonId: null,
@@ -31824,7 +32061,7 @@ Object.freeze({
31824
32061
  addonId: null,
31825
32062
  access: "view"
31826
32063
  },
31827
- "recording.getRelocateStatus": {
32064
+ "recording.getStorageMigrationMoveStatus": {
31828
32065
  capName: "recording",
31829
32066
  capScope: "system",
31830
32067
  addonId: null,
@@ -31848,6 +32085,12 @@ Object.freeze({
31848
32085
  addonId: null,
31849
32086
  access: "view"
31850
32087
  },
32088
+ "recording.pauseForStorageMigration": {
32089
+ capName: "recording",
32090
+ capScope: "system",
32091
+ addonId: null,
32092
+ access: "create"
32093
+ },
31851
32094
  "recording.pruneFootage": {
31852
32095
  capName: "recording",
31853
32096
  capScope: "system",
@@ -31866,7 +32109,7 @@ Object.freeze({
31866
32109
  addonId: null,
31867
32110
  access: "view"
31868
32111
  },
31869
- "recording.relocateFootage": {
32112
+ "recording.refreshStorageLocationsForMigration": {
31870
32113
  capName: "recording",
31871
32114
  capScope: "system",
31872
32115
  addonId: null,
@@ -31890,12 +32133,24 @@ Object.freeze({
31890
32133
  addonId: null,
31891
32134
  access: "create"
31892
32135
  },
32136
+ "recording.resumeForStorageMigration": {
32137
+ capName: "recording",
32138
+ capScope: "system",
32139
+ addonId: null,
32140
+ access: "create"
32141
+ },
31893
32142
  "recording.setDeviceConfig": {
31894
32143
  capName: "recording",
31895
32144
  capScope: "system",
31896
32145
  addonId: null,
31897
32146
  access: "create"
31898
32147
  },
32148
+ "recording.startStorageMigrationMove": {
32149
+ capName: "recording",
32150
+ capScope: "system",
32151
+ addonId: null,
32152
+ access: "create"
32153
+ },
31899
32154
  "recordingExport.cancelExport": {
31900
32155
  capName: "recordingExport",
31901
32156
  capScope: "system",
@@ -32286,6 +32541,30 @@ Object.freeze({
32286
32541
  addonId: null,
32287
32542
  access: "view"
32288
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
+ },
32289
32568
  "storageProvider.abortUpload": {
32290
32569
  capName: "storage-provider",
32291
32570
  capScope: "system",
@@ -32664,12 +32943,42 @@ Object.freeze({
32664
32943
  addonId: null,
32665
32944
  access: "create"
32666
32945
  },
32946
+ "terminalSession.adoptLegacyMonitor": {
32947
+ capName: "terminal-session",
32948
+ capScope: "system",
32949
+ addonId: null,
32950
+ access: "create"
32951
+ },
32667
32952
  "terminalSession.close": {
32668
32953
  capName: "terminal-session",
32669
32954
  capScope: "system",
32670
32955
  addonId: null,
32671
32956
  access: "create"
32672
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
+ },
32673
32982
  "terminalSession.listProfiles": {
32674
32983
  capName: "terminal-session",
32675
32984
  capScope: "system",
@@ -32688,12 +32997,30 @@ Object.freeze({
32688
32997
  addonId: null,
32689
32998
  access: "create"
32690
32999
  },
33000
+ "terminalSession.pullOutput": {
33001
+ capName: "terminal-session",
33002
+ capScope: "system",
33003
+ addonId: null,
33004
+ access: "create"
33005
+ },
32691
33006
  "terminalSession.resize": {
32692
33007
  capName: "terminal-session",
32693
33008
  capScope: "system",
32694
33009
  addonId: null,
32695
33010
  access: "create"
32696
33011
  },
33012
+ "terminalSession.setInstanceEnabled": {
33013
+ capName: "terminal-session",
33014
+ capScope: "system",
33015
+ addonId: null,
33016
+ access: "create"
33017
+ },
33018
+ "terminalSession.writeInput": {
33019
+ capName: "terminal-session",
33020
+ capScope: "system",
33021
+ addonId: null,
33022
+ access: "create"
33023
+ },
32697
33024
  "toast.onToast": {
32698
33025
  capName: "toast",
32699
33026
  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",
16251
16331
  auth: "admin"
16252
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
16332
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
16333
+ kind: "mutation",
16334
+ auth: "admin"
16335
+ }), method(StorageMigrationMediaMoveInputSchema, object({ jobId: string() }), {
16336
+ kind: "mutation",
16337
+ auth: "admin"
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,7 +18746,67 @@ var TerminalProfileInfoSchema = object({
18647
18746
  label: string(),
18648
18747
  description: string().optional()
18649
18748
  });
18650
- method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
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
+ });
18771
+ var TerminalOutputEventSchema = discriminatedUnion("kind", [object({
18772
+ seq: number().int().positive(),
18773
+ kind: literal("data"),
18774
+ data: string()
18775
+ }), object({
18776
+ seq: number().int().positive(),
18777
+ kind: literal("exit"),
18778
+ exitCode: number().int(),
18779
+ signal: number().int().optional()
18780
+ })]);
18781
+ var TerminalOutputBatchSchema = object({
18782
+ cursor: number().int().nonnegative(),
18783
+ reset: boolean(),
18784
+ snapshot: string().optional(),
18785
+ events: array(TerminalOutputEventSchema).readonly()
18786
+ });
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({
18651
18810
  profileId: string(),
18652
18811
  cols: number().int().positive(),
18653
18812
  rows: number().int().positive()
@@ -18661,6 +18820,26 @@ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }),
18661
18820
  }), _void(), {
18662
18821
  kind: "mutation",
18663
18822
  auth: "admin"
18823
+ }), method(object({
18824
+ sessionId: string(),
18825
+ afterSeq: number().int().nonnegative(),
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()
18833
+ }), TerminalOutputBatchSchema, {
18834
+ kind: "mutation",
18835
+ auth: "admin",
18836
+ timeoutMs: 15e3
18837
+ }), method(object({
18838
+ sessionId: string(),
18839
+ data: string().max(64 * 1024)
18840
+ }), _void(), {
18841
+ kind: "mutation",
18842
+ auth: "admin"
18664
18843
  }), method(object({ sessionId: string() }), _void(), {
18665
18844
  kind: "mutation",
18666
18845
  auth: "admin"
@@ -21148,6 +21327,7 @@ var FaceInfoSchema = object({
21148
21327
  var FaceFilterEnum = _enum([
21149
21328
  "unassigned",
21150
21329
  "recognized",
21330
+ "identified",
21151
21331
  "all"
21152
21332
  ]);
21153
21333
  var MediaFileLiteSchema$1 = object({
@@ -21176,6 +21356,8 @@ method(_void(), array(IdentitySchema).readonly()), method(object({ name: string(
21176
21356
  kind: "mutation",
21177
21357
  auth: "admin"
21178
21358
  }), method(object({
21359
+ /** Restrict to one camera. Absent keeps the cluster-wide gallery view. */
21360
+ deviceId: number().int().optional(),
21179
21361
  limit: number().int().positive().optional(),
21180
21362
  filter: FaceFilterEnum.optional(),
21181
21363
  /**
@@ -23451,6 +23633,10 @@ var OsdSourceSchema = discriminatedUnion("kind", [
23451
23633
  capName: string().min(1).max(64),
23452
23634
  /** Dot path inside the slice, e.g. `detected`, `value`, `mode`. */
23453
23635
  valuePath: string().min(1).max(64)
23636
+ }),
23637
+ object({
23638
+ kind: literal("latest-recognition"),
23639
+ recognition: _enum(["person", "plate"])
23454
23640
  })
23455
23641
  ]);
23456
23642
  var OsdSlotBindingSchema = object({
@@ -23556,6 +23742,15 @@ method(object({ deviceId: number().int() }), object({
23556
23742
  }), object({ success: literal(true) }), {
23557
23743
  kind: "mutation",
23558
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"
23559
23754
  }), method(object({
23560
23755
  deviceId: number().int(),
23561
23756
  slotId: string().min(1),
@@ -24695,13 +24890,19 @@ method(object({
24695
24890
  }), {
24696
24891
  kind: "mutation",
24697
24892
  auth: "admin"
24698
- }), method(RelocateFootageInputSchema, object({ jobId: string() }), {
24893
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
24699
24894
  kind: "mutation",
24700
24895
  auth: "admin"
24701
- }), method(object({}), array(RelocateJobSchema).readonly(), {
24702
- kind: "query",
24896
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
24897
+ kind: "mutation",
24703
24898
  auth: "admin"
24704
- }), 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() }), {
24705
24906
  kind: "mutation",
24706
24907
  auth: "admin"
24707
24908
  });
@@ -30649,6 +30850,12 @@ Object.freeze({
30649
30850
  addonId: null,
30650
30851
  access: "delete"
30651
30852
  },
30853
+ "osdManager.copyDeviceConfiguration": {
30854
+ capName: "osd-manager",
30855
+ capScope: "system",
30856
+ addonId: null,
30857
+ access: "create"
30858
+ },
30652
30859
  "osdManager.getConditionSupport": {
30653
30860
  capName: "osd-manager",
30654
30861
  capScope: "system",
@@ -30745,7 +30952,7 @@ Object.freeze({
30745
30952
  addonId: null,
30746
30953
  access: "create"
30747
30954
  },
30748
- "pipelineAnalytics.cancelMediaRelocate": {
30955
+ "pipelineAnalytics.cancelStorageMigrationMove": {
30749
30956
  capName: "pipeline-analytics",
30750
30957
  capScope: "device",
30751
30958
  addonId: null,
@@ -30817,12 +31024,6 @@ Object.freeze({
30817
31024
  addonId: null,
30818
31025
  access: "view"
30819
31026
  },
30820
- "pipelineAnalytics.getMediaRelocateStatus": {
30821
- capName: "pipeline-analytics",
30822
- capScope: "device",
30823
- addonId: null,
30824
- access: "view"
30825
- },
30826
31027
  "pipelineAnalytics.getMotionEvents": {
30827
31028
  capName: "pipeline-analytics",
30828
31029
  capScope: "device",
@@ -30859,6 +31060,12 @@ Object.freeze({
30859
31060
  addonId: null,
30860
31061
  access: "view"
30861
31062
  },
31063
+ "pipelineAnalytics.getStorageMigrationMoveStatus": {
31064
+ capName: "pipeline-analytics",
31065
+ capScope: "device",
31066
+ addonId: null,
31067
+ access: "view"
31068
+ },
30862
31069
  "pipelineAnalytics.getTrack": {
30863
31070
  capName: "pipeline-analytics",
30864
31071
  capScope: "device",
@@ -30937,6 +31144,12 @@ Object.freeze({
30937
31144
  addonId: null,
30938
31145
  access: "view"
30939
31146
  },
31147
+ "pipelineAnalytics.pauseForStorageMigration": {
31148
+ capName: "pipeline-analytics",
31149
+ capScope: "device",
31150
+ addonId: null,
31151
+ access: "create"
31152
+ },
30940
31153
  "pipelineAnalytics.proposeRetrainAnnotations": {
30941
31154
  capName: "pipeline-analytics",
30942
31155
  capScope: "device",
@@ -30967,7 +31180,7 @@ Object.freeze({
30967
31180
  addonId: null,
30968
31181
  access: "create"
30969
31182
  },
30970
- "pipelineAnalytics.relocateMedia": {
31183
+ "pipelineAnalytics.refreshStorageLocationsForMigration": {
30971
31184
  capName: "pipeline-analytics",
30972
31185
  capScope: "device",
30973
31186
  addonId: null,
@@ -30979,6 +31192,12 @@ Object.freeze({
30979
31192
  addonId: null,
30980
31193
  access: "create"
30981
31194
  },
31195
+ "pipelineAnalytics.resumeForStorageMigration": {
31196
+ capName: "pipeline-analytics",
31197
+ capScope: "device",
31198
+ addonId: null,
31199
+ access: "create"
31200
+ },
30982
31201
  "pipelineAnalytics.saveRetrainAnnotations": {
30983
31202
  capName: "pipeline-analytics",
30984
31203
  capScope: "device",
@@ -31003,6 +31222,12 @@ Object.freeze({
31003
31222
  addonId: null,
31004
31223
  access: "create"
31005
31224
  },
31225
+ "pipelineAnalytics.startStorageMigrationMove": {
31226
+ capName: "pipeline-analytics",
31227
+ capScope: "device",
31228
+ addonId: null,
31229
+ access: "create"
31230
+ },
31006
31231
  "pipelineAnalytics.wipeAllAnalytics": {
31007
31232
  capName: "pipeline-analytics",
31008
31233
  capScope: "device",
@@ -31369,6 +31594,12 @@ Object.freeze({
31369
31594
  addonId: null,
31370
31595
  access: "view"
31371
31596
  },
31597
+ "pipelineOrchestrator.pauseForStorageMigration": {
31598
+ capName: "pipeline-orchestrator",
31599
+ capScope: "system",
31600
+ addonId: null,
31601
+ access: "create"
31602
+ },
31372
31603
  "pipelineOrchestrator.rebalance": {
31373
31604
  capName: "pipeline-orchestrator",
31374
31605
  capScope: "system",
@@ -31393,6 +31624,12 @@ Object.freeze({
31393
31624
  addonId: null,
31394
31625
  access: "view"
31395
31626
  },
31627
+ "pipelineOrchestrator.resumeForStorageMigration": {
31628
+ capName: "pipeline-orchestrator",
31629
+ capScope: "system",
31630
+ addonId: null,
31631
+ access: "create"
31632
+ },
31396
31633
  "pipelineOrchestrator.saveTemplate": {
31397
31634
  capName: "pipeline-orchestrator",
31398
31635
  capScope: "system",
@@ -31789,7 +32026,7 @@ Object.freeze({
31789
32026
  addonId: null,
31790
32027
  access: "create"
31791
32028
  },
31792
- "recording.cancelRelocate": {
32029
+ "recording.cancelStorageMigrationMove": {
31793
32030
  capName: "recording",
31794
32031
  capScope: "system",
31795
32032
  addonId: null,
@@ -31825,7 +32062,7 @@ Object.freeze({
31825
32062
  addonId: null,
31826
32063
  access: "view"
31827
32064
  },
31828
- "recording.getRelocateStatus": {
32065
+ "recording.getStorageMigrationMoveStatus": {
31829
32066
  capName: "recording",
31830
32067
  capScope: "system",
31831
32068
  addonId: null,
@@ -31849,6 +32086,12 @@ Object.freeze({
31849
32086
  addonId: null,
31850
32087
  access: "view"
31851
32088
  },
32089
+ "recording.pauseForStorageMigration": {
32090
+ capName: "recording",
32091
+ capScope: "system",
32092
+ addonId: null,
32093
+ access: "create"
32094
+ },
31852
32095
  "recording.pruneFootage": {
31853
32096
  capName: "recording",
31854
32097
  capScope: "system",
@@ -31867,7 +32110,7 @@ Object.freeze({
31867
32110
  addonId: null,
31868
32111
  access: "view"
31869
32112
  },
31870
- "recording.relocateFootage": {
32113
+ "recording.refreshStorageLocationsForMigration": {
31871
32114
  capName: "recording",
31872
32115
  capScope: "system",
31873
32116
  addonId: null,
@@ -31891,12 +32134,24 @@ Object.freeze({
31891
32134
  addonId: null,
31892
32135
  access: "create"
31893
32136
  },
32137
+ "recording.resumeForStorageMigration": {
32138
+ capName: "recording",
32139
+ capScope: "system",
32140
+ addonId: null,
32141
+ access: "create"
32142
+ },
31894
32143
  "recording.setDeviceConfig": {
31895
32144
  capName: "recording",
31896
32145
  capScope: "system",
31897
32146
  addonId: null,
31898
32147
  access: "create"
31899
32148
  },
32149
+ "recording.startStorageMigrationMove": {
32150
+ capName: "recording",
32151
+ capScope: "system",
32152
+ addonId: null,
32153
+ access: "create"
32154
+ },
31900
32155
  "recordingExport.cancelExport": {
31901
32156
  capName: "recordingExport",
31902
32157
  capScope: "system",
@@ -32287,6 +32542,30 @@ Object.freeze({
32287
32542
  addonId: null,
32288
32543
  access: "view"
32289
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
+ },
32290
32569
  "storageProvider.abortUpload": {
32291
32570
  capName: "storage-provider",
32292
32571
  capScope: "system",
@@ -32665,12 +32944,42 @@ Object.freeze({
32665
32944
  addonId: null,
32666
32945
  access: "create"
32667
32946
  },
32947
+ "terminalSession.adoptLegacyMonitor": {
32948
+ capName: "terminal-session",
32949
+ capScope: "system",
32950
+ addonId: null,
32951
+ access: "create"
32952
+ },
32668
32953
  "terminalSession.close": {
32669
32954
  capName: "terminal-session",
32670
32955
  capScope: "system",
32671
32956
  addonId: null,
32672
32957
  access: "create"
32673
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
+ },
32674
32983
  "terminalSession.listProfiles": {
32675
32984
  capName: "terminal-session",
32676
32985
  capScope: "system",
@@ -32689,12 +32998,30 @@ Object.freeze({
32689
32998
  addonId: null,
32690
32999
  access: "create"
32691
33000
  },
33001
+ "terminalSession.pullOutput": {
33002
+ capName: "terminal-session",
33003
+ capScope: "system",
33004
+ addonId: null,
33005
+ access: "create"
33006
+ },
32692
33007
  "terminalSession.resize": {
32693
33008
  capName: "terminal-session",
32694
33009
  capScope: "system",
32695
33010
  addonId: null,
32696
33011
  access: "create"
32697
33012
  },
33013
+ "terminalSession.setInstanceEnabled": {
33014
+ capName: "terminal-session",
33015
+ capScope: "system",
33016
+ addonId: null,
33017
+ access: "create"
33018
+ },
33019
+ "terminalSession.writeInput": {
33020
+ capName: "terminal-session",
33021
+ capScope: "system",
33022
+ addonId: null,
33023
+ access: "create"
33024
+ },
32698
33025
  "toast.onToast": {
32699
33026
  capName: "toast",
32700
33027
  capScope: "system",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-provider-amcrest",
3
- "version": "0.2.12",
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",