@camstack/types 0.1.40 → 0.1.41
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/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 +93 -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 +238 -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 +31 -186
- package/dist/capabilities/storage-provider.cap.d.ts.map +1 -1
- package/dist/capabilities/storage.cap.d.ts +35 -226
- package/dist/capabilities/storage.cap.d.ts.map +1 -1
- package/dist/capabilities/stream-broker.cap.d.ts +309 -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/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 +12345 -8129
- 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 +133 -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 +124 -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 +9 -7
- package/dist/generated/system-proxy.d.ts.map +1 -1
- package/dist/{index-DnpdVFKv.js → index-BSA_TBea.js} +4170 -728
- package/dist/index-BSA_TBea.js.map +1 -0
- package/dist/{index-C2zzIDdX.mjs → index-Bpj3ScIH.mjs} +4563 -1121
- package/dist/index-Bpj3ScIH.mjs.map +1 -0
- package/dist/index.d.ts +21 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1323 -116
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1637 -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.d.ts +91 -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 +18 -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,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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { z } from 'zod';
|
|
2
2
|
import type { DeviceType } from './device-type.js';
|
|
3
3
|
import type { IDevice } from './device.js';
|
|
4
|
+
import type { SourceInfo } from './source-info.js';
|
|
4
5
|
export interface DeviceManualCreation {
|
|
5
6
|
getChildCreationSchema(type: DeviceType): z.ZodObject<z.core.$ZodLooseShape>;
|
|
6
7
|
createDevice(type: DeviceType, config: unknown): Promise<IDevice>;
|
|
@@ -14,6 +15,10 @@ export interface DiscoveredDevice {
|
|
|
14
15
|
readonly type: DeviceType;
|
|
15
16
|
readonly suggestedName: string;
|
|
16
17
|
readonly prefilledConfig: Record<string, unknown>;
|
|
18
|
+
/** Optional upstream-system identity + rendering envelope. See
|
|
19
|
+
* `SourceInfo`. Providers populate this when discovery already knows
|
|
20
|
+
* the upstream identity / unit / deviceClass (HA-style discovery). */
|
|
21
|
+
readonly sourceInfo?: SourceInfo;
|
|
17
22
|
}
|
|
18
23
|
export interface SavedDevice {
|
|
19
24
|
/** Numeric id reserved at allocateDeviceId time. */
|
|
@@ -56,10 +61,9 @@ export interface SavedDevice {
|
|
|
56
61
|
*/
|
|
57
62
|
/**
|
|
58
63
|
* Free-form device metadata — hardware identity + driver-populated
|
|
59
|
-
* facts the operator can both read and edit.
|
|
60
|
-
*
|
|
61
|
-
*
|
|
62
|
-
* matter id, ONVIF profile token, …) don't require schema changes.
|
|
64
|
+
* facts the operator can both read and edit. Stored as a single JSON
|
|
65
|
+
* blob so future fields (HA matter id, ONVIF profile token, …) don't
|
|
66
|
+
* require schema changes.
|
|
63
67
|
*
|
|
64
68
|
* Conventional keys (drivers should populate when known):
|
|
65
69
|
* - `manufacturer` e.g. 'Reolink'
|
|
@@ -74,6 +78,62 @@ export interface SavedDevice {
|
|
|
74
78
|
* `ipAddress`, `apiPort`, …). All values must be JSON-serializable.
|
|
75
79
|
*/
|
|
76
80
|
export type DeviceMetadata = Record<string, unknown>;
|
|
81
|
+
/** One child-placement directive on a container's `childLayout`. The child is
|
|
82
|
+
* identified by its accessory `stableIdSuffix` (the key the provider passes to
|
|
83
|
+
* `getAccessoryChildren()`), which is re-sync stable. Children NOT listed here
|
|
84
|
+
* render in the plain Overview list as today; listed children are grouped into
|
|
85
|
+
* collapsible accordion sections in the UI (built in a follow-up task). */
|
|
86
|
+
export interface ChildLayoutEntry {
|
|
87
|
+
readonly childKey: string;
|
|
88
|
+
readonly section: string;
|
|
89
|
+
readonly order?: number;
|
|
90
|
+
/** Section-level default-collapsed hint: when true, the accordion section this
|
|
91
|
+
* entry belongs to renders closed by default. The section is treated as
|
|
92
|
+
* collapsed if ANY of its entries sets `collapsed: true`; consistent values
|
|
93
|
+
* across a section's entries are recommended but not enforced. Absent ⇒ open
|
|
94
|
+
* by default. */
|
|
95
|
+
readonly collapsed?: boolean;
|
|
96
|
+
}
|
|
97
|
+
export type ChildLayout = readonly ChildLayoutEntry[];
|
|
98
|
+
/** One end of a device link: a single field on a source device's capability,
|
|
99
|
+
* addressed by the source's re-sync-stable accessory `stableIdSuffix`
|
|
100
|
+
* (`sourceKey`) — NOT a raw numeric id — so the link survives a re-sync. The
|
|
101
|
+
* source must be a sibling accessory under the SAME parent container as the
|
|
102
|
+
* target device; resolution is `${parentStableId}-${sourceKey}` (cross-parent
|
|
103
|
+
* links are out of scope and resolve to no source). */
|
|
104
|
+
export interface DeviceLinkSource {
|
|
105
|
+
readonly sourceKey: string;
|
|
106
|
+
readonly cap: string;
|
|
107
|
+
readonly fieldPath: string;
|
|
108
|
+
}
|
|
109
|
+
/** The target field a link writes: a dot-path into the target cap's status. */
|
|
110
|
+
export interface DeviceLinkTarget {
|
|
111
|
+
readonly cap: string;
|
|
112
|
+
readonly fieldPath: string;
|
|
113
|
+
/** Optional grouping key for array-of-items target caps (consumables); P2. */
|
|
114
|
+
readonly itemKey?: string;
|
|
115
|
+
}
|
|
116
|
+
/** Optional value transform applied to the resolved source value. */
|
|
117
|
+
export type DeviceLinkTransform = {
|
|
118
|
+
readonly kind: 'identity';
|
|
119
|
+
} | {
|
|
120
|
+
readonly kind: 'enum-map';
|
|
121
|
+
readonly mapping: Record<string, string | number | boolean>;
|
|
122
|
+
readonly fallback?: string | number | boolean;
|
|
123
|
+
} | {
|
|
124
|
+
readonly kind: 'linear';
|
|
125
|
+
readonly scale: number;
|
|
126
|
+
readonly offset: number;
|
|
127
|
+
readonly clamp?: readonly [number, number];
|
|
128
|
+
};
|
|
129
|
+
/** One operator-authored cross-device field wiring, persisted on the TARGET. */
|
|
130
|
+
export interface DeviceLink {
|
|
131
|
+
readonly id: string;
|
|
132
|
+
readonly source: DeviceLinkSource;
|
|
133
|
+
readonly target: DeviceLinkTarget;
|
|
134
|
+
readonly transform?: DeviceLinkTransform;
|
|
135
|
+
}
|
|
136
|
+
export type DeviceLinks = readonly DeviceLink[];
|
|
77
137
|
export interface DeviceMeta {
|
|
78
138
|
readonly id: number;
|
|
79
139
|
readonly stableId: string;
|
|
@@ -85,6 +145,38 @@ export interface DeviceMeta {
|
|
|
85
145
|
readonly parentDeviceId: number | null;
|
|
86
146
|
/** Hardware + identity blob; null when nothing has been populated yet. */
|
|
87
147
|
readonly metadata: DeviceMetadata | null;
|
|
148
|
+
/** Optional upstream-system identity + rendering envelope. See
|
|
149
|
+
* `SourceInfo`. Persisted under `metadata.sourceInfo` — this field
|
|
150
|
+
* is the typed projection callers consume directly. `BaseDevice`
|
|
151
|
+
* re-extracts via `extractSourceInfoFromMetadata()` for its own
|
|
152
|
+
* getter; kernel-side reader populates this from the same path. */
|
|
153
|
+
readonly sourceInfo?: SourceInfo;
|
|
154
|
+
/** Owning integration id, stamped at create — used by the core to
|
|
155
|
+
* cascade-delete an integration's devices. Optional: only present
|
|
156
|
+
* when the device was created through an integration (e.g. HA). */
|
|
157
|
+
readonly integrationId?: string;
|
|
158
|
+
/** Optional soft-link to another device id (peer of integrationId).
|
|
159
|
+
* Set at create; inert today — reserved for the Container→child
|
|
160
|
+
* passthrough. Nullable: an explicit null means "unlinked". */
|
|
161
|
+
readonly linkDeviceId?: number | null;
|
|
162
|
+
/** Durable primary-child override for a CONTAINER device, keyed on the
|
|
163
|
+
* chosen child's re-sync/rename-stable `entityId` (its `sourceInfo.id`,
|
|
164
|
+
* falling back to `stableId`). Unlike the numeric `linkDeviceId`, this
|
|
165
|
+
* survives a re-sync that reallocates the child's numeric id or renames
|
|
166
|
+
* its row. `null` explicitly clears the override → priority default.
|
|
167
|
+
* Absent ⇒ no override has ever been set. */
|
|
168
|
+
readonly primaryChildEntityId?: string | null;
|
|
169
|
+
/** Container-level layout hint: assigns specific child/accessory devices to
|
|
170
|
+
* named accordion sections (with optional intra-section order). Each entry's
|
|
171
|
+
* `childKey` is the child's re-sync-stable accessory `stableIdSuffix`. Set at
|
|
172
|
+
* create, persisted, projected, and preserved across re-register/restore —
|
|
173
|
+
* same lifecycle as `primaryChildEntityId`. Absent ⇒ no layout declared (all
|
|
174
|
+
* children render in the plain Overview list). */
|
|
175
|
+
readonly childLayout?: ChildLayout;
|
|
176
|
+
/** Operator-authored cross-device field wirings (source field → this device's
|
|
177
|
+
* cap field). Same create/persist/project/restore lifecycle as `childLayout`.
|
|
178
|
+
* Absent ⇒ no links. Overlaid onto the target cap's `getStatus` at read time. */
|
|
179
|
+
readonly deviceLinks?: DeviceLinks;
|
|
88
180
|
}
|
|
89
181
|
/**
|
|
90
182
|
* Initial meta a provider supplies on `onCreateDevice`. Differs
|
|
@@ -95,6 +187,26 @@ export interface InitialDeviceMeta {
|
|
|
95
187
|
readonly type: DeviceType;
|
|
96
188
|
readonly name: string;
|
|
97
189
|
readonly location?: string | null;
|
|
190
|
+
/** Semantic role string (`DeviceRole`) — stamped at create for
|
|
191
|
+
* accessory children (e.g. 'numeric-sensor', 'binary-sensor').
|
|
192
|
+
* Optional: only set when the device is an accessory with a known role. */
|
|
193
|
+
readonly role?: string;
|
|
194
|
+
/** Owning integration id, stamped at create — used by the core to
|
|
195
|
+
* cascade-delete an integration's devices. Optional: only set when
|
|
196
|
+
* the device is being created through an integration. */
|
|
197
|
+
readonly integrationId?: string;
|
|
198
|
+
/** Optional soft-link to another device id (peer of integrationId).
|
|
199
|
+
* Set at create; inert today — reserved for the Container→child
|
|
200
|
+
* passthrough. Nullable: an explicit null means "unlinked". */
|
|
201
|
+
readonly linkDeviceId?: number | null;
|
|
202
|
+
/** Container-level layout hint set at create — assigns specific
|
|
203
|
+
* child/accessory devices to named accordion sections (with optional order).
|
|
204
|
+
* Mirrors `DeviceMeta.childLayout`; persisted, projected, and preserved
|
|
205
|
+
* across re-register/restore. Optional: only set for CONTAINER devices that
|
|
206
|
+
* declare a layout. */
|
|
207
|
+
readonly childLayout?: ChildLayout;
|
|
208
|
+
/** Cross-device field wirings set at create. Mirrors `DeviceMeta.deviceLinks`. */
|
|
209
|
+
readonly deviceLinks?: DeviceLinks;
|
|
98
210
|
}
|
|
99
211
|
/**
|
|
100
212
|
* Single-call payload returned by `BaseDeviceProvider.onCreateDevice`.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"device-management.d.ts","sourceRoot":"","sources":["../../src/device/device-management.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAC5B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"device-management.d.ts","sourceRoot":"","sources":["../../src/device/device-management.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAC5B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAElD,MAAM,WAAW,oBAAoB;IACnC,sBAAsB,CAAC,IAAI,EAAE,UAAU,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;IAC5E,YAAY,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;CAClE;AAED,MAAM,WAAW,eAAe;IAC9B,eAAe,IAAI,OAAO,CAAC,SAAS,gBAAgB,EAAE,CAAC,CAAA;IACvD,qBAAqB,CAAC,SAAS,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;CACrE;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;IACzB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACjD;;2EAEuE;IACvE,QAAQ,CAAC,UAAU,CAAC,EAAE,UAAU,CAAA;CACjC;AAED,MAAM,WAAW,WAAW;IAC1B,oDAAoD;IACpD,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,wEAAwE;IACxE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB;;;;;OAKG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IAChC;;;;;;;OAOG;IACH,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;IAC1B,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;IACtC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACzC;AAED;;;;;;;;;;;;GAYG;AACH;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAEpD;;;;4EAI4E;AAC5E,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB;;;;sBAIkB;IAClB,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAA;CAC7B;AACD,MAAM,MAAM,WAAW,GAAG,SAAS,gBAAgB,EAAE,CAAA;AAErD;;;;;wDAKwD;AACxD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAC3B;AACD,+EAA+E;AAC/E,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,8EAA8E;IAC9E,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAC1B;AACD,qEAAqE;AACrE,MAAM,MAAM,mBAAmB,GAC3B;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;CAAE,GAC7B;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;IAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAA;CAAE,GACzI;IACE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAC3C,CAAA;AACL,gFAAgF;AAChF,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAA;IACjC,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAA;IACjC,QAAQ,CAAC,SAAS,CAAC,EAAE,mBAAmB,CAAA;CACzC;AACD,MAAM,MAAM,WAAW,GAAG,SAAS,UAAU,EAAE,CAAA;AAE/C,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IAChC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;IAC1B,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;IACtC,0EAA0E;IAC1E,QAAQ,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI,CAAA;IACxC;;;;wEAIoE;IACpE,QAAQ,CAAC,UAAU,CAAC,EAAE,UAAU,CAAA;IAChC;;wEAEoE;IACpE,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAA;IAC/B;;oEAEgE;IAChE,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACrC;;;;;kDAK8C;IAC9C,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7C;;;;;uDAKmD;IACnD,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAA;IAClC;;sFAEkF;IAClF,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAA;CACnC;AAED;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACjC;;gFAE4E;IAC5E,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB;;8DAE0D;IAC1D,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAA;IAC/B;;oEAEgE;IAChE,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACrC;;;;4BAIwB;IACxB,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAA;IAClC,kFAAkF;IAClF,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAA;CACnC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAA;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACxC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;CACnE"}
|