libp2p-mesh 2026.6.26 → 2026.6.28
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/README.md +25 -23
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/src/mesh.d.ts +5 -0
- package/dist/src/mesh.js +13 -16
- package/dist/src/mesh.js.map +1 -1
- package/dist/src/setup-config.d.ts +14 -1
- package/dist/src/setup-config.js +29 -11
- package/dist/src/setup-config.js.map +1 -1
- package/dist/src/setup-wizard.d.ts +1 -1
- package/dist/src/setup-wizard.js +119 -75
- package/dist/src/setup-wizard.js.map +1 -1
- package/dist/src/types.d.ts +3 -1
- package/index.ts +3 -2
- package/package.json +1 -1
- package/src/mesh.ts +18 -14
- package/src/setup-config.ts +42 -13
- package/src/setup-wizard.ts +159 -88
- package/src/types.ts +3 -1
package/dist/src/setup-wizard.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { addInboundTarget, applyPluginConfig,
|
|
1
|
+
import { addInboundTarget, applyPluginConfig, buildNetworkEntryConfig, buildPublicRelayNodeConfig, disableInboundDelivery, getLibp2pMeshConfig, listConfiguredChannels, planInboundTargetSync, migrateLegacyInboundConfig, setInboundTargets, } from "./setup-config.js";
|
|
2
2
|
const MANUAL_CHANNEL_VALUE = "__manual__";
|
|
3
3
|
const CANCELLED_MESSAGE = "Configuration cancelled. No changes were written.";
|
|
4
4
|
const APPLIED_MESSAGE = "Config updated.\n\nRestart the gateway to apply changes:\nopenclaw gateway restart";
|
|
@@ -49,13 +49,13 @@ async function runFirstConfigFlow(options) {
|
|
|
49
49
|
if (!shouldContinue) {
|
|
50
50
|
return undefined;
|
|
51
51
|
}
|
|
52
|
-
|
|
53
|
-
let pluginConfig = await
|
|
54
|
-
const inboundChoice = await options.prompter.select("Configure
|
|
55
|
-
{ label: "Sync from
|
|
56
|
-
{ label: "Add
|
|
57
|
-
{ label: "
|
|
58
|
-
{ label: "
|
|
52
|
+
options.prompter.print("Network discovery is enabled automatically.\nmDNS, DHT, NAT traversal, relay transport, and hole punching are enabled by default.");
|
|
53
|
+
let pluginConfig = await promptForNetworkEntryConfig({}, options.prompter, { keepExistingOnEmpty: false });
|
|
54
|
+
const inboundChoice = await options.prompter.select("Configure where received P2P messages should appear?", [
|
|
55
|
+
{ label: "Sync from existing channels", value: "sync-from-channels" },
|
|
56
|
+
{ label: "Add a target manually", value: "add-targets" },
|
|
57
|
+
{ label: "Do not receive P2P messages in local channels", value: "disable-inbound" },
|
|
58
|
+
{ label: "Leave unchanged for now", value: "skip-inbound" },
|
|
59
59
|
]);
|
|
60
60
|
switch (inboundChoice) {
|
|
61
61
|
case "sync-from-channels":
|
|
@@ -74,32 +74,25 @@ async function runFirstConfigFlow(options) {
|
|
|
74
74
|
}
|
|
75
75
|
async function runExistingConfigFlow(existingConfig, options) {
|
|
76
76
|
let pluginConfig = cloneMeshConfig(existingConfig) ?? {};
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
pluginConfig = await promptForExistingInboundConfig(pluginConfig, options);
|
|
97
|
-
break;
|
|
98
|
-
case "preview-apply":
|
|
99
|
-
return pluginConfig;
|
|
100
|
-
case "cancel":
|
|
101
|
-
return undefined;
|
|
102
|
-
}
|
|
77
|
+
options.prompter.print(formatCurrentConfig(pluginConfig));
|
|
78
|
+
const editChoice = await options.prompter.select("What do you want to edit?", [
|
|
79
|
+
{ label: "Sync inbound targets from channels", value: "sync-from-channels" },
|
|
80
|
+
{ label: "Network entry addresses", value: "network-entry-addresses" },
|
|
81
|
+
{ label: "Public relay-node settings", value: "public-relay-node" },
|
|
82
|
+
{ label: "Where received P2P messages appear", value: "inbound-targets" },
|
|
83
|
+
{ label: "Cancel", value: "cancel" },
|
|
84
|
+
]);
|
|
85
|
+
switch (editChoice) {
|
|
86
|
+
case "sync-from-channels":
|
|
87
|
+
return syncInboundTargetsFromConfiguredChannels(pluginConfig, options);
|
|
88
|
+
case "network-entry-addresses":
|
|
89
|
+
return promptForNetworkEntryConfig(pluginConfig, options.prompter, { keepExistingOnEmpty: true });
|
|
90
|
+
case "public-relay-node":
|
|
91
|
+
return promptForPublicRelayNodeConfig(pluginConfig, options.prompter);
|
|
92
|
+
case "inbound-targets":
|
|
93
|
+
return promptForExistingInboundConfig(pluginConfig, options);
|
|
94
|
+
case "cancel":
|
|
95
|
+
return undefined;
|
|
103
96
|
}
|
|
104
97
|
}
|
|
105
98
|
async function promptForExistingInboundConfig(pluginConfig, options) {
|
|
@@ -133,64 +126,112 @@ async function syncInboundTargetsFromConfiguredChannels(pluginConfig, options) {
|
|
|
133
126
|
options.prompter.print("All configured channels already have inbound targets.");
|
|
134
127
|
return setInboundTargets(pluginConfig, plan.targets);
|
|
135
128
|
}
|
|
129
|
+
options.prompter.print(formatInboundSyncPlan(plan));
|
|
136
130
|
let targets = plan.targets.map((target) => ({ ...target }));
|
|
131
|
+
const added = [];
|
|
132
|
+
const skipped = [];
|
|
137
133
|
for (const channel of plan.missingChannels) {
|
|
138
|
-
const target = await options.prompter.input(
|
|
134
|
+
const target = (await options.prompter.input(`${targetPromptForChannel(channel)} (leave empty to skip)`, { required: false })).trim();
|
|
135
|
+
if (!target) {
|
|
136
|
+
skipped.push(channel);
|
|
137
|
+
continue;
|
|
138
|
+
}
|
|
139
139
|
const addResult = addInboundTarget(targets, { channel, target });
|
|
140
140
|
if (!addResult.ok) {
|
|
141
141
|
options.prompter.print(addResult.error);
|
|
142
142
|
continue;
|
|
143
143
|
}
|
|
144
144
|
targets = addResult.targets;
|
|
145
|
+
added.push(addResult.added);
|
|
145
146
|
}
|
|
147
|
+
options.prompter.print(formatInboundSyncResult({ added, skipped }));
|
|
146
148
|
return setInboundTargets(pluginConfig, targets);
|
|
147
149
|
}
|
|
150
|
+
function formatInboundSyncPlan(plan) {
|
|
151
|
+
const alreadyConfigured = plan.targets.length > 0 ? plan.targets.map((target) => ` - ${formatInboundTargetLine(target)}`) : [" none"];
|
|
152
|
+
const missingChannels = plan.missingChannels.length > 0 ? plan.missingChannels.map((channel) => ` - ${channel}`) : [" none"];
|
|
153
|
+
return [
|
|
154
|
+
"Already configured:",
|
|
155
|
+
...alreadyConfigured,
|
|
156
|
+
"",
|
|
157
|
+
"Channels without inbound targets:",
|
|
158
|
+
...missingChannels,
|
|
159
|
+
"",
|
|
160
|
+
"Leave a target empty to skip that channel.",
|
|
161
|
+
].join("\n");
|
|
162
|
+
}
|
|
163
|
+
function formatInboundSyncResult(result) {
|
|
164
|
+
const lines = [];
|
|
165
|
+
if (result.added.length > 0) {
|
|
166
|
+
lines.push("Added:", ...result.added.map((target) => ` - ${formatInboundTargetLine(target)}`));
|
|
167
|
+
}
|
|
168
|
+
else {
|
|
169
|
+
lines.push("No inbound targets were added.");
|
|
170
|
+
}
|
|
171
|
+
if (result.skipped.length > 0) {
|
|
172
|
+
lines.push("", "Skipped:", ...result.skipped.map((channel) => ` - ${channel}`));
|
|
173
|
+
}
|
|
174
|
+
return lines.join("\n");
|
|
175
|
+
}
|
|
176
|
+
function formatInboundTargetLine(target) {
|
|
177
|
+
return `${target.id ?? "(unnamed)"} ${target.channel} / ${target.target}`;
|
|
178
|
+
}
|
|
148
179
|
function hasLegacyOnlyInboundConfig(pluginConfig) {
|
|
149
180
|
return Boolean(pluginConfig.inboundChannel && pluginConfig.inboundTarget && !Array.isArray(pluginConfig.inboundTargets));
|
|
150
181
|
}
|
|
151
|
-
async function
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
bootstrapList: await promptForAddressList(prompter, "Bootstrap multiaddr", "Add another bootstrap?"),
|
|
165
|
-
relayList: await promptForOptionalAddressList(prompter, "Relay multiaddr", "Add another relay?"),
|
|
166
|
-
},
|
|
167
|
-
});
|
|
168
|
-
case "relay-node":
|
|
169
|
-
return buildNetworkConfig("relay-node", {
|
|
170
|
-
relayNode: {
|
|
171
|
-
listenAddrs: [await prompter.input("Listen address", { required: true })],
|
|
172
|
-
announceAddrs: [await prompter.input("Public announce address", { required: true })],
|
|
173
|
-
},
|
|
174
|
-
});
|
|
175
|
-
default:
|
|
176
|
-
return buildNetworkConfig(mode);
|
|
182
|
+
async function promptForNetworkEntryConfig(existing, prompter, options) {
|
|
183
|
+
const bootstrapList = await promptForOptionalAddressList(prompter, options.keepExistingOnEmpty
|
|
184
|
+
? "Bootstrap multiaddr (optional, leave empty to keep unchanged)"
|
|
185
|
+
: "Bootstrap multiaddr (optional, leave empty to skip)", "Add another bootstrap?");
|
|
186
|
+
const relayList = await promptForOptionalAddressList(prompter, options.keepExistingOnEmpty
|
|
187
|
+
? "Relay multiaddr (optional, leave empty to keep unchanged)"
|
|
188
|
+
: "Relay multiaddr (optional, leave empty to skip)", "Add another relay?");
|
|
189
|
+
if (options.keepExistingOnEmpty) {
|
|
190
|
+
return {
|
|
191
|
+
...existing,
|
|
192
|
+
...(bootstrapList.length > 0 ? { bootstrapList } : {}),
|
|
193
|
+
...(relayList.length > 0 ? { relayList } : {}),
|
|
194
|
+
};
|
|
177
195
|
}
|
|
196
|
+
return {
|
|
197
|
+
...existing,
|
|
198
|
+
...buildNetworkEntryConfig({ bootstrapList, relayList }),
|
|
199
|
+
};
|
|
178
200
|
}
|
|
179
|
-
async function
|
|
180
|
-
const
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
201
|
+
async function promptForPublicRelayNodeConfig(existing, prompter) {
|
|
202
|
+
const enabled = await prompter.confirm("Enable this machine as a public relay node?", false);
|
|
203
|
+
const relayConfig = enabled
|
|
204
|
+
? buildPublicRelayNodeConfig({
|
|
205
|
+
enabled: true,
|
|
206
|
+
listenAddrs: [
|
|
207
|
+
await prompter.input("Listen address", {
|
|
208
|
+
defaultValue: "/ip4/0.0.0.0/tcp/4001",
|
|
209
|
+
required: true,
|
|
210
|
+
}),
|
|
211
|
+
],
|
|
212
|
+
announceAddrs: await promptForOptionalAddressList(prompter, "Public announce address (optional, leave empty to skip)", "Add another public announce address?"),
|
|
213
|
+
})
|
|
214
|
+
: buildPublicRelayNodeConfig({ enabled: false });
|
|
215
|
+
const { listenAddrs: _listenAddrs, announceAddrs: _announceAddrs, enableCircuitRelayServer: _enableCircuitRelayServer, ...preserved } = existing;
|
|
216
|
+
return {
|
|
217
|
+
...preserved,
|
|
218
|
+
enableCircuitRelayServer: relayConfig.enableCircuitRelayServer,
|
|
219
|
+
...(relayConfig.listenAddrs ? { listenAddrs: relayConfig.listenAddrs } : {}),
|
|
220
|
+
...(relayConfig.announceAddrs ? { announceAddrs: relayConfig.announceAddrs } : {}),
|
|
221
|
+
};
|
|
185
222
|
}
|
|
186
223
|
async function promptForOptionalAddressList(prompter, message, addAnotherMessage) {
|
|
187
|
-
const firstAddress = await prompter.input(message);
|
|
224
|
+
const firstAddress = (await prompter.input(message, { required: false })).trim();
|
|
188
225
|
if (!firstAddress) {
|
|
189
226
|
return [];
|
|
190
227
|
}
|
|
191
228
|
const addresses = [firstAddress];
|
|
192
229
|
while (await prompter.confirm(addAnotherMessage, false)) {
|
|
193
|
-
|
|
230
|
+
let nextAddress = "";
|
|
231
|
+
while (!nextAddress) {
|
|
232
|
+
nextAddress = (await prompter.input(message, { required: true })).trim();
|
|
233
|
+
}
|
|
234
|
+
addresses.push(nextAddress);
|
|
194
235
|
}
|
|
195
236
|
return addresses;
|
|
196
237
|
}
|
|
@@ -199,12 +240,12 @@ async function promptForInboundTargets(existingTargets, options, promptOptions)
|
|
|
199
240
|
let action = promptOptions?.promptInitialAction
|
|
200
241
|
? await options.prompter.select("What do you want to do?", [
|
|
201
242
|
{ label: "Add target", value: "add-target" },
|
|
202
|
-
{ label: "
|
|
243
|
+
{ label: "Finish editing", value: "finish-targets" },
|
|
203
244
|
])
|
|
204
245
|
: "add-target";
|
|
205
246
|
while (action === "add-target") {
|
|
206
247
|
const channel = await promptForChannel(options);
|
|
207
|
-
const target = await options.prompter.input(
|
|
248
|
+
const target = await options.prompter.input(targetPromptForChannel(channel), { required: true });
|
|
208
249
|
const addResult = addInboundTarget(targets, { channel, target });
|
|
209
250
|
if (addResult.ok) {
|
|
210
251
|
targets = addResult.targets;
|
|
@@ -215,7 +256,7 @@ async function promptForInboundTargets(existingTargets, options, promptOptions)
|
|
|
215
256
|
}
|
|
216
257
|
action = await options.prompter.select("Add another target?", [
|
|
217
258
|
{ label: "Add another", value: "add-target" },
|
|
218
|
-
{ label: "Finish
|
|
259
|
+
{ label: "Finish editing", value: "finish-targets" },
|
|
219
260
|
]);
|
|
220
261
|
}
|
|
221
262
|
return targets;
|
|
@@ -228,7 +269,7 @@ async function promptForInboundTargetEdits(existingTargets, options) {
|
|
|
228
269
|
{ label: "Edit target", value: "edit-target" },
|
|
229
270
|
{ label: "Remove target", value: "remove-target" },
|
|
230
271
|
{ label: "Disable inbound delivery", value: "disable-inbound" },
|
|
231
|
-
{ label: "
|
|
272
|
+
{ label: "Finish editing", value: "finish-targets" },
|
|
232
273
|
]);
|
|
233
274
|
switch (action) {
|
|
234
275
|
case "add-target":
|
|
@@ -249,7 +290,7 @@ async function promptForInboundTargetEdits(existingTargets, options) {
|
|
|
249
290
|
}
|
|
250
291
|
async function promptForOneInboundTarget(targets, options) {
|
|
251
292
|
const channel = await promptForChannel(options);
|
|
252
|
-
const target = await options.prompter.input(
|
|
293
|
+
const target = await options.prompter.input(targetPromptForChannel(channel), { required: true });
|
|
253
294
|
const addResult = addInboundTarget(targets, { channel, target });
|
|
254
295
|
if (addResult.ok) {
|
|
255
296
|
return addResult.targets;
|
|
@@ -264,7 +305,7 @@ async function promptForInboundTargetEdit(targets, options) {
|
|
|
264
305
|
}
|
|
265
306
|
const selectedIndex = await selectInboundTargetIndex(options.prompter, "Target to edit", targets);
|
|
266
307
|
const channel = await promptForChannel(options);
|
|
267
|
-
const target = await options.prompter.input(
|
|
308
|
+
const target = await options.prompter.input(targetPromptForChannel(channel), { required: true });
|
|
268
309
|
const duplicate = targets.some((existingTarget, index) => index !== selectedIndex && existingTarget.channel === channel && existingTarget.target === target);
|
|
269
310
|
if (duplicate) {
|
|
270
311
|
options.prompter.print(`inbound target already exists: ${channel} / ${target}`);
|
|
@@ -316,6 +357,9 @@ async function promptForChannel(options) {
|
|
|
316
357
|
}
|
|
317
358
|
return channel;
|
|
318
359
|
}
|
|
360
|
+
function targetPromptForChannel(channel) {
|
|
361
|
+
return `Target for ${channel}`;
|
|
362
|
+
}
|
|
319
363
|
function formatCurrentConfig(pluginConfig) {
|
|
320
364
|
const targets = pluginConfig.inboundTargets ?? [];
|
|
321
365
|
const targetLines = targets.length > 0
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup-wizard.js","sourceRoot":"","sources":["../../src/setup-wizard.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"setup-wizard.js","sourceRoot":"","sources":["../../src/setup-wizard.ts"],"names":[],"mappings":"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"}
|
package/dist/src/types.d.ts
CHANGED
|
@@ -253,7 +253,9 @@ export interface MeshConfig {
|
|
|
253
253
|
enableWebSocket?: boolean;
|
|
254
254
|
peerIdPath?: string;
|
|
255
255
|
instanceName?: string;
|
|
256
|
-
/** Enable
|
|
256
|
+
/** Enable mDNS LAN peer discovery (default: true) */
|
|
257
|
+
enableMDNS?: boolean;
|
|
258
|
+
/** Enable DHT for WAN peer discovery and pubkey registry (default: true) */
|
|
257
259
|
enableDHT?: boolean;
|
|
258
260
|
/**
|
|
259
261
|
* Master switch for the NAT traversal stack. When `false` none of the
|
package/index.ts
CHANGED
|
@@ -34,11 +34,12 @@ function createLibp2pMeshConfigSchema(): OpenClawPluginConfigSchema {
|
|
|
34
34
|
type: "string",
|
|
35
35
|
enum: ["mdns", "bootstrap", "dht"],
|
|
36
36
|
default: "mdns",
|
|
37
|
+
description: "Legacy discovery hint. Runtime now composes mDNS, DHT, and optional bootstrap entries automatically.",
|
|
37
38
|
},
|
|
38
39
|
bootstrapList: {
|
|
39
40
|
type: "array",
|
|
40
41
|
items: { type: "string" },
|
|
41
|
-
description: "
|
|
42
|
+
description: "Optional static bootstrap multiaddrs. Non-empty values add bootstrap discovery without disabling mDNS or DHT.",
|
|
42
43
|
},
|
|
43
44
|
meshTopic: {
|
|
44
45
|
type: "string",
|
|
@@ -55,7 +56,7 @@ function createLibp2pMeshConfigSchema(): OpenClawPluginConfigSchema {
|
|
|
55
56
|
enableDHT: {
|
|
56
57
|
type: "boolean",
|
|
57
58
|
default: true,
|
|
58
|
-
description: "Enable DHT for WAN peer discovery and pubkey registry. Default true
|
|
59
|
+
description: "Enable DHT for WAN peer discovery and pubkey registry. Default true; can be explicitly disabled.",
|
|
59
60
|
},
|
|
60
61
|
instanceName: {
|
|
61
62
|
type: "string",
|
package/package.json
CHANGED
package/src/mesh.ts
CHANGED
|
@@ -70,6 +70,18 @@ async function loadOrCreatePeerId(customPath?: string): Promise<ReturnType<typeo
|
|
|
70
70
|
}
|
|
71
71
|
}
|
|
72
72
|
|
|
73
|
+
export function planPeerDiscovery(config: MeshConfig): {
|
|
74
|
+
useMDNS: boolean;
|
|
75
|
+
bootstrapList: string[];
|
|
76
|
+
enableDHT: boolean;
|
|
77
|
+
} {
|
|
78
|
+
return {
|
|
79
|
+
useMDNS: config.enableMDNS !== false,
|
|
80
|
+
bootstrapList: config.bootstrapList ?? [],
|
|
81
|
+
enableDHT: config.enableDHT !== false,
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
|
|
73
85
|
export function createMeshNetwork(options: {
|
|
74
86
|
config?: MeshConfig;
|
|
75
87
|
logger?: { info?: (msg: string) => void; debug?: (msg: string) => void; warn?: (msg: string) => void; error?: (msg: string) => void };
|
|
@@ -122,29 +134,21 @@ export function createMeshNetwork(options: {
|
|
|
122
134
|
}
|
|
123
135
|
|
|
124
136
|
// Peer discovery: mDNS for LAN, bootstrap for WAN entry points
|
|
137
|
+
const discoveryPlan = planPeerDiscovery(config);
|
|
125
138
|
const peerDiscovery: any[] = [];
|
|
126
|
-
const discoveryMechanism = config.discovery ?? "mdns";
|
|
127
139
|
|
|
128
|
-
if (
|
|
140
|
+
if (discoveryPlan.useMDNS) {
|
|
129
141
|
peerDiscovery.push(mdns({ interval: 1000 }));
|
|
130
142
|
logger?.info?.("[libp2p-mesh] Using mDNS discovery (LAN)");
|
|
131
143
|
}
|
|
132
144
|
|
|
133
|
-
if (
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
peerDiscovery.push(bootstrap({ list: bootstrapList }));
|
|
137
|
-
logger?.info?.(`[libp2p-mesh] Using bootstrap discovery (${bootstrapList.length} node(s))`);
|
|
138
|
-
} else if (discoveryMechanism === "bootstrap") {
|
|
139
|
-
logger?.warn?.("[libp2p-mesh] discovery=bootstrap but bootstrapList is empty; falling back to mDNS");
|
|
140
|
-
peerDiscovery.push(mdns({ interval: 1000 }));
|
|
141
|
-
} else {
|
|
142
|
-
logger?.warn?.("[libp2p-mesh] discovery=dht but bootstrapList is empty; DHT may not find peers");
|
|
143
|
-
}
|
|
145
|
+
if (discoveryPlan.bootstrapList.length > 0) {
|
|
146
|
+
peerDiscovery.push(bootstrap({ list: discoveryPlan.bootstrapList }));
|
|
147
|
+
logger?.info?.(`[libp2p-mesh] Using bootstrap discovery (${discoveryPlan.bootstrapList.length} node(s))`);
|
|
144
148
|
}
|
|
145
149
|
|
|
146
150
|
// Configure DHT for both WAN peer discovery and pubkey registry
|
|
147
|
-
const enableDHT =
|
|
151
|
+
const enableDHT = discoveryPlan.enableDHT;
|
|
148
152
|
const services: Record<string, any> = {};
|
|
149
153
|
if (enableDHT) {
|
|
150
154
|
services.dht = kadDHT({
|
package/src/setup-config.ts
CHANGED
|
@@ -3,7 +3,7 @@ import type { AnnounceLogDetail, InboundTargetConfig, MeshConfig } from "./types
|
|
|
3
3
|
export const LIBP2P_MESH_PLUGIN_ID = "libp2p-mesh";
|
|
4
4
|
export const DEFAULT_DELIVERY_ACK_TIMEOUT_MS = 15000;
|
|
5
5
|
|
|
6
|
-
export type SetupMode = "lan" | "cross-network" | "relay-node"
|
|
6
|
+
export type SetupMode = "lan" | "cross-network" | "relay-node";
|
|
7
7
|
|
|
8
8
|
export type OpenClawConfigLike = {
|
|
9
9
|
plugins?: {
|
|
@@ -28,6 +28,15 @@ export type RelayNodeOptions = {
|
|
|
28
28
|
announceAddrs: string[];
|
|
29
29
|
};
|
|
30
30
|
|
|
31
|
+
export type NetworkEntryOptions = {
|
|
32
|
+
bootstrapList: string[];
|
|
33
|
+
relayList: string[];
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
export type PublicRelayNodeOptions =
|
|
37
|
+
| { enabled: false }
|
|
38
|
+
| { enabled: true; listenAddrs: string[]; announceAddrs: string[] };
|
|
39
|
+
|
|
31
40
|
export type AddInboundTargetResult =
|
|
32
41
|
| { ok: true; targets: InboundTargetConfig[]; added: InboundTargetConfig }
|
|
33
42
|
| { ok: false; targets: InboundTargetConfig[]; error: string };
|
|
@@ -65,13 +74,6 @@ export function buildNetworkConfig(
|
|
|
65
74
|
deliveryAckTimeoutMs: DEFAULT_DELIVERY_ACK_TIMEOUT_MS,
|
|
66
75
|
};
|
|
67
76
|
|
|
68
|
-
case "tools-only":
|
|
69
|
-
return {
|
|
70
|
-
discovery: "mdns",
|
|
71
|
-
inboundTargets: [],
|
|
72
|
-
deliveryAckTimeoutMs: DEFAULT_DELIVERY_ACK_TIMEOUT_MS,
|
|
73
|
-
};
|
|
74
|
-
|
|
75
77
|
case "cross-network": {
|
|
76
78
|
const relayList = options?.crossNetwork?.relayList;
|
|
77
79
|
return {
|
|
@@ -95,6 +97,30 @@ export function buildNetworkConfig(
|
|
|
95
97
|
}
|
|
96
98
|
}
|
|
97
99
|
|
|
100
|
+
export function buildNetworkEntryConfig(options: NetworkEntryOptions): MeshConfig {
|
|
101
|
+
return {
|
|
102
|
+
...(options.bootstrapList.length > 0 ? { bootstrapList: [...options.bootstrapList] } : {}),
|
|
103
|
+
...(options.relayList.length > 0 ? { relayList: [...options.relayList] } : {}),
|
|
104
|
+
deliveryAckTimeoutMs: DEFAULT_DELIVERY_ACK_TIMEOUT_MS,
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
export function buildPublicRelayNodeConfig(options: PublicRelayNodeOptions): MeshConfig {
|
|
109
|
+
if (!options.enabled) {
|
|
110
|
+
return {
|
|
111
|
+
enableCircuitRelayServer: false,
|
|
112
|
+
deliveryAckTimeoutMs: DEFAULT_DELIVERY_ACK_TIMEOUT_MS,
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
return {
|
|
117
|
+
listenAddrs: [...options.listenAddrs],
|
|
118
|
+
...(options.announceAddrs.length > 0 ? { announceAddrs: [...options.announceAddrs] } : {}),
|
|
119
|
+
enableCircuitRelayServer: true,
|
|
120
|
+
deliveryAckTimeoutMs: DEFAULT_DELIVERY_ACK_TIMEOUT_MS,
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
|
|
98
124
|
export function applyDefaultMeshConfig(config: MeshConfig | undefined): MeshConfig {
|
|
99
125
|
const base =
|
|
100
126
|
config && typeof config === "object" && !Array.isArray(config)
|
|
@@ -185,16 +211,19 @@ export function planInboundTargetSync(
|
|
|
185
211
|
): InboundTargetSyncPlan {
|
|
186
212
|
const targets: InboundTargetConfig[] = [];
|
|
187
213
|
const missingChannels: string[] = [];
|
|
188
|
-
const
|
|
214
|
+
const seenTargetKeys = new Set<string>();
|
|
215
|
+
const coveredChannels = new Set<string>();
|
|
189
216
|
|
|
190
217
|
for (const target of existingTargets) {
|
|
191
218
|
const channel = typeof target.channel === "string" ? target.channel.trim() : "";
|
|
192
219
|
const inboundTarget = typeof target.target === "string" ? target.target.trim() : "";
|
|
193
|
-
|
|
220
|
+
const targetKey = `${channel}\u0000${inboundTarget}`;
|
|
221
|
+
if (!channel || !inboundTarget || seenTargetKeys.has(targetKey)) {
|
|
194
222
|
continue;
|
|
195
223
|
}
|
|
196
224
|
|
|
197
|
-
|
|
225
|
+
seenTargetKeys.add(targetKey);
|
|
226
|
+
coveredChannels.add(channel);
|
|
198
227
|
targets.push({
|
|
199
228
|
...target,
|
|
200
229
|
channel,
|
|
@@ -204,11 +233,11 @@ export function planInboundTargetSync(
|
|
|
204
233
|
|
|
205
234
|
for (const configuredChannel of configuredChannels) {
|
|
206
235
|
const channel = typeof configuredChannel === "string" ? configuredChannel.trim() : "";
|
|
207
|
-
if (!channel || channel === LIBP2P_MESH_PLUGIN_ID ||
|
|
236
|
+
if (!channel || channel === LIBP2P_MESH_PLUGIN_ID || coveredChannels.has(channel)) {
|
|
208
237
|
continue;
|
|
209
238
|
}
|
|
210
239
|
|
|
211
|
-
|
|
240
|
+
coveredChannels.add(channel);
|
|
212
241
|
missingChannels.push(channel);
|
|
213
242
|
}
|
|
214
243
|
|