@matter/nodejs-shell 0.17.0-alpha.0-20260311-5fb2f183e → 0.17.0-alpha.0-20260315-65cdcd993

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -3,7 +3,13 @@
3
3
  * Copyright 2022-2026 Matter.js Authors
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import { Environment, Logger, ObserverGroup, StorageService } from "@matter/general";
6
+ import {
7
+ Environment,
8
+ Filesystem,
9
+ Logger,
10
+ ObserverGroup,
11
+ StorageService
12
+ } from "@matter/general";
7
13
  import { DclBehavior, SoftwareUpdateManager } from "@matter/node";
8
14
  import { NodeId } from "@matter/types";
9
15
  import { CommissioningController } from "@project-chip/matter.js";
@@ -19,6 +25,7 @@ class MatterNode {
19
25
  #nodeNum;
20
26
  #netInterface;
21
27
  #dclFetchTestCertificates = false;
28
+ #allowTestOtaImages = false;
22
29
  #observers;
23
30
  constructor(nodeNum, netInterface) {
24
31
  this.#environment = Environment.default;
@@ -71,17 +78,17 @@ class MatterNode {
71
78
  productName: "matter.js Shell"
72
79
  }
73
80
  });
74
- const storageService = this.commissioningController.env.get(StorageService);
75
- const baseLocation = storageService.location;
76
- if (baseLocation !== void 0) {
77
- this.#storageLocation = join(baseLocation, id);
81
+ const env = this.commissioningController.env;
82
+ if (env.has(Filesystem)) {
83
+ this.#storageLocation = join(env.get(Filesystem).path, id);
78
84
  }
79
85
  if (resetStorage) {
80
86
  await this.commissioningController.node.erase();
81
87
  }
82
- this.#storageManager = await storageService.open(id);
88
+ this.#storageManager = await env.get(StorageService).open(id);
83
89
  this.#storageContext = this.#storageManager.createContext("Node");
84
90
  this.#dclFetchTestCertificates = await this.#storageContext.get("DclFetchTestCertificates", false);
91
+ this.#allowTestOtaImages = await this.#storageContext.get("AllowTestOtaImages", false);
85
92
  } else {
86
93
  console.log(
87
94
  "Legacy support was removed in Matter.js 0.13. Please downgrade or migrate the storage manually"
@@ -107,9 +114,12 @@ class MatterNode {
107
114
  logger.info(`matter.js shell controller started for node ${this.#nodeNum}`);
108
115
  if (this.commissioningController !== void 0) {
109
116
  await this.commissioningController.start();
110
- this.commissioningController.node.behaviors.require(DclBehavior, {
117
+ await this.commissioningController.node.setStateOf(DclBehavior, {
111
118
  fetchTestCertificates: this.#dclFetchTestCertificates
112
119
  });
120
+ await this.commissioningController.otaProvider.setStateOf(SoftwareUpdateManager, {
121
+ allowTestOtaImages: this.#allowTestOtaImages
122
+ });
113
123
  if (await this.Store.has("ControllerFabricLabel")) {
114
124
  await this.commissioningController.updateFabricLabel(
115
125
  await this.Store.get("ControllerFabricLabel", "matter.js Shell")
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/MatterNode.ts"],
4
- "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,SAAS,aAAa,QAAQ,eAA+C,sBAAsB;AACnG,SAAS,aAAyB,6BAA6B;AAC/D,SAAS,cAAc;AACvB,SAAS,+BAA+B;AAExC,SAAS,YAAY;AAErB,MAAM,SAAS,OAAO,IAAI,MAAM;AAEzB,MAAM,WAAW;AAAA,EACpB;AAAA,EACA;AAAA,EACA;AAAA,EACS;AAAA,EACT;AAAA,EACA,WAAW;AAAA,EACF;AAAA,EACA;AAAA,EACT,4BAA4B;AAAA,EAC5B;AAAA,EAEA,YAAY,SAAiB,cAAuB;AAChD,SAAK,eAAe,YAAY;AAChC,SAAK,aAAa,QAAQ,IAAI,IAAI;AAClC,SAAK,WAAW;AAChB,SAAK,gBAAgB;AAAA,EACzB;AAAA,EAEA,IAAI,kBAAkB;AAClB,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAI,cAAc;AACd,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAI,OAAmB;AACnB,QAAI,KAAK,4BAA4B,QAAW;AAC5C,YAAM,IAAI,MAAM,sDAAsD;AAAA,IAC1E;AACA,WAAO,KAAK,wBAAwB;AAAA,EACxC;AAAA,EAEA,MAAM,aAAa;AACf,UAAM,UAAU,MAAM,KAAK,KAAK,IAAI,WAAS,MAAM,IAAI,WAAW,EAAE,gBAAgB;AACpF,UAAM,QAAQ;AACd,WAAO;AAAA,EACX;AAAA,EAEA,MAAM,qBAAqB;AACvB,UAAM,UAAU,MAAM,KAAK,KAAK,IAAI,WAAS,MAAM,IAAI,WAAW,EAAE,kBAAkB;AACtF,UAAM,QAAQ;AACd,WAAO;AAAA,EACX;AAAA,EAEA,MAAM,oBAAoB;AACtB,UAAM,UAAU,MAAM,KAAK,KAAK,IAAI,WAAS,MAAM,IAAI,WAAW,EAAE,iBAAiB;AACrF,UAAM,QAAQ;AACd,WAAO;AAAA,EACX;AAAA,EAEA,MAAM,WAAW,cAAuB;AAQpC,QAAI,KAAK,cAAc;AACnB,UAAI,KAAK,kBAAkB,QAAW;AAClC,aAAK,aAAa,KAAK,IAAI,yBAAyB,KAAK,aAAa;AAAA,MAC1E;AAGA,YAAM,KAAK,SAAS,KAAK,SAAS,SAAS,CAAC;AAC5C,WAAK,0BAA0B,IAAI,wBAAwB;AAAA,QACvD,aAAa;AAAA,UACT,aAAa,KAAK;AAAA,UAClB;AAAA,QACJ;AAAA,QACA,aAAa;AAAA,QACb,kBAAkB;AAAA,QAClB,mBAAmB;AAAA,QACnB,kBAAkB;AAAA,UACd,aAAa;AAAA,QACjB;AAAA,MACJ,CAAC;AAED,YAAM,iBAAiB,KAAK,wBAAwB,IAAI,IAAI,cAAc;AAC1E,YAAM,eAAe,eAAe;AACpC,UAAI,iBAAiB,QAAW;AAC5B,aAAK,mBAAmB,KAAK,cAAc,EAAE;AAAA,MACjD;AAEA,UAAI,cAAc;AACd,cAAM,KAAK,wBAAwB,KAAK,MAAM;AAAA,MAClD;AAIA,WAAK,kBAAkB,MAAM,eAAe,KAAK,EAAE;AACnD,WAAK,kBAAkB,KAAK,gBAAgB,cAAc,MAAM;AAGhE,WAAK,4BAA4B,MAAM,KAAK,gBAAgB,IAAa,4BAA4B,KAAK;AAAA,IAC9G,OAAO;AACH,cAAQ;AAAA,QACJ;AAAA,MACJ;AACA,cAAQ,KAAK,CAAC;AAAA,IAClB;AAAA,EACJ;AAAA,EAEA,IAAI,QAAQ;AACR,QAAI,CAAC,KAAK,iBAAiB;AACvB,YAAM,IAAI,MAAM,uBAAuB;AAAA,IAC3C;AACA,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,MAAM,QAAQ;AACV,UAAM,KAAK,yBAAyB,MAAM;AAC1C,SAAK,YAAY,MAAM;AACvB,UAAM,KAAK,iBAAiB,MAAM;AAAA,EACtC;AAAA,EAEA,MAAM,QAAQ;AACV,QAAI,KAAK,UAAU;AACf;AAAA,IACJ;AACA,WAAO,KAAK,+CAA+C,KAAK,QAAQ,EAAE;AAE1E,QAAI,KAAK,4BAA4B,QAAW;AAC5C,YAAM,KAAK,wBAAwB,MAAM;AAEzC,WAAK,wBAAwB,KAAK,UAAU,QAAQ,aAAa;AAAA,QAC7D,uBAAuB,KAAK;AAAA,MAChC,CAAC;AAED,UAAI,MAAM,KAAK,MAAM,IAAI,uBAAuB,GAAG;AAC/C,cAAM,KAAK,wBAAwB;AAAA,UAC/B,MAAM,KAAK,MAAM,IAAY,yBAAyB,iBAAiB;AAAA,QAC3E;AAAA,MACJ;AAAA,IACJ,OAAO;AACH,YAAM,IAAI,MAAM,2BAA2B;AAAA,IAC/C;AAEA,SAAK,aAAa,KAAK,cAAc,IAAI,cAAc,KAAK,aAAa,OAAO;AAChF,UAAM,sBAAsB,KAAK,wBAAwB,YAAY,SAAS,qBAAqB;AACnG,SAAK,WAAW,GAAG,oBAAoB,iBAAiB,CAAC,MAAM,YAAY;AACvE,aAAO,KAAK,6BAA6B,MAAM,KAAK,OAAO;AAAA,IAC/D,CAAC;AACD,SAAK,WAAW,GAAG,oBAAoB,YAAY,UAAQ;AACvD,aAAO,KAAK,wBAAwB,IAAI;AAAA,IAC5C,CAAC;AACD,SAAK,WAAW,GAAG,oBAAoB,cAAc,UAAQ;AACzD,aAAO,KAAK,0BAA0B,IAAI;AAAA,IAC9C,CAAC;AAED,SAAK,WAAW;AAAA,EACpB;AAAA,EAEA,MAAM,mBAAmB,WAAoB,gBAAqD;AAC9F,UAAM,KAAK,MAAM;AACjB,UAAM,SAAS,cAAc,SAAY,OAAO,OAAO,SAAS,CAAC,IAAI;AAErE,QAAI,KAAK,4BAA4B,QAAW;AAC5C,YAAM,IAAI,MAAM,yCAAyC;AAAA,IAC7D;AAEA,QAAI,WAAW,QAAW;AACtB,aAAO,MAAM,KAAK,wBAAwB,QAAQ,cAAc;AAAA,IACpE;AAEA,UAAM,OAAO,MAAM,KAAK,wBAAwB,YAAY,QAAQ;AAAA,MAChE,GAAG;AAAA,IACP,CAAC;AACD,QAAI,CAAC,KAAK,aAAa;AACnB,YAAM,KAAK,OAAO;AAAA,IACtB;AACA,WAAO,CAAC,IAAI;AAAA,EAChB;AAAA,EAEA,IAAI,aAAa;AACb,QAAI,KAAK,4BAA4B,QAAW;AAC5C,YAAM,IAAI,MAAM,sDAAsD;AAAA,IAC1E;AACA,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,MAAM,mBACF,OACA,UACA,YACF;AACE,eAAW,QAAQ,OAAO;AACtB,UAAI,UAAU,KAAK,WAAW;AAC9B,UAAI,eAAe,QAAW;AAC1B,kBAAU,QAAQ,OAAO,YAAU,OAAO,WAAW,UAAU;AAAA,MACnE;AAEA,iBAAW,UAAU,SAAS;AAC1B,cAAM,SAAS,QAAQ,IAAI;AAAA,MAC/B;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,kBAAkB,OAAe;AAC7B,WAAO,KAAK,yBAAyB,kBAAkB,KAAK;AAAA,EAChE;AACJ;",
4
+ "mappings": "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",
5
5
  "names": []
6
6
  }
package/dist/esm/app.js CHANGED
@@ -154,15 +154,12 @@ process.on("message", function(message) {
154
154
  }
155
155
  });
156
156
  async function exit(code = 0) {
157
- process.off("SIGINT", sigIntHandler);
158
- process.emit("SIGINT");
159
- process.exit(code);
157
+ process.exitCode = code;
158
+ Environment.default.runtime.cancel();
160
159
  }
161
- const sigIntHandler = () => {
162
- exit().catch((error) => logger.error(error));
163
- };
164
- process.on("SIGINT", sigIntHandler);
165
- Environment.default.runtime.add(main());
160
+ const runtime = Environment.default.runtime;
161
+ runtime.add(main());
162
+ void runtime.inactive.then(() => process.exit(process.exitCode ?? 0));
166
163
  export {
167
164
  exit,
168
165
  setLogLevel
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/app.ts"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": ["yargs"]
6
6
  }
@@ -180,6 +180,36 @@ function commands(theNode) {
180
180
  (argv) => doThreadCredentials(theNode, { action: "set", ...argv })
181
181
  );
182
182
  }).command(
183
+ "ota-test-images",
184
+ "Manage whether test OTA images (from Test DCL) are offered to nodes requesting updates",
185
+ (yargs2) => {
186
+ return yargs2.command(
187
+ "* [action]",
188
+ "get/delete OTA test images setting",
189
+ (yargs3) => {
190
+ return yargs3.positional("action", {
191
+ describe: "get/delete",
192
+ choices: ["get", "delete"],
193
+ default: "get",
194
+ type: "string"
195
+ });
196
+ },
197
+ async (argv) => doOtaTestImages(theNode, argv)
198
+ ).command(
199
+ "set <value>",
200
+ "Enable or disable offering test OTA images to nodes",
201
+ (yargs3) => {
202
+ return yargs3.positional("value", {
203
+ describe: "Enable test OTA images (true/false)",
204
+ type: "string",
205
+ choices: ["true", "false"],
206
+ demandOption: true
207
+ });
208
+ },
209
+ async (argv) => doOtaTestImages(theNode, { action: "set", ...argv })
210
+ );
211
+ }
212
+ ).command(
183
213
  "dcl-test-certificates",
184
214
  "Manage DCL test certificate fetching (production only vs. include test)",
185
215
  (yargs2) => {
@@ -368,6 +398,34 @@ async function doThreadCredentials(theNode, args) {
368
398
  break;
369
399
  }
370
400
  }
401
+ async function doOtaTestImages(theNode, args) {
402
+ const { action, value } = args;
403
+ switch (action) {
404
+ case "get":
405
+ const enabled = await theNode.Store.get("AllowTestOtaImages", false);
406
+ console.log(
407
+ `OTA test images: ${enabled ? "enabled (production + test DCL)" : "disabled (production DCL only)"}`
408
+ );
409
+ break;
410
+ case "set":
411
+ if (value === void 0) {
412
+ console.log(`Cannot change OTA test images setting: New value not provided`);
413
+ return;
414
+ }
415
+ const newValue = value === "true";
416
+ await theNode.Store.set("AllowTestOtaImages", newValue);
417
+ console.log(
418
+ `OTA test images: ${newValue ? "enabled (production + test DCL)" : "disabled (production DCL only)"}. Please restart the shell for the changes to take effect.`
419
+ );
420
+ break;
421
+ case "delete":
422
+ await theNode.Store.delete("AllowTestOtaImages");
423
+ console.log(
424
+ `OTA test images setting reset to default (disabled). Please restart the shell for the changes to take effect.`
425
+ );
426
+ break;
427
+ }
428
+ }
371
429
  async function doDclTestCertificates(theNode, args) {
372
430
  const { action, value } = args;
373
431
  switch (action) {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/shell/cmd_config.ts"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": ["yargs"]
6
6
  }
@@ -68,6 +68,43 @@ Found ${vendors.length} vendor(s):
68
68
  console.log("\nVendor Details:");
69
69
  console.log(Diagnostic.json(vendor));
70
70
  }
71
+ ).command(
72
+ "product <vendor-id> <product-id>",
73
+ "Fetch and display product details from DCL for a vendor/product ID combination",
74
+ (yargs2) => {
75
+ return yargs2.positional("vendor-id", {
76
+ describe: "Vendor ID (hex format like 0xFFF1 or decimal)",
77
+ type: "string",
78
+ demandOption: true
79
+ }).positional("product-id", {
80
+ describe: "Product ID (hex format like 0x8000 or decimal)",
81
+ type: "string",
82
+ demandOption: true
83
+ });
84
+ },
85
+ async (argv) => {
86
+ const { "vendor-id": vendorIdStr, "product-id": productIdStr } = argv;
87
+ const vendorId = vendorIdStr.startsWith("0x") ? parseInt(vendorIdStr.replace(/^0x/i, ""), 16) : parseInt(vendorIdStr, 10);
88
+ const productId = productIdStr.startsWith("0x") ? parseInt(productIdStr.replace(/^0x/i, ""), 16) : parseInt(productIdStr, 10);
89
+ if (!isFinite(vendorId)) {
90
+ console.error(`Error: Invalid vendor ID "${vendorIdStr}"`);
91
+ return;
92
+ }
93
+ if (!isFinite(productId)) {
94
+ console.error(`Error: Invalid product ID "${productIdStr}"`);
95
+ return;
96
+ }
97
+ await theNode.start();
98
+ const product = await (await theNode.vendorInfoService()).productInfoFor(vendorId, productId);
99
+ if (!product) {
100
+ console.error(
101
+ `Product with vendor ID ${vendorIdStr} and product ID ${productIdStr} not found in DCL`
102
+ );
103
+ return;
104
+ }
105
+ console.log("\nProduct Details:");
106
+ console.log(JSON.stringify(product, null, 2));
107
+ }
71
108
  ).command(
72
109
  "update",
73
110
  "Update vendor information from DCL",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/shell/cmd_vendor.ts"],
4
- "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,kBAAkB;AAIZ,SAAR,SAA0B,SAAqB;AAClD,SAAO;AAAA,IACH,SAAS;AAAA,IACT,UAAU;AAAA,IACV,SAAS,CAAC,UACN,MACK;AAAA,MACG,CAAC,KAAK,MAAM;AAAA,MACZ;AAAA,MACA,MAAM;AAAA,MAAC;AAAA,MACP,YAAY;AACR,cAAM,QAAQ,MAAM;AACpB,cAAM,gBAAgB,MAAM,QAAQ,kBAAkB;AACtD,cAAM,UAAU,CAAC,GAAG,cAAc,QAAQ,OAAO,CAAC;AAElD,YAAI,QAAQ,WAAW,GAAG;AACtB,kBAAQ,IAAI,yCAAyC;AACrD;AAAA,QACJ;AAEA,gBAAQ,IAAI;AAAA,QAAW,QAAQ,MAAM;AAAA,CAAe;AAGpD,gBAAQ,KAAK,CAAC,GAAG,MAAM,EAAE,WAAW,EAAE,QAAQ;AAE9C,gBAAQ,QAAQ,YAAU;AACtB,kBAAQ;AAAA,YACJ,cAAc,OAAO,QAAQ,OAAO,OAAO,SAAS,SAAS,EAAE,EAAE,YAAY,EAAE,SAAS,GAAG,GAAG,CAAC;AAAA,UACnG;AACA,kBAAQ,IAAI,WAAW,OAAO,UAAU,EAAE;AAC1C,kBAAQ,IAAI,iBAAiB,OAAO,gBAAgB,EAAE;AACtD,kBAAQ,IAAI,qBAAqB,OAAO,oBAAoB,EAAE;AAC9D,kBAAQ,IAAI,mBAAmB,OAAO,oBAAoB,EAAE;AAC5D,kBAAQ,IAAI,EAAE;AAAA,QAClB,CAAC;AAAA,MACL;AAAA,IACJ,EACC;AAAA,MACG;AAAA,MACA;AAAA,MACA,CAAAA,WAAS;AACL,eAAOA,OAAM,WAAW,aAAa;AAAA,UACjC,UAAU;AAAA,UACV,MAAM;AAAA,UACN,cAAc;AAAA,QAClB,CAAC;AAAA,MACL;AAAA,MACA,OAAM,SAAQ;AACV,cAAM,EAAE,UAAU,YAAY,IAAI;AAElC,YAAI;AACJ,YAAI,YAAY,WAAW,IAAI,GAAG;AAC9B,gBAAM,SAAS,YAAY,QAAQ,QAAQ,EAAE;AAC7C,qBAAW,SAAS,QAAQ,EAAE;AAAA,QAClC,OAAO;AACH,qBAAW,SAAS,aAAa,EAAE;AAAA,QACvC;AAEA,YAAI,CAAC,SAAS,QAAQ,GAAG;AACrB,kBAAQ,MAAM,6BAA6B,WAAW,GAAG;AACzD;AAAA,QACJ;AAEA,cAAM,QAAQ,MAAM;AACpB,cAAM,UAAU,MAAM,QAAQ,kBAAkB,GAAG,QAAQ,QAAQ;AACnE,YAAI,CAAC,QAAQ;AACT,kBAAQ,MAAM,kBAAkB,WAAW,YAAY;AACvD;AAAA,QACJ;AAEA,gBAAQ,IAAI,mBAAmB;AAC/B,gBAAQ,IAAI,WAAW,KAAK,MAAM,CAAC;AAAA,MACvC;AAAA,IACJ,EACC;AAAA,MACG;AAAA,MACA;AAAA,MACA,MAAM;AAAA,MAAC;AAAA,MACP,YAAY;AACR,cAAM,QAAQ,MAAM;AACpB,cAAM,gBAAgB,MAAM,QAAQ,kBAAkB;AACtD,gBAAQ,IAAI,yCAAyC;AAErD,YAAI;AACA,gBAAM,cAAc,OAAO;AAC3B,kBAAQ,IAAI,yBAAyB,cAAc,QAAQ,IAAI,2BAA2B;AAAA,QAC9F,SAAS,OAAO;AACZ,kBAAQ;AAAA,YACJ,wCAAwC,iBAAiB,QAAQ,MAAM,UAAU,KAAK;AAAA,UAC1F;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ;AAAA,IACR,SAAS,OAAO,SAAc;AAC1B,WAAK,YAAY;AAAA,IACrB;AAAA,EACJ;AACJ;",
4
+ "mappings": "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",
5
5
  "names": ["yargs"]
6
6
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@matter/nodejs-shell",
3
- "version": "0.17.0-alpha.0-20260311-5fb2f183e",
3
+ "version": "0.17.0-alpha.0-20260315-65cdcd993",
4
4
  "description": "Shell app for Matter controller",
5
5
  "keywords": [
6
6
  "iot",
@@ -34,15 +34,15 @@
34
34
  "matter-shell": "dist/cjs/app.js"
35
35
  },
36
36
  "dependencies": {
37
- "@matter/general": "0.17.0-alpha.0-20260311-5fb2f183e",
38
- "@matter/model": "0.17.0-alpha.0-20260311-5fb2f183e",
39
- "@matter/node": "0.17.0-alpha.0-20260311-5fb2f183e",
40
- "@matter/nodejs": "0.17.0-alpha.0-20260311-5fb2f183e",
41
- "@matter/nodejs-ble": "0.17.0-alpha.0-20260311-5fb2f183e",
42
- "@matter/protocol": "0.17.0-alpha.0-20260311-5fb2f183e",
43
- "@matter/tools": "0.17.0-alpha.0-20260311-5fb2f183e",
44
- "@matter/types": "0.17.0-alpha.0-20260311-5fb2f183e",
45
- "@project-chip/matter.js": "0.17.0-alpha.0-20260311-5fb2f183e",
37
+ "@matter/general": "0.17.0-alpha.0-20260315-65cdcd993",
38
+ "@matter/model": "0.17.0-alpha.0-20260315-65cdcd993",
39
+ "@matter/node": "0.17.0-alpha.0-20260315-65cdcd993",
40
+ "@matter/nodejs": "0.17.0-alpha.0-20260315-65cdcd993",
41
+ "@matter/nodejs-ble": "0.17.0-alpha.0-20260315-65cdcd993",
42
+ "@matter/protocol": "0.17.0-alpha.0-20260315-65cdcd993",
43
+ "@matter/tools": "0.17.0-alpha.0-20260315-65cdcd993",
44
+ "@matter/types": "0.17.0-alpha.0-20260315-65cdcd993",
45
+ "@project-chip/matter.js": "0.17.0-alpha.0-20260315-65cdcd993",
46
46
  "ws": "^8.19.0",
47
47
  "yargs": "^18.0.0"
48
48
  },
package/src/MatterNode.ts CHANGED
@@ -5,7 +5,15 @@
5
5
  */
6
6
 
7
7
  // Include this first to auto-register Crypto, Network and Time Node.js implementations
8
- import { Environment, Logger, ObserverGroup, StorageContext, StorageManager, StorageService } from "@matter/general";
8
+ import {
9
+ Environment,
10
+ Filesystem,
11
+ Logger,
12
+ ObserverGroup,
13
+ StorageContext,
14
+ StorageManager,
15
+ StorageService,
16
+ } from "@matter/general";
9
17
  import { DclBehavior, ServerNode, SoftwareUpdateManager } from "@matter/node";
10
18
  import { NodeId } from "@matter/types";
11
19
  import { CommissioningController } from "@project-chip/matter.js";
@@ -24,6 +32,7 @@ export class MatterNode {
24
32
  readonly #nodeNum: number;
25
33
  readonly #netInterface?: string;
26
34
  #dclFetchTestCertificates = false;
35
+ #allowTestOtaImages = false;
27
36
  #observers?: ObserverGroup;
28
37
 
29
38
  constructor(nodeNum: number, netInterface?: string) {
@@ -94,10 +103,9 @@ export class MatterNode {
94
103
  },
95
104
  });
96
105
 
97
- const storageService = this.commissioningController.env.get(StorageService);
98
- const baseLocation = storageService.location;
99
- if (baseLocation !== undefined) {
100
- this.#storageLocation = join(baseLocation, id);
106
+ const env = this.commissioningController.env;
107
+ if (env.has(Filesystem)) {
108
+ this.#storageLocation = join(env.get(Filesystem).path, id);
101
109
  }
102
110
 
103
111
  if (resetStorage) {
@@ -106,11 +114,14 @@ export class MatterNode {
106
114
 
107
115
  // We side open a storage with the same ID as the ServerNode but only care about the "Node" sub context which
108
116
  // is consistent.
109
- this.#storageManager = await storageService.open(id);
117
+ this.#storageManager = await env.get(StorageService).open(id);
110
118
  this.#storageContext = this.#storageManager.createContext("Node");
111
119
 
112
120
  // Read DCL test certificates setting
113
121
  this.#dclFetchTestCertificates = await this.#storageContext.get<boolean>("DclFetchTestCertificates", false);
122
+
123
+ // Read OTA test images setting
124
+ this.#allowTestOtaImages = await this.#storageContext.get<boolean>("AllowTestOtaImages", false);
114
125
  } else {
115
126
  console.log(
116
127
  "Legacy support was removed in Matter.js 0.13. Please downgrade or migrate the storage manually",
@@ -141,10 +152,14 @@ export class MatterNode {
141
152
  if (this.commissioningController !== undefined) {
142
153
  await this.commissioningController.start();
143
154
 
144
- this.commissioningController.node.behaviors.require(DclBehavior, {
155
+ await this.commissioningController.node.setStateOf(DclBehavior, {
145
156
  fetchTestCertificates: this.#dclFetchTestCertificates,
146
157
  });
147
158
 
159
+ await this.commissioningController.otaProvider.setStateOf(SoftwareUpdateManager, {
160
+ allowTestOtaImages: this.#allowTestOtaImages,
161
+ });
162
+
148
163
  if (await this.Store.has("ControllerFabricLabel")) {
149
164
  await this.commissioningController.updateFabricLabel(
150
165
  await this.Store.get<string>("ControllerFabricLabel", "matter.js Shell"),
package/src/app.ts CHANGED
@@ -182,16 +182,10 @@ process.on("message", function (message) {
182
182
  });
183
183
 
184
184
  export async function exit(code = 0) {
185
- process.off("SIGINT", sigIntHandler);
186
- process.emit("SIGINT");
187
- process.exit(code);
185
+ process.exitCode = code;
186
+ Environment.default.runtime.cancel();
188
187
  }
189
188
 
190
- const sigIntHandler = () => {
191
- // Pragmatic way to make sure the storage is correctly closed before the process ends.
192
- exit().catch(error => logger.error(error));
193
- };
194
-
195
- process.on("SIGINT", sigIntHandler);
196
-
197
- Environment.default.runtime.add(main());
189
+ const runtime = Environment.default.runtime;
190
+ runtime.add(main());
191
+ void runtime.inactive.then(() => process.exit(process.exitCode ?? 0));
@@ -223,6 +223,41 @@ export default function commands(theNode: MatterNode) {
223
223
  );
224
224
  })
225
225
 
226
+ // OTA Test Images
227
+ .command(
228
+ "ota-test-images",
229
+ "Manage whether test OTA images (from Test DCL) are offered to nodes requesting updates",
230
+ yargs => {
231
+ return yargs
232
+ .command(
233
+ "* [action]",
234
+ "get/delete OTA test images setting",
235
+ yargs => {
236
+ return yargs.positional("action", {
237
+ describe: "get/delete",
238
+ choices: ["get", "delete"] as const,
239
+ default: "get",
240
+ type: "string",
241
+ });
242
+ },
243
+ async argv => doOtaTestImages(theNode, argv),
244
+ )
245
+ .command(
246
+ "set <value>",
247
+ "Enable or disable offering test OTA images to nodes",
248
+ yargs => {
249
+ return yargs.positional("value", {
250
+ describe: "Enable test OTA images (true/false)",
251
+ type: "string",
252
+ choices: ["true", "false"] as const,
253
+ demandOption: true,
254
+ });
255
+ },
256
+ async argv => doOtaTestImages(theNode, { action: "set", ...argv }),
257
+ );
258
+ },
259
+ )
260
+
226
261
  // DCL Test Certificates
227
262
  .command(
228
263
  "dcl-test-certificates",
@@ -461,6 +496,41 @@ async function doThreadCredentials(
461
496
  }
462
497
  }
463
498
 
499
+ async function doOtaTestImages(
500
+ theNode: MatterNode,
501
+ args: {
502
+ action: string;
503
+ value?: string;
504
+ },
505
+ ) {
506
+ const { action, value } = args;
507
+ switch (action) {
508
+ case "get":
509
+ const enabled = await theNode.Store.get<boolean>("AllowTestOtaImages", false);
510
+ console.log(
511
+ `OTA test images: ${enabled ? "enabled (production + test DCL)" : "disabled (production DCL only)"}`,
512
+ );
513
+ break;
514
+ case "set":
515
+ if (value === undefined) {
516
+ console.log(`Cannot change OTA test images setting: New value not provided`);
517
+ return;
518
+ }
519
+ const newValue = value === "true";
520
+ await theNode.Store.set("AllowTestOtaImages", newValue);
521
+ console.log(
522
+ `OTA test images: ${newValue ? "enabled (production + test DCL)" : "disabled (production DCL only)"}. Please restart the shell for the changes to take effect.`,
523
+ );
524
+ break;
525
+ case "delete":
526
+ await theNode.Store.delete("AllowTestOtaImages");
527
+ console.log(
528
+ `OTA test images setting reset to default (disabled). Please restart the shell for the changes to take effect.`,
529
+ );
530
+ break;
531
+ }
532
+ }
533
+
464
534
  async function doDclTestCertificates(
465
535
  theNode: MatterNode,
466
536
  args: {
@@ -82,6 +82,54 @@ export default function commands(theNode: MatterNode) {
82
82
  console.log(Diagnostic.json(vendor));
83
83
  },
84
84
  )
85
+ .command(
86
+ "product <vendor-id> <product-id>",
87
+ "Fetch and display product details from DCL for a vendor/product ID combination",
88
+ yargs => {
89
+ return yargs
90
+ .positional("vendor-id", {
91
+ describe: "Vendor ID (hex format like 0xFFF1 or decimal)",
92
+ type: "string",
93
+ demandOption: true,
94
+ })
95
+ .positional("product-id", {
96
+ describe: "Product ID (hex format like 0x8000 or decimal)",
97
+ type: "string",
98
+ demandOption: true,
99
+ });
100
+ },
101
+ async argv => {
102
+ const { "vendor-id": vendorIdStr, "product-id": productIdStr } = argv;
103
+
104
+ const vendorId = vendorIdStr.startsWith("0x")
105
+ ? parseInt(vendorIdStr.replace(/^0x/i, ""), 16)
106
+ : parseInt(vendorIdStr, 10);
107
+ const productId = productIdStr.startsWith("0x")
108
+ ? parseInt(productIdStr.replace(/^0x/i, ""), 16)
109
+ : parseInt(productIdStr, 10);
110
+
111
+ if (!isFinite(vendorId)) {
112
+ console.error(`Error: Invalid vendor ID "${vendorIdStr}"`);
113
+ return;
114
+ }
115
+ if (!isFinite(productId)) {
116
+ console.error(`Error: Invalid product ID "${productIdStr}"`);
117
+ return;
118
+ }
119
+
120
+ await theNode.start();
121
+ const product = await (await theNode.vendorInfoService()).productInfoFor(vendorId, productId);
122
+ if (!product) {
123
+ console.error(
124
+ `Product with vendor ID ${vendorIdStr} and product ID ${productIdStr} not found in DCL`,
125
+ );
126
+ return;
127
+ }
128
+
129
+ console.log("\nProduct Details:");
130
+ console.log(JSON.stringify(product, null, 2));
131
+ },
132
+ )
85
133
  .command(
86
134
  "update",
87
135
  "Update vendor information from DCL",