@camstack/addon-provider-dreo 0.2.11 → 0.2.13

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
@@ -7587,12 +7587,11 @@ var RecordingConfigSchema = object({
7587
7587
  /**
7588
7588
  * Entity-relocation job state (storage entity-routing spec, Phase 4).
7589
7589
  *
7590
- * One shape shared by the recorder's `relocateFootage` (segments) and
7591
- * pipeline-analytics' `relocateMedia` (event media blobs) so the admin Data
7592
- * page renders both movers with one component. Jobs are in-RAM (a restart
7593
- * forgets them re-running is safe by construction: copy-if-absent, delete
7594
- * after verify) and each completed/failed run also lands one durable ops-log
7595
- * row on the owning addon's surface.
7590
+ * One shape shared by the recorder and pipeline-analytics internal movers.
7591
+ * The public admin surface is `storage-migration`; child jobs remain in RAM
7592
+ * because copy-if-absent, verify, delete and index/row repoint are resumable.
7593
+ * Each completed/failed run also lands one durable ops-log row on its owning
7594
+ * addon surface.
7596
7595
  */
7597
7596
  var RelocateJobStateSchema = _enum([
7598
7597
  "running",
@@ -7619,19 +7618,100 @@ var RelocateJobSchema = object({
7619
7618
  finishedAt: number().nullable(),
7620
7619
  error: string().nullable()
7621
7620
  });
7621
+ /** Profile-derived footage selection used only by the migration coordinator:
7622
+ * `recordings` owns high+mid; `recordingsLow` owns low. */
7623
+ var RelocateFootageClassSchema = _enum(["recordings", "recordingsLow"]);
7622
7624
  var RelocateFootageInputSchema = object({
7623
- deviceId: number().optional(),
7624
7625
  fromLocationId: string(),
7625
7626
  toLocationId: string(),
7626
7627
  entities: array(_enum(["segments"])).optional(),
7628
+ /** Limits relocation to the logical profile class. Omit only for the
7629
+ * pre-orchestration compatibility path. */
7630
+ footageClass: RelocateFootageClassSchema.optional(),
7627
7631
  /** Copy throttle in MB/s (default 40) — the drain is a background chore,
7628
7632
  * never allowed to starve live writers. */
7629
7633
  throttleMbps: number().min(1).max(1e3).optional()
7630
7634
  });
7631
- var RelocateMediaInputSchema = object({
7632
- deviceId: number().optional(),
7635
+ /** Internal, lease-scoped participant operation. It is intentionally separate
7636
+ * from persistent recording settings: a migration never changes
7637
+ * `RecordingConfig.enabled` or camera wrapper bindings. */
7638
+ var StorageMigrationLeaseInputSchema = object({ leaseId: string().min(1) });
7639
+ var StorageMigrationFootageMoveInputSchema = RelocateFootageInputSchema.extend({ leaseId: string().min(1) });
7640
+ var StorageMigrationMediaMoveInputSchema = object({
7633
7641
  toLocationId: string(),
7634
7642
  throttleMbps: number().min(1).max(1e3).optional()
7643
+ }).extend({ leaseId: string().min(1) });
7644
+ /** The independently selectable logical storage classes. `recordings`
7645
+ * encompasses the high and mid segment profiles; `recordingsLow` is low
7646
+ * segments; `eventMedia` is post-analysis blobs. */
7647
+ var StorageMigrationClassSchema = _enum([
7648
+ "recordings",
7649
+ "recordingsLow",
7650
+ "eventMedia"
7651
+ ]);
7652
+ /** A destination is always an existing, fully-qualified location id. The
7653
+ * migration API intentionally never changes a source location's `basePath`:
7654
+ * callers create a new `<type>:<slug>` location, then select it here. */
7655
+ var StorageMigrationDestinationsSchema = object({
7656
+ recordings: string().min(1).optional(),
7657
+ recordingsLow: string().min(1).optional(),
7658
+ eventMedia: string().min(1).optional()
7659
+ }).refine((value) => Object.keys(value).length > 0, { message: "select at least one storage class" });
7660
+ /** Shared input for planning and starting an orchestrated storage migration. */
7661
+ var StorageMigrationInputSchema = object({
7662
+ destinations: StorageMigrationDestinationsSchema,
7663
+ throttleMbps: number().min(1).max(1e3).optional()
7664
+ });
7665
+ /** The durable coordinator state machine. The only phase that changes default
7666
+ * locations is `repointing`, after every selected mover has completed and been
7667
+ * verified. */
7668
+ var StorageMigrationPhaseSchema = _enum([
7669
+ "planning",
7670
+ "pausing",
7671
+ "moving",
7672
+ "verifying",
7673
+ "repointing",
7674
+ "refreshing",
7675
+ "resuming",
7676
+ "done",
7677
+ "failed",
7678
+ "cancelled"
7679
+ ]);
7680
+ var StorageMigrationParticipantSchema = _enum([
7681
+ "pipeline",
7682
+ "recorder",
7683
+ "analytics"
7684
+ ]);
7685
+ var StorageMigrationMoveSchema = object({
7686
+ storageClass: StorageMigrationClassSchema,
7687
+ fromLocationId: string(),
7688
+ toLocationId: string(),
7689
+ moverJobId: string().nullable(),
7690
+ state: RelocateJobStateSchema.nullable(),
7691
+ error: string().nullable()
7692
+ });
7693
+ var StorageMigrationJobSchema = object({
7694
+ jobId: string(),
7695
+ phase: StorageMigrationPhaseSchema,
7696
+ destinations: StorageMigrationDestinationsSchema,
7697
+ throttleMbps: number(),
7698
+ moves: array(StorageMigrationMoveSchema),
7699
+ pauseLeaseId: string().nullable(),
7700
+ pausedParticipants: array(StorageMigrationParticipantSchema),
7701
+ repointed: boolean(),
7702
+ cancelRequested: boolean(),
7703
+ startedAt: number(),
7704
+ updatedAt: number(),
7705
+ finishedAt: number().nullable(),
7706
+ error: string().nullable()
7707
+ });
7708
+ var StorageMigrationPlanSchema = object({
7709
+ destinations: StorageMigrationDestinationsSchema,
7710
+ moves: array(object({
7711
+ storageClass: StorageMigrationClassSchema,
7712
+ fromLocationId: string(),
7713
+ toLocationId: string()
7714
+ }))
7635
7715
  });
7636
7716
  /**
7637
7717
  * `StorageLocationType` — an addon-declared id that identifies the *kind* of
@@ -16302,13 +16382,19 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
16302
16382
  }), method(object({ deviceId: number() }), EventPruneCountsSchema, {
16303
16383
  kind: "mutation",
16304
16384
  auth: "admin"
16305
- }), method(RelocateMediaInputSchema, object({ jobId: string() }), {
16385
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
16306
16386
  kind: "mutation",
16307
16387
  auth: "admin"
16308
- }), method(object({}), array(RelocateJobSchema).readonly(), {
16309
- kind: "query",
16388
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
16389
+ kind: "mutation",
16310
16390
  auth: "admin"
16311
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
16391
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
16392
+ kind: "mutation",
16393
+ auth: "admin"
16394
+ }), method(StorageMigrationMediaMoveInputSchema, object({ jobId: string() }), {
16395
+ kind: "mutation",
16396
+ auth: "admin"
16397
+ }), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
16312
16398
  kind: "mutation",
16313
16399
  auth: "admin"
16314
16400
  }), method(OpsLogQueryInputSchema, array(OpsLogEntrySchema).readonly(), {
@@ -17838,7 +17924,13 @@ var NodeInferenceDevicesSchema = object({
17838
17924
  reachable: boolean(),
17839
17925
  devices: array(NodeInferenceDeviceSchema).readonly()
17840
17926
  });
17841
- method(object({
17927
+ method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
17928
+ kind: "mutation",
17929
+ auth: "admin"
17930
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
17931
+ kind: "mutation",
17932
+ auth: "admin"
17933
+ }), method(object({
17842
17934
  deviceId: number(),
17843
17935
  agentNodeId: string()
17844
17936
  }), object({ success: literal(true) }), {
@@ -18512,6 +18604,13 @@ method(object({ locationId: string() }), EvictableUsageSchema), method(object({
18512
18604
  locationId: string(),
18513
18605
  targetBytes: number().int().positive()
18514
18606
  }), EvictResultSchema, { kind: "mutation" });
18607
+ method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin" }), method(StorageMigrationInputSchema, object({ jobId: string() }), {
18608
+ kind: "mutation",
18609
+ auth: "admin"
18610
+ }), method(object({ jobId: string().optional() }), StorageMigrationJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
18611
+ kind: "mutation",
18612
+ auth: "admin"
18613
+ });
18515
18614
  var ProviderInfoSchema = discriminatedUnion("shouldSaveDiskSpace", [object({
18516
18615
  providerId: string().min(1),
18517
18616
  displayName: string().min(1),
@@ -18615,7 +18714,67 @@ var TerminalProfileInfoSchema = object({
18615
18714
  label: string(),
18616
18715
  description: string().optional()
18617
18716
  });
18618
- method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
18717
+ /**
18718
+ * A durable operator-created Terminal instance. Profiles are templates; only
18719
+ * an instance declares a camera.
18720
+ */
18721
+ var TerminalInstanceInfoSchema = object({
18722
+ instanceId: string(),
18723
+ cameraStableId: string(),
18724
+ nodeId: string(),
18725
+ profileId: string(),
18726
+ profileLabel: string(),
18727
+ name: string(),
18728
+ enabled: boolean()
18729
+ });
18730
+ var TerminalLegacyCameraSchema = object({
18731
+ stableId: string(),
18732
+ nodeId: string(),
18733
+ profileId: string(),
18734
+ profileLabel: string(),
18735
+ name: string(),
18736
+ /** Only legacy monitor cameras can retain their historic stable identity. */
18737
+ adoptable: boolean()
18738
+ });
18739
+ var TerminalOutputEventSchema = discriminatedUnion("kind", [object({
18740
+ seq: number().int().positive(),
18741
+ kind: literal("data"),
18742
+ data: string()
18743
+ }), object({
18744
+ seq: number().int().positive(),
18745
+ kind: literal("exit"),
18746
+ exitCode: number().int(),
18747
+ signal: number().int().optional()
18748
+ })]);
18749
+ var TerminalOutputBatchSchema = object({
18750
+ cursor: number().int().nonnegative(),
18751
+ reset: boolean(),
18752
+ snapshot: string().optional(),
18753
+ events: array(TerminalOutputEventSchema).readonly()
18754
+ });
18755
+ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalInstanceInfoSchema).readonly(), { auth: "admin" }), method(object({
18756
+ targetNodeId: string().min(1),
18757
+ profileId: string().min(1),
18758
+ name: string().trim().min(1).max(160).optional()
18759
+ }), TerminalInstanceInfoSchema, {
18760
+ kind: "mutation",
18761
+ auth: "admin"
18762
+ }), method(object({ instanceId: string().min(1) }), _void(), {
18763
+ kind: "mutation",
18764
+ auth: "admin"
18765
+ }), method(object({
18766
+ instanceId: string().min(1),
18767
+ enabled: boolean()
18768
+ }), TerminalInstanceInfoSchema, {
18769
+ kind: "mutation",
18770
+ auth: "admin"
18771
+ }), method(_void(), array(TerminalLegacyCameraSchema).readonly(), { auth: "admin" }), method(object({
18772
+ stableId: string().min(1),
18773
+ name: string().trim().min(1).max(160).optional()
18774
+ }), TerminalInstanceInfoSchema, {
18775
+ kind: "mutation",
18776
+ auth: "admin"
18777
+ }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
18619
18778
  profileId: string(),
18620
18779
  cols: number().int().positive(),
18621
18780
  rows: number().int().positive()
@@ -18629,6 +18788,26 @@ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }),
18629
18788
  }), _void(), {
18630
18789
  kind: "mutation",
18631
18790
  auth: "admin"
18791
+ }), method(object({
18792
+ sessionId: string(),
18793
+ afterSeq: number().int().nonnegative(),
18794
+ waitMs: number().int().min(0).max(2e3).default(0),
18795
+ /**
18796
+ * Wait when a just-opened session has no output yet. Kept opt-in so a
18797
+ * browser's initial repaint remains immediate; the camera snapshot
18798
+ * relay uses it to avoid encoding a blank startup frame.
18799
+ */
18800
+ waitForOutput: boolean().optional()
18801
+ }), TerminalOutputBatchSchema, {
18802
+ kind: "mutation",
18803
+ auth: "admin",
18804
+ timeoutMs: 15e3
18805
+ }), method(object({
18806
+ sessionId: string(),
18807
+ data: string().max(64 * 1024)
18808
+ }), _void(), {
18809
+ kind: "mutation",
18810
+ auth: "admin"
18632
18811
  }), method(object({ sessionId: string() }), _void(), {
18633
18812
  kind: "mutation",
18634
18813
  auth: "admin"
@@ -21124,6 +21303,7 @@ var FaceInfoSchema = object({
21124
21303
  var FaceFilterEnum = _enum([
21125
21304
  "unassigned",
21126
21305
  "recognized",
21306
+ "identified",
21127
21307
  "all"
21128
21308
  ]);
21129
21309
  var MediaFileLiteSchema$1 = object({
@@ -21152,6 +21332,8 @@ method(_void(), array(IdentitySchema).readonly()), method(object({ name: string(
21152
21332
  kind: "mutation",
21153
21333
  auth: "admin"
21154
21334
  }), method(object({
21335
+ /** Restrict to one camera. Absent keeps the cluster-wide gallery view. */
21336
+ deviceId: number().int().optional(),
21155
21337
  limit: number().int().positive().optional(),
21156
21338
  filter: FaceFilterEnum.optional(),
21157
21339
  /**
@@ -23381,6 +23563,10 @@ var OsdSourceSchema = discriminatedUnion("kind", [
23381
23563
  capName: string().min(1).max(64),
23382
23564
  /** Dot path inside the slice, e.g. `detected`, `value`, `mode`. */
23383
23565
  valuePath: string().min(1).max(64)
23566
+ }),
23567
+ object({
23568
+ kind: literal("latest-recognition"),
23569
+ recognition: _enum(["person", "plate"])
23384
23570
  })
23385
23571
  ]);
23386
23572
  var OsdSlotBindingSchema = object({
@@ -23486,6 +23672,15 @@ method(object({ deviceId: number().int() }), object({
23486
23672
  }), object({ success: literal(true) }), {
23487
23673
  kind: "mutation",
23488
23674
  auth: "admin"
23675
+ }), method(object({
23676
+ sourceDeviceId: number().int(),
23677
+ targetDeviceId: number().int()
23678
+ }), object({
23679
+ copied: number().int().nonnegative(),
23680
+ skipped: number().int().nonnegative()
23681
+ }), {
23682
+ kind: "mutation",
23683
+ auth: "admin"
23489
23684
  }), method(object({
23490
23685
  deviceId: number().int(),
23491
23686
  slotId: string().min(1),
@@ -24583,13 +24778,19 @@ method(object({
24583
24778
  }), {
24584
24779
  kind: "mutation",
24585
24780
  auth: "admin"
24586
- }), method(RelocateFootageInputSchema, object({ jobId: string() }), {
24781
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
24587
24782
  kind: "mutation",
24588
24783
  auth: "admin"
24589
- }), method(object({}), array(RelocateJobSchema).readonly(), {
24590
- kind: "query",
24784
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
24785
+ kind: "mutation",
24591
24786
  auth: "admin"
24592
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
24787
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
24788
+ kind: "mutation",
24789
+ auth: "admin"
24790
+ }), method(StorageMigrationFootageMoveInputSchema, object({ jobId: string() }), {
24791
+ kind: "mutation",
24792
+ auth: "admin"
24793
+ }), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
24593
24794
  kind: "mutation",
24594
24795
  auth: "admin"
24595
24796
  });
@@ -30195,6 +30396,12 @@ Object.freeze({
30195
30396
  addonId: null,
30196
30397
  access: "delete"
30197
30398
  },
30399
+ "osdManager.copyDeviceConfiguration": {
30400
+ capName: "osd-manager",
30401
+ capScope: "system",
30402
+ addonId: null,
30403
+ access: "create"
30404
+ },
30198
30405
  "osdManager.getConditionSupport": {
30199
30406
  capName: "osd-manager",
30200
30407
  capScope: "system",
@@ -30291,7 +30498,7 @@ Object.freeze({
30291
30498
  addonId: null,
30292
30499
  access: "create"
30293
30500
  },
30294
- "pipelineAnalytics.cancelMediaRelocate": {
30501
+ "pipelineAnalytics.cancelStorageMigrationMove": {
30295
30502
  capName: "pipeline-analytics",
30296
30503
  capScope: "device",
30297
30504
  addonId: null,
@@ -30363,12 +30570,6 @@ Object.freeze({
30363
30570
  addonId: null,
30364
30571
  access: "view"
30365
30572
  },
30366
- "pipelineAnalytics.getMediaRelocateStatus": {
30367
- capName: "pipeline-analytics",
30368
- capScope: "device",
30369
- addonId: null,
30370
- access: "view"
30371
- },
30372
30573
  "pipelineAnalytics.getMotionEvents": {
30373
30574
  capName: "pipeline-analytics",
30374
30575
  capScope: "device",
@@ -30405,6 +30606,12 @@ Object.freeze({
30405
30606
  addonId: null,
30406
30607
  access: "view"
30407
30608
  },
30609
+ "pipelineAnalytics.getStorageMigrationMoveStatus": {
30610
+ capName: "pipeline-analytics",
30611
+ capScope: "device",
30612
+ addonId: null,
30613
+ access: "view"
30614
+ },
30408
30615
  "pipelineAnalytics.getTrack": {
30409
30616
  capName: "pipeline-analytics",
30410
30617
  capScope: "device",
@@ -30483,6 +30690,12 @@ Object.freeze({
30483
30690
  addonId: null,
30484
30691
  access: "view"
30485
30692
  },
30693
+ "pipelineAnalytics.pauseForStorageMigration": {
30694
+ capName: "pipeline-analytics",
30695
+ capScope: "device",
30696
+ addonId: null,
30697
+ access: "create"
30698
+ },
30486
30699
  "pipelineAnalytics.proposeRetrainAnnotations": {
30487
30700
  capName: "pipeline-analytics",
30488
30701
  capScope: "device",
@@ -30513,7 +30726,7 @@ Object.freeze({
30513
30726
  addonId: null,
30514
30727
  access: "create"
30515
30728
  },
30516
- "pipelineAnalytics.relocateMedia": {
30729
+ "pipelineAnalytics.refreshStorageLocationsForMigration": {
30517
30730
  capName: "pipeline-analytics",
30518
30731
  capScope: "device",
30519
30732
  addonId: null,
@@ -30525,6 +30738,12 @@ Object.freeze({
30525
30738
  addonId: null,
30526
30739
  access: "create"
30527
30740
  },
30741
+ "pipelineAnalytics.resumeForStorageMigration": {
30742
+ capName: "pipeline-analytics",
30743
+ capScope: "device",
30744
+ addonId: null,
30745
+ access: "create"
30746
+ },
30528
30747
  "pipelineAnalytics.saveRetrainAnnotations": {
30529
30748
  capName: "pipeline-analytics",
30530
30749
  capScope: "device",
@@ -30549,6 +30768,12 @@ Object.freeze({
30549
30768
  addonId: null,
30550
30769
  access: "create"
30551
30770
  },
30771
+ "pipelineAnalytics.startStorageMigrationMove": {
30772
+ capName: "pipeline-analytics",
30773
+ capScope: "device",
30774
+ addonId: null,
30775
+ access: "create"
30776
+ },
30552
30777
  "pipelineAnalytics.wipeAllAnalytics": {
30553
30778
  capName: "pipeline-analytics",
30554
30779
  capScope: "device",
@@ -30915,6 +31140,12 @@ Object.freeze({
30915
31140
  addonId: null,
30916
31141
  access: "view"
30917
31142
  },
31143
+ "pipelineOrchestrator.pauseForStorageMigration": {
31144
+ capName: "pipeline-orchestrator",
31145
+ capScope: "system",
31146
+ addonId: null,
31147
+ access: "create"
31148
+ },
30918
31149
  "pipelineOrchestrator.rebalance": {
30919
31150
  capName: "pipeline-orchestrator",
30920
31151
  capScope: "system",
@@ -30939,6 +31170,12 @@ Object.freeze({
30939
31170
  addonId: null,
30940
31171
  access: "view"
30941
31172
  },
31173
+ "pipelineOrchestrator.resumeForStorageMigration": {
31174
+ capName: "pipeline-orchestrator",
31175
+ capScope: "system",
31176
+ addonId: null,
31177
+ access: "create"
31178
+ },
30942
31179
  "pipelineOrchestrator.saveTemplate": {
30943
31180
  capName: "pipeline-orchestrator",
30944
31181
  capScope: "system",
@@ -31335,7 +31572,7 @@ Object.freeze({
31335
31572
  addonId: null,
31336
31573
  access: "create"
31337
31574
  },
31338
- "recording.cancelRelocate": {
31575
+ "recording.cancelStorageMigrationMove": {
31339
31576
  capName: "recording",
31340
31577
  capScope: "system",
31341
31578
  addonId: null,
@@ -31371,7 +31608,7 @@ Object.freeze({
31371
31608
  addonId: null,
31372
31609
  access: "view"
31373
31610
  },
31374
- "recording.getRelocateStatus": {
31611
+ "recording.getStorageMigrationMoveStatus": {
31375
31612
  capName: "recording",
31376
31613
  capScope: "system",
31377
31614
  addonId: null,
@@ -31395,6 +31632,12 @@ Object.freeze({
31395
31632
  addonId: null,
31396
31633
  access: "view"
31397
31634
  },
31635
+ "recording.pauseForStorageMigration": {
31636
+ capName: "recording",
31637
+ capScope: "system",
31638
+ addonId: null,
31639
+ access: "create"
31640
+ },
31398
31641
  "recording.pruneFootage": {
31399
31642
  capName: "recording",
31400
31643
  capScope: "system",
@@ -31413,7 +31656,7 @@ Object.freeze({
31413
31656
  addonId: null,
31414
31657
  access: "view"
31415
31658
  },
31416
- "recording.relocateFootage": {
31659
+ "recording.refreshStorageLocationsForMigration": {
31417
31660
  capName: "recording",
31418
31661
  capScope: "system",
31419
31662
  addonId: null,
@@ -31437,12 +31680,24 @@ Object.freeze({
31437
31680
  addonId: null,
31438
31681
  access: "create"
31439
31682
  },
31683
+ "recording.resumeForStorageMigration": {
31684
+ capName: "recording",
31685
+ capScope: "system",
31686
+ addonId: null,
31687
+ access: "create"
31688
+ },
31440
31689
  "recording.setDeviceConfig": {
31441
31690
  capName: "recording",
31442
31691
  capScope: "system",
31443
31692
  addonId: null,
31444
31693
  access: "create"
31445
31694
  },
31695
+ "recording.startStorageMigrationMove": {
31696
+ capName: "recording",
31697
+ capScope: "system",
31698
+ addonId: null,
31699
+ access: "create"
31700
+ },
31446
31701
  "recordingExport.cancelExport": {
31447
31702
  capName: "recordingExport",
31448
31703
  capScope: "system",
@@ -31833,6 +32088,30 @@ Object.freeze({
31833
32088
  addonId: null,
31834
32089
  access: "view"
31835
32090
  },
32091
+ "storageMigration.cancel": {
32092
+ capName: "storage-migration",
32093
+ capScope: "system",
32094
+ addonId: null,
32095
+ access: "create"
32096
+ },
32097
+ "storageMigration.plan": {
32098
+ capName: "storage-migration",
32099
+ capScope: "system",
32100
+ addonId: null,
32101
+ access: "view"
32102
+ },
32103
+ "storageMigration.start": {
32104
+ capName: "storage-migration",
32105
+ capScope: "system",
32106
+ addonId: null,
32107
+ access: "create"
32108
+ },
32109
+ "storageMigration.status": {
32110
+ capName: "storage-migration",
32111
+ capScope: "system",
32112
+ addonId: null,
32113
+ access: "view"
32114
+ },
31836
32115
  "storageProvider.abortUpload": {
31837
32116
  capName: "storage-provider",
31838
32117
  capScope: "system",
@@ -32211,12 +32490,42 @@ Object.freeze({
32211
32490
  addonId: null,
32212
32491
  access: "create"
32213
32492
  },
32493
+ "terminalSession.adoptLegacyMonitor": {
32494
+ capName: "terminal-session",
32495
+ capScope: "system",
32496
+ addonId: null,
32497
+ access: "create"
32498
+ },
32214
32499
  "terminalSession.close": {
32215
32500
  capName: "terminal-session",
32216
32501
  capScope: "system",
32217
32502
  addonId: null,
32218
32503
  access: "create"
32219
32504
  },
32505
+ "terminalSession.createInstance": {
32506
+ capName: "terminal-session",
32507
+ capScope: "system",
32508
+ addonId: null,
32509
+ access: "create"
32510
+ },
32511
+ "terminalSession.deleteInstance": {
32512
+ capName: "terminal-session",
32513
+ capScope: "system",
32514
+ addonId: null,
32515
+ access: "delete"
32516
+ },
32517
+ "terminalSession.listInstances": {
32518
+ capName: "terminal-session",
32519
+ capScope: "system",
32520
+ addonId: null,
32521
+ access: "view"
32522
+ },
32523
+ "terminalSession.listLegacyCameras": {
32524
+ capName: "terminal-session",
32525
+ capScope: "system",
32526
+ addonId: null,
32527
+ access: "view"
32528
+ },
32220
32529
  "terminalSession.listProfiles": {
32221
32530
  capName: "terminal-session",
32222
32531
  capScope: "system",
@@ -32235,12 +32544,30 @@ Object.freeze({
32235
32544
  addonId: null,
32236
32545
  access: "create"
32237
32546
  },
32547
+ "terminalSession.pullOutput": {
32548
+ capName: "terminal-session",
32549
+ capScope: "system",
32550
+ addonId: null,
32551
+ access: "create"
32552
+ },
32238
32553
  "terminalSession.resize": {
32239
32554
  capName: "terminal-session",
32240
32555
  capScope: "system",
32241
32556
  addonId: null,
32242
32557
  access: "create"
32243
32558
  },
32559
+ "terminalSession.setInstanceEnabled": {
32560
+ capName: "terminal-session",
32561
+ capScope: "system",
32562
+ addonId: null,
32563
+ access: "create"
32564
+ },
32565
+ "terminalSession.writeInput": {
32566
+ capName: "terminal-session",
32567
+ capScope: "system",
32568
+ addonId: null,
32569
+ access: "create"
32570
+ },
32244
32571
  "toast.onToast": {
32245
32572
  capName: "toast",
32246
32573
  capScope: "system",
package/dist/addon.mjs CHANGED
@@ -7588,12 +7588,11 @@ var RecordingConfigSchema = object({
7588
7588
  /**
7589
7589
  * Entity-relocation job state (storage entity-routing spec, Phase 4).
7590
7590
  *
7591
- * One shape shared by the recorder's `relocateFootage` (segments) and
7592
- * pipeline-analytics' `relocateMedia` (event media blobs) so the admin Data
7593
- * page renders both movers with one component. Jobs are in-RAM (a restart
7594
- * forgets them re-running is safe by construction: copy-if-absent, delete
7595
- * after verify) and each completed/failed run also lands one durable ops-log
7596
- * row on the owning addon's surface.
7591
+ * One shape shared by the recorder and pipeline-analytics internal movers.
7592
+ * The public admin surface is `storage-migration`; child jobs remain in RAM
7593
+ * because copy-if-absent, verify, delete and index/row repoint are resumable.
7594
+ * Each completed/failed run also lands one durable ops-log row on its owning
7595
+ * addon surface.
7597
7596
  */
7598
7597
  var RelocateJobStateSchema = _enum([
7599
7598
  "running",
@@ -7620,19 +7619,100 @@ var RelocateJobSchema = object({
7620
7619
  finishedAt: number().nullable(),
7621
7620
  error: string().nullable()
7622
7621
  });
7622
+ /** Profile-derived footage selection used only by the migration coordinator:
7623
+ * `recordings` owns high+mid; `recordingsLow` owns low. */
7624
+ var RelocateFootageClassSchema = _enum(["recordings", "recordingsLow"]);
7623
7625
  var RelocateFootageInputSchema = object({
7624
- deviceId: number().optional(),
7625
7626
  fromLocationId: string(),
7626
7627
  toLocationId: string(),
7627
7628
  entities: array(_enum(["segments"])).optional(),
7629
+ /** Limits relocation to the logical profile class. Omit only for the
7630
+ * pre-orchestration compatibility path. */
7631
+ footageClass: RelocateFootageClassSchema.optional(),
7628
7632
  /** Copy throttle in MB/s (default 40) — the drain is a background chore,
7629
7633
  * never allowed to starve live writers. */
7630
7634
  throttleMbps: number().min(1).max(1e3).optional()
7631
7635
  });
7632
- var RelocateMediaInputSchema = object({
7633
- deviceId: number().optional(),
7636
+ /** Internal, lease-scoped participant operation. It is intentionally separate
7637
+ * from persistent recording settings: a migration never changes
7638
+ * `RecordingConfig.enabled` or camera wrapper bindings. */
7639
+ var StorageMigrationLeaseInputSchema = object({ leaseId: string().min(1) });
7640
+ var StorageMigrationFootageMoveInputSchema = RelocateFootageInputSchema.extend({ leaseId: string().min(1) });
7641
+ var StorageMigrationMediaMoveInputSchema = object({
7634
7642
  toLocationId: string(),
7635
7643
  throttleMbps: number().min(1).max(1e3).optional()
7644
+ }).extend({ leaseId: string().min(1) });
7645
+ /** The independently selectable logical storage classes. `recordings`
7646
+ * encompasses the high and mid segment profiles; `recordingsLow` is low
7647
+ * segments; `eventMedia` is post-analysis blobs. */
7648
+ var StorageMigrationClassSchema = _enum([
7649
+ "recordings",
7650
+ "recordingsLow",
7651
+ "eventMedia"
7652
+ ]);
7653
+ /** A destination is always an existing, fully-qualified location id. The
7654
+ * migration API intentionally never changes a source location's `basePath`:
7655
+ * callers create a new `<type>:<slug>` location, then select it here. */
7656
+ var StorageMigrationDestinationsSchema = object({
7657
+ recordings: string().min(1).optional(),
7658
+ recordingsLow: string().min(1).optional(),
7659
+ eventMedia: string().min(1).optional()
7660
+ }).refine((value) => Object.keys(value).length > 0, { message: "select at least one storage class" });
7661
+ /** Shared input for planning and starting an orchestrated storage migration. */
7662
+ var StorageMigrationInputSchema = object({
7663
+ destinations: StorageMigrationDestinationsSchema,
7664
+ throttleMbps: number().min(1).max(1e3).optional()
7665
+ });
7666
+ /** The durable coordinator state machine. The only phase that changes default
7667
+ * locations is `repointing`, after every selected mover has completed and been
7668
+ * verified. */
7669
+ var StorageMigrationPhaseSchema = _enum([
7670
+ "planning",
7671
+ "pausing",
7672
+ "moving",
7673
+ "verifying",
7674
+ "repointing",
7675
+ "refreshing",
7676
+ "resuming",
7677
+ "done",
7678
+ "failed",
7679
+ "cancelled"
7680
+ ]);
7681
+ var StorageMigrationParticipantSchema = _enum([
7682
+ "pipeline",
7683
+ "recorder",
7684
+ "analytics"
7685
+ ]);
7686
+ var StorageMigrationMoveSchema = object({
7687
+ storageClass: StorageMigrationClassSchema,
7688
+ fromLocationId: string(),
7689
+ toLocationId: string(),
7690
+ moverJobId: string().nullable(),
7691
+ state: RelocateJobStateSchema.nullable(),
7692
+ error: string().nullable()
7693
+ });
7694
+ var StorageMigrationJobSchema = object({
7695
+ jobId: string(),
7696
+ phase: StorageMigrationPhaseSchema,
7697
+ destinations: StorageMigrationDestinationsSchema,
7698
+ throttleMbps: number(),
7699
+ moves: array(StorageMigrationMoveSchema),
7700
+ pauseLeaseId: string().nullable(),
7701
+ pausedParticipants: array(StorageMigrationParticipantSchema),
7702
+ repointed: boolean(),
7703
+ cancelRequested: boolean(),
7704
+ startedAt: number(),
7705
+ updatedAt: number(),
7706
+ finishedAt: number().nullable(),
7707
+ error: string().nullable()
7708
+ });
7709
+ var StorageMigrationPlanSchema = object({
7710
+ destinations: StorageMigrationDestinationsSchema,
7711
+ moves: array(object({
7712
+ storageClass: StorageMigrationClassSchema,
7713
+ fromLocationId: string(),
7714
+ toLocationId: string()
7715
+ }))
7636
7716
  });
7637
7717
  /**
7638
7718
  * `StorageLocationType` — an addon-declared id that identifies the *kind* of
@@ -16303,13 +16383,19 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
16303
16383
  }), method(object({ deviceId: number() }), EventPruneCountsSchema, {
16304
16384
  kind: "mutation",
16305
16385
  auth: "admin"
16306
- }), method(RelocateMediaInputSchema, object({ jobId: string() }), {
16386
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
16307
16387
  kind: "mutation",
16308
16388
  auth: "admin"
16309
- }), method(object({}), array(RelocateJobSchema).readonly(), {
16310
- kind: "query",
16389
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
16390
+ kind: "mutation",
16311
16391
  auth: "admin"
16312
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
16392
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
16393
+ kind: "mutation",
16394
+ auth: "admin"
16395
+ }), method(StorageMigrationMediaMoveInputSchema, object({ jobId: string() }), {
16396
+ kind: "mutation",
16397
+ auth: "admin"
16398
+ }), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
16313
16399
  kind: "mutation",
16314
16400
  auth: "admin"
16315
16401
  }), method(OpsLogQueryInputSchema, array(OpsLogEntrySchema).readonly(), {
@@ -17839,7 +17925,13 @@ var NodeInferenceDevicesSchema = object({
17839
17925
  reachable: boolean(),
17840
17926
  devices: array(NodeInferenceDeviceSchema).readonly()
17841
17927
  });
17842
- method(object({
17928
+ method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
17929
+ kind: "mutation",
17930
+ auth: "admin"
17931
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
17932
+ kind: "mutation",
17933
+ auth: "admin"
17934
+ }), method(object({
17843
17935
  deviceId: number(),
17844
17936
  agentNodeId: string()
17845
17937
  }), object({ success: literal(true) }), {
@@ -18513,6 +18605,13 @@ method(object({ locationId: string() }), EvictableUsageSchema), method(object({
18513
18605
  locationId: string(),
18514
18606
  targetBytes: number().int().positive()
18515
18607
  }), EvictResultSchema, { kind: "mutation" });
18608
+ method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin" }), method(StorageMigrationInputSchema, object({ jobId: string() }), {
18609
+ kind: "mutation",
18610
+ auth: "admin"
18611
+ }), method(object({ jobId: string().optional() }), StorageMigrationJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
18612
+ kind: "mutation",
18613
+ auth: "admin"
18614
+ });
18516
18615
  var ProviderInfoSchema = discriminatedUnion("shouldSaveDiskSpace", [object({
18517
18616
  providerId: string().min(1),
18518
18617
  displayName: string().min(1),
@@ -18616,7 +18715,67 @@ var TerminalProfileInfoSchema = object({
18616
18715
  label: string(),
18617
18716
  description: string().optional()
18618
18717
  });
18619
- method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
18718
+ /**
18719
+ * A durable operator-created Terminal instance. Profiles are templates; only
18720
+ * an instance declares a camera.
18721
+ */
18722
+ var TerminalInstanceInfoSchema = object({
18723
+ instanceId: string(),
18724
+ cameraStableId: string(),
18725
+ nodeId: string(),
18726
+ profileId: string(),
18727
+ profileLabel: string(),
18728
+ name: string(),
18729
+ enabled: boolean()
18730
+ });
18731
+ var TerminalLegacyCameraSchema = object({
18732
+ stableId: string(),
18733
+ nodeId: string(),
18734
+ profileId: string(),
18735
+ profileLabel: string(),
18736
+ name: string(),
18737
+ /** Only legacy monitor cameras can retain their historic stable identity. */
18738
+ adoptable: boolean()
18739
+ });
18740
+ var TerminalOutputEventSchema = discriminatedUnion("kind", [object({
18741
+ seq: number().int().positive(),
18742
+ kind: literal("data"),
18743
+ data: string()
18744
+ }), object({
18745
+ seq: number().int().positive(),
18746
+ kind: literal("exit"),
18747
+ exitCode: number().int(),
18748
+ signal: number().int().optional()
18749
+ })]);
18750
+ var TerminalOutputBatchSchema = object({
18751
+ cursor: number().int().nonnegative(),
18752
+ reset: boolean(),
18753
+ snapshot: string().optional(),
18754
+ events: array(TerminalOutputEventSchema).readonly()
18755
+ });
18756
+ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalInstanceInfoSchema).readonly(), { auth: "admin" }), method(object({
18757
+ targetNodeId: string().min(1),
18758
+ profileId: string().min(1),
18759
+ name: string().trim().min(1).max(160).optional()
18760
+ }), TerminalInstanceInfoSchema, {
18761
+ kind: "mutation",
18762
+ auth: "admin"
18763
+ }), method(object({ instanceId: string().min(1) }), _void(), {
18764
+ kind: "mutation",
18765
+ auth: "admin"
18766
+ }), method(object({
18767
+ instanceId: string().min(1),
18768
+ enabled: boolean()
18769
+ }), TerminalInstanceInfoSchema, {
18770
+ kind: "mutation",
18771
+ auth: "admin"
18772
+ }), method(_void(), array(TerminalLegacyCameraSchema).readonly(), { auth: "admin" }), method(object({
18773
+ stableId: string().min(1),
18774
+ name: string().trim().min(1).max(160).optional()
18775
+ }), TerminalInstanceInfoSchema, {
18776
+ kind: "mutation",
18777
+ auth: "admin"
18778
+ }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
18620
18779
  profileId: string(),
18621
18780
  cols: number().int().positive(),
18622
18781
  rows: number().int().positive()
@@ -18630,6 +18789,26 @@ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }),
18630
18789
  }), _void(), {
18631
18790
  kind: "mutation",
18632
18791
  auth: "admin"
18792
+ }), method(object({
18793
+ sessionId: string(),
18794
+ afterSeq: number().int().nonnegative(),
18795
+ waitMs: number().int().min(0).max(2e3).default(0),
18796
+ /**
18797
+ * Wait when a just-opened session has no output yet. Kept opt-in so a
18798
+ * browser's initial repaint remains immediate; the camera snapshot
18799
+ * relay uses it to avoid encoding a blank startup frame.
18800
+ */
18801
+ waitForOutput: boolean().optional()
18802
+ }), TerminalOutputBatchSchema, {
18803
+ kind: "mutation",
18804
+ auth: "admin",
18805
+ timeoutMs: 15e3
18806
+ }), method(object({
18807
+ sessionId: string(),
18808
+ data: string().max(64 * 1024)
18809
+ }), _void(), {
18810
+ kind: "mutation",
18811
+ auth: "admin"
18633
18812
  }), method(object({ sessionId: string() }), _void(), {
18634
18813
  kind: "mutation",
18635
18814
  auth: "admin"
@@ -21125,6 +21304,7 @@ var FaceInfoSchema = object({
21125
21304
  var FaceFilterEnum = _enum([
21126
21305
  "unassigned",
21127
21306
  "recognized",
21307
+ "identified",
21128
21308
  "all"
21129
21309
  ]);
21130
21310
  var MediaFileLiteSchema$1 = object({
@@ -21153,6 +21333,8 @@ method(_void(), array(IdentitySchema).readonly()), method(object({ name: string(
21153
21333
  kind: "mutation",
21154
21334
  auth: "admin"
21155
21335
  }), method(object({
21336
+ /** Restrict to one camera. Absent keeps the cluster-wide gallery view. */
21337
+ deviceId: number().int().optional(),
21156
21338
  limit: number().int().positive().optional(),
21157
21339
  filter: FaceFilterEnum.optional(),
21158
21340
  /**
@@ -23382,6 +23564,10 @@ var OsdSourceSchema = discriminatedUnion("kind", [
23382
23564
  capName: string().min(1).max(64),
23383
23565
  /** Dot path inside the slice, e.g. `detected`, `value`, `mode`. */
23384
23566
  valuePath: string().min(1).max(64)
23567
+ }),
23568
+ object({
23569
+ kind: literal("latest-recognition"),
23570
+ recognition: _enum(["person", "plate"])
23385
23571
  })
23386
23572
  ]);
23387
23573
  var OsdSlotBindingSchema = object({
@@ -23487,6 +23673,15 @@ method(object({ deviceId: number().int() }), object({
23487
23673
  }), object({ success: literal(true) }), {
23488
23674
  kind: "mutation",
23489
23675
  auth: "admin"
23676
+ }), method(object({
23677
+ sourceDeviceId: number().int(),
23678
+ targetDeviceId: number().int()
23679
+ }), object({
23680
+ copied: number().int().nonnegative(),
23681
+ skipped: number().int().nonnegative()
23682
+ }), {
23683
+ kind: "mutation",
23684
+ auth: "admin"
23490
23685
  }), method(object({
23491
23686
  deviceId: number().int(),
23492
23687
  slotId: string().min(1),
@@ -24584,13 +24779,19 @@ method(object({
24584
24779
  }), {
24585
24780
  kind: "mutation",
24586
24781
  auth: "admin"
24587
- }), method(RelocateFootageInputSchema, object({ jobId: string() }), {
24782
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
24588
24783
  kind: "mutation",
24589
24784
  auth: "admin"
24590
- }), method(object({}), array(RelocateJobSchema).readonly(), {
24591
- kind: "query",
24785
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
24786
+ kind: "mutation",
24592
24787
  auth: "admin"
24593
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
24788
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
24789
+ kind: "mutation",
24790
+ auth: "admin"
24791
+ }), method(StorageMigrationFootageMoveInputSchema, object({ jobId: string() }), {
24792
+ kind: "mutation",
24793
+ auth: "admin"
24794
+ }), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
24594
24795
  kind: "mutation",
24595
24796
  auth: "admin"
24596
24797
  });
@@ -30196,6 +30397,12 @@ Object.freeze({
30196
30397
  addonId: null,
30197
30398
  access: "delete"
30198
30399
  },
30400
+ "osdManager.copyDeviceConfiguration": {
30401
+ capName: "osd-manager",
30402
+ capScope: "system",
30403
+ addonId: null,
30404
+ access: "create"
30405
+ },
30199
30406
  "osdManager.getConditionSupport": {
30200
30407
  capName: "osd-manager",
30201
30408
  capScope: "system",
@@ -30292,7 +30499,7 @@ Object.freeze({
30292
30499
  addonId: null,
30293
30500
  access: "create"
30294
30501
  },
30295
- "pipelineAnalytics.cancelMediaRelocate": {
30502
+ "pipelineAnalytics.cancelStorageMigrationMove": {
30296
30503
  capName: "pipeline-analytics",
30297
30504
  capScope: "device",
30298
30505
  addonId: null,
@@ -30364,12 +30571,6 @@ Object.freeze({
30364
30571
  addonId: null,
30365
30572
  access: "view"
30366
30573
  },
30367
- "pipelineAnalytics.getMediaRelocateStatus": {
30368
- capName: "pipeline-analytics",
30369
- capScope: "device",
30370
- addonId: null,
30371
- access: "view"
30372
- },
30373
30574
  "pipelineAnalytics.getMotionEvents": {
30374
30575
  capName: "pipeline-analytics",
30375
30576
  capScope: "device",
@@ -30406,6 +30607,12 @@ Object.freeze({
30406
30607
  addonId: null,
30407
30608
  access: "view"
30408
30609
  },
30610
+ "pipelineAnalytics.getStorageMigrationMoveStatus": {
30611
+ capName: "pipeline-analytics",
30612
+ capScope: "device",
30613
+ addonId: null,
30614
+ access: "view"
30615
+ },
30409
30616
  "pipelineAnalytics.getTrack": {
30410
30617
  capName: "pipeline-analytics",
30411
30618
  capScope: "device",
@@ -30484,6 +30691,12 @@ Object.freeze({
30484
30691
  addonId: null,
30485
30692
  access: "view"
30486
30693
  },
30694
+ "pipelineAnalytics.pauseForStorageMigration": {
30695
+ capName: "pipeline-analytics",
30696
+ capScope: "device",
30697
+ addonId: null,
30698
+ access: "create"
30699
+ },
30487
30700
  "pipelineAnalytics.proposeRetrainAnnotations": {
30488
30701
  capName: "pipeline-analytics",
30489
30702
  capScope: "device",
@@ -30514,7 +30727,7 @@ Object.freeze({
30514
30727
  addonId: null,
30515
30728
  access: "create"
30516
30729
  },
30517
- "pipelineAnalytics.relocateMedia": {
30730
+ "pipelineAnalytics.refreshStorageLocationsForMigration": {
30518
30731
  capName: "pipeline-analytics",
30519
30732
  capScope: "device",
30520
30733
  addonId: null,
@@ -30526,6 +30739,12 @@ Object.freeze({
30526
30739
  addonId: null,
30527
30740
  access: "create"
30528
30741
  },
30742
+ "pipelineAnalytics.resumeForStorageMigration": {
30743
+ capName: "pipeline-analytics",
30744
+ capScope: "device",
30745
+ addonId: null,
30746
+ access: "create"
30747
+ },
30529
30748
  "pipelineAnalytics.saveRetrainAnnotations": {
30530
30749
  capName: "pipeline-analytics",
30531
30750
  capScope: "device",
@@ -30550,6 +30769,12 @@ Object.freeze({
30550
30769
  addonId: null,
30551
30770
  access: "create"
30552
30771
  },
30772
+ "pipelineAnalytics.startStorageMigrationMove": {
30773
+ capName: "pipeline-analytics",
30774
+ capScope: "device",
30775
+ addonId: null,
30776
+ access: "create"
30777
+ },
30553
30778
  "pipelineAnalytics.wipeAllAnalytics": {
30554
30779
  capName: "pipeline-analytics",
30555
30780
  capScope: "device",
@@ -30916,6 +31141,12 @@ Object.freeze({
30916
31141
  addonId: null,
30917
31142
  access: "view"
30918
31143
  },
31144
+ "pipelineOrchestrator.pauseForStorageMigration": {
31145
+ capName: "pipeline-orchestrator",
31146
+ capScope: "system",
31147
+ addonId: null,
31148
+ access: "create"
31149
+ },
30919
31150
  "pipelineOrchestrator.rebalance": {
30920
31151
  capName: "pipeline-orchestrator",
30921
31152
  capScope: "system",
@@ -30940,6 +31171,12 @@ Object.freeze({
30940
31171
  addonId: null,
30941
31172
  access: "view"
30942
31173
  },
31174
+ "pipelineOrchestrator.resumeForStorageMigration": {
31175
+ capName: "pipeline-orchestrator",
31176
+ capScope: "system",
31177
+ addonId: null,
31178
+ access: "create"
31179
+ },
30943
31180
  "pipelineOrchestrator.saveTemplate": {
30944
31181
  capName: "pipeline-orchestrator",
30945
31182
  capScope: "system",
@@ -31336,7 +31573,7 @@ Object.freeze({
31336
31573
  addonId: null,
31337
31574
  access: "create"
31338
31575
  },
31339
- "recording.cancelRelocate": {
31576
+ "recording.cancelStorageMigrationMove": {
31340
31577
  capName: "recording",
31341
31578
  capScope: "system",
31342
31579
  addonId: null,
@@ -31372,7 +31609,7 @@ Object.freeze({
31372
31609
  addonId: null,
31373
31610
  access: "view"
31374
31611
  },
31375
- "recording.getRelocateStatus": {
31612
+ "recording.getStorageMigrationMoveStatus": {
31376
31613
  capName: "recording",
31377
31614
  capScope: "system",
31378
31615
  addonId: null,
@@ -31396,6 +31633,12 @@ Object.freeze({
31396
31633
  addonId: null,
31397
31634
  access: "view"
31398
31635
  },
31636
+ "recording.pauseForStorageMigration": {
31637
+ capName: "recording",
31638
+ capScope: "system",
31639
+ addonId: null,
31640
+ access: "create"
31641
+ },
31399
31642
  "recording.pruneFootage": {
31400
31643
  capName: "recording",
31401
31644
  capScope: "system",
@@ -31414,7 +31657,7 @@ Object.freeze({
31414
31657
  addonId: null,
31415
31658
  access: "view"
31416
31659
  },
31417
- "recording.relocateFootage": {
31660
+ "recording.refreshStorageLocationsForMigration": {
31418
31661
  capName: "recording",
31419
31662
  capScope: "system",
31420
31663
  addonId: null,
@@ -31438,12 +31681,24 @@ Object.freeze({
31438
31681
  addonId: null,
31439
31682
  access: "create"
31440
31683
  },
31684
+ "recording.resumeForStorageMigration": {
31685
+ capName: "recording",
31686
+ capScope: "system",
31687
+ addonId: null,
31688
+ access: "create"
31689
+ },
31441
31690
  "recording.setDeviceConfig": {
31442
31691
  capName: "recording",
31443
31692
  capScope: "system",
31444
31693
  addonId: null,
31445
31694
  access: "create"
31446
31695
  },
31696
+ "recording.startStorageMigrationMove": {
31697
+ capName: "recording",
31698
+ capScope: "system",
31699
+ addonId: null,
31700
+ access: "create"
31701
+ },
31447
31702
  "recordingExport.cancelExport": {
31448
31703
  capName: "recordingExport",
31449
31704
  capScope: "system",
@@ -31834,6 +32089,30 @@ Object.freeze({
31834
32089
  addonId: null,
31835
32090
  access: "view"
31836
32091
  },
32092
+ "storageMigration.cancel": {
32093
+ capName: "storage-migration",
32094
+ capScope: "system",
32095
+ addonId: null,
32096
+ access: "create"
32097
+ },
32098
+ "storageMigration.plan": {
32099
+ capName: "storage-migration",
32100
+ capScope: "system",
32101
+ addonId: null,
32102
+ access: "view"
32103
+ },
32104
+ "storageMigration.start": {
32105
+ capName: "storage-migration",
32106
+ capScope: "system",
32107
+ addonId: null,
32108
+ access: "create"
32109
+ },
32110
+ "storageMigration.status": {
32111
+ capName: "storage-migration",
32112
+ capScope: "system",
32113
+ addonId: null,
32114
+ access: "view"
32115
+ },
31837
32116
  "storageProvider.abortUpload": {
31838
32117
  capName: "storage-provider",
31839
32118
  capScope: "system",
@@ -32212,12 +32491,42 @@ Object.freeze({
32212
32491
  addonId: null,
32213
32492
  access: "create"
32214
32493
  },
32494
+ "terminalSession.adoptLegacyMonitor": {
32495
+ capName: "terminal-session",
32496
+ capScope: "system",
32497
+ addonId: null,
32498
+ access: "create"
32499
+ },
32215
32500
  "terminalSession.close": {
32216
32501
  capName: "terminal-session",
32217
32502
  capScope: "system",
32218
32503
  addonId: null,
32219
32504
  access: "create"
32220
32505
  },
32506
+ "terminalSession.createInstance": {
32507
+ capName: "terminal-session",
32508
+ capScope: "system",
32509
+ addonId: null,
32510
+ access: "create"
32511
+ },
32512
+ "terminalSession.deleteInstance": {
32513
+ capName: "terminal-session",
32514
+ capScope: "system",
32515
+ addonId: null,
32516
+ access: "delete"
32517
+ },
32518
+ "terminalSession.listInstances": {
32519
+ capName: "terminal-session",
32520
+ capScope: "system",
32521
+ addonId: null,
32522
+ access: "view"
32523
+ },
32524
+ "terminalSession.listLegacyCameras": {
32525
+ capName: "terminal-session",
32526
+ capScope: "system",
32527
+ addonId: null,
32528
+ access: "view"
32529
+ },
32221
32530
  "terminalSession.listProfiles": {
32222
32531
  capName: "terminal-session",
32223
32532
  capScope: "system",
@@ -32236,12 +32545,30 @@ Object.freeze({
32236
32545
  addonId: null,
32237
32546
  access: "create"
32238
32547
  },
32548
+ "terminalSession.pullOutput": {
32549
+ capName: "terminal-session",
32550
+ capScope: "system",
32551
+ addonId: null,
32552
+ access: "create"
32553
+ },
32239
32554
  "terminalSession.resize": {
32240
32555
  capName: "terminal-session",
32241
32556
  capScope: "system",
32242
32557
  addonId: null,
32243
32558
  access: "create"
32244
32559
  },
32560
+ "terminalSession.setInstanceEnabled": {
32561
+ capName: "terminal-session",
32562
+ capScope: "system",
32563
+ addonId: null,
32564
+ access: "create"
32565
+ },
32566
+ "terminalSession.writeInput": {
32567
+ capName: "terminal-session",
32568
+ capScope: "system",
32569
+ addonId: null,
32570
+ access: "create"
32571
+ },
32245
32572
  "toast.onToast": {
32246
32573
  capName: "toast",
32247
32574
  capScope: "system",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-provider-dreo",
3
- "version": "0.2.11",
3
+ "version": "0.2.13",
4
4
  "description": "Dreo smart-device (fan / air-circulator / purifier / heater / humidifier) device-provider addon for CamStack — wraps the @apocaliss92/nodedreo Dreo cloud client (REST + WebSocket)",
5
5
  "keywords": [
6
6
  "camstack",