@camstack/addon-smtp-nodemailer 1.2.10 → 1.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.
@@ -7572,12 +7572,11 @@ var RecordingConfigSchema = object({
7572
7572
  /**
7573
7573
  * Entity-relocation job state (storage entity-routing spec, Phase 4).
7574
7574
  *
7575
- * One shape shared by the recorder's `relocateFootage` (segments) and
7576
- * pipeline-analytics' `relocateMedia` (event media blobs) so the admin Data
7577
- * page renders both movers with one component. Jobs are in-RAM (a restart
7578
- * forgets them re-running is safe by construction: copy-if-absent, delete
7579
- * after verify) and each completed/failed run also lands one durable ops-log
7580
- * row on the owning addon's surface.
7575
+ * One shape shared by the recorder and pipeline-analytics internal movers.
7576
+ * The public admin surface is `storage-migration`; child jobs remain in RAM
7577
+ * because copy-if-absent, verify, delete and index/row repoint are resumable.
7578
+ * Each completed/failed run also lands one durable ops-log row on its owning
7579
+ * addon surface.
7581
7580
  */
7582
7581
  var RelocateJobStateSchema = _enum([
7583
7582
  "running",
@@ -7604,19 +7603,100 @@ var RelocateJobSchema = object({
7604
7603
  finishedAt: number().nullable(),
7605
7604
  error: string().nullable()
7606
7605
  });
7606
+ /** Profile-derived footage selection used only by the migration coordinator:
7607
+ * `recordings` owns high+mid; `recordingsLow` owns low. */
7608
+ var RelocateFootageClassSchema = _enum(["recordings", "recordingsLow"]);
7607
7609
  var RelocateFootageInputSchema = object({
7608
- deviceId: number().optional(),
7609
7610
  fromLocationId: string(),
7610
7611
  toLocationId: string(),
7611
7612
  entities: array(_enum(["segments"])).optional(),
7613
+ /** Limits relocation to the logical profile class. Omit only for the
7614
+ * pre-orchestration compatibility path. */
7615
+ footageClass: RelocateFootageClassSchema.optional(),
7612
7616
  /** Copy throttle in MB/s (default 40) — the drain is a background chore,
7613
7617
  * never allowed to starve live writers. */
7614
7618
  throttleMbps: number().min(1).max(1e3).optional()
7615
7619
  });
7616
- var RelocateMediaInputSchema = object({
7617
- deviceId: number().optional(),
7620
+ /** Internal, lease-scoped participant operation. It is intentionally separate
7621
+ * from persistent recording settings: a migration never changes
7622
+ * `RecordingConfig.enabled` or camera wrapper bindings. */
7623
+ var StorageMigrationLeaseInputSchema = object({ leaseId: string().min(1) });
7624
+ var StorageMigrationFootageMoveInputSchema = RelocateFootageInputSchema.extend({ leaseId: string().min(1) });
7625
+ var StorageMigrationMediaMoveInputSchema = object({
7618
7626
  toLocationId: string(),
7619
7627
  throttleMbps: number().min(1).max(1e3).optional()
7628
+ }).extend({ leaseId: string().min(1) });
7629
+ /** The independently selectable logical storage classes. `recordings`
7630
+ * encompasses the high and mid segment profiles; `recordingsLow` is low
7631
+ * segments; `eventMedia` is post-analysis blobs. */
7632
+ var StorageMigrationClassSchema = _enum([
7633
+ "recordings",
7634
+ "recordingsLow",
7635
+ "eventMedia"
7636
+ ]);
7637
+ /** A destination is always an existing, fully-qualified location id. The
7638
+ * migration API intentionally never changes a source location's `basePath`:
7639
+ * callers create a new `<type>:<slug>` location, then select it here. */
7640
+ var StorageMigrationDestinationsSchema = object({
7641
+ recordings: string().min(1).optional(),
7642
+ recordingsLow: string().min(1).optional(),
7643
+ eventMedia: string().min(1).optional()
7644
+ }).refine((value) => Object.keys(value).length > 0, { message: "select at least one storage class" });
7645
+ /** Shared input for planning and starting an orchestrated storage migration. */
7646
+ var StorageMigrationInputSchema = object({
7647
+ destinations: StorageMigrationDestinationsSchema,
7648
+ throttleMbps: number().min(1).max(1e3).optional()
7649
+ });
7650
+ /** The durable coordinator state machine. The only phase that changes default
7651
+ * locations is `repointing`, after every selected mover has completed and been
7652
+ * verified. */
7653
+ var StorageMigrationPhaseSchema = _enum([
7654
+ "planning",
7655
+ "pausing",
7656
+ "moving",
7657
+ "verifying",
7658
+ "repointing",
7659
+ "refreshing",
7660
+ "resuming",
7661
+ "done",
7662
+ "failed",
7663
+ "cancelled"
7664
+ ]);
7665
+ var StorageMigrationParticipantSchema = _enum([
7666
+ "pipeline",
7667
+ "recorder",
7668
+ "analytics"
7669
+ ]);
7670
+ var StorageMigrationMoveSchema = object({
7671
+ storageClass: StorageMigrationClassSchema,
7672
+ fromLocationId: string(),
7673
+ toLocationId: string(),
7674
+ moverJobId: string().nullable(),
7675
+ state: RelocateJobStateSchema.nullable(),
7676
+ error: string().nullable()
7677
+ });
7678
+ var StorageMigrationJobSchema = object({
7679
+ jobId: string(),
7680
+ phase: StorageMigrationPhaseSchema,
7681
+ destinations: StorageMigrationDestinationsSchema,
7682
+ throttleMbps: number(),
7683
+ moves: array(StorageMigrationMoveSchema),
7684
+ pauseLeaseId: string().nullable(),
7685
+ pausedParticipants: array(StorageMigrationParticipantSchema),
7686
+ repointed: boolean(),
7687
+ cancelRequested: boolean(),
7688
+ startedAt: number(),
7689
+ updatedAt: number(),
7690
+ finishedAt: number().nullable(),
7691
+ error: string().nullable()
7692
+ });
7693
+ var StorageMigrationPlanSchema = object({
7694
+ destinations: StorageMigrationDestinationsSchema,
7695
+ moves: array(object({
7696
+ storageClass: StorageMigrationClassSchema,
7697
+ fromLocationId: string(),
7698
+ toLocationId: string()
7699
+ }))
7620
7700
  });
7621
7701
  /**
7622
7702
  * `StorageLocationType` — an addon-declared id that identifies the *kind* of
@@ -15992,13 +16072,19 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
15992
16072
  }), method(object({ deviceId: number() }), EventPruneCountsSchema, {
15993
16073
  kind: "mutation",
15994
16074
  auth: "admin"
15995
- }), method(RelocateMediaInputSchema, object({ jobId: string() }), {
16075
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
15996
16076
  kind: "mutation",
15997
16077
  auth: "admin"
15998
- }), method(object({}), array(RelocateJobSchema).readonly(), {
15999
- kind: "query",
16078
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
16079
+ kind: "mutation",
16000
16080
  auth: "admin"
16001
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
16081
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
16082
+ kind: "mutation",
16083
+ auth: "admin"
16084
+ }), method(StorageMigrationMediaMoveInputSchema, object({ jobId: string() }), {
16085
+ kind: "mutation",
16086
+ auth: "admin"
16087
+ }), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
16002
16088
  kind: "mutation",
16003
16089
  auth: "admin"
16004
16090
  }), method(OpsLogQueryInputSchema, array(OpsLogEntrySchema).readonly(), {
@@ -17495,7 +17581,13 @@ var NodeInferenceDevicesSchema = object({
17495
17581
  reachable: boolean(),
17496
17582
  devices: array(NodeInferenceDeviceSchema).readonly()
17497
17583
  });
17498
- method(object({
17584
+ method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
17585
+ kind: "mutation",
17586
+ auth: "admin"
17587
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
17588
+ kind: "mutation",
17589
+ auth: "admin"
17590
+ }), method(object({
17499
17591
  deviceId: number(),
17500
17592
  agentNodeId: string()
17501
17593
  }), object({ success: literal(true) }), {
@@ -18182,6 +18274,13 @@ method(object({ locationId: string() }), EvictableUsageSchema), method(object({
18182
18274
  locationId: string(),
18183
18275
  targetBytes: number().int().positive()
18184
18276
  }), EvictResultSchema, { kind: "mutation" });
18277
+ method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin" }), method(StorageMigrationInputSchema, object({ jobId: string() }), {
18278
+ kind: "mutation",
18279
+ auth: "admin"
18280
+ }), method(object({ jobId: string().optional() }), StorageMigrationJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
18281
+ kind: "mutation",
18282
+ auth: "admin"
18283
+ });
18185
18284
  var ProviderInfoSchema = discriminatedUnion("shouldSaveDiskSpace", [object({
18186
18285
  providerId: string().min(1),
18187
18286
  displayName: string().min(1),
@@ -18285,7 +18384,67 @@ var TerminalProfileInfoSchema = object({
18285
18384
  label: string(),
18286
18385
  description: string().optional()
18287
18386
  });
18288
- method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
18387
+ /**
18388
+ * A durable operator-created Terminal instance. Profiles are templates; only
18389
+ * an instance declares a camera.
18390
+ */
18391
+ var TerminalInstanceInfoSchema = object({
18392
+ instanceId: string(),
18393
+ cameraStableId: string(),
18394
+ nodeId: string(),
18395
+ profileId: string(),
18396
+ profileLabel: string(),
18397
+ name: string(),
18398
+ enabled: boolean()
18399
+ });
18400
+ var TerminalLegacyCameraSchema = object({
18401
+ stableId: string(),
18402
+ nodeId: string(),
18403
+ profileId: string(),
18404
+ profileLabel: string(),
18405
+ name: string(),
18406
+ /** Only legacy monitor cameras can retain their historic stable identity. */
18407
+ adoptable: boolean()
18408
+ });
18409
+ var TerminalOutputEventSchema = discriminatedUnion("kind", [object({
18410
+ seq: number().int().positive(),
18411
+ kind: literal("data"),
18412
+ data: string()
18413
+ }), object({
18414
+ seq: number().int().positive(),
18415
+ kind: literal("exit"),
18416
+ exitCode: number().int(),
18417
+ signal: number().int().optional()
18418
+ })]);
18419
+ var TerminalOutputBatchSchema = object({
18420
+ cursor: number().int().nonnegative(),
18421
+ reset: boolean(),
18422
+ snapshot: string().optional(),
18423
+ events: array(TerminalOutputEventSchema).readonly()
18424
+ });
18425
+ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalInstanceInfoSchema).readonly(), { auth: "admin" }), method(object({
18426
+ targetNodeId: string().min(1),
18427
+ profileId: string().min(1),
18428
+ name: string().trim().min(1).max(160).optional()
18429
+ }), TerminalInstanceInfoSchema, {
18430
+ kind: "mutation",
18431
+ auth: "admin"
18432
+ }), method(object({ instanceId: string().min(1) }), _void(), {
18433
+ kind: "mutation",
18434
+ auth: "admin"
18435
+ }), method(object({
18436
+ instanceId: string().min(1),
18437
+ enabled: boolean()
18438
+ }), TerminalInstanceInfoSchema, {
18439
+ kind: "mutation",
18440
+ auth: "admin"
18441
+ }), method(_void(), array(TerminalLegacyCameraSchema).readonly(), { auth: "admin" }), method(object({
18442
+ stableId: string().min(1),
18443
+ name: string().trim().min(1).max(160).optional()
18444
+ }), TerminalInstanceInfoSchema, {
18445
+ kind: "mutation",
18446
+ auth: "admin"
18447
+ }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
18289
18448
  profileId: string(),
18290
18449
  cols: number().int().positive(),
18291
18450
  rows: number().int().positive()
@@ -18299,6 +18458,26 @@ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }),
18299
18458
  }), _void(), {
18300
18459
  kind: "mutation",
18301
18460
  auth: "admin"
18461
+ }), method(object({
18462
+ sessionId: string(),
18463
+ afterSeq: number().int().nonnegative(),
18464
+ waitMs: number().int().min(0).max(2e3).default(0),
18465
+ /**
18466
+ * Wait when a just-opened session has no output yet. Kept opt-in so a
18467
+ * browser's initial repaint remains immediate; the camera snapshot
18468
+ * relay uses it to avoid encoding a blank startup frame.
18469
+ */
18470
+ waitForOutput: boolean().optional()
18471
+ }), TerminalOutputBatchSchema, {
18472
+ kind: "mutation",
18473
+ auth: "admin",
18474
+ timeoutMs: 15e3
18475
+ }), method(object({
18476
+ sessionId: string(),
18477
+ data: string().max(64 * 1024)
18478
+ }), _void(), {
18479
+ kind: "mutation",
18480
+ auth: "admin"
18302
18481
  }), method(object({ sessionId: string() }), _void(), {
18303
18482
  kind: "mutation",
18304
18483
  auth: "admin"
@@ -20229,6 +20408,7 @@ var FaceInfoSchema = object({
20229
20408
  var FaceFilterEnum = _enum([
20230
20409
  "unassigned",
20231
20410
  "recognized",
20411
+ "identified",
20232
20412
  "all"
20233
20413
  ]);
20234
20414
  var MediaFileLiteSchema$1 = object({
@@ -20257,6 +20437,8 @@ method(_void(), array(IdentitySchema).readonly()), method(object({ name: string(
20257
20437
  kind: "mutation",
20258
20438
  auth: "admin"
20259
20439
  }), method(object({
20440
+ /** Restrict to one camera. Absent keeps the cluster-wide gallery view. */
20441
+ deviceId: number().int().optional(),
20260
20442
  limit: number().int().positive().optional(),
20261
20443
  filter: FaceFilterEnum.optional(),
20262
20444
  /**
@@ -22022,6 +22204,10 @@ var OsdSourceSchema = discriminatedUnion("kind", [
22022
22204
  capName: string().min(1).max(64),
22023
22205
  /** Dot path inside the slice, e.g. `detected`, `value`, `mode`. */
22024
22206
  valuePath: string().min(1).max(64)
22207
+ }),
22208
+ object({
22209
+ kind: literal("latest-recognition"),
22210
+ recognition: _enum(["person", "plate"])
22025
22211
  })
22026
22212
  ]);
22027
22213
  var OsdSlotBindingSchema = object({
@@ -22127,6 +22313,15 @@ method(object({ deviceId: number().int() }), object({
22127
22313
  }), object({ success: literal(true) }), {
22128
22314
  kind: "mutation",
22129
22315
  auth: "admin"
22316
+ }), method(object({
22317
+ sourceDeviceId: number().int(),
22318
+ targetDeviceId: number().int()
22319
+ }), object({
22320
+ copied: number().int().nonnegative(),
22321
+ skipped: number().int().nonnegative()
22322
+ }), {
22323
+ kind: "mutation",
22324
+ auth: "admin"
22130
22325
  }), method(object({
22131
22326
  deviceId: number().int(),
22132
22327
  slotId: string().min(1),
@@ -23012,13 +23207,19 @@ method(object({
23012
23207
  }), {
23013
23208
  kind: "mutation",
23014
23209
  auth: "admin"
23015
- }), method(RelocateFootageInputSchema, object({ jobId: string() }), {
23210
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
23016
23211
  kind: "mutation",
23017
23212
  auth: "admin"
23018
- }), method(object({}), array(RelocateJobSchema).readonly(), {
23019
- kind: "query",
23213
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
23214
+ kind: "mutation",
23020
23215
  auth: "admin"
23021
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
23216
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
23217
+ kind: "mutation",
23218
+ auth: "admin"
23219
+ }), method(StorageMigrationFootageMoveInputSchema, object({ jobId: string() }), {
23220
+ kind: "mutation",
23221
+ auth: "admin"
23222
+ }), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
23022
23223
  kind: "mutation",
23023
23224
  auth: "admin"
23024
23225
  });
@@ -27140,6 +27341,12 @@ Object.freeze({
27140
27341
  addonId: null,
27141
27342
  access: "delete"
27142
27343
  },
27344
+ "osdManager.copyDeviceConfiguration": {
27345
+ capName: "osd-manager",
27346
+ capScope: "system",
27347
+ addonId: null,
27348
+ access: "create"
27349
+ },
27143
27350
  "osdManager.getConditionSupport": {
27144
27351
  capName: "osd-manager",
27145
27352
  capScope: "system",
@@ -27236,7 +27443,7 @@ Object.freeze({
27236
27443
  addonId: null,
27237
27444
  access: "create"
27238
27445
  },
27239
- "pipelineAnalytics.cancelMediaRelocate": {
27446
+ "pipelineAnalytics.cancelStorageMigrationMove": {
27240
27447
  capName: "pipeline-analytics",
27241
27448
  capScope: "device",
27242
27449
  addonId: null,
@@ -27308,12 +27515,6 @@ Object.freeze({
27308
27515
  addonId: null,
27309
27516
  access: "view"
27310
27517
  },
27311
- "pipelineAnalytics.getMediaRelocateStatus": {
27312
- capName: "pipeline-analytics",
27313
- capScope: "device",
27314
- addonId: null,
27315
- access: "view"
27316
- },
27317
27518
  "pipelineAnalytics.getMotionEvents": {
27318
27519
  capName: "pipeline-analytics",
27319
27520
  capScope: "device",
@@ -27350,6 +27551,12 @@ Object.freeze({
27350
27551
  addonId: null,
27351
27552
  access: "view"
27352
27553
  },
27554
+ "pipelineAnalytics.getStorageMigrationMoveStatus": {
27555
+ capName: "pipeline-analytics",
27556
+ capScope: "device",
27557
+ addonId: null,
27558
+ access: "view"
27559
+ },
27353
27560
  "pipelineAnalytics.getTrack": {
27354
27561
  capName: "pipeline-analytics",
27355
27562
  capScope: "device",
@@ -27428,6 +27635,12 @@ Object.freeze({
27428
27635
  addonId: null,
27429
27636
  access: "view"
27430
27637
  },
27638
+ "pipelineAnalytics.pauseForStorageMigration": {
27639
+ capName: "pipeline-analytics",
27640
+ capScope: "device",
27641
+ addonId: null,
27642
+ access: "create"
27643
+ },
27431
27644
  "pipelineAnalytics.proposeRetrainAnnotations": {
27432
27645
  capName: "pipeline-analytics",
27433
27646
  capScope: "device",
@@ -27458,7 +27671,7 @@ Object.freeze({
27458
27671
  addonId: null,
27459
27672
  access: "create"
27460
27673
  },
27461
- "pipelineAnalytics.relocateMedia": {
27674
+ "pipelineAnalytics.refreshStorageLocationsForMigration": {
27462
27675
  capName: "pipeline-analytics",
27463
27676
  capScope: "device",
27464
27677
  addonId: null,
@@ -27470,6 +27683,12 @@ Object.freeze({
27470
27683
  addonId: null,
27471
27684
  access: "create"
27472
27685
  },
27686
+ "pipelineAnalytics.resumeForStorageMigration": {
27687
+ capName: "pipeline-analytics",
27688
+ capScope: "device",
27689
+ addonId: null,
27690
+ access: "create"
27691
+ },
27473
27692
  "pipelineAnalytics.saveRetrainAnnotations": {
27474
27693
  capName: "pipeline-analytics",
27475
27694
  capScope: "device",
@@ -27494,6 +27713,12 @@ Object.freeze({
27494
27713
  addonId: null,
27495
27714
  access: "create"
27496
27715
  },
27716
+ "pipelineAnalytics.startStorageMigrationMove": {
27717
+ capName: "pipeline-analytics",
27718
+ capScope: "device",
27719
+ addonId: null,
27720
+ access: "create"
27721
+ },
27497
27722
  "pipelineAnalytics.wipeAllAnalytics": {
27498
27723
  capName: "pipeline-analytics",
27499
27724
  capScope: "device",
@@ -27860,6 +28085,12 @@ Object.freeze({
27860
28085
  addonId: null,
27861
28086
  access: "view"
27862
28087
  },
28088
+ "pipelineOrchestrator.pauseForStorageMigration": {
28089
+ capName: "pipeline-orchestrator",
28090
+ capScope: "system",
28091
+ addonId: null,
28092
+ access: "create"
28093
+ },
27863
28094
  "pipelineOrchestrator.rebalance": {
27864
28095
  capName: "pipeline-orchestrator",
27865
28096
  capScope: "system",
@@ -27884,6 +28115,12 @@ Object.freeze({
27884
28115
  addonId: null,
27885
28116
  access: "view"
27886
28117
  },
28118
+ "pipelineOrchestrator.resumeForStorageMigration": {
28119
+ capName: "pipeline-orchestrator",
28120
+ capScope: "system",
28121
+ addonId: null,
28122
+ access: "create"
28123
+ },
27887
28124
  "pipelineOrchestrator.saveTemplate": {
27888
28125
  capName: "pipeline-orchestrator",
27889
28126
  capScope: "system",
@@ -28280,7 +28517,7 @@ Object.freeze({
28280
28517
  addonId: null,
28281
28518
  access: "create"
28282
28519
  },
28283
- "recording.cancelRelocate": {
28520
+ "recording.cancelStorageMigrationMove": {
28284
28521
  capName: "recording",
28285
28522
  capScope: "system",
28286
28523
  addonId: null,
@@ -28316,7 +28553,7 @@ Object.freeze({
28316
28553
  addonId: null,
28317
28554
  access: "view"
28318
28555
  },
28319
- "recording.getRelocateStatus": {
28556
+ "recording.getStorageMigrationMoveStatus": {
28320
28557
  capName: "recording",
28321
28558
  capScope: "system",
28322
28559
  addonId: null,
@@ -28340,6 +28577,12 @@ Object.freeze({
28340
28577
  addonId: null,
28341
28578
  access: "view"
28342
28579
  },
28580
+ "recording.pauseForStorageMigration": {
28581
+ capName: "recording",
28582
+ capScope: "system",
28583
+ addonId: null,
28584
+ access: "create"
28585
+ },
28343
28586
  "recording.pruneFootage": {
28344
28587
  capName: "recording",
28345
28588
  capScope: "system",
@@ -28358,7 +28601,7 @@ Object.freeze({
28358
28601
  addonId: null,
28359
28602
  access: "view"
28360
28603
  },
28361
- "recording.relocateFootage": {
28604
+ "recording.refreshStorageLocationsForMigration": {
28362
28605
  capName: "recording",
28363
28606
  capScope: "system",
28364
28607
  addonId: null,
@@ -28382,12 +28625,24 @@ Object.freeze({
28382
28625
  addonId: null,
28383
28626
  access: "create"
28384
28627
  },
28628
+ "recording.resumeForStorageMigration": {
28629
+ capName: "recording",
28630
+ capScope: "system",
28631
+ addonId: null,
28632
+ access: "create"
28633
+ },
28385
28634
  "recording.setDeviceConfig": {
28386
28635
  capName: "recording",
28387
28636
  capScope: "system",
28388
28637
  addonId: null,
28389
28638
  access: "create"
28390
28639
  },
28640
+ "recording.startStorageMigrationMove": {
28641
+ capName: "recording",
28642
+ capScope: "system",
28643
+ addonId: null,
28644
+ access: "create"
28645
+ },
28391
28646
  "recordingExport.cancelExport": {
28392
28647
  capName: "recordingExport",
28393
28648
  capScope: "system",
@@ -28778,6 +29033,30 @@ Object.freeze({
28778
29033
  addonId: null,
28779
29034
  access: "view"
28780
29035
  },
29036
+ "storageMigration.cancel": {
29037
+ capName: "storage-migration",
29038
+ capScope: "system",
29039
+ addonId: null,
29040
+ access: "create"
29041
+ },
29042
+ "storageMigration.plan": {
29043
+ capName: "storage-migration",
29044
+ capScope: "system",
29045
+ addonId: null,
29046
+ access: "view"
29047
+ },
29048
+ "storageMigration.start": {
29049
+ capName: "storage-migration",
29050
+ capScope: "system",
29051
+ addonId: null,
29052
+ access: "create"
29053
+ },
29054
+ "storageMigration.status": {
29055
+ capName: "storage-migration",
29056
+ capScope: "system",
29057
+ addonId: null,
29058
+ access: "view"
29059
+ },
28781
29060
  "storageProvider.abortUpload": {
28782
29061
  capName: "storage-provider",
28783
29062
  capScope: "system",
@@ -29156,12 +29435,42 @@ Object.freeze({
29156
29435
  addonId: null,
29157
29436
  access: "create"
29158
29437
  },
29438
+ "terminalSession.adoptLegacyMonitor": {
29439
+ capName: "terminal-session",
29440
+ capScope: "system",
29441
+ addonId: null,
29442
+ access: "create"
29443
+ },
29159
29444
  "terminalSession.close": {
29160
29445
  capName: "terminal-session",
29161
29446
  capScope: "system",
29162
29447
  addonId: null,
29163
29448
  access: "create"
29164
29449
  },
29450
+ "terminalSession.createInstance": {
29451
+ capName: "terminal-session",
29452
+ capScope: "system",
29453
+ addonId: null,
29454
+ access: "create"
29455
+ },
29456
+ "terminalSession.deleteInstance": {
29457
+ capName: "terminal-session",
29458
+ capScope: "system",
29459
+ addonId: null,
29460
+ access: "delete"
29461
+ },
29462
+ "terminalSession.listInstances": {
29463
+ capName: "terminal-session",
29464
+ capScope: "system",
29465
+ addonId: null,
29466
+ access: "view"
29467
+ },
29468
+ "terminalSession.listLegacyCameras": {
29469
+ capName: "terminal-session",
29470
+ capScope: "system",
29471
+ addonId: null,
29472
+ access: "view"
29473
+ },
29165
29474
  "terminalSession.listProfiles": {
29166
29475
  capName: "terminal-session",
29167
29476
  capScope: "system",
@@ -29180,12 +29489,30 @@ Object.freeze({
29180
29489
  addonId: null,
29181
29490
  access: "create"
29182
29491
  },
29492
+ "terminalSession.pullOutput": {
29493
+ capName: "terminal-session",
29494
+ capScope: "system",
29495
+ addonId: null,
29496
+ access: "create"
29497
+ },
29183
29498
  "terminalSession.resize": {
29184
29499
  capName: "terminal-session",
29185
29500
  capScope: "system",
29186
29501
  addonId: null,
29187
29502
  access: "create"
29188
29503
  },
29504
+ "terminalSession.setInstanceEnabled": {
29505
+ capName: "terminal-session",
29506
+ capScope: "system",
29507
+ addonId: null,
29508
+ access: "create"
29509
+ },
29510
+ "terminalSession.writeInput": {
29511
+ capName: "terminal-session",
29512
+ capScope: "system",
29513
+ addonId: null,
29514
+ access: "create"
29515
+ },
29189
29516
  "toast.onToast": {
29190
29517
  capName: "toast",
29191
29518
  capScope: "system",
@@ -7570,12 +7570,11 @@ var RecordingConfigSchema = object({
7570
7570
  /**
7571
7571
  * Entity-relocation job state (storage entity-routing spec, Phase 4).
7572
7572
  *
7573
- * One shape shared by the recorder's `relocateFootage` (segments) and
7574
- * pipeline-analytics' `relocateMedia` (event media blobs) so the admin Data
7575
- * page renders both movers with one component. Jobs are in-RAM (a restart
7576
- * forgets them re-running is safe by construction: copy-if-absent, delete
7577
- * after verify) and each completed/failed run also lands one durable ops-log
7578
- * row on the owning addon's surface.
7573
+ * One shape shared by the recorder and pipeline-analytics internal movers.
7574
+ * The public admin surface is `storage-migration`; child jobs remain in RAM
7575
+ * because copy-if-absent, verify, delete and index/row repoint are resumable.
7576
+ * Each completed/failed run also lands one durable ops-log row on its owning
7577
+ * addon surface.
7579
7578
  */
7580
7579
  var RelocateJobStateSchema = _enum([
7581
7580
  "running",
@@ -7602,19 +7601,100 @@ var RelocateJobSchema = object({
7602
7601
  finishedAt: number().nullable(),
7603
7602
  error: string().nullable()
7604
7603
  });
7604
+ /** Profile-derived footage selection used only by the migration coordinator:
7605
+ * `recordings` owns high+mid; `recordingsLow` owns low. */
7606
+ var RelocateFootageClassSchema = _enum(["recordings", "recordingsLow"]);
7605
7607
  var RelocateFootageInputSchema = object({
7606
- deviceId: number().optional(),
7607
7608
  fromLocationId: string(),
7608
7609
  toLocationId: string(),
7609
7610
  entities: array(_enum(["segments"])).optional(),
7611
+ /** Limits relocation to the logical profile class. Omit only for the
7612
+ * pre-orchestration compatibility path. */
7613
+ footageClass: RelocateFootageClassSchema.optional(),
7610
7614
  /** Copy throttle in MB/s (default 40) — the drain is a background chore,
7611
7615
  * never allowed to starve live writers. */
7612
7616
  throttleMbps: number().min(1).max(1e3).optional()
7613
7617
  });
7614
- var RelocateMediaInputSchema = object({
7615
- deviceId: number().optional(),
7618
+ /** Internal, lease-scoped participant operation. It is intentionally separate
7619
+ * from persistent recording settings: a migration never changes
7620
+ * `RecordingConfig.enabled` or camera wrapper bindings. */
7621
+ var StorageMigrationLeaseInputSchema = object({ leaseId: string().min(1) });
7622
+ var StorageMigrationFootageMoveInputSchema = RelocateFootageInputSchema.extend({ leaseId: string().min(1) });
7623
+ var StorageMigrationMediaMoveInputSchema = object({
7616
7624
  toLocationId: string(),
7617
7625
  throttleMbps: number().min(1).max(1e3).optional()
7626
+ }).extend({ leaseId: string().min(1) });
7627
+ /** The independently selectable logical storage classes. `recordings`
7628
+ * encompasses the high and mid segment profiles; `recordingsLow` is low
7629
+ * segments; `eventMedia` is post-analysis blobs. */
7630
+ var StorageMigrationClassSchema = _enum([
7631
+ "recordings",
7632
+ "recordingsLow",
7633
+ "eventMedia"
7634
+ ]);
7635
+ /** A destination is always an existing, fully-qualified location id. The
7636
+ * migration API intentionally never changes a source location's `basePath`:
7637
+ * callers create a new `<type>:<slug>` location, then select it here. */
7638
+ var StorageMigrationDestinationsSchema = object({
7639
+ recordings: string().min(1).optional(),
7640
+ recordingsLow: string().min(1).optional(),
7641
+ eventMedia: string().min(1).optional()
7642
+ }).refine((value) => Object.keys(value).length > 0, { message: "select at least one storage class" });
7643
+ /** Shared input for planning and starting an orchestrated storage migration. */
7644
+ var StorageMigrationInputSchema = object({
7645
+ destinations: StorageMigrationDestinationsSchema,
7646
+ throttleMbps: number().min(1).max(1e3).optional()
7647
+ });
7648
+ /** The durable coordinator state machine. The only phase that changes default
7649
+ * locations is `repointing`, after every selected mover has completed and been
7650
+ * verified. */
7651
+ var StorageMigrationPhaseSchema = _enum([
7652
+ "planning",
7653
+ "pausing",
7654
+ "moving",
7655
+ "verifying",
7656
+ "repointing",
7657
+ "refreshing",
7658
+ "resuming",
7659
+ "done",
7660
+ "failed",
7661
+ "cancelled"
7662
+ ]);
7663
+ var StorageMigrationParticipantSchema = _enum([
7664
+ "pipeline",
7665
+ "recorder",
7666
+ "analytics"
7667
+ ]);
7668
+ var StorageMigrationMoveSchema = object({
7669
+ storageClass: StorageMigrationClassSchema,
7670
+ fromLocationId: string(),
7671
+ toLocationId: string(),
7672
+ moverJobId: string().nullable(),
7673
+ state: RelocateJobStateSchema.nullable(),
7674
+ error: string().nullable()
7675
+ });
7676
+ var StorageMigrationJobSchema = object({
7677
+ jobId: string(),
7678
+ phase: StorageMigrationPhaseSchema,
7679
+ destinations: StorageMigrationDestinationsSchema,
7680
+ throttleMbps: number(),
7681
+ moves: array(StorageMigrationMoveSchema),
7682
+ pauseLeaseId: string().nullable(),
7683
+ pausedParticipants: array(StorageMigrationParticipantSchema),
7684
+ repointed: boolean(),
7685
+ cancelRequested: boolean(),
7686
+ startedAt: number(),
7687
+ updatedAt: number(),
7688
+ finishedAt: number().nullable(),
7689
+ error: string().nullable()
7690
+ });
7691
+ var StorageMigrationPlanSchema = object({
7692
+ destinations: StorageMigrationDestinationsSchema,
7693
+ moves: array(object({
7694
+ storageClass: StorageMigrationClassSchema,
7695
+ fromLocationId: string(),
7696
+ toLocationId: string()
7697
+ }))
7618
7698
  });
7619
7699
  /**
7620
7700
  * `StorageLocationType` — an addon-declared id that identifies the *kind* of
@@ -15990,13 +16070,19 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
15990
16070
  }), method(object({ deviceId: number() }), EventPruneCountsSchema, {
15991
16071
  kind: "mutation",
15992
16072
  auth: "admin"
15993
- }), method(RelocateMediaInputSchema, object({ jobId: string() }), {
16073
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
15994
16074
  kind: "mutation",
15995
16075
  auth: "admin"
15996
- }), method(object({}), array(RelocateJobSchema).readonly(), {
15997
- kind: "query",
16076
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
16077
+ kind: "mutation",
15998
16078
  auth: "admin"
15999
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
16079
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
16080
+ kind: "mutation",
16081
+ auth: "admin"
16082
+ }), method(StorageMigrationMediaMoveInputSchema, object({ jobId: string() }), {
16083
+ kind: "mutation",
16084
+ auth: "admin"
16085
+ }), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
16000
16086
  kind: "mutation",
16001
16087
  auth: "admin"
16002
16088
  }), method(OpsLogQueryInputSchema, array(OpsLogEntrySchema).readonly(), {
@@ -17493,7 +17579,13 @@ var NodeInferenceDevicesSchema = object({
17493
17579
  reachable: boolean(),
17494
17580
  devices: array(NodeInferenceDeviceSchema).readonly()
17495
17581
  });
17496
- method(object({
17582
+ method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
17583
+ kind: "mutation",
17584
+ auth: "admin"
17585
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
17586
+ kind: "mutation",
17587
+ auth: "admin"
17588
+ }), method(object({
17497
17589
  deviceId: number(),
17498
17590
  agentNodeId: string()
17499
17591
  }), object({ success: literal(true) }), {
@@ -18180,6 +18272,13 @@ method(object({ locationId: string() }), EvictableUsageSchema), method(object({
18180
18272
  locationId: string(),
18181
18273
  targetBytes: number().int().positive()
18182
18274
  }), EvictResultSchema, { kind: "mutation" });
18275
+ method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin" }), method(StorageMigrationInputSchema, object({ jobId: string() }), {
18276
+ kind: "mutation",
18277
+ auth: "admin"
18278
+ }), method(object({ jobId: string().optional() }), StorageMigrationJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
18279
+ kind: "mutation",
18280
+ auth: "admin"
18281
+ });
18183
18282
  var ProviderInfoSchema = discriminatedUnion("shouldSaveDiskSpace", [object({
18184
18283
  providerId: string().min(1),
18185
18284
  displayName: string().min(1),
@@ -18283,7 +18382,67 @@ var TerminalProfileInfoSchema = object({
18283
18382
  label: string(),
18284
18383
  description: string().optional()
18285
18384
  });
18286
- method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
18385
+ /**
18386
+ * A durable operator-created Terminal instance. Profiles are templates; only
18387
+ * an instance declares a camera.
18388
+ */
18389
+ var TerminalInstanceInfoSchema = object({
18390
+ instanceId: string(),
18391
+ cameraStableId: string(),
18392
+ nodeId: string(),
18393
+ profileId: string(),
18394
+ profileLabel: string(),
18395
+ name: string(),
18396
+ enabled: boolean()
18397
+ });
18398
+ var TerminalLegacyCameraSchema = object({
18399
+ stableId: string(),
18400
+ nodeId: string(),
18401
+ profileId: string(),
18402
+ profileLabel: string(),
18403
+ name: string(),
18404
+ /** Only legacy monitor cameras can retain their historic stable identity. */
18405
+ adoptable: boolean()
18406
+ });
18407
+ var TerminalOutputEventSchema = discriminatedUnion("kind", [object({
18408
+ seq: number().int().positive(),
18409
+ kind: literal("data"),
18410
+ data: string()
18411
+ }), object({
18412
+ seq: number().int().positive(),
18413
+ kind: literal("exit"),
18414
+ exitCode: number().int(),
18415
+ signal: number().int().optional()
18416
+ })]);
18417
+ var TerminalOutputBatchSchema = object({
18418
+ cursor: number().int().nonnegative(),
18419
+ reset: boolean(),
18420
+ snapshot: string().optional(),
18421
+ events: array(TerminalOutputEventSchema).readonly()
18422
+ });
18423
+ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalInstanceInfoSchema).readonly(), { auth: "admin" }), method(object({
18424
+ targetNodeId: string().min(1),
18425
+ profileId: string().min(1),
18426
+ name: string().trim().min(1).max(160).optional()
18427
+ }), TerminalInstanceInfoSchema, {
18428
+ kind: "mutation",
18429
+ auth: "admin"
18430
+ }), method(object({ instanceId: string().min(1) }), _void(), {
18431
+ kind: "mutation",
18432
+ auth: "admin"
18433
+ }), method(object({
18434
+ instanceId: string().min(1),
18435
+ enabled: boolean()
18436
+ }), TerminalInstanceInfoSchema, {
18437
+ kind: "mutation",
18438
+ auth: "admin"
18439
+ }), method(_void(), array(TerminalLegacyCameraSchema).readonly(), { auth: "admin" }), method(object({
18440
+ stableId: string().min(1),
18441
+ name: string().trim().min(1).max(160).optional()
18442
+ }), TerminalInstanceInfoSchema, {
18443
+ kind: "mutation",
18444
+ auth: "admin"
18445
+ }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
18287
18446
  profileId: string(),
18288
18447
  cols: number().int().positive(),
18289
18448
  rows: number().int().positive()
@@ -18297,6 +18456,26 @@ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }),
18297
18456
  }), _void(), {
18298
18457
  kind: "mutation",
18299
18458
  auth: "admin"
18459
+ }), method(object({
18460
+ sessionId: string(),
18461
+ afterSeq: number().int().nonnegative(),
18462
+ waitMs: number().int().min(0).max(2e3).default(0),
18463
+ /**
18464
+ * Wait when a just-opened session has no output yet. Kept opt-in so a
18465
+ * browser's initial repaint remains immediate; the camera snapshot
18466
+ * relay uses it to avoid encoding a blank startup frame.
18467
+ */
18468
+ waitForOutput: boolean().optional()
18469
+ }), TerminalOutputBatchSchema, {
18470
+ kind: "mutation",
18471
+ auth: "admin",
18472
+ timeoutMs: 15e3
18473
+ }), method(object({
18474
+ sessionId: string(),
18475
+ data: string().max(64 * 1024)
18476
+ }), _void(), {
18477
+ kind: "mutation",
18478
+ auth: "admin"
18300
18479
  }), method(object({ sessionId: string() }), _void(), {
18301
18480
  kind: "mutation",
18302
18481
  auth: "admin"
@@ -20227,6 +20406,7 @@ var FaceInfoSchema = object({
20227
20406
  var FaceFilterEnum = _enum([
20228
20407
  "unassigned",
20229
20408
  "recognized",
20409
+ "identified",
20230
20410
  "all"
20231
20411
  ]);
20232
20412
  var MediaFileLiteSchema$1 = object({
@@ -20255,6 +20435,8 @@ method(_void(), array(IdentitySchema).readonly()), method(object({ name: string(
20255
20435
  kind: "mutation",
20256
20436
  auth: "admin"
20257
20437
  }), method(object({
20438
+ /** Restrict to one camera. Absent keeps the cluster-wide gallery view. */
20439
+ deviceId: number().int().optional(),
20258
20440
  limit: number().int().positive().optional(),
20259
20441
  filter: FaceFilterEnum.optional(),
20260
20442
  /**
@@ -22020,6 +22202,10 @@ var OsdSourceSchema = discriminatedUnion("kind", [
22020
22202
  capName: string().min(1).max(64),
22021
22203
  /** Dot path inside the slice, e.g. `detected`, `value`, `mode`. */
22022
22204
  valuePath: string().min(1).max(64)
22205
+ }),
22206
+ object({
22207
+ kind: literal("latest-recognition"),
22208
+ recognition: _enum(["person", "plate"])
22023
22209
  })
22024
22210
  ]);
22025
22211
  var OsdSlotBindingSchema = object({
@@ -22125,6 +22311,15 @@ method(object({ deviceId: number().int() }), object({
22125
22311
  }), object({ success: literal(true) }), {
22126
22312
  kind: "mutation",
22127
22313
  auth: "admin"
22314
+ }), method(object({
22315
+ sourceDeviceId: number().int(),
22316
+ targetDeviceId: number().int()
22317
+ }), object({
22318
+ copied: number().int().nonnegative(),
22319
+ skipped: number().int().nonnegative()
22320
+ }), {
22321
+ kind: "mutation",
22322
+ auth: "admin"
22128
22323
  }), method(object({
22129
22324
  deviceId: number().int(),
22130
22325
  slotId: string().min(1),
@@ -23010,13 +23205,19 @@ method(object({
23010
23205
  }), {
23011
23206
  kind: "mutation",
23012
23207
  auth: "admin"
23013
- }), method(RelocateFootageInputSchema, object({ jobId: string() }), {
23208
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
23014
23209
  kind: "mutation",
23015
23210
  auth: "admin"
23016
- }), method(object({}), array(RelocateJobSchema).readonly(), {
23017
- kind: "query",
23211
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
23212
+ kind: "mutation",
23018
23213
  auth: "admin"
23019
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
23214
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
23215
+ kind: "mutation",
23216
+ auth: "admin"
23217
+ }), method(StorageMigrationFootageMoveInputSchema, object({ jobId: string() }), {
23218
+ kind: "mutation",
23219
+ auth: "admin"
23220
+ }), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
23020
23221
  kind: "mutation",
23021
23222
  auth: "admin"
23022
23223
  });
@@ -27138,6 +27339,12 @@ Object.freeze({
27138
27339
  addonId: null,
27139
27340
  access: "delete"
27140
27341
  },
27342
+ "osdManager.copyDeviceConfiguration": {
27343
+ capName: "osd-manager",
27344
+ capScope: "system",
27345
+ addonId: null,
27346
+ access: "create"
27347
+ },
27141
27348
  "osdManager.getConditionSupport": {
27142
27349
  capName: "osd-manager",
27143
27350
  capScope: "system",
@@ -27234,7 +27441,7 @@ Object.freeze({
27234
27441
  addonId: null,
27235
27442
  access: "create"
27236
27443
  },
27237
- "pipelineAnalytics.cancelMediaRelocate": {
27444
+ "pipelineAnalytics.cancelStorageMigrationMove": {
27238
27445
  capName: "pipeline-analytics",
27239
27446
  capScope: "device",
27240
27447
  addonId: null,
@@ -27306,12 +27513,6 @@ Object.freeze({
27306
27513
  addonId: null,
27307
27514
  access: "view"
27308
27515
  },
27309
- "pipelineAnalytics.getMediaRelocateStatus": {
27310
- capName: "pipeline-analytics",
27311
- capScope: "device",
27312
- addonId: null,
27313
- access: "view"
27314
- },
27315
27516
  "pipelineAnalytics.getMotionEvents": {
27316
27517
  capName: "pipeline-analytics",
27317
27518
  capScope: "device",
@@ -27348,6 +27549,12 @@ Object.freeze({
27348
27549
  addonId: null,
27349
27550
  access: "view"
27350
27551
  },
27552
+ "pipelineAnalytics.getStorageMigrationMoveStatus": {
27553
+ capName: "pipeline-analytics",
27554
+ capScope: "device",
27555
+ addonId: null,
27556
+ access: "view"
27557
+ },
27351
27558
  "pipelineAnalytics.getTrack": {
27352
27559
  capName: "pipeline-analytics",
27353
27560
  capScope: "device",
@@ -27426,6 +27633,12 @@ Object.freeze({
27426
27633
  addonId: null,
27427
27634
  access: "view"
27428
27635
  },
27636
+ "pipelineAnalytics.pauseForStorageMigration": {
27637
+ capName: "pipeline-analytics",
27638
+ capScope: "device",
27639
+ addonId: null,
27640
+ access: "create"
27641
+ },
27429
27642
  "pipelineAnalytics.proposeRetrainAnnotations": {
27430
27643
  capName: "pipeline-analytics",
27431
27644
  capScope: "device",
@@ -27456,7 +27669,7 @@ Object.freeze({
27456
27669
  addonId: null,
27457
27670
  access: "create"
27458
27671
  },
27459
- "pipelineAnalytics.relocateMedia": {
27672
+ "pipelineAnalytics.refreshStorageLocationsForMigration": {
27460
27673
  capName: "pipeline-analytics",
27461
27674
  capScope: "device",
27462
27675
  addonId: null,
@@ -27468,6 +27681,12 @@ Object.freeze({
27468
27681
  addonId: null,
27469
27682
  access: "create"
27470
27683
  },
27684
+ "pipelineAnalytics.resumeForStorageMigration": {
27685
+ capName: "pipeline-analytics",
27686
+ capScope: "device",
27687
+ addonId: null,
27688
+ access: "create"
27689
+ },
27471
27690
  "pipelineAnalytics.saveRetrainAnnotations": {
27472
27691
  capName: "pipeline-analytics",
27473
27692
  capScope: "device",
@@ -27492,6 +27711,12 @@ Object.freeze({
27492
27711
  addonId: null,
27493
27712
  access: "create"
27494
27713
  },
27714
+ "pipelineAnalytics.startStorageMigrationMove": {
27715
+ capName: "pipeline-analytics",
27716
+ capScope: "device",
27717
+ addonId: null,
27718
+ access: "create"
27719
+ },
27495
27720
  "pipelineAnalytics.wipeAllAnalytics": {
27496
27721
  capName: "pipeline-analytics",
27497
27722
  capScope: "device",
@@ -27858,6 +28083,12 @@ Object.freeze({
27858
28083
  addonId: null,
27859
28084
  access: "view"
27860
28085
  },
28086
+ "pipelineOrchestrator.pauseForStorageMigration": {
28087
+ capName: "pipeline-orchestrator",
28088
+ capScope: "system",
28089
+ addonId: null,
28090
+ access: "create"
28091
+ },
27861
28092
  "pipelineOrchestrator.rebalance": {
27862
28093
  capName: "pipeline-orchestrator",
27863
28094
  capScope: "system",
@@ -27882,6 +28113,12 @@ Object.freeze({
27882
28113
  addonId: null,
27883
28114
  access: "view"
27884
28115
  },
28116
+ "pipelineOrchestrator.resumeForStorageMigration": {
28117
+ capName: "pipeline-orchestrator",
28118
+ capScope: "system",
28119
+ addonId: null,
28120
+ access: "create"
28121
+ },
27885
28122
  "pipelineOrchestrator.saveTemplate": {
27886
28123
  capName: "pipeline-orchestrator",
27887
28124
  capScope: "system",
@@ -28278,7 +28515,7 @@ Object.freeze({
28278
28515
  addonId: null,
28279
28516
  access: "create"
28280
28517
  },
28281
- "recording.cancelRelocate": {
28518
+ "recording.cancelStorageMigrationMove": {
28282
28519
  capName: "recording",
28283
28520
  capScope: "system",
28284
28521
  addonId: null,
@@ -28314,7 +28551,7 @@ Object.freeze({
28314
28551
  addonId: null,
28315
28552
  access: "view"
28316
28553
  },
28317
- "recording.getRelocateStatus": {
28554
+ "recording.getStorageMigrationMoveStatus": {
28318
28555
  capName: "recording",
28319
28556
  capScope: "system",
28320
28557
  addonId: null,
@@ -28338,6 +28575,12 @@ Object.freeze({
28338
28575
  addonId: null,
28339
28576
  access: "view"
28340
28577
  },
28578
+ "recording.pauseForStorageMigration": {
28579
+ capName: "recording",
28580
+ capScope: "system",
28581
+ addonId: null,
28582
+ access: "create"
28583
+ },
28341
28584
  "recording.pruneFootage": {
28342
28585
  capName: "recording",
28343
28586
  capScope: "system",
@@ -28356,7 +28599,7 @@ Object.freeze({
28356
28599
  addonId: null,
28357
28600
  access: "view"
28358
28601
  },
28359
- "recording.relocateFootage": {
28602
+ "recording.refreshStorageLocationsForMigration": {
28360
28603
  capName: "recording",
28361
28604
  capScope: "system",
28362
28605
  addonId: null,
@@ -28380,12 +28623,24 @@ Object.freeze({
28380
28623
  addonId: null,
28381
28624
  access: "create"
28382
28625
  },
28626
+ "recording.resumeForStorageMigration": {
28627
+ capName: "recording",
28628
+ capScope: "system",
28629
+ addonId: null,
28630
+ access: "create"
28631
+ },
28383
28632
  "recording.setDeviceConfig": {
28384
28633
  capName: "recording",
28385
28634
  capScope: "system",
28386
28635
  addonId: null,
28387
28636
  access: "create"
28388
28637
  },
28638
+ "recording.startStorageMigrationMove": {
28639
+ capName: "recording",
28640
+ capScope: "system",
28641
+ addonId: null,
28642
+ access: "create"
28643
+ },
28389
28644
  "recordingExport.cancelExport": {
28390
28645
  capName: "recordingExport",
28391
28646
  capScope: "system",
@@ -28776,6 +29031,30 @@ Object.freeze({
28776
29031
  addonId: null,
28777
29032
  access: "view"
28778
29033
  },
29034
+ "storageMigration.cancel": {
29035
+ capName: "storage-migration",
29036
+ capScope: "system",
29037
+ addonId: null,
29038
+ access: "create"
29039
+ },
29040
+ "storageMigration.plan": {
29041
+ capName: "storage-migration",
29042
+ capScope: "system",
29043
+ addonId: null,
29044
+ access: "view"
29045
+ },
29046
+ "storageMigration.start": {
29047
+ capName: "storage-migration",
29048
+ capScope: "system",
29049
+ addonId: null,
29050
+ access: "create"
29051
+ },
29052
+ "storageMigration.status": {
29053
+ capName: "storage-migration",
29054
+ capScope: "system",
29055
+ addonId: null,
29056
+ access: "view"
29057
+ },
28779
29058
  "storageProvider.abortUpload": {
28780
29059
  capName: "storage-provider",
28781
29060
  capScope: "system",
@@ -29154,12 +29433,42 @@ Object.freeze({
29154
29433
  addonId: null,
29155
29434
  access: "create"
29156
29435
  },
29436
+ "terminalSession.adoptLegacyMonitor": {
29437
+ capName: "terminal-session",
29438
+ capScope: "system",
29439
+ addonId: null,
29440
+ access: "create"
29441
+ },
29157
29442
  "terminalSession.close": {
29158
29443
  capName: "terminal-session",
29159
29444
  capScope: "system",
29160
29445
  addonId: null,
29161
29446
  access: "create"
29162
29447
  },
29448
+ "terminalSession.createInstance": {
29449
+ capName: "terminal-session",
29450
+ capScope: "system",
29451
+ addonId: null,
29452
+ access: "create"
29453
+ },
29454
+ "terminalSession.deleteInstance": {
29455
+ capName: "terminal-session",
29456
+ capScope: "system",
29457
+ addonId: null,
29458
+ access: "delete"
29459
+ },
29460
+ "terminalSession.listInstances": {
29461
+ capName: "terminal-session",
29462
+ capScope: "system",
29463
+ addonId: null,
29464
+ access: "view"
29465
+ },
29466
+ "terminalSession.listLegacyCameras": {
29467
+ capName: "terminal-session",
29468
+ capScope: "system",
29469
+ addonId: null,
29470
+ access: "view"
29471
+ },
29163
29472
  "terminalSession.listProfiles": {
29164
29473
  capName: "terminal-session",
29165
29474
  capScope: "system",
@@ -29178,12 +29487,30 @@ Object.freeze({
29178
29487
  addonId: null,
29179
29488
  access: "create"
29180
29489
  },
29490
+ "terminalSession.pullOutput": {
29491
+ capName: "terminal-session",
29492
+ capScope: "system",
29493
+ addonId: null,
29494
+ access: "create"
29495
+ },
29181
29496
  "terminalSession.resize": {
29182
29497
  capName: "terminal-session",
29183
29498
  capScope: "system",
29184
29499
  addonId: null,
29185
29500
  access: "create"
29186
29501
  },
29502
+ "terminalSession.setInstanceEnabled": {
29503
+ capName: "terminal-session",
29504
+ capScope: "system",
29505
+ addonId: null,
29506
+ access: "create"
29507
+ },
29508
+ "terminalSession.writeInput": {
29509
+ capName: "terminal-session",
29510
+ capScope: "system",
29511
+ addonId: null,
29512
+ access: "create"
29513
+ },
29187
29514
  "toast.onToast": {
29188
29515
  capName: "toast",
29189
29516
  capScope: "system",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-smtp-nodemailer",
3
- "version": "1.2.10",
3
+ "version": "1.2.12",
4
4
  "description": "SMTP email provider addon for CamStack — wraps `nodemailer` and registers a `smtp-provider` cap collection entry. Used by magic-link login + notifier addons.",
5
5
  "keywords": [
6
6
  "camstack",