@privateclaw/privateclaw-relay 0.1.3 → 0.1.5
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 +16 -1
- package/dist/config.d.ts +1 -0
- package/dist/config.js.map +1 -1
- package/dist/provider-setup.d.ts +13 -2
- package/dist/provider-setup.js +127 -19
- package/dist/provider-setup.js.map +1 -1
- package/dist/relay-cli.d.ts +1 -0
- package/dist/relay-cli.js +26 -2
- package/dist/relay-cli.js.map +1 -1
- package/dist/relay-server.js +37 -18
- package/dist/relay-server.js.map +1 -1
- package/dist/relay-web.d.ts +9 -0
- package/dist/relay-web.js +143 -0
- package/dist/relay-web.js.map +1 -0
- package/dist/web/assets/icon-github.svg +3 -0
- package/dist/web/assets/icon-google-group.svg +6 -0
- package/dist/web/assets/icon-telegram.svg +3 -0
- package/dist/web/assets/privateclaw_app_icon.png +0 -0
- package/dist/web/assets/privateclaw_feature_graphic.png +0 -0
- package/dist/web/chat/index.html +196 -0
- package/dist/web/index.html +174 -0
- package/dist/web/privacy/index.html +83 -0
- package/dist/web/scripts/chat.js +1320 -0
- package/dist/web/scripts/i18n.js +997 -0
- package/dist/web/scripts/policy.js +354 -0
- package/dist/web/scripts/protocol-web.js +332 -0
- package/dist/web/scripts/session-client.js +469 -0
- package/dist/web/scripts/site.js +158 -0
- package/dist/web/scripts/vendor/LICENSE-jsQR.txt +201 -0
- package/dist/web/scripts/vendor/jsQR.js +10101 -0
- package/dist/web/styles.css +1390 -0
- package/dist/web/terms/index.html +83 -0
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -29,6 +29,14 @@ privateclaw-relay
|
|
|
29
29
|
|
|
30
30
|
If the default local port `8787` is already occupied, the CLI automatically retries the next free port and prints the final listening URL.
|
|
31
31
|
|
|
32
|
+
Start the relay and serve the bundled PrivateClaw website from the same process:
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
privateclaw-relay --web
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
With `--web`, the relay serves the marketing homepage at `/`, the web chat at `/chat/`, and keeps the relay WebSocket endpoints on `/ws/*` unchanged.
|
|
39
|
+
|
|
32
40
|
Override the bind address or Redis URL:
|
|
33
41
|
|
|
34
42
|
```bash
|
|
@@ -48,8 +56,15 @@ Expose the local relay through a temporary Cloudflare quick tunnel:
|
|
|
48
56
|
privateclaw-relay --public cloudflare
|
|
49
57
|
```
|
|
50
58
|
|
|
59
|
+
You can combine `--web` with public exposure so the public tunnel opens both the website and the relay on one origin:
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
privateclaw-relay --web --public cloudflare
|
|
63
|
+
privateclaw-relay --web --public tailscale
|
|
64
|
+
```
|
|
65
|
+
|
|
51
66
|
If the required `tailscale` or `cloudflared` CLI is missing, `privateclaw-relay` prints platform-aware install commands. In an interactive terminal it can also offer to run the supported install/setup commands for you before retrying the tunnel startup.
|
|
52
|
-
After the relay gets a public URL, it also prints the exact `openclaw` commands needed to point PrivateClaw at that relay. If `openclaw` is installed locally, the CLI can offer to run the local provider install/enable/config
|
|
67
|
+
After the relay gets a public URL, it also prints the exact `openclaw` commands needed to point PrivateClaw at that relay. If `openclaw` is installed locally, the CLI can offer to run the local provider install/enable/config flow, restart the OpenClaw gateway, verify that `privateclaw` is now registered, and then optionally start a new group pairing. When `--web` is enabled, it can open the bundled web chat with the fresh invite prefilled.
|
|
53
68
|
|
|
54
69
|
## Tunnel notes
|
|
55
70
|
|
package/dist/config.d.ts
CHANGED
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAcA,SAAS,oBAAoB,CAC3B,KAAyB,EACzB,QAAgB,EAChB,KAAa;IAEb,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QAClC,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC1C,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;QAC7C,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,8BAA8B,CAAC,CAAC;IAC1D,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,MAAyB,OAAO,CAAC,GAAG;IAClE,MAAM,IAAI,GAAG,GAAG,CAAC,sBAAsB,EAAE,IAAI,EAAE,IAAI,WAAW,CAAC;IAC/D,MAAM,IAAI,GAAG,oBAAoB,CAC/B,GAAG,CAAC,sBAAsB,EAAE,IAAI,EAAE,IAAI,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,EACtD,IAAI,EACJ,wBAAwB,CACzB,CAAC;IACF,MAAM,YAAY,GAAG,oBAAoB,CACvC,GAAG,CAAC,0BAA0B,EAC9B,EAAE,GAAG,EAAE,GAAG,IAAI,EACd,4BAA4B,CAC7B,CAAC;IACF,MAAM,cAAc,GAAG,oBAAoB,CACzC,GAAG,CAAC,4BAA4B,EAChC,EAAE,EACF,8BAA8B,CAC/B,CAAC;IACF,MAAM,UAAU,GACd,GAAG,CAAC,6BAA6B,EAAE,IAAI,EAAE;QACzC,GAAG,CAAC,kBAAkB,EAAE,IAAI,EAAE,CAAC;IACjC,MAAM,QAAQ,GAAG,GAAG,CAAC,qBAAqB,EAAE,IAAI,EAAE,IAAI,GAAG,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC;IAC5E,MAAM,qBAAqB,GACzB,GAAG,CAAC,oCAAoC,EAAE,IAAI,EAAE,CAAC;IACnD,MAAM,YAAY,GAAG,GAAG,CAAC,0BAA0B,EAAE,IAAI,EAAE,CAAC;IAC5D,MAAM,cAAc,GAAG,GAAG,CAAC,4BAA4B,EAAE,IAAI,EAAE,CAAC;IAChE,MAAM,aAAa,GAAG,GAAG,CAAC,2BAA2B,EAAE,IAAI,EAAE,CAAC;IAE9D,OAAO;QACL,IAAI;QACJ,IAAI;QACJ,YAAY;QACZ,cAAc;QACd,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjC,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,qBAAqB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3D,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7C,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC5C,CAAC;AACJ,CAAC"}
|
package/dist/provider-setup.d.ts
CHANGED
|
@@ -15,17 +15,28 @@ export interface RelayProviderSetupPlan {
|
|
|
15
15
|
introduction: string;
|
|
16
16
|
automaticSteps: RelayProviderSetupStep[];
|
|
17
17
|
manualSteps: RelayProviderSetupStep[];
|
|
18
|
-
|
|
19
|
-
|
|
18
|
+
verificationNotes: string[];
|
|
19
|
+
pairingCommand: RelayProviderSetupStep;
|
|
20
20
|
}
|
|
21
21
|
interface OfferRelayProviderSetupOptions {
|
|
22
22
|
relayBaseUrl: string;
|
|
23
|
+
webChatUrl?: string;
|
|
23
24
|
onLog?: (line: string) => void;
|
|
24
25
|
isInteractive?: boolean;
|
|
25
26
|
detectLocalOpenClawStatus?: () => Promise<LocalOpenClawStatus>;
|
|
26
27
|
promptToContinue?: (question: string) => Promise<boolean>;
|
|
27
28
|
runStep?: (step: RelayProviderSetupStep) => Promise<void>;
|
|
29
|
+
runPairingCommand?: (step: RelayProviderSetupStep) => Promise<RunOneShotCommandResult>;
|
|
30
|
+
openBrowser?: (target: string) => Promise<void>;
|
|
31
|
+
verificationTimeoutMs?: number;
|
|
32
|
+
verificationPollMs?: number;
|
|
28
33
|
}
|
|
34
|
+
interface RunOneShotCommandResult {
|
|
35
|
+
stdout: string;
|
|
36
|
+
stderr: string;
|
|
37
|
+
combined: string;
|
|
38
|
+
}
|
|
39
|
+
export declare function openBrowserTarget(target: string): Promise<void>;
|
|
29
40
|
export declare function detectLocalOpenClawStatus(): Promise<LocalOpenClawStatus>;
|
|
30
41
|
export declare function buildRelayProviderSetupPlan(params: {
|
|
31
42
|
relayBaseUrl: string;
|
package/dist/provider-setup.js
CHANGED
|
@@ -21,6 +21,11 @@ function isInteractiveTerminal() {
|
|
|
21
21
|
!process.stdin.destroyed &&
|
|
22
22
|
!process.stdout.destroyed);
|
|
23
23
|
}
|
|
24
|
+
function delay(ms) {
|
|
25
|
+
return new Promise((resolve) => {
|
|
26
|
+
setTimeout(resolve, ms);
|
|
27
|
+
});
|
|
28
|
+
}
|
|
24
29
|
async function runOneShotCommand(command, args) {
|
|
25
30
|
const child = spawn(command, args, {
|
|
26
31
|
stdio: ["ignore", "pipe", "pipe"],
|
|
@@ -58,6 +63,48 @@ async function runOneShotCommand(command, args) {
|
|
|
58
63
|
throw error;
|
|
59
64
|
}
|
|
60
65
|
}
|
|
66
|
+
async function runStreamingCommand(command, args) {
|
|
67
|
+
const child = spawn(command, args, {
|
|
68
|
+
stdio: ["ignore", "pipe", "pipe"],
|
|
69
|
+
});
|
|
70
|
+
let stdoutText = "";
|
|
71
|
+
let stderrText = "";
|
|
72
|
+
child.stdout.setEncoding("utf8");
|
|
73
|
+
child.stderr.setEncoding("utf8");
|
|
74
|
+
child.stdout.on("data", (chunk) => {
|
|
75
|
+
stdoutText += chunk;
|
|
76
|
+
process.stdout.write(chunk);
|
|
77
|
+
});
|
|
78
|
+
child.stderr.on("data", (chunk) => {
|
|
79
|
+
stderrText += chunk;
|
|
80
|
+
process.stderr.write(chunk);
|
|
81
|
+
});
|
|
82
|
+
const childError = once(child, "error").then(([error]) => {
|
|
83
|
+
throw error;
|
|
84
|
+
});
|
|
85
|
+
const childClose = once(child, "close").then(([code, signal]) => ({
|
|
86
|
+
code,
|
|
87
|
+
signal,
|
|
88
|
+
}));
|
|
89
|
+
try {
|
|
90
|
+
const { code, signal } = await Promise.race([childError, childClose]);
|
|
91
|
+
if (code !== 0) {
|
|
92
|
+
const combined = `${stdoutText}${stderrText}`.trim();
|
|
93
|
+
throw new RelayCliUserError(`Command \`${[command, ...args].join(" ")}\` exited with ${code == null ? `signal ${signal ?? "unknown"}` : `code ${code}`}${combined ? `: ${combined}` : "."}`);
|
|
94
|
+
}
|
|
95
|
+
return {
|
|
96
|
+
stdout: stdoutText,
|
|
97
|
+
stderr: stderrText,
|
|
98
|
+
combined: `${stdoutText}${stderrText}`,
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
catch (error) {
|
|
102
|
+
if (isUnavailableCommandError(error)) {
|
|
103
|
+
throw new RelayCliUserError(`Could not run \`${[command, ...args].join(" ")}\` because \`${command}\` is unavailable or not executable.`);
|
|
104
|
+
}
|
|
105
|
+
throw error;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
61
108
|
async function commandExists(command) {
|
|
62
109
|
try {
|
|
63
110
|
await runOneShotCommand(command, ["--version"]);
|
|
@@ -67,6 +114,17 @@ async function commandExists(command) {
|
|
|
67
114
|
return !isUnavailableCommandError(error);
|
|
68
115
|
}
|
|
69
116
|
}
|
|
117
|
+
export async function openBrowserTarget(target) {
|
|
118
|
+
const command = process.platform === "win32"
|
|
119
|
+
? {
|
|
120
|
+
file: "cmd.exe",
|
|
121
|
+
args: ["/d", "/s", "/c", `start "" "${target.replace(/"/gu, '""')}"`],
|
|
122
|
+
}
|
|
123
|
+
: process.platform === "darwin"
|
|
124
|
+
? { file: "open", args: [target] }
|
|
125
|
+
: { file: "xdg-open", args: [target] };
|
|
126
|
+
await runOneShotCommand(command.file, command.args);
|
|
127
|
+
}
|
|
70
128
|
export async function detectLocalOpenClawStatus() {
|
|
71
129
|
if (!(await commandExists("openclaw"))) {
|
|
72
130
|
return {
|
|
@@ -97,12 +155,11 @@ export function buildRelayProviderSetupPlan(params) {
|
|
|
97
155
|
"plugins.entries.privateclaw.config.relayBaseUrl",
|
|
98
156
|
params.relayBaseUrl,
|
|
99
157
|
], `openclaw config set plugins.entries.privateclaw.config.relayBaseUrl ${params.relayBaseUrl}`);
|
|
100
|
-
const
|
|
101
|
-
|
|
158
|
+
const restartStep = createStep("Restart the OpenClaw gateway so the plugin + relay config are reloaded", "openclaw", ["gateway", "restart"], "openclaw gateway restart");
|
|
159
|
+
const pairingCommand = createStep("Start a group pairing request", "openclaw", ["privateclaw", "pair", "--group", "--relay", params.relayBaseUrl], `openclaw privateclaw pair --group --relay ${params.relayBaseUrl}`);
|
|
160
|
+
const verificationNotes = [
|
|
102
161
|
"[privateclaw-relay] After restart, verify the command registration with: openclaw commands list",
|
|
103
|
-
|
|
104
|
-
const pairingNotes = [
|
|
105
|
-
"[privateclaw-relay] Then create a pairing QR either by sending `/privateclaw` in an existing OpenClaw-backed chat or by running: openclaw privateclaw pair",
|
|
162
|
+
`[privateclaw-relay] When the provider is ready, start a group pairing with: ${pairingCommand.display}`,
|
|
106
163
|
];
|
|
107
164
|
if (!params.status.openClawAvailable) {
|
|
108
165
|
return {
|
|
@@ -111,9 +168,9 @@ export function buildRelayProviderSetupPlan(params) {
|
|
|
111
168
|
privateClawCommandAvailable: false,
|
|
112
169
|
introduction: "[privateclaw-relay] To connect an OpenClaw machine to this relay, run these commands on the machine where `openclaw` is installed:",
|
|
113
170
|
automaticSteps: [],
|
|
114
|
-
manualSteps: [installStep, enableStep, configStep],
|
|
115
|
-
|
|
116
|
-
|
|
171
|
+
manualSteps: [installStep, enableStep, configStep, restartStep],
|
|
172
|
+
verificationNotes,
|
|
173
|
+
pairingCommand,
|
|
117
174
|
};
|
|
118
175
|
}
|
|
119
176
|
if (params.status.privateClawCommandAvailable) {
|
|
@@ -122,10 +179,10 @@ export function buildRelayProviderSetupPlan(params) {
|
|
|
122
179
|
localOpenClaw: true,
|
|
123
180
|
privateClawCommandAvailable: true,
|
|
124
181
|
introduction: "[privateclaw-relay] OpenClaw + PrivateClaw are already available locally. Point the provider at this relay with:",
|
|
125
|
-
automaticSteps: [configStep],
|
|
126
|
-
manualSteps: [configStep],
|
|
127
|
-
|
|
128
|
-
|
|
182
|
+
automaticSteps: [configStep, restartStep],
|
|
183
|
+
manualSteps: [configStep, restartStep],
|
|
184
|
+
verificationNotes,
|
|
185
|
+
pairingCommand,
|
|
129
186
|
};
|
|
130
187
|
}
|
|
131
188
|
return {
|
|
@@ -133,18 +190,17 @@ export function buildRelayProviderSetupPlan(params) {
|
|
|
133
190
|
localOpenClaw: true,
|
|
134
191
|
privateClawCommandAvailable: false,
|
|
135
192
|
introduction: "[privateclaw-relay] OpenClaw is available locally, but PrivateClaw is not active yet. Configure it with:",
|
|
136
|
-
automaticSteps: [installStep, enableStep, configStep],
|
|
137
|
-
manualSteps: [installStep, enableStep, configStep],
|
|
138
|
-
|
|
139
|
-
|
|
193
|
+
automaticSteps: [installStep, enableStep, configStep, restartStep],
|
|
194
|
+
manualSteps: [installStep, enableStep, configStep, restartStep],
|
|
195
|
+
verificationNotes,
|
|
196
|
+
pairingCommand,
|
|
140
197
|
};
|
|
141
198
|
}
|
|
142
199
|
export function renderRelayProviderSetupGuidance(plan) {
|
|
143
200
|
const lines = [
|
|
144
201
|
plan.introduction,
|
|
145
202
|
...plan.manualSteps.map((step) => `[privateclaw-relay] ${step.display}`),
|
|
146
|
-
...plan.
|
|
147
|
-
...plan.pairingNotes,
|
|
203
|
+
...plan.verificationNotes,
|
|
148
204
|
];
|
|
149
205
|
return lines.join("\n");
|
|
150
206
|
}
|
|
@@ -186,6 +242,25 @@ async function runRelayProviderSetupStep(step) {
|
|
|
186
242
|
throw error;
|
|
187
243
|
}
|
|
188
244
|
}
|
|
245
|
+
function extractPrivateClawInviteUri(output) {
|
|
246
|
+
return output.match(/privateclaw:\/\/connect\?payload=\S+/u)?.[0];
|
|
247
|
+
}
|
|
248
|
+
function buildRelayWebInviteUrl(webChatUrl, inviteUri) {
|
|
249
|
+
const url = new URL(webChatUrl);
|
|
250
|
+
url.searchParams.set("invite", inviteUri);
|
|
251
|
+
return url.toString();
|
|
252
|
+
}
|
|
253
|
+
async function waitForPrivateClawCommandAvailability(detectStatus, timeoutMs, pollMs) {
|
|
254
|
+
const deadline = Date.now() + timeoutMs;
|
|
255
|
+
let status = await detectStatus();
|
|
256
|
+
while (status.openClawAvailable &&
|
|
257
|
+
!status.privateClawCommandAvailable &&
|
|
258
|
+
Date.now() < deadline) {
|
|
259
|
+
await delay(pollMs);
|
|
260
|
+
status = await detectStatus();
|
|
261
|
+
}
|
|
262
|
+
return status;
|
|
263
|
+
}
|
|
189
264
|
export async function offerRelayProviderSetup(options) {
|
|
190
265
|
const detectStatus = options.detectLocalOpenClawStatus ?? detectLocalOpenClawStatus;
|
|
191
266
|
const status = await detectStatus();
|
|
@@ -206,6 +281,10 @@ export async function offerRelayProviderSetup(options) {
|
|
|
206
281
|
}
|
|
207
282
|
const promptToContinue = options.promptToContinue ?? promptForConfirmation;
|
|
208
283
|
const runStep = options.runStep ?? runRelayProviderSetupStep;
|
|
284
|
+
const runPairingCommand = options.runPairingCommand ?? ((step) => runStreamingCommand(step.command, step.args));
|
|
285
|
+
const openBrowser = options.openBrowser ?? openBrowserTarget;
|
|
286
|
+
const verificationTimeoutMs = options.verificationTimeoutMs ?? 15_000;
|
|
287
|
+
const verificationPollMs = options.verificationPollMs ?? 1_000;
|
|
209
288
|
const configureNow = await promptToContinue(plan.privateClawCommandAvailable
|
|
210
289
|
? `OpenClaw is available locally. Configure the local PrivateClaw provider to use ${options.relayBaseUrl} now?`
|
|
211
290
|
: `OpenClaw is available locally. Install/configure the local PrivateClaw provider for ${options.relayBaseUrl} now?`);
|
|
@@ -218,8 +297,37 @@ export async function offerRelayProviderSetup(options) {
|
|
|
218
297
|
await runStep(step);
|
|
219
298
|
}
|
|
220
299
|
options.onLog?.("[privateclaw-relay] Local OpenClaw configuration commands completed.");
|
|
221
|
-
|
|
300
|
+
const refreshedStatus = await waitForPrivateClawCommandAvailability(detectStatus, verificationTimeoutMs, verificationPollMs);
|
|
301
|
+
if (!refreshedStatus.privateClawCommandAvailable) {
|
|
302
|
+
throw new RelayCliUserError("OpenClaw restarted, but `privateclaw` still does not appear in `openclaw commands list`. Confirm the gateway finished restarting cleanly, then rerun `privateclaw-relay`.");
|
|
303
|
+
}
|
|
304
|
+
options.onLog?.("[privateclaw-relay] Verified `privateclaw` is now available via `openclaw commands list`.");
|
|
305
|
+
for (const line of plan.verificationNotes) {
|
|
222
306
|
options.onLog?.(line);
|
|
223
307
|
}
|
|
308
|
+
const startGroupPairing = await promptToContinue("PrivateClaw is ready locally. Start a new group pairing now?");
|
|
309
|
+
if (!startGroupPairing) {
|
|
310
|
+
options.onLog?.("[privateclaw-relay] Skipping automatic group pairing for now.");
|
|
311
|
+
return;
|
|
312
|
+
}
|
|
313
|
+
options.onLog?.(`[privateclaw-relay] Running: ${plan.pairingCommand.display}`);
|
|
314
|
+
const pairingResult = await runPairingCommand(plan.pairingCommand);
|
|
315
|
+
const inviteUri = extractPrivateClawInviteUri(pairingResult.combined);
|
|
316
|
+
if (!inviteUri) {
|
|
317
|
+
options.onLog?.("[privateclaw-relay] Created the group pairing request, but could not extract the invite URI from the command output for automatic browser launch.");
|
|
318
|
+
return;
|
|
319
|
+
}
|
|
320
|
+
if (!options.webChatUrl) {
|
|
321
|
+
options.onLog?.("[privateclaw-relay] Group pairing is ready. Start the relay with `--web` next time if you want this CLI to open the web chat automatically with the invite prefilled.");
|
|
322
|
+
return;
|
|
323
|
+
}
|
|
324
|
+
const webInviteUrl = buildRelayWebInviteUrl(options.webChatUrl, inviteUri);
|
|
325
|
+
options.onLog?.(`[privateclaw-relay] Opening web chat with the new invite: ${webInviteUrl}`);
|
|
326
|
+
try {
|
|
327
|
+
await openBrowser(webInviteUrl);
|
|
328
|
+
}
|
|
329
|
+
catch (error) {
|
|
330
|
+
options.onLog?.(`[privateclaw-relay] Could not open the browser automatically: ${error instanceof Error ? error.message : String(error)}`);
|
|
331
|
+
}
|
|
224
332
|
}
|
|
225
333
|
//# sourceMappingURL=provider-setup.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider-setup.js","sourceRoot":"","sources":["../src/provider-setup.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"provider-setup.js","sourceRoot":"","sources":["../src/provider-setup.ts"],"names":[],"mappings":"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"}
|
package/dist/relay-cli.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ import { createRelayServer } from "./relay-server.js";
|
|
|
3
3
|
import { type RelayTunnelProvider } from "./tunnel.js";
|
|
4
4
|
export interface RelayCliOptions {
|
|
5
5
|
showHelp: boolean;
|
|
6
|
+
serveWeb: boolean;
|
|
6
7
|
configOverrides: Partial<RelayServerConfig>;
|
|
7
8
|
publicTunnel?: RelayTunnelProvider;
|
|
8
9
|
}
|
package/dist/relay-cli.js
CHANGED
|
@@ -3,6 +3,7 @@ import { RelayCliUserError } from "./cli-error.js";
|
|
|
3
3
|
import { loadRelayConfig } from "./config.js";
|
|
4
4
|
import { offerRelayProviderSetup } from "./provider-setup.js";
|
|
5
5
|
import { createRelayServer } from "./relay-server.js";
|
|
6
|
+
import { resolveRelayWebRootDir } from "./relay-web.js";
|
|
6
7
|
import { ensureRelayTunnelDependencyAvailable, ensureRelayTunnelProviderConfigured, } from "./tunnel-installer.js";
|
|
7
8
|
import { isRelayTunnelProvider, MissingRelayTunnelBinaryError, openRelayTunnel, RelayTunnelPrerequisiteError, } from "./tunnel.js";
|
|
8
9
|
const DEFAULT_PORT_FALLBACK_ATTEMPTS = 50;
|
|
@@ -17,17 +18,19 @@ function parsePositiveIntegerFlag(value, label) {
|
|
|
17
18
|
return parsed;
|
|
18
19
|
}
|
|
19
20
|
export function renderRelayCliHelp() {
|
|
20
|
-
return `privateclaw-relay [serve] [--host <host>] [--port <port>] [--ttl-ms <ms>] [--frame-cache-size <count>] [--redis-url <url>] [--public <tailscale|cloudflare>]
|
|
21
|
+
return `privateclaw-relay [serve] [--host <host>] [--port <port>] [--ttl-ms <ms>] [--frame-cache-size <count>] [--redis-url <url>] [--web] [--public <tailscale|cloudflare>]
|
|
21
22
|
|
|
22
23
|
Start the local PrivateClaw relay server.
|
|
23
24
|
|
|
24
25
|
Examples:
|
|
25
26
|
privateclaw-relay
|
|
27
|
+
privateclaw-relay --web
|
|
26
28
|
privateclaw-relay --port 8787 --public tailscale
|
|
27
29
|
privateclaw-relay serve --host 0.0.0.0 --redis-url redis://127.0.0.1:6379
|
|
28
30
|
|
|
29
31
|
Notes:
|
|
30
32
|
default local port automatically retries the next free port when 8787 is busy
|
|
33
|
+
--web also serves the bundled PrivateClaw website at / and /chat/
|
|
31
34
|
--public tailscale enables Tailscale Funnel for the relay port
|
|
32
35
|
--public cloudflare starts a temporary Cloudflare quick tunnel
|
|
33
36
|
`;
|
|
@@ -42,6 +45,7 @@ export function parseRelayCliArgs(args) {
|
|
|
42
45
|
"ttl-ms": { type: "string" },
|
|
43
46
|
"frame-cache-size": { type: "string" },
|
|
44
47
|
"redis-url": { type: "string" },
|
|
48
|
+
web: { type: "boolean" },
|
|
45
49
|
public: { type: "string" },
|
|
46
50
|
help: { type: "boolean", short: "h" },
|
|
47
51
|
},
|
|
@@ -50,6 +54,7 @@ export function parseRelayCliArgs(args) {
|
|
|
50
54
|
if (command === "help") {
|
|
51
55
|
return {
|
|
52
56
|
showHelp: true,
|
|
57
|
+
serveWeb: false,
|
|
53
58
|
configOverrides: {},
|
|
54
59
|
};
|
|
55
60
|
}
|
|
@@ -62,6 +67,7 @@ export function parseRelayCliArgs(args) {
|
|
|
62
67
|
if (parsed.values.help) {
|
|
63
68
|
return {
|
|
64
69
|
showHelp: true,
|
|
70
|
+
serveWeb: false,
|
|
65
71
|
configOverrides: {},
|
|
66
72
|
};
|
|
67
73
|
}
|
|
@@ -77,6 +83,7 @@ export function parseRelayCliArgs(args) {
|
|
|
77
83
|
const frameCacheSize = parsePositiveIntegerFlag(parsed.values["frame-cache-size"], "--frame-cache-size");
|
|
78
84
|
return {
|
|
79
85
|
showHelp: false,
|
|
86
|
+
serveWeb: parsed.values.web ?? false,
|
|
80
87
|
configOverrides: {
|
|
81
88
|
...(parsed.values.host?.trim()
|
|
82
89
|
? { host: parsed.values.host.trim() }
|
|
@@ -163,6 +170,12 @@ export async function runRelayCli(args) {
|
|
|
163
170
|
return;
|
|
164
171
|
}
|
|
165
172
|
const config = applyRelayCliOverrides(loadRelayConfig(), parsed.configOverrides);
|
|
173
|
+
const effectiveConfig = parsed.serveWeb
|
|
174
|
+
? {
|
|
175
|
+
...config,
|
|
176
|
+
webRootDir: resolveRelayWebRootDir(),
|
|
177
|
+
}
|
|
178
|
+
: config;
|
|
166
179
|
const allowPortFallback = shouldAllowRelayCliPortFallback(parsed);
|
|
167
180
|
let relayServer;
|
|
168
181
|
let tunnel;
|
|
@@ -185,7 +198,7 @@ export async function runRelayCli(args) {
|
|
|
185
198
|
});
|
|
186
199
|
try {
|
|
187
200
|
const startedRelay = await startRelayServerWithPortFallback({
|
|
188
|
-
config,
|
|
201
|
+
config: effectiveConfig,
|
|
189
202
|
allowPortFallback,
|
|
190
203
|
onLog: (line) => {
|
|
191
204
|
console.log(line);
|
|
@@ -194,6 +207,10 @@ export async function runRelayCli(args) {
|
|
|
194
207
|
relayServer = startedRelay.relayServer;
|
|
195
208
|
const { port, url } = startedRelay;
|
|
196
209
|
console.log(`[privateclaw-relay] listening on ${url}`);
|
|
210
|
+
if (parsed.serveWeb) {
|
|
211
|
+
console.log(`[privateclaw-relay] web home: ${new URL("/", url).toString()}`);
|
|
212
|
+
console.log(`[privateclaw-relay] web chat: ${new URL("/chat/", url).toString()}`);
|
|
213
|
+
}
|
|
197
214
|
if (!parsed.publicTunnel) {
|
|
198
215
|
return;
|
|
199
216
|
}
|
|
@@ -270,6 +287,10 @@ export async function runRelayCli(args) {
|
|
|
270
287
|
}
|
|
271
288
|
if (tunnel.publicUrl) {
|
|
272
289
|
console.log(`[privateclaw-relay] public URL: ${tunnel.publicUrl}`);
|
|
290
|
+
if (parsed.serveWeb) {
|
|
291
|
+
console.log(`[privateclaw-relay] public web home: ${new URL("/", tunnel.publicUrl).toString()}`);
|
|
292
|
+
console.log(`[privateclaw-relay] public web chat: ${new URL("/chat/", tunnel.publicUrl).toString()}`);
|
|
293
|
+
}
|
|
273
294
|
}
|
|
274
295
|
for (const note of tunnel.notes) {
|
|
275
296
|
console.log(`[privateclaw-relay] ${note}`);
|
|
@@ -277,6 +298,9 @@ export async function runRelayCli(args) {
|
|
|
277
298
|
if (tunnel.publicUrl) {
|
|
278
299
|
await offerRelayProviderSetup({
|
|
279
300
|
relayBaseUrl: tunnel.publicUrl,
|
|
301
|
+
...(parsed.serveWeb
|
|
302
|
+
? { webChatUrl: new URL("/chat/", tunnel.publicUrl).toString() }
|
|
303
|
+
: {}),
|
|
280
304
|
onLog: (line) => {
|
|
281
305
|
console.log(line);
|
|
282
306
|
},
|
package/dist/relay-cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relay-cli.js","sourceRoot":"","sources":["../src/relay-cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,eAAe,EAA0B,MAAM,aAAa,CAAC;AACtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EACL,oCAAoC,EACpC,mCAAmC,GACpC,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,qBAAqB,EACrB,6BAA6B,EAC7B,eAAe,EACf,4BAA4B,GAG7B,MAAM,aAAa,CAAC;AAErB,MAAM,8BAA8B,GAAG,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"relay-cli.js","sourceRoot":"","sources":["../src/relay-cli.ts"],"names":[],"mappings":"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"}
|
package/dist/relay-server.js
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { randomUUID } from "node:crypto";
|
|
2
|
-
import { createServer } from "node:http";
|
|
2
|
+
import { createServer, } from "node:http";
|
|
3
3
|
import { WebSocket, WebSocketServer } from "ws";
|
|
4
4
|
import { createEncryptedFrameCache, } from "./frame-cache.js";
|
|
5
5
|
import { createRelayPushRegistrationStore, } from "./push-registration-store.js";
|
|
6
6
|
import { createRelayPushNotifier, } from "./push-notifier.js";
|
|
7
7
|
import { createRedisRelayClusterClient, RelayClaimConflictError, } from "./relay-cluster.js";
|
|
8
8
|
import { createRelaySessionStore, } from "./session-store.js";
|
|
9
|
+
import { serveRelayWebRequest } from "./relay-web.js";
|
|
9
10
|
const HEARTBEAT_INTERVAL_MS = 15_000;
|
|
10
11
|
const PUSH_WAKE_COOLDOWN_MS = 5_000;
|
|
11
12
|
class RelayProtocolError extends Error {
|
|
@@ -721,27 +722,45 @@ export function createRelayServer(config, deps = {}) {
|
|
|
721
722
|
let startedPort = config.port;
|
|
722
723
|
let startedUrl = "";
|
|
723
724
|
let started = false;
|
|
724
|
-
|
|
725
|
+
async function handleHttpRequest(request, response) {
|
|
725
726
|
const url = new URL(request.url ?? "/", `http://${request.headers.host ?? `${config.host}:${startedPort}`}`);
|
|
726
|
-
|
|
727
|
-
(
|
|
728
|
-
|
|
729
|
-
.countSessions()
|
|
730
|
-
.then((sessions) => {
|
|
727
|
+
try {
|
|
728
|
+
if (request.method === "GET" &&
|
|
729
|
+
(url.pathname === "/healthz" || url.pathname === "/api/health")) {
|
|
730
|
+
const sessions = await sessionHub.countSessions();
|
|
731
731
|
response.writeHead(200, { "content-type": "application/json" });
|
|
732
732
|
response.end(JSON.stringify({ ok: true, sessions, instanceId: clusterNodeId }));
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
733
|
+
return;
|
|
734
|
+
}
|
|
735
|
+
if (config.webRootDir) {
|
|
736
|
+
const handled = await serveRelayWebRequest({
|
|
737
|
+
request,
|
|
738
|
+
response,
|
|
739
|
+
url,
|
|
740
|
+
webRootDir: config.webRootDir,
|
|
741
|
+
});
|
|
742
|
+
if (handled) {
|
|
743
|
+
return;
|
|
744
|
+
}
|
|
745
|
+
}
|
|
746
|
+
response.writeHead(404, { "content-type": "application/json" });
|
|
747
|
+
response.end(JSON.stringify({ error: "not_found" }));
|
|
748
|
+
}
|
|
749
|
+
catch (error) {
|
|
750
|
+
console.error("[privateclaw-relay] failed to handle HTTP request", error);
|
|
751
|
+
if (response.headersSent) {
|
|
752
|
+
response.end();
|
|
753
|
+
return;
|
|
754
|
+
}
|
|
755
|
+
response.writeHead(500, { "content-type": "application/json" });
|
|
756
|
+
response.end(JSON.stringify({
|
|
757
|
+
ok: false,
|
|
758
|
+
error: error instanceof Error ? error.message : String(error),
|
|
759
|
+
}));
|
|
742
760
|
}
|
|
743
|
-
|
|
744
|
-
|
|
761
|
+
}
|
|
762
|
+
const server = createServer((request, response) => {
|
|
763
|
+
void handleHttpRequest(request, response);
|
|
745
764
|
});
|
|
746
765
|
const providerWss = new WebSocketServer({ noServer: true });
|
|
747
766
|
const appWss = new WebSocketServer({ noServer: true });
|