@camstack/addon-provider-gree 0.2.11 → 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 +316 -31
  2. package/dist/addon.mjs +316 -31
  3. package/package.json +1 -1
package/dist/addon.js CHANGED
@@ -7568,12 +7568,11 @@ var RecordingConfigSchema = object({
7568
7568
  /**
7569
7569
  * Entity-relocation job state (storage entity-routing spec, Phase 4).
7570
7570
  *
7571
- * One shape shared by the recorder's `relocateFootage` (segments) and
7572
- * pipeline-analytics' `relocateMedia` (event media blobs) so the admin Data
7573
- * page renders both movers with one component. Jobs are in-RAM (a restart
7574
- * forgets them re-running is safe by construction: copy-if-absent, delete
7575
- * after verify) and each completed/failed run also lands one durable ops-log
7576
- * row on the owning addon's surface.
7571
+ * One shape shared by the recorder and pipeline-analytics internal movers.
7572
+ * The public admin surface is `storage-migration`; child jobs remain in RAM
7573
+ * because copy-if-absent, verify, delete and index/row repoint are resumable.
7574
+ * Each completed/failed run also lands one durable ops-log row on its owning
7575
+ * addon surface.
7577
7576
  */
7578
7577
  var RelocateJobStateSchema = _enum([
7579
7578
  "running",
@@ -7600,19 +7599,100 @@ var RelocateJobSchema = object({
7600
7599
  finishedAt: number().nullable(),
7601
7600
  error: string().nullable()
7602
7601
  });
7602
+ /** Profile-derived footage selection used only by the migration coordinator:
7603
+ * `recordings` owns high+mid; `recordingsLow` owns low. */
7604
+ var RelocateFootageClassSchema = _enum(["recordings", "recordingsLow"]);
7603
7605
  var RelocateFootageInputSchema = object({
7604
- deviceId: number().optional(),
7605
7606
  fromLocationId: string(),
7606
7607
  toLocationId: string(),
7607
7608
  entities: array(_enum(["segments"])).optional(),
7609
+ /** Limits relocation to the logical profile class. Omit only for the
7610
+ * pre-orchestration compatibility path. */
7611
+ footageClass: RelocateFootageClassSchema.optional(),
7608
7612
  /** Copy throttle in MB/s (default 40) — the drain is a background chore,
7609
7613
  * never allowed to starve live writers. */
7610
7614
  throttleMbps: number().min(1).max(1e3).optional()
7611
7615
  });
7612
- var RelocateMediaInputSchema = object({
7613
- deviceId: number().optional(),
7616
+ /** Internal, lease-scoped participant operation. It is intentionally separate
7617
+ * from persistent recording settings: a migration never changes
7618
+ * `RecordingConfig.enabled` or camera wrapper bindings. */
7619
+ var StorageMigrationLeaseInputSchema = object({ leaseId: string().min(1) });
7620
+ var StorageMigrationFootageMoveInputSchema = RelocateFootageInputSchema.extend({ leaseId: string().min(1) });
7621
+ var StorageMigrationMediaMoveInputSchema = object({
7614
7622
  toLocationId: string(),
7615
7623
  throttleMbps: number().min(1).max(1e3).optional()
7624
+ }).extend({ leaseId: string().min(1) });
7625
+ /** The independently selectable logical storage classes. `recordings`
7626
+ * encompasses the high and mid segment profiles; `recordingsLow` is low
7627
+ * segments; `eventMedia` is post-analysis blobs. */
7628
+ var StorageMigrationClassSchema = _enum([
7629
+ "recordings",
7630
+ "recordingsLow",
7631
+ "eventMedia"
7632
+ ]);
7633
+ /** A destination is always an existing, fully-qualified location id. The
7634
+ * migration API intentionally never changes a source location's `basePath`:
7635
+ * callers create a new `<type>:<slug>` location, then select it here. */
7636
+ var StorageMigrationDestinationsSchema = object({
7637
+ recordings: string().min(1).optional(),
7638
+ recordingsLow: string().min(1).optional(),
7639
+ eventMedia: string().min(1).optional()
7640
+ }).refine((value) => Object.keys(value).length > 0, { message: "select at least one storage class" });
7641
+ /** Shared input for planning and starting an orchestrated storage migration. */
7642
+ var StorageMigrationInputSchema = object({
7643
+ destinations: StorageMigrationDestinationsSchema,
7644
+ throttleMbps: number().min(1).max(1e3).optional()
7645
+ });
7646
+ /** The durable coordinator state machine. The only phase that changes default
7647
+ * locations is `repointing`, after every selected mover has completed and been
7648
+ * verified. */
7649
+ var StorageMigrationPhaseSchema = _enum([
7650
+ "planning",
7651
+ "pausing",
7652
+ "moving",
7653
+ "verifying",
7654
+ "repointing",
7655
+ "refreshing",
7656
+ "resuming",
7657
+ "done",
7658
+ "failed",
7659
+ "cancelled"
7660
+ ]);
7661
+ var StorageMigrationParticipantSchema = _enum([
7662
+ "pipeline",
7663
+ "recorder",
7664
+ "analytics"
7665
+ ]);
7666
+ var StorageMigrationMoveSchema = object({
7667
+ storageClass: StorageMigrationClassSchema,
7668
+ fromLocationId: string(),
7669
+ toLocationId: string(),
7670
+ moverJobId: string().nullable(),
7671
+ state: RelocateJobStateSchema.nullable(),
7672
+ error: string().nullable()
7673
+ });
7674
+ var StorageMigrationJobSchema = object({
7675
+ jobId: string(),
7676
+ phase: StorageMigrationPhaseSchema,
7677
+ destinations: StorageMigrationDestinationsSchema,
7678
+ throttleMbps: number(),
7679
+ moves: array(StorageMigrationMoveSchema),
7680
+ pauseLeaseId: string().nullable(),
7681
+ pausedParticipants: array(StorageMigrationParticipantSchema),
7682
+ repointed: boolean(),
7683
+ cancelRequested: boolean(),
7684
+ startedAt: number(),
7685
+ updatedAt: number(),
7686
+ finishedAt: number().nullable(),
7687
+ error: string().nullable()
7688
+ });
7689
+ var StorageMigrationPlanSchema = object({
7690
+ destinations: StorageMigrationDestinationsSchema,
7691
+ moves: array(object({
7692
+ storageClass: StorageMigrationClassSchema,
7693
+ fromLocationId: string(),
7694
+ toLocationId: string()
7695
+ }))
7616
7696
  });
7617
7697
  /**
7618
7698
  * `StorageLocationType` — an addon-declared id that identifies the *kind* of
@@ -16266,13 +16346,19 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
16266
16346
  }), method(object({ deviceId: number() }), EventPruneCountsSchema, {
16267
16347
  kind: "mutation",
16268
16348
  auth: "admin"
16269
- }), method(RelocateMediaInputSchema, object({ jobId: string() }), {
16349
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
16270
16350
  kind: "mutation",
16271
16351
  auth: "admin"
16272
- }), method(object({}), array(RelocateJobSchema).readonly(), {
16273
- kind: "query",
16352
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
16353
+ kind: "mutation",
16354
+ auth: "admin"
16355
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
16356
+ kind: "mutation",
16357
+ auth: "admin"
16358
+ }), method(StorageMigrationMediaMoveInputSchema, object({ jobId: string() }), {
16359
+ kind: "mutation",
16274
16360
  auth: "admin"
16275
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
16361
+ }), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
16276
16362
  kind: "mutation",
16277
16363
  auth: "admin"
16278
16364
  }), method(OpsLogQueryInputSchema, array(OpsLogEntrySchema).readonly(), {
@@ -17802,7 +17888,13 @@ var NodeInferenceDevicesSchema = object({
17802
17888
  reachable: boolean(),
17803
17889
  devices: array(NodeInferenceDeviceSchema).readonly()
17804
17890
  });
17805
- method(object({
17891
+ method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
17892
+ kind: "mutation",
17893
+ auth: "admin"
17894
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
17895
+ kind: "mutation",
17896
+ auth: "admin"
17897
+ }), method(object({
17806
17898
  deviceId: number(),
17807
17899
  agentNodeId: string()
17808
17900
  }), object({ success: literal(true) }), {
@@ -18476,6 +18568,13 @@ method(object({ locationId: string() }), EvictableUsageSchema), method(object({
18476
18568
  locationId: string(),
18477
18569
  targetBytes: number().int().positive()
18478
18570
  }), EvictResultSchema, { kind: "mutation" });
18571
+ method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin" }), method(StorageMigrationInputSchema, object({ jobId: string() }), {
18572
+ kind: "mutation",
18573
+ auth: "admin"
18574
+ }), method(object({ jobId: string().optional() }), StorageMigrationJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
18575
+ kind: "mutation",
18576
+ auth: "admin"
18577
+ });
18479
18578
  var ProviderInfoSchema = discriminatedUnion("shouldSaveDiskSpace", [object({
18480
18579
  providerId: string().min(1),
18481
18580
  displayName: string().min(1),
@@ -18579,6 +18678,28 @@ var TerminalProfileInfoSchema = object({
18579
18678
  label: string(),
18580
18679
  description: string().optional()
18581
18680
  });
18681
+ /**
18682
+ * A durable operator-created Terminal instance. Profiles are templates; only
18683
+ * an instance declares a camera.
18684
+ */
18685
+ var TerminalInstanceInfoSchema = object({
18686
+ instanceId: string(),
18687
+ cameraStableId: string(),
18688
+ nodeId: string(),
18689
+ profileId: string(),
18690
+ profileLabel: string(),
18691
+ name: string(),
18692
+ enabled: boolean()
18693
+ });
18694
+ var TerminalLegacyCameraSchema = object({
18695
+ stableId: string(),
18696
+ nodeId: string(),
18697
+ profileId: string(),
18698
+ profileLabel: string(),
18699
+ name: string(),
18700
+ /** Only legacy monitor cameras can retain their historic stable identity. */
18701
+ adoptable: boolean()
18702
+ });
18582
18703
  var TerminalOutputEventSchema = discriminatedUnion("kind", [object({
18583
18704
  seq: number().int().positive(),
18584
18705
  kind: literal("data"),
@@ -18595,7 +18716,29 @@ var TerminalOutputBatchSchema = object({
18595
18716
  snapshot: string().optional(),
18596
18717
  events: array(TerminalOutputEventSchema).readonly()
18597
18718
  });
18598
- method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
18719
+ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalInstanceInfoSchema).readonly(), { auth: "admin" }), method(object({
18720
+ targetNodeId: string().min(1),
18721
+ profileId: string().min(1),
18722
+ name: string().trim().min(1).max(160).optional()
18723
+ }), TerminalInstanceInfoSchema, {
18724
+ kind: "mutation",
18725
+ auth: "admin"
18726
+ }), method(object({ instanceId: string().min(1) }), _void(), {
18727
+ kind: "mutation",
18728
+ auth: "admin"
18729
+ }), method(object({
18730
+ instanceId: string().min(1),
18731
+ enabled: boolean()
18732
+ }), TerminalInstanceInfoSchema, {
18733
+ kind: "mutation",
18734
+ auth: "admin"
18735
+ }), method(_void(), array(TerminalLegacyCameraSchema).readonly(), { auth: "admin" }), method(object({
18736
+ stableId: string().min(1),
18737
+ name: string().trim().min(1).max(160).optional()
18738
+ }), TerminalInstanceInfoSchema, {
18739
+ kind: "mutation",
18740
+ auth: "admin"
18741
+ }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
18599
18742
  profileId: string(),
18600
18743
  cols: number().int().positive(),
18601
18744
  rows: number().int().positive()
@@ -18612,7 +18755,13 @@ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }),
18612
18755
  }), method(object({
18613
18756
  sessionId: string(),
18614
18757
  afterSeq: number().int().nonnegative(),
18615
- waitMs: number().int().min(0).max(2e3).default(0)
18758
+ waitMs: number().int().min(0).max(2e3).default(0),
18759
+ /**
18760
+ * Wait when a just-opened session has no output yet. Kept opt-in so a
18761
+ * browser's initial repaint remains immediate; the camera snapshot
18762
+ * relay uses it to avoid encoding a blank startup frame.
18763
+ */
18764
+ waitForOutput: boolean().optional()
18616
18765
  }), TerminalOutputBatchSchema, {
18617
18766
  kind: "mutation",
18618
18767
  auth: "admin",
@@ -21110,6 +21259,7 @@ var FaceInfoSchema = object({
21110
21259
  var FaceFilterEnum = _enum([
21111
21260
  "unassigned",
21112
21261
  "recognized",
21262
+ "identified",
21113
21263
  "all"
21114
21264
  ]);
21115
21265
  var MediaFileLiteSchema$1 = object({
@@ -21138,6 +21288,8 @@ method(_void(), array(IdentitySchema).readonly()), method(object({ name: string(
21138
21288
  kind: "mutation",
21139
21289
  auth: "admin"
21140
21290
  }), method(object({
21291
+ /** Restrict to one camera. Absent keeps the cluster-wide gallery view. */
21292
+ deviceId: number().int().optional(),
21141
21293
  limit: number().int().positive().optional(),
21142
21294
  filter: FaceFilterEnum.optional(),
21143
21295
  /**
@@ -23367,6 +23519,10 @@ var OsdSourceSchema = discriminatedUnion("kind", [
23367
23519
  capName: string().min(1).max(64),
23368
23520
  /** Dot path inside the slice, e.g. `detected`, `value`, `mode`. */
23369
23521
  valuePath: string().min(1).max(64)
23522
+ }),
23523
+ object({
23524
+ kind: literal("latest-recognition"),
23525
+ recognition: _enum(["person", "plate"])
23370
23526
  })
23371
23527
  ]);
23372
23528
  var OsdSlotBindingSchema = object({
@@ -23472,6 +23628,15 @@ method(object({ deviceId: number().int() }), object({
23472
23628
  }), object({ success: literal(true) }), {
23473
23629
  kind: "mutation",
23474
23630
  auth: "admin"
23631
+ }), method(object({
23632
+ sourceDeviceId: number().int(),
23633
+ targetDeviceId: number().int()
23634
+ }), object({
23635
+ copied: number().int().nonnegative(),
23636
+ skipped: number().int().nonnegative()
23637
+ }), {
23638
+ kind: "mutation",
23639
+ auth: "admin"
23475
23640
  }), method(object({
23476
23641
  deviceId: number().int(),
23477
23642
  slotId: string().min(1),
@@ -24569,13 +24734,19 @@ method(object({
24569
24734
  }), {
24570
24735
  kind: "mutation",
24571
24736
  auth: "admin"
24572
- }), method(RelocateFootageInputSchema, object({ jobId: string() }), {
24737
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
24573
24738
  kind: "mutation",
24574
24739
  auth: "admin"
24575
- }), method(object({}), array(RelocateJobSchema).readonly(), {
24576
- kind: "query",
24740
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
24741
+ kind: "mutation",
24577
24742
  auth: "admin"
24578
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
24743
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
24744
+ kind: "mutation",
24745
+ auth: "admin"
24746
+ }), method(StorageMigrationFootageMoveInputSchema, object({ jobId: string() }), {
24747
+ kind: "mutation",
24748
+ auth: "admin"
24749
+ }), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
24579
24750
  kind: "mutation",
24580
24751
  auth: "admin"
24581
24752
  });
@@ -30181,6 +30352,12 @@ Object.freeze({
30181
30352
  addonId: null,
30182
30353
  access: "delete"
30183
30354
  },
30355
+ "osdManager.copyDeviceConfiguration": {
30356
+ capName: "osd-manager",
30357
+ capScope: "system",
30358
+ addonId: null,
30359
+ access: "create"
30360
+ },
30184
30361
  "osdManager.getConditionSupport": {
30185
30362
  capName: "osd-manager",
30186
30363
  capScope: "system",
@@ -30277,7 +30454,7 @@ Object.freeze({
30277
30454
  addonId: null,
30278
30455
  access: "create"
30279
30456
  },
30280
- "pipelineAnalytics.cancelMediaRelocate": {
30457
+ "pipelineAnalytics.cancelStorageMigrationMove": {
30281
30458
  capName: "pipeline-analytics",
30282
30459
  capScope: "device",
30283
30460
  addonId: null,
@@ -30349,12 +30526,6 @@ Object.freeze({
30349
30526
  addonId: null,
30350
30527
  access: "view"
30351
30528
  },
30352
- "pipelineAnalytics.getMediaRelocateStatus": {
30353
- capName: "pipeline-analytics",
30354
- capScope: "device",
30355
- addonId: null,
30356
- access: "view"
30357
- },
30358
30529
  "pipelineAnalytics.getMotionEvents": {
30359
30530
  capName: "pipeline-analytics",
30360
30531
  capScope: "device",
@@ -30391,6 +30562,12 @@ Object.freeze({
30391
30562
  addonId: null,
30392
30563
  access: "view"
30393
30564
  },
30565
+ "pipelineAnalytics.getStorageMigrationMoveStatus": {
30566
+ capName: "pipeline-analytics",
30567
+ capScope: "device",
30568
+ addonId: null,
30569
+ access: "view"
30570
+ },
30394
30571
  "pipelineAnalytics.getTrack": {
30395
30572
  capName: "pipeline-analytics",
30396
30573
  capScope: "device",
@@ -30469,6 +30646,12 @@ Object.freeze({
30469
30646
  addonId: null,
30470
30647
  access: "view"
30471
30648
  },
30649
+ "pipelineAnalytics.pauseForStorageMigration": {
30650
+ capName: "pipeline-analytics",
30651
+ capScope: "device",
30652
+ addonId: null,
30653
+ access: "create"
30654
+ },
30472
30655
  "pipelineAnalytics.proposeRetrainAnnotations": {
30473
30656
  capName: "pipeline-analytics",
30474
30657
  capScope: "device",
@@ -30499,7 +30682,7 @@ Object.freeze({
30499
30682
  addonId: null,
30500
30683
  access: "create"
30501
30684
  },
30502
- "pipelineAnalytics.relocateMedia": {
30685
+ "pipelineAnalytics.refreshStorageLocationsForMigration": {
30503
30686
  capName: "pipeline-analytics",
30504
30687
  capScope: "device",
30505
30688
  addonId: null,
@@ -30511,6 +30694,12 @@ Object.freeze({
30511
30694
  addonId: null,
30512
30695
  access: "create"
30513
30696
  },
30697
+ "pipelineAnalytics.resumeForStorageMigration": {
30698
+ capName: "pipeline-analytics",
30699
+ capScope: "device",
30700
+ addonId: null,
30701
+ access: "create"
30702
+ },
30514
30703
  "pipelineAnalytics.saveRetrainAnnotations": {
30515
30704
  capName: "pipeline-analytics",
30516
30705
  capScope: "device",
@@ -30535,6 +30724,12 @@ Object.freeze({
30535
30724
  addonId: null,
30536
30725
  access: "create"
30537
30726
  },
30727
+ "pipelineAnalytics.startStorageMigrationMove": {
30728
+ capName: "pipeline-analytics",
30729
+ capScope: "device",
30730
+ addonId: null,
30731
+ access: "create"
30732
+ },
30538
30733
  "pipelineAnalytics.wipeAllAnalytics": {
30539
30734
  capName: "pipeline-analytics",
30540
30735
  capScope: "device",
@@ -30901,6 +31096,12 @@ Object.freeze({
30901
31096
  addonId: null,
30902
31097
  access: "view"
30903
31098
  },
31099
+ "pipelineOrchestrator.pauseForStorageMigration": {
31100
+ capName: "pipeline-orchestrator",
31101
+ capScope: "system",
31102
+ addonId: null,
31103
+ access: "create"
31104
+ },
30904
31105
  "pipelineOrchestrator.rebalance": {
30905
31106
  capName: "pipeline-orchestrator",
30906
31107
  capScope: "system",
@@ -30925,6 +31126,12 @@ Object.freeze({
30925
31126
  addonId: null,
30926
31127
  access: "view"
30927
31128
  },
31129
+ "pipelineOrchestrator.resumeForStorageMigration": {
31130
+ capName: "pipeline-orchestrator",
31131
+ capScope: "system",
31132
+ addonId: null,
31133
+ access: "create"
31134
+ },
30928
31135
  "pipelineOrchestrator.saveTemplate": {
30929
31136
  capName: "pipeline-orchestrator",
30930
31137
  capScope: "system",
@@ -31321,7 +31528,7 @@ Object.freeze({
31321
31528
  addonId: null,
31322
31529
  access: "create"
31323
31530
  },
31324
- "recording.cancelRelocate": {
31531
+ "recording.cancelStorageMigrationMove": {
31325
31532
  capName: "recording",
31326
31533
  capScope: "system",
31327
31534
  addonId: null,
@@ -31357,7 +31564,7 @@ Object.freeze({
31357
31564
  addonId: null,
31358
31565
  access: "view"
31359
31566
  },
31360
- "recording.getRelocateStatus": {
31567
+ "recording.getStorageMigrationMoveStatus": {
31361
31568
  capName: "recording",
31362
31569
  capScope: "system",
31363
31570
  addonId: null,
@@ -31381,6 +31588,12 @@ Object.freeze({
31381
31588
  addonId: null,
31382
31589
  access: "view"
31383
31590
  },
31591
+ "recording.pauseForStorageMigration": {
31592
+ capName: "recording",
31593
+ capScope: "system",
31594
+ addonId: null,
31595
+ access: "create"
31596
+ },
31384
31597
  "recording.pruneFootage": {
31385
31598
  capName: "recording",
31386
31599
  capScope: "system",
@@ -31399,7 +31612,7 @@ Object.freeze({
31399
31612
  addonId: null,
31400
31613
  access: "view"
31401
31614
  },
31402
- "recording.relocateFootage": {
31615
+ "recording.refreshStorageLocationsForMigration": {
31403
31616
  capName: "recording",
31404
31617
  capScope: "system",
31405
31618
  addonId: null,
@@ -31423,12 +31636,24 @@ Object.freeze({
31423
31636
  addonId: null,
31424
31637
  access: "create"
31425
31638
  },
31639
+ "recording.resumeForStorageMigration": {
31640
+ capName: "recording",
31641
+ capScope: "system",
31642
+ addonId: null,
31643
+ access: "create"
31644
+ },
31426
31645
  "recording.setDeviceConfig": {
31427
31646
  capName: "recording",
31428
31647
  capScope: "system",
31429
31648
  addonId: null,
31430
31649
  access: "create"
31431
31650
  },
31651
+ "recording.startStorageMigrationMove": {
31652
+ capName: "recording",
31653
+ capScope: "system",
31654
+ addonId: null,
31655
+ access: "create"
31656
+ },
31432
31657
  "recordingExport.cancelExport": {
31433
31658
  capName: "recordingExport",
31434
31659
  capScope: "system",
@@ -31819,6 +32044,30 @@ Object.freeze({
31819
32044
  addonId: null,
31820
32045
  access: "view"
31821
32046
  },
32047
+ "storageMigration.cancel": {
32048
+ capName: "storage-migration",
32049
+ capScope: "system",
32050
+ addonId: null,
32051
+ access: "create"
32052
+ },
32053
+ "storageMigration.plan": {
32054
+ capName: "storage-migration",
32055
+ capScope: "system",
32056
+ addonId: null,
32057
+ access: "view"
32058
+ },
32059
+ "storageMigration.start": {
32060
+ capName: "storage-migration",
32061
+ capScope: "system",
32062
+ addonId: null,
32063
+ access: "create"
32064
+ },
32065
+ "storageMigration.status": {
32066
+ capName: "storage-migration",
32067
+ capScope: "system",
32068
+ addonId: null,
32069
+ access: "view"
32070
+ },
31822
32071
  "storageProvider.abortUpload": {
31823
32072
  capName: "storage-provider",
31824
32073
  capScope: "system",
@@ -32197,12 +32446,42 @@ Object.freeze({
32197
32446
  addonId: null,
32198
32447
  access: "create"
32199
32448
  },
32449
+ "terminalSession.adoptLegacyMonitor": {
32450
+ capName: "terminal-session",
32451
+ capScope: "system",
32452
+ addonId: null,
32453
+ access: "create"
32454
+ },
32200
32455
  "terminalSession.close": {
32201
32456
  capName: "terminal-session",
32202
32457
  capScope: "system",
32203
32458
  addonId: null,
32204
32459
  access: "create"
32205
32460
  },
32461
+ "terminalSession.createInstance": {
32462
+ capName: "terminal-session",
32463
+ capScope: "system",
32464
+ addonId: null,
32465
+ access: "create"
32466
+ },
32467
+ "terminalSession.deleteInstance": {
32468
+ capName: "terminal-session",
32469
+ capScope: "system",
32470
+ addonId: null,
32471
+ access: "delete"
32472
+ },
32473
+ "terminalSession.listInstances": {
32474
+ capName: "terminal-session",
32475
+ capScope: "system",
32476
+ addonId: null,
32477
+ access: "view"
32478
+ },
32479
+ "terminalSession.listLegacyCameras": {
32480
+ capName: "terminal-session",
32481
+ capScope: "system",
32482
+ addonId: null,
32483
+ access: "view"
32484
+ },
32206
32485
  "terminalSession.listProfiles": {
32207
32486
  capName: "terminal-session",
32208
32487
  capScope: "system",
@@ -32233,6 +32512,12 @@ Object.freeze({
32233
32512
  addonId: null,
32234
32513
  access: "create"
32235
32514
  },
32515
+ "terminalSession.setInstanceEnabled": {
32516
+ capName: "terminal-session",
32517
+ capScope: "system",
32518
+ addonId: null,
32519
+ access: "create"
32520
+ },
32236
32521
  "terminalSession.writeInput": {
32237
32522
  capName: "terminal-session",
32238
32523
  capScope: "system",
package/dist/addon.mjs CHANGED
@@ -7567,12 +7567,11 @@ var RecordingConfigSchema = object({
7567
7567
  /**
7568
7568
  * Entity-relocation job state (storage entity-routing spec, Phase 4).
7569
7569
  *
7570
- * One shape shared by the recorder's `relocateFootage` (segments) and
7571
- * pipeline-analytics' `relocateMedia` (event media blobs) so the admin Data
7572
- * page renders both movers with one component. Jobs are in-RAM (a restart
7573
- * forgets them re-running is safe by construction: copy-if-absent, delete
7574
- * after verify) and each completed/failed run also lands one durable ops-log
7575
- * row on the owning addon's surface.
7570
+ * One shape shared by the recorder and pipeline-analytics internal movers.
7571
+ * The public admin surface is `storage-migration`; child jobs remain in RAM
7572
+ * because copy-if-absent, verify, delete and index/row repoint are resumable.
7573
+ * Each completed/failed run also lands one durable ops-log row on its owning
7574
+ * addon surface.
7576
7575
  */
7577
7576
  var RelocateJobStateSchema = _enum([
7578
7577
  "running",
@@ -7599,19 +7598,100 @@ var RelocateJobSchema = object({
7599
7598
  finishedAt: number().nullable(),
7600
7599
  error: string().nullable()
7601
7600
  });
7601
+ /** Profile-derived footage selection used only by the migration coordinator:
7602
+ * `recordings` owns high+mid; `recordingsLow` owns low. */
7603
+ var RelocateFootageClassSchema = _enum(["recordings", "recordingsLow"]);
7602
7604
  var RelocateFootageInputSchema = object({
7603
- deviceId: number().optional(),
7604
7605
  fromLocationId: string(),
7605
7606
  toLocationId: string(),
7606
7607
  entities: array(_enum(["segments"])).optional(),
7608
+ /** Limits relocation to the logical profile class. Omit only for the
7609
+ * pre-orchestration compatibility path. */
7610
+ footageClass: RelocateFootageClassSchema.optional(),
7607
7611
  /** Copy throttle in MB/s (default 40) — the drain is a background chore,
7608
7612
  * never allowed to starve live writers. */
7609
7613
  throttleMbps: number().min(1).max(1e3).optional()
7610
7614
  });
7611
- var RelocateMediaInputSchema = object({
7612
- deviceId: number().optional(),
7615
+ /** Internal, lease-scoped participant operation. It is intentionally separate
7616
+ * from persistent recording settings: a migration never changes
7617
+ * `RecordingConfig.enabled` or camera wrapper bindings. */
7618
+ var StorageMigrationLeaseInputSchema = object({ leaseId: string().min(1) });
7619
+ var StorageMigrationFootageMoveInputSchema = RelocateFootageInputSchema.extend({ leaseId: string().min(1) });
7620
+ var StorageMigrationMediaMoveInputSchema = object({
7613
7621
  toLocationId: string(),
7614
7622
  throttleMbps: number().min(1).max(1e3).optional()
7623
+ }).extend({ leaseId: string().min(1) });
7624
+ /** The independently selectable logical storage classes. `recordings`
7625
+ * encompasses the high and mid segment profiles; `recordingsLow` is low
7626
+ * segments; `eventMedia` is post-analysis blobs. */
7627
+ var StorageMigrationClassSchema = _enum([
7628
+ "recordings",
7629
+ "recordingsLow",
7630
+ "eventMedia"
7631
+ ]);
7632
+ /** A destination is always an existing, fully-qualified location id. The
7633
+ * migration API intentionally never changes a source location's `basePath`:
7634
+ * callers create a new `<type>:<slug>` location, then select it here. */
7635
+ var StorageMigrationDestinationsSchema = object({
7636
+ recordings: string().min(1).optional(),
7637
+ recordingsLow: string().min(1).optional(),
7638
+ eventMedia: string().min(1).optional()
7639
+ }).refine((value) => Object.keys(value).length > 0, { message: "select at least one storage class" });
7640
+ /** Shared input for planning and starting an orchestrated storage migration. */
7641
+ var StorageMigrationInputSchema = object({
7642
+ destinations: StorageMigrationDestinationsSchema,
7643
+ throttleMbps: number().min(1).max(1e3).optional()
7644
+ });
7645
+ /** The durable coordinator state machine. The only phase that changes default
7646
+ * locations is `repointing`, after every selected mover has completed and been
7647
+ * verified. */
7648
+ var StorageMigrationPhaseSchema = _enum([
7649
+ "planning",
7650
+ "pausing",
7651
+ "moving",
7652
+ "verifying",
7653
+ "repointing",
7654
+ "refreshing",
7655
+ "resuming",
7656
+ "done",
7657
+ "failed",
7658
+ "cancelled"
7659
+ ]);
7660
+ var StorageMigrationParticipantSchema = _enum([
7661
+ "pipeline",
7662
+ "recorder",
7663
+ "analytics"
7664
+ ]);
7665
+ var StorageMigrationMoveSchema = object({
7666
+ storageClass: StorageMigrationClassSchema,
7667
+ fromLocationId: string(),
7668
+ toLocationId: string(),
7669
+ moverJobId: string().nullable(),
7670
+ state: RelocateJobStateSchema.nullable(),
7671
+ error: string().nullable()
7672
+ });
7673
+ var StorageMigrationJobSchema = object({
7674
+ jobId: string(),
7675
+ phase: StorageMigrationPhaseSchema,
7676
+ destinations: StorageMigrationDestinationsSchema,
7677
+ throttleMbps: number(),
7678
+ moves: array(StorageMigrationMoveSchema),
7679
+ pauseLeaseId: string().nullable(),
7680
+ pausedParticipants: array(StorageMigrationParticipantSchema),
7681
+ repointed: boolean(),
7682
+ cancelRequested: boolean(),
7683
+ startedAt: number(),
7684
+ updatedAt: number(),
7685
+ finishedAt: number().nullable(),
7686
+ error: string().nullable()
7687
+ });
7688
+ var StorageMigrationPlanSchema = object({
7689
+ destinations: StorageMigrationDestinationsSchema,
7690
+ moves: array(object({
7691
+ storageClass: StorageMigrationClassSchema,
7692
+ fromLocationId: string(),
7693
+ toLocationId: string()
7694
+ }))
7615
7695
  });
7616
7696
  /**
7617
7697
  * `StorageLocationType` — an addon-declared id that identifies the *kind* of
@@ -16265,13 +16345,19 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
16265
16345
  }), method(object({ deviceId: number() }), EventPruneCountsSchema, {
16266
16346
  kind: "mutation",
16267
16347
  auth: "admin"
16268
- }), method(RelocateMediaInputSchema, object({ jobId: string() }), {
16348
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
16269
16349
  kind: "mutation",
16270
16350
  auth: "admin"
16271
- }), method(object({}), array(RelocateJobSchema).readonly(), {
16272
- kind: "query",
16351
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
16352
+ kind: "mutation",
16353
+ auth: "admin"
16354
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
16355
+ kind: "mutation",
16356
+ auth: "admin"
16357
+ }), method(StorageMigrationMediaMoveInputSchema, object({ jobId: string() }), {
16358
+ kind: "mutation",
16273
16359
  auth: "admin"
16274
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
16360
+ }), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
16275
16361
  kind: "mutation",
16276
16362
  auth: "admin"
16277
16363
  }), method(OpsLogQueryInputSchema, array(OpsLogEntrySchema).readonly(), {
@@ -17801,7 +17887,13 @@ var NodeInferenceDevicesSchema = object({
17801
17887
  reachable: boolean(),
17802
17888
  devices: array(NodeInferenceDeviceSchema).readonly()
17803
17889
  });
17804
- method(object({
17890
+ method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
17891
+ kind: "mutation",
17892
+ auth: "admin"
17893
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
17894
+ kind: "mutation",
17895
+ auth: "admin"
17896
+ }), method(object({
17805
17897
  deviceId: number(),
17806
17898
  agentNodeId: string()
17807
17899
  }), object({ success: literal(true) }), {
@@ -18475,6 +18567,13 @@ method(object({ locationId: string() }), EvictableUsageSchema), method(object({
18475
18567
  locationId: string(),
18476
18568
  targetBytes: number().int().positive()
18477
18569
  }), EvictResultSchema, { kind: "mutation" });
18570
+ method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin" }), method(StorageMigrationInputSchema, object({ jobId: string() }), {
18571
+ kind: "mutation",
18572
+ auth: "admin"
18573
+ }), method(object({ jobId: string().optional() }), StorageMigrationJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
18574
+ kind: "mutation",
18575
+ auth: "admin"
18576
+ });
18478
18577
  var ProviderInfoSchema = discriminatedUnion("shouldSaveDiskSpace", [object({
18479
18578
  providerId: string().min(1),
18480
18579
  displayName: string().min(1),
@@ -18578,6 +18677,28 @@ var TerminalProfileInfoSchema = object({
18578
18677
  label: string(),
18579
18678
  description: string().optional()
18580
18679
  });
18680
+ /**
18681
+ * A durable operator-created Terminal instance. Profiles are templates; only
18682
+ * an instance declares a camera.
18683
+ */
18684
+ var TerminalInstanceInfoSchema = object({
18685
+ instanceId: string(),
18686
+ cameraStableId: string(),
18687
+ nodeId: string(),
18688
+ profileId: string(),
18689
+ profileLabel: string(),
18690
+ name: string(),
18691
+ enabled: boolean()
18692
+ });
18693
+ var TerminalLegacyCameraSchema = object({
18694
+ stableId: string(),
18695
+ nodeId: string(),
18696
+ profileId: string(),
18697
+ profileLabel: string(),
18698
+ name: string(),
18699
+ /** Only legacy monitor cameras can retain their historic stable identity. */
18700
+ adoptable: boolean()
18701
+ });
18581
18702
  var TerminalOutputEventSchema = discriminatedUnion("kind", [object({
18582
18703
  seq: number().int().positive(),
18583
18704
  kind: literal("data"),
@@ -18594,7 +18715,29 @@ var TerminalOutputBatchSchema = object({
18594
18715
  snapshot: string().optional(),
18595
18716
  events: array(TerminalOutputEventSchema).readonly()
18596
18717
  });
18597
- method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
18718
+ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalInstanceInfoSchema).readonly(), { auth: "admin" }), method(object({
18719
+ targetNodeId: string().min(1),
18720
+ profileId: string().min(1),
18721
+ name: string().trim().min(1).max(160).optional()
18722
+ }), TerminalInstanceInfoSchema, {
18723
+ kind: "mutation",
18724
+ auth: "admin"
18725
+ }), method(object({ instanceId: string().min(1) }), _void(), {
18726
+ kind: "mutation",
18727
+ auth: "admin"
18728
+ }), method(object({
18729
+ instanceId: string().min(1),
18730
+ enabled: boolean()
18731
+ }), TerminalInstanceInfoSchema, {
18732
+ kind: "mutation",
18733
+ auth: "admin"
18734
+ }), method(_void(), array(TerminalLegacyCameraSchema).readonly(), { auth: "admin" }), method(object({
18735
+ stableId: string().min(1),
18736
+ name: string().trim().min(1).max(160).optional()
18737
+ }), TerminalInstanceInfoSchema, {
18738
+ kind: "mutation",
18739
+ auth: "admin"
18740
+ }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
18598
18741
  profileId: string(),
18599
18742
  cols: number().int().positive(),
18600
18743
  rows: number().int().positive()
@@ -18611,7 +18754,13 @@ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }),
18611
18754
  }), method(object({
18612
18755
  sessionId: string(),
18613
18756
  afterSeq: number().int().nonnegative(),
18614
- waitMs: number().int().min(0).max(2e3).default(0)
18757
+ waitMs: number().int().min(0).max(2e3).default(0),
18758
+ /**
18759
+ * Wait when a just-opened session has no output yet. Kept opt-in so a
18760
+ * browser's initial repaint remains immediate; the camera snapshot
18761
+ * relay uses it to avoid encoding a blank startup frame.
18762
+ */
18763
+ waitForOutput: boolean().optional()
18615
18764
  }), TerminalOutputBatchSchema, {
18616
18765
  kind: "mutation",
18617
18766
  auth: "admin",
@@ -21109,6 +21258,7 @@ var FaceInfoSchema = object({
21109
21258
  var FaceFilterEnum = _enum([
21110
21259
  "unassigned",
21111
21260
  "recognized",
21261
+ "identified",
21112
21262
  "all"
21113
21263
  ]);
21114
21264
  var MediaFileLiteSchema$1 = object({
@@ -21137,6 +21287,8 @@ method(_void(), array(IdentitySchema).readonly()), method(object({ name: string(
21137
21287
  kind: "mutation",
21138
21288
  auth: "admin"
21139
21289
  }), method(object({
21290
+ /** Restrict to one camera. Absent keeps the cluster-wide gallery view. */
21291
+ deviceId: number().int().optional(),
21140
21292
  limit: number().int().positive().optional(),
21141
21293
  filter: FaceFilterEnum.optional(),
21142
21294
  /**
@@ -23366,6 +23518,10 @@ var OsdSourceSchema = discriminatedUnion("kind", [
23366
23518
  capName: string().min(1).max(64),
23367
23519
  /** Dot path inside the slice, e.g. `detected`, `value`, `mode`. */
23368
23520
  valuePath: string().min(1).max(64)
23521
+ }),
23522
+ object({
23523
+ kind: literal("latest-recognition"),
23524
+ recognition: _enum(["person", "plate"])
23369
23525
  })
23370
23526
  ]);
23371
23527
  var OsdSlotBindingSchema = object({
@@ -23471,6 +23627,15 @@ method(object({ deviceId: number().int() }), object({
23471
23627
  }), object({ success: literal(true) }), {
23472
23628
  kind: "mutation",
23473
23629
  auth: "admin"
23630
+ }), method(object({
23631
+ sourceDeviceId: number().int(),
23632
+ targetDeviceId: number().int()
23633
+ }), object({
23634
+ copied: number().int().nonnegative(),
23635
+ skipped: number().int().nonnegative()
23636
+ }), {
23637
+ kind: "mutation",
23638
+ auth: "admin"
23474
23639
  }), method(object({
23475
23640
  deviceId: number().int(),
23476
23641
  slotId: string().min(1),
@@ -24568,13 +24733,19 @@ method(object({
24568
24733
  }), {
24569
24734
  kind: "mutation",
24570
24735
  auth: "admin"
24571
- }), method(RelocateFootageInputSchema, object({ jobId: string() }), {
24736
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
24572
24737
  kind: "mutation",
24573
24738
  auth: "admin"
24574
- }), method(object({}), array(RelocateJobSchema).readonly(), {
24575
- kind: "query",
24739
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
24740
+ kind: "mutation",
24576
24741
  auth: "admin"
24577
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
24742
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
24743
+ kind: "mutation",
24744
+ auth: "admin"
24745
+ }), method(StorageMigrationFootageMoveInputSchema, object({ jobId: string() }), {
24746
+ kind: "mutation",
24747
+ auth: "admin"
24748
+ }), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
24578
24749
  kind: "mutation",
24579
24750
  auth: "admin"
24580
24751
  });
@@ -30180,6 +30351,12 @@ Object.freeze({
30180
30351
  addonId: null,
30181
30352
  access: "delete"
30182
30353
  },
30354
+ "osdManager.copyDeviceConfiguration": {
30355
+ capName: "osd-manager",
30356
+ capScope: "system",
30357
+ addonId: null,
30358
+ access: "create"
30359
+ },
30183
30360
  "osdManager.getConditionSupport": {
30184
30361
  capName: "osd-manager",
30185
30362
  capScope: "system",
@@ -30276,7 +30453,7 @@ Object.freeze({
30276
30453
  addonId: null,
30277
30454
  access: "create"
30278
30455
  },
30279
- "pipelineAnalytics.cancelMediaRelocate": {
30456
+ "pipelineAnalytics.cancelStorageMigrationMove": {
30280
30457
  capName: "pipeline-analytics",
30281
30458
  capScope: "device",
30282
30459
  addonId: null,
@@ -30348,12 +30525,6 @@ Object.freeze({
30348
30525
  addonId: null,
30349
30526
  access: "view"
30350
30527
  },
30351
- "pipelineAnalytics.getMediaRelocateStatus": {
30352
- capName: "pipeline-analytics",
30353
- capScope: "device",
30354
- addonId: null,
30355
- access: "view"
30356
- },
30357
30528
  "pipelineAnalytics.getMotionEvents": {
30358
30529
  capName: "pipeline-analytics",
30359
30530
  capScope: "device",
@@ -30390,6 +30561,12 @@ Object.freeze({
30390
30561
  addonId: null,
30391
30562
  access: "view"
30392
30563
  },
30564
+ "pipelineAnalytics.getStorageMigrationMoveStatus": {
30565
+ capName: "pipeline-analytics",
30566
+ capScope: "device",
30567
+ addonId: null,
30568
+ access: "view"
30569
+ },
30393
30570
  "pipelineAnalytics.getTrack": {
30394
30571
  capName: "pipeline-analytics",
30395
30572
  capScope: "device",
@@ -30468,6 +30645,12 @@ Object.freeze({
30468
30645
  addonId: null,
30469
30646
  access: "view"
30470
30647
  },
30648
+ "pipelineAnalytics.pauseForStorageMigration": {
30649
+ capName: "pipeline-analytics",
30650
+ capScope: "device",
30651
+ addonId: null,
30652
+ access: "create"
30653
+ },
30471
30654
  "pipelineAnalytics.proposeRetrainAnnotations": {
30472
30655
  capName: "pipeline-analytics",
30473
30656
  capScope: "device",
@@ -30498,7 +30681,7 @@ Object.freeze({
30498
30681
  addonId: null,
30499
30682
  access: "create"
30500
30683
  },
30501
- "pipelineAnalytics.relocateMedia": {
30684
+ "pipelineAnalytics.refreshStorageLocationsForMigration": {
30502
30685
  capName: "pipeline-analytics",
30503
30686
  capScope: "device",
30504
30687
  addonId: null,
@@ -30510,6 +30693,12 @@ Object.freeze({
30510
30693
  addonId: null,
30511
30694
  access: "create"
30512
30695
  },
30696
+ "pipelineAnalytics.resumeForStorageMigration": {
30697
+ capName: "pipeline-analytics",
30698
+ capScope: "device",
30699
+ addonId: null,
30700
+ access: "create"
30701
+ },
30513
30702
  "pipelineAnalytics.saveRetrainAnnotations": {
30514
30703
  capName: "pipeline-analytics",
30515
30704
  capScope: "device",
@@ -30534,6 +30723,12 @@ Object.freeze({
30534
30723
  addonId: null,
30535
30724
  access: "create"
30536
30725
  },
30726
+ "pipelineAnalytics.startStorageMigrationMove": {
30727
+ capName: "pipeline-analytics",
30728
+ capScope: "device",
30729
+ addonId: null,
30730
+ access: "create"
30731
+ },
30537
30732
  "pipelineAnalytics.wipeAllAnalytics": {
30538
30733
  capName: "pipeline-analytics",
30539
30734
  capScope: "device",
@@ -30900,6 +31095,12 @@ Object.freeze({
30900
31095
  addonId: null,
30901
31096
  access: "view"
30902
31097
  },
31098
+ "pipelineOrchestrator.pauseForStorageMigration": {
31099
+ capName: "pipeline-orchestrator",
31100
+ capScope: "system",
31101
+ addonId: null,
31102
+ access: "create"
31103
+ },
30903
31104
  "pipelineOrchestrator.rebalance": {
30904
31105
  capName: "pipeline-orchestrator",
30905
31106
  capScope: "system",
@@ -30924,6 +31125,12 @@ Object.freeze({
30924
31125
  addonId: null,
30925
31126
  access: "view"
30926
31127
  },
31128
+ "pipelineOrchestrator.resumeForStorageMigration": {
31129
+ capName: "pipeline-orchestrator",
31130
+ capScope: "system",
31131
+ addonId: null,
31132
+ access: "create"
31133
+ },
30927
31134
  "pipelineOrchestrator.saveTemplate": {
30928
31135
  capName: "pipeline-orchestrator",
30929
31136
  capScope: "system",
@@ -31320,7 +31527,7 @@ Object.freeze({
31320
31527
  addonId: null,
31321
31528
  access: "create"
31322
31529
  },
31323
- "recording.cancelRelocate": {
31530
+ "recording.cancelStorageMigrationMove": {
31324
31531
  capName: "recording",
31325
31532
  capScope: "system",
31326
31533
  addonId: null,
@@ -31356,7 +31563,7 @@ Object.freeze({
31356
31563
  addonId: null,
31357
31564
  access: "view"
31358
31565
  },
31359
- "recording.getRelocateStatus": {
31566
+ "recording.getStorageMigrationMoveStatus": {
31360
31567
  capName: "recording",
31361
31568
  capScope: "system",
31362
31569
  addonId: null,
@@ -31380,6 +31587,12 @@ Object.freeze({
31380
31587
  addonId: null,
31381
31588
  access: "view"
31382
31589
  },
31590
+ "recording.pauseForStorageMigration": {
31591
+ capName: "recording",
31592
+ capScope: "system",
31593
+ addonId: null,
31594
+ access: "create"
31595
+ },
31383
31596
  "recording.pruneFootage": {
31384
31597
  capName: "recording",
31385
31598
  capScope: "system",
@@ -31398,7 +31611,7 @@ Object.freeze({
31398
31611
  addonId: null,
31399
31612
  access: "view"
31400
31613
  },
31401
- "recording.relocateFootage": {
31614
+ "recording.refreshStorageLocationsForMigration": {
31402
31615
  capName: "recording",
31403
31616
  capScope: "system",
31404
31617
  addonId: null,
@@ -31422,12 +31635,24 @@ Object.freeze({
31422
31635
  addonId: null,
31423
31636
  access: "create"
31424
31637
  },
31638
+ "recording.resumeForStorageMigration": {
31639
+ capName: "recording",
31640
+ capScope: "system",
31641
+ addonId: null,
31642
+ access: "create"
31643
+ },
31425
31644
  "recording.setDeviceConfig": {
31426
31645
  capName: "recording",
31427
31646
  capScope: "system",
31428
31647
  addonId: null,
31429
31648
  access: "create"
31430
31649
  },
31650
+ "recording.startStorageMigrationMove": {
31651
+ capName: "recording",
31652
+ capScope: "system",
31653
+ addonId: null,
31654
+ access: "create"
31655
+ },
31431
31656
  "recordingExport.cancelExport": {
31432
31657
  capName: "recordingExport",
31433
31658
  capScope: "system",
@@ -31818,6 +32043,30 @@ Object.freeze({
31818
32043
  addonId: null,
31819
32044
  access: "view"
31820
32045
  },
32046
+ "storageMigration.cancel": {
32047
+ capName: "storage-migration",
32048
+ capScope: "system",
32049
+ addonId: null,
32050
+ access: "create"
32051
+ },
32052
+ "storageMigration.plan": {
32053
+ capName: "storage-migration",
32054
+ capScope: "system",
32055
+ addonId: null,
32056
+ access: "view"
32057
+ },
32058
+ "storageMigration.start": {
32059
+ capName: "storage-migration",
32060
+ capScope: "system",
32061
+ addonId: null,
32062
+ access: "create"
32063
+ },
32064
+ "storageMigration.status": {
32065
+ capName: "storage-migration",
32066
+ capScope: "system",
32067
+ addonId: null,
32068
+ access: "view"
32069
+ },
31821
32070
  "storageProvider.abortUpload": {
31822
32071
  capName: "storage-provider",
31823
32072
  capScope: "system",
@@ -32196,12 +32445,42 @@ Object.freeze({
32196
32445
  addonId: null,
32197
32446
  access: "create"
32198
32447
  },
32448
+ "terminalSession.adoptLegacyMonitor": {
32449
+ capName: "terminal-session",
32450
+ capScope: "system",
32451
+ addonId: null,
32452
+ access: "create"
32453
+ },
32199
32454
  "terminalSession.close": {
32200
32455
  capName: "terminal-session",
32201
32456
  capScope: "system",
32202
32457
  addonId: null,
32203
32458
  access: "create"
32204
32459
  },
32460
+ "terminalSession.createInstance": {
32461
+ capName: "terminal-session",
32462
+ capScope: "system",
32463
+ addonId: null,
32464
+ access: "create"
32465
+ },
32466
+ "terminalSession.deleteInstance": {
32467
+ capName: "terminal-session",
32468
+ capScope: "system",
32469
+ addonId: null,
32470
+ access: "delete"
32471
+ },
32472
+ "terminalSession.listInstances": {
32473
+ capName: "terminal-session",
32474
+ capScope: "system",
32475
+ addonId: null,
32476
+ access: "view"
32477
+ },
32478
+ "terminalSession.listLegacyCameras": {
32479
+ capName: "terminal-session",
32480
+ capScope: "system",
32481
+ addonId: null,
32482
+ access: "view"
32483
+ },
32205
32484
  "terminalSession.listProfiles": {
32206
32485
  capName: "terminal-session",
32207
32486
  capScope: "system",
@@ -32232,6 +32511,12 @@ Object.freeze({
32232
32511
  addonId: null,
32233
32512
  access: "create"
32234
32513
  },
32514
+ "terminalSession.setInstanceEnabled": {
32515
+ capName: "terminal-session",
32516
+ capScope: "system",
32517
+ addonId: null,
32518
+ access: "create"
32519
+ },
32235
32520
  "terminalSession.writeInput": {
32236
32521
  capName: "terminal-session",
32237
32522
  capScope: "system",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-provider-gree",
3
- "version": "0.2.11",
3
+ "version": "0.2.12",
4
4
  "description": "Gree air-conditioner device-provider addon for CamStack — wraps the @apocaliss92/nodegree local-UDP client (LAN discovery + AES control), exposing climate-control and fan-control",
5
5
  "keywords": [
6
6
  "camstack",