peerllm-host-cli 2.2.0 → 2.2.1

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.
@@ -1,3 +1,24 @@
1
1
  import { Command } from "commander";
2
+ interface DaemonExec {
3
+ program: string;
4
+ args: string[];
5
+ }
6
+ /**
7
+ * Resolve how the installed service unit should launch the daemon. launchd and
8
+ * systemd run with a minimal PATH, so a bare command name — or the `peerllm-host`
9
+ * wrapper, whose `#!/usr/bin/env node` shebang still needs `node` on PATH — fails to
10
+ * start on Homebrew/nvm installs where node lives outside launchd's default PATH.
11
+ * We instead invoke the *current* Node binary and this CLI's entry script, both by
12
+ * absolute path, so the unit is fully PATH-independent. `--cli-bin` overrides with a
13
+ * single executable (arg0) for anyone who deliberately wants the wrapper form.
14
+ */
15
+ export declare function resolveDaemonExec(cliBinOverride?: string): DaemonExec;
16
+ /** Full argv the service unit runs: <program> [args…] start --foreground. */
17
+ export declare function daemonArgv(exec: DaemonExec): string[];
18
+ /** Render argv as indented plist <string> lines for ProgramArguments. */
19
+ export declare function plistProgramArgs(argv: string[]): string;
20
+ /** Render argv as a systemd ExecStart line, quoting args that contain whitespace. */
21
+ export declare function execStartLine(argv: string[]): string;
2
22
  export declare function makeServiceCommand(): Command;
23
+ export {};
3
24
  //# sourceMappingURL=service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/service.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiNpC,wBAAgB,kBAAkB,IAAI,OAAO,CAM5C"}
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/service.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAapC,UAAU,UAAU;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,UAAU,CAYrE;AAED,6EAA6E;AAC7E,wBAAgB,UAAU,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,EAAE,CAErD;AAMD,yEAAyE;AACzE,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAEvD;AAED,qFAAqF;AACrF,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAEpD;AA0MD,wBAAgB,kBAAkB,IAAI,OAAO,CAM5C"}
@@ -1,5 +1,5 @@
1
1
  import { spawnSync } from "node:child_process";
2
- import { existsSync, readFileSync } from "node:fs";
2
+ import { existsSync, readFileSync, realpathSync } from "node:fs";
3
3
  import { mkdir, writeFile, unlink } from "node:fs/promises";
4
4
  import { homedir, platform as osPlatform, userInfo } from "node:os";
5
5
  import { dirname, join, resolve } from "node:path";
@@ -13,26 +13,58 @@ const __dirname = dirname(__filename);
13
13
  function templatesDir() {
14
14
  return resolve(__dirname, "..", "..", "..", "templates");
15
15
  }
16
- function defaultCliBin() {
17
- const env = process.env["npm_config_global_dir"];
18
- if (env)
19
- return join(env, "bin", "peerllm-host");
20
- // Falls back to whatever is on PATH; user can override with --cli-bin.
21
- return "peerllm-host";
16
+ /**
17
+ * Resolve how the installed service unit should launch the daemon. launchd and
18
+ * systemd run with a minimal PATH, so a bare command name — or the `peerllm-host`
19
+ * wrapper, whose `#!/usr/bin/env node` shebang still needs `node` on PATH — fails to
20
+ * start on Homebrew/nvm installs where node lives outside launchd's default PATH.
21
+ * We instead invoke the *current* Node binary and this CLI's entry script, both by
22
+ * absolute path, so the unit is fully PATH-independent. `--cli-bin` overrides with a
23
+ * single executable (arg0) for anyone who deliberately wants the wrapper form.
24
+ */
25
+ export function resolveDaemonExec(cliBinOverride) {
26
+ if (cliBinOverride)
27
+ return { program: cliBinOverride, args: [] };
28
+ const entryPath = resolve(__dirname, "..", "index.js");
29
+ // realpathSync collapses Homebrew/nvm symlinks; fall back to the resolved path
30
+ // if it can't be stat'd (never let the install throw over path resolution).
31
+ let entry = entryPath;
32
+ try {
33
+ entry = realpathSync(entryPath);
34
+ }
35
+ catch {
36
+ // keep entryPath
37
+ }
38
+ return { program: process.execPath, args: [entry] };
39
+ }
40
+ /** Full argv the service unit runs: <program> [args…] start --foreground. */
41
+ export function daemonArgv(exec) {
42
+ return [exec.program, ...exec.args, "start", "--foreground"];
43
+ }
44
+ function escapeXml(value) {
45
+ return value.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
46
+ }
47
+ /** Render argv as indented plist <string> lines for ProgramArguments. */
48
+ export function plistProgramArgs(argv) {
49
+ return argv.map((arg) => ` <string>${escapeXml(arg)}</string>`).join("\n");
50
+ }
51
+ /** Render argv as a systemd ExecStart line, quoting args that contain whitespace. */
52
+ export function execStartLine(argv) {
53
+ return argv.map((arg) => (/\s/.test(arg) ? `"${arg}"` : arg)).join(" ");
22
54
  }
23
55
  function fillTemplate(content, vars) {
24
56
  return content.replace(/\{([A-Z_]+)\}/g, (_match, key) => Object.prototype.hasOwnProperty.call(vars, key) ? (vars[key] ?? "") : `{${key}}`);
25
57
  }
26
58
  function buildContext(opts) {
27
59
  return {
28
- cliBin: opts.cliBin ?? defaultCliBin(),
60
+ exec: resolveDaemonExec(opts.cliBin),
29
61
  configDir: opts.configDir,
30
62
  paths: resolvePaths({ configDirOverride: opts.configDir }),
31
63
  };
32
64
  }
33
65
  async function installSystemd(ctx) {
34
66
  const template = readFileSync(join(templatesDir(), "systemd", "peerllm-host.service"), "utf8");
35
- const rendered = fillTemplate(template, { CLI_BIN: ctx.cliBin });
67
+ const rendered = fillTemplate(template, { EXEC_START: execStartLine(daemonArgv(ctx.exec)) });
36
68
  const unitDir = join(homedir(), ".config", "systemd", "user");
37
69
  const unitPath = join(unitDir, "peerllm-host.service");
38
70
  await mkdir(unitDir, { recursive: true });
@@ -58,7 +90,7 @@ async function uninstallSystemd() {
58
90
  async function installLaunchd(ctx) {
59
91
  const template = readFileSync(join(templatesDir(), "launchd", "com.peerllm.host.plist"), "utf8");
60
92
  const rendered = fillTemplate(template, {
61
- CLI_BIN: ctx.cliBin,
93
+ PROGRAM_ARGS: plistProgramArgs(daemonArgv(ctx.exec)),
62
94
  LOG_DIR: ctx.paths.logsDir,
63
95
  });
64
96
  await mkdir(ctx.paths.logsDir, { recursive: true });
@@ -84,14 +116,22 @@ async function uninstallLaunchd() {
84
116
  }
85
117
  async function installWindows(ctx) {
86
118
  const scriptPath = join(templatesDir(), "windows", "install-service.ps1");
119
+ const argv = daemonArgv(ctx.exec);
120
+ const execute = argv[0] ?? process.execPath;
121
+ const taskArgs = argv
122
+ .slice(1)
123
+ .map((arg) => (/\s/.test(arg) ? `"${arg}"` : arg))
124
+ .join(" ");
87
125
  const result = spawnSync("powershell.exe", [
88
126
  "-NoProfile",
89
127
  "-ExecutionPolicy",
90
128
  "Bypass",
91
129
  "-File",
92
130
  scriptPath,
93
- "-CliBin",
94
- ctx.cliBin,
131
+ "-Execute",
132
+ execute,
133
+ "-Arguments",
134
+ taskArgs,
95
135
  ], { encoding: "utf8" });
96
136
  if (result.status !== 0) {
97
137
  throw new Error(result.stderr.trim() || "PowerShell install failed");
@@ -119,7 +159,7 @@ async function uninstallWindows() {
119
159
  function makeInstall() {
120
160
  return new Command("install")
121
161
  .description("Install the platform-appropriate service unit (user-level)")
122
- .option("--cli-bin <path>", "absolute path to the peerllm-host binary (default: detected)")
162
+ .option("--cli-bin <path>", "absolute path to a launcher binary (default: current node + this CLI's entry script, PATH-independent)")
123
163
  .option("--config-dir <path>", "override config directory")
124
164
  .action(async (opts) => {
125
165
  const ctx = buildContext(opts);
@@ -1 +1 @@
1
- {"version":3,"file":"service.js","sourceRoot":"","sources":["../../../src/cli/commands/service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../../../src/cli/commands/service.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "peerllm-host-cli",
3
- "version": "2.2.0",
3
+ "version": "2.2.1",
4
4
  "description": "Command-line PeerLLM host: serve decentralized AI compute from a headless machine.",
5
5
  "author": {
6
6
  "name": "Hassan Habib",
@@ -6,9 +6,7 @@
6
6
  <string>com.peerllm.host</string>
7
7
  <key>ProgramArguments</key>
8
8
  <array>
9
- <string>{CLI_BIN}</string>
10
- <string>start</string>
11
- <string>--foreground</string>
9
+ {PROGRAM_ARGS}
12
10
  </array>
13
11
  <key>RunAtLoad</key>
14
12
  <true/>
@@ -5,8 +5,9 @@ Wants=network-online.target
5
5
 
6
6
  [Service]
7
7
  Type=simple
8
- # {CLI_BIN} is replaced at install time by `peerllm-host service install`.
9
- ExecStart={CLI_BIN} start --foreground
8
+ # Rendered at install time by `peerllm-host service install` as an absolute
9
+ # node binary + this CLI's entry script, so the unit does not depend on PATH.
10
+ ExecStart={EXEC_START}
10
11
  Restart=on-failure
11
12
  RestartSec=5
12
13
  # Daemon writes its own logs under ~/PeerLLM/logs/; journal also captures stderr.
@@ -4,16 +4,17 @@
4
4
  # is out of v1 scope.
5
5
 
6
6
  param(
7
- [string]$CliBin = "{CLI_BIN}",
7
+ [string]$Execute = "node",
8
+ [string]$Arguments = "start --foreground",
8
9
  [string]$TaskName = "PeerLLM Host"
9
10
  )
10
11
 
11
- if (-not (Test-Path $CliBin)) {
12
- Write-Error "peerllm-host binary not found at $CliBin"
12
+ if (-not (Test-Path $Execute)) {
13
+ Write-Error "launcher not found at $Execute"
13
14
  exit 1
14
15
  }
15
16
 
16
- $action = New-ScheduledTaskAction -Execute $CliBin -Argument "start --foreground"
17
+ $action = New-ScheduledTaskAction -Execute $Execute -Argument $Arguments
17
18
  $trigger = New-ScheduledTaskTrigger -AtLogOn -User $env:USERNAME
18
19
  $settings = New-ScheduledTaskSettingsSet -StartWhenAvailable -DontStopOnIdleEnd `
19
20
  -AllowStartIfOnBatteries -ExecutionTimeLimit 0