clawconnect-agent 0.1.1 → 0.1.3
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 +4 -3
- package/README.zh-CN.md +4 -3
- package/dist/commands/install.js +21 -1
- package/dist/commands/install.js.map +1 -1
- package/dist/commands/local-handlers.js +104 -26
- package/dist/commands/local-handlers.js.map +1 -1
- package/dist/commands/local-runtime.d.ts +1 -1
- package/dist/commands/local-runtime.js +97 -28
- package/dist/commands/local-runtime.js.map +1 -1
- package/dist/commands/pair.js +1 -1
- package/dist/commands/pair.js.map +1 -1
- package/dist/commands/run.js +16 -0
- package/dist/commands/run.js.map +1 -1
- package/dist/commands/status.js +21 -1
- package/dist/commands/status.js.map +1 -1
- package/dist/config/config.js +6 -4
- package/dist/config/config.js.map +1 -1
- package/dist/config/env.js +4 -2
- package/dist/config/env.js.map +1 -1
- package/dist/i18n/index.js +18 -1
- package/dist/i18n/index.js.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/platform/service-manager-common.d.ts +29 -2
- package/dist/platform/service-manager-common.js +105 -5
- package/dist/platform/service-manager-common.js.map +1 -1
- package/dist/platform/service-manager-windows.d.ts +8 -0
- package/dist/platform/service-manager-windows.js +254 -0
- package/dist/platform/service-manager-windows.js.map +1 -0
- package/dist/platform/service-manager.d.ts +2 -0
- package/dist/platform/service-manager.js +14 -0
- package/dist/platform/service-manager.js.map +1 -1
- package/dist/relay/gateway-client.js +6 -2
- package/dist/relay/gateway-client.js.map +1 -1
- package/dist/relay/relay-manager.d.ts +3 -0
- package/dist/relay/relay-manager.js +26 -1
- package/dist/relay/relay-manager.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# ClawConnect Agent
|
|
2
2
|
|
|
3
|
-
> OpenClaw host agent for macOS and
|
|
3
|
+
> OpenClaw host agent for macOS, Linux and Windows hosts — connects your gateway machine to your ClawConnect relay server.
|
|
4
4
|
|
|
5
5
|
## Installation
|
|
6
6
|
|
|
@@ -83,6 +83,7 @@ clawconnect install
|
|
|
83
83
|
|
|
84
84
|
- macOS: installs a `launchd` user agent
|
|
85
85
|
- Linux: prefers `systemd --user`, and falls back to `nohup` when `systemctl --user` is unavailable
|
|
86
|
+
- Windows: registers a Windows Task Scheduler task that auto-starts at logon with silent console (`powershell -WindowStyle Hidden`)
|
|
86
87
|
|
|
87
88
|
On Linux hosts without `systemd --user`, `clawconnect install` will generate a fallback launcher at:
|
|
88
89
|
|
|
@@ -218,7 +219,7 @@ Tests are colocated with the source as `*.test.ts`. They run with `npm test`, an
|
|
|
218
219
|
- `src/commands/local-runtime.ts` resolves the `openclaw` binary and triggers gateway lifecycle actions.
|
|
219
220
|
- `src/commands/provider-handlers.ts` routes provider-specific commands and reuses the same gateway restart path.
|
|
220
221
|
- `src/config/env.ts` loads `.env` files and exposes agent defaults such as relay and Gateway URLs.
|
|
221
|
-
- `src/platform/service-manager.ts` exposes a cross-platform service facade for macOS and
|
|
222
|
+
- `src/platform/service-manager.ts` exposes a cross-platform service facade for macOS, Linux, and Windows.
|
|
222
223
|
- `src/relay/relay-manager.ts` bridges the relay server and the local Gateway, dispatches commands, and handles chat/history fallbacks.
|
|
223
224
|
- `src/relay/gateway-client.ts` manages the websocket connection to OpenClaw Gateway and device authentication.
|
|
224
225
|
- `src/relay/session-context.ts` reads session defaults and context usage snapshots.
|
|
@@ -251,7 +252,7 @@ Tests are colocated with the source as `*.test.ts`. They run with `npm test`, an
|
|
|
251
252
|
|
|
252
253
|
## Requirements
|
|
253
254
|
|
|
254
|
-
- macOS or
|
|
255
|
+
- macOS, Linux, or Windows 10 / Server 2016+
|
|
255
256
|
- Node.js 18+
|
|
256
257
|
|
|
257
258
|
## License
|
package/README.zh-CN.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# ClawConnect Agent 使用说明
|
|
2
2
|
|
|
3
|
-
`ClawConnect Agent` 是运行在 macOS 或
|
|
3
|
+
`ClawConnect Agent` 是运行在 macOS、Linux 或 Windows 主机上的 OpenClaw 远程连接代理,用于把本机 OpenClaw Gateway 接入你的中继站,供移动端远程访问。
|
|
4
4
|
|
|
5
5
|
## 安装
|
|
6
6
|
|
|
@@ -95,6 +95,7 @@ clawconnect install
|
|
|
95
95
|
- macOS:安装为 `launchd` 用户服务
|
|
96
96
|
- Linux:优先使用 `systemd --user`
|
|
97
97
|
- 如果 Linux 当前环境不支持 `systemd --user`,会自动回退到 `nohup`
|
|
98
|
+
- Windows:注册为 Windows Task Scheduler 任务,登录时自动静默启动(`powershell -WindowStyle Hidden`)
|
|
98
99
|
|
|
99
100
|
在不支持 `systemd --user` 的 Linux 环境下,会生成一个备用启动脚本:
|
|
100
101
|
|
|
@@ -232,7 +233,7 @@ clawconnect-agent/
|
|
|
232
233
|
- `src/commands/local-runtime.ts` 负责解析 `openclaw` 可执行文件并触发网关生命周期动作。
|
|
233
234
|
- `src/commands/provider-handlers.ts` 负责 provider 专属命令分发,并复用同一套 gateway 重启逻辑。
|
|
234
235
|
- `src/config/env.ts` 负责加载 `.env` 文件,并集中维护 relay、Gateway 等 agent 默认配置。
|
|
235
|
-
- `src/platform/service-manager.ts` 负责 macOS 和
|
|
236
|
+
- `src/platform/service-manager.ts` 负责 macOS、Linux 和 Windows 的跨平台服务管理入口。
|
|
236
237
|
- `src/relay/relay-manager.ts` 负责中继服务器与本地 Gateway 的桥接、命令分发,以及 chat/history 回退处理。
|
|
237
238
|
- `src/relay/gateway-client.ts` 负责连接 OpenClaw Gateway,并处理设备身份认证。
|
|
238
239
|
- `src/relay/session-context.ts` 负责读取会话默认值和上下文使用量快照。
|
|
@@ -285,7 +286,7 @@ clawconnect-agent/
|
|
|
285
286
|
|
|
286
287
|
## 前置要求
|
|
287
288
|
|
|
288
|
-
- macOS 或
|
|
289
|
+
- macOS、Linux 或 Windows 10 / Server 2016+
|
|
289
290
|
- Node.js `18+`
|
|
290
291
|
- 本机已安装并可运行 `openclaw`
|
|
291
292
|
- 本机 OpenClaw Gateway 能正常启动
|
package/dist/commands/install.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { existsSync, unlinkSync } from "fs";
|
|
2
|
+
import { execFileSync } from "child_process";
|
|
2
3
|
import { join } from "path";
|
|
3
4
|
import { homedir } from "os";
|
|
4
5
|
import { t } from "../i18n/index.js";
|
|
5
|
-
import { getServicePlatform, getServiceStatus, installService, restartService, stopService, uninstallService, servicePaths, } from "../platform/service-manager.js";
|
|
6
|
+
import { getServicePlatform, getServiceStatus, installService, restartService, setRestrictiveFilePermissions, stopService, uninstallService, servicePaths, } from "../platform/service-manager.js";
|
|
6
7
|
export function isInstalled() {
|
|
7
8
|
const platform = getServicePlatform();
|
|
8
9
|
if (platform === "macos")
|
|
@@ -10,6 +11,15 @@ export function isInstalled() {
|
|
|
10
11
|
if (platform === "linux") {
|
|
11
12
|
return existsSync(servicePaths.linuxServicePath) || existsSync(servicePaths.linuxNohupStartScriptPath);
|
|
12
13
|
}
|
|
14
|
+
if (platform === "windows") {
|
|
15
|
+
try {
|
|
16
|
+
execFileSync("schtasks", ["/query", "/tn", "ClawConnectAgent"], { stdio: "pipe" });
|
|
17
|
+
return true;
|
|
18
|
+
}
|
|
19
|
+
catch {
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
13
23
|
return false;
|
|
14
24
|
}
|
|
15
25
|
export function installCommand() {
|
|
@@ -35,6 +45,9 @@ export function installCommand() {
|
|
|
35
45
|
console.log(t("install.startManually", "systemctl --user daemon-reload && systemctl --user enable --now clawconnect-agent.service"));
|
|
36
46
|
console.log(t("install.startManually", `bash "${servicePaths.linuxNohupStartScriptPath}"`));
|
|
37
47
|
}
|
|
48
|
+
else if (platform === "windows") {
|
|
49
|
+
console.log(t("install.startManually", 'schtasks /run /tn "ClawConnectAgent"'));
|
|
50
|
+
}
|
|
38
51
|
}
|
|
39
52
|
export function restartCommand() {
|
|
40
53
|
console.log(t("install.restarting"));
|
|
@@ -82,6 +95,11 @@ export function resetCommand() {
|
|
|
82
95
|
const configPath = join(homedir(), ".clawconnect", "config.json");
|
|
83
96
|
if (existsSync(configPath)) {
|
|
84
97
|
try {
|
|
98
|
+
if (process.platform === "win32") {
|
|
99
|
+
// Older Windows installs granted read/write but not delete.
|
|
100
|
+
// Repair the ACL before removing the file so reset can self-heal.
|
|
101
|
+
setRestrictiveFilePermissions(configPath);
|
|
102
|
+
}
|
|
85
103
|
unlinkSync(configPath);
|
|
86
104
|
console.log(t("install.configRemoved", configPath));
|
|
87
105
|
}
|
|
@@ -100,6 +118,8 @@ function platformName(platform) {
|
|
|
100
118
|
return "launchd";
|
|
101
119
|
case "linux":
|
|
102
120
|
return "systemd/nohup";
|
|
121
|
+
case "windows":
|
|
122
|
+
return "Windows Task Scheduler";
|
|
103
123
|
default:
|
|
104
124
|
return process.platform;
|
|
105
125
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import { readdirSync, statSync, copyFileSync, existsSync, readFileSync } from "fs";
|
|
1
|
+
import { readdirSync, statSync, copyFileSync, existsSync, readFileSync, openSync, readSync, closeSync } from "fs";
|
|
2
2
|
import { join } from "path";
|
|
3
3
|
import { homedir } from "os";
|
|
4
4
|
import { createBackup, deleteBackup, listBackups, restoreBackup, updateBackup } from "./backup-manager.js";
|
|
5
5
|
import { readConfig, updateVoiceReplyConfig } from "../config/config.js";
|
|
6
6
|
import { errorMessage, execErrorOutput, openclaw, runDoctorFix as runDoctorFixStreaming, requestGatewayRemoteRestart, requestGatewayRestart, } from "./local-runtime.js";
|
|
7
7
|
const OPENCLAW_DIR = join(homedir(), ".openclaw");
|
|
8
|
+
const CLAWCONNECT_DIR = join(homedir(), ".clawconnect");
|
|
8
9
|
const OPENCLAW_CONFIG = join(OPENCLAW_DIR, "openclaw.json");
|
|
9
10
|
// ---------------------------------------------------------------------------
|
|
10
11
|
export function handleLocalCommand(method, params = undefined, context = {}) {
|
|
@@ -145,7 +146,7 @@ async function fixToolsPermissions202632() {
|
|
|
145
146
|
output = typeof payload?.output === "string" ? payload.output.trim() : "";
|
|
146
147
|
}
|
|
147
148
|
else {
|
|
148
|
-
output = openclaw(step).toString().trim();
|
|
149
|
+
output = openclaw(step.split(/\s+/)).toString().trim();
|
|
149
150
|
}
|
|
150
151
|
if (output) {
|
|
151
152
|
outputs.push(output);
|
|
@@ -264,7 +265,7 @@ function restoreBackupRecord(params) {
|
|
|
264
265
|
}
|
|
265
266
|
function watchSkill() {
|
|
266
267
|
try {
|
|
267
|
-
openclaw("config set skills.load.watch true");
|
|
268
|
+
openclaw(["config", "set", "skills.load.watch", "true"]);
|
|
268
269
|
console.log("[clawconnect] skills.load.watch set to true");
|
|
269
270
|
return { ok: true, payload: { message: "skills.load.watch enabled" } };
|
|
270
271
|
}
|
|
@@ -274,7 +275,7 @@ function watchSkill() {
|
|
|
274
275
|
}
|
|
275
276
|
function runDoctor() {
|
|
276
277
|
try {
|
|
277
|
-
const output = openclaw("doctor").toString();
|
|
278
|
+
const output = openclaw(["doctor"]).toString();
|
|
278
279
|
console.log("[clawconnect] doctor completed");
|
|
279
280
|
return { ok: true, payload: { output } };
|
|
280
281
|
}
|
|
@@ -283,43 +284,120 @@ function runDoctor() {
|
|
|
283
284
|
return output ? { ok: true, payload: { output } } : { ok: false, error: errorMessage(err) };
|
|
284
285
|
}
|
|
285
286
|
}
|
|
286
|
-
function
|
|
287
|
+
function stripAnsi(text) {
|
|
288
|
+
// CSI sequences: ESC [ <params> <final byte> (final byte 0x40-0x7E)
|
|
289
|
+
// Covers SGR (m), erase in line/display (K/J), cursor moves, etc.
|
|
290
|
+
text = text.replace(/\x1B\[[\d;]*[A-Za-z@\[\]\\^_`{|}~-]/g, "");
|
|
291
|
+
// OSC sequences: ESC ] <params> ST (ST = BEL \x07 or ESC \)
|
|
292
|
+
text = text.replace(/\x1B\].*?(?:\x07|\x1B\\)/g, "");
|
|
293
|
+
return text;
|
|
294
|
+
}
|
|
295
|
+
function readLogs(params = undefined) {
|
|
287
296
|
try {
|
|
297
|
+
const p = params && typeof params === "object" && !Array.isArray(params)
|
|
298
|
+
? params
|
|
299
|
+
: {};
|
|
300
|
+
const limit = typeof p.limit === "number" ? p.limit : 500;
|
|
301
|
+
const candidates = [];
|
|
302
|
+
// Primary: ~/.clawconnect/ — where the service (Linux systemd/nohup,
|
|
303
|
+
// macOS launchd, Windows schtasks) redirects stdout/stderr.
|
|
304
|
+
if (existsSync(CLAWCONNECT_DIR)) {
|
|
305
|
+
for (const f of readdirSync(CLAWCONNECT_DIR)) {
|
|
306
|
+
if (f.endsWith(".log"))
|
|
307
|
+
candidates.push(join(CLAWCONNECT_DIR, f));
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
// Fallback: ~/.openclaw/logs/ or ~/.openclaw/*.log — for openclaw
|
|
311
|
+
// tool logs or legacy installations.
|
|
288
312
|
const logsDir = join(OPENCLAW_DIR, "logs");
|
|
289
|
-
let logFiles = [];
|
|
290
313
|
if (existsSync(logsDir)) {
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
314
|
+
for (const f of readdirSync(logsDir)) {
|
|
315
|
+
if (f.endsWith(".log"))
|
|
316
|
+
candidates.push(join(logsDir, f));
|
|
317
|
+
}
|
|
294
318
|
}
|
|
295
|
-
else {
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
319
|
+
else if (existsSync(OPENCLAW_DIR)) {
|
|
320
|
+
for (const f of readdirSync(OPENCLAW_DIR)) {
|
|
321
|
+
if (f.endsWith(".log"))
|
|
322
|
+
candidates.push(join(OPENCLAW_DIR, f));
|
|
323
|
+
}
|
|
299
324
|
}
|
|
300
|
-
if (
|
|
325
|
+
if (candidates.length === 0) {
|
|
301
326
|
return { ok: true, payload: { output: "No log files found." } };
|
|
302
327
|
}
|
|
303
|
-
const
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
328
|
+
const sorted = candidates
|
|
329
|
+
.map(f => ({ path: f, mtime: statSync(f).mtimeMs }))
|
|
330
|
+
.sort((a, b) => {
|
|
331
|
+
// Prioritize clawconnect.log if mtimes are close (within 1s)
|
|
332
|
+
const aIsMain = a.path.endsWith("clawconnect.log");
|
|
333
|
+
const bIsMain = b.path.endsWith("clawconnect.log");
|
|
334
|
+
if (aIsMain !== bIsMain && Math.abs(a.mtime - b.mtime) < 1000) {
|
|
335
|
+
return aIsMain ? -1 : 1;
|
|
336
|
+
}
|
|
337
|
+
return b.mtime - a.mtime;
|
|
338
|
+
});
|
|
339
|
+
const latest = sorted[0].path;
|
|
340
|
+
const stats = statSync(latest);
|
|
341
|
+
const MAX_READ_SIZE = 1024 * 1024; // 1MB chunk is plenty for the last N lines
|
|
342
|
+
let buffer;
|
|
343
|
+
let isTailOnly = false;
|
|
344
|
+
if (stats.size > MAX_READ_SIZE) {
|
|
345
|
+
const fd = openSync(latest, "r");
|
|
346
|
+
buffer = Buffer.alloc(MAX_READ_SIZE);
|
|
347
|
+
readSync(fd, buffer, 0, MAX_READ_SIZE, stats.size - MAX_READ_SIZE);
|
|
348
|
+
closeSync(fd);
|
|
349
|
+
isTailOnly = true;
|
|
350
|
+
}
|
|
351
|
+
else {
|
|
352
|
+
buffer = readFileSync(latest);
|
|
353
|
+
}
|
|
354
|
+
// Detect text encoding of the log file.
|
|
355
|
+
// ... (rest of the detection logic)
|
|
356
|
+
let rawContent;
|
|
357
|
+
let encoding;
|
|
358
|
+
if (buffer.length >= 2 && buffer[0] === 0xFF && buffer[1] === 0xFE) {
|
|
359
|
+
// BOM 0xFF 0xFE → UTF-16LE (common on Windows)
|
|
360
|
+
rawContent = buffer.toString("utf16le");
|
|
361
|
+
encoding = "utf16le";
|
|
362
|
+
}
|
|
363
|
+
else {
|
|
364
|
+
// Assume UTF-8 first
|
|
365
|
+
rawContent = buffer.toString("utf-8");
|
|
366
|
+
encoding = "utf-8";
|
|
367
|
+
// Validate by checking for null characters
|
|
368
|
+
let nullCount = 0;
|
|
369
|
+
const checkLength = Math.min(rawContent.length, 200);
|
|
370
|
+
for (let i = 0; i < checkLength; i++) {
|
|
371
|
+
if (rawContent.charCodeAt(i) === 0)
|
|
372
|
+
nullCount++;
|
|
373
|
+
}
|
|
374
|
+
if (checkLength > 20 && nullCount > checkLength * 0.1) {
|
|
375
|
+
rawContent = buffer.toString("utf16le");
|
|
376
|
+
encoding = "utf16le";
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
const allLines = rawContent
|
|
307
380
|
.replace(/\r\n/g, "\n")
|
|
308
381
|
.replace(/\r/g, "\n")
|
|
309
382
|
.split("\n");
|
|
310
383
|
if (allLines.length > 0 && allLines[allLines.length - 1] === "") {
|
|
311
384
|
allLines.pop();
|
|
312
385
|
}
|
|
313
|
-
|
|
386
|
+
const totalLines = allLines.length;
|
|
387
|
+
const startIndex = Math.max(0, totalLines - limit);
|
|
388
|
+
const lines = allLines.slice(startIndex).map(stripAnsi);
|
|
389
|
+
const returnedLines = lines.length;
|
|
390
|
+
const truncated = startIndex > 0;
|
|
391
|
+
console.log(`[clawconnect] logs read from ${latest} (encoding=${encoding}, limit=${limit}, total=${totalLines})`);
|
|
314
392
|
return {
|
|
315
393
|
ok: true,
|
|
316
394
|
payload: {
|
|
317
395
|
logPath: latest,
|
|
318
|
-
lines
|
|
319
|
-
totalLines
|
|
320
|
-
returnedLines
|
|
321
|
-
truncated
|
|
322
|
-
output: `[${latest}]\n${
|
|
396
|
+
lines,
|
|
397
|
+
totalLines,
|
|
398
|
+
returnedLines,
|
|
399
|
+
truncated,
|
|
400
|
+
output: `[${latest}]\n${lines.join("\n")}`,
|
|
323
401
|
},
|
|
324
402
|
};
|
|
325
403
|
}
|
|
@@ -337,7 +415,7 @@ function getOpenclawVersion() {
|
|
|
337
415
|
const candidates = ["--version", "version"];
|
|
338
416
|
for (const args of candidates) {
|
|
339
417
|
try {
|
|
340
|
-
const output = openclaw(args).toString().trim();
|
|
418
|
+
const output = openclaw([args]).toString().trim();
|
|
341
419
|
const version = output
|
|
342
420
|
.split("\n")
|
|
343
421
|
.map(line => line.trim())
|
|
@@ -363,7 +441,7 @@ function getOpenclawVersion() {
|
|
|
363
441
|
}
|
|
364
442
|
function updateOpenclaw() {
|
|
365
443
|
try {
|
|
366
|
-
const output = openclaw("update").toString();
|
|
444
|
+
const output = openclaw(["update"]).toString();
|
|
367
445
|
console.log("[clawconnect] openclaw updated");
|
|
368
446
|
return { ok: true, payload: { output: output || "openclaw updated successfully." } };
|
|
369
447
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-handlers.js","sourceRoot":"","sources":["../../src/commands/local-handlers.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"local-handlers.js","sourceRoot":"","sources":["../../src/commands/local-handlers.ts"],"names":[],"mappings":"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"}
|
|
@@ -27,7 +27,7 @@ export declare function selectOpenclawBinCandidate(options: {
|
|
|
27
27
|
export declare function execErrorOutput(err: unknown): string;
|
|
28
28
|
export declare function errorMessage(err: unknown): string;
|
|
29
29
|
/** Run openclaw with the resolved path and the enriched subprocess environment. */
|
|
30
|
-
export declare function openclaw(args: string): Buffer;
|
|
30
|
+
export declare function openclaw(args: string[]): Buffer;
|
|
31
31
|
export declare function parseGatewayRuntimeState(output: string): GatewayRuntimeState;
|
|
32
32
|
export declare function resolveGatewayRemoteRestartAction(runtime: GatewayRuntimeState): "start" | "restart";
|
|
33
33
|
export declare function requestGatewayRestart(source?: string, context?: LocalCommandContext): LocalResult | Promise<LocalResult>;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { existsSync } from "fs";
|
|
2
|
-
import { dirname, join, resolve } from "path";
|
|
2
|
+
import { delimiter, dirname, join, resolve } from "path";
|
|
3
3
|
import { homedir } from "os";
|
|
4
4
|
import { execFileSync, execSync, spawn } from "child_process";
|
|
5
5
|
// ---------------------------------------------------------------------------
|
|
@@ -15,26 +15,58 @@ import { execFileSync, execSync, spawn } from "child_process";
|
|
|
15
15
|
// 2. Common package-manager bin dirs (homebrew, /usr/local).
|
|
16
16
|
// ---------------------------------------------------------------------------
|
|
17
17
|
const NODE_BIN_DIR = dirname(process.execPath);
|
|
18
|
-
const
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
PATH
|
|
18
|
+
const IS_WINDOWS = process.platform === "win32";
|
|
19
|
+
const SUBPROCESS_ENV = (() => {
|
|
20
|
+
// On Windows, environment variables are case-insensitive. process.env may
|
|
21
|
+
// contain both `PATH` and `Path`, and spreading both into the child-process
|
|
22
|
+
// environment block can lead to unpredictable path resolution.
|
|
23
|
+
// Build the env object by hand, skipping all case variants of PATH.
|
|
24
|
+
const env = {};
|
|
25
|
+
const seen = new Set();
|
|
26
|
+
for (const [key, value] of Object.entries(process.env)) {
|
|
27
|
+
const upper = key.toUpperCase();
|
|
28
|
+
if (upper === "PATH")
|
|
29
|
+
continue; // will be set explicitly below
|
|
30
|
+
if (!seen.has(upper)) {
|
|
31
|
+
seen.add(upper);
|
|
32
|
+
env[key] = value;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
env.HOME = homedir();
|
|
36
|
+
if (IS_WINDOWS) {
|
|
37
|
+
env.SystemRoot = process.env.SystemRoot;
|
|
38
|
+
}
|
|
39
|
+
env.PATH = [
|
|
22
40
|
NODE_BIN_DIR,
|
|
23
41
|
join(homedir(), ".openclaw", "bin"),
|
|
24
42
|
join(homedir(), ".local", "bin"),
|
|
25
43
|
join(homedir(), ".npm-global", "bin"),
|
|
26
44
|
process.env.PNPM_HOME,
|
|
27
45
|
join(homedir(), ".local", "share", "pnpm"),
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
46
|
+
...(IS_WINDOWS
|
|
47
|
+
? []
|
|
48
|
+
: [
|
|
49
|
+
"/opt/homebrew/bin",
|
|
50
|
+
"/opt/homebrew/sbin",
|
|
51
|
+
"/usr/local/bin",
|
|
52
|
+
"/usr/local/sbin",
|
|
53
|
+
"/usr/bin",
|
|
54
|
+
"/bin",
|
|
55
|
+
]),
|
|
56
|
+
process.env.PATH ?? (IS_WINDOWS ? "" : "/usr/bin:/bin"),
|
|
57
|
+
]
|
|
58
|
+
.filter(Boolean)
|
|
59
|
+
.join(delimiter);
|
|
60
|
+
return env;
|
|
61
|
+
})();
|
|
35
62
|
function canRunOpenclawBin(candidate) {
|
|
36
63
|
try {
|
|
37
|
-
|
|
64
|
+
if (IS_WINDOWS && (candidate.endsWith(".js") || candidate.endsWith(".mjs"))) {
|
|
65
|
+
execFileSync(process.execPath, [candidate, "--version"], { stdio: "pipe", env: SUBPROCESS_ENV, timeout: 3000 });
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
execFileSync(candidate, ["--version"], { stdio: "pipe", env: SUBPROCESS_ENV, timeout: 3000 });
|
|
69
|
+
}
|
|
38
70
|
return true;
|
|
39
71
|
}
|
|
40
72
|
catch {
|
|
@@ -46,8 +78,18 @@ function bundledOpenclawBin() {
|
|
|
46
78
|
if (explicitPackageBin && existsSync(explicitPackageBin)) {
|
|
47
79
|
return explicitPackageBin;
|
|
48
80
|
}
|
|
81
|
+
// On Windows, node_modules might be in a different structure if globally installed.
|
|
49
82
|
const candidate = resolve(NODE_BIN_DIR, "..", "lib", "node_modules", "openclaw", "openclaw.mjs");
|
|
50
|
-
|
|
83
|
+
if (existsSync(candidate))
|
|
84
|
+
return candidate;
|
|
85
|
+
const winCandidate = resolve(NODE_BIN_DIR, "node_modules", "openclaw", "openclaw.mjs");
|
|
86
|
+
if (IS_WINDOWS && existsSync(winCandidate))
|
|
87
|
+
return winCandidate;
|
|
88
|
+
// Windows npm global install path: %APPDATA%\npm\node_modules\...
|
|
89
|
+
const winNpmGlobalCandidate = join(process.env.APPDATA ?? homedir(), "npm", "node_modules", "openclaw", "openclaw.mjs");
|
|
90
|
+
if (IS_WINDOWS && existsSync(winNpmGlobalCandidate))
|
|
91
|
+
return winNpmGlobalCandidate;
|
|
92
|
+
return null;
|
|
51
93
|
}
|
|
52
94
|
export function selectOpenclawBinCandidate(options) {
|
|
53
95
|
const exists = options.exists ?? existsSync;
|
|
@@ -73,23 +115,27 @@ export function selectOpenclawBinCandidate(options) {
|
|
|
73
115
|
function resolveOpenclawBin() {
|
|
74
116
|
let pathBin;
|
|
75
117
|
try {
|
|
76
|
-
const
|
|
118
|
+
const whichCmd = IS_WINDOWS ? "where openclaw" : "which openclaw";
|
|
119
|
+
const p = execSync(whichCmd, { stdio: "pipe", env: SUBPROCESS_ENV, timeout: 3000 })
|
|
77
120
|
.toString().trim();
|
|
78
|
-
|
|
121
|
+
// 'where' might return multiple lines, take the first one.
|
|
122
|
+
pathBin = p.split(/\r?\n/)[0] || undefined;
|
|
79
123
|
}
|
|
80
124
|
catch {
|
|
81
125
|
// fall through
|
|
82
126
|
}
|
|
127
|
+
const extraBins = [
|
|
128
|
+
join(homedir(), ".openclaw", "bin", IS_WINDOWS ? "openclaw.cmd" : "openclaw"),
|
|
129
|
+
join(homedir(), ".openclaw", "bin", "openclaw"),
|
|
130
|
+
join(homedir(), ".local", "bin", "openclaw"),
|
|
131
|
+
join(homedir(), ".npm-global", "bin", "openclaw"),
|
|
132
|
+
...(process.env.PNPM_HOME ? [join(process.env.PNPM_HOME, "openclaw")] : []),
|
|
133
|
+
join(homedir(), ".local", "share", "pnpm", "openclaw"),
|
|
134
|
+
];
|
|
83
135
|
return selectOpenclawBinCandidate({
|
|
84
136
|
explicitBin: process.env.OPENCLAW_BIN,
|
|
85
137
|
pathBin,
|
|
86
|
-
extraBins
|
|
87
|
-
join(homedir(), ".openclaw", "bin", "openclaw"),
|
|
88
|
-
join(homedir(), ".local", "bin", "openclaw"),
|
|
89
|
-
join(homedir(), ".npm-global", "bin", "openclaw"),
|
|
90
|
-
...(process.env.PNPM_HOME ? [join(process.env.PNPM_HOME, "openclaw")] : []),
|
|
91
|
-
join(homedir(), ".local", "share", "pnpm", "openclaw"),
|
|
92
|
-
],
|
|
138
|
+
extraBins,
|
|
93
139
|
packageBin: bundledOpenclawBin(),
|
|
94
140
|
});
|
|
95
141
|
}
|
|
@@ -116,11 +162,22 @@ export function errorMessage(err) {
|
|
|
116
162
|
}
|
|
117
163
|
/** Run openclaw with the resolved path and the enriched subprocess environment. */
|
|
118
164
|
export function openclaw(args) {
|
|
119
|
-
|
|
165
|
+
const bin = getOpenclawBin();
|
|
166
|
+
if (IS_WINDOWS && (bin.endsWith(".js") || bin.endsWith(".mjs"))) {
|
|
167
|
+
return execFileSync(process.execPath, [bin, ...args], { stdio: "pipe", env: SUBPROCESS_ENV });
|
|
168
|
+
}
|
|
169
|
+
return execFileSync(bin, args, { stdio: "pipe", env: SUBPROCESS_ENV });
|
|
120
170
|
}
|
|
121
171
|
function launchGatewayLifecycleCommand(action, source = "clawconnect") {
|
|
122
172
|
try {
|
|
123
|
-
const
|
|
173
|
+
const openclawBin = getOpenclawBin();
|
|
174
|
+
const spawnArgs = IS_WINDOWS && (openclawBin.endsWith(".js") || openclawBin.endsWith(".mjs"))
|
|
175
|
+
? [openclawBin, "gateway", action]
|
|
176
|
+
: ["gateway", action];
|
|
177
|
+
const spawnExe = IS_WINDOWS && (openclawBin.endsWith(".js") || openclawBin.endsWith(".mjs"))
|
|
178
|
+
? process.execPath
|
|
179
|
+
: openclawBin;
|
|
180
|
+
const child = spawn(spawnExe, spawnArgs, {
|
|
124
181
|
env: SUBPROCESS_ENV,
|
|
125
182
|
stdio: "ignore",
|
|
126
183
|
detached: true,
|
|
@@ -160,7 +217,7 @@ export function resolveGatewayRemoteRestartAction(runtime) {
|
|
|
160
217
|
}
|
|
161
218
|
function readGatewayRuntimeState() {
|
|
162
219
|
try {
|
|
163
|
-
const output = openclaw("gateway status --no-probe").toString();
|
|
220
|
+
const output = openclaw(["gateway", "status", "--no-probe"]).toString();
|
|
164
221
|
return parseGatewayRuntimeState(output);
|
|
165
222
|
}
|
|
166
223
|
catch (err) {
|
|
@@ -183,7 +240,13 @@ export function requestGatewayRemoteRestart(source = "clawconnect", context = {}
|
|
|
183
240
|
}
|
|
184
241
|
export async function runGatewayLifecycleStreaming(action, context = {}) {
|
|
185
242
|
const openclawBin = getOpenclawBin();
|
|
186
|
-
const
|
|
243
|
+
const spawnArgs = IS_WINDOWS && (openclawBin.endsWith(".js") || openclawBin.endsWith(".mjs"))
|
|
244
|
+
? [openclawBin, "gateway", action]
|
|
245
|
+
: ["gateway", action];
|
|
246
|
+
const spawnExe = IS_WINDOWS && (openclawBin.endsWith(".js") || openclawBin.endsWith(".mjs"))
|
|
247
|
+
? process.execPath
|
|
248
|
+
: openclawBin;
|
|
249
|
+
const child = spawn(spawnExe, spawnArgs, {
|
|
187
250
|
env: SUBPROCESS_ENV,
|
|
188
251
|
stdio: ["ignore", "pipe", "pipe"],
|
|
189
252
|
windowsHide: true,
|
|
@@ -314,7 +377,13 @@ export async function runGatewayLifecycleStreaming(action, context = {}) {
|
|
|
314
377
|
}
|
|
315
378
|
export async function runDoctorFix(context = {}) {
|
|
316
379
|
const openclawBin = getOpenclawBin();
|
|
317
|
-
const
|
|
380
|
+
const spawnArgs = IS_WINDOWS && (openclawBin.endsWith(".js") || openclawBin.endsWith(".mjs"))
|
|
381
|
+
? [openclawBin, "doctor", "--fix"]
|
|
382
|
+
: ["doctor", "--fix"];
|
|
383
|
+
const spawnExe = IS_WINDOWS && (openclawBin.endsWith(".js") || openclawBin.endsWith(".mjs"))
|
|
384
|
+
? process.execPath
|
|
385
|
+
: openclawBin;
|
|
386
|
+
const child = spawn(spawnExe, spawnArgs, {
|
|
318
387
|
env: SUBPROCESS_ENV,
|
|
319
388
|
stdio: ["ignore", "pipe", "pipe"],
|
|
320
389
|
windowsHide: true,
|