@camstack/addon-provider-rademacher 0.2.10 → 0.2.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/dist/addon.js +357 -30
  2. package/dist/addon.mjs +357 -30
  3. package/package.json +1 -1
package/dist/addon.js CHANGED
@@ -8550,12 +8550,11 @@ var RecordingConfigSchema = object({
8550
8550
  /**
8551
8551
  * Entity-relocation job state (storage entity-routing spec, Phase 4).
8552
8552
  *
8553
- * One shape shared by the recorder's `relocateFootage` (segments) and
8554
- * pipeline-analytics' `relocateMedia` (event media blobs) so the admin Data
8555
- * page renders both movers with one component. Jobs are in-RAM (a restart
8556
- * forgets them re-running is safe by construction: copy-if-absent, delete
8557
- * after verify) and each completed/failed run also lands one durable ops-log
8558
- * row on the owning addon's surface.
8553
+ * One shape shared by the recorder and pipeline-analytics internal movers.
8554
+ * The public admin surface is `storage-migration`; child jobs remain in RAM
8555
+ * because copy-if-absent, verify, delete and index/row repoint are resumable.
8556
+ * Each completed/failed run also lands one durable ops-log row on its owning
8557
+ * addon surface.
8559
8558
  */
8560
8559
  var RelocateJobStateSchema = _enum([
8561
8560
  "running",
@@ -8582,19 +8581,100 @@ var RelocateJobSchema = object({
8582
8581
  finishedAt: number().nullable(),
8583
8582
  error: string().nullable()
8584
8583
  });
8584
+ /** Profile-derived footage selection used only by the migration coordinator:
8585
+ * `recordings` owns high+mid; `recordingsLow` owns low. */
8586
+ var RelocateFootageClassSchema = _enum(["recordings", "recordingsLow"]);
8585
8587
  var RelocateFootageInputSchema = object({
8586
- deviceId: number().optional(),
8587
8588
  fromLocationId: string(),
8588
8589
  toLocationId: string(),
8589
8590
  entities: array(_enum(["segments"])).optional(),
8591
+ /** Limits relocation to the logical profile class. Omit only for the
8592
+ * pre-orchestration compatibility path. */
8593
+ footageClass: RelocateFootageClassSchema.optional(),
8590
8594
  /** Copy throttle in MB/s (default 40) — the drain is a background chore,
8591
8595
  * never allowed to starve live writers. */
8592
8596
  throttleMbps: number().min(1).max(1e3).optional()
8593
8597
  });
8594
- var RelocateMediaInputSchema = object({
8595
- deviceId: number().optional(),
8598
+ /** Internal, lease-scoped participant operation. It is intentionally separate
8599
+ * from persistent recording settings: a migration never changes
8600
+ * `RecordingConfig.enabled` or camera wrapper bindings. */
8601
+ var StorageMigrationLeaseInputSchema = object({ leaseId: string().min(1) });
8602
+ var StorageMigrationFootageMoveInputSchema = RelocateFootageInputSchema.extend({ leaseId: string().min(1) });
8603
+ var StorageMigrationMediaMoveInputSchema = object({
8596
8604
  toLocationId: string(),
8597
8605
  throttleMbps: number().min(1).max(1e3).optional()
8606
+ }).extend({ leaseId: string().min(1) });
8607
+ /** The independently selectable logical storage classes. `recordings`
8608
+ * encompasses the high and mid segment profiles; `recordingsLow` is low
8609
+ * segments; `eventMedia` is post-analysis blobs. */
8610
+ var StorageMigrationClassSchema = _enum([
8611
+ "recordings",
8612
+ "recordingsLow",
8613
+ "eventMedia"
8614
+ ]);
8615
+ /** A destination is always an existing, fully-qualified location id. The
8616
+ * migration API intentionally never changes a source location's `basePath`:
8617
+ * callers create a new `<type>:<slug>` location, then select it here. */
8618
+ var StorageMigrationDestinationsSchema = object({
8619
+ recordings: string().min(1).optional(),
8620
+ recordingsLow: string().min(1).optional(),
8621
+ eventMedia: string().min(1).optional()
8622
+ }).refine((value) => Object.keys(value).length > 0, { message: "select at least one storage class" });
8623
+ /** Shared input for planning and starting an orchestrated storage migration. */
8624
+ var StorageMigrationInputSchema = object({
8625
+ destinations: StorageMigrationDestinationsSchema,
8626
+ throttleMbps: number().min(1).max(1e3).optional()
8627
+ });
8628
+ /** The durable coordinator state machine. The only phase that changes default
8629
+ * locations is `repointing`, after every selected mover has completed and been
8630
+ * verified. */
8631
+ var StorageMigrationPhaseSchema = _enum([
8632
+ "planning",
8633
+ "pausing",
8634
+ "moving",
8635
+ "verifying",
8636
+ "repointing",
8637
+ "refreshing",
8638
+ "resuming",
8639
+ "done",
8640
+ "failed",
8641
+ "cancelled"
8642
+ ]);
8643
+ var StorageMigrationParticipantSchema = _enum([
8644
+ "pipeline",
8645
+ "recorder",
8646
+ "analytics"
8647
+ ]);
8648
+ var StorageMigrationMoveSchema = object({
8649
+ storageClass: StorageMigrationClassSchema,
8650
+ fromLocationId: string(),
8651
+ toLocationId: string(),
8652
+ moverJobId: string().nullable(),
8653
+ state: RelocateJobStateSchema.nullable(),
8654
+ error: string().nullable()
8655
+ });
8656
+ var StorageMigrationJobSchema = object({
8657
+ jobId: string(),
8658
+ phase: StorageMigrationPhaseSchema,
8659
+ destinations: StorageMigrationDestinationsSchema,
8660
+ throttleMbps: number(),
8661
+ moves: array(StorageMigrationMoveSchema),
8662
+ pauseLeaseId: string().nullable(),
8663
+ pausedParticipants: array(StorageMigrationParticipantSchema),
8664
+ repointed: boolean(),
8665
+ cancelRequested: boolean(),
8666
+ startedAt: number(),
8667
+ updatedAt: number(),
8668
+ finishedAt: number().nullable(),
8669
+ error: string().nullable()
8670
+ });
8671
+ var StorageMigrationPlanSchema = object({
8672
+ destinations: StorageMigrationDestinationsSchema,
8673
+ moves: array(object({
8674
+ storageClass: StorageMigrationClassSchema,
8675
+ fromLocationId: string(),
8676
+ toLocationId: string()
8677
+ }))
8598
8678
  });
8599
8679
  /**
8600
8680
  * `StorageLocationType` — an addon-declared id that identifies the *kind* of
@@ -17248,13 +17328,19 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
17248
17328
  }), method(object({ deviceId: number() }), EventPruneCountsSchema, {
17249
17329
  kind: "mutation",
17250
17330
  auth: "admin"
17251
- }), method(RelocateMediaInputSchema, object({ jobId: string() }), {
17331
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
17252
17332
  kind: "mutation",
17253
17333
  auth: "admin"
17254
- }), method(object({}), array(RelocateJobSchema).readonly(), {
17255
- kind: "query",
17334
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
17335
+ kind: "mutation",
17256
17336
  auth: "admin"
17257
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
17337
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
17338
+ kind: "mutation",
17339
+ auth: "admin"
17340
+ }), method(StorageMigrationMediaMoveInputSchema, object({ jobId: string() }), {
17341
+ kind: "mutation",
17342
+ auth: "admin"
17343
+ }), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
17258
17344
  kind: "mutation",
17259
17345
  auth: "admin"
17260
17346
  }), method(OpsLogQueryInputSchema, array(OpsLogEntrySchema).readonly(), {
@@ -18784,7 +18870,13 @@ var NodeInferenceDevicesSchema = object({
18784
18870
  reachable: boolean(),
18785
18871
  devices: array(NodeInferenceDeviceSchema).readonly()
18786
18872
  });
18787
- method(object({
18873
+ method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
18874
+ kind: "mutation",
18875
+ auth: "admin"
18876
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
18877
+ kind: "mutation",
18878
+ auth: "admin"
18879
+ }), method(object({
18788
18880
  deviceId: number(),
18789
18881
  agentNodeId: string()
18790
18882
  }), object({ success: literal(true) }), {
@@ -19458,6 +19550,13 @@ method(object({ locationId: string() }), EvictableUsageSchema), method(object({
19458
19550
  locationId: string(),
19459
19551
  targetBytes: number().int().positive()
19460
19552
  }), EvictResultSchema, { kind: "mutation" });
19553
+ method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin" }), method(StorageMigrationInputSchema, object({ jobId: string() }), {
19554
+ kind: "mutation",
19555
+ auth: "admin"
19556
+ }), method(object({ jobId: string().optional() }), StorageMigrationJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
19557
+ kind: "mutation",
19558
+ auth: "admin"
19559
+ });
19461
19560
  var ProviderInfoSchema = discriminatedUnion("shouldSaveDiskSpace", [object({
19462
19561
  providerId: string().min(1),
19463
19562
  displayName: string().min(1),
@@ -19561,7 +19660,67 @@ var TerminalProfileInfoSchema = object({
19561
19660
  label: string(),
19562
19661
  description: string().optional()
19563
19662
  });
19564
- method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
19663
+ /**
19664
+ * A durable operator-created Terminal instance. Profiles are templates; only
19665
+ * an instance declares a camera.
19666
+ */
19667
+ var TerminalInstanceInfoSchema = object({
19668
+ instanceId: string(),
19669
+ cameraStableId: string(),
19670
+ nodeId: string(),
19671
+ profileId: string(),
19672
+ profileLabel: string(),
19673
+ name: string(),
19674
+ enabled: boolean()
19675
+ });
19676
+ var TerminalLegacyCameraSchema = object({
19677
+ stableId: string(),
19678
+ nodeId: string(),
19679
+ profileId: string(),
19680
+ profileLabel: string(),
19681
+ name: string(),
19682
+ /** Only legacy monitor cameras can retain their historic stable identity. */
19683
+ adoptable: boolean()
19684
+ });
19685
+ var TerminalOutputEventSchema = discriminatedUnion("kind", [object({
19686
+ seq: number().int().positive(),
19687
+ kind: literal("data"),
19688
+ data: string()
19689
+ }), object({
19690
+ seq: number().int().positive(),
19691
+ kind: literal("exit"),
19692
+ exitCode: number().int(),
19693
+ signal: number().int().optional()
19694
+ })]);
19695
+ var TerminalOutputBatchSchema = object({
19696
+ cursor: number().int().nonnegative(),
19697
+ reset: boolean(),
19698
+ snapshot: string().optional(),
19699
+ events: array(TerminalOutputEventSchema).readonly()
19700
+ });
19701
+ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalInstanceInfoSchema).readonly(), { auth: "admin" }), method(object({
19702
+ targetNodeId: string().min(1),
19703
+ profileId: string().min(1),
19704
+ name: string().trim().min(1).max(160).optional()
19705
+ }), TerminalInstanceInfoSchema, {
19706
+ kind: "mutation",
19707
+ auth: "admin"
19708
+ }), method(object({ instanceId: string().min(1) }), _void(), {
19709
+ kind: "mutation",
19710
+ auth: "admin"
19711
+ }), method(object({
19712
+ instanceId: string().min(1),
19713
+ enabled: boolean()
19714
+ }), TerminalInstanceInfoSchema, {
19715
+ kind: "mutation",
19716
+ auth: "admin"
19717
+ }), method(_void(), array(TerminalLegacyCameraSchema).readonly(), { auth: "admin" }), method(object({
19718
+ stableId: string().min(1),
19719
+ name: string().trim().min(1).max(160).optional()
19720
+ }), TerminalInstanceInfoSchema, {
19721
+ kind: "mutation",
19722
+ auth: "admin"
19723
+ }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
19565
19724
  profileId: string(),
19566
19725
  cols: number().int().positive(),
19567
19726
  rows: number().int().positive()
@@ -19575,6 +19734,26 @@ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }),
19575
19734
  }), _void(), {
19576
19735
  kind: "mutation",
19577
19736
  auth: "admin"
19737
+ }), method(object({
19738
+ sessionId: string(),
19739
+ afterSeq: number().int().nonnegative(),
19740
+ waitMs: number().int().min(0).max(2e3).default(0),
19741
+ /**
19742
+ * Wait when a just-opened session has no output yet. Kept opt-in so a
19743
+ * browser's initial repaint remains immediate; the camera snapshot
19744
+ * relay uses it to avoid encoding a blank startup frame.
19745
+ */
19746
+ waitForOutput: boolean().optional()
19747
+ }), TerminalOutputBatchSchema, {
19748
+ kind: "mutation",
19749
+ auth: "admin",
19750
+ timeoutMs: 15e3
19751
+ }), method(object({
19752
+ sessionId: string(),
19753
+ data: string().max(64 * 1024)
19754
+ }), _void(), {
19755
+ kind: "mutation",
19756
+ auth: "admin"
19578
19757
  }), method(object({ sessionId: string() }), _void(), {
19579
19758
  kind: "mutation",
19580
19759
  auth: "admin"
@@ -22062,6 +22241,7 @@ var FaceInfoSchema = object({
22062
22241
  var FaceFilterEnum = _enum([
22063
22242
  "unassigned",
22064
22243
  "recognized",
22244
+ "identified",
22065
22245
  "all"
22066
22246
  ]);
22067
22247
  var MediaFileLiteSchema$1 = object({
@@ -22090,6 +22270,8 @@ method(_void(), array(IdentitySchema).readonly()), method(object({ name: string(
22090
22270
  kind: "mutation",
22091
22271
  auth: "admin"
22092
22272
  }), method(object({
22273
+ /** Restrict to one camera. Absent keeps the cluster-wide gallery view. */
22274
+ deviceId: number().int().optional(),
22093
22275
  limit: number().int().positive().optional(),
22094
22276
  filter: FaceFilterEnum.optional(),
22095
22277
  /**
@@ -24319,6 +24501,10 @@ var OsdSourceSchema = discriminatedUnion("kind", [
24319
24501
  capName: string().min(1).max(64),
24320
24502
  /** Dot path inside the slice, e.g. `detected`, `value`, `mode`. */
24321
24503
  valuePath: string().min(1).max(64)
24504
+ }),
24505
+ object({
24506
+ kind: literal("latest-recognition"),
24507
+ recognition: _enum(["person", "plate"])
24322
24508
  })
24323
24509
  ]);
24324
24510
  var OsdSlotBindingSchema = object({
@@ -24424,6 +24610,15 @@ method(object({ deviceId: number().int() }), object({
24424
24610
  }), object({ success: literal(true) }), {
24425
24611
  kind: "mutation",
24426
24612
  auth: "admin"
24613
+ }), method(object({
24614
+ sourceDeviceId: number().int(),
24615
+ targetDeviceId: number().int()
24616
+ }), object({
24617
+ copied: number().int().nonnegative(),
24618
+ skipped: number().int().nonnegative()
24619
+ }), {
24620
+ kind: "mutation",
24621
+ auth: "admin"
24427
24622
  }), method(object({
24428
24623
  deviceId: number().int(),
24429
24624
  slotId: string().min(1),
@@ -25521,13 +25716,19 @@ method(object({
25521
25716
  }), {
25522
25717
  kind: "mutation",
25523
25718
  auth: "admin"
25524
- }), method(RelocateFootageInputSchema, object({ jobId: string() }), {
25719
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
25525
25720
  kind: "mutation",
25526
25721
  auth: "admin"
25527
- }), method(object({}), array(RelocateJobSchema).readonly(), {
25528
- kind: "query",
25722
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
25723
+ kind: "mutation",
25529
25724
  auth: "admin"
25530
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
25725
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
25726
+ kind: "mutation",
25727
+ auth: "admin"
25728
+ }), method(StorageMigrationFootageMoveInputSchema, object({ jobId: string() }), {
25729
+ kind: "mutation",
25730
+ auth: "admin"
25731
+ }), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
25531
25732
  kind: "mutation",
25532
25733
  auth: "admin"
25533
25734
  });
@@ -31133,6 +31334,12 @@ Object.freeze({
31133
31334
  addonId: null,
31134
31335
  access: "delete"
31135
31336
  },
31337
+ "osdManager.copyDeviceConfiguration": {
31338
+ capName: "osd-manager",
31339
+ capScope: "system",
31340
+ addonId: null,
31341
+ access: "create"
31342
+ },
31136
31343
  "osdManager.getConditionSupport": {
31137
31344
  capName: "osd-manager",
31138
31345
  capScope: "system",
@@ -31229,7 +31436,7 @@ Object.freeze({
31229
31436
  addonId: null,
31230
31437
  access: "create"
31231
31438
  },
31232
- "pipelineAnalytics.cancelMediaRelocate": {
31439
+ "pipelineAnalytics.cancelStorageMigrationMove": {
31233
31440
  capName: "pipeline-analytics",
31234
31441
  capScope: "device",
31235
31442
  addonId: null,
@@ -31301,12 +31508,6 @@ Object.freeze({
31301
31508
  addonId: null,
31302
31509
  access: "view"
31303
31510
  },
31304
- "pipelineAnalytics.getMediaRelocateStatus": {
31305
- capName: "pipeline-analytics",
31306
- capScope: "device",
31307
- addonId: null,
31308
- access: "view"
31309
- },
31310
31511
  "pipelineAnalytics.getMotionEvents": {
31311
31512
  capName: "pipeline-analytics",
31312
31513
  capScope: "device",
@@ -31343,6 +31544,12 @@ Object.freeze({
31343
31544
  addonId: null,
31344
31545
  access: "view"
31345
31546
  },
31547
+ "pipelineAnalytics.getStorageMigrationMoveStatus": {
31548
+ capName: "pipeline-analytics",
31549
+ capScope: "device",
31550
+ addonId: null,
31551
+ access: "view"
31552
+ },
31346
31553
  "pipelineAnalytics.getTrack": {
31347
31554
  capName: "pipeline-analytics",
31348
31555
  capScope: "device",
@@ -31421,6 +31628,12 @@ Object.freeze({
31421
31628
  addonId: null,
31422
31629
  access: "view"
31423
31630
  },
31631
+ "pipelineAnalytics.pauseForStorageMigration": {
31632
+ capName: "pipeline-analytics",
31633
+ capScope: "device",
31634
+ addonId: null,
31635
+ access: "create"
31636
+ },
31424
31637
  "pipelineAnalytics.proposeRetrainAnnotations": {
31425
31638
  capName: "pipeline-analytics",
31426
31639
  capScope: "device",
@@ -31451,7 +31664,7 @@ Object.freeze({
31451
31664
  addonId: null,
31452
31665
  access: "create"
31453
31666
  },
31454
- "pipelineAnalytics.relocateMedia": {
31667
+ "pipelineAnalytics.refreshStorageLocationsForMigration": {
31455
31668
  capName: "pipeline-analytics",
31456
31669
  capScope: "device",
31457
31670
  addonId: null,
@@ -31463,6 +31676,12 @@ Object.freeze({
31463
31676
  addonId: null,
31464
31677
  access: "create"
31465
31678
  },
31679
+ "pipelineAnalytics.resumeForStorageMigration": {
31680
+ capName: "pipeline-analytics",
31681
+ capScope: "device",
31682
+ addonId: null,
31683
+ access: "create"
31684
+ },
31466
31685
  "pipelineAnalytics.saveRetrainAnnotations": {
31467
31686
  capName: "pipeline-analytics",
31468
31687
  capScope: "device",
@@ -31487,6 +31706,12 @@ Object.freeze({
31487
31706
  addonId: null,
31488
31707
  access: "create"
31489
31708
  },
31709
+ "pipelineAnalytics.startStorageMigrationMove": {
31710
+ capName: "pipeline-analytics",
31711
+ capScope: "device",
31712
+ addonId: null,
31713
+ access: "create"
31714
+ },
31490
31715
  "pipelineAnalytics.wipeAllAnalytics": {
31491
31716
  capName: "pipeline-analytics",
31492
31717
  capScope: "device",
@@ -31853,6 +32078,12 @@ Object.freeze({
31853
32078
  addonId: null,
31854
32079
  access: "view"
31855
32080
  },
32081
+ "pipelineOrchestrator.pauseForStorageMigration": {
32082
+ capName: "pipeline-orchestrator",
32083
+ capScope: "system",
32084
+ addonId: null,
32085
+ access: "create"
32086
+ },
31856
32087
  "pipelineOrchestrator.rebalance": {
31857
32088
  capName: "pipeline-orchestrator",
31858
32089
  capScope: "system",
@@ -31877,6 +32108,12 @@ Object.freeze({
31877
32108
  addonId: null,
31878
32109
  access: "view"
31879
32110
  },
32111
+ "pipelineOrchestrator.resumeForStorageMigration": {
32112
+ capName: "pipeline-orchestrator",
32113
+ capScope: "system",
32114
+ addonId: null,
32115
+ access: "create"
32116
+ },
31880
32117
  "pipelineOrchestrator.saveTemplate": {
31881
32118
  capName: "pipeline-orchestrator",
31882
32119
  capScope: "system",
@@ -32273,7 +32510,7 @@ Object.freeze({
32273
32510
  addonId: null,
32274
32511
  access: "create"
32275
32512
  },
32276
- "recording.cancelRelocate": {
32513
+ "recording.cancelStorageMigrationMove": {
32277
32514
  capName: "recording",
32278
32515
  capScope: "system",
32279
32516
  addonId: null,
@@ -32309,7 +32546,7 @@ Object.freeze({
32309
32546
  addonId: null,
32310
32547
  access: "view"
32311
32548
  },
32312
- "recording.getRelocateStatus": {
32549
+ "recording.getStorageMigrationMoveStatus": {
32313
32550
  capName: "recording",
32314
32551
  capScope: "system",
32315
32552
  addonId: null,
@@ -32333,6 +32570,12 @@ Object.freeze({
32333
32570
  addonId: null,
32334
32571
  access: "view"
32335
32572
  },
32573
+ "recording.pauseForStorageMigration": {
32574
+ capName: "recording",
32575
+ capScope: "system",
32576
+ addonId: null,
32577
+ access: "create"
32578
+ },
32336
32579
  "recording.pruneFootage": {
32337
32580
  capName: "recording",
32338
32581
  capScope: "system",
@@ -32351,7 +32594,7 @@ Object.freeze({
32351
32594
  addonId: null,
32352
32595
  access: "view"
32353
32596
  },
32354
- "recording.relocateFootage": {
32597
+ "recording.refreshStorageLocationsForMigration": {
32355
32598
  capName: "recording",
32356
32599
  capScope: "system",
32357
32600
  addonId: null,
@@ -32375,12 +32618,24 @@ Object.freeze({
32375
32618
  addonId: null,
32376
32619
  access: "create"
32377
32620
  },
32621
+ "recording.resumeForStorageMigration": {
32622
+ capName: "recording",
32623
+ capScope: "system",
32624
+ addonId: null,
32625
+ access: "create"
32626
+ },
32378
32627
  "recording.setDeviceConfig": {
32379
32628
  capName: "recording",
32380
32629
  capScope: "system",
32381
32630
  addonId: null,
32382
32631
  access: "create"
32383
32632
  },
32633
+ "recording.startStorageMigrationMove": {
32634
+ capName: "recording",
32635
+ capScope: "system",
32636
+ addonId: null,
32637
+ access: "create"
32638
+ },
32384
32639
  "recordingExport.cancelExport": {
32385
32640
  capName: "recordingExport",
32386
32641
  capScope: "system",
@@ -32771,6 +33026,30 @@ Object.freeze({
32771
33026
  addonId: null,
32772
33027
  access: "view"
32773
33028
  },
33029
+ "storageMigration.cancel": {
33030
+ capName: "storage-migration",
33031
+ capScope: "system",
33032
+ addonId: null,
33033
+ access: "create"
33034
+ },
33035
+ "storageMigration.plan": {
33036
+ capName: "storage-migration",
33037
+ capScope: "system",
33038
+ addonId: null,
33039
+ access: "view"
33040
+ },
33041
+ "storageMigration.start": {
33042
+ capName: "storage-migration",
33043
+ capScope: "system",
33044
+ addonId: null,
33045
+ access: "create"
33046
+ },
33047
+ "storageMigration.status": {
33048
+ capName: "storage-migration",
33049
+ capScope: "system",
33050
+ addonId: null,
33051
+ access: "view"
33052
+ },
32774
33053
  "storageProvider.abortUpload": {
32775
33054
  capName: "storage-provider",
32776
33055
  capScope: "system",
@@ -33149,12 +33428,42 @@ Object.freeze({
33149
33428
  addonId: null,
33150
33429
  access: "create"
33151
33430
  },
33431
+ "terminalSession.adoptLegacyMonitor": {
33432
+ capName: "terminal-session",
33433
+ capScope: "system",
33434
+ addonId: null,
33435
+ access: "create"
33436
+ },
33152
33437
  "terminalSession.close": {
33153
33438
  capName: "terminal-session",
33154
33439
  capScope: "system",
33155
33440
  addonId: null,
33156
33441
  access: "create"
33157
33442
  },
33443
+ "terminalSession.createInstance": {
33444
+ capName: "terminal-session",
33445
+ capScope: "system",
33446
+ addonId: null,
33447
+ access: "create"
33448
+ },
33449
+ "terminalSession.deleteInstance": {
33450
+ capName: "terminal-session",
33451
+ capScope: "system",
33452
+ addonId: null,
33453
+ access: "delete"
33454
+ },
33455
+ "terminalSession.listInstances": {
33456
+ capName: "terminal-session",
33457
+ capScope: "system",
33458
+ addonId: null,
33459
+ access: "view"
33460
+ },
33461
+ "terminalSession.listLegacyCameras": {
33462
+ capName: "terminal-session",
33463
+ capScope: "system",
33464
+ addonId: null,
33465
+ access: "view"
33466
+ },
33158
33467
  "terminalSession.listProfiles": {
33159
33468
  capName: "terminal-session",
33160
33469
  capScope: "system",
@@ -33173,12 +33482,30 @@ Object.freeze({
33173
33482
  addonId: null,
33174
33483
  access: "create"
33175
33484
  },
33485
+ "terminalSession.pullOutput": {
33486
+ capName: "terminal-session",
33487
+ capScope: "system",
33488
+ addonId: null,
33489
+ access: "create"
33490
+ },
33176
33491
  "terminalSession.resize": {
33177
33492
  capName: "terminal-session",
33178
33493
  capScope: "system",
33179
33494
  addonId: null,
33180
33495
  access: "create"
33181
33496
  },
33497
+ "terminalSession.setInstanceEnabled": {
33498
+ capName: "terminal-session",
33499
+ capScope: "system",
33500
+ addonId: null,
33501
+ access: "create"
33502
+ },
33503
+ "terminalSession.writeInput": {
33504
+ capName: "terminal-session",
33505
+ capScope: "system",
33506
+ addonId: null,
33507
+ access: "create"
33508
+ },
33182
33509
  "toast.onToast": {
33183
33510
  capName: "toast",
33184
33511
  capScope: "system",
package/dist/addon.mjs CHANGED
@@ -8549,12 +8549,11 @@ var RecordingConfigSchema = object({
8549
8549
  /**
8550
8550
  * Entity-relocation job state (storage entity-routing spec, Phase 4).
8551
8551
  *
8552
- * One shape shared by the recorder's `relocateFootage` (segments) and
8553
- * pipeline-analytics' `relocateMedia` (event media blobs) so the admin Data
8554
- * page renders both movers with one component. Jobs are in-RAM (a restart
8555
- * forgets them re-running is safe by construction: copy-if-absent, delete
8556
- * after verify) and each completed/failed run also lands one durable ops-log
8557
- * row on the owning addon's surface.
8552
+ * One shape shared by the recorder and pipeline-analytics internal movers.
8553
+ * The public admin surface is `storage-migration`; child jobs remain in RAM
8554
+ * because copy-if-absent, verify, delete and index/row repoint are resumable.
8555
+ * Each completed/failed run also lands one durable ops-log row on its owning
8556
+ * addon surface.
8558
8557
  */
8559
8558
  var RelocateJobStateSchema = _enum([
8560
8559
  "running",
@@ -8581,19 +8580,100 @@ var RelocateJobSchema = object({
8581
8580
  finishedAt: number().nullable(),
8582
8581
  error: string().nullable()
8583
8582
  });
8583
+ /** Profile-derived footage selection used only by the migration coordinator:
8584
+ * `recordings` owns high+mid; `recordingsLow` owns low. */
8585
+ var RelocateFootageClassSchema = _enum(["recordings", "recordingsLow"]);
8584
8586
  var RelocateFootageInputSchema = object({
8585
- deviceId: number().optional(),
8586
8587
  fromLocationId: string(),
8587
8588
  toLocationId: string(),
8588
8589
  entities: array(_enum(["segments"])).optional(),
8590
+ /** Limits relocation to the logical profile class. Omit only for the
8591
+ * pre-orchestration compatibility path. */
8592
+ footageClass: RelocateFootageClassSchema.optional(),
8589
8593
  /** Copy throttle in MB/s (default 40) — the drain is a background chore,
8590
8594
  * never allowed to starve live writers. */
8591
8595
  throttleMbps: number().min(1).max(1e3).optional()
8592
8596
  });
8593
- var RelocateMediaInputSchema = object({
8594
- deviceId: number().optional(),
8597
+ /** Internal, lease-scoped participant operation. It is intentionally separate
8598
+ * from persistent recording settings: a migration never changes
8599
+ * `RecordingConfig.enabled` or camera wrapper bindings. */
8600
+ var StorageMigrationLeaseInputSchema = object({ leaseId: string().min(1) });
8601
+ var StorageMigrationFootageMoveInputSchema = RelocateFootageInputSchema.extend({ leaseId: string().min(1) });
8602
+ var StorageMigrationMediaMoveInputSchema = object({
8595
8603
  toLocationId: string(),
8596
8604
  throttleMbps: number().min(1).max(1e3).optional()
8605
+ }).extend({ leaseId: string().min(1) });
8606
+ /** The independently selectable logical storage classes. `recordings`
8607
+ * encompasses the high and mid segment profiles; `recordingsLow` is low
8608
+ * segments; `eventMedia` is post-analysis blobs. */
8609
+ var StorageMigrationClassSchema = _enum([
8610
+ "recordings",
8611
+ "recordingsLow",
8612
+ "eventMedia"
8613
+ ]);
8614
+ /** A destination is always an existing, fully-qualified location id. The
8615
+ * migration API intentionally never changes a source location's `basePath`:
8616
+ * callers create a new `<type>:<slug>` location, then select it here. */
8617
+ var StorageMigrationDestinationsSchema = object({
8618
+ recordings: string().min(1).optional(),
8619
+ recordingsLow: string().min(1).optional(),
8620
+ eventMedia: string().min(1).optional()
8621
+ }).refine((value) => Object.keys(value).length > 0, { message: "select at least one storage class" });
8622
+ /** Shared input for planning and starting an orchestrated storage migration. */
8623
+ var StorageMigrationInputSchema = object({
8624
+ destinations: StorageMigrationDestinationsSchema,
8625
+ throttleMbps: number().min(1).max(1e3).optional()
8626
+ });
8627
+ /** The durable coordinator state machine. The only phase that changes default
8628
+ * locations is `repointing`, after every selected mover has completed and been
8629
+ * verified. */
8630
+ var StorageMigrationPhaseSchema = _enum([
8631
+ "planning",
8632
+ "pausing",
8633
+ "moving",
8634
+ "verifying",
8635
+ "repointing",
8636
+ "refreshing",
8637
+ "resuming",
8638
+ "done",
8639
+ "failed",
8640
+ "cancelled"
8641
+ ]);
8642
+ var StorageMigrationParticipantSchema = _enum([
8643
+ "pipeline",
8644
+ "recorder",
8645
+ "analytics"
8646
+ ]);
8647
+ var StorageMigrationMoveSchema = object({
8648
+ storageClass: StorageMigrationClassSchema,
8649
+ fromLocationId: string(),
8650
+ toLocationId: string(),
8651
+ moverJobId: string().nullable(),
8652
+ state: RelocateJobStateSchema.nullable(),
8653
+ error: string().nullable()
8654
+ });
8655
+ var StorageMigrationJobSchema = object({
8656
+ jobId: string(),
8657
+ phase: StorageMigrationPhaseSchema,
8658
+ destinations: StorageMigrationDestinationsSchema,
8659
+ throttleMbps: number(),
8660
+ moves: array(StorageMigrationMoveSchema),
8661
+ pauseLeaseId: string().nullable(),
8662
+ pausedParticipants: array(StorageMigrationParticipantSchema),
8663
+ repointed: boolean(),
8664
+ cancelRequested: boolean(),
8665
+ startedAt: number(),
8666
+ updatedAt: number(),
8667
+ finishedAt: number().nullable(),
8668
+ error: string().nullable()
8669
+ });
8670
+ var StorageMigrationPlanSchema = object({
8671
+ destinations: StorageMigrationDestinationsSchema,
8672
+ moves: array(object({
8673
+ storageClass: StorageMigrationClassSchema,
8674
+ fromLocationId: string(),
8675
+ toLocationId: string()
8676
+ }))
8597
8677
  });
8598
8678
  /**
8599
8679
  * `StorageLocationType` — an addon-declared id that identifies the *kind* of
@@ -17247,13 +17327,19 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
17247
17327
  }), method(object({ deviceId: number() }), EventPruneCountsSchema, {
17248
17328
  kind: "mutation",
17249
17329
  auth: "admin"
17250
- }), method(RelocateMediaInputSchema, object({ jobId: string() }), {
17330
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
17251
17331
  kind: "mutation",
17252
17332
  auth: "admin"
17253
- }), method(object({}), array(RelocateJobSchema).readonly(), {
17254
- kind: "query",
17333
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
17334
+ kind: "mutation",
17255
17335
  auth: "admin"
17256
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
17336
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
17337
+ kind: "mutation",
17338
+ auth: "admin"
17339
+ }), method(StorageMigrationMediaMoveInputSchema, object({ jobId: string() }), {
17340
+ kind: "mutation",
17341
+ auth: "admin"
17342
+ }), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
17257
17343
  kind: "mutation",
17258
17344
  auth: "admin"
17259
17345
  }), method(OpsLogQueryInputSchema, array(OpsLogEntrySchema).readonly(), {
@@ -18783,7 +18869,13 @@ var NodeInferenceDevicesSchema = object({
18783
18869
  reachable: boolean(),
18784
18870
  devices: array(NodeInferenceDeviceSchema).readonly()
18785
18871
  });
18786
- method(object({
18872
+ method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
18873
+ kind: "mutation",
18874
+ auth: "admin"
18875
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
18876
+ kind: "mutation",
18877
+ auth: "admin"
18878
+ }), method(object({
18787
18879
  deviceId: number(),
18788
18880
  agentNodeId: string()
18789
18881
  }), object({ success: literal(true) }), {
@@ -19457,6 +19549,13 @@ method(object({ locationId: string() }), EvictableUsageSchema), method(object({
19457
19549
  locationId: string(),
19458
19550
  targetBytes: number().int().positive()
19459
19551
  }), EvictResultSchema, { kind: "mutation" });
19552
+ method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin" }), method(StorageMigrationInputSchema, object({ jobId: string() }), {
19553
+ kind: "mutation",
19554
+ auth: "admin"
19555
+ }), method(object({ jobId: string().optional() }), StorageMigrationJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
19556
+ kind: "mutation",
19557
+ auth: "admin"
19558
+ });
19460
19559
  var ProviderInfoSchema = discriminatedUnion("shouldSaveDiskSpace", [object({
19461
19560
  providerId: string().min(1),
19462
19561
  displayName: string().min(1),
@@ -19560,7 +19659,67 @@ var TerminalProfileInfoSchema = object({
19560
19659
  label: string(),
19561
19660
  description: string().optional()
19562
19661
  });
19563
- method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
19662
+ /**
19663
+ * A durable operator-created Terminal instance. Profiles are templates; only
19664
+ * an instance declares a camera.
19665
+ */
19666
+ var TerminalInstanceInfoSchema = object({
19667
+ instanceId: string(),
19668
+ cameraStableId: string(),
19669
+ nodeId: string(),
19670
+ profileId: string(),
19671
+ profileLabel: string(),
19672
+ name: string(),
19673
+ enabled: boolean()
19674
+ });
19675
+ var TerminalLegacyCameraSchema = object({
19676
+ stableId: string(),
19677
+ nodeId: string(),
19678
+ profileId: string(),
19679
+ profileLabel: string(),
19680
+ name: string(),
19681
+ /** Only legacy monitor cameras can retain their historic stable identity. */
19682
+ adoptable: boolean()
19683
+ });
19684
+ var TerminalOutputEventSchema = discriminatedUnion("kind", [object({
19685
+ seq: number().int().positive(),
19686
+ kind: literal("data"),
19687
+ data: string()
19688
+ }), object({
19689
+ seq: number().int().positive(),
19690
+ kind: literal("exit"),
19691
+ exitCode: number().int(),
19692
+ signal: number().int().optional()
19693
+ })]);
19694
+ var TerminalOutputBatchSchema = object({
19695
+ cursor: number().int().nonnegative(),
19696
+ reset: boolean(),
19697
+ snapshot: string().optional(),
19698
+ events: array(TerminalOutputEventSchema).readonly()
19699
+ });
19700
+ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalInstanceInfoSchema).readonly(), { auth: "admin" }), method(object({
19701
+ targetNodeId: string().min(1),
19702
+ profileId: string().min(1),
19703
+ name: string().trim().min(1).max(160).optional()
19704
+ }), TerminalInstanceInfoSchema, {
19705
+ kind: "mutation",
19706
+ auth: "admin"
19707
+ }), method(object({ instanceId: string().min(1) }), _void(), {
19708
+ kind: "mutation",
19709
+ auth: "admin"
19710
+ }), method(object({
19711
+ instanceId: string().min(1),
19712
+ enabled: boolean()
19713
+ }), TerminalInstanceInfoSchema, {
19714
+ kind: "mutation",
19715
+ auth: "admin"
19716
+ }), method(_void(), array(TerminalLegacyCameraSchema).readonly(), { auth: "admin" }), method(object({
19717
+ stableId: string().min(1),
19718
+ name: string().trim().min(1).max(160).optional()
19719
+ }), TerminalInstanceInfoSchema, {
19720
+ kind: "mutation",
19721
+ auth: "admin"
19722
+ }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
19564
19723
  profileId: string(),
19565
19724
  cols: number().int().positive(),
19566
19725
  rows: number().int().positive()
@@ -19574,6 +19733,26 @@ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }),
19574
19733
  }), _void(), {
19575
19734
  kind: "mutation",
19576
19735
  auth: "admin"
19736
+ }), method(object({
19737
+ sessionId: string(),
19738
+ afterSeq: number().int().nonnegative(),
19739
+ waitMs: number().int().min(0).max(2e3).default(0),
19740
+ /**
19741
+ * Wait when a just-opened session has no output yet. Kept opt-in so a
19742
+ * browser's initial repaint remains immediate; the camera snapshot
19743
+ * relay uses it to avoid encoding a blank startup frame.
19744
+ */
19745
+ waitForOutput: boolean().optional()
19746
+ }), TerminalOutputBatchSchema, {
19747
+ kind: "mutation",
19748
+ auth: "admin",
19749
+ timeoutMs: 15e3
19750
+ }), method(object({
19751
+ sessionId: string(),
19752
+ data: string().max(64 * 1024)
19753
+ }), _void(), {
19754
+ kind: "mutation",
19755
+ auth: "admin"
19577
19756
  }), method(object({ sessionId: string() }), _void(), {
19578
19757
  kind: "mutation",
19579
19758
  auth: "admin"
@@ -22061,6 +22240,7 @@ var FaceInfoSchema = object({
22061
22240
  var FaceFilterEnum = _enum([
22062
22241
  "unassigned",
22063
22242
  "recognized",
22243
+ "identified",
22064
22244
  "all"
22065
22245
  ]);
22066
22246
  var MediaFileLiteSchema$1 = object({
@@ -22089,6 +22269,8 @@ method(_void(), array(IdentitySchema).readonly()), method(object({ name: string(
22089
22269
  kind: "mutation",
22090
22270
  auth: "admin"
22091
22271
  }), method(object({
22272
+ /** Restrict to one camera. Absent keeps the cluster-wide gallery view. */
22273
+ deviceId: number().int().optional(),
22092
22274
  limit: number().int().positive().optional(),
22093
22275
  filter: FaceFilterEnum.optional(),
22094
22276
  /**
@@ -24318,6 +24500,10 @@ var OsdSourceSchema = discriminatedUnion("kind", [
24318
24500
  capName: string().min(1).max(64),
24319
24501
  /** Dot path inside the slice, e.g. `detected`, `value`, `mode`. */
24320
24502
  valuePath: string().min(1).max(64)
24503
+ }),
24504
+ object({
24505
+ kind: literal("latest-recognition"),
24506
+ recognition: _enum(["person", "plate"])
24321
24507
  })
24322
24508
  ]);
24323
24509
  var OsdSlotBindingSchema = object({
@@ -24423,6 +24609,15 @@ method(object({ deviceId: number().int() }), object({
24423
24609
  }), object({ success: literal(true) }), {
24424
24610
  kind: "mutation",
24425
24611
  auth: "admin"
24612
+ }), method(object({
24613
+ sourceDeviceId: number().int(),
24614
+ targetDeviceId: number().int()
24615
+ }), object({
24616
+ copied: number().int().nonnegative(),
24617
+ skipped: number().int().nonnegative()
24618
+ }), {
24619
+ kind: "mutation",
24620
+ auth: "admin"
24426
24621
  }), method(object({
24427
24622
  deviceId: number().int(),
24428
24623
  slotId: string().min(1),
@@ -25520,13 +25715,19 @@ method(object({
25520
25715
  }), {
25521
25716
  kind: "mutation",
25522
25717
  auth: "admin"
25523
- }), method(RelocateFootageInputSchema, object({ jobId: string() }), {
25718
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
25524
25719
  kind: "mutation",
25525
25720
  auth: "admin"
25526
- }), method(object({}), array(RelocateJobSchema).readonly(), {
25527
- kind: "query",
25721
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
25722
+ kind: "mutation",
25528
25723
  auth: "admin"
25529
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
25724
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
25725
+ kind: "mutation",
25726
+ auth: "admin"
25727
+ }), method(StorageMigrationFootageMoveInputSchema, object({ jobId: string() }), {
25728
+ kind: "mutation",
25729
+ auth: "admin"
25730
+ }), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
25530
25731
  kind: "mutation",
25531
25732
  auth: "admin"
25532
25733
  });
@@ -31132,6 +31333,12 @@ Object.freeze({
31132
31333
  addonId: null,
31133
31334
  access: "delete"
31134
31335
  },
31336
+ "osdManager.copyDeviceConfiguration": {
31337
+ capName: "osd-manager",
31338
+ capScope: "system",
31339
+ addonId: null,
31340
+ access: "create"
31341
+ },
31135
31342
  "osdManager.getConditionSupport": {
31136
31343
  capName: "osd-manager",
31137
31344
  capScope: "system",
@@ -31228,7 +31435,7 @@ Object.freeze({
31228
31435
  addonId: null,
31229
31436
  access: "create"
31230
31437
  },
31231
- "pipelineAnalytics.cancelMediaRelocate": {
31438
+ "pipelineAnalytics.cancelStorageMigrationMove": {
31232
31439
  capName: "pipeline-analytics",
31233
31440
  capScope: "device",
31234
31441
  addonId: null,
@@ -31300,12 +31507,6 @@ Object.freeze({
31300
31507
  addonId: null,
31301
31508
  access: "view"
31302
31509
  },
31303
- "pipelineAnalytics.getMediaRelocateStatus": {
31304
- capName: "pipeline-analytics",
31305
- capScope: "device",
31306
- addonId: null,
31307
- access: "view"
31308
- },
31309
31510
  "pipelineAnalytics.getMotionEvents": {
31310
31511
  capName: "pipeline-analytics",
31311
31512
  capScope: "device",
@@ -31342,6 +31543,12 @@ Object.freeze({
31342
31543
  addonId: null,
31343
31544
  access: "view"
31344
31545
  },
31546
+ "pipelineAnalytics.getStorageMigrationMoveStatus": {
31547
+ capName: "pipeline-analytics",
31548
+ capScope: "device",
31549
+ addonId: null,
31550
+ access: "view"
31551
+ },
31345
31552
  "pipelineAnalytics.getTrack": {
31346
31553
  capName: "pipeline-analytics",
31347
31554
  capScope: "device",
@@ -31420,6 +31627,12 @@ Object.freeze({
31420
31627
  addonId: null,
31421
31628
  access: "view"
31422
31629
  },
31630
+ "pipelineAnalytics.pauseForStorageMigration": {
31631
+ capName: "pipeline-analytics",
31632
+ capScope: "device",
31633
+ addonId: null,
31634
+ access: "create"
31635
+ },
31423
31636
  "pipelineAnalytics.proposeRetrainAnnotations": {
31424
31637
  capName: "pipeline-analytics",
31425
31638
  capScope: "device",
@@ -31450,7 +31663,7 @@ Object.freeze({
31450
31663
  addonId: null,
31451
31664
  access: "create"
31452
31665
  },
31453
- "pipelineAnalytics.relocateMedia": {
31666
+ "pipelineAnalytics.refreshStorageLocationsForMigration": {
31454
31667
  capName: "pipeline-analytics",
31455
31668
  capScope: "device",
31456
31669
  addonId: null,
@@ -31462,6 +31675,12 @@ Object.freeze({
31462
31675
  addonId: null,
31463
31676
  access: "create"
31464
31677
  },
31678
+ "pipelineAnalytics.resumeForStorageMigration": {
31679
+ capName: "pipeline-analytics",
31680
+ capScope: "device",
31681
+ addonId: null,
31682
+ access: "create"
31683
+ },
31465
31684
  "pipelineAnalytics.saveRetrainAnnotations": {
31466
31685
  capName: "pipeline-analytics",
31467
31686
  capScope: "device",
@@ -31486,6 +31705,12 @@ Object.freeze({
31486
31705
  addonId: null,
31487
31706
  access: "create"
31488
31707
  },
31708
+ "pipelineAnalytics.startStorageMigrationMove": {
31709
+ capName: "pipeline-analytics",
31710
+ capScope: "device",
31711
+ addonId: null,
31712
+ access: "create"
31713
+ },
31489
31714
  "pipelineAnalytics.wipeAllAnalytics": {
31490
31715
  capName: "pipeline-analytics",
31491
31716
  capScope: "device",
@@ -31852,6 +32077,12 @@ Object.freeze({
31852
32077
  addonId: null,
31853
32078
  access: "view"
31854
32079
  },
32080
+ "pipelineOrchestrator.pauseForStorageMigration": {
32081
+ capName: "pipeline-orchestrator",
32082
+ capScope: "system",
32083
+ addonId: null,
32084
+ access: "create"
32085
+ },
31855
32086
  "pipelineOrchestrator.rebalance": {
31856
32087
  capName: "pipeline-orchestrator",
31857
32088
  capScope: "system",
@@ -31876,6 +32107,12 @@ Object.freeze({
31876
32107
  addonId: null,
31877
32108
  access: "view"
31878
32109
  },
32110
+ "pipelineOrchestrator.resumeForStorageMigration": {
32111
+ capName: "pipeline-orchestrator",
32112
+ capScope: "system",
32113
+ addonId: null,
32114
+ access: "create"
32115
+ },
31879
32116
  "pipelineOrchestrator.saveTemplate": {
31880
32117
  capName: "pipeline-orchestrator",
31881
32118
  capScope: "system",
@@ -32272,7 +32509,7 @@ Object.freeze({
32272
32509
  addonId: null,
32273
32510
  access: "create"
32274
32511
  },
32275
- "recording.cancelRelocate": {
32512
+ "recording.cancelStorageMigrationMove": {
32276
32513
  capName: "recording",
32277
32514
  capScope: "system",
32278
32515
  addonId: null,
@@ -32308,7 +32545,7 @@ Object.freeze({
32308
32545
  addonId: null,
32309
32546
  access: "view"
32310
32547
  },
32311
- "recording.getRelocateStatus": {
32548
+ "recording.getStorageMigrationMoveStatus": {
32312
32549
  capName: "recording",
32313
32550
  capScope: "system",
32314
32551
  addonId: null,
@@ -32332,6 +32569,12 @@ Object.freeze({
32332
32569
  addonId: null,
32333
32570
  access: "view"
32334
32571
  },
32572
+ "recording.pauseForStorageMigration": {
32573
+ capName: "recording",
32574
+ capScope: "system",
32575
+ addonId: null,
32576
+ access: "create"
32577
+ },
32335
32578
  "recording.pruneFootage": {
32336
32579
  capName: "recording",
32337
32580
  capScope: "system",
@@ -32350,7 +32593,7 @@ Object.freeze({
32350
32593
  addonId: null,
32351
32594
  access: "view"
32352
32595
  },
32353
- "recording.relocateFootage": {
32596
+ "recording.refreshStorageLocationsForMigration": {
32354
32597
  capName: "recording",
32355
32598
  capScope: "system",
32356
32599
  addonId: null,
@@ -32374,12 +32617,24 @@ Object.freeze({
32374
32617
  addonId: null,
32375
32618
  access: "create"
32376
32619
  },
32620
+ "recording.resumeForStorageMigration": {
32621
+ capName: "recording",
32622
+ capScope: "system",
32623
+ addonId: null,
32624
+ access: "create"
32625
+ },
32377
32626
  "recording.setDeviceConfig": {
32378
32627
  capName: "recording",
32379
32628
  capScope: "system",
32380
32629
  addonId: null,
32381
32630
  access: "create"
32382
32631
  },
32632
+ "recording.startStorageMigrationMove": {
32633
+ capName: "recording",
32634
+ capScope: "system",
32635
+ addonId: null,
32636
+ access: "create"
32637
+ },
32383
32638
  "recordingExport.cancelExport": {
32384
32639
  capName: "recordingExport",
32385
32640
  capScope: "system",
@@ -32770,6 +33025,30 @@ Object.freeze({
32770
33025
  addonId: null,
32771
33026
  access: "view"
32772
33027
  },
33028
+ "storageMigration.cancel": {
33029
+ capName: "storage-migration",
33030
+ capScope: "system",
33031
+ addonId: null,
33032
+ access: "create"
33033
+ },
33034
+ "storageMigration.plan": {
33035
+ capName: "storage-migration",
33036
+ capScope: "system",
33037
+ addonId: null,
33038
+ access: "view"
33039
+ },
33040
+ "storageMigration.start": {
33041
+ capName: "storage-migration",
33042
+ capScope: "system",
33043
+ addonId: null,
33044
+ access: "create"
33045
+ },
33046
+ "storageMigration.status": {
33047
+ capName: "storage-migration",
33048
+ capScope: "system",
33049
+ addonId: null,
33050
+ access: "view"
33051
+ },
32773
33052
  "storageProvider.abortUpload": {
32774
33053
  capName: "storage-provider",
32775
33054
  capScope: "system",
@@ -33148,12 +33427,42 @@ Object.freeze({
33148
33427
  addonId: null,
33149
33428
  access: "create"
33150
33429
  },
33430
+ "terminalSession.adoptLegacyMonitor": {
33431
+ capName: "terminal-session",
33432
+ capScope: "system",
33433
+ addonId: null,
33434
+ access: "create"
33435
+ },
33151
33436
  "terminalSession.close": {
33152
33437
  capName: "terminal-session",
33153
33438
  capScope: "system",
33154
33439
  addonId: null,
33155
33440
  access: "create"
33156
33441
  },
33442
+ "terminalSession.createInstance": {
33443
+ capName: "terminal-session",
33444
+ capScope: "system",
33445
+ addonId: null,
33446
+ access: "create"
33447
+ },
33448
+ "terminalSession.deleteInstance": {
33449
+ capName: "terminal-session",
33450
+ capScope: "system",
33451
+ addonId: null,
33452
+ access: "delete"
33453
+ },
33454
+ "terminalSession.listInstances": {
33455
+ capName: "terminal-session",
33456
+ capScope: "system",
33457
+ addonId: null,
33458
+ access: "view"
33459
+ },
33460
+ "terminalSession.listLegacyCameras": {
33461
+ capName: "terminal-session",
33462
+ capScope: "system",
33463
+ addonId: null,
33464
+ access: "view"
33465
+ },
33157
33466
  "terminalSession.listProfiles": {
33158
33467
  capName: "terminal-session",
33159
33468
  capScope: "system",
@@ -33172,12 +33481,30 @@ Object.freeze({
33172
33481
  addonId: null,
33173
33482
  access: "create"
33174
33483
  },
33484
+ "terminalSession.pullOutput": {
33485
+ capName: "terminal-session",
33486
+ capScope: "system",
33487
+ addonId: null,
33488
+ access: "create"
33489
+ },
33175
33490
  "terminalSession.resize": {
33176
33491
  capName: "terminal-session",
33177
33492
  capScope: "system",
33178
33493
  addonId: null,
33179
33494
  access: "create"
33180
33495
  },
33496
+ "terminalSession.setInstanceEnabled": {
33497
+ capName: "terminal-session",
33498
+ capScope: "system",
33499
+ addonId: null,
33500
+ access: "create"
33501
+ },
33502
+ "terminalSession.writeInput": {
33503
+ capName: "terminal-session",
33504
+ capScope: "system",
33505
+ addonId: null,
33506
+ access: "create"
33507
+ },
33181
33508
  "toast.onToast": {
33182
33509
  capName: "toast",
33183
33510
  capScope: "system",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-provider-rademacher",
3
- "version": "0.2.10",
3
+ "version": "0.2.12",
4
4
  "description": "Rademacher HomePilot device-provider addon for CamStack — wraps the @apocaliss92/noderademacher local-hub client (roller shutters over the cover cap)",
5
5
  "keywords": [
6
6
  "camstack",