@digital-alchemy/hass 25.10.27-beta.0 → 25.10.27-beta.3
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/dev/mappings.d.mts +54 -0
- package/dist/dev/services.mjs +0 -1
- package/dist/dev/services.mjs.map +1 -1
- package/dist/hass.module.d.mts +12 -1
- package/dist/hass.module.mjs +9 -1
- package/dist/hass.module.mjs.map +1 -1
- package/dist/helpers/fetch/configuration.d.mts +5 -5
- package/dist/helpers/fetch/configuration.mjs.map +1 -1
- package/dist/helpers/frontend.d.mts +19 -0
- package/dist/helpers/frontend.mjs +2 -0
- package/dist/helpers/frontend.mjs.map +1 -0
- package/dist/helpers/index.d.mts +1 -0
- package/dist/helpers/index.mjs +1 -0
- package/dist/helpers/index.mjs.map +1 -1
- package/dist/helpers/interfaces.d.mts +16 -2
- package/dist/helpers/interfaces.mjs.map +1 -1
- package/dist/mock_assistant/mock-assistant.module.d.mts +4 -0
- package/dist/services/addon.service.mjs +2 -1
- package/dist/services/addon.service.mjs.map +1 -1
- package/dist/services/area.service.mjs +12 -12
- package/dist/services/area.service.mjs.map +1 -1
- package/dist/services/config.service.d.mts +2 -1
- package/dist/services/config.service.mjs +35 -5
- package/dist/services/config.service.mjs.map +1 -1
- package/dist/services/conversation.service.d.mts +1 -1
- package/dist/services/conversation.service.mjs +9 -1
- package/dist/services/conversation.service.mjs.map +1 -1
- package/dist/services/device.service.mjs +12 -19
- package/dist/services/device.service.mjs.map +1 -1
- package/dist/services/entity.service.mjs +12 -12
- package/dist/services/entity.service.mjs.map +1 -1
- package/dist/services/floor.service.mjs +12 -12
- package/dist/services/floor.service.mjs.map +1 -1
- package/dist/services/frontend.service.d.mts +3 -0
- package/dist/services/frontend.service.mjs +13 -0
- package/dist/services/frontend.service.mjs.map +1 -0
- package/dist/services/index.d.mts +2 -0
- package/dist/services/index.mjs +2 -0
- package/dist/services/index.mjs.map +1 -1
- package/dist/services/label.service.mjs +12 -12
- package/dist/services/label.service.mjs.map +1 -1
- package/dist/services/registry.service.mjs +4 -3
- package/dist/services/registry.service.mjs.map +1 -1
- package/dist/services/websocket-api.service.d.mts +1 -1
- package/dist/services/websocket-api.service.mjs +70 -6
- package/dist/services/websocket-api.service.mjs.map +1 -1
- package/dist/services/zone.service.mjs +12 -12
- package/dist/services/zone.service.mjs.map +1 -1
- package/dist/testing/addon.spec.mjs +4 -2
- package/dist/testing/addon.spec.mjs.map +1 -1
- package/dist/testing/config.spec.mjs +367 -0
- package/dist/testing/config.spec.mjs.map +1 -1
- package/dist/testing/conversation.spec.d.mts +1 -0
- package/dist/testing/conversation.spec.mjs +42 -0
- package/dist/testing/conversation.spec.mjs.map +1 -0
- package/dist/testing/fetch-api.spec.mjs +2 -5
- package/dist/testing/fetch-api.spec.mjs.map +1 -1
- package/dist/testing/frontend.spec.d.mts +1 -0
- package/dist/testing/frontend.spec.mjs +60 -0
- package/dist/testing/frontend.spec.mjs.map +1 -0
- package/dist/testing/websocket.spec.mjs +177 -0
- package/dist/testing/websocket.spec.mjs.map +1 -1
- package/dist/user.d.mts +9 -0
- package/package.json +1 -1
- package/src/dev/mappings.mts +44 -0
- package/src/dev/registry.mts +0 -1
- package/src/dev/services.mts +0 -1
- package/src/hass.module.mts +16 -0
- package/src/helpers/fetch/configuration.mts +11 -5
- package/src/helpers/frontend.mts +19 -0
- package/src/helpers/index.mts +1 -0
- package/src/helpers/interfaces.mts +20 -1
- package/src/services/addon.service.mts +2 -1
- package/src/services/area.service.mts +13 -13
- package/src/services/config.service.mts +53 -6
- package/src/services/conversation.service.mts +16 -2
- package/src/services/device.service.mts +13 -21
- package/src/services/entity.service.mts +13 -12
- package/src/services/floor.service.mts +13 -13
- package/src/services/frontend.service.mts +20 -0
- package/src/services/index.mts +2 -0
- package/src/services/label.service.mts +13 -13
- package/src/services/registry.service.mts +5 -4
- package/src/services/websocket-api.service.mts +86 -5
- package/src/services/zone.service.mts +13 -13
- package/src/testing/addon.spec.mts +4 -2
- package/src/testing/config.spec.mts +410 -0
- package/src/testing/conversation.spec.mts +48 -0
- package/src/testing/fetch-api.spec.mts +2 -5
- package/src/testing/frontend.spec.mts +66 -0
- package/src/testing/websocket.spec.mts +225 -0
- package/src/user.mts +18 -0
package/dist/dev/mappings.d.mts
CHANGED
|
@@ -86,5 +86,59 @@ declare module "../user.mts" {
|
|
|
86
86
|
_downstairs: "switch.kitchen_cabinets" | "switch.living_room_mood_lights";
|
|
87
87
|
_upstairs: "switch.bedroom_lamp";
|
|
88
88
|
}
|
|
89
|
+
interface HassThemeMapping {
|
|
90
|
+
"(DO NOT USE/MODIFY)=== LCARS variables": true;
|
|
91
|
+
"(DO NOT USE/MODIFY)=== Base customizations": true;
|
|
92
|
+
"(DO NOT USE/MODIFY)=== card-mod CSS": true;
|
|
93
|
+
"LCARS Default": true;
|
|
94
|
+
"LCARS Classic": true;
|
|
95
|
+
"LCARS Nemesis Blue": true;
|
|
96
|
+
"LCARS Lower Decks I": true;
|
|
97
|
+
"LCARS Lower Decks II": true;
|
|
98
|
+
"LCARS Romulus": true;
|
|
99
|
+
"LCARS Kronos": true;
|
|
100
|
+
"LCARS Cardassia": true;
|
|
101
|
+
"LCARS Zeldaar": true;
|
|
102
|
+
"LCARS Modern": true;
|
|
103
|
+
"LCARS Picard I": true;
|
|
104
|
+
"LCARS Picard II": true;
|
|
105
|
+
"LCARS Red Alert": true;
|
|
106
|
+
"LCARS TNG": true;
|
|
107
|
+
"LCARS TNGbuttons": true;
|
|
108
|
+
"LCARS Transporter": true;
|
|
109
|
+
"LCARS Navigation": true;
|
|
110
|
+
"LCARS 25C": true;
|
|
111
|
+
"LCARS 25C (Red Alert)": true;
|
|
112
|
+
"LCARS 25C (Yellow Alert)": true;
|
|
113
|
+
"LCARS 25C (Blue Alert)": true;
|
|
114
|
+
"LCARS Breen": true;
|
|
115
|
+
"Minimal Ninja": "light" | "dark";
|
|
116
|
+
}
|
|
117
|
+
interface HassConfigEntryMapping {
|
|
118
|
+
"01JJJ3NAS9JAW1SESXZRHG7YH7": {
|
|
119
|
+
title: "Sun";
|
|
120
|
+
domain: "sun";
|
|
121
|
+
};
|
|
122
|
+
"01JJJ3NAVSK3WCDRZQADJVMDRH": {
|
|
123
|
+
title: "Supervisor";
|
|
124
|
+
domain: "hassio";
|
|
125
|
+
};
|
|
126
|
+
"01JJJ3NAVSPAHW2THWYBHM1X8F": {
|
|
127
|
+
title: "Intel Corporate 0a2b (7C:2A:31:0C:B1:9B)";
|
|
128
|
+
domain: "bluetooth";
|
|
129
|
+
};
|
|
130
|
+
"01JJJ4TT048V3TMDZHN29D3X5D": {
|
|
131
|
+
title: "Shopping list";
|
|
132
|
+
domain: "shopping_list";
|
|
133
|
+
};
|
|
134
|
+
"01JJJ4TT0BD1GFQQSGN295AH7G": {
|
|
135
|
+
title: "Google Translate text-to-speech";
|
|
136
|
+
domain: "google_translate";
|
|
137
|
+
};
|
|
138
|
+
"01JJJ4TT1VM15JJQ1YXC6MJKRF": {
|
|
139
|
+
title: "Radio Browser";
|
|
140
|
+
domain: "radio_browser";
|
|
141
|
+
};
|
|
142
|
+
}
|
|
89
143
|
}
|
|
90
144
|
export {};
|
package/dist/dev/services.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"services.mjs","sourceRoot":"","sources":["../../src/dev/services.mts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,4DAA4D
|
|
1
|
+
{"version":3,"file":"services.mjs","sourceRoot":"","sources":["../../src/dev/services.mts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,4DAA4D"}
|
package/dist/hass.module.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AddonService, Area, Backup, CallProxy, Configure, Device, EntityManager, EventsService, FetchAPI, FetchInternals, Floor, HassDiagnosticsService, HassFeatureService, IDByExtension, Label, ReferenceService, Registry, WebsocketAPI, Zone } from "./services/index.mts";
|
|
1
|
+
import { AddonService, Area, Backup, CallProxy, Configure, ConversationService, Device, EntityManager, EventsService, FetchAPI, FetchInternals, Floor, FrontendService, HassDiagnosticsService, HassFeatureService, IDByExtension, Label, ReferenceService, Registry, WebsocketAPI, Zone } from "./services/index.mts";
|
|
2
2
|
export declare const LIB_HASS: import("@digital-alchemy/core").LibraryDefinition<{
|
|
3
3
|
addon: typeof AddonService;
|
|
4
4
|
/**
|
|
@@ -17,6 +17,10 @@ export declare const LIB_HASS: import("@digital-alchemy/core").LibraryDefinition
|
|
|
17
17
|
* internal tools
|
|
18
18
|
*/
|
|
19
19
|
configure: typeof Configure;
|
|
20
|
+
/**
|
|
21
|
+
* conversation agent interactions
|
|
22
|
+
*/
|
|
23
|
+
conversation: typeof ConversationService;
|
|
20
24
|
/**
|
|
21
25
|
* device interactions
|
|
22
26
|
*/
|
|
@@ -45,6 +49,10 @@ export declare const LIB_HASS: import("@digital-alchemy/core").LibraryDefinition
|
|
|
45
49
|
* floors, like groups of areas
|
|
46
50
|
*/
|
|
47
51
|
floor: typeof Floor;
|
|
52
|
+
/**
|
|
53
|
+
* frontend interactions
|
|
54
|
+
*/
|
|
55
|
+
frontend: typeof FrontendService;
|
|
48
56
|
/**
|
|
49
57
|
* search for entity ids in a type safe way
|
|
50
58
|
*/
|
|
@@ -181,6 +189,9 @@ export declare const LIB_HASS: import("@digital-alchemy/core").LibraryDefinition
|
|
|
181
189
|
};
|
|
182
190
|
}>;
|
|
183
191
|
declare module "@digital-alchemy/core" {
|
|
192
|
+
interface AsyncLogData {
|
|
193
|
+
hassOnConnect?: boolean;
|
|
194
|
+
}
|
|
184
195
|
interface LoadedModules {
|
|
185
196
|
/**
|
|
186
197
|
* tools for interacting with home assistant
|
package/dist/hass.module.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { CreateLibrary } from "@digital-alchemy/core";
|
|
2
|
-
import { AddonService, Area, Backup, CallProxy, Configure, Device, EntityManager, EventsService, FetchAPI, FetchInternals, Floor, HassDiagnosticsService, HassFeatureService, IDByExtension, Label, ReferenceService, Registry, WebsocketAPI, Zone, } from "./services/index.mjs";
|
|
2
|
+
import { AddonService, Area, Backup, CallProxy, Configure, ConversationService, Device, EntityManager, EventsService, FetchAPI, FetchInternals, Floor, FrontendService, HassDiagnosticsService, HassFeatureService, IDByExtension, Label, ReferenceService, Registry, WebsocketAPI, Zone, } from "./services/index.mjs";
|
|
3
3
|
export const LIB_HASS = CreateLibrary({
|
|
4
4
|
configuration: {
|
|
5
5
|
/**
|
|
@@ -132,6 +132,10 @@ export const LIB_HASS = CreateLibrary({
|
|
|
132
132
|
* internal tools
|
|
133
133
|
*/
|
|
134
134
|
configure: Configure,
|
|
135
|
+
/**
|
|
136
|
+
* conversation agent interactions
|
|
137
|
+
*/
|
|
138
|
+
conversation: ConversationService,
|
|
135
139
|
/**
|
|
136
140
|
* device interactions
|
|
137
141
|
*/
|
|
@@ -160,6 +164,10 @@ export const LIB_HASS = CreateLibrary({
|
|
|
160
164
|
* floors, like groups of areas
|
|
161
165
|
*/
|
|
162
166
|
floor: Floor,
|
|
167
|
+
/**
|
|
168
|
+
* frontend interactions
|
|
169
|
+
*/
|
|
170
|
+
frontend: FrontendService,
|
|
163
171
|
/**
|
|
164
172
|
* search for entity ids in a type safe way
|
|
165
173
|
*/
|
package/dist/hass.module.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hass.module.mjs","sourceRoot":"","sources":["../src/hass.module.mts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"hass.module.mjs","sourceRoot":"","sources":["../src/hass.module.mts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { TAreaId, TFloorId, TLabelId } from "../../user.mts";
|
|
1
|
+
import type { HassConfigEntryMapping, TAreaId, TConfigEntryId, TFloorId, TLabelId } from "../../user.mts";
|
|
2
2
|
export interface HassUnitSystem {
|
|
3
3
|
length: "mi";
|
|
4
4
|
mass: "lb";
|
|
@@ -44,10 +44,10 @@ export type AreaCreate = {
|
|
|
44
44
|
name: string;
|
|
45
45
|
picture?: string;
|
|
46
46
|
};
|
|
47
|
-
export interface ConfigEntry {
|
|
48
|
-
entry_id:
|
|
49
|
-
domain:
|
|
50
|
-
title:
|
|
47
|
+
export interface ConfigEntry<ENTRY_ID extends TConfigEntryId = TConfigEntryId> {
|
|
48
|
+
entry_id: ENTRY_ID;
|
|
49
|
+
domain: HassConfigEntryMapping[ENTRY_ID]["domain"];
|
|
50
|
+
title: HassConfigEntryMapping[ENTRY_ID]["title"];
|
|
51
51
|
source: string;
|
|
52
52
|
state: State;
|
|
53
53
|
supports_options: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configuration.mjs","sourceRoot":"","sources":["../../../src/helpers/fetch/configuration.mts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"configuration.mjs","sourceRoot":"","sources":["../../../src/helpers/fetch/configuration.mts"],"names":[],"mappings":"AA4EA,MAAM,CAAN,IAAY,KAIX;AAJD,WAAY,KAAK;IACf,0BAAiB,CAAA;IACjB,iCAAwB,CAAA;IACxB,mCAA0B,CAAA;AAC5B,CAAC,EAJW,KAAK,KAAL,KAAK,QAIhB"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export interface ThemeDefinition {
|
|
2
|
+
"accent-color"?: string;
|
|
3
|
+
"app-header-background-color"?: string;
|
|
4
|
+
"app-header-edit-background-color"?: string;
|
|
5
|
+
"app-header-text-color"?: string;
|
|
6
|
+
"card-mod-root-yaml"?: string;
|
|
7
|
+
"divider-color"?: string;
|
|
8
|
+
"ha-card-border-radius"?: string;
|
|
9
|
+
"ha-card-border-width"?: string;
|
|
10
|
+
"paper-listbox-background-color"?: string;
|
|
11
|
+
"primary-color"?: string;
|
|
12
|
+
"sidebar-background-color"?: string;
|
|
13
|
+
"sidebar-menu-button-background-color"?: string;
|
|
14
|
+
modes?: {
|
|
15
|
+
light?: Record<string, unknown>;
|
|
16
|
+
dark?: Record<string, unknown>;
|
|
17
|
+
};
|
|
18
|
+
[key: string]: unknown;
|
|
19
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"frontend.mjs","sourceRoot":"","sources":["../../src/helpers/frontend.mts"],"names":[],"mappings":""}
|
package/dist/helpers/index.d.mts
CHANGED
|
@@ -7,6 +7,7 @@ export * from "./entity-state.mts";
|
|
|
7
7
|
export * from "./features.mts";
|
|
8
8
|
export * from "./fetch.mts";
|
|
9
9
|
export * from "./fetch/index.mts";
|
|
10
|
+
export * from "./frontend.mts";
|
|
10
11
|
export * from "./id-by.mts";
|
|
11
12
|
export * from "./interfaces.mts";
|
|
12
13
|
export * from "./languages.mts";
|
package/dist/helpers/index.mjs
CHANGED
|
@@ -7,6 +7,7 @@ export * from "./entity-state.mjs";
|
|
|
7
7
|
export * from "./features.mjs";
|
|
8
8
|
export * from "./fetch.mjs";
|
|
9
9
|
export * from "./fetch/index.mjs";
|
|
10
|
+
export * from "./frontend.mjs";
|
|
10
11
|
export * from "./id-by.mjs";
|
|
11
12
|
export * from "./interfaces.mjs";
|
|
12
13
|
export * from "./languages.mjs";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../../src/helpers/index.mts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,0BAA0B,CAAC;AACzC,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../../src/helpers/index.mts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,0BAA0B,CAAC;AACzC,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC"}
|
|
@@ -2,18 +2,23 @@ import type { RemoveCallback, TBlackHole } from "@digital-alchemy/core";
|
|
|
2
2
|
import type EventEmitter from "events";
|
|
3
3
|
import type { EmptyObject } from "type-fest";
|
|
4
4
|
import type WS from "ws";
|
|
5
|
-
import type { AddonDetails } from "../index.mts";
|
|
6
|
-
import type { ALL_DOMAINS, ANY_ENTITY, HassUniqueIdMapping, iCallService, PICK_ENTITY, PICK_FROM_AREA, PICK_FROM_DEVICE, PICK_FROM_FLOOR, PICK_FROM_LABEL, PICK_FROM_PLATFORM, TAreaId, TDeviceId, TFloorId, TLabelId, TPlatformId, TRawDomains, TRawEntityIds, TUniqueId } from "../user.mts";
|
|
5
|
+
import type { AddonDetails, ThemeDefinition } from "../index.mts";
|
|
6
|
+
import type { ALL_DOMAINS, ANY_ENTITY, HassThemeMapping, HassUniqueIdMapping, iCallService, PICK_ENTITY, PICK_FROM_AREA, PICK_FROM_DEVICE, PICK_FROM_FLOOR, PICK_FROM_LABEL, PICK_FROM_PLATFORM, TAreaId, TDeviceId, TFloorId, TLabelId, TPlatformId, TRawDomains, TRawEntityIds, TUniqueId } from "../user.mts";
|
|
7
|
+
import type { FindEntryIdByTitle, TConfigEntryId, TConfigEntryTitle } from "../user.mts";
|
|
7
8
|
import type { BackupResponse, HomeAssistantBackup } from "./backup.mts";
|
|
8
9
|
import type { DeviceDetails } from "./device.mts";
|
|
9
10
|
import type { ByIdProxy } from "./entity-state.mts";
|
|
10
11
|
import type { AreaCreate, AreaDetails, ConfigEntry, HassConfig, HassServiceDTO } from "./index.mts";
|
|
12
|
+
import type { SupportedLanguages } from "./languages.mts";
|
|
11
13
|
import type { EditAliasOptions, EditLabelOptions, EntityRegistryItem, FloorCreate, FloorDetails, LabelDefinition, LabelOptions, ManifestItem, ToggleExpose, UpdateCoreOptions, ZoneDetails, ZoneOptions } from "./registry.mts";
|
|
12
14
|
import type { ALL_SERVICE_DOMAINS, ENTITY_STATE } from "./utility.mts";
|
|
13
15
|
import type { EntityHistoryDTO, EntityHistoryResult, OnHassEventOptions, SocketSubscribeOptions } from "./websocket.mts";
|
|
14
16
|
export type HassAddonService = {
|
|
15
17
|
list: () => Promise<AddonDetails[]>;
|
|
16
18
|
};
|
|
19
|
+
export type HassFrontendService = {
|
|
20
|
+
getThemes: () => Promise<Record<keyof HassThemeMapping, ThemeDefinition>>;
|
|
21
|
+
};
|
|
17
22
|
export type HassAreaService = {
|
|
18
23
|
apply: (area: TAreaId, entities: ANY_ENTITY[]) => Promise<{
|
|
19
24
|
updated: ANY_ENTITY[];
|
|
@@ -44,6 +49,9 @@ export type HassBackupService = {
|
|
|
44
49
|
remove: (slug: string) => Promise<void>;
|
|
45
50
|
};
|
|
46
51
|
export type HassConfigService = {
|
|
52
|
+
current: () => ConfigEntry<TConfigEntryId>[];
|
|
53
|
+
get: () => Promise<ConfigEntry<TConfigEntryId>[]>;
|
|
54
|
+
byTitle: <TITLE extends TConfigEntryTitle>(title: TITLE) => ConfigEntry<FindEntryIdByTitle<TITLE>> | undefined;
|
|
47
55
|
getServices: () => HassServiceDTO[];
|
|
48
56
|
isService: <DOMAIN extends ALL_SERVICE_DOMAINS>(domain: DOMAIN, service: string) => service is Extract<keyof iCallService[DOMAIN], string>;
|
|
49
57
|
loadServiceList: (recursion?: number) => Promise<void>;
|
|
@@ -142,8 +150,14 @@ export declare enum WebsocketConnectionState {
|
|
|
142
150
|
invalid = 5
|
|
143
151
|
}
|
|
144
152
|
export type ConnectionState = `${keyof typeof WebsocketConnectionState}`;
|
|
153
|
+
export type ConversationAgent = {
|
|
154
|
+
id: string;
|
|
155
|
+
name: string;
|
|
156
|
+
supported_languages: SupportedLanguages[];
|
|
157
|
+
};
|
|
145
158
|
export type HassConversationService = {
|
|
146
159
|
addAlias: (options: EditAliasOptions) => Promise<void>;
|
|
160
|
+
listAgents: () => Promise<ConversationAgent[]>;
|
|
147
161
|
removeAlias: (options: EditAliasOptions) => Promise<void>;
|
|
148
162
|
setConversational: (options: ToggleExpose) => Promise<void>;
|
|
149
163
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interfaces.mjs","sourceRoot":"","sources":["../../src/helpers/interfaces.mts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"interfaces.mjs","sourceRoot":"","sources":["../../src/helpers/interfaces.mts"],"names":[],"mappings":"AAoNA,wDAAwD;AACxD,MAAM,CAAN,IAAY,wBAMX;AAND,WAAY,wBAAwB;IAClC,6EAAW,CAAA;IACX,mFAAc,CAAA;IACd,iFAAa,CAAA;IACb,6EAAW,CAAA;IACX,6EAAW,CAAA;AACb,CAAC,EANW,wBAAwB,KAAxB,wBAAwB,QAMnC"}
|
|
@@ -45,6 +45,7 @@ export declare const createTestRunner: () => import("@digital-alchemy/core").iTe
|
|
|
45
45
|
backup: typeof import("../index.mts").Backup;
|
|
46
46
|
call: typeof import("../index.mts").CallProxy;
|
|
47
47
|
configure: typeof import("../index.mts").Configure;
|
|
48
|
+
conversation: typeof import("../index.mts").ConversationService;
|
|
48
49
|
device: typeof import("../index.mts").Device;
|
|
49
50
|
diagnostics: typeof import("../index.mts").HassDiagnosticsService;
|
|
50
51
|
entity: typeof import("../index.mts").EntityManager;
|
|
@@ -52,6 +53,7 @@ export declare const createTestRunner: () => import("@digital-alchemy/core").iTe
|
|
|
52
53
|
feature: typeof import("../index.mts").HassFeatureService;
|
|
53
54
|
fetch: typeof import("../index.mts").FetchAPI;
|
|
54
55
|
floor: typeof import("../index.mts").Floor;
|
|
56
|
+
frontend: typeof import("../index.mts").FrontendService;
|
|
55
57
|
idBy: typeof import("../index.mts").IDByExtension;
|
|
56
58
|
internals: typeof import("../index.mts").FetchInternals;
|
|
57
59
|
label: typeof import("../index.mts").Label;
|
|
@@ -122,6 +124,7 @@ export declare const hassTestRunner: import("@digital-alchemy/core").iTestRunner
|
|
|
122
124
|
backup: typeof import("../index.mts").Backup;
|
|
123
125
|
call: typeof import("../index.mts").CallProxy;
|
|
124
126
|
configure: typeof import("../index.mts").Configure;
|
|
127
|
+
conversation: typeof import("../index.mts").ConversationService;
|
|
125
128
|
device: typeof import("../index.mts").Device;
|
|
126
129
|
diagnostics: typeof import("../index.mts").HassDiagnosticsService;
|
|
127
130
|
entity: typeof import("../index.mts").EntityManager;
|
|
@@ -129,6 +132,7 @@ export declare const hassTestRunner: import("@digital-alchemy/core").iTestRunner
|
|
|
129
132
|
feature: typeof import("../index.mts").HassFeatureService;
|
|
130
133
|
fetch: typeof import("../index.mts").FetchAPI;
|
|
131
134
|
floor: typeof import("../index.mts").Floor;
|
|
135
|
+
frontend: typeof import("../index.mts").FrontendService;
|
|
132
136
|
idBy: typeof import("../index.mts").IDByExtension;
|
|
133
137
|
internals: typeof import("../index.mts").FetchInternals;
|
|
134
138
|
label: typeof import("../index.mts").Label;
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
export function AddonService({ hass, logger }) {
|
|
2
2
|
async function list() {
|
|
3
3
|
logger.trace({ name: "list" }, "fetching addon list");
|
|
4
|
-
|
|
4
|
+
const { addons } = await hass.socket.sendMessage({
|
|
5
5
|
endpoint: "/addons",
|
|
6
6
|
method: "get",
|
|
7
7
|
type: "supervisor/api",
|
|
8
8
|
});
|
|
9
|
+
return addons;
|
|
9
10
|
}
|
|
10
11
|
return {
|
|
11
12
|
list,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"addon.service.mjs","sourceRoot":"","sources":["../../src/services/addon.service.mts"],"names":[],"mappings":"AAIA,MAAM,UAAU,YAAY,CAAC,EAAE,IAAI,EAAE,MAAM,EAAkB;IAC3D,KAAK,UAAU,IAAI;QACjB,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,qBAAqB,CAAC,CAAC;QACtD,
|
|
1
|
+
{"version":3,"file":"addon.service.mjs","sourceRoot":"","sources":["../../src/services/addon.service.mts"],"names":[],"mappings":"AAIA,MAAM,UAAU,YAAY,CAAC,EAAE,IAAI,EAAE,MAAM,EAAkB;IAC3D,KAAK,UAAU,IAAI;QACjB,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,qBAAqB,CAAC,CAAC;QACtD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAA6B;YAC3E,QAAQ,EAAE,SAAS;YACnB,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,gBAAgB;SACvB,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,OAAO;QACL,IAAI;KACL,CAAC;AACJ,CAAC"}
|
|
@@ -1,6 +1,18 @@
|
|
|
1
1
|
import { debounce, eachSeries, InternalError } from "@digital-alchemy/core";
|
|
2
2
|
import { AREA_REGISTRY_UPDATED, EARLY_ON_READY, ENTITY_REGISTRY_UPDATED, perf } from "../index.mjs";
|
|
3
3
|
export function Area({ hass, context, config, logger, event, lifecycle, }) {
|
|
4
|
+
void hass.socket.subscribe({
|
|
5
|
+
context,
|
|
6
|
+
event_type: "area_registry_updated",
|
|
7
|
+
async exec() {
|
|
8
|
+
const ms = perf();
|
|
9
|
+
await debounce(AREA_REGISTRY_UPDATED, config.hass.EVENT_DEBOUNCE_MS);
|
|
10
|
+
hass.area.current = await hass.area.list();
|
|
11
|
+
logger.debug(`area registry updated`);
|
|
12
|
+
event.emit(AREA_REGISTRY_UPDATED);
|
|
13
|
+
hass.diagnostics.area?.registry_update.publish({ ms: ms() });
|
|
14
|
+
},
|
|
15
|
+
});
|
|
4
16
|
hass.socket.onConnect(async () => {
|
|
5
17
|
let loading = new Promise(async (done) => {
|
|
6
18
|
hass.area.current = await hass.area.list();
|
|
@@ -8,18 +20,6 @@ export function Area({ hass, context, config, logger, event, lifecycle, }) {
|
|
|
8
20
|
done();
|
|
9
21
|
});
|
|
10
22
|
lifecycle.onReady(async () => loading && (await loading), EARLY_ON_READY);
|
|
11
|
-
hass.socket.subscribe({
|
|
12
|
-
context,
|
|
13
|
-
event_type: "area_registry_updated",
|
|
14
|
-
async exec() {
|
|
15
|
-
const ms = perf();
|
|
16
|
-
await debounce(AREA_REGISTRY_UPDATED, config.hass.EVENT_DEBOUNCE_MS);
|
|
17
|
-
hass.area.current = await hass.area.list();
|
|
18
|
-
logger.debug(`area registry updated`);
|
|
19
|
-
event.emit(AREA_REGISTRY_UPDATED);
|
|
20
|
-
hass.diagnostics.area?.registry_update.publish({ ms: ms() });
|
|
21
|
-
},
|
|
22
|
-
});
|
|
23
23
|
});
|
|
24
24
|
async function list() {
|
|
25
25
|
return await hass.socket.sendMessage({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"area.service.mjs","sourceRoot":"","sources":["../../src/services/area.service.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAG5E,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,uBAAuB,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAGpG,MAAM,UAAU,IAAI,CAAC,EACnB,IAAI,EACJ,OAAO,EACP,MAAM,EACN,MAAM,EACN,KAAK,EACL,SAAS,GACM;IACf,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"area.service.mjs","sourceRoot":"","sources":["../../src/services/area.service.mts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { TServiceParams } from "@digital-alchemy/core";
|
|
2
2
|
import type { HassConfigService } from "../helpers/index.mts";
|
|
3
3
|
export declare const SERVICE_LIST_UPDATED = "SERVICE_LIST_UPDATED";
|
|
4
|
-
export declare
|
|
4
|
+
export declare const CONFIG_ENTRIES_UPDATED = "CONFIG_ENTRIES_UPDATED";
|
|
5
|
+
export declare function Configure({ logger, lifecycle, event, hass, config, internal, context, }: TServiceParams): HassConfigService;
|
|
@@ -1,13 +1,15 @@
|
|
|
1
|
-
import { asyncNoop, INCREMENT, SECOND, sleep, START } from "@digital-alchemy/core";
|
|
1
|
+
import { asyncNoop, debounce, INCREMENT, SECOND, sleep, START } from "@digital-alchemy/core";
|
|
2
2
|
import { env } from "process";
|
|
3
3
|
import { PostConfigPriorities } from "../helpers/index.mjs";
|
|
4
4
|
const MAX_ATTEMPTS = 50;
|
|
5
5
|
const FAILED = 1;
|
|
6
6
|
export const SERVICE_LIST_UPDATED = "SERVICE_LIST_UPDATED";
|
|
7
|
-
export
|
|
7
|
+
export const CONFIG_ENTRIES_UPDATED = "CONFIG_ENTRIES_UPDATED";
|
|
8
|
+
export function Configure({ logger, lifecycle, event, hass, config, internal, context, }) {
|
|
8
9
|
const { is } = internal.utils;
|
|
9
10
|
let checkedServices = new Map();
|
|
10
11
|
let services;
|
|
12
|
+
let configEntries = [];
|
|
11
13
|
lifecycle.onPreInit(() => {
|
|
12
14
|
// HASSIO_TOKEN provided by home assistant to addons
|
|
13
15
|
// SUPERVISOR_TOKEN used as alias elsewhere
|
|
@@ -57,6 +59,7 @@ export function Configure({ logger, lifecycle, event, hass, config, internal, })
|
|
|
57
59
|
if (recursion > MAX_ATTEMPTS) {
|
|
58
60
|
logger.fatal({ name: loadServiceList }, `failed to load service list from Home Assistant`);
|
|
59
61
|
process.exit(FAILED);
|
|
62
|
+
return;
|
|
60
63
|
}
|
|
61
64
|
logger.warn({ name: loadServiceList }, "failed to retrieve {service} list. Retrying {%s}/[%s]", recursion, MAX_ATTEMPTS);
|
|
62
65
|
hass.diagnostics.config?.load_services_failure.publish({ recursion });
|
|
@@ -69,14 +72,41 @@ export function Configure({ logger, lifecycle, event, hass, config, internal, })
|
|
|
69
72
|
hass.diagnostics.config?.service_list_updated.publish({ recursion });
|
|
70
73
|
}
|
|
71
74
|
function isService(domain, service) {
|
|
72
|
-
|
|
73
|
-
|
|
75
|
+
const key = [domain, service].join(".");
|
|
76
|
+
if (checkedServices.has(key)) {
|
|
77
|
+
return checkedServices.get(key);
|
|
74
78
|
}
|
|
75
79
|
const exists = services.some(i => i.domain === domain && !is.undefined(i.services[service]));
|
|
76
|
-
checkedServices.set(
|
|
80
|
+
checkedServices.set(key, exists);
|
|
77
81
|
return exists;
|
|
78
82
|
}
|
|
83
|
+
function byTitle(title) {
|
|
84
|
+
logger.trace({ name: byTitle, title }, `looking up config entry by title`);
|
|
85
|
+
const entry = configEntries.find(e => e.title === title);
|
|
86
|
+
return entry;
|
|
87
|
+
}
|
|
88
|
+
async function get() {
|
|
89
|
+
logger.trace({ name: get }, `fetching config entries`);
|
|
90
|
+
const entries = await hass.socket.sendMessage({
|
|
91
|
+
type: "config_entries/get",
|
|
92
|
+
});
|
|
93
|
+
configEntries = entries;
|
|
94
|
+
event.emit(CONFIG_ENTRIES_UPDATED, entries);
|
|
95
|
+
return entries;
|
|
96
|
+
}
|
|
97
|
+
void hass.socket.subscribe({
|
|
98
|
+
context,
|
|
99
|
+
event_type: "config_entry_updated",
|
|
100
|
+
async exec() {
|
|
101
|
+
await debounce(CONFIG_ENTRIES_UPDATED, config.hass.EVENT_DEBOUNCE_MS);
|
|
102
|
+
await get();
|
|
103
|
+
},
|
|
104
|
+
});
|
|
105
|
+
hass.socket.onConnect(async () => await get());
|
|
79
106
|
return {
|
|
107
|
+
byTitle,
|
|
108
|
+
current: () => configEntries,
|
|
109
|
+
get,
|
|
80
110
|
getServices: () => services,
|
|
81
111
|
isService,
|
|
82
112
|
loadServiceList,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.service.mjs","sourceRoot":"","sources":["../../src/services/config.service.mts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"config.service.mjs","sourceRoot":"","sources":["../../src/services/config.service.mts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { TServiceParams } from "@digital-alchemy/core";
|
|
2
2
|
import type { HassConversationService } from "../helpers/index.mts";
|
|
3
|
-
export declare function
|
|
3
|
+
export declare function ConversationService({ hass, logger }: TServiceParams): HassConversationService;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { UPDATE_REGISTRY } from "../helpers/index.mjs";
|
|
2
|
-
export function
|
|
2
|
+
export function ConversationService({ hass, logger }) {
|
|
3
3
|
async function addAlias({ entity, alias }) {
|
|
4
4
|
const current = await hass.entity.registry.get(entity);
|
|
5
5
|
if (current?.aliases?.includes(alias)) {
|
|
@@ -19,6 +19,13 @@ export function Conversation({ hass, logger }) {
|
|
|
19
19
|
}
|
|
20
20
|
await hass.socket.sendMessage({ entity_id: entity, type: UPDATE_REGISTRY });
|
|
21
21
|
}
|
|
22
|
+
async function listAgents() {
|
|
23
|
+
logger.trace({ name: "listAgents" }, "fetching conversation agents");
|
|
24
|
+
const result = await hass.socket.sendMessage({
|
|
25
|
+
type: "conversation/agent/list",
|
|
26
|
+
});
|
|
27
|
+
return result.agents;
|
|
28
|
+
}
|
|
22
29
|
async function setConversational({ entity_ids, assistants, should_expose }) {
|
|
23
30
|
await hass.socket.sendMessage({
|
|
24
31
|
assistants: [assistants].flat(),
|
|
@@ -29,6 +36,7 @@ export function Conversation({ hass, logger }) {
|
|
|
29
36
|
}
|
|
30
37
|
return {
|
|
31
38
|
addAlias,
|
|
39
|
+
listAgents,
|
|
32
40
|
removeAlias,
|
|
33
41
|
setConversational,
|
|
34
42
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversation.service.mjs","sourceRoot":"","sources":["../../src/services/conversation.service.mts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"conversation.service.mjs","sourceRoot":"","sources":["../../src/services/conversation.service.mts"],"names":[],"mappings":"AAQA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,MAAM,UAAU,mBAAmB,CAAC,EAAE,IAAI,EAAE,MAAM,EAAkB;IAClE,KAAK,UAAU,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,EAAoB;QACzD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACvD,IAAI,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACtC,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,wBAAwB,EAAE,KAAK,CAAC,CAAC;YAChE,OAAO;QACT,CAAC;QACD,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;YAC5B,SAAS,EAAE,MAAM;YACjB,IAAI,EAAE,+BAA+B;SACtC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,UAAU,WAAW,CAAC,EAAE,MAAM,EAAE,KAAK,EAAoB;QAC5D,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACvD,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACvC,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,0BAA0B,EAAE,KAAK,CAAC,CAAC;YAClE,OAAO;QACT,CAAC;QACD,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,CAAC;IAC9E,CAAC;IAED,KAAK,UAAU,UAAU;QACvB,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,8BAA8B,CAAC,CAAC;QACrE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAkC;YAC5E,IAAI,EAAE,yBAAyB;SAChC,CAAC,CAAC;QACH,OAAO,MAAM,CAAC,MAAM,CAAC;IACvB,CAAC;IAED,KAAK,UAAU,iBAAiB,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAgB;QACtF,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;YAC5B,UAAU,EAAE,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE;YAC/B,UAAU,EAAE,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE;YAC/B,aAAa;YACb,IAAI,EAAE,eAAe;SACtB,CAAC,CAAC;IACL,CAAC;IAED,OAAO;QACL,QAAQ;QACR,UAAU;QACV,WAAW;QACX,iBAAiB;KAClB,CAAC;AACJ,CAAC"}
|
|
@@ -1,6 +1,18 @@
|
|
|
1
1
|
import { debounce } from "@digital-alchemy/core";
|
|
2
2
|
import { DEVICE_REGISTRY_UPDATED, EARLY_ON_READY, perf } from "../helpers/index.mjs";
|
|
3
3
|
export function Device({ hass, config, context, logger, lifecycle, event, }) {
|
|
4
|
+
void hass.socket.subscribe({
|
|
5
|
+
context,
|
|
6
|
+
event_type: "device_registry_updated",
|
|
7
|
+
async exec() {
|
|
8
|
+
const ms = perf();
|
|
9
|
+
await debounce(DEVICE_REGISTRY_UPDATED, config.hass.EVENT_DEBOUNCE_MS);
|
|
10
|
+
hass.device.current = await hass.device.list();
|
|
11
|
+
logger.debug(`device registry updated`);
|
|
12
|
+
event.emit(DEVICE_REGISTRY_UPDATED);
|
|
13
|
+
hass.diagnostics.device?.registry_update.publish({ ms: ms() });
|
|
14
|
+
},
|
|
15
|
+
});
|
|
4
16
|
hass.socket.onConnect(async () => {
|
|
5
17
|
let loading = new Promise(async (done) => {
|
|
6
18
|
hass.device.current = await hass.device.list();
|
|
@@ -8,26 +20,7 @@ export function Device({ hass, config, context, logger, lifecycle, event, }) {
|
|
|
8
20
|
done();
|
|
9
21
|
});
|
|
10
22
|
lifecycle.onReady(async () => loading && (await loading), EARLY_ON_READY);
|
|
11
|
-
await subscribeUpdates();
|
|
12
|
-
hass.socket.subscribe({
|
|
13
|
-
context,
|
|
14
|
-
event_type: "device_registry_updated",
|
|
15
|
-
async exec() {
|
|
16
|
-
const ms = perf();
|
|
17
|
-
await debounce(DEVICE_REGISTRY_UPDATED, config.hass.EVENT_DEBOUNCE_MS);
|
|
18
|
-
hass.device.current = await hass.device.list();
|
|
19
|
-
logger.debug(`device registry updated`);
|
|
20
|
-
event.emit(DEVICE_REGISTRY_UPDATED);
|
|
21
|
-
hass.diagnostics.device?.registry_update.publish({ ms: ms() });
|
|
22
|
-
},
|
|
23
|
-
});
|
|
24
23
|
});
|
|
25
|
-
async function subscribeUpdates() {
|
|
26
|
-
await hass.socket.sendMessage({
|
|
27
|
-
event_type: "device_registry_updated",
|
|
28
|
-
type: "subscribe_events",
|
|
29
|
-
});
|
|
30
|
-
}
|
|
31
24
|
async function list() {
|
|
32
25
|
return await hass.socket.sendMessage({
|
|
33
26
|
type: "config/device_registry/list",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"device.service.mjs","sourceRoot":"","sources":["../../src/services/device.service.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAGjD,OAAO,EAAE,uBAAuB,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAErF,MAAM,UAAU,MAAM,CAAC,EACrB,IAAI,EACJ,MAAM,EACN,OAAO,EACP,MAAM,EACN,SAAS,EACT,KAAK,GACU;IACf,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"device.service.mjs","sourceRoot":"","sources":["../../src/services/device.service.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAGjD,OAAO,EAAE,uBAAuB,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAErF,MAAM,UAAU,MAAM,CAAC,EACrB,IAAI,EACJ,MAAM,EACN,OAAO,EACP,MAAM,EACN,SAAS,EACT,KAAK,GACU;IACf,KAAK,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;QACzB,OAAO;QACP,UAAU,EAAE,yBAAyB;QACrC,KAAK,CAAC,IAAI;YACR,MAAM,EAAE,GAAG,IAAI,EAAE,CAAC;YAClB,MAAM,QAAQ,CAAC,uBAAuB,EAAE,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YACvE,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YAC/C,MAAM,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;YACxC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;YACpC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,eAAe,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QACjE,CAAC;KACF,CAAC,CAAC;IAEH,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE;QAC/B,IAAI,OAAO,GAAG,IAAI,OAAO,CAAO,KAAK,EAAC,IAAI,EAAC,EAAE;YAC3C,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YAC/C,OAAO,GAAG,SAAS,CAAC;YACpB,IAAI,EAAE,CAAC;QACT,CAAC,CAAC,CAAC;QACH,SAAS,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,OAAO,IAAI,CAAC,MAAM,OAAO,CAAC,EAAE,cAAc,CAAC,CAAC;IAC5E,CAAC,CAAC,CAAC;IAEH,KAAK,UAAU,IAAI;QACjB,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAkB;YACpD,IAAI,EAAE,6BAA6B;SACpC,CAAC,CAAC;IACL,CAAC;IAED,OAAO;QACL,OAAO,EAAE,EAAqB;QAC9B,IAAI;KACL,CAAC;AACJ,CAAC"}
|