@matter/node 0.16.0-alpha.0-20251205-dfb1e1556 → 0.16.0-alpha.0-20251209-d6072d23e

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 (366) hide show
  1. package/dist/cjs/behavior/Behavior.d.ts +5 -1
  2. package/dist/cjs/behavior/Behavior.d.ts.map +1 -1
  3. package/dist/cjs/behavior/Behavior.js +15 -5
  4. package/dist/cjs/behavior/Behavior.js.map +1 -1
  5. package/dist/cjs/behavior/Events.d.ts +7 -7
  6. package/dist/cjs/behavior/Events.d.ts.map +1 -1
  7. package/dist/cjs/behavior/Events.js +1 -1
  8. package/dist/cjs/behavior/Events.js.map +1 -1
  9. package/dist/cjs/behavior/Transitions.d.ts +2 -3
  10. package/dist/cjs/behavior/Transitions.d.ts.map +1 -1
  11. package/dist/cjs/behavior/Transitions.js +1 -2
  12. package/dist/cjs/behavior/Transitions.js.map +1 -1
  13. package/dist/cjs/behavior/cluster/ClusterBehaviorType.js +2 -2
  14. package/dist/cjs/behavior/cluster/ClusterBehaviorType.js.map +1 -1
  15. package/dist/cjs/behavior/cluster/ClusterEvents.d.ts +1 -1
  16. package/dist/cjs/behavior/cluster/ClusterEvents.d.ts.map +1 -1
  17. package/dist/cjs/behavior/cluster/cluster-behavior-utils.js +1 -1
  18. package/dist/cjs/behavior/cluster/cluster-behavior-utils.js.map +1 -1
  19. package/dist/cjs/behavior/context/Contextual.js +1 -1
  20. package/dist/cjs/behavior/context/Contextual.js.map +1 -1
  21. package/dist/cjs/behavior/context/NodeActivity.d.ts +2 -4
  22. package/dist/cjs/behavior/context/NodeActivity.d.ts.map +1 -1
  23. package/dist/cjs/behavior/context/NodeActivity.js +4 -11
  24. package/dist/cjs/behavior/context/NodeActivity.js.map +1 -1
  25. package/dist/cjs/behavior/context/server/LocalActorContext.d.ts +2 -3
  26. package/dist/cjs/behavior/context/server/LocalActorContext.d.ts.map +1 -1
  27. package/dist/cjs/behavior/context/server/LocalActorContext.js +3 -3
  28. package/dist/cjs/behavior/context/server/LocalActorContext.js.map +1 -1
  29. package/dist/cjs/behavior/context/server/RemoteActorContext.d.ts +2 -6
  30. package/dist/cjs/behavior/context/server/RemoteActorContext.d.ts.map +1 -1
  31. package/dist/cjs/behavior/context/server/RemoteActorContext.js +20 -22
  32. package/dist/cjs/behavior/context/server/RemoteActorContext.js.map +1 -1
  33. package/dist/cjs/behavior/internal/BackingEvents.js +2 -2
  34. package/dist/cjs/behavior/internal/BackingEvents.js.map +1 -1
  35. package/dist/cjs/behavior/internal/BehaviorBacking.d.ts +2 -1
  36. package/dist/cjs/behavior/internal/BehaviorBacking.d.ts.map +1 -1
  37. package/dist/cjs/behavior/internal/BehaviorBacking.js +3 -0
  38. package/dist/cjs/behavior/internal/BehaviorBacking.js.map +1 -1
  39. package/dist/cjs/behavior/internal/Reactors.d.ts.map +1 -1
  40. package/dist/cjs/behavior/internal/Reactors.js +2 -1
  41. package/dist/cjs/behavior/internal/Reactors.js.map +1 -1
  42. package/dist/cjs/behavior/state/managed/Datasource.d.ts.map +1 -1
  43. package/dist/cjs/behavior/state/managed/Datasource.js +1 -1
  44. package/dist/cjs/behavior/state/managed/Datasource.js.map +1 -1
  45. package/dist/cjs/behavior/state/managed/Internal.js +2 -2
  46. package/dist/cjs/behavior/state/managed/Internal.js.map +1 -1
  47. package/dist/cjs/behavior/state/managed/values/BitmapManager.js +1 -1
  48. package/dist/cjs/behavior/state/managed/values/BitmapManager.js.map +1 -1
  49. package/dist/cjs/behavior/state/managed/values/StructManager.js +1 -1
  50. package/dist/cjs/behavior/state/managed/values/StructManager.js.map +1 -1
  51. package/dist/cjs/behavior/system/commissioning/CommissioningClient.d.ts.map +1 -1
  52. package/dist/cjs/behavior/system/commissioning/CommissioningClient.js +6 -12
  53. package/dist/cjs/behavior/system/commissioning/CommissioningClient.js.map +1 -1
  54. package/dist/cjs/behavior/system/commissioning/CommissioningServer.d.ts +3 -2
  55. package/dist/cjs/behavior/system/commissioning/CommissioningServer.d.ts.map +1 -1
  56. package/dist/cjs/behavior/system/commissioning/CommissioningServer.js +3 -6
  57. package/dist/cjs/behavior/system/commissioning/CommissioningServer.js.map +1 -1
  58. package/dist/cjs/behavior/system/mqtt/MqttInterface.d.ts.map +1 -1
  59. package/dist/cjs/behavior/system/mqtt/MqttInterface.js +91 -30
  60. package/dist/cjs/behavior/system/mqtt/MqttInterface.js.map +1 -1
  61. package/dist/cjs/behavior/system/network/NetworkRuntime.d.ts.map +1 -1
  62. package/dist/cjs/behavior/system/network/NetworkRuntime.js +1 -3
  63. package/dist/cjs/behavior/system/network/NetworkRuntime.js.map +1 -1
  64. package/dist/cjs/behavior/system/network/ServerGroupNetworking.js +2 -2
  65. package/dist/cjs/behavior/system/network/ServerGroupNetworking.js.map +1 -1
  66. package/dist/cjs/behavior/system/network/ServerNetworkRuntime.d.ts.map +1 -1
  67. package/dist/cjs/behavior/system/network/ServerNetworkRuntime.js +152 -13
  68. package/dist/cjs/behavior/system/network/ServerNetworkRuntime.js.map +2 -2
  69. package/dist/cjs/behavior/system/remote/RemoteInterface.d.ts +3 -2
  70. package/dist/cjs/behavior/system/remote/RemoteInterface.d.ts.map +1 -1
  71. package/dist/cjs/behavior/system/remote/RemoteInterface.js +69 -10
  72. package/dist/cjs/behavior/system/remote/RemoteInterface.js.map +1 -1
  73. package/dist/cjs/behavior/system/remote/api/Api.d.ts.map +1 -1
  74. package/dist/cjs/behavior/system/remote/api/Api.js +4 -3
  75. package/dist/cjs/behavior/system/remote/api/Api.js.map +1 -1
  76. package/dist/cjs/behavior/system/sessions/SessionsBehavior.js +2 -2
  77. package/dist/cjs/behavior/system/sessions/SessionsBehavior.js.map +1 -1
  78. package/dist/cjs/behavior/system/subscriptions/SubscriptionsServer.d.ts.map +1 -1
  79. package/dist/cjs/behavior/system/subscriptions/SubscriptionsServer.js +14 -11
  80. package/dist/cjs/behavior/system/subscriptions/SubscriptionsServer.js.map +1 -1
  81. package/dist/cjs/behavior/system/websocket/WebSocketInterface.d.ts.map +1 -1
  82. package/dist/cjs/behavior/system/websocket/WebSocketInterface.js +12 -4
  83. package/dist/cjs/behavior/system/websocket/WebSocketInterface.js.map +1 -1
  84. package/dist/cjs/behaviors/access-control/AccessControlServer.js +1 -1
  85. package/dist/cjs/behaviors/access-control/AccessControlServer.js.map +1 -1
  86. package/dist/cjs/behaviors/administrator-commissioning/AdministratorCommissioningServer.d.ts.map +1 -1
  87. package/dist/cjs/behaviors/administrator-commissioning/AdministratorCommissioningServer.js +65 -7
  88. package/dist/cjs/behaviors/administrator-commissioning/AdministratorCommissioningServer.js.map +1 -1
  89. package/dist/cjs/behaviors/basic-information/BasicInformationServer.js +2 -2
  90. package/dist/cjs/behaviors/basic-information/BasicInformationServer.js.map +1 -1
  91. package/dist/cjs/behaviors/general-commissioning/GeneralCommissioningServer.d.ts.map +1 -1
  92. package/dist/cjs/behaviors/general-commissioning/GeneralCommissioningServer.js +12 -8
  93. package/dist/cjs/behaviors/general-commissioning/GeneralCommissioningServer.js.map +1 -1
  94. package/dist/cjs/behaviors/general-commissioning/ServerNodeFailsafeContext.d.ts +2 -3
  95. package/dist/cjs/behaviors/general-commissioning/ServerNodeFailsafeContext.d.ts.map +1 -1
  96. package/dist/cjs/behaviors/general-commissioning/ServerNodeFailsafeContext.js +2 -10
  97. package/dist/cjs/behaviors/general-commissioning/ServerNodeFailsafeContext.js.map +1 -1
  98. package/dist/cjs/behaviors/general-diagnostics/GeneralDiagnosticsServer.js +2 -2
  99. package/dist/cjs/behaviors/general-diagnostics/GeneralDiagnosticsServer.js.map +1 -1
  100. package/dist/cjs/behaviors/group-key-management/GroupKeyManagementServer.js +1 -1
  101. package/dist/cjs/behaviors/group-key-management/GroupKeyManagementServer.js.map +1 -1
  102. package/dist/cjs/behaviors/operational-credentials/OperationalCredentialsServer.d.ts +0 -1
  103. package/dist/cjs/behaviors/operational-credentials/OperationalCredentialsServer.d.ts.map +1 -1
  104. package/dist/cjs/behaviors/operational-credentials/OperationalCredentialsServer.js +15 -14
  105. package/dist/cjs/behaviors/operational-credentials/OperationalCredentialsServer.js.map +1 -1
  106. package/dist/cjs/behaviors/scenes-management/ScenesManagementServer.js +2 -2
  107. package/dist/cjs/behaviors/scenes-management/ScenesManagementServer.js.map +1 -1
  108. package/dist/cjs/behaviors/thermostat/AtomicWriteHandler.js +1 -1
  109. package/dist/cjs/behaviors/thermostat/AtomicWriteHandler.js.map +1 -1
  110. package/dist/cjs/behaviors/window-covering/WindowCoveringServer.d.ts.map +1 -1
  111. package/dist/cjs/behaviors/window-covering/WindowCoveringServer.js +21 -8
  112. package/dist/cjs/behaviors/window-covering/WindowCoveringServer.js.map +1 -1
  113. package/dist/cjs/endpoint/Agent.js +1 -1
  114. package/dist/cjs/endpoint/Agent.js.map +1 -1
  115. package/dist/cjs/endpoint/Endpoint.d.ts +2 -1
  116. package/dist/cjs/endpoint/Endpoint.d.ts.map +1 -1
  117. package/dist/cjs/endpoint/Endpoint.js +95 -8
  118. package/dist/cjs/endpoint/Endpoint.js.map +2 -2
  119. package/dist/cjs/endpoint/properties/Behaviors.d.ts.map +1 -1
  120. package/dist/cjs/endpoint/properties/Behaviors.js +11 -7
  121. package/dist/cjs/endpoint/properties/Behaviors.js.map +1 -1
  122. package/dist/cjs/endpoint/properties/Commands.js +1 -1
  123. package/dist/cjs/endpoint/properties/Commands.js.map +1 -1
  124. package/dist/cjs/endpoint/properties/EndpointLifecycle.d.ts.map +1 -1
  125. package/dist/cjs/endpoint/properties/EndpointLifecycle.js +3 -0
  126. package/dist/cjs/endpoint/properties/EndpointLifecycle.js.map +1 -1
  127. package/dist/cjs/node/ClientNode.d.ts.map +1 -1
  128. package/dist/cjs/node/ClientNode.js +2 -0
  129. package/dist/cjs/node/ClientNode.js.map +1 -1
  130. package/dist/cjs/node/Node.d.ts +2 -2
  131. package/dist/cjs/node/Node.d.ts.map +1 -1
  132. package/dist/cjs/node/Node.js +3 -2
  133. package/dist/cjs/node/Node.js.map +1 -1
  134. package/dist/cjs/node/ServerNode.d.ts.map +1 -1
  135. package/dist/cjs/node/ServerNode.js +54 -1
  136. package/dist/cjs/node/ServerNode.js.map +1 -1
  137. package/dist/cjs/node/client/ClientCommandMethod.d.ts.map +1 -1
  138. package/dist/cjs/node/client/ClientCommandMethod.js +26 -29
  139. package/dist/cjs/node/client/ClientCommandMethod.js.map +1 -1
  140. package/dist/cjs/node/client/NodePeerAddressStore.d.ts +3 -3
  141. package/dist/cjs/node/client/NodePeerAddressStore.d.ts.map +1 -1
  142. package/dist/cjs/node/client/NodePeerAddressStore.js.map +1 -1
  143. package/dist/cjs/node/client/PeerBehavior.js +1 -1
  144. package/dist/cjs/node/client/PeerBehavior.js.map +1 -1
  145. package/dist/cjs/node/client/Peers.d.ts.map +1 -1
  146. package/dist/cjs/node/client/Peers.js +14 -0
  147. package/dist/cjs/node/client/Peers.js.map +1 -1
  148. package/dist/cjs/node/integration/ProtocolService.d.ts.map +1 -1
  149. package/dist/cjs/node/integration/ProtocolService.js +3 -2
  150. package/dist/cjs/node/integration/ProtocolService.js.map +1 -1
  151. package/dist/cjs/node/server/InteractionServer.d.ts.map +1 -1
  152. package/dist/cjs/node/server/InteractionServer.js +55 -50
  153. package/dist/cjs/node/server/InteractionServer.js.map +2 -2
  154. package/dist/cjs/node/server/ServerEnvironment.js +1 -1
  155. package/dist/cjs/node/server/ServerEnvironment.js.map +1 -1
  156. package/dist/cjs/node/server/ServerSubscription.d.ts +61 -10
  157. package/dist/cjs/node/server/ServerSubscription.d.ts.map +1 -1
  158. package/dist/cjs/node/server/ServerSubscription.js +316 -157
  159. package/dist/cjs/node/server/ServerSubscription.js.map +2 -2
  160. package/dist/esm/behavior/Behavior.d.ts +5 -1
  161. package/dist/esm/behavior/Behavior.d.ts.map +1 -1
  162. package/dist/esm/behavior/Behavior.js +15 -5
  163. package/dist/esm/behavior/Behavior.js.map +1 -1
  164. package/dist/esm/behavior/Events.d.ts +7 -7
  165. package/dist/esm/behavior/Events.d.ts.map +1 -1
  166. package/dist/esm/behavior/Events.js +1 -1
  167. package/dist/esm/behavior/Events.js.map +1 -1
  168. package/dist/esm/behavior/Transitions.d.ts +2 -3
  169. package/dist/esm/behavior/Transitions.d.ts.map +1 -1
  170. package/dist/esm/behavior/Transitions.js +1 -2
  171. package/dist/esm/behavior/Transitions.js.map +1 -1
  172. package/dist/esm/behavior/cluster/ClusterBehaviorType.js +2 -2
  173. package/dist/esm/behavior/cluster/ClusterBehaviorType.js.map +1 -1
  174. package/dist/esm/behavior/cluster/ClusterEvents.d.ts +1 -1
  175. package/dist/esm/behavior/cluster/ClusterEvents.d.ts.map +1 -1
  176. package/dist/esm/behavior/cluster/cluster-behavior-utils.js +1 -1
  177. package/dist/esm/behavior/cluster/cluster-behavior-utils.js.map +1 -1
  178. package/dist/esm/behavior/context/Contextual.js +1 -1
  179. package/dist/esm/behavior/context/Contextual.js.map +1 -1
  180. package/dist/esm/behavior/context/NodeActivity.d.ts +2 -4
  181. package/dist/esm/behavior/context/NodeActivity.d.ts.map +1 -1
  182. package/dist/esm/behavior/context/NodeActivity.js +5 -12
  183. package/dist/esm/behavior/context/NodeActivity.js.map +1 -1
  184. package/dist/esm/behavior/context/server/LocalActorContext.d.ts +2 -3
  185. package/dist/esm/behavior/context/server/LocalActorContext.d.ts.map +1 -1
  186. package/dist/esm/behavior/context/server/LocalActorContext.js +5 -5
  187. package/dist/esm/behavior/context/server/LocalActorContext.js.map +1 -1
  188. package/dist/esm/behavior/context/server/RemoteActorContext.d.ts +2 -6
  189. package/dist/esm/behavior/context/server/RemoteActorContext.d.ts.map +1 -1
  190. package/dist/esm/behavior/context/server/RemoteActorContext.js +27 -24
  191. package/dist/esm/behavior/context/server/RemoteActorContext.js.map +1 -1
  192. package/dist/esm/behavior/internal/BackingEvents.js +2 -2
  193. package/dist/esm/behavior/internal/BackingEvents.js.map +1 -1
  194. package/dist/esm/behavior/internal/BehaviorBacking.d.ts +2 -1
  195. package/dist/esm/behavior/internal/BehaviorBacking.d.ts.map +1 -1
  196. package/dist/esm/behavior/internal/BehaviorBacking.js +4 -0
  197. package/dist/esm/behavior/internal/BehaviorBacking.js.map +1 -1
  198. package/dist/esm/behavior/internal/Reactors.d.ts.map +1 -1
  199. package/dist/esm/behavior/internal/Reactors.js +2 -1
  200. package/dist/esm/behavior/internal/Reactors.js.map +1 -1
  201. package/dist/esm/behavior/state/managed/Datasource.d.ts.map +1 -1
  202. package/dist/esm/behavior/state/managed/Datasource.js +2 -1
  203. package/dist/esm/behavior/state/managed/Datasource.js.map +1 -1
  204. package/dist/esm/behavior/state/managed/Internal.js +2 -2
  205. package/dist/esm/behavior/state/managed/Internal.js.map +1 -1
  206. package/dist/esm/behavior/state/managed/values/BitmapManager.js +1 -1
  207. package/dist/esm/behavior/state/managed/values/BitmapManager.js.map +1 -1
  208. package/dist/esm/behavior/state/managed/values/StructManager.js +1 -1
  209. package/dist/esm/behavior/state/managed/values/StructManager.js.map +1 -1
  210. package/dist/esm/behavior/system/commissioning/CommissioningClient.d.ts.map +1 -1
  211. package/dist/esm/behavior/system/commissioning/CommissioningClient.js +7 -14
  212. package/dist/esm/behavior/system/commissioning/CommissioningClient.js.map +1 -1
  213. package/dist/esm/behavior/system/commissioning/CommissioningServer.d.ts +3 -2
  214. package/dist/esm/behavior/system/commissioning/CommissioningServer.d.ts.map +1 -1
  215. package/dist/esm/behavior/system/commissioning/CommissioningServer.js +3 -7
  216. package/dist/esm/behavior/system/commissioning/CommissioningServer.js.map +1 -1
  217. package/dist/esm/behavior/system/mqtt/MqttInterface.d.ts.map +1 -1
  218. package/dist/esm/behavior/system/mqtt/MqttInterface.js +91 -30
  219. package/dist/esm/behavior/system/mqtt/MqttInterface.js.map +1 -1
  220. package/dist/esm/behavior/system/network/NetworkRuntime.d.ts.map +1 -1
  221. package/dist/esm/behavior/system/network/NetworkRuntime.js +1 -3
  222. package/dist/esm/behavior/system/network/NetworkRuntime.js.map +1 -1
  223. package/dist/esm/behavior/system/network/ServerGroupNetworking.js +2 -2
  224. package/dist/esm/behavior/system/network/ServerGroupNetworking.js.map +1 -1
  225. package/dist/esm/behavior/system/network/ServerNetworkRuntime.d.ts.map +1 -1
  226. package/dist/esm/behavior/system/network/ServerNetworkRuntime.js +152 -14
  227. package/dist/esm/behavior/system/network/ServerNetworkRuntime.js.map +2 -2
  228. package/dist/esm/behavior/system/remote/RemoteInterface.d.ts +3 -2
  229. package/dist/esm/behavior/system/remote/RemoteInterface.d.ts.map +1 -1
  230. package/dist/esm/behavior/system/remote/RemoteInterface.js +76 -11
  231. package/dist/esm/behavior/system/remote/RemoteInterface.js.map +1 -1
  232. package/dist/esm/behavior/system/remote/api/Api.d.ts.map +1 -1
  233. package/dist/esm/behavior/system/remote/api/Api.js +4 -3
  234. package/dist/esm/behavior/system/remote/api/Api.js.map +1 -1
  235. package/dist/esm/behavior/system/sessions/SessionsBehavior.js +2 -2
  236. package/dist/esm/behavior/system/sessions/SessionsBehavior.js.map +1 -1
  237. package/dist/esm/behavior/system/subscriptions/SubscriptionsServer.d.ts.map +1 -1
  238. package/dist/esm/behavior/system/subscriptions/SubscriptionsServer.js +17 -14
  239. package/dist/esm/behavior/system/subscriptions/SubscriptionsServer.js.map +1 -1
  240. package/dist/esm/behavior/system/websocket/WebSocketInterface.d.ts.map +1 -1
  241. package/dist/esm/behavior/system/websocket/WebSocketInterface.js +12 -4
  242. package/dist/esm/behavior/system/websocket/WebSocketInterface.js.map +1 -1
  243. package/dist/esm/behaviors/access-control/AccessControlServer.js +1 -1
  244. package/dist/esm/behaviors/access-control/AccessControlServer.js.map +1 -1
  245. package/dist/esm/behaviors/administrator-commissioning/AdministratorCommissioningServer.d.ts.map +1 -1
  246. package/dist/esm/behaviors/administrator-commissioning/AdministratorCommissioningServer.js +66 -8
  247. package/dist/esm/behaviors/administrator-commissioning/AdministratorCommissioningServer.js.map +1 -1
  248. package/dist/esm/behaviors/basic-information/BasicInformationServer.js +2 -2
  249. package/dist/esm/behaviors/basic-information/BasicInformationServer.js.map +1 -1
  250. package/dist/esm/behaviors/general-commissioning/GeneralCommissioningServer.d.ts.map +1 -1
  251. package/dist/esm/behaviors/general-commissioning/GeneralCommissioningServer.js +13 -9
  252. package/dist/esm/behaviors/general-commissioning/GeneralCommissioningServer.js.map +1 -1
  253. package/dist/esm/behaviors/general-commissioning/ServerNodeFailsafeContext.d.ts +2 -3
  254. package/dist/esm/behaviors/general-commissioning/ServerNodeFailsafeContext.d.ts.map +1 -1
  255. package/dist/esm/behaviors/general-commissioning/ServerNodeFailsafeContext.js +2 -10
  256. package/dist/esm/behaviors/general-commissioning/ServerNodeFailsafeContext.js.map +1 -1
  257. package/dist/esm/behaviors/general-diagnostics/GeneralDiagnosticsServer.js +2 -2
  258. package/dist/esm/behaviors/general-diagnostics/GeneralDiagnosticsServer.js.map +1 -1
  259. package/dist/esm/behaviors/group-key-management/GroupKeyManagementServer.js +1 -1
  260. package/dist/esm/behaviors/group-key-management/GroupKeyManagementServer.js.map +1 -1
  261. package/dist/esm/behaviors/operational-credentials/OperationalCredentialsServer.d.ts +0 -1
  262. package/dist/esm/behaviors/operational-credentials/OperationalCredentialsServer.d.ts.map +1 -1
  263. package/dist/esm/behaviors/operational-credentials/OperationalCredentialsServer.js +15 -15
  264. package/dist/esm/behaviors/operational-credentials/OperationalCredentialsServer.js.map +1 -1
  265. package/dist/esm/behaviors/scenes-management/ScenesManagementServer.js +2 -2
  266. package/dist/esm/behaviors/scenes-management/ScenesManagementServer.js.map +1 -1
  267. package/dist/esm/behaviors/thermostat/AtomicWriteHandler.js +1 -1
  268. package/dist/esm/behaviors/thermostat/AtomicWriteHandler.js.map +1 -1
  269. package/dist/esm/behaviors/window-covering/WindowCoveringServer.d.ts.map +1 -1
  270. package/dist/esm/behaviors/window-covering/WindowCoveringServer.js +22 -9
  271. package/dist/esm/behaviors/window-covering/WindowCoveringServer.js.map +1 -1
  272. package/dist/esm/endpoint/Agent.js +1 -1
  273. package/dist/esm/endpoint/Agent.js.map +1 -1
  274. package/dist/esm/endpoint/Endpoint.d.ts +2 -1
  275. package/dist/esm/endpoint/Endpoint.d.ts.map +1 -1
  276. package/dist/esm/endpoint/Endpoint.js +96 -8
  277. package/dist/esm/endpoint/Endpoint.js.map +2 -2
  278. package/dist/esm/endpoint/properties/Behaviors.d.ts.map +1 -1
  279. package/dist/esm/endpoint/properties/Behaviors.js +11 -7
  280. package/dist/esm/endpoint/properties/Behaviors.js.map +1 -1
  281. package/dist/esm/endpoint/properties/Commands.js +1 -1
  282. package/dist/esm/endpoint/properties/Commands.js.map +1 -1
  283. package/dist/esm/endpoint/properties/EndpointLifecycle.d.ts.map +1 -1
  284. package/dist/esm/endpoint/properties/EndpointLifecycle.js +3 -0
  285. package/dist/esm/endpoint/properties/EndpointLifecycle.js.map +1 -1
  286. package/dist/esm/node/ClientNode.d.ts.map +1 -1
  287. package/dist/esm/node/ClientNode.js +2 -0
  288. package/dist/esm/node/ClientNode.js.map +1 -1
  289. package/dist/esm/node/Node.d.ts +2 -2
  290. package/dist/esm/node/Node.d.ts.map +1 -1
  291. package/dist/esm/node/Node.js +5 -4
  292. package/dist/esm/node/Node.js.map +1 -1
  293. package/dist/esm/node/ServerNode.d.ts.map +1 -1
  294. package/dist/esm/node/ServerNode.js +54 -1
  295. package/dist/esm/node/ServerNode.js.map +1 -1
  296. package/dist/esm/node/client/ClientCommandMethod.d.ts.map +1 -1
  297. package/dist/esm/node/client/ClientCommandMethod.js +26 -29
  298. package/dist/esm/node/client/ClientCommandMethod.js.map +1 -1
  299. package/dist/esm/node/client/NodePeerAddressStore.d.ts +3 -3
  300. package/dist/esm/node/client/NodePeerAddressStore.d.ts.map +1 -1
  301. package/dist/esm/node/client/NodePeerAddressStore.js.map +1 -1
  302. package/dist/esm/node/client/PeerBehavior.js +1 -1
  303. package/dist/esm/node/client/PeerBehavior.js.map +1 -1
  304. package/dist/esm/node/client/Peers.d.ts.map +1 -1
  305. package/dist/esm/node/client/Peers.js +15 -1
  306. package/dist/esm/node/client/Peers.js.map +1 -1
  307. package/dist/esm/node/integration/ProtocolService.d.ts.map +1 -1
  308. package/dist/esm/node/integration/ProtocolService.js +4 -2
  309. package/dist/esm/node/integration/ProtocolService.js.map +1 -1
  310. package/dist/esm/node/server/InteractionServer.d.ts.map +1 -1
  311. package/dist/esm/node/server/InteractionServer.js +59 -51
  312. package/dist/esm/node/server/InteractionServer.js.map +2 -2
  313. package/dist/esm/node/server/ServerEnvironment.js +1 -1
  314. package/dist/esm/node/server/ServerEnvironment.js.map +1 -1
  315. package/dist/esm/node/server/ServerSubscription.d.ts +61 -10
  316. package/dist/esm/node/server/ServerSubscription.d.ts.map +1 -1
  317. package/dist/esm/node/server/ServerSubscription.js +321 -159
  318. package/dist/esm/node/server/ServerSubscription.js.map +2 -2
  319. package/package.json +7 -7
  320. package/src/behavior/Behavior.ts +12 -0
  321. package/src/behavior/Events.ts +12 -8
  322. package/src/behavior/Transitions.ts +3 -3
  323. package/src/behavior/cluster/ClusterBehaviorType.ts +2 -2
  324. package/src/behavior/cluster/ClusterEvents.ts +1 -1
  325. package/src/behavior/context/NodeActivity.ts +4 -13
  326. package/src/behavior/context/server/LocalActorContext.ts +6 -8
  327. package/src/behavior/context/server/RemoteActorContext.ts +34 -33
  328. package/src/behavior/internal/BehaviorBacking.ts +5 -0
  329. package/src/behavior/internal/Reactors.ts +1 -0
  330. package/src/behavior/state/managed/Datasource.ts +2 -1
  331. package/src/behavior/system/commissioning/CommissioningClient.ts +6 -13
  332. package/src/behavior/system/commissioning/CommissioningServer.ts +6 -8
  333. package/src/behavior/system/mqtt/MqttInterface.ts +6 -2
  334. package/src/behavior/system/network/NetworkRuntime.ts +1 -3
  335. package/src/behavior/system/network/ServerGroupNetworking.ts +2 -2
  336. package/src/behavior/system/network/ServerNetworkRuntime.ts +49 -15
  337. package/src/behavior/system/remote/RemoteInterface.ts +22 -4
  338. package/src/behavior/system/remote/api/Api.ts +4 -3
  339. package/src/behavior/system/sessions/SessionsBehavior.ts +2 -2
  340. package/src/behavior/system/subscriptions/SubscriptionsServer.ts +15 -13
  341. package/src/behavior/system/websocket/WebSocketInterface.ts +2 -1
  342. package/src/behaviors/access-control/AccessControlServer.ts +1 -1
  343. package/src/behaviors/administrator-commissioning/AdministratorCommissioningServer.ts +14 -7
  344. package/src/behaviors/basic-information/BasicInformationServer.ts +2 -2
  345. package/src/behaviors/general-commissioning/GeneralCommissioningServer.ts +14 -9
  346. package/src/behaviors/general-commissioning/ServerNodeFailsafeContext.ts +3 -15
  347. package/src/behaviors/general-diagnostics/GeneralDiagnosticsServer.ts +1 -1
  348. package/src/behaviors/group-key-management/GroupKeyManagementServer.ts +1 -1
  349. package/src/behaviors/operational-credentials/OperationalCredentialsServer.ts +22 -19
  350. package/src/behaviors/scenes-management/ScenesManagementServer.ts +1 -1
  351. package/src/behaviors/thermostat/AtomicWriteHandler.ts +1 -1
  352. package/src/behaviors/window-covering/WindowCoveringServer.ts +24 -9
  353. package/src/endpoint/Endpoint.ts +21 -4
  354. package/src/endpoint/properties/Behaviors.ts +11 -6
  355. package/src/endpoint/properties/Commands.ts +1 -1
  356. package/src/endpoint/properties/EndpointLifecycle.ts +4 -0
  357. package/src/node/ClientNode.ts +3 -0
  358. package/src/node/Node.ts +3 -2
  359. package/src/node/ServerNode.ts +1 -0
  360. package/src/node/client/ClientCommandMethod.ts +31 -38
  361. package/src/node/client/NodePeerAddressStore.ts +3 -3
  362. package/src/node/client/Peers.ts +19 -1
  363. package/src/node/integration/ProtocolService.ts +4 -2
  364. package/src/node/server/InteractionServer.ts +62 -51
  365. package/src/node/server/ServerEnvironment.ts +1 -1
  366. package/src/node/server/ServerSubscription.ts +225 -153
@@ -19,7 +19,6 @@ import {
19
19
  DeviceCertification,
20
20
  DeviceCommissioner,
21
21
  Fabric,
22
- FabricAction,
23
22
  FabricManager,
24
23
  FabricTableFullError,
25
24
  MatterFabricConflictError,
@@ -269,19 +268,13 @@ export class OperationalCredentialsServer extends OperationalCredentialsBehavior
269
268
  return this.#mapNocErrors(error);
270
269
  }
271
270
 
272
- // The receiver SHALL create and add a new Access Control Entry using the CaseAdminSubject field to grant
273
- // subsequent Administer access to an Administrator member of the new Fabric.
274
- await this.endpoint.act(agent => agent.get(AccessControlServer).addDefaultCaseAcl(fabric, [caseAdminSubject]));
275
-
276
271
  const session = this.context.session;
277
272
  NodeSession.assert(session);
278
273
 
279
- await failsafeContext.addFabric(fabric);
280
-
281
274
  try {
282
275
  if (session.isPase) {
283
- logger.debug(`Add Fabric ${fabric.fabricIndex} to PASE session ${session.name}`);
284
- session.addAssociatedFabric(fabric);
276
+ logger.debug(`Add Fabric ${fabric.fabricIndex} to PASE session ${session.via}`);
277
+ session.fabric = fabric;
285
278
  }
286
279
 
287
280
  // Update attributes
@@ -294,10 +287,14 @@ export class OperationalCredentialsServer extends OperationalCredentialsBehavior
294
287
  }
295
288
  } catch (e) {
296
289
  // Fabric insertion into FabricManager is not currently transactional so we need to remove manually
297
- await fabric.remove(session.id);
290
+ await fabric.delete(this.context.exchange);
298
291
  throw e;
299
292
  }
300
293
 
294
+ // The receiver SHALL create and add a new Access Control Entry using the CaseAdminSubject field to grant
295
+ // subsequent Administer access to an Administrator member of the new Fabric.
296
+ await this.endpoint.act(agent => agent.get(AccessControlServer).addDefaultCaseAcl(fabric, [caseAdminSubject]));
297
+
301
298
  // TODO The incoming IPKValue SHALL be stored in the Fabric-scoped slot within the Group Key Management cluster
302
299
  // (see KeySetWrite), for subsequent use during CASE.
303
300
 
@@ -363,7 +360,7 @@ export class OperationalCredentialsServer extends OperationalCredentialsBehavior
363
360
  const updatedFabric = await timedOp.buildUpdatedFabric(nocValue, icacValue);
364
361
 
365
362
  // update FabricManager and Resumption records but leave current session intact
366
- await timedOp.updateFabric(updatedFabric);
363
+ await timedOp.replaceFabric(updatedFabric);
367
364
 
368
365
  return {
369
366
  statusCode: OperationalCredentials.NodeOperationalCertStatus.Ok,
@@ -397,7 +394,7 @@ export class OperationalCredentialsServer extends OperationalCredentialsBehavior
397
394
  override async removeFabric({ fabricIndex }: OperationalCredentials.RemoveFabricRequest) {
398
395
  assertRemoteActor(this.context);
399
396
 
400
- const fabric = this.env.get(FabricManager).findByIndex(fabricIndex);
397
+ const fabric = this.env.get(FabricManager).maybeForIndex(fabricIndex);
401
398
 
402
399
  if (fabric === undefined) {
403
400
  return {
@@ -406,7 +403,11 @@ export class OperationalCredentialsServer extends OperationalCredentialsBehavior
406
403
  };
407
404
  }
408
405
 
409
- await fabric.leave(this.context.session.id);
406
+ // We do not handle fabric management transactionally because of legacy FabricManager implementation, and if
407
+ // we leave the transaction open it will cause deadlock
408
+ await this.context.transaction.rollback();
409
+
410
+ await fabric.leave(this.context.exchange);
410
411
  // The state is updated on removal via commissionedFabricChanged event, see constructor
411
412
 
412
413
  return {
@@ -507,6 +508,9 @@ export class OperationalCredentialsServer extends OperationalCredentialsBehavior
507
508
  }
508
509
 
509
510
  async #updateFabrics() {
511
+ await this.context.transaction.addResources(this);
512
+ await this.context.transaction.begin();
513
+
510
514
  const fabrics = this.env.get(FabricManager);
511
515
  this.state.fabrics = fabrics.map(fabric => ({
512
516
  fabricId: fabric.fabricId,
@@ -548,17 +552,17 @@ export class OperationalCredentialsServer extends OperationalCredentialsBehavior
548
552
 
549
553
  async #handleAddedFabric({ fabricIndex }: Fabric) {
550
554
  await this.#updateFabrics();
551
- this.agent.get(CommissioningServer).handleFabricChange(fabricIndex, FabricAction.Added);
555
+ this.agent.get(CommissioningServer).handleFabricChange(fabricIndex, "added");
552
556
  }
553
557
 
554
558
  async #handleUpdatedFabric({ fabricIndex }: Fabric) {
555
559
  await this.#updateFabrics();
556
- this.agent.get(CommissioningServer).handleFabricChange(fabricIndex, FabricAction.Updated);
560
+ this.agent.get(CommissioningServer).handleFabricChange(fabricIndex, "updated");
557
561
  }
558
562
 
559
563
  async #handleRemovedFabric({ fabricIndex }: Fabric) {
560
564
  await this.#updateFabrics();
561
- this.agent.get(CommissioningServer).handleFabricChange(fabricIndex, FabricAction.Removed);
565
+ this.agent.get(CommissioningServer).handleFabricChange(fabricIndex, "deleted");
562
566
  }
563
567
 
564
568
  async #handleFailsafeClosed() {
@@ -568,8 +572,8 @@ export class OperationalCredentialsServer extends OperationalCredentialsBehavior
568
572
  async #nodeOnline() {
569
573
  const fabricManager = this.env.get(FabricManager);
570
574
  this.reactTo(fabricManager.events.added, this.#handleAddedFabric, { lock: true });
571
- this.reactTo(fabricManager.events.updated, this.#handleUpdatedFabric, { lock: true });
572
- this.reactTo(fabricManager.events.deleted, this.#handleRemovedFabric, { lock: true });
575
+ this.reactTo(fabricManager.events.replaced, this.#handleUpdatedFabric, { lock: true });
576
+ this.reactTo(fabricManager.events.deleting, this.#handleRemovedFabric, { lock: true });
573
577
  this.reactTo(fabricManager.events.failsafeClosed, this.#handleFailsafeClosed, { lock: true });
574
578
  await this.#updateFabrics();
575
579
  }
@@ -582,7 +586,6 @@ export class OperationalCredentialsServer extends OperationalCredentialsBehavior
582
586
  export namespace OperationalCredentialsServer {
583
587
  export class Internal {
584
588
  certification?: DeviceCertification;
585
- commissionedFabric?: FabricIndex;
586
589
  }
587
590
 
588
591
  export class State extends OperationalCredentialsBehavior.State {
@@ -218,7 +218,7 @@ export class ScenesManagementServer extends ScenesManagementBase {
218
218
 
219
219
  // When a fabric git removed we need to check if the active scene is considered from that fabric
220
220
  // Data cleanup happens automatically
221
- this.reactTo(fabricManager.events.deleted, this.#handleDeleteFabric);
221
+ this.reactTo(fabricManager.events.deleting, this.#handleDeleteFabric);
222
222
  }
223
223
 
224
224
  /**
@@ -48,7 +48,7 @@ export class AtomicWriteHandler {
48
48
  #pendingWrites = new BasicSet<AtomicWriteState>();
49
49
 
50
50
  constructor(fabricManager: FabricManager) {
51
- this.#observers.on(fabricManager.events.deleted, fabric => this.#handleFabricRemoval(fabric));
51
+ this.#observers.on(fabricManager.events.deleting, fabric => this.#handleFabricRemoval(fabric));
52
52
  }
53
53
 
54
54
  static [Environmental.create](env: Environment) {
@@ -5,7 +5,7 @@
5
5
  */
6
6
 
7
7
  import { WindowCovering } from "#clusters/window-covering";
8
- import { Diagnostic, ImplementationError, isDeepEqual, Logger, MaybePromise } from "#general";
8
+ import { Diagnostic, ImplementationError, isDeepEqual, Logger, MaybePromise, Worker } from "#general";
9
9
  import { ClusterType, StatusCode, StatusResponseError, TypeFromPartialBitSchema } from "#types";
10
10
  import { WindowCoveringBehavior } from "./WindowCoveringBehavior.js";
11
11
 
@@ -383,7 +383,13 @@ export class WindowCoveringBaseServer extends WindowCoveringBase {
383
383
  */
384
384
  #prepareMovement(type: MovementType, direction: MovementDirection, targetPercent100ths?: number): void {
385
385
  if (this.internal.supportsCalibration && this.internal.calibrationMode === CalibrationMode.Enabled) {
386
- return this.env.runtime.add(this.#executeCalibrationAndMove(type, direction, targetPercent100ths));
386
+ return this.env.runtime.add(
387
+ Worker({
388
+ name: `calibrating ${this}`,
389
+ done: this.#executeCalibrationAndMove(type, direction, targetPercent100ths),
390
+ lifetime: this.lifetime,
391
+ }),
392
+ );
387
393
  }
388
394
  if (type === MovementType.Lift && this.state.configStatus.liftMovementReversed) {
389
395
  logger.debug("Lift movement is reversed");
@@ -439,14 +445,22 @@ export class WindowCoveringBaseServer extends WindowCoveringBase {
439
445
  break;
440
446
  }
441
447
 
442
- this.env.runtime.add(
443
- this.handleMovement(
444
- type,
445
- type === MovementType.Lift && !!this.state.configStatus.liftMovementReversed,
446
- direction,
447
- targetPercent100ths,
448
- ),
448
+ const done = this.handleMovement(
449
+ type,
450
+ type === MovementType.Lift && !!this.state.configStatus.liftMovementReversed,
451
+ direction,
452
+ targetPercent100ths,
449
453
  );
454
+
455
+ if (done) {
456
+ this.env.runtime.add(
457
+ Worker({
458
+ name: `moving ${this}`,
459
+ done,
460
+ lifetime: this.lifetime,
461
+ }),
462
+ );
463
+ }
450
464
  }
451
465
 
452
466
  #executeCalibrationAndMove(type: MovementType, direction: MovementDirection, targetPercent100ths?: number) {
@@ -455,6 +469,7 @@ export class WindowCoveringBaseServer extends WindowCoveringBase {
455
469
  this.internal.calibrationMode = CalibrationMode.Running;
456
470
  calibration = this.executeCalibration();
457
471
  }
472
+
458
473
  return MaybePromise.then(calibration, () => {
459
474
  this.internal.calibrationMode = CalibrationMode.Disabled;
460
475
  return this.#prepareMovement(type, direction, targetPercent100ths);
@@ -16,6 +16,7 @@ import {
16
16
  Immutable,
17
17
  ImplementationError,
18
18
  Lifecycle,
19
+ Lifetime,
19
20
  Logger,
20
21
  MaybePromise,
21
22
  Observable,
@@ -713,7 +714,7 @@ export class Endpoint<T extends EndpointType = EndpointType.Empty> {
713
714
  context => {
714
715
  return actor(this.agentFor(context));
715
716
  },
716
- { activity: this.#activity },
717
+ { activity: this.#activity, lifetime: this.construction },
717
718
  );
718
719
  }
719
720
 
@@ -721,18 +722,29 @@ export class Endpoint<T extends EndpointType = EndpointType.Empty> {
721
722
  * Perform "soft" reset of the endpoint, reverting all in-memory structures to uninitialized.
722
723
  */
723
724
  async reset() {
725
+ using _resetting = this.construction.join("resetting");
726
+
724
727
  try {
725
728
  // Revert lifecycle to uninitialized
726
729
  this.lifecycle.resetting();
727
730
 
728
731
  // Reset child parts
729
- await this.parts.reset();
732
+ {
733
+ using _parts = _resetting.join("parts");
734
+ await this.parts.reset();
735
+ }
730
736
 
731
737
  // Reset behaviors
732
- await this.behaviors.close();
738
+ {
739
+ using _behaviors = _resetting.join("behaviors");
740
+ await this.behaviors.close();
741
+ }
733
742
 
734
743
  // Notify
735
- await this.lifecycle.reset.emit();
744
+ {
745
+ using _lifecycle = _resetting.join("lifecycle");
746
+ await this.lifecycle.reset.emit();
747
+ }
736
748
 
737
749
  // Set construction to inactive so we can restart
738
750
  this.construction.setStatus(Lifecycle.Status.Inactive);
@@ -753,6 +765,7 @@ export class Endpoint<T extends EndpointType = EndpointType.Empty> {
753
765
  * Erase all persisted data and destroy the endpoint.
754
766
  */
755
767
  async delete() {
768
+ this.lifecycle.change(EndpointLifecycle.Change.Destroying);
756
769
  await this.erase();
757
770
  await this.close();
758
771
  }
@@ -901,6 +914,10 @@ export class Endpoint<T extends EndpointType = EndpointType.Empty> {
901
914
  ];
902
915
  }
903
916
 
917
+ get [Lifetime.owner](): Lifetime.Owner | undefined {
918
+ return this.#owner?.construction;
919
+ }
920
+
904
921
  /**
905
922
  * Diagnostic information regarding endpoint state.
906
923
  */
@@ -260,7 +260,10 @@ export class Behaviors {
260
260
  const activity = this.#endpoint.env.get(NodeActivity);
261
261
 
262
262
  // Perform initialization
263
- let promise = LocalActorContext.act(`initialize<${this.#endpoint}>`, initializeBehaviors, { activity });
263
+ let promise = LocalActorContext.act(`initialize<${this.#endpoint}>`, initializeBehaviors, {
264
+ activity,
265
+ lifetime: this.#endpoint.construction,
266
+ });
264
267
 
265
268
  // Once behaviors are ready the endpoint we consider the endpoint "ready"
266
269
  const onReady = () => {
@@ -443,10 +446,12 @@ export class Behaviors {
443
446
  `close<${this.#endpoint}>`,
444
447
  dispose,
445
448
 
446
- // Note - do not close in an activity because this can cause deadlock
447
- //, {
448
- // activity: this.#endpoint.env.get(NodeActivity),
449
- //},
449
+ {
450
+ lifetime: this.#endpoint.construction,
451
+
452
+ // Note - do not close in an activity because this can cause deadlock
453
+ // activity: this.#endpoint.env.get(NodeActivity),
454
+ },
450
455
  );
451
456
  }
452
457
 
@@ -649,7 +654,7 @@ export class Behaviors {
649
654
  const backing = this.#backingFor(type);
650
655
  return backing.construction.ready;
651
656
  },
652
- { activity: this.#endpoint.env.get(NodeActivity) },
657
+ { activity: this.#endpoint.env.get(NodeActivity), lifetime: this.#endpoint.construction },
653
658
  );
654
659
 
655
660
  if (MaybePromise.is(result)) {
@@ -58,7 +58,7 @@ function Implementation(endpoint: Endpoint, type: Behavior.Type, name: string):
58
58
  }
59
59
 
60
60
  // Invoke with a dedicated context
61
- const context2 = LocalActorContext.open(`invoke-${name}`);
61
+ const context2 = LocalActorContext.open(`invoke-${name}`, { lifetime: endpoint.construction });
62
62
  try {
63
63
  return Promise.resolve(context2.resolve(invokerFor(context2)(input, context)));
64
64
  } catch (e) {
@@ -171,6 +171,10 @@ export class EndpointLifecycle {
171
171
  this.#isInstalled = true;
172
172
  break;
173
173
 
174
+ case EndpointLifecycle.Change.Destroying:
175
+ this.#isReady = false;
176
+ break;
177
+
174
178
  case EndpointLifecycle.Change.Ready:
175
179
  // Sanity checks
176
180
  if (!this.#hasId) {
@@ -12,6 +12,7 @@ import { NetworkRuntime } from "#behavior/system/network/NetworkRuntime.js";
12
12
  import { Agent } from "#endpoint/Agent.js";
13
13
  import { ClientNodeEndpoints } from "#endpoint/properties/ClientNodeEndpoints.js";
14
14
  import { EndpointInitializer } from "#endpoint/properties/EndpointInitializer.js";
15
+ import { EndpointLifecycle } from "#endpoint/properties/EndpointLifecycle.js";
15
16
  import { EndpointType } from "#endpoint/type/EndpointType.js";
16
17
  import { MutableEndpoint } from "#endpoint/type/MutableEndpoint.js";
17
18
  import { Diagnostic, Identity, Lifecycle, Logger, MaybePromise } from "#general";
@@ -115,6 +116,8 @@ export class ClientNode extends Node<ClientNode.RootEndpoint> {
115
116
  * If you can not reach the device, use {@link delete} instead.
116
117
  */
117
118
  async decommission() {
119
+ this.lifecycle.change(EndpointLifecycle.Change.Destroying);
120
+
118
121
  if (this.lifecycle.isCommissioned) {
119
122
  this.statusUpdate("decommissioning");
120
123
 
package/src/node/Node.ts CHANGED
@@ -17,12 +17,12 @@ import { MutableEndpoint } from "#endpoint/type/MutableEndpoint.js";
17
17
  import {
18
18
  Construction,
19
19
  Diagnostic,
20
+ DiagnosticPresentation,
20
21
  DiagnosticSource,
21
22
  Environment,
22
23
  Identity,
23
24
  ImplementationError,
24
25
  Logger,
25
- RuntimeService,
26
26
  } from "#general";
27
27
  import { Interactable } from "#protocol";
28
28
  import type { EndpointNumber } from "#types";
@@ -218,7 +218,7 @@ export abstract class Node<T extends Node.CommonRootEndpoint = Node.CommonRootEn
218
218
 
219
219
  protected abstract prepareRuntimeShutdown(): Promise<void>;
220
220
 
221
- get [RuntimeService.label]() {
221
+ get [DiagnosticPresentation.name]() {
222
222
  return ["Runtime for", Diagnostic.strong(this.toString())];
223
223
  }
224
224
 
@@ -247,6 +247,7 @@ export abstract class Node<T extends Node.CommonRootEndpoint = Node.CommonRootEn
247
247
  await this.cancelWithMutex();
248
248
  await super[Construction.destruct]();
249
249
  DiagnosticSource.delete(this);
250
+ this.#environment[Symbol.dispose]();
250
251
  }
251
252
  }
252
253
 
@@ -121,6 +121,7 @@ export class ServerNode<T extends ServerNode.RootEndpoint = ServerNode.RootEndpo
121
121
  * Perform a factory reset of the node.
122
122
  */
123
123
  override async erase() {
124
+ using _erasing = this.construction.join("erasing");
124
125
  await this.lifecycle.mutex.produce(this.eraseWithMutex.bind(this));
125
126
  }
126
127
 
@@ -17,47 +17,40 @@ export function ClientCommandMethod(name: string) {
17
17
  // This is our usual hack to give a function a proper name in stack traces
18
18
  const temp = {
19
19
  // The actual implementation
20
- [name](this: ClusterBehavior, fields?: {}) {
21
- return invokeOnPeer(this, name, fields);
22
- },
23
- };
24
-
25
- return temp[name];
26
- }
27
-
28
- /**
29
- * Invokes a command remotely on behalf of client behaviors.
30
- */
31
- async function invokeOnPeer(behavior: ClusterBehavior, command: string, fields?: {}) {
32
- const node = behavior.env.get(Node) as ClientNode;
20
+ async [name](this: ClusterBehavior, fields?: {}) {
21
+ const node = this.env.get(Node) as ClientNode;
33
22
 
34
- // TODO when implementing TCP add needed logic for Large messages
35
- const chunks = (node.interaction as ClientInteraction).invoke(
36
- Invoke({
37
- commands: [
38
- Invoke.ConcreteCommandRequest<any>({
39
- endpoint: behavior.endpoint,
40
- cluster: behavior.cluster,
41
- command,
42
- fields,
23
+ // TODO when implementing TCP add needed logic for Large messages
24
+ const chunks = (node.interaction as ClientInteraction).invoke(
25
+ Invoke({
26
+ commands: [
27
+ Invoke.ConcreteCommandRequest<any>({
28
+ endpoint: this.endpoint,
29
+ cluster: this.cluster,
30
+ command: name,
31
+ fields,
32
+ }),
33
+ ],
43
34
  }),
44
- ],
45
- }),
46
- );
35
+ );
47
36
 
48
- for await (const chunk of chunks) {
49
- for (const entry of chunk) {
50
- // We send only one command, so we only get one response back
51
- switch (entry.kind) {
52
- case "cmd-status":
53
- if (entry.status !== Status.Success) {
54
- throw StatusResponseError.create(entry.status, undefined, entry.clusterStatus);
55
- }
56
- return;
37
+ for await (const chunk of chunks) {
38
+ for (const entry of chunk) {
39
+ // We send only one command, so we only get one response back
40
+ switch (entry.kind) {
41
+ case "cmd-status":
42
+ if (entry.status !== Status.Success) {
43
+ throw StatusResponseError.create(entry.status, undefined, entry.clusterStatus);
44
+ }
45
+ return;
57
46
 
58
- case "cmd-response":
59
- return entry.data;
47
+ case "cmd-response":
48
+ return entry.data;
49
+ }
50
+ }
60
51
  }
61
- }
62
- }
52
+ },
53
+ };
54
+
55
+ return temp[name];
63
56
  }
@@ -8,7 +8,7 @@ import { RemoteDescriptor } from "#behavior/system/commissioning/RemoteDescripto
8
8
  import type { ClientNode } from "#node/ClientNode.js";
9
9
  import { IdentityService } from "#node/server/IdentityService.js";
10
10
  import type { ServerNode } from "#node/ServerNode.js";
11
- import { OperationalPeer, PeerAddress, PeerAddressMap, PeerAddressStore } from "#protocol";
11
+ import { PeerAddress, PeerAddressMap, PeerAddressStore, PeerDescriptor } from "#protocol";
12
12
  import { FabricIndex, NodeId } from "#types";
13
13
  import { Crypto, ServerAddress, ServerAddressUdp } from "@matter/general";
14
14
 
@@ -50,7 +50,7 @@ export class NodePeerAddressStore extends PeerAddressStore {
50
50
  return address;
51
51
  }
52
52
 
53
- loadPeers(): OperationalPeer[] {
53
+ loadPeers(): PeerDescriptor[] {
54
54
  this.#assignedAddresses = new PeerAddressMap();
55
55
  return [...this.#owner.peers]
56
56
  .map(node => {
@@ -72,7 +72,7 @@ export class NodePeerAddressStore extends PeerAddressStore {
72
72
  .filter(addr => addr !== undefined);
73
73
  }
74
74
 
75
- async updatePeer(peer: OperationalPeer) {
75
+ async updatePeer(peer: PeerDescriptor) {
76
76
  const node = this.#owner.peers.get(peer.address);
77
77
  if (!node) {
78
78
  return;
@@ -33,7 +33,7 @@ import {
33
33
  } from "#general";
34
34
  import { ClientGroup } from "#node/ClientGroup.js";
35
35
  import { InteractionServer } from "#node/server/InteractionServer.js";
36
- import { ClientSubscriptionHandler, ClientSubscriptions, FabricManager, PeerAddress } from "#protocol";
36
+ import { ClientSubscriptionHandler, ClientSubscriptions, FabricManager, PeerAddress, PeerSet } from "#protocol";
37
37
  import { ServerNodeStore } from "#storage/server/ServerNodeStore.js";
38
38
  import { FabricIndex } from "@matter/types";
39
39
  import { ClientNode } from "../ClientNode.js";
@@ -351,12 +351,30 @@ export class Peers extends EndpointContainer<ClientNode> {
351
351
  return;
352
352
  }
353
353
 
354
+ setPeerLimits();
355
+
354
356
  node.eventsOf(type).leave?.on(({ fabricIndex }) => this.#onLeave(node, fabricIndex));
355
357
  node.eventsOf(type).shutDown?.on(() => this.#onShutdown(node));
358
+ node.eventsOf(type).capabilityMinima$Changed.on(setPeerLimits);
359
+
360
+ function setPeerLimits() {
361
+ const peerAddress = node.maybeStateOf(CommissioningClient)?.peerAddress;
362
+ if (peerAddress) {
363
+ node.env.get(PeerSet).for(peerAddress).limits = node.stateOf(type).capabilityMinima;
364
+ }
365
+ }
356
366
  }
357
367
 
358
368
  #onLeave(node: ClientNode, fabricIndex: FabricIndex) {
369
+ if (!node.lifecycle.isReady) {
370
+ return;
371
+ }
372
+
359
373
  this.#mutex.run(async () => {
374
+ if (!node.lifecycle.isReady) {
375
+ return;
376
+ }
377
+
360
378
  const { fabrics: peerFabrics } = node.maybeStateOf(OperationalCredentialsClient) ?? {};
361
379
  const peerFabric = peerFabrics?.find(fabric => fabric.fabricIndex === fabricIndex);
362
380
  if (!peerFabric) {
@@ -39,6 +39,7 @@ import {
39
39
  EventTypeProtocol,
40
40
  FabricManager,
41
41
  hasRemoteActor,
42
+ Mark,
42
43
  OccurrenceManager,
43
44
  toWildcardOrHexPath,
44
45
  Val,
@@ -148,7 +149,7 @@ class NodeState {
148
149
  if (!fabrics) {
149
150
  fabrics = node.env.get(FabricManager);
150
151
  }
151
- return fabrics.findByIndex(index)?.nodeId;
152
+ return fabrics.maybeForIndex(index)?.nodeId;
152
153
  },
153
154
 
154
155
  get eventHandler() {
@@ -562,7 +563,8 @@ function invokeCommand(
562
563
  const context = session as ActionContext;
563
564
 
564
565
  logger.info(
565
- "Invoke «",
566
+ "Invoke",
567
+ Mark.INBOUND,
566
568
  Diagnostic.strong(`${path.toString()}.${command.name}`),
567
569
  session.transaction.via,
568
570
  requestDiagnostic,