@camstack/addon-provider-gree 0.2.10 → 0.2.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/dist/addon.js +357 -30
  2. package/dist/addon.mjs +357 -30
  3. package/package.json +1 -1
package/dist/addon.js CHANGED
@@ -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",
16274
16354
  auth: "admin"
16275
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
16355
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
16356
+ kind: "mutation",
16357
+ auth: "admin"
16358
+ }), method(StorageMigrationMediaMoveInputSchema, object({ jobId: string() }), {
16359
+ kind: "mutation",
16360
+ auth: "admin"
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,7 +18678,67 @@ var TerminalProfileInfoSchema = object({
18579
18678
  label: string(),
18580
18679
  description: string().optional()
18581
18680
  });
18582
- method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
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
+ });
18703
+ var TerminalOutputEventSchema = discriminatedUnion("kind", [object({
18704
+ seq: number().int().positive(),
18705
+ kind: literal("data"),
18706
+ data: string()
18707
+ }), object({
18708
+ seq: number().int().positive(),
18709
+ kind: literal("exit"),
18710
+ exitCode: number().int(),
18711
+ signal: number().int().optional()
18712
+ })]);
18713
+ var TerminalOutputBatchSchema = object({
18714
+ cursor: number().int().nonnegative(),
18715
+ reset: boolean(),
18716
+ snapshot: string().optional(),
18717
+ events: array(TerminalOutputEventSchema).readonly()
18718
+ });
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({
18583
18742
  profileId: string(),
18584
18743
  cols: number().int().positive(),
18585
18744
  rows: number().int().positive()
@@ -18593,6 +18752,26 @@ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }),
18593
18752
  }), _void(), {
18594
18753
  kind: "mutation",
18595
18754
  auth: "admin"
18755
+ }), method(object({
18756
+ sessionId: string(),
18757
+ afterSeq: number().int().nonnegative(),
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()
18765
+ }), TerminalOutputBatchSchema, {
18766
+ kind: "mutation",
18767
+ auth: "admin",
18768
+ timeoutMs: 15e3
18769
+ }), method(object({
18770
+ sessionId: string(),
18771
+ data: string().max(64 * 1024)
18772
+ }), _void(), {
18773
+ kind: "mutation",
18774
+ auth: "admin"
18596
18775
  }), method(object({ sessionId: string() }), _void(), {
18597
18776
  kind: "mutation",
18598
18777
  auth: "admin"
@@ -21080,6 +21259,7 @@ var FaceInfoSchema = object({
21080
21259
  var FaceFilterEnum = _enum([
21081
21260
  "unassigned",
21082
21261
  "recognized",
21262
+ "identified",
21083
21263
  "all"
21084
21264
  ]);
21085
21265
  var MediaFileLiteSchema$1 = object({
@@ -21108,6 +21288,8 @@ method(_void(), array(IdentitySchema).readonly()), method(object({ name: string(
21108
21288
  kind: "mutation",
21109
21289
  auth: "admin"
21110
21290
  }), method(object({
21291
+ /** Restrict to one camera. Absent keeps the cluster-wide gallery view. */
21292
+ deviceId: number().int().optional(),
21111
21293
  limit: number().int().positive().optional(),
21112
21294
  filter: FaceFilterEnum.optional(),
21113
21295
  /**
@@ -23337,6 +23519,10 @@ var OsdSourceSchema = discriminatedUnion("kind", [
23337
23519
  capName: string().min(1).max(64),
23338
23520
  /** Dot path inside the slice, e.g. `detected`, `value`, `mode`. */
23339
23521
  valuePath: string().min(1).max(64)
23522
+ }),
23523
+ object({
23524
+ kind: literal("latest-recognition"),
23525
+ recognition: _enum(["person", "plate"])
23340
23526
  })
23341
23527
  ]);
23342
23528
  var OsdSlotBindingSchema = object({
@@ -23442,6 +23628,15 @@ method(object({ deviceId: number().int() }), object({
23442
23628
  }), object({ success: literal(true) }), {
23443
23629
  kind: "mutation",
23444
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"
23445
23640
  }), method(object({
23446
23641
  deviceId: number().int(),
23447
23642
  slotId: string().min(1),
@@ -24539,13 +24734,19 @@ method(object({
24539
24734
  }), {
24540
24735
  kind: "mutation",
24541
24736
  auth: "admin"
24542
- }), method(RelocateFootageInputSchema, object({ jobId: string() }), {
24737
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
24543
24738
  kind: "mutation",
24544
24739
  auth: "admin"
24545
- }), method(object({}), array(RelocateJobSchema).readonly(), {
24546
- kind: "query",
24740
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
24741
+ kind: "mutation",
24547
24742
  auth: "admin"
24548
- }), 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() }), {
24549
24750
  kind: "mutation",
24550
24751
  auth: "admin"
24551
24752
  });
@@ -30151,6 +30352,12 @@ Object.freeze({
30151
30352
  addonId: null,
30152
30353
  access: "delete"
30153
30354
  },
30355
+ "osdManager.copyDeviceConfiguration": {
30356
+ capName: "osd-manager",
30357
+ capScope: "system",
30358
+ addonId: null,
30359
+ access: "create"
30360
+ },
30154
30361
  "osdManager.getConditionSupport": {
30155
30362
  capName: "osd-manager",
30156
30363
  capScope: "system",
@@ -30247,7 +30454,7 @@ Object.freeze({
30247
30454
  addonId: null,
30248
30455
  access: "create"
30249
30456
  },
30250
- "pipelineAnalytics.cancelMediaRelocate": {
30457
+ "pipelineAnalytics.cancelStorageMigrationMove": {
30251
30458
  capName: "pipeline-analytics",
30252
30459
  capScope: "device",
30253
30460
  addonId: null,
@@ -30319,12 +30526,6 @@ Object.freeze({
30319
30526
  addonId: null,
30320
30527
  access: "view"
30321
30528
  },
30322
- "pipelineAnalytics.getMediaRelocateStatus": {
30323
- capName: "pipeline-analytics",
30324
- capScope: "device",
30325
- addonId: null,
30326
- access: "view"
30327
- },
30328
30529
  "pipelineAnalytics.getMotionEvents": {
30329
30530
  capName: "pipeline-analytics",
30330
30531
  capScope: "device",
@@ -30361,6 +30562,12 @@ Object.freeze({
30361
30562
  addonId: null,
30362
30563
  access: "view"
30363
30564
  },
30565
+ "pipelineAnalytics.getStorageMigrationMoveStatus": {
30566
+ capName: "pipeline-analytics",
30567
+ capScope: "device",
30568
+ addonId: null,
30569
+ access: "view"
30570
+ },
30364
30571
  "pipelineAnalytics.getTrack": {
30365
30572
  capName: "pipeline-analytics",
30366
30573
  capScope: "device",
@@ -30439,6 +30646,12 @@ Object.freeze({
30439
30646
  addonId: null,
30440
30647
  access: "view"
30441
30648
  },
30649
+ "pipelineAnalytics.pauseForStorageMigration": {
30650
+ capName: "pipeline-analytics",
30651
+ capScope: "device",
30652
+ addonId: null,
30653
+ access: "create"
30654
+ },
30442
30655
  "pipelineAnalytics.proposeRetrainAnnotations": {
30443
30656
  capName: "pipeline-analytics",
30444
30657
  capScope: "device",
@@ -30469,7 +30682,7 @@ Object.freeze({
30469
30682
  addonId: null,
30470
30683
  access: "create"
30471
30684
  },
30472
- "pipelineAnalytics.relocateMedia": {
30685
+ "pipelineAnalytics.refreshStorageLocationsForMigration": {
30473
30686
  capName: "pipeline-analytics",
30474
30687
  capScope: "device",
30475
30688
  addonId: null,
@@ -30481,6 +30694,12 @@ Object.freeze({
30481
30694
  addonId: null,
30482
30695
  access: "create"
30483
30696
  },
30697
+ "pipelineAnalytics.resumeForStorageMigration": {
30698
+ capName: "pipeline-analytics",
30699
+ capScope: "device",
30700
+ addonId: null,
30701
+ access: "create"
30702
+ },
30484
30703
  "pipelineAnalytics.saveRetrainAnnotations": {
30485
30704
  capName: "pipeline-analytics",
30486
30705
  capScope: "device",
@@ -30505,6 +30724,12 @@ Object.freeze({
30505
30724
  addonId: null,
30506
30725
  access: "create"
30507
30726
  },
30727
+ "pipelineAnalytics.startStorageMigrationMove": {
30728
+ capName: "pipeline-analytics",
30729
+ capScope: "device",
30730
+ addonId: null,
30731
+ access: "create"
30732
+ },
30508
30733
  "pipelineAnalytics.wipeAllAnalytics": {
30509
30734
  capName: "pipeline-analytics",
30510
30735
  capScope: "device",
@@ -30871,6 +31096,12 @@ Object.freeze({
30871
31096
  addonId: null,
30872
31097
  access: "view"
30873
31098
  },
31099
+ "pipelineOrchestrator.pauseForStorageMigration": {
31100
+ capName: "pipeline-orchestrator",
31101
+ capScope: "system",
31102
+ addonId: null,
31103
+ access: "create"
31104
+ },
30874
31105
  "pipelineOrchestrator.rebalance": {
30875
31106
  capName: "pipeline-orchestrator",
30876
31107
  capScope: "system",
@@ -30895,6 +31126,12 @@ Object.freeze({
30895
31126
  addonId: null,
30896
31127
  access: "view"
30897
31128
  },
31129
+ "pipelineOrchestrator.resumeForStorageMigration": {
31130
+ capName: "pipeline-orchestrator",
31131
+ capScope: "system",
31132
+ addonId: null,
31133
+ access: "create"
31134
+ },
30898
31135
  "pipelineOrchestrator.saveTemplate": {
30899
31136
  capName: "pipeline-orchestrator",
30900
31137
  capScope: "system",
@@ -31291,7 +31528,7 @@ Object.freeze({
31291
31528
  addonId: null,
31292
31529
  access: "create"
31293
31530
  },
31294
- "recording.cancelRelocate": {
31531
+ "recording.cancelStorageMigrationMove": {
31295
31532
  capName: "recording",
31296
31533
  capScope: "system",
31297
31534
  addonId: null,
@@ -31327,7 +31564,7 @@ Object.freeze({
31327
31564
  addonId: null,
31328
31565
  access: "view"
31329
31566
  },
31330
- "recording.getRelocateStatus": {
31567
+ "recording.getStorageMigrationMoveStatus": {
31331
31568
  capName: "recording",
31332
31569
  capScope: "system",
31333
31570
  addonId: null,
@@ -31351,6 +31588,12 @@ Object.freeze({
31351
31588
  addonId: null,
31352
31589
  access: "view"
31353
31590
  },
31591
+ "recording.pauseForStorageMigration": {
31592
+ capName: "recording",
31593
+ capScope: "system",
31594
+ addonId: null,
31595
+ access: "create"
31596
+ },
31354
31597
  "recording.pruneFootage": {
31355
31598
  capName: "recording",
31356
31599
  capScope: "system",
@@ -31369,7 +31612,7 @@ Object.freeze({
31369
31612
  addonId: null,
31370
31613
  access: "view"
31371
31614
  },
31372
- "recording.relocateFootage": {
31615
+ "recording.refreshStorageLocationsForMigration": {
31373
31616
  capName: "recording",
31374
31617
  capScope: "system",
31375
31618
  addonId: null,
@@ -31393,12 +31636,24 @@ Object.freeze({
31393
31636
  addonId: null,
31394
31637
  access: "create"
31395
31638
  },
31639
+ "recording.resumeForStorageMigration": {
31640
+ capName: "recording",
31641
+ capScope: "system",
31642
+ addonId: null,
31643
+ access: "create"
31644
+ },
31396
31645
  "recording.setDeviceConfig": {
31397
31646
  capName: "recording",
31398
31647
  capScope: "system",
31399
31648
  addonId: null,
31400
31649
  access: "create"
31401
31650
  },
31651
+ "recording.startStorageMigrationMove": {
31652
+ capName: "recording",
31653
+ capScope: "system",
31654
+ addonId: null,
31655
+ access: "create"
31656
+ },
31402
31657
  "recordingExport.cancelExport": {
31403
31658
  capName: "recordingExport",
31404
31659
  capScope: "system",
@@ -31789,6 +32044,30 @@ Object.freeze({
31789
32044
  addonId: null,
31790
32045
  access: "view"
31791
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
+ },
31792
32071
  "storageProvider.abortUpload": {
31793
32072
  capName: "storage-provider",
31794
32073
  capScope: "system",
@@ -32167,12 +32446,42 @@ Object.freeze({
32167
32446
  addonId: null,
32168
32447
  access: "create"
32169
32448
  },
32449
+ "terminalSession.adoptLegacyMonitor": {
32450
+ capName: "terminal-session",
32451
+ capScope: "system",
32452
+ addonId: null,
32453
+ access: "create"
32454
+ },
32170
32455
  "terminalSession.close": {
32171
32456
  capName: "terminal-session",
32172
32457
  capScope: "system",
32173
32458
  addonId: null,
32174
32459
  access: "create"
32175
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
+ },
32176
32485
  "terminalSession.listProfiles": {
32177
32486
  capName: "terminal-session",
32178
32487
  capScope: "system",
@@ -32191,12 +32500,30 @@ Object.freeze({
32191
32500
  addonId: null,
32192
32501
  access: "create"
32193
32502
  },
32503
+ "terminalSession.pullOutput": {
32504
+ capName: "terminal-session",
32505
+ capScope: "system",
32506
+ addonId: null,
32507
+ access: "create"
32508
+ },
32194
32509
  "terminalSession.resize": {
32195
32510
  capName: "terminal-session",
32196
32511
  capScope: "system",
32197
32512
  addonId: null,
32198
32513
  access: "create"
32199
32514
  },
32515
+ "terminalSession.setInstanceEnabled": {
32516
+ capName: "terminal-session",
32517
+ capScope: "system",
32518
+ addonId: null,
32519
+ access: "create"
32520
+ },
32521
+ "terminalSession.writeInput": {
32522
+ capName: "terminal-session",
32523
+ capScope: "system",
32524
+ addonId: null,
32525
+ access: "create"
32526
+ },
32200
32527
  "toast.onToast": {
32201
32528
  capName: "toast",
32202
32529
  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",
16273
16353
  auth: "admin"
16274
- }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
16354
+ }), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
16355
+ kind: "mutation",
16356
+ auth: "admin"
16357
+ }), method(StorageMigrationMediaMoveInputSchema, object({ jobId: string() }), {
16358
+ kind: "mutation",
16359
+ auth: "admin"
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,7 +18677,67 @@ var TerminalProfileInfoSchema = object({
18578
18677
  label: string(),
18579
18678
  description: string().optional()
18580
18679
  });
18581
- method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
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
+ });
18702
+ var TerminalOutputEventSchema = discriminatedUnion("kind", [object({
18703
+ seq: number().int().positive(),
18704
+ kind: literal("data"),
18705
+ data: string()
18706
+ }), object({
18707
+ seq: number().int().positive(),
18708
+ kind: literal("exit"),
18709
+ exitCode: number().int(),
18710
+ signal: number().int().optional()
18711
+ })]);
18712
+ var TerminalOutputBatchSchema = object({
18713
+ cursor: number().int().nonnegative(),
18714
+ reset: boolean(),
18715
+ snapshot: string().optional(),
18716
+ events: array(TerminalOutputEventSchema).readonly()
18717
+ });
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({
18582
18741
  profileId: string(),
18583
18742
  cols: number().int().positive(),
18584
18743
  rows: number().int().positive()
@@ -18592,6 +18751,26 @@ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }),
18592
18751
  }), _void(), {
18593
18752
  kind: "mutation",
18594
18753
  auth: "admin"
18754
+ }), method(object({
18755
+ sessionId: string(),
18756
+ afterSeq: number().int().nonnegative(),
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()
18764
+ }), TerminalOutputBatchSchema, {
18765
+ kind: "mutation",
18766
+ auth: "admin",
18767
+ timeoutMs: 15e3
18768
+ }), method(object({
18769
+ sessionId: string(),
18770
+ data: string().max(64 * 1024)
18771
+ }), _void(), {
18772
+ kind: "mutation",
18773
+ auth: "admin"
18595
18774
  }), method(object({ sessionId: string() }), _void(), {
18596
18775
  kind: "mutation",
18597
18776
  auth: "admin"
@@ -21079,6 +21258,7 @@ var FaceInfoSchema = object({
21079
21258
  var FaceFilterEnum = _enum([
21080
21259
  "unassigned",
21081
21260
  "recognized",
21261
+ "identified",
21082
21262
  "all"
21083
21263
  ]);
21084
21264
  var MediaFileLiteSchema$1 = object({
@@ -21107,6 +21287,8 @@ method(_void(), array(IdentitySchema).readonly()), method(object({ name: string(
21107
21287
  kind: "mutation",
21108
21288
  auth: "admin"
21109
21289
  }), method(object({
21290
+ /** Restrict to one camera. Absent keeps the cluster-wide gallery view. */
21291
+ deviceId: number().int().optional(),
21110
21292
  limit: number().int().positive().optional(),
21111
21293
  filter: FaceFilterEnum.optional(),
21112
21294
  /**
@@ -23336,6 +23518,10 @@ var OsdSourceSchema = discriminatedUnion("kind", [
23336
23518
  capName: string().min(1).max(64),
23337
23519
  /** Dot path inside the slice, e.g. `detected`, `value`, `mode`. */
23338
23520
  valuePath: string().min(1).max(64)
23521
+ }),
23522
+ object({
23523
+ kind: literal("latest-recognition"),
23524
+ recognition: _enum(["person", "plate"])
23339
23525
  })
23340
23526
  ]);
23341
23527
  var OsdSlotBindingSchema = object({
@@ -23441,6 +23627,15 @@ method(object({ deviceId: number().int() }), object({
23441
23627
  }), object({ success: literal(true) }), {
23442
23628
  kind: "mutation",
23443
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"
23444
23639
  }), method(object({
23445
23640
  deviceId: number().int(),
23446
23641
  slotId: string().min(1),
@@ -24538,13 +24733,19 @@ method(object({
24538
24733
  }), {
24539
24734
  kind: "mutation",
24540
24735
  auth: "admin"
24541
- }), method(RelocateFootageInputSchema, object({ jobId: string() }), {
24736
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
24542
24737
  kind: "mutation",
24543
24738
  auth: "admin"
24544
- }), method(object({}), array(RelocateJobSchema).readonly(), {
24545
- kind: "query",
24739
+ }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
24740
+ kind: "mutation",
24546
24741
  auth: "admin"
24547
- }), 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() }), {
24548
24749
  kind: "mutation",
24549
24750
  auth: "admin"
24550
24751
  });
@@ -30150,6 +30351,12 @@ Object.freeze({
30150
30351
  addonId: null,
30151
30352
  access: "delete"
30152
30353
  },
30354
+ "osdManager.copyDeviceConfiguration": {
30355
+ capName: "osd-manager",
30356
+ capScope: "system",
30357
+ addonId: null,
30358
+ access: "create"
30359
+ },
30153
30360
  "osdManager.getConditionSupport": {
30154
30361
  capName: "osd-manager",
30155
30362
  capScope: "system",
@@ -30246,7 +30453,7 @@ Object.freeze({
30246
30453
  addonId: null,
30247
30454
  access: "create"
30248
30455
  },
30249
- "pipelineAnalytics.cancelMediaRelocate": {
30456
+ "pipelineAnalytics.cancelStorageMigrationMove": {
30250
30457
  capName: "pipeline-analytics",
30251
30458
  capScope: "device",
30252
30459
  addonId: null,
@@ -30318,12 +30525,6 @@ Object.freeze({
30318
30525
  addonId: null,
30319
30526
  access: "view"
30320
30527
  },
30321
- "pipelineAnalytics.getMediaRelocateStatus": {
30322
- capName: "pipeline-analytics",
30323
- capScope: "device",
30324
- addonId: null,
30325
- access: "view"
30326
- },
30327
30528
  "pipelineAnalytics.getMotionEvents": {
30328
30529
  capName: "pipeline-analytics",
30329
30530
  capScope: "device",
@@ -30360,6 +30561,12 @@ Object.freeze({
30360
30561
  addonId: null,
30361
30562
  access: "view"
30362
30563
  },
30564
+ "pipelineAnalytics.getStorageMigrationMoveStatus": {
30565
+ capName: "pipeline-analytics",
30566
+ capScope: "device",
30567
+ addonId: null,
30568
+ access: "view"
30569
+ },
30363
30570
  "pipelineAnalytics.getTrack": {
30364
30571
  capName: "pipeline-analytics",
30365
30572
  capScope: "device",
@@ -30438,6 +30645,12 @@ Object.freeze({
30438
30645
  addonId: null,
30439
30646
  access: "view"
30440
30647
  },
30648
+ "pipelineAnalytics.pauseForStorageMigration": {
30649
+ capName: "pipeline-analytics",
30650
+ capScope: "device",
30651
+ addonId: null,
30652
+ access: "create"
30653
+ },
30441
30654
  "pipelineAnalytics.proposeRetrainAnnotations": {
30442
30655
  capName: "pipeline-analytics",
30443
30656
  capScope: "device",
@@ -30468,7 +30681,7 @@ Object.freeze({
30468
30681
  addonId: null,
30469
30682
  access: "create"
30470
30683
  },
30471
- "pipelineAnalytics.relocateMedia": {
30684
+ "pipelineAnalytics.refreshStorageLocationsForMigration": {
30472
30685
  capName: "pipeline-analytics",
30473
30686
  capScope: "device",
30474
30687
  addonId: null,
@@ -30480,6 +30693,12 @@ Object.freeze({
30480
30693
  addonId: null,
30481
30694
  access: "create"
30482
30695
  },
30696
+ "pipelineAnalytics.resumeForStorageMigration": {
30697
+ capName: "pipeline-analytics",
30698
+ capScope: "device",
30699
+ addonId: null,
30700
+ access: "create"
30701
+ },
30483
30702
  "pipelineAnalytics.saveRetrainAnnotations": {
30484
30703
  capName: "pipeline-analytics",
30485
30704
  capScope: "device",
@@ -30504,6 +30723,12 @@ Object.freeze({
30504
30723
  addonId: null,
30505
30724
  access: "create"
30506
30725
  },
30726
+ "pipelineAnalytics.startStorageMigrationMove": {
30727
+ capName: "pipeline-analytics",
30728
+ capScope: "device",
30729
+ addonId: null,
30730
+ access: "create"
30731
+ },
30507
30732
  "pipelineAnalytics.wipeAllAnalytics": {
30508
30733
  capName: "pipeline-analytics",
30509
30734
  capScope: "device",
@@ -30870,6 +31095,12 @@ Object.freeze({
30870
31095
  addonId: null,
30871
31096
  access: "view"
30872
31097
  },
31098
+ "pipelineOrchestrator.pauseForStorageMigration": {
31099
+ capName: "pipeline-orchestrator",
31100
+ capScope: "system",
31101
+ addonId: null,
31102
+ access: "create"
31103
+ },
30873
31104
  "pipelineOrchestrator.rebalance": {
30874
31105
  capName: "pipeline-orchestrator",
30875
31106
  capScope: "system",
@@ -30894,6 +31125,12 @@ Object.freeze({
30894
31125
  addonId: null,
30895
31126
  access: "view"
30896
31127
  },
31128
+ "pipelineOrchestrator.resumeForStorageMigration": {
31129
+ capName: "pipeline-orchestrator",
31130
+ capScope: "system",
31131
+ addonId: null,
31132
+ access: "create"
31133
+ },
30897
31134
  "pipelineOrchestrator.saveTemplate": {
30898
31135
  capName: "pipeline-orchestrator",
30899
31136
  capScope: "system",
@@ -31290,7 +31527,7 @@ Object.freeze({
31290
31527
  addonId: null,
31291
31528
  access: "create"
31292
31529
  },
31293
- "recording.cancelRelocate": {
31530
+ "recording.cancelStorageMigrationMove": {
31294
31531
  capName: "recording",
31295
31532
  capScope: "system",
31296
31533
  addonId: null,
@@ -31326,7 +31563,7 @@ Object.freeze({
31326
31563
  addonId: null,
31327
31564
  access: "view"
31328
31565
  },
31329
- "recording.getRelocateStatus": {
31566
+ "recording.getStorageMigrationMoveStatus": {
31330
31567
  capName: "recording",
31331
31568
  capScope: "system",
31332
31569
  addonId: null,
@@ -31350,6 +31587,12 @@ Object.freeze({
31350
31587
  addonId: null,
31351
31588
  access: "view"
31352
31589
  },
31590
+ "recording.pauseForStorageMigration": {
31591
+ capName: "recording",
31592
+ capScope: "system",
31593
+ addonId: null,
31594
+ access: "create"
31595
+ },
31353
31596
  "recording.pruneFootage": {
31354
31597
  capName: "recording",
31355
31598
  capScope: "system",
@@ -31368,7 +31611,7 @@ Object.freeze({
31368
31611
  addonId: null,
31369
31612
  access: "view"
31370
31613
  },
31371
- "recording.relocateFootage": {
31614
+ "recording.refreshStorageLocationsForMigration": {
31372
31615
  capName: "recording",
31373
31616
  capScope: "system",
31374
31617
  addonId: null,
@@ -31392,12 +31635,24 @@ Object.freeze({
31392
31635
  addonId: null,
31393
31636
  access: "create"
31394
31637
  },
31638
+ "recording.resumeForStorageMigration": {
31639
+ capName: "recording",
31640
+ capScope: "system",
31641
+ addonId: null,
31642
+ access: "create"
31643
+ },
31395
31644
  "recording.setDeviceConfig": {
31396
31645
  capName: "recording",
31397
31646
  capScope: "system",
31398
31647
  addonId: null,
31399
31648
  access: "create"
31400
31649
  },
31650
+ "recording.startStorageMigrationMove": {
31651
+ capName: "recording",
31652
+ capScope: "system",
31653
+ addonId: null,
31654
+ access: "create"
31655
+ },
31401
31656
  "recordingExport.cancelExport": {
31402
31657
  capName: "recordingExport",
31403
31658
  capScope: "system",
@@ -31788,6 +32043,30 @@ Object.freeze({
31788
32043
  addonId: null,
31789
32044
  access: "view"
31790
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
+ },
31791
32070
  "storageProvider.abortUpload": {
31792
32071
  capName: "storage-provider",
31793
32072
  capScope: "system",
@@ -32166,12 +32445,42 @@ Object.freeze({
32166
32445
  addonId: null,
32167
32446
  access: "create"
32168
32447
  },
32448
+ "terminalSession.adoptLegacyMonitor": {
32449
+ capName: "terminal-session",
32450
+ capScope: "system",
32451
+ addonId: null,
32452
+ access: "create"
32453
+ },
32169
32454
  "terminalSession.close": {
32170
32455
  capName: "terminal-session",
32171
32456
  capScope: "system",
32172
32457
  addonId: null,
32173
32458
  access: "create"
32174
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
+ },
32175
32484
  "terminalSession.listProfiles": {
32176
32485
  capName: "terminal-session",
32177
32486
  capScope: "system",
@@ -32190,12 +32499,30 @@ Object.freeze({
32190
32499
  addonId: null,
32191
32500
  access: "create"
32192
32501
  },
32502
+ "terminalSession.pullOutput": {
32503
+ capName: "terminal-session",
32504
+ capScope: "system",
32505
+ addonId: null,
32506
+ access: "create"
32507
+ },
32193
32508
  "terminalSession.resize": {
32194
32509
  capName: "terminal-session",
32195
32510
  capScope: "system",
32196
32511
  addonId: null,
32197
32512
  access: "create"
32198
32513
  },
32514
+ "terminalSession.setInstanceEnabled": {
32515
+ capName: "terminal-session",
32516
+ capScope: "system",
32517
+ addonId: null,
32518
+ access: "create"
32519
+ },
32520
+ "terminalSession.writeInput": {
32521
+ capName: "terminal-session",
32522
+ capScope: "system",
32523
+ addonId: null,
32524
+ access: "create"
32525
+ },
32199
32526
  "toast.onToast": {
32200
32527
  capName: "toast",
32201
32528
  capScope: "system",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-provider-gree",
3
- "version": "0.2.10",
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",