@coffeerunhobby/mcp-ha-connect 0.5.0 → 0.7.0
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/README.md +438 -154
- package/dist/config.d.ts +0 -1
- package/dist/haClient/automations.d.ts +1 -2
- package/dist/haClient/automations.js +17 -7
- package/dist/haClient/automations.js.map +1 -1
- package/dist/haClient/calendars.d.ts +33 -0
- package/dist/haClient/calendars.js +68 -0
- package/dist/haClient/calendars.js.map +1 -0
- package/dist/haClient/config.d.ts +0 -1
- package/dist/haClient/devices.d.ts +0 -1
- package/dist/haClient/entities.d.ts +0 -1
- package/dist/haClient/events.d.ts +0 -1
- package/dist/haClient/history.d.ts +0 -1
- package/dist/haClient/index.d.ts +18 -2
- package/dist/haClient/index.js +23 -0
- package/dist/haClient/index.js.map +1 -1
- package/dist/haClient/labels.d.ts +64 -0
- package/dist/haClient/labels.js +177 -0
- package/dist/haClient/labels.js.map +1 -0
- package/dist/haClient/request.d.ts +0 -1
- package/dist/haClient/services.d.ts +0 -1
- package/dist/haClient/states.d.ts +0 -1
- package/dist/haClient/updates.d.ts +0 -1
- package/dist/index.d.ts +0 -1
- package/dist/localAI/index.d.ts +0 -1
- package/dist/localAI/prompts.d.ts +0 -1
- package/dist/localAI/providers/base.d.ts +0 -1
- package/dist/localAI/providers/ollama.d.ts +0 -1
- package/dist/localAI/providers/openai.d.ts +0 -1
- package/dist/localAI/types.d.ts +0 -1
- package/dist/resources/index.d.ts +2 -3
- package/dist/resources/index.js +132 -200
- package/dist/resources/index.js.map +1 -1
- package/dist/server/common.d.ts +2 -3
- package/dist/server/common.js +5 -10
- package/dist/server/common.js.map +1 -1
- package/dist/server/eventSubscription.d.ts +0 -1
- package/dist/server/http.d.ts +0 -1
- package/dist/server/rateLimiter.d.ts +0 -1
- package/dist/server/sse.d.ts +0 -1
- package/dist/server/stdio.d.ts +0 -1
- package/dist/server/stream.d.ts +0 -1
- package/dist/tools/analyzeSensors.d.ts +6 -0
- package/dist/tools/analyzeSensors.js +23 -0
- package/dist/tools/analyzeSensors.js.map +1 -0
- package/dist/tools/automationControls.d.ts +9 -0
- package/dist/tools/automationControls.js +41 -0
- package/dist/tools/automationControls.js.map +1 -0
- package/dist/tools/calendar.d.ts +7 -0
- package/dist/tools/calendar.js +82 -0
- package/dist/tools/calendar.js.map +1 -0
- package/dist/tools/callService.d.ts +3 -5
- package/dist/tools/callService.js +11 -94
- package/dist/tools/callService.js.map +1 -1
- package/dist/tools/common.d.ts +406 -0
- package/dist/tools/common.js +222 -0
- package/dist/tools/common.js.map +1 -0
- package/dist/tools/controlClimate.d.ts +6 -0
- package/dist/tools/controlClimate.js +50 -0
- package/dist/tools/controlClimate.js.map +1 -0
- package/dist/tools/controlCover.d.ts +6 -0
- package/dist/tools/controlCover.js +33 -0
- package/dist/tools/controlCover.js.map +1 -0
- package/dist/tools/controlFan.d.ts +6 -0
- package/dist/tools/controlFan.js +34 -0
- package/dist/tools/controlFan.js.map +1 -0
- package/dist/tools/controlLight.d.ts +6 -0
- package/dist/tools/controlLight.js +28 -0
- package/dist/tools/controlLight.js.map +1 -0
- package/dist/tools/controlMediaPlayer.d.ts +6 -0
- package/dist/tools/controlMediaPlayer.js +35 -0
- package/dist/tools/controlMediaPlayer.js.map +1 -0
- package/dist/tools/createAutomation.d.ts +6 -0
- package/dist/tools/createAutomation.js +24 -0
- package/dist/tools/createAutomation.js.map +1 -0
- package/dist/tools/deleteAutomation.d.ts +6 -0
- package/dist/tools/deleteAutomation.js +14 -0
- package/dist/tools/deleteAutomation.js.map +1 -0
- package/dist/tools/entityAction.d.ts +6 -0
- package/dist/tools/entityAction.js +22 -0
- package/dist/tools/entityAction.js.map +1 -0
- package/dist/tools/getAllSensors.d.ts +6 -0
- package/dist/tools/getAllSensors.js +14 -0
- package/dist/tools/getAllSensors.js.map +1 -0
- package/dist/tools/getAutomationTrace.d.ts +6 -0
- package/dist/tools/getAutomationTrace.js +14 -0
- package/dist/tools/getAutomationTrace.js.map +1 -0
- package/dist/tools/getDomainSummary.d.ts +6 -0
- package/dist/tools/getDomainSummary.js +14 -0
- package/dist/tools/getDomainSummary.js.map +1 -0
- package/dist/tools/getEntitiesByDomain.d.ts +3 -5
- package/dist/tools/getEntitiesByDomain.js +9 -75
- package/dist/tools/getEntitiesByDomain.js.map +1 -1
- package/dist/tools/getHistory.d.ts +6 -0
- package/dist/tools/getHistory.js +14 -0
- package/dist/tools/getHistory.js.map +1 -0
- package/dist/tools/getState.d.ts +3 -5
- package/dist/tools/getState.js +11 -84
- package/dist/tools/getState.js.map +1 -1
- package/dist/tools/getStates.d.ts +3 -5
- package/dist/tools/getStates.js +9 -65
- package/dist/tools/getStates.js.map +1 -1
- package/dist/tools/getVersion.d.ts +6 -0
- package/dist/tools/getVersion.js +14 -0
- package/dist/tools/getVersion.js.map +1 -0
- package/dist/tools/index.d.ts +6 -7
- package/dist/tools/index.js +97 -6
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/labels.d.ts +12 -0
- package/dist/tools/labels.js +139 -0
- package/dist/tools/labels.js.map +1 -0
- package/dist/tools/listAutomations.d.ts +6 -0
- package/dist/tools/listAutomations.js +17 -0
- package/dist/tools/listAutomations.js.map +1 -0
- package/dist/tools/listEntities.d.ts +6 -0
- package/dist/tools/listEntities.js +14 -0
- package/dist/tools/listEntities.js.map +1 -0
- package/dist/tools/listPersons.d.ts +6 -0
- package/dist/tools/listPersons.js +36 -0
- package/dist/tools/listPersons.js.map +1 -0
- package/dist/tools/sceneAndScript.d.ts +7 -0
- package/dist/tools/sceneAndScript.js +32 -0
- package/dist/tools/sceneAndScript.js.map +1 -0
- package/dist/tools/searchEntities.d.ts +3 -5
- package/dist/tools/searchEntities.js +11 -75
- package/dist/tools/searchEntities.js.map +1 -1
- package/dist/tools/sendNotification.d.ts +8 -0
- package/dist/tools/sendNotification.js +160 -0
- package/dist/tools/sendNotification.js.map +1 -0
- package/dist/tools/systemTools.d.ts +8 -0
- package/dist/tools/systemTools.js +32 -0
- package/dist/tools/systemTools.js.map +1 -0
- package/dist/tools/triggerAutomation.d.ts +6 -0
- package/dist/tools/triggerAutomation.js +14 -0
- package/dist/tools/triggerAutomation.js.map +1 -0
- package/dist/types/automations.d.ts +38 -0
- package/dist/types/automations.js +5 -0
- package/dist/types/automations.js.map +1 -0
- package/dist/types/calendars.d.ts +24 -0
- package/dist/types/calendars.js +5 -0
- package/dist/types/calendars.js.map +1 -0
- package/dist/types/config.d.ts +10 -0
- package/dist/types/config.js +5 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/entities.d.ts +13 -0
- package/dist/types/entities.js +5 -0
- package/dist/types/entities.js.map +1 -0
- package/dist/types/entity.d.ts +22 -1
- package/dist/types/errors.d.ts +0 -1
- package/dist/types/haConfig.d.ts +0 -1
- package/dist/types/history.d.ts +12 -0
- package/dist/types/history.js +5 -0
- package/dist/types/history.js.map +1 -0
- package/dist/types/index.d.ts +7 -2
- package/dist/types/index.js +1 -0
- package/dist/types/index.js.map +1 -1
- package/dist/types/labels.d.ts +34 -0
- package/dist/types/labels.js +5 -0
- package/dist/types/labels.js.map +1 -0
- package/dist/types/request.d.ts +0 -1
- package/dist/types/serviceCall.d.ts +0 -1
- package/dist/types/states.d.ts +19 -0
- package/dist/types/states.js +5 -0
- package/dist/types/states.js.map +1 -0
- package/dist/types/updates.d.ts +24 -0
- package/dist/types/updates.js +5 -0
- package/dist/types/updates.js.map +1 -0
- package/dist/types.d.ts +0 -1
- package/dist/utils/config-validations.d.ts +0 -1
- package/dist/utils/logger.d.ts +0 -1
- package/dist/utils/logger.js +2 -1
- package/dist/utils/logger.js.map +1 -1
- package/dist/wrapper.d.ts +0 -1
- package/docs/CHANGELOG.md +114 -85
- package/docs/LOCAL_CLIENT.md +572 -268
- package/openapi.json +1149 -37
- package/package.json +9 -7
- package/src/haClient/automations.ts +19 -7
- package/src/haClient/calendars.ts +94 -0
- package/src/haClient/index.ts +36 -0
- package/src/resources/index.ts +159 -211
- package/src/server/common.ts +8 -16
- package/src/tools/analyzeSensors.ts +33 -0
- package/src/tools/automationControls.ts +66 -0
- package/src/tools/calendar.ts +97 -0
- package/src/tools/callService.ts +16 -105
- package/src/tools/common.ts +260 -0
- package/src/tools/controlClimate.ts +65 -0
- package/src/tools/controlCover.ts +45 -0
- package/src/tools/controlFan.ts +41 -0
- package/src/tools/controlLight.ts +35 -0
- package/src/tools/controlMediaPlayer.ts +47 -0
- package/src/tools/createAutomation.ts +35 -0
- package/src/tools/deleteAutomation.ts +24 -0
- package/src/tools/entityAction.ts +32 -0
- package/src/tools/getAllSensors.ts +21 -0
- package/src/tools/getAutomationTrace.ts +24 -0
- package/src/tools/getDomainSummary.ts +21 -0
- package/src/tools/getEntitiesByDomain.ts +15 -86
- package/src/tools/getHistory.ts +24 -0
- package/src/tools/getState.ts +16 -95
- package/src/tools/getStates.ts +14 -73
- package/src/tools/getVersion.ts +21 -0
- package/src/tools/index.ts +128 -6
- package/src/tools/listAutomations.ts +27 -0
- package/src/tools/listEntities.ts +24 -0
- package/src/tools/listPersons.ts +46 -0
- package/src/tools/sceneAndScript.ts +48 -0
- package/src/tools/searchEntities.ts +17 -86
- package/src/tools/sendNotification.ts +179 -0
- package/src/tools/systemTools.ts +52 -0
- package/src/tools/triggerAutomation.ts +24 -0
- package/src/types/automations.ts +43 -0
- package/src/types/calendars.ts +26 -0
- package/src/types/config.ts +11 -0
- package/src/types/entities.ts +14 -0
- package/src/types/history.ts +13 -0
- package/src/types/index.ts +37 -1
- package/src/types/states.ts +21 -0
- package/src/types/updates.ts +28 -0
- package/src/utils/logger.ts +2 -1
- package/tests/bdd/automation-creation.spec.ts +214 -0
- package/tests/bdd/automation-management.spec.ts +267 -0
- package/tests/bdd/calendar.spec.ts +190 -0
- package/tests/bdd/configuration.spec.ts +283 -0
- package/tests/bdd/device-control.spec.ts +344 -0
- package/tests/bdd/entity-listing.spec.ts +208 -0
- package/tests/bdd/entity-search.spec.ts +183 -0
- package/tests/bdd/history-retrieval.spec.ts +195 -0
- package/tests/bdd/notifications.spec.ts +238 -0
- package/tests/bdd/service-calls.spec.ts +144 -0
- package/tests/bdd/state-retrieval.spec.ts +204 -0
- package/tests/features/automation-creation.feature +36 -0
- package/tests/features/automation-management.feature +54 -0
- package/tests/features/calendar.feature +37 -0
- package/tests/features/configuration.feature +71 -0
- package/tests/features/device-control.feature +100 -0
- package/tests/features/entity-listing.feature +51 -0
- package/tests/features/entity-search.feature +44 -0
- package/tests/features/history-retrieval.feature +38 -0
- package/tests/features/notifications.feature +37 -0
- package/tests/features/service-calls.feature +35 -0
- package/tests/features/state-retrieval.feature +37 -0
- package/tests/haClient/index.test.ts +142 -110
- package/tests/localAI/index.test.ts +27 -18
- package/tests/server/common.test.ts +4 -4
- package/tests/server/stdio.test.ts +4 -6
- package/tests/tools/registry.test.ts +66 -259
- package/tsconfig.json +14 -15
- package/vitest.config.ts +1 -1
- package/dist/config.d.ts.map +0 -1
- package/dist/haClient/automations.d.ts.map +0 -1
- package/dist/haClient/config.d.ts.map +0 -1
- package/dist/haClient/devices.d.ts.map +0 -1
- package/dist/haClient/entities.d.ts.map +0 -1
- package/dist/haClient/events.d.ts.map +0 -1
- package/dist/haClient/history.d.ts.map +0 -1
- package/dist/haClient/index.d.ts.map +0 -1
- package/dist/haClient/request.d.ts.map +0 -1
- package/dist/haClient/services.d.ts.map +0 -1
- package/dist/haClient/states.d.ts.map +0 -1
- package/dist/haClient/updates.d.ts.map +0 -1
- package/dist/haClient.d.ts +0 -97
- package/dist/haClient.d.ts.map +0 -1
- package/dist/haClient.js +0 -344
- package/dist/haClient.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/localAI/index.d.ts.map +0 -1
- package/dist/localAI/prompts.d.ts.map +0 -1
- package/dist/localAI/providers/base.d.ts.map +0 -1
- package/dist/localAI/providers/ollama.d.ts.map +0 -1
- package/dist/localAI/providers/openai.d.ts.map +0 -1
- package/dist/localAI/types.d.ts.map +0 -1
- package/dist/ollamaClient.d.ts +0 -37
- package/dist/ollamaClient.d.ts.map +0 -1
- package/dist/ollamaClient.js +0 -110
- package/dist/ollamaClient.js.map +0 -1
- package/dist/resources/index.d.ts.map +0 -1
- package/dist/server/common.d.ts.map +0 -1
- package/dist/server/eventSubscription.d.ts.map +0 -1
- package/dist/server/http.d.ts.map +0 -1
- package/dist/server/rateLimiter.d.ts.map +0 -1
- package/dist/server/sse.d.ts.map +0 -1
- package/dist/server/stdio.d.ts.map +0 -1
- package/dist/server/stream.d.ts.map +0 -1
- package/dist/server.d.ts +0 -8
- package/dist/server.d.ts.map +0 -1
- package/dist/server.js +0 -30
- package/dist/server.js.map +0 -1
- package/dist/tools/callService.d.ts.map +0 -1
- package/dist/tools/getClient.d.ts +0 -8
- package/dist/tools/getClient.d.ts.map +0 -1
- package/dist/tools/getClient.js +0 -94
- package/dist/tools/getClient.js.map +0 -1
- package/dist/tools/getDevice.d.ts +0 -8
- package/dist/tools/getDevice.d.ts.map +0 -1
- package/dist/tools/getDevice.js +0 -94
- package/dist/tools/getDevice.js.map +0 -1
- package/dist/tools/getEntitiesByDomain.d.ts.map +0 -1
- package/dist/tools/getState.d.ts.map +0 -1
- package/dist/tools/getStates.d.ts.map +0 -1
- package/dist/tools/index.d.ts.map +0 -1
- package/dist/tools/listClients.d.ts +0 -8
- package/dist/tools/listClients.d.ts.map +0 -1
- package/dist/tools/listClients.js +0 -73
- package/dist/tools/listClients.js.map +0 -1
- package/dist/tools/listDevices.d.ts +0 -8
- package/dist/tools/listDevices.d.ts.map +0 -1
- package/dist/tools/listDevices.js +0 -73
- package/dist/tools/listDevices.js.map +0 -1
- package/dist/tools/listSites.d.ts +0 -8
- package/dist/tools/listSites.d.ts.map +0 -1
- package/dist/tools/listSites.js +0 -67
- package/dist/tools/listSites.js.map +0 -1
- package/dist/tools/registry.d.ts +0 -9
- package/dist/tools/registry.d.ts.map +0 -1
- package/dist/tools/registry.js +0 -1382
- package/dist/tools/registry.js.map +0 -1
- package/dist/tools/searchDevices.d.ts +0 -8
- package/dist/tools/searchDevices.d.ts.map +0 -1
- package/dist/tools/searchDevices.js +0 -84
- package/dist/tools/searchDevices.js.map +0 -1
- package/dist/tools/searchEntities.d.ts.map +0 -1
- package/dist/types/entity.d.ts.map +0 -1
- package/dist/types/errors.d.ts.map +0 -1
- package/dist/types/haConfig.d.ts.map +0 -1
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/request.d.ts.map +0 -1
- package/dist/types/serviceCall.d.ts.map +0 -1
- package/dist/types.d.ts.map +0 -1
- package/dist/utils/config-validations.d.ts.map +0 -1
- package/dist/utils/logger.d.ts.map +0 -1
- package/dist/wrapper.d.ts.map +0 -1
- package/src/tools/registry.ts +0 -1521
- package/src/types/entity.ts +0 -110
package/dist/config.d.ts
CHANGED
|
@@ -30,4 +30,3 @@ export interface EnvironmentConfig {
|
|
|
30
30
|
export declare function loadConfig(env?: NodeJS.ProcessEnv): EnvironmentConfig;
|
|
31
31
|
export declare function validateConfig(config: EnvironmentConfig): void;
|
|
32
32
|
export declare function loadConfigFromEnv(): EnvironmentConfig;
|
|
33
|
-
//# sourceMappingURL=config.d.ts.map
|
|
@@ -44,7 +44,7 @@ export declare class AutomationOperations {
|
|
|
44
44
|
reloadAutomations(): Promise<void>;
|
|
45
45
|
/**
|
|
46
46
|
* Create a new automation via the config API
|
|
47
|
-
* Note: Requires
|
|
47
|
+
* Note: Requires automation: !include automations.yaml in configuration.yaml
|
|
48
48
|
*/
|
|
49
49
|
createAutomation(config: AutomationConfig): Promise<{
|
|
50
50
|
id: string;
|
|
@@ -64,4 +64,3 @@ export declare class AutomationOperations {
|
|
|
64
64
|
*/
|
|
65
65
|
getAutomationTrace(entityId: string): Promise<unknown[]>;
|
|
66
66
|
}
|
|
67
|
-
//# sourceMappingURL=automations.d.ts.map
|
|
@@ -124,23 +124,33 @@ export class AutomationOperations {
|
|
|
124
124
|
}
|
|
125
125
|
/**
|
|
126
126
|
* Create a new automation via the config API
|
|
127
|
-
* Note: Requires
|
|
127
|
+
* Note: Requires automation: !include automations.yaml in configuration.yaml
|
|
128
128
|
*/
|
|
129
129
|
async createAutomation(config) {
|
|
130
130
|
if (!this.request) {
|
|
131
131
|
throw new Error('RequestHandler not available');
|
|
132
132
|
}
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
133
|
+
// Generate a unique ID for the automation (timestamp-based like HA UI does)
|
|
134
|
+
const automationId = config.id || String(Date.now());
|
|
135
|
+
logger.info('Creating automation', { alias: config.alias, id: automationId });
|
|
136
|
+
// POST to /config/automation/config/{id} - the ID must be in the URL path
|
|
137
|
+
await this.request.post(`/config/automation/config/${automationId}`, {
|
|
138
|
+
id: automationId,
|
|
136
139
|
alias: config.alias,
|
|
137
|
-
description: config.description,
|
|
140
|
+
description: config.description || '',
|
|
138
141
|
mode: config.mode ?? 'single',
|
|
139
142
|
trigger: config.trigger,
|
|
140
|
-
condition: config.condition,
|
|
143
|
+
condition: config.condition || [],
|
|
141
144
|
action: config.action,
|
|
142
145
|
});
|
|
143
|
-
|
|
146
|
+
// Reload automations to pick up the new one
|
|
147
|
+
if (this.serviceOps) {
|
|
148
|
+
await this.serviceOps.callService({
|
|
149
|
+
domain: 'automation',
|
|
150
|
+
service: 'reload',
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
return { id: automationId };
|
|
144
154
|
}
|
|
145
155
|
/**
|
|
146
156
|
* Update an existing automation
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"automations.js","sourceRoot":"","sources":["../../src/haClient/automations.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"automations.js","sourceRoot":"","sources":["../../src/haClient/automations.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Calendar Operations for Home Assistant API
|
|
3
|
+
* Handles calendar listing and event retrieval
|
|
4
|
+
*/
|
|
5
|
+
import type { CalendarEvent, Calendar } from '../types/index.js';
|
|
6
|
+
import type { RequestHandler } from './request.js';
|
|
7
|
+
/**
|
|
8
|
+
* Calendar-related operations for the Home Assistant API.
|
|
9
|
+
*/
|
|
10
|
+
export declare class CalendarOperations {
|
|
11
|
+
private readonly request;
|
|
12
|
+
constructor(request: RequestHandler);
|
|
13
|
+
/**
|
|
14
|
+
* Get all calendar entities
|
|
15
|
+
*/
|
|
16
|
+
getCalendars(): Promise<Calendar[]>;
|
|
17
|
+
/**
|
|
18
|
+
* Get events from a calendar
|
|
19
|
+
* @param entityId - Calendar entity ID (e.g., 'calendar.my_calendar')
|
|
20
|
+
* @param startDate - Start date for event range (defaults to now)
|
|
21
|
+
* @param endDate - End date for event range (defaults to 30 days from start)
|
|
22
|
+
*/
|
|
23
|
+
getCalendarEvents(entityId: string, startDate?: Date, endDate?: Date): Promise<CalendarEvent[]>;
|
|
24
|
+
/**
|
|
25
|
+
* Get events from all calendars
|
|
26
|
+
* @param startDate - Start date for event range (defaults to now)
|
|
27
|
+
* @param endDate - End date for event range (defaults to 30 days from start)
|
|
28
|
+
*/
|
|
29
|
+
getAllCalendarEvents(startDate?: Date, endDate?: Date): Promise<Array<{
|
|
30
|
+
calendar: string;
|
|
31
|
+
events: CalendarEvent[];
|
|
32
|
+
}>>;
|
|
33
|
+
}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Calendar Operations for Home Assistant API
|
|
3
|
+
* Handles calendar listing and event retrieval
|
|
4
|
+
*/
|
|
5
|
+
import { logger } from '../utils/logger.js';
|
|
6
|
+
/**
|
|
7
|
+
* Calendar-related operations for the Home Assistant API.
|
|
8
|
+
*/
|
|
9
|
+
export class CalendarOperations {
|
|
10
|
+
request;
|
|
11
|
+
constructor(request) {
|
|
12
|
+
this.request = request;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Get all calendar entities
|
|
16
|
+
*/
|
|
17
|
+
async getCalendars() {
|
|
18
|
+
logger.debug('Fetching calendars');
|
|
19
|
+
// Use dedicated /api/calendars endpoint instead of filtering all states
|
|
20
|
+
const response = await this.request.get('/calendars');
|
|
21
|
+
const calendars = response.map(cal => ({
|
|
22
|
+
entity_id: cal.entity_id,
|
|
23
|
+
name: cal.name || cal.entity_id.replace('calendar.', ''),
|
|
24
|
+
state: 'on', // Calendar API doesn't return state, default to 'on'
|
|
25
|
+
}));
|
|
26
|
+
logger.info('Fetched calendars', { count: calendars.length });
|
|
27
|
+
return calendars;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Get events from a calendar
|
|
31
|
+
* @param entityId - Calendar entity ID (e.g., 'calendar.my_calendar')
|
|
32
|
+
* @param startDate - Start date for event range (defaults to now)
|
|
33
|
+
* @param endDate - End date for event range (defaults to 30 days from start)
|
|
34
|
+
*/
|
|
35
|
+
async getCalendarEvents(entityId, startDate, endDate) {
|
|
36
|
+
const start = startDate || new Date();
|
|
37
|
+
const end = endDate || new Date(start.getTime() + 30 * 24 * 60 * 60 * 1000);
|
|
38
|
+
logger.debug('Fetching calendar events', { entityId, start: start.toISOString(), end: end.toISOString() });
|
|
39
|
+
// Calendar events use a special API endpoint, not the standard services API
|
|
40
|
+
const events = await this.request.get(`/calendars/${entityId}`, {
|
|
41
|
+
start: start.toISOString(),
|
|
42
|
+
end: end.toISOString(),
|
|
43
|
+
});
|
|
44
|
+
logger.info('Fetched calendar events', { entityId, count: events.length });
|
|
45
|
+
return events;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Get events from all calendars
|
|
49
|
+
* @param startDate - Start date for event range (defaults to now)
|
|
50
|
+
* @param endDate - End date for event range (defaults to 30 days from start)
|
|
51
|
+
*/
|
|
52
|
+
async getAllCalendarEvents(startDate, endDate) {
|
|
53
|
+
const calendars = await this.getCalendars();
|
|
54
|
+
// Fetch all calendar events in parallel
|
|
55
|
+
const results = await Promise.all(calendars.map(async (calendar) => {
|
|
56
|
+
try {
|
|
57
|
+
const events = await this.getCalendarEvents(calendar.entity_id, startDate, endDate);
|
|
58
|
+
return { calendar: calendar.entity_id, events };
|
|
59
|
+
}
|
|
60
|
+
catch (error) {
|
|
61
|
+
logger.warn('Failed to fetch events for calendar', { calendar: calendar.entity_id, error });
|
|
62
|
+
return { calendar: calendar.entity_id, events: [] };
|
|
63
|
+
}
|
|
64
|
+
}));
|
|
65
|
+
return results;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=calendars.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calendars.js","sourceRoot":"","sources":["../../src/haClient/calendars.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAQ5C;;GAEG;AACH,MAAM,OAAO,kBAAkB;IACA;IAA7B,YAA6B,OAAuB;QAAvB,YAAO,GAAP,OAAO,CAAgB;IAAG,CAAC;IAExD;;OAEG;IACH,KAAK,CAAC,YAAY;QAChB,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;QAEnC,wEAAwE;QACxE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAwB,YAAY,CAAC,CAAC;QAC7E,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACrC,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;YACxD,KAAK,EAAE,IAAI,EAAE,qDAAqD;SACnE,CAAC,CAAC,CAAC;QAEJ,MAAM,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAE,KAAK,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;QAC9D,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,iBAAiB,CACrB,QAAgB,EAChB,SAAgB,EAChB,OAAc;QAEd,MAAM,KAAK,GAAG,SAAS,IAAI,IAAI,IAAI,EAAE,CAAC;QACtC,MAAM,GAAG,GAAG,OAAO,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;QAE5E,MAAM,CAAC,KAAK,CAAC,0BAA0B,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QAE3G,4EAA4E;QAC5E,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CACnC,cAAc,QAAQ,EAAE,EACxB;YACE,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE;YAC1B,GAAG,EAAE,GAAG,CAAC,WAAW,EAAE;SACvB,CACF,CAAC;QAEF,MAAM,CAAC,IAAI,CAAC,yBAAyB,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QAC3E,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,oBAAoB,CACxB,SAAgB,EAChB,OAAc;QAEd,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QAE5C,wCAAwC;QACxC,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,SAAS,CAAC,GAAG,CAAC,KAAK,EAAC,QAAQ,EAAC,EAAE;YAC7B,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;gBACpF,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC;YAClD,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,IAAI,CAAC,qCAAqC,EAAE,EAAE,QAAQ,EAAE,QAAQ,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;gBAC5F,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;YACtD,CAAC;QACH,CAAC,CAAC,CACH,CAAC;QAEF,OAAO,OAAO,CAAC;IACjB,CAAC;CACF"}
|
package/dist/haClient/index.d.ts
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Main client class that composes all operation modules
|
|
4
4
|
*/
|
|
5
5
|
import type { EnvironmentConfig } from '../config.js';
|
|
6
|
-
import type { Entity, ServiceCallData, ServiceCallResponse, Automation, AutomationConfig, DomainSummary, HaVersion, LogbookEntry, UpdateInfo } from '../types/index.js';
|
|
6
|
+
import type { Entity, ServiceCallData, ServiceCallResponse, Automation, AutomationConfig, DomainSummary, HaVersion, LogbookEntry, UpdateInfo, Calendar, CalendarEvent } from '../types/index.js';
|
|
7
7
|
import { DeviceOperations } from './devices.js';
|
|
8
8
|
/**
|
|
9
9
|
* Main client for interacting with the Home Assistant API.
|
|
@@ -18,6 +18,7 @@ export declare class HaClient {
|
|
|
18
18
|
private readonly historyOps;
|
|
19
19
|
private readonly updateOps;
|
|
20
20
|
private readonly configOps;
|
|
21
|
+
private readonly calendarOps;
|
|
21
22
|
readonly devices: DeviceOperations;
|
|
22
23
|
constructor(config: EnvironmentConfig);
|
|
23
24
|
/**
|
|
@@ -139,6 +140,21 @@ export declare class HaClient {
|
|
|
139
140
|
* Get Home Assistant version and configuration info
|
|
140
141
|
*/
|
|
141
142
|
getVersion(): Promise<HaVersion>;
|
|
143
|
+
/**
|
|
144
|
+
* Get all calendar entities
|
|
145
|
+
*/
|
|
146
|
+
getCalendars(): Promise<Calendar[]>;
|
|
147
|
+
/**
|
|
148
|
+
* Get events from a calendar
|
|
149
|
+
*/
|
|
150
|
+
getCalendarEvents(entityId: string, startDate?: Date, endDate?: Date): Promise<CalendarEvent[]>;
|
|
151
|
+
/**
|
|
152
|
+
* Get events from all calendars
|
|
153
|
+
*/
|
|
154
|
+
getAllCalendarEvents(startDate?: Date, endDate?: Date): Promise<Array<{
|
|
155
|
+
calendar: string;
|
|
156
|
+
events: CalendarEvent[];
|
|
157
|
+
}>>;
|
|
142
158
|
}
|
|
143
159
|
export { RequestHandler } from './request.js';
|
|
144
160
|
export { StateOperations } from './states.js';
|
|
@@ -149,5 +165,5 @@ export { HistoryOperations } from './history.js';
|
|
|
149
165
|
export { UpdateOperations } from './updates.js';
|
|
150
166
|
export { ConfigOperations } from './config.js';
|
|
151
167
|
export { DeviceOperations } from './devices.js';
|
|
168
|
+
export { CalendarOperations } from './calendars.js';
|
|
152
169
|
export type { LightControlOptions, ClimateControlOptions, MediaPlayerControlOptions, CoverControlOptions, FanControlOptions } from './devices.js';
|
|
153
|
-
//# sourceMappingURL=index.d.ts.map
|
package/dist/haClient/index.js
CHANGED
|
@@ -12,6 +12,7 @@ import { RequestHandler } from './request.js';
|
|
|
12
12
|
import { ServiceOperations } from './services.js';
|
|
13
13
|
import { StateOperations } from './states.js';
|
|
14
14
|
import { UpdateOperations } from './updates.js';
|
|
15
|
+
import { CalendarOperations } from './calendars.js';
|
|
15
16
|
/**
|
|
16
17
|
* Main client for interacting with the Home Assistant API.
|
|
17
18
|
* Organized with dedicated operation classes for each domain.
|
|
@@ -25,6 +26,7 @@ export class HaClient {
|
|
|
25
26
|
historyOps;
|
|
26
27
|
updateOps;
|
|
27
28
|
configOps;
|
|
29
|
+
calendarOps;
|
|
28
30
|
devices;
|
|
29
31
|
constructor(config) {
|
|
30
32
|
logger.debug('Initializing HaClient');
|
|
@@ -43,6 +45,7 @@ export class HaClient {
|
|
|
43
45
|
this.historyOps = new HistoryOperations(this.request);
|
|
44
46
|
this.updateOps = new UpdateOperations(this.entityOps);
|
|
45
47
|
this.configOps = new ConfigOperations(this.request);
|
|
48
|
+
this.calendarOps = new CalendarOperations(this.request);
|
|
46
49
|
this.devices = new DeviceOperations(this.serviceOps, this.stateOps);
|
|
47
50
|
logger.info('HaClient initialized');
|
|
48
51
|
}
|
|
@@ -209,6 +212,25 @@ export class HaClient {
|
|
|
209
212
|
async getVersion() {
|
|
210
213
|
return this.configOps.getVersion();
|
|
211
214
|
}
|
|
215
|
+
// ===== Calendar Operations =====
|
|
216
|
+
/**
|
|
217
|
+
* Get all calendar entities
|
|
218
|
+
*/
|
|
219
|
+
async getCalendars() {
|
|
220
|
+
return this.calendarOps.getCalendars();
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Get events from a calendar
|
|
224
|
+
*/
|
|
225
|
+
async getCalendarEvents(entityId, startDate, endDate) {
|
|
226
|
+
return this.calendarOps.getCalendarEvents(entityId, startDate, endDate);
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Get events from all calendars
|
|
230
|
+
*/
|
|
231
|
+
async getAllCalendarEvents(startDate, endDate) {
|
|
232
|
+
return this.calendarOps.getAllCalendarEvents(startDate, endDate);
|
|
233
|
+
}
|
|
212
234
|
}
|
|
213
235
|
// Re-export operation classes for testing
|
|
214
236
|
export { RequestHandler } from './request.js';
|
|
@@ -220,4 +242,5 @@ export { HistoryOperations } from './history.js';
|
|
|
220
242
|
export { UpdateOperations } from './updates.js';
|
|
221
243
|
export { ConfigOperations } from './config.js';
|
|
222
244
|
export { DeviceOperations } from './devices.js';
|
|
245
|
+
export { CalendarOperations } from './calendars.js';
|
|
223
246
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/haClient/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/haClient/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Label Operations for Home Assistant API
|
|
3
|
+
* Uses WebSocket API for label registry and entity registry operations
|
|
4
|
+
*/
|
|
5
|
+
import type { Label, LabelCreateInput, LabelUpdateInput, EntityRegistryEntry } from '../types/index.js';
|
|
6
|
+
import type { RequestHandlerConfig } from './request.js';
|
|
7
|
+
/**
|
|
8
|
+
* Label-related operations for the Home Assistant API.
|
|
9
|
+
* Uses WebSocket API since label/entity registry is not available via REST.
|
|
10
|
+
*/
|
|
11
|
+
export declare class LabelOperations {
|
|
12
|
+
private baseUrl;
|
|
13
|
+
private token;
|
|
14
|
+
constructor(config: RequestHandlerConfig);
|
|
15
|
+
/**
|
|
16
|
+
* Execute a WebSocket command and return the result
|
|
17
|
+
*/
|
|
18
|
+
private wsCommand;
|
|
19
|
+
/**
|
|
20
|
+
* List all labels
|
|
21
|
+
*/
|
|
22
|
+
listLabels(): Promise<Label[]>;
|
|
23
|
+
/**
|
|
24
|
+
* Create a new label
|
|
25
|
+
*/
|
|
26
|
+
createLabel(input: LabelCreateInput): Promise<Label>;
|
|
27
|
+
/**
|
|
28
|
+
* Update an existing label
|
|
29
|
+
*/
|
|
30
|
+
updateLabel(labelId: string, input: LabelUpdateInput): Promise<Label>;
|
|
31
|
+
/**
|
|
32
|
+
* Delete a label
|
|
33
|
+
*/
|
|
34
|
+
deleteLabel(labelId: string): Promise<void>;
|
|
35
|
+
/**
|
|
36
|
+
* List all entities in the registry
|
|
37
|
+
*/
|
|
38
|
+
listEntityRegistry(): Promise<EntityRegistryEntry[]>;
|
|
39
|
+
/**
|
|
40
|
+
* Get a single entity from the registry
|
|
41
|
+
*/
|
|
42
|
+
getEntityRegistryEntry(entityId: string): Promise<EntityRegistryEntry>;
|
|
43
|
+
/**
|
|
44
|
+
* Update an entity in the registry (including labels)
|
|
45
|
+
*/
|
|
46
|
+
updateEntityRegistry(entityId: string, updates: {
|
|
47
|
+
labels?: string[];
|
|
48
|
+
name?: string;
|
|
49
|
+
icon?: string;
|
|
50
|
+
area_id?: string;
|
|
51
|
+
}): Promise<EntityRegistryEntry>;
|
|
52
|
+
/**
|
|
53
|
+
* Get entities by label
|
|
54
|
+
*/
|
|
55
|
+
getEntitiesByLabel(labelId: string): Promise<EntityRegistryEntry[]>;
|
|
56
|
+
/**
|
|
57
|
+
* Assign a label to an entity
|
|
58
|
+
*/
|
|
59
|
+
assignLabelToEntity(entityId: string, labelId: string): Promise<EntityRegistryEntry>;
|
|
60
|
+
/**
|
|
61
|
+
* Remove a label from an entity
|
|
62
|
+
*/
|
|
63
|
+
removeLabelFromEntity(entityId: string, labelId: string): Promise<EntityRegistryEntry>;
|
|
64
|
+
}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Label Operations for Home Assistant API
|
|
3
|
+
* Uses WebSocket API for label registry and entity registry operations
|
|
4
|
+
*/
|
|
5
|
+
import WebSocket from 'ws';
|
|
6
|
+
import { logger } from '../utils/logger.js';
|
|
7
|
+
/**
|
|
8
|
+
* Label-related operations for the Home Assistant API.
|
|
9
|
+
* Uses WebSocket API since label/entity registry is not available via REST.
|
|
10
|
+
*/
|
|
11
|
+
export class LabelOperations {
|
|
12
|
+
baseUrl;
|
|
13
|
+
token;
|
|
14
|
+
constructor(config) {
|
|
15
|
+
this.baseUrl = config.baseUrl;
|
|
16
|
+
this.token = config.token;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Execute a WebSocket command and return the result
|
|
20
|
+
*/
|
|
21
|
+
async wsCommand(type, data = {}) {
|
|
22
|
+
return new Promise((resolve, reject) => {
|
|
23
|
+
const wsUrl = this.baseUrl.replace('http', 'ws') + '/api/websocket';
|
|
24
|
+
const ws = new WebSocket(wsUrl);
|
|
25
|
+
let msgId = 1;
|
|
26
|
+
let authenticated = false;
|
|
27
|
+
const timeout = setTimeout(() => {
|
|
28
|
+
ws.close();
|
|
29
|
+
reject(new Error('WebSocket command timed out'));
|
|
30
|
+
}, 30000);
|
|
31
|
+
ws.on('open', () => {
|
|
32
|
+
logger.debug('WebSocket connection opened for label operation');
|
|
33
|
+
});
|
|
34
|
+
ws.on('message', (rawData) => {
|
|
35
|
+
const msg = JSON.parse(rawData.toString());
|
|
36
|
+
if (msg.type === 'auth_required') {
|
|
37
|
+
ws.send(JSON.stringify({ type: 'auth', access_token: this.token }));
|
|
38
|
+
}
|
|
39
|
+
else if (msg.type === 'auth_ok') {
|
|
40
|
+
authenticated = true;
|
|
41
|
+
// Send the actual command
|
|
42
|
+
ws.send(JSON.stringify({ id: msgId++, type, ...data }));
|
|
43
|
+
}
|
|
44
|
+
else if (msg.type === 'auth_invalid') {
|
|
45
|
+
clearTimeout(timeout);
|
|
46
|
+
ws.close();
|
|
47
|
+
reject(new Error('WebSocket authentication failed'));
|
|
48
|
+
}
|
|
49
|
+
else if (msg.type === 'result') {
|
|
50
|
+
clearTimeout(timeout);
|
|
51
|
+
ws.close();
|
|
52
|
+
if (msg.success) {
|
|
53
|
+
resolve(msg.result);
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
reject(new Error(msg.error?.message || 'WebSocket command failed'));
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
ws.on('error', (err) => {
|
|
61
|
+
clearTimeout(timeout);
|
|
62
|
+
reject(err);
|
|
63
|
+
});
|
|
64
|
+
ws.on('close', () => {
|
|
65
|
+
if (!authenticated) {
|
|
66
|
+
clearTimeout(timeout);
|
|
67
|
+
reject(new Error('WebSocket connection closed before authentication'));
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
// ===== Label Registry Operations =====
|
|
73
|
+
/**
|
|
74
|
+
* List all labels
|
|
75
|
+
*/
|
|
76
|
+
async listLabels() {
|
|
77
|
+
logger.debug('Listing all labels');
|
|
78
|
+
const labels = await this.wsCommand('config/label_registry/list');
|
|
79
|
+
logger.info('Listed labels', { count: labels.length });
|
|
80
|
+
return labels;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Create a new label
|
|
84
|
+
*/
|
|
85
|
+
async createLabel(input) {
|
|
86
|
+
logger.debug('Creating label', { name: input.name });
|
|
87
|
+
const label = await this.wsCommand('config/label_registry/create', {
|
|
88
|
+
name: input.name,
|
|
89
|
+
color: input.color,
|
|
90
|
+
icon: input.icon,
|
|
91
|
+
description: input.description,
|
|
92
|
+
});
|
|
93
|
+
logger.info('Created label', { label_id: label.label_id, name: label.name });
|
|
94
|
+
return label;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Update an existing label
|
|
98
|
+
*/
|
|
99
|
+
async updateLabel(labelId, input) {
|
|
100
|
+
logger.debug('Updating label', { label_id: labelId });
|
|
101
|
+
const label = await this.wsCommand('config/label_registry/update', {
|
|
102
|
+
label_id: labelId,
|
|
103
|
+
...input,
|
|
104
|
+
});
|
|
105
|
+
logger.info('Updated label', { label_id: label.label_id });
|
|
106
|
+
return label;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Delete a label
|
|
110
|
+
*/
|
|
111
|
+
async deleteLabel(labelId) {
|
|
112
|
+
logger.debug('Deleting label', { label_id: labelId });
|
|
113
|
+
await this.wsCommand('config/label_registry/delete', { label_id: labelId });
|
|
114
|
+
logger.info('Deleted label', { label_id: labelId });
|
|
115
|
+
}
|
|
116
|
+
// ===== Entity Registry Operations =====
|
|
117
|
+
/**
|
|
118
|
+
* List all entities in the registry
|
|
119
|
+
*/
|
|
120
|
+
async listEntityRegistry() {
|
|
121
|
+
logger.debug('Listing entity registry');
|
|
122
|
+
const entities = await this.wsCommand('config/entity_registry/list');
|
|
123
|
+
logger.info('Listed entity registry', { count: entities.length });
|
|
124
|
+
return entities;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Get a single entity from the registry
|
|
128
|
+
*/
|
|
129
|
+
async getEntityRegistryEntry(entityId) {
|
|
130
|
+
logger.debug('Getting entity registry entry', { entity_id: entityId });
|
|
131
|
+
const entity = await this.wsCommand('config/entity_registry/get', {
|
|
132
|
+
entity_id: entityId,
|
|
133
|
+
});
|
|
134
|
+
return entity;
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Update an entity in the registry (including labels)
|
|
138
|
+
*/
|
|
139
|
+
async updateEntityRegistry(entityId, updates) {
|
|
140
|
+
logger.debug('Updating entity registry', { entity_id: entityId, updates });
|
|
141
|
+
const entity = await this.wsCommand('config/entity_registry/update', {
|
|
142
|
+
entity_id: entityId,
|
|
143
|
+
...updates,
|
|
144
|
+
});
|
|
145
|
+
logger.info('Updated entity registry', { entity_id: entityId });
|
|
146
|
+
return entity;
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Get entities by label
|
|
150
|
+
*/
|
|
151
|
+
async getEntitiesByLabel(labelId) {
|
|
152
|
+
logger.debug('Getting entities by label', { label_id: labelId });
|
|
153
|
+
const allEntities = await this.listEntityRegistry();
|
|
154
|
+
const filtered = allEntities.filter(e => e.labels.includes(labelId));
|
|
155
|
+
logger.info('Found entities with label', { label_id: labelId, count: filtered.length });
|
|
156
|
+
return filtered;
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Assign a label to an entity
|
|
160
|
+
*/
|
|
161
|
+
async assignLabelToEntity(entityId, labelId) {
|
|
162
|
+
logger.debug('Assigning label to entity', { entity_id: entityId, label_id: labelId });
|
|
163
|
+
const entity = await this.getEntityRegistryEntry(entityId);
|
|
164
|
+
const labels = entity.labels.includes(labelId) ? entity.labels : [...entity.labels, labelId];
|
|
165
|
+
return this.updateEntityRegistry(entityId, { labels });
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Remove a label from an entity
|
|
169
|
+
*/
|
|
170
|
+
async removeLabelFromEntity(entityId, labelId) {
|
|
171
|
+
logger.debug('Removing label from entity', { entity_id: entityId, label_id: labelId });
|
|
172
|
+
const entity = await this.getEntityRegistryEntry(entityId);
|
|
173
|
+
const labels = entity.labels.filter(l => l !== labelId);
|
|
174
|
+
return this.updateEntityRegistry(entityId, { labels });
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
//# sourceMappingURL=labels.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"labels.js","sourceRoot":"","sources":["../../src/haClient/labels.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
package/dist/localAI/index.d.ts
CHANGED