@camstack/addon-provider-wyze 0.2.10 → 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 +357 -30
  2. package/dist/addon.mjs +357 -30
  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",
16305
16385
  auth: "admin"
16306
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
16386
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
16387
+ kind: "mutation",
16388
+ auth: "admin"
16389
+ }), method(StorageMigrationMediaMoveInputSchema, object({ jobId: string() }), {
16390
+ kind: "mutation",
16391
+ auth: "admin"
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,7 +18800,67 @@ var TerminalProfileInfoSchema = object({
18701
18800
  label: string(),
18702
18801
  description: string().optional()
18703
18802
  });
18704
- method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
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
+ });
18825
+ var TerminalOutputEventSchema = discriminatedUnion("kind", [object({
18826
+ seq: number().int().positive(),
18827
+ kind: literal("data"),
18828
+ data: string()
18829
+ }), object({
18830
+ seq: number().int().positive(),
18831
+ kind: literal("exit"),
18832
+ exitCode: number().int(),
18833
+ signal: number().int().optional()
18834
+ })]);
18835
+ var TerminalOutputBatchSchema = object({
18836
+ cursor: number().int().nonnegative(),
18837
+ reset: boolean(),
18838
+ snapshot: string().optional(),
18839
+ events: array(TerminalOutputEventSchema).readonly()
18840
+ });
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({
18705
18864
  profileId: string(),
18706
18865
  cols: number().int().positive(),
18707
18866
  rows: number().int().positive()
@@ -18715,6 +18874,26 @@ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }),
18715
18874
  }), _void(), {
18716
18875
  kind: "mutation",
18717
18876
  auth: "admin"
18877
+ }), method(object({
18878
+ sessionId: string(),
18879
+ afterSeq: number().int().nonnegative(),
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()
18887
+ }), TerminalOutputBatchSchema, {
18888
+ kind: "mutation",
18889
+ auth: "admin",
18890
+ timeoutMs: 15e3
18891
+ }), method(object({
18892
+ sessionId: string(),
18893
+ data: string().max(64 * 1024)
18894
+ }), _void(), {
18895
+ kind: "mutation",
18896
+ auth: "admin"
18718
18897
  }), method(object({ sessionId: string() }), _void(), {
18719
18898
  kind: "mutation",
18720
18899
  auth: "admin"
@@ -21202,6 +21381,7 @@ var FaceInfoSchema = object({
21202
21381
  var FaceFilterEnum = _enum([
21203
21382
  "unassigned",
21204
21383
  "recognized",
21384
+ "identified",
21205
21385
  "all"
21206
21386
  ]);
21207
21387
  var MediaFileLiteSchema$1 = object({
@@ -21230,6 +21410,8 @@ method(_void(), array(IdentitySchema).readonly()), method(object({ name: string(
21230
21410
  kind: "mutation",
21231
21411
  auth: "admin"
21232
21412
  }), method(object({
21413
+ /** Restrict to one camera. Absent keeps the cluster-wide gallery view. */
21414
+ deviceId: number().int().optional(),
21233
21415
  limit: number().int().positive().optional(),
21234
21416
  filter: FaceFilterEnum.optional(),
21235
21417
  /**
@@ -23510,6 +23692,10 @@ var OsdSourceSchema = discriminatedUnion("kind", [
23510
23692
  capName: string().min(1).max(64),
23511
23693
  /** Dot path inside the slice, e.g. `detected`, `value`, `mode`. */
23512
23694
  valuePath: string().min(1).max(64)
23695
+ }),
23696
+ object({
23697
+ kind: literal("latest-recognition"),
23698
+ recognition: _enum(["person", "plate"])
23513
23699
  })
23514
23700
  ]);
23515
23701
  var OsdSlotBindingSchema = object({
@@ -23615,6 +23801,15 @@ method(object({ deviceId: number().int() }), object({
23615
23801
  }), object({ success: literal(true) }), {
23616
23802
  kind: "mutation",
23617
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"
23618
23813
  }), method(object({
23619
23814
  deviceId: number().int(),
23620
23815
  slotId: string().min(1),
@@ -24712,13 +24907,19 @@ method(object({
24712
24907
  }), {
24713
24908
  kind: "mutation",
24714
24909
  auth: "admin"
24715
- }), method(RelocateFootageInputSchema, object({ jobId: string() }), {
24910
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
24716
24911
  kind: "mutation",
24717
24912
  auth: "admin"
24718
- }), method(object({}), array(RelocateJobSchema).readonly(), {
24719
- kind: "query",
24913
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
24914
+ kind: "mutation",
24720
24915
  auth: "admin"
24721
- }), 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() }), {
24722
24923
  kind: "mutation",
24723
24924
  auth: "admin"
24724
24925
  });
@@ -30337,6 +30538,12 @@ Object.freeze({
30337
30538
  addonId: null,
30338
30539
  access: "delete"
30339
30540
  },
30541
+ "osdManager.copyDeviceConfiguration": {
30542
+ capName: "osd-manager",
30543
+ capScope: "system",
30544
+ addonId: null,
30545
+ access: "create"
30546
+ },
30340
30547
  "osdManager.getConditionSupport": {
30341
30548
  capName: "osd-manager",
30342
30549
  capScope: "system",
@@ -30433,7 +30640,7 @@ Object.freeze({
30433
30640
  addonId: null,
30434
30641
  access: "create"
30435
30642
  },
30436
- "pipelineAnalytics.cancelMediaRelocate": {
30643
+ "pipelineAnalytics.cancelStorageMigrationMove": {
30437
30644
  capName: "pipeline-analytics",
30438
30645
  capScope: "device",
30439
30646
  addonId: null,
@@ -30505,12 +30712,6 @@ Object.freeze({
30505
30712
  addonId: null,
30506
30713
  access: "view"
30507
30714
  },
30508
- "pipelineAnalytics.getMediaRelocateStatus": {
30509
- capName: "pipeline-analytics",
30510
- capScope: "device",
30511
- addonId: null,
30512
- access: "view"
30513
- },
30514
30715
  "pipelineAnalytics.getMotionEvents": {
30515
30716
  capName: "pipeline-analytics",
30516
30717
  capScope: "device",
@@ -30547,6 +30748,12 @@ Object.freeze({
30547
30748
  addonId: null,
30548
30749
  access: "view"
30549
30750
  },
30751
+ "pipelineAnalytics.getStorageMigrationMoveStatus": {
30752
+ capName: "pipeline-analytics",
30753
+ capScope: "device",
30754
+ addonId: null,
30755
+ access: "view"
30756
+ },
30550
30757
  "pipelineAnalytics.getTrack": {
30551
30758
  capName: "pipeline-analytics",
30552
30759
  capScope: "device",
@@ -30625,6 +30832,12 @@ Object.freeze({
30625
30832
  addonId: null,
30626
30833
  access: "view"
30627
30834
  },
30835
+ "pipelineAnalytics.pauseForStorageMigration": {
30836
+ capName: "pipeline-analytics",
30837
+ capScope: "device",
30838
+ addonId: null,
30839
+ access: "create"
30840
+ },
30628
30841
  "pipelineAnalytics.proposeRetrainAnnotations": {
30629
30842
  capName: "pipeline-analytics",
30630
30843
  capScope: "device",
@@ -30655,7 +30868,7 @@ Object.freeze({
30655
30868
  addonId: null,
30656
30869
  access: "create"
30657
30870
  },
30658
- "pipelineAnalytics.relocateMedia": {
30871
+ "pipelineAnalytics.refreshStorageLocationsForMigration": {
30659
30872
  capName: "pipeline-analytics",
30660
30873
  capScope: "device",
30661
30874
  addonId: null,
@@ -30667,6 +30880,12 @@ Object.freeze({
30667
30880
  addonId: null,
30668
30881
  access: "create"
30669
30882
  },
30883
+ "pipelineAnalytics.resumeForStorageMigration": {
30884
+ capName: "pipeline-analytics",
30885
+ capScope: "device",
30886
+ addonId: null,
30887
+ access: "create"
30888
+ },
30670
30889
  "pipelineAnalytics.saveRetrainAnnotations": {
30671
30890
  capName: "pipeline-analytics",
30672
30891
  capScope: "device",
@@ -30691,6 +30910,12 @@ Object.freeze({
30691
30910
  addonId: null,
30692
30911
  access: "create"
30693
30912
  },
30913
+ "pipelineAnalytics.startStorageMigrationMove": {
30914
+ capName: "pipeline-analytics",
30915
+ capScope: "device",
30916
+ addonId: null,
30917
+ access: "create"
30918
+ },
30694
30919
  "pipelineAnalytics.wipeAllAnalytics": {
30695
30920
  capName: "pipeline-analytics",
30696
30921
  capScope: "device",
@@ -31057,6 +31282,12 @@ Object.freeze({
31057
31282
  addonId: null,
31058
31283
  access: "view"
31059
31284
  },
31285
+ "pipelineOrchestrator.pauseForStorageMigration": {
31286
+ capName: "pipeline-orchestrator",
31287
+ capScope: "system",
31288
+ addonId: null,
31289
+ access: "create"
31290
+ },
31060
31291
  "pipelineOrchestrator.rebalance": {
31061
31292
  capName: "pipeline-orchestrator",
31062
31293
  capScope: "system",
@@ -31081,6 +31312,12 @@ Object.freeze({
31081
31312
  addonId: null,
31082
31313
  access: "view"
31083
31314
  },
31315
+ "pipelineOrchestrator.resumeForStorageMigration": {
31316
+ capName: "pipeline-orchestrator",
31317
+ capScope: "system",
31318
+ addonId: null,
31319
+ access: "create"
31320
+ },
31084
31321
  "pipelineOrchestrator.saveTemplate": {
31085
31322
  capName: "pipeline-orchestrator",
31086
31323
  capScope: "system",
@@ -31477,7 +31714,7 @@ Object.freeze({
31477
31714
  addonId: null,
31478
31715
  access: "create"
31479
31716
  },
31480
- "recording.cancelRelocate": {
31717
+ "recording.cancelStorageMigrationMove": {
31481
31718
  capName: "recording",
31482
31719
  capScope: "system",
31483
31720
  addonId: null,
@@ -31513,7 +31750,7 @@ Object.freeze({
31513
31750
  addonId: null,
31514
31751
  access: "view"
31515
31752
  },
31516
- "recording.getRelocateStatus": {
31753
+ "recording.getStorageMigrationMoveStatus": {
31517
31754
  capName: "recording",
31518
31755
  capScope: "system",
31519
31756
  addonId: null,
@@ -31537,6 +31774,12 @@ Object.freeze({
31537
31774
  addonId: null,
31538
31775
  access: "view"
31539
31776
  },
31777
+ "recording.pauseForStorageMigration": {
31778
+ capName: "recording",
31779
+ capScope: "system",
31780
+ addonId: null,
31781
+ access: "create"
31782
+ },
31540
31783
  "recording.pruneFootage": {
31541
31784
  capName: "recording",
31542
31785
  capScope: "system",
@@ -31555,7 +31798,7 @@ Object.freeze({
31555
31798
  addonId: null,
31556
31799
  access: "view"
31557
31800
  },
31558
- "recording.relocateFootage": {
31801
+ "recording.refreshStorageLocationsForMigration": {
31559
31802
  capName: "recording",
31560
31803
  capScope: "system",
31561
31804
  addonId: null,
@@ -31579,12 +31822,24 @@ Object.freeze({
31579
31822
  addonId: null,
31580
31823
  access: "create"
31581
31824
  },
31825
+ "recording.resumeForStorageMigration": {
31826
+ capName: "recording",
31827
+ capScope: "system",
31828
+ addonId: null,
31829
+ access: "create"
31830
+ },
31582
31831
  "recording.setDeviceConfig": {
31583
31832
  capName: "recording",
31584
31833
  capScope: "system",
31585
31834
  addonId: null,
31586
31835
  access: "create"
31587
31836
  },
31837
+ "recording.startStorageMigrationMove": {
31838
+ capName: "recording",
31839
+ capScope: "system",
31840
+ addonId: null,
31841
+ access: "create"
31842
+ },
31588
31843
  "recordingExport.cancelExport": {
31589
31844
  capName: "recordingExport",
31590
31845
  capScope: "system",
@@ -31975,6 +32230,30 @@ Object.freeze({
31975
32230
  addonId: null,
31976
32231
  access: "view"
31977
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
+ },
31978
32257
  "storageProvider.abortUpload": {
31979
32258
  capName: "storage-provider",
31980
32259
  capScope: "system",
@@ -32353,12 +32632,42 @@ Object.freeze({
32353
32632
  addonId: null,
32354
32633
  access: "create"
32355
32634
  },
32635
+ "terminalSession.adoptLegacyMonitor": {
32636
+ capName: "terminal-session",
32637
+ capScope: "system",
32638
+ addonId: null,
32639
+ access: "create"
32640
+ },
32356
32641
  "terminalSession.close": {
32357
32642
  capName: "terminal-session",
32358
32643
  capScope: "system",
32359
32644
  addonId: null,
32360
32645
  access: "create"
32361
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
+ },
32362
32671
  "terminalSession.listProfiles": {
32363
32672
  capName: "terminal-session",
32364
32673
  capScope: "system",
@@ -32377,12 +32686,30 @@ Object.freeze({
32377
32686
  addonId: null,
32378
32687
  access: "create"
32379
32688
  },
32689
+ "terminalSession.pullOutput": {
32690
+ capName: "terminal-session",
32691
+ capScope: "system",
32692
+ addonId: null,
32693
+ access: "create"
32694
+ },
32380
32695
  "terminalSession.resize": {
32381
32696
  capName: "terminal-session",
32382
32697
  capScope: "system",
32383
32698
  addonId: null,
32384
32699
  access: "create"
32385
32700
  },
32701
+ "terminalSession.setInstanceEnabled": {
32702
+ capName: "terminal-session",
32703
+ capScope: "system",
32704
+ addonId: null,
32705
+ access: "create"
32706
+ },
32707
+ "terminalSession.writeInput": {
32708
+ capName: "terminal-session",
32709
+ capScope: "system",
32710
+ addonId: null,
32711
+ access: "create"
32712
+ },
32386
32713
  "toast.onToast": {
32387
32714
  capName: "toast",
32388
32715
  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",
16284
16364
  auth: "admin"
16285
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
16365
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
16366
+ kind: "mutation",
16367
+ auth: "admin"
16368
+ }), method(StorageMigrationMediaMoveInputSchema, object({ jobId: string() }), {
16369
+ kind: "mutation",
16370
+ auth: "admin"
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,7 +18779,67 @@ var TerminalProfileInfoSchema = object({
18680
18779
  label: string(),
18681
18780
  description: string().optional()
18682
18781
  });
18683
- method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
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
+ });
18804
+ var TerminalOutputEventSchema = discriminatedUnion("kind", [object({
18805
+ seq: number().int().positive(),
18806
+ kind: literal("data"),
18807
+ data: string()
18808
+ }), object({
18809
+ seq: number().int().positive(),
18810
+ kind: literal("exit"),
18811
+ exitCode: number().int(),
18812
+ signal: number().int().optional()
18813
+ })]);
18814
+ var TerminalOutputBatchSchema = object({
18815
+ cursor: number().int().nonnegative(),
18816
+ reset: boolean(),
18817
+ snapshot: string().optional(),
18818
+ events: array(TerminalOutputEventSchema).readonly()
18819
+ });
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({
18684
18843
  profileId: string(),
18685
18844
  cols: number().int().positive(),
18686
18845
  rows: number().int().positive()
@@ -18694,6 +18853,26 @@ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }),
18694
18853
  }), _void(), {
18695
18854
  kind: "mutation",
18696
18855
  auth: "admin"
18856
+ }), method(object({
18857
+ sessionId: string(),
18858
+ afterSeq: number().int().nonnegative(),
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()
18866
+ }), TerminalOutputBatchSchema, {
18867
+ kind: "mutation",
18868
+ auth: "admin",
18869
+ timeoutMs: 15e3
18870
+ }), method(object({
18871
+ sessionId: string(),
18872
+ data: string().max(64 * 1024)
18873
+ }), _void(), {
18874
+ kind: "mutation",
18875
+ auth: "admin"
18697
18876
  }), method(object({ sessionId: string() }), _void(), {
18698
18877
  kind: "mutation",
18699
18878
  auth: "admin"
@@ -21181,6 +21360,7 @@ var FaceInfoSchema = object({
21181
21360
  var FaceFilterEnum = _enum([
21182
21361
  "unassigned",
21183
21362
  "recognized",
21363
+ "identified",
21184
21364
  "all"
21185
21365
  ]);
21186
21366
  var MediaFileLiteSchema$1 = object({
@@ -21209,6 +21389,8 @@ method(_void(), array(IdentitySchema).readonly()), method(object({ name: string(
21209
21389
  kind: "mutation",
21210
21390
  auth: "admin"
21211
21391
  }), method(object({
21392
+ /** Restrict to one camera. Absent keeps the cluster-wide gallery view. */
21393
+ deviceId: number().int().optional(),
21212
21394
  limit: number().int().positive().optional(),
21213
21395
  filter: FaceFilterEnum.optional(),
21214
21396
  /**
@@ -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
  });
@@ -30316,6 +30517,12 @@ Object.freeze({
30316
30517
  addonId: null,
30317
30518
  access: "delete"
30318
30519
  },
30520
+ "osdManager.copyDeviceConfiguration": {
30521
+ capName: "osd-manager",
30522
+ capScope: "system",
30523
+ addonId: null,
30524
+ access: "create"
30525
+ },
30319
30526
  "osdManager.getConditionSupport": {
30320
30527
  capName: "osd-manager",
30321
30528
  capScope: "system",
@@ -30412,7 +30619,7 @@ Object.freeze({
30412
30619
  addonId: null,
30413
30620
  access: "create"
30414
30621
  },
30415
- "pipelineAnalytics.cancelMediaRelocate": {
30622
+ "pipelineAnalytics.cancelStorageMigrationMove": {
30416
30623
  capName: "pipeline-analytics",
30417
30624
  capScope: "device",
30418
30625
  addonId: null,
@@ -30484,12 +30691,6 @@ Object.freeze({
30484
30691
  addonId: null,
30485
30692
  access: "view"
30486
30693
  },
30487
- "pipelineAnalytics.getMediaRelocateStatus": {
30488
- capName: "pipeline-analytics",
30489
- capScope: "device",
30490
- addonId: null,
30491
- access: "view"
30492
- },
30493
30694
  "pipelineAnalytics.getMotionEvents": {
30494
30695
  capName: "pipeline-analytics",
30495
30696
  capScope: "device",
@@ -30526,6 +30727,12 @@ Object.freeze({
30526
30727
  addonId: null,
30527
30728
  access: "view"
30528
30729
  },
30730
+ "pipelineAnalytics.getStorageMigrationMoveStatus": {
30731
+ capName: "pipeline-analytics",
30732
+ capScope: "device",
30733
+ addonId: null,
30734
+ access: "view"
30735
+ },
30529
30736
  "pipelineAnalytics.getTrack": {
30530
30737
  capName: "pipeline-analytics",
30531
30738
  capScope: "device",
@@ -30604,6 +30811,12 @@ Object.freeze({
30604
30811
  addonId: null,
30605
30812
  access: "view"
30606
30813
  },
30814
+ "pipelineAnalytics.pauseForStorageMigration": {
30815
+ capName: "pipeline-analytics",
30816
+ capScope: "device",
30817
+ addonId: null,
30818
+ access: "create"
30819
+ },
30607
30820
  "pipelineAnalytics.proposeRetrainAnnotations": {
30608
30821
  capName: "pipeline-analytics",
30609
30822
  capScope: "device",
@@ -30634,7 +30847,7 @@ Object.freeze({
30634
30847
  addonId: null,
30635
30848
  access: "create"
30636
30849
  },
30637
- "pipelineAnalytics.relocateMedia": {
30850
+ "pipelineAnalytics.refreshStorageLocationsForMigration": {
30638
30851
  capName: "pipeline-analytics",
30639
30852
  capScope: "device",
30640
30853
  addonId: null,
@@ -30646,6 +30859,12 @@ Object.freeze({
30646
30859
  addonId: null,
30647
30860
  access: "create"
30648
30861
  },
30862
+ "pipelineAnalytics.resumeForStorageMigration": {
30863
+ capName: "pipeline-analytics",
30864
+ capScope: "device",
30865
+ addonId: null,
30866
+ access: "create"
30867
+ },
30649
30868
  "pipelineAnalytics.saveRetrainAnnotations": {
30650
30869
  capName: "pipeline-analytics",
30651
30870
  capScope: "device",
@@ -30670,6 +30889,12 @@ Object.freeze({
30670
30889
  addonId: null,
30671
30890
  access: "create"
30672
30891
  },
30892
+ "pipelineAnalytics.startStorageMigrationMove": {
30893
+ capName: "pipeline-analytics",
30894
+ capScope: "device",
30895
+ addonId: null,
30896
+ access: "create"
30897
+ },
30673
30898
  "pipelineAnalytics.wipeAllAnalytics": {
30674
30899
  capName: "pipeline-analytics",
30675
30900
  capScope: "device",
@@ -31036,6 +31261,12 @@ Object.freeze({
31036
31261
  addonId: null,
31037
31262
  access: "view"
31038
31263
  },
31264
+ "pipelineOrchestrator.pauseForStorageMigration": {
31265
+ capName: "pipeline-orchestrator",
31266
+ capScope: "system",
31267
+ addonId: null,
31268
+ access: "create"
31269
+ },
31039
31270
  "pipelineOrchestrator.rebalance": {
31040
31271
  capName: "pipeline-orchestrator",
31041
31272
  capScope: "system",
@@ -31060,6 +31291,12 @@ Object.freeze({
31060
31291
  addonId: null,
31061
31292
  access: "view"
31062
31293
  },
31294
+ "pipelineOrchestrator.resumeForStorageMigration": {
31295
+ capName: "pipeline-orchestrator",
31296
+ capScope: "system",
31297
+ addonId: null,
31298
+ access: "create"
31299
+ },
31063
31300
  "pipelineOrchestrator.saveTemplate": {
31064
31301
  capName: "pipeline-orchestrator",
31065
31302
  capScope: "system",
@@ -31456,7 +31693,7 @@ Object.freeze({
31456
31693
  addonId: null,
31457
31694
  access: "create"
31458
31695
  },
31459
- "recording.cancelRelocate": {
31696
+ "recording.cancelStorageMigrationMove": {
31460
31697
  capName: "recording",
31461
31698
  capScope: "system",
31462
31699
  addonId: null,
@@ -31492,7 +31729,7 @@ Object.freeze({
31492
31729
  addonId: null,
31493
31730
  access: "view"
31494
31731
  },
31495
- "recording.getRelocateStatus": {
31732
+ "recording.getStorageMigrationMoveStatus": {
31496
31733
  capName: "recording",
31497
31734
  capScope: "system",
31498
31735
  addonId: null,
@@ -31516,6 +31753,12 @@ Object.freeze({
31516
31753
  addonId: null,
31517
31754
  access: "view"
31518
31755
  },
31756
+ "recording.pauseForStorageMigration": {
31757
+ capName: "recording",
31758
+ capScope: "system",
31759
+ addonId: null,
31760
+ access: "create"
31761
+ },
31519
31762
  "recording.pruneFootage": {
31520
31763
  capName: "recording",
31521
31764
  capScope: "system",
@@ -31534,7 +31777,7 @@ Object.freeze({
31534
31777
  addonId: null,
31535
31778
  access: "view"
31536
31779
  },
31537
- "recording.relocateFootage": {
31780
+ "recording.refreshStorageLocationsForMigration": {
31538
31781
  capName: "recording",
31539
31782
  capScope: "system",
31540
31783
  addonId: null,
@@ -31558,12 +31801,24 @@ Object.freeze({
31558
31801
  addonId: null,
31559
31802
  access: "create"
31560
31803
  },
31804
+ "recording.resumeForStorageMigration": {
31805
+ capName: "recording",
31806
+ capScope: "system",
31807
+ addonId: null,
31808
+ access: "create"
31809
+ },
31561
31810
  "recording.setDeviceConfig": {
31562
31811
  capName: "recording",
31563
31812
  capScope: "system",
31564
31813
  addonId: null,
31565
31814
  access: "create"
31566
31815
  },
31816
+ "recording.startStorageMigrationMove": {
31817
+ capName: "recording",
31818
+ capScope: "system",
31819
+ addonId: null,
31820
+ access: "create"
31821
+ },
31567
31822
  "recordingExport.cancelExport": {
31568
31823
  capName: "recordingExport",
31569
31824
  capScope: "system",
@@ -31954,6 +32209,30 @@ Object.freeze({
31954
32209
  addonId: null,
31955
32210
  access: "view"
31956
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
+ },
31957
32236
  "storageProvider.abortUpload": {
31958
32237
  capName: "storage-provider",
31959
32238
  capScope: "system",
@@ -32332,12 +32611,42 @@ Object.freeze({
32332
32611
  addonId: null,
32333
32612
  access: "create"
32334
32613
  },
32614
+ "terminalSession.adoptLegacyMonitor": {
32615
+ capName: "terminal-session",
32616
+ capScope: "system",
32617
+ addonId: null,
32618
+ access: "create"
32619
+ },
32335
32620
  "terminalSession.close": {
32336
32621
  capName: "terminal-session",
32337
32622
  capScope: "system",
32338
32623
  addonId: null,
32339
32624
  access: "create"
32340
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
+ },
32341
32650
  "terminalSession.listProfiles": {
32342
32651
  capName: "terminal-session",
32343
32652
  capScope: "system",
@@ -32356,12 +32665,30 @@ Object.freeze({
32356
32665
  addonId: null,
32357
32666
  access: "create"
32358
32667
  },
32668
+ "terminalSession.pullOutput": {
32669
+ capName: "terminal-session",
32670
+ capScope: "system",
32671
+ addonId: null,
32672
+ access: "create"
32673
+ },
32359
32674
  "terminalSession.resize": {
32360
32675
  capName: "terminal-session",
32361
32676
  capScope: "system",
32362
32677
  addonId: null,
32363
32678
  access: "create"
32364
32679
  },
32680
+ "terminalSession.setInstanceEnabled": {
32681
+ capName: "terminal-session",
32682
+ capScope: "system",
32683
+ addonId: null,
32684
+ access: "create"
32685
+ },
32686
+ "terminalSession.writeInput": {
32687
+ capName: "terminal-session",
32688
+ capScope: "system",
32689
+ addonId: null,
32690
+ access: "create"
32691
+ },
32365
32692
  "toast.onToast": {
32366
32693
  capName: "toast",
32367
32694
  capScope: "system",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-provider-wyze",
3
- "version": "0.2.10",
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",