@matter/nodejs-shell 0.17.5-alpha.0-20260706-fd4c49e2e → 0.17.5-alpha.0-20260707-54888fc9e
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.
- package/dist/esm/MatterNode.js +47 -3
- package/dist/esm/MatterNode.js.map +1 -1
- package/dist/esm/shell/Shell.js +2 -0
- package/dist/esm/shell/Shell.js.map +1 -1
- package/dist/esm/shell/cmd_commission.js +1 -1
- package/dist/esm/shell/cmd_commission.js.map +1 -1
- package/dist/esm/shell/cmd_icd.js +277 -0
- package/dist/esm/shell/cmd_icd.js.map +6 -0
- package/dist/esm/shell/cmd_nodes.js +1 -39
- package/dist/esm/shell/cmd_nodes.js.map +1 -1
- package/package.json +9 -9
- package/src/MatterNode.ts +59 -3
- package/src/shell/Shell.ts +2 -0
- package/src/shell/cmd_commission.ts +1 -2
- package/src/shell/cmd_icd.ts +333 -0
- package/src/shell/cmd_nodes.ts +2 -44
package/dist/esm/MatterNode.js
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
import {
|
|
7
|
+
Diagnostic,
|
|
7
8
|
Environment,
|
|
8
9
|
Filesystem,
|
|
9
10
|
Logger,
|
|
@@ -13,7 +14,48 @@ import {
|
|
|
13
14
|
import { DclBehavior, SoftwareUpdateManager } from "@matter/node";
|
|
14
15
|
import { NodeId } from "@matter/types";
|
|
15
16
|
import { CommissioningController } from "@project-chip/matter.js";
|
|
17
|
+
import {
|
|
18
|
+
NodeStateInformation
|
|
19
|
+
} from "@project-chip/matter.js/device";
|
|
16
20
|
import { join } from "node:path";
|
|
21
|
+
function createDiagnosticCallbacks() {
|
|
22
|
+
return {
|
|
23
|
+
attributeChangedCallback: (peerNodeId, { path: { nodeId, clusterId, endpointId, attributeName }, value }) => console.log(
|
|
24
|
+
`attributeChangedCallback ${peerNodeId}: Attribute ${nodeId}/${endpointId}/${clusterId}/${attributeName} changed to ${Diagnostic.json(
|
|
25
|
+
value
|
|
26
|
+
)}`
|
|
27
|
+
),
|
|
28
|
+
eventTriggeredCallback: (peerNodeId, { path: { nodeId, clusterId, endpointId, eventName }, events }) => console.log(
|
|
29
|
+
`eventTriggeredCallback ${peerNodeId}: Event ${nodeId}/${endpointId}/${clusterId}/${eventName} triggered with ${Diagnostic.json(
|
|
30
|
+
events
|
|
31
|
+
)}`
|
|
32
|
+
),
|
|
33
|
+
stateInformationCallback: (peerNodeId, info) => {
|
|
34
|
+
switch (info) {
|
|
35
|
+
case NodeStateInformation.Connected:
|
|
36
|
+
console.log(`stateInformationCallback Node ${peerNodeId} connected`);
|
|
37
|
+
break;
|
|
38
|
+
case NodeStateInformation.Disconnected:
|
|
39
|
+
console.log(`stateInformationCallback Node ${peerNodeId} disconnected`);
|
|
40
|
+
break;
|
|
41
|
+
case NodeStateInformation.Reconnecting:
|
|
42
|
+
console.log(`stateInformationCallback Node ${peerNodeId} reconnecting`);
|
|
43
|
+
break;
|
|
44
|
+
case NodeStateInformation.WaitingForDeviceDiscovery:
|
|
45
|
+
console.log(
|
|
46
|
+
`stateInformationCallback Node ${peerNodeId} waiting that device gets discovered again`
|
|
47
|
+
);
|
|
48
|
+
break;
|
|
49
|
+
case NodeStateInformation.StructureChanged:
|
|
50
|
+
console.log(`stateInformationCallback Node ${peerNodeId} structure changed`);
|
|
51
|
+
break;
|
|
52
|
+
case NodeStateInformation.Decommissioned:
|
|
53
|
+
console.log(`stateInformationCallback Node ${peerNodeId} decommissioned`);
|
|
54
|
+
break;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
}
|
|
17
59
|
const logger = Logger.get("Node");
|
|
18
60
|
class MatterNode {
|
|
19
61
|
#storageLocation;
|
|
@@ -155,11 +197,12 @@ class MatterNode {
|
|
|
155
197
|
if (this.commissioningController === void 0) {
|
|
156
198
|
throw new Error("CommissioningController not initialized");
|
|
157
199
|
}
|
|
200
|
+
const options = { ...createDiagnosticCallbacks(), ...connectOptions };
|
|
158
201
|
if (nodeId === void 0) {
|
|
159
|
-
return await this.commissioningController.connect(
|
|
202
|
+
return await this.commissioningController.connect(options);
|
|
160
203
|
}
|
|
161
204
|
const node = await this.commissioningController.connectNode(nodeId, {
|
|
162
|
-
...
|
|
205
|
+
...options
|
|
163
206
|
});
|
|
164
207
|
if (!node.initialized) {
|
|
165
208
|
await node.events.initialized;
|
|
@@ -188,6 +231,7 @@ class MatterNode {
|
|
|
188
231
|
}
|
|
189
232
|
}
|
|
190
233
|
export {
|
|
191
|
-
MatterNode
|
|
234
|
+
MatterNode,
|
|
235
|
+
createDiagnosticCallbacks
|
|
192
236
|
};
|
|
193
237
|
//# sourceMappingURL=MatterNode.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/MatterNode.ts"],
|
|
4
|
-
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAOA;AAAA,EACI;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAGA;AAAA,OACG;AACP,SAAS,aAAyB,6BAA6B;AAC/D,SAAS,cAAc;AACvB,SAAS,+BAA+B;
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
package/dist/esm/shell/Shell.js
CHANGED
|
@@ -18,6 +18,7 @@ import cmdCommission from "./cmd_commission.js";
|
|
|
18
18
|
import cmdConfig from "./cmd_config.js";
|
|
19
19
|
import cmdDcl from "./cmd_dcl.js";
|
|
20
20
|
import cmdDiscover from "./cmd_discover.js";
|
|
21
|
+
import cmdIcd from "./cmd_icd.js";
|
|
21
22
|
import cmdIdentify from "./cmd_identify.js";
|
|
22
23
|
import cmdNodes from "./cmd_nodes.js";
|
|
23
24
|
import cmdOta from "./cmd_ota.js";
|
|
@@ -160,6 +161,7 @@ class Shell {
|
|
|
160
161
|
cmdVendor(this.theNode),
|
|
161
162
|
cmdTlv(),
|
|
162
163
|
cmdDcl(),
|
|
164
|
+
cmdIcd(this.theNode),
|
|
163
165
|
exitCommand()
|
|
164
166
|
]).command({
|
|
165
167
|
command: "*",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/shell/Shell.ts"],
|
|
4
|
-
"mappings": "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",
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
import { Diagnostic, Logger, MatterError } from "@matter/general";
|
|
7
7
|
import { DiscoveryCapabilitiesSchema, ManualPairingCodeCodec, NodeId, QrCode, QrPairingCodeCodec } from "@matter/types";
|
|
8
8
|
import { BasicInformation, Descriptor, GeneralCommissioning } from "@matter/types/clusters";
|
|
9
|
-
import { createDiagnosticCallbacks } from "
|
|
9
|
+
import { createDiagnosticCallbacks } from "../MatterNode.js";
|
|
10
10
|
const logger = Logger.get("Commission");
|
|
11
11
|
function commands(theNode) {
|
|
12
12
|
return {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/shell/cmd_commission.ts"],
|
|
4
|
-
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,YAAY,QAAQ,mBAAmB;AAChD,SAAS,6BAA6B,wBAAwB,QAAQ,QAAQ,0BAA0B;AACxG,SAAS,kBAAkB,YAAY,4BAA4B;
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": ["yargs"]
|
|
6
6
|
}
|
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2026 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { Duration, Millis, ObserverGroup } from "@matter/general";
|
|
7
|
+
import { IcdClient, IcdMultiAdminError } from "@matter/node";
|
|
8
|
+
import { IcdManagementClient } from "@matter/node/behaviors/icd-management";
|
|
9
|
+
import { NodeId, SubjectId, VendorId } from "@matter/types";
|
|
10
|
+
import { IcdManagement } from "@matter/types/clusters/icd-management";
|
|
11
|
+
import { NodeStates } from "@project-chip/matter.js/device";
|
|
12
|
+
const watchers = /* @__PURE__ */ new Map();
|
|
13
|
+
async function printStatus(paired) {
|
|
14
|
+
const clientNode = paired.node;
|
|
15
|
+
if (!clientNode.behaviors.has(IcdClient)) {
|
|
16
|
+
if (!paired.initialized) {
|
|
17
|
+
console.log(`node ${paired.nodeId}: uninitialized (no cached data yet)`);
|
|
18
|
+
}
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
const icd = clientNode.stateOf(IcdClient);
|
|
22
|
+
const mgmt = clientNode.maybeStateOf(IcdManagementClient);
|
|
23
|
+
const supportsLit = IcdClient.litSupported(clientNode);
|
|
24
|
+
const awake = await clientNode.act((agent) => agent.get(IcdClient).awake);
|
|
25
|
+
const operatingModeLabel = mgmt === void 0 ? "n/a" : IcdManagement.OperatingMode[mgmt.operatingMode ?? -1] ?? mgmt.operatingMode ?? "unknown";
|
|
26
|
+
const marker = paired.initialized ? "" : " [uninitialized]";
|
|
27
|
+
console.log(
|
|
28
|
+
[
|
|
29
|
+
`node ${paired.nodeId}:${marker}`,
|
|
30
|
+
` registered=${icd.registered}`,
|
|
31
|
+
` available=${icd.available}`,
|
|
32
|
+
` awake=${awake}`,
|
|
33
|
+
` supportsLit=${supportsLit}`,
|
|
34
|
+
` operatingMode=${operatingModeLabel}`,
|
|
35
|
+
` activeModeThreshold(ms)=${mgmt?.activeModeThreshold ?? "n/a"}`,
|
|
36
|
+
` idleModeDuration(s)=${mgmt?.idleModeDuration ?? "n/a"}`,
|
|
37
|
+
` lastCheckIn=${icd.lastCheckInReceivedAt ?? "never"}`,
|
|
38
|
+
` counterStart=${icd.counterStart ?? "n/a"} lastOffset=${icd.lastOffset ?? "n/a"}`
|
|
39
|
+
].join("\n")
|
|
40
|
+
);
|
|
41
|
+
}
|
|
42
|
+
const ALL_NODES = "all";
|
|
43
|
+
function selectsAll(nodeIdStr) {
|
|
44
|
+
return nodeIdStr.toLowerCase() === ALL_NODES;
|
|
45
|
+
}
|
|
46
|
+
async function targetNodeIds(theNode, nodeIdStr) {
|
|
47
|
+
await theNode.start();
|
|
48
|
+
return selectsAll(nodeIdStr) ? theNode.controller.getCommissionedNodes() : [NodeId(BigInt(nodeIdStr))];
|
|
49
|
+
}
|
|
50
|
+
async function eachNode(theNode, nodeIdStr, action) {
|
|
51
|
+
const all = selectsAll(nodeIdStr);
|
|
52
|
+
const nodeIds = await targetNodeIds(theNode, nodeIdStr);
|
|
53
|
+
if (nodeIds.length === 0) {
|
|
54
|
+
console.log("No commissioned nodes.");
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
for (const nodeId of nodeIds) {
|
|
58
|
+
try {
|
|
59
|
+
await action(nodeId);
|
|
60
|
+
} catch (e) {
|
|
61
|
+
if (!all) {
|
|
62
|
+
throw e;
|
|
63
|
+
}
|
|
64
|
+
console.log(`node ${nodeId}: ${e instanceof Error ? e.message : String(e)}`);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
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`);
|
|
72
|
+
}
|
|
73
|
+
if (!paired.node.behaviors.has(IcdClient)) {
|
|
74
|
+
throw new Error(`Node ${nodeId} is not an ICD device (no IcdManagement cluster)`);
|
|
75
|
+
}
|
|
76
|
+
return paired;
|
|
77
|
+
}
|
|
78
|
+
async function clientNodeFor(theNode, nodeId) {
|
|
79
|
+
return (await pairedNodeFor(theNode, nodeId)).node;
|
|
80
|
+
}
|
|
81
|
+
function stopWatch(nodeIdStr) {
|
|
82
|
+
if (selectsAll(nodeIdStr)) {
|
|
83
|
+
for (const observers of watchers.values()) {
|
|
84
|
+
observers.close();
|
|
85
|
+
}
|
|
86
|
+
watchers.clear();
|
|
87
|
+
console.log("Stopped watching all nodes");
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
const key = String(NodeId(BigInt(nodeIdStr)));
|
|
91
|
+
watchers.get(key)?.close();
|
|
92
|
+
watchers.delete(key);
|
|
93
|
+
console.log(`Stopped watching node ${nodeIdStr}`);
|
|
94
|
+
}
|
|
95
|
+
async function startWatch(theNode, nodeId) {
|
|
96
|
+
const key = String(nodeId);
|
|
97
|
+
watchers.get(key)?.close();
|
|
98
|
+
watchers.delete(key);
|
|
99
|
+
const paired = await pairedNodeFor(theNode, nodeId);
|
|
100
|
+
const clientNode = paired.node;
|
|
101
|
+
const observers = new ObserverGroup();
|
|
102
|
+
const stamp = (msg) => console.log(`[icd ${nodeId}] ${msg}`);
|
|
103
|
+
const wakefulnessSuffix = async () => {
|
|
104
|
+
try {
|
|
105
|
+
const { nextCheckIn, awake } = await clientNode.act((agent) => {
|
|
106
|
+
const icd = agent.get(IcdClient);
|
|
107
|
+
return { nextCheckIn: icd.nextExpectedCheckin, awake: icd.awake };
|
|
108
|
+
});
|
|
109
|
+
return `nextCheckIn=${nextCheckIn} awake=${awake}`;
|
|
110
|
+
} catch (e) {
|
|
111
|
+
return `wakefulness read failed: ${e instanceof Error ? e.message : String(e)}`;
|
|
112
|
+
}
|
|
113
|
+
};
|
|
114
|
+
const events = clientNode.eventsOf(IcdClient);
|
|
115
|
+
observers.on(events.registered, () => stamp("registered"));
|
|
116
|
+
observers.on(events.unregistered, () => stamp("unregistered"));
|
|
117
|
+
observers.on(
|
|
118
|
+
events.checkedIn,
|
|
119
|
+
async ({ counter, activeModeThreshold }) => stamp(`check-in counter=${counter} SAT(ms)=${activeModeThreshold} ${await wakefulnessSuffix()}`)
|
|
120
|
+
);
|
|
121
|
+
observers.on(events.checkInMissed, async () => stamp(`check-in MISSED ${await wakefulnessSuffix()}`));
|
|
122
|
+
observers.on(events.keyRefreshed, () => stamp("key refreshed"));
|
|
123
|
+
observers.on(events.available$Changed, (value) => stamp(`available=${value}`));
|
|
124
|
+
observers.on(paired.events.stateChanged, (state) => stamp(`connection=${NodeStates[state] ?? state}`));
|
|
125
|
+
watchers.set(key, observers);
|
|
126
|
+
clientNode.lifecycle.destroyed.once(() => {
|
|
127
|
+
watchers.get(key)?.close();
|
|
128
|
+
watchers.delete(key);
|
|
129
|
+
});
|
|
130
|
+
console.log(`Watching node ${nodeId} (run \`icd watch ${nodeId} off\` to stop)`);
|
|
131
|
+
}
|
|
132
|
+
function commands(theNode) {
|
|
133
|
+
return {
|
|
134
|
+
command: "icd",
|
|
135
|
+
describe: "Controller-side ICD (Intermittently Connected Device) operations",
|
|
136
|
+
builder: (yargs) => yargs.command({
|
|
137
|
+
command: "register <node-id>",
|
|
138
|
+
describe: "Register this controller as a Check-In client on the peer ('all' for every node)",
|
|
139
|
+
builder: (y) => y.positional("node-id", {
|
|
140
|
+
describe: "node id, or 'all'",
|
|
141
|
+
type: "string",
|
|
142
|
+
demandOption: true
|
|
143
|
+
}).option("subject", { describe: "monitored subject id", type: "string" }).option("type", {
|
|
144
|
+
describe: "client type",
|
|
145
|
+
choices: ["permanent", "ephemeral"],
|
|
146
|
+
default: "permanent"
|
|
147
|
+
}).option("allow-multi-admin", {
|
|
148
|
+
describe: "allow registering alongside other-vendor admins",
|
|
149
|
+
type: "boolean",
|
|
150
|
+
default: false
|
|
151
|
+
}).option("ignore-vendor", {
|
|
152
|
+
describe: "vendor id(s) to treat as trusted",
|
|
153
|
+
type: "array"
|
|
154
|
+
}),
|
|
155
|
+
handler: async (argv) => {
|
|
156
|
+
const options = {
|
|
157
|
+
monitoredSubject: argv.subject === void 0 ? void 0 : SubjectId(NodeId(BigInt(argv.subject))),
|
|
158
|
+
clientType: argv.type === "ephemeral" ? IcdManagement.ClientType.Ephemeral : IcdManagement.ClientType.Permanent,
|
|
159
|
+
allowMultiAdmin: argv.allowMultiAdmin,
|
|
160
|
+
ignoredVendors: argv.ignoreVendor?.map((v) => VendorId(Number(v)))
|
|
161
|
+
};
|
|
162
|
+
await eachNode(theNode, argv.nodeId, async (nodeId) => {
|
|
163
|
+
const clientNode = await clientNodeFor(theNode, nodeId);
|
|
164
|
+
try {
|
|
165
|
+
await clientNode.act((agent) => agent.get(IcdClient).register(options));
|
|
166
|
+
console.log(`Registered as Check-In client on node ${nodeId}`);
|
|
167
|
+
} catch (e) {
|
|
168
|
+
if (e instanceof IcdMultiAdminError) {
|
|
169
|
+
console.log(
|
|
170
|
+
`node ${nodeId}: refused \u2014 peer has other-vendor admins (${e.adminVendorIds.join(", ")}). Re-run with --allow-multi-admin to proceed.`
|
|
171
|
+
);
|
|
172
|
+
return;
|
|
173
|
+
}
|
|
174
|
+
throw e;
|
|
175
|
+
}
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
}).command({
|
|
179
|
+
command: "unregister <node-id>",
|
|
180
|
+
describe: "Remove this controller's Check-In registration from the peer ('all' for every node)",
|
|
181
|
+
builder: (y) => y.positional("node-id", {
|
|
182
|
+
describe: "node id, or 'all'",
|
|
183
|
+
type: "string",
|
|
184
|
+
demandOption: true
|
|
185
|
+
}).option("force", {
|
|
186
|
+
describe: "forget the registration locally without contacting the peer (escape hatch for an unreachable LIT ICD)",
|
|
187
|
+
type: "boolean",
|
|
188
|
+
default: false
|
|
189
|
+
}),
|
|
190
|
+
handler: async (argv) => {
|
|
191
|
+
await eachNode(theNode, argv.nodeId, async (nodeId) => {
|
|
192
|
+
if (argv.force) {
|
|
193
|
+
const clientNode2 = (await theNode.controller.getNode(nodeId)).node;
|
|
194
|
+
if (!clientNode2.behaviors.has(IcdClient)) {
|
|
195
|
+
throw new Error(`Node ${nodeId} is not an ICD device (no IcdManagement cluster)`);
|
|
196
|
+
}
|
|
197
|
+
await clientNode2.act((agent) => agent.get(IcdClient).forget());
|
|
198
|
+
console.log(
|
|
199
|
+
`Forgot Check-In registration for node ${nodeId} locally (peer not contacted)`
|
|
200
|
+
);
|
|
201
|
+
return;
|
|
202
|
+
}
|
|
203
|
+
const clientNode = await clientNodeFor(theNode, nodeId);
|
|
204
|
+
await clientNode.act((agent) => agent.get(IcdClient).unregister());
|
|
205
|
+
console.log(`Unregistered Check-In client on node ${nodeId}`);
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
}).command({
|
|
209
|
+
command: "stay-active <node-id> [duration-ms]",
|
|
210
|
+
describe: "Ask the peer to stay in Active mode; prints the promised duration ('all' for every node)",
|
|
211
|
+
builder: (y) => y.positional("node-id", {
|
|
212
|
+
describe: "node id, or 'all'",
|
|
213
|
+
type: "string",
|
|
214
|
+
demandOption: true
|
|
215
|
+
}).positional("duration-ms", {
|
|
216
|
+
describe: "requested active duration (ms)",
|
|
217
|
+
type: "number",
|
|
218
|
+
default: 3e4
|
|
219
|
+
}),
|
|
220
|
+
handler: async (argv) => {
|
|
221
|
+
await eachNode(theNode, argv.nodeId, async (nodeId) => {
|
|
222
|
+
const clientNode = await clientNodeFor(theNode, nodeId);
|
|
223
|
+
const promised = await clientNode.act(
|
|
224
|
+
(agent) => agent.get(IcdClient).stayActive(Millis(argv.durationMs))
|
|
225
|
+
);
|
|
226
|
+
console.log(`Node ${nodeId} promised active for ${Duration.format(promised)}`);
|
|
227
|
+
});
|
|
228
|
+
}
|
|
229
|
+
}).command({
|
|
230
|
+
command: "status <node-id>",
|
|
231
|
+
describe: "Show ICD state for a peer ('all' for every commissioned node)",
|
|
232
|
+
builder: (y) => y.positional("node-id", { describe: "node id, or 'all'", type: "string", demandOption: true }),
|
|
233
|
+
handler: async (argv) => {
|
|
234
|
+
const nodeIds = await targetNodeIds(theNode, argv.nodeId);
|
|
235
|
+
if (nodeIds.length === 0) {
|
|
236
|
+
console.log("No commissioned nodes.");
|
|
237
|
+
return;
|
|
238
|
+
}
|
|
239
|
+
for (const nodeId of nodeIds) {
|
|
240
|
+
try {
|
|
241
|
+
await printStatus(await theNode.controller.getNode(nodeId));
|
|
242
|
+
} catch (e) {
|
|
243
|
+
console.log(
|
|
244
|
+
`node ${nodeId}: unavailable (${e instanceof Error ? e.message : String(e)})`
|
|
245
|
+
);
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
}).command({
|
|
250
|
+
command: "watch <node-id> [state]",
|
|
251
|
+
describe: "Stream ICD events for a peer live ('all' for every node; state: on|off, default on), including awake, nextCheckIn and connection state",
|
|
252
|
+
builder: (y) => y.positional("node-id", {
|
|
253
|
+
describe: "node id, or 'all'",
|
|
254
|
+
type: "string",
|
|
255
|
+
demandOption: true
|
|
256
|
+
}).positional("state", {
|
|
257
|
+
describe: "on|off",
|
|
258
|
+
choices: ["on", "off"],
|
|
259
|
+
default: "on"
|
|
260
|
+
}),
|
|
261
|
+
handler: async (argv) => {
|
|
262
|
+
if (argv.state === "off") {
|
|
263
|
+
stopWatch(argv.nodeId);
|
|
264
|
+
return;
|
|
265
|
+
}
|
|
266
|
+
await eachNode(theNode, argv.nodeId, (nodeId) => startWatch(theNode, nodeId));
|
|
267
|
+
}
|
|
268
|
+
}).demandCommand(1, "You must specify an icd subcommand"),
|
|
269
|
+
handler: async (argv) => {
|
|
270
|
+
argv.unhandled = true;
|
|
271
|
+
}
|
|
272
|
+
};
|
|
273
|
+
}
|
|
274
|
+
export {
|
|
275
|
+
commands as default
|
|
276
|
+
};
|
|
277
|
+
//# sourceMappingURL=cmd_icd.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/shell/cmd_icd.ts"],
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": ["clientNode"]
|
|
6
|
+
}
|
|
@@ -8,44 +8,7 @@ import { CommissioningClient, NetworkClient, SoftwareUpdateManager } from "@matt
|
|
|
8
8
|
import { PeerAddress, PeerSet } from "@matter/protocol";
|
|
9
9
|
import { FabricIndex, NodeId } from "@matter/types";
|
|
10
10
|
import { NodeStateInformation } from "@project-chip/matter.js/device";
|
|
11
|
-
|
|
12
|
-
return {
|
|
13
|
-
attributeChangedCallback: (peerNodeId, { path: { nodeId, clusterId, endpointId, attributeName }, value }) => console.log(
|
|
14
|
-
`attributeChangedCallback ${peerNodeId}: Attribute ${nodeId}/${endpointId}/${clusterId}/${attributeName} changed to ${Diagnostic.json(
|
|
15
|
-
value
|
|
16
|
-
)}`
|
|
17
|
-
),
|
|
18
|
-
eventTriggeredCallback: (peerNodeId, { path: { nodeId, clusterId, endpointId, eventName }, events }) => console.log(
|
|
19
|
-
`eventTriggeredCallback ${peerNodeId}: Event ${nodeId}/${endpointId}/${clusterId}/${eventName} triggered with ${Diagnostic.json(
|
|
20
|
-
events
|
|
21
|
-
)}`
|
|
22
|
-
),
|
|
23
|
-
stateInformationCallback: (peerNodeId, info) => {
|
|
24
|
-
switch (info) {
|
|
25
|
-
case NodeStateInformation.Connected:
|
|
26
|
-
console.log(`stateInformationCallback Node ${peerNodeId} connected`);
|
|
27
|
-
break;
|
|
28
|
-
case NodeStateInformation.Disconnected:
|
|
29
|
-
console.log(`stateInformationCallback Node ${peerNodeId} disconnected`);
|
|
30
|
-
break;
|
|
31
|
-
case NodeStateInformation.Reconnecting:
|
|
32
|
-
console.log(`stateInformationCallback Node ${peerNodeId} reconnecting`);
|
|
33
|
-
break;
|
|
34
|
-
case NodeStateInformation.WaitingForDeviceDiscovery:
|
|
35
|
-
console.log(
|
|
36
|
-
`stateInformationCallback Node ${peerNodeId} waiting that device gets discovered again`
|
|
37
|
-
);
|
|
38
|
-
break;
|
|
39
|
-
case NodeStateInformation.StructureChanged:
|
|
40
|
-
console.log(`stateInformationCallback Node ${peerNodeId} structure changed`);
|
|
41
|
-
break;
|
|
42
|
-
case NodeStateInformation.Decommissioned:
|
|
43
|
-
console.log(`stateInformationCallback Node ${peerNodeId} decommissioned`);
|
|
44
|
-
break;
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
};
|
|
48
|
-
}
|
|
11
|
+
import { createDiagnosticCallbacks } from "../MatterNode.js";
|
|
49
12
|
function parseFallbackAddress(input) {
|
|
50
13
|
const match = /^(udp|tcp):\/\/(.+)$/i.exec(input);
|
|
51
14
|
if (!match) {
|
|
@@ -778,7 +741,6 @@ You can now apply this update to the device using your device's OTA mechanism.`
|
|
|
778
741
|
};
|
|
779
742
|
}
|
|
780
743
|
export {
|
|
781
|
-
createDiagnosticCallbacks,
|
|
782
744
|
commands as default
|
|
783
745
|
};
|
|
784
746
|
//# sourceMappingURL=cmd_nodes.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/shell/cmd_nodes.ts"],
|
|
4
|
-
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,YAAY,aAAa,YAAY,YAAY,qBAAqB;AAC/E,SAAqB,qBAAqB,eAAe,6BAA6B;AACtF,SAAS,aAAa,eAAe;AACrC,SAAS,aAAa,cAAwB;AAC9C,SAA6C,4BAA4B;AAIlE,SAAS,4BAAyE;AACrF,SAAO;AAAA,IACH,0BAA0B,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,WAAW,YAAY,cAAc,GAAG,MAAM,MACnG,QAAQ;AAAA,MACJ,4BAA4B,UAAU,eAAe,MAAM,IAAI,UAAU,IAAI,SAAS,IAAI,aAAa,eAAe,WAAW;AAAA,QAC7H;AAAA,MACJ,CAAC;AAAA,IACL;AAAA,IACJ,wBAAwB,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,WAAW,YAAY,UAAU,GAAG,OAAO,MAC9F,QAAQ;AAAA,MACJ,0BAA0B,UAAU,WAAW,MAAM,IAAI,UAAU,IAAI,SAAS,IAAI,SAAS,mBAAmB,WAAW;AAAA,QACvH;AAAA,MACJ,CAAC;AAAA,IACL;AAAA,IACJ,0BAA0B,CAAC,YAAY,SAAS;AAC5C,cAAQ,MAAM;AAAA,QACV,KAAK,qBAAqB;AACtB,kBAAQ,IAAI,iCAAiC,UAAU,YAAY;AACnE;AAAA,QACJ,KAAK,qBAAqB;AACtB,kBAAQ,IAAI,iCAAiC,UAAU,eAAe;AACtE;AAAA,QACJ,KAAK,qBAAqB;AACtB,kBAAQ,IAAI,iCAAiC,UAAU,eAAe;AACtE;AAAA,QACJ,KAAK,qBAAqB;AACtB,kBAAQ;AAAA,YACJ,iCAAiC,UAAU;AAAA,UAC/C;AACA;AAAA,QACJ,KAAK,qBAAqB;AACtB,kBAAQ,IAAI,iCAAiC,UAAU,oBAAoB;AAC3E;AAAA,QACJ,KAAK,qBAAqB;AACtB,kBAAQ,IAAI,iCAAiC,UAAU,iBAAiB;AACxE;AAAA,MACR;AAAA,IACJ;AAAA,EACJ;AACJ;AAGA,SAAS,qBAAqB,OAA8B;AACxD,QAAM,QAAQ,wBAAwB,KAAK,KAAK;AAChD,MAAI,CAAC,OAAO;AACR,UAAM,IAAI,MAAM,oBAAoB,KAAK,wDAAwD;AAAA,EACrG;AACA,QAAM,OAAO,MAAM,CAAC,EAAE,YAAY,MAAM,QAAQ,QAAQ;AACxD,QAAM,OAAO,MAAM,CAAC;AAEpB,MAAI;AACJ,MAAI;AACJ,MAAI,KAAK,WAAW,GAAG,GAAG;AACtB,UAAM,MAAM,KAAK,QAAQ,GAAG;AAC5B,QAAI,QAAQ,MAAM,KAAK,MAAM,CAAC,MAAM,KAAK;AACrC,YAAM,IAAI,MAAM,yBAAyB,KAAK,eAAe,IAAI,oBAAoB;AAAA,IACzF;AACA,SAAK,KAAK,MAAM,GAAG,GAAG;AACtB,cAAU,KAAK,MAAM,MAAM,CAAC;AAAA,EAChC,OAAO;AACH,UAAM,MAAM,KAAK,YAAY,GAAG;AAChC,QAAI,QAAQ,IAAI;AACZ,YAAM,IAAI,MAAM,oBAAoB,KAAK,eAAe,IAAI,kBAAkB;AAAA,IAClF;AACA,SAAK,KAAK,MAAM,GAAG,GAAG;AACtB,cAAU,KAAK,MAAM,MAAM,CAAC;AAAA,EAChC;AAEA,QAAM,OAAO,OAAO,OAAO;AAC3B,MAAI,CAAC,GAAG,UAAU,CAAC,OAAO,UAAU,IAAI,KAAK,OAAO,KAAK,OAAO,OAAO;AACnE,UAAM,IAAI,MAAM,yBAAyB,KAAK,eAAe,IAAI,oCAAoC;AAAA,EACzG;AAEA,SAAO,EAAE,IAAI,MAAM,KAAK;AAC5B;AAEe,SAAR,SAA0B,SAAqB;AAClD,SAAO;AAAA,IACH,SAAS,CAAC,SAAS,MAAM;AAAA,IACzB,UAAU;AAAA,IACV,SAAS,CAAC,UACN,MAEK;AAAA,MACG,CAAC,KAAK,eAAe;AAAA,MACrB;AAAA,MACA,CAAAA,WAAS;AACL,eAAOA,OAAM,WAAW,UAAU;AAAA,UAC9B,UAAU;AAAA,UACV,SAAS,CAAC,gBAAgB,WAAW;AAAA,UACrC,SAAS;AAAA,UACT,MAAM;AAAA,QACV,CAAC;AAAA,MACL;AAAA,MACA,OAAM,SAAQ;AACV,cAAM,EAAE,OAAO,IAAI;AACnB,cAAM,QAAQ,MAAM;AACpB,YAAI,QAAQ,4BAA4B,QAAW;AAC/C,gBAAM,IAAI,MAAM,yCAAyC;AAAA,QAC7D;AACA,gBAAQ,QAAQ;AAAA,UACZ,KAAK,gBAAgB;AACjB,kBAAM,UAAU,QAAQ,wBAAwB,4BAA4B;AAC5E,oBACK,IAAI,aAAW;AAAA,cACZ,GAAG;AAAA,cACH,QAAQ,OAAO,OAAO,SAAS;AAAA,YACnC,EAAE,EACD,QAAQ,YAAU;AACf,sBAAQ,IAAI,MAAM;AAAA,YACtB,CAAC;AACL;AAAA,UACJ;AAAA,UACA,KAAK,aAAa;AACd,kBAAM,UAAU,QAAQ,wBACnB,qBAAqB,EACrB,OAAO,YAAU,CAAC,CAAC,QAAQ,yBAAyB,cAAc,MAAM,CAAC;AAC9E,oBAAQ,IAAI,QAAQ,IAAI,YAAU,OAAO,SAAS,CAAC,CAAC;AACpD;AAAA,UACJ;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ,EACC;AAAA,MACG;AAAA,MACA;AAAA,MACA,CAAAA,WAAS;AACL,eAAOA,OAAM,WAAW,WAAW;AAAA,UAC/B,UAAU;AAAA,UACV,SAAS;AAAA,UACT,MAAM;AAAA,QACV,CAAC;AAAA,MACL;AAAA,MACA,OAAM,SAAQ;AACV,cAAM,EAAE,OAAO,IAAI;AACnB,cAAM,QAAQ,MAAM,QAAQ,mBAAmB,MAAM,GAAG,CAAC;AAEzD,gBAAQ,IAAI,8BAA8B,KAAK,OAAO,SAAS,CAAC;AAChE,aAAK,aAAa;AAAA,MACtB;AAAA,IACJ,EACC;AAAA,MACG;AAAA,MACA;AAAA,MACA,CAAAA,WAAS;AACL,eAAOA,OAAM,WAAW,WAAW;AAAA,UAC/B,UAAU;AAAA,UACV,MAAM;AAAA,UACN,cAAc;AAAA,QAClB,CAAC;AAAA,MACL;AAAA,MACA,OAAM,SAAQ;AACV,cAAM,EAAE,QAAQ,UAAU,IAAI;AAC9B,cAAM,QAAQ,MAAM;AACpB,YAAI,QAAQ,4BAA4B,QAAW;AAC/C,gBAAM,IAAI,MAAM,yCAAyC;AAAA,QAC7D;AAEA,cAAM,SAAS,OAAO,OAAO,SAAS,CAAC;AACvC,cAAM,cAAc,QAAQ,wBAAwB,OAAO,UAAU,MAAM;AAC3E,cAAM,UAAU,QAAQ,KAAK,IAAI,IAAI,OAAO;AAC5C,cAAM,OAAO,QAAQ,IAAI,WAAW;AAEpC,YAAI,CAAC,MAAM;AACP,kBAAQ,IAAI,QAAQ,SAAS,YAAY;AACzC;AAAA,QACJ;AAEA,cAAM,OAAO,KAAK;AAClB,gBAAQ,IAAI;AAAA,2BAA8B,SAAS,GAAG;AACtD,gBAAQ,IAAI,2BAA2B,KAAK,OAAO,EAAE;AACrD,gBAAQ;AAAA,UACJ,2BAA2B,KAAK,qBAAqB,cAAc,OAAO,KAAK,kBAAkB,IAAI,WAAW;AAAA,QACpH;AACA,gBAAQ;AAAA,UACJ,2BAA2B,KAAK,wBAAwB,YAAY,MAAM,QAAQ,eAAe;AAAA,QACrG;AAEA,YAAI,KAAK,eAAe;AACpB,gBAAM,KAAK,KAAK;AAChB,kBAAQ,IAAI,mBAAmB;AAC/B,cAAI,GAAG,GAAI,SAAQ,IAAI,qBAAqB,GAAG,EAAE,EAAE;AACnD,cAAI,GAAG,GAAI,SAAQ,IAAI,qBAAqB,GAAG,EAAE,EAAE;AACnD,cAAI,GAAG,OAAO,OAAW,SAAQ,IAAI,qBAAqB,GAAG,EAAE,EAAE;AACjE,cAAI,GAAG,MAAM,QAAW;AACpB,oBAAQ,IAAI,4BAA4B,GAAG,EAAE,SAAS,YAAY,GAAG,EAAE,SAAS,EAAE;AAAA,UACtF,OAAO;AACH,oBAAQ,IAAI,kCAAkC;AAAA,UAClD;AACA,cAAI,GAAG,IAAK,SAAQ,IAAI,wBAAwB,GAAG,GAAG,IAAI;AAC1D,cAAI,GAAG,IAAK,SAAQ,IAAI,wBAAwB,GAAG,GAAG,IAAI;AAAA,QAC9D;AAEA,YAAI,KAAK,mBAAmB;AACxB,gBAAM,KAAK,KAAK;AAChB,kBAAQ,IAAI,uBAAuB;AACnC,kBAAQ,IAAI,6BAA6B,WAAW,KAAK,GAAG,mBAAmB,CAAC,EAAE;AAClF,cAAI,GAAG,sBAAsB,QAAW;AACpC,oBAAQ,IAAI,6BAA6B,GAAG,iBAAiB,EAAE;AAAA,UACnE;AAAA,QACJ;AAEA,cAAM,WAAW,CAAC,GAAG,KAAK,QAAQ;AAClC,YAAI,SAAS,QAAQ;AACjB,kBAAQ,IAAI,sBAAsB,SAAS,MAAM,EAAE;AACnD,qBAAW,WAAW,UAAU;AAC5B,oBAAQ,IAAI,OAAO,QAAQ,GAAG,KAAK,QAAQ,QAAQ,iBAAiB,IAAI,GAAG;AAAA,UAC/E;AAAA,QACJ,OAAO;AACH,kBAAQ,IAAI,yBAAyB;AAAA,QACzC;AACA,gBAAQ,IAAI;AAAA,MAChB;AAAA,IACJ,EACC;AAAA,MACG;AAAA,MACA;AAAA,MACA,CAAAA,WAAS;AACL,eAAOA,OACF,WAAW,WAAW;AAAA,UACnB,UAAU;AAAA,UACV,SAAS;AAAA,UACT,MAAM;AAAA,UACN,cAAc;AAAA,QAClB,CAAC,EACA,WAAW,6BAA6B;AAAA,UACrC,UACI;AAAA,UACJ,MAAM;AAAA,QACV,CAAC,EACA,WAAW,6BAA6B;AAAA,UACrC,UACI;AAAA,UACJ,MAAM;AAAA,QACV,CAAC;AAAA,MACT;AAAA,MACA,OAAM,SAAQ;AACV,cAAM,EAAE,QAAQ,WAAW,yBAAyB,wBAAwB,IAAI;AAChF,cAAM,QAAQ,MAAM;AACpB,YAAI,QAAQ,4BAA4B,QAAW;AAC/C,gBAAM,IAAI,MAAM,yCAAyC;AAAA,QAC7D;AACA,YAAI,UAAU,QAAQ,wBAAwB,qBAAqB;AACnE,YAAI,cAAc,OAAO;AACrB,gBAAM,YAAY,OAAO,OAAO,SAAS,CAAC;AAC1C,oBAAU,QAAQ,OAAO,YAAU,WAAW,SAAS;AACvD,cAAI,CAAC,QAAQ,QAAQ;AACjB,kBAAM,IAAI,MAAM,QAAQ,SAAS,mBAAmB;AAAA,UACxD;AAAA,QACJ;AAEA,cAAM,gBAAgB,4BAA4B;AAElD,mBAAW,mBAAmB,SAAS;AACnC,gBAAM,OAAO,MAAM,QAAQ,wBAAwB,QAAQ,eAAe;AAC1E,eAAK,QAAQ;AAAA,YACT;AAAA,YACA,kCAAkC,gBAAgB,0BAA0B;AAAA,YAC5E,oCAAoC,gBAAgB,0BAA0B;AAAA,YAC9E,GAAG,0BAA0B;AAAA,UACjC,CAAC;AAAA,QACL;AAAA,MACJ;AAAA,IACJ,EACC;AAAA,MACG;AAAA,MACA;AAAA,MACA,CAAAA,WAAS;AACL,eAAOA,OAAM,WAAW,WAAW;AAAA,UAC/B,UAAU;AAAA,UACV,SAAS;AAAA,UACT,MAAM;AAAA,QACV,CAAC;AAAA,MACL;AAAA,MACA,OAAM,SAAQ;AACV,cAAM,EAAE,QAAQ,UAAU,IAAI;AAC9B,YAAI,QAAQ,4BAA4B,QAAW;AAC/C,kBAAQ,IAAI,oDAAoD;AAChE;AAAA,QACJ;AAEA,YAAI,UAAU,QAAQ,wBAAwB,qBAAqB;AACnE,YAAI,cAAc,OAAO;AACrB,gBAAM,YAAY,OAAO,OAAO,SAAS,CAAC;AAC1C,oBAAU,QAAQ,OAAO,YAAU,WAAW,SAAS;AACvD,cAAI,CAAC,QAAQ,QAAQ;AACjB,kBAAM,IAAI,MAAM,QAAQ,SAAS,mBAAmB;AAAA,UACxD;AAAA,QACJ;AAEA,mBAAW,mBAAmB,SAAS;AACnC,gBAAM,OAAO,QAAQ,wBAAwB,cAAc,eAAe;AAC1E,cAAI,SAAS,QAAW;AACpB,oBAAQ,IAAI,QAAQ,eAAe,gBAAgB;AACnD;AAAA,UACJ;AACA,gBAAM,KAAK,WAAW;AAAA,QAC1B;AAAA,MACJ;AAAA,IACJ,EACC;AAAA,MACG;AAAA,MACA;AAAA,MACA,CAAAA,WAAS;AACL,eAAOA,OAAM,WAAW,YAAY;AAAA,UAChC,UACI;AAAA,UACJ,SAAS;AAAA,UACT,MAAM;AAAA,QACV,CAAC;AAAA,MACL;AAAA,MACA,OAAM,SAAQ;AACV,cAAM,EAAE,SAAS,UAAU,IAAI;AAC/B,cAAM,QAAQ,MAAM;AACpB,YAAI,QAAQ,4BAA4B,QAAW;AAC/C,gBAAM,IAAI,MAAM,yCAAyC;AAAA,QAC7D;AACA,YAAI,UAAU,QAAQ,wBAAwB,qBAAqB;AACnE,YAAI,cAAc,OAAO;AACrB,gBAAM,aAAa,UAAU,MAAM,GAAG,EAAE,IAAI,YAAU,OAAO,OAAO,MAAM,CAAC,CAAC;AAC5E,oBAAU,QAAQ,OAAO,YAAU,WAAW,SAAS,MAAM,CAAC;AAC9D,cAAI,CAAC,QAAQ,QAAQ;AACjB,kBAAM,IAAI,MAAM,QAAQ,SAAS,mBAAmB;AAAA,UACxD;AAAA,QACJ;AAEA,cAAM,cAAc,QAAQ,wBAAwB,4BAA4B;AAEhF,mBAAW,mBAAmB,SAAS;AACnC,gBAAM,OAAO,QAAQ,wBAAwB,cAAc,eAAe;AAC1E,cAAI,SAAS,QAAW;AACpB,kBAAM,UAAU,YAAY,KAAK,QAAM,GAAG,WAAW,eAAe;AACpE,oBAAQ;AAAA,cACJ,QAAQ,eAAe,oBAAoB,SAAS,YAAY,qBAAqB,SAAY,KAAK,QAAQ,WAAW,iBAAiB,UAAU,IAAI,QAAQ,WAAW,iBAAiB,WAAW,MAAM,EAAE;AAAA,YACnN;AAAA,UACJ,OAAO;AACH,kBAAM,YAAY,KAAK;AACvB,oBAAQ;AAAA,cACJ,QAAQ,eAAe,kBAAkB,WAAW,WAAW,qBAAqB,KAAK,eAAe,GAAG,GAAG,CAAC,CAAC,GAAG,cAAc,SAAY,KAAK,UAAU,UAAU,IAAI,UAAU,WAAW,MAAM,EAAE;AAAA,YAC3M;AAAA,UACJ;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ,EACC;AAAA,MACG;AAAA,MACA;AAAA,MACA,CAAAA,WAAS;AACL,eAAOA,OACF,WAAW,WAAW;AAAA,UACnB,UAAU;AAAA,UACV,MAAM;AAAA,UACN,cAAc;AAAA,QAClB,CAAC,EACA,WAAW,cAAc;AAAA,UACtB,UACI;AAAA,UACJ,SAAS,CAAC,MAAM,OAAO,OAAO;AAAA,UAC9B,cAAc;AAAA,UACd,MAAM;AAAA,QACV,CAAC;AAAA,MACT;AAAA,MACA,OAAM,SAAQ;AACV,cAAM,EAAE,QAAQ,WAAW,WAAW,IAAI;AAC1C,cAAM,QAAQ,MAAM;AACpB,YAAI,QAAQ,4BAA4B,QAAW;AAC/C,gBAAM,IAAI,MAAM,yCAAyC;AAAA,QAC7D;AAEA,cAAM,SAAS,OAAO,OAAO,SAAS,CAAC;AACvC,cAAM,OAAO,MAAM,QAAQ,wBAAwB,QAAQ,MAAM;AAEjE,cAAM,OAAO,eAAe,OAAO,QAAQ,eAAe,QAAQ,QAAQ;AAC1E,cAAM,KAAK,KAAK,WAAW,eAAe,EAAE,qBAAqB,KAAK,CAAC;AAGvE,cAAM,OAAO,QAAQ,KAAK,IACrB,IAAI,OAAO,EACX,IAAI,QAAQ,wBAAwB,OAAO,UAAU,MAAM,CAAC;AACjE,YAAI,MAAM;AACN,eAAK,sBAAsB,SAAS,QAAQ,YAAY,MAAM;AAAA,QAClE;AAEA,gBAAQ;AAAA,UACJ,iCAAiC,SAAS,WAAW,MAAM,YAAY,KAAK,sCAAsC;AAAA,QACtH;AAAA,MACJ;AAAA,IACJ,EACC;AAAA,MACG;AAAA,MACA;AAAA,MACA,CAAAA,WACIA,OACK;AAAA,QACG;AAAA,QACA;AAAA,QACA,CAAAA,WAAS;AACL,iBAAOA,OAAM,WAAW,WAAW;AAAA,YAC/B,UAAU;AAAA,YACV,MAAM;AAAA,YACN,cAAc;AAAA,UAClB,CAAC;AAAA,QACL;AAAA,QACA,OAAM,SAAQ;AACV,gBAAM,EAAE,QAAQ,UAAU,IAAI;AAC9B,gBAAM,QAAQ,MAAM;AACpB,cAAI,QAAQ,4BAA4B,QAAW;AAC/C,kBAAM,IAAI,MAAM,yCAAyC;AAAA,UAC7D;AAEA,gBAAM,SAAS,OAAO,OAAO,SAAS,CAAC;AACvC,gBAAM,OAAO,MAAM,QAAQ,wBAAwB,QAAQ,MAAM;AACjE,gBAAM,YAAY,KAAK,KAAK,MAAM,cAAc;AAEhD,cAAI,CAAC,WAAW,QAAQ;AACpB,oBAAQ,IAAI,QAAQ,SAAS,mCAAmC;AAChE;AAAA,UACJ;AAEA,kBAAQ,IAAI,+BAA+B,SAAS,GAAG;AACvD,qBAAW,WAAW,WAAW;AAC7B,oBAAQ,IAAI,KAAK,cAAc,OAAO,OAAO,CAAC,EAAE;AAAA,UACpD;AAAA,QACJ;AAAA,MACJ,EACC;AAAA,QACG;AAAA,QACA;AAAA,QACA,CAAAA,WAAS;AACL,iBAAOA,OACF,WAAW,WAAW;AAAA,YACnB,UAAU;AAAA,YACV,MAAM;AAAA,YACN,cAAc;AAAA,UAClB,CAAC,EACA,WAAW,WAAW;AAAA,YACnB,UAAU;AAAA,YACV,MAAM;AAAA,YACN,cAAc;AAAA,UAClB,CAAC;AAAA,QACT;AAAA,QACA,OAAM,SAAQ;AACV,gBAAM,EAAE,QAAQ,WAAW,SAAS,WAAW,IAAI;AACnD,gBAAM,QAAQ,MAAM;AACpB,cAAI,QAAQ,4BAA4B,QAAW;AAC/C,kBAAM,IAAI,MAAM,yCAAyC;AAAA,UAC7D;AAEA,gBAAM,SAAS,OAAO,OAAO,SAAS,CAAC;AACvC,gBAAM,OAAO,MAAM,QAAQ,wBAAwB,QAAQ,MAAM;AAEjE,cAAI,eAAe,QAAQ;AACvB,kBAAM,KAAK,KAAK,WAAW,qBAAqB,EAAE,WAAW,OAAU,CAAC;AACxE,oBAAQ,IAAI,6BAA6B,SAAS,UAAU;AAC5D;AAAA,UACJ;AAEA,gBAAM,UAAU,qBAAqB,UAAU;AAC/C,gBAAM,KAAK,KAAK,WAAW,qBAAqB,EAAE,WAAW,CAAC,OAAO,EAAE,CAAC;AACxE,kBAAQ;AAAA,YACJ,6BAA6B,SAAS,WAAW,cAAc,OAAO,OAAO,CAAC;AAAA,UAClF;AAAA,QACJ;AAAA,MACJ,EACC,cAAc,GAAG,+BAA+B;AAAA,MACzD,OAAO,SAAc;AACjB,aAAK,YAAY;AAAA,MACrB;AAAA,IACJ,EACC;AAAA,MACG;AAAA,MACA;AAAA,MACA,CAAAA,WAAS;AACL,eAAOA,OACF,WAAW,WAAW;AAAA,UACnB,UAAU;AAAA,UACV,SAAS;AAAA,UACT,MAAM;AAAA,UACN,cAAc;AAAA,QAClB,CAAC,EACA,WAAW,6BAA6B;AAAA,UACrC,UACI;AAAA,UACJ,MAAM;AAAA,QACV,CAAC,EACA,WAAW,6BAA6B;AAAA,UACrC,UACI;AAAA,UACJ,MAAM;AAAA,QACV,CAAC;AAAA,MACT;AAAA,MACA,OAAM,SAAQ;AACV,cAAM,EAAE,QAAQ,WAAW,yBAAyB,wBAAwB,IAAI;AAChF,cAAM,QAAQ,MAAM;AACpB,YAAI,QAAQ,4BAA4B,QAAW;AAC/C,gBAAM,IAAI,MAAM,yCAAyC;AAAA,QAC7D;AACA,YAAI,UAAU,QAAQ,wBAAwB,qBAAqB;AAEnE,cAAM,YAAY,OAAO,OAAO,SAAS,CAAC;AAC1C,kBAAU,QAAQ,OAAO,YAAU,WAAW,SAAS;AACvD,YAAI,QAAQ,QAAQ;AAChB,gBAAM,IAAI,MAAM,QAAQ,SAAS,gBAAgB;AAAA,QACrD;AAEA,cAAM,QAAQ,wBAAwB,KAAK,MAAM;AAAA,UAC7C,QAAQ,wBAAwB,OAAO,UAAU,SAAS;AAAA,QAC9D;AAEA,cAAM,gBAAgB,4BAA4B;AAElD,cAAM,OAAO,MAAM,QAAQ,wBAAwB,QAAQ,SAAS;AACpE,aAAK,QAAQ;AAAA,UACT;AAAA,UACA,kCAAkC,gBAAgB,0BAA0B;AAAA,UAC5E,oCAAoC,gBAAgB,0BAA0B;AAAA,UAC9E,GAAG,0BAA0B;AAAA,QACjC,CAAC;AAAA,MACL;AAAA,IACJ,EACC;AAAA,MACG;AAAA,MACA;AAAA,MACA,CAAAA,WACIA,OACK;AAAA,QACG;AAAA,QACA;AAAA,QACA,CAAAA,WAAS;AACL,iBAAOA,OACF,WAAW,WAAW;AAAA,YACnB,UAAU;AAAA,YACV,MAAM;AAAA,YACN,SAAS;AAAA,UACb,CAAC,EACA,OAAO,SAAS;AAAA,YACb,UAAU;AAAA,YACV,MAAM;AAAA,YACN,SAAS;AAAA,UACb,CAAC;AAAA,QACT;AAAA,QACA,OAAM,SAAQ;AACV,gBAAM,EAAE,QAAQ,WAAW,MAAM,IAAI;AAErC,gBAAM,QAAQ,MAAM;AACpB,cAAI,QAAQ,4BAA4B,QAAW;AAC/C,kBAAM,IAAI,MAAM,yCAAyC;AAAA,UAC7D;AAEA,cAAI,cAAsC;AAC1C,cAAI,cAAc,QAAW;AACzB,kBAAM,SAAS,OAAO,OAAO,SAAS,CAAC;AACvC,2BAAe,MAAM,QAAQ,wBAAwB,QAAQ,MAAM,IAAI;AAAA,UAC3E;AAEA,gBAAM,mBAAmB,MAAM,QAAQ,wBAAwB,YAAY;AAAA,YACvE,WACI,MACK,IAAI,qBAAqB,EACzB,aAAa,EAAE,aAAa,sBAAsB,MAAM,CAAC;AAAA,UACtE;AAEA,cAAI,iBAAiB,QAAQ;AACzB,oBAAQ,IAAI,6BAA6B,iBAAiB,MAAM,SAAS;AACzE,uBAAW,EAAE,aAAa,KAAK,KAAK,kBAAkB;AAClD,sBAAQ;AAAA,gBACJ,YAAY,SAAS;AAAA,gBACrB,kBAAkB,KAAK,eAAe,KAAK,KAAK,qBAAqB;AAAA,cACzE;AAAA,YACJ;AAAA,UACJ,OAAO;AACH,oBAAQ,IAAI,2BAA2B;AAAA,UAC3C;AAAA,QACJ;AAAA,MACJ,EACC;AAAA,QACG;AAAA,QACA;AAAA,QACA,CAAAA,WAAS;AACL,iBAAOA,OACF,WAAW,WAAW;AAAA,YACnB,UAAU;AAAA,YACV,MAAM;AAAA,YACN,cAAc;AAAA,UAClB,CAAC,EACA,OAAO,QAAQ;AAAA,YACZ,UAAU;AAAA,YACV,MAAM;AAAA,YACN,SAAS,CAAC,QAAQ,QAAQ,MAAM;AAAA,YAChC,SAAS;AAAA,UACb,CAAC,EACA,OAAO,SAAS;AAAA,YACb,UAAU;AAAA,YACV,MAAM;AAAA,YACN,SAAS;AAAA,UACb,CAAC;AAAA,QACT;AAAA,QACA,OAAM,SAAQ;AACV,gBAAM,EAAE,QAAQ,WAAW,MAAM,MAAM,IAAI;AAC3C,gBAAM,eAAe,SAAS,SAAS,OAAO,SAAS,SAAS,QAAQ;AAExE,gBAAM,QAAQ,MAAM;AACpB,cAAI,QAAQ,4BAA4B,QAAW;AAC/C,kBAAM,IAAI,MAAM,yCAAyC;AAAA,UAC7D;AAEA,gBAAM,SAAS,OAAO,OAAO,SAAS,CAAC;AACvC,gBAAM,cAAc,QAAQ,wBACvB,4BAA4B,EAC5B,KAAK,QAAM,GAAG,WAAW,MAAM;AACpC,gBAAM,YAAY,aAAa,YAAY;AAC3C,cAAI,CAAC,WAAW;AACZ,kBAAM,IAAI,MAAM,QAAQ,SAAS,qCAAqC;AAAA,UAC1E;AACA,cACI,UAAU,aAAa,UACvB,UAAU,cAAc,UACxB,UAAU,oBAAoB,QAChC;AACE,kBAAM,IAAI;AAAA,cACN,QAAQ,SAAS;AAAA,YACrB;AAAA,UACJ;AAEA,kBAAQ,IAAI,qCAAqC,SAAS,KAAK;AAC/D,kBAAQ;AAAA,YACJ,gBAAgB,WAAW,IAAI,UAAU,UAAsB,CAAC,EAAE,YAAY,CAAC;AAAA,UACnF;AACA,kBAAQ;AAAA,YACJ,iBAAiB,WAAW,IAAI,UAAU,WAAqB,CAAC,EAAE,YAAY,CAAC;AAAA,UACnF;AACA,kBAAQ;AAAA,YACJ,+BAA+B,UAAU,eAAe,KAAK,UAAU,qBAAqB;AAAA,UAChG;AACA,kBAAQ,IAAI,eAAe,IAAI;AAAA,CAAI;AAEnC,gBAAM,aAAa,OACf,MAAM,QAAQ,WAAW,GAC3B,eAAe;AAAA,YACb,UAAU,UAAU;AAAA,YACpB,WAAW,UAAU;AAAA,YACrB,wBAAwB,UAAU;AAAA,YAClC,sBAAsB;AAAA,YACtB;AAAA,UACJ,CAAC;AAED,cAAI,YAAY;AACZ,oBAAQ,IAAI,0BAAqB;AACjC,oBAAQ;AAAA,cACJ,kBAAkB,WAAW,eAAe,KAAK,WAAW,qBAAqB;AAAA,YACrF;AACA,oBAAQ,IAAI,cAAc,WAAW,MAAM,EAAE;AAC7C,gBAAI,WAAW,aAAa;AACxB,oBAAM,SAAS,OAAO,WAAW,WAAW,IAAI;AAChD,sBAAQ,IAAI,gBAAgB,OAAO,QAAQ,CAAC,CAAC,KAAK;AAAA,YACtD;AACA,gBAAI,WAAW,iBAAiB;AAC5B,sBAAQ,IAAI,oBAAoB,WAAW,eAAe,EAAE;AAAA,YAChE;AACA,oBAAQ;AAAA,cACJ;AAAA,0BAA6B,SAAS,GAAG,SAAS,SAAS,iBAAiB,EAAE;AAAA,YAClF;AAAA,UACJ,OAAO;AACH,oBAAQ,IAAI,oDAA+C;AAAA,UAC/D;AAAA,QACJ;AAAA,MACJ,EACC;AAAA,QACG;AAAA,QACA;AAAA,QACA,CAAAA,WAAS;AACL,iBAAOA,OACF,WAAW,WAAW;AAAA,YACnB,UAAU;AAAA,YACV,MAAM;AAAA,YACN,cAAc;AAAA,UAClB,CAAC,EACA,OAAO,QAAQ;AAAA,YACZ,UAAU;AAAA,YACV,MAAM;AAAA,YACN,SAAS,CAAC,QAAQ,QAAQ,MAAM;AAAA,YAChC,SAAS;AAAA,UACb,CAAC,EACA,OAAO,SAAS;AAAA,YACb,UAAU;AAAA,YACV,MAAM;AAAA,YACN,SAAS;AAAA,UACb,CAAC,EACA,OAAO,SAAS;AAAA,YACb,UAAU;AAAA,YACV,MAAM;AAAA,YACN,SAAS;AAAA,UACb,CAAC;AAAA,QACT;AAAA,QACA,OAAM,SAAQ;AACV,gBAAM,EAAE,QAAQ,WAAW,MAAM,OAAO,MAAM,IAAI;AAClD,gBAAM,eAAe,SAAS,SAAS,OAAO,SAAS,SAAS,QAAQ;AACxE,gBAAM,gBAAgB,UAAU;AAEhC,gBAAM,QAAQ,MAAM;AACpB,cAAI,QAAQ,4BAA4B,QAAW;AAC/C,kBAAM,IAAI,MAAM,yCAAyC;AAAA,UAC7D;AAEA,gBAAM,SAAS,OAAO,OAAO,SAAS,CAAC;AACvC,gBAAM,cAAc,QAAQ,wBACvB,4BAA4B,EAC5B,KAAK,QAAM,GAAG,WAAW,MAAM;AACpC,gBAAM,YAAY,aAAa,YAAY;AAC3C,cAAI,CAAC,WAAW;AACZ,kBAAM,IAAI,MAAM,QAAQ,SAAS,qCAAqC;AAAA,UAC1E;AACA,cACI,UAAU,aAAa,UACvB,UAAU,cAAc,UACxB,UAAU,oBAAoB,QAChC;AACE,kBAAM,IAAI;AAAA,cACN,QAAQ,SAAS;AAAA,YACrB;AAAA,UACJ;AAEA,kBAAQ,IAAI,qCAAqC,SAAS,KAAK;AAC/D,kBAAQ;AAAA,YACJ,gBAAgB,WAAW,IAAI,UAAU,UAAsB,CAAC,EAAE,YAAY,CAAC;AAAA,UACnF;AACA,kBAAQ;AAAA,YACJ,iBAAiB,WAAW,IAAI,UAAU,WAAqB,CAAC,EAAE,YAAY,CAAC;AAAA,UACnF;AACA,kBAAQ;AAAA,YACJ,+BAA+B,UAAU,eAAe,KAAK,UAAU,qBAAqB;AAAA,UAChG;AACA,kBAAQ,IAAI,eAAe,IAAI;AAAA,CAAI;AAEnC,gBAAM,aAAa,OACf,MAAM,QAAQ,WAAW,GAC3B,eAAe;AAAA,YACb,UAAU,UAAU;AAAA,YACpB,WAAW,UAAU;AAAA,YACrB,wBAAwB,UAAU;AAAA,YAClC,sBAAsB;AAAA,YACtB;AAAA,UACJ,CAAC;AAED,cAAI,CAAC,YAAY;AACb,oBAAQ,IAAI,6CAA6C;AACzD;AAAA,UACJ;AAEA,kBAAQ,IAAI,eAAe;AAC3B,kBAAQ;AAAA,YACJ,kBAAkB,WAAW,eAAe,KAAK,WAAW,qBAAqB;AAAA,UACrF;AACA,kBAAQ,IAAI,cAAc,WAAW,MAAM,EAAE;AAC7C,kBAAQ,IAAI,aAAa,WAAW,MAAM,EAAE;AAC5C,cAAI,WAAW,aAAa;AACxB,kBAAM,SAAS,OAAO,WAAW,WAAW,IAAI;AAChD,oBAAQ,IAAI,gBAAgB,OAAO,QAAQ,CAAC,CAAC,KAAK;AAAA,UACtD;AAEA,kBAAQ,IAAI,yBAAyB;AACrC,gBAAM,KAAK,OACP,MAAM,QAAQ,WAAW,GAC3B,eAAe,YAAY,aAAa;AAE1C,kBAAQ,IAAI,qDAAgD,GAAG,IAAI,EAAE;AACrE,kBAAQ;AAAA,YACJ;AAAA;AAAA,UACJ;AAAA,QACJ;AAAA,MACJ,EACC;AAAA,QACG;AAAA,QACA;AAAA,QACA,CAAAA,WAAS;AACL,iBAAOA,OACF,WAAW,WAAW;AAAA,YACnB,UAAU;AAAA,YACV,MAAM;AAAA,YACN,cAAc;AAAA,UAClB,CAAC,EACA,OAAO,QAAQ;AAAA,YACZ,UAAU;AAAA,YACV,MAAM;AAAA,YACN,SAAS,CAAC,QAAQ,QAAQ,MAAM;AAAA,YAChC,SAAS;AAAA,UACb,CAAC,EACA,OAAO,SAAS;AAAA,YACb,UAAU;AAAA,YACV,MAAM;AAAA,YACN,SAAS;AAAA,UACb,CAAC,EACA,OAAO,SAAS;AAAA,YACb,UAAU;AAAA,YACV,MAAM;AAAA,YACN,SAAS;AAAA,UACb,CAAC;AAAA,QACT;AAAA,QACA,OAAM,SAAQ;AACV,gBAAM,EAAE,QAAQ,WAAW,MAAM,OAAO,MAAM,IAAI;AAClD,gBAAM,eAAe,SAAS,SAAS,OAAO,SAAS,SAAS,QAAQ;AACxE,gBAAM,gBAAgB,UAAU;AAEhC,gBAAM,QAAQ,MAAM;AAEpB,cAAI,QAAQ,4BAA4B,QAAW;AAC/C,kBAAM,IAAI,MAAM,yCAAyC;AAAA,UAC7D;AAEA,gBAAM,SAAS,OAAO,OAAO,SAAS,CAAC;AACvC,gBAAM,cAAc,QAAQ,wBACvB,4BAA4B,EAC5B,KAAK,QAAM,GAAG,WAAW,MAAM;AACpC,gBAAM,YAAY,aAAa,YAAY;AAC3C,cAAI,CAAC,WAAW;AACZ,kBAAM,IAAI,MAAM,QAAQ,SAAS,qCAAqC;AAAA,UAC1E;AACA,cACI,UAAU,aAAa,UACvB,UAAU,cAAc,UACxB,UAAU,oBAAoB,QAChC;AACE,kBAAM,IAAI;AAAA,cACN,QAAQ,SAAS;AAAA,YACrB;AAAA,UACJ;AAEA,kBAAQ,IAAI,qCAAqC,SAAS,KAAK;AAC/D,kBAAQ;AAAA,YACJ,gBAAgB,WAAW,IAAI,UAAU,UAAsB,CAAC,EAAE,YAAY,CAAC;AAAA,UACnF;AACA,kBAAQ;AAAA,YACJ,iBAAiB,WAAW,IAAI,UAAU,WAAqB,CAAC,EAAE,YAAY,CAAC;AAAA,UACnF;AACA,kBAAQ;AAAA,YACJ,+BAA+B,UAAU,eAAe,KAAK,UAAU,qBAAqB;AAAA,UAChG;AACA,kBAAQ,IAAI,eAAe,IAAI;AAAA,CAAI;AAEnC,gBAAM,eAAe,OACjB,MAAM,QAAQ,WAAW,GAC3B,KAAK;AAAA,YACH,UAAU,UAAU;AAAA,YACpB,WAAW,UAAU;AAAA,YACrB,gBAAgB,UAAU;AAAA,UAC9B,CAAC;AAED,cAAI,SAAS,CAAC,aAAa,QAAQ;AAC/B,oBAAQ,IAAI,mDAAmD;AAC/D;AAAA,UACJ;AAEA,gBAAM,aAAa,OACf,MAAM,QAAQ,WAAW,GAC3B,eAAe;AAAA,YACb,UAAU,UAAU;AAAA,YACpB,WAAW,UAAU;AAAA,YACrB,wBAAwB,UAAU;AAAA,YAClC,sBAAsB;AAAA,YACtB;AAAA,UACJ,CAAC;AAED,cAAI;AACJ,cAAI,CAAC,cAAc,CAAC,OAAO;AACvB,oBAAQ,IAAI,oDAAoD;AAChE;AAAA,UACJ,WAAW,YAAY;AACnB,oBAAQ,IAAI,eAAe;AAC3B,oBAAQ;AAAA,cACJ,kBAAkB,WAAW,eAAe,KAAK,WAAW,qBAAqB;AAAA,YACrF;AACA,oBAAQ,IAAI,cAAc,WAAW,MAAM,EAAE;AAC7C,gBAAI,WAAW,aAAa;AACxB,oBAAM,SAAS,OAAO,WAAW,WAAW,IAAI;AAChD,sBAAQ,IAAI,gBAAgB,OAAO,QAAQ,CAAC,CAAC,KAAK;AAAA,YACtD;AAEA,oBAAQ,IAAI,yBAAyB;AACrC,kBAAM,KAAK,OACP,MAAM,QAAQ,WAAW,GAC3B,eAAe,YAAY,aAAa;AAE1C,4BAAgB,WAAW;AAE3B,oBAAQ;AAAA,cACJ,4BAAuB,aAAa,KAAK,WAAW,qBAAqB,yCAAyC,GAAG,IAAI;AAAA,YAC7H;AAAA,UACJ,OAAO;AACH,4BAAgB,aAAa,CAAC,EAAE;AAChC,oBAAQ;AAAA,cACJ,qBAAqB,aAAa,KAAK,aAAa,CAAC,EAAE,qBAAqB,6BAA6B,aAAa,CAAC,EAAE,QAAQ;AAAA,YACrI;AAAA,UACJ;AAEA,gBAAM,OAAO,QAAQ,wBAAwB,cAAc,MAAM;AACjE,cAAI,SAAS,QAAW;AACpB,kBAAM,IAAI,MAAM,QAAQ,SAAS,gBAAgB;AAAA,UACrD;AAEA,gBAAM,QAAQ,wBAAwB,YAAY,IAAI,WAAS;AAC3D,mBAAO,MACF,IAAI,qBAAqB,EACzB;AAAA,cACG,YAAY,EAAE,QAAQ,aAAa,YAAY,CAAC,EAAE,CAAC;AAAA,cACnD,UAAU;AAAA,cACV,UAAU;AAAA,cACV;AAAA,YACJ;AAAA,UACR,CAAC;AAAA,QACL;AAAA,MACJ,EACC,cAAc,GAAG,kCAAkC;AAAA,MAC5D,OAAO,SAAc;AACjB,aAAK,YAAY;AAAA,MACrB;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.5-alpha.0-
|
|
3
|
+
"version": "0.17.5-alpha.0-20260707-54888fc9e",
|
|
4
4
|
"description": "Shell app for Matter controller",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"iot",
|
|
@@ -34,14 +34,14 @@
|
|
|
34
34
|
"matter-shell": "dist/cjs/app.js"
|
|
35
35
|
},
|
|
36
36
|
"dependencies": {
|
|
37
|
-
"@matter/general": "0.17.5-alpha.0-
|
|
38
|
-
"@matter/model": "0.17.5-alpha.0-
|
|
39
|
-
"@matter/node": "0.17.5-alpha.0-
|
|
40
|
-
"@matter/nodejs": "0.17.5-alpha.0-
|
|
41
|
-
"@matter/nodejs-ble": "0.17.5-alpha.0-
|
|
42
|
-
"@matter/protocol": "0.17.5-alpha.0-
|
|
43
|
-
"@matter/types": "0.17.5-alpha.0-
|
|
44
|
-
"@project-chip/matter.js": "0.17.5-alpha.0-
|
|
37
|
+
"@matter/general": "0.17.5-alpha.0-20260707-54888fc9e",
|
|
38
|
+
"@matter/model": "0.17.5-alpha.0-20260707-54888fc9e",
|
|
39
|
+
"@matter/node": "0.17.5-alpha.0-20260707-54888fc9e",
|
|
40
|
+
"@matter/nodejs": "0.17.5-alpha.0-20260707-54888fc9e",
|
|
41
|
+
"@matter/nodejs-ble": "0.17.5-alpha.0-20260707-54888fc9e",
|
|
42
|
+
"@matter/protocol": "0.17.5-alpha.0-20260707-54888fc9e",
|
|
43
|
+
"@matter/types": "0.17.5-alpha.0-20260707-54888fc9e",
|
|
44
|
+
"@project-chip/matter.js": "0.17.5-alpha.0-20260707-54888fc9e",
|
|
45
45
|
"ws": "^8.21.0",
|
|
46
46
|
"yargs": "^18.0.0"
|
|
47
47
|
},
|
package/src/MatterNode.ts
CHANGED
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
// Include this first to auto-register Crypto, Network and Time Node.js implementations
|
|
8
8
|
import {
|
|
9
|
+
Diagnostic,
|
|
9
10
|
Environment,
|
|
10
11
|
Filesystem,
|
|
11
12
|
Logger,
|
|
@@ -17,9 +18,60 @@ import {
|
|
|
17
18
|
import { DclBehavior, ServerNode, SoftwareUpdateManager } from "@matter/node";
|
|
18
19
|
import { NodeId } from "@matter/types";
|
|
19
20
|
import { CommissioningController } from "@project-chip/matter.js";
|
|
20
|
-
import {
|
|
21
|
+
import {
|
|
22
|
+
CommissioningControllerNodeOptions,
|
|
23
|
+
Endpoint,
|
|
24
|
+
NodeStateInformation,
|
|
25
|
+
PairedNode,
|
|
26
|
+
} from "@project-chip/matter.js/device";
|
|
21
27
|
import { join } from "node:path";
|
|
22
28
|
|
|
29
|
+
/**
|
|
30
|
+
* The shell's default per-node diagnostic callbacks — state-information, attribute-change and event logging. Applied by
|
|
31
|
+
* default to every {@link MatterNode.connectAndGetNodes} connection so any command that reaches a node (not just
|
|
32
|
+
* `nodes connect`) gets the same logging regardless of which command touched the node first.
|
|
33
|
+
*/
|
|
34
|
+
export function createDiagnosticCallbacks(): Partial<CommissioningControllerNodeOptions> {
|
|
35
|
+
return {
|
|
36
|
+
attributeChangedCallback: (peerNodeId, { path: { nodeId, clusterId, endpointId, attributeName }, value }) =>
|
|
37
|
+
console.log(
|
|
38
|
+
`attributeChangedCallback ${peerNodeId}: Attribute ${nodeId}/${endpointId}/${clusterId}/${attributeName} changed to ${Diagnostic.json(
|
|
39
|
+
value,
|
|
40
|
+
)}`,
|
|
41
|
+
),
|
|
42
|
+
eventTriggeredCallback: (peerNodeId, { path: { nodeId, clusterId, endpointId, eventName }, events }) =>
|
|
43
|
+
console.log(
|
|
44
|
+
`eventTriggeredCallback ${peerNodeId}: Event ${nodeId}/${endpointId}/${clusterId}/${eventName} triggered with ${Diagnostic.json(
|
|
45
|
+
events,
|
|
46
|
+
)}`,
|
|
47
|
+
),
|
|
48
|
+
stateInformationCallback: (peerNodeId, info) => {
|
|
49
|
+
switch (info) {
|
|
50
|
+
case NodeStateInformation.Connected:
|
|
51
|
+
console.log(`stateInformationCallback Node ${peerNodeId} connected`);
|
|
52
|
+
break;
|
|
53
|
+
case NodeStateInformation.Disconnected:
|
|
54
|
+
console.log(`stateInformationCallback Node ${peerNodeId} disconnected`);
|
|
55
|
+
break;
|
|
56
|
+
case NodeStateInformation.Reconnecting:
|
|
57
|
+
console.log(`stateInformationCallback Node ${peerNodeId} reconnecting`);
|
|
58
|
+
break;
|
|
59
|
+
case NodeStateInformation.WaitingForDeviceDiscovery:
|
|
60
|
+
console.log(
|
|
61
|
+
`stateInformationCallback Node ${peerNodeId} waiting that device gets discovered again`,
|
|
62
|
+
);
|
|
63
|
+
break;
|
|
64
|
+
case NodeStateInformation.StructureChanged:
|
|
65
|
+
console.log(`stateInformationCallback Node ${peerNodeId} structure changed`);
|
|
66
|
+
break;
|
|
67
|
+
case NodeStateInformation.Decommissioned:
|
|
68
|
+
console.log(`stateInformationCallback Node ${peerNodeId} decommissioned`);
|
|
69
|
+
break;
|
|
70
|
+
}
|
|
71
|
+
},
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
|
|
23
75
|
const logger = Logger.get("Node");
|
|
24
76
|
|
|
25
77
|
export class MatterNode {
|
|
@@ -197,12 +249,16 @@ export class MatterNode {
|
|
|
197
249
|
throw new Error("CommissioningController not initialized");
|
|
198
250
|
}
|
|
199
251
|
|
|
252
|
+
// Default the shell's diagnostic callbacks so a node reached via any command (icd, cluster-*, subscribe, …),
|
|
253
|
+
// not just `nodes connect`, gets the same logging. A caller-supplied option still wins.
|
|
254
|
+
const options = { ...createDiagnosticCallbacks(), ...connectOptions };
|
|
255
|
+
|
|
200
256
|
if (nodeId === undefined) {
|
|
201
|
-
return await this.commissioningController.connect(
|
|
257
|
+
return await this.commissioningController.connect(options);
|
|
202
258
|
}
|
|
203
259
|
|
|
204
260
|
const node = await this.commissioningController.connectNode(nodeId, {
|
|
205
|
-
...
|
|
261
|
+
...options /*autoConnect: false*/,
|
|
206
262
|
});
|
|
207
263
|
if (!node.initialized) {
|
|
208
264
|
await node.events.initialized;
|
package/src/shell/Shell.ts
CHANGED
|
@@ -21,6 +21,7 @@ import cmdCommission from "./cmd_commission.js";
|
|
|
21
21
|
import cmdConfig from "./cmd_config.js";
|
|
22
22
|
import cmdDcl from "./cmd_dcl.js";
|
|
23
23
|
import cmdDiscover from "./cmd_discover.js";
|
|
24
|
+
import cmdIcd from "./cmd_icd.js";
|
|
24
25
|
import cmdIdentify from "./cmd_identify.js";
|
|
25
26
|
import cmdNodes from "./cmd_nodes.js";
|
|
26
27
|
import cmdOta from "./cmd_ota.js";
|
|
@@ -171,6 +172,7 @@ export class Shell {
|
|
|
171
172
|
cmdVendor(this.theNode),
|
|
172
173
|
cmdTlv(),
|
|
173
174
|
cmdDcl(),
|
|
175
|
+
cmdIcd(this.theNode),
|
|
174
176
|
exitCommand(),
|
|
175
177
|
])
|
|
176
178
|
.command({
|
|
@@ -9,8 +9,7 @@ import { DiscoveryCapabilitiesSchema, ManualPairingCodeCodec, NodeId, QrCode, Qr
|
|
|
9
9
|
import { BasicInformation, Descriptor, GeneralCommissioning } from "@matter/types/clusters";
|
|
10
10
|
import { NodeCommissioningOptions } from "@project-chip/matter.js";
|
|
11
11
|
import type { Argv } from "yargs";
|
|
12
|
-
import { MatterNode } from "../MatterNode.js";
|
|
13
|
-
import { createDiagnosticCallbacks } from "./cmd_nodes.js";
|
|
12
|
+
import { createDiagnosticCallbacks, MatterNode } from "../MatterNode.js";
|
|
14
13
|
|
|
15
14
|
const logger = Logger.get("Commission");
|
|
16
15
|
|
|
@@ -0,0 +1,333 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2026 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { Duration, Millis, ObserverGroup } from "@matter/general";
|
|
8
|
+
import { IcdClient, IcdMultiAdminError } from "@matter/node";
|
|
9
|
+
import { IcdManagementClient } from "@matter/node/behaviors/icd-management";
|
|
10
|
+
import { NodeId, SubjectId, VendorId } from "@matter/types";
|
|
11
|
+
import { IcdManagement } from "@matter/types/clusters/icd-management";
|
|
12
|
+
import { NodeStates, PairedNode } from "@project-chip/matter.js/device";
|
|
13
|
+
import type { Argv } from "yargs";
|
|
14
|
+
import { MatterNode } from "../MatterNode.js";
|
|
15
|
+
|
|
16
|
+
const watchers = new Map<string, ObserverGroup>();
|
|
17
|
+
|
|
18
|
+
async function printStatus(paired: PairedNode) {
|
|
19
|
+
const clientNode = paired.node;
|
|
20
|
+
if (!clientNode.behaviors.has(IcdClient)) {
|
|
21
|
+
if (!paired.initialized) {
|
|
22
|
+
console.log(`node ${paired.nodeId}: uninitialized (no cached data yet)`);
|
|
23
|
+
}
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
const icd = clientNode.stateOf(IcdClient);
|
|
27
|
+
const mgmt = clientNode.maybeStateOf(IcdManagementClient);
|
|
28
|
+
const supportsLit = IcdClient.litSupported(clientNode);
|
|
29
|
+
const awake = await clientNode.act(agent => agent.get(IcdClient).awake);
|
|
30
|
+
const operatingModeLabel =
|
|
31
|
+
mgmt === undefined
|
|
32
|
+
? "n/a"
|
|
33
|
+
: (IcdManagement.OperatingMode[mgmt.operatingMode ?? -1] ?? mgmt.operatingMode ?? "unknown");
|
|
34
|
+
const marker = paired.initialized ? "" : " [uninitialized]";
|
|
35
|
+
console.log(
|
|
36
|
+
[
|
|
37
|
+
`node ${paired.nodeId}:${marker}`,
|
|
38
|
+
` registered=${icd.registered}`,
|
|
39
|
+
` available=${icd.available}`,
|
|
40
|
+
` awake=${awake}`,
|
|
41
|
+
` supportsLit=${supportsLit}`,
|
|
42
|
+
` operatingMode=${operatingModeLabel}`,
|
|
43
|
+
` activeModeThreshold(ms)=${mgmt?.activeModeThreshold ?? "n/a"}`,
|
|
44
|
+
` idleModeDuration(s)=${mgmt?.idleModeDuration ?? "n/a"}`,
|
|
45
|
+
` lastCheckIn=${icd.lastCheckInReceivedAt ?? "never"}`,
|
|
46
|
+
` counterStart=${icd.counterStart ?? "n/a"} lastOffset=${icd.lastOffset ?? "n/a"}`,
|
|
47
|
+
].join("\n"),
|
|
48
|
+
);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/** The reserved node-id token that targets every commissioned node. */
|
|
52
|
+
const ALL_NODES = "all";
|
|
53
|
+
|
|
54
|
+
function selectsAll(nodeIdStr: string) {
|
|
55
|
+
return nodeIdStr.toLowerCase() === ALL_NODES;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/** Resolve a node-id argument to concrete ids: `all` expands to every commissioned node, otherwise a single id. */
|
|
59
|
+
async function targetNodeIds(theNode: MatterNode, nodeIdStr: string): Promise<NodeId[]> {
|
|
60
|
+
await theNode.start();
|
|
61
|
+
return selectsAll(nodeIdStr) ? theNode.controller.getCommissionedNodes() : [NodeId(BigInt(nodeIdStr))];
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Run `action` for each targeted node. A single explicit id surfaces its error to the caller; `all` is best-effort,
|
|
66
|
+
* reporting per-node failures and continuing so one unreachable peer does not abort the rest.
|
|
67
|
+
*/
|
|
68
|
+
async function eachNode(theNode: MatterNode, nodeIdStr: string, action: (nodeId: NodeId) => Promise<void>) {
|
|
69
|
+
const all = selectsAll(nodeIdStr);
|
|
70
|
+
const nodeIds = await targetNodeIds(theNode, nodeIdStr);
|
|
71
|
+
if (nodeIds.length === 0) {
|
|
72
|
+
console.log("No commissioned nodes.");
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
for (const nodeId of nodeIds) {
|
|
76
|
+
try {
|
|
77
|
+
await action(nodeId);
|
|
78
|
+
} catch (e) {
|
|
79
|
+
if (!all) {
|
|
80
|
+
throw e;
|
|
81
|
+
}
|
|
82
|
+
console.log(`node ${nodeId}: ${e instanceof Error ? e.message : String(e)}`);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
async function pairedNodeFor(theNode: MatterNode, nodeId: NodeId) {
|
|
88
|
+
const paired = (await theNode.connectAndGetNodes(String(nodeId)))[0];
|
|
89
|
+
if (paired === undefined) {
|
|
90
|
+
throw new Error(`Node ${nodeId} not found / not connected`);
|
|
91
|
+
}
|
|
92
|
+
if (!paired.node.behaviors.has(IcdClient)) {
|
|
93
|
+
throw new Error(`Node ${nodeId} is not an ICD device (no IcdManagement cluster)`);
|
|
94
|
+
}
|
|
95
|
+
return paired;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
async function clientNodeFor(theNode: MatterNode, nodeId: NodeId) {
|
|
99
|
+
return (await pairedNodeFor(theNode, nodeId)).node;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
function stopWatch(nodeIdStr: string) {
|
|
103
|
+
if (selectsAll(nodeIdStr)) {
|
|
104
|
+
for (const observers of watchers.values()) {
|
|
105
|
+
observers.close();
|
|
106
|
+
}
|
|
107
|
+
watchers.clear();
|
|
108
|
+
console.log("Stopped watching all nodes");
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
// Normalize through NodeId so the key matches startWatch's regardless of the id's textual form (e.g. 0x2f vs 47).
|
|
112
|
+
const key = String(NodeId(BigInt(nodeIdStr)));
|
|
113
|
+
watchers.get(key)?.close();
|
|
114
|
+
watchers.delete(key);
|
|
115
|
+
console.log(`Stopped watching node ${nodeIdStr}`);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
async function startWatch(theNode: MatterNode, nodeId: NodeId) {
|
|
119
|
+
const key = String(nodeId);
|
|
120
|
+
watchers.get(key)?.close();
|
|
121
|
+
watchers.delete(key);
|
|
122
|
+
|
|
123
|
+
const paired = await pairedNodeFor(theNode, nodeId);
|
|
124
|
+
const clientNode = paired.node;
|
|
125
|
+
const observers = new ObserverGroup();
|
|
126
|
+
const stamp = (msg: string) => console.log(`[icd ${nodeId}] ${msg}`);
|
|
127
|
+
// Event emitters discard emit()'s promise, so a rejection from this async read must not escape.
|
|
128
|
+
const wakefulnessSuffix = async () => {
|
|
129
|
+
try {
|
|
130
|
+
const { nextCheckIn, awake } = await clientNode.act(agent => {
|
|
131
|
+
const icd = agent.get(IcdClient);
|
|
132
|
+
return { nextCheckIn: icd.nextExpectedCheckin, awake: icd.awake };
|
|
133
|
+
});
|
|
134
|
+
return `nextCheckIn=${nextCheckIn} awake=${awake}`;
|
|
135
|
+
} catch (e) {
|
|
136
|
+
return `wakefulness read failed: ${e instanceof Error ? e.message : String(e)}`;
|
|
137
|
+
}
|
|
138
|
+
};
|
|
139
|
+
const events = clientNode.eventsOf(IcdClient);
|
|
140
|
+
observers.on(events.registered, () => stamp("registered"));
|
|
141
|
+
observers.on(events.unregistered, () => stamp("unregistered"));
|
|
142
|
+
observers.on(events.checkedIn, async ({ counter, activeModeThreshold }) =>
|
|
143
|
+
stamp(`check-in counter=${counter} SAT(ms)=${activeModeThreshold} ${await wakefulnessSuffix()}`),
|
|
144
|
+
);
|
|
145
|
+
observers.on(events.checkInMissed, async () => stamp(`check-in MISSED ${await wakefulnessSuffix()}`));
|
|
146
|
+
observers.on(events.keyRefreshed, () => stamp("key refreshed"));
|
|
147
|
+
observers.on(events.available$Changed, (value: boolean) => stamp(`available=${value}`));
|
|
148
|
+
observers.on(paired.events.stateChanged, state => stamp(`connection=${NodeStates[state] ?? state}`));
|
|
149
|
+
watchers.set(key, observers);
|
|
150
|
+
// Drop the watcher when the node goes away so it doesn't leak in the map.
|
|
151
|
+
clientNode.lifecycle.destroyed.once(() => {
|
|
152
|
+
watchers.get(key)?.close();
|
|
153
|
+
watchers.delete(key);
|
|
154
|
+
});
|
|
155
|
+
console.log(`Watching node ${nodeId} (run \`icd watch ${nodeId} off\` to stop)`);
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
export default function commands(theNode: MatterNode) {
|
|
159
|
+
return {
|
|
160
|
+
command: "icd",
|
|
161
|
+
describe: "Controller-side ICD (Intermittently Connected Device) operations",
|
|
162
|
+
builder: (yargs: Argv) =>
|
|
163
|
+
yargs
|
|
164
|
+
.command({
|
|
165
|
+
command: "register <node-id>",
|
|
166
|
+
describe: "Register this controller as a Check-In client on the peer ('all' for every node)",
|
|
167
|
+
builder: (y: Argv) =>
|
|
168
|
+
y
|
|
169
|
+
.positional("node-id", {
|
|
170
|
+
describe: "node id, or 'all'",
|
|
171
|
+
type: "string",
|
|
172
|
+
demandOption: true,
|
|
173
|
+
})
|
|
174
|
+
.option("subject", { describe: "monitored subject id", type: "string" })
|
|
175
|
+
.option("type", {
|
|
176
|
+
describe: "client type",
|
|
177
|
+
choices: ["permanent", "ephemeral"] as const,
|
|
178
|
+
default: "permanent" as const,
|
|
179
|
+
})
|
|
180
|
+
.option("allow-multi-admin", {
|
|
181
|
+
describe: "allow registering alongside other-vendor admins",
|
|
182
|
+
type: "boolean",
|
|
183
|
+
default: false,
|
|
184
|
+
})
|
|
185
|
+
.option("ignore-vendor", {
|
|
186
|
+
describe: "vendor id(s) to treat as trusted",
|
|
187
|
+
type: "array",
|
|
188
|
+
}),
|
|
189
|
+
handler: async (argv: any) => {
|
|
190
|
+
const options = {
|
|
191
|
+
monitoredSubject:
|
|
192
|
+
argv.subject === undefined ? undefined : SubjectId(NodeId(BigInt(argv.subject))),
|
|
193
|
+
clientType:
|
|
194
|
+
argv.type === "ephemeral"
|
|
195
|
+
? IcdManagement.ClientType.Ephemeral
|
|
196
|
+
: IcdManagement.ClientType.Permanent,
|
|
197
|
+
allowMultiAdmin: argv.allowMultiAdmin,
|
|
198
|
+
ignoredVendors: argv.ignoreVendor?.map((v: string | number) => VendorId(Number(v))),
|
|
199
|
+
};
|
|
200
|
+
await eachNode(theNode, argv.nodeId, async nodeId => {
|
|
201
|
+
const clientNode = await clientNodeFor(theNode, nodeId);
|
|
202
|
+
try {
|
|
203
|
+
await clientNode.act(agent => agent.get(IcdClient).register(options));
|
|
204
|
+
console.log(`Registered as Check-In client on node ${nodeId}`);
|
|
205
|
+
} catch (e) {
|
|
206
|
+
if (e instanceof IcdMultiAdminError) {
|
|
207
|
+
console.log(
|
|
208
|
+
`node ${nodeId}: refused — peer has other-vendor admins (${e.adminVendorIds.join(", ")}). Re-run with --allow-multi-admin to proceed.`,
|
|
209
|
+
);
|
|
210
|
+
return;
|
|
211
|
+
}
|
|
212
|
+
throw e;
|
|
213
|
+
}
|
|
214
|
+
});
|
|
215
|
+
},
|
|
216
|
+
})
|
|
217
|
+
.command({
|
|
218
|
+
command: "unregister <node-id>",
|
|
219
|
+
describe: "Remove this controller's Check-In registration from the peer ('all' for every node)",
|
|
220
|
+
builder: (y: Argv) =>
|
|
221
|
+
y
|
|
222
|
+
.positional("node-id", {
|
|
223
|
+
describe: "node id, or 'all'",
|
|
224
|
+
type: "string",
|
|
225
|
+
demandOption: true,
|
|
226
|
+
})
|
|
227
|
+
.option("force", {
|
|
228
|
+
describe:
|
|
229
|
+
"forget the registration locally without contacting the peer (escape hatch for an unreachable LIT ICD)",
|
|
230
|
+
type: "boolean",
|
|
231
|
+
default: false,
|
|
232
|
+
}),
|
|
233
|
+
handler: async (argv: any) => {
|
|
234
|
+
await eachNode(theNode, argv.nodeId, async nodeId => {
|
|
235
|
+
if (argv.force) {
|
|
236
|
+
// A registered-but-unreachable LIT peer parks every connecting/peer-I/O path on its
|
|
237
|
+
// never-coming Check-In; reach it via the non-connecting accessor and forget() locally.
|
|
238
|
+
const clientNode = (await theNode.controller.getNode(nodeId)).node;
|
|
239
|
+
if (!clientNode.behaviors.has(IcdClient)) {
|
|
240
|
+
throw new Error(`Node ${nodeId} is not an ICD device (no IcdManagement cluster)`);
|
|
241
|
+
}
|
|
242
|
+
await clientNode.act(agent => agent.get(IcdClient).forget());
|
|
243
|
+
console.log(
|
|
244
|
+
`Forgot Check-In registration for node ${nodeId} locally (peer not contacted)`,
|
|
245
|
+
);
|
|
246
|
+
return;
|
|
247
|
+
}
|
|
248
|
+
const clientNode = await clientNodeFor(theNode, nodeId);
|
|
249
|
+
await clientNode.act(agent => agent.get(IcdClient).unregister());
|
|
250
|
+
console.log(`Unregistered Check-In client on node ${nodeId}`);
|
|
251
|
+
});
|
|
252
|
+
},
|
|
253
|
+
})
|
|
254
|
+
.command({
|
|
255
|
+
command: "stay-active <node-id> [duration-ms]",
|
|
256
|
+
describe:
|
|
257
|
+
"Ask the peer to stay in Active mode; prints the promised duration ('all' for every node)",
|
|
258
|
+
builder: (y: Argv) =>
|
|
259
|
+
y
|
|
260
|
+
.positional("node-id", {
|
|
261
|
+
describe: "node id, or 'all'",
|
|
262
|
+
type: "string",
|
|
263
|
+
demandOption: true,
|
|
264
|
+
})
|
|
265
|
+
.positional("duration-ms", {
|
|
266
|
+
describe: "requested active duration (ms)",
|
|
267
|
+
type: "number",
|
|
268
|
+
default: 30000,
|
|
269
|
+
}),
|
|
270
|
+
handler: async (argv: any) => {
|
|
271
|
+
await eachNode(theNode, argv.nodeId, async nodeId => {
|
|
272
|
+
const clientNode = await clientNodeFor(theNode, nodeId);
|
|
273
|
+
const promised = await clientNode.act(agent =>
|
|
274
|
+
agent.get(IcdClient).stayActive(Millis(argv.durationMs)),
|
|
275
|
+
);
|
|
276
|
+
console.log(`Node ${nodeId} promised active for ${Duration.format(promised)}`);
|
|
277
|
+
});
|
|
278
|
+
},
|
|
279
|
+
})
|
|
280
|
+
.command({
|
|
281
|
+
command: "status <node-id>",
|
|
282
|
+
describe: "Show ICD state for a peer ('all' for every commissioned node)",
|
|
283
|
+
builder: (y: Argv) =>
|
|
284
|
+
y.positional("node-id", { describe: "node id, or 'all'", type: "string", demandOption: true }),
|
|
285
|
+
handler: async (argv: any) => {
|
|
286
|
+
// getNode() never awaits remote init, unlike connectAndGetNodes(), so a peer stuck mid-read can't hang this command.
|
|
287
|
+
const nodeIds = await targetNodeIds(theNode, argv.nodeId);
|
|
288
|
+
if (nodeIds.length === 0) {
|
|
289
|
+
console.log("No commissioned nodes.");
|
|
290
|
+
return;
|
|
291
|
+
}
|
|
292
|
+
// Diagnostic command: report an unreachable node inline rather than aborting, even for a single id.
|
|
293
|
+
for (const nodeId of nodeIds) {
|
|
294
|
+
try {
|
|
295
|
+
await printStatus(await theNode.controller.getNode(nodeId));
|
|
296
|
+
} catch (e) {
|
|
297
|
+
console.log(
|
|
298
|
+
`node ${nodeId}: unavailable (${e instanceof Error ? e.message : String(e)})`,
|
|
299
|
+
);
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
},
|
|
303
|
+
})
|
|
304
|
+
.command({
|
|
305
|
+
command: "watch <node-id> [state]",
|
|
306
|
+
describe:
|
|
307
|
+
"Stream ICD events for a peer live ('all' for every node; state: on|off, default on), including awake, nextCheckIn and connection state",
|
|
308
|
+
builder: (y: Argv) =>
|
|
309
|
+
y
|
|
310
|
+
.positional("node-id", {
|
|
311
|
+
describe: "node id, or 'all'",
|
|
312
|
+
type: "string",
|
|
313
|
+
demandOption: true,
|
|
314
|
+
})
|
|
315
|
+
.positional("state", {
|
|
316
|
+
describe: "on|off",
|
|
317
|
+
choices: ["on", "off"] as const,
|
|
318
|
+
default: "on" as const,
|
|
319
|
+
}),
|
|
320
|
+
handler: async (argv: any) => {
|
|
321
|
+
if (argv.state === "off") {
|
|
322
|
+
stopWatch(argv.nodeId);
|
|
323
|
+
return;
|
|
324
|
+
}
|
|
325
|
+
await eachNode(theNode, argv.nodeId, nodeId => startWatch(theNode, nodeId));
|
|
326
|
+
},
|
|
327
|
+
})
|
|
328
|
+
.demandCommand(1, "You must specify an icd subcommand"),
|
|
329
|
+
handler: async (argv: any) => {
|
|
330
|
+
argv.unhandled = true;
|
|
331
|
+
},
|
|
332
|
+
};
|
|
333
|
+
}
|
package/src/shell/cmd_nodes.ts
CHANGED
|
@@ -8,50 +8,9 @@ import { capitalize, ChannelType, decamelize, Diagnostic, ServerAddress } from "
|
|
|
8
8
|
import { ClientNode, CommissioningClient, NetworkClient, SoftwareUpdateManager } from "@matter/node";
|
|
9
9
|
import { PeerAddress, PeerSet } from "@matter/protocol";
|
|
10
10
|
import { FabricIndex, NodeId, VendorId } from "@matter/types";
|
|
11
|
-
import {
|
|
11
|
+
import { NodeStateInformation } from "@project-chip/matter.js/device";
|
|
12
12
|
import type { Argv } from "yargs";
|
|
13
|
-
import { MatterNode } from "../MatterNode.js";
|
|
14
|
-
|
|
15
|
-
export function createDiagnosticCallbacks(): Partial<CommissioningControllerNodeOptions> {
|
|
16
|
-
return {
|
|
17
|
-
attributeChangedCallback: (peerNodeId, { path: { nodeId, clusterId, endpointId, attributeName }, value }) =>
|
|
18
|
-
console.log(
|
|
19
|
-
`attributeChangedCallback ${peerNodeId}: Attribute ${nodeId}/${endpointId}/${clusterId}/${attributeName} changed to ${Diagnostic.json(
|
|
20
|
-
value,
|
|
21
|
-
)}`,
|
|
22
|
-
),
|
|
23
|
-
eventTriggeredCallback: (peerNodeId, { path: { nodeId, clusterId, endpointId, eventName }, events }) =>
|
|
24
|
-
console.log(
|
|
25
|
-
`eventTriggeredCallback ${peerNodeId}: Event ${nodeId}/${endpointId}/${clusterId}/${eventName} triggered with ${Diagnostic.json(
|
|
26
|
-
events,
|
|
27
|
-
)}`,
|
|
28
|
-
),
|
|
29
|
-
stateInformationCallback: (peerNodeId, info) => {
|
|
30
|
-
switch (info) {
|
|
31
|
-
case NodeStateInformation.Connected:
|
|
32
|
-
console.log(`stateInformationCallback Node ${peerNodeId} connected`);
|
|
33
|
-
break;
|
|
34
|
-
case NodeStateInformation.Disconnected:
|
|
35
|
-
console.log(`stateInformationCallback Node ${peerNodeId} disconnected`);
|
|
36
|
-
break;
|
|
37
|
-
case NodeStateInformation.Reconnecting:
|
|
38
|
-
console.log(`stateInformationCallback Node ${peerNodeId} reconnecting`);
|
|
39
|
-
break;
|
|
40
|
-
case NodeStateInformation.WaitingForDeviceDiscovery:
|
|
41
|
-
console.log(
|
|
42
|
-
`stateInformationCallback Node ${peerNodeId} waiting that device gets discovered again`,
|
|
43
|
-
);
|
|
44
|
-
break;
|
|
45
|
-
case NodeStateInformation.StructureChanged:
|
|
46
|
-
console.log(`stateInformationCallback Node ${peerNodeId} structure changed`);
|
|
47
|
-
break;
|
|
48
|
-
case NodeStateInformation.Decommissioned:
|
|
49
|
-
console.log(`stateInformationCallback Node ${peerNodeId} decommissioned`);
|
|
50
|
-
break;
|
|
51
|
-
}
|
|
52
|
-
},
|
|
53
|
-
};
|
|
54
|
-
}
|
|
13
|
+
import { createDiagnosticCallbacks, MatterNode } from "../MatterNode.js";
|
|
55
14
|
|
|
56
15
|
/** Parse a `udp://host:port` / `tcp://host:port` URL (IPv6 host in brackets) into a {@link ServerAddress}. */
|
|
57
16
|
function parseFallbackAddress(input: string): ServerAddress {
|
|
@@ -94,7 +53,6 @@ export default function commands(theNode: MatterNode) {
|
|
|
94
53
|
describe: "Manage nodes",
|
|
95
54
|
builder: (yargs: Argv) =>
|
|
96
55
|
yargs
|
|
97
|
-
// Pair
|
|
98
56
|
.command(
|
|
99
57
|
["*", "list [status]"],
|
|
100
58
|
"List all commissioned nodes",
|