clawconnect-agent 0.1.20 → 0.1.22

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 (78) hide show
  1. package/.env.example +22 -2
  2. package/README.md +8 -0
  3. package/README.zh-CN.md +29 -0
  4. package/dist/commands/install.js +3 -19
  5. package/dist/commands/install.js.map +1 -1
  6. package/dist/commands/set-token.js +2 -1
  7. package/dist/commands/set-token.js.map +1 -1
  8. package/dist/commands/status.js +34 -6
  9. package/dist/commands/status.js.map +1 -1
  10. package/dist/config/config.d.ts +1 -1
  11. package/dist/config/config.js +38 -10
  12. package/dist/config/config.js.map +1 -1
  13. package/dist/config/env.d.ts +2 -1
  14. package/dist/config/env.js +32 -2
  15. package/dist/config/env.js.map +1 -1
  16. package/dist/core/relay/voice-input.js +13 -7
  17. package/dist/core/relay/voice-input.js.map +1 -1
  18. package/dist/hermes/relay/hermes-state-db-realtime.js +4 -21
  19. package/dist/hermes/relay/hermes-state-db-realtime.js.map +1 -1
  20. package/dist/hermes/runtime/hermes-runtime-api-client.js +5 -30
  21. package/dist/hermes/runtime/hermes-runtime-api-client.js.map +1 -1
  22. package/dist/hermes/runtime/hermes-runtime-api-settings.d.ts +19 -0
  23. package/dist/hermes/runtime/hermes-runtime-api-settings.js +69 -0
  24. package/dist/hermes/runtime/hermes-runtime-api-settings.js.map +1 -0
  25. package/dist/hermes/runtime/hermes-runtime-backups.js +6 -4
  26. package/dist/hermes/runtime/hermes-runtime-backups.js.map +1 -1
  27. package/dist/hermes/runtime/hermes-runtime-chat.js +3 -2
  28. package/dist/hermes/runtime/hermes-runtime-chat.js.map +1 -1
  29. package/dist/hermes/runtime/hermes-runtime-lifecycle.js +3 -2
  30. package/dist/hermes/runtime/hermes-runtime-lifecycle.js.map +1 -1
  31. package/dist/hermes/runtime/hermes-runtime-paths.d.ts +9 -0
  32. package/dist/hermes/runtime/hermes-runtime-paths.js +67 -0
  33. package/dist/hermes/runtime/hermes-runtime-paths.js.map +1 -0
  34. package/dist/hermes/runtime/hermes-runtime-process.d.ts +2 -0
  35. package/dist/hermes/runtime/hermes-runtime-process.js +70 -30
  36. package/dist/hermes/runtime/hermes-runtime-process.js.map +1 -1
  37. package/dist/hermes/runtime/hermes-runtime-skills.js +10 -5
  38. package/dist/hermes/runtime/hermes-runtime-skills.js.map +1 -1
  39. package/dist/hermes/runtime/hermes-runtime-state-db.js +3 -18
  40. package/dist/hermes/runtime/hermes-runtime-state-db.js.map +1 -1
  41. package/dist/i18n/index.js +2 -2
  42. package/dist/i18n/index.js.map +1 -1
  43. package/dist/index.js +2 -1
  44. package/dist/index.js.map +1 -1
  45. package/dist/openclaw/backups/backup-manager.js +10 -8
  46. package/dist/openclaw/backups/backup-manager.js.map +1 -1
  47. package/dist/openclaw/config/provider-config.js +19 -19
  48. package/dist/openclaw/config/provider-config.js.map +1 -1
  49. package/dist/openclaw/handlers/local-handlers.d.ts +1 -0
  50. package/dist/openclaw/handlers/local-handlers.js +29 -45
  51. package/dist/openclaw/handlers/local-handlers.js.map +1 -1
  52. package/dist/openclaw/relay/chat-send-attachments.js +2 -3
  53. package/dist/openclaw/relay/chat-send-attachments.js.map +1 -1
  54. package/dist/openclaw/relay/outgoing-media-relay.d.ts +1 -0
  55. package/dist/openclaw/relay/outgoing-media-relay.js +18 -7
  56. package/dist/openclaw/relay/outgoing-media-relay.js.map +1 -1
  57. package/dist/openclaw/relay/session-context.js +2 -3
  58. package/dist/openclaw/relay/session-context.js.map +1 -1
  59. package/dist/openclaw/runtime/local-runtime.d.ts +1 -0
  60. package/dist/openclaw/runtime/local-runtime.js +81 -50
  61. package/dist/openclaw/runtime/local-runtime.js.map +1 -1
  62. package/dist/openclaw/runtime/openclaw-paths.d.ts +15 -0
  63. package/dist/openclaw/runtime/openclaw-paths.js +52 -0
  64. package/dist/openclaw/runtime/openclaw-paths.js.map +1 -0
  65. package/dist/openclaw/session-store.js +3 -3
  66. package/dist/openclaw/session-store.js.map +1 -1
  67. package/dist/platform/process-invocation.d.ts +14 -0
  68. package/dist/platform/process-invocation.js +72 -0
  69. package/dist/platform/process-invocation.js.map +1 -0
  70. package/dist/platform/service-manager-windows.d.ts +18 -5
  71. package/dist/platform/service-manager-windows.js +124 -92
  72. package/dist/platform/service-manager-windows.js.map +1 -1
  73. package/dist/platform/service-manager.js +5 -5
  74. package/dist/platform/service-manager.js.map +1 -1
  75. package/dist/platform/text-file-decoder.d.ts +5 -0
  76. package/dist/platform/text-file-decoder.js +40 -0
  77. package/dist/platform/text-file-decoder.js.map +1 -0
  78. package/package.json +3 -2
@@ -0,0 +1,52 @@
1
+ import { homedir } from "node:os";
2
+ import { dirname, join, resolve } from "node:path";
3
+ /**
4
+ * OpenClaw 官方允许安装方式和运行用户独立于状态目录。
5
+ * 所有 ClawConnect 功能必须经过同一解析器,避免连接端口正确但日志、会话或备份仍误读 ~/.openclaw。
6
+ */
7
+ export function resolveOpenClawStateDir(options = {}) {
8
+ const env = options.env ?? process.env;
9
+ const systemHome = options.systemHome ?? homedir();
10
+ const explicitStateDir = firstNonEmpty(env.OPENCLAW_STATE_DIR, env.CLAWCONNECT_OPENCLAW_HOME);
11
+ if (explicitStateDir) {
12
+ return resolveConfiguredPath(explicitStateDir, systemHome);
13
+ }
14
+ const openClawHome = firstNonEmpty(env.OPENCLAW_HOME);
15
+ return openClawHome
16
+ ? join(resolveConfiguredPath(openClawHome, systemHome), ".openclaw")
17
+ : join(systemHome, ".openclaw");
18
+ }
19
+ export function resolveOpenClawConfigPath(options = {}) {
20
+ const env = options.env ?? process.env;
21
+ const systemHome = options.systemHome ?? homedir();
22
+ const explicitConfigPath = firstNonEmpty(env.OPENCLAW_CONFIG_PATH);
23
+ return explicitConfigPath
24
+ ? resolveConfiguredPath(explicitConfigPath, systemHome)
25
+ : join(resolveOpenClawStateDir({ env, systemHome }), "openclaw.json");
26
+ }
27
+ export function resolveOpenClawConfigDir(options = {}) {
28
+ return dirname(resolveOpenClawConfigPath(options));
29
+ }
30
+ export function resolveOpenClawAgentsDir(options = {}) {
31
+ return join(resolveOpenClawStateDir(options), "agents");
32
+ }
33
+ export function resolveConfiguredPath(value, systemHome = homedir()) {
34
+ const trimmed = value.trim();
35
+ if (trimmed === "~") {
36
+ return systemHome;
37
+ }
38
+ if (trimmed.startsWith("~/") || trimmed.startsWith("~\\")) {
39
+ return resolve(systemHome, trimmed.slice(2));
40
+ }
41
+ return resolve(trimmed);
42
+ }
43
+ function firstNonEmpty(...values) {
44
+ for (const value of values) {
45
+ const trimmed = value?.trim();
46
+ if (trimmed) {
47
+ return trimmed;
48
+ }
49
+ }
50
+ return undefined;
51
+ }
52
+ //# sourceMappingURL=openclaw-paths.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openclaw-paths.js","sourceRoot":"","sources":["../../../src/openclaw/runtime/openclaw-paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAcnD;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CAAC,UAA+B,EAAE;IACvE,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;IACvC,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,OAAO,EAAE,CAAC;IACnD,MAAM,gBAAgB,GAAG,aAAa,CAAC,GAAG,CAAC,kBAAkB,EAAE,GAAG,CAAC,yBAAyB,CAAC,CAAC;IAC9F,IAAI,gBAAgB,EAAE,CAAC;QACrB,OAAO,qBAAqB,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,YAAY,GAAG,aAAa,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IACtD,OAAO,YAAY;QACjB,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,YAAY,EAAE,UAAU,CAAC,EAAE,WAAW,CAAC;QACpE,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,UAA+B,EAAE;IACzE,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;IACvC,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,OAAO,EAAE,CAAC;IACnD,MAAM,kBAAkB,GAAG,aAAa,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IACnE,OAAO,kBAAkB;QACvB,CAAC,CAAC,qBAAqB,CAAC,kBAAkB,EAAE,UAAU,CAAC;QACvD,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,EAAE,eAAe,CAAC,CAAC;AAC1E,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,UAA+B,EAAE;IACxE,OAAO,OAAO,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,UAA+B,EAAE;IACxE,OAAO,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,KAAa,EAAE,UAAU,GAAG,OAAO,EAAE;IACzE,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,IAAI,OAAO,KAAK,GAAG,EAAE,CAAC;QACpB,OAAO,UAAU,CAAC;IACpB,CAAC;IACD,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1D,OAAO,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,aAAa,CAAC,GAAG,MAAiC;IACzD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,KAAK,EAAE,IAAI,EAAE,CAAC;QAC9B,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,OAAO,CAAC;QACjB,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import { readdir, readFile } from "fs/promises";
2
- import { homedir } from "os";
3
2
  import { basename, isAbsolute, join, resolve } from "path";
4
- export async function inferLatestOpenClawSessionKey(sessionStoreRoot = join(homedir(), ".openclaw")) {
3
+ import { resolveOpenClawStateDir } from "./runtime/openclaw-paths.js";
4
+ export async function inferLatestOpenClawSessionKey(sessionStoreRoot = resolveOpenClawStateDir()) {
5
5
  const agentsDir = join(sessionStoreRoot, "agents");
6
6
  let agentEntries;
7
7
  try {
@@ -107,7 +107,7 @@ function userTurnRunId(message, parsed) {
107
107
  function assistantToolRunId(message, parsed) {
108
108
  return normalizeRunId(firstString(message.sourceRunId, message.source_run_id, message.runId, message.run_id, message.turnId, message.turn_id, message.messageId, message.message_id, message.id, parsed.id));
109
109
  }
110
- async function resolveOpenClawSessionLogPath(sessionKey, sessionStoreRoot = join(homedir(), ".openclaw")) {
110
+ async function resolveOpenClawSessionLogPath(sessionKey, sessionStoreRoot = resolveOpenClawStateDir()) {
111
111
  const trimmedSessionKey = sessionKey.trim();
112
112
  if (!trimmedSessionKey) {
113
113
  return undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"session-store.js","sourceRoot":"","sources":["../../src/openclaw/session-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session-store.js","sourceRoot":"","sources":["../../src/openclaw/session-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ export interface ProcessInvocation {
2
+ command: string;
3
+ args: string[];
4
+ }
5
+ /** Windows 不能由 CreateProcess 直接执行 .cmd/.bat;统一经 cmd.exe,JS 入口统一经当前 Node。 */
6
+ export declare function buildExecutableInvocation(executable: string, args: string[], options?: {
7
+ platform?: NodeJS.Platform;
8
+ nodePath?: string;
9
+ commandShell?: string;
10
+ powershellPath?: string;
11
+ }): ProcessInvocation;
12
+ export declare function buildWindowsCommandLine(args: string[]): string;
13
+ export declare function buildShellCommandInvocation(command: string, platform?: NodeJS.Platform): ProcessInvocation;
14
+ export declare function quoteShellArgument(value: string, platform?: NodeJS.Platform): string;
@@ -0,0 +1,72 @@
1
+ import { extname } from "node:path";
2
+ /** Windows 不能由 CreateProcess 直接执行 .cmd/.bat;统一经 cmd.exe,JS 入口统一经当前 Node。 */
3
+ export function buildExecutableInvocation(executable, args, options = {}) {
4
+ const platform = options.platform ?? process.platform;
5
+ if (platform !== "win32") {
6
+ return { command: executable, args };
7
+ }
8
+ const extension = extname(executable).toLowerCase();
9
+ if ([".js", ".mjs", ".cjs"].includes(extension)) {
10
+ return { command: options.nodePath ?? process.execPath, args: [executable, ...args] };
11
+ }
12
+ if (extension === ".cmd" || extension === ".bat") {
13
+ return {
14
+ command: options.commandShell ?? process.env.ComSpec ?? "cmd.exe",
15
+ args: ["/d", "/s", "/c", buildWindowsCommandLine([executable, ...args])],
16
+ };
17
+ }
18
+ if (extension === ".ps1") {
19
+ return {
20
+ command: options.powershellPath ?? "powershell.exe",
21
+ args: ["-NoProfile", "-NonInteractive", "-File", executable, ...args],
22
+ };
23
+ }
24
+ return { command: executable, args };
25
+ }
26
+ export function buildWindowsCommandLine(args) {
27
+ return args.map(quoteWindowsArgument).join(" ");
28
+ }
29
+ export function buildShellCommandInvocation(command, platform = process.platform) {
30
+ if (platform !== "win32") {
31
+ return { command: "sh", args: ["-lc", command] };
32
+ }
33
+ const utf8Bootstrap = [
34
+ "$utf8NoBom = [System.Text.UTF8Encoding]::new($false)",
35
+ "[Console]::InputEncoding = $utf8NoBom",
36
+ "[Console]::OutputEncoding = $utf8NoBom",
37
+ "$OutputEncoding = $utf8NoBom",
38
+ command,
39
+ ].join("; ");
40
+ return {
41
+ command: "powershell.exe",
42
+ args: ["-NoProfile", "-NonInteractive", "-Command", utf8Bootstrap],
43
+ };
44
+ }
45
+ export function quoteShellArgument(value, platform = process.platform) {
46
+ if (platform === "win32") {
47
+ return `'${value.replace(/'/g, "''")}'`;
48
+ }
49
+ return `'${value.replaceAll("'", "'\\''")}'`;
50
+ }
51
+ function quoteWindowsArgument(arg) {
52
+ if (!/[\s"]/.test(arg)) {
53
+ return arg;
54
+ }
55
+ let result = '"';
56
+ let backslashes = 0;
57
+ for (const char of arg) {
58
+ if (char === "\\") {
59
+ backslashes += 1;
60
+ continue;
61
+ }
62
+ if (char === '"') {
63
+ result += "\\".repeat(backslashes * 2 + 1) + '"';
64
+ backslashes = 0;
65
+ continue;
66
+ }
67
+ result += "\\".repeat(backslashes) + char;
68
+ backslashes = 0;
69
+ }
70
+ return result + "\\".repeat(backslashes * 2) + '"';
71
+ }
72
+ //# sourceMappingURL=process-invocation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"process-invocation.js","sourceRoot":"","sources":["../../src/platform/process-invocation.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,21 @@
1
1
  import type { ServiceStatus } from "./service-manager-common.js";
2
2
  export declare const TASK_NAME = "ClawConnectAgent";
3
+ export declare const WINDOWS_SERVICE_RUNNER_NAME = "clawconnect-service.ps1";
4
+ export declare function windowsTaskName(profile?: string): string;
3
5
  export declare function buildWindowsPowerShellBootstrap(command: string): string;
4
- export declare function installWindowsService(): boolean;
5
- export declare function uninstallWindowsService(): boolean;
6
- export declare function restartWindowsService(): boolean;
7
- export declare function stopWindowsService(): boolean;
8
- export declare function getWindowsServiceStatus(): ServiceStatus;
6
+ export declare function normalizeWindowsServiceLogEncoding(path: string): void;
7
+ export declare function buildWindowsServiceProcessCommand(args: string[], logPath: string, errorLogPath: string): string;
8
+ export declare function windowsServiceRunnerPath(profile?: string): string;
9
+ export declare function buildWindowsServiceTaskCommand(runnerPath: string): string;
10
+ export declare function writeWindowsServiceRunner(profile: string | undefined, args: string[], logPath: string, errorLogPath: string): string;
11
+ /**
12
+ * Kill any running node processes that are executing this specific script.
13
+ * Uses execFileSync to bypass cmd.exe, avoiding CMD quote-mangling.
14
+ * Returns true if any processes were killed.
15
+ */
16
+ export declare function buildWindowsProcessQueryScript(profile?: string): string;
17
+ export declare function installWindowsService(profile?: string): boolean;
18
+ export declare function uninstallWindowsService(profile?: string): boolean;
19
+ export declare function restartWindowsService(profile?: string): boolean;
20
+ export declare function stopWindowsService(profile?: string): boolean;
21
+ export declare function getWindowsServiceStatus(profile?: string): ServiceStatus;
@@ -1,6 +1,15 @@
1
1
  import { execFileSync } from "child_process";
2
- import { ensureLogDir, ERROR_LOG_PATH, getProgramArgs, LOG_PATH, } from "./service-manager-common.js";
2
+ import { existsSync, readFileSync, unlinkSync, writeFileSync } from "fs";
3
+ import { join } from "path";
4
+ import { ensureLogDir, getProfileErrorLogPath, getProfileLogDir, getProfileLogPath, getProgramArgs, resolveServiceEntryPath, setRestrictiveFilePermissions, } from "./service-manager-common.js";
5
+ import { getActiveProfile, normalizeProfileName } from "../config/profile.js";
6
+ import { decodeTextBuffer } from "./text-file-decoder.js";
3
7
  export const TASK_NAME = "ClawConnectAgent";
8
+ export const WINDOWS_SERVICE_RUNNER_NAME = "clawconnect-service.ps1";
9
+ export function windowsTaskName(profile) {
10
+ const normalized = normalizeProfileName(profile);
11
+ return normalized ? `${TASK_NAME}-${normalized}` : TASK_NAME;
12
+ }
4
13
  function qps(value) {
5
14
  return `'${value.replace(/'/g, "''")}'`;
6
15
  }
@@ -16,64 +25,68 @@ export function buildWindowsPowerShellBootstrap(command) {
16
25
  command,
17
26
  ].join("; ");
18
27
  }
19
- /**
20
- * Build a command-line string suitable for Windows CommandLineToArgvW
21
- * (used by CreateProcess when schtasks later runs the task).
22
- *
23
- * - Args containing spaces or tabs are double-quoted.
24
- * - A literal `"` inside an arg is escaped as `\"` per Windows convention.
25
- * - Backslashes before a `"` are doubled to prevent them from being
26
- * interpreted as escaping the quote character.
27
- */
28
- function buildWindowsCommandLine(args) {
29
- return args
30
- .map((arg) => {
31
- if (/[ \t"]/.test(arg)) {
32
- // Proper CommandLineToArgvW quoting:
33
- // 1. backslashes before a " must be doubled
34
- // 2. each " becomes \"
35
- // 3. wrap the result in quotes
36
- let result = "";
37
- for (let i = 0; i < arg.length; i++) {
38
- let backslashCount = 0;
39
- while (i < arg.length && arg[i] === "\\") {
40
- backslashCount++;
41
- i++;
42
- }
43
- if (i >= arg.length) {
44
- // All backslashes at end: double them before the closing quote
45
- result += "\\".repeat(backslashCount * 2);
46
- }
47
- else if (arg[i] === '"') {
48
- // Backslashes before a quote: double + add escape quote
49
- result += "\\".repeat(backslashCount * 2 + 1);
50
- result += '"';
51
- }
52
- else {
53
- // Normal character: backslashes are literal
54
- result += "\\".repeat(backslashCount);
55
- result += arg[i];
56
- }
57
- }
58
- return `"${result}"`;
59
- }
60
- return arg;
61
- })
62
- .join(" ");
28
+ export function normalizeWindowsServiceLogEncoding(path) {
29
+ if (!existsSync(path)) {
30
+ return;
31
+ }
32
+ const decoded = decodeTextBuffer(readFileSync(path));
33
+ if (decoded.encoding !== "utf8") {
34
+ writeFileSync(path, decoded.text, "utf8");
35
+ }
36
+ }
37
+ export function buildWindowsServiceProcessCommand(args, logPath, errorLogPath) {
38
+ const [execPath, ...execArgs] = args;
39
+ if (!execPath) {
40
+ throw new Error("Windows service executable is required");
41
+ }
42
+ return buildWindowsPowerShellBootstrap(`& ${qps(execPath)} ${execArgs.map((arg) => qps(arg)).join(" ")} >> ${qps(logPath)} 2>> ${qps(errorLogPath)}`);
43
+ }
44
+ export function windowsServiceRunnerPath(profile) {
45
+ return join(getProfileLogDir(profile), WINDOWS_SERVICE_RUNNER_NAME);
46
+ }
47
+ export function buildWindowsServiceTaskCommand(runnerPath) {
48
+ return `powershell.exe -NoProfile -WindowStyle Hidden -ExecutionPolicy Bypass -File "${runnerPath}"`;
49
+ }
50
+ export function writeWindowsServiceRunner(profile, args, logPath, errorLogPath) {
51
+ const runnerPath = windowsServiceRunnerPath(profile);
52
+ const script = `${buildWindowsServiceProcessCommand(args, logPath, errorLogPath)}\r\n`;
53
+ // Windows PowerShell 5.1 treats UTF-8 files without a BOM as the active ANSI
54
+ // code page. Keep the BOM so user names and install paths remain intact.
55
+ const utf8WithBom = Buffer.concat([
56
+ Buffer.from([0xef, 0xbb, 0xbf]),
57
+ Buffer.from(script, "utf8"),
58
+ ]);
59
+ writeFileSync(runnerPath, utf8WithBom);
60
+ setRestrictiveFilePermissions(runnerPath);
61
+ return runnerPath;
63
62
  }
64
63
  /**
65
64
  * Kill any running node processes that are executing this specific script.
66
65
  * Uses execFileSync to bypass cmd.exe, avoiding CMD quote-mangling.
67
66
  * Returns true if any processes were killed.
68
67
  */
69
- function killWindowsProcess() {
68
+ export function buildWindowsProcessQueryScript(profile) {
69
+ const profileFilter = normalizeProfileName(profile)
70
+ ? `($_.CommandLine -match ('(?:^|\\s)--profile(?:\\s+|=)' + [regex]::Escape($env:CLAW_PROFILE_NAME) + '(?:\\s|$)'))`
71
+ : `($_.CommandLine -notmatch '(?:^|\\s)--profile(?:\\s|=)')`;
72
+ return `Get-CimInstance Win32_Process -Filter "Name = 'node.exe'" | Where-Object { $_.CommandLine -match [regex]::Escape($env:CLAW_SCRIPT_PATH) -and ${profileFilter} } | Select-Object -ExpandProperty ProcessId`;
73
+ }
74
+ function windowsProcessQueryEnv(profile) {
75
+ const scriptPath = process.argv[1];
76
+ return {
77
+ ...process.env,
78
+ CLAW_SCRIPT_PATH: scriptPath ? resolveServiceEntryPath(scriptPath) : "",
79
+ CLAW_PROFILE_NAME: normalizeProfileName(profile) ?? "",
80
+ };
81
+ }
82
+ function killWindowsProcess(profile) {
70
83
  const scriptPath = process.argv[1];
71
84
  if (!scriptPath)
72
85
  return false;
73
86
  const currentPid = process.pid;
74
87
  try {
75
- const psScript = `Get-CimInstance Win32_Process -Filter "Name = 'node.exe'" | Where-Object { $_.CommandLine -match [regex]::Escape($env:CLAW_SCRIPT_PATH) } | Select-Object -ExpandProperty ProcessId`;
76
- const output = execFileSync("powershell", ["-NoProfile", "-Command", psScript], { stdio: "pipe", env: { ...process.env, CLAW_SCRIPT_PATH: scriptPath } })
88
+ const psScript = buildWindowsProcessQueryScript(profile);
89
+ const output = execFileSync("powershell", ["-NoProfile", "-Command", psScript], { stdio: "pipe", env: windowsProcessQueryEnv(profile) })
77
90
  .toString()
78
91
  .trim();
79
92
  const pids = output
@@ -115,53 +128,55 @@ function killWindowsProcess() {
115
128
  return false;
116
129
  }
117
130
  }
118
- export function installWindowsService() {
119
- const args = getProgramArgs();
131
+ export function installWindowsService(profile) {
132
+ const resolvedProfile = normalizeProfileName(profile ?? getActiveProfile());
133
+ const taskName = windowsTaskName(resolvedProfile);
134
+ const logPath = getProfileLogPath(resolvedProfile);
135
+ const errorLogPath = getProfileErrorLogPath(resolvedProfile);
136
+ const args = getProgramArgs(resolvedProfile);
120
137
  try {
121
- ensureLogDir();
138
+ ensureLogDir(resolvedProfile);
139
+ try {
140
+ execFileSync("schtasks", ["/end", "/tn", taskName], { stdio: "pipe" });
141
+ }
142
+ catch {
143
+ // First install or already stopped.
144
+ }
145
+ killWindowsProcess(resolvedProfile);
146
+ // 旧版 PowerShell 可能创建 UTF-16LE 日志;转换后再以 UTF-8 追加,避免一个文件混合两种编码。
147
+ normalizeWindowsServiceLogEncoding(logPath);
148
+ normalizeWindowsServiceLogEncoding(errorLogPath);
149
+ // Keep the scheduled task command short. schtasks limits /tr to 261
150
+ // characters, while NVM/npm paths plus UTF-8 bootstrap and log redirects
151
+ // can easily exceed it when embedded inline.
152
+ const runnerPath = writeWindowsServiceRunner(resolvedProfile, args, logPath, errorLogPath);
153
+ const taskCommand = buildWindowsServiceTaskCommand(runnerPath);
154
+ const taskArguments = taskCommand.slice("powershell.exe ".length);
122
155
  // ── Attempt 1: PowerShell ScheduledTasks module ──────────────────────
123
156
  // Supports RestartOnFailure (crash recovery) and full settings control.
124
157
  // Available on Windows 10 / Server 2016+.
125
158
  try {
126
- const execPath = args[0];
127
- const execArgs = args.slice(1);
128
159
  // We use 'powershell -WindowStyle Hidden' to launch node without a visible console window.
129
160
  // This is the most reliable native way to run a background console app on login.
130
161
  // Stdout/stderr are redirected to log files, matching the behavior of the
131
162
  // Linux (systemd/nohup) and macOS (launchd) service managers.
132
- const innerCmd = buildWindowsPowerShellBootstrap(`& ${qps(execPath)} ${execArgs.map((a) => qps(a)).join(" ")} >> ${qps(LOG_PATH)} 2>> ${qps(ERROR_LOG_PATH)}`);
133
- // The -Argument value uses a PowerShell double-quote string ("" → literal ")
134
- // so that single quotes from qps() inside it are preserved literally.
135
- // Escape any `$` or `` ` `` in the paths to prevent PowerShell variable expansion.
136
- const escapedInner = innerCmd.replace(/`/g, "``").replace(/\$/g, "`$");
137
- const quotedArg = `"-WindowStyle Hidden -Command ""${escapedInner}"""`;
138
163
  const psScript = [
139
- `$action = New-ScheduledTaskAction -Execute 'powershell.exe' -Argument ${quotedArg}`,
164
+ `$action = New-ScheduledTaskAction -Execute 'powershell.exe' -Argument ${qps(taskArguments)}`,
140
165
  `$trigger = New-ScheduledTaskTrigger -AtLogon`,
141
166
  `$principal = New-ScheduledTaskPrincipal -UserId $env:USERNAME -LogonType Interactive -RunLevel Highest`,
142
167
  `$settings = New-ScheduledTaskSettingsSet -RestartCount 3 -RestartInterval (New-TimeSpan -Minutes 1) -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries`,
143
- `Register-ScheduledTask -TaskName ${qps(TASK_NAME)} -Action $action -Trigger $trigger -Principal $principal -Settings $settings -Force | Out-Null`,
168
+ `Register-ScheduledTask -TaskName ${qps(taskName)} -Action $action -Trigger $trigger -Principal $principal -Settings $settings -Force | Out-Null`,
144
169
  ].join("\n");
145
170
  execFileSync("powershell", ["-NoProfile", "-Command", psScript], { stdio: "pipe" });
146
- execFileSync("schtasks", ["/run", "/tn", TASK_NAME], { stdio: "pipe" });
171
+ execFileSync("schtasks", ["/run", "/tn", taskName], { stdio: "pipe" });
147
172
  return true;
148
173
  }
149
174
  catch (err) {
150
175
  // Fall through to basic schtasks below
151
176
  }
152
177
  // ── Attempt 2: Basic schtasks (no crash recovery) ────────────────────
153
- const cmdLine = buildWindowsCommandLine(args);
154
- // Wrap in powershell -WindowStyle Hidden so no console window pops up at login.
155
- // schtasks stores /tr as-is; CreateProcess parses it with CommandLineToArgvW.
156
- // The inner command is passed as a single argument to -Command via double quotes
157
- // escaped as \" per CommandLineToArgvW convention.
158
- // Stdout/stderr are redirected to log files via PowerShell >> / 2>> operators.
159
- const escLogPath = LOG_PATH.replace(/'/g, "''");
160
- const escErrPath = ERROR_LOG_PATH.replace(/'/g, "''");
161
- const fallbackInner = buildWindowsPowerShellBootstrap(`${cmdLine} >> '${escLogPath}' 2>> '${escErrPath}'`);
162
- const fallbackTr = `powershell.exe -WindowStyle Hidden -Command "${fallbackInner.replace(/"/g, '\\"')}"`;
163
- execFileSync("schtasks", ["/create", "/tn", TASK_NAME, "/tr", fallbackTr, "/sc", "onlogon", "/f"], { stdio: "pipe" });
164
- execFileSync("schtasks", ["/run", "/tn", TASK_NAME], { stdio: "pipe" });
178
+ execFileSync("schtasks", ["/create", "/tn", taskName, "/tr", taskCommand, "/sc", "onlogon", "/f"], { stdio: "pipe" });
179
+ execFileSync("schtasks", ["/run", "/tn", taskName], { stdio: "pipe" });
165
180
  return true;
166
181
  }
167
182
  catch (err) {
@@ -169,19 +184,29 @@ export function installWindowsService() {
169
184
  return false;
170
185
  }
171
186
  }
172
- export function uninstallWindowsService() {
187
+ export function uninstallWindowsService(profile) {
188
+ const resolvedProfile = normalizeProfileName(profile ?? getActiveProfile());
189
+ const taskName = windowsTaskName(resolvedProfile);
190
+ const runnerPath = windowsServiceRunnerPath(resolvedProfile);
173
191
  try {
174
192
  let changed = false;
175
193
  try {
176
- execFileSync("schtasks", ["/delete", "/tn", TASK_NAME, "/f"], { stdio: "pipe" });
194
+ execFileSync("schtasks", ["/delete", "/tn", taskName, "/f"], { stdio: "pipe" });
177
195
  changed = true;
178
196
  }
179
197
  catch {
180
198
  // task might not exist
181
199
  }
182
- if (killWindowsProcess()) {
200
+ if (killWindowsProcess(resolvedProfile)) {
201
+ changed = true;
202
+ }
203
+ try {
204
+ unlinkSync(runnerPath);
183
205
  changed = true;
184
206
  }
207
+ catch {
208
+ // runner might not exist
209
+ }
185
210
  return changed;
186
211
  }
187
212
  catch (err) {
@@ -189,37 +214,44 @@ export function uninstallWindowsService() {
189
214
  return false;
190
215
  }
191
216
  }
192
- export function restartWindowsService() {
217
+ export function restartWindowsService(profile) {
218
+ const resolvedProfile = normalizeProfileName(profile ?? getActiveProfile());
219
+ const taskName = windowsTaskName(resolvedProfile);
193
220
  // Try to stop the task first
194
221
  try {
195
- execFileSync("schtasks", ["/end", "/tn", TASK_NAME], { stdio: "pipe" });
222
+ execFileSync("schtasks", ["/end", "/tn", taskName], { stdio: "pipe" });
196
223
  }
197
224
  catch {
198
225
  // ignore if not running
199
226
  }
200
- killWindowsProcess();
227
+ killWindowsProcess(resolvedProfile);
201
228
  try {
202
- execFileSync("schtasks", ["/run", "/tn", TASK_NAME], { stdio: "pipe" });
229
+ execFileSync("schtasks", ["/run", "/tn", taskName], { stdio: "pipe" });
203
230
  return true;
204
231
  }
205
232
  catch {
206
233
  // If the task doesn't exist, install it
207
- return installWindowsService();
234
+ return installWindowsService(resolvedProfile);
208
235
  }
209
236
  }
210
- export function stopWindowsService() {
237
+ export function stopWindowsService(profile) {
238
+ const resolvedProfile = normalizeProfileName(profile ?? getActiveProfile());
239
+ const taskName = windowsTaskName(resolvedProfile);
211
240
  try {
212
- execFileSync("schtasks", ["/end", "/tn", TASK_NAME], { stdio: "pipe" });
241
+ execFileSync("schtasks", ["/end", "/tn", taskName], { stdio: "pipe" });
213
242
  }
214
243
  catch {
215
244
  // ignore if not running
216
245
  }
217
- return killWindowsProcess();
246
+ return killWindowsProcess(resolvedProfile);
218
247
  }
219
- export function getWindowsServiceStatus() {
248
+ export function getWindowsServiceStatus(profile) {
249
+ const resolvedProfile = normalizeProfileName(profile ?? getActiveProfile());
250
+ const taskName = windowsTaskName(resolvedProfile);
251
+ const logPath = getProfileLogPath(resolvedProfile);
220
252
  let installed = false;
221
253
  try {
222
- execFileSync("schtasks", ["/query", "/tn", TASK_NAME], { stdio: "pipe" });
254
+ execFileSync("schtasks", ["/query", "/tn", taskName], { stdio: "pipe" });
223
255
  installed = true;
224
256
  }
225
257
  catch {
@@ -230,8 +262,8 @@ export function getWindowsServiceStatus() {
230
262
  try {
231
263
  const scriptPath = process.argv[1];
232
264
  if (scriptPath) {
233
- const psScript = `Get-CimInstance Win32_Process -Filter "Name = 'node.exe'" | Where-Object { $_.CommandLine -match [regex]::Escape($env:CLAW_SCRIPT_PATH) } | Select-Object -ExpandProperty ProcessId`;
234
- const output = execFileSync("powershell", ["-NoProfile", "-Command", psScript], { stdio: "pipe", env: { ...process.env, CLAW_SCRIPT_PATH: scriptPath } })
265
+ const psScript = buildWindowsProcessQueryScript(resolvedProfile);
266
+ const output = execFileSync("powershell", ["-NoProfile", "-Command", psScript], { stdio: "pipe", env: windowsProcessQueryEnv(resolvedProfile) })
235
267
  .toString()
236
268
  .trim();
237
269
  running = /\d+/.test(output);
@@ -245,10 +277,10 @@ export function getWindowsServiceStatus() {
245
277
  platform: "windows",
246
278
  installed,
247
279
  running,
248
- serviceName: TASK_NAME,
280
+ serviceName: taskName,
249
281
  manager: "Windows Task Scheduler",
250
- logPath: LOG_PATH,
251
- startHint: `schtasks /run /tn "${TASK_NAME}"`,
282
+ logPath,
283
+ startHint: `schtasks /run /tn "${taskName}"`,
252
284
  };
253
285
  }
254
286
  //# sourceMappingURL=service-manager-windows.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"service-manager-windows.js","sourceRoot":"","sources":["../../src/platform/service-manager-windows.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"service-manager-windows.js","sourceRoot":"","sources":["../../src/platform/service-manager-windows.ts"],"names":[],"mappings":"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"}