homebridge 2.0.0-alpha.42 → 2.0.0-alpha.44

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 (81) hide show
  1. package/dist/api.d.ts +64 -0
  2. package/dist/api.d.ts.map +1 -1
  3. package/dist/api.js +54 -0
  4. package/dist/api.js.map +1 -1
  5. package/dist/bridgeService.d.ts +1 -4
  6. package/dist/bridgeService.d.ts.map +1 -1
  7. package/dist/bridgeService.js +5 -10
  8. package/dist/bridgeService.js.map +1 -1
  9. package/dist/bridgeTypes.d.ts +54 -0
  10. package/dist/bridgeTypes.d.ts.map +1 -0
  11. package/dist/bridgeTypes.js +8 -0
  12. package/dist/bridgeTypes.js.map +1 -0
  13. package/dist/childBridgeFork.d.ts +2 -6
  14. package/dist/childBridgeFork.d.ts.map +1 -1
  15. package/dist/childBridgeFork.js +34 -93
  16. package/dist/childBridgeFork.js.map +1 -1
  17. package/dist/childBridgeService.d.ts +9 -7
  18. package/dist/childBridgeService.d.ts.map +1 -1
  19. package/dist/childBridgeService.js +9 -2
  20. package/dist/childBridgeService.js.map +1 -1
  21. package/dist/cli.d.ts.map +1 -1
  22. package/dist/cli.js +1 -3
  23. package/dist/cli.js.map +1 -1
  24. package/dist/ipcService.d.ts +2 -12
  25. package/dist/ipcService.d.ts.map +1 -1
  26. package/dist/ipcService.js +0 -7
  27. package/dist/ipcService.js.map +1 -1
  28. package/dist/matter/index.d.ts +1 -1
  29. package/dist/matter/index.d.ts.map +1 -1
  30. package/dist/matter/index.js.map +1 -1
  31. package/dist/matter/matterAccessoryCache.d.ts +73 -0
  32. package/dist/matter/matterAccessoryCache.d.ts.map +1 -0
  33. package/dist/matter/matterAccessoryCache.js +168 -0
  34. package/dist/matter/matterAccessoryCache.js.map +1 -0
  35. package/dist/matter/matterBehaviors.d.ts +123 -0
  36. package/dist/matter/matterBehaviors.d.ts.map +1 -0
  37. package/dist/matter/matterBehaviors.js +582 -0
  38. package/dist/matter/matterBehaviors.js.map +1 -0
  39. package/dist/matter/matterConfigValidator.d.ts +0 -1
  40. package/dist/matter/matterConfigValidator.d.ts.map +1 -1
  41. package/dist/matter/matterConfigValidator.js +15 -45
  42. package/dist/matter/matterConfigValidator.js.map +1 -1
  43. package/dist/matter/matterErrorHandler.d.ts +1 -1
  44. package/dist/matter/matterErrorHandler.d.ts.map +1 -1
  45. package/dist/matter/matterErrorHandler.js +35 -22
  46. package/dist/matter/matterErrorHandler.js.map +1 -1
  47. package/dist/matter/matterNetworkMonitor.d.ts +3 -0
  48. package/dist/matter/matterNetworkMonitor.d.ts.map +1 -1
  49. package/dist/matter/matterNetworkMonitor.js +49 -26
  50. package/dist/matter/matterNetworkMonitor.js.map +1 -1
  51. package/dist/matter/matterServer.d.ts +80 -5
  52. package/dist/matter/matterServer.d.ts.map +1 -1
  53. package/dist/matter/matterServer.js +512 -60
  54. package/dist/matter/matterServer.js.map +1 -1
  55. package/dist/matter/matterSharedTypes.d.ts +27 -21
  56. package/dist/matter/matterSharedTypes.d.ts.map +1 -1
  57. package/dist/matter/matterSharedTypes.js +3 -0
  58. package/dist/matter/matterSharedTypes.js.map +1 -1
  59. package/dist/matter/matterStorage.d.ts +17 -3
  60. package/dist/matter/matterStorage.d.ts.map +1 -1
  61. package/dist/matter/matterStorage.js +135 -38
  62. package/dist/matter/matterStorage.js.map +1 -1
  63. package/dist/matter/matterTypes.d.ts +68 -19
  64. package/dist/matter/matterTypes.d.ts.map +1 -1
  65. package/dist/matter/matterTypes.js.map +1 -1
  66. package/dist/matter/matterValidation.d.ts +57 -0
  67. package/dist/matter/matterValidation.d.ts.map +1 -0
  68. package/dist/matter/matterValidation.js +100 -0
  69. package/dist/matter/matterValidation.js.map +1 -0
  70. package/dist/plugin.d.ts.map +1 -1
  71. package/dist/plugin.js +2 -4
  72. package/dist/plugin.js.map +1 -1
  73. package/dist/server.d.ts +0 -1
  74. package/dist/server.d.ts.map +1 -1
  75. package/dist/server.js +69 -52
  76. package/dist/server.js.map +1 -1
  77. package/package.json +5 -5
  78. package/dist/matter/matterDiagnostics.d.ts +0 -121
  79. package/dist/matter/matterDiagnostics.d.ts.map +0 -1
  80. package/dist/matter/matterDiagnostics.js +0 -323
  81. package/dist/matter/matterDiagnostics.js.map +0 -1
@@ -1,323 +0,0 @@
1
- /* global NodeJS */
2
- /**
3
- * Matter Diagnostics
4
- *
5
- * Comprehensive diagnostics and health monitoring for Matter integration
6
- */
7
- import * as os from 'node:os';
8
- import process from 'node:process';
9
- import { Logger } from '../logger.js';
10
- import { errorHandler } from './matterErrorHandler.js';
11
- import { networkMonitor } from './matterNetworkMonitor.js';
12
- const log = Logger.withPrefix('Matter');
13
- export class MatterDiagnostics {
14
- static instance;
15
- performanceMetrics;
16
- diagnosticInterval = null;
17
- isDiagnosticsEnabled = false;
18
- lastHealthStatus = null;
19
- constructor() {
20
- this.performanceMetrics = {
21
- syncTimes: [],
22
- startTime: new Date(),
23
- };
24
- }
25
- static getInstance() {
26
- if (!MatterDiagnostics.instance) {
27
- MatterDiagnostics.instance = new MatterDiagnostics();
28
- }
29
- return MatterDiagnostics.instance;
30
- }
31
- /**
32
- * Start diagnostics collection
33
- */
34
- startDiagnostics(intervalMs = 60000) {
35
- if (this.isDiagnosticsEnabled) {
36
- return;
37
- }
38
- this.isDiagnosticsEnabled = true;
39
- log.debug('Starting Matter diagnostics collection');
40
- // Collect diagnostics periodically
41
- this.diagnosticInterval = setInterval(() => {
42
- // Fire-and-forget with error handling
43
- this.collectAndLogDiagnostics().catch((error) => {
44
- log.debug('Failed to collect diagnostics:', error);
45
- });
46
- }, intervalMs);
47
- }
48
- /**
49
- * Stop diagnostics collection
50
- */
51
- stopDiagnostics() {
52
- if (this.diagnosticInterval) {
53
- clearInterval(this.diagnosticInterval);
54
- this.diagnosticInterval = null;
55
- }
56
- this.isDiagnosticsEnabled = false;
57
- log.debug('Stopped Matter diagnostics collection');
58
- }
59
- /**
60
- * Record sync performance
61
- */
62
- recordSyncTime(timeMs) {
63
- this.performanceMetrics.syncTimes.push(timeMs);
64
- // Keep only last 100 measurements
65
- if (this.performanceMetrics.syncTimes.length > 100) {
66
- this.performanceMetrics.syncTimes.shift();
67
- }
68
- // Log warning for slow syncs
69
- if (timeMs > 1000) {
70
- log.warn(`Slow Matter sync detected: ${timeMs}ms`);
71
- }
72
- }
73
- /**
74
- * Collect all diagnostic information
75
- */
76
- async collectDiagnostics(matterInfo) {
77
- return {
78
- timestamp: new Date(),
79
- system: this.collectSystemInfo(),
80
- matter: matterInfo || this.getDefaultMatterInfo(),
81
- network: this.collectNetworkInfo(),
82
- errors: this.collectErrorInfo(),
83
- performance: this.collectPerformanceInfo(),
84
- health: this.assessHealth(),
85
- };
86
- }
87
- /**
88
- * Collect system information
89
- */
90
- collectSystemInfo() {
91
- const totalMem = os.totalmem();
92
- const freeMem = os.freemem();
93
- const usedMem = totalMem - freeMem;
94
- const cpus = os.cpus();
95
- const avgLoad = os.loadavg()[0];
96
- return {
97
- platform: os.platform(),
98
- arch: os.arch(),
99
- nodeVersion: process.version,
100
- uptime: os.uptime(),
101
- memory: {
102
- total: totalMem,
103
- free: freeMem,
104
- used: usedMem,
105
- percentage: (usedMem / totalMem) * 100,
106
- },
107
- cpu: {
108
- model: cpus[0]?.model || 'Unknown',
109
- cores: cpus.length,
110
- usage: avgLoad,
111
- },
112
- };
113
- }
114
- /**
115
- * Get default Matter info
116
- */
117
- getDefaultMatterInfo() {
118
- return {
119
- enabled: false,
120
- initialized: false,
121
- running: false,
122
- deviceCount: 0,
123
- bridgeCount: 0,
124
- };
125
- }
126
- /**
127
- * Collect network information
128
- */
129
- collectNetworkInfo() {
130
- const status = networkMonitor.getStatus();
131
- return {
132
- online: status.isOnline,
133
- interfaces: status.interfaces,
134
- primaryInterface: status.primaryInterface,
135
- lastCheck: status.lastCheck,
136
- };
137
- }
138
- /**
139
- * Collect error information
140
- */
141
- collectErrorInfo() {
142
- const errorStats = errorHandler.getErrorStats();
143
- let total = 0;
144
- const byType = {};
145
- const recent = [];
146
- for (const [type, stats] of Object.entries(errorStats)) {
147
- total += stats.count;
148
- byType[type] = stats.count;
149
- if (stats.lastError) {
150
- recent.push({
151
- type,
152
- message: stats.lastError.message,
153
- timestamp: stats.lastError.timestamp,
154
- });
155
- }
156
- }
157
- // Sort recent errors by timestamp
158
- recent.sort((a, b) => b.timestamp.getTime() - a.timestamp.getTime());
159
- return {
160
- total,
161
- byType,
162
- recent: recent.slice(0, 10), // Keep only 10 most recent
163
- };
164
- }
165
- /**
166
- * Collect performance information
167
- */
168
- collectPerformanceInfo() {
169
- const syncTimes = this.performanceMetrics.syncTimes;
170
- const avgSyncTime = syncTimes.length > 0
171
- ? syncTimes.reduce((a, b) => a + b, 0) / syncTimes.length
172
- : 0;
173
- return {
174
- syncLatency: syncTimes.slice(-10), // Last 10 measurements
175
- averageSyncTime: avgSyncTime,
176
- memoryUsage: process.memoryUsage().heapUsed,
177
- eventLoopLag: 0, // Would need additional monitoring
178
- };
179
- }
180
- /**
181
- * Assess overall health
182
- */
183
- assessHealth() {
184
- const issues = [];
185
- const recommendations = [];
186
- // Check network
187
- const networkStatus = networkMonitor.getStatus();
188
- if (!networkStatus.isOnline) {
189
- issues.push('Network is offline');
190
- recommendations.push('Check network connectivity');
191
- }
192
- else if (networkStatus.consecutiveFailures > 0) {
193
- issues.push('Intermittent network issues detected');
194
- recommendations.push('Monitor network stability');
195
- }
196
- // Check errors
197
- const errorStats = errorHandler.getErrorStats();
198
- const totalErrors = Object.values(errorStats)
199
- .reduce((sum, stat) => sum + stat.count, 0);
200
- if (totalErrors > 10) {
201
- issues.push(`High error rate: ${totalErrors} errors`);
202
- recommendations.push('Review error logs for patterns');
203
- }
204
- // Check performance
205
- const perfInfo = this.collectPerformanceInfo();
206
- if (perfInfo.averageSyncTime > 500) {
207
- issues.push(`Slow sync performance: ${perfInfo.averageSyncTime.toFixed(0)}ms average`);
208
- recommendations.push('Consider reducing device count or optimizing sync frequency');
209
- }
210
- // Check memory (raised threshold to 95% to reduce false positives)
211
- const systemInfo = this.collectSystemInfo();
212
- if (systemInfo.memory.percentage > 95) {
213
- issues.push(`High memory usage: ${systemInfo.memory.percentage.toFixed(1)}%`);
214
- recommendations.push('Consider increasing system memory or reducing load');
215
- }
216
- else if (systemInfo.memory.percentage > 90) {
217
- // Only log in debug mode for 90-95% range
218
- log.debug(`Memory usage at ${systemInfo.memory.percentage.toFixed(1)}%`);
219
- }
220
- // Determine overall health
221
- let overall;
222
- if (issues.length === 0) {
223
- overall = 'healthy';
224
- }
225
- else if (issues.length <= 2) {
226
- overall = 'degraded';
227
- }
228
- else {
229
- overall = 'unhealthy';
230
- }
231
- return {
232
- overall,
233
- issues,
234
- recommendations,
235
- };
236
- }
237
- /**
238
- * Collect and log diagnostics
239
- */
240
- async collectAndLogDiagnostics() {
241
- const diagnostics = await this.collectDiagnostics();
242
- // Only log health status if it changed or is unhealthy
243
- if (diagnostics.health.overall !== this.lastHealthStatus) {
244
- this.lastHealthStatus = diagnostics.health.overall;
245
- if (diagnostics.health.overall !== 'healthy') {
246
- log.warn(`Matter health status: ${diagnostics.health.overall}`);
247
- for (const issue of diagnostics.health.issues) {
248
- log.warn(` - ${issue}`);
249
- }
250
- for (const recommendation of diagnostics.health.recommendations) {
251
- log.info(` 💡 ${recommendation}`);
252
- }
253
- }
254
- else {
255
- log.info('Matter health status: healthy');
256
- }
257
- }
258
- // Log debug information
259
- log.debug('Matter diagnostics:', {
260
- health: diagnostics.health.overall,
261
- errors: diagnostics.errors.total,
262
- devices: diagnostics.matter.deviceCount,
263
- avgSyncTime: `${diagnostics.performance.averageSyncTime.toFixed(0)}ms`,
264
- memory: `${(diagnostics.system.memory.percentage).toFixed(1)}%`,
265
- });
266
- }
267
- /**
268
- * Generate diagnostic report
269
- */
270
- async generateReport(matterInfo) {
271
- const diagnostics = await this.collectDiagnostics(matterInfo);
272
- return `
273
- Matter Diagnostics Report
274
- ========================
275
- Generated: ${diagnostics.timestamp.toISOString()}
276
-
277
- System Information
278
- ------------------
279
- Platform: ${diagnostics.system.platform} (${diagnostics.system.arch})
280
- Node Version: ${diagnostics.system.nodeVersion}
281
- System Uptime: ${(diagnostics.system.uptime / 3600).toFixed(1)} hours
282
- Memory: ${(diagnostics.system.memory.used / 1024 / 1024 / 1024).toFixed(1)}GB / ${(diagnostics.system.memory.total / 1024 / 1024 / 1024).toFixed(1)}GB (${diagnostics.system.memory.percentage.toFixed(1)}%)
283
- CPU: ${diagnostics.system.cpu.model} (${diagnostics.system.cpu.cores} cores)
284
-
285
- Matter Status
286
- -------------
287
- Enabled: ${diagnostics.matter.enabled}
288
- Initialized: ${diagnostics.matter.initialized}
289
- Running: ${diagnostics.matter.running}
290
- Port: ${diagnostics.matter.port || 'N/A'}
291
- Devices: ${diagnostics.matter.deviceCount}
292
- Bridges: ${diagnostics.matter.bridgeCount}
293
-
294
- Network Status
295
- --------------
296
- Online: ${diagnostics.network.online}
297
- Interfaces: ${diagnostics.network.interfaces.join(', ') || 'None'}
298
- Primary: ${diagnostics.network.primaryInterface || 'N/A'}
299
- Last Check: ${diagnostics.network.lastCheck.toISOString()}
300
-
301
- Error Summary
302
- -------------
303
- Total Errors: ${diagnostics.errors.total}
304
- ${Object.entries(diagnostics.errors.byType)
305
- .map(([type, count]) => ` ${type}: ${count}`)
306
- .join('\n')}
307
-
308
- Performance
309
- -----------
310
- Average Sync Time: ${diagnostics.performance.averageSyncTime.toFixed(0)}ms
311
- Memory Usage: ${(diagnostics.performance.memoryUsage / 1024 / 1024).toFixed(1)}MB
312
-
313
- Health Assessment
314
- -----------------
315
- Overall: ${diagnostics.health.overall.toUpperCase()}
316
- ${diagnostics.health.issues.length > 0 ? `Issues:\n${diagnostics.health.issues.map(i => ` - ${i}`).join('\n')}` : ''}
317
- ${diagnostics.health.recommendations.length > 0 ? `Recommendations:\n${diagnostics.health.recommendations.map(r => ` - ${r}`).join('\n')}` : ''}
318
- `;
319
- }
320
- }
321
- // Export singleton instance
322
- export const diagnostics = MatterDiagnostics.getInstance();
323
- //# sourceMappingURL=matterDiagnostics.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"matterDiagnostics.js","sourceRoot":"","sources":["../../src/matter/matterDiagnostics.ts"],"names":[],"mappings":"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"}