@coffeerunhobby/mcp-ha-connect 0.7.0 → 0.9.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.
Files changed (97) hide show
  1. package/.env.example +15 -39
  2. package/Dockerfile +4 -4
  3. package/README.md +22 -107
  4. package/dist/autonomic/index.d.ts +6 -0
  5. package/dist/autonomic/index.js +7 -0
  6. package/dist/autonomic/index.js.map +1 -0
  7. package/dist/autonomic/priority.d.ts +60 -0
  8. package/dist/autonomic/priority.js +97 -0
  9. package/dist/autonomic/priority.js.map +1 -0
  10. package/dist/config.d.ts +2 -1
  11. package/dist/config.js +21 -6
  12. package/dist/config.js.map +1 -1
  13. package/dist/haClient/config.d.ts +1 -0
  14. package/dist/haClient/config.js +11 -1
  15. package/dist/haClient/config.js.map +1 -1
  16. package/dist/haClient/history.d.ts +1 -0
  17. package/dist/haClient/history.js +7 -4
  18. package/dist/haClient/history.js.map +1 -1
  19. package/dist/haClient/index.d.ts +1 -0
  20. package/dist/haClient/index.js.map +1 -1
  21. package/dist/index.d.ts +1 -1
  22. package/dist/index.js +1 -2
  23. package/dist/index.js.map +1 -1
  24. package/dist/organism/index.d.ts +5 -0
  25. package/dist/organism/index.js +6 -0
  26. package/dist/organism/index.js.map +1 -0
  27. package/dist/organism/priority.d.ts +60 -0
  28. package/dist/organism/priority.js +97 -0
  29. package/dist/organism/priority.js.map +1 -0
  30. package/dist/server/auth.d.ts +20 -0
  31. package/dist/server/auth.js +74 -0
  32. package/dist/server/auth.js.map +1 -0
  33. package/dist/server/common.js +2 -1
  34. package/dist/server/common.js.map +1 -1
  35. package/dist/server/http.d.ts +1 -1
  36. package/dist/server/http.js +133 -55
  37. package/dist/server/http.js.map +1 -1
  38. package/dist/server/sse.js +1 -1
  39. package/dist/server/sse.js.map +1 -1
  40. package/dist/server/stream.js +6 -0
  41. package/dist/server/stream.js.map +1 -1
  42. package/dist/tools/common.d.ts +4 -0
  43. package/dist/tools/common.js +4 -2
  44. package/dist/tools/common.js.map +1 -1
  45. package/dist/tools/systemTools.js +4 -4
  46. package/dist/tools/systemTools.js.map +1 -1
  47. package/dist/types/config.d.ts +1 -1
  48. package/dist/types/config.js +1 -0
  49. package/dist/types/config.js.map +1 -1
  50. package/dist/utils/config-validations.d.ts +9 -1
  51. package/dist/utils/config-validations.js +29 -20
  52. package/dist/utils/config-validations.js.map +1 -1
  53. package/dist/utils/sanitize.d.ts +25 -0
  54. package/dist/utils/sanitize.js +92 -0
  55. package/dist/utils/sanitize.js.map +1 -0
  56. package/dist/version.d.ts +5 -0
  57. package/dist/version.js +6 -0
  58. package/dist/version.js.map +1 -0
  59. package/docs/CHANGELOG.md +30 -7
  60. package/docs/Quick_Start.md +215 -0
  61. package/docs/SSE_API.md +1 -1
  62. package/openapi.json +1 -1
  63. package/package.json +1 -1
  64. package/src/autonomic/index.ts +16 -0
  65. package/src/autonomic/priority.ts +109 -0
  66. package/src/config.ts +31 -7
  67. package/src/haClient/config.ts +13 -2
  68. package/src/haClient/history.ts +9 -4
  69. package/src/haClient/index.ts +1 -0
  70. package/src/index.ts +1 -2
  71. package/src/server/auth.ts +103 -0
  72. package/src/server/common.ts +2 -1
  73. package/src/server/http.ts +151 -61
  74. package/src/server/stream.ts +7 -0
  75. package/src/tools/common.ts +4 -2
  76. package/src/tools/systemTools.ts +4 -4
  77. package/src/types/config.ts +4 -1
  78. package/src/utils/config-validations.ts +29 -22
  79. package/src/version.ts +5 -0
  80. package/tests/autonomic/priority.test.ts +171 -0
  81. package/tests/bdd/configuration.spec.ts +0 -5
  82. package/tests/config.test.ts +6 -32
  83. package/tests/features/configuration.feature +0 -1
  84. package/tests/haClient/config.test.ts +33 -12
  85. package/tests/haClient/history.test.ts +58 -0
  86. package/tests/haClient/index.test.ts +1 -1
  87. package/tests/index.test.ts +5 -9
  88. package/tests/localAI/index.test.ts +1 -1
  89. package/tests/server/auth.test.ts +206 -0
  90. package/tests/server/common.test.ts +1 -1
  91. package/tests/server/http.test.ts +122 -35
  92. package/tests/server/stdio.test.ts +1 -1
  93. package/tests/server/stream.test.ts +1 -2
  94. package/tests/tools/registry.test.ts +1 -1
  95. package/tests/utils/config-validations.test.ts +69 -6
  96. package/src/server/sse.ts +0 -120
  97. package/tests/server/sse.test.ts +0 -240
package/.env.example CHANGED
@@ -73,12 +73,6 @@ MCP_SERVER_STATEFUL=false
73
73
  # Default: 3000
74
74
  MCP_HTTP_PORT=3000
75
75
 
76
- # Transport protocol: stream or sse
77
- # - stream: Modern MCP protocol (recommended)
78
- # - sse: Legacy MCP protocol with Server-Sent Events
79
- # Default: stream
80
- MCP_HTTP_TRANSPORT=stream
81
-
82
76
  # Bind address (use 0.0.0.0 to listen on all interfaces)
83
77
  # Default: 127.0.0.1 (localhost only)
84
78
  MCP_HTTP_BIND_ADDR=127.0.0.1
@@ -104,40 +98,20 @@ MCP_HTTP_ALLOW_CORS=true
104
98
  # Default: 127.0.0.1,localhost
105
99
  MCP_HTTP_ALLOWED_ORIGINS=127.0.0.1,localhost,http://mcpserver.10.0.0.18.nip.io:3000
106
100
 
107
- # =============================================================================
108
- # Usage Examples
109
- # =============================================================================
101
+ # -----------------------------------------------------------------------------
102
+ # Authentication Configuration (only when MCP_SERVER_USE_HTTP=true)
103
+ # -----------------------------------------------------------------------------
104
+
105
+ # Authentication method: none or bearer
106
+ # - none: No authentication required
107
+ # - bearer: Require Bearer token in Authorization header
108
+ # Default: none
109
+ MCP_AUTH_METHOD=none
110
110
 
111
- # Example 1: Claude Desktop (Stdio Mode)
112
- # ----------------------------------------
113
- # MCP_SERVER_USE_HTTP=false
114
- # MCP_SERVER_LOG_LEVEL=info
115
- # Then configure claude_desktop_config.json to run: node dist/index.js
116
-
117
- # Example 2: HTTP Server with Stream Transport (Recommended)
118
- # -----------------------------------------------------------
119
- # MCP_SERVER_USE_HTTP=true
120
- # MCP_HTTP_TRANSPORT=stream
121
- # MCP_HTTP_PORT=3000
122
- # MCP_HTTP_BIND_ADDR=127.0.0.1
123
- # Access at: http://mcpserver.10.0.0.18.nip.io:3000/mcp
124
-
125
- # Example 3: HTTP Server with SSE (Legacy Clients)
126
- # -------------------------------------------------
127
- # MCP_SERVER_USE_HTTP=true
128
- # MCP_HTTP_TRANSPORT=sse
129
- # MCP_HTTP_PORT=3000
130
- # Access at: http://mcpserver.10.0.0.18.nip.io:3000/sse
131
-
132
- # Example 4: Production HTTP Server
133
- # ----------------------------------
134
- # MCP_SERVER_USE_HTTP=true
135
- # MCP_SERVER_LOG_FORMAT=json
136
- # MCP_HTTP_TRANSPORT=stream
137
- # MCP_HTTP_PORT=3000
138
- # MCP_HTTP_BIND_ADDR=0.0.0.0
139
- # MCP_HTTP_ALLOWED_ORIGINS=https://your-app.com
140
- # MCP_SERVER_STATEFUL=true
111
+ # Authentication tokens (comma-separated for multiple clients)
112
+ # Required when MCP_AUTH_METHOD=bearer
113
+ # Example: MCP_AUTH_TOKEN=token1,token2,token3
114
+ # MCP_AUTH_TOKEN=your-secret-token-here
141
115
 
142
116
  # =============================================================================
143
117
  # Security Notes
@@ -147,3 +121,5 @@ MCP_HTTP_ALLOWED_ORIGINS=127.0.0.1,localhost,http://mcpserver.10.0.0.18.nip.io:3
147
121
  # - Restrict MCP_HTTP_ALLOWED_ORIGINS to trusted domains
148
122
  # - Use MCP_HTTP_BIND_ADDR=127.0.0.1 for local-only access
149
123
  # - Rotate your Home Assistant tokens periodically
124
+ # - Enable MCP_AUTH_METHOD=bearer in production for API security
125
+ # - Use unique tokens per client for better access control and audit
package/Dockerfile CHANGED
@@ -1,17 +1,17 @@
1
1
  # syntax=docker/dockerfile:1.7
2
2
 
3
- FROM node:24-bookworm-slim AS deps
3
+ FROM node:25-bookworm-slim AS deps
4
4
  WORKDIR /app
5
5
  COPY package*.json ./
6
6
  RUN npm install
7
7
 
8
- FROM node:24-bookworm-slim AS build
8
+ FROM node:25-bookworm-slim AS build
9
9
  WORKDIR /app
10
10
  COPY --from=deps /app/node_modules ./node_modules
11
11
  COPY . .
12
12
  RUN npm run build
13
13
 
14
- FROM node:24-bookworm-slim AS runtime
14
+ FROM node:25-bookworm-slim AS runtime
15
15
 
16
16
  # OCI metadata labels
17
17
  LABEL org.opencontainers.image.title="Smart HomeAssistant MCP Server"
@@ -30,4 +30,4 @@ RUN apt-get update \
30
30
  COPY package*.json ./
31
31
  RUN npm install --omit=dev
32
32
  COPY --from=build /app/dist ./dist
33
- CMD ["node", "dist/index.js"]
33
+ CMD ["node", "--experimental-quic", "dist/index.js"]
package/README.md CHANGED
@@ -5,96 +5,6 @@ A production-ready Model Context Protocol (MCP) server for Home Assistant integr
5
5
  [![npm version](https://badge.fury.io/js/%40coffeerunhobby%2Fmcp-ha-connect.svg)](https://www.npmjs.com/package/@coffeerunhobby/mcp-ha-connect)
6
6
  [![Docker](https://img.shields.io/badge/docker-ghcr.io-blue)](https://github.com/coffeerunhobby/mcp-ha-connect/pkgs/container/mcp-ha-connect)
7
7
 
8
- ## Quick Start
9
-
10
- Choose your preferred installation method:
11
-
12
- ### Option 1: npx (Recommended - No Installation Required)
13
-
14
- ```json
15
- {
16
- "mcpServers": {
17
- "homeassistant": {
18
- "command": "npx",
19
- "args": ["-y", "@coffeerunhobby/mcp-ha-connect"],
20
- "env": {
21
- "HA_URL": "http://homeassistant.10.0.0.19.nip.io:8123",
22
- "HA_TOKEN": "your_long_lived_access_token"
23
- }
24
- }
25
- }
26
- }
27
- ```
28
-
29
- ### Option 2: Global npm Install
30
-
31
- ```bash
32
- npm install -g @coffeerunhobby/mcp-ha-connect
33
- ```
34
-
35
- ```json
36
- {
37
- "mcpServers": {
38
- "homeassistant": {
39
- "command": "mcp-ha-connect",
40
- "env": {
41
- "HA_URL": "http://homeassistant.10.0.0.19.nip.io:8123",
42
- "HA_TOKEN": "your_token"
43
- }
44
- }
45
- }
46
- }
47
- ```
48
-
49
- ### Option 3: Docker
50
-
51
- ```json
52
- {
53
- "mcpServers": {
54
- "homeassistant": {
55
- "command": "docker",
56
- "args": [
57
- "run",
58
- "--rm",
59
- "-i",
60
- "-e", "HA_URL=http://host.docker.internal:8123",
61
- "-e", "HA_TOKEN=your_token",
62
- "ghcr.io/coffeerunhobby/mcp-ha-connect:latest"
63
- ]
64
- }
65
- }
66
- }
67
- ```
68
-
69
- ### Option 4: Local Development
70
-
71
- ```json
72
- {
73
- "mcpServers": {
74
- "homeassistant": {
75
- "command": "node",
76
- "args": ["C:\\workspace\\mcp-homeassistant\\dist\\index.js"],
77
- "env": {
78
- "HA_URL": "http://homeassistant.10.0.0.19.nip.io:8123",
79
- "HA_TOKEN": "your_token"
80
- }
81
- }
82
- }
83
- }
84
- ```
85
-
86
- ## Configuration Locations
87
-
88
- ### Claude Desktop
89
- - **Windows:** `%APPDATA%\Claude\claude_desktop_config.json`
90
- - **macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json`
91
- - **Linux:** `~/.config/Claude/claude_desktop_config.json`
92
-
93
- ### LM Studio
94
- - **Windows:** `%USERPROFILE%\.lmstudio\config.json`
95
- - **macOS:** `~/Library/Application Support/LM Studio/config.json`
96
- - **Linux:** `~/.config/lmstudio/config.json`
97
-
98
8
  ## Autonomous Safety Monitoring System
99
9
 
100
10
  1. **JS Pre-filter**: Tier A triggers + basic anomaly detection
@@ -106,21 +16,23 @@ npm install -g @coffeerunhobby/mcp-ha-connect
106
16
 
107
17
  See [docs/SSE_API.md](docs/SSE_API.md) for complete documentation of the SSE system.
108
18
 
19
+ See [docs/QUICK_START.md](docs/QUICK_START.md) for Docker, HTTP server mode, n8n integration, and more installation options.
20
+
109
21
  ## Key Features
110
22
 
111
23
  ### Core Functionality
112
24
 
113
- - **Smart Device Control**
114
- - Lights: Brightness, color temperature, RGB color, transitions
115
- - Climate: Temperature, HVAC modes, fan modes, humidity
116
- - Covers: Position and tilt control
117
- - Switches: On/off control
118
- - Sensors & Contacts: State monitoring
119
- - Media Players: Playback control, volume, source selection
120
- - Fans: Speed, oscillation, direction
121
- - Locks: Lock/unlock control
122
- - Vacuums: Start, stop, return to base
123
- - Cameras: Motion detection, snapshots
25
+ - Smart Device Control
26
+ - Lights: Brightness, color temperature, RGB color, transitions
27
+ - Climate: Temperature, HVAC modes, fan modes, humidity
28
+ - Covers: Position and tilt control
29
+ - Switches: On/off control
30
+ - Sensors & Contacts: State monitoring
31
+ - Media Players: Playback control, volume, source selection
32
+ - Fans: Speed, oscillation, direction
33
+ - Locks: Lock/unlock control
34
+ - Vacuums: Start, stop, return to base
35
+ - Cameras: Motion detection, snapshots
124
36
 
125
37
  ### Automation Management
126
38
 
@@ -140,7 +52,7 @@ See [docs/SSE_API.md](docs/SSE_API.md) for complete documentation of the SSE sys
140
52
  - Service call support
141
53
  - Advanced entity search
142
54
  - AI-powered sensor analysis with Ollama
143
- - Multiple transport modes (stdio, SSE, Streamable HTTP)
55
+ - Multiple transport modes (stdio, Streamable HTTP)
144
56
  - HTTP server with health checks
145
57
  - CORS support for browser-based clients
146
58
  - Structured logging with pino (plain, JSON, GCP-JSON formats)
@@ -274,7 +186,6 @@ See [docs/SSE_API.md](docs/SSE_API.md) for complete documentation of the SSE sys
274
186
  | Variable | Default | Description |
275
187
  |----------|---------|-------------|
276
188
  | `MCP_HTTP_PORT` | `3000` | HTTP server port |
277
- | `MCP_HTTP_TRANSPORT` | `stream` | Transport: `stream` or `sse` |
278
189
  | `MCP_HTTP_BIND_ADDR` | `127.0.0.1` | Bind address |
279
190
  | `MCP_HTTP_PATH` | `/mcp` | MCP endpoint path |
280
191
  | `MCP_HTTP_ENABLE_HEALTHCHECK` | `true` | Enable health check endpoint |
@@ -297,6 +208,13 @@ See [docs/SSE_API.md](docs/SSE_API.md) for complete documentation of the SSE sys
297
208
  | `MCP_RATE_LIMIT_WINDOW_MS` | `60000` | Rate limit window (ms) |
298
209
  | `MCP_RATE_LIMIT_MAX_REQUESTS` | `100` | Max requests per window |
299
210
 
211
+ ### Optional - Authentication
212
+
213
+ | Variable | Default | Description |
214
+ |----------|---------|-------------|
215
+ | `MCP_AUTH_METHOD` | `none` | Auth method: `none` or `bearer` |
216
+ | `MCP_AUTH_TOKEN` | - | Bearer token(s), can be comma-separated for multiple clients |
217
+
300
218
  ### Optional - AI Provider
301
219
 
302
220
  | Variable | Default | Description |
@@ -657,10 +575,6 @@ MIT
657
575
 
658
576
  Coffee Run Hobby ([github.com/coffeerunhobby](https://github.com/coffeerunhobby))
659
577
 
660
- ## Version
661
-
662
- 0.7.0
663
-
664
578
  ## Links
665
579
 
666
580
  - **GitHub**: [https://github.com/coffeerunhobby/mcp-ha-connect](https://github.com/coffeerunhobby/mcp-ha-connect)
@@ -669,6 +583,7 @@ Coffee Run Hobby ([github.com/coffeerunhobby](https://github.com/coffeerunhobby)
669
583
 
670
584
  ## Documentation
671
585
 
586
+ - [Quick Start Guide](docs/QUICK_START.md)
672
587
  - [Changelog](docs/CHANGELOG.md)
673
588
  - [Local Client Configuration](docs/LOCAL_CLIENT.md)
674
589
  - [SSE Event API](docs/SSE_API.md)
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Autonomic Module
3
+ * Implements the autonomic nervous system architecture for home automation
4
+ * with tiered response system (reflex, supervised, informational)
5
+ */
6
+ export { Priority, PriorityMask, matchesPriority, getPriorityName, getPriorityTier, bypassesQuietHours, requiresImmediateAction, requiresApproval, } from './priority.js';
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Autonomic Module
3
+ * Implements the autonomic nervous system architecture for home automation
4
+ * with tiered response system (reflex, supervised, informational)
5
+ */
6
+ export { Priority, PriorityMask, matchesPriority, getPriorityName, getPriorityTier, bypassesQuietHours, requiresImmediateAction, requiresApproval, } from './priority.js';
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/autonomic/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,QAAQ,EACR,YAAY,EACZ,eAAe,EACf,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,uBAAuB,EACvB,gBAAgB,GACjB,MAAM,eAAe,CAAC"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Autonomic Priority System
3
+ * Uses powers of 2 for bitwise operations - can combine with OR, check with AND
4
+ *
5
+ * Based on MOQT priority model adapted for home automation tiers:
6
+ * - REFLEX (Tier 0): Immediate autonomous response, no AI delay
7
+ * - SUPERVISED (Tier 1): Quick decision with timeout + default action
8
+ * - INFORMATIONAL (Tier 2): Passive awareness, respects quiet hours
9
+ * - LOG: Debug/metrics, lowest priority
10
+ */
11
+ /**
12
+ * Priority levels as powers of 2 for bitwise operations
13
+ */
14
+ export declare enum Priority {
15
+ /** Tier 0: Immediate reflex - smoke, gas, intrusion. No confirmation needed. */
16
+ REFLEX = 1,
17
+ /** Tier 1: Supervised action - requires approval within timeout window */
18
+ SUPERVISED = 32,
19
+ /** Tier 2: Informational alert - passive, respects quiet hours */
20
+ INFORMATIONAL = 64,
21
+ /** Logging/metrics - lowest priority */
22
+ LOG = 128
23
+ }
24
+ /**
25
+ * Priority masks for filtering
26
+ */
27
+ export declare const PriorityMask: {
28
+ /** All critical priorities (REFLEX only) */
29
+ readonly CRITICAL: Priority.REFLEX;
30
+ /** Action priorities (REFLEX + SUPERVISED) */
31
+ readonly ACTIONABLE: number;
32
+ /** User-facing priorities (everything except LOG) */
33
+ readonly USER_FACING: number;
34
+ /** All priorities */
35
+ readonly ALL: number;
36
+ };
37
+ /**
38
+ * Check if a priority matches a mask
39
+ */
40
+ export declare function matchesPriority(priority: Priority, mask: number): boolean;
41
+ /**
42
+ * Get human-readable priority name
43
+ */
44
+ export declare function getPriorityName(priority: Priority): string;
45
+ /**
46
+ * Get tier number from priority
47
+ */
48
+ export declare function getPriorityTier(priority: Priority): 0 | 1 | 2 | 3;
49
+ /**
50
+ * Check if priority should bypass quiet hours
51
+ */
52
+ export declare function bypassesQuietHours(priority: Priority): boolean;
53
+ /**
54
+ * Check if priority requires immediate action (no AI delay)
55
+ */
56
+ export declare function requiresImmediateAction(priority: Priority): boolean;
57
+ /**
58
+ * Check if priority requires user approval
59
+ */
60
+ export declare function requiresApproval(priority: Priority): boolean;
@@ -0,0 +1,97 @@
1
+ /**
2
+ * Autonomic Priority System
3
+ * Uses powers of 2 for bitwise operations - can combine with OR, check with AND
4
+ *
5
+ * Based on MOQT priority model adapted for home automation tiers:
6
+ * - REFLEX (Tier 0): Immediate autonomous response, no AI delay
7
+ * - SUPERVISED (Tier 1): Quick decision with timeout + default action
8
+ * - INFORMATIONAL (Tier 2): Passive awareness, respects quiet hours
9
+ * - LOG: Debug/metrics, lowest priority
10
+ */
11
+ /**
12
+ * Priority levels as powers of 2 for bitwise operations
13
+ */
14
+ export var Priority;
15
+ (function (Priority) {
16
+ /** Tier 0: Immediate reflex - smoke, gas, intrusion. No confirmation needed. */
17
+ Priority[Priority["REFLEX"] = 1] = "REFLEX";
18
+ /** Tier 1: Supervised action - requires approval within timeout window */
19
+ Priority[Priority["SUPERVISED"] = 32] = "SUPERVISED";
20
+ /** Tier 2: Informational alert - passive, respects quiet hours */
21
+ Priority[Priority["INFORMATIONAL"] = 64] = "INFORMATIONAL";
22
+ /** Logging/metrics - lowest priority */
23
+ Priority[Priority["LOG"] = 128] = "LOG";
24
+ })(Priority || (Priority = {}));
25
+ /**
26
+ * Priority masks for filtering
27
+ */
28
+ export const PriorityMask = {
29
+ /** All critical priorities (REFLEX only) */
30
+ CRITICAL: Priority.REFLEX,
31
+ /** Action priorities (REFLEX + SUPERVISED) */
32
+ ACTIONABLE: Priority.REFLEX | Priority.SUPERVISED,
33
+ /** User-facing priorities (everything except LOG) */
34
+ USER_FACING: Priority.REFLEX | Priority.SUPERVISED | Priority.INFORMATIONAL,
35
+ /** All priorities */
36
+ ALL: Priority.REFLEX | Priority.SUPERVISED | Priority.INFORMATIONAL | Priority.LOG,
37
+ };
38
+ /**
39
+ * Check if a priority matches a mask
40
+ */
41
+ export function matchesPriority(priority, mask) {
42
+ return (priority & mask) !== 0;
43
+ }
44
+ /**
45
+ * Get human-readable priority name
46
+ */
47
+ export function getPriorityName(priority) {
48
+ switch (priority) {
49
+ case Priority.REFLEX:
50
+ return 'reflex';
51
+ case Priority.SUPERVISED:
52
+ return 'supervised';
53
+ case Priority.INFORMATIONAL:
54
+ return 'informational';
55
+ case Priority.LOG:
56
+ return 'log';
57
+ default:
58
+ return 'unknown';
59
+ }
60
+ }
61
+ /**
62
+ * Get tier number from priority
63
+ */
64
+ export function getPriorityTier(priority) {
65
+ switch (priority) {
66
+ case Priority.REFLEX:
67
+ return 0;
68
+ case Priority.SUPERVISED:
69
+ return 1;
70
+ case Priority.INFORMATIONAL:
71
+ return 2;
72
+ case Priority.LOG:
73
+ return 3;
74
+ default:
75
+ return 3;
76
+ }
77
+ }
78
+ /**
79
+ * Check if priority should bypass quiet hours
80
+ */
81
+ export function bypassesQuietHours(priority) {
82
+ // Only REFLEX bypasses quiet hours
83
+ return priority === Priority.REFLEX;
84
+ }
85
+ /**
86
+ * Check if priority requires immediate action (no AI delay)
87
+ */
88
+ export function requiresImmediateAction(priority) {
89
+ return priority === Priority.REFLEX;
90
+ }
91
+ /**
92
+ * Check if priority requires user approval
93
+ */
94
+ export function requiresApproval(priority) {
95
+ return priority === Priority.SUPERVISED;
96
+ }
97
+ //# sourceMappingURL=priority.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"priority.js","sourceRoot":"","sources":["../../src/autonomic/priority.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH;;GAEG;AACH,MAAM,CAAN,IAAY,QAYX;AAZD,WAAY,QAAQ;IAClB,gFAAgF;IAChF,2CAAU,CAAA;IAEV,0EAA0E;IAC1E,oDAAe,CAAA;IAEf,kEAAkE;IAClE,0DAAkB,CAAA;IAElB,wCAAwC;IACxC,uCAAS,CAAA;AACX,CAAC,EAZW,QAAQ,KAAR,QAAQ,QAYnB;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,4CAA4C;IAC5C,QAAQ,EAAE,QAAQ,CAAC,MAAM;IAEzB,8CAA8C;IAC9C,UAAU,EAAE,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,UAAU;IAEjD,qDAAqD;IACrD,WAAW,EAAE,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,UAAU,GAAG,QAAQ,CAAC,aAAa;IAE3E,qBAAqB;IACrB,GAAG,EAAE,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,UAAU,GAAG,QAAQ,CAAC,aAAa,GAAG,QAAQ,CAAC,GAAG;CAC1E,CAAC;AAEX;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,QAAkB,EAAE,IAAY;IAC9D,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;AACjC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,QAAkB;IAChD,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,QAAQ,CAAC,MAAM;YAClB,OAAO,QAAQ,CAAC;QAClB,KAAK,QAAQ,CAAC,UAAU;YACtB,OAAO,YAAY,CAAC;QACtB,KAAK,QAAQ,CAAC,aAAa;YACzB,OAAO,eAAe,CAAC;QACzB,KAAK,QAAQ,CAAC,GAAG;YACf,OAAO,KAAK,CAAC;QACf;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,QAAkB;IAChD,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,QAAQ,CAAC,MAAM;YAClB,OAAO,CAAC,CAAC;QACX,KAAK,QAAQ,CAAC,UAAU;YACtB,OAAO,CAAC,CAAC;QACX,KAAK,QAAQ,CAAC,aAAa;YACzB,OAAO,CAAC,CAAC;QACX,KAAK,QAAQ,CAAC,GAAG;YACf,OAAO,CAAC,CAAC;QACX;YACE,OAAO,CAAC,CAAC;IACb,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,QAAkB;IACnD,mCAAmC;IACnC,OAAO,QAAQ,KAAK,QAAQ,CAAC,MAAM,CAAC;AACtC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB,CAAC,QAAkB;IACxD,OAAO,QAAQ,KAAK,QAAQ,CAAC,MAAM,CAAC;AACtC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,QAAkB;IACjD,OAAO,QAAQ,KAAK,QAAQ,CAAC,UAAU,CAAC;AAC1C,CAAC"}
package/dist/config.d.ts CHANGED
@@ -14,7 +14,6 @@ export interface EnvironmentConfig {
14
14
  useHttp: boolean;
15
15
  stateful: boolean;
16
16
  httpPort?: number;
17
- httpTransport: 'stream' | 'sse';
18
17
  httpBindAddr?: string;
19
18
  httpPath?: string;
20
19
  httpEnableHealthcheck: boolean;
@@ -26,6 +25,8 @@ export interface EnvironmentConfig {
26
25
  rateLimitEnabled: boolean;
27
26
  rateLimitWindowMs: number;
28
27
  rateLimitMaxRequests: number;
28
+ authMethod: 'none' | 'bearer';
29
+ authToken?: Set<string>;
29
30
  }
30
31
  export declare function loadConfig(env?: NodeJS.ProcessEnv): EnvironmentConfig;
31
32
  export declare function validateConfig(config: EnvironmentConfig): void;
package/dist/config.js CHANGED
@@ -43,7 +43,6 @@ const envSchema = z
43
43
  stateful: createBooleanStringSchema(false),
44
44
  // MCP Server HTTP Configuration
45
45
  httpPort: numericStringSchema,
46
- httpTransport: z.enum(['stream', 'sse']).optional().default('stream'),
47
46
  httpBindAddr: z.string().optional(),
48
47
  httpPath: z.string().optional(),
49
48
  httpEnableHealthcheck: createBooleanStringSchema(true),
@@ -57,6 +56,9 @@ const envSchema = z
57
56
  rateLimitEnabled: createBooleanStringSchema(true),
58
57
  rateLimitWindowMs: numericStringSchema,
59
58
  rateLimitMaxRequests: numericStringSchema,
59
+ // Authentication Configuration
60
+ authMethod: z.enum(['none', 'bearer']).optional().default('none'),
61
+ authToken: listStringSchema,
60
62
  })
61
63
  .refine((data) => {
62
64
  // Validate httpBindAddr if provided
@@ -84,6 +86,16 @@ const envSchema = z
84
86
  message: `MCP_HTTP_ALLOWED_ORIGINS contains invalid origin: ${invalidOrigin}`,
85
87
  path: ['httpAllowedOrigins'],
86
88
  };
89
+ })
90
+ .refine((data) => {
91
+ // If bearer auth is enabled, token must be provided
92
+ if (data.authMethod === 'bearer' && !data.authToken) {
93
+ return false;
94
+ }
95
+ return true;
96
+ }, {
97
+ message: 'MCP_AUTH_TOKEN is required when MCP_AUTH_METHOD is "bearer"',
98
+ path: ['authToken'],
87
99
  });
88
100
  export function loadConfig(env = process.env) {
89
101
  const parsed = envSchema.safeParse({
@@ -105,7 +117,6 @@ export function loadConfig(env = process.env) {
105
117
  stateful: env.MCP_SERVER_STATEFUL,
106
118
  // MCP Server HTTP Configuration
107
119
  httpPort: env.MCP_HTTP_PORT,
108
- httpTransport: env.MCP_HTTP_TRANSPORT,
109
120
  httpBindAddr: env.MCP_HTTP_BIND_ADDR,
110
121
  httpPath: env.MCP_HTTP_PATH,
111
122
  httpEnableHealthcheck: env.MCP_HTTP_ENABLE_HEALTHCHECK,
@@ -119,14 +130,16 @@ export function loadConfig(env = process.env) {
119
130
  rateLimitEnabled: env.MCP_RATE_LIMIT_ENABLED,
120
131
  rateLimitWindowMs: env.MCP_RATE_LIMIT_WINDOW_MS,
121
132
  rateLimitMaxRequests: env.MCP_RATE_LIMIT_MAX_REQUESTS,
133
+ // Authentication Configuration
134
+ authMethod: env.MCP_AUTH_METHOD,
135
+ authToken: env.MCP_AUTH_TOKEN,
122
136
  });
123
137
  if (!parsed.success) {
124
138
  const messages = parsed.error.issues.map((issue) => issue.message);
125
139
  throw new Error(`Invalid environment configuration:\n${messages.join('\n')}`);
126
140
  }
127
- // Determine default httpPath based on transport if not explicitly set
128
- const defaultPath = parsed.data.httpTransport === 'sse' ? '/sse' : '/mcp';
129
- const httpPath = parsed.data.httpPath ?? defaultPath;
141
+ // Default MCP endpoint path
142
+ const httpPath = parsed.data.httpPath ?? '/mcp';
130
143
  // Set default bind address and allowed origins for security
131
144
  const httpBindAddr = parsed.data.httpBindAddr ?? '127.0.0.1';
132
145
  let httpAllowedOrigins = parsed.data.httpAllowedOrigins ?? ['127.0.0.1', 'localhost'];
@@ -154,7 +167,6 @@ export function loadConfig(env = process.env) {
154
167
  stateful: parsed.data.stateful,
155
168
  // MCP Server HTTP Configuration
156
169
  httpPort: parsed.data.httpPort,
157
- httpTransport: parsed.data.httpTransport,
158
170
  httpBindAddr,
159
171
  httpPath,
160
172
  httpEnableHealthcheck: parsed.data.httpEnableHealthcheck,
@@ -168,6 +180,9 @@ export function loadConfig(env = process.env) {
168
180
  rateLimitEnabled: parsed.data.rateLimitEnabled,
169
181
  rateLimitWindowMs: parsed.data.rateLimitWindowMs ?? 60000,
170
182
  rateLimitMaxRequests: parsed.data.rateLimitMaxRequests ?? 100,
183
+ // Authentication Configuration
184
+ authMethod: parsed.data.authMethod,
185
+ authToken: parsed.data.authToken ? new Set(parsed.data.authToken) : undefined,
171
186
  };
172
187
  }
173
188
  // Legacy compatibility functions
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -22,6 +22,7 @@ export declare class ConfigOperations {
22
22
  }>;
23
23
  /**
24
24
  * Get Home Assistant version and configuration info
25
+ * Returns only safe, public information (filters out internal config details)
25
26
  */
26
27
  getVersion(): Promise<HaVersion>;
27
28
  }
@@ -27,12 +27,22 @@ export class ConfigOperations {
27
27
  }
28
28
  /**
29
29
  * Get Home Assistant version and configuration info
30
+ * Returns only safe, public information (filters out internal config details)
30
31
  */
31
32
  async getVersion() {
32
33
  logger.debug('Fetching Home Assistant version');
33
34
  const config = await this.request.get('/config');
34
35
  logger.info('Fetched version', { version: config.version });
35
- return config;
36
+ // Return only safe, public information
37
+ // Excludes: components, allowlist_external_dirs, allowlist_external_urls,
38
+ // config_dir, whitelist_external_dirs, safe_mode, state, external_url, internal_url,
39
+ // currency, country, language, latitude, longitude, elevation
40
+ return {
41
+ version: config.version,
42
+ location_name: config.location_name,
43
+ time_zone: config.time_zone,
44
+ unit_system: config.unit_system,
45
+ };
36
46
  }
37
47
  }
38
48
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/haClient/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAG5C;;GAEG;AACH,MAAM,OAAO,gBAAgB;IACE;IAA7B,YAA6B,OAAuB;QAAvB,YAAO,GAAP,OAAO,CAAgB;IAAG,CAAC;IAExD;;OAEG;IACH,KAAK,CAAC,SAAS;QACb,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAChC,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAA0B,SAAS,CAAC,CAAC;IACpE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ;QACZ,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;QACpC,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAsB,GAAG,CAAC,CAAC;IAC1D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU;QACd,MAAM,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAY,SAAS,CAAC,CAAC;QAC5D,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QAC5D,OAAO,MAAM,CAAC;IAChB,CAAC;CACF"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/haClient/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAG5C;;GAEG;AACH,MAAM,OAAO,gBAAgB;IACE;IAA7B,YAA6B,OAAuB;QAAvB,YAAO,GAAP,OAAO,CAAgB;IAAG,CAAC;IAExD;;OAEG;IACH,KAAK,CAAC,SAAS;QACb,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAChC,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAA0B,SAAS,CAAC,CAAC;IACpE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ;QACZ,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;QACpC,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAsB,GAAG,CAAC,CAAC;IAC1D,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,UAAU;QACd,MAAM,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAA0B,SAAS,CAAC,CAAC;QAC1E,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QAE5D,uCAAuC;QACvC,0EAA0E;QAC1E,qFAAqF;QACrF,8DAA8D;QAC9D,OAAO;YACL,OAAO,EAAE,MAAM,CAAC,OAAiB;YACjC,aAAa,EAAE,MAAM,CAAC,aAAmC;YACzD,SAAS,EAAE,MAAM,CAAC,SAA+B;YACjD,WAAW,EAAE,MAAM,CAAC,WAAiD;SACtE,CAAC;IACJ,CAAC;CACF"}
@@ -21,5 +21,6 @@ export declare class HistoryOperations {
21
21
  getSystemLog(options?: {
22
22
  hours?: number;
23
23
  entity_id?: string;
24
+ limit?: number;
24
25
  }): Promise<LogbookEntry[]>;
25
26
  }