@camstack/addon-post-analysis 1.2.664 → 1.2.665

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 (16) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/dist/{clip-model-registry-Ch9Sz-Qb.mjs → clip-model-registry-DZTzG2p4.mjs} +292 -132
  3. package/dist/{clip-model-registry-TeNUAAPP.js → clip-model-registry-nn_STiGt.js} +297 -131
  4. package/dist/embedding-encoder/index.js +1 -1
  5. package/dist/embedding-encoder/index.mjs +1 -1
  6. package/dist/pipeline-analytics/_stub.js +2 -2
  7. package/dist/pipeline-analytics/{_virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_analytics_widgets-CXG7YPYq.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_analytics_widgets-Hy74pMMo.mjs} +2 -2
  8. package/dist/pipeline-analytics/_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-BXTAZYaJ.mjs +26 -0
  9. package/dist/pipeline-analytics/_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-Br6eWzp_.mjs +26 -0
  10. package/dist/pipeline-analytics/{hostInit-BZ_D3_sF.mjs → hostInit-BAYLsfoZ.mjs} +2 -2
  11. package/dist/pipeline-analytics/index.js +316 -38
  12. package/dist/pipeline-analytics/index.mjs +316 -38
  13. package/dist/pipeline-analytics/remoteEntry.js +1 -1
  14. package/package.json +2 -2
  15. package/dist/pipeline-analytics/_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-CIt_RDlm.mjs +0 -26
  16. package/dist/pipeline-analytics/_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-4TTlyJ66.mjs +0 -26
@@ -6063,7 +6063,7 @@ var ZodIssueCode = {
6063
6063
  var ZodFirstPartyTypeKind;
6064
6064
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
6065
6065
  //#endregion
6066
- //#region ../types/dist/sleep-QsoHs66J.mjs
6066
+ //#region ../types/dist/sleep-hmSP-eJt.mjs
6067
6067
  /**
6068
6068
  * The audio chunk plane's byte format, and the ONE expansion from a coded
6069
6069
  * window to float samples (D455).
@@ -9830,6 +9830,7 @@ var CAP_NAMES = Object.freeze([
9830
9830
  "backup",
9831
9831
  "battery",
9832
9832
  "binary",
9833
+ "board-key-source",
9833
9834
  "brightness",
9834
9835
  "broker",
9835
9836
  "button",
@@ -9951,6 +9952,7 @@ var CAP_NAMES = Object.freeze([
9951
9952
  "privacy-mask",
9952
9953
  "ptz",
9953
9954
  "ptz-autotrack",
9955
+ "pump-cycle",
9954
9956
  "reboot",
9955
9957
  "record-entries",
9956
9958
  "recording",
@@ -11243,18 +11245,6 @@ Object.freeze({
11243
11245
  "path": "pumpRunning",
11244
11246
  "valueType": "boolean"
11245
11247
  },
11246
- {
11247
- "path": "pumpIntervalEnabled",
11248
- "valueType": "boolean"
11249
- },
11250
- {
11251
- "path": "pumpOnTime",
11252
- "valueType": "number"
11253
- },
11254
- {
11255
- "path": "pumpOffTime",
11256
- "valueType": "number"
11257
- },
11258
11248
  {
11259
11249
  "path": "lastDrink",
11260
11250
  "valueType": "number"
@@ -11378,6 +11368,20 @@ Object.freeze({
11378
11368
  "valueType": "number"
11379
11369
  }
11380
11370
  ],
11371
+ "pump-cycle": [
11372
+ {
11373
+ "path": "enabled",
11374
+ "valueType": "boolean"
11375
+ },
11376
+ {
11377
+ "path": "onTime",
11378
+ "valueType": "number"
11379
+ },
11380
+ {
11381
+ "path": "offTime",
11382
+ "valueType": "number"
11383
+ }
11384
+ ],
11381
11385
  "recording-archive": [
11382
11386
  {
11383
11387
  "path": "deviceId",
@@ -11829,7 +11833,7 @@ Object.freeze({
11829
11833
  * can answer "may a rule actuate this?" without importing the schema barrel
11830
11834
  * (~144MB RSS per runner, D28).
11831
11835
  *
11832
- * Coverage: 101 device-scoped capabilities.
11836
+ * Coverage: 102 device-scoped capabilities.
11833
11837
  */
11834
11838
  var DEVICE_SCOPED_CAPS = new Set([
11835
11839
  "accessories",
@@ -11906,6 +11910,7 @@ var DEVICE_SCOPED_CAPS = new Set([
11906
11910
  "privacy-mask",
11907
11911
  "ptz",
11908
11912
  "ptz-autotrack",
11913
+ "pump-cycle",
11909
11914
  "reboot",
11910
11915
  "recording",
11911
11916
  "recording-onboard",
@@ -20451,24 +20456,52 @@ var APPLIANCE_CAP_VOCABULARY = {
20451
20456
  args: { on: false }
20452
20457
  },
20453
20458
  {
20454
- id: "petFountain.intervalOn",
20455
- method: "setPumpInterval",
20459
+ id: "petFountain.resetDailyConsumption",
20460
+ method: "resetDailyConsumption",
20461
+ label: t("Clear daily consumption", "Azzera il consumo giornaliero"),
20462
+ phrase: t("Clear the daily water consumption of {device}", "Azzera il consumo giornaliero di acqua di {device}"),
20463
+ icon: "rotate-ccw"
20464
+ }
20465
+ ],
20466
+ state: [{
20467
+ kind: "boolean",
20468
+ field: "empty",
20469
+ label: t("Tank empty", "Serbatoio vuoto"),
20470
+ whenTrue: t("When the tank of {device} is empty", "Quando il serbatoio di {device} è vuoto"),
20471
+ whenFalse: t("When the tank of {device} is refilled", "Quando il serbatoio di {device} viene riempito"),
20472
+ icon: "droplet"
20473
+ }, {
20474
+ kind: "numeric",
20475
+ field: "waterLevel",
20476
+ quantity: t("the water level", "il livello dell’acqua"),
20477
+ label: t("Water level", "Livello dell’acqua"),
20478
+ unit: "%",
20479
+ icon: "droplets"
20480
+ }]
20481
+ },
20482
+ "pump-cycle": {
20483
+ scope: "device",
20484
+ noun: t("Pump cycle", "Ciclo della pompa"),
20485
+ actions: [
20486
+ {
20487
+ id: "pumpCycle.on",
20488
+ method: "setEnabled",
20456
20489
  label: t("Pump cycle on", "Ciclo pompa attivo"),
20457
20490
  phrase: t("Run the pump of {device} on its on/off cycle", "Fai lavorare la pompa di {device} a ciclo acceso/spento"),
20458
20491
  icon: "timer",
20459
20492
  args: { on: true }
20460
20493
  },
20461
20494
  {
20462
- id: "petFountain.intervalOff",
20463
- method: "setPumpInterval",
20495
+ id: "pumpCycle.off",
20496
+ method: "setEnabled",
20464
20497
  label: t("Pump cycle off", "Ciclo pompa spento"),
20465
20498
  phrase: t("Run the pump of {device} continuously", "Fai lavorare la pompa di {device} in continuo"),
20466
20499
  icon: "timer-off",
20467
20500
  args: { on: false }
20468
20501
  },
20469
20502
  {
20470
- id: "petFountain.pumpOnMinutes",
20471
- method: "setPumpOnMinutes",
20503
+ id: "pumpCycle.onMinutes",
20504
+ method: "setOnMinutes",
20472
20505
  label: t("Set pump run time", "Imposta il tempo di lavoro della pompa"),
20473
20506
  phrase: t("Set the pump of {device} to run {minutes} minutes per cycle", "Imposta la pompa di {device} a lavorare {minutes} minuti per ciclo"),
20474
20507
  icon: "timer",
@@ -20484,8 +20517,8 @@ var APPLIANCE_CAP_VOCABULARY = {
20484
20517
  }]
20485
20518
  },
20486
20519
  {
20487
- id: "petFountain.pumpOffMinutes",
20488
- method: "setPumpOffMinutes",
20520
+ id: "pumpCycle.offMinutes",
20521
+ method: "setOffMinutes",
20489
20522
  label: t("Set pump rest time", "Imposta il tempo di riposo della pompa"),
20490
20523
  phrase: t("Set the pump of {device} to rest {minutes} minutes per cycle", "Imposta la pompa di {device} a riposare {minutes} minuti per ciclo"),
20491
20524
  icon: "timer-off",
@@ -20499,29 +20532,15 @@ var APPLIANCE_CAP_VOCABULARY = {
20499
20532
  unit: "min"
20500
20533
  }
20501
20534
  }]
20502
- },
20503
- {
20504
- id: "petFountain.resetDailyConsumption",
20505
- method: "resetDailyConsumption",
20506
- label: t("Clear daily consumption", "Azzera il consumo giornaliero"),
20507
- phrase: t("Clear the daily water consumption of {device}", "Azzera il consumo giornaliero di acqua di {device}"),
20508
- icon: "rotate-ccw"
20509
20535
  }
20510
20536
  ],
20511
20537
  state: [{
20512
20538
  kind: "boolean",
20513
- field: "empty",
20514
- label: t("Tank empty", "Serbatoio vuoto"),
20515
- whenTrue: t("When the tank of {device} is empty", "Quando il serbatoio di {device} è vuoto"),
20516
- whenFalse: t("When the tank of {device} is refilled", "Quando il serbatoio di {device} viene riempito"),
20517
- icon: "droplet"
20518
- }, {
20519
- kind: "numeric",
20520
- field: "waterLevel",
20521
- quantity: t("the water level", "il livello dell’acqua"),
20522
- label: t("Water level", "Livello dell’acqua"),
20523
- unit: "%",
20524
- icon: "droplets"
20539
+ field: "enabled",
20540
+ label: t("Pump cycle", "Ciclo pompa"),
20541
+ whenTrue: t("When {device} starts running its pump on a cycle", "Quando {device} inizia a far lavorare la pompa a ciclo"),
20542
+ whenFalse: t("When {device} runs its pump continuously", "Quando {device} fa lavorare la pompa in continuo"),
20543
+ icon: "timer"
20525
20544
  }]
20526
20545
  },
20527
20546
  "media-player": {
@@ -22414,6 +22433,7 @@ var SYSTEM_CAP_VOCABULARY = {
22414
22433
  "audio-analyzer": system(PIPELINE),
22415
22434
  "audio-codec": system(INTERNAL),
22416
22435
  "auth-provider": system(IDENTITY),
22436
+ "board-key-source": system(INTERNAL),
22417
22437
  backup: system("system backups — run and restored from the Backups page"),
22418
22438
  broker: system("message-broker connections — configured, not actuated"),
22419
22439
  "calendar-source": system(INTERNAL),
@@ -47564,6 +47584,49 @@ var binaryCapability = {
47564
47584
  volatileStateFields: ["lastChangedAt"]
47565
47585
  };
47566
47586
  /**
47587
+ * Why a board key could not be read. Typed so a caller reports the cause and
47588
+ * never treats "could not read" as "has no key" (D49).
47589
+ */
47590
+ var BoardKeyFailureReasonSchema = _enum([
47591
+ "unknown-source",
47592
+ "not-admin",
47593
+ "no-builder",
47594
+ "no-ingress-url",
47595
+ "unreachable",
47596
+ "unknown-board",
47597
+ "no-encryption-key",
47598
+ "unreadable-config"
47599
+ ]);
47600
+ var BoardKeySourceSchema = object({
47601
+ sourceId: string(),
47602
+ name: string()
47603
+ });
47604
+ var BoardKeyBoardSchema = object({
47605
+ /** The builder's file name, e.g. `kitchen.yaml`: the handle `getBoardKey` takes. */
47606
+ configuration: string(),
47607
+ /** The node name the builder gives the board. */
47608
+ name: string(),
47609
+ /** The address the builder knows the board by, when it has one. */
47610
+ address: string().nullable()
47611
+ });
47612
+ var BoardKeyFailureSchema = object({
47613
+ ok: literal(false),
47614
+ reason: BoardKeyFailureReasonSchema,
47615
+ detail: string().optional()
47616
+ });
47617
+ var ListBoardsResultSchema = discriminatedUnion("ok", [object({
47618
+ ok: literal(true),
47619
+ boards: array(BoardKeyBoardSchema).readonly()
47620
+ }), BoardKeyFailureSchema]);
47621
+ var GetBoardKeyResultSchema = discriminatedUnion("ok", [object({
47622
+ ok: literal(true),
47623
+ key: string()
47624
+ }), BoardKeyFailureSchema]);
47625
+ method(_void(), array(BoardKeySourceSchema).readonly(), { auth: "admin" }), method(object({ sourceId: string().min(1) }), ListBoardsResultSchema, { auth: "admin" }), method(object({
47626
+ sourceId: string().min(1),
47627
+ configuration: string().min(1)
47628
+ }), GetBoardKeyResultSchema, { auth: "admin" });
47629
+ /**
47567
47630
  * Dimmable-light brightness control. Co-exists with `switch` on the
47568
47631
  * same device — the switch toggles on/off, this cap sets the level
47569
47632
  * applied when the light is on. Drivers map their per-vendor dim
@@ -54145,7 +54208,7 @@ var DishwasherStatusSchema = object({
54145
54208
  /** Ms epoch of the last value received from the appliance; 0 = never. */
54146
54209
  lastFetchedAt: number()
54147
54210
  });
54148
- var DeviceIdSchema$1 = number().int().nonnegative();
54211
+ var DeviceIdSchema$2 = number().int().nonnegative();
54149
54212
  /** A value a program option or setting can take. */
54150
54213
  var DishwasherValueSchema = union([
54151
54214
  boolean(),
@@ -54220,77 +54283,77 @@ var dishwasherCapability = {
54220
54283
  * option feature keys; each is checked against the program's constraints.
54221
54284
  */
54222
54285
  start: method(object({
54223
- deviceId: DeviceIdSchema$1,
54286
+ deviceId: DeviceIdSchema$2,
54224
54287
  program: string().min(1).optional(),
54225
54288
  options: record(string(), DishwasherValueSchema).optional()
54226
54289
  }), _void(), {
54227
54290
  kind: "mutation",
54228
54291
  auth: "protected"
54229
54292
  }),
54230
- pause: method(object({ deviceId: DeviceIdSchema$1 }), _void(), {
54293
+ pause: method(object({ deviceId: DeviceIdSchema$2 }), _void(), {
54231
54294
  kind: "mutation",
54232
54295
  auth: "protected"
54233
54296
  }),
54234
- resume: method(object({ deviceId: DeviceIdSchema$1 }), _void(), {
54297
+ resume: method(object({ deviceId: DeviceIdSchema$2 }), _void(), {
54235
54298
  kind: "mutation",
54236
54299
  auth: "protected"
54237
54300
  }),
54238
- stop: method(object({ deviceId: DeviceIdSchema$1 }), _void(), {
54301
+ stop: method(object({ deviceId: DeviceIdSchema$2 }), _void(), {
54239
54302
  kind: "mutation",
54240
54303
  auth: "protected"
54241
54304
  }),
54242
54305
  /** Select (not start) a program; refused when the appliance does not offer it. */
54243
54306
  setProgram: method(object({
54244
- deviceId: DeviceIdSchema$1,
54307
+ deviceId: DeviceIdSchema$2,
54245
54308
  program: string().min(1)
54246
54309
  }), _void(), {
54247
54310
  kind: "mutation",
54248
54311
  auth: "protected"
54249
54312
  }),
54250
54313
  setPower: method(object({
54251
- deviceId: DeviceIdSchema$1,
54314
+ deviceId: DeviceIdSchema$2,
54252
54315
  on: boolean()
54253
54316
  }), _void(), {
54254
54317
  kind: "mutation",
54255
54318
  auth: "protected"
54256
54319
  }),
54257
54320
  setHalfLoad: method(object({
54258
- deviceId: DeviceIdSchema$1,
54321
+ deviceId: DeviceIdSchema$2,
54259
54322
  on: boolean()
54260
54323
  }), _void(), {
54261
54324
  kind: "mutation",
54262
54325
  auth: "protected"
54263
54326
  }),
54264
54327
  setHygienePlus: method(object({
54265
- deviceId: DeviceIdSchema$1,
54328
+ deviceId: DeviceIdSchema$2,
54266
54329
  on: boolean()
54267
54330
  }), _void(), {
54268
54331
  kind: "mutation",
54269
54332
  auth: "protected"
54270
54333
  }),
54271
54334
  setExtraDry: method(object({
54272
- deviceId: DeviceIdSchema$1,
54335
+ deviceId: DeviceIdSchema$2,
54273
54336
  on: boolean()
54274
54337
  }), _void(), {
54275
54338
  kind: "mutation",
54276
54339
  auth: "protected"
54277
54340
  }),
54278
54341
  setIntensiveZone: method(object({
54279
- deviceId: DeviceIdSchema$1,
54342
+ deviceId: DeviceIdSchema$2,
54280
54343
  on: boolean()
54281
54344
  }), _void(), {
54282
54345
  kind: "mutation",
54283
54346
  auth: "protected"
54284
54347
  }),
54285
54348
  setVarioSpeedPlus: method(object({
54286
- deviceId: DeviceIdSchema$1,
54349
+ deviceId: DeviceIdSchema$2,
54287
54350
  on: boolean()
54288
54351
  }), _void(), {
54289
54352
  kind: "mutation",
54290
54353
  auth: "protected"
54291
54354
  }),
54292
54355
  setChildLock: method(object({
54293
- deviceId: DeviceIdSchema$1,
54356
+ deviceId: DeviceIdSchema$2,
54294
54357
  on: boolean()
54295
54358
  }), _void(), {
54296
54359
  kind: "mutation",
@@ -54302,7 +54365,7 @@ var dishwasherCapability = {
54302
54365
  * its declared range / members.
54303
54366
  */
54304
54367
  setOption: method(object({
54305
- deviceId: DeviceIdSchema$1,
54368
+ deviceId: DeviceIdSchema$2,
54306
54369
  key: string().min(1),
54307
54370
  value: DishwasherValueSchema
54308
54371
  }), _void(), {
@@ -54310,7 +54373,7 @@ var dishwasherCapability = {
54310
54373
  auth: "protected"
54311
54374
  }),
54312
54375
  /** What this appliance can do, from its own description — the UI is derived from it. */
54313
- getOptions: method(object({ deviceId: DeviceIdSchema$1 }), DishwasherOptionsSchema, { auth: "protected" })
54376
+ getOptions: method(object({ deviceId: DeviceIdSchema$2 }), DishwasherOptionsSchema, { auth: "protected" })
54314
54377
  },
54315
54378
  status: {
54316
54379
  schema: DishwasherStatusSchema,
@@ -69136,6 +69199,21 @@ var NcTemplateVarKindSchema = _enum([
69136
69199
  "sound",
69137
69200
  "system"
69138
69201
  ]);
69202
+ /**
69203
+ * The default title/body a rule of one SITUATION is delivered with when the
69204
+ * operator wrote no template — served so an editor can pre-fill it (and the
69205
+ * operator can rebuild it from placeholders) instead of starting from a blank
69206
+ * box that, once saved, silently replaces it. `id` names the situation inside
69207
+ * a rule `kind`: `appliance-cycle` is a `sensor` rule whose device is an
69208
+ * appliance finishing a cycle. Texts are raw templates (`{{var}}` intact), in
69209
+ * the hub's current language and with its overrides applied.
69210
+ */
69211
+ var NcTemplateDefaultSchema = object({
69212
+ id: _enum(["appliance-cycle"]),
69213
+ kind: NcRuleKindSchema,
69214
+ title: string(),
69215
+ body: string()
69216
+ });
69139
69217
  /** Which producer renders a template: an ordinary rule, a timelapse, a digest. */
69140
69218
  var NcTemplateFamilySchema = _enum([
69141
69219
  "rule",
@@ -70698,7 +70776,11 @@ var notificationRulesCapability = {
70698
70776
  taxonomy: NcTaxonomySchema.optional()
70699
70777
  })),
70700
70778
  /** The declared `{{var}}` vocabulary; editors filter it with `templateVarsFor`. */
70701
- getTemplateCatalog: method(object({}), object({ vars: array(NcTemplateVarDescriptorSchema) })),
70779
+ getTemplateCatalog: method(object({}), object({
70780
+ vars: array(NcTemplateVarDescriptorSchema),
70781
+ /** Per-situation default texts; absent on a hub that predates them. */
70782
+ defaults: array(NcTemplateDefaultSchema)
70783
+ })),
70702
70784
  /**
70703
70785
  * Render a template with example values, through the hub's text catalog.
70704
70786
  * Pure: sends nothing. A MUTATION only for transport — a 2.5k-char draft in
@@ -71708,7 +71790,7 @@ var petFeederCapability = {
71708
71790
  /**
71709
71791
  * Pet water-fountain cap. Models the telemetry and the control surface of a
71710
71792
  * circulating drinking fountain: how much water is in the tank, how much the
71711
- * pet drank, whether the pump runs and on what duty cycle.
71793
+ * pet drank, whether the pump runs.
71712
71794
  *
71713
71795
  * It has no native vendor provider of its own: a fountain reaches CamStack as
71714
71796
  * a container of loose entities (a pump switch, two number boxes, a "filter
@@ -71724,8 +71806,10 @@ var petFeederCapability = {
71724
71806
  * never here. Every reading may be `null`: a source that is offline or does
71725
71807
  * not report is unknown, never zero.
71726
71808
  *
71727
- * The filter is not a field of this cap: it is an item of the `consumables`
71728
- * cap on the same device (kind `wear`), reset by the same forward mechanism.
71809
+ * The pump's on/off duty cycle is model-specific and lives in the optional
71810
+ * `pump-cycle` cap. The filter, the cleaning and the water change are not
71811
+ * fields of this cap: they are items of the `consumables` cap on the same
71812
+ * device (kind `wear`), reset by the same forward mechanism.
71729
71813
  */
71730
71814
  var PetFountainStatusSchema = object({
71731
71815
  /** Water in the tank, 0..100 (%). Null while the source has not reported. */
@@ -71736,27 +71820,20 @@ var PetFountainStatusSchema = object({
71736
71820
  empty: boolean().nullable(),
71737
71821
  /** True while the pump is running. Null while unknown. */
71738
71822
  pumpRunning: boolean().nullable(),
71739
- /** True when the pump works on an on/off duty cycle rather than continuously. */
71740
- pumpIntervalEnabled: boolean().nullable(),
71741
- /** How long the pump runs per cycle, in seconds. */
71742
- pumpOnTime: number().min(0).nullable().meta(readingMeta("duration")),
71743
- /** How long the pump rests per cycle, in seconds. */
71744
- pumpOffTime: number().min(0).nullable().meta(readingMeta("duration")),
71745
71823
  /** Water drunk in the last drink, in litres. */
71746
71824
  lastDrink: number().min(0).nullable().meta(readingMeta("volume")),
71747
71825
  /** Water drunk in the current hour, in litres. */
71748
71826
  currentHourDrink: number().min(0).nullable().meta(readingMeta("volume")),
71749
71827
  /** Water drunk over the last 24 hours (rolling), in litres. */
71750
71828
  last24hDrink: number().min(0).nullable().meta(readingMeta("volume")),
71751
- /** Water drunk since local midnight, in litres. */
71829
+ /** Water drunk since local midnight, in litres. Null when the fountain has no such sensor. */
71752
71830
  todayDrink: number().min(0).nullable().meta(readingMeta("volume")),
71753
71831
  /** Decoded fault message. Null means healthy; a non-null string is an active fault. */
71754
71832
  error: string().nullable(),
71755
71833
  /** Ms epoch when the slice was last refreshed. */
71756
71834
  lastFetchedAt: number()
71757
71835
  });
71758
- var DeviceIdSchema = number().int().nonnegative();
71759
- var MinutesSchema = number().int().min(0);
71836
+ var DeviceIdSchema$1 = number().int().nonnegative();
71760
71837
  var petFountainCapability = {
71761
71838
  name: "pet-fountain",
71762
71839
  scope: "device",
@@ -71766,38 +71843,14 @@ var petFountainCapability = {
71766
71843
  methods: {
71767
71844
  /** Start or stop the pump. */
71768
71845
  setPump: method(object({
71769
- deviceId: DeviceIdSchema,
71770
- on: boolean()
71771
- }), _void(), {
71772
- kind: "mutation",
71773
- auth: "protected"
71774
- }),
71775
- /** Switch the on/off duty cycle on or off (off = the pump runs continuously). */
71776
- setPumpInterval: method(object({
71777
- deviceId: DeviceIdSchema,
71846
+ deviceId: DeviceIdSchema$1,
71778
71847
  on: boolean()
71779
71848
  }), _void(), {
71780
71849
  kind: "mutation",
71781
71850
  auth: "protected"
71782
71851
  }),
71783
- /** Set how many minutes the pump runs per cycle. */
71784
- setPumpOnMinutes: method(object({
71785
- deviceId: DeviceIdSchema,
71786
- minutes: MinutesSchema
71787
- }), _void(), {
71788
- kind: "mutation",
71789
- auth: "protected"
71790
- }),
71791
- /** Set how many minutes the pump rests per cycle. */
71792
- setPumpOffMinutes: method(object({
71793
- deviceId: DeviceIdSchema,
71794
- minutes: MinutesSchema
71795
- }), _void(), {
71796
- kind: "mutation",
71797
- auth: "protected"
71798
- }),
71799
71852
  /** Clear the rolling daily consumption counters on the device. */
71800
- resetDailyConsumption: method(object({ deviceId: DeviceIdSchema }), _void(), {
71853
+ resetDailyConsumption: method(object({ deviceId: DeviceIdSchema$1 }), _void(), {
71801
71854
  kind: "mutation",
71802
71855
  auth: "protected"
71803
71856
  })
@@ -74165,6 +74218,79 @@ var ptzAutotrackCapability = {
74165
74218
  */
74166
74219
  history: "none"
74167
74220
  };
74221
+ /**
74222
+ * The on/off duty cycle of a pet fountain's pump. Some models run the pump
74223
+ * continuously and have nothing to configure; others can alternate a run time
74224
+ * and a rest time. That is model-specific, so it is its own optional cap on the
74225
+ * fountain device: a fountain without cycle entities simply never composes it
74226
+ * (planning#366), and the `pet-fountain` cap stays the model-independent core.
74227
+ *
74228
+ * Like `pet-fountain` it has no native vendor provider: an operator BUILDS the
74229
+ * cycle from loose entities (a cycle switch and two number boxes) and every
74230
+ * method is a forward to one source entity (D659, D967). Durations are stored
74231
+ * in SECONDS (D944); a number box that cannot be read back leaves them `null`
74232
+ * — unknown, never zero (D393).
74233
+ */
74234
+ var PumpCycleStatusSchema = object({
74235
+ /** True when the pump works on the on/off cycle, false when it runs continuously. Null while unknown. */
74236
+ enabled: boolean().nullable(),
74237
+ /** How long the pump runs per cycle, in seconds. Null while unknown. */
74238
+ onTime: number().min(0).nullable().meta(readingMeta("duration")),
74239
+ /** How long the pump rests per cycle, in seconds. Null while unknown. */
74240
+ offTime: number().min(0).nullable().meta(readingMeta("duration")),
74241
+ /** Ms epoch when the slice was last refreshed. */
74242
+ lastFetchedAt: number()
74243
+ });
74244
+ var DeviceIdSchema = number().int().nonnegative();
74245
+ var MinutesSchema = number().int().min(0);
74246
+ var pumpCycleCapability = {
74247
+ name: "pump-cycle",
74248
+ scope: "device",
74249
+ deviceNative: true,
74250
+ mode: "singleton",
74251
+ deviceTypes: [DeviceType.PetFountain],
74252
+ methods: {
74253
+ /** Switch the on/off duty cycle on or off (off = the pump runs continuously). */
74254
+ setEnabled: method(object({
74255
+ deviceId: DeviceIdSchema,
74256
+ on: boolean()
74257
+ }), _void(), {
74258
+ kind: "mutation",
74259
+ auth: "protected"
74260
+ }),
74261
+ /** Set how many minutes the pump runs per cycle. */
74262
+ setOnMinutes: method(object({
74263
+ deviceId: DeviceIdSchema,
74264
+ minutes: MinutesSchema
74265
+ }), _void(), {
74266
+ kind: "mutation",
74267
+ auth: "protected"
74268
+ }),
74269
+ /** Set how many minutes the pump rests per cycle. */
74270
+ setOffMinutes: method(object({
74271
+ deviceId: DeviceIdSchema,
74272
+ minutes: MinutesSchema
74273
+ }), _void(), {
74274
+ kind: "mutation",
74275
+ auth: "protected"
74276
+ })
74277
+ },
74278
+ status: {
74279
+ schema: PumpCycleStatusSchema,
74280
+ kind: "push"
74281
+ },
74282
+ /** Runtime-state slice — mirrored by the kernel; the hero card reads it whole. */
74283
+ runtimeState: PumpCycleStatusSchema,
74284
+ /**
74285
+ * Runtime-state durability: **session** — live appliance state re-published on connect.
74286
+ *
74287
+ * See `RuntimeStateDurability`. Enforced by
74288
+ * `scripts/check-runtime-state-durability.ts`.
74289
+ */
74290
+ durability: "session",
74291
+ /** History (D850): a duty-cycle setting is not a series worth recording. */
74292
+ history: "none"
74293
+ };
74168
74294
  DeviceType.Camera, DeviceType.Sensor, DeviceType.Switch, DeviceType.Gateway, method(object({ deviceId: number().int().nonnegative() }), object({ success: literal(true) }), {
74169
74295
  kind: "mutation",
74170
74296
  auth: "admin"
@@ -83459,6 +83585,7 @@ var DEVICE_LOCAL_STATE_CAPS = {
83459
83585
  pressureSensor: pressureSensorCapability,
83460
83586
  privacyMask: privacyMaskCapability,
83461
83587
  ptzAutotrack: ptzAutotrackCapability,
83588
+ pumpCycle: pumpCycleCapability,
83462
83589
  recordingOnboard: recordingOnboardCapability,
83463
83590
  recordingSignal: recordingSignalCapability,
83464
83591
  runningState: runningStateCapability,
@@ -85149,6 +85276,27 @@ Object.freeze({
85149
85276
  access: "view",
85150
85277
  role: "viewer"
85151
85278
  },
85279
+ "boardKeySource.getBoardKey": {
85280
+ capName: "board-key-source",
85281
+ capScope: "system",
85282
+ addonId: null,
85283
+ access: "view",
85284
+ role: "admin"
85285
+ },
85286
+ "boardKeySource.listBoards": {
85287
+ capName: "board-key-source",
85288
+ capScope: "system",
85289
+ addonId: null,
85290
+ access: "view",
85291
+ role: "admin"
85292
+ },
85293
+ "boardKeySource.listSources": {
85294
+ capName: "board-key-source",
85295
+ capScope: "system",
85296
+ addonId: null,
85297
+ access: "view",
85298
+ role: "admin"
85299
+ },
85152
85300
  "brightness.getStatus": {
85153
85301
  capName: "brightness",
85154
85302
  capScope: "device",
@@ -89972,27 +90120,6 @@ Object.freeze({
89972
90120
  access: "create",
89973
90121
  role: "viewer"
89974
90122
  },
89975
- "petFountain.setPumpInterval": {
89976
- capName: "pet-fountain",
89977
- capScope: "device",
89978
- addonId: null,
89979
- access: "create",
89980
- role: "viewer"
89981
- },
89982
- "petFountain.setPumpOffMinutes": {
89983
- capName: "pet-fountain",
89984
- capScope: "device",
89985
- addonId: null,
89986
- access: "create",
89987
- role: "viewer"
89988
- },
89989
- "petFountain.setPumpOnMinutes": {
89990
- capName: "pet-fountain",
89991
- capScope: "device",
89992
- addonId: null,
89993
- access: "create",
89994
- role: "viewer"
89995
- },
89996
90123
  "pipelineAnalytics.addRetrainFrameFromRecording": {
89997
90124
  capName: "pipeline-analytics",
89998
90125
  capScope: "device",
@@ -91771,6 +91898,34 @@ Object.freeze({
91771
91898
  access: "create",
91772
91899
  role: "admin"
91773
91900
  },
91901
+ "pumpCycle.getStatus": {
91902
+ capName: "pump-cycle",
91903
+ capScope: "device",
91904
+ addonId: null,
91905
+ access: "view",
91906
+ role: "viewer"
91907
+ },
91908
+ "pumpCycle.setEnabled": {
91909
+ capName: "pump-cycle",
91910
+ capScope: "device",
91911
+ addonId: null,
91912
+ access: "create",
91913
+ role: "viewer"
91914
+ },
91915
+ "pumpCycle.setOffMinutes": {
91916
+ capName: "pump-cycle",
91917
+ capScope: "device",
91918
+ addonId: null,
91919
+ access: "create",
91920
+ role: "viewer"
91921
+ },
91922
+ "pumpCycle.setOnMinutes": {
91923
+ capName: "pump-cycle",
91924
+ capScope: "device",
91925
+ addonId: null,
91926
+ access: "create",
91927
+ role: "viewer"
91928
+ },
91774
91929
  "reboot.reboot": {
91775
91930
  capName: "reboot",
91776
91931
  capScope: "device",
@@ -96315,21 +96470,6 @@ Object.freeze({
96315
96470
  form: "single",
96316
96471
  optional: false
96317
96472
  }],
96318
- "petFountain.setPumpInterval": [{
96319
- name: "deviceId",
96320
- form: "single",
96321
- optional: false
96322
- }],
96323
- "petFountain.setPumpOffMinutes": [{
96324
- name: "deviceId",
96325
- form: "single",
96326
- optional: false
96327
- }],
96328
- "petFountain.setPumpOnMinutes": [{
96329
- name: "deviceId",
96330
- form: "single",
96331
- optional: false
96332
- }],
96333
96473
  "pipelineAnalytics.addRetrainFrameFromRecording": [{
96334
96474
  name: "deviceId",
96335
96475
  form: "single",
@@ -96965,6 +97105,26 @@ Object.freeze({
96965
97105
  form: "single",
96966
97106
  optional: false
96967
97107
  }],
97108
+ "pumpCycle.getStatus": [{
97109
+ name: "deviceId",
97110
+ form: "single",
97111
+ optional: false
97112
+ }],
97113
+ "pumpCycle.setEnabled": [{
97114
+ name: "deviceId",
97115
+ form: "single",
97116
+ optional: false
97117
+ }],
97118
+ "pumpCycle.setOffMinutes": [{
97119
+ name: "deviceId",
97120
+ form: "single",
97121
+ optional: false
97122
+ }],
97123
+ "pumpCycle.setOnMinutes": [{
97124
+ name: "deviceId",
97125
+ form: "single",
97126
+ optional: false
97127
+ }],
96968
97128
  "reboot.reboot": [{
96969
97129
  name: "deviceId",
96970
97130
  form: "single",
@@ -103702,6 +103862,12 @@ Object.defineProperty(exports, "NcTaxonomySchema", {
103702
103862
  return NcTaxonomySchema;
103703
103863
  }
103704
103864
  });
103865
+ Object.defineProperty(exports, "NcTemplateDefaultSchema", {
103866
+ enumerable: true,
103867
+ get: function() {
103868
+ return NcTemplateDefaultSchema;
103869
+ }
103870
+ });
103705
103871
  Object.defineProperty(exports, "NcTemplatePreviewInputSchema", {
103706
103872
  enumerable: true,
103707
103873
  get: function() {