@owine/unifi-protect-mcp 2.8.3 → 2.10.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 +19 -9
- package/dist/schemas/devices.d.ts +78 -78
- package/package.json +7 -6
package/README.md
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
# UniFi Protect MCP Server
|
|
2
2
|
|
|
3
|
-
An MCP (Model Context Protocol) server that exposes UniFi Protect's Integration REST API as tools for Claude Code and other MCP clients. Aligned with UniFi Protect API **7.1.
|
|
3
|
+
An MCP (Model Context Protocol) server that exposes UniFi Protect's Integration REST API as tools for Claude Code and other MCP clients. Aligned with UniFi Protect API **7.1.83** — 73 tools covering cameras, lights, sensors, chimes, viewers, sirens, fobs, relays, speakers, bridges, link stations, alarm hubs, arm profiles, live views, files, users, NVR status, and WebSocket subscriptions.
|
|
4
4
|
|
|
5
5
|
## Prerequisites
|
|
6
6
|
|
|
7
|
-
- Node.js
|
|
7
|
+
- Node.js 22.x (22.13 or newer) or 24.x — see `engines` in `package.json`
|
|
8
8
|
- A UniFi Protect system with the Integration API enabled
|
|
9
9
|
- An API key generated from your UniFi Protect console
|
|
10
10
|
|
|
@@ -27,10 +27,13 @@ If you prefer to build locally:
|
|
|
27
27
|
```bash
|
|
28
28
|
git clone https://github.com/owine/unifi-protect-mcp.git
|
|
29
29
|
cd unifi-protect-mcp
|
|
30
|
-
|
|
31
|
-
|
|
30
|
+
corepack enable # provides pnpm at the version pinned in package.json
|
|
31
|
+
pnpm install
|
|
32
|
+
pnpm run build
|
|
32
33
|
```
|
|
33
34
|
|
|
35
|
+
This project uses pnpm — `npm install` ignores `pnpm-lock.yaml` and may resolve different dependency versions than CI.
|
|
36
|
+
|
|
34
37
|
Then add to Claude Code:
|
|
35
38
|
|
|
36
39
|
```bash
|
|
@@ -224,14 +227,21 @@ This server provides layered safety controls for responsible operation:
|
|
|
224
227
|
|
|
225
228
|
## Development
|
|
226
229
|
|
|
230
|
+
The Node version used for development is pinned in `.nvmrc`. With [fnm](https://github.com/Schniz/fnm) installed, `fnm use` reads it automatically on `cd`.
|
|
231
|
+
|
|
227
232
|
```bash
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
+
pnpm run build # Compile TypeScript
|
|
234
|
+
pnpm start # Run the server
|
|
235
|
+
pnpm run typecheck # Type-check without emitting
|
|
236
|
+
pnpm run lint # ESLint
|
|
237
|
+
pnpm run lint:fix # ESLint with auto-fix
|
|
238
|
+
pnpm test # Run all tests (vitest)
|
|
239
|
+
pnpm run test:watch # Run tests in watch mode
|
|
240
|
+
pnpm run test:coverage # Run tests with coverage
|
|
233
241
|
```
|
|
234
242
|
|
|
243
|
+
Git hooks are managed by [lefthook](https://github.com/evilmartians/lefthook) — `pnpm exec lefthook install` enables them. Pre-commit runs ESLint on staged files and a full typecheck, so fnm and pnpm both need to be on your PATH.
|
|
244
|
+
|
|
235
245
|
### Commit conventions
|
|
236
246
|
|
|
237
247
|
This project uses [conventional commits](https://www.conventionalcommits.org/) and [release-please](https://github.com/googleapis/release-please) for automated releases:
|
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
export declare const lightSchema: import("zod").ZodObject<{
|
|
2
|
+
id: import("zod").ZodOptional<import("zod").ZodString>;
|
|
3
|
+
modelKey: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
4
|
+
name: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
5
|
+
mac: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
6
|
+
state: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
2
7
|
lightModeSettings: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
3
8
|
lightDeviceSettings: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
4
9
|
isDark: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
@@ -7,13 +12,13 @@ export declare const lightSchema: import("zod").ZodObject<{
|
|
|
7
12
|
lastMotion: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
8
13
|
isPirMotionDetected: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
9
14
|
camera: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
15
|
+
}, import("zod/v4/core").$loose>;
|
|
16
|
+
export declare const sensorSchema: import("zod").ZodObject<{
|
|
10
17
|
id: import("zod").ZodOptional<import("zod").ZodString>;
|
|
11
18
|
modelKey: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
12
19
|
name: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
13
20
|
mac: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
14
21
|
state: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
15
|
-
}, import("zod/v4/core").$loose>;
|
|
16
|
-
export declare const sensorSchema: import("zod").ZodObject<{
|
|
17
22
|
mountType: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
18
23
|
batteryStatus: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
19
24
|
stats: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
@@ -36,110 +41,110 @@ export declare const sensorSchema: import("zod").ZodObject<{
|
|
|
36
41
|
leakSettings: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
37
42
|
tamperingDetectedAt: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
38
43
|
wirelessConnectionState: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
44
|
+
}, import("zod/v4/core").$loose>;
|
|
45
|
+
export declare const chimeSchema: import("zod").ZodObject<{
|
|
39
46
|
id: import("zod").ZodOptional<import("zod").ZodString>;
|
|
40
47
|
modelKey: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
41
48
|
name: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
42
49
|
mac: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
43
50
|
state: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
44
|
-
}, import("zod/v4/core").$loose>;
|
|
45
|
-
export declare const chimeSchema: import("zod").ZodObject<{
|
|
46
51
|
cameraIds: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
47
52
|
ringSettings: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
53
|
+
}, import("zod/v4/core").$loose>;
|
|
54
|
+
export declare const viewerSchema: import("zod").ZodObject<{
|
|
48
55
|
id: import("zod").ZodOptional<import("zod").ZodString>;
|
|
49
56
|
modelKey: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
50
57
|
name: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
51
58
|
mac: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
52
59
|
state: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
53
|
-
}, import("zod/v4/core").$loose>;
|
|
54
|
-
export declare const viewerSchema: import("zod").ZodObject<{
|
|
55
60
|
liveview: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
56
61
|
streamLimit: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
62
|
+
}, import("zod/v4/core").$loose>;
|
|
63
|
+
export declare const sirenSchema: import("zod").ZodObject<{
|
|
57
64
|
id: import("zod").ZodOptional<import("zod").ZodString>;
|
|
58
65
|
modelKey: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
59
66
|
name: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
60
67
|
mac: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
61
68
|
state: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
62
|
-
}, import("zod/v4/core").$loose>;
|
|
63
|
-
export declare const sirenSchema: import("zod").ZodObject<{
|
|
64
69
|
volume: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
65
70
|
ledSettings: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
66
71
|
sirenStatus: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
67
72
|
connectionType: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
68
73
|
wirelessConnectionState: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
74
|
+
}, import("zod/v4/core").$loose>;
|
|
75
|
+
export declare const fobSchema: import("zod").ZodObject<{
|
|
69
76
|
id: import("zod").ZodOptional<import("zod").ZodString>;
|
|
70
77
|
modelKey: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
71
78
|
name: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
72
79
|
mac: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
73
80
|
state: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
74
|
-
}, import("zod/v4/core").$loose>;
|
|
75
|
-
export declare const fobSchema: import("zod").ZodObject<{
|
|
76
81
|
awayState: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
77
82
|
buttonLabels: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
78
83
|
featureFlags: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
79
84
|
wirelessConnectionState: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
85
|
+
}, import("zod/v4/core").$loose>;
|
|
86
|
+
export declare const relaySchema: import("zod").ZodObject<{
|
|
80
87
|
id: import("zod").ZodOptional<import("zod").ZodString>;
|
|
81
88
|
modelKey: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
82
89
|
name: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
83
90
|
mac: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
84
91
|
state: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
85
|
-
}, import("zod/v4/core").$loose>;
|
|
86
|
-
export declare const relaySchema: import("zod").ZodObject<{
|
|
87
92
|
ledSettings: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
88
93
|
outputs: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
89
94
|
inputs: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
90
95
|
wirelessConnectionState: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
96
|
+
}, import("zod/v4/core").$loose>;
|
|
97
|
+
export declare const speakerSchema: import("zod").ZodObject<{
|
|
91
98
|
id: import("zod").ZodOptional<import("zod").ZodString>;
|
|
92
99
|
modelKey: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
93
100
|
name: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
94
101
|
mac: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
95
102
|
state: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
96
|
-
}, import("zod/v4/core").$loose>;
|
|
97
|
-
export declare const speakerSchema: import("zod").ZodObject<{
|
|
98
103
|
volume: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
99
104
|
micVolume: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
100
105
|
isMicEnabled: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
101
106
|
speakerState: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
102
107
|
featureFlags: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
108
|
+
}, import("zod/v4/core").$loose>;
|
|
109
|
+
export declare const bridgeSchema: import("zod").ZodObject<{
|
|
103
110
|
id: import("zod").ZodOptional<import("zod").ZodString>;
|
|
104
111
|
modelKey: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
105
112
|
name: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
106
113
|
mac: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
107
114
|
state: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
108
|
-
}, import("zod/v4/core").$loose>;
|
|
109
|
-
export declare const bridgeSchema: import("zod").ZodObject<{
|
|
110
115
|
platform: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
111
116
|
clients: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
112
117
|
maxClients: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
118
|
+
}, import("zod/v4/core").$loose>;
|
|
119
|
+
export declare const linkStationSchema: import("zod").ZodObject<{
|
|
113
120
|
id: import("zod").ZodOptional<import("zod").ZodString>;
|
|
114
121
|
modelKey: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
115
122
|
name: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
116
123
|
mac: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
117
124
|
state: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
118
|
-
}, import("zod/v4/core").$loose>;
|
|
119
|
-
export declare const linkStationSchema: import("zod").ZodObject<{
|
|
120
125
|
isAlarmHub: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
121
126
|
ledSettings: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
122
127
|
lastEvent: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
123
128
|
alarmHub: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
129
|
+
}, import("zod/v4/core").$loose>;
|
|
130
|
+
export declare const alarmHubSchema: import("zod").ZodObject<{
|
|
124
131
|
id: import("zod").ZodOptional<import("zod").ZodString>;
|
|
125
132
|
modelKey: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
126
133
|
name: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
127
134
|
mac: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
128
135
|
state: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
129
|
-
}, import("zod/v4/core").$loose>;
|
|
130
|
-
export declare const alarmHubSchema: import("zod").ZodObject<{
|
|
131
136
|
isAlarmHub: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
132
137
|
ledSettings: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
133
138
|
lastEvent: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
134
139
|
alarmHub: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
135
|
-
id: import("zod").ZodOptional<import("zod").ZodString>;
|
|
136
|
-
modelKey: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
137
|
-
name: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
138
|
-
mac: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
139
|
-
state: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
140
140
|
}, import("zod/v4/core").$loose>;
|
|
141
141
|
export declare const DEVICE_SCHEMAS: {
|
|
142
142
|
readonly light: import("zod").ZodObject<{
|
|
143
|
+
id: import("zod").ZodOptional<import("zod").ZodString>;
|
|
144
|
+
modelKey: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
145
|
+
name: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
146
|
+
mac: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
147
|
+
state: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
143
148
|
lightModeSettings: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
144
149
|
lightDeviceSettings: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
145
150
|
isDark: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
@@ -148,13 +153,13 @@ export declare const DEVICE_SCHEMAS: {
|
|
|
148
153
|
lastMotion: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
149
154
|
isPirMotionDetected: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
150
155
|
camera: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
156
|
+
}, import("zod/v4/core").$loose>;
|
|
157
|
+
readonly sensor: import("zod").ZodObject<{
|
|
151
158
|
id: import("zod").ZodOptional<import("zod").ZodString>;
|
|
152
159
|
modelKey: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
153
160
|
name: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
154
161
|
mac: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
155
162
|
state: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
156
|
-
}, import("zod/v4/core").$loose>;
|
|
157
|
-
readonly sensor: import("zod").ZodObject<{
|
|
158
163
|
mountType: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
159
164
|
batteryStatus: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
160
165
|
stats: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
@@ -177,110 +182,110 @@ export declare const DEVICE_SCHEMAS: {
|
|
|
177
182
|
leakSettings: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
178
183
|
tamperingDetectedAt: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
179
184
|
wirelessConnectionState: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
185
|
+
}, import("zod/v4/core").$loose>;
|
|
186
|
+
readonly chime: import("zod").ZodObject<{
|
|
180
187
|
id: import("zod").ZodOptional<import("zod").ZodString>;
|
|
181
188
|
modelKey: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
182
189
|
name: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
183
190
|
mac: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
184
191
|
state: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
185
|
-
}, import("zod/v4/core").$loose>;
|
|
186
|
-
readonly chime: import("zod").ZodObject<{
|
|
187
192
|
cameraIds: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
188
193
|
ringSettings: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
194
|
+
}, import("zod/v4/core").$loose>;
|
|
195
|
+
readonly viewer: import("zod").ZodObject<{
|
|
189
196
|
id: import("zod").ZodOptional<import("zod").ZodString>;
|
|
190
197
|
modelKey: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
191
198
|
name: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
192
199
|
mac: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
193
200
|
state: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
194
|
-
}, import("zod/v4/core").$loose>;
|
|
195
|
-
readonly viewer: import("zod").ZodObject<{
|
|
196
201
|
liveview: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
197
202
|
streamLimit: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
203
|
+
}, import("zod/v4/core").$loose>;
|
|
204
|
+
readonly siren: import("zod").ZodObject<{
|
|
198
205
|
id: import("zod").ZodOptional<import("zod").ZodString>;
|
|
199
206
|
modelKey: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
200
207
|
name: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
201
208
|
mac: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
202
209
|
state: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
203
|
-
}, import("zod/v4/core").$loose>;
|
|
204
|
-
readonly siren: import("zod").ZodObject<{
|
|
205
210
|
volume: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
206
211
|
ledSettings: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
207
212
|
sirenStatus: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
208
213
|
connectionType: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
209
214
|
wirelessConnectionState: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
215
|
+
}, import("zod/v4/core").$loose>;
|
|
216
|
+
readonly fob: import("zod").ZodObject<{
|
|
210
217
|
id: import("zod").ZodOptional<import("zod").ZodString>;
|
|
211
218
|
modelKey: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
212
219
|
name: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
213
220
|
mac: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
214
221
|
state: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
215
|
-
}, import("zod/v4/core").$loose>;
|
|
216
|
-
readonly fob: import("zod").ZodObject<{
|
|
217
222
|
awayState: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
218
223
|
buttonLabels: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
219
224
|
featureFlags: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
220
225
|
wirelessConnectionState: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
226
|
+
}, import("zod/v4/core").$loose>;
|
|
227
|
+
readonly relay: import("zod").ZodObject<{
|
|
221
228
|
id: import("zod").ZodOptional<import("zod").ZodString>;
|
|
222
229
|
modelKey: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
223
230
|
name: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
224
231
|
mac: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
225
232
|
state: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
226
|
-
}, import("zod/v4/core").$loose>;
|
|
227
|
-
readonly relay: import("zod").ZodObject<{
|
|
228
233
|
ledSettings: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
229
234
|
outputs: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
230
235
|
inputs: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
231
236
|
wirelessConnectionState: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
237
|
+
}, import("zod/v4/core").$loose>;
|
|
238
|
+
readonly speaker: import("zod").ZodObject<{
|
|
232
239
|
id: import("zod").ZodOptional<import("zod").ZodString>;
|
|
233
240
|
modelKey: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
234
241
|
name: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
235
242
|
mac: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
236
243
|
state: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
237
|
-
}, import("zod/v4/core").$loose>;
|
|
238
|
-
readonly speaker: import("zod").ZodObject<{
|
|
239
244
|
volume: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
240
245
|
micVolume: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
241
246
|
isMicEnabled: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
242
247
|
speakerState: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
243
248
|
featureFlags: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
249
|
+
}, import("zod/v4/core").$loose>;
|
|
250
|
+
readonly bridge: import("zod").ZodObject<{
|
|
244
251
|
id: import("zod").ZodOptional<import("zod").ZodString>;
|
|
245
252
|
modelKey: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
246
253
|
name: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
247
254
|
mac: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
248
255
|
state: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
249
|
-
}, import("zod/v4/core").$loose>;
|
|
250
|
-
readonly bridge: import("zod").ZodObject<{
|
|
251
256
|
platform: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
252
257
|
clients: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
253
258
|
maxClients: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
259
|
+
}, import("zod/v4/core").$loose>;
|
|
260
|
+
readonly link_station: import("zod").ZodObject<{
|
|
254
261
|
id: import("zod").ZodOptional<import("zod").ZodString>;
|
|
255
262
|
modelKey: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
256
263
|
name: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
257
264
|
mac: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
258
265
|
state: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
259
|
-
}, import("zod/v4/core").$loose>;
|
|
260
|
-
readonly link_station: import("zod").ZodObject<{
|
|
261
266
|
isAlarmHub: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
262
267
|
ledSettings: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
263
268
|
lastEvent: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
264
269
|
alarmHub: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
270
|
+
}, import("zod/v4/core").$loose>;
|
|
271
|
+
readonly alarm_hub: import("zod").ZodObject<{
|
|
265
272
|
id: import("zod").ZodOptional<import("zod").ZodString>;
|
|
266
273
|
modelKey: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
267
274
|
name: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
268
275
|
mac: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
269
276
|
state: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
270
|
-
}, import("zod/v4/core").$loose>;
|
|
271
|
-
readonly alarm_hub: import("zod").ZodObject<{
|
|
272
277
|
isAlarmHub: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
273
278
|
ledSettings: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
274
279
|
lastEvent: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
275
280
|
alarmHub: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
276
|
-
id: import("zod").ZodOptional<import("zod").ZodString>;
|
|
277
|
-
modelKey: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
278
|
-
name: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
279
|
-
mac: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
280
|
-
state: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
281
281
|
}, import("zod/v4/core").$loose>;
|
|
282
282
|
};
|
|
283
283
|
export declare function itemOutputShape(key: keyof typeof DEVICE_SCHEMAS): {
|
|
284
|
+
id: import("zod").ZodOptional<import("zod").ZodString>;
|
|
285
|
+
modelKey: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
286
|
+
name: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
287
|
+
mac: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
288
|
+
state: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
284
289
|
lightModeSettings: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
285
290
|
lightDeviceSettings: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
286
291
|
isDark: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
@@ -289,12 +294,12 @@ export declare function itemOutputShape(key: keyof typeof DEVICE_SCHEMAS): {
|
|
|
289
294
|
lastMotion: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
290
295
|
isPirMotionDetected: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
291
296
|
camera: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
297
|
+
} | {
|
|
292
298
|
id: import("zod").ZodOptional<import("zod").ZodString>;
|
|
293
299
|
modelKey: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
294
300
|
name: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
295
301
|
mac: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
296
302
|
state: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
297
|
-
} | {
|
|
298
303
|
mountType: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
299
304
|
batteryStatus: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
300
305
|
stats: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
@@ -317,91 +322,91 @@ export declare function itemOutputShape(key: keyof typeof DEVICE_SCHEMAS): {
|
|
|
317
322
|
leakSettings: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
318
323
|
tamperingDetectedAt: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
319
324
|
wirelessConnectionState: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
325
|
+
} | {
|
|
320
326
|
id: import("zod").ZodOptional<import("zod").ZodString>;
|
|
321
327
|
modelKey: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
322
328
|
name: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
323
329
|
mac: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
324
330
|
state: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
325
|
-
} | {
|
|
326
331
|
cameraIds: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
327
332
|
ringSettings: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
333
|
+
} | {
|
|
328
334
|
id: import("zod").ZodOptional<import("zod").ZodString>;
|
|
329
335
|
modelKey: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
330
336
|
name: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
331
337
|
mac: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
332
338
|
state: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
333
|
-
} | {
|
|
334
339
|
liveview: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
335
340
|
streamLimit: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
341
|
+
} | {
|
|
336
342
|
id: import("zod").ZodOptional<import("zod").ZodString>;
|
|
337
343
|
modelKey: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
338
344
|
name: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
339
345
|
mac: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
340
346
|
state: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
341
|
-
} | {
|
|
342
347
|
volume: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
343
348
|
ledSettings: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
344
349
|
sirenStatus: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
345
350
|
connectionType: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
346
351
|
wirelessConnectionState: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
352
|
+
} | {
|
|
347
353
|
id: import("zod").ZodOptional<import("zod").ZodString>;
|
|
348
354
|
modelKey: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
349
355
|
name: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
350
356
|
mac: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
351
357
|
state: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
352
|
-
} | {
|
|
353
358
|
awayState: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
354
359
|
buttonLabels: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
355
360
|
featureFlags: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
356
361
|
wirelessConnectionState: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
362
|
+
} | {
|
|
357
363
|
id: import("zod").ZodOptional<import("zod").ZodString>;
|
|
358
364
|
modelKey: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
359
365
|
name: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
360
366
|
mac: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
361
367
|
state: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
362
|
-
} | {
|
|
363
368
|
ledSettings: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
364
369
|
outputs: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
365
370
|
inputs: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
366
371
|
wirelessConnectionState: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
372
|
+
} | {
|
|
367
373
|
id: import("zod").ZodOptional<import("zod").ZodString>;
|
|
368
374
|
modelKey: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
369
375
|
name: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
370
376
|
mac: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
371
377
|
state: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
372
|
-
} | {
|
|
373
378
|
volume: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
374
379
|
micVolume: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
375
380
|
isMicEnabled: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
376
381
|
speakerState: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
377
382
|
featureFlags: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
383
|
+
} | {
|
|
378
384
|
id: import("zod").ZodOptional<import("zod").ZodString>;
|
|
379
385
|
modelKey: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
380
386
|
name: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
381
387
|
mac: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
382
388
|
state: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
383
|
-
} | {
|
|
384
389
|
platform: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
385
390
|
clients: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
386
391
|
maxClients: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
392
|
+
} | {
|
|
387
393
|
id: import("zod").ZodOptional<import("zod").ZodString>;
|
|
388
394
|
modelKey: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
389
395
|
name: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
390
396
|
mac: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
391
397
|
state: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
392
|
-
} | {
|
|
393
398
|
isAlarmHub: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
394
399
|
ledSettings: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
395
400
|
lastEvent: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
396
401
|
alarmHub: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
397
|
-
id: import("zod").ZodOptional<import("zod").ZodString>;
|
|
398
|
-
modelKey: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
399
|
-
name: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
400
|
-
mac: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
401
|
-
state: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
402
402
|
};
|
|
403
403
|
export declare function listOutputShape(key: keyof typeof DEVICE_SCHEMAS): {
|
|
404
404
|
result: import("zod").ZodArray<import("zod").ZodObject<{
|
|
405
|
+
id: import("zod").ZodOptional<import("zod").ZodString>;
|
|
406
|
+
modelKey: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
407
|
+
name: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
408
|
+
mac: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
409
|
+
state: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
405
410
|
lightModeSettings: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
406
411
|
lightDeviceSettings: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
407
412
|
isDark: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
@@ -410,12 +415,12 @@ export declare function listOutputShape(key: keyof typeof DEVICE_SCHEMAS): {
|
|
|
410
415
|
lastMotion: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
411
416
|
isPirMotionDetected: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
412
417
|
camera: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
418
|
+
}, import("zod/v4/core").$loose> | import("zod").ZodObject<{
|
|
413
419
|
id: import("zod").ZodOptional<import("zod").ZodString>;
|
|
414
420
|
modelKey: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
415
421
|
name: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
416
422
|
mac: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
417
423
|
state: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
418
|
-
}, import("zod/v4/core").$loose> | import("zod").ZodObject<{
|
|
419
424
|
mountType: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
420
425
|
batteryStatus: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
421
426
|
stats: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
@@ -438,87 +443,82 @@ export declare function listOutputShape(key: keyof typeof DEVICE_SCHEMAS): {
|
|
|
438
443
|
leakSettings: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
439
444
|
tamperingDetectedAt: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
440
445
|
wirelessConnectionState: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
446
|
+
}, import("zod/v4/core").$loose> | import("zod").ZodObject<{
|
|
441
447
|
id: import("zod").ZodOptional<import("zod").ZodString>;
|
|
442
448
|
modelKey: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
443
449
|
name: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
444
450
|
mac: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
445
451
|
state: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
446
|
-
}, import("zod/v4/core").$loose> | import("zod").ZodObject<{
|
|
447
452
|
cameraIds: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
448
453
|
ringSettings: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
454
|
+
}, import("zod/v4/core").$loose> | import("zod").ZodObject<{
|
|
449
455
|
id: import("zod").ZodOptional<import("zod").ZodString>;
|
|
450
456
|
modelKey: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
451
457
|
name: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
452
458
|
mac: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
453
459
|
state: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
454
|
-
}, import("zod/v4/core").$loose> | import("zod").ZodObject<{
|
|
455
460
|
liveview: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
456
461
|
streamLimit: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
462
|
+
}, import("zod/v4/core").$loose> | import("zod").ZodObject<{
|
|
457
463
|
id: import("zod").ZodOptional<import("zod").ZodString>;
|
|
458
464
|
modelKey: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
459
465
|
name: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
460
466
|
mac: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
461
467
|
state: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
462
|
-
}, import("zod/v4/core").$loose> | import("zod").ZodObject<{
|
|
463
468
|
volume: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
464
469
|
ledSettings: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
465
470
|
sirenStatus: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
466
471
|
connectionType: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
467
472
|
wirelessConnectionState: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
473
|
+
}, import("zod/v4/core").$loose> | import("zod").ZodObject<{
|
|
468
474
|
id: import("zod").ZodOptional<import("zod").ZodString>;
|
|
469
475
|
modelKey: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
470
476
|
name: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
471
477
|
mac: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
472
478
|
state: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
473
|
-
}, import("zod/v4/core").$loose> | import("zod").ZodObject<{
|
|
474
479
|
awayState: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
475
480
|
buttonLabels: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
476
481
|
featureFlags: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
477
482
|
wirelessConnectionState: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
483
|
+
}, import("zod/v4/core").$loose> | import("zod").ZodObject<{
|
|
478
484
|
id: import("zod").ZodOptional<import("zod").ZodString>;
|
|
479
485
|
modelKey: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
480
486
|
name: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
481
487
|
mac: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
482
488
|
state: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
483
|
-
}, import("zod/v4/core").$loose> | import("zod").ZodObject<{
|
|
484
489
|
ledSettings: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
485
490
|
outputs: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
486
491
|
inputs: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
487
492
|
wirelessConnectionState: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
493
|
+
}, import("zod/v4/core").$loose> | import("zod").ZodObject<{
|
|
488
494
|
id: import("zod").ZodOptional<import("zod").ZodString>;
|
|
489
495
|
modelKey: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
490
496
|
name: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
491
497
|
mac: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
492
498
|
state: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
493
|
-
}, import("zod/v4/core").$loose> | import("zod").ZodObject<{
|
|
494
499
|
volume: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
495
500
|
micVolume: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
496
501
|
isMicEnabled: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
497
502
|
speakerState: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
498
503
|
featureFlags: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
504
|
+
}, import("zod/v4/core").$loose> | import("zod").ZodObject<{
|
|
499
505
|
id: import("zod").ZodOptional<import("zod").ZodString>;
|
|
500
506
|
modelKey: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
501
507
|
name: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
502
508
|
mac: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
503
509
|
state: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
504
|
-
}, import("zod/v4/core").$loose> | import("zod").ZodObject<{
|
|
505
510
|
platform: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
506
511
|
clients: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
507
512
|
maxClients: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
513
|
+
}, import("zod/v4/core").$loose> | import("zod").ZodObject<{
|
|
508
514
|
id: import("zod").ZodOptional<import("zod").ZodString>;
|
|
509
515
|
modelKey: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
510
516
|
name: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
511
517
|
mac: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
512
518
|
state: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
513
|
-
}, import("zod/v4/core").$loose> | import("zod").ZodObject<{
|
|
514
519
|
isAlarmHub: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
515
520
|
ledSettings: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
516
521
|
lastEvent: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
517
522
|
alarmHub: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
518
|
-
id: import("zod").ZodOptional<import("zod").ZodString>;
|
|
519
|
-
modelKey: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
520
|
-
name: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
521
|
-
mac: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
522
|
-
state: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
523
523
|
}, import("zod/v4/core").$loose>>;
|
|
524
524
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@owine/unifi-protect-mcp",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.10.0",
|
|
4
4
|
"description": "MCP server for UniFi Protect Integration API",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"bin": {
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"engines": {
|
|
23
23
|
"node": "^22.13.0 || ^24.0.0"
|
|
24
24
|
},
|
|
25
|
-
"packageManager": "pnpm@11.
|
|
25
|
+
"packageManager": "pnpm@11.17.0",
|
|
26
26
|
"repository": {
|
|
27
27
|
"type": "git",
|
|
28
28
|
"url": "https://github.com/owine/unifi-protect-mcp.git"
|
|
@@ -38,18 +38,19 @@
|
|
|
38
38
|
"license": "MIT",
|
|
39
39
|
"dependencies": {
|
|
40
40
|
"@modelcontextprotocol/sdk": "1.29.0",
|
|
41
|
-
"ws": "8.21.
|
|
41
|
+
"ws": "8.21.1",
|
|
42
42
|
"zod": "4.4.3"
|
|
43
43
|
},
|
|
44
44
|
"devDependencies": {
|
|
45
45
|
"@eslint/js": "10.0.1",
|
|
46
46
|
"@types/node": "24.13.3",
|
|
47
47
|
"@types/ws": "8.18.1",
|
|
48
|
+
"@typescript/native": "npm:typescript@7.0.2",
|
|
48
49
|
"@vitest/coverage-v8": "4.1.10",
|
|
49
|
-
"eslint": "10.
|
|
50
|
+
"eslint": "10.8.0",
|
|
50
51
|
"lefthook": "2.1.10",
|
|
51
|
-
"typescript": "6.0.
|
|
52
|
-
"typescript-eslint": "8.
|
|
52
|
+
"typescript": "npm:@typescript/typescript6@6.0.2",
|
|
53
|
+
"typescript-eslint": "8.65.0",
|
|
53
54
|
"vitest": "4.1.10"
|
|
54
55
|
}
|
|
55
56
|
}
|