@matterbridge/core 3.9.5-dev-20260711-453683c → 3.9.5-dev-20260714-6230956

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.
@@ -3,6 +3,7 @@ import { BooleanStateConfiguration } from '@matter/types/clusters/boolean-state-
3
3
  declare const MatterbridgeBooleanStateConfigurationServer_base: import("@matter/node").ClusterBehavior.Type<typeof BooleanStateConfigurationServer, import("@matter/types").ClusterType.WithSupportedFeatures<BooleanStateConfiguration, {
4
4
  alarmSuppress: false;
5
5
  audible: true;
6
+ faultEvents: false;
6
7
  sensitivityLevel: true;
7
8
  visual: true;
8
9
  }>, import("@matter/types").ClusterType.Concrete, new () => {}, "booleanStateConfiguration">;
@@ -3,12 +3,14 @@ import { Thermostat } from '@matter/types/clusters/thermostat';
3
3
  declare const MatterbridgeThermostatServer_base: import("@matter/node").ClusterBehavior.Type<typeof ThermostatServer, import("@matter/types").ClusterType.WithSupportedFeatures<Thermostat, {
4
4
  autoMode: true;
5
5
  cooling: true;
6
+ events: false;
6
7
  heating: true;
7
8
  localTemperatureNotExposed: false;
8
9
  matterScheduleConfiguration: false;
9
10
  occupancy: false;
10
11
  presets: true;
11
12
  setback: false;
13
+ thermostatSuggestions: false;
12
14
  }>, import("@matter/types").ClusterType.Concrete, typeof import("@matter/node/behaviors/thermostat").ThermostatBaseServer.Internal, "thermostat">;
13
15
  export declare class MatterbridgeThermostatServer extends MatterbridgeThermostatServer_base {
14
16
  initialize(): Promise<void>;
@@ -18,12 +20,14 @@ export declare class MatterbridgeThermostatServer extends MatterbridgeThermostat
18
20
  declare const MatterbridgePresetThermostatServer_base: import("@matter/node").ClusterBehavior.Type<typeof ThermostatServer, import("@matter/types").ClusterType.WithSupportedFeatures<Thermostat, {
19
21
  autoMode: true;
20
22
  cooling: true;
23
+ events: false;
21
24
  heating: true;
22
25
  localTemperatureNotExposed: false;
23
26
  matterScheduleConfiguration: false;
24
27
  occupancy: false;
25
28
  presets: true;
26
29
  setback: false;
30
+ thermostatSuggestions: false;
27
31
  }>, import("@matter/types").ClusterType.Concrete, typeof import("@matter/node/behaviors/thermostat").ThermostatBaseServer.Internal, "thermostat">;
28
32
  export declare class MatterbridgePresetThermostatServer extends MatterbridgePresetThermostatServer_base {
29
33
  }
@@ -1 +1,2 @@
1
1
  export * from '@matter/node/behaviors';
2
+ export * from '@matter/node';
@@ -1 +1,2 @@
1
1
  export * from '@matter/node/behaviors';
2
+ export * from '@matter/node';
@@ -756,7 +756,8 @@ export class Matterbridge extends EventEmitter {
756
756
  }
757
757
  if ((!isLocal && !fs.existsSync(plugin.path) && !this.isShutdownCommand) || process.env.MATTERBRIDGE_REINSTALL_PLUGINS === 'jest') {
758
758
  const { execSync } = await import('node:child_process');
759
- const sudo = hasParameter('sudo') || (process.platform !== 'win32' && !hasParameter('docker') && !hasParameter('nosudo') && !process.env.PATH?.includes('/.nvm/versions/node/'));
759
+ const sudo = hasParameter('sudo') ||
760
+ (process.platform !== 'win32' && !hasParameter('docker') && !hasParameter('nosudo') && !isBun() && !process.env.PATH?.includes('/.nvm/versions/node/'));
760
761
  try {
761
762
  if (plugin.private && plugin.tarballPath && fs.existsSync(path.join(this.matterbridgeDirectory, 'uploads', plugin.tarballPath))) {
762
763
  this.log.info(`Plugin ${plg}${plugin.name}${nf} not found. Trying to reinstall it from last tarball...`);
@@ -3,6 +3,7 @@ import { Actions } from '@matter/types/clusters/actions';
3
3
  import { ActivatedCarbonFilterMonitoring } from '@matter/types/clusters/activated-carbon-filter-monitoring';
4
4
  import { AdministratorCommissioning } from '@matter/types/clusters/administrator-commissioning';
5
5
  import { AirQuality } from '@matter/types/clusters/air-quality';
6
+ import { AmbientContextSensing } from '@matter/types/clusters/ambient-context-sensing';
6
7
  import { ApplicationBasic } from '@matter/types/clusters/application-basic';
7
8
  import { ApplicationLauncher } from '@matter/types/clusters/application-launcher';
8
9
  import { AudioOutput } from '@matter/types/clusters/audio-output';
@@ -90,6 +91,7 @@ import { SmokeCoAlarm } from '@matter/types/clusters/smoke-co-alarm';
90
91
  import { SoilMeasurement } from '@matter/types/clusters/soil-measurement';
91
92
  import { Switch } from '@matter/types/clusters/switch';
92
93
  import { TargetNavigator } from '@matter/types/clusters/target-navigator';
94
+ import { TemperatureAlarm } from '@matter/types/clusters/temperature-alarm';
93
95
  import { TemperatureControl } from '@matter/types/clusters/temperature-control';
94
96
  import { TemperatureMeasurement } from '@matter/types/clusters/temperature-measurement';
95
97
  import { Thermostat } from '@matter/types/clusters/thermostat';
@@ -522,7 +524,7 @@ export const waterFreezeDetector = DeviceTypeDefinition({
522
524
  code: 0x0041,
523
525
  deviceClass: DeviceClasses.Simple,
524
526
  deviceScope: DeviceScopes.Endpoint,
525
- revision: 1,
527
+ revision: 2,
526
528
  requiredServerClusters: [Identify.id, BooleanState.id],
527
529
  optionalServerClusters: [BooleanStateConfiguration.id],
528
530
  });
@@ -531,7 +533,7 @@ export const waterLeakDetector = DeviceTypeDefinition({
531
533
  code: 0x0043,
532
534
  deviceClass: DeviceClasses.Simple,
533
535
  deviceScope: DeviceScopes.Endpoint,
534
- revision: 1,
536
+ revision: 2,
535
537
  requiredServerClusters: [Identify.id, BooleanState.id],
536
538
  optionalServerClusters: [BooleanStateConfiguration.id],
537
539
  });
@@ -540,7 +542,7 @@ export const rainSensor = DeviceTypeDefinition({
540
542
  code: 0x0044,
541
543
  deviceClass: DeviceClasses.Simple,
542
544
  deviceScope: DeviceScopes.Endpoint,
543
- revision: 1,
545
+ revision: 2,
544
546
  requiredServerClusters: [Identify.id, BooleanState.id],
545
547
  optionalServerClusters: [BooleanStateConfiguration.id],
546
548
  });
@@ -622,18 +624,18 @@ export const closureController = DeviceTypeDefinition({
622
624
  requiredServerClusters: [],
623
625
  optionalServerClusters: [],
624
626
  requiredClientClusters: [ClosureControl.id],
625
- optionalClientClusters: [Identify.id, Groups.id, ClosureDimension.id],
627
+ optionalClientClusters: [Identify.id, ClosureDimension.id],
626
628
  });
627
629
  export const thermostat = DeviceTypeDefinition({
628
630
  name: 'Thermostat',
629
631
  code: 0x301,
630
632
  deviceClass: DeviceClasses.Simple,
631
633
  deviceScope: DeviceScopes.Endpoint,
632
- revision: 5,
634
+ revision: 6,
633
635
  requiredServerClusters: [Identify.id, Thermostat.id],
634
636
  optionalServerClusters: [Groups.id, ThermostatUserInterfaceConfiguration.id, EnergyPreference.id],
635
637
  requiredClientClusters: [],
636
- optionalClientClusters: [FanControl.id, TemperatureMeasurement.id, RelativeHumidityMeasurement.id, OccupancySensing.id],
638
+ optionalClientClusters: [FanControl.id, TemperatureMeasurement.id, RelativeHumidityMeasurement.id, OccupancySensing.id, AmbientContextSensing.id],
637
639
  });
638
640
  export const thermostatDevice = thermostat;
639
641
  export const fan = DeviceTypeDefinition({
@@ -804,9 +806,9 @@ export const refrigerator = DeviceTypeDefinition({
804
806
  code: 0x70,
805
807
  deviceClass: DeviceClasses.Simple,
806
808
  deviceScope: DeviceScopes.Endpoint,
807
- revision: 2,
809
+ revision: 3,
808
810
  requiredServerClusters: [],
809
- optionalServerClusters: [Identify.id, RefrigeratorAndTemperatureControlledCabinetMode.id, RefrigeratorAlarm.id],
811
+ optionalServerClusters: [Identify.id, RefrigeratorAndTemperatureControlledCabinetMode.id, RefrigeratorAlarm.id, ActivatedCarbonFilterMonitoring.id],
810
812
  });
811
813
  export const roomAirConditioner = DeviceTypeDefinition({
812
814
  name: 'RoomAirConditioner',
@@ -832,18 +834,18 @@ export const temperatureControlledCabinetCooler = DeviceTypeDefinition({
832
834
  code: 0x71,
833
835
  deviceClass: DeviceClasses.Simple,
834
836
  deviceScope: DeviceScopes.Endpoint,
835
- revision: 5,
837
+ revision: 6,
836
838
  requiredServerClusters: [TemperatureControl.id, RefrigeratorAndTemperatureControlledCabinetMode.id],
837
- optionalServerClusters: [TemperatureMeasurement.id],
839
+ optionalServerClusters: [TemperatureMeasurement.id, TemperatureAlarm.id],
838
840
  });
839
841
  export const temperatureControlledCabinetHeater = DeviceTypeDefinition({
840
842
  name: 'TemperatureControlledCabinet',
841
843
  code: 0x71,
842
844
  deviceClass: DeviceClasses.Simple,
843
845
  deviceScope: DeviceScopes.Endpoint,
844
- revision: 5,
846
+ revision: 6,
845
847
  requiredServerClusters: [TemperatureControl.id, OvenMode.id, OvenCavityOperationalState.id],
846
- optionalServerClusters: [TemperatureMeasurement.id],
848
+ optionalServerClusters: [TemperatureMeasurement.id, TemperatureAlarm.id],
847
849
  });
848
850
  export const dishwasher = DeviceTypeDefinition({
849
851
  name: 'Dishwasher',
@@ -135,6 +135,7 @@ export declare function getDefaultIlluminanceMeasurementClusterServer(measuredVa
135
135
  export declare function getDefaultFlowMeasurementClusterServer(measuredValue?: number | null, minMeasuredValue?: number | null, maxMeasuredValue?: number | null): Partial<import("@matter/node").ClusterState.Type<FlowMeasurement, typeof ClusterBehavior>>;
136
136
  export declare function getDefaultOccupancySensingClusterServer(occupied?: boolean, holdTime?: number, holdTimeMin?: number, holdTimeMax?: number): Partial<import("@matter/node").ClusterState.Type<ClusterType.WithSupportedFeatures<OccupancySensing, {
137
137
  activeInfrared: false;
138
+ occupancyEvent: false;
138
139
  other: false;
139
140
  passiveInfrared: true;
140
141
  physicalContact: false;
@@ -571,12 +571,14 @@ export function addClusterClients(endpoint, clientList) {
571
571
  for (const clusterId of clientList) {
572
572
  const key = lowercaseFirstLetter(getClusterNameById(clusterId));
573
573
  const value = getBehaviourTypeFromClusterClientId(clusterId);
574
- if (!value) {
575
- endpoint.log.warn(`addClusterClients: no client behavior found for clusterId ${hk}0x${clusterId.toString(16).padStart(4, '0')}${wr}`);
576
- }
577
- if (!clientClusters[key] && value) {
578
- clientClusters[key] = value;
579
- endpoint.log.info(`addClusterClients: added client behavior for clusterId ${hk}0x${clusterId.toString(16).padStart(4, '0')}${nf}`);
574
+ if (!clientClusters[key]) {
575
+ if (value) {
576
+ clientClusters[key] = value;
577
+ endpoint.log.info(`addClusterClients: added client behavior for clusterId ${hk}0x${clusterId.toString(16).padStart(4, '0')}${nf}`);
578
+ }
579
+ else {
580
+ endpoint.log.warn(`addClusterClients: no client behavior found for clusterId ${hk}0x${clusterId.toString(16).padStart(4, '0')}${wr}`);
581
+ }
580
582
  }
581
583
  }
582
584
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@matterbridge/core",
3
- "version": "3.9.5-dev-20260711-453683c",
3
+ "version": "3.9.5-dev-20260714-6230956",
4
4
  "description": "Matterbridge core library",
5
5
  "author": "https://github.com/Luligu",
6
6
  "homepage": "https://matterbridge.io/",
@@ -129,15 +129,17 @@
129
129
  "CHANGELOG.md"
130
130
  ],
131
131
  "automator": {
132
+ "node": true,
133
+ "vitest": true,
132
134
  "skipPackageJson": true,
133
135
  "skipTsconfig": true
134
136
  },
135
137
  "dependencies": {
136
- "@matter/main": "0.17.4",
137
- "@matterbridge/dgram": "3.9.5-dev-20260711-453683c",
138
- "@matterbridge/thread": "3.9.5-dev-20260711-453683c",
139
- "@matterbridge/types": "3.9.5-dev-20260711-453683c",
140
- "@matterbridge/utils": "3.9.5-dev-20260711-453683c",
138
+ "@matter/main": "0.17.5",
139
+ "@matterbridge/dgram": "3.9.5-dev-20260714-6230956",
140
+ "@matterbridge/thread": "3.9.5-dev-20260714-6230956",
141
+ "@matterbridge/types": "3.9.5-dev-20260714-6230956",
142
+ "@matterbridge/utils": "3.9.5-dev-20260714-6230956",
141
143
  "escape-html": "1.0.3",
142
144
  "express": "5.2.1",
143
145
  "express-rate-limit": "8.5.2",