@matter/node 0.16.8-alpha.0-20260123-dff2cae52 → 0.16.8-alpha.0-20260127-65e1b40e2

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 (72) hide show
  1. package/dist/cjs/behavior/system/commissioning/CommissioningClient.d.ts +1 -0
  2. package/dist/cjs/behavior/system/commissioning/CommissioningClient.d.ts.map +1 -1
  3. package/dist/cjs/behavior/system/commissioning/CommissioningClient.js +29 -0
  4. package/dist/cjs/behavior/system/commissioning/CommissioningClient.js.map +1 -1
  5. package/dist/cjs/behavior/system/network/ClientNetworkRuntime.js +3 -3
  6. package/dist/cjs/behavior/system/network/ClientNetworkRuntime.js.map +1 -1
  7. package/dist/cjs/behavior/system/software-update/OtaAnnouncements.d.ts.map +1 -1
  8. package/dist/cjs/behavior/system/software-update/OtaAnnouncements.js +10 -8
  9. package/dist/cjs/behavior/system/software-update/OtaAnnouncements.js.map +1 -1
  10. package/dist/cjs/behavior/system/subscriptions/SubscriptionsServer.d.ts.map +1 -1
  11. package/dist/cjs/behavior/system/subscriptions/SubscriptionsServer.js +1 -6
  12. package/dist/cjs/behavior/system/subscriptions/SubscriptionsServer.js.map +1 -1
  13. package/dist/cjs/node/client/ClientNodeInteraction.d.ts +4 -1
  14. package/dist/cjs/node/client/ClientNodeInteraction.d.ts.map +1 -1
  15. package/dist/cjs/node/client/ClientNodeInteraction.js +4 -1
  16. package/dist/cjs/node/client/ClientNodeInteraction.js.map +1 -1
  17. package/dist/cjs/node/client/NodePeerAddressStore.d.ts +0 -1
  18. package/dist/cjs/node/client/NodePeerAddressStore.d.ts.map +1 -1
  19. package/dist/cjs/node/client/NodePeerAddressStore.js +0 -2
  20. package/dist/cjs/node/client/NodePeerAddressStore.js.map +1 -1
  21. package/dist/cjs/node/server/InteractionServer.d.ts +2 -2
  22. package/dist/cjs/node/server/InteractionServer.d.ts.map +1 -1
  23. package/dist/cjs/node/server/InteractionServer.js +130 -78
  24. package/dist/cjs/node/server/InteractionServer.js.map +1 -1
  25. package/dist/cjs/node/server/OnlineServerInteraction.d.ts +10 -2
  26. package/dist/cjs/node/server/OnlineServerInteraction.d.ts.map +1 -1
  27. package/dist/cjs/node/server/OnlineServerInteraction.js +9 -1
  28. package/dist/cjs/node/server/OnlineServerInteraction.js.map +1 -1
  29. package/dist/cjs/storage/client/RemoteWriter.d.ts.map +1 -1
  30. package/dist/cjs/storage/client/RemoteWriter.js +1 -2
  31. package/dist/cjs/storage/client/RemoteWriter.js.map +1 -1
  32. package/dist/esm/behavior/system/commissioning/CommissioningClient.d.ts +1 -0
  33. package/dist/esm/behavior/system/commissioning/CommissioningClient.d.ts.map +1 -1
  34. package/dist/esm/behavior/system/commissioning/CommissioningClient.js +29 -0
  35. package/dist/esm/behavior/system/commissioning/CommissioningClient.js.map +1 -1
  36. package/dist/esm/behavior/system/network/ClientNetworkRuntime.js +3 -3
  37. package/dist/esm/behavior/system/network/ClientNetworkRuntime.js.map +1 -1
  38. package/dist/esm/behavior/system/software-update/OtaAnnouncements.d.ts.map +1 -1
  39. package/dist/esm/behavior/system/software-update/OtaAnnouncements.js +11 -9
  40. package/dist/esm/behavior/system/software-update/OtaAnnouncements.js.map +1 -1
  41. package/dist/esm/behavior/system/subscriptions/SubscriptionsServer.d.ts.map +1 -1
  42. package/dist/esm/behavior/system/subscriptions/SubscriptionsServer.js +2 -15
  43. package/dist/esm/behavior/system/subscriptions/SubscriptionsServer.js.map +1 -1
  44. package/dist/esm/node/client/ClientNodeInteraction.d.ts +4 -1
  45. package/dist/esm/node/client/ClientNodeInteraction.d.ts.map +1 -1
  46. package/dist/esm/node/client/ClientNodeInteraction.js +4 -1
  47. package/dist/esm/node/client/ClientNodeInteraction.js.map +1 -1
  48. package/dist/esm/node/client/NodePeerAddressStore.d.ts +0 -1
  49. package/dist/esm/node/client/NodePeerAddressStore.d.ts.map +1 -1
  50. package/dist/esm/node/client/NodePeerAddressStore.js +0 -2
  51. package/dist/esm/node/client/NodePeerAddressStore.js.map +1 -1
  52. package/dist/esm/node/server/InteractionServer.d.ts +2 -2
  53. package/dist/esm/node/server/InteractionServer.d.ts.map +1 -1
  54. package/dist/esm/node/server/InteractionServer.js +130 -78
  55. package/dist/esm/node/server/InteractionServer.js.map +1 -1
  56. package/dist/esm/node/server/OnlineServerInteraction.d.ts +10 -2
  57. package/dist/esm/node/server/OnlineServerInteraction.d.ts.map +1 -1
  58. package/dist/esm/node/server/OnlineServerInteraction.js +9 -1
  59. package/dist/esm/node/server/OnlineServerInteraction.js.map +1 -1
  60. package/dist/esm/storage/client/RemoteWriter.d.ts.map +1 -1
  61. package/dist/esm/storage/client/RemoteWriter.js +1 -2
  62. package/dist/esm/storage/client/RemoteWriter.js.map +1 -1
  63. package/package.json +7 -7
  64. package/src/behavior/system/commissioning/CommissioningClient.ts +35 -0
  65. package/src/behavior/system/network/ClientNetworkRuntime.ts +3 -3
  66. package/src/behavior/system/software-update/OtaAnnouncements.ts +12 -9
  67. package/src/behavior/system/subscriptions/SubscriptionsServer.ts +4 -17
  68. package/src/node/client/ClientNodeInteraction.ts +4 -1
  69. package/src/node/client/NodePeerAddressStore.ts +0 -2
  70. package/src/node/server/InteractionServer.ts +197 -92
  71. package/src/node/server/OnlineServerInteraction.ts +13 -2
  72. package/src/storage/client/RemoteWriter.ts +1 -2
@@ -1 +1 @@
1
- {"version":3,"file":"OnlineServerInteraction.d.ts","sourceRoot":"","sources":["../../../../src/node/server/OnlineServerInteraction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gDAAgD,CAAC;AAEpF,OAAO,EACH,YAAY,EACZ,MAAM,EACN,YAAY,EACZ,IAAI,EACJ,UAAU,EAEV,SAAS,EACT,eAAe,EACf,KAAK,EACL,WAAW,EACd,MAAM,WAAW,CAAC;AAEnB,qBAAa,uBAAwB,YAAW,YAAY,CAAC,kBAAkB,CAAC,OAAO,CAAC;;gBAGxE,IAAI,EAAE,YAAY;IAIvB,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,kBAAkB,CAAC,OAAO,GAAG,UAAU;IAW3E,SAAS,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,kBAAkB,CAAC,OAAO,GAAG,eAAe;IAI/E,KAAK,CAAC,CAAC,SAAS,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,kBAAkB,CAAC,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC;IAItF,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,CAAC,OAAO;CAWrE"}
1
+ {"version":3,"file":"OnlineServerInteraction.d.ts","sourceRoot":"","sources":["../../../../src/node/server/OnlineServerInteraction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gDAAgD,CAAC;AAEpF,OAAO,EACH,YAAY,EACZ,MAAM,EACN,YAAY,EACZ,YAAY,EACZ,IAAI,EACJ,UAAU,EAEV,SAAS,EACT,eAAe,EACf,KAAK,EACL,WAAW,EACd,MAAM,WAAW,CAAC;AAEnB,qBAAa,uBAAwB,YAAW,YAAY,CAAC,kBAAkB,CAAC,OAAO,CAAC;;gBAGxE,IAAI,EAAE,YAAY;IAIvB,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,kBAAkB,CAAC,OAAO,GAAG,UAAU;IAW3E,SAAS,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,kBAAkB,CAAC,OAAO,GAAG,eAAe;IAIrF;;;OAGG;IACG,KAAK,CAAC,CAAC,SAAS,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,kBAAkB,CAAC,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC;IAI7F;;;OAGG;IACI,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,CAAC,OAAO,GAAG,YAAY;CAapF"}
@@ -21,9 +21,17 @@ class OnlineServerInteraction {
21
21
  subscribe(_request, _context) {
22
22
  throw new NotImplementedError("subscribe not implemented");
23
23
  }
24
+ /**
25
+ * Process write requests and return results.
26
+ * The caller is responsible for messaging/chunking and list state tracking.
27
+ */
24
28
  async write(request, context) {
25
29
  return RemoteActorContext(context).act((session) => this.#interaction.write(request, session));
26
30
  }
31
+ /**
32
+ * Process invoke requests and yield results.
33
+ * The caller is responsible for messaging/chunking.
34
+ */
27
35
  async *invoke(request, context) {
28
36
  const session = RemoteActorContext({ ...context, command: true }).open();
29
37
  try {
@@ -33,7 +41,7 @@ class OnlineServerInteraction {
33
41
  } catch (error) {
34
42
  await session.reject(error);
35
43
  }
36
- return session.resolve(void 0);
44
+ await session.resolve(void 0);
37
45
  }
38
46
  }
39
47
  export {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/node/server/OnlineServerInteraction.ts"],
4
- "mappings": "AAAA,SAAS,0BAA0B;AACnC,SAAS,2BAA2B;AACpC;AAAA,EAMI;AAAA,OAKG;AAEA,MAAM,wBAA4E;AAAA,EAC5E;AAAA,EAET,YAAY,MAAoB;AAC5B,SAAK,eAAe,IAAI,kBAAkB,IAAI;AAAA,EAClD;AAAA,EAEA,OAAO,KAAK,SAAe,SAAiD;AACxE,UAAM,UAAU,mBAAmB,OAAO,EAAE,cAAc;AAC1D,QAAI;AACA,uBAAiB,UAAU,KAAK,aAAa,KAAK,SAAS,OAAO,GAAG;AACjE,cAAM;AAAA,MACV;AAAA,IACJ,UAAE;AACE,cAAQ,OAAO,OAAO,EAAE;AAAA,IAC5B;AAAA,EACJ;AAAA,EAEA,UAAU,UAAqB,UAAuD;AAClF,UAAM,IAAI,oBAAoB,2BAA2B;AAAA,EAC7D;AAAA,EAEA,MAAM,MAAuB,SAAY,SAAqD;AAC1F,WAAO,mBAAmB,OAAO,EAAE,IAAI,aAAW,KAAK,aAAa,MAAM,SAAS,OAAO,CAAC;AAAA,EAC/F;AAAA,EAEA,OAAO,OAAO,SAAiB,SAAqC;AAChE,UAAM,UAAU,mBAAmB,EAAE,GAAG,SAAS,SAAS,KAAK,CAAC,EAAE,KAAK;AACvE,QAAI;AACA,uBAAiB,SAAS,KAAK,aAAa,OAAO,SAAS,OAAO,GAAG;AAClE,cAAM;AAAA,MACV;AAAA,IACJ,SAAS,OAAO;AACZ,YAAM,QAAQ,OAAO,KAAK;AAAA,IAC9B;AACA,WAAO,QAAQ,QAAQ,MAAS;AAAA,EACpC;AACJ;",
4
+ "mappings": "AAAA,SAAS,0BAA0B;AACnC,SAAS,2BAA2B;AACpC;AAAA,EAOI;AAAA,OAKG;AAEA,MAAM,wBAA4E;AAAA,EAC5E;AAAA,EAET,YAAY,MAAoB;AAC5B,SAAK,eAAe,IAAI,kBAAkB,IAAI;AAAA,EAClD;AAAA,EAEA,OAAO,KAAK,SAAe,SAAiD;AACxE,UAAM,UAAU,mBAAmB,OAAO,EAAE,cAAc;AAC1D,QAAI;AACA,uBAAiB,UAAU,KAAK,aAAa,KAAK,SAAS,OAAO,GAAG;AACjE,cAAM;AAAA,MACV;AAAA,IACJ,UAAE;AACE,cAAQ,OAAO,OAAO,EAAE;AAAA,IAC5B;AAAA,EACJ;AAAA,EAEA,UAAU,UAAqB,UAAuD;AAClF,UAAM,IAAI,oBAAoB,2BAA2B;AAAA,EAC7D;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,MAAuB,SAAY,SAAqD;AAC1F,WAAO,mBAAmB,OAAO,EAAE,IAAI,aAAW,KAAK,aAAa,MAAM,SAAS,OAAO,CAAC;AAAA,EAC/F;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,OAAO,OAAO,SAAiB,SAAmD;AAC9E,UAAM,UAAU,mBAAmB,EAAE,GAAG,SAAS,SAAS,KAAK,CAAC,EAAE,KAAK;AAEvE,QAAI;AACA,uBAAiB,SAAS,KAAK,aAAa,OAAO,SAAS,OAAO,GAAG;AAClE,cAAM;AAAA,MACV;AAAA,IACJ,SAAS,OAAO;AACZ,YAAM,QAAQ,OAAO,KAAK;AAAA,IAC9B;AAEA,UAAM,QAAQ,QAAQ,MAAS;AAAA,EACnC;AACJ;",
5
5
  "names": []
6
6
  }
@@ -1 +1 @@
1
- {"version":3,"file":"RemoteWriter.d.ts","sourceRoot":"","sources":["../../../../src/storage/client/RemoteWriter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAsB,KAAK,GAAG,EAAE,MAAM,WAAW,CAAC;AACzD,OAAO,KAAK,EAA0B,cAAc,EAAE,MAAM,QAAQ,CAAC;AAGrE;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IACzB,CAAC,OAAO,EAAE,YAAY,CAAC,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAClD;AAID,wBAAgB,YAAY,CAAC,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,eAAe,GAAG,YAAY,CAmCvF;AAED,yBAAiB,YAAY,CAAC;IAC1B,UAAiB,qBAAqB;QAClC,MAAM,EAAE,cAAc,CAAC;QACvB,UAAU,EAAE,MAAM,CAAC;QACnB,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC;KACtB;IAED,UAAiB,OAAQ,SAAQ,KAAK,CAAC,qBAAqB,CAAC;KAAG;CACnE"}
1
+ {"version":3,"file":"RemoteWriter.d.ts","sourceRoot":"","sources":["../../../../src/storage/client/RemoteWriter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAsB,KAAK,GAAG,EAAE,MAAM,WAAW,CAAC;AACzD,OAAO,KAAK,EAA0B,cAAc,EAAE,MAAM,QAAQ,CAAC;AAGrE;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IACzB,CAAC,OAAO,EAAE,YAAY,CAAC,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAClD;AAID,wBAAgB,YAAY,CAAC,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,eAAe,GAAG,YAAY,CAkCvF;AAED,yBAAiB,YAAY,CAAC;IAC1B,UAAiB,qBAAqB;QAClC,MAAM,EAAE,cAAc,CAAC;QACvB,UAAU,EAAE,MAAM,CAAC;QACnB,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC;KACtB;IAED,UAAiB,OAAQ,SAAQ,KAAK,CAAC,qBAAqB,CAAC;KAAG;CACnE"}
@@ -34,8 +34,7 @@ function RemoteWriter(node, structure) {
34
34
  }
35
35
  }
36
36
  const write = Write(...attrWrites);
37
- const response = await node.interaction.write(write);
38
- WriteResult.assertSuccess(response);
37
+ WriteResult.assertSuccess(await node.interaction.write(write));
39
38
  };
40
39
  }
41
40
  function attrsFor(cluster) {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/storage/client/RemoteWriter.ts"],
4
- "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,qBAAqB;AAG9B,SAAS,OAAO,mBAA6B;AAc7C,MAAM,YAAY,oBAAI,QAA4D;AAE3E,SAAS,aAAa,MAAkB,WAA0C;AACrF,SAAO,eAAe,YAAY,SAA+B;AAC7D,UAAM,aAAa,MAAuB;AAC1C,eAAW,EAAE,QAAQ,YAAY,OAAO,KAAK,SAAS;AAClD,YAAM,UAAU,UAAU,WAAW,QAAQ,OAAO,SAAS,UAAU,CAAc;AACrF,UAAI,YAAY,QAAW;AACvB,cAAM,IAAI,cAAc,+CAA+C,UAAU,EAAE;AAAA,MACvF;AACA,YAAM,QAAQ,SAAS,OAAO;AAE9B,iBAAW,MAAM,QAAQ;AACrB,cAAM,OAAO,MAAM,EAAE;AACrB,YAAI,SAAS,QAAW;AACpB,cAAI,GAAG,WAAW,IAAI,GAAG;AACrB;AAAA,UACJ;AAEA,gBAAM,IAAI,cAAc,kCAAkC,EAAE,QAAQ,UAAU,EAAE;AAAA,QACpF;AAEA,mBAAW;AAAA,UACP,MAAM,UAAU;AAAA,YACZ,UAAU;AAAA,YACV;AAAA,YACA,YAAY,CAAC,MAAM,EAAE,CAAC;AAAA,YACtB,OAAO,OAAO,EAAE;AAAA,UACpB,CAAC;AAAA,QACL;AAAA,MACJ;AAAA,IACJ;AAEA,UAAM,QAAQ,MAAM,GAAG,UAAU;AACjC,UAAM,WAAW,MAAM,KAAK,YAAY,MAAM,KAAK;AACnD,gBAAY,cAAc,QAAQ;AAAA,EACtC;AACJ;AAYA,SAAS,SAAS,SAAsB;AACpC,MAAI,QAAQ,UAAU,IAAI,OAAO;AACjC,MAAI,OAAO;AACP,WAAO;AAAA,EACX;AACA,UAAQ,OAAO,YAAY,OAAO,OAAO,QAAQ,UAAU,EAAE,IAAI,UAAQ,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC;AACzF,YAAU,IAAI,SAAS,KAAK;AAC5B,SAAO;AACX;",
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,qBAAqB;AAG9B,SAAS,OAAO,mBAA6B;AAc7C,MAAM,YAAY,oBAAI,QAA4D;AAE3E,SAAS,aAAa,MAAkB,WAA0C;AACrF,SAAO,eAAe,YAAY,SAA+B;AAC7D,UAAM,aAAa,MAAuB;AAC1C,eAAW,EAAE,QAAQ,YAAY,OAAO,KAAK,SAAS;AAClD,YAAM,UAAU,UAAU,WAAW,QAAQ,OAAO,SAAS,UAAU,CAAc;AACrF,UAAI,YAAY,QAAW;AACvB,cAAM,IAAI,cAAc,+CAA+C,UAAU,EAAE;AAAA,MACvF;AACA,YAAM,QAAQ,SAAS,OAAO;AAE9B,iBAAW,MAAM,QAAQ;AACrB,cAAM,OAAO,MAAM,EAAE;AACrB,YAAI,SAAS,QAAW;AACpB,cAAI,GAAG,WAAW,IAAI,GAAG;AACrB;AAAA,UACJ;AAEA,gBAAM,IAAI,cAAc,kCAAkC,EAAE,QAAQ,UAAU,EAAE;AAAA,QACpF;AAEA,mBAAW;AAAA,UACP,MAAM,UAAU;AAAA,YACZ,UAAU;AAAA,YACV;AAAA,YACA,YAAY,CAAC,MAAM,EAAE,CAAC;AAAA,YACtB,OAAO,OAAO,EAAE;AAAA,UACpB,CAAC;AAAA,QACL;AAAA,MACJ;AAAA,IACJ;AAEA,UAAM,QAAQ,MAAM,GAAG,UAAU;AACjC,gBAAY,cAAc,MAAM,KAAK,YAAY,MAAM,KAAK,CAAC;AAAA,EACjE;AACJ;AAYA,SAAS,SAAS,SAAsB;AACpC,MAAI,QAAQ,UAAU,IAAI,OAAO;AACjC,MAAI,OAAO;AACP,WAAO;AAAA,EACX;AACA,UAAQ,OAAO,YAAY,OAAO,OAAO,QAAQ,UAAU,EAAE,IAAI,UAAQ,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC;AACzF,YAAU,IAAI,SAAS,KAAK;AAC5B,SAAO;AACX;",
5
5
  "names": []
6
6
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@matter/node",
3
- "version": "0.16.8-alpha.0-20260123-dff2cae52",
3
+ "version": "0.16.8-alpha.0-20260127-65e1b40e2",
4
4
  "description": "API for building Matter nodes",
5
5
  "keywords": [
6
6
  "iot",
@@ -42,14 +42,14 @@
42
42
  "#*": "./src/*"
43
43
  },
44
44
  "dependencies": {
45
- "@matter/general": "0.16.8-alpha.0-20260123-dff2cae52",
46
- "@matter/model": "0.16.8-alpha.0-20260123-dff2cae52",
47
- "@matter/types": "0.16.8-alpha.0-20260123-dff2cae52",
48
- "@matter/protocol": "0.16.8-alpha.0-20260123-dff2cae52"
45
+ "@matter/general": "0.16.8-alpha.0-20260127-65e1b40e2",
46
+ "@matter/model": "0.16.8-alpha.0-20260127-65e1b40e2",
47
+ "@matter/types": "0.16.8-alpha.0-20260127-65e1b40e2",
48
+ "@matter/protocol": "0.16.8-alpha.0-20260127-65e1b40e2"
49
49
  },
50
50
  "devDependencies": {
51
- "@matter/tools": "0.16.8-alpha.0-20260123-dff2cae52",
52
- "@matter/testing": "0.16.8-alpha.0-20260123-dff2cae52"
51
+ "@matter/tools": "0.16.8-alpha.0-20260127-65e1b40e2",
52
+ "@matter/testing": "0.16.8-alpha.0-20260127-65e1b40e2"
53
53
  },
54
54
  "files": [
55
55
  "dist/**/*",
@@ -105,6 +105,7 @@ export class CommissioningClient extends Behavior {
105
105
  this.reactTo(node.lifecycle.partsReady, this.#initializeNode);
106
106
  this.reactTo(node.lifecycle.online, this.#nodeOnline);
107
107
  this.reactTo(this.events.peerAddress$Changed, this.#peerAddressChanged);
108
+ this.reactTo(this.events.addresses$Changed, this.#operationalAddressesChanged);
108
109
  }
109
110
 
110
111
  #nodeOnline() {
@@ -309,6 +310,37 @@ export class CommissioningClient extends Behavior {
309
310
  endpoint.lifecycle.initialized.emit(this.state.peerAddress !== undefined);
310
311
  }
311
312
 
313
+ #operationalAddressesChanged(newAddresses: ServerAddress[] | undefined, oldAddresses: ServerAddress[] | undefined) {
314
+ // Log when addresses change
315
+ if (newAddresses === undefined) {
316
+ logger.info("Operational address for", Diagnostic.strong(PeerAddress(this.state.peerAddress)), "cleared");
317
+ return;
318
+ }
319
+
320
+ const newAddressesStr = newAddresses?.map(a => ServerAddress.urlFor(a)).join(", ");
321
+ if (oldAddresses === undefined) {
322
+ logger.info(
323
+ "Operational address for",
324
+ Diagnostic.strong(PeerAddress(this.state.peerAddress)),
325
+ "set to",
326
+ Diagnostic.weak(newAddressesStr),
327
+ );
328
+ return;
329
+ }
330
+
331
+ const oldAddressesStr = oldAddresses.map(a => ServerAddress.urlFor(a)).join(", ");
332
+ if (oldAddressesStr !== newAddressesStr) {
333
+ logger.info(
334
+ "Operational address changed for",
335
+ Diagnostic.strong(PeerAddress(this.state.peerAddress)),
336
+ "from",
337
+ Diagnostic.weak(oldAddressesStr),
338
+ "to",
339
+ Diagnostic.weak(newAddressesStr),
340
+ );
341
+ }
342
+ }
343
+
312
344
  #updateAddresses(addr: ProtocolPeerAddress) {
313
345
  const node = this.endpoint as ClientNode;
314
346
  if (!node.env.has(PeerSet)) {
@@ -533,6 +565,9 @@ export namespace CommissioningClient {
533
565
  peerAddress$Changed = new Observable<
534
566
  [value: ProtocolPeerAddress | undefined, oldValue: ProtocolPeerAddress | undefined]
535
567
  >();
568
+ addresses$Changed = new Observable<
569
+ [value: ServerAddress[] | undefined, oldValue: ServerAddress[] | undefined]
570
+ >();
536
571
  }
537
572
 
538
573
  /**
@@ -96,7 +96,7 @@ export class ClientNetworkRuntime extends NetworkRuntime {
96
96
  }
97
97
 
98
98
  const address = PeerAddress(commissioningState.peerAddress);
99
- if (!address || session.peerAddress !== address) {
99
+ if (!address || !PeerAddress.is(session.peerAddress, address)) {
100
100
  return;
101
101
  }
102
102
 
@@ -109,11 +109,11 @@ export class ClientNetworkRuntime extends NetworkRuntime {
109
109
  }
110
110
 
111
111
  const address = PeerAddress(commissioningState.peerAddress);
112
- if (session.peerAddress !== address) {
112
+ if (!PeerAddress.is(session.peerAddress, address)) {
113
113
  return;
114
114
  }
115
115
 
116
- if (address && sessions.find(({ peerAddress }) => peerAddress === address)) {
116
+ if (address && sessions.find(({ peerAddress }) => PeerAddress.is(peerAddress, address))) {
117
117
  return;
118
118
  }
119
119
 
@@ -14,7 +14,7 @@ import { Duration, Hours, isDeepEqual, Logger, MatterError, Millis, Minutes, Sec
14
14
  import type { ClientNode } from "#node/ClientNode.js";
15
15
  import { Node } from "#node/Node.js";
16
16
  import type { ServerNode } from "#node/ServerNode.js";
17
- import { Fabric, PeerAddress, Write } from "#protocol";
17
+ import { Fabric, PeerAddress, Write, WriteResult } from "#protocol";
18
18
  import { EndpointNumber, FabricIndex, NodeId, VendorId } from "#types";
19
19
 
20
20
  const logger = new Logger("OTAAnnouncements");
@@ -170,16 +170,19 @@ export class OtaAnnouncements {
170
170
  ) {
171
171
  try {
172
172
  // Fabric scoped attribute, so we just overwrite our value
173
- await peer.interaction.write(
174
- Write(
175
- Write.Attribute({
176
- endpoint: otaEndpoint.number,
177
- cluster: OtaSoftwareUpdateRequestor.Complete,
178
- attributes: ["defaultOtaProviders"],
179
- value: [consideredOtaProviderRecord],
180
- }),
173
+ WriteResult.assertSuccess(
174
+ await peer.interaction.write(
175
+ Write(
176
+ Write.Attribute({
177
+ endpoint: otaEndpoint.number,
178
+ cluster: OtaSoftwareUpdateRequestor.Complete,
179
+ attributes: ["defaultOtaProviders"],
180
+ value: [consideredOtaProviderRecord],
181
+ }),
182
+ ),
181
183
  ),
182
184
  );
185
+
183
186
  logger.debug(
184
187
  `${existingOtaProviderRecord === undefined ? "Added" : "Updated"} default OTA provider for`,
185
188
  peerAddress,
@@ -4,19 +4,11 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
- import { deepCopy, isIpNetworkChannel, Logger, MatterError, MaybePromise, Seconds, ServerAddressUdp } from "#general";
7
+ import { deepCopy, isIpNetworkChannel, Logger, MatterError, MaybePromise, Seconds } from "#general";
8
8
  import { DatatypeModel, FieldElement } from "#model";
9
9
  import { InteractionServer, PeerSubscription } from "#node/server/InteractionServer.js";
10
10
  import { ServerSubscription } from "#node/server/ServerSubscription.js";
11
- import {
12
- NodeDiscoveryType,
13
- PeerAddress,
14
- PeerAddressSet,
15
- PeerSet,
16
- SessionClosedError,
17
- SessionManager,
18
- Subscription,
19
- } from "#protocol";
11
+ import { NodeDiscoveryType, PeerAddress, PeerAddressSet, PeerSet, SessionManager, Subscription } from "#protocol";
20
12
  import { StatusCode, StatusResponseError } from "#types";
21
13
  import { Behavior } from "../../Behavior.js";
22
14
  import { SessionsBehavior } from "../sessions/SessionsBehavior.js";
@@ -150,13 +142,8 @@ export class SubscriptionsBehavior extends Behavior {
150
142
  const { fabricIndex, nodeId } = peerAddress;
151
143
 
152
144
  // TODO Remove when we store peer addresses also for operational nodes
153
- let operationalAddress: ServerAddressUdp | undefined;
154
- try {
155
- operationalAddress = isIpNetworkChannel(session.channel) ? session.channel.networkAddress : undefined;
156
- } catch (error) {
157
- // Can happen in edge cases, so better catch it and proceed without operational address
158
- SessionClosedError.accept(error);
159
- }
145
+ const operationalAddress =
146
+ !session.isClosed && isIpNetworkChannel(session.channel) ? session.channel.networkAddress : undefined;
160
147
  const peerSubscription: PeerSubscription = {
161
148
  subscriptionId: id,
162
149
  peerAddress: { fabricIndex, nodeId },
@@ -128,7 +128,10 @@ export class ClientNodeInteraction implements Interactable<ActionContext> {
128
128
 
129
129
  /**
130
130
  * Invoke a command remotely on the node.
131
- * The returned command response is returned as response chunks
131
+ * The returned command response is returned as response chunks (attr-status).
132
+ *
133
+ * When the number of commands exceeds the peer's MaxPathsPerInvoke limit (or 1 for older nodes),
134
+ * commands are split across multiple parallel exchanges automatically by ClientInteraction.
132
135
  */
133
136
  async *invoke(request: ClientInvoke, context?: ActionContext): DecodedInvokeResult {
134
137
  // For commands, we always ignore the queue because the user is responsible for managing that themselves
@@ -94,6 +94,4 @@ export class NodePeerAddressStore extends PeerAddressStore {
94
94
  deletePeer(address: PeerAddress) {
95
95
  this.#assignedAddresses.delete(address);
96
96
  }
97
-
98
- createNodeStore(): undefined {}
99
97
  }