@matter-server/ws-controller 0.2.0-alpha.0-00000000-000000000

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 (95) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +11 -0
  3. package/dist/esm/controller/AttributeDataCache.d.ts +49 -0
  4. package/dist/esm/controller/AttributeDataCache.d.ts.map +1 -0
  5. package/dist/esm/controller/AttributeDataCache.js +154 -0
  6. package/dist/esm/controller/AttributeDataCache.js.map +6 -0
  7. package/dist/esm/controller/ControllerCommandHandler.d.ts +118 -0
  8. package/dist/esm/controller/ControllerCommandHandler.d.ts.map +1 -0
  9. package/dist/esm/controller/ControllerCommandHandler.js +1015 -0
  10. package/dist/esm/controller/ControllerCommandHandler.js.map +6 -0
  11. package/dist/esm/controller/LegacyDataInjector.d.ts +95 -0
  12. package/dist/esm/controller/LegacyDataInjector.d.ts.map +1 -0
  13. package/dist/esm/controller/LegacyDataInjector.js +196 -0
  14. package/dist/esm/controller/LegacyDataInjector.js.map +6 -0
  15. package/dist/esm/controller/MatterController.d.ts +59 -0
  16. package/dist/esm/controller/MatterController.d.ts.map +1 -0
  17. package/dist/esm/controller/MatterController.js +212 -0
  18. package/dist/esm/controller/MatterController.js.map +6 -0
  19. package/dist/esm/controller/Nodes.d.ts +62 -0
  20. package/dist/esm/controller/Nodes.d.ts.map +1 -0
  21. package/dist/esm/controller/Nodes.js +85 -0
  22. package/dist/esm/controller/Nodes.js.map +6 -0
  23. package/dist/esm/controller/TestNodeCommandHandler.d.ts +84 -0
  24. package/dist/esm/controller/TestNodeCommandHandler.d.ts.map +1 -0
  25. package/dist/esm/controller/TestNodeCommandHandler.js +225 -0
  26. package/dist/esm/controller/TestNodeCommandHandler.js.map +6 -0
  27. package/dist/esm/data/VendorIDs.d.ts +7 -0
  28. package/dist/esm/data/VendorIDs.d.ts.map +1 -0
  29. package/dist/esm/data/VendorIDs.js +1237 -0
  30. package/dist/esm/data/VendorIDs.js.map +6 -0
  31. package/dist/esm/example/send-command.d.ts +7 -0
  32. package/dist/esm/example/send-command.d.ts.map +1 -0
  33. package/dist/esm/example/send-command.js +60 -0
  34. package/dist/esm/example/send-command.js.map +6 -0
  35. package/dist/esm/index.d.ts +21 -0
  36. package/dist/esm/index.d.ts.map +1 -0
  37. package/dist/esm/index.js +26 -0
  38. package/dist/esm/index.js.map +6 -0
  39. package/dist/esm/model/ModelMapper.d.ts +34 -0
  40. package/dist/esm/model/ModelMapper.d.ts.map +1 -0
  41. package/dist/esm/model/ModelMapper.js +62 -0
  42. package/dist/esm/model/ModelMapper.js.map +6 -0
  43. package/dist/esm/package.json +3 -0
  44. package/dist/esm/server/ConfigStorage.d.ts +29 -0
  45. package/dist/esm/server/ConfigStorage.d.ts.map +1 -0
  46. package/dist/esm/server/ConfigStorage.js +84 -0
  47. package/dist/esm/server/ConfigStorage.js.map +6 -0
  48. package/dist/esm/server/Converters.d.ts +53 -0
  49. package/dist/esm/server/Converters.d.ts.map +1 -0
  50. package/dist/esm/server/Converters.js +343 -0
  51. package/dist/esm/server/Converters.js.map +6 -0
  52. package/dist/esm/server/WebSocketControllerHandler.d.ts +21 -0
  53. package/dist/esm/server/WebSocketControllerHandler.d.ts.map +1 -0
  54. package/dist/esm/server/WebSocketControllerHandler.js +767 -0
  55. package/dist/esm/server/WebSocketControllerHandler.js.map +6 -0
  56. package/dist/esm/types/CommandHandler.d.ts +258 -0
  57. package/dist/esm/types/CommandHandler.d.ts.map +1 -0
  58. package/dist/esm/types/CommandHandler.js +6 -0
  59. package/dist/esm/types/CommandHandler.js.map +6 -0
  60. package/dist/esm/types/WebServer.d.ts +12 -0
  61. package/dist/esm/types/WebServer.d.ts.map +1 -0
  62. package/dist/esm/types/WebServer.js +6 -0
  63. package/dist/esm/types/WebServer.js.map +6 -0
  64. package/dist/esm/types/WebSocketMessageTypes.d.ts +478 -0
  65. package/dist/esm/types/WebSocketMessageTypes.d.ts.map +1 -0
  66. package/dist/esm/types/WebSocketMessageTypes.js +77 -0
  67. package/dist/esm/types/WebSocketMessageTypes.js.map +6 -0
  68. package/dist/esm/util/matterVersion.d.ts +12 -0
  69. package/dist/esm/util/matterVersion.d.ts.map +1 -0
  70. package/dist/esm/util/matterVersion.js +32 -0
  71. package/dist/esm/util/matterVersion.js.map +6 -0
  72. package/dist/esm/util/network.d.ts +14 -0
  73. package/dist/esm/util/network.d.ts.map +1 -0
  74. package/dist/esm/util/network.js +63 -0
  75. package/dist/esm/util/network.js.map +6 -0
  76. package/package.json +45 -0
  77. package/src/controller/AttributeDataCache.ts +194 -0
  78. package/src/controller/ControllerCommandHandler.ts +1256 -0
  79. package/src/controller/LegacyDataInjector.ts +314 -0
  80. package/src/controller/MatterController.ts +265 -0
  81. package/src/controller/Nodes.ts +115 -0
  82. package/src/controller/TestNodeCommandHandler.ts +305 -0
  83. package/src/data/VendorIDs.ts +1234 -0
  84. package/src/example/send-command.ts +82 -0
  85. package/src/index.ts +33 -0
  86. package/src/model/ModelMapper.ts +87 -0
  87. package/src/server/ConfigStorage.ts +112 -0
  88. package/src/server/Converters.ts +483 -0
  89. package/src/server/WebSocketControllerHandler.ts +917 -0
  90. package/src/tsconfig.json +7 -0
  91. package/src/types/CommandHandler.ts +270 -0
  92. package/src/types/WebServer.ts +14 -0
  93. package/src/types/WebSocketMessageTypes.ts +525 -0
  94. package/src/util/matterVersion.ts +45 -0
  95. package/src/util/network.ts +85 -0
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/controller/ControllerCommandHandler.ts"],
4
+ "mappings": "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",
5
+ "names": ["endpointId", "clusterId", "attributeId", "eventId", "data"]
6
+ }
@@ -0,0 +1,95 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025-2026 Open Home Foundation
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { Bytes, Crypto, StorageContext, StorageManager } from "@matter/main";
7
+ import { CertificateAuthority } from "@matter/main/protocol";
8
+ /**
9
+ * Fabric configuration data extracted from chip.json.
10
+ * This is a partial representation of Fabric.SyncConfig from @matter/protocol.
11
+ *
12
+ * IMPORTANT: The controller's operational keypair is NOT available in chip.json.
13
+ *
14
+ * The Python CHIP SDK intentionally does not persist the operational private key to chip.json.
15
+ * When pychip_OpCreds_AllocateController is called without a keypair parameter, it generates
16
+ * an ephemeral P256 keypair, creates a NOC for it, but only stores the keypair in memory
17
+ * (see FabricTable.cpp:190 - "Operational Key is never saved to storage here").
18
+ *
19
+ * This means when migrating from Python Matter Server to matter.js:
20
+ * - The RCAC and ICAC can be reused (they define the fabric's CA chain)
21
+ * - The NOC must be REPLACED with a new one signed for a new keypair
22
+ * - A new operational keypair must be generated for the matter.js controller
23
+ * - The IPK and other fabric data can be preserved
24
+ *
25
+ * The ExampleOpCredsCAKey1/ICAKey1 in chip.json are the CA/ICA signing keys (for issuing
26
+ * certificates to devices), NOT the controller's operational identity key.
27
+ *
28
+ * Fields that need to be computed or provided when creating the Fabric:
29
+ * - keyPair: Must generate a new keypair and issue a new NOC
30
+ * - globalId: Computed from fabricId + rootPublicKey
31
+ * - operationalIdentityProtectionKey: Computed from identityProtectionKey + globalId
32
+ */
33
+ export interface LegacyFabricConfigData {
34
+ /** Fabric index (1, 2, etc.) */
35
+ fabricIndex: number;
36
+ /** Fabric ID from NOC certificate (can be number for small values, bigint for large) */
37
+ fabricId: number | bigint;
38
+ /** Node ID from NOC certificate (can be number for small values, bigint for large) */
39
+ nodeId: number | bigint;
40
+ /** Root node ID from RCAC certificate (can be number for small values, bigint for large) */
41
+ rootNodeId: number | bigint;
42
+ /** Root vendor ID from fabric metadata */
43
+ rootVendorId: number;
44
+ /** Root CA certificate (RCAC) as TLV bytes */
45
+ rootCert: Bytes;
46
+ /** Root CA public key extracted from RCAC */
47
+ rootPublicKey: Bytes;
48
+ /** Identity Protection Key from group key set 0 */
49
+ identityProtectionKey: Bytes;
50
+ /** Intermediate CA certificate (ICAC) as TLV bytes, if present */
51
+ intermediateCACert?: Bytes;
52
+ /** Node Operational Certificate (NOC) as TLV bytes */
53
+ operationalCert: Bytes;
54
+ /** Fabric label */
55
+ label: string;
56
+ }
57
+ /** Vendor info from Python Matter Server */
58
+ export interface LegacyVendorInfo {
59
+ vendor_id: number;
60
+ vendor_name: string;
61
+ company_legal_name: string;
62
+ company_preferred_name: string;
63
+ vendor_landing_page_url: string;
64
+ creator: string;
65
+ }
66
+ /** Node data from Python Matter Server nodes map */
67
+ export interface LegacyNodeData {
68
+ node_id: number;
69
+ date_commissioned: string;
70
+ last_interview: string;
71
+ interview_version: number;
72
+ available: boolean;
73
+ is_bridge: boolean;
74
+ attributes: Record<string, unknown>;
75
+ attribute_subscriptions: unknown[];
76
+ }
77
+ /** Structure of the <compressedFabricId>.json file */
78
+ export interface LegacyServerFile {
79
+ vendor_info: Record<string, LegacyVendorInfo>;
80
+ last_node_id: number;
81
+ nodes: Record<string, LegacyNodeData>;
82
+ }
83
+ export type CertificateAuthorityConfiguration = CertificateAuthority.Configuration;
84
+ export interface LegacyServerData {
85
+ credentials?: CertificateAuthority.Configuration;
86
+ fabric?: LegacyFabricConfigData;
87
+ nodeData?: LegacyServerFile;
88
+ vendorId: number;
89
+ fabricId?: number | bigint;
90
+ }
91
+ export declare namespace LegacyDataInjector {
92
+ function injectCredentials(credentialsStorage: StorageContext, crypto: Crypto, credentialData: CertificateAuthority.Configuration, fabricData?: LegacyFabricConfigData): Promise<void>;
93
+ function injectNodeData(baseStorage: StorageManager, nodeData?: LegacyServerFile): Promise<boolean>;
94
+ }
95
+ //# sourceMappingURL=LegacyDataInjector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LegacyDataInjector.d.ts","sourceRoot":"","sources":["../../../src/controller/LegacyDataInjector.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EACH,KAAK,EACL,MAAM,EAON,cAAc,EACd,cAAc,EACjB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,oBAAoB,EAA8B,MAAM,uBAAuB,CAAC;AAYzF;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,WAAW,sBAAsB;IACnC,gCAAgC;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,wFAAwF;IACxF,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC;IAC1B,sFAAsF;IACtF,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,4FAA4F;IAC5F,UAAU,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B,0CAA0C;IAC1C,YAAY,EAAE,MAAM,CAAC;IACrB,8CAA8C;IAC9C,QAAQ,EAAE,KAAK,CAAC;IAChB,6CAA6C;IAC7C,aAAa,EAAE,KAAK,CAAC;IACrB,mDAAmD;IACnD,qBAAqB,EAAE,KAAK,CAAC;IAC7B,kEAAkE;IAClE,kBAAkB,CAAC,EAAE,KAAK,CAAC;IAC3B,sDAAsD;IACtD,eAAe,EAAE,KAAK,CAAC;IACvB,mBAAmB;IACnB,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,4CAA4C;AAC5C,MAAM,WAAW,gBAAgB;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,uBAAuB,EAAE,MAAM,CAAC;IAChC,OAAO,EAAE,MAAM,CAAC;CACnB;AAED,oDAAoD;AACpD,MAAM,WAAW,cAAc;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,uBAAuB,EAAE,OAAO,EAAE,CAAC;CACtC;AAED,sDAAsD;AACtD,MAAM,WAAW,gBAAgB;IAC7B,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAC9C,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;CACzC;AAED,MAAM,MAAM,iCAAiC,GAAG,oBAAoB,CAAC,aAAa,CAAC;AAEnF,MAAM,WAAW,gBAAgB;IAC7B,WAAW,CAAC,EAAE,oBAAoB,CAAC,aAAa,CAAC;IACjD,MAAM,CAAC,EAAE,sBAAsB,CAAC;IAChC,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC9B;AAED,yBAAiB,kBAAkB,CAAC;IAUhC,SAAsB,iBAAiB,CACnC,kBAAkB,EAAE,cAAc,EAClC,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,oBAAoB,CAAC,aAAa,EAClD,UAAU,CAAC,EAAE,sBAAsB,iBAyEtC;IAED,SAAsB,cAAc,CAAC,WAAW,EAAE,cAAc,EAAE,QAAQ,CAAC,EAAE,gBAAgB,oBAsG5F;CACJ"}
@@ -0,0 +1,196 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025-2026 Open Home Foundation
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { ImplementationError } from "@matter/general";
7
+ import {
8
+ Bytes,
9
+ FabricId,
10
+ FabricIndex,
11
+ isDeepEqual,
12
+ isObject,
13
+ Logger,
14
+ NodeId
15
+ } from "@matter/main";
16
+ import { DescriptorCluster } from "@matter/main/clusters";
17
+ import { CertificateAuthority, Fabric, FabricBuilder, Noc } from "@matter/main/protocol";
18
+ import { VendorId } from "@matter/main/types";
19
+ import { ClusterMap } from "../model/ModelMapper.js";
20
+ import { convertWebSocketTagBasedToMatter } from "../server/Converters.js";
21
+ const logger = Logger.get("LegacyDataInjector");
22
+ const BASE64_REGEX = /^([0-9a-z+/]{4})*(([0-9a-z+/]{2}==)|([0-9a-z+/]{3}=))?$/i;
23
+ const FEATUREMAP_ID = DescriptorCluster.attributes.featureMap.id.toString();
24
+ var LegacyDataInjector;
25
+ ((LegacyDataInjector2) => {
26
+ function isPrimitiveType(value) {
27
+ return typeof value === "number" || value === null || typeof value == "boolean" || typeof value == "string" && !BASE64_REGEX.test(value);
28
+ }
29
+ async function injectCredentials(credentialsStorage, crypto, credentialData, fabricData) {
30
+ const rootCertificateAuthority = new CertificateAuthority(crypto, credentialData);
31
+ for (const [key, value] of Object.entries(credentialData)) {
32
+ if (await credentialsStorage.has(key)) {
33
+ if (!isDeepEqual(await credentialsStorage.get(key), value)) {
34
+ continue;
35
+ }
36
+ logger.warn(`Overriding credential ${key} with new value!`);
37
+ }
38
+ await credentialsStorage.set(key, value);
39
+ }
40
+ if (fabricData === void 0) {
41
+ logger.warn("Credentials injected, but no fabric data provided. Skipping fabric initialization.");
42
+ return;
43
+ }
44
+ const {
45
+ fabricIndex,
46
+ fabricId,
47
+ nodeId,
48
+ rootNodeId,
49
+ rootCert,
50
+ intermediateCACert,
51
+ operationalCert,
52
+ rootVendorId,
53
+ rootPublicKey,
54
+ identityProtectionKey,
55
+ label
56
+ } = fabricData;
57
+ const tempFabric = await Fabric.create(crypto, {
58
+ fabricIndex: FabricIndex(fabricIndex),
59
+ fabricId: FabricId(fabricId),
60
+ nodeId: NodeId(nodeId),
61
+ rootNodeId: NodeId(rootNodeId),
62
+ rootCert,
63
+ intermediateCACert,
64
+ operationalCert,
65
+ rootVendorId: VendorId(rootVendorId),
66
+ rootPublicKey,
67
+ identityProtectionKey,
68
+ label,
69
+ keyPair: await crypto.createKeyPair()
70
+ // Just use a new keypair temporarily because chip data does not have it
71
+ });
72
+ if (await credentialsStorage.has("fabric")) {
73
+ const storedFabric = await credentialsStorage.get("fabric");
74
+ if (!Bytes.areEqual(storedFabric.rootPublicKey, tempFabric.rootPublicKey)) {
75
+ logger.warn("Existing fabric root public key changed. Rewriting from legacy data");
76
+ } else {
77
+ logger.info("Fabric root public key unchanged. Skipping rewrite.");
78
+ return;
79
+ }
80
+ }
81
+ const builder = await FabricBuilder.create(crypto);
82
+ builder.initializeFromFabricForUpdate(tempFabric);
83
+ const {
84
+ subject: { nodeId: certNodeId, fabricId: certFabricId }
85
+ } = Noc.fromTlv(tempFabric.operationalCert).cert;
86
+ if (certNodeId !== nodeId || certFabricId !== fabricId) {
87
+ throw new ImplementationError(`Cannot rotate NOC for fabric because root node ID changed`);
88
+ }
89
+ await builder.setOperationalCert(
90
+ await rootCertificateAuthority.generateNoc(builder.publicKey, certFabricId, certNodeId),
91
+ tempFabric.intermediateCACert
92
+ );
93
+ const rootFabric = await builder.build(tempFabric.fabricIndex);
94
+ await credentialsStorage.set("fabric", rootFabric.config);
95
+ }
96
+ LegacyDataInjector2.injectCredentials = injectCredentials;
97
+ async function injectNodeData(baseStorage, nodeData) {
98
+ const nodesListStorage = baseStorage.createContext("nodes");
99
+ if (nodeData === void 0) {
100
+ if (!await nodesListStorage.has("commissionedNodes")) {
101
+ await nodesListStorage.set("commissionedNodes", []);
102
+ }
103
+ return false;
104
+ }
105
+ const commissionedNodes = new Array();
106
+ let injectedNodes = 0;
107
+ for (const [nodeId, nodeDetails] of Object.entries(nodeData.nodes)) {
108
+ const nodeStorage = baseStorage.createContext(`node-${nodeId}`);
109
+ if (nodeId !== nodeDetails.node_id.toString()) {
110
+ logger.warn(`Node ID mismatch in node data: ${nodeId} != ${nodeDetails.node_id}`);
111
+ }
112
+ commissionedNodes.push([NodeId(BigInt(nodeId)), {}]);
113
+ let newNode = true;
114
+ logger.info(`Injecting node ${nodeId} into storage`);
115
+ const nodeWrites = new Array();
116
+ for (const [attributeKey, value] of Object.entries(nodeDetails.attributes)) {
117
+ let currentEndpointId;
118
+ let currentClusterId;
119
+ let endpointStorage;
120
+ let clusterStorage;
121
+ const [endpointId, clusterId, attributeId] = attributeKey.split("/");
122
+ if (currentEndpointId !== endpointId) {
123
+ endpointStorage = nodeStorage.createContext(endpointId);
124
+ currentEndpointId = endpointId;
125
+ currentClusterId = void 0;
126
+ }
127
+ if (currentClusterId !== clusterId) {
128
+ clusterStorage = endpointStorage.createContext(clusterId);
129
+ currentClusterId = clusterId;
130
+ if (newNode) {
131
+ if (await clusterStorage.has("__version__")) {
132
+ logger.info(`Node ${nodeId} already exists. Skipping injection.`);
133
+ break;
134
+ }
135
+ newNode = false;
136
+ injectedNodes++;
137
+ }
138
+ nodeWrites.push(clusterStorage.set("__version__", 1));
139
+ }
140
+ const clusterModel = ClusterMap[clusterId];
141
+ const model = clusterModel?.attributes?.[attributeId];
142
+ if (clusterModel === void 0 || model === void 0) {
143
+ if (attributeId === FEATUREMAP_ID) {
144
+ logger.debug(
145
+ `Node ${nodeId}: Attribute ${attributeKey}, unknown featuremap converted to empty featuremap`
146
+ );
147
+ nodeWrites.push(clusterStorage.set(attributeId, { value: {} }));
148
+ } else if (isPrimitiveType(value) || Array.isArray(value) && value.every(isPrimitiveType)) {
149
+ logger.debug(
150
+ `Node ${nodeId}: Attribute ${attributeKey}, unknown primary type converted generically`,
151
+ value
152
+ );
153
+ nodeWrites.push(clusterStorage.set(attributeId, { value }));
154
+ } else {
155
+ logger.info(
156
+ `Node ${nodeId}: Attribute ${attributeKey}, not found in and unclear value. Skipping injection.`,
157
+ value
158
+ );
159
+ }
160
+ } else {
161
+ const convertedValue = isObject(value) && ("TLVValue" in value || "Reason" in value) ? void 0 : convertWebSocketTagBasedToMatter(value, model, clusterModel.model);
162
+ if (convertedValue !== void 0) {
163
+ logger.debug(
164
+ `Node ${nodeId}: Converted attribute ${attributeKey}:`,
165
+ value,
166
+ "->",
167
+ convertedValue
168
+ );
169
+ nodeWrites.push(
170
+ clusterStorage.set(attributeId, { value: convertedValue })
171
+ );
172
+ } else {
173
+ logger.info(`Attribute ${attributeKey} could not be converted. Skipping injection.`);
174
+ }
175
+ }
176
+ }
177
+ await Promise.allSettled(nodeWrites);
178
+ nodeWrites.length = 0;
179
+ }
180
+ if (injectedNodes > 0) {
181
+ const knownNodes = await nodesListStorage.get("commissionedNodes", []);
182
+ for (const [nodeId] of commissionedNodes) {
183
+ if (!knownNodes.find(([knownNodeId]) => knownNodeId === nodeId)) {
184
+ knownNodes.push([nodeId, {}]);
185
+ }
186
+ }
187
+ await nodesListStorage.set("commissionedNodes", knownNodes);
188
+ }
189
+ return injectedNodes > 0;
190
+ }
191
+ LegacyDataInjector2.injectNodeData = injectNodeData;
192
+ })(LegacyDataInjector || (LegacyDataInjector = {}));
193
+ export {
194
+ LegacyDataInjector
195
+ };
196
+ //# sourceMappingURL=LegacyDataInjector.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/controller/LegacyDataInjector.ts"],
4
+ "mappings": "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",
5
+ "names": ["LegacyDataInjector"]
6
+ }
@@ -0,0 +1,59 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025-2026 Open Home Foundation
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { SharedEnvironmentServices, Timestamp } from "@matter/general";
7
+ import { Bytes, Crypto, Environment } from "@matter/main";
8
+ import { DclCertificateService, DclVendorInfoService, VendorInfo } from "@matter/main/protocol";
9
+ import { ConfigStorage } from "../server/ConfigStorage.js";
10
+ import { ControllerCommandHandler } from "./ControllerCommandHandler.js";
11
+ import { LegacyServerData } from "./LegacyDataInjector.js";
12
+ export declare function computeCompressedNodeId(crypto: Crypto, fabricId: number | bigint, caKey: Bytes): Promise<string>;
13
+ export interface MatterControllerOptions {
14
+ enableTestNetDcl?: boolean;
15
+ disableOtaProvider?: boolean;
16
+ }
17
+ export declare class MatterController {
18
+ #private;
19
+ static create(environment: Environment, config: ConfigStorage, options: MatterControllerOptions, legacyData?: LegacyServerData): Promise<MatterController>;
20
+ constructor(environment: Environment, config: ConfigStorage, options: MatterControllerOptions);
21
+ protected initialize(vendorId?: number, fabricId?: number | bigint, legacyCommissionedDates?: Map<string, Timestamp>): Promise<void>;
22
+ get commandHandler(): ControllerCommandHandler;
23
+ /**
24
+ * Get the shared environment services instance.
25
+ */
26
+ get services(): SharedEnvironmentServices;
27
+ /**
28
+ * Get the DCL vendor info service instance.
29
+ * Lazily initializes the service if not already present.
30
+ */
31
+ get vendorInfoService(): DclVendorInfoService;
32
+ /**
33
+ * Get the DCL certificate service instance
34
+ * Lazily initializes the service if not already present.
35
+ */
36
+ get certificateService(): DclCertificateService;
37
+ /**
38
+ * Get vendor information by vendor ID.
39
+ * Returns undefined if the vendor is not found.
40
+ */
41
+ getVendorInfo(vendorId: number): Promise<VendorInfo | undefined>;
42
+ /**
43
+ * Get all vendor information from the DCL service.
44
+ */
45
+ getAllVendors(): Promise<ReadonlyMap<number, VendorInfo>>;
46
+ injectCommissionedDates(): Promise<void>;
47
+ stop(): Promise<void>;
48
+ /**
49
+ * Store an OTA image file from a file path.
50
+ * @param filePath - Path to the OTA file
51
+ * @returns true if stored successfully
52
+ */
53
+ storeOtaImageFromFile(filePath: string): Promise<boolean>;
54
+ /**
55
+ * Close the services when shutting down.
56
+ */
57
+ closeServices(): Promise<void>;
58
+ }
59
+ //# sourceMappingURL=MatterController.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MatterController.d.ts","sourceRoot":"","sources":["../../../src/controller/MatterController.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,yBAAyB,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,EACH,KAAK,EAEL,MAAM,EACN,WAAW,EAMd,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,qBAAqB,EAAuB,oBAAoB,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAIrH,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAsB,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAI/E,wBAAsB,uBAAuB,CACzC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GAAG,MAAM,EACzB,KAAK,EAAE,KAAK,GACb,OAAO,CAAC,MAAM,CAAC,CAEjB;AAED,MAAM,WAAW,uBAAuB;IACpC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAChC;AAKD,qBAAa,gBAAgB;;WAUZ,MAAM,CACf,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,aAAa,EACrB,OAAO,EAAE,uBAAuB,EAChC,UAAU,CAAC,EAAE,gBAAgB;gBAgCrB,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,uBAAuB;cAO7E,UAAU,CACtB,QAAQ,CAAC,EAAE,MAAM,EACjB,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,EAC1B,uBAAuB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC;IAsBpD,IAAI,cAAc,6BAuBjB;IAED;;OAEG;IACH,IAAI,QAAQ,IAAI,yBAAyB,CAKxC;IAED;;;OAGG;IACH,IAAI,iBAAiB,IAAI,oBAAoB,CAK5C;IAED;;;OAGG;IACH,IAAI,kBAAkB,0BAKrB;IAED;;;OAGG;IACG,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;IAKtE;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAKzD,uBAAuB;IAmBvB,IAAI;IAiBV;;;;OAIG;IACG,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAqB/D;;OAEG;IACG,aAAa;CAGtB"}
@@ -0,0 +1,212 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025-2026 Open Home Foundation
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { Timestamp } from "@matter/general";
7
+ import {
8
+ CommissioningClient,
9
+ Crypto,
10
+ FabricId,
11
+ GlobalFabricId,
12
+ Logger,
13
+ NodeId,
14
+ SoftwareUpdateManager
15
+ } from "@matter/main";
16
+ import { DclCertificateService, DclOtaUpdateService, DclVendorInfoService } from "@matter/main/protocol";
17
+ import { VendorId } from "@matter/main/types";
18
+ import { CommissioningController } from "@project-chip/matter.js";
19
+ import { Readable } from "node:stream";
20
+ import { ControllerCommandHandler } from "./ControllerCommandHandler.js";
21
+ import { LegacyDataInjector } from "./LegacyDataInjector.js";
22
+ const logger = Logger.get("MatterController");
23
+ async function computeCompressedNodeId(crypto, fabricId, caKey) {
24
+ return (await GlobalFabricId.compute(crypto, FabricId(fabricId), caKey)).toString();
25
+ }
26
+ const MATTER_SERVER_ID = "server";
27
+ class MatterController {
28
+ #env;
29
+ #services;
30
+ #controllerInstance;
31
+ #commandHandler;
32
+ #config;
33
+ #legacyCommissionedDates;
34
+ #enableTestNetDcl = false;
35
+ #disableOtaProvider = true;
36
+ static async create(environment, config, options, legacyData) {
37
+ const instance = new MatterController(environment, config, options);
38
+ const commissionedDates = /* @__PURE__ */ new Map();
39
+ if (legacyData !== void 0) {
40
+ const crypto = environment.get(Crypto);
41
+ const baseStorage = await config.service.open(MATTER_SERVER_ID);
42
+ if (legacyData.credentials && legacyData.fabricId) {
43
+ await LegacyDataInjector.injectCredentials(
44
+ baseStorage.createContext("credentials"),
45
+ crypto,
46
+ legacyData.credentials,
47
+ legacyData.fabric
48
+ );
49
+ }
50
+ if (await LegacyDataInjector.injectNodeData(baseStorage, legacyData.nodeData) && legacyData.nodeData !== void 0) {
51
+ for (const [nodeIdStr, data] of Object.entries(legacyData.nodeData.nodes)) {
52
+ const { date_commissioned: commissionedAt } = data;
53
+ commissionedDates.set(nodeIdStr, Timestamp(new Date(commissionedAt).getTime()));
54
+ }
55
+ }
56
+ await baseStorage.close();
57
+ }
58
+ await instance.initialize(legacyData?.vendorId, legacyData?.fabricId, commissionedDates);
59
+ return instance;
60
+ }
61
+ constructor(environment, config, options) {
62
+ this.#env = environment;
63
+ this.#config = config;
64
+ this.#enableTestNetDcl = options.enableTestNetDcl ?? this.#enableTestNetDcl;
65
+ this.#disableOtaProvider = options.disableOtaProvider ?? this.#disableOtaProvider;
66
+ }
67
+ async initialize(vendorId, fabricId, legacyCommissionedDates) {
68
+ this.#legacyCommissionedDates = legacyCommissionedDates?.size ? legacyCommissionedDates : void 0;
69
+ this.#controllerInstance = new CommissioningController({
70
+ environment: {
71
+ environment: this.#env,
72
+ id: MATTER_SERVER_ID
73
+ },
74
+ autoConnect: false,
75
+ // Do not auto-connect to the commissioned nodes
76
+ adminFabricLabel: this.#config.fabricLabel,
77
+ adminVendorId: vendorId !== void 0 ? VendorId(vendorId) : void 0,
78
+ adminFabricId: fabricId !== void 0 ? FabricId(fabricId) : void 0,
79
+ enableOtaProvider: !this.#disableOtaProvider
80
+ });
81
+ this.vendorInfoService;
82
+ this.certificateService;
83
+ }
84
+ get commandHandler() {
85
+ if (this.#controllerInstance === void 0) {
86
+ throw new Error("Controller not initialized");
87
+ }
88
+ if (this.#commandHandler === void 0) {
89
+ this.#commandHandler = new ControllerCommandHandler(
90
+ this.#controllerInstance,
91
+ this.#env.vars.get("ble.enable", false),
92
+ !this.#disableOtaProvider
93
+ );
94
+ this.#commandHandler.events.started.once(async () => {
95
+ if (this.#legacyCommissionedDates !== void 0) {
96
+ await this.injectCommissionedDates();
97
+ }
98
+ if (!this.#disableOtaProvider && this.#enableTestNetDcl) {
99
+ await this.#enableTestOtaImages();
100
+ }
101
+ });
102
+ }
103
+ return this.#commandHandler;
104
+ }
105
+ /**
106
+ * Get the shared environment services instance.
107
+ */
108
+ get services() {
109
+ if (this.#services === void 0) {
110
+ this.#services = this.#env.asDependent();
111
+ }
112
+ return this.#services;
113
+ }
114
+ /**
115
+ * Get the DCL vendor info service instance.
116
+ * Lazily initializes the service if not already present.
117
+ */
118
+ get vendorInfoService() {
119
+ if (!this.#env.has(DclVendorInfoService)) {
120
+ new DclVendorInfoService(this.#env);
121
+ }
122
+ return this.services.get(DclVendorInfoService);
123
+ }
124
+ /**
125
+ * Get the DCL certificate service instance
126
+ * Lazily initializes the service if not already present.
127
+ */
128
+ get certificateService() {
129
+ if (!this.#env.has(DclCertificateService)) {
130
+ new DclCertificateService(this.#env, { fetchTestCertificates: this.#enableTestNetDcl });
131
+ }
132
+ return this.services.get(DclCertificateService);
133
+ }
134
+ /**
135
+ * Get vendor information by vendor ID.
136
+ * Returns undefined if the vendor is not found.
137
+ */
138
+ async getVendorInfo(vendorId) {
139
+ await this.vendorInfoService.construction;
140
+ return this.vendorInfoService.infoFor(vendorId);
141
+ }
142
+ /**
143
+ * Get all vendor information from the DCL service.
144
+ */
145
+ async getAllVendors() {
146
+ await this.vendorInfoService.construction;
147
+ return this.vendorInfoService.vendors;
148
+ }
149
+ async injectCommissionedDates() {
150
+ if (this.#controllerInstance === void 0 || this.#legacyCommissionedDates === void 0) {
151
+ return;
152
+ }
153
+ for (const [nodeIdStr, commissionedAt] of this.#legacyCommissionedDates) {
154
+ try {
155
+ const peerAddress = this.#controllerInstance.fabric.addressOf(NodeId(BigInt(nodeIdStr)));
156
+ const node = await this.#controllerInstance.node.peers.forAddress(peerAddress);
157
+ const commissioningState = node.maybeStateOf(CommissioningClient);
158
+ if (commissioningState !== void 0 && commissioningState.commissionedAt === void 0) {
159
+ await node.setStateOf(CommissioningClient, { commissionedAt });
160
+ logger.info(`Injected commissioned date for node ${nodeIdStr}`);
161
+ }
162
+ } catch (error) {
163
+ logger.warn(`Error injecting commissioned date for node ${nodeIdStr}`, error);
164
+ }
165
+ }
166
+ }
167
+ async stop() {
168
+ await this.#commandHandler?.close();
169
+ await this.#services?.close();
170
+ }
171
+ /**
172
+ * Enable test OTA images (test-net DCL).
173
+ * Must be called after the controller is started.
174
+ */
175
+ async #enableTestOtaImages() {
176
+ if (this.#controllerInstance === void 0) {
177
+ throw new Error("Controller not initialized");
178
+ }
179
+ await this.#controllerInstance.otaProvider.setStateOf(SoftwareUpdateManager, { allowTestOtaImages: true });
180
+ logger.info("Enabled test OTA images (test-net DCL)");
181
+ }
182
+ /**
183
+ * Store an OTA image file from a file path.
184
+ * @param filePath - Path to the OTA file
185
+ * @returns true if stored successfully
186
+ */
187
+ async storeOtaImageFromFile(filePath) {
188
+ const { createReadStream } = await import("node:fs");
189
+ const { pathToFileURL } = await import("node:url");
190
+ const otaService = this.services.get(DclOtaUpdateService);
191
+ const fileUrl = pathToFileURL(filePath).href;
192
+ const infoStream = Readable.toWeb(createReadStream(filePath));
193
+ const updateInfo = await otaService.updateInfoFromStream(infoStream, fileUrl);
194
+ logger.info(
195
+ `Storing OTA image from ${filePath}: vendorId=0x${updateInfo.vid.toString(16)}, productId=0x${updateInfo.pid.toString(16)}, version=${updateInfo.softwareVersion} (${updateInfo.softwareVersionString})`
196
+ );
197
+ const storeStream = Readable.toWeb(createReadStream(filePath));
198
+ await otaService.store(storeStream, updateInfo, false);
199
+ return true;
200
+ }
201
+ /**
202
+ * Close the services when shutting down.
203
+ */
204
+ async closeServices() {
205
+ await this.#services?.close();
206
+ }
207
+ }
208
+ export {
209
+ MatterController,
210
+ computeCompressedNodeId
211
+ };
212
+ //# sourceMappingURL=MatterController.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/controller/MatterController.ts"],
4
+ "mappings": "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",
5
+ "names": []
6
+ }