@camstack/addon-provider-wyze 0.2.11 → 0.2.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/dist/addon.js +316 -31
  2. package/dist/addon.mjs +316 -31
  3. package/package.json +1 -1
package/dist/addon.js CHANGED
@@ -7582,12 +7582,11 @@ var RecordingConfigSchema = object({
7582
7582
  /**
7583
7583
  * Entity-relocation job state (storage entity-routing spec, Phase 4).
7584
7584
  *
7585
- * One shape shared by the recorder's `relocateFootage` (segments) and
7586
- * pipeline-analytics' `relocateMedia` (event media blobs) so the admin Data
7587
- * page renders both movers with one component. Jobs are in-RAM (a restart
7588
- * forgets them re-running is safe by construction: copy-if-absent, delete
7589
- * after verify) and each completed/failed run also lands one durable ops-log
7590
- * row on the owning addon's surface.
7585
+ * One shape shared by the recorder and pipeline-analytics internal movers.
7586
+ * The public admin surface is `storage-migration`; child jobs remain in RAM
7587
+ * because copy-if-absent, verify, delete and index/row repoint are resumable.
7588
+ * Each completed/failed run also lands one durable ops-log row on its owning
7589
+ * addon surface.
7591
7590
  */
7592
7591
  var RelocateJobStateSchema = _enum([
7593
7592
  "running",
@@ -7614,19 +7613,100 @@ var RelocateJobSchema = object({
7614
7613
  finishedAt: number().nullable(),
7615
7614
  error: string().nullable()
7616
7615
  });
7616
+ /** Profile-derived footage selection used only by the migration coordinator:
7617
+ * `recordings` owns high+mid; `recordingsLow` owns low. */
7618
+ var RelocateFootageClassSchema = _enum(["recordings", "recordingsLow"]);
7617
7619
  var RelocateFootageInputSchema = object({
7618
- deviceId: number().optional(),
7619
7620
  fromLocationId: string(),
7620
7621
  toLocationId: string(),
7621
7622
  entities: array(_enum(["segments"])).optional(),
7623
+ /** Limits relocation to the logical profile class. Omit only for the
7624
+ * pre-orchestration compatibility path. */
7625
+ footageClass: RelocateFootageClassSchema.optional(),
7622
7626
  /** Copy throttle in MB/s (default 40) — the drain is a background chore,
7623
7627
  * never allowed to starve live writers. */
7624
7628
  throttleMbps: number().min(1).max(1e3).optional()
7625
7629
  });
7626
- var RelocateMediaInputSchema = object({
7627
- deviceId: number().optional(),
7630
+ /** Internal, lease-scoped participant operation. It is intentionally separate
7631
+ * from persistent recording settings: a migration never changes
7632
+ * `RecordingConfig.enabled` or camera wrapper bindings. */
7633
+ var StorageMigrationLeaseInputSchema = object({ leaseId: string().min(1) });
7634
+ var StorageMigrationFootageMoveInputSchema = RelocateFootageInputSchema.extend({ leaseId: string().min(1) });
7635
+ var StorageMigrationMediaMoveInputSchema = object({
7628
7636
  toLocationId: string(),
7629
7637
  throttleMbps: number().min(1).max(1e3).optional()
7638
+ }).extend({ leaseId: string().min(1) });
7639
+ /** The independently selectable logical storage classes. `recordings`
7640
+ * encompasses the high and mid segment profiles; `recordingsLow` is low
7641
+ * segments; `eventMedia` is post-analysis blobs. */
7642
+ var StorageMigrationClassSchema = _enum([
7643
+ "recordings",
7644
+ "recordingsLow",
7645
+ "eventMedia"
7646
+ ]);
7647
+ /** A destination is always an existing, fully-qualified location id. The
7648
+ * migration API intentionally never changes a source location's `basePath`:
7649
+ * callers create a new `<type>:<slug>` location, then select it here. */
7650
+ var StorageMigrationDestinationsSchema = object({
7651
+ recordings: string().min(1).optional(),
7652
+ recordingsLow: string().min(1).optional(),
7653
+ eventMedia: string().min(1).optional()
7654
+ }).refine((value) => Object.keys(value).length > 0, { message: "select at least one storage class" });
7655
+ /** Shared input for planning and starting an orchestrated storage migration. */
7656
+ var StorageMigrationInputSchema = object({
7657
+ destinations: StorageMigrationDestinationsSchema,
7658
+ throttleMbps: number().min(1).max(1e3).optional()
7659
+ });
7660
+ /** The durable coordinator state machine. The only phase that changes default
7661
+ * locations is `repointing`, after every selected mover has completed and been
7662
+ * verified. */
7663
+ var StorageMigrationPhaseSchema = _enum([
7664
+ "planning",
7665
+ "pausing",
7666
+ "moving",
7667
+ "verifying",
7668
+ "repointing",
7669
+ "refreshing",
7670
+ "resuming",
7671
+ "done",
7672
+ "failed",
7673
+ "cancelled"
7674
+ ]);
7675
+ var StorageMigrationParticipantSchema = _enum([
7676
+ "pipeline",
7677
+ "recorder",
7678
+ "analytics"
7679
+ ]);
7680
+ var StorageMigrationMoveSchema = object({
7681
+ storageClass: StorageMigrationClassSchema,
7682
+ fromLocationId: string(),
7683
+ toLocationId: string(),
7684
+ moverJobId: string().nullable(),
7685
+ state: RelocateJobStateSchema.nullable(),
7686
+ error: string().nullable()
7687
+ });
7688
+ var StorageMigrationJobSchema = object({
7689
+ jobId: string(),
7690
+ phase: StorageMigrationPhaseSchema,
7691
+ destinations: StorageMigrationDestinationsSchema,
7692
+ throttleMbps: number(),
7693
+ moves: array(StorageMigrationMoveSchema),
7694
+ pauseLeaseId: string().nullable(),
7695
+ pausedParticipants: array(StorageMigrationParticipantSchema),
7696
+ repointed: boolean(),
7697
+ cancelRequested: boolean(),
7698
+ startedAt: number(),
7699
+ updatedAt: number(),
7700
+ finishedAt: number().nullable(),
7701
+ error: string().nullable()
7702
+ });
7703
+ var StorageMigrationPlanSchema = object({
7704
+ destinations: StorageMigrationDestinationsSchema,
7705
+ moves: array(object({
7706
+ storageClass: StorageMigrationClassSchema,
7707
+ fromLocationId: string(),
7708
+ toLocationId: string()
7709
+ }))
7630
7710
  });
7631
7711
  /**
7632
7712
  * `StorageLocationType` — an addon-declared id that identifies the *kind* of
@@ -16297,13 +16377,19 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
16297
16377
  }), method(object({ deviceId: number() }), EventPruneCountsSchema, {
16298
16378
  kind: "mutation",
16299
16379
  auth: "admin"
16300
- }), method(RelocateMediaInputSchema, object({ jobId: string() }), {
16380
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
16301
16381
  kind: "mutation",
16302
16382
  auth: "admin"
16303
- }), method(object({}), array(RelocateJobSchema).readonly(), {
16304
- kind: "query",
16383
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
16384
+ kind: "mutation",
16385
+ auth: "admin"
16386
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
16387
+ kind: "mutation",
16388
+ auth: "admin"
16389
+ }), method(StorageMigrationMediaMoveInputSchema, object({ jobId: string() }), {
16390
+ kind: "mutation",
16305
16391
  auth: "admin"
16306
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
16392
+ }), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
16307
16393
  kind: "mutation",
16308
16394
  auth: "admin"
16309
16395
  }), method(OpsLogQueryInputSchema, array(OpsLogEntrySchema).readonly(), {
@@ -17833,7 +17919,13 @@ var NodeInferenceDevicesSchema = object({
17833
17919
  reachable: boolean(),
17834
17920
  devices: array(NodeInferenceDeviceSchema).readonly()
17835
17921
  });
17836
- method(object({
17922
+ method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
17923
+ kind: "mutation",
17924
+ auth: "admin"
17925
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
17926
+ kind: "mutation",
17927
+ auth: "admin"
17928
+ }), method(object({
17837
17929
  deviceId: number(),
17838
17930
  agentNodeId: string()
17839
17931
  }), object({ success: literal(true) }), {
@@ -18598,6 +18690,13 @@ method(object({ locationId: string() }), EvictableUsageSchema), method(object({
18598
18690
  locationId: string(),
18599
18691
  targetBytes: number().int().positive()
18600
18692
  }), EvictResultSchema, { kind: "mutation" });
18693
+ method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin" }), method(StorageMigrationInputSchema, object({ jobId: string() }), {
18694
+ kind: "mutation",
18695
+ auth: "admin"
18696
+ }), method(object({ jobId: string().optional() }), StorageMigrationJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
18697
+ kind: "mutation",
18698
+ auth: "admin"
18699
+ });
18601
18700
  var ProviderInfoSchema = discriminatedUnion("shouldSaveDiskSpace", [object({
18602
18701
  providerId: string().min(1),
18603
18702
  displayName: string().min(1),
@@ -18701,6 +18800,28 @@ var TerminalProfileInfoSchema = object({
18701
18800
  label: string(),
18702
18801
  description: string().optional()
18703
18802
  });
18803
+ /**
18804
+ * A durable operator-created Terminal instance. Profiles are templates; only
18805
+ * an instance declares a camera.
18806
+ */
18807
+ var TerminalInstanceInfoSchema = object({
18808
+ instanceId: string(),
18809
+ cameraStableId: string(),
18810
+ nodeId: string(),
18811
+ profileId: string(),
18812
+ profileLabel: string(),
18813
+ name: string(),
18814
+ enabled: boolean()
18815
+ });
18816
+ var TerminalLegacyCameraSchema = object({
18817
+ stableId: string(),
18818
+ nodeId: string(),
18819
+ profileId: string(),
18820
+ profileLabel: string(),
18821
+ name: string(),
18822
+ /** Only legacy monitor cameras can retain their historic stable identity. */
18823
+ adoptable: boolean()
18824
+ });
18704
18825
  var TerminalOutputEventSchema = discriminatedUnion("kind", [object({
18705
18826
  seq: number().int().positive(),
18706
18827
  kind: literal("data"),
@@ -18717,7 +18838,29 @@ var TerminalOutputBatchSchema = object({
18717
18838
  snapshot: string().optional(),
18718
18839
  events: array(TerminalOutputEventSchema).readonly()
18719
18840
  });
18720
- method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
18841
+ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalInstanceInfoSchema).readonly(), { auth: "admin" }), method(object({
18842
+ targetNodeId: string().min(1),
18843
+ profileId: string().min(1),
18844
+ name: string().trim().min(1).max(160).optional()
18845
+ }), TerminalInstanceInfoSchema, {
18846
+ kind: "mutation",
18847
+ auth: "admin"
18848
+ }), method(object({ instanceId: string().min(1) }), _void(), {
18849
+ kind: "mutation",
18850
+ auth: "admin"
18851
+ }), method(object({
18852
+ instanceId: string().min(1),
18853
+ enabled: boolean()
18854
+ }), TerminalInstanceInfoSchema, {
18855
+ kind: "mutation",
18856
+ auth: "admin"
18857
+ }), method(_void(), array(TerminalLegacyCameraSchema).readonly(), { auth: "admin" }), method(object({
18858
+ stableId: string().min(1),
18859
+ name: string().trim().min(1).max(160).optional()
18860
+ }), TerminalInstanceInfoSchema, {
18861
+ kind: "mutation",
18862
+ auth: "admin"
18863
+ }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
18721
18864
  profileId: string(),
18722
18865
  cols: number().int().positive(),
18723
18866
  rows: number().int().positive()
@@ -18734,7 +18877,13 @@ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }),
18734
18877
  }), method(object({
18735
18878
  sessionId: string(),
18736
18879
  afterSeq: number().int().nonnegative(),
18737
- waitMs: number().int().min(0).max(2e3).default(0)
18880
+ waitMs: number().int().min(0).max(2e3).default(0),
18881
+ /**
18882
+ * Wait when a just-opened session has no output yet. Kept opt-in so a
18883
+ * browser's initial repaint remains immediate; the camera snapshot
18884
+ * relay uses it to avoid encoding a blank startup frame.
18885
+ */
18886
+ waitForOutput: boolean().optional()
18738
18887
  }), TerminalOutputBatchSchema, {
18739
18888
  kind: "mutation",
18740
18889
  auth: "admin",
@@ -21232,6 +21381,7 @@ var FaceInfoSchema = object({
21232
21381
  var FaceFilterEnum = _enum([
21233
21382
  "unassigned",
21234
21383
  "recognized",
21384
+ "identified",
21235
21385
  "all"
21236
21386
  ]);
21237
21387
  var MediaFileLiteSchema$1 = object({
@@ -21260,6 +21410,8 @@ method(_void(), array(IdentitySchema).readonly()), method(object({ name: string(
21260
21410
  kind: "mutation",
21261
21411
  auth: "admin"
21262
21412
  }), method(object({
21413
+ /** Restrict to one camera. Absent keeps the cluster-wide gallery view. */
21414
+ deviceId: number().int().optional(),
21263
21415
  limit: number().int().positive().optional(),
21264
21416
  filter: FaceFilterEnum.optional(),
21265
21417
  /**
@@ -23540,6 +23692,10 @@ var OsdSourceSchema = discriminatedUnion("kind", [
23540
23692
  capName: string().min(1).max(64),
23541
23693
  /** Dot path inside the slice, e.g. `detected`, `value`, `mode`. */
23542
23694
  valuePath: string().min(1).max(64)
23695
+ }),
23696
+ object({
23697
+ kind: literal("latest-recognition"),
23698
+ recognition: _enum(["person", "plate"])
23543
23699
  })
23544
23700
  ]);
23545
23701
  var OsdSlotBindingSchema = object({
@@ -23645,6 +23801,15 @@ method(object({ deviceId: number().int() }), object({
23645
23801
  }), object({ success: literal(true) }), {
23646
23802
  kind: "mutation",
23647
23803
  auth: "admin"
23804
+ }), method(object({
23805
+ sourceDeviceId: number().int(),
23806
+ targetDeviceId: number().int()
23807
+ }), object({
23808
+ copied: number().int().nonnegative(),
23809
+ skipped: number().int().nonnegative()
23810
+ }), {
23811
+ kind: "mutation",
23812
+ auth: "admin"
23648
23813
  }), method(object({
23649
23814
  deviceId: number().int(),
23650
23815
  slotId: string().min(1),
@@ -24742,13 +24907,19 @@ method(object({
24742
24907
  }), {
24743
24908
  kind: "mutation",
24744
24909
  auth: "admin"
24745
- }), method(RelocateFootageInputSchema, object({ jobId: string() }), {
24910
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
24746
24911
  kind: "mutation",
24747
24912
  auth: "admin"
24748
- }), method(object({}), array(RelocateJobSchema).readonly(), {
24749
- kind: "query",
24913
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
24914
+ kind: "mutation",
24750
24915
  auth: "admin"
24751
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
24916
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
24917
+ kind: "mutation",
24918
+ auth: "admin"
24919
+ }), method(StorageMigrationFootageMoveInputSchema, object({ jobId: string() }), {
24920
+ kind: "mutation",
24921
+ auth: "admin"
24922
+ }), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
24752
24923
  kind: "mutation",
24753
24924
  auth: "admin"
24754
24925
  });
@@ -30367,6 +30538,12 @@ Object.freeze({
30367
30538
  addonId: null,
30368
30539
  access: "delete"
30369
30540
  },
30541
+ "osdManager.copyDeviceConfiguration": {
30542
+ capName: "osd-manager",
30543
+ capScope: "system",
30544
+ addonId: null,
30545
+ access: "create"
30546
+ },
30370
30547
  "osdManager.getConditionSupport": {
30371
30548
  capName: "osd-manager",
30372
30549
  capScope: "system",
@@ -30463,7 +30640,7 @@ Object.freeze({
30463
30640
  addonId: null,
30464
30641
  access: "create"
30465
30642
  },
30466
- "pipelineAnalytics.cancelMediaRelocate": {
30643
+ "pipelineAnalytics.cancelStorageMigrationMove": {
30467
30644
  capName: "pipeline-analytics",
30468
30645
  capScope: "device",
30469
30646
  addonId: null,
@@ -30535,12 +30712,6 @@ Object.freeze({
30535
30712
  addonId: null,
30536
30713
  access: "view"
30537
30714
  },
30538
- "pipelineAnalytics.getMediaRelocateStatus": {
30539
- capName: "pipeline-analytics",
30540
- capScope: "device",
30541
- addonId: null,
30542
- access: "view"
30543
- },
30544
30715
  "pipelineAnalytics.getMotionEvents": {
30545
30716
  capName: "pipeline-analytics",
30546
30717
  capScope: "device",
@@ -30577,6 +30748,12 @@ Object.freeze({
30577
30748
  addonId: null,
30578
30749
  access: "view"
30579
30750
  },
30751
+ "pipelineAnalytics.getStorageMigrationMoveStatus": {
30752
+ capName: "pipeline-analytics",
30753
+ capScope: "device",
30754
+ addonId: null,
30755
+ access: "view"
30756
+ },
30580
30757
  "pipelineAnalytics.getTrack": {
30581
30758
  capName: "pipeline-analytics",
30582
30759
  capScope: "device",
@@ -30655,6 +30832,12 @@ Object.freeze({
30655
30832
  addonId: null,
30656
30833
  access: "view"
30657
30834
  },
30835
+ "pipelineAnalytics.pauseForStorageMigration": {
30836
+ capName: "pipeline-analytics",
30837
+ capScope: "device",
30838
+ addonId: null,
30839
+ access: "create"
30840
+ },
30658
30841
  "pipelineAnalytics.proposeRetrainAnnotations": {
30659
30842
  capName: "pipeline-analytics",
30660
30843
  capScope: "device",
@@ -30685,7 +30868,7 @@ Object.freeze({
30685
30868
  addonId: null,
30686
30869
  access: "create"
30687
30870
  },
30688
- "pipelineAnalytics.relocateMedia": {
30871
+ "pipelineAnalytics.refreshStorageLocationsForMigration": {
30689
30872
  capName: "pipeline-analytics",
30690
30873
  capScope: "device",
30691
30874
  addonId: null,
@@ -30697,6 +30880,12 @@ Object.freeze({
30697
30880
  addonId: null,
30698
30881
  access: "create"
30699
30882
  },
30883
+ "pipelineAnalytics.resumeForStorageMigration": {
30884
+ capName: "pipeline-analytics",
30885
+ capScope: "device",
30886
+ addonId: null,
30887
+ access: "create"
30888
+ },
30700
30889
  "pipelineAnalytics.saveRetrainAnnotations": {
30701
30890
  capName: "pipeline-analytics",
30702
30891
  capScope: "device",
@@ -30721,6 +30910,12 @@ Object.freeze({
30721
30910
  addonId: null,
30722
30911
  access: "create"
30723
30912
  },
30913
+ "pipelineAnalytics.startStorageMigrationMove": {
30914
+ capName: "pipeline-analytics",
30915
+ capScope: "device",
30916
+ addonId: null,
30917
+ access: "create"
30918
+ },
30724
30919
  "pipelineAnalytics.wipeAllAnalytics": {
30725
30920
  capName: "pipeline-analytics",
30726
30921
  capScope: "device",
@@ -31087,6 +31282,12 @@ Object.freeze({
31087
31282
  addonId: null,
31088
31283
  access: "view"
31089
31284
  },
31285
+ "pipelineOrchestrator.pauseForStorageMigration": {
31286
+ capName: "pipeline-orchestrator",
31287
+ capScope: "system",
31288
+ addonId: null,
31289
+ access: "create"
31290
+ },
31090
31291
  "pipelineOrchestrator.rebalance": {
31091
31292
  capName: "pipeline-orchestrator",
31092
31293
  capScope: "system",
@@ -31111,6 +31312,12 @@ Object.freeze({
31111
31312
  addonId: null,
31112
31313
  access: "view"
31113
31314
  },
31315
+ "pipelineOrchestrator.resumeForStorageMigration": {
31316
+ capName: "pipeline-orchestrator",
31317
+ capScope: "system",
31318
+ addonId: null,
31319
+ access: "create"
31320
+ },
31114
31321
  "pipelineOrchestrator.saveTemplate": {
31115
31322
  capName: "pipeline-orchestrator",
31116
31323
  capScope: "system",
@@ -31507,7 +31714,7 @@ Object.freeze({
31507
31714
  addonId: null,
31508
31715
  access: "create"
31509
31716
  },
31510
- "recording.cancelRelocate": {
31717
+ "recording.cancelStorageMigrationMove": {
31511
31718
  capName: "recording",
31512
31719
  capScope: "system",
31513
31720
  addonId: null,
@@ -31543,7 +31750,7 @@ Object.freeze({
31543
31750
  addonId: null,
31544
31751
  access: "view"
31545
31752
  },
31546
- "recording.getRelocateStatus": {
31753
+ "recording.getStorageMigrationMoveStatus": {
31547
31754
  capName: "recording",
31548
31755
  capScope: "system",
31549
31756
  addonId: null,
@@ -31567,6 +31774,12 @@ Object.freeze({
31567
31774
  addonId: null,
31568
31775
  access: "view"
31569
31776
  },
31777
+ "recording.pauseForStorageMigration": {
31778
+ capName: "recording",
31779
+ capScope: "system",
31780
+ addonId: null,
31781
+ access: "create"
31782
+ },
31570
31783
  "recording.pruneFootage": {
31571
31784
  capName: "recording",
31572
31785
  capScope: "system",
@@ -31585,7 +31798,7 @@ Object.freeze({
31585
31798
  addonId: null,
31586
31799
  access: "view"
31587
31800
  },
31588
- "recording.relocateFootage": {
31801
+ "recording.refreshStorageLocationsForMigration": {
31589
31802
  capName: "recording",
31590
31803
  capScope: "system",
31591
31804
  addonId: null,
@@ -31609,12 +31822,24 @@ Object.freeze({
31609
31822
  addonId: null,
31610
31823
  access: "create"
31611
31824
  },
31825
+ "recording.resumeForStorageMigration": {
31826
+ capName: "recording",
31827
+ capScope: "system",
31828
+ addonId: null,
31829
+ access: "create"
31830
+ },
31612
31831
  "recording.setDeviceConfig": {
31613
31832
  capName: "recording",
31614
31833
  capScope: "system",
31615
31834
  addonId: null,
31616
31835
  access: "create"
31617
31836
  },
31837
+ "recording.startStorageMigrationMove": {
31838
+ capName: "recording",
31839
+ capScope: "system",
31840
+ addonId: null,
31841
+ access: "create"
31842
+ },
31618
31843
  "recordingExport.cancelExport": {
31619
31844
  capName: "recordingExport",
31620
31845
  capScope: "system",
@@ -32005,6 +32230,30 @@ Object.freeze({
32005
32230
  addonId: null,
32006
32231
  access: "view"
32007
32232
  },
32233
+ "storageMigration.cancel": {
32234
+ capName: "storage-migration",
32235
+ capScope: "system",
32236
+ addonId: null,
32237
+ access: "create"
32238
+ },
32239
+ "storageMigration.plan": {
32240
+ capName: "storage-migration",
32241
+ capScope: "system",
32242
+ addonId: null,
32243
+ access: "view"
32244
+ },
32245
+ "storageMigration.start": {
32246
+ capName: "storage-migration",
32247
+ capScope: "system",
32248
+ addonId: null,
32249
+ access: "create"
32250
+ },
32251
+ "storageMigration.status": {
32252
+ capName: "storage-migration",
32253
+ capScope: "system",
32254
+ addonId: null,
32255
+ access: "view"
32256
+ },
32008
32257
  "storageProvider.abortUpload": {
32009
32258
  capName: "storage-provider",
32010
32259
  capScope: "system",
@@ -32383,12 +32632,42 @@ Object.freeze({
32383
32632
  addonId: null,
32384
32633
  access: "create"
32385
32634
  },
32635
+ "terminalSession.adoptLegacyMonitor": {
32636
+ capName: "terminal-session",
32637
+ capScope: "system",
32638
+ addonId: null,
32639
+ access: "create"
32640
+ },
32386
32641
  "terminalSession.close": {
32387
32642
  capName: "terminal-session",
32388
32643
  capScope: "system",
32389
32644
  addonId: null,
32390
32645
  access: "create"
32391
32646
  },
32647
+ "terminalSession.createInstance": {
32648
+ capName: "terminal-session",
32649
+ capScope: "system",
32650
+ addonId: null,
32651
+ access: "create"
32652
+ },
32653
+ "terminalSession.deleteInstance": {
32654
+ capName: "terminal-session",
32655
+ capScope: "system",
32656
+ addonId: null,
32657
+ access: "delete"
32658
+ },
32659
+ "terminalSession.listInstances": {
32660
+ capName: "terminal-session",
32661
+ capScope: "system",
32662
+ addonId: null,
32663
+ access: "view"
32664
+ },
32665
+ "terminalSession.listLegacyCameras": {
32666
+ capName: "terminal-session",
32667
+ capScope: "system",
32668
+ addonId: null,
32669
+ access: "view"
32670
+ },
32392
32671
  "terminalSession.listProfiles": {
32393
32672
  capName: "terminal-session",
32394
32673
  capScope: "system",
@@ -32419,6 +32698,12 @@ Object.freeze({
32419
32698
  addonId: null,
32420
32699
  access: "create"
32421
32700
  },
32701
+ "terminalSession.setInstanceEnabled": {
32702
+ capName: "terminal-session",
32703
+ capScope: "system",
32704
+ addonId: null,
32705
+ access: "create"
32706
+ },
32422
32707
  "terminalSession.writeInput": {
32423
32708
  capName: "terminal-session",
32424
32709
  capScope: "system",
package/dist/addon.mjs CHANGED
@@ -7561,12 +7561,11 @@ var RecordingConfigSchema = object({
7561
7561
  /**
7562
7562
  * Entity-relocation job state (storage entity-routing spec, Phase 4).
7563
7563
  *
7564
- * One shape shared by the recorder's `relocateFootage` (segments) and
7565
- * pipeline-analytics' `relocateMedia` (event media blobs) so the admin Data
7566
- * page renders both movers with one component. Jobs are in-RAM (a restart
7567
- * forgets them re-running is safe by construction: copy-if-absent, delete
7568
- * after verify) and each completed/failed run also lands one durable ops-log
7569
- * row on the owning addon's surface.
7564
+ * One shape shared by the recorder and pipeline-analytics internal movers.
7565
+ * The public admin surface is `storage-migration`; child jobs remain in RAM
7566
+ * because copy-if-absent, verify, delete and index/row repoint are resumable.
7567
+ * Each completed/failed run also lands one durable ops-log row on its owning
7568
+ * addon surface.
7570
7569
  */
7571
7570
  var RelocateJobStateSchema = _enum([
7572
7571
  "running",
@@ -7593,19 +7592,100 @@ var RelocateJobSchema = object({
7593
7592
  finishedAt: number().nullable(),
7594
7593
  error: string().nullable()
7595
7594
  });
7595
+ /** Profile-derived footage selection used only by the migration coordinator:
7596
+ * `recordings` owns high+mid; `recordingsLow` owns low. */
7597
+ var RelocateFootageClassSchema = _enum(["recordings", "recordingsLow"]);
7596
7598
  var RelocateFootageInputSchema = object({
7597
- deviceId: number().optional(),
7598
7599
  fromLocationId: string(),
7599
7600
  toLocationId: string(),
7600
7601
  entities: array(_enum(["segments"])).optional(),
7602
+ /** Limits relocation to the logical profile class. Omit only for the
7603
+ * pre-orchestration compatibility path. */
7604
+ footageClass: RelocateFootageClassSchema.optional(),
7601
7605
  /** Copy throttle in MB/s (default 40) — the drain is a background chore,
7602
7606
  * never allowed to starve live writers. */
7603
7607
  throttleMbps: number().min(1).max(1e3).optional()
7604
7608
  });
7605
- var RelocateMediaInputSchema = object({
7606
- deviceId: number().optional(),
7609
+ /** Internal, lease-scoped participant operation. It is intentionally separate
7610
+ * from persistent recording settings: a migration never changes
7611
+ * `RecordingConfig.enabled` or camera wrapper bindings. */
7612
+ var StorageMigrationLeaseInputSchema = object({ leaseId: string().min(1) });
7613
+ var StorageMigrationFootageMoveInputSchema = RelocateFootageInputSchema.extend({ leaseId: string().min(1) });
7614
+ var StorageMigrationMediaMoveInputSchema = object({
7607
7615
  toLocationId: string(),
7608
7616
  throttleMbps: number().min(1).max(1e3).optional()
7617
+ }).extend({ leaseId: string().min(1) });
7618
+ /** The independently selectable logical storage classes. `recordings`
7619
+ * encompasses the high and mid segment profiles; `recordingsLow` is low
7620
+ * segments; `eventMedia` is post-analysis blobs. */
7621
+ var StorageMigrationClassSchema = _enum([
7622
+ "recordings",
7623
+ "recordingsLow",
7624
+ "eventMedia"
7625
+ ]);
7626
+ /** A destination is always an existing, fully-qualified location id. The
7627
+ * migration API intentionally never changes a source location's `basePath`:
7628
+ * callers create a new `<type>:<slug>` location, then select it here. */
7629
+ var StorageMigrationDestinationsSchema = object({
7630
+ recordings: string().min(1).optional(),
7631
+ recordingsLow: string().min(1).optional(),
7632
+ eventMedia: string().min(1).optional()
7633
+ }).refine((value) => Object.keys(value).length > 0, { message: "select at least one storage class" });
7634
+ /** Shared input for planning and starting an orchestrated storage migration. */
7635
+ var StorageMigrationInputSchema = object({
7636
+ destinations: StorageMigrationDestinationsSchema,
7637
+ throttleMbps: number().min(1).max(1e3).optional()
7638
+ });
7639
+ /** The durable coordinator state machine. The only phase that changes default
7640
+ * locations is `repointing`, after every selected mover has completed and been
7641
+ * verified. */
7642
+ var StorageMigrationPhaseSchema = _enum([
7643
+ "planning",
7644
+ "pausing",
7645
+ "moving",
7646
+ "verifying",
7647
+ "repointing",
7648
+ "refreshing",
7649
+ "resuming",
7650
+ "done",
7651
+ "failed",
7652
+ "cancelled"
7653
+ ]);
7654
+ var StorageMigrationParticipantSchema = _enum([
7655
+ "pipeline",
7656
+ "recorder",
7657
+ "analytics"
7658
+ ]);
7659
+ var StorageMigrationMoveSchema = object({
7660
+ storageClass: StorageMigrationClassSchema,
7661
+ fromLocationId: string(),
7662
+ toLocationId: string(),
7663
+ moverJobId: string().nullable(),
7664
+ state: RelocateJobStateSchema.nullable(),
7665
+ error: string().nullable()
7666
+ });
7667
+ var StorageMigrationJobSchema = object({
7668
+ jobId: string(),
7669
+ phase: StorageMigrationPhaseSchema,
7670
+ destinations: StorageMigrationDestinationsSchema,
7671
+ throttleMbps: number(),
7672
+ moves: array(StorageMigrationMoveSchema),
7673
+ pauseLeaseId: string().nullable(),
7674
+ pausedParticipants: array(StorageMigrationParticipantSchema),
7675
+ repointed: boolean(),
7676
+ cancelRequested: boolean(),
7677
+ startedAt: number(),
7678
+ updatedAt: number(),
7679
+ finishedAt: number().nullable(),
7680
+ error: string().nullable()
7681
+ });
7682
+ var StorageMigrationPlanSchema = object({
7683
+ destinations: StorageMigrationDestinationsSchema,
7684
+ moves: array(object({
7685
+ storageClass: StorageMigrationClassSchema,
7686
+ fromLocationId: string(),
7687
+ toLocationId: string()
7688
+ }))
7609
7689
  });
7610
7690
  /**
7611
7691
  * `StorageLocationType` — an addon-declared id that identifies the *kind* of
@@ -16276,13 +16356,19 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
16276
16356
  }), method(object({ deviceId: number() }), EventPruneCountsSchema, {
16277
16357
  kind: "mutation",
16278
16358
  auth: "admin"
16279
- }), method(RelocateMediaInputSchema, object({ jobId: string() }), {
16359
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
16280
16360
  kind: "mutation",
16281
16361
  auth: "admin"
16282
- }), method(object({}), array(RelocateJobSchema).readonly(), {
16283
- kind: "query",
16362
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
16363
+ kind: "mutation",
16364
+ auth: "admin"
16365
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
16366
+ kind: "mutation",
16367
+ auth: "admin"
16368
+ }), method(StorageMigrationMediaMoveInputSchema, object({ jobId: string() }), {
16369
+ kind: "mutation",
16284
16370
  auth: "admin"
16285
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
16371
+ }), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
16286
16372
  kind: "mutation",
16287
16373
  auth: "admin"
16288
16374
  }), method(OpsLogQueryInputSchema, array(OpsLogEntrySchema).readonly(), {
@@ -17812,7 +17898,13 @@ var NodeInferenceDevicesSchema = object({
17812
17898
  reachable: boolean(),
17813
17899
  devices: array(NodeInferenceDeviceSchema).readonly()
17814
17900
  });
17815
- method(object({
17901
+ method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
17902
+ kind: "mutation",
17903
+ auth: "admin"
17904
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
17905
+ kind: "mutation",
17906
+ auth: "admin"
17907
+ }), method(object({
17816
17908
  deviceId: number(),
17817
17909
  agentNodeId: string()
17818
17910
  }), object({ success: literal(true) }), {
@@ -18577,6 +18669,13 @@ method(object({ locationId: string() }), EvictableUsageSchema), method(object({
18577
18669
  locationId: string(),
18578
18670
  targetBytes: number().int().positive()
18579
18671
  }), EvictResultSchema, { kind: "mutation" });
18672
+ method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin" }), method(StorageMigrationInputSchema, object({ jobId: string() }), {
18673
+ kind: "mutation",
18674
+ auth: "admin"
18675
+ }), method(object({ jobId: string().optional() }), StorageMigrationJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
18676
+ kind: "mutation",
18677
+ auth: "admin"
18678
+ });
18580
18679
  var ProviderInfoSchema = discriminatedUnion("shouldSaveDiskSpace", [object({
18581
18680
  providerId: string().min(1),
18582
18681
  displayName: string().min(1),
@@ -18680,6 +18779,28 @@ var TerminalProfileInfoSchema = object({
18680
18779
  label: string(),
18681
18780
  description: string().optional()
18682
18781
  });
18782
+ /**
18783
+ * A durable operator-created Terminal instance. Profiles are templates; only
18784
+ * an instance declares a camera.
18785
+ */
18786
+ var TerminalInstanceInfoSchema = object({
18787
+ instanceId: string(),
18788
+ cameraStableId: string(),
18789
+ nodeId: string(),
18790
+ profileId: string(),
18791
+ profileLabel: string(),
18792
+ name: string(),
18793
+ enabled: boolean()
18794
+ });
18795
+ var TerminalLegacyCameraSchema = object({
18796
+ stableId: string(),
18797
+ nodeId: string(),
18798
+ profileId: string(),
18799
+ profileLabel: string(),
18800
+ name: string(),
18801
+ /** Only legacy monitor cameras can retain their historic stable identity. */
18802
+ adoptable: boolean()
18803
+ });
18683
18804
  var TerminalOutputEventSchema = discriminatedUnion("kind", [object({
18684
18805
  seq: number().int().positive(),
18685
18806
  kind: literal("data"),
@@ -18696,7 +18817,29 @@ var TerminalOutputBatchSchema = object({
18696
18817
  snapshot: string().optional(),
18697
18818
  events: array(TerminalOutputEventSchema).readonly()
18698
18819
  });
18699
- method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
18820
+ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalInstanceInfoSchema).readonly(), { auth: "admin" }), method(object({
18821
+ targetNodeId: string().min(1),
18822
+ profileId: string().min(1),
18823
+ name: string().trim().min(1).max(160).optional()
18824
+ }), TerminalInstanceInfoSchema, {
18825
+ kind: "mutation",
18826
+ auth: "admin"
18827
+ }), method(object({ instanceId: string().min(1) }), _void(), {
18828
+ kind: "mutation",
18829
+ auth: "admin"
18830
+ }), method(object({
18831
+ instanceId: string().min(1),
18832
+ enabled: boolean()
18833
+ }), TerminalInstanceInfoSchema, {
18834
+ kind: "mutation",
18835
+ auth: "admin"
18836
+ }), method(_void(), array(TerminalLegacyCameraSchema).readonly(), { auth: "admin" }), method(object({
18837
+ stableId: string().min(1),
18838
+ name: string().trim().min(1).max(160).optional()
18839
+ }), TerminalInstanceInfoSchema, {
18840
+ kind: "mutation",
18841
+ auth: "admin"
18842
+ }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
18700
18843
  profileId: string(),
18701
18844
  cols: number().int().positive(),
18702
18845
  rows: number().int().positive()
@@ -18713,7 +18856,13 @@ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }),
18713
18856
  }), method(object({
18714
18857
  sessionId: string(),
18715
18858
  afterSeq: number().int().nonnegative(),
18716
- waitMs: number().int().min(0).max(2e3).default(0)
18859
+ waitMs: number().int().min(0).max(2e3).default(0),
18860
+ /**
18861
+ * Wait when a just-opened session has no output yet. Kept opt-in so a
18862
+ * browser's initial repaint remains immediate; the camera snapshot
18863
+ * relay uses it to avoid encoding a blank startup frame.
18864
+ */
18865
+ waitForOutput: boolean().optional()
18717
18866
  }), TerminalOutputBatchSchema, {
18718
18867
  kind: "mutation",
18719
18868
  auth: "admin",
@@ -21211,6 +21360,7 @@ var FaceInfoSchema = object({
21211
21360
  var FaceFilterEnum = _enum([
21212
21361
  "unassigned",
21213
21362
  "recognized",
21363
+ "identified",
21214
21364
  "all"
21215
21365
  ]);
21216
21366
  var MediaFileLiteSchema$1 = object({
@@ -21239,6 +21389,8 @@ method(_void(), array(IdentitySchema).readonly()), method(object({ name: string(
21239
21389
  kind: "mutation",
21240
21390
  auth: "admin"
21241
21391
  }), method(object({
21392
+ /** Restrict to one camera. Absent keeps the cluster-wide gallery view. */
21393
+ deviceId: number().int().optional(),
21242
21394
  limit: number().int().positive().optional(),
21243
21395
  filter: FaceFilterEnum.optional(),
21244
21396
  /**
@@ -23519,6 +23671,10 @@ var OsdSourceSchema = discriminatedUnion("kind", [
23519
23671
  capName: string().min(1).max(64),
23520
23672
  /** Dot path inside the slice, e.g. `detected`, `value`, `mode`. */
23521
23673
  valuePath: string().min(1).max(64)
23674
+ }),
23675
+ object({
23676
+ kind: literal("latest-recognition"),
23677
+ recognition: _enum(["person", "plate"])
23522
23678
  })
23523
23679
  ]);
23524
23680
  var OsdSlotBindingSchema = object({
@@ -23624,6 +23780,15 @@ method(object({ deviceId: number().int() }), object({
23624
23780
  }), object({ success: literal(true) }), {
23625
23781
  kind: "mutation",
23626
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"
23627
23792
  }), method(object({
23628
23793
  deviceId: number().int(),
23629
23794
  slotId: string().min(1),
@@ -24721,13 +24886,19 @@ method(object({
24721
24886
  }), {
24722
24887
  kind: "mutation",
24723
24888
  auth: "admin"
24724
- }), method(RelocateFootageInputSchema, object({ jobId: string() }), {
24889
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
24725
24890
  kind: "mutation",
24726
24891
  auth: "admin"
24727
- }), method(object({}), array(RelocateJobSchema).readonly(), {
24728
- kind: "query",
24892
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
24893
+ kind: "mutation",
24729
24894
  auth: "admin"
24730
- }), 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() }), {
24731
24902
  kind: "mutation",
24732
24903
  auth: "admin"
24733
24904
  });
@@ -30346,6 +30517,12 @@ Object.freeze({
30346
30517
  addonId: null,
30347
30518
  access: "delete"
30348
30519
  },
30520
+ "osdManager.copyDeviceConfiguration": {
30521
+ capName: "osd-manager",
30522
+ capScope: "system",
30523
+ addonId: null,
30524
+ access: "create"
30525
+ },
30349
30526
  "osdManager.getConditionSupport": {
30350
30527
  capName: "osd-manager",
30351
30528
  capScope: "system",
@@ -30442,7 +30619,7 @@ Object.freeze({
30442
30619
  addonId: null,
30443
30620
  access: "create"
30444
30621
  },
30445
- "pipelineAnalytics.cancelMediaRelocate": {
30622
+ "pipelineAnalytics.cancelStorageMigrationMove": {
30446
30623
  capName: "pipeline-analytics",
30447
30624
  capScope: "device",
30448
30625
  addonId: null,
@@ -30514,12 +30691,6 @@ Object.freeze({
30514
30691
  addonId: null,
30515
30692
  access: "view"
30516
30693
  },
30517
- "pipelineAnalytics.getMediaRelocateStatus": {
30518
- capName: "pipeline-analytics",
30519
- capScope: "device",
30520
- addonId: null,
30521
- access: "view"
30522
- },
30523
30694
  "pipelineAnalytics.getMotionEvents": {
30524
30695
  capName: "pipeline-analytics",
30525
30696
  capScope: "device",
@@ -30556,6 +30727,12 @@ Object.freeze({
30556
30727
  addonId: null,
30557
30728
  access: "view"
30558
30729
  },
30730
+ "pipelineAnalytics.getStorageMigrationMoveStatus": {
30731
+ capName: "pipeline-analytics",
30732
+ capScope: "device",
30733
+ addonId: null,
30734
+ access: "view"
30735
+ },
30559
30736
  "pipelineAnalytics.getTrack": {
30560
30737
  capName: "pipeline-analytics",
30561
30738
  capScope: "device",
@@ -30634,6 +30811,12 @@ Object.freeze({
30634
30811
  addonId: null,
30635
30812
  access: "view"
30636
30813
  },
30814
+ "pipelineAnalytics.pauseForStorageMigration": {
30815
+ capName: "pipeline-analytics",
30816
+ capScope: "device",
30817
+ addonId: null,
30818
+ access: "create"
30819
+ },
30637
30820
  "pipelineAnalytics.proposeRetrainAnnotations": {
30638
30821
  capName: "pipeline-analytics",
30639
30822
  capScope: "device",
@@ -30664,7 +30847,7 @@ Object.freeze({
30664
30847
  addonId: null,
30665
30848
  access: "create"
30666
30849
  },
30667
- "pipelineAnalytics.relocateMedia": {
30850
+ "pipelineAnalytics.refreshStorageLocationsForMigration": {
30668
30851
  capName: "pipeline-analytics",
30669
30852
  capScope: "device",
30670
30853
  addonId: null,
@@ -30676,6 +30859,12 @@ Object.freeze({
30676
30859
  addonId: null,
30677
30860
  access: "create"
30678
30861
  },
30862
+ "pipelineAnalytics.resumeForStorageMigration": {
30863
+ capName: "pipeline-analytics",
30864
+ capScope: "device",
30865
+ addonId: null,
30866
+ access: "create"
30867
+ },
30679
30868
  "pipelineAnalytics.saveRetrainAnnotations": {
30680
30869
  capName: "pipeline-analytics",
30681
30870
  capScope: "device",
@@ -30700,6 +30889,12 @@ Object.freeze({
30700
30889
  addonId: null,
30701
30890
  access: "create"
30702
30891
  },
30892
+ "pipelineAnalytics.startStorageMigrationMove": {
30893
+ capName: "pipeline-analytics",
30894
+ capScope: "device",
30895
+ addonId: null,
30896
+ access: "create"
30897
+ },
30703
30898
  "pipelineAnalytics.wipeAllAnalytics": {
30704
30899
  capName: "pipeline-analytics",
30705
30900
  capScope: "device",
@@ -31066,6 +31261,12 @@ Object.freeze({
31066
31261
  addonId: null,
31067
31262
  access: "view"
31068
31263
  },
31264
+ "pipelineOrchestrator.pauseForStorageMigration": {
31265
+ capName: "pipeline-orchestrator",
31266
+ capScope: "system",
31267
+ addonId: null,
31268
+ access: "create"
31269
+ },
31069
31270
  "pipelineOrchestrator.rebalance": {
31070
31271
  capName: "pipeline-orchestrator",
31071
31272
  capScope: "system",
@@ -31090,6 +31291,12 @@ Object.freeze({
31090
31291
  addonId: null,
31091
31292
  access: "view"
31092
31293
  },
31294
+ "pipelineOrchestrator.resumeForStorageMigration": {
31295
+ capName: "pipeline-orchestrator",
31296
+ capScope: "system",
31297
+ addonId: null,
31298
+ access: "create"
31299
+ },
31093
31300
  "pipelineOrchestrator.saveTemplate": {
31094
31301
  capName: "pipeline-orchestrator",
31095
31302
  capScope: "system",
@@ -31486,7 +31693,7 @@ Object.freeze({
31486
31693
  addonId: null,
31487
31694
  access: "create"
31488
31695
  },
31489
- "recording.cancelRelocate": {
31696
+ "recording.cancelStorageMigrationMove": {
31490
31697
  capName: "recording",
31491
31698
  capScope: "system",
31492
31699
  addonId: null,
@@ -31522,7 +31729,7 @@ Object.freeze({
31522
31729
  addonId: null,
31523
31730
  access: "view"
31524
31731
  },
31525
- "recording.getRelocateStatus": {
31732
+ "recording.getStorageMigrationMoveStatus": {
31526
31733
  capName: "recording",
31527
31734
  capScope: "system",
31528
31735
  addonId: null,
@@ -31546,6 +31753,12 @@ Object.freeze({
31546
31753
  addonId: null,
31547
31754
  access: "view"
31548
31755
  },
31756
+ "recording.pauseForStorageMigration": {
31757
+ capName: "recording",
31758
+ capScope: "system",
31759
+ addonId: null,
31760
+ access: "create"
31761
+ },
31549
31762
  "recording.pruneFootage": {
31550
31763
  capName: "recording",
31551
31764
  capScope: "system",
@@ -31564,7 +31777,7 @@ Object.freeze({
31564
31777
  addonId: null,
31565
31778
  access: "view"
31566
31779
  },
31567
- "recording.relocateFootage": {
31780
+ "recording.refreshStorageLocationsForMigration": {
31568
31781
  capName: "recording",
31569
31782
  capScope: "system",
31570
31783
  addonId: null,
@@ -31588,12 +31801,24 @@ Object.freeze({
31588
31801
  addonId: null,
31589
31802
  access: "create"
31590
31803
  },
31804
+ "recording.resumeForStorageMigration": {
31805
+ capName: "recording",
31806
+ capScope: "system",
31807
+ addonId: null,
31808
+ access: "create"
31809
+ },
31591
31810
  "recording.setDeviceConfig": {
31592
31811
  capName: "recording",
31593
31812
  capScope: "system",
31594
31813
  addonId: null,
31595
31814
  access: "create"
31596
31815
  },
31816
+ "recording.startStorageMigrationMove": {
31817
+ capName: "recording",
31818
+ capScope: "system",
31819
+ addonId: null,
31820
+ access: "create"
31821
+ },
31597
31822
  "recordingExport.cancelExport": {
31598
31823
  capName: "recordingExport",
31599
31824
  capScope: "system",
@@ -31984,6 +32209,30 @@ Object.freeze({
31984
32209
  addonId: null,
31985
32210
  access: "view"
31986
32211
  },
32212
+ "storageMigration.cancel": {
32213
+ capName: "storage-migration",
32214
+ capScope: "system",
32215
+ addonId: null,
32216
+ access: "create"
32217
+ },
32218
+ "storageMigration.plan": {
32219
+ capName: "storage-migration",
32220
+ capScope: "system",
32221
+ addonId: null,
32222
+ access: "view"
32223
+ },
32224
+ "storageMigration.start": {
32225
+ capName: "storage-migration",
32226
+ capScope: "system",
32227
+ addonId: null,
32228
+ access: "create"
32229
+ },
32230
+ "storageMigration.status": {
32231
+ capName: "storage-migration",
32232
+ capScope: "system",
32233
+ addonId: null,
32234
+ access: "view"
32235
+ },
31987
32236
  "storageProvider.abortUpload": {
31988
32237
  capName: "storage-provider",
31989
32238
  capScope: "system",
@@ -32362,12 +32611,42 @@ Object.freeze({
32362
32611
  addonId: null,
32363
32612
  access: "create"
32364
32613
  },
32614
+ "terminalSession.adoptLegacyMonitor": {
32615
+ capName: "terminal-session",
32616
+ capScope: "system",
32617
+ addonId: null,
32618
+ access: "create"
32619
+ },
32365
32620
  "terminalSession.close": {
32366
32621
  capName: "terminal-session",
32367
32622
  capScope: "system",
32368
32623
  addonId: null,
32369
32624
  access: "create"
32370
32625
  },
32626
+ "terminalSession.createInstance": {
32627
+ capName: "terminal-session",
32628
+ capScope: "system",
32629
+ addonId: null,
32630
+ access: "create"
32631
+ },
32632
+ "terminalSession.deleteInstance": {
32633
+ capName: "terminal-session",
32634
+ capScope: "system",
32635
+ addonId: null,
32636
+ access: "delete"
32637
+ },
32638
+ "terminalSession.listInstances": {
32639
+ capName: "terminal-session",
32640
+ capScope: "system",
32641
+ addonId: null,
32642
+ access: "view"
32643
+ },
32644
+ "terminalSession.listLegacyCameras": {
32645
+ capName: "terminal-session",
32646
+ capScope: "system",
32647
+ addonId: null,
32648
+ access: "view"
32649
+ },
32371
32650
  "terminalSession.listProfiles": {
32372
32651
  capName: "terminal-session",
32373
32652
  capScope: "system",
@@ -32398,6 +32677,12 @@ Object.freeze({
32398
32677
  addonId: null,
32399
32678
  access: "create"
32400
32679
  },
32680
+ "terminalSession.setInstanceEnabled": {
32681
+ capName: "terminal-session",
32682
+ capScope: "system",
32683
+ addonId: null,
32684
+ access: "create"
32685
+ },
32401
32686
  "terminalSession.writeInput": {
32402
32687
  capName: "terminal-session",
32403
32688
  capScope: "system",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-provider-wyze",
3
- "version": "0.2.11",
3
+ "version": "0.2.12",
4
4
  "description": "Wyze camera device-provider addon for CamStack — wraps the @apocaliss92/wyze-bridge-js P2P/DTLS client, feeding the stream-broker via the pull-rfc4571 lazy-publish path (a structural twin of addon-provider-reolink)",
5
5
  "keywords": [
6
6
  "camstack",