@camstack/addon-provider-rtsp 1.2.11 → 1.2.13

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
@@ -7621,12 +7621,11 @@ var RecordingConfigSchema = object({
7621
7621
  /**
7622
7622
  * Entity-relocation job state (storage entity-routing spec, Phase 4).
7623
7623
  *
7624
- * One shape shared by the recorder's `relocateFootage` (segments) and
7625
- * pipeline-analytics' `relocateMedia` (event media blobs) so the admin Data
7626
- * page renders both movers with one component. Jobs are in-RAM (a restart
7627
- * forgets them re-running is safe by construction: copy-if-absent, delete
7628
- * after verify) and each completed/failed run also lands one durable ops-log
7629
- * row on the owning addon's surface.
7624
+ * One shape shared by the recorder and pipeline-analytics internal movers.
7625
+ * The public admin surface is `storage-migration`; child jobs remain in RAM
7626
+ * because copy-if-absent, verify, delete and index/row repoint are resumable.
7627
+ * Each completed/failed run also lands one durable ops-log row on its owning
7628
+ * addon surface.
7630
7629
  */
7631
7630
  var RelocateJobStateSchema = _enum([
7632
7631
  "running",
@@ -7653,19 +7652,100 @@ var RelocateJobSchema = object({
7653
7652
  finishedAt: number().nullable(),
7654
7653
  error: string().nullable()
7655
7654
  });
7655
+ /** Profile-derived footage selection used only by the migration coordinator:
7656
+ * `recordings` owns high+mid; `recordingsLow` owns low. */
7657
+ var RelocateFootageClassSchema = _enum(["recordings", "recordingsLow"]);
7656
7658
  var RelocateFootageInputSchema = object({
7657
- deviceId: number().optional(),
7658
7659
  fromLocationId: string(),
7659
7660
  toLocationId: string(),
7660
7661
  entities: array(_enum(["segments"])).optional(),
7662
+ /** Limits relocation to the logical profile class. Omit only for the
7663
+ * pre-orchestration compatibility path. */
7664
+ footageClass: RelocateFootageClassSchema.optional(),
7661
7665
  /** Copy throttle in MB/s (default 40) — the drain is a background chore,
7662
7666
  * never allowed to starve live writers. */
7663
7667
  throttleMbps: number().min(1).max(1e3).optional()
7664
7668
  });
7665
- var RelocateMediaInputSchema = object({
7666
- deviceId: number().optional(),
7669
+ /** Internal, lease-scoped participant operation. It is intentionally separate
7670
+ * from persistent recording settings: a migration never changes
7671
+ * `RecordingConfig.enabled` or camera wrapper bindings. */
7672
+ var StorageMigrationLeaseInputSchema = object({ leaseId: string().min(1) });
7673
+ var StorageMigrationFootageMoveInputSchema = RelocateFootageInputSchema.extend({ leaseId: string().min(1) });
7674
+ var StorageMigrationMediaMoveInputSchema = object({
7667
7675
  toLocationId: string(),
7668
7676
  throttleMbps: number().min(1).max(1e3).optional()
7677
+ }).extend({ leaseId: string().min(1) });
7678
+ /** The independently selectable logical storage classes. `recordings`
7679
+ * encompasses the high and mid segment profiles; `recordingsLow` is low
7680
+ * segments; `eventMedia` is post-analysis blobs. */
7681
+ var StorageMigrationClassSchema = _enum([
7682
+ "recordings",
7683
+ "recordingsLow",
7684
+ "eventMedia"
7685
+ ]);
7686
+ /** A destination is always an existing, fully-qualified location id. The
7687
+ * migration API intentionally never changes a source location's `basePath`:
7688
+ * callers create a new `<type>:<slug>` location, then select it here. */
7689
+ var StorageMigrationDestinationsSchema = object({
7690
+ recordings: string().min(1).optional(),
7691
+ recordingsLow: string().min(1).optional(),
7692
+ eventMedia: string().min(1).optional()
7693
+ }).refine((value) => Object.keys(value).length > 0, { message: "select at least one storage class" });
7694
+ /** Shared input for planning and starting an orchestrated storage migration. */
7695
+ var StorageMigrationInputSchema = object({
7696
+ destinations: StorageMigrationDestinationsSchema,
7697
+ throttleMbps: number().min(1).max(1e3).optional()
7698
+ });
7699
+ /** The durable coordinator state machine. The only phase that changes default
7700
+ * locations is `repointing`, after every selected mover has completed and been
7701
+ * verified. */
7702
+ var StorageMigrationPhaseSchema = _enum([
7703
+ "planning",
7704
+ "pausing",
7705
+ "moving",
7706
+ "verifying",
7707
+ "repointing",
7708
+ "refreshing",
7709
+ "resuming",
7710
+ "done",
7711
+ "failed",
7712
+ "cancelled"
7713
+ ]);
7714
+ var StorageMigrationParticipantSchema = _enum([
7715
+ "pipeline",
7716
+ "recorder",
7717
+ "analytics"
7718
+ ]);
7719
+ var StorageMigrationMoveSchema = object({
7720
+ storageClass: StorageMigrationClassSchema,
7721
+ fromLocationId: string(),
7722
+ toLocationId: string(),
7723
+ moverJobId: string().nullable(),
7724
+ state: RelocateJobStateSchema.nullable(),
7725
+ error: string().nullable()
7726
+ });
7727
+ var StorageMigrationJobSchema = object({
7728
+ jobId: string(),
7729
+ phase: StorageMigrationPhaseSchema,
7730
+ destinations: StorageMigrationDestinationsSchema,
7731
+ throttleMbps: number(),
7732
+ moves: array(StorageMigrationMoveSchema),
7733
+ pauseLeaseId: string().nullable(),
7734
+ pausedParticipants: array(StorageMigrationParticipantSchema),
7735
+ repointed: boolean(),
7736
+ cancelRequested: boolean(),
7737
+ startedAt: number(),
7738
+ updatedAt: number(),
7739
+ finishedAt: number().nullable(),
7740
+ error: string().nullable()
7741
+ });
7742
+ var StorageMigrationPlanSchema = object({
7743
+ destinations: StorageMigrationDestinationsSchema,
7744
+ moves: array(object({
7745
+ storageClass: StorageMigrationClassSchema,
7746
+ fromLocationId: string(),
7747
+ toLocationId: string()
7748
+ }))
7669
7749
  });
7670
7750
  /**
7671
7751
  * `StorageLocationType` — an addon-declared id that identifies the *kind* of
@@ -16319,13 +16399,19 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
16319
16399
  }), method(object({ deviceId: number() }), EventPruneCountsSchema, {
16320
16400
  kind: "mutation",
16321
16401
  auth: "admin"
16322
- }), method(RelocateMediaInputSchema, object({ jobId: string() }), {
16402
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
16323
16403
  kind: "mutation",
16324
16404
  auth: "admin"
16325
- }), method(object({}), array(RelocateJobSchema).readonly(), {
16326
- kind: "query",
16405
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
16406
+ kind: "mutation",
16327
16407
  auth: "admin"
16328
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
16408
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
16409
+ kind: "mutation",
16410
+ auth: "admin"
16411
+ }), method(StorageMigrationMediaMoveInputSchema, object({ jobId: string() }), {
16412
+ kind: "mutation",
16413
+ auth: "admin"
16414
+ }), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
16329
16415
  kind: "mutation",
16330
16416
  auth: "admin"
16331
16417
  }), method(OpsLogQueryInputSchema, array(OpsLogEntrySchema).readonly(), {
@@ -17855,7 +17941,13 @@ var NodeInferenceDevicesSchema = object({
17855
17941
  reachable: boolean(),
17856
17942
  devices: array(NodeInferenceDeviceSchema).readonly()
17857
17943
  });
17858
- method(object({
17944
+ method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
17945
+ kind: "mutation",
17946
+ auth: "admin"
17947
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
17948
+ kind: "mutation",
17949
+ auth: "admin"
17950
+ }), method(object({
17859
17951
  deviceId: number(),
17860
17952
  agentNodeId: string()
17861
17953
  }), object({ success: literal(true) }), {
@@ -18620,6 +18712,13 @@ method(object({ locationId: string() }), EvictableUsageSchema), method(object({
18620
18712
  locationId: string(),
18621
18713
  targetBytes: number().int().positive()
18622
18714
  }), EvictResultSchema, { kind: "mutation" });
18715
+ method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin" }), method(StorageMigrationInputSchema, object({ jobId: string() }), {
18716
+ kind: "mutation",
18717
+ auth: "admin"
18718
+ }), method(object({ jobId: string().optional() }), StorageMigrationJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
18719
+ kind: "mutation",
18720
+ auth: "admin"
18721
+ });
18623
18722
  var ProviderInfoSchema = discriminatedUnion("shouldSaveDiskSpace", [object({
18624
18723
  providerId: string().min(1),
18625
18724
  displayName: string().min(1),
@@ -18723,7 +18822,67 @@ var TerminalProfileInfoSchema = object({
18723
18822
  label: string(),
18724
18823
  description: string().optional()
18725
18824
  });
18726
- method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
18825
+ /**
18826
+ * A durable operator-created Terminal instance. Profiles are templates; only
18827
+ * an instance declares a camera.
18828
+ */
18829
+ var TerminalInstanceInfoSchema = object({
18830
+ instanceId: string(),
18831
+ cameraStableId: string(),
18832
+ nodeId: string(),
18833
+ profileId: string(),
18834
+ profileLabel: string(),
18835
+ name: string(),
18836
+ enabled: boolean()
18837
+ });
18838
+ var TerminalLegacyCameraSchema = object({
18839
+ stableId: string(),
18840
+ nodeId: string(),
18841
+ profileId: string(),
18842
+ profileLabel: string(),
18843
+ name: string(),
18844
+ /** Only legacy monitor cameras can retain their historic stable identity. */
18845
+ adoptable: boolean()
18846
+ });
18847
+ var TerminalOutputEventSchema = discriminatedUnion("kind", [object({
18848
+ seq: number().int().positive(),
18849
+ kind: literal("data"),
18850
+ data: string()
18851
+ }), object({
18852
+ seq: number().int().positive(),
18853
+ kind: literal("exit"),
18854
+ exitCode: number().int(),
18855
+ signal: number().int().optional()
18856
+ })]);
18857
+ var TerminalOutputBatchSchema = object({
18858
+ cursor: number().int().nonnegative(),
18859
+ reset: boolean(),
18860
+ snapshot: string().optional(),
18861
+ events: array(TerminalOutputEventSchema).readonly()
18862
+ });
18863
+ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalInstanceInfoSchema).readonly(), { auth: "admin" }), method(object({
18864
+ targetNodeId: string().min(1),
18865
+ profileId: string().min(1),
18866
+ name: string().trim().min(1).max(160).optional()
18867
+ }), TerminalInstanceInfoSchema, {
18868
+ kind: "mutation",
18869
+ auth: "admin"
18870
+ }), method(object({ instanceId: string().min(1) }), _void(), {
18871
+ kind: "mutation",
18872
+ auth: "admin"
18873
+ }), method(object({
18874
+ instanceId: string().min(1),
18875
+ enabled: boolean()
18876
+ }), TerminalInstanceInfoSchema, {
18877
+ kind: "mutation",
18878
+ auth: "admin"
18879
+ }), method(_void(), array(TerminalLegacyCameraSchema).readonly(), { auth: "admin" }), method(object({
18880
+ stableId: string().min(1),
18881
+ name: string().trim().min(1).max(160).optional()
18882
+ }), TerminalInstanceInfoSchema, {
18883
+ kind: "mutation",
18884
+ auth: "admin"
18885
+ }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
18727
18886
  profileId: string(),
18728
18887
  cols: number().int().positive(),
18729
18888
  rows: number().int().positive()
@@ -18737,6 +18896,26 @@ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }),
18737
18896
  }), _void(), {
18738
18897
  kind: "mutation",
18739
18898
  auth: "admin"
18899
+ }), method(object({
18900
+ sessionId: string(),
18901
+ afterSeq: number().int().nonnegative(),
18902
+ waitMs: number().int().min(0).max(2e3).default(0),
18903
+ /**
18904
+ * Wait when a just-opened session has no output yet. Kept opt-in so a
18905
+ * browser's initial repaint remains immediate; the camera snapshot
18906
+ * relay uses it to avoid encoding a blank startup frame.
18907
+ */
18908
+ waitForOutput: boolean().optional()
18909
+ }), TerminalOutputBatchSchema, {
18910
+ kind: "mutation",
18911
+ auth: "admin",
18912
+ timeoutMs: 15e3
18913
+ }), method(object({
18914
+ sessionId: string(),
18915
+ data: string().max(64 * 1024)
18916
+ }), _void(), {
18917
+ kind: "mutation",
18918
+ auth: "admin"
18740
18919
  }), method(object({ sessionId: string() }), _void(), {
18741
18920
  kind: "mutation",
18742
18921
  auth: "admin"
@@ -21232,6 +21411,7 @@ var FaceInfoSchema = object({
21232
21411
  var FaceFilterEnum = _enum([
21233
21412
  "unassigned",
21234
21413
  "recognized",
21414
+ "identified",
21235
21415
  "all"
21236
21416
  ]);
21237
21417
  var MediaFileLiteSchema$1 = object({
@@ -21260,6 +21440,8 @@ method(_void(), array(IdentitySchema).readonly()), method(object({ name: string(
21260
21440
  kind: "mutation",
21261
21441
  auth: "admin"
21262
21442
  }), method(object({
21443
+ /** Restrict to one camera. Absent keeps the cluster-wide gallery view. */
21444
+ deviceId: number().int().optional(),
21263
21445
  limit: number().int().positive().optional(),
21264
21446
  filter: FaceFilterEnum.optional(),
21265
21447
  /**
@@ -23489,6 +23671,10 @@ var OsdSourceSchema = discriminatedUnion("kind", [
23489
23671
  capName: string().min(1).max(64),
23490
23672
  /** Dot path inside the slice, e.g. `detected`, `value`, `mode`. */
23491
23673
  valuePath: string().min(1).max(64)
23674
+ }),
23675
+ object({
23676
+ kind: literal("latest-recognition"),
23677
+ recognition: _enum(["person", "plate"])
23492
23678
  })
23493
23679
  ]);
23494
23680
  var OsdSlotBindingSchema = object({
@@ -23594,6 +23780,15 @@ method(object({ deviceId: number().int() }), object({
23594
23780
  }), object({ success: literal(true) }), {
23595
23781
  kind: "mutation",
23596
23782
  auth: "admin"
23783
+ }), method(object({
23784
+ sourceDeviceId: number().int(),
23785
+ targetDeviceId: number().int()
23786
+ }), object({
23787
+ copied: number().int().nonnegative(),
23788
+ skipped: number().int().nonnegative()
23789
+ }), {
23790
+ kind: "mutation",
23791
+ auth: "admin"
23597
23792
  }), method(object({
23598
23793
  deviceId: number().int(),
23599
23794
  slotId: string().min(1),
@@ -24691,13 +24886,19 @@ method(object({
24691
24886
  }), {
24692
24887
  kind: "mutation",
24693
24888
  auth: "admin"
24694
- }), method(RelocateFootageInputSchema, object({ jobId: string() }), {
24889
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
24695
24890
  kind: "mutation",
24696
24891
  auth: "admin"
24697
- }), method(object({}), array(RelocateJobSchema).readonly(), {
24698
- kind: "query",
24892
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
24893
+ kind: "mutation",
24699
24894
  auth: "admin"
24700
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
24895
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
24896
+ kind: "mutation",
24897
+ auth: "admin"
24898
+ }), method(StorageMigrationFootageMoveInputSchema, object({ jobId: string() }), {
24899
+ kind: "mutation",
24900
+ auth: "admin"
24901
+ }), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
24701
24902
  kind: "mutation",
24702
24903
  auth: "admin"
24703
24904
  });
@@ -30382,6 +30583,12 @@ Object.freeze({
30382
30583
  addonId: null,
30383
30584
  access: "delete"
30384
30585
  },
30586
+ "osdManager.copyDeviceConfiguration": {
30587
+ capName: "osd-manager",
30588
+ capScope: "system",
30589
+ addonId: null,
30590
+ access: "create"
30591
+ },
30385
30592
  "osdManager.getConditionSupport": {
30386
30593
  capName: "osd-manager",
30387
30594
  capScope: "system",
@@ -30478,7 +30685,7 @@ Object.freeze({
30478
30685
  addonId: null,
30479
30686
  access: "create"
30480
30687
  },
30481
- "pipelineAnalytics.cancelMediaRelocate": {
30688
+ "pipelineAnalytics.cancelStorageMigrationMove": {
30482
30689
  capName: "pipeline-analytics",
30483
30690
  capScope: "device",
30484
30691
  addonId: null,
@@ -30550,12 +30757,6 @@ Object.freeze({
30550
30757
  addonId: null,
30551
30758
  access: "view"
30552
30759
  },
30553
- "pipelineAnalytics.getMediaRelocateStatus": {
30554
- capName: "pipeline-analytics",
30555
- capScope: "device",
30556
- addonId: null,
30557
- access: "view"
30558
- },
30559
30760
  "pipelineAnalytics.getMotionEvents": {
30560
30761
  capName: "pipeline-analytics",
30561
30762
  capScope: "device",
@@ -30592,6 +30793,12 @@ Object.freeze({
30592
30793
  addonId: null,
30593
30794
  access: "view"
30594
30795
  },
30796
+ "pipelineAnalytics.getStorageMigrationMoveStatus": {
30797
+ capName: "pipeline-analytics",
30798
+ capScope: "device",
30799
+ addonId: null,
30800
+ access: "view"
30801
+ },
30595
30802
  "pipelineAnalytics.getTrack": {
30596
30803
  capName: "pipeline-analytics",
30597
30804
  capScope: "device",
@@ -30670,6 +30877,12 @@ Object.freeze({
30670
30877
  addonId: null,
30671
30878
  access: "view"
30672
30879
  },
30880
+ "pipelineAnalytics.pauseForStorageMigration": {
30881
+ capName: "pipeline-analytics",
30882
+ capScope: "device",
30883
+ addonId: null,
30884
+ access: "create"
30885
+ },
30673
30886
  "pipelineAnalytics.proposeRetrainAnnotations": {
30674
30887
  capName: "pipeline-analytics",
30675
30888
  capScope: "device",
@@ -30700,7 +30913,7 @@ Object.freeze({
30700
30913
  addonId: null,
30701
30914
  access: "create"
30702
30915
  },
30703
- "pipelineAnalytics.relocateMedia": {
30916
+ "pipelineAnalytics.refreshStorageLocationsForMigration": {
30704
30917
  capName: "pipeline-analytics",
30705
30918
  capScope: "device",
30706
30919
  addonId: null,
@@ -30712,6 +30925,12 @@ Object.freeze({
30712
30925
  addonId: null,
30713
30926
  access: "create"
30714
30927
  },
30928
+ "pipelineAnalytics.resumeForStorageMigration": {
30929
+ capName: "pipeline-analytics",
30930
+ capScope: "device",
30931
+ addonId: null,
30932
+ access: "create"
30933
+ },
30715
30934
  "pipelineAnalytics.saveRetrainAnnotations": {
30716
30935
  capName: "pipeline-analytics",
30717
30936
  capScope: "device",
@@ -30736,6 +30955,12 @@ Object.freeze({
30736
30955
  addonId: null,
30737
30956
  access: "create"
30738
30957
  },
30958
+ "pipelineAnalytics.startStorageMigrationMove": {
30959
+ capName: "pipeline-analytics",
30960
+ capScope: "device",
30961
+ addonId: null,
30962
+ access: "create"
30963
+ },
30739
30964
  "pipelineAnalytics.wipeAllAnalytics": {
30740
30965
  capName: "pipeline-analytics",
30741
30966
  capScope: "device",
@@ -31102,6 +31327,12 @@ Object.freeze({
31102
31327
  addonId: null,
31103
31328
  access: "view"
31104
31329
  },
31330
+ "pipelineOrchestrator.pauseForStorageMigration": {
31331
+ capName: "pipeline-orchestrator",
31332
+ capScope: "system",
31333
+ addonId: null,
31334
+ access: "create"
31335
+ },
31105
31336
  "pipelineOrchestrator.rebalance": {
31106
31337
  capName: "pipeline-orchestrator",
31107
31338
  capScope: "system",
@@ -31126,6 +31357,12 @@ Object.freeze({
31126
31357
  addonId: null,
31127
31358
  access: "view"
31128
31359
  },
31360
+ "pipelineOrchestrator.resumeForStorageMigration": {
31361
+ capName: "pipeline-orchestrator",
31362
+ capScope: "system",
31363
+ addonId: null,
31364
+ access: "create"
31365
+ },
31129
31366
  "pipelineOrchestrator.saveTemplate": {
31130
31367
  capName: "pipeline-orchestrator",
31131
31368
  capScope: "system",
@@ -31522,7 +31759,7 @@ Object.freeze({
31522
31759
  addonId: null,
31523
31760
  access: "create"
31524
31761
  },
31525
- "recording.cancelRelocate": {
31762
+ "recording.cancelStorageMigrationMove": {
31526
31763
  capName: "recording",
31527
31764
  capScope: "system",
31528
31765
  addonId: null,
@@ -31558,7 +31795,7 @@ Object.freeze({
31558
31795
  addonId: null,
31559
31796
  access: "view"
31560
31797
  },
31561
- "recording.getRelocateStatus": {
31798
+ "recording.getStorageMigrationMoveStatus": {
31562
31799
  capName: "recording",
31563
31800
  capScope: "system",
31564
31801
  addonId: null,
@@ -31582,6 +31819,12 @@ Object.freeze({
31582
31819
  addonId: null,
31583
31820
  access: "view"
31584
31821
  },
31822
+ "recording.pauseForStorageMigration": {
31823
+ capName: "recording",
31824
+ capScope: "system",
31825
+ addonId: null,
31826
+ access: "create"
31827
+ },
31585
31828
  "recording.pruneFootage": {
31586
31829
  capName: "recording",
31587
31830
  capScope: "system",
@@ -31600,7 +31843,7 @@ Object.freeze({
31600
31843
  addonId: null,
31601
31844
  access: "view"
31602
31845
  },
31603
- "recording.relocateFootage": {
31846
+ "recording.refreshStorageLocationsForMigration": {
31604
31847
  capName: "recording",
31605
31848
  capScope: "system",
31606
31849
  addonId: null,
@@ -31624,12 +31867,24 @@ Object.freeze({
31624
31867
  addonId: null,
31625
31868
  access: "create"
31626
31869
  },
31870
+ "recording.resumeForStorageMigration": {
31871
+ capName: "recording",
31872
+ capScope: "system",
31873
+ addonId: null,
31874
+ access: "create"
31875
+ },
31627
31876
  "recording.setDeviceConfig": {
31628
31877
  capName: "recording",
31629
31878
  capScope: "system",
31630
31879
  addonId: null,
31631
31880
  access: "create"
31632
31881
  },
31882
+ "recording.startStorageMigrationMove": {
31883
+ capName: "recording",
31884
+ capScope: "system",
31885
+ addonId: null,
31886
+ access: "create"
31887
+ },
31633
31888
  "recordingExport.cancelExport": {
31634
31889
  capName: "recordingExport",
31635
31890
  capScope: "system",
@@ -32020,6 +32275,30 @@ Object.freeze({
32020
32275
  addonId: null,
32021
32276
  access: "view"
32022
32277
  },
32278
+ "storageMigration.cancel": {
32279
+ capName: "storage-migration",
32280
+ capScope: "system",
32281
+ addonId: null,
32282
+ access: "create"
32283
+ },
32284
+ "storageMigration.plan": {
32285
+ capName: "storage-migration",
32286
+ capScope: "system",
32287
+ addonId: null,
32288
+ access: "view"
32289
+ },
32290
+ "storageMigration.start": {
32291
+ capName: "storage-migration",
32292
+ capScope: "system",
32293
+ addonId: null,
32294
+ access: "create"
32295
+ },
32296
+ "storageMigration.status": {
32297
+ capName: "storage-migration",
32298
+ capScope: "system",
32299
+ addonId: null,
32300
+ access: "view"
32301
+ },
32023
32302
  "storageProvider.abortUpload": {
32024
32303
  capName: "storage-provider",
32025
32304
  capScope: "system",
@@ -32398,12 +32677,42 @@ Object.freeze({
32398
32677
  addonId: null,
32399
32678
  access: "create"
32400
32679
  },
32680
+ "terminalSession.adoptLegacyMonitor": {
32681
+ capName: "terminal-session",
32682
+ capScope: "system",
32683
+ addonId: null,
32684
+ access: "create"
32685
+ },
32401
32686
  "terminalSession.close": {
32402
32687
  capName: "terminal-session",
32403
32688
  capScope: "system",
32404
32689
  addonId: null,
32405
32690
  access: "create"
32406
32691
  },
32692
+ "terminalSession.createInstance": {
32693
+ capName: "terminal-session",
32694
+ capScope: "system",
32695
+ addonId: null,
32696
+ access: "create"
32697
+ },
32698
+ "terminalSession.deleteInstance": {
32699
+ capName: "terminal-session",
32700
+ capScope: "system",
32701
+ addonId: null,
32702
+ access: "delete"
32703
+ },
32704
+ "terminalSession.listInstances": {
32705
+ capName: "terminal-session",
32706
+ capScope: "system",
32707
+ addonId: null,
32708
+ access: "view"
32709
+ },
32710
+ "terminalSession.listLegacyCameras": {
32711
+ capName: "terminal-session",
32712
+ capScope: "system",
32713
+ addonId: null,
32714
+ access: "view"
32715
+ },
32407
32716
  "terminalSession.listProfiles": {
32408
32717
  capName: "terminal-session",
32409
32718
  capScope: "system",
@@ -32422,12 +32731,30 @@ Object.freeze({
32422
32731
  addonId: null,
32423
32732
  access: "create"
32424
32733
  },
32734
+ "terminalSession.pullOutput": {
32735
+ capName: "terminal-session",
32736
+ capScope: "system",
32737
+ addonId: null,
32738
+ access: "create"
32739
+ },
32425
32740
  "terminalSession.resize": {
32426
32741
  capName: "terminal-session",
32427
32742
  capScope: "system",
32428
32743
  addonId: null,
32429
32744
  access: "create"
32430
32745
  },
32746
+ "terminalSession.setInstanceEnabled": {
32747
+ capName: "terminal-session",
32748
+ capScope: "system",
32749
+ addonId: null,
32750
+ access: "create"
32751
+ },
32752
+ "terminalSession.writeInput": {
32753
+ capName: "terminal-session",
32754
+ capScope: "system",
32755
+ addonId: null,
32756
+ access: "create"
32757
+ },
32431
32758
  "toast.onToast": {
32432
32759
  capName: "toast",
32433
32760
  capScope: "system",
package/dist/addon.mjs CHANGED
@@ -7597,12 +7597,11 @@ var RecordingConfigSchema = object({
7597
7597
  /**
7598
7598
  * Entity-relocation job state (storage entity-routing spec, Phase 4).
7599
7599
  *
7600
- * One shape shared by the recorder's `relocateFootage` (segments) and
7601
- * pipeline-analytics' `relocateMedia` (event media blobs) so the admin Data
7602
- * page renders both movers with one component. Jobs are in-RAM (a restart
7603
- * forgets them re-running is safe by construction: copy-if-absent, delete
7604
- * after verify) and each completed/failed run also lands one durable ops-log
7605
- * row on the owning addon's surface.
7600
+ * One shape shared by the recorder and pipeline-analytics internal movers.
7601
+ * The public admin surface is `storage-migration`; child jobs remain in RAM
7602
+ * because copy-if-absent, verify, delete and index/row repoint are resumable.
7603
+ * Each completed/failed run also lands one durable ops-log row on its owning
7604
+ * addon surface.
7606
7605
  */
7607
7606
  var RelocateJobStateSchema = _enum([
7608
7607
  "running",
@@ -7629,19 +7628,100 @@ var RelocateJobSchema = object({
7629
7628
  finishedAt: number().nullable(),
7630
7629
  error: string().nullable()
7631
7630
  });
7631
+ /** Profile-derived footage selection used only by the migration coordinator:
7632
+ * `recordings` owns high+mid; `recordingsLow` owns low. */
7633
+ var RelocateFootageClassSchema = _enum(["recordings", "recordingsLow"]);
7632
7634
  var RelocateFootageInputSchema = object({
7633
- deviceId: number().optional(),
7634
7635
  fromLocationId: string(),
7635
7636
  toLocationId: string(),
7636
7637
  entities: array(_enum(["segments"])).optional(),
7638
+ /** Limits relocation to the logical profile class. Omit only for the
7639
+ * pre-orchestration compatibility path. */
7640
+ footageClass: RelocateFootageClassSchema.optional(),
7637
7641
  /** Copy throttle in MB/s (default 40) — the drain is a background chore,
7638
7642
  * never allowed to starve live writers. */
7639
7643
  throttleMbps: number().min(1).max(1e3).optional()
7640
7644
  });
7641
- var RelocateMediaInputSchema = object({
7642
- deviceId: number().optional(),
7645
+ /** Internal, lease-scoped participant operation. It is intentionally separate
7646
+ * from persistent recording settings: a migration never changes
7647
+ * `RecordingConfig.enabled` or camera wrapper bindings. */
7648
+ var StorageMigrationLeaseInputSchema = object({ leaseId: string().min(1) });
7649
+ var StorageMigrationFootageMoveInputSchema = RelocateFootageInputSchema.extend({ leaseId: string().min(1) });
7650
+ var StorageMigrationMediaMoveInputSchema = object({
7643
7651
  toLocationId: string(),
7644
7652
  throttleMbps: number().min(1).max(1e3).optional()
7653
+ }).extend({ leaseId: string().min(1) });
7654
+ /** The independently selectable logical storage classes. `recordings`
7655
+ * encompasses the high and mid segment profiles; `recordingsLow` is low
7656
+ * segments; `eventMedia` is post-analysis blobs. */
7657
+ var StorageMigrationClassSchema = _enum([
7658
+ "recordings",
7659
+ "recordingsLow",
7660
+ "eventMedia"
7661
+ ]);
7662
+ /** A destination is always an existing, fully-qualified location id. The
7663
+ * migration API intentionally never changes a source location's `basePath`:
7664
+ * callers create a new `<type>:<slug>` location, then select it here. */
7665
+ var StorageMigrationDestinationsSchema = object({
7666
+ recordings: string().min(1).optional(),
7667
+ recordingsLow: string().min(1).optional(),
7668
+ eventMedia: string().min(1).optional()
7669
+ }).refine((value) => Object.keys(value).length > 0, { message: "select at least one storage class" });
7670
+ /** Shared input for planning and starting an orchestrated storage migration. */
7671
+ var StorageMigrationInputSchema = object({
7672
+ destinations: StorageMigrationDestinationsSchema,
7673
+ throttleMbps: number().min(1).max(1e3).optional()
7674
+ });
7675
+ /** The durable coordinator state machine. The only phase that changes default
7676
+ * locations is `repointing`, after every selected mover has completed and been
7677
+ * verified. */
7678
+ var StorageMigrationPhaseSchema = _enum([
7679
+ "planning",
7680
+ "pausing",
7681
+ "moving",
7682
+ "verifying",
7683
+ "repointing",
7684
+ "refreshing",
7685
+ "resuming",
7686
+ "done",
7687
+ "failed",
7688
+ "cancelled"
7689
+ ]);
7690
+ var StorageMigrationParticipantSchema = _enum([
7691
+ "pipeline",
7692
+ "recorder",
7693
+ "analytics"
7694
+ ]);
7695
+ var StorageMigrationMoveSchema = object({
7696
+ storageClass: StorageMigrationClassSchema,
7697
+ fromLocationId: string(),
7698
+ toLocationId: string(),
7699
+ moverJobId: string().nullable(),
7700
+ state: RelocateJobStateSchema.nullable(),
7701
+ error: string().nullable()
7702
+ });
7703
+ var StorageMigrationJobSchema = object({
7704
+ jobId: string(),
7705
+ phase: StorageMigrationPhaseSchema,
7706
+ destinations: StorageMigrationDestinationsSchema,
7707
+ throttleMbps: number(),
7708
+ moves: array(StorageMigrationMoveSchema),
7709
+ pauseLeaseId: string().nullable(),
7710
+ pausedParticipants: array(StorageMigrationParticipantSchema),
7711
+ repointed: boolean(),
7712
+ cancelRequested: boolean(),
7713
+ startedAt: number(),
7714
+ updatedAt: number(),
7715
+ finishedAt: number().nullable(),
7716
+ error: string().nullable()
7717
+ });
7718
+ var StorageMigrationPlanSchema = object({
7719
+ destinations: StorageMigrationDestinationsSchema,
7720
+ moves: array(object({
7721
+ storageClass: StorageMigrationClassSchema,
7722
+ fromLocationId: string(),
7723
+ toLocationId: string()
7724
+ }))
7645
7725
  });
7646
7726
  /**
7647
7727
  * `StorageLocationType` — an addon-declared id that identifies the *kind* of
@@ -16295,13 +16375,19 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
16295
16375
  }), method(object({ deviceId: number() }), EventPruneCountsSchema, {
16296
16376
  kind: "mutation",
16297
16377
  auth: "admin"
16298
- }), method(RelocateMediaInputSchema, object({ jobId: string() }), {
16378
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
16299
16379
  kind: "mutation",
16300
16380
  auth: "admin"
16301
- }), method(object({}), array(RelocateJobSchema).readonly(), {
16302
- kind: "query",
16381
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
16382
+ kind: "mutation",
16303
16383
  auth: "admin"
16304
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
16384
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
16385
+ kind: "mutation",
16386
+ auth: "admin"
16387
+ }), method(StorageMigrationMediaMoveInputSchema, object({ jobId: string() }), {
16388
+ kind: "mutation",
16389
+ auth: "admin"
16390
+ }), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
16305
16391
  kind: "mutation",
16306
16392
  auth: "admin"
16307
16393
  }), method(OpsLogQueryInputSchema, array(OpsLogEntrySchema).readonly(), {
@@ -17831,7 +17917,13 @@ var NodeInferenceDevicesSchema = object({
17831
17917
  reachable: boolean(),
17832
17918
  devices: array(NodeInferenceDeviceSchema).readonly()
17833
17919
  });
17834
- method(object({
17920
+ method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
17921
+ kind: "mutation",
17922
+ auth: "admin"
17923
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
17924
+ kind: "mutation",
17925
+ auth: "admin"
17926
+ }), method(object({
17835
17927
  deviceId: number(),
17836
17928
  agentNodeId: string()
17837
17929
  }), object({ success: literal(true) }), {
@@ -18596,6 +18688,13 @@ method(object({ locationId: string() }), EvictableUsageSchema), method(object({
18596
18688
  locationId: string(),
18597
18689
  targetBytes: number().int().positive()
18598
18690
  }), EvictResultSchema, { kind: "mutation" });
18691
+ method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin" }), method(StorageMigrationInputSchema, object({ jobId: string() }), {
18692
+ kind: "mutation",
18693
+ auth: "admin"
18694
+ }), method(object({ jobId: string().optional() }), StorageMigrationJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
18695
+ kind: "mutation",
18696
+ auth: "admin"
18697
+ });
18599
18698
  var ProviderInfoSchema = discriminatedUnion("shouldSaveDiskSpace", [object({
18600
18699
  providerId: string().min(1),
18601
18700
  displayName: string().min(1),
@@ -18699,7 +18798,67 @@ var TerminalProfileInfoSchema = object({
18699
18798
  label: string(),
18700
18799
  description: string().optional()
18701
18800
  });
18702
- method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
18801
+ /**
18802
+ * A durable operator-created Terminal instance. Profiles are templates; only
18803
+ * an instance declares a camera.
18804
+ */
18805
+ var TerminalInstanceInfoSchema = object({
18806
+ instanceId: string(),
18807
+ cameraStableId: string(),
18808
+ nodeId: string(),
18809
+ profileId: string(),
18810
+ profileLabel: string(),
18811
+ name: string(),
18812
+ enabled: boolean()
18813
+ });
18814
+ var TerminalLegacyCameraSchema = object({
18815
+ stableId: string(),
18816
+ nodeId: string(),
18817
+ profileId: string(),
18818
+ profileLabel: string(),
18819
+ name: string(),
18820
+ /** Only legacy monitor cameras can retain their historic stable identity. */
18821
+ adoptable: boolean()
18822
+ });
18823
+ var TerminalOutputEventSchema = discriminatedUnion("kind", [object({
18824
+ seq: number().int().positive(),
18825
+ kind: literal("data"),
18826
+ data: string()
18827
+ }), object({
18828
+ seq: number().int().positive(),
18829
+ kind: literal("exit"),
18830
+ exitCode: number().int(),
18831
+ signal: number().int().optional()
18832
+ })]);
18833
+ var TerminalOutputBatchSchema = object({
18834
+ cursor: number().int().nonnegative(),
18835
+ reset: boolean(),
18836
+ snapshot: string().optional(),
18837
+ events: array(TerminalOutputEventSchema).readonly()
18838
+ });
18839
+ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalInstanceInfoSchema).readonly(), { auth: "admin" }), method(object({
18840
+ targetNodeId: string().min(1),
18841
+ profileId: string().min(1),
18842
+ name: string().trim().min(1).max(160).optional()
18843
+ }), TerminalInstanceInfoSchema, {
18844
+ kind: "mutation",
18845
+ auth: "admin"
18846
+ }), method(object({ instanceId: string().min(1) }), _void(), {
18847
+ kind: "mutation",
18848
+ auth: "admin"
18849
+ }), method(object({
18850
+ instanceId: string().min(1),
18851
+ enabled: boolean()
18852
+ }), TerminalInstanceInfoSchema, {
18853
+ kind: "mutation",
18854
+ auth: "admin"
18855
+ }), method(_void(), array(TerminalLegacyCameraSchema).readonly(), { auth: "admin" }), method(object({
18856
+ stableId: string().min(1),
18857
+ name: string().trim().min(1).max(160).optional()
18858
+ }), TerminalInstanceInfoSchema, {
18859
+ kind: "mutation",
18860
+ auth: "admin"
18861
+ }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
18703
18862
  profileId: string(),
18704
18863
  cols: number().int().positive(),
18705
18864
  rows: number().int().positive()
@@ -18713,6 +18872,26 @@ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }),
18713
18872
  }), _void(), {
18714
18873
  kind: "mutation",
18715
18874
  auth: "admin"
18875
+ }), method(object({
18876
+ sessionId: string(),
18877
+ afterSeq: number().int().nonnegative(),
18878
+ waitMs: number().int().min(0).max(2e3).default(0),
18879
+ /**
18880
+ * Wait when a just-opened session has no output yet. Kept opt-in so a
18881
+ * browser's initial repaint remains immediate; the camera snapshot
18882
+ * relay uses it to avoid encoding a blank startup frame.
18883
+ */
18884
+ waitForOutput: boolean().optional()
18885
+ }), TerminalOutputBatchSchema, {
18886
+ kind: "mutation",
18887
+ auth: "admin",
18888
+ timeoutMs: 15e3
18889
+ }), method(object({
18890
+ sessionId: string(),
18891
+ data: string().max(64 * 1024)
18892
+ }), _void(), {
18893
+ kind: "mutation",
18894
+ auth: "admin"
18716
18895
  }), method(object({ sessionId: string() }), _void(), {
18717
18896
  kind: "mutation",
18718
18897
  auth: "admin"
@@ -21208,6 +21387,7 @@ var FaceInfoSchema = object({
21208
21387
  var FaceFilterEnum = _enum([
21209
21388
  "unassigned",
21210
21389
  "recognized",
21390
+ "identified",
21211
21391
  "all"
21212
21392
  ]);
21213
21393
  var MediaFileLiteSchema$1 = object({
@@ -21236,6 +21416,8 @@ method(_void(), array(IdentitySchema).readonly()), method(object({ name: string(
21236
21416
  kind: "mutation",
21237
21417
  auth: "admin"
21238
21418
  }), method(object({
21419
+ /** Restrict to one camera. Absent keeps the cluster-wide gallery view. */
21420
+ deviceId: number().int().optional(),
21239
21421
  limit: number().int().positive().optional(),
21240
21422
  filter: FaceFilterEnum.optional(),
21241
21423
  /**
@@ -23465,6 +23647,10 @@ var OsdSourceSchema = discriminatedUnion("kind", [
23465
23647
  capName: string().min(1).max(64),
23466
23648
  /** Dot path inside the slice, e.g. `detected`, `value`, `mode`. */
23467
23649
  valuePath: string().min(1).max(64)
23650
+ }),
23651
+ object({
23652
+ kind: literal("latest-recognition"),
23653
+ recognition: _enum(["person", "plate"])
23468
23654
  })
23469
23655
  ]);
23470
23656
  var OsdSlotBindingSchema = object({
@@ -23570,6 +23756,15 @@ method(object({ deviceId: number().int() }), object({
23570
23756
  }), object({ success: literal(true) }), {
23571
23757
  kind: "mutation",
23572
23758
  auth: "admin"
23759
+ }), method(object({
23760
+ sourceDeviceId: number().int(),
23761
+ targetDeviceId: number().int()
23762
+ }), object({
23763
+ copied: number().int().nonnegative(),
23764
+ skipped: number().int().nonnegative()
23765
+ }), {
23766
+ kind: "mutation",
23767
+ auth: "admin"
23573
23768
  }), method(object({
23574
23769
  deviceId: number().int(),
23575
23770
  slotId: string().min(1),
@@ -24667,13 +24862,19 @@ method(object({
24667
24862
  }), {
24668
24863
  kind: "mutation",
24669
24864
  auth: "admin"
24670
- }), method(RelocateFootageInputSchema, object({ jobId: string() }), {
24865
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
24671
24866
  kind: "mutation",
24672
24867
  auth: "admin"
24673
- }), method(object({}), array(RelocateJobSchema).readonly(), {
24674
- kind: "query",
24868
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
24869
+ kind: "mutation",
24675
24870
  auth: "admin"
24676
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
24871
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
24872
+ kind: "mutation",
24873
+ auth: "admin"
24874
+ }), method(StorageMigrationFootageMoveInputSchema, object({ jobId: string() }), {
24875
+ kind: "mutation",
24876
+ auth: "admin"
24877
+ }), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
24677
24878
  kind: "mutation",
24678
24879
  auth: "admin"
24679
24880
  });
@@ -30358,6 +30559,12 @@ Object.freeze({
30358
30559
  addonId: null,
30359
30560
  access: "delete"
30360
30561
  },
30562
+ "osdManager.copyDeviceConfiguration": {
30563
+ capName: "osd-manager",
30564
+ capScope: "system",
30565
+ addonId: null,
30566
+ access: "create"
30567
+ },
30361
30568
  "osdManager.getConditionSupport": {
30362
30569
  capName: "osd-manager",
30363
30570
  capScope: "system",
@@ -30454,7 +30661,7 @@ Object.freeze({
30454
30661
  addonId: null,
30455
30662
  access: "create"
30456
30663
  },
30457
- "pipelineAnalytics.cancelMediaRelocate": {
30664
+ "pipelineAnalytics.cancelStorageMigrationMove": {
30458
30665
  capName: "pipeline-analytics",
30459
30666
  capScope: "device",
30460
30667
  addonId: null,
@@ -30526,12 +30733,6 @@ Object.freeze({
30526
30733
  addonId: null,
30527
30734
  access: "view"
30528
30735
  },
30529
- "pipelineAnalytics.getMediaRelocateStatus": {
30530
- capName: "pipeline-analytics",
30531
- capScope: "device",
30532
- addonId: null,
30533
- access: "view"
30534
- },
30535
30736
  "pipelineAnalytics.getMotionEvents": {
30536
30737
  capName: "pipeline-analytics",
30537
30738
  capScope: "device",
@@ -30568,6 +30769,12 @@ Object.freeze({
30568
30769
  addonId: null,
30569
30770
  access: "view"
30570
30771
  },
30772
+ "pipelineAnalytics.getStorageMigrationMoveStatus": {
30773
+ capName: "pipeline-analytics",
30774
+ capScope: "device",
30775
+ addonId: null,
30776
+ access: "view"
30777
+ },
30571
30778
  "pipelineAnalytics.getTrack": {
30572
30779
  capName: "pipeline-analytics",
30573
30780
  capScope: "device",
@@ -30646,6 +30853,12 @@ Object.freeze({
30646
30853
  addonId: null,
30647
30854
  access: "view"
30648
30855
  },
30856
+ "pipelineAnalytics.pauseForStorageMigration": {
30857
+ capName: "pipeline-analytics",
30858
+ capScope: "device",
30859
+ addonId: null,
30860
+ access: "create"
30861
+ },
30649
30862
  "pipelineAnalytics.proposeRetrainAnnotations": {
30650
30863
  capName: "pipeline-analytics",
30651
30864
  capScope: "device",
@@ -30676,7 +30889,7 @@ Object.freeze({
30676
30889
  addonId: null,
30677
30890
  access: "create"
30678
30891
  },
30679
- "pipelineAnalytics.relocateMedia": {
30892
+ "pipelineAnalytics.refreshStorageLocationsForMigration": {
30680
30893
  capName: "pipeline-analytics",
30681
30894
  capScope: "device",
30682
30895
  addonId: null,
@@ -30688,6 +30901,12 @@ Object.freeze({
30688
30901
  addonId: null,
30689
30902
  access: "create"
30690
30903
  },
30904
+ "pipelineAnalytics.resumeForStorageMigration": {
30905
+ capName: "pipeline-analytics",
30906
+ capScope: "device",
30907
+ addonId: null,
30908
+ access: "create"
30909
+ },
30691
30910
  "pipelineAnalytics.saveRetrainAnnotations": {
30692
30911
  capName: "pipeline-analytics",
30693
30912
  capScope: "device",
@@ -30712,6 +30931,12 @@ Object.freeze({
30712
30931
  addonId: null,
30713
30932
  access: "create"
30714
30933
  },
30934
+ "pipelineAnalytics.startStorageMigrationMove": {
30935
+ capName: "pipeline-analytics",
30936
+ capScope: "device",
30937
+ addonId: null,
30938
+ access: "create"
30939
+ },
30715
30940
  "pipelineAnalytics.wipeAllAnalytics": {
30716
30941
  capName: "pipeline-analytics",
30717
30942
  capScope: "device",
@@ -31078,6 +31303,12 @@ Object.freeze({
31078
31303
  addonId: null,
31079
31304
  access: "view"
31080
31305
  },
31306
+ "pipelineOrchestrator.pauseForStorageMigration": {
31307
+ capName: "pipeline-orchestrator",
31308
+ capScope: "system",
31309
+ addonId: null,
31310
+ access: "create"
31311
+ },
31081
31312
  "pipelineOrchestrator.rebalance": {
31082
31313
  capName: "pipeline-orchestrator",
31083
31314
  capScope: "system",
@@ -31102,6 +31333,12 @@ Object.freeze({
31102
31333
  addonId: null,
31103
31334
  access: "view"
31104
31335
  },
31336
+ "pipelineOrchestrator.resumeForStorageMigration": {
31337
+ capName: "pipeline-orchestrator",
31338
+ capScope: "system",
31339
+ addonId: null,
31340
+ access: "create"
31341
+ },
31105
31342
  "pipelineOrchestrator.saveTemplate": {
31106
31343
  capName: "pipeline-orchestrator",
31107
31344
  capScope: "system",
@@ -31498,7 +31735,7 @@ Object.freeze({
31498
31735
  addonId: null,
31499
31736
  access: "create"
31500
31737
  },
31501
- "recording.cancelRelocate": {
31738
+ "recording.cancelStorageMigrationMove": {
31502
31739
  capName: "recording",
31503
31740
  capScope: "system",
31504
31741
  addonId: null,
@@ -31534,7 +31771,7 @@ Object.freeze({
31534
31771
  addonId: null,
31535
31772
  access: "view"
31536
31773
  },
31537
- "recording.getRelocateStatus": {
31774
+ "recording.getStorageMigrationMoveStatus": {
31538
31775
  capName: "recording",
31539
31776
  capScope: "system",
31540
31777
  addonId: null,
@@ -31558,6 +31795,12 @@ Object.freeze({
31558
31795
  addonId: null,
31559
31796
  access: "view"
31560
31797
  },
31798
+ "recording.pauseForStorageMigration": {
31799
+ capName: "recording",
31800
+ capScope: "system",
31801
+ addonId: null,
31802
+ access: "create"
31803
+ },
31561
31804
  "recording.pruneFootage": {
31562
31805
  capName: "recording",
31563
31806
  capScope: "system",
@@ -31576,7 +31819,7 @@ Object.freeze({
31576
31819
  addonId: null,
31577
31820
  access: "view"
31578
31821
  },
31579
- "recording.relocateFootage": {
31822
+ "recording.refreshStorageLocationsForMigration": {
31580
31823
  capName: "recording",
31581
31824
  capScope: "system",
31582
31825
  addonId: null,
@@ -31600,12 +31843,24 @@ Object.freeze({
31600
31843
  addonId: null,
31601
31844
  access: "create"
31602
31845
  },
31846
+ "recording.resumeForStorageMigration": {
31847
+ capName: "recording",
31848
+ capScope: "system",
31849
+ addonId: null,
31850
+ access: "create"
31851
+ },
31603
31852
  "recording.setDeviceConfig": {
31604
31853
  capName: "recording",
31605
31854
  capScope: "system",
31606
31855
  addonId: null,
31607
31856
  access: "create"
31608
31857
  },
31858
+ "recording.startStorageMigrationMove": {
31859
+ capName: "recording",
31860
+ capScope: "system",
31861
+ addonId: null,
31862
+ access: "create"
31863
+ },
31609
31864
  "recordingExport.cancelExport": {
31610
31865
  capName: "recordingExport",
31611
31866
  capScope: "system",
@@ -31996,6 +32251,30 @@ Object.freeze({
31996
32251
  addonId: null,
31997
32252
  access: "view"
31998
32253
  },
32254
+ "storageMigration.cancel": {
32255
+ capName: "storage-migration",
32256
+ capScope: "system",
32257
+ addonId: null,
32258
+ access: "create"
32259
+ },
32260
+ "storageMigration.plan": {
32261
+ capName: "storage-migration",
32262
+ capScope: "system",
32263
+ addonId: null,
32264
+ access: "view"
32265
+ },
32266
+ "storageMigration.start": {
32267
+ capName: "storage-migration",
32268
+ capScope: "system",
32269
+ addonId: null,
32270
+ access: "create"
32271
+ },
32272
+ "storageMigration.status": {
32273
+ capName: "storage-migration",
32274
+ capScope: "system",
32275
+ addonId: null,
32276
+ access: "view"
32277
+ },
31999
32278
  "storageProvider.abortUpload": {
32000
32279
  capName: "storage-provider",
32001
32280
  capScope: "system",
@@ -32374,12 +32653,42 @@ Object.freeze({
32374
32653
  addonId: null,
32375
32654
  access: "create"
32376
32655
  },
32656
+ "terminalSession.adoptLegacyMonitor": {
32657
+ capName: "terminal-session",
32658
+ capScope: "system",
32659
+ addonId: null,
32660
+ access: "create"
32661
+ },
32377
32662
  "terminalSession.close": {
32378
32663
  capName: "terminal-session",
32379
32664
  capScope: "system",
32380
32665
  addonId: null,
32381
32666
  access: "create"
32382
32667
  },
32668
+ "terminalSession.createInstance": {
32669
+ capName: "terminal-session",
32670
+ capScope: "system",
32671
+ addonId: null,
32672
+ access: "create"
32673
+ },
32674
+ "terminalSession.deleteInstance": {
32675
+ capName: "terminal-session",
32676
+ capScope: "system",
32677
+ addonId: null,
32678
+ access: "delete"
32679
+ },
32680
+ "terminalSession.listInstances": {
32681
+ capName: "terminal-session",
32682
+ capScope: "system",
32683
+ addonId: null,
32684
+ access: "view"
32685
+ },
32686
+ "terminalSession.listLegacyCameras": {
32687
+ capName: "terminal-session",
32688
+ capScope: "system",
32689
+ addonId: null,
32690
+ access: "view"
32691
+ },
32383
32692
  "terminalSession.listProfiles": {
32384
32693
  capName: "terminal-session",
32385
32694
  capScope: "system",
@@ -32398,12 +32707,30 @@ Object.freeze({
32398
32707
  addonId: null,
32399
32708
  access: "create"
32400
32709
  },
32710
+ "terminalSession.pullOutput": {
32711
+ capName: "terminal-session",
32712
+ capScope: "system",
32713
+ addonId: null,
32714
+ access: "create"
32715
+ },
32401
32716
  "terminalSession.resize": {
32402
32717
  capName: "terminal-session",
32403
32718
  capScope: "system",
32404
32719
  addonId: null,
32405
32720
  access: "create"
32406
32721
  },
32722
+ "terminalSession.setInstanceEnabled": {
32723
+ capName: "terminal-session",
32724
+ capScope: "system",
32725
+ addonId: null,
32726
+ access: "create"
32727
+ },
32728
+ "terminalSession.writeInput": {
32729
+ capName: "terminal-session",
32730
+ capScope: "system",
32731
+ addonId: null,
32732
+ access: "create"
32733
+ },
32407
32734
  "toast.onToast": {
32408
32735
  capName: "toast",
32409
32736
  capScope: "system",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-provider-rtsp",
3
- "version": "1.2.11",
3
+ "version": "1.2.13",
4
4
  "description": "Generic RTSP camera device provider addon for CamStack",
5
5
  "keywords": [
6
6
  "camstack",