@camstack/addon-export-alexa 1.2.15 → 1.2.17

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.
@@ -7719,12 +7719,11 @@ var RecordingConfigSchema = object({
7719
7719
  /**
7720
7720
  * Entity-relocation job state (storage entity-routing spec, Phase 4).
7721
7721
  *
7722
- * One shape shared by the recorder's `relocateFootage` (segments) and
7723
- * pipeline-analytics' `relocateMedia` (event media blobs) so the admin Data
7724
- * page renders both movers with one component. Jobs are in-RAM (a restart
7725
- * forgets them — re-running is safe by construction: copy-if-absent, delete
7726
- * after verify) and each completed/failed run also lands one durable ops-log
7727
- * row on the owning addon's surface.
7722
+ * One shape shared by the recorder and pipeline-analytics internal movers.
7723
+ * The public admin surface is `storage-migration`; child jobs remain in RAM
7724
+ * because copy-if-absent, verify, delete and index/row repoint are resumable.
7725
+ * Each completed/failed run also lands one durable ops-log row on its owning
7726
+ * addon surface.
7728
7727
  */
7729
7728
  var RelocateJobStateSchema = _enum([
7730
7729
  "running",
@@ -7751,19 +7750,100 @@ var RelocateJobSchema = object({
7751
7750
  finishedAt: number().nullable(),
7752
7751
  error: string().nullable()
7753
7752
  });
7753
+ /** Profile-derived footage selection used only by the migration coordinator:
7754
+ * `recordings` owns high+mid; `recordingsLow` owns low. */
7755
+ var RelocateFootageClassSchema = _enum(["recordings", "recordingsLow"]);
7754
7756
  var RelocateFootageInputSchema = object({
7755
- deviceId: number().optional(),
7756
7757
  fromLocationId: string(),
7757
7758
  toLocationId: string(),
7758
7759
  entities: array(_enum(["segments"])).optional(),
7760
+ /** Limits relocation to the logical profile class. Omit only for the
7761
+ * pre-orchestration compatibility path. */
7762
+ footageClass: RelocateFootageClassSchema.optional(),
7759
7763
  /** Copy throttle in MB/s (default 40) — the drain is a background chore,
7760
7764
  * never allowed to starve live writers. */
7761
7765
  throttleMbps: number().min(1).max(1e3).optional()
7762
7766
  });
7763
- var RelocateMediaInputSchema = object({
7764
- deviceId: number().optional(),
7767
+ /** Internal, lease-scoped participant operation. It is intentionally separate
7768
+ * from persistent recording settings: a migration never changes
7769
+ * `RecordingConfig.enabled` or camera wrapper bindings. */
7770
+ var StorageMigrationLeaseInputSchema = object({ leaseId: string().min(1) });
7771
+ var StorageMigrationFootageMoveInputSchema = RelocateFootageInputSchema.extend({ leaseId: string().min(1) });
7772
+ var StorageMigrationMediaMoveInputSchema = object({
7765
7773
  toLocationId: string(),
7766
7774
  throttleMbps: number().min(1).max(1e3).optional()
7775
+ }).extend({ leaseId: string().min(1) });
7776
+ /** The independently selectable logical storage classes. `recordings`
7777
+ * encompasses the high and mid segment profiles; `recordingsLow` is low
7778
+ * segments; `eventMedia` is post-analysis blobs. */
7779
+ var StorageMigrationClassSchema = _enum([
7780
+ "recordings",
7781
+ "recordingsLow",
7782
+ "eventMedia"
7783
+ ]);
7784
+ /** A destination is always an existing, fully-qualified location id. The
7785
+ * migration API intentionally never changes a source location's `basePath`:
7786
+ * callers create a new `<type>:<slug>` location, then select it here. */
7787
+ var StorageMigrationDestinationsSchema = object({
7788
+ recordings: string().min(1).optional(),
7789
+ recordingsLow: string().min(1).optional(),
7790
+ eventMedia: string().min(1).optional()
7791
+ }).refine((value) => Object.keys(value).length > 0, { message: "select at least one storage class" });
7792
+ /** Shared input for planning and starting an orchestrated storage migration. */
7793
+ var StorageMigrationInputSchema = object({
7794
+ destinations: StorageMigrationDestinationsSchema,
7795
+ throttleMbps: number().min(1).max(1e3).optional()
7796
+ });
7797
+ /** The durable coordinator state machine. The only phase that changes default
7798
+ * locations is `repointing`, after every selected mover has completed and been
7799
+ * verified. */
7800
+ var StorageMigrationPhaseSchema = _enum([
7801
+ "planning",
7802
+ "pausing",
7803
+ "moving",
7804
+ "verifying",
7805
+ "repointing",
7806
+ "refreshing",
7807
+ "resuming",
7808
+ "done",
7809
+ "failed",
7810
+ "cancelled"
7811
+ ]);
7812
+ var StorageMigrationParticipantSchema = _enum([
7813
+ "pipeline",
7814
+ "recorder",
7815
+ "analytics"
7816
+ ]);
7817
+ var StorageMigrationMoveSchema = object({
7818
+ storageClass: StorageMigrationClassSchema,
7819
+ fromLocationId: string(),
7820
+ toLocationId: string(),
7821
+ moverJobId: string().nullable(),
7822
+ state: RelocateJobStateSchema.nullable(),
7823
+ error: string().nullable()
7824
+ });
7825
+ var StorageMigrationJobSchema = object({
7826
+ jobId: string(),
7827
+ phase: StorageMigrationPhaseSchema,
7828
+ destinations: StorageMigrationDestinationsSchema,
7829
+ throttleMbps: number(),
7830
+ moves: array(StorageMigrationMoveSchema),
7831
+ pauseLeaseId: string().nullable(),
7832
+ pausedParticipants: array(StorageMigrationParticipantSchema),
7833
+ repointed: boolean(),
7834
+ cancelRequested: boolean(),
7835
+ startedAt: number(),
7836
+ updatedAt: number(),
7837
+ finishedAt: number().nullable(),
7838
+ error: string().nullable()
7839
+ });
7840
+ var StorageMigrationPlanSchema = object({
7841
+ destinations: StorageMigrationDestinationsSchema,
7842
+ moves: array(object({
7843
+ storageClass: StorageMigrationClassSchema,
7844
+ fromLocationId: string(),
7845
+ toLocationId: string()
7846
+ }))
7767
7847
  });
7768
7848
  /**
7769
7849
  * `StorageLocationType` — an addon-declared id that identifies the *kind* of
@@ -16272,13 +16352,19 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
16272
16352
  }), method(object({ deviceId: number() }), EventPruneCountsSchema, {
16273
16353
  kind: "mutation",
16274
16354
  auth: "admin"
16275
- }), method(RelocateMediaInputSchema, object({ jobId: string() }), {
16355
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
16276
16356
  kind: "mutation",
16277
16357
  auth: "admin"
16278
- }), method(object({}), array(RelocateJobSchema).readonly(), {
16279
- kind: "query",
16358
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
16359
+ kind: "mutation",
16280
16360
  auth: "admin"
16281
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
16361
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
16362
+ kind: "mutation",
16363
+ auth: "admin"
16364
+ }), method(StorageMigrationMediaMoveInputSchema, object({ jobId: string() }), {
16365
+ kind: "mutation",
16366
+ auth: "admin"
16367
+ }), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
16282
16368
  kind: "mutation",
16283
16369
  auth: "admin"
16284
16370
  }), method(OpsLogQueryInputSchema, array(OpsLogEntrySchema).readonly(), {
@@ -17775,7 +17861,13 @@ var NodeInferenceDevicesSchema = object({
17775
17861
  reachable: boolean(),
17776
17862
  devices: array(NodeInferenceDeviceSchema).readonly()
17777
17863
  });
17778
- method(object({
17864
+ method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
17865
+ kind: "mutation",
17866
+ auth: "admin"
17867
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
17868
+ kind: "mutation",
17869
+ auth: "admin"
17870
+ }), method(object({
17779
17871
  deviceId: number(),
17780
17872
  agentNodeId: string()
17781
17873
  }), object({ success: literal(true) }), {
@@ -18449,6 +18541,13 @@ method(object({ locationId: string() }), EvictableUsageSchema), method(object({
18449
18541
  locationId: string(),
18450
18542
  targetBytes: number().int().positive()
18451
18543
  }), EvictResultSchema, { kind: "mutation" });
18544
+ method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin" }), method(StorageMigrationInputSchema, object({ jobId: string() }), {
18545
+ kind: "mutation",
18546
+ auth: "admin"
18547
+ }), method(object({ jobId: string().optional() }), StorageMigrationJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
18548
+ kind: "mutation",
18549
+ auth: "admin"
18550
+ });
18452
18551
  var ProviderInfoSchema = discriminatedUnion("shouldSaveDiskSpace", [object({
18453
18552
  providerId: string().min(1),
18454
18553
  displayName: string().min(1),
@@ -18552,7 +18651,67 @@ var TerminalProfileInfoSchema = object({
18552
18651
  label: string(),
18553
18652
  description: string().optional()
18554
18653
  });
18555
- method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
18654
+ /**
18655
+ * A durable operator-created Terminal instance. Profiles are templates; only
18656
+ * an instance declares a camera.
18657
+ */
18658
+ var TerminalInstanceInfoSchema = object({
18659
+ instanceId: string(),
18660
+ cameraStableId: string(),
18661
+ nodeId: string(),
18662
+ profileId: string(),
18663
+ profileLabel: string(),
18664
+ name: string(),
18665
+ enabled: boolean()
18666
+ });
18667
+ var TerminalLegacyCameraSchema = object({
18668
+ stableId: string(),
18669
+ nodeId: string(),
18670
+ profileId: string(),
18671
+ profileLabel: string(),
18672
+ name: string(),
18673
+ /** Only legacy monitor cameras can retain their historic stable identity. */
18674
+ adoptable: boolean()
18675
+ });
18676
+ var TerminalOutputEventSchema = discriminatedUnion("kind", [object({
18677
+ seq: number().int().positive(),
18678
+ kind: literal("data"),
18679
+ data: string()
18680
+ }), object({
18681
+ seq: number().int().positive(),
18682
+ kind: literal("exit"),
18683
+ exitCode: number().int(),
18684
+ signal: number().int().optional()
18685
+ })]);
18686
+ var TerminalOutputBatchSchema = object({
18687
+ cursor: number().int().nonnegative(),
18688
+ reset: boolean(),
18689
+ snapshot: string().optional(),
18690
+ events: array(TerminalOutputEventSchema).readonly()
18691
+ });
18692
+ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalInstanceInfoSchema).readonly(), { auth: "admin" }), method(object({
18693
+ targetNodeId: string().min(1),
18694
+ profileId: string().min(1),
18695
+ name: string().trim().min(1).max(160).optional()
18696
+ }), TerminalInstanceInfoSchema, {
18697
+ kind: "mutation",
18698
+ auth: "admin"
18699
+ }), method(object({ instanceId: string().min(1) }), _void(), {
18700
+ kind: "mutation",
18701
+ auth: "admin"
18702
+ }), method(object({
18703
+ instanceId: string().min(1),
18704
+ enabled: boolean()
18705
+ }), TerminalInstanceInfoSchema, {
18706
+ kind: "mutation",
18707
+ auth: "admin"
18708
+ }), method(_void(), array(TerminalLegacyCameraSchema).readonly(), { auth: "admin" }), method(object({
18709
+ stableId: string().min(1),
18710
+ name: string().trim().min(1).max(160).optional()
18711
+ }), TerminalInstanceInfoSchema, {
18712
+ kind: "mutation",
18713
+ auth: "admin"
18714
+ }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
18556
18715
  profileId: string(),
18557
18716
  cols: number().int().positive(),
18558
18717
  rows: number().int().positive()
@@ -18566,6 +18725,26 @@ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }),
18566
18725
  }), _void(), {
18567
18726
  kind: "mutation",
18568
18727
  auth: "admin"
18728
+ }), method(object({
18729
+ sessionId: string(),
18730
+ afterSeq: number().int().nonnegative(),
18731
+ waitMs: number().int().min(0).max(2e3).default(0),
18732
+ /**
18733
+ * Wait when a just-opened session has no output yet. Kept opt-in so a
18734
+ * browser's initial repaint remains immediate; the camera snapshot
18735
+ * relay uses it to avoid encoding a blank startup frame.
18736
+ */
18737
+ waitForOutput: boolean().optional()
18738
+ }), TerminalOutputBatchSchema, {
18739
+ kind: "mutation",
18740
+ auth: "admin",
18741
+ timeoutMs: 15e3
18742
+ }), method(object({
18743
+ sessionId: string(),
18744
+ data: string().max(64 * 1024)
18745
+ }), _void(), {
18746
+ kind: "mutation",
18747
+ auth: "admin"
18569
18748
  }), method(object({ sessionId: string() }), _void(), {
18570
18749
  kind: "mutation",
18571
18750
  auth: "admin"
@@ -20496,6 +20675,7 @@ var FaceInfoSchema = object({
20496
20675
  var FaceFilterEnum = _enum([
20497
20676
  "unassigned",
20498
20677
  "recognized",
20678
+ "identified",
20499
20679
  "all"
20500
20680
  ]);
20501
20681
  var MediaFileLiteSchema$1 = object({
@@ -20524,6 +20704,8 @@ method(_void(), array(IdentitySchema).readonly()), method(object({ name: string(
20524
20704
  kind: "mutation",
20525
20705
  auth: "admin"
20526
20706
  }), method(object({
20707
+ /** Restrict to one camera. Absent keeps the cluster-wide gallery view. */
20708
+ deviceId: number().int().optional(),
20527
20709
  limit: number().int().positive().optional(),
20528
20710
  filter: FaceFilterEnum.optional(),
20529
20711
  /**
@@ -22289,6 +22471,10 @@ var OsdSourceSchema = discriminatedUnion("kind", [
22289
22471
  capName: string().min(1).max(64),
22290
22472
  /** Dot path inside the slice, e.g. `detected`, `value`, `mode`. */
22291
22473
  valuePath: string().min(1).max(64)
22474
+ }),
22475
+ object({
22476
+ kind: literal("latest-recognition"),
22477
+ recognition: _enum(["person", "plate"])
22292
22478
  })
22293
22479
  ]);
22294
22480
  var OsdSlotBindingSchema = object({
@@ -22394,6 +22580,15 @@ method(object({ deviceId: number().int() }), object({
22394
22580
  }), object({ success: literal(true) }), {
22395
22581
  kind: "mutation",
22396
22582
  auth: "admin"
22583
+ }), method(object({
22584
+ sourceDeviceId: number().int(),
22585
+ targetDeviceId: number().int()
22586
+ }), object({
22587
+ copied: number().int().nonnegative(),
22588
+ skipped: number().int().nonnegative()
22589
+ }), {
22590
+ kind: "mutation",
22591
+ auth: "admin"
22397
22592
  }), method(object({
22398
22593
  deviceId: number().int(),
22399
22594
  slotId: string().min(1),
@@ -23279,13 +23474,19 @@ method(object({
23279
23474
  }), {
23280
23475
  kind: "mutation",
23281
23476
  auth: "admin"
23282
- }), method(RelocateFootageInputSchema, object({ jobId: string() }), {
23477
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
23283
23478
  kind: "mutation",
23284
23479
  auth: "admin"
23285
- }), method(object({}), array(RelocateJobSchema).readonly(), {
23286
- kind: "query",
23480
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
23481
+ kind: "mutation",
23287
23482
  auth: "admin"
23288
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
23483
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
23484
+ kind: "mutation",
23485
+ auth: "admin"
23486
+ }), method(StorageMigrationFootageMoveInputSchema, object({ jobId: string() }), {
23487
+ kind: "mutation",
23488
+ auth: "admin"
23489
+ }), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
23289
23490
  kind: "mutation",
23290
23491
  auth: "admin"
23291
23492
  });
@@ -27407,6 +27608,12 @@ Object.freeze({
27407
27608
  addonId: null,
27408
27609
  access: "delete"
27409
27610
  },
27611
+ "osdManager.copyDeviceConfiguration": {
27612
+ capName: "osd-manager",
27613
+ capScope: "system",
27614
+ addonId: null,
27615
+ access: "create"
27616
+ },
27410
27617
  "osdManager.getConditionSupport": {
27411
27618
  capName: "osd-manager",
27412
27619
  capScope: "system",
@@ -27503,7 +27710,7 @@ Object.freeze({
27503
27710
  addonId: null,
27504
27711
  access: "create"
27505
27712
  },
27506
- "pipelineAnalytics.cancelMediaRelocate": {
27713
+ "pipelineAnalytics.cancelStorageMigrationMove": {
27507
27714
  capName: "pipeline-analytics",
27508
27715
  capScope: "device",
27509
27716
  addonId: null,
@@ -27575,12 +27782,6 @@ Object.freeze({
27575
27782
  addonId: null,
27576
27783
  access: "view"
27577
27784
  },
27578
- "pipelineAnalytics.getMediaRelocateStatus": {
27579
- capName: "pipeline-analytics",
27580
- capScope: "device",
27581
- addonId: null,
27582
- access: "view"
27583
- },
27584
27785
  "pipelineAnalytics.getMotionEvents": {
27585
27786
  capName: "pipeline-analytics",
27586
27787
  capScope: "device",
@@ -27617,6 +27818,12 @@ Object.freeze({
27617
27818
  addonId: null,
27618
27819
  access: "view"
27619
27820
  },
27821
+ "pipelineAnalytics.getStorageMigrationMoveStatus": {
27822
+ capName: "pipeline-analytics",
27823
+ capScope: "device",
27824
+ addonId: null,
27825
+ access: "view"
27826
+ },
27620
27827
  "pipelineAnalytics.getTrack": {
27621
27828
  capName: "pipeline-analytics",
27622
27829
  capScope: "device",
@@ -27695,6 +27902,12 @@ Object.freeze({
27695
27902
  addonId: null,
27696
27903
  access: "view"
27697
27904
  },
27905
+ "pipelineAnalytics.pauseForStorageMigration": {
27906
+ capName: "pipeline-analytics",
27907
+ capScope: "device",
27908
+ addonId: null,
27909
+ access: "create"
27910
+ },
27698
27911
  "pipelineAnalytics.proposeRetrainAnnotations": {
27699
27912
  capName: "pipeline-analytics",
27700
27913
  capScope: "device",
@@ -27725,7 +27938,7 @@ Object.freeze({
27725
27938
  addonId: null,
27726
27939
  access: "create"
27727
27940
  },
27728
- "pipelineAnalytics.relocateMedia": {
27941
+ "pipelineAnalytics.refreshStorageLocationsForMigration": {
27729
27942
  capName: "pipeline-analytics",
27730
27943
  capScope: "device",
27731
27944
  addonId: null,
@@ -27737,6 +27950,12 @@ Object.freeze({
27737
27950
  addonId: null,
27738
27951
  access: "create"
27739
27952
  },
27953
+ "pipelineAnalytics.resumeForStorageMigration": {
27954
+ capName: "pipeline-analytics",
27955
+ capScope: "device",
27956
+ addonId: null,
27957
+ access: "create"
27958
+ },
27740
27959
  "pipelineAnalytics.saveRetrainAnnotations": {
27741
27960
  capName: "pipeline-analytics",
27742
27961
  capScope: "device",
@@ -27761,6 +27980,12 @@ Object.freeze({
27761
27980
  addonId: null,
27762
27981
  access: "create"
27763
27982
  },
27983
+ "pipelineAnalytics.startStorageMigrationMove": {
27984
+ capName: "pipeline-analytics",
27985
+ capScope: "device",
27986
+ addonId: null,
27987
+ access: "create"
27988
+ },
27764
27989
  "pipelineAnalytics.wipeAllAnalytics": {
27765
27990
  capName: "pipeline-analytics",
27766
27991
  capScope: "device",
@@ -28127,6 +28352,12 @@ Object.freeze({
28127
28352
  addonId: null,
28128
28353
  access: "view"
28129
28354
  },
28355
+ "pipelineOrchestrator.pauseForStorageMigration": {
28356
+ capName: "pipeline-orchestrator",
28357
+ capScope: "system",
28358
+ addonId: null,
28359
+ access: "create"
28360
+ },
28130
28361
  "pipelineOrchestrator.rebalance": {
28131
28362
  capName: "pipeline-orchestrator",
28132
28363
  capScope: "system",
@@ -28151,6 +28382,12 @@ Object.freeze({
28151
28382
  addonId: null,
28152
28383
  access: "view"
28153
28384
  },
28385
+ "pipelineOrchestrator.resumeForStorageMigration": {
28386
+ capName: "pipeline-orchestrator",
28387
+ capScope: "system",
28388
+ addonId: null,
28389
+ access: "create"
28390
+ },
28154
28391
  "pipelineOrchestrator.saveTemplate": {
28155
28392
  capName: "pipeline-orchestrator",
28156
28393
  capScope: "system",
@@ -28547,7 +28784,7 @@ Object.freeze({
28547
28784
  addonId: null,
28548
28785
  access: "create"
28549
28786
  },
28550
- "recording.cancelRelocate": {
28787
+ "recording.cancelStorageMigrationMove": {
28551
28788
  capName: "recording",
28552
28789
  capScope: "system",
28553
28790
  addonId: null,
@@ -28583,7 +28820,7 @@ Object.freeze({
28583
28820
  addonId: null,
28584
28821
  access: "view"
28585
28822
  },
28586
- "recording.getRelocateStatus": {
28823
+ "recording.getStorageMigrationMoveStatus": {
28587
28824
  capName: "recording",
28588
28825
  capScope: "system",
28589
28826
  addonId: null,
@@ -28607,6 +28844,12 @@ Object.freeze({
28607
28844
  addonId: null,
28608
28845
  access: "view"
28609
28846
  },
28847
+ "recording.pauseForStorageMigration": {
28848
+ capName: "recording",
28849
+ capScope: "system",
28850
+ addonId: null,
28851
+ access: "create"
28852
+ },
28610
28853
  "recording.pruneFootage": {
28611
28854
  capName: "recording",
28612
28855
  capScope: "system",
@@ -28625,7 +28868,7 @@ Object.freeze({
28625
28868
  addonId: null,
28626
28869
  access: "view"
28627
28870
  },
28628
- "recording.relocateFootage": {
28871
+ "recording.refreshStorageLocationsForMigration": {
28629
28872
  capName: "recording",
28630
28873
  capScope: "system",
28631
28874
  addonId: null,
@@ -28649,12 +28892,24 @@ Object.freeze({
28649
28892
  addonId: null,
28650
28893
  access: "create"
28651
28894
  },
28895
+ "recording.resumeForStorageMigration": {
28896
+ capName: "recording",
28897
+ capScope: "system",
28898
+ addonId: null,
28899
+ access: "create"
28900
+ },
28652
28901
  "recording.setDeviceConfig": {
28653
28902
  capName: "recording",
28654
28903
  capScope: "system",
28655
28904
  addonId: null,
28656
28905
  access: "create"
28657
28906
  },
28907
+ "recording.startStorageMigrationMove": {
28908
+ capName: "recording",
28909
+ capScope: "system",
28910
+ addonId: null,
28911
+ access: "create"
28912
+ },
28658
28913
  "recordingExport.cancelExport": {
28659
28914
  capName: "recordingExport",
28660
28915
  capScope: "system",
@@ -29045,6 +29300,30 @@ Object.freeze({
29045
29300
  addonId: null,
29046
29301
  access: "view"
29047
29302
  },
29303
+ "storageMigration.cancel": {
29304
+ capName: "storage-migration",
29305
+ capScope: "system",
29306
+ addonId: null,
29307
+ access: "create"
29308
+ },
29309
+ "storageMigration.plan": {
29310
+ capName: "storage-migration",
29311
+ capScope: "system",
29312
+ addonId: null,
29313
+ access: "view"
29314
+ },
29315
+ "storageMigration.start": {
29316
+ capName: "storage-migration",
29317
+ capScope: "system",
29318
+ addonId: null,
29319
+ access: "create"
29320
+ },
29321
+ "storageMigration.status": {
29322
+ capName: "storage-migration",
29323
+ capScope: "system",
29324
+ addonId: null,
29325
+ access: "view"
29326
+ },
29048
29327
  "storageProvider.abortUpload": {
29049
29328
  capName: "storage-provider",
29050
29329
  capScope: "system",
@@ -29423,12 +29702,42 @@ Object.freeze({
29423
29702
  addonId: null,
29424
29703
  access: "create"
29425
29704
  },
29705
+ "terminalSession.adoptLegacyMonitor": {
29706
+ capName: "terminal-session",
29707
+ capScope: "system",
29708
+ addonId: null,
29709
+ access: "create"
29710
+ },
29426
29711
  "terminalSession.close": {
29427
29712
  capName: "terminal-session",
29428
29713
  capScope: "system",
29429
29714
  addonId: null,
29430
29715
  access: "create"
29431
29716
  },
29717
+ "terminalSession.createInstance": {
29718
+ capName: "terminal-session",
29719
+ capScope: "system",
29720
+ addonId: null,
29721
+ access: "create"
29722
+ },
29723
+ "terminalSession.deleteInstance": {
29724
+ capName: "terminal-session",
29725
+ capScope: "system",
29726
+ addonId: null,
29727
+ access: "delete"
29728
+ },
29729
+ "terminalSession.listInstances": {
29730
+ capName: "terminal-session",
29731
+ capScope: "system",
29732
+ addonId: null,
29733
+ access: "view"
29734
+ },
29735
+ "terminalSession.listLegacyCameras": {
29736
+ capName: "terminal-session",
29737
+ capScope: "system",
29738
+ addonId: null,
29739
+ access: "view"
29740
+ },
29432
29741
  "terminalSession.listProfiles": {
29433
29742
  capName: "terminal-session",
29434
29743
  capScope: "system",
@@ -29447,12 +29756,30 @@ Object.freeze({
29447
29756
  addonId: null,
29448
29757
  access: "create"
29449
29758
  },
29759
+ "terminalSession.pullOutput": {
29760
+ capName: "terminal-session",
29761
+ capScope: "system",
29762
+ addonId: null,
29763
+ access: "create"
29764
+ },
29450
29765
  "terminalSession.resize": {
29451
29766
  capName: "terminal-session",
29452
29767
  capScope: "system",
29453
29768
  addonId: null,
29454
29769
  access: "create"
29455
29770
  },
29771
+ "terminalSession.setInstanceEnabled": {
29772
+ capName: "terminal-session",
29773
+ capScope: "system",
29774
+ addonId: null,
29775
+ access: "create"
29776
+ },
29777
+ "terminalSession.writeInput": {
29778
+ capName: "terminal-session",
29779
+ capScope: "system",
29780
+ addonId: null,
29781
+ access: "create"
29782
+ },
29456
29783
  "toast.onToast": {
29457
29784
  capName: "toast",
29458
29785
  capScope: "system",
@@ -7692,12 +7692,11 @@ var RecordingConfigSchema = object({
7692
7692
  /**
7693
7693
  * Entity-relocation job state (storage entity-routing spec, Phase 4).
7694
7694
  *
7695
- * One shape shared by the recorder's `relocateFootage` (segments) and
7696
- * pipeline-analytics' `relocateMedia` (event media blobs) so the admin Data
7697
- * page renders both movers with one component. Jobs are in-RAM (a restart
7698
- * forgets them — re-running is safe by construction: copy-if-absent, delete
7699
- * after verify) and each completed/failed run also lands one durable ops-log
7700
- * row on the owning addon's surface.
7695
+ * One shape shared by the recorder and pipeline-analytics internal movers.
7696
+ * The public admin surface is `storage-migration`; child jobs remain in RAM
7697
+ * because copy-if-absent, verify, delete and index/row repoint are resumable.
7698
+ * Each completed/failed run also lands one durable ops-log row on its owning
7699
+ * addon surface.
7701
7700
  */
7702
7701
  var RelocateJobStateSchema = _enum([
7703
7702
  "running",
@@ -7724,19 +7723,100 @@ var RelocateJobSchema = object({
7724
7723
  finishedAt: number().nullable(),
7725
7724
  error: string().nullable()
7726
7725
  });
7726
+ /** Profile-derived footage selection used only by the migration coordinator:
7727
+ * `recordings` owns high+mid; `recordingsLow` owns low. */
7728
+ var RelocateFootageClassSchema = _enum(["recordings", "recordingsLow"]);
7727
7729
  var RelocateFootageInputSchema = object({
7728
- deviceId: number().optional(),
7729
7730
  fromLocationId: string(),
7730
7731
  toLocationId: string(),
7731
7732
  entities: array(_enum(["segments"])).optional(),
7733
+ /** Limits relocation to the logical profile class. Omit only for the
7734
+ * pre-orchestration compatibility path. */
7735
+ footageClass: RelocateFootageClassSchema.optional(),
7732
7736
  /** Copy throttle in MB/s (default 40) — the drain is a background chore,
7733
7737
  * never allowed to starve live writers. */
7734
7738
  throttleMbps: number().min(1).max(1e3).optional()
7735
7739
  });
7736
- var RelocateMediaInputSchema = object({
7737
- deviceId: number().optional(),
7740
+ /** Internal, lease-scoped participant operation. It is intentionally separate
7741
+ * from persistent recording settings: a migration never changes
7742
+ * `RecordingConfig.enabled` or camera wrapper bindings. */
7743
+ var StorageMigrationLeaseInputSchema = object({ leaseId: string().min(1) });
7744
+ var StorageMigrationFootageMoveInputSchema = RelocateFootageInputSchema.extend({ leaseId: string().min(1) });
7745
+ var StorageMigrationMediaMoveInputSchema = object({
7738
7746
  toLocationId: string(),
7739
7747
  throttleMbps: number().min(1).max(1e3).optional()
7748
+ }).extend({ leaseId: string().min(1) });
7749
+ /** The independently selectable logical storage classes. `recordings`
7750
+ * encompasses the high and mid segment profiles; `recordingsLow` is low
7751
+ * segments; `eventMedia` is post-analysis blobs. */
7752
+ var StorageMigrationClassSchema = _enum([
7753
+ "recordings",
7754
+ "recordingsLow",
7755
+ "eventMedia"
7756
+ ]);
7757
+ /** A destination is always an existing, fully-qualified location id. The
7758
+ * migration API intentionally never changes a source location's `basePath`:
7759
+ * callers create a new `<type>:<slug>` location, then select it here. */
7760
+ var StorageMigrationDestinationsSchema = object({
7761
+ recordings: string().min(1).optional(),
7762
+ recordingsLow: string().min(1).optional(),
7763
+ eventMedia: string().min(1).optional()
7764
+ }).refine((value) => Object.keys(value).length > 0, { message: "select at least one storage class" });
7765
+ /** Shared input for planning and starting an orchestrated storage migration. */
7766
+ var StorageMigrationInputSchema = object({
7767
+ destinations: StorageMigrationDestinationsSchema,
7768
+ throttleMbps: number().min(1).max(1e3).optional()
7769
+ });
7770
+ /** The durable coordinator state machine. The only phase that changes default
7771
+ * locations is `repointing`, after every selected mover has completed and been
7772
+ * verified. */
7773
+ var StorageMigrationPhaseSchema = _enum([
7774
+ "planning",
7775
+ "pausing",
7776
+ "moving",
7777
+ "verifying",
7778
+ "repointing",
7779
+ "refreshing",
7780
+ "resuming",
7781
+ "done",
7782
+ "failed",
7783
+ "cancelled"
7784
+ ]);
7785
+ var StorageMigrationParticipantSchema = _enum([
7786
+ "pipeline",
7787
+ "recorder",
7788
+ "analytics"
7789
+ ]);
7790
+ var StorageMigrationMoveSchema = object({
7791
+ storageClass: StorageMigrationClassSchema,
7792
+ fromLocationId: string(),
7793
+ toLocationId: string(),
7794
+ moverJobId: string().nullable(),
7795
+ state: RelocateJobStateSchema.nullable(),
7796
+ error: string().nullable()
7797
+ });
7798
+ var StorageMigrationJobSchema = object({
7799
+ jobId: string(),
7800
+ phase: StorageMigrationPhaseSchema,
7801
+ destinations: StorageMigrationDestinationsSchema,
7802
+ throttleMbps: number(),
7803
+ moves: array(StorageMigrationMoveSchema),
7804
+ pauseLeaseId: string().nullable(),
7805
+ pausedParticipants: array(StorageMigrationParticipantSchema),
7806
+ repointed: boolean(),
7807
+ cancelRequested: boolean(),
7808
+ startedAt: number(),
7809
+ updatedAt: number(),
7810
+ finishedAt: number().nullable(),
7811
+ error: string().nullable()
7812
+ });
7813
+ var StorageMigrationPlanSchema = object({
7814
+ destinations: StorageMigrationDestinationsSchema,
7815
+ moves: array(object({
7816
+ storageClass: StorageMigrationClassSchema,
7817
+ fromLocationId: string(),
7818
+ toLocationId: string()
7819
+ }))
7740
7820
  });
7741
7821
  /**
7742
7822
  * `StorageLocationType` — an addon-declared id that identifies the *kind* of
@@ -16245,13 +16325,19 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
16245
16325
  }), method(object({ deviceId: number() }), EventPruneCountsSchema, {
16246
16326
  kind: "mutation",
16247
16327
  auth: "admin"
16248
- }), method(RelocateMediaInputSchema, object({ jobId: string() }), {
16328
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
16249
16329
  kind: "mutation",
16250
16330
  auth: "admin"
16251
- }), method(object({}), array(RelocateJobSchema).readonly(), {
16252
- kind: "query",
16331
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
16332
+ kind: "mutation",
16253
16333
  auth: "admin"
16254
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
16334
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
16335
+ kind: "mutation",
16336
+ auth: "admin"
16337
+ }), method(StorageMigrationMediaMoveInputSchema, object({ jobId: string() }), {
16338
+ kind: "mutation",
16339
+ auth: "admin"
16340
+ }), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
16255
16341
  kind: "mutation",
16256
16342
  auth: "admin"
16257
16343
  }), method(OpsLogQueryInputSchema, array(OpsLogEntrySchema).readonly(), {
@@ -17748,7 +17834,13 @@ var NodeInferenceDevicesSchema = object({
17748
17834
  reachable: boolean(),
17749
17835
  devices: array(NodeInferenceDeviceSchema).readonly()
17750
17836
  });
17751
- method(object({
17837
+ method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
17838
+ kind: "mutation",
17839
+ auth: "admin"
17840
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
17841
+ kind: "mutation",
17842
+ auth: "admin"
17843
+ }), method(object({
17752
17844
  deviceId: number(),
17753
17845
  agentNodeId: string()
17754
17846
  }), object({ success: literal(true) }), {
@@ -18422,6 +18514,13 @@ method(object({ locationId: string() }), EvictableUsageSchema), method(object({
18422
18514
  locationId: string(),
18423
18515
  targetBytes: number().int().positive()
18424
18516
  }), EvictResultSchema, { kind: "mutation" });
18517
+ method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin" }), method(StorageMigrationInputSchema, object({ jobId: string() }), {
18518
+ kind: "mutation",
18519
+ auth: "admin"
18520
+ }), method(object({ jobId: string().optional() }), StorageMigrationJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
18521
+ kind: "mutation",
18522
+ auth: "admin"
18523
+ });
18425
18524
  var ProviderInfoSchema = discriminatedUnion("shouldSaveDiskSpace", [object({
18426
18525
  providerId: string().min(1),
18427
18526
  displayName: string().min(1),
@@ -18525,7 +18624,67 @@ var TerminalProfileInfoSchema = object({
18525
18624
  label: string(),
18526
18625
  description: string().optional()
18527
18626
  });
18528
- method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
18627
+ /**
18628
+ * A durable operator-created Terminal instance. Profiles are templates; only
18629
+ * an instance declares a camera.
18630
+ */
18631
+ var TerminalInstanceInfoSchema = object({
18632
+ instanceId: string(),
18633
+ cameraStableId: string(),
18634
+ nodeId: string(),
18635
+ profileId: string(),
18636
+ profileLabel: string(),
18637
+ name: string(),
18638
+ enabled: boolean()
18639
+ });
18640
+ var TerminalLegacyCameraSchema = object({
18641
+ stableId: string(),
18642
+ nodeId: string(),
18643
+ profileId: string(),
18644
+ profileLabel: string(),
18645
+ name: string(),
18646
+ /** Only legacy monitor cameras can retain their historic stable identity. */
18647
+ adoptable: boolean()
18648
+ });
18649
+ var TerminalOutputEventSchema = discriminatedUnion("kind", [object({
18650
+ seq: number().int().positive(),
18651
+ kind: literal("data"),
18652
+ data: string()
18653
+ }), object({
18654
+ seq: number().int().positive(),
18655
+ kind: literal("exit"),
18656
+ exitCode: number().int(),
18657
+ signal: number().int().optional()
18658
+ })]);
18659
+ var TerminalOutputBatchSchema = object({
18660
+ cursor: number().int().nonnegative(),
18661
+ reset: boolean(),
18662
+ snapshot: string().optional(),
18663
+ events: array(TerminalOutputEventSchema).readonly()
18664
+ });
18665
+ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalInstanceInfoSchema).readonly(), { auth: "admin" }), method(object({
18666
+ targetNodeId: string().min(1),
18667
+ profileId: string().min(1),
18668
+ name: string().trim().min(1).max(160).optional()
18669
+ }), TerminalInstanceInfoSchema, {
18670
+ kind: "mutation",
18671
+ auth: "admin"
18672
+ }), method(object({ instanceId: string().min(1) }), _void(), {
18673
+ kind: "mutation",
18674
+ auth: "admin"
18675
+ }), method(object({
18676
+ instanceId: string().min(1),
18677
+ enabled: boolean()
18678
+ }), TerminalInstanceInfoSchema, {
18679
+ kind: "mutation",
18680
+ auth: "admin"
18681
+ }), method(_void(), array(TerminalLegacyCameraSchema).readonly(), { auth: "admin" }), method(object({
18682
+ stableId: string().min(1),
18683
+ name: string().trim().min(1).max(160).optional()
18684
+ }), TerminalInstanceInfoSchema, {
18685
+ kind: "mutation",
18686
+ auth: "admin"
18687
+ }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
18529
18688
  profileId: string(),
18530
18689
  cols: number().int().positive(),
18531
18690
  rows: number().int().positive()
@@ -18539,6 +18698,26 @@ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }),
18539
18698
  }), _void(), {
18540
18699
  kind: "mutation",
18541
18700
  auth: "admin"
18701
+ }), method(object({
18702
+ sessionId: string(),
18703
+ afterSeq: number().int().nonnegative(),
18704
+ waitMs: number().int().min(0).max(2e3).default(0),
18705
+ /**
18706
+ * Wait when a just-opened session has no output yet. Kept opt-in so a
18707
+ * browser's initial repaint remains immediate; the camera snapshot
18708
+ * relay uses it to avoid encoding a blank startup frame.
18709
+ */
18710
+ waitForOutput: boolean().optional()
18711
+ }), TerminalOutputBatchSchema, {
18712
+ kind: "mutation",
18713
+ auth: "admin",
18714
+ timeoutMs: 15e3
18715
+ }), method(object({
18716
+ sessionId: string(),
18717
+ data: string().max(64 * 1024)
18718
+ }), _void(), {
18719
+ kind: "mutation",
18720
+ auth: "admin"
18542
18721
  }), method(object({ sessionId: string() }), _void(), {
18543
18722
  kind: "mutation",
18544
18723
  auth: "admin"
@@ -20469,6 +20648,7 @@ var FaceInfoSchema = object({
20469
20648
  var FaceFilterEnum = _enum([
20470
20649
  "unassigned",
20471
20650
  "recognized",
20651
+ "identified",
20472
20652
  "all"
20473
20653
  ]);
20474
20654
  var MediaFileLiteSchema$1 = object({
@@ -20497,6 +20677,8 @@ method(_void(), array(IdentitySchema).readonly()), method(object({ name: string(
20497
20677
  kind: "mutation",
20498
20678
  auth: "admin"
20499
20679
  }), method(object({
20680
+ /** Restrict to one camera. Absent keeps the cluster-wide gallery view. */
20681
+ deviceId: number().int().optional(),
20500
20682
  limit: number().int().positive().optional(),
20501
20683
  filter: FaceFilterEnum.optional(),
20502
20684
  /**
@@ -22262,6 +22444,10 @@ var OsdSourceSchema = discriminatedUnion("kind", [
22262
22444
  capName: string().min(1).max(64),
22263
22445
  /** Dot path inside the slice, e.g. `detected`, `value`, `mode`. */
22264
22446
  valuePath: string().min(1).max(64)
22447
+ }),
22448
+ object({
22449
+ kind: literal("latest-recognition"),
22450
+ recognition: _enum(["person", "plate"])
22265
22451
  })
22266
22452
  ]);
22267
22453
  var OsdSlotBindingSchema = object({
@@ -22367,6 +22553,15 @@ method(object({ deviceId: number().int() }), object({
22367
22553
  }), object({ success: literal(true) }), {
22368
22554
  kind: "mutation",
22369
22555
  auth: "admin"
22556
+ }), method(object({
22557
+ sourceDeviceId: number().int(),
22558
+ targetDeviceId: number().int()
22559
+ }), object({
22560
+ copied: number().int().nonnegative(),
22561
+ skipped: number().int().nonnegative()
22562
+ }), {
22563
+ kind: "mutation",
22564
+ auth: "admin"
22370
22565
  }), method(object({
22371
22566
  deviceId: number().int(),
22372
22567
  slotId: string().min(1),
@@ -23252,13 +23447,19 @@ method(object({
23252
23447
  }), {
23253
23448
  kind: "mutation",
23254
23449
  auth: "admin"
23255
- }), method(RelocateFootageInputSchema, object({ jobId: string() }), {
23450
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
23256
23451
  kind: "mutation",
23257
23452
  auth: "admin"
23258
- }), method(object({}), array(RelocateJobSchema).readonly(), {
23259
- kind: "query",
23453
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
23454
+ kind: "mutation",
23260
23455
  auth: "admin"
23261
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
23456
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
23457
+ kind: "mutation",
23458
+ auth: "admin"
23459
+ }), method(StorageMigrationFootageMoveInputSchema, object({ jobId: string() }), {
23460
+ kind: "mutation",
23461
+ auth: "admin"
23462
+ }), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
23262
23463
  kind: "mutation",
23263
23464
  auth: "admin"
23264
23465
  });
@@ -27380,6 +27581,12 @@ Object.freeze({
27380
27581
  addonId: null,
27381
27582
  access: "delete"
27382
27583
  },
27584
+ "osdManager.copyDeviceConfiguration": {
27585
+ capName: "osd-manager",
27586
+ capScope: "system",
27587
+ addonId: null,
27588
+ access: "create"
27589
+ },
27383
27590
  "osdManager.getConditionSupport": {
27384
27591
  capName: "osd-manager",
27385
27592
  capScope: "system",
@@ -27476,7 +27683,7 @@ Object.freeze({
27476
27683
  addonId: null,
27477
27684
  access: "create"
27478
27685
  },
27479
- "pipelineAnalytics.cancelMediaRelocate": {
27686
+ "pipelineAnalytics.cancelStorageMigrationMove": {
27480
27687
  capName: "pipeline-analytics",
27481
27688
  capScope: "device",
27482
27689
  addonId: null,
@@ -27548,12 +27755,6 @@ Object.freeze({
27548
27755
  addonId: null,
27549
27756
  access: "view"
27550
27757
  },
27551
- "pipelineAnalytics.getMediaRelocateStatus": {
27552
- capName: "pipeline-analytics",
27553
- capScope: "device",
27554
- addonId: null,
27555
- access: "view"
27556
- },
27557
27758
  "pipelineAnalytics.getMotionEvents": {
27558
27759
  capName: "pipeline-analytics",
27559
27760
  capScope: "device",
@@ -27590,6 +27791,12 @@ Object.freeze({
27590
27791
  addonId: null,
27591
27792
  access: "view"
27592
27793
  },
27794
+ "pipelineAnalytics.getStorageMigrationMoveStatus": {
27795
+ capName: "pipeline-analytics",
27796
+ capScope: "device",
27797
+ addonId: null,
27798
+ access: "view"
27799
+ },
27593
27800
  "pipelineAnalytics.getTrack": {
27594
27801
  capName: "pipeline-analytics",
27595
27802
  capScope: "device",
@@ -27668,6 +27875,12 @@ Object.freeze({
27668
27875
  addonId: null,
27669
27876
  access: "view"
27670
27877
  },
27878
+ "pipelineAnalytics.pauseForStorageMigration": {
27879
+ capName: "pipeline-analytics",
27880
+ capScope: "device",
27881
+ addonId: null,
27882
+ access: "create"
27883
+ },
27671
27884
  "pipelineAnalytics.proposeRetrainAnnotations": {
27672
27885
  capName: "pipeline-analytics",
27673
27886
  capScope: "device",
@@ -27698,7 +27911,7 @@ Object.freeze({
27698
27911
  addonId: null,
27699
27912
  access: "create"
27700
27913
  },
27701
- "pipelineAnalytics.relocateMedia": {
27914
+ "pipelineAnalytics.refreshStorageLocationsForMigration": {
27702
27915
  capName: "pipeline-analytics",
27703
27916
  capScope: "device",
27704
27917
  addonId: null,
@@ -27710,6 +27923,12 @@ Object.freeze({
27710
27923
  addonId: null,
27711
27924
  access: "create"
27712
27925
  },
27926
+ "pipelineAnalytics.resumeForStorageMigration": {
27927
+ capName: "pipeline-analytics",
27928
+ capScope: "device",
27929
+ addonId: null,
27930
+ access: "create"
27931
+ },
27713
27932
  "pipelineAnalytics.saveRetrainAnnotations": {
27714
27933
  capName: "pipeline-analytics",
27715
27934
  capScope: "device",
@@ -27734,6 +27953,12 @@ Object.freeze({
27734
27953
  addonId: null,
27735
27954
  access: "create"
27736
27955
  },
27956
+ "pipelineAnalytics.startStorageMigrationMove": {
27957
+ capName: "pipeline-analytics",
27958
+ capScope: "device",
27959
+ addonId: null,
27960
+ access: "create"
27961
+ },
27737
27962
  "pipelineAnalytics.wipeAllAnalytics": {
27738
27963
  capName: "pipeline-analytics",
27739
27964
  capScope: "device",
@@ -28100,6 +28325,12 @@ Object.freeze({
28100
28325
  addonId: null,
28101
28326
  access: "view"
28102
28327
  },
28328
+ "pipelineOrchestrator.pauseForStorageMigration": {
28329
+ capName: "pipeline-orchestrator",
28330
+ capScope: "system",
28331
+ addonId: null,
28332
+ access: "create"
28333
+ },
28103
28334
  "pipelineOrchestrator.rebalance": {
28104
28335
  capName: "pipeline-orchestrator",
28105
28336
  capScope: "system",
@@ -28124,6 +28355,12 @@ Object.freeze({
28124
28355
  addonId: null,
28125
28356
  access: "view"
28126
28357
  },
28358
+ "pipelineOrchestrator.resumeForStorageMigration": {
28359
+ capName: "pipeline-orchestrator",
28360
+ capScope: "system",
28361
+ addonId: null,
28362
+ access: "create"
28363
+ },
28127
28364
  "pipelineOrchestrator.saveTemplate": {
28128
28365
  capName: "pipeline-orchestrator",
28129
28366
  capScope: "system",
@@ -28520,7 +28757,7 @@ Object.freeze({
28520
28757
  addonId: null,
28521
28758
  access: "create"
28522
28759
  },
28523
- "recording.cancelRelocate": {
28760
+ "recording.cancelStorageMigrationMove": {
28524
28761
  capName: "recording",
28525
28762
  capScope: "system",
28526
28763
  addonId: null,
@@ -28556,7 +28793,7 @@ Object.freeze({
28556
28793
  addonId: null,
28557
28794
  access: "view"
28558
28795
  },
28559
- "recording.getRelocateStatus": {
28796
+ "recording.getStorageMigrationMoveStatus": {
28560
28797
  capName: "recording",
28561
28798
  capScope: "system",
28562
28799
  addonId: null,
@@ -28580,6 +28817,12 @@ Object.freeze({
28580
28817
  addonId: null,
28581
28818
  access: "view"
28582
28819
  },
28820
+ "recording.pauseForStorageMigration": {
28821
+ capName: "recording",
28822
+ capScope: "system",
28823
+ addonId: null,
28824
+ access: "create"
28825
+ },
28583
28826
  "recording.pruneFootage": {
28584
28827
  capName: "recording",
28585
28828
  capScope: "system",
@@ -28598,7 +28841,7 @@ Object.freeze({
28598
28841
  addonId: null,
28599
28842
  access: "view"
28600
28843
  },
28601
- "recording.relocateFootage": {
28844
+ "recording.refreshStorageLocationsForMigration": {
28602
28845
  capName: "recording",
28603
28846
  capScope: "system",
28604
28847
  addonId: null,
@@ -28622,12 +28865,24 @@ Object.freeze({
28622
28865
  addonId: null,
28623
28866
  access: "create"
28624
28867
  },
28868
+ "recording.resumeForStorageMigration": {
28869
+ capName: "recording",
28870
+ capScope: "system",
28871
+ addonId: null,
28872
+ access: "create"
28873
+ },
28625
28874
  "recording.setDeviceConfig": {
28626
28875
  capName: "recording",
28627
28876
  capScope: "system",
28628
28877
  addonId: null,
28629
28878
  access: "create"
28630
28879
  },
28880
+ "recording.startStorageMigrationMove": {
28881
+ capName: "recording",
28882
+ capScope: "system",
28883
+ addonId: null,
28884
+ access: "create"
28885
+ },
28631
28886
  "recordingExport.cancelExport": {
28632
28887
  capName: "recordingExport",
28633
28888
  capScope: "system",
@@ -29018,6 +29273,30 @@ Object.freeze({
29018
29273
  addonId: null,
29019
29274
  access: "view"
29020
29275
  },
29276
+ "storageMigration.cancel": {
29277
+ capName: "storage-migration",
29278
+ capScope: "system",
29279
+ addonId: null,
29280
+ access: "create"
29281
+ },
29282
+ "storageMigration.plan": {
29283
+ capName: "storage-migration",
29284
+ capScope: "system",
29285
+ addonId: null,
29286
+ access: "view"
29287
+ },
29288
+ "storageMigration.start": {
29289
+ capName: "storage-migration",
29290
+ capScope: "system",
29291
+ addonId: null,
29292
+ access: "create"
29293
+ },
29294
+ "storageMigration.status": {
29295
+ capName: "storage-migration",
29296
+ capScope: "system",
29297
+ addonId: null,
29298
+ access: "view"
29299
+ },
29021
29300
  "storageProvider.abortUpload": {
29022
29301
  capName: "storage-provider",
29023
29302
  capScope: "system",
@@ -29396,12 +29675,42 @@ Object.freeze({
29396
29675
  addonId: null,
29397
29676
  access: "create"
29398
29677
  },
29678
+ "terminalSession.adoptLegacyMonitor": {
29679
+ capName: "terminal-session",
29680
+ capScope: "system",
29681
+ addonId: null,
29682
+ access: "create"
29683
+ },
29399
29684
  "terminalSession.close": {
29400
29685
  capName: "terminal-session",
29401
29686
  capScope: "system",
29402
29687
  addonId: null,
29403
29688
  access: "create"
29404
29689
  },
29690
+ "terminalSession.createInstance": {
29691
+ capName: "terminal-session",
29692
+ capScope: "system",
29693
+ addonId: null,
29694
+ access: "create"
29695
+ },
29696
+ "terminalSession.deleteInstance": {
29697
+ capName: "terminal-session",
29698
+ capScope: "system",
29699
+ addonId: null,
29700
+ access: "delete"
29701
+ },
29702
+ "terminalSession.listInstances": {
29703
+ capName: "terminal-session",
29704
+ capScope: "system",
29705
+ addonId: null,
29706
+ access: "view"
29707
+ },
29708
+ "terminalSession.listLegacyCameras": {
29709
+ capName: "terminal-session",
29710
+ capScope: "system",
29711
+ addonId: null,
29712
+ access: "view"
29713
+ },
29405
29714
  "terminalSession.listProfiles": {
29406
29715
  capName: "terminal-session",
29407
29716
  capScope: "system",
@@ -29420,12 +29729,30 @@ Object.freeze({
29420
29729
  addonId: null,
29421
29730
  access: "create"
29422
29731
  },
29732
+ "terminalSession.pullOutput": {
29733
+ capName: "terminal-session",
29734
+ capScope: "system",
29735
+ addonId: null,
29736
+ access: "create"
29737
+ },
29423
29738
  "terminalSession.resize": {
29424
29739
  capName: "terminal-session",
29425
29740
  capScope: "system",
29426
29741
  addonId: null,
29427
29742
  access: "create"
29428
29743
  },
29744
+ "terminalSession.setInstanceEnabled": {
29745
+ capName: "terminal-session",
29746
+ capScope: "system",
29747
+ addonId: null,
29748
+ access: "create"
29749
+ },
29750
+ "terminalSession.writeInput": {
29751
+ capName: "terminal-session",
29752
+ capScope: "system",
29753
+ addonId: null,
29754
+ access: "create"
29755
+ },
29429
29756
  "toast.onToast": {
29430
29757
  capName: "toast",
29431
29758
  capScope: "system",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-export-alexa",
3
- "version": "1.2.15",
3
+ "version": "1.2.17",
4
4
  "description": "Alexa Smart Home Skill export — hub-side OAuth provider + directive handler. The companion AWS Lambda forwards Alexa directives to this addon's /addon/export-alexa/directive endpoint.",
5
5
  "keywords": [
6
6
  "camstack",