@camstack/addon-agent-ui 1.2.315 → 1.2.317

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.
package/dist/addon.js CHANGED
@@ -5843,7 +5843,7 @@ var ZodIssueCode = {
5843
5843
  var ZodFirstPartyTypeKind;
5844
5844
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
5845
5845
  //#endregion
5846
- //#region ../types/dist/sleep-QsoHs66J.mjs
5846
+ //#region ../types/dist/sleep-hmSP-eJt.mjs
5847
5847
  /**
5848
5848
  * The audio chunk plane's byte format, and the ONE expansion from a coded
5849
5849
  * window to float samples (D455).
@@ -9282,6 +9282,7 @@ var CAP_NAMES = Object.freeze([
9282
9282
  "backup",
9283
9283
  "battery",
9284
9284
  "binary",
9285
+ "board-key-source",
9285
9286
  "brightness",
9286
9287
  "broker",
9287
9288
  "button",
@@ -9403,6 +9404,7 @@ var CAP_NAMES = Object.freeze([
9403
9404
  "privacy-mask",
9404
9405
  "ptz",
9405
9406
  "ptz-autotrack",
9407
+ "pump-cycle",
9406
9408
  "reboot",
9407
9409
  "record-entries",
9408
9410
  "recording",
@@ -10695,18 +10697,6 @@ Object.freeze({
10695
10697
  "path": "pumpRunning",
10696
10698
  "valueType": "boolean"
10697
10699
  },
10698
- {
10699
- "path": "pumpIntervalEnabled",
10700
- "valueType": "boolean"
10701
- },
10702
- {
10703
- "path": "pumpOnTime",
10704
- "valueType": "number"
10705
- },
10706
- {
10707
- "path": "pumpOffTime",
10708
- "valueType": "number"
10709
- },
10710
10700
  {
10711
10701
  "path": "lastDrink",
10712
10702
  "valueType": "number"
@@ -10830,6 +10820,20 @@ Object.freeze({
10830
10820
  "valueType": "number"
10831
10821
  }
10832
10822
  ],
10823
+ "pump-cycle": [
10824
+ {
10825
+ "path": "enabled",
10826
+ "valueType": "boolean"
10827
+ },
10828
+ {
10829
+ "path": "onTime",
10830
+ "valueType": "number"
10831
+ },
10832
+ {
10833
+ "path": "offTime",
10834
+ "valueType": "number"
10835
+ }
10836
+ ],
10833
10837
  "recording-archive": [
10834
10838
  {
10835
10839
  "path": "deviceId",
@@ -12493,6 +12497,73 @@ var NodeColorIdSchema = _enum([
12493
12497
  "node-g",
12494
12498
  "node-h"
12495
12499
  ]);
12500
+ //#endregion
12501
+ //#region ../types/dist/index.mjs
12502
+ var SMTP_INBOUND_DEFAULT_PORT = 2525;
12503
+ var SMTP_INBOUND_DEFAULT_DOMAIN = "camstack.local";
12504
+ var SMTP_INBOUND_DEFAULT_MAX_MESSAGE_BYTES = 25 * 1024 * 1024;
12505
+ /** The text excerpt a message carries on the bus. */
12506
+ var SMTP_INBOUND_TEXT_MAX_CHARS = 4096;
12507
+ var PortSchema = number().int().min(1).max(65535);
12508
+ /** A recipient local-part: what stands before the `@`. */
12509
+ var SmtpRecipientSchema = string().min(1).max(64).regex(/^[A-Za-z0-9._+-]+$/);
12510
+ object({
12511
+ port: PortSchema.default(SMTP_INBOUND_DEFAULT_PORT),
12512
+ bindHost: string().min(1).default("0.0.0.0"),
12513
+ domain: string().min(1).default(SMTP_INBOUND_DEFAULT_DOMAIN),
12514
+ requireAuth: boolean().default(true),
12515
+ username: string().default(""),
12516
+ password: string().default("").meta({ secret: true }),
12517
+ starttls: boolean().default(false),
12518
+ maxMessageBytes: number().int().positive().default(SMTP_INBOUND_DEFAULT_MAX_MESSAGE_BYTES)
12519
+ });
12520
+ object({
12521
+ host: string().min(1).nullable(),
12522
+ hostReason: string().nullable(),
12523
+ port: PortSchema,
12524
+ domain: string().min(1),
12525
+ requireAuth: boolean(),
12526
+ username: string(),
12527
+ password: string(),
12528
+ starttls: boolean()
12529
+ });
12530
+ object({
12531
+ recipients: array(SmtpRecipientSchema).min(1),
12532
+ /**
12533
+ * Who is subscribing. A second `subscribe` with the same id REPLACES that subscriber's
12534
+ * recipients (the way a consumer that restarted, or lost a device, declares its set again);
12535
+ * a recipient held by another subscriber is refused with `smtp-inbound/recipient-claimed`.
12536
+ * Absent, the subscriber is anonymous and unique.
12537
+ */
12538
+ subscriberId: string().min(1).max(64).optional()
12539
+ });
12540
+ var SmtpInboundAttachmentSchema = object({
12541
+ filename: string(),
12542
+ contentType: string(),
12543
+ bytes: number().int().nonnegative()
12544
+ });
12545
+ /** The payload of one `broker.message` (the key is the recipient local-part). */
12546
+ var SmtpInboundMessageSchema = object({
12547
+ /** Monotonic per mailbox; a gap tells a consumer it missed an event. */
12548
+ seq: number().int().positive(),
12549
+ messageId: string(),
12550
+ receivedAt: number().int().nonnegative(),
12551
+ from: string(),
12552
+ to: string(),
12553
+ subject: string(),
12554
+ text: string().max(SMTP_INBOUND_TEXT_MAX_CHARS),
12555
+ attachments: array(SmtpInboundAttachmentSchema)
12556
+ });
12557
+ object({
12558
+ /** The newest seq issued so far (0 before any mail). */
12559
+ lastSeq: number().int().nonnegative(),
12560
+ /** The oldest seq still retained; messages below it are gone. */
12561
+ oldestSeq: number().int().nonnegative(),
12562
+ messages: array(object({
12563
+ key: string(),
12564
+ message: SmtpInboundMessageSchema
12565
+ }))
12566
+ });
12496
12567
  new Set([
12497
12568
  "track",
12498
12569
  "face",
@@ -18765,24 +18836,52 @@ var APPLIANCE_CAP_VOCABULARY = {
18765
18836
  args: { on: false }
18766
18837
  },
18767
18838
  {
18768
- id: "petFountain.intervalOn",
18769
- method: "setPumpInterval",
18839
+ id: "petFountain.resetDailyConsumption",
18840
+ method: "resetDailyConsumption",
18841
+ label: t("Clear daily consumption", "Azzera il consumo giornaliero"),
18842
+ phrase: t("Clear the daily water consumption of {device}", "Azzera il consumo giornaliero di acqua di {device}"),
18843
+ icon: "rotate-ccw"
18844
+ }
18845
+ ],
18846
+ state: [{
18847
+ kind: "boolean",
18848
+ field: "empty",
18849
+ label: t("Tank empty", "Serbatoio vuoto"),
18850
+ whenTrue: t("When the tank of {device} is empty", "Quando il serbatoio di {device} è vuoto"),
18851
+ whenFalse: t("When the tank of {device} is refilled", "Quando il serbatoio di {device} viene riempito"),
18852
+ icon: "droplet"
18853
+ }, {
18854
+ kind: "numeric",
18855
+ field: "waterLevel",
18856
+ quantity: t("the water level", "il livello dell’acqua"),
18857
+ label: t("Water level", "Livello dell’acqua"),
18858
+ unit: "%",
18859
+ icon: "droplets"
18860
+ }]
18861
+ },
18862
+ "pump-cycle": {
18863
+ scope: "device",
18864
+ noun: t("Pump cycle", "Ciclo della pompa"),
18865
+ actions: [
18866
+ {
18867
+ id: "pumpCycle.on",
18868
+ method: "setEnabled",
18770
18869
  label: t("Pump cycle on", "Ciclo pompa attivo"),
18771
18870
  phrase: t("Run the pump of {device} on its on/off cycle", "Fai lavorare la pompa di {device} a ciclo acceso/spento"),
18772
18871
  icon: "timer",
18773
18872
  args: { on: true }
18774
18873
  },
18775
18874
  {
18776
- id: "petFountain.intervalOff",
18777
- method: "setPumpInterval",
18875
+ id: "pumpCycle.off",
18876
+ method: "setEnabled",
18778
18877
  label: t("Pump cycle off", "Ciclo pompa spento"),
18779
18878
  phrase: t("Run the pump of {device} continuously", "Fai lavorare la pompa di {device} in continuo"),
18780
18879
  icon: "timer-off",
18781
18880
  args: { on: false }
18782
18881
  },
18783
18882
  {
18784
- id: "petFountain.pumpOnMinutes",
18785
- method: "setPumpOnMinutes",
18883
+ id: "pumpCycle.onMinutes",
18884
+ method: "setOnMinutes",
18786
18885
  label: t("Set pump run time", "Imposta il tempo di lavoro della pompa"),
18787
18886
  phrase: t("Set the pump of {device} to run {minutes} minutes per cycle", "Imposta la pompa di {device} a lavorare {minutes} minuti per ciclo"),
18788
18887
  icon: "timer",
@@ -18798,8 +18897,8 @@ var APPLIANCE_CAP_VOCABULARY = {
18798
18897
  }]
18799
18898
  },
18800
18899
  {
18801
- id: "petFountain.pumpOffMinutes",
18802
- method: "setPumpOffMinutes",
18900
+ id: "pumpCycle.offMinutes",
18901
+ method: "setOffMinutes",
18803
18902
  label: t("Set pump rest time", "Imposta il tempo di riposo della pompa"),
18804
18903
  phrase: t("Set the pump of {device} to rest {minutes} minutes per cycle", "Imposta la pompa di {device} a riposare {minutes} minuti per ciclo"),
18805
18904
  icon: "timer-off",
@@ -18813,29 +18912,15 @@ var APPLIANCE_CAP_VOCABULARY = {
18813
18912
  unit: "min"
18814
18913
  }
18815
18914
  }]
18816
- },
18817
- {
18818
- id: "petFountain.resetDailyConsumption",
18819
- method: "resetDailyConsumption",
18820
- label: t("Clear daily consumption", "Azzera il consumo giornaliero"),
18821
- phrase: t("Clear the daily water consumption of {device}", "Azzera il consumo giornaliero di acqua di {device}"),
18822
- icon: "rotate-ccw"
18823
18915
  }
18824
18916
  ],
18825
18917
  state: [{
18826
18918
  kind: "boolean",
18827
- field: "empty",
18828
- label: t("Tank empty", "Serbatoio vuoto"),
18829
- whenTrue: t("When the tank of {device} is empty", "Quando il serbatoio di {device} è vuoto"),
18830
- whenFalse: t("When the tank of {device} is refilled", "Quando il serbatoio di {device} viene riempito"),
18831
- icon: "droplet"
18832
- }, {
18833
- kind: "numeric",
18834
- field: "waterLevel",
18835
- quantity: t("the water level", "il livello dell’acqua"),
18836
- label: t("Water level", "Livello dell’acqua"),
18837
- unit: "%",
18838
- icon: "droplets"
18919
+ field: "enabled",
18920
+ label: t("Pump cycle", "Ciclo pompa"),
18921
+ whenTrue: t("When {device} starts running its pump on a cycle", "Quando {device} inizia a far lavorare la pompa a ciclo"),
18922
+ whenFalse: t("When {device} runs its pump continuously", "Quando {device} fa lavorare la pompa in continuo"),
18923
+ icon: "timer"
18839
18924
  }]
18840
18925
  },
18841
18926
  "media-player": {
@@ -20728,6 +20813,7 @@ var SYSTEM_CAP_VOCABULARY = {
20728
20813
  "audio-analyzer": system(PIPELINE),
20729
20814
  "audio-codec": system(INTERNAL),
20730
20815
  "auth-provider": system(IDENTITY),
20816
+ "board-key-source": system(INTERNAL),
20731
20817
  backup: system("system backups — run and restored from the Backups page"),
20732
20818
  broker: system("message-broker connections — configured, not actuated"),
20733
20819
  "calendar-source": system(INTERNAL),
@@ -45171,6 +45257,49 @@ object({
45171
45257
  lastChangedAt: number()
45172
45258
  });
45173
45259
  DeviceType.Sensor;
45260
+ /**
45261
+ * Why a board key could not be read. Typed so a caller reports the cause and
45262
+ * never treats "could not read" as "has no key" (D49).
45263
+ */
45264
+ var BoardKeyFailureReasonSchema = _enum([
45265
+ "unknown-source",
45266
+ "not-admin",
45267
+ "no-builder",
45268
+ "no-ingress-url",
45269
+ "unreachable",
45270
+ "unknown-board",
45271
+ "no-encryption-key",
45272
+ "unreadable-config"
45273
+ ]);
45274
+ var BoardKeySourceSchema = object({
45275
+ sourceId: string(),
45276
+ name: string()
45277
+ });
45278
+ var BoardKeyBoardSchema = object({
45279
+ /** The builder's file name, e.g. `kitchen.yaml`: the handle `getBoardKey` takes. */
45280
+ configuration: string(),
45281
+ /** The node name the builder gives the board. */
45282
+ name: string(),
45283
+ /** The address the builder knows the board by, when it has one. */
45284
+ address: string().nullable()
45285
+ });
45286
+ var BoardKeyFailureSchema = object({
45287
+ ok: literal(false),
45288
+ reason: BoardKeyFailureReasonSchema,
45289
+ detail: string().optional()
45290
+ });
45291
+ var ListBoardsResultSchema = discriminatedUnion("ok", [object({
45292
+ ok: literal(true),
45293
+ boards: array(BoardKeyBoardSchema).readonly()
45294
+ }), BoardKeyFailureSchema]);
45295
+ var GetBoardKeyResultSchema = discriminatedUnion("ok", [object({
45296
+ ok: literal(true),
45297
+ key: string()
45298
+ }), BoardKeyFailureSchema]);
45299
+ method(_void(), array(BoardKeySourceSchema).readonly(), { auth: "admin" }), method(object({ sourceId: string().min(1) }), ListBoardsResultSchema, { auth: "admin" }), method(object({
45300
+ sourceId: string().min(1),
45301
+ configuration: string().min(1)
45302
+ }), GetBoardKeyResultSchema, { auth: "admin" });
45174
45303
  object({
45175
45304
  /** Current level as 0..100 inclusive. Firmware-reported. */
45176
45305
  level: number().min(0).max(100).meta(readingMeta("percentage")),
@@ -50833,7 +50962,7 @@ object({
50833
50962
  /** Ms epoch of the last value received from the appliance; 0 = never. */
50834
50963
  lastFetchedAt: number()
50835
50964
  });
50836
- var DeviceIdSchema$1 = number().int().nonnegative();
50965
+ var DeviceIdSchema$2 = number().int().nonnegative();
50837
50966
  /** A value a program option or setting can take. */
50838
50967
  var DishwasherValueSchema = union([
50839
50968
  boolean(),
@@ -50897,77 +51026,77 @@ var DishwasherOptionsSchema = object({
50897
51026
  options: array(DishwasherOptionDescriptorSchema)
50898
51027
  });
50899
51028
  DeviceType.Dishwasher, method(object({
50900
- deviceId: DeviceIdSchema$1,
51029
+ deviceId: DeviceIdSchema$2,
50901
51030
  program: string().min(1).optional(),
50902
51031
  options: record(string(), DishwasherValueSchema).optional()
50903
51032
  }), _void(), {
50904
51033
  kind: "mutation",
50905
51034
  auth: "protected"
50906
- }), method(object({ deviceId: DeviceIdSchema$1 }), _void(), {
51035
+ }), method(object({ deviceId: DeviceIdSchema$2 }), _void(), {
50907
51036
  kind: "mutation",
50908
51037
  auth: "protected"
50909
- }), method(object({ deviceId: DeviceIdSchema$1 }), _void(), {
51038
+ }), method(object({ deviceId: DeviceIdSchema$2 }), _void(), {
50910
51039
  kind: "mutation",
50911
51040
  auth: "protected"
50912
- }), method(object({ deviceId: DeviceIdSchema$1 }), _void(), {
51041
+ }), method(object({ deviceId: DeviceIdSchema$2 }), _void(), {
50913
51042
  kind: "mutation",
50914
51043
  auth: "protected"
50915
51044
  }), method(object({
50916
- deviceId: DeviceIdSchema$1,
51045
+ deviceId: DeviceIdSchema$2,
50917
51046
  program: string().min(1)
50918
51047
  }), _void(), {
50919
51048
  kind: "mutation",
50920
51049
  auth: "protected"
50921
51050
  }), method(object({
50922
- deviceId: DeviceIdSchema$1,
51051
+ deviceId: DeviceIdSchema$2,
50923
51052
  on: boolean()
50924
51053
  }), _void(), {
50925
51054
  kind: "mutation",
50926
51055
  auth: "protected"
50927
51056
  }), method(object({
50928
- deviceId: DeviceIdSchema$1,
51057
+ deviceId: DeviceIdSchema$2,
50929
51058
  on: boolean()
50930
51059
  }), _void(), {
50931
51060
  kind: "mutation",
50932
51061
  auth: "protected"
50933
51062
  }), method(object({
50934
- deviceId: DeviceIdSchema$1,
51063
+ deviceId: DeviceIdSchema$2,
50935
51064
  on: boolean()
50936
51065
  }), _void(), {
50937
51066
  kind: "mutation",
50938
51067
  auth: "protected"
50939
51068
  }), method(object({
50940
- deviceId: DeviceIdSchema$1,
51069
+ deviceId: DeviceIdSchema$2,
50941
51070
  on: boolean()
50942
51071
  }), _void(), {
50943
51072
  kind: "mutation",
50944
51073
  auth: "protected"
50945
51074
  }), method(object({
50946
- deviceId: DeviceIdSchema$1,
51075
+ deviceId: DeviceIdSchema$2,
50947
51076
  on: boolean()
50948
51077
  }), _void(), {
50949
51078
  kind: "mutation",
50950
51079
  auth: "protected"
50951
51080
  }), method(object({
50952
- deviceId: DeviceIdSchema$1,
51081
+ deviceId: DeviceIdSchema$2,
50953
51082
  on: boolean()
50954
51083
  }), _void(), {
50955
51084
  kind: "mutation",
50956
51085
  auth: "protected"
50957
51086
  }), method(object({
50958
- deviceId: DeviceIdSchema$1,
51087
+ deviceId: DeviceIdSchema$2,
50959
51088
  on: boolean()
50960
51089
  }), _void(), {
50961
51090
  kind: "mutation",
50962
51091
  auth: "protected"
50963
51092
  }), method(object({
50964
- deviceId: DeviceIdSchema$1,
51093
+ deviceId: DeviceIdSchema$2,
50965
51094
  key: string().min(1),
50966
51095
  value: DishwasherValueSchema
50967
51096
  }), _void(), {
50968
51097
  kind: "mutation",
50969
51098
  auth: "protected"
50970
- }), method(object({ deviceId: DeviceIdSchema$1 }), DishwasherOptionsSchema, { auth: "protected" });
51099
+ }), method(object({ deviceId: DeviceIdSchema$2 }), DishwasherOptionsSchema, { auth: "protected" });
50971
51100
  /**
50972
51101
  * Palette entry ids (D939). Audio is the one gradient; `audio-*` leaves are
50973
51102
  * not entries. `heatmapScrub` is a mark, not an event kind.
@@ -52708,6 +52837,11 @@ var IntegrationInstanceSchema = object({
52708
52837
  name: string(),
52709
52838
  /** The addon's own rule (an URL is present, a client id is present...). */
52710
52839
  configured: boolean(),
52840
+ /**
52841
+ * The instance's own on/off switch (D996): always present, derived from the record body
52842
+ * (`enabled !== false`, so a row written before the field existed is on).
52843
+ */
52844
+ enabled: boolean(),
52711
52845
  /** Values for the instance form; a secret is a `SecretFieldView`, never text. */
52712
52846
  formValues: record(string(), unknown()),
52713
52847
  status: IntegrationInstanceStatusSchema.optional()
@@ -52727,6 +52861,12 @@ method(_void(), IntegrationInstanceDescriptionSchema, { auth: "admin" }), method
52727
52861
  }), method(IntegrationInstancePatchSchema, object({ ok: literal(true) }), {
52728
52862
  kind: "mutation",
52729
52863
  auth: "admin"
52864
+ }), method(object({
52865
+ id: IntegrationInstanceIdSchema,
52866
+ enabled: boolean()
52867
+ }), object({ ok: literal(true) }), {
52868
+ kind: "mutation",
52869
+ auth: "admin"
52730
52870
  }), method(object({ id: IntegrationInstanceIdSchema }), object({ ok: literal(true) }), {
52731
52871
  kind: "mutation",
52732
52872
  auth: "admin"
@@ -64772,52 +64912,27 @@ object({
64772
64912
  empty: boolean().nullable(),
64773
64913
  /** True while the pump is running. Null while unknown. */
64774
64914
  pumpRunning: boolean().nullable(),
64775
- /** True when the pump works on an on/off duty cycle rather than continuously. */
64776
- pumpIntervalEnabled: boolean().nullable(),
64777
- /** How long the pump runs per cycle, in seconds. */
64778
- pumpOnTime: number().min(0).nullable().meta(readingMeta("duration")),
64779
- /** How long the pump rests per cycle, in seconds. */
64780
- pumpOffTime: number().min(0).nullable().meta(readingMeta("duration")),
64781
64915
  /** Water drunk in the last drink, in litres. */
64782
64916
  lastDrink: number().min(0).nullable().meta(readingMeta("volume")),
64783
64917
  /** Water drunk in the current hour, in litres. */
64784
64918
  currentHourDrink: number().min(0).nullable().meta(readingMeta("volume")),
64785
64919
  /** Water drunk over the last 24 hours (rolling), in litres. */
64786
64920
  last24hDrink: number().min(0).nullable().meta(readingMeta("volume")),
64787
- /** Water drunk since local midnight, in litres. */
64921
+ /** Water drunk since local midnight, in litres. Null when the fountain has no such sensor. */
64788
64922
  todayDrink: number().min(0).nullable().meta(readingMeta("volume")),
64789
64923
  /** Decoded fault message. Null means healthy; a non-null string is an active fault. */
64790
64924
  error: string().nullable(),
64791
64925
  /** Ms epoch when the slice was last refreshed. */
64792
64926
  lastFetchedAt: number()
64793
64927
  });
64794
- var DeviceIdSchema = number().int().nonnegative();
64795
- var MinutesSchema = number().int().min(0);
64928
+ var DeviceIdSchema$1 = number().int().nonnegative();
64796
64929
  DeviceType.PetFountain, method(object({
64797
- deviceId: DeviceIdSchema,
64798
- on: boolean()
64799
- }), _void(), {
64800
- kind: "mutation",
64801
- auth: "protected"
64802
- }), method(object({
64803
- deviceId: DeviceIdSchema,
64930
+ deviceId: DeviceIdSchema$1,
64804
64931
  on: boolean()
64805
64932
  }), _void(), {
64806
64933
  kind: "mutation",
64807
64934
  auth: "protected"
64808
- }), method(object({
64809
- deviceId: DeviceIdSchema,
64810
- minutes: MinutesSchema
64811
- }), _void(), {
64812
- kind: "mutation",
64813
- auth: "protected"
64814
- }), method(object({
64815
- deviceId: DeviceIdSchema,
64816
- minutes: MinutesSchema
64817
- }), _void(), {
64818
- kind: "mutation",
64819
- auth: "protected"
64820
- }), method(object({ deviceId: DeviceIdSchema }), _void(), {
64935
+ }), method(object({ deviceId: DeviceIdSchema$1 }), _void(), {
64821
64936
  kind: "mutation",
64822
64937
  auth: "protected"
64823
64938
  });
@@ -66777,6 +66892,37 @@ DeviceType.Camera, method(object({ deviceId: number() }), PtzAutotrackStatusSche
66777
66892
  deviceId: number(),
66778
66893
  status: PtzAutotrackStatusSchema
66779
66894
  });
66895
+ object({
66896
+ /** True when the pump works on the on/off cycle, false when it runs continuously. Null while unknown. */
66897
+ enabled: boolean().nullable(),
66898
+ /** How long the pump runs per cycle, in seconds. Null while unknown. */
66899
+ onTime: number().min(0).nullable().meta(readingMeta("duration")),
66900
+ /** How long the pump rests per cycle, in seconds. Null while unknown. */
66901
+ offTime: number().min(0).nullable().meta(readingMeta("duration")),
66902
+ /** Ms epoch when the slice was last refreshed. */
66903
+ lastFetchedAt: number()
66904
+ });
66905
+ var DeviceIdSchema = number().int().nonnegative();
66906
+ var MinutesSchema = number().int().min(0);
66907
+ DeviceType.PetFountain, method(object({
66908
+ deviceId: DeviceIdSchema,
66909
+ on: boolean()
66910
+ }), _void(), {
66911
+ kind: "mutation",
66912
+ auth: "protected"
66913
+ }), method(object({
66914
+ deviceId: DeviceIdSchema,
66915
+ minutes: MinutesSchema
66916
+ }), _void(), {
66917
+ kind: "mutation",
66918
+ auth: "protected"
66919
+ }), method(object({
66920
+ deviceId: DeviceIdSchema,
66921
+ minutes: MinutesSchema
66922
+ }), _void(), {
66923
+ kind: "mutation",
66924
+ auth: "protected"
66925
+ });
66780
66926
  DeviceType.Camera, DeviceType.Sensor, DeviceType.Switch, DeviceType.Gateway, method(object({ deviceId: number().int().nonnegative() }), object({ success: literal(true) }), {
66781
66927
  kind: "mutation",
66782
66928
  auth: "admin"
@@ -75470,6 +75616,27 @@ Object.freeze({
75470
75616
  access: "view",
75471
75617
  role: "viewer"
75472
75618
  },
75619
+ "boardKeySource.getBoardKey": {
75620
+ capName: "board-key-source",
75621
+ capScope: "system",
75622
+ addonId: null,
75623
+ access: "view",
75624
+ role: "admin"
75625
+ },
75626
+ "boardKeySource.listBoards": {
75627
+ capName: "board-key-source",
75628
+ capScope: "system",
75629
+ addonId: null,
75630
+ access: "view",
75631
+ role: "admin"
75632
+ },
75633
+ "boardKeySource.listSources": {
75634
+ capName: "board-key-source",
75635
+ capScope: "system",
75636
+ addonId: null,
75637
+ access: "view",
75638
+ role: "admin"
75639
+ },
75473
75640
  "brightness.getStatus": {
75474
75641
  capName: "brightness",
75475
75642
  capScope: "device",
@@ -78151,6 +78318,13 @@ Object.freeze({
78151
78318
  access: "view",
78152
78319
  role: "admin"
78153
78320
  },
78321
+ "integrationInstances.setInstanceEnabled": {
78322
+ capName: "integration-instances",
78323
+ capScope: "system",
78324
+ addonId: null,
78325
+ access: "create",
78326
+ role: "admin"
78327
+ },
78154
78328
  "integrationInstances.testInstance": {
78155
78329
  capName: "integration-instances",
78156
78330
  capScope: "system",
@@ -80286,27 +80460,6 @@ Object.freeze({
80286
80460
  access: "create",
80287
80461
  role: "viewer"
80288
80462
  },
80289
- "petFountain.setPumpInterval": {
80290
- capName: "pet-fountain",
80291
- capScope: "device",
80292
- addonId: null,
80293
- access: "create",
80294
- role: "viewer"
80295
- },
80296
- "petFountain.setPumpOffMinutes": {
80297
- capName: "pet-fountain",
80298
- capScope: "device",
80299
- addonId: null,
80300
- access: "create",
80301
- role: "viewer"
80302
- },
80303
- "petFountain.setPumpOnMinutes": {
80304
- capName: "pet-fountain",
80305
- capScope: "device",
80306
- addonId: null,
80307
- access: "create",
80308
- role: "viewer"
80309
- },
80310
80463
  "pipelineAnalytics.addRetrainFrameFromRecording": {
80311
80464
  capName: "pipeline-analytics",
80312
80465
  capScope: "device",
@@ -82085,6 +82238,34 @@ Object.freeze({
82085
82238
  access: "create",
82086
82239
  role: "admin"
82087
82240
  },
82241
+ "pumpCycle.getStatus": {
82242
+ capName: "pump-cycle",
82243
+ capScope: "device",
82244
+ addonId: null,
82245
+ access: "view",
82246
+ role: "viewer"
82247
+ },
82248
+ "pumpCycle.setEnabled": {
82249
+ capName: "pump-cycle",
82250
+ capScope: "device",
82251
+ addonId: null,
82252
+ access: "create",
82253
+ role: "viewer"
82254
+ },
82255
+ "pumpCycle.setOffMinutes": {
82256
+ capName: "pump-cycle",
82257
+ capScope: "device",
82258
+ addonId: null,
82259
+ access: "create",
82260
+ role: "viewer"
82261
+ },
82262
+ "pumpCycle.setOnMinutes": {
82263
+ capName: "pump-cycle",
82264
+ capScope: "device",
82265
+ addonId: null,
82266
+ access: "create",
82267
+ role: "viewer"
82268
+ },
82088
82269
  "reboot.reboot": {
82089
82270
  capName: "reboot",
82090
82271
  capScope: "device",
@@ -86629,21 +86810,6 @@ Object.freeze({
86629
86810
  form: "single",
86630
86811
  optional: false
86631
86812
  }],
86632
- "petFountain.setPumpInterval": [{
86633
- name: "deviceId",
86634
- form: "single",
86635
- optional: false
86636
- }],
86637
- "petFountain.setPumpOffMinutes": [{
86638
- name: "deviceId",
86639
- form: "single",
86640
- optional: false
86641
- }],
86642
- "petFountain.setPumpOnMinutes": [{
86643
- name: "deviceId",
86644
- form: "single",
86645
- optional: false
86646
- }],
86647
86813
  "pipelineAnalytics.addRetrainFrameFromRecording": [{
86648
86814
  name: "deviceId",
86649
86815
  form: "single",
@@ -87279,6 +87445,26 @@ Object.freeze({
87279
87445
  form: "single",
87280
87446
  optional: false
87281
87447
  }],
87448
+ "pumpCycle.getStatus": [{
87449
+ name: "deviceId",
87450
+ form: "single",
87451
+ optional: false
87452
+ }],
87453
+ "pumpCycle.setEnabled": [{
87454
+ name: "deviceId",
87455
+ form: "single",
87456
+ optional: false
87457
+ }],
87458
+ "pumpCycle.setOffMinutes": [{
87459
+ name: "deviceId",
87460
+ form: "single",
87461
+ optional: false
87462
+ }],
87463
+ "pumpCycle.setOnMinutes": [{
87464
+ name: "deviceId",
87465
+ form: "single",
87466
+ optional: false
87467
+ }],
87282
87468
  "reboot.reboot": [{
87283
87469
  name: "deviceId",
87284
87470
  form: "single",
@@ -89470,7 +89656,7 @@ var AgentUIAddon = class extends BaseAddon {
89470
89656
  capability: adminUiCapability,
89471
89657
  provider: {
89472
89658
  getStaticDir: async () => ({ staticDir: path.resolve(__dirname) }),
89473
- getVersion: async () => ({ version: "1.2.315" })
89659
+ getVersion: async () => ({ version: "1.2.317" })
89474
89660
  }
89475
89661
  }];
89476
89662
  }