@rubytech/create-maxy-code 0.1.393 → 0.1.395

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 (45) hide show
  1. package/dist/__tests__/darwin-service-env-path.test.js +29 -0
  2. package/dist/__tests__/launchd-plist.test.js +41 -1
  3. package/dist/index.js +85 -10
  4. package/dist/launchd-plist.js +27 -0
  5. package/dist/port-resolution.js +16 -1
  6. package/dist/uninstall.js +56 -20
  7. package/package.json +1 -1
  8. package/payload/platform/services/claude-session-manager/dist/channel-mcp.d.ts +5 -0
  9. package/payload/platform/services/claude-session-manager/dist/channel-mcp.d.ts.map +1 -1
  10. package/payload/platform/services/claude-session-manager/dist/channel-mcp.js +1 -1
  11. package/payload/platform/services/claude-session-manager/dist/channel-mcp.js.map +1 -1
  12. package/payload/platform/services/claude-session-manager/dist/config.d.ts +6 -0
  13. package/payload/platform/services/claude-session-manager/dist/config.d.ts.map +1 -1
  14. package/payload/platform/services/claude-session-manager/dist/config.js +2 -0
  15. package/payload/platform/services/claude-session-manager/dist/config.js.map +1 -1
  16. package/payload/platform/services/claude-session-manager/dist/http-server.d.ts.map +1 -1
  17. package/payload/platform/services/claude-session-manager/dist/http-server.js +8 -1
  18. package/payload/platform/services/claude-session-manager/dist/http-server.js.map +1 -1
  19. package/payload/platform/services/claude-session-manager/dist/index.js +11 -0
  20. package/payload/platform/services/claude-session-manager/dist/index.js.map +1 -1
  21. package/payload/platform/services/claude-session-manager/dist/pty-spawner.d.ts +4 -0
  22. package/payload/platform/services/claude-session-manager/dist/pty-spawner.d.ts.map +1 -1
  23. package/payload/platform/services/claude-session-manager/dist/pty-spawner.js +2 -0
  24. package/payload/platform/services/claude-session-manager/dist/pty-spawner.js.map +1 -1
  25. package/payload/platform/services/claude-session-manager/dist/resolve-on-path.d.ts +11 -0
  26. package/payload/platform/services/claude-session-manager/dist/resolve-on-path.d.ts.map +1 -0
  27. package/payload/platform/services/claude-session-manager/dist/resolve-on-path.js +36 -0
  28. package/payload/platform/services/claude-session-manager/dist/resolve-on-path.js.map +1 -0
  29. package/payload/platform/services/claude-session-manager/dist/session-cap-audit.d.ts +5 -0
  30. package/payload/platform/services/claude-session-manager/dist/session-cap-audit.d.ts.map +1 -1
  31. package/payload/platform/services/claude-session-manager/dist/session-cap-audit.js +22 -4
  32. package/payload/platform/services/claude-session-manager/dist/session-cap-audit.js.map +1 -1
  33. package/payload/platform/services/claude-session-manager/dist/telegram-channel-mcp.d.ts +5 -0
  34. package/payload/platform/services/claude-session-manager/dist/telegram-channel-mcp.d.ts.map +1 -1
  35. package/payload/platform/services/claude-session-manager/dist/telegram-channel-mcp.js +1 -1
  36. package/payload/platform/services/claude-session-manager/dist/telegram-channel-mcp.js.map +1 -1
  37. package/payload/platform/services/claude-session-manager/dist/wa-channel-mcp.d.ts +5 -0
  38. package/payload/platform/services/claude-session-manager/dist/wa-channel-mcp.d.ts.map +1 -1
  39. package/payload/platform/services/claude-session-manager/dist/wa-channel-mcp.js +1 -1
  40. package/payload/platform/services/claude-session-manager/dist/wa-channel-mcp.js.map +1 -1
  41. package/payload/platform/services/claude-session-manager/dist/webchat-channel-mcp.d.ts +5 -0
  42. package/payload/platform/services/claude-session-manager/dist/webchat-channel-mcp.d.ts.map +1 -1
  43. package/payload/platform/services/claude-session-manager/dist/webchat-channel-mcp.js +1 -1
  44. package/payload/platform/services/claude-session-manager/dist/webchat-channel-mcp.js.map +1 -1
  45. package/payload/server/server.js +15 -0
@@ -0,0 +1,29 @@
1
+ // Acceptance gate for the darwin `.env` PATH line.
2
+ //
3
+ // The launchd wrapper sources `.env` and every MCP child (including the ones
4
+ // `claude` spawns itself from a plugin `PLUGIN.md` `mcp: command: node`)
5
+ // inherits this PATH. On the migrated Mac the only `node` is nvm's, off the
6
+ // bare launchd PATH, so a bare `node server.js` fails ENOENT and the plugin's
7
+ // graph-write tools never register. buildDarwinServiceEnvPath prepends the
8
+ // resolved node bin dir and `~/.local/bin` (uv) so `node` and `uvx` both
9
+ // resolve at runtime. The channel MCPs (Task 1402) pin NODE_BIN directly;
10
+ // this covers the plugin/graph half of the same PATH root cause.
11
+ import test from "node:test";
12
+ import assert from "node:assert/strict";
13
+ import { buildDarwinServiceEnvPath } from "../port-resolution.js";
14
+ test("prepends the nvm node dir and ~/.local/bin ahead of the Homebrew prefixes, ending in $PATH", () => {
15
+ const path = buildDarwinServiceEnvPath("/Users/neo/.nvm/versions/node/v20.11.0/bin/node", "/Users/neo");
16
+ assert.equal(path, "/Users/neo/.nvm/versions/node/v20.11.0/bin:/Users/neo/.local/bin:/opt/homebrew/bin:/usr/local/bin:$PATH");
17
+ });
18
+ test("node dir is the first segment so a bare `node` resolves to the pinned interpreter first", () => {
19
+ const path = buildDarwinServiceEnvPath("/opt/homebrew/bin/node", "/Users/me");
20
+ assert.equal(path.split(":")[0], "/opt/homebrew/bin");
21
+ });
22
+ test("includes the account home's ~/.local/bin so the graph-cypher `uvx` resolves", () => {
23
+ const path = buildDarwinServiceEnvPath("/usr/local/bin/node", "/Users/alice");
24
+ assert.ok(path.includes(":/Users/alice/.local/bin:"), path);
25
+ });
26
+ test("keeps the existing $PATH expansion as the final segment", () => {
27
+ const path = buildDarwinServiceEnvPath("/usr/local/bin/node", "/Users/me");
28
+ assert.ok(path.endsWith(":$PATH"), path);
29
+ });
@@ -10,7 +10,7 @@
10
10
  // package so `node --test dist/__tests__/*.test.js` picks it up after build.
11
11
  import test from "node:test";
12
12
  import assert from "node:assert/strict";
13
- import { renderPlist, buildSessionManagerWrapper } from "../launchd-plist.js";
13
+ import { renderPlist, buildSessionManagerWrapper, buildHeartbeatWrapper } from "../launchd-plist.js";
14
14
  // ---------------------------------------------------------------------------
15
15
  // Standard render — every required field present, no escaping needed.
16
16
  // ---------------------------------------------------------------------------
@@ -213,6 +213,46 @@ test("buildSessionManagerWrapper sources .env and execs the manager", () => {
213
213
  assert.match(w, /cd "\/Users\/x\/maxy-code\/platform\/services\/claude-session-manager"/);
214
214
  assert.match(w, /exec \/usr\/local\/bin\/node dist\/index\.js\n$/);
215
215
  });
216
+ // ---------------------------------------------------------------------------
217
+ // StartInterval — the darwin heartbeat timer (Task 1403). Emitted as
218
+ // <integer> only when set; absent from the standard server/manager plists.
219
+ // ---------------------------------------------------------------------------
220
+ test("renderPlist emits StartInterval as <integer> when set", () => {
221
+ const xml = renderPlist({
222
+ label: "com.rubytech.maxy-code-heartbeat",
223
+ programArguments: ["/bin/bash", "/Users/x/.maxy-code/heartbeat-wrapper.sh"],
224
+ stdoutPath: "/Users/x/.maxy-code/logs/check-due-events.log",
225
+ stderrPath: "/Users/x/.maxy-code/logs/check-due-events.log",
226
+ keepAlive: false,
227
+ runAtLoad: false,
228
+ startInterval: 60,
229
+ });
230
+ assert.match(xml, /<key>StartInterval<\/key>\s*<integer>60<\/integer>/);
231
+ assert.match(xml, /<key>KeepAlive<\/key>\s*<false\/>/);
232
+ assert.match(xml, /<key>RunAtLoad<\/key>\s*<false\/>/);
233
+ });
234
+ test("renderPlist omits StartInterval key when absent (standard plists unchanged)", () => {
235
+ const xml = renderPlist({
236
+ label: "com.rubytech.maxy-code",
237
+ programArguments: ["/bin/bash", "/Users/x/.maxy-code/launchd-wrapper.sh"],
238
+ stdoutPath: "/dev/null",
239
+ stderrPath: "/dev/null",
240
+ keepAlive: true,
241
+ runAtLoad: true,
242
+ });
243
+ assert.ok(!/StartInterval/.test(xml), "StartInterval must not appear when omitted");
244
+ });
245
+ test("buildHeartbeatWrapper sources .env, exports PLATFORM_ROOT, execs the tick", () => {
246
+ const w = buildHeartbeatWrapper({
247
+ envPath: "/Users/x/.maxy-code/.env",
248
+ installDir: "/Users/x/maxy-code",
249
+ nodeBin: "/opt/homebrew/bin/node",
250
+ });
251
+ assert.match(w, /^#!\/bin\/bash\n/);
252
+ assert.match(w, /set -a; \[ -f "\/Users\/x\/\.maxy-code\/\.env" \] && \. "\/Users\/x\/\.maxy-code\/\.env"; set \+a/);
253
+ assert.match(w, /export PLATFORM_ROOT="\/Users\/x\/maxy-code\/platform"/);
254
+ assert.match(w, /exec \/opt\/homebrew\/bin\/node \/Users\/x\/maxy-code\/platform\/plugins\/scheduling\/mcp\/dist\/scripts\/check-due-events\.js\n$/);
255
+ });
216
256
  test("session-manager plist renders bash wrapper as sole ProgramArguments", () => {
217
257
  const xml = renderPlist({
218
258
  label: "com.rubytech.maxy-code-claude-session-manager",
package/dist/index.js CHANGED
@@ -5,7 +5,7 @@ import { registerSpecialistAgentsAt, SpecialistSymlinkCollision } from "./specia
5
5
  import { seedBypassPermissionsSettings, assertBypassPermissionsSeed } from "./permissions-seed.js";
6
6
  import { resolve, join, dirname } from "node:path";
7
7
  import { randomBytes } from "node:crypto";
8
- import { resolveInstallPortFromFs, buildMaxyUnitFile, buildClaudeSessionManagerUnitFile, buildClaudePtysSliceUnitFile, buildCloudflaredSliceUnitFile } from "./port-resolution.js";
8
+ import { resolveInstallPortFromFs, buildMaxyUnitFile, buildClaudeSessionManagerUnitFile, buildClaudePtysSliceUnitFile, buildCloudflaredSliceUnitFile, buildDarwinServiceEnvPath } from "./port-resolution.js";
9
9
  import { buildHeartbeatCronBlock, mergeHeartbeatBlock } from "./cron-registration.js";
10
10
  import { validateTierFlag, validateEntitlementBase64, applyTierToAccountConfig, entitlementPath } from "./tier-flag.js";
11
11
  import { parseOsRelease, isUbuntuLike as isUbuntuLikePure, parseAptCacheCandidate, decideAptResolution, } from "./apt-resolve.js";
@@ -16,7 +16,7 @@ import { requireSupportedPlatform, detectPlatform } from "./platform-detect.js";
16
16
  import { decideClaudeUpgradePrivilege } from "./claude-upgrade-privilege.js";
17
17
  import { resolveNeo4jDataDir } from "./neo4j-datadir.js";
18
18
  import { protectCommands, unprotectCommands, lsattrShowsImmutable } from "./install-immutability.js";
19
- import { renderPlist, buildSessionManagerWrapper } from "./launchd-plist.js";
19
+ import { renderPlist, buildSessionManagerWrapper, buildHeartbeatWrapper } from "./launchd-plist.js";
20
20
  import { bootstrapLaunchAgent } from "./launchd-bootstrap.js";
21
21
  import { enumerateClaudeCandidates, pickCanonicalClaude } from "./claude-bin.js";
22
22
  import { installAllBrewPackages } from "./brew-install.js";
@@ -1899,7 +1899,16 @@ function capOllamaServiceCpu() {
1899
1899
  function installOllama(embedModel) {
1900
1900
  if (!commandExists("ollama")) {
1901
1901
  log("5", TOTAL, "Installing Ollama...");
1902
- spawnSync("bash", ["-c", "curl -fsSL https://ollama.ai/install.sh | sh"], { stdio: "inherit" });
1902
+ // The upstream curl|sh installer only places a Linux systemd daemon; on
1903
+ // darwin it leaves no `ollama` CLI, so ensureOllamaServing()'s `ollama serve`
1904
+ // spawn would fail. Install via Homebrew instead, mirroring installNeo4j /
1905
+ // installCloudflared (Task 1403).
1906
+ if (requireSupportedPlatform(process.platform) === "darwin") {
1907
+ installAllBrewPackages(["ollama"], logFile);
1908
+ }
1909
+ else {
1910
+ spawnSync("bash", ["-c", "curl -fsSL https://ollama.ai/install.sh | sh"], { stdio: "inherit" });
1911
+ }
1903
1912
  }
1904
1913
  else {
1905
1914
  log("5", TOTAL, "Ollama already installed.");
@@ -3301,6 +3310,18 @@ function installServiceDarwin() {
3301
3310
  `setupAccount() (setup-account.sh) should have created one. Refusing to write .env ` +
3302
3311
  `without ACCOUNT_ID; the boot validator would FATAL on every kickstart.`);
3303
3312
  }
3313
+ // Resolve node once, up front: the launchd wrapper execs it (below) and the
3314
+ // .env pins it as NODE_BIN so the session-manager's per-session channel MCP
3315
+ // descriptors invoke node by absolute path. The bare launchd PATH excludes an
3316
+ // nvm node, so a bare `node` command in an MCP descriptor fails to spawn and
3317
+ // the channel never boots (Task 1402). Intel `/usr/local/bin/node`, Apple
3318
+ // Silicon `/opt/homebrew/bin/node`, or nvm's versioned path — whatever the
3319
+ // installer's own shell resolves.
3320
+ const nodeProbe = spawnSync("command", ["-v", "node"], { encoding: "utf-8", shell: true });
3321
+ const nodeBin = (nodeProbe.stdout ?? "").trim() || "/usr/local/bin/node";
3322
+ // Task 1404 — the darwin `.env` PATH, computed once and reused for both the
3323
+ // PATH env value and the install log so the two can never drift.
3324
+ const darwinServiceEnvPath = buildDarwinServiceEnvPath(nodeBin, process.env.HOME ?? "/");
3304
3325
  const envPath = join(persistDir, ".env");
3305
3326
  try {
3306
3327
  let envContent = "";
@@ -3329,7 +3350,15 @@ function installServiceDarwin() {
3329
3350
  // against the bare launchd PATH and Homebrew prefixes get prepended for
3330
3351
  // every spawned descendant (claude-session-manager, MCP plugin spawns,
3331
3352
  // route-level spawn('claude', ...)). Task 386.
3332
- ["PATH", "/opt/homebrew/bin:/usr/local/bin:$PATH"],
3353
+ //
3354
+ // Task 1404 — also prepend the resolved node bin dir and ~/.local/bin.
3355
+ // The plugin MCP servers `claude` spawns itself from a PLUGIN.md
3356
+ // `mcp: command: node` inherit this PATH; when the only node is nvm's
3357
+ // (off the Homebrew prefixes) a bare `node server.js` fails ENOENT and
3358
+ // the graph-write tools never register. buildDarwinServiceEnvPath makes
3359
+ // `node` resolve (node bin dir) and the graph-cypher `uvx` resolve
3360
+ // (~/.local/bin). Channel MCPs pin NODE_BIN separately (Task 1402).
3361
+ ["PATH", darwinServiceEnvPath],
3333
3362
  ]) {
3334
3363
  const re = new RegExp(`^${key}=.*$`, "m");
3335
3364
  if (re.test(envContent)) {
@@ -3351,8 +3380,19 @@ function installServiceDarwin() {
3351
3380
  else
3352
3381
  envContent = envContent.trimEnd() + (envContent.length > 0 ? "\n" : "") + `CLAUDE_BIN=${canonicalClaude}\n`;
3353
3382
  }
3383
+ // Task 1402 — pin the resolved node the same way. The session-manager reads
3384
+ // NODE_BIN and stamps it as the `command` of every per-session channel MCP
3385
+ // descriptor, so a webchat/WhatsApp/Telegram channel spawns node by absolute
3386
+ // path instead of a bare `node` the launchd PATH can't resolve.
3387
+ {
3388
+ const re = /^NODE_BIN=.*$/m;
3389
+ if (re.test(envContent))
3390
+ envContent = envContent.replace(re, `NODE_BIN=${nodeBin}`);
3391
+ else
3392
+ envContent = envContent.trimEnd() + (envContent.length > 0 ? "\n" : "") + `NODE_BIN=${nodeBin}\n`;
3393
+ }
3354
3394
  writeFileSync(envPath, envContent);
3355
- logFile(` .env: DISPLAY_MODE=${DISPLAY_MODE}, EMBED_MODEL=${EMBED_MODEL}, EMBED_DIMENSIONS=${EMBED_DIMS}, NEO4J_URI=bolt://localhost:${NEO4J_PORT}, PORT=${PORT}, MAXY_UI_INTERNAL_PORT=${PORT} (darwin-collapsed), CLAUDE_SESSION_MANAGER_PORT=${BRAND.claudeSessionManagerPort}, HOSTNAME=0.0.0.0, ACCOUNT_ID=${installAccountId.slice(0, 8)}…, CLAUDE_CONFIG_DIR=${persistDir}/.claude, CLAUDE_BIN=${canonicalClaude ?? "unresolved(PATH)"}`);
3395
+ logFile(` .env: DISPLAY_MODE=${DISPLAY_MODE}, EMBED_MODEL=${EMBED_MODEL}, EMBED_DIMENSIONS=${EMBED_DIMS}, NEO4J_URI=bolt://localhost:${NEO4J_PORT}, PORT=${PORT}, MAXY_UI_INTERNAL_PORT=${PORT} (darwin-collapsed), CLAUDE_SESSION_MANAGER_PORT=${BRAND.claudeSessionManagerPort}, HOSTNAME=0.0.0.0, ACCOUNT_ID=${installAccountId.slice(0, 8)}…, CLAUDE_CONFIG_DIR=${persistDir}/.claude, CLAUDE_BIN=${canonicalClaude ?? "unresolved(PATH)"}, NODE_BIN=${nodeBin}, PATH=${darwinServiceEnvPath}`);
3356
3396
  }
3357
3397
  catch (err) {
3358
3398
  console.error(` WARNING: failed to write .env to ${envPath}: ${err instanceof Error ? err.message : String(err)}`);
@@ -3362,11 +3402,7 @@ function installServiceDarwin() {
3362
3402
  // in the child env. Without this, ProgramArguments executes node directly
3363
3403
  // and the .env values are unread — server binds the wrong port.
3364
3404
  const wrapperPath = join(persistDir, "launchd-wrapper.sh");
3365
- // Resolve node binary at install time so the wrapper picks the right
3366
- // path on both Intel (/usr/local/bin/node) and Apple Silicon
3367
- // (/opt/homebrew/bin/node) — Homebrew's prefix differs by arch.
3368
- const nodeProbe = spawnSync("command", ["-v", "node"], { encoding: "utf-8", shell: true });
3369
- const nodeBin = (nodeProbe.stdout ?? "").trim() || "/usr/local/bin/node";
3405
+ // `nodeBin` resolved once above (also pinned as NODE_BIN in .env).
3370
3406
  const wrapperBody = [
3371
3407
  "#!/bin/bash",
3372
3408
  "# generated by create-maxy installService(). Reads.env then",
@@ -3481,6 +3517,45 @@ function installServiceDarwin() {
3481
3517
  if (!smUp) {
3482
3518
  console.log(` Session manager not yet healthy on ${BRAND.claudeSessionManagerPort} — check ${join(logsDir, "server.log")}.`);
3483
3519
  }
3520
+ // Task 1403 — the scheduling heartbeat. On Linux a per-minute cron ticks
3521
+ // check-due-events.js (installCrons/buildHeartbeatCronBlock); darwin has no
3522
+ // cron and installCrons early-returns, so operator-created bookings would
3523
+ // never dispatch. Author a StartInterval=60 LaunchAgent as the timer analogue:
3524
+ // keepAlive=false (a periodic one-shot, not a supervised daemon). A bootstrap
3525
+ // failure warns rather than aborting install — the server + manager (core
3526
+ // function) are already up; scheduling retries on the next installer run.
3527
+ const hbLabel = `${launchdLabel()}-heartbeat`;
3528
+ const hbPlistPath = join(launchAgentsDir(), `${hbLabel}.plist`);
3529
+ const hbWrapperPath = join(persistDir, "heartbeat-wrapper.sh");
3530
+ writeFileSync(hbWrapperPath, buildHeartbeatWrapper({ envPath, installDir: INSTALL_DIR, nodeBin }));
3531
+ chmodSync(hbWrapperPath, 0o755);
3532
+ const hbPlist = renderPlist({
3533
+ label: hbLabel,
3534
+ programArguments: ["/bin/bash", hbWrapperPath],
3535
+ stdoutPath: join(logsDir, "check-due-events.log"),
3536
+ stderrPath: join(logsDir, "check-due-events.log"),
3537
+ keepAlive: false,
3538
+ runAtLoad: false,
3539
+ startInterval: 60,
3540
+ });
3541
+ writeFileSync(hbPlistPath, hbPlist);
3542
+ logFile(` ${hbPlistPath} written (${hbPlist.length} bytes)`);
3543
+ const hbBoot = bootstrapLaunchAgent((args) => {
3544
+ const r = spawnSync("launchctl", args, { stdio: "pipe", encoding: "utf-8", timeout: 15_000 });
3545
+ return { status: r.status, stderr: (r.stderr ?? "").toString() };
3546
+ }, {
3547
+ gui: gui(),
3548
+ label: hbLabel,
3549
+ plistPath: hbPlistPath,
3550
+ logger: (line) => { console.log(` ${line}`); logFile(` ${line}`); },
3551
+ });
3552
+ if (hbBoot.ok) {
3553
+ logFile(` [create-maxy] launchd-plist=${hbLabel} loaded=true attempts=${hbBoot.attempts}`);
3554
+ }
3555
+ else {
3556
+ console.error(` WARNING: heartbeat LaunchAgent ${hbLabel} bootstrap returned ${hbBoot.bootstrapStatus} after ${hbBoot.attempts} attempt(s): ${hbBoot.stderr} — scheduling ticks will not fire until a re-install succeeds.`);
3557
+ logFile(` [create-maxy] launchd-plist=${hbLabel} loaded=false exit=${hbBoot.bootstrapStatus} attempts=${hbBoot.attempts}`);
3558
+ }
3484
3559
  // Wait for the server to come up.
3485
3560
  console.log(" Waiting for web server...");
3486
3561
  let webServerUp = false;
@@ -52,6 +52,29 @@ export function buildSessionManagerWrapper(o) {
52
52
  "",
53
53
  ].join("\n");
54
54
  }
55
+ /**
56
+ * Bash wrapper for the darwin scheduling-heartbeat LaunchAgent (Task 1403).
57
+ * launchd's StartInterval timer is the analogue of the Linux per-minute cron
58
+ * (buildHeartbeatCronBlock) that ticks `check-due-events.js`. The wrapper
59
+ * sources the brand `.env` for NEO4J_URI + MAXY_UI_INTERNAL_PORT, exports
60
+ * PLATFORM_ROOT (the tick's own env contract, matching the cron line's
61
+ * `PLATFORM_ROOT=` prefix), and execs the tick once. launchd re-invokes it
62
+ * every StartInterval seconds; there is no long-running process to supervise.
63
+ */
64
+ export function buildHeartbeatWrapper(o) {
65
+ const script = `${o.installDir}/platform/plugins/scheduling/mcp/dist/scripts/check-due-events.js`;
66
+ return [
67
+ "#!/bin/bash",
68
+ "# generated by create-maxy installServiceDarwin() — Task 1403 heartbeat.",
69
+ "# launchd StartInterval analogue of the Linux per-minute scheduling cron.",
70
+ "# Sources .env (NEO4J_URI, MAXY_UI_INTERNAL_PORT), exports PLATFORM_ROOT,",
71
+ "# execs one check-due-events.js tick.",
72
+ `set -a; [ -f "${o.envPath}" ] && . "${o.envPath}"; set +a`,
73
+ `export PLATFORM_ROOT="${o.installDir}/platform"`,
74
+ `exec ${o.nodeBin} ${script}`,
75
+ "",
76
+ ].join("\n");
77
+ }
55
78
  export function renderPlist(spec) {
56
79
  const lines = [];
57
80
  lines.push(`<?xml version="1.0" encoding="UTF-8"?>`);
@@ -78,6 +101,10 @@ export function renderPlist(spec) {
78
101
  lines.push(` ${spec.keepAlive ? "<true/>" : "<false/>"}`);
79
102
  lines.push(` <key>RunAtLoad</key>`);
80
103
  lines.push(` ${spec.runAtLoad ? "<true/>" : "<false/>"}`);
104
+ if (spec.startInterval !== undefined) {
105
+ lines.push(` <key>StartInterval</key>`);
106
+ lines.push(` <integer>${spec.startInterval}</integer>`);
107
+ }
81
108
  lines.push(`</dict>`);
82
109
  lines.push(`</plist>`);
83
110
  return lines.join("\n") + "\n";
@@ -1,5 +1,5 @@
1
1
  import { existsSync, readFileSync } from "node:fs";
2
- import { join } from "node:path";
2
+ import { dirname, join } from "node:path";
3
3
  import os from "node:os";
4
4
  const PORT_RE = /^PORT=(\d+)/m;
5
5
  const ENV_PORT_RE = /^Environment=PORT=(\d+)/m;
@@ -224,3 +224,18 @@ Before=shutdown.target
224
224
  WantedBy=default.target
225
225
  `;
226
226
  }
227
+ /** The darwin `.env` PATH line. launchd hands the brand server a bare PATH
228
+ * (`/usr/bin:/bin:/usr/sbin:/sbin`) and the wrapper sources `.env` so every
229
+ * descendant inherits this value — including the plugin MCP servers `claude`
230
+ * spawns itself from a `PLUGIN.md` `mcp: command: node`. When the only `node`
231
+ * is nvm's (off the Homebrew prefixes), a bare `node server.js` fails ENOENT
232
+ * and the plugin's graph-write tools never register. Prepending the resolved
233
+ * node bin dir makes bare `node` resolve; prepending `~/.local/bin` makes the
234
+ * graph-cypher `uvx` resolve. The Homebrew prefixes and the sourced-time
235
+ * `$PATH` expansion are retained. Channel MCPs pin NODE_BIN separately
236
+ * (Task 1402); this covers the plugin/graph half of the same root cause. */
237
+ export function buildDarwinServiceEnvPath(nodeBin, home) {
238
+ const nodeDir = dirname(nodeBin);
239
+ const localBin = join(home, ".local", "bin");
240
+ return `${nodeDir}:${localBin}:/opt/homebrew/bin:/usr/local/bin:$PATH`;
241
+ }
package/dist/uninstall.js CHANGED
@@ -78,8 +78,21 @@ function isDarwin() {
78
78
  function launchdLabel() {
79
79
  return `com.rubytech.${BRAND.hostname}`;
80
80
  }
81
+ /** Every LaunchAgent label installServiceDarwin() creates for this brand: the
82
+ * main server, the claude-session-manager (Task 1395), and the scheduling
83
+ * heartbeat (Task 1403). Uninstall boots out and removes all three. */
84
+ function darwinLaunchdLabels() {
85
+ return [
86
+ launchdLabel(),
87
+ `${launchdLabel()}-claude-session-manager`,
88
+ `${launchdLabel()}-heartbeat`,
89
+ ];
90
+ }
91
+ function plistPathFor(label) {
92
+ return resolve(HOME, "Library/LaunchAgents", `${label}.plist`);
93
+ }
81
94
  function plistPath() {
82
- return resolve(HOME, "Library/LaunchAgents", `${launchdLabel()}.plist`);
95
+ return plistPathFor(launchdLabel());
83
96
  }
84
97
  function gui() {
85
98
  const uid = typeof process.getuid === "function" ? process.getuid() : 0;
@@ -163,13 +176,18 @@ function peerBrandPresent() {
163
176
  // ---------------------------------------------------------------------------
164
177
  function stopServices() {
165
178
  log("1", "Stopping services...");
166
- // darwin: bootout the LaunchAgent. bootout exits 0 on success,
167
- // 113 ("Unknown service") when the agent isn't loaded — both are
179
+ // darwin: bootout every LaunchAgent this install created. bootout exits 0 on
180
+ // success, 113 ("Unknown service") when the agent isn't loaded — both are
168
181
  // acceptable end-states for "service stopped". The plist removal in
169
- // removeSystemdService() finishes the cleanup.
182
+ // removeSystemdService() finishes the cleanup. Three labels share the brand
183
+ // prefix: the main server, the claude-session-manager (Task 1395), and the
184
+ // scheduling heartbeat (Task 1403). The latter two were previously never
185
+ // booted out on uninstall.
170
186
  if (isDarwin()) {
171
- spawnSync("launchctl", ["bootout", `${gui()}/${launchdLabel()}`], { stdio: "pipe", timeout: 15_000 });
172
- console.log(` Booted out ${launchdLabel()}`);
187
+ for (const label of darwinLaunchdLabels()) {
188
+ spawnSync("launchctl", ["bootout", `${gui()}/${label}`], { stdio: "pipe", timeout: 15_000 });
189
+ console.log(` Booted out ${label}`);
190
+ }
173
191
  return;
174
192
  }
175
193
  // Stop platform user service
@@ -465,6 +483,14 @@ function removeAppDirs() {
465
483
  // ---------------------------------------------------------------------------
466
484
  function removeNeo4jData() {
467
485
  log("5", "Removing Neo4j data...");
486
+ // This function's teardown is Linux-shaped: `sudo systemctl daemon-reload`
487
+ // and `sudo rm -rf /var/lib/neo4j/*`. On darwin that raises a spurious sudo
488
+ // prompt and logs a FAILED. Skip here (Task 1403); darwin Neo4j data teardown
489
+ // belongs to Task 1396 (dedicated Neo4j on darwin).
490
+ if (!isLinux()) {
491
+ console.log(" Not Linux — skipping.");
492
+ return;
493
+ }
468
494
  // Brand isolation: remove only THIS brand's Neo4j data. Shared
469
495
  // 7687 data is skipped entirely when a peer brand is present. Dedicated
470
496
  // branded instances live at /var/lib/neo4j-<hostname>/ and are always
@@ -666,24 +692,26 @@ function removeSystemConfig() {
666
692
  function removeSystemdService() {
667
693
  log("8", "Removing systemd service...");
668
694
  // darwin: bootout (idempotent — already done in stopServices,
669
- // re-running is a no-op exit 113) and delete the plist. The wrapper
670
- // shell script lives in CONFIG_DIR which step 4 (removeAppDirs) wipes,
671
- // so no separate cleanup is needed.
695
+ // re-running is a no-op exit 113) and delete the plist for every LaunchAgent
696
+ // this brand created. The wrapper shell scripts live in CONFIG_DIR which
697
+ // step 4 (removeAppDirs) wipes, so no separate cleanup is needed.
672
698
  if (isDarwin()) {
673
- spawnSync("launchctl", ["bootout", `${gui()}/${launchdLabel()}`], { stdio: "pipe", timeout: 15_000 });
674
- const plist = plistPath();
675
- if (existsSync(plist)) {
676
- try {
677
- rmSync(plist);
678
- console.log(` Removed ${plist}`);
699
+ for (const label of darwinLaunchdLabels()) {
700
+ spawnSync("launchctl", ["bootout", `${gui()}/${label}`], { stdio: "pipe", timeout: 15_000 });
701
+ const plist = plistPathFor(label);
702
+ if (existsSync(plist)) {
703
+ try {
704
+ rmSync(plist);
705
+ console.log(` Removed ${plist}`);
706
+ }
707
+ catch (err) {
708
+ console.log(` Failed to remove ${plist}: ${err instanceof Error ? err.message : String(err)}`);
709
+ }
679
710
  }
680
- catch (err) {
681
- console.log(` Failed to remove ${plist}: ${err instanceof Error ? err.message : String(err)}`);
711
+ else {
712
+ console.log(` ${plist} not found skipping`);
682
713
  }
683
714
  }
684
- else {
685
- console.log(` ${plist} not found — skipping`);
686
- }
687
715
  return;
688
716
  }
689
717
  // Disable the service
@@ -737,6 +765,14 @@ function removeSystemdService() {
737
765
  // ---------------------------------------------------------------------------
738
766
  function removeOllama() {
739
767
  log("9", "Removing Ollama...");
768
+ // The stop/disable below is `sudo systemctl` — Linux-only. On darwin it would
769
+ // raise a spurious sudo prompt and log a FAILED. Skip like removeSamba /
770
+ // removeSystemConfig (Task 1403); brew-ollama teardown on darwin is out of
771
+ // scope here.
772
+ if (!isLinux()) {
773
+ console.log(" Not Linux — skipping.");
774
+ return;
775
+ }
740
776
  // Brand isolation: the Ollama binary and systemd service are
741
777
  // device-wide singletons — every brand on this device shares one Ollama
742
778
  // process. Leave both in place when a peer brand is still installed;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rubytech/create-maxy-code",
3
- "version": "0.1.393",
3
+ "version": "0.1.395",
4
4
  "description": "Install Maxy — AI for Productive People",
5
5
  "bin": {
6
6
  "create-maxy-code": "./dist/index.js"
@@ -8,6 +8,11 @@ export interface ChannelMcpServerEntry {
8
8
  export declare function buildChannelMcpServers(p: {
9
9
  sessionId: string;
10
10
  targets: ChannelTargetSet;
11
+ /** Absolute path to the node binary that runs the channel server. On darwin
12
+ * the launchd server PATH excludes an nvm node, so a bare `node` command
13
+ * fails to spawn and the channel never boots (Task 1402); callers pass the
14
+ * installer-resolved NODE_BIN. */
15
+ nodeBin: string;
11
16
  }): Record<string, ChannelMcpServerEntry>;
12
17
  export declare function channelDevChannelsArgv(): string[];
13
18
  export declare function channelMcpConfigPath(sessionId: string, dir: string): string;
@@ -1 +1 @@
1
- {"version":3,"file":"channel-mcp.d.ts","sourceRoot":"","sources":["../src/channel-mcp.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAE5D,eAAO,MAAM,mBAAmB,YAAY,CAAA;AAE5C,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAC5B;AAED,wBAAgB,sBAAsB,CAAC,CAAC,EAAE;IACxC,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,gBAAgB,CAAA;CAC1B,GAAG,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAexC;AAED,wBAAgB,sBAAsB,IAAI,MAAM,EAAE,CAEjD;AAED,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAE3E;AAED,wBAAgB,gBAAgB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,EAAE,CAEhE"}
1
+ {"version":3,"file":"channel-mcp.d.ts","sourceRoot":"","sources":["../src/channel-mcp.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAE5D,eAAO,MAAM,mBAAmB,YAAY,CAAA;AAE5C,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAC5B;AAED,wBAAgB,sBAAsB,CAAC,CAAC,EAAE;IACxC,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,gBAAgB,CAAA;IACzB;;;uCAGmC;IACnC,OAAO,EAAE,MAAM,CAAA;CAChB,GAAG,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAexC;AAED,wBAAgB,sBAAsB,IAAI,MAAM,EAAE,CAEjD;AAED,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAE3E;AAED,wBAAgB,gBAAgB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,EAAE,CAEhE"}
@@ -13,7 +13,7 @@ export function buildChannelMcpServers(p) {
13
13
  throw new Error('buildChannelMcpServers: empty target set');
14
14
  return {
15
15
  [CHANNEL_SERVER_NAME]: {
16
- command: 'node',
16
+ command: p.nodeBin,
17
17
  args: [anyTarget.serverPath],
18
18
  env: {
19
19
  CHANNEL_SESSION_ID: p.sessionId,
@@ -1 +1 @@
1
- {"version":3,"file":"channel-mcp.js","sourceRoot":"","sources":["../src/channel-mcp.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,+EAA+E;AAC/E,+EAA+E;AAC/E,6EAA6E;AAC7E,iFAAiF;AAEjF,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAGhC,MAAM,CAAC,MAAM,mBAAmB,GAAG,SAAS,CAAA;AAQ5C,MAAM,UAAU,sBAAsB,CAAC,CAGtC;IACC,mEAAmE;IACnE,wDAAwD;IACxD,MAAM,SAAS,GAAG,CAAC,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAC,OAAO,CAAC,OAAO,CAAA;IACzD,IAAI,CAAC,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAA;IAC3E,OAAO;QACL,CAAC,mBAAmB,CAAC,EAAE;YACrB,OAAO,EAAE,MAAM;YACf,IAAI,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC;YAC5B,GAAG,EAAE;gBACH,kBAAkB,EAAE,CAAC,CAAC,SAAS;gBAC/B,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC;aAC3C;SACF;KACF,CAAA;AACH,CAAC;AAED,MAAM,UAAU,sBAAsB;IACpC,OAAO,CAAC,yCAAyC,EAAE,UAAU,mBAAmB,EAAE,CAAC,CAAA;AACrF,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,SAAiB,EAAE,GAAW;IACjE,OAAO,IAAI,CAAC,GAAG,EAAE,gBAAgB,SAAS,CAAC,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,OAAO,CAAC,CAAA;AACpF,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,aAAqB;IACpD,OAAO,CAAC,cAAc,EAAE,aAAa,EAAE,GAAG,sBAAsB,EAAE,CAAC,CAAA;AACrE,CAAC"}
1
+ {"version":3,"file":"channel-mcp.js","sourceRoot":"","sources":["../src/channel-mcp.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,+EAA+E;AAC/E,+EAA+E;AAC/E,6EAA6E;AAC7E,iFAAiF;AAEjF,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAGhC,MAAM,CAAC,MAAM,mBAAmB,GAAG,SAAS,CAAA;AAQ5C,MAAM,UAAU,sBAAsB,CAAC,CAQtC;IACC,mEAAmE;IACnE,wDAAwD;IACxD,MAAM,SAAS,GAAG,CAAC,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAC,OAAO,CAAC,OAAO,CAAA;IACzD,IAAI,CAAC,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAA;IAC3E,OAAO;QACL,CAAC,mBAAmB,CAAC,EAAE;YACrB,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,IAAI,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC;YAC5B,GAAG,EAAE;gBACH,kBAAkB,EAAE,CAAC,CAAC,SAAS;gBAC/B,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC;aAC3C;SACF;KACF,CAAA;AACH,CAAC;AAED,MAAM,UAAU,sBAAsB;IACpC,OAAO,CAAC,yCAAyC,EAAE,UAAU,mBAAmB,EAAE,CAAC,CAAA;AACrF,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,SAAiB,EAAE,GAAW;IACjE,OAAO,IAAI,CAAC,GAAG,EAAE,gBAAgB,SAAS,CAAC,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,OAAO,CAAC,CAAA;AACpF,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,aAAqB;IACpD,OAAO,CAAC,cAAc,EAAE,aAAa,EAAE,GAAG,sBAAsB,EAAE,CAAC,CAAA;AACrE,CAAC"}
@@ -10,6 +10,12 @@ export interface ManagerConfig {
10
10
  port: number;
11
11
  persistDir: string;
12
12
  claudeBin: string;
13
+ /** Absolute node binary for spawned channel-MCP children. On darwin the
14
+ * launchd server PATH excludes an nvm node, so channel descriptors must name
15
+ * node explicitly rather than relying on a bare `node` on PATH (Task 1402).
16
+ * Falls back to bare `node` when NODE_BIN is unset (Linux, where node is on
17
+ * the base PATH). */
18
+ nodeBin: string;
13
19
  spawnCwd: string;
14
20
  urlCaptureTimeoutMs: number;
15
21
  killGraceMs: number;
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,EAGL,KAAK,iBAAiB,EACvB,MAAM,yBAAyB,CAAA;AAGhC,MAAM,WAAW,cAAe,SAAQ,WAAW;IACjD;;4DAEwD;IACxD,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAA;CACjC;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,mBAAmB,EAAE,MAAM,CAAA;IAC3B,WAAW,EAAE,MAAM,CAAA;IACnB,iBAAiB,EAAE,MAAM,CAAA;IACzB;;4EAEwE;IACxE,aAAa,EAAE,MAAM,CAAA;IACrB;;;gEAG4D;IAC5D,eAAe,EAAE,MAAM,CAAA;IACvB;;2EAEuE;IACvE,WAAW,EAAE,MAAM,CAAA;IACnB;;0EAEsE;IACtE,iBAAiB,EAAE,MAAM,CAAA;IACzB,IAAI,EAAE,cAAc,CAAA;IACpB;;;;;;;8BAO0B;IAC1B,UAAU,EAAE,MAAM,CAAA;IAClB;;;qDAGiD;IACjD,iBAAiB,EAAE,iBAAiB,CAAA;IACpC;;gFAE4E;IAC5E,gBAAgB,EAAE,MAAM,CAAA;CACzB;AAwLD;;;;;;;6EAO6E;AAC7E,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;CACd;AAED,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,cAAc,CAyBvE;AAED;;eAEe;AACf,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,cAAc,GAAG,MAAM,CAE9D;AAED;;;;;;;kCAOkC;AAClC,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAI/F;AAUD,wBAAgB,UAAU,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,aAAa,CAuE9E"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,EAGL,KAAK,iBAAiB,EACvB,MAAM,yBAAyB,CAAA;AAGhC,MAAM,WAAW,cAAe,SAAQ,WAAW;IACjD;;4DAEwD;IACxD,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAA;CACjC;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB;;;;0BAIsB;IACtB,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,mBAAmB,EAAE,MAAM,CAAA;IAC3B,WAAW,EAAE,MAAM,CAAA;IACnB,iBAAiB,EAAE,MAAM,CAAA;IACzB;;4EAEwE;IACxE,aAAa,EAAE,MAAM,CAAA;IACrB;;;gEAG4D;IAC5D,eAAe,EAAE,MAAM,CAAA;IACvB;;2EAEuE;IACvE,WAAW,EAAE,MAAM,CAAA;IACnB;;0EAEsE;IACtE,iBAAiB,EAAE,MAAM,CAAA;IACzB,IAAI,EAAE,cAAc,CAAA;IACpB;;;;;;;8BAO0B;IAC1B,UAAU,EAAE,MAAM,CAAA;IAClB;;;qDAGiD;IACjD,iBAAiB,EAAE,iBAAiB,CAAA;IACpC;;gFAE4E;IAC5E,gBAAgB,EAAE,MAAM,CAAA;CACzB;AAwLD;;;;;;;6EAO6E;AAC7E,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;CACd;AAED,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,cAAc,CAyBvE;AAED;;eAEe;AACf,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,cAAc,GAAG,MAAM,CAE9D;AAED;;;;;;;kCAOkC;AAClC,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAI/F;AAUD,wBAAgB,UAAU,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,aAAa,CAyE9E"}
@@ -241,6 +241,7 @@ export function loadConfig(env = process.env) {
241
241
  }
242
242
  const persistDir = env.CLAUDE_SESSION_MANAGER_PERSIST_DIR ?? join(homedir(), '.maxy');
243
243
  const claudeBin = env.CLAUDE_BIN ?? 'claude';
244
+ const nodeBin = env.NODE_BIN ?? 'node';
244
245
  const brand = loadBrand(env);
245
246
  const platformRoot = env.PLATFORM_ROOT ?? env.MAXY_PLATFORM_ROOT;
246
247
  if (!platformRoot) {
@@ -281,6 +282,7 @@ export function loadConfig(env = process.env) {
281
282
  port,
282
283
  persistDir,
283
284
  claudeBin,
285
+ nodeBin,
284
286
  spawnCwd,
285
287
  urlCaptureTimeoutMs: DEFAULT_URL_TIMEOUT_MS,
286
288
  killGraceMs: DEFAULT_KILL_GRACE_MS,
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"http-server.d.ts","sourceRoot":"","sources":["../src/http-server.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAe3B,OAAO,EAkBL,KAAK,SAAS,EAEf,MAAM,kBAAkB,CAAA;AA6BzB,OAAO,KAAK,EAAE,SAAS,EAAyB,MAAM,iBAAiB,CAAA;AAEvE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAE3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAA;AAyFlE,eAAO,MAAM,kBAAkB,QAA2B,CAAA;AAS1D,eAAO,MAAM,4BAA4B,QAAS,CAAA;AAIlD,MAAM,WAAW,QAAS,SAAQ,IAAI,CAAC,SAAS,EAAE,gBAAgB,GAAG,SAAS,CAAC;IAC7E;;qEAEiE;IACjE,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,SAAS,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;IACnB,iBAAiB,EAAE,MAAM,CAAA;IACzB,kBAAkB,EAAE,WAAW,CAAA;IAC/B,eAAe,EAAE,aAAa,CAAA;IAC9B;kFAC8E;IAC9E,WAAW,EAAE,kBAAkB,CAAA;IAC/B;;gFAE4E;IAC5E,cAAc,EAAE,cAAc,CAAA;IAC9B;;;6BAGyB;IACzB,mBAAmB,CAAC,EAAE,mBAAmB,CAAA;IACzC;;;sCAGkC;IAClC,oBAAoB,CAAC,EAAE,oBAAoB,CAAA;IAC3C;;gFAE4E;IAC5E,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B;AAsFD;;;;;;mEAMmE;AACnE,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,CAiC9D;AAMD;;;;;;iBAMiB;AACjB,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAmCvF;AAID;;;;;;yBAMyB;AACzB,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAiCzD;AAkCD,wBAAgB,eAAe,CAAC,aAAa,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAEpG;AAgBD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE1D;AAUD,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAMvE;AAMD,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,GAAG,IAAI,EACxB,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,GAAG,IAAI,GACtB,MAAM,CAER;AAkCD,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAe5F;AAwJD;;;kEAGkE;AAClE,MAAM,MAAM,OAAO,GAAG,IAAI,GAAG;IAC3B,2BAA2B,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACpD;;;+CAG2C;IAC3C,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;CAChD,CAAA;AA8CD,wBAAgB,YAAY,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CA4vFpD"}
1
+ {"version":3,"file":"http-server.d.ts","sourceRoot":"","sources":["../src/http-server.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAe3B,OAAO,EAkBL,KAAK,SAAS,EAEf,MAAM,kBAAkB,CAAA;AA6BzB,OAAO,KAAK,EAAE,SAAS,EAAyB,MAAM,iBAAiB,CAAA;AAEvE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAE3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAA;AAyFlE,eAAO,MAAM,kBAAkB,QAA2B,CAAA;AAS1D,eAAO,MAAM,4BAA4B,QAAS,CAAA;AAIlD,MAAM,WAAW,QAAS,SAAQ,IAAI,CAAC,SAAS,EAAE,gBAAgB,GAAG,SAAS,CAAC;IAC7E;;qEAEiE;IACjE,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,SAAS,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;IACnB,iBAAiB,EAAE,MAAM,CAAA;IACzB,kBAAkB,EAAE,WAAW,CAAA;IAC/B,eAAe,EAAE,aAAa,CAAA;IAC9B;kFAC8E;IAC9E,WAAW,EAAE,kBAAkB,CAAA;IAC/B;;gFAE4E;IAC5E,cAAc,EAAE,cAAc,CAAA;IAC9B;;;6BAGyB;IACzB,mBAAmB,CAAC,EAAE,mBAAmB,CAAA;IACzC;;;sCAGkC;IAClC,oBAAoB,CAAC,EAAE,oBAAoB,CAAA;IAC3C;;gFAE4E;IAC5E,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B;AAsFD;;;;;;mEAMmE;AACnE,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,CAiC9D;AAMD;;;;;;iBAMiB;AACjB,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAmCvF;AAID;;;;;;yBAMyB;AACzB,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAiCzD;AAkCD,wBAAgB,eAAe,CAAC,aAAa,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAEpG;AAgBD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE1D;AAUD,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAMvE;AAMD,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,GAAG,IAAI,EACxB,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,GAAG,IAAI,GACtB,MAAM,CAER;AAkCD,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAe5F;AAwJD;;;kEAGkE;AAClE,MAAM,MAAM,OAAO,GAAG,IAAI,GAAG;IAC3B,2BAA2B,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACpD;;;+CAG2C;IAC3C,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;CAChD,CAAA;AA8CD,wBAAgB,YAAY,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CA2wFpD"}