@camstack/addon-notifiers 1.2.14 → 1.2.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/dist/addon.js +357 -30
  2. package/dist/addon.mjs +357 -30
  3. package/package.json +1 -1
package/dist/addon.js CHANGED
@@ -7684,12 +7684,11 @@ var RecordingConfigSchema = object({
7684
7684
  /**
7685
7685
  * Entity-relocation job state (storage entity-routing spec, Phase 4).
7686
7686
  *
7687
- * One shape shared by the recorder's `relocateFootage` (segments) and
7688
- * pipeline-analytics' `relocateMedia` (event media blobs) so the admin Data
7689
- * page renders both movers with one component. Jobs are in-RAM (a restart
7690
- * forgets them re-running is safe by construction: copy-if-absent, delete
7691
- * after verify) and each completed/failed run also lands one durable ops-log
7692
- * row on the owning addon's surface.
7687
+ * One shape shared by the recorder and pipeline-analytics internal movers.
7688
+ * The public admin surface is `storage-migration`; child jobs remain in RAM
7689
+ * because copy-if-absent, verify, delete and index/row repoint are resumable.
7690
+ * Each completed/failed run also lands one durable ops-log row on its owning
7691
+ * addon surface.
7693
7692
  */
7694
7693
  var RelocateJobStateSchema = _enum([
7695
7694
  "running",
@@ -7716,19 +7715,100 @@ var RelocateJobSchema = object({
7716
7715
  finishedAt: number().nullable(),
7717
7716
  error: string().nullable()
7718
7717
  });
7718
+ /** Profile-derived footage selection used only by the migration coordinator:
7719
+ * `recordings` owns high+mid; `recordingsLow` owns low. */
7720
+ var RelocateFootageClassSchema = _enum(["recordings", "recordingsLow"]);
7719
7721
  var RelocateFootageInputSchema = object({
7720
- deviceId: number().optional(),
7721
7722
  fromLocationId: string(),
7722
7723
  toLocationId: string(),
7723
7724
  entities: array(_enum(["segments"])).optional(),
7725
+ /** Limits relocation to the logical profile class. Omit only for the
7726
+ * pre-orchestration compatibility path. */
7727
+ footageClass: RelocateFootageClassSchema.optional(),
7724
7728
  /** Copy throttle in MB/s (default 40) — the drain is a background chore,
7725
7729
  * never allowed to starve live writers. */
7726
7730
  throttleMbps: number().min(1).max(1e3).optional()
7727
7731
  });
7728
- var RelocateMediaInputSchema = object({
7729
- deviceId: number().optional(),
7732
+ /** Internal, lease-scoped participant operation. It is intentionally separate
7733
+ * from persistent recording settings: a migration never changes
7734
+ * `RecordingConfig.enabled` or camera wrapper bindings. */
7735
+ var StorageMigrationLeaseInputSchema = object({ leaseId: string().min(1) });
7736
+ var StorageMigrationFootageMoveInputSchema = RelocateFootageInputSchema.extend({ leaseId: string().min(1) });
7737
+ var StorageMigrationMediaMoveInputSchema = object({
7730
7738
  toLocationId: string(),
7731
7739
  throttleMbps: number().min(1).max(1e3).optional()
7740
+ }).extend({ leaseId: string().min(1) });
7741
+ /** The independently selectable logical storage classes. `recordings`
7742
+ * encompasses the high and mid segment profiles; `recordingsLow` is low
7743
+ * segments; `eventMedia` is post-analysis blobs. */
7744
+ var StorageMigrationClassSchema = _enum([
7745
+ "recordings",
7746
+ "recordingsLow",
7747
+ "eventMedia"
7748
+ ]);
7749
+ /** A destination is always an existing, fully-qualified location id. The
7750
+ * migration API intentionally never changes a source location's `basePath`:
7751
+ * callers create a new `<type>:<slug>` location, then select it here. */
7752
+ var StorageMigrationDestinationsSchema = object({
7753
+ recordings: string().min(1).optional(),
7754
+ recordingsLow: string().min(1).optional(),
7755
+ eventMedia: string().min(1).optional()
7756
+ }).refine((value) => Object.keys(value).length > 0, { message: "select at least one storage class" });
7757
+ /** Shared input for planning and starting an orchestrated storage migration. */
7758
+ var StorageMigrationInputSchema = object({
7759
+ destinations: StorageMigrationDestinationsSchema,
7760
+ throttleMbps: number().min(1).max(1e3).optional()
7761
+ });
7762
+ /** The durable coordinator state machine. The only phase that changes default
7763
+ * locations is `repointing`, after every selected mover has completed and been
7764
+ * verified. */
7765
+ var StorageMigrationPhaseSchema = _enum([
7766
+ "planning",
7767
+ "pausing",
7768
+ "moving",
7769
+ "verifying",
7770
+ "repointing",
7771
+ "refreshing",
7772
+ "resuming",
7773
+ "done",
7774
+ "failed",
7775
+ "cancelled"
7776
+ ]);
7777
+ var StorageMigrationParticipantSchema = _enum([
7778
+ "pipeline",
7779
+ "recorder",
7780
+ "analytics"
7781
+ ]);
7782
+ var StorageMigrationMoveSchema = object({
7783
+ storageClass: StorageMigrationClassSchema,
7784
+ fromLocationId: string(),
7785
+ toLocationId: string(),
7786
+ moverJobId: string().nullable(),
7787
+ state: RelocateJobStateSchema.nullable(),
7788
+ error: string().nullable()
7789
+ });
7790
+ var StorageMigrationJobSchema = object({
7791
+ jobId: string(),
7792
+ phase: StorageMigrationPhaseSchema,
7793
+ destinations: StorageMigrationDestinationsSchema,
7794
+ throttleMbps: number(),
7795
+ moves: array(StorageMigrationMoveSchema),
7796
+ pauseLeaseId: string().nullable(),
7797
+ pausedParticipants: array(StorageMigrationParticipantSchema),
7798
+ repointed: boolean(),
7799
+ cancelRequested: boolean(),
7800
+ startedAt: number(),
7801
+ updatedAt: number(),
7802
+ finishedAt: number().nullable(),
7803
+ error: string().nullable()
7804
+ });
7805
+ var StorageMigrationPlanSchema = object({
7806
+ destinations: StorageMigrationDestinationsSchema,
7807
+ moves: array(object({
7808
+ storageClass: StorageMigrationClassSchema,
7809
+ fromLocationId: string(),
7810
+ toLocationId: string()
7811
+ }))
7732
7812
  });
7733
7813
  /**
7734
7814
  * `StorageLocationType` — an addon-declared id that identifies the *kind* of
@@ -16159,13 +16239,19 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
16159
16239
  }), method(object({ deviceId: number() }), EventPruneCountsSchema, {
16160
16240
  kind: "mutation",
16161
16241
  auth: "admin"
16162
- }), method(RelocateMediaInputSchema, object({ jobId: string() }), {
16242
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
16163
16243
  kind: "mutation",
16164
16244
  auth: "admin"
16165
- }), method(object({}), array(RelocateJobSchema).readonly(), {
16166
- kind: "query",
16245
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
16246
+ kind: "mutation",
16167
16247
  auth: "admin"
16168
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
16248
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
16249
+ kind: "mutation",
16250
+ auth: "admin"
16251
+ }), method(StorageMigrationMediaMoveInputSchema, object({ jobId: string() }), {
16252
+ kind: "mutation",
16253
+ auth: "admin"
16254
+ }), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
16169
16255
  kind: "mutation",
16170
16256
  auth: "admin"
16171
16257
  }), method(OpsLogQueryInputSchema, array(OpsLogEntrySchema).readonly(), {
@@ -17662,7 +17748,13 @@ var NodeInferenceDevicesSchema = object({
17662
17748
  reachable: boolean(),
17663
17749
  devices: array(NodeInferenceDeviceSchema).readonly()
17664
17750
  });
17665
- method(object({
17751
+ method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
17752
+ kind: "mutation",
17753
+ auth: "admin"
17754
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
17755
+ kind: "mutation",
17756
+ auth: "admin"
17757
+ }), method(object({
17666
17758
  deviceId: number(),
17667
17759
  agentNodeId: string()
17668
17760
  }), object({ success: literal(true) }), {
@@ -18336,6 +18428,13 @@ method(object({ locationId: string() }), EvictableUsageSchema), method(object({
18336
18428
  locationId: string(),
18337
18429
  targetBytes: number().int().positive()
18338
18430
  }), EvictResultSchema, { kind: "mutation" });
18431
+ method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin" }), method(StorageMigrationInputSchema, object({ jobId: string() }), {
18432
+ kind: "mutation",
18433
+ auth: "admin"
18434
+ }), method(object({ jobId: string().optional() }), StorageMigrationJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
18435
+ kind: "mutation",
18436
+ auth: "admin"
18437
+ });
18339
18438
  var ProviderInfoSchema = discriminatedUnion("shouldSaveDiskSpace", [object({
18340
18439
  providerId: string().min(1),
18341
18440
  displayName: string().min(1),
@@ -18439,7 +18538,67 @@ var TerminalProfileInfoSchema = object({
18439
18538
  label: string(),
18440
18539
  description: string().optional()
18441
18540
  });
18442
- method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
18541
+ /**
18542
+ * A durable operator-created Terminal instance. Profiles are templates; only
18543
+ * an instance declares a camera.
18544
+ */
18545
+ var TerminalInstanceInfoSchema = object({
18546
+ instanceId: string(),
18547
+ cameraStableId: string(),
18548
+ nodeId: string(),
18549
+ profileId: string(),
18550
+ profileLabel: string(),
18551
+ name: string(),
18552
+ enabled: boolean()
18553
+ });
18554
+ var TerminalLegacyCameraSchema = object({
18555
+ stableId: string(),
18556
+ nodeId: string(),
18557
+ profileId: string(),
18558
+ profileLabel: string(),
18559
+ name: string(),
18560
+ /** Only legacy monitor cameras can retain their historic stable identity. */
18561
+ adoptable: boolean()
18562
+ });
18563
+ var TerminalOutputEventSchema = discriminatedUnion("kind", [object({
18564
+ seq: number().int().positive(),
18565
+ kind: literal("data"),
18566
+ data: string()
18567
+ }), object({
18568
+ seq: number().int().positive(),
18569
+ kind: literal("exit"),
18570
+ exitCode: number().int(),
18571
+ signal: number().int().optional()
18572
+ })]);
18573
+ var TerminalOutputBatchSchema = object({
18574
+ cursor: number().int().nonnegative(),
18575
+ reset: boolean(),
18576
+ snapshot: string().optional(),
18577
+ events: array(TerminalOutputEventSchema).readonly()
18578
+ });
18579
+ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalInstanceInfoSchema).readonly(), { auth: "admin" }), method(object({
18580
+ targetNodeId: string().min(1),
18581
+ profileId: string().min(1),
18582
+ name: string().trim().min(1).max(160).optional()
18583
+ }), TerminalInstanceInfoSchema, {
18584
+ kind: "mutation",
18585
+ auth: "admin"
18586
+ }), method(object({ instanceId: string().min(1) }), _void(), {
18587
+ kind: "mutation",
18588
+ auth: "admin"
18589
+ }), method(object({
18590
+ instanceId: string().min(1),
18591
+ enabled: boolean()
18592
+ }), TerminalInstanceInfoSchema, {
18593
+ kind: "mutation",
18594
+ auth: "admin"
18595
+ }), method(_void(), array(TerminalLegacyCameraSchema).readonly(), { auth: "admin" }), method(object({
18596
+ stableId: string().min(1),
18597
+ name: string().trim().min(1).max(160).optional()
18598
+ }), TerminalInstanceInfoSchema, {
18599
+ kind: "mutation",
18600
+ auth: "admin"
18601
+ }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
18443
18602
  profileId: string(),
18444
18603
  cols: number().int().positive(),
18445
18604
  rows: number().int().positive()
@@ -18453,6 +18612,26 @@ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }),
18453
18612
  }), _void(), {
18454
18613
  kind: "mutation",
18455
18614
  auth: "admin"
18615
+ }), method(object({
18616
+ sessionId: string(),
18617
+ afterSeq: number().int().nonnegative(),
18618
+ waitMs: number().int().min(0).max(2e3).default(0),
18619
+ /**
18620
+ * Wait when a just-opened session has no output yet. Kept opt-in so a
18621
+ * browser's initial repaint remains immediate; the camera snapshot
18622
+ * relay uses it to avoid encoding a blank startup frame.
18623
+ */
18624
+ waitForOutput: boolean().optional()
18625
+ }), TerminalOutputBatchSchema, {
18626
+ kind: "mutation",
18627
+ auth: "admin",
18628
+ timeoutMs: 15e3
18629
+ }), method(object({
18630
+ sessionId: string(),
18631
+ data: string().max(64 * 1024)
18632
+ }), _void(), {
18633
+ kind: "mutation",
18634
+ auth: "admin"
18456
18635
  }), method(object({ sessionId: string() }), _void(), {
18457
18636
  kind: "mutation",
18458
18637
  auth: "admin"
@@ -20383,6 +20562,7 @@ var FaceInfoSchema = object({
20383
20562
  var FaceFilterEnum = _enum([
20384
20563
  "unassigned",
20385
20564
  "recognized",
20565
+ "identified",
20386
20566
  "all"
20387
20567
  ]);
20388
20568
  var MediaFileLiteSchema$1 = object({
@@ -20411,6 +20591,8 @@ method(_void(), array(IdentitySchema).readonly()), method(object({ name: string(
20411
20591
  kind: "mutation",
20412
20592
  auth: "admin"
20413
20593
  }), method(object({
20594
+ /** Restrict to one camera. Absent keeps the cluster-wide gallery view. */
20595
+ deviceId: number().int().optional(),
20414
20596
  limit: number().int().positive().optional(),
20415
20597
  filter: FaceFilterEnum.optional(),
20416
20598
  /**
@@ -22176,6 +22358,10 @@ var OsdSourceSchema = discriminatedUnion("kind", [
22176
22358
  capName: string().min(1).max(64),
22177
22359
  /** Dot path inside the slice, e.g. `detected`, `value`, `mode`. */
22178
22360
  valuePath: string().min(1).max(64)
22361
+ }),
22362
+ object({
22363
+ kind: literal("latest-recognition"),
22364
+ recognition: _enum(["person", "plate"])
22179
22365
  })
22180
22366
  ]);
22181
22367
  var OsdSlotBindingSchema = object({
@@ -22281,6 +22467,15 @@ method(object({ deviceId: number().int() }), object({
22281
22467
  }), object({ success: literal(true) }), {
22282
22468
  kind: "mutation",
22283
22469
  auth: "admin"
22470
+ }), method(object({
22471
+ sourceDeviceId: number().int(),
22472
+ targetDeviceId: number().int()
22473
+ }), object({
22474
+ copied: number().int().nonnegative(),
22475
+ skipped: number().int().nonnegative()
22476
+ }), {
22477
+ kind: "mutation",
22478
+ auth: "admin"
22284
22479
  }), method(object({
22285
22480
  deviceId: number().int(),
22286
22481
  slotId: string().min(1),
@@ -23166,13 +23361,19 @@ method(object({
23166
23361
  }), {
23167
23362
  kind: "mutation",
23168
23363
  auth: "admin"
23169
- }), method(RelocateFootageInputSchema, object({ jobId: string() }), {
23364
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
23170
23365
  kind: "mutation",
23171
23366
  auth: "admin"
23172
- }), method(object({}), array(RelocateJobSchema).readonly(), {
23173
- kind: "query",
23367
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
23368
+ kind: "mutation",
23174
23369
  auth: "admin"
23175
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
23370
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
23371
+ kind: "mutation",
23372
+ auth: "admin"
23373
+ }), method(StorageMigrationFootageMoveInputSchema, object({ jobId: string() }), {
23374
+ kind: "mutation",
23375
+ auth: "admin"
23376
+ }), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
23176
23377
  kind: "mutation",
23177
23378
  auth: "admin"
23178
23379
  });
@@ -27294,6 +27495,12 @@ Object.freeze({
27294
27495
  addonId: null,
27295
27496
  access: "delete"
27296
27497
  },
27498
+ "osdManager.copyDeviceConfiguration": {
27499
+ capName: "osd-manager",
27500
+ capScope: "system",
27501
+ addonId: null,
27502
+ access: "create"
27503
+ },
27297
27504
  "osdManager.getConditionSupport": {
27298
27505
  capName: "osd-manager",
27299
27506
  capScope: "system",
@@ -27390,7 +27597,7 @@ Object.freeze({
27390
27597
  addonId: null,
27391
27598
  access: "create"
27392
27599
  },
27393
- "pipelineAnalytics.cancelMediaRelocate": {
27600
+ "pipelineAnalytics.cancelStorageMigrationMove": {
27394
27601
  capName: "pipeline-analytics",
27395
27602
  capScope: "device",
27396
27603
  addonId: null,
@@ -27462,12 +27669,6 @@ Object.freeze({
27462
27669
  addonId: null,
27463
27670
  access: "view"
27464
27671
  },
27465
- "pipelineAnalytics.getMediaRelocateStatus": {
27466
- capName: "pipeline-analytics",
27467
- capScope: "device",
27468
- addonId: null,
27469
- access: "view"
27470
- },
27471
27672
  "pipelineAnalytics.getMotionEvents": {
27472
27673
  capName: "pipeline-analytics",
27473
27674
  capScope: "device",
@@ -27504,6 +27705,12 @@ Object.freeze({
27504
27705
  addonId: null,
27505
27706
  access: "view"
27506
27707
  },
27708
+ "pipelineAnalytics.getStorageMigrationMoveStatus": {
27709
+ capName: "pipeline-analytics",
27710
+ capScope: "device",
27711
+ addonId: null,
27712
+ access: "view"
27713
+ },
27507
27714
  "pipelineAnalytics.getTrack": {
27508
27715
  capName: "pipeline-analytics",
27509
27716
  capScope: "device",
@@ -27582,6 +27789,12 @@ Object.freeze({
27582
27789
  addonId: null,
27583
27790
  access: "view"
27584
27791
  },
27792
+ "pipelineAnalytics.pauseForStorageMigration": {
27793
+ capName: "pipeline-analytics",
27794
+ capScope: "device",
27795
+ addonId: null,
27796
+ access: "create"
27797
+ },
27585
27798
  "pipelineAnalytics.proposeRetrainAnnotations": {
27586
27799
  capName: "pipeline-analytics",
27587
27800
  capScope: "device",
@@ -27612,7 +27825,7 @@ Object.freeze({
27612
27825
  addonId: null,
27613
27826
  access: "create"
27614
27827
  },
27615
- "pipelineAnalytics.relocateMedia": {
27828
+ "pipelineAnalytics.refreshStorageLocationsForMigration": {
27616
27829
  capName: "pipeline-analytics",
27617
27830
  capScope: "device",
27618
27831
  addonId: null,
@@ -27624,6 +27837,12 @@ Object.freeze({
27624
27837
  addonId: null,
27625
27838
  access: "create"
27626
27839
  },
27840
+ "pipelineAnalytics.resumeForStorageMigration": {
27841
+ capName: "pipeline-analytics",
27842
+ capScope: "device",
27843
+ addonId: null,
27844
+ access: "create"
27845
+ },
27627
27846
  "pipelineAnalytics.saveRetrainAnnotations": {
27628
27847
  capName: "pipeline-analytics",
27629
27848
  capScope: "device",
@@ -27648,6 +27867,12 @@ Object.freeze({
27648
27867
  addonId: null,
27649
27868
  access: "create"
27650
27869
  },
27870
+ "pipelineAnalytics.startStorageMigrationMove": {
27871
+ capName: "pipeline-analytics",
27872
+ capScope: "device",
27873
+ addonId: null,
27874
+ access: "create"
27875
+ },
27651
27876
  "pipelineAnalytics.wipeAllAnalytics": {
27652
27877
  capName: "pipeline-analytics",
27653
27878
  capScope: "device",
@@ -28014,6 +28239,12 @@ Object.freeze({
28014
28239
  addonId: null,
28015
28240
  access: "view"
28016
28241
  },
28242
+ "pipelineOrchestrator.pauseForStorageMigration": {
28243
+ capName: "pipeline-orchestrator",
28244
+ capScope: "system",
28245
+ addonId: null,
28246
+ access: "create"
28247
+ },
28017
28248
  "pipelineOrchestrator.rebalance": {
28018
28249
  capName: "pipeline-orchestrator",
28019
28250
  capScope: "system",
@@ -28038,6 +28269,12 @@ Object.freeze({
28038
28269
  addonId: null,
28039
28270
  access: "view"
28040
28271
  },
28272
+ "pipelineOrchestrator.resumeForStorageMigration": {
28273
+ capName: "pipeline-orchestrator",
28274
+ capScope: "system",
28275
+ addonId: null,
28276
+ access: "create"
28277
+ },
28041
28278
  "pipelineOrchestrator.saveTemplate": {
28042
28279
  capName: "pipeline-orchestrator",
28043
28280
  capScope: "system",
@@ -28434,7 +28671,7 @@ Object.freeze({
28434
28671
  addonId: null,
28435
28672
  access: "create"
28436
28673
  },
28437
- "recording.cancelRelocate": {
28674
+ "recording.cancelStorageMigrationMove": {
28438
28675
  capName: "recording",
28439
28676
  capScope: "system",
28440
28677
  addonId: null,
@@ -28470,7 +28707,7 @@ Object.freeze({
28470
28707
  addonId: null,
28471
28708
  access: "view"
28472
28709
  },
28473
- "recording.getRelocateStatus": {
28710
+ "recording.getStorageMigrationMoveStatus": {
28474
28711
  capName: "recording",
28475
28712
  capScope: "system",
28476
28713
  addonId: null,
@@ -28494,6 +28731,12 @@ Object.freeze({
28494
28731
  addonId: null,
28495
28732
  access: "view"
28496
28733
  },
28734
+ "recording.pauseForStorageMigration": {
28735
+ capName: "recording",
28736
+ capScope: "system",
28737
+ addonId: null,
28738
+ access: "create"
28739
+ },
28497
28740
  "recording.pruneFootage": {
28498
28741
  capName: "recording",
28499
28742
  capScope: "system",
@@ -28512,7 +28755,7 @@ Object.freeze({
28512
28755
  addonId: null,
28513
28756
  access: "view"
28514
28757
  },
28515
- "recording.relocateFootage": {
28758
+ "recording.refreshStorageLocationsForMigration": {
28516
28759
  capName: "recording",
28517
28760
  capScope: "system",
28518
28761
  addonId: null,
@@ -28536,12 +28779,24 @@ Object.freeze({
28536
28779
  addonId: null,
28537
28780
  access: "create"
28538
28781
  },
28782
+ "recording.resumeForStorageMigration": {
28783
+ capName: "recording",
28784
+ capScope: "system",
28785
+ addonId: null,
28786
+ access: "create"
28787
+ },
28539
28788
  "recording.setDeviceConfig": {
28540
28789
  capName: "recording",
28541
28790
  capScope: "system",
28542
28791
  addonId: null,
28543
28792
  access: "create"
28544
28793
  },
28794
+ "recording.startStorageMigrationMove": {
28795
+ capName: "recording",
28796
+ capScope: "system",
28797
+ addonId: null,
28798
+ access: "create"
28799
+ },
28545
28800
  "recordingExport.cancelExport": {
28546
28801
  capName: "recordingExport",
28547
28802
  capScope: "system",
@@ -28932,6 +29187,30 @@ Object.freeze({
28932
29187
  addonId: null,
28933
29188
  access: "view"
28934
29189
  },
29190
+ "storageMigration.cancel": {
29191
+ capName: "storage-migration",
29192
+ capScope: "system",
29193
+ addonId: null,
29194
+ access: "create"
29195
+ },
29196
+ "storageMigration.plan": {
29197
+ capName: "storage-migration",
29198
+ capScope: "system",
29199
+ addonId: null,
29200
+ access: "view"
29201
+ },
29202
+ "storageMigration.start": {
29203
+ capName: "storage-migration",
29204
+ capScope: "system",
29205
+ addonId: null,
29206
+ access: "create"
29207
+ },
29208
+ "storageMigration.status": {
29209
+ capName: "storage-migration",
29210
+ capScope: "system",
29211
+ addonId: null,
29212
+ access: "view"
29213
+ },
28935
29214
  "storageProvider.abortUpload": {
28936
29215
  capName: "storage-provider",
28937
29216
  capScope: "system",
@@ -29310,12 +29589,42 @@ Object.freeze({
29310
29589
  addonId: null,
29311
29590
  access: "create"
29312
29591
  },
29592
+ "terminalSession.adoptLegacyMonitor": {
29593
+ capName: "terminal-session",
29594
+ capScope: "system",
29595
+ addonId: null,
29596
+ access: "create"
29597
+ },
29313
29598
  "terminalSession.close": {
29314
29599
  capName: "terminal-session",
29315
29600
  capScope: "system",
29316
29601
  addonId: null,
29317
29602
  access: "create"
29318
29603
  },
29604
+ "terminalSession.createInstance": {
29605
+ capName: "terminal-session",
29606
+ capScope: "system",
29607
+ addonId: null,
29608
+ access: "create"
29609
+ },
29610
+ "terminalSession.deleteInstance": {
29611
+ capName: "terminal-session",
29612
+ capScope: "system",
29613
+ addonId: null,
29614
+ access: "delete"
29615
+ },
29616
+ "terminalSession.listInstances": {
29617
+ capName: "terminal-session",
29618
+ capScope: "system",
29619
+ addonId: null,
29620
+ access: "view"
29621
+ },
29622
+ "terminalSession.listLegacyCameras": {
29623
+ capName: "terminal-session",
29624
+ capScope: "system",
29625
+ addonId: null,
29626
+ access: "view"
29627
+ },
29319
29628
  "terminalSession.listProfiles": {
29320
29629
  capName: "terminal-session",
29321
29630
  capScope: "system",
@@ -29334,12 +29643,30 @@ Object.freeze({
29334
29643
  addonId: null,
29335
29644
  access: "create"
29336
29645
  },
29646
+ "terminalSession.pullOutput": {
29647
+ capName: "terminal-session",
29648
+ capScope: "system",
29649
+ addonId: null,
29650
+ access: "create"
29651
+ },
29337
29652
  "terminalSession.resize": {
29338
29653
  capName: "terminal-session",
29339
29654
  capScope: "system",
29340
29655
  addonId: null,
29341
29656
  access: "create"
29342
29657
  },
29658
+ "terminalSession.setInstanceEnabled": {
29659
+ capName: "terminal-session",
29660
+ capScope: "system",
29661
+ addonId: null,
29662
+ access: "create"
29663
+ },
29664
+ "terminalSession.writeInput": {
29665
+ capName: "terminal-session",
29666
+ capScope: "system",
29667
+ addonId: null,
29668
+ access: "create"
29669
+ },
29343
29670
  "toast.onToast": {
29344
29671
  capName: "toast",
29345
29672
  capScope: "system",
package/dist/addon.mjs CHANGED
@@ -7657,12 +7657,11 @@ var RecordingConfigSchema = object({
7657
7657
  /**
7658
7658
  * Entity-relocation job state (storage entity-routing spec, Phase 4).
7659
7659
  *
7660
- * One shape shared by the recorder's `relocateFootage` (segments) and
7661
- * pipeline-analytics' `relocateMedia` (event media blobs) so the admin Data
7662
- * page renders both movers with one component. Jobs are in-RAM (a restart
7663
- * forgets them re-running is safe by construction: copy-if-absent, delete
7664
- * after verify) and each completed/failed run also lands one durable ops-log
7665
- * row on the owning addon's surface.
7660
+ * One shape shared by the recorder and pipeline-analytics internal movers.
7661
+ * The public admin surface is `storage-migration`; child jobs remain in RAM
7662
+ * because copy-if-absent, verify, delete and index/row repoint are resumable.
7663
+ * Each completed/failed run also lands one durable ops-log row on its owning
7664
+ * addon surface.
7666
7665
  */
7667
7666
  var RelocateJobStateSchema = _enum([
7668
7667
  "running",
@@ -7689,19 +7688,100 @@ var RelocateJobSchema = object({
7689
7688
  finishedAt: number().nullable(),
7690
7689
  error: string().nullable()
7691
7690
  });
7691
+ /** Profile-derived footage selection used only by the migration coordinator:
7692
+ * `recordings` owns high+mid; `recordingsLow` owns low. */
7693
+ var RelocateFootageClassSchema = _enum(["recordings", "recordingsLow"]);
7692
7694
  var RelocateFootageInputSchema = object({
7693
- deviceId: number().optional(),
7694
7695
  fromLocationId: string(),
7695
7696
  toLocationId: string(),
7696
7697
  entities: array(_enum(["segments"])).optional(),
7698
+ /** Limits relocation to the logical profile class. Omit only for the
7699
+ * pre-orchestration compatibility path. */
7700
+ footageClass: RelocateFootageClassSchema.optional(),
7697
7701
  /** Copy throttle in MB/s (default 40) — the drain is a background chore,
7698
7702
  * never allowed to starve live writers. */
7699
7703
  throttleMbps: number().min(1).max(1e3).optional()
7700
7704
  });
7701
- var RelocateMediaInputSchema = object({
7702
- deviceId: number().optional(),
7705
+ /** Internal, lease-scoped participant operation. It is intentionally separate
7706
+ * from persistent recording settings: a migration never changes
7707
+ * `RecordingConfig.enabled` or camera wrapper bindings. */
7708
+ var StorageMigrationLeaseInputSchema = object({ leaseId: string().min(1) });
7709
+ var StorageMigrationFootageMoveInputSchema = RelocateFootageInputSchema.extend({ leaseId: string().min(1) });
7710
+ var StorageMigrationMediaMoveInputSchema = object({
7703
7711
  toLocationId: string(),
7704
7712
  throttleMbps: number().min(1).max(1e3).optional()
7713
+ }).extend({ leaseId: string().min(1) });
7714
+ /** The independently selectable logical storage classes. `recordings`
7715
+ * encompasses the high and mid segment profiles; `recordingsLow` is low
7716
+ * segments; `eventMedia` is post-analysis blobs. */
7717
+ var StorageMigrationClassSchema = _enum([
7718
+ "recordings",
7719
+ "recordingsLow",
7720
+ "eventMedia"
7721
+ ]);
7722
+ /** A destination is always an existing, fully-qualified location id. The
7723
+ * migration API intentionally never changes a source location's `basePath`:
7724
+ * callers create a new `<type>:<slug>` location, then select it here. */
7725
+ var StorageMigrationDestinationsSchema = object({
7726
+ recordings: string().min(1).optional(),
7727
+ recordingsLow: string().min(1).optional(),
7728
+ eventMedia: string().min(1).optional()
7729
+ }).refine((value) => Object.keys(value).length > 0, { message: "select at least one storage class" });
7730
+ /** Shared input for planning and starting an orchestrated storage migration. */
7731
+ var StorageMigrationInputSchema = object({
7732
+ destinations: StorageMigrationDestinationsSchema,
7733
+ throttleMbps: number().min(1).max(1e3).optional()
7734
+ });
7735
+ /** The durable coordinator state machine. The only phase that changes default
7736
+ * locations is `repointing`, after every selected mover has completed and been
7737
+ * verified. */
7738
+ var StorageMigrationPhaseSchema = _enum([
7739
+ "planning",
7740
+ "pausing",
7741
+ "moving",
7742
+ "verifying",
7743
+ "repointing",
7744
+ "refreshing",
7745
+ "resuming",
7746
+ "done",
7747
+ "failed",
7748
+ "cancelled"
7749
+ ]);
7750
+ var StorageMigrationParticipantSchema = _enum([
7751
+ "pipeline",
7752
+ "recorder",
7753
+ "analytics"
7754
+ ]);
7755
+ var StorageMigrationMoveSchema = object({
7756
+ storageClass: StorageMigrationClassSchema,
7757
+ fromLocationId: string(),
7758
+ toLocationId: string(),
7759
+ moverJobId: string().nullable(),
7760
+ state: RelocateJobStateSchema.nullable(),
7761
+ error: string().nullable()
7762
+ });
7763
+ var StorageMigrationJobSchema = object({
7764
+ jobId: string(),
7765
+ phase: StorageMigrationPhaseSchema,
7766
+ destinations: StorageMigrationDestinationsSchema,
7767
+ throttleMbps: number(),
7768
+ moves: array(StorageMigrationMoveSchema),
7769
+ pauseLeaseId: string().nullable(),
7770
+ pausedParticipants: array(StorageMigrationParticipantSchema),
7771
+ repointed: boolean(),
7772
+ cancelRequested: boolean(),
7773
+ startedAt: number(),
7774
+ updatedAt: number(),
7775
+ finishedAt: number().nullable(),
7776
+ error: string().nullable()
7777
+ });
7778
+ var StorageMigrationPlanSchema = object({
7779
+ destinations: StorageMigrationDestinationsSchema,
7780
+ moves: array(object({
7781
+ storageClass: StorageMigrationClassSchema,
7782
+ fromLocationId: string(),
7783
+ toLocationId: string()
7784
+ }))
7705
7785
  });
7706
7786
  /**
7707
7787
  * `StorageLocationType` — an addon-declared id that identifies the *kind* of
@@ -16132,13 +16212,19 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
16132
16212
  }), method(object({ deviceId: number() }), EventPruneCountsSchema, {
16133
16213
  kind: "mutation",
16134
16214
  auth: "admin"
16135
- }), method(RelocateMediaInputSchema, object({ jobId: string() }), {
16215
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
16136
16216
  kind: "mutation",
16137
16217
  auth: "admin"
16138
- }), method(object({}), array(RelocateJobSchema).readonly(), {
16139
- kind: "query",
16218
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
16219
+ kind: "mutation",
16140
16220
  auth: "admin"
16141
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
16221
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
16222
+ kind: "mutation",
16223
+ auth: "admin"
16224
+ }), method(StorageMigrationMediaMoveInputSchema, object({ jobId: string() }), {
16225
+ kind: "mutation",
16226
+ auth: "admin"
16227
+ }), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
16142
16228
  kind: "mutation",
16143
16229
  auth: "admin"
16144
16230
  }), method(OpsLogQueryInputSchema, array(OpsLogEntrySchema).readonly(), {
@@ -17635,7 +17721,13 @@ var NodeInferenceDevicesSchema = object({
17635
17721
  reachable: boolean(),
17636
17722
  devices: array(NodeInferenceDeviceSchema).readonly()
17637
17723
  });
17638
- method(object({
17724
+ method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
17725
+ kind: "mutation",
17726
+ auth: "admin"
17727
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
17728
+ kind: "mutation",
17729
+ auth: "admin"
17730
+ }), method(object({
17639
17731
  deviceId: number(),
17640
17732
  agentNodeId: string()
17641
17733
  }), object({ success: literal(true) }), {
@@ -18309,6 +18401,13 @@ method(object({ locationId: string() }), EvictableUsageSchema), method(object({
18309
18401
  locationId: string(),
18310
18402
  targetBytes: number().int().positive()
18311
18403
  }), EvictResultSchema, { kind: "mutation" });
18404
+ method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin" }), method(StorageMigrationInputSchema, object({ jobId: string() }), {
18405
+ kind: "mutation",
18406
+ auth: "admin"
18407
+ }), method(object({ jobId: string().optional() }), StorageMigrationJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
18408
+ kind: "mutation",
18409
+ auth: "admin"
18410
+ });
18312
18411
  var ProviderInfoSchema = discriminatedUnion("shouldSaveDiskSpace", [object({
18313
18412
  providerId: string().min(1),
18314
18413
  displayName: string().min(1),
@@ -18412,7 +18511,67 @@ var TerminalProfileInfoSchema = object({
18412
18511
  label: string(),
18413
18512
  description: string().optional()
18414
18513
  });
18415
- method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
18514
+ /**
18515
+ * A durable operator-created Terminal instance. Profiles are templates; only
18516
+ * an instance declares a camera.
18517
+ */
18518
+ var TerminalInstanceInfoSchema = object({
18519
+ instanceId: string(),
18520
+ cameraStableId: string(),
18521
+ nodeId: string(),
18522
+ profileId: string(),
18523
+ profileLabel: string(),
18524
+ name: string(),
18525
+ enabled: boolean()
18526
+ });
18527
+ var TerminalLegacyCameraSchema = object({
18528
+ stableId: string(),
18529
+ nodeId: string(),
18530
+ profileId: string(),
18531
+ profileLabel: string(),
18532
+ name: string(),
18533
+ /** Only legacy monitor cameras can retain their historic stable identity. */
18534
+ adoptable: boolean()
18535
+ });
18536
+ var TerminalOutputEventSchema = discriminatedUnion("kind", [object({
18537
+ seq: number().int().positive(),
18538
+ kind: literal("data"),
18539
+ data: string()
18540
+ }), object({
18541
+ seq: number().int().positive(),
18542
+ kind: literal("exit"),
18543
+ exitCode: number().int(),
18544
+ signal: number().int().optional()
18545
+ })]);
18546
+ var TerminalOutputBatchSchema = object({
18547
+ cursor: number().int().nonnegative(),
18548
+ reset: boolean(),
18549
+ snapshot: string().optional(),
18550
+ events: array(TerminalOutputEventSchema).readonly()
18551
+ });
18552
+ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalInstanceInfoSchema).readonly(), { auth: "admin" }), method(object({
18553
+ targetNodeId: string().min(1),
18554
+ profileId: string().min(1),
18555
+ name: string().trim().min(1).max(160).optional()
18556
+ }), TerminalInstanceInfoSchema, {
18557
+ kind: "mutation",
18558
+ auth: "admin"
18559
+ }), method(object({ instanceId: string().min(1) }), _void(), {
18560
+ kind: "mutation",
18561
+ auth: "admin"
18562
+ }), method(object({
18563
+ instanceId: string().min(1),
18564
+ enabled: boolean()
18565
+ }), TerminalInstanceInfoSchema, {
18566
+ kind: "mutation",
18567
+ auth: "admin"
18568
+ }), method(_void(), array(TerminalLegacyCameraSchema).readonly(), { auth: "admin" }), method(object({
18569
+ stableId: string().min(1),
18570
+ name: string().trim().min(1).max(160).optional()
18571
+ }), TerminalInstanceInfoSchema, {
18572
+ kind: "mutation",
18573
+ auth: "admin"
18574
+ }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
18416
18575
  profileId: string(),
18417
18576
  cols: number().int().positive(),
18418
18577
  rows: number().int().positive()
@@ -18426,6 +18585,26 @@ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }),
18426
18585
  }), _void(), {
18427
18586
  kind: "mutation",
18428
18587
  auth: "admin"
18588
+ }), method(object({
18589
+ sessionId: string(),
18590
+ afterSeq: number().int().nonnegative(),
18591
+ waitMs: number().int().min(0).max(2e3).default(0),
18592
+ /**
18593
+ * Wait when a just-opened session has no output yet. Kept opt-in so a
18594
+ * browser's initial repaint remains immediate; the camera snapshot
18595
+ * relay uses it to avoid encoding a blank startup frame.
18596
+ */
18597
+ waitForOutput: boolean().optional()
18598
+ }), TerminalOutputBatchSchema, {
18599
+ kind: "mutation",
18600
+ auth: "admin",
18601
+ timeoutMs: 15e3
18602
+ }), method(object({
18603
+ sessionId: string(),
18604
+ data: string().max(64 * 1024)
18605
+ }), _void(), {
18606
+ kind: "mutation",
18607
+ auth: "admin"
18429
18608
  }), method(object({ sessionId: string() }), _void(), {
18430
18609
  kind: "mutation",
18431
18610
  auth: "admin"
@@ -20356,6 +20535,7 @@ var FaceInfoSchema = object({
20356
20535
  var FaceFilterEnum = _enum([
20357
20536
  "unassigned",
20358
20537
  "recognized",
20538
+ "identified",
20359
20539
  "all"
20360
20540
  ]);
20361
20541
  var MediaFileLiteSchema$1 = object({
@@ -20384,6 +20564,8 @@ method(_void(), array(IdentitySchema).readonly()), method(object({ name: string(
20384
20564
  kind: "mutation",
20385
20565
  auth: "admin"
20386
20566
  }), method(object({
20567
+ /** Restrict to one camera. Absent keeps the cluster-wide gallery view. */
20568
+ deviceId: number().int().optional(),
20387
20569
  limit: number().int().positive().optional(),
20388
20570
  filter: FaceFilterEnum.optional(),
20389
20571
  /**
@@ -22149,6 +22331,10 @@ var OsdSourceSchema = discriminatedUnion("kind", [
22149
22331
  capName: string().min(1).max(64),
22150
22332
  /** Dot path inside the slice, e.g. `detected`, `value`, `mode`. */
22151
22333
  valuePath: string().min(1).max(64)
22334
+ }),
22335
+ object({
22336
+ kind: literal("latest-recognition"),
22337
+ recognition: _enum(["person", "plate"])
22152
22338
  })
22153
22339
  ]);
22154
22340
  var OsdSlotBindingSchema = object({
@@ -22254,6 +22440,15 @@ method(object({ deviceId: number().int() }), object({
22254
22440
  }), object({ success: literal(true) }), {
22255
22441
  kind: "mutation",
22256
22442
  auth: "admin"
22443
+ }), method(object({
22444
+ sourceDeviceId: number().int(),
22445
+ targetDeviceId: number().int()
22446
+ }), object({
22447
+ copied: number().int().nonnegative(),
22448
+ skipped: number().int().nonnegative()
22449
+ }), {
22450
+ kind: "mutation",
22451
+ auth: "admin"
22257
22452
  }), method(object({
22258
22453
  deviceId: number().int(),
22259
22454
  slotId: string().min(1),
@@ -23139,13 +23334,19 @@ method(object({
23139
23334
  }), {
23140
23335
  kind: "mutation",
23141
23336
  auth: "admin"
23142
- }), method(RelocateFootageInputSchema, object({ jobId: string() }), {
23337
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
23143
23338
  kind: "mutation",
23144
23339
  auth: "admin"
23145
- }), method(object({}), array(RelocateJobSchema).readonly(), {
23146
- kind: "query",
23340
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
23341
+ kind: "mutation",
23147
23342
  auth: "admin"
23148
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
23343
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
23344
+ kind: "mutation",
23345
+ auth: "admin"
23346
+ }), method(StorageMigrationFootageMoveInputSchema, object({ jobId: string() }), {
23347
+ kind: "mutation",
23348
+ auth: "admin"
23349
+ }), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
23149
23350
  kind: "mutation",
23150
23351
  auth: "admin"
23151
23352
  });
@@ -27267,6 +27468,12 @@ Object.freeze({
27267
27468
  addonId: null,
27268
27469
  access: "delete"
27269
27470
  },
27471
+ "osdManager.copyDeviceConfiguration": {
27472
+ capName: "osd-manager",
27473
+ capScope: "system",
27474
+ addonId: null,
27475
+ access: "create"
27476
+ },
27270
27477
  "osdManager.getConditionSupport": {
27271
27478
  capName: "osd-manager",
27272
27479
  capScope: "system",
@@ -27363,7 +27570,7 @@ Object.freeze({
27363
27570
  addonId: null,
27364
27571
  access: "create"
27365
27572
  },
27366
- "pipelineAnalytics.cancelMediaRelocate": {
27573
+ "pipelineAnalytics.cancelStorageMigrationMove": {
27367
27574
  capName: "pipeline-analytics",
27368
27575
  capScope: "device",
27369
27576
  addonId: null,
@@ -27435,12 +27642,6 @@ Object.freeze({
27435
27642
  addonId: null,
27436
27643
  access: "view"
27437
27644
  },
27438
- "pipelineAnalytics.getMediaRelocateStatus": {
27439
- capName: "pipeline-analytics",
27440
- capScope: "device",
27441
- addonId: null,
27442
- access: "view"
27443
- },
27444
27645
  "pipelineAnalytics.getMotionEvents": {
27445
27646
  capName: "pipeline-analytics",
27446
27647
  capScope: "device",
@@ -27477,6 +27678,12 @@ Object.freeze({
27477
27678
  addonId: null,
27478
27679
  access: "view"
27479
27680
  },
27681
+ "pipelineAnalytics.getStorageMigrationMoveStatus": {
27682
+ capName: "pipeline-analytics",
27683
+ capScope: "device",
27684
+ addonId: null,
27685
+ access: "view"
27686
+ },
27480
27687
  "pipelineAnalytics.getTrack": {
27481
27688
  capName: "pipeline-analytics",
27482
27689
  capScope: "device",
@@ -27555,6 +27762,12 @@ Object.freeze({
27555
27762
  addonId: null,
27556
27763
  access: "view"
27557
27764
  },
27765
+ "pipelineAnalytics.pauseForStorageMigration": {
27766
+ capName: "pipeline-analytics",
27767
+ capScope: "device",
27768
+ addonId: null,
27769
+ access: "create"
27770
+ },
27558
27771
  "pipelineAnalytics.proposeRetrainAnnotations": {
27559
27772
  capName: "pipeline-analytics",
27560
27773
  capScope: "device",
@@ -27585,7 +27798,7 @@ Object.freeze({
27585
27798
  addonId: null,
27586
27799
  access: "create"
27587
27800
  },
27588
- "pipelineAnalytics.relocateMedia": {
27801
+ "pipelineAnalytics.refreshStorageLocationsForMigration": {
27589
27802
  capName: "pipeline-analytics",
27590
27803
  capScope: "device",
27591
27804
  addonId: null,
@@ -27597,6 +27810,12 @@ Object.freeze({
27597
27810
  addonId: null,
27598
27811
  access: "create"
27599
27812
  },
27813
+ "pipelineAnalytics.resumeForStorageMigration": {
27814
+ capName: "pipeline-analytics",
27815
+ capScope: "device",
27816
+ addonId: null,
27817
+ access: "create"
27818
+ },
27600
27819
  "pipelineAnalytics.saveRetrainAnnotations": {
27601
27820
  capName: "pipeline-analytics",
27602
27821
  capScope: "device",
@@ -27621,6 +27840,12 @@ Object.freeze({
27621
27840
  addonId: null,
27622
27841
  access: "create"
27623
27842
  },
27843
+ "pipelineAnalytics.startStorageMigrationMove": {
27844
+ capName: "pipeline-analytics",
27845
+ capScope: "device",
27846
+ addonId: null,
27847
+ access: "create"
27848
+ },
27624
27849
  "pipelineAnalytics.wipeAllAnalytics": {
27625
27850
  capName: "pipeline-analytics",
27626
27851
  capScope: "device",
@@ -27987,6 +28212,12 @@ Object.freeze({
27987
28212
  addonId: null,
27988
28213
  access: "view"
27989
28214
  },
28215
+ "pipelineOrchestrator.pauseForStorageMigration": {
28216
+ capName: "pipeline-orchestrator",
28217
+ capScope: "system",
28218
+ addonId: null,
28219
+ access: "create"
28220
+ },
27990
28221
  "pipelineOrchestrator.rebalance": {
27991
28222
  capName: "pipeline-orchestrator",
27992
28223
  capScope: "system",
@@ -28011,6 +28242,12 @@ Object.freeze({
28011
28242
  addonId: null,
28012
28243
  access: "view"
28013
28244
  },
28245
+ "pipelineOrchestrator.resumeForStorageMigration": {
28246
+ capName: "pipeline-orchestrator",
28247
+ capScope: "system",
28248
+ addonId: null,
28249
+ access: "create"
28250
+ },
28014
28251
  "pipelineOrchestrator.saveTemplate": {
28015
28252
  capName: "pipeline-orchestrator",
28016
28253
  capScope: "system",
@@ -28407,7 +28644,7 @@ Object.freeze({
28407
28644
  addonId: null,
28408
28645
  access: "create"
28409
28646
  },
28410
- "recording.cancelRelocate": {
28647
+ "recording.cancelStorageMigrationMove": {
28411
28648
  capName: "recording",
28412
28649
  capScope: "system",
28413
28650
  addonId: null,
@@ -28443,7 +28680,7 @@ Object.freeze({
28443
28680
  addonId: null,
28444
28681
  access: "view"
28445
28682
  },
28446
- "recording.getRelocateStatus": {
28683
+ "recording.getStorageMigrationMoveStatus": {
28447
28684
  capName: "recording",
28448
28685
  capScope: "system",
28449
28686
  addonId: null,
@@ -28467,6 +28704,12 @@ Object.freeze({
28467
28704
  addonId: null,
28468
28705
  access: "view"
28469
28706
  },
28707
+ "recording.pauseForStorageMigration": {
28708
+ capName: "recording",
28709
+ capScope: "system",
28710
+ addonId: null,
28711
+ access: "create"
28712
+ },
28470
28713
  "recording.pruneFootage": {
28471
28714
  capName: "recording",
28472
28715
  capScope: "system",
@@ -28485,7 +28728,7 @@ Object.freeze({
28485
28728
  addonId: null,
28486
28729
  access: "view"
28487
28730
  },
28488
- "recording.relocateFootage": {
28731
+ "recording.refreshStorageLocationsForMigration": {
28489
28732
  capName: "recording",
28490
28733
  capScope: "system",
28491
28734
  addonId: null,
@@ -28509,12 +28752,24 @@ Object.freeze({
28509
28752
  addonId: null,
28510
28753
  access: "create"
28511
28754
  },
28755
+ "recording.resumeForStorageMigration": {
28756
+ capName: "recording",
28757
+ capScope: "system",
28758
+ addonId: null,
28759
+ access: "create"
28760
+ },
28512
28761
  "recording.setDeviceConfig": {
28513
28762
  capName: "recording",
28514
28763
  capScope: "system",
28515
28764
  addonId: null,
28516
28765
  access: "create"
28517
28766
  },
28767
+ "recording.startStorageMigrationMove": {
28768
+ capName: "recording",
28769
+ capScope: "system",
28770
+ addonId: null,
28771
+ access: "create"
28772
+ },
28518
28773
  "recordingExport.cancelExport": {
28519
28774
  capName: "recordingExport",
28520
28775
  capScope: "system",
@@ -28905,6 +29160,30 @@ Object.freeze({
28905
29160
  addonId: null,
28906
29161
  access: "view"
28907
29162
  },
29163
+ "storageMigration.cancel": {
29164
+ capName: "storage-migration",
29165
+ capScope: "system",
29166
+ addonId: null,
29167
+ access: "create"
29168
+ },
29169
+ "storageMigration.plan": {
29170
+ capName: "storage-migration",
29171
+ capScope: "system",
29172
+ addonId: null,
29173
+ access: "view"
29174
+ },
29175
+ "storageMigration.start": {
29176
+ capName: "storage-migration",
29177
+ capScope: "system",
29178
+ addonId: null,
29179
+ access: "create"
29180
+ },
29181
+ "storageMigration.status": {
29182
+ capName: "storage-migration",
29183
+ capScope: "system",
29184
+ addonId: null,
29185
+ access: "view"
29186
+ },
28908
29187
  "storageProvider.abortUpload": {
28909
29188
  capName: "storage-provider",
28910
29189
  capScope: "system",
@@ -29283,12 +29562,42 @@ Object.freeze({
29283
29562
  addonId: null,
29284
29563
  access: "create"
29285
29564
  },
29565
+ "terminalSession.adoptLegacyMonitor": {
29566
+ capName: "terminal-session",
29567
+ capScope: "system",
29568
+ addonId: null,
29569
+ access: "create"
29570
+ },
29286
29571
  "terminalSession.close": {
29287
29572
  capName: "terminal-session",
29288
29573
  capScope: "system",
29289
29574
  addonId: null,
29290
29575
  access: "create"
29291
29576
  },
29577
+ "terminalSession.createInstance": {
29578
+ capName: "terminal-session",
29579
+ capScope: "system",
29580
+ addonId: null,
29581
+ access: "create"
29582
+ },
29583
+ "terminalSession.deleteInstance": {
29584
+ capName: "terminal-session",
29585
+ capScope: "system",
29586
+ addonId: null,
29587
+ access: "delete"
29588
+ },
29589
+ "terminalSession.listInstances": {
29590
+ capName: "terminal-session",
29591
+ capScope: "system",
29592
+ addonId: null,
29593
+ access: "view"
29594
+ },
29595
+ "terminalSession.listLegacyCameras": {
29596
+ capName: "terminal-session",
29597
+ capScope: "system",
29598
+ addonId: null,
29599
+ access: "view"
29600
+ },
29292
29601
  "terminalSession.listProfiles": {
29293
29602
  capName: "terminal-session",
29294
29603
  capScope: "system",
@@ -29307,12 +29616,30 @@ Object.freeze({
29307
29616
  addonId: null,
29308
29617
  access: "create"
29309
29618
  },
29619
+ "terminalSession.pullOutput": {
29620
+ capName: "terminal-session",
29621
+ capScope: "system",
29622
+ addonId: null,
29623
+ access: "create"
29624
+ },
29310
29625
  "terminalSession.resize": {
29311
29626
  capName: "terminal-session",
29312
29627
  capScope: "system",
29313
29628
  addonId: null,
29314
29629
  access: "create"
29315
29630
  },
29631
+ "terminalSession.setInstanceEnabled": {
29632
+ capName: "terminal-session",
29633
+ capScope: "system",
29634
+ addonId: null,
29635
+ access: "create"
29636
+ },
29637
+ "terminalSession.writeInput": {
29638
+ capName: "terminal-session",
29639
+ capScope: "system",
29640
+ addonId: null,
29641
+ access: "create"
29642
+ },
29316
29643
  "toast.onToast": {
29317
29644
  capName: "toast",
29318
29645
  capScope: "system",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-notifiers",
3
- "version": "1.2.14",
3
+ "version": "1.2.16",
4
4
  "description": "System notifiers addon for CamStack — a `notification-output` collection provider hosting per-kind notifier adapters (ntfy, pushover, gotify, telegram, discord, webhook, zentik).",
5
5
  "keywords": [
6
6
  "camstack",