@camstack/types 0.1.40 → 0.1.42
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/base-addon.d.ts +12 -0
- package/dist/addon/base-addon.d.ts.map +1 -1
- package/dist/addon/durable-state.d.ts +33 -0
- package/dist/addon/durable-state.d.ts.map +1 -0
- package/dist/capabilities/accessories.cap.d.ts +56 -8
- package/dist/capabilities/accessories.cap.d.ts.map +1 -1
- package/dist/capabilities/advanced-notifier.cap.d.ts +4 -0
- package/dist/capabilities/advanced-notifier.cap.d.ts.map +1 -1
- package/dist/capabilities/air-quality-sensor.cap.d.ts +56 -0
- package/dist/capabilities/air-quality-sensor.cap.d.ts.map +1 -0
- package/dist/capabilities/alarm-panel.cap.d.ts +154 -0
- package/dist/capabilities/alarm-panel.cap.d.ts.map +1 -0
- package/dist/capabilities/ambient-light-sensor.cap.d.ts +39 -0
- package/dist/capabilities/ambient-light-sensor.cap.d.ts.map +1 -0
- package/dist/capabilities/automation-control.cap.d.ts +65 -0
- package/dist/capabilities/automation-control.cap.d.ts.map +1 -0
- package/dist/capabilities/battery.cap.d.ts +30 -1
- package/dist/capabilities/battery.cap.d.ts.map +1 -1
- package/dist/capabilities/binary.cap.d.ts +40 -0
- package/dist/capabilities/binary.cap.d.ts.map +1 -0
- package/dist/capabilities/brightness.cap.d.ts +3 -2
- package/dist/capabilities/brightness.cap.d.ts.map +1 -1
- package/dist/capabilities/broker.cap.d.ts +291 -0
- package/dist/capabilities/broker.cap.d.ts.map +1 -0
- package/dist/capabilities/button.cap.d.ts +27 -0
- package/dist/capabilities/button.cap.d.ts.map +1 -0
- package/dist/capabilities/camera-credentials.cap.d.ts +1 -0
- package/dist/capabilities/camera-credentials.cap.d.ts.map +1 -1
- package/dist/capabilities/camera-streams.cap.d.ts +147 -10
- package/dist/capabilities/camera-streams.cap.d.ts.map +1 -1
- package/dist/capabilities/capability-definition.d.ts +15 -0
- package/dist/capabilities/capability-definition.d.ts.map +1 -1
- package/dist/capabilities/carbon-monoxide.cap.d.ts +33 -0
- package/dist/capabilities/carbon-monoxide.cap.d.ts.map +1 -0
- package/dist/capabilities/climate-control.cap.d.ts +183 -0
- package/dist/capabilities/climate-control.cap.d.ts.map +1 -0
- package/dist/capabilities/color.cap.d.ts +186 -0
- package/dist/capabilities/color.cap.d.ts.map +1 -0
- package/dist/capabilities/connectivity.cap.d.ts +37 -0
- package/dist/capabilities/connectivity.cap.d.ts.map +1 -0
- package/dist/capabilities/consumables.cap.d.ts +105 -0
- package/dist/capabilities/consumables.cap.d.ts.map +1 -0
- package/dist/capabilities/contact.cap.d.ts +41 -0
- package/dist/capabilities/contact.cap.d.ts.map +1 -0
- package/dist/capabilities/control.cap.d.ts +167 -0
- package/dist/capabilities/control.cap.d.ts.map +1 -0
- package/dist/capabilities/cover.cap.d.ts +104 -0
- package/dist/capabilities/cover.cap.d.ts.map +1 -0
- package/dist/capabilities/custom-actions.d.ts +6 -0
- package/dist/capabilities/custom-actions.d.ts.map +1 -1
- package/dist/capabilities/decoder.cap.d.ts +1 -1
- package/dist/capabilities/device-adoption.cap.d.ts +203 -0
- package/dist/capabilities/device-adoption.cap.d.ts.map +1 -0
- package/dist/capabilities/device-discovery.cap.d.ts +44 -143
- package/dist/capabilities/device-discovery.cap.d.ts.map +1 -1
- package/dist/capabilities/device-manager.cap.d.ts +469 -0
- package/dist/capabilities/device-manager.cap.d.ts.map +1 -1
- package/dist/capabilities/device-ops.cap.d.ts +30 -0
- package/dist/capabilities/device-ops.cap.d.ts.map +1 -1
- package/dist/capabilities/device-provider.cap.d.ts +36 -0
- package/dist/capabilities/device-provider.cap.d.ts.map +1 -1
- package/dist/capabilities/device-status.cap.d.ts +1 -0
- package/dist/capabilities/device-status.cap.d.ts.map +1 -1
- package/dist/capabilities/doorbell.cap.d.ts +1 -0
- package/dist/capabilities/doorbell.cap.d.ts.map +1 -1
- package/dist/capabilities/enum-sensor.cap.d.ts +60 -0
- package/dist/capabilities/enum-sensor.cap.d.ts.map +1 -0
- package/dist/capabilities/event-emitter.cap.d.ts +79 -0
- package/dist/capabilities/event-emitter.cap.d.ts.map +1 -0
- package/dist/capabilities/fan-control.cap.d.ts +100 -0
- package/dist/capabilities/fan-control.cap.d.ts.map +1 -0
- package/dist/capabilities/feature-probe.cap.d.ts +1 -0
- package/dist/capabilities/feature-probe.cap.d.ts.map +1 -1
- package/dist/capabilities/filesystem-browse.cap.d.ts +39 -0
- package/dist/capabilities/filesystem-browse.cap.d.ts.map +1 -0
- package/dist/capabilities/flood.cap.d.ts +37 -0
- package/dist/capabilities/flood.cap.d.ts.map +1 -0
- package/dist/capabilities/gas.cap.d.ts +34 -0
- package/dist/capabilities/gas.cap.d.ts.map +1 -0
- package/dist/capabilities/humidifier.cap.d.ts +82 -0
- package/dist/capabilities/humidifier.cap.d.ts.map +1 -0
- package/dist/capabilities/humidity-sensor.cap.d.ts +43 -0
- package/dist/capabilities/humidity-sensor.cap.d.ts.map +1 -0
- package/dist/capabilities/image.cap.d.ts +44 -0
- package/dist/capabilities/image.cap.d.ts.map +1 -0
- package/dist/capabilities/index.d.ts +97 -12
- package/dist/capabilities/index.d.ts.map +1 -1
- package/dist/capabilities/integrations.cap.d.ts +12 -0
- package/dist/capabilities/integrations.cap.d.ts.map +1 -1
- package/dist/capabilities/intercom.cap.d.ts +49 -9
- package/dist/capabilities/intercom.cap.d.ts.map +1 -1
- package/dist/capabilities/lawn-mower-control.cap.d.ts +83 -0
- package/dist/capabilities/lawn-mower-control.cap.d.ts.map +1 -0
- package/dist/capabilities/lock-control.cap.d.ts +92 -0
- package/dist/capabilities/lock-control.cap.d.ts.map +1 -0
- package/dist/capabilities/media-player.cap.d.ts +201 -0
- package/dist/capabilities/media-player.cap.d.ts.map +1 -0
- package/dist/capabilities/motion-trigger.cap.d.ts +1 -0
- package/dist/capabilities/motion-trigger.cap.d.ts.map +1 -1
- package/dist/capabilities/motion-zones.cap.d.ts +1 -0
- package/dist/capabilities/motion-zones.cap.d.ts.map +1 -1
- package/dist/capabilities/native-object-detection.cap.d.ts +1 -0
- package/dist/capabilities/native-object-detection.cap.d.ts.map +1 -1
- package/dist/capabilities/network-quality.cap.d.ts +5 -0
- package/dist/capabilities/network-quality.cap.d.ts.map +1 -1
- package/dist/capabilities/notifier.cap.d.ts +173 -0
- package/dist/capabilities/notifier.cap.d.ts.map +1 -0
- package/dist/capabilities/numeric-sensor.cap.d.ts +52 -0
- package/dist/capabilities/numeric-sensor.cap.d.ts.map +1 -0
- package/dist/capabilities/osd.cap.d.ts +1 -0
- package/dist/capabilities/osd.cap.d.ts.map +1 -1
- package/dist/capabilities/pipeline-analytics.cap.d.ts +69 -22
- package/dist/capabilities/pipeline-analytics.cap.d.ts.map +1 -1
- package/dist/capabilities/pipeline-executor.cap.d.ts +2 -2
- package/dist/capabilities/pipeline-orchestrator.cap.d.ts +1 -1
- package/dist/capabilities/pipeline-runner.cap.d.ts +2 -2
- package/dist/capabilities/platform-probe.cap.d.ts +25 -0
- package/dist/capabilities/platform-probe.cap.d.ts.map +1 -1
- package/dist/capabilities/power-meter.cap.d.ts +65 -0
- package/dist/capabilities/power-meter.cap.d.ts.map +1 -0
- package/dist/capabilities/presence.cap.d.ts +79 -0
- package/dist/capabilities/presence.cap.d.ts.map +1 -0
- package/dist/capabilities/pressure-sensor.cap.d.ts +43 -0
- package/dist/capabilities/pressure-sensor.cap.d.ts.map +1 -0
- package/dist/capabilities/privacy-mask.cap.d.ts +1 -0
- package/dist/capabilities/privacy-mask.cap.d.ts.map +1 -1
- package/dist/capabilities/ptz-autotrack.cap.d.ts +1 -0
- package/dist/capabilities/ptz-autotrack.cap.d.ts.map +1 -1
- package/dist/capabilities/ptz.cap.d.ts +1 -0
- package/dist/capabilities/ptz.cap.d.ts.map +1 -1
- package/dist/capabilities/reboot.cap.d.ts +1 -0
- package/dist/capabilities/reboot.cap.d.ts.map +1 -1
- package/dist/capabilities/recording.cap.d.ts +367 -32
- package/dist/capabilities/recording.cap.d.ts.map +1 -1
- package/dist/capabilities/restreamer.cap.d.ts +2 -2
- package/dist/capabilities/schemas/orchestrator-metrics.d.ts +2 -2
- package/dist/capabilities/schemas/streaming-shared.d.ts +64 -1
- package/dist/capabilities/schemas/streaming-shared.d.ts.map +1 -1
- package/dist/capabilities/script-runner.cap.d.ts +62 -0
- package/dist/capabilities/script-runner.cap.d.ts.map +1 -0
- package/dist/capabilities/settings-store.cap.d.ts +25 -0
- package/dist/capabilities/settings-store.cap.d.ts.map +1 -1
- package/dist/capabilities/smoke.cap.d.ts +38 -0
- package/dist/capabilities/smoke.cap.d.ts.map +1 -0
- package/dist/capabilities/snapshot-provider.cap.d.ts +1 -1
- package/dist/capabilities/snapshot.cap.d.ts +1 -0
- package/dist/capabilities/snapshot.cap.d.ts.map +1 -1
- package/dist/capabilities/storage-evictable.cap.d.ts +54 -0
- package/dist/capabilities/storage-evictable.cap.d.ts.map +1 -0
- package/dist/capabilities/storage-provider.cap.d.ts +46 -186
- package/dist/capabilities/storage-provider.cap.d.ts.map +1 -1
- package/dist/capabilities/storage.cap.d.ts +41 -226
- package/dist/capabilities/storage.cap.d.ts.map +1 -1
- package/dist/capabilities/stream-broker.cap.d.ts +323 -25
- package/dist/capabilities/stream-broker.cap.d.ts.map +1 -1
- package/dist/capabilities/stream-catalog.cap.d.ts +3 -0
- package/dist/capabilities/stream-catalog.cap.d.ts.map +1 -1
- package/dist/capabilities/stream-params.cap.d.ts +27 -26
- package/dist/capabilities/stream-params.cap.d.ts.map +1 -1
- package/dist/capabilities/switch.cap.d.ts +1 -0
- package/dist/capabilities/switch.cap.d.ts.map +1 -1
- package/dist/capabilities/tamper.cap.d.ts +33 -0
- package/dist/capabilities/tamper.cap.d.ts.map +1 -0
- package/dist/capabilities/temperature-sensor.cap.d.ts +51 -0
- package/dist/capabilities/temperature-sensor.cap.d.ts.map +1 -0
- package/dist/capabilities/update.cap.d.ts +49 -0
- package/dist/capabilities/update.cap.d.ts.map +1 -0
- package/dist/capabilities/vacuum-control.cap.d.ts +229 -0
- package/dist/capabilities/vacuum-control.cap.d.ts.map +1 -0
- package/dist/capabilities/valve.cap.d.ts +93 -0
- package/dist/capabilities/valve.cap.d.ts.map +1 -0
- package/dist/capabilities/vibration.cap.d.ts +33 -0
- package/dist/capabilities/vibration.cap.d.ts.map +1 -0
- package/dist/capabilities/videoclips.cap.d.ts +77 -0
- package/dist/capabilities/videoclips.cap.d.ts.map +1 -0
- package/dist/capabilities/water-heater.cap.d.ts +78 -0
- package/dist/capabilities/water-heater.cap.d.ts.map +1 -0
- package/dist/capabilities/weather.cap.d.ts +76 -0
- package/dist/capabilities/weather.cap.d.ts.map +1 -0
- package/dist/capabilities/webrtc-session.cap.d.ts +95 -1
- package/dist/capabilities/webrtc-session.cap.d.ts.map +1 -1
- package/dist/constants.d.ts +0 -2
- package/dist/constants.d.ts.map +1 -1
- package/dist/device/base-device-provider.d.ts +11 -0
- package/dist/device/base-device-provider.d.ts.map +1 -1
- package/dist/device/base-device.d.ts +52 -0
- package/dist/device/base-device.d.ts.map +1 -1
- package/dist/device/device-context.d.ts +29 -0
- package/dist/device/device-context.d.ts.map +1 -1
- package/dist/device/device-link-transform.d.ts +6 -0
- package/dist/device/device-link-transform.d.ts.map +1 -0
- package/dist/device/device-management.d.ts +116 -4
- package/dist/device/device-management.d.ts.map +1 -1
- package/dist/device/device-type.d.ts +214 -3
- package/dist/device/device-type.d.ts.map +1 -1
- package/dist/device/device.d.ts +25 -0
- package/dist/device/device.d.ts.map +1 -1
- package/dist/device/index.d.ts +5 -1
- package/dist/device/index.d.ts.map +1 -1
- package/dist/device/path-util.d.ts +13 -0
- package/dist/device/path-util.d.ts.map +1 -0
- package/dist/device/schema-fields.d.ts +12 -0
- package/dist/device/schema-fields.d.ts.map +1 -0
- package/dist/device/source-info.d.ts +87 -0
- package/dist/device/source-info.d.ts.map +1 -0
- package/dist/device/system-mirror.d.ts +6 -2
- package/dist/device/system-mirror.d.ts.map +1 -1
- package/dist/encode-profile.d.ts +126 -0
- package/dist/encode-profile.d.ts.map +1 -0
- package/dist/enums/event-category.d.ts +64 -6
- package/dist/enums/event-category.d.ts.map +1 -1
- package/dist/generated/addon-api.d.ts +12722 -8080
- package/dist/generated/addon-api.d.ts.map +1 -1
- package/dist/generated/cap-status-types.d.ts +85 -1
- package/dist/generated/cap-status-types.d.ts.map +1 -1
- package/dist/generated/capability-router-map.d.ts +139 -7
- package/dist/generated/capability-router-map.d.ts.map +1 -1
- package/dist/generated/device-local-state.d.ts +117 -0
- package/dist/generated/device-local-state.d.ts.map +1 -1
- package/dist/generated/device-proxy.d.ts +126 -5
- package/dist/generated/device-proxy.d.ts.map +1 -1
- package/dist/generated/method-access-map.d.ts +1 -1
- package/dist/generated/method-access-map.d.ts.map +1 -1
- package/dist/generated/provider-kind-map.d.ts +1 -1
- package/dist/generated/provider-kind-map.d.ts.map +1 -1
- package/dist/generated/system-proxy.d.ts +10 -8
- package/dist/generated/system-proxy.d.ts.map +1 -1
- package/dist/{index-C2zzIDdX.mjs → index-BxWo3b49.mjs} +4714 -1113
- package/dist/index-BxWo3b49.mjs.map +1 -0
- package/dist/{index-DnpdVFKv.js → index-CGMPfVaT.js} +4321 -720
- package/dist/index-CGMPfVaT.js.map +1 -0
- package/dist/index.d.ts +22 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1384 -116
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1698 -430
- package/dist/index.mjs.map +1 -1
- package/dist/interfaces/addon-data-plane.d.ts +76 -0
- package/dist/interfaces/addon-data-plane.d.ts.map +1 -0
- package/dist/interfaces/addon.d.ts +60 -0
- package/dist/interfaces/addon.d.ts.map +1 -1
- package/dist/interfaces/advanced-notifier.d.ts +4 -0
- package/dist/interfaces/advanced-notifier.d.ts.map +1 -1
- package/dist/interfaces/capability.d.ts +42 -1
- package/dist/interfaces/capability.d.ts.map +1 -1
- package/dist/interfaces/config-ui.d.ts +70 -6
- package/dist/interfaces/config-ui.d.ts.map +1 -1
- package/dist/interfaces/device-capabilities/camera.d.ts +2 -1
- package/dist/interfaces/device-capabilities/camera.d.ts.map +1 -1
- package/dist/interfaces/event-bus.d.ts +49 -3
- package/dist/interfaces/event-bus.d.ts.map +1 -1
- package/dist/interfaces/kernel-abstractions.d.ts +10 -1
- package/dist/interfaces/kernel-abstractions.d.ts.map +1 -1
- package/dist/interfaces/network-quality.d.ts +8 -0
- package/dist/interfaces/network-quality.d.ts.map +1 -1
- package/dist/interfaces/pipeline-executor-capability.d.ts +2 -2
- package/dist/interfaces/pipeline-orchestrator-capability.d.ts +2 -1
- package/dist/interfaces/pipeline-orchestrator-capability.d.ts.map +1 -1
- package/dist/interfaces/pipeline-runner-capability.d.ts +7 -0
- package/dist/interfaces/pipeline-runner-capability.d.ts.map +1 -1
- package/dist/interfaces/recording-config-migrate.d.ts +13 -0
- package/dist/interfaces/recording-config-migrate.d.ts.map +1 -0
- package/dist/interfaces/recording-config.d.ts +209 -0
- package/dist/interfaces/recording-config.d.ts.map +1 -0
- package/dist/interfaces/rtp-egress.d.ts +2 -3
- package/dist/interfaces/rtp-egress.d.ts.map +1 -1
- package/dist/interfaces/storage-location-declaration.d.ts +34 -0
- package/dist/interfaces/storage-location-declaration.d.ts.map +1 -0
- package/dist/interfaces/storage-location.d.ts +19 -74
- package/dist/interfaces/storage-location.d.ts.map +1 -1
- package/dist/interfaces/storage.d.ts +15 -4
- package/dist/interfaces/storage.d.ts.map +1 -1
- package/dist/interfaces/stream-broker.d.ts +18 -3
- package/dist/interfaces/stream-broker.d.ts.map +1 -1
- package/dist/interfaces/timezones.d.ts +59 -0
- package/dist/interfaces/timezones.d.ts.map +1 -0
- package/dist/node.d.ts +3 -0
- package/dist/node.d.ts.map +1 -1
- package/dist/node.js +50 -8
- package/dist/node.js.map +1 -1
- package/dist/node.mjs +51 -9
- package/dist/node.mjs.map +1 -1
- package/dist/storage/filesystem-storage-provider.d.ts +2 -1
- package/dist/storage/filesystem-storage-provider.d.ts.map +1 -1
- package/dist/stream-selection.d.ts +85 -0
- package/dist/stream-selection.d.ts.map +1 -0
- package/dist/types/detection.d.ts +3 -3
- package/dist/types/io.d.ts +1 -1
- package/dist/types/io.d.ts.map +1 -1
- package/dist/util/location-match.d.ts +15 -0
- package/dist/util/location-match.d.ts.map +1 -0
- package/dist/utils/canonical-hash.d.ts +20 -0
- package/dist/utils/canonical-hash.d.ts.map +1 -0
- package/dist/utils/export-reconciler.d.ts +101 -0
- package/dist/utils/export-reconciler.d.ts.map +1 -0
- package/dist/utils/sleep.d.ts +36 -0
- package/dist/utils/sleep.d.ts.map +1 -0
- package/package.json +1 -1
- package/dist/capabilities/recording-engine.cap.d.ts +0 -477
- package/dist/capabilities/recording-engine.cap.d.ts.map +0 -1
- package/dist/index-C2zzIDdX.mjs.map +0 -1
- package/dist/index-DnpdVFKv.js.map +0 -1
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { type InferProvider } from './capability-definition.js';
|
|
3
|
+
import { DeviceType } from '../device/device-type.js';
|
|
4
|
+
/**
|
|
5
|
+
* Water heater / boiler cap. Models HA `water_heater.*` entities — a
|
|
6
|
+
* climate-family actuator with a target temperature, an operation-mode
|
|
7
|
+
* selector (`eco` / `electric` / `gas` / `heat_pump` / `high_demand` /
|
|
8
|
+
* `performance` / `off`), and an optional away-mode toggle.
|
|
9
|
+
*
|
|
10
|
+
* The slice carries the current + target temperature, the active
|
|
11
|
+
* operation mode (HA's `state`) and its available set (HA's
|
|
12
|
+
* `operation_list`), the away flag (HA `away_mode` 'on'/'off' → bool,
|
|
13
|
+
* null when unsupported), plus the `min_temp` / `max_temp` bounds.
|
|
14
|
+
*
|
|
15
|
+
* Providers populate only what the hardware reports — temperature and
|
|
16
|
+
* away fields stay null when the device has no such surface.
|
|
17
|
+
*/
|
|
18
|
+
export declare const WaterHeaterStatusSchema: z.ZodObject<{
|
|
19
|
+
currentTemp: z.ZodNullable<z.ZodNumber>;
|
|
20
|
+
targetTemp: z.ZodNullable<z.ZodNumber>;
|
|
21
|
+
operationMode: z.ZodNullable<z.ZodString>;
|
|
22
|
+
availableModes: z.ZodArray<z.ZodString>;
|
|
23
|
+
away: z.ZodNullable<z.ZodBoolean>;
|
|
24
|
+
minTemp: z.ZodNullable<z.ZodNumber>;
|
|
25
|
+
maxTemp: z.ZodNullable<z.ZodNumber>;
|
|
26
|
+
lastChangedAt: z.ZodNumber;
|
|
27
|
+
}, z.core.$strip>;
|
|
28
|
+
export type WaterHeaterStatus = z.infer<typeof WaterHeaterStatusSchema>;
|
|
29
|
+
export declare const waterHeaterCapability: {
|
|
30
|
+
readonly name: "water-heater";
|
|
31
|
+
readonly scope: "device";
|
|
32
|
+
readonly deviceNative: true;
|
|
33
|
+
readonly mode: "singleton";
|
|
34
|
+
readonly deviceTypes: readonly [DeviceType.WaterHeater];
|
|
35
|
+
readonly methods: {
|
|
36
|
+
readonly setTargetTemp: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
|
|
37
|
+
deviceId: z.ZodNumber;
|
|
38
|
+
temp: z.ZodNumber;
|
|
39
|
+
}, z.core.$strip>, z.ZodVoid, "mutation">;
|
|
40
|
+
readonly setOperationMode: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
|
|
41
|
+
deviceId: z.ZodNumber;
|
|
42
|
+
mode: z.ZodString;
|
|
43
|
+
}, z.core.$strip>, z.ZodVoid, "mutation">;
|
|
44
|
+
readonly setAway: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
|
|
45
|
+
deviceId: z.ZodNumber;
|
|
46
|
+
on: z.ZodBoolean;
|
|
47
|
+
}, z.core.$strip>, z.ZodVoid, "mutation">;
|
|
48
|
+
};
|
|
49
|
+
readonly status: {
|
|
50
|
+
readonly schema: z.ZodObject<{
|
|
51
|
+
currentTemp: z.ZodNullable<z.ZodNumber>;
|
|
52
|
+
targetTemp: z.ZodNullable<z.ZodNumber>;
|
|
53
|
+
operationMode: z.ZodNullable<z.ZodString>;
|
|
54
|
+
availableModes: z.ZodArray<z.ZodString>;
|
|
55
|
+
away: z.ZodNullable<z.ZodBoolean>;
|
|
56
|
+
minTemp: z.ZodNullable<z.ZodNumber>;
|
|
57
|
+
maxTemp: z.ZodNullable<z.ZodNumber>;
|
|
58
|
+
lastChangedAt: z.ZodNumber;
|
|
59
|
+
}, z.core.$strip>;
|
|
60
|
+
readonly kind: "push";
|
|
61
|
+
};
|
|
62
|
+
/**
|
|
63
|
+
* Runtime-state slice — mirrored by the kernel. UI controls watch the
|
|
64
|
+
* slice for live temperature / mode / away changes.
|
|
65
|
+
*/
|
|
66
|
+
readonly runtimeState: z.ZodObject<{
|
|
67
|
+
currentTemp: z.ZodNullable<z.ZodNumber>;
|
|
68
|
+
targetTemp: z.ZodNullable<z.ZodNumber>;
|
|
69
|
+
operationMode: z.ZodNullable<z.ZodString>;
|
|
70
|
+
availableModes: z.ZodArray<z.ZodString>;
|
|
71
|
+
away: z.ZodNullable<z.ZodBoolean>;
|
|
72
|
+
minTemp: z.ZodNullable<z.ZodNumber>;
|
|
73
|
+
maxTemp: z.ZodNullable<z.ZodNumber>;
|
|
74
|
+
lastChangedAt: z.ZodNumber;
|
|
75
|
+
}, z.core.$strip>;
|
|
76
|
+
};
|
|
77
|
+
export type IWaterHeaterProvider = InferProvider<typeof waterHeaterCapability>;
|
|
78
|
+
//# sourceMappingURL=water-heater.cap.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"water-heater.cap.d.ts","sourceRoot":"","sources":["../../src/capabilities/water-heater.cap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAqC,KAAK,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAClG,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAErD;;;;;;;;;;;;;GAaG;AAEH,eAAO,MAAM,uBAAuB;;;;;;;;;iBAoBlC,CAAA;AAEF,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAA;AAEvE,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAoChC;;;OAGG;;;;;;;;;;;CAEoC,CAAA;AAEzC,MAAM,MAAM,oBAAoB,GAAG,aAAa,CAAC,OAAO,qBAAqB,CAAC,CAAA"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { type InferProvider } from './capability-definition.js';
|
|
3
|
+
import { DeviceType } from '../device/device-type.js';
|
|
4
|
+
/**
|
|
5
|
+
* Weather provider cap. Models HA `weather.*` entities — a read-only
|
|
6
|
+
* snapshot of the CURRENT conditions a weather integration reports.
|
|
7
|
+
*
|
|
8
|
+
* Read-only: there are no setters. The slice is populated from upstream
|
|
9
|
+
* pushes (the HA weather entity's state + attributes) and rendered by
|
|
10
|
+
* the UI as a sky scene + readouts.
|
|
11
|
+
*
|
|
12
|
+
* `condition` is the verbatim HA state string (`sunny` / `cloudy` /
|
|
13
|
+
* `rainy` / `snowy` / `partlycloudy` / `pouring` / `lightning` /
|
|
14
|
+
* `lightning-rainy` / `fog` / `windy` / `windy-variant` / `hail` /
|
|
15
|
+
* `clear-night` / `exceptional` / …). The UI maps it to a glyph + tint;
|
|
16
|
+
* unknown strings fall back to a neutral cloud.
|
|
17
|
+
*
|
|
18
|
+
* Every numeric reading is nullable — a given weather integration only
|
|
19
|
+
* populates the metrics it actually provides.
|
|
20
|
+
*
|
|
21
|
+
* Forecast deferred — current conditions only for v1.
|
|
22
|
+
*/
|
|
23
|
+
export declare const WeatherStatusSchema: z.ZodObject<{
|
|
24
|
+
condition: z.ZodNullable<z.ZodString>;
|
|
25
|
+
temperature: z.ZodNullable<z.ZodNumber>;
|
|
26
|
+
temperatureUnit: z.ZodNullable<z.ZodString>;
|
|
27
|
+
humidity: z.ZodNullable<z.ZodNumber>;
|
|
28
|
+
pressure: z.ZodNullable<z.ZodNumber>;
|
|
29
|
+
pressureUnit: z.ZodNullable<z.ZodString>;
|
|
30
|
+
windSpeed: z.ZodNullable<z.ZodNumber>;
|
|
31
|
+
windSpeedUnit: z.ZodNullable<z.ZodString>;
|
|
32
|
+
windBearing: z.ZodNullable<z.ZodNumber>;
|
|
33
|
+
lastFetchedAt: z.ZodNumber;
|
|
34
|
+
}, z.core.$strip>;
|
|
35
|
+
export type WeatherStatus = z.infer<typeof WeatherStatusSchema>;
|
|
36
|
+
export declare const weatherCapability: {
|
|
37
|
+
readonly name: "weather";
|
|
38
|
+
readonly scope: "device";
|
|
39
|
+
readonly deviceNative: true;
|
|
40
|
+
readonly mode: "singleton";
|
|
41
|
+
readonly deviceTypes: readonly [DeviceType.Weather];
|
|
42
|
+
readonly methods: {};
|
|
43
|
+
readonly status: {
|
|
44
|
+
readonly schema: z.ZodObject<{
|
|
45
|
+
condition: z.ZodNullable<z.ZodString>;
|
|
46
|
+
temperature: z.ZodNullable<z.ZodNumber>;
|
|
47
|
+
temperatureUnit: z.ZodNullable<z.ZodString>;
|
|
48
|
+
humidity: z.ZodNullable<z.ZodNumber>;
|
|
49
|
+
pressure: z.ZodNullable<z.ZodNumber>;
|
|
50
|
+
pressureUnit: z.ZodNullable<z.ZodString>;
|
|
51
|
+
windSpeed: z.ZodNullable<z.ZodNumber>;
|
|
52
|
+
windSpeedUnit: z.ZodNullable<z.ZodString>;
|
|
53
|
+
windBearing: z.ZodNullable<z.ZodNumber>;
|
|
54
|
+
lastFetchedAt: z.ZodNumber;
|
|
55
|
+
}, z.core.$strip>;
|
|
56
|
+
readonly kind: "push";
|
|
57
|
+
};
|
|
58
|
+
/**
|
|
59
|
+
* Runtime-state slice — mirrored by the kernel. The UI reads the
|
|
60
|
+
* current conditions directly from the slice on each weather push.
|
|
61
|
+
*/
|
|
62
|
+
readonly runtimeState: z.ZodObject<{
|
|
63
|
+
condition: z.ZodNullable<z.ZodString>;
|
|
64
|
+
temperature: z.ZodNullable<z.ZodNumber>;
|
|
65
|
+
temperatureUnit: z.ZodNullable<z.ZodString>;
|
|
66
|
+
humidity: z.ZodNullable<z.ZodNumber>;
|
|
67
|
+
pressure: z.ZodNullable<z.ZodNumber>;
|
|
68
|
+
pressureUnit: z.ZodNullable<z.ZodString>;
|
|
69
|
+
windSpeed: z.ZodNullable<z.ZodNumber>;
|
|
70
|
+
windSpeedUnit: z.ZodNullable<z.ZodString>;
|
|
71
|
+
windBearing: z.ZodNullable<z.ZodNumber>;
|
|
72
|
+
lastFetchedAt: z.ZodNumber;
|
|
73
|
+
}, z.core.$strip>;
|
|
74
|
+
};
|
|
75
|
+
export type IWeatherProvider = InferProvider<typeof weatherCapability>;
|
|
76
|
+
//# sourceMappingURL=weather.cap.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"weather.cap.d.ts","sourceRoot":"","sources":["../../src/capabilities/weather.cap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAA6B,KAAK,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC1F,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAErD;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;iBAsB9B,CAAA;AAEF,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAA;AAE/D,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;IAa5B;;;OAGG;;;;;;;;;;;;;CAEoC,CAAA;AAEzC,MAAM,MAAM,gBAAgB,GAAG,aAAa,CAAC,OAAO,iBAAiB,CAAC,CAAA"}
|
|
@@ -84,6 +84,7 @@ export declare const webrtcSessionCapability: {
|
|
|
84
84
|
readonly mode: "singleton";
|
|
85
85
|
readonly kind: "wrapper";
|
|
86
86
|
readonly defaultActive: true;
|
|
87
|
+
readonly preferredProvider: "stream-broker";
|
|
87
88
|
readonly deviceTypes: readonly [DeviceType.Camera];
|
|
88
89
|
readonly methods: {
|
|
89
90
|
/**
|
|
@@ -156,6 +157,39 @@ export declare const webrtcSessionCapability: {
|
|
|
156
157
|
prefersTier: z.ZodOptional<z.ZodOptional<z.ZodString>>;
|
|
157
158
|
}, z.core.$strip>>;
|
|
158
159
|
relayOnly: z.ZodOptional<z.ZodBoolean>;
|
|
160
|
+
consumerAttribution: z.ZodOptional<z.ZodReadonly<z.ZodObject<{
|
|
161
|
+
kind: z.ZodEnum<{
|
|
162
|
+
unknown: "unknown";
|
|
163
|
+
recording: "recording";
|
|
164
|
+
snapshot: "snapshot";
|
|
165
|
+
pipeline: "pipeline";
|
|
166
|
+
alexa: "alexa";
|
|
167
|
+
homekit: "homekit";
|
|
168
|
+
"webrtc-browser": "webrtc-browser";
|
|
169
|
+
"webrtc-mobile": "webrtc-mobile";
|
|
170
|
+
"webrtc-whep": "webrtc-whep";
|
|
171
|
+
"rtsp-listen": "rtsp-listen";
|
|
172
|
+
"derived-broker": "derived-broker";
|
|
173
|
+
warmup: "warmup";
|
|
174
|
+
}>;
|
|
175
|
+
label: z.ZodOptional<z.ZodString>;
|
|
176
|
+
media: z.ZodOptional<z.ZodEnum<{
|
|
177
|
+
video: "video";
|
|
178
|
+
audio: "audio";
|
|
179
|
+
both: "both";
|
|
180
|
+
}>>;
|
|
181
|
+
targetCodec: z.ZodOptional<z.ZodString>;
|
|
182
|
+
transport: z.ZodOptional<z.ZodEnum<{
|
|
183
|
+
passthrough: "passthrough";
|
|
184
|
+
repacketize: "repacketize";
|
|
185
|
+
transcode: "transcode";
|
|
186
|
+
}>>;
|
|
187
|
+
remoteAddr: z.ZodOptional<z.ZodString>;
|
|
188
|
+
userAgent: z.ZodOptional<z.ZodString>;
|
|
189
|
+
userId: z.ZodOptional<z.ZodString>;
|
|
190
|
+
sessionId: z.ZodOptional<z.ZodString>;
|
|
191
|
+
extra: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
192
|
+
}, z.core.$strip>>>;
|
|
159
193
|
}, z.core.$strip>, z.ZodObject<{
|
|
160
194
|
sessionId: z.ZodString;
|
|
161
195
|
sdpOffer: z.ZodString;
|
|
@@ -191,6 +225,42 @@ export declare const webrtcSessionCapability: {
|
|
|
191
225
|
sdpOffer: z.ZodString;
|
|
192
226
|
sessionId: z.ZodOptional<z.ZodString>;
|
|
193
227
|
relayOnly: z.ZodOptional<z.ZodBoolean>;
|
|
228
|
+
nonTrickle: z.ZodOptional<z.ZodBoolean>;
|
|
229
|
+
disableTurn: z.ZodOptional<z.ZodBoolean>;
|
|
230
|
+
disableIpv6: z.ZodOptional<z.ZodBoolean>;
|
|
231
|
+
consumerAttribution: z.ZodOptional<z.ZodReadonly<z.ZodObject<{
|
|
232
|
+
kind: z.ZodEnum<{
|
|
233
|
+
unknown: "unknown";
|
|
234
|
+
recording: "recording";
|
|
235
|
+
snapshot: "snapshot";
|
|
236
|
+
pipeline: "pipeline";
|
|
237
|
+
alexa: "alexa";
|
|
238
|
+
homekit: "homekit";
|
|
239
|
+
"webrtc-browser": "webrtc-browser";
|
|
240
|
+
"webrtc-mobile": "webrtc-mobile";
|
|
241
|
+
"webrtc-whep": "webrtc-whep";
|
|
242
|
+
"rtsp-listen": "rtsp-listen";
|
|
243
|
+
"derived-broker": "derived-broker";
|
|
244
|
+
warmup: "warmup";
|
|
245
|
+
}>;
|
|
246
|
+
label: z.ZodOptional<z.ZodString>;
|
|
247
|
+
media: z.ZodOptional<z.ZodEnum<{
|
|
248
|
+
video: "video";
|
|
249
|
+
audio: "audio";
|
|
250
|
+
both: "both";
|
|
251
|
+
}>>;
|
|
252
|
+
targetCodec: z.ZodOptional<z.ZodString>;
|
|
253
|
+
transport: z.ZodOptional<z.ZodEnum<{
|
|
254
|
+
passthrough: "passthrough";
|
|
255
|
+
repacketize: "repacketize";
|
|
256
|
+
transcode: "transcode";
|
|
257
|
+
}>>;
|
|
258
|
+
remoteAddr: z.ZodOptional<z.ZodString>;
|
|
259
|
+
userAgent: z.ZodOptional<z.ZodString>;
|
|
260
|
+
userId: z.ZodOptional<z.ZodString>;
|
|
261
|
+
sessionId: z.ZodOptional<z.ZodString>;
|
|
262
|
+
extra: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
263
|
+
}, z.core.$strip>>>;
|
|
194
264
|
}, z.core.$strip>, z.ZodObject<{
|
|
195
265
|
sessionId: z.ZodString;
|
|
196
266
|
sdpAnswer: z.ZodString;
|
|
@@ -205,7 +275,7 @@ export declare const webrtcSessionCapability: {
|
|
|
205
275
|
* Lets the client send its SDP offer/answer IMMEDIATELY (before ICE
|
|
206
276
|
* gathering finishes) and deliver candidates as they arrive, so the
|
|
207
277
|
* connection establishes in ~0s instead of waiting for full gathering.
|
|
208
|
-
* The dual of `getIceCandidates
|
|
278
|
+
* The dual of `getIceCandidates` in the trickle-ICE signaling exchange.
|
|
209
279
|
*/
|
|
210
280
|
readonly addIceCandidate: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
|
|
211
281
|
deviceId: z.ZodNumber;
|
|
@@ -245,6 +315,30 @@ export declare const webrtcSessionCapability: {
|
|
|
245
315
|
low: "low";
|
|
246
316
|
}>;
|
|
247
317
|
}, z.core.$strip>, z.ZodBoolean, import("./capability-definition.js").CapabilityMethodKind>;
|
|
318
|
+
/** Poll the live signaling state of a session. `pendingRenegotiation` is
|
|
319
|
+
* non-null after an adaptive tier switch — the client re-offers on the
|
|
320
|
+
* same sessionId; `epoch` guards against acting on a stale poll twice. */
|
|
321
|
+
readonly getSessionState: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
|
|
322
|
+
deviceId: z.ZodNumber;
|
|
323
|
+
sessionId: z.ZodString;
|
|
324
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
325
|
+
pendingRenegotiation: z.ZodNullable<z.ZodObject<{
|
|
326
|
+
target: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
327
|
+
kind: z.ZodLiteral<"adaptive">;
|
|
328
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
329
|
+
kind: z.ZodLiteral<"profile">;
|
|
330
|
+
profile: z.ZodEnum<{
|
|
331
|
+
high: "high";
|
|
332
|
+
mid: "mid";
|
|
333
|
+
low: "low";
|
|
334
|
+
}>;
|
|
335
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
336
|
+
kind: z.ZodLiteral<"cam-stream">;
|
|
337
|
+
camStreamId: z.ZodString;
|
|
338
|
+
}, z.core.$strip>], "kind">;
|
|
339
|
+
epoch: z.ZodNumber;
|
|
340
|
+
}, z.core.$strip>>;
|
|
341
|
+
}, z.core.$strip>, import("./capability-definition.js").CapabilityMethodKind>;
|
|
248
342
|
};
|
|
249
343
|
};
|
|
250
344
|
export type IWebrtcSessionProvider = InferProvider<typeof webrtcSessionCapability>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webrtc-session.cap.d.ts","sourceRoot":"","sources":["../../src/capabilities/webrtc-session.cap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAqC,KAAK,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAClG,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;
|
|
1
|
+
{"version":3,"file":"webrtc-session.cap.d.ts","sourceRoot":"","sources":["../../src/capabilities/webrtc-session.cap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAqC,KAAK,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAClG,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAKrD;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;2BAInC,CAAA;AACF,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAA;AAEzE,qDAAqD;AACrD,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAmBnC,CAAA;AACF,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAA;AAEzE;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,uBAAuB;;;;;;;;;QAYhC;;;;;WAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAKH;;;;;;WAMG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA+BH;;;;;;;;;;;;WAYG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA0FH;;;;;;WAMG;;;;;;;;QAYH;;;;;;WAMG;;;;;;;;;;;;;;;;QAwBH,kFAAkF;;;;;;;;;QAQlF;;mFAE2E;;;;;;;;;;;;;;;;;;;;;;;CAatC,CAAA;AAEzC,MAAM,MAAM,sBAAsB,GAAG,aAAa,CAAC,OAAO,uBAAuB,CAAC,CAAA"}
|
package/dist/constants.d.ts
CHANGED
|
@@ -35,8 +35,6 @@ export interface RuntimeDefaultsShape {
|
|
|
35
35
|
'storage.provider': string;
|
|
36
36
|
'storage.locations': Record<string, string>;
|
|
37
37
|
'providers': RuntimeDefaultsProvider[];
|
|
38
|
-
'recording.segmentDurationSeconds': number;
|
|
39
|
-
'recording.defaultRetentionDays': number;
|
|
40
38
|
'ffmpeg.binaryPath': string;
|
|
41
39
|
'ffmpeg.hwAccel': string;
|
|
42
40
|
'ffmpeg.threadCount': number;
|
package/dist/constants.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,6BAA6B,CAAA;AACjD,eAAO,MAAM,WAAW,iEAAmD,CAAA;AAE3E;;;;;;;;GAQG;AACH,MAAM,WAAW,uBAAuB;IACtC,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,oBAAoB;IACnC;sEACkE;IAClE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;IACtB,oBAAoB,EAAE,OAAO,CAAA;IAC7B,wBAAwB,EAAE,OAAO,CAAA;IACjC,0BAA0B,EAAE,OAAO,CAAA;IACnC,uBAAuB,EAAE,OAAO,CAAA;IAChC,uBAAuB,EAAE,OAAO,CAAA;IAChC,oBAAoB,EAAE,OAAO,CAAA;IAC7B,qBAAqB,EAAE,OAAO,CAAA;IAC9B,iBAAiB,EAAE,OAAO,CAAA;IAC1B,eAAe,EAAE,OAAO,CAAA;IACxB,+BAA+B,EAAE,MAAM,CAAA;IACvC,2BAA2B,EAAE,MAAM,CAAA;IACnC,eAAe,EAAE,MAAM,CAAA;IACvB,uBAAuB,EAAE,MAAM,CAAA;IAC/B,yBAAyB,EAAE,MAAM,CAAA;IACjC,kBAAkB,EAAE,MAAM,CAAA;IAC1B,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC3C,WAAW,EAAE,uBAAuB,EAAE,CAAA;IACtC,
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,6BAA6B,CAAA;AACjD,eAAO,MAAM,WAAW,iEAAmD,CAAA;AAE3E;;;;;;;;GAQG;AACH,MAAM,WAAW,uBAAuB;IACtC,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,oBAAoB;IACnC;sEACkE;IAClE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;IACtB,oBAAoB,EAAE,OAAO,CAAA;IAC7B,wBAAwB,EAAE,OAAO,CAAA;IACjC,0BAA0B,EAAE,OAAO,CAAA;IACnC,uBAAuB,EAAE,OAAO,CAAA;IAChC,uBAAuB,EAAE,OAAO,CAAA;IAChC,oBAAoB,EAAE,OAAO,CAAA;IAC7B,qBAAqB,EAAE,OAAO,CAAA;IAC9B,iBAAiB,EAAE,OAAO,CAAA;IAC1B,eAAe,EAAE,OAAO,CAAA;IACxB,+BAA+B,EAAE,MAAM,CAAA;IACvC,2BAA2B,EAAE,MAAM,CAAA;IACnC,eAAe,EAAE,MAAM,CAAA;IACvB,uBAAuB,EAAE,MAAM,CAAA;IAC/B,yBAAyB,EAAE,MAAM,CAAA;IACjC,kBAAkB,EAAE,MAAM,CAAA;IAC1B,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC3C,WAAW,EAAE,uBAAuB,EAAE,CAAA;IACtC,mBAAmB,EAAE,MAAM,CAAA;IAC3B,gBAAgB,EAAE,MAAM,CAAA;IACxB,oBAAoB,EAAE,MAAM,CAAA;IAC5B,kBAAkB,EAAE,MAAM,CAAA;CAC3B;AAED;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,EAAE,oBAoC9B,CAAA"}
|
|
@@ -3,11 +3,17 @@ import { BaseAddon } from '../addon/base-addon.js';
|
|
|
3
3
|
import { DeviceType } from './device-type.js';
|
|
4
4
|
import type { CreateDeviceSpec } from './device-management.js';
|
|
5
5
|
import type { DeviceConstructor } from './device-context.js';
|
|
6
|
+
import type { SourceInfo } from './source-info.js';
|
|
6
7
|
export interface DiscoveryCandidate {
|
|
7
8
|
readonly stableId: string;
|
|
8
9
|
readonly type: DeviceType;
|
|
9
10
|
readonly suggestedName: string;
|
|
10
11
|
readonly prefilledConfig: Record<string, unknown>;
|
|
12
|
+
/** Optional upstream-system identity + rendering envelope. See
|
|
13
|
+
* `SourceInfo`. Pre-populated by providers whose discovery surface
|
|
14
|
+
* knows the upstream identity ahead of adoption (HA: entity_id +
|
|
15
|
+
* unit + device_class from `GET /api/states`). */
|
|
16
|
+
readonly sourceInfo?: SourceInfo;
|
|
11
17
|
}
|
|
12
18
|
export interface DeviceSummary {
|
|
13
19
|
readonly id: number;
|
|
@@ -19,6 +25,11 @@ export interface DeviceSummary {
|
|
|
19
25
|
readonly online: boolean;
|
|
20
26
|
readonly features: readonly string[];
|
|
21
27
|
readonly config: Record<string, unknown>;
|
|
28
|
+
/** Optional upstream-system identity + rendering envelope. See
|
|
29
|
+
* `SourceInfo`. Present when the device has been persisted with a
|
|
30
|
+
* non-synthetic source identifier (HA entities, vendor MAC, …);
|
|
31
|
+
* omitted when the synthetic backfill is in effect. */
|
|
32
|
+
readonly sourceInfo?: SourceInfo;
|
|
22
33
|
}
|
|
23
34
|
export interface ProviderStatus {
|
|
24
35
|
readonly connected: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-device-provider.d.ts","sourceRoot":"","sources":["../../src/device/base-device-provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,cAAc,EACd,WAAW,EACX,OAAO,EACR,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAElD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAC9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"base-device-provider.d.ts","sourceRoot":"","sources":["../../src/device/base-device-provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,8 @@ import type { IDevice } from './device.js';
|
|
|
7
7
|
import type { ConfigUISchemaWithValues } from '../interfaces/config-ui.js';
|
|
8
8
|
import type { CapabilityDefinition, InferRuntimeState } from '../capabilities/capability-definition.js';
|
|
9
9
|
import { type DeviceLocalState } from '../generated/device-local-state.js';
|
|
10
|
+
import { type SourceInfo } from './source-info.js';
|
|
11
|
+
import type { CustomActionSpec } from '../capabilities/custom-actions.js';
|
|
10
12
|
export declare abstract class BaseDevice<T extends z.ZodObject<z.core.$ZodLooseShape> = z.ZodObject<z.ZodRawShape>> implements IDevice {
|
|
11
13
|
readonly id: number;
|
|
12
14
|
readonly stableId: string;
|
|
@@ -85,11 +87,26 @@ export declare abstract class BaseDevice<T extends z.ZodObject<z.core.$ZodLooseS
|
|
|
85
87
|
* `kernel.devices.setDisabled(id, value)`.
|
|
86
88
|
*/
|
|
87
89
|
readonly disabled: boolean;
|
|
90
|
+
/**
|
|
91
|
+
* Cached materialised `SourceInfo` — either the value persisted under
|
|
92
|
+
* `metadata.sourceInfo` at construction time, or a synthetic
|
|
93
|
+
* `{ id: stableId, system: addonId }` for providers that haven't
|
|
94
|
+
* migrated yet. Lazily populated on first `sourceInfo` read so the
|
|
95
|
+
* cost of Zod-parsing the meta blob is paid once per device boot.
|
|
96
|
+
* Invalidated by `updateSourceInfo()` so providers see the new value
|
|
97
|
+
* back through the getter without a re-fetch from the meta surface.
|
|
98
|
+
*/
|
|
99
|
+
private _sourceInfoCache;
|
|
88
100
|
constructor(ctx: DeviceContext, schema: T, options: {
|
|
89
101
|
type: DeviceType;
|
|
90
102
|
/** Optional semantic role within parent — see `DeviceRole`. */
|
|
91
103
|
role?: DeviceRole;
|
|
92
104
|
});
|
|
105
|
+
private readonly deviceActions;
|
|
106
|
+
/** Declare a device custom action + its typed handler. Idempotent per name. */
|
|
107
|
+
protected registerDeviceAction<TIn extends z.ZodType, TOut extends z.ZodType>(name: string, spec: CustomActionSpec<TIn, TOut>, handler: (input: z.infer<TIn>) => Promise<z.infer<TOut>>): void;
|
|
108
|
+
/** Invoke a registered device action. Validates input against the spec. */
|
|
109
|
+
runDeviceAction(action: string, input: unknown): Promise<unknown>;
|
|
93
110
|
removeDevice(): Promise<void>;
|
|
94
111
|
/**
|
|
95
112
|
* Set the device's online flag. Called by `BaseDeviceProvider` after
|
|
@@ -101,6 +118,41 @@ export declare abstract class BaseDevice<T extends z.ZodObject<z.core.$ZodLooseS
|
|
|
101
118
|
* override to gate side effects on the transition.
|
|
102
119
|
*/
|
|
103
120
|
markOnline(online: boolean): void;
|
|
121
|
+
/**
|
|
122
|
+
* Upstream-system identity + rendering envelope for this device. See
|
|
123
|
+
* `SourceInfo` for the field contract. Always returns a valid object:
|
|
124
|
+
* if the persisted `metadata.sourceInfo` blob is absent or fails Zod
|
|
125
|
+
* validation, falls back to a synthetic `{ id: stableId, system: addonId }`
|
|
126
|
+
* so providers that haven't migrated keep working without code changes.
|
|
127
|
+
*
|
|
128
|
+
* The value is cached after the first read. `updateSourceInfo()`
|
|
129
|
+
* invalidates the cache so subsequent reads see the new patch. The
|
|
130
|
+
* returned object is frozen to prevent accidental in-place mutation —
|
|
131
|
+
* use `updateSourceInfo({ patch })` to change fields.
|
|
132
|
+
*/
|
|
133
|
+
get sourceInfo(): Readonly<SourceInfo>;
|
|
134
|
+
/**
|
|
135
|
+
* Convenience accessor for the upstream dispatch key. Equivalent to
|
|
136
|
+
* `this.sourceInfo.id` — providers use this to keep a
|
|
137
|
+
* `Map<sourceId, IDevice>` for routing inbound push events.
|
|
138
|
+
*/
|
|
139
|
+
get sourceId(): string;
|
|
140
|
+
/**
|
|
141
|
+
* Patch the device's `SourceInfo`. Shallow-merges `patch` over the
|
|
142
|
+
* current value, persists the merged result under
|
|
143
|
+
* `metadata.sourceInfo` via the `device-manager.setMetadata` cap, and
|
|
144
|
+
* emits `EventCategory.DeviceSourceInfoChanged` for live consumers.
|
|
145
|
+
*
|
|
146
|
+
* Safe to call from anywhere in the device's lifetime — the call is
|
|
147
|
+
* idempotent for `undefined` patch values (ignored) and best-effort
|
|
148
|
+
* for persistence (a transient device-manager error doesn't unwind
|
|
149
|
+
* the local cache update, so subsequent reads still see the patch).
|
|
150
|
+
*
|
|
151
|
+
* Drivers populate this on adoption + on every metadata change push
|
|
152
|
+
* from the upstream source. Subscribers (UI, export adapters) react
|
|
153
|
+
* via the `DeviceSourceInfoChanged` event without polling.
|
|
154
|
+
*/
|
|
155
|
+
protected updateSourceInfo(patch: Partial<SourceInfo>): Promise<void>;
|
|
104
156
|
/**
|
|
105
157
|
* Re-publish the device's current `features` array to the persisted
|
|
106
158
|
* meta blob. Drivers call this after a probe finishes when the live
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-device.d.ts","sourceRoot":"","sources":["../../src/device/base-device.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEjD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAA;AACpE,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACxD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAA;AAG1E,OAAO,KAAK,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,0CAA0C,CAAA;AACvG,OAAO,EAA2B,KAAK,gBAAgB,EAAE,MAAM,oCAAoC,CAAA;
|
|
1
|
+
{"version":3,"file":"base-device.d.ts","sourceRoot":"","sources":["../../src/device/base-device.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,7 @@ import type { IKernelStreamProbe } from '../interfaces/addon.js';
|
|
|
6
6
|
import type { AddonApi } from '../generated/addon-api.js';
|
|
7
7
|
import type { DeviceProxy } from '../generated/device-proxy.js';
|
|
8
8
|
import type { DeviceMeta, InitialDeviceMeta } from './device-management.js';
|
|
9
|
+
import type { DeviceType } from './device-type.js';
|
|
9
10
|
export interface DeviceContext {
|
|
10
11
|
/** Progressive, system-wide unique numeric device id. Injected from the
|
|
11
12
|
* hub's `device-manager` via `DeviceManagerApi.allocateDeviceId` before
|
|
@@ -202,6 +203,34 @@ export interface DeviceManagerApi {
|
|
|
202
203
|
* the next boot.
|
|
203
204
|
*/
|
|
204
205
|
decommission(deviceId: number): Promise<void>;
|
|
206
|
+
/**
|
|
207
|
+
* Re-align a device's structural / mapping-derived spec and propagate the
|
|
208
|
+
* change to the live instance — generic, provider-agnostic, keyed only by
|
|
209
|
+
* `deviceId`. A provider calls this when an upstream source it owns reports
|
|
210
|
+
* that a device's derived shape changed (type, semantic role, or the
|
|
211
|
+
* mapping-derived config that selects the concrete device class).
|
|
212
|
+
*
|
|
213
|
+
* Behaviour:
|
|
214
|
+
* - `type` / `role` → applied via the existing meta setters.
|
|
215
|
+
* - `config` → merged over the persisted config (a patch). When the merge
|
|
216
|
+
* actually changes the blob, the live instance is rebuilt: the kernel
|
|
217
|
+
* tears it down with {@link decommission} (preserving the persisted
|
|
218
|
+
* meta/config rows, hence the operator's name/location/id), re-persists
|
|
219
|
+
* the merged config, then reconstructs via the device's creation factory
|
|
220
|
+
* so a config that maps to a different class yields the new class. No
|
|
221
|
+
* rebuild happens when nothing changed.
|
|
222
|
+
*
|
|
223
|
+
* The framework never interprets `config` (an opaque, provider-owned blob —
|
|
224
|
+
* it carries no kernel-level semantics like capabilities or device_class).
|
|
225
|
+
* Rebuild is only possible for devices created through `create()` or accessory
|
|
226
|
+
* spawn (which register a reconstruction factory); for others only the
|
|
227
|
+
* `type`/`role` meta updates apply.
|
|
228
|
+
*/
|
|
229
|
+
applyDerivedSpec(deviceId: number, derived: {
|
|
230
|
+
type?: DeviceType;
|
|
231
|
+
role?: string;
|
|
232
|
+
config?: Record<string, unknown>;
|
|
233
|
+
}): Promise<void>;
|
|
205
234
|
/** List all devices for this addon */
|
|
206
235
|
getAll(): Promise<ReadonlyArray<IDevice>>;
|
|
207
236
|
/** List children of a specific device */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"device-context.d.ts","sourceRoot":"","sources":["../../src/device/device-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAA;AAC3D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,KAAK,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAA;AACzG,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAChE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAA;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAA;AAC/D,OAAO,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;
|
|
1
|
+
{"version":3,"file":"device-context.d.ts","sourceRoot":"","sources":["../../src/device/device-context.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { DeviceLinkTransform } from './device-management.js';
|
|
2
|
+
/** Apply a link transform to a resolved source value. `identity`/undefined
|
|
3
|
+
* pass through; `enum-map` remaps strings (fallback or null when unknown);
|
|
4
|
+
* `linear` does scale*x+offset with optional clamp (null for non-numbers). */
|
|
5
|
+
export declare function applyTransform(value: unknown, transform: DeviceLinkTransform | undefined): unknown;
|
|
6
|
+
//# sourceMappingURL=device-link-transform.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"device-link-transform.d.ts","sourceRoot":"","sources":["../../src/device/device-link-transform.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAEjE;;+EAE+E;AAC/E,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,mBAAmB,GAAG,SAAS,GAAG,OAAO,CAqBlG"}
|