@camstack/types 1.2.420 → 1.2.422
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 +2 -2
- package/dist/addon.mjs +2 -2
- package/dist/capabilities/composer.cap.d.ts +129 -21
- package/dist/capabilities/core-blocks.cap.d.ts +929 -151
- package/dist/capabilities/index.d.ts +3 -1
- package/dist/capabilities/meter.cap.d.ts +53 -0
- package/dist/capabilities/power-meter.cap.d.ts +1 -1
- package/dist/capabilities/running-state.cap.d.ts +1 -1
- package/dist/client.js +12 -1
- package/dist/client.mjs +12 -1
- package/dist/composition/composition-report.d.ts +45 -0
- package/dist/composition/composition.d.ts +196 -7
- package/dist/composition/helpers/appliance.d.ts +28 -0
- package/dist/composition/helpers/compile-history.d.ts +13 -0
- package/dist/composition/helpers/compile.d.ts +3 -2
- package/dist/composition/helpers/energy.d.ts +8 -0
- package/dist/composition/helpers/history-math.d.ts +39 -0
- package/dist/composition/helpers/history-window.d.ts +71 -0
- package/dist/composition/helpers/index.d.ts +7 -2
- package/dist/composition/helpers/save.d.ts +1 -1
- package/dist/composition/helpers/source-pick.d.ts +2 -0
- package/dist/composition/helpers/spec.d.ts +39 -6
- package/dist/{composition-re1aezX9.js → composition-CPRAP41h.js} +924 -7
- package/dist/{composition-OhpuespA.mjs → composition-CpETZ4HL.mjs} +679 -8
- package/dist/device/appliance-export.d.ts +25 -0
- package/dist/device/cap-vocabulary/entries/sensors.d.ts +1 -1
- package/dist/device/cap-vocabulary/types.d.ts +10 -0
- package/dist/device/device-type.d.ts +8 -2
- package/dist/{err-msg-BXKzRBwg.mjs → err-msg-DIorGYeC.mjs} +7 -1
- package/dist/{err-msg-BhVbr0NX.js → err-msg-U7lLUMNz.js} +7 -1
- package/dist/generated/addon-api.d.ts +14 -0
- 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/customize-catalog.d.ts +2 -2
- 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/index.d.ts +1 -0
- package/dist/index.js +1063 -562
- package/dist/index.mjs +1013 -563
- package/dist/node.js +2 -2
- package/dist/node.mjs +2 -2
- package/dist/{sleep-bykKrTgu.mjs → sleep-0sD_LHLI.mjs} +10 -1
- package/dist/{sleep-YJ6FVsUu.js → sleep-CEKGW7A5.js} +10 -1
- package/package.json +1 -1
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* How a washer, dryer or dishwasher leaves CamStack.
|
|
3
|
+
*
|
|
4
|
+
* Home Assistant has no laundry domain: the device is offered, and what
|
|
5
|
+
* travels is its power reading. The others have a laundry type that this
|
|
6
|
+
* export cannot honour yet, so they are named and withheld.
|
|
7
|
+
*/
|
|
8
|
+
import { DeviceType } from './device-type.js';
|
|
9
|
+
export type PlugApplianceType = DeviceType.Washer | DeviceType.Dryer | DeviceType.Dishwasher;
|
|
10
|
+
export declare const PLUG_APPLIANCE_TYPES: readonly PlugApplianceType[];
|
|
11
|
+
export interface ApplianceExported {
|
|
12
|
+
readonly exported: true;
|
|
13
|
+
/** What the other ecosystem actually receives. */
|
|
14
|
+
readonly as: string;
|
|
15
|
+
}
|
|
16
|
+
export interface ApplianceNotExported {
|
|
17
|
+
readonly exported: false;
|
|
18
|
+
readonly reason: string;
|
|
19
|
+
}
|
|
20
|
+
export type ApplianceExportDecision = ApplianceExported | ApplianceNotExported;
|
|
21
|
+
export type ApplianceExportEcosystem = 'ha' | 'homekit' | 'alexa' | 'google' | 'matter';
|
|
22
|
+
export declare const APPLIANCE_EXPORT: Readonly<Record<ApplianceExportEcosystem, Readonly<Record<PlugApplianceType, ApplianceExportDecision>>>>;
|
|
23
|
+
export declare function isPlugApplianceType(deviceType: string): deviceType is PlugApplianceType;
|
|
24
|
+
/** The decision for this ecosystem, or null when the type is not an appliance. */
|
|
25
|
+
export declare function applianceExport(ecosystem: ApplianceExportEcosystem, deviceType: string): ApplianceExportDecision | null;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { CapVocabularySlice } from '../types.js';
|
|
2
|
-
type SensorCap = 'air-quality-sensor' | 'ambient-light-sensor' | 'binary' | 'carbon-monoxide' | 'connectivity' | 'contact' | 'enum-sensor' | 'flood' | 'gas' | 'group-commands' | 'group-status' | 'humidity-sensor' | 'motion' | 'numeric-sensor' | 'power-meter' | 'presence' | 'pressure-sensor' | 'smoke' | 'tamper' | 'temperature-sensor' | 'vibration' | 'weather' | 'battery' | 'network-link' | 'device-status' | 'doorbell' | 'event-emitter';
|
|
2
|
+
type SensorCap = 'air-quality-sensor' | 'ambient-light-sensor' | 'binary' | 'carbon-monoxide' | 'connectivity' | 'contact' | 'enum-sensor' | 'flood' | 'gas' | 'group-commands' | 'group-status' | 'humidity-sensor' | 'meter' | 'motion' | 'numeric-sensor' | 'power-meter' | 'presence' | 'pressure-sensor' | 'smoke' | 'tamper' | 'temperature-sensor' | 'vibration' | 'weather' | 'battery' | 'network-link' | 'device-status' | 'doorbell' | 'event-emitter';
|
|
3
3
|
/** The sensor family of the vocabulary. */
|
|
4
4
|
export declare const SENSOR_CAP_VOCABULARY: CapVocabularySlice<SensorCap>;
|
|
5
5
|
export {};
|
|
@@ -238,6 +238,12 @@ export interface VocabStateWording {
|
|
|
238
238
|
readonly quantity?: L10n;
|
|
239
239
|
readonly icon?: VocabIcon;
|
|
240
240
|
}
|
|
241
|
+
/** Re-wording of one declared event for a kind of device. */
|
|
242
|
+
export interface VocabEventWording {
|
|
243
|
+
readonly label?: L10n;
|
|
244
|
+
readonly phrase?: L10n;
|
|
245
|
+
readonly icon?: VocabIcon;
|
|
246
|
+
}
|
|
241
247
|
/** Wording that differs for a device type or role (a switch that is a siren). */
|
|
242
248
|
export interface VocabWording<C extends VocabCapName> {
|
|
243
249
|
/** Keyed by action id. */
|
|
@@ -245,6 +251,9 @@ export interface VocabWording<C extends VocabCapName> {
|
|
|
245
251
|
readonly state?: {
|
|
246
252
|
readonly [F in CapStatusField<C>]?: VocabStateWording;
|
|
247
253
|
};
|
|
254
|
+
readonly events?: {
|
|
255
|
+
readonly [E in CapEventName<C>]?: VocabEventWording;
|
|
256
|
+
};
|
|
248
257
|
}
|
|
249
258
|
/** Overrides, keyed in the same map: a role beats a type. */
|
|
250
259
|
export interface VocabOverrides<C extends VocabCapName> {
|
|
@@ -378,6 +387,7 @@ export type LooseVocabStateTrigger = LooseBooleanStateTrigger | LooseNumericStat
|
|
|
378
387
|
export interface LooseVocabWording {
|
|
379
388
|
readonly actions?: Readonly<Record<string, VocabActionWording>>;
|
|
380
389
|
readonly state?: Readonly<Record<string, VocabStateWording | undefined>>;
|
|
390
|
+
readonly events?: Readonly<Record<string, VocabEventWording | undefined>>;
|
|
381
391
|
}
|
|
382
392
|
/** Overrides as a consumer reads them. */
|
|
383
393
|
export interface LooseVocabOverrides {
|
|
@@ -91,8 +91,14 @@ export declare enum DeviceType {
|
|
|
91
91
|
PetFeeder = "pet-feeder",
|
|
92
92
|
/** Built-in dishwasher — program lifecycle, door / remote-start gates,
|
|
93
93
|
* salt and rinse-aid levels. Installed with the `dishwasher` cap.
|
|
94
|
-
* Sources: native Bosch Home Connect, reusable by similar integrations.
|
|
95
|
-
|
|
94
|
+
* Sources: native Bosch Home Connect, reusable by similar integrations.
|
|
95
|
+
* A plug-built dishwasher carries running-state and power instead. */
|
|
96
|
+
Dishwasher = "dishwasher",
|
|
97
|
+
/** Washing machine. A plug-built one is running while its power stays
|
|
98
|
+
* above a threshold. No program cap — that surface is the dishwasher's. */
|
|
99
|
+
Washer = "washer",
|
|
100
|
+
/** Tumble dryer. Same plug-built running surface as {@link Washer}. */
|
|
101
|
+
Dryer = "dryer"
|
|
96
102
|
}
|
|
97
103
|
export declare enum DeviceFeature {
|
|
98
104
|
BatteryOperated = "battery-operated",
|
|
@@ -92,8 +92,14 @@ var DeviceType = /* @__PURE__ */ function(DeviceType) {
|
|
|
92
92
|
DeviceType["PetFeeder"] = "pet-feeder";
|
|
93
93
|
/** Built-in dishwasher — program lifecycle, door / remote-start gates,
|
|
94
94
|
* salt and rinse-aid levels. Installed with the `dishwasher` cap.
|
|
95
|
-
* Sources: native Bosch Home Connect, reusable by similar integrations.
|
|
95
|
+
* Sources: native Bosch Home Connect, reusable by similar integrations.
|
|
96
|
+
* A plug-built dishwasher carries running-state and power instead. */
|
|
96
97
|
DeviceType["Dishwasher"] = "dishwasher";
|
|
98
|
+
/** Washing machine. A plug-built one is running while its power stays
|
|
99
|
+
* above a threshold. No program cap — that surface is the dishwasher's. */
|
|
100
|
+
DeviceType["Washer"] = "washer";
|
|
101
|
+
/** Tumble dryer. Same plug-built running surface as {@link Washer}. */
|
|
102
|
+
DeviceType["Dryer"] = "dryer";
|
|
97
103
|
return DeviceType;
|
|
98
104
|
}({});
|
|
99
105
|
var DeviceFeature = /* @__PURE__ */ function(DeviceFeature) {
|
|
@@ -92,8 +92,14 @@ var DeviceType = /* @__PURE__ */ function(DeviceType) {
|
|
|
92
92
|
DeviceType["PetFeeder"] = "pet-feeder";
|
|
93
93
|
/** Built-in dishwasher — program lifecycle, door / remote-start gates,
|
|
94
94
|
* salt and rinse-aid levels. Installed with the `dishwasher` cap.
|
|
95
|
-
* Sources: native Bosch Home Connect, reusable by similar integrations.
|
|
95
|
+
* Sources: native Bosch Home Connect, reusable by similar integrations.
|
|
96
|
+
* A plug-built dishwasher carries running-state and power instead. */
|
|
96
97
|
DeviceType["Dishwasher"] = "dishwasher";
|
|
98
|
+
/** Washing machine. A plug-built one is running while its power stays
|
|
99
|
+
* above a threshold. No program cap — that surface is the dishwasher's. */
|
|
100
|
+
DeviceType["Washer"] = "washer";
|
|
101
|
+
/** Tumble dryer. Same plug-built running surface as {@link Washer}. */
|
|
102
|
+
DeviceType["Dryer"] = "dryer";
|
|
97
103
|
return DeviceType;
|
|
98
104
|
}({});
|
|
99
105
|
var DeviceFeature = /* @__PURE__ */ function(DeviceFeature) {
|
|
@@ -4940,6 +4940,20 @@ export type AppRouter = TrpcCoreRouter<{
|
|
|
4940
4940
|
meta: object;
|
|
4941
4941
|
}>;
|
|
4942
4942
|
}>>;
|
|
4943
|
+
meter: TRPCBuiltRouter<{
|
|
4944
|
+
ctx: TrpcContext;
|
|
4945
|
+
meta: object;
|
|
4946
|
+
errorShape: AugmentedErrorShape;
|
|
4947
|
+
transformer: true;
|
|
4948
|
+
}, TRPCDecorateCreateRouterOptions<{
|
|
4949
|
+
getStatus: TRPCQueryProcedure<{
|
|
4950
|
+
input: {
|
|
4951
|
+
[x: string]: unknown;
|
|
4952
|
+
} & z.input<typeof DEVICE_STATUS_METHOD.getStatus.input>;
|
|
4953
|
+
output: z.infer<typeof DEVICE_STATUS_METHOD.getStatus.output>;
|
|
4954
|
+
meta: object;
|
|
4955
|
+
}>;
|
|
4956
|
+
}>>;
|
|
4943
4957
|
metricsProvider: TRPCBuiltRouter<{
|
|
4944
4958
|
ctx: TrpcContext;
|
|
4945
4959
|
meta: object;
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* `ALL_CAPABILITY_DEFINITIONS` (the whole Zod schema graph, ~+100 MB heap per
|
|
6
6
|
* runner). See docs/decisions/adr-0028.md.
|
|
7
7
|
*
|
|
8
|
-
* Coverage: 1 advance-derived caps,
|
|
8
|
+
* Coverage: 1 advance-derived caps, 76 caps with 352 state leaves.
|
|
9
9
|
*/
|
|
10
10
|
/** A bindable scalar in a capability's runtime state. */
|
|
11
11
|
export interface CapStateLeaf {
|
|
@@ -41,6 +41,7 @@ import type { IntercomStatusSchema } from '../capabilities/intercom.cap.js';
|
|
|
41
41
|
import type { LawnMowerControlStatusSchema } from '../capabilities/lawn-mower-control.cap.js';
|
|
42
42
|
import type { LockControlStatusSchema } from '../capabilities/lock-control.cap.js';
|
|
43
43
|
import type { MediaPlayerStatusSchema } from '../capabilities/media-player.cap.js';
|
|
44
|
+
import type { MeterStatusSchema } from '../capabilities/meter.cap.js';
|
|
44
45
|
import type { MotionStatusSchema } from '../capabilities/motion.cap.js';
|
|
45
46
|
import type { MotionTriggerStatusSchema } from '../capabilities/motion-trigger.cap.js';
|
|
46
47
|
import type { motionZonesCapability } from '../capabilities/motion-zones.cap.js';
|
|
@@ -124,6 +125,7 @@ export type CapStatusTypeMap = {
|
|
|
124
125
|
readonly 'lawn-mower-control': z.infer<typeof LawnMowerControlStatusSchema>;
|
|
125
126
|
readonly 'lock-control': z.infer<typeof LockControlStatusSchema>;
|
|
126
127
|
readonly 'media-player': z.infer<typeof MediaPlayerStatusSchema>;
|
|
128
|
+
readonly 'meter': z.infer<typeof MeterStatusSchema>;
|
|
127
129
|
readonly 'motion': z.infer<typeof MotionStatusSchema>;
|
|
128
130
|
readonly 'motion-trigger': z.infer<typeof MotionTriggerStatusSchema>;
|
|
129
131
|
readonly 'motion-zones': z.infer<(typeof motionZonesCapability)['status']['schema']>;
|
|
@@ -167,4 +169,4 @@ export type CapNameWithStatus = keyof CapStatusTypeMap;
|
|
|
167
169
|
* aggregator to enumerate caps whose `status` should be polled +
|
|
168
170
|
* streamed via `subscribeDeviceStatusAggregate`.
|
|
169
171
|
*/
|
|
170
|
-
export declare const CAP_NAMES_WITH_STATUS: readonly ["accessories", "air-quality-sensor", "alarm-panel", "ambient-light-sensor", "automation-control", "battery", "binary", "brightness", "broker", "camera-credentials", "carbon-monoxide", "climate-control", "color", "connectivity", "consumables", "contact", "control", "cover", "day-night", "device-adoption", "device-discovery", "device-export", "device-status", "dishwasher", "doorbell", "enum-sensor", "event-emitter", "fan-control", "feature-probe", "flood", "gas", "group-commands", "group-status", "heating-valve", "humidifier", "humidity-sensor", "image", "image-settings", "intercom", "lawn-mower-control", "lock-control", "media-player", "motion", "motion-trigger", "motion-zones", "mqtt-broker", "native-object-detection", "navigation", "network-link", "notifier", "numeric-sensor", "osd", "pet-feeder", "power-meter", "presence", "pressure-sensor", "privacy-mask", "ptz", "ptz-autotrack", "recording-archive", "recording-onboard", "recording-signal", "running-state", "scene-monitor", "script-runner", "smoke", "snapshot", "stream-params", "switch", "tamper", "temperature-sensor", "update", "vacuum-control", "valve", "vibration", "water-heater", "weather"];
|
|
172
|
+
export declare const CAP_NAMES_WITH_STATUS: readonly ["accessories", "air-quality-sensor", "alarm-panel", "ambient-light-sensor", "automation-control", "battery", "binary", "brightness", "broker", "camera-credentials", "carbon-monoxide", "climate-control", "color", "connectivity", "consumables", "contact", "control", "cover", "day-night", "device-adoption", "device-discovery", "device-export", "device-status", "dishwasher", "doorbell", "enum-sensor", "event-emitter", "fan-control", "feature-probe", "flood", "gas", "group-commands", "group-status", "heating-valve", "humidifier", "humidity-sensor", "image", "image-settings", "intercom", "lawn-mower-control", "lock-control", "media-player", "meter", "motion", "motion-trigger", "motion-zones", "mqtt-broker", "native-object-detection", "navigation", "network-link", "notifier", "numeric-sensor", "osd", "pet-feeder", "power-meter", "presence", "pressure-sensor", "privacy-mask", "ptz", "ptz-autotrack", "recording-archive", "recording-onboard", "recording-signal", "running-state", "scene-monitor", "script-runner", "smoke", "snapshot", "stream-params", "switch", "tamper", "temperature-sensor", "update", "vacuum-control", "valve", "vibration", "water-heater", "weather"];
|
|
@@ -94,6 +94,7 @@ export { logDestinationCapability } from '../capabilities/log-destination.cap.js
|
|
|
94
94
|
export { loginMethodCapability } from '../capabilities/login-method.cap.js';
|
|
95
95
|
export { mediaPlayerCapability } from '../capabilities/media-player.cap.js';
|
|
96
96
|
export { meshNetworkCapability } from '../capabilities/mesh-network.cap.js';
|
|
97
|
+
export { meterCapability } from '../capabilities/meter.cap.js';
|
|
97
98
|
export { metricsProviderCapability } from '../capabilities/metrics-provider.cap.js';
|
|
98
99
|
export { modelConvertCapability } from '../capabilities/model-convert.cap.js';
|
|
99
100
|
export { modelDistributorCapability } from '../capabilities/model-distributor.cap.js';
|
|
@@ -278,6 +279,7 @@ export declare const CAPABILITY_NAMES: {
|
|
|
278
279
|
readonly loginMethod: 'login-method';
|
|
279
280
|
readonly mediaPlayer: 'media-player';
|
|
280
281
|
readonly meshNetwork: 'mesh-network';
|
|
282
|
+
readonly meter: 'meter';
|
|
281
283
|
readonly metricsProvider: 'metrics-provider';
|
|
282
284
|
readonly modelConvert: 'model-convert';
|
|
283
285
|
readonly modelDistributor: 'model-distributor';
|
|
@@ -475,6 +477,7 @@ export interface CapabilityRouterMap<TRouter = unknown> {
|
|
|
475
477
|
readonly loginMethod: TRouter;
|
|
476
478
|
readonly mediaPlayer: TRouter;
|
|
477
479
|
readonly meshNetwork: TRouter;
|
|
480
|
+
readonly meter: TRouter;
|
|
478
481
|
readonly metricsProvider: TRouter;
|
|
479
482
|
readonly modelConvert: TRouter;
|
|
480
483
|
readonly modelDistributor: TRouter;
|
|
@@ -563,8 +566,8 @@ export interface CapabilityRouterMap<TRouter = unknown> {
|
|
|
563
566
|
readonly zoneRules: TRouter;
|
|
564
567
|
readonly zones: TRouter;
|
|
565
568
|
}
|
|
566
|
-
/** Capability names whose mode is `singleton` (
|
|
567
|
-
export declare const SINGLETON_CAPABILITY_NAMES: readonly ['accessories', 'addon-pages', 'addon-settings', 'addon-widgets', 'addons', 'admin-ui', 'air-quality-sensor', 'alarm-panel', 'alerts', 'ambient-light-sensor', 'audio-analysis', 'audio-analyzer', 'audio-codec', 'audio-metrics', 'automation-control', 'backup', 'battery', 'binary', 'brightness', 'button', 'calendars', 'camera-credentials', 'camera-grid-layout', 'camera-pipeline-config', 'camera-streams', 'carbon-monoxide', 'climate-control', 'color', 'composer', 'connectivity', 'consumables', 'contact', 'control', 'core-blocks', 'cover', 'database-snapshot', 'day-night', 'decoder', 'detection-pipeline', 'device-admin-link', 'device-credentials', 'device-discovery', 'device-history', 'device-manager', 'device-ops', 'device-state', 'device-status', 'dishwasher', 'display-palette', 'doorbell', 'enum-sensor', 'event-emitter', 'face-gallery', 'fan-control', 'feature-probe', 'filesystem-browse', 'flood', 'gas', 'group-commands', 'group-status', 'heating-valve', 'humidifier', 'humidity-sensor', 'image', 'image-settings', 'integrations', 'intercom', 'keychain', 'keychain-admin', 'lawn-mower-control', 'llm-runtime', 'local-network', 'lock-control', 'media-player', 'metrics-provider', 'model-convert', 'model-distributor', 'motion', 'motion-detection', 'motion-trigger', 'motion-zones', 'native-object-detection', 'navigation', 'network-link', 'network-quality', 'node-certificates', 'nodes', 'notification-rules', 'notifier', 'numeric-sensor', 'oidc-connections', 'osd', 'osd-manager', 'pet-feeder', 'pipeline-analytics', 'pipeline-executor', 'pipeline-orchestrator', 'pipeline-runner', 'plate-gallery', 'platform-probe', 'power-meter', 'presence', 'pressure-sensor', 'privacy-mask', 'ptz', 'ptz-autotrack', 'reboot', 'record-entries', 'recording-archive', 'recording-export', 'recording-onboard', 'recording-signal', 'records', 'running-state', 'scene-monitor', 'script-runner', 'server-management', 'settings-store', 'smoke', 'snapshot', 'sso-bridge', 'storage', 'storage-admin', 'storage-migration', 'stream-broker', 'stream-catalog', 'stream-params', 'stream-signals', 'switch', 'system', 'tamper', 'temperature-sensor', 'terminal-session', 'toast', 'training', 'update', 'user-management', 'vacuum-control', 'valve', 'vector-store', 'vibration', 'viewer-ui', 'water-heater', 'weather', 'webrtc-session', 'zone-analytics', 'zone-rules', 'zones'];
|
|
569
|
+
/** Capability names whose mode is `singleton` (149 caps). */
|
|
570
|
+
export declare const SINGLETON_CAPABILITY_NAMES: readonly ['accessories', 'addon-pages', 'addon-settings', 'addon-widgets', 'addons', 'admin-ui', 'air-quality-sensor', 'alarm-panel', 'alerts', 'ambient-light-sensor', 'audio-analysis', 'audio-analyzer', 'audio-codec', 'audio-metrics', 'automation-control', 'backup', 'battery', 'binary', 'brightness', 'button', 'calendars', 'camera-credentials', 'camera-grid-layout', 'camera-pipeline-config', 'camera-streams', 'carbon-monoxide', 'climate-control', 'color', 'composer', 'connectivity', 'consumables', 'contact', 'control', 'core-blocks', 'cover', 'database-snapshot', 'day-night', 'decoder', 'detection-pipeline', 'device-admin-link', 'device-credentials', 'device-discovery', 'device-history', 'device-manager', 'device-ops', 'device-state', 'device-status', 'dishwasher', 'display-palette', 'doorbell', 'enum-sensor', 'event-emitter', 'face-gallery', 'fan-control', 'feature-probe', 'filesystem-browse', 'flood', 'gas', 'group-commands', 'group-status', 'heating-valve', 'humidifier', 'humidity-sensor', 'image', 'image-settings', 'integrations', 'intercom', 'keychain', 'keychain-admin', 'lawn-mower-control', 'llm-runtime', 'local-network', 'lock-control', 'media-player', 'meter', 'metrics-provider', 'model-convert', 'model-distributor', 'motion', 'motion-detection', 'motion-trigger', 'motion-zones', 'native-object-detection', 'navigation', 'network-link', 'network-quality', 'node-certificates', 'nodes', 'notification-rules', 'notifier', 'numeric-sensor', 'oidc-connections', 'osd', 'osd-manager', 'pet-feeder', 'pipeline-analytics', 'pipeline-executor', 'pipeline-orchestrator', 'pipeline-runner', 'plate-gallery', 'platform-probe', 'power-meter', 'presence', 'pressure-sensor', 'privacy-mask', 'ptz', 'ptz-autotrack', 'reboot', 'record-entries', 'recording-archive', 'recording-export', 'recording-onboard', 'recording-signal', 'records', 'running-state', 'scene-monitor', 'script-runner', 'server-management', 'settings-store', 'smoke', 'snapshot', 'sso-bridge', 'storage', 'storage-admin', 'storage-migration', 'stream-broker', 'stream-catalog', 'stream-params', 'stream-signals', 'switch', 'system', 'tamper', 'temperature-sensor', 'terminal-session', 'toast', 'training', 'update', 'user-management', 'vacuum-control', 'valve', 'vector-store', 'vibration', 'viewer-ui', 'water-heater', 'weather', 'webrtc-session', 'zone-analytics', 'zone-rules', 'zones'];
|
|
568
571
|
/** Union of singleton capability names (literal string union). */
|
|
569
572
|
export type SingletonCapabilityName = typeof SINGLETON_CAPABILITY_NAMES[number];
|
|
570
573
|
/** Capability names whose mode is `collection` (35 caps). */
|
|
@@ -56,7 +56,7 @@ export declare const CAP_CUSTOMIZE_CATALOG: {
|
|
|
56
56
|
readonly targets: readonly [{
|
|
57
57
|
readonly id: 'items';
|
|
58
58
|
readonly cardinality: 'keyedArray';
|
|
59
|
-
readonly deviceTypes: readonly [DeviceType.Camera, DeviceType.Hub, DeviceType.Light, DeviceType.Siren, DeviceType.Switch, DeviceType.Sensor, DeviceType.Thermostat, DeviceType.Climate, DeviceType.Button, DeviceType.EventEmitter, DeviceType.Update, DeviceType.Generic, DeviceType.Notifier, DeviceType.Script, DeviceType.Automation, DeviceType.Lock, DeviceType.Cover, DeviceType.Valve, DeviceType.Humidifier, DeviceType.WaterHeater, DeviceType.Fan, DeviceType.MediaPlayer, DeviceType.AlarmPanel, DeviceType.Control, DeviceType.Presence, DeviceType.Weather, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.Container, DeviceType.Image, DeviceType.PetFeeder, DeviceType.Dishwasher];
|
|
59
|
+
readonly deviceTypes: readonly [DeviceType.Camera, DeviceType.Hub, DeviceType.Light, DeviceType.Siren, DeviceType.Switch, DeviceType.Sensor, DeviceType.Thermostat, DeviceType.Climate, DeviceType.Button, DeviceType.EventEmitter, DeviceType.Update, DeviceType.Generic, DeviceType.Notifier, DeviceType.Script, DeviceType.Automation, DeviceType.Lock, DeviceType.Cover, DeviceType.Valve, DeviceType.Humidifier, DeviceType.WaterHeater, DeviceType.Fan, DeviceType.MediaPlayer, DeviceType.AlarmPanel, DeviceType.Control, DeviceType.Presence, DeviceType.Weather, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.Container, DeviceType.Image, DeviceType.PetFeeder, DeviceType.Dishwasher, DeviceType.Washer, DeviceType.Dryer];
|
|
60
60
|
readonly apply: 'add';
|
|
61
61
|
readonly vocabularyCap: 'consumables';
|
|
62
62
|
readonly sources: readonly [];
|
|
@@ -211,7 +211,7 @@ export declare const CAP_CUSTOMIZE_CATALOG: {
|
|
|
211
211
|
readonly targets: readonly [{
|
|
212
212
|
readonly id: 'running';
|
|
213
213
|
readonly cardinality: 'scalar';
|
|
214
|
-
readonly deviceTypes: readonly [DeviceType.Dishwasher, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.MediaPlayer, DeviceType.WaterHeater, DeviceType.Humidifier, DeviceType.Fan, DeviceType.Climate, DeviceType.Thermostat, DeviceType.PetFeeder];
|
|
214
|
+
readonly deviceTypes: readonly [DeviceType.Washer, DeviceType.Dryer, DeviceType.Dishwasher, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.MediaPlayer, DeviceType.WaterHeater, DeviceType.Humidifier, DeviceType.Fan, DeviceType.Climate, DeviceType.Thermostat, DeviceType.PetFeeder];
|
|
215
215
|
readonly apply: 'add';
|
|
216
216
|
readonly vocabularyCap: 'running-state';
|
|
217
217
|
readonly vocabularyStateField: 'running';
|
|
@@ -38,6 +38,7 @@ import { intercomCapability } from '../capabilities/intercom.cap.js';
|
|
|
38
38
|
import { lawnMowerControlCapability } from '../capabilities/lawn-mower-control.cap.js';
|
|
39
39
|
import { lockControlCapability } from '../capabilities/lock-control.cap.js';
|
|
40
40
|
import { mediaPlayerCapability } from '../capabilities/media-player.cap.js';
|
|
41
|
+
import { meterCapability } from '../capabilities/meter.cap.js';
|
|
41
42
|
import { motionCapability } from '../capabilities/motion.cap.js';
|
|
42
43
|
import { motionTriggerCapability } from '../capabilities/motion-trigger.cap.js';
|
|
43
44
|
import { motionZonesCapability } from '../capabilities/motion-zones.cap.js';
|
|
@@ -124,6 +125,7 @@ export interface DeviceLocalState {
|
|
|
124
125
|
lawnMowerControl: InferRuntimeState<typeof lawnMowerControlCapability>;
|
|
125
126
|
lockControl: InferRuntimeState<typeof lockControlCapability>;
|
|
126
127
|
mediaPlayer: InferRuntimeState<typeof mediaPlayerCapability>;
|
|
128
|
+
meter: InferRuntimeState<typeof meterCapability>;
|
|
127
129
|
motion: InferRuntimeState<typeof motionCapability>;
|
|
128
130
|
motionTrigger: InferRuntimeState<typeof motionTriggerCapability>;
|
|
129
131
|
motionZones: InferRuntimeState<typeof motionZonesCapability>;
|
|
@@ -220,6 +222,7 @@ export interface CapNameToRuntimeStateMap {
|
|
|
220
222
|
'lawn-mower-control': InferRuntimeState<typeof lawnMowerControlCapability>;
|
|
221
223
|
'lock-control': InferRuntimeState<typeof lockControlCapability>;
|
|
222
224
|
'media-player': InferRuntimeState<typeof mediaPlayerCapability>;
|
|
225
|
+
'meter': InferRuntimeState<typeof meterCapability>;
|
|
223
226
|
'motion': InferRuntimeState<typeof motionCapability>;
|
|
224
227
|
'motion-trigger': InferRuntimeState<typeof motionTriggerCapability>;
|
|
225
228
|
'motion-zones': InferRuntimeState<typeof motionZonesCapability>;
|
|
@@ -51,6 +51,7 @@ import type { intercomCapability } from '../capabilities/intercom.cap.js';
|
|
|
51
51
|
import type { lawnMowerControlCapability } from '../capabilities/lawn-mower-control.cap.js';
|
|
52
52
|
import type { lockControlCapability } from '../capabilities/lock-control.cap.js';
|
|
53
53
|
import type { mediaPlayerCapability } from '../capabilities/media-player.cap.js';
|
|
54
|
+
import type { meterCapability } from '../capabilities/meter.cap.js';
|
|
54
55
|
import type { motionCapability } from '../capabilities/motion.cap.js';
|
|
55
56
|
import type { motionDetectionCapability } from '../capabilities/motion-detection.cap.js';
|
|
56
57
|
import type { motionTriggerCapability } from '../capabilities/motion-trigger.cap.js';
|
|
@@ -158,6 +159,7 @@ export interface DeviceProxyState {
|
|
|
158
159
|
readonly lawnMowerControl: SliceHandle<InferRuntimeState<typeof lawnMowerControlCapability>>;
|
|
159
160
|
readonly lockControl: SliceHandle<InferRuntimeState<typeof lockControlCapability>>;
|
|
160
161
|
readonly mediaPlayer: SliceHandle<InferRuntimeState<typeof mediaPlayerCapability>>;
|
|
162
|
+
readonly meter: SliceHandle<InferRuntimeState<typeof meterCapability>>;
|
|
161
163
|
readonly motion: SliceHandle<InferRuntimeState<typeof motionCapability>>;
|
|
162
164
|
readonly motionTrigger: SliceHandle<InferRuntimeState<typeof motionTriggerCapability>>;
|
|
163
165
|
readonly motionZones: SliceHandle<InferRuntimeState<typeof motionZonesCapability>>;
|
|
@@ -261,6 +263,7 @@ export interface DeviceProxy {
|
|
|
261
263
|
readonly lawnMowerControl?: InferDeviceProxyCap<typeof lawnMowerControlCapability>;
|
|
262
264
|
readonly lockControl?: InferDeviceProxyCap<typeof lockControlCapability>;
|
|
263
265
|
readonly mediaPlayer?: InferDeviceProxyCap<typeof mediaPlayerCapability>;
|
|
266
|
+
readonly meter?: InferDeviceProxyCap<typeof meterCapability>;
|
|
264
267
|
readonly motion?: InferDeviceProxyCap<typeof motionCapability>;
|
|
265
268
|
readonly motionDetection?: InferDeviceProxyCap<typeof motionDetectionCapability>;
|
|
266
269
|
readonly motionTrigger?: InferDeviceProxyCap<typeof motionTriggerCapability>;
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* can answer "may a rule actuate this?" without importing the schema barrel
|
|
6
6
|
* (~144MB RSS per runner, D28).
|
|
7
7
|
*
|
|
8
|
-
* Coverage:
|
|
8
|
+
* Coverage: 94 device-scoped capabilities.
|
|
9
9
|
*/
|
|
10
10
|
export declare const DEVICE_SCOPED_CAPS: ReadonlySet<string>;
|
|
11
11
|
/**
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { CapabilityHistoryField, CapabilityHistoryItems } from '../capabilities/capability-definition.js';
|
|
2
2
|
/**
|
|
3
3
|
* Cap history catalog, projected from every `*.cap.ts` `history` block.
|
|
4
|
-
*
|
|
4
|
+
* 42 caps with series (76 series), 32 caps answered `'none'`.
|
|
5
5
|
* Field keys are `runtimeState` paths (`a.b` into fixed objects only).
|
|
6
6
|
*/
|
|
7
7
|
export declare const HISTORY_CATALOG: Readonly<Record<string, Readonly<Record<string, CapabilityHistoryField>>>>;
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* scope+access check inside `protectedProcedure` (see
|
|
7
7
|
* `server/backend/src/api/trpc/trpc.middleware.ts`).
|
|
8
8
|
*
|
|
9
|
-
* Coverage:
|
|
9
|
+
* Coverage: 1386 method paths across 184 capabilities.
|
|
10
10
|
*/
|
|
11
11
|
import type { MethodRole } from '../auth/viewer-access.js';
|
|
12
12
|
import type { CapabilityMethodAccess } from '../capabilities/capability-definition.js';
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* system-scope cap that takes a deviceId was previously never device-filtered
|
|
7
7
|
* — see the generator header).
|
|
8
8
|
*
|
|
9
|
-
* Coverage:
|
|
9
|
+
* Coverage: 549 methods carry a device reference, of which
|
|
10
10
|
* 174 are on SYSTEM-scope caps.
|
|
11
11
|
*
|
|
12
12
|
* Top-level fields, number arrays, and one-level arrays of objects carrying
|
|
@@ -11,7 +11,7 @@ export interface RuntimeStatePolicy {
|
|
|
11
11
|
}
|
|
12
12
|
/**
|
|
13
13
|
* Per-cap runtime-state policy, projected from every `*.cap.ts` that declares
|
|
14
|
-
* `runtimeState`.
|
|
14
|
+
* `runtimeState`. 75 caps: 39 `restored`, 36 `session`.
|
|
15
15
|
*
|
|
16
16
|
* A cap absent from this map has no runtime-state slice at all. A cap PRESENT
|
|
17
17
|
* with `durability: 'session'` has one and has decided not to keep it.
|
package/dist/index.d.ts
CHANGED
|
@@ -217,6 +217,7 @@ export { DeviceRuntimeState } from './device/device-runtime-state.js';
|
|
|
217
217
|
export type { SliceEventBus, SliceHandle, SliceHandleApi, SliceHandleSource, } from './device/device-state-handle.js';
|
|
218
218
|
export { createEventBusSliceSource, createLazyTrpcSource, createMirrorSource, createSliceHandle, } from './device/device-state-handle.js';
|
|
219
219
|
export { ChargingStatus, DeviceFeature, DeviceRole, DeviceType } from './device/device-type.js';
|
|
220
|
+
export { APPLIANCE_EXPORT, type ApplianceExportDecision, type ApplianceExportEcosystem, type ApplianceExported, type ApplianceNotExported, type PlugApplianceType, PLUG_APPLIANCE_TYPES, applianceExport, isPlugApplianceType, } from './device/appliance-export.js';
|
|
220
221
|
export type { IBatteryOperated, IDoorbellButton, INativeSnapshot, IPanTiltZoom, IRebootable, ITwoWayAudio, } from './device/features.js';
|
|
221
222
|
export type { IconCategoryId, IconEntry, IconHit, IconKey, } from './device/icon-catalog.js';
|
|
222
223
|
export { ICON_CATALOG_SOURCE, ICON_CATEGORIES, ICON_ENTRIES, ICON_KEYS, ICON_VIEWER_MODULES, IconKeySchema, canonicalIconKey, iconCategoryLabel, iconEntry, iconsInCategory, isIconKey, resolveIconKey, searchIcons, } from './device/icon-catalog.js';
|