@matter/protocol 0.16.0-alpha.0-20251213-e83db3732 → 0.16.0-alpha.0-20251217-038f88085

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 (309) hide show
  1. package/LICENSE +1 -1
  2. package/dist/cjs/action/client/ClientInteraction.d.ts +12 -5
  3. package/dist/cjs/action/client/ClientInteraction.d.ts.map +1 -1
  4. package/dist/cjs/action/client/ClientInteraction.js +39 -15
  5. package/dist/cjs/action/client/ClientInteraction.js.map +1 -1
  6. package/dist/cjs/action/client/ClientRead.d.ts +10 -0
  7. package/dist/cjs/action/client/ClientRead.d.ts.map +1 -0
  8. package/dist/cjs/action/client/ClientRead.js +22 -0
  9. package/dist/cjs/action/client/ClientRead.js.map +6 -0
  10. package/dist/cjs/action/client/ClientRequest.d.ts +20 -0
  11. package/dist/cjs/action/client/ClientRequest.d.ts.map +1 -0
  12. package/dist/cjs/action/client/ClientRequest.js +22 -0
  13. package/dist/cjs/action/client/ClientRequest.js.map +6 -0
  14. package/dist/cjs/action/client/ClientWrite.d.ts +10 -0
  15. package/dist/cjs/action/client/ClientWrite.d.ts.map +1 -0
  16. package/dist/cjs/action/client/ClientWrite.js +22 -0
  17. package/dist/cjs/action/client/ClientWrite.js.map +6 -0
  18. package/dist/cjs/action/client/QueuedClientInteraction.d.ts +49 -0
  19. package/dist/cjs/action/client/QueuedClientInteraction.d.ts.map +1 -0
  20. package/dist/cjs/action/client/QueuedClientInteraction.js +160 -0
  21. package/dist/cjs/action/client/QueuedClientInteraction.js.map +6 -0
  22. package/dist/cjs/action/client/index.d.ts +4 -0
  23. package/dist/cjs/action/client/index.d.ts.map +1 -1
  24. package/dist/cjs/action/client/index.js +4 -0
  25. package/dist/cjs/action/client/index.js.map +1 -1
  26. package/dist/cjs/action/client/subscription/ClientSubscribe.d.ts +2 -1
  27. package/dist/cjs/action/client/subscription/ClientSubscribe.d.ts.map +1 -1
  28. package/dist/cjs/action/client/subscription/ClientSubscriptionHandler.d.ts.map +1 -1
  29. package/dist/cjs/action/client/subscription/ClientSubscriptionHandler.js +14 -3
  30. package/dist/cjs/action/client/subscription/ClientSubscriptionHandler.js.map +1 -1
  31. package/dist/cjs/action/client/subscription/SustainedSubscription.d.ts +1 -1
  32. package/dist/cjs/action/client/subscription/SustainedSubscription.d.ts.map +1 -1
  33. package/dist/cjs/action/client/subscription/SustainedSubscription.js +1 -4
  34. package/dist/cjs/action/client/subscription/SustainedSubscription.js.map +1 -1
  35. package/dist/cjs/action/request/Invoke.d.ts +7 -1
  36. package/dist/cjs/action/request/Invoke.d.ts.map +1 -1
  37. package/dist/cjs/action/request/Invoke.js +0 -3
  38. package/dist/cjs/action/request/Invoke.js.map +1 -1
  39. package/dist/cjs/action/request/Read.d.ts.map +1 -1
  40. package/dist/cjs/action/request/Read.js +3 -2
  41. package/dist/cjs/action/request/Read.js.map +1 -1
  42. package/dist/cjs/action/request/Specifier.d.ts +1 -1
  43. package/dist/cjs/action/request/Specifier.d.ts.map +1 -1
  44. package/dist/cjs/action/request/Specifier.js +3 -0
  45. package/dist/cjs/action/request/Specifier.js.map +1 -1
  46. package/dist/cjs/action/request/Write.d.ts +1 -0
  47. package/dist/cjs/action/request/Write.d.ts.map +1 -1
  48. package/dist/cjs/action/request/Write.js +10 -2
  49. package/dist/cjs/action/request/Write.js.map +1 -1
  50. package/dist/cjs/action/response/ReadResult.d.ts +1 -1
  51. package/dist/cjs/action/response/ReadResult.d.ts.map +1 -1
  52. package/dist/cjs/cluster/client/ClusterClientTypes.d.ts +37 -8
  53. package/dist/cjs/cluster/client/ClusterClientTypes.d.ts.map +1 -1
  54. package/dist/cjs/cluster/client/index.d.ts +0 -3
  55. package/dist/cjs/cluster/client/index.d.ts.map +1 -1
  56. package/dist/cjs/cluster/client/index.js +0 -3
  57. package/dist/cjs/cluster/client/index.js.map +1 -1
  58. package/dist/cjs/interaction/InteractionMessenger.d.ts.map +1 -1
  59. package/dist/cjs/interaction/InteractionMessenger.js +3 -2
  60. package/dist/cjs/interaction/InteractionMessenger.js.map +1 -1
  61. package/dist/cjs/interaction/SubscriptionClient.d.ts.map +1 -1
  62. package/dist/cjs/interaction/SubscriptionClient.js +2 -1
  63. package/dist/cjs/interaction/SubscriptionClient.js.map +1 -1
  64. package/dist/cjs/interaction/index.d.ts +1 -1
  65. package/dist/cjs/interaction/index.d.ts.map +1 -1
  66. package/dist/cjs/interaction/index.js +1 -1
  67. package/dist/cjs/interaction/index.js.map +1 -1
  68. package/dist/cjs/peer/CommissioningError.d.ts +13 -0
  69. package/dist/cjs/peer/CommissioningError.d.ts.map +1 -0
  70. package/dist/cjs/peer/CommissioningError.js +32 -0
  71. package/dist/cjs/peer/CommissioningError.js.map +6 -0
  72. package/dist/cjs/peer/ControllerCommissioner.d.ts +2 -3
  73. package/dist/cjs/peer/ControllerCommissioner.d.ts.map +1 -1
  74. package/dist/cjs/peer/ControllerCommissioner.js +20 -13
  75. package/dist/cjs/peer/ControllerCommissioner.js.map +2 -2
  76. package/dist/cjs/peer/ControllerCommissioningFlow.d.ts +7 -16
  77. package/dist/cjs/peer/ControllerCommissioningFlow.d.ts.map +1 -1
  78. package/dist/cjs/peer/ControllerCommissioningFlow.js +395 -178
  79. package/dist/cjs/peer/ControllerCommissioningFlow.js.map +1 -1
  80. package/dist/cjs/peer/ControllerDiscovery.d.ts +4 -0
  81. package/dist/cjs/peer/ControllerDiscovery.d.ts.map +1 -1
  82. package/dist/cjs/peer/ControllerDiscovery.js +6 -3
  83. package/dist/cjs/peer/ControllerDiscovery.js.map +1 -1
  84. package/dist/cjs/peer/InteractionQueue.d.ts +2 -2
  85. package/dist/cjs/peer/InteractionQueue.d.ts.map +1 -1
  86. package/dist/cjs/peer/InteractionQueue.js +1 -1
  87. package/dist/cjs/peer/InteractionQueue.js.map +1 -1
  88. package/dist/cjs/peer/PeerAddressStore.d.ts +0 -9
  89. package/dist/cjs/peer/PeerAddressStore.d.ts.map +1 -1
  90. package/dist/cjs/peer/PeerAddressStore.js.map +1 -1
  91. package/dist/cjs/peer/PeerSet.d.ts +0 -2
  92. package/dist/cjs/peer/PeerSet.d.ts.map +1 -1
  93. package/dist/cjs/peer/PeerSet.js +32 -18
  94. package/dist/cjs/peer/PeerSet.js.map +1 -1
  95. package/dist/cjs/peer/PhysicalDeviceProperties.js +1 -1
  96. package/dist/cjs/peer/PhysicalDeviceProperties.js.map +1 -1
  97. package/dist/cjs/peer/index.d.ts +1 -0
  98. package/dist/cjs/peer/index.d.ts.map +1 -1
  99. package/dist/cjs/peer/index.js +1 -0
  100. package/dist/cjs/peer/index.js.map +1 -1
  101. package/dist/cjs/protocol/DeviceCommissioner.d.ts.map +1 -1
  102. package/dist/cjs/protocol/DeviceCommissioner.js.map +1 -1
  103. package/dist/cjs/protocol/ExchangeManager.js +2 -2
  104. package/dist/cjs/protocol/ExchangeManager.js.map +1 -1
  105. package/dist/cjs/protocol/ExchangeProvider.d.ts +13 -4
  106. package/dist/cjs/protocol/ExchangeProvider.d.ts.map +1 -1
  107. package/dist/cjs/protocol/ExchangeProvider.js +5 -3
  108. package/dist/cjs/protocol/ExchangeProvider.js.map +1 -1
  109. package/dist/cjs/session/NodeSession.d.ts +5 -2
  110. package/dist/cjs/session/NodeSession.d.ts.map +1 -1
  111. package/dist/cjs/session/NodeSession.js +5 -4
  112. package/dist/cjs/session/NodeSession.js.map +1 -1
  113. package/dist/cjs/session/Session.d.ts +5 -3
  114. package/dist/cjs/session/Session.d.ts.map +1 -1
  115. package/dist/cjs/session/Session.js +8 -4
  116. package/dist/cjs/session/Session.js.map +1 -1
  117. package/dist/cjs/session/SessionManager.d.ts +8 -0
  118. package/dist/cjs/session/SessionManager.d.ts.map +1 -1
  119. package/dist/cjs/session/SessionManager.js +16 -2
  120. package/dist/cjs/session/SessionManager.js.map +1 -1
  121. package/dist/esm/action/client/ClientInteraction.d.ts +12 -5
  122. package/dist/esm/action/client/ClientInteraction.d.ts.map +1 -1
  123. package/dist/esm/action/client/ClientInteraction.js +42 -16
  124. package/dist/esm/action/client/ClientInteraction.js.map +1 -1
  125. package/dist/esm/action/client/ClientRead.d.ts +10 -0
  126. package/dist/esm/action/client/ClientRead.d.ts.map +1 -0
  127. package/dist/esm/action/client/ClientRead.js +6 -0
  128. package/dist/esm/action/client/ClientRead.js.map +6 -0
  129. package/dist/esm/action/client/ClientRequest.d.ts +20 -0
  130. package/dist/esm/action/client/ClientRequest.d.ts.map +1 -0
  131. package/dist/esm/action/client/ClientRequest.js +6 -0
  132. package/dist/esm/action/client/ClientRequest.js.map +6 -0
  133. package/dist/esm/action/client/ClientWrite.d.ts +10 -0
  134. package/dist/esm/action/client/ClientWrite.d.ts.map +1 -0
  135. package/dist/esm/action/client/ClientWrite.js +6 -0
  136. package/dist/esm/action/client/ClientWrite.js.map +6 -0
  137. package/dist/esm/action/client/QueuedClientInteraction.d.ts +49 -0
  138. package/dist/esm/action/client/QueuedClientInteraction.d.ts.map +1 -0
  139. package/dist/esm/action/client/QueuedClientInteraction.js +140 -0
  140. package/dist/esm/action/client/QueuedClientInteraction.js.map +6 -0
  141. package/dist/esm/action/client/index.d.ts +4 -0
  142. package/dist/esm/action/client/index.d.ts.map +1 -1
  143. package/dist/esm/action/client/index.js +4 -0
  144. package/dist/esm/action/client/index.js.map +1 -1
  145. package/dist/esm/action/client/subscription/ClientSubscribe.d.ts +2 -1
  146. package/dist/esm/action/client/subscription/ClientSubscribe.d.ts.map +1 -1
  147. package/dist/esm/action/client/subscription/ClientSubscriptionHandler.d.ts.map +1 -1
  148. package/dist/esm/action/client/subscription/ClientSubscriptionHandler.js +14 -3
  149. package/dist/esm/action/client/subscription/ClientSubscriptionHandler.js.map +1 -1
  150. package/dist/esm/action/client/subscription/SustainedSubscription.d.ts +1 -1
  151. package/dist/esm/action/client/subscription/SustainedSubscription.d.ts.map +1 -1
  152. package/dist/esm/action/client/subscription/SustainedSubscription.js +1 -4
  153. package/dist/esm/action/client/subscription/SustainedSubscription.js.map +1 -1
  154. package/dist/esm/action/request/Invoke.d.ts +7 -1
  155. package/dist/esm/action/request/Invoke.d.ts.map +1 -1
  156. package/dist/esm/action/request/Invoke.js +0 -3
  157. package/dist/esm/action/request/Invoke.js.map +1 -1
  158. package/dist/esm/action/request/Read.d.ts.map +1 -1
  159. package/dist/esm/action/request/Read.js +3 -2
  160. package/dist/esm/action/request/Read.js.map +1 -1
  161. package/dist/esm/action/request/Specifier.d.ts +1 -1
  162. package/dist/esm/action/request/Specifier.d.ts.map +1 -1
  163. package/dist/esm/action/request/Specifier.js +3 -0
  164. package/dist/esm/action/request/Specifier.js.map +1 -1
  165. package/dist/esm/action/request/Write.d.ts +1 -0
  166. package/dist/esm/action/request/Write.d.ts.map +1 -1
  167. package/dist/esm/action/request/Write.js +10 -2
  168. package/dist/esm/action/request/Write.js.map +1 -1
  169. package/dist/esm/action/response/ReadResult.d.ts +1 -1
  170. package/dist/esm/action/response/ReadResult.d.ts.map +1 -1
  171. package/dist/esm/cluster/client/ClusterClientTypes.d.ts +37 -8
  172. package/dist/esm/cluster/client/ClusterClientTypes.d.ts.map +1 -1
  173. package/dist/esm/cluster/client/index.d.ts +0 -3
  174. package/dist/esm/cluster/client/index.d.ts.map +1 -1
  175. package/dist/esm/cluster/client/index.js +0 -3
  176. package/dist/esm/cluster/client/index.js.map +1 -1
  177. package/dist/esm/interaction/InteractionMessenger.d.ts.map +1 -1
  178. package/dist/esm/interaction/InteractionMessenger.js +4 -3
  179. package/dist/esm/interaction/InteractionMessenger.js.map +1 -1
  180. package/dist/esm/interaction/SubscriptionClient.d.ts.map +1 -1
  181. package/dist/esm/interaction/SubscriptionClient.js +2 -1
  182. package/dist/esm/interaction/SubscriptionClient.js.map +1 -1
  183. package/dist/esm/interaction/index.d.ts +1 -1
  184. package/dist/esm/interaction/index.d.ts.map +1 -1
  185. package/dist/esm/interaction/index.js +1 -1
  186. package/dist/esm/peer/CommissioningError.d.ts +13 -0
  187. package/dist/esm/peer/CommissioningError.d.ts.map +1 -0
  188. package/dist/esm/peer/CommissioningError.js +12 -0
  189. package/dist/esm/peer/CommissioningError.js.map +6 -0
  190. package/dist/esm/peer/ControllerCommissioner.d.ts +2 -3
  191. package/dist/esm/peer/ControllerCommissioner.d.ts.map +1 -1
  192. package/dist/esm/peer/ControllerCommissioner.js +19 -13
  193. package/dist/esm/peer/ControllerCommissioner.js.map +2 -2
  194. package/dist/esm/peer/ControllerCommissioningFlow.d.ts +7 -16
  195. package/dist/esm/peer/ControllerCommissioningFlow.d.ts.map +1 -1
  196. package/dist/esm/peer/ControllerCommissioningFlow.js +380 -162
  197. package/dist/esm/peer/ControllerCommissioningFlow.js.map +1 -1
  198. package/dist/esm/peer/ControllerDiscovery.d.ts +4 -0
  199. package/dist/esm/peer/ControllerDiscovery.d.ts.map +1 -1
  200. package/dist/esm/peer/ControllerDiscovery.js +4 -1
  201. package/dist/esm/peer/ControllerDiscovery.js.map +1 -1
  202. package/dist/esm/peer/InteractionQueue.d.ts +2 -2
  203. package/dist/esm/peer/InteractionQueue.d.ts.map +1 -1
  204. package/dist/esm/peer/InteractionQueue.js +2 -2
  205. package/dist/esm/peer/InteractionQueue.js.map +1 -1
  206. package/dist/esm/peer/PeerAddressStore.d.ts +0 -9
  207. package/dist/esm/peer/PeerAddressStore.d.ts.map +1 -1
  208. package/dist/esm/peer/PeerAddressStore.js.map +1 -1
  209. package/dist/esm/peer/PeerSet.d.ts +0 -2
  210. package/dist/esm/peer/PeerSet.d.ts.map +1 -1
  211. package/dist/esm/peer/PeerSet.js +32 -18
  212. package/dist/esm/peer/PeerSet.js.map +1 -1
  213. package/dist/esm/peer/PhysicalDeviceProperties.js +1 -1
  214. package/dist/esm/peer/PhysicalDeviceProperties.js.map +1 -1
  215. package/dist/esm/peer/index.d.ts +1 -0
  216. package/dist/esm/peer/index.d.ts.map +1 -1
  217. package/dist/esm/peer/index.js +1 -0
  218. package/dist/esm/peer/index.js.map +1 -1
  219. package/dist/esm/protocol/DeviceCommissioner.d.ts.map +1 -1
  220. package/dist/esm/protocol/DeviceCommissioner.js.map +1 -1
  221. package/dist/esm/protocol/ExchangeManager.js +2 -2
  222. package/dist/esm/protocol/ExchangeManager.js.map +1 -1
  223. package/dist/esm/protocol/ExchangeProvider.d.ts +13 -4
  224. package/dist/esm/protocol/ExchangeProvider.d.ts.map +1 -1
  225. package/dist/esm/protocol/ExchangeProvider.js +5 -3
  226. package/dist/esm/protocol/ExchangeProvider.js.map +1 -1
  227. package/dist/esm/session/NodeSession.d.ts +5 -2
  228. package/dist/esm/session/NodeSession.d.ts.map +1 -1
  229. package/dist/esm/session/NodeSession.js +5 -4
  230. package/dist/esm/session/NodeSession.js.map +1 -1
  231. package/dist/esm/session/Session.d.ts +5 -3
  232. package/dist/esm/session/Session.d.ts.map +1 -1
  233. package/dist/esm/session/Session.js +8 -4
  234. package/dist/esm/session/Session.js.map +1 -1
  235. package/dist/esm/session/SessionManager.d.ts +8 -0
  236. package/dist/esm/session/SessionManager.d.ts.map +1 -1
  237. package/dist/esm/session/SessionManager.js +17 -2
  238. package/dist/esm/session/SessionManager.js.map +1 -1
  239. package/package.json +6 -6
  240. package/src/action/client/ClientInteraction.ts +58 -19
  241. package/src/action/client/ClientRead.ts +10 -0
  242. package/src/action/client/ClientRequest.ts +20 -0
  243. package/src/action/client/ClientWrite.ts +10 -0
  244. package/src/action/client/QueuedClientInteraction.ts +91 -0
  245. package/src/action/client/index.ts +4 -0
  246. package/src/action/client/subscription/ClientSubscribe.ts +2 -1
  247. package/src/action/client/subscription/ClientSubscriptionHandler.ts +14 -3
  248. package/src/action/client/subscription/SustainedSubscription.ts +6 -9
  249. package/src/action/request/Invoke.ts +11 -4
  250. package/src/action/request/Read.ts +3 -2
  251. package/src/action/request/Specifier.ts +4 -1
  252. package/src/action/request/Write.ts +11 -2
  253. package/src/action/response/ReadResult.ts +1 -1
  254. package/src/cluster/client/ClusterClientTypes.ts +47 -7
  255. package/src/cluster/client/index.ts +0 -3
  256. package/src/interaction/InteractionMessenger.ts +5 -4
  257. package/src/interaction/SubscriptionClient.ts +2 -1
  258. package/src/interaction/index.ts +1 -1
  259. package/src/peer/CommissioningError.ts +13 -0
  260. package/src/peer/ControllerCommissioner.ts +21 -13
  261. package/src/peer/ControllerCommissioningFlow.ts +418 -186
  262. package/src/peer/ControllerDiscovery.ts +4 -1
  263. package/src/peer/InteractionQueue.ts +2 -2
  264. package/src/peer/PeerAddressStore.ts +0 -9
  265. package/src/peer/PeerSet.ts +56 -23
  266. package/src/peer/PhysicalDeviceProperties.ts +1 -1
  267. package/src/peer/index.ts +1 -0
  268. package/src/protocol/DeviceCommissioner.ts +0 -1
  269. package/src/protocol/ExchangeManager.ts +2 -2
  270. package/src/protocol/ExchangeProvider.ts +9 -7
  271. package/src/session/NodeSession.ts +5 -4
  272. package/src/session/Session.ts +8 -4
  273. package/src/session/SessionManager.ts +19 -2
  274. package/dist/cjs/cluster/client/AttributeClient.d.ts +0 -75
  275. package/dist/cjs/cluster/client/AttributeClient.d.ts.map +0 -1
  276. package/dist/cjs/cluster/client/AttributeClient.js +0 -209
  277. package/dist/cjs/cluster/client/AttributeClient.js.map +0 -6
  278. package/dist/cjs/cluster/client/ClusterClient.d.ts +0 -11
  279. package/dist/cjs/cluster/client/ClusterClient.d.ts.map +0 -1
  280. package/dist/cjs/cluster/client/ClusterClient.js +0 -335
  281. package/dist/cjs/cluster/client/ClusterClient.js.map +0 -6
  282. package/dist/cjs/cluster/client/EventClient.d.ts +0 -33
  283. package/dist/cjs/cluster/client/EventClient.d.ts.map +0 -1
  284. package/dist/cjs/cluster/client/EventClient.js +0 -89
  285. package/dist/cjs/cluster/client/EventClient.js.map +0 -6
  286. package/dist/cjs/interaction/InteractionClient.d.ts +0 -375
  287. package/dist/cjs/interaction/InteractionClient.d.ts.map +0 -1
  288. package/dist/cjs/interaction/InteractionClient.js +0 -1046
  289. package/dist/cjs/interaction/InteractionClient.js.map +0 -6
  290. package/dist/esm/cluster/client/AttributeClient.d.ts +0 -75
  291. package/dist/esm/cluster/client/AttributeClient.d.ts.map +0 -1
  292. package/dist/esm/cluster/client/AttributeClient.js +0 -189
  293. package/dist/esm/cluster/client/AttributeClient.js.map +0 -6
  294. package/dist/esm/cluster/client/ClusterClient.d.ts +0 -11
  295. package/dist/esm/cluster/client/ClusterClient.d.ts.map +0 -1
  296. package/dist/esm/cluster/client/ClusterClient.js +0 -320
  297. package/dist/esm/cluster/client/ClusterClient.js.map +0 -6
  298. package/dist/esm/cluster/client/EventClient.d.ts +0 -33
  299. package/dist/esm/cluster/client/EventClient.d.ts.map +0 -1
  300. package/dist/esm/cluster/client/EventClient.js +0 -69
  301. package/dist/esm/cluster/client/EventClient.js.map +0 -6
  302. package/dist/esm/interaction/InteractionClient.d.ts +0 -375
  303. package/dist/esm/interaction/InteractionClient.d.ts.map +0 -1
  304. package/dist/esm/interaction/InteractionClient.js +0 -1047
  305. package/dist/esm/interaction/InteractionClient.js.map +0 -6
  306. package/src/cluster/client/AttributeClient.ts +0 -230
  307. package/src/cluster/client/ClusterClient.ts +0 -433
  308. package/src/cluster/client/EventClient.ts +0 -99
  309. package/src/interaction/InteractionClient.ts +0 -1614
@@ -18,8 +18,6 @@ var __copyProps = (to, from, except, desc) => {
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
19
  var ControllerCommissioningFlow_exports = {};
20
20
  __export(ControllerCommissioningFlow_exports, {
21
- CommissionableDeviceDiscoveryFailedError: () => CommissionableDeviceDiscoveryFailedError,
22
- CommissioningError: () => CommissioningError,
23
21
  CommissioningTimeoutError: () => CommissioningTimeoutError,
24
22
  ControllerCommissioningFlow: () => ControllerCommissioningFlow,
25
23
  DeviceAlreadyCommissionedToThisFabricError: () => DeviceAlreadyCommissionedToThisFabricError,
@@ -32,6 +30,8 @@ __export(ControllerCommissioningFlow_exports, {
32
30
  WifiOrThreadNetworkCredentialsNotConfiguredError: () => WifiOrThreadNetworkCredentialsNotConfiguredError
33
31
  });
34
32
  module.exports = __toCommonJS(ControllerCommissioningFlow_exports);
33
+ var import_Invoke = require("#action/request/Invoke.js");
34
+ var import_Read = require("#action/request/Read.js");
35
35
  var import_Certificate = require("#certificate/kinds/Certificate.js");
36
36
  var import_basic_information = require("#clusters/basic-information");
37
37
  var import_descriptor = require("#clusters/descriptor");
@@ -41,8 +41,8 @@ var import_operational_credentials = require("#clusters/operational-credentials"
41
41
  var import_time_synchronization = require("#clusters/time-synchronization");
42
42
  var import_general = require("#general");
43
43
  var import_types = require("#types");
44
- var import_ClusterClient = require("../cluster/client/ClusterClient.js");
45
44
  var import_OperationalCredentialsTypes = require("../common/OperationalCredentialsTypes.js");
45
+ var import_CommissioningError = require("./CommissioningError.js");
46
46
  /**
47
47
  * @license
48
48
  * Copyright 2022-2025 Matter.js Authors
@@ -56,33 +56,30 @@ var CommissioningStepResultCode = /* @__PURE__ */ ((CommissioningStepResultCode2
56
56
  CommissioningStepResultCode2[CommissioningStepResultCode2["Stop"] = 3] = "Stop";
57
57
  return CommissioningStepResultCode2;
58
58
  })(CommissioningStepResultCode || {});
59
- class CommissioningError extends import_general.MatterError {
59
+ class MaximumCommissionedFabricsReachedError extends import_CommissioningError.CommissioningError {
60
60
  }
61
- class MaximumCommissionedFabricsReachedError extends CommissioningError {
61
+ class CommissioningTimeoutError extends import_CommissioningError.CommissioningError {
62
62
  }
63
- class CommissioningTimeoutError extends CommissioningError {
63
+ class DeviceAlreadyCommissionedToThisFabricError extends import_CommissioningError.CommissioningError {
64
64
  }
65
- class DeviceAlreadyCommissionedToThisFabricError extends CommissioningError {
65
+ class FabricLabelConflictError extends import_CommissioningError.CommissioningError {
66
66
  }
67
- class FabricLabelConflictError extends CommissioningError {
67
+ class WifiOrThreadNetworkCredentialsNotConfiguredError extends import_CommissioningError.CommissioningError {
68
68
  }
69
- class WifiOrThreadNetworkCredentialsNotConfiguredError extends CommissioningError {
69
+ class WifiNetworkSetupFailedError extends import_CommissioningError.CommissioningError {
70
70
  }
71
- class WifiNetworkSetupFailedError extends CommissioningError {
71
+ class ThreadNetworkSetupFailedError extends import_CommissioningError.CommissioningError {
72
72
  }
73
- class ThreadNetworkSetupFailedError extends CommissioningError {
73
+ class NodeIdConflictError extends import_CommissioningError.CommissioningError {
74
74
  }
75
- class NodeIdConflictError extends CommissioningError {
75
+ class OperativeConnectionFailedError extends import_CommissioningError.CommissioningError {
76
76
  }
77
- class CommissionableDeviceDiscoveryFailedError extends CommissioningError {
78
- }
79
- class OperativeConnectionFailedError extends CommissioningError {
80
- }
81
- class RecoverableCommissioningError extends CommissioningError {
77
+ class RecoverableCommissioningError extends import_CommissioningError.CommissioningError {
82
78
  }
83
79
  const DEFAULT_FAILSAFE_TIME = import_general.Minutes.one;
80
+ const RootEndpointNumber = (0, import_types.EndpointNumber)(0);
84
81
  class ControllerCommissioningFlow {
85
- interactionClient;
82
+ interaction;
86
83
  ca;
87
84
  fabric;
88
85
  transitionToCase;
@@ -96,8 +93,8 @@ class ControllerCommissioningFlow {
96
93
  lastBreadcrumb = 1;
97
94
  collectedCommissioningData = {};
98
95
  #defaultFailSafeTime = DEFAULT_FAILSAFE_TIME;
99
- constructor(interactionClient, ca, fabric, commissioningOptions, transitionToCase) {
100
- this.interactionClient = interactionClient;
96
+ constructor(interaction, ca, fabric, commissioningOptions, transitionToCase) {
97
+ this.interaction = interaction;
101
98
  this.ca = ca;
102
99
  this.fabric = fabric;
103
100
  this.transitionToCase = transitionToCase;
@@ -151,13 +148,13 @@ class ControllerCommissioningFlow {
151
148
  logger.warn(
152
149
  `Commissioning step ${step.stepNumber}.${step.subStepNumber}: ${step.name} failed with recoverable error: ${error.message} ... Continuing with process`
153
150
  );
154
- } else if (error instanceof CommissioningError || error instanceof import_types.StatusResponseError) {
151
+ } else if (error instanceof import_CommissioningError.CommissioningError || error instanceof import_types.StatusResponseError) {
155
152
  logger.error(
156
153
  `Commissioning step ${step.stepNumber}.${step.subStepNumber}: ${step.name} failed with error: ${error.message} ... Aborting commissioning`
157
154
  );
158
155
  await this.#resetFailsafeTimer();
159
156
  import_types.StatusResponseError.accept(error);
160
- throw (0, import_general.repackErrorAs)(error, CommissioningError);
157
+ throw (0, import_general.repackErrorAs)(error, import_CommissioningError.CommissioningError);
161
158
  } else {
162
159
  throw error;
163
160
  }
@@ -165,24 +162,58 @@ class ControllerCommissioningFlow {
165
162
  }
166
163
  }
167
164
  /**
168
- * Helper method to create ClusterClients. If not feature specific and for the Root Endpoint they are also reused.
165
+ * Convenience method to get a number of attributes in a read and return exactly these values in the order as
166
+ * defined in the request
169
167
  */
170
- #getClusterClient(cluster, endpointId = (0, import_types.EndpointNumber)(0), isFeatureSpecific = false) {
171
- if (!isFeatureSpecific && endpointId === 0) {
172
- const clusterClient = this.#clusterClients.get(cluster.id);
173
- if (clusterClient !== void 0) {
174
- logger.debug(
175
- `Returning existing cluster client for cluster ${cluster.name} (endpoint ${endpointId}, isFeatureSpecific ${isFeatureSpecific})`
176
- );
177
- return clusterClient;
168
+ async #readConcreteAttributeValues(request) {
169
+ const attributeMap = /* @__PURE__ */ new Map();
170
+ if (request.attributeRequests === void 0) {
171
+ throw new import_general.ImplementationError("Can only handle Attribute reads");
172
+ }
173
+ for (const { endpointId, clusterId, attributeId } of request.attributeRequests) {
174
+ if (endpointId === void 0 || clusterId === void 0) {
175
+ continue;
176
+ }
177
+ attributeMap.set(`${endpointId}-${clusterId}-${attributeId}`, void 0);
178
+ }
179
+ for await (const data of this.interaction.read(request)) {
180
+ for (const entry of data) {
181
+ if (entry.kind !== "attr-value") {
182
+ continue;
183
+ }
184
+ const {
185
+ path: { endpointId, clusterId, attributeId },
186
+ value
187
+ } = entry;
188
+ const key = `${endpointId}-${clusterId}-${attributeId}`;
189
+ if (!attributeMap.has(key)) {
190
+ continue;
191
+ }
192
+ attributeMap.set(key, value);
193
+ }
194
+ }
195
+ return [...attributeMap.values()];
196
+ }
197
+ // TODO improve response typing
198
+ async #invokeCommand(request, options = {}) {
199
+ for await (const data of this.interaction.invoke(
200
+ (0, import_Invoke.Invoke)({
201
+ commands: [request],
202
+ ...options
203
+ })
204
+ )) {
205
+ for (const entry of data) {
206
+ switch (entry.kind) {
207
+ case "cmd-status":
208
+ if (entry.status !== import_types.Status.Success) {
209
+ throw import_types.StatusResponseError.create(entry.status, void 0, entry.clusterStatus);
210
+ }
211
+ return;
212
+ case "cmd-response":
213
+ return entry.data;
214
+ }
178
215
  }
179
216
  }
180
- logger.debug(
181
- `Creating new cluster client for cluster ${cluster.name} (endpoint ${endpointId}, isFeatureSpecific ${isFeatureSpecific})`
182
- );
183
- const client = (0, import_ClusterClient.ClusterClient)(cluster, endpointId, this.interactionClient);
184
- this.#clusterClients.set(cluster.id, client);
185
- return client;
186
217
  }
187
218
  /**
188
219
  * Initialize commissioning steps and add them in the default order as defined by
@@ -233,7 +264,7 @@ class ControllerCommissioningFlow {
233
264
  name: "AccessControl",
234
265
  stepLogic: () => this.#configureAccessControlLists()
235
266
  });
236
- if (this.interactionClient.channelType === import_general.ChannelType.BLE) {
267
+ if (this.interaction.channelType === import_general.ChannelType.BLE) {
237
268
  this.commissioningSteps.push({
238
269
  stepNumber: 16,
239
270
  subStepNumber: 1,
@@ -262,7 +293,7 @@ class ControllerCommissioningFlow {
262
293
  }
263
294
  } else {
264
295
  logger.info(
265
- `Skipping NetworkCommissioning steps because the device is already on IP network (${this.interactionClient.channelType})`
296
+ `Skipping NetworkCommissioning steps because the device is already on IP network (${this.interaction.channelType})`
266
297
  );
267
298
  }
268
299
  this.commissioningSteps.push({
@@ -320,7 +351,7 @@ class ControllerCommissioningFlow {
320
351
  );
321
352
  }
322
353
  }
323
- throw new CommissioningError(
354
+ throw new import_CommissioningError.CommissioningError(
324
355
  `Commission error for "${context}": ${import_operational_credentials.OperationalCredentials.NodeOperationalCertStatus[statusCode]} (${statusCode}), ${debugText}${fabricIndex !== void 0 ? `, fabricIndex: ${fabricIndex}` : ""}`
325
356
  );
326
357
  }
@@ -328,7 +359,7 @@ class ControllerCommissioningFlow {
328
359
  #ensureGeneralCommissioningSuccess(context, { errorCode, debugText }) {
329
360
  logger.debug(`Commissioning step ${context} returned ${errorCode}, ${debugText}`);
330
361
  if (errorCode === import_general_commissioning.GeneralCommissioning.CommissioningError.Ok) return;
331
- throw new CommissioningError(
362
+ throw new import_CommissioningError.CommissioningError(
332
363
  `Commission error for "${context}": ${import_general_commissioning.GeneralCommissioning.CommissioningError[errorCode]} (${errorCode})${debugText ? `, ${debugText}` : ""}`
333
364
  );
334
365
  }
@@ -336,49 +367,84 @@ class ControllerCommissioningFlow {
336
367
  * Initial Step to receive some common data used by other steps
337
368
  */
338
369
  async #getInitialData() {
339
- const operationalCredentialsClient = this.#getClusterClient(import_operational_credentials.OperationalCredentials.Cluster);
340
- const supportedFabrics = await operationalCredentialsClient.getSupportedFabricsAttribute();
341
- const commissionedFabrics = await operationalCredentialsClient.getCommissionedFabricsAttribute();
370
+ const [
371
+ supportedFabrics,
372
+ commissionedFabrics,
373
+ rootPartsList,
374
+ rootServerList,
375
+ vendorId,
376
+ productId,
377
+ productName,
378
+ supportsConcurrentConnection
379
+ ] = await this.#readConcreteAttributeValues(
380
+ (0, import_Read.Read)(
381
+ import_Read.Read.Attribute({
382
+ endpoint: RootEndpointNumber,
383
+ cluster: import_operational_credentials.OperationalCredentials.Complete,
384
+ attributes: ["supportedFabrics", "commissionedFabrics"]
385
+ }),
386
+ import_Read.Read.Attribute({
387
+ endpoint: RootEndpointNumber,
388
+ cluster: import_descriptor.Descriptor.Complete,
389
+ attributes: ["partsList", "serverList"]
390
+ }),
391
+ import_Read.Read.Attribute({
392
+ endpoint: RootEndpointNumber,
393
+ cluster: import_basic_information.BasicInformation.Complete,
394
+ attributes: ["vendorId", "productId", "productName"]
395
+ }),
396
+ import_Read.Read.Attribute({
397
+ endpoint: RootEndpointNumber,
398
+ cluster: import_general_commissioning.GeneralCommissioning.Complete,
399
+ attributes: ["supportsConcurrentConnection"]
400
+ })
401
+ )
402
+ );
342
403
  if (commissionedFabrics >= supportedFabrics) {
343
404
  throw new MaximumCommissionedFabricsReachedError(
344
405
  `Commissioned fabrics (${commissionedFabrics}) exceed supported fabrics (${supportedFabrics}). Please remove some fabrics before commissioning.`
345
406
  );
346
407
  }
347
- const descriptorClient = this.#getClusterClient(import_descriptor.Descriptor.Cluster);
348
- this.collectedCommissioningData.rootPartsList = await descriptorClient.getPartsListAttribute();
349
- this.collectedCommissioningData.rootServerList = await descriptorClient.getServerListAttribute();
350
- const networkData = await this.interactionClient.getMultipleAttributes({
351
- attributes: [
352
- {
353
- clusterId: import_network_commissioning.NetworkCommissioning.Complete.id,
354
- attributeId: import_network_commissioning.NetworkCommissioning.Complete.attributes.featureMap.id
355
- },
356
- {
357
- clusterId: import_network_commissioning.NetworkCommissioning.Complete.id,
358
- attributeId: import_network_commissioning.NetworkCommissioning.Complete.attributes.networks.id
359
- }
360
- ]
361
- });
408
+ this.collectedCommissioningData.rootPartsList = rootPartsList;
409
+ this.collectedCommissioningData.rootServerList = rootServerList;
410
+ this.collectedCommissioningData.vendorId = vendorId;
411
+ this.collectedCommissioningData.productId = productId;
412
+ this.collectedCommissioningData.productName = productName;
413
+ this.collectedCommissioningData.supportsConcurrentConnection = supportsConcurrentConnection;
414
+ const networkData = this.interaction.read(
415
+ (0, import_Read.Read)(
416
+ import_Read.Read.Attribute({
417
+ cluster: import_network_commissioning.NetworkCommissioning.Complete,
418
+ attributes: ["featureMap", "networks"]
419
+ })
420
+ )
421
+ );
362
422
  const networkFeatures = new Array();
363
423
  const networkStatus = new Array();
364
- for (const {
365
- path: { endpointId, attributeId },
366
- value
367
- } of networkData) {
368
- if (attributeId === import_network_commissioning.NetworkCommissioning.Complete.attributes.featureMap.id) {
369
- networkFeatures.push({ endpointId, value });
370
- } else if (attributeId === import_network_commissioning.NetworkCommissioning.Complete.attributes.networks.id) {
371
- networkStatus.push({ endpointId, value });
424
+ for await (const data of networkData) {
425
+ for (const entry of data) {
426
+ if (entry.kind !== "attr-value") {
427
+ continue;
428
+ }
429
+ const {
430
+ path: { endpointId, attributeId },
431
+ value
432
+ } = entry;
433
+ if (attributeId === import_network_commissioning.NetworkCommissioning.Complete.attributes.featureMap.id) {
434
+ networkFeatures.push({
435
+ endpointId,
436
+ value
437
+ });
438
+ } else if (attributeId === import_network_commissioning.NetworkCommissioning.Complete.attributes.networks.id) {
439
+ networkStatus.push({
440
+ endpointId,
441
+ value
442
+ });
443
+ }
372
444
  }
373
445
  }
374
446
  this.collectedCommissioningData.networkFeatures = networkFeatures;
375
447
  this.collectedCommissioningData.networkStatus = networkStatus;
376
- const basicInfoClient = this.#getClusterClient(import_basic_information.BasicInformation.Cluster);
377
- this.collectedCommissioningData.vendorId = await basicInfoClient.getVendorIdAttribute();
378
- this.collectedCommissioningData.productId = await basicInfoClient.getProductIdAttribute();
379
- this.collectedCommissioningData.productName = await basicInfoClient.getProductNameAttribute();
380
- const generalCommissioningClient = this.#getClusterClient(import_general_commissioning.GeneralCommissioning.Cluster);
381
- this.collectedCommissioningData.supportsConcurrentConnection = await generalCommissioningClient.getSupportsConcurrentConnectionAttribute();
382
448
  return {
383
449
  code: 0 /* Success */,
384
450
  breadcrumb: this.lastBreadcrumb
@@ -394,9 +460,16 @@ class ControllerCommissioningFlow {
394
460
  * Attribute”) prior to invoking the ArmFailSafe command.
395
461
  */
396
462
  async #armFailsafe(time) {
397
- const client = this.#getClusterClient(import_general_commissioning.GeneralCommissioning.Cluster);
398
463
  if (this.collectedCommissioningData.basicCommissioningInfo === void 0) {
399
- const basicCommissioningInfo = await client.getBasicCommissioningInfoAttribute();
464
+ const [basicCommissioningInfo] = await this.#readConcreteAttributeValues(
465
+ (0, import_Read.Read)(
466
+ import_Read.Read.Attribute({
467
+ endpoint: RootEndpointNumber,
468
+ cluster: import_general_commissioning.GeneralCommissioning.Complete,
469
+ attributes: ["basicCommissioningInfo"]
470
+ })
471
+ )
472
+ );
400
473
  this.collectedCommissioningData.basicCommissioningInfo = basicCommissioningInfo;
401
474
  this.#defaultFailSafeTime = (0, import_general.Seconds)(basicCommissioningInfo.failSafeExpiryLengthSeconds);
402
475
  this.#commissioningStartedTime = import_general.Time.nowMs;
@@ -407,9 +480,14 @@ class ControllerCommissioningFlow {
407
480
  const expiryLength = time ?? this.#defaultFailSafeTime;
408
481
  this.#ensureGeneralCommissioningSuccess(
409
482
  "armFailSafe",
410
- await client.armFailSafe({
411
- breadcrumb: this.lastBreadcrumb,
412
- expiryLengthSeconds: import_general.Seconds.of(expiryLength)
483
+ await this.#invokeCommand({
484
+ endpoint: RootEndpointNumber,
485
+ cluster: import_general_commissioning.GeneralCommissioning.Complete,
486
+ command: "armFailSafe",
487
+ fields: {
488
+ breadcrumb: this.lastBreadcrumb,
489
+ expiryLengthSeconds: import_general.Seconds.of(expiryLength)
490
+ }
413
491
  })
414
492
  );
415
493
  this.#currentFailSafeEndTime = (0, import_general.Timestamp)(import_general.Time.nowMs + expiryLength);
@@ -425,22 +503,26 @@ class ControllerCommissioningFlow {
425
503
  return import_general.Duration.max((0, import_general.Timespan)(import_general.Time.nowMs, this.#currentFailSafeEndTime).duration, 0);
426
504
  }
427
505
  async #ensureFailsafeTimerFor(maxProcessingTime) {
428
- const minFailsafeTime = this.interactionClient.maximumPeerResponseTime(maxProcessingTime);
506
+ const minFailsafeTime = this.interaction.maximumPeerResponseTime(maxProcessingTime);
429
507
  const timeLeft = this.#failSafeTimeLeft;
430
508
  if (timeLeft < minFailsafeTime) {
431
509
  logger.debug(`Failsafe timer has only ${timeLeft}s left, re-arming for at least ${minFailsafeTime}`);
432
510
  await this.#armFailsafe(import_general.Duration.max(minFailsafeTime, this.#defaultFailSafeTime));
433
511
  } else {
434
- logger.debug(`Failsafe timer is already set for at least ${timeLeft}s`);
512
+ logger.debug(`Failsafe timer is already set for at least ${import_general.Seconds.of(timeLeft)}s`);
435
513
  }
436
514
  }
437
515
  async #resetFailsafeTimer() {
438
516
  if (this.#currentFailSafeEndTime === void 0) return;
439
517
  try {
440
- const client = this.#getClusterClient(import_general_commissioning.GeneralCommissioning.Cluster);
441
- await client.armFailSafe({
442
- breadcrumb: this.lastBreadcrumb,
443
- expiryLengthSeconds: 0
518
+ await this.#invokeCommand({
519
+ endpoint: RootEndpointNumber,
520
+ cluster: import_general_commissioning.GeneralCommissioning.Complete,
521
+ command: "armFailSafe",
522
+ fields: {
523
+ breadcrumb: this.lastBreadcrumb,
524
+ expiryLengthSeconds: 0
525
+ }
444
526
  });
445
527
  this.#currentFailSafeEndTime = void 0;
446
528
  } catch (error) {
@@ -456,7 +538,7 @@ class ControllerCommissioningFlow {
456
538
  */
457
539
  async #configureRegulatoryInformation() {
458
540
  if (this.collectedCommissioningData.networkFeatures === void 0) {
459
- throw new CommissioningError(
541
+ throw new import_CommissioningError.CommissioningError(
460
542
  "Initial information collection failed. No network features collected. This should never happen."
461
543
  );
462
544
  }
@@ -464,8 +546,15 @@ class ControllerCommissioningFlow {
464
546
  ({ value: { wiFiNetworkInterface, threadNetworkInterface } }) => wiFiNetworkInterface || threadNetworkInterface
465
547
  );
466
548
  if (hasRadioNetwork) {
467
- const client = this.#getClusterClient(import_general_commissioning.GeneralCommissioning.Cluster);
468
- let locationCapability = await client.getLocationCapabilityAttribute();
549
+ let [locationCapability] = await this.#readConcreteAttributeValues(
550
+ (0, import_Read.Read)(
551
+ import_Read.Read.Attribute({
552
+ endpoint: RootEndpointNumber,
553
+ cluster: import_general_commissioning.GeneralCommissioning.Complete,
554
+ attributes: ["locationCapability"]
555
+ })
556
+ )
557
+ );
469
558
  if (locationCapability === import_general_commissioning.GeneralCommissioning.RegulatoryLocationType.IndoorOutdoor) {
470
559
  locationCapability = this.commissioningOptions.regulatoryLocation;
471
560
  } else {
@@ -474,13 +563,20 @@ class ControllerCommissioningFlow {
474
563
  );
475
564
  }
476
565
  let countryCode = this.commissioningOptions.regulatoryCountryCode;
477
- const regulatoryResult = await client.setRegulatoryConfig(
566
+ const regulatoryResult = await this.#invokeCommand(
478
567
  {
479
- breadcrumb: this.lastBreadcrumb++,
480
- newRegulatoryConfig: locationCapability,
481
- countryCode
568
+ endpoint: RootEndpointNumber,
569
+ cluster: import_general_commissioning.GeneralCommissioning.Complete,
570
+ command: "setRegulatoryConfig",
571
+ fields: {
572
+ breadcrumb: this.lastBreadcrumb++,
573
+ newRegulatoryConfig: locationCapability,
574
+ countryCode
575
+ }
482
576
  },
483
- { useExtendedFailSafeMessageResponseTimeout: true }
577
+ {
578
+ useExtendedFailSafeMessageResponseTimeout: true
579
+ }
484
580
  );
485
581
  if (regulatoryResult.errorCode === import_general_commissioning.GeneralCommissioning.CommissioningError.ValueOutsideRange && countryCode !== "XX") {
486
582
  logger.debug(
@@ -489,13 +585,20 @@ class ControllerCommissioningFlow {
489
585
  countryCode = "XX";
490
586
  this.#ensureGeneralCommissioningSuccess(
491
587
  "setRegulatoryConfig",
492
- await client.setRegulatoryConfig(
588
+ await this.#invokeCommand(
493
589
  {
494
- breadcrumb: this.lastBreadcrumb,
495
- newRegulatoryConfig: locationCapability,
496
- countryCode
590
+ endpoint: RootEndpointNumber,
591
+ cluster: import_general_commissioning.GeneralCommissioning.Complete,
592
+ command: "setRegulatoryConfig",
593
+ fields: {
594
+ breadcrumb: this.lastBreadcrumb,
595
+ newRegulatoryConfig: locationCapability,
596
+ countryCode
597
+ }
497
598
  },
498
- { useExtendedFailSafeMessageResponseTimeout: true }
599
+ {
600
+ useExtendedFailSafeMessageResponseTimeout: true
601
+ }
499
602
  )
500
603
  );
501
604
  } else {
@@ -537,27 +640,47 @@ class ControllerCommissioningFlow {
537
640
  * (see Section 6.2.3, “Device Attestation Procedure”).
538
641
  */
539
642
  async #deviceAttestation() {
540
- const operationalCredentialsClusterClient = this.#getClusterClient(import_operational_credentials.OperationalCredentials.Cluster);
541
- const { certificate: deviceAttestation } = await operationalCredentialsClusterClient.certificateChainRequest(
643
+ const { certificate: deviceAttestation } = await this.#invokeCommand(
542
644
  {
543
- certificateType: import_operational_credentials.OperationalCredentials.CertificateChainType.DacCertificate
645
+ endpoint: RootEndpointNumber,
646
+ cluster: import_operational_credentials.OperationalCredentials.Complete,
647
+ command: "certificateChainRequest",
648
+ fields: {
649
+ certificateType: import_operational_credentials.OperationalCredentials.CertificateChainType.DacCertificate
650
+ }
544
651
  },
545
- { useExtendedFailSafeMessageResponseTimeout: true }
652
+ {
653
+ useExtendedFailSafeMessageResponseTimeout: true
654
+ }
546
655
  );
547
- const { certificate: productAttestation } = await operationalCredentialsClusterClient.certificateChainRequest(
656
+ const { certificate: productAttestation } = await this.#invokeCommand(
548
657
  {
549
- certificateType: import_operational_credentials.OperationalCredentials.CertificateChainType.PaiCertificate
658
+ endpoint: RootEndpointNumber,
659
+ cluster: import_operational_credentials.OperationalCredentials.Complete,
660
+ command: "certificateChainRequest",
661
+ fields: {
662
+ certificateType: import_operational_credentials.OperationalCredentials.CertificateChainType.PaiCertificate
663
+ }
550
664
  },
551
- { useExtendedFailSafeMessageResponseTimeout: true }
665
+ {
666
+ useExtendedFailSafeMessageResponseTimeout: true
667
+ }
552
668
  );
553
- const { attestationElements, attestationSignature } = await operationalCredentialsClusterClient.attestationRequest(
669
+ const { attestationElements, attestationSignature } = await this.#invokeCommand(
554
670
  {
555
- attestationNonce: this.fabric.crypto.randomBytes(32)
671
+ endpoint: RootEndpointNumber,
672
+ cluster: import_operational_credentials.OperationalCredentials.Complete,
673
+ command: "attestationRequest",
674
+ fields: {
675
+ attestationNonce: this.fabric.crypto.randomBytes(32)
676
+ }
556
677
  },
557
- { useExtendedFailSafeMessageResponseTimeout: true }
678
+ {
679
+ useExtendedFailSafeMessageResponseTimeout: true
680
+ }
558
681
  );
559
682
  if (deviceAttestation.byteLength === 0 || productAttestation.byteLength === 0 || attestationElements.byteLength === 0 || attestationSignature.byteLength === 0) {
560
- throw new CommissioningError("Device Attestation data missing from device");
683
+ throw new import_CommissioningError.CommissioningError("Device Attestation data missing from device");
561
684
  }
562
685
  return {
563
686
  code: 0 /* Success */,
@@ -581,36 +704,56 @@ class ControllerCommissioningFlow {
581
704
  * DCL contains the name and other information of the Commissioner’s manufacturer.
582
705
  */
583
706
  async #certificates() {
584
- const operationalCredentialsClusterClient = this.#getClusterClient(import_operational_credentials.OperationalCredentials.Cluster);
585
- const { nocsrElements, attestationSignature: csrSignature } = await operationalCredentialsClusterClient.csrRequest(
586
- { csrNonce: this.fabric.crypto.randomBytes(32) },
587
- { useExtendedFailSafeMessageResponseTimeout: true }
707
+ const { nocsrElements, attestationSignature: csrSignature } = await this.#invokeCommand(
708
+ {
709
+ endpoint: RootEndpointNumber,
710
+ cluster: import_operational_credentials.OperationalCredentials.Complete,
711
+ command: "csrRequest",
712
+ fields: { csrNonce: this.fabric.crypto.randomBytes(32) }
713
+ },
714
+ {
715
+ useExtendedFailSafeMessageResponseTimeout: true
716
+ }
588
717
  );
589
718
  if (nocsrElements.byteLength === 0 || csrSignature.byteLength === 0) {
590
719
  throw new import_general.UnexpectedDataError("Invalid response from device");
591
720
  }
592
721
  const { certSigningRequest } = import_OperationalCredentialsTypes.TlvCertSigningRequest.decode(nocsrElements);
593
722
  const operationalPublicKey = await import_Certificate.Certificate.getPublicKeyFromCsr(this.ca.crypto, certSigningRequest);
594
- await operationalCredentialsClusterClient.addTrustedRootCertificate(
723
+ await this.#invokeCommand(
595
724
  {
596
- rootCaCertificate: this.ca.rootCert
725
+ endpoint: RootEndpointNumber,
726
+ cluster: import_operational_credentials.OperationalCredentials.Complete,
727
+ command: "addTrustedRootCertificate",
728
+ fields: {
729
+ rootCaCertificate: this.ca.rootCert
730
+ }
597
731
  },
598
- { useExtendedFailSafeMessageResponseTimeout: true }
732
+ {
733
+ useExtendedFailSafeMessageResponseTimeout: true
734
+ }
599
735
  );
600
736
  const peerOperationalCert = await this.ca.generateNoc(
601
737
  operationalPublicKey,
602
738
  this.fabric.fabricId,
603
- this.interactionClient.address.nodeId
739
+ this.interaction.address.nodeId
604
740
  );
605
- const addNocResponse = await operationalCredentialsClusterClient.addNoc(
741
+ const addNocResponse = await this.#invokeCommand(
606
742
  {
607
- nocValue: peerOperationalCert,
608
- icacValue: this.ca.icacCert ?? new Uint8Array(0),
609
- ipkValue: this.fabric.identityProtectionKey,
610
- adminVendorId: this.fabric.rootVendorId,
611
- caseAdminSubject: this.fabric.rootNodeId
743
+ endpoint: RootEndpointNumber,
744
+ cluster: import_operational_credentials.OperationalCredentials.Complete,
745
+ command: "addNoc",
746
+ fields: {
747
+ nocValue: peerOperationalCert,
748
+ icacValue: this.ca.icacCert ?? new Uint8Array(0),
749
+ ipkValue: this.fabric.identityProtectionKey,
750
+ adminVendorId: this.fabric.rootVendorId,
751
+ caseAdminSubject: this.fabric.rootNodeId
752
+ }
612
753
  },
613
- { useExtendedFailSafeMessageResponseTimeout: true }
754
+ {
755
+ useExtendedFailSafeMessageResponseTimeout: true
756
+ }
614
757
  );
615
758
  this.#ensureOperationalCredentialsSuccess("addNoc", addNocResponse);
616
759
  const { fabricIndex } = addNocResponse;
@@ -636,13 +779,17 @@ class ControllerCommissioningFlow {
636
779
  breadcrumb: this.lastBreadcrumb
637
780
  };
638
781
  }
639
- const operationalCredentialCluster = this.#getClusterClient(import_operational_credentials.OperationalCredentials.Cluster);
640
782
  try {
641
783
  this.#ensureOperationalCredentialsSuccess(
642
784
  "updateFabricLabel",
643
- await operationalCredentialCluster.updateFabricLabel({
644
- label: this.fabric.label,
645
- fabricIndex
785
+ await this.#invokeCommand({
786
+ endpoint: RootEndpointNumber,
787
+ cluster: import_operational_credentials.OperationalCredentials.Complete,
788
+ command: "updateFabricLabel",
789
+ fields: {
790
+ label: this.fabric.label,
791
+ fabricIndex
792
+ }
646
793
  })
647
794
  );
648
795
  } catch (error) {
@@ -681,7 +828,7 @@ class ControllerCommissioningFlow {
681
828
  */
682
829
  async #validateNetwork() {
683
830
  if (this.collectedCommissioningData.networkFeatures === void 0 || this.collectedCommissioningData.networkStatus === void 0) {
684
- throw new CommissioningError(
831
+ throw new import_CommissioningError.CommissioningError(
685
832
  "Initial information collection failed. No network features or status collected. This should never happen."
686
833
  );
687
834
  }
@@ -738,22 +885,32 @@ class ControllerCommissioningFlow {
738
885
  }
739
886
  }
740
887
  logger.debug("Configuring WiFi network ...");
741
- const networkCommissioningClusterClient = this.#getClusterClient(
742
- import_network_commissioning.NetworkCommissioning.Cluster.with("WiFiNetworkInterface"),
743
- (0, import_types.EndpointNumber)(0),
744
- true
745
- );
746
888
  const ssid = import_general.Bytes.fromString(this.commissioningOptions.wifiNetwork.wifiSsid);
747
889
  const credentials = import_general.Bytes.fromString(this.commissioningOptions.wifiNetwork.wifiCredentials);
890
+ const [scanMaxTimeSeconds, connectMaxTimeSeconds] = await this.#readConcreteAttributeValues(
891
+ (0, import_Read.Read)(
892
+ import_Read.Read.Attribute({
893
+ endpoint: RootEndpointNumber,
894
+ cluster: import_network_commissioning.NetworkCommissioning.Complete,
895
+ attributes: ["scanMaxTimeSeconds", "connectMaxTimeSeconds"]
896
+ })
897
+ )
898
+ );
748
899
  if (this.collectedCommissioningData.supportsConcurrentConnection !== false) {
749
- const scanMaxTime = (0, import_general.Seconds)(await networkCommissioningClusterClient.getScanMaxTimeSecondsAttribute());
750
- await this.#ensureFailsafeTimerFor(scanMaxTime);
751
- const { networkingStatus, wiFiScanResults, debugText } = await networkCommissioningClusterClient.scanNetworks(
900
+ await this.#ensureFailsafeTimerFor((0, import_general.Seconds)(scanMaxTimeSeconds));
901
+ const { networkingStatus, wiFiScanResults, debugText } = await this.#invokeCommand(
752
902
  {
753
- ssid,
754
- breadcrumb: this.lastBreadcrumb++
903
+ endpoint: RootEndpointNumber,
904
+ cluster: import_network_commissioning.NetworkCommissioning.Complete,
905
+ command: "scanNetworks",
906
+ fields: {
907
+ ssid,
908
+ breadcrumb: this.lastBreadcrumb++
909
+ }
755
910
  },
756
- { expectedProcessingTime: scanMaxTime }
911
+ {
912
+ expectedProcessingTime: (0, import_general.Seconds)(scanMaxTimeSeconds)
913
+ }
757
914
  );
758
915
  if (networkingStatus !== import_network_commissioning.NetworkCommissioning.NetworkCommissioningStatus.Success) {
759
916
  throw new WifiNetworkSetupFailedError(`Commissionee failed to scan for WiFi networks: ${debugText}`);
@@ -768,13 +925,20 @@ class ControllerCommissioningFlow {
768
925
  networkingStatus: addNetworkingStatus,
769
926
  debugText: addDebugText,
770
927
  networkIndex
771
- } = await networkCommissioningClusterClient.addOrUpdateWiFiNetwork(
928
+ } = await this.#invokeCommand(
772
929
  {
773
- ssid,
774
- credentials,
775
- breadcrumb: this.lastBreadcrumb++
930
+ endpoint: RootEndpointNumber,
931
+ cluster: import_network_commissioning.NetworkCommissioning.Complete,
932
+ command: "addOrUpdateWiFiNetwork",
933
+ fields: {
934
+ ssid,
935
+ credentials,
936
+ breadcrumb: this.lastBreadcrumb++
937
+ }
776
938
  },
777
- { useExtendedFailSafeMessageResponseTimeout: true }
939
+ {
940
+ useExtendedFailSafeMessageResponseTimeout: true
941
+ }
778
942
  );
779
943
  if (addNetworkingStatus !== import_network_commissioning.NetworkCommissioning.NetworkCommissioningStatus.Success) {
780
944
  throw new WifiNetworkSetupFailedError(`Commissionee failed to add WiFi network: ${addDebugText}`);
@@ -785,7 +949,15 @@ class ControllerCommissioningFlow {
785
949
  logger.debug(
786
950
  `Commissionee added WiFi network ${this.commissioningOptions.wifiNetwork.wifiSsid} with network index ${networkIndex}`
787
951
  );
788
- const updatedNetworks = await networkCommissioningClusterClient.getNetworksAttribute();
952
+ const [updatedNetworks] = await this.#readConcreteAttributeValues(
953
+ (0, import_Read.Read)(
954
+ import_Read.Read.Attribute({
955
+ endpoint: RootEndpointNumber,
956
+ cluster: import_network_commissioning.NetworkCommissioning.Complete,
957
+ attributes: ["networks"]
958
+ })
959
+ )
960
+ );
789
961
  if (updatedNetworks[networkIndex] === void 0) {
790
962
  throw new WifiNetworkSetupFailedError(`Commissionee did not return network with index ${networkIndex}`);
791
963
  }
@@ -800,14 +972,20 @@ class ControllerCommissioningFlow {
800
972
  breadcrumb: this.lastBreadcrumb
801
973
  };
802
974
  }
803
- const connectMaxTime = (0, import_general.Seconds)(await networkCommissioningClusterClient.getConnectMaxTimeSecondsAttribute());
804
- await this.#ensureFailsafeTimerFor(connectMaxTime);
805
- const connectResult = await networkCommissioningClusterClient.connectNetwork(
975
+ await this.#ensureFailsafeTimerFor((0, import_general.Seconds)(connectMaxTimeSeconds));
976
+ const connectResult = await this.#invokeCommand(
806
977
  {
807
- networkId,
808
- breadcrumb: this.lastBreadcrumb++
978
+ endpoint: RootEndpointNumber,
979
+ cluster: import_network_commissioning.NetworkCommissioning.Complete,
980
+ command: "connectNetwork",
981
+ fields: {
982
+ networkId,
983
+ breadcrumb: this.lastBreadcrumb++
984
+ }
809
985
  },
810
- { expectedProcessingTime: connectMaxTime }
986
+ {
987
+ expectedProcessingTime: (0, import_general.Seconds)(connectMaxTimeSeconds)
988
+ }
811
989
  );
812
990
  if (connectResult.networkingStatus !== import_network_commissioning.NetworkCommissioning.NetworkCommissioningStatus.Success) {
813
991
  throw new WifiNetworkSetupFailedError(
@@ -864,17 +1042,29 @@ class ControllerCommissioningFlow {
864
1042
  }
865
1043
  }
866
1044
  logger.debug("Configuring Thread network ...");
867
- const networkCommissioningClusterClient = this.#getClusterClient(
868
- import_network_commissioning.NetworkCommissioning.Cluster.with("ThreadNetworkInterface"),
869
- (0, import_types.EndpointNumber)(0),
870
- true
1045
+ const [scanMaxTimeSeconds, connectMaxTimeSeconds] = await this.#readConcreteAttributeValues(
1046
+ (0, import_Read.Read)(
1047
+ import_Read.Read.Attribute({
1048
+ endpoint: RootEndpointNumber,
1049
+ cluster: import_network_commissioning.NetworkCommissioning.Complete,
1050
+ attributes: ["scanMaxTimeSeconds", "connectMaxTimeSeconds"]
1051
+ })
1052
+ )
871
1053
  );
872
- if (this.collectedCommissioningData.supportsConcurrentConnection !== false) {
873
- const scanMaxTime = (0, import_general.Seconds)(await networkCommissioningClusterClient.getScanMaxTimeSecondsAttribute());
874
- await this.#ensureFailsafeTimerFor(scanMaxTime);
875
- const { networkingStatus, threadScanResults, debugText } = await networkCommissioningClusterClient.scanNetworks(
876
- { breadcrumb: this.lastBreadcrumb++ },
877
- { expectedProcessingTime: scanMaxTime }
1054
+ if (!this.commissioningOptions.threadNetwork?.networkName) {
1055
+ logger.info("Thread network name is not configured. Skip scanning for it.");
1056
+ } else if (this.collectedCommissioningData.supportsConcurrentConnection !== false) {
1057
+ await this.#ensureFailsafeTimerFor((0, import_general.Seconds)(scanMaxTimeSeconds));
1058
+ const { networkingStatus, threadScanResults, debugText } = await this.#invokeCommand(
1059
+ {
1060
+ endpoint: RootEndpointNumber,
1061
+ cluster: import_network_commissioning.NetworkCommissioning.Complete,
1062
+ command: "scanNetworks",
1063
+ fields: { breadcrumb: this.lastBreadcrumb++ }
1064
+ },
1065
+ {
1066
+ expectedProcessingTime: (0, import_general.Seconds)(scanMaxTimeSeconds)
1067
+ }
878
1068
  );
879
1069
  if (networkingStatus !== import_network_commissioning.NetworkCommissioning.NetworkCommissioningStatus.Success) {
880
1070
  throw new ThreadNetworkSetupFailedError(
@@ -902,12 +1092,19 @@ class ControllerCommissioningFlow {
902
1092
  networkingStatus: addNetworkingStatus,
903
1093
  debugText: addDebugText,
904
1094
  networkIndex
905
- } = await networkCommissioningClusterClient.addOrUpdateThreadNetwork(
1095
+ } = await this.#invokeCommand(
906
1096
  {
907
- operationalDataset: import_general.Bytes.fromHex(this.commissioningOptions.threadNetwork.operationalDataset),
908
- breadcrumb: this.lastBreadcrumb++
1097
+ endpoint: RootEndpointNumber,
1098
+ cluster: import_network_commissioning.NetworkCommissioning.Complete,
1099
+ command: "addOrUpdateThreadNetwork",
1100
+ fields: {
1101
+ operationalDataset: import_general.Bytes.fromHex(this.commissioningOptions.threadNetwork.operationalDataset),
1102
+ breadcrumb: this.lastBreadcrumb++
1103
+ }
909
1104
  },
910
- { useExtendedFailSafeMessageResponseTimeout: true }
1105
+ {
1106
+ useExtendedFailSafeMessageResponseTimeout: true
1107
+ }
911
1108
  );
912
1109
  if (addNetworkingStatus !== import_network_commissioning.NetworkCommissioning.NetworkCommissioningStatus.Success) {
913
1110
  throw new ThreadNetworkSetupFailedError(`Commissionee failed to add Thread network: ${addDebugText}`);
@@ -918,7 +1115,15 @@ class ControllerCommissioningFlow {
918
1115
  logger.debug(
919
1116
  `Commissionee added Thread network ${this.commissioningOptions.threadNetwork.networkName} with network index ${networkIndex}`
920
1117
  );
921
- const updatedNetworks = await networkCommissioningClusterClient.getNetworksAttribute();
1118
+ const updatedNetworks = await this.#readConcreteAttributeValues(
1119
+ (0, import_Read.Read)(
1120
+ import_Read.Read.Attribute({
1121
+ endpoint: RootEndpointNumber,
1122
+ cluster: import_network_commissioning.NetworkCommissioning.Complete,
1123
+ attributes: ["networks"]
1124
+ })
1125
+ )
1126
+ );
922
1127
  if (updatedNetworks[networkIndex] === void 0) {
923
1128
  throw new ThreadNetworkSetupFailedError(`Commissionee did not return network with index ${networkIndex}`);
924
1129
  }
@@ -932,14 +1137,20 @@ class ControllerCommissioningFlow {
932
1137
  breadcrumb: this.lastBreadcrumb
933
1138
  };
934
1139
  }
935
- const connectMaxTime = (0, import_general.Seconds)(await networkCommissioningClusterClient.getConnectMaxTimeSecondsAttribute());
936
- await this.#ensureFailsafeTimerFor(connectMaxTime);
937
- const connectResult = await networkCommissioningClusterClient.connectNetwork(
1140
+ await this.#ensureFailsafeTimerFor((0, import_general.Seconds)(connectMaxTimeSeconds));
1141
+ const connectResult = await this.#invokeCommand(
938
1142
  {
939
- networkId,
940
- breadcrumb: this.lastBreadcrumb++
1143
+ endpoint: RootEndpointNumber,
1144
+ cluster: import_network_commissioning.NetworkCommissioning.Complete,
1145
+ command: "connectNetwork",
1146
+ fields: {
1147
+ networkId,
1148
+ breadcrumb: this.lastBreadcrumb++
1149
+ }
941
1150
  },
942
- { expectedProcessingTime: connectMaxTime }
1151
+ {
1152
+ expectedProcessingTime: (0, import_general.Seconds)(connectMaxTimeSeconds)
1153
+ }
943
1154
  );
944
1155
  if (connectResult.networkingStatus !== import_network_commissioning.NetworkCommissioning.NetworkCommissioningStatus.Success) {
945
1156
  throw new ThreadNetworkSetupFailedError(
@@ -989,7 +1200,7 @@ class ControllerCommissioningFlow {
989
1200
  let transitionResult;
990
1201
  try {
991
1202
  transitionResult = await this.transitionToCase(
992
- this.interactionClient.address,
1203
+ this.interaction.address,
993
1204
  // Assume concurrent connections are supported if not know (which should not be the case when we came here)
994
1205
  isConcurrentFlow
995
1206
  );
@@ -1004,7 +1215,7 @@ class ControllerCommissioningFlow {
1004
1215
  breadcrumb: this.lastBreadcrumb
1005
1216
  };
1006
1217
  }
1007
- this.interactionClient = transitionResult;
1218
+ this.interaction = transitionResult;
1008
1219
  this.#clusterClients.clear();
1009
1220
  logger.debug("Successfully reconnected with device ...");
1010
1221
  return {
@@ -1020,12 +1231,18 @@ class ControllerCommissioningFlow {
1020
1231
  * the commissioning process.
1021
1232
  */
1022
1233
  async #completeCommissioning() {
1023
- const generalCommissioningClusterClient = this.#getClusterClient(import_general_commissioning.GeneralCommissioning.Cluster);
1024
1234
  this.#ensureGeneralCommissioningSuccess(
1025
1235
  "commissioningComplete",
1026
- await generalCommissioningClusterClient.commissioningComplete(void 0, {
1027
- useExtendedFailSafeMessageResponseTimeout: true
1028
- })
1236
+ await this.#invokeCommand(
1237
+ {
1238
+ endpoint: RootEndpointNumber,
1239
+ cluster: import_general_commissioning.GeneralCommissioning.Complete,
1240
+ command: "commissioningComplete"
1241
+ },
1242
+ {
1243
+ useExtendedFailSafeMessageResponseTimeout: true
1244
+ }
1245
+ )
1029
1246
  );
1030
1247
  this.#currentFailSafeEndTime = void 0;
1031
1248
  return {