@matter/nodejs-shell 0.17.9 → 0.18.0-alpha.0-20260812-4d7f2790e

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 (52) hide show
  1. package/README.md +11 -1
  2. package/dist/esm/MatterNode.js +237 -134
  3. package/dist/esm/MatterNode.js.map +1 -1
  4. package/dist/esm/app.js +13 -7
  5. package/dist/esm/app.js.map +1 -1
  6. package/dist/esm/shell/cmd_cluster-attributes.js +64 -45
  7. package/dist/esm/shell/cmd_cluster-attributes.js.map +2 -2
  8. package/dist/esm/shell/cmd_cluster-commands.js +11 -9
  9. package/dist/esm/shell/cmd_cluster-commands.js.map +1 -1
  10. package/dist/esm/shell/cmd_cluster-events.js +36 -9
  11. package/dist/esm/shell/cmd_cluster-events.js.map +1 -1
  12. package/dist/esm/shell/cmd_commission.js +119 -93
  13. package/dist/esm/shell/cmd_commission.js.map +1 -1
  14. package/dist/esm/shell/cmd_discover.js +23 -21
  15. package/dist/esm/shell/cmd_discover.js.map +1 -1
  16. package/dist/esm/shell/cmd_icd.js +46 -30
  17. package/dist/esm/shell/cmd_icd.js.map +1 -1
  18. package/dist/esm/shell/cmd_identify.js +11 -7
  19. package/dist/esm/shell/cmd_identify.js.map +1 -1
  20. package/dist/esm/shell/cmd_nodes.js +189 -168
  21. package/dist/esm/shell/cmd_nodes.js.map +1 -1
  22. package/dist/esm/shell/cmd_session.js +3 -4
  23. package/dist/esm/shell/cmd_session.js.map +1 -1
  24. package/dist/esm/shell/cmd_subscribe.js +26 -12
  25. package/dist/esm/shell/cmd_subscribe.js.map +1 -1
  26. package/dist/esm/util/ClusterEndpoint.js +61 -0
  27. package/dist/esm/util/ClusterEndpoint.js.map +6 -0
  28. package/dist/esm/util/awaitSeeded.js +31 -0
  29. package/dist/esm/util/awaitSeeded.js.map +6 -0
  30. package/dist/esm/util/diagnosticLogging.js +99 -0
  31. package/dist/esm/util/diagnosticLogging.js.map +6 -0
  32. package/dist/esm/util/legacyStorageMigration.js +188 -0
  33. package/dist/esm/util/legacyStorageMigration.js.map +6 -0
  34. package/package.json +10 -11
  35. package/src/MatterNode.ts +298 -159
  36. package/src/app.ts +17 -9
  37. package/src/shell/cmd_cluster-attributes.ts +77 -53
  38. package/src/shell/cmd_cluster-commands.ts +12 -13
  39. package/src/shell/cmd_cluster-events.ts +38 -11
  40. package/src/shell/cmd_commission.ts +136 -113
  41. package/src/shell/cmd_discover.ts +36 -22
  42. package/src/shell/cmd_icd.ts +52 -32
  43. package/src/shell/cmd_identify.ts +11 -7
  44. package/src/shell/cmd_nodes.ts +226 -199
  45. package/src/shell/cmd_session.ts +3 -5
  46. package/src/shell/cmd_subscribe.ts +37 -14
  47. package/src/shell/webassets/index.html +1 -1
  48. package/src/tsconfig.json +0 -3
  49. package/src/util/ClusterEndpoint.ts +107 -0
  50. package/src/util/awaitSeeded.ts +43 -0
  51. package/src/util/diagnosticLogging.ts +117 -0
  52. package/src/util/legacyStorageMigration.ts +275 -0
@@ -3,18 +3,65 @@
3
3
  * Copyright 2022-2026 Matter.js Authors
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import { Diagnostic, Logger, MatterError } from "@matter/general";
6
+ import { Diagnostic, ImplementationError, Logger, Seconds } from "@matter/general";
7
+ import { BasicInformationClient } from "@matter/node/behaviors/basic-information";
8
+ import { DescriptorClient } from "@matter/node/behaviors/descriptor";
7
9
  import { DiscoveryCapabilitiesSchema, ManualPairingCodeCodec, NodeId, QrCode, QrPairingCodeCodec } from "@matter/types";
8
- import { BasicInformation, Descriptor, GeneralCommissioning } from "@matter/types/clusters";
9
- import { createDiagnosticCallbacks } from "../MatterNode.js";
10
+ import { GeneralCommissioning } from "@matter/types/clusters";
11
+ import { awaitSeeded } from "../util/awaitSeeded.js";
10
12
  const logger = Logger.get("Commission");
13
+ function findCommissionedNode(theNode, nodeId) {
14
+ return theNode.node.peers.commissioned.find((peer) => peer.peerAddress?.nodeId === nodeId);
15
+ }
11
16
  function commands(theNode) {
12
17
  return {
13
18
  command: "commission",
14
19
  describe: "Handle device commissioning",
15
20
  builder: (yargs) => yargs.command("pair", "Pair with a matter device", (yargs2) => {
16
- return yargs2.command(
17
- "* [node-id] [ip:[port]]",
21
+ return yargs2.options({
22
+ pairingCode: {
23
+ describe: "pairing code",
24
+ default: void 0,
25
+ type: "string"
26
+ },
27
+ qrCode: {
28
+ describe: "QR code string (MT:...)",
29
+ default: void 0,
30
+ type: "string"
31
+ },
32
+ qrCodeIndex: {
33
+ describe: "Index of QR code entry if multiple (1..n)",
34
+ default: 1,
35
+ type: "number"
36
+ },
37
+ setupPinCode: {
38
+ describe: "setup pin code",
39
+ default: 20202021,
40
+ type: "number"
41
+ },
42
+ instanceId: {
43
+ alias: "i",
44
+ describe: "instance id",
45
+ type: "string"
46
+ },
47
+ discriminator: {
48
+ alias: "d",
49
+ description: "Long discriminator",
50
+ type: "number"
51
+ },
52
+ shortDiscriminator: {
53
+ alias: "s",
54
+ description: "Short discriminator",
55
+ type: "number"
56
+ },
57
+ ble: {
58
+ alias: "b",
59
+ description: "Also discover over BLE",
60
+ type: "boolean",
61
+ default: false
62
+ }
63
+ }).command(
64
+ "* [node-id] [ip] [port]",
18
65
  "Commission a matter device",
19
66
  (yargs3) => {
20
67
  return yargs3.positional("node-id", {
@@ -32,16 +79,14 @@ function commands(theNode) {
32
79
  });
33
80
  },
34
81
  async (argv) => {
35
- const {
36
- pairingCode,
37
- qrCode,
38
- nodeId: nodeIdStr,
39
- ipPort,
40
- ip,
41
- ble = false,
42
- instanceId
43
- } = argv;
82
+ const { pairingCode, qrCode, nodeId: nodeIdStr, port, ip, ble, instanceId } = argv;
44
83
  let { setupPinCode, discriminator, shortDiscriminator, qrCodeIndex } = argv;
84
+ if (ip === void 0 !== (port === void 0)) {
85
+ console.log(
86
+ "Known-address commissioning requires both <ip> and <port>; provide both or neither (to use discovery)."
87
+ );
88
+ return;
89
+ }
45
90
  if (typeof pairingCode === "string" && pairingCode.length > 0) {
46
91
  const { shortDiscriminator: pairingCodeShortDiscriminator, passcode } = ManualPairingCodeCodec.decode(pairingCode);
47
92
  shortDiscriminator = pairingCodeShortDiscriminator;
@@ -84,27 +129,16 @@ function commands(theNode) {
84
129
  }
85
130
  const nodeId = nodeIdStr !== void 0 ? NodeId(BigInt(nodeIdStr)) : void 0;
86
131
  await theNode.start();
87
- if (theNode.commissioningController === void 0) {
88
- throw new Error("CommissioningController not initialized");
89
- }
90
- const options = {
91
- discovery: {
92
- knownAddress: ip !== void 0 && ipPort !== void 0 ? { ip, port: ipPort, type: "udp" } : void 0,
93
- identifierData: instanceId !== void 0 ? { instanceId } : discriminator !== void 0 ? { longDiscriminator: discriminator } : shortDiscriminator !== void 0 ? { shortDiscriminator } : {},
94
- discoveryCapabilities: {
95
- ble,
96
- onIpNetwork: true
97
- }
98
- },
99
- passcode: setupPinCode,
100
- ...createDiagnosticCallbacks()
101
- };
102
132
  const strictAttestation = await theNode.Store.get(
103
133
  "StrictAttestationValidation",
104
134
  false
105
135
  );
106
- options.commissioning = {
107
- nodeId: nodeId !== void 0 ? NodeId(nodeId) : void 0,
136
+ const commissioningOptions = {
137
+ passcode: setupPinCode,
138
+ discriminator,
139
+ nodeId,
140
+ // The shell subscribes on demand via the `subscribe` command, not at commission.
141
+ autoSubscribe: false,
108
142
  regulatoryLocation: GeneralCommissioning.RegulatoryLocationType.Outdoor,
109
143
  // Set to the most restrictive if relevant
110
144
  regulatoryCountryCode: "XX",
@@ -120,86 +154,64 @@ function commands(theNode) {
120
154
  return accept;
121
155
  }
122
156
  };
123
- console.log(Diagnostic.json(options));
157
+ const { passcode: _passcode, wifiNetwork, ...loggable } = commissioningOptions;
158
+ console.log(
159
+ Diagnostic.json({
160
+ ...loggable,
161
+ ...wifiNetwork && {
162
+ wifiNetwork: { ...wifiNetwork, wifiCredentials: "<redacted>" }
163
+ }
164
+ })
165
+ );
124
166
  await theNode.certificateService();
125
167
  const wifiSsid = await theNode.Store.get("WiFiSsid", "");
126
168
  const wifiCredentials = await theNode.Store.get("WiFiPassword", "");
127
169
  if (wifiSsid.length > 0 && wifiCredentials.length > 0) {
128
- options.commissioning.wifiNetwork = { wifiSsid, wifiCredentials };
170
+ commissioningOptions.wifiNetwork = { wifiSsid, wifiCredentials };
129
171
  }
130
172
  const threadOperationalDataset = await theNode.Store.get(
131
173
  "ThreadOperationalDataset",
132
174
  ""
133
175
  );
134
176
  if (threadOperationalDataset.length > 0) {
135
- options.commissioning.threadNetwork = {
177
+ commissioningOptions.threadNetwork = {
136
178
  networkName: await theNode.Store.get("ThreadName", ""),
137
179
  operationalDataset: threadOperationalDataset
138
180
  };
139
181
  }
140
- const commissionedNodeId = await theNode.commissioningController.commissionNode(options);
141
- console.log("Commissioned Node:", commissionedNodeId);
142
- const node = theNode.commissioningController.getPairedNode(commissionedNodeId);
143
- if (node === void 0) {
144
- throw new MatterError("Node not found after commissioning.");
182
+ let node;
183
+ if (ip !== void 0 && port !== void 0) {
184
+ node = await theNode.node.peers.forDescriptor({
185
+ addresses: [{ ip, port, type: "udp" }]
186
+ });
187
+ await node.commission(commissioningOptions);
188
+ } else {
189
+ const identifierData = instanceId !== void 0 ? { instanceId } : shortDiscriminator !== void 0 ? { shortDiscriminator } : {};
190
+ node = await theNode.node.peers.commission({
191
+ ...identifierData,
192
+ ...commissioningOptions,
193
+ discoveryCapabilities: { ble, onIpNetwork: true }
194
+ });
145
195
  }
146
- const descriptor = node.getRootClusterClient(Descriptor);
196
+ console.log("Commissioned Node:", node.peerAddress?.nodeId.toString());
197
+ if (!await awaitSeeded(node)) {
198
+ return;
199
+ }
200
+ const descriptor = node.maybeStateOf(DescriptorClient);
147
201
  if (descriptor !== void 0) {
148
- console.log(await descriptor.attributes.deviceTypeList.get());
149
- console.log(await descriptor.getServerListAttribute());
202
+ console.log(descriptor.deviceTypeList);
203
+ console.log(descriptor.serverList);
150
204
  } else {
151
205
  console.log("No Descriptor Cluster found. This should never happen!");
152
206
  }
153
- const info = node.getRootClusterClient(BasicInformation);
207
+ const info = node.maybeStateOf(BasicInformationClient);
154
208
  if (info !== void 0) {
155
- console.log(await info.getProductNameAttribute());
209
+ console.log(info.productName);
156
210
  } else {
157
211
  console.log("No BasicInformation Cluster found. This should never happen!");
158
212
  }
159
213
  }
160
- ).options({
161
- pairingCode: {
162
- describe: "pairing code",
163
- default: void 0,
164
- type: "string"
165
- },
166
- qrCode: {
167
- describe: "QR code string (MT:...)",
168
- default: void 0,
169
- type: "string"
170
- },
171
- qrCodeIndex: {
172
- describe: "Index of QR code entry if multiple (1..n)",
173
- default: 1,
174
- type: "number"
175
- },
176
- setupPinCode: {
177
- describe: "setup pin code",
178
- default: 20202021,
179
- type: "number"
180
- },
181
- instanceId: {
182
- alias: "i",
183
- describe: "instance id",
184
- type: "string"
185
- },
186
- discriminator: {
187
- alias: "d",
188
- description: "Long discriminator",
189
- type: "number"
190
- },
191
- shortDiscriminator: {
192
- alias: "s",
193
- description: "Short discriminator",
194
- type: "number"
195
- },
196
- ble: {
197
- alias: "b",
198
- description: "Also discover over BLE",
199
- type: "boolean",
200
- default: false
201
- }
202
- });
214
+ );
203
215
  }).command(
204
216
  "open-basic-window <node-id> [timeout]",
205
217
  "Open a basic commissioning window",
@@ -218,7 +230,10 @@ function commands(theNode) {
218
230
  const { nodeId, timeout } = argv;
219
231
  await theNode.start();
220
232
  const node = (await theNode.connectAndGetNodes(nodeId, { autoSubscribe: false }))[0];
221
- await node.openBasicCommissioningWindow(timeout);
233
+ if (!await awaitSeeded(node)) {
234
+ return;
235
+ }
236
+ await node.openBasicCommissioningWindow(Seconds(timeout));
222
237
  console.log(`Basic Commissioning Window for node ${nodeId} opened`);
223
238
  }
224
239
  ).command(
@@ -239,9 +254,13 @@ function commands(theNode) {
239
254
  await theNode.start();
240
255
  const { nodeId, timeout } = argv;
241
256
  const node = (await theNode.connectAndGetNodes(nodeId, { autoSubscribe: false }))[0];
242
- const data = await node.openEnhancedCommissioningWindow(timeout);
257
+ if (!await awaitSeeded(node)) {
258
+ return;
259
+ }
260
+ const { qrPairingCode, manualPairingCode } = await node.openEnhancedCommissioningWindow(
261
+ Seconds(timeout)
262
+ );
243
263
  console.log(`Enhanced Commissioning Window for node ${nodeId} opened`);
244
- const { qrPairingCode, manualPairingCode } = data;
245
264
  console.log(QrCode.get(qrPairingCode));
246
265
  console.log(
247
266
  `QR Code URL: https://project-chip.github.io/connectedhomeip/qrcode.html?data=${qrPairingCode}`
@@ -266,11 +285,18 @@ function commands(theNode) {
266
285
  },
267
286
  async (argv) => {
268
287
  await theNode.start();
269
- const { nodeId, force } = argv;
288
+ const { nodeId: nodeIdStr, force } = argv;
270
289
  if (force) {
271
- await theNode.controller.removeNode(NodeId(BigInt(nodeId)), !force);
290
+ const node = findCommissionedNode(theNode, NodeId(BigInt(nodeIdStr)));
291
+ if (node === void 0) {
292
+ throw new ImplementationError(`Node ${nodeIdStr} not commissioned`);
293
+ }
294
+ await node.delete();
272
295
  } else {
273
- const node = (await theNode.connectAndGetNodes(nodeId, { autoSubscribe: false }))[0];
296
+ const node = (await theNode.connectAndGetNodes(nodeIdStr, { autoSubscribe: false }))[0];
297
+ if (!await awaitSeeded(node)) {
298
+ return;
299
+ }
274
300
  await node.decommission();
275
301
  }
276
302
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/shell/cmd_commission.ts"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": ["yargs"]
6
6
  }
@@ -3,7 +3,7 @@
3
3
  * Copyright 2022-2026 Matter.js Authors
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import { Diagnostic, Seconds } from "@matter/general";
6
+ import { ChannelType, Diagnostic, Seconds } from "@matter/general";
7
7
  import { ManualPairingCodeCodec, VendorId } from "@matter/types";
8
8
  function commands(theNode) {
9
9
  return {
@@ -75,33 +75,35 @@ function commands(theNode) {
75
75
  discriminator = void 0;
76
76
  }
77
77
  await theNode.start();
78
- if (theNode.commissioningController === void 0) {
79
- throw new Error("CommissioningController not initialized");
80
- }
81
78
  const identifierData = discriminator !== void 0 ? { longDiscriminator: discriminator } : shortDiscriminator !== void 0 ? { shortDiscriminator } : vendorId !== void 0 ? { vendorId: VendorId(vendorId) } : productId !== void 0 ? { productId } : deviceType !== void 0 ? { deviceType } : {};
82
79
  console.log(
83
80
  `Discover devices with identifier ${Diagnostic.json(
84
81
  identifierData
85
82
  )} for ${once ? "first match or " : ""}${timeoutSeconds} seconds.`
86
83
  );
87
- const results = await theNode.commissioningController.discoverCommissionableDevices(
88
- identifierData,
89
- {
90
- ble,
91
- onIpNetwork: true
92
- },
93
- (device) => {
94
- console.log(`Discovered device ${Diagnostic.json(device)}`);
95
- if (once) {
96
- theNode.commissioningController?.cancelCommissionableDeviceDiscovery(
97
- identifierData,
98
- { ble, onIpNetwork: true }
99
- );
100
- }
101
- },
102
- Seconds(timeoutSeconds)
84
+ const discovery = theNode.node.peers.discover({
85
+ ...identifierData,
86
+ timeout: Seconds(timeoutSeconds),
87
+ scannerFilter: (scanner) => scanner.type === ChannelType.UDP || ble && scanner.type === ChannelType.BLE
88
+ });
89
+ const seen = /* @__PURE__ */ new Set();
90
+ discovery.discovered.on((node) => {
91
+ const { deviceIdentifier, addresses } = node.state.commissioning;
92
+ const id = deviceIdentifier || (addresses ?? []).map((a) => JSON.stringify(a)).sort().join("|");
93
+ if (seen.has(id)) {
94
+ return;
95
+ }
96
+ seen.add(id);
97
+ console.log(`Discovered device ${Diagnostic.json(node.state.commissioning)}`);
98
+ if (once) {
99
+ discovery.stop();
100
+ }
101
+ });
102
+ const results = await discovery;
103
+ console.log(
104
+ `Discovered ${results.length} devices`,
105
+ results.map((node) => node.state.commissioning)
103
106
  );
104
- console.log(`Discovered ${results.length} devices`, results);
105
107
  }
106
108
  ),
107
109
  handler: async (argv) => {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/shell/cmd_discover.ts"],
4
- "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,YAAY,eAAe;AAEpC,SAAS,wBAAwB,gBAAgB;AAIlC,SAAR,SAA0B,SAAqB;AAClD,SAAO;AAAA,IACH,SAAS;AAAA,IACT,UAAU;AAAA,IACV,SAAS,CAAC,UACN,MAEK;AAAA,MACG;AAAA,MACA;AAAA,MACA,MAAM;AACF,eAAO,MACF,WAAW,mBAAmB;AAAA,UAC3B,UAAU;AAAA,UACV,SAAS;AAAA,UACT,MAAM;AAAA,QACV,CAAC,EACA,QAAQ;AAAA,UACL,aAAa;AAAA,YACT,UAAU;AAAA,YACV,SAAS;AAAA,YACT,MAAM;AAAA,UACV;AAAA,UACA,eAAe;AAAA,YACX,OAAO;AAAA,YACP,aAAa;AAAA,YACb,SAAS;AAAA,YACT,MAAM;AAAA,UACV;AAAA,UACA,oBAAoB;AAAA,YAChB,OAAO;AAAA,YACP,aAAa;AAAA,YACb,SAAS;AAAA,YACT,MAAM;AAAA,UACV;AAAA,UACA,UAAU;AAAA,YACN,OAAO;AAAA,YACP,aAAa;AAAA,YACb,SAAS;AAAA,YACT,MAAM;AAAA,UACV;AAAA,UACA,WAAW;AAAA,YACP,OAAO;AAAA,YACP,aAAa;AAAA,YACb,SAAS;AAAA,YACT,MAAM;AAAA,UACV;AAAA,UACA,YAAY;AAAA,YACR,OAAO;AAAA,YACP,aAAa;AAAA,YACb,SAAS;AAAA,YACT,MAAM;AAAA,UACV;AAAA,UACA,KAAK;AAAA,YACD,OAAO;AAAA,YACP,aAAa;AAAA,YACb,SAAS;AAAA,YACT,MAAM;AAAA,UACV;AAAA,UACA,MAAM;AAAA,YACF,aAAa;AAAA,YACb,SAAS;AAAA,YACT,MAAM;AAAA,UACV;AAAA,QACJ,CAAC;AAAA,MACT;AAAA,MACA,OAAM,SAAQ;AACV,cAAM,EAAE,KAAK,MAAM,aAAa,UAAU,WAAW,YAAY,eAAe,IAAI;AACpF,YAAI,EAAE,eAAe,mBAAmB,IAAI;AAE5C,YAAI,OAAO,gBAAgB,UAAU;AACjC,gBAAM,EAAE,oBAAoB,8BAA8B,IACtD,uBAAuB,OAAO,WAAW;AAC7C,+BAAqB;AACrB,0BAAgB;AAAA,QACpB;AAEA,cAAM,QAAQ,MAAM;AACpB,YAAI,QAAQ,4BAA4B,QAAW;AAC/C,gBAAM,IAAI,MAAM,yCAAyC;AAAA,QAC7D;AAEA,cAAM,iBACF,kBAAkB,SACZ,EAAE,mBAAmB,cAAc,IACnC,uBAAuB,SACrB,EAAE,mBAAmB,IACrB,aAAa,SACX,EAAE,UAAU,SAAS,QAAQ,EAAE,IAC/B,cAAc,SACZ,EAAE,UAAU,IACZ,eAAe,SACb,EAAE,WAAW,IACb,CAAC;AAEnB,gBAAQ;AAAA,UACJ,oCAAoC,WAAW;AAAA,YAC3C;AAAA,UACJ,CAAC,QAAQ,OAAO,oBAAoB,EAAE,GAAG,cAAc;AAAA,QAC3D;AAEA,cAAM,UAAU,MAAM,QAAQ,wBAAwB;AAAA,UAClD;AAAA,UACA;AAAA,YACI;AAAA,YACA,aAAa;AAAA,UACjB;AAAA,UACA,YAAU;AACN,oBAAQ,IAAI,qBAAqB,WAAW,KAAK,MAAM,CAAC,EAAE;AAC1D,gBAAI,MAAM;AACN,sBAAQ,yBAAyB;AAAA,gBAC7B;AAAA,gBACA,EAAE,KAAK,aAAa,KAAK;AAAA,cAC7B;AAAA,YACJ;AAAA,UACJ;AAAA,UACA,QAAQ,cAAc;AAAA,QAC1B;AAEA,gBAAQ,IAAI,cAAc,QAAQ,MAAM,YAAY,OAAO;AAAA,MAC/D;AAAA,IACJ;AAAA,IACR,SAAS,OAAO,SAAc;AAC1B,WAAK,YAAY;AAAA,IACrB;AAAA,EACJ;AACJ;",
4
+ "mappings": "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",
5
5
  "names": []
6
6
  }
@@ -3,18 +3,20 @@
3
3
  * Copyright 2022-2026 Matter.js Authors
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import { Duration, Millis, ObserverGroup } from "@matter/general";
7
- import { IcdClient, IcdMultiAdminError } from "@matter/node";
6
+ import { Duration, ImplementationError, Millis, ObserverGroup } from "@matter/general";
7
+ import { IcdClient, IcdMultiAdminError, NodeConnectionState } from "@matter/node";
8
8
  import { IcdManagementClient } from "@matter/node/behaviors/icd-management";
9
9
  import { NodeId, SubjectId, VendorId } from "@matter/types";
10
10
  import { IcdManagement } from "@matter/types/clusters/icd-management";
11
- import { NodeStates } from "@project-chip/matter.js/device";
11
+ import { awaitSeeded } from "../util/awaitSeeded.js";
12
12
  const watchers = /* @__PURE__ */ new Map();
13
- async function printStatus(paired) {
14
- const clientNode = paired.node;
13
+ function findCommissionedNode(theNode, nodeId) {
14
+ return theNode.node.peers.commissioned.find((peer) => peer.peerAddress?.nodeId === nodeId);
15
+ }
16
+ async function printStatus(nodeId, clientNode) {
15
17
  if (!clientNode.behaviors.has(IcdClient)) {
16
- if (!paired.initialized) {
17
- console.log(`node ${paired.nodeId}: uninitialized (no cached data yet)`);
18
+ if (!clientNode.lifecycle.isSeeded) {
19
+ console.log(`node ${nodeId}: uninitialized (no cached data yet)`);
18
20
  }
19
21
  return;
20
22
  }
@@ -23,10 +25,10 @@ async function printStatus(paired) {
23
25
  const supportsLit = IcdClient.litSupported(clientNode);
24
26
  const awake = await clientNode.act((agent) => agent.get(IcdClient).awake);
25
27
  const operatingModeLabel = mgmt === void 0 ? "n/a" : IcdManagement.OperatingMode[mgmt.operatingMode ?? -1] ?? mgmt.operatingMode ?? "unknown";
26
- const marker = paired.initialized ? "" : " [uninitialized]";
28
+ const marker = clientNode.lifecycle.isSeeded ? "" : " [uninitialized]";
27
29
  console.log(
28
30
  [
29
- `node ${paired.nodeId}:${marker}`,
31
+ `node ${nodeId}:${marker}`,
30
32
  ` registered=${icd.registered}`,
31
33
  ` available=${icd.available}`,
32
34
  ` awake=${awake}`,
@@ -45,7 +47,10 @@ function selectsAll(nodeIdStr) {
45
47
  }
46
48
  async function targetNodeIds(theNode, nodeIdStr) {
47
49
  await theNode.start();
48
- return selectsAll(nodeIdStr) ? theNode.controller.getCommissionedNodes() : [NodeId(BigInt(nodeIdStr))];
50
+ if (!selectsAll(nodeIdStr)) {
51
+ return [NodeId(BigInt(nodeIdStr))];
52
+ }
53
+ return theNode.node.peers.commissioned.map((peer) => peer.peerAddress?.nodeId).filter((nodeId) => nodeId !== void 0);
49
54
  }
50
55
  async function eachNode(theNode, nodeIdStr, action) {
51
56
  const all = selectsAll(nodeIdStr);
@@ -65,18 +70,18 @@ async function eachNode(theNode, nodeIdStr, action) {
65
70
  }
66
71
  }
67
72
  }
68
- async function pairedNodeFor(theNode, nodeId) {
69
- const paired = (await theNode.connectAndGetNodes(String(nodeId)))[0];
70
- if (paired === void 0) {
71
- throw new Error(`Node ${nodeId} not found / not connected`);
73
+ async function connectedIcdNode(theNode, nodeId) {
74
+ const clientNode = (await theNode.connectAndGetNodes(String(nodeId)))[0];
75
+ if (clientNode === void 0) {
76
+ throw new ImplementationError(`Node ${nodeId} not found / not connected`);
72
77
  }
73
- if (!paired.node.behaviors.has(IcdClient)) {
74
- throw new Error(`Node ${nodeId} is not an ICD device (no IcdManagement cluster)`);
78
+ if (!await awaitSeeded(clientNode, { quiet: true })) {
79
+ throw new ImplementationError(`Node ${nodeId} did not become ready (offline?)`);
75
80
  }
76
- return paired;
77
- }
78
- async function clientNodeFor(theNode, nodeId) {
79
- return (await pairedNodeFor(theNode, nodeId)).node;
81
+ if (!clientNode.behaviors.has(IcdClient)) {
82
+ throw new ImplementationError(`Node ${nodeId} is not an ICD device (no IcdManagement cluster)`);
83
+ }
84
+ return clientNode;
80
85
  }
81
86
  function stopWatch(nodeIdStr) {
82
87
  if (selectsAll(nodeIdStr)) {
@@ -96,8 +101,7 @@ async function startWatch(theNode, nodeId) {
96
101
  const key = String(nodeId);
97
102
  watchers.get(key)?.close();
98
103
  watchers.delete(key);
99
- const paired = await pairedNodeFor(theNode, nodeId);
100
- const clientNode = paired.node;
104
+ const clientNode = await connectedIcdNode(theNode, nodeId);
101
105
  const observers = new ObserverGroup();
102
106
  const stamp = (msg) => console.log(`[icd ${nodeId}] ${msg}`);
103
107
  const wakefulnessSuffix = async () => {
@@ -121,9 +125,12 @@ async function startWatch(theNode, nodeId) {
121
125
  observers.on(events.checkInMissed, async () => stamp(`check-in MISSED ${await wakefulnessSuffix()}`));
122
126
  observers.on(events.keyRefreshed, () => stamp("key refreshed"));
123
127
  observers.on(events.available$Changed, (value) => stamp(`available=${value}`));
124
- observers.on(paired.events.stateChanged, (state) => stamp(`connection=${NodeStates[state] ?? state}`));
128
+ observers.on(
129
+ clientNode.lifecycle.connectionStateChanged,
130
+ (state) => stamp(`connection=${NodeConnectionState[state] ?? state}`)
131
+ );
125
132
  watchers.set(key, observers);
126
- clientNode.lifecycle.destroyed.once(() => {
133
+ observers.on(clientNode.lifecycle.destroyed, () => {
127
134
  watchers.get(key)?.close();
128
135
  watchers.delete(key);
129
136
  });
@@ -160,7 +167,7 @@ function commands(theNode) {
160
167
  ignoredVendors: argv.ignoreVendor?.map((v) => VendorId(Number(v)))
161
168
  };
162
169
  await eachNode(theNode, argv.nodeId, async (nodeId) => {
163
- const clientNode = await clientNodeFor(theNode, nodeId);
170
+ const clientNode = await connectedIcdNode(theNode, nodeId);
164
171
  try {
165
172
  await clientNode.act((agent) => agent.get(IcdClient).register(options));
166
173
  console.log(`Registered as Check-In client on node ${nodeId}`);
@@ -190,9 +197,14 @@ function commands(theNode) {
190
197
  handler: async (argv) => {
191
198
  await eachNode(theNode, argv.nodeId, async (nodeId) => {
192
199
  if (argv.force) {
193
- const clientNode2 = (await theNode.controller.getNode(nodeId)).node;
200
+ const clientNode2 = findCommissionedNode(theNode, nodeId);
201
+ if (clientNode2 === void 0) {
202
+ throw new ImplementationError(`Node ${nodeId} is not commissioned`);
203
+ }
194
204
  if (!clientNode2.behaviors.has(IcdClient)) {
195
- throw new Error(`Node ${nodeId} is not an ICD device (no IcdManagement cluster)`);
205
+ throw new ImplementationError(
206
+ `Node ${nodeId} is not an ICD device (no IcdManagement cluster)`
207
+ );
196
208
  }
197
209
  await clientNode2.act((agent) => agent.get(IcdClient).forget());
198
210
  console.log(
@@ -200,7 +212,7 @@ function commands(theNode) {
200
212
  );
201
213
  return;
202
214
  }
203
- const clientNode = await clientNodeFor(theNode, nodeId);
215
+ const clientNode = await connectedIcdNode(theNode, nodeId);
204
216
  await clientNode.act((agent) => agent.get(IcdClient).unregister());
205
217
  console.log(`Unregistered Check-In client on node ${nodeId}`);
206
218
  });
@@ -219,7 +231,7 @@ function commands(theNode) {
219
231
  }),
220
232
  handler: async (argv) => {
221
233
  await eachNode(theNode, argv.nodeId, async (nodeId) => {
222
- const clientNode = await clientNodeFor(theNode, nodeId);
234
+ const clientNode = await connectedIcdNode(theNode, nodeId);
223
235
  const promised = await clientNode.act(
224
236
  (agent) => agent.get(IcdClient).stayActive(Millis(argv.durationMs))
225
237
  );
@@ -238,7 +250,11 @@ function commands(theNode) {
238
250
  }
239
251
  for (const nodeId of nodeIds) {
240
252
  try {
241
- await printStatus(await theNode.controller.getNode(nodeId));
253
+ const clientNode = findCommissionedNode(theNode, nodeId);
254
+ if (clientNode === void 0) {
255
+ throw new ImplementationError(`Node ${nodeId} is not commissioned`);
256
+ }
257
+ await printStatus(nodeId, clientNode);
242
258
  } catch (e) {
243
259
  console.log(
244
260
  `node ${nodeId}: unavailable (${e instanceof Error ? e.message : String(e)})`
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/shell/cmd_icd.ts"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": ["clientNode"]
6
6
  }