@camstack/addon-provider-homeassistant 1.2.651 → 1.2.652

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.
@@ -5975,7 +5975,7 @@ var ZodIssueCode = {
5975
5975
  var ZodFirstPartyTypeKind;
5976
5976
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
5977
5977
  //#endregion
5978
- //#region ../types/dist/sleep-QsoHs66J.mjs
5978
+ //#region ../types/dist/sleep-hmSP-eJt.mjs
5979
5979
  /**
5980
5980
  * The audio chunk plane's byte format, and the ONE expansion from a coded
5981
5981
  * window to float samples (D455).
@@ -9764,6 +9764,7 @@ var CAP_NAMES = Object.freeze([
9764
9764
  "backup",
9765
9765
  "battery",
9766
9766
  "binary",
9767
+ "board-key-source",
9767
9768
  "brightness",
9768
9769
  "broker",
9769
9770
  "button",
@@ -9885,6 +9886,7 @@ var CAP_NAMES = Object.freeze([
9885
9886
  "privacy-mask",
9886
9887
  "ptz",
9887
9888
  "ptz-autotrack",
9889
+ "pump-cycle",
9888
9890
  "reboot",
9889
9891
  "record-entries",
9890
9892
  "recording",
@@ -11177,18 +11179,6 @@ Object.freeze({
11177
11179
  "path": "pumpRunning",
11178
11180
  "valueType": "boolean"
11179
11181
  },
11180
- {
11181
- "path": "pumpIntervalEnabled",
11182
- "valueType": "boolean"
11183
- },
11184
- {
11185
- "path": "pumpOnTime",
11186
- "valueType": "number"
11187
- },
11188
- {
11189
- "path": "pumpOffTime",
11190
- "valueType": "number"
11191
- },
11192
11182
  {
11193
11183
  "path": "lastDrink",
11194
11184
  "valueType": "number"
@@ -11312,6 +11302,20 @@ Object.freeze({
11312
11302
  "valueType": "number"
11313
11303
  }
11314
11304
  ],
11305
+ "pump-cycle": [
11306
+ {
11307
+ "path": "enabled",
11308
+ "valueType": "boolean"
11309
+ },
11310
+ {
11311
+ "path": "onTime",
11312
+ "valueType": "number"
11313
+ },
11314
+ {
11315
+ "path": "offTime",
11316
+ "valueType": "number"
11317
+ }
11318
+ ],
11315
11319
  "recording-archive": [
11316
11320
  {
11317
11321
  "path": "deviceId",
@@ -19468,24 +19472,52 @@ var APPLIANCE_CAP_VOCABULARY = {
19468
19472
  args: { on: false }
19469
19473
  },
19470
19474
  {
19471
- id: "petFountain.intervalOn",
19472
- method: "setPumpInterval",
19475
+ id: "petFountain.resetDailyConsumption",
19476
+ method: "resetDailyConsumption",
19477
+ label: t("Clear daily consumption", "Azzera il consumo giornaliero"),
19478
+ phrase: t("Clear the daily water consumption of {device}", "Azzera il consumo giornaliero di acqua di {device}"),
19479
+ icon: "rotate-ccw"
19480
+ }
19481
+ ],
19482
+ state: [{
19483
+ kind: "boolean",
19484
+ field: "empty",
19485
+ label: t("Tank empty", "Serbatoio vuoto"),
19486
+ whenTrue: t("When the tank of {device} is empty", "Quando il serbatoio di {device} è vuoto"),
19487
+ whenFalse: t("When the tank of {device} is refilled", "Quando il serbatoio di {device} viene riempito"),
19488
+ icon: "droplet"
19489
+ }, {
19490
+ kind: "numeric",
19491
+ field: "waterLevel",
19492
+ quantity: t("the water level", "il livello dell’acqua"),
19493
+ label: t("Water level", "Livello dell’acqua"),
19494
+ unit: "%",
19495
+ icon: "droplets"
19496
+ }]
19497
+ },
19498
+ "pump-cycle": {
19499
+ scope: "device",
19500
+ noun: t("Pump cycle", "Ciclo della pompa"),
19501
+ actions: [
19502
+ {
19503
+ id: "pumpCycle.on",
19504
+ method: "setEnabled",
19473
19505
  label: t("Pump cycle on", "Ciclo pompa attivo"),
19474
19506
  phrase: t("Run the pump of {device} on its on/off cycle", "Fai lavorare la pompa di {device} a ciclo acceso/spento"),
19475
19507
  icon: "timer",
19476
19508
  args: { on: true }
19477
19509
  },
19478
19510
  {
19479
- id: "petFountain.intervalOff",
19480
- method: "setPumpInterval",
19511
+ id: "pumpCycle.off",
19512
+ method: "setEnabled",
19481
19513
  label: t("Pump cycle off", "Ciclo pompa spento"),
19482
19514
  phrase: t("Run the pump of {device} continuously", "Fai lavorare la pompa di {device} in continuo"),
19483
19515
  icon: "timer-off",
19484
19516
  args: { on: false }
19485
19517
  },
19486
19518
  {
19487
- id: "petFountain.pumpOnMinutes",
19488
- method: "setPumpOnMinutes",
19519
+ id: "pumpCycle.onMinutes",
19520
+ method: "setOnMinutes",
19489
19521
  label: t("Set pump run time", "Imposta il tempo di lavoro della pompa"),
19490
19522
  phrase: t("Set the pump of {device} to run {minutes} minutes per cycle", "Imposta la pompa di {device} a lavorare {minutes} minuti per ciclo"),
19491
19523
  icon: "timer",
@@ -19501,8 +19533,8 @@ var APPLIANCE_CAP_VOCABULARY = {
19501
19533
  }]
19502
19534
  },
19503
19535
  {
19504
- id: "petFountain.pumpOffMinutes",
19505
- method: "setPumpOffMinutes",
19536
+ id: "pumpCycle.offMinutes",
19537
+ method: "setOffMinutes",
19506
19538
  label: t("Set pump rest time", "Imposta il tempo di riposo della pompa"),
19507
19539
  phrase: t("Set the pump of {device} to rest {minutes} minutes per cycle", "Imposta la pompa di {device} a riposare {minutes} minuti per ciclo"),
19508
19540
  icon: "timer-off",
@@ -19516,29 +19548,15 @@ var APPLIANCE_CAP_VOCABULARY = {
19516
19548
  unit: "min"
19517
19549
  }
19518
19550
  }]
19519
- },
19520
- {
19521
- id: "petFountain.resetDailyConsumption",
19522
- method: "resetDailyConsumption",
19523
- label: t("Clear daily consumption", "Azzera il consumo giornaliero"),
19524
- phrase: t("Clear the daily water consumption of {device}", "Azzera il consumo giornaliero di acqua di {device}"),
19525
- icon: "rotate-ccw"
19526
19551
  }
19527
19552
  ],
19528
19553
  state: [{
19529
19554
  kind: "boolean",
19530
- field: "empty",
19531
- label: t("Tank empty", "Serbatoio vuoto"),
19532
- whenTrue: t("When the tank of {device} is empty", "Quando il serbatoio di {device} è vuoto"),
19533
- whenFalse: t("When the tank of {device} is refilled", "Quando il serbatoio di {device} viene riempito"),
19534
- icon: "droplet"
19535
- }, {
19536
- kind: "numeric",
19537
- field: "waterLevel",
19538
- quantity: t("the water level", "il livello dell’acqua"),
19539
- label: t("Water level", "Livello dell’acqua"),
19540
- unit: "%",
19541
- icon: "droplets"
19555
+ field: "enabled",
19556
+ label: t("Pump cycle", "Ciclo pompa"),
19557
+ whenTrue: t("When {device} starts running its pump on a cycle", "Quando {device} inizia a far lavorare la pompa a ciclo"),
19558
+ whenFalse: t("When {device} runs its pump continuously", "Quando {device} fa lavorare la pompa in continuo"),
19559
+ icon: "timer"
19542
19560
  }]
19543
19561
  },
19544
19562
  "media-player": {
@@ -21431,6 +21449,7 @@ var SYSTEM_CAP_VOCABULARY = {
21431
21449
  "audio-analyzer": system(PIPELINE),
21432
21450
  "audio-codec": system(INTERNAL),
21433
21451
  "auth-provider": system(IDENTITY),
21452
+ "board-key-source": system(INTERNAL),
21434
21453
  backup: system("system backups — run and restored from the Backups page"),
21435
21454
  broker: system("message-broker connections — configured, not actuated"),
21436
21455
  "calendar-source": system(INTERNAL),
@@ -46685,6 +46704,63 @@ var binaryCapability = {
46685
46704
  volatileStateFields: ["lastChangedAt"]
46686
46705
  };
46687
46706
  /**
46707
+ * Why a board key could not be read. Typed so a caller reports the cause and
46708
+ * never treats "could not read" as "has no key" (D49).
46709
+ */
46710
+ var BoardKeyFailureReasonSchema = _enum([
46711
+ "unknown-source",
46712
+ "not-admin",
46713
+ "no-builder",
46714
+ "no-ingress-url",
46715
+ "unreachable",
46716
+ "unknown-board",
46717
+ "no-encryption-key",
46718
+ "unreadable-config"
46719
+ ]);
46720
+ var BoardKeySourceSchema = object({
46721
+ sourceId: string(),
46722
+ name: string()
46723
+ });
46724
+ var BoardKeyBoardSchema = object({
46725
+ /** The builder's file name, e.g. `kitchen.yaml`: the handle `getBoardKey` takes. */
46726
+ configuration: string(),
46727
+ /** The node name the builder gives the board. */
46728
+ name: string(),
46729
+ /** The address the builder knows the board by, when it has one. */
46730
+ address: string().nullable()
46731
+ });
46732
+ var BoardKeyFailureSchema = object({
46733
+ ok: literal(false),
46734
+ reason: BoardKeyFailureReasonSchema,
46735
+ detail: string().optional()
46736
+ });
46737
+ var ListBoardsResultSchema = discriminatedUnion("ok", [object({
46738
+ ok: literal(true),
46739
+ boards: array(BoardKeyBoardSchema).readonly()
46740
+ }), BoardKeyFailureSchema]);
46741
+ var GetBoardKeyResultSchema = discriminatedUnion("ok", [object({
46742
+ ok: literal(true),
46743
+ key: string()
46744
+ }), BoardKeyFailureSchema]);
46745
+ /**
46746
+ * Where a device board's API encryption key can be read from (the ESPHome
46747
+ * builder that runs beside a Home Assistant). Admin only: `getBoardKey`
46748
+ * returns a credential, and nothing else the source holds ever crosses.
46749
+ */
46750
+ var boardKeySourceCapability = {
46751
+ name: "board-key-source",
46752
+ scope: "system",
46753
+ mode: "collection",
46754
+ methods: {
46755
+ listSources: method(_void(), array(BoardKeySourceSchema).readonly(), { auth: "admin" }),
46756
+ listBoards: method(object({ sourceId: string().min(1) }), ListBoardsResultSchema, { auth: "admin" }),
46757
+ getBoardKey: method(object({
46758
+ sourceId: string().min(1),
46759
+ configuration: string().min(1)
46760
+ }), GetBoardKeyResultSchema, { auth: "admin" })
46761
+ }
46762
+ };
46763
+ /**
46688
46764
  * Dimmable-light brightness control. Co-exists with `switch` on the
46689
46765
  * same device — the switch toggles on/off, this cap sets the level
46690
46766
  * applied when the light is on. Drivers map their per-vendor dim
@@ -53428,7 +53504,7 @@ var DishwasherStatusSchema = object({
53428
53504
  /** Ms epoch of the last value received from the appliance; 0 = never. */
53429
53505
  lastFetchedAt: number()
53430
53506
  });
53431
- var DeviceIdSchema$1 = number().int().nonnegative();
53507
+ var DeviceIdSchema$2 = number().int().nonnegative();
53432
53508
  /** A value a program option or setting can take. */
53433
53509
  var DishwasherValueSchema = union([
53434
53510
  boolean(),
@@ -53503,77 +53579,77 @@ var dishwasherCapability = {
53503
53579
  * option feature keys; each is checked against the program's constraints.
53504
53580
  */
53505
53581
  start: method(object({
53506
- deviceId: DeviceIdSchema$1,
53582
+ deviceId: DeviceIdSchema$2,
53507
53583
  program: string().min(1).optional(),
53508
53584
  options: record(string(), DishwasherValueSchema).optional()
53509
53585
  }), _void(), {
53510
53586
  kind: "mutation",
53511
53587
  auth: "protected"
53512
53588
  }),
53513
- pause: method(object({ deviceId: DeviceIdSchema$1 }), _void(), {
53589
+ pause: method(object({ deviceId: DeviceIdSchema$2 }), _void(), {
53514
53590
  kind: "mutation",
53515
53591
  auth: "protected"
53516
53592
  }),
53517
- resume: method(object({ deviceId: DeviceIdSchema$1 }), _void(), {
53593
+ resume: method(object({ deviceId: DeviceIdSchema$2 }), _void(), {
53518
53594
  kind: "mutation",
53519
53595
  auth: "protected"
53520
53596
  }),
53521
- stop: method(object({ deviceId: DeviceIdSchema$1 }), _void(), {
53597
+ stop: method(object({ deviceId: DeviceIdSchema$2 }), _void(), {
53522
53598
  kind: "mutation",
53523
53599
  auth: "protected"
53524
53600
  }),
53525
53601
  /** Select (not start) a program; refused when the appliance does not offer it. */
53526
53602
  setProgram: method(object({
53527
- deviceId: DeviceIdSchema$1,
53603
+ deviceId: DeviceIdSchema$2,
53528
53604
  program: string().min(1)
53529
53605
  }), _void(), {
53530
53606
  kind: "mutation",
53531
53607
  auth: "protected"
53532
53608
  }),
53533
53609
  setPower: method(object({
53534
- deviceId: DeviceIdSchema$1,
53610
+ deviceId: DeviceIdSchema$2,
53535
53611
  on: boolean()
53536
53612
  }), _void(), {
53537
53613
  kind: "mutation",
53538
53614
  auth: "protected"
53539
53615
  }),
53540
53616
  setHalfLoad: method(object({
53541
- deviceId: DeviceIdSchema$1,
53617
+ deviceId: DeviceIdSchema$2,
53542
53618
  on: boolean()
53543
53619
  }), _void(), {
53544
53620
  kind: "mutation",
53545
53621
  auth: "protected"
53546
53622
  }),
53547
53623
  setHygienePlus: method(object({
53548
- deviceId: DeviceIdSchema$1,
53624
+ deviceId: DeviceIdSchema$2,
53549
53625
  on: boolean()
53550
53626
  }), _void(), {
53551
53627
  kind: "mutation",
53552
53628
  auth: "protected"
53553
53629
  }),
53554
53630
  setExtraDry: method(object({
53555
- deviceId: DeviceIdSchema$1,
53631
+ deviceId: DeviceIdSchema$2,
53556
53632
  on: boolean()
53557
53633
  }), _void(), {
53558
53634
  kind: "mutation",
53559
53635
  auth: "protected"
53560
53636
  }),
53561
53637
  setIntensiveZone: method(object({
53562
- deviceId: DeviceIdSchema$1,
53638
+ deviceId: DeviceIdSchema$2,
53563
53639
  on: boolean()
53564
53640
  }), _void(), {
53565
53641
  kind: "mutation",
53566
53642
  auth: "protected"
53567
53643
  }),
53568
53644
  setVarioSpeedPlus: method(object({
53569
- deviceId: DeviceIdSchema$1,
53645
+ deviceId: DeviceIdSchema$2,
53570
53646
  on: boolean()
53571
53647
  }), _void(), {
53572
53648
  kind: "mutation",
53573
53649
  auth: "protected"
53574
53650
  }),
53575
53651
  setChildLock: method(object({
53576
- deviceId: DeviceIdSchema$1,
53652
+ deviceId: DeviceIdSchema$2,
53577
53653
  on: boolean()
53578
53654
  }), _void(), {
53579
53655
  kind: "mutation",
@@ -53585,7 +53661,7 @@ var dishwasherCapability = {
53585
53661
  * its declared range / members.
53586
53662
  */
53587
53663
  setOption: method(object({
53588
- deviceId: DeviceIdSchema$1,
53664
+ deviceId: DeviceIdSchema$2,
53589
53665
  key: string().min(1),
53590
53666
  value: DishwasherValueSchema
53591
53667
  }), _void(), {
@@ -53593,7 +53669,7 @@ var dishwasherCapability = {
53593
53669
  auth: "protected"
53594
53670
  }),
53595
53671
  /** What this appliance can do, from its own description — the UI is derived from it. */
53596
- getOptions: method(object({ deviceId: DeviceIdSchema$1 }), DishwasherOptionsSchema, { auth: "protected" })
53672
+ getOptions: method(object({ deviceId: DeviceIdSchema$2 }), DishwasherOptionsSchema, { auth: "protected" })
53597
53673
  },
53598
53674
  status: {
53599
53675
  schema: DishwasherStatusSchema,
@@ -68942,7 +69018,7 @@ var petFeederCapability = {
68942
69018
  /**
68943
69019
  * Pet water-fountain cap. Models the telemetry and the control surface of a
68944
69020
  * circulating drinking fountain: how much water is in the tank, how much the
68945
- * pet drank, whether the pump runs and on what duty cycle.
69021
+ * pet drank, whether the pump runs.
68946
69022
  *
68947
69023
  * It has no native vendor provider of its own: a fountain reaches CamStack as
68948
69024
  * a container of loose entities (a pump switch, two number boxes, a "filter
@@ -68958,8 +69034,10 @@ var petFeederCapability = {
68958
69034
  * never here. Every reading may be `null`: a source that is offline or does
68959
69035
  * not report is unknown, never zero.
68960
69036
  *
68961
- * The filter is not a field of this cap: it is an item of the `consumables`
68962
- * cap on the same device (kind `wear`), reset by the same forward mechanism.
69037
+ * The pump's on/off duty cycle is model-specific and lives in the optional
69038
+ * `pump-cycle` cap. The filter, the cleaning and the water change are not
69039
+ * fields of this cap: they are items of the `consumables` cap on the same
69040
+ * device (kind `wear`), reset by the same forward mechanism.
68963
69041
  */
68964
69042
  var PetFountainStatusSchema = object({
68965
69043
  /** Water in the tank, 0..100 (%). Null while the source has not reported. */
@@ -68970,27 +69048,20 @@ var PetFountainStatusSchema = object({
68970
69048
  empty: boolean().nullable(),
68971
69049
  /** True while the pump is running. Null while unknown. */
68972
69050
  pumpRunning: boolean().nullable(),
68973
- /** True when the pump works on an on/off duty cycle rather than continuously. */
68974
- pumpIntervalEnabled: boolean().nullable(),
68975
- /** How long the pump runs per cycle, in seconds. */
68976
- pumpOnTime: number().min(0).nullable().meta(readingMeta("duration")),
68977
- /** How long the pump rests per cycle, in seconds. */
68978
- pumpOffTime: number().min(0).nullable().meta(readingMeta("duration")),
68979
69051
  /** Water drunk in the last drink, in litres. */
68980
69052
  lastDrink: number().min(0).nullable().meta(readingMeta("volume")),
68981
69053
  /** Water drunk in the current hour, in litres. */
68982
69054
  currentHourDrink: number().min(0).nullable().meta(readingMeta("volume")),
68983
69055
  /** Water drunk over the last 24 hours (rolling), in litres. */
68984
69056
  last24hDrink: number().min(0).nullable().meta(readingMeta("volume")),
68985
- /** Water drunk since local midnight, in litres. */
69057
+ /** Water drunk since local midnight, in litres. Null when the fountain has no such sensor. */
68986
69058
  todayDrink: number().min(0).nullable().meta(readingMeta("volume")),
68987
69059
  /** Decoded fault message. Null means healthy; a non-null string is an active fault. */
68988
69060
  error: string().nullable(),
68989
69061
  /** Ms epoch when the slice was last refreshed. */
68990
69062
  lastFetchedAt: number()
68991
69063
  });
68992
- var DeviceIdSchema = number().int().nonnegative();
68993
- var MinutesSchema = number().int().min(0);
69064
+ var DeviceIdSchema$1 = number().int().nonnegative();
68994
69065
  var petFountainCapability = {
68995
69066
  name: "pet-fountain",
68996
69067
  scope: "device",
@@ -69000,38 +69071,14 @@ var petFountainCapability = {
69000
69071
  methods: {
69001
69072
  /** Start or stop the pump. */
69002
69073
  setPump: method(object({
69003
- deviceId: DeviceIdSchema,
69004
- on: boolean()
69005
- }), _void(), {
69006
- kind: "mutation",
69007
- auth: "protected"
69008
- }),
69009
- /** Switch the on/off duty cycle on or off (off = the pump runs continuously). */
69010
- setPumpInterval: method(object({
69011
- deviceId: DeviceIdSchema,
69074
+ deviceId: DeviceIdSchema$1,
69012
69075
  on: boolean()
69013
69076
  }), _void(), {
69014
69077
  kind: "mutation",
69015
69078
  auth: "protected"
69016
69079
  }),
69017
- /** Set how many minutes the pump runs per cycle. */
69018
- setPumpOnMinutes: method(object({
69019
- deviceId: DeviceIdSchema,
69020
- minutes: MinutesSchema
69021
- }), _void(), {
69022
- kind: "mutation",
69023
- auth: "protected"
69024
- }),
69025
- /** Set how many minutes the pump rests per cycle. */
69026
- setPumpOffMinutes: method(object({
69027
- deviceId: DeviceIdSchema,
69028
- minutes: MinutesSchema
69029
- }), _void(), {
69030
- kind: "mutation",
69031
- auth: "protected"
69032
- }),
69033
69080
  /** Clear the rolling daily consumption counters on the device. */
69034
- resetDailyConsumption: method(object({ deviceId: DeviceIdSchema }), _void(), {
69081
+ resetDailyConsumption: method(object({ deviceId: DeviceIdSchema$1 }), _void(), {
69035
69082
  kind: "mutation",
69036
69083
  auth: "protected"
69037
69084
  })
@@ -71364,6 +71411,79 @@ var ptzAutotrackCapability = {
71364
71411
  */
71365
71412
  history: "none"
71366
71413
  };
71414
+ /**
71415
+ * The on/off duty cycle of a pet fountain's pump. Some models run the pump
71416
+ * continuously and have nothing to configure; others can alternate a run time
71417
+ * and a rest time. That is model-specific, so it is its own optional cap on the
71418
+ * fountain device: a fountain without cycle entities simply never composes it
71419
+ * (planning#366), and the `pet-fountain` cap stays the model-independent core.
71420
+ *
71421
+ * Like `pet-fountain` it has no native vendor provider: an operator BUILDS the
71422
+ * cycle from loose entities (a cycle switch and two number boxes) and every
71423
+ * method is a forward to one source entity (D659, D967). Durations are stored
71424
+ * in SECONDS (D944); a number box that cannot be read back leaves them `null`
71425
+ * — unknown, never zero (D393).
71426
+ */
71427
+ var PumpCycleStatusSchema = object({
71428
+ /** True when the pump works on the on/off cycle, false when it runs continuously. Null while unknown. */
71429
+ enabled: boolean().nullable(),
71430
+ /** How long the pump runs per cycle, in seconds. Null while unknown. */
71431
+ onTime: number().min(0).nullable().meta(readingMeta("duration")),
71432
+ /** How long the pump rests per cycle, in seconds. Null while unknown. */
71433
+ offTime: number().min(0).nullable().meta(readingMeta("duration")),
71434
+ /** Ms epoch when the slice was last refreshed. */
71435
+ lastFetchedAt: number()
71436
+ });
71437
+ var DeviceIdSchema = number().int().nonnegative();
71438
+ var MinutesSchema = number().int().min(0);
71439
+ var pumpCycleCapability = {
71440
+ name: "pump-cycle",
71441
+ scope: "device",
71442
+ deviceNative: true,
71443
+ mode: "singleton",
71444
+ deviceTypes: [DeviceType.PetFountain],
71445
+ methods: {
71446
+ /** Switch the on/off duty cycle on or off (off = the pump runs continuously). */
71447
+ setEnabled: method(object({
71448
+ deviceId: DeviceIdSchema,
71449
+ on: boolean()
71450
+ }), _void(), {
71451
+ kind: "mutation",
71452
+ auth: "protected"
71453
+ }),
71454
+ /** Set how many minutes the pump runs per cycle. */
71455
+ setOnMinutes: method(object({
71456
+ deviceId: DeviceIdSchema,
71457
+ minutes: MinutesSchema
71458
+ }), _void(), {
71459
+ kind: "mutation",
71460
+ auth: "protected"
71461
+ }),
71462
+ /** Set how many minutes the pump rests per cycle. */
71463
+ setOffMinutes: method(object({
71464
+ deviceId: DeviceIdSchema,
71465
+ minutes: MinutesSchema
71466
+ }), _void(), {
71467
+ kind: "mutation",
71468
+ auth: "protected"
71469
+ })
71470
+ },
71471
+ status: {
71472
+ schema: PumpCycleStatusSchema,
71473
+ kind: "push"
71474
+ },
71475
+ /** Runtime-state slice — mirrored by the kernel; the hero card reads it whole. */
71476
+ runtimeState: PumpCycleStatusSchema,
71477
+ /**
71478
+ * Runtime-state durability: **session** — live appliance state re-published on connect.
71479
+ *
71480
+ * See `RuntimeStateDurability`. Enforced by
71481
+ * `scripts/check-runtime-state-durability.ts`.
71482
+ */
71483
+ durability: "session",
71484
+ /** History (D850): a duty-cycle setting is not a series worth recording. */
71485
+ history: "none"
71486
+ };
71367
71487
  DeviceType.Camera, DeviceType.Sensor, DeviceType.Switch, DeviceType.Gateway, method(object({ deviceId: number().int().nonnegative() }), object({ success: literal(true) }), {
71368
71488
  kind: "mutation",
71369
71489
  auth: "admin"
@@ -80660,6 +80780,7 @@ var DEVICE_LOCAL_STATE_CAPS = {
80660
80780
  pressureSensor: pressureSensorCapability,
80661
80781
  privacyMask: privacyMaskCapability,
80662
80782
  ptzAutotrack: ptzAutotrackCapability,
80783
+ pumpCycle: pumpCycleCapability,
80663
80784
  recordingOnboard: recordingOnboardCapability,
80664
80785
  recordingSignal: recordingSignalCapability,
80665
80786
  runningState: runningStateCapability,
@@ -82844,6 +82965,27 @@ Object.freeze({
82844
82965
  access: "view",
82845
82966
  role: "viewer"
82846
82967
  },
82968
+ "boardKeySource.getBoardKey": {
82969
+ capName: "board-key-source",
82970
+ capScope: "system",
82971
+ addonId: null,
82972
+ access: "view",
82973
+ role: "admin"
82974
+ },
82975
+ "boardKeySource.listBoards": {
82976
+ capName: "board-key-source",
82977
+ capScope: "system",
82978
+ addonId: null,
82979
+ access: "view",
82980
+ role: "admin"
82981
+ },
82982
+ "boardKeySource.listSources": {
82983
+ capName: "board-key-source",
82984
+ capScope: "system",
82985
+ addonId: null,
82986
+ access: "view",
82987
+ role: "admin"
82988
+ },
82847
82989
  "brightness.getStatus": {
82848
82990
  capName: "brightness",
82849
82991
  capScope: "device",
@@ -87667,27 +87809,6 @@ Object.freeze({
87667
87809
  access: "create",
87668
87810
  role: "viewer"
87669
87811
  },
87670
- "petFountain.setPumpInterval": {
87671
- capName: "pet-fountain",
87672
- capScope: "device",
87673
- addonId: null,
87674
- access: "create",
87675
- role: "viewer"
87676
- },
87677
- "petFountain.setPumpOffMinutes": {
87678
- capName: "pet-fountain",
87679
- capScope: "device",
87680
- addonId: null,
87681
- access: "create",
87682
- role: "viewer"
87683
- },
87684
- "petFountain.setPumpOnMinutes": {
87685
- capName: "pet-fountain",
87686
- capScope: "device",
87687
- addonId: null,
87688
- access: "create",
87689
- role: "viewer"
87690
- },
87691
87812
  "pipelineAnalytics.addRetrainFrameFromRecording": {
87692
87813
  capName: "pipeline-analytics",
87693
87814
  capScope: "device",
@@ -89466,6 +89587,34 @@ Object.freeze({
89466
89587
  access: "create",
89467
89588
  role: "admin"
89468
89589
  },
89590
+ "pumpCycle.getStatus": {
89591
+ capName: "pump-cycle",
89592
+ capScope: "device",
89593
+ addonId: null,
89594
+ access: "view",
89595
+ role: "viewer"
89596
+ },
89597
+ "pumpCycle.setEnabled": {
89598
+ capName: "pump-cycle",
89599
+ capScope: "device",
89600
+ addonId: null,
89601
+ access: "create",
89602
+ role: "viewer"
89603
+ },
89604
+ "pumpCycle.setOffMinutes": {
89605
+ capName: "pump-cycle",
89606
+ capScope: "device",
89607
+ addonId: null,
89608
+ access: "create",
89609
+ role: "viewer"
89610
+ },
89611
+ "pumpCycle.setOnMinutes": {
89612
+ capName: "pump-cycle",
89613
+ capScope: "device",
89614
+ addonId: null,
89615
+ access: "create",
89616
+ role: "viewer"
89617
+ },
89469
89618
  "reboot.reboot": {
89470
89619
  capName: "reboot",
89471
89620
  capScope: "device",
@@ -94021,21 +94170,6 @@ Object.freeze({
94021
94170
  form: "single",
94022
94171
  optional: false
94023
94172
  }],
94024
- "petFountain.setPumpInterval": [{
94025
- name: "deviceId",
94026
- form: "single",
94027
- optional: false
94028
- }],
94029
- "petFountain.setPumpOffMinutes": [{
94030
- name: "deviceId",
94031
- form: "single",
94032
- optional: false
94033
- }],
94034
- "petFountain.setPumpOnMinutes": [{
94035
- name: "deviceId",
94036
- form: "single",
94037
- optional: false
94038
- }],
94039
94173
  "pipelineAnalytics.addRetrainFrameFromRecording": [{
94040
94174
  name: "deviceId",
94041
94175
  form: "single",
@@ -94671,6 +94805,26 @@ Object.freeze({
94671
94805
  form: "single",
94672
94806
  optional: false
94673
94807
  }],
94808
+ "pumpCycle.getStatus": [{
94809
+ name: "deviceId",
94810
+ form: "single",
94811
+ optional: false
94812
+ }],
94813
+ "pumpCycle.setEnabled": [{
94814
+ name: "deviceId",
94815
+ form: "single",
94816
+ optional: false
94817
+ }],
94818
+ "pumpCycle.setOffMinutes": [{
94819
+ name: "deviceId",
94820
+ form: "single",
94821
+ optional: false
94822
+ }],
94823
+ "pumpCycle.setOnMinutes": [{
94824
+ name: "deviceId",
94825
+ form: "single",
94826
+ optional: false
94827
+ }],
94674
94828
  "reboot.reboot": [{
94675
94829
  name: "deviceId",
94676
94830
  form: "single",
@@ -97525,6 +97679,12 @@ Object.defineProperty(exports, "binaryCapability", {
97525
97679
  return binaryCapability;
97526
97680
  }
97527
97681
  });
97682
+ Object.defineProperty(exports, "boardKeySourceCapability", {
97683
+ enumerable: true,
97684
+ get: function() {
97685
+ return boardKeySourceCapability;
97686
+ }
97687
+ });
97528
97688
  Object.defineProperty(exports, "boolean", {
97529
97689
  enumerable: true,
97530
97690
  get: function() {