@camstack/types 1.2.443 → 1.2.445
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/CHANGELOG.md +20 -0
- package/dist/addon.d.ts +5 -1
- package/dist/addon.js +21 -5
- package/dist/addon.mjs +17 -6
- package/dist/automation/export-entities.d.ts +98 -0
- package/dist/capabilities/capability-definition.d.ts +1 -1
- package/dist/capabilities/composer.cap.d.ts +34 -0
- package/dist/capabilities/consumables.cap.d.ts +4 -5
- package/dist/capabilities/core-blocks.cap.d.ts +244 -0
- package/dist/capabilities/device-export.cap.d.ts +111 -1
- package/dist/capabilities/index.d.ts +6 -4
- package/dist/capabilities/metrics-provider.cap.d.ts +16 -16
- package/dist/capabilities/nodes.cap.d.ts +2 -2
- package/dist/capabilities/pet-fountain.cap.d.ts +138 -0
- package/dist/capabilities/pipeline-executor.cap.d.ts +6 -22
- package/dist/capabilities/pipeline-orchestrator.cap.d.ts +2 -2
- package/dist/capabilities/pipeline-runner.cap.d.ts +2 -2
- package/dist/capabilities/pipeline-step-input.d.ts +33 -0
- package/dist/capabilities/server-management.cap.d.ts +28 -0
- package/dist/client.js +820 -799
- package/dist/client.mjs +820 -799
- package/dist/composition/composition-items.d.ts +3 -3
- package/dist/composition/composition-report.d.ts +17 -0
- package/dist/composition/composition.d.ts +68 -1
- package/dist/composition/index.d.ts +2 -0
- package/dist/composition/presets/pet-fountain.d.ts +36 -0
- package/dist/composition/validate-forward.d.ts +31 -0
- package/dist/{composition-C0dlyG9U.js → composition-CO6Sak-s.js} +49 -5
- package/dist/{composition-bIBW5_13.mjs → composition-kSuOifuG.mjs} +32 -6
- package/dist/device/cap-vocabulary/entries/appliances.d.ts +1 -1
- package/dist/device/device-control-resolution.d.ts +1 -1
- package/dist/device/device-type.d.ts +4 -0
- package/dist/{err-msg-BCdlR2Li.mjs → err-msg-DWXWc0Di.mjs} +4 -0
- package/dist/{err-msg-COHgq7Mb.js → err-msg-EJhsFHqa.js} +4 -0
- package/dist/generated/addon-api.d.ts +148 -32
- package/dist/generated/addon-cap-facts.d.ts +1 -1
- package/dist/generated/cap-status-types.d.ts +3 -1
- package/dist/generated/capability-router-map.d.ts +5 -2
- package/dist/generated/collection-array-methods.d.ts +2 -2
- package/dist/generated/customize-catalog.d.ts +1 -1
- package/dist/generated/device-local-state.d.ts +3 -0
- package/dist/generated/device-proxy.d.ts +3 -0
- package/dist/generated/device-scoped-caps.d.ts +1 -1
- package/dist/generated/history-catalog.d.ts +1 -1
- package/dist/generated/method-access-map.d.ts +1 -1
- package/dist/generated/method-device-selectors.d.ts +1 -1
- package/dist/generated/runtime-state-durability.d.ts +1 -1
- package/dist/generated/system-proxy.d.ts +2 -2
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1465 -603
- package/dist/index.mjs +1433 -592
- package/dist/interfaces/agent.d.ts +6 -2
- package/dist/interfaces/event-bus.d.ts +1 -1
- package/dist/node.js +2 -2
- package/dist/node.mjs +2 -2
- package/dist/{sleep-C_u6cEAJ.mjs → sleep-6eG9C8Xl.mjs} +223 -72
- package/dist/{sleep-E7qAQwTE.js → sleep-UXDHn-oJ.js} +246 -71
- package/package.json +1 -1
|
@@ -10,15 +10,15 @@
|
|
|
10
10
|
*
|
|
11
11
|
* The composer sets some item fields itself: the key and label (from the
|
|
12
12
|
* entry) and {@link COMPOSED_ITEM_FIXED_FIELDS}. A source for any of them is
|
|
13
|
-
* refused by name (`item-field-reserved`) — `resettable` is
|
|
14
|
-
*
|
|
13
|
+
* refused by name (`item-field-reserved`) — `resettable` is written from the
|
|
14
|
+
* item's `reset` forward (D967): `true` with one, `false` without.
|
|
15
15
|
*/
|
|
16
16
|
import type { CapabilityDefinition } from '../capabilities/capability-definition.js';
|
|
17
17
|
import { type CompositionFieldsFeature } from './composition.js';
|
|
18
18
|
import type { CompositionFeatureMode } from './composition-report.js';
|
|
19
19
|
import { type CompositionPlanResult } from './plan-result.js';
|
|
20
20
|
import type { CapabilityLookup } from './validate-composition.js';
|
|
21
|
-
/** Item fields the composer writes itself, with the value it writes. */
|
|
21
|
+
/** Item fields the composer writes itself, with the value it writes. `resettable` is the default: an item with a `reset` forward writes `true` (D967). */
|
|
22
22
|
export declare const COMPOSED_ITEM_FIXED_FIELDS: {
|
|
23
23
|
readonly resettable: false;
|
|
24
24
|
};
|
|
@@ -4,6 +4,10 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import { z } from 'zod';
|
|
6
6
|
export declare const CompositionProblemCodeSchema: z.ZodEnum<{
|
|
7
|
+
"command-input-missing": "command-input-missing";
|
|
8
|
+
"command-input-unknown": "command-input-unknown";
|
|
9
|
+
"command-method-unknown": "command-method-unknown";
|
|
10
|
+
"command-source-unknown": "command-source-unknown";
|
|
7
11
|
cycle: "cycle";
|
|
8
12
|
"duplicate-target": "duplicate-target";
|
|
9
13
|
"expression-invalid": "expression-invalid";
|
|
@@ -36,6 +40,10 @@ export type CompositionProblemCode = z.infer<typeof CompositionProblemCodeSchema
|
|
|
36
40
|
/** One refusal, named (D391). `path` points into the composition, e.g. `features[0].fields.temperature`. */
|
|
37
41
|
export declare const CompositionProblemSchema: z.ZodObject<{
|
|
38
42
|
code: z.ZodEnum<{
|
|
43
|
+
"command-input-missing": "command-input-missing";
|
|
44
|
+
"command-input-unknown": "command-input-unknown";
|
|
45
|
+
"command-method-unknown": "command-method-unknown";
|
|
46
|
+
"command-source-unknown": "command-source-unknown";
|
|
39
47
|
cycle: "cycle";
|
|
40
48
|
"duplicate-target": "duplicate-target";
|
|
41
49
|
"expression-invalid": "expression-invalid";
|
|
@@ -106,6 +114,7 @@ export declare const CompositionFieldItemSchema: z.ZodObject<{
|
|
|
106
114
|
arrayPath: z.ZodString;
|
|
107
115
|
key: z.ZodString;
|
|
108
116
|
label: z.ZodString;
|
|
117
|
+
resettable: z.ZodOptional<z.ZodBoolean>;
|
|
109
118
|
}, z.core.$strip>;
|
|
110
119
|
export type CompositionFieldItem = z.infer<typeof CompositionFieldItemSchema>;
|
|
111
120
|
export declare const CompositionFieldPlanSchema: z.ZodObject<{
|
|
@@ -115,6 +124,7 @@ export declare const CompositionFieldPlanSchema: z.ZodObject<{
|
|
|
115
124
|
arrayPath: z.ZodString;
|
|
116
125
|
key: z.ZodString;
|
|
117
126
|
label: z.ZodString;
|
|
127
|
+
resettable: z.ZodOptional<z.ZodBoolean>;
|
|
118
128
|
}, z.core.$strip>>;
|
|
119
129
|
featureIndex: z.ZodNumber;
|
|
120
130
|
kind: z.ZodEnum<{
|
|
@@ -256,6 +266,10 @@ export declare const CompositionValidationSchema: z.ZodObject<{
|
|
|
256
266
|
ok: z.ZodBoolean;
|
|
257
267
|
problems: z.ZodArray<z.ZodObject<{
|
|
258
268
|
code: z.ZodEnum<{
|
|
269
|
+
"command-input-missing": "command-input-missing";
|
|
270
|
+
"command-input-unknown": "command-input-unknown";
|
|
271
|
+
"command-method-unknown": "command-method-unknown";
|
|
272
|
+
"command-source-unknown": "command-source-unknown";
|
|
259
273
|
cycle: "cycle";
|
|
260
274
|
"duplicate-target": "duplicate-target";
|
|
261
275
|
"expression-invalid": "expression-invalid";
|
|
@@ -294,6 +308,7 @@ export declare const CompositionValidationSchema: z.ZodObject<{
|
|
|
294
308
|
arrayPath: z.ZodString;
|
|
295
309
|
key: z.ZodString;
|
|
296
310
|
label: z.ZodString;
|
|
311
|
+
resettable: z.ZodOptional<z.ZodBoolean>;
|
|
297
312
|
}, z.core.$strip>>;
|
|
298
313
|
featureIndex: z.ZodNumber;
|
|
299
314
|
kind: z.ZodEnum<{
|
|
@@ -451,6 +466,7 @@ export declare const CompositionFieldStateSchema: z.ZodObject<{
|
|
|
451
466
|
arrayPath: z.ZodString;
|
|
452
467
|
key: z.ZodString;
|
|
453
468
|
label: z.ZodString;
|
|
469
|
+
resettable: z.ZodOptional<z.ZodBoolean>;
|
|
454
470
|
}, z.core.$strip>>;
|
|
455
471
|
state: z.ZodEnum<{
|
|
456
472
|
fresh: "fresh";
|
|
@@ -480,6 +496,7 @@ export declare const CompositionBlockStateSchema: z.ZodObject<{
|
|
|
480
496
|
arrayPath: z.ZodString;
|
|
481
497
|
key: z.ZodString;
|
|
482
498
|
label: z.ZodString;
|
|
499
|
+
resettable: z.ZodOptional<z.ZodBoolean>;
|
|
483
500
|
}, z.core.$strip>>;
|
|
484
501
|
state: z.ZodEnum<{
|
|
485
502
|
fresh: "fresh";
|
|
@@ -249,7 +249,29 @@ export declare const CompositionFieldSourceSchema: z.ZodDiscriminatedUnion<[z.Zo
|
|
|
249
249
|
}>;
|
|
250
250
|
}, z.core.$strip>], "kind">;
|
|
251
251
|
export type CompositionFieldSource = z.infer<typeof CompositionFieldSourceSchema>;
|
|
252
|
-
/**
|
|
252
|
+
/** The marker of a forward argument that takes its value from the built method's input. */
|
|
253
|
+
export declare const FORWARD_INPUT_KEY = "$input";
|
|
254
|
+
/**
|
|
255
|
+
* One value of a forward's `args` template: a constant, `{ $input: '<field>' }`
|
|
256
|
+
* (the value of that field of the BUILT method's input), or a nested record of
|
|
257
|
+
* these — the source method may take a structured input (`control.setValue`).
|
|
258
|
+
*/
|
|
259
|
+
export type CompositionForwardArg = string | number | boolean | {
|
|
260
|
+
readonly $input: string;
|
|
261
|
+
} | {
|
|
262
|
+
readonly [key: string]: CompositionForwardArg;
|
|
263
|
+
};
|
|
264
|
+
export declare const CompositionForwardArgSchema: z.ZodType<CompositionForwardArg>;
|
|
265
|
+
/** True for `{ $input: '<field>' }`. */
|
|
266
|
+
export declare function isForwardInputRef(value: CompositionForwardArg): value is {
|
|
267
|
+
readonly $input: string;
|
|
268
|
+
};
|
|
269
|
+
/**
|
|
270
|
+
* `forward` (D659, amended by D967): one method of a BUILT capability is one
|
|
271
|
+
* call of `cap.method` on `source`. Without `args` the built method's input
|
|
272
|
+
* passes through minus `deviceId`; with `args` the template IS the source's
|
|
273
|
+
* whole input. `deviceId` is always the source's own, never an argument.
|
|
274
|
+
*/
|
|
253
275
|
export declare const CompositionForwardCommandSchema: z.ZodObject<{
|
|
254
276
|
kind: z.ZodLiteral<"forward">;
|
|
255
277
|
source: z.ZodObject<{
|
|
@@ -258,6 +280,7 @@ export declare const CompositionForwardCommandSchema: z.ZodObject<{
|
|
|
258
280
|
}, z.core.$strip>;
|
|
259
281
|
cap: z.ZodString;
|
|
260
282
|
method: z.ZodString;
|
|
283
|
+
args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodType<CompositionForwardArg, unknown, z.core.$ZodTypeInternals<CompositionForwardArg, unknown>>>>;
|
|
261
284
|
}, z.core.$strip>;
|
|
262
285
|
export type CompositionForwardCommand = z.infer<typeof CompositionForwardCommandSchema>;
|
|
263
286
|
export declare const CompositionCommandTargetSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
@@ -268,6 +291,7 @@ export declare const CompositionCommandTargetSchema: z.ZodDiscriminatedUnion<[z.
|
|
|
268
291
|
}, z.core.$strip>;
|
|
269
292
|
cap: z.ZodString;
|
|
270
293
|
method: z.ZodString;
|
|
294
|
+
args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodType<CompositionForwardArg, unknown, z.core.$ZodTypeInternals<CompositionForwardArg, unknown>>>>;
|
|
271
295
|
}, z.core.$strip>, z.ZodObject<{
|
|
272
296
|
kind: z.ZodLiteral<"code">;
|
|
273
297
|
code: z.ZodString;
|
|
@@ -364,6 +388,16 @@ export declare const CompositionItemEntrySchema: z.ZodObject<{
|
|
|
364
388
|
omit: "omit";
|
|
365
389
|
}>;
|
|
366
390
|
}, z.core.$strip>], "kind">>;
|
|
391
|
+
reset: z.ZodOptional<z.ZodObject<{
|
|
392
|
+
kind: z.ZodLiteral<"forward">;
|
|
393
|
+
source: z.ZodObject<{
|
|
394
|
+
addonId: z.ZodString;
|
|
395
|
+
stableId: z.ZodString;
|
|
396
|
+
}, z.core.$strip>;
|
|
397
|
+
cap: z.ZodString;
|
|
398
|
+
method: z.ZodString;
|
|
399
|
+
args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodType<CompositionForwardArg, unknown, z.core.$ZodTypeInternals<CompositionForwardArg, unknown>>>>;
|
|
400
|
+
}, z.core.$strip>>;
|
|
367
401
|
}, z.core.$strip>;
|
|
368
402
|
export type CompositionItemEntry = z.infer<typeof CompositionItemEntrySchema>;
|
|
369
403
|
export declare const CompositionFieldsFeatureSchema: z.ZodObject<{
|
|
@@ -530,6 +564,16 @@ export declare const CompositionFieldsFeatureSchema: z.ZodObject<{
|
|
|
530
564
|
omit: "omit";
|
|
531
565
|
}>;
|
|
532
566
|
}, z.core.$strip>], "kind">>;
|
|
567
|
+
reset: z.ZodOptional<z.ZodObject<{
|
|
568
|
+
kind: z.ZodLiteral<"forward">;
|
|
569
|
+
source: z.ZodObject<{
|
|
570
|
+
addonId: z.ZodString;
|
|
571
|
+
stableId: z.ZodString;
|
|
572
|
+
}, z.core.$strip>;
|
|
573
|
+
cap: z.ZodString;
|
|
574
|
+
method: z.ZodString;
|
|
575
|
+
args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodType<CompositionForwardArg, unknown, z.core.$ZodTypeInternals<CompositionForwardArg, unknown>>>>;
|
|
576
|
+
}, z.core.$strip>>;
|
|
533
577
|
}, z.core.$strip>>>;
|
|
534
578
|
commands: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
535
579
|
kind: z.ZodLiteral<"forward">;
|
|
@@ -539,6 +583,7 @@ export declare const CompositionFieldsFeatureSchema: z.ZodObject<{
|
|
|
539
583
|
}, z.core.$strip>;
|
|
540
584
|
cap: z.ZodString;
|
|
541
585
|
method: z.ZodString;
|
|
586
|
+
args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodType<CompositionForwardArg, unknown, z.core.$ZodTypeInternals<CompositionForwardArg, unknown>>>>;
|
|
542
587
|
}, z.core.$strip>, z.ZodObject<{
|
|
543
588
|
kind: z.ZodLiteral<"code">;
|
|
544
589
|
code: z.ZodString;
|
|
@@ -720,6 +765,16 @@ export declare const CompositionFeatureSchema: z.ZodDiscriminatedUnion<[z.ZodObj
|
|
|
720
765
|
omit: "omit";
|
|
721
766
|
}>;
|
|
722
767
|
}, z.core.$strip>], "kind">>;
|
|
768
|
+
reset: z.ZodOptional<z.ZodObject<{
|
|
769
|
+
kind: z.ZodLiteral<"forward">;
|
|
770
|
+
source: z.ZodObject<{
|
|
771
|
+
addonId: z.ZodString;
|
|
772
|
+
stableId: z.ZodString;
|
|
773
|
+
}, z.core.$strip>;
|
|
774
|
+
cap: z.ZodString;
|
|
775
|
+
method: z.ZodString;
|
|
776
|
+
args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodType<CompositionForwardArg, unknown, z.core.$ZodTypeInternals<CompositionForwardArg, unknown>>>>;
|
|
777
|
+
}, z.core.$strip>>;
|
|
723
778
|
}, z.core.$strip>>>;
|
|
724
779
|
commands: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
725
780
|
kind: z.ZodLiteral<"forward">;
|
|
@@ -729,6 +784,7 @@ export declare const CompositionFeatureSchema: z.ZodDiscriminatedUnion<[z.ZodObj
|
|
|
729
784
|
}, z.core.$strip>;
|
|
730
785
|
cap: z.ZodString;
|
|
731
786
|
method: z.ZodString;
|
|
787
|
+
args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodType<CompositionForwardArg, unknown, z.core.$ZodTypeInternals<CompositionForwardArg, unknown>>>>;
|
|
732
788
|
}, z.core.$strip>, z.ZodObject<{
|
|
733
789
|
kind: z.ZodLiteral<"code">;
|
|
734
790
|
code: z.ZodString;
|
|
@@ -952,6 +1008,16 @@ export declare const CompositionSchema: z.ZodObject<{
|
|
|
952
1008
|
omit: "omit";
|
|
953
1009
|
}>;
|
|
954
1010
|
}, z.core.$strip>], "kind">>;
|
|
1011
|
+
reset: z.ZodOptional<z.ZodObject<{
|
|
1012
|
+
kind: z.ZodLiteral<"forward">;
|
|
1013
|
+
source: z.ZodObject<{
|
|
1014
|
+
addonId: z.ZodString;
|
|
1015
|
+
stableId: z.ZodString;
|
|
1016
|
+
}, z.core.$strip>;
|
|
1017
|
+
cap: z.ZodString;
|
|
1018
|
+
method: z.ZodString;
|
|
1019
|
+
args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodType<CompositionForwardArg, unknown, z.core.$ZodTypeInternals<CompositionForwardArg, unknown>>>>;
|
|
1020
|
+
}, z.core.$strip>>;
|
|
955
1021
|
}, z.core.$strip>>>;
|
|
956
1022
|
commands: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
957
1023
|
kind: z.ZodLiteral<"forward">;
|
|
@@ -961,6 +1027,7 @@ export declare const CompositionSchema: z.ZodObject<{
|
|
|
961
1027
|
}, z.core.$strip>;
|
|
962
1028
|
cap: z.ZodString;
|
|
963
1029
|
method: z.ZodString;
|
|
1030
|
+
args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodType<CompositionForwardArg, unknown, z.core.$ZodTypeInternals<CompositionForwardArg, unknown>>>>;
|
|
964
1031
|
}, z.core.$strip>, z.ZodObject<{
|
|
965
1032
|
kind: z.ZodLiteral<"code">;
|
|
966
1033
|
code: z.ZodString;
|
|
@@ -13,6 +13,8 @@ export * from './evaluate-field.js';
|
|
|
13
13
|
export * from './examples.js';
|
|
14
14
|
export * from './expression-kinds.js';
|
|
15
15
|
export * from './presets/numeric-transforms.js';
|
|
16
|
+
export * from './presets/pet-fountain.js';
|
|
16
17
|
export * from './state-fields.js';
|
|
17
18
|
export * from './validate-composition.js';
|
|
19
|
+
export * from './validate-forward.js';
|
|
18
20
|
export * from './cards/index.js';
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { type Composition, type CompositionSourceRef } from '../composition.js';
|
|
2
|
+
/** The optional filter of a fountain: its remaining days and the "filter changed" button. */
|
|
3
|
+
export interface PetFountainFilterSources {
|
|
4
|
+
/** An `enum-sensor` whose value is the days left, as a numeric string. */
|
|
5
|
+
readonly daysRemaining: CompositionSourceRef;
|
|
6
|
+
/** A `button` the filter reset presses. */
|
|
7
|
+
readonly changed: CompositionSourceRef;
|
|
8
|
+
}
|
|
9
|
+
/** The entities a pet fountain is built from. */
|
|
10
|
+
export interface PetFountainEntitySources {
|
|
11
|
+
/** `enum-sensor.value`: tank level, percent as text. */
|
|
12
|
+
readonly waterLevel: CompositionSourceRef;
|
|
13
|
+
/** `enum-sensor.value`: tank volume, millilitres as text. */
|
|
14
|
+
readonly waterVolume: CompositionSourceRef;
|
|
15
|
+
/** `switch`: the pump. */
|
|
16
|
+
readonly pump: CompositionSourceRef;
|
|
17
|
+
/** `switch`: the on/off duty cycle. */
|
|
18
|
+
readonly pumpInterval: CompositionSourceRef;
|
|
19
|
+
/** `control` (numeric): minutes the pump runs per cycle. */
|
|
20
|
+
readonly pumpOnMinutes: CompositionSourceRef;
|
|
21
|
+
/** `control` (numeric): minutes the pump rests per cycle. */
|
|
22
|
+
readonly pumpOffMinutes: CompositionSourceRef;
|
|
23
|
+
/** `enum-sensor.value`: the last drink, millilitres as text. */
|
|
24
|
+
readonly lastDrink: CompositionSourceRef;
|
|
25
|
+
/** `enum-sensor.value`: this hour's drinking, millilitres as text. */
|
|
26
|
+
readonly currentHourDrink: CompositionSourceRef;
|
|
27
|
+
/** `enum-sensor.value`: the rolling 24 h drinking, millilitres as text. */
|
|
28
|
+
readonly last24hDrink: CompositionSourceRef;
|
|
29
|
+
/** `enum-sensor.value`: today's drinking, millilitres as text. */
|
|
30
|
+
readonly todayDrink: CompositionSourceRef;
|
|
31
|
+
/** `button`: clears the rolling daily counters. */
|
|
32
|
+
readonly clearDaily: CompositionSourceRef;
|
|
33
|
+
/** Present when the fountain has a filter entity pair; adds a `filter` consumable. */
|
|
34
|
+
readonly filter?: PetFountainFilterSources;
|
|
35
|
+
}
|
|
36
|
+
export declare function petFountainFromEntitiesComposition(sources: PetFountainEntitySources): Composition;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { CapabilityDefinition } from '../capabilities/capability-definition.js';
|
|
2
|
+
import { type Composition, type CompositionFieldsFeature, type CompositionForwardCommand, type CompositionSourceRef } from './composition.js';
|
|
3
|
+
import type { CompositionProblem } from './composition-report.js';
|
|
4
|
+
import type { CapabilityLookup, CompositionSourceDescription } from './validate-composition.js';
|
|
5
|
+
/** A forward and where it sits in the composition, for a refusal that names the place. */
|
|
6
|
+
export interface PlacedForward {
|
|
7
|
+
/** `features[0].commands.setPump` or `features[0].items.filter.reset`. */
|
|
8
|
+
readonly at: string;
|
|
9
|
+
/** The built method it serves. */
|
|
10
|
+
readonly method: string;
|
|
11
|
+
/** Set for an item's `reset`: the item key selects the command and is not an argument. */
|
|
12
|
+
readonly itemKey?: string;
|
|
13
|
+
readonly command: CompositionForwardCommand;
|
|
14
|
+
}
|
|
15
|
+
export declare const DEVICE_ID_FIELD = "deviceId";
|
|
16
|
+
/** Every forward of a feature: the method commands, then each item's `reset`. */
|
|
17
|
+
export declare function featureForwards(feature: CompositionFieldsFeature, featureIndex: number): readonly PlacedForward[];
|
|
18
|
+
/** Every source a forward of an enabled feature calls, once. */
|
|
19
|
+
export declare function forwardSourceRefs(composition: Composition): readonly CompositionSourceRef[];
|
|
20
|
+
/** The methods a BUILT cap must give a command: served, and not answered by the composer itself. */
|
|
21
|
+
export declare function commandedMethods(def: CapabilityDefinition): readonly string[];
|
|
22
|
+
/** One forward against the built cap's method and the source cap's method. */
|
|
23
|
+
export declare function forwardProblems(built: CapabilityDefinition, forward: PlacedForward, lookupCap: CapabilityLookup): readonly CompositionProblem[];
|
|
24
|
+
/** A command must name a method the built cap serves and the composer does not answer itself. */
|
|
25
|
+
export declare function commandMethodProblems(built: CapabilityDefinition, feature: CompositionFieldsFeature, at: string): readonly CompositionProblem[];
|
|
26
|
+
/**
|
|
27
|
+
* The source DEVICES of the forwards, read: each must exist and bind the cap it
|
|
28
|
+
* is called on. A forward onto an unread device is refused rather than stored
|
|
29
|
+
* unchecked, like every other source (D391).
|
|
30
|
+
*/
|
|
31
|
+
export declare function forwardSourceProblems(composition: Composition, sources: ReadonlyMap<string, CompositionSourceDescription>): readonly CompositionProblem[];
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const require_err_msg = require("./err-msg-
|
|
1
|
+
const require_err_msg = require("./err-msg-EJhsFHqa.js");
|
|
2
2
|
let zod = require("zod");
|
|
3
3
|
let node_crypto = require("node:crypto");
|
|
4
4
|
//#region src/ffmpeg/invocation.ts
|
|
@@ -3205,12 +3205,32 @@ var CompositionFieldSourceSchema = zod.z.discriminatedUnion("kind", [
|
|
|
3205
3205
|
CompositionAggregateSourceSchema,
|
|
3206
3206
|
CompositionSeriesSourceSchema
|
|
3207
3207
|
]);
|
|
3208
|
-
/**
|
|
3208
|
+
/** The marker of a forward argument that takes its value from the built method's input. */
|
|
3209
|
+
var FORWARD_INPUT_KEY = "$input";
|
|
3210
|
+
var forwardArgUnion = zod.z.union([
|
|
3211
|
+
zod.z.string(),
|
|
3212
|
+
zod.z.number(),
|
|
3213
|
+
zod.z.boolean(),
|
|
3214
|
+
zod.z.strictObject({ [FORWARD_INPUT_KEY]: zod.z.string().min(1) }),
|
|
3215
|
+
zod.z.record(zod.z.string().min(1), zod.z.lazy(() => forwardArgUnion))
|
|
3216
|
+
]);
|
|
3217
|
+
var CompositionForwardArgSchema = forwardArgUnion;
|
|
3218
|
+
/** True for `{ $input: '<field>' }`. */
|
|
3219
|
+
function isForwardInputRef(value) {
|
|
3220
|
+
return typeof value === "object" && typeof value.$input === "string";
|
|
3221
|
+
}
|
|
3222
|
+
/**
|
|
3223
|
+
* `forward` (D659, amended by D967): one method of a BUILT capability is one
|
|
3224
|
+
* call of `cap.method` on `source`. Without `args` the built method's input
|
|
3225
|
+
* passes through minus `deviceId`; with `args` the template IS the source's
|
|
3226
|
+
* whole input. `deviceId` is always the source's own, never an argument.
|
|
3227
|
+
*/
|
|
3209
3228
|
var CompositionForwardCommandSchema = zod.z.object({
|
|
3210
3229
|
kind: zod.z.literal("forward"),
|
|
3211
3230
|
source: CompositionSourceRefSchema,
|
|
3212
3231
|
cap: zod.z.string().min(1),
|
|
3213
|
-
method: zod.z.string().min(1)
|
|
3232
|
+
method: zod.z.string().min(1),
|
|
3233
|
+
args: zod.z.record(zod.z.string().min(1), CompositionForwardArgSchema).optional()
|
|
3214
3234
|
});
|
|
3215
3235
|
var CompositionCommandTargetSchema = zod.z.discriminatedUnion("kind", [CompositionForwardCommandSchema, CompositionCodeSourceSchema]);
|
|
3216
3236
|
/** An item key inside an item-array cap (`consumables.items[<key>]`). */
|
|
@@ -3225,7 +3245,13 @@ var COMPOSITION_ITEM_ARRAY_PATH = "items";
|
|
|
3225
3245
|
*/
|
|
3226
3246
|
var CompositionItemEntrySchema = zod.z.object({
|
|
3227
3247
|
label: zod.z.string().min(1).max(80),
|
|
3228
|
-
fields: zod.z.record(zod.z.string().min(1), CompositionFieldSourceSchema)
|
|
3248
|
+
fields: zod.z.record(zod.z.string().min(1), CompositionFieldSourceSchema),
|
|
3249
|
+
/**
|
|
3250
|
+
* What the cap's `reset` does for THIS item (consumables). Present = the item
|
|
3251
|
+
* is resettable and a `reset` call naming its key forwards here. The item key
|
|
3252
|
+
* selects the command, so it is never an argument: there is no pass-through.
|
|
3253
|
+
*/
|
|
3254
|
+
reset: CompositionForwardCommandSchema.optional()
|
|
3229
3255
|
});
|
|
3230
3256
|
var CompositionFieldsFeatureSchema = zod.z.object({
|
|
3231
3257
|
kind: zod.z.literal("fields"),
|
|
@@ -3237,7 +3263,7 @@ var CompositionFieldsFeatureSchema = zod.z.object({
|
|
|
3237
3263
|
* owns the WHOLE array field: the composed value holds exactly these items.
|
|
3238
3264
|
*/
|
|
3239
3265
|
items: zod.z.record(zod.z.string().regex(COMPOSITION_ITEM_KEY_RE), CompositionItemEntrySchema).refine((items) => Object.keys(items).length <= 16, { message: `at most 16 items` }).optional(),
|
|
3240
|
-
/**
|
|
3266
|
+
/** Method name → what serves it. Only a BUILT capability takes commands (D967). */
|
|
3241
3267
|
commands: zod.z.record(zod.z.string().min(1), CompositionCommandTargetSchema).optional()
|
|
3242
3268
|
});
|
|
3243
3269
|
/** RESERVED for slice 3: a media / data-plane cap, whole, from one source. */
|
|
@@ -3524,6 +3550,12 @@ Object.defineProperty(exports, "CompositionFieldsFeatureSchema", {
|
|
|
3524
3550
|
return CompositionFieldsFeatureSchema;
|
|
3525
3551
|
}
|
|
3526
3552
|
});
|
|
3553
|
+
Object.defineProperty(exports, "CompositionForwardArgSchema", {
|
|
3554
|
+
enumerable: true,
|
|
3555
|
+
get: function() {
|
|
3556
|
+
return CompositionForwardArgSchema;
|
|
3557
|
+
}
|
|
3558
|
+
});
|
|
3527
3559
|
Object.defineProperty(exports, "CompositionForwardCommandSchema", {
|
|
3528
3560
|
enumerable: true,
|
|
3529
3561
|
get: function() {
|
|
@@ -3680,6 +3712,12 @@ Object.defineProperty(exports, "FFMPEG_RELEASE", {
|
|
|
3680
3712
|
return FFMPEG_RELEASE;
|
|
3681
3713
|
}
|
|
3682
3714
|
});
|
|
3715
|
+
Object.defineProperty(exports, "FORWARD_INPUT_KEY", {
|
|
3716
|
+
enumerable: true,
|
|
3717
|
+
get: function() {
|
|
3718
|
+
return FORWARD_INPUT_KEY;
|
|
3719
|
+
}
|
|
3720
|
+
});
|
|
3683
3721
|
Object.defineProperty(exports, "Fmp4BoxSplitter", {
|
|
3684
3722
|
enumerable: true,
|
|
3685
3723
|
get: function() {
|
|
@@ -4166,6 +4204,12 @@ Object.defineProperty(exports, "isApplianceKind", {
|
|
|
4166
4204
|
return isApplianceKind;
|
|
4167
4205
|
}
|
|
4168
4206
|
});
|
|
4207
|
+
Object.defineProperty(exports, "isForwardInputRef", {
|
|
4208
|
+
enumerable: true,
|
|
4209
|
+
get: function() {
|
|
4210
|
+
return isForwardInputRef;
|
|
4211
|
+
}
|
|
4212
|
+
});
|
|
4169
4213
|
Object.defineProperty(exports, "isHistoryHelper", {
|
|
4170
4214
|
enumerable: true,
|
|
4171
4215
|
get: function() {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as DeviceType, i as DeviceRole } from "./err-msg-
|
|
1
|
+
import { a as DeviceType, i as DeviceRole } from "./err-msg-DWXWc0Di.mjs";
|
|
2
2
|
import { z } from "zod";
|
|
3
3
|
import { createHash } from "node:crypto";
|
|
4
4
|
//#region src/ffmpeg/invocation.ts
|
|
@@ -3205,12 +3205,32 @@ var CompositionFieldSourceSchema = z.discriminatedUnion("kind", [
|
|
|
3205
3205
|
CompositionAggregateSourceSchema,
|
|
3206
3206
|
CompositionSeriesSourceSchema
|
|
3207
3207
|
]);
|
|
3208
|
-
/**
|
|
3208
|
+
/** The marker of a forward argument that takes its value from the built method's input. */
|
|
3209
|
+
var FORWARD_INPUT_KEY = "$input";
|
|
3210
|
+
var forwardArgUnion = z.union([
|
|
3211
|
+
z.string(),
|
|
3212
|
+
z.number(),
|
|
3213
|
+
z.boolean(),
|
|
3214
|
+
z.strictObject({ [FORWARD_INPUT_KEY]: z.string().min(1) }),
|
|
3215
|
+
z.record(z.string().min(1), z.lazy(() => forwardArgUnion))
|
|
3216
|
+
]);
|
|
3217
|
+
var CompositionForwardArgSchema = forwardArgUnion;
|
|
3218
|
+
/** True for `{ $input: '<field>' }`. */
|
|
3219
|
+
function isForwardInputRef(value) {
|
|
3220
|
+
return typeof value === "object" && typeof value.$input === "string";
|
|
3221
|
+
}
|
|
3222
|
+
/**
|
|
3223
|
+
* `forward` (D659, amended by D967): one method of a BUILT capability is one
|
|
3224
|
+
* call of `cap.method` on `source`. Without `args` the built method's input
|
|
3225
|
+
* passes through minus `deviceId`; with `args` the template IS the source's
|
|
3226
|
+
* whole input. `deviceId` is always the source's own, never an argument.
|
|
3227
|
+
*/
|
|
3209
3228
|
var CompositionForwardCommandSchema = z.object({
|
|
3210
3229
|
kind: z.literal("forward"),
|
|
3211
3230
|
source: CompositionSourceRefSchema,
|
|
3212
3231
|
cap: z.string().min(1),
|
|
3213
|
-
method: z.string().min(1)
|
|
3232
|
+
method: z.string().min(1),
|
|
3233
|
+
args: z.record(z.string().min(1), CompositionForwardArgSchema).optional()
|
|
3214
3234
|
});
|
|
3215
3235
|
var CompositionCommandTargetSchema = z.discriminatedUnion("kind", [CompositionForwardCommandSchema, CompositionCodeSourceSchema]);
|
|
3216
3236
|
/** An item key inside an item-array cap (`consumables.items[<key>]`). */
|
|
@@ -3225,7 +3245,13 @@ var COMPOSITION_ITEM_ARRAY_PATH = "items";
|
|
|
3225
3245
|
*/
|
|
3226
3246
|
var CompositionItemEntrySchema = z.object({
|
|
3227
3247
|
label: z.string().min(1).max(80),
|
|
3228
|
-
fields: z.record(z.string().min(1), CompositionFieldSourceSchema)
|
|
3248
|
+
fields: z.record(z.string().min(1), CompositionFieldSourceSchema),
|
|
3249
|
+
/**
|
|
3250
|
+
* What the cap's `reset` does for THIS item (consumables). Present = the item
|
|
3251
|
+
* is resettable and a `reset` call naming its key forwards here. The item key
|
|
3252
|
+
* selects the command, so it is never an argument: there is no pass-through.
|
|
3253
|
+
*/
|
|
3254
|
+
reset: CompositionForwardCommandSchema.optional()
|
|
3229
3255
|
});
|
|
3230
3256
|
var CompositionFieldsFeatureSchema = z.object({
|
|
3231
3257
|
kind: z.literal("fields"),
|
|
@@ -3237,7 +3263,7 @@ var CompositionFieldsFeatureSchema = z.object({
|
|
|
3237
3263
|
* owns the WHOLE array field: the composed value holds exactly these items.
|
|
3238
3264
|
*/
|
|
3239
3265
|
items: z.record(z.string().regex(COMPOSITION_ITEM_KEY_RE), CompositionItemEntrySchema).refine((items) => Object.keys(items).length <= 16, { message: `at most 16 items` }).optional(),
|
|
3240
|
-
/**
|
|
3266
|
+
/** Method name → what serves it. Only a BUILT capability takes commands (D967). */
|
|
3241
3267
|
commands: z.record(z.string().min(1), CompositionCommandTargetSchema).optional()
|
|
3242
3268
|
});
|
|
3243
3269
|
/** RESERVED for slice 3: a media / data-plane cap, whole, from one source. */
|
|
@@ -3350,4 +3376,4 @@ function featureSources(feature) {
|
|
|
3350
3376
|
return featureFieldEntries(feature).map((e) => e.source);
|
|
3351
3377
|
}
|
|
3352
3378
|
//#endregion
|
|
3353
|
-
export {
|
|
3379
|
+
export { ExpressionHelperSpecSchema as $, pickVideoEncoder as $n, evaluateExpressionSource as $t, MAX_COMPOSITION_ITEMS as A, evaluateSensorEdge as An, nextLocalMidnight as At, fieldReads as B, getFfmpegDownloadUrl as Bn, evaluateStatistic as Bt, CompositionSchema as C, ExpressionEvalError as Cn, MIN_CUSTOM_MINUTES as Ct, MAX_COMPOSITION_CODE_LENGTH as D, SOURCE_CAP_ACTIVE_FIELD as Dn, StatisticWindowSchema as Dt, FORWARD_INPUT_KEY as E, SOURCE_CAPS as En, RollingWindowSchema as Et, compositionReadKey as F, FFMPEG_PATH_ENV as Fn, rollingDurationMs as Ft, ActiveCriterionSchema as G, audioPlanFromEncodeProfile as Gn, APPLIANCE_KINDS as Gt, ACTIVE_CRITERIA as H, Fmp4BoxSplitter as Hn, KWH_PER_WATT_MS as Ht, compositionSliceKey as I, chooseFfmpegBinary as In, statisticCadenceMs as It, ArithmeticHelperSpecSchema as J, buildInputArgs as Jn, isApplianceKind as Jt, AggregateReducerSchema as K, buildAudioArgs as Kn, APPLIANCE_TEMPLATE_ID as Kt, compositionSourceKey as L, ffmpegBinaryName as Ln, SERIES_KINDS as Lt, composedDeviceStableId as M, isSourceCap as Mn, openStatistic as Mt, compositionFeatureEnabled as N, sliceActiveValue as Nn, planResetTier as Nt, MAX_COMPOSITION_FEATURES as O, SOURCE_CAP_CHANGED_AT_FIELD as On, integralCadenceMs as Ot, compositionItemFieldPath as P, sliceChangedAt as Pn, planStatisticTier as Pt, EXPRESSION_OUTPUTS as Q, logBannerArgs as Qn, createStatefulExpressionMemory as Qt, featureFieldEntries as R, FFMPEG_RELEASE as Rn, STATISTIC_STATS as Rt, CompositionPassthroughFeatureSchema as S, isStatefulBuiltin as Sn, MINUTE_MS as St, CompositionTargetSchema as T, DEFAULT_FIRST_SIGHTING_FRESHNESS_MS as Tn, ROLLING_SPANS as Tt, AGGREGATE_REDUCERS as U, AUDIO_PRESETS as Un, wattMillisecondsToKwh as Ut, isForwardInputRef as V, canonicalHash as Vn, integrateReading as Vt, ARITHMETIC_OPS as W, RESTREAM_INPUT_PROBE as Wn, APPLIANCE_DEFAULTS as Wt, DERIVATIVE_UNITS as X, invocationFromEncodeProfile as Xn, EXPRESSION_INJECTED_NOW as Xt, BINARY_AGGREGATES as Y, buildVideoArgs as Yn, sourcePickForAppliance as Yt, DerivativeHelperSpecSchema as Z, isSoftwareDecode as Zn, cloneStatefulExpressionMemory as Zt, CompositionForwardCommandSchema as _, EXPRESSION_BUILTINS as _n, DEFAULT_HISTORY_RETENTION as _t, CUSTOMIZATION_BLOCK_NAME_PREFIX as a, compileExpression as an, INTEGRAL_OUTPUTS as at, CompositionLiteralBindingSchema as b, evaluateCount as bn, HISTORY_TIERS as bt, CompositionCodeSourceSchema as c, tokenize as cn, NUMERIC_AGGREGATES as ct, CompositionExpressionSourceSchema as d, MAX_EXPRESSION_AST_NODES as dn, helperMembers as dt, evaluateStatefulExpressionCall as en, resolveStreamMaps as er, GROUP_TEMPLATE_IDS as et, CompositionFeatureSchema as f, MAX_EXPRESSION_BINDINGS as fn, isHistoryHelper as ft, CompositionForwardArgSchema as g, RESERVED_BINDING_NAMES as gn, DAY_MS as gt, CompositionFieldsFeatureSchema as h, MAX_EXPRESSION_SOURCE_LENGTH as hn, CalendarWindowSchema as ht, COMPOSITION_ITEM_KEY_RE as i, evaluateAst as in, HelperSpecSchema as it, composedDeviceRef as j, evaluateSensorLevelEdge as jn, openReset as jt, MAX_COMPOSITION_FIELDS_PER_FEATURE as k, SOURCE_DEVICE_TYPES as kn, maxDurationMs as kt, CompositionCommandTargetSchema as l, EXPRESSION_COMPILE_CACHE_CAPACITY as ln, StatisticHelperSpecSchema as lt, CompositionFieldSourceSchema as m, MAX_EXPRESSION_EVAL_STEPS as mn, CALENDAR_PERIODS as mt, COMPOSER_ADDON_ID as n, validateExpressionSource as nn, GroupTemplateIdSchema as nt, CompositionAggregateSourceSchema as o, compileExpressionSafe as on, IntegralHelperSpecSchema as ot, CompositionFieldReadSchema as p, MAX_EXPRESSION_CALL_ARGS as pn, CompositionSourceRefSchema as pt, ApplianceHelperSpecSchema as q, buildFfmpegArgs as qn, applianceDeviceType as qt, COMPOSITION_ITEM_ARRAY_PATH as r, createExpressionScope as rn, HelperMemberSchema as rt, CompositionBindingSchema as s, parseExpression as sn, MAX_HELPER_MEMBERS as st, COMPOSED_DEVICE_STABLE_ID_PREFIX as t, toExpressionValue as tn, GroupHelperSpecSchema as tt, CompositionExistingTargetSchema as u, EXPRESSION_IDENTIFIER_RE as un, ThresholdHelperSpecSchema as ut, CompositionFromSourceSchema as v, EXPRESSION_BUILTIN_NAMES as vn, HISTORY_FAST_MS as vt, CompositionSeriesSourceSchema as w, ExpressionParseError as wn, RESET_PERIODS as wt, CompositionNewTargetSchema as x, evaluateRose as xn, HOUR_MS as xt, CompositionItemEntrySchema as y, disarmRoseMemory as yn, HISTORY_SLOW_MS as yt, featureSources as z, getFfmpegArtifact as zn, evaluateDerivative as zt };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { CapVocabularySlice } from '../types.js';
|
|
2
|
-
type ApplianceCap = 'vacuum-control' | 'lawn-mower-control' | 'dishwasher' | 'pet-feeder' | 'media-player' | 'consumables' | 'running-state' | 'navigation' | 'script-runner' | 'automation-control' | 'notifier' | 'update';
|
|
2
|
+
type ApplianceCap = 'vacuum-control' | 'lawn-mower-control' | 'dishwasher' | 'pet-feeder' | 'pet-fountain' | 'media-player' | 'consumables' | 'running-state' | 'navigation' | 'script-runner' | 'automation-control' | 'notifier' | 'update';
|
|
3
3
|
/** The appliance family of the vocabulary. */
|
|
4
4
|
export declare const APPLIANCE_CAP_VOCABULARY: CapVocabularySlice<ApplianceCap>;
|
|
5
5
|
export {};
|
|
@@ -37,7 +37,7 @@ import { DeviceType } from './device-type.js';
|
|
|
37
37
|
* kind can back several device types (`'switch'` ← Switch + Siren, `'sensor'`
|
|
38
38
|
* ← Sensor + Presence, `'dummy'` ← every placeholder/non-controllable type).
|
|
39
39
|
*/
|
|
40
|
-
export type DeviceControlKind = 'cover' | 'valve' | 'humidifier' | 'water-heater' | 'switch' | 'light' | 'fan' | 'sensor' | 'thermostat' | 'climate' | 'button' | 'update' | 'lock' | 'media-player' | 'alarm' | 'control' | 'weather' | 'vacuum' | 'lawn-mower' | 'image' | 'pet-feeder' | 'dishwasher' | 'script' | 'automation' | 'dummy';
|
|
40
|
+
export type DeviceControlKind = 'cover' | 'valve' | 'humidifier' | 'water-heater' | 'switch' | 'light' | 'fan' | 'sensor' | 'thermostat' | 'climate' | 'button' | 'update' | 'lock' | 'media-player' | 'alarm' | 'control' | 'weather' | 'vacuum' | 'lawn-mower' | 'image' | 'pet-feeder' | 'pet-fountain' | 'dishwasher' | 'script' | 'automation' | 'dummy';
|
|
41
41
|
/**
|
|
42
42
|
* Exhaustive `DeviceType` → `DeviceControlKind` map. Omitting a new enum member
|
|
43
43
|
* fails the build here (the single place the type→kind decision is encoded).
|
|
@@ -89,6 +89,10 @@ export declare enum DeviceType {
|
|
|
89
89
|
* native PetKit (`nodepetkit` `FeederDevice`), reusable by other feeder
|
|
90
90
|
* integrations sharing the same food/desiccant/hopper surface. */
|
|
91
91
|
PetFeeder = "pet-feeder",
|
|
92
|
+
/** Pet water fountain — tank level, water drunk, pump and its duty cycle.
|
|
93
|
+
* Installed with the `pet-fountain` cap. Reaches CamStack as loose entities
|
|
94
|
+
* of a container and is BUILT as a composed device (D967). */
|
|
95
|
+
PetFountain = "pet-fountain",
|
|
92
96
|
/** Built-in dishwasher — program lifecycle, door / remote-start gates,
|
|
93
97
|
* salt and rinse-aid levels. Installed with the `dishwasher` cap.
|
|
94
98
|
* Sources: native Bosch Home Connect, reusable by similar integrations.
|
|
@@ -90,6 +90,10 @@ var DeviceType = /* @__PURE__ */ function(DeviceType) {
|
|
|
90
90
|
* native PetKit (`nodepetkit` `FeederDevice`), reusable by other feeder
|
|
91
91
|
* integrations sharing the same food/desiccant/hopper surface. */
|
|
92
92
|
DeviceType["PetFeeder"] = "pet-feeder";
|
|
93
|
+
/** Pet water fountain — tank level, water drunk, pump and its duty cycle.
|
|
94
|
+
* Installed with the `pet-fountain` cap. Reaches CamStack as loose entities
|
|
95
|
+
* of a container and is BUILT as a composed device (D967). */
|
|
96
|
+
DeviceType["PetFountain"] = "pet-fountain";
|
|
93
97
|
/** Built-in dishwasher — program lifecycle, door / remote-start gates,
|
|
94
98
|
* salt and rinse-aid levels. Installed with the `dishwasher` cap.
|
|
95
99
|
* Sources: native Bosch Home Connect, reusable by similar integrations.
|
|
@@ -90,6 +90,10 @@ var DeviceType = /* @__PURE__ */ function(DeviceType) {
|
|
|
90
90
|
* native PetKit (`nodepetkit` `FeederDevice`), reusable by other feeder
|
|
91
91
|
* integrations sharing the same food/desiccant/hopper surface. */
|
|
92
92
|
DeviceType["PetFeeder"] = "pet-feeder";
|
|
93
|
+
/** Pet water fountain — tank level, water drunk, pump and its duty cycle.
|
|
94
|
+
* Installed with the `pet-fountain` cap. Reaches CamStack as loose entities
|
|
95
|
+
* of a container and is BUILT as a composed device (D967). */
|
|
96
|
+
DeviceType["PetFountain"] = "pet-fountain";
|
|
93
97
|
/** Built-in dishwasher — program lifecycle, door / remote-start gates,
|
|
94
98
|
* salt and rinse-aid levels. Installed with the `dishwasher` cap.
|
|
95
99
|
* Sources: native Bosch Home Connect, reusable by similar integrations.
|