@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.
Files changed (92) hide show
  1. package/dist/dev/mappings.d.mts +54 -0
  2. package/dist/dev/services.mjs +0 -1
  3. package/dist/dev/services.mjs.map +1 -1
  4. package/dist/hass.module.d.mts +12 -1
  5. package/dist/hass.module.mjs +9 -1
  6. package/dist/hass.module.mjs.map +1 -1
  7. package/dist/helpers/fetch/configuration.d.mts +5 -5
  8. package/dist/helpers/fetch/configuration.mjs.map +1 -1
  9. package/dist/helpers/frontend.d.mts +19 -0
  10. package/dist/helpers/frontend.mjs +2 -0
  11. package/dist/helpers/frontend.mjs.map +1 -0
  12. package/dist/helpers/index.d.mts +1 -0
  13. package/dist/helpers/index.mjs +1 -0
  14. package/dist/helpers/index.mjs.map +1 -1
  15. package/dist/helpers/interfaces.d.mts +16 -2
  16. package/dist/helpers/interfaces.mjs.map +1 -1
  17. package/dist/mock_assistant/mock-assistant.module.d.mts +4 -0
  18. package/dist/services/addon.service.mjs +2 -1
  19. package/dist/services/addon.service.mjs.map +1 -1
  20. package/dist/services/area.service.mjs +12 -12
  21. package/dist/services/area.service.mjs.map +1 -1
  22. package/dist/services/config.service.d.mts +2 -1
  23. package/dist/services/config.service.mjs +35 -5
  24. package/dist/services/config.service.mjs.map +1 -1
  25. package/dist/services/conversation.service.d.mts +1 -1
  26. package/dist/services/conversation.service.mjs +9 -1
  27. package/dist/services/conversation.service.mjs.map +1 -1
  28. package/dist/services/device.service.mjs +12 -19
  29. package/dist/services/device.service.mjs.map +1 -1
  30. package/dist/services/entity.service.mjs +12 -12
  31. package/dist/services/entity.service.mjs.map +1 -1
  32. package/dist/services/floor.service.mjs +12 -12
  33. package/dist/services/floor.service.mjs.map +1 -1
  34. package/dist/services/frontend.service.d.mts +3 -0
  35. package/dist/services/frontend.service.mjs +13 -0
  36. package/dist/services/frontend.service.mjs.map +1 -0
  37. package/dist/services/index.d.mts +2 -0
  38. package/dist/services/index.mjs +2 -0
  39. package/dist/services/index.mjs.map +1 -1
  40. package/dist/services/label.service.mjs +12 -12
  41. package/dist/services/label.service.mjs.map +1 -1
  42. package/dist/services/registry.service.mjs +4 -3
  43. package/dist/services/registry.service.mjs.map +1 -1
  44. package/dist/services/websocket-api.service.d.mts +1 -1
  45. package/dist/services/websocket-api.service.mjs +70 -6
  46. package/dist/services/websocket-api.service.mjs.map +1 -1
  47. package/dist/services/zone.service.mjs +12 -12
  48. package/dist/services/zone.service.mjs.map +1 -1
  49. package/dist/testing/addon.spec.mjs +4 -2
  50. package/dist/testing/addon.spec.mjs.map +1 -1
  51. package/dist/testing/config.spec.mjs +367 -0
  52. package/dist/testing/config.spec.mjs.map +1 -1
  53. package/dist/testing/conversation.spec.d.mts +1 -0
  54. package/dist/testing/conversation.spec.mjs +42 -0
  55. package/dist/testing/conversation.spec.mjs.map +1 -0
  56. package/dist/testing/fetch-api.spec.mjs +2 -5
  57. package/dist/testing/fetch-api.spec.mjs.map +1 -1
  58. package/dist/testing/frontend.spec.d.mts +1 -0
  59. package/dist/testing/frontend.spec.mjs +60 -0
  60. package/dist/testing/frontend.spec.mjs.map +1 -0
  61. package/dist/testing/websocket.spec.mjs +177 -0
  62. package/dist/testing/websocket.spec.mjs.map +1 -1
  63. package/dist/user.d.mts +9 -0
  64. package/package.json +1 -1
  65. package/src/dev/mappings.mts +44 -0
  66. package/src/dev/registry.mts +0 -1
  67. package/src/dev/services.mts +0 -1
  68. package/src/hass.module.mts +16 -0
  69. package/src/helpers/fetch/configuration.mts +11 -5
  70. package/src/helpers/frontend.mts +19 -0
  71. package/src/helpers/index.mts +1 -0
  72. package/src/helpers/interfaces.mts +20 -1
  73. package/src/services/addon.service.mts +2 -1
  74. package/src/services/area.service.mts +13 -13
  75. package/src/services/config.service.mts +53 -6
  76. package/src/services/conversation.service.mts +16 -2
  77. package/src/services/device.service.mts +13 -21
  78. package/src/services/entity.service.mts +13 -12
  79. package/src/services/floor.service.mts +13 -13
  80. package/src/services/frontend.service.mts +20 -0
  81. package/src/services/index.mts +2 -0
  82. package/src/services/label.service.mts +13 -13
  83. package/src/services/registry.service.mts +5 -4
  84. package/src/services/websocket-api.service.mts +86 -5
  85. package/src/services/zone.service.mts +13 -13
  86. package/src/testing/addon.spec.mts +4 -2
  87. package/src/testing/config.spec.mts +410 -0
  88. package/src/testing/conversation.spec.mts +48 -0
  89. package/src/testing/fetch-api.spec.mts +2 -5
  90. package/src/testing/frontend.spec.mts +66 -0
  91. package/src/testing/websocket.spec.mts +225 -0
  92. package/src/user.mts +18 -0
@@ -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 {};
@@ -1,5 +1,4 @@
1
1
  /* eslint-disable sonarjs/class-name */
2
2
  /* eslint-disable @typescript-eslint/no-empty-object-type */
3
- /* eslint-disable @cspell/spellchecker */
4
3
  export {};
5
4
  //# sourceMappingURL=services.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"services.mjs","sourceRoot":"","sources":["../../src/dev/services.mts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,4DAA4D;AAC5D,yCAAyC"}
1
+ {"version":3,"file":"services.mjs","sourceRoot":"","sources":["../../src/dev/services.mts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,4DAA4D"}
@@ -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
@@ -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
  */
@@ -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: string;
49
- domain: string;
50
- title: string;
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":"AAsEA,MAAM,CAAN,IAAY,KAIX;AAJD,WAAY,KAAK;IACf,0BAAiB,CAAA;IACjB,iCAAwB,CAAA;IACxB,mCAA0B,CAAA;AAC5B,CAAC,EAJW,KAAK,KAAL,KAAK,QAIhB"}
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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=frontend.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frontend.mjs","sourceRoot":"","sources":["../../src/helpers/frontend.mts"],"names":[],"mappings":""}
@@ -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";
@@ -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":"AAwMA,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"}
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
- return await hass.socket.sendMessage({
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,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAiB;YACnD,QAAQ,EAAE,SAAS;YACnB,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,gBAAgB;SACvB,CAAC,CAAC;IACL,CAAC;IAED,OAAO;QACL,IAAI;KACL,CAAC;AACJ,CAAC"}
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":"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"}
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 function Configure({ logger, lifecycle, event, hass, config, internal, }: TServiceParams): HassConfigService;
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 function Configure({ logger, lifecycle, event, hass, config, internal, }) {
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
- if (checkedServices.has(service)) {
73
- return checkedServices.get(service);
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(service, exists);
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":"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"}
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 Conversation({ hass, logger }: TServiceParams): HassConversationService;
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 Conversation({ hass, logger }) {
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":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,MAAM,UAAU,YAAY,CAAC,EAAE,IAAI,EAAE,MAAM,EAAkB;IAC3D,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,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,WAAW;QACX,iBAAiB;KAClB,CAAC;AACJ,CAAC"}
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,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;QAC1E,MAAM,gBAAgB,EAAE,CAAC;QAEzB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;YACpB,OAAO;YACP,UAAU,EAAE,yBAAyB;YACrC,KAAK,CAAC,IAAI;gBACR,MAAM,EAAE,GAAG,IAAI,EAAE,CAAC;gBAClB,MAAM,QAAQ,CAAC,uBAAuB,EAAE,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;gBACvE,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;gBAC/C,MAAM,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;gBACxC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;gBACpC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,eAAe,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;YACjE,CAAC;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,KAAK,UAAU,gBAAgB;QAC7B,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;YAC5B,UAAU,EAAE,yBAAyB;YACrC,IAAI,EAAE,kBAAkB;SACzB,CAAC,CAAC;IACL,CAAC;IAED,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"}
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"}